From otto.kjell@gmail.com  Mon Mar 11 13:51:30 2013
Received: (at 142) by bugs.x2go.org; 11 Mar 2013 12:51:30 +0000
Received: from mail-ve0-f182.google.com (mail-ve0-f182.google.com [209.85.128.182])
	by ymir (Postfix) with ESMTPS id 15E6D5DB17;
	Mon, 11 Mar 2013 13:51:29 +0100 (CET)
Received: by mail-ve0-f182.google.com with SMTP id ox1so2645971veb.27
        for <multiple recipients>; Mon, 11 Mar 2013 05:51:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20120113;
        h=mime-version:x-received:in-reply-to:references:date:message-id
         :subject:from:to:cc:content-type;
        bh=5mHsPS9fCJ36mDJMI1YTzOOxASWj8ZPek53HrPGc/64=;
        b=GGAjteUB10dFFgwh7CEcfLH8Pex6nGWVFBHkr0OXrUR90YhlSfvdjt+QNViN0gulsG
         NfTKs5Scm7pv6HpvXDMiWHCsVF+6v01tzUwemJhDgpvL5j/jArmE/14hNbl03q9DO6XF
         0HEytO/gYMMPYIrY8b0CDmL/e8SmnPIZiA85zReALavx1KVgYTTVXnxjSIBuuBsK2bsD
         nWVjRPPinwVKrKCdcYPkk8Uv6LcD+Tk2wSgBD2KsBg1X5A752WBpF/dpyQ+Tu9da2y7y
         BQYzcpgyVlnewfEarkv4XVRdjAdn4UP7IhuIRTQTE6piKXNugTQbEeUaAT2xkP28dPb0
         KXlw==
MIME-Version: 1.0
X-Received: by 10.52.74.34 with SMTP id q2mr4122466vdv.76.1363006288695; Mon,
 11 Mar 2013 05:51:28 -0700 (PDT)
Received: by 10.58.24.37 with HTTP; Mon, 11 Mar 2013 05:51:28 -0700 (PDT)
In-Reply-To: <20130307160849.9282370a79p2omf5@mail.das-netzwerkteam.de>
References: <CAHeJaPKG2ndmoMFEn3kH91uMzTg3gQAhi-A26Le=Y5cfsHBq-g@mail.gmail.com>
	<20130307160849.9282370a79p2omf5@mail.das-netzwerkteam.de>
Date: Mon, 11 Mar 2013 13:51:28 +0100
Message-ID: <CAHeJaPLjydPxyR4qpjYMNq-pxfeX=ezhDFY4UWgRend-yWeniQ@mail.gmail.com>
Subject: Re: [X2Go-Dev] Bug#142: x2goclient output on stdout
From: Kjell Otto <otto.kjell@gmail.com>
To: Mike Gabriel <mike.gabriel@das-netzwerkteam.de>
Cc: 142@bugs.x2go.org, control@bugs.x2go.org
Content-Type: multipart/mixed; boundary=20cf3071c7fcaa194c04d7a5a1de

--20cf3071c7fcaa194c04d7a5a1de
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable

Hi Mike,

here is my patch boiled down to one commit. You can look at it before
you apply it here:
https://github.com/kjellski/x2goclient/compare/master...debug-cleanup

Greetings,
Kjellski

2013/3/7 Mike Gabriel <mike.gabriel@das-netzwerkteam.de>:
> Hi Otto,
>
> On Do 07 M=E4r 2013 13:51:25 CET Kjell Otto wrote:
>
>> Package: x2goclient
>>
>>
>> The x2goclient has extreme output on stdout while running. It's more
>> noise then signal and therefor, I've wrapped all the printouts with
>> #ifdef DEBUG and a #undef DEBUG on the onmainwindow.cpp file.
>>
>> Then I've added in printout statements that are parsable with numbered
>> output and category so that a normal run of the x2goclient would
>> output like this:
>>
>> $ ./client_build/x2goclient --session=3Dx2goserver_RZ --add-to-known-hos=
ts
>> --hide
>> x2go-INFO-001> Starting x2goclient...
>> x2go-WARN-001> Can't load translator: :/x2goclient_en_us
>> x2go-WARN-002> Can't load translator: :/qt_en_US
>> x2go-INFO-004> Started  x2goclient.
>> x2go-INFO-005> $HOME=3D/home/kjellski
>> x2go-INFO-029> Starting connection to server: 10.3.0.20:22
>> x2go-INFO-031> SSH connection established.
>> x2go-INFO-011> Closing x2goclient...
>> x2go-INFO-018> Waiting for the SSH connection to finish...
>> x2go-INFO-019> Waited  for the SSH connection to finish.
>> x2go-INFO-028> Closed  x2goclient.
>> $
>>
>> No GUI will be shown and no try Icons appear. This reflects a bit more
>> the --hide param and can be used to make a shortcut to the client that
>> will just open the window.
>>
>> Also I've added a log method and provided a script that lets you show
>> all outputs on the file.
>>
>> All changes can be found on this repository in the branch stdout-cleanup=
:
>>
>> https://github.com/kjellski/x2goclient/tree/stdout-cleanup
>>
>> If any additional help from my side is required, please contact me and
>> I try to support the process.
>
>
> yes, help is required.
>
> 1. Create fresh (tmp) branch
> 2. pull over your patches you wish applied in x2goclient.git
> 3. rebase, boil all single commits down to one commit
> 4. send the URL to the exact patch/diff for review
>
> Mike
>
>
>
> --
>
> DAS-NETZWERKTEAM
> mike gabriel, rothenstein 5, 24214 neudorf-bornstein
> fon: +49 (1520) 1976 148
>
> GnuPG Key ID 0x25771B31
> mail: mike.gabriel@das-netzwerkteam.de, http://das-netzwerkteam.de
>
> freeBusy:
> https://mail.das-netzwerkteam.de/freebusy/m.gabriel%40das-netzwerkteam.de=
.xfb

--20cf3071c7fcaa194c04d7a5a1de
Content-Type: application/octet-stream; 
	name="0001-Added-the-debug-parameter-to-x2goclient.patch"
Content-Disposition: attachment; 
	filename="0001-Added-the-debug-parameter-to-x2goclient.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_he5mqvhb1

