GNU bug report logs - #56623
memory leak introduced by new nonrecursive lisp reader

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: Tom Gillespie <tgbugs@HIDDEN>; Keywords: moreinfo; dated Sun, 17 Jul 2022 22:04:01 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.
Added tag(s) moreinfo. Request was from Lars Ingebrigtsen <larsi@HIDDEN> to control <at> debbugs.gnu.org. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 18 Jul 2022 11:21:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jul 18 07:21:50 2022
Received: from localhost ([127.0.0.1]:49316 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oDOov-00085E-Jk
	for submit <at> debbugs.gnu.org; Mon, 18 Jul 2022 07:21:49 -0400
Received: from lists.gnu.org ([209.51.188.17]:35594)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <mattiase@HIDDEN>) id 1oDOot-000854-Mv
 for submit <at> debbugs.gnu.org; Mon, 18 Jul 2022 07:21:48 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:36966)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <mattiase@HIDDEN>) id 1oDOop-0006dD-S7
 for bug-gnu-emacs@HIDDEN; Mon, 18 Jul 2022 07:21:45 -0400
Received: from mail239c50.megamailservers.eu ([91.136.10.249]:50496
 helo=mail56c50.megamailservers.eu)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <mattiase@HIDDEN>) id 1oDOon-0000d1-81
 for bug-gnu-emacs@HIDDEN; Mon, 18 Jul 2022 07:21:43 -0400
X-Authenticated-User: mattiase@HIDDEN
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=megamailservers.eu;
 s=maildub; t=1658143296;
 bh=8GY5wqHNF27KzJTTpJCNLqlrDCOBygz3xDt9ifCoXL0=;
 h=Subject:From:In-Reply-To:Date:Cc:References:To:From;
 b=oOxU7tohvHvDUK32iyZMxzrL5RvTU0Tou9LlHYK1jjm5Iwp2VZ6a5S72Wl0AE16Rc
 X43pmb+Vnu/SwsqjGdhdT2AgNGbcTPgw9PWyvbgUIX09V8kKdBB4SiqTB4J7bCZxzf
 eFkiAVrz8azFEKB7l/Hg/N2fiSZTvW/UcRNCpmBI=
Feedback-ID: mattiase@HIDDEN
Received: from smtpclient.apple (c188-150-171-71.bredband.tele2.se
 [188.150.171.71]) (authenticated bits=0)
 by mail56c50.megamailservers.eu (8.14.9/8.13.1) with ESMTP id 26IBLYw1058124; 
 Mon, 18 Jul 2022 11:21:36 +0000
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 14.0 \(3654.120.0.1.13\))
Subject: Re: memory leak introduced by new nonrecursive lisp reader
From: =?utf-8?Q?Mattias_Engdeg=C3=A5rd?= <mattiase@HIDDEN>
In-Reply-To: <CA+G3_PPY6Y3r9CK5_9cyU9PaQcJSwegw2pA1xs8KwyTOHepfKw@HIDDEN>
Date: Mon, 18 Jul 2022 13:21:34 +0200
Content-Transfer-Encoding: 7bit
Message-Id: <ED92BA10-2FBC-45C2-AEBD-F118F4A492DE@HIDDEN>
References: <CA+G3_PPY6Y3r9CK5_9cyU9PaQcJSwegw2pA1xs8KwyTOHepfKw@HIDDEN>
To: Tom Gillespie <tgbugs@HIDDEN>
X-Mailer: Apple Mail (2.3654.120.0.1.13)
X-CTCH-RefID: str=0001.0A782F26.62D54240.0058, ss=1, re=0.000, recu=0.000,
 reip=0.000, cl=1, cld=1, fgs=0
X-CTCH-VOD: Unknown
X-CTCH-Spam: Unknown
X-CTCH-Score: 0.000
X-CTCH-Rules: 
X-CTCH-Flags: 0
X-CTCH-ScoreCust: 0.000
X-Origin-Country: SE
Received-SPF: softfail client-ip=91.136.10.249; envelope-from=mattiase@HIDDEN;
 helo=mail56c50.megamailservers.eu
X-Spam_score_int: -11
X-Spam_score: -1.2
X-Spam_bar: -
X-Spam_report: (-1.2 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, SPF_HELO_NONE=0.001, SPF_SOFTFAIL=0.665,
 T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
Cc: Greg Hendershott <greghendershott@HIDDEN>,
 Emacs Bug Report <bug-gnu-emacs@HIDDEN>
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.3 (--)

18 juli 2022 kl. 00.03 skrev Tom Gillespie <tgbugs@HIDDEN>:

> While tracking down a memory leak in racket-mode git bisect
> landed on b903507b36c438653a02d7b6291e9744d5221e28
> Nonrecursive Lisp reader (bug#55676).

Thank you. A self-contained reproduction would indeed help a lot.





Information forwarded to bug-gnu-emacs@HIDDEN:
bug#56623; Package emacs. Full text available.

Message received at submit <at> debbugs.gnu.org:


Received: (at submit) by debbugs.gnu.org; 17 Jul 2022 22:03:50 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Sun Jul 17 18:03:49 2022
Received: from localhost ([127.0.0.1]:48699 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1oDCMZ-0004MO-Bm
	for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 18:03:49 -0400
Received: from lists.gnu.org ([209.51.188.17]:33816)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <tgbugs@HIDDEN>) id 1oDCMR-0004Ly-9e
 for submit <at> debbugs.gnu.org; Sun, 17 Jul 2022 18:03:38 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:54500)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <tgbugs@HIDDEN>) id 1oDCMR-0000fq-4p
 for bug-gnu-emacs@HIDDEN; Sun, 17 Jul 2022 18:03:35 -0400
Received: from mail-pj1-x1035.google.com ([2607:f8b0:4864:20::1035]:36476)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <tgbugs@HIDDEN>) id 1oDCMM-0008Bg-Jo
 for bug-gnu-emacs@HIDDEN; Sun, 17 Jul 2022 18:03:34 -0400
Received: by mail-pj1-x1035.google.com with SMTP id
 z12-20020a17090a7b8c00b001ef84000b8bso16501432pjc.1
 for <bug-gnu-emacs@HIDDEN>; Sun, 17 Jul 2022 15:03:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:from:date:message-id:subject:to:cc;
 bh=pepdgKBLkyS6bl5+SIDebQjnaUoLQ2oNMr1DiaWGL/c=;
 b=EW1xZfbcP1ow25b2muctHQK10qXTxjQ4GpLaNwyjaXlYHBdaOjchbCmQDvmY4PO11Z
 223yNDWTyrgzHIcn/HMsl3cs18LKX/ufM4LSYJDWXh2f3f11uozdtO4MOMHErZjKiGpk
 eEuz4O5UEZj6PMNrn8BdioYAd4EXi/dI78eqPxyHM54edoK7qGBWvWNw23QlhhYYDM45
 RcqsjZP0uORhR1y6B1xldcwTtRW+3cSaU3G8DSI8bZ6YMwc5S0givDYFiYLsel2C55j2
 /seHt9yF+oAalfSbr7ntkx4yW4rGNDEcCrbpSPvYXe3JX4b1PKnUKj2O+8m7BnkJIZl4
 0oWg==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:from:date:message-id:subject:to:cc;
 bh=pepdgKBLkyS6bl5+SIDebQjnaUoLQ2oNMr1DiaWGL/c=;
 b=212FlLiuN5B+D8IyzfLna7jA+YgoCcMWmbl19Co9SusIRDVdxbaOotEgFAFEojsKBl
 Bh/Tp9b/Buj9Z1WVLZUlseb4oUTj5fRCkp0DReo+dF/8vw7HfG/bZDV9KAk2DkOFNuds
 ZCWuhlFfEj0+xvMZ+d1mhlEhi4EudG404uvXqXq1odVTYRl0MAMli3dFwTW6FXtbn7W2
 c8El87LmrjyBL8rFbEMcGXL3uMXV8RIoTTXO0hWinsn0F3+aPCTGf6UAr5bC+X5ionYe
 bl2+SJcTHqpnN3n1jXRtI758KSVn9UzQckWuCu889Q3n/S15yAZMupombiAhAfG819lU
 wQhg==
X-Gm-Message-State: AJIora+842BbWTHj/1wp8rJuW3fNQF3DvjO36oqAm4TT5uWVcaE0ZH6N
 XA9VX4NBuz7mafe1nTipNn5os5dTrqsevJk/630EUyai+as=
X-Google-Smtp-Source: AGRyM1txNMC5g8Pdk/ELNhkImSRYg0cWz3NJ2YvoGY5MRgRUxZD/JU4BM+VxK9U3fLKxsdU/tKpmELdK1whbSSUYAD4=
X-Received: by 2002:a17:90b:1b0a:b0:1f0:4bb1:2928 with SMTP id
 nu10-20020a17090b1b0a00b001f04bb12928mr34564985pjb.14.1658095408546; Sun, 17
 Jul 2022 15:03:28 -0700 (PDT)
MIME-Version: 1.0
From: Tom Gillespie <tgbugs@HIDDEN>
Date: Sun, 17 Jul 2022 15:03:16 -0700
Message-ID: <CA+G3_PPY6Y3r9CK5_9cyU9PaQcJSwegw2pA1xs8KwyTOHepfKw@HIDDEN>
Subject: memory leak introduced by new nonrecursive lisp reader
To: Emacs Bug Report <bug-gnu-emacs@HIDDEN>
Content-Type: multipart/mixed; boundary="000000000000d49a5905e4076bd4"
Received-SPF: pass client-ip=2607:f8b0:4864:20::1035;
 envelope-from=tgbugs@HIDDEN; helo=mail-pj1-x1035.google.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
 DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001,
 T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.3 (-)
X-Debbugs-Envelope-To: submit
Cc: Greg Hendershott <greghendershott@HIDDEN>, mattiase@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

--000000000000d49a5905e4076bd4
Content-Type: text/plain; charset="UTF-8"