RnJvbSBiYjkzODVlZmExZDg5NWQ1ODZjNWI0NGM2NmI5M2IzZTJhNGZmYTFjIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBLamVsbCBPdHRvIDxvdHRvLmtqZWxsQGdtYWlsLmNvbT4KRGF0
ZTogTW9uLCAxMSBNYXIgMjAxMyAxMzoxNDo1OSArMDEwMApTdWJqZWN0OiBbUEFUQ0hdIC0gQWRk
ZWQgdGhlIC0tZGVidWcgcGFyYW1ldGVyIHRvIHgyZ29jbGllbnQuCgotIFJlZmFjdG9yZWQgdGhl
IGRlYnVnZ2luZyBvZiAieDJnb0RlYnVnIiB0byBjb250YWluIF9fRklMRV9fOl9fTElORV9fIGlu
IG9yZGVyIHRvIGxldCB1c2VycyBwcm92aWRlIG1vcmUgdXNlZnVsIGluZm9ybWF0aW9ucy4KCi0g
QWRkZWQgeDJnb0luZm9mKE5VTSksIHgyZ29XYXJuaW5nZihOVU0pLCB4MmdvRXJyb3JmKE5VTSkg
dG8gZW5hYmxlIHBhcnNhYmxlIG91dHB1dHMgZm9yIHRoZSBjbGllbnQuCgotIEFkZGVkIHRoZSBz
aG93X3ByaW50b3V0cy5zaCBmaWxlIHRvIGJlIHVzZWQgZm9yIGxvb2tpbmcgaW50byBzb3VyY2Vm
aWxlcyBpbmZvLCB3YXJuaW5nIGFuZCBlcnJvciBtZXNzYWdlcy4gcHVyZSBjb252ZW5pZW5jZSBo
ZXJlLgotLS0KIC5naXRpZ25vcmUgICAgICAgICAgICAgIHwgICAgNyArCiBvbm1haW53aW5kb3cu
Y3BwICAgICAgICB8ICA5NjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t
LS0tLS0tLS0KIG9ubWFpbndpbmRvdy5oICAgICAgICAgIHwgICAgMyArCiBzaG93X3ByaW50b3V0
cy5zaCAgICAgICB8ICAgMzAgKysKIHNzaG1hc3RlcmNvbm5lY3Rpb24uY3BwIHwgICA4OCArKysr
LQogeDJnb2NsaWVudGNvbmZpZy5oICAgICAgfCAgICAyICstCiB4MmdvbG9nZGVidWcuY3BwICAg
ICAgICB8ICAgIDEgLQogeDJnb2xvZ2RlYnVnLmggICAgICAgICAgfCAgIDMzICstCiA4IGZpbGVz
IGNoYW5nZWQsIDc5NSBpbnNlcnRpb25zKCspLCAzMzggZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9k
ZSAxMDA3NTUgc2hvd19wcmludG91dHMuc2gKCmRpZmYgLS1naXQgYS8uZ2l0aWdub3JlIGIvLmdp
dGlnbm9yZQppbmRleCA3MjFlMzJjLi5iZDgxZGIyIDEwMDY0NAotLS0gYS8uZ2l0aWdub3JlCisr
KyBiLy5naXRpZ25vcmUKQEAgLTEsNiArMSwxMSBAQAogIyBUZW1wb3Jhcnkgb2JqZWN0IGZpbGVz
L3N0YXRpYyBsaWJzLgogKi5bb2FdCiAKK2NsaWVudF9idWlsZC8KK3BsdWdpbl9idWlsZC8KKy5i
dWlsZF9tYW4yaHRtbAoreDJnb2NsaWVudAorCiAjIEdlbmVyYXRlZCBieSBxbWFrZS4KIG1vY18q
LmNwcAogdWlfKi5oCkBAIC0xNCw0ICsxOSw2IEBAIHgyZ29jbGllbnRfKi5xbQogCiAjIEdlbmVy
YXRlZCBieSBxbWFrZSB3aGVuIGJ1aWxkaW5nIG9uIE9TIFguCiB4MmdvY2xpZW50LmFwcAoreDJn
b2NsaWVudC5kbWcKIAoreDJnb2NsaWVudC5wcm8udXNlcgpkaWZmIC0tZ2l0IGEvb25tYWlud2lu
ZG93LmNwcCBiL29ubWFpbndpbmRvdy5jcHAKaW5kZXggYzk3NDFmOC4uZjk3MzAxNCAxMDA2NDQK
LS0tIGEvb25tYWlud2luZG93LmNwcAorKysgYi9vbm1haW53aW5kb3cuY3BwCkBAIC0zNiwxOCAr
MzYsMjAgQEAgYm9vbAlPTk1haW5XaW5kb3c6OnBvcnRhYmxlPWZhbHNlOwogUVN0cmluZyBPTk1h
aW5XaW5kb3c6OmhvbWVEaXI7CiBRU3RyaW5nIE9OTWFpbldpbmRvdzo6c2Vzc2lvbkNmZzsKIAot
CiAjaWZkZWYgUV9PU19XSU4KIFFTdHJpbmcgT05NYWluV2luZG93Ojp1M0RldmljZTsKICNlbmRp
ZgogCitib29sIE9OTWFpbldpbmRvdzo6ZGVidWdnaW5nPWZhbHNlOwogCiBPTk1haW5XaW5kb3c6
Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQgKnBhcmVudCApIDpRTWFpbldpbmRvdyAoIHBhcmVudCAp
CiB7CiAjaWZkZWYgUV9PU19MSU5VWAogICAgIGltYWdlPXNoYXBlPTA7CiAjZW5kaWYKLSAgICB4
MmdvRGVidWc8PCJPTk1haW5XaW5kb3cgY29uc3RydWN0b3IiPDxlbmRsOworICAgIHgyZ29JbmZv
ZigxKSA8PCB0cigiU3RhcnRpbmcgeDJnb2NsaWVudC4uLiIpOworICAgIGRlYnVnZ2luZyA9IGZh
bHNlOworCiAgICAgc2V0Rm9jdXNQb2xpY3kgKCBRdDo6Tm9Gb2N1cyApOwogICAgIGluc3RhbGxU
cmFuc2xhdG9yKCk7CiAgICAgY2xlYW5BbGxGaWxlcz1mYWxzZTsKQEAgLTIxNSw4ICsyMTcsOCBA
QCBPTk1haW5XaW5kb3c6Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQgKnBhcmVudCApIDpRTWFpbldp
bmRvdyAoIHBhcmVudCApCiAgICAgICAgICAgICBwb3J0YWJsZURhdGFQYXRoPVFEaXI6OmN1cnJl
bnRQYXRoKCk7CiAKICAgICAgICAgaG9tZURpcj1wb3J0YWJsZURhdGFQYXRoOwotICAgICAgICB4
MmdvRGVidWc8PCJydW5uaW5nIGluIFwicG9ydGFibGVcIiBtb2RlXG4iPDwKLSAgICAgICAgICAg
ICAgICAgIkRhdGEgRGlyIGlzICI8PHBvcnRhYmxlRGF0YVBhdGg7CisKKyAgICAgICAgeDJnb0lu
Zm9mKDIpPDx0cigiU3RhcnRpbmcgeDJnb2NsaWVudCBpbiBwb3J0YWJsZSBtb2RlLi4uIGRhdGEg
ZGlyZWN0b3J5IGlzOiAiKTw8cG9ydGFibGVEYXRhUGF0aDsKICAgICAgICAgUVRpbWVyICp0aW1l
ciA9IG5ldyBRVGltZXIodGhpcyk7CiAgICAgICAgIGNvbm5lY3QodGltZXIsIFNJR05BTCh0aW1l
b3V0KCkpLCB0aGlzLCBTTE9UKHNsb3RDaGVja1BvcnRhYmxlRGlyKCkpKTsKICAgICAgICAgdGlt
ZXItPnN0YXJ0KDEwMDApOwpAQCAtMjMzLDcgKzIzNSw2IEBAIE9OTWFpbldpbmRvdzo6T05NYWlu
V2luZG93ICggUVdpZGdldCAqcGFyZW50ICkgOlFNYWluV2luZG93ICggcGFyZW50ICkKICAgICB0
cmF5SWNvbkluaXQoKTsKIAogCi0KICAgICBpZiAoIGVtYmVkTW9kZSApCiAgICAgewogICAgICAg
ICBtaW5pTW9kZT1mYWxzZTsKQEAgLTI2MiwxMyArMjYzLDExIEBAIE9OTWFpbldpbmRvdzo6T05N
YWluV2luZG93ICggUVdpZGdldCAqcGFyZW50ICkgOlFNYWluV2luZG93ICggcGFyZW50ICkKIAog
ICAgIFFEZXNrdG9wV2lkZ2V0IHdkOwogCi0gICAgLy94MmdvRGVidWc8PCJwcmltYXJ5IHNjcmVl
biBnZW9tZXRyeTogIjw8d2Quc2NyZWVuR2VvbWV0cnkod2Quc2NyZWVuTnVtYmVyKHRoaXMpKTsK
LQogICAgIGlmICggd2Quc2NyZWVuR2VvbWV0cnkod2Quc2NyZWVuTnVtYmVyKHRoaXMpKS53aWR0
aCgpIDwxMDI0IHx8CiAgICAgICAgICAgICB3ZC5zY3JlZW5HZW9tZXRyeSh3ZC5zY3JlZW5OdW1i
ZXIodGhpcykpLmhlaWdodCgpIDw3NjggKQogICAgIHsKICAgICAgICAgbWluaU1vZGU9dHJ1ZTsK
LSAgICAgICAgeDJnb0RlYnVnPDwiU3dpdGNoaW5nIHRvIFwibWluaVwiIG1vZGUiOworICAgICAg
ICB4MmdvRGVidWc8PCJTd2l0Y2hpbmcgdG8gXCJtaW5pXCIgbW9kZS4uLiI7CiAgICAgfQogCiAK
QEAgLTM4Myw3ICszODIsOCBAQCBPTk1haW5XaW5kb3c6Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQg
KnBhcmVudCApIDpRTWFpbldpbmRvdyAoIHBhcmVudCApCiAgICAgaW5pdFN0YXR1c0RsZygpOwog
CiAjaWYgZGVmaW5lZChDRkdQTFVHSU4pICYmIGRlZmluZWQoUV9PU19MSU5VWCkKLSAgICB4Mmdv
RGVidWc8PCJjcmVhdGUgZW1iZWRDb250YWluZXIiPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwi
Q3JlYXRpbmcgZW1iZWRkZWQgY29udGFpbmVyLiI7CiAgICAgZW1iZWRDb250YWluZXI9bmV3IFFY
MTFFbWJlZENvbnRhaW5lciAoIGZyICk7CiAKICNlbmRpZgpAQCAtNDQ5LDkgKzQ0OSwxMSBAQCBP
Tk1haW5XaW5kb3c6Ok9OTWFpbldpbmRvdyAoIFFXaWRnZXQgKnBhcmVudCApIDpRTWFpbldpbmRv
dyAoIHBhcmVudCApCiAKICAgICBjb25uZWN0KCB4aW5lcmFtYVRpbWVyLCBTSUdOQUwodGltZW91
dCgpKSwgdGhpcywgU0xPVChzbG90Q29uZmlnWGluZXJhbWEoKSkpOwogCi0gICAgeDJnb0RlYnVn
PDwiT05NYWluV2luZG93cyBjb25zdHJ1Y3RvciBmaW5pc2hlZCwgaG9tZSBEaXJlY3RvcnkgaXM6
Ijw8aG9tZURpcjw8ZW5kbDsKKyAgICB4MmdvSW5mb2YoMyk8PHRyKCJTdGFydGVkICB4MmdvY2xp
ZW50LiIpOworICAgIHgyZ29EZWJ1Zzw8IiRIT01FPSIgKyBob21lRGlyLnRvQXNjaWkoKTsKICAg
ICBpZiAodGhpbk1vZGUpCiAgICAgeworICAgICAgICB4MmdvRGVidWc8PCJUaGluTW9kZSBpcyBh
Y3RpdmUuIjsKICAgICAgICAgc2hvd01heGltaXplZCgpOwogICAgICAgICBhY3RpdmF0ZVdpbmRv
dygpOwogICAgICAgICByYWlzZSgpOwpAQCAtNDYxLDEwICs0NjMsMTAgQEAgT05NYWluV2luZG93
OjpPTk1haW5XaW5kb3cgKCBRV2lkZ2V0ICpwYXJlbnQgKSA6UU1haW5XaW5kb3cgKCBwYXJlbnQg
KQogCiBPTk1haW5XaW5kb3c6On5PTk1haW5XaW5kb3coKQogewotICAgIHgyZ29EZWJ1Zzw8Ik9O
TWFpbldpbmRvdyBkZXN0cnVjdG9yIjsKKyAgICB4MmdvRGVidWc8PCJEZXN0cm95aW5nIHgyZ29j
bGllbnQuLi4iOwogICAgIGlmICggIWNsb3NlRXZlbnRTZW50ICkKICAgICAgICAgY2xvc2VDbGll
bnQoKTsKLSAgICB4MmdvRGVidWc8PCJlbmQgb2YgT05NYWluV2luZG93IGRlc3RydWN0b3IiOwor
ICAgIHgyZ29EZWJ1Zzw8IkRlc3Ryb3llZCAgeDJnb2NsaWVudC4iOwogfQogCiB2b2lkIE9OTWFp
bldpbmRvdzo6c2xvdFNodXRkb3duVGhpbkNsaWVudCgpCkBAIC01MDksMTMgKzUxMSwxMiBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6aW5zdGFsbFRyYW5zbGF0b3IoKQogICAgIGZpbGVuYW1lPWZpbGVu
YW1lLnRvTG93ZXIoKTsKICAgICBpZiAoICF4MmdvY2xpZW50VHJhbnNsYXRvci0+bG9hZCAoIGZp
bGVuYW1lICkgKQogICAgIHsKLSAgICAgICAgcURlYnVnICggIkNhbid0IGxvYWQgdHJhbnNsYXRv
ciAoJXMpICFcbiIsCi0gICAgICAgICAgICAgICAgIGZpbGVuYW1lLnRvTG9jYWw4Qml0KCkuZGF0
YSgpICk7CisgICAgICAgIHgyZ29XYXJuaW5nZigxKTw8dHIoIkNhbid0IGxvYWQgdHJhbnNsYXRv
cjogIikgKyBmaWxlbmFtZS50b0FzY2lpKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAg
ICAgIFFDb3JlQXBwbGljYXRpb246Omluc3RhbGxUcmFuc2xhdG9yICggeDJnb2NsaWVudFRyYW5z
bGF0b3IgKTsKLS8vIAkJeDJnb0RlYnVnPDwidHJhbnNsYXRvciAiPDxmaWxlbmFtZTw8ICIgaW5z
dGFsbGVkIjsKKyAgICAgICAgeDJnb0luZm9mKDQpPDx0cigiVHJhbnNsYXRvcjogIikgKyBmaWxl
bmFtZS50b0FzY2lpKCkgKyB0cigiIGluc3RhbGxlZC4iKTsKICAgICB9CiAKIApAQCAtNTIzLDEz
ICs1MjQsMTIgQEAgdm9pZCBPTk1haW5XaW5kb3c6Omluc3RhbGxUcmFuc2xhdG9yKCkKICAgICBm
aWxlbmFtZT1RU3RyaW5nICggIjovcXRfJTEiICkuYXJnICggUUxvY2FsZTo6c3lzdGVtKCkubmFt
ZSgpICk7CiAgICAgaWYgKCAhcXRUcmFuc2xhdG9yLT5sb2FkICggZmlsZW5hbWUgKSApCiAgICAg
ewotICAgICAgICB4MmdvRGVidWc8PCAiQ2FuJ3QgbG9hZCB0cmFuc2xhdG9yICI8PAotICAgICAg
ICAgICAgICAgICBmaWxlbmFtZS50b0xvY2FsOEJpdCgpLmRhdGEoKSA7CisgICAgICAgIHgyZ29X
YXJuaW5nZigyKTw8dHIoIkNhbid0IGxvYWQgdHJhbnNsYXRvcjogIikgKyBmaWxlbmFtZS50b0Fz
Y2lpKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7CiAgICAgICAgIFFDb3JlQXBwbGljYXRpb246
Omluc3RhbGxUcmFuc2xhdG9yICggcXRUcmFuc2xhdG9yICk7Ci0vLyAJCXgyZ29EZWJ1Zzw8InRy
YW5zbGF0b3IgIjw8ZmlsZW5hbWU8PCAiIGluc3RhbGxlZCI7CisgICAgICAgIHgyZ29JbmZvZig1
KTw8dHIoIlRyYW5zbGF0b3I6ICIpICsgZmlsZW5hbWUudG9Bc2NpaSgpICsgdHIoIiBpbnN0YWxs
ZWQuIik7CiAgICAgfQogfQogCkBAIC02NDYsNiArNjQ2LDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OmluaXRXaWRnZXRzRW1iZWQoKQogICAgIGlmICggY29uZmlnLmNvbmZGUyYmICggIWNvbmZpZy51
c2VGcyApICkKICAgICB7CiAgICAgICAgIHgyZ29EZWJ1Zzw8ImhpZGUgc2hhcmUiOworCiAgICAg
ICAgIGFjdF9zaGFyZUZvbGRlci0+c2V0VmlzaWJsZSAoIGZhbHNlICk7CiAgICAgfQogCkBAIC05
MDcsNyArOTA4LDggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUZXN0Q29ubmVjdGlvbigpCiAK
IHZvaWQgT05NYWluV2luZG93OjpzbG90Q2hhbmdlQnJva2VyUGFzcygpCiB7Ci0gICAgeDJnb0Rl
YnVnPDwiY2hhbmdlIGJyb2tlciBwYXNzIjsKKyAgICB4MmdvRGVidWc8PCJDaGFuZ2luZyBicm9r
ZXIgcGFzc3dvcmQuIjsKKwogICAgIEJyb2tlclBhc3NEbGcgcGFzc0RsZzsKICAgICBpZiAocGFz
c0RsZy5leGVjKCkhPVFEaWFsb2c6OkFjY2VwdGVkKQogICAgICAgICByZXR1cm47CkBAIC05MzAs
NyArOTMyLDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDaGVja1BvcnRhYmxlRGlyKCkKIHsK
ICAgICBpZiAoIVFGaWxlOjpleGlzdHMoaG9tZURpcikpCiAgICAgewotICAgICAgICB4MmdvRGVi
dWc8PCJwb3J0YWJsZSBkaXIgbm90IGV4aXN0cywgY2xvc2UiOworICAgICAgICB4MmdvRGVidWc8
PCJQb3J0YWJsZSBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3RzLCBjbG9zaW5nLiI7CiAgICAgICAg
IGNsb3NlKCk7CiAgICAgfQogfQpAQCAtMTA3Nyw4ICsxMDc5LDEyIEBAIHZvaWQgT05NYWluV2lu
ZG93Ojp0cmF5SWNvbkluaXQoKQogICAgICAgICAgICAgdHJheUljb24tPnNldEljb24oUUljb24g
KCAiOmljb25zLzEyOHgxMjgveDJnby5wbmciKSApOwogICAgICAgICAgICAgdHJheUljb24tPnNl
dFRvb2xUaXAodHIoIkxlZnQgbW91c2UgYnV0dG9uIHRvIGhpZGUvcmVzdG9yZSAtIFJpZ2h0IG1v
dXNlIGJ1dHRvbiB0byBkaXNwbGF5IGNvbnRleHQgbWVudSIpKTsKICAgICAgICAgfQotICAgICAg
ICB0cmF5SWNvbi0+c2hvdygpOwotICAgICAgICBwbHVnQXBwc0luVHJheSgpOworCisgICAgICAg
IGlmICghc3RhcnRIaWRkZW4pCisgICAgICAgIHsKKyAgICAgICAgICAgIHRyYXlJY29uLT5zaG93
KCk7CisgICAgICAgICAgICBwbHVnQXBwc0luVHJheSgpOworICAgICAgICB9CiAgICAgfQogI2Vu
ZGlmCiB9CkBAIC0xMDkzLDcgKzEwOTksOCBAQCBRTWVudSogT05NYWluV2luZG93Ojppbml0VHJh
eUFwcE1lbnUoUVN0cmluZyB0ZXh0LCBRUGl4bWFwIGljb24pCiAKIHZvaWQgT05NYWluV2luZG93
OjpzbG90QXBwTWVudVRyaWdnZXJlZChRQWN0aW9uKiBhY3Rpb24pCiB7Ci0gICAgeDJnb0RlYnVn
PDwic2xvdEFwcE1lbnVUcmlnZ2VyZWQgOiI8PGFjdGlvbi0+ZGF0YSgpLnRvU3RyaW5nKCk8PGVu
ZGw7CisgICAgeDJnb0RlYnVnPDwic2xvdEFwcE1lbnVUcmlnZ2VyZWQ6ICI8PGFjdGlvbi0+ZGF0
YSgpLnRvU3RyaW5nKCk7CisKICAgICBpZiAoYWN0aW9uLT5kYXRhKCkudG9TdHJpbmcoKSAhPSAi
IikKICAgICAgICAgcnVuQXBwbGljYXRpb24oYWN0aW9uLT5kYXRhKCkudG9TdHJpbmcoKSk7CiB9
CkBAIC0xMTAzLDcgKzExMTAsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6cGx1Z0FwcHNJblRyYXko
KQogICAgIGlmICghdHJheUljb24pCiAgICAgICAgIHJldHVybjsKICAgICByZW1vdmVBcHBzRnJv
bVRyYXkoKTsKLSAgICB4MmdvRGVidWc8PCJwbHVnZ2luZyBhcHBzXG4iOworCisgICAgeDJnb0Rl
YnVnPDwiUGx1Z2dpbmcgYXBwcyBpbiB0cmF5LiI7CisKICAgICBib29sIGVtcHR5PXRydWU7CiAg
ICAgdG9wQWN0aW9ucy5jbGVhcigpOwogICAgIGZvcmVhY2goQXBwbGljYXRpb24gYXBwLCBhcHBs
aWNhdGlvbnMpCkBAIC0xMTMzLDcgKzExNDIsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6cmVtb3Zl
QXBwc0Zyb21UcmF5KCkKIHsKICAgICBpZiAoIXRyYXlJY29uKQogICAgICAgICByZXR1cm47Ci0g
ICAgeDJnb0RlYnVnPDwicmVtb3ZlIGFwcHNcbiI7CisKKyAgICB4MmdvRGVidWc8PCJSZW1vdmlu
ZyBhcHBzIGZyb20gdHJheSI7CisKICAgICBmb3IgKGludCBpPTA7IGk8PUFwcGxpY2F0aW9uOjpP
VEhFUjsgKytpKQogICAgIHsKICAgICAgICAgYXBwTWVudVtpXS0+Y2xlYXIoKTsKQEAgLTEyMzcs
MTMgKzEyNDgsMTMgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RSZXNpemUgKCBjb25zdCBRU2l6
ZSBzeiApCiAKIHZvaWQgT05NYWluV2luZG93OjpjbG9zZUNsaWVudCgpCiB7CisgICAgeDJnb0lu
Zm9mKDYpPDx0cigiQ2xvc2luZyB4MmdvY2xpZW50Li4uIik7CiAgICAgaWYodHJheUljb24pCiAg
ICAgICAgIHRyYXlJY29uLT5oaWRlKCk7CiAgICAgY2xvc2VFdmVudFNlbnQ9dHJ1ZTsKICAgICBp
ZiAoICFzdGFydE1heGltaXplZCAmJiAhc3RhcnRIaWRkZW4gJiYgIWVtYmVkTW9kZSApCiAgICAg
ewotICAgICAgICB4MmdvRGVidWc8PCJzYXZpbmcgc2V0dGluZ3MiOwotCisgICAgICAgIHgyZ29E
ZWJ1Zzw8IlNhdmluZyBzZXR0aW5ncy4uLiI7CiAgICAgICAgIFgyZ29TZXR0aW5ncyBzdCAoICJz
aXplcyIgKTsKIAogICAgICAgICBzdC5zZXR0aW5nKCktPnNldFZhbHVlICggIm1haW53aW5kb3cv
c2l6ZSIsCkBAIC0xMjUyLDcgKzEyNjMsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6Y2xvc2VDbGll
bnQoKQogICAgICAgICBzdC5zZXR0aW5nKCktPnNldFZhbHVlICggIm1haW53aW5kb3cvbWF4aW1p
emVkIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFWYXJpYW50ICggaXNNYXhp
bWl6ZWQoKSApICk7CiAgICAgICAgIHN0LnNldHRpbmcoKS0+c3luYygpOwotICAgICAgICB4Mmdv
RGVidWc8PCJkb25lIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiU2F2ZWQgIHNldHRpbmdzLiI7CiAj
aWZkZWYgUV9PU19MSU5VWAogICAgICAgICBpZiAoaW1hZ2UpCiAgICAgICAgICAgICBYRnJlZVBp
eG1hcChRWDExSW5mbzo6ZGlzcGxheSgpLGltYWdlKTsKQEAgLTEyNjQsMjAgKzEyNzUsMTkgQEAg
dm9pZCBPTk1haW5XaW5kb3c6OmNsb3NlQ2xpZW50KCkKICAgICB7CiAgICAgICAgIGlmICggbnhw
cm94eS0+c3RhdGUoKSA9PVFQcm9jZXNzOjpSdW5uaW5nICkKICAgICAgICAgewotICAgICAgICAg
ICAgeDJnb0RlYnVnPDwidGVybWluYXRlIHByb3h5IjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
IlRlcm1pbmF0aW5nIHByb3h5Li4uIjsKICAgICAgICAgICAgIG54cHJveHktPnRlcm1pbmF0ZSgp
OwotICAgICAgICAgICAgeDJnb0RlYnVnPDwiZG9uZSI7CisgICAgICAgICAgICB4MmdvRGVidWc8
PCJUZXJtaW5hdGVkICBwcm94eS4iOwogICAgICAgICB9Ci0gICAgICAgIHgyZ29EZWJ1Zzw8ImRl
bGV0ZSBwcm94eSBwcm9jZXNzIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRpbmcgcHJveHku
Li4iOwogICAgICAgICBkZWxldGUgbnhwcm94eTsKLSAgICAgICAgeDJnb0RlYnVnPDwiZG9uZSI7
Ci0KKyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgcHJveHkuIjsKICAgICB9CiAgICAgaWYg
KCBzc2hDb25uZWN0aW9uICYmICF1c2VMZGFwKQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwi
d2FpdGluZyBzc2hDb25uZWN0aW9uIHRvIGZpbmlzaFxuIjsKKyAgICAgICAgeDJnb0RlYnVnPDwi
V2FpdGluZyBmb3IgdGhlIFNTSCBjb25uZWN0aW9uIHRvIGZpbmlzaC4uLiI7CiAgICAgICAgIGRl
bGV0ZSBzc2hDb25uZWN0aW9uOwotICAgICAgICB4MmdvRGVidWc8PCJzc2hDb25uZWN0aW9uIGlz
IGNsb3NlZFxuIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiV2FpdGVkICBmb3IgdGhlIFNTSCBjb25u
ZWN0aW9uIHRvIGZpbmlzaC4iOwogICAgICAgICBzc2hDb25uZWN0aW9uPTA7CiAgICAgfQogICAg
IGlmICh1c2VMZGFwKQpAQCAtMTI4Niw1MSArMTI5NiwyOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6
Y2xvc2VDbGllbnQoKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoc2VydmVyU3NoQ29ubmVj
dGlvbnNbaV0pCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwid2Fp
dGluZyBzc2hDb25uZWN0aW9uIHRvIGZpbmlzaFxuIjsKKyAgICAgICAgICAgICAgICB4MmdvRGVi
dWc8PCJXYWl0aW5nIGZvciB0aGUgU1NIIGNvbm5lY3Rpb24gdG8gZmluaXNoLi4uIjsKICAgICAg
ICAgICAgICAgICBkZWxldGUgc2VydmVyU3NoQ29ubmVjdGlvbnNbaV07Ci0gICAgICAgICAgICAg
ICAgeDJnb0RlYnVnPDwic3NoQ29ubmVjdGlvbiBpcyBjbG9zZWRcbiI7CisgICAgICAgICAgICAg
ICAgeDJnb0RlYnVnPDwiV2FpdGVkICBmb3IgdGhlIFNTSCBjb25uZWN0aW9uIHRvIGZpbmlzaC4i
OwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCi0gICAgLyoJaWYgKCB0dW5uZWwh
PTBsICkKLSAgICAJewotICAgIAkJeDJnb0RlYnVnPDwiZGVsZXRlIHR1bm5lbCI7Ci0gICAgCQlk
ZWxldGUgdHVubmVsOwotICAgIAkJeDJnb0RlYnVnPDwiZG9uZSI7Ci0gICAgCX0KLSAgICAJaWYg
KCBzbmRUdW5uZWwhPTBsICkKLSAgICAJewotICAgIAkJeDJnb0RlYnVnPDwiZGVsZXRlIHNuZCB0
dW5uZWwiOwotICAgIAkJZGVsZXRlIHNuZFR1bm5lbDsKLSAgICAJCXgyZ29EZWJ1Zzw8ImRvbmUi
OwotICAgIAl9Ci0gICAgCWlmICggZnNUdW5uZWwhPTBsICkKLSAgICAJewotICAgIAkJeDJnb0Rl
YnVnPDwiZGVsZXRlIGZzIHR1bm5lbCI7Ci0gICAgCQlkZWxldGUgZnNUdW5uZWw7Ci0gICAgCQl4
MmdvRGVidWc8PCJkb25lIjsKLSAgICAJfQotICAgIAkqLwogICAgIGlmICggc291bmRTZXJ2ZXIg
KQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwiZGVsZXRlIHNuZCBzZXJ2ZXIiOworICAgICAg
ICB4MmdvRGVidWc8PCJEZWxldGluZyB0aGUgc291bmQgc2VydmVyLi4uIjsKICAgICAgICAgZGVs
ZXRlIHNvdW5kU2VydmVyOwotICAgICAgICB4MmdvRGVidWc8PCJkb25lIjsKKyAgICAgICAgeDJn
b0RlYnVnPDwiRGVsZXRlZCAgdGhlIHNvdW5kIHNlcnZlci4iOwogICAgIH0KICAgICBpZiAoIGdw
Z0FnZW50IT0wbCApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJ0ZXJtaW5hdGUgZ3BnLWFn
ZW50IjsKICAgICAgICAgaWYgKCBncGdBZ2VudC0+c3RhdGUoKSA9PVFQcm9jZXNzOjpSdW5uaW5n
ICkKKyAgICAgICAgeworICAgICAgICAgICAgeDJnb0RlYnVnPDwiVGVybWluYXRpbmcgZ3BnLWFn
ZW50Li4uIjsKICAgICAgICAgICAgIGdwZ0FnZW50LT50ZXJtaW5hdGUoKTsKLSAgICAgICAgeDJn
b0RlYnVnPDwiZG9uZSI7Ci0gICAgfQotICAgIC8qCWlmICggdXNlU3NoQWdlbnQgKQotICAgIAl7
Ci0gICAgCQl4MmdvRGVidWc8PCJ0ZXJtaW5hdGUgc3NoLWFnZW50IjsKLSAgICAJCWZpbmlzaFNz
aEFnZW50KCk7Ci0gICAgCQl4MmdvRGVidWc8PCJkb25lIjsKLSAgICAJfSovCisgICAgICAgICAg
ICB4MmdvRGVidWc8PCJUZXJtaW5hdGVkICBncGctYWdlbnQuIjsKKyAgICAgICAgfQorICAgIH0K
KwogI2lmbmRlZiBRX09TX1dJTgogICAgIGlmICggYWdlbnRQaWQubGVuZ3RoKCkgPjAgKQogICAg
IHsKQEAgLTEzNDUsMTMgKzEzMzMsMTUgQEAgdm9pZCBPTk1haW5XaW5kb3c6OmNsb3NlQ2xpZW50
KCkKICNpZmRlZiBRX09TX1dJTgogICAgIGlmICggcHVsc2VTZXJ2ZXIgKQogICAgIHsKKyAgICAg
ICAgeDJnb0RlYnVnPDwiRGVsZXRpbmcgdGhlIHB1bHNlIHRpbWVyLi4uIjsKICAgICAgICAgZGVs
ZXRlIHB1bHNlVGltZXI7Ci0KLSAgICAgICAgeDJnb0RlYnVnPDwidGVybWluYXRlIHB1bHNlIjsK
KyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgdGhlIHB1bHNlIHRpbWVyLiI7CisgICAgICAg
IHgyZ29EZWJ1Zzw8IktpbGxpbmcgdGhlIHB1bHNlIHNvdW5kIHNlcnZlci4uLiI7CiAgICAgICAg
IHB1bHNlU2VydmVyLT5raWxsKCk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8ImRvbmVcbmRlbGV0ZSBw
dWxzZSBwcm9jZXNzIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiS2lsbGVkICB0aGUgcHVsc2Ugc291
bmQgc2VydmVyLiI7CisgICAgICAgIHgyZ29EZWJ1Zzw8IkRlbGV0aW5nIHRoZSBwdWxzZSBwcm9j
ZXNzLi4uIjsKICAgICAgICAgZGVsZXRlIHB1bHNlU2VydmVyOwotICAgICAgICB4MmdvRGVidWc8
PCJkb25lIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgdGhlIHB1bHNlIHByb2Nlc3Mu
IjsKIAogICAgICAgICBRRGlyIGRyICggaG9tZURpciApOwogICAgICAgICBkci5yZW1vdmUgKCBw
dWxzZURpcisiL2NvbmZpZy5wYSIgKTsKQEAgLTEzNjEsMTEgKzEzNTEsMTIgQEAgdm9pZCBPTk1h
aW5XaW5kb3c6OmNsb3NlQ2xpZW50KCkKICAgICB9CiAgICAgaWYgKCB4b3JnICkKICAgICB7Ci0g
ICAgICAgIHgyZ29EZWJ1Zzw8InRlcm1pbmF0ZSB4b3JnIjsKKyAgICAgICAgeDJnb0RlYnVnPDwi
VGVybWluYXRpbmcgeG9yZy4uLiI7CiAgICAgICAgIHhvcmctPnRlcm1pbmF0ZSgpOwotICAgICAg
ICB4MmdvRGVidWc8PCJkb25lXG5kZWxldGUgeG9yZyBwcm9jZXNzIjsKKyAgICAgICAgeDJnb0Rl
YnVnPDwiVGVybWluYXRlZCAgeG9yZy4iOworICAgICAgICB4MmdvRGVidWc8PCJEZWxldGluZyB4
b3JnLi4uIjsKICAgICAgICAgZGVsZXRlIHhvcmc7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8ImRvbmUi
OworICAgICAgICB4MmdvRGVidWc8PCJEZWxldGVkIHhvcmcuIjsKICAgICB9CiAKICAgICBpZiAo
IHdpblNzaGRTdGFydGVkICkKQEAgLTEzNzcsOCArMTM2OCw5IEBAIHZvaWQgT05NYWluV2luZG93
OjpjbG9zZUNsaWVudCgpCiAjZWxzZQogICAgIGlmICggdXNlclNzaGQgJiYgc3NoZCApCiAgICAg
eworICAgICAgICB4MmdvRGVidWc8PCJUZXJtaW5hdGluZyBzc2hkLi4uIjsKICAgICAgICAgc3No
ZC0+dGVybWluYXRlKCk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8InRlcm1pbmF0aW5nIHVzZXJzcGFj
ZSBzc2hkIjsKKyAgICAgICAgeDJnb0RlYnVnPDwiVGVybWluYXRlZCAgc3NoZC4iOwogICAgICAg
ICBkZWxldGUgc3NoZDsKICAgICB9CiAKQEAgLTE0MDcsMTEgKzEzOTksMTQgQEAgdm9pZCBPTk1h
aW5XaW5kb3c6OmNsb3NlQ2xpZW50KCkKICAgICAgICAgY2xlYW5Qb3J0YWJsZSgpOwogICAgIH0K
ICAgICBTc2hNYXN0ZXJDb25uZWN0aW9uOjpmaW5hbGl6ZUxpYlNzaCgpOworCisgICAgeDJnb0lu
Zm9mKDcpPDx0cigiQ2xvc2VkICB4MmdvY2xpZW50LiIpOwogfQogCiB2b2lkIE9OTWFpbldpbmRv
dzo6Y2xvc2VFdmVudCAoIFFDbG9zZUV2ZW50KiBldmVudCApCiB7Ci0gICAgeDJnb0RlYnVnPDwi
Y2xvc2UgZXZlbnQiOworICAgIHgyZ29EZWJ1Zzw8IkNsb3NlIGV2ZW50IHJlY2VpdmVkLiI7CisK
ICAgICBpZiAodHJheU5vY2xvc2UgJiYgIWJyb2tlck1vZGUpCiAgICAgewogICAgICAgICBoaWRl
KCk7CkBAIC0xNTc0LDcgKzE1NjksOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6ZGlzcGxheVVzZXJz
KCkKICAgICBpZiAoIHVzZVBHUENhcmQgICYmICFQR1BJbml0ZWQpCiAgICAgewogICAgICAgICBQ
R1BJbml0ZWQ9dHJ1ZTsKLSAgICAgICAgeDJnb0RlYnVnPDwiVXNlcnMgbG9hZGVkLCBzdGFydGlu
ZyBzbWFydCBjYXJkIGRhZW1vblxuIjsKKworICAgICAgICB4MmdvRGVidWc8PCJVc2VycyBsb2Fk
ZWQsIHN0YXJ0aW5nIHNtYXJ0IGNhcmQgZGFlbW9uLiI7CisKICAgICAgICAgUVRpbWVyOjpzaW5n
bGVTaG90ICggMTAsIHRoaXMsIFNMT1QgKCBzbG90U3RhcnRQR1BBdXRoKCkgKSApOwogICAgIH0K
IH0KQEAgLTE3MzQsOCArMTczMSw4IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90UGFzc0VudGVy
KCkKICAgICAgICAgewogICAgICAgICAgICAgc1BvcnQ9c0wuZnJvbnQoKS5jX3N0cigpOwogICAg
ICAgICB9Ci0gICAgICAgIHgyZ29EZWJ1Zzw8c2VydmVyLm5hbWU8PCI6IHNzaCBwb3J0IGlzICI8
PHNQb3J0OwogCisgICAgICAgIHgyZ29EZWJ1Zzw8IlNTSC1TZXJ2ZXIoIjw8c2VydmVyLm5hbWU8
PCIpIHBvcnQ6ICI8PHNQb3J0OwogCiAgICAgICAgIFFTdHJpbmcgc0ZhY3Rvcj0iMSI7CiAgICAg
ICAgIGxpc3Q8c3RyaW5nPiBzZXJpYWxOdW1iZXI9TERBUFNlc3Npb246OmdldFN0cmluZ0F0dHJW
YWx1ZXMgKApAQCAtMTc0NCw3ICsxNzQxLDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RQYXNz
RW50ZXIoKQogICAgICAgICB7CiAgICAgICAgICAgICBzRmFjdG9yPXNlcmlhbE51bWJlci5mcm9u
dCgpLmNfc3RyKCk7CiAgICAgICAgIH0KLSAgICAgICAgeDJnb0RlYnVnPDxzZXJ2ZXIubmFtZTw8
IjogZmFjdG9yIGlzICI8PHNGYWN0b3I7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiU1NILVNlcnZl
cigiPDxzZXJ2ZXIubmFtZTw8IikgZmFjdG9yOiAiPDxzRmFjdG9yOworCiAgICAgICAgIHNlcnZl
ci5mYWN0b3I9c0ZhY3Rvci50b0Zsb2F0KCk7CiAgICAgICAgIHNlcnZlci5zZXNzPTA7CiAgICAg
ICAgIHNlcnZlci5zc2hQb3J0PXNQb3J0OwpAQCAtMjE0MCwxMCArMjEzOSwxNiBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6c2xvdFJlYWRTZXNzaW9ucygpCiAgICAgICAgIHN0PSBuZXcgWDJnb1NldHRp
bmdzKCAic2Vzc2lvbnMiICk7CiAKICAgICBRU3RyaW5nTGlzdCBzbHN0PXN0LT5zZXR0aW5nKCkt
PmNoaWxkR3JvdXBzKCk7Ci0gICAgeDJnb0RlYnVnPDwicmVhZCAiPDxzbHN0LnNpemUoKTw8IiBz
ZXNzaW9ucyBmcm9tIGNvbmZpZyBmaWxlIjsKKworICAgIHgyZ29EZWJ1Zzw8IlJlYWRpbmcgIjw8
c2xzdC5zaXplKCk8PCIgc2Vzc2lvbnMgZnJvbSBjb25maWcgZmlsZS4iOworCiAgICAgaWYgKGJy
b2tlck1vZGUgJiYgKHNsc3Quc2l6ZSgpPT0wKSkKICAgICB7Ci0gICAgICAgIFFNZXNzYWdlQm94
Ojpjcml0aWNhbCh0aGlzLHRyKCJFcnJvciIpLHRyKCJYMkdvIHNlc3Npb25zIG5vdCBmb3VuZCIp
KTsKKyAgICAgICAgUVN0cmluZyBlcnJvciA9IHRyKCJObyBYMkdvIHNlc3Npb25zIGZvdW5kLCBj
bG9zaW5nLiIpOworICAgICAgICBpZighc3RhcnRIaWRkZW4pCisgICAgICAgICAgICBRTWVzc2Fn
ZUJveDo6Y3JpdGljYWwodGhpcyx0cigiRXJyb3IiKSxlcnJvcik7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHgyZ29FcnJvcmYoMSk8PGVycm9yOyAvLyB0cigiTm8gWDJHbyBzZXNzaW9ucyBu
b3QgZm91bmQsIGNsb3NpbmcuIik7CiAgICAgICAgIGNsb3NlKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CkBAIC0yMzI5LDcgKzIzMzQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6ZGlzcGxheVRv
b2xCYXIgKCBib29sIHNob3cgKQogYm9vbCBPTk1haW5XaW5kb3c6OmluaXRMZGFwU2Vzc2lvbiAo
IGJvb2wgc2hvd0Vycm9yICkKIHsKICNpZmRlZiBVU0VMREFQCi0gICAgeDJnb0RlYnVnPDwiaW5p
dGluZyBMREFQIFNlc3Npb24iPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiSW5pdGlhbGl6aW5n
IExEQVAgc2Vzc2lvbnMuLi4iOworCiAgICAgdHJ5CiAgICAgewogICAgICAgICBsZD1uZXcgTERB
UFNlc3Npb24gKCBsZGFwU2VydmVyLnRvU3RkU3RyaW5nKCksCkBAIC0yMzQwLDcgKzIzNDcsOSBA
QCBib29sIE9OTWFpbldpbmRvdzo6aW5pdExkYXBTZXNzaW9uICggYm9vbCBzaG93RXJyb3IgKQog
ICAgICAgICBRU3RyaW5nIG1lc3NhZ2U9IkV4ZXB0aW9uMCBpbjogIjsKICAgICAgICAgbWVzc2Fn
ZT1tZXNzYWdlK2UuZXJyX3R5cGUuY19zdHIoKTsKICAgICAgICAgbWVzc2FnZT1tZXNzYWdlKyIg
OiAiK2UuZXJyX3N0ci5jX3N0cigpOwotICAgICAgICB4MmdvRGVidWcgPDxtZXNzYWdlPDxlbmRs
OworCisgICAgICAgIHgyZ29EZWJ1Zzw8bWVzc2FnZTsKKwogICAgICAgICBpZiAoIGxkYXBTZXJ2
ZXIxLmxlbmd0aCgpICkKICAgICAgICAgewogICAgICAgICAgICAgdHJ5CkBAIC0yMzU0LDcgKzIz
NjMsOSBAQCBib29sIE9OTWFpbldpbmRvdzo6aW5pdExkYXBTZXNzaW9uICggYm9vbCBzaG93RXJy
b3IgKQogICAgICAgICAgICAgICAgIFFTdHJpbmcgbWVzc2FnZT0iRXhlcHRpb24xIGluOiAiOwog
ICAgICAgICAgICAgICAgIG1lc3NhZ2U9bWVzc2FnZStlLmVycl90eXBlLmNfc3RyKCk7CiAgICAg
ICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlKyIgOiAiK2UuZXJyX3N0ci5jX3N0cigpOwotICAg
ICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PG1lc3NhZ2U8PGVuZGw7CisKKyAgICAgICAgICAgICAg
ICB4MmdvRGVidWc8PG1lc3NhZ2U7CisKICAgICAgICAgICAgICAgICBpZiAoIGxkYXBTZXJ2ZXIy
Lmxlbmd0aCgpICkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIHRyeQpA
QCAtMjM3Miw4ICsyMzgzLDggQEAgYm9vbCBPTk1haW5XaW5kb3c6OmluaXRMZGFwU2Vzc2lvbiAo
IGJvb2wgc2hvd0Vycm9yICkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5lcnJf
dHlwZS5jX3N0cigpOwogICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1tZXNzYWdlKyIg
OiAiKwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlLmVycl9zdHIuY19zdHIoKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PG1lc3NhZ2U8PGVuZGw7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJyZXR1cm4gZmFsc2UiPDxlbmRsOworCisg
ICAgICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PG1lc3NhZ2U7CiAgICAgICAgICAgICAg
ICAgICAgICAgICBpZiAoIHNob3dFcnJvciApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
UU1lc3NhZ2VCb3g6OmNyaXRpY2FsICgKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
MGwsdHIgKCAiRXJyb3IiICksCkBAIC0yMzgyLDEyICsyMzkzLDE0IEBAIGJvb2wgT05NYWluV2lu
ZG93Ojppbml0TGRhcFNlc3Npb24gKCBib29sIHNob3dFcnJvciApCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjoKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgTm9CdXR0b24gKTsKIAorICAgICAgICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwi
UmV0dXJuaW5nIGZhbHNlLCAzcmQgdHJ5IGZhaWxlZC4iOwogICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAg
ICAgICAgIHgyZ29EZWJ1Zzw8InJldHVybiBmYWxzZSI8PGVuZGw7CisgICAgICAgICAgICAgICAg
ICAgIHgyZ29EZWJ1Zzw8IlJldHVybmluZyBmYWxzZS4iOworCiAgICAgICAgICAgICAgICAgICAg
IGlmICggc2hvd0Vycm9yICkKICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94Ojpj
cml0aWNhbCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMGwsdHIgKCAiRXJyb3IiICks
CkBAIC0yNDAxLDcgKzI0MTQsOCBAQCBib29sIE9OTWFpbldpbmRvdzo6aW5pdExkYXBTZXNzaW9u
ICggYm9vbCBzaG93RXJyb3IgKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewot
ICAgICAgICAgICAgeDJnb0RlYnVnPDwicmV0dXJuIGZhbHNlIjw8ZW5kbDsKKyAgICAgICAgICAg
IHgyZ29EZWJ1Zzw8IlJldHVybmluZyBmYWxzZS4iOworCiAgICAgICAgICAgICBpZiAoIHNob3dF
cnJvciApCiAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAi
RXJyb3IiICksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZSxRTWVzc2FnZUJveDo6T2ssCkBAIC0yNTMxLDYgKzI1NDUsNyBAQCBib29sIE9OTWFpbldpbmRv
dzo6aW5pdExkYXBTZXNzaW9uICggYm9vbCBzaG93RXJyb3IgKQogICAgICAgICB9CiAgICAgfQog
I2VuZGlmCisgICAgeDJnb0RlYnVnPDwiSW5pdGlhbGl6ZWQgIExEQVAgc2Vzc2lvbnMuIjsKICAg
ICByZXR1cm4gdHJ1ZTsKIAogfQpAQCAtMjcyMyw3ICsyNzM4LDcgQEAgdm9pZCBPTk1haW5XaW5k
b3c6OnNsb3RTZWxlY3RlZEZyb21MaXN0ICggU2Vzc2lvbkJ1dHRvbiogc2Vzc2lvbiApCiAgICAg
fQogICAgIGlmICggY3VycmVudEtleSAhPSBRU3RyaW5nOjpudWxsICYmIGN1cnJlbnRLZXkgIT0g
IiIgJiYgbm9wYXNzICkKICAgICB7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IkhhdmUga2V5LCBzdGFy
dGluZyBzZXNzaW9uIjw8ZW5kbDsKKyAgICAgICAgeDJnb0RlYnVnPDwiU3RhcnRpbmcgc2Vzc2lv
biB3aXRoIGtleS4iOwogICAgICAgICBzbG90U2Vzc0VudGVyKCk7CiAgICAgfQogICAgIGlmICgg
Y2FyZFJlYWR5IHx8IGF1dG9sb2dpbiB8fCBrcmJsb2dpbiAgKQpAQCAtMjc1OCwxNyArMjc3Mywy
MCBAQCBTc2hNYXN0ZXJDb25uZWN0aW9uKiBPTk1haW5XaW5kb3c6OnN0YXJ0U3NoQ29ubmVjdGlv
biAoIFFTdHJpbmcgaG9zdCwgUVN0cmluZyBwbwogICAgICAgICBRU3RyaW5nIHByb3h5bG9naW4s
IFFTdHJpbmcgcHJveHlwYXNzd29yZCwgUVN0cmluZyBwcm94eUtleSwKICAgICAgICAgYm9vbCBw
cm94eUF1dG9sb2dpbikKIHsKLQorICAgIHgyZ29JbmZvZig4KTw8dHIoIlN0YXJ0aW5nIGNvbm5l
Y3Rpb24gdG8gc2VydmVyOiAiKSArIGhvc3QgKyAiOiIgKyBwb3J0OwogICAgIFNzaE1hc3RlckNv
bm5lY3Rpb24qIGNvbjsKLSAgICB4MmdvRGVidWc8PCJzdGFydCBuZXcgc3NoIGNvbm5lY3Rpb24g
dG8gc2VydmVyOiI8PGhvc3Q8PCI6Ijw8cG9ydDw8ImtyYjogIjw8a3JiTG9naW48PGVuZGw7CisK
KyAgICB4MmdvRGVidWc8PCJTdGFydCBuZXcgc3NoIGNvbm5lY3Rpb24gdG8gc2VydmVyOiI8PGhv
c3Q8PCI6Ijw8cG9ydDw8IiBrcmJMb2dpbjogIjw8a3JiTG9naW47CisKICAgICBmb3IgKCBpbnQg
aT0wOyBpPHNzaEVudi5zaXplKCk7ICsraSApCiAgICAgewogI2lmbmRlZiBRX09TX1dJTgogICAg
ICAgICBRU3RyaW5nTGlzdCBhcmdzPXNzaEVudltpXS5zcGxpdCAoICI9IiApOwotICAgICAgICB4
MmdvRGVidWc8PCJzZXQgRW52ICI8PGFyZ3NbMF08PCIgdG8gIjw8YXJnc1sxXTw8ZW5kbDsKKyAg
ICAgICAgeDJnb0RlYnVnPDwiU2V0dGluZyBFTlYgIiArIGFyZ3NbMF0gKyB0cigiIHRvICIpICsg
YXJnc1sxXTsKICAgICAgICAgc2V0ZW52ICggYXJnc1swXS50b0FzY2lpKCksYXJnc1sxXS50b0Fz
Y2lpKCksMSApOwogI2Vsc2UKLSAgICAgICAgeDJnb0RlYnVnPDwic2V0IEVudiAiPDxzc2hFbnZb
aV08PGVuZGw7CisgICAgICAgIHgyZ29EZWJ1Zzw8IlNldCBFTlY6ICI8PHNzaEVudltpXTsKKwog
ICAgICAgICBfcHV0ZW52ICggc3NoRW52W2ldLnRvQXNjaWkoKSApOwogI2VuZGlmCiAgICAgfQpA
QCAtMjgwOSw2ICsyODI3LDcgQEAgU3NoTWFzdGVyQ29ubmVjdGlvbiogT05NYWluV2luZG93Ojpz
dGFydFNzaENvbm5lY3Rpb24gKCBRU3RyaW5nIGhvc3QsIFFTdHJpbmcgcG8KIAogdm9pZCBPTk1h
aW5XaW5kb3c6OnNsb3RTc2hDb25uZWN0aW9uRXJyb3IgKCBRU3RyaW5nIG1lc3NhZ2UsIFFTdHJp
bmcgbGFzdFNlc3Npb25FcnJvciApCiB7CisgICAgeDJnb0Vycm9yZigyKTw8IHRyKCJDb25uZWN0
aW9uIEVycm9yKCIpICsgbWVzc2FnZSArICIpOiAiICsgbGFzdFNlc3Npb25FcnJvcjsKICAgICBp
ZiAoIHNzaENvbm5lY3Rpb24gKQogICAgIHsKICAgICAgICAgc3NoQ29ubmVjdGlvbi0+d2FpdCgp
OwpAQCAtMjgxNiwyNiArMjgzNSwzNSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFNzaENvbm5l
Y3Rpb25FcnJvciAoIFFTdHJpbmcgbWVzc2FnZSwgUVN0cmluZyBsYXN0U2Vzc2lvbgogICAgICAg
ICBzc2hDb25uZWN0aW9uPTBsOwogICAgIH0KIAotICAgIFFNZXNzYWdlQm94Ojpjcml0aWNhbCAo
IDBsLG1lc3NhZ2UsbGFzdFNlc3Npb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRTWVzc2FnZUJveDo6T2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VC
b3g6Ok5vQnV0dG9uICk7Ci0gICAgc2V0RW5hYmxlZCAoIHRydWUgKTsKLSAgICBwYXNzRm9ybS0+
c2V0RW5hYmxlZCAoIHRydWUgKTsKLSAgICBzbG90U2hvd1Bhc3NGb3JtKCk7Ci0gICAgcGFzcy0+
c2V0Rm9jdXMoKTsKLSAgICBwYXNzLT5zZWxlY3RBbGwoKTsKKyAgICBpZiAoIXN0YXJ0SGlkZGVu
KQorICAgIHsKKyAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsbWVzc2FnZSxsYXN0
U2Vzc2lvbkVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWVzc2FnZUJv
eDo6T2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1
dHRvbiApOworICAgICAgICBzZXRFbmFibGVkICggdHJ1ZSApOworICAgICAgICBwYXNzRm9ybS0+
c2V0RW5hYmxlZCAoIHRydWUgKTsKKyAgICAgICAgc2xvdFNob3dQYXNzRm9ybSgpOworICAgICAg
ICBwYXNzLT5zZXRGb2N1cygpOworICAgICAgICBwYXNzLT5zZWxlY3RBbGwoKTsKIAogCi0gICAg
cGFzc0Zvcm0tPnNldEVuYWJsZWQgKCB0cnVlICk7Ci0gICAgaWYgKCBzdGFydEhpZGRlbiApCisg
ICAgICAgIHBhc3NGb3JtLT5zZXRFbmFibGVkICggdHJ1ZSApOworICAgIH0KKyAgICBlbHNlCiAg
ICAgewotICAgICAgICBzdGFydEhpZGRlbj1mYWxzZTsKLSAgICAgICAgc2xvdFJlc2l6ZSgpOwot
ICAgICAgICBzaG93KCk7Ci0gICAgICAgIGFjdGl2YXRlV2luZG93KCk7Ci0gICAgICAgIHJhaXNl
KCk7CisgICAgICAgIC8vIEluIG9yZGVyIHRvIGdldCB0aGlzIGludGVyYWN0aW9uIGZyZWUsIHdl
IG5lZWQgdG8gZnJlZSB0aGlzIGZyb20gd2luZG93cyBhbmQgc3R1ZmYKKyAgICAgICAgLy8gICAg
aWYgKCBzdGFydEhpZGRlbiApCisgICAgICAgIC8vICAgIHsKKyAgICAgICAgLy8gICAgICAgIHN0
YXJ0SGlkZGVuPWZhbHNlOworICAgICAgICAvLyAgICAgICAgc2xvdFJlc2l6ZSgpOworICAgICAg
ICAvLyAgICAgICAgc2hvdygpOworICAgICAgICAvLyAgICAgICAgYWN0aXZhdGVXaW5kb3coKTsK
KyAgICAgICAgLy8gICAgICAgIHJhaXNlKCk7CisgICAgICAgIC8vICAgIH0KKworICAgICAgICAv
LyBjb21wbGV0ZWx5IHF1aXQgdGhlIGFwcGxpY2F0aW9uCisgICAgICAgIHRyYXlRdWl0KCk7CiAg
ICAgfQotCiB9CiAKIApAQCAtMjg0Myw3ICsyODcxLDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RTc2hDb25uZWN0aW9uRXJyb3IgKCBRU3RyaW5nIG1lc3NhZ2UsIFFTdHJpbmcgbGFzdFNlc3Np
b24KIAogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RTc2hDb25uZWN0aW9uT2soKQogewotICAgIHgy
Z29EZWJ1Zzw8InNzaCBjb25uZWN0aW9uIG9rIjw8ZW5kbDsKKyAgICB4MmdvRGVidWc8PCJTU0gg
Y29ubmVjdGlvbiBlc3RhYmxpc2hlZC4iOwogICAgIHBhc3NGb3JtLT5zZXRFbmFibGVkICggdHJ1
ZSApOwogICAgIGlmICggdXNlTGRhcCApCiAgICAgewpAQCAtMjg1NiwxNCArMjg4NCwxOSBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6c2xvdFNzaENvbm5lY3Rpb25PaygpCiAKIFNzaE1hc3RlckNvbm5l
Y3Rpb24qICBPTk1haW5XaW5kb3c6OmZpbmRTZXJ2ZXJTc2hDb25uZWN0aW9uKFFTdHJpbmcgaG9z
dCkKIHsKKyAgICB4MmdvRGVidWc8PCJTZWFyY2hpbmcgZm9yIFNTSCBjb25uZWN0aW9ucy4uLiI7
CiAgICAgZm9yIChpbnQgaT0wOyBpPHNlcnZlclNzaENvbm5lY3Rpb25zLmNvdW50KCk7ICsraSkK
ICAgICB7CiAgICAgICAgIGlmIChzZXJ2ZXJTc2hDb25uZWN0aW9uc1tpXSkKICAgICAgICAgewog
ICAgICAgICAgICAgaWYgKHNlcnZlclNzaENvbm5lY3Rpb25zW2ldLT5nZXRIb3N0KCk9PWhvc3Qp
CisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiRm91bmQgU1NIIGNv
bm5lY3Rpb24uIjsKICAgICAgICAgICAgICAgICByZXR1cm4gc2VydmVyU3NoQ29ubmVjdGlvbnNb
aV07CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgeDJnb1dhcm5pbmdmKDMp
PDwgdHIoIkNvdWxkbid0IGZpbmQgYSBTU0ggY29ubmVjdGlvbi4iKTsKICAgICByZXR1cm4gMGw7
CiB9CiAKQEAgLTI4NzIsNyArMjkwNSw3IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90U2VydlNz
aENvbm5lY3Rpb25PayhRU3RyaW5nIHNlcnZlcikKICAgICBTc2hNYXN0ZXJDb25uZWN0aW9uKiBj
b249ZmluZFNlcnZlclNzaENvbm5lY3Rpb24oc2VydmVyKTsKICAgICBpZiAoIWNvbikKICAgICAg
ICAgcmV0dXJuOwotICAgIHgyZ29EZWJ1Zzw8ImdldHRpbmcgc2Vzc2lvbnMgb24gIjw8c2VydmVy
PDxlbmRsOworICAgIHgyZ29EZWJ1Zzw8IkdldHRpbmcgc2Vzc2lvbnMgb24gSG9zdDogIiArIHNl
cnZlcjsKICAgICBjb24tPmV4ZWN1dGVDb21tYW5kKCAiZXhwb3J0IEhPU1ROQU1FICYmIHgyZ29s
aXN0c2Vzc2lvbnMiLCB0aGlzLCBTTE9UIChzbG90TGlzdEFsbFNlc3Npb25zICggYm9vbCxRU3Ry
aW5nLGludCApICkpOwogfQogCkBAIC0yOTg5LDYgKzMwMjIsMjEgQEAgdm9pZCBPTk1haW5XaW5k
b3c6OnNsb3RTc2hVc2VyQXV0aEVycm9yICggUVN0cmluZyBlcnJvciApCiAgICAgICAgIHNzaENv
bm5lY3Rpb249MGw7CiAgICAgfQogCisgICAgLy8gICAgaWYgKCBzdGFydEhpZGRlbiApCisgICAg
Ly8gICAgeworICAgIC8vICAgICAgICBzdGFydEhpZGRlbj1mYWxzZTsKKyAgICAvLyAgICAgICAg
c2xvdFJlc2l6ZSgpOworICAgIC8vICAgICAgICBzaG93KCk7CisgICAgLy8gICAgICAgIGFjdGl2
YXRlV2luZG93KCk7CisgICAgLy8gICAgICAgIHJhaXNlKCk7CisgICAgLy8gICAgfQorICAgIC8v
IGhpZGRlbiBtZWFucyBoaWRkZW4sIHdlJ2xsIGNsb3NlIHRoZSBjbGllbnQgYWZ0ZXJ3YXJkcy4K
KyAgICBpZiAoIHN0YXJ0SGlkZGVuICkKKyAgICB7CisgICAgICAgIHgyZ29FcnJvcmYoMyk8PCB0
cigiQXV0aGVudGljYXRpb24gZmFpbGVkOiAiKSArIGVycm9yOworICAgICAgICB0cmF5UXVpdCgp
OworICAgIH0KKwogICAgIFFNZXNzYWdlQm94Ojpjcml0aWNhbCAoIDBsLHRyICggIkF1dGhlbnRp
Y2F0aW9uIGZhaWxlZCIgKSxlcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWVz
c2FnZUJveDo6T2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6Ok5v
QnV0dG9uICk7CkBAIC0zMDAxLDE0ICszMDQ5LDYgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RT
c2hVc2VyQXV0aEVycm9yICggUVN0cmluZyBlcnJvciApCiAKIAogICAgIHBhc3NGb3JtLT5zZXRF
bmFibGVkICggdHJ1ZSApOwotICAgIGlmICggc3RhcnRIaWRkZW4gKQotICAgIHsKLSAgICAgICAg
c3RhcnRIaWRkZW49ZmFsc2U7Ci0gICAgICAgIHNsb3RSZXNpemUoKTsKLSAgICAgICAgc2hvdygp
OwotICAgICAgICBhY3RpdmF0ZVdpbmRvdygpOwotICAgICAgICByYWlzZSgpOwotICAgIH0KIH0K
IAogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RTZXNzRW50ZXIoKQpAQCAtMzAyMyw3ICszMDYzLDgg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RTZXNzRW50ZXIoKQogICAgIHsKICAgICAgICAgaWYg
KCFjb25maWcuYnJva2VyQXV0aGVudGljYXRlZCkKICAgICAgICAgewotICAgICAgICAgICAgeDJn
b0RlYnVnPDwic3RhcnRpbmcgYnJva2VyIHJlcXVlc3QiOworCisgICAgICAgICAgICB4MmdvRGVi
dWc8PCJTdGFydGluZyBicm9rZXIgcmVxdWVzdC4iOwogICAgICAgICAgICAgc2xvdFN0YXJ0QnJv
a2VyKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTMwNTYsNyArMzA5Nyw3
IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90U2Vzc0VudGVyKCkKIAogdm9pZCBPTk1haW5XaW5k
b3c6OmNvbnRpbnVlTm9ybWFsU2Vzc2lvbigpCiB7Ci0gICAgeDJnb0RlYnVnPDwiY29udGludWUg
bm9ybWFsIHgyZ28gc2Vzc2lvbiI8PGVuZGw7CisgICAgeDJnb0RlYnVnPDwiQ29udGludWUgbm9y
bWFsIHgyZ28gc2Vzc2lvbiI7CiAgICAgaWYgKGJyb2tlck1vZGUpCiAgICAgewogICAgICAgICBz
bG90TGlzdFNlc3Npb25zKHRydWUsUVN0cmluZzo6bnVsbCwwKTsKQEAgLTMyNDgsNyArMzI4OSw4
IEBAIGJvb2wgT05NYWluV2luZG93OjpzdGFydFNlc3Npb24gKCBjb25zdCBRU3RyaW5nJiBzaWQg
KQogICAgIGlmKGJyb2tlck1vZGUpCiAgICAgewogICAgICAgICBzc2hQb3J0PWNvbmZpZy5zc2hw
b3J0OwotICAgICAgICB4MmdvRGVidWc8PCJzZXJ2ZXI6ICI8PGhvc3Q7CisKKyAgICAgICAgeDJn
b0RlYnVnPDwiU2VydmVyOiAiPDxob3N0OwogICAgIH0KIAogICAgIFFTdHJpbmcgY21kPXN0LT5z
ZXR0aW5nKCktPnZhbHVlICggc2lkKyIvY29tbWFuZCIsCkBAIC0zMzk5LDkgKzM0NDEsMjQgQEAg
dm9pZCBPTk1haW5XaW5kb3c6OnNsb3RMaXN0U2Vzc2lvbnMgKCBib29sIHJlc3VsdCxRU3RyaW5n
IG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZTsKICAgICAgICAgfQogCi0gICAg
ICAgIFFNZXNzYWdlQm94Ojpjcml0aWNhbCAoIDBsLHRyICggIkVycm9yIiApLG1lc3NhZ2UsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpPaywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6Ok5vQnV0dG9uICk7CisgICAgICAg
IGlmICggIXN0YXJ0SGlkZGVuICkKKyAgICAgICAgeworICAgICAgICAgICAgUU1lc3NhZ2VCb3g6
OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpPaywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOworICAgICAgICB9CisgICAg
ICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgUVN0cmluZyBwcmludG91dCA9IHRyKCAi
Q29ubmVjdGlvbiBmYWlsZWQ6ICIpICArIG91dHB1dC50b0FzY2lpKCk7CisKKyAgICAgICAgICAg
IGlmICggb3V0cHV0LmluZGV4T2YgKCAicHVibGlja2V5LHBhc3N3b3JkIiApICE9LTEgKQorICAg
ICAgICAgICAgICAgIHgyZ29FcnJvcmYoNCk8PCB0ciggIkNvbm5lY3Rpb24gZmFpbGVkOiAiKSAg
KyBvdXRwdXQgKyB0cigiIC0gV3JvbmcgcGFzc3dvcmQuIik7CisgICAgICAgICAgICBlbHNlCisg
ICAgICAgICAgICAgICAgeDJnb0Vycm9yZig1KTw8IHRyKCAiQ29ubmVjdGlvbiBmYWlsZWQ6ICIp
ICArIG91dHB1dDsKKyAgICAgICAgICAgIHRyYXlRdWl0KCk7CisgICAgICAgIH0KKworCiAvLyAJ
CWN1cnJlbnRLZXk9UVN0cmluZzo6bnVsbDsKICAgICAgICAgc2V0RW5hYmxlZCAoIHRydWUgKTsK
ICAgICAgICAgcGFzc0Zvcm0tPnNldEVuYWJsZWQgKCB0cnVlICk7CkBAIC0zNDIwLDE3ICszNDc3
LDE2IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90TGlzdFNlc3Npb25zICggYm9vbCByZXN1bHQs
UVN0cmluZyBvdXRwdXQsCiAgICAgfQogICAgIGlmICggbWFuYWdlZE1vZGUgfHwgYnJva2VyTW9k
ZSApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJzZXNzIGRhdGE6Ijw8Y29uZmlnLnNlc3Np
b25kYXRhOworICAgICAgICB4MmdvRGVidWc8PCJTZXNzaW9uIGRhdGE6ICIgKyBjb25maWcuc2Vz
c2lvbmRhdGE7CiAgICAgICAgIGlmICggY29uZmlnLnNlc3Npb25kYXRhLmluZGV4T2YgKCAifFN8
IiApID09LTEgKQogICAgICAgICB7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCJzdGFydCBuZXcg
bWFuYWdlZCBzZXNzaW9uIjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlN0YXJ0aW5nIG5ldyBt
YW5hZ2VkIHNlc3Npb24uIjsKICAgICAgICAgICAgIHN0YXJ0TmV3U2Vzc2lvbigpOwogICAgICAg
ICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgICAgeDJnb1Nlc3Npb24gcz1n
ZXRTZXNzaW9uRnJvbVN0cmluZyAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25m
aWcuc2Vzc2lvbmRhdGEgKTsKLSAgICAgICAgICAgIHgyZ29EZWJ1Zzw8InJlc3VtaW5nIG1hbmFn
ZWQgc2Vzc2lvbjoiPDxzLnNlc3Npb25JZDsKKyAgICAgICAgICAgIHgyZ29TZXNzaW9uIHM9Z2V0
U2Vzc2lvbkZyb21TdHJpbmcgKGNvbmZpZy5zZXNzaW9uZGF0YSk7CisgICAgICAgICAgICB4Mmdv
RGVidWc8PCJSZXN1bWluZyBtYW5hZ2VkIHNlc3Npb24gd2l0aCBJZDogIiArIHMuc2Vzc2lvbklk
OwogICAgICAgICAgICAgcmVzdW1lU2Vzc2lvbiAoIHMgKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CkBAIC0zNzE4LDcgKzM3NzQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnROZXdT
ZXNzaW9uKCkKIAogICAgIFFTdHJpbmcgZ2VvbWV0cnk7CiAjaWZkZWYgUV9PU19XSU4KLSAgICB4
MmdvRGVidWc8PCJmdWxsc2NyZWVuOiAiPDxmdWxsc2NyZWVuOworCisgICAgeDJnb0RlYnVnPDwi
RnVsbHNjcmVlbjogIjw8ZnVsbHNjcmVlbjsKKwogICAgIG1heGltaXplUHJveHlXaW49ZmFsc2U7
CiAgICAgcHJveHlXaW5XaWR0aD13aWR0aDsKICAgICBwcm94eVdpbkhlaWdodD1oZWlnaHQ7CkBA
IC0zNzQwLDcgKzM3OTgsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnROZXdTZXNzaW9uKCkK
ICNpZmRlZiBRX09TX1dJTgogLy8gICAgICAgIGZ1bGxzY3JlZW49ZmFsc2U7CiAgICAgICAgIG1h
eGltaXplUHJveHlXaW49dHJ1ZTsKLSAgICAgICAgeDJnb0RlYnVnPDwibWF4aW1pemVQcm94eVdp
bjogIjw8bWF4aW1pemVQcm94eVdpbjsKKworICAgICAgICB4MmdvRGVidWc8PCJNYXhpbWl6ZSBw
cm94eSB3aW46ICI8PG1heGltaXplUHJveHlXaW47CisKICNlbmRpZgogICAgIH0KICAgICBpZiAo
ICEgZnVsbHNjcmVlbiApCkBAIC0zODQzLDcgKzM5MDMsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6
c3RhcnROZXdTZXNzaW9uKCkKICAgICAgICAgICAgICBzaGFkb3dVc2VyKyJYU0hBRCIrc2hhZG93
RGlzcGxheTsKICAgICB9CiAgICAgcmVzdW1pbmdTZXNzaW9uLmZ1bGxzY3JlZW49ZnVsbHNjcmVl
bjsKLSAgICB4MmdvRGVidWc8PGNtZDw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8IkV4ZWN1dGlu
ZyByZW1vdGUgY29tbWFuZDogIjw8Y21kOworCiAgICAgaWYgKCBtYW5hZ2VkTW9kZSApCiAgICAg
ewogICAgICAgICBzbG90UmV0UmVzdW1lU2VzcyAoIHRydWUsY29uZmlnLnNlc3Npb25kYXRhLDAg
KTsKQEAgLTQwMDcsNyArNDA2OSw4IEBAIHZvaWQgT05NYWluV2luZG93OjpyZXN1bWVTZXNzaW9u
ICggY29uc3QgeDJnb1Nlc3Npb24mIHMgKQogI2lmZGVmIFFfT1NfV0lOCiAvLyAgICAgICAgZnVs
bHNjcmVlbj1mYWxzZTsKICAgICAgICAgbWF4aW1pemVQcm94eVdpbj10cnVlOwotICAgICAgICB4
MmdvRGVidWc8PCJtYXhpbWl6ZVByb3h5V2luOiAiPDxtYXhpbWl6ZVByb3h5V2luOworCisgICAg
ICAgIHgyZ29EZWJ1Zzw8Ik1heGltaXplIHByb3h5IHdpbjogIjw8bWF4aW1pemVQcm94eVdpbjsK
IAogI2VuZGlmCiAgICAgfQpAQCAtNDA5OCwxMCArNDE2MSwxMCBAQCB2b2lkIE9OTWFpbldpbmRv
dzo6c2VsZWN0U2Vzc2lvbiAoIFFTdHJpbmdMaXN0JiBzZXNzaW9ucyApCiAgICAgc2V0RW5hYmxl
ZCAoIHRydWUgKTsKICAgICBzZXNzaW9uU3RhdHVzRGxnLT5oaWRlKCk7CiAgICAgcGFzc0Zvcm0t
PmhpZGUoKTsKLS8vIAl4MmdvRGVidWc8PCJjaGVjayB0eXBlIjsKKwogICAgIGlmICggIXNoYWRv
d1Nlc3Npb24gKQogICAgIHsKLS8vIAkJeDJnb0RlYnVnPDwiISBzaGFkb3ciOworICAgICAgICB4
MmdvRGVidWc8PCJObyBzaGFkb3cgc2Vzc2lvbi4iOwogICAgICAgICBpZiAoICFtaW5pTW9kZSAp
CiAgICAgICAgICAgICBzZWxlY3RTZXNEbGdMYXlvdXQtPnNldENvbnRlbnRzTWFyZ2lucyAoIDI1
LDI1LDEwLDEwICk7CiAKQEAgLTQxMTAsMTMgKzQxNzMsMTMgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OnNlbGVjdFNlc3Npb24gKCBRU3RyaW5nTGlzdCYgc2Vzc2lvbnMgKQogICAgICAgICBiVGVybS0+
c2hvdygpOwogICAgICAgICBzT2stPnNob3coKTsKICAgICAgICAgc0NhbmNlbC0+c2hvdygpOwot
Ly8gCQl4MmdvRGVidWc8PCJzdGFuZGFydCBidXR0b25zIG9rIjsKKwogICAgICAgICBkZXNrdG9w
RmlsdGVyLT5oaWRlKCk7CiAgICAgICAgIGRlc2t0b3BGaWx0ZXJDYi0+aGlkZSgpOwogICAgICAg
ICBiU2hhZG93LT5oaWRlKCk7CiAgICAgICAgIGJTaGFkb3dWaWV3LT5oaWRlKCk7CiAgICAgICAg
IGJDYW5jZWwtPmhpZGUoKTsKLS8vIAkJeDJnb0RlYnVnPDwic2hhZG93IGJ1dHRvbnMgb2siOwor
CiAvLyAJCW1vZGVsLT5jbGVhcigpOwogICAgICAgICBtb2RlbC0+cmVtb3ZlUm93cyAoIDAsbW9k
ZWwtPnJvd0NvdW50KCkgKTsKICAgICAgICAgc2VsZWN0U2Vzc2lvbkxhYmVsLT5zZXRUZXh0ICgg
dHIgKCAiU2VsZWN0IHNlc3Npb246IiApICk7CkBAIC00MTI0LDEwICs0MTg3LDkgQEAgdm9pZCBP
Tk1haW5XaW5kb3c6OnNlbGVjdFNlc3Npb24gKCBRU3RyaW5nTGlzdCYgc2Vzc2lvbnMgKQogICAg
ICAgICBRRm9udE1ldHJpY3MgZm0gKCBzZXNzVHYtPmZvbnQoKSApOwogICAgICAgICBmb3IgKCBp
bnQgcm93ID0gMDsgcm93IDwgc2Vzc2lvbnMuc2l6ZSgpOyArK3JvdyApCiAgICAgICAgIHsKLQot
Ly8gCQkJeDJnb0RlYnVnPDwiZGVjb2Rpbmcgc2Vzc2lvbnN0cjoiPDxzZXNzaW9uc1tyb3ddOwor
ICAgICAgICAgICAgeDJnb0RlYnVnPDwiRGVjb2RpbmcgU2Vzc2lvbnN0cmluZzoiICsgc2Vzc2lv
bnNbcm93XTsKICAgICAgICAgICAgIHgyZ29TZXNzaW9uIHM9Z2V0U2Vzc2lvbkZyb21TdHJpbmcg
KCBzZXNzaW9uc1tyb3ddICk7Ci0vLyAJCQl4MmdvRGVidWc8PCJsaXN0aW5nIGlkOiI8PHMuc2Vz
c2lvbklkOworCiAgICAgICAgICAgICBzZWxlY3RlZFNlc3Npb25zLmFwcGVuZCAoIHMgKTsKICAg
ICAgICAgICAgIFFTdGFuZGFyZEl0ZW0gKml0ZW07CiAKQEAgLTQ0MTIsMTMgKzQ0NzQsMTggQEAg
dm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUZXJtU2Vzc0Zyb21TdCgpCiAjaWZkZWYgUV9PU19MSU5V
WAogICAgIGlmIChkaXJlY3RSRFApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJ0ZXJtaW5h
dGluZyBkaXJlY3QgUkRQIHNlc3Npb24iOworCisgICAgICAgIHgyZ29EZWJ1Zzw8IlRlcm1pbmF0
aW5nIGRpcmVjdCBSRFAgc2Vzc2lvbi4iOworCiAgICAgICAgIG54cHJveHktPnRlcm1pbmF0ZSgp
OwogICAgICAgICBwcm94eVJ1bm5pbmc9ZmFsc2U7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAj
ZW5kaWYKLSAgICAvKgl4MmdvRGVidWcgPDwiZGlzY29ubmVjdCBleHBvcnQiPDxlbmRsOworCisg
ICAgeDJnb0RlYnVnPDwiRGlzY29ubmVjdCBleHBvcnQuIjsKKworICAgIC8qCiAgICAgCWRpc2Nv
bm5lY3QgKCBzYkV4cCxTSUdOQUwgKCBjbGlja2VkKCkgKSx0aGlzLAogICAgIAkgICAgICAgICAg
ICAgU0xPVCAoIHNsb3RfZXhwb3J0RGlyZWN0b3J5KCkgKSApOyovCiAgICAgc2JFeHAtPnNldEVu
YWJsZWQgKCBmYWxzZSApOwpAQCAtNDU2MCw3ICs0NjI3LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OnNsb3RSZXRSZXN1bWVTZXNzICggYm9vbCByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRU3RyaW5nIG91dHB1dCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCApCiB7Ci0gICAgeDJnb0RlYnVnPDwiQWdlbnQgb3V0cHV0OiI8
PG91dHB1dDsKKworICAgIHgyZ29EZWJ1Zzw8IkFnZW50IG91dHB1dDogIjw8b3V0cHV0OworCiAg
ICAgaWYgKCByZXN1bHQ9PWZhbHNlICkKICAgICB7CiAgICAgICAgIFFTdHJpbmcgbWVzc2FnZT10
ciAoICI8Yj5Db25uZWN0aW9uIGZhaWxlZDwvYj5cbiIgKSArb3V0cHV0OwpAQCAtNDcxNiwxNyAr
NDc4NSwyMyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFJldFJlc3VtZVNlc3MgKCBib29sIHJl
c3VsdCwKICAgICAgICAgICAgIGlmIChsaW5lLmluZGV4T2YoImdyX3BvcnQ9IikhPS0xKQogICAg
ICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VtaW5nU2Vzc2lvbi5nclBvcnQ9bGluZS5y
ZXBsYWNlKCJncl9wb3J0PSIsIiIpOwotICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Im5ldyBn
cl9wb3J0OiAiPDxyZXN1bWluZ1Nlc3Npb24uZ3JQb3J0PDxlbmRsOworCisgICAgICAgICAgICAg
ICAgeDJnb0RlYnVnPDwiTmV3IGdyX3BvcnQ6ICI8PHJlc3VtaW5nU2Vzc2lvbi5nclBvcnQ7CisK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChsaW5lLmluZGV4T2YoInNvdW5kX3BvcnQ9
IikhPS0xKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIHJlc3VtaW5nU2Vzc2lvbi5z
bmRQb3J0PWxpbmUucmVwbGFjZSgic291bmRfcG9ydD0iLCIiKTsKLSAgICAgICAgICAgICAgICB4
MmdvRGVidWc8PCJuZXcgc291bmRfcG9ydDogIjw8cmVzdW1pbmdTZXNzaW9uLnNuZFBvcnQ8PGVu
ZGw7CisKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJOZXcgc291bmRfcG9ydDogIjw8cmVz
dW1pbmdTZXNzaW9uLnNuZFBvcnQ7CisKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChs
aW5lLmluZGV4T2YoImZzX3BvcnQ9IikhPS0xKQogICAgICAgICAgICAgewogICAgICAgICAgICAg
ICAgIHJlc3VtaW5nU2Vzc2lvbi5mc1BvcnQ9bGluZS5yZXBsYWNlKCJmc19wb3J0PSIsIiIpOwot
ICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Im5ldyBmc19wb3J0OiAiPDxyZXN1bWluZ1Nlc3Np
b24uZnNQb3J0PDxlbmRsOworCisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiTmV3IGZzX3Bv
cnQ6ICI8PHJlc3VtaW5nU2Vzc2lvbi5mc1BvcnQ7CisKICAgICAgICAgICAgIH0KICAgICAgICAg
fQogICAgICAgICBpZiAocmVzdW1pbmdTZXNzaW9uLnB1Ymxpc2hlZCkKQEAgLTQ4MjcsMTMgKzQ5
MDIsMTMgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RSZXRSZXN1bWVTZXNzICggYm9vbCByZXN1
bHQsCiAgICAgICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgICAgIGlmICggc3lzUHVsc2UgKQot
CisgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgc3NoQ29ubmVjdGlvbi0+Y29weUZpbGUo
CiAgICAgICAgICAgICAgICAgICAgICIvdmFyL3J1bi9wdWxzZS8ucHVsc2UtY29va2llIiwKICAg
ICAgICAgICAgICAgICAgICAgIn4vLngyZ28vQy0iKwogICAgICAgICAgICAgICAgICAgICByZXN1
bWluZ1Nlc3Npb24uc2Vzc2lvbklkKwogICAgICAgICAgICAgICAgICAgICAiLy5wdWxzZS1jb29r
aWUiLCB0aGlzLCBTTE9UICggc2xvdFBDb29raWVSZWFkeSAoIGJvb2wsIFFTdHJpbmcsaW50ICkp
KTsKLQorICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgewogI2lm
bmRlZiBRX09TX1dJTgpAQCAtNDkzOCw3ICs1MDEzLDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RUdW5uZWxPayhpbnQpCiAgICAgLy93YWl0aW5nIGZvciBYCiAgICAgaWYgKCAhd2luU2VydmVy
c1JlYWR5ICkKICAgICB7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IndhaXRpbmcgZm9yIHdpbi1zZXJ2
ZXJzIjsKKworICAgICAgICB4MmdvRGVidWc8PCJXYWl0aW5nIGZvciB3aW4tc2VydmVycy4iOwor
CiAgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hvdCAoIDEwMCwgdGhpcywgU0xPVCAoIHNsb3RUdW5u
ZWxPaygpICkgKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQ5NTEsOSArNTAyOCwxMyBA
QCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFR1bm5lbE9rKGludCkKICAgICBpZiAoICFkLmV4aXN0
cygpICkKICAgICAgICAgaWYgKCAhZC5ta3BhdGggKCBkaXJwYXRoICkgKQogICAgICAgICB7Ci0g
ICAgICAgICAgICBRU3RyaW5nIG1lc3NhZ2U9dHIgKCAiVW5hYmxlIHRvIGNyZWF0ZSBmb2xkZXI6
IiApICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXJwYXRoOwotICAgICAgICAgICAg
UU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksbWVzc2FnZSwKKyAgICAg
ICAgICAgIGlmIChzdGFydEhpZGRlbikKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICB4
MmdvRXJyb3JmKDYpPDwgdHIoICJVbmFibGUgdG8gY3JlYXRlIGZvbGRlcjogIikgICsgZGlycGF0
aDsKKyAgICAgICAgICAgICAgICB0cmF5UXVpdCgpOworICAgICAgICAgICAgfQorCisgICAgICAg
ICAgICBRTWVzc2FnZUJveDo6Y3JpdGljYWwgKCAwbCx0ciAoICJFcnJvciIgKSwgdHIgKCAiVW5h
YmxlIHRvIGNyZWF0ZSBmb2xkZXI6ICIgKSArIGRpcnBhdGgsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6T2ssCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6Tm9CdXR0b24gKTsKICAgICAgICAgICAgIHNsb3RT
aG93UGFzc0Zvcm0oKTsKQEAgLTQ5NzcsOSArNTA1OCwxMyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6
c2xvdFR1bm5lbE9rKGludCkKICAgICBRRmlsZSBmaWxlICggZGlycGF0aCsiL29wdGlvbnMiICk7
CiAgICAgaWYgKCAhZmlsZS5vcGVuICggUUlPRGV2aWNlOjpXcml0ZU9ubHkgfCBRSU9EZXZpY2U6
OlRleHQgKSApCiAgICAgewotICAgICAgICBRU3RyaW5nIG1lc3NhZ2U9dHIgKCAiVW5hYmxlIHRv
IHdyaXRlIGZpbGU6IiApICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRpcnBhdGgrIi9vcHRp
b25zIjsKLSAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICks
bWVzc2FnZSwKKyAgICAgICAgaWYgKHN0YXJ0SGlkZGVuKQorICAgICAgICB7CisgICAgICAgICAg
ICB4MmdvRXJyb3JmKDcpPDwgdHIoICJVbmFibGUgdG8gd3JpdGUgZmlsZTogIiApICsgZGlycGF0
aCArICIvb3B0aW9ucyI7CisgICAgICAgICAgICB0cmF5UXVpdCgpOworICAgICAgICB9CisKKyAg
ICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksIHRyKCAiVW5h
YmxlIHRvIHdyaXRlIGZpbGU6ICIgKSArIGRpcnBhdGggKyAiL29wdGlvbnMiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6T2ssCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOwogICAgICAgICBzbG90U2hv
d1Bhc3NGb3JtKCk7CkBAIC01MDEwLDYgKzUwOTUsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xv
dFR1bm5lbE9rKGludCkKICAgICBmb3IgKCBpbnQgbD0wOyBsPGVudi5zaXplKCk7ICsrbCApCiAg
ICAgewogLy8gCQl4MmdvRGVidWc8PGVudltsXTw8ZW5kbDsKKwogICAgICAgICBpZiAoIGVudlts
XS5pbmRleE9mICggIlgyR09fTElCIiApID09MCApCiAgICAgICAgIHsKICAgICAgICAgICAgIHgy
Z29saWJwYXRoPWVudltsXS5zcGxpdCAoICI9IiApIFsxXTsKQEAgLTUwMzksMTMgKzUxMjUsMTcg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUdW5uZWxPayhpbnQpCiAgICAgaWYgKCBkaXNwSW5k
PT0tMSApCiAgICAgewogICAgICAgICBlbnYgPDwiRElTUExBWT1sb2NhbGhvc3Q6IitkaXNwOwor
CiAgICAgICAgIC8qCQl4MmdvRGVidWc8PCJuZXcgZW52IERJU1BMQVkiPDwiRElTUExBWT1sb2Nh
bGhvc3Q6IitkaXNwPDxlbmRsOyovCisKICAgICB9CiAgICAgZWxzZQogICAgIHsKICAgICAgICAg
ZW52W2Rpc3BJbmRdPSJESVNQTEFZPWxvY2FsaG9zdDoiK2Rpc3A7CisKICAgICAgICAgLyoJCXgy
Z29EZWJ1Zzw8ImV4aXN0aW5nIGVudiBESVNQTEFZKCI8PGRpc3BJbmQ8PAogICAgICAgICAJCSIp
IERJU1BMQVk9bG9jYWxob3N0OiIrZGlzcDw8ZW5kbDsqLworCiAgICAgfQogI2VuZGlmIC8vIFFf
T1NfV0lOCiAjaWYgZGVmaW5lZCAoIFFfT1NfREFSV0lOICkKQEAgLTUwNjIsMTcgKzUxNTIsMTQg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RUdW5uZWxPayhpbnQpCiAgICAgfQogICAgIGlmIChk
aXNwSW5kID09IC0xKQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnIDw8ICJObyBESVNQTEFZIHZh
cmlhYmxlIGZvdW5kIGluIGdsb2JhbCBlbnZpcm9ubWVudCwgdXNpbmcgYXV0b2RldGVjdGVkIHNl
dHRpbmcuIjsKKworICAgICAgICB4MmdvRGVidWc8PCAiTm8gRElTUExBWSB2YXJpYWJsZSBmb3Vu
ZCBpbiBnbG9iYWwgZW52aXJvbm1lbnQsIHVzaW5nIGF1dG9kZXRlY3RlZCBzZXR0aW5nLiI7CisK
ICAgICAgICAgZW52LmFwcGVuZCAoIkRJU1BMQVk9IiArIGRpc3ApOwogICAgIH0KICNlbmRpZgog
ICAgIG54cHJveHktPnNldEVudmlyb25tZW50ICggZW52ICk7Ci0gICAgLyoJeDJnb0RlYnVnPDwi
bmV3IGVudjoiPDxlbmRsOwotICAgIAlmb3IgKCBpbnQgbD0wO2w8ZW52LnNpemUoKTsrK2wgKQot
ICAgIAl7Ci0gICAgCQl4MmdvRGVidWc8PGVudltsXTw8ZW5kbDsKLSAgICAJfQotICAgIAl4Mmdv
RGVidWc8PCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyI8PGVuZGw7Ki8KKwogICAgIGNvbm5l
Y3QgKCBueHByb3h5LFNJR05BTCAoIGVycm9yICggUVByb2Nlc3M6OlByb2Nlc3NFcnJvciApICks
dGhpcywKICAgICAgICAgICAgICAgU0xPVCAoIHNsb3RQcm94eUVycm9yICggUVByb2Nlc3M6OlBy
b2Nlc3NFcnJvciApICkgKTsKICAgICBjb25uZWN0ICggbnhwcm94eSxTSUdOQUwgKCBmaW5pc2hl
ZCAoIGludCxRUHJvY2Vzczo6RXhpdFN0YXR1cyApICksdGhpcywKQEAgLTUwOTEsNyArNTE3OCw5
IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90VHVubmVsT2soaW50KQogICAgIGRpci5jZCAoICJl
eGUiICk7CiAgICAgcHJveHlDbWQ9IlwiIitkaXIuYWJzb2x1dGVQYXRoKCkgKyIvXCIiK3Byb3h5
Q21kOwogI2VuZGlmIC8vUV9PU19EQVJXSU4KLSAgICB4MmdvRGVidWc8PCJzdGFydGluZyBueHBy
b3h5IHdpdGg6ICI8PHByb3h5Q21kPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiU3RhcnRpbmcg
TlggcHJveHksIGNvbW1hbmQ6ICIgKyBwcm94eUNtZDsKKwogICAgIG54cHJveHktPnN0YXJ0ICgg
cHJveHlDbWQgKTsKICAgICBwcm94eVJ1bm5pbmc9dHJ1ZTsKIC8vYWx3YXlzIHNlYXJjaCBmb3Ig
cHJveHlXaW4KQEAgLTUyMTIsNyArNTMwMSw4IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90UHJv
eHlGaW5pc2hlZCAoIGludCxRUHJvY2Vzczo6RXhpdFN0YXR1cyApCiAgICAgaWYgKCBzcG9vbFRp
bWVyICkKICAgICAgICAgZGVsZXRlIHNwb29sVGltZXI7CiAKLSAgICB4MmdvRGVidWc8PCJkZWxl
dGluZyBwcm94eSI8PGVuZGw7CisgICAgeDJnb0RlYnVnPDwiRGVsZXRpbmcgUHJveHkuIiA7CisK
ICAgICBkaXNjb25uZWN0ICggbnhwcm94eSxTSUdOQUwgKCBlcnJvciAoIFFQcm9jZXNzOjpQcm9j
ZXNzRXJyb3IgKSApLHRoaXMsCiAgICAgICAgICAgICAgICAgIFNMT1QgKCBzbG90UHJveHlFcnJv
ciAoIFFQcm9jZXNzOjpQcm9jZXNzRXJyb3IgKSApICk7CiAgICAgZGlzY29ubmVjdCAoIG54cHJv
eHksU0lHTkFMICggZmluaXNoZWQgKCBpbnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKSApLHRoaXMs
CkBAIC01MjM3LDcgKzUzMjcsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFByb3h5RmluaXNo
ZWQgKCBpbnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgIGlmKHByb3h5RXJyU3RyaW5nLmlu
ZGV4T2YoIk5vIGRhdGEgcmVjZWl2ZWQgZnJvbSByZW1vdGUgcHJveHkiKSE9LTEpCiAgICAgewog
ICAgICAgICBlbWVyZ2VuY3lFeGl0PXRydWU7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IkVtZXJnZW5j
eSBleGl0Ijw8ZW5kbDsKKyAgICAgICAgeDJnb1dhcm5pbmdmKDQpPDwgdHIoICJFbWVyZ2VuY3kg
ZXhpdC4iICk7CiAgICAgfQogCiAjaWYgISAoZGVmaW5lZCAoQ0ZHUExVR0lOKSkKQEAgLTUyNDYs
MjEgKzUzMzYsMjIgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RQcm94eUZpbmlzaGVkICggaW50
LFFQcm9jZXNzOjpFeGl0U3RhdHVzICkKICAgICAgICAgaWYgKCBueHByb3h5LT5zdGF0ZSgpID09
UVByb2Nlc3M6OlJ1bm5pbmcgKQogICAgICAgICB7CiAgICAgICAgICAgICBlbWVyZ2VuY3lFeGl0
PXRydWU7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCJ3YWl0aW5nIGZvciBwcm94eSB0byBleGl0
Ijw8ZW5kbDsKKyAgICAgICAgICAgIHgyZ29XYXJuaW5nZig1KTw8IHRyKCAiV2FpdGluZyBmb3Ig
cHJveHkgdG8gZXhpdC4iICk7CiAgICAgICAgICAgICBpZiAoICFueHByb3h5LT53YWl0Rm9yRmlu
aXNoZWQgKCAzMDAwICkgKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHgyZ29EZWJ1
Zzw8IkZhaWxlZCwgdHJ5IHRvIGtpbGwiPDxlbmRsOworICAgICAgICAgICAgICAgIHgyZ29XYXJu
aW5nZig2KTw8IHRyKCAiRmFpbGVkLCBraWxsaW5nIHRoZSBwcm94eS4iICk7CiAgICAgICAgICAg
ICAgICAgbnhwcm94eS0+a2lsbCgpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAg
IHgyZ29EZWJ1Zzw8Im54cHJveHkgbm90IHJ1bm5pbmciPDxlbmRsOworCiAjaWZkZWYgUV9PU19M
SU5VWAogICAgICAgICBpZiAoZGlyZWN0UkRQKQogICAgICAgICAgICAgbnhwcm94eT0wOwogI2Vu
ZGlmCiAgICAgfQogI2VuZGlmCi0gICAgeDJnb0RlYnVnPDwicHJveHkgZGVsZXRlZCI8PGVuZGw7
CisgICAgeDJnb0RlYnVnPDwiV2FpdGluZyBmb3IgcHJveHkgdG8gZXhpdC4iOworCiAgICAgc3Bv
b2xUaW1lcj0wbDsKICAgICB0dW5uZWw9c25kVHVubmVsPWZzVHVubmVsPTBsOwogICAgIHNvdW5k
U2VydmVyPTBsOwpAQCAtNTI3OSwxNCArNTM3MCwxNCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xv
dFByb3h5RmluaXNoZWQgKCBpbnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgIGlmICggIWVt
ZXJnZW5jeUV4aXQgJiYgIXNoYWRvd1Nlc3Npb24gJiYgIXVzZVBHUENhcmQgJiYgISAoIGVtYmVk
TW9kZSAmJgogICAgICAgICAgICAgKCBjb25maWcuY2hlY2tleGl0c3RhdHVzPT1mYWxzZSApICkg
KQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwiY2hlY2tpbmcgZXhpdCBzdGF0dXMiOworICAg
ICAgICB4MmdvRGVidWc8PCJDaGVja2luZyBleGl0IHN0YXR1cy4iOwogICAgICAgICBjaGVja19j
bWRfc3RhdHVzKCk7CiAgICAgfQogICAgIGVsc2UKICAgICB7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8
ImRlbGV0aW5nIHNzaENvbm5lY3Rpb24gaW5zdGFuY2U6ICI8PGVuZGw7CisgICAgICAgIHgyZ29E
ZWJ1Zzw8IkRlbGV0aW5nIFNTSCBjb25uZWN0aW9uIGluc3RhbmNlLiI7CiAgICAgICAgIGRlbGV0
ZSBzc2hDb25uZWN0aW9uOwotICAgICAgICB4MmdvRGVidWc8PCJkb25lIjw8ZW5kbDsKKyAgICAg
ICAgeDJnb0RlYnVnPDwiRGVsZXRlZCAgU1NIIGNvbm5lY3Rpb24gaW5zdGFuY2UuIiA7CiAgICAg
ICAgIHNzaENvbm5lY3Rpb249MDsKICAgICB9CiAgICAgaWYgKCBzdGFydEhpZGRlbiApCkBAIC01
MzI0LDYgKzU0MTUsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFByb3h5RmluaXNoZWQgKCBp
bnQsUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgICAgICBzZXNzaW9uU3RhdHVzRGxnLT5oaWRl
KCk7CiAgICAgICAgIHJlc3VtZVNlc3Npb24gKCByZXN1bWluZ1Nlc3Npb24gKTsKICAgICB9Cisg
ICAgeDJnb0RlYnVnPDwiRmluaXNoZWQgUHJveHkuIjsKICAgICBzZXRTdGF0U3RhdHVzICggdHIg
KCAiRmluaXNoZWQiICkgKTsKIH0KIApAQCAtNTMzNCw3ICs1NDI2LDkgQEAgdm9pZCBPTk1haW5X
aW5kb3c6OnNsb3RQcm94eVN0ZGVycigpCiAgICAgaWYgKCBueHByb3h5ICkKICAgICAgICAgcmVz
ZXJyPSBueHByb3h5LT5yZWFkQWxsU3RhbmRhcmRFcnJvcigpOwogICAgIHByb3h5RXJyU3RyaW5n
Kz1yZXNlcnI7Ci0gICAgeDJnb0RlYnVnPDxyZXNlcnI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8
PCJQcm94eSB3cm90ZSBvbiBzdGRlcnI6ICI8PHJlc2VycjsKKwogICAgIHN0SW5mby0+aW5zZXJ0
UGxhaW5UZXh0ICggcmVzZXJyICk7CiAgICAgc3RJbmZvLT5lbnN1cmVDdXJzb3JWaXNpYmxlKCk7
CiAgICAgaWYgKCBzdEluZm8tPnRvUGxhaW5UZXh0KCkuaW5kZXhPZiAoCkBAIC01NDIxLDcgKzU1
MTUsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFByb3h5U3RkZXJyKCkKICNpZiBkZWZpbmVk
KCBRX09TX1dJTiApICYmIGRlZmluZWQgKENGR1BMVUdJTikKICAgICBpZiAoIHJlc2Vyci5pbmRl
eE9mICggIlNlc3Npb24gdGVybWluYXRlZCBhdCIgKSAhPS0xICkKICAgICB7Ci0gICAgICAgIHgy
Z29EZWJ1Zzw8InByb3h5IGZpbmlzaGVkIjw8ZW5kbDsKKworICAgICAgICB4MmdvRGVidWc8PCJQ
cm94eSBmaW5pc2hlZC4iOworCiAgICAgICAgIHNsb3RQcm94eUZpbmlzaGVkICggMCwgUVByb2Nl
c3M6Ok5vcm1hbEV4aXQgKTsKICAgICB9CiAjZW5kaWYKQEAgLTU0MzMsOCArNTUyOSw4IEBAIHZv
aWQgT05NYWluV2luZG93OjpzbG90UHJveHlTdGRlcnIoKQogdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RQcm94eVN0ZG91dCgpCiB7CiAgICAgUVN0cmluZyByZXNvdXQgKCBueHByb3h5LT5yZWFkQWxs
U3RhbmRhcmRPdXRwdXQoKSApOwotICAgIHgyZ29EZWJ1Zzw8cmVzb3V0PDxlbmRsOwogCisgICAg
eDJnb0RlYnVnPDwiUHJveHkgd3JvdGUgb24gc3Rkb3V0OiAiPDxyZXNvdXQ7CiB9CiAKIApAQCAt
NTU4OCw3ICs1Njg0LDcgQEAgYm9vbCBPTk1haW5XaW5kb3c6OnRlcm1TZXNzaW9uICggUVN0cmlu
ZyBzZXNzSWQsIGJvb2wgd2FybiApCiAgICAgICAgIG54cHJveHktPnRlcm1pbmF0ZSgpOwogICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICB9Ci0KKyAgICB4MmdvRGVidWc8PCJUZXJtaW5hdGluZyBz
ZXNzaW9uLiI7CiAgICAgc3NoQ29ubmVjdGlvbi0+ZXhlY3V0ZUNvbW1hbmQgKCAieDJnb3Rlcm1p
bmF0ZS1zZXNzaW9uICIrc2Vzc0lkLCB0aGlzLCBTTE9UICggc2xvdFJldFRlcm1TZXNzICggYm9v
bCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcsaW50KSApICAp
OwogICAgIHByb3h5UnVubmluZz1mYWxzZTsKQEAgLTU5NzAsMTMgKzYwNjYsMTUgQEAgdm9pZCBP
Tk1haW5XaW5kb3c6OnNsb3RSZWFkQXBwbGljYXRpb25zKGJvb2wgcmVzdWx0LCBRU3RyaW5nIG91
dHB1dCwKICAgICAgICAgICAgIGlmIChsaW5lLmluZGV4T2YoIk5hbWVbIitsb2NhbHNob3J0KyJd
PSIpIT0tMSAgfHwgbGluZS5pbmRleE9mKCJOYW1lWyIrbG9jYWxsb25nKyJdPSIpIT0tMSkKICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBhcHAubmFtZT1RU3RyaW5nOjpmcm9tVXRmOChs
aW5lLnNwbGl0KCI9IilbMV0udG9Bc2NpaSgpKTsKLS8vICAgICAgICAgICAgICAgICB4MmdvRGVi
dWc8PCJsb2NhbCBuYW1lOiAiPDxhcHAubmFtZTw8ZW5kbDsKKworICAgICAgICAgICAgICAgIC8v
ICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJsb2NhbCBuYW1lOiAiPDxhcHAubmFtZTw8ZW5k
bDsKKwogICAgICAgICAgICAgICAgIGxvY2FsbmFtZT10cnVlOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgaWYgKGxpbmUuaW5kZXhPZigiQ29tbWVudFsiK2xvY2Fsc2hvcnQrIl09IikhPS0x
IHx8IGxpbmUuaW5kZXhPZigiQ29tbWVudFsiK2xvY2FsbG9uZysiXT0iKSE9LTEpCiAgICAgICAg
ICAgICB7CiAgICAgICAgICAgICAgICAgYXBwLmNvbW1lbnQ9UVN0cmluZzo6ZnJvbVV0ZjgobGlu
ZS5zcGxpdCgiPSIpWzFdLnRvQXNjaWkoKSk7Ci0vLyAgICAgICAgICAgICAgICAgeDJnb0RlYnVn
PDwibG9jYWwgY29tbWVudDogIjw8YXBwLmNvbW1lbnQ8PGVuZGw7CisgICAgICAgICAgICAgICAg
Ly8gICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8ImxvY2FsIGNvbW1lbnQ6ICI8PGFwcC5jb21t
ZW50PDxlbmRsOwogICAgICAgICAgICAgICAgIGxvY2FsY29tbWVudD10cnVlOwogICAgICAgICAg
ICAgfQogICAgICAgICAgICAgaWYgKGxpbmUuaW5kZXhPZigiTmFtZT0iKSE9LTEgJiYgIWxvY2Fs
bmFtZSkKQEAgLTU5ODQsMTIgKzYwODIsMTIgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RSZWFk
QXBwbGljYXRpb25zKGJvb2wgcmVzdWx0LCBRU3RyaW5nIG91dHB1dCwKICAgICAgICAgICAgICAg
ICBhcHAubmFtZT1saW5lLnNwbGl0KCI9IilbMV07CiAgICAgICAgICAgICAgICAgaWYgKGFwcC5u
YW1lPT1hdXRvc3RhcnRBcHApCiAgICAgICAgICAgICAgICAgICAgIHN0YXJ0QXBwRm91bmQ9dHJ1
ZTsKLS8vICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJuYW1lOiAiPDxhcHAubmFtZTw8ZW5k
bDsKKyAgICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwibmFtZTog
Ijw8YXBwLm5hbWU8PGVuZGw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGluZS5p
bmRleE9mKCJDb21tZW50PSIpIT0tMSAmJiAhbG9jYWxjb21tZW50KQogICAgICAgICAgICAgewog
ICAgICAgICAgICAgICAgIGFwcC5jb21tZW50PWxpbmUuc3BsaXQoIj0iKVsxXTsKLS8vICAgICAg
ICAgICAgICAgICB4MmdvRGVidWc8PCJjb21tZW50OiAiPDxhcHAuY29tbWVudDw8ZW5kbDsKKyAg
ICAgICAgICAgICAgICAvLyAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiY29tbWVudDogIjw8
YXBwLmNvbW1lbnQ8PGVuZGw7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpZiAobGluZS5p
bmRleE9mKCJFeGVjPSIpIT0tMSkKICAgICAgICAgICAgIHsKQEAgLTYwMDAsNyArNjA5OCw3IEBA
IHZvaWQgT05NYWluV2luZG93OjpzbG90UmVhZEFwcGxpY2F0aW9ucyhib29sIHJlc3VsdCwgUVN0
cmluZyBvdXRwdXQsCiAgICAgICAgICAgICAgICAgYXBwLmV4ZWMucmVwbGFjZSgiJXUiLCIiLFF0
OjpDYXNlSW5zZW5zaXRpdmUpOwogICAgICAgICAgICAgICAgIGlmIChhcHAuZXhlYz09YXV0b3N0
YXJ0QXBwKQogICAgICAgICAgICAgICAgICAgICBzdGFydEFwcEZvdW5kPXRydWU7Ci0vLyAgICAg
ICAgICAgICAgICAgeDJnb0RlYnVnPDwiZXhlYzogIjw8YXBwLmV4ZWM8PGVuZGw7CisgICAgICAg
ICAgICAgICAgLy8gICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8ImV4ZWM6ICI8PGFwcC5leGVj
PDxlbmRsOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGxpbmUuaW5kZXhPZigiQ2F0
ZWdvcmllcz0iKSE9LTEpCiAgICAgICAgICAgICB7CkBAIC02MDY3LDEwICs2MTY1LDEzIEBAIHZv
aWQgT05NYWluV2luZG93OjpzbG90UmVhZEFwcGxpY2F0aW9ucyhib29sIHJlc3VsdCwgUVN0cmlu
ZyBvdXRwdXQsCiAgICAgcGx1Z0FwcHNJblRyYXkoKTsKICAgICBpZiAocnVuU3RhcnRBcHAgJiYg
YXV0b3N0YXJ0QXBwLmxlbmd0aCgpPjEpCiAgICAgewotICAgICAgICBpZiAoIXN0YXJ0QXBwRm91
bmQpCi0gICAgICAgICAgICB4MmdvRGVidWc8PCJBdXRvc3RhcnQgYXBwbGljYXRpb24gIjw8YXV0
b3N0YXJ0QXBwPDwgIiBub3QgZm91bmQgaW4gRGVza3RvcCBmaWxlcyI8PGVuZGw7CisgICAgICAg
IGlmICghc3RhcnRBcHBGb3VuZCkgeworICAgICAgICAgICAgeDJnb0RlYnVnPDwiQXV0b3N0YXJ0
IGFwcGxpY2F0aW9uICI8PGF1dG9zdGFydEFwcDw8ICIgbm90IGZvdW5kIGluIERlc2t0b3AgZmls
ZXMuIjsKKyAgICAgICAgfQogICAgICAgICBlbHNlCisgICAgICAgIHsKICAgICAgICAgICAgIHJ1
bkFwcGxpY2F0aW9uKGF1dG9zdGFydEFwcCk7CisgICAgICAgIH0KICAgICB9CiB9CiAKQEAgLTYw
ODksNiArNjE5MCwxMiBAQCBib29sIE9OTWFpbldpbmRvdzo6cGFyc2VQYXJhbWV0ZXIgKCBRU3Ry
aW5nIHBhcmFtICkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAorICAgIGlmIChwYXJh
bSA9PSAiLS1kZWJ1ZyIpCisgICAgeworICAgICAgICBPTk1haW5XaW5kb3c6OmRlYnVnZ2luZyA9
IHRydWU7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIGlmICggcGFyYW0gPT0g
Ii0tcG9ydGFibGUiICkKICAgICB7CiAgICAgICAgIE9OTWFpbldpbmRvdzo6cG9ydGFibGU9dHJ1
ZTsKQEAgLTY0MDMsMTAgKzY1MTAsMTEgQEAgYm9vbCBPTk1haW5XaW5kb3c6OnBhcnNlUGFyYW1l
dGVyICggUVN0cmluZyBwYXJhbSApCiAgICAgICAgIGlmIChmaW5kIT0tMSAmJiBsaW5kICE9LTEp
CiAgICAgICAgIHsKICAgICAgICAgICAgIFFTdHJpbmcgbGFiZWw9dmFsdWUubWlkKGZpbmQrMSxs
aW5kLWZpbmQtMSk7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCAic2VhcmNoaW5nIGZvciBkcml2
ZSB3aXRoIGxhYmVsOiAiPDxsYWJlbDsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlNlYXJjaGlu
ZyBmb3IgZHJpdmUgd2l0aCBsYWJlbDogIjw8bGFiZWw7CisKICAgICAgICAgICAgIFFTdHJpbmcg
ZHJpdmU9d2FwaUdldERyaXZlQnlMYWJlbChsYWJlbCk7CiAgICAgICAgICAgICB2YWx1ZS5yZXBs
YWNlKCIoIitsYWJlbCsiKSIsZHJpdmUpOwotICAgICAgICAgICAgeDJnb0RlYnVnPDwibmV3IHBh
dGg6ICI8PHZhbHVlOworICAgICAgICAgICAgeDJnb0RlYnVnPDwiTmV3IHBhdGg6ICI8PHZhbHVl
OwogICAgICAgICB9CiAjZW5kaWYKICAgICAgICAgaWYgKCEgZHIuZXhpc3RzKHZhbHVlKSkKQEAg
LTY2MjMsMTEgKzY3MzEsMTUgQEAgYm9vbCBPTk1haW5XaW5kb3c6OnBhY2tQYXJhbWV0ZXIgKCBR
U3RyaW5nIHZhbCApCiAKIHZvaWQgT05NYWluV2luZG93OjpwcmludEVycm9yICggUVN0cmluZyBw
YXJhbSApCiB7Ci0gICAgcUNyaXRpY2FsICggIiVzIiwgKCB0ciAoICJ3cm9uZyBwYXJhbWV0ZXI6
ICIgKSArcGFyYW0gKS4KLSAgICAgICAgICAgICAgICB0b0xvY2FsOEJpdCgpLmRhdGEoKSApOwot
I2lmZGVmIFFfT1NfV0lOCi0gICAgeDJnb0RlYnVnPDx0ciAoICJ3cm9uZyBwYXJhbWV0ZXI6ICIg
KSArcGFyYW0gPDxlbmRsOwotI2VuZGlmCisgICAgaWYoICFzdGFydEhpZGRlbiApCisgICAgewor
ICAgICAgICBxQ3JpdGljYWwgKCAiJXMiLCAoIHRyICggIldyb25nIHBhcmFtZXRlcjogIiApICtw
YXJhbSApLgorICAgICAgICAgICAgICAgICAgICB0b0xvY2FsOEJpdCgpLmRhdGEoKSApOworICAg
IH0KKyAgICBlbHNlCisgICAgeworICAgICAgICB4MmdvRXJyb3JmKDgpPDx0cigiV3JvbmcgcGFy
YW1ldGVyOiAiKTw8cGFyYW07CisgICAgfQogfQogCiB2b2lkIE9OTWFpbldpbmRvdzo6c2hvd0hl
bHAoKQpAQCAtNjYzNyw2ICs2NzQ5LDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNob3dIZWxwKCkK
ICAgICAgICAgIk9wdGlvbnM6XG4iCiAgICAgICAgICItLWhlbHBcdFx0XHRcdCBzaG93IHRoaXMg
bWVzc2FnZVxuIgogICAgICAgICAiLS1oZWxwLXBhY2tcdFx0XHQgc2hvdyBhdmFpbGFibGUgcGFj
ayBtZXRob2RzXG4iCisgICAgICAgICItLWRlYnVnXHRcdFx0XHQgZW5hYmxlcyBleHRlbnNpdmUg
b3V0cHV0IGZvciBjb25zb2xlIG91dHB1dC5cbiIKICAgICAgICAgIi0tbm8tbWVudVx0XHRcdCBo
aWRlIG1lbnUgYmFyXG4iCiAgICAgICAgICItLW5vLXNlc3Npb24tZWRpdFx0XHQgbm90IGFsbG93
IHVzZXIgdG8gZWRpdCBwcmVjb25maWd1cmVkXG4iCiAgICAgICAgICJcdFx0XHRcdCBzZXNzaW9u
c1xuIgpAQCAtNjY2MSw3ICs2Nzc0LDcgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNob3dIZWxwKCkK
ICAgICAgICAgIi0tY29tbWFuZD08Y21kPlx0XHRcdCBTZXQgZGVmYXVsdCBjb21tYW5kLCBkZWZh
dWx0IHZhbHVlICdLREUnXG4iCiAgICAgICAgICItLXNlc3Npb249PHNlc3Npb24+XHRcdCBTdGFy
dCBzZXNzaW9uICdzZXNzaW9uJ1xuIgogICAgICAgICAiLS11c2VyPTx1c2VybmFtZT5cdFx0IHNl
bGVjdCB1c2VyICd1c2VybmFtZSdcbiIKLSAgICAgICAgIi0tZ2VvbWVydHk9PFc+eDxIPnxmdWxs
c2NyZWVuXHQgc2V0IGRlZmF1bHQgZ2VvbWV0cnksIGRlZmF1bHQgIgorICAgICAgICAiLS1nZW9t
ZXRyeT08Vz54PEg+fGZ1bGxzY3JlZW5cdCBzZXQgZGVmYXVsdCBnZW9tZXRyeSwgZGVmYXVsdCAi
CiAgICAgICAgICJ2YWx1ZSAnODAweDYwMCdcbiIKICAgICAgICAgIi0tZHBpPTxkcGk+XHRcdFx0
IHNldCBkcGkgb2YgeDJnb2FnZW50IHRvIGRwaSwgZGVmYXVsdCBub3Qgc2V0XG4iCiAgICAgICAg
ICItLWxpbms9PG1vZGVtfGlzZG58YWRzbHx3YW58bGFuPiBzZXQgZGVmYXVsdCBsaW5rIHR5cGUs
ICIKQEAgLTY2NzcsNyArNjc5MCwxMCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2hvd0hlbHAoKQog
ICAgICAgICAiYXBwbGljYXRpb25zXCIgbW9kZVxuIgogICAgICAgICAiLS1zZXNzaW9uLWNvbmY9
PGZpbGU+XHRcdCBwYXRoIHRvIGFsdGVybmF0aXZlIHNlc3Npb24gY29uZmlnXG4iOwogICAgIHFD
cml0aWNhbCAoICIlcyIsaGVscE1zZy50b0xvY2FsOEJpdCgpLmRhdGEoKSApOwotICAgIFFNZXNz
YWdlQm94OjppbmZvcm1hdGlvbiAoIHRoaXMsdHIgKCAiT3B0aW9ucyIgKSxoZWxwTXNnICk7Cisg
ICAgaWYgKCFzdGFydEhpZGRlbikKKyAgICB7CisgICAgICAgIFFNZXNzYWdlQm94OjppbmZvcm1h
dGlvbiAoIHRoaXMsdHIgKCAiT3B0aW9ucyIgKSxoZWxwTXNnICk7CisgICAgfQogfQogCiB2b2lk
IE9OTWFpbldpbmRvdzo6c2hvd0hlbHBQYWNrKCkKQEAgLTY3NDksMTAgKzY4NjUsMTIgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnNsb3RHZXRTZXJ2ZXJzICggYm9vbCByZXN1bHQsIFFTdHJpbmcgb3V0
cHV0LAogICAgICAgICAgICAgICAgICAgICB4MmdvU2VydmVyc1tqXS5zZXNzPQogICAgICAgICAg
ICAgICAgICAgICAgICAgbHN0WzFdLnRvSW50KCkgKgogICAgICAgICAgICAgICAgICAgICAgICAg
eDJnb1NlcnZlcnNbal0uZmFjdG9yOworCiAgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
eDJnb1NlcnZlcnNbal0ubmFtZTw8CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI6IHNl
c3Npb25zICI8PAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsc3RbMV0udG9JbnQoKSA8
PAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCBtdWx0aXBsaWVkICI8PHgyZ29TZXJ2
ZXJzW2pdLnNlc3M7CisKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICB9CkBAIC02ODI2LDIyICs2OTQ0LDI2IEBAIHZvaWQgT05NYWluV2luZG93
OjpzbG90TGlzdEFsbFNlc3Npb25zICggYm9vbCByZXN1bHQsUVN0cmluZyBvdXRwdXQsCiAgICAg
ICAgICAgICAgICAgKCBsaXN0ZWRTZXNzaW9ucy5zaXplKCkgPT0xICYmCiAgICAgICAgICAgICAg
ICAgICBsaXN0ZWRTZXNzaW9uc1swXS5sZW5ndGgoKSA8NSApICkKICAgICAgICAgewotLy8gCXgy
Z29EZWJ1Zzw8InN0YXJ0IE5ldyBTZXNzaW9uIjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlN0
YXJ0IG5ldyBzZXNzaW9uLiI7CiAgICAgICAgICAgICBzdGFydE5ld1Nlc3Npb24oKTsKICAgICAg
ICAgfQogICAgICAgICBlbHNlIGlmICggbGlzdGVkU2Vzc2lvbnMuc2l6ZSgpID09MSApCiAgICAg
ICAgIHsKLS8vIAl4MmdvRGVidWc8PCJoYXZlIG9uZSBzZXNzaW9uIjsKKyAgICAgICAgICAgIHgy
Z29EZWJ1Zzw8IkFscmVhZHkgaGF2aW5nIGEgc2Vzc2lvbi4iOwogICAgICAgICAgICAgeDJnb1Nl
c3Npb24gcz1nZXRTZXNzaW9uRnJvbVN0cmluZyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaXN0ZWRTZXNzaW9uc1swXSApOwotLy8gCQl4MmdvRGVidWc8PCJ3aWxsIHByb2NjZWVk
IG9uZSBzZXNzaW9uIjsKKworICAgICAgICAgICAgeDJnb0RlYnVnPDwiV2lsbCBwcm9jY2VlZCB3
aXRoIHNlc3Npb24uIjsKKwogICAgICAgICAgICAgUURlc2t0b3BXaWRnZXQgd2Q7CiAgICAgICAg
ICAgICBpZiAoIHMuc3RhdHVzPT0iUyIgJiYgaXNDb2xvckRlcHRoT2sgKAogICAgICAgICAgICAg
ICAgICAgICAgICAgd2QuZGVwdGgoKSxzLmNvbG9yRGVwdGggKSApCisgICAgICAgICAgICB7CiAg
ICAgICAgICAgICAgICAgcmVzdW1lU2Vzc2lvbiAoIHMgKTsKKyAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGVsc2UKICAgICAgICAgICAgIHsKLS8vIAkJCQl4MmdvRGVidWc8PCJzZWxlY3Qgb25l
IFNlc3Npb24iOworICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlBsZWFzZSBzZWxlY3Qgb25l
IHNlc3Npb24uLi4iOwogICAgICAgICAgICAgICAgIHNlbGVjdFNlc3Npb24gKCBsaXN0ZWRTZXNz
aW9ucyApOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC02OTI2LDcgKzcwNDgsOCBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6ZXhwb3J0RGlycyAoIFFTdHJpbmcgZXhwb3J0cyxib29sIHJlbW92
YWJsZSApCiAgICAgZHIuZGlyTGlzdD1leHBvcnRzOwogICAgIGRyLmtleT1jcmVhdGVSU0FLZXko
KTsKICAgICBRU3RyaW5nIHBhc3N3ZDsKLSAgICB4MmdvRGVidWc8PCJrZXkgY3JlYXRlZCBvbjog
Ijw8ZHIua2V5OworCisgICAgeDJnb0RlYnVnPDwiS2V5IGNyZWF0ZWQgb246ICI8PGRyLmtleTsK
IAogICAgIHBhc3N3ZD1nZXRDdXJyZW50UGFzcygpOwogCkBAIC03MDkzLDE1ICs3MjE2LDE3IEBA
IFFTdHJpbmcgT05NYWluV2luZG93OjpjcmVhdGVSU0FLZXkoKQogCiAgICAgUVN0cmluZ0xpc3Qg
YXJnczsKIAotICAgIGFyZ3M8PCItdCI8PCJyc2EiPDwiLWIiPDwiMTAyNCI8PCItTiI8PCIiPDwi
LWYiPDxrZXlOYW1lOwotLy8gCXgyZ29EZWJ1ZyA8PGtleU5hbWU8PGVuZGw7CisgICAgYXJnczw8
Ii10Ijw8InJzYSI8PCItYiI8PCIxMDI0Ijw8Ii1OIjw8IiI8PCItZiI8PGtleU5hbWU8PCItcSI7
CisKKyAgICB4MmdvRGVidWc8PCJzc2gta2V5Z2VuICIgKyBhcmdzLmpvaW4oIiAiKTsKIAogICAg
IGlmICggUVByb2Nlc3M6OmV4ZWN1dGUgKCAic3NoLWtleWdlbiIsYXJncyApICE9MCApCiAgICAg
ewotICAgICAgICB4MmdvRGVidWcgPDwic3NoLWtleWdlbiBmYWlsZWQiIDw8ZW5kbDsKKyAgICAg
ICAgeDJnb0RlYnVnPDwic3NoLWtleWdlbiBmYWlsZWQuIiA8PGVuZGw7CiAgICAgICAgIHJldHVy
biBRU3RyaW5nOjpudWxsOwogICAgIH0KLS8vIAl4MmdvRGVidWcgPDwic3NoLWtleWdlbiBvayIg
PDxlbmRsOworICAgIHgyZ29EZWJ1Zzw8InNzaC1rZXlnZW4gc3VjY2VlZGVkLiI7CisKIAogICAg
IFFGaWxlIHJzYSAoICIvZXRjL3NzaC9zc2hfaG9zdF9yc2Ffa2V5LnB1YiIgKTsKICNpZmRlZiBR
X09TX1dJTgpAQCAtNzEzNyw3ICs3MjYyLDcgQEAgUVN0cmluZyBPTk1haW5XaW5kb3c6OmNyZWF0
ZVJTQUtleSgpCiAgICAgICAgIHJzYV9wdWIgPSByc2EucmVhZExpbmUoKTsKICAgICBlbHNlCiAg
ICAgewotICAgICAgICB4MmdvRGVidWc8PCJlcnJvcjogcnNhIGZpbGUgZW1wdHkiOworICAgICAg
ICB4MmdvRXJyb3JmKDkpPDx0cigiUlNBIGZpbGUgZW1wdHkuIik7CiAgICAgICAgIHJldHVybiBR
U3RyaW5nOjpudWxsOwogICAgIH0KIApAQCAtNzE0Niw3ICs3MjcxLDcgQEAgUVN0cmluZyBPTk1h
aW5XaW5kb3c6OmNyZWF0ZVJTQUtleSgpCiAgICAgICAgICAgICAgICAgUUlPRGV2aWNlOjpXcml0
ZU9ubHkgfCBRSU9EZXZpY2U6OlRleHQgfCBRSU9EZXZpY2U6OkFwcGVuZCApCiAgICAgICAgKQog
ICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwiZXJyb3Igb3Blbm5pbmcga2V5OiI8PGtleU5hbWU7
CisgICAgICAgIHgyZ29FcnJvcmYoMTApPDx0cigiQ2FuIG5vdCBvcGVuIGtleTogIik8PGtleU5h
bWU7CiAgICAgICAgIHJldHVybiBrZXlOYW1lOwogICAgIH0KICAgICBRVGV4dFN0cmVhbSBvdXQg
KCAmZmlsZSApOwpAQCAtNzE1OCw5ICs3MjgzLDEyIEBAIFFTdHJpbmcgT05NYWluV2luZG93Ojpj
cmVhdGVSU0FLZXkoKQogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDb3B5S2V5ICggYm9vbCByZXN1
bHQsIFFTdHJpbmcgb3V0cHV0LCBpbnQgcGlkKQogewogICAgIGZzRXhwb3J0S2V5PXNzaENvbm5l
Y3Rpb24tPmdldFNvdXJjZUZpbGUocGlkKTsKLSAgICB4MmdvRGVidWc8PCJleHBvcnRlZCBrZXkg
Ijw8ZnNFeHBvcnRLZXk7CisKKyAgICB4MmdvRGVidWc8PCJFeHBvcnRlZCBrZXk6ICI8PGZzRXhw
b3J0S2V5OworCiAgICAgUUZpbGU6OnJlbW92ZSAoIGZzRXhwb3J0S2V5ICk7Ci0gICAgeDJnb0Rl
YnVnPDwia2V5IHJlbW92ZWQiOworICAgIHgyZ29EZWJ1Zzw8IktleSByZW1vdmVkLiI7CisKICAg
ICBpZiAoIHJlc3VsdD09ZmFsc2UgKQogICAgIHsKICAgICAgICAgUVN0cmluZyBtZXNzYWdlPXRy
ICggIjxiPkNvbm5lY3Rpb24gZmFpbGVkPC9iPlxuIiApICtvdXRwdXQ7CkBAIC03MTcwLDkgKzcy
OTgsMjMgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDb3B5S2V5ICggYm9vbCByZXN1bHQsIFFT
dHJpbmcgb3V0cHV0LCBpbnQgcGlkKQogICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOwogICAg
ICAgICB9CiAKLSAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3Ii
ICksbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUU1lc3NhZ2VCb3g6
Ok9rLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRTWVzc2FnZUJveDo6Tm9CdXR0
b24gKTsKKyAgICAgICAgaWYgKCFzdGFydEhpZGRlbikKKyAgICAgICAgeworICAgICAgICAgICAg
UU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGwsdHIgKCAiRXJyb3IiICksbWVzc2FnZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpPaywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOworICAg
ICAgICB9CisgICAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgUVN0cmluZyBwcmlu
dG91dCA9IHRyKCAiQ29ubmVjdGlvbiBmYWlsZWQ6ICIpICArIG91dHB1dC50b0FzY2lpKCk7CisK
KyAgICAgICAgICAgIGlmICggb3V0cHV0LmluZGV4T2YgKCAicHVibGlja2V5LHBhc3N3b3JkIiAp
ICE9LTEgKQorICAgICAgICAgICAgICAgIHgyZ29FcnJvcmYoMTEpPDwgdHIoICJDb25uZWN0aW9u
IGZhaWxlZDogIikgICsgb3V0cHV0ICsgdHIoIiAtIFdyb25nIHBhc3N3b3JkLiIpOworICAgICAg
ICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHgyZ29FcnJvcmYoMTIpPDwgdHIoICJDb25uZWN0
aW9uIGZhaWxlZDogIikgICsgb3V0cHV0OworICAgICAgICAgICAgdHJheVF1aXQoKTsKKyAgICAg
ICAgfQorCiAgICAgICAgIFFGaWxlOjpyZW1vdmUgKCBmc0V4cG9ydEtleSsiLnB1YiIgKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTcyNDAsNyArNzM4Miw5IEBAIHZvaWQgT05NYWluV2lu
ZG93OjpzbG90UmV0RXhwb3J0RGlyICggYm9vbCByZXN1bHQsUVN0cmluZyBvdXRwdXQsCiAjaWZk
ZWYgUV9PU19XSU4KICAgICBRRGlyIGRpcjsKICAgICBkaXIubWtwYXRoICggYXV0aG9mbmFtZSsi
XFwueDJnb1xcLnNzaCIgKTsKLSAgICB4MmdvRGVidWc8PCJDcmVhdGluZyAiPDxhdXRob2ZuYW1l
KyJcXC54MmdvXFwuc3NoIjw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8IkNyZWF0aW5nICI8PGF1
dGhvZm5hbWUrIlxcLngyZ29cXC5zc2giOworCiAgICAgYXV0aG9mbmFtZT13YXBpU2hvcnRGaWxl
TmFtZSAoIGF1dGhvZm5hbWUgKSArIi8ueDJnbyI7CiAjZW5kaWYKICAgICBhdXRob2ZuYW1lKz0i
Ly5zc2gvYXV0aG9yaXplZF9rZXlzIiA7CkBAIC03Mjk2LDEzICs3NDQwLDE1IEBAIHZvaWQgT05N
YWluV2luZG93OjpzbG90RXh0VGltZXIoKQogICAgICAgICAgICAgKCBRRmlsZTo6UmVhZFVzZXJ8
UUZpbGU6OldyaXRlVXNlcnxRRmlsZTo6RXhlVXNlcnwKICAgICAgICAgICAgICAgUUZpbGU6OlJl
YWRPd25lcnxRRmlsZTo6V3JpdGVPd25lcnxRRmlsZTo6RXhlT3duZXIgKSApCiAgICAgewotICAg
ICAgICB4MmdvRGVidWcgPDwiV3JvbmcgcGVybWlzc2lvbnMgb24gIjw8cmVhZExvZ2luc0Zyb20g
PDwiOiI8PGVuZGw7Ci0gICAgICAgIHgyZ29EZWJ1ZyA8PCAoIGludCApICggUUZpbGU6OnBlcm1p
c3Npb25zICgKKworICAgICAgICB4MmdvRGVidWc8PCJXcm9uZyBwZXJtaXNzaW9ucyBvbiAiPDxy
ZWFkTG9naW5zRnJvbSA8PCI6IjsKKyAgICAgICAgeDJnb0RlYnVnPDwgKCBpbnQgKSAoIFFGaWxl
OjpwZXJtaXNzaW9ucyAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWRM
b2dpbnNGcm9tKyIvLiIgKSApCiAgICAgICAgICAgICAgICAgICA8PCJtdXN0IGJlIjw8ICggaW50
ICkgKCBRRmlsZTo6UmVhZFVzZXJ8UUZpbGU6OldyaXRlVXNlcgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgfFFGaWxlOjpFeGVVc2VyfFFGaWxlOjpSZWFkT3duZXJ8
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRRmlsZTo6V3JpdGVP
d25lcnwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFGaWxlOjpF
eGVPd25lciApIDw8ZW5kbDsKKwogICAgICAgICBpZiAoIGV4dExvZ2luICkKICAgICAgICAgICAg
IGV4dFRpbWVyLT5zdG9wKCk7CiAgICAgICAgIHJldHVybjsKQEAgLTczMzIsOSArNzQ3OCw5IEBA
IHZvaWQgT05NYWluV2luZG93OjpzbG90RXh0VGltZXIoKQogICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgICBpZiAoIGFyZ3NbMF09PSJsb2dvdXQiICkKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIiBJIEhBVkUgZXh0ZXJuYWwgbG9nb3V0Ijw8Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbmRsOworCisgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkV4dGVy
bmFsIGxvZ291dC4iOworCiAgICAgICAgICAgICAgICAgICAgIGFyZ3NbMV0ucmVwbGFjZSAoICJc
biIsIiIgKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKCBhcmdzWzFdLnNpemUoKSApCiAgICAg
ICAgICAgICAgICAgICAgICAgICBsb2dvdXREaXI9YXJnc1sxXTsKQEAgLTczNDgsNyArNzQ5NCw3
IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90RXh0VGltZXIoKQogICAgIHsKICAgICAgICAgaWYg
KCBsb2dvdXREaXIgIT0gUVN0cmluZzo6bnVsbCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHgy
Z29EZWJ1ZyA8PCJleHRlcm5hbCBsb2dvdXQiPDxlbmRsOworICAgICAgICAgICAgeDJnb0RlYnVn
PDwiRXh0ZXJuYWwgbG9nb3V0IHJlY2VpdmVkIjsKICAgICAgICAgICAgIGV4dGVybmFsTG9nb3V0
ICggbG9nb3V0RGlyICk7CiAgICAgICAgIH0KICAgICB9CkBAIC03MzU2LDcgKzc1MDIsNyBAQCB2
b2lkIE9OTWFpbldpbmRvdzo6c2xvdEV4dFRpbWVyKCkKICAgICB7CiAgICAgICAgIGlmICggbG9n
aW5EaXIgIT0gUVN0cmluZzo6bnVsbCApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHgyZ29EZWJ1
ZyA8PCJleHRlcm5hbCBsb2dpbiI8PGVuZGw7CisgICAgICAgICAgICB4MmdvRGVidWc8PCJFeHRl
cm5hbCBsb2dpbi4iOwogICAgICAgICAgICAgZXh0ZXJuYWxMb2dpbiAoIGxvZ2luRGlyICk7CiAg
ICAgICAgIH0KICAgICB9CkBAIC03MzcxLDkgKzc1MTcsMTAgQEAgdm9pZCBPTk1haW5XaW5kb3c6
OnNsb3RFeHBvcnRUaW1lcigpCiAgICAgICAgICAgICBRRmlsZTo6RXhlVXNlcnwKICAgICAgICAg
ICAgIFFGaWxlOjpSZWFkT3duZXJ8UUZpbGU6OldyaXRlT3duZXJ8UUZpbGU6OkV4ZU93bmVyICkg
KQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnIDw8Ildyb25nIHBlcm1pc3Npb25zIG9uICI8PAor
CisgICAgICAgIHgyZ29EZWJ1Zzw8Ildyb25nIHBlcm1pc3Npb25zIG9uICI8PAogICAgICAgICAg
ICAgICAgICAgcmVhZEV4cG9ydHNGcm9tIDw8IjoiPDxlbmRsOwotICAgICAgICB4MmdvRGVidWcg
PDwgKCBpbnQgKSAoIFFGaWxlOjpwZXJtaXNzaW9ucyAoCisgICAgICAgIHgyZ29EZWJ1Zzw8ICgg
aW50ICkgKCBRRmlsZTo6cGVybWlzc2lvbnMgKAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZWFkRXhwb3J0c0Zyb20rIi8uIiApICkKICAgICAgICAgICAgICAgICAgIDw8Im11
c3QgYmUiPDwgKCBpbnQgKSAoIFFGaWxlOjpSZWFkVXNlcnxRRmlsZTo6V3JpdGVVc2VyCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8UUZpbGU6OkV4ZVVzZXJ8UUZp
bGU6OlJlYWRPd25lcnwKQEAgLTc3MDcsNyArNzg1NCw5IEBAIHZvaWQgT05NYWluV2luZG93Ojpz
bG90U2NEYWVtb25FcnJvcigpCiB7CiAgICAgUVN0cmluZyBzdGRPdXQgKCBzY0RhZW1vbi0+cmVh
ZEFsbFN0YW5kYXJkRXJyb3IoKSApOwogICAgIHN0ZE91dD1zdGRPdXQuc2ltcGxpZmllZCgpOwot
ICAgIHgyZ29EZWJ1Zzw8IlNDREFFTU9OIGVycjoiPDxzdGRPdXQ8PGVuZGw7CisKKyAgICB4Mmdv
RGVidWc8PCJTQ0RBRU1PTiBlcnJvcjogIjw8c3RkT3V0OworCiAgICAgaWYgKCBzdGRPdXQuaW5k
ZXhPZiAoICJ1cGRhdGluZyBzbG90IiApICE9LTEgfHwKICAgICAgICAgICAgIHN0ZE91dC5pbmRl
eE9mICggInVwZGF0aW5nIHN0YXR1cyBvZiBzbG90IiApICE9LTEgKQogICAgIHsKQEAgLTc3MjUs
NyArNzg3NCw4IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90U2NEYWVtb25PdXQoKQogewogICAg
IFFTdHJpbmcgc3RkT3V0ICggc2NEYWVtb24tPnJlYWRBbGxTdGFuZGFyZE91dHB1dCgpICk7CiAg
ICAgc3RkT3V0PXN0ZE91dC5zaW1wbGlmaWVkKCk7Ci0gICAgeDJnb0RlYnVnPDwiU0NEQUVNT04g
b3V0OiI8PHN0ZE91dDw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8IlNDREFFTU9OIG91dDogIjw8
c3RkT3V0OwogfQogCiB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdFNjRGFlbW9uRmluaXNoZWQgKCBp
bnQgLCBRUHJvY2Vzczo6RXhpdFN0YXR1cyApCkBAIC03NzMzLDcgKzc4ODMsOSBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6c2xvdFNjRGFlbW9uRmluaXNoZWQgKCBpbnQgLCBRUHJvY2Vzczo6RXhpdFN0
YXR1cyApCiAgICAgc2NEYWVtb249MGw7CiAgICAgaWYgKCBpc1NjRGFlbW9uT2sgKQogICAgIHsK
LSAgICAgICAgeDJnb0RlYnVnPDwic2NEYWVtb24gZmluaXNoZWQiPDxlbmRsOworCisgICAgICAg
IHgyZ29EZWJ1Zzw8IlNDREFFTU9OIGZpbmlzaGVkLiI8PGVuZGw7CisKICAgICAgICAgZ3BnPW5l
dyBRUHJvY2VzcyAoIHRoaXMgKTsKICAgICAgICAgUVN0cmluZ0xpc3QgYXJndW1lbnRzOwogICAg
ICAgICBhcmd1bWVudHM8PCItLWNhcmQtc3RhdHVzIjsKQEAgLTc3NTUsNyArNzkwNyw5IEBAIHZv
aWQgT05NYWluV2luZG93OjpzbG90R3BnRXJyb3IoKQogewogICAgIFFTdHJpbmcgc3RkT3V0ICgg
Z3BnLT5yZWFkQWxsU3RhbmRhcmRFcnJvcigpICk7CiAgICAgc3RkT3V0PXN0ZE91dC5zaW1wbGlm
aWVkKCk7Ci0gICAgeDJnb0RlYnVnPDwiR1BHIGVycjoiPDxzdGRPdXQ8PGVuZGw7CisKKyAgICB4
MmdvRGVidWc8PCJHUEcgZXJyb3I6ICI8PHN0ZE91dDsKKwogICAgIGlmICggc3RkT3V0LmluZGV4
T2YgKCAiZmFpbGVkIiApICE9LTEgKQogICAgIHsKICAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRp
Y2FsICggMGwsdHIgKCAiRXJyb3IiICksCkBAIC03NzcwLDEzICs3OTI0LDE3IEBAIHZvaWQgT05N
YWluV2luZG93OjpzbG90R3BnRXJyb3IoKQogdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RHcGdGaW5p
c2hlZCAoIGludCBleGl0Q29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBRUHJvY2Vzczo6RXhpdFN0YXR1cyBleGl0U3RhdHVzICkKIHsKLSAgICB4MmdvRGVidWc8PCJn
cGcgZmluaXNoZWQsIGV4aXQgY29kZToiPDxleGl0Q29kZTw8IiBleGl0IHN0YXR1czoiPDwKLSAg
ICAgICAgICAgICBleGl0U3RhdHVzPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiR1BHIGZpbmlz
aGVkLCBleGl0IGNvZGU6ICI8PGV4aXRDb2RlOworICAgIHgyZ29EZWJ1Zzw8IkdQRyBmaW5pc2hl
ZCwgZXhpdCBzdGF0dXM6Ijw8ZXhpdFN0YXR1czsKKwogICAgIGlmICggZXhpdFN0YXR1cz09MCAp
CiAgICAgewogICAgICAgICBRU3RyaW5nIHN0ZE91dCAoIGdwZy0+cmVhZEFsbFN0YW5kYXJkT3V0
cHV0KCkgKTsKICAgICAgICAgc3RkT3V0LmNob3AgKCAxICk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8
IkdQRyBvdXQ6Ijw8c3RkT3V0PDxlbmRsOworCisgICAgICAgIHgyZ29EZWJ1Zzw8IkdQRyBvdXQ6
ICI8PHN0ZE91dDsKKwogICAgICAgICBRU3RyaW5nTGlzdCBsaW5lcz1zdGRPdXQuc3BsaXQgKCAi
XG4iICk7CiAgICAgICAgIFFTdHJpbmcgbG9naW47CiAgICAgICAgIFFTdHJpbmcgYXBwSWQ7CkBA
IC03ODAxLDEwICs3OTU5LDE0IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90R3BnRmluaXNoZWQg
KCBpbnQgZXhpdENvZGUsCiAgICAgICAgIGFwcElkPWFwcElkLnNpbXBsaWZpZWQoKTsKICAgICAg
ICAgbG9naW49bG9naW4uc2ltcGxpZmllZCgpOwogICAgICAgICBhdXRoS2V5PWF1dGhLZXkuc2lt
cGxpZmllZCgpOwotICAgICAgICB4MmdvRGVidWc8PCJjYXJkIGRhdGE6ICI8PGFwcElkPDxsb2dp
bjw8YXV0aEtleTw8ZW5kbDsKKworICAgICAgICB4MmdvRGVidWc8PCJDYXJkIGRhdGE6ICI8PGFw
cElkPDxsb2dpbjw8YXV0aEtleTsKKwogICAgICAgICBpZiAoIGxvZ2luPT0iW25vdCBzZXRdIiB8
fCBhdXRoS2V5ID09ICJbbm9uZV0iICkKICAgICAgICAgewotICAgICAgICAgICAgeDJnb0RlYnVn
PDwiQ2FyZCBub3QgY29uZmlndXJlZFxuIjsKKworICAgICAgICAgICAgeDJnb0Vycm9yZigxMyk8
PHRyKCJDYXJkIG5vdCBjb25maWd1cmVkLiIpOworCiAgICAgICAgICAgICBRTWVzc2FnZUJveDo6
Y3JpdGljYWwgKAogICAgICAgICAgICAgICAgIDBsLHRyICggIkVycm9yIiApLAogICAgICAgICAg
ICAgICAgIHRyICgKQEAgLTc4ODAsMTUgKzgwNDIsMTYgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNs
b3RHcGdBZ2VudEZpbmlzaGVkICggaW50ICwgUVByb2Nlc3M6OkV4aXRTdGF0dXMgKQogICAgIFFT
dHJpbmcgZ3BnX2FnZW50X2luZm89ZW52THN0WzBdLnNwbGl0ICggIj0iICkgWzFdOwogICAgIFFT
dHJpbmcgc3NoX2F1dGhfc29jaz1lbnZMc3RbMl0uc3BsaXQgKCAiPSIgKSBbMV07CiAgICAgYWdl
bnRQaWQ9ZW52THN0WzRdLnNwbGl0ICggIj0iICkgWzFdOwotICAgIHgyZ29EZWJ1Zzw8Z3BnX2Fn
ZW50X2luZm88PHNzaF9hdXRoX3NvY2s8PGFnZW50UGlkPDxlbmRsOwotICAgIHgyZ29EZWJ1Zzw8
IkdQR0FHRU5UIG91dDoiPDxlbnZMc3RbMF08PGVudkxzdFsyXTw8ZW52THN0WzRdPDxlbmRsOwor
CisgICAgeDJnb0RlYnVnPDwiR1BHLWFnZW50IGluZm86ICI8PGdwZ19hZ2VudF9pbmZvPDxzc2hf
YXV0aF9zb2NrPDxhZ2VudFBpZDsKKyAgICB4MmdvRGVidWc8PCJHUEctYWdlbnQgcGlkOiAiPDxh
Z2VudFBpZDsKKyAgICB4MmdvRGVidWc8PCJHUEctYWdlbnQgb3V0OiI8PGVudkxzdFswXTw8ZW52
THN0WzJdPDxlbnZMc3RbNF07CiAKICAgICBhZ2VudENoZWNrVGltZXItPnN0YXJ0ICggMTAwMCAp
OwogICAgIGNhcmRSZWFkeT10cnVlOwogCiAgICAgc3NoRW52LmNsZWFyKCk7CiAgICAgc3NoRW52
PDxlbnZMc3RbMF08PGVudkxzdFsyXTw8ZW52THN0WzRdOwotLy8gCXgyZ29EZWJ1Zzw8InNzaGVu
djoiPDxzc2hFbnY8PGVuZGw7CiAKICAgICBpZiAoICF1c2VMZGFwICkKICAgICB7CkBAIC03OTEy
LDcgKzgwNzUsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdEdwZ0FnZW50RmluaXNoZWQgKCBp
bnQgLCBRUHJvY2Vzczo6RXhpdFN0YXR1cyApCiAgICAgICAgIHNzaGFkZC53YWl0Rm9yRmluaXNo
ZWQgKCAtMSApOwogICAgICAgICBRU3RyaW5nIHNzaG91dCAoIHNzaGFkZC5yZWFkQWxsU3RhbmRh
cmRPdXRwdXQoKSApOwogICAgICAgICBzc2hvdXQ9c3Nob3V0LnNpbXBsaWZpZWQoKTsKLSAgICAg
ICAgeDJnb0RlYnVnPDwiU1NILUFERCBvdXQ6Ijw8c3Nob3V0PDxlbmRsOworCisgICAgICAgIHgy
Z29EZWJ1Zzw8IlNTSC1BREQgb3V0OiAiPDxzc2hvdXQ7CisKICAgICAgICAgaWYoYnJva2VyTW9k
ZSkKICAgICAgICAgewogICAgICAgICAgICAgYnJva2VyLT5nZXRVc2VyU2Vzc2lvbnMoKTsKQEAg
LTc5MzEsNyArODA5Niw5IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90R3BnQWdlbnRGaW5pc2hl
ZCAoIGludCAsIFFQcm9jZXNzOjpFeGl0U3RhdHVzICkKICAgICAgICAgICAgIHNzaGFkZC53YWl0
Rm9yRmluaXNoZWQgKCAtMSApOwogICAgICAgICAgICAgUVN0cmluZyBzc2hvdXQgKCBzc2hhZGQu
cmVhZEFsbFN0YW5kYXJkT3V0cHV0KCkgKTsKICAgICAgICAgICAgIHNzaG91dD1zc2hvdXQuc2lt
cGxpZmllZCgpOwotICAgICAgICAgICAgeDJnb0RlYnVnPDwiU1NILUFERCBvdXQ6Ijw8c3Nob3V0
PDxlbmRsOworCisgICAgICAgICAgICB4MmdvRGVidWc8PCJTU0gtQUREIG91dDogIjw8c3Nob3V0
OworCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzk1NiwxMyArODEyMywx
NCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdENoZWNrQWdlbnRQcm9jZXNzKCkKICAgICAgICAg
aWYgKCBueHByb3h5ICkKICAgICAgICAgICAgIGlmICggbnhwcm94eS0+c3RhdGUoKSA9PVFQcm9j
ZXNzOjpSdW5uaW5nICkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICB4MmdvRGVidWc8
PCJTdXNwZW5kaW5nIHNlc3Npb25cbiI7CisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiU3Vz
cGVuZGluZyBzZXNzaW9uLi4uIjsKICAgICAgICAgICAgICAgICBzbG90U3VzcGVuZFNlc3NGcm9t
U3QoKTsKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJTdXNwZW5kZWQgIHNlc3Npb24uIjsK
IC8vICAgICAgICAgICAgICAgICBueHByb3h5LT50ZXJtaW5hdGUoKTsKICAgICAgICAgICAgIH0K
ICAgICB9CiAKLSAgICB4MmdvRGVidWc8PCJncGctYWdlbnQgZmluaXNoZWRcbiI7CisgICAgeDJn
b0RlYnVnPDwiR1BHLUFnZW50IGZpbmlzaGVkLiI7CiAgICAgc2xvdFN0YXJ0UEdQQXV0aCgpOwog
fQogCkBAIC03OTkyLDcgKzgxNjAsOSBAQCBRU3RyaW5nIE9OTWFpbldpbmRvdzo6Z2V0WERpc3Bs
YXkoKQogICAgICAgICAvLyBNYWMgT1MgWCAxMC40IGNvbXBhdGliaWxpdHkgbW9kZS4KICAgICAg
ICAgLy8gVGhlcmUsIGl0IGlzIHBvc3NpYmxlIG5vICRESVNQTEFZIHZhcmlhYmxlIGlzIHNldC4K
ICAgICAgICAgLy8gU3RhcnQgWDExIG1hbnVhbGx5LiBGaXJzdCwgZmluZCBhIGZyZWUgZGlzcGxh
eSBudW1iZXIuCi0gICAgICAgIHgyZ29EZWJ1ZyA8PCAiZW50ZXJpbmcgMTAuNCBjb21wYXQgbW9k
ZSwgY2hlY2tpbmcgZm9yIGZyZWUgWDExIGRpc3BsYXkiOworCisgICAgICAgIHgyZ29EZWJ1Zzw8
ICJlbnRlcmluZyAxMC40IGNvbXBhdCBtb2RlLCBjaGVja2luZyBmb3IgZnJlZSBYMTEgZGlzcGxh
eSI7CisKIAogICAgICAgICBpbnQgeEZyZWVEaXNwID0gMDsKICAgICAgICAgUURpciB4dG1wZGly
ICgiL3RtcC8uWDExLXVuaXgiKTsKQEAgLTgwMjIsNyArODE5Miw4IEBAIFFTdHJpbmcgT05NYWlu
V2luZG93OjpnZXRYRGlzcGxheSgpCiAgICAgICAgIGlmICh4RnJlZURpc3AgIT0gLTEpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIHhzb2NrZXQgPSAiL3RtcC8uWDExLXVuaXgvWCIgKyBRU3RyaW5n
OjpudW1iZXIgKHhGcmVlRGlzcCk7Ci0gICAgICAgICAgICB4MmdvRGVidWcgPDwgIlN1Y2Nlc3Nm
dWxseSBkZXRlY3RlZCBmcmVlIHNvY2tldCAiIDw8IHhzb2NrZXQgPDwgIi4iOworCisgICAgICAg
ICAgICB4MmdvRGVidWc8PCAiU3VjY2Vzc2Z1bGx5IGRldGVjdGVkIGZyZWUgc29ja2V0ICIgPDwg
eHNvY2tldCA8PCAiLiI7CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoISh4c29ja2V0LmlzRW1w
dHkgKCkpKQpAQCAtODAzMiwxOCArODIwMywyMSBAQCBRU3RyaW5nIE9OTWFpbldpbmRvdzo6Z2V0
WERpc3BsYXkoKQogICAgICAgICAgICAgUVByb2Nlc3NFbnZpcm9ubWVudCBlbnYgPSBRUHJvY2Vz
c0Vudmlyb25tZW50OjpzeXN0ZW1FbnZpcm9ubWVudCAoKTsKICAgICAgICAgICAgIFFQcm9jZXNz
KiBzdGFydHggPSBuZXcgUVByb2Nlc3MgKHRoaXMpOwogCi0gICAgICAgICAgICB4MmdvRGVidWcg
PDwgIlN0YXJ0aW5nIHRoZSBYIHNlcnZlciBvbiBmcmVlIGRpc3BsYXkgcG9ydC4iOworICAgICAg
ICAgICAgeDJnb0RlYnVnPDwgIlN0YXJ0aW5nIHRoZSBYIHNlcnZlciBvbiBmcmVlIGRpc3BsYXkg
cG9ydC4iOworCiAgICAgICAgICAgICBlbnYuaW5zZXJ0ICgwLCAiUEFUSD0vdXNyL2JpbjovYmlu
Oi91c3Ivc2Jpbjovc2JpbjovdXNyL2xvY2FsL2JpbjovdXNyL1gxMVI2L2JpbiIpOwogCiAgICAg
ICAgICAgICBzdGFydHgtPnNldFByb2Nlc3NFbnZpcm9ubWVudCAoZW52KTsKICAgICAgICAgICAg
IHN0YXJ0eC0+c3RhcnQgKHhuYW1lICsgUVN0cmluZyAoIiAiKSArIHhvcHQsIFFJT0RldmljZTo6
Tm90T3Blbik7CiAgICAgICAgICAgICBpZiAoc3RhcnR4LT53YWl0Rm9yU3RhcnRlZCAoMzAwMCkp
CiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgeDJnb0RlYnVnIDw8ICJzbGVlcGluZyBm
b3IgdGhyZWUgc2Vjb25kcyI7CisKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCAiU2xlZXBp
bmcgZm9yIHRocmVlIHNlY29uZHMiOwogICAgICAgICAgICAgICAgIGludCBzbGVlcHRpbWUgPSAz
OwogICAgICAgICAgICAgICAgIHdoaWxlICgoc2xlZXB0aW1lID0gc2xlZXAgKHNsZWVwdGltZSkp
KSB7fTsKIAotICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PCAiTGVhdmluZyBPUyBYIDEwLjQg
Y29tcGF0IG1vZGUuIjsKKyAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCAiTGVhdmluZyBPUyBY
IDEwLjQgY29tcGF0IG1vZGUuIjsKKwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpA
QCAtODA3MSw3ICs4MjQ1LDkgQEAgUVN0cmluZyBPTk1haW5XaW5kb3c6OmdldFhEaXNwbGF5KCkK
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgIC8vIFByZXBlbmQgdGhlIHdlbGwta25vd24gc29j
a2V0IHBhdGguCiAgICAgICAgICAgICB4c29ja2V0LnByZXBlbmQgKCIvdG1wLy5YMTEtdW5peC9Y
Iik7Ci0gICAgICAgICAgICB4MmdvRGVidWcgPDwgInhzb2NrZXQgaW4gY29tcGF0IG1vZGU6ICIg
PDwgeHNvY2tldDsKKworICAgICAgICAgICAgeDJnb0RlYnVnPDwgInhzb2NrZXQgaW4gY29tcGF0
IG1vZGU6ICIgPDwgeHNvY2tldDsKKwogICAgICAgICB9CiAKICAgICAgICAgdW5peFNvY2tldC5j
b25uZWN0VG9TZXJ2ZXIgKHhzb2NrZXQpOwpAQCAtODA5Niw3ICs4MjcyLDcgQEAgUVN0cmluZyBP
Tk1haW5XaW5kb3c6OmdldFhEaXNwbGF5KCkKIAogICAgICAgICAgICAgICAgIGlmIChvaykKICAg
ICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1ZyA8PCAiUmV0dXJu
aW5nIiA8PCBRU3RyaW5nICgiOiIpICsgeHNvY2tldDsKKyAgICAgICAgICAgICAgICAgICAgeDJn
b0RlYnVnPDwiUmV0dXJuaW5nICIgPDwgUVN0cmluZyAoIjoiKSArIHhzb2NrZXQ7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoUVN0cmluZyAoIjoiKSArIHhzb2NrZXQpOwogICAgICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTgyMjIsNyArODM5OCw5IEBAIHZvaWQgT05NYWlu
V2luZG93OjpzbG90RXhlY1htb2RtYXAoKQogLy8gIAkgICAgImVjaG8gYWRkIG1vZDUgPSBJU09f
TGV2ZWwzX1NoaWZ0IgogICAgICAgICAiKXwgRElTUExBWT06IgogICAgICAgICArcmVzdW1pbmdT
ZXNzaW9uLmRpc3BsYXkrIiB4bW9kbWFwIC0gIjsKLSAgICB4MmdvRGVidWc8PCJjbWQ6Ijw8Y21k
OworCisgICAgeDJnb0RlYnVnPDwiRXhlY3V0aW5nIHhtb2RtYXAgd2l0aCBjbWQ6ICI8PGNtZDsK
KwogICAgIFNzaFByb2Nlc3MqIHhtb2RQcm9jOwogICAgIHRyeQogICAgIHsKQEAgLTgyNDgsNyAr
ODQyNiwxMSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdEV4ZWNYbW9kbWFwKCkKIAogdm9pZCBP
Tk1haW5XaW5kb3c6OmNoZWNrX2NtZF9zdGF0dXMoKQogewotICAgIHgyZ29EZWJ1Zzw8ImNoZWNr
IGNvbW1hbmQgbWVzc2FnZSI8PGVuZGw7CisgICAgUVN0cmluZyBwYXNzd2Q7CisgICAgUVN0cmlu
ZyB1c2VyPWdldEN1cnJlbnRVbmFtZSgpOworICAgIFFTdHJpbmcgaG9zdD1yZXN1bWluZ1Nlc3Np
b24uc2VydmVyOworICAgIHBhc3N3ZD1nZXRDdXJyZW50UGFzcygpOworCiAgICAgc3NoQ29ubmVj
dGlvbi0+ZXhlY3V0ZUNvbW1hbmQgKCAieDJnb2NtZGV4aXRtZXNzYWdlICIrCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bWluZ1Nlc3Npb24uc2Vzc2lvbklkICwgdGhp
cywgU0xPVChzbG90Q21kTWVzc2FnZShib29sLCBRU3RyaW5nLCBpbnQpKSk7CiB9CkBAIC04MjU2
LDYgKzg0MzgsNyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6Y2hlY2tfY21kX3N0YXR1cygpCiB2b2lk
IE9OTWFpbldpbmRvdzo6c2xvdENtZE1lc3NhZ2UgKCBib29sIHJlc3VsdCxRU3RyaW5nIG91dHB1
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCkKIHsKKyAgICB4Mmdv
RGVidWc8PCJDb21tYW5kIE1lc3NhZ2U6ICIgKyBvdXRwdXQ7CiAgICAgaWYgKCByZXN1bHQ9PWZh
bHNlICkKICAgICB7CiAgICAgICAgIGNhcmRSZWFkeT1mYWxzZTsKQEAgLTgyODIsMTAgKzg0NjUs
MTggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDbWRNZXNzYWdlICggYm9vbCByZXN1bHQsUVN0
cmluZyBvdXRwdXQsCiAgICAgewogICAgICAgICBRU3RyaW5nIGNtZD1vdXRwdXQ7CiAgICAgICAg
IGNtZC5yZXBsYWNlICggIlgyR09SVU5DT01NQU5EIEVSUiBOT0VYRUM6IiwiIiApOwotICAgICAg
ICBRTWVzc2FnZUJveDo6Y3JpdGljYWwgKCAwbCx0ciAoICJFcnJvciIgKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHIgKCAiVW5hYmxlIHRvIGV4ZWN1dGU6ICIgKSArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNtZCxRTWVzc2FnZUJveDo6T2ssCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFFNZXNzYWdlQm94OjpOb0J1dHRvbiApOworCisgICAg
ICAgIGlmKHN0YXJ0SGlkZGVuKQorICAgICAgICB7CisgICAgICAgICAgICB4MmdvRXJyb3JmKDE0
KTw8IHRyKCAiVW5hYmxlIHRvIGV4ZWN1dGU6ICIpICsgY21kOworICAgICAgICB9CisgICAgICAg
IGVsc2UKKyAgICAgICAgeworICAgICAgICAgICAgUU1lc3NhZ2VCb3g6OmNyaXRpY2FsICggMGws
dHIgKCAiRXJyb3IiICksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ciAo
ICJVbmFibGUgdG8gZXhlY3V0ZTogIiApICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNtZCxRTWVzc2FnZUJveDo6T2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBRTWVzc2FnZUJveDo6Tm9CdXR0b24gKTsKKyAgICAgICAgfQogICAgIH0KICAgICBk
ZWxldGUgc3NoQ29ubmVjdGlvbjsKICAgICBzc2hDb25uZWN0aW9uPTA7CkBAIC04Mjk1LDggKzg0
ODYsMTAgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RDbWRNZXNzYWdlICggYm9vbCByZXN1bHQs
UVN0cmluZyBvdXRwdXQsCiBpbnQgT05NYWluV2luZG93OjpzdGFydFNzaEZzVHVubmVsKCkKIHsK
ICAgICBmc1R1blJlYWR5PWZhbHNlOwotICAgIHgyZ29EZWJ1Zzw8InN0YXJ0aW5nIGZzIHR1bm5l
bCBmb3I6Ijw8cmVzdW1pbmdTZXNzaW9uLnNlc3Npb25JZDw8Ci0gICAgICAgICAgICAgIlxuZnMg
cG9ydDogIjw8cmVzdW1pbmdTZXNzaW9uLmZzUG9ydDsKKworICAgIHgyZ29EZWJ1Zzw8IlN0YXJ0
aW5nIGZzIHR1bm5lbCBmb3I6ICI8PHJlc3VtaW5nU2Vzc2lvbi5zZXNzaW9uSWQ7CisgICAgeDJn
b0RlYnVnPDwiZnMgcG9ydDogIjw8cmVzdW1pbmdTZXNzaW9uLmZzUG9ydDsKKwogCiAgICAgaWYg
KCByZXN1bWluZ1Nlc3Npb24uZnNQb3J0Lmxlbmd0aCgpIDw9MCApCiAgICAgewpAQCAtODM2OCw3
ICs4NTYxLDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnN0YXJ0WDJnb01vdW50KCkKICNpZmRlZiBR
X09TX1dJTgogICAgIFFEaXIgdGRpcjsKICAgICB0ZGlyLm1rcGF0aCAoIGF1dGhvZm5hbWUrIlxc
LngyZ29cXC5zc2giICk7Ci0gICAgeDJnb0RlYnVnPDwiQ3JlYXRpbmcgIjw8YXV0aG9mbmFtZSsi
XFwueDJnb1xcLnNzaCI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJDcmVhdGluZyAiPDxhdXRo
b2ZuYW1lKyJcXC54MmdvXFwuc3NoIjsKKwogICAgIGF1dGhvZm5hbWU9d2FwaVNob3J0RmlsZU5h
bWUgKCBhdXRob2ZuYW1lICkgKyIvLngyZ28iOwogI2VuZGlmCiAgICAgYXV0aG9mbmFtZSs9ICIv
LnNzaC9hdXRob3JpemVkX2tleXMiIDsKQEAgLTg0ODgsNyArODY4Myw2IEBAIHZvaWQgT05NYWlu
V2luZG93OjpzdGFydFgyZ29Nb3VudCgpCiAKICAgICBkaXItPnBpZD1zc2hDb25uZWN0aW9uLT5l
eGVjdXRlQ29tbWFuZChjbWQsdGhpcyxTTE9UICggc2xvdFJldEV4cG9ydERpciAoIGJvb2wsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyxpbnQpICkp
OwotCiB9CiAKIHZvaWQgT05NYWluV2luZG93OjpzbG90Q2hlY2tQcmludFNwb29sKCkKQEAgLTg1
NzQsMTQgKzg3NjgsMTggQEAgYm9vbCBPTk1haW5XaW5kb3c6OmlzU2VydmVyUnVubmluZyAoIGlu
dCBwb3J0ICkKICAgICBpUmVzdWx0ID0gV1NBU3RhcnR1cChNQUtFV09SRCgyLCAyKSwgJndzYURh
dGEpOwogICAgIGlmIChpUmVzdWx0ICE9IDApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJX
QVJOSU5HOiBXU0FTdGFydHVwIGZhaWxlZDogIjw8IGlSZXN1bHQ8PGVuZGw7CisKKyAgICAgICAg
eDJnb0RlYnVnPDwiV0FSTklORzogV1NBU3RhcnR1cCBmYWlsZWQ6ICI8PCBpUmVzdWx0OworCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAgICBhZGRyLnNfYWRkciA9IGluZXRfYWRk
cigiMTI3LjAuMC4xIik7CiAgICAgaWYgKGFkZHIuc19hZGRyID09IElOQUREUl9OT05FKQogICAg
IHsKKwogICAgICAgICB4MmdvRGVidWc8PCAiV0FSTklORzogIFRoZSBJUHY0IGFkZHJlc3MgZW50
ZXJlZCBtdXN0IGJlIGEgbGVnYWwgYWRkcmVzc1xuIjsKKwogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCkBAIC04NTg5LDEwICs4Nzg3LDEzIEBAIGJvb2wgT05NYWluV2luZG93Ojppc1Nl
cnZlclJ1bm5pbmcgKCBpbnQgcG9ydCApCiAgICAgbG9jYWxIb3N0ID0gZ2V0aG9zdGJ5YWRkcigo
Y2hhciopJmFkZHIsNCwgQUZfSU5FVCk7CiAgICAgaWYgKCFsb2NhbEhvc3QpCiAgICAgewotICAg
ICAgICB4MmdvRGVidWc8PCJXQVJOSU5HOiBnZXRob3N0YnlhZGRyIGZhaWxlZDogIjw8V1NBR2V0
TGFzdEVycm9yKCk8PGVuZGw7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiV0FSTklORzogZ2V0aG9z
dGJ5YWRkciBmYWlsZWQ6ICI8PFdTQUdldExhc3RFcnJvcigpOworCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9Ci0gICAgeDJnb0RlYnVnPDwiZ290IGxvY2FsaG9zdCI8PGVuZGw7CisgICAg
eDJnb0RlYnVnPDwiZ290IGxvY2FsaG9zdCI7CisKIAogICAgIGxvY2FsSVAgPSBpbmV0X250b2Eg
KCooc3RydWN0IGluX2FkZHIgKikqbG9jYWxIb3N0LT5oX2FkZHJfbGlzdCk7CiAKQEAgLTg2MDMs
NyArODgwNCw4IEBAIGJvb2wgT05NYWluV2luZG93Ojppc1NlcnZlclJ1bm5pbmcgKCBpbnQgcG9y
dCApCiAgICAgQ29ubmVjdFNvY2tldCA9IHNvY2tldChBRl9JTkVULCBTT0NLX1NUUkVBTSwgSVBQ
Uk9UT19UQ1ApOwogICAgIGlmIChDb25uZWN0U29ja2V0ID09IElOVkFMSURfU09DS0VUKQogICAg
IHsKLSAgICAgICAgeDJnb0RlYnVnPDwiV0FSTklORzogc29ja2V0IGZhaWxlZCB3aXRoIGVycm9y
OiAiPDwgV1NBR2V0TGFzdEVycm9yKCk8PGVuZGw7CisgICAgICAgIHgyZ29EZWJ1Zzw8IldBUk5J
Tkc6IHNvY2tldCBmYWlsZWQgd2l0aCBlcnJvcjogIjw8IFdTQUdldExhc3RFcnJvcigpOworCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTg2MTEsMTEgKzg4MTMsMTUgQEAgYm9v
bCBPTk1haW5XaW5kb3c6OmlzU2VydmVyUnVubmluZyAoIGludCBwb3J0ICkKICAgICBpZiAoaVJl
c3VsdCA9PSBTT0NLRVRfRVJST1IpCiAgICAgewogICAgICAgICBjbG9zZXNvY2tldChDb25uZWN0
U29ja2V0KTsKLSAgICAgICAgeDJnb0RlYnVnPDwiUG9ydCBpcyBmcmVlOiAiPDxwb3J0PDxlbmRs
OworCisgICAgICAgIHgyZ29EZWJ1Zzw8IlBvcnQgaXMgZnJlZTogIjw8cG9ydDsKKwogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfQogICAgIGNsb3Nlc29ja2V0KENvbm5lY3RTb2NrZXQpOwot
ICAgIHgyZ29EZWJ1Zzw8IlBvcnQgYWxyZWFkeSB1c2VkOiAiPDxwb3J0PDxlbmRsOworCisgICAg
eDJnb0RlYnVnPDwiUG9ydCBhbHJlYWR5IHVzZWQ6ICI8PHBvcnQ7CisKICAgICByZXR1cm4gdHJ1
ZTsKICNlbmRpZgogICAgIFFUY3BTb2NrZXQgdGNwU29ja2V0ICggMCApOwpAQCAtODY3Myw3ICs4
ODc5LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnN0YXJ0WE9yZyAoKQogICAgIGlmIChpbnRlcm5h
bFg9PVZDWFNSVikKICAgICAgICAgZXhlYz1hcHBEaXIrIlxcdmN4c3J2XFx2Y3hzcnYuZXhlIjsK
ICAgICB3aW5TZXJ2ZXJzUmVhZHk9ZmFsc2U7CisKICAgICB4MmdvRGVidWc8PCJ1c2luZyBpbnRl
cm5hbCBYOiAiPDx1c2VJbnRlcm5hbFg7CisKIC8vI2lmZGVmIENGR0NMSUVOVAogICAgIGlmICgh
dXNlSW50ZXJuYWxYIHx8IGludGVybmFsWCE9WE1JTkcpCiAgICAgewpAQCAtODY5NCwxMCArODkw
MiwxMyBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnRYT3JnICgpCiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICBjYXNlIFdJTjoKICAgICAgICAgICAgICAgICBjbWRMaW5lPXhv
cmdXaW5PcHRpb25zOwotICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Ild4SDoiPDx4b3JnV2lk
dGg8PCJ4Ijw8eG9yZ0hlaWdodDw8ZW5kbDsKKworICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
Ild4SDoiPDx4b3JnV2lkdGg8PCJ4Ijw8eG9yZ0hlaWdodDsKKwogICAgICAgICAgICAgICAgIGNt
ZExpbmUucmVwbGFjZSgiJXciLHhvcmdXaWR0aCk7CiAgICAgICAgICAgICAgICAgY21kTGluZS5y
ZXBsYWNlKCIlaCIseG9yZ0hlaWdodCk7Ci0gICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxjbWRM
aW5lPDxlbmRsOworCisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxjbWRMaW5lOwogICAgICAg
ICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC04NzMzLDcgKzg5
NDQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnRYT3JnICgpCiAgICAgICAgIHhvcmctPiBz
ZXRXb3JraW5nRGlyZWN0b3J5ICggd29ya2luZ0Rpcik7CiAgICAgfQogCi0gICAgeDJnb0RlYnVn
PDwicnVubmluZyI8PGV4ZWM8PCIgIjw8YXJncy5qb2luKCIgIik7CisKKyAgICB4MmdvRGVidWc8
PCJSdW5uaW5nICI8PGV4ZWM8PCIgIjw8YXJncy5qb2luKCIgIik7CisKICAgICB4b3JnLT5zdGFy
dCAoIGV4ZWMsIGFyZ3MgKTsKIAogCkBAIC04NzYwLDcgKzg5NzMsOSBAQCB2b2lkIE9OTWFpbldp
bmRvdzo6c2xvdENoZWNrWE9yZ0Nvbm5lY3Rpb24oKQogICAgICsrd2FpdGluZ0Zvclg7CiAgICAg
aWYgKGlzU2VydmVyUnVubmluZyg2MDAwK3hEaXNwbGF5KSkKICAgICB7Ci0gICAgICAgIHgyZ29E
ZWJ1Zzw8IlggaXMgc3RhcnRlZCI7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiWCBpcyBzdGFydGVk
LiI7CisKICAgICAgICAgc2xvdFNldFdpblNlcnZlcnNSZWFkeSgpOwogICAgIH0KICAgICBlbHNl
CkBAIC04Nzc1LDcgKzg5OTAsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xvdENoZWNrWE9yZ0Nv
bm5lY3Rpb24oKQogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAg
ICAgeDJnb0RlYnVnPDwid2FpdGluZyBmb3IgWCI7CisKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8
Ii4uLndhaXRpbmcgZm9yIFguIjsKKwogICAgICAgICAgICAgUVRpbWVyOjpzaW5nbGVTaG90KDEw
MDAsIHRoaXMsIFNMT1Qoc2xvdENoZWNrWE9yZ0Nvbm5lY3Rpb24oKSkpOwogICAgICAgICB9CiAg
ICAgfQpAQCAtODgwNSw3ICs5MDIyLDggQEAgdm9pZCBXaW5TZXJ2ZXJTdGFydGVyOjpydW4oKQog
CiB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnRXaW5TZXJ2ZXJzKCkKIHsKLSAgICB4MmdvRGVidWc8
PCJTdGFydGluZyB3aW4gc2VydmVycyI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJTdGFydGlu
ZyB3aW4gc2VydmVycy4uLiI7CiAKICAgICBRU3RyaW5nIGV0Y0Rpcj1ob21lRGlyKyIvLngyZ28v
ZXRjIjsKICAgICBRRGlyIGRyICggaG9tZURpciApOwpAQCAtODgzMyw3ICs5MDUxLDkgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnN0YXJ0V2luU2VydmVycygpCiAgICAgICAgIHN0YXJ0UHVsc2VkKCk7
CiAgICAgfQogLy8gI2lmZGVmIENGR0NMSUVOVAotLy8gICAgIHgyZ29EZWJ1Zzw8Inhvcmcgc2V0
dGluZ3M6ICI8PHN0YXJ0WG9yZ09uU3RhcnQgPDwiICI8PCB1c2VYbWluZzw8ZW5kbDsKKworICAg
IHgyZ29EZWJ1Zzw8Ilhvcmcgc2V0dGluZ3M6ICI8PCBzdGFydFhvcmdPblN0YXJ0IDw8IiB1c2VY
bWluZzogIjw8IHVzZVhtaW5nOworCiAgICAgaWYgKCB1c2VJbnRlcm5hbFggJiYgKGludGVybmFs
WD09IFhNSU5HKSkKICAgICB7CiAvLyAjZW5kaWYKQEAgLTg4ODAsMjMgKzkxMDAsMjkgQEAgdm9p
ZCBPTk1haW5XaW5kb3c6OnNhdmVDeWdudXNTZXR0aW5ncygpCiAgICAgewogICAgICAgICBpZiAo
IGhhdmVDeVNvbEVudHJ5KCkgKQogICAgICAgICB7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCJD
eWdudXMgU29sdXRpb25zIGVudHJ5IGV4aXN0IjsKKworICAgICAgICAgICAgeDJnb0RlYnVnPDwi
Q3lnbnVzIFNvbHV0aW9ucyBlbnRyeSBleGlzdHMuIjsKKwogICAgICAgICAgICAgY3lTb2xFbnRy
eT10cnVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgewogICAgICAgICAgICAg
Y3lTb2xFbnRyeT1mYWxzZTsKLSAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkN5Z251cyBTb2x1dGlv
bnMgZW50cnkgbm90IGV4aXN0IjsKKworICAgICAgICAgICAgeDJnb0RlYnVnPDwiQ3lnbnVzIFNv
bHV0aW9ucyBlbnRyeSBub3QgZXhpc3QuIjsKKwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCBo
YXZlQ3lnd2luRW50cnkoKSApCiAgICAgICAgIHsKLSAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkN5
Z3dpbiBlbnRyeSBleGlzdCI7CisKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkN5Z3dpbiBlbnRy
eSBleGlzdC4iOworCiAgICAgICAgICAgICBjeUVudHJ5PXRydWU7CiAgICAgICAgIH0KICAgICAg
ICAgZWxzZQogICAgICAgICB7Ci0gICAgICAgICAgICB4MmdvRGVidWc8PCJDeWd3aW4gZW50cnkg
bm90IGV4aXN0IjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkN5Z3dpbiBlbnRyeSBub3QgZXhp
c3QuIjsKICAgICAgICAgICAgIGN5RW50cnk9ZmFsc2U7CiAgICAgICAgIH0KICAgICB9CkBAIC04
OTA2LDcgKzkxMzIsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2F2ZUN5Z251c1NldHRpbmdzKCkK
ICAgICAgICAgICAgICAgICAgICAgICBRU2V0dGluZ3M6Ok5hdGl2ZUZvcm1hdCApOwogICAgIG9s
ZEV0Y0Rpcj1RU3RyaW5nOjpudWxsOwogICAgIG9sZEV0Y0Rpcj1ldGNzdC52YWx1ZSAoICJuYXRp
dmUiLG9sZEV0Y0RpciApLnRvU3RyaW5nKCk7Ci0gICAgeDJnb0RlYnVnPDwib2xkIGV0YzoiPDxv
bGRFdGNEaXI8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJPbGQgZXRjOiAiPDxvbGRFdGNEaXI7
CisKICAgICBRU3RyaW5nIG5ld0V0Yz1ob21lRGlyKyIvLngyZ28vZXRjIjsKICAgICBRRGlyIGQg
KCBuZXdFdGMgKTsKICAgICBpZiAoICFkLmV4aXN0cygpICkKQEAgLTg5MTUsMzEgKzkxNDMsNDAg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OnNhdmVDeWdudXNTZXR0aW5ncygpCiAKICAgICBldGNzdC5z
ZXRWYWx1ZSAoICJuYXRpdmUiLHdhcGlTaG9ydEZpbGVOYW1lICggbmV3RXRjICkgKTsKICAgICBl
dGNzdC5zeW5jKCk7Ci0gICAgeDJnb0RlYnVnPDwibmV3IGV0YzoiPDx3YXBpU2hvcnRGaWxlTmFt
ZSAoIG5ld0V0YyApIDw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8Ik5ldyBldGM6ICI8PHdhcGlT
aG9ydEZpbGVOYW1lICggbmV3RXRjICk7CisKIAogICAgIFFTZXR0aW5ncyBiaW5zdCAoICJIS0VZ
X0NVUlJFTlRfVVNFUlxcU29mdHdhcmUiCiAgICAgICAgICAgICAgICAgICAgICAgIlxcQ3lnbnVz
IFNvbHV0aW9uc1xcQ3lnd2luXFxtb3VudHMgdjJcXC9iaW4iLAogICAgICAgICAgICAgICAgICAg
ICAgIFFTZXR0aW5nczo6TmF0aXZlRm9ybWF0ICk7CiAgICAgb2xkQmluRGlyPVFTdHJpbmc6Om51
bGw7CiAgICAgb2xkQmluRGlyPWJpbnN0LnZhbHVlICggIm5hdGl2ZSIsb2xkQmluRGlyICkudG9T
dHJpbmcoKTsKLSAgICB4MmdvRGVidWc8PCJvbGQgYmluOiI8PG9sZEJpbkRpcjw8ZW5kbDsKKwor
ICAgIHgyZ29EZWJ1Zzw8Ik9sZCBiaW46ICI8PG9sZEJpbkRpcjsKKwogICAgIFFTdHJpbmcgbmV3
QmluPWFwcERpcjsKICAgICBuZXdCaW4ucmVwbGFjZSAoICIvIiwiXFwiICk7CiAgICAgYmluc3Qu
c2V0VmFsdWUgKCAibmF0aXZlIix3YXBpU2hvcnRGaWxlTmFtZSAoIG5ld0JpbiApICk7CiAgICAg
Ymluc3Quc3luYygpOwotICAgIHgyZ29EZWJ1Zzw8Im5ldyBiaW46Ijw8bmV3QmluPDxlbmRsOwor
CisgICAgeDJnb0RlYnVnPDwiTmV3IGJpbjogIjw8bmV3QmluOwogCiAgICAgUVNldHRpbmdzIHRt
cHN0ICggIkhLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZSIKICAgICAgICAgICAgICAgICAgICAg
ICAiXFxDeWdudXMgU29sdXRpb25zXFxDeWd3aW5cXG1vdW50cyB2MlxcL3RtcCIsCiAgICAgICAg
ICAgICAgICAgICAgICAgUVNldHRpbmdzOjpOYXRpdmVGb3JtYXQgKTsKICAgICBvbGRUbXBEaXI9
UVN0cmluZzo6bnVsbDsKICAgICBvbGRUbXBEaXI9dG1wc3QudmFsdWUgKCAibmF0aXZlIixvbGRU
bXBEaXIgKS50b1N0cmluZygpOwotICAgIHgyZ29EZWJ1Zzw8Im9sZCB0bXA6Ijw8b2xkVG1wRGly
PDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiT2xkIHRtcDogIjw8b2xkVG1wRGlyOworCiAgICAg
UVN0cmluZyBuZXdUbXA9UURpcjo6dGVtcFBhdGgoKTsKICAgICBuZXdUbXAucmVwbGFjZSAoICIv
IiwiXFwiICk7CiAgICAgdG1wc3Quc2V0VmFsdWUgKCAibmF0aXZlIix3YXBpU2hvcnRGaWxlTmFt
ZSAoIG5ld1RtcCApICk7CiAgICAgdG1wc3Quc3luYygpOwotICAgIHgyZ29EZWJ1Zzw8Im5ldyB0
bXA6Ijw8bmV3VG1wPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiTmV3IHRtcDogIjw8bmV3VG1w
OworCiB9CiAKIHZvaWQgT05NYWluV2luZG93OjpyZXN0b3JlQ3lnbnVzU2V0dGluZ3MoKQpAQCAt
ODk1MCw3ICs5MTg3LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnJlc3RvcmVDeWdudXNTZXR0aW5n
cygpCiAgICAgICAgIFFTZXR0aW5ncyBzdCAoICJIS0VZX0NVUlJFTlRfVVNFUlxcU29mdHdhcmUi
CiAgICAgICAgICAgICAgICAgICAgICAgICJcXEN5Z251cyBTb2x1dGlvbnNcXEN5Z3dpblxcbW91
bnRzIHYyXFwvZXRjIiwKICAgICAgICAgICAgICAgICAgICAgICAgUVNldHRpbmdzOjpOYXRpdmVG
b3JtYXQgKTsKLSAgICAgICAgeDJnb0RlYnVnPDwiUmVtb3ZpbmcgL2V0YyBmcm9tIGN5Z3dpbiBt
b3VudHNcbiI7CisKKyAgICAgICAgeDJnb0RlYnVnPDwiUmVtb3ZpbmcgL2V0YyBmcm9tIGN5Z3dp
biBtb3VudHMuIjsKKwogICAgICAgICBzdC5yZW1vdmUgKCAiIiApOwogICAgICAgICBzdC5zeW5j
KCk7CiAgICAgfQpAQCAtODk2MSwxNCArOTIwMCwxOCBAQCB2b2lkIE9OTWFpbldpbmRvdzo6cmVz
dG9yZUN5Z251c1NldHRpbmdzKCkKICAgICAgICAgICAgICAgICAgICAgICAgUVNldHRpbmdzOjpO
YXRpdmVGb3JtYXQgKTsKICAgICAgICAgc3Quc2V0VmFsdWUgKCAibmF0aXZlIixvbGRFdGNEaXIg
KTsKICAgICAgICAgc3Quc3luYygpOwotICAgICAgICB4MmdvRGVidWc8PCJSZXN0b3JpbmcgL2V0
YyBpbiBjeWd3aW4gbW91bnRzXG4iOworCisgICAgICAgIHgyZ29EZWJ1Zzw8IlJlc3RvcmluZyAv
ZXRjIGluIGN5Z3dpbiBtb3VudHMuIjsKKwogICAgIH0KICAgICBpZiAoIG9sZEJpbkRpcj09UVN0
cmluZzo6bnVsbCApCiAgICAgewogICAgICAgICBRU2V0dGluZ3Mgc3QgKCAiSEtFWV9DVVJSRU5U
X1VTRVJcXFNvZnR3YXJlIgogICAgICAgICAgICAgICAgICAgICAgICAiXFxDeWdudXMgU29sdXRp
b25zXFxDeWd3aW5cXG1vdW50cyB2MlxcL2JpbiIsCiAgICAgICAgICAgICAgICAgICAgICAgIFFT
ZXR0aW5nczo6TmF0aXZlRm9ybWF0ICk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IlJlbW92aW5nIC9i
aW4gZnJvbSBjeWd3aW4gbW91bnRzXG4iOworCisgICAgICAgIHgyZ29EZWJ1Zzw8IlJlbW92aW5n
IC9iaW4gZnJvbSBjeWd3aW4gbW91bnRzLiI7CisKICAgICAgICAgc3QucmVtb3ZlICggIiIgKTsK
ICAgICAgICAgc3Quc3luYygpOwogICAgIH0KQEAgLTg5NzksMTQgKzkyMjIsMTggQEAgdm9pZCBP
Tk1haW5XaW5kb3c6OnJlc3RvcmVDeWdudXNTZXR0aW5ncygpCiAgICAgICAgICAgICAgICAgICAg
ICAgIFFTZXR0aW5nczo6TmF0aXZlRm9ybWF0ICk7CiAgICAgICAgIHN0LnNldFZhbHVlICggIm5h
dGl2ZSIsb2xkQmluRGlyICk7CiAgICAgICAgIHN0LnN5bmMoKTsKLSAgICAgICAgeDJnb0RlYnVn
PDwiUmVzdG9yaW5nIC9iaW4gaW4gY3lnd2luIG1vdW50c1xuIjsKKworICAgICAgICB4MmdvRGVi
dWc8PCJSZXN0b3JpbmcgL2JpbiBpbiBjeWd3aW4gbW91bnRzLiI7CisKICAgICB9CiAgICAgaWYg
KCBvbGRUbXBEaXI9PVFTdHJpbmc6Om51bGwgKQogICAgIHsKICAgICAgICAgUVNldHRpbmdzIHN0
ICggIkhLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZSIKICAgICAgICAgICAgICAgICAgICAgICAg
IlxcQ3lnbnVzIFNvbHV0aW9uc1xcQ3lnd2luXFxtb3VudHMgdjJcXC90bXAiLAogICAgICAgICAg
ICAgICAgICAgICAgICBRU2V0dGluZ3M6Ok5hdGl2ZUZvcm1hdCApOwotICAgICAgICB4MmdvRGVi
dWc8PCJSZW1vdmluZyAvdG1wIGZyb20gY3lnd2luIG1vdW50c1xuIjsKKworICAgICAgICB4Mmdv
RGVidWc8PCJSZW1vdmluZyAvdG1wIGZyb20gY3lnd2luIG1vdW50cy4iOworCiAgICAgICAgIHN0
LnJlbW92ZSAoICIiICk7CiAgICAgICAgIHN0LnN5bmMoKTsKICAgICB9CkBAIC04OTk3LDcgKzky
NDQsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6cmVzdG9yZUN5Z251c1NldHRpbmdzKCkKICAgICAg
ICAgICAgICAgICAgICAgICAgUVNldHRpbmdzOjpOYXRpdmVGb3JtYXQgKTsKICAgICAgICAgc3Qu
c2V0VmFsdWUgKCAibmF0aXZlIixvbGRUbXBEaXIgKTsKICAgICAgICAgc3Quc3luYygpOwotICAg
ICAgICB4MmdvRGVidWc8PCJSZXN0b3JpbmcgL3RtcCBpbiBjeWd3aW4gbW91bnRzXG4iOworCisg
ICAgICAgIHgyZ29EZWJ1Zzw8IlJlc3RvcmluZyAvdG1wIGluIGN5Z3dpbiBtb3VudHMuIjsKKwog
ICAgIH0KICAgICBpZiAoIE9OTWFpbldpbmRvdzo6cG9ydGFibGUgKQogICAgIHsKQEAgLTkwMTcs
NyArOTI2Niw4IEBAIHZvaWQgT05NYWluV2luZG93OjpyZW1vdmVDeWd3aW5FbnRyeSgpCiAgICAg
UVNldHRpbmdzIHN0ICggIkhLRVlfQ1VSUkVOVF9VU0VSXFxTb2Z0d2FyZSIKICAgICAgICAgICAg
ICAgICAgICAiXFxDeWdudXMgU29sdXRpb25zXFxDeWd3aW4iLAogICAgICAgICAgICAgICAgICAg
IFFTZXR0aW5nczo6TmF0aXZlRm9ybWF0ICk7Ci0gICAgeDJnb0RlYnVnPDwiUmVtb3ZpbmcgY3ln
d2luXG4iOworICAgIHgyZ29EZWJ1Zzw8IlJlbW92aW5nIGN5Z3dpbi4iOworCiAgICAgc3QucmVt
b3ZlICggIiIgKTsKICAgICBzdC5zeW5jKCk7CiAKQEAgLTkwMjgsNyArOTI3OCw5IEBAIHZvaWQg
T05NYWluV2luZG93OjpyZW1vdmVDeVNvbEVudHJ5KCkKICAgICBRU2V0dGluZ3Mgc3QgKCAiSEtF
WV9DVVJSRU5UX1VTRVJcXFNvZnR3YXJlIgogICAgICAgICAgICAgICAgICAgICJcXEN5Z251cyBT
b2x1dGlvbnMiLAogICAgICAgICAgICAgICAgICAgIFFTZXR0aW5nczo6TmF0aXZlRm9ybWF0ICk7
Ci0gICAgeDJnb0RlYnVnPDwiUmVtb3ZpbmcgY3lnbnVzIHNvbHV0aW9uc1xuIjsKKworICAgIHgy
Z29EZWJ1Zzw8IlJlbW92aW5nIGN5Z251cyBzb2x1dGlvbnMuIjsKKwogICAgIHN0LnJlbW92ZSAo
ICIiICk7CiAgICAgc3Quc3luYygpOwogfQpAQCAtOTA0NSw3ICs5Mjk3LDkgQEAgdm9pZCBPTk1h
aW5XaW5kb3c6OnN0YXJ0UHVsc2VkKCkKICAgICBRRGlyIGRyICggaG9tZURpciApOwogICAgIGRy
Lm1rcGF0aCAoIHB1bHNlRGlyICk7CiAgICAgcHVsc2VEaXI9d2FwaVNob3J0RmlsZU5hbWUgKCBw
dWxzZURpciApOwotICAgIHgyZ29EZWJ1Zzw8InRlbXBsYXRlOiAiPDxwdWxzZURpcisiL3RtcCI8
PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJwdWxzZSB0ZW1wbGF0ZTogIjw8cHVsc2VEaXIrIi90
bXAiOworCiAgICAgUVRlbXBvcmFyeUZpbGUqIGZsPW5ldyBRVGVtcG9yYXJ5RmlsZSAoIHB1bHNl
RGlyKyIvdG1wIiApOwogICAgIGZsLT5vcGVuKCk7CiAgICAgcHVsc2VEaXI9ZmwtPmZpbGVOYW1l
KCk7CkBAIC05MDUzLDcgKzkzMDcsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c3RhcnRQdWxzZWQo
KQogICAgIGRlbGV0ZSBmbDsKICAgICBRRmlsZTo6cmVtb3ZlICggcHVsc2VEaXIgKTsKICAgICBk
ci5ta3BhdGggKCBwdWxzZURpciApOwotICAgIHgyZ29EZWJ1Zzw8InB1bHNlIHRtcCBmaWxlOiAi
PDxwdWxzZURpcjw8ZW5kbDsKKworICAgIHgyZ29EZWJ1Zzw8InB1bHNlIHRtcCBmaWxlOiAiPDxw
dWxzZURpcjsKKwogICAgIFFTdHJpbmdMaXN0IHBFbnY9UVByb2Nlc3M6OnN5c3RlbUVudmlyb25t
ZW50KCk7CiAgICAgZm9yICggaW50IGk9MDsgaTxwRW52LnNpemUoKTsgKytpICkKICAgICB7CkBA
IC05MDkzLDEyICs5MzQ5LDE1IEBAIHZvaWQgT05NYWluV2luZG93OjpzdGFydFB1bHNlZCgpCiAg
ICAgcHVsc2VTZXJ2ZXItPnNldFdvcmtpbmdEaXJlY3RvcnkgKCB3YXBpU2hvcnRGaWxlTmFtZSAo
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwRGlyKyJcXHB1
bHNlIiApICk7CiAgICAgcHVsc2VTZXJ2ZXItPnN0YXJ0ICggInB1bHNlXFxwdWxzZWF1ZGlvLmV4
ZSIscHVsc2VBcmdzICk7Ci0gICAgeDJnb0RlYnVnPDwic3RhcnRpbmcgcHVsc2VcXHB1bHNlYXVk
aW8uZXhlICI8PHB1bHNlQXJncy5qb2luICggIiAiICkgPDwKKworICAgIHgyZ29EZWJ1Zzw8IlN0
YXJ0aW5nIHB1bHNlXFxwdWxzZWF1ZGlvLmV4ZSAiPDxwdWxzZUFyZ3Muam9pbiAoICIgIiApIDw8
CiAgICAgICAgICAgICAgIiB3b3JraW5nIGRpcjogIjw8Ci0gICAgICAgICAgICAgd2FwaVNob3J0
RmlsZU5hbWUgKCBhcHBEaXIrIlxccHVsc2UiICkgPDxlbmRsOworICAgICAgICAgICAgIHdhcGlT
aG9ydEZpbGVOYW1lICggYXBwRGlyKyJcXHB1bHNlIiApOworCiAgICAgcHVsc2VUaW1lcj1uZXcg
UVRpbWVyKHRoaXMpOwotICAgIHgyZ29EZWJ1Zzw8ImNvbm5lY3QgdGltZXIiOworCiAgICAgY29u
bmVjdCAocHVsc2VUaW1lciwgU0lHTkFMKHRpbWVvdXQoKSksIHRoaXMsIFNMT1Qoc2xvdENoZWNr
UHVsc2UoKSkpOworICAgIHgyZ29EZWJ1Zzw8IkNvbm5lY3RlZCB0aW1lci4iOwogICAgIHB1bHNl
VGltZXItPnN0YXJ0KDIwMDApOwogfQogCkBAIC05MTA4LDcgKzkzNjcsOSBAQCB2b2lkIE9OTWFp
bldpbmRvdzo6c2xvdENoZWNrUHVsc2UoKQogICAgIGlmKHB1bHNlU2VydmVyLT5zdGF0ZSgpIT1R
UHJvY2Vzczo6UnVubmluZykKICAgICB7CiAgICAgICAgIHB1bHNlU2VydmVyLT5zdGFydCAoICJw
dWxzZVxccHVsc2VhdWRpby5leGUiLHB1bHNlQXJncyApOwotICAgICAgICB4MmdvRGVidWc8PCJy
ZXN0YXJ0aW5nIHB1bHNlXFxwdWxzZWF1ZGlvLmV4ZSAiPDxwdWxzZUFyZ3Muam9pbiAoICIgIiAp
OworCisgICAgICAgIHgyZ29EZWJ1Zzw8IlJlc3RhcnRpbmcgcHVsc2VcXHB1bHNlYXVkaW8uZXhl
ICI8PHB1bHNlQXJncy5qb2luICggIiAiICk7CisKICAgICB9CiB9CiAKQEAgLTkxMTYsNyArOTM3
Nyw5IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90Q2hlY2tQdWxzZSgpCiAvLyAjaWZkZWYgQ0ZH
Q0xJRU5UCiB2b2lkIE9OTWFpbldpbmRvdzo6eG9yZ1NldHRpbmdzKCkKIHsKLSAgICB4MmdvRGVi
dWc8PCJnZXR0aW5nIHhvcmcgc2V0dGluZ3MiPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiR2V0
dGluZyBYb3JnIHNldHRpbmdzLiI7CisKIAogICAgIFgyZ29TZXR0aW5ncyBzdCAoICJzZXR0aW5n
cyIgKTsKIApAQCAtOTE1MSw3ICs5NDE0LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OnhvcmdTZXR0
aW5ncygpCiAKIHZvaWQgT05NYWluV2luZG93OjpzbG90U2V0V2luU2VydmVyc1JlYWR5KCkKIHsK
LSAgICB4MmdvRGVidWc8PCJhbGwgd2luc2VydmVycyBhcmUgc3RhcnRlZFxuIjsKKworICAgIHgy
Z29EZWJ1Zzw8IkFsbCB3aW5zZXJ2ZXJzIGFyZSBzdGFydGVkLiI7CisKICAgICB3aW5TZXJ2ZXJz
UmVhZHk9dHJ1ZTsKICAgICByZXN0b3JlQ3lnbnVzU2V0dGluZ3MoKTsKIH0KQEAgLTkxNzEsMTAg
Kzk0MzYsMTIgQEAgdm9pZCBPTk1haW5XaW5kb3c6OmdlbmVyYXRlRXRjRmlsZXMoKQogICAgICAg
ICBRU3RyaW5nIHNpZCwgc3lzLCB1c2VyLCBncnNpZCwgZ3JuYW1lOwogICAgICAgICBpZiAoICF3
YXBpQWNjb3VudEluZm8gKCAmc2lkLCZ1c2VyLCZncnNpZCwgJmdybmFtZSwgJnN5cyApICkKICAg
ICAgICAgewotLy8gCQkJeDJnb0RlYnVnPDwiR2V0IGFjY291bnQgaW5mbyBmYWlsZWRcbiI7CisK
KyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkdldCBhY2NvdW50IGluZm8gZmFpbGVkLiI7CiAgICAg
ICAgICAgICBjbG9zZSgpOwogICAgICAgICB9CiAKKwogLy8gCQl4MmdvRGVidWc8PCJzaWQ6ICI8
PHNpZCA8PCIgc3lzdGVtOiI8PAogLy8gCQlzeXM8PCAiIHVzZXI6ICI8PHVzZXI8PCIgZ3JvdXAg
c2lkOiI8PGdyc2lkPDwKIC8vIAkJImdyb3VwIG5hbWU6ICI8PGdybmFtZTw8ZW5kbDsKQEAgLTky
MDksNyArOTQ3Niw5IEBAIHZvaWQgT05NYWluV2luZG93OjpnZW5lcmF0ZUV0Y0ZpbGVzKCkKICAg
ICAgICAgICAgPDxhcHBEaXI8PCIvc2Z0cC1zZXJ2ZXJcbiI7CiAjZW5kaWYKICAgICAgICAgZmls
ZS5jbG9zZSgpOwotICAgICAgICB4MmdvRGVidWc8PGV0Y0RpciArIi9zc2hkX2NvbmZpZyBjcmVh
dGVkIjsKKworICAgICAgICB4MmdvRGVidWc8PGV0Y0RpciArIi9zc2hkX2NvbmZpZyBjcmVhdGVk
LiI7CisKICNpZmRlZiBRX09TX1dJTgogICAgIH0KICNlbmRpZgpAQCAtOTIyMyw3ICs5NDkyLDkg
QEAgdm9pZCBPTk1haW5XaW5kb3c6OmdlbmVyYXRlSG9zdERzYUtleSgpCiAgICAgaWYgKCAhUUZp
bGU6OmV4aXN0cyAoIGV0Y0RpcisiL3NzaF9ob3N0X2RzYV9rZXkiICkgfHwKICAgICAgICAgICAg
ICFRRmlsZTo6ZXhpc3RzICggZXRjRGlyKyIvc3NoX2hvc3RfZHNhX2tleS5wdWIiICkgKQogICAg
IHsKLSAgICAgICAgLyoJCXgyZ29EZWJ1Zzw8IkdlbmVyYXRpbmcgaG9zdCBEU0Ega2V5XG4iOyov
CisKKyAgICAgICAgeDJnb0RlYnVnPDwiR2VuZXJhdGluZyBob3N0IERTQSBrZXkuIjsKKwogI2lm
ZGVmIFFfT1NfV0lOCiAgICAgICAgIFFTdHJpbmcgZm5hbWU9Y3lnd2luUGF0aCAoIHdhcGlTaG9y
dEZpbGVOYW1lICggZXRjRGlyICkgKSArCiAgICAgICAgICAgICAgICAgICAgICAgIi9zc2hfaG9z
dF9kc2Ffa2V5IjsKQEAgLTkyNjIsNyArOTUzMyw5IEBAIHZvaWQgT05NYWluV2luZG93OjpzdGFy
dFNzaGQoKQogICAgIGRlc2t0b3BOYW1lKz1nZXRlbnYgKCAiVVNFUk5BTUUiICk7CiAgICAgY2hh
ciogZGVza3RvcD1uZXcgY2hhcltkZXNrdG9wTmFtZS5zaXplKCkgKzFdOwogICAgIHN0cmNweSAo
IGRlc2t0b3AsZGVza3RvcE5hbWUuY19zdHIoKSApOwotICAgIHgyZ29EZWJ1Zzw8IkNyZWF0aW5n
IGRlc2t0b3A6ICI8PGRlc2t0b3A8PGVuZGw7CisKKyAgICB4MmdvRGVidWc8PCJDcmVhdGluZyBk
ZXNrdG9wOiAiPDxkZXNrdG9wOworCiAgICAgaWYgKCAhQ3JlYXRlRGVza3RvcEEgKAogICAgICAg
ICAgICAgICAgIGRlc2t0b3AsCiAgICAgICAgICAgICAgICAgMCwKQEAgLTkyNzMsNyArOTU0Niw5
IEBAIHZvaWQgT05NYWluV2luZG93OjpzdGFydFNzaGQoKQogICAgICAgICAgICAgKSApCiAgICAg
ewogICAgICAgICBzdHJjcHkgKCBkZXNrdG9wLCIiICk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8IkRl
c2t0b3AgY3JlYXRpb24gZmFpbGVkLCB1c2luZyBkZWZhdWx0XG4iOworCisgICAgICAgIHgyZ29E
ZWJ1Zzw8IkRlc2t0b3AgY3JlYXRpb24gZmFpbGVkLCB1c2luZyBkZWZhdWx0LiI7CisKICAgICB9
CiAgICAgWmVyb01lbW9yeSAoICZzaSwgc2l6ZW9mICggc2kgKSApOwogICAgIFplcm9NZW1vcnkg
KCAmc3NoZCwgc2l6ZW9mICggc3NoZCApICk7CkBAIC05Mjk5LDcgKzk1NzQsOCBAQCB2b2lkIE9O
TWFpbldpbmRvdzo6c3RhcnRTc2hkKCkKICAgICBhcmd1bWVudHM8PCItZiI8PGV0Y0RpciArIi9z
c2hkX2NvbmZpZyI8PCAiLWgiIDw8CiAgICAgICAgICAgICAgZXRjRGlyKyIvc3NoX2hvc3RfZHNh
X2tleSI8PCItRCI8PCItcCI8PGNsaWVudFNzaFBvcnQ7CiAgICAgc3NoZC0+c3RhcnQgKCBhcHBE
aXIrIi9zc2hkIixhcmd1bWVudHMgKTsKLSAgICB4MmdvRGVidWc8PCJVc2VybW9kZSBzc2hkIHN0
YXJ0ZWQiOworICAgIHgyZ29EZWJ1Zzw8IlVzZXJtb2RlIHNzaGQgc3RhcnRlZC4iOworCiAjZW5k
aWYKIH0KIApAQCAtOTQwMSw3ICs5Njc3LDE0IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90U2V0
UHJveHlXaW5GdWxsc2NyZWVuKCkKIHZvaWQgT05NYWluV2luZG93OjpyZXNpemVQcm94eVdpbk9u
RGlzcGxheShpbnQgZGlzcCkKIHsKICAgICBRUmVjdCBnZW9tPVFBcHBsaWNhdGlvbjo6ZGVza3Rv
cCgpLT5zY3JlZW5HZW9tZXRyeShkaXNwLTEpOwotICAgIC8veDJnb0RlYnVnPDwicmVzaXppbmcg
cHJveHkgd2luIHRvIGZpdCBkaXNwbGF5ICI8PGRpc3A8PCIoIjw8Z2VvbTw8IikiPDxlbmRsOwor
CisgICAgUVN0cmluZyBnZW9TdHIgPQorICAgICAgICAgICAgIih4OiAiICsgUVN0cmluZygiJTEi
KS5hcmcoZ2VvbS54KCkpICsKKyAgICAgICAgICAgICIsIHk6ICIrIFFTdHJpbmcoIiUxIikuYXJn
KGdlb20ueSgpKSArCisgICAgICAgICAgICAiLCB3OiAiKyBRU3RyaW5nKCIlMSIpLmFyZyhnZW9t
LndpZHRoKCkpICsKKyAgICAgICAgICAgICIsIGg6ICIrIFFTdHJpbmcoIiUxIikuYXJnKGdlb20u
aGVpZ2h0KCkpOworICAgIHgyZ29EZWJ1Zzw8IlJlc2l6aW5nIHByb3h5IHdpbmRvdyB0byBmaXQg
RGlzcGxheTogIiArIFFTdHJpbmcoIiUxIikuYXJnKGRpc3ApICsgIiAiICsgZ2VvU3RyOworCiAj
aWZkZWYgUV9PU19MSU5VWAogICAgIFhTeW5jKFFYMTFJbmZvOjpkaXNwbGF5KCksZmFsc2UpOwog
ICAgIFhNb3ZlV2luZG93KFFYMTFJbmZvOjpkaXNwbGF5KCksIHByb3h5V2luSWQsZ2VvbS54KCks
Z2VvbS55KCkpOwpAQCAtOTQ0NCwxNCArOTcyNywyMSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6c2xv
dENvbmZpZ1hpbmVyYW1hKCkKICAgICBRUmVjdCBuZXdHZW9tZXRyeT1wcm94eVdpbkdlb21ldHJ5
KCk7CiAgICAgaWYgKG5ld0dlb21ldHJ5LmlzTnVsbCgpKQogICAgIHsKLS8vICAgICB4MmdvRGVi
dWc8PCJlcnJvciBnZXR0aW5nIHdpbmRvdyBnZW9tZXRyeSAod2luZG93IGNsb3NlZD8pXG4iOwor
ICAgICAgICB4MmdvV2FybmluZ2YoNyk8PCB0cigiRXJyb3IgZ2V0dGluZyB3aW5kb3cgZ2VvbWV0
cnkgKHdpbmRvdyBjbG9zZWQpPyIpOwogICAgICAgICB4aW5lcmFtYVRpbWVyLT5zdG9wKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaWYgKG5ld0dlb21ldHJ5PT1sYXN0RGlzcGxheUdl
b21ldHJ5KQogICAgICAgICByZXR1cm47CiAgICAgbGFzdERpc3BsYXlHZW9tZXRyeT1uZXdHZW9t
ZXRyeTsKLS8vICAgIHgyZ29EZWJ1Zzw8Ik5ldyBwcm94eSBnZW9tZXRyeTogIjw8bGFzdERpc3Bs
YXlHZW9tZXRyeTw8ZW5kbDsKKworICAgIFFTdHJpbmcgZ2VvU3RyID0KKyAgICAgICAgICAgICIo
eDogIiArIFFTdHJpbmcoIiUxIikuYXJnKGxhc3REaXNwbGF5R2VvbWV0cnkueCgpKSArCisgICAg
ICAgICAgICAiLCB5OiAiKyBRU3RyaW5nKCIlMSIpLmFyZyhsYXN0RGlzcGxheUdlb21ldHJ5Lnko
KSkgKworICAgICAgICAgICAgIiwgdzogIisgUVN0cmluZygiJTEiKS5hcmcobGFzdERpc3BsYXlH
ZW9tZXRyeS53aWR0aCgpKSArCisgICAgICAgICAgICAiLCBoOiAiKyBRU3RyaW5nKCIlMSIpLmFy
ZyhsYXN0RGlzcGxheUdlb21ldHJ5LmhlaWdodCgpKTsKKyAgICB4MmdvRGVidWc8PCJOZXcgcHJv
eHkgZ2VvbWV0cnk6ICIgKyBnZW9TdHI7CisKICAgICBRRGVza3RvcFdpZGdldCogcm9vdD1RQXBw
bGljYXRpb246OmRlc2t0b3AoKTsKICAgICBRTGlzdDxRUmVjdD4gbmV3WGluZXJhbWFTY3JlZW5z
OwogICAgIGZvciAoaW50IGk9MDsgaTwgcm9vdC0+bnVtU2NyZWVucygpOyArK2kpCkBAIC05NDYz
LDE3ICs5NzUzLDE5IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90Q29uZmlnWGluZXJhbWEoKQog
ICAgICAgICAgICAgaW50ZXJzZWN0aW9uPXJvb3QtPnNjcmVlbkdlb21ldHJ5KGkpLmludGVyc2Vj
dGVkKGxhc3REaXNwbGF5R2VvbWV0cnkpOwogICAgICAgICBpZiAoIWludGVyc2VjdGlvbi5pc051
bGwoKSkKICAgICAgICAgewotLy8gICAgICAgICAgICB4MmdvRGVidWc8PCJpbnRlcnNlY3RlZCB3
aXRoICI8PGk8PCI6ICI8PGludGVyc2VjdGlvbjw8ZW5kbDsKKyAgICAgICAgICAgIC8vICAgICAg
ICAgICAgeDJnb0RlYnVnPDwiaW50ZXJzZWN0ZWQgd2l0aCAiPDxpPDwiOiAiPDxpbnRlcnNlY3Rp
b248PGVuZGw7CiAgICAgICAgICAgICBpbnRlcnNlY3Rpb24ubW92ZUxlZnQoaW50ZXJzZWN0aW9u
LngoKS1sYXN0RGlzcGxheUdlb21ldHJ5LngoKSk7CiAgICAgICAgICAgICBpbnRlcnNlY3Rpb24u
bW92ZVRvcChpbnRlcnNlY3Rpb24ueSgpLWxhc3REaXNwbGF5R2VvbWV0cnkueSgpKTsKLS8vICAg
ICAgICAgICAgeDJnb0RlYnVnPDwieGluZXJhbWEgc2NyZWVuOiAiPDxpbnRlcnNlY3Rpb248PGVu
ZGw7CisKKyAgICAgICAgICAgIC8vICAgICAgICAgICAgeDJnb0RlYnVnPDwieGluZXJhbWEgc2Ny
ZWVuOiAiPDxpbnRlcnNlY3Rpb248PGVuZGw7CiAgICAgICAgICAgICBuZXdYaW5lcmFtYVNjcmVl
bnM8PGludGVyc2VjdGlvbjsKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoeGluZXJhbWFTY3Jl
ZW5zICE9IG5ld1hpbmVyYW1hU2NyZWVucykKICAgICB7CiAgICAgICAgIHhpbmVyYW1hU2NyZWVu
cz1uZXdYaW5lcmFtYVNjcmVlbnM7Ci0vLyAgICAgICAgeDJnb0RlYnVnPDwieGluZXJhbWEgc2Ny
ZWVuIGNoYW5nZWQsIG5ldyBzY3JlZW5zOiAiPDx4aW5lcmFtYVNjcmVlbnM8PGVuZGw7CisgICAg
ICAgIC8vICAgICAgICB4MmdvRGVidWc8PCJ4aW5lcmFtYSBzY3JlZW4gY2hhbmdlZCwgbmV3IHNj
cmVlbnM6ICI8PHhpbmVyYW1hU2NyZWVuczw8ZW5kbDsKKwogICAgICAgICB4aW5lcmFtYVRpbWVy
LT5zdG9wKCk7CiAgICAgICAgIFFTdHJpbmdMaXN0IHNjcmVlbnM7CiAgICAgICAgIGZvcmVhY2gg
KFFSZWN0IGRpc3AsIHhpbmVyYW1hU2NyZWVucykKQEAgLTk0ODIsNyArOTc3NCw2IEBAIHZvaWQg
T05NYWluV2luZG93OjpzbG90Q29uZmlnWGluZXJhbWEoKQogICAgICAgICBRU3RyaW5nIGNtZD0i
ZXhwb3J0IERJU1BMQVk9OiIrcmVzdW1pbmdTZXNzaW9uLmRpc3BsYXkrIjtwcmludGYgJyIrc2Ny
ZWVucy5qb2luKCJcXFxcbiIpKyInID4gIH4vLngyZ28vQy0iKwogICAgICAgICAgICAgICAgICAg
ICByZXN1bWluZ1Nlc3Npb24uc2Vzc2lvbklkKyIveGluZXJhbWEuY29uZiI7CiAKLSAgICAgICAg
eDJnb0RlYnVnPDxjbWQ8PGVuZGw7CiAgICAgICAgIHNzaENvbm5lY3Rpb24tPmV4ZWN1dGVDb21t
YW5kKGNtZCwgdGhpcywgU0xPVChzbG90WGluZXJhbWFDb25maWd1cmVkKCkpKTsKICAgICB9CiB9
CkBAIC05NTE0LDEyICs5ODA1LDE0IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90WGluZXJhbWFD
b25maWd1cmVkKCkKIHZvaWQgT05NYWluV2luZG93OjpzbG90RmluZFByb3h5V2luKCkKIHsKICNp
Zm5kZWYgUV9PU19EQVJXSU4KLS8vICAgICB4MmdvRGVidWc8PCJzZWFyY2ggcHJveHkgd2luOiAi
PDwiWDJHTy0iK3Jlc3VtaW5nU2Vzc2lvbi5zZXNzaW9uSWQ7CisgICAgeDJnb0RlYnVnPDwiU2Vh
cmNoaW5nIHByb3h5IHdpbjogWDJHTy0iICsgcmVzdW1pbmdTZXNzaW9uLnNlc3Npb25JZDsKKwog
ICAgIHByb3h5V2luSWQ9ZmluZFdpbmRvdyAoICJYMkdPLSIrcmVzdW1pbmdTZXNzaW9uLnNlc3Np
b25JZCApOwogICAgIGJvb2wgeGluZXJhbWE9ZGVmYXVsdFhpbmVyYW1hOwogICAgIGlmICggcHJv
eHlXaW5JZCApCiAgICAgewotICAgICAgICB4MmdvRGVidWc8PCJwcm94eSB3aW4gZm91bmQ6Ijw8
cHJveHlXaW5JZDsKKyAgICAgICAgeDJnb0RlYnVnPDwiUHJveHkgd2luIGZvdW5kOiAiICsgUVN0
cmluZygiJTEiKS5hcmcocHJveHlXaW5JZCk7CisKICAgICAgICAgc2V0UHJveHlXaW5UaXRsZSgp
OwogICAgICAgICBwcm94eVdpblRpbWVyLT5zdG9wKCk7CiAgICAgICAgIGlmICghZW1iZWRNb2Rl
KQpAQCAtOTU1NSw3ICs5ODQ4LDggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3RGaW5kUHJveHlX
aW4oKQogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHhpbmVyYW1hKQogICAgICAgICAg
ICAgewotICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlN0YXJ0aW5nIHhpbmVyYW1hIHRpbWVy
XG4iOworICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IlN0YXJ0aW5nIFhpbmVyYW1hIFRpbWVy
LiI7CisKICAgICAgICAgICAgICAgICBsYXN0RGlzcGxheUdlb21ldHJ5PVFSZWN0KCk7CiAgICAg
ICAgICAgICAgICAgeGluZXJhbWFTY3JlZW5zLmNsZWFyKCk7CiAgICAgICAgICAgICAgICAgeGlu
ZXJhbWFUaW1lci0+c3RhcnQoNTAwKTsKQEAgLTk1NjQsMjMgKzk4NTgsMjYgQEAgdm9pZCBPTk1h
aW5XaW5kb3c6OnNsb3RGaW5kUHJveHlXaW4oKQogCiAgICAgICAgIGlmICggZW1iZWRNb2RlICkK
ICAgICAgICAgewotICAgICAgICAgICAgeDJnb0RlYnVnPDwiY2hlY2tpbmcgcm9vdGxlc3MgY29u
ZmlnIjsKKyAgICAgICAgICAgIHgyZ29EZWJ1Zzw8IkNoZWNraW5nIHJvb3RsZXNzIGNvbmZpZy4i
OworCiAgICAgICAgICAgICBpZiAoIGNvbmZpZy5yb290bGVzcyApCiAgICAgICAgICAgICB7Ci0g
ICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwid2luIGlzIHJvb3RsZXNzIjsKKyAgICAgICAgICAg
ICAgICB4MmdvRGVidWc8PCJXaW5kb3cgaXMgcm9vdGxlc3MuIjsKICAgICAgICAgICAgICAgICBh
Y3RfZW1iZWRDb250b2wtPnNldEVuYWJsZWQgKCBmYWxzZSApOwogICAgICAgICAgICAgfQogICAg
ICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIHNsb3RBdHRhY2hQcm94eVdpbmRvdygpOwog
ICAgICAgICB9CiAjaWZkZWYgUV9PU19XSU4KLSAgICAgICAgeDJnb0RlYnVnPDwibWF4aW1pemVQ
cm94eVdpbjogIjw8bWF4aW1pemVQcm94eVdpbjsKKyAgICAgICAgeDJnb0RlYnVnPDwiTWF4aW1p
emUgcHJveHkgd2luOiAiPDxtYXhpbWl6ZVByb3h5V2luOworCiAgICAgICAgIGlmICggIXN0YXJ0
RW1iZWRkZWQgKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIG1heGltaXplUHJveHlXaW4g
KQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIFFEZXNrdG9wV2lkZ2V0IGR3OwotICAg
ICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Im1ha2luZyBwcm94eSB3aW4gZnVsbCBzY3JlZW4iOwor
CisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiTWFraW5nIHByb3h5IHdpbiBmdWxsIHNjcmVl
bi4iOwogICAgICAgICAgICAgICAgIHdhcGlTZXRGU1dpbmRvdyAoICggSFdORCApIHByb3h5V2lu
SWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHcuc2NyZWVuR2VvbWV0cnkg
KCB0aGlzICkgKTsKICAgICAgICAgICAgICAgICAvKndhcGlTaG93V2luZG93ICggKCBIV05EICkg
cHJveHlXaW5JZCwKQEAgLTk2MjEsOSArOTkxOCw4IEBAIHZvaWQgT05NYWluV2luZG93OjpzbG90
RGV0YWNoUHJveHlXaW5kb3coKQogICAgIC8vYW5kIHJlY29ubmVjdAogICAgIGlmICggIWVtYmVk
Q29udHJvbENoYW5nZWQgKQogICAgIHsKLSAgICAgICAgeDJnb0RlYnVnPDwiXG4iOwogICAgICAg
ICBzbG90RmluZFByb3h5V2luKCk7Ci0gICAgICAgIHgyZ29EZWJ1Zzw8InByb3h5IHdpbiBkZXRh
Y2hlZCwgcHJveHl3aW4gaXM6Ijw8cHJveHlXaW5JZDw8ZW5kbDsKKyAgICAgICAgeDJnb0RlYnVn
PDwiUHJveHkgd2luIGRldGFjaGVkLCBwcm94eXdpbiBpczogIjw8cHJveHlXaW5JZDsKICAgICB9
CiAjZW5kaWYKICAgICBlbWJlZENvbnRyb2xDaGFuZ2VkPWZhbHNlOwpAQCAtOTYzMiw3ICs5OTI4
LDggQEAgdm9pZCBPTk1haW5XaW5kb3c6OnNsb3REZXRhY2hQcm94eVdpbmRvdygpCiAKIHZvaWQg
T05NYWluV2luZG93OjpzbG90QXR0YWNoUHJveHlXaW5kb3coKQogewotICAgIHgyZ29EZWJ1Zzw8
InNsb3RBdHRhY2hQcm94eSI7CisgICAgeDJnb0RlYnVnPDwic2xvdEF0dGFjaFByb3h5V2luZG93
LiI7CisKICAgICBpZiAoIHN0YXJ0RW1iZWRkZWQgKQogICAgIHsKICAgICAgICAgZW1iZWRDb250
cm9sQ2hhbmdlZD1mYWxzZTsKQEAgLTk2NDYsNyArOTk0Myw5IEBAIHZvaWQgT05NYWluV2luZG93
OjpzbG90QXR0YWNoUHJveHlXaW5kb3coKQogICAgIH0KICAgICBlbHNlCiAgICAgewotICAgICAg
ICB4MmdvRGVidWc8PCJzdGFydCBlbWJlZGRlZCB3YXMgZmFsc2UiOworCisgICAgICAgIHgyZ29E
ZWJ1Zzw8IlN0YXJ0IGVtYmVkZGVkIHdhcyBmYWxzZS4iOworCiAgICAgICAgIHN0YXJ0RW1iZWRk
ZWQ9dHJ1ZTsKICAgICB9CiAKQEAgLTk5NTQsNyArMTAyNTMsOSBAQCB2b2lkIE9OTWFpbldpbmRv
dzo6c2xvdENoYW5nZUtiZExheW91dChjb25zdCBRU3RyaW5nJiBsYXlvdXQpCiAjaWZkZWYgUV9P
U19MSU5VWAogICAgIFFTdHJpbmdMaXN0IGFyZ3M7CiAgICAgYXJnczw8Ii1sYXlvdXQiPDxsYXlv
dXQ7Ci0gICAgeDJnb0RlYnVnPDwicnVubmluZyBzZXR4a2JtYXAgd2l0aCBwYXJhbXM6ICI8PGFy
Z3Muam9pbigiICIpOworCisgICAgeDJnb0RlYnVnPDwiUnVubmluZyBzZXR4a2JtYXAgd2l0aCBw
YXJhbXM6ICI8PGFyZ3Muam9pbigiICIpOworCiAgICAgUVByb2Nlc3M6OnN0YXJ0RGV0YWNoZWQo
InNldHhrYm1hcCIsYXJncyk7CiAjZW5kaWYKIH0KQEAgLTEwNzI3LDggKzExMDI4LDEwIEBAIHZv
aWQgT05NYWluV2luZG93OjpzbG90QWN0aXZhdGVXaW5kb3coKQogICAgICAgICBRQXBwbGljYXRp
b246OnNldEFjdGl2ZVdpbmRvdyAoIHRoaXMgKSA7CiAgICAgICAgIGFjdGl2YXRlV2luZG93KCk7
CiAKKwogICAgICAgICAvKgkJeDJnb0RlYnVnPDwiZm9jdXM6Ijw8cGFzcy0+aGFzRm9jdXMoKTsK
LSAgICAgICAgCQl4MmdvRGVidWc8PCJhY3RpdjoiPDxwYXNzLT5pc0FjdGl2ZVdpbmRvdygpOyov
CisgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwiYWN0aXY6Ijw8cGFzcy0+aXNBY3RpdmVXaW5k
b3coKTsqLworCiAgICAgICAgIFFUaW1lcjo6c2luZ2xlU2hvdCAoIDUwLCB0aGlzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBTTE9UICggc2xvdEVtYmVkVG9vbEJhclRvb2xUaXAoKSAp
ICk7CiAgICAgfQpAQCAtMTA4NzYsNyArMTExNzksNiBAQCBRU3RyaW5nIE9OTWFpbldpbmRvdzo6
dTNEYXRhUGF0aCgpCiAgICAgUVN0cmluZyBkcGF0aDsKICAgICBmb3IgKCBpbnQgaT0wOyBpPGVu
di5zaXplKCk7ICsraSApCiAgICAgewotLy8gCQl4MmdvRGVidWcgPDwgZW52W2ldOwogICAgICAg
ICAvL2NoZWNrIGlmIHdlIGhhdmUgVTMgU3lzdGVtCiAgICAgICAgIGlmICggZW52W2ldLmluZGV4
T2YgKCAiVTNfQVBQX0RBVEFfUEFUSD0iICkgPT0wICkKICAgICAgICAgewpAQCAtMTA5MTIsMTQg
KzExMjE0LDE4IEBAIHZvaWQgT05NYWluV2luZG93OjpjbGVhblBvcnRhYmxlKCkKIAogdm9pZCBP
Tk1haW5XaW5kb3c6OnJlbW92ZURpciAoIFFTdHJpbmcgcGF0aCApCiB7Ci0gICAgeDJnb0RlYnVn
PDwiZW50ZXJpbmcgIiA8PHBhdGg7CisKKyAgICB4MmdvRGVidWc8PCJyZW1vdmVEaXIsIGVudGVy
aW5nOiAiIDw8cGF0aDsKKwogICAgIFFEaXIgZHIgKCBwYXRoICk7CiAgICAgUVN0cmluZ0xpc3Qg
ZmlsZXM9ZHIuZW50cnlMaXN0ICggUURpcjo6RmlsZXMgKTsKICAgICBmb3IgKCBpbnQgaT0wOyBp
PGZpbGVzLnNpemUoKTsgKytpICkKICAgICB7CiAgICAgICAgIGlmICggZmlsZXNbaV0hPSJrbm93
bl9ob3N0cyIgfHwgY2xlYW5BbGxGaWxlcykKICAgICAgICAgewotICAgICAgICAgICAgeDJnb0Rl
YnVnPDwiY2xlYW5pbmcgZmlsZToiPDxwYXRoKyIvIitmaWxlc1tpXTsKKworICAgICAgICAgICAg
eDJnb0RlYnVnPDwiQ2xlYW5pbmcgZmlsZTogIjw8cGF0aCsiLyIrZmlsZXNbaV07CisKICAgICAg
ICAgICAgIGRyLnJlbW92ZSAoIHBhdGgrIi8iK2ZpbGVzW2ldICk7CiAgICAgICAgIH0KICAgICB9
CkBAIC0xMDk3MSw2ICsxMTI3Nyw3IEBAIGxvbmcgT05NYWluV2luZG93OjpYMTFGaW5kV2luZG93
ICggUVN0cmluZyB0ZXh0LCBsb25nIHJvb3RXaW4gKQogCiBsb25nIE9OTWFpbldpbmRvdzo6Zmlu
ZFdpbmRvdyAoIFFTdHJpbmcgdGV4dCApCiB7CisgICAgeDJnb0RlYnVnPDwiU2VhcmNoaW5nIHdp
bmRvdyB3aXRoIHRpdGxlOiAiICsgdGV4dDsKICNpZmRlZiBRX09TX0xJTlVYCiAgICAgcmV0dXJu
IFgxMUZpbmRXaW5kb3cgKCB0ZXh0ICk7CiAjZW5kaWYKQEAgLTEwOTg1LDcgKzExMjkyLDkgQEAg
bG9uZyBPTk1haW5XaW5kb3c6OmZpbmRXaW5kb3cgKCBRU3RyaW5nIHRleHQgKQogdm9pZCBPTk1h
aW5XaW5kb3c6OnNldFgyZ29jb25maWcgKCBjb25zdCBRU3RyaW5nJiB0ZXh0ICkKIHsKICAgICBt
X3gyZ29jb25maWc9dGV4dDsKLSAgICB4MmdvRGVidWc8PCJoYXZlIHNlc3Npb24gY29uZmlnIjsK
KworICAgIHgyZ29EZWJ1Zzw8IkhhdmVpbmcgYSBzZXNzaW9uIGNvbmZpZy4iOworCiAgICAgaW5p
dFdpZGdldHNFbWJlZCgpOwogfQogCkBAIC0xMDk5NSwxMiArMTEzMDQsMTYgQEAgdm9pZCBPTk1h
aW5XaW5kb3c6OmRvUGx1Z2luSW5pdCgpCiAgICAgRGxfaW5mbyBpbmZvOwogICAgIGRsYWRkciAo
ICggdm9pZCogKSAmICggT05NYWluV2luZG93OjpnZXRQb3J0YWJsZSApLCZpbmZvICk7CiAgICAg
UVN0cmluZyBmbmFtZT1pbmZvLmRsaV9mbmFtZTsKKwogICAgIHgyZ29EZWJ1Zzw8IkFwcGxpY2F0
aW9uIG5hbWU6IiA8PGZuYW1lOworCiAgICAgUVN0cmluZyBjbGllbnREaXI7CiAgICAgUVN0cmlu
ZyBwbHVnaW5EaXI7CiAgICAgaW50IHBvcz1mbmFtZS5sYXN0SW5kZXhPZiAoICIvIiApOwogICAg
IHBsdWdpbkRpcj1mbmFtZS5sZWZ0ICggcG9zICk7Ci0gICAgeDJnb0RlYnVnPDwiUGx1Z2luIERp
cjoiIDw8cGx1Z2luRGlyOworCisgICAgeDJnb0RlYnVnPDwiUGx1Z2luIGRpcmVjdG9yeTogIiA8
PHBsdWdpbkRpcjsKKwogICAgIFFEaXIgZHIgKCBwbHVnaW5EaXIgKTsKICAgICBpZiAoIGRyLmV4
aXN0cyAoICJ4MmdvY2xpZW50L3gyZ29jbGllbnQiICkgKQogICAgIHsKQEAgLTExMDI2LDcgKzEx
MzM5LDkgQEAgdm9pZCBPTk1haW5XaW5kb3c6OmRvUGx1Z2luSW5pdCgpCiAgICAgICAgICAgICBj
bGllbnREaXI9cGx1Z2luRGlyOwogICAgICAgICB9CiAgICAgfQotICAgIHgyZ29EZWJ1Zzw8IkNs
aWVudCBEaXI6Ijw8Y2xpZW50RGlyOworCisgICAgeDJnb0RlYnVnPDwiQ2xpZW50IGRpcmVjdG9y
eTogIjw8Y2xpZW50RGlyOworCiAgICAgUVN0cmluZyBwYXRoPWdldGVudiAoICJQQVRIIiApOwog
ICAgIHBhdGg9Y2xpZW50RGlyKyI6IitwbHVnaW5EaXIrIjoiK3BhdGg7CiAgICAgc2V0ZW52ICgg
IlBBVEgiLHBhdGgudG9Bc2NpaSAoKSwxICk7CkBAIC0xMTEwMiw3ICsxMTQxNyw5IEBAIHZvaWQg
T05NYWluV2luZG93OjpzbG90VXBkYXRlRW1iZWRXaW5kb3coKQogICAgICAgICBvbGRDb250YWlu
ZXJTaXplPWVtYmVkQ29udGFpbmVyLT5zaXplKCk7CiAgICAgICAgIG9sZENoaWxkUG9zPSBtYXBU
b0dsb2JhbCAoCiAgICAgICAgICAgICAgICAgICAgICAgICAgUVBvaW50ICggMCwwICkgKTsKLSAg
ICAgICAgeDJnb0RlYnVnPDwidXBkYXRpbmcgZW1iZWRkZWQgd2luZG93Ijw8ZW5kbDsKKworICAg
ICAgICB4MmdvRGVidWc8PCJVcGRhdGluZyBlbWJlZGRlZCB3aW5kb3cuIjsKKwogICAgIH0KIH0K
IApAQCAtMTExMTUsNyArMTE0MzIsOSBAQCB2b2lkIE9OTWFpbldpbmRvdzo6ZW1iZWRXaW5kb3cg
KCBsb25nIHduZElkICkKICAgICBjaGlsZElkPXduZElkOwogICAgIGVtYmVkQ29udGFpbmVyLT5z
aG93KCk7CiAjaWZkZWYgUV9PU19MSU5VWAotICAgIHgyZ29EZWJ1Zzw8ImVtYmVkZGluZyAiPDx3
bmRJZDw8IiBpbiBjb250YWluZXIiPDxlbmRsOworCisgICAgeDJnb0RlYnVnPDwiRW1iZWRkaW5n
IHdpbmRvdyB3aXRoIGlkICI8PHduZElkPDwiIGluIGNvbnRhaW5lci4iOworCiAgICAgZW1iZWRD
b250YWluZXItPmVtYmVkQ2xpZW50ICggd25kSWQgKTsKICNlbmRpZgogI2lmZGVmIFFfT1NfV0lO
CmRpZmYgLS1naXQgYS9vbm1haW53aW5kb3cuaCBiL29ubWFpbndpbmRvdy5oCmluZGV4IDVhNDhj
YmEuLjQxZWVjYTcgMTAwNjQ0Ci0tLSBhL29ubWFpbndpbmRvdy5oCisrKyBiL29ubWFpbndpbmRv
dy5oCkBAIC0zMjQsNiArMzI0LDkgQEAgcHVibGljOgogICAgICAgICBBUlRTLAogICAgICAgICBF
U0QKICAgICB9OworCisgICAgc3RhdGljIGJvb2wgZGVidWdnaW5nOworCiAgICAgc3RhdGljIGJv
b2wgcG9ydGFibGU7CiAgICAgT05NYWluV2luZG93ICggUVdpZGdldCAqcGFyZW50ID0gMCApOwog
ICAgIH5PTk1haW5XaW5kb3coKTsKZGlmZiAtLWdpdCBhL3Nob3dfcHJpbnRvdXRzLnNoIGIvc2hv
d19wcmludG91dHMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uM2YxNmMy
NAotLS0gL2Rldi9udWxsCisrKyBiL3Nob3dfcHJpbnRvdXRzLnNoCkBAIC0wLDAgKzEsMzAgQEAK
KyMhL2Jpbi9iYXNoCisKK2RpZSAoKSB7CisgICAgZWNobyA+JjIgIiRAIgorICAgIGV4aXQgMQor
fQorCitbICIkIyIgLWVxIDEgXSB8fCBkaWUgIllvdSBoYXZlIHRvIHByb3ZpZGUgdGhlIGZpbGVu
YW1lIHRvIGJlIHBhcnNlZCBmb3IgcHJpbnRvdXRzLCBleGl0aW5nLiIKKworZWNobyAiLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitlY2hvICJERUJVR1MiCitl
Y2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKK2NhdCAt
biAkMSB8IGdyZXAgJ3gyZ29EZWJ1ZycgICAgIHwgc2VkIC1lICdzL1woXlxzKlswLTldKlwpWyBc
dFwvXCpdKngyZ29EZWJ1Z1xzKjw8XHMqXCguKlwpJC9cMTpcdCBcMi8nICAgfCBzZWQgLWUgJ3Mv
LC8vZycgfCBzb3J0IC1rMW4KK2VjaG8gIiRERUJVR1MiCisKK2VjaG8gIi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorZWNobyAiSU5GT1MiCitlY2hvICItLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKK2NhdCAtbiAkMSB8IGdy
ZXAgJ3gyZ29JbmZvZignICAgIHwgc2VkIC1lICdzL1woXlxzKlswLTldKlwpWyBcdFwvXCpdKngy
Z29JbmZvZihcKFswLTldKlwpKVxzKjw8XHMqXCguKlwpJC9cMTpcdFwyXHRcMy8nICAgIHwgc2Vk
IC1lICdzLywvL2cnIHwgc29ydCAtazJuCisKK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorZWNobyAiV0FSTklOR1MiCitlY2hvICItLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKK2NhdCAtbiAkMSB8IGdyZXAgJ3gy
Z29XYXJuaW5nZignIHwgc2VkIC1lICdzL1woXlxzKlswLTldKlwpWyBcdFwvXCpdKngyZ29XYXJu
aW5nZihcKFswLTldKlwpKVxzKjw8XHMqXCguKlwpJC9cMTpcdFwyXHRcMy8nIHwgc2VkIC1lICdz
LywvL2cnIHwgc29ydCAtazJuCisKK2VjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tIgorZWNobyAiRVJST1JTIgorZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCitjYXQgLW4gJDEgfCBncmVwICd4MmdvRXJyb3Jm
KCcgICB8IHNlZCAtZSAncy9cKF5ccypbMC05XSpcKVsgXHRcL1wqXSp4MmdvRXJyb3JmKFwoWzAt
OV0qXCkpXHMqPDxccypcKC4qXCkkL1wxOlx0XDJcdFwzLycgICB8IHNlZCAtZSAncy8sLy9nJyB8
IHNvcnQgLWsybgorCmRpZmYgLS1naXQgYS9zc2htYXN0ZXJjb25uZWN0aW9uLmNwcCBiL3NzaG1h
c3RlcmNvbm5lY3Rpb24uY3BwCmluZGV4IDBkYjQwNzcuLjBiNmJlYjkgMTAwNjQ0Ci0tLSBhL3Nz
aG1hc3RlcmNvbm5lY3Rpb24uY3BwCisrKyBiL3NzaG1hc3RlcmNvbm5lY3Rpb24uY3BwCkBAIC0z
MTksNyArMzE5LDkgQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpydW4oKQogICAgICAgICBp
ZiAoIHNzaF9pbml0KCkgIT0wICkKICAgICAgICAgewogICAgICAgICAgICAgUVN0cmluZyBlcnI9
dHIgKCAiQ2FuIG5vdCBpbml0aWFsaXplIGxpYnNzaCIgKTsKKyNpZmRlZiBERUJVRwogICAgICAg
ICAgICAgeDJnb0RlYnVnPDxlcnI8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXQgY29u
bmVjdGlvbkVycm9yICggZXJyLCIiICk7CiAgICAgICAgICAgICBxdWl0KCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNDUsNyArMzQ3LDkgQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpy
dW4oKQogICAgIGlmICggbXlfc3NoX3Nlc3Npb24gPT0gTlVMTCApCiAgICAgewogICAgICAgICBR
U3RyaW5nIGVycj10ciAoICJDYW4gbm90IGNyZWF0ZSBzc2ggc2Vzc2lvbiIgKTsKKyNpZmRlZiBE
RUJVRwogICAgICAgICB4MmdvRGVidWc8PGVycjw8ZW5kbDsKKyNlbmRpZgogICAgICAgICBlbWl0
IGNvbm5lY3Rpb25FcnJvciAoIGVyciwiIiApOwogICAgICAgICBpZiAoIHJldmVyc2VUdW5uZWwg
KQogICAgICAgICAgICAgZW1pdCBpb0VyciAoIHJldmVyc2VUdW5uZWxDcmVhdG9yLGVyciwiIiAp
OwpAQCAtMzczLDcgKzM3Nyw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6cnVuKCkKICAg
ICAgICAgaWYgKCF0Y3BQcm94eVNvY2tldC0+d2FpdEZvckNvbm5lY3RlZCgzMDAwMCkpCiAgICAg
ICAgIHsKICAgICAgICAgICAgIFFTdHJpbmcgbWVzc2FnZT10ciAoICJDYW4gbm90IGNvbm5lY3Qg
dG8gcHJveHkgc2VydmVyIiApOworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICB4MmdvRGVidWc8
PG1lc3NhZ2U8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXQgY29ubmVjdGlvbkVycm9y
ICggIlByb3h5IiwgbWVzc2FnZSApOwogICAgICAgICAgICAgc3NoX2ZyZWUgKCBteV9zc2hfc2Vz
c2lvbiApOwogICAgICAgICAgICAgcXVpdCgpOwpAQCAtMzk0LDEyICs0MDAsMTYgQEAgdm9pZCBT
c2hNYXN0ZXJDb25uZWN0aW9uOjpydW4oKQogICAgIHsKICAgICAgICAgaWYoZGlzY29ubmVjdFNl
c3Npb25GbGFnKQogICAgICAgICB7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgIHgyZ29EZWJ1
Zzw8InNlc3Npb24gYWxyZWFkeSBkaXNjb25uZWN0ZWQsIGV4aXRpbmciPDxlbmRsOworI2VuZGlm
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgUVN0cmluZyBlcnI9c3No
X2dldF9lcnJvciAoIG15X3NzaF9zZXNzaW9uICk7CiAgICAgICAgIFFTdHJpbmcgbWVzc2FnZT10
ciAoICJDYW4gbm90IGNvbm5lY3QgdG8gIiApICtob3N0KyI6IitRU3RyaW5nOjpudW1iZXIgKCBw
b3J0ICk7CisjaWZkZWYgREVCVUcKICAgICAgICAgeDJnb0RlYnVnPDxtZXNzYWdlPDwiIC0gIjw8
ZXJyOworI2VuZGlmCiAgICAgICAgIGVtaXQgY29ubmVjdGlvbkVycm9yICggbWVzc2FnZSwgZXJy
ICk7CiAgICAgICAgIGlmICggcmV2ZXJzZVR1bm5lbCApCiAgICAgICAgICAgICBlbWl0IGlvRXJy
ICggcmV2ZXJzZVR1bm5lbENyZWF0b3IsbWVzc2FnZSxlcnIgKTsKQEAgLTQwOSw3ICs0MTksOSBA
QCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OnJ1bigpCiAgICAgfQogICAgIGlmKGRpc2Nvbm5l
Y3RTZXNzaW9uRmxhZykKICAgICB7CisjaWZkZWYgREVCVUcKICAgICAgICAgeDJnb0RlYnVnPDwi
c2Vzc2lvbiBhbHJlYWR5IGRpc2Nvbm5lY3RlZCwgZXhpdGluZyI8PGVuZGw7CisjZW5kaWYKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KICAgICBRU3RyaW5nIGVyck1zZzsKQEAgLTQxOCw3ICs0MzAs
OSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OnJ1bigpCiAgICAgewogICAgICAgICBpZihk
aXNjb25uZWN0U2Vzc2lvbkZsYWcpCiAgICAgICAgIHsKKyNpZmRlZiBERUJVRwogICAgICAgICAg
ICAgeDJnb0RlYnVnPDwic2Vzc2lvbiBhbHJlYWR5IGRpc2Nvbm5lY3RlZCwgZXhpdGluZyI8PGVu
ZGw7CisjZW5kaWYKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogICAgICAgICB3cml0
ZUhvc3RLZXk9d3JpdGVIb3N0S2V5UmVhZHk9ZmFsc2U7CkBAIC00NDMsNyArNDU3LDkgQEAgdm9p
ZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpydW4oKQogCiAgICAgaWYoZGlzY29ubmVjdFNlc3Npb25G
bGFnKQogICAgIHsKKyNpZmRlZiBERUJVRwogICAgICAgICB4MmdvRGVidWc8PCJzZXNzaW9uIGFs
cmVhZHkgZGlzY29ubmVjdGVkLCBleGl0aW5nIjw8ZW5kbDsKKyNlbmRpZgogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIHNzaF9vcHRpb25zX3NldCAoIG15X3NzaF9zZXNzaW9uLCBTU0hfT1BU
SU9OU19VU0VSLCB1c2VyLnRvQXNjaWkoKSApOwpAQCAtNDU5LDcgKzQ3NSw5IEBAIHZvaWQgU3No
TWFzdGVyQ29ubmVjdGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAgIGlmKGRpc2Nvbm5lY3RTZXNz
aW9uRmxhZykKICAgICAgICAgeworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICB4MmdvRGVidWc8
PCJzZXNzaW9uIGFscmVhZHkgZGlzY29ubmVjdGVkLCBleGl0aW5nIjw8ZW5kbDsKKyNlbmRpZgog
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjaWZkZWYgREVCVUcKQEAgLTQ3MSwxNCAr
NDg5LDE4IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6cnVuKCkKICAgICB7CiAgICAgICAg
IGlmKGRpc2Nvbm5lY3RTZXNzaW9uRmxhZykKICAgICAgICAgeworI2lmZGVmIERFQlVHCiAgICAg
ICAgICAgICB4MmdvRGVidWc8PCJzZXNzaW9uIGFscmVhZHkgZGlzY29ubmVjdGVkLCBleGl0aW5n
Ijw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgICAg
IFFTdHJpbmcgZXJyOwogICAgICAgICBpZiAoIWtlcmJlcm9zKQogICAgICAgICAgICAgZXJyPXNz
aF9nZXRfZXJyb3IgKCBteV9zc2hfc2Vzc2lvbiApOwogICAgICAgICBRU3RyaW5nIG1lc3NhZ2U9
dHIgKCAiQXV0aGVudGljYXRpb24gZmFpbGVkIiApOworI2lmZGVmIERFQlVHCiAgICAgICAgIHgy
Z29EZWJ1Zzw8bWVzc2FnZTw8IiAtICI8PGVycjsKKyNlbmRpZgogICAgICAgICBlbWl0IHVzZXJB
dXRoRXJyb3IgKCBhdXRoRXJyb3JzLmpvaW4gKCAiXG4iICkgKTsKICAgICAgICAgaWYgKCByZXZl
cnNlVHVubmVsICkKICAgICAgICAgICAgIGVtaXQgaW9FcnIgKCByZXZlcnNlVHVubmVsQ3JlYXRv
cixtZXNzYWdlLGVyciApOwpAQCAtNTA0LDEyICs1MjYsMTYgQEAgdm9pZCBTc2hNYXN0ZXJDb25u
ZWN0aW9uOjpydW4oKQogICAgICAgICB7CiAgICAgICAgICAgICBpZihkaXNjb25uZWN0U2Vzc2lv
bkZsYWcpCiAgICAgICAgICAgICB7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgICAgICB4Mmdv
RGVidWc8PCJzZXNzaW9uIGFscmVhZHkgZGlzY29ubmVjdGVkLCBleGl0aW5nIjw8ZW5kbDsKKyNl
bmRpZgogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IFFTdHJpbmcgZXJyPXNzaF9nZXRfZXJyb3IgKCBteV9zc2hfc2Vzc2lvbiApOwogICAgICAgICAg
ICAgUVN0cmluZyBtZXNzYWdlPXRyICggImNoYW5uZWxfZm9yd2FyZF9saXN0ZW4gZmFpbGVkIiAp
OworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICB4MmdvRGVidWc8PG1lc3NhZ2U8PCIgLSAiPDxl
cnI7CisjZW5kaWYKICAgICAgICAgICAgIGVtaXQgaW9FcnIgKCByZXZlcnNlVHVubmVsQ3JlYXRv
ciwgbWVzc2FnZSwgZXJyICk7CiAgICAgICAgICAgICBzc2hfZGlzY29ubmVjdCAoIG15X3NzaF9z
ZXNzaW9uICk7CiAgICAgICAgICAgICBzc2hfZnJlZSAoIG15X3NzaF9zZXNzaW9uICk7CkBAIC05
MjMsMTMgKzk0OSwxNyBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OmNvcHkoKQogICAgICAg
ICBzc2hfc2NwIHNjcD1zc2hfc2NwX25ldyAoIG15X3NzaF9zZXNzaW9uLCBTU0hfU0NQX1dSSVRF
fFNTSF9TQ1BfUkVDVVJTSVZFLCBkc3RQYXRoLnRvQXNjaWkoKSApOwogICAgICAgICBpZiAoIHNj
cCA9PSBOVUxMICkKICAgICAgICAgeworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICB4MmdvRGVi
dWc8PCJFcnJvciBhbGxvY2F0aW5nIHNjcCBzZXNzaW9uOiAiPDwgc3NoX2dldF9lcnJvciAoIG15
X3NzaF9zZXNzaW9uICkgPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICByZXR1cm47CiAgICAg
ICAgIH0KICAgICAgICAgaW50IHJjID0gc3NoX3NjcF9pbml0ICggc2NwICk7CiAgICAgICAgIGlm
ICggcmMgIT0gU1NIX09LICkKICAgICAgICAgeworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICB4
MmdvRGVidWc8PCJFcnJvciBpbml0aWFsaXppbmcgc2NwIHNlc3Npb246ICI8PCBzc2hfZ2V0X2Vy
cm9yICggbXlfc3NoX3Nlc3Npb24gKSA8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgIHNzaF9z
Y3BfZnJlZSAoIHNjcCApOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC05NTAs
NyArOTgwLDkgQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpjb3B5KCkKICAgICAgICAgewog
ICAgICAgICAgICAgUVN0cmluZyBlcnJNc2c9dHIgKCAiQ2FuIG5vdCBjcmVhdGUgcmVtb3RlIGZp
bGUgIiApICtjb3B5UmVxdWVzdHNbaV0uZHN0OwogICAgICAgICAgICAgUVN0cmluZyBzZXJyPXNz
aF9nZXRfZXJyb3IgKCBteV9zc2hfc2Vzc2lvbiApOworI2lmZGVmIERFQlVHCiAgICAgICAgICAg
ICB4MmdvRGVidWc8PGVyck1zZzw8IiAtICI8PHNlcnI8PGVuZGw7CisjZW5kaWYKICAgICAgICAg
ICAgIGVtaXQgY29weUVyciAoIGNvcHlSZXF1ZXN0c1tpXS5jcmVhdG9yLCBlcnJNc2csIHNlcnIg
KTsKICAgICAgICAgICAgIGNvcHlSZXF1ZXN0cy5yZW1vdmVBdCAoIGkgKTsKICAgICAgICAgICAg
IHNzaF9zY3BfY2xvc2UgKCBzY3AgKTsKQEAgLTk2Miw3ICs5OTQsOSBAQCB2b2lkIFNzaE1hc3Rl
ckNvbm5lY3Rpb246OmNvcHkoKQogICAgICAgICB7CiAgICAgICAgICAgICBRU3RyaW5nIHNlcnI9
c3NoX2dldF9lcnJvciAoIG15X3NzaF9zZXNzaW9uICk7CiAgICAgICAgICAgICBRU3RyaW5nIGVy
ck1zZz10ciAoICJDYW4gbm90IHdyaXRlIHRvIHJlbW90ZSBmaWxlICIgKSArY29weVJlcXVlc3Rz
W2ldLmRzdDsKKyNpZmRlZiBERUJVRwogICAgICAgICAgICAgeDJnb0RlYnVnPDxlcnJNc2c8PCIg
LSAiPDxzZXJyPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICBlbWl0IGNvcHlFcnIgKCBjb3B5
UmVxdWVzdHNbaV0uY3JlYXRvciwgZXJyTXNnLCBzZXJyICk7CiAgICAgICAgICAgICBjb3B5UmVx
dWVzdHMucmVtb3ZlQXQgKCBpICk7CiAgICAgICAgICAgICBzc2hfc2NwX2Nsb3NlICggc2NwICk7
CkBAIC0xMDc1LDcgKzExMDksOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OmNoYW5uZWxM
b29wKCkKICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgZXJy
TXNnPXRyICggImNhbiBub3QgY29ubmVjdCB0byAiICkgKwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZXZlcnNlVHVubmVsTG9jYWxIb3N0KyI6IitRU3RyaW5nOjpudW1iZXIg
KCByZXZlcnNlVHVubmVsTG9jYWxQb3J0ICk7CisjaWZkZWYgREVCVUcKICAgICAgICAgICAgICAg
ICAgICAgeDJnb0RlYnVnPDxlcnJNc2c8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgICAgICAg
ICAgZW1pdCBpb0VyciAoIHJldmVyc2VUdW5uZWxDcmVhdG9yLCBlcnJNc2csICIiICk7CiAgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgICAgIH0KQEAgLTExMDgsNyAr
MTE0NCw5IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y2hhbm5lbExvb3AoKQogICAgICAg
ICBjaGFubmVsQ29ubmVjdGlvbnNNdXRleC5sb2NrKCk7CiAgICAgICAgIGlmICggY2hhbm5lbENv
bm5lY3Rpb25zLnNpemUoKSA8PTAgKQogICAgICAgICB7Ci0vLyAgICAgICAgICAgICB4MmdvRGVi
dWc8PCJubyBjaGFubmVsIGNvbm5lY3Rpb25zLCB3YWl0aW5nXG4iOworI2lmZGVmIERFQlVHCisg
ICAgICAgICAgICAvLyAgICAgICAgICAgICB4MmdvRGVidWc8PCJubyBjaGFubmVsIGNvbm5lY3Rp
b25zLCB3YWl0aW5nXG4iOworI2VuZGlmCiAgICAgICAgICAgICBjaGFubmVsQ29ubmVjdGlvbnNN
dXRleC51bmxvY2soKTsKICAgICAgICAgICAgIHVzbGVlcCAoIDUwMCApOwogICAgICAgICAgICAg
Y29udGludWU7CkBAIC0xMTQ4LDcgKzExODYsOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246
OmNoYW5uZWxMb29wKCkKICAgICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgZXJyPXNzaF9n
ZXRfZXJyb3IgKCBteV9zc2hfc2Vzc2lvbiApOwogICAgICAgICAgICAgICAgICAgICAgICAgUVN0
cmluZyBlcnJvck1zZz10ciAoICJjaGFubmVsX29wZW5fZm9yd2FyZCBmYWlsZWQiICk7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBlbWl0IGlvRXJyICggY2hhbm5lbENvbm5lY3Rpb25zW2ldLmNy
ZWF0b3IsIGVycm9yTXNnLCBlcnIgKTsKKyNpZmRlZiBERUJVRwogICAgICAgICAgICAgICAgICAg
ICAgICAgeDJnb0RlYnVnPDxlcnJvck1zZzw8IjogIjw8ZXJyPDxlbmRsOworI2VuZGlmCiAgICAg
ICAgICAgICAgICAgICAgIH0KICNpZmRlZiBERUJVRwogICAgICAgICAgICAgICAgICAgICBlbHNl
CkBAIC0xMTY3LDE0ICsxMjA3LDE4IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y2hhbm5l
bExvb3AoKQogICAgICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnI9c3NoX2dldF9lcnJv
ciAoIG15X3NzaF9zZXNzaW9uICk7CiAgICAgICAgICAgICAgICAgICAgICAgICBRU3RyaW5nIGVy
cm9yTXNnPXRyICggImNoYW5uZWxfb3Blbl9zZXNzaW9uIGZhaWxlZCIgKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIGVtaXQgaW9FcnIgKCBjaGFubmVsQ29ubmVjdGlvbnNbaV0uY3JlYXRvciwg
ZXJyb3JNc2csIGVyciApOworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICAgICAgICAgICAgICB4
MmdvRGVidWc8PGVycm9yTXNnPDwiOiAiPDxlcnI8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBlbHNlIGlmICggY2hhbm5lbF9yZXF1ZXN0
X2V4ZWMgKCBjaGFubmVsLCBjaGFubmVsQ29ubmVjdGlvbnNbaV0uY29tbWFuZC50b0FzY2lpKCkg
KSAhPSBTU0hfT0sgKQogICAgICAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBRU3RyaW5nIGVycj1zc2hfZ2V0X2Vycm9yICggbXlfc3NoX3Nlc3Npb24gKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgZXJyb3JNc2c9dHIgKCAiY2hhbm5lbF9yZXF1ZXN0
X2V4ZWMgZmFpbGVkIiApOwogICAgICAgICAgICAgICAgICAgICAgICAgZW1pdCBpb0VyciAoIGNo
YW5uZWxDb25uZWN0aW9uc1tpXS5jcmVhdG9yLCBlcnJvck1zZywgZXJyICk7CisjaWZkZWYgREVC
VUcKICAgICAgICAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8ZXJyb3JNc2c8PCI6ICI8PGVy
cjw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICB9CiAjaWZkZWYgREVCVUcKICAg
ICAgICAgICAgICAgICAgICAgZWxzZQpAQCAtMTE5NiwxMSArMTI0MCwxNSBAQCB2b2lkIFNzaE1h
c3RlckNvbm5lY3Rpb246OmNoYW5uZWxMb29wKCkKIAogICAgICAgICBpZiAoIHJldHZhbCA9PSAt
MSApCiAgICAgICAgIHsKKyNpZmRlZiBERUJVRwogICAgICAgICAgICAgeDJnb0RlYnVnPDwic2Vs
ZWN0IGVycm9yXG4iOworI2VuZGlmCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQog
Ci0vLyAgICAgICAgIHgyZ29EZWJ1Zzw8InNlbGVjdCBleGl0ZWQiPDxlbmRsOworI2lmZGVmIERF
QlVHCisgICAgICAgIC8vICAgICAgICAgeDJnb0RlYnVnPDwic2VsZWN0IGV4aXRlZCI8PGVuZGw7
CisjZW5kaWYKIAogICAgICAgICBjaGFubmVsQ29ubmVjdGlvbnNNdXRleC5sb2NrKCk7CiAgICAg
ICAgIGZvciAoIGludCBpPWNoYW5uZWxDb25uZWN0aW9ucy5zaXplKCktMTsgaT49MDsgLS1pICkK
QEAgLTEyMTEsMTAgKzEyNTksMTQgQEAgdm9pZCBTc2hNYXN0ZXJDb25uZWN0aW9uOjpjaGFubmVs
TG9vcCgpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAoIGNoYW5u
ZWxfcG9sbCAoIGNoYW5uZWwsMSApID4wICkKICAgICAgICAgICAgIHsKLS8vICAgICAgICAgICAg
ICB4MmdvRGVidWc8PCJyZWFkIGVyciBkYXRhIGZyb20gY2hhbm5lbFxuIjsKKyNpZmRlZiBERUJV
RworICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICB4MmdvRGVidWc8PCJyZWFkIGVyciBk
YXRhIGZyb20gY2hhbm5lbFxuIjsKKyNlbmRpZgogICAgICAgICAgICAgICAgIG5ieXRlcyA9IGNo
YW5uZWxfcmVhZCAoIGNoYW5uZWwsIGJ1ZmZlciwgc2l6ZW9mICggYnVmZmVyICktMSwgMSApOwog
ICAgICAgICAgICAgICAgIGVtaXQgc3RkRXJyICggY2hhbm5lbENvbm5lY3Rpb25zW2ldLmNyZWF0
b3IsIFFCeXRlQXJyYXkgKCBidWZmZXIsbmJ5dGVzICkgKTsKLS8vICAgICAgICAgICAgICB4Mmdv
RGVidWc8PG5ieXRlczw8IiBlcnIgZnJvbSBjaGFubmVsIjw8ZW5kbDsKKyNpZmRlZiBERUJVRwor
ICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICB4MmdvRGVidWc8PG5ieXRlczw8IiBlcnIg
ZnJvbSBjaGFubmVsIjw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgfQogICAgICAgICAgICAg
aW50IHJlej1jaGFubmVsX3BvbGwgKCBjaGFubmVsLDAgKTsKICAgICAgICAgICAgIGlmICggcmV6
PT1TU0hfRU9GICkKQEAgLTEyMjgsOSArMTI4MCwxMyBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rp
b246OmNoYW5uZWxMb29wKCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICggcmV6PjAg
KQogICAgICAgICAgICAgewotLy8gICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PCJyZWFkIGRh
dGEgZnJvbSBjaGFubmVsICI8PGNoYW5uZWw8PGVuZGw7CisjaWZkZWYgREVCVUcKKyAgICAgICAg
ICAgICAgICAvLyAgICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8InJlYWQgZGF0YSBmcm9tIGNo
YW5uZWwgIjw8Y2hhbm5lbDw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgICAgIG5ieXRlcyA9
IGNoYW5uZWxfcmVhZCAoIGNoYW5uZWwsIGJ1ZmZlciwgc2l6ZW9mICggYnVmZmVyICktMSwgMCAp
OwotLy8gICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PG5ieXRlczw8IiBmcm9tIGNoYW5uZWwg
Ijw8Y2hhbm5lbDw8ZW5kbDsKKyNpZmRlZiBERUJVRworICAgICAgICAgICAgICAgIC8vICAgICAg
ICAgICAgICAgICAgeDJnb0RlYnVnPDxuYnl0ZXM8PCIgZnJvbSBjaGFubmVsICI8PGNoYW5uZWw8
PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgICAgICBpZiAoIG5ieXRlcyA+IDAgKQogICAgICAg
ICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKCB0Y3BTb2NrZXQ+MCApCkBAIC0x
MjM4LDEyICsxMjk0LDE2IEBAIHZvaWQgU3NoTWFzdGVyQ29ubmVjdGlvbjo6Y2hhbm5lbExvb3Ao
KQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCBzZW5kICggdGNwU29ja2V0LGJ1ZmZlciwg
bmJ5dGVzLDAgKSAhPSBuYnl0ZXMgKQogICAgICAgICAgICAgICAgICAgICAgICAgewogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgZXJyTXNnPXRyICggImVycm9yIHdyaXRpbmcg
dG8gc29ja2V0IiApOworI2lmZGVmIERFQlVHCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
eDJnb0RlYnVnPDwiZXJyb3Igd3JpdGluZyAiPDxuYnl0ZXM8PCIgdG8gdGNwIHNvY2tldCI8PHRj
cFNvY2tldDw8ZW5kbDsKKyNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVtaXQg
aW9FcnIgKCBjaGFubmVsQ29ubmVjdGlvbnNbaV0uY3JlYXRvcixlcnJNc2csIiIgKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBmaW5hbGl6ZSAoIGkgKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KLS8vICAgICAg
ICAgICAgICAgICAgICAgIHgyZ29EZWJ1Zzw8Indyb3RlICI8PG5ieXRlczw8IiB0byB0Y3Agc29j
a2V0ICI8PHRjcFNvY2tldDw8ZW5kbDsKKyNpZmRlZiBERUJVRworICAgICAgICAgICAgICAgICAg
ICAgICAgLy8gICAgICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDwid3JvdGUgIjw8bmJ5dGVz
PDwiIHRvIHRjcCBzb2NrZXQgIjw8dGNwU29ja2V0PDxlbmRsOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAg
ICB7CkBAIC0xMjU3LDcgKzEzMTcsOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OmNoYW5u
ZWxMb29wKCkKICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnI9c3NoX2dldF9lcnJvciAo
IG15X3NzaF9zZXNzaW9uICk7CiAgICAgICAgICAgICAgICAgICAgIFFTdHJpbmcgZXJyb3JNc2c9
dHIgKCAiZXJyb3IgcmVhZGluZyBjaGFubmVsIiApOwogICAgICAgICAgICAgICAgICAgICBlbWl0
IGlvRXJyICggY2hhbm5lbENvbm5lY3Rpb25zW2ldLmNyZWF0b3IsIGVycm9yTXNnLCBlcnIgKTsK
KyNpZmRlZiBERUJVRwogICAgICAgICAgICAgICAgICAgICB4MmdvRGVidWc8PGVycm9yTXNnPDwi
IC0gIjw8ZXJyPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAgICAgICAgICAgIGZpbmFsaXplICgg
aSApOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICB9CkBA
IC0xMjc5LDcgKzEzNDEsOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OmNoYW5uZWxMb29w
KCkKICAgICAgICAgICAgIGlmICggRkRfSVNTRVQgKCB0Y3BTb2NrZXQsJnJmZHMgKSApCiAgICAg
ICAgICAgICB7CiAgICAgICAgICAgICAgICAgbmJ5dGVzID0gcmVjdiAoIHRjcFNvY2tldCwgYnVm
ZmVyLCBzaXplb2YgKCBidWZmZXIgKS0xLDAgKTsKLS8vICAgICAgICAgICAgICAgICAgeDJnb0Rl
YnVnPDxuYnl0ZXM8PCIgYnl0ZXMgZnJvbSB0Y3Agc29ja2V0ICI8PHRjcFNvY2tldDw8ZW5kbDsK
KyNpZmRlZiBERUJVRworICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICAgICAgeDJnb0Rl
YnVnPDxuYnl0ZXM8PCIgYnl0ZXMgZnJvbSB0Y3Agc29ja2V0ICI8PHRjcFNvY2tldDw8ZW5kbDsK
KyNlbmRpZgogICAgICAgICAgICAgICAgIGlmICggbmJ5dGVzID4gMCApCiAgICAgICAgICAgICAg
ICAgewogICAgICAgICAgICAgICAgICAgICBpZiAoIGNoYW5uZWxfd3JpdGUgKCBjaGFubmVsLCBi
dWZmZXIsIG5ieXRlcyApICE9bmJ5dGVzICkKQEAgLTEyODcsMTEgKzEzNTEsMTUgQEAgdm9pZCBT
c2hNYXN0ZXJDb25uZWN0aW9uOjpjaGFubmVsTG9vcCgpCiAgICAgICAgICAgICAgICAgICAgICAg
ICBRU3RyaW5nIGVycj1zc2hfZ2V0X2Vycm9yICggbXlfc3NoX3Nlc3Npb24gKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgIFFTdHJpbmcgZXJyb3JNc2c9dHIgKCAiY2hhbm5lbF93cml0ZSBmYWls
ZWQiICk7CiAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0IGlvRXJyICggY2hhbm5lbENvbm5l
Y3Rpb25zW2ldLmNyZWF0b3IsIGVycm9yTXNnLCBlcnIgKTsKKyNpZmRlZiBERUJVRwogICAgICAg
ICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxlcnJvck1zZzw8IiAtICI8PGVycjw8ZW5kbDsK
KyNlbmRpZgogICAgICAgICAgICAgICAgICAgICAgICAgZmluYWxpemUgKCBpICk7CiAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQotLy8gICAg
ICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxuYnl0ZXM8PCIgYnl0ZXMgd3JvdGUgdG8gY2hh
bm5lbCI8PGNoYW5uZWw8PGVuZGw7CisjaWZkZWYgREVCVUcKKyAgICAgICAgICAgICAgICAgICAg
Ly8gICAgICAgICAgICAgICAgICAgICAgeDJnb0RlYnVnPDxuYnl0ZXM8PCIgYnl0ZXMgd3JvdGUg
dG8gY2hhbm5lbCI8PGNoYW5uZWw8PGVuZGw7CisjZW5kaWYKICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgaWYgKCBuYnl0ZXMgPCAwICkKICAgICAgICAgICAgICAgICB7CkBAIC0x
Mjk5LDcgKzEzNjcsOSBAQCB2b2lkIFNzaE1hc3RlckNvbm5lY3Rpb246OmNoYW5uZWxMb29wKCkK
ICAgICAgICAgICAgICAgICAgICAgUVN0cmluZyBlcnI9IiI7CiAgICAgICAgICAgICAgICAgICAg
IFFTdHJpbmcgZXJyb3JNc2c9dHIgKCAiZXJyb3IgcmVhZGluZyB0Y3Agc29ja2V0IiApOwogICAg
ICAgICAgICAgICAgICAgICBlbWl0IGlvRXJyICggY2hhbm5lbENvbm5lY3Rpb25zW2ldLmNyZWF0
b3IsIGVycm9yTXNnLCBlcnIgKTsKKyNpZmRlZiBERUJVRwogICAgICAgICAgICAgICAgICAgICB4
MmdvRGVidWc8PGVycm9yTXNnPDwiIC0gIjw8ZXJyPDxlbmRsOworI2VuZGlmCiAgICAgICAgICAg
ICAgICAgICAgIGZpbmFsaXplICggaSApOwogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgICAgICB9CmRpZmYgLS1naXQgYS94MmdvY2xpZW50Y29uZmlnLmggYi94Mmdv
Y2xpZW50Y29uZmlnLmgKaW5kZXggMzQxYzFmNy4uZTg1N2U1MyAxMDA2NDQKLS0tIGEveDJnb2Ns
aWVudGNvbmZpZy5oCisrKyBiL3gyZ29jbGllbnRjb25maWcuaApAQCAtMjMsNyArMjMsNyBAQAog
I2luY2x1ZGUgPHFnbG9iYWwuaD4KIAogCi0vLyAjZGVmaW5lIExPR0ZJTEUgUURpcjo6aG9tZVBh
dGgoKSsiL3gyZ29jbGllbnQubG9nIgorLy8jZGVmaW5lIExPR0ZJTEUgUURpcjo6aG9tZVBhdGgo
KSsiL3gyZ29jbGllbnQubG9nIgogCiAjaWYgIWRlZmluZWQgUV9PU19XSU4KICNkZWZpbmUgVVNF
TERBUApkaWZmIC0tZ2l0IGEveDJnb2xvZ2RlYnVnLmNwcCBiL3gyZ29sb2dkZWJ1Zy5jcHAKaW5k
ZXggYzIxYzFjMy4uMGZkOGFkYSAxMDA2NDQKLS0tIGEveDJnb2xvZ2RlYnVnLmNwcAorKysgYi94
MmdvbG9nZGVidWcuY3BwCkBAIC0yOCw3ICsyOCw2IEBAIFgyZ29Mb2dEZWJ1Zzo6WDJnb0xvZ0Rl
YnVnKCk6UVRleHRTdHJlYW0oKQogICAgIH0KIH0KIAotCiBYMmdvTG9nRGVidWc6On5YMmdvTG9n
RGVidWcoKQogewogIAlsb2dGaWxlLmNsb3NlKCk7CmRpZmYgLS1naXQgYS94MmdvbG9nZGVidWcu
aCBiL3gyZ29sb2dkZWJ1Zy5oCmluZGV4IGIzNWY3ODMuLmRlZDZkOGQgMTAwNjQ0Ci0tLSBhL3gy
Z29sb2dkZWJ1Zy5oCisrKyBiL3gyZ29sb2dkZWJ1Zy5oCkBAIC0yMCwyMSArMjAsNTAgQEAKICNp
bmNsdWRlIDxRVGV4dFN0cmVhbT4KICNpbmNsdWRlIDxRRmlsZT4KICNpbmNsdWRlICJ4MmdvY2xp
ZW50Y29uZmlnLmgiCisjaW5jbHVkZSAib25tYWlud2luZG93LmgiCiAvKioKIAlAYXV0aG9yIE9s
ZWtzYW5kciBTaG5leWRlciA8b2xla3NhbmRyLnNobmV5ZGVyQG9idmlvdXNseS1uaWNlLmRlPgog
Ki8KKworI2RlZmluZSBfX3gyZ29QcmVmaXggICAgICAieDJnby0iCisjZGVmaW5lIF9feDJnb0Rl
YnVnUHJlZml4ICJERUJVRy0iCisjZGVmaW5lIF9feDJnb0luZm9QcmVmaXggICJJTkZPLSIKKyNk
ZWZpbmUgX194MmdvV2FybmluZ1ByZWZpeCAgIldBUk5JTkctIgorI2RlZmluZSBfX3gyZ29FcnJv
clByZWZpeCAiRVJST1ItIgorI2RlZmluZSBfX3gyZ29Qb3N0Zml4ICAgICAiPiAiCisKICNpZmRl
ZiBMT0dGSUxFCiBjbGFzcyBYMmdvTG9nRGVidWc6IHB1YmxpYyBRVGV4dFN0cmVhbQogewogcHVi
bGljOgogICAgIFgyZ29Mb2dEZWJ1ZygpOwogICAgIH5YMmdvTG9nRGVidWcoKTsKKwogIHByaXZh
dGU6CiAgICAgIFFGaWxlIGxvZ0ZpbGU7CiB9OwotI2RlZmluZSB4MmdvRGVidWcgWDJnb0xvZ0Rl
YnVnKCkKKworI2RlZmluZSBfX3gyZ29EZWJ1ZyAgIFgyZ29Mb2dEZWJ1ZygpPDwiXG4iCisjZGVm
aW5lIF9feDJnb0luZm8gICAgWDJnb0xvZ0RlYnVnKCk8PCJcbiIKKyNkZWZpbmUgX194MmdvV2Fy
bmluZyBYMmdvTG9nRGVidWcoKTw8IlxuIgorI2RlZmluZSBfX3gyZ29FcnJvciAgIFgyZ29Mb2dE
ZWJ1ZygpPDwiXG4iCisKICNlbHNlCisKICNpbmNsdWRlIDxRRGVidWc+Ci0jZGVmaW5lIHgyZ29E
ZWJ1ZyBxRGVidWcoKQorCisjZGVmaW5lIF9feDJnb0RlYnVnICAgcURlYnVnKCkubm9zcGFjZSgp
CisjZGVmaW5lIF9feDJnb0luZm8gICAgcURlYnVnKCkubm9zcGFjZSgpCisjZGVmaW5lIF9feDJn
b1dhcm5pbmcgcVdhcm5pbmcoKS5ub3NwYWNlKCkKKyNkZWZpbmUgX194MmdvRXJyb3IgICBxQ3Jp
dGljYWwoKS5ub3NwYWNlKCkKKwogI2VuZGlmIC8vTE9HRklMRQorCisjZGVmaW5lIHgyZ29EZWJ1
Z2YgICAgICAgIF9feDJnb0RlYnVnICA8PF9feDJnb1ByZWZpeDw8X194MmdvRGVidWdQcmVmaXgg
IDw8X19GSUxFX188PCI6Ijw8X19MSU5FX188PF9feDJnb1Bvc3RmaXgKKyNkZWZpbmUgeDJnb0lu
Zm9mKE5VTSkgICAgX194MmdvSW5mbyAgIDw8X194MmdvUHJlZml4PDxfX3gyZ29JbmZvUHJlZml4
ICAgPDxOVU0gICAgICAgICAgICAgICAgICAgIDw8X194MmdvUG9zdGZpeAorI2RlZmluZSB4Mmdv
V2FybmluZ2YoTlVNKSBfX3gyZ29XYXJuaW5nPDxfX3gyZ29QcmVmaXg8PF9feDJnb1dhcm5pbmdQ
cmVmaXg8PE5VTSAgICAgICAgICAgICAgICAgICAgPDxfX3gyZ29Qb3N0Zml4CisjZGVmaW5lIHgy
Z29FcnJvcmYoTlVNKSAgIF9feDJnb0Vycm9yICA8PF9feDJnb1ByZWZpeDw8X194MmdvRXJyb3JQ
cmVmaXggIDw8TlVNICAgICAgICAgICAgICAgICAgICA8PF9feDJnb1Bvc3RmaXgKKworI2RlZmlu
ZSB4MmdvRGVidWcgICAgICBpZiAoT05NYWluV2luZG93OjpkZWJ1Z2dpbmcpIHgyZ29EZWJ1Z2YK
KwogI2VuZGlmIC8vWDJHT0xPR0RFQlVHX0gKLS0gCjEuNy45LjUKCg==
--20cf3071c7fcaa194c04d7a5a1de--