While tracking down a memory leak in racket-mode git bisect
landed on b903507b36c438653a02d7b6291e9744d5221e28
Nonrecursive Lisp reader (bug#55676).

I do not have a minimal reproduction at the moment, but a
non-minimal one is documented at
see https://github.com/greghendershott/racket-mode/issues/632.
There are before and after graphs showing the change in behavior in
https://github.com/greghendershott/racket-mode/issues/632#issuecomment-1186609580

I have also attached the bisect script, and elisp needed to
reproduce the issue. Setting up the racket environment
to cause the issue is more involved (see the github issue).

Based on the behavior, it seems like strings and conses may be
marked by mark_lread but then somehow never unmarked, so
they never get collected, but that is a blind guess and I have no
idea if that is related at all.

--000000000000d49a5905e4076bd4
Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="ow.el"
Content-Disposition: attachment; filename="ow.el"
Content-Transfer-Encoding: base64
Content-ID: <f_l5puvqtx0>
X-Attachment-Id: f_l5puvqtx0

Ozs7IG93LmVsIC0tLSBDb21tb24gZnVuY3Rpb25hbGl0eSBmb3IgT3Jnd2FyZSBmaWxlcy4gLSot
IGxleGljYWwtYmluZGluZzogdCAtKi0KCjs7IEF1dGhvcjogVG9tIEdpbGxlc3BpZQo7OyBIb21l
cGFnZTogaHR0cHM6Ly9naXRodWIuY29tL3RnYnVncy9vcmdzdHJhcAo7OyBWZXJzaW9uOiA5OTk5
Cjs7IFBhY2thZ2UtUmVxdWlyZXM6ICgoZW1hY3MgIjI3LjEiKSkKOzsgSXMtVmVyc2lvbi1PZjog
aHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3RnYnVncy9vcmdzdHJhcC9tYXN0ZXIv
b3cuZWwKOzsgUmV2YWwtR2V0LUltbXV0YWJsZTogb3ctLXJldmFsLXVwZGF0ZQoKOzs7OyBMaWNl
bnNlIGFuZCBDb21tZW50YXJ5Cgo7OyBMaWNlbnNlOgo7OyBTUERYLUxpY2Vuc2UtSWRlbnRpZmll
cjogR1BMLTMuMC1vci1sYXRlcgoKOzs7IENvbW1lbnRhcnk6Cgo7OyBvdy5lbCBpcyB0aGUgY2F0
Y2gtYWxsIGZpbGUgdGhhdCBpbmNsdWRlcyBhbGwgdGhlIGZ1bmN0aW9uYWxpdHkKOzsgdGhhdCB5
b3UgbWlnaHQgd2FudCB0byB1c2UgaW4gYW4gb3Jnc3RyYXAgYmxvY2sgaW4gYSBzaW5nbGUgcGxh
Y2UKOzsgaW5jbHVkaW5nIGZ1bmN0aW9ucyB0aGF0IGFyZSBhbHNvIHBhY2thZ2VkIGluZGVwZW5k
ZW50bHkgc3VjaCBhcwo7OyB0aGUgcmV2YWwtKiBhbmQgc2VjdXJsLSogZnVuY3Rpb25hbGl0eS4g
IFRoZSBub3JtYWwgd2F5IHRvIHVzZSBpdAo7OyBpcyB0byB1c2UgYHJldmFsLW1pbmltYWwnIHRv
IG9idGFpbiBhbGwgdGhlIGZ1bmN0aW9uYWxpdHksIGFuZCB0aGVuCjs7IHVzZSBgcmV2YWwtcmVs
b2FkLWxhdGVzdCcgdG8gY2FjaGUgYSBwZXJzaXN0ZW50IGNvcHkgYW5kIHJlbG9hZCBmcm9tCjs7
IHRoYXQgZmlsZSBzbyB0aGF0IGFsbCB4cmVmcyBjYW4gYmUgcmVzb2x2ZWQuCgo7OyBvdy5lbCBp
cyBjb21wYXRpYmxlIHdpdGggYHJldmFsLXVwZGF0ZScuCgo7OzsgQ29kZToKCih1bmxlc3MgKGZl
YXR1cmVwICdyZXZhbCkKICAocmVxdWlyZSAnY2wtbGliKQoKICAoZGVmZ3JvdXAgcmV2YWwgbmls
CiAgICAiTWluaW1hbCByZW1vdGUgZXZhbHVhdGlvbiBvZiBlbGlzcCBjb2RlLiIKICAgIDp0YWcg
InJldmFsIgogICAgOmdyb3VwICdhcHBsaWNhdGlvbnMpCgogIChkZWZjdXN0b20gcmV2YWwtZGVm
YXVsdC1jeXBoZXIgJ3NoYTI1NgogICAgIkRlZmF1bHQgY3lwaGVyIHRvIHVzZSB0byBmaWxsIGlu
IGEgaG9sZSBpbiBgcmV2YWwnLiIKICAgIDp0eXBlICdzeW1ib2wKICAgIDpvcHRpb25zIChpZiAo
ZmJvdW5kcCAjJ3NlY3VyZS1oYXNoLWFsZ29yaXRobXMpIChzZWN1cmUtaGFzaC1hbGdvcml0aG1z
KSAnKHNoYTI1NikpCiAgICA6Z3JvdXAgJ3JldmFsKQoKICAoZGVmdmFyIHJldmFsLWNhY2hlLWRp
cmVjdG9yeSAoY29uY2F0IHVzZXItZW1hY3MtZGlyZWN0b3J5ICJyZXZhbC9jYWNoZS8iKQogICAg
IlRoZSBkaXJlY3Rvcnkgd2hlcmUgcmV0cmlldmVkIC5lbCBmaWxlcyBhcmUgc2F2ZWQuIikKCiAg
KGRlZnZhciByZXZhbC1mYWlsZWQtYnVmZmVyLWxpc3QgbmlsICJMaXN0IG9mIGZhaWxlZCByZXZh
bCBidWZmZXJzLiIpIDsgWFhYIEZJWE1FIHRoaXMgaXMgZHVtYgogIDs7IHVzZSB0aGUgYnVmZmVy
IHRvIHRyYWNrIHRoZSBzdGF0ZSB1c2luZyBgcmV2YWwtZmFpbCcgYmVjYXVzZSB0aGVuCiAgOzsg
dGhlIHByb2Nlc3MgY29tcG9zZXMgd2l0aCB0aGUgb3RoZXIgdG9vbHMgd2UgaGF2ZSBmb3IgaW50
ZXJhY3RpbmcKICA7OyB3aXRoIHJldmFsZWQgZmlsZXMgYW5kIGNhY2hlcyBldGMuCgogIChkZWZ2
YXIgcmV2YWwtZXZhbGVkLWJ1ZmZlci1saXN0IG5pbCAiTGlzdCBvZiBldmFsZWQgcmV2YWwgYnVm
ZmVycy4iKQoKICAoZGVmdmFyLWxvY2FsIHJldmFsLS1wZW5kaW5nLXVwZGF0ZXMgbmlsCiAgICAi
SW50ZXJuYWwgdmFyaWFibGUgdXNlIHRvIGNvb3JkaW5hdGUgdXBkYXRlcyBmb3IgYSBzaW5nbGUg
YnVmZmVyLiIpCgogIChkZWZtYWNybyB3aXRoLXVybC1oYW5kbGVyLW1vZGUgKCZyZXN0IGJvZHkp
CiAgICAiUnVuIEJPRFkgd2l0aCBgdXJsLWhhbmRsZXItbW9kZScgZW5hYmxlZC4iCiAgICAoZGVj
bGFyZSAoaW5kZW50IGRlZnVuKSkKICAgIGAobGV0ICgodWhtIHVybC1oYW5kbGVyLW1vZGUpKQog
ICAgICAgKHVud2luZC1wcm90ZWN0CiAgICAgICAgICAgKHByb2duCiAgICAgICAgICAgICAodXJs
LWhhbmRsZXItbW9kZSkKICAgICAgICAgICAgICxAYm9keSkKICAgICAgICAgKHVubGVzcyB1aG0K
ICAgICAgICAgICAodXJsLWhhbmRsZXItbW9kZSAwKSkpKSkKCiAgKGRlZnVuIHJldmFsLWlkLT5i
dWZmZXIgKHBhdGgtb3ItdXJsKQogICAgIkdpdmVuIGEgUEFUSC1PUi1VUkwgcmV0dXJuIGEgYnVm
ZmVyIG9mIGl0cyBjb250ZW50cy4iCiAgICA7OyBXZSBleHBsaWNpdGx5IGRvIG5vdCBjYXRjaCBl
cnJvcnMgaGVyZSBzaW5jZSB0aGV5IG5lZWQgdG8KICAgIDs7IGJlIGNhdWdodCBieSB0aGUgaHVt
YW4gaW4gdGhlIGxvb3AgbGF0ZXIuCiAgICAod2l0aC11cmwtaGFuZGxlci1tb2RlCiAgICAgIChm
aW5kLWZpbGUtbm9zZWxlY3QgcGF0aC1vci11cmwpKSkKCiAgKGRlZnVuIHJldmFsLXJlc3VtLXJl
dmlldyAoY3lwaGVyIGJ1ZmZlciAmb3B0aW9uYWwgcmV2aWV3KQogICAgIlJldHVybiBjaGVja3N1
bSB1bmRlciBDWVBIRVIgZm9yIEJVRkZFUi4KICBJZiBSRVZJRVcgaXMgbm9uLW5pbCB0aGVuIHN3
aXRjaCB0byBCVUZGRVIgYW5kIHByb21wdCBhc2tpbmcgaWYgYXVkaXQKICBpcyBvayBiZWZvcmUg
Y29udGludWluZy4iCiAgICA7OyB3ZSBkb24ndCBuZWVkIHRvIGNoZWNrIG9yIHJldmlldyBhbHRl
cm5hdGVzIGhlcmUgYmVjYXVzZSB0aGV5CiAgICA7OyBtdXN0IGFsbCBiZSBpZGVudGljYWwKICAg
IChsZXQgKGVuYWJsZS1sb2NhbC1ldmFsKQogICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAo
c2F2ZS13aW5kb3ctZXhjdXJzaW9uCiAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZm
ZXIKICAgICAgICAgICAgKHVubGVzcyAoZmlsZS1leGlzdHMtcCAoYnVmZmVyLWZpbGUtbmFtZSkp
CiAgICAgICAgICAgICAgOzsgTk9URSB1cmwtaGFuZGxlci1tb2RlIG11c3QgYmUgc2V0IGluIHRo
ZSBjYWxsaW5nIGNvbnRleHQKICAgICAgICAgICAgICA7OyB0aGlzIGNhc2Ugc2hvdWxkIG5vdCBo
YXBwZW4sIG9ubHkgZXh0YW50IGZpbGVzIHNob3VsZCBtYWtlIGl0IGhlcmUKICAgICAgICAgICAg
ICAoZXJyb3IgInJldmFsLXJlc3VtOiBmaWxlIGRvZXMgbm90IGV4aXN0ISAlcyIgKGJ1ZmZlci1m
aWxlLW5hbWUpKSkKICAgICAgICAgICAgKHdoZW4gcmV2aWV3CiAgICAgICAgICAgICAgKHN3aXRj
aC10by1idWZmZXIgKGN1cnJlbnQtYnVmZmVyKSkKICAgICAgICAgICAgICA7OyBGSVhNRSBgeWVz
LW9yLW5vLXAnIHN0aWxsIGJsb2NrcyB0aGUgY29tbWFuZCBsb29wIGluID49IDI3IGVtYWNzY2xp
ZW50CiAgICAgICAgICAgICAgKHVubGVzcyAoeWVzLW9yLW5vLXAgIkF1ZGl0IG9mIGZpbGUgb2s/
ICIpIDsgbm90IHVzaW5nIGB5LW9yLW4tcCcgc2luY2UgaXQgaXMgdG9vIGVhc3kKICAgICAgICAg
ICAgICAgIChlcnJvciAiQXVkaXQgZmFpbGVkLiAgQ2hlY2tzdW0gd2lsbCBub3QgYmUgY2FsY3Vs
YXRlZCBmb3IgJXMiCiAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZlci1maWxlLW5hbWUgKGN1
cnJlbnQtYnVmZmVyKSkpKSkKCiAgICAgICAgICAgIDs7IG5lZWQgdG8gZW5zdXJlIHRoYXQgZmls
ZSBpcyBhY3R1YWxseSBlbGlzcAogICAgICAgICAgICA7OyBub3RlIHRoYXQgaW4gc29tZSBjYXNl
cyByZWFkIGNhbiBzdWNjZWVkCiAgICAgICAgICAgIDs7IGV2ZW4gd2hlbiBhIGZpbGUgaXMgbm90
IGVsaXNwIGUuZy4gYW4gaHRtbAogICAgICAgICAgICA7OyBmaWxlIGNhbiBzb21ldGltZXMgcmVh
ZCB3aXRob3V0IGVycm9yIGJ1dAogICAgICAgICAgICA7OyB3aWxsIGZhaWwgb24gZXZhbAoKICAg
ICAgICAgICAgOzsgZWxpc3AgY2hlY2sgYnkgbWFqb3IgbW9kZQogICAgICAgICAgICAodW5sZXNz
IChlcSBtYWpvci1tb2RlICdlbWFjcy1saXNwLW1vZGUpCiAgICAgICAgICAgICAgKGVycm9yICJO
b3QgYW4gRW1hY3MgTGlzcCBmaWxlISIpKQoKICAgICAgICAgICAgOzsgZWxpc3AgY2hlY2sgYnkg
cmVhZAogICAgICAgICAgICAoY29uZGl0aW9uLWNhc2UgbmlsCiAgICAgICAgICAgICAgICAocmVh
ZCAoY29uY2F0ICIocHJvZ25cbiIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZl
ci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuKSIpKQogICAgICAgICAgICAgIChlcnJvciAoZXJy
b3IgIk5vdCBhbiBFbWFjcyBMaXNwIGZpbGUhIikpKQoKICAgICAgICAgICAgOzsgcmV0dXJuIHRo
ZSBjaGVja3N1bQogICAgICAgICAgICAoaW50ZXJuIChzZWN1cmUtaGFzaCBjeXBoZXIgKGN1cnJl
bnQtYnVmZmVyKSkpKSkpKSkKCiAgKGRlZnVuIHJldmFsLXJlc3VtLW1pbmltYWwgKGN5cGhlciBi
dWZmZXIpCiAgICAiQ2hlY2tzdW0gb2YgQlVGRkVSIHVuZGVyIENZUEhFUi4iIDsgbWluaW1hbCBm
b3IgbWF4aW1hbCBwb3JhYmlsaXR5CiAgICA7OyBub3QgdXNlZCBzaW5jZSB0aGUgZXhwcmVzc2lv
biB0YWtlcyB1cCBsZXNzIHNwYWNlCiAgICAoaW50ZXJuIChzZWN1cmUtaGFzaCBjeXBoZXIgYnVm
ZmVyKSkpCgogIChkZWZhbGlhcyAncmV2YWwtcmVzdW0gIydyZXZhbC1yZXN1bS1yZXZpZXcpCgog
IChkZWZ2YXIgcmV2YWwtLW1ha2UtYXVkaXQgdCAiRHluYW1pYyB2YXJpYWJsZSB0byBjb250cm9s
IGF1ZGl0IGR1cmluZyBgcmV2YWwtLW1ha2UnLiIpCiAgOzsgdGhlIGNvbnRyb2wgb2YgYXVkaXQg
YmVoYXZpb3IgaXMgaW50ZW50aW9uYWxseSBleGNsdWRlZCBmcm9tIHRoZQogIDs7IGFyZ3VtZW50
cyBvZiBgcmV2YWwtLW1ha2UnIHNvIHRoYXQgdG9wIGxldmVsIGNhbGxzIG11c3QgYXVkaXQKICAo
ZGVmdW4gcmV2YWwtLW1ha2UgKGN5cGhlciBwYXRoLW9yLXVybCkKICAgICJNYWtlIGEgYHJldmFs
JyBleHByZXNzaW9uIGZyb20gQ1lQSEVSIGFuZCBQQVRILU9SLVVSTC4KICBUaGlzIHNob3VsZCBu
b3QgYmUgdXNlZCBkaXJlY3RseSBhdCB0aGUgdG9wIGxldmVsIHNlZSBkb2NzIGZvciBgcmV2YWwn
CiAgZm9yIGEgYmV0dGVyIHdvcmtmbG93LiIKICAgICh1bmxlc3MgcmV2YWwtLW1ha2UtYXVkaXQK
ICAgICAgKHdhcm4gImByZXZhbC0tbWFrZScgbm90IGF1ZGl0aW5nICVTIiBwYXRoLW9yLXVybCkp
CiAgICAobGV0ICgoY2hlY2tzdW0gKHJldmFsLXJlc3VtLXJldmlldyBjeXBoZXIgKHJldmFsLWlk
LT5idWZmZXIgcGF0aC1vci11cmwpIHJldmFsLS1tYWtlLWF1ZGl0KSkpCiAgICAgIGAocmV2YWwg
JyxjeXBoZXIgJyxjaGVja3N1bSAscGF0aC1vci11cmwpKSkKCiAgKGRlZnVuIHJldmFsLWF1ZGl0
ICgmb3B0aW9uYWwgdW5pdmVyc2FsLWFyZ3VtZW50KQogICAgIkF1ZGl0IHRoZSByZXZhbCB1bmRl
ciB0aGUgY3Vyc29yLiIgOyBGSVhNRSB0aGlzIG5lZWRzIGEgTE9UIG9mIHdvcmsKICAgIChpbnRl
cmFjdGl2ZSkKICAgIChjbC1tdWx0aXBsZS12YWx1ZS1iaW5kIChjeXBoZXIgY2hlY2tzdW0gcGF0
aC1vci11cmwgX2FsdGVybmF0ZXMgX2IgX2UpIDsgRklYTUUgcHJvYmFibHkgbG9vcCBoZXJlCiAg
ICAgICAgKHJldmFsLS1mb3JtLWF0LXBvaW50KQogICAgICAobGV0KiAoKGJ1ZmZlciAod2l0aC11
cmwtaGFuZGxlci1tb2RlCiAgICAgICAgICAgICAgICAgICAgICAgKGZpbmQtZmlsZS1ub3NlbGVj
dCBwYXRoLW9yLXVybCkpKQogICAgICAgICAgICAgKGJ1ZmZlci1jaGVja3N1bSAocmV2YWwtcmVz
dW0gY3lwaGVyIGJ1ZmZlciB0KSkpCiAgICAgICAgKGVxIGJ1ZmZlci1jaGVja3N1bSBjaGVja3N1
bSkpKSkKCiAgKGRlZnVuIHJldmFsLS1hZGQtYnVmZmVyLXRvLWxpc3QgKGJ1ZmZlciBidWZmZXIt
bGlzdC1uYW1lKQogICAgIkFkZCBCVUZGRVIgdG8gbGlzdCBhdCBCVUZGRVItTElTVC1OQU1FLiIK
ICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciA7IEZJWE1FIGRvIHRoaXMgaW4gYm90aCBj
YXNlcyBidXQgY2hhbmdlIHdoaWNoIGxpc3QKICAgICAgKHB1c2ggYnVmZmVyIChzeW1ib2wtdmFs
dWUgYnVmZmVyLWxpc3QtbmFtZSkpCiAgICAgIDs7IHB1c2ggZmlyc3Qgc2luY2UgaXQgaXMgYmV0
dGVyIHRvIGhhdmUgYSBkZWFkIGJ1ZmZlciBsaW5nZXIgaW4gYSBsaXN0CiAgICAgIDs7IHRoYW4g
aXQgaXMgdG8gaGF2ZSBhbiBlcnJvciBoYXBwZW4gZHVyaW5nIGV4ZWN1dGlvbiBvZiBga2lsbC1i
dWZmZXItaG9vaycKICAgICAgKGxldCAoKGJ1ZmZlci1saXN0LW5hbWUgYnVmZmVyLWxpc3QtbmFt
ZSkpCiAgICAgICAgKGFkZC1ob29rICdraWxsLWJ1ZmZlci1ob29rCiAgICAgICAgICAgICAgICAg
IChsYW1iZGEgKCkKICAgICAgICAgICAgICAgICAgICA7OyByZWFkIHRoZSBtYW51YWwgZm9yIHNl
dHMgYW5kIGxpc3RzIHRvIHNlZSB3aHkgd2UgaGF2ZSB0bwogICAgICAgICAgICAgICAgICAgIDs7
IHNldHEgaGVyZSAuLi4gZXNzZW50aWFsbHkgaWYgb3VyIGVsZW1lbnQgaXMgZm91bmQgaW4gdGhl
CiAgICAgICAgICAgICAgICAgICAgOzsgY2FyIG9mIHRoZSBsaXN0IHRoZW4gdGhlIHVuZGVybHlp
bmcgbGlzdCBpcyBub3QgbW9kaWZpZWQKICAgICAgICAgICAgICAgICAgICA7OyBhbmQgdGhlIGNk
ciBvZiB0aGUgbGlzdCBpcyByZXR1cm5lZCwgdGhlcmVmb3JlIGlmIHlvdSBoYXZlCiAgICAgICAg
ICAgICAgICAgICAgOzsgYSBsaXN0IG9mIGFsbCB6ZXJvcyBhbmQgdHJ5IHRvIGRlbGV0ZSB6ZXJv
IGZyb20gaXQgdGhlIGxpc3QKICAgICAgICAgICAgICAgICAgICA7OyB3aWxsIHJlbWFpbiB1bmNo
YW5nZWQgdW5sZXNzIHlvdSBhbHNvIHNldHEgdGhlIG5hbWUgdG8gdGhlCiAgICAgICAgICAgICAg
ICAgICAgOzsgKG5vdykgY2RyIHZhbHVlCiAgICAgICAgICAgICAgICAgICAgKHNldCBidWZmZXIt
bGlzdC1uYW1lCiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVsZXRlIChjdXJyZW50LWJ1ZmZl
cikgKHN5bWJvbC12YWx1ZSBidWZmZXItbGlzdC1uYW1lKSkpKQogICAgICAgICAgICAgICAgICBu
aWwgdCkpKSkKCiAgKGRlZnVuIHJldmFsLWNhY2hlLXBhdGggKGNoZWNrc3VtICZvcHRpb25hbCBi
YXNlbmFtZSkKICAgICJSZXR1cm4gdGhlIHBhdGggdG8gdGhlIGxvY2FsIGNhY2hlIGZvciBhIGdp
dmVuIENIRUNLU1VNLgogIElmIEJBU0VOQU1FIGlzIHByb3ZpZGVkIGEgd2lsZGNhcmQgaXMgbm90
IHVzZWQuICBUaGlzIGlzIG1vc3RseQogIHRvIG1ha2UgdGhlIGNhbGxzIG1vcmUgaHVtYW4gcmVh
ZGFibGUgZm9yIGRlYnVnZ2luZyBidXQgYWxzbwogIG1ha2VzIGl0IGVhc2llciB0byBjYXRjaCBj
YXNlcyB3aGVyZSB0aGUgd3JvbmcgY2hlY2tzdW0gd2FzIHBhc3NlZC4iCiAgICAobGV0KiAoKG5h
bWUgKHN5bWJvbC1uYW1lIGNoZWNrc3VtKSkKICAgICAgICAgICAoc3ViZGlyIChzdWJzdHJpbmcg
bmFtZSAwIDIpKQogICAgICAgICAgIChjYWNoZS1wYXRoIChjb25jYXQgcmV2YWwtY2FjaGUtZGly
ZWN0b3J5IHN1YmRpciAiLyIgbmFtZSAiLSIgKG9yIGJhc2VuYW1lICIqIikpKSkKICAgICAgKGlm
IGJhc2VuYW1lCiAgICAgICAgICBjYWNoZS1wYXRoCiAgICAgICAgKGxldCAoKGV4cGFuZGVkIChm
aWxlLWV4cGFuZC13aWxkY2FyZHMgY2FjaGUtcGF0aCkpKQogICAgICAgICAgKGlmIGV4cGFuZGVk
CiAgICAgICAgICAgICAgOzsgSSBndWVzcyBhIHN0cmljdCByZW5hbWUgY291bGQgaGl0IGEgZHVw
ZSBidXQgaGl0dGluZyBhCiAgICAgICAgICAgICAgOzsgaGFzaCBjb2xsaXNpb24gaGVyZSB3b3Vs
ZCBiZSAuLi4gYXN0cm9uaW1pY2FsIG9kZHMKICAgICAgICAgICAgICAoY2FyIGV4cGFuZGVkKQog
ICAgICAgICAgICBuaWwpKSkpKQoKICAoZGVmdW4gcmV2YWwtLXdyaXRlLWNhY2hlIChidWZmZXIg
Y2FjaGUtcGF0aCkKICAgICJXcml0ZSBCVUZGRVIgdG8gQ0FDSEUtUEFUSC4gIENyZWF0ZSB0aGUg
cGFyZW50IGlmIGl0IGRvZXNuIG5vdCBleGlzdC4iCiAgICAobGV0ICgocGFyZW50LXBhdGggKGZp
bGUtbmFtZS1kaXJlY3RvcnkgY2FjaGUtcGF0aCkpCiAgICAgICAgICBtYWtlLWJhY2t1cC1maWxl
cykKICAgICAgKHVubGVzcyAoZmlsZS1kaXJlY3RvcnktcCBwYXJlbnQtcGF0aCkKICAgICAgICAo
bWFrZS1kaXJlY3RvcnkgcGFyZW50LXBhdGggdCkpCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy
IGJ1ZmZlcgogICAgICAgICh3cml0ZS1maWxlIGNhY2hlLXBhdGgpKSkpCgogIChkZWZ1biByZXZh
bC1maW5kLWNhY2hlICgmb3B0aW9uYWwgdW5pdmVyc2FsLWFyZ3VtZW50KQogICAgIkp1bXAgdG8g
dGhlIGNhY2hlIGZvciBhIGdpdmVuIHJldmFsIGNhbGwuCiAgQXQgdGhlIG1vbWVudCBVTklWRVJT
QUwtQVJHVU1FTlQgaXMgYSBwbGFjZWhvbGRlci4iCiAgICAoaW50ZXJhY3RpdmUpCiAgICAoY2wt
bXVsdGlwbGUtdmFsdWUtYmluZCAoX2N5cGhlciBjaGVja3N1bSBwYXRoLW9yLXVybCBfYWx0ZXJu
YXRlcyBfYiBfZSkKICAgICAgICAocmV2YWwtLWZvcm0tYXQtcG9pbnQpCiAgICAgIChsZXQgKChj
YWNoZS1wYXRoIChyZXZhbC1jYWNoZS1wYXRoIGNoZWNrc3VtKSkpCiAgICAgICAgKGlmIChmaWxl
LWV4aXN0cy1wIGNhY2hlLXBhdGgpCiAgICAgICAgICAgIChsZXQgKChidWZmZXIgKGZpbmQtZmls
ZS1ub3NlbGVjdCBjYWNoZS1wYXRoKSkpCiAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm
ZXIgYnVmZmVyIChlbWFjcy1saXNwLW1vZGUpKQogICAgICAgICAgICAgIChwb3AtdG8tYnVmZmVy
LXNhbWUtd2luZG93IGJ1ZmZlcikpCiAgICAgICAgICAoZXJyb3IgIk5vIGNhY2hlIGZvciAlcyIg
cGF0aC1vci11cmwpKSkpKQoKICAoZGVmdW4gcmV2YWwtZmFpbCAoJnJlc3QgYXJncykKICAgICJF
bWJlZCBpbiBidWZmZXIgaWYgYXVkaXQgZmFpbHMgb24gQVJHUyBzbyB0aGF0IHRoZXJlIGlzIGEg
cmVjb3JkLiIKICAgIChlcnJvciAicmV2YWwgYXVkaXQgZmFpbGVkIGZvcjogJVMiIGFyZ3MpKQoK
ICAoZGVmdW4gcmV2YWwgKGN5cGhlciBjaGVja3N1bSBwYXRoLW9yLXVybCAmcmVzdCBhbHRlcm5h
dGVzKQogICAgIk9wZW4gUEFUSC1PUi1VUkwsIG1hdGNoIENIRUNLU1VNIHVuZGVyIENZUEhFUiwg
dGhlbiBldmFsLgogIElmIGFuIGVycm9yIGlzIGVuY291bnRlcmVkIHRyeSBBTFRFUk5BVEVTIGlu
IG9yZGVyLgoKICBUaGUgc2ltcGxlc3Qgd2F5IHRvIHBvcHVsYXRlIGEgYHJldmFsJyBleHByZXNz
aW9uIHN0YXJ0aW5nIGZyb20ganVzdAogIFBBVEgtT1ItVVJMIGlzIHRvIHdyaXRlIG91dCBleHBy
ZXNzaW9uIHdpdGggQ1lQSEVSIGFuZCBDSEVDS1NVTSBhcyBhCiAgbm9uc2Vuc2UgdmFsdWVzLiAg
Rm9yIGV4YW1wbGUgKHJldmFsID8gPyBcInBhdGgvdG8vZmlsZS5lbFwiKS4gIFRoZW4KICBydW4g
XFxbcmV2YWwtdXBkYXRlLXNpbXBsZV0gKE0teCBgcmV2YWwtdXBkYXRlLXNpbXBsZScpIHRvIHBv
cHVsYXRlCiAgQ1lQSEVSIGFuZCBDSEVDS1NVTS4iCiAgICAocmV2YWwtLWdldC1idWZmZXIgY3lw
aGVyIGNoZWNrc3VtIHBhdGgtb3ItdXJsIGFsdGVybmF0ZXMgIydldmFsLWJ1ZmZlcikpCgogIChk
ZWZ1biByZXZhbC0tZ2V0LWJ1ZmZlciAoY3lwaGVyIGNoZWNrc3VtIHBhdGgtb3ItdXJsICZvcHRp
b25hbCBhbHRlcm5hdGVzIGRvLXdpdGgtYnVmZmVyKQogICAgImdlbmVyaWMgaW1wbGVtZW50YXRp
b24gdGhhdCBnZXRzIGEgYnVmZmVyIGFuZCBjYW4gcnVuIGEgZnVuY3Rpb24KICBETy1XSVRILUJV
RkZFUiBpbiB0aGF0IGJ1ZmZlciB0byBlbmZvcmNlIGludmFyaWFudHMsIGV2YWwgdGhlIGJ1ZmZl
ciwgZXRjLgogIE5vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIEFMV0FZUyByZXR1cm5zIHRoZSBidWZm
ZXIsIHNvIERPLVdJVEgtQlVGRkVSIHNob3VsZCBvbmx5CiAgYmUgdXNlZCB0byB0cmlnZ2VyIGEg
ZmFpbHVyZSBtb2RlIGJlZm9yZSB0aGUgYnVmZmVyIGlzIHJldHJ1bmVkLCBub3QgdXNlZCB0byBn
ZXQKICBhIHJldHVybiB2YWx1ZSBmcm9tIHRoZSBidWZmZXIuIgogICAgKGxldCAoZm91bmQtYnVm
ZmVyIChjYWNoZS1wYXRoIChyZXZhbC1jYWNoZS1wYXRoIGNoZWNrc3VtIChmaWxlLW5hbWUtbm9u
ZGlyZWN0b3J5IHBhdGgtb3ItdXJsKSkpKQogICAgICAod2l0aC11cmwtaGFuZGxlci1tb2RlCiAg
ICAgICAgKGNsLWxvb3AKICAgICAgICAgZm9yIHBhdGgtb3ItdXJsIGluIChjb25zIGNhY2hlLXBh
dGggKGNvbnMgcGF0aC1vci11cmwgYWx0ZXJuYXRlcykpCiAgICAgICAgIGRvIChpZiAoZmlsZS1l
eGlzdHMtcCBwYXRoLW9yLXVybCkKICAgICAgICAgICAgICAgIChsZXQqICgoYnVmZmVyIChyZXZh
bC1pZC0+YnVmZmVyIHBhdGgtb3ItdXJsKSkKICAgICAgICAgICAgICAgICAgICAgICAoXyAod2hl
biAoc3RyaW5nPSBwYXRoLW9yLXVybCBjYWNoZS1wYXRoKQogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgYnVmZmVyIChlbWFjcy1saXNwLW1vZGUpKSkpCiAg
ICAgICAgICAgICAgICAgICAgICAgOzsgRklYTUUgdGhpcyBpcyBzdGlsbCBub3QgcmlnaHQgLi4u
IGNhbiBlcnJvciBkdWUgdG8gbm90IGVsaXNwCiAgICAgICAgICAgICAgICAgICAgICAgKGJ1ZmZl
ci1jaGVja3N1bSAocmV2YWwtcmVzdW0gY3lwaGVyIGJ1ZmZlcikpKQogICAgICAgICAgICAgICAg
ICAoaWYgKGVxIGJ1ZmZlci1jaGVja3N1bSBjaGVja3N1bSkKICAgICAgICAgICAgICAgICAgICAg
IChsZXQgKChidWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaWYgKHN0cmluZz0g
cGF0aC1vci11cmwgY2FjaGUtcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YnVmZmVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OyBzYXZlIHRvIGNhY2hlIGFu
ZCBzd2l0Y2ggYnVmZmVyIGJlZm9yZSBldmFsIGZvciB4cmVmcwogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKHJldmFsLS13cml0ZS1jYWNoZSBidWZmZXIgY2FjaGUtcGF0aCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChmaW5kLWZpbGUtbm9zZWxlY3QgY2FjaGUtcGF0aCkp
KSkKICAgICAgICAgICAgICAgICAgICAgICAgKHdoZW4gZG8td2l0aC1idWZmZXIKICAgICAgICAg
ICAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChmdW5jYWxsIGRvLXdpdGgtYnVmZmVyKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgIChzZXRxIGZvdW5kLWJ1ZmZlciBidWZmZXIpKQogICAgICAgICAgICAgICAgICAg
IChyZXZhbC0tYWRkLWJ1ZmZlci10by1saXN0IGJ1ZmZlciAncmV2YWwtZmFpbGVkLWJ1ZmZlci1s
aXN0KQogICAgICAgICAgICAgICAgICAgIChmdW5jYWxsIChpZiBhbHRlcm5hdGVzICMnd2FybiAj
J2Vycm9yKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDs7IGlmIGFsdGVybmF0ZXMgd2Fy
biB0byBwcmV2ZW50IGFuIGVhcmx5IGZhaWx1cmUKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICA7OyBmcm9tIGJsb2NraW5nIGxhdGVyIHBvdGVudGlhbCBzdWNjZXNzZXMgb3RoZXJ3aXNlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgc2lnbmFsIGFuIGVycm9yCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInJldmFsOiBjaGVja3N1bSBtaXNtYXRjaCEgJXMiIHBhdGgtb3It
dXJsKSkpCiAgICAgICAgICAgICAgKHdhcm4gInJldmFsOiBmaWxlIGRvZXMgbm90IGV4aXN0ISAl
cyIgcGF0aC1vci11cmwpKQogICAgICAgICB1bnRpbCBmb3VuZC1idWZmZXIpKQogICAgICAodW5s
ZXNzIGZvdW5kLWJ1ZmZlcgogICAgICAgIChlcnJvciAicmV2YWw6IGFsbCBwYXRocyBmYWlsZWQh
IikpCiAgICAgIGZvdW5kLWJ1ZmZlcikpCgogIChkZWZ1biByZXZhbC12aWV3LWZhaWxlZCAoKQog
ICAgIlZpZXcgdG9wIG9mIGZhaWxlZCByZXZhbCBidWZmZXIgc3RhY2sgYW5kIGtpbGwgb3Iga2Vl
cC4iCiAgICAoaW50ZXJhY3RpdmUpCiAgICAod2hlbiByZXZhbC1mYWlsZWQtYnVmZmVyLWxpc3QK
ICAgICAgKHNhdmUtd2luZG93LWV4Y3Vyc2lvbgogICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy
IChjYXIgcmV2YWwtZmFpbGVkLWJ1ZmZlci1saXN0KQogICAgICAgICAgKHN3aXRjaC10by1idWZm
ZXIgKGN1cnJlbnQtYnVmZmVyKSkKICAgICAgICAgICh3aGVuICh5LW9yLW4tcCAiS2lsbCBidWZm
ZXI/ICIpCiAgICAgICAgICAgIChraWxsLWJ1ZmZlcikpKSkpKQoKICA7OzsgbWFjaGluZXJ5IHRv
IGdldCB0aGUgbGF0ZXN0IGltbXV0YWJsZSB1cmwgZm9yIGEgcmV2YWxlZCBmaWxlCgogIChyZXF1
aXJlICdsaXNwLW1udCkKCiAgKGRlZnZhciB1cmwtaHR0cC1lbmQtb2YtaGVhZGVycykKICAoZGVm
dW4gcmV2YWwtdXJsLT5qc29uICh1cmwpICA7IHNlZSB1dGlscy5lbAogICAgIkdpdmVuIGEgVVJM
IHN0cmluZyByZXR1cm4ganNvbiBhcyBhIGhhc2ggdGFibGUuIgogICAgKGpzb24tcGFyc2Utc3Ry
aW5nCiAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgKHVybC1yZXRyaWV2ZS1zeW5jaHJvbm91c2x5
IHVybCkKICAgICAgIChidWZmZXItc3Vic3RyaW5nIHVybC1odHRwLWVuZC1vZi1oZWFkZXJzIChw
b2ludC1tYXgpKSkpKQoKICAoZGVmdW4gcmV2YWwtLWdldC1uZXctaW1tdXRhYmxlLXVybCAoKQog
ICAgIkdldCB0aGUgaW1tdXRhYmxlIHVybCBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyLiIKICAgIChs
ZXQgKChnZXQtaW1tLW5hbWUgKHJldmFsLWhlYWRlci1nZXQtaW1tdXRhYmxlKSkpCiAgICAgIChp
ZiBnZXQtaW1tLW5hbWUKICAgICAgICAgIChsZXQgKChnZXQtaW1tIChpbnRlcm4gZ2V0LWltbS1u
YW1lKSkpCiAgICAgICAgICAgIChpZiAoZmJvdW5kcCBnZXQtaW1tKQogICAgICAgICAgICAgICAg
KGZ1bmNhbGwgZ2V0LWltbSkKICAgICAgICAgICAgICAod2FybiAiRnVuY3Rpb24gJXMgZnJvbSBS
ZXZhbC1HZXQtSW1tdXRhYmxlIG5vdCBmb3VuZCBpbiAlcyIgZ2V0LWltbS1uYW1lIChidWZmZXIt
ZmlsZS1uYW1lKSkKICAgICAgICAgICAgICBuaWwpKQogICAgICAgICh3YXJuICJSZXZhbC1HZXQt
SW1tdXRhYmxlOiBoZWFkZXIgbm90IGZvdW5kIGluICVzIiAoYnVmZmVyLWZpbGUtbmFtZSkpCiAg
ICAgICAgbmlsKSkpCgogIChkZWZ1biByZXZhbC1nZXQtaW1tLWdpdGh1YiAoZ3JvdXAgcmVwbyBw
YXRoICZvcHRpb25hbCBicmFuY2gpCiAgICAiR2V0IHRoZSBpbW11dGFibGUgdXJsIGZvciBQQVRI
IG9uIEJSQU5DSCBpbiBhIGdpdGh1YiByZW1vdGUgZm9yIFJFUE8gYXQgR1JPVVAuIgogICAgKGxl
dCogKChicmFuY2ggKG9yIGJyYW5jaCAibWFzdGVyIikpCiAgICAgICAgICAgKGJyYW5jaC11cmwK
ICAgICAgICAgICAgKGZvcm1hdCAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8lcy8lcy9n
aXQvcmVmcy9oZWFkcy8lcyIKICAgICAgICAgICAgICAgICAgICBncm91cCByZXBvIGJyYW5jaCkp
CiAgICAgICAgICAgKGJyYW5jaC1zaGEgKGdldGhhc2ggInNoYSIgKGdldGhhc2ggIm9iamVjdCIg
KHJldmFsLXVybC0+anNvbiBicmFuY2gtdXJsKSkpKQogICAgICAgICAgICh1cmwKICAgICAgICAg
ICAgKGZvcm1hdCAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy8lcy8lcy9jb21taXRzP3Bh
dGg9JXMmcGFnZT0xJnBlcl9wYWdlPTEmc2hhPSVzIgogICAgICAgICAgICAgICAgICAgIGdyb3Vw
IHJlcG8gcGF0aCBicmFuY2gtc2hhKSkKICAgICAgICAgICAocmVzdWx0IChyZXZhbC11cmwtPmpz
b24gdXJsKSkKICAgICAgICAgICAoc2hhIChnZXRoYXNoICJzaGEiIChlbHQgKHJldmFsLXVybC0+
anNvbiB1cmwpIDApKSkpCiAgICAgIChmb3JtYXQgImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250
ZW50LmNvbS8lcy8lcy8lcy8lcyIgZ3JvdXAgcmVwbyBzaGEgcGF0aCkpKQoKICAoZGVmdW4gcmV2
YWwtaGVhZGVyLWlzLXZlcnNpb24tb2YgKCZvcHRpb25hbCBmaWxlKQogICAgIlJldHVybiB0aGUg
SXMtVmVyc2lvbi1PZjogaGVhZGVyIGZvciBGSUxFIG9yIGN1cnJlbnQgYnVmZmVyLiIKICAgIDs7
IHRoaXMgd2FzIG9yaWdpbmFsbHkgY2FsbGVkIExhdGVzdC1WZXJzaW9uIGJ1dCBtYXRjaGluZyB0
aGUKICAgIDs7IGRhdGFjaXRlIHJlbGF0aW9uc2hpcHMgc2VlbXMgdG8gbWFrZSBtb3JlIHNlbnNl
IGhlcmUgZXNwLgogICAgOzsgc2luY2UgdGhpcyBpcyBsaXRlcmFsbHkgdGhlIGV4YW1wbGUgZnJv
bSB0aGUgZG9jdW1lbnRhdGlvbgogICAgKGxtLXdpdGgtZmlsZSBmaWxlCiAgICAgIChsbS1oZWFk
ZXIgImlzLXZlcnNpb24tb2YiKSkpCgogIChkZWZ1biByZXZhbC1oZWFkZXItZ2V0LWltbXV0YWJs
ZSAoJm9wdGlvbmFsIGZpbGUpCiAgICAiUmV0dXJuIHRoZSBSZXZhbC1HZXQtSW1tdXRhYmxlOiBo
ZWFkZXIgZm9yIEZJTEUgb3IgY3VycmVudCBidWZmZXIuCgogIFRoZSB2YWx1ZSBvZiB0aGlzIGhl
YWRlciBzaG91bGQgbmFtZSBhIGZ1bmN0aW9uIGluIHRoZSBjdXJyZW50CiAgZmlsZSB0aGF0IHJl
dHVybnMgYW4gaW1tdXRhYmxlIG5hbWUgdGhhdCBwb2ludHMgdG8gdGhlIGN1cnJlbnQKICByZW1v
dGUgdmVyc2lvbiBvZiB0aGUgdGhlIGN1cnJlbnQgZmlsZS4KCiAgVGhlIGltcGxlbWVudGF0aW9u
IG9mIHRoZSBmdW5jdGlvbiBtYXkgYXNzdW1lIHRoYXQgdGhlIHJldmFsCiAgcGFja2FnZSBpcyBw
cmVzZW50IG9uIHRoZSBzeXN0ZW0uIgogICAgOzsgdGhlcmUgd2lsbCBhbHdheXMgaGF2ZSB0byBi
ZSBhIGZ1bmN0aW9uIGJlY2F1c2UgZXZlbiBpZiB0aGUKICAgIDs7IHJlbW90ZSBkb2VzIGFsbCB0
aGUgd29yayBmb3IgdXMgd2Ugd2lsbCBzdGlsbCBoYXZlIHRvIGFzayB0aGUKICAgIDs7IHJlbW90
ZSB0byBhY3R1YWxseSBkbyB0aGUgZGVyZWZlcmVuY2Ugb3BlcmF0aW9uLCBzaW5jZSB3ZSBjYW4n
dAogICAgOzsgZ3VyYW50ZWUgdGhhdCBhbGwgcmVtb3RlcyBldmVuIGhhdmUgZW5kcG9pbnRzIHRo
YXQgYmVoYXZlIHRoaXMKICAgIDs7IGZ1bmN0aW9uYWxpdHkgd2UgY2FuJ3QgaW1wbGVtZW50IHRo
aXMgb25jZSBpbiByZXZhbCwgc28gZWFjaAogICAgOzsgZmlsZSBpbXBsZW1lbnRzIHRoaXMgcGF0
dGVybiBpdHNlbGYsIG9yIHdvcnN0IGNhc2UsIHRoZQogICAgOzsgdXBkYXRlIGZ1bmN0aW9uIGNh
biBiZSBzdXBwbGllZCBhdCB1cGRhdGUgdGltZSBpZiB0aGVyZSBpcyBhCiAgICA7OyB1c2VmdWwg
cmVtb3RlIGZpbGUgdGhhdCBkb2Vzbid0IGtub3cgdGhhdCBpdCBpcyBiZWluZyByZXZhbGVkCiAg
ICAobG0td2l0aC1maWxlIGZpbGUKICAgICAgKGxtLWhlYWRlciAicmV2YWwtZ2V0LWltbXV0YWJs
ZSIpKSkKCiAgOzs7IGludGVybmFscyBmb3IgYHJldmFsLXN5bmMnIHdvcmtmbG93CgogIChkZWZ1
biByZXZhbC0tYXVkaXQtY2hhbmdlIChidWZmZXItb2xkIHVybC1uZXcgYnVmZmVyLXNvdXJjZSBj
eXBoZXIgYmVnaW4pCiAgICAiQXVkaXQgdGhlIGNoYW5nZXMgbWFkZSBpbiBVUkwtTkVXIHJlbGF0
aXZlIHRvIEJVRkZFUi1PTEQuCiAgSWYgdGhlIGF1ZGl0IHBhc3NlcywgYSBjaGVja3N1bSBpcyBj
YWxjdWxhdGVkIHVuZGVyIENZUEhFUiBmb3IKICB0aGUgbmV3IGJ1ZmZlciwgYW5kIGEgbmV3IHJl
dmFsIGZvcm0gaXMgaW5zZXJ0ZWQgaW50byBCVUZGRVItU09VUkNFCiAgc3RhcnRpbmcgYXQgcG9z
aXRpb24gQkVHSU4gd2hpY2ggY29ycmVzcG9uZHMgdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUKICBy
ZXZhbCBmb3JtIHRoYXQgd2FzIHRoZSBzb3VyY2UgZm9yIEJVRkZFUi1PTEQuIgogICAgKGxldCog
KChidWZmZXItbmV3ICh3aXRoLXVybC1oYW5kbGVyLW1vZGUgKGZpbmQtZmlsZS1ub3NlbGVjdCB1
cmwtbmV3KSkpCiAgICAgICAgICAgKGJ1ZmZlci1yZXZpZXcgKHJldmFsLS1kaWZmIGJ1ZmZlci1v
bGQgYnVmZmVyLW5ldykpKQogICAgICA7OyBhdWRpdAogICAgICA7OyBUT0RPIHNlZSBpZiB3ZSBu
ZWVkIHNvbWV0aGluZyBtb3JlIHRoYW4gdGhpcywgZm9yIHNtYWxsIGRpZmZzIGl0IHNlZW1zCiAg
ICAgIDs7IHRvIHdvcmsgZmFpcmx5IHdlbGwsIGl0IGNhcHR1cmVzIHRoZSBjb3JlIGZ1bmN0aW9u
YWxpdHkgbmVlZGVkLCBhbmQKICAgICAgOzsgaWYgdXNlcnMgYXJlIGN1cmlvdXMgYWJvdXQgdGhl
IGNoYW5nZXMsIHRoZXkgY2FuIGFjY2VwdCBvciByZWplY3QsCiAgICAgIDs7OyBhbmQgdGhlbiBs
b29rIHVwIHRoZSBjaGFuZ2VzIGluIGdpdCB3aXRob3V0IGNvbXBsaWNhdGluZyB0aGlzIHdvcmtm
bG93CiAgICAgIChsZXQqCiAgICAgICAgICAoKG9rCiAgICAgICAgICAgIChzYXZlLWV4Y3Vyc2lv
bgogICAgICAgICAgICAgIChzYXZlLXdpbmRvdy1leGN1cnNpb24KICAgICAgICAgICAgICAgICh3
aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlci1yZXZpZXcKICAgICAgICAgICAgICAgICAgKGRpc3Bs
YXktYnVmZmVyIGJ1ZmZlci1yZXZpZXcpCiAgICAgICAgICAgICAgICAgIDs7IG5vdCB1c2luZyBg
eS1vci1uLXAnIHNpbmNlIGl0IGlzIHRvbyBlYXN5CiAgICAgICAgICAgICAgICAgIChsZXQgKCh5
ZXMgKHllcy1vci1uby1wICJBdWRpdCBvZiBjaGFuZ2VzIG9rPyAiKSkpCiAgICAgICAgICAgICAg
ICAgICAgKHVubGVzcyB5ZXMKICAgICAgICAgICAgICAgICAgICAgICh3YXJuICJBdWRpdCBmYWls
ZWQuICBDaGVja3N1bSB3aWxsIG5vdCBiZSBjYWxjdWxhdGVkIGZvciAlcyIKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChidWZmZXItZmlsZS1uYW1lIGJ1ZmZlci1uZXcpKSkKICAgICAgICAg
ICAgICAgICAgICB5ZXMpKSkpKQogICAgICAgICAgIChjaGVja3N1bS1uZXcgKGlmIChub3Qgb2sp
ICdhdWRpdC1mYWlsZWQgKGludGVybiAoc2VjdXJlLWhhc2ggY3lwaGVyIGJ1ZmZlci1uZXcpKSkp
CiAgICAgICAgICAgKHRvLWluc2VydAogICAgICAgICAgICAocHJpbjEtdG8tc3RyaW5nCiAgICAg
ICAgICAgICBgKCwoaWYgKG5vdCBvaykgJ3JldmFsLWZhaWwgJ3JldmFsKSAnLGN5cGhlciAnLGNo
ZWNrc3VtLW5ldyAsdXJsLW5ldyAnTkVXKSkpKQogICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVy
IGJ1ZmZlci1zb3VyY2UKICAgICAgICAgIChzYXZlLWV4Y3Vyc2lvbgogICAgICAgICAgICAoZ290
by1jaGFyIGJlZ2luKQogICAgICAgICAgICAoaW5zZXJ0IHRvLWluc2VydCAiXG4iKSkpCiAgICAg
ICAgb2spKSkKCiAgKGRlZnVuIHJldmFsLS1kaWZmIChidWZmZXItb2xkIGJ1ZmZlci1uZXcpCiAg
ICAiQ29uc3RydWN0IGEgYnVmZmVyIHRoYXQgaXMgdGhlIGRpZmYgYmV0d2VlbiBCVUZGRVItT0xE
IGFuZCBCVUZGRVItTkVXLiIKICAgIDs7KGVkaWZmLWJ1ZmZlcnMgYnVmZmVyLW9sZCBidWZmZXIt
bmV3KQogICAgOzsgbG9sIG5vLXNlbGVjdCBub3NlbGVjdCBpbmNvbnNpc3RlbmN5CiAgICAoZGlm
Zi1uby1zZWxlY3QgYnVmZmVyLW9sZCBidWZmZXItbmV3IG5pbCBuaWwpKQoKICAoZGVmdW4gcmV2
YWwtLWdldC1jaGFuZ2VkICgpCiAgICAiQ29sbGVjdCB0aHVua3MgdG8gdXBkYXRlIHRoZSByZXZh
bCBleHByZXNzaW9ucyBpbiB0aGUgY3VycmVudCBidWZmZXIgdGhhdCBoYXZlIG5ldyB2ZXJzaW9u
cy4iCiAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgKGdvdG8tY2hhciAocG9pbnQtbWluKSkKICAg
ICAgKGxldCAob3V0IChidWZmZXItc291cmNlIChjdXJyZW50LWJ1ZmZlcikpKQogICAgICAgICh3
aGlsZSAocmUtc2VhcmNoLWZvcndhcmQgIihyZXZhbFtbOnNwYWNlOl1dIiBuaWwgdCkKICAgICAg
ICAgIChjbC1tdWx0aXBsZS12YWx1ZS1iaW5kIChjeXBoZXIgY2hlY2tzdW0gcGF0aC1vci11cmwt
cmF3IGFsdGVybmF0ZXMgYmVnaW4pCiAgICAgICAgICAgICAgKHJldmFsLS1mb3JtLWF0LXBvaW50
KQogICAgICAgICAgICAobGV0KiAoKHBhdGgtb3ItdXJsCiAgICAgICAgICAgICAgICAgICAgKG9y
IChhbmQgKHN0cmluZ3AgcGF0aC1vci11cmwtcmF3KSBwYXRoLW9yLXVybC1yYXcpIDsgWFhYIHdo
eSBkb2VzIHN0cmluZ3AgcmV0dXJuIHQgIT8/IT8KICAgICAgICAgICAgICAgICAgICAgICAgOzsg
RklYTUUgREFOR0VSWk9ORSAhPyAoeWVzIHZlcnkpCiAgICAgICAgICAgICAgICAgICAgICAgIChl
dmFsIHBhdGgtb3ItdXJsLXJhdykpKQogICAgICAgICAgICAgICAgICAgKGJ1ZmZlcgogICAgICAg
ICAgICAgICAgICAgIChyZXZhbC0tZ2V0LWJ1ZmZlcgogICAgICAgICAgICAgICAgICAgICBjeXBo
ZXIgY2hlY2tzdW0gcGF0aC1vci11cmwgYWx0ZXJuYXRlcwogICAgICAgICAgICAgICAgICAgICAj
J3JldmFsLS1ldmFsLWJ1ZmZlci13aGVuLW5vdC1mYm91bmRwKSkKICAgICAgICAgICAgICAgICAg
ICh1cmwtbmV3ICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1ZmZlciAocmV2YWwtLWdldC1uZXctaW1t
dXRhYmxlLXVybCkpKSkKICAgICAgICAgICAgICAodW5sZXNzIChzdHJpbmc9IHVybC1uZXcgcGF0
aC1vci11cmwpCiAgICAgICAgICAgICAgICA7OyBGSVhNRSBUT0RPIGxvY2FsIHVybHMgc2hvdWxk
IGNoZWNrIGZvciB2ZXJzaW9uIGNvbnRyb2wgc28gdGhhdAogICAgICAgICAgICAgICAgOzsgY2hl
Y2tzdW1zIGNhbiBiZSB1cGRhdGVkIGJlZm9yZSBwdXNoaW5nLCBidXQgdGhhdCBpcyBtb3JlIGlu
dm9sdmVkCiAgICAgICAgICAgICAgICAoc2V0cQogICAgICAgICAgICAgICAgIG91dAogICAgICAg
ICAgICAgICAgIChjb25zCiAgICAgICAgICAgICAgICAgIChsaXN0CiAgICAgICAgICAgICAgICAg
ICAocmV2YWwtLW1ha2UtZGlmZi10aHVuayBidWZmZXIgdXJsLW5ldyBidWZmZXItc291cmNlIGN5
cGhlciBiZWdpbikKICAgICAgICAgICAgICAgICAgIGFsdGVybmF0ZXMpCiAgICAgICAgICAgICAg
ICAgIG91dCkpKSkpCiAgICAgICAgICAoZm9yd2FyZC1zZXhwKSkKICAgICAgICBvdXQpKSkKCiAg
KGRlZnVuIHJldmFsLS1ldmFsLWJ1ZmZlci13aGVuLW5vdC1mYm91bmRwICgpCiAgICAiUnVuIGlu
c2lkZSBgcmV2YWwtLWdldC1idWZmZXInIHRvIGF2b2lkIHJldmFsaW5nIHRoZSBidWZmZXIgaWYK
ICB0aGUgaW1tIHVybCBmdW5jdGlvbiBpZiBpdCBpcyBhbHJlYWR5IGZib3VuZHAiCiAgICAobGV0
ICgoZ2V0LWltbS1uYW1lIChyZXZhbC1oZWFkZXItZ2V0LWltbXV0YWJsZSkpKQogICAgICAoaWYg
Z2V0LWltbS1uYW1lCiAgICAgICAgICAobGV0ICgoZ2V0LWltbSAoaW50ZXJuIGdldC1pbW0tbmFt
ZSkpKQogICAgICAgICAgICAodW5sZXNzIChmYm91bmRwIGdldC1pbW0pCiAgICAgICAgICAgICAg
KGV2YWwtYnVmZmVyKSkpKSkpCgogIChkZWZ1biByZXZhbC0tbWFrZS1kaWZmLXRodW5rIChidWZm
ZXItb2xkIHVybC1uZXcgYnVmZmVyLXNvdXJjZSBjeXBoZXIgYmVnaW4pCiAgICAiQ3JlYXRlIHRo
ZSB0aHVuayB0aGF0IGtpY2tzIG9mZiB0aGUgdXBkYXRlIHdvcmtmbG93LiIKICAgIChsYW1iZGEg
KCkgKHJldmFsLS1hdWRpdC1jaGFuZ2UgYnVmZmVyLW9sZCB1cmwtbmV3IGJ1ZmZlci1zb3VyY2Ug
Y3lwaGVyIGJlZ2luKSkpCgogIChkZWZ1biByZXZhbC0tZHF1b3RlLXN5bWJvbHAgKHRoaW5nKQog
ICAgIk1hdGNoIHBhdHRlcm4gJydUSElORy4KICBVc2VmdWwgd2hlbiBkZWFsaW5nIHdpdGggcXVv
dGVkIHN5bWJvbHMgaW4gdGhlIG91dHB1YiBvciBhIGByZWFkJy4KICBGb3IgZXhhbXBsZSBlbHQg
MiBvZiAnKHJldmFsICdzaGEyNTYgPyBcImZpbGUuZWxcIikuIgogICAgKGFuZCAoY29uc3AgdGhp
bmcpCiAgICAgICAgIChlcSAoY2FyIHRoaW5nKSAncXVvdGUpCiAgICAgICAgIChjb25zcCAoY2Ry
IHRoaW5nKSkKICAgICAgICAgKHN5bWJvbHAgKGNhZHIgdGhpbmcpKSkpCgogIChkZWZ1biByZXZh
bC0tZm9ybS1hdC1wb2ludCAoKQogICAgIkV4dHJhY3QgdGhlIGNvbXBvbmVudHMgb2YgdGhlIHJl
dmFsIGV4cHJlc3Npb24gYXQgdGhlIGN1cnJlbnQgcG9pbnQuIgogICAgKHNhdmUtZXhjdXJzaW9u
CiAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiICIpCiAgICAgIChyZS1zZWFyY2gtYmFja3dhcmQg
IihyZXZhbFtbOnNwYWNlOl1dIikKICAgICAgKGxldCAoKGJlZ2luIChwb2ludCkpKQogICAgICAg
IChmb3J3YXJkLXNleHApCiAgICAgICAgKGxldCAoKHJhdyAocmVhZCAoYnVmZmVyLXN1YnN0cmlu
Zy1uby1wcm9wZXJ0aWVzIGJlZ2luIChwb2ludCkpKSkKICAgICAgICAgICAgICAoZW5kIChwb2lu
dCkpKQogICAgICAgICAgOzsobWVzc2FnZSAiYWFhYWE6ICVTICVTICVTIiByYXcgKHN5bWJvbHAg
KGVsdCByYXcgMSkpICh0eXBlLW9mIChlbHQgcmF3IDEpKSkKICAgICAgICAgIChsZXQgKChjeXBo
ZXIgKGxldCAoKGN5IChlbHQgcmF3IDEpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICA7OyAn
KHNpZ2ggJ3NpZ2gpIFhYWCB0aGUgdXN1YWwgZXZhbCBkYW5nZXJ6b25lID5fPAogICAgICAgICAg
ICAgICAgICAgICAgICAgIChpZiAocmV2YWwtLWRxdW90ZS1zeW1ib2xwIGN5KSAoZXZhbCBjeSkg
cmV2YWwtZGVmYXVsdC1jeXBoZXIpKSkKICAgICAgICAgICAgICAgIChjaGVja3N1bSAobGV0ICgo
Y3MgKGVsdCByYXcgMikpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChyZXZhbC0t
ZHF1b3RlLXN5bWJvbHAgY3MpIChldmFsIGNzKSBuaWwpKSkKICAgICAgICAgICAgICAgIChwYXRo
LW9yLXVybCAoZWx0IHJhdyAzKSkKICAgICAgICAgICAgICAgIChhbHRlcm5hdGVzIChjZGRkZHIg
cmF3KSkpCiAgICAgICAgICAgIChjbC12YWx1ZXMgY3lwaGVyIGNoZWNrc3VtIHBhdGgtb3ItdXJs
IGFsdGVybmF0ZXMgYmVnaW4gZW5kKSkpKSkpCgogIChkZWZ1biByZXZhbC1jaGVjay1mb3ItdXBk
YXRlcyAoJm9wdGlvbmFsIHVuaXZlcnNhbC1hcmd1bWVudCkgOyBUT0RPIHJldmFsLXN5bmMgPwog
ICAgIkNoZWNrIGN1cnJlbnQgYnVmZmVyIHJldmFscyBmb3IgdXBkYXRlcy4KICBVTklWRVJTQUwt
QVJHVU1FTlQgaXMgYSBwbGFjZWhvbGRlci4iCiAgICAoaW50ZXJhY3RpdmUpCiAgICA7OyBzZWFy
Y2ggYW5kIGNvbGxlY3QgYWxsIGNhbGxzIHRvIHJldmFsIGluIHRoZSBjdXJyZW50IGJ1ZmZlcj8g
YWxsIG9yZyBmaWxlcz8gPz8/CiAgICA7OyBvcGVuIHRoZSBjdXJyZW50IHJldmFsIGluIGEgYnVm
ZmVyCiAgICA7OyBnZXQgdGhlIHBhY2thZ2UgaW5mbyBpZiBhdmFpYWJsZQogICAgOzsgd2FybiBh
Ym91dCBhbGwgcmV2YWxzIHRoYXQgY2Fubm90IGJlIHVwZGF0ZWQgZHVlIHRvIG1pc3NpbmcgbWV0
YWRhdGE/CiAgICAobGV0KiAoKHBlbmRpbmctdXBkYXRlcyAocmV2YWwtLWdldC1jaGFuZ2VkKSkK
ICAgICAgICAgICAoY291bnQgKGxlbmd0aCBwZW5kaW5nLXVwZGF0ZXMpKQogICAgICAgICAgICh1
cGRhdGVzPyAoaWYgKD4gY291bnQgMSkgInVwZGF0ZXMiICJ1cGRhdGUiKSkpCiAgICAgIChzZXRx
LWxvY2FsIHJldmFsLS1wZW5kaW5nLXVwZGF0ZXMgcGVuZGluZy11cGRhdGVzKQogICAgICA7OyBU
T0RPIGRpc3BsYXkgYSBtZXNzYWdlIGFib3V0IHBlbmRpbmcgdXBkYXRlcyBvciBhIGJ1ZmZlcgog
ICAgICA7OyB3aXRoIHRoZSBwZW5kaW5nIHVwZGF0ZXM/IHByb2JhYmx5IGVhc2llciB0byBkbyB0
aGUgbGF0dGVyCiAgICAgIDs7IGFuZCBoYXZlIGFwcHJvdmUvZGVueSBidXR0b25zIG9yIHNvbWV0
aGluZwogICAgICAoaWYgKD4gY291bnQgMCkKICAgICAgICAgIChtZXNzYWdlICIlcyAlcyBmb3Vu
ZCBmb3IgJXMgcnVuIGByZXZhbC1kby11cGRhdGVzJyB0byBhdWRpdCBjaGFuZ2VzLiIKICAgICAg
ICAgICAgICAgICAgIGNvdW50IHVwZGF0ZXM/IChidWZmZXItZmlsZS1uYW1lKSkKICAgICAgICAo
bWVzc2FnZSAiTm8gcmV2YWwgdXBkYXRlcyBmb3VuZCBmb3IgJXMiIChidWZmZXItZmlsZS1uYW1l
KSkpKSkKCiAgKGRlZnVuIHJldmFsLWRvLXVwZGF0ZXMgKCZvcHRpb25hbCB1bml2ZXJzYWwtYXJn
dW1lbnQpCiAgICAiQXVkaXQgYW5kIGluc2VydCBwZW5kaW5nIHVwZGF0ZXMuCiAgVU5JVkVSU0FM
LUFSR1VNRU5UIGlzIGEgcGxhY2Vob2xkZXIuIgogICAgOzsgWFhYIGByZXZhbC11cGRhdGUnIGlz
bid0IGhlcmUgYmVjYXVzZSBpdCB3b3VsZCBiZSBmb3IgYSBzaW5nbGUKICAgIDs7IGZvcm0sIGJ1
dCBvdXIgd29ya2Zsb3cgZG9lc24ndCBkbyB0aGF0IHJpZ2h0IG5vdwogICAgKGludGVyYWN0aXZl
KQogICAgKHdoaWxlIHJldmFsLS1wZW5kaW5nLXVwZGF0ZXMKICAgICAgKGxldCogKCh1cGRhdGUg
KHBvcCByZXZhbC0tcGVuZGluZy11cGRhdGVzKSkKICAgICAgICAgICAgIChkby11cGRhdGUgKGNh
ciB1cGRhdGUpKQogICAgICAgICAgICAgKHN1Y2Nlc3MgKGZ1bmNhbGwgZG8tdXBkYXRlKSkpKSkp
CgogIChkZWZ1biByZXZhbC1mb3JtLWNoZWNrc3VtLWF0LXBvaW50ICgmb3B0aW9uYWwgdW5pdmVy
c2FsLWFyZ3VtZW50KQogICAgIkdldCB0aGUgY2hlY2tzdW0gaW4gdGhlIHJldmFsIGZvcm0gYXQg
cG9pbnQuICBVTklWRVJTQUwtQVJHVU1FTlQgaXMgYSBwbGFjZWhvbGRlci4iCiAgICAoaW50ZXJh
Y3RpdmUpCiAgICAoY2wtbXVsdGlwbGUtdmFsdWUtYmluZCAoX2N5cGhlciBjaGVja3N1bSBfcGF0
aC1vci11cmwgX2FsdGVybmF0ZXMgX2IgX2UpCiAgICAgICAgKHJldmFsLS1mb3JtLWF0LXBvaW50
KQogICAgICBjaGVja3N1bSkpCgogIDs7IHVzZXIgZmFjaW5nIGZ1bmN0aW9uYWxpdHkKCiAgKGRl
ZnVuIHJldmFsLXVwZGF0ZS1zaW1wbGUgKCZvcHRpb25hbCB1bml2ZXJzYWwtYXJndW1lbnQpCiAg
ICAiVXBkYXRlIHRoZSBjaGVja3N1bSBmb3IgdGhlIHJldmFsIHNleHAgdW5kZXIgdGhlIGN1cnNv
ciBvciB1cCB0aGUgcGFnZS4KICBVc2VmdWwgd2hlbiBkZXZlbG9waW5nIGFnYWluc3QgYSBsb2Nh
bCBwYXRoIG9yIGEgbXV0YWJsZSByZW1vdGUgaWQuCiAgSWYgVU5JVkVSU0FMLUFSR1VNRU5UIGlz
IG5vbi1uaWwgdGhlbiBgcmV2YWwtYXVkaXQnIGlzIHNraXBwZWQsIHBsZWFzZSB1c2UKICB0aGlz
IGZ1bmN0aW9uYWxpdHkgcmVzcG9uc2libHkuIgogICAgKGludGVyYWN0aXZlICJQIikKICAgICh3
aXRoLXVybC1oYW5kbGVyLW1vZGUKICAgICAgKGxldCAoKHJldmFsLS1tYWtlLWF1ZGl0IChub3Qg
dW5pdmVyc2FsLWFyZ3VtZW50KSkKICAgICAgICAgICAgKHNpZ2ggKHBvaW50KSkpCiAgICAgICAg
KGNsLW11bHRpcGxlLXZhbHVlLWJpbmQgKGN5cGhlciBjaGVja3N1bSBwYXRoLW9yLXVybCBhbHRl
cm5hdGVzIGJlZ2luIGVuZCkKICAgICAgICAgICAgKHJldmFsLS1mb3JtLWF0LXBvaW50KQogICAg
ICAgICAgKHVubGVzcyAobWVtcSBjeXBoZXIgKHNlY3VyZS1oYXNoLWFsZ29yaXRobXMpKQogICAg
ICAgICAgICAoZXJyb3IgIiVTIGlzIG5vdCBhIGtub3duIG1lbWJlciBvZiBgc2VjdXJlLWhhc2gt
YWxnb3JpdGhtcyciIGN5cGhlcikpCiAgICAgICAgICAobGV0ICgobmV3IChyZXZhbC0tbWFrZSBj
eXBoZXIgcGF0aC1vci11cmwpKQogICAgICAgICAgICAgICAgKHByaW50LXF1b3RlZCB0KQogICAg
ICAgICAgICAgICAgcHJpbnQtbGVuZ3RoCiAgICAgICAgICAgICAgICBwcmludC1sZXZlbCkKICAg
ICAgICAgICAgKGRlbGV0ZS1yZWdpb24gYmVnaW4gZW5kKQogICAgICAgICAgICAoaW5zZXJ0IChw
cmluMS10by1zdHJpbmcKICAgICAgICAgICAgICAgICAgICAgKGlmIGFsdGVybmF0ZXMgOyBkb24n
dCBjb25zIHRoZSBvbGQgY2hlY2tzdW0sIHJlcGVhdGVkIGludm9jYXRpb25zIGdyb3cKICAgICAg
ICAgICAgICAgICAgICAgICAgIChhcHBlbmQgbmV3IChjb25zICcnT0xEPiBhbHRlcm5hdGVzKSkK
ICAgICAgICAgICAgICAgICAgICAgICBuZXcpKSkpCiAgICAgICAgICAoZ290by1jaGFyIHNpZ2gp
KSkpKQoKICAoZGVmdW4gcmV2YWwtc3luYyAoJm9wdGlvbmFsIHVuaXZlcnNhbC1hcmd1bWVudCkK
ICAgICJDaGVjayBmb3IsIGF1ZGl0LCBhbmQgaW5zZXJ0IHVwZGF0ZXMgZm9yIHRoZSBjdXJyZW50
IGJ1ZmZlci4KICBVTklWRVJTQUwtQVJHVU1FTlQgaXMgYSBwbGFjZWhvbGRlci4iCiAgICAoaW50
ZXJhY3RpdmUpCiAgICAocmV2YWwtY2hlY2stZm9yLXVwZGF0ZXMpCiAgICAod2hlbiByZXZhbC0t
cGVuZGluZy11cGRhdGVzCiAgICAgIChyZXZhbC1kby11cGRhdGVzKSkpCgogICkKCih1bmxlc3Mg
KGZlYXR1cmVwICdkZWZsKQogIChyZXF1aXJlICdjbC1saWIpCgogIChkZWZ2YXItbG9jYWwgZGVm
bC0tbG9jYWwtZGVmdW5zIG5pbAogICAgIkEgaGFzaCB0YWJsZSB0aGF0IG1hcHMgZ2xvYmFsIGNs
b3N1cmVzIHRvIGxvY2FsIGZ1bmN0aW9uIHN5bWJvbHMuCiAgTmVlZGVkIHRvIGRpc3BhdGNoIG9u
IGNvbW1hbmQgcGFzc2VkIHRvIDphcm91bmQgYWR2aWNlLiIpCgogIChkZWZ2YXItbG9jYWwgZGVm
bC0tbG9jYWwtZGVmdW4tbmFtZXMgbmlsCiAgICAiQSBoYXNoIHRhYmxlIHRoYXQgbWFwcyBnbG9i
YWwgZnVuY3Rpb24gc3ltYm9scyB0byBsb2NhbCBmdW5jdGlvbiBzeW1ib2xzLiIpCgogIChkZWZ1
biBkZWZsLS1oYXMtbG9jYWwtZGVmdW5zIChjb21tYW5kICZyZXN0IGFyZ3MpCiAgICAiQWR2aXNl
IENPTU1BTkQgd2l0aCBBUkdTIHRvIGNoZWNrIGlmIHRoZXJlIGFyZSBidWZmZXIgbG9jYWwgZGVm
dW5zLiIKICAgIChsZXQgKChjb21tYW5kIChvciAoYW5kIGRlZmwtLWxvY2FsLWRlZnVucwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGdldGhhc2ggY29tbWFuZCBkZWZsLS1sb2NhbC1kZWZ1
bnMpKQogICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpKSkKICAgICAgKGFwcGx5IGNvbW1h
bmQgYXJncykpKQoKICAoZGVmbWFjcm8gZGVmbCAobmFtZSBhcmdsaXN0ICZvcHRpb25hbCBkb2Nz
dHJpbmcgJnJlc3QgYm9keSkKICAgICJEZWZpbmUgYSBidWZmZXIgbG9jYWwgZnVuY3Rpb24uCiAg
QVJHTElTVCwgRE9DU1RSSU5HLCBhbmQgQk9EWSBhcmUgcGFzc2VkIHVubW9kaWZpZWQgdG8gYGRl
ZnVuJwoKICBXQVJOSU5HOiBJZiB5b3UgcmVkZWZpbmUgTkFNRSB3aXRoIGBkZWZ1bicgYWZ0ZXIg
dXNpbmcgYGRlZnVuLWxvY2FsJwogIHRoZW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gd2ls
bCBicmVhay4iCiAgICAoZGVjbGFyZSAoZG9jLXN0cmluZyAzKSAoaW5kZW50IDIpKQogICAgKHVu
bGVzcyBkZWZsLS1sb2NhbC1kZWZ1bnMKICAgICAgKHNldHEtbG9jYWwgZGVmbC0tbG9jYWwtZGVm
dW5zIChtYWtlLWhhc2gtdGFibGUgOnRlc3QgIydlcXVhbCkpKQogICAgKHVubGVzcyBkZWZsLS1s
b2NhbC1kZWZ1bi1uYW1lcwogICAgICAoc2V0cS1sb2NhbCBkZWZsLS1sb2NhbC1kZWZ1bi1uYW1l
cyAobWFrZS1oYXNoLXRhYmxlKSkpCiAgICAobGV0ICgoZG9jc3RyaW5nIChpZiBkb2NzdHJpbmcg
KGxpc3QgZG9jc3RyaW5nKSBkb2NzdHJpbmcpKQogICAgICAgICAgKGxvY2FsLW5hbWUgKG9yIChn
ZXRoYXNoIG5hbWUgZGVmbC0tbG9jYWwtZGVmdW4tbmFtZXMpCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgKHB1dGhhc2ggbmFtZSAoY2wtZ2VudGVtcCAoZm9ybWF0ICIlUy0iIG5hbWUpKSBkZWZs
LS1sb2NhbC1kZWZ1bi1uYW1lcykpKSkKICAgICAgYChwcm9nMQogICAgICAgICAgIChkZWZ1biAs
bG9jYWwtbmFtZSAsYXJnbGlzdCAsQGRvY3N0cmluZyAsQGJvZHkpCiAgICAgICAgICh1bmxlc3Mg
KGZib3VuZHAgJyxuYW1lKQogICAgICAgICAgIChkZWZ1biAsbmFtZSAoJnJlc3QgYXJncykgKGVy
cm9yICJHbG9iYWwgc3R1YiBmb3IgZGVmdW4tbG9jYWwgJXMiICMnLG5hbWUpKQogICAgICAgICAg
IChwdXQgJyxuYW1lICdkZWZ1bi1sb2NhbC1zdHViIHQpKQogICAgICAgICAocHV0aGFzaCAoc3lt
Ym9sLWZ1bmN0aW9uICMnLG5hbWUpICMnLGxvY2FsLW5hbWUgZGVmbC0tbG9jYWwtZGVmdW5zKSA7
IFhYWCBicm9rZW4gaWYgdGhlIHN0dWIgaXMgb3ZlcndyaXR0ZW4KICAgICAgICAgKGFkdmljZS1h
ZGQgIycsbmFtZSA6YXJvdW5kICMnZGVmbC0taGFzLWxvY2FsLWRlZnVucykpKSkKCiAgKGRlZmFs
aWFzICdkZWZ1bi1sb2NhbCAjJ2RlZmwpCgogIChkZWZ1biBkZWZsLWRlZmFsaWFzLWxvY2FsIChz
eW1ib2wgZGVmaW5pdGlvbiAmb3B0aW9uYWwgZG9jc3RyaW5nKQogICAgIkRlZmluZSBhIGJ1ZmZl
ciBsb2NhbCBhbGlhcy4gTk9URSBvbmx5IHdvcmtzIGZvciBmdW5jdGlvbnMuCiAgSXQgaXMgbm90
IHJlYWxseSBuZWVkZWQgZm9yIHZhcmlhYmxlcyBzaW5jZSBgc2V0cS1sb2NhbCcgY292ZXJzCiAg
bmVhcmx5IGV2ZXJ5IHVzZSBjYXNlLiBOb3RlIHRoYXQgdGhlIHdheSB0aGlzIGlzIGRlZmluZWQg
dXNlcwogIGBkZWZ1bi1sb2NhbCcgc28gaXQgcHJvYmFibHkgZG9lcyBub3QgYmVoYXZlIGxpa2Ug
YSByZWFsIGFsaWFzLiIKICAgIChpZiAoc3ltYm9sLWZ1bmN0aW9uIGRlZmluaXRpb24pCiAgICAg
ICAgKGRlZnVuLWxvY2FsIHN5bWJvbCAoJnJlc3QgYXJncykKICAgICAgICAgIGRvY3N0cmluZwog
ICAgICAgICAgKGFwcGx5IGRlZmluaXRpb24gYXJncykpCiAgICAgIChlcnJvciAiJVMgZG9lcyBu
b3QgcG9pbnQgdG8gYSBmdW5jdGlvbiIgZGVmaW5pdGlvbikpKQoKICAoZGVmdW4gZGVmbC0tcmF3
LXN5bWJvbC1mdW5jdGlvbiAobmFtZSkKICAgICJSZXR1cm4gdW5hZHZpc2VkIGZvcm0gb2YgTkFN
RS4gTk9UIFRIUkVBRCBTQUZFLiIKICAgIChpZiAoYWR2aWNlLW1lbWJlci1wICMnZGVmbC0taGFz
LWxvY2FsLWRlZnVucyBuYW1lKQogICAgICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICAgICAo
cHJvZ24KICAgICAgICAgICAgICAoYWR2aWNlLXJlbW92ZSBuYW1lICMnZGVmbC0taGFzLWxvY2Fs
LWRlZnVucykKICAgICAgICAgICAgICAoc3ltYm9sLWZ1bmN0aW9uIG5hbWUpKQogICAgICAgICAg
OzsgRklYTUUgPiBhc3N1bWluZyB0aGF0IG5hbWUgd2FzIHByZXZpb3VzbHkgYWR2aXNlZAogICAg
ICAgICAgKGFkdmljZS1hZGQgbmFtZSA6YXJvdW5kICMnZGVmbC0taGFzLWxvY2FsLWRlZnVucykp
CiAgICAgIChzeW1ib2wtZnVuY3Rpb24gbmFtZSkpKQoKICAoZGVmdW4gZGVmbC0tZm1ha3VuYm91
bmQtbG9jYWwgKGNvbW1hbmQgJnJlc3QgYXJncykKICAgICJBZHZpc2UgQ09NTUFORCBgZm1ha3Vu
Ym91bmQnIHRvIGJlIGF3YXJlIG9mIGBkZWZ1bi1sb2NhbCcgZm9ybXMuIgogICAgKGlmIGRlZmwt
LWxvY2FsLWRlZnVuLW5hbWVzCiAgICAgICAgKGxldCogKChuYW1lIChjYXIgYXJncykpCiAgICAg
ICAgICAgICAgIChsb2NhbC1uYW1lIChnZXRoYXNoIG5hbWUgZGVmbC0tbG9jYWwtZGVmdW4tbmFt
ZXMpKSkKICAgICAgICAgIDs7IEZJWE1FIElmIHdlIG1pbWljIHRoZSBiZWhhdmlvciBvZiBkZWZ2
YXItbG9jYWwgdGhlbgogICAgICAgICAgOzsgd2Ugc2hvdWxkIG5ldmVyIHJlbW92ZSB0aGUgZXJy
b3Igc3R1YiwgYnV0IHRoaXMgaXMKICAgICAgICAgIDs7IGEgYml0IGRpZmZlcmVudCBiZWNhdXNl
IHdlIGNhbid0IGNoYW5nZSBob3cgZGVmdW4gd29ya3MgdG8KICAgICAgICAgIDs7IG1pbWljIGhv
dyBzZXRxIHdvcmtzIGFuZCB0aGVuIGhhdmUgZGVmdW4tZGVmYXVsdCB0aGF0IG1pbWljcwogICAg
ICAgICAgOzsgaG93IHNldHEtZGVmYXVsdCB3b3JrcywgdGhlIGJlaGF2aW9yIG9mIGxvY2FsIHZh
cmlhYmxlcyBpcwogICAgICAgICAgOzsgYWxyZWFkeSBjb25mdXNpbmcgZW5vdWdoIHdpdGhvdXQg
aGF2aW5nIHRvIGFsc28gZGVhbCB3aXRoIHRoZQogICAgICAgICAgOzsgdGhlIGZhY3QgdGhhdCBk
ZWZ1biBhbmQgZGVmdmFyIGhhdmUgcmFkaWNhbGx5IGRpZmZlcmVudCBiZWhhdmlvcgogICAgICAg
ICAgOzsgd2l0aCByZWdhcmQgdG8gcmVkZWZpbml0aW9uCiAgICAgICAgICA7OyBGSVhNRSBpdCB3
b3VsZCBzdGlsbCBiZSBuaWNlIHRvIGJlIGFibGUgdG8gcmVtb3ZlIHRoZSBhZHZpY2UKICAgICAg
ICAgIDs7IGZyb20gdGhlIGdsb2JhbCBmdW5jdGlvbiB3aGVuIHRoZSBsYXN0IGxvY2FsIGZ1bmN0
aW9uIGNlYXNlcwogICAgICAgICAgOzsgdG8gYmUgZGVmaW5lZCBidXQgdGhhdCBjYW4gYmUgZm9y
IGxhdGVyCiAgICAgICAgICAoaWYgbG9jYWwtbmFtZQogICAgICAgICAgICAgIChwcm9nbgogICAg
ICAgICAgICAgICAgKGFwcGx5IGNvbW1hbmQgKGxpc3QgbG9jYWwtbmFtZSkpCiAgICAgICAgICAg
ICAgICAocmVtaGFzaCAoZGVmbC0tcmF3LXN5bWJvbC1mdW5jdGlvbiBuYW1lKSBkZWZsLS1sb2Nh
bC1kZWZ1bnMpCiAgICAgICAgICAgICAgICAocmVtaGFzaCBuYW1lIGRlZmwtLWxvY2FsLWRlZnVu
LW5hbWVzKSkKICAgICAgICAgICAgKGFwcGx5IGNvbW1hbmQgYXJncykpKQogICAgICAoYXBwbHkg
Y29tbWFuZCBhcmdzKSkpCgogIDs7KGFkdmljZS1hZGQgIydmbWFrdW5ib3VuZCA6YXJvdW5kICMn
ZGVmbC0tZm1ha3VuYm91bmQtbG9jYWwpCiAgKQoKKGRlZnZhciBvdy1mb3J3YXJkLXN1YnByb2Nl
c3Mtc3RyZWFtcyB0ICJGb3J3YXJkIHN0cmVhbXMgZnJvbSBzdWJwcm9jZXNzZXMuIikKCihkZWZ1
biBvdy0tZm9yd2FyZC1zdHJlYW0gKGJ1ZmZlciBwb2ludCBwcmludGNoYXJmdW4pCiAgIlVzZSBg
cHJpbmMnIG9uIEJVRkZFUiBhZnRlciBQT0lOVCB1c2luZyBQUklOQ0hBUkZVTiB0byBvdXRwdXQu
CkhlbHBlciBmdW5jdGlvbiB0byBmb3J3YXJkIHN0ZGVyciBhbmQgc3Rkb3V0IGZyb20gc3VicHJv
Y2Vzc2VzLiIKICA7OyB0cmllZCB0byBhZGQgYSBwcmVmaXggdG8gY2xhcmlmeSBvdXQvZXJyIGRp
c3RpbmN0aW9ucyBidXQgaXQKICA7OyB0dXJucyBvdXQgdGhhdCBldmVuIHRoZSBzaW1wbGVzdCB0
ZXN0IGNhc2VzIHNob3cgdGhhdCB0aGF0IGlzIGEKICA7OyBmdXRpbGUgYXR0ZW1wdCAuLi4gdGhh
bmtzIHVuaXgKICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgIChsZXQgKChuZXctcG9p
bnQgKHBvaW50KSkpCiAgICAgICh1bmxlc3MgKD0gbmV3LXBvaW50IHBvaW50KQogICAgICAgIChw
cmluYyAoYnVmZmVyLXN1YnN0cmluZyBwb2ludCBuZXctcG9pbnQpIHByaW50Y2hhcmZ1bikpCiAg
ICAgIG5ldy1wb2ludCkpKQoKKGRlZnVuIG93LS1teS1iYWxscyAocHJvY2VzcyBwcmluY2hhcmZ1
biAmb3B0aW9uYWwgbm8tZm9yd2FyZCkKICAobGV0KiAoKGJ1ZmZlciAocHJvY2Vzcy1idWZmZXIg
cHJvY2VzcykpCiAgICAgICAgIChwb2ludCAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIgKHBv
aW50KSkpKQogICAgKHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1vdXRwdXQgcHJvY2VzcykKICAgICAg
KHdoZW4gKGFuZCBub25pbnRlcmFjdGl2ZSAobm90IG5vLWZvcndhcmQpKQogICAgICAgIChsZXQg
KG1lc3NhZ2UtbG9nLW1heCkKICAgICAgICAgIChzZXRxIHBvaW50IChvdy0tZm9yd2FyZC1zdHJl
YW0gYnVmZmVyIHBvaW50IHByaW5jaGFyZnVuKSkpKSkKICAgIDs7IHdlIGRvbid0IGFjdHVhbGx5
IHdhbnQgdG8gcHJpbnQgdGhlIGp1bmsgaW4gdGhlIGJ1ZmZlciB0aGF0CiAgICA7OyBzaG93cyB1
cCBhZnRlciB0aGUgcHJvY2VzcyBleGl0cywgdW5mb3J0dW5hdGVseSB0aGUgYmVoYXZpb3IgaXMK
ICAgIDs7IGluY29uc2lzdGVudCBhbmQgc29tZXRpbWVzIHRoZSBqdW5rIHByaW50cyBhbmQgc29t
ZXRpbWVzIGl0CiAgICA7OyBkb2VzIG5vdCBkZXBlbmRpbmcgb24gdGhlIGV4YWN0IGludGVyYWN0
aW9uIGJldHdlZW4gdGhlIHRocmVhZHMKICAgIDs7IGFuZCB0aGUgcHJvY2Vzcywgc28gd2UgY2Fs
bCB0aGlzIG9uZSBsYXN0IHRpbWUgdG8gZ2V0IGV2ZXJ5dGhpbmcKICAgIChvdy0tZm9yd2FyZC1z
dHJlYW0gYnVmZmVyIHBvaW50IHByaW5jaGFyZnVuKQogICAgbmlsKSkKCihkZWZ1biBvdy0tYWNj
ZXB0LWFuZC1mb3J3YXJkLXByb2Nlc3Mtb3V0cHV0IChwcm9jZXNzIHN0ZGVyci1wcm9jZXNzICZv
cHRpb25hbCBuby1mb3J3YXJkKQogICJBY2NlcHQgb3V0cHV0IGZyb20gUFJPQ0VTUyBhbmQgU1RE
RVJSLVBST0NFU1Mgd2hlbiBgbm9uaW50ZXJhY3RpdmUnIGZvcndhcmQgc3RyZWFtcy4KCldBUk5J
Tkc6IGRvZXMgbm90IGd1cmFudGVlIHNlcXVlbmNpbmcgb2Ygc3Rkb3V0IGFuZCBzdGRlcnIgZXZl
bnRzLgoKSWYgdGhlIG9wdGlvbmFsIE5PLUZPUldBUkQgYXJndW1lbnQgaXMgbm9uLW5pbCBkbyBu
b3QgZm9yd2FyZC4KCkFuIGFsdGVybmF0ZSBhcHByb2FjaCBtaWdodCBiZSB0byB1c2UgYHNldC1w
cm9jZXNzLWZpbHRlcicuIgoKICA7OyBodHRwczovL2dpdGh1Yi5jb20vdGtmL2VtYWNzLXJlcXVl
c3QvaXNzdWVzLzIwMwogIChsZXQgKCh0b3V0IChtYWtlLXRocmVhZCAobGFtYmRhICgpIChvdy0t
bXktYmFsbHMgcHJvY2VzcyBzdGFuZGFyZC1vdXRwdXQgbm8tZm9yd2FyZCkpKSkKICAgICAgICAo
dGVyciAobWFrZS10aHJlYWQgKGxhbWJkYSAoKSAob3ctLW15LWJhbGxzIHN0ZGVyci1wcm9jZXNz
ICMnZXh0ZXJuYWwtZGVidWdnaW5nLW91dHB1dCBuby1mb3J3YXJkKSkpKSkKICAgIDs7IHdlIGhh
dmUgdG8gYmluZCBlYWNoIHByb2Nlc3MgdG8gdGhlIG5ldyB0aHJlYWRzIHNvIHRoYXQgdGhleQog
ICAgOzsgY2FuIGJlIHJlYWQgYnkgZWFjaCB0aHJlYWQsIGluIHRoaXMgd2F5IHdlIGNhbiBuZWFy
bHkgZ2V0CiAgICA7OyBiZWhhdmlvciB0aGF0IG1hdGNoZXMgd2FpdCBmb3IgbXVsdGlwbGUgb2Jq
ZWN0cwoKICAgIDs7IFhYWCBXQVJOSU5HOiBldmVuIHdpdGggdGhpcyBiZWhhdmlvciB0aGUgb3Jk
ZXJpbmcgb2YgZXZlbnRzCiAgICA7OyBJUyBOT1QgUFJFU0VSVkVELCBzZWUgdGhlIHN0b2NoYXN0
aWMgYmVoYXZpb3Igb2YgdGhlIGVyci1vdXQKICAgIDs7IGFsdGVybmF0aW5nIGNoYWluIHRlc3Qs
IGNsZWFybHkgc2hvd3MgYSByYWNlIGNvbmRpdGlvbgogICAgKHNldC1wcm9jZXNzLXRocmVhZCBw
cm9jZXNzIHRvdXQpCiAgICAoc2V0LXByb2Nlc3MtdGhyZWFkIHN0ZGVyci1wcm9jZXNzIHRlcnIp
CiAgICAodGhyZWFkLWpvaW4gdG91dCkKICAgICh0aHJlYWQtam9pbiB0ZXJyKSkpCgooZGVmdW4g
b3ctLWFhZnBvLTwtMjYgKHByb2Nlc3Mgc3RkZXJyLXByb2Nlc3MgJm9wdGlvbmFsIG5vLWZvcndh
cmQpCiAgIlZhcmlhbnQgb2YgYG93LS1hY2NlcHQtYW5kLWZvcndhcmQtcHJvY2Vzcy1vdXRwdXQn
IHRoYXQgd29ya3MgYmVmb3JlIEVtYWNzIDI2LiIKICAobGV0ICgoc3Rkb3V0LWJ1ZmZlciAocHJv
Y2Vzcy1idWZmZXIgcHJvY2VzcykpCiAgICAgICAgKHN0ZGVyci1idWZmZXIgKHByb2Nlc3MtYnVm
ZmVyIHN0ZGVyci1wcm9jZXNzKSkKICAgICAgICAoc3Rkb3V0LXBvaW50IDEpCiAgICAgICAgKHN0
ZGVyci1wb2ludCAxKSkKICAgIChjbC1sb29wCiAgICAgZm9yIHAgaW4gKGxpc3QgcHJvY2VzcyBz
dGRlcnItcHJvY2VzcykgZG8KICAgICAod2hpbGUgKGFjY2VwdC1wcm9jZXNzLW91dHB1dCBwKQog
ICAgICAgKHdoZW4gKGFuZCBub25pbnRlcmFjdGl2ZSAobm90IG5vLWZvcndhcmQpKQogICAgICAg
ICAobGV0IChtZXNzYWdlLWxvZy1tYXgpCiAgICAgICAgICAgKHNldHEgc3Rkb3V0LXBvaW50IChv
dy0tZm9yd2FyZC1zdHJlYW0gc3Rkb3V0LWJ1ZmZlciBzdGRvdXQtcG9pbnQgc3RhbmRhcmQtb3V0
cHV0KSkKICAgICAgICAgICAoc2V0cSBzdGRlcnItcG9pbnQgKG93LS1mb3J3YXJkLXN0cmVhbSBz
dGRlcnItYnVmZmVyIHN0ZGVyci1wb2ludCAjJ2V4dGVybmFsLWRlYnVnZ2luZy1vdXRwdXQpKSkp
KSkKICAgIChvdy0tZm9yd2FyZC1zdHJlYW0gc3Rkb3V0LWJ1ZmZlciBzdGRvdXQtcG9pbnQgc3Rh
bmRhcmQtb3V0cHV0KQogICAgKG93LS1mb3J3YXJkLXN0cmVhbSBzdGRlcnItYnVmZmVyIHN0ZGVy
ci1wb2ludCAjJ2V4dGVybmFsLWRlYnVnZ2luZy1vdXRwdXQpKSkKCih3aGVuICg8IGVtYWNzLW1h
am9yLXZlcnNpb24gMjYpCiAgKGRlZmFsaWFzICdvdy0tYWNjZXB0LWFuZC1mb3J3YXJkLXByb2Nl
c3Mtb3V0cHV0ICMnb3ctLWFhZnBvLTwtMjYpKQoKKGRlZnVuIG93LXJ1bi1jb21tYW5kLW5vLXRo
cmVhZCAoY29tbWFuZCAmcmVzdCBhcmdzKQogICJSdW4gQ09NTUFORCB3aXRoIEFSR1MuClJhaXNl
IGFuIGVycm9yIGlmIHRoZSByZXR1cm4gY29kZSBpcyBub3QgemVyby4iCiAgOzsgVE9ETyBtYXli
ZSBpbXBsZW1lbnQgdGhpcyBpbiB0ZXJtcyBvZiBvdy1ydW4tY29tbWFuZC1hc3luYyA/CiAgOzsg
dXN1YWxseSAoZGVmYWxpYXMgJ3J1bi1jb21tYW5kICMnb3ctcnVuLWNvbW1hbmQpCiAgKGxldCAo
KHN0ZG91dC1idWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgIiByYyBzdGRvdXQiKSkKICAgICAg
ICAoc3RkZXJyLWJ1ZmZlciAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiIHJjIHN0ZGVyciIpKSkKICAg
ICh1bndpbmQtcHJvdGVjdAogICAgICAgIChsZXQgKChwcm9jZXNzCiAgICAgICAgICAgICAgICht
YWtlLXByb2Nlc3MKICAgICAgICAgICAgICAgIDpuYW1lIChjb25jYXQgInJ1bi1jb21tYW5kOiAi
IGNvbW1hbmQpCiAgICAgICAgICAgICAgICA6YnVmZmVyIHN0ZG91dC1idWZmZXIKICAgICAgICAg
ICAgICAgIDpzdGRlcnIgc3RkZXJyLWJ1ZmZlcgogICAgICAgICAgICAgICAgOmNvbW1hbmQgKGNv
bnMgY29tbWFuZCBhcmdzKSkpKQogICAgICAgICAgKHdoaWxlIChhY2NlcHQtcHJvY2Vzcy1vdXRw
dXQgcHJvY2VzcykpIDsgZG9uJ3QgdXNlIG11dGV4ZXMga2lkcwogICAgICAgICAgKGxldCAoKGV4
IChwcm9jZXNzLWV4aXQtc3RhdHVzIHByb2Nlc3MpKSkKICAgICAgICAgICAgKGlmICg9IDAgZXgp
CiAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGRvdXQtYnVmZmVyIChidWZm
ZXItc3RyaW5nKSkKICAgICAgICAgICAgICAoZXJyb3IgIkNvbW1hbmQgJXMgZmFpbGVkIGNvZGU6
ICVzIHN0ZG91dDogJVMgc3RkZXJyOiAlUyIKICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBl
eAogICAgICAgICAgICAgICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZlciBzdGRvdXQtYnVmZmVy
IChidWZmZXItc3RyaW5nKSkKICAgICAgICAgICAgICAgICAgICAgKHdpdGgtY3VycmVudC1idWZm
ZXIgc3RkZXJyLWJ1ZmZlciAoYnVmZmVyLXN0cmluZykpKSkpKQogICAgICAoa2lsbC1idWZmZXIg
c3Rkb3V0LWJ1ZmZlcikKICAgICAgKGtpbGwtYnVmZmVyIHN0ZGVyci1idWZmZXIpKSkpCgooZGVm
dW4gb3ctcnVuLWNvbW1hbmQgKGNvbW1hbmQgJnJlc3QgYXJncykKICAiUnVuIENPTU1BTkQgd2l0
aCBBUkdTLgpSYWlzZSBhbiBlcnJvciBpZiB0aGUgcmV0dXJuIGNvZGUgaXMgbm90IHplcm8uIgog
IDs7IFRPRE8gbWF5YmUgaW1wbGVtZW50IHRoaXMgaW4gdGVybXMgb2Ygb3ctcnVuLWNvbW1hbmQt
YXN5bmMgPwogIDs7IHVzdWFsbHkgKGRlZmFsaWFzICdydW4tY29tbWFuZCAjJ293LXJ1bi1jb21t
YW5kKQogIChsZXQgKChzdGRvdXQtYnVmZmVyIChnZW5lcmF0ZS1uZXctYnVmZmVyICIgcmMgc3Rk
b3V0IikpCiAgICAgICAgKHN0ZGVyci1idWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgIiByYyBz
dGRlcnIiKSkpCiAgICAodW53aW5kLXByb3RlY3QKICAgICAgICAobGV0ICgocHJvY2VzcwogICAg
ICAgICAgICAgICAobWFrZS1wcm9jZXNzCiAgICAgICAgICAgICAgICA6bmFtZSAoY29uY2F0ICJy
dW4tY29tbWFuZDogIiBjb21tYW5kKQogICAgICAgICAgICAgICAgOmJ1ZmZlciBzdGRvdXQtYnVm
ZmVyCiAgICAgICAgICAgICAgICA6c3RkZXJyIHN0ZGVyci1idWZmZXIKICAgICAgICAgICAgICAg
IDpjb21tYW5kIChjb25zIGNvbW1hbmQgYXJncykpKSkKICAgICAgICAgIChvdy0tYWNjZXB0LWFu
ZC1mb3J3YXJkLXByb2Nlc3Mtb3V0cHV0CiAgICAgICAgICAgcHJvY2VzcwogICAgICAgICAgIChn
ZXQtYnVmZmVyLXByb2Nlc3Mgc3RkZXJyLWJ1ZmZlcikKICAgICAgICAgICAobm90IG93LWZvcndh
cmQtc3VicHJvY2Vzcy1zdHJlYW1zKSkKICAgICAgICAgIChsZXQgKChleCAocHJvY2Vzcy1leGl0
LXN0YXR1cyBwcm9jZXNzKSkpCiAgICAgICAgICAgIChpZiAoPSAwIGV4KQogICAgICAgICAgICAg
ICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rkb3V0LWJ1ZmZlciAoYnVmZmVyLXN0cmluZykpCiAg
ICAgICAgICAgICAgKGVycm9yICJDb21tYW5kICVzIGZhaWxlZCBjb2RlOiAlcyBzdGRvdXQ6ICVT
IHN0ZGVycjogJVMiCiAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgZXgKICAgICAgICAgICAg
ICAgICAgICAgKHdpdGgtY3VycmVudC1idWZmZXIgc3Rkb3V0LWJ1ZmZlciAoYnVmZmVyLXN0cmlu
ZykpCiAgICAgICAgICAgICAgICAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIHN0ZGVyci1idWZm
ZXIgKGJ1ZmZlci1zdHJpbmcpKSkpKSkKICAgICAgKGNsLWxvb3AgOyB3b3JrYXJvdW5kIGZvciBi
dWcjNTYwMDIKICAgICAgIGZvciBidWZmZXIgaW4gKGxpc3Qgc3Rkb3V0LWJ1ZmZlciBzdGRlcnIt
YnVmZmVyKSBkbwogICAgICAgKGxldCAoKHAgKGdldC1idWZmZXItcHJvY2VzcyBidWZmZXIpKSkK
ICAgICAgICAgKHdoZW4gcAogICAgICAgICAgIChzZXQtcHJvY2Vzcy1xdWVyeS1vbi1leGl0LWZs
YWcgcCBuaWwpKSkpCiAgICAgIChraWxsLWJ1ZmZlciBzdGRvdXQtYnVmZmVyKQogICAgICAoa2ls
bC1idWZmZXIgc3RkZXJyLWJ1ZmZlcikpKSkKCihkZWZ1biBvdy1ydW4tY29tbWFuZC0yNCAoY29t
bWFuZCAmcmVzdCBhcmdzKQogICJSdW4gQ09NTUFORCB3aXRoIEFSR1MuIFJhaXNlIGFuIGVycm9y
IGlmIHRoZSByZXR1cm4gY29kZSBpcyBub3QgemVyby4KVGhpcyBpcyByZXRhaW5lZCBmb3IgY29t
cGF0aWJpbGl0eSB3aXRoIEVtYWNzIDI0IHNpbmNlIGBtYWtlLXByb2Nlc3MnIHdhcwppbnRyb2R1
Y2VkIGluIHZlcnNpb24gMjUuIgogICh3aXRoLXRlbXAtYnVmZmVyCiAgICAobGV0KiAoKHJldHVy
bi1jb2RlIChhcHBseSAjJ2NhbGwtcHJvY2VzcyBjb21tYW5kIG5pbCAoY3VycmVudC1idWZmZXIp
IG5pbCBhcmdzKSkKICAgICAgICAgICAoc3RyaW5nIChidWZmZXItc3RyaW5nKSkpCiAgICAgIChp
ZiAobm90ICg9IDAgcmV0dXJuLWNvZGUpKQogICAgICAgICAgKGVycm9yICJDb21tYW5kICVzIGZh
aWxlZCBjb2RlOiAlcyBzdGRvdXQ6ICVTIiBjb21tYW5kIHJldHVybi1jb2RlIHN0cmluZykKICAg
ICAgICBzdHJpbmcpKSkpCgood2hlbiAoPCBlbWFjcy1tYWpvci12ZXJzaW9uIDI1KQogIChkZWZh
bGlhcyAnb3ctcnVuLWNvbW1hbmQgIydvdy1ydW4tY29tbWFuZC0yNCkpCgooZGVmdW4gb3ctLWRl
ZmF1bHQtc2VudGluZWwgKHByb2Nlc3MgbWVzc2FnZSAmb3B0aW9uYWwgc3RkZXJyLXByb2Nlc3Mp
CiAgIkFuIGV4YW1wbGUgc2VudGluZWwgZm9yIGFzeW5jIHByb2Nlc3Nlcy4KUFJPQ0VTUyBpcyB0
aGUgcHJvY2VzcyB0aGF0IGNoYW5nZWQgc3RhdHVzIGFuZCBNRVNTQUdFIGlzIHRoZQptZXNzYWdl
IHJlbGF0ZWQgdG8gdGhhdCBjaGFuZ2UuICBUaGUgU1RERVJSLVBST0NFU1MgaXMgcGFzc2VkIGFz
CmFuIG9wdGlvbmFsIGFyZ3VtZW50IGlmIDpzdGRlcnIgd2FzIHNldCAod2hpY2ggaXQgYWx3YXlz
IGlzIHdoZW4KdXNpbmcgYG93LXJ1bi1jb21tYW5kLWFzeW5jJykuIgogIChtZXNzYWdlICIlcyAl
cyAlcyIKICAgICAgICAgICBtZXNzYWdlCiAgICAgICAgICAgKHByb2Nlc3Mtc3RhdHVzIHByb2Nl
c3MpCiAgICAgICAgICAgKGFuZCBzdGRlcnItcHJvY2VzcyAocHJvY2Vzcy1zdGF0dXMgc3RkZXJy
LXByb2Nlc3MpKSkKICAobWVzc2FnZSAic3Rkb3V0OiAlUyBzdGRlcnI6ICVTIgogICAgICAgICAg
ICh3aXRoLWN1cnJlbnQtYnVmZmVyIChwcm9jZXNzLWJ1ZmZlciBwcm9jZXNzKSAoYnVmZmVyLXN0
cmluZykpCiAgICAgICAgICAgKGFuZCBzdGRlcnItcHJvY2VzcyAod2l0aC1jdXJyZW50LWJ1ZmZl
ciAocHJvY2Vzcy1idWZmZXIgc3RkZXJyLXByb2Nlc3MpIChidWZmZXItc3RyaW5nKSkpKSkKCihj
bC1kZWZ1biBvdy1ydW4tY29tbWFuZC1hc3luYyAoY29tbWFuZCAmcmVzdCBhcmdzICZrZXkgc2Vu
dGluZWwgJmFsbG93LW90aGVyLWtleXMpCiAgIlJ1biBDT01NQU5EIHdpdGggQVJHUyBhc3luY2hy
b25vdXNseS4KClNFTlRJTkVMIGlzIGEgZnVuY3Rpb24gdGhhdCBoYXMgdHdvIHJlcXVpcmVkIGFy
Z3VtZW50cywgYW5kIE1VU1QKQUNDRVBUIEFOIEFERElUSU9OQUwgT1BUSU9OQUwgQVJHVU1FTlQg
Zm9yIHN0ZGVyci1wcm9jZXNzLiBUaGlzCmFsbG93cyB0aGUgc2VudGluZWwgcHJvY2VzcyB0byBi
ZSB1c2UgYXMgYSBub3JtYWwgc2VudGluZWwKZnVuY3Rpb24gYXMgd2VsbC4KClJlbWluZGVyIHRo
YXQga3dhcmdzIG11c3QgY29tZSBiZWZvcmUgcmVzdCB3aGVuIGNhbGxpbmcgYSBjbC1kZWZ1bi4i
CiAgKGxldCogKChhcmdzIChvciAoYW5kIChtZW1xIDpzZW50aW5lbCBhcmdzKQogICAgICAgICAg
ICAgICAgICAgICAgICAoY2wtcmVtb3ZlLWlmIChsYW1iZGEgKHgpIChvciAobm90IHgpIChlcSB4
IDpzZW50aW5lbCkpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChwbGlz
dC1wdXQgYXJncyA6c2VudGluZWwgbmlsKSkpCiAgICAgICAgICAgICAgICAgICBhcmdzKSkKICAg
ICAgICAgKHN0ZG91dC1idWZmZXIgKGdlbmVyYXRlLW5ldy1idWZmZXIgKGNvbmNhdCAiIHByb2Nl
c3MtYnVmZmVyLSIgY29tbWFuZCkpKQogICAgICAgICAoc3RkZXJyLWJ1ZmZlciAoZ2VuZXJhdGUt
bmV3LWJ1ZmZlciAoY29uY2F0ICIgcHJvY2Vzcy1idWZmZXItc3RkZXJyIiBjb21tYW5kKSkpCiAg
ICAgICAgIChzdGRlcnItcHJvY2VzcwogICAgICAgICAgKG1ha2UtcGlwZS1wcm9jZXNzCiAgICAg
ICAgICAgOm5hbWUgKGNvbmNhdCAicHJvY2Vzcy1zdGRlcnItIiBjb21tYW5kKQogICAgICAgICAg
IDpidWZmZXIgc3RkZXJyLWJ1ZmZlcikpCiAgICAgICAgICh3cmFwcGVkLXNlbnRpbmVsCiAgICAg
ICAgICAoaWYgc2VudGluZWwKICAgICAgICAgICAgICAobGFtYmRhIChwcm9jZXNzIG1lc3NhZ2Up
CiAgICAgICAgICAgICAgICAodW53aW5kLXByb3RlY3QKICAgICAgICAgICAgICAgICAgICAoZnVu
Y2FsbCBzZW50aW5lbCBwcm9jZXNzIG1lc3NhZ2Ugc3RkZXJyLXByb2Nlc3MpCiAgICAgICAgICAg
ICAgICAgICh3aGVuIChtZW1xIChwcm9jZXNzLXN0YXR1cyBwcm9jZXNzKSAnKGV4aXQgc2lnbmFs
KSkKICAgICAgICAgICAgICAgICAgICAoa2lsbC1idWZmZXIgc3Rkb3V0LWJ1ZmZlcikKICAgICAg
ICAgICAgICAgICAgICAoa2lsbC1idWZmZXIgc3RkZXJyLWJ1ZmZlcikpKSkKICAgICAgICAgICAg
KGxhbWJkYSAocHJvY2VzcyBtZXNzYWdlKQogICAgICAgICAgICAgICh3aGVuIChtZW1xIChwcm9j
ZXNzLXN0YXR1cyBwcm9jZXNzKSAnKGV4aXQgc2lnbmFsKSkKICAgICAgICAgICAgICAgIChraWxs
LWJ1ZmZlciBzdGRvdXQtYnVmZmVyKQogICAgICAgICAgICAgICAgKGtpbGwtYnVmZmVyIHN0ZGVy
ci1idWZmZXIpKSkpKQogICAgICAgICAocHJvY2VzcwogICAgICAgICAgKG1ha2UtcHJvY2Vzcwog
ICAgICAgICAgIDpuYW1lIChjb25jYXQgInByb2Nlc3MtIiBjb21tYW5kKQogICAgICAgICAgIDpi
dWZmZXIgc3Rkb3V0LWJ1ZmZlcgogICAgICAgICAgIDpzdGRlcnIgc3RkZXJyLXByb2Nlc3MKICAg
ICAgICAgICA6Y29tbWFuZCAoY29ucyBjb21tYW5kIGFyZ3MpCiAgICAgICAgICAgOnNlbnRpbmVs
IHdyYXBwZWQtc2VudGluZWwpKSkKICAgIHByb2Nlc3MpKQoKKGNsLWRlZnVuIG93LXJ1bi1jb21t
YW5kLWFzeW5jLTI0IChjb21tYW5kICZyZXN0IGFyZ3MgJmtleSBzZW50aW5lbCAmYWxsb3ctb3Ro
ZXIta2V5cykKICAiUnVuIENPTU1BTkQgd2l0aCBBUkdTIGFzeW5jaHJvbm91c2x5LiBTRU5USU5F
TCBydW5zIHdoZW4gcHJvY2Vzc2VzIGNoYW5nZSBzdGF0dXMuCkxlZ2FjeSBpbXBsZW1lbnRhdGlv
biBmb3IgRW1hY3MgPCAyNS4gUmVtaW5kZXIgdGhhdCBrd2FyZ3MgbXVzdApjb21lIGJlZm9yZSBy
ZXN0IHdoZW4gY2FsbGluZyBhIGNsLWRlZnVuLiIKICAobGV0KiAoKGFyZ3MgKG9yIChhbmQgKG1l
bXEgOnNlbnRpbmVsIGFyZ3MpCiAgICAgICAgICAgICAgICAgICAgICAgIChjbC1yZW1vdmUtaWYg
KGxhbWJkYSAoeCkgKG9yIChub3QgeCkgKGVxIHggOnNlbnRpbmVsKSkpCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHBsaXN0LXB1dCBhcmdzIDpzZW50aW5lbCBuaWwpKSkK
ICAgICAgICAgICAgICAgICAgIGFyZ3MpKQogICAgICAgICAocHJvY2VzcyAoYXBwbHkgIydzdGFy
dC1wcm9jZXNzCiAgICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICJwcm9jZXNzLSVzIiBj
b21tYW5kKQogICAgICAgICAgICAgICAgICAgICAgICAgKGdlbmVyYXRlLW5ldy1idWZmZXIKICAg
ICAgICAgICAgICAgICAgICAgICAgICAoZm9ybWF0ICIgcHJvY2Vzcy1idWZmZXItJXMiIGNvbW1h
bmQpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZAogICAgICAgICAgICAgICAgICAg
ICAgICAgYXJncykpKQogICAgKHdoZW4gc2VudGluZWwKICAgICAgKHNldC1wcm9jZXNzLXNlbnRp
bmVsIHByb2Nlc3Mgc2VudGluZWwpKQogICAgcHJvY2VzcykpCgood2hlbiAoPCBlbWFjcy1tYWpv
ci12ZXJzaW9uIDI1KQogIChkZWZhbGlhcyAnb3ctcnVuLWNvbW1hbmQtYXN5bmMgIydvdy1ydW4t
Y29tbWFuZC1hc3luYy0yNCkpCgoKKGRlZnZhciBzZWN1cmwtZGVmYXVsdC1jeXBoZXIgJ3NoYTI1
NikgIDsgcmVtZW1iZXIga2lkcywgYWx3YXlzIHB1Ymxpc2ggdGhlIGN5cGhlciB3aXRoIHRoZSBj
aGVja3N1bQoKKGRlZnVuIHNlY3VybC1wYXRoLWNoZWNrc3VtIChwYXRoICZvcHRpb25hbCBjeXBo
ZXIpCiAgIkNvbXB1dGUgY2hlY2tzdW0gZm9yIFBBVEggdW5kZXIgQ1lQSEVSLgpOb3QgYXMgZmFz
dCBhcyB1c2luZyBzaGEyNTZzdW0sIGJ1dCByZXF1aXJlcyBubyBkZXBlbmRlbmNpZXMgMS40cyB2
cyAuMjVzIGZvciB+NjBtYiIKICAobGV0ICgoY3lwaGVyIChvciBjeXBoZXIgc2VjdXJsLWRlZmF1
bHQtY3lwaGVyKSkpCiAgICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgICAoaW5zZXJ0LWZpbGUtY29u
dGVudHMtbGl0ZXJhbGx5IHBhdGgpCiAgICAgIChzZWN1cmUtaGFzaCBjeXBoZXIgKGN1cnJlbnQt
YnVmZmVyKSkpKSkKCihkZWZ1biBzZWN1cmwgKGN5cGhlciBjaGVja3N1bSB1cmwgcGF0aCkKICAi
U2VjdXJlbHkgZmV0Y2ggVVJMIHRvIFBBVEggb25seSBpZiBpdCBtYXRjaGVzIENIRUNLU1VNIHVu
ZGVyIENZUEhFUi4KRmlsZXMgdGhhdCBkbyBub3QgbWF0Y2ggdGhlIGNoZWNrc3VtIGFyZSBxdWFy
YW50aW5lZC4iCiAgOzsgdW5sZXNzIHRoZSBmaWxlIGV4aXN0cyBvciB0aGUgY2hlY2tzdW0gbWF0
Y2hlcyBmZXRjaCBhbmQgY2hlY2sKICAodW5sZXNzIChhbmQgKGZpbGUtZXhpc3RzLXAgcGF0aCkK
ICAgICAgICAgICAgICAgKGxldCAoKGV4aXN0aW5nLWNoZWNrc3VtIChzZWN1cmwtcGF0aC1jaGVj
a3N1bSBwYXRoIGN5cGhlcikpKQogICAgICAgICAgICAgICAgIChvciAoc3RyaW5nPSBjaGVja3N1
bSBleGlzdGluZy1jaGVja3N1bSkKICAgICAgICAgICAgICAgICAgICAgOzsgKG5vdCAobWVzc2Fn
ZSAiY2hlY2tzdW0gbWlzbWF0Y2g6XG4lU1xuJVMiIGNoZWNrc3VtIGV4aXN0aW5nLWNoZWNrc3Vt
KSkKICAgICAgICAgICAgICAgICAgICAgKG5vdCAocmVuYW1lLWZpbGUgcGF0aAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobWFrZS10ZW1wLWZpbGUgKGNvbmNhdCBwYXRo
ICIuX2V4aXN0aW5nX2ZhaWx1cmVfLiIpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB0KSkpKSkKICAgIChsZXQgKChwYXRoLXRlbXAgKG1ha2UtdGVtcC1maWxlIChjb25j
YXQgcGF0aCAiLl9mZXRjaGluZ18uIikpKSkKICAgICAgKHVybC1jb3B5LWZpbGUgdXJsIHBhdGgt
dGVtcCB0KQogICAgICAobGV0ICgobmV3LWNoZWNrc3VtIChzZWN1cmwtcGF0aC1jaGVja3N1bSBw
YXRoLXRlbXAgY3lwaGVyKSkpCiAgICAgICAgKGlmIChzdHJpbmc9IGNoZWNrc3VtIG5ldy1jaGVj
a3N1bSkKICAgICAgICAgICAgKHJlbmFtZS1maWxlIHBhdGgtdGVtcCBwYXRoKQogICAgICAgICAg
KGxldCAoKHBhdGgtZmFpbHVyZSAobWFrZS10ZW1wLWZpbGUgKGNvbmNhdCBwYXRoICIuX2NoZWNr
c3VtX2ZhaWx1cmVfLiIpKSkpCiAgICAgICAgICAgIChyZW5hbWUtZmlsZSBwYXRoLXRlbXAgcGF0
aC1mYWlsdXJlIHQpCiAgICAgICAgICAgIChlcnJvciAiY2hlY2tzdW0gRkFJTEVEIGZvciBwYXRo
ISAlcyIgcGF0aC1mYWlsdXJlKSkpKSkpCiAgOzsgcmV0dXJuIG5pbCBpbiBhbGwgY2FzZXMgdGhl
IGNhbGxpbmcgc2NvcGUgaGFzIHRoZSBwYXRoIGFuZAogIDs7IHdoYXRldmVyIGlzIGF0IHRoYXQg
cGF0aCBtdXN0IGhhdmUgcGFzc2VkIHRoZSBjdXJyZW50IGNoZWNrc3VtCiAgbmlsKQoKKGRlZm1h
Y3JvIG93LS1zZXRxIChnbG9iYWwgJnJlc3QgYm9keSkKICBgKGlmICxnbG9iYWwKICAgICAgIChz
ZXRxICxAYm9keSkKICAgICAoc2V0cS1sb2NhbCAsQGJvZHkpKSkKCihkZWZ1biBvdy11cmwtaGVh
ZC1vayAodXJsKQogICJDaGVjayBpZiBVUkwgaXMgdXAgYW5kIE9LIHVzaW5nIEhUVFAgSEVBRC4K
QWxsIGVycm9ycyBhcmUgc2lsZW5jZWQuIgogIChsZXQgKCh1cmwtcmVxdWVzdC1tZXRob2QgIkhF
QUQiKSkKICAgIChjb25kaXRpb24tY2FzZSBuaWwKICAgICAgICAod2l0aC1jdXJyZW50LWJ1ZmZl
ciAodXJsLXJldHJpZXZlLXN5bmNocm9ub3VzbHkgdXJsKQogICAgICAgICAgOzsoYnVmZmVyLXN1
YnN0cmluZyAocG9pbnQtbWluKSB1cmwtaHR0cC1lbmQtb2YtaGVhZGVycykKICAgICAgICAgIChn
b3RvLWNoYXIgMCkKICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiXkhUVFAuK09LJCIpKQog
ICAgICAoZXJyb3IgbmlsKSkpKQoKKGRlZnVuIG93LS1yZXN1bHRzLXNpbGVudCAoZnVuICZyZXN0
IGFyZ3MpCiAgIldob2V2ZXIgbmFtZWQgdGhlIG9yaWdpbmFsIHZlcnNpb24gb2YgdGhpcyBoYXMg
YSBzdHJhbmdlIHNlbnNlIG9mIGh1bW9yLiIKICA7OyBzbyA6cmVzdWx0cyBzaWxlbnQsIHdoaWNo
IGlzIHdoYXQgb3JnIGJhYmVsIGNhbGxzIGJldHdlZW4gdmFycwogIDs7IHNldCBhdXRvbWF0aWNh
bGx5IGlzIGNvbXBsZXRlbHkgYnJva2VuIHdoZW4gb25lIGJsb2NrIGNhbGxzIGFub3RoZXIKICA7
OyB0aGVyZSBsaWtlbHkgbmVlZHMgdG8gYmUgYW4gaW50ZXJuYWwgZ2Vuc3ltZWQgdmFsdWUgdGhh
dCBiYWJlbCBibG9ja3MKICA7OyBjYW4gcGFzcyB0byBlYWNob3RoZXIgc28gdGhhdCBhIG1hbGlj
aW91cyB1c2VyIGNhbm5vdCBhY3R1YWxseSBzbGllbmNlCiAgOzsgdmFsdWVzLCBhbG9uZyB3aXRo
IGFuIG9wdGlvbiB0byBzdGlsbCBwcmludCwgYnV0IHVudGlsIHRoZW4gd2UgaGF2ZSB0aGlzCiAg
KGxldCAoKHJlc3VsdCAoY2FyIGFyZ3MpKQogICAgICAgIChyZXN1bHQtcGFyYW1zIChjYWRyIGFy
Z3MpKSkKICAgIChpZiAobWVtYmVyICJzaWxlbnQiIHJlc3VsdC1wYXJhbXMpCiAgICAgICAgcmVz
dWx0CiAgICAgIChhcHBseSBmdW4gYXJncykpKSkKCihkZWZ1biBvdy1iYWJlbC1ldmFsIChibG9j
ay1uYW1lICZvcHRpb25hbCB1bml2ZXJzYWwtYXJndW1lbnQpCiAgIlVzZSB0byBjb25maXJtIHJ1
bm5pbmcgYSBjaGFpbiBvZiBkZXBlbmRlbnQgYmxvY2tzIHN0YXJ0aW5nIHdpdGggQkxPQ0stTkFN
RS4KVGhpcyByZXRhaW5zIHNpbmdsZSBjb25maXJtYXRpb24gYXQgdGhlIGVudHJ5IHBvaW50IGZv
ciB0aGUgYmxvY2suIgogIDs7IFRPRE8gY29uc2lkZXIgYSBoZWFkZXIgYXJnIGZvciBhIHZhcmlh
bnQgb2YgdGhpcyBpbiBvcmcgYmFiZWwgcHJvcGVyCiAgKGludGVyYWN0aXZlICJQIikKICAobGV0
ICgob3JnLWNvbmZpcm0tYmFiZWwtZXZhbHVhdGUgKGxhbWJkYSAoX2wgX2IpIG5pbCkpKSA7OyBG
SVhNRSBUT0RPIHNldCBtZXNzYWdlcyBidWZmZXIgc2l6ZSB0byBuaWwKICAgIChzYXZlLWV4Y3Vy
c2lvbgogICAgICAod2hlbiAob3JnLWJhYmVsLWZpbmQtbmFtZWQtYmxvY2sgYmxvY2stbmFtZSkK
ICAgICAgICA7OyBnb3RvIHdvbid0IHJhaXNlIGFuIGVycm9yIHdoaWNoIHJlc3VsdHMgaW4gdGhl
IGJsb2NrIHdoZXJlCiAgICAgICAgOzsgYG93LWNvbmZpcm0tb25jZScgaXMgYmVpbmcgdXNlZCBi
ZWluZyBjYWxsZWQgYW4gaW5maW5pdGUKICAgICAgICA7OyBudW1iZXIgb2YgdGltZXMgYW5kIGJs
b3dpbmcgdGhlIHN0YWNrCiAgICAgICAgKG9yZy1iYWJlbC1nb3RvLW5hbWVkLXNyYy1ibG9jayBi
bG9jay1uYW1lKQogICAgICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICAgICAocHJvZ24KICAg
ICAgICAgICAgICA7OyBGSVhNRSBvcHRpb25hbGx5IHJhaXNlIGVycm9ycyBvbiBmYWlsdXJlIGhl
cmUgIT8KICAgICAgICAgICAgICAoYWR2aWNlLWFkZCAjJ29yZy1iYWJlbC1pbnNlcnQtcmVzdWx0
IDphcm91bmQgIydvdy0tcmVzdWx0cy1zaWxlbnQpCiAgICAgICAgICAgICAgKG9yZy1iYWJlbC1l
eGVjdXRlLXNyYy1ibG9jaykpCiAgICAgICAgICAoYWR2aWNlLXJlbW92ZSAjJ29yZy1iYWJlbC1p
bnNlcnQtcmVzdWx0ICMnb3ctLXJlc3VsdHMtc2lsZW50KSkpKSkpCgooZGVmdW4gb3ctYmFiZWwt
ZXZhbC1jbG9zZXN0LWJsb2NrICgmb3B0aW9uYWwgdW5pdmVyc2FsLWFyZ3VtZW50KQogICJXQVJO
SU5HIHRoaXMgZnVuY3Rpb24gaXMgYnJva2VuIHJpZ2h0IG5vdy4iCiAgKGludGVyYWN0aXZlICJQ
IikKICA7OyBGSVhNRSBzaG91bGQgdGhlIGRpc3RhbmNlIGJlIGRldGVybWluZWQgYnkgc3RhcnQg
b3IgZW5kID8gb3Igd2hhdD8KICA7OyBJIHRoaW5rIHN0YXJ0IGZvciBuZXh0IGFuZCBlbmQgZm9y
IHByZXYKICA7OyBGSVhNRSBhbHNvIC4uLiBsaW5lcyBhcmUgbGlrZWx5IHRvIGJlIHNpZ25pZmlj
YW50bHkgbW9yZSBpbXBvcnRhbnQKICA7OyBGSVhNRSBhbHNvIGlmIHdlIGFyZSBpbnNpZGUgYSBz
cmMgYmxvY2sgLi4uIGp1c3QgcnVuIHRoYXQgb25lCiAgOzsgRklYTUUgYWxzbyB3aGV0aGVyIG9u
ZSBvZiB0aGUgYmxvY2tzIGlzIHZpc2libGUKICAob3JnLWVsZW1lbnQtYXQtcG9pbnQpCiAgKGxl
dCAoKGhlcmUgKHBvaW50KSkKICAgICAgICAocHJldi1lbmQgKHNhdmUtZXhjdXJzaW9uCiAgICAg
ICAgICAgICAgICAgICAgKG9yZy1iYWJlbC1wcmV2aW91cy1zcmMtYmxvY2spCiAgICAgICAgICAg
ICAgICAgICAgKCsgKHBvaW50KSAobnRoIDUgKG9yZy1iYWJlbC1nZXQtc3JjLWJsb2NrLWluZm8p
KSkpKQogICAgICAgIChuZXh0LWJlZyAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAgICAgICAg
ICAob3JnLWJhYmVsLW5leHQtc3JjLWJsb2NrKQogICAgICAgICAgICAgICAgICAgIChwb2ludCkp
KSkKICAgIChsZXQgKChkcCAoY291bnQtbGluZXMgcHJldi1lbmQgaGVyZSkpCiAgICAgICAgICAo
ZG4gKGNvdW50LWxpbmVzIGhlcmUgbmV4dC1zdGFydCkpKQogICAgICAoc2F2ZS1leGN1cnNpb24K
ICAgICAgICAoZ290by1jaGFyCiAgICAgICAgIChpZiAoPiBkcCBkbikKICAgICAgICAgICAgIG5l
eHQtYmVnCiAgICAgICAgICAgcHJldi1lbmQpKQogICAgICAgIChvcmctYmFiZWwtZXhlY3V0ZS1z
cmMtYmxvY2spKSkpKQoKKGRlZnZhciBvdy1wYWNrYWdlLWFyY2hpdmVzICcoKCJnbnUiIC4gImh0
dHBzOi8vZWxwYS5nbnUub3JnL3BhY2thZ2VzLyIpIDsgPCAyNiBoYXMgaHR0cAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoIm1lbHBhIiAuICJodHRwczovL21lbHBhLm9yZy9wYWNrYWdl
cy8iKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIm5vbmdudSIgLiAiaHR0cHM6Ly9l
bHBhLm5vbmdudS5vcmcvbm9uZ251LyIpKSkKCih3aGVuICg8IGVtYWNzLW1ham9yLXZlcnNpb24g
MjYpCiAgKHNldHEgZ251dGxzLWFsZ29yaXRobS1wcmlvcml0eSAiTk9STUFMOi1WRVJTLVRMUzEu
MyIpKQoKKGRlZnVuIG93LWVuYWJsZS11c2UtcGFja2FnZSAoKQogICJEbyBhbGwgdGhlIHNldHVw
IG5lZWRlZCBmb3IgYHVzZS1wYWNrYWdlJy4KVGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgd2l0aCAo
ZXZhbC13aGVuLWNvbXBpbGUgLi4uKSB0byB0aGUgdG9wIGxldmVsIHByaW9yCnRvIGFueSB1c2Ug
b2YgYHVzZS1wYWNrYWdlJyBvdGhlcndpc2UgaXQgd2lsbCBiZSBtaXNzaW5nIGFuZCBmYWlsIgog
IDs7IHBhY2thZ2UtYXJjaGl2ZXMgaXMgbm90IGFuIGFyZ3VtZW50IHRvIHRoaXMgZnVuY3Rpb24g
dG8gZW5zdXJlIHRoYXQKICA7OyB0aGVyZSBpcyBvbmx5IG9uZSBwbGFjZSB0aGF0IG5lZWRzIHRv
IGJlIHVwZGF0ZWQgaWYgYW4gYXJjaGl2ZSBsb2NhdGlvbgogIDs7IGNoYW5nZXMsIG5hbWVseSB0
aGlzIGxpYnJhcnksIHVwZGF0aW5nIHRoYXQgaXMgZWFzaWVyIHRvIGdldCByaWdodCB1c2luZwog
IDs7IHRoZSBgcmV2YWwtdXBkYXRlJyBtYWNoaW5lcnkKICAocmVxdWlyZSAncGFja2FnZSkKICAo
d2hlbiAoPCBlbWFjcy1tYWpvci12ZXJzaW9uIDI2KQogICAgKHNldHEgcGFja2FnZS1hcmNoaXZl
cwogICAgICAgICAgKGNsLXJlbW92ZS1pZiAobGFtYmRhIChwKSAoZXF1YWwgcCAnKCJnbnUiIC4g
Imh0dHA6Ly9lbHBhLmdudS5vcmcvcGFja2FnZXMvIikpKQogICAgICAgICAgICAgICAgICAgICAg
ICBwYWNrYWdlLWFyY2hpdmVzKSkKICAgIChhZGQtdG8tbGlzdCAncGFja2FnZS1hcmNoaXZlcyAo
YXNzb2MgImdudSIgb3ctcGFja2FnZS1hcmNoaXZlcykpCiAgICAocGFja2FnZS1pbml0aWFsaXpl
KQogICAgKHVubGVzcyAocGFja2FnZS1pbnN0YWxsZWQtcCAnZ251LWVscGEta2V5cmluZy11cGRh
dGUpCiAgICAgIChsZXQgKG9zIHBhY2thZ2UtY2hlY2stc2lnbmF0dXJlKQogICAgICAgIChzZXRx
IHBhY2thZ2UtY2hlY2stc2lnbmF0dXJlIG5pbCkKICAgICAgICAocGFja2FnZS1yZWZyZXNoLWNv
bnRlbnRzKQogICAgICAgIChwYWNrYWdlLWluc3RhbGwgJ2dudS1lbHBhLWtleXJpbmctdXBkYXRl
KQogICAgICAgICh3YXJuICJZb3UgbmVlZCB0byByZXN0YXJ0IEVtYWNzIGZvciBwYWNrYWdlIGtl
eXJpbmcgY2hhbmdlcyB0byB0YWtlIGVmZmVjdC4iKQogICAgICAgIChzZXRxIHBhY2thZ2UtY2hl
Y2stc2lnbmF0dXJlIG9zKSkpCiAgICAoc2V0cSBwYWNrYWdlLS1pbml0aWFsaXplZCBuaWwpKQog
IChkb2xpc3QgKHBhaXIgb3ctcGFja2FnZS1hcmNoaXZlcykKICAgIChhZGQtdG8tbGlzdCAncGFj
a2FnZS1hcmNoaXZlcyBwYWlyIHQpKQogICh1bmxlc3MgcGFja2FnZS0taW5pdGlhbGl6ZWQKICAg
IChwYWNrYWdlLWluaXRpYWxpemUpKQogICh1bmxlc3MgKHBhY2thZ2UtaW5zdGFsbGVkLXAgJ3Vz
ZS1wYWNrYWdlKQogICAgKHBhY2thZ2UtcmVmcmVzaC1jb250ZW50cykKICAgIChwYWNrYWdlLWlu
c3RhbGwgJ3VzZS1wYWNrYWdlKSkKICAocmVxdWlyZSAndXNlLXBhY2thZ2UpCiAgKHNldHEgdXNl
LXBhY2thZ2UtYWx3YXlzLWVuc3VyZSB0KSkKCihkZWZtYWNybyBvdy11c2UtcGFja2FnZXMgKCZy
ZXN0IG5hbWVzKQogICJlbmFibGUgbXVsdGlwbGUgY2FsbHMgdG8gYHVzZS1wYWNrYWdlJyBkdXJp
bmcgYm9vdHN0cmFwCmFkZGl0aW9uYWwgY29uZmlndXJhdGlvbiBjYW4gYmUgcHJvdmlkZWQgYnkg
Y29udmVydGluZyB0aGUgc3ltYm9sCmludG8gYSBsaXN0IChuYW1lIGJvZHkgLi4uKSIKICAoY29u
cwogICAncHJvZ24KICAgKG1hcGNhciAobGFtYmRhIChuYW1lKQogICAgICAgICAgICAgKGNvbmQg
KChzeW1ib2xwIG5hbWUpIGAodXNlLXBhY2thZ2UgLG5hbWUpKQogICAgICAgICAgICAgICAgICAg
KChsaXN0cCBuYW1lKQogICAgICAgICAgICAgICAgICAgICh1bmxlc3MgKGVxIChjYXIgbmFtZSkg
J3F1b3RlKQogICAgICAgICAgICAgICAgICAgICAgKGlmIChtZW1xIChjYXIgbmFtZSkgJyhpZiB3
aGVuIHVubGVzcykpCiAgICAgICAgICAgICAgICAgICAgICAgICAgYCgsKGNhciBuYW1lKSAsKGNh
ZHIgbmFtZSkgKHVzZS1wYWNrYWdlICxAKGNkZHIgbmFtZSkpKQogICAgICAgICAgICAgICAgICAg
ICAgICBgKHVzZS1wYWNrYWdlICxAbmFtZSkpKSkKICAgICAgICAgICAgICAgICAgICgodCAoZXJy
b3IgInVuaGFuZGxlZCB0eXBlICVzIiAodHlwZS1vZiBuYW1lKSkpKSkpCiAgICAgICAgICAgbmFt
ZXMpKSkKCjs7IG93LWNsaQoKKHJlcXVpcmUgJ2NsLWxpYikKCihkZWZ1biBvdy1zdHJpbmctdG8t
bnVtYmVyIChzdHJpbmcgJm9wdGlvbmFsIGJhc2UpCiAgInZhbmlsbGEgYHN0cmluZy10by1udW1i
ZXInIGhhcyBhIGRlZ2VuZXJhdGUgY2FzZSB3aXRoIFwiMFwiIgogIChsZXQgKChtYXliZS16ZXJv
IChzdHJpbmctdG8tbnVtYmVyIHN0cmluZyBiYXNlKSkpCiAgICAoaWYgKD0gbWF5YmUtemVybyAw
KQogICAgICAgIChpZiAoc3RyaW5nPSBtYXliZS16ZXJvICIwIikKICAgICAgICAgICAgMAogICAg
ICAgICAgKGVycm9yICIlUyBpcyBub3QgYSBudW1iZXIhIiBzdHJpbmcpKQogICAgICBtYXliZS16
ZXJvKSkpCgooZGVmdW4gb3cta2V5d29yZC1uYW1lIChrZXl3b3JkKQogICJHZXQgdGhlIGBzeW1i
b2wtbmFtZScgb2YgS0VZV09SRCB3aXRob3V0IHRoZSBsZWFkaW5nIGNvbG9uLiIKICAodW5sZXNz
IChrZXl3b3JkcCBrZXl3b3JkKQogICAgKGVycm9yICIlcyBpcyBub3QgYSBrZXl3b3JkISAlcyIg
a2V5d29yZCAodHlwZS1vZiBrZXl3b3JkKSkpCiAgKHN1YnN0cmluZyAoc3ltYm9sLW5hbWUga2V5
d29yZCkgMSkpCgooZGVmdW4gb3ctY2xpLS1ub3JtLWFyZyAoYXJnKQogIChsZXQgKChpbnQgKGln
bm9yZS1lcnJvcnMgKG93LS1zdHJpbmctdG8tbnVtYmVyIGFyZykpKSkKICAgIChpZiBpbnQgaW50
IGFyZykpKQoKKGRlZnVuIG93LWNsaS0tcHJvY2Vzcy1iaW5kLWtleXdvcmQgKGJpbmQta2V5d29y
ZCkKICAiUHJvY2Vzc2VzIEJJTkQtS0VZV09SRCBpbnRvIGxldC1iaW5kaW5nIGVsZW1lbnRzIGBj
bC1jYXNlJyBlbGVtZW50cyBhbmQgYWxpc3QgZWxlbWVudHMuCgpCaW5kIGtleXdvcmQgbGlzdHMg
bWF5IHRha2UgdGhlIGZvbGxvd2luZyBmb3Jtcy4KCig6ZmxhZykgOyBsZWdhY3kgc3VwcG9ydCBi
ZWZvcmUgd2UgYWRkZWQgdGhlIGludGVybmFsIGJpbmRpbmcgY2xhdXNlCigoOmZsYWcpKSA7IHNh
bWUgYXMgKDpmbGFnKQooKDpmbGFnKSBmbGFnLWludGVybmFsKQoKKDpvcHRpb24gZGVmYXVsdCkK
KCg6b3B0aW9uIGRlZmF1bHQpKQooKDpvcHRpb24gZGVmYXVsdCkgb3B0aW9uLWludGVybmFsKQoK
KHN1YmNtZCkKKHN1YmNtZCBzdWJjbWQtaW50ZXJuYWwpIgogICh1bmxlc3MgKGxpc3RwIGJpbmQt
a2V5d29yZCkKICAgIChlcnJvciAiJXMgbm90IGEgbGlzdCEgJXMiIGJpbmQta2V5d29yZCAodHlw
ZS1vZiBiaW5kLWtleXdvcmQpKSkKICAobGV0KiAoKGt3LW9yLWVsZW1lbnQ/IChjYXIgYmluZC1r
ZXl3b3JkKSkKICAgICAgICAgKGJpbmQ/IChpZiAoc3ltYm9scCBrdy1vci1lbGVtZW50Pykgbmls
IChjZHIgYmluZC1rZXl3b3JkKSkpCiAgICAgICAgIChlbGVtZW50IChpZiAoc3ltYm9scCBrdy1v
ci1lbGVtZW50PykgYmluZC1rZXl3b3JkIGt3LW9yLWVsZW1lbnQ/KSkKICAgICAgICAgKF8gKHVu
bGVzcyAobGlzdHAgZWxlbWVudCkKICAgICAgICAgICAgICAoZXJyb3IgIiVzIG5vdCBhIGxpc3Qh
ICVzIiBlbGVtZW50ICh0eXBlLW9mIGVsZW1lbnQpKSkpCiAgICAgICAgIChrdyAoY2FyIGVsZW1l
bnQpKQogICAgICAgICAoc2wgKGFuZCAoa2V5d29yZHAga3cpIChvdy1rZXl3b3JkLW5hbWUga3cp
KSkKICAgICAgICAgKHN1YmNtZD8gKG5vdCAoa2V5d29yZHAga3cpKSkKICAgICAgICAgKGFzc2ln
bj8gKGFuZCAobm90IHN1YmNtZD8pIChjZHIgZWxlbWVudCkpKQogICAgICAgICAocmVhbC1hc3Np
Z24gKGlmIGJpbmQ/IChjYXIgYmluZD8pIChpZiBzdWJjbWQ/IGt3IChpbnRlcm4gc2wpKSkpCiAg
ICAgICAgIChkZWZhdWx0IChpZiBhc3NpZ24/IChjYXIgYXNzaWduPykgYXNzaWduPykpIDsgRklY
TUUKICAgICAgICAgKHAgKGlmIGFzc2lnbj8KICAgICAgICAgICAgICAgIGAocHJvZ24gKHNldGYg
LHJlYWwtYXNzaWduIChvdy1jbGktLW5vcm0tYXJnIChjYWRyIGFyZ3MpKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgOzsgZXF1aXZhbGVudCBvZiBiYXNoIHNoaWZ0IHNoaWZ0CiAgICAgICAgICAg
ICAgICAgICAgICAgIChzZXRmIGFyZ3MgKGNkZHIgYXJncykpKQogICAgICAgICAgICAgIGAocHJv
Z24gKHNldGYgLHJlYWwtYXNzaWduIHQpCiAgICAgICAgICAgICAgICAgICAgICA7OyBlcXVpdmFs
ZW50IG9mIGJhc2ggc2hpZnQKICAgICAgICAgICAgICAgICAgICAgIChzZXRmIGFyZ3MgKGNkciBh
cmdzKSkpKSkpCiAgICAobGlzdCBgKCxyZWFsLWFzc2lnbiAsZGVmYXVsdCkgIDsgZGVmYXVsdAog
ICAgICAgICAgYCgsKGlmIHN1YmNtZD8ga3cgKGludGVybiAoZm9ybWF0ICItLSVzIiBzbCkpKSAs
cCkgIDsgY2FzZQogICAgICAgICAgYChjb25zICcscmVhbC1hc3NpZ24gLHJlYWwtYXNzaWduKSkp
KQoKKGRlZm1hY3JvIG93LWNsaS1wYXJzZS1hcmdzICgmcmVzdCBrZXl3b3JkcykKICAiKHBhcnNl
LWFyZ3MgKDpwb3J0IHBvcnQpICg6cGlkIHBpZCkgKDpmbGFnKSkKCiAgIFhYWCBUaGlzIGlzIGEg
bGVnYWN5IGZ1bmN0aW9uLgoKICAgTk9URSBpZiB0aGUgZGVmYXVsdCB2YWx1ZSBpZiBhIGt3YXJn
IGlzIG5pbCByYXRoZXIgdGhhbgogICBlbXB0eSBpLmUuICg6YXNkZiBuaWwpIHZzICg6YXNkZikg
dGhlIGZvcm0gd2l0aCBuaWwgd2lsbAogICBub3QgZmFpbCBidXQgd2lsbCBiZSBuaWwgdW5sZXNz
IHNvbWUgdmFsdWUgaXMgcHJvdmlkZWQKICAgQU5EIGl0IHdpbGwgZWF0IHRoZSBuZXh0IGt3YXJn
IHRoaXMgaXMgcHJvYmFibHkgYSBtaXNkZXNpZ24iCiAgYChvdy1jbGktZ2VuICxrZXl3b3JkcyBw
YXJzZWQpKQoKKGRlZm1hY3JvIG93LWNsaS1nZW4gKGJpbmQta2V5d29yZHMgJnJlc3QgYm9keSkK
ICAiQWxsIHRoZSBtYWNoaW5lcnkgbmVlZGVkIGZvciBzaW1wbGUgY2xpIHNwZWNpZmljYXRpb24u
CgpCSU5ELUtFWVdPUkRTIGZvbGxvdyBhIHJldmVyc2UgbGV0IHBhdHRlcm4gYmVjYXVzZSBpZiB0
aGUgbmFtZSB0bwpiaW5kIGlzIG5vdCBzcGVjaWZpZWQgdGhlbiBpdCBpcyB0aGUgYG93LWtleXdv
cmQtbmFtZScgb2YgdGhlIGtleXdvcmQKdXNlZCB0byBzcGVjaWZ5IHRoZSBjb21tYW5kIGxpbmUg
b3B0aW9uLgoKRm9yIGV4YW1wbGUKKCg6b3B0aW9uIGRlZmF1bHQpKSAtPiAtLW9wdGlvbiB2YWx1
ZSAtPiAobGV0ICgob3B0aW9uIFwidmFsdWVcIikpICkKKCg6b3B0aW9uIGRlZmF1bHQpIG9wdGlv
bi1pbnRlcm5hbCkgLT4gLS1vcHRpb24gdmFsdWUgLT4gKGxldCAoKG9wdGlvbi1pbnRlcm5hbCBc
InZhbHVlXCIpKSApIgogIDs7IEZJWE1FIGFtYmlndWl0eSBiZXR3ZWVuICg6b3B0aW9uIGJpbmQt
dG8tbmFtZSkgYW5kICgoOm9wdGlvbikgYmluZC10by1uYW1lKQogIChkZWNsYXJlIChpbmRlbnQg
MikgKGluZGVudCAxKSkKICAoY2wtZGVzdHJ1Y3R1cmluZy1iaW5kIChkZWZhdWx0cyBjYXNlcyBy
ZXR1cm5zKQogICAgICAoYXBwbHkgIydjbC1tYXBjYXIgIydsaXN0IDsgYGNsLW1hcGNhcicgcmVx
dWlyZWQgZm9yIHRoaXMgdG8gd29yawogICAgICAgICAgICAgKG1hcGNhciAjJ293LWNsaS0tcHJv
Y2Vzcy1iaW5kLWtleXdvcmQgYmluZC1rZXl3b3JkcykpCiAgICBgKGxldCAoKGFyZ3MgKGNkciBj
b21tYW5kLWxpbmUtYXJncy1sZWZ0KSkKICAgICAgICAgICAsQGRlZmF1bHRzKQogICAgICAgKGNs
LWRvICgpCiAgICAgICAgICAgKChudWxsIGFyZ3MpIG5pbCkKICAgICAgICAgKGNsLWNhc2UgKGlu
dGVybiAoY2FyIGFyZ3MpKQogICAgICAgICAgICxAY2FzZXMKICAgICAgICAgICAob3RoZXJ3aXNl
IChwcm9nbiAobWVzc2FnZSAidW5oYW5kbGVkOiAlcyIgKGNhciBhcmdzKSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAoc2V0ZiBhcmdzIChjZHIgYXJncykpKSkpKQogICAgICAgKGxldCAo
Y2FzZXMgcmV0dXJucyAocGFyc2VkIChsaXN0ICxAcmV0dXJucykpKQogICAgICAgICAsQGJvZHkp
KSkpCgooZGVmdW4gb3ctY2xpLW9wdCAob3B0KQogICJJZiBPUFQgaXMgaW4gYGFyZ3YnIHJldHVy
biB0aGUgaW5kZXggb2YgT1BUIGluIGBhcmd2Jy4KCklmIHlvdSBuZWVkIHRvIHNldCB2YXJpYWJs
ZXMgZnJvbSBgYXJndicgZWFybHkgaW4gbG9hZCwgKGUuZy4KYmVmb3JlIGEgY2FsbCB0byBgcmV2
YWwnIHNvIHlvdSBjYW4gc2V0IHRoZSBjYWNoZSBsb2NhdGlvbikgdGhlbgp5b3UgbmVlZCBzb21l
IGFic29sdXRlbHkgbWluaW1hbCBhcmd2IHBhcnNpbmcgbWFjaGluZXJ5LgoKVGh1cywgdGhpcyBm
dW5jdGlvbiBpcyBub3QgcGFydGljdWxhcmx5IHVzZWZ1bCBpbiBhIGxpYnJhcnkgYmVjYXVzZQpp
dHMgcHJpbWFyeSB1c2UgY2FzZSBpcyB0byBjaGVjayBmb3IgYW5kIHNldCBgdXNlci1lbWFjcy1k
aXJlY3RvcnknCmlmIGl0IGlzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLiBJdCBpcyBrZXB0
IGhlcmUgZm9yIHJlZmVyZW5jZQpzbyB0aGF0IGl0IGNhbiBiZSBwYXN0ZWQgaW50byBhIGZpbGUg
dGhhdCBuZWVkcyB0byBhYmxlIHRvIHNldApgdXNlci1lbWFjcy1kaXJlY3RvcnknIGJlZm9yZSBg
cmV2YWwnIG9yIGBvdy1jbGktZ2VuJyBhcmUgcHJlc2VudC4iCiAgKGxldCAoKGluZGV4IChjbC1w
b3NpdGlvbiBvcHQgYXJndiA6dGVzdCAjJ3N0cmluZz0pKSkKICAgIChhbmQgaW5kZXggKGVsdCBh
cmd2ICgxKyBpbmRleCkpKSkpCgo7OyBvcnRoYXV0aC1taW5pbWFsCgooZGVmdmFyIG9hLXNlY3Jl
dHMgbmlsICJwYXRoIHRvIG9ydGhhdXRoIHNlY3JldHMuc3hwciBmaWxlIikKCihkZWZ1biBvYS0t
cmVzb2x2ZS1wYXRoIChwbGlzdCBlbGVtZW50cykKICAicmVjdXJzaXZlbHkgYGNsLWdldGYnIGlu
IG9yZGVyIGtleXdvcmRzIGZyb20gRUxFTUVOVFMgaW4gbmVzdGVkIHBsaXN0cyBpbnNpZGUgUExJ
U1QiCiAgKGlmIGVsZW1lbnRzCiAgICAgIChvYS0tcmVzb2x2ZS1wYXRoIChjbC1nZXRmIHBsaXN0
IChjYXIgZWxlbWVudHMpKSAoY2RyIGVsZW1lbnRzKSkKICAgIHBsaXN0KSkKCihkZWZ1biBvYS0t
cmVhZCAocGF0aCkKICAicmVhZCB0aGUgZmlyc3Qgc2V4cHJlc3Npb24gaW4gdGhlIGZpbGUgYXQg
UEFUSCIKICAod2l0aC10ZW1wLWJ1ZmZlcgogICAgKGluc2VydC1maWxlLWNvbnRlbnRzIHBhdGgp
CiAgICAocmVhZCAoYnVmZmVyLXN0cmluZykpKSkKCihkZWZ1biBvYS1wYXRoICgmcmVzdCBlbGVt
ZW50cykKICAiUmV0cmlldmUgdmFsdWUgYXQgbmVzdGVkIHBhdGggZGVmaW5lZCBieSBrZXl3b3Jk
cyBwcm92aWRlZCBpbiBFTEVNRU5UUyBpbiBgb2Etc2VjcmV0cyciCiAgKGxldCAoKHBsaXN0IChv
YS0tcmVhZCBvYS1zZWNyZXRzKSkpCiAgICAob2EtLXJlc29sdmUtcGF0aCBwbGlzdCBlbGVtZW50
cykpKQoKOzsgY29udHJvbCBpbml0aWFsIHZpc2liaWxpdHkKCihkZWZ1biBvdy1oaWRlLXNlY3Rp
b24tMC1ibG9ja3MgKCkKICAiSGlkZSBibG9ja3MgYW5kIGR5bmFtaWMgYmxvY2tzIHRoYXQgYXJl
IHVzZWQgaW4gc2VjdGlvbiAwLiIKICAobGV0ICgoZGJsb2NrcyAnKCJtZXRhZGF0YSIgInByb3Bl
cnRpZXMiICJwcmVmaXhlcyIpKQogICAgICAgIChibG9ja3MgJygib3Jnc3RyYXAtc2hlYmFuZyIp
KSkKICAgIDs7IGRibG9ja3MgYW5kIGJsb2NrcyBoYXZlIHNlcGFyYXRlIG5hbWVzcGFjZXMKICAg
IChzYXZlLWV4Y3Vyc2lvbgogICAgICAobWFwY2FyIChsYW1iZGEgKG5hbWUpIChhbmQgKG9yZy1m
aW5kLWRibG9jayBuYW1lKSAob3JnLWhpZGUtYmxvY2stdG9nZ2xlICdoaWRlKSkpCiAgICAgICAg
ICAgICAgZGJsb2NrcykKICAgICAgOzsgRklYTUUgaW5jb25zaXN0ZW50IGJlaGF2aW9yIGJldHdl
ZW4gYG9yZy1maW5kLWRibG9jaycgYW5kIGBvcmctYmFiZWwtZmluZC1uYW1lZC1ibG9jaycKICAg
ICAgKG1hcGNhciAobGFtYmRhIChuYW1lKQogICAgICAgICAgICAgICAgKGxldCAoKHAgKG9yZy1i
YWJlbC1maW5kLW5hbWVkLWJsb2NrIG5hbWUpKSkKICAgICAgICAgICAgICAgICAgKGFuZCBwIChn
b3RvLWNoYXIgcCkgKG9yZy1oaWRlLWJsb2NrLXRvZ2dsZSAnaGlkZSkpKSkKICAgICAgICAgICAg
ICBibG9ja3MpKSkpCgo7OyBwZXJtYW5lbnRseSBtb2RpZnkgdmlzaWJpbGl0eQoKKGRlZnVuIG93
LWZvbGQtaGVhZGxpbmUgKCZvcHRpb25hbCBuYW1lKQogICJTZXQgdmlzaWJpbGl0eSBwcm9wZXJ0
eSBvZiBoZWFkbGluZSB3aXRoIE5BTUUgb3IgcHJldmlvdXMgdmlzaWJsZSB0byBmb2xkZWQuIgog
IDs7IGh0dHBzOi8vb3JnbW9kZS5vcmcvbWFudWFsL1VzaW5nLXRoZS1Qcm9wZXJ0eS1BUEkuaHRt
bAogIChzYXZlLWV4Y3Vyc2lvbgogICAgKGlmIG5hbWUKICAgICAgICAoZ290by1jaGFyIChvcmct
ZmluZC1leGFjdC1oZWFkbGluZS1pbi1idWZmZXIgbmFtZSkpCiAgICAgIChvcmctcHJldmlvdXMt
dmlzaWJsZS1oZWFkaW5nIDApKQogICAgKG9yZy1lbnRyeS1wdXQgbmlsICJ2aXNpYmlsaXR5IiAi
Zm9sZGVkIikKICAgIChzYXZlLWJ1ZmZlcikpKQoKOzsgbW91c2UgYmVoYXZpb3IKCihkZWZ1biBv
dy0tc2FmZS1jeWNsZSAoZXZlbnQgJm9wdGlvbmFsIHByb21vdGUtdG8tcmVnaW9uKQogICJCaW5k
IHRoaXMgdG8gbW91c2UtMSBmb3Igc2FuZSBjbGlja2FibGUgY3ljbGluZyBiZWhhdmlvci4iCiAg
KGludGVyYWN0aXZlICJlXG5wIikKICAobGV0ICgoZmFjZSAoZ2V0LWNoYXItcHJvcGVydHkgKHBv
aW50KSAnZmFjZSkpKQogICAgKHVubGVzcyAoYW5kIGZhY2UgKGxpc3RwIGZhY2UpIChtZW1xICdv
cmctYmxvY2sgZmFjZSkpCiAgICAgICh1bndpbmQtcHJvdGVjdAogICAgICAgICAgKHByb2duCiAg
ICAgICAgICAgIChyZW1vdmUtaG9vayAnb3JnLWN5Y2xlLWhvb2sgIydvcmctb3B0aW1pemUtd2lu
ZG93LWFmdGVyLXZpc2liaWxpdHktY2hhbmdlIHQpCiAgICAgICAgICAgIChvcmctY3ljbGUpKQog
ICAgICAgIChhZGQtaG9vayAnb3JnLWN5Y2xlLWhvb2sgIydvcmctb3B0aW1pemUtd2luZG93LWFm
dGVyLXZpc2liaWxpdHktY2hhbmdlIG5pbCB0KSkpKQogIDs7IGhhdmUgdG8gY2hhaW4gYG1vdXNl
LXNldC1wb2ludCcgb3RoZXJ3aXNlIGRvdWJsZSBjbGljayB0byBoaWdobGlnaHQgd29yZHMgZXRj
LiBmYWlscwogIChtb3VzZS1zZXQtcG9pbnQgZXZlbnQgcHJvbW90ZS10by1yZWdpb24pKQoKKGRl
ZnVuIG93LS1zZXQtbW91c2UtY3ljbGUgKCkKICAiSG9vayBmdW4gdG8gc2V0IG1vdXNlLWN5Y2xl
IGJlaGF2aW9yIGZvciBvcmcgYnVmZmVycy4iCiAgKGxvY2FsLXVuc2V0LWtleSBbbW91c2UtMV0p
CiAgKGxvY2FsLXNldC1rZXkgW21vdXNlLTFdICMnb3ctLXNhZmUtY3ljbGUpKQoKKGRlZnVuIG93
LWVuYWJsZS1tb3VzZS1jeWNsZSAoJm9wdGlvbmFsIGdsb2JhbCkKICAiQWxsb3cgbGVmdCBtb3Vz
ZSB0byBjeWNsZSBvcmcgaGVhZGluZ3MuClNldCBHTE9CQUwgdG8gZW5hYmxlIGZvciBhbGwgb3Jn
IGJ1ZmZlcnMuIgogIChpbnRlcmFjdGl2ZSkKICA7OyByZXNldCBgb3JnLWN5Y2xlLWhvb2snIGFz
IGEgbG9jYWwgdmFyaWFibGUgc28gdGhhdAogIDs7IHdlIGNhbiBhZGQvcmVtb3ZlIGluZGl2aWR1
YWwgaG9va3Mgd2l0aG91dCBtZXNzaW5nCiAgOzsgd2l0aCB0aGUgZ2xvYmFsIGJlaGF2aW9yIHdo
aWNoIG1pZ2h0IHNvbWUgZGF5IG5vdAogIDs7IGJlIHB1cmVseSBzaW5nbGUgdGhyZWFkZWQgKGhl
aCkKICAoc2V0cS1sb2NhbCBvcmctY3ljbGUtaG9vayBvcmctY3ljbGUtaG9vaykKICAob3ctLXNl
dC1tb3VzZS1jeWNsZSkKICAod2hlbiBnbG9iYWwKICAgIChhZGQtaG9vayAnb3JnLW1vZGUtaG9v
ayAjJ293LS1zZXQtbW91c2UtY3ljbGUpKSkKCihkZWZ1biBvdy1yZWNlbnRlci1vbi1tb3VzZSAo
KQogICJSZWNlbnRlciB0aGUgY3Vyc29yIGxpbmUgc28gdGhhdCBpdCBpcyB1bmRlciB0aGUgbW91
c2UuIgogIDs7IGFmdGVyIG11Y2ggZGlnZ2luZyB1c2luZyBgbW91c2UtcGl4ZWwtcG9zaXRpb24n
IHRvZ2V0aGVyCiAgOzsgd2l0aCBgcG9zLWF0LXgteScgc2VlbXMgdG8gYmUgd2hhdCB3ZSB3YW50
LCBgbW91c2UtcG9zaXRpb24nCiAgOzsgYW5kIGB3aW5kb3ctZWRnZXMnIGFyZSBkZWNpZGVkbHkg
Tk9UIHRoZSByaWdodCBzb2x1dGlvbgogIDs7IGBwb3MtYXQteC15JyBpcyBhYmxlIHRvIGNhbGwg
aW50byB0aGUgQyBjb2RlIHRvIGdldCBzb21ldGhpbmcKICA7OyBtdWNoIGNsb3NlciB0byB3aGF0
IGlzIHByb2R1Y2VkIGJ5IGFuIGFjdHVhbCBtb3VzZSBldmVudAogIDs7IGh0dHBzOi8vZW1hY3Mu
c3RhY2tleGNoYW5nZS5jb20vcXVlc3Rpb25zLzMwODUyIGhhcyB0aGUgd3Jvbmcgc29sdXRpb24K
ICAoaW50ZXJhY3RpdmUpCiAgKGxldCogKChtcHAgKG1vdXNlLXBpeGVsLXBvc2l0aW9uKSkKICAg
ICAgICAgKHBvc2l0aW9uLWxpc3QgKHBvc24tYXQteC15IChjYWRyIG1wcCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChjZGRyIG1wcCkKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIChzZWxlY3RlZC1mcmFtZSkKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG5pbCkpCiAgICAgICAgIDs7KGFzZGYgKG1lc3NhZ2UgIiVzIiBocm0pKQog
ICAgICAgICAobW91c2UtbGluZSAoY2RyIChwb3NuLWFjdHVhbC1jb2wtcm93IHBvc2l0aW9uLWxp
c3QpKSkKICAgICAgICAgKGN1cnNvci1saW5lICgtIChsaW5lLW51bWJlci1hdC1wb3MpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAobGluZS1udW1iZXItYXQtcG9zICh3aW5kb3ctc3RhcnQpKSkp
CiAgICAgICAgIChvZmZzZXQgKC0gbW91c2UtbGluZSBjdXJzb3ItbGluZSkpKQogICAgOzsobWVz
c2FnZSAibWw6ICVzIGNsOiAlcyBvZmZzZXQ6ICVzIiBtb3VzZS1saW5lIGN1cnNvci1saW5lIG9m
ZnNldCkKICAgIChzY3JvbGwtZG93biBvZmZzZXQpKSkKCjs7IGRvbid0IGV4cG9ydCBidXR0b25z
CgooZGVmdW4gb3ctbGluay1uby1leHBvcnQgKHBhdGggZGVzYyBmb3JtYXQpCiAgIlJldHVybiBu
b3RoaW5nIGZvciBleHBvcnQiIDsgRklYTUUgYnJva2VuID8/PwogICIiKQoKKGRlZnVuIG93LWJ1
dHRvbiAobGluay1uYW1lIGZ1bmN0aW9uKQogICJDcmVhdGUgYSBuZXcgYnV0dG9uIHR5cGUuIgog
IChvcmctbGluay1zZXQtcGFyYW1ldGVycyBsaW5rLW5hbWUgOmV4cG9ydCAjJ293LWxpbmstbm8t
ZXhwb3J0IDpmb2xsb3cgZnVuY3Rpb24pKQoKKGRlZm1hY3JvIG93LWRlZmJ1dHRvbiAobGluay1u
YW1lICZyZXN0IGJvZHkpCiAgYChvdy1idXR0b24gLGxpbmstbmFtZSAobGFtYmRhICgpICxAYm9k
eSkpKQoKOzsgVE9ETyBkZWZhbGlhcyBkZWZidXR0b24gb3ctZGVmYnV0dG9uCgooZGVmdW4gb3ct
LW9yZy1saW5rLXNldC1wYXJhbWV0ZXJzICh0eXBlICZyZXN0IHBhcmFtZXRlcnMpCiAgIm5vLW9w
IHRvIHByZXZlbnQgZXJyb3IsIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIG9yZyBvciBlbWFj
cyIpCgooZGVmdW4gb3ctbWFrZS1idXR0b25zICgpCiAgIkVuYWJsZSBzdGFuZGFyZCBidXR0b25z
LiIgOyBuZWVkZWQgdG8gYXZvaWQgYXV0b2xvYWRpbmcgdGhlIGJ1aWx0LWluIHZlcnNpb24gb2Yg
b3JnLW1vZGUKCiAgKHdoZW4gKHN0cmluZzwgIjkuMyIgKG9yZy12ZXJzaW9uKSkKICAgIDs7IGJl
Zm9yZSA5LjMgdGhlIG9yZyBsaW5rIGZ1bmN0aW9uYWxpdHkgd2FzIHN0aWxsIGluIG9yZy5lbAog
ICAgKHJlcXVpcmUgJ29sKSkKCiAgKHdoZW4gKHN0cmluZzwgKG9yZy12ZXJzaW9uKSAiOS4wIikK
ICAgIChkZWZhbGlhcyAnb3JnLWxpbmstc2V0LXBhcmFtZXRlcnMgIydvdy0tb3JnLWxpbmstc2V0
LXBhcmFtZXRlcnMpKQoKICA7OyBoaWRlIGhlYWRsaW5lIGZvciBmdXR1cmUgc3RhcnR1cHMKCiAg
KG9yZy1saW5rLXNldC1wYXJhbWV0ZXJzICJGT0xELUhFQURMSU5FIiA6ZXhwb3J0ICMnb3ctbGlu
ay1uby1leHBvcnQgOmZvbGxvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgm
b3B0aW9uYWwgbm90aGluZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ctZm9sZC1o
ZWFkbGluZSkpKQoKICA7OyBydW4gdGhlIG5leHQgIytiZWdpbl9zcmMgYmxvY2sKCiAgKG9yZy1s
aW5rLXNldC1wYXJhbWV0ZXJzICJSVU4iIDpleHBvcnQgIydvdy1saW5rLW5vLWV4cG9ydCA6Zm9s
bG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCZvcHRpb25hbCBub3RoaW5n
KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmctbmV4dC1ibG9jayBuaWwpCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKG9yZy1iYWJlbC1leGVjdXRlLXNyYy1ibG9jaykpKQoK
ICA7OyBydW4gdGhlIHByZXZpb3VzIHNyYyBibG9jayAoZG9lc24ndCB3b3JrIGlmIHRoZXJlIGFy
ZSByZXN1bHRzKQoKICAob3JnLWxpbmstc2V0LXBhcmFtZXRlcnMgIlJVTlBSRVYiIDpleHBvcnQg
Iydvdy1saW5rLW5vLWV4cG9ydCA6Zm9sbG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChs
YW1iZGEgKCZvcHRpb25hbCBub3RoaW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChv
cmctcHJldmlvdXMtYmxvY2sgbmlsKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmct
YmFiZWwtZXhlY3V0ZS1zcmMtYmxvY2spKSkKCiAgOzsgcnVuIHRoZSBuZXh0ICMrY2FsbDogVE9E
TyB3ZSBzaG91bGQgYmUgYWJsZSB0byBkbyB0aGlzIHdpdGggbW91c2UtMT8KCiAgKG9yZy1saW5r
LXNldC1wYXJhbWV0ZXJzICJSVU5DIiA6ZXhwb3J0ICMnb3ctbGluay1uby1leHBvcnQgOmZvbGxv
dwogICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgmb3B0aW9uYWwgbm90aGluZykK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2F2ZS1leGN1cnNpb24KICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIChyZS1zZWFyY2gtZm9yd2FyZCAiI1xcK2NhbGw6IikKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChvcmctY3RybC1jLWN0cmwtYykpKSkKCiAgOzsgYWRq
dXN0IGZvbnQgc2l6ZSBmb3IgdGhlIGN1cnJlbnQgYnVmZmVyCgogIChvcmctbGluay1zZXQtcGFy
YW1ldGVycyAiVEVYVC1MQVJHRVIiIDpleHBvcnQgIydvcnNncmFwLS1ub3ggOmZvbGxvdwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgmb3B0aW9uYWwgbm90aGluZykKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAodGV4dC1zY2FsZS1hZGp1c3QgMSkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAob3ctcmVjZW50ZXItb24tbW91c2UpKSkKCiAgKG9yZy1saW5rLXNl
dC1wYXJhbWV0ZXJzICJURVhULVNNQUxMRVIiIDpleHBvcnQgIydvdy1saW5rLW5vLWV4cG9ydCA6
Zm9sbG93CiAgICAgICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGEgKCZvcHRpb25hbCBub3Ro
aW5nKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh0ZXh0LXNjYWxlLWFkanVzdCAtMSkK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ctcmVjZW50ZXItb24tbW91c2UpKSkKCiAg
KG9yZy1saW5rLXNldC1wYXJhbWV0ZXJzICJURVhULVJFU0VUIiA6ZXhwb3J0ICMnb3ctbGluay1u
by1leHBvcnQgOmZvbGxvdwogICAgICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhICgmb3B0
aW9uYWwgbm90aGluZykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGV4dC1zY2FsZS1h
ZGp1c3QgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3ctcmVjZW50ZXItb24tbW91
c2UpKSkpCgooZGVmdW4gb3ctLWhlYWRsaW5lLWZhY2VzICgpCiAgIlNldCBmYWNlIGZvciBhbGwg
aGVhZGxpbmUgbGV2ZWxzIHRvIGJlIGJvbGQgYW5kIDEuMnggYXMgdGFsbC4iCiAgKG1hcGNhciAo
bGFtYmRhIChuKSAoc2V0LWZhY2UtYXR0cmlidXRlIChpbnRlcm4gKGZvcm1hdCAib3JnLWxldmVs
LSVzIiBuKSkgbmlsIDpib2xkIHQgOmhlaWdodCAxLjIpKQogICAgICAgICAgKG51bWJlci1zZXF1
ZW5jZSAxIDgpKSkKCihkZWZ1biBvdy0tdHdlYWstd2hpdGVib2FyZCAoKQogICJUd2VhayB0aGUg
c2V0dGluZ3MgZm9yIGB3aGl0ZWJvYXJkLXRoZW1lJy4iCiAgKHJlcXVpcmUgJ29yZy1mYWNlcykK
ICAoc2V0LWZhY2UtYXR0cmlidXRlICdzaGFkb3cgbmlsIDpmb3JlZ3JvdW5kICJncmF5MzUiKQog
IChzZXQtZmFjZS1hdHRyaWJ1dGUgJ29yZy1tZXRhLWxpbmUgbmlsIDppbmhlcml0IGZvbnQtbG9j
ay1rZXl3b3JkLWZhY2UpCiAgKGxldCAoKGR4ICg+PSBlbWFjcy1tYWpvci12ZXJzaW9uIDI3KSkp
CiAgICAoYXBwbHkgIydzZXQtZmFjZS1hdHRyaWJ1dGUgYChvcmctYmxvY2stYmVnaW4tbGluZSBu
aWwgOmZvcmVncm91bmQgImJsYWNrIiA6YmFja2dyb3VuZCAic2lsdmVyIiAsQCh3aGVuIGR4ICco
OmV4dGVuZCB0KSkpKQogICAgKGFwcGx5ICMnc2V0LWZhY2UtYXR0cmlidXRlIGAob3JnLWJsb2Nr
LWVuZC1saW5lIG5pbCA6Zm9yZWdyb3VuZCAiYmxhY2siIDpiYWNrZ3JvdW5kICJzaWx2ZXIiICxA
KHdoZW4gZHggJyg6ZXh0ZW5kIHQpKSkpCiAgICAoYXBwbHkgIydzZXQtZmFjZS1hdHRyaWJ1dGUg
YChvcmctYmxvY2sgbmlsIDpiYWNrZ3JvdW5kICJ3aGl0ZSIgLEAod2hlbiBkeCAnKDpleHRlbmQg
dCkpKSkpKQoKKGRlZnVuIG93LS1yYWlueS1kYXkgKCkKICAiRW5hYmxlIGByYWluYm93LWRlaW1p
dGVycy1tb2RlJyB3aXRoIHR3ZWFrcy4iCiAgKG93LXVzZS1wYWNrYWdlcyAocmFpbmJvdy1kZWxp
bWl0ZXJzIDpob29rICgocHJvZy1tb2RlKSAuIHJhaW5ib3ctZGVsaW1pdGVycy1tb2RlKSkpCiAg
KHNldC1mYWNlLWF0dHJpYnV0ZSAncmFpbmJvdy1kZWxpbWl0ZXJzLWJhc2UtZmFjZSBuaWwgOmJv
bGQgdCkKICAoc2V0LWZhY2UtYXR0cmlidXRlICdyYWluYm93LWRlbGltaXRlcnMtdW5tYXRjaGVk
LWZhY2UgbmlsIDpib2xkIHQgOmZvcmVncm91bmQgIndoaXRlIiA6YmFja2dyb3VuZCAicmVkIikK
ICAoc2V0LWZhY2UtYXR0cmlidXRlICdyYWluYm93LWRlbGltaXRlcnMtbWlzbWF0Y2hlZC1mYWNl
IG5pbCA6Ym9sZCB0IDpmb3JlZ3JvdW5kICJibGFjayIgOmJhY2tncm91bmQgInllbGxvdyIpKQoK
KGRlZnVuIG93LWVuYWJsZS1jb25maWctZmFtaWxpYXItMSAoJm9wdGlvbmFsIGdsb2JhbCkKICAi
TWluaW1hbCBjb25maWcgdG8gYWNoaWV2ZSBzb21ldGhpbmcgbW9yZSBmYW1pbGlhciBmb3Igbm9u
LUVtYWNzIHVzZXJzLgoKVXNlcyBgY3VhLW1vZGUnIHdpdGggYWRkaXRpb25hbCB0d2VhayBmb3Ig
dW5kbyBiaW5kaW5ncy4KTk9URTogYHVuZG8tZnUnIGlzIHJlcXVpcmVkIGZvciBFbWFjcyA8IDI4
LiIKCiAgOzsgRW5hYmxlIGZhbWlsaWFyIGNvcHkvcGFzdGUga2V5YmluZGluZ3MKICAoY3VhLW1v
ZGUgdCkKCiAgOzsgYWRkaXRpb25hbCBrZXliaW5kcwogIChsZXQgKChzZXQta2V5IChpZiBnbG9i
YWwgIydnbG9iYWwtc2V0LWtleSAjJ2xvY2FsLXNldC1rZXkpKSkKICAgIDs7IEN0cmwgcyBmb3Ig
c2F2ZQogICAgKGZ1bmNhbGwgc2V0LWtleSAoa2JkICJDLXMiKSAjJ3NhdmUtYnVmZmVyKQogICAg
OzsgQ3RybCBmIGZvciBmaW5kIGFrYSBpc2VhcmNoCiAgICAoZnVuY2FsbCBzZXQta2V5IChrYmQg
IkMtZiIpICMnaXNlYXJjaC1mb3J3YXJkKQogICAgOzsgZW5hYmxlIENtZCBTaGlmdCBaIGZvciBh
cHBsZSB1c2VycyBDdHJsIHkgZm9yIHdpbmRvd3MKICAgICh3aGVuIChmYm91bmRwICMndW5kby1y
ZWRvKQogICAgICAoaWYgKGVxIHN5c3RlbS10eXBlICdkYXJ3aW4pCiAgICAgICAgICAoZnVuY2Fs
bCBzZXQta2V5IChrYmQgIkMtWiIpICMndW5kby1yZWRvKQogICAgICAgIChmdW5jYWxsIHNldC1r
ZXkgKGtiZCAiQy15IikgIyd1bmRvLXJlZG8pKSkpCgogIDs7IE1vdmUgdGV4dCBzbW9vdGhseSB3
aGVuIHBvaW50IGlzIGF0IHRvcCBvciBib3R0b20gb2YgYnVmZmVyCiAgKG93LS1zZXRxIGdsb2Jh
bCBzY3JvbGwtY29uc2VydmF0aXZlbHkgMTAxKQogIChvdy0tc2V0cSBnbG9iYWwgc2Nyb2xsLXN0
ZXAgMSkKCiAgOzsgVXNlIGxlZnQgbW91c2UgdG8gY3ljbGUKICAob3ctZW5hYmxlLW1vdXNlLWN5
Y2xlKQoKICA7OyBNb3VzZSBwYXN0ZSBhdCBwb2ludCBub3QgY3Vyc29yCiAgKHNldHEgbW91c2Ut
eWFuay1hdC1wb2ludCB0KSA7IHNldCBnbG9iYWxseSBkdWUgdG8gbWluaWJ1ZmZlcgoKICA7OyBN
b3VzZSB3aGVlbCBiZWhhdmlvcgogIChvdy0tc2V0cSBnbG9iYWwgbW91c2Utd2hlZWwtcHJvZ3Jl
c3NpdmUtc3BlZWQgbmlsKQogIChvdy0tc2V0cSBnbG9iYWwgbW91c2Utd2hlZWwtc2Nyb2xsLWFt
b3VudCAnKDMgKChzaGlmdCkgLiBoc2Nyb2xsKSkpCgogIDs7IE1vdXNlIG9uIHNjcm9sbCBiYXIg
YmVoYXZpb3IgVE9ETyB0aGlzIGlzIG5vdCBxdWl0ZSByaWdodCwgYnV0IEkKICA7OyBoYXZlIG5v
IGlkZWEgaG93IHRvIGdldCBlbWFjcyB0byBzdG9wIHJlc2l6aW5nIHRoZSBzbGlkZXJzCiAgKGds
b2JhbC11bnNldC1rZXkgW3ZlcnRpY2FsLXNjcm9sbC1iYXIgbW91c2UtMV0pCiAgKGdsb2JhbC1z
ZXQta2V5IFt2ZXJ0aWNhbC1zY3JvbGwtYmFyIGRvd24tbW91c2UtMV0gJ3Njcm9sbC1iYXItZHJh
ZykKCiAgOzsgZGVmYXVsdCBzaGlmdCBmdW5jdGlvbmFsaXR5IGlzIHVzdWFsbHkgbm90IG5lZWRl
ZCBpbiBvdyBmaWxlcyBhbmQKICA7OyB0aGUgbWVzc2FnZSB3aGVuIHlvdSB0cnkgdG8gdXNlIGl0
IGNhbiBiZSBleHRyZW1lbHkgY29uZnVzaW5nCiAgKG93LS1zZXRxIGdsb2JhbCBvcmctc3VwcG9y
dC1zaGlmdC1zZWxlY3QgdCkKCiAgOzsgRW5hYmxlIHRhYi1iYXItbW9kZQogICh3aGVuICg+PSBl
bWFjcy1tYWpvci12ZXJzaW9uIDI3KQogICAgKHRhYi1iYXItbW9kZSB0KSkKCiAgOzsgVXNlIHRo
ZSB3aGl0ZWJvYXJkIHRoZW1lCiAgKGxvYWQtdGhlbWUgJ3doaXRlYm9hcmQpCiAgKG93LS10d2Vh
ay13aGl0ZWJvYXJkKQoKICA7OyBTZXQgaGVhZGxpbmUgZmFjZXMKICAob3ctLWhlYWRsaW5lLWZh
Y2VzKSkKCihkZWZ1biBvdy0tcmV2YWwtdXBkYXRlICgpCiAgIkdldCB0aGUgaW1tdXRhYmxlIHVy
bCBmb3IgdGhlIGN1cnJlbnQgcmVtb3RlIHZlcnNpb24gb2YgdGhpcyBmaWxlLiIKICAocmV2YWwt
Z2V0LWltbS1naXRodWIgInRnYnVncyIgIm9yZ3N0cmFwIiAib3cuZWwiKSkKCihwcm92aWRlICdv
dykKCjs7OyBvdy5lbCBlbmRzIGhlcmUK
--000000000000d49a5905e4076bd4
Content-Type: text/x-emacs-lisp; charset="US-ASCII"; name="emacs-memory-leak-test.el"
Content-Disposition: attachment; filename="emacs-memory-leak-test.el"
Content-Transfer-Encoding: base64
Content-ID: <f_l5puxxtx1>
X-Attachment-Id: f_l5puxxtx1

KGxvYWQgIi4vb3cuZWwiKQooc2V0cSB1c2VyLWVtYWNzLWRpcmVjdG9yeSAoY29uY2F0ICIvdG1w
L2VtYWNzLXlheS1iaXNlY3RpbmctYWNyb3NzLWJ5dGVjb2RlLWNoYW5nZXMvIiBlbWFjcy1ienIt
dmVyc2lvbiAiLy5lbWFjcy5kLyIpKQooc2V0cSBwYWNrYWdlLXVzZXItZGlyIChjb25jYXQgdXNl
ci1lbWFjcy1kaXJlY3RvcnkgImVscGEvIikpCihtYWtlLWRpcmVjdG9yeSB1c2VyLWVtYWNzLWRp
cmVjdG9yeSAncGFyZW50cykKKG93LWVuYWJsZS11c2UtcGFja2FnZSkKKG93LXVzZS1wYWNrYWdl
cyByYWNrZXQtbW9kZSkKCihkZWZ1biByZXBlYXRlZC1lbGVtZW50ICgpCiAgKHJhY2tldC1ydW4t
bW9kdWxlLWF0LXBvaW50KQogIChzbGVlcC1mb3IgNSkKICAoYmFja3dhcmQtc2V4cCkKICAoa2ls
bC1saW5lKQogIChzYXZlLWJ1ZmZlcikKICAoc2xlZXAtZm9yIDUpCiAgKHJhY2tldC1ydW4tbW9k
dWxlLWF0LXBvaW50KQogIChzbGVlcC1mb3IgNSkKICAoaW5zZXJ0ICJcbidhc2RmXG4iKQogIChz
YXZlLWJ1ZmZlcikKICAoc2xlZXAtZm9yIDUpKQoKKGxldCAoKGJ1ZmZlciAoZmluZC1maWxlICJ+
L2dpdC9zcGFyYy1jdXJhdGlvbi9zcGFyY3VyX2ludGVybmFsL3NwYXJjdXIvdmlld2VyLnJrdCIp
KSkKICAod2l0aC1jdXJyZW50LWJ1ZmZlciBidWZmZXIKICAgIChyYWNrZXQteHAtbW9kZSkKICAg
IChnb3RvLWNoYXIgKHBvaW50LW1heCkpCiAgICAoaW5zZXJ0ICJcbiIpCiAgICAoZ290by1jaGFy
IChwb2ludC1tYXgpKQoKICAgIChyYWNrZXQtcnVuLW1vZHVsZS1hdC1wb2ludCkKICAgIChzbGVl
cC1mb3IgMTApCgogICAgKGluc2VydCAiXG4nYXNkZlxuIikKICAgIChzYXZlLWJ1ZmZlcikKICAg
IChzbGVlcC1mb3IgNSkKCiAgICAocmVwZWF0ZWQtZWxlbWVudCkKICAgIChyZXBlYXRlZC1lbGVt
ZW50KQogICAgKGxldCAoY29uZmlybS1raWxsLXByb2Nlc3NlcykKICAgICAgKGtpbGwtZW1hY3Mp
KSkpCg==
--000000000000d49a5905e4076bd4
Content-Type: application/x-shellscript; name="bisect-memory.sh"
Content-Disposition: attachment; filename="bisect-memory.sh"
Content-Transfer-Encoding: base64
Content-ID: <f_l5puyncg2>
X-Attachment-Id: f_l5puyncg2

IyEvdXNyL2Jpbi9lbnYgYmFzaApwdXNoZCB+L2dpdC9OT0ZPUksvZW1hY3MKLi9hdXRvZ2VuLnNo
IHx8IGV4aXQgMTI1Ci4vY29uZmlndXJlIHx8IGV4aXQgMTI1Cm1ha2UgY2xlYW4gfHwgZXhpdCAx
MjUKZmluZCAtbmFtZSAnKi5lbGMnIC1leGVjIHJtIHt9IFw7IHx8IGV4aXQgMTI1CnJtIGxpc3Av
bG9hZGRlZnMuZWwgfHwgZXhpdCAxMjUKbWFrZSAtajggfHwgZXhpdCAxMjUKY29tbWl0PSQoZ2l0
IHJldi1wYXJzZSBIRUFEKQpwb3BkCmZuPWVtYWNzLXJhY2tldC1tb2RlLSQoZGF0ZSArJXMpLSR7
Y29tbWl0fS5wbmcKcHVzaGQgfi9maWxlcy9lbWFjcy1tcHJvZgptcHJvZiBydW4gfi9naXQvTk9G
T1JLL2VtYWNzL3NyYy9lbWFjcyAtUSAtYmF0Y2ggLWwgZW1hY3MtbWVtb3J5LWxlYWstdGVzdC5l
bCAKbXByb2YgcGxvdCAtLWJhY2tlbmQgVGtBZ2cgLS10aXRsZSAiZW1hY3MgcmFja2V0LW1vZGUg
JHtjb21taXR9IiAtLW91dHB1dCAke2ZufQp1bmxpbmsgbGF0ZXN0LnBuZwpsbiAtcyAke2ZufSBs
YXRlc3QucG5nCmZlaCAke2ZufQpwb3BkCnB1c2hkIH4vZ2l0L05PRk9SSy9lbWFjcwpnaXQgc3Rh
c2gKcG9wZAplY2hvIHkgbWVhbnMgbGVhazsgcmVhZCAtciAtbiAxIGNob2ljZQppZiBbWyAiJHtj
aG9pY2V9IiA9PSAieSIgXV07IHRoZW4KZXhpdCAxOyAjIHllcyBsZWFrIG1lYW5zIGdpdCBiaXNl
Y3QgYmFkCmVsc2UKZXhpdCAwOwpmaQo=
--000000000000d49a5905e4076bd4--




Acknowledgement sent to Tom Gillespie <tgbugs@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to bug-gnu-emacs@HIDDEN:
bug#56623; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Sat, 23 Jul 2022 08:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.