<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>202992</bug_id>
          
          <creation_ts>2019-10-15 09:37:36 -0700</creation_ts>
          <short_desc>Service Worker doesn&apos;t terminate after a period of time when thread blocking</short_desc>
          <delta_ts>2019-12-24 06:19:55 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Service Workers</component>
          <version>Safari 12</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.14</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=181563</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=202195</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Blocker</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Benjamin Kay">webkit</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1580130</commentid>
    <comment_count>0</comment_count>
    <who name="Benjamin Kay">webkit</who>
    <bug_when>2019-10-15 09:37:36 -0700</bug_when>
    <thetext>Steps to reproduce:

We (BBC) are investigating service workers and trying to put them into an unrecoverable state. The only way we found is listed below but is a blocker to us rolling out service workers to our users until we know it can always be recovered.

We gave a service worker an infinite loop outside the event handlers, it locked up the service worker thread, blocking calls out to check for updates and essentially killed all service worker functionality with no easy way to recover as a user.

Please see https://static-misc-2.glitch.me/blocking-sw/ that was made by Jake Archibald from Google as an example where the service worker served never resolves the promise to install and blocks the thread using a while (true).

Actual results:

Service worker is blocked, and cannot update. even on a client refresh.

Expected results:

If you visit https://static-misc-2.glitch.me/blocking-sw/ on Chrome, Chrome kills the thread after 60 seconds unless dev tools is open.

I would expect Safari kill the service worker thread after a timeout period.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580168</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-15 10:53:48 -0700</bug_when>
    <thetext>&lt;rdar://problem/56298596&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580202</commentid>
    <comment_count>2</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-10-15 12:00:30 -0700</bug_when>
    <thetext>Agreed that we should add such protections for every event, install, activate, fetch, message...
And we probably want to soft update when a sw exhibits that behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594188</commentid>
    <comment_count>3</comment_count>
      <attachid>384503</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-29 06:44:15 -0800</bug_when>
    <thetext>Created attachment 384503
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594196</commentid>
    <comment_count>4</comment_count>
      <attachid>384508</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-11-29 07:40:50 -0800</bug_when>
    <thetext>Created attachment 384508
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594461</commentid>
    <comment_count>5</comment_count>
      <attachid>384508</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-01 16:17:02 -0800</bug_when>
    <thetext>Comment on attachment 384508
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=384508&amp;action=review

&gt; Source/WebCore/page/Settings.yaml:915
&gt; +serviceWorkerTestMode:
&gt; +  initial: false

We generally try to avoid test modes when we can, as they don&apos;t scale. In this case, it seems like you could easily avoid it by making this setting be serviceWorkerTimeout (or something like that).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594514</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-02 01:04:06 -0800</bug_when>
    <thetext>I&apos;l rename to serviceWorkerShortTimeout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594515</commentid>
    <comment_count>7</comment_count>
      <attachid>384598</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-02 01:04:22 -0800</bug_when>
    <thetext>Created attachment 384598
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594550</commentid>
    <comment_count>8</comment_count>
      <attachid>384610</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-02 04:42:24 -0800</bug_when>
    <thetext>Created attachment 384610
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594575</commentid>
    <comment_count>9</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2019-12-02 07:29:38 -0800</bug_when>
    <thetext>Why a boolean? This seems much better suited as an int or float.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1594591</commentid>
    <comment_count>10</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-02 07:56:25 -0800</bug_when>
    <thetext>(In reply to Sam Weinig from comment #9)
&gt; Why a boolean? This seems much better suited as an int or float.

This keeps the actual values close to where they are used in the code base.
A single value is hopefully sufficient to all environments except for testing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595454</commentid>
    <comment_count>11</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-04 05:43:34 -0800</bug_when>
    <thetext>Ping review?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1595876</commentid>
    <comment_count>12</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-05 10:35:11 -0800</bug_when>
    <thetext>How does this relate to https://bugs.webkit.org/show_bug.cgi?id=181563 ?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1596179</commentid>
    <comment_count>13</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-06 00:51:34 -0800</bug_when>
    <thetext>(In reply to Chris Dumez from comment #12)
&gt; How does this relate to https://bugs.webkit.org/show_bug.cgi?id=181563 ?

This complements the protection added in bug 181562.
In bug 181563, we make sure that stopping a worker will actually work after a reasonable amount of time. But this will kick in only when all service worker clients or gone.
Bug 181563 does not protect service workers that are spinning at install time or when receiving a postMessage.
We added some protection around fetch, but we have no protection if the service worker is not activating/activated or does not register a fetch event handler.

This patch adds this protection and relates to https://w3c.github.io/ServiceWorker/#service-worker-lifetime.
&apos;&apos;&apos;A user agent may terminate service workers at any time it: Detects abnormal operation: such as infinite loops and tasks exceeding imposed time limits (if any) while handling the events.&apos;&apos;&apos;

One case is if a service worker is spinning at install time.
In that case, the job queue is stuck and there is no way for the web site to unblock the job queue except closing all clients, kicking in the logic to stop the service worker and open a new client after the service worker is stopped.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1597003</commentid>
    <comment_count>14</comment_count>
      <attachid>384610</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2019-12-09 16:14:53 -0800</bug_when>
    <thetext>Comment on attachment 384610
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=384610&amp;action=review

r=me with changes

&gt; Source/WebCore/workers/service/context/SWContextManager.h:72
&gt; +        bool useShortTimeout() const { return m_useShortTimeout; }

usesShortTimeout() or shouldUseShortTimeout(), it is confusing otherwise as it looks like it may be a setter.

&gt; Source/WebCore/workers/service/context/SWContextManager.h:76
&gt; +        void setUseShortTimeout(bool value) { m_useShortTimeout = value; }

Ditto about naming.

&gt; Source/WebCore/workers/service/context/SWContextManager.h:80
&gt; +        bool m_useShortTimeout { false };

Ditto about naming.

&gt; Source/WebKit/UIProcess/API/C/WKPreferencesRef.h:346
&gt; +WK_EXPORT bool WKPreferencesGetServiceWorkerShortTimeout(WKPreferencesRef preferencesRef);

Name is confusing for a boolean

&gt; Source/WebKit/UIProcess/API/C/WKPreferencesRef.h:347
&gt; +WK_EXPORT void WKPreferencesSetServiceWorkerShortTimeout(WKPreferencesRef preferencesRef, bool enabled);

Name is confusing for a boolean</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601390</commentid>
    <comment_count>15</comment_count>
      <attachid>386386</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-12-24 03:27:30 -0800</bug_when>
    <thetext>Created attachment 386386
Rebasing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601399</commentid>
    <comment_count>16</comment_count>
      <attachid>386386</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-24 06:19:53 -0800</bug_when>
    <thetext>Comment on attachment 386386
Rebasing

Clearing flags on attachment: 386386

Committed r253898: &lt;https://trac.webkit.org/changeset/253898&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1601400</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-12-24 06:19:55 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384503</attachid>
            <date>2019-11-29 06:44:15 -0800</date>
            <delta_ts>2019-11-29 07:40:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202992-20191129154412.patch</filename>
            <type>text/plain</type>
            <size>52037</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyODk2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2JlZDU2NWNmYTEzYmFl
NTJlNzZmODJlODA0MDFmMWQ3YWYyMDJiYi4uMTgzOTlmMGMzOTRlYTQ1MDFhNmQzNjVkOGQ5NTg4
OTk5ODM2NjE3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTExLTI5ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBk
b2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2Nr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW5ldmVyIHJ1bm5pbmcgYSBzZXJ2aWNl
IHdvcmtlciB0YXNrLCBydW5uaW5nIHNjcmlwdCBvciBwb3N0aW5nIGV2ZW50cyAoaW5zdGFsbCwg
YWN0aXZhdGUsIG1lc3NhZ2UgYW5kIGZldGNoKSwKKyAgICAgICAgc3RhcnQgYSB0aW1lciB0byBj
aGVjayB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3Qgc3Bpbm5pbmcuCisgICAgICAgIFRo
aXMgaXMgZG9uZSBieSBwb3N0aW5nIGEgdGFzayB0byBzZXJ2aWNlIHdvcmtlciB0aHJlYWQgYW5k
IGhvcHBpbmcgYmFjayB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIElmIHRoaXMgcG9zdC9o
b3AgaXMgZG9uZSBiZWZvcmUgdGhlIGhlYXJ0YmVhdCB0aW1lciBpcyBmaXJlZCwgdGhlIHNlcnZp
Y2Ugd29ya2VyIGlzIGNvbnNpZGVyZWQgbGl2ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgY2hl
Y2sgaXMgZmFpbGVkIGFuZCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGFzIGZhaWxpbmcuCisgICAg
ICAgIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHRlcm1pbmF0ZWQuCisgICAgICAgIFRpbWVv
dXQgaXMgNjAgc2Vjb25kcyBieSBkZWZhdWx0IGFuZCAxIHNlY29uZCBmb3IgdGVzdCBwdXJwb3Nl
cy4KKworICAgICAgICBBZGQgdGVzdCBtb2RlIHRvIGhhdmUgc2hvcnRlciBoZWFydGJlYXQgdGlt
ZW91dC4KKyAgICAgICAgQWRkIGludGVybmFscyBBUEkgdG8gY2hlY2sgd2hldGhlciBhIHNlcnZp
Y2Ugd29ya2VyIGlzIHJ1bm5pbmcuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5p
bmctZmV0Y2guaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1l
c3NhZ2UuaHR0cHMuaHRtbAorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25u
ZWN0aW9uOjppc1NlcnZpY2VXb3JrZXJSdW5uaW5nKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc1Rlc3RNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnNldElzVGVzdE1vZGUpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0RmV0Y2hUYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpcmVJ
bnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6Zmlu
aXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clRocmVhZDo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZFN0YXJ0aW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hFdmVudE1vbml0b3JpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRIZWFydEJlYXRUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpoZWFydEJlYXRUaW1l
ckZpcmVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdG9wRmV0
Y2hFdmVudE1vbml0b3JpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnJlbW92ZUZldGNoKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpkaWRGYWlsSGVhcnRCZWF0
Q2hlY2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aDoKKwogMjAxOS0xMS0yOCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CiAKICAg
ICAgICAgTW92ZSBzb2Z0IHVwZGF0ZSBoYW5kbGluZyB0byBuZXR3b3JrIHByb2Nlc3MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cK
aW5kZXggYWRmODgwNmZlNGIyOWM0YjU0NDFhMzYwMTNhNDNjYWRmZjViNjE3OC4uY2I5NjhlZGJi
M2Y1MzQ4ZDllYWVmYjI3OGE5NDU3MWVjOTRiNjhhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNiBA
QAorMjAxOS0xMS0yOSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAg
ICAgU2VydmljZSBXb3JrZXIgZG9lc24ndCB0ZXJtaW5hdGUgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGlt
ZSB3aGVuIHRocmVhZCBibG9ja2luZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjAyOTkyCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjI5ODU5Nj4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgYSBw
cmVmZXJlbmNlIHRvIGVuYWJsZS9kaXNhYmxlIHNlcnZpY2Ugd29ya2VyIHRlc3QgbW9kZS4KKyAg
ICAgICAgSW4gc2VydmljZSB3b3JrZXIgdGVzdCBtb2RlLCB0aW1lb3V0IHZhbHVlcyBhcmUgc21h
bGxlciB0byBydW4gdGVzdHMgZmFzdGVyLgorICAgICAgICBBZGQgSVBDIGhhbmRsaW5nIGZvciBw
YXNzaW5nIHNlcnZpY2Ugd29ya2VyIGhlYXJ0IGJlYXQgZmFpbHVyZXMgYW5kIHRvIGdldCBmcm9t
IFdlYlByb2Nlc3MKKyAgICAgICAgd2hldGhlciBhIGdpdmVuIHNlcnZpY2Ugd29ya2VyIGlzIHJ1
bm5pbmcgb3Igbm90LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmlzU2VydmljZVdvcmtlclJ1bm5p
bmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFNl
cnZpY2VXb3JrZXJUZXN0TW9kZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U2VydmljZVdv
cmtlclRlc3RNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
Zi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmlzU2VydmljZVdv
cmtlclJ1bm5pbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OgorCiAyMDE5LTExLTI4ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNb3ZlIHNvZnQgdXBkYXRlIGhhbmRsaW5nIHRvIG5ldHdvcmsgcHJvY2VzcwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IGEwMWQyZjY1MmZmMzNmMWJlZDM5MjZkZjJiOTg5MDY0
YmY2NWEzNGIuLjNhNjdhMzVlMTc2NmNjNjUzOGI4MjZjZjQ3M2JkYTRjMGU5NGY0MjAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTkxMCwzICs5MTAsNiBAQCBtZWRpYUNhcHR1cmVS
ZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb246CiAgIGluaXRpYWw6IHRydWUKICAgY29uZGl0aW9uYWw6
IE1FRElBX1NUUkVBTQogICBpbnNwZWN0b3JPdmVycmlkZTogdHJ1ZQorCitzZXJ2aWNlV29ya2Vy
VGVzdE1vZGU6CisgIGluaXRpYWw6IGZhbHNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5j
cHAKaW5kZXggODdmNzNhZDYwZDk2NTNjYmFhM2JlZDVlMzI1ODljZTYxOWYwOTdlOS4uZmNkZGUw
NTIyYjNiY2I4ZDA4NjZlMmExYmQzMDk4MzhjMTU3OWIwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rpbmcv
SW50ZXJuYWxzLmNwcApAQCAtNTAyMyw2ICs1MDIzLDEzIEBAIHZvaWQgSW50ZXJuYWxzOjp0ZXJt
aW5hdGVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXImIHdvcmtlcikKIAogICAgIFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKS5zeW5j
VGVybWluYXRlV29ya2VyKHdvcmtlci5pZGVudGlmaWVyKCkpOwogfQorCit2b2lkIEludGVybmFs
czo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29ya2VyJiB3b3JrZXIsIERPTVByb21p
c2VEZWZlcnJlZDxJRExCb29sZWFuPiYmIHByb21pc2UpCit7CisgICAgcmV0dXJuIFNlcnZpY2VX
b3JrZXJQcm92aWRlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlckNvbm5lY3Rpb24oKS5pc1Nl
cnZpY2VXb3JrZXJSdW5uaW5nKHdvcmtlci5pZGVudGlmaWVyKCksIFtwcm9taXNlID0gV1RGTW92
ZShwcm9taXNlKV0oYm9vbCByZXN1bHQpIG11dGFibGUgeworICAgICAgICBwcm9taXNlLnJlc29s
dmUocmVzdWx0KTsKKyAgICB9KTsKK30KICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmggYi9Tb3VyY2Uv
V2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCmluZGV4IDQ0M2YxMzQ2ZTE4YTQ3NzQxMjRmOTMw
YTA4MzNkZGQ3YTE4ZjViMDkuLjNiMjczNGM0ZDVhYmE4MDZmYzk1YjdhMWRmOTY2YjU5ZWIxYmZm
ZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaApAQCAtNzY2LDYgKzc2Niw3IEBAIHB1
YmxpYzoKICAgICB1c2luZyBIYXNSZWdpc3RyYXRpb25Qcm9taXNlID0gRE9NUHJvbWlzZURlZmVy
cmVkPElETEJvb2xlYW4+OwogICAgIHZvaWQgaGFzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihj
b25zdCBTdHJpbmcmIGNsaWVudFVSTCwgSGFzUmVnaXN0cmF0aW9uUHJvbWlzZSYmKTsKICAgICB2
b2lkIHRlcm1pbmF0ZVNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlciYpOworICAgIHZvaWQgaXNT
ZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29ya2VyJiwgRE9NUHJvbWlzZURlZmVycmVkPElE
TEJvb2xlYW4+JiYpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsIGIvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuaWRsCmluZGV4IGE1ZTQyMzM5YWRjMDMwZTY0ZmYwZGRlM2NkN2Mz
YjFkOGRhOGNmNzQuLjA1MzlmOGE2ZmU5MzljMGVhNjcwZGMxYTcyODU1OTA0N2QxZThiZGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKQEAgLTc1Niw2ICs3NTYsNyBAQCBlbnVt
IENvbXBvc2l0aW5nUG9saWN5IHsKIAogICAgIFtDb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUl0g
UHJvbWlzZTxib29sZWFuPiBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKERPTVN0cmluZyBz
Y29wZVVSTCk7CiAgICAgW0NvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSXSB2b2lkIHRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlciB3b3JrZXIpOworICAgIFtDb25kaXRpb25hbD1T
RVJWSUNFX1dPUktFUl0gUHJvbWlzZTxib29sZWFuPiBpc1NlcnZpY2VXb3JrZXJSdW5uaW5nKFNl
cnZpY2VXb3JrZXIgd29ya2VyKTsKIAogICAgIFtDYWxsV2l0aD1Eb2N1bWVudCwgQ29uZGl0aW9u
YWw9QVBQTEVfUEFZXSByZWFkb25seSBhdHRyaWJ1dGUgTW9ja1BheW1lbnRDb29yZGluYXRvciBt
b2NrUGF5bWVudENvb3JkaW5hdG9yOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3Jr
ZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggMmU5Y2VkNDViY2MxZjlmOTQ1Y2I0
NDFmNzMyOGVhOTA2YTg5N2RjOC4uZDkyMmNmN2RjMTkwNDkxN2RkNzJkZmE1NzVjNWFlOGY4NWU0
ZTI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50
Q29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVu
dENvbm5lY3Rpb24uaApAQCAtODUsNiArODUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGZpbmlzaEZldGNoaW5nU2NyaXB0SW5TZXJ2ZXIoY29uc3QgU2VydmljZVdvcmtlckZldGNoUmVz
dWx0JikgPSAwOwogCiAgICAgdmlydHVhbCB2b2lkIHN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0Zv
clRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmIGNhbGxiYWNrKSB7IGNhbGxiYWNr
KCk7IH0KKyAgICB2aXJ0dWFsIHZvaWQgaXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjYWxsYmFjaykg
eyBjYWxsYmFjayhmYWxzZSk7IH0KIAogcHJvdGVjdGVkOgogICAgIFdFQkNPUkVfRVhQT1JUIFNX
Q2xpZW50Q29ubmVjdGlvbigpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCmluZGV4IGJhMmJjZTRlNDZkYTc1
ZWUyZmI5NjM5MjM5MDBhYzQ0MzI5ZGJhYzAuLmYwMWNmMzYxNTE3MTVkOWU5ODQ4MDg3NTVkZmUw
MjI4ZjllMzY2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKQEAgLTY0LDE1ICs2NCwyMCBAQCBwdWJs
aWM6CiAgICAgICAgIHZpcnR1YWwgdm9pZCBtYXRjaEFsbChTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYsIFNlcnZpY2VXb3JrZXJD
bGllbnRzTWF0Y2hBbGxDYWxsYmFjayYmKSA9IDA7CiAgICAgICAgIHZpcnR1YWwgdm9pZCBjbGFp
bShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSA9
IDA7CiAKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNl
V29ya2VySWRlbnRpZmllcikgPSAwOworCiAgICAgICAgIHZpcnR1YWwgYm9vbCBpc1Rocm90dGxl
YWJsZSgpIGNvbnN0ID0gMDsKIAogICAgICAgICBib29sIGlzQ2xvc2VkKCkgY29uc3QgeyByZXR1
cm4gbV9pc0Nsb3NlZDsgfQorICAgICAgICBib29sIGlzVGVzdE1vZGUoKSBjb25zdCB7IHJldHVy
biBtX2lzVGVzdE1vZGU7IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRBc0Ns
b3NlZCgpIHsgbV9pc0Nsb3NlZCA9IHRydWU7IH0KKyAgICAgICAgdm9pZCBzZXRJc1Rlc3RNb2Rl
KGJvb2wgdmFsdWUpIHsgbV9pc1Rlc3RNb2RlID0gdmFsdWU7IH0KIAogICAgIHByaXZhdGU6CiAg
ICAgICAgIGJvb2wgbV9pc0Nsb3NlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV9pc1Rlc3RN
b2RlIHsgZmFsc2UgfTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRDb25u
ZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5jcHAKaW5kZXggMDRlOWM4ODRlYTVmMGE0MWVmY2FjNDgwZWE2N2YyM2NlYzEyZWI4Yy4u
MzJlYTAwNjc5NzQ4NjQyMDk3ZDhjODY0Y2UzZjQ0MWEzOWU4ZTJkZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdv
cmtlclRocmVhZC5jcHAKQEAgLTc1LDYgKzc1LDggQEAgU2VydmljZVdvcmtlclRocmVhZDo6U2Vy
dmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEsIFMK
ICAgICA6IFdvcmtlclRocmVhZChkYXRhLnNjcmlwdFVSTCwgZW1wdHlTdHJpbmcoKSwgInNlcnZp
Y2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0b3J5OjpjcmVhdGVJZGVudGlm
aWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJhdGVnaWVzKCktPmxvYWRlclN0
cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuc2NyaXB0LCBsb2FkZXJQcm94eSwgZGVidWdnZXJQ
cm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpLCBXb3JrZXJUaHJl
YWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5jb250ZW50U2VjdXJpdHlQb2xpY3ksIGZhbHNlLCBk
YXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJpdHlPcmlnaW4oKS5nZXQoKSwg
TW9ub3RvbmljVGltZTo6bm93KCksIGlkYkNvbm5lY3Rpb25Qcm94eSwgc29ja2V0UHJvdmlkZXIs
IEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkpCiAgICAgLCBtX2RhdGEoZGF0
YS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0UHJveHkoRHVtbXlTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpKQorICAgICwgbV9oZWFydEJlYXRUaW1lb3V0KFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKS0+aXNUZXN0TW9kZSgpID8g
aGVhcnRCZWF0VGltZW91dEZvclRlc3QgOiBoZWFydEJlYXRUaW1lb3V0KQorICAgICwgbV9oZWFy
dEJlYXRUaW1lciB7ICp0aGlzLCAmU2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGltZXJG
aXJlZCB9CiB7CiAgICAgQXRvbVN0cmluZzo6aW5pdCgpOwogfQpAQCAtOTUsNiArOTcsOCBAQCB2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnJ1bkV2ZW50TG9vcCgpCiAKIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6cG9zdEZldGNoVGFzayhSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+
JiYgY2xpZW50LCBPcHRpb25hbDxTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllcj4mJiBjbGll
bnRJZCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgU3RyaW5nJiYgcmVmZXJyZXIsIEZldGNo
T3B0aW9ucyYmIG9wdGlvbnMpCiB7CisgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworCiAgICAg
Ly8gRklYTUU6IGluc3RlYWQgb2YgZGlyZWN0bHkgdXNpbmcgcnVuTG9vcCgpLCB3ZSBzaG91bGQg
YmUgdXNpbmcgc29tZXRoaW5nIGxpa2UgV29ya2VyR2xvYmFsU2NvcGVQcm94eS4KICAgICAvLyBG
SVhNRTogcmVxdWVzdCBhbmQgb3B0aW9ucyBjb21lIHN0cmFpZ3RoIGZyb20gSVBDIHNvIGFyZSBh
bHJlYWR5IGlzb2xhdGVkLiBXZSBzaG91bGQgYmUgYWJsZSB0byB0YWtlIGJlbmVmaXQgb2YgdGhh
dC4KICAgICBydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtjbGllbnQgPSBXVEZNb3ZlKGNsaWVu
dCksIGNsaWVudElkLCByZXF1ZXN0ID0gcmVxdWVzdC5pc29sYXRlZENvcHkoKSwgcmVmZXJyZXIg
PSByZWZlcnJlci5pc29sYXRlZENvcHkoKSwgb3B0aW9ucyA9IG9wdGlvbnMuaXNvbGF0ZWRDb3B5
KCldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKQEAgLTExMyw3
ICsxMTcsMTAgQEAgc3RhdGljIHZvaWQgZmlyZU1lc3NhZ2VFdmVudChTZXJ2aWNlV29ya2VyR2xv
YmFsU2NvcGUmIHNjb3BlLCBNZXNzYWdlV2l0aE1lc3NhZ2UKIAogdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQogewot
ICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbbWVzc2FnZSA9IFdURk1vdmUobWVzc2FnZSksIHNvdXJj
ZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7Cisg
ICAgaWYgKCFtX21lc3NhZ2VFdmVudENvdW50KyspCisgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGlt
ZXIoKTsKKworICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbbWVzc2FnZSA9IFdURk1vdmUobWVzc2Fn
ZSksIHNvdXJjZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpLCB0aGlzLCBwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZigqdGhpcyldIChhdXRvJiBjb250ZXh0KSBtdXRhYmxlIHsKICAgICAgICAgYXV0
byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgVVJMIHNvdXJjZVVSTDsKICAgICAgICAgRXh0ZW5k
YWJsZU1lc3NhZ2VFdmVudFNvdXJjZSBzb3VyY2U7CkBAIC0xMzMsMTcgKzE0MCwyNCBAQCB2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbQogICAgICAgICAgICAgc291cmNlID0gV1RGTW92ZShzb3VyY2VX
b3JrZXIpOwogICAgICAgICB9CiAgICAgICAgIGZpcmVNZXNzYWdlRXZlbnQoc2VydmljZVdvcmtl
ckdsb2JhbFNjb3BlLCBXVEZNb3ZlKG1lc3NhZ2UpLCBFeHRlbmRhYmxlTWVzc2FnZUV2ZW50U291
cmNlIHsgc291cmNlIH0sIHNvdXJjZVVSTCk7CisgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpXSgpIG11dGFibGUgewor
ICAgICAgICAgICAgQVNTRVJUKG1fbWVzc2FnZUV2ZW50Q291bnQpOworICAgICAgICAgICAgLS1t
X21lc3NhZ2VFdmVudENvdW50OworICAgICAgICB9KTsKICAgICB9KTsKIH0KIAogdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpmaXJlSW5zdGFsbEV2ZW50KCkKIHsKLSAgICBydW5Mb29wKCkucG9z
dFRhc2soW2pvYkRhdGFJZGVudGlmaWVyID0gbV9kYXRhLmpvYkRhdGFJZGVudGlmaWVyLCBzZXJ2
aWNlV29ya2VySWRlbnRpZmllciA9IHRoaXMtPmlkZW50aWZpZXIoKV0gKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmIGNvbnRleHQpIG11dGFibGUgeworICAgIG1fc3RhdGUgPSBTdGF0ZTo6SW5zdGFs
bGluZzsKKyAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7CisKKyAgICBydW5Mb29wKCkucG9zdFRh
c2soW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gdGhpcy0+aWRlbnRpZmllcigpXShhdXRvJiBj
b250ZXh0KSB7CiAgICAgICAgIGF1dG8mIHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25j
YXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCk7CiAgICAgICAgIGF1dG8gaW5z
dGFsbEV2ZW50ID0gRXh0ZW5kYWJsZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmluc3RhbGxF
dmVudCwgeyB9LCBFeHRlbmRhYmxlRXZlbnQ6OklzVHJ1c3RlZDo6WWVzKTsKICAgICAgICAgc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmRpc3BhdGNoRXZlbnQoaW5zdGFsbEV2ZW50KTsKIAotICAg
ICAgICBpbnN0YWxsRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxl
ZChbam9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShIYXNoU2V0PFJl
ZjxET01Qcm9taXNlPj4mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CisgICAgICAgIGluc3Rh
bGxFdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVTZXR0bGVkKFtzZXJ2aWNl
V29ya2VySWRlbnRpZmllcl0oYXV0byYmIGV4dGVuZExpZmV0aW1lUHJvbWlzZXMpIHsKICAgICAg
ICAgICAgIGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlID0gZmFsc2U7CiAgICAgICAgICAgICBm
b3IgKGF1dG8mIHByb21pc2UgOiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKHByb21pc2UtPnN0YXR1cygpID09IERPTVByb21pc2U6OlN0YXR1czo6UmVqZWN0
ZWQpIHsKQEAgLTE1MSw0NSArMTY1LDEyNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZp
cmVJbnN0YWxsRXZlbnQoKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
ICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtqb2JE
YXRhSWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1JlamVjdGVkQW55UHJv
bWlzZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24g
PSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAg
ICAgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEluc3RhbGwoam9iRGF0YUlkZW50aWZpZXIs
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCAhaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKKyAgICAg
ICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNSZWpl
Y3RlZEFueVByb21pc2VdKCkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICAgICAgICAg
ICAgICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkRmlyaW5nSW5z
dGFsbEV2ZW50KGhhc1JlamVjdGVkQW55UHJvbWlzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRG
aXJpbmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UpCit7CisgICAgbV9z
dGF0ZSA9IFN0YXRlOjpJZGxlOworCisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24t
PmRpZEZpbmlzaEluc3RhbGwobV9kYXRhLmpvYkRhdGFJZGVudGlmaWVyLCBpZGVudGlmaWVyKCks
ICFoYXNSZWplY3RlZEFueVByb21pc2UpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6
OmZpcmVBY3RpdmF0ZUV2ZW50KCkKIHsKLSAgICBydW5Mb29wKCkucG9zdFRhc2soW3NlcnZpY2VX
b3JrZXJJZGVudGlmaWVyID0gdGhpcy0+aWRlbnRpZmllcigpXSAoU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5n
OworICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKworICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhb
c2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldKGF1dG8mIGNvbnRl
eHQpIHsKICAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8
U2VydmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBhY3RpdmF0
ZUV2ZW50ID0gRXh0ZW5kYWJsZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFjdGl2YXRlRXZl
bnQsIHsgfSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGFjdGl2YXRlRXZlbnQpOwogCi0gICAg
ICAgIGFjdGl2YXRlRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxl
ZChbc2VydmljZVdvcmtlcklkZW50aWZpZXJdKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKSB7
Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEFjdGl2YXRpb24oc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpOworICAgICAgICBhY3RpdmF0ZUV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNl
c0FyZVNldHRsZWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShhdXRvJiYpIHsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSgpIHsKKyAgICAg
ICAgICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFBy
b3h5LT50aHJlYWQoKS5maW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFk
OjpmaW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKQoreworICAgIG1fc3RhdGUgPSBTdGF0ZTo6
SWRsZTsKKworICAgIGlmIChhdXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2lu
Z2xldG9uKCkuY29ubmVjdGlvbigpKQorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hBY3Rp
dmF0aW9uKGlkZW50aWZpZXIoKSk7Cit9CisKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6Zmlu
aXNoZWRFdmFsdWF0aW5nU2NyaXB0KCkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsK
ICAgICBtX2RvZXNIYW5kbGVGZXRjaCA9IHdvcmtlckdsb2JhbFNjb3BlKCktPmhhc0V2ZW50TGlz
dGVuZXJzKGV2ZW50TmFtZXMoKS5mZXRjaEV2ZW50KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpzdGFydChGdW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGJvb2wpPiYmIGNhbGxi
YWNrKQogeworICAgIG1fc3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CisgICAgc3RhcnRIZWFydEJl
YXRUaW1lcigpOworCiAgICAgV29ya2VyVGhyZWFkOjpzdGFydChbY2FsbGJhY2sgPSBXVEZNb3Zl
KGNhbGxiYWNrKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCld
KGF1dG8mIGVycm9yTWVzc2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgZG9lc0hhbmRsZUZl
dGNoID0gdHJ1ZTsKLSAgICAgICAgaWYgKGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisg
ICAgICAgIGlmIChhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRv
bigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICB0
aHJlYWRQcm94eS0+dGhyZWFkKCkuZmluaXNoZWRTdGFydGluZygpOwogICAgICAgICAgICAgZG9l
c0hhbmRsZUZldGNoID0gdGhyZWFkUHJveHktPnRocmVhZCgpLmRvZXNIYW5kbGVGZXRjaCgpOwor
ICAgICAgICB9CiAgICAgICAgIGNhbGxiYWNrKGVycm9yTWVzc2FnZSwgZG9lc0hhbmRsZUZldGNo
KTsKICAgICB9KTsKIH0KIAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZFN0YXJ0
aW5nKCkKK3sKKyAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7Cit9CisKK3ZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6c3RhcnRGZXRjaEV2ZW50TW9uaXRvcmluZygpCit7CisgICAgbV9pc0hhbmRs
aW5nRmV0Y2hFdmVudCA9IHRydWU7CisgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworfQorCit2
b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGltZXIoKQoreworICAgIGlm
IChtX2hlYXJ0QmVhdFRpbWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1f
b25nb2luZ0hlYXJ0QmVhdENoZWNrID0gdHJ1ZTsKKyAgICBydW5Mb29wKCkucG9zdFRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYpIG11dGFibGUgeworICAg
ICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90
ZWN0ZWRUaGlzKV0oKSB7CisgICAgICAgICAgICBtX29uZ29pbmdIZWFydEJlYXRDaGVjayA9IGZh
bHNlOworICAgICAgICB9KTsKKyAgICB9KTsKKworICAgIG1faGVhcnRCZWF0VGltZXIuc3RhcnRP
bmVTaG90KG1faGVhcnRCZWF0VGltZW91dCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclRocmVh
ZDo6aGVhcnRCZWF0VGltZXJGaXJlZCgpCit7CisgICAgaWYgKCFtX29uZ29pbmdIZWFydEJlYXRD
aGVjaykgeworICAgICAgICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0
YXRlID09IFN0YXRlOjpBY3RpdmF0aW5nIHx8IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9t
ZXNzYWdlRXZlbnRDb3VudCkKKyAgICAgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKyAg
ICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eShpZGVudGlmaWVyKCkpOworICAgIGlmICghc2VydmljZVdvcmtlclRocmVhZFByb3h5IHx8IHNl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+aXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6
c2luZ2xldG9uKCkuY29ubmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAg
cmV0dXJuOworCisgICAgc3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6SWRsZToK
KyAgICBjYXNlIFN0YXRlOjpBY3RpdmF0aW5nOgorICAgICAgICBjb25uZWN0aW9uLT5kaWRGYWls
SGVhcnRCZWF0Q2hlY2soaWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBT
dGF0ZTo6U3RhcnRpbmc6CisgICAgICAgIGNvbm5lY3Rpb24tPnNlcnZpY2VXb3JrZXJGYWlsZWRU
b1N0YXJ0KG1fZGF0YS5qb2JEYXRhSWRlbnRpZmllciwgaWRlbnRpZmllcigpLCAiU2VydmljZSBX
b3JrZXIgc2NyaXB0IGV4ZWN1dGlvbiB0aW1lZCBvdXQiX3MpOworICAgICAgICBicmVhazsKKyAg
ICBjYXNlIFN0YXRlOjpJbnN0YWxsaW5nOgorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hJ
bnN0YWxsKG1fZGF0YS5qb2JEYXRhSWRlbnRpZmllciwgaWRlbnRpZmllcigpLCBmYWxzZSk7Cisg
ICAgICAgIGJyZWFrOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5k
aWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4
IGE0MjU3OWZkOGRlNTFlOTRkZjA0OGYzYWZmYmY0YTgwZDU2YzMzMTguLmJiNDEwODVkNDAxM2Qz
YmQ1MGQ0YTBkNzA1NDEzODI2NTc0OWI5ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAg
LTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNp
bmNsdWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRl
bnRpZmllci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTY3LDYgKzY4LDkgQEAgcHVibGljOgogICAgIFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIoKSBjb25zdCB7IHJldHVybiBtX2RhdGEu
c2VydmljZVdvcmtlcklkZW50aWZpZXI7IH0KICAgICBib29sIGRvZXNIYW5kbGVGZXRjaCgpIGNv
bnN0IHsgcmV0dXJuIG1fZG9lc0hhbmRsZUZldGNoOyB9CiAKKyAgICB2b2lkIHN0YXJ0RmV0Y2hF
dmVudE1vbml0b3JpbmcoKTsKKyAgICB2b2lkIHN0b3BGZXRjaEV2ZW50TW9uaXRvcmluZygpIHsg
bV9pc0hhbmRsaW5nRmV0Y2hFdmVudCA9IGZhbHNlOyB9CisKIHByb3RlY3RlZDoKICAgICBSZWY8
V29ya2VyR2xvYmFsU2NvcGU+IGNyZWF0ZVdvcmtlckdsb2JhbFNjb3BlKGNvbnN0IFVSTCYsIFJl
ZjxTZWN1cml0eU9yaWdpbj4mJiwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGlk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgdXNlckFnZW50LCBib29sIGlzT25saW5lLCBjb25zdCBD
b250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBib29sIHNob3VsZEJ5cGFzc01h
aW5Xb3JsZENvbnRlbnRTZWN1cml0eVBvbGljeSwgUmVmPFNlY3VyaXR5T3JpZ2luPiYmIHRvcE9y
aWdpbiwgTW9ub3RvbmljVGltZSB0aW1lT3JpZ2luKSBmaW5hbDsKICAgICB2b2lkIHJ1bkV2ZW50
TG9vcCgpIG92ZXJyaWRlOwpAQCAtNzcsOSArODEsMjggQEAgcHJpdmF0ZToKICAgICBib29sIGlz
U2VydmljZVdvcmtlclRocmVhZCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAgICB2
b2lkIGZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpIGZpbmFsOwogCisgICAgdm9pZCBmaW5pc2hl
ZEZpcmluZ0luc3RhbGxFdmVudChib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSk7CisgICAgdm9p
ZCBmaW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKTsKKyAgICB2b2lkIGZpbmlzaGVkU3RhcnRp
bmcoKTsKKworICAgIHZvaWQgc3RhcnRIZWFydEJlYXRUaW1lcigpOworICAgIHZvaWQgaGVhcnRC
ZWF0VGltZXJGaXJlZCgpOworICAgIHZvaWQgaW5zdGFsbEV2ZW50VGltZXJGaXJlZCgpOworCiAg
ICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1fZGF0YTsKICAgICBXb3JrZXJPYmplY3RQcm94
eSYgbV93b3JrZXJPYmplY3RQcm94eTsKICAgICBib29sIG1fZG9lc0hhbmRsZUZldGNoIHsgZmFs
c2UgfTsKKworICAgIGJvb2wgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCB7IGZhbHNlIH07CisgICAg
dWludDY0X3QgbV9tZXNzYWdlRXZlbnRDb3VudCB7IDAgfTsKKyAgICBlbnVtIGNsYXNzIFN0YXRl
IHsgSWRsZSwgU3RhcnRpbmcsIEluc3RhbGxpbmcsIEFjdGl2YXRpbmcgfTsKKyAgICBTdGF0ZSBt
X3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKKyAgICBib29sIG1fb25nb2luZ0hlYXJ0QmVhdENoZWNr
IHsgZmFsc2UgfTsKKworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBoZWFydEJlYXRUaW1l
b3V0IHsgNjBfcyB9OworICAgIHN0YXRpYyBjb25zdGV4cHIgU2Vjb25kcyBoZWFydEJlYXRUaW1l
b3V0Rm9yVGVzdCB7IDFfcyB9OworICAgIFNlY29uZHMgbV9oZWFydEJlYXRUaW1lb3V0IHsgaGVh
cnRCZWF0VGltZW91dCB9OworICAgIFRpbWVyIG1faGVhcnRCZWF0VGltZXI7CiB9OwogCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3Nl
cnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcApp
bmRleCA1N2U5MzIxNDkxZDRlODQ3YzU5Y2M4NTE1YjI3MDAyZTJkZTliYmE3Li43N2FmNTZjODY4
NDBiZmQ0MmYzZDJlMTNlZTRmNTA0ZmJhOWU4OWVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5jcHAKQEAgLTE5NCw2ICsxOTQsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rp
bwogewogICAgIGF1dG8ga2V5ID0gc3RkOjptYWtlX3BhaXIoY29ubmVjdGlvbklkZW50aWZpZXIs
IGZldGNoSWRlbnRpZmllcik7CiAKKyAgICBpZiAobV9vbmdvaW5nRmV0Y2hUYXNrcy5pc0VtcHR5
KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RmV0Y2hFdmVudE1vbml0b3JpbmcoKTsKKwogICAg
IEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hUYXNrcy5jb250YWlucyhrZXkpKTsKICAgICBtX29uZ29p
bmdGZXRjaFRhc2tzLmFkZChrZXksIGNsaWVudC5jb3B5UmVmKCkpOwogICAgIHRocmVhZCgpLnBv
c3RGZXRjaFRhc2soV1RGTW92ZShjbGllbnQpLCBXVEZNb3ZlKGNsaWVudElkKSwgV1RGTW92ZShy
ZXF1ZXN0KSwgV1RGTW92ZShyZWZlcnJlciksIFdURk1vdmUob3B0aW9ucykpOwpAQCAtMjA1LDYg
KzIwOCw5IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaChTV1Nl
cnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3RpCiAgICAgaWYgKCFjbGllbnQpCiAgICAg
ICAgIHJldHVybjsKIAorICAgIGlmIChtX29uZ29pbmdGZXRjaFRhc2tzLmlzRW1wdHkoKSkKKyAg
ICAgICAgdGhyZWFkKCkuc3RvcEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CisKICAgICBwb3N0VGFz
a0Zvck1vZGVUb1dvcmtlckdsb2JhbFNjb3BlKFtjbGllbnQgPSBXVEZNb3ZlKGNsaWVudC52YWx1
ZSgpKV0gKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKSB7CiAgICAgICAgIGNsaWVudC0+Y2FuY2Vs
KCk7CiAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CkBAIC0yMjQsNiArMjMw
LDkgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmNvbnRpbnVlRGlkUmVjZWl2ZUZl
dGNoUmVzcG9uc2UoU1dTZXJ2ZXJDb25uZWN0aW8KIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5OjpyZW1vdmVGZXRjaChTV1NlcnZlckNvbm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIgZmV0Y2hJZGVudGlmaWVyKQogewogICAgIG1fb25n
b2luZ0ZldGNoVGFza3MucmVtb3ZlKHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JZGVudGlmaWVy
LCBmZXRjaElkZW50aWZpZXIpKTsKKworICAgIGlmIChtX29uZ29pbmdGZXRjaFRhc2tzLmlzRW1w
dHkoKSkKKyAgICAgICAgdGhyZWFkKCkuc3RvcEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLmNwcAppbmRleCBmYTFjNGNkN2NiY2RlMDdkZmYwMjg4MmQwYmQxMTEwZDg0YTRiZmVmLi5l
NTkzZTlkMTFmZGIyNjcwNzkyNzEwYmI1YTRiNDVlY2NmNWNmOGMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMjMsNiArMTIzLDEyIEBAIHZvaWQgU1dT
ZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciBzZXJ2CiAgICAgICAgIHdvcmtlci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92
ZShzY3JpcHRVUkwpLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsg
V1RGTW92ZShzY3JpcHQpLCBXVEZNb3ZlKHJlc3BvbnNlVVJMKSwgV1RGTW92ZShtaW1lVHlwZSkg
fSk7CiB9CiAKK3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAo
YXV0byogd29ya2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmll
cihpZGVudGlmaWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsK
K30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0Vf
V09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZl
ci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggODIyMjk5
OTFkNjIxODk4ZTliNmNlODcyZmIwZjNjNzc5ZGM1YmFiNy4uNDdmMTJjNDVhY2M4ZWM5ZmMzMzU1
NmIyMzkyZWU1OTY1YWE2ODg0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
bi5oCkBAIC03MSw2ICs3MSw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1h
dGNoQWxsKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgY29uc3QgU2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgY2xhaW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNl
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlw
dCwgVVJMJiYgcmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7
CiAKICAgICBjb25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25z
dCB7IHJldHVybiBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXgg
NjU1ZDcwZDJmY2ZlZGRjYWEyNDgyYzdiNWFhYzAyZmYwY2VhOTdhZS4uZjIxNmNiNjViNmE5YzM3
ZjRmYmFkNzk0MGNjZTViNzY5NjBkYjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTI1OCw2ICsy
NTgsMTIgQEAgU1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyV29ya2VyOjpyZWdpc3RyYXRp
b24oKSBjb25zdAogICAgIHJldHVybiBtX3JlZ2lzdHJhdGlvbi5nZXQoKTsKIH0KIAordm9pZCBT
V1NlcnZlcldvcmtlcjo6ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCkKK3sKKyAgICBpZiAobV9zZXJ2
ZXIgJiYgaXNSdW5uaW5nKCkpCisgICAgICAgIG1fc2VydmVyLT50ZXJtaW5hdGVXb3JrZXIoKnRo
aXMpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VS
VklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKaW5kZXggMWI5OWNjOTI3MTkxYmM1MmU2YjdlNWU1MTg3
N2IxZDQ0ODExZjA5ZS4uZjJlZmZlZTU5YzJlNzBhNTU4ZjJjZDc1YmU1ZjVhMDI0NjI1ZTgzMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
cldvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dT
ZXJ2ZXJXb3JrZXIuaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0
SGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzKCkgeyBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcyA9
IHRydWU7IH0KICAgICBib29sIGhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIGNvbnN0IHsgcmV0
dXJuIG1faGFzVGltZWRPdXRBbnlGZXRjaFRhc2tzOyB9CisgICAgdm9pZCBkaWRGYWlsSGVhcnRC
ZWF0Q2hlY2soKTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNX
U2VydmVyUmVnaXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNv
bnN0IENvbnRlbnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVy
cmVyUG9saWN5LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxV
UkwsIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCA5YzI0YzI4MDZhYzAwMzk0Mzk5
OTlhNGVmNTFkNDZkOGQ0ODJjMGZkLi5mNDBlM2M0M2IxMGMxMTExOTY3ODljMDU0Y2M4M2VkMzQx
NjgwMGQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzk2
LDcgKzM5Niw3IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0
YXRlKCkKICAgICB9CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250ZXh0Q29u
bmVjdGlvbkNyZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250
ZXh0Q29ubmVjdGlvbikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250ZXh0Q29ubmVj
dGlvbkNyZWF0ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlv
bikKIHsKICAgICBhdXRvJiBjb25uZWN0aW9uID0gIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9D
b250ZXh0Q29ubmVjdGlvbiY+KGNvbnRleHRDb25uZWN0aW9uKTsKICAgICBjb25uZWN0aW9uLnNl
dFRocm90dGxlU3RhdGUoY29tcHV0ZVRocm90dGxlU3RhdGUoY29ubmVjdGlvbi5yZWdpc3RyYWJs
ZURvbWFpbigpKSk7CkBAIC00MDUsMTIgKzQwNSwxOCBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVj
dGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0
QwogICAgICAgICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclNlcnZpY2VXb3JrZXJD
bGllbnRQcm9jZXNzIHsgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlm
aWVyKCkgfSwgMCk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzeW5jVGVybWlu
YXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciYmIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikK
K3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVu
dChTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3luY1Rlcm1pbmF0ZVdvcmtlcihX
VEZNb3ZlKGlkZW50aWZpZXIpKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lk
IFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2Vy
OjpleGlzdGluZ1dvcmtlckZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgY29tcGxldGlv
bkhhbmRsZXIod29ya2VyID8gd29ya2VyLT5pc1J1bm5pbmcoKSA6IGZhbHNlKTsKK30KKwogUEFM
OjpTZXNzaW9uSUQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKSBjb25zdAogewog
ICAgIHJldHVybiBzZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNv
bm5lY3Rpb24uaAppbmRleCBmYzBiYTNhMjFhMGZiY2FhOTk4OGViYTdjMmNiMTIxYmI3YzNkMDMx
Li4xNmIxOTc2NjE2MWNjYzExNGNkM2FhZDQyNGVmNTU1MmFhNTAxZGUwIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyQ29ubmVjdGlvbi5oCkBAIC05Myw3ICs5Myw4IEBAIHByaXZhdGU6CiAKICAg
ICB2b2lkIHJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmJiB0b3BPcmlnaW4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNv
bnN0IE9wdGlvbmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVy
PiYsIFN0cmluZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtl
ckNsaWVudChjb25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwot
ICAgIHZvaWQgc3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdv
cmtlcklkZW50aWZpZXImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNTZXJ2aWNl
V29ya2VyUnVubmluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNl
V29ya2VyQ2xpZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRl
eHRJZGVudGlmaWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGE5MmVlZGVkODc2
MjNjNzQ5NmNjYjQ1MGRmMjgyOTBmMjRlNWI0ZjMuLmZkYmNlYjg4ODYyYjQxYTJjMGNkYTRhN2Yz
NWU3NjQ2ODJjYmZhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5tZXNzYWdlcy5pbgpAQCAtNDMsNiArNDMsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZl
ckNvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAKICAgICBTZXRUaHJvdHRsZVN0YXRlKGJvb2wg
aXNUaHJvdHRsZWFibGUpCiAgICAgU3RvcmVSZWdpc3RyYXRpb25zT25EaXNrKCkgLT4gKCkgQXN5
bmMKKyAgICBJc1NlcnZpY2VXb3JrZXJSdW5uaW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyIHdvcmtlcklkZW50aWZpZXIpIC0+IChib29sIGlzUnVubmluZykgQXN5bmMKIH0KIAog
I2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24ubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGY0
ZmRlNWZlMzg1MzEyMDg1OTVmNzI0MGQ3NjAxM2VkNjNjMGI0NGYuLjEyNGE0MGE1MmQwZDU0NzY5
OWJhZGRhZWVmZDQ3NzBiMTRlODY1MDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2Vy
L1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzcsNiArMzcs
NyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291
bnRlZCB7CiAgICAgQ2xhaW0odWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29y
ZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAg
IFNldFNjcmlwdFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50
aWZpZXIsIFVSTCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3Ry
aW5nIG1pbWVUeXBlKTsKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChzdHJ1
Y3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0
cnVjdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAg
RGlkRmFpbEhlYXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpZXIpOwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9X
ZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZGM3ZWViMGNjNzJiNmRjMWQx
MDFjYzVhZmFjZDVkYzRlM2NhMmU1Zi4uOWM1YmE2MzQ1OWViY2NjZGM3NmMxYWJjOGEzZWMzMzIx
ZDlmN2Q0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbAorKysgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0x
MjMxLDYgKzEyMzEsMTAgQEAgU2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9v
a1ByZXZpZXc6CiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKICAgdHlwZTogYm9vbAogCitTZXJ2aWNl
V29ya2VyVGVzdE1vZGU6CisgIGRlZmF1bHRWYWx1ZTogZmFsc2UKKyAgdHlwZTogYm9vbAorCiAj
IEZvciBleHBlcmltZW50YWwgZmVhdHVyZXM6CiAjIFRoZSB0eXBlIHNob3VsZCBiZSBib29sZWFu
LgogIyBZb3UgbXVzdCBwcm92aWRlIGEgaHVtYW5SZWFkYWJsZU5hbWUgYW5kIGh1bWFuUmVhZGFi
bGVEZXNjcmlwdGlvbiBmb3IgYWxsIGV4cGVyaW1lbnRhbCBmZWF0dXJlcy4gVGhleQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAppbmRleCA3MWE2
ZWQyMTZjNzYzNzMyMzVjZWNhNzllYWQ4MTgzZDAwOTI4N2ZjLi5hOTQ1NjNjNDIyYTY0MDE5MDhl
ZTBlZDMyY2Y4OWFjOTgzNWE4MjA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzLmNwcApAQCAtMjE3OCwzICsyMTc4LDEzIEBAIHZvaWQgV0tQcmVm
ZXJlbmNlc1NldFJlbW90ZVBsYXliYWNrRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sCiB7CiAgICAgV2ViS2l0Ojp0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXRS
ZW1vdGVQbGF5YmFja0VuYWJsZWQoZW5hYmxlZCk7CiB9CisKK2Jvb2wgV0tQcmVmZXJlbmNlc0dl
dFNlcnZpY2VXb3JrZXJUZXN0TW9kZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKQor
eworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNlcnZpY2VXb3Jr
ZXJUZXN0TW9kZSgpOworfQorCit2b2lkIFdLUHJlZmVyZW5jZXNTZXRTZXJ2aWNlV29ya2VyVGVz
dE1vZGUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKQorewor
ICAgIFdlYktpdDo6dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+c2V0U2VydmljZVdvcmtlclRlc3RN
b2RlKGVuYWJsZWQpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0MvV0tQcmVmZXJlbmNlc1JlZi5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQ
cmVmZXJlbmNlc1JlZi5oCmluZGV4IDA4ZTE4MmMyNTgwMmVlMjAxZmQ2ZGU3NTE3MGU3YjE3MWNk
NjA5NTEuLjRlNWEzMGM5M2VjN2RhOTliYmEwMWYzMGU3MGJlZGIyY2ZmNDRkYmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWYuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmLmgKQEAgLTM0
Miw2ICszNDIsMTAgQEAgV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldENhcHR1cmVWaWRl
b0luVUlQcm9jZXNzRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHAKIFdLX0VYUE9SVCBib29sIFdL
UHJlZmVyZW5jZXNHZXRSZW1vdGVQbGF5YmFja0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZik7CiBXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UmVtb3RlUGxheWJh
Y2tFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7
CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNlLgorV0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dl
dFNlcnZpY2VXb3JrZXJUZXN0TW9kZShXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmKTsK
K1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTZXJ2aWNlV29ya2VyVGVzdE1vZGUoV0tQ
cmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsKKwogI2lmZGVmIF9f
Y3BsdXNwbHVzCiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCmluZGV4IDhlMzNkZmJlOTY3
MmJkZTdjMTczOWJkMTg0YmU4MWVlN2EzNDY1ZDYuLjZhZjZmZmI2ODc1YzQ5OTY0ZDBiMWRmM2Ey
NzBhMjMzOGNhYmRmNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9y
YWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcApAQCAtMjQyLDYgKzI0MiwxMSBA
QCB2b2lkIFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlcihTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaQogICAgIHNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50IHsgaWRlbnRpZmll
ciB9LCBNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2Vy
RnJvbUNsaWVudDo6UmVwbHkoKSk7CiB9CiAKK3ZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjpp
c1NlcnZpY2VXb3JrZXJSdW5uaW5nKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spCit7CisgICAgc2VuZFdp
dGhBc3luY1JlcGx5KE1lc3NhZ2VzOjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OklzU2VydmljZVdv
cmtlclJ1bm5pbmcgeyBpZGVudGlmaWVyIH0sIFdURk1vdmUoY2FsbGJhY2spKTsKK30KKwogdm9p
ZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnVwZGF0ZVRocm90dGxlU3RhdGUoKQogewogICAgIG1f
aXNUaHJvdHRsZWFibGUgPSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5hcmVBbGxQYWdlc1Rocm90
dGxlYWJsZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2Uv
V2ViU1dDbGllbnRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCA0Mzk5MTBmNTQ2Mjg4NjczMWQ5ZWVkZmNh
ZGRjMjc4M2VmM2U4OGZiLi45ZGJmYmFiZjc2ODNlYTlhZmFmYjMzMjM0ODU0ODdmMWU1MmRjOWZh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVu
dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NsaWVudENvbm5lY3Rpb24uaApAQCAtODUsNiArODUsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
c2V0RG9jdW1lbnRJc0NvbnRyb2xsZWQoV2ViQ29yZTo6RG9jdW1lbnRJZGVudGlmaWVyLCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uRGF0YSYmLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKIAogICAgIHZvaWQgZ2V0UmVnaXN0cmF0aW9ucyhXZWJDb3JlOjpTZWN1
cml0eU9yaWdpbkRhdGEmJiB0b3BPcmlnaW4sIGNvbnN0IFVSTCYgY2xpZW50VVJMLCBHZXRSZWdp
c3RyYXRpb25zQ2FsbGJhY2smJikgZmluYWw7CisgICAgdm9pZCBpc1NlcnZpY2VXb3JrZXJSdW5u
aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKSBmaW5hbDsKIAogICAgIHZvaWQgZGlkUmVzb2x2ZVJlZ2lzdHJhdGlvblBy
b21pc2UoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbktleSYpIGZpbmFs
OwogICAgIHZvaWQgc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVzdGluZyhDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24u
Y3BwCmluZGV4IDJkZDc1Y2MwZTgwOWNiZTIyNWJhMTkwMGQ2ODg2NGI5NmJhOTA0NDEuLjY1Njky
ZGM0Y2IwM2I4ZmE3OGJkNjk3YmQ4MWY1MjFmMmQ4ZDNhZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5jcHAKQEAgLTEyNiw2ICsxMjYsNyBAQCB2b2lkIFdlYlNXQ29udGV4dE1h
bmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3JlKGNvbnN0IFdlYlByZWZlcmVu
Y2VzUwogICAgIFJ1bnRpbWVFbmFibGVkRmVhdHVyZXM6OnNoYXJlZEZlYXR1cmVzKCkuc2V0U2Vj
dXJlQ29udGV4dENoZWNrc0VuYWJsZWQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZl
cmVuY2VzS2V5OjpzZWN1cmVDb250ZXh0Q2hlY2tzRW5hYmxlZEtleSgpKSk7CiAKICAgICBtX3N0
b3JhZ2VCbG9ja2luZ1BvbGljeSA9IHN0YXRpY19jYXN0PFNlY3VyaXR5T3JpZ2luOjpTdG9yYWdl
QmxvY2tpbmdQb2xpY3k+KHN0b3JlLmdldFVJbnQzMlZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2Vz
S2V5OjpzdG9yYWdlQmxvY2tpbmdQb2xpY3lLZXkoKSkpOworICAgIHNldElzVGVzdE1vZGUoc3Rv
cmUuZ2V0Qm9vbFZhbHVlRm9yS2V5KFdlYlByZWZlcmVuY2VzS2V5OjpzZXJ2aWNlV29ya2VyVGVz
dE1vZGVLZXkoKSkpOwogfQogCiB2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpp
bnN0YWxsU2VydmljZVdvcmtlcihjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmIGRhdGEs
IFN0cmluZyYmIHVzZXJBZ2VudCkKQEAgLTM3NSw2ICszNzYsMTEgQEAgYm9vbCBXZWJTV0NvbnRl
eHRNYW5hZ2VyQ29ubmVjdGlvbjo6aXNUaHJvdHRsZWFibGUoKSBjb25zdAogICAgIHJldHVybiBt
X2lzVGhyb3R0bGVhYmxlOwogfQogCit2b2lkIFdlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9u
OjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdv
cmtlcklkZW50aWZpZXIpCit7CisgICAgbV9jb25uZWN0aW9uVG9OZXR3b3JrUHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpEaWRGYWlsSGVhcnRC
ZWF0Q2hlY2sgeyBzZXJ2aWNlV29ya2VySWRlbnRpZmllciB9LCAwKTsKK30KKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKaW5kZXggNjk5MDMzMmVhN2VkOGM5NzRiOTM5YzU0Y2Y4
ZTE3NzkzMjcwMmI4MS4uZGUxYWZkYzE1NGNjZmY5Y2RlMGFmZDZhZDIwYjg1N2RhYmQzODdhZSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0
TWFuYWdlckNvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFn
ZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCkBAIC03OSw2ICs3OSw3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBza2lwV2FpdGluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciwgRnVuY3Rpb248dm9pZCgpPiYmKSBmaW5hbDsKICAgICB2b2lkIHNldFNjcmlwdFJlc291cmNl
KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBVUkwmLCBjb25zdCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0JikgZmluYWw7CiAg
ICAgYm9vbCBpc1Rocm90dGxlYWJsZSgpIGNvbnN0IGZpbmFsOworICAgIHZvaWQgZGlkRmFpbEhl
YXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSBmaW5hbDsKIAog
ICAgIC8vIElQQyBtZXNzYWdlcy4KICAgICB2b2lkIHNlcnZpY2VXb3JrZXJTdGFydGVkKE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJKb2JEYXRhSWRlbnRpZmllcj4sIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBib29sIGRvZXNIYW5kbGVGZXRjaCkgZmluYWw7CmRpZmYg
LS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDFjNTMwNTUx
MTI2NDY4YWZlNmRjNDkzZTM3YTM5Y2I4ZTQwNzgyYy4uNmEyYzFjMjVlNTFkZWUzOGRlNTE5ZTA1
MDI0NmZlYTMzODgzZGFjZCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDE5LTExLTI5ICB5b3Vlbm4gZmFibGV0ICA8
eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBkb2Vzbid0IHRlcm1p
bmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2NraW5nCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5OTIKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHA6
CisgICAgICAgIChXVFI6OlRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0
ZW50VmFsdWVzKToKKyAgICAgICAgRW5hYmxlIHNtYWxsIHRpbWVvdXQgdmFsdWVzLgorCiAyMDE5
LTExLTI2ICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAg
ICAgIFtBcHBsZVdpbl0gcnVuLXdlYmtpdC10ZXN0cyBpcyBmYWlsaW5nIHRvIGZpbmQgYmluMzIv
RHVtcFJlbmRlclRyZWUgc2luY2UgcjI1MjgzNApkaWZmIC0tZ2l0IGEvVG9vbHMvV2ViS2l0VGVz
dFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RD
b250cm9sbGVyLmNwcAppbmRleCA4MDU4MmM0Y2JhZmExYmU1MWFkM2UxNDY4YWVlMzIyMTk2ZDNl
YTU2Li4xZjJkMTBiNGU4YTVhZGM0ODU2ZmM5NzE5ZmQ5OWYzMWE5ZWMyZjdjIDEwMDY0NAotLS0g
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcApAQCAtOTIzLDYgKzkyMyw4IEBAIHZv
aWQgVGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMoY29u
c3QgVGVzdE9wdGlvbnMmIG9wdGlvCiAgICAgV0tQcmVmZXJlbmNlc1NldFZpZGVvUGxheWJhY2tS
ZXF1aXJlc1VzZXJHZXN0dXJlKHByZWZlcmVuY2VzLCBmYWxzZSk7CiAgICAgV0tQcmVmZXJlbmNl
c1NldEF1ZGlvUGxheWJhY2tSZXF1aXJlc1VzZXJHZXN0dXJlKHByZWZlcmVuY2VzLCBmYWxzZSk7
CiAKKyAgICBXS1ByZWZlcmVuY2VzU2V0U2VydmljZVdvcmtlclRlc3RNb2RlKHByZWZlcmVuY2Vz
LCB0cnVlKTsKKwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVl
cygpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKaW5kZXggNzQ4NmUwOGFkODMzMmJkOWFkYzg4Yzk3YmMxMjY4NWIwYTk1Zjc4
ZC4uMmZkYzQ1MGM3ZWIxNjA4ZmQ0NWQyNTFmMGJhZmYyYTExYzI0ZDBjZSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDIzIEBACisyMDE5LTExLTI5ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4K
KworICAgICAgICBTZXJ2aWNlIFdvcmtlciBkb2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlv
ZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2NraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2
Mjk4NTk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qczoKKyAgICAg
ICAgKGFzeW5jLndhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKToKKyAgICAgICAg
KiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZh
dGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3Rh
bGwuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctbWVzc2FnZS5odHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzOiBBZGRlZC4KKwog
MjAxOS0xMS0yNiAgSm9uYXRoYW4gQmVkYXJkICA8amJlZGFyZEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW1dlYkdMXSBHYXJkZW4gZGVkaWNhdGVkIHF1ZXVlIChQYXJ0IDYpCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpz
IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5l
cy5qcwppbmRleCBkZjIzOTI1NTg0MjIyMDZmYWQ2MTdhNWVlYzdjYzU5NmVkNGI0MTUyLi5jNmRi
ODJjYmU2ZmZjNTVkMTA1MjQ5NTVhMGExYTk2NDMyNTkxYTVkIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMu
anMKQEAgLTI3LDMgKzI3LDE3IEBAIGZ1bmN0aW9uIHdhaXRGb3JTdGF0ZSh3b3JrZXIsIHN0YXRl
KQogICAgICAgICB9KTsKICAgICB9KTsKIH0KKworYXN5bmMgZnVuY3Rpb24gd2FpdEZvclNlcnZp
Y2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKQoreworICAgIGlmICghd2luZG93LmludGVy
bmFscykKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJyZXF1aXJlcyBpbnRlcm5hbHMi
KTsKKworICAgIGxldCBjb3VudCA9IDEwMDsKKyAgICB3aGlsZSAoLS1jb3VudCA+IDAgJiYgYXdh
aXQgaW50ZXJuYWxzLmlzU2VydmljZVdvcmtlclJ1bm5pbmcod29ya2VyKSkgeworICAgICAgICB3
b3JrZXIucG9zdE1lc3NhZ2UoInRlc3QiKTsKKyAgICAgICAgYXdhaXQgbmV3IFByb21pc2UocmVz
b2x2ZSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIDUwKSk7CisgICAgfQorICAgIGlmIChjb3VudCA9
PT0gMCkKKyAgICAgICAgcmV0dXJuIFByb21pc2UucmVqZWN0KCJzZXJ2aWNlIHdvcmtlciBpcyBz
dGlsbCBydW5uaW5nIik7Cit9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNTgw
YTljZjNkOTIyZjNiZjViMjYwMDQ2MzIwYTUwNjU2M2RhODE5Ci0tLSAvZGV2L251bGwKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5u
aW5nLWFjdGl2YXRlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBT
cGluIGluIGFjdGl2YXRlIAorUEFTUyBTcGluIGFmdGVyIGFjdGl2YXRlIAorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctYWN0aXZhdGUuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy5odG1sCm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAuLmZlNzdjNGJlOWQyMjhkN2I1MDBjMTZhOWVkNzU3M2E3MGZmMzA5NjIKLS0tIC9kZXYv
bnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGlu
LWFjdGl2YXRlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGlu
ZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFj
dGl2YXRpbmciKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVu
bmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gYWN0aXZhdGUiKTsKKworcHJvbWlzZV90ZXN0KGFz
eW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9y
LnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5q
cyIsIHsgc2NvcGUgOiAic3Bpbi1hZnRlci1hY3RpdmF0ZSIgfSk7CisgICAgY29uc3Qgd29ya2Vy
ID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUod29y
a2VyLCAiYWN0aXZhdGVkIik7CisKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xv
bmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGluIGFmdGVyIGFjdGl2YXRlIik7Cis8L3Njcmlw
dD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkwMzlmMDIx
YjY3YjFiMmQ2OWU2MmQzMjkwNTI0ZjRjMzM1MGMxZDQKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
ZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNSBAQAorCisKK1BBU1MgU3BpbiBp
biBmZXRjaCAKK1BBU1MgU3BpbiBhZnRlciBmZXRjaCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNo
Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjUyM2VjNWM1
YzZkOTIyMGViMTljZjczODdiYjM5MWRlNTA1ZmFmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZl
dGNoLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0
PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9u
ID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2Vy
LXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1mZXRjaCIgfSk7CisgICAgY29u
c3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9y
U3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIHdpdGhJ
ZnJhbWUoInNwaW4tZmV0Y2giKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5v
TG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gZmV0Y2giKTsKKworcHJvbWlzZV90
ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdv
cmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1hZnRlci1mZXRjaCIgfSk7CisgICAgY29uc3Qgd29y
a2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUo
cmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIHdpdGhJZnJhbWUo
InNwaW4tYWZ0ZXItZmV0Y2giKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5v
TG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgZmV0Y2giKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMtZXhwZWN0
ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc4YzE4
MmM4NGEyMWQwN2JmZmYxZDM0M2Y4ZWY5Nzk0MDhiNmI1MTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5p
bmctaW5zdGFsbC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKK1BBU1MgU3Bp
biBhdCBydW5uaW5nICAKK1BBU1MgU3BpbiBpbiBpbnN0YWxsIAorUEFTUyBTcGluIGFmdGVyIGlu
c3RhbGwgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctaW5zdGFs
bC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmVlZmM2NzY4MDU0MjNjZGM2NWYzNDA0YzRiNmIxOWZj
ZGYyYjcxMGIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctaW5zdGFsbC5odHRwcy5odG1sCkBAIC0w
LDAgKzEsMjUgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3lu
YyAodGVzdCkgPT4geworICAgIHJldHVybiBwcm9taXNlX3JlamVjdHModGVzdCwgbmV3IFR5cGVF
cnJvciwgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1ydW4iIH0pKTsKK30sICJTcGluIGF0
IHJ1bm5pbmcgIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0
IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJz
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4taW5zdGFs
bCIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisgICAg
YXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAicmVkdW5kYW50Iik7
Cit9LCAiU3BpbiBpbiBpbnN0YWxsIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDog
InNwaW4tYWZ0ZXItaW5zdGFsbCIgfSk7CisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2Vy
Tm9Mb25nZXJSdW5uaW5nKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nKTsKK30sICJTcGluIGFmdGVy
IGluc3RhbGwiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5n
LW1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQu
dHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjkxYTQ1NTgxYjQ5NmQyY2Q2YWJjN2YyMTA4NGEwOTUzOTMxZTE3MjUK
LS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMv
c2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAs
MCArMSw0IEBACisKK1BBU1MgU3BpbiBpbiBtZXNzYWdlIAorUEFTUyBTcGluIGFmdGVyIG1lc3Nh
Z2UgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5o
dHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiOGQ1ODk5NTQzOTMzYzI5NDUzNmZiMDYwZDcwZjc3Mjkx
ZjRhNzkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy5odG1sCkBAIC0wLDAg
KzEsMjggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFy
bmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3Jl
cG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48
L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAo
dGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2
aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7
IHNjb3BlIDogInNwaW4tbWVzc2FnZSIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0cmF0
aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmlu
c3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtl
ck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gaW4gbWVzc2FnZSIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5p
bmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLW1lc3NhZ2UiIH0pOworICAgIGNv
bnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2FpdEZv
clN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICByZXR1
cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGlu
IGFmdGVyIG1lc3NhZ2UiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLXdvcmtlci5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWVmODM3OTFiNzk3
ZWI4MWVjMDI0M2E4MTczMTc4MzhiMjQyZWJmNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3Jr
ZXIuanMKQEAgLTAsMCArMSw0MSBAQAoraWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1
ZGVzKCJzcGluLXJ1biIpKQorICAgIHdoaWxlKHRydWUpIHsgfTsKKworZnVuY3Rpb24gaW5zdGFs
bFRlc3QoZXZlbnQpCit7CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVz
KCJzcGluLWluc3RhbGwiKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9OworICAgIGlmIChzZWxm
LnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1pbnN0YWxsIikpCisgICAg
ICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CisK
K2Z1bmN0aW9uIGFjdGl2YXRlVGVzdChldmVudCkKK3sKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRp
b24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWN0aXZhdGUiKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkg
eyB9OworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRl
ci1hY3RpdmF0ZSIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4geyB3aGlsZSh0cnVl
KSB7IH07IH0sIDApOworfQorCitmdW5jdGlvbiBtZXNzYWdlVGVzdChldmVudCkKK3sKKyAgICBp
ZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tbWVzc2FnZSIpKQorICAg
ICAgICB3aGlsZSh0cnVlKSB7IH07CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmlu
Y2x1ZGVzKCJzcGluLWFmdGVyLW1lc3NhZ2UiKSkKKyAgICAgICAgc2VsZi5zZXRUaW1lb3V0KCgp
ID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKK30KKworZnVuY3Rpb24gZmV0Y2hUZXN0KGV2
ZW50KQoreworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1m
ZXRjaCIpKQorICAgICAgICB3aGlsZSh0cnVlKSB7IH07CisgICAgaWYgKHNlbGYucmVnaXN0cmF0
aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFmdGVyLWZldGNoIikpCisgICAgICAgIHNlbGYuc2V0
VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7CisgICAgZXZlbnQucmVzcG9u
ZFdpdGgobmV3IFJlc3BvbnNlKCJvayIpKTsKK30KKworCitzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
Imluc3RhbGwiLCBpbnN0YWxsVGVzdCk7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIoImFjdGl2YXRl
IiwgYWN0aXZhdGVUZXN0KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIG1lc3Nh
Z2VUZXN0KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigiZmV0Y2giLCBmZXRjaFRlc3QpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384508</attachid>
            <date>2019-11-29 07:40:50 -0800</date>
            <delta_ts>2019-12-02 01:04:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202992-20191129164048.patch</filename>
            <type>text/plain</type>
            <size>52132</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTQxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTEzZDhiMjYyNWQ3MzFj
OTJjMDRjZDYwNmFjYTY3YmNmZTkzZDc3Yi4uYThhYjYxMWQyYzgyYmI2MjI1ZTM1MjAwYWIxMTE4
YzE2ZThhZGMxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTExLTI5ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBk
b2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2Nr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW5ldmVyIHJ1bm5pbmcgYSBzZXJ2aWNl
IHdvcmtlciB0YXNrLCBydW5uaW5nIHNjcmlwdCBvciBwb3N0aW5nIGV2ZW50cyAoaW5zdGFsbCwg
YWN0aXZhdGUsIG1lc3NhZ2UgYW5kIGZldGNoKSwKKyAgICAgICAgc3RhcnQgYSB0aW1lciB0byBj
aGVjayB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3Qgc3Bpbm5pbmcuCisgICAgICAgIFRo
aXMgaXMgZG9uZSBieSBwb3N0aW5nIGEgdGFzayB0byBzZXJ2aWNlIHdvcmtlciB0aHJlYWQgYW5k
IGhvcHBpbmcgYmFjayB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIElmIHRoaXMgcG9zdC9o
b3AgaXMgZG9uZSBiZWZvcmUgdGhlIGhlYXJ0YmVhdCB0aW1lciBpcyBmaXJlZCwgdGhlIHNlcnZp
Y2Ugd29ya2VyIGlzIGNvbnNpZGVyZWQgbGl2ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgY2hl
Y2sgaXMgZmFpbGVkIGFuZCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGFzIGZhaWxpbmcuCisgICAg
ICAgIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHRlcm1pbmF0ZWQuCisgICAgICAgIFRpbWVv
dXQgaXMgNjAgc2Vjb25kcyBieSBkZWZhdWx0IGFuZCAxIHNlY29uZCBmb3IgdGVzdCBwdXJwb3Nl
cy4KKworICAgICAgICBBZGQgdGVzdCBtb2RlIHRvIGhhdmUgc2hvcnRlciBoZWFydGJlYXQgdGlt
ZW91dC4KKyAgICAgICAgQWRkIGludGVybmFscyBBUEkgdG8gY2hlY2sgd2hldGhlciBhIHNlcnZp
Y2Ugd29ya2VyIGlzIHJ1bm5pbmcuCisKKyAgICAgICAgVGVzdHM6IGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy5odG1sCisgICAg
ICAgICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5p
bmctZmV0Y2guaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbAorICAgICAgICAg
ICAgICAgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1l
c3NhZ2UuaHR0cHMuaHRtbAorCisgICAgICAgICogcGFnZS9TZXR0aW5ncy55YW1sOgorICAgICAg
ICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFsczo6
aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogdGVzdGluZy9JbnRlcm5hbHMuaDoK
KyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAgICogd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29yZTo6U1dDbGllbnRDb25u
ZWN0aW9uOjppc1NlcnZpY2VXb3JrZXJSdW5uaW5nKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgIChXZWJDb3JlOjpTV0NvbnRl
eHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc1Rlc3RNb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnNldElzVGVzdE1vZGUpOgorICAgICAg
ICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0RmV0Y2hUYXNrKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBvc3RNZXNzYWdlVG9TZXJ2
aWNlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpcmVJ
bnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6Zmlu
aXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtl
clRocmVhZDo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydCk6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZFN0YXJ0aW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hFdmVudE1vbml0b3JpbmcpOgor
ICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3RhcnRIZWFydEJlYXRUaW1l
cik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpoZWFydEJlYXRUaW1l
ckZpcmVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2Vy
VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdG9wRmV0
Y2hFdmVudE1vbml0b3JpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1Nl
cnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnJlbW92ZUZldGNoKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZp
Y2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZhaWxIZWFydEJlYXRDaGVjayk6
CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5l
Y3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2Vy
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpkaWRGYWlsSGVhcnRCZWF0
Q2hlY2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
aDoKKwogMjAxOS0xMS0yOSAgWmFsYW4gQnVqdGFzICA8emFsYW5AYXBwbGUuY29tPgogCiAgICAg
ICAgIFtMRkNdW0lGQ10gVHJpbSB0cmFpbGluZyB1bmNvbW1pdHRlZCBjb250ZW50IHdoZW4gbmVl
ZGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQv
Q2hhbmdlTG9nCmluZGV4IDUwY2ViYWM5MGRhNTg5MTU2YzMwOGQ1YTY0Y2RjMzkwNWZiYTc5MDku
LjQ2ZGFjZTA5ZDE1MjYwYmQ0ZGIxNTlhN2FjZTJkNjFmYWZhODNlNTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTktMTEtMjkgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIGRvZXNuJ3QgdGVybWluYXRlIGFmdGVyIGEgcGVy
aW9kIG9mIHRpbWUgd2hlbiB0aHJlYWQgYmxvY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjk5MgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTYyOTg1OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQWRkIGEgcHJlZmVyZW5jZSB0byBlbmFibGUvZGlzYWJsZSBzZXJ2aWNlIHdvcmtlciB0ZXN0
IG1vZGUuCisgICAgICAgIEluIHNlcnZpY2Ugd29ya2VyIHRlc3QgbW9kZSwgdGltZW91dCB2YWx1
ZXMgYXJlIHNtYWxsZXIgdG8gcnVuIHRlc3RzIGZhc3Rlci4KKyAgICAgICAgQWRkIElQQyBoYW5k
bGluZyBmb3IgcGFzc2luZyBzZXJ2aWNlIHdvcmtlciBoZWFydCBiZWF0IGZhaWx1cmVzIGFuZCB0
byBnZXQgZnJvbSBXZWJQcm9jZXNzCisgICAgICAgIHdoZXRoZXIgYSBnaXZlbiBzZXJ2aWNlIHdv
cmtlciBpcyBydW5uaW5nIG9yIG5vdC4KKworICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZp
Y2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0ZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xp
ZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjppc1NlcnZpY2VX
b3JrZXJSdW5uaW5nKToKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dl
YlNXU2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VX
b3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluOgorICAgICAgICAqIE5ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1l
c3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzLmNwcDoKKyAgICAgICAgKFdLUHJlZmVy
ZW5jZXNHZXRTZXJ2aWNlV29ya2VyVGVzdE1vZGUpOgorICAgICAgICAoV0tQcmVmZXJlbmNlc1Nl
dFNlcnZpY2VXb3JrZXJUZXN0TW9kZSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUHJl
ZmVyZW5jZXNSZWYuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRD
b25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDbGllbnRDb25uZWN0aW9uOjpp
c1NlcnZpY2VXb3JrZXJSdW5uaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVwZGF0ZVByZWZlcmVuY2VzU3RvcmUpOgorICAgICAgICAo
V2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmFpbEhlYXJ0QmVhdENo
ZWNrKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNv
bm5lY3Rpb24uaDoKKwogMjAxOS0xMS0yOCAgRnVqaWkgSGlyb25vcmkgIDxIaXJvbm9yaS5GdWpp
aUBzb255LmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX0tFWUJPQVJEX0NPREVfQVRUUklC
VVRFIGFuZCBFTkFCTEVfS0VZQk9BUkRfS0VZX0FUVFJJQlVURSBtYWNyb3MKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
U2V0dGluZ3MueWFtbAppbmRleCBhMDFkMmY2NTJmZjMzZjFiZWQzOTI2ZGYyYjk4OTA2NGJmNjVh
MzRiLi4zYTY3YTM1ZTE3NjZjYzY1MzhiODI2Y2Y0NzNiZGE0YzBlOTRmNDIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9TZXR0aW5ncy55YW1sCkBAIC05MTAsMyArOTEwLDYgQEAgbWVkaWFDYXB0dXJlUmVxdWly
ZXNTZWN1cmVDb25uZWN0aW9uOgogICBpbml0aWFsOiB0cnVlCiAgIGNvbmRpdGlvbmFsOiBNRURJ
QV9TVFJFQU0KICAgaW5zcGVjdG9yT3ZlcnJpZGU6IHRydWUKKworc2VydmljZVdvcmtlclRlc3RN
b2RlOgorICBpbml0aWFsOiBmYWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGlu
Zy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmlu
ZGV4IDg3ZjczYWQ2MGQ5NjUzY2JhYTNiZWQ1ZTMyNTg5Y2U2MTlmMDk3ZTkuLmZjZGRlMDUyMmIz
YmNiOGQwODY2ZTJhMWJkMzA5ODM4YzE1NzliMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVy
bmFscy5jcHAKQEAgLTUwMjMsNiArNTAyMywxMyBAQCB2b2lkIEludGVybmFsczo6dGVybWluYXRl
U2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyJiB3b3JrZXIpCiAKICAgICBTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkuc3luY1Rlcm1p
bmF0ZVdvcmtlcih3b3JrZXIuaWRlbnRpZmllcigpKTsKIH0KKwordm9pZCBJbnRlcm5hbHM6Omlz
U2VydmljZVdvcmtlclJ1bm5pbmcoU2VydmljZVdvcmtlciYgd29ya2VyLCBET01Qcm9taXNlRGVm
ZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNlKQoreworICAgIHJldHVybiBTZXJ2aWNlV29ya2Vy
UHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJDb25uZWN0aW9uKCkuaXNTZXJ2aWNl
V29ya2VyUnVubmluZyh3b3JrZXIuaWRlbnRpZmllcigpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJv
bWlzZSldKGJvb2wgcmVzdWx0KSBtdXRhYmxlIHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJl
c3VsdCk7CisgICAgfSk7Cit9CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNv
cmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRleCA0NDNmMTM0NmUxOGE0Nzc0MTI0ZjkzMGEwODMz
ZGRkN2ExOGY1YjA5Li4zYjI3MzRjNGQ1YWJhODA2ZmM5NWI3YTFkZjk2NmI1OWViMWJmZmZmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKQEAgLTc2Niw2ICs3NjYsNyBAQCBwdWJsaWM6
CiAgICAgdXNpbmcgSGFzUmVnaXN0cmF0aW9uUHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJ
RExCb29sZWFuPjsKICAgICB2b2lkIGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29uc3Qg
U3RyaW5nJiBjbGllbnRVUkwsIEhhc1JlZ2lzdHJhdGlvblByb21pc2UmJik7CiAgICAgdm9pZCB0
ZXJtaW5hdGVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXImKTsKKyAgICB2b2lkIGlzU2Vydmlj
ZVdvcmtlclJ1bm5pbmcoU2VydmljZVdvcmtlciYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29s
ZWFuPiYmKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmlkbAppbmRleCBhNWU0MjMzOWFkYzAzMGU2NGZmMGRkZTNjZDdjM2IxZDhk
YThjZjc0Li4wNTM5ZjhhNmZlOTM5YzBlYTY3MGRjMWE3Mjg1NTkwNDdkMWU4YmRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCkBAIC03NTYsNiArNzU2LDcgQEAgZW51bSBDb21w
b3NpdGluZ1BvbGljeSB7CiAKICAgICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFByb21p
c2U8Ym9vbGVhbj4gaGFzU2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbihET01TdHJpbmcgc2NvcGVV
UkwpOwogICAgIFtDb25kaXRpb25hbD1TRVJWSUNFX1dPUktFUl0gdm9pZCB0ZXJtaW5hdGVTZXJ2
aWNlV29ya2VyKFNlcnZpY2VXb3JrZXIgd29ya2VyKTsKKyAgICBbQ29uZGl0aW9uYWw9U0VSVklD
RV9XT1JLRVJdIFByb21pc2U8Ym9vbGVhbj4gaXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNl
V29ya2VyIHdvcmtlcik7CiAKICAgICBbQ2FsbFdpdGg9RG9jdW1lbnQsIENvbmRpdGlvbmFsPUFQ
UExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRlIE1vY2tQYXltZW50Q29vcmRpbmF0b3IgbW9ja1Bh
eW1lbnRDb29yZGluYXRvcjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmluZGV4IDJlOWNlZDQ1YmNjMWY5Zjk0NWNiNDQxZjcz
MjhlYTkwNmE4OTdkYzguLmQ5MjJjZjdkYzE5MDQ5MTdkZDcyZGZhNTc1YzVhZThmODVlNGUyNTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5l
Y3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25u
ZWN0aW9uLmgKQEAgLTg1LDYgKzg1LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5p
c2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNvbnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYp
ID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0
aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9
CisgICAgdmlydHVhbCB2b2lkIGlzU2VydmljZVdvcmtlclJ1bm5pbmcoU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2Fs
bGJhY2soZmFsc2UpOyB9CiAKIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTV0NsaWVu
dENvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaAppbmRleCA2YTA1YTNjMTE5YmE5OWUzN2Qy
NzA2MGNmODZkMGVjY2U3NjNlMWM2Li40ZGU0ODAzZDcyN2ZmMjE1NzZlODIyZThmZDc5OTExZjhk
M2Q5MzYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCkBAIC02NCwxNSArNjQsMjAgQEAgcHVibGljOgog
ICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hBbGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNv
bnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50
c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwogICAgICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwog
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtl
cklkZW50aWZpZXIpID0gMDsKKwogICAgICAgICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUo
KSBjb25zdCA9IDA7CiAKICAgICAgICAgYm9vbCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1f
aXNDbG9zZWQ7IH0KKyAgICAgICAgYm9vbCBpc1Rlc3RNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9p
c1Rlc3RNb2RlOyB9CiAKICAgICBwcm90ZWN0ZWQ6CiAgICAgICAgIHZvaWQgc2V0QXNDbG9zZWQo
KSB7IG1faXNDbG9zZWQgPSB0cnVlOyB9CisgICAgICAgIHZvaWQgc2V0SXNUZXN0TW9kZShib29s
IHZhbHVlKSB7IG1faXNUZXN0TW9kZSA9IHZhbHVlOyB9CiAKICAgICBwcml2YXRlOgogICAgICAg
ICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgICAgICBib29sIG1faXNUZXN0TW9kZSB7
IGZhbHNlIH07CiAgICAgfTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0Q29ubmVjdGlv
bihzdGQ6OnVuaXF1ZV9wdHI8Q29ubmVjdGlvbj4mJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
Y3BwCmluZGV4IGU0ZWVjYTBmYWE5N2FhOTZiMjlhMzg0N2EwMzNjYWE2NTMzZTZmNGMuLjVjMjY0
ZTcxM2VhMDQxZjRhZGZlYWU5ZGQ4ODRmZDQ0MGViMTFkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwCkBAIC03NSw2ICs3NSw4IEBAIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OlNlcnZpY2VX
b3JrZXJUaHJlYWQoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBTCiAgICAg
OiBXb3JrZXJUaHJlYWQoZGF0YS5zY3JpcHRVUkwsIGVtcHR5U3RyaW5nKCksICJzZXJ2aWNld29y
a2VyOiIgKyBJbnNwZWN0b3I6OklkZW50aWZpZXJzRmFjdG9yeTo6Y3JlYXRlSWRlbnRpZmllcigp
LCBXVEZNb3ZlKHVzZXJBZ2VudCksIHBsYXRmb3JtU3RyYXRlZ2llcygpLT5sb2FkZXJTdHJhdGVn
eSgpLT5pc09uTGluZSgpLCBkYXRhLnNjcmlwdCwgbG9hZGVyUHJveHksIGRlYnVnZ2VyUHJveHks
IER1bW15U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpzaGFyZWQoKSwgV29ya2VyVGhyZWFkU3Rh
cnRNb2RlOjpOb3JtYWwsIGRhdGEuY29udGVudFNlY3VyaXR5UG9saWN5LCBmYWxzZSwgZGF0YS5y
ZWdpc3RyYXRpb24ua2V5LnRvcE9yaWdpbigpLnNlY3VyaXR5T3JpZ2luKCkuZ2V0KCksIE1vbm90
b25pY1RpbWU6Om5vdygpLCBpZGJDb25uZWN0aW9uUHJveHksIHNvY2tldFByb3ZpZGVyLCBKU0M6
OlJ1bnRpbWVGbGFnczo6Y3JlYXRlQWxsRW5hYmxlZCgpKQogICAgICwgbV9kYXRhKGRhdGEuaXNv
bGF0ZWRDb3B5KCkpCiAgICAgLCBtX3dvcmtlck9iamVjdFByb3h5KER1bW15U2VydmljZVdvcmtl
clRocmVhZFByb3h5OjpzaGFyZWQoKSkKKyAgICAsIG1faGVhcnRCZWF0VGltZW91dChTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCktPmlzVGVzdE1vZGUoKSA/IGhlYXJ0
QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKKyAgICAsIG1faGVhcnRCZWF0
VGltZXIgeyAqdGhpcywgJlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQg
fQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKIH0KQEAgLTk1LDYgKzk3LDggQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogCiB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OnBvc3RGZXRjaFRhc2soUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYmIGNs
aWVudCwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+JiYgY2xpZW50SWQs
IFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9wdGlv
bnMmJiBvcHRpb25zKQogeworICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKwogICAgIC8vIEZJ
WE1FOiBpbnN0ZWFkIG9mIGRpcmVjdGx5IHVzaW5nIHJ1bkxvb3AoKSwgd2Ugc2hvdWxkIGJlIHVz
aW5nIHNvbWV0aGluZyBsaWtlIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCiAgICAgLy8gRklYTUU6
IHJlcXVlc3QgYW5kIG9wdGlvbnMgY29tZSBzdHJhaWd0aCBmcm9tIElQQyBzbyBhcmUgYWxyZWFk
eSBpc29sYXRlZC4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBiZW5lZml0IG9mIHRoYXQuCiAg
ICAgcnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQpLCBj
bGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0gcmVm
ZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgpXSAo
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0xMTMsNyArMTE3
LDEwIEBAIHN0YXRpYyB2b2lkIGZpcmVNZXNzYWdlRXZlbnQoU2VydmljZVdvcmtlckdsb2JhbFNj
b3BlJiBzY29wZSwgTWVzc2FnZVdpdGhNZXNzYWdlCiAKIHZvaWQgU2VydmljZVdvcmtlclRocmVh
ZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBt
ZXNzYWdlLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSkKIHsKLSAgICBy
dW5Mb29wKCkucG9zdFRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRh
ID0gV1RGTW92ZShzb3VyY2VEYXRhKV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAgIGlm
ICghbV9tZXNzYWdlRXZlbnRDb3VudCsrKQorICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7
CisKKyAgICBydW5Mb29wKCkucG9zdFRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBz
b3VyY2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWYoKnRoaXMpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8mIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxTY29w
ZT4oY29udGV4dCk7CiAgICAgICAgIFVSTCBzb3VyY2VVUkw7CiAgICAgICAgIEV4dGVuZGFibGVN
ZXNzYWdlRXZlbnRTb3VyY2Ugc291cmNlOwpAQCAtMTMzLDE3ICsxNDAsMjQgQEAgdm9pZCBTZXJ2
aWNlV29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG0KICAgICAgICAgICAgIHNvdXJjZSA9IFdURk1vdmUoc291cmNlV29ya2Vy
KTsKICAgICAgICAgfQogICAgICAgICBmaXJlTWVzc2FnZUV2ZW50KHNlcnZpY2VXb3JrZXJHbG9i
YWxTY29wZSwgV1RGTW92ZShtZXNzYWdlKSwgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSB7
IHNvdXJjZSB9LCBzb3VyY2VVUkwpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oKSBtdXRhYmxlIHsKKyAgICAg
ICAgICAgIEFTU0VSVChtX21lc3NhZ2VFdmVudENvdW50KTsKKyAgICAgICAgICAgIC0tbV9tZXNz
YWdlRXZlbnRDb3VudDsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6ZmlyZUluc3RhbGxFdmVudCgpCiB7Ci0gICAgcnVuTG9vcCgpLnBvc3RUYXNr
KFtqb2JEYXRhSWRlbnRpZmllciA9IG1fZGF0YS5qb2JEYXRhSWRlbnRpZmllciwgc2VydmljZVdv
cmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldIChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX3N0YXRlID0gU3RhdGU6Okluc3RhbGxpbmc7
CisgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworCisgICAgcnVuTG9vcCgpLnBvc3RUYXNrKFtz
ZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHRoaXMtPmlkZW50aWZpZXIoKV0oYXV0byYgY29udGV4
dCkgewogICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2FzdDxT
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBhdXRvIGluc3RhbGxF
dmVudCA9IEV4dGVuZGFibGVFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnN0YWxsRXZlbnQs
IHsgfSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGluc3RhbGxFdmVudCk7CiAKLSAgICAgICAg
aW5zdGFsbEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQoW2pv
YkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oSGFzaFNldDxSZWY8RE9N
UHJvbWlzZT4+JiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgeworICAgICAgICBpbnN0YWxsRXZl
bnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChbc2VydmljZVdvcmtl
cklkZW50aWZpZXJdKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAgICAgICAgICAg
ICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9yIChh
dXRvJiBwcm9taXNlIDogZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgewogICAgICAgICAgICAgICAg
IGlmIChwcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJlamVjdGVkKSB7
CkBAIC0xNTEsMjUgKzE2NSwzNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpcmVJbnN0
YWxsRXZlbnQoKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtqb2JEYXRhSWRl
bnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1JlamVjdGVkQW55UHJvbWlzZV0g
KCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0Nv
bnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEluc3RhbGwoam9iRGF0YUlkZW50aWZpZXIsIHNlcnZp
Y2VXb3JrZXJJZGVudGlmaWVyLCAhaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNSZWplY3RlZEFu
eVByb21pc2VdKCkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgICAgICBz
ZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkRmlyaW5nSW5zdGFsbEV2
ZW50KGhhc1JlamVjdGVkQW55UHJvbWlzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7
CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdJ
bnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UpCit7CisgICAgbV9zdGF0ZSA9
IFN0YXRlOjpJZGxlOworCisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRNYW5h
Z2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmRpZEZp
bmlzaEluc3RhbGwobV9kYXRhLmpvYkRhdGFJZGVudGlmaWVyLCBpZGVudGlmaWVyKCksICFoYXNS
ZWplY3RlZEFueVByb21pc2UpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpcmVB
Y3RpdmF0ZUV2ZW50KCkKIHsKLSAgICBydW5Mb29wKCkucG9zdFRhc2soW3NlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyID0gdGhpcy0+aWRlbnRpZmllcigpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYg
Y29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5nOworICAg
IHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKworICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldKGF1dG8mIGNvbnRleHQpIHsK
ICAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2Vydmlj
ZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBhY3RpdmF0ZUV2ZW50
ID0gRXh0ZW5kYWJsZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFjdGl2YXRlRXZlbnQsIHsg
fSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGFjdGl2YXRlRXZlbnQpOwogCi0gICAgICAgIGFj
dGl2YXRlRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChbc2Vy
dmljZVdvcmtlcklkZW50aWZpZXJdKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKSB7Ci0gICAg
ICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKCkgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAgIGNv
bm5lY3Rpb24tPmRpZEZpbmlzaEFjdGl2YXRpb24oc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwor
ICAgICAgICBhY3RpdmF0ZUV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNl
dHRsZWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShhdXRvJiYpIHsKKyAgICAgICAgICAgIGNh
bGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSgpIHsKKyAgICAgICAgICAg
ICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdl
cjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKSkKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5LT50
aHJlYWQoKS5maW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE4MywyMSArMjA4LDkxIEBAIHZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6c29mdFVwZGF0ZSgpCiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtl
clRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCkKK3sKKyAgICBtX3N0YXRlID0g
U3RhdGU6OklkbGU7CisKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1hbmFn
ZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmlu
aXNoQWN0aXZhdGlvbihpZGVudGlmaWVyKCkpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJl
YWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CisgICAgQVNTRVJUKCFpc01haW5UaHJl
YWQoKSk7CiAgICAgbV9kb2VzSGFuZGxlRmV0Y2ggPSB3b3JrZXJHbG9iYWxTY29wZSgpLT5oYXNF
dmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuZmV0Y2hFdmVudCk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBib29sKT4m
JiBjYWxsYmFjaykKIHsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5nOworICAgIHN0YXJ0
SGVhcnRCZWF0VGltZXIoKTsKKwogICAgIFdvcmtlclRocmVhZDo6c3RhcnQoW2NhbGxiYWNrID0g
V1RGTW92ZShjYWxsYmFjayksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gdGhpcy0+aWRlbnRp
ZmllcigpXShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBib29sIGRvZXNI
YW5kbGVGZXRjaCA9IHRydWU7Ci0gICAgICAgIGlmIChhdXRvKiB0aHJlYWRQcm94eSA9IFNXQ29u
dGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50aWZp
ZXIpKQorICAgICAgICBpZiAoYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpz
aW5nbGV0b24oKS53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgeworICAgICAg
ICAgICAgdGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkU3RhcnRpbmcoKTsKICAgICAgICAg
ICAgIGRvZXNIYW5kbGVGZXRjaCA9IHRocmVhZFByb3h5LT50aHJlYWQoKS5kb2VzSGFuZGxlRmV0
Y2goKTsKKyAgICAgICAgfQogICAgICAgICBjYWxsYmFjayhlcnJvck1lc3NhZ2UsIGRvZXNIYW5k
bGVGZXRjaCk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNo
ZWRTdGFydGluZygpCit7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hFdmVudE1vbml0b3JpbmcoKQoreworICAgIG1f
aXNIYW5kbGluZ0ZldGNoRXZlbnQgPSB0cnVlOworICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsK
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKCkKK3sK
KyAgICBpZiAobV9oZWFydEJlYXRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBtX29uZ29pbmdIZWFydEJlYXRDaGVjayA9IHRydWU7CisgICAgcnVuTG9vcCgpLnBvc3RU
YXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mKSBtdXRhYmxl
IHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1v
dmUocHJvdGVjdGVkVGhpcyldKCkgeworICAgICAgICAgICAgbV9vbmdvaW5nSGVhcnRCZWF0Q2hl
Y2sgPSBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBtX2hlYXJ0QmVhdFRpbWVy
LnN0YXJ0T25lU2hvdChtX2hlYXJ0QmVhdFRpbWVvdXQpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQoKQoreworICAgIGlmICghbV9vbmdvaW5nSGVh
cnRCZWF0Q2hlY2spIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxpbmcg
fHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2ZW50
IHx8IG1fbWVzc2FnZUV2ZW50Q291bnQpCisgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVy
KCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkoaWRlbnRpZmllcigpKTsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eSB8fCBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPmlzVGVybWluYXRpbmdPclRlcm1pbmF0ZWQo
KSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24pCisg
ICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgU3RhdGU6
OklkbGU6CisgICAgY2FzZSBTdGF0ZTo6QWN0aXZhdGluZzoKKyAgICAgICAgY29ubmVjdGlvbi0+
ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKGlkZW50aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOworICAg
IGNhc2UgU3RhdGU6OlN0YXJ0aW5nOgorICAgICAgICBjb25uZWN0aW9uLT5zZXJ2aWNlV29ya2Vy
RmFpbGVkVG9TdGFydChtX2RhdGEuam9iRGF0YUlkZW50aWZpZXIsIGlkZW50aWZpZXIoKSwgIlNl
cnZpY2UgV29ya2VyIHNjcmlwdCBleGVjdXRpb24gdGltZWQgb3V0Il9zKTsKKyAgICAgICAgYnJl
YWs7CisgICAgY2FzZSBTdGF0ZTo6SW5zdGFsbGluZzoKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlk
RmluaXNoSW5zdGFsbChtX2RhdGEuam9iRGF0YUlkZW50aWZpZXIsIGlkZW50aWZpZXIoKSwgZmFs
c2UpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQu
aAppbmRleCAwNzNjZDYyMjYzM2I1YjVmNjFlM2E5MGI0ZGM4ZjA2NmY3ZTMyMWY4Li5lMjIwMjAx
MDAwYWFiMTRlZWRkMmM4M2JkODg3MGY4ZDY5NTNjZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVh
ZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHREYXRh
LmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoLmgiCiAjaW5jbHVkZSAiU2VydmljZVdv
cmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldvcmtlclRo
cmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw2ICs2OSw5IEBAIHB1YmxpYzoK
ICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAgYm9vbCBkb2VzSGFuZGxlRmV0
Y2goKSBjb25zdCB7IHJldHVybiBtX2RvZXNIYW5kbGVGZXRjaDsgfQogCisgICAgdm9pZCBzdGFy
dEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CisgICAgdm9pZCBzdG9wRmV0Y2hFdmVudE1vbml0b3Jp
bmcoKSB7IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6CiAg
ICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25zdCBV
UkwmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3QgU3Ry
aW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGluZSwg
Y29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91bGRC
eXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdpbj4m
JiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbikgZmluYWw7CiAgICAgdm9pZCBy
dW5FdmVudExvb3AoKSBvdmVycmlkZTsKQEAgLTc4LDkgKzgyLDI4IEBAIHByaXZhdGU6CiAgICAg
Ym9vbCBpc1NlcnZpY2VXb3JrZXJUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9
CiAgICAgdm9pZCBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKSBmaW5hbDsKIAorICAgIHZvaWQg
ZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UpOwor
ICAgIHZvaWQgZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCk7CisgICAgdm9pZCBmaW5pc2hl
ZFN0YXJ0aW5nKCk7CisKKyAgICB2b2lkIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKyAgICB2b2lk
IGhlYXJ0QmVhdFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGluc3RhbGxFdmVudFRpbWVyRmlyZWQo
KTsKKwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7CiAgICAgV29ya2VyT2Jq
ZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVGZXRj
aCB7IGZhbHNlIH07CisKKyAgICBib29sIG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxzZSB9
OworICAgIHVpbnQ2NF90IG1fbWVzc2FnZUV2ZW50Q291bnQgeyAwIH07CisgICAgZW51bSBjbGFz
cyBTdGF0ZSB7IElkbGUsIFN0YXJ0aW5nLCBJbnN0YWxsaW5nLCBBY3RpdmF0aW5nIH07CisgICAg
U3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJZGxlIH07CisgICAgYm9vbCBtX29uZ29pbmdIZWFydEJl
YXRDaGVjayB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGVhcnRC
ZWF0VGltZW91dCB7IDYwX3MgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGVhcnRC
ZWF0VGltZW91dEZvclRlc3QgeyAxX3MgfTsKKyAgICBTZWNvbmRzIG1faGVhcnRCZWF0VGltZW91
dCB7IGhlYXJ0QmVhdFRpbWVvdXQgfTsKKyAgICBUaW1lciBtX2hlYXJ0QmVhdFRpbWVyOwogfTsK
IAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94
eS5jcHAKaW5kZXggNTdlOTMyMTQ5MWQ0ZTg0N2M1OWNjODUxNWIyNzAwMmUyZGU5YmJhNy4uNzdh
ZjU2Yzg2ODQwYmZkNDJmM2QyZTEzZWU0ZjUwNGZiYTllODllZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xOTQsNiArMTk0LDkgQEAgdm9pZCBTZXJ2aWNlV29y
a2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBj
b25uZWN0aW8KIHsKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25JZGVu
dGlmaWVyLCBmZXRjaElkZW50aWZpZXIpOwogCisgICAgaWYgKG1fb25nb2luZ0ZldGNoVGFza3Mu
aXNFbXB0eSgpKQorICAgICAgICB0aHJlYWQoKS5zdGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCk7
CisKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMoa2V5KSk7CiAgICAg
bV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigpKTsKICAgICB0aHJl
YWQoKS5wb3N0RmV0Y2hUYXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCksIFdU
Rk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpKTsKQEAg
LTIwNSw2ICsyMDgsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2FuY2VsRmV0
Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aQogICAgIGlmICghY2xpZW50
KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9vbmdvaW5nRmV0Y2hUYXNrcy5pc0VtcHR5
KCkpCisgICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmluZygpOworCiAgICAg
cG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0gV1RGTW92ZShjbGll
bnQudmFsdWUoKSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjbGllbnQt
PmNhbmNlbCgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAtMjI0
LDYgKzIzMCw5IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpjb250aW51ZURpZFJl
Y2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvCiB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6cmVtb3ZlRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25u
ZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKIHsKICAg
ICBtX29uZ29pbmdGZXRjaFRhc2tzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9uSWRl
bnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSk7CisKKyAgICBpZiAobV9vbmdvaW5nRmV0Y2hUYXNr
cy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmluZygp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5jcHAKaW5kZXggZmExYzRjZDdjYmNkZTA3ZGZmMDI4ODJkMGJkMTExMGQ4NGE0
YmZlZi4uZTU5M2U5ZDExZmRiMjY3MDc5MjcxMGJiNWE0YjQ1ZWNjZjVjZjhjMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTIzLDYgKzEyMywxMiBAQCB2
b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydgogICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291cmNl
KFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNj
cmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUobWlt
ZVR5cGUpIH0pOwogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlkRmFp
bEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7Cisg
ICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZvcklk
ZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkRmFpbEhlYXJ0QmVhdENo
ZWNrKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShT
RVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmluZGV4
IGQ0N2U5ZjE4N2RhNGUwMDhmZWZiZjY1N2JiZGM4YWQ5ZWZkYTYzY2YuLmJmNzVjZDk1NzBlYjQ0
YWE5YjllZDljYWZlODRlMzE0MjAyZWRiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4dENv
bm5lY3Rpb24uaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQg
dm9pZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2
aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3JpcHRS
ZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJpbmcm
JiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50
aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9tYWlu
KCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3Bw
CmluZGV4IDY1NWQ3MGQyZmNmZWRkY2FhMjQ4MmM3YjVhYWMwMmZmMGNlYTk3YWUuLmYyMTZjYjY1
YjZhOWMzN2Y0ZmJhZDc5NDBjY2U1Yjc2OTYwZGIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBAIC0y
NTgsNiArMjU4LDEyIEBAIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcldvcmtlcjo6cmVn
aXN0cmF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9yZWdpc3RyYXRpb24uZ2V0KCk7CiB9CiAK
K3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZhaWxIZWFydEJlYXRDaGVjaygpCit7CisgICAgaWYg
KG1fc2VydmVyICYmIGlzUnVubmluZygpKQorICAgICAgICBtX3NlcnZlci0+dGVybWluYXRlV29y
a2VyKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5B
QkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9z
ZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDFiOTljYzkyNzE5MWJjNTJlNmI3
ZTVlNTE4NzdiMWQ0NDgxMWYwOWUuLmYyZWZmZWU1OWMyZTcwYTU1OGYyY2Q3NWJlNWY1YTAyNDYy
NWU4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CiAKICAgICB2
b2lkIHNldEhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIHsgbV9oYXNUaW1lZE91dEFueUZldGNo
VGFza3MgPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSBjb25z
dCB7IHJldHVybiBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrczsgfQorICAgIHZvaWQgZGlkRmFp
bEhlYXJ0QmVhdENoZWNrKCk7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dTZXJ2
ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYgc2Ny
aXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJpbmcm
JiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIsIEhh
c2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTYwNjU3MDU5Zjk1
ODc0M2JiOGNmMmNlNzAwZjg1MDAwM2MxMThlZC4uYTUyNTJkZTU0Y2FhZmMyNjkxZDQ4YTY4OGEw
OWNkZmRmODk2N2NlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAK
QEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRlVGhy
b3R0bGVTdGF0ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlv
biYgY29udGV4dENvbm5lY3Rpb24pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGV4
dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4dENv
bm5lY3Rpb24pCiB7CiAgICAgYXV0byYgY29ubmVjdGlvbiA9ICBzdGF0aWNfY2FzdDxXZWJTV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb250ZXh0Q29ubmVjdGlvbik7CiAgICAgY29ubmVj
dGlvbi5zZXRUaHJvdHRsZVN0YXRlKGNvbXB1dGVUaHJvdHRsZVN0YXRlKGNvbm5lY3Rpb24ucmVn
aXN0cmFibGVEb21haW4oKSkpOwpAQCAtNDA0LDEyICs0MDQsMTggQEAgdm9pZCBXZWJTV1NlcnZl
ckNvbm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJDb3JlOjpTV1NlcnZlclRv
Q29udGV4dEMKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5lY3Rp
b24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJTZXJ2aWNl
V29ya2VyQ2xpZW50UHJvY2VzcyB7IGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9jZXNz
SWRlbnRpZmllcigpIH0sIDApOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3lu
Y1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZp
ZXImJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlckZy
b21DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHN5bmNUZXJtaW5hdGVX
b3JrZXIoV1RGTW92ZShpZGVudGlmaWVyKSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKIH0K
IAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmlzU2VydmljZVdvcmtlclJ1bm5pbmcoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChi
b29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBTV1NlcnZl
cldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAgIGNv
bXBsZXRpb25IYW5kbGVyKHdvcmtlciA/IHdvcmtlci0+aXNSdW5uaW5nKCkgOiBmYWxzZSk7Cit9
CisKIFBBTDo6U2Vzc2lvbklEIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkgY29u
c3QKIHsKICAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggZmMwYmEzYTIxYTBmYmNhYTk5ODhlYmE3YzJjYjEyMWJi
N2MzZDAzMS4uMTZiMTk3NjYxNjFjY2MxMTRjZDNhYWQ0MjRlZjU1NTJhYTUwMWRlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtOTMsNyArOTMsOCBAQCBwcml2YXRl
OgogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50RGF0
YSYmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uSWRl
bnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpOwogICAgIHZvaWQgdW5yZWdpc3RlclNlcnZp
Y2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZp
ZXImKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7Cisg
ICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIGlz
U2VydmljZVdvcmtlclJ1bm5pbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRv
U2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGluYXRp
b25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9y
dHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29ya2Vy
SWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2
ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBhOTJl
ZWRlZDg3NjIzYzc0OTZjY2I0NTBkZjI4MjkwZjI0ZTViNGYzLi5mZGJjZWI4ODg2MmI0MWEyYzBj
ZGE0YTdmMzVlNzY0NjgyY2JmYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQ
cm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCisr
KyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZl
ckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTQzLDYgKzQzLDcgQEAgbWVzc2FnZXMgLT4gV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogCiAgICAgU2V0VGhyb3R0bGVTdGF0
ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgIFN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygpIC0+
ICgpIEFzeW5jCisgICAgSXNTZXJ2aWNlV29ya2VyUnVubmluZyhXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciB3b3JrZXJJZGVudGlmaWVyKSAtPiAoYm9vbCBpc1J1bm5pbmcpIEFzeW5j
CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRl
eHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9T
ZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpp
bmRleCBmNGZkZTVmZTM4NTMxMjA4NTk1ZjcyNDBkNzYwMTNlZDYzYzBiNDRmLi4xMjRhNDBhNTJk
MGQ1NDc2OTliYWRkYWVlZmQ0NzcwYjE0ZTg2NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0
aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vydmlj
ZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTM3
LDYgKzM3LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uIE5v
dFJlZkNvdW50ZWQgewogICAgIENsYWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZpZXIs
IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVy
KTsKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9uc2VV
UkwsIFN0cmluZyBtaW1lVHlwZSk7CiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJDbGll
bnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3RpbmF0
aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwgV2Vi
Q29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3JpZ2lu
KQorICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwgYi9T
b3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGRjN2VlYjBjYzcy
YjZkYzFkMTAxY2M1YWZhY2Q1ZGM0ZTNjYTJlNWYuLjljNWJhNjM0NTllYmNjY2RjNzZjMWFiYzhh
M2VjMzMyMWQ5ZjdkNGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZl
cmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFt
bApAQCAtMTIzMSw2ICsxMjMxLDEwIEBAIFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRpbmdR
dWlja0xvb2tQcmV2aWV3OgogICBkZWZhdWx0VmFsdWU6IGZhbHNlCiAgIHR5cGU6IGJvb2wKIAor
U2VydmljZVdvcmtlclRlc3RNb2RlOgorICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgIHR5cGU6IGJv
b2wKKwogIyBGb3IgZXhwZXJpbWVudGFsIGZlYXR1cmVzOgogIyBUaGUgdHlwZSBzaG91bGQgYmUg
Ym9vbGVhbi4KICMgWW91IG11c3QgcHJvdmlkZSBhIGh1bWFuUmVhZGFibGVOYW1lIGFuZCBodW1h
blJlYWRhYmxlRGVzY3JpcHRpb24gZm9yIGFsbCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoZXkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5k
ZXggNzFhNmVkMjE2Yzc2MzczMjM1Y2VjYTc5ZWFkODE4M2QwMDkyODdmYy4uYTk0NTYzYzQyMmE2
NDAxOTA4ZWUwZWQzMmNmODlhYzk4MzVhODIwOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTIxNzgsMyArMjE3OCwxMyBAQCB2b2lk
IFdLUHJlZmVyZW5jZXNTZXRSZW1vdGVQbGF5YmFja0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBw
cmVmZXJlbmNlc1JlZiwgYm9vbAogewogICAgIFdlYktpdDo6dG9JbXBsKHByZWZlcmVuY2VzUmVm
KS0+c2V0UmVtb3RlUGxheWJhY2tFbmFibGVkKGVuYWJsZWQpOwogfQorCitib29sIFdLUHJlZmVy
ZW5jZXNHZXRTZXJ2aWNlV29ya2VyVGVzdE1vZGUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZikKK3sKKyAgICByZXR1cm4gV2ViS2l0Ojp0b0ltcGwocHJlZmVyZW5jZXNSZWYpLT5zZXJ2
aWNlV29ya2VyVGVzdE1vZGUoKTsKK30KKwordm9pZCBXS1ByZWZlcmVuY2VzU2V0U2VydmljZVdv
cmtlclRlc3RNb2RlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxl
ZCkKK3sKKyAgICBXZWJLaXQ6OnRvSW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFNlcnZpY2VXb3Jr
ZXJUZXN0TW9kZShlbmFibGVkKTsKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWYuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9DL1dLUHJlZmVyZW5jZXNSZWYuaAppbmRleCAwOGUxODJjMjU4MDJlZTIwMWZkNmRlNzUxNzBl
N2IxNzFjZDYwOTUxLi40ZTVhMzBjOTNlYzdkYTk5YmJhMDFmMzBlNzBiZWRiMmNmZjQ0ZGJmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVm
LmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZi5o
CkBAIC0zNDIsNiArMzQyLDEwIEBAIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRDYXB0
dXJlVmlkZW9JblVJUHJvY2Vzc0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwCiBXS19FWFBPUlQg
Ym9vbCBXS1ByZWZlcmVuY2VzR2V0UmVtb3RlUGxheWJhY2tFbmFibGVkKFdLUHJlZmVyZW5jZXNS
ZWYgcHJlZmVyZW5jZXNSZWYpOwogV0tfRVhQT1JUIHZvaWQgV0tQcmVmZXJlbmNlc1NldFJlbW90
ZVBsYXliYWNrRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVuY2VzUmVmLCBib29sIGVu
YWJsZWQpOwogCisvLyBEZWZhdWx0cyB0byBmYWxzZS4KK1dLX0VYUE9SVCBib29sIFdLUHJlZmVy
ZW5jZXNHZXRTZXJ2aWNlV29ya2VyVGVzdE1vZGUoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNl
c1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZlcmVuY2VzU2V0U2VydmljZVdvcmtlclRlc3RN
b2RlKFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CisKICNp
ZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmNwcAppbmRleCA4ZTMz
ZGZiZTk2NzJiZGU3YzE3MzliZDE4NGJlODFlZTdhMzQ2NWQ2Li42YWY2ZmZiNjg3NWM0OTk2NGQw
YjFkZjNhMjcwYTIzMzhjYWJkZjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHAKQEAgLTI0Miw2ICsy
NDIsMTEgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5bmNUZXJtaW5hdGVXb3JrZXIo
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICBzZW5kU3luYyhNZXNzYWdlczo6
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudCB7IGlk
ZW50aWZpZXIgfSwgTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3luY1Rlcm1pbmF0
ZVdvcmtlckZyb21DbGllbnQ6OlJlcGx5KCkpOwogfQogCit2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAg
IHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpJc1Nl
cnZpY2VXb3JrZXJSdW5uaW5nIHsgaWRlbnRpZmllciB9LCBXVEZNb3ZlKGNhbGxiYWNrKSk7Cit9
CisKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKIHsK
ICAgICBtX2lzVGhyb3R0bGVhYmxlID0gV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkuYXJlQWxsUGFn
ZXNUaHJvdHRsZWFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9T
dG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXggNDM5OTEwZjU0NjI4ODY3MzFk
OWVlZGZjYWRkYzI3ODNlZjNlODhmYi4uOWRiZmJhYmY3NjgzZWE5YWZhZmIzMzIzNDg1NDg3ZjFl
NTJkYzlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2Vi
U1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3Jh
Z2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTg1LDYgKzg1LDcgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldERvY3VtZW50SXNDb250cm9sbGVkKFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmll
ciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRhdGEmJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGdldFJlZ2lzdHJhdGlvbnMoV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25zdCBVUkwmIGNsaWVudFVSTCwg
R2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpIGZpbmFsOworICAgIHZvaWQgaXNTZXJ2aWNlV29y
a2VyUnVubmluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICB2b2lkIGRpZFJlc29sdmVSZWdpc3Ry
YXRpb25Qcm9taXNlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25LZXkm
KSBmaW5hbDsKICAgICB2b2lkIHN0b3JlUmVnaXN0cmF0aW9uc09uRGlza0ZvclRlc3RpbmcoQ29t
cGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcCBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25u
ZWN0aW9uLmNwcAppbmRleCBlY2Y3YTNiZjFiZmE4OTMzNTExZjAzZjcxMzcwZTg1YmM3MjUxNjhk
Li40YWU3NGRiZmM1NGRlMzAwMzg1OGUwNDBiZDQ2MGIxMTg2MjAzZjA0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250
ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMjYsNiArMTI2LDcgQEAgdm9pZCBXZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZShjb25zdCBXZWJQ
cmVmZXJlbmNlc1MKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVzOjpzaGFyZWRGZWF0dXJlcygp
LnNldFNlY3VyZUNvbnRleHRDaGVja3NFbmFibGVkKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShX
ZWJQcmVmZXJlbmNlc0tleTo6c2VjdXJlQ29udGV4dENoZWNrc0VuYWJsZWRLZXkoKSkpOwogCiAg
ICAgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBzdGF0aWNfY2FzdDxTZWN1cml0eU9yaWdpbjo6
U3RvcmFnZUJsb2NraW5nUG9saWN5PihzdG9yZS5nZXRVSW50MzJWYWx1ZUZvcktleShXZWJQcmVm
ZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkpKTsKKyAgICBzZXRJc1Rlc3RN
b2RlKHN0b3JlLmdldEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZVdv
cmtlclRlc3RNb2RlS2V5KCkpKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVj
dGlvbjo6aW5zdGFsbFNlcnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRh
JiBkYXRhLCBTdHJpbmcmJiB1c2VyQWdlbnQpCkBAIC0zODAsNiArMzgxLDExIEBAIGJvb2wgV2Vi
U1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmlzVGhyb3R0bGVhYmxlKCkgY29uc3QKICAgICBy
ZXR1cm4gbV9pc1Rocm90dGxlYWJsZTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbjo6ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nl
c3MtPnNlbmQoTWVzc2FnZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6RGlkRmFp
bEhlYXJ0QmVhdENoZWNrIHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIgfSwgMCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4
dE1hbmFnZXJDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9X
ZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5oCmluZGV4IDI5NzM1MWYyYjg2YjgyZDg0M2Ew
ZWVhYzExNDAxMDZjNmUyMjZiNDkuLmUwMDVjZDI0YzY2ZmMyODJjOWFjZDk5ZWQ4NzIyMjdhOTk4
ZDgzMGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNzksNiArNzksNyBA
QCBwcml2YXRlOgogICAgIHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklk
ZW50aWZpZXIsIEZ1bmN0aW9uPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZXRTY3JpcHRS
ZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29u
c3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpIGZp
bmFsOwogICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRp
ZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmlu
YWw7CiAKICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRl
ZChPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJD
b3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpIGZpbmFs
OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDI2
OGYyODUwNmY3Nzc3MjYwMjMzZWFhYTA4NmMzMTQyY2NlY2Y1MTguLjc1OGNkMWZhMzdhYmI3N2E4
MDQxYzZhN2NmMzgzNGNhZGM4M2UyZmEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMS0yOSAgeW91ZW5uIGZh
YmxldCAgPHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgZG9lc24n
dCB0ZXJtaW5hdGUgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZSB3aGVuIHRocmVhZCBibG9ja2luZwor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyOTkyCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NjI5ODU5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwOgorICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1Rv
Q29uc2lzdGVudFZhbHVlcyk6CisgICAgICAgIEVuYWJsZSBzbWFsbCB0aW1lb3V0IHZhbHVlcy4K
KwogMjAxOS0xMS0yOSAgUGF1bG8gTWF0b3MgIDxwbWF0b3NAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBNb3ZlIGpzYy1pMzg2IGZyb20gb2xkIHRvIG5ldyBFV1MKZGlmZiAtLWdpdCBhL1Rvb2xzL1dl
YktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9UZXN0Q29udHJvbGxlci5jcHAKaW5kZXggODA1ODJjNGNiYWZhMWJlNTFhZDNlMTQ2OGFlZTMy
MjE5NmQzZWE1Ni4uMWYyZDEwYjRlOGE1YWRjNDg1NmZjOTcxOWZkOTlmMzFhOWVjMmY3YyAxMDA2
NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9UZXN0Q29udHJvbGxlci5jcHAKQEAgLTkyMyw2ICs5MjMs
OCBAQCB2b2lkIFRlc3RDb250cm9sbGVyOjpyZXNldFByZWZlcmVuY2VzVG9Db25zaXN0ZW50VmFs
dWVzKGNvbnN0IFRlc3RPcHRpb25zJiBvcHRpbwogICAgIFdLUHJlZmVyZW5jZXNTZXRWaWRlb1Bs
YXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShwcmVmZXJlbmNlcywgZmFsc2UpOwogICAgIFdLUHJl
ZmVyZW5jZXNTZXRBdWRpb1BsYXliYWNrUmVxdWlyZXNVc2VyR2VzdHVyZShwcmVmZXJlbmNlcywg
ZmFsc2UpOwogCisgICAgV0tQcmVmZXJlbmNlc1NldFNlcnZpY2VXb3JrZXJUZXN0TW9kZShwcmVm
ZXJlbmNlcywgdHJ1ZSk7CisKICAgICBwbGF0Zm9ybVJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3Rl
bnRWYWx1ZXMoKTsKIH0KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDg0ZjkyMmRiNTRmYzcwMTM0NzMxNzQ4NDdjNzA1M2E0
YjU2MTM0YzQuLmFiOWJlZWY1ZDkwM2RkNzcwMGU3ZTU3Y2YwYjFlZjMzOTA0MjJhYjkgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyMyBAQAorMjAxOS0xMS0yOSAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBhcHBs
ZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgZG9lc24ndCB0ZXJtaW5hdGUgYWZ0ZXIg
YSBwZXJpb2Qgb2YgdGltZSB3aGVuIHRocmVhZCBibG9ja2luZworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyOTkyCisgICAgICAgIDxyZGFyOi8vcHJv
YmxlbS81NjI5ODU5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanM6
CisgICAgICAgIChhc3luYy53YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyk6Cisg
ICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5n
LWFjdGl2YXRlLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0dHBzLmh0
bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAq
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5o
dHRwcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctaW5zdGFsbC5odHRwcy1leHBlY3RlZC50eHQ6IEFkZGVkLgor
ICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy1pbnN0YWxsLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qczogQWRk
ZWQuCisKIDIwMTktMTEtMjggIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+
CiAKICAgICAgICAgRWxlbWVudCBqdW1wcyB0byB3cm9uZyBwb3NpdGlvbiBhZnRlciBwZXJzcGVj
dGl2ZSBjaGFuZ2Ugb24gYW5jZXN0b3IKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMgYi9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCmluZGV4IGRmMjM5MjU1
ODQyMjIwNmZhZDYxN2E1ZWVjN2NjNTk2ZWQ0YjQxNTIuLmM2ZGI4MmNiZTZmZmM1NWQxMDUyNDk1
NWEwYTFhOTY0MzI1OTFhNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcwpAQCAtMjcsMyArMjcsMTcg
QEAgZnVuY3Rpb24gd2FpdEZvclN0YXRlKHdvcmtlciwgc3RhdGUpCiAgICAgICAgIH0pOwogICAg
IH0pOwogfQorCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVu
bmluZyh3b3JrZXIpCit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJuYWxzKQorICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoInJlcXVpcmVzIGludGVybmFscyIpOworCisgICAgbGV0IGNvdW50
ID0gMTAwOworICAgIHdoaWxlICgtLWNvdW50ID4gMCAmJiBhd2FpdCBpbnRlcm5hbHMuaXNTZXJ2
aWNlV29ya2VyUnVubmluZyh3b3JrZXIpKSB7CisgICAgICAgIHdvcmtlci5wb3N0TWVzc2FnZSgi
dGVzdCIpOworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHNldFRpbWVvdXQo
cmVzb2x2ZSwgNTApKTsKKyAgICB9CisgICAgaWYgKGNvdW50ID09PSAwKQorICAgICAgICByZXR1
cm4gUHJvbWlzZS5yZWplY3QoInNlcnZpY2Ugd29ya2VyIGlzIHN0aWxsIHJ1bm5pbmciKTsKK30K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZh
dGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ODBhOWNmM2Q5MjJmM2JmNWIyNjAw
NDYzMjBhNTA2NTYzZGE4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dw
dC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMt
ZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFNwaW4gaW4gYWN0aXZhdGUgCitQ
QVNTIFNwaW4gYWZ0ZXIgYWN0aXZhdGUgCisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
d3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRw
cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZmU3N2M0YmU5ZDIy
OGQ3YjUwMGMxNmE5ZWQ3NTczYTcwZmYzMDk2MgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3Rp
dmF0ZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0
IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
L3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0i
cmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKzxib2R5PgorPHNjcmlw
dD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlv
biA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWN0aXZhdGUiIH0pOworICAg
IGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2Fp
dEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGluZyIpOworCisgICAg
cmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAi
U3BpbiBpbiBhY3RpdmF0ZSIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAg
ICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdp
c3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGlu
LWFmdGVyLWFjdGl2YXRlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5z
dGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZSh3b3JrZXIsICJhY3RpdmF0ZWQiKTsK
KworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIp
OworfSwgIlNwaW4gYWZ0ZXIgYWN0aXZhdGUiKTsKKzwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5o
dHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAzOWYwMjFiNjdiMWIyZDY5ZTYyZDMyOTA1
MjRmNGMzMzUwYzFkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy1leHBlY3Rl
ZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBTcGluIGluIGZldGNoIAorUEFTUyBTcGlu
IGFmdGVyIGZldGNoIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbCBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1m
ZXRjaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNTIzZWM1YzVjNmQ5MjIwZWIxOWNmNzM4N2Ji
MzkxZGU1MDVmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbApAQCAt
MCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVz
dGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5l
c3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9yb3V0aW5lcy5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpz
IiwgeyBzY29wZSA6ICJzcGluLWZldGNoIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3Ry
YXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24u
aW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgd2l0aElmcmFtZSgic3Bpbi1mZXRjaCIp
OworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtl
cik7Cit9LCAiU3BpbiBpbiBmZXRjaCIpOworCitwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+
IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtl
ci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6
ICJzcGluLWFmdGVyLWZldGNoIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24u
aW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFs
bGluZywgImFjdGl2YXRlZCIpOworCisgICAgd2l0aElmcmFtZSgic3Bpbi1hZnRlci1mZXRjaCIp
OworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtl
cik7Cit9LCAiU3BpbiBhZnRlciBmZXRjaCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctaW5zdGFsbC5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctaW5zdGFs
bC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhjMTgyYzg0YTIxZDA3YmZmZjFkMzQz
ZjhlZjk3OTQwOGI2YjUxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0
L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBTcGluIGF0IHJ1bm5pbmcgIAorUEFT
UyBTcGluIGluIGluc3RhbGwgCitQQVNTIFNwaW4gYWZ0ZXIgaW5zdGFsbCAKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZWVmYzY3NjgwNTQyM2NkYzY1ZjM0MDRjNGI2YjE5ZmNkZjJiNzEwYgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwyNSBAQAorPGh0bWw+
Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAg
cmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVycm9yLCBuYXZpZ2F0b3Iuc2Vy
dmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIiwg
eyBzY29wZSA6ICJzcGluLXJ1biIgfSkpOworfSwgIlNwaW4gYXQgcnVubmluZyAiKTsKKworcHJv
bWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdh
aXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5u
aW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1pbnN0YWxsIiB9KTsKKyAgICBjb25zdCB3
b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUo
cmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJyZWR1bmRhbnQiKTsKK30sICJTcGluIGluIGluc3Rh
bGwiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0
cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1hZnRlci1pbnN0YWxs
IiB9KTsKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcocmVn
aXN0cmF0aW9uLmluc3RhbGxpbmcpOworfSwgIlNwaW4gYWZ0ZXIgaW5zdGFsbCIpOworPC9zY3Jp
cHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9z
ZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTFh
NDU1ODFiNDk2ZDJjZDZhYmM3ZjIxMDg0YTA5NTM5MzFlMTcyNQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1tZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKKworUEFTUyBT
cGluIGluIG1lc3NhZ2UgCitQQVNTIFNwaW4gYWZ0ZXIgbWVzc2FnZSAKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5u
aW5nLW1lc3NhZ2UuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLmh0bWwKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uN2I4ZDU4OTk1NDM5MzNjMjk0NTM2ZmIwNjBkNzBmNzcyOTFmNGE3OQotLS0gL2Rldi9udWxs
CisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLmh0bWwKQEAgLTAsMCArMSwyOCBAQAorPGh0bWw+Cis8
aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgor
PGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29u
c3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIo
InNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1tZXNz
YWdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKwor
ICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRl
ZCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdv
cmtlcik7Cit9LCAiU3BpbiBpbiBtZXNzYWdlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVz
dCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNl
V29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNj
b3BlIDogInNwaW4tYWZ0ZXItbWVzc2FnZSIgfSk7CisgICAgY29uc3Qgd29ya2VyID0gcmVnaXN0
cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9u
Lmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdv
cmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgbWVzc2FnZSIpOwor
PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5u
aW5nLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWY4Mzc5MWI3OTdlYjgxZWMwMjQzYTgxNzMxNzgz
OGIyNDJlYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcwpAQCAtMCwwICsxLDQx
IEBACitpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tcnVuIikpCisg
ICAgd2hpbGUodHJ1ZSkgeyB9OworCitmdW5jdGlvbiBpbnN0YWxsVGVzdChldmVudCkKK3sKKyAg
ICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4taW5zdGFsbCIpKQor
ICAgICAgICB3aGlsZSh0cnVlKSB7IH07CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3Bl
LmluY2x1ZGVzKCJzcGluLWFmdGVyLWluc3RhbGwiKSkKKyAgICAgICAgc2VsZi5zZXRUaW1lb3V0
KCgpID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKK30KKworZnVuY3Rpb24gYWN0aXZhdGVU
ZXN0KGV2ZW50KQoreworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygi
c3Bpbi1hY3RpdmF0ZSIpKQorICAgICAgICB3aGlsZSh0cnVlKSB7IH07CisgICAgaWYgKHNlbGYu
cmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFmdGVyLWFjdGl2YXRlIikpCisgICAg
ICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9CisK
K2Z1bmN0aW9uIG1lc3NhZ2VUZXN0KGV2ZW50KQoreworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlv
bi5zY29wZS5pbmNsdWRlcygic3Bpbi1tZXNzYWdlIikpCisgICAgICAgIHdoaWxlKHRydWUpIHsg
fTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXIt
bWVzc2FnZSIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4geyB3aGlsZSh0cnVlKSB7
IH07IH0sIDApOworfQorCitmdW5jdGlvbiBmZXRjaFRlc3QoZXZlbnQpCit7CisgICAgaWYgKHNl
bGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWZldGNoIikpCisgICAgICAgIHdo
aWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMo
InNwaW4tYWZ0ZXItZmV0Y2giKSkKKyAgICAgICAgc2VsZi5zZXRUaW1lb3V0KCgpID0+IHsgd2hp
bGUodHJ1ZSkgeyB9OyB9LCAwKTsKKyAgICBldmVudC5yZXNwb25kV2l0aChuZXcgUmVzcG9uc2Uo
Im9rIikpOworfQorCisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigiaW5zdGFsbCIsIGluc3RhbGxU
ZXN0KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigiYWN0aXZhdGUiLCBhY3RpdmF0ZVRlc3QpOwor
c2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbWVzc2FnZVRlc3QpOworc2VsZi5hZGRF
dmVudExpc3RlbmVyKCJmZXRjaCIsIGZldGNoVGVzdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384598</attachid>
            <date>2019-12-02 01:04:22 -0800</date>
            <delta_ts>2019-12-02 04:42:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202992-20191202100418.patch</filename>
            <type>text/plain</type>
            <size>3568875</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJlZDM3M2Y4MTE5MmMw
NmIzNWQwNGEwNGMyNDA1ZWEzNzFlMjE1MC4uNDk4NWE5MDZkZDc1ZWViZmYyYWE1OWU2YzBmODlj
NzJjYmJmNzY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTAyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBk
b2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2Nr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW5ldmVyIHJ1bm5pbmcgYSBzZXJ2aWNl
IHdvcmtlciB0YXNrLCBydW5uaW5nIHNjcmlwdCBvciBwb3N0aW5nIGV2ZW50cyAoaW5zdGFsbCwg
YWN0aXZhdGUsIG1lc3NhZ2UgYW5kIGZldGNoKSwKKyAgICAgICAgc3RhcnQgYSB0aW1lciB0byBj
aGVjayB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3Qgc3Bpbm5pbmcuCisgICAgICAgIFRo
aXMgaXMgZG9uZSBieSBwb3N0aW5nIGEgdGFzayB0byBzZXJ2aWNlIHdvcmtlciB0aHJlYWQgYW5k
IGhvcHBpbmcgYmFjayB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIElmIHRoaXMgcG9zdC9o
b3AgaXMgZG9uZSBiZWZvcmUgdGhlIGhlYXJ0YmVhdCB0aW1lciBpcyBmaXJlZCwgdGhlIHNlcnZp
Y2Ugd29ya2VyIGlzIGNvbnNpZGVyZWQgbGl2ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgY2hl
Y2sgaXMgZmFpbGVkIGFuZCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGFzIGZhaWxpbmcuCisgICAg
ICAgIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHRlcm1pbmF0ZWQuCisgICAgICAgIFRpbWVv
dXQgaXMgNjAgc2Vjb25kcyBieSBkZWZhdWx0IGFuZCAxIHNlY29uZCBmb3IgdGVzdCBwdXJwb3Nl
cy4KKworICAgICAgICBBZGQgc2V0dGluZ3MgdG8gaGF2ZSBzaG9ydCBoZWFydGJlYXQgdGltZW91
dCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICAgICAgQWRkIGludGVybmFscyBBUEkgdG8gY2hl
Y2sgd2hldGhlciBhIHNlcnZpY2Ugd29ya2VyIGlzIHJ1bm5pbmcuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0
ZS5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0
cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbAorCisgICAgICAgICogcGFnZS9TZXR0
aW5ncy55YW1sOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjppc1NlcnZpY2VXb3JrZXJSdW5uaW5nKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc1Rlc3RNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnNldElz
VGVzdE1vZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6U2Vy
dmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFk
Ojpwb3N0RmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmZpcmVJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVh
dGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZFN0YXJ0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hF
dmVudE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6
c3RhcnRIZWFydEJlYXRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkOjpzdG9wRmV0Y2hFdmVudE1vbml0b3JpbmcpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnJlbW92ZUZldGNoKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZh
aWxIZWFydEJlYXRDaGVjayk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2Vy
OjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOS0xMi0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCB3aGVuIGRvaW5nIERpc3BsYXlMaXN0IHJlY29yZGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNGY1
NTExM2ZkMjNlYzBhZTI1YjJhZWI2YTQ0ODQ4ZjA1ODhkMDk5Li40Y2Y1M2Y0MGQ0ZGJiZDliZDAw
YzM2MGUxOGI2NzdlNjk1MTk1MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTEy
LTAyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNl
IFdvcmtlciBkb2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhy
ZWFkIGJsb2NraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI5OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHByZWZlcmVuY2Ug
dG8gZW5hYmxlL2Rpc2FibGUgc2VydmljZSB3b3JrZXIgc2hvcnQgdGltZW91dHMuCisgICAgICAg
IEFkZCBJUEMgaGFuZGxpbmcgZm9yIHBhc3Npbmcgc2VydmljZSB3b3JrZXIgaGVhcnQgYmVhdCBm
YWlsdXJlcyBhbmQgdG8gZ2V0IGZyb20gV2ViUHJvY2VzcworICAgICAgICB3aGV0aGVyIGEgZ2l2
ZW4gc2VydmljZSB3b3JrZXIgaXMgcnVubmluZyBvciBub3QuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRl
V29ya2VyRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAg
ICAgIChXS1ByZWZlcmVuY2VzR2V0U2VydmljZVdvcmtlclRlc3RNb2RlKToKKyAgICAgICAgKFdL
UHJlZmVyZW5jZXNTZXRTZXJ2aWNlV29ya2VyVGVzdE1vZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZh
aWxIZWFydEJlYXRDaGVjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisKIDIwMTktMTItMDEgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gUmV0cmlldmUgYWxsIGZv
bGxvd2luZyBXTV9DSEFSIGV2ZW50cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHByb2Nlc3NpbmcgV01f
S0VZRE9XTiBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55
YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IGEwMWQyZjY1MmZm
MzNmMWJlZDM5MjZkZjJiOTg5MDY0YmY2NWEzNGIuLmNlMGNlY2EyNGNjZjJlYmJmYjUwMTIzMGRi
NWU2NWNhMTVmZDczZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTkxMCwzICs5
MTAsNiBAQCBtZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb246CiAgIGluaXRpYWw6
IHRydWUKICAgY29uZGl0aW9uYWw6IE1FRElBX1NUUkVBTQogICBpbnNwZWN0b3JPdmVycmlkZTog
dHJ1ZQorCitzZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0OgorICBpbml0aWFsOiBmYWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg3ZjczYWQ2MGQ5NjUzY2JhYTNiZWQ1
ZTMyNTg5Y2U2MTlmMDk3ZTkuLmZjZGRlMDUyMmIzYmNiOGQwODY2ZTJhMWJkMzA5ODM4YzE1Nzli
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUwMjMsNiArNTAyMywx
MyBAQCB2b2lkIEludGVybmFsczo6dGVybWluYXRlU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2Vy
JiB3b3JrZXIpCiAKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCkuc3luY1Rlcm1pbmF0ZVdvcmtlcih3b3JrZXIuaWRlbnRpZmll
cigpKTsKIH0KKwordm9pZCBJbnRlcm5hbHM6OmlzU2VydmljZVdvcmtlclJ1bm5pbmcoU2Vydmlj
ZVdvcmtlciYgd29ya2VyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNl
KQoreworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCkuaXNTZXJ2aWNlV29ya2VyUnVubmluZyh3b3JrZXIuaWRlbnRp
ZmllcigpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGJvb2wgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfSk7Cit9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCA0NDNmMTM0NmUxOGE0Nzc0MTI0ZjkzMGEwODMzZGRkN2ExOGY1YjA5Li4zYjI3MzRjNGQ1YWJh
ODA2ZmM5NWI3YTFkZjk2NmI1OWViMWJmZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTc2Niw2ICs3NjYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSGFzUmVnaXN0cmF0aW9u
UHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPjsKICAgICB2b2lkIGhhc1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIEhhc1JlZ2lz
dHJhdGlvblByb21pc2UmJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyKFNlcnZp
Y2VXb3JrZXImKTsKKyAgICB2b2lkIGlzU2VydmljZVdvcmtlclJ1bm5pbmcoU2VydmljZVdvcmtl
ciYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhNWU0
MjMzOWFkYzAzMGU2NGZmMGRkZTNjZDdjM2IxZDhkYThjZjc0Li4wNTM5ZjhhNmZlOTM5YzBlYTY3
MGRjMWE3Mjg1NTkwNDdkMWU4YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CkBAIC03NTYsNiArNzU2LDcgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBbQ29u
ZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFByb21pc2U8Ym9vbGVhbj4gaGFzU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbihET01TdHJpbmcgc2NvcGVVUkwpOwogICAgIFtDb25kaXRpb25hbD1TRVJW
SUNFX1dPUktFUl0gdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXIgd29y
a2VyKTsKKyAgICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFByb21pc2U8Ym9vbGVhbj4g
aXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29ya2VyIHdvcmtlcik7CiAKICAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnQsIENvbmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRl
IE1vY2tQYXltZW50Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDJlOWNlZDQ1YmNjMWY5Zjk0NWNiNDQxZjczMjhlYTkwNmE4OTdkYzguLmQ5MjJjZjdkYzE5
MDQ5MTdkZDcyZGZhNTc1YzVhZThmODVlNGUyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTg1LDYgKzg1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNv
bnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CisgICAgdmlydHVhbCB2b2lkIGlzU2Vydmlj
ZVdvcmtlclJ1bm5pbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9CiAKIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTV0NsaWVudENvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuaAppbmRleCA2YTA1YTNjMTE5YmE5OWUzN2QyNzA2MGNmODZkMGVjY2U3NjNlMWM2Li42NzI2
MTYyZGIzOTk0OGMxNmFiYTZjYzA0Mjg5M2RjZGM3MmQyMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5o
CkBAIC02NCwxNSArNjQsMjAgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hB
bGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CiAKICAgICAgICAgYm9v
bCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKyAgICAgICAgYm9vbCB1
c2VTaG9ydFRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX3VzZVNob3J0VGltZW91dDsgfQogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldEFzQ2xvc2VkKCkgeyBtX2lzQ2xvc2VkID0g
dHJ1ZTsgfQorICAgICAgICB2b2lkIHNldFVzZVNob3J0VGltZW91dChib29sIHZhbHVlKSB7IG1f
dXNlU2hvcnRUaW1lb3V0ID0gdmFsdWU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
bV9pc0Nsb3NlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV91c2VTaG9ydFRpbWVvdXQgeyBm
YWxzZSB9OwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24o
c3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cAppbmRleCBlNGVlY2EwZmFhOTdhYTk2YjI5YTM4NDdhMDMzY2FhNjUzM2U2ZjRjLi4xZWEyZDM0
ODFlYWFjYWFjNmE2OGI2ODk4ODY0NDI3OGY1OGUzMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcApAQCAtNzUsNiArNzUsOCBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29y
a2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgUwogICAgIDog
V29ya2VyVGhyZWFkKGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtl
cjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwg
V1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3ko
KS0+aXNPbkxpbmUoKSwgZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBE
dW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0
TW9kZTo6Tm9ybWFsLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIGRhdGEucmVn
aXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBNb25vdG9u
aWNUaW1lOjpub3coKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpS
dW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xh
dGVkQ29weSgpKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2hhcmVkKCkpCisgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT51c2VTaG9ydFRpbWVvdXQoKSA/IGhl
YXJ0QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKKyAgICAsIG1faGVhcnRC
ZWF0VGltZXIgeyAqdGhpcywgJlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmly
ZWQgfQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKIH0KQEAgLTk1LDYgKzk3LDggQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnBvc3RGZXRjaFRhc2soUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYm
IGNsaWVudCwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+JiYgY2xpZW50
SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9w
dGlvbnMmJiBvcHRpb25zKQogeworICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKwogICAgIC8v
IEZJWE1FOiBpbnN0ZWFkIG9mIGRpcmVjdGx5IHVzaW5nIHJ1bkxvb3AoKSwgd2Ugc2hvdWxkIGJl
IHVzaW5nIHNvbWV0aGluZyBsaWtlIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCiAgICAgLy8gRklY
TUU6IHJlcXVlc3QgYW5kIG9wdGlvbnMgY29tZSBzdHJhaWd0aCBmcm9tIElQQyBzbyBhcmUgYWxy
ZWFkeSBpc29sYXRlZC4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBiZW5lZml0IG9mIHRoYXQu
CiAgICAgcnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
LCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0g
cmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0xMTMsNyAr
MTE3LDEwIEBAIHN0YXRpYyB2b2lkIGZpcmVNZXNzYWdlRXZlbnQoU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlJiBzY29wZSwgTWVzc2FnZVdpdGhNZXNzYWdlCiAKIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSkKIHsKLSAg
ICBydW5Mb29wKCkucG9zdFRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VE
YXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAg
IGlmICghbV9tZXNzYWdlRXZlbnRDb3VudCsrKQorICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVy
KCk7CisKKyAgICBydW5Mb29wKCkucG9zdFRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2Up
LCBzb3VyY2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8m
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCk7CiAgICAgICAgIFVSTCBzb3VyY2VVUkw7CiAgICAgICAgIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnRTb3VyY2Ugc291cmNlOwpAQCAtMTMzLDE3ICsxNDAsMjQgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG0KICAgICAgICAgICAgIHNvdXJjZSA9IFdURk1vdmUoc291cmNlV29y
a2VyKTsKICAgICAgICAgfQogICAgICAgICBmaXJlTWVzc2FnZUV2ZW50KHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSwgV1RGTW92ZShtZXNzYWdlKSwgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJj
ZSB7IHNvdXJjZSB9LCBzb3VyY2VVUkwpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIEFTU0VSVChtX21lc3NhZ2VFdmVudENvdW50KTsKKyAgICAgICAgICAgIC0tbV9t
ZXNzYWdlRXZlbnRDb3VudDsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZDo6ZmlyZUluc3RhbGxFdmVudCgpCiB7Ci0gICAgcnVuTG9vcCgpLnBvc3RU
YXNrKFtqb2JEYXRhSWRlbnRpZmllciA9IG1fZGF0YS5qb2JEYXRhSWRlbnRpZmllciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX3N0YXRlID0gU3RhdGU6Okluc3RhbGxp
bmc7CisgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworCisgICAgcnVuTG9vcCgpLnBvc3RUYXNr
KFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHRoaXMtPmlkZW50aWZpZXIoKV0oYXV0byYgY29u
dGV4dCkgewogICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBhdXRvIGluc3Rh
bGxFdmVudCA9IEV4dGVuZGFibGVFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnN0YWxsRXZl
bnQsIHsgfSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGluc3RhbGxFdmVudCk7CiAKLSAgICAg
ICAgaW5zdGFsbEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQo
W2pvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oSGFzaFNldDxSZWY8
RE9NUHJvbWlzZT4+JiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgeworICAgICAgICBpbnN0YWxs
RXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChbc2VydmljZVdv
cmtlcklkZW50aWZpZXJdKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAgICAgICAg
ICAgICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgewogICAgICAgICAgICAg
ICAgIGlmIChwcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJlamVjdGVk
KSB7CkBAIC0xNTEsMjUgKzE2NSwzNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpcmVJ
bnN0YWxsRXZlbnQoKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtqb2JEYXRh
SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1JlamVjdGVkQW55UHJvbWlz
ZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEluc3RhbGwoam9iRGF0YUlkZW50aWZpZXIsIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCAhaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNSZWplY3Rl
ZEFueVByb21pc2VdKCkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkRmlyaW5nSW5zdGFs
bEV2ZW50KGhhc1JlamVjdGVkQW55UHJvbWlzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJp
bmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UpCit7CisgICAgbV9zdGF0
ZSA9IFN0YXRlOjpJZGxlOworCisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmRp
ZEZpbmlzaEluc3RhbGwobV9kYXRhLmpvYkRhdGFJZGVudGlmaWVyLCBpZGVudGlmaWVyKCksICFo
YXNSZWplY3RlZEFueVByb21pc2UpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZp
cmVBY3RpdmF0ZUV2ZW50KCkKIHsKLSAgICBydW5Mb29wKCkucG9zdFRhc2soW3NlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyID0gdGhpcy0+aWRlbnRpZmllcigpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5nOwor
ICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKworICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldKGF1dG8mIGNvbnRleHQp
IHsKICAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBhY3RpdmF0ZUV2
ZW50ID0gRXh0ZW5kYWJsZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFjdGl2YXRlRXZlbnQs
IHsgfSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGFjdGl2YXRlRXZlbnQpOwogCi0gICAgICAg
IGFjdGl2YXRlRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChb
c2VydmljZVdvcmtlcklkZW50aWZpZXJdKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKSB7Ci0g
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24tPmRpZEZpbmlzaEFjdGl2YXRpb24oc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OworICAgICAgICBhY3RpdmF0ZUV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0Fy
ZVNldHRsZWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShhdXRvJiYpIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSgpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5
LT50aHJlYWQoKS5maW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE4MywyMSArMjA4LDkxIEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZDo6c29mdFVwZGF0ZSgpCiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCkKK3sKKyAgICBtX3N0YXRl
ID0gU3RhdGU6OklkbGU7CisKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlk
RmluaXNoQWN0aXZhdGlvbihpZGVudGlmaWVyKCkpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgbV9kb2VzSGFuZGxlRmV0Y2ggPSB3b3JrZXJHbG9iYWxTY29wZSgpLT5o
YXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuZmV0Y2hFdmVudCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBib29s
KT4mJiBjYWxsYmFjaykKIHsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5nOworICAgIHN0
YXJ0SGVhcnRCZWF0VGltZXIoKTsKKwogICAgIFdvcmtlclRocmVhZDo6c3RhcnQoW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gdGhpcy0+aWRl
bnRpZmllcigpXShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBib29sIGRv
ZXNIYW5kbGVGZXRjaCA9IHRydWU7Ci0gICAgICAgIGlmIChhdXRvKiB0aHJlYWRQcm94eSA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpKQorICAgICAgICBpZiAoYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgeworICAg
ICAgICAgICAgdGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkU3RhcnRpbmcoKTsKICAgICAg
ICAgICAgIGRvZXNIYW5kbGVGZXRjaCA9IHRocmVhZFByb3h5LT50aHJlYWQoKS5kb2VzSGFuZGxl
RmV0Y2goKTsKKyAgICAgICAgfQogICAgICAgICBjYWxsYmFjayhlcnJvck1lc3NhZ2UsIGRvZXNI
YW5kbGVGZXRjaCk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6Zmlu
aXNoZWRTdGFydGluZygpCit7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworfQorCit2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hFdmVudE1vbml0b3JpbmcoKQoreworICAg
IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSB0cnVlOworICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIo
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKCkK
K3sKKyAgICBpZiAobV9oZWFydEJlYXRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX29uZ29pbmdIZWFydEJlYXRDaGVjayA9IHRydWU7CisgICAgcnVuTG9vcCgpLnBv
c3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mKSBtdXRh
YmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyldKCkgeworICAgICAgICAgICAgbV9vbmdvaW5nSGVhcnRCZWF0
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBtX2hlYXJ0QmVhdFRp
bWVyLnN0YXJ0T25lU2hvdChtX2hlYXJ0QmVhdFRpbWVvdXQpOworfQorCit2b2lkIFNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQoKQoreworICAgIGlmICghbV9vbmdvaW5n
SGVhcnRCZWF0Q2hlY2spIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxp
bmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2
ZW50IHx8IG1fbWVzc2FnZUV2ZW50Q291bnQpCisgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRp
bWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkoaWRlbnRpZmllcigpKTsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSB8fCBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPmlzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgU3Rh
dGU6OklkbGU6CisgICAgY2FzZSBTdGF0ZTo6QWN0aXZhdGluZzoKKyAgICAgICAgY29ubmVjdGlv
bi0+ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKGlkZW50aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU3RhdGU6OlN0YXJ0aW5nOgorICAgICAgICBjb25uZWN0aW9uLT5zZXJ2aWNlV29y
a2VyRmFpbGVkVG9TdGFydChtX2RhdGEuam9iRGF0YUlkZW50aWZpZXIsIGlkZW50aWZpZXIoKSwg
IlNlcnZpY2UgV29ya2VyIHNjcmlwdCBleGVjdXRpb24gdGltZWQgb3V0Il9zKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6SW5zdGFsbGluZzoKKyAgICAgICAgY29ubmVjdGlvbi0+
ZGlkRmluaXNoSW5zdGFsbChtX2RhdGEuam9iRGF0YUlkZW50aWZpZXIsIGlkZW50aWZpZXIoKSwg
ZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaAppbmRleCAwNzNjZDYyMjYzM2I1YjVmNjFlM2E5MGI0ZGM4ZjA2NmY3ZTMyMWY4Li5lMjIw
MjAxMDAwYWFiMTRlZWRkMmM4M2JkODg3MGY4ZDY5NTNjZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw2ICs2OSw5IEBAIHB1Ymxp
YzoKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAgYm9vbCBkb2VzSGFuZGxl
RmV0Y2goKSBjb25zdCB7IHJldHVybiBtX2RvZXNIYW5kbGVGZXRjaDsgfQogCisgICAgdm9pZCBz
dGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CisgICAgdm9pZCBzdG9wRmV0Y2hFdmVudE1vbml0
b3JpbmcoKSB7IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBVUkwmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGlu
ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbikgZmluYWw7CiAgICAgdm9p
ZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKQEAgLTc4LDkgKzgyLDI4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKSBmaW5hbDsKIAorICAgIHZv
aWQgZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2Up
OworICAgIHZvaWQgZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCk7CisgICAgdm9pZCBmaW5p
c2hlZFN0YXJ0aW5nKCk7CisKKyAgICB2b2lkIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKyAgICB2
b2lkIGhlYXJ0QmVhdFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGluc3RhbGxFdmVudFRpbWVyRmly
ZWQoKTsKKwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7CiAgICAgV29ya2Vy
T2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVG
ZXRjaCB7IGZhbHNlIH07CisKKyAgICBib29sIG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxz
ZSB9OworICAgIHVpbnQ2NF90IG1fbWVzc2FnZUV2ZW50Q291bnQgeyAwIH07CisgICAgZW51bSBj
bGFzcyBTdGF0ZSB7IElkbGUsIFN0YXJ0aW5nLCBJbnN0YWxsaW5nLCBBY3RpdmF0aW5nIH07Cisg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJZGxlIH07CisgICAgYm9vbCBtX29uZ29pbmdIZWFy
dEJlYXRDaGVjayB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGVh
cnRCZWF0VGltZW91dCB7IDYwX3MgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGVh
cnRCZWF0VGltZW91dEZvclRlc3QgeyAxX3MgfTsKKyAgICBTZWNvbmRzIG1faGVhcnRCZWF0VGlt
ZW91dCB7IGhlYXJ0QmVhdFRpbWVvdXQgfTsKKyAgICBUaW1lciBtX2hlYXJ0QmVhdFRpbWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKaW5kZXggNTdlOTMyMTQ5MWQ0ZTg0N2M1OWNjODUxNWIyNzAwMmUyZGU5YmJhNy4u
NzdhZjU2Yzg2ODQwYmZkNDJmM2QyZTEzZWU0ZjUwNGZiYTllODllZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xOTQsNiArMTk0LDkgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW8KIHsKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpOwogCisgICAgaWYgKG1fb25nb2luZ0ZldGNoVGFz
a3MuaXNFbXB0eSgpKQorICAgICAgICB0aHJlYWQoKS5zdGFydEZldGNoRXZlbnRNb25pdG9yaW5n
KCk7CisKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMoa2V5KSk7CiAg
ICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigpKTsKICAgICB0
aHJlYWQoKS5wb3N0RmV0Y2hUYXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpKTsK
QEAgLTIwNSw2ICsyMDgsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2FuY2Vs
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aQogICAgIGlmICghY2xp
ZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9vbmdvaW5nRmV0Y2hUYXNrcy5pc0Vt
cHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmluZygpOworCiAg
ICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0gV1RGTW92ZShj
bGllbnQudmFsdWUoKSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjbGll
bnQtPmNhbmNlbCgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAt
MjI0LDYgKzIzMCw5IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpjb250aW51ZURp
ZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6cmVtb3ZlRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKIHsK
ICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9u
SWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSk7CisKKyAgICBpZiAobV9vbmdvaW5nRmV0Y2hU
YXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmlu
ZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZmExYzRjZDdjYmNkZTA3ZGZmMDI4ODJkMGJkMTExMGQ4
NGE0YmZlZi4uZTU5M2U5ZDExZmRiMjY3MDc5MjcxMGJiNWE0YjQ1ZWNjZjVjZjhjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTIzLDYgKzEyMywxMiBA
QCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydgogICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291
cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUo
bWltZVR5cGUpIH0pOwogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlk
RmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZv
cklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkRmFpbEhlYXJ0QmVh
dENoZWNrKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmlu
ZGV4IGQ0N2U5ZjE4N2RhNGUwMDhmZWZiZjY1N2JiZGM4YWQ5ZWZkYTYzY2YuLmJmNzVjZDk1NzBl
YjQ0YWE5YjllZDljYWZlODRlMzE0MjAyZWRiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCmluZGV4IDY1NWQ3MGQyZmNmZWRkY2FhMjQ4MmM3YjVhYWMwMmZmMGNlYTk3YWUuLmYyMTZj
YjY1YjZhOWMzN2Y0ZmJhZDc5NDBjY2U1Yjc2OTYwZGIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBA
IC0yNTgsNiArMjU4LDEyIEBAIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcldvcmtlcjo6
cmVnaXN0cmF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9yZWdpc3RyYXRpb24uZ2V0KCk7CiB9
CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZhaWxIZWFydEJlYXRDaGVjaygpCit7CisgICAg
aWYgKG1fc2VydmVyICYmIGlzUnVubmluZygpKQorICAgICAgICBtX3NlcnZlci0+dGVybWluYXRl
V29ya2VyKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDFiOTljYzkyNzE5MWJjNTJl
NmI3ZTVlNTE4NzdiMWQ0NDgxMWYwOWUuLmYyZWZmZWU1OWMyZTcwYTU1OGYyY2Q3NWJlNWY1YTAy
NDYyNWU4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIHsgbV9oYXNUaW1lZE91dEFueUZl
dGNoVGFza3MgPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSBj
b25zdCB7IHJldHVybiBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrczsgfQorICAgIHZvaWQgZGlk
RmFpbEhlYXJ0QmVhdENoZWNrKCk7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dT
ZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJp
bmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTYwNjU3MDU5
Zjk1ODc0M2JiOGNmMmNlNzAwZjg1MDAwM2MxMThlZC4uYTUyNTJkZTU0Y2FhZmMyNjkxZDQ4YTY4
OGEwOWNkZmRmODk2N2NlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRl
VGhyb3R0bGVTdGF0ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24pCiB7CiAgICAgYXV0byYgY29ubmVjdGlvbiA9ICBzdGF0aWNfY2FzdDxXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb250ZXh0Q29ubmVjdGlvbik7CiAgICAgY29u
bmVjdGlvbi5zZXRUaHJvdHRsZVN0YXRlKGNvbXB1dGVUaHJvdHRsZVN0YXRlKGNvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKSkpOwpAQCAtNDA0LDEyICs0MDQsMTggQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJDb3JlOjpTV1NlcnZl
clRvQ29udGV4dEMKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyB7IGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIH0sIDApOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtl
ckZyb21DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHN5bmNUZXJtaW5h
dGVXb3JrZXIoV1RGTW92ZShpZGVudGlmaWVyKSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmlzU2VydmljZVdvcmtlclJ1bm5pbmco
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBTV1Nl
cnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdvcmtlciA/IHdvcmtlci0+aXNSdW5uaW5nKCkgOiBmYWxzZSk7
Cit9CisKIFBBTDo6U2Vzc2lvbklEIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggZmMwYmEzYTIxYTBmYmNhYTk5ODhlYmE3YzJjYjEy
MWJiN2MzZDAzMS4uMTZiMTk3NjYxNjFjY2MxMTRjZDNhYWQ0MjRlZjU1NTJhYTUwMWRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtOTMsNyArOTMsOCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSYmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpOwogICAgIHZvaWQgdW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXImKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IGlzU2VydmljZVdvcmtlclJ1bm5pbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGlu
YXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBh
OTJlZWRlZDg3NjIzYzc0OTZjY2I0NTBkZjI4MjkwZjI0ZTViNGYzLi5mZGJjZWI4ODg2MmI0MWEy
YzBjZGE0YTdmMzVlNzY0NjgyY2JmYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTQzLDYgKzQzLDcgQEAgbWVzc2FnZXMgLT4g
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogCiAgICAgU2V0VGhyb3R0bGVT
dGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgIFN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygp
IC0+ICgpIEFzeW5jCisgICAgSXNTZXJ2aWNlV29ya2VyUnVubmluZyhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciB3b3JrZXJJZGVudGlmaWVyKSAtPiAoYm9vbCBpc1J1bm5pbmcpIEFz
eW5jCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgppbmRleCBmNGZkZTVmZTM4NTMxMjA4NTk1ZjcyNDBkNzYwMTNlZDYzYzBiNDRmLi4xMjRhNDBh
NTJkMGQ1NDc2OTliYWRkYWVlZmQ0NzcwYjE0ZTg2NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTM3LDYgKzM3LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
IE5vdFJlZkNvdW50ZWQgewogICAgIENsYWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9u
c2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7CiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQorICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGU2NDIxZjdj
YjNlODcyZDk1Y2RkOWU5N2FjN2QzNjQ4M2MzMGU5NjIuLmMyMjgxM2RlYTM0M2Q2MGRmZjc4YWMx
ZWI3Mjk0NGFiY2QzMDRlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbApAQCAtMTIzMSw2ICsxMjMxLDEwIEBAIFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmdRdWlja0xvb2tQcmV2aWV3OgogICBkZWZhdWx0VmFsdWU6IGZhbHNlCiAgIHR5cGU6IGJvb2wK
IAorU2VydmljZVdvcmtlclNob3J0VGltZW91dDoKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICB0
eXBlOiBib29sCisKICMgRm9yIGV4cGVyaW1lbnRhbCBmZWF0dXJlczoKICMgVGhlIHR5cGUgc2hv
dWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3ZpZGUgYSBodW1hblJlYWRhYmxlTmFtZSBh
bmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBhbGwgZXhwZXJpbWVudGFsIGZlYXR1cmVz
LiBUaGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDcxYTZlZDIxNmM3NjM3MzIzNWNlY2E3OWVhZDgxODNkMDA5Mjg3ZmMuLmNjNmUx
MzBiNDVkMzY0NjA3NWU0MTIwYmIwMzQzN2U1ZmRiMjE5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC0yMTc4LDMgKzIxNzgsMTMg
QEAgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UmVtb3RlUGxheWJhY2tFbmFibGVkKFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wKIHsKICAgICBXZWJLaXQ6OnRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldFJlbW90ZVBsYXliYWNrRW5hYmxlZChlbmFibGVkKTsKIH0KKworYm9vbCBX
S1ByZWZlcmVuY2VzR2V0U2VydmljZVdvcmtlclNob3J0VGltZW91dChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQoKTsKK30KKwordm9pZCBXS1ByZWZlcmVu
Y2VzU2V0U2VydmljZVdvcmtlclNob3J0VGltZW91dChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgV2ViS2l0Ojp0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5zZXRTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0KGVuYWJsZWQpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZi5oCmluZGV4IDA4ZTE4
MmMyNTgwMmVlMjAxZmQ2ZGU3NTE3MGU3YjE3MWNkNjA5NTEuLjRlMmE5MzMzZmIzYzEzM2FmMjA0
OGIwY2M1N2MyYTRjMGJjZGJmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUmVmLmgKQEAgLTM0Miw2ICszNDIsMTAgQEAgV0tfRVhQT1JUIGJv
b2wgV0tQcmVmZXJlbmNlc0dldENhcHR1cmVWaWRlb0luVUlQcm9jZXNzRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHAKIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRSZW1vdGVQbGF5YmFj
a0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiBXS19FWFBPUlQgdm9p
ZCBXS1ByZWZlcmVuY2VzU2V0UmVtb3RlUGxheWJhY2tFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNlLgor
V0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0U2VydmljZVdvcmtlclNob3J0VGltZW91dChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOGUzM2RmYmU5NjcyYmRlN2MxNzM5YmQxODRiZTgx
ZWU3YTM0NjVkNi4uNmFmNmZmYjY4NzVjNDk5NjRkMGIxZGYzYTI3MGEyMzM4Y2FiZGY0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uY3BwCkBAIC0yNDIsNiArMjQyLDExIEBAIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpCiAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3lu
Y1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQgeyBpZGVudGlmaWVyIH0sIE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50OjpSZXBseSgp
KTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmlzU2VydmljZVdvcmtlclJ1bm5p
bmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6SXNTZXJ2aWNlV29ya2VyUnVubmluZyB7IGlkZW50
aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgbV9pc1Rocm90dGxlYWJsZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oCmluZGV4IDQzOTkxMGY1NDYyODg2NzMxZDllZWRmY2FkZGMyNzgzZWYzZTg4ZmIuLjlk
YmZiYWJmNzY4M2VhOWFmYWZiMzMyMzQ4NTQ4N2YxZTUyZGM5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CkBAIC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXREb2N1bWVudElzQ29udHJv
bGxlZChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAg
ICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRv
cE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIGlzU2VydmljZVdvcmtlclJ1bm5pbmcoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFs
OwogCiAgICAgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgZmluYWw7CiAgICAgdm9pZCBzdG9yZVJl
Z2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggZWNmN2EzYmYx
YmZhODkzMzUxMWYwM2Y3MTM3MGU4NWJjNzI1MTY4ZC4uZTA3YmU0NDM5NjNkMjM0ZTgyODkzOGVi
ZWY3MGY3Y2YzNGEzZWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApA
QCAtMTI2LDYgKzEyNiw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTCiAgICAgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWN1cmVDb250ZXh0Q2hlY2tzRW5h
YmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNlY3VyZUNv
bnRleHRDaGVja3NFbmFibGVkS2V5KCkpKTsKIAogICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
ID0gc3RhdGljX2Nhc3Q8U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4oc3Rv
cmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeUtleSgpKSk7CisgICAgc2V0VXNlU2hvcnRUaW1lb3V0KHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZVdvcmtlclNob3J0VGltZW91dEtleSgp
KSk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2
aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYg
dXNlckFnZW50KQpAQCAtMzgwLDYgKzM4MSwxMSBAQCBib29sIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjppc1Rocm90dGxlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZhaWxI
ZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZhaWxIZWFydEJlYXRDaGVjayB7
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAppbmRleCAyOTczNTFmMmI4NmI4MmQ4NDNhMGVlYWMxMTQwMTA2YzZlMjI2
YjQ5Li5lMDA1Y2QyNGM2NmZjMjgyYzlhY2Q5OWVkODcyMjI3YTk5OGQ4MzBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNraXBXYWl0aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBGdW5jdGlv
bjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsKICAgICBib29sIGlz
VGhyb3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hl
Y2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgLy8gSVBD
IG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWQoT3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNDhmNDhmYjQyOWI1ZTlmY2Fi
MWY5NDI3ZmM1ZDE5NTI2Y2I2MzBjLi44NTdmNzczNzRjZTdmY2UxNTE5NDgzOTA0YmQ0ZTY2NjI0
MTY5ZjIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTItMDIgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIGRvZXNuJ3QgdGVybWluYXRlIGFmdGVy
IGEgcGVyaW9kIG9mIHRpbWUgd2hlbiB0aHJlYWQgYmxvY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjk5MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTYyOTg1OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMp
OgorICAgICAgICBFbmFibGUgc21hbGwgdGltZW91dCB2YWx1ZXMuCisKIDIwMTktMTEtMzAgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIHRlc3QyNjIt
cnVubmVyIHNob3VsZCBkdW1wIFlBTUwgd2l0aCBjb3JyZWN0IGVuY29kaW5nCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGYyMWU4OWJlNzdmNjAxODYzZTEx
YWVhNzY1ZDYxNDg2OTFkY2UwOGUuLjk0NDQ3ZjVmZmQ3MjBiNzc5ZjhlOWIzNmVkYmY5ZTcwYjFm
ZTg1NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05
MjUsNiArOTI1LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29u
c2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW8KICAgICBXS1ByZWZlcmVuY2Vz
U2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJlZmVyZW5jZXMsIGZhbHNlKTsK
ICAgICBXS1ByZWZlcmVuY2VzU2V0QXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJl
ZmVyZW5jZXMsIGZhbHNlKTsKIAorICAgIFdLUHJlZmVyZW5jZXNTZXRTZXJ2aWNlV29ya2VyU2hv
cnRUaW1lb3V0KHByZWZlcmVuY2VzLCB0cnVlKTsKKwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJl
bmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGVlYThhNjNlZTRjOTAyMDhi
YzU2M2RiYWU3ZjJlNjMyMTE0MjQ2NS4uN2IwYjIyOGU4MmQ3NGVlMWVhZjE0MTg0OWVhNWMzZmUy
ZWZiMWFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEyLTAyICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBkb2Vzbid0IHRl
cm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2NraW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5OTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy9yb3V0aW5lcy5qczoKKyAgICAgICAgKGFzeW5jLndhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25n
ZXJSdW5uaW5nKToKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0
aXZhdGUuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLWZldGNoLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
d29ya2VyLmpzOiBBZGRlZC4KKwogMjAxOS0xMS0zMCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hOjptX3dyaXRlQ291bnQgd2hlbiBzYW1wbGVSYXRlIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVz
LmpzCmluZGV4IGRmMjM5MjU1ODQyMjIwNmZhZDYxN2E1ZWVjN2NjNTk2ZWQ0YjQxNTIuLmM2ZGI4
MmNiZTZmZmM1NWQxMDUyNDk1NWEwYTFhOTY0MzI1OTFhNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5q
cwpAQCAtMjcsMyArMjcsMTcgQEAgZnVuY3Rpb24gd2FpdEZvclN0YXRlKHdvcmtlciwgc3RhdGUp
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQorCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yU2Vydmlj
ZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpCit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoInJlcXVpcmVzIGludGVybmFscyIp
OworCisgICAgbGV0IGNvdW50ID0gMTAwOworICAgIHdoaWxlICgtLWNvdW50ID4gMCAmJiBhd2Fp
dCBpbnRlcm5hbHMuaXNTZXJ2aWNlV29ya2VyUnVubmluZyh3b3JrZXIpKSB7CisgICAgICAgIHdv
cmtlci5wb3N0TWVzc2FnZSgidGVzdCIpOworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKTsKKyAgICB9CisgICAgaWYgKGNvdW50ID09
PSAwKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoInNlcnZpY2Ugd29ya2VyIGlzIHN0
aWxsIHJ1bm5pbmciKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ODBh
OWNmM2Q5MjJmM2JmNWIyNjAwNDYzMjBhNTA2NTYzZGE4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5p
bmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFNw
aW4gaW4gYWN0aXZhdGUgCitQQVNTIFNwaW4gYWZ0ZXIgYWN0aXZhdGUgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1hY3RpdmF0ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0dHBzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmU3N2M0YmU5ZDIyOGQ3YjUwMGMxNmE5ZWQ3NTczYTcwZmYzMDk2MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAg
IGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lz
dGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4t
YWN0aXZhdGUiIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5n
OworCisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0
aXZhdGluZyIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5u
aW5nKHdvcmtlcik7Cit9LCAiU3BpbiBpbiBhY3RpdmF0ZSIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpz
IiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLWFjdGl2YXRlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIg
PSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZSh3b3Jr
ZXIsICJhY3RpdmF0ZWQiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9u
Z2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgYWN0aXZhdGUiKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAzOWYwMjFi
NjdiMWIyZDY5ZTYyZDMyOTA1MjRmNGMzMzUwYzFkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1m
ZXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBTcGluIGlu
IGZldGNoIAorUEFTUyBTcGluIGFmdGVyIGZldGNoIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2gu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNTIzZWM1YzVj
NmQ5MjIwZWIxOWNmNzM4N2JiMzkxZGU1MDVmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0
Y2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24g
PSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXIt
c3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWZldGNoIiB9KTsKKyAgICBjb25z
dCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JT
dGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgd2l0aElm
cmFtZSgic3Bpbi1mZXRjaCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9M
b25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBpbiBmZXRjaCIpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29y
a2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLWZldGNoIiB9KTsKKyAgICBjb25zdCB3b3Jr
ZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShy
ZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgd2l0aElmcmFtZSgi
c3Bpbi1hZnRlci1mZXRjaCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9M
b25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRlciBmZXRjaCIpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctaW5zdGFsbC5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctaW5zdGFsbC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhjMTgy
Yzg0YTIxZDA3YmZmZjFkMzQzZjhlZjk3OTQwOGI2YjUxOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy1pbnN0YWxsLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBTcGlu
IGF0IHJ1bm5pbmcgIAorUEFTUyBTcGluIGluIGluc3RhbGwgCitQQVNTIFNwaW4gYWZ0ZXIgaW5z
dGFsbCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxs
Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVmYzY3NjgwNTQyM2NkYzY1ZjM0MDRjNGI2YjE5ZmNk
ZjJiNzEwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLmh0bWwKQEAgLTAs
MCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVy
cm9yLCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bp
bm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLXJ1biIgfSkpOworfSwgIlNwaW4gYXQg
cnVubmluZyAiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qg
cmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1pbnN0YWxs
IiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBh
d2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJyZWR1bmRhbnQiKTsK
K30sICJTcGluIGluIGluc3RhbGwiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAi
c3Bpbi1hZnRlci1pbnN0YWxsIiB9KTsKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJO
b0xvbmdlclJ1bm5pbmcocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcpOworfSwgIlNwaW4gYWZ0ZXIg
aW5zdGFsbCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
bWVzc2FnZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTFhNDU1ODFiNDk2ZDJjZDZhYmM3ZjIxMDg0YTA5NTM5MzFlMTcyNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworUEFTUyBTcGluIGluIG1lc3NhZ2UgCitQQVNTIFNwaW4gYWZ0ZXIgbWVzc2Fn
ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0
dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I4ZDU4OTk1NDM5MzNjMjk0NTM2ZmIwNjBkNzBmNzcyOTFm
NGE3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSwyOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0
ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsg
c2NvcGUgOiAic3Bpbi1tZXNzYWdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRp
b24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5z
dGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2Vy
Tm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBpbiBtZXNzYWdlIik7CisKK3Byb21p
c2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0ZXItbWVzc2FnZSIgfSk7CisgICAgY29u
c3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9y
U3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIHJldHVy
biB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4g
YWZ0ZXIgbWVzc2FnZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWY4Mzc5MWI3OTdl
YjgxZWMwMjQzYTgxNzMxNzgzOGIyNDJlYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtl
ci5qcwpAQCAtMCwwICsxLDQxIEBACitpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVk
ZXMoInNwaW4tcnVuIikpCisgICAgd2hpbGUodHJ1ZSkgeyB9OworCitmdW5jdGlvbiBpbnN0YWxs
VGVzdChldmVudCkKK3sKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMo
InNwaW4taW5zdGFsbCIpKQorICAgICAgICB3aGlsZSh0cnVlKSB7IH07CisgICAgaWYgKHNlbGYu
cmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFmdGVyLWluc3RhbGwiKSkKKyAgICAg
ICAgc2VsZi5zZXRUaW1lb3V0KCgpID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKK30KKwor
ZnVuY3Rpb24gYWN0aXZhdGVUZXN0KGV2ZW50KQoreworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlv
bi5zY29wZS5pbmNsdWRlcygic3Bpbi1hY3RpdmF0ZSIpKQorICAgICAgICB3aGlsZSh0cnVlKSB7
IH07CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFmdGVy
LWFjdGl2YXRlIikpCisgICAgICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUp
IHsgfTsgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2VUZXN0KGV2ZW50KQoreworICAgIGlm
IChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1tZXNzYWdlIikpCisgICAg
ICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5j
bHVkZXMoInNwaW4tYWZ0ZXItbWVzc2FnZSIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkg
PT4geyB3aGlsZSh0cnVlKSB7IH07IH0sIDApOworfQorCitmdW5jdGlvbiBmZXRjaFRlc3QoZXZl
bnQpCit7CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWZl
dGNoIikpCisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRp
b24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItZmV0Y2giKSkKKyAgICAgICAgc2VsZi5zZXRU
aW1lb3V0KCgpID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKKyAgICBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UoIm9rIikpOworfQorCisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigi
aW5zdGFsbCIsIGluc3RhbGxUZXN0KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigiYWN0aXZhdGUi
LCBhY3RpdmF0ZVRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbWVzc2Fn
ZVRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGZldGNoVGVzdCk7CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L01FVEEueW1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9NRVRBLnltbAppbmRleCA4Zjk4OGY5OWE4MmUwOTkxYzIwY2I4MTZiZTYzNzhhOTczMDI4
NzMzLi43Y2MyMmEyOGMyMGMwMWYyYzYwMmI2Yjc5ODE0ZmM2ODQ0MDU0MzA2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEu
eW1sCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvTUVUQS55bWwKQEAgLTEsMyArMSw0IEBACiBzdWdnZXN0ZWRfcmV2aWV3ZXJzOgogICAtIGpn
cmFoYW0KICAgLSBnc25lZGRlcnMKKyAgLSBqdWdnbGlubWlrZQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9hcHB2ZXlvci55bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2FwcHZl
eW9yLnltbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBjZWRkNWM3OGZiYmViZThk
YzA2OWMyZmU1MWRmNGQ5ZDU5OWY5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2FwcHZleW9yLnltbAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLWVudmly
b25tZW50OgotICBnbG9iYWw6Ci0gICAgSFlQT1RIRVNJU19QUk9GSUxFOiBjaQotICBtYXRyaXg6
Ci0gICAgLSBQWVRIT046ICdDOlxcUHl0aG9uMjcnCi0gICAgLSBQWVRIT046ICdDOlxcUHl0aG9u
MzUnCi0gICAgLSBQWVRIT046ICdDOlxcUHl0aG9uMzYnCi0KLSMgTmVlZGVkIHRvIG1ha2UgcHku
dGVzdCBiZWxpZXZlIG91ciB0b3AgbGV2ZWwgY2FuIGJlIGltcG9ydGVkICh3ZQotIyBvdGhlcndp
c2UgZW5kIHVwIGluIGEgd3B0LXRvb2xzIGRpcmVjdG9yeSwgYW5kIG9mIGNvdXJzZSB5b3UgY2Fu
bm90Ci0jIGltcG9ydCBhIG5hbWUgaW5jbHVkaW5nIGEgaHlwaGVuIGluIFB5dGhvbiwgc28gaXQg
aWdub3JlcyB0aGUgZmFjdAotIyB3ZSBoYXZlIGEgX19pbml0X18ucHkgYXQgdGhlIHRvcCBsZXZl
bCkuCi1jbG9uZV9mb2xkZXI6ICdDOlxwcm9qZWN0c1x3cHR0b29scycKLQotaW5pdDoKLSAgLSAn
Z2l0IGNvbmZpZyAtLWdsb2JhbCBjb3JlLmF1dG9jcmxmIHRydWUnCi0KLWluc3RhbGw6Ci0gIC0g
J3JtIC5naXRcaW5kZXgnCi0gIC0gJ2dpdCByZXNldCAtLWhhcmQnCi0gIC0gJ1NFVCBQQVRIPSVQ
WVRIT04lOyVQWVRIT04lXFxTY3JpcHRzOyVQQVRIJScKLSAgLSAnZ2l0IHN1Ym1vZHVsZSB1cGRh
dGUgLS1pbml0IC0tcmVjdXJzaXZlJwotICAtICdweXRob24uZXhlIC1tIHBpcCBpbnN0YWxsIHRv
eCBjb2RlY292JwotCi1idWlsZDogb2ZmCi0KLXRlc3Rfc2NyaXB0OgotICAtICd0b3ggLWUgcHkn
Ci0KLW9uX3N1Y2Nlc3M6Ci0gIC0gJ2NvdmVyYWdlIGNvbWJpbmUnCi0gIC0gJ2NvZGVjb3YnCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL1JFQURNRS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2VydHMvUkVBRE1FLm1kCmluZGV4IGY1YWU3NDEzYWZlYzNiNjliZTk1
N2RhMjRjNjYwYWJkOTY5M2M2N2UuLmZkNzVjMjJkZGZmZWQyZTcwMGY1ZjQ0YzJiNTUyY2MzNTI2
ZDQ2MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvY2VydHMvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvUkVBRE1FLm1kCkBAIC0xLDcgKzEsODEg
QEAKLVRvIGVuYWJsZSBodHRwczovL3dlYi1wbGF0Zm9ybS50ZXN0Ojg0NDMvLCBhZGQgY2FjZXJ0
LnBlbSB0byB5b3VyIGJyb3dzZXIgYXMgQ2VydGlmaWNhdGUgQXV0aG9yaXR5LgorIyBXUFQgVGVz
dCBDZXJ0aWZpY2F0ZXMKKworVGhlIHdlYi1wbGF0Zm9ybS10ZXN0cyBwcm9qZWN0IG1haW50YWlu
cyBhIHNldCBvZiBTU0wgY2VydGlmaWNhdGVzIHRvIGFsbG93Citjb250cmlidXRvcnMgdG8gZXhl
Y3V0ZSB0ZXN0cyByZXF1aXJpbmcgSFRUUFMgbG9jYWxseS4KKworIyMgVHJ1c3RpbmcgUm9vdCBD
QQorCitUbyBwcmV2ZW50IGJyb3dzZXIgU1NMIHdhcm5pbmdzIHdoZW4gcnVubmluZyBIVFRQUyB0
ZXN0cyBsb2NhbGx5LCB0aGUKK3dlYi1wbGF0Zm9ybS10ZXN0cyBSb290IENBIGZpbGUgYGNhY2Vy
dC5wZW1gIGluIHRoZSBgdG9vbHMvY2VydHMvYCBkaXJlY3RvcnkKK211c3QgYmUgYWRkZWQgYXMg
YSB0cnVzdGVkIGNlcnRpZmljYXRlIGluIHlvdXIgT1MvYnJvd3Nlci4KIAogRm9yIEZpcmVmb3gs
IGdvIHRvIGFib3V0OnByZWZlcmVuY2VzIGFuZCBzZWFyY2ggZm9yICJjZXJ0aWZpY2F0ZXMiLgog
Ci1Gb3IgYnJvd3NlcnMgdGhhdCB1c2UgdGhlIENlcnRpZmljYXRlIEF1dGhvcml0aWVzIG9mIHRo
ZSB1bmRlcmx5aW5nIE9TLCBzdWNoIGFzIENocm9tZSBhbmQgU2FmYXJpLAoteW91IG5lZWQgdG8g
YWRqdXN0IHRoZSBPUy4gRm9yIG1hY09TLCBnbyB0byBLZXljaGFpbiBBY2Nlc3MgYW5kIGFkZCB0
aGUgY2VydGlmaWNhdGUgdW5kZXIKLSoqbG9naW4qKi4KK0ZvciBicm93c2VycyB0aGF0IHVzZSB0
aGUgQ2VydGlmaWNhdGUgQXV0aG9yaXRpZXMgb2YgdGhlIHVuZGVybHlpbmcgT1MsIHN1Y2ggYXMK
K0Nocm9tZSBhbmQgU2FmYXJpLCB5b3UgbmVlZCB0byBhZGp1c3QgdGhlIE9TLiBGb3IgbWFjT1Ms
IGdvIHRvIEtleWNoYWluIEFjY2VzcworYW5kIGFkZCB0aGUgY2VydGlmaWNhdGUgdW5kZXIgKips
b2dpbioqLgorCisqKk5PVEUqKjogVGhlIENBIHNob3VsZCBub3QgYmUgaW5zdGFsbGVkIGluIGFu
eSBicm93c2VyIHByb2ZpbGUgdXNlZAorb3V0c2lkZSBvZiB0ZXN0cywgc2luY2UgaXQgbWF5IGJl
IHVzZWQgdG8gZ2VuZXJhdGUgZmFrZQorY2VydGlmaWNhdGVzLiBGb3IgYnJvd3NlcnMgdGhhdCB1
c2UgdGhlIE9TIGNlcnRpZmljYXRlIHN0b3JlLCB0ZXN0cworc2hvdWxkIHRoZXJlZm9yZSBub3Qg
YmUgcnVuIG1hbnVhbGx5IG91dHNpZGUgYSBkZWRpY2F0ZWQgT1MgaW5zdGFuY2UKKyhlLmcuIGEg
Vk0pLiBUbyBhdm9pZCB0aGlzIHByb2JsZW0gd2hlbiBydW5uaW5nIHRlc3RzIGluIENocm9tZSBv
cgorRmlyZWZveCwgdXNlIGB3cHQgcnVuYCwgd2hpY2ggZGlzYWJsZXMgY2VydGlmaWNhdGUgY2hl
Y2tzIGFuZCB0aGVyZWZvcmUKK2RvZXNuJ3QgcmVxdWlyZSB0aGUgcm9vdCBDQSB0byBiZSB0cnVz
dGVkLgorCisjIyBSZWdlbmVyYXRpbmcgY2VydGlmaWNhdGVzCisKK0lmIHlvdSB3aXNoIHRvIGdl
bmVyYXRlIG5ldyBjZXJ0aWZpY2F0ZXMgZm9yIGFueSByZWFzb24sIGl0J3MgcG9zc2libGUgdG8g
dXNlCitPcGVuU1NMIHdoZW4gc3RhcnRpbmcgdGhlIHNlcnZlciwgb3Igc3RhcnRpbmcgYSB0ZXN0
IHJ1biwgYnkgcHJvdmlkaW5nIHRoZQorYC0tc3NsLXR5cGU9b3BlbnNzbGAgYXJndW1lbnQgdG8g
dGhlIGB3cHQgc2VydmVgIG9yIGB3cHQgcnVuYCBjb21tYW5kcy4KKworSWYgeW91IGluc3RhbGxl
ZCBPcGVuU1NMIGluIHN1Y2ggYSB3YXkgdGhhdCBydW5uaW5nIGBvcGVuc3NsYCBhdCBhCitjb21t
YW5kIGxpbmUgZG9lc24ndCB3b3JrLCB5b3UgYWxzbyBuZWVkIHRvIGFkanVzdCB0aGUgcGF0aCB0
byB0aGUKK09wZW5TU0wgYmluYXJ5LiBUaGlzIGNhbiBiZSBkb25lIGJ5IGFkZGluZyBhIHNlY3Rp
b24gdG8gYGNvbmZpZy5qc29uYAorbGlrZToKKworYGBgCisic3NsIjogeyJvcGVuc3NsIjogeyJi
aW5hcnkiOiAiL3BhdGgvdG8vb3BlbnNzbCJ9fQorYGBgCisKK09uIFdpbmRvd3MgdXNpbmcgT3Bl
blNTTCB0eXBpY2FsbHkgcmVxdWlyZXMgaW5zdGFsbGluZyBhbiBPcGVuU1NMIGRpc3RyaWJ1dGlv
bi4KK1tTaGluaW5nIExpZ2h0XShodHRwczovL3NscHJvd2ViLmNvbS9wcm9kdWN0cy9XaW4zMk9w
ZW5TU0wuaHRtbCkKK3Byb3ZpZGUgYSBjb252ZW5pZW50IGluc3RhbGxlciB0aGF0IGlzIGtub3du
IHRvIHdvcmssIGJ1dCByZXF1aXJlcyBhCitsaXR0bGUgZXh0cmEgc2V0dXAsIGkuZS46CisKK1J1
biB0aGUgaW5zdGFsbGVyIGZvciBXaW4zMl9PcGVuU1NMX3YxLjEuMGIgKDMwTUIpLiBEdXJpbmcg
aW5zdGFsbGF0aW9uLAorY2hhbmdlIHRoZSBkZWZhdWx0IGxvY2F0aW9uIGZvciB3aGVyZSB0byBD
b3B5IE9wZW5TU0wgRGxscyBmcm9tIHRoZQorU3lzdGVtIGRpcmVjdG9yeSB0byB0aGUgL2JpbiBk
aXJlY3RvcnkuCisKK0FmdGVyIGluc3RhbGxhdGlvbiwgZW5zdXJlIHRoYXQgdGhlIHBhdGggdG8g
T3BlblNTTCAodHlwaWNhbGx5LAordGhpcyB3aWxsIGJlIGBDOlxPcGVuU1NMLVdpbjMyXGJpbmAp
IGlzIGluIHlvdXIgYCVQYXRoJWAKK1tFbnZpcm9ubWVudCBWYXJpYWJsZV0oaHR0cDovL3d3dy5j
b21wdXRlcmhvcGUuY29tL2lzc3Vlcy9jaDAwMDU0OS5odG0pLgorSWYgeW91IGZvcmdldCB0byBk
byB0aGlzIHBhcnQsIHlvdSB3aWxsIG1vc3QgbGlrZWx5IHNlZSBhICdGaWxlIE5vdCBGb3VuZCcK
K2Vycm9yIHdoZW4geW91IHN0YXJ0IHdwdHNlcnZlLgorCitGaW5hbGx5LCBzZXQgdGhlIHBhdGgg
dmFsdWUgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGZpbGUgdG8gdGhlCitkZWZhdWx0IE9w
ZW5TU0wgY29uZmlndXJhdGlvbiBmaWxlIGxvY2F0aW9uLiBUbyBkbyB0aGlzLCBjcmVhdGUgYSBm
aWxlCitjYWxsZWQgYGNvbmZpZy5qc29uYC4gIFRoZW4gYWRkIHRoZSBPcGVuU1NMIGNvbmZpZ3Vy
YXRpb24gYmVsb3csCitlbnN1cmluZyB0aGF0IHRoZSBrZXkgYHNzbC9vcGVuc3NsL2Jhc2VfY29u
Zl9wYXRoYCBoYXMgYSB2YWx1ZSB0aGF0IGlzCit0aGUgcGF0aCB0byB0aGUgT3BlblNTTCBjb25m
aWcgZmlsZSAodHlwaWNhbGx5IHRoaXMgd2lsbCBiZQorYEM6XFxPcGVuU1NMLVdpbjMyXFxiaW5c
XG9wZW5zc2wuY2ZnYCk6CisKK2BgYAoreworICAic3NsIjogeworICAgICJ0eXBlIjogIm9wZW5z
c2wiLAorICAgICJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiOiBmYWxzZSwKKyAgICAib3BlbnNzbCI6
IHsKKyAgICAgICJvcGVuc3NsX2JpbmFyeSI6ICJvcGVuc3NsIiwKKyAgICAgICJiYXNlX3BhdGg6
ICJfY2VydHMiLAorICAgICAgImZvcmNlX3JlZ2VuZXJhdGUiOiBmYWxzZSwKKyAgICAgICJiYXNl
X2NvbmZfcGF0aCI6ICJDOlxcT3BlblNTTC1XaW4zMlxcYmluXFxvcGVuc3NsLmNmZyIKKyAgICB9
LAorICB9LAorfQorYGBgCisKKyMjIyBSZWdlbmVyYXRpbmcgdGhlIHByZWdlbmVyYXRlZCBjZXJ0
aWZpY2F0ZXMKKworRnJvbSB0aGUgcm9vdCwgcnVuIGAuL3dwdCBzZXJ2ZSAtLWNvbmZpZyB0b29s
cy9jZXJ0cy9jb25maWcuanNvbmAgYW5kIHRlcm1pbmF0ZQoraXQgYWZ0ZXIgaXQgaGFzIHN0YXJ0
ZWQgdXAuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkKaW5kZXggNThiNWZmNzU2
ODRhMzA3NmFiZDM3ZjEzNWNmMjRhNjU0YTE3NTkyOS4uMWExMjFkZmFjOTUyZGZlODg4NmIxYjVl
NDFlN2M3MzExZDVmMGIzMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQua2V5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvY2FjZXJ0LmtleQpA
QCAtMSwzMCArMSwzMCBAQAogLS0tLS1CRUdJTiBFTkNSWVBURUQgUFJJVkFURSBLRVktLS0tLQot
TUlJRkRqQkFCZ2txaGtpRzl3MEJCUTB3TXpBYkJna3Foa2lHOXcwQkJRd3dEZ1FJYjlFUzdoNllH
QmNDQWdnQQotTUJRR0NDcUdTSWIzRFFNSEJBaTJaVkxncTFYdmFnU0NCTWpBbUdFVnZqd1h2RjAw
dmV1UW1Kc21jalZIQi9xUAotVnFTWGpDUTk0b3JaYjg5VWZGblBPOXpYZHZMV3hyd2I1V1A2YmJR
ditTaDRodEV4WENENVhaaTFBeldOQ3liZQotZGEwdnZRR2dqZHpVaDJmQ3JHNEs3SjB3MjBsclln
dzNIVlNqL1d0bWRiZFpGZG9YK0JnWHJ4Y3FrRTNNNW9wWgotM1VEM3lJUWVYU3hVa2gzaXY2enpa
YVd1anhqREkySnB3eFJtTVZicnI4T2VCcktKc3FCMkRuS21xK2VtbXZFRgotaVhUTjNXdy9BajZH
SXFmUFo4anBWZHdjVk41UXBlSEFoN2IybHN6dDdHRU9HY0JodXRQcTRBcXk4UElpRFI4MAotc1VZ
STdWOE9YbStZNDVEbmZrdnNvZ1pFaWZPaVVyUTJVK2FHRHUrWnQ4ODY2MXdWempxK3ZvSmx6OEVh
SVBDRQotQi9OUzJTZ05xSTIvRHJqRUVlY242aGpnSFdJVUJ3T2ZlTm9TaTFUcmk2S1pGeXhHMjZM
RS9WOENkNTB5b2R4OQotcEJnRnhkQ2JtWUxlUmNWZVhXMmJ1MFpNalBkZFJsUjVNSGZya001WkF6
ZTduUnhvaXlXbkIvVThwUGYrYlF2eAotSzRQOUtjd0NPZUhpZ2thQ1laS3E3bm1aeUV5NGttODl6
SXVnVC9ZV2hNV3lWd3lsVHBhZ2FpaUp3WUxqdWc4bgotQ2JGWldBa09SQklsMmcvWUN1VEJVSnRD
MklXWDhrdytuWVZ3cUJzenBaeUM2bmJoYTJVbWhRRGZNQW93UUE1dgotbjFMblY4STZmN3U2SGlk
YkI4V1gyVVpvaDAzQTRiZUNCeitkcTJWYVVxdUxUTDRLUVRJeis2cnc3bkV5c3JuSAotVEliOFNs
d3NZQWx6end5eU05ZFNXdDdpUWVOam1IN3pMME1vek1zM0xLSElyc1dpN1paaDhCVVluVDJ2S2RO
VgotMlpMT01jUjB0WVZtVlo4dVlrUjlrbnkvZmJaY0tONTR4U2NvaEEyVVgyNjFXK3NXaUVnTitS
YUJzUTc5cEZnaQotdllsZGZqYUdOU3ZmdFhhNTkweG4ydGxTNi9zdUI1TXhpVzVnM1B1Qmc1WHRW
Wjk1bDBmMW4zNzZYaDQxc0p2OAotWUhyQ3RGSE9sU3BESlVMR2lYVmgvd1hCbVM3cUo4RGhuVVVH
Njk5RWRsc0ZmNlFnMjJXQjNBWlJ2RUpkWUM0egotUDhXK2paMTVOVERiSGczSHY3L0NGWVZ6Ylh2
MncwamtpcVFnREYvd2M2dC9FZExEKzJoemNOK25KR2p0eFpibgoteGpiWGNnOThDVU1VK2RjL2FE
NE40NUs5ZTlyUGczK2laTHd2c1J2d3grTXN6bWd4eFB2MDVwTnlSTzdSVms4cgotZ2t5eXA5L0NK
Rm1lKzRuRktVYzBkVXkyeU5YWnRrbFRYMFhLbS9ZTktpbjZ1VU1sSUFySWE1NENmdnQ5UXNsVgot
aUQrU3hVMVpIbXp3S1Q4Mis1WmVJUkxOV3ZGVi85RTRuRCtCVGFnSzJGZHduc3UxUzJrN0l0RDls
Sy9jQlBHUwotMHR6MUhXdjRBdWozd01QWmtscDNTUWx1T2w2ZUFJVnFxSTlHYVgvZDQyRGN0QlFX
TFRhMjdZaWJXeU5JY3c3bwotM044R0RSRU1hd1RCZERSd2xaM29UK3lpR0xYMWM4ZHMybzAvNElj
SmxPa0RveFhFcm1kbFpvOW9WZTZ6NFI3ZwotNjJ5UjUzYXRWVExvVW5BanhIWHgwYkppeWF5djlZ
M3dqT0V2dWh1cWRkOUYrSE9oVHRBSHIvQkpRTmhFayt6OAotNTMxQ1pUSmpiMXAxMVBiT3RIR1Yy
SWVCMFM4Mm14a2tYUnlrRVhPYjg5WnBESE5SaU1pblRoUmtvQ211Ukk5cgotZFRpRVM5QjAyeU1Q
eEozc0xReUR4Q29TNW13ZmNBcUtUZUsreUN2VHZCeSt0NXR3NjNEYldsTXAvN0FoeTY1SwotcldN
SGR3cXdmb0IrWll3NXNZWmRQdnVCVkFUMDFJMkpiT3FYMzZSYWNRdWx0Rm5zMk9pbnhPSkhhMUhq
dFh5UwotY1BWRWtNYTdjaTNZbTlqNVJRTkxWc2dKZTdZSzlIaXhYNUhqUUZBb3dBSDJwWFo1cEtK
SUpZeFBJVUt0WmxzegotcWJNPQorTUlJRkh6QkpCZ2txaGtpRzl3MEJCUTB3UERBYkJna3Foa2lH
OXcwQkJRd3dEZ1FJbWluSFR6a1hocnNDQWdnQQorTUIwR0NXQ0dTQUZsQXdRQktnUVFYVndKY3FX
emU2QTNWWXVBUzBCUGd3U0NCTkNSdHZyb0I2cXJvUWxGNThIRQorNVNKSEYvalFSSlJ4ZjA1MWxy
cStqZlV4TTdrWnVjTk4rbXlWMnppTG9nYTZPUU01NzlEOHZ5OHRxa3JMcG5zVAorY1hrZ0h1d3RC
SkY0N3cxWUFQR0dBUmUzS3N2LzJDOXNVVmNQdm1uVnJ6U01YODZFc2VyZmZxTTN6ZndaMkgzUwor
anhURFN5SXZKVVUrNFhmeHJXZWdUaVFRUE5xRHlMZk81ZEJmYXRUMnp0WENtdTNCRmlwdWhHRnB3
d0NKaXJLcgorMXhiNlhQRXVUMFBDelROcGVTVVJwWEZLSE1ETWtjak9rTkFVeWdJRXcrTGc3ZXRW
Zkxjc2dCdXpFQTNSV3dmMworT01ZMW1UQkpsdng2elp4ZFg3YTBRbXhlclVEa0RTOVlZQUVHU0Zh
K0Z4NmNHVzVQeWVlZjl4dGxIeFpIaStwbQorVHhDd2N2SnlYcWVENGdXbTNzMWd3T2ppNVdtWHZv
MkVpcmN4ZlNLazhUVXdhcHhmQ1lRYk9qUUlQYUhuRUdvYQorQ1FoU0VnRFg1dWZ3c1hKOS9wU1A2
a2pXK3krZjBnbmhIVnVLSktzT0Jtamc2aXF3bnFFaHcrdU5GV0tLbC9NbworVEZUN0NyYXlKVHZv
KzlVZFFUSlY5TUJBc01VUVM3ZCtISDlrTk9Bbi9oZm1FenpHVUtWVFoweklkMGZLSDEzcAorVG5v
WWdNWWJtMlVybjBOWEJGTzhSdnpZM0twS3lSaE1jT0xLeGtQVlVqS1VBNUJ1QXY2cmN2TWZsSTZI
bjV3VQorcVBNK3VFQ1NnZE9uTmVJbWkxRmYrY1c4ZFRHR1JiK2loYStFbkFCb1gzd1I1T3Z6Z0NZ
SGVFTkpiMzJGVW9WcworSUQyVDVNWnRRTkFya2lzL3hXWjdKeVBibXNRbzJ3eWlGTGFzWDhXZ2gr
OE1nRnhvbHB2amxYMy9RZFRUSnFFYworcm9mVkdPUE9tZm9IbzNlWU5KT2xMYmFKVERJZThPcks0
OVBJZXUxZ204enFCMldZcW1GLzNBWXk0SUFJd1VZdQorcmJQd1VDOUh5Y2VSUFNZZVBNOVdmMXhN
MnByb0szbm1wNmFwZEhDUk5qYmQ0Njg5RUxtQjkwYjJhdzZORmlhbQorM3RhS1BtRkxiL3Z0Mll4
Z3FPdGFnUHJUbGMxUUxIQktyc25wZy9CaGNCanVwcVJLR0ZtWENKemlQSWFES3ZBcworanRnNEtE
bzhqTkl4bXdRQXdFVjQrYUgwaGhNdW14YTh5YVhvQy8zRzZKeEQyc2RvcmFPcCt2clR6alVNa0lv
YworeExxV2w4R0hWTEYwOWZaSjRTdEpmSVdJT21tcGljU3hXMXZESUNhWnVVK2lQd2xOT3pGN3Nl
UFJraXhiYXJIcgoraXFUbExHLy8rSHVxL245SVJ4aHptU091cjYzV01YRlJ5MHNLVzVXK3VROXhz
blY4U2Rqd1JtQUdMdG5aSHE0WQorTk9DUS8reU9SbDR5eGtQdlYwMUh5a0FsNENSdFBCR1IrNFpD
NU5LaHB5aEpidTZXY3F3aVh5QWVoVS9jUGdMKworaDhOd0VveVArT0hydkVZZHk0b2NCbkpxLzQz
Nld3emZXaXM4bklHNGJTbEQzRFNFZ0pGL1FVbXE0aS9FVXEvQQorRDZTZnpiRnBQR3RUajNLWjZE
OERQcndXRzY4T0NGc3FSVzlZRXZVSUs4SlQyNjVCTjNNekk1aTAvK2s0Q2RBZworYVNhaUM5N3Fn
N3FKYVZNOWI5RUhzY1VYUi9mZUZ4dk81UWtra1k1Q1RVM0J4YjBzMUk0UncyTVlvQWRNR3RiQQor
Nm1kem1SVllvUnY5Tk1kekw2ek9Ub1BVNm9PZzZtYmpIZ1pRZ05kN3c4R3RURlcrc2ZzbExPWFhD
OGVyemJIbAorQnlRSkdjRkd0S1RCVUQrN1ZIWmhwd003YlBPYnR6eUEycjBVYlMxUXgwSXpudnVi
ZEZWY1h5RTdkSWpXN2NBZworSWJCektlaUVSd3B1M3JNcTJiWVZXM0RBMzNWbHJUZnBqWHVqaEh2
MWlYMTVpNnFzV2Q3T3RadzZ4N1RjY0gxWgoramRtaDlYQjl4RHlkbnNzM3U5RHdHUkVNWUM5VGRQ
WlkvbnVpNmxnQ2pqT2hhVGF1bk11aWdGQk1XVUJrRGxJYgordWp1K0F0ditQU0JUOURtVHlUUUdo
UFpSSXc9PQogLS0tLS1FTkQgRU5DUllQVEVEIFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMv
Y2FjZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvY2FjZXJ0LnBlbQppbmRleCAxNTZkZTk3MTA1NGRiOTZmODY3NDkzMWI0M2E3
OTRjMTkzYmRmZjQ5Li5lMWI1YWRkNTRlNzk3ZGIxYzZjMWQzZWRhOTYxYWYzZTU0YmM3YTc3IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NlcnRzL2NhY2VydC5wZW0KKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy9jYWNlcnQucGVtCkBAIC0xLDgzICsxLDEyNSBAQAot
Q2VydGlmaWNhdGU6Ci0gICAgRGF0YToKLSAgICAgICAgVmVyc2lvbjogMyAoMHgyKQotICAgICAg
ICBTZXJpYWwgTnVtYmVyOiA3NTM1NjAgKDB4YjdmOTgpCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRo
bTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAgSXNzdWVyOiBDTj13ZWItcGxhdGZv
cm0tdGVzdHMKLSAgICAgICAgVmFsaWRpdHkKLSAgICAgICAgICAgIE5vdCBCZWZvcmU6IEp1bCAx
MyAxMjo1OToxMiAyMDE4IEdNVAotICAgICAgICAgICAgTm90IEFmdGVyIDogSnVsIDEwIDEyOjU5
OjEyIDIwMjggR01UCi0gICAgICAgIFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS10ZXN0cwotICAg
ICAgICBTdWJqZWN0IFB1YmxpYyBLZXkgSW5mbzoKLSAgICAgICAgICAgIFB1YmxpYyBLZXkgQWxn
b3JpdGhtOiByc2FFbmNyeXB0aW9uCi0gICAgICAgICAgICAgICAgUHVibGljLUtleTogKDIwNDgg
Yml0KQotICAgICAgICAgICAgICAgIE1vZHVsdXM6Ci0gICAgICAgICAgICAgICAgICAgIDAwOmQz
Ojk0OjEwOmI3OjcwOmNmOjFiOjJiOjFlOjdmOjZjOjIyOjRmOjE1OgotICAgICAgICAgICAgICAg
ICAgICBiZTpjOTo5NTowMzo0NTplMjo3YzoyNjo3ODpkMjo1YjozYzpiNTozYzo4NjoKLSAgICAg
ICAgICAgICAgICAgICAgYWM6YWI6YmE6ZTk6YzE6Mjg6OTE6ODM6YTc6Mjg6OTI6MjY6Nzk6MDA6
YzI6Ci0gICAgICAgICAgICAgICAgICAgIGJkOmU2OmVmOmJiOjZiOmQ3OmZhOjJlOjM5OmZhOjE2
OmM4OmU1OjI0OjhlOgotICAgICAgICAgICAgICAgICAgICA2ZTplOTpiMToxNTo4MzphYjo5ODo1
Njo5OTo0Mjo0OTo0ZDo1ZDoxNjozYToKLSAgICAgICAgICAgICAgICAgICAgMjg6ZmU6NGQ6MmU6
Mjk6MWE6M2M6Nzg6Nzg6MDk6YWE6NzM6MjY6NjI6YzI6Ci0gICAgICAgICAgICAgICAgICAgIGE1
OjJjOjQ4OjkyOjY1OjEyOjcwOjdlOjNmOjdlOmM3OmM0OmVhOjBhOmM4OgotICAgICAgICAgICAg
ICAgICAgICA2MDplZjo2YTpiMDo2NTpkYzpkYToxMDozMTpjOTo4ODozYTo1NjozNTpmZDoKLSAg
ICAgICAgICAgICAgICAgICAgODU6YmQ6MTE6YTQ6NTE6N2Q6N2Y6NzE6NWY6MTY6Mzg6NjQ6MDY6
Nzg6MjU6Ci0gICAgICAgICAgICAgICAgICAgIDNiOjE1OmUxOmE2OjE5OjJmOjdiOmZmOjkyOjEx
OmFkOjBlOjYwOjFhOmQ0OgotICAgICAgICAgICAgICAgICAgICA2MTo4ZTo0Njo0NTowMDo5Yjo3
YjpjNjoxZjo1YjowZTpiYjo5ZDo2YzpmZDoKLSAgICAgICAgICAgICAgICAgICAgN2E6Mjk6OTY6
ODI6MjU6M2Q6ZDU6MTk6ODA6Yjc6MzA6NmU6NjE6MmE6MWY6Ci0gICAgICAgICAgICAgICAgICAg
IGNiOjUwOmRjOmFjOmY0OmZmOjRiOjAyOjY3OjYwOjU4OjA0OjE3OmI2OjY5OgotICAgICAgICAg
ICAgICAgICAgICA5Mzo5MzpjODo5MjpmODphMDo1ZTpmMTo1NjpmZDplODoyNDoyMTpiZDpmNDoK
LSAgICAgICAgICAgICAgICAgICAgYmU6ZDQ6ZWU6MWY6ZGY6NmU6ZDM6NGQ6NTU6MWI6NTg6YzQ6
NjY6OWI6OTM6Ci0gICAgICAgICAgICAgICAgICAgIGI2OmIyOjEwOmU4OjBlOmZiOjZiOjkwOjRm
OmY5OjVmOjk5OjU4OjBhOmFhOgotICAgICAgICAgICAgICAgICAgICA4ZDo1ZjozOTozMzo3NTo4
Mzo0MTo0NTo3MTo1MzowYjpmMDo4MTo3NTpkYzoKLSAgICAgICAgICAgICAgICAgICAgNzM6NmQK
LSAgICAgICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCi0gICAgICAgIFg1MDl2
MyBleHRlbnNpb25zOgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKLSAg
ICAgICAgICAgICAgICBDQTpUUlVFCi0gICAgICAgICAgICBYNTA5djMgU3ViamVjdCBLZXkgSWRl
bnRpZmllcjogCi0gICAgICAgICAgICAgICAgNUI6REE6Qzg6QzE6MDk6RjM6NEQ6OTI6MzA6QkM6
RUY6NDM6RkI6MjY6OTM6MUU6QUU6MEQ6OUE6MEYKLSAgICAgICAgICAgIFg1MDl2MyBBdXRob3Jp
dHkgS2V5IElkZW50aWZpZXI6IAotICAgICAgICAgICAgICAgIGtleWlkOjVCOkRBOkM4OkMxOjA5
OkYzOjREOjkyOjMwOkJDOkVGOjQzOkZCOjI2OjkzOjFFOkFFOjBEOjlBOjBGCi0gICAgICAgICAg
ICAgICAgRGlyTmFtZTovQ049d2ViLXBsYXRmb3JtLXRlc3RzCi0gICAgICAgICAgICAgICAgc2Vy
aWFsOjBCOjdGOjk4Ci0KLSAgICAgICAgICAgIFg1MDl2MyBLZXkgVXNhZ2U6IAotICAgICAgICAg
ICAgICAgIENlcnRpZmljYXRlIFNpZ24KLSAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRlZCBLZXkg
VXNhZ2U6IAotICAgICAgICAgICAgICAgIFRMUyBXZWIgU2VydmVyIEF1dGhlbnRpY2F0aW9uCi0g
ICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0aFJTQUVuY3J5cHRpb24KLSAgICAgICAg
IDk3OmUzOmYwOmI5OjYzOjA3OmU1OmRlOmQ5OjFmOjdmOmRlOmJlOmY4OmU0Ojk4OmQ2OjI1Ogot
ICAgICAgICAgOTc6ZTk6ZDM6YWQ6N2M6NmQ6MzA6N2Q6MGQ6OGU6YzU6OWI6ZWY6ZWI6YTg6YzU6
NTk6YjI6Ci0gICAgICAgICAyYzo3MzowODo0NjoyMjphYjpmNzo2MTowMToxOTo5ZTowMDowYzo3
MjpiYzoyYTpiZDo4NjoKLSAgICAgICAgIDExOjFmOjNkOjgwOmFhOjE5OjU4OjZmOmNkOjA1OmI2
OjVhOjI3OmZmOjJlOjM5OjFhOjQ0OgotICAgICAgICAgMDg6YTI6ZTg6YTY6ZTI6MmM6MDM6NTI6
MmY6NjM6NmI6M2E6M2I6OTM6YzY6Yjg6NTM6Y2Q6Ci0gICAgICAgICBmNDplYzo2Mzo1YzoyNDo1
YTo2NTphNDplMzo5Mzo5ZTo5NjpmMDowMDpjZjo4MjpmYzpkYzoKLSAgICAgICAgIDI4OjE4Ojg2
OmYxOmEyOjdlOjc4OjgwOjlmOmY0OjExOmIxOjhlOmM4OjEwOmI1OjE4OjlkOgotICAgICAgICAg
ZmQ6OWU6OGE6Y2I6NmQ6OGU6MTU6MjI6M2I6MWY6MGQ6Nzk6NTM6YmQ6MmI6Zjc6ZDA6MDk6Ci0g
ICAgICAgICAyYTphNjphOTpmMTozZTo0YzpkMDphYTo4MTphZToyYjozNDpiMDo1MjoxNjpkMDo3
ODplMjoKLSAgICAgICAgIDI1OmMxOmUyOjkyOjQ3OjFiOjJmOmE2OmEyOjI5OjZmOjg3OjlhOjNj
OjVkOjQ0OmIwOjhmOgotICAgICAgICAgOTU6M2M6ZTc6YWQ6ZDE6ODM6MWM6Mzg6Yjc6M2Q6ODU6
MmI6Yjg6ZGM6NDU6ODE6YmE6NzE6Ci0gICAgICAgICBhNzoxYzo5Njo5YjpjMTozODozZTphOTph
NjpjNzozODo3MTo0ZDozNzo2ZTpjYTpiODplODoKLSAgICAgICAgIGFiOmNjOjA3OjRlOjIxOjQz
Ojg4OjIxOmMwOjQ5OjExOjllOmQ2OmM0OjEzOjJjOjU3Ojc1OgotICAgICAgICAgMWQ6OGU6NTQ6
MWY6NjM6OWE6NDY6MTk6NTI6NDA6YzU6MWU6MmM6Mzg6ZDI6Yjg6NjI6NDM6Ci0gICAgICAgICBh
NTo4NDpjODplNAogLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlEVXpDQ0FqdWdBd0lC
QWdJREMzK1lNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdOVkJBTU1FbmRsCi1ZaTF3YkdG
MFptOXliUzEwWlhOMGN6QWVGdzB4T0RBM01UTXhNalU1TVRKYUZ3MHlPREEzTVRBeE1qVTVNVEph
CitNSUlXNXpDQ0ZjK2dBd0lCQWdJREJiRkhNQTBHQ1NxR1NJYjNEUUVCQ3dVQU1CMHhHekFaQmdO
VkJBTU1FbmRsCitZaTF3YkdGMFptOXliUzEwWlhOMGN6QWVGdzB4T1RFd01UUXhNelE1TWpsYUZ3
MHlPVEV3TVRFeE16UTVNamxhCiBNQjB4R3pBWkJnTlZCQU1NRW5kbFlpMXdiR0YwWm05eWJTMTBa
WE4wY3pDQ0FTSXdEUVlKS29aSWh2Y05BUUVCCi1CUUFEZ2dFUEFEQ0NBUW9DZ2dFQkFOT1VFTGR3
enhzckhuOXNJazhWdnNtVkEwWGlmQ1o0MGxzOHRUeUdyS3U2Ci02Y0Vva1lPbktKSW1lUURDdmVi
dnUydlgraTQ1K2hiSTVTU09idW14RllPcm1GYVpRa2xOWFJZNktQNU5MaWthCi1QSGg0Q2Fwekpt
TENwU3hJa21VU2NINC9mc2ZFNmdySVlPOXFzR1hjMmhBeHlZZzZWalg5aGIwUnBGRjlmM0ZmCi1G
amhrQm5nbE94WGhwaGt2ZS8rU0VhME9ZQnJVWVk1R1JRQ2JlOFlmV3c2N25XejllaW1XZ2lVOTFS
bUF0ekJ1Ci1ZU29meTFEY3JQVC9Td0puWUZnRUY3WnBrNVBJa3ZpZ1h2RlcvZWdrSWIzMHZ0VHVI
OTl1MDAxVkcxakVacHVUCi10cklRNkE3N2E1QlArVitaV0FxcWpWODVNM1dEUVVWeFV3dndnWFhj
YzIwQ0F3RUFBYU9CbXpDQm1EQU1CZ05WCi1IUk1FQlRBREFRSC9NQjBHQTFVZERnUVdCQlJiMnNq
QkNmTk5rakM4NzBQN0pwTWVyZzJhRHpCSEJnTlZIU01FCi1RREErZ0JSYjJzakJDZk5Oa2pDODcw
UDdKcE1lcmcyYUQ2RWhwQjh3SFRFYk1Ca0dBMVVFQXd3U2QyVmlMWEJzCi1ZWFJtYjNKdExYUmxj
M1J6Z2dNTGY1Z3dDd1lEVlIwUEJBUURBZ0lFTUJNR0ExVWRKUVFNTUFvR0NDc0dBUVVGCi1Cd01C
TUEwR0NTcUdTSWIzRFFFQkN3VUFBNElCQVFDWDQvQzVZd2ZsM3RrZmY5NisrT1NZMWlXWDZkT3Rm
RzB3Ci1mUTJPeFp2djY2akZXYklzY3doR0lxdjNZUUVabmdBTWNyd3F2WVlSSHoyQXFobFliODBG
dGxvbi95NDVHa1FJCi1vdWltNGl3RFVpOWphem83azhhNFU4MzA3R05jSkZwbHBPT1RucGJ3QU0r
Qy9Od29HSWJ4b241NGdKLzBFYkdPCi15QkMxR0ozOW5vckxiWTRWSWpzZkRYbFR2U3YzMEFrcXBx
bnhQa3pRcW9HdUt6U3dVaGJRZU9JbHdlS1NSeHN2Ci1wcUlwYjRlYVBGMUVzSStWUE9ldDBZTWNP
TGM5aFN1NDNFV0J1bkduSEphYndUZytxYWJIT0hGTk4yN0t1T2lyCi16QWRPSVVPSUljQkpFWjdX
eEJNc1YzVWRqbFFmWTVwR0dWSkF4UjRzT05LNFlrT2xoTWprCitCUUFEZ2dFUEFEQ0NBUW9DZ2dF
QkFOUUkxMHZ5dFBONUc4bTZjV2VQWkxIWWdCSUpzV2ZqeDJOV2svV0ZFTG9jCitEblV2MnpScDVF
MjdBaHhFSko2YzZKR3UrM1dqVDdsK2ZHeWtvSzFSd09uNE9pL0tOSm5ERTJYZVNqUUgvYXdQCitN
aTJqMGhBaXZUdkNYbm9tVFhuM2NxY1RrcmFwY0RYVjErV1VTYWViSncrOHdITG9KVVdJYmVVN0tM
VmdYc2NmCitoTEdCUUI2cC91UWV3em1tYjFiVWJpekYzR25iRnhTYkZna0szVHRmOU5wSHFxUnRn
VUFhWnRQOWVkYS9rUlA3CitqMGlJUW5jQ3lod1VNY0VnLzlZc0tlTE9TVUd6TGpVU0NKcU9JdlVM
blF3UkJZaklFd3VpMDBxZENocVY4Y2h6CitLYmszMmRqNnZMRnMzdDdQK3hvai9KalpYWmlXUUZU
ekZTVmpwUzVBN01FQ0F3RUFBYU9DRkM0d2doUXFNQXdHCitBMVVkRXdRRk1BTUJBZjh3SFFZRFZS
ME9CQllFRkVGSi80eG1VRitIb1Fhb3U2dUszWE1ORGpjYU1FY0dBMVVkCitJd1JBTUQ2QUZFRkov
NHhtVUYrSG9RYW91NnVLM1hNTkRqY2FvU0drSHpBZE1Sc3dHUVlEVlFRRERCSjNaV0l0CitjR3ho
ZEdadmNtMHRkR1Z6ZEhPQ0F3V3hSekFMQmdOVkhROEVCQU1DQWdRd2dnb0ZCZ05WSFI0RWdnbjhN
SUlKCisrS0NDQ2ZRd0U0SVJkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdGNElWYm05MExYZGxZaTF3
YkdGMFptOXliUzUwCitaWE4wTUJlQ0ZYZDNkeTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkREFZZ2ha
M2QzY3hMbmRsWWkxd2JHRjBabTl5CitiUzUwWlhOME1CaUNGbmQzZHpJdWQyVmlMWEJzWVhSbWIz
SnRMblJsYzNRd0c0SVpkM2QzTG01dmRDMTNaV0l0CitjR3hoZEdadmNtMHVkR1Z6ZERBYmdobDNk
M2N1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUwWlhOME1CeUNHbmQzCitkekl1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOME1CeUNHbmQzZHpFdWJtOTBMWGRsWWkxd2JHRjBabTl5CitiUzUwWlhO
ME1CeUNHbmQzZHk1M2QzY3lMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kM2R6SXVkM2Qz
CitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBNQnlDR25kM2R6RXVkM2QzTG5kbFlpMXdiR0YwWm05
eWJTNTBaWE4wCitNQnlDR25kM2R5NTNkM2N4TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTUIyQ0cz
ZDNkekV1ZDNkM01TNTNaV0l0CitjR3hoZEdadmNtMHVkR1Z6ZERBZGdodDNkM2N4TG5kM2R6SXVk
MlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdIWUliCitkM2QzTWk1M2QzY3lMbmRsWWkxd2JHRjBabTl5
YlM1MFpYTjBNQjJDRzNkM2R6SXVkM2QzTVM1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkREFmZ2gx
M2QzY3VkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWdnaDUzCitkM2N1ZDNkM01p
NXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3SUlJZWQzZDNNUzUzZDNjdWJtOTBMWGRsCitZ
aTF3YkdGMFptOXliUzUwWlhOME1DQ0NIbmh1TFMxc2RtVXRObXhoWkM1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6CitkREFnZ2g1M2QzY3VkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdJ
SUllZDNkM01pNTNkM2N1CitibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNHQ0gzZDNkekl1
ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtCitiM0p0TG5SbGMzUXdJWUlmZDNkM01pNTNkM2N4TG01
dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQWhnaDkzCitkM2N4TG5kM2R6RXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wTUNHQ0gzZDNkekV1ZDNkM01pNXViM1F0CitkMlZpTFhCc1lYUm1i
M0p0TG5SbGMzUXdKSUlpZUc0dExXeDJaUzAyYkdGa0xuZDNkeTUzWldJdGNHeGhkR1p2CitjbTB1
ZEdWemREQWtnaUozZDNjdWVHNHRMV3gyWlMwMmJHRmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBN
Q1NDCitJbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKWUlq
ZUc0dExXeDJaUzAyCitiR0ZrTG5kM2R6RXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKWUlqZDNk
M01pNTRiaTB0YkhabExUWnNZV1F1CitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdKWUlqZDNkM01T
NTRiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtCitiM0p0TG5SbGMzUXdKWUlqZUc0dExXeDJa
UzAyYkdGa0xuZDNkekl1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3CitLSUltZUc0dExXeDJaUzAy
YkdGa0xuZDNkeTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd0tJSW1kM2QzCitMbmh1TFMx
c2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzUXdLWUluZUc0dExXeDJaUzAy
CitiR0ZrTG5kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTUNtQ0ozZDNkekl1ZUc0
dExXeDJaUzAyCitiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXBnaWQzZDNjeExu
aHVMUzFzZG1VdE5teGhaQzV1CitiM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3S1lJbmVHNHRM
V3gyWlMwMmJHRmtMbmQzZHpJdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOME1DdUNLWGh1
TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wTUMy
Q0szaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzCitZWFJtYjNKdExu
UmxjM1F3TDRJdGVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1Ym05MExYZGxZaTF3Citi
R0YwWm05eWJTNTBaWE4wTUMrQ0xYaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R5
NTNaV0l0CitjR3hoZEdadmNtMHVkR1Z6ZERBdmdpMTNkM2N1ZUc0dExXNDRhalprY3pVemJIZDNh
M0p4YUhZeU9HRXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNRd01JSXVkM2QzTVM1NGJpMHRiamhx
Tm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXdnaTU0Ymkw
dGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTNkM2N4CitMbmRsWWkxd2JHRjBabTl5YlM1MFpY
TjBNRENDTG5kM2R6SXVlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5CitPR0V1ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1F3TUlJdWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1CitkM2Qz
TWk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZERBeGdpOTRiaTB0YkhabExUWnNZV1F1ZUc0dExXeDJa
UzAyCitiR0ZrTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemREQXpnakY0YmkwdGJqaHFObVJ6
TlROc2QzZHJjbkZvCitkakk0WVM1M2QzY3VibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wTURP
Q01YZDNkeTU0YmkwdGJqaHFObVJ6CitOVE5zZDNkcmNuRm9kakk0WVM1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzUXdOSUl5ZDNkM01TNTRiaTB0CitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZ
UzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd05JSXllRzR0CitMVzQ0YWpaa2N6VXpiSGQz
YTNKeGFIWXlPR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1F3CitOSUl5ZUc0
dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
CitMblJsYzNRd05JSXlkM2QzTWk1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNR
dGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1F3T0lJMmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFI
WXlPR0V1ZUc0dExXeDJaUzAyCitiR0ZrTG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wTURpQ05uaHVM
UzFzZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6CitOVE5zZDNkcmNuRm9kakk0WVM1M1pXSXRjR3ho
ZEdadmNtMHVkR1Z6ZERBOGdqcDRiaTB0YkhabExUWnNZV1F1CitlRzR0TFc0NGFqWmtjelV6Ykhk
M2EzSnhhSFl5T0dFdWJtOTBMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNRHlDCitPbmh1TFMxdU9H
bzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzCitZ
WFJtYjNKdExuUmxjM1F3UTRKQmVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZUc0dExX
NDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNRd1I0SkZl
RzR0TFc0NGFqWmtjelV6CitiSGQzYTNKeGFIWXlPR0V1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4
YUhZeU9HRXVibTkwTFhkbFlpMXdiR0YwCitabTl5YlM1MFpYTjBNQk1HQTFVZEpRUU1NQW9HQ0Nz
R0FRVUZCd01CTUlJSmhRWURWUjBSQklJSmZEQ0NDWGlDCitFWGRsWWkxd2JHRjBabTl5YlM1MFpY
TjBnaFZ1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ZYZDNkeTUzCitaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSVdkM2QzTVM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJV2QzZDNNaTUzCitaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSVpkM2QzTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVpk
M2QzCitMbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJYWQzZDNNaTV1YjNRdGQyVmlMWEJz
WVhSbWIzSnRMblJsCitjM1NDR25kM2R6RXVibTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2hw
M2QzY3VkM2QzTWk1M1pXSXRjR3hoCitkR1p2Y20wdWRHVnpkSUlhZDNkM01pNTNkM2N1ZDJWaUxY
QnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVkM2QzCitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBn
aHAzZDNjdWQzZDNNUzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUliCitkM2QzTVM1M2QzY3hMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHQzZDNjeExuZDNkekl1ZDJWaUxYQnNZWFJtCitiM0p0TG5S
bGMzU0NHM2QzZHpJdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUliZDNkM01pNTNkM2N4
CitMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDEzZDNjdWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEda
dmNtMHVkR1Z6CitkSUllZDNkM0xuZDNkekl1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdo
NTNkM2N4TG5kM2R5NXViM1F0CitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIbmh1TFMxc2RtVXRO
bXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6CitkSUllZDNkM0xuZDNkekV1Ym05MExYZGxZaTF3
YkdGMFptOXliUzUwWlhOMGdoNTNkM2N5TG5kM2R5NXViM1F0CitkMlZpTFhCc1lYUm1iM0p0TG5S
bGMzU0NIM2QzZHpJdWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsCitjM1NDSDNkM2R6
SXVkM2QzTVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzZHpFdWQzZDNNUzV1Citi
M1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSDNkM2R6RXVkM2QzTWk1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0CitMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUzZDNjdWQyVmlMWEJzWVhSbWIzSnRM
blJsYzNTQ0luZDNkeTU0CitiaTB0YkhabExUWnNZV1F1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1ND
SW5odUxTMXNkbVV0Tm14aFpDNXViM1F0CitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NJM2h1TFMx
c2RtVXRObXhoWkM1M2QzY3hMbmRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdpTjNkM2N5TG5odUxT
MXNkbVV0Tm14aFpDNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSWpkM2QzCitNUzU0YmkwdGJIWmxM
VFpzWVdRdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0kzaHVMUzFzZG1VdE5teGhaQzUzCitkM2N5
TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wZ2laNGJpMHRiSFpsTFRac1lXUXVkM2QzTG01dmRDMTNa
V0l0CitjR3hoZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZp
TFhCc1lYUm1iM0p0CitMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzZDNjeExtNXZkQzEzWldJ
dGNHeGhkR1p2Y20wdWRHVnpkSUluCitkM2QzTWk1NGJpMHRiSFpsTFRac1lXUXVibTkwTFhkbFlp
MXdiR0YwWm05eWJTNTBaWE4wZ2lkM2QzY3hMbmh1CitMUzFzZG1VdE5teGhaQzV1YjNRdGQyVmlM
WEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5teGhaQzUzCitkM2N5TG01dmRDMTNaV0l0
Y0d4aGRHWnZjbTB1ZEdWemRJSXBlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5CitPR0V1ZDJW
aUxYQnNZWFJtYjNKdExuUmxjM1NDSzNodUxTMXNkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1
CitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpo
aExtNXZkQzEzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRlRzR0TFc0NGFqWmtjelV6YkhkM2Ez
SnhhSFl5T0dFdWQzZDNMbmRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdpMTNkM2N1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekV1
ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNT
Q0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6RXVkMlZpCitMWEJzWVhSbWIz
SnRMblJsYzNTQ0xuZDNkekl1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpCitM
WEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kM2R6
SXVkMlZpCitMWEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFzZG1VdE5teGhaQzU0YmkwdGJIWmxM
VFpzWVdRdWJtOTBMWGRsCitZaTF3YkdGMFptOXliUzUwWlhOMGdqRjRiaTB0YmpocU5tUnpOVE5z
ZDNkcmNuRm9kakk0WVM1M2QzY3VibTkwCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnakYzZDNj
dWVHNHRMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1CitibTkwTFhkbFlpMXdiR0YwWm05eWJT
NTBaWE4wZ2pKM2QzY3hMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyCitNamhoTG01dmRDMTNa
V0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXllRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5CitPR0V1
ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDTW5odUxTMXVPR28yWkhNMU0yeDNk
MnR5CitjV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqSjNkM2N5
TG5odUxTMXVPR28yCitaSE0xTTJ4M2QydHljV2gyTWpoaExtNXZkQzEzWldJdGNHeGhkR1p2Y20w
dWRHVnpkSUkyZUc0dExXNDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWVHNHRMV3gyWlMwMmJH
RmtMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnalo0CitiaTB0YkhabExUWnNZV1F1ZUc0dExXNDRh
alprY3pVemJIZDNhM0p4YUhZeU9HRXVkMlZpTFhCc1lYUm1iM0p0CitMblJsYzNTQ09uaHVMUzFz
ZG1VdE5teGhaQzU0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNXViM1F0CitkMlZpTFhC
c1lYUm1iM0p0TG5SbGMzU0NPbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzFz
CitkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDUVhodUxTMXVPR28yWkhN
MU0yeDNkMnR5CitjV2gyTWpoaExuaHVMUzF1T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG5kbFlp
MXdiR0YwWm05eWJTNTBaWE4wCitna1Y0YmkwdGJqaHFObVJ6TlROc2QzZHJjbkZvZGpJNFlTNTRi
aTB0YmpocU5tUnpOVE5zZDNkcmNuRm9kakk0CitZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJs
YzNRd0RRWUpLb1pJaHZjTkFRRUxCUUFEZ2dFQkFIWGlxMXZBCit4amM4aWozNGk0Yis4aW5WQlZ3
VFd5SHRjemxabklRVEN4cUpDRGs4M3B6OFFGSEd5SFl6K2RiMzZVNll3SGFrCitJM0hZaGlwUE1C
MVZubEhrTUE2eEZ1WkwvYUZXeXdMTlU5blRtYUFWMGZQL1I1azl2dDhBRW0wWm1FV2tOWXRMCitv
cGN5MHJxakFhWFRJV2VzOTFPWmZuaVRGUURITWl1cks4VnErZnEvT3p3K1lRYlJiVTFLbEhDTmF5
aXN2UWE0CitUTE8rRGpNUjBoekRUM0RIRXdQSkxQWWFhNlJuSXdvOHp2Q3FrMFpSUEF4ZXVsZEFl
L3UxUHp0ZVhSekVIVEFFCitETVZMTXdNNzUyYkxGdWZ2MUdSQ1pOSEVMWkt5aFVvRnJQMzBBcUU3
cjNwbndRUlc4S2RpZDM4SU1vN3U5RGVtCit1NS90SGVmUEtEN2JtL1k9CiAtLS0tLUVORCBDRVJU
SUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0cy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjAyMDZjYTk3OTUyZTA4MGQ0MTQzZDNjMmNi
OTc4YmJiNjI0OTdhYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2Nl
cnRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jZXJ0
cy9SRUFETUUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NlcnRzL2NhY2VydC5rZXkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL2NhY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0Lmtl
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2Vy
dHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0Lmtl
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2Vy
dHMvd2ViLXBsYXRmb3JtLnRlc3Qua2V5CmluZGV4IGYwNzQ1YWRiYWU5ZjlmNTk2NmI2OTYzNGFl
ZTZkMmE5MTZjNjljOTQuLmI2MmFmMjA4YzM0Y2IzMTY3YWU2NDAzOGNkZmY2OTZmMDQ3ODkzZWIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3Qua2V5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3Qu
a2V5CkBAIC0xLDI4ICsxLDI4IEBACiAtLS0tLUJFR0lOIFBSSVZBVEUgS0VZLS0tLS0KLU1JSUV2
UUlCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktjd2dnU2pBZ0VBQW9JQkFRRFlVMmc3VmRLT1ZU
eFAKLXVJQjB1QjFKakR6U3RiVVZJamVCSlVMbldLcTJxcjRPTUk2Z2wwLzNnTm5wb2ZUcldEK2ps
aWk0MmxxcURVSGYKLWJCMVNyczNJRmdLd0NuQ1JWMzZsMnhDay9UdjNCdFcxaVdxU05zWm14YWJT
YkhiMVQwckxic09UTGI3U1A3MFUKLXAwbzVXdkFZM0VFYmNJQmxnWVZGbzZvWjhQNVY3UkRaVm15
TlZHbEwza1VCRDFDaGg5Y01ReUtkRzA2eTdHNTIKLTQ2ejJ3ZG13YWVnd0dyczkwNTNqakhCQmR5
SUNYTEV6SzRMZTJyZ1k5TktZR21yd29DUldxQXJwRENMUE9HeEQKLW1pYjJoZG0xSDIza3orMDVJ
MVBibzQ1K0p1dGhHMDVkckxCQ3ZoNWNUaGlBWTJ3TkNXZ0lCcUgwQkF2RE41TG8KLXFnN0YwVXZC
QWdNQkFBRUNnZ0VCQUpXc0g5SHQ3MkRMV0k5UCtKREpVbm93cldTY2xFMnEvdnc3NjY1bGlyZ1kK
LUtxZG1zVWdyYVFpMS9nL0lIczAyb2RGdGMzOXlsSWhUNDkvUnpmZ0hPaG5XSU1Yc2N6WWNjMlFO
emRaWjM4TnEKLTF6SmpnWGpvclIwdVk5M3piZHNNb1pOZmI3SEZWT0hqZDg5eWI4aC9RdC93aEp1
WG16NmYvclhRSjBFTG5PMlYKLWNzQmEwV1dSZEtOWVN1RFhYQVhyVG1KczRQcDdOTldBb1lCYU1v
SFFjSEU5d3NOM1huSmRZWXlBQmJwajZ3SVAKLTdMWHhVTjNPWmo0Q1k5K2FoQ2dyRUE4TkV2Q1Uv
U1VhZ0VYMFlHNHorc1YrRGZqbnVzN3ZNWVNxWnYyc2RQTjIKLXplMDkyK0FaQkRwZGpOZEx5ckI2
Y01GUmgvMjNNYUNMR0hQR2pKa0NkZ0VDZ1lFQTliSytOUnFQVXFjUkovQmQKLTdQQVBpMVBMamtn
UDY2djBvWHNXNnlsN0JueGdqclV2b1dVSTkvNDBrRXZRRHp0SXJVRmJMb3h3bkx0QUtqUUcKLUYr
MnZrRC9EV3Q0NTJaOGJRWGJ4dGVHTFhrTnR3bzlEd1RCcno0T29ubW5yeGNPand0SUVycUV5aE1Q
UkNlMHcKLUtGdFJMZ0s1eFh4K0psUU56UnhZNFRVR2pnMENnWUVBNFdWaml4ZmhUZjF2RnBtZmhY
NGV3TGFCcldjaDRoNngKLXdRM2o5TVY5MHdOYm5ueVQxR3JLaVIxWERKMXZOOGVtRnJOUXZocjBl
T0V1RFkwWlhKSk04UHZQVzYrS3Ftc08KLXJ3cmV5UXpwL2IxQWRzL3FMN00wNVJFdTV5NVJRMnpO
V2pPYlR2ZHNVaC9MbXRVdkdSUW05MkUrdDRhRnowSmcKLWpaNUE2b3ErdTRVQ2dZQXRYOGdldUh2
MWNLTUxkQ2wwWTFVTGp2c05tS05RQzU2TzM5TjR0RjFpOGo5R3U1RkQKLVJneGsrQTR2QThFMXZ1
WUtFUUxNMHVUTkhRdVpmNmdNYlRtNTh2eVo0R1pnbVRDSVkzWDU5K0FzRlZuRXozNWMKLXhCdDA1
RVNVbE0wVTVhOXRnQ21iTW12STl2eTR6NVBRTUNVSzBUZ0xqNVVnY085bmpLK2hUNUNaVlFLQmdH
WmwKLVZqU2hjNlNucHVrQWYzejR6K1hDdytUUC9vK29YQjZWUGVNOE9TNDh6MG1QMU9UaVl3S3Bo
cHRmaG1BejNodGYKLStTVjBQMjRPOW9vSGVPY2FPOFFhMFpnWWhvbG5PM09BSDdmOG11ekFKbUlU
a0pOOCtXRzdUYkNPMVRJcFlwMUEKLTVxU1lPT2lTTTBBeTYwT2NhUnRuWFVPbzVHOUUrM0k2Mjhq
eG9UYTFBb0dBUUszTWpOL0J6RzVnWEczUFg1VFYKLXRGWStLMlNnSUQzM2QrU1RSTFV6QWdPYis3
YXFVT2R3WWZDZGlRc3BFRDlIUmtnL0RDTHA3Z05wMDJwMWtzY0IKLXcvUFdDTVVPMDFpbklsalI0
Zi9ZTytrSUQ4WnJvdmNoOGQ4SkxHdk5zWUZ6VkFQL2NlWVc2L09NTFFMTkdmQkMKLXhIcGRqMElt
MGU5L1dNeEM0WkVZZm9jPQorTUlJRXZnSUJBREFOQmdrcWhraUc5dzBCQVFFRkFBU0NCS2d3Z2dT
a0FnRUFBb0lCQVFDclpYVlhtT1BscW8vKworMnhqMTVQZ2NaR0hHby9ib2ZpUVEzZ2w2SkwxVlgx
R3B0WUlOaFRxMnNVaGZOOHRDYitjSHl6YXBPOW9VbXdxdworcDVVcDd0SjRJcDd1RTEvd3dTeFZj
dkNhd0c1L1BONWlEN0gyd3NtRXBwSFhPYzNMbDA4NS9nemVzKzErTm4rcQorQVJtcDFiRi92anBs
RDZWZEgyckJXM3NKM0RBb0Jhb1hsQU1mZVJBRkRwYXFhKzlseE1yTTVXa1VIbmRRK3VFTQorNmta
eWV2aHlwMDJYRFAwdkx3TkN0UExHQjBlbUFBZkM3eHB3UkdWR1N0RXNVaGYvbWM5eU5OYUtncUJL
STBubworb1ZudVUzUkdkS0hQMTh2Y2p0QlNWMGxZZ2pmZzlhMDdPQnUxaGdRZmZob2ZpMkJ5ZGZh
Q3BCQU16RmhsdTF1eQorczZhaFZrSnBBZ01CQUFFQ2dnRUFmbXZ6eFkwTWJGY0dwMkZNWS9OajN1
MWNBWHpubmsyTXBMUmlJU29BVFh4bAorYTl4cDlUY1VPN1ZBUUp1UzNZcFV5cmJsdHFaakVWZmE1
cnAxbDl5RWVnQnZZZ1FBZkVEQVJyYmxLZ0JPZ0tPUgorRkp1bkZQQlFXL3ZSRHdPZi9FKzdMSGRy
WHNrd29DdnF0cWJoR3hoNE9GVkVGVThaRmpzYUwwMGUwQU1Oc2pabAorME9zRU9ObElING5DYTdF
NkRUYXNIeGMxVmtIUXIzdXZCbDUvNEhmT2MwNXRyK1pLbE1ZWHpBUFdrTDBzQzIxNgorRHF5NEF4
SjBNMGF4OEJZRVp1bzBncVFtTUFvbkpUa0VucHlvRDR6ODlTODc3dkZwOHcxVlBiR1lrVjQ4eWpW
LworSTdmUTZZanQzeWcrYXMrczRhckdFc1VCMGwrWEFwQllZWS9KK3FjWVVRS0JnUURlZDdET01K
VWMza1BURkVjTgorcC9FYlNoOVRYeFMvNzRjSXlHaWQ5SUVpUkVKWXhZdjhrejBLcGxHdUpvbElR
My9JazlSYWM2QjNUdTRXa1cwZworVFBiTnVuWUVzeWRaQkFuYVE0ZUFWZE9mdlJRNlYzZUJaMnZF
cnNISlJGYWo1Y09jZXNVWHhCWkk2bTJ0UUVTeAorZEJXRkRORzlrenRyMEhtYUw2UHV6NHpaSXdL
QmdRREZPeGZSN0ZjcEdkdzYxemlTc1ptdHZrZjZlcGtHMytvdQordWhZNTBKMFVyVGJLN1R1aW1r
b1J3L1hIZUJlNGRiK2VqT091TEQ5UUUveVh2bXRFV3V5VVRUWU9WdlorSHVOagorUnAza2RpMUd1
V1huNmdSdmRsa2Y5WHdXN2pIbWdrcGJBNUErdURYczNFWVlhMThMeFBOZk1Tdmh5SGRrRm5VRwor
YVR6eVlOcGRBd0tCZ0d2L1FOYW40UXQxbndsdVU1ditobDZRR2lyNEFuTzJ6Ui9uWWxvajR6aUdX
SXNOdzRwbQorMUFCQ2cyNStpTENMREJLTUtVK0x5RCtERXJQai8wenA3L29wWmJlY1hTS3Fnam55
QkdxNXY1VlJUZXVRb0pReQorWjYvQWdwUzVWeklUaldWK2VBVzBqSGp6VFRFSS9SQUVZWm9JZ2gx
OHh5RHN3TXVvQ3ZZWXpiQnZBb0dCQU1NMgorSS9Odyt5d0JIb3RXcmZYenR1blNwaWR5NUxkN05L
eWZIcFNHdUpMWWhwei9oY0VBK1VMd00vb0VFV1pQbFNOMgoreTN0KzdBTjBaTlJFY3FNclkzRzlv
ajA3TWFuUEpMMEVEZzhzTU5BSmZLVzRhRDl5WWZCUjUwcEM1RDBFeEZlbAorQlVZdXlhRHd2S2c2
emM0MlY3UG1WVXFhUWlGY1lPUEJrY05NdlpURkFvR0JBTEJ0ZHQwaUl2dEJvcHArSVFhVgorelpN
QTVaUUlRNW41djA3MUxLYTFzN2FyMytoSW9EUnNaYk03WGtVSUE4elFscndGUmhiVTVZRk5jYnBv
b1FTbQorN2o0K2ZJdWRjcHhqOXRBTUdBYjV5Zzg5azFEalR5N0ZVV0w5ZWxHSWd2Sk1xZ0Y2SVE1
Myt2Ujh4d0dEeVFMQgorc1A1bWl6RjF3aTQ3RFlQSlFjRFJDelUrCiAtLS0tLUVORCBQUklWQVRF
IEtFWS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NlcnRzL3dlYi1wbGF0Zm9ybS50ZXN0LnBlbSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3Jt
LnRlc3QucGVtCmluZGV4IGEzYTAyMmU2YWM0ODVkM2Y5NmFlODUxYzBhZDgwZWU5Njk4YTE4ZTcu
LjU5NTkzMTZiYjViNDgyNWU2NDBiYjFmN2NhYjA4YmM5ZjQwNWE2M2EgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2Vi
LXBsYXRmb3JtLnRlc3QucGVtCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2VydHMvd2ViLXBsYXRmb3JtLnRlc3QucGVtCkBAIC0xLDkwICsx
LDEzMyBAQAogQ2VydGlmaWNhdGU6CiAgICAgRGF0YToKICAgICAgICAgVmVyc2lvbjogMyAoMHgy
KQotICAgICAgICBTZXJpYWwgTnVtYmVyOiA3NTM1NjEgKDB4YjdmOTkpCisgICAgICAgIFNlcmlh
bCBOdW1iZXI6IDM3MzA2NCAoMHg1YjE0OCkKICAgICBTaWduYXR1cmUgQWxnb3JpdGhtOiBzaGEy
NTZXaXRoUlNBRW5jcnlwdGlvbgogICAgICAgICBJc3N1ZXI6IENOPXdlYi1wbGF0Zm9ybS10ZXN0
cwogICAgICAgICBWYWxpZGl0eQotICAgICAgICAgICAgTm90IEJlZm9yZTogSnVsIDEzIDEyOjU5
OjEyIDIwMTggR01UCi0gICAgICAgICAgICBOb3QgQWZ0ZXIgOiBKdWwgMTAgMTI6NTk6MTIgMjAy
OCBHTVQKKyAgICAgICAgICAgIE5vdCBCZWZvcmU6IE9jdCAxNCAxMzo0OToyOSAyMDE5IEdNVAor
ICAgICAgICAgICAgTm90IEFmdGVyIDogT2N0IDExIDEzOjQ5OjI5IDIwMjkgR01UCiAgICAgICAg
IFN1YmplY3Q6IENOPXdlYi1wbGF0Zm9ybS50ZXN0CiAgICAgICAgIFN1YmplY3QgUHVibGljIEtl
eSBJbmZvOgogICAgICAgICAgICAgUHVibGljIEtleSBBbGdvcml0aG06IHJzYUVuY3J5cHRpb24K
ICAgICAgICAgICAgICAgICBQdWJsaWMtS2V5OiAoMjA0OCBiaXQpCiAgICAgICAgICAgICAgICAg
TW9kdWx1czoKLSAgICAgICAgICAgICAgICAgICAgMDA6ZDg6NTM6Njg6M2I6NTU6ZDI6OGU6NTU6
M2M6NGY6Yjg6ODA6NzQ6Yjg6Ci0gICAgICAgICAgICAgICAgICAgIDFkOjQ5OjhjOjNjOmQyOmI1
OmI1OjE1OjIyOjM3OjgxOjI1OjQyOmU3OjU4OgotICAgICAgICAgICAgICAgICAgICBhYTpiNjph
YTpiZTowZTozMDo4ZTphMDo5Nzo0ZjpmNzo4MDpkOTplOTphMToKLSAgICAgICAgICAgICAgICAg
ICAgZjQ6ZWI6NTg6M2Y6YTM6OTY6Mjg6Yjg6ZGE6NWE6YWE6MGQ6NDE6ZGY6NmM6Ci0gICAgICAg
ICAgICAgICAgICAgIDFkOjUyOmFlOmNkOmM4OjE2OjAyOmIwOjBhOjcwOjkxOjU3OjdlOmE1OmRi
OgotICAgICAgICAgICAgICAgICAgICAxMDphNDpmZDozYjpmNzowNjpkNTpiNTo4OTo2YTo5Mjoz
NjpjNjo2NjpjNToKLSAgICAgICAgICAgICAgICAgICAgYTY6ZDI6NmM6NzY6ZjU6NGY6NGE6Y2I6
NmU6YzM6OTM6MmQ6YmU6ZDI6M2Y6Ci0gICAgICAgICAgICAgICAgICAgIGJkOjE0OmE3OjRhOjM5
OjVhOmYwOjE4OmRjOjQxOjFiOjcwOjgwOjY1OjgxOgotICAgICAgICAgICAgICAgICAgICA4NTo0
NTphMzphYToxOTpmMDpmZTo1NTplZDoxMDpkOTo1Njo2Yzo4ZDo1NDoKLSAgICAgICAgICAgICAg
ICAgICAgNjk6NGI6ZGU6NDU6MDE6MGY6NTA6YTE6ODc6ZDc6MGM6NDM6MjI6OWQ6MWI6Ci0gICAg
ICAgICAgICAgICAgICAgIDRlOmIyOmVjOjZlOjc2OmUzOmFjOmY2OmMxOmQ5OmIwOjY5OmU4OjMw
OjFhOgotICAgICAgICAgICAgICAgICAgICBiYjozZDpkMzo5ZDplMzo4Yzo3MDo0MTo3NzoyMjow
Mjo1YzpiMTozMzoyYjoKLSAgICAgICAgICAgICAgICAgICAgODI6ZGU6ZGE6Yjg6MTg6ZjQ6ZDI6
OTg6MWE6NmE6ZjA6YTA6MjQ6NTY6YTg6Ci0gICAgICAgICAgICAgICAgICAgIDBhOmU5OjBjOjIy
OmNmOjM4OjZjOjQzOjlhOjI2OmY2Ojg1OmQ5OmI1OjFmOgotICAgICAgICAgICAgICAgICAgICA2
ZDplNDpjZjplZDozOToyMzo1MzpkYjphMzo4ZTo3ZToyNjplYjo2MToxYjoKLSAgICAgICAgICAg
ICAgICAgICAgNGU6NWQ6YWM6YjA6NDI6YmU6MWU6NWM6NGU6MTg6ODA6NjM6NmM6MGQ6MDk6Ci0g
ICAgICAgICAgICAgICAgICAgIDY4OjA4OjA2OmExOmY0OjA0OjBiOmMzOjM3OjkyOmU4OmFhOjBl
OmM1OmQxOgotICAgICAgICAgICAgICAgICAgICA0YjpjMQorICAgICAgICAgICAgICAgICAgICAw
MDphYjo2NTo3NTo1Nzo5ODplMzplNTphYTo4ZjpmZTpkYjoxODpmNTplNDoKKyAgICAgICAgICAg
ICAgICAgICAgZjg6MWM6NjQ6NjE6YzY6YTM6ZjY6ZTg6N2U6MjQ6MTA6ZGU6MDk6N2E6MjQ6Cisg
ICAgICAgICAgICAgICAgICAgIGJkOjU1OjVmOjUxOmE5OmI1OjgyOjBkOjg1OjNhOmI2OmIxOjQ4
OjVmOjM3OgorICAgICAgICAgICAgICAgICAgICBjYjo0Mjo2ZjplNzowNzpjYjozNjphOTozYjpk
YToxNDo5YjowYTpiMDphNzoKKyAgICAgICAgICAgICAgICAgICAgOTU6Mjk6ZWU6ZDI6Nzg6MjI6
OWU6ZWU6MTM6NWY6ZjA6YzE6MmM6NTU6NzI6CisgICAgICAgICAgICAgICAgICAgIGYwOjlhOmMw
OjZlOjdmOjNjOmRlOjYyOjBmOmIxOmY2OmMyOmM5Ojg0OmE2OgorICAgICAgICAgICAgICAgICAg
ICA5MTpkNzozOTpjZDpjYjo5Nzo0ZjozOTpmZTowYzpkZTpiMzplZDo3ZTozNjoKKyAgICAgICAg
ICAgICAgICAgICAgN2Y6YWE6MDE6MTk6YTk6ZDU6YjE6N2Y6YmU6M2E6NjU6MGY6YTU6NWQ6MWY6
CisgICAgICAgICAgICAgICAgICAgIDZhOmMxOjViOjdiOjA5OmRjOjMwOjI4OjA1OmFhOjE3Ojk0
OjAzOjFmOjc5OgorICAgICAgICAgICAgICAgICAgICAxMDowNTowZTo5NjphYTo2YjplZjo2NTpj
NDpjYTpjYzplNTo2OToxNDoxZToKKyAgICAgICAgICAgICAgICAgICAgNzc6NTA6ZmE6ZTE6MGM6
ZWE6NDY6NzI6N2E6Zjg6NzI6YTc6NGQ6OTc6MGM6CisgICAgICAgICAgICAgICAgICAgIGZkOjJm
OjJmOjAzOjQyOmI0OmYyOmM2OjA3OjQ3OmE2OjAwOjA3OmMyOmVmOgorICAgICAgICAgICAgICAg
ICAgICAxYTo3MDo0NDo2NTo0Njo0YTpkMToyYzo1MjoxNzpmZjo5OTpjZjo3MjozNDoKKyAgICAg
ICAgICAgICAgICAgICAgZDY6OGE6ODI6YTA6NGE6MjM6NDk6ZTg6YTE6NTk6ZWU6NTM6NzQ6NDY6
NzQ6CisgICAgICAgICAgICAgICAgICAgIGExOmNmOmQ3OmNiOmRjOjhlOmQwOjUyOjU3OjQ5OjU4
OjgyOjM3OmUwOmY1OgorICAgICAgICAgICAgICAgICAgICBhZDozYjozODoxYjpiNTo4NjowNDox
Zjo3ZToxYToxZjo4Yjo2MDo3Mjo3NToKKyAgICAgICAgICAgICAgICAgICAgZjY6ODI6YTQ6MTA6
MGM6Y2M6NTg6NjU6YmI6NWI6YjI6YjM6YTY6YTE6NTY6CisgICAgICAgICAgICAgICAgICAgIDQy
OjY5CiAgICAgICAgICAgICAgICAgRXhwb25lbnQ6IDY1NTM3ICgweDEwMDAxKQogICAgICAgICBY
NTA5djMgZXh0ZW5zaW9uczoKICAgICAgICAgICAgIFg1MDl2MyBCYXNpYyBDb25zdHJhaW50czog
CiAgICAgICAgICAgICAgICAgQ0E6RkFMU0UKICAgICAgICAgICAgIFg1MDl2MyBTdWJqZWN0IEtl
eSBJZGVudGlmaWVyOiAKLSAgICAgICAgICAgICAgICBEQzoyNzo2Qzo3NDpFNjo0NzozMTo5NTpE
ODpDQzo5Njo1QjpFNDo5NDo2RTo4QzoyMjoyRjoyQjpFQQorICAgICAgICAgICAgICAgIDJBOjE4
OjBCOjA5OjIyOjZFOjI4OkQyOkRCOkZEOkMyOjJEOjQwOkE2OkYzOjM4OjYyOjZFOkM3OkM1CiAg
ICAgICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAgICAg
ICAgICBrZXlpZDo1QjpEQTpDODpDMTowOTpGMzo0RDo5MjozMDpCQzpFRjo0MzpGQjoyNjo5Mzox
RTpBRTowRDo5QTowRgorICAgICAgICAgICAgICAgIGtleWlkOjQxOjQ5OkZGOjhDOjY2OjUwOjVG
Ojg3OkExOjA2OkE4OkJCOkFCOjhBOkREOjczOjBEOjBFOjM3OjFBCiAKICAgICAgICAgICAgIFg1
MDl2MyBLZXkgVXNhZ2U6IAogICAgICAgICAgICAgICAgIERpZ2l0YWwgU2lnbmF0dXJlLCBOb24g
UmVwdWRpYXRpb24sIEtleSBFbmNpcGhlcm1lbnQKICAgICAgICAgICAgIFg1MDl2MyBFeHRlbmRl
ZCBLZXkgVXNhZ2U6IAogICAgICAgICAgICAgICAgIFRMUyBXZWIgU2VydmVyIEF1dGhlbnRpY2F0
aW9uCiAgICAgICAgICAgICBYNTA5djMgU3ViamVjdCBBbHRlcm5hdGl2ZSBOYW1lOiAKLSAgICAg
ICAgICAgICAgICBETlM6d2ViLXBsYXRmb3JtLnRlc3QsIEROUzpub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLndlYi1wbGF0Zm9ybS50ZXN0
LCBETlM6d3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEubm90LXdlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2
ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1w
bGF0Zm9ybS50ZXN0CisgICAgICAgICAgICAgICAgRE5TOndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3LndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dy53ZWItcGxhdGZvcm0udGVzdCwgRE5T
Ond3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRl
c3QsIEROUzp3d3cud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3LndlYi1wbGF0
Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cud3d3MS53
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzEud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3
dzEud3d3Mi53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIud3d3Mi53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzIud3d3MS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dy53d3cubm90LXdlYi1w
bGF0Zm9ybS50ZXN0LCBETlM6d3d3Lnd3dzIubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
MS53d3cubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLndlYi1wbGF0Zm9y
bS50ZXN0LCBETlM6d3d3Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzIud3d3MS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnd3dzEubm90
LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwg
RE5TOnhuLS1sdmUtNmxhZC53d3cud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2ZS02
bGFkLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54
bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cxLnhuLS1sdmUtNmxhZC53ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cyLndlYi1wbGF0Zm9ybS50ZXN0LCBE
TlM6eG4tLWx2ZS02bGFkLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLWx2
ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1sdmUtNmxhZC53d3cxLm5vdC13
ZWItcGxhdGZvcm0udGVzdCwgRE5TOnd3dzIueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0u
dGVzdCwgRE5TOnd3dzEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhu
LS1sdmUtNmxhZC53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3
d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLWx2ZS02bGFkLnhuLS1sdmUtNmxh
ZC53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLm5vdC13ZWIt
cGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLnd3dy53ZWItcGxhdGZv
cm0udGVzdCwgRE5TOnd3dy54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVz
dCwgRE5TOnd3dzEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIERO
Uzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS53d3cxLndlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3
Mi54bi0tbjhqNmRzNTNsd3drcnFodjI4YS53ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2
ZHM1M2x3d2tycWh2MjhhLnd3dzIud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQu
eG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2ty
cWh2MjhhLnd3dy5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp3d3cueG4tLW44ajZkczUzbHd3
a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3MS54bi0tbjhqNmRzNTNsd3dr
cnFodjI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4
YS53d3cyLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1uOGo2ZHM1M2x3d2tycWh2Mjhh
Lnd3dzEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6d3d3Mi54bi0tbjhqNmRzNTNsd3drcnFo
djI4YS5ub3Qtd2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbjhqNmRzNTNsd3drcnFodjI4YS54
bi0tbHZlLTZsYWQud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44ajZk
czUzbHd3a3JxaHYyOGEud2ViLXBsYXRmb3JtLnRlc3QsIEROUzp4bi0tbHZlLTZsYWQueG4tLW44
ajZkczUzbHd3a3JxaHYyOGEubm90LXdlYi1wbGF0Zm9ybS50ZXN0LCBETlM6eG4tLW44ajZkczUz
bHd3a3JxaHYyOGEueG4tLWx2ZS02bGFkLm5vdC13ZWItcGxhdGZvcm0udGVzdCwgRE5TOnhuLS1u
OGo2ZHM1M2x3d2tycWh2MjhhLnhuLS1uOGo2ZHM1M2x3d2tycWh2MjhhLndlYi1wbGF0Zm9ybS50
ZXN0LCBETlM6eG4tLW44ajZkczUzbHd3a3JxaHYyOGEueG4tLW44ajZkczUzbHd3a3JxaHYyOGEu
bm90LXdlYi1wbGF0Zm9ybS50ZXN0CiAgICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMjU2V2l0
aFJTQUVuY3J5cHRpb24KLSAgICAgICAgIDE1Ojk4OjY4OjY5OjI1OmY2OmY3OmQ2OjA5OjBiOjVi
OmQ2OmFjOmQ2OjQ5OjA2OjBlOjI0OgotICAgICAgICAgZTE6ZWU6Yjk6NDQ6OWU6ZDE6MDM6MDM6
ZWQ6M2E6YjM6Zjk6MjM6YzQ6MTQ6ZTg6ZmU6NTM6Ci0gICAgICAgICA3MDo3MDoyMTphNjpkNDpl
MzplZTo4ZDpiYTo4NDozODpjZDo3MTozMjpjNzo0YTpjMDpmMToKLSAgICAgICAgIDMzOmViOmJk
OmJjOmVkOmYyOmQ4OmRjOmMzOmE3OmE3OmE2OjQ3OjZhOjY5OjZjOjE2OmVhOgotICAgICAgICAg
ZTY6NGQ6N2M6Nzc6MTg6MGQ6M2U6ODY6Mjk6OTE6MmI6NDk6ZDU6Yzk6MTk6MWE6NTM6MTY6Ci0g
ICAgICAgICBhNzpmMDowMjpmNDo3MDphMjplNTo4YjpiYzphYTphNjo2Zjo0Zjo1Yjo0MDoyNDow
NDo2ODoKLSAgICAgICAgIDExOjlkOjllOjI2OjIwOmYyOmUzOjY4OjM2OjlhOmZhOjhmOjdjOmIw
OjI5OjA4OjM3OmM0OgotICAgICAgICAgMDY6MDg6ZmM6ZTQ6NDU6YmI6NGM6Nzg6YWU6MmM6ZjE6
YzE6YmY6ZDk6MjM6MTc6ZTU6NDM6Ci0gICAgICAgICAxODowZTowNjpkODo0YzpiNDoyYTplZjpm
OTo3YzpiZjowMjpkMjo2Mjo1MTo4MjplZDo5ZDoKLSAgICAgICAgIDY0OjgzOjNkOjAzOmNkOjYx
OjM4OmMwOjU3OmM2OjVlOjViOjNhOjQxOjkxOmRiOjNlOjgzOgotICAgICAgICAgMDU6NGI6ODg6
ODQ6ZTM6YWU6YmU6NGQ6NWQ6Zjk6NTk6MDc6MGM6MjE6MTY6ZmE6N2U6YWY6Ci0gICAgICAgICAy
Mzo5NzowNToyNTo0YzpiYjowMjpkMzoxMTo0YTo4NTo2ODpjMzphMzpjZjpkMDowYzoxNToKLSAg
ICAgICAgIDQ5OmY2OjMyOjBiOmY2OjJhOjAxOjkxOjNjOmFkOmM3OjMxOmRhOmRhOjQzOmUyOjJj
OmRiOgotICAgICAgICAgNTI6YzU6Mzc6YTA6YzM6Y2M6M2E6NWI6MmI6NzY6ZTU6NzQ6NzQ6MjA6
MWI6YzM6Zjc6MGM6Ci0gICAgICAgICBmZTo2ZDpiZjpiYgorICAgICAgICAgYWY6YzI6ZWE6Y2M6
NmE6NWU6NDk6ZTA6ZGI6NzI6MTQ6MDU6M2M6MjE6YTA6OGI6ZmY6YjY6CisgICAgICAgICBhOTo3
MTo4MjpmNzo2MTpjZDoyMzoyYTowMDo2Njo5MTphYzowMTo5OTo2MzozODoxMToyMToKKyAgICAg
ICAgIDg1OmIyOjU3OjkyOjBiOjNmOjc5OjY4OmY1OmQ4OjU5OjhiOmE3Ojc0OjE5OmViOjBiOmU3
OgorICAgICAgICAgM2Q6ODY6NGU6NjY6ZDQ6ZTY6MmY6ZmY6ZWQ6NmM6N2Q6OWE6NWU6MTI6NGU6
YmY6Mzk6ZmY6CisgICAgICAgICBmNzpkMDpmYjo1Mjo1MzphMDpmYjpiMTo1Yzo5YTo5MTo5Mjoz
NjowMDpkODphNDo2ZjpmOToKKyAgICAgICAgIDljOjM2OjIxOmIyOmMyOjVlOjE0OjExOmNhOjU1
OmU3Ojg4OjMwOjYwOjhkOjg2OmRhOjY1OgorICAgICAgICAgMjY6ZmY6ZTI6NDU6MzY6MmE6MDk6
M2Q6YTQ6YmI6Mzg6NjE6NGQ6NTc6ZTQ6Yzk6YjY6NTA6CisgICAgICAgICAzYzowNjoyZjo2Yjpi
ZjowNDozNDo0Mjo1NDpkYzo1MzpiNjo2MTpjNTo0ZTo0MDowMDpkNjoKKyAgICAgICAgIDVlOjE5
OjE3OjNhOjU0OjJjOmM1OjE2OjdhOjZkOjRhOjcwOjU2OjQ1OmNkOjk5OjVhOjJhOgorICAgICAg
ICAgZDE6YTc6NGU6MzU6OTc6M2Q6ZDg6Yzk6OTU6ODA6YWI6MTU6NDI6ODY6ZjY6YTA6YTY6YzM6
CisgICAgICAgICAyMTpjMTo5YTowNzozNDo0OTphZDo2MTozYzpiYzo5NDpiMjoyZDo5MjpmNzo0
NDo4MDowMToKKyAgICAgICAgIDVmOjI3OmJkOjgzOmY1OjUxOjIyOjM5OmNkOjk4OmIxOjM5OjIz
OmI4OmY0OjVjOjA4OjIwOgorICAgICAgICAgOWU6ZmU6ZjE6MmQ6OWE6ZTk6OWI6Yzc6NWU6Yjg6
MzM6OGI6MTY6Nzc6NTI6M2Q6Yzk6N2E6CisgICAgICAgICA0Mzo5ZToyNTpkMDpjNzo1YTo5Njow
ODo1MzoxYTpkYzo3NTo1Mzo3NTo0NDo2MjoxODo3YzoKKyAgICAgICAgIGVmOmZiOjczOjUyCiAt
LS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS0KLU1JSUVuRENDQTRTZ0F3SUJBZ0lEQzMrWk1BMEdD
U3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwKLVlpMXdiR0YwWm05eWJTMTBaWE4w
Y3pBZUZ3MHhPREEzTVRNeE1qVTVNVEphRncweU9EQTNNVEF4TWpVNU1USmEKK01JSU1zakNDQzVx
Z0F3SUJBZ0lEQmJGSU1BMEdDU3FHU0liM0RRRUJDd1VBTUIweEd6QVpCZ05WQkFNTUVuZGwKK1lp
MXdiR0YwWm05eWJTMTBaWE4wY3pBZUZ3MHhPVEV3TVRReE16UTVNamxhRncweU9URXdNVEV4TXpR
NU1qbGEKIE1Cd3hHakFZQmdOVkJBTU1FWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBNSUlCSWpBTkJn
a3Foa2lHOXcwQkFRRUYKLUFBT0NBUThBTUlJQkNnS0NBUUVBMkZOb08xWFNqbFU4VDdpQWRMZ2RT
WXc4MHJXMUZTSTNnU1ZDNTFpcXRxcSsKLURqQ09vSmRQOTREWjZhSDA2MWcvbzVZb3VOcGFxZzFC
MzJ3ZFVxN055QllDc0Fwd2tWZCtwZHNRcFAwNzl3YlYKLXRZbHFramJHWnNXbTBteDI5VTlLeTI3
RGt5Miswais5RktkS09WcndHTnhCRzNDQVpZR0ZSYU9xR2ZEK1ZlMFEKLTJWWnNqVlJwUzk1RkFR
OVFvWWZYREVNaW5SdE9zdXh1ZHVPczlzSFpzR25vTUJxN1BkT2Q0NHh3UVhjaUFseXgKLU15dUMz
dHE0R1BUU21CcHE4S0FrVnFnSzZRd2l6emhzUTVvbTlvWFp0Ujl0NU0vdE9TTlQyNk9PZmlicllS
dE8KLVhheXdRcjRlWEU0WWdHTnNEUWxvQ0FhaDlBUUx3emVTNktvT3hkRkx3UUlEQVFBQm80SUI1
RENDQWVBd0NRWUQKLVZSMFRCQUl3QURBZEJnTlZIUTRFRmdRVTNDZHNkT1pITVpYWXpKWmI1SlJ1
akNJdksrb3dId1lEVlIwakJCZ3cKLUZvQVVXOXJJd1FuelRaSXd2TzlEK3lhVEhxNE5tZzh3Q3dZ
RFZSMFBCQVFEQWdYZ01CTUdBMVVkSlFRTU1Bb0cKLUNDc0dBUVVGQndNQk1JSUJid1lEVlIwUkJJ
SUJaakNDQVdLQ0VYZGxZaTF3YkdGMFptOXliUzUwWlhOMGdoVnUKK0FBT0NBUThBTUlJQkNnS0NB
UUVBcTJWMVY1amo1YXFQL3RzWTllVDRIR1JoeHFQMjZINGtFTjRKZWlTOVZWOVIKK3FiV0NEWVU2
dHJGSVh6ZkxRbS9uQjhzMnFUdmFGSnNLc0tlVktlN1NlQ0tlN2hOZjhNRXNWWEx3bXNCdWZ6emUK
K1lnK3g5c0xKaEthUjF6bk55NWRQT2Y0TTNyUHRmalovcWdFWnFkV3hmNzQ2WlErbFhSOXF3VnQ3
Q2R3d0tBV3EKK0Y1UURIM2tRQlE2V3FtdnZaY1RLek9WcEZCNTNVUHJoRE9wR2NucjRjcWRObHd6
OUx5OERRclR5eGdkSHBnQUgKK3d1OGFjRVJsUmtyUkxGSVgvNW5QY2pUV2lvS2dTaU5KNktGWjds
TjBSblNoejlmTDNJN1FVbGRKV0lJMzRQV3QKK096Z2J0WVlFSDM0YUg0dGdjblgyZ3FRUURNeFla
YnRic3JPbW9WWkNhUUlEQVFBQm80SUorakNDQ2ZZd0NRWUQKK1ZSMFRCQUl3QURBZEJnTlZIUTRF
RmdRVUtoZ0xDU0p1S05MYi9jSXRRS2J6T0dKdXg4VXdId1lEVlIwakJCZ3cKK0ZvQVVRVW4vakda
UVg0ZWhCcWk3cTRyZGN3ME9OeG93Q3dZRFZSMFBCQVFEQWdYZ01CTUdBMVVkSlFRTU1Bb0cKK0ND
c0dBUVVGQndNQk1JSUpoUVlEVlIwUkJJSUpmRENDQ1hpQ0VYZGxZaTF3YkdGMFptOXliUzUwWlhO
MGdoVnUKIGIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NGWGQzZHk1M1pXSXRjR3hoZEdadmNt
MHVkR1Z6ZElJV2QzZDMKIE1TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSVdkM2QzTWk1M1pXSXRj
R3hoZEdadmNtMHVkR1Z6ZElJWmQzZDMKLUxtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUlh
ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKLWMzU0NHbmQzZHpFdWJtOTBMWGRsWWkx
d2JHRjBabTl5YlM1MFpYTjBnaDU0YmkwdGJIWmxMVFpzWVdRdWQyVmkKLUxYQnNZWFJtYjNKdExu
UmxjM1NDSW5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmwKLWMzU0NL
WGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdp
MTQKLWJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRM
blJsYzNRd0RRWUoKLUtvWklodmNOQVFFTEJRQURnZ0VCQUJXWWFHa2w5dmZXQ1F0YjFxeldTUVlP
Sk9IdXVVU2UwUU1EN1RxeitTUEUKLUZPaitVM0J3SWFiVTQrNk51b1E0elhFeXgwckE4VFBydmJ6
dDh0amN3NmVucGtkcWFXd1c2dVpOZkhjWURUNkcKLUtaRXJTZFhKR1JwVEZxZndBdlJ3b3VXTHZL
cW1iMDliUUNRRWFCR2RuaVlnOHVOb05wcjZqM3l3S1FnM3hBWUkKLS9PUkZ1MHg0cml6eHdiL1pJ
eGZsUXhnT0J0aE10Q3J2K1h5L0F0SmlVWUx0bldTRFBRUE5ZVGpBVjhaZVd6cEIKLWtkcytnd1ZM
aUlUanJyNU5YZmxaQnd3aEZ2cCtyeU9YQlNWTXV3TFRFVXFGYU1Pano5QU1GVW4yTWd2MktnR1IK
LVBLM0hNZHJhUStJczIxTEZONkREekRwYkszYmxkSFFnRzhQM0RQNXR2N3M9CitMbTV2ZEMxM1pX
SXRjR3hoZEdadmNtMHVkR1Z6ZElJWmQzZDNMbmQzZHk1M1pXSXRjR3hoZEdadmNtMHVkR1Z6Citk
SUlhZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDR25kM2R6RXVibTkwTFhkbFlp
MXdiR0YwCitabTl5YlM1MFpYTjBnaHAzZDNjdWQzZDNNaTUzWldJdGNHeGhkR1p2Y20wdWRHVnpk
SUlhZDNkM01pNTNkM2N1CitkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHbmQzZHpFdWQzZDNMbmRs
WWkxd2JHRjBabTl5YlM1MFpYTjBnaHAzCitkM2N1ZDNkM01TNTNaV0l0Y0d4aGRHWnZjbTB1ZEdW
emRJSWJkM2QzTVM1M2QzY3hMbmRsWWkxd2JHRjBabTl5CitiUzUwWlhOMGdodDNkM2N4TG5kM2R6
SXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NHM2QzZHpJdWQzZDNNaTUzCitaV0l0Y0d4aGRHWnZj
bTB1ZEdWemRJSWJkM2QzTWk1M2QzY3hMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaDEzCitkM2N1
ZDNkM0xtNXZkQzEzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNkM0xuZDNkekl1Ym05MExYZGxZ
aTF3CitiR0YwWm05eWJTNTBaWE4wZ2g1M2QzY3hMbmQzZHk1dWIzUXRkMlZpTFhCc1lYUm1iM0p0
TG5SbGMzU0NIbmh1CitMUzFzZG1VdE5teGhaQzUzWldJdGNHeGhkR1p2Y20wdWRHVnpkSUllZDNk
M0xuZDNkekV1Ym05MExYZGxZaTF3CitiR0YwWm05eWJTNTBaWE4wZ2g1M2QzY3lMbmQzZHk1dWIz
UXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NIM2QzCitkekl1ZDNkM01pNXViM1F0ZDJWaUxYQnNZ
WFJtYjNKdExuUmxjM1NDSDNkM2R6SXVkM2QzTVM1dWIzUXRkMlZpCitMWEJzWVhSbWIzSnRMblJs
YzNTQ0gzZDNkekV1ZDNkM01TNXViM1F0ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitIM2QzZHpF
dWQzZDNNaTV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0luaHVMUzFzZG1VdE5teGhaQzUz
CitkM2N1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDSW5kM2R5NTRiaTB0YkhabExUWnNZV1F1ZDJW
aUxYQnNZWFJtCitiM0p0TG5SbGMzU0NJbmh1TFMxc2RtVXRObXhoWkM1dWIzUXRkMlZpTFhCc1lY
Um1iM0p0TG5SbGMzU0NJM2h1CitMUzFzZG1VdE5teGhaQzUzZDNjeExuZGxZaTF3YkdGMFptOXli
UzUwWlhOMGdpTjNkM2N5TG5odUxTMXNkbVV0CitObXhoWkM1M1pXSXRjR3hoZEdadmNtMHVkR1Z6
ZElJamQzZDNNUzU0YmkwdGJIWmxMVFpzWVdRdWQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDSTNo
dUxTMXNkbVV0Tm14aFpDNTNkM2N5TG5kbFlpMXdiR0YwWm05eWJTNTBaWE4wCitnaVo0YmkwdGJI
WmxMVFpzWVdRdWQzZDNMbTV2ZEMxM1pXSXRjR3hoZEdadmNtMHVkR1Z6ZElJbWQzZDNMbmh1CitM
UzFzZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0ozaHVMUzFzZG1VdE5t
eGhaQzUzCitkM2N4TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSW5kM2QzTWk1NGJpMHRi
SFpsTFRac1lXUXVibTkwCitMWGRsWWkxd2JHRjBabTl5YlM1MFpYTjBnaWQzZDNjeExuaHVMUzFz
ZG1VdE5teGhaQzV1YjNRdGQyVmlMWEJzCitZWFJtYjNKdExuUmxjM1NDSjNodUxTMXNkbVV0Tm14
aFpDNTNkM2N5TG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1CitkR1Z6ZElJcGVHNHRMVzQ0YWpaa2N6
VXpiSGQzYTNKeGFIWXlPR0V1ZDJWaUxYQnNZWFJtYjNKdExuUmxjM1NDCitLM2h1TFMxc2RtVXRO
bXhoWkM1NGJpMHRiSFpsTFRac1lXUXVkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NMWGh1CitMUzF1
T0dvMlpITTFNMngzZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSXRl
RzR0CitMVzQ0YWpaa2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM0xuZGxZaTF3YkdGMFptOXliUzUw
WlhOMGdpMTNkM2N1CitlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ0xuZDNkekV1CitlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhhSFl5T0dFdWQy
VmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1CitPR28yWkhNMU0yeDNkMnR5Y1doMk1qaGhM
bmQzZHpFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xuZDNkekl1CitlRzR0TFc0NGFqWmtjelV6
YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0xuaHVMUzF1CitPR28yWkhN
MU0yeDNkMnR5Y1doMk1qaGhMbmQzZHpJdWQyVmlMWEJzWVhSbWIzSnRMblJsYzNTQ0wzaHVMUzFz
CitkbVV0Tm14aFpDNTRiaTB0YkhabExUWnNZV1F1Ym05MExYZGxZaTF3YkdGMFptOXliUzUwWlhO
MGdqRjRiaTB0CitiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzUzZDNjdWJtOTBMWGRsWWkxd2JH
RjBabTl5YlM1MFpYTjBnakYzCitkM2N1ZUc0dExXNDRhalprY3pVemJIZDNhM0p4YUhZeU9HRXVi
bTkwTFhkbFlpMXdiR0YwWm05eWJTNTBaWE4wCitnakozZDNjeExuaHVMUzF1T0dvMlpITTFNMngz
ZDJ0eWNXaDJNamhoTG01dmRDMTNaV0l0Y0d4aGRHWnZjbTB1CitkR1Z6ZElJeWVHNHRMVzQ0YWpa
a2N6VXpiSGQzYTNKeGFIWXlPR0V1ZDNkM01pNXViM1F0ZDJWaUxYQnNZWFJtCitiM0p0TG5SbGMz
U0NNbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuZDNkekV1Ym05MExYZGxZaTF3Citi
R0YwWm05eWJTNTBaWE4wZ2pKM2QzY3lMbmh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExt
NXZkQzEzCitaV0l0Y0d4aGRHWnZjbTB1ZEdWemRJSTJlRzR0TFc0NGFqWmtjelV6YkhkM2EzSnhh
SFl5T0dFdWVHNHRMV3gyCitaUzAyYkdGa0xuZGxZaTF3YkdGMFptOXliUzUwWlhOMGdqWjRiaTB0
YkhabExUWnNZV1F1ZUc0dExXNDRhalprCitjelV6YkhkM2EzSnhhSFl5T0dFdWQyVmlMWEJzWVhS
bWIzSnRMblJsYzNTQ09uaHVMUzFzZG1VdE5teGhaQzU0CitiaTB0YmpocU5tUnpOVE5zZDNkcmNu
Rm9kakk0WVM1dWIzUXRkMlZpTFhCc1lYUm1iM0p0TG5SbGMzU0NPbmh1CitMUzF1T0dvMlpITTFN
MngzZDJ0eWNXaDJNamhoTG5odUxTMXNkbVV0Tm14aFpDNXViM1F0ZDJWaUxYQnNZWFJtCitiM0p0
TG5SbGMzU0NRWGh1TFMxdU9HbzJaSE0xTTJ4M2QydHljV2gyTWpoaExuaHVMUzF1T0dvMlpITTFN
MngzCitkMnR5Y1doMk1qaGhMbmRsWWkxd2JHRjBabTl5YlM1MFpYTjBna1Y0YmkwdGJqaHFObVJ6
TlROc2QzZHJjbkZvCitkakk0WVM1NGJpMHRiamhxTm1Sek5UTnNkM2RyY25Gb2RqSTRZUzV1YjNR
dGQyVmlMWEJzWVhSbWIzSnRMblJsCitjM1F3RFFZSktvWklodmNOQVFFTEJRQURnZ0VCQUsvQzZz
eHFYa25nMjNJVUJUd2hvSXYvdHFseGd2ZGh6U01xCitBR2FSckFHWll6Z1JJWVd5VjVJTFAzbG85
ZGhaaTZkMEdlc0w1ejJHVG1iVTVpLy83V3g5bWw0U1RyODUvL2ZRCisrMUpUb1B1eFhKcVJrallB
MktSditadzJJYkxDWGhRUnlsWG5pREJnalliYVpTYi80a1UyS2drOXBMczRZVTFYCis1TW0yVUR3
R0wydS9CRFJDVk54VHRtSEZUa0FBMWw0WkZ6cFVMTVVXZW0xS2NGWkZ6WmxhS3RHblRqV1hQZGpK
CitsWUNyRlVLRzlxQ213eUhCbWdjMFNhMWhQTHlVc2kyUzkwU0FBVjhudllQMVVTSTV6Wml4T1NP
NDlGd0lJSjcrCis4UzJhNlp2SFhyZ3ppeFozVWozSmVrT2VKZERIV3BZSVV4cmNkVk4xUkdJWWZP
LzdjMUk9CiAtLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL19faW5pdF9fLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9fX2lu
aXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5l
NjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL19faW5pdF9f
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQg
Zm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9iZWZvcmVfaW5zdGFsbC5zaCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvYmVmb3JlX2luc3Rh
bGwuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZWY4NGYwMDI2ODFhMDFhNzcz
NjdjNDZmNWM2MjZmNTJiNDk4ZjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS9iZWZvcmVfaW5zdGFsbC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAK
LSMhL2Jpbi9iYXNoCi1zZXQgLWUKLQotUkVMRVZBTlRfSk9CUz0kKC4vd3B0IHRlc3Qtam9icykK
LVJFTEVWQU5UX0NIQU5HRVM9JChlY2hvICIkUkVMRVZBTlRfSk9CUyIgfCBncmVwICRKT0IgfHwg
dHJ1ZSkKLWlmIFtbIC16ICR7UlVOX0pPQit4fSAmJiAhIC16ICRSRUxFVkFOVF9DSEFOR0VTIF1d
IHx8IFtbICRSVU5fSk9CIC1lcSAxIF1dOyB0aGVuCi0gICAgZXhwb3J0IFJVTl9KT0I9MQotICAg
IGdpdCBzdWJtb2R1bGUgdXBkYXRlIC0taW5pdCAtLXJlY3Vyc2l2ZSAxPiYyCi0gICAgZXhwb3J0
IERJU1BMQVk9Ojk5LjAKLSAgICBzaCAtZSAvZXRjL2luaXQuZC94dmZiIHN0YXJ0IDE+JjIKLSAg
ICAjIEZvciB1cGxvYWRpbmcgdGhlIG1hbmlmZXN0Ci0gICAgZXhwb3J0IFdQVF9NQU5JRkVTVF9G
SUxFPSRIT01FL21ldGEvTUFOSUZFU1QtJChnaXQgcmV2LXBhcnNlIEhFQUQpLmpzb24KLWVsaWYg
W1sgLXogJHtSVU5fSk9CK3h9IF1dOyB0aGVuCi0gICAgZXhwb3J0IFJVTl9KT0I9MAotZmkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvY2hlY2tfc3RhYmlsaXR5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaGVja19zdGFiaWxpdHkucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDMyMzVjZWU1YWM2ODA2ZjhmOTEyNTA3YTdlYzk5ZTUyYzczZDdjOWEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaGVja19zdGFiaWxp
dHkucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMTMgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgb3MKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1mcm9tIENvbmZpZ1BhcnNl
ciBpbXBvcnQgU2FmZUNvbmZpZ1BhcnNlcgotCi1oZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmls
ZV9fKQotd3B0X3Jvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBh
cmRpciwgb3MucGFyZGlyKSkKLXN5cy5wYXRoLmluc2VydCgwLCB3cHRfcm9vdCkKLQotZnJvbSB0
b29scy53cHQgaW1wb3J0IHRlc3RmaWxlcwotZnJvbSB0b29scy53cHQudGVzdGZpbGVzIGltcG9y
dCBnZXRfZ2l0X2NtZAotZnJvbSB0b29scy53cHQudmlydHVhbGVudiBpbXBvcnQgVmlydHVhbGVu
dgotZnJvbSB0b29scy53cHQudXRpbHMgaW1wb3J0IEt3YXJncwotZnJvbSB0b29scy53cHQucnVu
IGltcG9ydCBjcmVhdGVfcGFyc2VyLCBzZXR1cF93cHRydW5uZXIKLWZyb20gdG9vbHMud3B0IGlt
cG9ydCBtYXJrZG93bgotZnJvbSB0b29scyBpbXBvcnQgbG9jYWxwYXRocyAgIyBub3FhOiBGNDAx
Ci0KLWxvZ2dlciA9IE5vbmUKLXJ1bl9zdGVwLCB3cml0ZV9pbmNvbnNpc3RlbnQsIHdyaXRlX3Jl
c3VsdHMgPSBOb25lLCBOb25lLCBOb25lCi13cHRydW5uZXIgPSBOb25lCi0KLWRlZiBzZXR1cF9s
b2dnaW5nKCk6Ci0gICAgIiIiU2V0IHVwIGJhc2ljIGRlYnVnIGxvZ2dlci4iIiIKLSAgICBnbG9i
YWwgbG9nZ2VyCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoaGVyZSkKLSAgICBoYW5k
bGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRvdXQpCi0gICAgZm9ybWF0dGVyID0g
bG9nZ2luZy5Gb3JtYXR0ZXIobG9nZ2luZy5CQVNJQ19GT1JNQVQsIE5vbmUpCi0gICAgaGFuZGxl
ci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQotICAgIGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIp
Ci0gICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCi0KLQotZGVmIGRvX2RlbGF5ZWRf
aW1wb3J0cygpOgotICAgIGdsb2JhbCB3cHRydW5uZXIsIHJ1bl9zdGVwLCB3cml0ZV9pbmNvbnNp
c3RlbnQsIHdyaXRlX3Jlc3VsdHMKLSAgICBmcm9tIHdwdHJ1bm5lciBpbXBvcnQgd3B0cnVubmVy
Ci0gICAgZnJvbSB3cHRydW5uZXIuc3RhYmlsaXR5IGltcG9ydCBydW5fc3RlcCwgd3JpdGVfaW5j
b25zaXN0ZW50LCB3cml0ZV9yZXN1bHRzCi0KLQotY2xhc3MgVHJhdmlzRm9sZChvYmplY3QpOgot
ICAgICIiIkNvbnRleHQgZm9yIFRyYXZpc0NJIGZvbGRpbmcgbWVjaGFuaXNtLiBTdWJjbGFzc2Vz
IG9iamVjdC4KLQotICAgIFNlZTogaHR0cHM6Ly9ibG9nLnRyYXZpcy1jaS5jb20vMjAxMy0wNS0y
Mi1pbXByb3ZpbmctYnVpbGQtdmlzaWJpbGl0eS1sb2ctZm9sZHMvCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlJlZ2lzdGVyIFRyYXZpc0NJIGZv
bGRpbmcgc2VjdGlvbiBuYW1lLiIiIgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAgICBk
ZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICAiIiJFbWl0IGZvbGQgc3RhcnQgc3ludGF4LiIi
IgotICAgICAgICBwcmludCgidHJhdmlzX2ZvbGQ6c3RhcnQ6JXMiICUgc2VsZi5uYW1lLCBmaWxl
PXN5cy5zdGRlcnIpCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRyYWNl
YmFjayk6Ci0gICAgICAgICIiIkVtaXQgZm9sZCBlbmQgc3ludGF4LiIiIgotICAgICAgICBwcmlu
dCgidHJhdmlzX2ZvbGQ6ZW5kOiVzIiAlIHNlbGYubmFtZSwgZmlsZT1zeXMuc3RkZXJyKQotCi0K
LWNsYXNzIEZpbHRlcmVkSU8ob2JqZWN0KToKLSAgICAiIiJXcmFwIGEgZmlsZSBvYmplY3QsIGlu
dm9raW5nIHRoZSBwcm92aWRlZCBjYWxsYmFjayBmb3IgZXZlcnkgY2FsbCB0bwotICAgIGB3cml0
ZWAgYW5kIG9ubHkgcHJvY2VlZGluZyB3aXRoIHRoZSBvcGVyYXRpb24gd2hlbiB0aGF0IGNhbGxi
YWNrIHJldHVybnMKLSAgICBUcnVlLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcmlnaW5h
bCwgb25fd3JpdGUpOgotICAgICAgICBzZWxmLm9yaWdpbmFsID0gb3JpZ2luYWwKLSAgICAgICAg
c2VsZi5vbl93cml0ZSA9IG9uX3dyaXRlCi0KLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFt
ZSk6Ci0gICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYub3JpZ2luYWwsIG5hbWUpCi0KLSAgICBk
ZWYgZGlzYWJsZShzZWxmKToKLSAgICAgICAgc2VsZi53cml0ZSA9IGxhbWJkYSBtc2c6IE5vbmUK
LQotICAgIGRlZiB3cml0ZShzZWxmLCBtc2cpOgotICAgICAgICBlbmNvZGVkID0gbXNnLmVuY29k
ZSgidXRmOCIsICJiYWNrc2xhc2hyZXBsYWNlIikuZGVjb2RlKCJ1dGY4IikKLSAgICAgICAgaWYg
c2VsZi5vbl93cml0ZShzZWxmLm9yaWdpbmFsLCBlbmNvZGVkKSBpcyBUcnVlOgotICAgICAgICAg
ICAgc2VsZi5vcmlnaW5hbC53cml0ZShlbmNvZGVkKQotCi0KLWRlZiByZXBsYWNlX3N0cmVhbXMo
Y2FwYWNpdHksIHdhcm5pbmdfbXNnKToKLSAgICAjIFZhbHVlIG11c3QgYmUgYm94ZWQgdG8gc3Vw
cG9ydCBtb2RpZmljYXRpb24gZnJvbSBpbm5lciBmdW5jdGlvbiBzY29wZQotICAgIGNvdW50ID0g
WzBdCi0gICAgY2FwYWNpdHkgLT0gMiArIGxlbih3YXJuaW5nX21zZykKLSAgICBzdGRlcnIgPSBz
eXMuc3RkZXJyCi0KLSAgICBkZWYgb25fd3JpdGUoaGFuZGxlLCBtc2cpOgotICAgICAgICBsZW5n
dGggPSBsZW4obXNnKQotICAgICAgICBjb3VudFswXSArPSBsZW5ndGgKLQotICAgICAgICBpZiBj
b3VudFswXSA+IGNhcGFjaXR5OgotICAgICAgICAgICAgd3JhcHBlZF9zdGRvdXQuZGlzYWJsZSgp
Ci0gICAgICAgICAgICB3cmFwcGVkX3N0ZGVyci5kaXNhYmxlKCkKLSAgICAgICAgICAgIGhhbmRs
ZS53cml0ZShtc2dbMDpjYXBhY2l0eSAtIGNvdW50WzBdXSkKLSAgICAgICAgICAgIGhhbmRsZS5m
bHVzaCgpCi0gICAgICAgICAgICBzdGRlcnIud3JpdGUoIlxuJXNcbiIgJSB3YXJuaW5nX21zZykK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAj
IFN0b3JlIGxvY2FsIHJlZmVyZW5jZXMgdG8gdGhlIHJlcGxhY2VkIHN0cmVhbXMgdG8gZ3VhcmQg
YWdhaW5zdCB0aGUgY2FzZQotICAgICMgd2hlcmUgb3RoZXIgY29kZSByZXBsYWNlIHRoZSBnbG9i
YWwgcmVmZXJlbmNlcy4KLSAgICBzeXMuc3Rkb3V0ID0gd3JhcHBlZF9zdGRvdXQgPSBGaWx0ZXJl
ZElPKHN5cy5zdGRvdXQsIG9uX3dyaXRlKQotICAgIHN5cy5zdGRlcnIgPSB3cmFwcGVkX3N0ZGVy
ciA9IEZpbHRlcmVkSU8oc3lzLnN0ZGVyciwgb25fd3JpdGUpCi0KLQotZGVmIGNhbGwoKmFyZ3Mp
OgotICAgICIiIkxvZyB0ZXJtaW5hbCBjb21tYW5kLCBpbnZva2UgaXQgYXMgYSBzdWJwcm9jZXNz
LgotCi0gICAgUmV0dXJucyBhIGJ5dGVzdHJpbmcgb2YgdGhlIHN1YnByb2Nlc3Mgb3V0cHV0IGlm
IG5vIGVycm9yLgotICAgICIiIgotICAgIGxvZ2dlci5kZWJ1ZygiJXMiICUgIiAiLmpvaW4oYXJn
cykpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoYXJn
cykKLSAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKLSAgICAg
ICAgbG9nZ2VyLmNyaXRpY2FsKCIlcyBleGl0ZWQgd2l0aCByZXR1cm4gY29kZSAlaSIgJQotICAg
ICAgICAgICAgICAgICAgICAgICAgKGUuY21kLCBlLnJldHVybmNvZGUpKQotICAgICAgICBsb2dn
ZXIuY3JpdGljYWwoZS5vdXRwdXQpCi0gICAgICAgIHJhaXNlCi0KLWRlZiBmZXRjaF93cHQodXNl
ciwgKmFyZ3MpOgotICAgIGdpdCA9IGdldF9naXRfY21kKHdwdF9yb290KQotICAgIGdpdCgiZmV0
Y2giLCAiaHR0cHM6Ly9naXRodWIuY29tLyVzL3dlYi1wbGF0Zm9ybS10ZXN0cy5naXQiICUgdXNl
ciwgKmFyZ3MpCi0KLQotZGVmIGdldF9zaGExKCk6Ci0gICAgIiIiIEdldCBhbmQgcmV0dXJuIHNo
YTEgb2YgY3VycmVudCBnaXQgYnJhbmNoIEhFQUQgY29tbWl0LiIiIgotICAgIGdpdCA9IGdldF9n
aXRfY21kKHdwdF9yb290KQotICAgIHJldHVybiBnaXQoInJldi1wYXJzZSIsICJIRUFEIikuc3Ry
aXAoKQotCi0KLWRlZiBkZWVwZW5fY2hlY2tvdXQodXNlcik6Ci0gICAgIiIiQ29udmVydCBmcm9t
IGEgc2hhbGxvdyBjaGVja291dCB0byBhIGZ1bGwgb25lIiIiCi0gICAgZmV0Y2hfYXJncyA9IFt1
c2VyLCAiK3JlZnMvaGVhZHMvKjpyZWZzL3JlbW90ZXMvb3JpZ2luLyoiXQotICAgIGlmIG9zLnBh
dGguZXhpc3RzKG9zLnBhdGguam9pbih3cHRfcm9vdCwgIi5naXQiLCAic2hhbGxvdyIpKToKLSAg
ICAgICAgZmV0Y2hfYXJncy5pbnNlcnQoMSwgIi0tdW5zaGFsbG93IikKLSAgICBmZXRjaF93cHQo
KmZldGNoX2FyZ3MpCi0KLQotZGVmIGdldF9wYXJzZXIoKToKLSAgICAiIiJDcmVhdGUgYW5kIHJl
dHVybiBzY3JpcHQtc3BlY2lmaWMgYXJndW1lbnQgcGFyc2VyLiIiIgotICAgIGRlc2NyaXB0aW9u
ID0gIiIiRGV0ZWN0IGluc3RhYmlsaXRpZXMgaW4gbmV3IHRlc3RzIGJ5IGV4ZWN1dGluZyB0ZXN0
cwotICAgIHJlcGVhdGVkbHkgYW5kIGNvbXBhcmluZyByZXN1bHRzIGJldHdlZW4gZXhlY3V0aW9u
cy4iIiIKLSAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj1k
ZXNjcmlwdGlvbikKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLXVzZXIiLAotICAgICAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAj
IFRyYXZpcyBkb2NzIHNheSBkbyBub3QgZGVwZW5kIG9uIFVTRVIgZW52IHZhcmlhYmxlLgotICAg
ICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgd29ya2Fyb3VuZCB0byBnZXQgd2hhdCBz
aG91bGQgYmUgdGhlIHNhbWUgdmFsdWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
b3MuZW52aXJvbi5nZXQoIlRSQVZJU19SRVBPX1NMVUciLCAidzNjIikuc3BsaXQoJy8nKVswXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IlRyYXZpcyB1c2VyIG5hbWUiKQotICAgIHBh
cnNlci5hZGRfYXJndW1lbnQoIi0tb3V0cHV0LWJ5dGVzIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGFjdGlvbj0ic3RvcmUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsCi0g
ICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJNYXhpbXVtIG51bWJlciBvZiBieXRlcyB0byB3
cml0ZSB0byBzdGFuZGFyZCBvdXRwdXQvZXJyb3IiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQo
Ii0tbWV0YWRhdGEiLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ibWV0YWRhdGFfcm9v
dCIsCi0gICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9d3B0X3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJEaXJlY3RvcnkgdGhhdCB3aWxsIGNvbnRhaW4gTUFOSUZFU1QuanNvbiIpCi0gICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS1jb25maWctZmlsZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9c3RyLAotICAg
ICAgICAgICAgICAgICAgICAgICAgaGVscD0iTG9jYXRpb24gb2YgaW5pLWZvcm1hdHRlZCBjb25m
aWd1cmF0aW9uIGZpbGUiLAotICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0iY2hlY2tf
c3RhYmlsaXR5LmluaSIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1yZXYiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJDb21taXQgcmFu
Z2UgdG8gdXNlIikKLSAgICByZXR1cm4gcGFyc2VyCi0KLQotZGVmIHByKCk6Ci0gICAgcHIgPSBv
cy5lbnZpcm9uLmdldCgiVFJBVklTX1BVTExfUkVRVUVTVCIsICJmYWxzZSIpCi0gICAgcmV0dXJu
IHByIGlmIHByICE9ICJmYWxzZSIgZWxzZSBOb25lCi0KLQotZGVmIGdldF9jaGFuZ2VkX2ZpbGVz
KG1hbmlmZXN0X3BhdGgsIHJldiwgaWdub3JlX2NoYW5nZXMsIHNraXBfdGVzdHMpOgotICAgIGlm
IG5vdCByZXY6Ci0gICAgICAgIGJyYW5jaF9wb2ludCA9IHRlc3RmaWxlcy5icmFuY2hfcG9pbnQo
KQotICAgICAgICByZXZpc2ggPSAiJXMuLkhFQUQiICUgYnJhbmNoX3BvaW50Ci0gICAgZWxzZToK
LSAgICAgICAgcmV2aXNoID0gcmV2Ci0KLSAgICBmaWxlc19jaGFuZ2VkLCBmaWxlc19pZ25vcmVk
ID0gdGVzdGZpbGVzLmZpbGVzX2NoYW5nZWQocmV2aXNoLCBpZ25vcmVfY2hhbmdlcykKLQotICAg
IGlmIGZpbGVzX2lnbm9yZWQ6Ci0gICAgICAgIGxvZ2dlci5pbmZvKCJJZ25vcmluZyAlcyBjaGFu
Z2VkIGZpbGVzOlxuJXMiICUKLSAgICAgICAgICAgICAgICAgICAgKGxlbihmaWxlc19pZ25vcmVk
KSwgIiIuam9pbigiICogJXNcbiIgJSBpdGVtIGZvciBpdGVtIGluIGZpbGVzX2lnbm9yZWQpKSkK
LQotICAgIHRlc3RzX2NoYW5nZWQsIGZpbGVzX2FmZmVjdGVkID0gdGVzdGZpbGVzLmFmZmVjdGVk
X3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCBza2lwX3Rlc3RzLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9w
YXRoPW1hbmlmZXN0X3BhdGgpCi0KLSAgICByZXR1cm4gdGVzdHNfY2hhbmdlZCwgZmlsZXNfYWZm
ZWN0ZWQKLQotCi1kZWYgbWFpbigpOgotICAgICIiIlBlcmZvcm0gY2hlY2tfc3RhYmlsaXR5IGZ1
bmN0aW9uYWxpdHkgYW5kIHJldHVybiBleGl0IGNvZGUuIiIiCi0KLSAgICB2ZW52ID0gVmlydHVh
bGVudihvcy5lbnZpcm9uLmdldCgiVklSVFVBTF9FTlYiLCBvcy5wYXRoLmpvaW4od3B0X3Jvb3Qs
ICJfdmVudiIpKSkKLSAgICB2ZW52Lmluc3RhbGxfcmVxdWlyZW1lbnRzKG9zLnBhdGguam9pbih3
cHRfcm9vdCwgInRvb2xzIiwgIndwdHJ1bm5lciIsICJyZXF1aXJlbWVudHMudHh0IikpCi0KLSAg
ICBhcmdzLCB3cHRfYXJncyA9IGdldF9wYXJzZXIoKS5wYXJzZV9rbm93bl9hcmdzKCkKLSAgICBy
ZXR1cm4gcnVuKHZlbnYsIHdwdF9hcmdzLCAqKnZhcnMoYXJncykpCi0KLQotZGVmIHJ1bih2ZW52
LCB3cHRfYXJncywgKiprd2FyZ3MpOgotICAgIGRvX2RlbGF5ZWRfaW1wb3J0cygpCi0KLSAgICBy
ZXRjb2RlID0gMAotCi0gICAgd3B0X2FyZ3MgPSBjcmVhdGVfcGFyc2VyKCkucGFyc2VfYXJncyh3
cHRfYXJncykKLQotICAgIHdpdGggb3Blbihrd2FyZ3NbImNvbmZpZ19maWxlIl0sICdyJykgYXMg
Y29uZmlnX2ZwOgotICAgICAgICBjb25maWcgPSBTYWZlQ29uZmlnUGFyc2VyKCkKLSAgICAgICAg
Y29uZmlnLnJlYWRmcChjb25maWdfZnApCi0gICAgICAgIHNraXBfdGVzdHMgPSBjb25maWcuZ2V0
KCJmaWxlIGRldGVjdGlvbiIsICJza2lwX3Rlc3RzIikuc3BsaXQoKQotICAgICAgICBpZ25vcmVf
Y2hhbmdlcyA9IHNldChjb25maWcuZ2V0KCJmaWxlIGRldGVjdGlvbiIsICJpZ25vcmVfY2hhbmdl
cyIpLnNwbGl0KCkpCi0KLSAgICBpZiBrd2FyZ3NbIm91dHB1dF9ieXRlcyJdIGlzIG5vdCBOb25l
OgotICAgICAgICByZXBsYWNlX3N0cmVhbXMoa3dhcmdzWyJvdXRwdXRfYnl0ZXMiXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICJMb2cgcmVhY2hlZCBjYXBhY2l0eSAoJXMgYnl0ZXMpOyBvdXRw
dXQgZGlzYWJsZWQuIiAlIGt3YXJnc1sib3V0cHV0X2J5dGVzIl0pCi0KLQotICAgIHdwdF9hcmdz
Lm1ldGFkYXRhX3Jvb3QgPSBrd2FyZ3NbIm1ldGFkYXRhX3Jvb3QiXQotICAgIHRyeToKLSAgICAg
ICAgb3MubWFrZWRpcnMod3B0X2FyZ3MubWV0YWRhdGFfcm9vdCkKLSAgICBleGNlcHQgT1NFcnJv
cjoKLSAgICAgICAgcGFzcwotCi0gICAgc2V0dXBfbG9nZ2luZygpCi0KLSAgICBwcl9udW1iZXIg
PSBwcigpCi0KLSAgICB3aXRoIFRyYXZpc0ZvbGQoImJyb3dzZXJfc2V0dXAiKToKLSAgICAgICAg
bG9nZ2VyLmluZm8obWFya2Rvd24uZm9ybWF0X2NvbW1lbnRfdGl0bGUod3B0X2FyZ3MucHJvZHVj
dCkpCi0KLSAgICAgICAgaWYgcHIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkZWVwZW5fY2hl
Y2tvdXQoa3dhcmdzWyJ1c2VyIl0pCi0KLSAgICAgICAgIyBFbnN1cmUgd2UgaGF2ZSBhIGJyYW5j
aCBjYWxsZWQgIm1hc3RlciIKLSAgICAgICAgZmV0Y2hfd3B0KGt3YXJnc1sidXNlciJdLCAibWFz
dGVyOm1hc3RlciIpCi0KLSAgICAgICAgaGVhZF9zaGExID0gZ2V0X3NoYTEoKQotICAgICAgICBs
b2dnZXIuaW5mbygiVGVzdGluZyB3ZWItcGxhdGZvcm0tdGVzdHMgYXQgcmV2aXNpb24gJXMiICUg
aGVhZF9zaGExKQotCi0gICAgICAgIHdwdF9rd2FyZ3MgPSBLd2FyZ3ModmFycyh3cHRfYXJncykp
Ci0KLSAgICAgICAgaWYgbm90IHdwdF9rd2FyZ3NbInRlc3RfbGlzdCJdOgotICAgICAgICAgICAg
bWFuaWZlc3RfcGF0aCA9IG9zLnBhdGguam9pbih3cHRfa3dhcmdzWyJtZXRhZGF0YV9yb290Il0s
ICJNQU5JRkVTVC5qc29uIikKLSAgICAgICAgICAgIHRlc3RzX2NoYW5nZWQsIGZpbGVzX2FmZmVj
dGVkID0gZ2V0X2NoYW5nZWRfZmlsZXMobWFuaWZlc3RfcGF0aCwga3dhcmdzWyJyZXYiXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWdub3JlX2NoYW5nZXMsIHNraXBfdGVzdHMpCi0KLSAgICAgICAgICAgIGlmIG5vdCAodGVz
dHNfY2hhbmdlZCBvciBmaWxlc19hZmZlY3RlZCk6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmlu
Zm8oIk5vIHRlc3RzIGNoYW5nZWQiKQotICAgICAgICAgICAgICAgIHJldHVybiAwCi0KLSAgICAg
ICAgICAgIGlmIHRlc3RzX2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJU
ZXN0cyBjaGFuZ2VkOlxuJXMiICUgIiIuam9pbigiICogJXNcbiIgJSBpdGVtIGZvciBpdGVtIGlu
IHRlc3RzX2NoYW5nZWQpKQotCi0gICAgICAgICAgICBpZiBmaWxlc19hZmZlY3RlZDoKLSAgICAg
ICAgICAgICAgICBsb2dnZXIuZGVidWcoIkFmZmVjdGVkIHRlc3RzOlxuJXMiICUgIiIuam9pbigi
ICogJXNcbiIgJSBpdGVtIGZvciBpdGVtIGluIGZpbGVzX2FmZmVjdGVkKSkKLQotICAgICAgICAg
ICAgd3B0X2t3YXJnc1sidGVzdF9saXN0Il0gPSBsaXN0KHRlc3RzX2NoYW5nZWQgfCBmaWxlc19h
ZmZlY3RlZCkKLQotICAgICAgICBkb19kZWxheWVkX2ltcG9ydHMoKQotCi0gICAgICAgIHdwdF9r
d2FyZ3NbInByb21wdCJdID0gRmFsc2UKLSAgICAgICAgd3B0X2t3YXJnc1siaW5zdGFsbF9icm93
c2VyIl0gPSBUcnVlCi0gICAgICAgIHdwdF9rd2FyZ3NbImluc3RhbGwiXSA9IHdwdF9rd2FyZ3Nb
InByb2R1Y3QiXS5zcGxpdCgiOiIpWzBdID09ICJmaXJlZm94IgotCi0gICAgICAgIHdwdF9rd2Fy
Z3NbInBhdXNlX2FmdGVyX3Rlc3QiXSA9IEZhbHNlCi0gICAgICAgIHdwdF9rd2FyZ3NbInZlcmlm
eV9sb2dfZnVsbCJdID0gRmFsc2UKLSAgICAgICAgaWYgd3B0X2t3YXJnc1sicmVwZWF0Il0gPT0g
MToKLSAgICAgICAgICAgIHdwdF9rd2FyZ3NbInJlcGVhdCJdID0gMTAKLQotICAgICAgICB3cHRf
a3dhcmdzID0gc2V0dXBfd3B0cnVubmVyKHZlbnYsICoqd3B0X2t3YXJncykKLQotICAgICAgICBs
b2dnZXIuaW5mbygiVXNpbmcgYmluYXJ5ICVzIiAlIHdwdF9rd2FyZ3NbImJpbmFyeSJdKQotCi0K
LSAgICB3aXRoIFRyYXZpc0ZvbGQoInJ1bm5pbmdfdGVzdHMiKToKLSAgICAgICAgbG9nZ2VyLmlu
Zm8oIlN0YXJ0aW5nIHRlc3RzIikKLQotICAgICAgICB3cHRfbG9nZ2VyID0gd3B0cnVubmVyLmxv
Z2dlcgotICAgICAgICByZXN1bHRzLCBpbmNvbnNpc3RlbnQsIGl0ZXJhdGlvbnMgPSBydW5fc3Rl
cCh3cHRfbG9nZ2VyLCB3cHRfa3dhcmdzWyJyZXBlYXQiXSwgVHJ1ZSwge30sICoqd3B0X2t3YXJn
cykKLQotICAgIGlmIHJlc3VsdHM6Ci0gICAgICAgIGlmIGluY29uc2lzdGVudDoKLSAgICAgICAg
ICAgIHdyaXRlX2luY29uc2lzdGVudChsb2dnZXIuZXJyb3IsIGluY29uc2lzdGVudCwgaXRlcmF0
aW9ucykKLSAgICAgICAgICAgIHJldGNvZGUgPSAyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBsb2dnZXIuaW5mbygiQWxsIHJlc3VsdHMgd2VyZSBzdGFibGVcbiIpCi0gICAgICAgIHdpdGgg
VHJhdmlzRm9sZCgiZnVsbF9yZXN1bHRzIik6Ci0gICAgICAgICAgICB3cml0ZV9yZXN1bHRzKGxv
Z2dlci5pbmZvLCByZXN1bHRzLCBpdGVyYXRpb25zLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcl9udW1iZXI9cHJfbnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VfZGV0
YWlscz1UcnVlKQotICAgIGVsc2U6Ci0gICAgICAgIGxvZ2dlci5pbmZvKCJObyB0ZXN0cyBydW4u
IikKLSAgICAgICAgIyBCZSBjb25zZXJ2YXRpdmUgYW5kIG9ubHkgcmV0dXJuIGVycm9ycyB3aGVu
IHdlIGtub3cgZm9yIHN1cmUgdGVzdHMgYXJlIGNoYW5nZWQuCi0gICAgICAgIGlmIHRlc3RzX2No
YW5nZWQ6Ci0gICAgICAgICAgICByZXRjb2RlID0gMwotCi0gICAgcmV0dXJuIHJldGNvZGUKLQot
Ci1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHRyeToKLSAgICAgICAgc3lzLmV4aXQo
bWFpbigpKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIGltcG9ydCB0cmFjZWJhY2sK
LSAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgIHN5cy5leGl0KDEpCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2NpX2J1aWx0X2RpZmYuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0X2RpZmYuc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBt
b2RlIDEwMDc1NQppbmRleCAzNGYyNGE3NDI1YjI5ZGE2NzM5Y2RlM2E2ZDdiZGRmODcxNzU5Yzg4
Li43MDljYzJhYTdlNjg2N2Y1NDhkNGVmZGQ2MmQ3NGFiYzE4NWU2NTdiCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfYnVpbHRfZGlm
Zi5zaAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2NpX2J1aWx0X2RpZmYuc2gKQEAgLTEsNyArMSw4IEBACisjIS9iaW4vYmFzaAogc2V0
IC1leAogCi1TQ1JJUFRfRElSPSQoZGlybmFtZSAkKHJlYWRsaW5rIC1mICIkMCIpKQotV1BUX1JP
T1Q9JChyZWFkbGluayAtZiAkU0NSSVBUX0RJUi8uLi8uLikKK1NDUklQVF9ESVI9JChjZCAkKGRp
cm5hbWUgIiQwIikgJiYgcHdkIC1QKQorV1BUX1JPT1Q9JFNDUklQVF9ESVIvLi4vLi4KIGNkICRX
UFRfUk9PVAogCiBtYWluKCkgewpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9saW50LnNoIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9saW50LnNoCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmIzMTdlMWExOTNiNTcxNjFjNTI0YjJjMTBiM2Q0MmZk
M2JlYWRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfbGlu
dC5zaAorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotc2V0IC1leAotCi1TQ1JJUFRfRElS
PSQoZGlybmFtZSAkKHJlYWRsaW5rIC1mICIkMCIpKQotV1BUX1JPT1Q9JChyZWFkbGluayAtZiAk
U0NSSVBUX0RJUi8uLi8uLikKLWNkICRXUFRfUk9PVAotCi1ta2RpciAtcCB+L21ldGEKLS4vd3B0
IG1hbmlmZXN0IC1wIH4vbWV0YS9NQU5JRkVTVC5qc29uCi0uL3dwdCBsaW50CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2Np
X21hbmlmZXN0LnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS9jaV9tYW5pZmVzdC5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZjEzYTcwZjkzNTQzNmE1MDI1ODExNWNmMDA2ZDY5MTNkMGFmN2VhYi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX21hbmlmZXN0LnNoCisrKyAvZGV2L251bGwK
QEAgLTEsMTMgKzAsMCBAQAotc2V0IC1leAotCi1TQ1JJUFRfRElSPSQoZGlybmFtZSAkKHJlYWRs
aW5rIC1mICIkMCIpKQotV1BUX1JPT1Q9JChyZWFkbGluayAtZiAkU0NSSVBUX0RJUi8uLi8uLikK
LWNkICRXUFRfUk9PVAotCi1ta2RpciAtcCB+L21ldGEKLQotcHl0aG9uIHRvb2xzL2NpL3RhZ19t
YXN0ZXIucHkKLS4vd3B0IG1hbmlmZXN0IC1wIH4vbWV0YS9NQU5JRkVTVC5qc29uCi1jcCB+L21l
dGEvTUFOSUZFU1QuanNvbiAkV1BUX01BTklGRVNUX0ZJTEUKLSMgRm9yY2Ugb3ZlcndyaXRlIG9m
IGFueSBleGlzdGluZyBmaWxlCi1nemlwIC1mICRXUFRfTUFOSUZFU1RfRklMRQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9j
aV9yZXNvdXJjZXNfdW5pdHRlc3Quc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Jlc291cmNlc191bml0dGVzdC5zaApvbGQgbW9kZSAx
MDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDc4ODY4YjkzNDMzZTgwMWY5ODc4MmY2MDVlYjlm
NjY2YzZlZmU5Y2QuLjExMTkwZmM1OGQ2NDQ5MWJhZTcxOWY5YWM5MWFkYjFlODc5ODg2ZmIKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9j
aV9yZXNvdXJjZXNfdW5pdHRlc3Quc2gKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9yZXNvdXJjZXNfdW5pdHRlc3Quc2gKQEAgLTEs
MjMgKzEsMTkgQEAKICMhL2Jpbi9iYXNoCiBzZXQgLWV4CiAKLVNDUklQVF9ESVI9JChkaXJuYW1l
ICQocmVhZGxpbmsgLWYgIiQwIikpCi1XUFRfUk9PVD0kKHJlYWRsaW5rIC1mICRTQ1JJUFRfRElS
Ly4uLy4uKQorU0NSSVBUX0RJUj0kKGNkICQoZGlybmFtZSAiJDAiKSAmJiBwd2QgLVApCitXUFRf
Uk9PVD0kU0NSSVBUX0RJUi8uLi8uLgogY2QgJFdQVF9ST09UCiAKLXNvdXJjZSB0b29scy9jaS9s
aWIuc2gKLQogbWFpbigpIHsKLSAgICBob3N0c19maXh1cAotCiAgICAgY2QgJFdQVF9ST09UCi0g
ICAgcGlwIGluc3RhbGwgLVUgdG94CisgICAgcGlwIGluc3RhbGwgLS11c2VyIC1VIHRveAogICAg
IC4vd3B0IGluc3RhbGwgZmlyZWZveCBicm93c2VyIC0tZGVzdGluYXRpb24gJEhPTUUKICAgICAu
L3dwdCBpbnN0YWxsIGZpcmVmb3ggd2ViZHJpdmVyIC0tZGVzdGluYXRpb24gJEhPTUUvZmlyZWZv
eAogICAgIGV4cG9ydCBQQVRIPSRIT01FL2ZpcmVmb3g6JFBBVEgKIAogICAgIGNkICRXUFRfUk9P
VC9yZXNvdXJjZXMvdGVzdAotICAgIHRveCAtLSAtLWJpbmFyeT0kSE9NRS9icm93c2Vycy9maXJl
Zm94L2ZpcmVmb3gKKyAgICB0b3ggLS0gLS1iaW5hcnk9JEhPTUUvYnJvd3NlcnMvbmlnaHRseS9m
aXJlZm94L2ZpcmVmb3gKIH0KIAogbWFpbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9zdGFiaWxpdHkuc2ggYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3N0YWJp
bGl0eS5zaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTIzYjA1NzM4NTNhNTNmZTU1
MjBkOGZhNmFhYjAyZjgwYjUzYTE4ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2NpX3N0YWJpbGl0eS5zaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAK
LSMhL2Jpbi9iYXNoCi1zZXQgLWV4Ci0KLVNDUklQVF9ESVI9JChkaXJuYW1lICQocmVhZGxpbmsg
LWYgIiQwIikpCi1XUFRfUk9PVD0kKHJlYWRsaW5rIC1mICRTQ1JJUFRfRElSLy4uLy4uKQotY2Qg
JFdQVF9ST09UCi0KLXNvdXJjZSB0b29scy9jaS9saWIuc2gKLQotdGVzdF9zdGFiaWxpdHkoKSB7
Ci0gICAgbG9jYWwgZXh0cmFfYXJnPSQxCi0gICAgLi93cHQgY2hlY2stc3RhYmlsaXR5ICRQUk9E
VUNUICRleHRyYV9hcmcgLS1vdXRwdXQtYnl0ZXMgJCgoMTAyNCAqIDEwMjQgKiAzKSkgLS1tZXRh
ZGF0YSB+L21ldGEvIC0taW5zdGFsbC1mb250cwotfQotCi1tYWluKCkgewotICAgIGhvc3RzX2Zp
eHVwCi0gICAgbG9jYWwgZXh0cmFfYXJnPSIiCi0gICAgaWYgWyAkKGVjaG8gJFBST0RVQ1QgfCBn
cmVwICdeY2hyb21lOicpIF07IHRoZW4KLSAgICAgICAgbG9jYWwgY2hhbm5lbD0kKGVjaG8gJFBS
T0RVQ1QgfCBncmVwIC0tb25seS1tYXRjaGluZyAnXHdcKyQnKQotICAgICAgICBpZiBbWyAkY2hh
bm5lbCA9PSAiZGV2IiBdXTsgdGhlbgotICAgICAgICAgICAgIyBUaGUgcGFja2FnZSBuYW1lIGZv
ciBHb29nbGUgQ2hyb21lIERldiB1c2VzICJ1bnN0YWJsZSIsIG5vdCAiZGV2Ii4KLSAgICAgICAg
ICAgIGNoYW5uZWw9InVuc3RhYmxlIgotICAgICAgICBmaQotICAgICAgICBpbnN0YWxsX2Nocm9t
ZSAkY2hhbm5lbAotICAgICAgICBleHRyYV9hcmc9Ii0tYmluYXJ5PSQod2hpY2ggZ29vZ2xlLWNo
cm9tZS0kY2hhbm5lbCkiCi0gICAgZmkKLSAgICB0ZXN0X3N0YWJpbGl0eSAkZXh0cmFfYXJnCi19
Ci0KLW1haW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvY2lfdGFza2NsdXN0ZXIuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rhc2tjbHVzdGVyLnNoCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTgyNDM4ODFhOTM4YjlkMmNhZTBlYmNlMjY2MmM4
ZWQ0MTZlYWE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lf
dGFza2NsdXN0ZXIuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi0jIS9iaW4vYmFz
aAotCi0uL3dwdCBtYW5pZmVzdC1kb3dubG9hZAotCi1pZiBbICQxID09ICJmaXJlZm94IiBdOyB0
aGVuCi0gICAgLi93cHQgcnVuIGZpcmVmb3ggLS1sb2ctdGJwbD0uLi9hcnRpZmFjdHMvbG9nX3Ri
cGwubG9nIC0tbG9nLXRicGwtbGV2ZWw9aW5mbyAtLWxvZy13cHRyZXBvcnQ9Li4vYXJ0aWZhY3Rz
L3dwdF9yZXBvcnQuanNvbiAtLWxvZy1tYWNoPS0gLS10aGlzLWNodW5rPSQzIC0tdG90YWwtY2h1
bmtzPSQ0IC0tdGVzdC10eXBlPSQyIC15IC0taW5zdGFsbC1icm93c2VyIC0tbm8tcGF1c2UgLS1u
by1yZXN0YXJ0LW9uLXVuZXhwZWN0ZWQgLS1yZWZ0ZXN0LWludGVybmFsIC0taW5zdGFsbC1mb250
cyAtLW5vLWZhaWwtb24tdW5leHBlY3RlZAotZWxpZiBbICQxID09ICJjaHJvbWUiIF07IHRoZW4K
LSAgICAuL3dwdCBydW4gY2hyb21lIC0tbG9nLXRicGw9Li4vYXJ0aWZhY3RzL2xvZ190YnBsLmxv
ZyAtLWxvZy10YnBsLWxldmVsPWluZm8gLS1sb2ctd3B0cmVwb3J0PS4uL2FydGlmYWN0cy93cHRf
cmVwb3J0Lmpzb24gLS1sb2ctbWFjaD0tIC0tdGhpcy1jaHVuaz0kMyAtLXRvdGFsLWNodW5rcz0k
NCAtLXRlc3QtdHlwZT0kMiAteSAgLS1uby1wYXVzZSAtLW5vLXJlc3RhcnQtb24tdW5leHBlY3Rl
ZCAtLWluc3RhbGwtZm9udHMgLS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQKLWZpCi1nemlwIC4uL2Fy
dGlmYWN0cy93cHRfcmVwb3J0Lmpzb24KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfdG9vbHNfdW5pdHRlc3Quc2ggYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rv
b2xzX3VuaXR0ZXN0LnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZWVh
NjU5MGYzN2FlZDdiNWNiZjZhYzJkOTFhZTEzMDZmMjRlOWM0NS4uMzY2ZGNmNjZkZTg4ZTZiYTI5
ZmM4NWM5Njk3ODMyZWVhZDkzNzZjMwotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY2lfdG9vbHNf
dW5pdHRlc3Quc2gKQEAgLTEsOCArMSw4IEBACiAjIS9iaW4vYmFzaAogc2V0IC1leAogCi1TQ1JJ
UFRfRElSPSQoZGlybmFtZSAkKHJlYWRsaW5rIC1mICIkMCIpKQotV1BUX1JPT1Q9JChyZWFkbGlu
ayAtZiAkU0NSSVBUX0RJUi8uLi8uLikKK1NDUklQVF9ESVI9JChjZCAkKGRpcm5hbWUgIiQwIikg
JiYgcHdkIC1QKQorV1BUX1JPT1Q9JFNDUklQVF9ESVIvLi4vLi4KIGNkICRXUFRfUk9PVAogCiBy
dW5fYXBwbGljYWJsZV90b3ggKCkgewpAQCAtMTgsMTEgKzE4LDggQEAgcnVuX2FwcGxpY2FibGVf
dG94ICgpIHsKICAgICBleHBvcnQgVE9YRU5WPSIkT0xEX1RPWEVOViIKIH0KIAotUkVMRVZBTlRf
Sk9CUz0kKC4vd3B0IHRlc3Qtam9icykKLQotUkVMRVZBTlRfQ0hBTkdFU19UT09MUz0kKGVjaG8g
IiRSRUxFVkFOVF9KT0JTIiB8IGdyZXAgInRvb2xzX3VuaXR0ZXN0IiB8fCB0cnVlKQotaWYgW1sg
ISAteiAkUkVMRVZBTlRfQ0hBTkdFU19UT09MUyBdXTsgdGhlbgotICAgIHBpcCBpbnN0YWxsIC1V
IHRveCBjb2RlY292CitpZiAuL3dwdCB0ZXN0LWpvYnMgLS1pbmNsdWRlcyB0b29sc191bml0dGVz
dDsgdGhlbgorICAgIHBpcCBpbnN0YWxsIC0tdXNlciAtVSB0b3ggY29kZWNvdgogICAgIGNkIHRv
b2xzCiAgICAgcnVuX2FwcGxpY2FibGVfdG94CiAgICAgY2QgJFdQVF9ST09UCkBAIC0zMCwxMiAr
MjcsMTAgQEAgZWxzZQogICAgIGVjaG8gIlNraXBwaW5nIHRvb2xzIHVuaXR0ZXN0IgogZmkKIAot
UkVMRVZBTlRfQ0hBTkdFU19XUFRSVU5ORVI9JChlY2hvICIkUkVMRVZBTlRfSk9CUyIgfCBncmVw
ICJ3cHRydW5uZXJfdW5pdHRlc3QiIHx8IHRydWUpCi1pZiBbWyAhIC16ICRSRUxFVkFOVF9DSEFO
R0VTX1dQVFJVTk5FUiBdXTsgdGhlbgoraWYgLi93cHQgdGVzdC1qb2JzIC0taW5jbHVkZXMgd3B0
cnVubmVyX3VuaXR0ZXN0OyB0aGVuCiAgICAgY2QgdG9vbHMvd3B0cnVubmVyCiAgICAgcnVuX2Fw
cGxpY2FibGVfdG94CiAgICAgY2QgJFdQVF9ST09UCiBlbHNlCiAgICAgZWNobyAiU2tpcHBpbmcg
d3B0cnVubmVyIHVuaXR0ZXN0IgogZmkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHQuc2ggYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdC5zaApvbGQg
bW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDlhMTY1NmYzM2RhZDEzMDc2OGU1NGM5
MmMzNWVmOTEyOGI0ZjBiNzYuLjdjMzdlNzg2M2UwMDJkYjY2YzU5MDA5YWUzZDQzNjBhYWE3MTc0
OTkKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9jaS9jaV93cHQuc2gKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS9jaV93cHQuc2gKQEAgLTEsMTcgKzEsMTMgQEAKICMhL2Jpbi9iYXNo
CiBzZXQgLWUKIAotU0NSSVBUX0RJUj0kKGRpcm5hbWUgJChyZWFkbGluayAtZiAiJDAiKSkKLVdQ
VF9ST09UPSQocmVhZGxpbmsgLWYgJFNDUklQVF9ESVIvLi4vLi4pCitTQ1JJUFRfRElSPSQoY2Qg
JChkaXJuYW1lICIkMCIpICYmIHB3ZCAtUCkKK1dQVF9ST09UPSRTQ1JJUFRfRElSLy4uLy4uCiBj
ZCAkV1BUX1JPT1QKIAotc291cmNlIHRvb2xzL2NpL2xpYi5zaAotCiBtYWluKCkgewogICAgIGdp
dCBmZXRjaCAtLXF1aWV0IC0tdW5zaGFsbG93IGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0LmdpdCArcmVmcy9oZWFkcy8qOnJlZnMvcmVtb3Rlcy9vcmlnaW4vKgotICAg
IGhvc3RzX2ZpeHVwCi0gICAgaW5zdGFsbF9jaHJvbWUgdW5zdGFibGUKLSAgICBwaXAgaW5zdGFs
bCAtVSB0b3ggY29kZWNvdgorICAgIHBpcCBpbnN0YWxsIC0tdXNlciAtVSB0b3ggY29kZWNvdgog
ICAgIGNkIHRvb2xzL3dwdAogICAgIHRveAogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFz
dHJ1Y3R1cmUuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2NpL2NpX3dwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZS5zaApvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmluZGV4IGQ2ZDY4MDM5NzRmYjA1OGUxMWFlYmI2NWYxMjc1MmU0ODI0
YTU3MWQuLjhkYjA4Nzk0YWRlMjZiZWY4OTlmMDVjNDg5MGMyYjg4ZTY4ZGYyOTIKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRy
dW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUuc2gK
QEAgLTEsMTEgKzEsMTMgQEAKICMhL2Jpbi9iYXNoCiBzZXQgLWV4CiAKLVNDUklQVF9ESVI9JChk
aXJuYW1lICQocmVhZGxpbmsgLWYgIiQwIikpCi1XUFRfUk9PVD0kKHJlYWRsaW5rIC1mICRTQ1JJ
UFRfRElSLy4uLy4uKQorU0NSSVBUX0RJUj0kKGNkICQoZGlybmFtZSAiJDAiKSAmJiBwd2QgLVAp
CitXUFRfUk9PVD0kU0NSSVBUX0RJUi8uLi8uLgogY2QgJFdQVF9ST09UCiAKLXNvdXJjZSB0b29s
cy9jaS9saWIuc2gKK2FkZF93cHRfaG9zdHMoKSB7CisgICAgLi93cHQgbWFrZS1ob3N0cy1maWxl
IHwgc3VkbyB0ZWUgLWEgL2V0Yy9ob3N0cworfQogCiB0ZXN0X2luZnJhc3RydWN0dXJlKCkgewog
ICAgIGxvY2FsIEFSR1M9IiI7CkBAIC0xNCwyMCArMTYsMTYgQEAgdGVzdF9pbmZyYXN0cnVjdHVy
ZSgpIHsKICAgICBlbHNlCiAgICAgICAgIEFSR1M9JDEKICAgICBmaQotICAgIC4vd3B0IHJ1biAt
LXllcyAtLW1hbmlmZXN0IH4vbWV0YS9NQU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFzdHJ1
Y3R1cmUvbWV0YWRhdGEvIC0taW5zdGFsbC1mb250cyAkQVJHUyAkUFJPRFVDVCBpbmZyYXN0cnVj
dHVyZS8KKyAgICBURVJNPWR1bWIgLi93cHQgcnVuIC0tbG9nLW1hY2ggLSAtLXllcyAtLW1hbmlm
ZXN0IH4vbWV0YS9NQU5JRkVTVC5qc29uIC0tbWV0YWRhdGEgaW5mcmFzdHJ1Y3R1cmUvbWV0YWRh
dGEvIC0taW5zdGFsbC1mb250cyAkQVJHUyAkUFJPRFVDVCBpbmZyYXN0cnVjdHVyZS8KIH0KIAog
bWFpbigpIHsKICAgICBQUk9EVUNUUz0oICJmaXJlZm94IiAiY2hyb21lIiApCisgICAgLi93cHQg
bWFuaWZlc3QgLS1yZWJ1aWxkIC1wIH4vbWV0YS9NQU5JRkVTVC5qc29uCiAgICAgZm9yIFBST0RV
Q1QgaW4gIiR7UFJPRFVDVFNbQF19IjsgZG8KLSAgICAgICAgaWYgWyAiJFBST0RVQ1QiICE9ICJm
aXJlZm94IiBdOyB0aGVuCi0gICAgICAgICAgICAjIEZpcmVmb3ggaXMgZXhwZWN0ZWQgdG8gd29y
ayB1c2luZyBwcmVmIHNldHRpbmdzIGZvciBETlMKLSAgICAgICAgICAgICMgRG9uJ3QgYWRqdXN0
IHRoZSBob3N0bmFtZXMgaW4gdGhhdCBjYXNlIHRvIGVuc3VyZSB0aGlzIGtlZXBzIHdvcmtpbmcK
LSAgICAgICAgICAgIGhvc3RzX2ZpeHVwCi0gICAgICAgIGZpCi0gICAgICAgIGlmIFsgIiRQUk9E
VUNUIiA9PSAiY2hyb21lIiBdOyB0aGVuCi0gICAgICAgICAgICBpbnN0YWxsX2Nocm9tZSB1bnN0
YWJsZQotICAgICAgICAgICAgdGVzdF9pbmZyYXN0cnVjdHVyZSAiLS1iaW5hcnk9JCh3aGljaCBn
b29nbGUtY2hyb21lLXVuc3RhYmxlKSIKKyAgICAgICAgaWYgW1sgIiRQUk9EVUNUIiA9PSAiY2hy
b21lIiBdXTsgdGhlbgorICAgICAgICAgICAgYWRkX3dwdF9ob3N0cworICAgICAgICAgICAgdGVz
dF9pbmZyYXN0cnVjdHVyZSAiLS1iaW5hcnk9JCh3aGljaCBnb29nbGUtY2hyb21lLXVuc3RhYmxl
KSAtLWNoYW5uZWwgZGV2IgogICAgICAgICBlbHNlCiAgICAgICAgICAgICB0ZXN0X2luZnJhc3Ry
dWN0dXJlCiAgICAgICAgIGZpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NvbW1hbmRzLmpzb24gYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NvbW1hbmRzLmpzb24KaW5k
ZXggMGY4ZjU4MjM2OTk4OTBlNDM1MjAxNjg4NWQyZTdmYmZjMWE5YWYwOC4uYzljZDdjNDU4OTg5
ZWM3N2JhY2Q2NDVjZDUxNDUzNTE0NDNmZjczYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jb21tYW5kcy5qc29uCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvY29t
bWFuZHMuanNvbgpAQCAtMSw3ICsxLDUwIEBACiB7Ci0gICAgInRlc3Qtam9icyI6IHsicGF0aCI6
ICJqb2JzLnB5IiwgInNjcmlwdCI6ICJydW4iLCAicGFyc2VyIjogImNyZWF0ZV9wYXJzZXIiLCAi
aGVscCI6ICJMaXN0IHRlc3Qgam9icyB0aGF0IHNob3VsZCBydW4gZm9yIGEgc2V0IG9mIGNvbW1p
dHMiLAotICAgICAgICAgICAgICAgICAgInZpcnR1YWxlbnYiOiBmYWxzZX0sCi0gICAgImNoZWNr
LXN0YWJpbGl0eSI6IHsicGF0aCI6ICJjaGVja19zdGFiaWxpdHkucHkiLCAic2NyaXB0IjogInJ1
biIsICJwYXJzZXIiOiAiZ2V0X3BhcnNlciIsICJwYXJzZV9rbm93biI6IHRydWUsICJoZWxwIjog
IkNoZWNrIHRlc3Qgc3RhYmlsaXR5IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFs
ZW52IjogdHJ1ZSwgImluc3RhbGwiOiBbInJlcXVlc3RzIl0sICJyZXF1aXJlbWVudHMiOiBbIi4u
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0Il19LAotICAgICJtYWtlLWhvc3RzLWZpbGUiOiB7
InBhdGgiOiAibWFrZV9ob3N0c19maWxlLnB5IiwgInNjcmlwdCI6ICJydW4iLCAicGFyc2VyIjog
ImNyZWF0ZV9wYXJzZXIiLCAiaGVscCI6ICJPdXRwdXQgYSBob3N0cyBmaWxlIHRvIHN0ZG91dCIs
ICJ2aXJ0dWFsZW52IjogZmFsc2V9CisgICJ0ZXN0LWpvYnMiOiB7CisgICAgInBhdGgiOiAiam9i
cy5weSIsCisgICAgInNjcmlwdCI6ICJydW4iLAorICAgICJwYXJzZXIiOiAiY3JlYXRlX3BhcnNl
ciIsCisgICAgImhlbHAiOiAiTGlzdCB0ZXN0IGpvYnMgdGhhdCBzaG91bGQgcnVuIGZvciBhIHNl
dCBvZiBjb21taXRzIiwKKyAgICAidmlydHVhbGVudiI6IGZhbHNlCisgIH0sCisgICJtYWtlLWhv
c3RzLWZpbGUiOiB7CisgICAgInBhdGgiOiAibWFrZV9ob3N0c19maWxlLnB5IiwKKyAgICAic2Ny
aXB0IjogInJ1biIsCisgICAgInBhcnNlciI6ICJjcmVhdGVfcGFyc2VyIiwKKyAgICAiaGVscCI6
ICJPdXRwdXQgYSBob3N0cyBmaWxlIHRvIHN0ZG91dCIsCisgICAgInZpcnR1YWxlbnYiOiBmYWxz
ZQorICB9LAorICAidGMtZG93bmxvYWQiOiB7CisgICAgInBhdGgiOiAidGMvZG93bmxvYWQucHki
LAorICAgICJzY3JpcHQiOiAicnVuIiwKKyAgICAicGFyc2VyIjogImdldF9wYXJzZXIiLAorICAg
ICJwYXJzZV9rbm93biI6IHRydWUsCisgICAgImhlbHAiOiAiRG93bmxvYWQgbG9ncyBmcm9tIHRh
c2tjbHVzdGVyIiwKKyAgICAidmlydHVhbGVudiI6IHRydWUsCisgICAgImluc3RhbGwiOiBbCisg
ICAgICAicmVxdWVzdHMiLAorICAgICAgInB5Z2l0aHViIgorICAgIF0KKyAgfSwKKyAgInRjLXRh
c2tncmFwaCI6IHsKKyAgICAicGF0aCI6ICJ0Yy90YXNrZ3JhcGgucHkiLAorICAgICJzY3JpcHQi
OiAicnVuIiwKKyAgICAiaGVscCI6ICJCdWlsZCB0aGUgdGFza2dyYXBoIiwKKyAgICAidmlydHVh
bGVudiI6IHRydWUsCisgICAgImluc3RhbGwiOiBbCisgICAgICAicmVxdWVzdHMiLAorICAgICAg
InB5eWFtbCIKKyAgICBdCisgIH0sCisgICJ0Yy1kZWNpc2lvbiI6IHsKKyAgICAicGF0aCI6ICJ0
Yy9kZWNpc2lvbi5weSIsCisgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKKyAgICAic2NyaXB0
IjogInJ1biIsCisgICAgImhlbHAiOiAiUnVuIHRoZSBkZWNpc2lvbiB0YXNrIiwKKyAgICAidmly
dHVhbGVudiI6IHRydWUsCisgICAgImluc3RhbGwiOiBbCisgICAgICAgICJyZXF1ZXN0cyIsCisg
ICAgICAgICJweXlhbWwiLAorICAgICAgICAidGFza2NsdXN0ZXIiCisgICAgXQorICB9CiB9CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL2luc3RhbGwuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2luc3RhbGwuc2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGQxZDQzNjhkNGZmOTYwYWZhMGQ5NjY4YTU2MjYzN2IzYzg2YTMwYTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9pbnN0YWxsLnNoCisrKyAvZGV2L251bGwKQEAg
LTEsMTEgKzAsMCBAQAotIyEvYmluL2Jhc2gKLXNldCAtZXgKLQotU0NSSVBUX0RJUj0kKGRpcm5h
bWUgJChyZWFkbGluayAtZiAiJDAiKSkKLVdQVF9ST09UPSQocmVhZGxpbmsgLWYgJFNDUklQVF9E
SVIvLi4vLi4pCi1jZCAkV1BUX1JPT1QKLQotaWYgW1sgJFJVTl9KT0IgLWVxIDEgXV07IHRoZW4K
LSAgICBwaXAgaW5zdGFsbCAtVSBzZXR1cHRvb2xzCi0gICAgcGlwIGluc3RhbGwgLVUgcmVxdWVz
dHMKLWZpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2pvYnMucHkKaW5kZXggNmYzZjY0NTYwMTY3ZmE1ZmY0Zjgy
NDIwODJlNjJlYzdiZmI2MjYwOC4uM2Q4MDllZmEzN2NjZmYyYzI1ODM0M2I2NDc5MTc2MmZjNTA3
YTkwZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9jaS9qb2JzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9icy5weQpAQCAtOCwzOCArOCw1OCBAQCBmcm9tIHNp
eCBpbXBvcnQgaXRlcml0ZW1zCiAKIHdwdF9yb290ID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGgu
am9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCBvcy5wYXJkaXIsIG9zLnBhcmRpcikpCiAK
KyMgQ29tbW9uIGV4Y2x1c2lvbnMgYmV0d2VlbiBhZmZlY3RlZF90ZXN0cyBhbmQgc3RhYmlsaXR5
IGpvYnMuCisjIEZpbGVzIGluIHRoZXNlIGRpcnMgd291bGQgdHJpZ2dlciB0aGUgZXhlY3V0aW9u
IG9mIHRvbyBtYW55IHRlc3RzLgorRVhDTFVERVMgPSBbCisgICAgIiF0b29scy8iLAorICAgICIh
ZG9jcy8iLAorICAgICIhY29uZm9ybWFuY2UtY2hlY2tlcnMvIiwKKyAgICAiIS4qL09XTkVSUyIs
CisgICAgIiEuKi9NRVRBLnltbCIsCisgICAgIiEuKi90b29scy8iLAorICAgICIhLiovUkVBRE1F
IiwKKyAgICAiIWNzcy9bXi9dKiQiCitdCisKICMgUnVsZXMgYXJlIGp1c3QgcmVnZXggb24gdGhl
IHBhdGgsIHdpdGggYSBsZWFkaW5nICEgaW5kaWNhdGluZyBhIHJlZ2V4IHRoYXQgbXVzdCBub3QK
ICMgbWF0Y2ggZm9yIHRoZSBqb2IKIGpvYl9wYXRoX21hcCA9IHsKLSAgICAic3RhYmlsaXR5Ijog
WyIuKi8uKiIsCi0gICAgICAgICAgICAgICAgICAiIXRvb2xzLyIsCi0gICAgICAgICAgICAgICAg
ICAiIWRvY3MvIiwKLSAgICAgICAgICAgICAgICAgICIhcmVzb3VyY2VzLyoiLAotICAgICAgICAg
ICAgICAgICAgIiFjb25mb3JtYW5jZS1jaGVja2Vycy8iLAotICAgICAgICAgICAgICAgICAgIiEu
Ki9PV05FUlMiLAotICAgICAgICAgICAgICAgICAgIiEuKi9NRVRBLnltbCIsCi0gICAgICAgICAg
ICAgICAgICAiIS4qL3Rvb2xzLyIsCi0gICAgICAgICAgICAgICAgICAiIS4qL1JFQURNRSIsCi0g
ICAgICAgICAgICAgICAgICAiIWNzcy9bXi9dKiQiXSwKKyAgICAiYWZmZWN0ZWRfdGVzdHMiOiBb
Ii4qLy4qIiwgIiFyZXNvdXJjZXMvKD8haWRsaGFybmVzcy5qcykiXSArIEVYQ0xVREVTLAorICAg
ICJzdGFiaWxpdHkiOiBbIi4qLy4qIiwgIiFyZXNvdXJjZXMvLioiXSArIEVYQ0xVREVTLAogICAg
ICJsaW50IjogWyIuKiJdLAogICAgICJtYW5pZmVzdF91cGxvYWQiOiBbIi4qIl0sCiAgICAgInJl
c291cmNlc191bml0dGVzdCI6IFsicmVzb3VyY2VzLyIsICJ0b29scy8iXSwKICAgICAidG9vbHNf
dW5pdHRlc3QiOiBbInRvb2xzLyJdLAotICAgICJ3cHRydW5uZXJfdW5pdHRlc3QiOiBbInRvb2xz
L3dwdHJ1bm5lci8qIl0sCisgICAgIndwdHJ1bm5lcl91bml0dGVzdCI6IFsidG9vbHMvIl0sCiAg
ICAgImJ1aWxkX2NzcyI6IFsiY3NzLyJdLAotICAgICJ1cGRhdGVfYnVpbHQiOiBbIjJkY29udGV4
dC8iLAorICAgICJ1cGRhdGVfYnVpbHQiOiBbInVwZGF0ZS1idWlsdC10ZXN0c1xcLnNoIiwKKyAg
ICAgICAgICAgICAgICAgICAgICIyZGNvbnRleHQvIiwKKyAgICAgICAgICAgICAgICAgICAgICJp
bmZyYXN0cnVjdHVyZS8iLAogICAgICAgICAgICAgICAgICAgICAgImh0bWwvIiwKLSAgICAgICAg
ICAgICAgICAgICAgICJvZmZzY3JlZW4tY2FudmFzLyJdLAorICAgICAgICAgICAgICAgICAgICAg
Im9mZnNjcmVlbi1jYW52YXMvIiwKKyAgICAgICAgICAgICAgICAgICAgICJtaW1lc25pZmYvIiwK
KyAgICAgICAgICAgICAgICAgICAgICJjc3MvY3NzLXVpLyIsCisgICAgICAgICAgICAgICAgICAg
ICAiV2ViSURMIl0sCiAgICAgIndwdF9pbnRlZ3JhdGlvbiI6IFsidG9vbHMvIl0sCi0gICAgIndw
dHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSI6IFsiaW5mcmFzdHJ1Y3R1cmUvIiwgInRvb2xzLyJdLAor
ICAgICJ3cHRydW5uZXJfaW5mcmFzdHJ1Y3R1cmUiOiBbImluZnJhc3RydWN0dXJlLyIsICJ0b29s
cy8iLCAicmVzb3VyY2VzLyJdLAogfQogCiAKK2RlZiBfcGF0aF9ub3JtKHBhdGgpOgorICAgICIi
Im5vcm1hbGl6ZSBhIHBhdGggZm9yIGJvdGggY2FzZSBhbmQgc2xhc2hlcyAodG8gLykiIiIKKyAg
ICBwYXRoID0gb3MucGF0aC5ub3JtY2FzZShwYXRoKQorICAgIGlmIG9zLnBhdGguc2VwICE9ICIv
IjoKKyAgICAgICAgIyB0aGlzIG11c3QgYmUgYWZ0ZXIgdGhlIG5vcm1jYXNlIGNhbGwgYXMgdGhh
dCBkb2VzIHNsYXNoIG5vcm1hbGl6YXRpb24KKyAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZShv
cy5wYXRoLnNlcCwgIi8iKQorICAgIHJldHVybiBwYXRoCisKKwogY2xhc3MgUnVsZXNldChvYmpl
Y3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBydWxlcyk6CiAgICAgICAgIHNlbGYuaW5jbHVk
ZSA9IFtdCiAgICAgICAgIHNlbGYuZXhjbHVkZSA9IFtdCiAgICAgICAgIGZvciBydWxlIGluIHJ1
bGVzOgorICAgICAgICAgICAgcnVsZSA9IF9wYXRoX25vcm0ocnVsZSkKICAgICAgICAgICAgIHNl
bGYuYWRkX3J1bGUocnVsZSkKIAogICAgIGRlZiBhZGRfcnVsZShzZWxmLCBydWxlKToKQEAgLTUy
LDkgKzcyLDcgQEAgY2xhc3MgUnVsZXNldChvYmplY3QpOgogICAgICAgICB0YXJnZXQuYXBwZW5k
KHJlLmNvbXBpbGUoIl4lcyIgJSBydWxlKSkKIAogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXRo
KToKLSAgICAgICAgaWYgb3MucGF0aC5zZXAgIT0gIi8iOgotICAgICAgICAgICAgcGF0aCA9IHBh
dGgucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQotICAgICAgICBwYXRoID0gb3MucGF0aC5ub3Jt
Y2FzZShwYXRoKQorICAgICAgICBwYXRoID0gX3BhdGhfbm9ybShwYXRoKQogICAgICAgICBmb3Ig
aXRlbSBpbiBzZWxmLmV4Y2x1ZGU6CiAgICAgICAgICAgICBpZiBpdGVtLm1hdGNoKHBhdGgpOgog
ICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtNzYsMTIgKzk0LDE0IEBAIGRlZiBnZXRf
cGF0aHMoKiprd2FyZ3MpOgogICAgICAgICByZXZpc2ggPSBrd2FyZ3NbInJldmlzaCJdCiAKICAg
ICBjaGFuZ2VkLCBfID0gZmlsZXNfY2hhbmdlZChyZXZpc2gpCi0gICAgYWxsX2NoYW5nZWQgPSBz
ZXQob3MucGF0aC5yZWxwYXRoKGl0ZW0sIHdwdF9yb290KQotICAgICAgICAgICAgICAgICAgICAg
IGZvciBpdGVtIGluIHNldChjaGFuZ2VkKSkKKyAgICBhbGxfY2hhbmdlZCA9IHtvcy5wYXRoLnJl
bHBhdGgoaXRlbSwgd3B0X3Jvb3QpIGZvciBpdGVtIGluIHNldChjaGFuZ2VkKX0KICAgICByZXR1
cm4gYWxsX2NoYW5nZWQKIAogCiBkZWYgZ2V0X2pvYnMocGF0aHMsICoqa3dhcmdzKToKKyAgICBp
ZiBrd2FyZ3MuZ2V0KCJhbGwiKToKKyAgICAgICAgcmV0dXJuIHNldChqb2JfcGF0aF9tYXAua2V5
cygpKQorCiAgICAgam9icyA9IHNldCgpCiAKICAgICBydWxlcyA9IHt9CkBAIC0xMTMsNiArMTMz
LDcgQEAgZGVmIGdldF9qb2JzKHBhdGhzLCAqKmt3YXJncyk6CiBkZWYgY3JlYXRlX3BhcnNlcigp
OgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICBwYXJzZXIuYWRk
X2FyZ3VtZW50KCJyZXZpc2giLCBkZWZhdWx0PU5vbmUsIGhlbHA9IkNvbW1pdHMgdG8gY29uc2lk
ZXIuIERlZmF1bHRzIHRvIHRoZSBjb21taXRzIG9uIHRoZSBjdXJyZW50IGJyYW5jaCIsIG5hcmdz
PSI/IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWFsbCIsIGhlbHA9Ikxpc3QgYWxsIGpv
YnMgdW5jb25kaXRpb25hbGx5LiIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLS1pbmNsdWRlcyIsIGRlZmF1bHQ9Tm9uZSwgaGVscD0iSm9icyB0byBjaGVj
ayBmb3IuIFJldHVybiBjb2RlIGlzIDAgaWYgYWxsIGpvYnMgYXJlIGZvdW5kLCBvdGhlcndpc2Ug
MSIsIG5hcmdzPSIqIikKICAgICByZXR1cm4gcGFyc2VyCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbGliLnNoIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9saWIuc2gK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjMGI4MjUzYTkwNmUwNWY3ZDc5M2QxYzYy
NzRmOWFlZDAxYjdmODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9j
aS9saWIuc2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi0jIS9iaW4vYmFzaAotCi1o
b3N0c19maXh1cCgpIHsKLSAgICBlY2hvICJ0cmF2aXNfZm9sZDpzdGFydDpob3N0c19maXh1cCIK
LSAgICBlY2hvICJSZXdyaXRpbmcgaG9zdHMgZmlsZSIKLSAgICBlY2hvICIjIyAvZXRjL2hvc3Rz
ICMjIgotICAgIGNhdCAvZXRjL2hvc3RzCi0gICAgc3VkbyBzZWQgLWkgJ3MvXjo6MVxzKmxvY2Fs
aG9zdC86OjEvJyAvZXRjL2hvc3RzCi0gICAgLi93cHQgbWFrZS1ob3N0cy1maWxlIHwgc3VkbyB0
ZWUgLWEgL2V0Yy9ob3N0cwotICAgIGVjaG8gIj09IC9ldGMvaG9zdHMgPT0iCi0gICAgY2F0IC9l
dGMvaG9zdHMKLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tIgotICAgIGVjaG8gInRyYXZpc19m
b2xkOmVuZDpob3N0c19maXh1cCIKLX0KLQotaW5zdGFsbF9jaHJvbWUoKSB7Ci0gICAgY2hhbm5l
bD0kMQotICAgIGRlYl9hcmNoaXZlPWdvb2dsZS1jaHJvbWUtJHtjaGFubmVsfV9jdXJyZW50X2Ft
ZDY0LmRlYgotICAgIHdnZXQgLXEgaHR0cHM6Ly9kbC5nb29nbGUuY29tL2xpbnV4L2RpcmVjdC8k
ZGViX2FyY2hpdmUKLQotICAgICMgSWYgdGhlIGVudmlyb25tZW50IHByb3ZpZGVzIGFuIGluc3Rh
bGxhdGlvbiBvZiBHb29nbGUgQ2hyb21lLCB0aGUKLSAgICAjIGV4aXN0aW5nIGJpbmFyeSBtYXkg
dGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9uZSBpbnRyb2R1Y2VkIGluIHRoaXMKLSAgICAjIHNj
cmlwdC4gUmVtb3ZlIGFueSBwcmV2aW91c2x5LWV4aXN0aW5nICJhbHRlcm5hdGl2ZXMiIHByaW9y
IHRvCi0gICAgIyBpbnN0YWxsYXRpb24gaW4gb3JkZXIgdG8gZW5zdXJlIHRoYXQgdGhlIG5ldyBi
aW5hcnkgaXMgaW5zdGFsbGVkIGFzCi0gICAgIyBpbnRlbmRlZC4KLSAgICBpZiBzdWRvIHVwZGF0
ZS1hbHRlcm5hdGl2ZXMgLS1saXN0IGdvb2dsZS1jaHJvbWU7IHRoZW4KLSAgICAgICAgc3VkbyB1
cGRhdGUtYWx0ZXJuYXRpdmVzIC0tcmVtb3ZlLWFsbCBnb29nbGUtY2hyb21lCi0gICAgZmkKLQot
ICAgICMgSW5zdGFsbGF0aW9uIHdpbGwgZmFpbCBpbiBjYXNlcyB3aGVyZSB0aGUgcGFja2FnZSBo
YXMgdW5tZXQgZGVwZW5kZW5jaWVzLgotICAgICMgV2hlbiB0aGlzIG9jY3VycywgYXR0ZW1wdCB0
byB1c2UgdGhlIHN5c3RlbSBwYWNrYWdlIG1hbmFnZXIgdG8gZmV0Y2ggdGhlCi0gICAgIyByZXF1
aXJlZCBwYWNrYWdlcyBhbmQgcmV0cnkuCi0gICAgaWYgISBzdWRvIGRwa2cgLS1pbnN0YWxsICRk
ZWJfYXJjaGl2ZTsgdGhlbgotICAgICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgLS1maXgtYnJva2Vu
Ci0gICAgICBzdWRvIGRwa2cgLS1pbnN0YWxsICRkZWJfYXJjaGl2ZQotICAgIGZpCi19CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL3J1bi5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvY2kvcnVuLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTU4ZjU4YzMz
NjVkYTA3NmViMDUxOGY1MzJlYjU3MTdkMWJmM2ZhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvcnVuLnNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAot
IyEvYmluL2Jhc2gKLXNldCAtZXgKLQotU0NSSVBUX0RJUj0kKGRpcm5hbWUgJChyZWFkbGluayAt
ZiAiJDAiKSkKLVdQVF9ST09UPSQocmVhZGxpbmsgLWYgJFNDUklQVF9ESVIvLi4vLi4pCi1jZCAk
V1BUX1JPT1QKLQotaWYgW1sgJFJVTl9KT0IgLWVxIDEgXV07IHRoZW4KLSAgICAkU0NSSVBUCi1m
aQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9jaS90YWdfbWFzdGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9jaS90YWdfbWFzdGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBmMDQ5NjcxYzMxM2IxODIwMDIzMmYyN2QxYWJjNzU3ODlhMmU2MTlkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGFnX21hc3Rlci5weQorKysg
L2Rldi9udWxsCkBAIC0xLDEwMSArMCwwIEBACi1pbXBvcnQgYmFzZTY0Ci1pbXBvcnQganNvbgot
aW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVybGxpYjIKLQot
aGVyZSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKQotd3B0X3Jv
b3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFy
ZGlyKSkKLQotaWYgbm90KHdwdF9yb290IGluIHN5cy5wYXRoKToKLSAgICBzeXMucGF0aC5hcHBl
bmQod3B0X3Jvb3QpCi0KLWZyb20gdG9vbHMud3B0LnRlc3RmaWxlcyBpbXBvcnQgZ2V0X2dpdF9j
bWQKLQotbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLklORk8pCi1sb2dnZXIgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1kZWYgZ2V0X3ByKHJlcG8sIG93bmVyLCBz
aGEpOgotICAgIHVybCA9ICgiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9zZWFyY2gvaXNzdWVzP3E9
dHlwZTpwcitpczptZXJnZWQrcmVwbzolcy8lcytzaGE6JXMiICUKLSAgICAgICAgICAgKHJlcG8s
IG93bmVyLCBzaGEpKQotICAgIHRyeToKLSAgICAgICAgcmVzcCA9IHVybGxpYjIudXJsb3Blbih1
cmwpCi0gICAgICAgIGJvZHkgPSByZXNwLnJlYWQoKQotICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZToKLSAgICAgICAgbG9nZ2VyLmVycm9yKGUpCi0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBp
ZiByZXNwLmNvZGUgIT0gMjAwOgotICAgICAgICBsb2dnZXIuZXJyb3IoIkdvdCBIVFRQIHN0YXR1
cyAlcy4gUmVzcG9uc2U6IiAlIHJlc3AuY29kZSkKLSAgICAgICAgbG9nZ2VyLmVycm9yKGJvZHkp
Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICB0cnk6Ci0gICAgICAgIGRhdGEgPSBqc29uLmxv
YWRzKGJvZHkpCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIGxvZ2dlci5lcnJvcigi
RmFpbGVkIHRvIHJlYWQgcmVzcG9uc2UgYXMgSlNPTjoiKQotICAgICAgICBsb2dnZXIuZXJyb3Io
Ym9keSkKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGl0ZW1zID0gZGF0YVsiaXRlbXMiXQot
ICAgIGlmIGxlbihpdGVtcykgPT0gMDoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJObyBQUiBmb3Vu
ZCBmb3IgJXMiICUgc2hhKQotICAgICAgICByZXR1cm4gTm9uZQotICAgIGlmIGxlbihpdGVtcykg
PiAxOgotICAgICAgICBsb2dnZXIud2FybmluZygiRm91bmQgbXVsdGlwbGUgUFJzIGZvciAlcyIg
JSBzaGEpCi0KLSAgICBwciA9IGl0ZW1zWzBdCi0KLSAgICByZXR1cm4gcHJbIm51bWJlciJdCi0K
LQotZGVmIHRhZyhyZXBvLCBvd25lciwgc2hhLCB0YWcpOgotICAgIGRhdGEgPSBqc29uLmR1bXBz
KHsicmVmIjogInJlZnMvdGFncy8lcyIgJSB0YWcsCi0gICAgICAgICAgICAgICAgICAgICAgICJz
aGEiOiBzaGF9KQotICAgIHRyeToKLSAgICAgICAgdXJsID0gImh0dHBzOi8vYXBpLmdpdGh1Yi5j
b20vcmVwb3MvJXMvJXMvZ2l0L3JlZnMiICUgKHJlcG8sIG93bmVyKQotICAgICAgICByZXEgPSB1
cmxsaWIyLlJlcXVlc3QodXJsLCBkYXRhPWRhdGEpCi0KLSAgICAgICAgYmFzZTY0c3RyaW5nID0g
YmFzZTY0LmI2NGVuY29kZSgnJXMnICUgKG9zLmVudmlyb25bIkdIX1RPS0VOIl0pKQotICAgICAg
ICByZXEuYWRkX2hlYWRlcigiQXV0aG9yaXphdGlvbiIsICJCYXNpYyAlcyIgJSBiYXNlNjRzdHJp
bmcpCi0KLSAgICAgICAgb3BlbmVyID0gdXJsbGliMi5idWlsZF9vcGVuZXIodXJsbGliMi5IVFRQ
U0hhbmRsZXIoKSkKLQotICAgICAgICByZXNwID0gb3BlbmVyLm9wZW4ocmVxKQotICAgIGV4Y2Vw
dCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJUYWcgY3JlYXRpb24gZmFp
bGVkOlxuJXMiICUgZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBpZiByZXNwLmNvZGUg
IT0gMjAxOgotICAgICAgICBsb2dnZXIuZXJyb3IoIkdvdCBIVFRQIHN0YXR1cyAlcy4gUmVzcG9u
c2U6IiAlIHJlc3AuY29kZSkKLSAgICAgICAgbG9nZ2VyLmVycm9yKHJlc3AucmVhZCgpKQotICAg
ICAgICByZXR1cm4gRmFsc2UKLQotICAgIGxvZ2dlci5pbmZvKCJUYWdnZWQgJXMgYXMgJXMiICUg
KHNoYSwgdGFnKSkKLSAgICByZXR1cm4gVHJ1ZQotCi0KLWRlZiBtYWluKCk6Ci0gICAgb3duZXIs
IHJlcG8gPSBvcy5lbnZpcm9uWyJUUkFWSVNfUkVQT19TTFVHIl0uc3BsaXQoIi8iLCAxKQotICAg
IGlmIG9zLmVudmlyb25bIlRSQVZJU19QVUxMX1JFUVVFU1QiXSAhPSAiZmFsc2UiOgotICAgICAg
ICBsb2dnZXIuaW5mbygiTm90IHRhZ2dpbmcgZm9yIFBSIikKLSAgICAgICAgcmV0dXJuCi0gICAg
aWYgb3MuZW52aXJvblsiVFJBVklTX0JSQU5DSCJdICE9ICJtYXN0ZXIiOgotICAgICAgICBsb2dn
ZXIuaW5mbygiTm90IHRhZ2dpbmcgZm9yIG5vbi1tYXN0ZXIgYnJhbmNoIikKLSAgICAgICAgcmV0
dXJuCi0KLSAgICBnaXQgPSBnZXRfZ2l0X2NtZCh3cHRfcm9vdCkKLSAgICBoZWFkX3JldiA9IGdp
dCgicmV2LXBhcnNlIiwgIkhFQUQiKQotCi0gICAgcHIgPSBnZXRfcHIob3duZXIsIHJlcG8sIGhl
YWRfcmV2KQotICAgIGlmIHByIGlzIE5vbmU6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0gICAgdGFn
Z2VkID0gdGFnKG93bmVyLCByZXBvLCBoZWFkX3JldiwgIm1lcmdlX3ByXyVzIiAlIHByKQotICAg
IGlmIG5vdCB0YWdnZWQ6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0KLQotaWYgX19uYW1lX18gPT0g
Il9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdGVzdF9qb2JzLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0cy90
ZXN0X2pvYnMucHkKaW5kZXggZTg4OGFkODg0YTE4ZjI1NzAwOGZlODYwZjMxZjc4OTJiM2JkMzlh
My4uOTRmNzk5ODc3MGNmNWQ4YmFkMzZkMTg4ZGQ2M2UyNTNmOTgxOTlhOCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS90ZXN0
cy90ZXN0X2pvYnMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9jaS90ZXN0cy90ZXN0X2pvYnMucHkKQEAgLTEsMjEgKzEsNDQgQEAKIGZy
b20gdG9vbHMuY2kgaW1wb3J0IGpvYnMKIAotZGVmYXVsdF9qb2JzID0gc2V0KFsibGludCIsICJt
YW5pZmVzdF91cGxvYWQiXSkKK2FsbF9qb2JzID0geworICAgICJidWlsZF9jc3MiLAorICAgICJs
aW50IiwKKyAgICAibWFuaWZlc3RfdXBsb2FkIiwKKyAgICAicmVzb3VyY2VzX3VuaXR0ZXN0IiwK
KyAgICAiYWZmZWN0ZWRfdGVzdHMiLAorICAgICJzdGFiaWxpdHkiLAorICAgICJ0b29sc191bml0
dGVzdCIsCisgICAgInVwZGF0ZV9idWlsdCIsCisgICAgIndwdF9pbnRlZ3JhdGlvbiIsCisgICAg
IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSIsCisgICAgIndwdHJ1bm5lcl91bml0dGVzdCIsCit9
CisKK2RlZmF1bHRfam9icyA9IHsibGludCIsICJtYW5pZmVzdF91cGxvYWQifQorCisKK2RlZiB0
ZXN0X2FsbCgpOgorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiUkVBRE1FLm1kIl0sIGFsbD1U
cnVlKSA9PSBhbGxfam9icworCisKK2RlZiB0ZXN0X2RlZmF1bHQoKToKKyAgICBhc3NlcnQgam9i
cy5nZXRfam9icyhbIlJFQURNRS5tZCJdKSA9PSBkZWZhdWx0X2pvYnMKIAogCiBkZWYgdGVzdF90
ZXN0aGFybmVzcygpOgotICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsicmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIl0pID09IGRlZmF1bHRfam9icyB8IHNldChbInJlc291cmNlc191bml0dGVzdCJd
KQorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIl0p
ID09IGRlZmF1bHRfam9icyB8IHsicmVzb3VyY2VzX3VuaXR0ZXN0IiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJ9CiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMo
WyJyZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlcz1bInJlc291cmNlc191bml0dGVzdCJdKSA9PSBzZXQoWyJyZXNvdXJjZXNfdW5pdHRl
c3QiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bInJlc291cmNlc191bml0
dGVzdCJdKSA9PSB7InJlc291cmNlc191bml0dGVzdCJ9CiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pv
YnMoWyJ0b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25maWcucHkiXSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBpbmNsdWRlcz1bInJlc291cmNlc191bml0dGVzdCJdKSA9PSBzZXQoWyJyZXNv
dXJjZXNfdW5pdHRlc3QiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bInJl
c291cmNlc191bml0dGVzdCJdKSA9PSB7InJlc291cmNlc191bml0dGVzdCJ9CiAgICAgYXNzZXJ0
IGpvYnMuZ2V0X2pvYnMoWyJmb28vcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIl0sCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJyZXNvdXJjZXNfdW5pdHRlc3QiXSkgPT0gc2V0
KCkKIAogCiBkZWYgdGVzdF9zdGFiaWxpdHkoKToKICAgICBhc3NlcnQgam9icy5nZXRfam9icyhb
ImRvbS9oaXN0b3JpY2FsLmh0bWwiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRl
cz1bInN0YWJpbGl0eSJdKSA9PSBzZXQoWyJzdGFiaWxpdHkiXSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmNsdWRlcz1bInN0YWJpbGl0eSJdKSA9PSB7InN0YWJpbGl0eSJ9CiAgICAgYXNz
ZXJ0IGpvYnMuZ2V0X2pvYnMoWyJ0b29scy9weXRlc3QuaW5pIl0sCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgaW5jbHVkZXM9WyJzdGFiaWxpdHkiXSkgPT0gc2V0KCkKICAgICBhc3NlcnQgam9i
cy5nZXRfam9icyhbInNlcnZlIl0sCkBAIC0zMywxOSArNTYsNDEgQEAgZGVmIHRlc3Rfc3RhYmls
aXR5KCk6CiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJjc3MvYnVpbGQtY3NzLXRlc3RzdWl0
ZS5zaCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsic3RhYmlsaXR5Il0p
ID09IHNldCgpCiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJjc3MvQ1NTMjEvdGVzdC0wMDEu
aHRtbCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsic3RhYmlsaXR5Il0p
ID09IHNldChbInN0YWJpbGl0eSJdKQorICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVz
PVsic3RhYmlsaXR5Il0pID09IHsic3RhYmlsaXR5In0KICAgICBhc3NlcnQgam9icy5nZXRfam9i
cyhbImNzcy9idWlsZC1jc3MtdGVzdHN1aXRlLnNoIiwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImNzcy9DU1MyMS90ZXN0LTAwMS5odG1sIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
aW5jbHVkZXM9WyJzdGFiaWxpdHkiXSkgPT0gc2V0KFsic3RhYmlsaXR5Il0pCi0KLQotZGVmIHRl
c3RfZGVmYXVsdCgpOgotICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiUkVBRE1FLm1kIl0pID09
IGRlZmF1bHRfam9icworICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsic3RhYmls
aXR5Il0pID09IHsic3RhYmlsaXR5In0KIAorZGVmIHRlc3RfYWZmZWN0ZWRfdGVzdHMoKToKKyAg
ICBhc3NlcnQgam9icy5nZXRfam9icyhbImRvbS9oaXN0b3JpY2FsLmh0bWwiXSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bImFmZmVjdGVkX3Rlc3RzIl0pID09IHsiYWZmZWN0
ZWRfdGVzdHMifQorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsidG9vbHMvcHl0ZXN0LmluaSJd
LAorICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsiYWZmZWN0ZWRfdGVzdHMiXSkg
PT0gc2V0KCkKKyAgICBhc3NlcnQgam9icy5nZXRfam9icyhbInNlcnZlIl0sCisgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJhZmZlY3RlZF90ZXN0cyJdKSA9PSBzZXQoKQorICAg
IGFzc2VydCBqb2JzLmdldF9qb2JzKFsicmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIl0sCisgICAg
ICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJhZmZlY3RlZF90ZXN0cyJdKSA9PSBzZXQo
KQorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiZG9jcy8uZ2l0aWdub3JlIl0sCisgICAgICAg
ICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJhZmZlY3RlZF90ZXN0cyJdKSA9PSBzZXQoKQor
ICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiZG9tL3Rvb2xzL2V4YW1wbGUucHkiXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bImFmZmVjdGVkX3Rlc3RzIl0pID09IHNldCgp
CisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJjb25mb3JtYW5jZS1jaGVja2Vycy90ZXN0Lmh0
bWwiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bImFmZmVjdGVkX3Rlc3Rz
Il0pID09IHNldCgpCisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJkb20vUkVBRE1FLm1kIl0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJhZmZlY3RlZF90ZXN0cyJdKSA9
PSBzZXQoKQorICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiY3NzL2J1aWxkLWNzcy10ZXN0c3Vp
dGUuc2giXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bImFmZmVjdGVkX3Rl
c3RzIl0pID09IHNldCgpCisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJjc3MvQ1NTMjEvdGVz
dC0wMDEuaHRtbCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsiYWZmZWN0
ZWRfdGVzdHMiXSkgPT0geyJhZmZlY3RlZF90ZXN0cyJ9CisgICAgYXNzZXJ0IGpvYnMuZ2V0X2pv
YnMoWyJjc3MvYnVpbGQtY3NzLXRlc3RzdWl0ZS5zaCIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICJjc3MvQ1NTMjEvdGVzdC0wMDEuaHRtbCJdLAorICAgICAgICAgICAgICAgICAgICAgICAg
IGluY2x1ZGVzPVsiYWZmZWN0ZWRfdGVzdHMiXSkgPT0geyJhZmZlY3RlZF90ZXN0cyJ9CisgICAg
YXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJyZXNvdXJjZXMvaWRsaGFybmVzcy5qcyJdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsiYWZmZWN0ZWRfdGVzdHMiXSkgPT0geyJhZmZl
Y3RlZF90ZXN0cyJ9CiAKIGRlZiB0ZXN0X3Rvb2xzX3VuaXR0ZXN0KCk6CiAgICAgYXNzZXJ0IGpv
YnMuZ2V0X2pvYnMoWyJ0b29scy9jaS90ZXN0L3Rlc3Rfam9icy5weSJdLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIGluY2x1ZGVzPVsidG9vbHNfdW5pdHRlc3QiXSkgPT0gc2V0KFsidG9vbHNf
dW5pdHRlc3QiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bInRvb2xzX3Vu
aXR0ZXN0Il0pID09IHsidG9vbHNfdW5pdHRlc3QifQogICAgIGFzc2VydCBqb2JzLmdldF9qb2Jz
KFsiZG9tL3Rvb2xzL2V4YW1wbGUucHkiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNs
dWRlcz1bInRvb2xzX3VuaXR0ZXN0Il0pID09IHNldCgpCiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pv
YnMoWyJkb20vaGlzdG9yaWNhbC5odG1sIl0sCkBAIC01NCwzNyArOTksMzggQEAgZGVmIHRlc3Rf
dG9vbHNfdW5pdHRlc3QoKToKIAogZGVmIHRlc3Rfd3B0cnVubmVyX3VuaXR0ZXN0KCk6CiAgICAg
YXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJ0b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5l
ci5weSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX3Vu
aXR0ZXN0Il0pID09IHNldChbIndwdHJ1bm5lcl91bml0dGVzdCJdKQorICAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX3VuaXR0ZXN0Il0pID09IHsid3B0cnVubmVy
X3VuaXR0ZXN0In0KICAgICBhc3NlcnQgam9icy5nZXRfam9icyhbInRvb2xzL2V4YW1wbGUucHki
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdHJ1bm5lcl91bml0dGVz
dCJdKSA9PSBzZXQoKQorICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVu
bmVyX3VuaXR0ZXN0Il0pID09IHsid3B0cnVubmVyX3VuaXR0ZXN0In0KIAogCiBkZWYgdGVzdF9i
dWlsZF9jc3MoKToKICAgICBhc3NlcnQgam9icy5nZXRfam9icyhbImNzcy9jc3MtYnVpbGQtdGVz
dHN1aXRlcy5zaCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsiYnVpbGRf
Y3NzIl0pID09IHNldChbImJ1aWxkX2NzcyJdKQorICAgICAgICAgICAgICAgICAgICAgICAgIGlu
Y2x1ZGVzPVsiYnVpbGRfY3NzIl0pID09IHsiYnVpbGRfY3NzIn0KICAgICBhc3NlcnQgam9icy5n
ZXRfam9icyhbImNzcy9DU1MyMS90ZXN0Lmh0bWwiXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICBpbmNsdWRlcz1bImJ1aWxkX2NzcyJdKSA9PSBzZXQoWyJidWlsZF9jc3MiXSkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bImJ1aWxkX2NzcyJdKSA9PSB7ImJ1aWxkX2NzcyJ9
CiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJodG1sL2Nzcy9DU1MyMS90ZXN0Lmh0bWwiXSwK
ICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bImJ1aWxkX2NzcyJdKSA9PSBzZXQo
KQogCiAKIGRlZiB0ZXN0X3VwZGF0ZV9idWlsdCgpOgogICAgIGFzc2VydCBqb2JzLmdldF9qb2Jz
KFsiMmRjb250ZXh0L2Zvby5odG1sIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVk
ZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0gc2V0KFsidXBkYXRlX2J1aWx0Il0pCisgICAgICAgICAg
ICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ1cGRhdGVfYnVpbHQiXSkgPT0geyJ1cGRhdGVfYnVp
bHQifQogICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsiaHRtbC9mb28uaHRtbCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsidXBkYXRlX2J1aWx0Il0pID09IHNldChbInVw
ZGF0ZV9idWlsdCJdKQorICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsidXBkYXRl
X2J1aWx0Il0pID09IHsidXBkYXRlX2J1aWx0In0KICAgICBhc3NlcnQgam9icy5nZXRfam9icyhb
Im9mZnNjcmVlbi1jYW52YXMvZm9vLmh0bWwiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSBzZXQoWyJ1cGRhdGVfYnVpbHQiXSkKKyAgICAg
ICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bInVwZGF0ZV9idWlsdCJdKSA9PSB7InVwZGF0
ZV9idWlsdCJ9CiAKIAogZGVmIHRlc3Rfd3B0X2ludGVncmF0aW9uKCk6CiAgICAgYXNzZXJ0IGpv
YnMuZ2V0X2pvYnMoWyJ0b29scy93cHQvd3B0LnB5Il0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgaW5jbHVkZXM9WyJ3cHRfaW50ZWdyYXRpb24iXSkgPT0gc2V0KFsid3B0X2ludGVncmF0aW9u
Il0pCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZXM9WyJ3cHRfaW50ZWdyYXRpb24i
XSkgPT0geyJ3cHRfaW50ZWdyYXRpb24ifQogICAgIGFzc2VydCBqb2JzLmdldF9qb2JzKFsidG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICBpbmNsdWRlcz1bIndwdF9pbnRlZ3JhdGlvbiJdKSA9PSBzZXQoWyJ3cHRfaW50ZWdy
YXRpb24iXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlcz1bIndwdF9pbnRlZ3Jh
dGlvbiJdKSA9PSB7IndwdF9pbnRlZ3JhdGlvbiJ9CisKIAogZGVmIHRlc3Rfd3B0X2luZnJhc3Ry
dWN0dXJlKCk6CiAgICAgYXNzZXJ0IGpvYnMuZ2V0X2pvYnMoWyJ0b29scy9oYW1tZXIuaHRtbCJd
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3Ry
dWN0dXJlIl0pID09IHNldChbIndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJdKQorICAgICAgICAg
ICAgICAgICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09
IHsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIn0KICAgICBhc3NlcnQgam9icy5nZXRfam9icyhb
ImluZnJhc3RydWN0dXJlL2Fzc3VtcHRpb25zL2FoZW0uaHRtbCJdLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHNldChb
IndwdHJ1bm5lcl9pbmZyYXN0cnVjdHVyZSJdKQorICAgICAgICAgICAgICAgICAgICAgICAgIGlu
Y2x1ZGVzPVsid3B0cnVubmVyX2luZnJhc3RydWN0dXJlIl0pID09IHsid3B0cnVubmVyX2luZnJh
c3RydWN0dXJlIn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL3Rlc3RzL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTgwZWExZTZkYzFjYzI4YzFmYWUx
NzViMGRlY2U2NGY2MjhhMTc0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvdGVzdHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NpL3Rlc3RzL3Rlc3Rfam9icy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MzE5NTAzMzdjY2YyYjg2NThl
OTZhNDFhMzRjZDZhMGU3MjRkMGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9jaS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
Y2kvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2JlZm9yZV9pbnN0YWxsLnNoCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaGVja19zdGFiaWxpdHkucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX2J1aWx0X2Rp
ZmYuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2NpL2NpX2xpbnQuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL2NpX21hbmlmZXN0LnNoCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV9yZXNvdXJjZXNfdW5pdHRlc3Quc2gKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3N0YWJp
bGl0eS5zaAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvY2kvY2lfdGFza2NsdXN0ZXIuc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3Rvb2xzX3VuaXR0ZXN0LnNoCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9jaV93cHQuc2gKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NpL2NpX3dwdHJ1
bm5lcl9pbmZyYXN0cnVjdHVyZS5zaAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvY2kvY29tbWFuZHMuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvaW5zdGFsbC5zaAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvam9icy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY2kvbGliLnNoCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jaS9tYWtl
X2hvc3RzX2ZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2NpL3J1bi5zaAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvY2kvdGFnX21hc3Rlci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jb25mdGVzdC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvY29uZnRlc3QucHkK
aW5kZXggODk0ZmU2MjIzZWE1M2E3NzA2N2Q3NTU2ZGJhNmE1MzBhZmJlYTk5NC4uMDIxYTQ5ZmMy
OTczMDNiNmU0MTc4YzQyNzQyMmQ5MTgxM2RiYjc2MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9jb25mdGVzdC5weQorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2NvbmZ0ZXN0
LnB5CkBAIC02LDggKzYsMTAgQEAgZnJvbSBoeXBvdGhlc2lzIGltcG9ydCBzZXR0aW5ncywgSGVh
bHRoQ2hlY2sKIGltcGwgPSBwbGF0Zm9ybS5weXRob25faW1wbGVtZW50YXRpb24oKQogCiBzZXR0
aW5ncy5yZWdpc3Rlcl9wcm9maWxlKCJjaSIsIHNldHRpbmdzKG1heF9leGFtcGxlcz0xMDAwLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWFkbGluZT1Ob25lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19oZWFsdGhf
Y2hlY2s9W0hlYWx0aENoZWNrLnRvb19zbG93XSkpCi1zZXR0aW5ncy5yZWdpc3Rlcl9wcm9maWxl
KCJweXB5Iiwgc2V0dGluZ3Moc3VwcHJlc3NfaGVhbHRoX2NoZWNrPVtIZWFsdGhDaGVjay50b29f
c2xvd10pKQorc2V0dGluZ3MucmVnaXN0ZXJfcHJvZmlsZSgicHlweSIsIHNldHRpbmdzKGRlYWRs
aW5lPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vw
cHJlc3NfaGVhbHRoX2NoZWNrPVtIZWFsdGhDaGVjay50b29fc2xvd10pKQogCiBzZXR0aW5ncy5s
b2FkX3Byb2ZpbGUob3MuZ2V0ZW52KCJIWVBPVEhFU0lTX1BST0ZJTEUiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCIgaWYgaW1wbCAhPSAiUHlQeSIgZWxzZSAicHlw
eSIpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL0RvY2tlcmZpbGUKaW5kZXggYjA1NDFkYzZj
OTgzMzdlNTdmODY2YWQ4NGI3YTM1MDVjOGRkZDE0MC4uM2Q0MTgzNGNmYjQxNDMwYjRhOWFhMDVm
YThjNmQ2YjZmMjAxMGI1MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvRG9ja2VyZmlsZQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxl
CkBAIC0xLDQgKzEsNCBAQAotRlJPTSB1YnVudHU6MTYuMDQKK0ZST00gdWJ1bnR1OjE4LjA0CiAK
ICMgTm8gaW50ZXJhY3RpdmUgZnJvbnRlbmQgZHVyaW5nIGRvY2tlciBidWlsZAogRU5WIERFQklB
Tl9GUk9OVEVORD1ub25pbnRlcmFjdGl2ZSBcCkBAIC03LDE1ICs3LDIyIEBAIEVOViBERUJJQU5f
RlJPTlRFTkQ9bm9uaW50ZXJhY3RpdmUgXAogIyBHZW5lcmFsIHJlcXVpcmVtZW50cyBub3QgaW4g
dGhlIGJhc2UgaW1hZ2UKIFJVTiBhcHQtZ2V0IC1xcXkgdXBkYXRlIFwKICAgJiYgYXB0LWdldCAt
cXF5IGluc3RhbGwgXAorICAgIGJyaWRnZS11dGlscyBcCiAgICAgYnppcDIgXAogICAgIGNhLWNl
cnRpZmljYXRlcyBcCiAgICAgZGJ1cy14MTEgXAorICAgIGVhcmx5b29tIFwKKyAgICBmbHV4Ym94
IFwKICAgICBnZGViaSBcCiAgICAgZ2l0IFwKKyAgICBsaWJ2aXJ0LWRhZW1vbi1zeXN0ZW0gXAor
ICAgIGxpYnZpcnQtY2xpZW50cyBcCiAgICAgbG9jYWxlcyBcCisgICAgb3Blbmpkay04LWpyZS1o
ZWFkbGVzcyBcCiAgICAgcHVsc2VhdWRpbyBcCiAgICAgcHl0aG9uIFwKICAgICBweXRob24tcGlw
IFwKKyAgICBxZW11LWt2bSBcCiAgICAgdHpkYXRhIFwKICAgICBzdWRvIFwKICAgICB1bnppcCBc
CkBAIC0zNyw2ICs0NCw4IEBAIFJVTiBhcHQtZ2V0IC1xcXkgaW5zdGFsbCBcCiAgICAgbGliaW5k
aWNhdG9yMy03IFwKICAgICBsaWJpbmRpY2F0b3I3CiAKK1JVTiBhcHQtZ2V0IC15IGF1dG9yZW1v
dmUKKwogUlVOIHBpcCBpbnN0YWxsIC0tdXBncmFkZSBwaXAKIFJVTiBwaXAgaW5zdGFsbCB2aXJ0
dWFsZW52CiAKQEAgLTQ0LDEwICs1MywxOCBAQCBFTlYgVFogIlVUQyIKIFJVTiBlY2hvICIke1Ra
fSIgPiAvZXRjL3RpbWV6b25lIFwKICAgJiYgZHBrZy1yZWNvbmZpZ3VyZSAtLWZyb250ZW5kIG5v
bmludGVyYWN0aXZlIHR6ZGF0YQogCisjIFNldCB0aGUgbG9jYWxlCitSVU4gbG9jYWxlLWdlbiBl
bl9VUy5VVEYtOAorRU5WIExBTkcgZW5fVVMuVVRGLTgKK0VOViBMQU5HVUFHRSBlbl9VUzplbgor
RU5WIExDX0FMTCBlbl9VUy5VVEYtOAorCiBSVU4gdXNlcmFkZCB0ZXN0IFwKICAgICAgICAgIC0t
c2hlbGwgL2Jpbi9iYXNoICBcCiAgICAgICAgICAtLWNyZWF0ZS1ob21lIFwKICAgJiYgdXNlcm1v
ZCAtYSAtRyBzdWRvIHRlc3QgXAorICAmJiB1c2VybW9kIC1hIC1HIGxpYnZpcnQgdGVzdCBcCisg
ICYmIHVzZXJtb2QgLWEgLUcgbGlidmlydC1xZW11IHRlc3QgXAogICAmJiBlY2hvICdBTEwgQUxM
ID0gKEFMTCkgTk9QQVNTV0Q6IEFMTCcgPj4gL2V0Yy9zdWRvZXJzIFwKICAgJiYgZWNobyAndGVz
dDpzZWNyZXQnIHwgY2hwYXNzd2QKIApAQCAtNjQsOSArODEsMTMgQEAgV09SS0RJUiAvaG9tZS90
ZXN0CiBSVU4gc3VkbyBlY2hvICIiCiAKIFJVTiBta2RpciAtcCAvaG9tZS90ZXN0L2FydGlmYWN0
cworUlVOIG1rZGlyIC1wIC9ob21lL3Rlc3QvYmluCisKK0VOViBQQVRIPSIvaG9tZS90ZXN0L2Jp
bjovaG9tZS90ZXN0Ly5sb2NhbC9iaW46JHtQQVRIfSIKIAogV09SS0RJUiAvaG9tZS90ZXN0Lwog
CiBDT1BZIC5iYXNocmMgL2hvbWUvdGVzdC8uYmFzaHJjCiAKIENPUFkgc3RhcnQuc2ggL2hvbWUv
dGVzdC9zdGFydC5zaAorQ09QWSByZXRyeS5weSAvaG9tZS90ZXN0L2Jpbi9yZXRyeQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9k
b2NrZXIvc3RhcnQuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2RvY2tlci9zdGFydC5zaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDMzMjViYjI0ZjU4N2RmNzJmNzdjOTNmMDFhZTQ0NzcxM2NkNjQ3ODEuLjM0Mjc2NzBj
YzlmYTE2YTBhZTIzZTJkYTFlY2FmY2ZlNzU3ODkwNzIKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvc3RhcnQuc2gKKysrIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvc3Rh
cnQuc2gKQEAgLTEsNDQgKzEsMjkgQEAKLSMgVGhpcyBzY3JpcHQgaXMgZW1iZWRkZWQgaW4gdGhl
IGRvY2tlciBpbWFnZSwgYW5kIHNvIHRoZSBpbWFnZSBtdXN0IGJlIHVwZGF0ZWQgd2hlbiBjaGFu
Z2VzCi0jIHRvIHRoZSBzY3JpcHQgYXJlIG1hZGUuIFRvIGRvIHRoaXMsIGFzc3VtaW5nIHlvdSBo
YXZlIGRvY2tlciBpbnN0YWxsZWQ6Ci0jIEluIHRvb2xzL2RvY2tlci8gOgotIyAgIGRvY2tlciBi
dWlsZCAuCi0jICAgZG9ja2VyIHBzICMgYW5kIGxvb2sgZm9yIHRoZSBpZCBvZiB0aGUgaW1hZ2Ug
eW91IGp1c3QgYnVpbHQKLSMgICBkb2NrZXIgdGFnIDxpbWFnZT4gPHRhZz4KLSMgICBkb2NrZXIg
cHVzaCA8dGFnPgotIyBVcGRhdGUgdGhlIGBpbWFnZWAgc3BlY2lmaWVkIGluIHRoZSBwcm9qZWN0
J3MgLnRhc2tjbHVzdGVyLnltbCBmaWxlCi0KLQogIyEvYmluL2Jhc2gKKwogc2V0IC1leAogCiBS
RU1PVEU9JHsxOi1odHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdH0KLUJS
QU5DSD0kezI6LW1hc3Rlcn0KLVJFVj0kezM6LUZFVENIX0hFQUR9Ci1CUk9XU0VSPSR7NDotYWxs
fQorUkVGPSR7MjotbWFzdGVyfQogCiBjZCB+CiAKLSMgSW5pdGlhbGx5IHdlIGp1c3QgZmV0Y2gg
NTAgY29tbWl0cyBpbiBvcmRlciB0byBzYXZlIHNldmVyYWwgbWludXRlcyBvZiBmZXRjaGluZwot
Z2l0IGNsb25lICR7UkVNT1RFfSAtLXNpbmdsZS1icmFuY2ggLS1icmFuY2ggJHtCUkFOQ0h9IC0t
bm8tY2hlY2tvdXQgLXEgLS1kZXB0aD01MCB3ZWItcGxhdGZvcm0tdGVzdHMKLWNkIHdlYi1wbGF0
Zm9ybS10ZXN0cwotaWYgW1sgISBgZ2l0IHJldi1wYXJzZSAtLXZlcmlmeSAtcSAke1JFVn1gIF1d
OwotdGhlbgotICAgICMgQnV0IGlmIGZvciBzb21lIHJlYXNvbiB0aGUgY29tbWl0IHVuZGVyIHRl
c3QgaXNuJ3QgaW4gdGhhdCByYW5nZSwgd2UgZ2l2ZSBpbiBhbmQKLSAgICAjIGZldGNoIGV2ZXJ5
dGhpbmcKLSAgICBnaXQgZmV0Y2ggLXEgLS11bnNoYWxsb3cgJHtSRU1PVEV9Ci0gICAgZ2l0IHJl
di1wYXJzZSAtLXZlcmlmeSAke1JFVn0KK2lmIFsgLWUgL2Rldi9rdm0gXTsgdGhlbgorICAgICMg
SWYga3ZtIGlzIHByZXNlbnQgZW5zdXJlIHRoYXQgdGhlIHRlc3QgdXNlciBjYW4gYWNjZXNzIGl0
CisgICAgIyBJZGVhbGx5IHRoaXMgY291bGQgYmUgZG9uZSBieSBhZGRpbmcgdGhlIHRlc3QgdXNl
ciB0byB0aGUKKyAgICAjIG93bmluZyBncm91cCwgYnV0IHRoZW4gd2UgbmVlZCB0byByZS1sb2dp
biB0byBldmFsdWF0ZSB0aGUKKyAgICAjIGdyb3VwIG1lbWJlcnNoaXAuIFRoaXMgY2htb2QgZG9l
c24ndCBhZmZlY3QgdGhlIGhvc3QuCisgICAgc3VkbyBjaG1vZCBhK3J3IC9kZXYva3ZtCiBmaQot
Z2l0IGNoZWNrb3V0IC1iIGJ1aWxkICR7UkVWfQogCi1zdWRvIHNoIC1jICcuL3dwdCBtYWtlLWhv
c3RzLWZpbGUgPj4gL2V0Yy9ob3N0cycKK2lmIFsgISAtZCB3ZWItcGxhdGZvcm0tdGVzdHMgXTsg
dGhlbgorICAgIG1rZGlyIHdlYi1wbGF0Zm9ybS10ZXN0cworICAgIGNkIHdlYi1wbGF0Zm9ybS10
ZXN0cwogCi1pZiBbWyAkQlJPV1NFUiA9PSAiY2hyb21lIiogXV0gfHwgW1sgIiRCUk9XU0VSIiA9
PSBhbGwgXV0KLXRoZW4KLSAgICAjIEluc3RhbGwgQ2hyb21lIGRldgotICAgIGRlYl9hcmNoaXZl
PWdvb2dsZS1jaHJvbWUtdW5zdGFibGVfY3VycmVudF9hbWQ2NC5kZWIKLSAgICB3Z2V0IGh0dHBz
Oi8vZGwuZ29vZ2xlLmNvbS9saW51eC9kaXJlY3QvJGRlYl9hcmNoaXZlCisgICAgZ2l0IGluaXQK
KyAgICBnaXQgcmVtb3RlIGFkZCBvcmlnaW4gJHtSRU1PVEV9CiAKLSAgICBzdWRvIGFwdC1nZXQg
LXFxeSB1cGRhdGUgJiYgc3VkbyBnZGViaSAtbiAkZGViX2FyY2hpdmUKLWZpCisgICAgIyBJbml0
aWFsbHkgd2UganVzdCBmZXRjaCA1MCBjb21taXRzIGluIG9yZGVyIHRvIHNhdmUgc2V2ZXJhbCBt
aW51dGVzIG9mIGZldGNoaW5nCisgICAgcmV0cnkgZ2l0IGZldGNoIC0tcXVpZXQgLS1kZXB0aD01
MCAtLXRhZ3Mgb3JpZ2luICR7UkVGfTp0YXNrX2hlYWQKIAotc3VkbyBYdmZiICRESVNQTEFZIC1z
Y3JlZW4gMCAke1NDUkVFTl9XSURUSH14JHtTQ1JFRU5fSEVJR0hUfXgke1NDUkVFTl9ERVBUSH0g
JgorICAgIGdpdCBjaGVja291dCAtLXF1aWV0IHRhc2tfaGVhZAorZmkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZG9ja2VyL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9kb2NrZXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGViMzdkMGQ0NTQ4ZTFhN2U5MzA0YjJjYWUyNGFmZjg0NTRmZjBkY2UuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2RvY2tlci9Eb2NrZXJmaWxlCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9kb2NrZXIvc3RhcnQuc2gK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvZmxha2U4LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvZmxha2U4LmluaQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVl
MjMwOGFhYmI4MjU2ZDU1MjU3ZDFmNjdmMWZiODNjNzJmMDlhMy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2ZsYWtlOC5pbmkKKysrIC9kZXYvbnVsbApAQCAtMSwyMSAr
MCwwIEBACi1bZmxha2U4XQotIyBmbGFrZTggY29uZmlnIHVzZWQgaW4gdG9vbHMvdG94LmluaSwg
dG9vbHMvd3B0L3RveC5pbmksIGFuZCB0b29scy93cHRydW5uZXIvdG94LmluaQotc2VsZWN0ID0g
RSxXLEYsTgotIyBFMTI4OiBjb250aW51YXRpb24gbGluZSB1bmRlci1pbmRlbnRlZCBmb3Igdmlz
dWFsIGluZGVudAotIyBFMTI5OiB2aXN1YWxseSBpbmRlbnRlZCBsaW5lIHdpdGggc2FtZSBpbmRl
bnQgYXMgbmV4dCBsb2dpY2FsIGxpbmUKLSMgRTIyMTogbXVsdGlwbGUgc3BhY2VzIGJlZm9yZSBv
cGVyYXRvcgotIyBFMjI2OiBtaXNzaW5nIHdoaXRlc3BhY2UgYXJvdW5kIGFyaXRobWV0aWMgb3Bl
cmF0b3IKLSMgRTIzMTogbWlzc2luZyB3aGl0ZXNwYWNlIGFmdGVyIOKAmCzigJksIOKAmDvigJks
IG9yIOKAmDrigJkKLSMgRTI1MTogdW5leHBlY3RlZCBzcGFjZXMgYXJvdW5kIGtleXdvcmQgLyBw
YXJhbWV0ZXIgZXF1YWxzCi0jIEUyNjU6IGJsb2NrIGNvbW1lbnQgc2hvdWxkIHN0YXJ0IHdpdGgg
4oCYIyDigJgKLSMgRTMwMjogZXhwZWN0ZWQgMiBibGFuayBsaW5lcywgZm91bmQgMAotIyBFMzAz
OiB0b28gbWFueSBibGFuayBsaW5lcyAoMykKLSMgRTMwNTogZXhwZWN0ZWQgMiBibGFuayBsaW5l
cyBhZnRlciBlbmQgb2YgZnVuY3Rpb24gb3IgY2xhc3MKLSMgRTQwMjogbW9kdWxlIGxldmVsIGlt
cG9ydCBub3QgYXQgdG9wIG9mIGZpbGUKLSMgRTczMTogZG8gbm90IGFzc2lnbiBhIGxhbWJkYSBl
eHByZXNzaW9uLCB1c2UgYSBkZWYKLSMgRTkwMTogU3ludGF4RXJyb3Igb3IgSW5kZW50YXRpb25F
cnJvcgotIyBXNjAxOiAuaGFzX2tleSgpIGlzIGRlcHJlY2F0ZWQsIHVzZSDigJhpbuKAmQotIyBO
ODAxOiBjbGFzcyBuYW1lcyBzaG91bGQgdXNlIENhcFdvcmRzIGNvbnZlbnRpb24KLSMgTjgwMjog
ZnVuY3Rpb24gbmFtZSBzaG91bGQgYmUgbG93ZXJjYXNlCi1pZ25vcmUgPSBFMTI4LEUxMjksRTIy
MSxFMjI2LEUyMzEsRTI1MSxFMjY1LEUzMDIsRTMwMyxFMzA1LEU0MDIsRTczMSxFOTAxLFc2MDEs
TjgwMSxOODAyCi1tYXgtbGluZS1sZW5ndGggPSAxNDEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL19faW5pdF9f
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9n
aXRpZ25vcmUvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdl
NmYyZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9naXRpZ25vcmUvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvX19pbml0X18ucHkKQEAgLTEgKzAsMCBA
QAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJl
Y3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRp
Z25vcmUvZ2l0aWdub3JlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9naXRpZ25vcmUvZ2l0aWdub3JlLnB5CmluZGV4IDg3MDJjZWM3ZGI1Zjhj
MTIxNDRjZjlmYzcwYmVjNWEyNjcwMTQzZWMuLmQ1ZWE0YTZhOGYzZDY0ZDRhYmEzYjhkY2JlNWZm
ZTg0OWI3NGU5NjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9naXRpZ25v
cmUucHkKQEAgLTEsMjEgKzEsNDcgQEAKIGltcG9ydCByZQogaW1wb3J0IG9zCitpbXBvcnQgaXRl
cnRvb2xzCitmcm9tIHNpeCBpbXBvcnQgaXRlcnZhbHVlcywgaXRlcml0ZW1zCitmcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAorCitNWVBZID0gRmFsc2UKK2lmIE1ZUFk6CisgICAg
IyBNWVBZIGlzIHNldCB0byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHkuCisgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IEFueQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBEaWN0CisgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IEl0ZXJhYmxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IExpc3QKKyAgICBmcm9t
IHR5cGluZyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0
aW9uYWwKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgUGF0dGVybgorICAgIGZyb20gdHlwaW5nIGlt
cG9ydCBUdXBsZQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyCisgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IFVuaW9uCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IGNhc3QKKworICAgIFQgPSBU
eXBlVmFyKCdUJykKKwogCiBlbmRfc3BhY2UgPSByZS5jb21waWxlKHIiKFteXFxdXHMpKiQiKQog
CiAKLWRlZiBmbm1hdGNoX3RyYW5zbGF0ZShwYXQsIHBhdGhfbmFtZT1GYWxzZSk6CitkZWYgZm5t
YXRjaF90cmFuc2xhdGUocGF0KToKKyAgICAjIHR5cGU6IChzdHIpIC0+IFR1cGxlW2Jvb2wsIFBh
dHRlcm5bc3RyXV0KICAgICBwYXJ0cyA9IFtdCi0gICAgc2VxID0gRmFsc2UKKyAgICBzZXEgPSBO
b25lCiAgICAgaSA9IDAKLSAgICBpZiBwYXRbMF0gPT0gIi8iIG9yIHBhdGhfbmFtZToKKyAgICBh
bnlfY2hhciA9ICJbXi9dIgorICAgIGlmIHBhdFswXSA9PSAiLyI6CiAgICAgICAgIHBhcnRzLmFw
cGVuZCgiXiIpCi0gICAgICAgIGFueV9jaGFyID0gIlteL10iCi0gICAgICAgIGlmIHBhdFswXSA9
PSAiLyI6Ci0gICAgICAgICAgICBwYXQgPSBwYXRbMTpdCisgICAgICAgIHBhdCA9IHBhdFsxOl0K
ICAgICBlbHNlOgotICAgICAgICBhbnlfY2hhciA9ICIuIgorICAgICAgICAjIEJ5IGRlZmF1bHQg
bWF0Y2ggdGhlIGVudGlyZSBwYXRoIHVwIHRvIGEgLworICAgICAgICAjIGJ1dCBpZiAvIGRvZXNu
J3QgYXBwZWFyIGluIHRoZSBwYXR0ZXJuIHdlIHdpbGwgbWFyayBpcyBhcworICAgICAgICAjIGEg
bmFtZSBwYXR0ZXJuIGFuZCBqdXN0IHByb2R1Y2UgYSBwYXR0ZXJuIHRoYXQgbWF0Y2hlcyBhZ2Fp
bnN0CisgICAgICAgICMgdGhlIGZpbGVuYW1lCiAgICAgICAgIHBhcnRzLmFwcGVuZCgiXig/Oi4q
Lyk/IikKKworICAgIG5hbWVfcGF0dGVybiA9IFRydWUKICAgICBpZiBwYXRbLTFdID09ICIvIjoK
ICAgICAgICAgIyBJZiB0aGUgbGFzdCBjaGFyYWN0ZXIgaXMgLyBtYXRjaCB0aGlzIGRpcmVjdG9y
eSBvciBhbnkgc3ViZGlyZWN0b3J5CiAgICAgICAgIHBhdCA9IHBhdFs6LTFdCkBAIC0zMSwxMSAr
NTcsMTAgQEAgZGVmIGZubWF0Y2hfdHJhbnNsYXRlKHBhdCwgcGF0aF9uYW1lPUZhbHNlKToKICAg
ICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQocmUuZXNjYXBlKGMpKQogICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCi0gICAgICAgIGVsaWYgc2VxOgor
ICAgICAgICBlbGlmIHNlcSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICMgVE9ETzogdGhpcyBk
b2Vzbid0IHJlYWxseSBoYW5kbGUgaW52YWxpZCBzZXF1ZW5jZXMgaW4gdGhlIHJpZ2h0IHdheQog
ICAgICAgICAgICAgaWYgYyA9PSAiXSI6Ci0gICAgICAgICAgICAgICAgc2VxID0gRmFsc2UKLSAg
ICAgICAgICAgICAgICAjIEZpcnN0IHR3byBjYXNlcyBhcmUgdG8gZGVhbCB3aXRoIHRoZSBjYXNl
IHdoZXJlIC8gaXMgdGhlIG9ubHkgY2hhcmFjdGVyCi0gICAgICAgICAgICAgICAgIyBpbiB0aGUg
c2VxdWVuY2UgYnV0IHBhdGhfbmFtZSBpcyBUcnVlIHNvIGl0IHNob3VsZG4ndCBtYXRjaCBhbnl0
aGluZworICAgICAgICAgICAgICAgIHNlcSA9IE5vbmUKICAgICAgICAgICAgICAgICBpZiBwYXJ0
c1stMV0gPT0gIlsiOgogICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IHBhcnRzWzotMV0KICAg
ICAgICAgICAgICAgICBlbGlmIHBhcnRzWy0xXSA9PSAiXiIgYW5kIHBhcnRzWy0yXSA9PSAiWyI6
CkBAIC00NCw0MSArNjksNTMgQEAgZGVmIGZubWF0Y2hfdHJhbnNsYXRlKHBhdCwgcGF0aF9uYW1l
PUZhbHNlKToKICAgICAgICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKGMpCiAgICAgICAgICAg
ICBlbGlmIGMgPT0gIi0iOgogICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChjKQotICAgICAg
ICAgICAgZWxpZiBub3QgKHBhdGhfbmFtZSBhbmQgYyA9PSAiLyIpOgorICAgICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgICAgICBwYXJ0cyArPSByZS5lc2NhcGUoYykKICAgICAgICAgZWxpZiBj
ID09ICJbIjoKICAgICAgICAgICAgIHBhcnRzLmFwcGVuZCgiWyIpCiAgICAgICAgICAgICBpZiBp
IDwgbGVuKHBhdCkgLSAxIGFuZCBwYXRbaSsxXSBpbiAoIiEiLCAiXiIpOgogICAgICAgICAgICAg
ICAgIHBhcnRzLmFwcGVuZCgiXiIpCiAgICAgICAgICAgICAgICAgaSArPSAxCi0gICAgICAgICAg
ICBzZXEgPSBUcnVlCisgICAgICAgICAgICBzZXEgPSBpCiAgICAgICAgIGVsaWYgYyA9PSAiKiI6
CiAgICAgICAgICAgICBpZiBpIDwgbGVuKHBhdCkgLSAxIGFuZCBwYXRbaSsxXSA9PSAiKiI6Ci0g
ICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKGFueV9jaGFyICsgIioiKQorICAgICAgICAgICAg
ICAgIGlmIGkgPiAwIGFuZCBwYXRbaS0xXSAhPSAiLyI6CisgICAgICAgICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IKKyAgICAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIi4qIikKICAgICAg
ICAgICAgICAgICBpICs9IDEKLSAgICAgICAgICAgICAgICBpZiBpIDwgbGVuKHBhdCkgLSAxIGFu
ZCBwYXRbaSsxXSA9PSAiKiI6CisgICAgICAgICAgICAgICAgaWYgaSA8IGxlbihwYXQpIC0gMSBh
bmQgcGF0W2krMV0gIT0gIi8iOgogICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChhbnlfY2hh
ciArICIqIikKICAgICAgICAgZWxpZiBjID09ICI/IjoKICAgICAgICAgICAgIHBhcnRzLmFwcGVu
ZChhbnlfY2hhcikKKyAgICAgICAgZWxpZiBjID09ICIvIiBhbmQgbm90IHNlcToKKyAgICAgICAg
ICAgIG5hbWVfcGF0dGVybiA9IEZhbHNlCisgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoYykKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChyZS5lc2NhcGUoYykpCiAgICAg
ICAgIGkgKz0gMQogCi0gICAgaWYgc2VxOgorICAgIGlmIG5hbWVfcGF0dGVybjoKKyAgICAgICAg
cGFydHNbMF0gPSAiXiIKKworICAgIGlmIHNlcSBpcyBub3QgTm9uZToKICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcgogICAgIHBhcnRzLmFwcGVuZChzdWZmaXgpCiAgICAgdHJ5OgotICAgICAgICBy
ZXR1cm4gcmUuY29tcGlsZSgiIi5qb2luKHBhcnRzKSkKKyAgICAgICAgcmV0dXJuIG5hbWVfcGF0
dGVybiwgcmUuY29tcGlsZSgiIi5qb2luKHBhcnRzKSkKICAgICBleGNlcHQgRXhjZXB0aW9uOgot
ICAgICAgICByYWlzZQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisKKyMgUmVnZXhwIG1hdGNo
aW5nIHJ1bGVzIHRoYXQgaGF2ZSB0byBiZSBjb252ZXJ0ZWQgdG8gcGF0dGVybnMKK3BhdHRlcm5f
cmUgPSByZS5jb21waWxlKHIiLipbXCpcW1w/XSIpCiAKIAogZGVmIHBhcnNlX2xpbmUobGluZSk6
CisgICAgIyB0eXBlOiAoc3RyKSAtPiBPcHRpb25hbFtUdXBsZVtib29sLCBib29sLCBib29sLCBV
bmlvbltUdXBsZVtzdHIsIC4uLl0sIFR1cGxlW2Jvb2wsIFBhdHRlcm5bc3RyXV1dXV0KICAgICBs
aW5lID0gbGluZS5yc3RyaXAoKQogICAgIGlmIG5vdCBsaW5lIG9yIGxpbmVbMF0gPT0gIiMiOgot
ICAgICAgICByZXR1cm4KKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGludmVydCA9IGxpbmVb
MF0gPT0gIiEiCiAgICAgaWYgaW52ZXJ0OgpAQCAtODksMTMgKzEyNiwyMiBAQCBkZWYgcGFyc2Vf
bGluZShsaW5lKToKICAgICBpZiBkaXJfb25seToKICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQog
Ci0gICAgcmV0dXJuIGludmVydCwgZGlyX29ubHksIGZubWF0Y2hfdHJhbnNsYXRlKGxpbmUsIGRp
cl9vbmx5KQorICAgICMgQ291bGQgbWFrZSBhIHNwZWNpYWwgY2FzZSBmb3IgKiovZm9vLCBidXQg
d2UgZG9uJ3QgaGF2ZSBhbnkgcGF0dGVybnMgbGlrZSB0aGF0CisgICAgaWYgbm90IGludmVydCBh
bmQgbm90IHBhdHRlcm5fcmUubWF0Y2gobGluZSk6CisgICAgICAgIGxpdGVyYWwgPSBUcnVlCisg
ICAgICAgIHBhdHRlcm4gPSB0dXBsZShsaW5lLnJzcGxpdCgiLyIsIDEpKSAgIyB0eXBlOiBVbmlv
bltUdXBsZVtzdHIsIC4uLl0sIFR1cGxlW2Jvb2wsIFBhdHRlcm5bc3RyXV1dCisgICAgZWxzZToK
KyAgICAgICAgcGF0dGVybiA9IGZubWF0Y2hfdHJhbnNsYXRlKGxpbmUpCisgICAgICAgIGxpdGVy
YWwgPSBGYWxzZQorCisgICAgcmV0dXJuIGludmVydCwgZGlyX29ubHksIGxpdGVyYWwsIHBhdHRl
cm4KIAogCiBjbGFzcyBQYXRoRmlsdGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHJvb3QsIGV4dHJhcz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCwgZXh0cmFz
PU5vbmUsIGNhY2hlPU5vbmUpOgorICAgICAgICAjIHR5cGU6IChzdHIsIE9wdGlvbmFsW0xpc3Rb
c3RyXV0sIE9wdGlvbmFsW011dGFibGVNYXBwaW5nW3N0ciwgYm9vbF1dKSAtPiBOb25lCiAgICAg
ICAgIGlmIHJvb3Q6Ci0gICAgICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihyb290
LCAiLmdpdGlnbm9yZSIpCisgICAgICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9pbihy
b290LCAiLmdpdGlnbm9yZSIpICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KICAgICAgICAgZWxzZToK
ICAgICAgICAgICAgIGlnbm9yZV9wYXRoID0gTm9uZQogICAgICAgICBpZiBub3QgaWdub3JlX3Bh
dGggYW5kIG5vdCBleHRyYXM6CkBAIC0xMDMsNTEgKzE0OSwxMzkgQEAgY2xhc3MgUGF0aEZpbHRl
cihvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYudHJpdmlhbCA9IEZh
bHNlCiAKLSAgICAgICAgc2VsZi5ydWxlc19maWxlID0gW10KLSAgICAgICAgc2VsZi5ydWxlc19k
aXIgPSBbXQorICAgICAgICBzZWxmLmxpdGVyYWxzX2ZpbGUgPSBkZWZhdWx0ZGljdChkaWN0KSAg
IyB0eXBlOiBEaWN0W09wdGlvbmFsW3N0cl0sIERpY3Rbc3RyLCBMaXN0W1R1cGxlW2Jvb2wsIFBh
dHRlcm5bc3RyXV1dXV0KKyAgICAgICAgc2VsZi5saXRlcmFsc19kaXIgPSBkZWZhdWx0ZGljdChk
aWN0KSAgIyB0eXBlOiBEaWN0W09wdGlvbmFsW3N0cl0sIERpY3Rbc3RyLCBMaXN0W1R1cGxlW2Jv
b2wsIFBhdHRlcm5bc3RyXV1dXV0KKyAgICAgICAgc2VsZi5wYXR0ZXJuc19maWxlID0gW10gICMg
dHlwZTogTGlzdFtUdXBsZVtUdXBsZVtib29sLCBQYXR0ZXJuW3N0cl1dLCBMaXN0W1R1cGxlW2Jv
b2wsIFBhdHRlcm5bc3RyXV1dXV0KKyAgICAgICAgc2VsZi5wYXR0ZXJuc19kaXIgPSBbXSAgIyB0
eXBlOiBMaXN0W1R1cGxlW1R1cGxlW2Jvb2wsIFBhdHRlcm5bc3RyXV0sIExpc3RbVHVwbGVbYm9v
bCwgUGF0dGVybltzdHJdXV1dXQorICAgICAgICBzZWxmLmNhY2hlID0gY2FjaGUgb3Ige30gICMg
dHlwZTogTXV0YWJsZU1hcHBpbmdbc3RyLCBib29sXQogCiAgICAgICAgIGlmIGV4dHJhcyBpcyBO
b25lOgogICAgICAgICAgICAgZXh0cmFzID0gW10KIAogICAgICAgICBpZiBpZ25vcmVfcGF0aCBh
bmQgb3MucGF0aC5leGlzdHMoaWdub3JlX3BhdGgpOgotICAgICAgICAgICAgc2VsZi5fcmVhZF9p
Z25vcmUoaWdub3JlX3BhdGgpCi0KLSAgICAgICAgZm9yIGl0ZW0gaW4gZXh0cmFzOgotICAgICAg
ICAgICAgc2VsZi5fcmVhZF9saW5lKGl0ZW0pCisgICAgICAgICAgICBhcmdzID0gaWdub3JlX3Bh
dGgsIGV4dHJhcyAgIyB0eXBlOiBUdXBsZVtPcHRpb25hbFtzdHJdLCBMaXN0W3N0cl1dCisgICAg
ICAgIGVsc2U6CisgICAgICAgICAgICBhcmdzID0gTm9uZSwgZXh0cmFzCisgICAgICAgIHNlbGYu
X3JlYWRfaWdub3JlKCphcmdzKQogCi0gICAgZGVmIF9yZWFkX2lnbm9yZShzZWxmLCBpZ25vcmVf
cGF0aCk6Ci0gICAgICAgIHdpdGggb3BlbihpZ25vcmVfcGF0aCkgYXMgZjoKLSAgICAgICAgICAg
IGZvciBsaW5lIGluIGY6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVhZF9saW5lKGxpbmUpCisg
ICAgZGVmIF9yZWFkX2lnbm9yZShzZWxmLCBpZ25vcmVfcGF0aCwgZXh0cmFzKToKKyAgICAgICAg
IyB0eXBlOiAoT3B0aW9uYWxbc3RyXSwgTGlzdFtzdHJdKSAtPiBOb25lCisgICAgICAgIGlmIGln
bm9yZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgd2l0aCBvcGVuKGlnbm9yZV9wYXRo
KSBhcyBmOgorICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGY6CisgICAgICAgICAgICAgICAg
ICAgIHNlbGYuX3JlYWRfbGluZShsaW5lKQorICAgICAgICBmb3IgbGluZSBpbiBleHRyYXM6Cisg
ICAgICAgICAgICBzZWxmLl9yZWFkX2xpbmUobGluZSkKIAogICAgIGRlZiBfcmVhZF9saW5lKHNl
bGYsIGxpbmUpOgorICAgICAgICAjIHR5cGU6IChzdHIpIC0+IE5vbmUKICAgICAgICAgcGFyc2Vk
ID0gcGFyc2VfbGluZShsaW5lKQogICAgICAgICBpZiBub3QgcGFyc2VkOgogICAgICAgICAgICAg
cmV0dXJuCi0gICAgICAgIGludmVydCwgZGlyX29ubHksIHJlZ2V4cCA9IHBhcnNlZAotICAgICAg
ICBpZiBkaXJfb25seToKLSAgICAgICAgICAgIHNlbGYucnVsZXNfZGlyLmFwcGVuZCgocmVnZXhw
LCBpbnZlcnQpKQorICAgICAgICBpbnZlcnQsIGRpcl9vbmx5LCBsaXRlcmFsLCBydWxlID0gcGFy
c2VkCisKKyAgICAgICAgaWYgaW52ZXJ0OgorICAgICAgICAgICAgIyBGb3IgZXhjbHVkZSBydWxl
cywgd2UgYXR0YWNoIHRoZSBydWxlcyB0byBhbGwgcHJlY2VlZGluZyBwYXR0ZXJucywgc28KKyAg
ICAgICAgICAgICMgdGhhdCB3ZSBjYW4gbWF0Y2ggcGF0dGVybnMgb3V0IG9mIG9yZGVyIGFuZCBj
aGVjayBpZiB0aGV5IHdlcmUgbGF0ZXIKKyAgICAgICAgICAgICMgb3ZlcnJpZGVuIGJ5IGFuIGV4
Y2x1ZGUgcnVsZQorICAgICAgICAgICAgYXNzZXJ0IG5vdCBsaXRlcmFsCisgICAgICAgICAgICBp
ZiBNWVBZOgorICAgICAgICAgICAgICAgIHJ1bGUgPSBjYXN0KFR1cGxlW2Jvb2wsIFBhdHRlcm5b
c3RyXV0sIHJ1bGUpCisgICAgICAgICAgICBpZiBub3QgZGlyX29ubHk6CisgICAgICAgICAgICAg
ICAgcnVsZXNfaXRlciA9IGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAgICAgICAgICAgICAgaXRl
cnRvb2xzLmNoYWluKCooaXRlcml0ZW1zKGl0ZW0pIGZvciBpdGVtIGluIGl0ZXJ2YWx1ZXMoc2Vs
Zi5saXRlcmFsc19kaXIpKSksCisgICAgICAgICAgICAgICAgICAgIGl0ZXJ0b29scy5jaGFpbigq
KGl0ZXJpdGVtcyhpdGVtKSBmb3IgaXRlbSBpbiBpdGVydmFsdWVzKHNlbGYubGl0ZXJhbHNfZmls
ZSkpKSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXR0ZXJuc19kaXIsCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYucGF0dGVybnNfZmlsZSkgICMgdHlwZTogSXRlcmFibGVbVHVwbGVbQW55
LCBMaXN0W1R1cGxlW2Jvb2wsIFBhdHRlcm5bc3RyXV1dXV0KKyAgICAgICAgICAgIGVsc2U6Cisg
ICAgICAgICAgICAgICAgcnVsZXNfaXRlciA9IGl0ZXJ0b29scy5jaGFpbigKKyAgICAgICAgICAg
ICAgICAgICAgaXRlcnRvb2xzLmNoYWluKCooaXRlcml0ZW1zKGl0ZW0pIGZvciBpdGVtIGluIGl0
ZXJ2YWx1ZXMoc2VsZi5saXRlcmFsc19kaXIpKSksCisgICAgICAgICAgICAgICAgICAgIHNlbGYu
cGF0dGVybnNfZGlyKQorCisgICAgICAgICAgICBmb3IgcnVsZXMgaW4gcnVsZXNfaXRlcjoKKyAg
ICAgICAgICAgICAgICBydWxlc1sxXS5hcHBlbmQocnVsZSkKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHNlbGYucnVsZXNfZmlsZS5hcHBlbmQoKHJlZ2V4cCwgaW52ZXJ0KSkKKyAgICAgICAg
ICAgIGlmIGxpdGVyYWw6CisgICAgICAgICAgICAgICAgaWYgTVlQWToKKyAgICAgICAgICAgICAg
ICAgICAgcnVsZSA9IGNhc3QoVHVwbGVbc3RyLCAuLi5dLCBydWxlKQorICAgICAgICAgICAgICAg
IGlmIGxlbihydWxlKSA9PSAxOgorICAgICAgICAgICAgICAgICAgICBkaXJfbmFtZSwgcGF0dGVy
biA9IE5vbmUsIHJ1bGVbMF0gICMgdHlwZTogVHVwbGVbT3B0aW9uYWxbc3RyXSwgc3RyXQorICAg
ICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRpcl9uYW1lLCBwYXR0ZXJu
ID0gcnVsZQorICAgICAgICAgICAgICAgIHNlbGYubGl0ZXJhbHNfZGlyW2Rpcl9uYW1lXVtwYXR0
ZXJuXSA9IFtdCisgICAgICAgICAgICAgICAgaWYgbm90IGRpcl9vbmx5OgorICAgICAgICAgICAg
ICAgICAgICBzZWxmLmxpdGVyYWxzX2ZpbGVbZGlyX25hbWVdW3BhdHRlcm5dID0gW10KKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaWYgTVlQWToKKyAgICAgICAgICAgICAgICAg
ICAgcnVsZSA9IGNhc3QoVHVwbGVbYm9vbCwgUGF0dGVybltzdHJdXSwgcnVsZSkKKyAgICAgICAg
ICAgICAgICBzZWxmLnBhdHRlcm5zX2Rpci5hcHBlbmQoKHJ1bGUsIFtdKSkKKyAgICAgICAgICAg
ICAgICBpZiBub3QgZGlyX29ubHk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0dGVybnNf
ZmlsZS5hcHBlbmQoKHJ1bGUsIFtdKSkKIAotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXRoKToK
LSAgICAgICAgaWYgb3MucGF0aC5zZXAgIT0gIi8iOgotICAgICAgICAgICAgcGF0aCA9IHBhdGgu
cmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQorICAgIGRlZiBmaWx0ZXIoc2VsZiwKKyAgICAgICAg
ICAgICAgIGl0ZXJhdG9yICAjIHR5cGU6IEl0ZXJhYmxlW1R1cGxlW3N0ciwgTGlzdFtUdXBsZVtz
dHIsIFRdXSwgTGlzdFtUdXBsZVtzdHIsIFRdXV1dCisgICAgICAgICAgICAgICApOgorICAgICAg
ICAjIHR5cGU6ICguLi4pIC0+IEl0ZXJhYmxlW1R1cGxlW3N0ciwgTGlzdFtUdXBsZVtzdHIsIFRd
XSwgTGlzdFtUdXBsZVtzdHIsIFRdXV1dCisgICAgICAgIGVtcHR5ID0ge30gICMgdHlwZTogRGlj
dFtBbnksIEFueV0KKyAgICAgICAgZm9yIGRpcnBhdGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4g
aXRlcmF0b3I6CisgICAgICAgICAgICBvcmlnX2RpcnBhdGggPSBkaXJwYXRoCisgICAgICAgICAg
ICBpZiBvcy5wYXRoLnNlcCAhPSAiLyI6CisgICAgICAgICAgICAgICAgZGlycGF0aCA9IGRpcnBh
dGgucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQogCisgICAgICAgICAgICBrZWVwX2RpcnMgPSBb
XSAgIyB0eXBlOiBMaXN0W1R1cGxlW3N0ciwgVF1dCisgICAgICAgICAgICBrZWVwX2ZpbGVzID0g
W10gICMgdHlwZTogTGlzdFtUdXBsZVtzdHIsIFRdXQorCisgICAgICAgICAgICBmb3IgaXRlcl9p
dGVtcywgbGl0ZXJhbHMsIHBhdHRlcm5zLCB0YXJnZXQsIHN1ZmZpeCBpbiBbCisgICAgICAgICAg
ICAgICAgICAgIChkaXJuYW1lcywgc2VsZi5saXRlcmFsc19kaXIsIHNlbGYucGF0dGVybnNfZGly
LCBrZWVwX2RpcnMsICIvIiksCisgICAgICAgICAgICAgICAgICAgIChmaWxlbmFtZXMsIHNlbGYu
bGl0ZXJhbHNfZmlsZSwgc2VsZi5wYXR0ZXJuc19maWxlLCBrZWVwX2ZpbGVzLCAiIildOgorICAg
ICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZXJfaXRlbXM6CisgICAgICAgICAgICAgICAgICAg
IG5hbWUgPSBpdGVtWzBdCisgICAgICAgICAgICAgICAgICAgIGlmIGRpcnBhdGg6CisgICAgICAg
ICAgICAgICAgICAgICAgICBwYXRoID0gIiVzLyVzIiAlIChkaXJwYXRoLCBuYW1lKSArIHN1ZmZp
eAorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0
aCA9IG5hbWUgKyBzdWZmaXgKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBpbiBzZWxmLmNh
Y2hlOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuY2FjaGVbcGF0aF06Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0LmFwcGVuZChpdGVtKQorICAgICAgICAg
ICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgZm9yIHJ1bGVfZGly
IGluIFtOb25lLCBkaXJwYXRoXToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4g
bGl0ZXJhbHMuZ2V0KHJ1bGVfZGlyLCBlbXB0eSk6CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZXhjbHVkZSA9IGxpdGVyYWxzW3J1bGVfZGlyXVtuYW1lXQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIG5vdCBhbnkocnVsZS5tYXRjaChuYW1lIGlmIG5hbWVfb25seSBlbHNlIHBh
dGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZV9vbmx5
LCBydWxlIGluIGV4Y2x1ZGUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFNr
aXAgdGhpcyBpdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FjaGVb
cGF0aF0gPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAg
ICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbXBv
bmVudF9vbmx5LCBwYXR0ZXJuKSwgZXhjbHVkZSBpbiBwYXR0ZXJuczoKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBpZiBjb21wb25lbnRfb25seToKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWF0Y2ggPSBwYXR0ZXJuLm1hdGNoKG5hbWUpCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSBw
YXR0ZXJuLm1hdGNoKHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbWF0Y2g6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBhbnkocnVsZS5tYXRjaChu
YW1lIGlmIG5hbWVfb25seSBlbHNlIHBhdGgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yIG5hbWVfb25seSwgcnVsZSBpbiBleGNsdWRlKToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2tpcCB0aGlzIGl0ZW0KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY2FjaGVbcGF0aF0gPSBUcnVlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNhY2hlW3BhdGhdID0g
RmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXQuYXBwZW5kKGl0ZW0pCisK
KyAgICAgICAgICAgIGRpcm5hbWVzWzpdID0ga2VlcF9kaXJzCisgICAgICAgICAgICBhc3NlcnQg
Ii5naXQiIG5vdCBpbiBkaXJuYW1lcworICAgICAgICAgICAgeWllbGQgb3JpZ19kaXJwYXRoLCBk
aXJuYW1lcywga2VlcF9maWxlcworCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsCisgICAgICAgICAg
ICAgICAgIGl0ZXJhdG9yICAjIHR5cGU6IEl0ZXJhYmxlW1R1cGxlW3N0ciwgTGlzdFtUdXBsZVtz
dHIsIFRdXSwgTGlzdFtUdXBsZVtzdHIsIFRdXV1dCisgICAgICAgICAgICAgICAgICk6CisgICAg
ICAgICMgdHlwZTogKC4uLikgLT4gSXRlcmFibGVbVHVwbGVbc3RyLCBMaXN0W1R1cGxlW3N0ciwg
VF1dLCBMaXN0W1R1cGxlW3N0ciwgVF1dXV0KICAgICAgICAgaWYgc2VsZi50cml2aWFsOgotICAg
ICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBpdGVyYXRvcgogCi0gICAg
ICAgIHBhdGhfaXNfZGlyID0gcGF0aFstMV0gPT0gIi8iCi0gICAgICAgIGlmIHBhdGhfaXNfZGly
OgotICAgICAgICAgICAgcGF0aCA9IHBhdGhbOi0xXQotICAgICAgICAgICAgcnVsZXMgPSBzZWxm
LnJ1bGVzX2RpcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcnVsZXMgPSBzZWxmLnJ1bGVz
X2ZpbGUKLQotICAgICAgICBpbmNsdWRlID0gVHJ1ZQotICAgICAgICBmb3IgcmVnZXhwLCBpbnZl
cnQgaW4gcnVsZXM6Ci0gICAgICAgICAgICBpZiBub3QgaW5jbHVkZSBhbmQgaW52ZXJ0IGFuZCBy
ZWdleHAubWF0Y2gocGF0aCk6Ci0gICAgICAgICAgICAgICAgaW5jbHVkZSA9IFRydWUKLSAgICAg
ICAgICAgIGVsaWYgaW5jbHVkZSBhbmQgbm90IGludmVydCBhbmQgcmVnZXhwLm1hdGNoKHBhdGgp
OgotICAgICAgICAgICAgICAgIGluY2x1ZGUgPSBGYWxzZQotICAgICAgICByZXR1cm4gaW5jbHVk
ZQorICAgICAgICByZXR1cm4gc2VsZi5maWx0ZXIoaXRlcmF0b3IpCisKKworZGVmIGhhc19pZ25v
cmUoZGlycGF0aCk6CisgICAgIyB0eXBlOiAoc3RyKSAtPiBib29sCisgICAgcmV0dXJuIG9zLnBh
dGguZXhpc3RzKG9zLnBhdGguam9pbihkaXJwYXRoLCAiLmdpdGlnbm9yZSIpKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRp
Z25vcmUvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQppbmRleCBhNjgz
NGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4
YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dp
dGlnbm9yZS90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyBy
ZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy90ZXN0X2dp
dGlnbm9yZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvZ2l0aWdub3JlL3Rlc3RzL3Rlc3RfZ2l0aWdub3JlLnB5CmluZGV4IDc1YTBkNThiMmM2
MDFjNGIxMDIzZmJiMTE3ZDM5YTQyOWQ4YmIwOWUuLjgxMzFhNzE4NzViNGQ1NjlmZWQ5NWY2Nzgx
ZmVjYTA2NDcwZWE2OGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL3Rlc3RfZ2l0aWdub3JlLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0
aWdub3JlL3Rlc3RzL3Rlc3RfZ2l0aWdub3JlLnB5CkBAIC0yLDgxICsyLDExMCBAQCBpbXBvcnQg
cHl0ZXN0CiAKIGZyb20gLi5naXRpZ25vcmUgaW1wb3J0IGZubWF0Y2hfdHJhbnNsYXRlLCBQYXRo
RmlsdGVyCiAKK01ZUFkgPSBGYWxzZQoraWYgTVlQWToKKyAgICAjIE1ZUFkgaXMgc2V0IHRvIFRy
dWUgd2hlbiBydW4gdW5kZXIgTXlweS4KKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKKyAg
ICBmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgU2Vx
dWVuY2UKKwogbWF0Y2hfZGF0YSA9IFsKLSAgICAoImZvbyIsIEZhbHNlLCBbImEvZm9vIiwgImZv
byJdKSwKLSAgICAoIiouYSIsIEZhbHNlLCBbImZvby5hIiwgImEvZm9vLmEiLCAiYS9iL2Zvby5h
IiwgImEuYS9mb28uYSJdKSwKLSAgICAoIioucHlbY29dIiwgRmFsc2UsIFsiYS5weWMiLCAiYS5w
eW8iLCAiYS9iL2MucHljIl0pLAotICAgICgiXFwjKiIsIEZhbHNlLCBbIiNhIiwgImEvI2IiXSks
Ci0gICAgKCIqIyIsIEZhbHNlLCBbImEjIiwgImEvYiMiLCAiI2EjIl0pLAotICAgICgiLyouYyIs
IEZhbHNlLCBbImEuYyIsICIuYyJdKSwKKyAgICAoImZvbyIsIFRydWUsIFsiYS9mb28iLCAiZm9v
Il0pLAorICAgICgiKi5hIiwgVHJ1ZSwgWyJmb28uYSIsICJhL2Zvby5hIiwgImEvYi9mb28uYSIs
ICJhLmEvZm9vLmEiXSksCisgICAgKCIqLnB5W2NvXSIsIFRydWUsIFsiYS5weWMiLCAiYS5weW8i
LCAiYS9iL2MucHljIl0pLAorICAgICgiXFwjKiIsIFRydWUsIFsiI2EiLCAiYS8jYiJdKSwKKyAg
ICAoIiojIiwgVHJ1ZSwgWyJhIyIsICJhL2IjIiwgIiNhIyJdKSwKKyAgICAoIi8qLmMiLCBUcnVl
LCBbImEuYyIsICIuYyJdKSwKICAgICAoIioqL2IiLCBGYWxzZSwgWyJhL2IiLCAiYS9jL2IiXSks
CiAgICAgKCIqYiIsIFRydWUsIFsiYWIiXSksCi0gICAgKCIqKi9iIiwgVHJ1ZSwgWyJhL2IiXSks
Ci0gICAgKCJhLyIsIFRydWUsIFsiYSIsICJhL2IiLCAiYS9iL2MiXSkKLV0KKyAgICAoIipiIiwg
VHJ1ZSwgWyJhL2IiXSksCisgICAgKCIqKi9iIiwgRmFsc2UsIFsiYS9iIl0pLAorICAgICgiYS8i
LCBUcnVlLCBbImEiXSksCisgICAgKCJhWy9dYiIsIFRydWUsIFtdKSwKKyAgICAoIioqL2IiLCBG
YWxzZSwgWyJhL2MvYiJdKSwKKyAgICAoImE/YyIsIFRydWUsIFsiYWJjIl0pLAorICAgICgiYVte
Yl1jIiwgVHJ1ZSwgWyJhY2MiXSksCisgICAgKCJhW2ItY11jIiwgVHJ1ZSwgWyJhYmMiLCAiYWNj
Il0pLAorICAgICgiYVteXWMiLCBUcnVlLCBbImFjIl0pLCAgIyBUaGlzIGlzIHByb2JhYmx5IHdy
b25nCisgICAgKCJhW15dYyIsIFRydWUsIFsiYWMiXSksICAjIFRoaXMgaXMgcHJvYmFibHkgd3Jv
bmcKK10gICMgdHlwZTogU2VxdWVuY2VbVHVwbGVbc3RyLCBib29sLCBJdGVyYWJsZVtzdHJdXV0K
IAogbWlzbWF0Y2hfZGF0YSA9IFsKLSAgICAoImZvbyIsIEZhbHNlLCBbImZvb2IiLCAiYWZvbyJd
KSwKLSAgICAoIiouYSIsIEZhbHNlLCBbImEiLCAiZm9vOmEiLCAiYS5hL2ZvbyJdKSwKLSAgICAo
IioucHlbY29dIiwgRmFsc2UsIFsiYS5weWQiLCAicHlvIl0pLAotICAgICgiLyouYyIsIEZhbHNl
LCBbImEvYi5jIl0pLAotICAgICgiKmIiLCBUcnVlLCBbImEvYiJdKSwKLSAgICAoIioqYiIsIFRy
dWUsIFsiYS9iIl0pLAotICAgICgiYVsvXWIiLCBUcnVlLCBbImEvYiJdKSwKLSAgICAoIioqL2Ii
LCBUcnVlLCBbImEvYy9iIl0pLAotICAgICgiYSIsIFRydWUsIFsiYWIiXSkKLV0KKyAgICAoImZv
byIsIFRydWUsIFsiZm9vYiIsICJhZm9vIl0pLAorICAgICgiKi5hIiwgVHJ1ZSwgWyJhIiwgImZv
bzphIiwgImEuYS9mb28iXSksCisgICAgKCIqLnB5W2NvXSIsIFRydWUsIFsiYS5weWQiLCAicHlv
IiwgImEucHkiXSksCisgICAgKCJhIiwgVHJ1ZSwgWyJhYiJdKSwKKyAgICAoImE/YyIsIFRydWUs
IFsiYWMiLCAiYWJiYyJdKSwKKyAgICAoImFbXmJdYyIsIFRydWUsIFsiYWJjIl0pLAorICAgICgi
YVtiLWNdYyIsIFRydWUsIFsiYWRjIl0pLAorXSAgIyB0eXBlOiBTZXF1ZW5jZVtUdXBsZVtzdHIs
IGJvb2wsIEl0ZXJhYmxlW3N0cl1dXQogCiBpbnZhbGlkX2RhdGEgPSBbCiAgICAgIlthIiwKICAg
ICAiKioqL2ZvbyIsCiAgICAgImFcXCIsCisgICAgIioqYiIsCisgICAgImIqKi8iLAorICAgICJb
W10iCiBdCiAKIGZpbHRlcl9kYXRhID0gWwotICAgICgiZm9vIiwgVHJ1ZSksCi0gICAgKCJhIiwg
RmFsc2UpLAotICAgICgiYS9iIiwgRmFsc2UpLAotICAgICgiYS9jIiwgVHJ1ZSksCi0gICAgKCJh
L2MvIiwgRmFsc2UpLAotICAgICgiYy9iIiwgVHJ1ZSkKKyAgICAoWyJmb28iLCAiYmFyLyIsICIv
YSIsICIqLnB5Il0sCisgICAgIFsoIiIsIFsiZm9vIiwgImJhciIsICJiYXoiXSwgWyJhIl0pLAor
ICAgICAgKCJiYXoiLCBbImEiXSwgWyJmb28iLCAiYmFyIl0pXSwKKyAgICAgWyhbImJheiJdLCBb
XSksCisgICAgICAoWyJhIl0sIFsiYmFyIl0pXSksCisgICAgKFsiI2ZvbyIsICIiLCAiYSoiLCAi
IWEucHkiXSwKKyAgICAgWygiIiwgWyJmb28iXSwgWyJhIiwgImEuZm9vIiwgImEucHkiXSldLAor
ICAgICBbKFsiZm9vIl0sIFsiYS5weSJdKV0pLAorICAgIChbImEuZm9vIiwgIiFhLnB5Il0sCisg
ICAgIFsoIiIsIFsiZm9vIl0sIFsiYSIsICJhLmZvbyIsICJhLnB5Il0pXSwKKyAgICAgWyhbImZv
byJdLCBbImEiLCAiYS5weSJdKV0pLAogXQogCiAKIGRlZiBleHBhbmRfZGF0YShjb21wYWN0X2Rh
dGEpOgotICAgIGZvciBwYXR0ZXJuLCBwYXRoX25hbWUsIGlucHV0cyBpbiBjb21wYWN0X2RhdGE6
CisgICAgIyB0eXBlOiAoU2VxdWVuY2VbVHVwbGVbc3RyLCBib29sLCBJdGVyYWJsZVtzdHJdXV0p
IC0+IEl0ZXJhYmxlW1R1cGxlW3N0ciwgYm9vbCwgc3RyXV0KKyAgICBmb3IgcGF0dGVybiwgbmFt
ZV9vbmx5LCBpbnB1dHMgaW4gY29tcGFjdF9kYXRhOgogICAgICAgICBmb3IgaW5wdXQgaW4gaW5w
dXRzOgotICAgICAgICAgICAgeWllbGQgcGF0dGVybiwgaW5wdXQsIHBhdGhfbmFtZQorICAgICAg
ICAgICAgeWllbGQgcGF0dGVybiwgbmFtZV9vbmx5LCBpbnB1dAogCiAKLUBweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgicGF0dGVybiwgaW5wdXQsIHBhdGhfbmFtZSIsIGV4cGFuZF9kYXRhKG1hdGNo
X2RhdGEpKQotZGVmIHRlc3RzX21hdGNoKHBhdHRlcm4sIGlucHV0LCBwYXRoX25hbWUpOgotICAg
IHJlZ2V4cCA9IGZubWF0Y2hfdHJhbnNsYXRlKHBhdHRlcm4sIHBhdGhfbmFtZSkKK0BweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgicGF0dGVybiwgbmFtZV9vbmx5LCBpbnB1dCIsIGV4cGFuZF9kYXRh
KG1hdGNoX2RhdGEpKQorZGVmIHRlc3RzX21hdGNoKHBhdHRlcm4sIG5hbWVfb25seSwgaW5wdXQp
OgorICAgIG5hbWVfb25seV9yZXN1bHQsIHJlZ2V4cCA9IGZubWF0Y2hfdHJhbnNsYXRlKHBhdHRl
cm4pCisgICAgYXNzZXJ0IG5hbWVfb25seV9yZXN1bHQgPT0gbmFtZV9vbmx5CisgICAgaWYgbmFt
ZV9vbmx5OgorICAgICAgICBpbnB1dCA9IGlucHV0LnJzcGxpdCgiLyIsIDEpWy0xXQogICAgIGFz
c2VydCByZWdleHAubWF0Y2goaW5wdXQpIGlzIG5vdCBOb25lCiAKIAotQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJwYXR0ZXJuLCBpbnB1dCwgcGF0aF9uYW1lIiwgZXhwYW5kX2RhdGEobWlzbWF0
Y2hfZGF0YSkpCi1kZWYgdGVzdHNfbm9fbWF0Y2gocGF0dGVybiwgaW5wdXQsIHBhdGhfbmFtZSk6
Ci0gICAgcmVnZXhwID0gZm5tYXRjaF90cmFuc2xhdGUocGF0dGVybiwgcGF0aF9uYW1lKQorQHB5
dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJwYXR0ZXJuLCBuYW1lX29ubHksIGlucHV0IiwgZXhwYW5k
X2RhdGEobWlzbWF0Y2hfZGF0YSkpCitkZWYgdGVzdHNfbm9fbWF0Y2gocGF0dGVybiwgbmFtZV9v
bmx5LCBpbnB1dCk6CisgICAgbmFtZV9vbmx5X3Jlc3VsdCwgcmVnZXhwID0gZm5tYXRjaF90cmFu
c2xhdGUocGF0dGVybikKKyAgICBhc3NlcnQgbmFtZV9vbmx5X3Jlc3VsdCA9PSBuYW1lX29ubHkK
KyAgICBpZiBuYW1lX29ubHk6CisgICAgICAgIGlucHV0ID0gaW5wdXQucnNwbGl0KCIvIiwgMSlb
LTFdCiAgICAgYXNzZXJ0IHJlZ2V4cC5tYXRjaChpbnB1dCkgaXMgTm9uZQogCiAKIEBweXRlc3Qu
bWFyay5wYXJhbWV0cml6ZSgicGF0dGVybiIsIGludmFsaWRfZGF0YSkKIGRlZiB0ZXN0c19pbnZh
bGlkKHBhdHRlcm4pOgogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAg
ICAgZm5tYXRjaF90cmFuc2xhdGUocGF0dGVybiwgRmFsc2UpCi0gICAgd2l0aCBweXRlc3QucmFp
c2VzKFZhbHVlRXJyb3IpOgotICAgICAgICBmbm1hdGNoX3RyYW5zbGF0ZShwYXR0ZXJuLCBUcnVl
KQotCi0KLUBweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGF0aCwgZXhwZWN0ZWQiLCBmaWx0ZXJf
ZGF0YSkKLWRlZiB0ZXN0X3BhdGhfZmlsdGVyKHBhdGgsIGV4cGVjdGVkKToKLSAgICBleHRyYXMg
PSBbCi0gICAgICAgICIjZm9vIiwKLSAgICAgICAgImEgICIsCi0gICAgICAgICIqKi9iIiwKLSAg
ICAgICAgImEvYy8iLAotICAgICAgICAiIWMvYiIsCi0gICAgXQotICAgIGYgPSBQYXRoRmlsdGVy
KE5vbmUsIGV4dHJhcykKLSAgICBhc3NlcnQgZihwYXRoKSA9PSBleHBlY3RlZAorICAgICAgICBm
bm1hdGNoX3RyYW5zbGF0ZShwYXR0ZXJuKQorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgi
cnVsZXMsIGlucHV0LCBleHBlY3RlZCIsIGZpbHRlcl9kYXRhKQorZGVmIHRlc3RfcGF0aF9maWx0
ZXIocnVsZXMsIGlucHV0LCBleHBlY3RlZCk6CisgICAgZiA9IFBhdGhGaWx0ZXIoTm9uZSwgcnVs
ZXMpCisgICAgIyBBZGQgc29tZSBmYWtlIHN0YXQgZGF0YQorICAgIGZvciBpLCBpdGVtIGluIGVu
dW1lcmF0ZShpbnB1dCk6CisgICAgICAgIHJlcGwgPSBbaW5wdXRbaV1bMF1dCisgICAgICAgIGZv
ciBqIGluIFsxLCAyXToKKyAgICAgICAgICAgIHJlcGwuYXBwZW5kKFsobmFtZSwgTm9uZSkgZm9y
IG5hbWUgaW4gaW5wdXRbaV1bal1dKQorICAgICAgICBpbnB1dFtpXSA9IHR1cGxlKHJlcGwpCisK
KyAgICBmb3IgaSwgb3V0cHV0IGluIGVudW1lcmF0ZShmKGlucHV0KSk6CisgICAgICAgIGFzc2Vy
dCBvdXRwdXRbMF0gPT0gaW5wdXRbaV1bMF0KKyAgICAgICAgZm9yIGogaW4gWzEsIDJdOgorICAg
ICAgICAgICAgYXNzZXJ0IFtpdGVtWzBdIGZvciBpdGVtIGluIG91dHB1dFtqXV0gPT0gZXhwZWN0
ZWRbaV1bai0xXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0
cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJiODA0MDJj
ZmZiMjI4OTFiODc5NmRkZjM0OTJhNzhkNmI2N2VmYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUv
dGVzdHMvdGVzdF9naXRpZ25vcmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9naXRpZ25v
cmUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwOGNjNzQ3
YWNjZGQyZDQyYWI1NzIxZDMzYWU4NDdlYTA1MDk4ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9naXRpZ25vcmUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2dpdGlnbm9yZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL19faW5pdF9fLnB5
YwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvZ2l0
aWdub3JlL2dpdGlnbm9yZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvZ2l0aWdub3JlL2dpdGlnbm9yZS5weWMKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvQVVU
SE9SUy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2h0bWw1bGliL0FVVEhPUlMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
MTQ4YTZlZDI2MmQ0ZDRhMzhmNzAzNzBiNTJiOGY4ZGQ1ZWU2ZTMzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvQVVUSE9SUy5yc3QKKysrIC9kZXYvbnVs
bApAQCAtMSwzNCArMCwwIEBACi1DcmVkaXRzCi09PT09PT09Ci0KLWBgaHRtbDVsaWJgYCBpcyB3
cml0dGVuIGFuZCBtYWludGFpbmVkIGJ5OgotCi0tIEphbWVzIEdyYWhhbQotLSBHZW9mZnJleSBT
bmVkZG9uCi0tIMWBdWthc3ogTGFuZ2EKLQotCi1QYXRjaGVzIGFuZCBzdWdnZXN0aW9ucwotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLShJbiBjaHJvbm9sb2dpY2FsIG9yZGVyLCBieSBmaXJzdCBj
b21taXQ6KQotCi0tIEFubmUgdmFuIEtlc3RlcmVuCi0tIExhY2hsYW4gSHVudAotLSBsYW50aXM2
MwotLSBTYW0gUnVieQotLSBUaW0gRmxldGNoZXIKLS0gVGhvbWFzIEJyb3llcgotLSBNYXJrIFBp
bGdyaW0KLS0gUGhpbGlwIFRheWxvcgotLSBSeWFuIEtpbmcKLS0gRWR3YXJkIFouIFlhbmcKLS0g
ZmFudGFzYWkKLS0gUGhpbGlwIErDpGdlbnN0ZWR0Ci0tIE1zMmdlcgotLSBBbmR5IFdpbmdvCi0t
IEFuZHJlYXMgTWFkc2FjawotLSBLYXJpbSBWYWxpZXYKLS0gTW9oYW1tYWQgVGFoYSBKYWhhbmdp
cgotLSBKdWFuIENhcmxvcyBHYXJjaWEgU2Vnb3ZpYQotLSBNaWtlIFdlc3QKLS0gTWFyYyBETQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9odG1sNWxpYi9DSEFOR0VTLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvQ0hBTkdFUy5yc3QKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE0MzFiM2M5YjhmYWNhODEwNGNiNzQxNDFmYjM2YWZjMWIxOWY5YzEu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9DSEFOR0VT
LnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDE3MSArMCwwIEBACi1DaGFuZ2UgTG9nCi0tLS0tLS0t
LS0tCi0KLTAuOTk5OQotfn5+fn5+Ci0KLVJlbGVhc2VkIG9uIFhYWCwgMjAxNAotCi0qIFhYWAot
Ci0KLTAuOTk5Ci1+fn5+fgotCi1SZWxlYXNlZCBvbiBEZWNlbWJlciAyMywgMjAxMwotCi0qIEZp
eCAjMTI3OiBhZGQgd29yay1hcm91bmQgZm9yIENQeXRob24gaXNzdWUgIzIwMDA3OiAucmVhZCgw
KSBvbgotICBodHRwLmNsaWVudC5IVFRQUmVzcG9uc2UgZHJvcHMgdGhlIHJlc3Qgb2YgdGhlIGNv
bnRlbnQuCi0KLSogRml4ICMxMTU6IGx4bWwgdHJlZXdhbGtlciBjYW4gbm93IGRlYWwgd2l0aCBm
cmFnbWVudHMgY29udGFpbmluZywgYXQKLSAgdGhlaXIgcm9vdCBsZXZlbCwgdGV4dCBub2RlcyB3
aXRoIG5vbi1BU0NJSSBjaGFyYWN0ZXJzIG9uIFB5dGhvbiAyLgotCi0KLTAuOTkKLX5+fn4KLQot
UmVsZWFzZWQgb24gU2VwdGVtYmVyIDEwLCAyMDEzCi0KLSogTm8gbGlicmFyeSBjaGFuZ2VzIGZy
b20gMS4wYjM7IHJlbGVhc2VkIGFzIDAuOTkgYXMgcGlwIGhhcyBjaGFuZ2VkCi0gIGJlaGF2aW91
ciBmcm9tIDEuNCB0byBhdm9pZCBpbnN0YWxsaW5nIHByZS1yZWxlYXNlIHZlcnNpb25zIHBlcgot
ICBQRVAgNDQwLgotCi0KLTEuMGIzCi1+fn5+fgotCi1SZWxlYXNlZCBvbiBKdWx5IDI0LCAyMDEz
Ci0KLSogUmVtb3ZlZCBgYFJlY3Vyc2l2ZVRyZWVXYWxrZXJgYCBmcm9tIGBgdHJlZXdhbGtlcnMu
X2Jhc2VgYC4gQW55Ci0gIGltcGxlbWVudGF0aW9uIHVzaW5nIGl0IHNob3VsZCBiZSBtb3ZlZCB0
bwotICBgYE5vblJlY3Vyc2l2ZVRyZWVXYWxrZXJgYCwgYXMgZXZlcnl0aGluZyBidW5kbGVkIHdp
dGggaHRtbDVsaWIgaGFzCi0gIGZvciB5ZWFycy4KLQotKiBGaXggIzY3IHNvIHRoYXQgYGBCdWZm
ZXJlZFN0cmVhbWBgIHRvIGNvcnJlY3RseSByZXR1cm5zIGEgYnl0ZXMKLSAgb2JqZWN0LCB0aGVy
ZWJ5IGZpeGluZyBhbnkgY2FzZSB3aGVyZSBodG1sNWxpYiBpcyBwYXNzZWQgYQotICBub24tc2Vl
a2FibGUgUmF3SU9CYXNlLWxpa2Ugb2JqZWN0LgotCi0KLTEuMGIyCi1+fn5+fgotCi1SZWxlYXNl
ZCBvbiBKdW5lIDI3LCAyMDEzCi0KLSogUmVtb3ZlZCByZW9yZGVyaW5nIG9mIGF0dHJpYnV0ZXMg
d2l0aGluIHRoZSBzZXJpYWxpemVyLiBUaGVyZSBpcyBub3cKLSAgYW4gYGBhbHBoYWJldGljYWxf
YXR0cmlidXRlc2BgIG9wdGlvbiB3aGljaCBwcmVzZXJ2ZXMgdGhlIHByZXZpb3VzCi0gIGJlaGF2
aW91ciB0aHJvdWdoIGEgbmV3IGZpbHRlci4gVGhpcyBhbGxvd3MgYXR0cmlidXRlIG9yZGVyIHRv
IGJlCi0gIHByZXNlcnZlZCB0aHJvdWdoIGh0bWw1bGliIGlmIHRoZSB0cmVlIGJ1aWxkZXIgcHJl
c2VydmVzIG9yZGVyLgotCi0qIFJlbW92ZWQgYGBkb20yc2F4YGAgZnJvbSBET00gdHJlZWJ1aWxk
ZXJzLiBJdCBoYXMgYmVlbiByZXBsYWNlZCBieQotICBgYHRyZWVhZGFwdGVycy5zYXgudG9fc2F4
YGAgd2hpY2ggaXMgZ2VuZXJpYyBhbmQgc3VwcG9ydHMgYW55Ci0gIHRyZWV3YWxrZXI7IGl0IGFs
c28gcmVzb2x2ZXMgYWxsIGtub3duIGJ1Z3Mgd2l0aCBgYGRvbTJzYXhgYC4KLQotKiBGaXggdHJl
ZXdhbGtlciBhc3NlcnRpb25zIG9uIGhpdHRpbmcgYnl0ZXMgc3RyaW5ncyBvbgotICBQeXRob24g
Mi4gUHJldmlvdXMgdG8gMS4wYjEsIHRyZWV3YWxrZXJzIGNvcGVkIHdpdGggbWl4ZWQKLSAgYnl0
ZXMvdW5pY29kZSBkYXRhIG9uIFB5dGhvbiAyOyB0aGlzIHJlaW50cm9kdWNlcyB0aGlzIHByaW9y
Ci0gIGJlaGF2aW91ciBvbiBQeXRob24gMi4gQmVoYXZpb3VyIGlzIHVuY2hhbmdlZCBvbiBQeXRo
b24gMy4KLQotCi0xLjBiMQotfn5+fn4KLQotUmVsZWFzZWQgb24gTWF5IDE3LCAyMDEzCi0KLSog
SW1wbGVtZW50YXRpb24gdXBkYXRlZCB0byBpbXBsZW1lbnQgdGhlIGBIVE1MIHNwZWNpZmljYXRp
b24KLSAgPGh0dHA6Ly93d3cud2hhdHdnLm9yZy9zcGVjcy93ZWItYXBwcy9jdXJyZW50LXdvcmsv
PmBfIGFzIG9mIDV0aCBNYXkKLSAgMjAxMyAoYFNWTiA8aHR0cDovL3N2bi53aGF0d2cub3JnL3dl
YmFwcHMvPmBfIHJldmlzaW9uIHI3ODY3KS4KLQotKiBQeXRob24gMy4yKyBzdXBwb3J0ZWQgaW4g
YSBzaW5nbGUgY29kZWJhc2UgdXNpbmcgdGhlIGBgc2l4YGAgbGlicmFyeS4KLQotKiBSZW1vdmVk
IHN1cHBvcnQgZm9yIFB5dGhvbiAyLjUgYW5kIG9sZGVyLgotCi0qIFJlbW92ZWQgdGhlIGRlcHJl
Y2F0ZWQgQmVhdXRpZnVsIFNvdXAgMyB0cmVlYnVpbGRlci4KLSAgYGBiZWF1dGlmdWxzb3VwNGBg
IGNhbiB1c2UgYGBodG1sNWxpYmBgIGFzIGEgcGFyc2VyIGluc3RlYWQuIE5vdGUgdGhhdAotICBz
aW5jZSBpdCBkb2Vzbid0IHN1cHBvcnQgbmFtZXNwYWNlcywgZm9yZWlnbiBjb250ZW50IGxpa2Ug
U1ZHIGFuZAotICBNYXRoTUwgaXMgcGFyc2VkIGluY29ycmVjdGx5LgotCi0qIFJlbW92ZWQgYGBz
aW1wbGV0cmVlYGAgZnJvbSB0aGUgcGFja2FnZS4gVGhlIGRlZmF1bHQgdHJlZSBidWlsZGVyIGlz
Ci0gIG5vdyBgYGV0cmVlYGAgKHVzaW5nIHRoZSBgYHhtbC5ldHJlZS5jRWxlbWVudFRyZWVgYCBp
bXBsZW1lbnRhdGlvbiBpZgotICBhdmFpbGFibGUsIGFuZCBgYHhtbC5ldHJlZS5FbGVtZW50VHJl
ZWBgIG90aGVyd2lzZSkuCi0KLSogUmVtb3ZlZCB0aGUgYGBYSFRNTFNlcmlhbGl6ZXJgYCBhcyBp
dCBuZXZlciBhY3R1YWxseSBndWFyYW50ZWVkIGl0cwotICBvdXRwdXQgd2FzIHdlbGwtZm9ybWVk
IFhNTCwgYW5kIGhlbmNlIHByb3ZpZGVkIGxpdHRsZSBvZiB1c2UuCi0KLSogUmVtb3ZlZCBkZWZh
dWx0IERPTSB0cmVlYnVpbGRlciwgc28gYGBodG1sNWxpYi50cmVlYnVpbGRlcnMuZG9tYGAgaXMg
bm8KLSAgbG9uZ2VyIHN1cHBvcnRlZC4gYGBodG1sNWxpYi50cmVlYnVpbGRlcnMuZ2V0VHJlZUJ1
aWxkZXIoImRvbSIpYGAgd2lsbAotICByZXR1cm4gdGhlIGRlZmF1bHQgRE9NIHRyZWVidWlsZGVy
LCB3aGljaCB1c2VzIGBgeG1sLmRvbS5taW5pZG9tYGAuCi0KLSogT3B0aW9uYWwgaGV1cmlzdGlj
IGNoYXJhY3RlciBlbmNvZGluZyBkZXRlY3Rpb24gbm93IGJhc2VkIG9uCi0gIGBgY2hhcmFkZWBg
IGZvciBQeXRob24gMi42IC0gMy4zIGNvbXBhdGliaWxpdHkuCi0KLSogT3B0aW9uYWwgYGBHZW5z
aGlgYCB0cmVld2Fsa2VyIHN1cHBvcnQgZml4ZWQuCi0KLSogTWFueSBidWdmaXhlcywgaW5jbHVk
aW5nOgotCi0gICogIzMzOiBudWxsIGluIGF0dHJpYnV0ZSB2YWx1ZSBicmVha3MgWE1MIEF0dFZh
bHVlOwotCi0gICogIzQ6IG5lc3RlZCwgaW5kaXJlY3QgZGVzY2VuZGFudCwgPGJ1dHRvbj4gY2F1
c2VzIGluZmluaXRlIGxvb3A7Ci0KLSAgKiBgR29vZ2xlIENvZGUgMjE1Ci0gICAgPGh0dHA6Ly9j
b2RlLmdvb2dsZS5jb20vcC9odG1sNWxpYi9pc3N1ZXMvZGV0YWlsP2lkPTIxNT5gXzogUHJvcGVy
bHkKLSAgICBkZXRlY3Qgc2Vla2FibGUgc3RyZWFtczsKLQotICAqIGBHb29nbGUgQ29kZSAyMDYK
LSAgICA8aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2h0bWw1bGliL2lzc3Vlcy9kZXRhaWw/aWQ9
MjA2PmBfOiBhZGQKLSAgICBzdXBwb3J0IGZvciA8dmlkZW8gcHJlbG9hZD0uLi4+LCA8YXVkaW8g
cHJlbG9hZD0uLi4+OwotCi0gICogYEdvb2dsZSBDb2RlIDIwNQotICAgIDxodHRwOi8vY29kZS5n
b29nbGUuY29tL3AvaHRtbDVsaWIvaXNzdWVzL2RldGFpbD9pZD0yMDU+YF86IGFkZAotICAgIHN1
cHBvcnQgZm9yIDx2aWRlbyBwb3N0ZXI9Li4uPjsKLQotICAqIGBHb29nbGUgQ29kZSAyMDIKLSAg
ICA8aHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2h0bWw1bGliL2lzc3Vlcy9kZXRhaWw/aWQ9MjAy
PmBfOiBVbmljb2RlCi0gICAgZmlsZSBicmVha3MgSW5wdXRTdHJlYW0uCi0KLSogU291cmNlIGNv
ZGUgaXMgbm93IG1vc3RseSBQRVAgOCBjb21wbGlhbnQuCi0KLSogVGVzdCBoYXJuZXNzIGhhcyBi
ZWVuIGltcHJvdmVkIGFuZCBub3cgZGVwZW5kcyBvbiBgYG5vc2VgYC4KLQotKiBEb2N1bWVudGF0
aW9uIHVwZGF0ZWQgYW5kIG1vdmVkIHRvIGh0dHA6Ly9odG1sNWxpYi5yZWFkdGhlZG9jcy5vcmcv
LgotCi0KLTAuOTUKLX5+fn4KLQotUmVsZWFzZWQgb24gRmVicnVhcnkgMTEsIDIwMTIKLQotCi0w
LjkwCi1+fn5+Ci0KLVJlbGVhc2VkIG9uIEphbnVhcnkgMTcsIDIwMTAKLQotCi0wLjExLjEKLX5+
fn5+fgotCi1SZWxlYXNlZCBvbiBKdW5lIDEyLCAyMDA4Ci0KLQotMC4xMQotfn5+fgotCi1SZWxl
YXNlZCBvbiBKdW5lIDEwLCAyMDA4Ci0KLQotMC4xMAotfn5+fgotCi1SZWxlYXNlZCBvbiBPY3Rv
YmVyIDcsIDIwMDcKLQotCi0wLjkKLX5+fgotCi1SZWxlYXNlZCBvbiBNYXJjaCAxMSwgMjAwNwot
Ci0KLTAuMgotfn5+Ci0KLVJlbGVhc2VkIG9uIEphbnVhcnkgOCwgMjAwNwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9DT05UUklCVVRJTkcucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9odG1sNWxpYi9DT05UUklCVVRJTkcucnN0CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA4YzVlMTk4NTM1ZDI0MDYyMDA4MTI0ODVlYjIwN2E5YTNlMjhlMzA1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvQ09OVFJJQlVU
SU5HLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUNvbnRyaWJ1dGluZwotPT09
PT09PT09PT09Ci0KLVB1bGwgcmVxdWVzdHMgYXJlIG1vcmUgdGhhbiB3ZWxjb21lIOKAlCBib3Ro
IHRvIHRoZSBsaWJyYXJ5IGFuZCB0byB0aGUKLWRvY3VtZW50YXRpb24uIFNvbWUgdXNlZnVsIGlu
Zm9ybWF0aW9uOgotCi0tIFdlIGFpbSB0byBmb2xsb3cgUEVQIDggaW4gdGhlIGxpYnJhcnksIGJ1
dCBpZ25vcmluZyB0aGUKLSAgNzktY2hhcmFjdGVyLXBlci1saW5lIGxpbWl0LCBpbnN0ZWFkIGZv
bGxvd2luZyBhIHNvZnQgbGltaXQgb2YgOTksCi0gIGJ1dCBhbGxvd2luZyBsaW5lcyBvdmVyIHRo
aXMgd2hlcmUgaXQgaXMgdGhlIHJlYWRhYmxlIHRoaW5nIHRvIGRvLgotCi0tIFdlIGFpbSB0byBm
b2xsb3cgUEVQIDI1NyBmb3IgYWxsIGRvY3N0cmluZ3MsIGFuZCBtYWtlIHRoZW0gcHJvcGVybHkK
LSAgcGFyc2VhYmxlIGJ5IFNwaGlueCB3aGlsZSBnZW5lcmF0aW5nIEFQSSBkb2N1bWVudGF0aW9u
LgotCi0tIFdlIGtlZXAgYGBweWZsYWtlc2BgIHJlcG9ydGluZyBubyBlcnJvcnMgb3Igd2Fybmlu
Z3MgYXQgYWxsIHRpbWVzLgotCi0tIFdlIGtlZXAgdGhlIG1hc3RlciBicmFuY2ggcGFzc2luZyBh
bGwgdGVzdHMgYXQgYWxsIHRpbWVzIG9uIGFsbAotICBzdXBwb3J0ZWQgdmVyc2lvbnMuCi0KLWBU
cmF2aXMgQ0kgPGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9odG1sNWxpYi9odG1sNWxpYi1weXRob24v
PmBfIGlzIHJ1bgotYWdhaW5zdCBhbGwgcHVsbCByZXF1ZXN0cyBhbmQgc2hvdWxkIGVuZm9yY2Ug
YWxsIG9mIHRoZSBhYm92ZS4KLQotV2UgdXNlIGBPcGVyYSBDcml0aWMgPGh0dHBzOi8vY3JpdGlj
LmhvcHBpcG9sbGEuY28udWsvPmBfIGFzIGFuIGV4dGVybmFsCi1jb2RlLXJldmlldyB0b29sLCB3
aGljaCB1c2VzIHlvdXIgR2l0SHViIGxvZ2luIHRvIGF1dGhlbnRpY2F0ZS4gIFlvdSdsbAotZ2V0
IGVtYWlsIG5vdGlmaWNhdGlvbnMgZm9yIGlzc3VlcyByYWlzZWQgaW4gdGhlIHJldmlldy4KLQot
Ci1QYXRjaCBzdWJtaXNzaW9uIGd1aWRlbGluZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0tICoqQ3JlYXRlIGEgbmV3IEdpdCBicmFuY2ggc3BlY2lmaWMgdG8geW91ciBjaGFuZ2Uu
KiogRG8gbm90IHB1dAotICBtdWx0aXBsZSBmaXhlcy9mZWF0dXJlcyBpbiB0aGUgc2FtZSBwdWxs
IHJlcXVlc3QuIElmIHlvdSBmaW5kIGFuCi0gIHVucmVsYXRlZCBidWcsIGNyZWF0ZSBhIGRpc3Rp
bmN0IGJyYW5jaCBhbmQgc3VibWl0IGEgc2VwYXJhdGUgcHVsbAotICByZXF1ZXN0IGZvciB0aGUg
YnVnZml4LiBUaGlzIG1ha2VzIGxpZmUgbXVjaCBlYXNpZXIgZm9yIG1haW50YWluZXJzCi0gIGFu
ZCB3aWxsIHNwZWVkIHVwIG1lcmdpbmcgeW91ciBwYXRjaGVzLgotCi0tICoqV3JpdGUgYSB0ZXN0
Kiogd2hlbmV2ZXIgcG9zc2libGUuIEZvbGxvd2luZyBleGlzdGluZyB0ZXN0cyBpcyBvZnRlbgot
ICBlYXNpZXN0LCBhbmQgYSBnb29kIHdheSB0byB0ZWxsIHdoZXRoZXIgdGhlIGZlYXR1cmUgeW91
J3JlIG1vZGlmeWluZwotICBpcyBlYXNpbHkgdGVzdGFibGUuCi0KLS0gKipNYWtlIHN1cmUgZG9j
dW1lbnRhdGlvbiBpcyB1cGRhdGVkLioqIEtlZXAgZG9jc3RyaW5ncyBjdXJyZW50LCBhbmQKLSAg
aWYgbmVjZXNzYXJ5LCB1cGRhdGUgdGhlIFNwaGlueCBkb2N1bWVudGF0aW9uIGluIGBgZG9jL2Bg
LgotCi0tICoqQWRkIGEgY2hhbmdlbG9nIGVudHJ5KiogYXQgdGhlIHRvcCBvZiBgYENIQU5HRVMu
cnN0YGAgZm9sbG93aW5nCi0gIGV4aXN0aW5nIGVudHJpZXMnIHN0eWxlcy4KLQotLSAqKlJ1biB0
ZXN0cyB3aXRoIHRveCoqIGlmIHBvc3NpYmxlLCB0byBtYWtlIHN1cmUgeW91ciBjaGFuZ2VzIGFy
ZQotICBjb21wYXRpYmxlIHdpdGggYWxsIHN1cHBvcnRlZCBQeXRob24gdmVyc2lvbnMuCi0KLS0g
KipTcXVhc2ggY29tbWl0cyoqIGJlZm9yZSBzdWJtaXR0aW5nIHRoZSBwdWxsIHJlcXVlc3Qgc28g
dGhhdCBhIHNpbmdsZQotICBjb21taXQgY29udGFpbnMgdGhlIGVudGlyZSBjaGFuZ2UsIGFuZCBv
bmx5IHRoYXQgY2hhbmdlIChzZWUgdGhlIGZpcnN0Ci0gIGJ1bGxldCkuCi0KLS0gKipEb24ndCBy
ZWJhc2UgYWZ0ZXIgY3JlYXRpbmcgdGhlIHB1bGwgcmVxdWVzdC4qKiBNZXJnZSB3aXRoIHVwc3Ry
ZWFtLAotICBpZiBuZWNlc3NhcnksIGFuZCB1c2UgYGBnaXQgY29tbWl0IC0tZml4dXBgYCBmb3Ig
Zml4aW5nIGlzc3VlcyByYWlzZWQKLSAgaW4gYSBDcml0aWMgcmV2aWV3IG9yIGJ5IGEgZmFpbGlu
ZyBUcmF2aXMgYnVpbGQuIFRoZSByZXZpZXdlciB3aWxsCi0gIHNxdWFzaCBhbmQgcmViYXNlIHlv
dXIgcHVsbCByZXF1ZXN0IHdoaWxlIGFjY2VwdGluZyBpdC4gRXZlbiB0aG91Z2gKLSAgR2l0SHVi
IHdvbid0IHJlY29nbml6ZSB0aGUgcHVsbCByZXF1ZXN0IGFzIGFjY2VwdGVkLCB0aGUgc3F1YXNo
ZWQKLSAgY29tbWl0cyB3aWxsIHByb3Blcmx5IHNwZWNpZnkgeW91IGFzIHRoZSBhdXRob3IuCi0K
LS0gKipBdHRyaWJ1dGUgeW91cnNlbGYqKiBpbiBgYEFVVEhPUlMucnN0YGAuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1
bGliL0xJQ0VOU0UgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2h0bWw1bGliL0xJQ0VOU0UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4
N2ZhN2EwMDA2OWY5MDVkZjAzMzFkMmVjY2MxNzEzMjgyYTFlNDYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9MSUNFTlNFCisrKyAvZGV2L251bGwKQEAg
LTEsMjAgKzAsMCBAQAotQ29weXJpZ2h0IChjKSAyMDA2LTIwMTMgSmFtZXMgR3JhaGFtIGFuZCBv
dGhlciBjb250cmlidXRvcnMKLQotUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBv
ZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nCi1hIGNvcHkgb2YgdGhpcyBzb2Z0d2Fy
ZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUKLSJTb2Z0d2FyZSIpLCB0
byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLXdp
dGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwg
cHVibGlzaCwKLWRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0
aGUgU29mdHdhcmUsIGFuZCB0bwotcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUg
aXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi10aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnM6Ci0KLVRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90
aWNlIHNoYWxsIGJlCi1pbmNsdWRlZCBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRp
b25zIG9mIHRoZSBTb2Z0d2FyZS4KLQotVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIs
IFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsCi1FWFBSRVNTIE9SIElNUExJRUQsIElOQ0xV
RElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YKLU1FUkNIQU5UQUJJTElU
WSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi1OT05JTkZSSU5HRU1FTlQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFCi1M
SUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQU4gQUNUSU9OCi1PRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJP
TSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04KLVdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0Ug
T1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9NQU5JRkVT
VC5pbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
aHRtbDVsaWIvTUFOSUZFU1QuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlZGQw
YjdkZWVhNWI4MjAwNGI4MjRhYzNmZTJlMTAyYTM4ODU2YTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9NQU5JRkVTVC5pbgorKysgL2Rldi9udWxsCkBA
IC0xLDYgKzAsMCBAQAotaW5jbHVkZSBMSUNFTlNFCi1pbmNsdWRlIENIQU5HRVMucnN0Ci1pbmNs
dWRlIFJFQURNRS5yc3QKLWluY2x1ZGUgcmVxdWlyZW1lbnRzKi50eHQKLWdyYWZ0IGh0bWw1bGli
L3Rlc3RzL3Rlc3RkYXRhCi1yZWN1cnNpdmUtaW5jbHVkZSBodG1sNWxpYi90ZXN0cyAqLnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2h0bWw1bGliL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL1JFQURNRS5yc3QKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDllMGEwZjc0MDQ4NWIxOTAxYjE2MmYwYmE1OTYxMzgxMGE1NmNlZTcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9SRUFETUUucnN0
CisrKyAvZGV2L251bGwKQEAgLTEsMTU3ICswLDAgQEAKLWh0bWw1bGliCi09PT09PT09PQotCi0u
LiBpbWFnZTo6IGh0dHBzOi8vdHJhdmlzLWNpLm9yZy9odG1sNWxpYi9odG1sNWxpYi1weXRob24u
cG5nP2JyYW5jaD1tYXN0ZXIKLSAgOnRhcmdldDogaHR0cHM6Ly90cmF2aXMtY2kub3JnL2h0bWw1
bGliL2h0bWw1bGliLXB5dGhvbgotCi1odG1sNWxpYiBpcyBhIHB1cmUtcHl0aG9uIGxpYnJhcnkg
Zm9yIHBhcnNpbmcgSFRNTC4gSXQgaXMgZGVzaWduZWQgdG8KLWNvbmZvcm0gdG8gdGhlIFdIQVRX
RyBIVE1MIHNwZWNpZmljYXRpb24sIGFzIGlzIGltcGxlbWVudGVkIGJ5IGFsbCBtYWpvcgotd2Vi
IGJyb3dzZXJzLgotCi0KLVVzYWdlCi0tLS0tLQotCi1TaW1wbGUgdXNhZ2UgZm9sbG93cyB0aGlz
IHBhdHRlcm46Ci0KLS4uIGNvZGUtYmxvY2s6OiBweXRob24KLQotICBpbXBvcnQgaHRtbDVsaWIK
LSAgd2l0aCBvcGVuKCJteWRvY3VtZW50Lmh0bWwiLCAicmIiKSBhcyBmOgotICAgICAgZG9jdW1l
bnQgPSBodG1sNWxpYi5wYXJzZShmKQotCi1vcjoKLQotLi4gY29kZS1ibG9jazo6IHB5dGhvbgot
Ci0gIGltcG9ydCBodG1sNWxpYgotICBkb2N1bWVudCA9IGh0bWw1bGliLnBhcnNlKCI8cD5IZWxs
byBXb3JsZCEiKQotCi1CeSBkZWZhdWx0LCB0aGUgYGBkb2N1bWVudGBgIHdpbGwgYmUgYW4gYGB4
bWwuZXRyZWVgYCBlbGVtZW50IGluc3RhbmNlLgotV2hlbmV2ZXIgcG9zc2libGUsIGh0bWw1bGli
IGNob29zZXMgdGhlIGFjY2VsZXJhdGVkIGBgRWxlbWVudFRyZWVgYAotaW1wbGVtZW50YXRpb24g
KGkuZS4gYGB4bWwuZXRyZWUuY0VsZW1lbnRUcmVlYGAgb24gUHl0aG9uIDIueCkuCi0KLVR3byBv
dGhlciB0cmVlIHR5cGVzIGFyZSBzdXBwb3J0ZWQ6IGBgeG1sLmRvbS5taW5pZG9tYGAgYW5kCi1g
YGx4bWwuZXRyZWVgYC4gVG8gdXNlIGFuIGFsdGVybmF0aXZlIGZvcm1hdCwgc3BlY2lmeSB0aGUg
bmFtZSBvZgotYSB0cmVlYnVpbGRlcjoKLQotLi4gY29kZS1ibG9jazo6IHB5dGhvbgotCi0gIGlt
cG9ydCBodG1sNWxpYgotICB3aXRoIG9wZW4oIm15ZG9jdW1lbnQuaHRtbCIsICJyYiIpIGFzIGY6
Ci0gICAgICBseG1sX2V0cmVlX2RvY3VtZW50ID0gaHRtbDVsaWIucGFyc2UoZiwgdHJlZWJ1aWxk
ZXI9Imx4bWwiKQotCi1XaGVuIHVzaW5nIHdpdGggYGB1cmxsaWIyYGAgKFB5dGhvbiAyKSwgdGhl
IGNoYXJzZXQgZnJvbSBIVFRQIHNob3VsZCBiZQotcGFzcyBpbnRvIGh0bWw1bGliIGFzIGZvbGxv
d3M6Ci0KLS4uIGNvZGUtYmxvY2s6OiBweXRob24KLQotICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0
IGNsb3NpbmcKLSAgZnJvbSB1cmxsaWIyIGltcG9ydCB1cmxvcGVuCi0gIGltcG9ydCBodG1sNWxp
YgotCi0gIHdpdGggY2xvc2luZyh1cmxvcGVuKCJodHRwOi8vZXhhbXBsZS5jb20vIikpIGFzIGY6
Ci0gICAgICBkb2N1bWVudCA9IGh0bWw1bGliLnBhcnNlKGYsIGVuY29kaW5nPWYuaW5mbygpLmdl
dHBhcmFtKCJjaGFyc2V0IikpCi0KLVdoZW4gdXNpbmcgd2l0aCBgYHVybGxpYi5yZXF1ZXN0YGAg
KFB5dGhvbiAzKSwgdGhlIGNoYXJzZXQgZnJvbSBIVFRQCi1zaG91bGQgYmUgcGFzcyBpbnRvIGh0
bWw1bGliIGFzIGZvbGxvd3M6Ci0KLS4uIGNvZGUtYmxvY2s6OiBweXRob24KLQotICBmcm9tIHVy
bGxpYi5yZXF1ZXN0IGltcG9ydCB1cmxvcGVuCi0gIGltcG9ydCBodG1sNWxpYgotCi0gIHdpdGgg
dXJsb3BlbigiaHR0cDovL2V4YW1wbGUuY29tLyIpIGFzIGY6Ci0gICAgICBkb2N1bWVudCA9IGh0
bWw1bGliLnBhcnNlKGYsIGVuY29kaW5nPWYuaW5mbygpLmdldF9jb250ZW50X2NoYXJzZXQoKSkK
LQotVG8gaGF2ZSBtb3JlIGNvbnRyb2wgb3ZlciB0aGUgcGFyc2VyLCBjcmVhdGUgYSBwYXJzZXIg
b2JqZWN0IGV4cGxpY2l0bHkuCi1Gb3IgaW5zdGFuY2UsIHRvIG1ha2UgdGhlIHBhcnNlciByYWlz
ZSBleGNlcHRpb25zIG9uIHBhcnNlIGVycm9ycywgdXNlOgotCi0uLiBjb2RlLWJsb2NrOjogcHl0
aG9uCi0KLSAgaW1wb3J0IGh0bWw1bGliCi0gIHdpdGggb3BlbigibXlkb2N1bWVudC5odG1sIiwg
InJiIikgYXMgZjoKLSAgICAgIHBhcnNlciA9IGh0bWw1bGliLkhUTUxQYXJzZXIoc3RyaWN0PVRy
dWUpCi0gICAgICBkb2N1bWVudCA9IHBhcnNlci5wYXJzZShmKQotCi1XaGVuIHlvdSdyZSBpbnN0
YW50aWF0aW5nIHBhcnNlciBvYmplY3RzIGV4cGxpY2l0bHksIHBhc3MgYSB0cmVlYnVpbGRlcgot
Y2xhc3MgYXMgdGhlIGBgdHJlZWBgIGtleXdvcmQgYXJndW1lbnQgdG8gdXNlIGFuIGFsdGVybmF0
aXZlIGRvY3VtZW50Ci1mb3JtYXQ6Ci0KLS4uIGNvZGUtYmxvY2s6OiBweXRob24KLQotICBpbXBv
cnQgaHRtbDVsaWIKLSAgcGFyc2VyID0gaHRtbDVsaWIuSFRNTFBhcnNlcih0cmVlPWh0bWw1bGli
LmdldFRyZWVCdWlsZGVyKCJkb20iKSkKLSAgbWluaWRvbV9kb2N1bWVudCA9IHBhcnNlci5wYXJz
ZSgiPHA+SGVsbG8gV29ybGQhIikKLQotTW9yZSBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBh
dCBodHRwOi8vaHRtbDVsaWIucmVhZHRoZWRvY3Mub3JnLy4KLQotCi1JbnN0YWxsYXRpb24KLS0t
LS0tLS0tLS0tLQotCi1odG1sNWxpYiB3b3JrcyBvbiBDUHl0aG9uIDIuNissIENQeXRob24gMy4y
KyBhbmQgUHlQeS4gIFRvIGluc3RhbGwgaXQsCi11c2U6Ci0KLS4uIGNvZGUtYmxvY2s6OiBiYXNo
Ci0KLSAgICAkIHBpcCBpbnN0YWxsIGh0bWw1bGliCi0KLQotT3B0aW9uYWwgRGVwZW5kZW5jaWVz
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIGZvbGxvd2luZyB0aGlyZC1wYXJ0eSBsaWJy
YXJpZXMgbWF5IGJlIHVzZWQgZm9yIGFkZGl0aW9uYWwKLWZ1bmN0aW9uYWxpdHk6Ci0KLS0gYGBk
YXRyaWVgYCBjYW4gYmUgdXNlZCB0byBpbXByb3ZlIHBhcnNpbmcgcGVyZm9ybWFuY2UgKHRob3Vn
aCBpbgotICBhbG1vc3QgYWxsIGNhc2VzIHRoZSBpbXByb3ZlbWVudCBpcyBtYXJnaW5hbCk7Ci0K
LS0gYGBseG1sYGAgaXMgc3VwcG9ydGVkIGFzIGEgdHJlZSBmb3JtYXQgKGZvciBib3RoIGJ1aWxk
aW5nIGFuZAotICB3YWxraW5nKSB1bmRlciBDUHl0aG9uIChidXQgKm5vdCogUHlQeSB3aGVyZSBp
dCBpcyBrbm93biB0byBjYXVzZQotICBzZWdmYXVsdHMpOwotCi0tIGBgZ2Vuc2hpYGAgaGFzIGEg
dHJlZXdhbGtlciAoYnV0IG5vdCBidWlsZGVyKTsgYW5kCi0KLS0gYGBjaGFyYWRlYGAgY2FuIGJl
IHVzZWQgYXMgYSBmYWxsYmFjayB3aGVuIGNoYXJhY3RlciBlbmNvZGluZyBjYW5ub3QKLSAgYmUg
ZGV0ZXJtaW5lZDsgYGBjaGFyZGV0YGAsIGZyb20gd2hpY2ggaXQgd2FzIGZvcmtlZCwgY2FuIGFs
c28gYmUgdXNlZAotICBvbiBQeXRob24gMi4KLQotLSBgYG9yZGVyZWRkaWN0YGAgY2FuIGJlIHVz
ZWQgdW5kZXIgUHl0aG9uIDIuNgotICAoYGBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdGBgIGlzIHVz
ZWQgaW5zdGVhZCBvbiBsYXRlciB2ZXJzaW9ucykgdG8KLSAgc2VyaWFsaXplIGF0dHJpYnV0ZXMg
aW4gYWxwaGFiZXRpY2FsIG9yZGVyLgotCi0KLUJ1Z3MKLS0tLS0KLQotUGxlYXNlIHJlcG9ydCBh
bnkgYnVncyBvbiB0aGUgYGlzc3VlIHRyYWNrZXIKLTxodHRwczovL2dpdGh1Yi5jb20vaHRtbDVs
aWIvaHRtbDVsaWItcHl0aG9uL2lzc3Vlcz5gXy4KLQotCi1UZXN0cwotLS0tLS0KLQotVW5pdCB0
ZXN0cyByZXF1aXJlIHRoZSBgYG5vc2VgYCBsaWJyYXJ5IGFuZCBjYW4gYmUgcnVuIHVzaW5nIHRo
ZQotYGBub3NldGVzdHNgYCBjb21tYW5kIGluIHRoZSByb290IGRpcmVjdG9yeTsgYGBvcmRlcmVk
ZGljdGBgIGlzCi1yZXF1aXJlZCB1bmRlciBQeXRob24gMi42LiBBbGwgc2hvdWxkIHBhc3MuCi0K
LVRlc3QgZGF0YSBhcmUgY29udGFpbmVkIGluIGEgc2VwYXJhdGUgYGh0bWw1bGliLXRlc3RzCi08
aHR0cHM6Ly9naXRodWIuY29tL2h0bWw1bGliL2h0bWw1bGliLXRlc3RzPmBfIHJlcG9zaXRvcnkg
YW5kIGluY2x1ZGVkCi1hcyBhIHN1Ym1vZHVsZSwgdGh1cyBmb3IgZ2l0IGNoZWNrb3V0cyB0aGV5
IG11c3QgYmUgaW5pdGlhbGl6ZWQ6OgotCi0gICQgZ2l0IHN1Ym1vZHVsZSBpbml0Ci0gICQgZ2l0
IHN1Ym1vZHVsZSB1cGRhdGUKLQotSWYgeW91IGhhdmUgYWxsIGNvbXBhdGlibGUgUHl0aG9uIGlt
cGxlbWVudGF0aW9ucyBhdmFpbGFibGUgb24geW91cgotc3lzdGVtLCB5b3UgY2FuIHJ1biB0ZXN0
cyBvbiBhbGwgb2YgdGhlbSB1c2luZyB0aGUgYGB0b3hgYCB1dGlsaXR5LAotd2hpY2ggY2FuIGJl
IGZvdW5kIG9uIFB5UEkuCi0KLQotUXVlc3Rpb25zPwotLS0tLS0tLS0tLQotCi1UaGVyZSdzIGEg
bWFpbGluZyBsaXN0IGF2YWlsYWJsZSBmb3Igc3VwcG9ydCBvbiBHb29nbGUgR3JvdXBzLAotYGh0
bWw1bGliLWRpc2N1c3MgPGh0dHA6Ly9ncm91cHMuZ29vZ2xlLmNvbS9ncm91cC9odG1sNWxpYi1k
aXNjdXNzPmBfLAotdGhvdWdoIHlvdSBtYXkgZ2V0IGEgcXVpY2tlciByZXNwb25zZSBhc2tpbmcg
b24gSVJDIGluIGAjd2hhdHdnIG9uCi1pcmMuZnJlZW5vZGUubmV0IDxodHRwOi8vd2lraS53aGF0
d2cub3JnL3dpa2kvSVJDPmBfLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9kZWJ1Zy1pbmZvLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9kZWJ1
Zy1pbmZvLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWQyYmI2YTMwNTc0YWFj
MjM0OTE0ODU0MDRiNjIyMjI1NjgzNWM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvaHRtbDVsaWIvZGVidWctaW5mby5weQorKysgL2Rldi9udWxsCkBAIC0xLDM3ICsw
LDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0
ZXJhbHMKLQotaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc3lzCi0KLQotaW5mbyA9IHsKLSAgICAi
aW1wbCI6IHBsYXRmb3JtLnB5dGhvbl9pbXBsZW1lbnRhdGlvbigpLAotICAgICJ2ZXJzaW9uIjog
cGxhdGZvcm0ucHl0aG9uX3ZlcnNpb24oKSwKLSAgICAicmV2aXNpb24iOiBwbGF0Zm9ybS5weXRo
b25fcmV2aXNpb24oKSwKLSAgICAibWF4dW5pY29kZSI6IHN5cy5tYXh1bmljb2RlLAotICAgICJt
YXhzaXplIjogc3lzLm1heHNpemUKLX0KLQotc2VhcmNoX21vZHVsZXMgPSBbImNoYXJhZGUiLCAi
Y2hhcmRldCIsICJkYXRyaWUiLCAiZ2Vuc2hpIiwgImh0bWw1bGliIiwgImx4bWwiLCAic2l4Il0K
LWZvdW5kX21vZHVsZXMgPSBbXQotCi1mb3IgbSBpbiBzZWFyY2hfbW9kdWxlczoKLSAgICB0cnk6
Ci0gICAgICAgIF9faW1wb3J0X18obSkKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAg
IHBhc3MKLSAgICBlbHNlOgotICAgICAgICBmb3VuZF9tb2R1bGVzLmFwcGVuZChtKQotCi1pbmZv
WyJtb2R1bGVzIl0gPSAiLCAiLmpvaW4oZm91bmRfbW9kdWxlcykKLQotCi1wcmludCgiIiJodG1s
NWxpYiBkZWJ1ZyBpbmZvOgotCi1QeXRob24gJSh2ZXJzaW9uKXMgKHJldmlzaW9uOiAlKHJldmlz
aW9uKXMpCi1JbXBsZW1lbnRhdGlvbjogJShpbXBsKXMKLQotc3lzLm1heHVuaWNvZGU6ICUobWF4
dW5pY29kZSlYCi1zeXMubWF4c2l6ZTogJShtYXhzaXplKVgKLQotSW5zdGFsbGVkIG1vZHVsZXM6
ICUobW9kdWxlcylzIiIiICUgaW5mbykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL01ha2VmaWxlIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9k
b2MvTWFrZWZpbGUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwZTU4NjY3ZTdkOWU3
MDMwODNjNGQyOTE1ZTdiYjhjMjZjNTdiZjYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9odG1sNWxpYi9kb2MvTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxNzcg
KzAsMCBAQAotIyBNYWtlZmlsZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KLSMKLQotIyBZb3Ug
Y2FuIHNldCB0aGVzZSB2YXJpYWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotU1BISU5YT1BU
UyAgICA9Ci1TUEhJTlhCVUlMRCAgID0gc3BoaW54LWJ1aWxkCi1QQVBFUiAgICAgICAgID0KLUJV
SUxERElSICAgICAgPSBfYnVpbGQKLQotIyBVc2VyLWZyaWVuZGx5IGNoZWNrIGZvciBzcGhpbngt
YnVpbGQKLWlmZXEgKCQoc2hlbGwgd2hpY2ggJChTUEhJTlhCVUlMRCkgPi9kZXYvbnVsbCAyPiYx
OyBlY2hvICQkPyksIDEpCi0kKGVycm9yIFRoZSAnJChTUEhJTlhCVUlMRCknIGNvbW1hbmQgd2Fz
IG5vdCBmb3VuZC4gTWFrZSBzdXJlIHlvdSBoYXZlIFNwaGlueCBpbnN0YWxsZWQsIHRoZW4gc2V0
IHRoZSBTUEhJTlhCVUlMRCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBwb2ludCB0byB0aGUgZnVs
bCBwYXRoIG9mIHRoZSAnJChTUEhJTlhCVUlMRCknIGV4ZWN1dGFibGUuIEFsdGVybmF0aXZlbHkg
eW91IGNhbiBhZGQgdGhlIGRpcmVjdG9yeSB3aXRoIHRoZSBleGVjdXRhYmxlIHRvIHlvdXIgUEFU
SC4gSWYgeW91IGRvbid0IGhhdmUgU3BoaW54IGluc3RhbGxlZCwgZ3JhYiBpdCBmcm9tIGh0dHA6
Ly9zcGhpbngtZG9jLm9yZy8pCi1lbmRpZgotCi0jIEludGVybmFsIHZhcmlhYmxlcy4KLVBBUEVS
T1BUX2E0ICAgICA9IC1EIGxhdGV4X3BhcGVyX3NpemU9YTQKLVBBUEVST1BUX2xldHRlciA9IC1E
IGxhdGV4X3BhcGVyX3NpemU9bGV0dGVyCi1BTExTUEhJTlhPUFRTICAgPSAtZCAkKEJVSUxERElS
KS9kb2N0cmVlcyAkKFBBUEVST1BUXyQoUEFQRVIpKSAkKFNQSElOWE9QVFMpIC4KLSMgdGhlIGkx
OG4gYnVpbGRlciBjYW5ub3Qgc2hhcmUgdGhlIGVudmlyb25tZW50IGFuZCBkb2N0cmVlcyB3aXRo
IHRoZSBvdGhlcnMKLUkxOE5TUEhJTlhPUFRTICA9ICQoUEFQRVJPUFRfJChQQVBFUikpICQoU1BI
SU5YT1BUUykgLgotCi0uUEhPTlk6IGhlbHAgY2xlYW4gaHRtbCBkaXJodG1sIHNpbmdsZWh0bWwg
cGlja2xlIGpzb24gaHRtbGhlbHAgcXRoZWxwIGRldmhlbHAgZXB1YiBsYXRleCBsYXRleHBkZiB0
ZXh0IG1hbiBjaGFuZ2VzIGxpbmtjaGVjayBkb2N0ZXN0IGdldHRleHQKLQotaGVscDoKLQlAZWNo
byAiUGxlYXNlIHVzZSBcYG1ha2UgPHRhcmdldD4nIHdoZXJlIDx0YXJnZXQ+IGlzIG9uZSBvZiIK
LQlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3RhbmRhbG9uZSBIVE1MIGZpbGVzIgotCUBl
Y2hvICIgIGRpcmh0bWwgICAgdG8gbWFrZSBIVE1MIGZpbGVzIG5hbWVkIGluZGV4Lmh0bWwgaW4g
ZGlyZWN0b3JpZXMiCi0JQGVjaG8gIiAgc2luZ2xlaHRtbCB0byBtYWtlIGEgc2luZ2xlIGxhcmdl
IEhUTUwgZmlsZSIKLQlAZWNobyAiICBwaWNrbGUgICAgIHRvIG1ha2UgcGlja2xlIGZpbGVzIgot
CUBlY2hvICIgIGpzb24gICAgICAgdG8gbWFrZSBKU09OIGZpbGVzIgotCUBlY2hvICIgIGh0bWxo
ZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0IgotCUBlY2hv
ICIgIHF0aGVscCAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIHF0aGVscCBwcm9qZWN0Igot
CUBlY2hvICIgIGRldmhlbHAgICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIERldmhlbHAgcHJv
amVjdCIKLQlAZWNobyAiICBlcHViICAgICAgIHRvIG1ha2UgYW4gZXB1YiIKLQlAZWNobyAiICBs
YXRleCAgICAgIHRvIG1ha2UgTGFUZVggZmlsZXMsIHlvdSBjYW4gc2V0IFBBUEVSPWE0IG9yIFBB
UEVSPWxldHRlciIKLQlAZWNobyAiICBsYXRleHBkZiAgIHRvIG1ha2UgTGFUZVggZmlsZXMgYW5k
IHJ1biB0aGVtIHRocm91Z2ggcGRmbGF0ZXgiCi0JQGVjaG8gIiAgbGF0ZXhwZGZqYSB0byBtYWtl
IExhVGVYIGZpbGVzIGFuZCBydW4gdGhlbSB0aHJvdWdoIHBsYXRleC9kdmlwZGZteCIKLQlAZWNo
byAiICB0ZXh0ICAgICAgIHRvIG1ha2UgdGV4dCBmaWxlcyIKLQlAZWNobyAiICBtYW4gICAgICAg
IHRvIG1ha2UgbWFudWFsIHBhZ2VzIgotCUBlY2hvICIgIHRleGluZm8gICAgdG8gbWFrZSBUZXhp
bmZvIGZpbGVzIgotCUBlY2hvICIgIGluZm8gICAgICAgdG8gbWFrZSBUZXhpbmZvIGZpbGVzIGFu
ZCBydW4gdGhlbSB0aHJvdWdoIG1ha2VpbmZvIgotCUBlY2hvICIgIGdldHRleHQgICAgdG8gbWFr
ZSBQTyBtZXNzYWdlIGNhdGFsb2dzIgotCUBlY2hvICIgIGNoYW5nZXMgICAgdG8gbWFrZSBhbiBv
dmVydmlldyBvZiBhbGwgY2hhbmdlZC9hZGRlZC9kZXByZWNhdGVkIGl0ZW1zIgotCUBlY2hvICIg
IHhtbCAgICAgICAgdG8gbWFrZSBEb2N1dGlscy1uYXRpdmUgWE1MIGZpbGVzIgotCUBlY2hvICIg
IHBzZXVkb3htbCAgdG8gbWFrZSBwc2V1ZG94bWwtWE1MIGZpbGVzIGZvciBkaXNwbGF5IHB1cnBv
c2VzIgotCUBlY2hvICIgIGxpbmtjaGVjayAgdG8gY2hlY2sgYWxsIGV4dGVybmFsIGxpbmtzIGZv
ciBpbnRlZ3JpdHkiCi0JQGVjaG8gIiAgZG9jdGVzdCAgICB0byBydW4gYWxsIGRvY3Rlc3RzIGVt
YmVkZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChpZiBlbmFibGVkKSIKLQotY2xlYW46Ci0Jcm0g
LXJmICQoQlVJTERESVIpLyoKLQotaHRtbDoKLQkkKFNQSElOWEJVSUxEKSAtYiBodG1sICQoQUxM
U1BISU5YT1BUUykgJChCVUlMRERJUikvaHRtbAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlz
aGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvaHRtbC4iCi0KLWRpcmh0bWw6
Ci0JJChTUEhJTlhCVUlMRCkgLWIgZGlyaHRtbCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIp
L2Rpcmh0bWwKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwgcGFnZXMg
YXJlIGluICQoQlVJTERESVIpL2Rpcmh0bWwuIgotCi1zaW5nbGVodG1sOgotCSQoU1BISU5YQlVJ
TEQpIC1iIHNpbmdsZWh0bWwgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9zaW5nbGVodG1s
Ci0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2UgaXMgaW4gJChC
VUlMRERJUikvc2luZ2xlaHRtbC4iCi0KLXBpY2tsZToKLQkkKFNQSElOWEJVSUxEKSAtYiBwaWNr
bGUgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9waWNrbGUKLQlAZWNobwotCUBlY2hvICJC
dWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcHJvY2VzcyB0aGUgcGlja2xlIGZpbGVzLiIKLQot
anNvbjoKLQkkKFNQSElOWEJVSUxEKSAtYiBqc29uICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJ
UikvanNvbgotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBwcm9j
ZXNzIHRoZSBKU09OIGZpbGVzLiIKLQotaHRtbGhlbHA6Ci0JJChTUEhJTlhCVUlMRCkgLWIgaHRt
bGhlbHAgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9odG1saGVscAotCUBlY2hvCi0JQGVj
aG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBydW4gSFRNTCBIZWxwIFdvcmtzaG9wIHdp
dGggdGhlIiBcCi0JICAgICAgIi5oaHAgcHJvamVjdCBmaWxlIGluICQoQlVJTERESVIpL2h0bWxo
ZWxwLiIKLQotcXRoZWxwOgotCSQoU1BISU5YQlVJTEQpIC1iIHF0aGVscCAkKEFMTFNQSElOWE9Q
VFMpICQoQlVJTERESVIpL3F0aGVscAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBu
b3cgeW91IGNhbiBydW4gInFjb2xsZWN0aW9uZ2VuZXJhdG9yIiB3aXRoIHRoZSIgXAotCSAgICAg
ICIucWhjcCBwcm9qZWN0IGZpbGUgaW4gJChCVUlMRERJUikvcXRoZWxwLCBsaWtlIHRoaXM6Igot
CUBlY2hvICIjIHFjb2xsZWN0aW9uZ2VuZXJhdG9yICQoQlVJTERESVIpL3F0aGVscC9odG1sNWxp
Yi5xaGNwIgotCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6IgotCUBlY2hvICIjIGFzc2lz
dGFudCAtY29sbGVjdGlvbkZpbGUgJChCVUlMRERJUikvcXRoZWxwL2h0bWw1bGliLnFoYyIKLQot
ZGV2aGVscDoKLQkkKFNQSElOWEJVSUxEKSAtYiBkZXZoZWxwICQoQUxMU1BISU5YT1BUUykgJChC
VUlMRERJUikvZGV2aGVscAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiIKLQlAZWNo
byAiVG8gdmlldyB0aGUgaGVscCBmaWxlOiIKLQlAZWNobyAiIyBta2RpciAtcCAkJEhPTUUvLmxv
Y2FsL3NoYXJlL2RldmhlbHAvaHRtbDVsaWIiCi0JQGVjaG8gIiMgbG4gLXMgJChCVUlMRERJUikv
ZGV2aGVscCAkJEhPTUUvLmxvY2FsL3NoYXJlL2RldmhlbHAvaHRtbDVsaWIiCi0JQGVjaG8gIiMg
ZGV2aGVscCIKLQotZXB1YjoKLQkkKFNQSElOWEJVSUxEKSAtYiBlcHViICQoQUxMU1BISU5YT1BU
UykgJChCVUlMRERJUikvZXB1YgotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUg
ZXB1YiBmaWxlIGlzIGluICQoQlVJTERESVIpL2VwdWIuIgotCi1sYXRleDoKLQkkKFNQSElOWEJV
SUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2xhdGV4Ci0JQGVjaG8K
LQlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IHRoZSBMYVRlWCBmaWxlcyBhcmUgaW4gJChCVUlMRERJ
UikvbGF0ZXguIgotCUBlY2hvICJSdW4gXGBtYWtlJyBpbiB0aGF0IGRpcmVjdG9yeSB0byBydW4g
dGhlc2UgdGhyb3VnaCAocGRmKWxhdGV4IiBcCi0JICAgICAgIih1c2UgXGBtYWtlIGxhdGV4cGRm
JyBoZXJlIHRvIGRvIHRoYXQgYXV0b21hdGljYWxseSkuIgotCi1sYXRleHBkZjoKLQkkKFNQSElO
WEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2xhdGV4Ci0JQGVj
aG8gIlJ1bm5pbmcgTGFUZVggZmlsZXMgdGhyb3VnaCBwZGZsYXRleC4uLiIKLQkkKE1BS0UpIC1D
ICQoQlVJTERESVIpL2xhdGV4IGFsbC1wZGYKLQlAZWNobyAicGRmbGF0ZXggZmluaXNoZWQ7IHRo
ZSBQREYgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL2xhdGV4LiIKLQotbGF0ZXhwZGZqYToKLQkk
KFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2xhdGV4
Ci0JQGVjaG8gIlJ1bm5pbmcgTGFUZVggZmlsZXMgdGhyb3VnaCBwbGF0ZXggYW5kIGR2aXBkZm14
Li4uIgotCSQoTUFLRSkgLUMgJChCVUlMRERJUikvbGF0ZXggYWxsLXBkZi1qYQotCUBlY2hvICJw
ZGZsYXRleCBmaW5pc2hlZDsgdGhlIFBERiBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvbGF0ZXgu
IgotCi10ZXh0OgotCSQoU1BISU5YQlVJTEQpIC1iIHRleHQgJChBTExTUEhJTlhPUFRTKSAkKEJV
SUxERElSKS90ZXh0Ci0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSB0ZXh0IGZp
bGVzIGFyZSBpbiAkKEJVSUxERElSKS90ZXh0LiIKLQotbWFuOgotCSQoU1BISU5YQlVJTEQpIC1i
IG1hbiAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL21hbgotCUBlY2hvCi0JQGVjaG8gIkJ1
aWxkIGZpbmlzaGVkLiBUaGUgbWFudWFsIHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9tYW4uIgot
Ci10ZXhpbmZvOgotCSQoU1BISU5YQlVJTEQpIC1iIHRleGluZm8gJChBTExTUEhJTlhPUFRTKSAk
KEJVSUxERElSKS90ZXhpbmZvCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBU
ZXhpbmZvIGZpbGVzIGFyZSBpbiAkKEJVSUxERElSKS90ZXhpbmZvLiIKLQlAZWNobyAiUnVuIFxg
bWFrZScgaW4gdGhhdCBkaXJlY3RvcnkgdG8gcnVuIHRoZXNlIHRocm91Z2ggbWFrZWluZm8iIFwK
LQkgICAgICAiKHVzZSBcYG1ha2UgaW5mbycgaGVyZSB0byBkbyB0aGF0IGF1dG9tYXRpY2FsbHkp
LiIKLQotaW5mbzoKLQkkKFNQSElOWEJVSUxEKSAtYiB0ZXhpbmZvICQoQUxMU1BISU5YT1BUUykg
JChCVUlMRERJUikvdGV4aW5mbwotCUBlY2hvICJSdW5uaW5nIFRleGluZm8gZmlsZXMgdGhyb3Vn
aCBtYWtlaW5mby4uLiIKLQltYWtlIC1DICQoQlVJTERESVIpL3RleGluZm8gaW5mbwotCUBlY2hv
ICJtYWtlaW5mbyBmaW5pc2hlZDsgdGhlIEluZm8gZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3Rl
eGluZm8uIgotCi1nZXR0ZXh0OgotCSQoU1BISU5YQlVJTEQpIC1iIGdldHRleHQgJChJMThOU1BI
SU5YT1BUUykgJChCVUlMRERJUikvbG9jYWxlCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNo
ZWQuIFRoZSBtZXNzYWdlIGNhdGFsb2dzIGFyZSBpbiAkKEJVSUxERElSKS9sb2NhbGUuIgotCi1j
aGFuZ2VzOgotCSQoU1BISU5YQlVJTEQpIC1iIGNoYW5nZXMgJChBTExTUEhJTlhPUFRTKSAkKEJV
SUxERElSKS9jaGFuZ2VzCi0JQGVjaG8KLQlAZWNobyAiVGhlIG92ZXJ2aWV3IGZpbGUgaXMgaW4g
JChCVUlMRERJUikvY2hhbmdlcy4iCi0KLWxpbmtjaGVjazoKLQkkKFNQSElOWEJVSUxEKSAtYiBs
aW5rY2hlY2sgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9saW5rY2hlY2sKLQlAZWNobwot
CUBlY2hvICJMaW5rIGNoZWNrIGNvbXBsZXRlOyBsb29rIGZvciBhbnkgZXJyb3JzIGluIHRoZSBh
Ym92ZSBvdXRwdXQgIiBcCi0JICAgICAgIm9yIGluICQoQlVJTERESVIpL2xpbmtjaGVjay9vdXRw
dXQudHh0LiIKLQotZG9jdGVzdDoKLQkkKFNQSElOWEJVSUxEKSAtYiBkb2N0ZXN0ICQoQUxMU1BI
SU5YT1BUUykgJChCVUlMRERJUikvZG9jdGVzdAotCUBlY2hvICJUZXN0aW5nIG9mIGRvY3Rlc3Rz
IGluIHRoZSBzb3VyY2VzIGZpbmlzaGVkLCBsb29rIGF0IHRoZSAiIFwKLQkgICAgICAicmVzdWx0
cyBpbiAkKEJVSUxERElSKS9kb2N0ZXN0L291dHB1dC50eHQuIgotCi14bWw6Ci0JJChTUEhJTlhC
VUlMRCkgLWIgeG1sICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikveG1sCi0JQGVjaG8KLQlA
ZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBYTUwgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3ht
bC4iCi0KLXBzZXVkb3htbDoKLQkkKFNQSElOWEJVSUxEKSAtYiBwc2V1ZG94bWwgJChBTExTUEhJ
TlhPUFRTKSAkKEJVSUxERElSKS9wc2V1ZG94bWwKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5p
c2hlZC4gVGhlIHBzZXVkby1YTUwgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL3BzZXVkb3htbC4i
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2h0bWw1bGliL2RvYy9jaGFuZ2VzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2NoYW5nZXMucnN0CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWQzYjcwNWQwZmU0MzE0ZDcxYTZiNTMyYjJkZGIw
YTQ3NjVkODcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVs
aWIvZG9jL2NoYW5nZXMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0uLiA6Y2hh
bmdlbG9nOgotCi0uLiBpbmNsdWRlOjogLi4vQ0hBTkdFUy5yc3QKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9j
L2NvbmYucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2h0bWw1bGliL2RvYy9jb25mLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
MzRmMjFjNDJlYmM1Mjk2M2IxZWRlZWEyYjBlNzI4MWYwMWIxNmQwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2NvbmYucHkKKysrIC9kZXYvbnVs
bApAQCAtMSwyODAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIyAtKi0gY29kaW5n
OiB1dGYtOCAtKi0KLSMKLSMgaHRtbDVsaWIgZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0
aW9uIGZpbGUsIGNyZWF0ZWQgYnkKLSMgc3BoaW54LXF1aWNrc3RhcnQgb24gV2VkIE1heSAgOCAw
MDowNDo0OSAyMDEzLgotIwotIyBUaGlzIGZpbGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3Vy
cmVudCBkaXJlY3Rvcnkgc2V0IHRvIGl0cyBjb250YWluaW5nIGRpci4KLSMKLSMgTm90ZSB0aGF0
IG5vdCBhbGwgcG9zc2libGUgY29uZmlndXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhp
cwotIyBhdXRvZ2VuZXJhdGVkIGZpbGUuCi0jCi0jIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBo
YXZlIGEgZGVmYXVsdDsgdmFsdWVzIHRoYXQgYXJlIGNvbW1lbnRlZCBvdXQKLSMgc2VydmUgdG8g
c2hvdyB0aGUgZGVmYXVsdC4KLQotaW1wb3J0IHN5cywgb3MKLQotIyBJZiBleHRlbnNpb25zIChv
ciBtb2R1bGVzIHRvIGRvY3VtZW50IHdpdGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0
b3J5LAotIyBhZGQgdGhlc2UgZGlyZWN0b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRp
cmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUKLSMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3Mu
cGF0aC5hYnNwYXRoIHRvIG1ha2UgaXQgYWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KLSNzeXMu
cGF0aC5pbnNlcnQoMCwgb3MucGF0aC5hYnNwYXRoKCcuJykpCi0KLSMgLS0gR2VuZXJhbCBjb25m
aWd1cmF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi0KLSMgSWYgeW91ciBkb2N1bWVudGF0aW9uIG5lZWRzIGEgbWluaW1hbCBTcGhpbngg
dmVyc2lvbiwgc3RhdGUgaXQgaGVyZS4KLSNuZWVkc19zcGhpbnggPSAnMS4wJwotCi0jIEFkZCBh
bnkgU3BoaW54IGV4dGVuc2lvbiBtb2R1bGUgbmFtZXMgaGVyZSwgYXMgc3RyaW5ncy4gVGhleSBj
YW4gYmUgZXh0ZW5zaW9ucwotIyBjb21pbmcgd2l0aCBTcGhpbnggKG5hbWVkICdzcGhpbnguZXh0
LionKSBvciB5b3VyIGN1c3RvbSBvbmVzLgotZXh0ZW5zaW9ucyA9IFsnc3BoaW54LmV4dC5hdXRv
ZG9jJywgJ3NwaGlueC5leHQuZG9jdGVzdCcsICdzcGhpbnguZXh0LnZpZXdjb2RlJ10KLQotIyBB
ZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0ZW1wbGF0ZXMgaGVyZSwgcmVsYXRpdmUgdG8gdGhp
cyBkaXJlY3RvcnkuCi10ZW1wbGF0ZXNfcGF0aCA9IFsnX3RlbXBsYXRlcyddCi0KLSMgVGhlIHN1
ZmZpeCBvZiBzb3VyY2UgZmlsZW5hbWVzLgotc291cmNlX3N1ZmZpeCA9ICcucnN0JwotCi0jIFRo
ZSBlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXMuCi0jc291cmNlX2VuY29kaW5nID0gJ3V0Zi04LXNp
ZycKLQotIyBUaGUgbWFzdGVyIHRvY3RyZWUgZG9jdW1lbnQuCi1tYXN0ZXJfZG9jID0gJ2luZGV4
JwotCi0jIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCi1wcm9qZWN0ID0g
J2h0bWw1bGliJwotY29weXJpZ2h0ID0gJzIwMDYgLSAyMDEzLCBKYW1lcyBHcmFoYW0sIEdlb2Zm
cmV5IFNuZWRkb24sIGFuZCBjb250cmlidXRvcnMnCi0KLSMgVGhlIHZlcnNpb24gaW5mbyBmb3Ig
dGhlIHByb2plY3QgeW91J3JlIGRvY3VtZW50aW5nLCBhY3RzIGFzIHJlcGxhY2VtZW50IGZvcgot
IyB8dmVyc2lvbnwgYW5kIHxyZWxlYXNlfCwgYWxzbyB1c2VkIGluIHZhcmlvdXMgb3RoZXIgcGxh
Y2VzIHRocm91Z2hvdXQgdGhlCi0jIGJ1aWx0IGRvY3VtZW50cy4KLSMKLSMgVGhlIHNob3J0IFgu
WSB2ZXJzaW9uLgotdmVyc2lvbiA9ICcxLjAnCi0jIFRoZSBmdWxsIHZlcnNpb24sIGluY2x1ZGlu
ZyBhbHBoYS9iZXRhL3JjIHRhZ3MuCi1zeXMucGF0aC5hcHBlbmQob3MucGF0aC5hYnNwYXRoKCcu
LicpKQotZnJvbSBodG1sNWxpYiBpbXBvcnQgX192ZXJzaW9uX18KLXJlbGVhc2UgPSBfX3ZlcnNp
b25fXwotCi0jIFRoZSBsYW5ndWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlu
eC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgotIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5n
dWFnZXMuCi0jbGFuZ3VhZ2UgPSAnZW4nCi0KLSMgVGhlcmUgYXJlIHR3byBvcHRpb25zIGZvciBy
ZXBsYWNpbmcgfHRvZGF5fDogZWl0aGVyLCB5b3Ugc2V0IHRvZGF5IHRvIHNvbWUKLSMgbm9uLWZh
bHNlIHZhbHVlLCB0aGVuIGl0IGlzIHVzZWQ6Ci0jdG9kYXkgPSAnJwotIyBFbHNlLCB0b2RheV9m
bXQgaXMgdXNlZCBhcyB0aGUgZm9ybWF0IGZvciBhIHN0cmZ0aW1lIGNhbGwuCi0jdG9kYXlfZm10
ID0gJyVCICVkLCAlWScKLQotIyBMaXN0IG9mIHBhdHRlcm5zLCByZWxhdGl2ZSB0byBzb3VyY2Ug
ZGlyZWN0b3J5LCB0aGF0IG1hdGNoIGZpbGVzIGFuZAotIyBkaXJlY3RvcmllcyB0byBpZ25vcmUg
d2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMuCi1leGNsdWRlX3BhdHRlcm5zID0gWydfYnVp
bGQnLCAndGhlbWUnXQotCi0jIFRoZSByZVNUIGRlZmF1bHQgcm9sZSAodXNlZCBmb3IgdGhpcyBt
YXJrdXA6IGB0ZXh0YCkgdG8gdXNlIGZvciBhbGwgZG9jdW1lbnRzLgotI2RlZmF1bHRfcm9sZSA9
IE5vbmUKLQotIyBJZiB0cnVlLCAnKCknIHdpbGwgYmUgYXBwZW5kZWQgdG8gOmZ1bmM6IGV0Yy4g
Y3Jvc3MtcmVmZXJlbmNlIHRleHQuCi0jYWRkX2Z1bmN0aW9uX3BhcmVudGhlc2VzID0gVHJ1ZQot
Ci0jIElmIHRydWUsIHRoZSBjdXJyZW50IG1vZHVsZSBuYW1lIHdpbGwgYmUgcHJlcGVuZGVkIHRv
IGFsbCBkZXNjcmlwdGlvbgotIyB1bml0IHRpdGxlcyAoc3VjaCBhcyAuLiBmdW5jdGlvbjo6KS4K
LSNhZGRfbW9kdWxlX25hbWVzID0gVHJ1ZQotCi0jIElmIHRydWUsIHNlY3Rpb25hdXRob3IgYW5k
IG1vZHVsZWF1dGhvciBkaXJlY3RpdmVzIHdpbGwgYmUgc2hvd24gaW4gdGhlCi0jIG91dHB1dC4g
VGhleSBhcmUgaWdub3JlZCBieSBkZWZhdWx0LgotI3Nob3dfYXV0aG9ycyA9IEZhbHNlCi0KLSMg
VGhlIG5hbWUgb2YgdGhlIFB5Z21lbnRzIChzeW50YXggaGlnaGxpZ2h0aW5nKSBzdHlsZSB0byB1
c2UuCi1weWdtZW50c19zdHlsZSA9ICdzcGhpbngnCi0KLSMgQSBsaXN0IG9mIGlnbm9yZWQgcHJl
Zml4ZXMgZm9yIG1vZHVsZSBpbmRleCBzb3J0aW5nLgotI21vZGluZGV4X2NvbW1vbl9wcmVmaXgg
PSBbXQotCi0jIElmIHRydWUsIGtlZXAgd2FybmluZ3MgYXMgInN5c3RlbSBtZXNzYWdlIiBwYXJh
Z3JhcGhzIGluIHRoZSBidWlsdCBkb2N1bWVudHMuCi0ja2VlcF93YXJuaW5ncyA9IEZhbHNlCi0K
LQotIyAtLSBPcHRpb25zIGZvciBIVE1MIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBUaGUgdGhlbWUgdG8gdXNlIGZvciBIVE1M
IGFuZCBIVE1MIEhlbHAgcGFnZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yCi0jIGEgbGlz
dCBvZiBidWlsdGluIHRoZW1lcy4KLWh0bWxfdGhlbWUgPSAnZGVmYXVsdCcKLQotIyBUaGVtZSBv
cHRpb25zIGFyZSB0aGVtZS1zcGVjaWZpYyBhbmQgY3VzdG9taXplIHRoZSBsb29rIGFuZCBmZWVs
IG9mIGEgdGhlbWUKLSMgZnVydGhlci4gIEZvciBhIGxpc3Qgb2Ygb3B0aW9ucyBhdmFpbGFibGUg
Zm9yIGVhY2ggdGhlbWUsIHNlZSB0aGUKLSMgZG9jdW1lbnRhdGlvbi4KLSNodG1sX3RoZW1lX29w
dGlvbnMgPSB7fQotCi0jIEFkZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIGN1c3RvbSB0aGVtZXMg
aGVyZSwgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkuCi0jaHRtbF90aGVtZV9wYXRoID0gW10K
LQotIyBUaGUgbmFtZSBmb3IgdGhpcyBzZXQgb2YgU3BoaW54IGRvY3VtZW50cy4gIElmIE5vbmUs
IGl0IGRlZmF1bHRzIHRvCi0jICI8cHJvamVjdD4gdjxyZWxlYXNlPiBkb2N1bWVudGF0aW9uIi4K
LSNodG1sX3RpdGxlID0gTm9uZQotCi0jIEEgc2hvcnRlciB0aXRsZSBmb3IgdGhlIG5hdmlnYXRp
b24gYmFyLiAgRGVmYXVsdCBpcyB0aGUgc2FtZSBhcyBodG1sX3RpdGxlLgotI2h0bWxfc2hvcnRf
dGl0bGUgPSBOb25lCi0KLSMgVGhlIG5hbWUgb2YgYW4gaW1hZ2UgZmlsZSAocmVsYXRpdmUgdG8g
dGhpcyBkaXJlY3RvcnkpIHRvIHBsYWNlIGF0IHRoZSB0b3AKLSMgb2YgdGhlIHNpZGViYXIuCi0j
aHRtbF9sb2dvID0gTm9uZQotCi0jIFRoZSBuYW1lIG9mIGFuIGltYWdlIGZpbGUgKHdpdGhpbiB0
aGUgc3RhdGljIHBhdGgpIHRvIHVzZSBhcyBmYXZpY29uIG9mIHRoZQotIyBkb2NzLiAgVGhpcyBm
aWxlIHNob3VsZCBiZSBhIFdpbmRvd3MgaWNvbiBmaWxlICguaWNvKSBiZWluZyAxNngxNiBvciAz
MngzMgotIyBwaXhlbHMgbGFyZ2UuCi0jaHRtbF9mYXZpY29uID0gTm9uZQotCi0jIEFkZCBhbnkg
cGF0aHMgdGhhdCBjb250YWluIGN1c3RvbSBzdGF0aWMgZmlsZXMgKHN1Y2ggYXMgc3R5bGUgc2hl
ZXRzKSBoZXJlLAotIyByZWxhdGl2ZSB0byB0aGlzIGRpcmVjdG9yeS4gVGhleSBhcmUgY29waWVk
IGFmdGVyIHRoZSBidWlsdGluIHN0YXRpYyBmaWxlcywKLSMgc28gYSBmaWxlIG5hbWVkICJkZWZh
dWx0LmNzcyIgd2lsbCBvdmVyd3JpdGUgdGhlIGJ1aWx0aW4gImRlZmF1bHQuY3NzIi4KLWh0bWxf
c3RhdGljX3BhdGggPSBbJ19zdGF0aWMnXQotCi0jIElmIG5vdCAnJywgYSAnTGFzdCB1cGRhdGVk
IG9uOicgdGltZXN0YW1wIGlzIGluc2VydGVkIGF0IGV2ZXJ5IHBhZ2UgYm90dG9tLAotIyB1c2lu
ZyB0aGUgZ2l2ZW4gc3RyZnRpbWUgZm9ybWF0LgotI2h0bWxfbGFzdF91cGRhdGVkX2ZtdCA9ICcl
YiAlZCwgJVknCi0KLSMgSWYgdHJ1ZSwgU21hcnR5UGFudHMgd2lsbCBiZSB1c2VkIHRvIGNvbnZl
cnQgcXVvdGVzIGFuZCBkYXNoZXMgdG8KLSMgdHlwb2dyYXBoaWNhbGx5IGNvcnJlY3QgZW50aXRp
ZXMuCi0jaHRtbF91c2Vfc21hcnR5cGFudHMgPSBUcnVlCi0KLSMgQ3VzdG9tIHNpZGViYXIgdGVt
cGxhdGVzLCBtYXBzIGRvY3VtZW50IG5hbWVzIHRvIHRlbXBsYXRlIG5hbWVzLgotI2h0bWxfc2lk
ZWJhcnMgPSB7fQotCi0jIEFkZGl0aW9uYWwgdGVtcGxhdGVzIHRoYXQgc2hvdWxkIGJlIHJlbmRl
cmVkIHRvIHBhZ2VzLCBtYXBzIHBhZ2UgbmFtZXMgdG8KLSMgdGVtcGxhdGUgbmFtZXMuCi0jaHRt
bF9hZGRpdGlvbmFsX3BhZ2VzID0ge30KLQotIyBJZiBmYWxzZSwgbm8gbW9kdWxlIGluZGV4IGlz
IGdlbmVyYXRlZC4KLSNodG1sX2RvbWFpbl9pbmRpY2VzID0gVHJ1ZQotCi0jIElmIGZhbHNlLCBu
byBpbmRleCBpcyBnZW5lcmF0ZWQuCi0jaHRtbF91c2VfaW5kZXggPSBUcnVlCi0KLSMgSWYgdHJ1
ZSwgdGhlIGluZGV4IGlzIHNwbGl0IGludG8gaW5kaXZpZHVhbCBwYWdlcyBmb3IgZWFjaCBsZXR0
ZXIuCi0jaHRtbF9zcGxpdF9pbmRleCA9IEZhbHNlCi0KLSMgSWYgdHJ1ZSwgbGlua3MgdG8gdGhl
IHJlU1Qgc291cmNlcyBhcmUgYWRkZWQgdG8gdGhlIHBhZ2VzLgotI2h0bWxfc2hvd19zb3VyY2Vs
aW5rID0gVHJ1ZQotCi0jIElmIHRydWUsICJDcmVhdGVkIHVzaW5nIFNwaGlueCIgaXMgc2hvd24g
aW4gdGhlIEhUTUwgZm9vdGVyLiBEZWZhdWx0IGlzIFRydWUuCi0jaHRtbF9zaG93X3NwaGlueCA9
IFRydWUKLQotIyBJZiB0cnVlLCAiKEMpIENvcHlyaWdodCAuLi4iIGlzIHNob3duIGluIHRoZSBI
VE1MIGZvb3Rlci4gRGVmYXVsdCBpcyBUcnVlLgotI2h0bWxfc2hvd19jb3B5cmlnaHQgPSBUcnVl
Ci0KLSMgSWYgdHJ1ZSwgYW4gT3BlblNlYXJjaCBkZXNjcmlwdGlvbiBmaWxlIHdpbGwgYmUgb3V0
cHV0LCBhbmQgYWxsIHBhZ2VzIHdpbGwKLSMgY29udGFpbiBhIDxsaW5rPiB0YWcgcmVmZXJyaW5n
IHRvIGl0LiAgVGhlIHZhbHVlIG9mIHRoaXMgb3B0aW9uIG11c3QgYmUgdGhlCi0jIGJhc2UgVVJM
IGZyb20gd2hpY2ggdGhlIGZpbmlzaGVkIEhUTUwgaXMgc2VydmVkLgotI2h0bWxfdXNlX29wZW5z
ZWFyY2ggPSAnJwotCi0jIFRoaXMgaXMgdGhlIGZpbGUgbmFtZSBzdWZmaXggZm9yIEhUTUwgZmls
ZXMgKGUuZy4gIi54aHRtbCIpLgotI2h0bWxfZmlsZV9zdWZmaXggPSBOb25lCi0KLSMgT3V0cHV0
IGZpbGUgYmFzZSBuYW1lIGZvciBIVE1MIGhlbHAgYnVpbGRlci4KLWh0bWxoZWxwX2Jhc2VuYW1l
ID0gJ2h0bWw1bGliZG9jJwotCi0KLSMgLS0gT3B0aW9ucyBmb3IgTGFUZVggb3V0cHV0IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLWxhdGV4X2Vs
ZW1lbnRzID0gewotIyBUaGUgcGFwZXIgc2l6ZSAoJ2xldHRlcnBhcGVyJyBvciAnYTRwYXBlcicp
LgotIydwYXBlcnNpemUnOiAnbGV0dGVycGFwZXInLAotCi0jIFRoZSBmb250IHNpemUgKCcxMHB0
JywgJzExcHQnIG9yICcxMnB0JykuCi0jJ3BvaW50c2l6ZSc6ICcxMHB0JywKLQotIyBBZGRpdGlv
bmFsIHN0dWZmIGZvciB0aGUgTGFUZVggcHJlYW1ibGUuCi0jJ3ByZWFtYmxlJzogJycsCi19Ci0K
LSMgR3JvdXBpbmcgdGhlIGRvY3VtZW50IHRyZWUgaW50byBMYVRlWCBmaWxlcy4gTGlzdCBvZiB0
dXBsZXMKLSMgKHNvdXJjZSBzdGFydCBmaWxlLCB0YXJnZXQgbmFtZSwgdGl0bGUsIGF1dGhvciwg
ZG9jdW1lbnRjbGFzcyBbaG93dG8vbWFudWFsXSkuCi1sYXRleF9kb2N1bWVudHMgPSBbCi0gICgn
aW5kZXgnLCAnaHRtbDVsaWIudGV4JywgJ2h0bWw1bGliIERvY3VtZW50YXRpb24nLAotICAgJ0ph
bWVzIEdyYWhhbSwgR2VvZmZyZXkgU25lZGRvbiwgYW5kIGNvbnRyaWJ1dG9ycycsICdtYW51YWwn
KSwKLV0KLQotIyBUaGUgbmFtZSBvZiBhbiBpbWFnZSBmaWxlIChyZWxhdGl2ZSB0byB0aGlzIGRp
cmVjdG9yeSkgdG8gcGxhY2UgYXQgdGhlIHRvcCBvZgotIyB0aGUgdGl0bGUgcGFnZS4KLSNsYXRl
eF9sb2dvID0gTm9uZQotCi0jIEZvciAibWFudWFsIiBkb2N1bWVudHMsIGlmIHRoaXMgaXMgdHJ1
ZSwgdGhlbiB0b3BsZXZlbCBoZWFkaW5ncyBhcmUgcGFydHMsCi0jIG5vdCBjaGFwdGVycy4KLSNs
YXRleF91c2VfcGFydHMgPSBGYWxzZQotCi0jIElmIHRydWUsIHNob3cgcGFnZSByZWZlcmVuY2Vz
IGFmdGVyIGludGVybmFsIGxpbmtzLgotI2xhdGV4X3Nob3dfcGFnZXJlZnMgPSBGYWxzZQotCi0j
IElmIHRydWUsIHNob3cgVVJMIGFkZHJlc3NlcyBhZnRlciBleHRlcm5hbCBsaW5rcy4KLSNsYXRl
eF9zaG93X3VybHMgPSBGYWxzZQotCi0jIERvY3VtZW50cyB0byBhcHBlbmQgYXMgYW4gYXBwZW5k
aXggdG8gYWxsIG1hbnVhbHMuCi0jbGF0ZXhfYXBwZW5kaWNlcyA9IFtdCi0KLSMgSWYgZmFsc2Us
IG5vIG1vZHVsZSBpbmRleCBpcyBnZW5lcmF0ZWQuCi0jbGF0ZXhfZG9tYWluX2luZGljZXMgPSBU
cnVlCi0KLQotIyAtLSBPcHRpb25zIGZvciBtYW51YWwgcGFnZSBvdXRwdXQgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBPbmUgZW50cnkgcGVyIG1hbnVh
bCBwYWdlLiBMaXN0IG9mIHR1cGxlcwotIyAoc291cmNlIHN0YXJ0IGZpbGUsIG5hbWUsIGRlc2Ny
aXB0aW9uLCBhdXRob3JzLCBtYW51YWwgc2VjdGlvbikuCi1tYW5fcGFnZXMgPSBbCi0gICAgKCdp
bmRleCcsICdodG1sNWxpYicsICdodG1sNWxpYiBEb2N1bWVudGF0aW9uJywKLSAgICAgWydKYW1l
cyBHcmFoYW0sIEdlb2ZmcmV5IFNuZWRkb24sIGFuZCBjb250cmlidXRvcnMnXSwgMSkKLV0KLQot
IyBJZiB0cnVlLCBzaG93IFVSTCBhZGRyZXNzZXMgYWZ0ZXIgZXh0ZXJuYWwgbGlua3MuCi0jbWFu
X3Nob3dfdXJscyA9IEZhbHNlCi0KLQotIyAtLSBPcHRpb25zIGZvciBUZXhpbmZvIG91dHB1dCAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBHcm91
cGluZyB0aGUgZG9jdW1lbnQgdHJlZSBpbnRvIFRleGluZm8gZmlsZXMuIExpc3Qgb2YgdHVwbGVz
Ci0jIChzb3VyY2Ugc3RhcnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsCi0jICBk
aXIgbWVudSBlbnRyeSwgZGVzY3JpcHRpb24sIGNhdGVnb3J5KQotdGV4aW5mb19kb2N1bWVudHMg
PSBbCi0gICgnaW5kZXgnLCAnaHRtbDVsaWInLCAnaHRtbDVsaWIgRG9jdW1lbnRhdGlvbicsCi0g
ICAnSmFtZXMgR3JhaGFtLCBHZW9mZnJleSBTbmVkZG9uLCBhbmQgY29udHJpYnV0b3JzJywgJ2h0
bWw1bGliJywgJ09uZSBsaW5lIGRlc2NyaXB0aW9uIG9mIHByb2plY3QuJywKLSAgICdNaXNjZWxs
YW5lb3VzJyksCi1dCi0KLSMgRG9jdW1lbnRzIHRvIGFwcGVuZCBhcyBhbiBhcHBlbmRpeCB0byBh
bGwgbWFudWFscy4KLSN0ZXhpbmZvX2FwcGVuZGljZXMgPSBbXQotCi0jIElmIGZhbHNlLCBubyBt
b2R1bGUgaW5kZXggaXMgZ2VuZXJhdGVkLgotI3RleGluZm9fZG9tYWluX2luZGljZXMgPSBUcnVl
Ci0KLSMgSG93IHRvIGRpc3BsYXkgVVJMIGFkZHJlc3NlczogJ2Zvb3Rub3RlJywgJ25vJywgb3Ig
J2lubGluZScuCi0jdGV4aW5mb19zaG93X3VybHMgPSAnZm9vdG5vdGUnCi0KLSMgSWYgdHJ1ZSwg
ZG8gbm90IGdlbmVyYXRlIGEgQGRldGFpbG1lbnUgaW4gdGhlICJUb3AiIG5vZGUncyBtZW51Lgot
I3RleGluZm9fbm9fZGV0YWlsbWVudSA9IEZhbHNlCi0KLWNsYXNzIENFeHRNb2NrKG9iamVjdCk6
Ci0gICAgIiIiUmVxdWlyZWQgZm9yIGF1dG9kb2Mgb24gcmVhZHRoZWRvY3Mub3JnIHdoZXJlIHlv
dSBjYW5ub3QgYnVpbGQgQyBleHRlbnNpb25zLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAq
YXJncywgKiprd2FyZ3MpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwg
KmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIENFeHRNb2NrKCkKLQotICAgIEBjbGFz
c21ldGhvZAotICAgIGRlZiBfX2dldGF0dHJfXyhjbHMsIG5hbWUpOgotICAgICAgICBpZiBuYW1l
IGluICgnX19maWxlX18nLCAnX19wYXRoX18nKToKLSAgICAgICAgICAgIHJldHVybiAnL2Rldi9u
dWxsJwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIENFeHRNb2NrKCkKLQotdHJ5
OgotICAgIGltcG9ydCBseG1sICAgIyBmbGFrZTg6IG5vcWEKLWV4Y2VwdCBJbXBvcnRFcnJvcjoK
LSAgICBzeXMubW9kdWxlc1snbHhtbCddID0gQ0V4dE1vY2soKQotICAgIHN5cy5tb2R1bGVzWyds
eG1sLmV0cmVlJ10gPSBDRXh0TW9jaygpCi0gICAgcHJpbnQoIndhcm5pbmc6IGx4bWwgbW9kdWxl
cyBtb2NrZWQuIikKLQotdHJ5OgotICAgIGltcG9ydCBnZW5zaGkgICAjIGZsYWtlODogbm9xYQot
ZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHN5cy5tb2R1bGVzWydnZW5zaGknXSA9IENFeHRNb2Nr
KCkKLSAgICBzeXMubW9kdWxlc1snZ2Vuc2hpLmNvcmUnXSA9IENFeHRNb2NrKCkKLSAgICBwcmlu
dCgid2FybmluZzogZ2Vuc2hpIG1vZHVsZXMgbW9ja2VkLiIpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9o
dG1sNWxpYi5maWx0ZXJzLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2h0bWw1bGliLmZpbHRlcnMucnN0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmRhMzhhNzM1YTEzNmFhODMzZGU1MGY5OWNhY2I2ZmEx
OGNlZmFhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
ZG9jL2h0bWw1bGliLmZpbHRlcnMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAot
ZmlsdGVycyBQYWNrYWdlCi09PT09PT09PT09PT09PT0KLQotOm1vZDpgX2Jhc2VgIE1vZHVsZQot
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIuZmlsdGVycy5f
YmFzZQotICAgIDptZW1iZXJzOgotICAgIDp1bmRvYy1tZW1iZXJzOgotICAgIDpzaG93LWluaGVy
aXRhbmNlOgotCi06bW9kOmBhbHBoYWJldGljYWxhdHRyaWJ1dGVzYCBNb2R1bGUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIu
ZmlsdGVycy5hbHBoYWJldGljYWxhdHRyaWJ1dGVzCi0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9j
LW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJpdGFuY2U6Ci0KLTptb2Q6YGluamVjdF9tZXRhX2No
YXJzZXRgIE1vZHVsZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIGF1
dG9tb2R1bGU6OiBodG1sNWxpYi5maWx0ZXJzLmluamVjdF9tZXRhX2NoYXJzZXQKLSAgICA6bWVt
YmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhlcml0YW5jZToKLQotOm1v
ZDpgbGludGAgTW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGh0
bWw1bGliLmZpbHRlcnMubGludAotICAgIDptZW1iZXJzOgotICAgIDp1bmRvYy1tZW1iZXJzOgot
ICAgIDpzaG93LWluaGVyaXRhbmNlOgotCi06bW9kOmBvcHRpb25hbHRhZ3NgIE1vZHVsZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGh0bWw1bGliLmZpbHRl
cnMub3B0aW9uYWx0YWdzCi0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAg
OnNob3ctaW5oZXJpdGFuY2U6Ci0KLTptb2Q6YHNhbml0aXplcmAgTW9kdWxlCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIuZmlsdGVycy5zYW5pdGl6
ZXIKLSAgICA6bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhlcml0
YW5jZToKLQotOm1vZDpgd2hpdGVzcGFjZWAgTW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotLi4gYXV0b21vZHVsZTo6IGh0bWw1bGliLmZpbHRlcnMud2hpdGVzcGFjZQotICAgIDpt
ZW1iZXJzOgotICAgIDp1bmRvYy1tZW1iZXJzOgotICAgIDpzaG93LWluaGVyaXRhbmNlOgotCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2h0bWw1bGliL2RvYy9odG1sNWxpYi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9odG1sNWxpYi5yc3QKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0ZWQxMmI0NjQ2OWQwYTU1OGE0NWM5NGY4NjU0N2Fh
YWJjZWFiZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9kb2MvaHRtbDVsaWIucnN0CisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotaHRtbDVs
aWIgUGFja2FnZQotPT09PT09PT09PT09PT09PQotCi06bW9kOmBodG1sNWxpYmAgUGFja2FnZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGh0bWw1bGliLl9faW5p
dF9fCi0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJp
dGFuY2U6Ci0KLTptb2Q6YGNvbnN0YW50c2AgTW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIuY29uc3RhbnRzCi0gICAgOm1lbWJlcnM6Ci0g
ICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJpdGFuY2U6Ci0KLTptb2Q6YGh0bWw1
cGFyc2VyYCBNb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0b21vZHVs
ZTo6IGh0bWw1bGliLmh0bWw1cGFyc2VyCi0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJl
cnM6Ci0gICAgOnNob3ctaW5oZXJpdGFuY2U6Ci0KLTptb2Q6YGloYXRleG1sYCBNb2R1bGUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGh0bWw1bGliLmloYXRleG1s
Ci0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJpdGFu
Y2U6Ci0KLTptb2Q6YGlucHV0c3RyZWFtYCBNb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotLi4gYXV0b21vZHVsZTo6IGh0bWw1bGliLmlucHV0c3RyZWFtCi0gICAgOm1lbWJlcnM6
Ci0gICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJpdGFuY2U6Ci0KLTptb2Q6YHNh
bml0aXplcmAgTW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxl
OjogaHRtbDVsaWIuc2FuaXRpemVyCi0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJlcnM6
Ci0gICAgOnNob3ctaW5oZXJpdGFuY2U6Ci0KLTptb2Q6YHRva2VuaXplcmAgTW9kdWxlCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIudG9rZW5pemVy
Ci0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJpdGFu
Y2U6Ci0KLTptb2Q6YHV0aWxzYCBNb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0
b21vZHVsZTo6IGh0bWw1bGliLnV0aWxzCi0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJl
cnM6Ci0gICAgOnNob3ctaW5oZXJpdGFuY2U6Ci0KLVN1YnBhY2thZ2VzCi0tLS0tLS0tLS0tLQot
Ci0uLiB0b2N0cmVlOjoKLQotICAgIGh0bWw1bGliLmZpbHRlcnMKLSAgICBodG1sNWxpYi5zZXJp
YWxpemVyCi0gICAgaHRtbDVsaWIudHJlZWJ1aWxkZXJzCi0gICAgaHRtbDVsaWIudHJlZXdhbGtl
cnMKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9odG1sNWxpYi9kb2MvaHRtbDVsaWIuc2VyaWFsaXplci5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9o
dG1sNWxpYi5zZXJpYWxpemVyLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE5
NTQ3NDIxYjEzYzQyYWZlMjdiMzA0ZDhlNjUzMDQ4MTAxYTAwZi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9odG1sNWxpYi5zZXJpYWxpemVyLnJz
dAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXNlcmlhbGl6ZXIgUGFja2FnZQotPT09
PT09PT09PT09PT09PT09Ci0KLTptb2Q6YHNlcmlhbGl6ZXJgIFBhY2thZ2UKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGh0bWw1bGliLnNlcmlhbGl6ZXIKLSAg
ICA6bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhlcml0YW5jZToK
LQotOm1vZDpgaHRtbHNlcmlhbGl6ZXJgIE1vZHVsZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIuc2VyaWFsaXplci5odG1sc2VyaWFsaXpl
cgotICAgIDptZW1iZXJzOgotICAgIDp1bmRvYy1tZW1iZXJzOgotICAgIDpzaG93LWluaGVyaXRh
bmNlOgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9odG1sNWxpYi50cmVlYnVpbGRlcnMucnN0IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9k
b2MvaHRtbDVsaWIudHJlZWJ1aWxkZXJzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOTkxMTk4Mzk0OGRlMzIyODY3MTU1YjlmMjQzYzNlNTEwY2QzNmNhNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9odG1sNWxpYi50cmVlYnVp
bGRlcnMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotdHJlZWJ1aWxkZXJzIFBh
Y2thZ2UKLT09PT09PT09PT09PT09PT09PT09Ci0KLTptb2Q6YHRyZWVidWlsZGVyc2AgUGFja2Fn
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIGF1dG9tb2R1bGU6OiBodG1sNWxp
Yi50cmVlYnVpbGRlcnMKLSAgICA6bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6
c2hvdy1pbmhlcml0YW5jZToKLQotOm1vZDpgX2Jhc2VgIE1vZHVsZQotLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIudHJlZWJ1aWxkZXJzLl9iYXNlCi0gICAg
Om1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJpdGFuY2U6Ci0K
LTptb2Q6YGRvbWAgTW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxlOjog
aHRtbDVsaWIudHJlZWJ1aWxkZXJzLmRvbQotICAgIDptZW1iZXJzOgotICAgIDp1bmRvYy1tZW1i
ZXJzOgotICAgIDpzaG93LWluaGVyaXRhbmNlOgotCi06bW9kOmBldHJlZWAgTW9kdWxlCi0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLS4uIGF1dG9tb2R1bGU6OiBodG1sNWxpYi50cmVlYnVpbGRlcnMu
ZXRyZWUKLSAgICA6bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhl
cml0YW5jZToKLQotOm1vZDpgZXRyZWVfbHhtbGAgTW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGh0bWw1bGliLnRyZWVidWlsZGVycy5ldHJlZV9seG1s
Ci0gICAgOm1lbWJlcnM6Ci0gICAgOnVuZG9jLW1lbWJlcnM6Ci0gICAgOnNob3ctaW5oZXJpdGFu
Y2U6Ci0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2h0bWw1bGliLnRyZWV3YWxrZXJzLnJzdCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9j
L2h0bWw1bGliLnRyZWV3YWxrZXJzLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODA1OTVlMmQ3ZDBlNTRlMGViODg1ZjUwYzIzN2M5YzMxY2FlMmZhNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9odG1sNWxpYi50cmVld2Fsa2Vy
cy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi10cmVld2Fsa2VycyBQYWNrYWdl
Ci09PT09PT09PT09PT09PT09PT09Ci0KLTptb2Q6YHRyZWV3YWxrZXJzYCBQYWNrYWdlCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIudHJlZXdh
bGtlcnMKLSAgICA6bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhl
cml0YW5jZToKLQotOm1vZDpgX2Jhc2VgIE1vZHVsZQotLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0u
LiBhdXRvbW9kdWxlOjogaHRtbDVsaWIudHJlZXdhbGtlcnMuX2Jhc2UKLSAgICA6bWVtYmVyczoK
LSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhlcml0YW5jZToKLQotOm1vZDpgZG9t
YCBNb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIGF1dG9tb2R1bGU6OiBodG1sNWxpYi50
cmVld2Fsa2Vycy5kb20KLSAgICA6bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6
c2hvdy1pbmhlcml0YW5jZToKLQotOm1vZDpgZXRyZWVgIE1vZHVsZQotLS0tLS0tLS0tLS0tLS0t
LS0tLQotCi0uLiBhdXRvbW9kdWxlOjogaHRtbDVsaWIudHJlZXdhbGtlcnMuZXRyZWUKLSAgICA6
bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhlcml0YW5jZToKLQot
Om1vZDpgZ2Vuc2hpc3RyZWFtYCBNb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LS4uIGF1dG9tb2R1bGU6OiBodG1sNWxpYi50cmVld2Fsa2Vycy5nZW5zaGlzdHJlYW0KLSAgICA6
bWVtYmVyczoKLSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhlcml0YW5jZToKLQot
Om1vZDpgbHhtbGV0cmVlYCBNb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLS4uIGF1
dG9tb2R1bGU6OiBodG1sNWxpYi50cmVld2Fsa2Vycy5seG1sZXRyZWUKLSAgICA6bWVtYmVyczoK
LSAgICA6dW5kb2MtbWVtYmVyczoKLSAgICA6c2hvdy1pbmhlcml0YW5jZToKLQotOm1vZDpgcHVs
bGRvbWAgTW9kdWxlCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gYXV0b21vZHVsZTo6IGh0
bWw1bGliLnRyZWV3YWxrZXJzLnB1bGxkb20KLSAgICA6bWVtYmVyczoKLSAgICA6dW5kb2MtbWVt
YmVyczoKLSAgICA6c2hvdy1pbmhlcml0YW5jZToKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9kb2MvaW5kZXgu
cnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9o
dG1sNWxpYi9kb2MvaW5kZXgucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTJl
MWI5NjljZGM5YWI5ZTM1ZDA5ZjViOTVjYTE4ZjFhNGQ2NjYxLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2luZGV4LnJzdAorKysgL2Rldi9udWxs
CkBAIC0xLDIxICswLDAgQEAKLU92ZXJ2aWV3Ci09PT09PT09PQotCi0uLiBpbmNsdWRlOjogLi4v
UkVBRE1FLnJzdAotICAgOnN0YXJ0LWxpbmU6IDYKLQotLi4gdG9jdHJlZTo6Ci0gICA6bWF4ZGVw
dGg6IDIKLQotICAgbW92aW5ncGFydHMKLSAgIGNoYW5nZXMKLSAgIExpY2Vuc2UgPGxpY2Vuc2U+
Ci0KLQotSW5kaWNlcyBhbmQgdGFibGVzCi09PT09PT09PT09PT09PT09PT0KLQotKiA6cmVmOmBn
ZW5pbmRleGAKLSogOnJlZjpgbW9kaW5kZXhgCi0qIDpyZWY6YHNlYXJjaGAKLQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9kb2MvbGljZW5zZS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9saWNlbnNlLnJzdApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggN2U2MjkxZjNiOWJlYTM0NTQyYmQwYmY0YWYyZmUyMzhkOTgxOTUyYS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9saWNl
bnNlLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotTGljZW5zZQotPT09PT09PQot
Ci0uLiBpbmNsdWRlOjogLi4vTElDRU5TRQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9kb2MvbWFrZS5iYXQgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGli
L2RvYy9tYWtlLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTg4Yzc2OWNlMzNk
M2EyZDE0MDliNjgzMzNiMDY5OTZiZTljZTIwZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9tYWtlLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDI0
MiArMCwwIEBACi1ARUNITyBPRkYNCi0NCi1SRU0gQ29tbWFuZCBmaWxlIGZvciBTcGhpbnggZG9j
dW1lbnRhdGlvbg0KLQ0KLWlmICIlU1BISU5YQlVJTEQlIiA9PSAiIiAoDQotCXNldCBTUEhJTlhC
VUlMRD1zcGhpbngtYnVpbGQNCi0pDQotc2V0IEJVSUxERElSPV9idWlsZA0KLXNldCBBTExTUEhJ
TlhPUFRTPS1kICVCVUlMRERJUiUvZG9jdHJlZXMgJVNQSElOWE9QVFMlIC4NCi1zZXQgSTE4TlNQ
SElOWE9QVFM9JVNQSElOWE9QVFMlIC4NCi1pZiBOT1QgIiVQQVBFUiUiID09ICIiICgNCi0Jc2V0
IEFMTFNQSElOWE9QVFM9LUQgbGF0ZXhfcGFwZXJfc2l6ZT0lUEFQRVIlICVBTExTUEhJTlhPUFRT
JQ0KLQlzZXQgSTE4TlNQSElOWE9QVFM9LUQgbGF0ZXhfcGFwZXJfc2l6ZT0lUEFQRVIlICVJMThO
U1BISU5YT1BUUyUNCi0pDQotDQotaWYgIiUxIiA9PSAiIiBnb3RvIGhlbHANCi0NCi1pZiAiJTEi
ID09ICJoZWxwIiAoDQotCTpoZWxwDQotCWVjaG8uUGxlYXNlIHVzZSBgbWFrZSBePHRhcmdldF4+
YCB3aGVyZSBePHRhcmdldF4+IGlzIG9uZSBvZg0KLQllY2hvLiAgaHRtbCAgICAgICB0byBtYWtl
IHN0YW5kYWxvbmUgSFRNTCBmaWxlcw0KLQllY2hvLiAgZGlyaHRtbCAgICB0byBtYWtlIEhUTUwg
ZmlsZXMgbmFtZWQgaW5kZXguaHRtbCBpbiBkaXJlY3Rvcmllcw0KLQllY2hvLiAgc2luZ2xlaHRt
bCB0byBtYWtlIGEgc2luZ2xlIGxhcmdlIEhUTUwgZmlsZQ0KLQllY2hvLiAgcGlja2xlICAgICB0
byBtYWtlIHBpY2tsZSBmaWxlcw0KLQllY2hvLiAganNvbiAgICAgICB0byBtYWtlIEpTT04gZmls
ZXMNCi0JZWNoby4gIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhUTUwgaGVs
cCBwcm9qZWN0DQotCWVjaG8uICBxdGhlbHAgICAgIHRvIG1ha2UgSFRNTCBmaWxlcyBhbmQgYSBx
dGhlbHAgcHJvamVjdA0KLQllY2hvLiAgZGV2aGVscCAgICB0byBtYWtlIEhUTUwgZmlsZXMgYW5k
IGEgRGV2aGVscCBwcm9qZWN0DQotCWVjaG8uICBlcHViICAgICAgIHRvIG1ha2UgYW4gZXB1Yg0K
LQllY2hvLiAgbGF0ZXggICAgICB0byBtYWtlIExhVGVYIGZpbGVzLCB5b3UgY2FuIHNldCBQQVBF
Uj1hNCBvciBQQVBFUj1sZXR0ZXINCi0JZWNoby4gIHRleHQgICAgICAgdG8gbWFrZSB0ZXh0IGZp
bGVzDQotCWVjaG8uICBtYW4gICAgICAgIHRvIG1ha2UgbWFudWFsIHBhZ2VzDQotCWVjaG8uICB0
ZXhpbmZvICAgIHRvIG1ha2UgVGV4aW5mbyBmaWxlcw0KLQllY2hvLiAgZ2V0dGV4dCAgICB0byBt
YWtlIFBPIG1lc3NhZ2UgY2F0YWxvZ3MNCi0JZWNoby4gIGNoYW5nZXMgICAgdG8gbWFrZSBhbiBv
dmVydmlldyBvdmVyIGFsbCBjaGFuZ2VkL2FkZGVkL2RlcHJlY2F0ZWQgaXRlbXMNCi0JZWNoby4g
IHhtbCAgICAgICAgdG8gbWFrZSBEb2N1dGlscy1uYXRpdmUgWE1MIGZpbGVzDQotCWVjaG8uICBw
c2V1ZG94bWwgIHRvIG1ha2UgcHNldWRveG1sLVhNTCBmaWxlcyBmb3IgZGlzcGxheSBwdXJwb3Nl
cw0KLQllY2hvLiAgbGlua2NoZWNrICB0byBjaGVjayBhbGwgZXh0ZXJuYWwgbGlua3MgZm9yIGlu
dGVncml0eQ0KLQllY2hvLiAgZG9jdGVzdCAgICB0byBydW4gYWxsIGRvY3Rlc3RzIGVtYmVkZGVk
IGluIHRoZSBkb2N1bWVudGF0aW9uIGlmIGVuYWJsZWQNCi0JZ290byBlbmQNCi0pDQotDQotaWYg
IiUxIiA9PSAiY2xlYW4iICgNCi0JZm9yIC9kICUlaSBpbiAoJUJVSUxERElSJVwqKSBkbyBybWRp
ciAvcSAvcyAlJWkNCi0JZGVsIC9xIC9zICVCVUlMRERJUiVcKg0KLQlnb3RvIGVuZA0KLSkNCi0N
Ci0NCi0lU1BISU5YQlVJTEQlIDI+IG51bA0KLWlmIGVycm9ybGV2ZWwgOTAwOSAoDQotCWVjaG8u
DQotCWVjaG8uVGhlICdzcGhpbngtYnVpbGQnIGNvbW1hbmQgd2FzIG5vdCBmb3VuZC4gTWFrZSBz
dXJlIHlvdSBoYXZlIFNwaGlueA0KLQllY2hvLmluc3RhbGxlZCwgdGhlbiBzZXQgdGhlIFNQSElO
WEJVSUxEIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHBvaW50DQotCWVjaG8udG8gdGhlIGZ1bGwg
cGF0aCBvZiB0aGUgJ3NwaGlueC1idWlsZCcgZXhlY3V0YWJsZS4gQWx0ZXJuYXRpdmVseSB5b3UN
Ci0JZWNoby5tYXkgYWRkIHRoZSBTcGhpbnggZGlyZWN0b3J5IHRvIFBBVEguDQotCWVjaG8uDQot
CWVjaG8uSWYgeW91IGRvbid0IGhhdmUgU3BoaW54IGluc3RhbGxlZCwgZ3JhYiBpdCBmcm9tDQot
CWVjaG8uaHR0cDovL3NwaGlueC1kb2Mub3JnLw0KLQlleGl0IC9iIDENCi0pDQotDQotaWYgIiUx
IiA9PSAiaHRtbCIgKA0KLQklU1BISU5YQlVJTEQlIC1iIGh0bWwgJUFMTFNQSElOWE9QVFMlICVC
VUlMRERJUiUvaHRtbA0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVj
aG8uQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2VzIGFyZSBpbiAlQlVJTERESVIlL2h0bWwu
DQotCWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gImRpcmh0bWwiICgNCi0JJVNQSElOWEJV
SUxEJSAtYiBkaXJodG1sICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2Rpcmh0bWwNCi0JaWYg
ZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlzaGVkLiBU
aGUgSFRNTCBwYWdlcyBhcmUgaW4gJUJVSUxERElSJS9kaXJodG1sLg0KLQlnb3RvIGVuZA0KLSkN
Ci0NCi1pZiAiJTEiID09ICJzaW5nbGVodG1sIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIgc2luZ2xl
aHRtbCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9zaW5nbGVodG1sDQotCWlmIGVycm9ybGV2
ZWwgMSBleGl0IC9iIDENCi0JZWNoby4NCi0JZWNoby5CdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwg
cGFnZXMgYXJlIGluICVCVUlMRERJUiUvc2luZ2xlaHRtbC4NCi0JZ290byBlbmQNCi0pDQotDQot
aWYgIiUxIiA9PSAicGlja2xlIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIgcGlja2xlICVBTExTUEhJ
TlhPUFRTJSAlQlVJTERESVIlL3BpY2tsZQ0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQot
CWVjaG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIHBp
Y2tsZSBmaWxlcy4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9PSAianNvbiIgKA0KLQkl
U1BISU5YQlVJTEQlIC1iIGpzb24gJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvanNvbg0KLQlp
ZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQ7
IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIEpTT04gZmlsZXMuDQotCWdvdG8gZW5kDQotKQ0KLQ0K
LWlmICIlMSIgPT0gImh0bWxoZWxwIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIgaHRtbGhlbHAgJUFM
TFNQSElOWE9QVFMlICVCVUlMRERJUiUvaHRtbGhlbHANCi0JaWYgZXJyb3JsZXZlbCAxIGV4aXQg
L2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBydW4gSFRN
TCBIZWxwIFdvcmtzaG9wIHdpdGggdGhlIF4NCi0uaGhwIHByb2plY3QgZmlsZSBpbiAlQlVJTERE
SVIlL2h0bWxoZWxwLg0KLQlnb3RvIGVuZA0KLSkNCi0NCi1pZiAiJTEiID09ICJxdGhlbHAiICgN
Ci0JJVNQSElOWEJVSUxEJSAtYiBxdGhlbHAgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvcXRo
ZWxwDQotCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4NCi0JZWNoby5CdWlsZCBm
aW5pc2hlZDsgbm93IHlvdSBjYW4gcnVuICJxY29sbGVjdGlvbmdlbmVyYXRvciIgd2l0aCB0aGUg
Xg0KLS5xaGNwIHByb2plY3QgZmlsZSBpbiAlQlVJTERESVIlL3F0aGVscCwgbGlrZSB0aGlzOg0K
LQllY2hvLl4+IHFjb2xsZWN0aW9uZ2VuZXJhdG9yICVCVUlMRERJUiVccXRoZWxwXGh0bWw1bGli
LnFoY3ANCi0JZWNoby5UbyB2aWV3IHRoZSBoZWxwIGZpbGU6DQotCWVjaG8uXj4gYXNzaXN0YW50
IC1jb2xsZWN0aW9uRmlsZSAlQlVJTERESVIlXHF0aGVscFxodG1sNWxpYi5naGMNCi0JZ290byBl
bmQNCi0pDQotDQotaWYgIiUxIiA9PSAiZGV2aGVscCIgKA0KLQklU1BISU5YQlVJTEQlIC1iIGRl
dmhlbHAgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvZGV2aGVscA0KLQlpZiBlcnJvcmxldmVs
IDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQuDQotCWdvdG8gZW5k
DQotKQ0KLQ0KLWlmICIlMSIgPT0gImVwdWIiICgNCi0JJVNQSElOWEJVSUxEJSAtYiBlcHViICVB
TExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2VwdWINCi0JaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2Ig
MQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlzaGVkLiBUaGUgZXB1YiBmaWxlIGlzIGluICVC
VUlMRERJUiUvZXB1Yi4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9PSAibGF0ZXgiICgN
Ci0JJVNQSElOWEJVSUxEJSAtYiBsYXRleCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9sYXRl
eA0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8uQnVpbGQgZmlu
aXNoZWQ7IHRoZSBMYVRlWCBmaWxlcyBhcmUgaW4gJUJVSUxERElSJS9sYXRleC4NCi0JZ290byBl
bmQNCi0pDQotDQotaWYgIiUxIiA9PSAibGF0ZXhwZGYiICgNCi0JJVNQSElOWEJVSUxEJSAtYiBs
YXRleCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9sYXRleA0KLQljZCAlQlVJTERESVIlL2xh
dGV4DQotCW1ha2UgYWxsLXBkZg0KLQljZCAlQlVJTERESVIlLy4uDQotCWVjaG8uDQotCWVjaG8u
QnVpbGQgZmluaXNoZWQ7IHRoZSBQREYgZmlsZXMgYXJlIGluICVCVUlMRERJUiUvbGF0ZXguDQot
CWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gImxhdGV4cGRmamEiICgNCi0JJVNQSElOWEJV
SUxEJSAtYiBsYXRleCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9sYXRleA0KLQljZCAlQlVJ
TERESVIlL2xhdGV4DQotCW1ha2UgYWxsLXBkZi1qYQ0KLQljZCAlQlVJTERESVIlLy4uDQotCWVj
aG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQ7IHRoZSBQREYgZmlsZXMgYXJlIGluICVCVUlMRERJ
UiUvbGF0ZXguDQotCWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gInRleHQiICgNCi0JJVNQ
SElOWEJVSUxEJSAtYiB0ZXh0ICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL3RleHQNCi0JaWYg
ZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlzaGVkLiBU
aGUgdGV4dCBmaWxlcyBhcmUgaW4gJUJVSUxERElSJS90ZXh0Lg0KLQlnb3RvIGVuZA0KLSkNCi0N
Ci1pZiAiJTEiID09ICJtYW4iICgNCi0JJVNQSElOWEJVSUxEJSAtYiBtYW4gJUFMTFNQSElOWE9Q
VFMlICVCVUlMRERJUiUvbWFuDQotCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4N
Ci0JZWNoby5CdWlsZCBmaW5pc2hlZC4gVGhlIG1hbnVhbCBwYWdlcyBhcmUgaW4gJUJVSUxERElS
JS9tYW4uDQotCWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gInRleGluZm8iICgNCi0JJVNQ
SElOWEJVSUxEJSAtYiB0ZXhpbmZvICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL3RleGluZm8N
Ci0JaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlz
aGVkLiBUaGUgVGV4aW5mbyBmaWxlcyBhcmUgaW4gJUJVSUxERElSJS90ZXhpbmZvLg0KLQlnb3Rv
IGVuZA0KLSkNCi0NCi1pZiAiJTEiID09ICJnZXR0ZXh0IiAoDQotCSVTUEhJTlhCVUlMRCUgLWIg
Z2V0dGV4dCAlSTE4TlNQSElOWE9QVFMlICVCVUlMRERJUiUvbG9jYWxlDQotCWlmIGVycm9ybGV2
ZWwgMSBleGl0IC9iIDENCi0JZWNoby4NCi0JZWNoby5CdWlsZCBmaW5pc2hlZC4gVGhlIG1lc3Nh
Z2UgY2F0YWxvZ3MgYXJlIGluICVCVUlMRERJUiUvbG9jYWxlLg0KLQlnb3RvIGVuZA0KLSkNCi0N
Ci1pZiAiJTEiID09ICJjaGFuZ2VzIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIgY2hhbmdlcyAlQUxM
U1BISU5YT1BUUyUgJUJVSUxERElSJS9jaGFuZ2VzDQotCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9i
IDENCi0JZWNoby4NCi0JZWNoby5UaGUgb3ZlcnZpZXcgZmlsZSBpcyBpbiAlQlVJTERESVIlL2No
YW5nZXMuDQotCWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gImxpbmtjaGVjayIgKA0KLQkl
U1BISU5YQlVJTEQlIC1iIGxpbmtjaGVjayAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9saW5r
Y2hlY2sNCi0JaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkxpbmsg
Y2hlY2sgY29tcGxldGU7IGxvb2sgZm9yIGFueSBlcnJvcnMgaW4gdGhlIGFib3ZlIG91dHB1dCBe
DQotb3IgaW4gJUJVSUxERElSJS9saW5rY2hlY2svb3V0cHV0LnR4dC4NCi0JZ290byBlbmQNCi0p
DQotDQotaWYgIiUxIiA9PSAiZG9jdGVzdCIgKA0KLQklU1BISU5YQlVJTEQlIC1iIGRvY3Rlc3Qg
JUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvZG9jdGVzdA0KLQlpZiBlcnJvcmxldmVsIDEgZXhp
dCAvYiAxDQotCWVjaG8uDQotCWVjaG8uVGVzdGluZyBvZiBkb2N0ZXN0cyBpbiB0aGUgc291cmNl
cyBmaW5pc2hlZCwgbG9vayBhdCB0aGUgXg0KLXJlc3VsdHMgaW4gJUJVSUxERElSJS9kb2N0ZXN0
L291dHB1dC50eHQuDQotCWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gInhtbCIgKA0KLQkl
U1BISU5YQlVJTEQlIC1iIHhtbCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS94bWwNCi0JaWYg
ZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlzaGVkLiBU
aGUgWE1MIGZpbGVzIGFyZSBpbiAlQlVJTERESVIlL3htbC4NCi0JZ290byBlbmQNCi0pDQotDQot
aWYgIiUxIiA9PSAicHNldWRveG1sIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIgcHNldWRveG1sICVB
TExTUEhJTlhPUFRTJSAlQlVJTERESVIlL3BzZXVkb3htbA0KLQlpZiBlcnJvcmxldmVsIDEgZXhp
dCAvYiAxDQotCWVjaG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQuIFRoZSBwc2V1ZG8tWE1MIGZp
bGVzIGFyZSBpbiAlQlVJTERESVIlL3BzZXVkb3htbC4NCi0JZ290byBlbmQNCi0pDQotDQotOmVu
ZA0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvaHRtbDVsaWIvZG9jL21vZHVsZXMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9kb2MvbW9kdWxlcy5yc3QKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5ZmJjYzg2YmMxMzdjYmNiOGFmM2MxNzRmM2Q4
YzM0ODIyZmJiN2YuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9kb2MvbW9kdWxlcy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWh0bWw1
bGliCi09PT09PT09PQotCi0uLiB0b2N0cmVlOjoKLSAgIDptYXhkZXB0aDogNAotCi0gICBodG1s
NWxpYgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9odG1sNWxpYi9kb2MvbW92aW5ncGFydHMucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9kb2MvbW92aW5ncGFy
dHMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjUzOTc4NWE3ZWM5MTU5Mjkw
YWExZmZkNzNlZTVjYmJmOWNjZmFmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvaHRtbDVsaWIvZG9jL21vdmluZ3BhcnRzLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDIw
OSArMCwwIEBACi1UaGUgbW92aW5nIHBhcnRzCi09PT09PT09PT09PT09PT09Ci0KLWh0bWw1bGli
IGNvbnNpc3RzIG9mIGEgbnVtYmVyIG9mIGNvbXBvbmVudHMsIHdoaWNoIGFyZSByZXNwb25zaWJs
ZSBmb3IKLWhhbmRsaW5nIGl0cyBmZWF0dXJlcy4KLQotCi1UcmVlIGJ1aWxkZXJzCi0tLS0tLS0t
LS0tLS0tCi0KLVRoZSBwYXJzZXIgcmVhZHMgSFRNTCBieSB0b2tlbml6aW5nIHRoZSBjb250ZW50
IGFuZCBidWlsZGluZyBhIHRyZWUgdGhhdAotdGhlIHVzZXIgY2FuIGxhdGVyIGFjY2Vzcy4gVGhl
cmUgYXJlIHRocmVlIG1haW4gdHlwZXMgb2YgdHJlZXMgdGhhdAotaHRtbDVsaWIgY2FuIGJ1aWxk
OgotCi0qIGBgZXRyZWVgYCAtIHRoaXMgaXMgdGhlIGRlZmF1bHQ7IGJ1aWxkcyBhIHRyZWUgYmFz
ZWQgb24gYGB4bWwuZXRyZWVgYCwKLSAgd2hpY2ggY2FuIGJlIGZvdW5kIGluIHRoZSBzdGFuZGFy
ZCBsaWJyYXJ5LiBXaGVuZXZlciBwb3NzaWJsZSwgdGhlCi0gIGFjY2VsZXJhdGVkIGBgRWxlbWVu
dFRyZWVgYCBpbXBsZW1lbnRhdGlvbiAoaS5lLgotICBgYHhtbC5ldHJlZS5jRWxlbWVudFRyZWVg
YCBvbiBQeXRob24gMi54KSBpcyB1c2VkLgotCi0qIGBgZG9tYGAgLSBidWlsZHMgYSB0cmVlIGJh
c2VkIG9uIGBgeG1sLmRvbS5taW5pZG9tYGAuCi0KLSogYGBseG1sLmV0cmVlYGAgLSB1c2VzIGx4
bWwncyBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYGBFbGVtZW50VHJlZWBgCi0gIEFQSS4gIFRoZSBw
ZXJmb3JtYW5jZSBnYWlucyBhcmUgcmVsYXRpdmVseSBzbWFsbCBjb21wYXJlZCB0byB1c2luZyB0
aGUKLSAgYWNjZWxlcmF0ZWQgYGBFbGVtZW50VHJlZWBgIG1vZHVsZS4KLQotWW91IGNhbiBzcGVj
aWZ5IHRoZSBidWlsZGVyIGJ5IG5hbWUgd2hlbiB1c2luZyB0aGUgc2hvcnRoYW5kIEFQSToKLQot
Li4gY29kZS1ibG9jazo6IHB5dGhvbgotCi0gIGltcG9ydCBodG1sNWxpYgotICB3aXRoIG9wZW4o
Im15ZG9jdW1lbnQuaHRtbCIsICJyYiIpIGFzIGY6Ci0gICAgICBseG1sX2V0cmVlX2RvY3VtZW50
ID0gaHRtbDVsaWIucGFyc2UoZiwgdHJlZWJ1aWxkZXI9Imx4bWwiKQotCi1XaGVuIGluc3RhbnRp
YXRpbmcgYSBwYXJzZXIgb2JqZWN0LCB5b3UgaGF2ZSB0byBwYXNzIGEgdHJlZSBidWlsZGVyCi1j
bGFzcyBpbiB0aGUgYGB0cmVlYGAga2V5d29yZCBhdHRyaWJ1dGU6Ci0KLS4uIGNvZGUtYmxvY2s6
OiBweXRob24KLQotICBpbXBvcnQgaHRtbDVsaWIKLSAgcGFyc2VyID0gaHRtbDVsaWIuSFRNTFBh
cnNlcih0cmVlPVNvbWVUcmVlQnVpbGRlcikKLSAgZG9jdW1lbnQgPSBwYXJzZXIucGFyc2UoIjxw
PkhlbGxvIFdvcmxkISIpCi0KLVRvIGdldCBhIGJ1aWxkZXIgY2xhc3MgYnkgbmFtZSwgdXNlIHRo
ZSBgYGdldFRyZWVCdWlsZGVyYGAgZnVuY3Rpb246Ci0KLS4uIGNvZGUtYmxvY2s6OiBweXRob24K
LQotICBpbXBvcnQgaHRtbDVsaWIKLSAgcGFyc2VyID0gaHRtbDVsaWIuSFRNTFBhcnNlcih0cmVl
PWh0bWw1bGliLmdldFRyZWVCdWlsZGVyKCJkb20iKSkKLSAgbWluaWRvbV9kb2N1bWVudCA9IHBh
cnNlci5wYXJzZSgiPHA+SGVsbG8gV29ybGQhIikKLQotVGhlIGltcGxlbWVudGF0aW9uIG9mIGJ1
aWxkZXJzIGNhbiBiZSBmb3VuZCBpbiBgaHRtbDVsaWIvdHJlZWJ1aWxkZXJzLwotPGh0dHBzOi8v
Z2l0aHViLmNvbS9odG1sNWxpYi9odG1sNWxpYi1weXRob24vdHJlZS9tYXN0ZXIvaHRtbDVsaWIv
dHJlZWJ1aWxkZXJzPmBfLgotCi0KLVRyZWUgd2Fsa2VycwotLS0tLS0tLS0tLS0tCi0KLU9uY2Ug
YSB0cmVlIGlzIHJlYWR5LCB5b3UgY2FuIHdvcmsgb24gaXQgZWl0aGVyIG1hbnVhbGx5LCBvciB1
c2luZwotYSB0cmVlIHdhbGtlciwgd2hpY2ggcHJvdmlkZXMgYSBzdHJlYW1pbmcgdmlldyBvZiB0
aGUgdHJlZS4gaHRtbDVsaWIKLXByb3ZpZGVzIHdhbGtlcnMgZm9yIGFsbCB0aHJlZSBzdXBwb3J0
ZWQgdHlwZXMgb2YgdHJlZXMgKGBgZXRyZWVgYCwKLWBgZG9tYGAgYW5kIGBgbHhtbGBgKS4KLQot
VGhlIGltcGxlbWVudGF0aW9uIG9mIHdhbGtlcnMgY2FuIGJlIGZvdW5kIGluIGBodG1sNWxpYi90
cmVld2Fsa2Vycy8KLTxodHRwczovL2dpdGh1Yi5jb20vaHRtbDVsaWIvaHRtbDVsaWItcHl0aG9u
L3RyZWUvbWFzdGVyL2h0bWw1bGliL3RyZWV3YWxrZXJzPmBfLgotCi1XYWxrZXJzIG1ha2UgY29u
c3VtaW5nIEhUTUwgZWFzaWVyLiBodG1sNWxpYiB1c2VzIHRoZW0gdG8gcHJvdmlkZSB5b3UKLXdp
dGggaGFzIGEgY291cGxlIG9mIGhhbmR5IHRvb2xzLgotCi0KLUhUTUxTZXJpYWxpemVyCi1+fn5+
fn5+fn5+fn5+fgotCi1UaGUgc2VyaWFsaXplciBsZXRzIHlvdSB3cml0ZSBIVE1MIGJhY2sgYXMg
YSBzdHJlYW0gb2YgYnl0ZXMuCi0KLS4uIGNvZGUtYmxvY2s6OiBweWNvbgotCi0gID4+PiBpbXBv
cnQgaHRtbDVsaWIKLSAgPj4+IGVsZW1lbnQgPSBodG1sNWxpYi5wYXJzZSgnPHAgeG1sOmxhbmc9
InBsIj5XaXRhbSB3c3p5c3RraWNoJykKLSAgPj4+IHdhbGtlciA9IGh0bWw1bGliLmdldFRyZWVX
YWxrZXIoImV0cmVlIikKLSAgPj4+IHN0cmVhbSA9IHdhbGtlcihlbGVtZW50KQotICA+Pj4gcyA9
IGh0bWw1bGliLnNlcmlhbGl6ZXIuSFRNTFNlcmlhbGl6ZXIoKQotICA+Pj4gb3V0cHV0ID0gcy5z
ZXJpYWxpemUoc3RyZWFtKQotICA+Pj4gZm9yIGl0ZW0gaW4gb3V0cHV0OgotICAuLi4gICBwcmlu
dCgiJXIiICUgaXRlbSkKLSAgJzxwJwotICAnICcKLSAgJ3htbDpsYW5nJwotICAnPScKLSAgJ3Bs
JwotICAnPicKLSAgJ1dpdGFtIHdzenlzdGtpY2gnCi0KLVlvdSBjYW4gY3VzdG9taXplIHRoZSBz
ZXJpYWxpemVyIGJlaGF2aW91ciBpbiBhIHZhcmlldHkgb2Ygd2F5cywgY29uc3VsdAotdGhlIDpj
bGFzczpgfmh0bWw1bGliLnNlcmlhbGl6ZXIuaHRtbHNlcmlhbGl6ZXIuSFRNTFNlcmlhbGl6ZXJg
Ci1kb2N1bWVudGF0aW9uLgotCi0KLUZpbHRlcnMKLX5+fn5+fn4KLQotWW91IGNhbiBhbHRlciB0
aGUgc3RyZWFtIGNvbnRlbnQgd2l0aCBmaWx0ZXJzIHByb3ZpZGVkIGJ5IGh0bWw1bGliOgotCi0q
IDpjbGFzczpgYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5GaWx0ZXIKLSAgPGh0bWw1bGliLmZpbHRl
cnMuYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5GaWx0ZXI+YCBzb3J0cyBhdHRyaWJ1dGVzIG9uCi0g
IHRhZ3MgdG8gYmUgaW4gYWxwaGFiZXRpY2FsIG9yZGVyCi0KLSogOmNsYXNzOmBpbmplY3RfbWV0
YV9jaGFyc2V0LkZpbHRlcgotICA8aHRtbDVsaWIuZmlsdGVycy5pbmplY3RfbWV0YV9jaGFyc2V0
LkZpbHRlcj5gIHNldHMgYSB1c2VyLXNwZWNpZmllZAotICBlbmNvZGluZyBpbiB0aGUgY29ycmVj
dCBgYDxtZXRhPmBgIHRhZyBpbiB0aGUgYGA8aGVhZD5gYCBzZWN0aW9uIG9mCi0gIHRoZSBkb2N1
bWVudAotCi0qIDpjbGFzczpgbGludC5GaWx0ZXIgPGh0bWw1bGliLmZpbHRlcnMubGludC5GaWx0
ZXI+YCByYWlzZXMKLSAgYGBMaW50RXJyb3JgYCBleGNlcHRpb25zIG9uIGludmFsaWQgdGFnIGFu
ZCBhdHRyaWJ1dGUgbmFtZXMsIGludmFsaWQKLSAgUENEQVRBLCBldGMuCi0KLSogOmNsYXNzOmBv
cHRpb25hbHRhZ3MuRmlsdGVyIDxodG1sNWxpYi5maWx0ZXJzLm9wdGlvbmFsdGFncy5GaWx0ZXI+
YAotICByZW1vdmVzIHRhZ3MgZnJvbSB0aGUgc3RyZWFtIHdoaWNoIGFyZSBub3QgbmVjZXNzYXJ5
IHRvIHByb2R1Y2UgdmFsaWQKLSAgSFRNTAotCi0qIDpjbGFzczpgc2FuaXRpemVyLkZpbHRlciA8
aHRtbDVsaWIuZmlsdGVycy5zYW5pdGl6ZXIuRmlsdGVyPmAgcmVtb3ZlcwotICB1bnNhZmUgbWFy
a3VwIGFuZCBDU1MuIEVsZW1lbnRzIHRoYXQgYXJlIGtub3duIHRvIGJlIHNhZmUgYXJlIHBhc3Nl
ZAotICB0aHJvdWdoIGFuZCB0aGUgcmVzdCBpcyBjb252ZXJ0ZWQgdG8gdmlzaWJsZSB0ZXh0LiBU
aGUgZGVmYXVsdAotICBjb25maWd1cmF0aW9uIG9mIHRoZSBzYW5pdGl6ZXIgZm9sbG93cyB0aGUg
YFdIQVRXRyBTYW5pdGl6YXRpb24gUnVsZXMKLSAgPGh0dHA6Ly93aWtpLndoYXR3Zy5vcmcvd2lr
aS9TYW5pdGl6YXRpb25fcnVsZXM+YF8uCi0KLSogOmNsYXNzOmB3aGl0ZXNwYWNlLkZpbHRlciA8
aHRtbDVsaWIuZmlsdGVycy53aGl0ZXNwYWNlLkZpbHRlcj5gCi0gIGNvbGxhcHNlcyBhbGwgd2hp
dGVzcGFjZSBjaGFyYWN0ZXJzIHRvIHNpbmdsZSBzcGFjZXMgdW5sZXNzIHRoZXkncmUgaW4KLSAg
YGA8cHJlLz5gYCBvciBgYHRleHRhcmVhYGAgdGFncy4KLQotVG8gdXNlIGEgZmlsdGVyLCBzaW1w
bHkgd3JhcCBpdCBhcm91bmQgYSBzdHJlYW06Ci0KLS4uIGNvZGUtYmxvY2s6OiBweXRob24KLQot
ICA+Pj4gaW1wb3J0IGh0bWw1bGliCi0gID4+PiBmcm9tIGh0bWw1bGliLmZpbHRlcnMgaW1wb3J0
IHNhbml0aXplcgotICA+Pj4gZG9tID0gaHRtbDVsaWIucGFyc2UoIjxwPjxzY3JpcHQ+YWxlcnQo
J0JvbyEnKSIsIHRyZWVidWlsZGVyPSJkb20iKQotICA+Pj4gd2Fsa2VyID0gaHRtbDVsaWIuZ2V0
VHJlZVdhbGtlcigiZG9tIikKLSAgPj4+IHN0cmVhbSA9IHdhbGtlcihkb20pCi0gID4+PiBzYW5l
X3N0cmVhbSA9IHNhbml0aXplci5GaWx0ZXIoc3RyZWFtKSBjbGVhbl9zdHJlYW0gPSBzYW5pdGl6
ZXIuRmlsdGVyKHN0cmVhbSkKLQotCi1UcmVlIGFkYXB0ZXJzCi0tLS0tLS0tLS0tLS0tCi0KLVVz
ZWQgdG8gdHJhbnNsYXRlIG9uZSB0eXBlIG9mIHRyZWUgdG8gYW5vdGhlci4gTW9yZSBkb2N1bWVu
dGF0aW9uCi1wZW5kaW5nLCBzb3JyeS4KLQotCi1FbmNvZGluZyBkaXNjb3ZlcnkKLS0tLS0tLS0t
LS0tLS0tLS0tLQotCi1QYXJzZWQgdHJlZXMgYXJlIGFsd2F5cyBVbmljb2RlLiBIb3dldmVyIGEg
bGFyZ2UgdmFyaWV0eSBvZiBpbnB1dAotZW5jb2RpbmdzIGFyZSBzdXBwb3J0ZWQuIFRoZSBlbmNv
ZGluZyBvZiB0aGUgZG9jdW1lbnQgaXMgZGV0ZXJtaW5lZCBpbgotdGhlIGZvbGxvd2luZyB3YXk6
Ci0KLSogVGhlIGVuY29kaW5nIG1heSBiZSBleHBsaWNpdGx5IHNwZWNpZmllZCBieSBwYXNzaW5n
IHRoZSBuYW1lIG9mIHRoZQotICBlbmNvZGluZyBhcyB0aGUgZW5jb2RpbmcgcGFyYW1ldGVyIHRv
IHRoZQotICA6bWV0aDpgfmh0bWw1bGliLmh0bWw1cGFyc2VyLkhUTUxQYXJzZXIucGFyc2VgIG1l
dGhvZCBvbgotICBgYEhUTUxQYXJzZXJgYCBvYmplY3RzLgotCi0qIElmIG5vIGVuY29kaW5nIGlz
IHNwZWNpZmllZCwgdGhlIHBhcnNlciB3aWxsIGF0dGVtcHQgdG8gZGV0ZWN0IHRoZQotICBlbmNv
ZGluZyBmcm9tIGEgYGA8bWV0YT5gYCAgZWxlbWVudCBpbiB0aGUgZmlyc3QgNTEyIGJ5dGVzIG9m
IHRoZQotICBkb2N1bWVudCAodGhpcyBpcyBvbmx5IGEgcGFydGlhbCBpbXBsZW1lbnRhdGlvbiBv
ZiB0aGUgY3VycmVudCBIVE1MCi0gIDUgc3BlY2lmaWNhdGlvbikuCi0KLSogSWYgbm8gZW5jb2Rp
bmcgY2FuIGJlIGZvdW5kIGFuZCB0aGUgY2hhcmRldCBsaWJyYXJ5IGlzIGF2YWlsYWJsZSwgYW4K
LSAgYXR0ZW1wdCB3aWxsIGJlIG1hZGUgdG8gc25pZmYgdGhlIGVuY29kaW5nIGZyb20gdGhlIGJ5
dGUgcGF0dGVybi4KLQotKiBJZiBhbGwgZWxzZSBmYWlscywgdGhlIGRlZmF1bHQgZW5jb2Rpbmcg
d2lsbCBiZSB1c2VkLiBUaGlzIGlzIHVzdWFsbHkKLSAgYFdpbmRvd3MtMTI1MiA8aHR0cDovL2Vu
Lndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzLTEyNTI+YF8sIHdoaWNoIGlzCi0gIGEgY29tbW9u
IGZhbGxiYWNrIHVzZWQgYnkgV2ViIGJyb3dzZXJzLgotCi0KLVRva2VuaXplcnMKLS0tLS0tLS0t
LS0KLQotVGhlIHBhcnQgb2YgdGhlIHBhcnNlciByZXNwb25zaWJsZSBmb3IgdHJhbnNsYXRpbmcg
YSByYXcgaW5wdXQgc3RyZWFtCi1pbnRvIG1lYW5pbmdmdWwgdG9rZW5zIGlzIHRoZSB0b2tlbml6
ZXIuIEN1cnJlbnRseSBodG1sNWxpYiBwcm92aWRlcwotdHdvLgotCi1UbyBzZXQgdXAgYSB0b2tl
bml6ZXIsIHNpbXBseSBwYXNzIGl0IHdoZW4gaW5zdGFudGlhdGluZwotYSA6Y2xhc3M6YH5odG1s
NWxpYi5odG1sNXBhcnNlci5IVE1MUGFyc2VyYDoKLQotLi4gY29kZS1ibG9jazo6IHB5dGhvbgot
Ci0gIGltcG9ydCBodG1sNWxpYgotICBmcm9tIGh0bWw1bGliIGltcG9ydCBzYW5pdGl6ZXIKLQot
ICBwID0gaHRtbDVsaWIuSFRNTFBhcnNlcih0b2tlbml6ZXI9c2FuaXRpemVyLkhUTUxTYW5pdGl6
ZXIpCi0gIHAucGFyc2UoIjxwPlN1cnByaXNlITxzY3JpcHQ+YWxlcnQoJ0JvbyEnKTs8L3Njcmlw
dD4iKQotCi1IVE1MVG9rZW5pemVyCi1+fn5+fn5+fn5+fn5+Ci0KLVRoaXMgaXMgdGhlIGRlZmF1
bHQgdG9rZW5pemVyLCB0aGUgaGVhcnQgb2YgaHRtbDVsaWIuIFRoZSBpbXBsZW1lbnRhdGlvbgot
Y2FuIGJlIGZvdW5kIGluIGBodG1sNWxpYi90b2tlbml6ZXIucHkKLTxodHRwczovL2dpdGh1Yi5j
b20vaHRtbDVsaWIvaHRtbDVsaWItcHl0aG9uL2Jsb2IvbWFzdGVyL2h0bWw1bGliL3Rva2VuaXpl
ci5weT5gXy4KLQotSFRNTFNhbml0aXplcgotfn5+fn5+fn5+fn5+fgotCi1UaGlzIGlzIGEgdG9r
ZW5pemVyIHRoYXQgcmVtb3ZlcyB1bnNhZmUgbWFya3VwIGFuZCBDU1Mgc3R5bGVzIGZyb20gdGhl
Ci1pbnB1dC4gRWxlbWVudHMgdGhhdCBhcmUga25vd24gdG8gYmUgc2FmZSBhcmUgcGFzc2VkIHRo
cm91Z2ggYW5kIHRoZQotcmVzdCBpcyBjb252ZXJ0ZWQgdG8gdmlzaWJsZSB0ZXh0LiBUaGUgZGVm
YXVsdCBjb25maWd1cmF0aW9uIG9mIHRoZQotc2FuaXRpemVyIGZvbGxvd3MgdGhlIGBXSEFUV0cg
U2FuaXRpemF0aW9uIFJ1bGVzCi08aHR0cDovL3dpa2kud2hhdHdnLm9yZy93aWtpL1Nhbml0aXph
dGlvbl9ydWxlcz5gXy4KLQotVGhlIGltcGxlbWVudGF0aW9uIGNhbiBiZSBmb3VuZCBpbiBgaHRt
bDVsaWIvc2FuaXRpemVyLnB5Ci08aHR0cHM6Ly9naXRodWIuY29tL2h0bWw1bGliL2h0bWw1bGli
LXB5dGhvbi9ibG9iL21hc3Rlci9odG1sNWxpYi9zYW5pdGl6ZXIucHk+YF8uCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1
bGliL2RvYy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBhYTliMzlmZmQ5MzhkM2FkYWFjZjI0MDYyYmJkZTE2NDU1YmIw
MmNiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9j
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9kb2MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9jaGFuZ2VzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2NvbmYucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2Rv
Yy9odG1sNWxpYi5maWx0ZXJzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2h0bWw1bGliLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2h0bWw1
bGliLnNlcmlhbGl6ZXIucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9odG1sNWxpYi9kb2MvaHRtbDVsaWIudHJlZWJ1aWxkZXJzLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
ZG9jL2h0bWw1bGliLnRyZWV3YWxrZXJzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2luZGV4LnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL2xp
Y2Vuc2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9odG1sNWxpYi9kb2MvbWFrZS5iYXQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RvYy9tb2R1bGVzLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvZG9jL21v
dmluZ3BhcnRzLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9mbGFrZTgtcnVuLnNoIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9mbGFrZTgtcnVu
LnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMWE1ODdkMzUwNjc2OWVhMTFmZjNh
MDBhNGNmY2M5YjhlY2ZmMmZlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvaHRtbDVsaWIvZmxha2U4LXJ1bi5zaAorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAK
LSMhL2Jpbi9iYXNoIC1lCi0KLWlmIFtbICEgLXggJCh3aGljaCBmbGFrZTgpIF1dOyB0aGVuCi0g
IGVjaG8gImZhdGFsOiBmbGFrZTggbm90IGZvdW5kIG9uICRQQVRILiBFeGl0aW5nLiIKLSAgZXhp
dCAxCi1maQotCi1pZiBbWyAkVFJBVklTICE9ICJ0cnVlIiB8fCAkRkxBS0UgPT0gInRydWUiIF1d
OyB0aGVuCi0gIGZpbmQgaHRtbDVsaWIvIC1uYW1lICcqLnB5JyAtYW5kIC1ub3QgLW5hbWUgJ2Nv
bnN0YW50cy5weScgLXByaW50MCB8IHhhcmdzIC0wIGZsYWtlOCAtLWlnbm9yZT1FNTAxCi0gIGZs
YWtlMT0kPwotICBmbGFrZTggLS1tYXgtbGluZS1sZW5ndGg9OTkgLS1pZ25vcmU9RTEyNiBodG1s
NWxpYi9jb25zdGFudHMucHkKLSAgZmxha2UyPSQ/Ci0gIGV4aXQgJFskZmxha2UxIHx8ICRmbGFr
ZTJdCi1maQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL19faW5pdF9fLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9o
dG1sNWxpYi9maWx0ZXJzL19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9fX2lu
aXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9f
YmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9fYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggYzdkYmFlZDBmYWI1YWZiNGY4OTQ3YjI0ZGQxNzVkMjIzOWQzNWQ2Yi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL2Zp
bHRlcnMvX2Jhc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1mcm9tIF9fZnV0
dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVuaWNvZGVfbGl0ZXJhbHMK
LQotCi1jbGFzcyBGaWx0ZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291cmNl
KToKLSAgICAgICAgc2VsZi5zb3VyY2UgPSBzb3VyY2UKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5zb3VyY2UpCi0KLSAgICBkZWYgX19nZXRhdHRy
X18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYuc291cmNlLCBuYW1l
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL2FscGhhYmV0aWNhbGF0dHJpYnV0ZXMu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0
bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVkNjk5NmMxZDliMGRjYzU0NjJmM2UxY2M4ZTRlMTUz
Y2I0MTRjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGli
L2h0bWw1bGliL2ZpbHRlcnMvYWxwaGFiZXRpY2FsYXR0cmlidXRlcy5weQorKysgL2Rldi9udWxs
CkBAIC0xLDIwICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0
LCBkaXZpc2lvbiwgdW5pY29kZV9saXRlcmFscwotCi1mcm9tIC4gaW1wb3J0IF9iYXNlCi0KLXRy
eToKLSAgICBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotZXhjZXB0IEltcG9y
dEVycm9yOgotICAgIGZyb20gb3JkZXJlZGRpY3QgaW1wb3J0IE9yZGVyZWREaWN0Ci0KLQotY2xh
c3MgRmlsdGVyKF9iYXNlLkZpbHRlcik6Ci0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAg
ICBmb3IgdG9rZW4gaW4gX2Jhc2UuRmlsdGVyLl9faXRlcl9fKHNlbGYpOgotICAgICAgICAgICAg
aWYgdG9rZW5bInR5cGUiXSBpbiAoIlN0YXJ0VGFnIiwgIkVtcHR5VGFnIik6Ci0gICAgICAgICAg
ICAgICAgYXR0cnMgPSBPcmRlcmVkRGljdCgpCi0gICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZh
bHVlIGluIHNvcnRlZCh0b2tlblsiZGF0YSJdLml0ZW1zKCksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBrZXk9bGFtYmRhIHg6IHhbMF0pOgotICAgICAgICAgICAg
ICAgICAgICBhdHRyc1tuYW1lXSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgdG9rZW5bImRhdGEi
XSA9IGF0dHJzCi0gICAgICAgICAgICB5aWVsZCB0b2tlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxp
Yi9maWx0ZXJzL2luamVjdF9tZXRhX2NoYXJzZXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvaW5q
ZWN0X21ldGFfY2hhcnNldC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2EzM2I3
MGI1MzA3ZTY5ZGRjYWYxZDBkNjNmNDNlYTY0ZmE2NTI4YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvaW5qZWN0X21ldGFf
Y2hhcnNldC5weQorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgdW5pY29kZV9saXRlcmFscwotCi1m
cm9tIC4gaW1wb3J0IF9iYXNlCi0KLQotY2xhc3MgRmlsdGVyKF9iYXNlLkZpbHRlcik6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZSwgZW5jb2RpbmcpOgotICAgICAgICBfYmFzZS5GaWx0
ZXIuX19pbml0X18oc2VsZiwgc291cmNlKQotICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2Rp
bmcKLQotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgc3RhdGUgPSAicHJlX2hlYWQi
Ci0gICAgICAgIG1ldGFfZm91bmQgPSAoc2VsZi5lbmNvZGluZyBpcyBOb25lKQotICAgICAgICBw
ZW5kaW5nID0gW10KLQotICAgICAgICBmb3IgdG9rZW4gaW4gX2Jhc2UuRmlsdGVyLl9faXRlcl9f
KHNlbGYpOgotICAgICAgICAgICAgdHlwZSA9IHRva2VuWyJ0eXBlIl0KLSAgICAgICAgICAgIGlm
IHR5cGUgPT0gIlN0YXJ0VGFnIjoKLSAgICAgICAgICAgICAgICBpZiB0b2tlblsibmFtZSJdLmxv
d2VyKCkgPT0gImhlYWQiOgotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICJpbl9oZWFkIgot
Ci0gICAgICAgICAgICBlbGlmIHR5cGUgPT0gIkVtcHR5VGFnIjoKLSAgICAgICAgICAgICAgICBp
ZiB0b2tlblsibmFtZSJdLmxvd2VyKCkgPT0gIm1ldGEiOgotICAgICAgICAgICAgICAgICAgICAj
IHJlcGxhY2UgY2hhcnNldCB3aXRoIGFjdHVhbCBlbmNvZGluZwotICAgICAgICAgICAgICAgICAg
ICBoYXNfaHR0cF9lcXVpdl9jb250ZW50X3R5cGUgPSBGYWxzZQotICAgICAgICAgICAgICAgICAg
ICBmb3IgKG5hbWVzcGFjZSwgbmFtZSksIHZhbHVlIGluIHRva2VuWyJkYXRhIl0uaXRlbXMoKToK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWVzcGFjZSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICAgICAg
ZWxpZiBuYW1lLmxvd2VyKCkgPT0gJ2NoYXJzZXQnOgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRva2VuWyJkYXRhIl1bKG5hbWVzcGFjZSwgbmFtZSldID0gc2VsZi5lbmNvZGluZwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFfZm91bmQgPSBUcnVlCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgbmFtZSA9
PSAnaHR0cC1lcXVpdicgYW5kIHZhbHVlLmxvd2VyKCkgPT0gJ2NvbnRlbnQtdHlwZSc6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgaGFzX2h0dHBfZXF1aXZfY29udGVudF90eXBlID0gVHJ1
ZQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYg
aGFzX2h0dHBfZXF1aXZfY29udGVudF90eXBlIGFuZCAoTm9uZSwgImNvbnRlbnQiKSBpbiB0b2tl
blsiZGF0YSJdOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWyJkYXRhIl1bKE5v
bmUsICJjb250ZW50IildID0gJ3RleHQvaHRtbDsgY2hhcnNldD0lcycgJSBzZWxmLmVuY29kaW5n
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YV9mb3VuZCA9IFRydWUKLQotICAgICAg
ICAgICAgICAgIGVsaWYgdG9rZW5bIm5hbWUiXS5sb3dlcigpID09ICJoZWFkIiBhbmQgbm90IG1l
dGFfZm91bmQ6Ci0gICAgICAgICAgICAgICAgICAgICMgaW5zZXJ0IG1ldGEgaW50byBlbXB0eSBo
ZWFkCi0gICAgICAgICAgICAgICAgICAgIHlpZWxkIHsidHlwZSI6ICJTdGFydFRhZyIsICJuYW1l
IjogImhlYWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImRhdGEiOiB0b2tlblsiZGF0
YSJdfQotICAgICAgICAgICAgICAgICAgICB5aWVsZCB7InR5cGUiOiAiRW1wdHlUYWciLCAibmFt
ZSI6ICJtZXRhIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJkYXRhIjogeyhOb25lLCAi
Y2hhcnNldCIpOiBzZWxmLmVuY29kaW5nfX0KLSAgICAgICAgICAgICAgICAgICAgeWllbGQgeyJ0
eXBlIjogIkVuZFRhZyIsICJuYW1lIjogImhlYWQifQotICAgICAgICAgICAgICAgICAgICBtZXRh
X2ZvdW5kID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAg
ICBlbGlmIHR5cGUgPT0gIkVuZFRhZyI6Ci0gICAgICAgICAgICAgICAgaWYgdG9rZW5bIm5hbWUi
XS5sb3dlcigpID09ICJoZWFkIiBhbmQgcGVuZGluZzoKLSAgICAgICAgICAgICAgICAgICAgIyBp
bnNlcnQgbWV0YSBpbnRvIGhlYWQgKGlmIG5lY2Vzc2FyeSkgYW5kIGZsdXNoIHBlbmRpbmcgcXVl
dWUKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgcGVuZGluZy5wb3AoMCkKLSAgICAgICAgICAg
ICAgICAgICAgaWYgbm90IG1ldGFfZm91bmQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5aWVs
ZCB7InR5cGUiOiAiRW1wdHlUYWciLCAibmFtZSI6ICJtZXRhIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiZGF0YSI6IHsoTm9uZSwgImNoYXJzZXQiKTogc2VsZi5lbmNvZGluZ319
Ci0gICAgICAgICAgICAgICAgICAgIHdoaWxlIHBlbmRpbmc6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICB5aWVsZCBwZW5kaW5nLnBvcCgwKQotICAgICAgICAgICAgICAgICAgICBtZXRhX2ZvdW5k
ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBzdGF0ZSA9ICJwb3N0X2hlYWQiCi0KLSAgICAg
ICAgICAgIGlmIHN0YXRlID09ICJpbl9oZWFkIjoKLSAgICAgICAgICAgICAgICBwZW5kaW5nLmFw
cGVuZCh0b2tlbikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgeWllbGQgdG9r
ZW4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9saW50LnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9m
aWx0ZXJzL2xpbnQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYzk5YTRiYTdj
MDEwZmM0MmRmMzBhY2NlNzE1OTg3MTFkYmNjNWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL2xpbnQucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw5MyArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydCwgZGl2aXNpb24sIHVuaWNvZGVfbGl0ZXJhbHMKLQotZnJvbSBnZXR0ZXh0IGltcG9ydCBn
ZXR0ZXh0Ci1fID0gZ2V0dGV4dAotCi1mcm9tIC4gaW1wb3J0IF9iYXNlCi1mcm9tIC4uY29uc3Rh
bnRzIGltcG9ydCBjZGF0YUVsZW1lbnRzLCByY2RhdGFFbGVtZW50cywgdm9pZEVsZW1lbnRzCi0K
LWZyb20gLi5jb25zdGFudHMgaW1wb3J0IHNwYWNlQ2hhcmFjdGVycwotc3BhY2VDaGFyYWN0ZXJz
ID0gIiIuam9pbihzcGFjZUNoYXJhY3RlcnMpCi0KLQotY2xhc3MgTGludEVycm9yKEV4Y2VwdGlv
bik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIEZpbHRlcihfYmFzZS5GaWx0ZXIpOgotICAgIGRlZiBf
X2l0ZXJfXyhzZWxmKToKLSAgICAgICAgb3Blbl9lbGVtZW50cyA9IFtdCi0gICAgICAgIGNvbnRl
bnRNb2RlbEZsYWcgPSAiUENEQVRBIgotICAgICAgICBmb3IgdG9rZW4gaW4gX2Jhc2UuRmlsdGVy
Ll9faXRlcl9fKHNlbGYpOgotICAgICAgICAgICAgdHlwZSA9IHRva2VuWyJ0eXBlIl0KLSAgICAg
ICAgICAgIGlmIHR5cGUgaW4gKCJTdGFydFRhZyIsICJFbXB0eVRhZyIpOgotICAgICAgICAgICAg
ICAgIG5hbWUgPSB0b2tlblsibmFtZSJdCi0gICAgICAgICAgICAgICAgaWYgY29udGVudE1vZGVs
RmxhZyAhPSAiUENEQVRBIjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGludEVycm9yKF8o
IlN0YXJ0VGFnIG5vdCBpbiBQQ0RBVEEgY29udGVudCBtb2RlbCBmbGFnOiAlKHRhZylzIikgJSB7
InRhZyI6IG5hbWV9KQotICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKG5hbWUsIHN0
cik6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIExpbnRFcnJvcihfKCJUYWcgbmFtZSBpcyBu
b3QgYSBzdHJpbmc6ICUodGFnKXIiKSAlIHsidGFnIjogbmFtZX0pCi0gICAgICAgICAgICAgICAg
aWYgbm90IG5hbWU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIExpbnRFcnJvcihfKCJFbXB0
eSB0YWcgbmFtZSIpKQotICAgICAgICAgICAgICAgIGlmIHR5cGUgPT0gIlN0YXJ0VGFnIiBhbmQg
bmFtZSBpbiB2b2lkRWxlbWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIExpbnRFcnJv
cihfKCJWb2lkIGVsZW1lbnQgcmVwb3J0ZWQgYXMgU3RhcnRUYWcgdG9rZW46ICUodGFnKXMiKSAl
IHsidGFnIjogbmFtZX0pCi0gICAgICAgICAgICAgICAgZWxpZiB0eXBlID09ICJFbXB0eVRhZyIg
YW5kIG5hbWUgbm90IGluIHZvaWRFbGVtZW50czoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
TGludEVycm9yKF8oIk5vbi12b2lkIGVsZW1lbnQgcmVwb3J0ZWQgYXMgRW1wdHlUYWcgdG9rZW46
ICUodGFnKXMiKSAlIHsidGFnIjogdG9rZW5bIm5hbWUiXX0pCi0gICAgICAgICAgICAgICAgaWYg
dHlwZSA9PSAiU3RhcnRUYWciOgotICAgICAgICAgICAgICAgICAgICBvcGVuX2VsZW1lbnRzLmFw
cGVuZChuYW1lKQotICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB0b2tlblsiZGF0
YSJdOgotICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCBzdHIpOgot
ICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGludEVycm9yKF8oIkF0dHJpYnV0ZSBuYW1l
IGlzIG5vdCBhIHN0cmluZzogJShuYW1lKXIiKSAlIHsibmFtZSI6IG5hbWV9KQotICAgICAgICAg
ICAgICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIExp
bnRFcnJvcihfKCJFbXB0eSBhdHRyaWJ1dGUgbmFtZSIpKQotICAgICAgICAgICAgICAgICAgICBp
ZiBub3QgaXNpbnN0YW5jZSh2YWx1ZSwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJh
aXNlIExpbnRFcnJvcihfKCJBdHRyaWJ1dGUgdmFsdWUgaXMgbm90IGEgc3RyaW5nOiAlKHZhbHVl
KXIiKSAlIHsidmFsdWUiOiB2YWx1ZX0pCi0gICAgICAgICAgICAgICAgaWYgbmFtZSBpbiBjZGF0
YUVsZW1lbnRzOgotICAgICAgICAgICAgICAgICAgICBjb250ZW50TW9kZWxGbGFnID0gIkNEQVRB
IgotICAgICAgICAgICAgICAgIGVsaWYgbmFtZSBpbiByY2RhdGFFbGVtZW50czoKLSAgICAgICAg
ICAgICAgICAgICAgY29udGVudE1vZGVsRmxhZyA9ICJSQ0RBVEEiCi0gICAgICAgICAgICAgICAg
ZWxpZiBuYW1lID09ICJwbGFpbnRleHQiOgotICAgICAgICAgICAgICAgICAgICBjb250ZW50TW9k
ZWxGbGFnID0gIlBMQUlOVEVYVCIKLQotICAgICAgICAgICAgZWxpZiB0eXBlID09ICJFbmRUYWci
OgotICAgICAgICAgICAgICAgIG5hbWUgPSB0b2tlblsibmFtZSJdCi0gICAgICAgICAgICAgICAg
aWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
TGludEVycm9yKF8oIlRhZyBuYW1lIGlzIG5vdCBhIHN0cmluZzogJSh0YWcpciIpICUgeyJ0YWci
OiBuYW1lfSkKLSAgICAgICAgICAgICAgICBpZiBub3QgbmFtZToKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UgTGludEVycm9yKF8oIkVtcHR5IHRhZyBuYW1lIikpCi0gICAgICAgICAgICAgICAg
aWYgbmFtZSBpbiB2b2lkRWxlbWVudHM6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIExpbnRF
cnJvcihfKCJWb2lkIGVsZW1lbnQgcmVwb3J0ZWQgYXMgRW5kVGFnIHRva2VuOiAlKHRhZylzIikg
JSB7InRhZyI6IG5hbWV9KQotICAgICAgICAgICAgICAgIHN0YXJ0X25hbWUgPSBvcGVuX2VsZW1l
bnRzLnBvcCgpCi0gICAgICAgICAgICAgICAgaWYgc3RhcnRfbmFtZSAhPSBuYW1lOgotICAgICAg
ICAgICAgICAgICAgICByYWlzZSBMaW50RXJyb3IoXygiRW5kVGFnICglKGVuZClzKSBkb2VzIG5v
dCBtYXRjaCBTdGFydFRhZyAoJShzdGFydClzKSIpICUgeyJlbmQiOiBuYW1lLCAic3RhcnQiOiBz
dGFydF9uYW1lfSkKLSAgICAgICAgICAgICAgICBjb250ZW50TW9kZWxGbGFnID0gIlBDREFUQSIK
LQotICAgICAgICAgICAgZWxpZiB0eXBlID09ICJDb21tZW50IjoKLSAgICAgICAgICAgICAgICBp
ZiBjb250ZW50TW9kZWxGbGFnICE9ICJQQ0RBVEEiOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBMaW50RXJyb3IoXygiQ29tbWVudCBub3QgaW4gUENEQVRBIGNvbnRlbnQgbW9kZWwgZmxhZyIp
KQotCi0gICAgICAgICAgICBlbGlmIHR5cGUgaW4gKCJDaGFyYWN0ZXJzIiwgIlNwYWNlQ2hhcmFj
dGVycyIpOgotICAgICAgICAgICAgICAgIGRhdGEgPSB0b2tlblsiZGF0YSJdCi0gICAgICAgICAg
ICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKLSAgICAgICAgICAgICAgICAgICAg
cmFpc2UgTGludEVycm9yKF8oIkF0dHJpYnV0ZSBuYW1lIGlzIG5vdCBhIHN0cmluZzogJShuYW1l
KXIiKSAlIHsibmFtZSI6IGRhdGF9KQotICAgICAgICAgICAgICAgIGlmIG5vdCBkYXRhOgotICAg
ICAgICAgICAgICAgICAgICByYWlzZSBMaW50RXJyb3IoXygiJSh0eXBlKXMgdG9rZW4gd2l0aCBl
bXB0eSBkYXRhIikgJSB7InR5cGUiOiB0eXBlfSkKLSAgICAgICAgICAgICAgICBpZiB0eXBlID09
ICJTcGFjZUNoYXJhY3RlcnMiOgotICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YS5zdHJp
cChzcGFjZUNoYXJhY3RlcnMpCi0gICAgICAgICAgICAgICAgICAgIGlmIGRhdGE6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByYWlzZSBMaW50RXJyb3IoXygiTm9uLXNwYWNlIGNoYXJhY3Rlcihz
KSBmb3VuZCBpbiBTcGFjZUNoYXJhY3RlcnMgdG9rZW46ICUodG9rZW4pciIpICUgeyJ0b2tlbiI6
IGRhdGF9KQotCi0gICAgICAgICAgICBlbGlmIHR5cGUgPT0gIkRvY3R5cGUiOgotICAgICAgICAg
ICAgICAgIG5hbWUgPSB0b2tlblsibmFtZSJdCi0gICAgICAgICAgICAgICAgaWYgY29udGVudE1v
ZGVsRmxhZyAhPSAiUENEQVRBIjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgTGludEVycm9y
KF8oIkRvY3R5cGUgbm90IGluIFBDREFUQSBjb250ZW50IG1vZGVsIGZsYWc6ICUobmFtZSlzIikg
JSB7Im5hbWUiOiBuYW1lfSkKLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1l
LCBzdHIpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBMaW50RXJyb3IoXygiVGFnIG5hbWUg
aXMgbm90IGEgc3RyaW5nOiAlKHRhZylyIikgJSB7InRhZyI6IG5hbWV9KQotICAgICAgICAgICAg
ICAgICMgWFhYOiB3aGF0IHRvIGRvIHdpdGggdG9rZW5bImRhdGEiXSA/Ci0KLSAgICAgICAgICAg
IGVsaWYgdHlwZSBpbiAoIlBhcnNlRXJyb3IiLCAiU2VyaWFsaXplRXJyb3IiKToKLSAgICAgICAg
ICAgICAgICBwYXNzCi0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
TGludEVycm9yKF8oIlVua25vd24gdG9rZW4gdHlwZTogJSh0eXBlKXMiKSAlIHsidHlwZSI6IHR5
cGV9KQotCi0gICAgICAgICAgICB5aWVsZCB0b2tlbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9m
aWx0ZXJzL29wdGlvbmFsdGFncy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9vcHRpb25hbHRhZ3Mu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlZmUwYjMwOTdiZDk2NDZiNDNjNGMz
ZjNiZDhiYThkMGJiYjAxYTAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL29wdGlvbmFsdGFncy5weQorKysgL2Rldi9udWxs
CkBAIC0xLDIwNSArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHVuaWNvZGVfbGl0ZXJhbHMKLQotZnJvbSAuIGltcG9ydCBfYmFzZQotCi0K
LWNsYXNzIEZpbHRlcihfYmFzZS5GaWx0ZXIpOgotICAgIGRlZiBzbGlkZXIoc2VsZik6Ci0gICAg
ICAgIHByZXZpb3VzMSA9IHByZXZpb3VzMiA9IE5vbmUKLSAgICAgICAgZm9yIHRva2VuIGluIHNl
bGYuc291cmNlOgotICAgICAgICAgICAgaWYgcHJldmlvdXMxIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgICAgIHlpZWxkIHByZXZpb3VzMiwgcHJldmlvdXMxLCB0b2tlbgotICAgICAgICAgICAg
cHJldmlvdXMyID0gcHJldmlvdXMxCi0gICAgICAgICAgICBwcmV2aW91czEgPSB0b2tlbgotICAg
ICAgICB5aWVsZCBwcmV2aW91czIsIHByZXZpb3VzMSwgTm9uZQotCi0gICAgZGVmIF9faXRlcl9f
KHNlbGYpOgotICAgICAgICBmb3IgcHJldmlvdXMsIHRva2VuLCBuZXh0IGluIHNlbGYuc2xpZGVy
KCk6Ci0gICAgICAgICAgICB0eXBlID0gdG9rZW5bInR5cGUiXQotICAgICAgICAgICAgaWYgdHlw
ZSA9PSAiU3RhcnRUYWciOgotICAgICAgICAgICAgICAgIGlmICh0b2tlblsiZGF0YSJdIG9yCi0g
ICAgICAgICAgICAgICAgICAgICAgICBub3Qgc2VsZi5pc19vcHRpb25hbF9zdGFydCh0b2tlblsi
bmFtZSJdLCBwcmV2aW91cywgbmV4dCkpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCB0b2tl
bgotICAgICAgICAgICAgZWxpZiB0eXBlID09ICJFbmRUYWciOgotICAgICAgICAgICAgICAgIGlm
IG5vdCBzZWxmLmlzX29wdGlvbmFsX2VuZCh0b2tlblsibmFtZSJdLCBuZXh0KToKLSAgICAgICAg
ICAgICAgICAgICAgeWllbGQgdG9rZW4KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgeWllbGQgdG9rZW4KLQotICAgIGRlZiBpc19vcHRpb25hbF9zdGFydChzZWxmLCB0YWduYW1l
LCBwcmV2aW91cywgbmV4dCk6Ci0gICAgICAgIHR5cGUgPSBuZXh0IGFuZCBuZXh0WyJ0eXBlIl0g
b3IgTm9uZQotICAgICAgICBpZiB0YWduYW1lIGluICdodG1sJzoKLSAgICAgICAgICAgICMgQW4g
aHRtbCBlbGVtZW50J3Mgc3RhcnQgdGFnIG1heSBiZSBvbWl0dGVkIGlmIHRoZSBmaXJzdCB0aGlu
ZwotICAgICAgICAgICAgIyBpbnNpZGUgdGhlIGh0bWwgZWxlbWVudCBpcyBub3QgYSBzcGFjZSBj
aGFyYWN0ZXIgb3IgYSBjb21tZW50LgotICAgICAgICAgICAgcmV0dXJuIHR5cGUgbm90IGluICgi
Q29tbWVudCIsICJTcGFjZUNoYXJhY3RlcnMiKQotICAgICAgICBlbGlmIHRhZ25hbWUgPT0gJ2hl
YWQnOgotICAgICAgICAgICAgIyBBIGhlYWQgZWxlbWVudCdzIHN0YXJ0IHRhZyBtYXkgYmUgb21p
dHRlZCBpZiB0aGUgZmlyc3QgdGhpbmcKLSAgICAgICAgICAgICMgaW5zaWRlIHRoZSBoZWFkIGVs
ZW1lbnQgaXMgYW4gZWxlbWVudC4KLSAgICAgICAgICAgICMgWFhYOiB3ZSBhbHNvIG9taXQgdGhl
IHN0YXJ0IHRhZyBpZiB0aGUgaGVhZCBlbGVtZW50IGlzIGVtcHR5Ci0gICAgICAgICAgICBpZiB0
eXBlIGluICgiU3RhcnRUYWciLCAiRW1wdHlUYWciKToKLSAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQotICAgICAgICAgICAgZWxpZiB0eXBlID09ICJFbmRUYWciOgotICAgICAgICAgICAgICAg
IHJldHVybiBuZXh0WyJuYW1lIl0gPT0gImhlYWQiCi0gICAgICAgIGVsaWYgdGFnbmFtZSA9PSAn
Ym9keSc6Ci0gICAgICAgICAgICAjIEEgYm9keSBlbGVtZW50J3Mgc3RhcnQgdGFnIG1heSBiZSBv
bWl0dGVkIGlmIHRoZSBmaXJzdCB0aGluZwotICAgICAgICAgICAgIyBpbnNpZGUgdGhlIGJvZHkg
ZWxlbWVudCBpcyBub3QgYSBzcGFjZSBjaGFyYWN0ZXIgb3IgYSBjb21tZW50LAotICAgICAgICAg
ICAgIyBleGNlcHQgaWYgdGhlIGZpcnN0IHRoaW5nIGluc2lkZSB0aGUgYm9keSBlbGVtZW50IGlz
IGEgc2NyaXB0Ci0gICAgICAgICAgICAjIG9yIHN0eWxlIGVsZW1lbnQgYW5kIHRoZSBub2RlIGlt
bWVkaWF0ZWx5IHByZWNlZGluZyB0aGUgYm9keQotICAgICAgICAgICAgIyBlbGVtZW50IGlzIGEg
aGVhZCBlbGVtZW50IHdob3NlIGVuZCB0YWcgaGFzIGJlZW4gb21pdHRlZC4KLSAgICAgICAgICAg
IGlmIHR5cGUgaW4gKCJDb21tZW50IiwgIlNwYWNlQ2hhcmFjdGVycyIpOgotICAgICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZWxpZiB0eXBlID09ICJTdGFydFRhZyI6Ci0g
ICAgICAgICAgICAgICAgIyBYWFg6IHdlIGRvIG5vdCBsb29rIGF0IHRoZSBwcmVjZWRpbmcgZXZl
bnQsIHNvIHdlIG5ldmVyIG9taXQKLSAgICAgICAgICAgICAgICAjIHRoZSBib2R5IGVsZW1lbnQn
cyBzdGFydCB0YWcgaWYgaXQncyBmb2xsb3dlZCBieSBhIHNjcmlwdCBvcgotICAgICAgICAgICAg
ICAgICMgYSBzdHlsZSBlbGVtZW50LgotICAgICAgICAgICAgICAgIHJldHVybiBuZXh0WyJuYW1l
Il0gbm90IGluICgnc2NyaXB0JywgJ3N0eWxlJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZWxpZiB0YWduYW1lID09ICdjb2xncm91cCc6
Ci0gICAgICAgICAgICAjIEEgY29sZ3JvdXAgZWxlbWVudCdzIHN0YXJ0IHRhZyBtYXkgYmUgb21p
dHRlZCBpZiB0aGUgZmlyc3QgdGhpbmcKLSAgICAgICAgICAgICMgaW5zaWRlIHRoZSBjb2xncm91
cCBlbGVtZW50IGlzIGEgY29sIGVsZW1lbnQsIGFuZCBpZiB0aGUgZWxlbWVudAotICAgICAgICAg
ICAgIyBpcyBub3QgaW1tZWRpYXRlbHkgcHJlY2VlZGVkIGJ5IGFub3RoZXIgY29sZ3JvdXAgZWxl
bWVudCB3aG9zZQotICAgICAgICAgICAgIyBlbmQgdGFnIGhhcyBiZWVuIG9taXR0ZWQuCi0gICAg
ICAgICAgICBpZiB0eXBlIGluICgiU3RhcnRUYWciLCAiRW1wdHlUYWciKToKLSAgICAgICAgICAg
ICAgICAjIFhYWDogd2UgZG8gbm90IGxvb2sgYXQgdGhlIHByZWNlZGluZyBldmVudCwgc28gaW5z
dGVhZCB3ZSBuZXZlcgotICAgICAgICAgICAgICAgICMgb21pdCB0aGUgY29sZ3JvdXAgZWxlbWVu
dCdzIGVuZCB0YWcgd2hlbiBpdCBpcyBpbW1lZGlhdGVseQotICAgICAgICAgICAgICAgICMgZm9s
bG93ZWQgYnkgYW5vdGhlciBjb2xncm91cCBlbGVtZW50LiBTZWUgaXNfb3B0aW9uYWxfZW5kLgot
ICAgICAgICAgICAgICAgIHJldHVybiBuZXh0WyJuYW1lIl0gPT0gImNvbCIKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGVsaWYgdGFnbmFt
ZSA9PSAndGJvZHknOgotICAgICAgICAgICAgIyBBIHRib2R5IGVsZW1lbnQncyBzdGFydCB0YWcg
bWF5IGJlIG9taXR0ZWQgaWYgdGhlIGZpcnN0IHRoaW5nCi0gICAgICAgICAgICAjIGluc2lkZSB0
aGUgdGJvZHkgZWxlbWVudCBpcyBhIHRyIGVsZW1lbnQsIGFuZCBpZiB0aGUgZWxlbWVudCBpcwot
ICAgICAgICAgICAgIyBub3QgaW1tZWRpYXRlbHkgcHJlY2VlZGVkIGJ5IGEgdGJvZHksIHRoZWFk
LCBvciB0Zm9vdCBlbGVtZW50Ci0gICAgICAgICAgICAjIHdob3NlIGVuZCB0YWcgaGFzIGJlZW4g
b21pdHRlZC4KLSAgICAgICAgICAgIGlmIHR5cGUgPT0gIlN0YXJ0VGFnIjoKLSAgICAgICAgICAg
ICAgICAjIG9taXQgdGhlIHRoZWFkIGFuZCB0Zm9vdCBlbGVtZW50cycgZW5kIHRhZyB3aGVuIHRo
ZXkgYXJlCi0gICAgICAgICAgICAgICAgIyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHRib2R5
IGVsZW1lbnQuIFNlZSBpc19vcHRpb25hbF9lbmQuCi0gICAgICAgICAgICAgICAgaWYgcHJldmlv
dXMgYW5kIHByZXZpb3VzWyd0eXBlJ10gPT0gJ0VuZFRhZycgYW5kIFwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHByZXZpb3VzWyduYW1lJ10gaW4gKCd0Ym9keScsICd0aGVhZCcsICd0Zm9vdCcp
OgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgICAgICAgICByZXR1
cm4gbmV4dFsibmFtZSJdID09ICd0cicKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGlzX29wdGlv
bmFsX2VuZChzZWxmLCB0YWduYW1lLCBuZXh0KToKLSAgICAgICAgdHlwZSA9IG5leHQgYW5kIG5l
eHRbInR5cGUiXSBvciBOb25lCi0gICAgICAgIGlmIHRhZ25hbWUgaW4gKCdodG1sJywgJ2hlYWQn
LCAnYm9keScpOgotICAgICAgICAgICAgIyBBbiBodG1sIGVsZW1lbnQncyBlbmQgdGFnIG1heSBi
ZSBvbWl0dGVkIGlmIHRoZSBodG1sIGVsZW1lbnQKLSAgICAgICAgICAgICMgaXMgbm90IGltbWVk
aWF0ZWx5IGZvbGxvd2VkIGJ5IGEgc3BhY2UgY2hhcmFjdGVyIG9yIGEgY29tbWVudC4KLSAgICAg
ICAgICAgIHJldHVybiB0eXBlIG5vdCBpbiAoIkNvbW1lbnQiLCAiU3BhY2VDaGFyYWN0ZXJzIikK
LSAgICAgICAgZWxpZiB0YWduYW1lIGluICgnbGknLCAnb3B0Z3JvdXAnLCAndHInKToKLSAgICAg
ICAgICAgICMgQSBsaSBlbGVtZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0aGUgbGkg
ZWxlbWVudCBpcwotICAgICAgICAgICAgIyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhbm90aGVy
IGxpIGVsZW1lbnQgb3IgaWYgdGhlcmUgaXMKLSAgICAgICAgICAgICMgbm8gbW9yZSBjb250ZW50
IGluIHRoZSBwYXJlbnQgZWxlbWVudC4KLSAgICAgICAgICAgICMgQW4gb3B0Z3JvdXAgZWxlbWVu
dCdzIGVuZCB0YWcgbWF5IGJlIG9taXR0ZWQgaWYgdGhlIG9wdGdyb3VwCi0gICAgICAgICAgICAj
IGVsZW1lbnQgaXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYW5vdGhlciBvcHRncm91cCBlbGVt
ZW50LAotICAgICAgICAgICAgIyBvciBpZiB0aGVyZSBpcyBubyBtb3JlIGNvbnRlbnQgaW4gdGhl
IHBhcmVudCBlbGVtZW50LgotICAgICAgICAgICAgIyBBIHRyIGVsZW1lbnQncyBlbmQgdGFnIG1h
eSBiZSBvbWl0dGVkIGlmIHRoZSB0ciBlbGVtZW50IGlzCi0gICAgICAgICAgICAjIGltbWVkaWF0
ZWx5IGZvbGxvd2VkIGJ5IGFub3RoZXIgdHIgZWxlbWVudCwgb3IgaWYgdGhlcmUgaXMKLSAgICAg
ICAgICAgICMgbm8gbW9yZSBjb250ZW50IGluIHRoZSBwYXJlbnQgZWxlbWVudC4KLSAgICAgICAg
ICAgIGlmIHR5cGUgPT0gIlN0YXJ0VGFnIjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFsi
bmFtZSJdID09IHRhZ25hbWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0
dXJuIHR5cGUgPT0gIkVuZFRhZyIgb3IgdHlwZSBpcyBOb25lCi0gICAgICAgIGVsaWYgdGFnbmFt
ZSBpbiAoJ2R0JywgJ2RkJyk6Ci0gICAgICAgICAgICAjIEEgZHQgZWxlbWVudCdzIGVuZCB0YWcg
bWF5IGJlIG9taXR0ZWQgaWYgdGhlIGR0IGVsZW1lbnQgaXMKLSAgICAgICAgICAgICMgaW1tZWRp
YXRlbHkgZm9sbG93ZWQgYnkgYW5vdGhlciBkdCBlbGVtZW50IG9yIGEgZGQgZWxlbWVudC4KLSAg
ICAgICAgICAgICMgQSBkZCBlbGVtZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0aGUg
ZGQgZWxlbWVudCBpcwotICAgICAgICAgICAgIyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhbm90
aGVyIGRkIGVsZW1lbnQgb3IgYSBkdCBlbGVtZW50LAotICAgICAgICAgICAgIyBvciBpZiB0aGVy
ZSBpcyBubyBtb3JlIGNvbnRlbnQgaW4gdGhlIHBhcmVudCBlbGVtZW50LgotICAgICAgICAgICAg
aWYgdHlwZSA9PSAiU3RhcnRUYWciOgotICAgICAgICAgICAgICAgIHJldHVybiBuZXh0WyJuYW1l
Il0gaW4gKCdkdCcsICdkZCcpCi0gICAgICAgICAgICBlbGlmIHRhZ25hbWUgPT0gJ2RkJzoKLSAg
ICAgICAgICAgICAgICByZXR1cm4gdHlwZSA9PSAiRW5kVGFnIiBvciB0eXBlIGlzIE5vbmUKLSAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGVs
aWYgdGFnbmFtZSA9PSAncCc6Ci0gICAgICAgICAgICAjIEEgcCBlbGVtZW50J3MgZW5kIHRhZyBt
YXkgYmUgb21pdHRlZCBpZiB0aGUgcCBlbGVtZW50IGlzCi0gICAgICAgICAgICAjIGltbWVkaWF0
ZWx5IGZvbGxvd2VkIGJ5IGFuIGFkZHJlc3MsIGFydGljbGUsIGFzaWRlLAotICAgICAgICAgICAg
IyBibG9ja3F1b3RlLCBkYXRhZ3JpZCwgZGlhbG9nLCBkaXIsIGRpdiwgZGwsIGZpZWxkc2V0LAot
ICAgICAgICAgICAgIyBmb290ZXIsIGZvcm0sIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhlYWRl
ciwgaHIsIG1lbnUsCi0gICAgICAgICAgICAjIG5hdiwgb2wsIHAsIHByZSwgc2VjdGlvbiwgdGFi
bGUsIG9yIHVsLCBlbGVtZW50LCBvciBpZgotICAgICAgICAgICAgIyB0aGVyZSBpcyBubyBtb3Jl
IGNvbnRlbnQgaW4gdGhlIHBhcmVudCBlbGVtZW50LgotICAgICAgICAgICAgaWYgdHlwZSBpbiAo
IlN0YXJ0VGFnIiwgIkVtcHR5VGFnIik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRbIm5h
bWUiXSBpbiAoJ2FkZHJlc3MnLCAnYXJ0aWNsZScsICdhc2lkZScsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Jsb2NrcXVvdGUnLCAnZGF0YWdyaWQnLCAnZGlhbG9n
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyJywgJ2Rpdics
ICdkbCcsICdmaWVsZHNldCcsICdmb290ZXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdmb3JtJywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGVhZGVyJywgJ2hyJywg
J21lbnUnLCAnbmF2JywgJ29sJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAncCcsICdwcmUnLCAnc2VjdGlvbicsICd0YWJsZScsICd1bCcpCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09ICJFbmRUYWciIG9yIHR5cGUgaXMg
Tm9uZQotICAgICAgICBlbGlmIHRhZ25hbWUgPT0gJ29wdGlvbic6Ci0gICAgICAgICAgICAjIEFu
IG9wdGlvbiBlbGVtZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0aGUgb3B0aW9uCi0g
ICAgICAgICAgICAjIGVsZW1lbnQgaXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYW5vdGhlciBv
cHRpb24gZWxlbWVudCwKLSAgICAgICAgICAgICMgb3IgaWYgaXQgaXMgaW1tZWRpYXRlbHkgZm9s
bG93ZWQgYnkgYW4gPGNvZGU+b3B0Z3JvdXA8L2NvZGU+Ci0gICAgICAgICAgICAjIGVsZW1lbnQs
IG9yIGlmIHRoZXJlIGlzIG5vIG1vcmUgY29udGVudCBpbiB0aGUgcGFyZW50Ci0gICAgICAgICAg
ICAjIGVsZW1lbnQuCi0gICAgICAgICAgICBpZiB0eXBlID09ICJTdGFydFRhZyI6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIG5leHRbIm5hbWUiXSBpbiAoJ29wdGlvbicsICdvcHRncm91cCcpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09ICJFbmRUYWci
IG9yIHR5cGUgaXMgTm9uZQotICAgICAgICBlbGlmIHRhZ25hbWUgaW4gKCdydCcsICdycCcpOgot
ICAgICAgICAgICAgIyBBbiBydCBlbGVtZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0
aGUgcnQgZWxlbWVudCBpcwotICAgICAgICAgICAgIyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBh
biBydCBvciBycCBlbGVtZW50LCBvciBpZiB0aGVyZSBpcwotICAgICAgICAgICAgIyBubyBtb3Jl
IGNvbnRlbnQgaW4gdGhlIHBhcmVudCBlbGVtZW50LgotICAgICAgICAgICAgIyBBbiBycCBlbGVt
ZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0aGUgcnAgZWxlbWVudCBpcwotICAgICAg
ICAgICAgIyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhbiBydCBvciBycCBlbGVtZW50LCBvciBp
ZiB0aGVyZSBpcwotICAgICAgICAgICAgIyBubyBtb3JlIGNvbnRlbnQgaW4gdGhlIHBhcmVudCBl
bGVtZW50LgotICAgICAgICAgICAgaWYgdHlwZSA9PSAiU3RhcnRUYWciOgotICAgICAgICAgICAg
ICAgIHJldHVybiBuZXh0WyJuYW1lIl0gaW4gKCdydCcsICdycCcpCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09ICJFbmRUYWciIG9yIHR5cGUgaXMgTm9u
ZQotICAgICAgICBlbGlmIHRhZ25hbWUgPT0gJ2NvbGdyb3VwJzoKLSAgICAgICAgICAgICMgQSBj
b2xncm91cCBlbGVtZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0aGUgY29sZ3JvdXAK
LSAgICAgICAgICAgICMgZWxlbWVudCBpcyBub3QgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnkgYSBz
cGFjZSBjaGFyYWN0ZXIgb3IKLSAgICAgICAgICAgICMgYSBjb21tZW50LgotICAgICAgICAgICAg
aWYgdHlwZSBpbiAoIkNvbW1lbnQiLCAiU3BhY2VDaGFyYWN0ZXJzIik6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBlbGlmIHR5cGUgPT0gIlN0YXJ0VGFnIjoKLSAg
ICAgICAgICAgICAgICAjIFhYWDogd2UgYWxzbyBsb29rIGZvciBhbiBpbW1lZGlhdGVseSBmb2xs
b3dpbmcgY29sZ3JvdXAKLSAgICAgICAgICAgICAgICAjIGVsZW1lbnQuIFNlZSBpc19vcHRpb25h
bF9zdGFydC4KLSAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFsibmFtZSJdICE9ICdjb2xncm91
cCcKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAg
ICAgZWxpZiB0YWduYW1lIGluICgndGhlYWQnLCAndGJvZHknKToKLSAgICAgICAgICAgICMgQSB0
aGVhZCBlbGVtZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0aGUgdGhlYWQgZWxlbWVu
dAotICAgICAgICAgICAgIyBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHRib2R5IG9yIHRm
b290IGVsZW1lbnQuCi0gICAgICAgICAgICAjIEEgdGJvZHkgZWxlbWVudCdzIGVuZCB0YWcgbWF5
IGJlIG9taXR0ZWQgaWYgdGhlIHRib2R5IGVsZW1lbnQKLSAgICAgICAgICAgICMgaXMgaW1tZWRp
YXRlbHkgZm9sbG93ZWQgYnkgYSB0Ym9keSBvciB0Zm9vdCBlbGVtZW50LCBvciBpZgotICAgICAg
ICAgICAgIyB0aGVyZSBpcyBubyBtb3JlIGNvbnRlbnQgaW4gdGhlIHBhcmVudCBlbGVtZW50Lgot
ICAgICAgICAgICAgIyBBIHRmb290IGVsZW1lbnQncyBlbmQgdGFnIG1heSBiZSBvbWl0dGVkIGlm
IHRoZSB0Zm9vdCBlbGVtZW50Ci0gICAgICAgICAgICAjIGlzIGltbWVkaWF0ZWx5IGZvbGxvd2Vk
IGJ5IGEgdGJvZHkgZWxlbWVudCwgb3IgaWYgdGhlcmUgaXMgbm8KLSAgICAgICAgICAgICMgbW9y
ZSBjb250ZW50IGluIHRoZSBwYXJlbnQgZWxlbWVudC4KLSAgICAgICAgICAgICMgWFhYOiB3ZSBu
ZXZlciBvbWl0IHRoZSBlbmQgdGFnIHdoZW4gdGhlIGZvbGxvd2luZyBlbGVtZW50IGlzCi0gICAg
ICAgICAgICAjIGEgdGJvZHkuIFNlZSBpc19vcHRpb25hbF9zdGFydC4KLSAgICAgICAgICAgIGlm
IHR5cGUgPT0gIlN0YXJ0VGFnIjoKLSAgICAgICAgICAgICAgICByZXR1cm4gbmV4dFsibmFtZSJd
IGluIFsndGJvZHknLCAndGZvb3QnXQotICAgICAgICAgICAgZWxpZiB0YWduYW1lID09ICd0Ym9k
eSc6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUgPT0gIkVuZFRhZyIgb3IgdHlwZSBpcyBO
b25lCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICBlbGlmIHRhZ25hbWUgPT0gJ3Rmb290JzoKLSAgICAgICAgICAgICMgQSB0Zm9vdCBlbGVt
ZW50J3MgZW5kIHRhZyBtYXkgYmUgb21pdHRlZCBpZiB0aGUgdGZvb3QgZWxlbWVudAotICAgICAg
ICAgICAgIyBpcyBpbW1lZGlhdGVseSBmb2xsb3dlZCBieSBhIHRib2R5IGVsZW1lbnQsIG9yIGlm
IHRoZXJlIGlzIG5vCi0gICAgICAgICAgICAjIG1vcmUgY29udGVudCBpbiB0aGUgcGFyZW50IGVs
ZW1lbnQuCi0gICAgICAgICAgICAjIFhYWDogd2UgbmV2ZXIgb21pdCB0aGUgZW5kIHRhZyB3aGVu
IHRoZSBmb2xsb3dpbmcgZWxlbWVudCBpcwotICAgICAgICAgICAgIyBhIHRib2R5LiBTZWUgaXNf
b3B0aW9uYWxfc3RhcnQuCi0gICAgICAgICAgICBpZiB0eXBlID09ICJTdGFydFRhZyI6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG5leHRbIm5hbWUiXSA9PSAndGJvZHknCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJldHVybiB0eXBlID09ICJFbmRUYWciIG9yIHR5cGUgaXMg
Tm9uZQotICAgICAgICBlbGlmIHRhZ25hbWUgaW4gKCd0ZCcsICd0aCcpOgotICAgICAgICAgICAg
IyBBIHRkIGVsZW1lbnQncyBlbmQgdGFnIG1heSBiZSBvbWl0dGVkIGlmIHRoZSB0ZCBlbGVtZW50
IGlzCi0gICAgICAgICAgICAjIGltbWVkaWF0ZWx5IGZvbGxvd2VkIGJ5IGEgdGQgb3IgdGggZWxl
bWVudCwgb3IgaWYgdGhlcmUgaXMKLSAgICAgICAgICAgICMgbm8gbW9yZSBjb250ZW50IGluIHRo
ZSBwYXJlbnQgZWxlbWVudC4KLSAgICAgICAgICAgICMgQSB0aCBlbGVtZW50J3MgZW5kIHRhZyBt
YXkgYmUgb21pdHRlZCBpZiB0aGUgdGggZWxlbWVudCBpcwotICAgICAgICAgICAgIyBpbW1lZGlh
dGVseSBmb2xsb3dlZCBieSBhIHRkIG9yIHRoIGVsZW1lbnQsIG9yIGlmIHRoZXJlIGlzCi0gICAg
ICAgICAgICAjIG5vIG1vcmUgY29udGVudCBpbiB0aGUgcGFyZW50IGVsZW1lbnQuCi0gICAgICAg
ICAgICBpZiB0eXBlID09ICJTdGFydFRhZyI6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIG5leHRb
Im5hbWUiXSBpbiAoJ3RkJywgJ3RoJykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcmV0dXJuIHR5cGUgPT0gIkVuZFRhZyIgb3IgdHlwZSBpcyBOb25lCi0gICAgICAgIHJldHVy
biBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3Nhbml0aXplci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
aHRtbDVsaWIvZmlsdGVycy9zYW5pdGl6ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IGIyMDZiNTRlN2E3NGZiY2ZjMGViZDU4MGRjM2QyNTVmZDRlNzU0NTYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3Nh
bml0aXplci5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLWZyb20gX19mdXR1cmVf
XyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgdW5pY29kZV9saXRlcmFscwotCi1m
cm9tIC4gaW1wb3J0IF9iYXNlCi1mcm9tIC4uc2FuaXRpemVyIGltcG9ydCBIVE1MU2FuaXRpemVy
TWl4aW4KLQotCi1jbGFzcyBGaWx0ZXIoX2Jhc2UuRmlsdGVyLCBIVE1MU2FuaXRpemVyTWl4aW4p
OgotICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgZm9yIHRva2VuIGluIF9iYXNlLkZp
bHRlci5fX2l0ZXJfXyhzZWxmKToKLSAgICAgICAgICAgIHRva2VuID0gc2VsZi5zYW5pdGl6ZV90
b2tlbih0b2tlbikKLSAgICAgICAgICAgIGlmIHRva2VuOgotICAgICAgICAgICAgICAgIHlpZWxk
IHRva2VuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGli
L2h0bWw1bGliL2ZpbHRlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDUyMzAyNGE0YWJlZDViZGQyN2UzY2QyZWFkYWE1NGE0NTIzODNjOTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9odG1sNWxpYi9maWx0ZXJzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL19iYXNl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9o
dG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL2FscGhhYmV0aWNhbGF0dHJpYnV0ZXMucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0
bWw1bGliL2ZpbHRlcnMvaW5qZWN0X21ldGFfY2hhcnNldC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVy
cy9saW50LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL29wdGlvbmFsdGFncy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVs
aWIvZmlsdGVycy9zYW5pdGl6ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvd2hpdGVzcGFjZS5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3doaXRlc3BhY2UucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1
bGliL2ZpbHRlcnMvd2hpdGVzcGFjZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ZGZjNjBlZWJkMzViZDY0NTBkODJjZjY1YWJjYmVkY2E4ZjhmYjlkYS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvd2hpdGVz
cGFjZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBp
bXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgdW5pY29kZV9saXRlcmFscwotCi1pbXBv
cnQgcmUKLQotZnJvbSAuIGltcG9ydCBfYmFzZQotZnJvbSAuLmNvbnN0YW50cyBpbXBvcnQgcmNk
YXRhRWxlbWVudHMsIHNwYWNlQ2hhcmFjdGVycwotc3BhY2VDaGFyYWN0ZXJzID0gIiIuam9pbihz
cGFjZUNoYXJhY3RlcnMpCi0KLVNQQUNFU19SRUdFWCA9IHJlLmNvbXBpbGUoIlslc10rIiAlIHNw
YWNlQ2hhcmFjdGVycykKLQotCi1jbGFzcyBGaWx0ZXIoX2Jhc2UuRmlsdGVyKToKLQotICAgIHNw
YWNlUHJlc2VydmVFbGVtZW50cyA9IGZyb3plbnNldChbInByZSIsICJ0ZXh0YXJlYSJdICsgbGlz
dChyY2RhdGFFbGVtZW50cykpCi0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIHBy
ZXNlcnZlID0gMAotICAgICAgICBmb3IgdG9rZW4gaW4gX2Jhc2UuRmlsdGVyLl9faXRlcl9fKHNl
bGYpOgotICAgICAgICAgICAgdHlwZSA9IHRva2VuWyJ0eXBlIl0KLSAgICAgICAgICAgIGlmIHR5
cGUgPT0gIlN0YXJ0VGFnIiBcCi0gICAgICAgICAgICAgICAgICAgIGFuZCAocHJlc2VydmUgb3Ig
dG9rZW5bIm5hbWUiXSBpbiBzZWxmLnNwYWNlUHJlc2VydmVFbGVtZW50cyk6Ci0gICAgICAgICAg
ICAgICAgcHJlc2VydmUgKz0gMQotCi0gICAgICAgICAgICBlbGlmIHR5cGUgPT0gIkVuZFRhZyIg
YW5kIHByZXNlcnZlOgotICAgICAgICAgICAgICAgIHByZXNlcnZlIC09IDEKLQotICAgICAgICAg
ICAgZWxpZiBub3QgcHJlc2VydmUgYW5kIHR5cGUgPT0gIlNwYWNlQ2hhcmFjdGVycyIgYW5kIHRv
a2VuWyJkYXRhIl06Ci0gICAgICAgICAgICAgICAgIyBUZXN0IG9uIHRva2VuWyJkYXRhIl0gYWJv
dmUgdG8gbm90IGludHJvZHVjZSBzcGFjZXMgd2hlcmUgdGhlcmUgd2VyZSBub3QKLSAgICAgICAg
ICAgICAgICB0b2tlblsiZGF0YSJdID0gIiAiCi0KLSAgICAgICAgICAgIGVsaWYgbm90IHByZXNl
cnZlIGFuZCB0eXBlID09ICJDaGFyYWN0ZXJzIjoKLSAgICAgICAgICAgICAgICB0b2tlblsiZGF0
YSJdID0gY29sbGFwc2Vfc3BhY2VzKHRva2VuWyJkYXRhIl0pCi0KLSAgICAgICAgICAgIHlpZWxk
IHRva2VuCi0KLQotZGVmIGNvbGxhcHNlX3NwYWNlcyh0ZXh0KToKLSAgICByZXR1cm4gU1BBQ0VT
X1JFR0VYLnN1YignICcsIHRleHQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3NlcmlhbGl6ZXIv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3NlcmlhbGl6ZXIvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkMWI5YmE2NzJkNWM2NThkZTA5MTAyMDE2ZTQ5
NmZhMDZjOTYxYmUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9odG1sNWxpYi9zZXJpYWxpemVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9zZXJpYWxpemVyL19faW5pdF9fLnB5
YwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRt
bDVsaWIvaHRtbDVsaWIvc2VyaWFsaXplci9odG1sc2VyaWFsaXplci5weWMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVs
aWIvaHRtbDVsaWIvdGVzdHMvUkVBRE1FIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9SRUFETUUKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NjRiNjgzNmU0NmM5N2JiYzQ0NzdkMzUxMGNlOTE3
YjZiMzAzNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9odG1sNWxpYi90ZXN0cy9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1FYWNo
IHRlc3RjYXNlIGZpbGUgY2FuIGJlIHJ1biB0aHJvdWdoIG5vc2UgKHVzaW5nIGBgbm9zZXRlc3Rz
YGApLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIv
dGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL19faW5pdF9fLnB5CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOGNlMmRlMzJlNWZhNDJiM2I2YTI3YmQ4M2ZiZjA1MGIx
N2VjYWQxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
aHRtbDVsaWIvdGVzdHMvX19pbml0X18ucHkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVuaWNvZGVf
bGl0ZXJhbHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvbW9ja1BhcnNlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
aHRtbDVsaWIvdGVzdHMvbW9ja1BhcnNlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZWYzMTUyN2U4MmRmOTUyYjg3ZDAzZTQ1MmY3MTM2MDM4NDg4YjdiMi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL21vY2tQ
YXJzZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVuaWNvZGVfbGl0ZXJhbHMKLQotaW1w
b3J0IHN5cwotaW1wb3J0IG9zCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgIyBB
bGxvdyB1cyB0byBpbXBvcnQgZnJvbSB0aGUgc3JjIGRpcmVjdG9yeQotICAgIG9zLmNoZGlyKG9z
LnBhdGguc3BsaXQob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSlbMF0pCi0gICAgc3lzLnBhdGgu
aW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ob3MucGFyZGlyLCAic3JjIikp
KQotCi1mcm9tIGh0bWw1bGliLnRva2VuaXplciBpbXBvcnQgSFRNTFRva2VuaXplcgotCi0KLWNs
YXNzIEhUTUxQYXJzZXIob2JqZWN0KToKLSAgICAiIiIgRmFrZSBwYXJzZXIgdG8gdGVzdCB0b2tl
bml6ZXIgb3V0cHV0ICIiIgotICAgIGRlZiBwYXJzZShzZWxmLCBzdHJlYW0sIG91dHB1dD1UcnVl
KToKLSAgICAgICAgdG9rZW5pemVyID0gSFRNTFRva2VuaXplcihzdHJlYW0pCi0gICAgICAgIGZv
ciB0b2tlbiBpbiB0b2tlbml6ZXI6Ci0gICAgICAgICAgICBpZiBvdXRwdXQ6Ci0gICAgICAgICAg
ICAgICAgcHJpbnQodG9rZW4pCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgeCA9
IEhUTUxQYXJzZXIoKQotICAgIGlmIGxlbihzeXMuYXJndikgPiAxOgotICAgICAgICBpZiBsZW4o
c3lzLmFyZ3YpID4gMjoKLSAgICAgICAgICAgIGltcG9ydCBob3RzaG90Ci0gICAgICAgICAgICBp
bXBvcnQgaG90c2hvdC5zdGF0cwotICAgICAgICAgICAgcHJvZiA9IGhvdHNob3QuUHJvZmlsZSgn
c3RhdHMucHJvZicpCi0gICAgICAgICAgICBwcm9mLnJ1bmNhbGwoeC5wYXJzZSwgc3lzLmFyZ3Zb
MV0sIEZhbHNlKQotICAgICAgICAgICAgcHJvZi5jbG9zZSgpCi0gICAgICAgICAgICBzdGF0cyA9
IGhvdHNob3Quc3RhdHMubG9hZCgnc3RhdHMucHJvZicpCi0gICAgICAgICAgICBzdGF0cy5zdHJp
cF9kaXJzKCkKLSAgICAgICAgICAgIHN0YXRzLnNvcnRfc3RhdHMoJ3RpbWUnKQotICAgICAgICAg
ICAgc3RhdHMucHJpbnRfc3RhdHMoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeC5wYXJz
ZShzeXMuYXJndlsxXSkKLSAgICBlbHNlOgotICAgICAgICBwcmludCgiIiJVc2FnZTogcHl0aG9u
IG1vY2tQYXJzZXIucHkgZmlsZW5hbWUgW3N0YXRzXQotICAgICAgICBJZiBzdGF0cyBpcyBzcGVj
aWZpZWQgdGhlIGhvdHNob3RzIHByb2ZpbGVyIHdpbGwgcnVuIGFuZCBvdXRwdXQgdGhlCi0gICAg
ICAgIHN0YXRzIGluc3RlYWQuCi0gICAgICAgICIiIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIv
dGVzdHMvcGVyZm9ybWFuY2UvY29uY2F0ZW5hdGlvbi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvcGVy
Zm9ybWFuY2UvY29uY2F0ZW5hdGlvbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTE0NjUwMzZlNTJiMTVlMTVhZjQwYjQzOGI5ODk5YTlmZGY0NTM3MC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3BlcmZvcm1h
bmNlL2NvbmNhdGVuYXRpb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1mcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVuaWNvZGVfbGl0
ZXJhbHMKLQotCi1kZWYgZjEoKToKLSAgICB4ID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCi0gICAgeSA9ICJBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgIHogPSAiQUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICB4ICs9IHkgKyB6
Ci0KLQotZGVmIGYyKCk6Ci0gICAgeCA9ICJBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWkFCQ0RF
RkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgIHkgPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldY
WVpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICB6ID0gIkFCQ0RFRkdISUpLTE1OT1BR
UlNUVVZXWFlaQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCi0gICAgeCA9IHggKyB5ICsgegot
Ci0KLWRlZiBmMygpOgotICAgIHggPSAiQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpBQkNERUZH
SElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICB5ID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCi0gICAgeiA9ICJBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgIHggPSAiIi5qb2luKCh4LCB5
LCB6KSkKLQotCi1kZWYgZjQoKToKLSAgICB4ID0gIkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFla
QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVoiCi0gICAgeSA9ICJBQkNERUZHSElKS0xNTk9QUVJT
VFVWV1hZWkFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaIgotICAgIHogPSAiQUJDREVGR0hJSktM
TU5PUFFSU1RVVldYWVpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWiIKLSAgICB4ID0gIiVzJXMl
cyIgJSAoeCwgeSwgeikKLQotaW1wb3J0IHRpbWVpdAotZm9yIHggaW4gcmFuZ2UoNCk6Ci0gICAg
c3RhdGVtZW50ID0gImYlcyIgJSAoeCArIDEpCi0gICAgdCA9IHRpbWVpdC5UaW1lcihzdGF0ZW1l
bnQsICJmcm9tIF9fbWFpbl9fIGltcG9ydCAiICsgc3RhdGVtZW50KQotICAgIHIgPSB0LnJlcGVh
dCgzLCAxMDAwMDAwKQotICAgIHByaW50KHIsIG1pbihyKSkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVs
aWIvdGVzdHMvcGVyZm9ybWFuY2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Bl
cmZvcm1hbmNlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
NjcwZWY5ZjlhMDNlZWRhMzdjNDkxM2Q4ZDk0ZTVmZjk2YWVhNDkzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvcGVyZm9ybWFu
Y2UvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0
aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1
bGliL2h0bWw1bGliL3Rlc3RzL3BlcmZvcm1hbmNlL2NvbmNhdGVuYXRpb24ucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRt
bDVsaWIvaHRtbDVsaWIvdGVzdHMvc3VwcG9ydC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc3VwcG9y
dC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFmMmQyYTA3MmQ3YTEyMTI3OWRh
ZTAzMDBkOTA0YjFjZDU2ZTA4Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3N1cHBvcnQucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwxNzcgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRp
dmlzaW9uLCB1bmljb2RlX2xpdGVyYWxzCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0
IGNvZGVjcwotaW1wb3J0IGdsb2IKLWltcG9ydCB4bWwuc2F4LmhhbmRsZXIKLQotYmFzZV9wYXRo
ID0gb3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0KLQotdGVzdF9kaXIgPSBvcy5wYXRoLmpvaW4o
YmFzZV9wYXRoLCAndGVzdGRhdGEnKQotc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguYWJzcGF0
aChvcy5wYXRoLmpvaW4oYmFzZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3MucGF0aC5wYXJkaXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnBhcmRpcikpKQotCi1mcm9tIGh0bWw1
bGliIGltcG9ydCB0cmVlYnVpbGRlcnMKLWRlbCBiYXNlX3BhdGgKLQotIyBCdWlsZCBhIGRpY3Qg
b2YgYXZhbGlhYmxlIHRyZWVzCi10cmVlVHlwZXMgPSB7IkRPTSI6IHRyZWVidWlsZGVycy5nZXRU
cmVlQnVpbGRlcigiZG9tIil9Ci0KLSMgVHJ5IHdoYXRldmVyIGV0cmVlIGltcGxlbWVudGF0aW9u
cyBhcmUgYXZhbGlhYmxlIGZyb20gYSBsaXN0IHRoYXQgYXJlCi0jInN1cHBvc2VkIiB0byB3b3Jr
Ci10cnk6Ci0gICAgaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50VHJlZSBhcyBFbGVtZW50VHJlZQot
ICAgIHRyZWVUeXBlc1snRWxlbWVudFRyZWUnXSA9IHRyZWVidWlsZGVycy5nZXRUcmVlQnVpbGRl
cigiZXRyZWUiLCBFbGVtZW50VHJlZSwgZnVsbFRyZWU9VHJ1ZSkKLWV4Y2VwdCBJbXBvcnRFcnJv
cjoKLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBlbGVtZW50dHJlZS5FbGVtZW50VHJlZSBhcyBF
bGVtZW50VHJlZQotICAgICAgICB0cmVlVHlwZXNbJ0VsZW1lbnRUcmVlJ10gPSB0cmVlYnVpbGRl
cnMuZ2V0VHJlZUJ1aWxkZXIoImV0cmVlIiwgRWxlbWVudFRyZWUsIGZ1bGxUcmVlPVRydWUpCi0g
ICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KLXRyeToKLSAgICBpbXBvcnQg
eG1sLmV0cmVlLmNFbGVtZW50VHJlZSBhcyBjRWxlbWVudFRyZWUKLSAgICB0cmVlVHlwZXNbJ2NF
bGVtZW50VHJlZSddID0gdHJlZWJ1aWxkZXJzLmdldFRyZWVCdWlsZGVyKCJldHJlZSIsIGNFbGVt
ZW50VHJlZSwgZnVsbFRyZWU9VHJ1ZSkKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICB0cnk6Ci0g
ICAgICAgIGltcG9ydCBjRWxlbWVudFRyZWUKLSAgICAgICAgdHJlZVR5cGVzWydjRWxlbWVudFRy
ZWUnXSA9IHRyZWVidWlsZGVycy5nZXRUcmVlQnVpbGRlcigiZXRyZWUiLCBjRWxlbWVudFRyZWUs
IGZ1bGxUcmVlPVRydWUpCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0K
LXRyeToKLSAgICBpbXBvcnQgbHhtbC5ldHJlZSBhcyBseG1sICAjIGZsYWtlODogbm9xYQotZXhj
ZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6Ci0gICAgdHJlZVR5cGVzWydseG1sJ10g
PSB0cmVlYnVpbGRlcnMuZ2V0VHJlZUJ1aWxkZXIoImx4bWwiKQotCi0KLWRlZiBnZXRfZGF0YV9m
aWxlcyhzdWJkaXJlY3RvcnksIGZpbGVzPScqLmRhdCcpOgotICAgIHJldHVybiBnbG9iLmdsb2Io
b3MucGF0aC5qb2luKHRlc3RfZGlyLCBzdWJkaXJlY3RvcnksIGZpbGVzKSkKLQotCi1jbGFzcyBE
ZWZhdWx0RGljdChkaWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZGVmYXVsdCwgKmFyZ3Ms
ICoqa3dhcmdzKToKLSAgICAgICAgc2VsZi5kZWZhdWx0ID0gZGVmYXVsdAotICAgICAgICBkaWN0
Ll9faW5pdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhz
ZWxmLCBrZXkpOgotICAgICAgICByZXR1cm4gZGljdC5nZXQoc2VsZiwga2V5LCBzZWxmLmRlZmF1
bHQpCi0KLQotY2xhc3MgVGVzdERhdGEob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZW5hbWUsIG5ld1Rlc3RIZWFkaW5nPSJkYXRhIiwgZW5jb2Rpbmc9InV0ZjgiKToKLSAgICAg
ICAgaWYgZW5jb2RpbmcgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuZiA9IG9wZW4oZmlsZW5h
bWUsIG1vZGU9InJiIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZiA9IGNvZGVj
cy5vcGVuKGZpbGVuYW1lLCBlbmNvZGluZz1lbmNvZGluZykKLSAgICAgICAgc2VsZi5lbmNvZGlu
ZyA9IGVuY29kaW5nCi0gICAgICAgIHNlbGYubmV3VGVzdEhlYWRpbmcgPSBuZXdUZXN0SGVhZGlu
ZwotCi0gICAgZGVmIF9fZGVsX18oc2VsZik6Ci0gICAgICAgIHNlbGYuZi5jbG9zZSgpCi0KLSAg
ICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAgICAgIGRhdGEgPSBEZWZhdWx0RGljdChOb25lKQot
ICAgICAgICBrZXkgPSBOb25lCi0gICAgICAgIGZvciBsaW5lIGluIHNlbGYuZjoKLSAgICAgICAg
ICAgIGhlYWRpbmcgPSBzZWxmLmlzU2VjdGlvbkhlYWRpbmcobGluZSkKLSAgICAgICAgICAgIGlm
IGhlYWRpbmc6Ci0gICAgICAgICAgICAgICAgaWYgZGF0YSBhbmQgaGVhZGluZyA9PSBzZWxmLm5l
d1Rlc3RIZWFkaW5nOgotICAgICAgICAgICAgICAgICAgICAjIFJlbW92ZSB0cmFpbGluZyBuZXds
aW5lCi0gICAgICAgICAgICAgICAgICAgIGRhdGFba2V5XSA9IGRhdGFba2V5XVs6LTFdCi0gICAg
ICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYubm9ybWFsaXNlT3V0cHV0KGRhdGEpCi0gICAgICAg
ICAgICAgICAgICAgIGRhdGEgPSBEZWZhdWx0RGljdChOb25lKQotICAgICAgICAgICAgICAgIGtl
eSA9IGhlYWRpbmcKLSAgICAgICAgICAgICAgICBkYXRhW2tleV0gPSAiIiBpZiBzZWxmLmVuY29k
aW5nIGVsc2UgYiIiCi0gICAgICAgICAgICBlbGlmIGtleSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICBkYXRhW2tleV0gKz0gbGluZQotICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAg
eWllbGQgc2VsZi5ub3JtYWxpc2VPdXRwdXQoZGF0YSkKLQotICAgIGRlZiBpc1NlY3Rpb25IZWFk
aW5nKHNlbGYsIGxpbmUpOgotICAgICAgICAiIiJJZiB0aGUgY3VycmVudCBoZWFkaW5nIGlzIGEg
dGVzdCBzZWN0aW9uIGhlYWRpbmcgcmV0dXJuIHRoZSBoZWFkaW5nLAotICAgICAgICBvdGhlcndp
c2UgcmV0dXJuIEZhbHNlIiIiCi0gICAgICAgICMgcHJpbnQobGluZSkKLSAgICAgICAgaWYgbGlu
ZS5zdGFydHN3aXRoKCIjIiBpZiBzZWxmLmVuY29kaW5nIGVsc2UgYiIjIik6Ci0gICAgICAgICAg
ICByZXR1cm4gbGluZVsxOl0uc3RyaXAoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLSAgICBkZWYgbm9ybWFsaXNlT3V0cHV0KHNlbGYsIGRhdGEpOgotICAgICAg
ICAjIFJlbW92ZSB0cmFpbGluZyBuZXdsaW5lcwotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBk
YXRhLml0ZW1zKCk6Ci0gICAgICAgICAgICBpZiB2YWx1ZS5lbmRzd2l0aCgiXG4iIGlmIHNlbGYu
ZW5jb2RpbmcgZWxzZSBiIlxuIik6Ci0gICAgICAgICAgICAgICAgZGF0YVtrZXldID0gdmFsdWVb
Oi0xXQotICAgICAgICByZXR1cm4gZGF0YQotCi0KLWRlZiBjb252ZXJ0KHN0cmlwQ2hhcnMpOgot
ICAgIGRlZiBjb252ZXJ0RGF0YShkYXRhKToKLSAgICAgICAgIiIiY29udmVydCB0aGUgb3V0cHV0
IG9mIHN0cihkb2N1bWVudCkgdG8gdGhlIGZvcm1hdCB1c2VkIGluIHRoZSB0ZXN0Y2FzZXMiIiIK
LSAgICAgICAgZGF0YSA9IGRhdGEuc3BsaXQoIlxuIikKLSAgICAgICAgcnYgPSBbXQotICAgICAg
ICBmb3IgbGluZSBpbiBkYXRhOgotICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJ8Iik6
Ci0gICAgICAgICAgICAgICAgcnYuYXBwZW5kKGxpbmVbc3RyaXBDaGFyczpdKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBydi5hcHBlbmQobGluZSkKLSAgICAgICAgcmV0dXJu
ICJcbiIuam9pbihydikKLSAgICByZXR1cm4gY29udmVydERhdGEKLQotY29udmVydEV4cGVjdGVk
ID0gY29udmVydCgyKQotCi0KLWRlZiBlcnJvck1lc3NhZ2UoaW5wdXQsIGV4cGVjdGVkLCBhY3R1
YWwpOgotICAgIG1zZyA9ICgiSW5wdXQ6XG4lc1xuRXhwZWN0ZWQ6XG4lc1xuUmVjaWV2ZWRcbiVz
XG4iICUKLSAgICAgICAgICAgKHJlcHIoaW5wdXQpLCByZXByKGV4cGVjdGVkKSwgcmVwcihhY3R1
YWwpKSkKLSAgICBpZiBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDI6Ci0gICAgICAgIG1zZyA9
IG1zZy5lbmNvZGUoImFzY2lpIiwgImJhY2tzbGFzaHJlcGxhY2UiKQotICAgIHJldHVybiBtc2cK
LQotCi1jbGFzcyBUcmFjaW5nU2F4SGFuZGxlcih4bWwuc2F4LmhhbmRsZXIuQ29udGVudEhhbmRs
ZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgeG1sLnNheC5oYW5kbGVyLkNv
bnRlbnRIYW5kbGVyLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYudmlzaXRlZCA9IFtdCi0K
LSAgICBkZWYgc3RhcnREb2N1bWVudChzZWxmKToKLSAgICAgICAgc2VsZi52aXNpdGVkLmFwcGVu
ZCgnc3RhcnREb2N1bWVudCcpCi0KLSAgICBkZWYgZW5kRG9jdW1lbnQoc2VsZik6Ci0gICAgICAg
IHNlbGYudmlzaXRlZC5hcHBlbmQoJ2VuZERvY3VtZW50JykKLQotICAgIGRlZiBzdGFydFByZWZp
eE1hcHBpbmcoc2VsZiwgcHJlZml4LCB1cmkpOgotICAgICAgICAjIFRoZXNlIGFyZSBpZ25vcmVk
IGFzIHRoZWlyIG9yZGVyIGlzIG5vdCBndWFyYW50ZWVkCi0gICAgICAgIHBhc3MKLQotICAgIGRl
ZiBlbmRQcmVmaXhNYXBwaW5nKHNlbGYsIHByZWZpeCk6Ci0gICAgICAgICMgVGhlc2UgYXJlIGln
bm9yZWQgYXMgdGhlaXIgb3JkZXIgaXMgbm90IGd1YXJhbnRlZWQKLSAgICAgICAgcGFzcwotCi0g
ICAgZGVmIHN0YXJ0RWxlbWVudChzZWxmLCBuYW1lLCBhdHRycyk6Ci0gICAgICAgIHNlbGYudmlz
aXRlZC5hcHBlbmQoKCdzdGFydEVsZW1lbnQnLCBuYW1lLCBhdHRycykpCi0KLSAgICBkZWYgZW5k
RWxlbWVudChzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi52aXNpdGVkLmFwcGVuZCgoJ2VuZEVs
ZW1lbnQnLCBuYW1lKSkKLQotICAgIGRlZiBzdGFydEVsZW1lbnROUyhzZWxmLCBuYW1lLCBxbmFt
ZSwgYXR0cnMpOgotICAgICAgICBzZWxmLnZpc2l0ZWQuYXBwZW5kKCgnc3RhcnRFbGVtZW50TlMn
LCBuYW1lLCBxbmFtZSwgZGljdChhdHRycykpKQotCi0gICAgZGVmIGVuZEVsZW1lbnROUyhzZWxm
LCBuYW1lLCBxbmFtZSk6Ci0gICAgICAgIHNlbGYudmlzaXRlZC5hcHBlbmQoKCdlbmRFbGVtZW50
TlMnLCBuYW1lLCBxbmFtZSkpCi0KLSAgICBkZWYgY2hhcmFjdGVycyhzZWxmLCBjb250ZW50KToK
LSAgICAgICAgc2VsZi52aXNpdGVkLmFwcGVuZCgoJ2NoYXJhY3RlcnMnLCBjb250ZW50KSkKLQot
ICAgIGRlZiBpZ25vcmFibGVXaGl0ZXNwYWNlKHNlbGYsIHdoaXRlc3BhY2UpOgotICAgICAgICBz
ZWxmLnZpc2l0ZWQuYXBwZW5kKCgnaWdub3JhYmxlV2hpdGVzcGFjZScsIHdoaXRlc3BhY2UpKQot
Ci0gICAgZGVmIHByb2Nlc3NpbmdJbnN0cnVjdGlvbihzZWxmLCB0YXJnZXQsIGRhdGEpOgotICAg
ICAgICBzZWxmLnZpc2l0ZWQuYXBwZW5kKCgncHJvY2Vzc2luZ0luc3RydWN0aW9uJywgdGFyZ2V0
LCBkYXRhKSkKLQotICAgIGRlZiBza2lwcGVkRW50aXR5KHNlbGYsIG5hbWUpOgotICAgICAgICBz
ZWxmLnZpc2l0ZWQuYXBwZW5kKCgnc2tpcHBlZEVudGl0eScsIG5hbWUpKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9odG1sNWxpYi90ZXN0cy90ZXN0X2VuY29kaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0
X2VuY29kaW5nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzc0Y2UwZjYwMGYw
NGEzNWYyYTBlZTE3MDE1YWQ0MjUwOTUwMzk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9lbmNvZGluZy5weQorKysg
L2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1
dGVfaW1wb3J0LCBkaXZpc2lvbiwgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQgb3MKLWltcG9y
dCB1bml0dGVzdAotCi10cnk6Ci0gICAgdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0RXF1YWwKLWV4
Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbCA9
IHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydEVxdWFscwotCi1mcm9tIC5zdXBwb3J0IGltcG9ydCBn
ZXRfZGF0YV9maWxlcywgVGVzdERhdGEsIHRlc3RfZGlyLCBlcnJvck1lc3NhZ2UKLWZyb20gaHRt
bDVsaWIgaW1wb3J0IEhUTUxQYXJzZXIsIGlucHV0c3RyZWFtCi0KLQotY2xhc3MgSHRtbDVFbmNv
ZGluZ1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9jb2RlY19uYW1l
X2Eoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5wdXRzdHJlYW0uY29kZWNOYW1l
KCJ1dGYtOCIpLCAidXRmLTgiKQotCi0gICAgZGVmIHRlc3RfY29kZWNfbmFtZV9iKHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlucHV0c3RyZWFtLmNvZGVjTmFtZSgidXRmOCIpLCAi
dXRmLTgiKQotCi0gICAgZGVmIHRlc3RfY29kZWNfbmFtZV9jKHNlbGYpOgotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKGlucHV0c3RyZWFtLmNvZGVjTmFtZSgiICB1dGY4ICAiKSwgInV0Zi04IikK
LQotICAgIGRlZiB0ZXN0X2NvZGVjX25hbWVfZChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChpbnB1dHN0cmVhbS5jb2RlY05hbWUoIklTT184ODU5LS0xIiksICJ3aW5kb3dzLTEyNTIi
KQotCi0KLWRlZiBydW5QYXJzZXJFbmNvZGluZ1Rlc3QoZGF0YSwgZW5jb2RpbmcpOgotICAgIHAg
PSBIVE1MUGFyc2VyKCkKLSAgICBhc3NlcnQgcC5kb2N1bWVudEVuY29kaW5nIGlzIE5vbmUKLSAg
ICBwLnBhcnNlKGRhdGEsIHVzZUNoYXJkZXQ9RmFsc2UpCi0gICAgZW5jb2RpbmcgPSBlbmNvZGlu
Zy5sb3dlcigpLmRlY29kZSgiYXNjaWkiKQotCi0gICAgYXNzZXJ0IGVuY29kaW5nID09IHAuZG9j
dW1lbnRFbmNvZGluZywgZXJyb3JNZXNzYWdlKGRhdGEsIGVuY29kaW5nLCBwLmRvY3VtZW50RW5j
b2RpbmcpCi0KLQotZGVmIHJ1blByZVNjYW5FbmNvZGluZ1Rlc3QoZGF0YSwgZW5jb2RpbmcpOgot
ICAgIHN0cmVhbSA9IGlucHV0c3RyZWFtLkhUTUxCaW5hcnlJbnB1dFN0cmVhbShkYXRhLCBjaGFy
ZGV0PUZhbHNlKQotICAgIGVuY29kaW5nID0gZW5jb2RpbmcubG93ZXIoKS5kZWNvZGUoImFzY2lp
IikKLQotICAgICMgVmVyeSBjcnVkZSB3YXkgdG8gaWdub3JlIGlycmVsZXZhbnQgdGVzdHMKLSAg
ICBpZiBsZW4oZGF0YSkgPiBzdHJlYW0ubnVtQnl0ZXNNZXRhOgotICAgICAgICByZXR1cm4KLQot
ICAgIGFzc2VydCBlbmNvZGluZyA9PSBzdHJlYW0uY2hhckVuY29kaW5nWzBdLCBlcnJvck1lc3Nh
Z2UoZGF0YSwgZW5jb2RpbmcsIHN0cmVhbS5jaGFyRW5jb2RpbmdbMF0pCi0KLQotZGVmIHRlc3Rf
ZW5jb2RpbmcoKToKLSAgICBmb3IgZmlsZW5hbWUgaW4gZ2V0X2RhdGFfZmlsZXMoImVuY29kaW5n
Iik6Ci0gICAgICAgIHRlc3RzID0gVGVzdERhdGEoZmlsZW5hbWUsIGIiZGF0YSIsIGVuY29kaW5n
PU5vbmUpCi0gICAgICAgIGZvciBpZHgsIHRlc3QgaW4gZW51bWVyYXRlKHRlc3RzKToKLSAgICAg
ICAgICAgIHlpZWxkIChydW5QYXJzZXJFbmNvZGluZ1Rlc3QsIHRlc3RbYidkYXRhJ10sIHRlc3Rb
YidlbmNvZGluZyddKQotICAgICAgICAgICAgeWllbGQgKHJ1blByZVNjYW5FbmNvZGluZ1Rlc3Qs
IHRlc3RbYidkYXRhJ10sIHRlc3RbYidlbmNvZGluZyddKQotCi10cnk6Ci0gICAgdHJ5OgotICAg
ICAgICBpbXBvcnQgY2hhcmFkZSAgIyBmbGFrZTg6IG5vcWEKLSAgICBleGNlcHQgSW1wb3J0RXJy
b3I6Ci0gICAgICAgIGltcG9ydCBjaGFyZGV0ICAjIGZsYWtlODogbm9xYQotZXhjZXB0IEltcG9y
dEVycm9yOgotICAgIHByaW50KCJjaGFyYWRlL2NoYXJkZXQgbm90IGZvdW5kLCBza2lwcGluZyBj
aGFyZGV0IHRlc3RzIikKLWVsc2U6Ci0gICAgZGVmIHRlc3RfY2hhcmRldCgpOgotICAgICAgICB3
aXRoIG9wZW4ob3MucGF0aC5qb2luKHRlc3RfZGlyLCAiZW5jb2RpbmciICwgImNoYXJkZXQiLCAi
dGVzdF9iaWc1LnR4dCIpLCAicmIiKSBhcyBmcDoKLSAgICAgICAgICAgIGVuY29kaW5nID0gaW5w
dXRzdHJlYW0uSFRNTElucHV0U3RyZWFtKGZwLnJlYWQoKSkuY2hhckVuY29kaW5nCi0gICAgICAg
ICAgICBhc3NlcnQgZW5jb2RpbmdbMF0ubG93ZXIoKSA9PSAiYmlnNSIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
aHRtbDVsaWIvdGVzdHMvdGVzdF9wYXJzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfcGFy
c2VyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzBjZGI0MmQ1OWNhMjhmOGVm
M2ExNzhiZDEwNTc1ZDQ0ZDMwYjg5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9wYXJzZXIucHkKKysrIC9kZXYvbnVs
bApAQCAtMSw5NiArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHVuaWNvZGVfbGl0ZXJhbHMKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1p
bXBvcnQgdHJhY2ViYWNrCi1pbXBvcnQgd2FybmluZ3MKLWltcG9ydCByZQotCi13YXJuaW5ncy5z
aW1wbGVmaWx0ZXIoImVycm9yIikKLQotZnJvbSAuc3VwcG9ydCBpbXBvcnQgZ2V0X2RhdGFfZmls
ZXMKLWZyb20gLnN1cHBvcnQgaW1wb3J0IFRlc3REYXRhLCBjb252ZXJ0LCBjb252ZXJ0RXhwZWN0
ZWQsIHRyZWVUeXBlcwotZnJvbSBodG1sNWxpYiBpbXBvcnQgaHRtbDVwYXJzZXIsIGNvbnN0YW50
cwotCi0jIFJ1biB0aGUgcGFyc2UgZXJyb3IgY2hlY2tzCi1jaGVja1BhcnNlRXJyb3JzID0gRmFs
c2UKLQotIyBYWFggLSBUaGVyZSBzaG91bGQganVzdCBiZSBvbmUgZnVuY3Rpb24gaGVyZSBidXQg
Zm9yIHNvbWUgcmVhc29uIHRoZSB0ZXN0Y2FzZQotIyBmb3JtYXQgZGlmZmVycyBmcm9tIHRoZSB0
cmVlZHVtcCBmb3JtYXQgYnkgYSBzaW5nbGUgc3BhY2UgY2hhcmFjdGVyCi0KLQotZGVmIGNvbnZl
cnRUcmVlRHVtcChkYXRhKToKLSAgICByZXR1cm4gIlxuIi5qb2luKGNvbnZlcnQoMykoZGF0YSku
c3BsaXQoIlxuIilbMTpdKQotCi1uYW1lc3BhY2VFeHBlY3RlZCA9IHJlLmNvbXBpbGUociJeKFxz
Kik8KFxTKyk+IiwgcmUuTSkuc3ViCi0KLQotZGVmIHJ1blBhcnNlclRlc3QoaW5uZXJIVE1MLCBp
bnB1dCwgZXhwZWN0ZWQsIGVycm9ycywgdHJlZUNsYXNzLAotICAgICAgICAgICAgICAgICAgbmFt
ZXNwYWNlSFRNTEVsZW1lbnRzKToKLSAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJl
Y29yZD1UcnVlKSBhcyBjYXVnaHRXYXJuaW5nczoKLSAgICAgICAgd2FybmluZ3Muc2ltcGxlZmls
dGVyKCJhbHdheXMiKQotICAgICAgICBwID0gaHRtbDVwYXJzZXIuSFRNTFBhcnNlcih0cmVlPXRy
ZWVDbGFzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlSFRN
TEVsZW1lbnRzPW5hbWVzcGFjZUhUTUxFbGVtZW50cykKLQotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICBpZiBpbm5lckhUTUw6Ci0gICAgICAgICAgICAgICAgZG9jdW1lbnQgPSBwLnBhcnNlRnJh
Z21lbnQoaW5wdXQsIGlubmVySFRNTCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgZG9jdW1lbnQgPSBwLnBhcnNlKGlucHV0KQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAg
ICBlcnJvck1zZyA9ICJcbiIuam9pbihbIlxuXG5JbnB1dDoiLCBpbnB1dCwgIlxuRXhwZWN0ZWQ6
IiwgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuVHJhY2Vi
YWNrOiIsIHRyYWNlYmFjay5mb3JtYXRfZXhjKCldKQotICAgICAgICAgICAgYXNzZXJ0IEZhbHNl
LCBlcnJvck1zZwotCi0gICAgb3RoZXJXYXJuaW5ncyA9IFt4IGZvciB4IGluIGNhdWdodFdhcm5p
bmdzCi0gICAgICAgICAgICAgICAgICAgICBpZiBub3QgaXNzdWJjbGFzcyh4LmNhdGVnb3J5LCBj
b25zdGFudHMuRGF0YUxvc3NXYXJuaW5nKV0KLSAgICBhc3NlcnQgbGVuKG90aGVyV2FybmluZ3Mp
ID09IDAsIFsoeC5jYXRlZ29yeSwgeC5tZXNzYWdlKSBmb3IgeCBpbiBvdGhlcldhcm5pbmdzXQot
ICAgIGlmIGxlbihjYXVnaHRXYXJuaW5ncyk6Ci0gICAgICAgIHJldHVybgotCi0gICAgb3V0cHV0
ID0gY29udmVydFRyZWVEdW1wKHAudHJlZS50ZXN0U2VyaWFsaXplcihkb2N1bWVudCkpCi0KLSAg
ICBleHBlY3RlZCA9IGNvbnZlcnRFeHBlY3RlZChleHBlY3RlZCkKLSAgICBpZiBuYW1lc3BhY2VI
VE1MRWxlbWVudHM6Ci0gICAgICAgIGV4cGVjdGVkID0gbmFtZXNwYWNlRXhwZWN0ZWQociJcMTxo
dG1sIFwyPiIsIGV4cGVjdGVkKQotCi0gICAgZXJyb3JNc2cgPSAiXG4iLmpvaW4oWyJcblxuSW5w
dXQ6IiwgaW5wdXQsICJcbkV4cGVjdGVkOiIsIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAiXG5SZWNlaXZlZDoiLCBvdXRwdXRdKQotICAgIGFzc2VydCBleHBlY3RlZCA9PSBv
dXRwdXQsIGVycm9yTXNnCi0KLSAgICBlcnJTdHIgPSBbXQotICAgIGZvciAobGluZSwgY29sKSwg
ZXJyb3Jjb2RlLCBkYXRhdmFycyBpbiBwLmVycm9yczoKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFu
Y2UoZGF0YXZhcnMsIGRpY3QpLCAiJXMsICVzIiAlIChlcnJvcmNvZGUsIHJlcHIoZGF0YXZhcnMp
KQotICAgICAgICBlcnJTdHIuYXBwZW5kKCJMaW5lOiAlaSBDb2w6ICVpICVzIiAlIChsaW5lLCBj
b2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
YW50cy5FW2Vycm9yY29kZV0gJSBkYXRhdmFycykpCi0KLSAgICBlcnJvck1zZzIgPSAiXG4iLmpv
aW4oWyJcblxuSW5wdXQ6IiwgaW5wdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG5F
eHBlY3RlZCBlcnJvcnMgKCIgKyBzdHIobGVuKGVycm9ycykpICsgIik6XG4iICsgIlxuIi5qb2lu
KGVycm9ycyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiXG5BY3R1YWwgZXJyb3JzICgi
ICsgc3RyKGxlbihwLmVycm9ycykpICsgIik6XG4iICsgIlxuIi5qb2luKGVyclN0cildKQotICAg
IGlmIGNoZWNrUGFyc2VFcnJvcnM6Ci0gICAgICAgICAgICBhc3NlcnQgbGVuKHAuZXJyb3JzKSA9
PSBsZW4oZXJyb3JzKSwgZXJyb3JNc2cyCi0KLQotZGVmIHRlc3RfcGFyc2VyKCk6Ci0gICAgc3lz
LnN0ZGVyci53cml0ZSgnVGVzdGluZyB0cmVlIGJ1aWxkZXJzICcgKyAiICIuam9pbihsaXN0KHRy
ZWVUeXBlcy5rZXlzKCkpKSArICJcbiIpCi0gICAgZmlsZXMgPSBnZXRfZGF0YV9maWxlcygndHJl
ZS1jb25zdHJ1Y3Rpb24nKQotCi0gICAgZm9yIGZpbGVuYW1lIGluIGZpbGVzOgotICAgICAgICB0
ZXN0TmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpLnJlcGxhY2UoIi5kYXQiLCAiIikK
LSAgICAgICAgaWYgdGVzdE5hbWUgaW4gKCJ0ZW1wbGF0ZSIsKToKLSAgICAgICAgICAgIGNvbnRp
bnVlCi0KLSAgICAgICAgdGVzdHMgPSBUZXN0RGF0YShmaWxlbmFtZSwgImRhdGEiKQotCi0gICAg
ICAgIGZvciBpbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMpOgotICAgICAgICAgICAgaW5w
dXQsIGVycm9ycywgaW5uZXJIVE1MLCBleHBlY3RlZCA9IFt0ZXN0W2tleV0gZm9yIGtleSBpbgot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RhdGEn
LCAnZXJyb3JzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdkb2N1bWVudC1mcmFnbWVudCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZG9jdW1lbnQnKV0KLSAgICAgICAgICAgIGlmIGVycm9y
czoKLSAgICAgICAgICAgICAgICBlcnJvcnMgPSBlcnJvcnMuc3BsaXQoIlxuIikKLQotICAgICAg
ICAgICAgZm9yIHRyZWVOYW1lLCB0cmVlQ2xzIGluIHRyZWVUeXBlcy5pdGVtcygpOgotICAgICAg
ICAgICAgICAgIGZvciBuYW1lc3BhY2VIVE1MRWxlbWVudHMgaW4gKFRydWUsIEZhbHNlKToKLSAg
ICAgICAgICAgICAgICAgICAgeWllbGQgKHJ1blBhcnNlclRlc3QsIGlubmVySFRNTCwgaW5wdXQs
IGV4cGVjdGVkLCBlcnJvcnMsIHRyZWVDbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBu
YW1lc3BhY2VIVE1MRWxlbWVudHMpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rf
cGFyc2VyMi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9wYXJzZXIyLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAyMGJiZGYzMTc5YzllODE1YWJiMmM3YmRlOGIyYjI0ZmE4OTRl
ODZmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRt
bDVsaWIvdGVzdHMvdGVzdF9wYXJzZXIyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBA
QAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCB1bmlj
b2RlX2xpdGVyYWxzCi0KLWltcG9ydCBpbwotCi1mcm9tIC4gaW1wb3J0IHN1cHBvcnQgICMgZmxh
a2U4OiBub3FhCi1mcm9tIGh0bWw1bGliIGltcG9ydCBodG1sNXBhcnNlcgotZnJvbSBodG1sNWxp
Yi5jb25zdGFudHMgaW1wb3J0IG5hbWVzcGFjZXMKLWZyb20gaHRtbDVsaWIgaW1wb3J0IHRyZWVi
dWlsZGVycwotCi1pbXBvcnQgdW5pdHRlc3QKLQotIyB0ZXN0cyB0aGF0IGFyZW4ndCBhdXRvZ2Vu
ZXJhdGVkIGZyb20gdGV4dCBmaWxlcwotCi0KLWNsYXNzIE1vcmVQYXJzZXJUZXN0cyh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZG9tX3Ry
ZWUgPSB0cmVlYnVpbGRlcnMuZ2V0VHJlZUJ1aWxkZXIoImRvbSIpCi0KLSAgICBkZWYgdGVzdF9h
c3NlcnREb2N0eXBlQ2xvbmVhYmxlKHNlbGYpOgotICAgICAgICBwYXJzZXIgPSBodG1sNXBhcnNl
ci5IVE1MUGFyc2VyKHRyZWU9c2VsZi5kb21fdHJlZSkKLSAgICAgICAgZG9jID0gcGFyc2VyLnBh
cnNlKCc8IURPQ1RZUEUgSFRNTD4nKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZG9jLmNsb25l
Tm9kZShUcnVlKSkKLQotICAgIGRlZiB0ZXN0X2xpbmVfY291bnRlcihzZWxmKToKLSAgICAgICAg
IyBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvaHRtbDVsaWItZGlzY3Vzcy9icm93c2Vf
ZnJtL3RocmVhZC9mNGYwMGU0YTJmMjZkNWMwCi0gICAgICAgIHBhcnNlciA9IGh0bWw1cGFyc2Vy
LkhUTUxQYXJzZXIodHJlZT1zZWxmLmRvbV90cmVlKQotICAgICAgICBwYXJzZXIucGFyc2UoIjxw
cmU+XG54XG4mZ3Q7XG48L3ByZT4iKQotCi0gICAgZGVmIHRlc3RfbmFtZXNwYWNlX2h0bWxfZWxl
bWVudHNfMF9kb20oc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IGh0bWw1cGFyc2VyLkhUTUxQYXJz
ZXIodHJlZT1zZWxmLmRvbV90cmVlLCBuYW1lc3BhY2VIVE1MRWxlbWVudHM9VHJ1ZSkKLSAgICAg
ICAgZG9jID0gcGFyc2VyLnBhcnNlKCI8aHRtbD48L2h0bWw+IikKLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKGRvYy5jaGlsZE5vZGVzWzBdLm5hbWVzcGFjZVVSSSA9PSBuYW1lc3BhY2VzWyJodG1s
Il0pCi0KLSAgICBkZWYgdGVzdF9uYW1lc3BhY2VfaHRtbF9lbGVtZW50c18xX2RvbShzZWxmKToK
LSAgICAgICAgcGFyc2VyID0gaHRtbDVwYXJzZXIuSFRNTFBhcnNlcih0cmVlPXNlbGYuZG9tX3Ry
ZWUsIG5hbWVzcGFjZUhUTUxFbGVtZW50cz1GYWxzZSkKLSAgICAgICAgZG9jID0gcGFyc2VyLnBh
cnNlKCI8aHRtbD48L2h0bWw+IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRvYy5jaGlsZE5v
ZGVzWzBdLm5hbWVzcGFjZVVSSSBpcyBOb25lKQotCi0gICAgZGVmIHRlc3RfbmFtZXNwYWNlX2h0
bWxfZWxlbWVudHNfMF9ldHJlZShzZWxmKToKLSAgICAgICAgcGFyc2VyID0gaHRtbDVwYXJzZXIu
SFRNTFBhcnNlcihuYW1lc3BhY2VIVE1MRWxlbWVudHM9VHJ1ZSkKLSAgICAgICAgZG9jID0gcGFy
c2VyLnBhcnNlKCI8aHRtbD48L2h0bWw+IikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpc3Qo
ZG9jKVswXS50YWcgPT0gInslc31odG1sIiAlIChuYW1lc3BhY2VzWyJodG1sIl0sKSkKLQotICAg
IGRlZiB0ZXN0X25hbWVzcGFjZV9odG1sX2VsZW1lbnRzXzFfZXRyZWUoc2VsZik6Ci0gICAgICAg
IHBhcnNlciA9IGh0bWw1cGFyc2VyLkhUTUxQYXJzZXIobmFtZXNwYWNlSFRNTEVsZW1lbnRzPUZh
bHNlKQotICAgICAgICBkb2MgPSBwYXJzZXIucGFyc2UoIjxodG1sPjwvaHRtbD4iKQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUobGlzdChkb2MpWzBdLnRhZyA9PSAiaHRtbCIpCi0KLSAgICBkZWYg
dGVzdF91bmljb2RlX2ZpbGUoc2VsZik6Ci0gICAgICAgIHBhcnNlciA9IGh0bWw1cGFyc2VyLkhU
TUxQYXJzZXIoKQotICAgICAgICBwYXJzZXIucGFyc2UoaW8uU3RyaW5nSU8oImEiKSkKLQotCi1k
ZWYgYnVpbGRUZXN0U3VpdGUoKToKLSAgICByZXR1cm4gdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2Fk
ZXIubG9hZFRlc3RzRnJvbU5hbWUoX19uYW1lX18pCi0KLQotZGVmIG1haW4oKToKLSAgICBidWls
ZFRlc3RTdWl0ZSgpCi0gICAgdW5pdHRlc3QubWFpbigpCi0KLWlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6Ci0gICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rfc2Fu
aXRpemVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X3Nhbml0aXplci5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMWNjNjg3ZGZjYWQ3ZmJiNGIyNjY5ZGE3NzIxOTcxYmU1ZWM3
OGEzYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0
bWw1bGliL3Rlc3RzL3Rlc3Rfc2FuaXRpemVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA1ICsw
LDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
dW5pY29kZV9saXRlcmFscwotCi10cnk6Ci0gICAgaW1wb3J0IGpzb24KLWV4Y2VwdCBJbXBvcnRF
cnJvcjoKLSAgICBpbXBvcnQgc2ltcGxlanNvbiBhcyBqc29uCi0KLWZyb20gaHRtbDVsaWIgaW1w
b3J0IGh0bWw1cGFyc2VyLCBzYW5pdGl6ZXIsIGNvbnN0YW50cywgdHJlZWJ1aWxkZXJzCi0KLQot
ZGVmIHRveG1sRmFjdG9yeSgpOgotICAgIHRyZWUgPSB0cmVlYnVpbGRlcnMuZ2V0VHJlZUJ1aWxk
ZXIoImV0cmVlIikKLQotICAgIGRlZiB0b3htbChlbGVtZW50KToKLSAgICAgICAgIyBlbmNvZGUv
ZGVjb2RlIHJvdW5kdHJpcCByZXF1aXJlZCBmb3IgUHl0aG9uIDIuNiBjb21wYXRpYmlsaXR5Ci0g
ICAgICAgIHJlc3VsdF9ieXRlcyA9IHRyZWUuaW1wbGVtZW50YXRpb24udG9zdHJpbmcoZWxlbWVu
dCwgZW5jb2Rpbmc9InV0Zi04IikKLSAgICAgICAgcmV0dXJuIHJlc3VsdF9ieXRlcy5kZWNvZGUo
InV0Zi04IikKLQotICAgIHJldHVybiB0b3htbAotCi0KLWRlZiBydW5TYW5pdGl6ZXJUZXN0KG5h
bWUsIGV4cGVjdGVkLCBpbnB1dCwgdG94bWw9Tm9uZSk6Ci0gICAgaWYgdG94bWwgaXMgTm9uZToK
LSAgICAgICAgdG94bWwgPSB0b3htbEZhY3RvcnkoKQotICAgIGV4cGVjdGVkID0gJycuam9pbihb
dG94bWwodG9rZW4pIGZvciB0b2tlbiBpbiBodG1sNXBhcnNlci5IVE1MUGFyc2VyKCkuCi0gICAg
ICAgICAgICAgICAgICAgICAgICBwYXJzZUZyYWdtZW50KGV4cGVjdGVkKV0pCi0gICAgZXhwZWN0
ZWQgPSBqc29uLmxvYWRzKGpzb24uZHVtcHMoZXhwZWN0ZWQpKQotICAgIGFzc2VydCBleHBlY3Rl
ZCA9PSBzYW5pdGl6ZV9odG1sKGlucHV0KQotCi0KLWRlZiBzYW5pdGl6ZV9odG1sKHN0cmVhbSwg
dG94bWw9Tm9uZSk6Ci0gICAgaWYgdG94bWwgaXMgTm9uZToKLSAgICAgICAgdG94bWwgPSB0b3ht
bEZhY3RvcnkoKQotICAgIHJldHVybiAnJy5qb2luKFt0b3htbCh0b2tlbikgZm9yIHRva2VuIGlu
Ci0gICAgICAgICAgICAgICAgICAgIGh0bWw1cGFyc2VyLkhUTUxQYXJzZXIodG9rZW5pemVyPXNh
bml0aXplci5IVE1MU2FuaXRpemVyKS4KLSAgICAgICAgICAgICAgICAgICAgcGFyc2VGcmFnbWVu
dChzdHJlYW0pXSkKLQotCi1kZWYgdGVzdF9zaG91bGRfaGFuZGxlX2FzdHJhbF9wbGFuZV9jaGFy
YWN0ZXJzKCk6Ci0gICAgYXNzZXJ0ICc8aHRtbDpwIHhtbG5zOmh0bWw9Imh0dHA6Ly93d3cudzMu
b3JnLzE5OTkveGh0bWwiPlxVMDAwMWQ0YjUgXFUwMDAxZDUzODwvaHRtbDpwPicgPT0gc2FuaXRp
emVfaHRtbCgiPHA+JiN4MWQ0YjU7ICYjeDFkNTM4OzwvcD4iKQotCi0KLWRlZiB0ZXN0X3Nhbml0
aXplcigpOgotICAgIHRveG1sID0gdG94bWxGYWN0b3J5KCkKLSAgICBmb3IgdGFnX25hbWUgaW4g
c2FuaXRpemVyLkhUTUxTYW5pdGl6ZXIuYWxsb3dlZF9lbGVtZW50czoKLSAgICAgICAgaWYgdGFn
X25hbWUgaW4gWydjYXB0aW9uJywgJ2NvbCcsICdjb2xncm91cCcsICdvcHRncm91cCcsICdvcHRp
b24nLCAndGFibGUnLCAndGJvZHknLCAndGQnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndHIn
XToKLSAgICAgICAgICAgIGNvbnRpbnVlICAjIFRPRE8KLSAgICAgICAgaWYgdGFnX25hbWUgIT0g
dGFnX25hbWUubG93ZXIoKToKLSAgICAgICAgICAgIGNvbnRpbnVlICAjIFRPRE8KLSAgICAgICAg
aWYgdGFnX25hbWUgPT0gJ2ltYWdlJzoKLSAgICAgICAgICAgIHlpZWxkIChydW5TYW5pdGl6ZXJU
ZXN0LCAidGVzdF9zaG91bGRfYWxsb3dfJXNfdGFnIiAlIHRhZ19uYW1lLAotICAgICAgICAgICAg
ICAgICAgICI8aW1nIHRpdGxlPVwiMVwiLz5mb28gJmx0O2JhZCZndDtiYXImbHQ7L2JhZCZndDsg
YmF6IiwKLSAgICAgICAgICAgICAgICAgICAiPCVzIHRpdGxlPScxJz5mb28gPGJhZD5iYXI8L2Jh
ZD4gYmF6PC8lcz4iICUgKHRhZ19uYW1lLCB0YWdfbmFtZSksCi0gICAgICAgICAgICAgICAgICAg
dG94bWwpCi0gICAgICAgIGVsaWYgdGFnX25hbWUgPT0gJ2JyJzoKLSAgICAgICAgICAgIHlpZWxk
IChydW5TYW5pdGl6ZXJUZXN0LCAidGVzdF9zaG91bGRfYWxsb3dfJXNfdGFnIiAlIHRhZ19uYW1l
LAotICAgICAgICAgICAgICAgICAgICI8YnIgdGl0bGU9XCIxXCIvPmZvbyAmbHQ7YmFkJmd0O2Jh
ciZsdDsvYmFkJmd0OyBiYXo8YnIvPiIsCi0gICAgICAgICAgICAgICAgICAgIjwlcyB0aXRsZT0n
MSc+Zm9vIDxiYWQ+YmFyPC9iYWQ+IGJhejwvJXM+IiAlICh0YWdfbmFtZSwgdGFnX25hbWUpLAot
ICAgICAgICAgICAgICAgICAgIHRveG1sKQotICAgICAgICBlbGlmIHRhZ19uYW1lIGluIGNvbnN0
YW50cy52b2lkRWxlbWVudHM6Ci0gICAgICAgICAgICB5aWVsZCAocnVuU2FuaXRpemVyVGVzdCwg
InRlc3Rfc2hvdWxkX2FsbG93XyVzX3RhZyIgJSB0YWdfbmFtZSwKLSAgICAgICAgICAgICAgICAg
ICAiPCVzIHRpdGxlPVwiMVwiLz5mb28gJmx0O2JhZCZndDtiYXImbHQ7L2JhZCZndDsgYmF6IiAl
IHRhZ19uYW1lLAotICAgICAgICAgICAgICAgICAgICI8JXMgdGl0bGU9JzEnPmZvbyA8YmFkPmJh
cjwvYmFkPiBiYXo8LyVzPiIgJSAodGFnX25hbWUsIHRhZ19uYW1lKSwKLSAgICAgICAgICAgICAg
ICAgICB0b3htbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHlpZWxkIChydW5TYW5pdGl6
ZXJUZXN0LCAidGVzdF9zaG91bGRfYWxsb3dfJXNfdGFnIiAlIHRhZ19uYW1lLAotICAgICAgICAg
ICAgICAgICAgICI8JXMgdGl0bGU9XCIxXCI+Zm9vICZsdDtiYWQmZ3Q7YmFyJmx0Oy9iYWQmZ3Q7
IGJhejwvJXM+IiAlICh0YWdfbmFtZSwgdGFnX25hbWUpLAotICAgICAgICAgICAgICAgICAgICI8
JXMgdGl0bGU9JzEnPmZvbyA8YmFkPmJhcjwvYmFkPiBiYXo8LyVzPiIgJSAodGFnX25hbWUsIHRh
Z19uYW1lKSwKLSAgICAgICAgICAgICAgICAgICB0b3htbCkKLQotICAgIGZvciB0YWdfbmFtZSBp
biBzYW5pdGl6ZXIuSFRNTFNhbml0aXplci5hbGxvd2VkX2VsZW1lbnRzOgotICAgICAgICB0YWdf
bmFtZSA9IHRhZ19uYW1lLnVwcGVyKCkKLSAgICAgICAgeWllbGQgKHJ1blNhbml0aXplclRlc3Qs
ICJ0ZXN0X3Nob3VsZF9mb3JiaWRfJXNfdGFnIiAlIHRhZ19uYW1lLAotICAgICAgICAgICAgICAg
IiZsdDslcyB0aXRsZT1cIjFcIiZndDtmb28gJmx0O2JhZCZndDtiYXImbHQ7L2JhZCZndDsgYmF6
Jmx0Oy8lcyZndDsiICUgKHRhZ19uYW1lLCB0YWdfbmFtZSksCi0gICAgICAgICAgICAgICAiPCVz
IHRpdGxlPScxJz5mb28gPGJhZD5iYXI8L2JhZD4gYmF6PC8lcz4iICUgKHRhZ19uYW1lLCB0YWdf
bmFtZSksCi0gICAgICAgICAgICAgICB0b3htbCkKLQotICAgIGZvciBhdHRyaWJ1dGVfbmFtZSBp
biBzYW5pdGl6ZXIuSFRNTFNhbml0aXplci5hbGxvd2VkX2F0dHJpYnV0ZXM6Ci0gICAgICAgIGlm
IGF0dHJpYnV0ZV9uYW1lICE9IGF0dHJpYnV0ZV9uYW1lLmxvd2VyKCk6Ci0gICAgICAgICAgICBj
b250aW51ZSAgIyBUT0RPCi0gICAgICAgIGlmIGF0dHJpYnV0ZV9uYW1lID09ICdzdHlsZSc6Ci0g
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICB5aWVsZCAocnVuU2FuaXRpemVyVGVzdCwgInRl
c3Rfc2hvdWxkX2FsbG93XyVzX2F0dHJpYnV0ZSIgJSBhdHRyaWJ1dGVfbmFtZSwKLSAgICAgICAg
ICAgICAgICI8cCAlcz1cImZvb1wiPmZvbyAmbHQ7YmFkJmd0O2JhciZsdDsvYmFkJmd0OyBiYXo8
L3A+IiAlIGF0dHJpYnV0ZV9uYW1lLAotICAgICAgICAgICAgICAgIjxwICVzPSdmb28nPmZvbyA8
YmFkPmJhcjwvYmFkPiBiYXo8L3A+IiAlIGF0dHJpYnV0ZV9uYW1lLAotICAgICAgICAgICAgICAg
dG94bWwpCi0KLSAgICBmb3IgYXR0cmlidXRlX25hbWUgaW4gc2FuaXRpemVyLkhUTUxTYW5pdGl6
ZXIuYWxsb3dlZF9hdHRyaWJ1dGVzOgotICAgICAgICBhdHRyaWJ1dGVfbmFtZSA9IGF0dHJpYnV0
ZV9uYW1lLnVwcGVyKCkKLSAgICAgICAgeWllbGQgKHJ1blNhbml0aXplclRlc3QsICJ0ZXN0X3No
b3VsZF9mb3JiaWRfJXNfYXR0cmlidXRlIiAlIGF0dHJpYnV0ZV9uYW1lLAotICAgICAgICAgICAg
ICAgIjxwPmZvbyAmbHQ7YmFkJmd0O2JhciZsdDsvYmFkJmd0OyBiYXo8L3A+IiwKLSAgICAgICAg
ICAgICAgICI8cCAlcz0nZGlzcGxheTogbm9uZTsnPmZvbyA8YmFkPmJhcjwvYmFkPiBiYXo8L3A+
IiAlIGF0dHJpYnV0ZV9uYW1lLAotICAgICAgICAgICAgICAgdG94bWwpCi0KLSAgICBmb3IgcHJv
dG9jb2wgaW4gc2FuaXRpemVyLkhUTUxTYW5pdGl6ZXIuYWxsb3dlZF9wcm90b2NvbHM6Ci0gICAg
ICAgIHlpZWxkIChydW5TYW5pdGl6ZXJUZXN0LCAidGVzdF9zaG91bGRfYWxsb3dfJXNfdXJpcyIg
JSBwcm90b2NvbCwKLSAgICAgICAgICAgICAgICI8YSBocmVmPVwiJXNcIj5mb288L2E+IiAlIHBy
b3RvY29sLAotICAgICAgICAgICAgICAgIiIiPGEgaHJlZj0iJXMiPmZvbzwvYT4iIiIgJSBwcm90
b2NvbCwKLSAgICAgICAgICAgICAgIHRveG1sKQotCi0gICAgZm9yIHByb3RvY29sIGluIHNhbml0
aXplci5IVE1MU2FuaXRpemVyLmFsbG93ZWRfcHJvdG9jb2xzOgotICAgICAgICB5aWVsZCAocnVu
U2FuaXRpemVyVGVzdCwgInRlc3Rfc2hvdWxkX2FsbG93X3VwcGVyY2FzZV8lc191cmlzIiAlIHBy
b3RvY29sLAotICAgICAgICAgICAgICAgIjxhIGhyZWY9XCIlc1wiPmZvbzwvYT4iICUgcHJvdG9j
b2wsCi0gICAgICAgICAgICAgICAiIiI8YSBocmVmPSIlcyI+Zm9vPC9hPiIiIiAlIHByb3RvY29s
LAotICAgICAgICAgICAgICAgdG94bWwpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rl
c3Rfc2VyaWFsaXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzM3ZmVmZjcwYjJiNjJmMGM2MTM1YTJkZjdm
MjlkOTc1NmExYmI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRt
bDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMTc4ICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBk
aXZpc2lvbiwgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQganNvbgotaW1wb3J0IHVuaXR0ZXN0
Ci0KLWZyb20gLnN1cHBvcnQgaW1wb3J0IGdldF9kYXRhX2ZpbGVzCi0KLXRyeToKLSAgICB1bml0
dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAotZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgIHVu
aXR0ZXN0LlRlc3RDYXNlLmFzc2VydEVxdWFsID0gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0RXF1
YWxzCi0KLWltcG9ydCBodG1sNWxpYgotZnJvbSBodG1sNWxpYiBpbXBvcnQgY29uc3RhbnRzCi1m
cm9tIGh0bWw1bGliLnNlcmlhbGl6ZXIgaW1wb3J0IEhUTUxTZXJpYWxpemVyLCBzZXJpYWxpemUK
LWZyb20gaHRtbDVsaWIudHJlZXdhbGtlcnMuX2Jhc2UgaW1wb3J0IFRyZWVXYWxrZXIKLQotb3B0
aW9uYWxzX2xvYWRlZCA9IFtdCi0KLXRyeToKLSAgICBmcm9tIGx4bWwgaW1wb3J0IGV0cmVlCi0g
ICAgb3B0aW9uYWxzX2xvYWRlZC5hcHBlbmQoImx4bWwiKQotZXhjZXB0IEltcG9ydEVycm9yOgot
ICAgIHBhc3MKLQotZGVmYXVsdF9uYW1lc3BhY2UgPSBjb25zdGFudHMubmFtZXNwYWNlc1siaHRt
bCJdCi0KLQotY2xhc3MgSnNvbldhbGtlcihUcmVlV2Fsa2VyKToKLSAgICBkZWYgX19pdGVyX18o
c2VsZik6Ci0gICAgICAgIGZvciB0b2tlbiBpbiBzZWxmLnRyZWU6Ci0gICAgICAgICAgICB0eXBl
ID0gdG9rZW5bMF0KLSAgICAgICAgICAgIGlmIHR5cGUgPT0gIlN0YXJ0VGFnIjoKLSAgICAgICAg
ICAgICAgICBpZiBsZW4odG9rZW4pID09IDQ6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWVzcGFj
ZSwgbmFtZSwgYXR0cmliID0gdG9rZW5bMTo0XQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgICAgIG5hbWVzcGFjZSA9IGRlZmF1bHRfbmFtZXNwYWNlCi0gICAgICAgICAg
ICAgICAgICAgIG5hbWUsIGF0dHJpYiA9IHRva2VuWzE6M10KLSAgICAgICAgICAgICAgICB5aWVs
ZCBzZWxmLnN0YXJ0VGFnKG5hbWVzcGFjZSwgbmFtZSwgc2VsZi5fY29udmVydEF0dHJpYihhdHRy
aWIpKQotICAgICAgICAgICAgZWxpZiB0eXBlID09ICJFbmRUYWciOgotICAgICAgICAgICAgICAg
IGlmIGxlbih0b2tlbikgPT0gMzoKLSAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlLCBuYW1l
ID0gdG9rZW5bMTozXQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
IG5hbWVzcGFjZSA9IGRlZmF1bHRfbmFtZXNwYWNlCi0gICAgICAgICAgICAgICAgICAgIG5hbWUg
PSB0b2tlblsxXQotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuZW5kVGFnKG5hbWVzcGFjZSwg
bmFtZSkKLSAgICAgICAgICAgIGVsaWYgdHlwZSA9PSAiRW1wdHlUYWciOgotICAgICAgICAgICAg
ICAgIGlmIGxlbih0b2tlbikgPT0gNDoKLSAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlLCBu
YW1lLCBhdHRyaWIgPSB0b2tlblsxOl0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgICAgICBuYW1lc3BhY2UgPSBkZWZhdWx0X25hbWVzcGFjZQotICAgICAgICAgICAgICAg
ICAgICBuYW1lLCBhdHRyaWIgPSB0b2tlblsxOl0KLSAgICAgICAgICAgICAgICBmb3IgdG9rZW4g
aW4gc2VsZi5lbXB0eVRhZyhuYW1lc3BhY2UsIG5hbWUsIHNlbGYuX2NvbnZlcnRBdHRyaWIoYXR0
cmliKSk6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuCi0gICAgICAgICAgICBlbGlm
IHR5cGUgPT0gIkNvbW1lbnQiOgotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuY29tbWVudCh0
b2tlblsxXSkKLSAgICAgICAgICAgIGVsaWYgdHlwZSBpbiAoIkNoYXJhY3RlcnMiLCAiU3BhY2VD
aGFyYWN0ZXJzIik6Ci0gICAgICAgICAgICAgICAgZm9yIHRva2VuIGluIHNlbGYudGV4dCh0b2tl
blsxXSk6Ci0gICAgICAgICAgICAgICAgICAgIHlpZWxkIHRva2VuCi0gICAgICAgICAgICBlbGlm
IHR5cGUgPT0gIkRvY3R5cGUiOgotICAgICAgICAgICAgICAgIGlmIGxlbih0b2tlbikgPT0gNDoK
LSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5kb2N0eXBlKHRva2VuWzFdLCB0b2tlblsy
XSwgdG9rZW5bM10pCi0gICAgICAgICAgICAgICAgZWxpZiBsZW4odG9rZW4pID09IDM6Ci0gICAg
ICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuZG9jdHlwZSh0b2tlblsxXSwgdG9rZW5bMl0pCi0g
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5kb2N0
eXBlKHRva2VuWzFdKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCJVbmtub3duIHRva2VuIHR5cGU6ICIgKyB0eXBlKQotCi0gICAgZGVmIF9jb252
ZXJ0QXR0cmliKHNlbGYsIGF0dHJpYnMpOgotICAgICAgICAiIiJodG1sNWxpYiB0cmVlLXdhbGtl
cnMgdXNlIGEgZGljdCBvZiAobmFtZXNwYWNlLCBuYW1lKTogdmFsdWUgZm9yCi0gICAgICAgIGF0
dHJpYnV0ZXMsIGJ1dCBKU09OIGNhbm5vdCByZXByZXNlbnQgdGhpcy4gQ29udmVydCBmcm9tIHRo
ZSBmb3JtYXQKLSAgICAgICAgaW4gdGhlIHNlcmlhbGl6ZXIgdGVzdHMgKGEgbGlzdCBvZiBkaWN0
cyB3aXRoICJuYW1lc3BhY2UiLCAibmFtZSIsCi0gICAgICAgIGFuZCAidmFsdWUiIGFzIGtleXMp
IHRvIGh0bWw1bGliJ3MgdHJlZS13YWxrZXIgZm9ybWF0LiIiIgotICAgICAgICBhdHRycyA9IHt9
Ci0gICAgICAgIGZvciBhdHRyaWIgaW4gYXR0cmliczoKLSAgICAgICAgICAgIG5hbWUgPSAoYXR0
cmliWyJuYW1lc3BhY2UiXSwgYXR0cmliWyJuYW1lIl0pCi0gICAgICAgICAgICBhc3NlcnQobmFt
ZSBub3QgaW4gYXR0cnMpCi0gICAgICAgICAgICBhdHRyc1tuYW1lXSA9IGF0dHJpYlsidmFsdWUi
XQotICAgICAgICByZXR1cm4gYXR0cnMKLQotCi1kZWYgc2VyaWFsaXplX2h0bWwoaW5wdXQsIG9w
dGlvbnMpOgotICAgIG9wdGlvbnMgPSBkaWN0KFsoc3RyKGspLCB2KSBmb3IgaywgdiBpbiBvcHRp
b25zLml0ZW1zKCldKQotICAgIHN0cmVhbSA9IEpzb25XYWxrZXIoaW5wdXQpCi0gICAgc2VyaWFs
aXplciA9IEhUTUxTZXJpYWxpemVyKGFscGhhYmV0aWNhbF9hdHRyaWJ1dGVzPVRydWUsICoqb3B0
aW9ucykKLSAgICByZXR1cm4gc2VyaWFsaXplci5yZW5kZXIoc3RyZWFtLCBvcHRpb25zLmdldCgi
ZW5jb2RpbmciLCBOb25lKSkKLQotCi1kZWYgcnVuU2VyaWFsaXplclRlc3QoaW5wdXQsIGV4cGVj
dGVkLCBvcHRpb25zKToKLSAgICBlbmNvZGluZyA9IG9wdGlvbnMuZ2V0KCJlbmNvZGluZyIsIE5v
bmUpCi0KLSAgICBpZiBlbmNvZGluZzoKLSAgICAgICAgZW5jb2RlID0gbGFtYmRhIHg6IHguZW5j
b2RlKGVuY29kaW5nKQotICAgICAgICBleHBlY3RlZCA9IGxpc3QobWFwKGVuY29kZSwgZXhwZWN0
ZWQpKQotCi0gICAgcmVzdWx0ID0gc2VyaWFsaXplX2h0bWwoaW5wdXQsIG9wdGlvbnMpCi0gICAg
aWYgbGVuKGV4cGVjdGVkKSA9PSAxOgotICAgICAgICBhc3NlcnQgZXhwZWN0ZWRbMF0gPT0gcmVz
dWx0LCAiRXhwZWN0ZWQ6XG4lc1xuQWN0dWFsOlxuJXNcbk9wdGlvbnM6XG4lcyIgJSAoZXhwZWN0
ZWRbMF0sIHJlc3VsdCwgc3RyKG9wdGlvbnMpKQotICAgIGVsaWYgcmVzdWx0IG5vdCBpbiBleHBl
Y3RlZDoKLSAgICAgICAgYXNzZXJ0IEZhbHNlLCAiRXhwZWN0ZWQ6ICVzLCBSZWNlaXZlZDogJXMi
ICUgKGV4cGVjdGVkLCByZXN1bHQpCi0KLQotY2xhc3MgRW5jb2RpbmdUZXN0Q2FzZSh1bml0dGVz
dC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRocm93c1dpdGhMYXRpbjEoc2VsZiwgaW5wdXQpOgotICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsIHNlcmlhbGl6ZV9odG1s
LCBpbnB1dCwgeyJlbmNvZGluZyI6ICJpc28tODg1OS0xIn0pCi0KLSAgICBkZWYgdGVzdERvY3R5
cGVOYW1lKHNlbGYpOgotICAgICAgICBzZWxmLnRocm93c1dpdGhMYXRpbjEoW1siRG9jdHlwZSIs
ICJcdTAxMDEiXV0pCi0KLSAgICBkZWYgdGVzdERvY3R5cGVQdWJsaWNJZChzZWxmKToKLSAgICAg
ICAgc2VsZi50aHJvd3NXaXRoTGF0aW4xKFtbIkRvY3R5cGUiLCAicG90YXRvIiwgIlx1MDEwMSJd
XSkKLQotICAgIGRlZiB0ZXN0RG9jdHlwZVN5c3RlbUlkKHNlbGYpOgotICAgICAgICBzZWxmLnRo
cm93c1dpdGhMYXRpbjEoW1siRG9jdHlwZSIsICJwb3RhdG8iLCAicG90YXRvIiwgIlx1MDEwMSJd
XSkKLQotICAgIGRlZiB0ZXN0Q2RhdGFDaGFyYWN0ZXJzKHNlbGYpOgotICAgICAgICBydW5TZXJp
YWxpemVyVGVzdChbWyJTdGFydFRhZyIsICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwg
InN0eWxlIiwge31dLCBbIkNoYXJhY3RlcnMiLCAiXHUwMTAxIl1dLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBbIjxzdHlsZT4mYW1hY3I7Il0sIHsiZW5jb2RpbmciOiAiaXNvLTg4NTktMSJ9
KQotCi0gICAgZGVmIHRlc3RDaGFyYWN0ZXJzKHNlbGYpOgotICAgICAgICBydW5TZXJpYWxpemVy
VGVzdChbWyJDaGFyYWN0ZXJzIiwgIlx1MDEwMSJdXSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgWyImYW1hY3I7Il0sIHsiZW5jb2RpbmciOiAiaXNvLTg4NTktMSJ9KQotCi0gICAgZGVmIHRl
c3RTdGFydFRhZ05hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYudGhyb3dzV2l0aExhdGluMShbWyJT
dGFydFRhZyIsICJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgIlx1MDEwMSIsIFtdXV0p
Ci0KLSAgICBkZWYgdGVzdEVtcHR5VGFnTmFtZShzZWxmKToKLSAgICAgICAgc2VsZi50aHJvd3NX
aXRoTGF0aW4xKFtbIkVtcHR5VGFnIiwgImh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiLCAi
XHUwMTAxIiwgW11dXSkKLQotICAgIGRlZiB0ZXN0QXR0cmlidXRlTmFtZShzZWxmKToKLSAgICAg
ICAgc2VsZi50aHJvd3NXaXRoTGF0aW4xKFtbIlN0YXJ0VGFnIiwgImh0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwiLCAic3BhbiIsIFt7Im5hbWVzcGFjZSI6IE5vbmUsICJuYW1lIjogIlx1MDEw
MSIsICJ2YWx1ZSI6ICJwb3RhdG8ifV1dXSkKLQotICAgIGRlZiB0ZXN0QXR0cmlidXRlVmFsdWUo
c2VsZik6Ci0gICAgICAgIHJ1blNlcmlhbGl6ZXJUZXN0KFtbIlN0YXJ0VGFnIiwgImh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiLCAic3BhbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgW3sibmFtZXNwYWNlIjogTm9uZSwgIm5hbWUiOiAicG90YXRvIiwgInZhbHVlIjogIlx1MDEw
MSJ9XV1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICBbIjxzcGFuIHBvdGF0bz0mYW1hY3I7
PiJdLCB7ImVuY29kaW5nIjogImlzby04ODU5LTEifSkKLQotICAgIGRlZiB0ZXN0RW5kVGFnTmFt
ZShzZWxmKToKLSAgICAgICAgc2VsZi50aHJvd3NXaXRoTGF0aW4xKFtbIkVuZFRhZyIsICJodHRw
Oi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIiwgIlx1MDEwMSJdXSkKLQotICAgIGRlZiB0ZXN0Q29t
bWVudChzZWxmKToKLSAgICAgICAgc2VsZi50aHJvd3NXaXRoTGF0aW4xKFtbIkNvbW1lbnQiLCAi
XHUwMTAxIl1dKQotCi0KLWlmICJseG1sIiBpbiBvcHRpb25hbHNfbG9hZGVkOgotICAgIGNsYXNz
IEx4bWxUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgICAgIGRlZiBzZXRVcChzZWxm
KToKLSAgICAgICAgICAgIHNlbGYucGFyc2VyID0gZXRyZWUuWE1MUGFyc2VyKHJlc29sdmVfZW50
aXRpZXM9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLnRyZWV3YWxrZXIgPSBodG1sNWxpYi5nZXRU
cmVlV2Fsa2VyKCJseG1sIikKLSAgICAgICAgICAgIHNlbGYuc2VyaWFsaXplciA9IEhUTUxTZXJp
YWxpemVyKCkKLQotICAgICAgICBkZWYgdGVzdEVudGl0eVJlcGxhY2VtZW50KHNlbGYpOgotICAg
ICAgICAgICAgZG9jID0gIiIiPCFET0NUWVBFIGh0bWwgU1lTVEVNICJhYm91dDpsZWdhY3ktY29t
cGF0Ij48aHRtbD4mYmV0YTs8L2h0bWw+IiIiCi0gICAgICAgICAgICB0cmVlID0gZXRyZWUuZnJv
bXN0cmluZyhkb2MsIHBhcnNlcj1zZWxmLnBhcnNlcikuZ2V0cm9vdHRyZWUoKQotICAgICAgICAg
ICAgcmVzdWx0ID0gc2VyaWFsaXplKHRyZWUsIHRyZWU9Imx4bWwiLCBvbWl0X29wdGlvbmFsX3Rh
Z3M9RmFsc2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiIjwhRE9DVFlQRSBodG1s
IFNZU1RFTSAiYWJvdXQ6bGVnYWN5LWNvbXBhdCI+PGh0bWw+XHUwM0IyPC9odG1sPiIiIiwgcmVz
dWx0KQotCi0gICAgICAgIGRlZiB0ZXN0RW50aXR5WE1MKHNlbGYpOgotICAgICAgICAgICAgZG9j
ID0gIiIiPCFET0NUWVBFIGh0bWwgU1lTVEVNICJhYm91dDpsZWdhY3ktY29tcGF0Ij48aHRtbD4m
Z3Q7PC9odG1sPiIiIgotICAgICAgICAgICAgdHJlZSA9IGV0cmVlLmZyb21zdHJpbmcoZG9jLCBw
YXJzZXI9c2VsZi5wYXJzZXIpLmdldHJvb3R0cmVlKCkKLSAgICAgICAgICAgIHJlc3VsdCA9IHNl
cmlhbGl6ZSh0cmVlLCB0cmVlPSJseG1sIiwgb21pdF9vcHRpb25hbF90YWdzPUZhbHNlKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiIiI8IURPQ1RZUEUgaHRtbCBTWVNURU0gImFib3V0
OmxlZ2FjeS1jb21wYXQiPjxodG1sPiZndDs8L2h0bWw+IiIiLCByZXN1bHQpCi0KLSAgICAgICAg
ZGVmIHRlc3RFbnRpdHlOb1Jlc29sdmUoc2VsZik6Ci0gICAgICAgICAgICBkb2MgPSAiIiI8IURP
Q1RZUEUgaHRtbCBTWVNURU0gImFib3V0OmxlZ2FjeS1jb21wYXQiPjxodG1sPiZiZXRhOzwvaHRt
bD4iIiIKLSAgICAgICAgICAgIHRyZWUgPSBldHJlZS5mcm9tc3RyaW5nKGRvYywgcGFyc2VyPXNl
bGYucGFyc2VyKS5nZXRyb290dHJlZSgpCi0gICAgICAgICAgICByZXN1bHQgPSBzZXJpYWxpemUo
dHJlZSwgdHJlZT0ibHhtbCIsIG9taXRfb3B0aW9uYWxfdGFncz1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVfZW50aXRpZXM9RmFsc2UpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCIiIjwhRE9DVFlQRSBodG1sIFNZU1RFTSAiYWJv
dXQ6bGVnYWN5LWNvbXBhdCI+PGh0bWw+JmJldGE7PC9odG1sPiIiIiwgcmVzdWx0KQotCi0KLWRl
ZiB0ZXN0X3NlcmlhbGl6ZXIoKToKLSAgICBmb3IgZmlsZW5hbWUgaW4gZ2V0X2RhdGFfZmlsZXMo
J3NlcmlhbGl6ZXInLCAnKi50ZXN0Jyk6Ci0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMg
ZnA6Ci0gICAgICAgICAgICB0ZXN0cyA9IGpzb24ubG9hZChmcCkKLSAgICAgICAgICAgIGZvciBp
bmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHNbJ3Rlc3RzJ10pOgotICAgICAgICAgICAgICAg
IHlpZWxkIHJ1blNlcmlhbGl6ZXJUZXN0LCB0ZXN0WyJpbnB1dCJdLCB0ZXN0WyJleHBlY3RlZCJd
LCB0ZXN0LmdldCgib3B0aW9ucyIsIHt9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90
ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zdHJlYW0ucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhODc2YzFkYmZkYjhmZThjMTVkY2JiYmVlYmVhZGEyYWQ0
MmQ5ZWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9o
dG1sNWxpYi90ZXN0cy90ZXN0X3N0cmVhbS5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MyArMCww
IEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVu
aWNvZGVfbGl0ZXJhbHMKLQotZnJvbSAuIGltcG9ydCBzdXBwb3J0ICAjIGZsYWtlODogbm9xYQot
aW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgY29kZWNzCi1mcm9tIGlvIGltcG9ydCBCeXRlc0lPCi0K
LWZyb20gc2l4Lm1vdmVzIGltcG9ydCBodHRwX2NsaWVudAotCi1mcm9tIGh0bWw1bGliLmlucHV0
c3RyZWFtIGltcG9ydCAoQnVmZmVyZWRTdHJlYW0sIEhUTUxJbnB1dFN0cmVhbSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBIVE1MVW5pY29kZUlucHV0U3RyZWFtLCBIVE1MQmlu
YXJ5SW5wdXRTdHJlYW0pCi0KLWNsYXNzIEJ1ZmZlcmVkU3RyZWFtVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6Ci0gICAgICAgIHMgPSBiImFiYyIKLSAg
ICAgICAgZnAgPSBCdWZmZXJlZFN0cmVhbShCeXRlc0lPKHMpKQotICAgICAgICByZWFkID0gZnAu
cmVhZCgxMCkKLSAgICAgICAgYXNzZXJ0IHJlYWQgPT0gcwotCi0gICAgZGVmIHRlc3RfcmVhZF9s
ZW5ndGgoc2VsZik6Ci0gICAgICAgIGZwID0gQnVmZmVyZWRTdHJlYW0oQnl0ZXNJTyhiImFiY2Rl
ZiIpKQotICAgICAgICByZWFkMSA9IGZwLnJlYWQoMSkKLSAgICAgICAgYXNzZXJ0IHJlYWQxID09
IGIiYSIKLSAgICAgICAgcmVhZDIgPSBmcC5yZWFkKDIpCi0gICAgICAgIGFzc2VydCByZWFkMiA9
PSBiImJjIgotICAgICAgICByZWFkMyA9IGZwLnJlYWQoMykKLSAgICAgICAgYXNzZXJ0IHJlYWQz
ID09IGIiZGVmIgotICAgICAgICByZWFkNCA9IGZwLnJlYWQoNCkKLSAgICAgICAgYXNzZXJ0IHJl
YWQ0ID09IGIiIgotCi0gICAgZGVmIHRlc3RfdGVsbChzZWxmKToKLSAgICAgICAgZnAgPSBCdWZm
ZXJlZFN0cmVhbShCeXRlc0lPKGIiYWJjZGVmIikpCi0gICAgICAgIHJlYWQxID0gZnAucmVhZCgx
KQotICAgICAgICBhc3NlcnQgZnAudGVsbCgpID09IDEKLSAgICAgICAgcmVhZDIgPSBmcC5yZWFk
KDIpCi0gICAgICAgIGFzc2VydCBmcC50ZWxsKCkgPT0gMwotICAgICAgICByZWFkMyA9IGZwLnJl
YWQoMykKLSAgICAgICAgYXNzZXJ0IGZwLnRlbGwoKSA9PSA2Ci0gICAgICAgIHJlYWQ0ID0gZnAu
cmVhZCg0KQotICAgICAgICBhc3NlcnQgZnAudGVsbCgpID09IDYKLQotICAgIGRlZiB0ZXN0X3Nl
ZWsoc2VsZik6Ci0gICAgICAgIGZwID0gQnVmZmVyZWRTdHJlYW0oQnl0ZXNJTyhiImFiY2RlZiIp
KQotICAgICAgICByZWFkMSA9IGZwLnJlYWQoMSkKLSAgICAgICAgYXNzZXJ0IHJlYWQxID09IGIi
YSIKLSAgICAgICAgZnAuc2VlaygwKQotICAgICAgICByZWFkMiA9IGZwLnJlYWQoMSkKLSAgICAg
ICAgYXNzZXJ0IHJlYWQyID09IGIiYSIKLSAgICAgICAgcmVhZDMgPSBmcC5yZWFkKDIpCi0gICAg
ICAgIGFzc2VydCByZWFkMyA9PSBiImJjIgotICAgICAgICBmcC5zZWVrKDIpCi0gICAgICAgIHJl
YWQ0ID0gZnAucmVhZCgyKQotICAgICAgICBhc3NlcnQgcmVhZDQgPT0gYiJjZCIKLSAgICAgICAg
ZnAuc2Vlayg0KQotICAgICAgICByZWFkNSA9IGZwLnJlYWQoMikKLSAgICAgICAgYXNzZXJ0IHJl
YWQ1ID09IGIiZWYiCi0KLSAgICBkZWYgdGVzdF9zZWVrX3RlbGwoc2VsZik6Ci0gICAgICAgIGZw
ID0gQnVmZmVyZWRTdHJlYW0oQnl0ZXNJTyhiImFiY2RlZiIpKQotICAgICAgICByZWFkMSA9IGZw
LnJlYWQoMSkKLSAgICAgICAgYXNzZXJ0IGZwLnRlbGwoKSA9PSAxCi0gICAgICAgIGZwLnNlZWso
MCkKLSAgICAgICAgcmVhZDIgPSBmcC5yZWFkKDEpCi0gICAgICAgIGFzc2VydCBmcC50ZWxsKCkg
PT0gMQotICAgICAgICByZWFkMyA9IGZwLnJlYWQoMikKLSAgICAgICAgYXNzZXJ0IGZwLnRlbGwo
KSA9PSAzCi0gICAgICAgIGZwLnNlZWsoMikKLSAgICAgICAgcmVhZDQgPSBmcC5yZWFkKDIpCi0g
ICAgICAgIGFzc2VydCBmcC50ZWxsKCkgPT0gNAotICAgICAgICBmcC5zZWVrKDQpCi0gICAgICAg
IHJlYWQ1ID0gZnAucmVhZCgyKQotICAgICAgICBhc3NlcnQgZnAudGVsbCgpID09IDYKLQotCi1j
bGFzcyBIVE1MVW5pY29kZUlucHV0U3RyZWFtU2hvcnRDaHVuayhIVE1MVW5pY29kZUlucHV0U3Ry
ZWFtKToKLSAgICBfZGVmYXVsdENodW5rU2l6ZSA9IDIKLQotCi1jbGFzcyBIVE1MQmluYXJ5SW5w
dXRTdHJlYW1TaG9ydENodW5rKEhUTUxCaW5hcnlJbnB1dFN0cmVhbSk6Ci0gICAgX2RlZmF1bHRD
aHVua1NpemUgPSAyCi0KLQotY2xhc3MgSFRNTElucHV0U3RyZWFtVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0KLSAgICBkZWYgdGVzdF9jaGFyX2FzY2lpKHNlbGYpOgotICAgICAgICBzdHJlYW0g
PSBIVE1MSW5wdXRTdHJlYW0oYiInIiwgZW5jb2Rpbmc9J2FzY2lpJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChzdHJlYW0uY2hhckVuY29kaW5nWzBdLCAnYXNjaWknKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0cmVhbS5jaGFyKCksICInIikKLQotICAgIGRlZiB0ZXN0X2NoYXJfdXRm
OChzZWxmKToKLSAgICAgICAgc3RyZWFtID0gSFRNTElucHV0U3RyZWFtKCdcdTIwMTgnLmVuY29k
ZSgndXRmLTgnKSwgZW5jb2Rpbmc9J3V0Zi04JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChz
dHJlYW0uY2hhckVuY29kaW5nWzBdLCAndXRmLTgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbS5jaGFyKCksICdcdTIwMTgnKQotCi0gICAgZGVmIHRlc3RfY2hhcl93aW4xMjUyKHNl
bGYpOgotICAgICAgICBzdHJlYW0gPSBIVE1MSW5wdXRTdHJlYW0oIlx4YTlceGYxXHUyMDE5Ii5l
bmNvZGUoJ3dpbmRvd3MtMTI1MicpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5j
aGFyRW5jb2RpbmdbMF0sICd3aW5kb3dzLTEyNTInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbS5jaGFyKCksICJceGE5IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0u
Y2hhcigpLCAiXHhmMSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNoYXIoKSwg
Ilx1MjAxOSIpCi0KLSAgICBkZWYgdGVzdF9ib20oc2VsZik6Ci0gICAgICAgIHN0cmVhbSA9IEhU
TUxJbnB1dFN0cmVhbShjb2RlY3MuQk9NX1VURjggKyBiIiciKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHN0cmVhbS5jaGFyRW5jb2RpbmdbMF0sICd1dGYtOCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RyZWFtLmNoYXIoKSwgIiciKQotCi0gICAgZGVmIHRlc3RfdXRmXzE2KHNlbGYp
OgotICAgICAgICBzdHJlYW0gPSBIVE1MSW5wdXRTdHJlYW0oKCcgJyAqIDEwMjUpLmVuY29kZSgn
dXRmLTE2JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0uY2hhckVuY29kaW5nWzBd
IGluIFsndXRmLTE2LWxlJywgJ3V0Zi0xNi1iZSddLCBzdHJlYW0uY2hhckVuY29kaW5nKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdHJlYW0uY2hhcnNVbnRpbCgnICcsIFRydWUpKSwg
MTAyNSkKLQotICAgIGRlZiB0ZXN0X25ld2xpbmVzKHNlbGYpOgotICAgICAgICBzdHJlYW0gPSBI
VE1MQmluYXJ5SW5wdXRTdHJlYW1TaG9ydENodW5rKGNvZGVjcy5CT01fVVRGOCArIGIiYVxuYmJc
clxuY2NjXHJkZGRkeGUiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5wb3NpdGlv
bigpLCAoMSwgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNoYXJzVW50aWwo
J2MnKSwgImFcbmJiXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5wb3NpdGlv
bigpLCAoMywgMCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNoYXJzVW50aWwo
J3gnKSwgImNjY1xuZGRkZCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLnBvc2l0
aW9uKCksICg0LCA0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0uY2hhcnNVbnRp
bCgnZScpLCAieCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLnBvc2l0aW9uKCks
ICg0LCA1KSkKLQotICAgIGRlZiB0ZXN0X25ld2xpbmVzMihzZWxmKToKLSAgICAgICAgc2l6ZSA9
IEhUTUxVbmljb2RlSW5wdXRTdHJlYW0uX2RlZmF1bHRDaHVua1NpemUKLSAgICAgICAgc3RyZWFt
ID0gSFRNTElucHV0U3RyZWFtKCJcciIgKiBzaXplICsgIlxuIikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChzdHJlYW0uY2hhcnNVbnRpbCgneCcpLCAiXG4iICogc2l6ZSkKLQotICAgIGRlZiB0
ZXN0X3Bvc2l0aW9uKHNlbGYpOgotICAgICAgICBzdHJlYW0gPSBIVE1MQmluYXJ5SW5wdXRTdHJl
YW1TaG9ydENodW5rKGNvZGVjcy5CT01fVVRGOCArIGIiYVxuYmJcbmNjY1xuZGRkZVxuZlxuZ2gi
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5wb3NpdGlvbigpLCAoMSwgMCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNoYXJzVW50aWwoJ2MnKSwgImFcbmJiXG4i
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5wb3NpdGlvbigpLCAoMywgMCkpCi0g
ICAgICAgIHN0cmVhbS51bmdldCgiXG4iKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVh
bS5wb3NpdGlvbigpLCAoMiwgMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNo
YXJzVW50aWwoJ2MnKSwgIlxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ucG9z
aXRpb24oKSwgKDMsIDApKQotICAgICAgICBzdHJlYW0udW5nZXQoIlxuIikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChzdHJlYW0ucG9zaXRpb24oKSwgKDIsIDIpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5jaGFyKCksICJcbiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLnBvc2l0aW9uKCksICgzLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJl
YW0uY2hhcnNVbnRpbCgnZScpLCAiY2NjXG5kZGQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbS5wb3NpdGlvbigpLCAoNCwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Ry
ZWFtLmNoYXJzVW50aWwoJ2gnKSwgImVcbmZcbmciKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KHN0cmVhbS5wb3NpdGlvbigpLCAoNiwgMSkpCi0KLSAgICBkZWYgdGVzdF9wb3NpdGlvbjIoc2Vs
Zik6Ci0gICAgICAgIHN0cmVhbSA9IEhUTUxVbmljb2RlSW5wdXRTdHJlYW1TaG9ydENodW5rKCJh
YmNcbmQiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5wb3NpdGlvbigpLCAoMSwg
MCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNoYXIoKSwgImEiKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5wb3NpdGlvbigpLCAoMSwgMSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNoYXIoKSwgImIiKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHN0cmVhbS5wb3NpdGlvbigpLCAoMSwgMikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
c3RyZWFtLmNoYXIoKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5wb3Np
dGlvbigpLCAoMSwgMykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyZWFtLmNoYXIoKSwg
IlxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ucG9zaXRpb24oKSwgKDIsIDAp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cmVhbS5jaGFyKCksICJkIikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChzdHJlYW0ucG9zaXRpb24oKSwgKDIsIDEpKQotCi0gICAgZGVmIHRl
c3RfcHl0aG9uX2lzc3VlXzIwMDA3KHNlbGYpOgotICAgICAgICAiIiIKLSAgICAgICAgTWFrZSBz
dXJlIHdlIGhhdmUgYSB3b3JrLWFyb3VuZCBmb3IgUHl0aG9uIGJ1ZyAjMjAwMDcKLSAgICAgICAg
aHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTIwMDA3Ci0gICAgICAgICIiIgotICAgICAgICBj
bGFzcyBGYWtlU29ja2V0KG9iamVjdCk6Ci0gICAgICAgICAgICBkZWYgbWFrZWZpbGUoc2VsZiwg
X21vZGUsIF9idWZzaXplPU5vbmUpOgotICAgICAgICAgICAgICAgIHJldHVybiBCeXRlc0lPKGIi
SFRUUC8xLjEgMjAwIE9rXHJcblxyXG5UZXh0IikKLQotICAgICAgICBzb3VyY2UgPSBodHRwX2Ns
aWVudC5IVFRQUmVzcG9uc2UoRmFrZVNvY2tldCgpKQotICAgICAgICBzb3VyY2UuYmVnaW4oKQot
ICAgICAgICBzdHJlYW0gPSBIVE1MSW5wdXRTdHJlYW0oc291cmNlKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHN0cmVhbS5jaGFyc1VudGlsKCIgIiksICJUZXh0IikKLQotCi1kZWYgYnVpbGRU
ZXN0U3VpdGUoKToKLSAgICByZXR1cm4gdW5pdHRlc3QuZGVmYXVsdFRlc3RMb2FkZXIubG9hZFRl
c3RzRnJvbU5hbWUoX19uYW1lX18pCi0KLQotZGVmIG1haW4oKToKLSAgICBidWlsZFRlc3RTdWl0
ZSgpCi0gICAgdW5pdHRlc3QubWFpbigpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0g
ICAgbWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfdG9rZW5pemVyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X3Rva2VuaXplci5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggOTAzMTVhYjM1ZDI0NjA0YzVhOWMzNGIyNDBmODkwY2U5YTRhN2UwOC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rl
c3RzL3Rlc3RfdG9rZW5pemVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTg4ICswLDAgQEAKLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgdW5pY29kZV9s
aXRlcmFscwotCi1pbXBvcnQganNvbgotaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgcmUKLQotZnJv
bSAuc3VwcG9ydCBpbXBvcnQgZ2V0X2RhdGFfZmlsZXMKLQotZnJvbSBodG1sNWxpYi50b2tlbml6
ZXIgaW1wb3J0IEhUTUxUb2tlbml6ZXIKLWZyb20gaHRtbDVsaWIgaW1wb3J0IGNvbnN0YW50cwot
Ci0KLWNsYXNzIFRva2VuaXplclRlc3RQYXJzZXIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgaW5pdGlhbFN0YXRlLCBsYXN0U3RhcnRUYWc9Tm9uZSk6Ci0gICAgICAgIHNlbGYudG9r
ZW5pemVyID0gSFRNTFRva2VuaXplcgotICAgICAgICBzZWxmLl9zdGF0ZSA9IGluaXRpYWxTdGF0
ZQotICAgICAgICBzZWxmLl9sYXN0U3RhcnRUYWcgPSBsYXN0U3RhcnRUYWcKLQotICAgIGRlZiBw
YXJzZShzZWxmLCBzdHJlYW0sIGVuY29kaW5nPU5vbmUsIGlubmVySFRNTD1GYWxzZSk6Ci0gICAg
ICAgIHRva2VuaXplciA9IHNlbGYudG9rZW5pemVyKHN0cmVhbSwgZW5jb2RpbmcpCi0gICAgICAg
IHNlbGYub3V0cHV0VG9rZW5zID0gW10KLQotICAgICAgICB0b2tlbml6ZXIuc3RhdGUgPSBnZXRh
dHRyKHRva2VuaXplciwgc2VsZi5fc3RhdGUpCi0gICAgICAgIGlmIHNlbGYuX2xhc3RTdGFydFRh
ZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRva2VuaXplci5jdXJyZW50VG9rZW4gPSB7InR5
cGUiOiAic3RhcnRUYWciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
bmFtZSI6IHNlbGYuX2xhc3RTdGFydFRhZ30KLQotICAgICAgICB0eXBlcyA9IGRpY3QoKHYsIGsp
IGZvciBrLCB2IGluIGNvbnN0YW50cy50b2tlblR5cGVzLml0ZW1zKCkpCi0gICAgICAgIGZvciB0
b2tlbiBpbiB0b2tlbml6ZXI6Ci0gICAgICAgICAgICBnZXRhdHRyKHNlbGYsICdwcm9jZXNzJXMn
ICUgdHlwZXNbdG9rZW5bInR5cGUiXV0pKHRva2VuKQotCi0gICAgICAgIHJldHVybiBzZWxmLm91
dHB1dFRva2VucwotCi0gICAgZGVmIHByb2Nlc3NEb2N0eXBlKHNlbGYsIHRva2VuKToKLSAgICAg
ICAgc2VsZi5vdXRwdXRUb2tlbnMuYXBwZW5kKFsiRE9DVFlQRSIsIHRva2VuWyJuYW1lIl0sIHRv
a2VuWyJwdWJsaWNJZCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2Vu
WyJzeXN0ZW1JZCJdLCB0b2tlblsiY29ycmVjdCJdXSkKLQotICAgIGRlZiBwcm9jZXNzU3RhcnRU
YWcoc2VsZiwgdG9rZW4pOgotICAgICAgICBzZWxmLm91dHB1dFRva2Vucy5hcHBlbmQoWyJTdGFy
dFRhZyIsIHRva2VuWyJuYW1lIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZGljdCh0b2tlblsiZGF0YSJdWzo6LTFdKSwgdG9rZW5bInNlbGZDbG9zaW5nIl1dKQotCi0gICAg
ZGVmIHByb2Nlc3NFbXB0eVRhZyhzZWxmLCB0b2tlbik6Ci0gICAgICAgIGlmIHRva2VuWyJuYW1l
Il0gbm90IGluIGNvbnN0YW50cy52b2lkRWxlbWVudHM6Ci0gICAgICAgICAgICBzZWxmLm91dHB1
dFRva2Vucy5hcHBlbmQoIlBhcnNlRXJyb3IiKQotICAgICAgICBzZWxmLm91dHB1dFRva2Vucy5h
cHBlbmQoWyJTdGFydFRhZyIsIHRva2VuWyJuYW1lIl0sIGRpY3QodG9rZW5bImRhdGEiXVs6Oi0x
XSldKQotCi0gICAgZGVmIHByb2Nlc3NFbmRUYWcoc2VsZiwgdG9rZW4pOgotICAgICAgICBzZWxm
Lm91dHB1dFRva2Vucy5hcHBlbmQoWyJFbmRUYWciLCB0b2tlblsibmFtZSJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWyJzZWxmQ2xvc2luZyJdXSkKLQotICAgIGRl
ZiBwcm9jZXNzQ29tbWVudChzZWxmLCB0b2tlbik6Ci0gICAgICAgIHNlbGYub3V0cHV0VG9rZW5z
LmFwcGVuZChbIkNvbW1lbnQiLCB0b2tlblsiZGF0YSJdXSkKLQotICAgIGRlZiBwcm9jZXNzU3Bh
Y2VDaGFyYWN0ZXJzKHNlbGYsIHRva2VuKToKLSAgICAgICAgc2VsZi5vdXRwdXRUb2tlbnMuYXBw
ZW5kKFsiQ2hhcmFjdGVyIiwgdG9rZW5bImRhdGEiXV0pCi0gICAgICAgIHNlbGYucHJvY2Vzc1Nw
YWNlQ2hhcmFjdGVycyA9IHNlbGYucHJvY2Vzc0NoYXJhY3RlcnMKLQotICAgIGRlZiBwcm9jZXNz
Q2hhcmFjdGVycyhzZWxmLCB0b2tlbik6Ci0gICAgICAgIHNlbGYub3V0cHV0VG9rZW5zLmFwcGVu
ZChbIkNoYXJhY3RlciIsIHRva2VuWyJkYXRhIl1dKQotCi0gICAgZGVmIHByb2Nlc3NFT0Yoc2Vs
ZiwgdG9rZW4pOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgcHJvY2Vzc1BhcnNlRXJyb3Ioc2Vs
ZiwgdG9rZW4pOgotICAgICAgICBzZWxmLm91dHB1dFRva2Vucy5hcHBlbmQoWyJQYXJzZUVycm9y
IiwgdG9rZW5bImRhdGEiXV0pCi0KLQotZGVmIGNvbmNhdGVuYXRlQ2hhcmFjdGVyVG9rZW5zKHRv
a2Vucyk6Ci0gICAgb3V0cHV0VG9rZW5zID0gW10KLSAgICBmb3IgdG9rZW4gaW4gdG9rZW5zOgot
ICAgICAgICBpZiAiUGFyc2VFcnJvciIgbm90IGluIHRva2VuIGFuZCB0b2tlblswXSA9PSAiQ2hh
cmFjdGVyIjoKLSAgICAgICAgICAgIGlmIChvdXRwdXRUb2tlbnMgYW5kICJQYXJzZUVycm9yIiBu
b3QgaW4gb3V0cHV0VG9rZW5zWy0xXSBhbmQKLSAgICAgICAgICAgICAgICAgICAgb3V0cHV0VG9r
ZW5zWy0xXVswXSA9PSAiQ2hhcmFjdGVyIik6Ci0gICAgICAgICAgICAgICAgb3V0cHV0VG9rZW5z
Wy0xXVsxXSArPSB0b2tlblsxXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBv
dXRwdXRUb2tlbnMuYXBwZW5kKHRva2VuKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0
cHV0VG9rZW5zLmFwcGVuZCh0b2tlbikKLSAgICByZXR1cm4gb3V0cHV0VG9rZW5zCi0KLQotZGVm
IG5vcm1hbGl6ZVRva2Vucyh0b2tlbnMpOgotICAgICMgVE9ETzogY29udmVydCB0ZXN0cyB0byBy
ZWZsZWN0IGFycmF5cwotICAgIGZvciBpLCB0b2tlbiBpbiBlbnVtZXJhdGUodG9rZW5zKToKLSAg
ICAgICAgaWYgdG9rZW5bMF0gPT0gJ1BhcnNlRXJyb3InOgotICAgICAgICAgICAgdG9rZW5zW2ld
ID0gdG9rZW5bMF0KLSAgICByZXR1cm4gdG9rZW5zCi0KLQotZGVmIHRva2Vuc01hdGNoKGV4cGVj
dGVkVG9rZW5zLCByZWNlaXZlZFRva2VucywgaWdub3JlRXJyb3JPcmRlciwKLSAgICAgICAgICAg
ICAgICBpZ25vcmVFcnJvcnM9RmFsc2UpOgotICAgICIiIlRlc3Qgd2hldGhlciB0aGUgdGVzdCBo
YXMgcGFzc2VkIG9yIGZhaWxlZAotCi0gICAgSWYgdGhlIGlnbm9yZUVycm9yT3JkZXIgZmxhZyBp
cyBzZXQgdG8gdHJ1ZSB3ZSBkb24ndCB0ZXN0IHRoZSByZWxhdGl2ZQotICAgIHBvc2l0aW9ucyBv
ZiBwYXJzZSBlcnJvcnMgYW5kIG5vbiBwYXJzZSBlcnJvcnMKLSAgICAiIiIKLSAgICBjaGVja1Nl
bGZDbG9zaW5nID0gRmFsc2UKLSAgICBmb3IgdG9rZW4gaW4gZXhwZWN0ZWRUb2tlbnM6Ci0gICAg
ICAgIGlmICh0b2tlblswXSA9PSAiU3RhcnRUYWciIGFuZCBsZW4odG9rZW4pID09IDQKLSAgICAg
ICAgICAgICAgICBvciB0b2tlblswXSA9PSAiRW5kVGFnIiBhbmQgbGVuKHRva2VuKSA9PSAzKToK
LSAgICAgICAgICAgIGNoZWNrU2VsZkNsb3NpbmcgPSBUcnVlCi0gICAgICAgICAgICBicmVhawot
Ci0gICAgaWYgbm90IGNoZWNrU2VsZkNsb3Npbmc6Ci0gICAgICAgIGZvciB0b2tlbiBpbiByZWNl
aXZlZFRva2VuczoKLSAgICAgICAgICAgIGlmIHRva2VuWzBdID09ICJTdGFydFRhZyIgb3IgdG9r
ZW5bMF0gPT0gIkVuZFRhZyI6Ci0gICAgICAgICAgICAgICAgdG9rZW4ucG9wKCkKLQotICAgIGlm
IG5vdCBpZ25vcmVFcnJvck9yZGVyIGFuZCBub3QgaWdub3JlRXJyb3JzOgotICAgICAgICByZXR1
cm4gZXhwZWN0ZWRUb2tlbnMgPT0gcmVjZWl2ZWRUb2tlbnMKLSAgICBlbHNlOgotICAgICAgICAj
IFNvcnQgdGhlIHRva2VucyBpbnRvIHR3byBncm91cHM7IG5vbi1wYXJzZSBlcnJvcnMgYW5kIHBh
cnNlIGVycm9ycwotICAgICAgICB0b2tlbnMgPSB7ImV4cGVjdGVkIjogW1tdLCBbXV0sICJyZWNl
aXZlZCI6IFtbXSwgW11dfQotICAgICAgICBmb3IgdG9rZW5UeXBlLCB0b2tlbkxpc3QgaW4gemlw
KGxpc3QodG9rZW5zLmtleXMoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKGV4cGVjdGVkVG9rZW5zLCByZWNlaXZlZFRva2VucykpOgotICAgICAgICAgICAgZm9y
IHRva2VuIGluIHRva2VuTGlzdDoKLSAgICAgICAgICAgICAgICBpZiB0b2tlbiAhPSAiUGFyc2VF
cnJvciI6Ci0gICAgICAgICAgICAgICAgICAgIHRva2Vuc1t0b2tlblR5cGVdWzBdLmFwcGVuZCh0
b2tlbikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpZiBub3Qg
aWdub3JlRXJyb3JzOgotICAgICAgICAgICAgICAgICAgICAgICAgdG9rZW5zW3Rva2VuVHlwZV1b
MV0uYXBwZW5kKHRva2VuKQotICAgICAgICByZXR1cm4gdG9rZW5zWyJleHBlY3RlZCJdID09IHRv
a2Vuc1sicmVjZWl2ZWQiXQotCi0KLWRlZiB1bmVzY2FwZSh0ZXN0KToKLSAgICBkZWYgZGVjb2Rl
KGlucCk6Ci0gICAgICAgIHJldHVybiBpbnAuZW5jb2RlKCJ1dGYtOCIpLmRlY29kZSgidW5pY29k
ZS1lc2NhcGUiKQotCi0gICAgdGVzdFsiaW5wdXQiXSA9IGRlY29kZSh0ZXN0WyJpbnB1dCJdKQot
ICAgIGZvciB0b2tlbiBpbiB0ZXN0WyJvdXRwdXQiXToKLSAgICAgICAgaWYgdG9rZW4gPT0gIlBh
cnNlRXJyb3IiOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHRva2VuWzFdID0gZGVjb2RlKHRva2VuWzFdKQotICAgICAgICAgICAgaWYgbGVuKHRva2Vu
KSA+IDI6Ci0gICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gdG9rZW5bMl06Ci0gICAg
ICAgICAgICAgICAgICAgIGRlbCB0b2tlblsyXVtrZXldCi0gICAgICAgICAgICAgICAgICAgIHRv
a2VuWzJdW2RlY29kZShrZXkpXSA9IGRlY29kZSh2YWx1ZSkKLSAgICByZXR1cm4gdGVzdAotCi0K
LWRlZiBydW5Ub2tlbml6ZXJUZXN0KHRlc3QpOgotICAgIHdhcm5pbmdzLnJlc2V0d2FybmluZ3Mo
KQotICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQotCi0gICAgZXhwZWN0ZWQgPSBj
b25jYXRlbmF0ZUNoYXJhY3RlclRva2Vucyh0ZXN0WydvdXRwdXQnXSkKLSAgICBpZiAnbGFzdFN0
YXJ0VGFnJyBub3QgaW4gdGVzdDoKLSAgICAgICAgdGVzdFsnbGFzdFN0YXJ0VGFnJ10gPSBOb25l
Ci0gICAgcGFyc2VyID0gVG9rZW5pemVyVGVzdFBhcnNlcih0ZXN0Wydpbml0aWFsU3RhdGUnXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RbJ2xhc3RTdGFydFRhZyddKQot
ICAgIHRva2VucyA9IHBhcnNlci5wYXJzZSh0ZXN0WydpbnB1dCddKQotICAgIHRva2VucyA9IGNv
bmNhdGVuYXRlQ2hhcmFjdGVyVG9rZW5zKHRva2VucykKLSAgICByZWNlaXZlZCA9IG5vcm1hbGl6
ZVRva2Vucyh0b2tlbnMpCi0gICAgZXJyb3JNc2cgPSAiXG4iLmpvaW4oWyJcblxuSW5pdGlhbCBz
dGF0ZToiLAotICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0Wydpbml0aWFsU3RhdGUnXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgIlxuSW5wdXQ6IiwgdGVzdFsnaW5wdXQnXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgIlxuRXhwZWN0ZWQ6IiwgcmVwcihleHBlY3RlZCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICJcbnJlY2VpdmVkOiIsIHJlcHIodG9rZW5zKV0pCi0g
ICAgZXJyb3JNc2cgPSBlcnJvck1zZwotICAgIGlnbm9yZUVycm9yT3JkZXIgPSB0ZXN0LmdldCgn
aWdub3JlRXJyb3JPcmRlcicsIEZhbHNlKQotICAgIGFzc2VydCB0b2tlbnNNYXRjaChleHBlY3Rl
ZCwgcmVjZWl2ZWQsIGlnbm9yZUVycm9yT3JkZXIsIFRydWUpLCBlcnJvck1zZwotCi0KLWRlZiBf
ZG9DYXBpdGFsaXplKG1hdGNoKToKLSAgICByZXR1cm4gbWF0Y2guZ3JvdXAoMSkudXBwZXIoKQot
Ci1fY2FwaXRhbGl6ZVJlID0gcmUuY29tcGlsZShyIlxXKyhcdykiKS5zdWIKLQotCi1kZWYgY2Fw
aXRhbGl6ZShzKToKLSAgICBzID0gcy5sb3dlcigpCi0gICAgcyA9IF9jYXBpdGFsaXplUmUoX2Rv
Q2FwaXRhbGl6ZSwgcykKLSAgICByZXR1cm4gcwotCi0KLWRlZiB0ZXN0VG9rZW5pemVyKCk6Ci0g
ICAgZm9yIGZpbGVuYW1lIGluIGdldF9kYXRhX2ZpbGVzKCd0b2tlbml6ZXInLCAnKi50ZXN0Jyk6
Ci0gICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZnA6Ci0gICAgICAgICAgICB0ZXN0cyA9
IGpzb24ubG9hZChmcCkKLSAgICAgICAgICAgIGlmICd0ZXN0cycgaW4gdGVzdHM6Ci0gICAgICAg
ICAgICAgICAgZm9yIGluZGV4LCB0ZXN0IGluIGVudW1lcmF0ZSh0ZXN0c1sndGVzdHMnXSk6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmICdpbml0aWFsU3RhdGVzJyBub3QgaW4gdGVzdDoKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RbImluaXRpYWxTdGF0ZXMiXSA9IFsiRGF0YSBzdGF0ZSJd
Ci0gICAgICAgICAgICAgICAgICAgIGlmICdkb3VibGVFc2NhcGVkJyBpbiB0ZXN0OgotICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdCA9IHVuZXNjYXBlKHRlc3QpCi0gICAgICAgICAgICAgICAg
ICAgIGZvciBpbml0aWFsU3RhdGUgaW4gdGVzdFsiaW5pdGlhbFN0YXRlcyJdOgotICAgICAgICAg
ICAgICAgICAgICAgICAgdGVzdFsiaW5pdGlhbFN0YXRlIl0gPSBjYXBpdGFsaXplKGluaXRpYWxT
dGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHJ1blRva2VuaXplclRlc3QsIHRl
c3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF90cmVlYWRhcHRlcnMucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGli
L2h0bWw1bGliL3Rlc3RzL3Rlc3RfdHJlZWFkYXB0ZXJzLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1ZjM4YjZjMzNkMjU5OTBiNjFlNTRkNjU1YjM4OWNhMjdhMmEyMTkwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVz
dHMvdGVzdF90cmVlYWRhcHRlcnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVuaWNvZGVf
bGl0ZXJhbHMKLQotZnJvbSAuIGltcG9ydCBzdXBwb3J0ICAjIGZsYWtlODogbm9xYQotCi1pbXBv
cnQgaHRtbDVsaWIKLWZyb20gaHRtbDVsaWIudHJlZWFkYXB0ZXJzIGltcG9ydCBzYXgKLWZyb20g
aHRtbDVsaWIudHJlZXdhbGtlcnMgaW1wb3J0IGdldFRyZWVXYWxrZXIKLQotCi1kZWYgdGVzdF90
b19zYXgoKToKLSAgICBoYW5kbGVyID0gc3VwcG9ydC5UcmFjaW5nU2F4SGFuZGxlcigpCi0gICAg
dHJlZSA9IGh0bWw1bGliLnBhcnNlKCIiIjxodG1sIHhtbDpsYW5nPSJlbiI+Ci0gICAgICAgIDx0
aXRsZT5EaXJlY3RvcnkgTGlzdGluZzwvdGl0bGU+Ci0gICAgICAgIDxhIGhyZWY9Ii8iPjxiLz48
L3A+Ci0gICAgIiIiLCB0cmVlYnVpbGRlcj0iZXRyZWUiKQotICAgIHdhbGtlciA9IGdldFRyZWVX
YWxrZXIoImV0cmVlIikKLSAgICBzYXgudG9fc2F4KHdhbGtlcih0cmVlKSwgaGFuZGxlcikKLSAg
ICBleHBlY3RlZCA9IFsKLSAgICAgICAgJ3N0YXJ0RG9jdW1lbnQnLAotICAgICAgICAoJ3N0YXJ0
RWxlbWVudE5TJywgKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2h0bWwnKSwKLSAg
ICAgICAgICAgICdodG1sJywgeyhOb25lLCAneG1sOmxhbmcnKTogJ2VuJ30pLAotICAgICAgICAo
J3N0YXJ0RWxlbWVudE5TJywgKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2hlYWQn
KSwgJ2hlYWQnLCB7fSksCi0gICAgICAgICgnc3RhcnRFbGVtZW50TlMnLCAoJ2h0dHA6Ly93d3cu
dzMub3JnLzE5OTkveGh0bWwnLCAndGl0bGUnKSwgJ3RpdGxlJywge30pLAotICAgICAgICAoJ2No
YXJhY3RlcnMnLCAnRGlyZWN0b3J5IExpc3RpbmcnKSwKLSAgICAgICAgKCdlbmRFbGVtZW50TlMn
LCAoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAndGl0bGUnKSwgJ3RpdGxlJyksCi0g
ICAgICAgICgnY2hhcmFjdGVycycsICdcbiAgICAgICAgJyksCi0gICAgICAgICgnZW5kRWxlbWVu
dE5TJywgKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ2hlYWQnKSwgJ2hlYWQnKSwK
LSAgICAgICAgKCdzdGFydEVsZW1lbnROUycsICAoJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwnLCAnYm9keScpLCAnYm9keScsIHt9KSwKLSAgICAgICAgKCdzdGFydEVsZW1lbnROUycsICgn
aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdhJyksICdhJywgeyhOb25lLCAnaHJlZicp
OiAnLyd9KSwKLSAgICAgICAgKCdzdGFydEVsZW1lbnROUycsICgnaHR0cDovL3d3dy53My5vcmcv
MTk5OS94aHRtbCcsICdiJyksICdiJywge30pLAotICAgICAgICAoJ3N0YXJ0RWxlbWVudE5TJywg
KCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ3AnKSwgJ3AnLCB7fSksCi0gICAgICAg
ICgnZW5kRWxlbWVudE5TJywgKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ3AnKSwg
J3AnKSwKLSAgICAgICAgKCdjaGFyYWN0ZXJzJywgJ1xuICAgICcpLAotICAgICAgICAoJ2VuZEVs
ZW1lbnROUycsICgnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdiJyksICdiJyksCi0g
ICAgICAgICgnZW5kRWxlbWVudE5TJywgKCdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywg
J2EnKSwgJ2EnKSwKLSAgICAgICAgKCdlbmRFbGVtZW50TlMnLCAoJ2h0dHA6Ly93d3cudzMub3Jn
LzE5OTkveGh0bWwnLCAnYm9keScpLCAnYm9keScpLAotICAgICAgICAoJ2VuZEVsZW1lbnROUycs
ICgnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICdodG1sJyksICdodG1sJyksCi0gICAg
ICAgICdlbmREb2N1bWVudCcsCi0gICAgXQotICAgIGFzc2VydCBleHBlY3RlZCA9PSBoYW5kbGVy
LnZpc2l0ZWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF90cmVld2Fsa2Vycy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRt
bDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF90cmVld2Fsa2Vycy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjc3NTYwMzVjMjYzMTViNDQ1NjhiMmY1ODE0NjlkNjFlOTIzNDJmMy4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGli
L3Rlc3RzL3Rlc3RfdHJlZXdhbGtlcnMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzNTMgKzAsMCBA
QAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCB1bmlj
b2RlX2xpdGVyYWxzCi0KLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IHVuaXR0ZXN0Ci1p
bXBvcnQgd2FybmluZ3MKLWZyb20gZGlmZmxpYiBpbXBvcnQgdW5pZmllZF9kaWZmCi0KLXRyeToK
LSAgICB1bml0dGVzdC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAotZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgotICAgIHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydEVxdWFsID0gdW5pdHRlc3QuVGVzdENhc2Uu
YXNzZXJ0RXF1YWxzCi0KLWZyb20gLnN1cHBvcnQgaW1wb3J0IGdldF9kYXRhX2ZpbGVzLCBUZXN0
RGF0YSwgY29udmVydEV4cGVjdGVkCi0KLWZyb20gaHRtbDVsaWIgaW1wb3J0IGh0bWw1cGFyc2Vy
LCB0cmVld2Fsa2VycywgdHJlZWJ1aWxkZXJzLCBjb25zdGFudHMKLQotCi1kZWYgUHVsbERPTUFk
YXB0ZXIobm9kZSk6Ci0gICAgZnJvbSB4bWwuZG9tIGltcG9ydCBOb2RlCi0gICAgZnJvbSB4bWwu
ZG9tLnB1bGxkb20gaW1wb3J0IFNUQVJUX0VMRU1FTlQsIEVORF9FTEVNRU5ULCBDT01NRU5ULCBD
SEFSQUNURVJTCi0KLSAgICBpZiBub2RlLm5vZGVUeXBlIGluIChOb2RlLkRPQ1VNRU5UX05PREUs
IE5vZGUuRE9DVU1FTlRfRlJBR01FTlRfTk9ERSk6Ci0gICAgICAgIGZvciBjaGlsZE5vZGUgaW4g
bm9kZS5jaGlsZE5vZGVzOgotICAgICAgICAgICAgZm9yIGV2ZW50IGluIFB1bGxET01BZGFwdGVy
KGNoaWxkTm9kZSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgZXZlbnQKLQotICAgIGVsaWYgbm9k
ZS5ub2RlVHlwZSA9PSBOb2RlLkRPQ1VNRU5UX1RZUEVfTk9ERToKLSAgICAgICAgcmFpc2UgTm90
SW1wbGVtZW50ZWRFcnJvcigiRE9DVFlQRSBub2RlcyBhcmUgbm90IHN1cHBvcnRlZCBieSBQdWxs
RE9NIikKLQotICAgIGVsaWYgbm9kZS5ub2RlVHlwZSA9PSBOb2RlLkNPTU1FTlRfTk9ERToKLSAg
ICAgICAgeWllbGQgQ09NTUVOVCwgbm9kZQotCi0gICAgZWxpZiBub2RlLm5vZGVUeXBlIGluIChO
b2RlLlRFWFRfTk9ERSwgTm9kZS5DREFUQV9TRUNUSU9OX05PREUpOgotICAgICAgICB5aWVsZCBD
SEFSQUNURVJTLCBub2RlCi0KLSAgICBlbGlmIG5vZGUubm9kZVR5cGUgPT0gTm9kZS5FTEVNRU5U
X05PREU6Ci0gICAgICAgIHlpZWxkIFNUQVJUX0VMRU1FTlQsIG5vZGUKLSAgICAgICAgZm9yIGNo
aWxkTm9kZSBpbiBub2RlLmNoaWxkTm9kZXM6Ci0gICAgICAgICAgICBmb3IgZXZlbnQgaW4gUHVs
bERPTUFkYXB0ZXIoY2hpbGROb2RlKToKLSAgICAgICAgICAgICAgICB5aWVsZCBldmVudAotICAg
ICAgICB5aWVsZCBFTkRfRUxFTUVOVCwgbm9kZQotCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2Ug
Tm90SW1wbGVtZW50ZWRFcnJvcigiTm9kZSB0eXBlIG5vdCBzdXBwb3J0ZWQ6ICIgKyBzdHIobm9k
ZS5ub2RlVHlwZSkpCi0KLXRyZWVUeXBlcyA9IHsKLSAgICAiRE9NIjogeyJidWlsZGVyIjogdHJl
ZWJ1aWxkZXJzLmdldFRyZWVCdWlsZGVyKCJkb20iKSwKLSAgICAgICAgICAgICJ3YWxrZXIiOiB0
cmVld2Fsa2Vycy5nZXRUcmVlV2Fsa2VyKCJkb20iKX0sCi0gICAgIlB1bGxET00iOiB7ImJ1aWxk
ZXIiOiB0cmVlYnVpbGRlcnMuZ2V0VHJlZUJ1aWxkZXIoImRvbSIpLAotICAgICAgICAgICAgICAg
ICJhZGFwdGVyIjogUHVsbERPTUFkYXB0ZXIsCi0gICAgICAgICAgICAgICAgIndhbGtlciI6IHRy
ZWV3YWxrZXJzLmdldFRyZWVXYWxrZXIoInB1bGxkb20iKX0sCi19Ci0KLSMgVHJ5IHdoYXRldmVy
IGV0cmVlIGltcGxlbWVudGF0aW9ucyBhcmUgYXZhaWxhYmxlIGZyb20gYSBsaXN0IHRoYXQgYXJl
Ci0jInN1cHBvc2VkIiB0byB3b3JrCi10cnk6Ci0gICAgaW1wb3J0IHhtbC5ldHJlZS5FbGVtZW50
VHJlZSBhcyBFbGVtZW50VHJlZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6
Ci0gICAgdHJlZVR5cGVzWydFbGVtZW50VHJlZSddID0gXAotICAgICAgICB7ImJ1aWxkZXIiOiB0
cmVlYnVpbGRlcnMuZ2V0VHJlZUJ1aWxkZXIoImV0cmVlIiwgRWxlbWVudFRyZWUpLAotICAgICAg
ICAgIndhbGtlciI6IHRyZWV3YWxrZXJzLmdldFRyZWVXYWxrZXIoImV0cmVlIiwgRWxlbWVudFRy
ZWUpfQotCi10cnk6Ci0gICAgaW1wb3J0IHhtbC5ldHJlZS5jRWxlbWVudFRyZWUgYXMgRWxlbWVu
dFRyZWUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi1lbHNlOgotICAgIHRyZWVUeXBl
c1snY0VsZW1lbnRUcmVlJ10gPSBcCi0gICAgICAgIHsiYnVpbGRlciI6IHRyZWVidWlsZGVycy5n
ZXRUcmVlQnVpbGRlcigiZXRyZWUiLCBFbGVtZW50VHJlZSksCi0gICAgICAgICAid2Fsa2VyIjog
dHJlZXdhbGtlcnMuZ2V0VHJlZVdhbGtlcigiZXRyZWUiLCBFbGVtZW50VHJlZSl9Ci0KLQotdHJ5
OgotICAgIGltcG9ydCBseG1sLmV0cmVlIGFzIEVsZW1lbnRUcmVlICAjIGZsYWtlODogbm9xYQot
ZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6Ci0gICAgdHJlZVR5cGVzWydseG1s
X25hdGl2ZSddID0gXAotICAgICAgICB7ImJ1aWxkZXIiOiB0cmVlYnVpbGRlcnMuZ2V0VHJlZUJ1
aWxkZXIoImx4bWwiKSwKLSAgICAgICAgICJ3YWxrZXIiOiB0cmVld2Fsa2Vycy5nZXRUcmVlV2Fs
a2VyKCJseG1sIil9Ci0KLQotdHJ5OgotICAgIGZyb20gZ2Vuc2hpLmNvcmUgaW1wb3J0IFFOYW1l
LCBBdHRycwotICAgIGZyb20gZ2Vuc2hpLmNvcmUgaW1wb3J0IFNUQVJULCBFTkQsIFRFWFQsIENP
TU1FTlQsIERPQ1RZUEUKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi1lbHNlOgotICAg
IGRlZiBHZW5zaGlBZGFwdGVyKHRyZWUpOgotICAgICAgICB0ZXh0ID0gTm9uZQotICAgICAgICBm
b3IgdG9rZW4gaW4gdHJlZXdhbGtlcnMuZ2V0VHJlZVdhbGtlcigiZG9tIikodHJlZSk6Ci0gICAg
ICAgICAgICB0eXBlID0gdG9rZW5bInR5cGUiXQotICAgICAgICAgICAgaWYgdHlwZSBpbiAoIkNo
YXJhY3RlcnMiLCAiU3BhY2VDaGFyYWN0ZXJzIik6Ci0gICAgICAgICAgICAgICAgaWYgdGV4dCBp
cyBOb25lOgotICAgICAgICAgICAgICAgICAgICB0ZXh0ID0gdG9rZW5bImRhdGEiXQotICAgICAg
ICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRleHQgKz0gdG9rZW5bImRhdGEi
XQotICAgICAgICAgICAgZWxpZiB0ZXh0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHlp
ZWxkIFRFWFQsIHRleHQsIChOb25lLCAtMSwgLTEpCi0gICAgICAgICAgICAgICAgdGV4dCA9IE5v
bmUKLQotICAgICAgICAgICAgaWYgdHlwZSBpbiAoIlN0YXJ0VGFnIiwgIkVtcHR5VGFnIik6Ci0g
ICAgICAgICAgICAgICAgaWYgdG9rZW5bIm5hbWVzcGFjZSJdOgotICAgICAgICAgICAgICAgICAg
ICBuYW1lID0gInslc30lcyIgJSAodG9rZW5bIm5hbWVzcGFjZSJdLCB0b2tlblsibmFtZSJdKQot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSB0b2tlblsi
bmFtZSJdCi0gICAgICAgICAgICAgICAgYXR0cnMgPSBBdHRycyhbKFFOYW1lKCJ7JXN9JXMiICUg
YXR0ciBpZiBhdHRyWzBdIGlzIG5vdCBOb25lIGVsc2UgYXR0clsxXSksIHZhbHVlKQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhdHRyLCB2YWx1ZSBpbiB0b2tlblsiZGF0YSJd
Lml0ZW1zKCldKQotICAgICAgICAgICAgICAgIHlpZWxkIChTVEFSVCwgKFFOYW1lKG5hbWUpLCBh
dHRycyksIChOb25lLCAtMSwgLTEpKQotICAgICAgICAgICAgICAgIGlmIHR5cGUgPT0gIkVtcHR5
VGFnIjoKLSAgICAgICAgICAgICAgICAgICAgdHlwZSA9ICJFbmRUYWciCi0KLSAgICAgICAgICAg
IGlmIHR5cGUgPT0gIkVuZFRhZyI6Ci0gICAgICAgICAgICAgICAgaWYgdG9rZW5bIm5hbWVzcGFj
ZSJdOgotICAgICAgICAgICAgICAgICAgICBuYW1lID0gInslc30lcyIgJSAodG9rZW5bIm5hbWVz
cGFjZSJdLCB0b2tlblsibmFtZSJdKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIG5hbWUgPSB0b2tlblsibmFtZSJdCi0KLSAgICAgICAgICAgICAgICB5aWVsZCBF
TkQsIFFOYW1lKG5hbWUpLCAoTm9uZSwgLTEsIC0xKQotCi0gICAgICAgICAgICBlbGlmIHR5cGUg
PT0gIkNvbW1lbnQiOgotICAgICAgICAgICAgICAgIHlpZWxkIENPTU1FTlQsIHRva2VuWyJkYXRh
Il0sIChOb25lLCAtMSwgLTEpCi0KLSAgICAgICAgICAgIGVsaWYgdHlwZSA9PSAiRG9jdHlwZSI6
Ci0gICAgICAgICAgICAgICAgeWllbGQgRE9DVFlQRSwgKHRva2VuWyJuYW1lIl0sIHRva2VuWyJw
dWJsaWNJZCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlblsic3lzdGVt
SWQiXSksIChOb25lLCAtMSwgLTEpCi0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcGFzcyAgIyBGSVhNRTogV2hhdCB0byBkbz8KLQotICAgICAgICBpZiB0ZXh0IGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgeWllbGQgVEVYVCwgdGV4dCwgKE5vbmUsIC0xLCAtMSkKLQotICAg
IHRyZWVUeXBlc1siZ2Vuc2hpIl0gPSBcCi0gICAgICAgIHsiYnVpbGRlciI6IHRyZWVidWlsZGVy
cy5nZXRUcmVlQnVpbGRlcigiZG9tIiksCi0gICAgICAgICAiYWRhcHRlciI6IEdlbnNoaUFkYXB0
ZXIsCi0gICAgICAgICAid2Fsa2VyIjogdHJlZXdhbGtlcnMuZ2V0VHJlZVdhbGtlcigiZ2Vuc2hp
Iil9Ci0KLQotZGVmIGNvbmNhdGVuYXRlQ2hhcmFjdGVyVG9rZW5zKHRva2Vucyk6Ci0gICAgY2hh
cmFjdGVyc1Rva2VuID0gTm9uZQotICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6Ci0gICAgICAgIHR5
cGUgPSB0b2tlblsidHlwZSJdCi0gICAgICAgIGlmIHR5cGUgaW4gKCJDaGFyYWN0ZXJzIiwgIlNw
YWNlQ2hhcmFjdGVycyIpOgotICAgICAgICAgICAgaWYgY2hhcmFjdGVyc1Rva2VuIGlzIE5vbmU6
Ci0gICAgICAgICAgICAgICAgY2hhcmFjdGVyc1Rva2VuID0geyJ0eXBlIjogIkNoYXJhY3RlcnMi
LCAiZGF0YSI6IHRva2VuWyJkYXRhIl19Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGNoYXJhY3RlcnNUb2tlblsiZGF0YSJdICs9IHRva2VuWyJkYXRhIl0KLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGlmIGNoYXJhY3RlcnNUb2tlbiBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICB5aWVsZCBjaGFyYWN0ZXJzVG9rZW4KLSAgICAgICAgICAgICAgICBjaGFyYWN0ZXJz
VG9rZW4gPSBOb25lCi0gICAgICAgICAgICB5aWVsZCB0b2tlbgotICAgIGlmIGNoYXJhY3RlcnNU
b2tlbiBpcyBub3QgTm9uZToKLSAgICAgICAgeWllbGQgY2hhcmFjdGVyc1Rva2VuCi0KLQotZGVm
IGNvbnZlcnRUb2tlbnModG9rZW5zKToKLSAgICBvdXRwdXQgPSBbXQotICAgIGluZGVudCA9IDAK
LSAgICBmb3IgdG9rZW4gaW4gY29uY2F0ZW5hdGVDaGFyYWN0ZXJUb2tlbnModG9rZW5zKToKLSAg
ICAgICAgdHlwZSA9IHRva2VuWyJ0eXBlIl0KLSAgICAgICAgaWYgdHlwZSBpbiAoIlN0YXJ0VGFn
IiwgIkVtcHR5VGFnIik6Ci0gICAgICAgICAgICBpZiAodG9rZW5bIm5hbWVzcGFjZSJdIGFuZAot
ICAgICAgICAgICAgICAgICAgICB0b2tlblsibmFtZXNwYWNlIl0gIT0gY29uc3RhbnRzLm5hbWVz
cGFjZXNbImh0bWwiXSk6Ci0gICAgICAgICAgICAgICAgaWYgdG9rZW5bIm5hbWVzcGFjZSJdIGlu
IGNvbnN0YW50cy5wcmVmaXhlczoKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGNvbnN0YW50
cy5wcmVmaXhlc1t0b2tlblsibmFtZXNwYWNlIl1dCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgbmFtZSA9IHRva2VuWyJuYW1lc3BhY2UiXQotICAgICAgICAgICAg
ICAgIG5hbWUgKz0gIiAiICsgdG9rZW5bIm5hbWUiXQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBuYW1lID0gdG9rZW5bIm5hbWUiXQotICAgICAgICAgICAgb3V0cHV0LmFwcGVu
ZCgiJXM8JXM+IiAlICgiICIgKiBpbmRlbnQsIG5hbWUpKQotICAgICAgICAgICAgaW5kZW50ICs9
IDIKLSAgICAgICAgICAgIGF0dHJzID0gdG9rZW5bImRhdGEiXQotICAgICAgICAgICAgaWYgYXR0
cnM6Ci0gICAgICAgICAgICAgICAgIyBUT0RPOiBSZW1vdmUgdGhpcyBpZiBzdGF0ZW1lbnQsIGF0
dHJzIHNob3VsZCBhbHdheXMgZXhpc3QKLSAgICAgICAgICAgICAgICBmb3IgKG5hbWVzcGFjZSwg
bmFtZSksIHZhbHVlIGluIHNvcnRlZChhdHRycy5pdGVtcygpKToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgbmFtZXNwYWNlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmFtZXNwYWNlIGlu
IGNvbnN0YW50cy5wcmVmaXhlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRu
YW1lID0gY29uc3RhbnRzLnByZWZpeGVzW25hbWVzcGFjZV0KLSAgICAgICAgICAgICAgICAgICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0bmFtZSA9IG5hbWVz
cGFjZQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0bmFtZSArPSAiICIgKyBuYW1lCi0g
ICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXRu
YW1lID0gbmFtZQotICAgICAgICAgICAgICAgICAgICBvdXRwdXQuYXBwZW5kKCIlcyVzPVwiJXNc
IiIgJSAoIiAiICogaW5kZW50LCBvdXRwdXRuYW1lLCB2YWx1ZSkpCi0gICAgICAgICAgICBpZiB0
eXBlID09ICJFbXB0eVRhZyI6Ci0gICAgICAgICAgICAgICAgaW5kZW50IC09IDIKLSAgICAgICAg
ZWxpZiB0eXBlID09ICJFbmRUYWciOgotICAgICAgICAgICAgaW5kZW50IC09IDIKLSAgICAgICAg
ZWxpZiB0eXBlID09ICJDb21tZW50IjoKLSAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIiVzPCEt
LSAlcyAtLT4iICUgKCIgIiAqIGluZGVudCwgdG9rZW5bImRhdGEiXSkpCi0gICAgICAgIGVsaWYg
dHlwZSA9PSAiRG9jdHlwZSI6Ci0gICAgICAgICAgICBpZiB0b2tlblsibmFtZSJdOgotICAgICAg
ICAgICAgICAgIGlmIHRva2VuWyJwdWJsaWNJZCJdOgotICAgICAgICAgICAgICAgICAgICBvdXRw
dXQuYXBwZW5kKCIiIiVzPCFET0NUWVBFICVzICIlcyIgIiVzIj4iIiIgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICgiICIgKiBpbmRlbnQsIHRva2VuWyJuYW1lIl0sCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWyJwdWJsaWNJZCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tlblsic3lzdGVtSWQiXSBhbmQgdG9rZW5b
InN5c3RlbUlkIl0gb3IgIiIpKQotICAgICAgICAgICAgICAgIGVsaWYgdG9rZW5bInN5c3RlbUlk
Il06Ci0gICAgICAgICAgICAgICAgICAgIG91dHB1dC5hcHBlbmQoIiIiJXM8IURPQ1RZUEUgJXMg
IiIgIiVzIj4iIiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiICIgKiBp
bmRlbnQsIHRva2VuWyJuYW1lIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRva2VuWyJzeXN0ZW1JZCJdKSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICBvdXRwdXQuYXBwZW5kKCIlczwhRE9DVFlQRSAlcz4iICUgKCIgIiAqIGluZGVudCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
b2tlblsibmFtZSJdKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgb3V0cHV0
LmFwcGVuZCgiJXM8IURPQ1RZUEUgPiIgJSAoIiAiICogaW5kZW50LCkpCi0gICAgICAgIGVsaWYg
dHlwZSBpbiAoIkNoYXJhY3RlcnMiLCAiU3BhY2VDaGFyYWN0ZXJzIik6Ci0gICAgICAgICAgICBv
dXRwdXQuYXBwZW5kKCIlc1wiJXNcIiIgJSAoIiAiICogaW5kZW50LCB0b2tlblsiZGF0YSJdKSkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHBhc3MgICMgVE9ETzogd2hhdCB0byBkbyB3aXRo
IGVycm9ycz8KLSAgICByZXR1cm4gIlxuIi5qb2luKG91dHB1dCkKLQotaW1wb3J0IHJlCi1hdHRy
bGlzdCA9IHJlLmNvbXBpbGUociJeKFxzKylcdys9LiooXG5cMVx3Kz0uKikrIiwgcmUuTSkKLQot
Ci1kZWYgc29ydGF0dHJzKHgpOgotICAgIGxpbmVzID0geC5ncm91cCgwKS5zcGxpdCgiXG4iKQot
ICAgIGxpbmVzLnNvcnQoKQotICAgIHJldHVybiAiXG4iLmpvaW4obGluZXMpCi0KLQotY2xhc3Mg
VG9rZW5UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfYWxsX3Rva2Vu
cyhzZWxmKToKLSAgICAgICAgZXhwZWN0ZWQgPSBbCi0gICAgICAgICAgICB7J2RhdGEnOiB7fSwg
J3R5cGUnOiAnU3RhcnRUYWcnLCAnbmFtZXNwYWNlJzogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkv
eGh0bWwnLCAnbmFtZSc6ICdodG1sJ30sCi0gICAgICAgICAgICB7J2RhdGEnOiB7fSwgJ3R5cGUn
OiAnU3RhcnRUYWcnLCAnbmFtZXNwYWNlJzogJ2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwn
LCAnbmFtZSc6ICdoZWFkJ30sCi0gICAgICAgICAgICB7J2RhdGEnOiB7fSwgJ3R5cGUnOiAnRW5k
VGFnJywgJ25hbWVzcGFjZSc6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ25hbWUn
OiAnaGVhZCd9LAotICAgICAgICAgICAgeydkYXRhJzoge30sICd0eXBlJzogJ1N0YXJ0VGFnJywg
J25hbWVzcGFjZSc6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywgJ25hbWUnOiAnYm9k
eSd9LAotICAgICAgICAgICAgeydkYXRhJzogJ2EnLCAndHlwZSc6ICdDaGFyYWN0ZXJzJ30sCi0g
ICAgICAgICAgICB7J2RhdGEnOiB7fSwgJ3R5cGUnOiAnU3RhcnRUYWcnLCAnbmFtZXNwYWNlJzog
J2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwnLCAnbmFtZSc6ICdkaXYnfSwKLSAgICAgICAg
ICAgIHsnZGF0YSc6ICdiJywgJ3R5cGUnOiAnQ2hhcmFjdGVycyd9LAotICAgICAgICAgICAgeydk
YXRhJzoge30sICd0eXBlJzogJ0VuZFRhZycsICduYW1lc3BhY2UnOiAnaHR0cDovL3d3dy53My5v
cmcvMTk5OS94aHRtbCcsICduYW1lJzogJ2Rpdid9LAotICAgICAgICAgICAgeydkYXRhJzogJ2Mn
LCAndHlwZSc6ICdDaGFyYWN0ZXJzJ30sCi0gICAgICAgICAgICB7J2RhdGEnOiB7fSwgJ3R5cGUn
OiAnRW5kVGFnJywgJ25hbWVzcGFjZSc6ICdodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sJywg
J25hbWUnOiAnYm9keSd9LAotICAgICAgICAgICAgeydkYXRhJzoge30sICd0eXBlJzogJ0VuZFRh
ZycsICduYW1lc3BhY2UnOiAnaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCcsICduYW1lJzog
J2h0bWwnfQotICAgICAgICBdCi0gICAgICAgIGZvciB0cmVlTmFtZSwgdHJlZUNscyBpbiB0cmVl
VHlwZXMuaXRlbXMoKToKLSAgICAgICAgICAgIHAgPSBodG1sNXBhcnNlci5IVE1MUGFyc2VyKHRy
ZWU9dHJlZUNsc1siYnVpbGRlciJdKQotICAgICAgICAgICAgZG9jdW1lbnQgPSBwLnBhcnNlKCI8
aHRtbD48aGVhZD48L2hlYWQ+PGJvZHk+YTxkaXY+YjwvZGl2PmM8L2JvZHk+PC9odG1sPiIpCi0g
ICAgICAgICAgICBkb2N1bWVudCA9IHRyZWVDbHMuZ2V0KCJhZGFwdGVyIiwgbGFtYmRhIHg6IHgp
KGRvY3VtZW50KQotICAgICAgICAgICAgb3V0cHV0ID0gdHJlZUNsc1sid2Fsa2VyIl0oZG9jdW1l
bnQpCi0gICAgICAgICAgICBmb3IgZXhwZWN0ZWRUb2tlbiwgb3V0cHV0VG9rZW4gaW4gemlwKGV4
cGVjdGVkLCBvdXRwdXQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0
ZWRUb2tlbiwgb3V0cHV0VG9rZW4pCi0KLQotZGVmIHJ1blRyZWV3YWxrZXJUZXN0KGlubmVySFRN
TCwgaW5wdXQsIGV4cGVjdGVkLCBlcnJvcnMsIHRyZWVDbGFzcyk6Ci0gICAgd2FybmluZ3MucmVz
ZXR3YXJuaW5ncygpCi0gICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJlcnJvciIpCi0gICAgdHJ5
OgotICAgICAgICBwID0gaHRtbDVwYXJzZXIuSFRNTFBhcnNlcih0cmVlPXRyZWVDbGFzc1siYnVp
bGRlciJdKQotICAgICAgICBpZiBpbm5lckhUTUw6Ci0gICAgICAgICAgICBkb2N1bWVudCA9IHAu
cGFyc2VGcmFnbWVudChpbnB1dCwgaW5uZXJIVE1MKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgZG9jdW1lbnQgPSBwLnBhcnNlKGlucHV0KQotICAgIGV4Y2VwdCBjb25zdGFudHMuRGF0YUxv
c3NXYXJuaW5nOgotICAgICAgICAjIElnbm9yZSB0ZXN0Y2FzZXMgd2Uga25vdyB3ZSBkb24ndCBw
YXNzCi0gICAgICAgIHJldHVybgotCi0gICAgZG9jdW1lbnQgPSB0cmVlQ2xhc3MuZ2V0KCJhZGFw
dGVyIiwgbGFtYmRhIHg6IHgpKGRvY3VtZW50KQotICAgIHRyeToKLSAgICAgICAgb3V0cHV0ID0g
Y29udmVydFRva2Vucyh0cmVlQ2xhc3NbIndhbGtlciJdKGRvY3VtZW50KSkKLSAgICAgICAgb3V0
cHV0ID0gYXR0cmxpc3Quc3ViKHNvcnRhdHRycywgb3V0cHV0KQotICAgICAgICBleHBlY3RlZCA9
IGF0dHJsaXN0LnN1Yihzb3J0YXR0cnMsIGNvbnZlcnRFeHBlY3RlZChleHBlY3RlZCkpCi0gICAg
ICAgIGRpZmYgPSAiIi5qb2luKHVuaWZpZWRfZGlmZihbbGluZSArICJcbiIgZm9yIGxpbmUgaW4g
ZXhwZWN0ZWQuc3BsaXRsaW5lcygpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFtsaW5lICsgIlxuIiBmb3IgbGluZSBpbiBvdXRwdXQuc3BsaXRsaW5lcygpXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBlY3RlZCIsICJSZWNlaXZlZCIpKQot
ICAgICAgICBhc3NlcnQgZXhwZWN0ZWQgPT0gb3V0cHV0LCAiXG4iLmpvaW4oWwotICAgICAgICAg
ICAgIiIsICJJbnB1dDoiLCBpbnB1dCwKLSAgICAgICAgICAgICAgICAiIiwgIkV4cGVjdGVkOiIs
IGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICIiLCAiUmVjZWl2ZWQ6Iiwgb3V0cHV0LAotICAg
ICAgICAgICAgICAgICIiLCAiRGlmZjoiLCBkaWZmLAotICAgICAgICBdKQotICAgIGV4Y2VwdCBO
b3RJbXBsZW1lbnRlZEVycm9yOgotICAgICAgICBwYXNzICAjIEFtbmVzdHkgZm9yIHRob3NlIHRo
YXQgY29uZmVzcy4uLgotCi0KLWRlZiB0ZXN0X3RyZWV3YWxrZXIoKToKLSAgICBzeXMuc3Rkb3V0
LndyaXRlKCdUZXN0aW5nIHRyZWUgd2Fsa2VycyAnICsgIiAiLmpvaW4obGlzdCh0cmVlVHlwZXMu
a2V5cygpKSkgKyAiXG4iKQotCi0gICAgZm9yIHRyZWVOYW1lLCB0cmVlQ2xzIGluIHRyZWVUeXBl
cy5pdGVtcygpOgotICAgICAgICBmaWxlcyA9IGdldF9kYXRhX2ZpbGVzKCd0cmVlLWNvbnN0cnVj
dGlvbicpCi0gICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgIHRlc3RO
YW1lID0gb3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkucmVwbGFjZSgiLmRhdCIsICIiKQotICAg
ICAgICAgICAgaWYgdGVzdE5hbWUgaW4gKCJ0ZW1wbGF0ZSIsKToKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotCi0gICAgICAgICAgICB0ZXN0cyA9IFRlc3REYXRhKGZpbGVuYW1lLCAiZGF0YSIp
Ci0KLSAgICAgICAgICAgIGZvciBpbmRleCwgdGVzdCBpbiBlbnVtZXJhdGUodGVzdHMpOgotICAg
ICAgICAgICAgICAgIChpbnB1dCwgZXJyb3JzLAotICAgICAgICAgICAgICAgICBpbm5lckhUTUws
IGV4cGVjdGVkKSA9IFt0ZXN0W2tleV0gZm9yIGtleSBpbiAoImRhdGEiLCAiZXJyb3JzIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkb2N1bWVudC1mcmFnbWVudCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9jdW1lbnQiKV0KLSAgICAgICAgICAg
ICAgICBlcnJvcnMgPSBlcnJvcnMuc3BsaXQoIlxuIikKLSAgICAgICAgICAgICAgICB5aWVsZCBy
dW5UcmVld2Fsa2VyVGVzdCwgaW5uZXJIVE1MLCBpbnB1dCwgZXhwZWN0ZWQsIGVycm9ycywgdHJl
ZUNscwotCi0KLWRlZiBzZXRfYXR0cmlidXRlX29uX2ZpcnN0X2NoaWxkKGRvY2ZyYWcsIG5hbWUs
IHZhbHVlLCB0cmVlTmFtZSk6Ci0gICAgIiIibmFpdmVseSBzZXRzIGFuIGF0dHJpYnV0ZSBvbiB0
aGUgZmlyc3QgY2hpbGQgb2YgdGhlIGRvY3VtZW50Ci0gICAgZnJhZ21lbnQgcGFzc2VkIGluIiIi
Ci0gICAgc2V0dGVyID0geydFbGVtZW50VHJlZSc6IGxhbWJkYSBkOiBkWzBdLnNldCwKLSAgICAg
ICAgICAgICAgJ0RPTSc6IGxhbWJkYSBkOiBkLmZpcnN0Q2hpbGQuc2V0QXR0cmlidXRlfQotICAg
IHNldHRlclsnY0VsZW1lbnRUcmVlJ10gPSBzZXR0ZXJbJ0VsZW1lbnRUcmVlJ10KLSAgICB0cnk6
Ci0gICAgICAgIHNldHRlci5nZXQodHJlZU5hbWUsIHNldHRlclsnRE9NJ10pKGRvY2ZyYWcpKG5h
bWUsIHZhbHVlKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgc2V0dGVyWydF
bGVtZW50VHJlZSddKGRvY2ZyYWcpKG5hbWUsIHZhbHVlKQotCi0KLWRlZiBydW5UcmVld2Fsa2Vy
RWRpdFRlc3QoaW50ZXh0LCBleHBlY3RlZCwgYXR0cnNfdG9fYWRkLCB0cmVlKToKLSAgICAiIiJ0
ZXN0cyB3aGF0IGhhcHBlbnMgd2hlbiB3ZSBhZGQgYXR0cmlidXRlcyB0byB0aGUgaW50ZXh0IiIi
Ci0gICAgdHJlZU5hbWUsIHRyZWVDbGFzcyA9IHRyZWUKLSAgICBwYXJzZXIgPSBodG1sNXBhcnNl
ci5IVE1MUGFyc2VyKHRyZWU9dHJlZUNsYXNzWyJidWlsZGVyIl0pCi0gICAgZG9jdW1lbnQgPSBw
YXJzZXIucGFyc2VGcmFnbWVudChpbnRleHQpCi0gICAgZm9yIG5vbSwgdmFsIGluIGF0dHJzX3Rv
X2FkZDoKLSAgICAgICAgc2V0X2F0dHJpYnV0ZV9vbl9maXJzdF9jaGlsZChkb2N1bWVudCwgbm9t
LCB2YWwsIHRyZWVOYW1lKQotCi0gICAgZG9jdW1lbnQgPSB0cmVlQ2xhc3MuZ2V0KCJhZGFwdGVy
IiwgbGFtYmRhIHg6IHgpKGRvY3VtZW50KQotICAgIG91dHB1dCA9IGNvbnZlcnRUb2tlbnModHJl
ZUNsYXNzWyJ3YWxrZXIiXShkb2N1bWVudCkpCi0gICAgb3V0cHV0ID0gYXR0cmxpc3Quc3ViKHNv
cnRhdHRycywgb3V0cHV0KQotICAgIGlmIG5vdCBvdXRwdXQgaW4gZXhwZWN0ZWQ6Ci0gICAgICAg
IHJhaXNlIEFzc2VydGlvbkVycm9yKCJUcmVld2Fsa2VyRWRpdFRlc3Q6ICVzXG5FeHBlY3RlZDpc
biVzXG5SZWNlaXZlZDpcbiVzIiAlICh0cmVlTmFtZSwgZXhwZWN0ZWQsIG91dHB1dCkpCi0KLQot
ZGVmIHRlc3RfdHJlZXdhbGtlcl9zaXhfbWl4KCk6Ci0gICAgIiIiU3RyL1VuaWNvZGUgbWl4LiBJ
ZiBzdHIgYXR0cnMgYWRkZWQgdG8gdHJlZSIiIgotCi0gICAgIyBPbiBQeXRob24gMi54IHN0cmlu
ZyBsaXRlcmFscyBhcmUgb2YgdHlwZSBzdHIuIFVubGVzcywgbGlrZSB0aGlzCi0gICAgIyBmaWxl
LCB0aGUgcHJvZ3JhbW1lciBpbXBvcnRzIHVuaWNvZGVfbGl0ZXJhbHMgZnJvbSBfX2Z1dHVyZV9f
LgotICAgICMgSW4gdGhhdCBjYXNlLCBzdHJpbmcgbGl0ZXJhbHMgYmVjb21lIG9iamVjdHMgb2Yg
dHlwZSB1bmljb2RlLgotCi0gICAgIyBUaGlzIHRlc3Qgc2ltdWxhdGVzIGEgUHkyIHVzZXIsIG1v
ZGlmeWluZyBhdHRyaWJ1dGVzIG9uIGEgZG9jdW1lbnQKLSAgICAjIGZyYWdtZW50IGJ1dCBub3Qg
dXNpbmcgdGhlIHUnJyBzeW50YXggbm9yIGltcG9ydGluZyB1bmljb2RlX2xpdGVyYWxzCi0gICAg
c21fdGVzdHMgPSBbCi0gICAgICAgICgnPGEgaHJlZj0iaHR0cDovL2V4YW1wbGUuY29tIj5FeGFt
cGxlPC9hPicsCi0gICAgICAgICBbKHN0cignY2xhc3MnKSwgc3RyKCd0ZXN0MTIzJykpXSwKLSAg
ICAgICAgICc8YT5cbiAgY2xhc3M9InRlc3QxMjMiXG4gIGhyZWY9Imh0dHA6Ly9leGFtcGxlLmNv
bSJcbiAgIkV4YW1wbGUiJyksCi0KLSAgICAgICAgKCc8bGluayBocmVmPSJodHRwOi8vZXhhbXBs
ZS5jb20vY293Ij4nLAotICAgICAgICAgWyhzdHIoJ3JlbCcpLCBzdHIoJ2FsdGVybmF0ZScpKV0s
Ci0gICAgICAgICAnPGxpbms+XG4gIGhyZWY9Imh0dHA6Ly9leGFtcGxlLmNvbS9jb3ciXG4gIHJl
bD0iYWx0ZXJuYXRlIlxuICAiRXhhbXBsZSInKQotICAgIF0KLQotICAgIGZvciB0cmVlIGluIHRy
ZWVUeXBlcy5pdGVtcygpOgotICAgICAgICBmb3IgaW50ZXh0LCBhdHRycywgZXhwZWN0ZWQgaW4g
c21fdGVzdHM6Ci0gICAgICAgICAgICB5aWVsZCBydW5UcmVld2Fsa2VyRWRpdFRlc3QsIGludGV4
dCwgZXhwZWN0ZWQsIGF0dHJzLCB0cmVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rl
c3Rfd2hpdGVzcGFjZV9maWx0ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3Rfd2hpdGVzcGFj
ZV9maWx0ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllZDI3ZmQ2YWMwYTY3
OGJkYzQ4ZjBmZDkxZWU0ZTRmNGNiNjU4ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X3doaXRlc3BhY2VfZmlsdGVy
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTMzICswLDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBv
cnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgdW5pY29kZV9saXRlcmFscwotCi1pbXBvcnQg
dW5pdHRlc3QKLQotZnJvbSBodG1sNWxpYi5maWx0ZXJzLndoaXRlc3BhY2UgaW1wb3J0IEZpbHRl
cgotZnJvbSBodG1sNWxpYi5jb25zdGFudHMgaW1wb3J0IHNwYWNlQ2hhcmFjdGVycwotc3BhY2VD
aGFyYWN0ZXJzID0gIiIuam9pbihzcGFjZUNoYXJhY3RlcnMpCi0KLXRyeToKLSAgICB1bml0dGVz
dC5UZXN0Q2FzZS5hc3NlcnRFcXVhbAotZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgIHVuaXR0
ZXN0LlRlc3RDYXNlLmFzc2VydEVxdWFsID0gdW5pdHRlc3QuVGVzdENhc2UuYXNzZXJ0RXF1YWxz
Ci0KLQotY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBydW5UZXN0
KHNlbGYsIGlucHV0LCBleHBlY3RlZCk6Ci0gICAgICAgIG91dHB1dCA9IGxpc3QoRmlsdGVyKGlu
cHV0KSkKLSAgICAgICAgZXJyb3JNc2cgPSAiXG4iLmpvaW4oWyJcblxuSW5wdXQ6Iiwgc3RyKGlu
cHV0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJcbkV4cGVjdGVkOiIsIHN0cihl
eHBlY3RlZCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiXG5SZWNlaXZlZDoiLCBz
dHIob3V0cHV0KV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCBleHBlY3RlZCwg
ZXJyb3JNc2cpCi0KLSAgICBkZWYgcnVuVGVzdFVubW9kaWZpZWRPdXRwdXQoc2VsZiwgaW5wdXQp
OgotICAgICAgICBzZWxmLnJ1blRlc3QoaW5wdXQsIGlucHV0KQotCi0gICAgZGVmIHRlc3RQaHJh
c2luZ0VsZW1lbnRzKHNlbGYpOgotICAgICAgICBzZWxmLnJ1blRlc3RVbm1vZGlmaWVkT3V0cHV0
KAotICAgICAgICAgICAgW3sidHlwZSI6ICJDaGFyYWN0ZXJzIiwgImRhdGEiOiAiVGhpcyBpcyBh
ICJ9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInNwYW4iLCAi
ZGF0YSI6IFtdfSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiQ2hhcmFjdGVycyIsICJkYXRhIjog
InBocmFzZSJ9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJFbmRUYWciLCAibmFtZSI6ICJzcGFu
IiwgImRhdGEiOiBbXX0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIlNwYWNlQ2hhcmFjdGVycyIs
ICJkYXRhIjogIiAifSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiQ2hhcmFjdGVycyIsICJkYXRh
IjogIndpdGgifSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiU3BhY2VDaGFyYWN0ZXJzIiwgImRh
dGEiOiAiICJ9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogImVt
IiwgImRhdGEiOiBbXX0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkNoYXJhY3RlcnMiLCAiZGF0
YSI6ICJlbXBoYXNpc2VkIHRleHQifSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiRW5kVGFnIiwg
Im5hbWUiOiAiZW0iLCAiZGF0YSI6IFtdfSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiQ2hhcmFj
dGVycyIsICJkYXRhIjogIiBhbmQgYW4gIn0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIlN0YXJ0
VGFnIiwgIm5hbWUiOiAiaW1nIiwgImRhdGEiOiBbWyJhbHQiLCAiaW1hZ2UiXV19LAotICAgICAg
ICAgICAgIHsidHlwZSI6ICJDaGFyYWN0ZXJzIiwgImRhdGEiOiAiLiJ9XSkKLQotICAgIGRlZiB0
ZXN0TGVhZGluZ1doaXRlc3BhY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuVGVzdCgKLSAgICAg
ICAgICAgIFt7InR5cGUiOiAiU3RhcnRUYWciLCAibmFtZSI6ICJwIiwgImRhdGEiOiBbXX0sCi0g
ICAgICAgICAgICAgeyJ0eXBlIjogIlNwYWNlQ2hhcmFjdGVycyIsICJkYXRhIjogc3BhY2VDaGFy
YWN0ZXJzfSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiQ2hhcmFjdGVycyIsICJkYXRhIjogImZv
byJ9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJFbmRUYWciLCAibmFtZSI6ICJwIiwgImRhdGEi
OiBbXX1dLAotICAgICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInAiLCAi
ZGF0YSI6IFtdfSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiU3BhY2VDaGFyYWN0ZXJzIiwgImRh
dGEiOiAiICJ9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJDaGFyYWN0ZXJzIiwgImRhdGEiOiAi
Zm9vIn0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkVuZFRhZyIsICJuYW1lIjogInAiLCAiZGF0
YSI6IFtdfV0pCi0KLSAgICBkZWYgdGVzdExlYWRpbmdXaGl0ZXNwYWNlQXNDaGFyYWN0ZXJzKHNl
bGYpOgotICAgICAgICBzZWxmLnJ1blRlc3QoCi0gICAgICAgICAgICBbeyJ0eXBlIjogIlN0YXJ0
VGFnIiwgIm5hbWUiOiAicCIsICJkYXRhIjogW119LAotICAgICAgICAgICAgIHsidHlwZSI6ICJD
aGFyYWN0ZXJzIiwgImRhdGEiOiBzcGFjZUNoYXJhY3RlcnMgKyAiZm9vIn0sCi0gICAgICAgICAg
ICAgeyJ0eXBlIjogIkVuZFRhZyIsICJuYW1lIjogInAiLCAiZGF0YSI6IFtdfV0sCi0gICAgICAg
ICAgICBbeyJ0eXBlIjogIlN0YXJ0VGFnIiwgIm5hbWUiOiAicCIsICJkYXRhIjogW119LAotICAg
ICAgICAgICAgIHsidHlwZSI6ICJDaGFyYWN0ZXJzIiwgImRhdGEiOiAiIGZvbyJ9LAotICAgICAg
ICAgICAgIHsidHlwZSI6ICJFbmRUYWciLCAibmFtZSI6ICJwIiwgImRhdGEiOiBbXX1dKQotCi0g
ICAgZGVmIHRlc3RUcmFpbGluZ1doaXRlc3BhY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuVGVz
dCgKLSAgICAgICAgICAgIFt7InR5cGUiOiAiU3RhcnRUYWciLCAibmFtZSI6ICJwIiwgImRhdGEi
OiBbXX0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkNoYXJhY3RlcnMiLCAiZGF0YSI6ICJmb28i
fSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiU3BhY2VDaGFyYWN0ZXJzIiwgImRhdGEiOiBzcGFj
ZUNoYXJhY3RlcnN9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJFbmRUYWciLCAibmFtZSI6ICJw
IiwgImRhdGEiOiBbXX1dLAotICAgICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1l
IjogInAiLCAiZGF0YSI6IFtdfSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiQ2hhcmFjdGVycyIs
ICJkYXRhIjogImZvbyJ9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJTcGFjZUNoYXJhY3RlcnMi
LCAiZGF0YSI6ICIgIn0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkVuZFRhZyIsICJuYW1lIjog
InAiLCAiZGF0YSI6IFtdfV0pCi0KLSAgICBkZWYgdGVzdFRyYWlsaW5nV2hpdGVzcGFjZUFzQ2hh
cmFjdGVycyhzZWxmKToKLSAgICAgICAgc2VsZi5ydW5UZXN0KAotICAgICAgICAgICAgW3sidHlw
ZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInAiLCAiZGF0YSI6IFtdfSwKLSAgICAgICAgICAgICB7
InR5cGUiOiAiQ2hhcmFjdGVycyIsICJkYXRhIjogImZvbyIgKyBzcGFjZUNoYXJhY3RlcnN9LAot
ICAgICAgICAgICAgIHsidHlwZSI6ICJFbmRUYWciLCAibmFtZSI6ICJwIiwgImRhdGEiOiBbXX1d
LAotICAgICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInAiLCAiZGF0YSI6
IFtdfSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiQ2hhcmFjdGVycyIsICJkYXRhIjogImZvbyAi
fSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiRW5kVGFnIiwgIm5hbWUiOiAicCIsICJkYXRhIjog
W119XSkKLQotICAgIGRlZiB0ZXN0V2hpdGVzcGFjZShzZWxmKToKLSAgICAgICAgc2VsZi5ydW5U
ZXN0KAotICAgICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInAiLCAiZGF0
YSI6IFtdfSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiQ2hhcmFjdGVycyIsICJkYXRhIjogImZv
byIgKyBzcGFjZUNoYXJhY3RlcnMgKyAiYmFyIn0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkVu
ZFRhZyIsICJuYW1lIjogInAiLCAiZGF0YSI6IFtdfV0sCi0gICAgICAgICAgICBbeyJ0eXBlIjog
IlN0YXJ0VGFnIiwgIm5hbWUiOiAicCIsICJkYXRhIjogW119LAotICAgICAgICAgICAgIHsidHlw
ZSI6ICJDaGFyYWN0ZXJzIiwgImRhdGEiOiAiZm9vIGJhciJ9LAotICAgICAgICAgICAgIHsidHlw
ZSI6ICJFbmRUYWciLCAibmFtZSI6ICJwIiwgImRhdGEiOiBbXX1dKQotCi0gICAgZGVmIHRlc3RM
ZWFkaW5nV2hpdGVzcGFjZUluUHJlKHNlbGYpOgotICAgICAgICBzZWxmLnJ1blRlc3RVbm1vZGlm
aWVkT3V0cHV0KAotICAgICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInBy
ZSIsICJkYXRhIjogW119LAotICAgICAgICAgICAgIHsidHlwZSI6ICJTcGFjZUNoYXJhY3RlcnMi
LCAiZGF0YSI6IHNwYWNlQ2hhcmFjdGVyc30sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkNoYXJh
Y3RlcnMiLCAiZGF0YSI6ICJmb28ifSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiRW5kVGFnIiwg
Im5hbWUiOiAicHJlIiwgImRhdGEiOiBbXX1dKQotCi0gICAgZGVmIHRlc3RMZWFkaW5nV2hpdGVz
cGFjZUFzQ2hhcmFjdGVyc0luUHJlKHNlbGYpOgotICAgICAgICBzZWxmLnJ1blRlc3RVbm1vZGlm
aWVkT3V0cHV0KAotICAgICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInBy
ZSIsICJkYXRhIjogW119LAotICAgICAgICAgICAgIHsidHlwZSI6ICJDaGFyYWN0ZXJzIiwgImRh
dGEiOiBzcGFjZUNoYXJhY3RlcnMgKyAiZm9vIn0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkVu
ZFRhZyIsICJuYW1lIjogInByZSIsICJkYXRhIjogW119XSkKLQotICAgIGRlZiB0ZXN0VHJhaWxp
bmdXaGl0ZXNwYWNlSW5QcmUoc2VsZik6Ci0gICAgICAgIHNlbGYucnVuVGVzdFVubW9kaWZpZWRP
dXRwdXQoCi0gICAgICAgICAgICBbeyJ0eXBlIjogIlN0YXJ0VGFnIiwgIm5hbWUiOiAicHJlIiwg
ImRhdGEiOiBbXX0sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkNoYXJhY3RlcnMiLCAiZGF0YSI6
ICJmb28ifSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiU3BhY2VDaGFyYWN0ZXJzIiwgImRhdGEi
OiBzcGFjZUNoYXJhY3RlcnN9LAotICAgICAgICAgICAgIHsidHlwZSI6ICJFbmRUYWciLCAibmFt
ZSI6ICJwcmUiLCAiZGF0YSI6IFtdfV0pCi0KLSAgICBkZWYgdGVzdFRyYWlsaW5nV2hpdGVzcGFj
ZUFzQ2hhcmFjdGVyc0luUHJlKHNlbGYpOgotICAgICAgICBzZWxmLnJ1blRlc3RVbm1vZGlmaWVk
T3V0cHV0KAotICAgICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInByZSIs
ICJkYXRhIjogW119LAotICAgICAgICAgICAgIHsidHlwZSI6ICJDaGFyYWN0ZXJzIiwgImRhdGEi
OiAiZm9vIiArIHNwYWNlQ2hhcmFjdGVyc30sCi0gICAgICAgICAgICAgeyJ0eXBlIjogIkVuZFRh
ZyIsICJuYW1lIjogInByZSIsICJkYXRhIjogW119XSkKLQotICAgIGRlZiB0ZXN0V2hpdGVzcGFj
ZUluUHJlKHNlbGYpOgotICAgICAgICBzZWxmLnJ1blRlc3RVbm1vZGlmaWVkT3V0cHV0KAotICAg
ICAgICAgICAgW3sidHlwZSI6ICJTdGFydFRhZyIsICJuYW1lIjogInByZSIsICJkYXRhIjogW119
LAotICAgICAgICAgICAgIHsidHlwZSI6ICJDaGFyYWN0ZXJzIiwgImRhdGEiOiAiZm9vIiArIHNw
YWNlQ2hhcmFjdGVycyArICJiYXIifSwKLSAgICAgICAgICAgICB7InR5cGUiOiAiRW5kVGFnIiwg
Im5hbWUiOiAicHJlIiwgImRhdGEiOiBbXX1dKQotCi0KLWRlZiBidWlsZFRlc3RTdWl0ZSgpOgot
ICAgIHJldHVybiB1bml0dGVzdC5kZWZhdWx0VGVzdExvYWRlci5sb2FkVGVzdHNGcm9tTmFtZShf
X25hbWVfXykKLQotCi1kZWYgbWFpbigpOgotICAgIGJ1aWxkVGVzdFN1aXRlKCkKLSAgICB1bml0
dGVzdC5tYWluKCkKLQotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBtYWluKCkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdG9rZW5pemVydG90cmVlLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxp
Yi90ZXN0cy90b2tlbml6ZXJ0b3RyZWUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGI4NDFjNzZjZTQxYTA2ZjZhYWFiM2QzOWJlZTQ2Mzc2NDU4MzM1YjguLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90b2tlbml6
ZXJ0b3RyZWUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVuaWNvZGVfbGl0ZXJhbHMKLQot
aW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQganNvbgotaW1wb3J0IHJlCi0KLWltcG9ydCBo
dG1sNWxpYgotZnJvbSAuIGltcG9ydCBzdXBwb3J0Ci1mcm9tIC4gaW1wb3J0IHRlc3RfdG9rZW5p
emVyCi0KLXAgPSBodG1sNWxpYi5IVE1MUGFyc2VyKCkKLQotdW5uYW1lc3BhY2VFeHBlY3RlZCA9
IHJlLmNvbXBpbGUociJeKFx8XHMqKTxodG1sIChbXj5dKyk+IiwgcmUuTSkuc3ViCi0KLQotZGVm
IG1haW4ob3V0X3BhdGgpOgotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvdXRfcGF0aCk6Ci0g
ICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIlBhdGggJXMgZG9lcyBub3QgZXhpc3QiICUgb3V0X3Bh
dGgpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBmb3IgZmlsZW5hbWUgaW4gc3VwcG9ydC5n
ZXRfZGF0YV9maWxlcygndG9rZW5pemVyJywgJyoudGVzdCcpOgotICAgICAgICBydW5fZmlsZShm
aWxlbmFtZSwgb3V0X3BhdGgpCi0KLQotZGVmIHJ1bl9maWxlKGZpbGVuYW1lLCBvdXRfcGF0aCk6
Ci0gICAgdHJ5OgotICAgICAgICB0ZXN0c19kYXRhID0ganNvbi5sb2FkKG9wZW4oZmlsZW5hbWUs
ICJyIikpCi0gICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUo
IkZhaWxlZCB0byBsb2FkICVzXG4iICUgZmlsZW5hbWUpCi0gICAgICAgIHJldHVybgotICAgIG5h
bWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguc3BsaXQoZmlsZW5hbWUpWzFdKVswXQotICAg
IG91dHB1dF9maWxlID0gb3Blbihvcy5wYXRoLmpvaW4ob3V0X3BhdGgsICJ0b2tlbml6ZXJfJXMu
ZGF0IiAlIG5hbWUpLCAidyIpCi0KLSAgICBpZiAndGVzdHMnIGluIHRlc3RzX2RhdGE6Ci0gICAg
ICAgIGZvciB0ZXN0X2RhdGEgaW4gdGVzdHNfZGF0YVsndGVzdHMnXToKLSAgICAgICAgICAgIGlm
ICdpbml0aWFsU3RhdGVzJyBub3QgaW4gdGVzdF9kYXRhOgotICAgICAgICAgICAgICAgIHRlc3Rf
ZGF0YVsiaW5pdGlhbFN0YXRlcyJdID0gWyJEYXRhIHN0YXRlIl0KLQotICAgICAgICAgICAgZm9y
IGluaXRpYWxfc3RhdGUgaW4gdGVzdF9kYXRhWyJpbml0aWFsU3RhdGVzIl06Ci0gICAgICAgICAg
ICAgICAgaWYgaW5pdGlhbF9zdGF0ZSAhPSAiRGF0YSBzdGF0ZSI6Ci0gICAgICAgICAgICAgICAg
ICAgICMgZG9uJ3Qgc3VwcG9ydCB0aGlzIHlldAotICAgICAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgICAgIHRlc3QgPSBtYWtlX3Rlc3QodGVzdF9kYXRhKQotICAgICAgICAg
ICAgICAgIG91dHB1dF9maWxlLndyaXRlKHRlc3QpCi0KLSAgICBvdXRwdXRfZmlsZS5jbG9zZSgp
Ci0KLQotZGVmIG1ha2VfdGVzdCh0ZXN0X2RhdGEpOgotICAgIGlmICdkb3VibGVFc2NhcGVkJyBp
biB0ZXN0X2RhdGE6Ci0gICAgICAgIHRlc3RfZGF0YSA9IHRlc3RfdG9rZW5pemVyLnVuZXNjYXBl
X3Rlc3QodGVzdF9kYXRhKQotCi0gICAgcnYgPSBbXQotICAgIHJ2LmFwcGVuZCgiI2RhdGEiKQot
ICAgIHJ2LmFwcGVuZCh0ZXN0X2RhdGFbImlucHV0Il0uZW5jb2RlKCJ1dGY4IikpCi0gICAgcnYu
YXBwZW5kKCIjZXJyb3JzIikKLSAgICB0cmVlID0gcC5wYXJzZSh0ZXN0X2RhdGFbImlucHV0Il0p
Ci0gICAgb3V0cHV0ID0gcC50cmVlLnRlc3RTZXJpYWxpemVyKHRyZWUpCi0gICAgb3V0cHV0ID0g
IlxuIi5qb2luKCgifCAiICsgbGluZVszOl0pIGlmIGxpbmUuc3RhcnRzd2l0aCgifCAgIikgZWxz
ZSBsaW5lCi0gICAgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdCgi
XG4iKSkKLSAgICBvdXRwdXQgPSB1bm5hbWVzcGFjZUV4cGVjdGVkKHIiXDE8XDI+Iiwgb3V0cHV0
KQotICAgIHJ2LmFwcGVuZChvdXRwdXQuZW5jb2RlKCJ1dGY4IikpCi0gICAgcnYuYXBwZW5kKCIi
KQotICAgIHJldHVybiAiXG4iLmpvaW4ocnYpCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6
Ci0gICAgbWFpbihzeXMuYXJndlsxXSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdXMt
YXNjaWkuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdXMtYXNjaWkuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggNzI4Y2I2YmFmOThhZmVlZTU4MWMwYzllZGI1NGYzZjBmNTAzYzJh
Yy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1
bGliL3Rlc3RzL3VzLWFzY2lpLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTwh
ZG9jdHlwZSBodG1sPg0KLTx0aXRsZT5UZXN0PC90aXRsZT4NCi08cD5IZWxsbyBXb3JsZCEKXCBO
byBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3V0
Zi04LWJvbS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy91dGYtOC1ib20uaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNmFjNWVmY2VkZjFiZWIwZDFjMDAwMTY3NTYwYzUxYjVmZGZi
M2U0Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0
bWw1bGliL3Rlc3RzL3V0Zi04LWJvbS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci3vu788IWRvY3R5cGUgaHRtbD4NCi08dGl0bGU+VGVzdDwvdGl0bGU+DQotPHA+SGVsbG8gV29y
bGQhIMKpClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxp
Yi90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0ZTAzNDZlYWI2YjFlZTBhNWRmM2EyOTQx
N2IxM2Y3NTY0YTU0NGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9o
dG1sNWxpYi9odG1sNWxpYi90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDMzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvUkVBRE1FCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxp
Yi90ZXN0cy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvbW9ja1BhcnNlci5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
aHRtbDVsaWIvdGVzdHMvc3VwcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9lbmNvZGlu
Zy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
aHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9wYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3Rz
L3Rlc3RfcGFyc2VyMi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zYW5pdGl6ZXIucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGli
L2h0bWw1bGliL3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVz
dF9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfdG9rZW5pemVyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1s
NWxpYi90ZXN0cy90ZXN0X3RyZWVhZGFwdGVycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF90
cmVld2Fsa2Vycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF93aGl0ZXNwYWNlX2ZpbHRlci5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRt
bDVsaWIvaHRtbDVsaWIvdGVzdHMvdG9rZW5pemVydG90cmVlLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0
cy91cy1hc2NpaS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy91dGYtOC1ib20uaHRtbApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9o
dG1sNWxpYi9odG1sNWxpYi90cmVlYWRhcHRlcnMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3Ry
ZWVhZGFwdGVycy9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY4
MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy9fX2lu
aXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVp
cmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWFkYXB0
ZXJzL3NheC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWFkYXB0ZXJzL3NheC5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYWQ0N2RmOTU2NDhjZDc5NzIyNTA0YWM1Y2ViMGEzOTY1NTdjMWU3
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1
bGliL3RyZWVhZGFwdGVycy9zYXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHVuaWNvZGVf
bGl0ZXJhbHMKLQotZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc05TSW1w
bAotCi1mcm9tIC4uY29uc3RhbnRzIGltcG9ydCBhZGp1c3RGb3JlaWduQXR0cmlidXRlcywgdW5h
ZGp1c3RGb3JlaWduQXR0cmlidXRlcwotCi1wcmVmaXhfbWFwcGluZyA9IHt9Ci1mb3IgcHJlZml4
LCBsb2NhbE5hbWUsIG5hbWVzcGFjZSBpbiBhZGp1c3RGb3JlaWduQXR0cmlidXRlcy52YWx1ZXMo
KToKLSAgICBpZiBwcmVmaXggaXMgbm90IE5vbmU6Ci0gICAgICAgIHByZWZpeF9tYXBwaW5nW3By
ZWZpeF0gPSBuYW1lc3BhY2UKLQotCi1kZWYgdG9fc2F4KHdhbGtlciwgaGFuZGxlcik6Ci0gICAg
IiIiQ2FsbCBTQVgtbGlrZSBjb250ZW50IGhhbmRsZXIgYmFzZWQgb24gdHJlZXdhbGtlciB3YWxr
ZXIiIiIKLSAgICBoYW5kbGVyLnN0YXJ0RG9jdW1lbnQoKQotICAgIGZvciBwcmVmaXgsIG5hbWVz
cGFjZSBpbiBwcmVmaXhfbWFwcGluZy5pdGVtcygpOgotICAgICAgICBoYW5kbGVyLnN0YXJ0UHJl
Zml4TWFwcGluZyhwcmVmaXgsIG5hbWVzcGFjZSkKLQotICAgIGZvciB0b2tlbiBpbiB3YWxrZXI6
Ci0gICAgICAgIHR5cGUgPSB0b2tlblsidHlwZSJdCi0gICAgICAgIGlmIHR5cGUgPT0gIkRvY3R5
cGUiOgotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgZWxpZiB0eXBlIGluICgiU3RhcnRU
YWciLCAiRW1wdHlUYWciKToKLSAgICAgICAgICAgIGF0dHJzID0gQXR0cmlidXRlc05TSW1wbCh0
b2tlblsiZGF0YSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuYWRq
dXN0Rm9yZWlnbkF0dHJpYnV0ZXMpCi0gICAgICAgICAgICBoYW5kbGVyLnN0YXJ0RWxlbWVudE5T
KCh0b2tlblsibmFtZXNwYWNlIl0sIHRva2VuWyJuYW1lIl0pLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0b2tlblsibmFtZSJdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBhdHRycykKLSAgICAgICAgICAgIGlmIHR5cGUgPT0gIkVtcHR5VGFnIjoKLSAg
ICAgICAgICAgICAgICBoYW5kbGVyLmVuZEVsZW1lbnROUygodG9rZW5bIm5hbWVzcGFjZSJdLCB0
b2tlblsibmFtZSJdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0b2tl
blsibmFtZSJdKQotICAgICAgICBlbGlmIHR5cGUgPT0gIkVuZFRhZyI6Ci0gICAgICAgICAgICBo
YW5kbGVyLmVuZEVsZW1lbnROUygodG9rZW5bIm5hbWVzcGFjZSJdLCB0b2tlblsibmFtZSJdKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuWyJuYW1lIl0pCi0gICAgICAg
IGVsaWYgdHlwZSBpbiAoIkNoYXJhY3RlcnMiLCAiU3BhY2VDaGFyYWN0ZXJzIik6Ci0gICAgICAg
ICAgICBoYW5kbGVyLmNoYXJhY3RlcnModG9rZW5bImRhdGEiXSkKLSAgICAgICAgZWxpZiB0eXBl
ID09ICJDb21tZW50IjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIGFzc2VydCBGYWxzZSwgIlVua25vd24gdG9rZW4gdHlwZSIKLQotICAgIGZvciBwcmVmaXgs
IG5hbWVzcGFjZSBpbiBwcmVmaXhfbWFwcGluZy5pdGVtcygpOgotICAgICAgICBoYW5kbGVyLmVu
ZFByZWZpeE1hcHBpbmcocHJlZml4KQotICAgIGhhbmRsZXIuZW5kRG9jdW1lbnQoKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9o
dG1sNWxpYi9odG1sNWxpYi90cmVlYWRhcHRlcnMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGli
L3RyZWVhZGFwdGVycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggZGJjZWIyNDFlMmQxYzAyODhmYjAyODRkYmM3NGM4Yjg4OGIzZjM3Ny4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVy
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVs
aWIvaHRtbDVsaWIvdHJlZWFkYXB0ZXJzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90cmVlYWRh
cHRlcnMvc2F4LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3RyZWVidWlsZGVycy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDQzZjYxYjg1NjljOTliZDJmY2Q4MWFiY2NhZDViZWQz
NjVlMTFlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIv
aHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvX19pbml0X18ucHlj
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvX2Jhc2UucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVp
bGRlcnMvZXRyZWUucHljCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3RyZWV3YWxrZXJzL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9odG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlMzdhMzU0MjMzZGM2MDNkNzFhMTcwYjA3NDg5ZWFi
ODQwMDM0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGli
L2h0bWw1bGliL3RyZWV3YWxrZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy9fX2luaXRfXy5weWMK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdHJpZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIv
dHJpZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzJiNTBm
NjBhMTYwZjE5ZTYyMmYzNDNlMGNiOWNmOGE5NzAwMDRmYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3RyaWUvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL3RyaWUv
X19pbml0X18ucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90cmllL19iYXNlLnB5YwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdHJp
ZS9kYXRyaWUucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90cmllL3B5LnB5YwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1s
NWxpYi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNDRiNzNkNTdjM2ZlMjY3YzlhZjlkNDdjZGNlNzFkZGFh
YjNlZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9o
dG1sNWxpYi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
aHRtbDVsaWIvaHRtbDVsaWIvX19pbml0X18ucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi9jb25zdGFudHMucHlj
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9odG1sNWxpYi9odG1sNXBhcnNlci5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2h0bWw1bGliL2loYXRleG1sLnB5Ywot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVs
aWIvaHRtbDVsaWIvaW5wdXRzdHJlYW0ucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9odG1sNWxpYi90b2tlbml6ZXIucHljCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9odG1sNWxpYi91dGlscy5weWMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvcGFyc2UucHkgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL3BhcnNlLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2JmM2I4ZDFjYzVjYmE4YWFlMzc4Y2I3
YzBkZDg4ZDk3NzFhNjJmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
aHRtbDVsaWIvcGFyc2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMzMgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0iIiJ1c2FnZTogJXByb2cgW29wdGlvbnNdIGZpbGVuYW1lCi0KLVBh
cnNlIGEgZG9jdW1lbnQgdG8gYSB0cmVlLCB3aXRoIG9wdGlvbmFsIHByb2ZpbGluZwotIiIiCi0K
LWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IHRyYWNlYmFjawotZnJvbSBvcHRwYXJzZSBp
bXBvcnQgT3B0aW9uUGFyc2VyCi0KLWZyb20gaHRtbDVsaWIgaW1wb3J0IGh0bWw1cGFyc2VyLCBz
YW5pdGl6ZXIKLWZyb20gaHRtbDVsaWIudG9rZW5pemVyIGltcG9ydCBIVE1MVG9rZW5pemVyCi1m
cm9tIGh0bWw1bGliIGltcG9ydCB0cmVlYnVpbGRlcnMsIHNlcmlhbGl6ZXIsIHRyZWV3YWxrZXJz
Ci1mcm9tIGh0bWw1bGliIGltcG9ydCBjb25zdGFudHMKLQotZGVmIHBhcnNlKCk6Ci0gICAgb3B0
UGFyc2VyID0gZ2V0T3B0UGFyc2VyKCkKLSAgICBvcHRzLGFyZ3MgPSBvcHRQYXJzZXIucGFyc2Vf
YXJncygpCi0gICAgZW5jb2RpbmcgPSAidXRmOCIKLQotICAgIHRyeToKLSAgICAgICAgZiA9IGFy
Z3NbLTFdCi0gICAgICAgICMgVHJ5IG9wZW5pbmcgZnJvbSB0aGUgaW50ZXJuZXQKLSAgICAgICAg
aWYgZi5zdGFydHN3aXRoKCdodHRwOi8vJyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgaW1wb3J0IHVybGxpYi5yZXF1ZXN0LCB1cmxsaWIucGFyc2UsIHVybGxpYi5lcnJvciwg
Y2dpCi0gICAgICAgICAgICAgICAgZiA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oZikKLSAgICAg
ICAgICAgICAgICBjb250ZW50VHlwZSA9IGYuaGVhZGVycy5nZXQoJ2NvbnRlbnQtdHlwZScpCi0g
ICAgICAgICAgICAgICAgaWYgY29udGVudFR5cGU6Ci0gICAgICAgICAgICAgICAgICAgIChtZWRp
YVR5cGUsIHBhcmFtcykgPSBjZ2kucGFyc2VfaGVhZGVyKGNvbnRlbnRUeXBlKQotICAgICAgICAg
ICAgICAgICAgICBlbmNvZGluZyA9IHBhcmFtcy5nZXQoJ2NoYXJzZXQnKQotICAgICAgICAgICAg
ZXhjZXB0OgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxpZiBmID09ICctJzoKLSAg
ICAgICAgICAgIGYgPSBzeXMuc3RkaW4KLSAgICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9b
MF0gPj0gMzoKLSAgICAgICAgICAgICAgICBlbmNvZGluZyA9IE5vbmUKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFRyeSBvcGVuaW5nIGZyb20gZmls
ZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICBmID0gb3BlbihmLCAicmIiKQotICAgICAgICAgICAg
ZXhjZXB0IElPRXJyb3IgYXMgZTogICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgc3lz
LnN0ZGVyci53cml0ZSgiVW5hYmxlIHRvIG9wZW4gZmlsZTogJXNcbiIgJSBlKQotICAgICAgICAg
ICAgICAgIHN5cy5leGl0KDEpCi0gICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgIHN5cy5z
dGRlcnIud3JpdGUoIk5vIGZpbGVuYW1lIHByb3ZpZGVkLiBVc2UgLWggZm9yIGhlbHBcbiIpCi0g
ICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICB0cmVlYnVpbGRlciA9IHRyZWVidWlsZGVycy5nZXRU
cmVlQnVpbGRlcihvcHRzLnRyZWVidWlsZGVyKQotCi0gICAgaWYgb3B0cy5zYW5pdGl6ZToKLSAg
ICAgICAgdG9rZW5pemVyID0gc2FuaXRpemVyLkhUTUxTYW5pdGl6ZXIKLSAgICBlbHNlOgotICAg
ICAgICB0b2tlbml6ZXIgPSBIVE1MVG9rZW5pemVyCi0KLSAgICBwID0gaHRtbDVwYXJzZXIuSFRN
TFBhcnNlcih0cmVlPXRyZWVidWlsZGVyLCB0b2tlbml6ZXI9dG9rZW5pemVyLCBkZWJ1Zz1vcHRz
LmxvZykKLQotICAgIGlmIG9wdHMuZnJhZ21lbnQ6Ci0gICAgICAgIHBhcnNlTWV0aG9kID0gcC5w
YXJzZUZyYWdtZW50Ci0gICAgZWxzZToKLSAgICAgICAgcGFyc2VNZXRob2QgPSBwLnBhcnNlCi0K
LSAgICBpZiBvcHRzLnByb2ZpbGU6Ci0gICAgICAgIGltcG9ydCBjUHJvZmlsZQotICAgICAgICBp
bXBvcnQgcHN0YXRzCi0gICAgICAgIGNQcm9maWxlLnJ1bmN0eCgicnVuKHBhcnNlTWV0aG9kLCBm
LCBlbmNvZGluZykiLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAgeyJydW4iOiBydW4s
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgInBhcnNlTWV0aG9kIjogcGFyc2VNZXRob2QsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgImYiOiBmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICJlbmNvZGluZyI6IGVuY29kaW5nfSwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0cy5w
cm9mIikKLSAgICAgICAgIyBYWFggLSBXZSBzaG91bGQgdXNlIGEgdGVtcCBmaWxlIGhlcmUKLSAg
ICAgICAgc3RhdHMgPSBwc3RhdHMuU3RhdHMoJ3N0YXRzLnByb2YnKQotICAgICAgICBzdGF0cy5z
dHJpcF9kaXJzKCkKLSAgICAgICAgc3RhdHMuc29ydF9zdGF0cygndGltZScpCi0gICAgICAgIHN0
YXRzLnByaW50X3N0YXRzKCkKLSAgICBlbGlmIG9wdHMudGltZToKLSAgICAgICAgaW1wb3J0IHRp
bWUKLSAgICAgICAgdDAgPSB0aW1lLnRpbWUoKQotICAgICAgICBkb2N1bWVudCA9IHJ1bihwYXJz
ZU1ldGhvZCwgZiwgZW5jb2RpbmcpCi0gICAgICAgIHQxID0gdGltZS50aW1lKCkKLSAgICAgICAg
aWYgZG9jdW1lbnQ6Ci0gICAgICAgICAgICBwcmludE91dHB1dChwLCBkb2N1bWVudCwgb3B0cykK
LSAgICAgICAgICAgIHQyID0gdGltZS50aW1lKCkKLSAgICAgICAgICAgIHN5cy5zdGRlcnIud3Jp
dGUoIlxuXG5SdW4gdG9vazogJWZzIChwbHVzICVmcyB0byBwcmludCB0aGUgb3V0cHV0KSIlKHQx
LXQwLCB0Mi10MSkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRl
KCJcblxuUnVuIHRvb2s6ICVmcyIlKHQxLXQwKSkKLSAgICBlbHNlOgotICAgICAgICBkb2N1bWVu
dCA9IHJ1bihwYXJzZU1ldGhvZCwgZiwgZW5jb2RpbmcpCi0gICAgICAgIGlmIGRvY3VtZW50Ogot
ICAgICAgICAgICAgcHJpbnRPdXRwdXQocCwgZG9jdW1lbnQsIG9wdHMpCi0KLWRlZiBydW4ocGFy
c2VNZXRob2QsIGYsIGVuY29kaW5nKToKLSAgICB0cnk6Ci0gICAgICAgIGRvY3VtZW50ID0gcGFy
c2VNZXRob2QoZiwgZW5jb2Rpbmc9ZW5jb2RpbmcpCi0gICAgZXhjZXB0OgotICAgICAgICBkb2N1
bWVudCA9IE5vbmUKLSAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgcmV0dXJuIGRv
Y3VtZW50Ci0KLWRlZiBwcmludE91dHB1dChwYXJzZXIsIGRvY3VtZW50LCBvcHRzKToKLSAgICBp
ZiBvcHRzLmVuY29kaW5nOgotICAgICAgICBwcmludCgiRW5jb2Rpbmc6IiwgcGFyc2VyLnRva2Vu
aXplci5zdHJlYW0uY2hhckVuY29kaW5nKQotCi0gICAgZm9yIGl0ZW0gaW4gcGFyc2VyLmxvZzoK
LSAgICAgICAgcHJpbnQoaXRlbSkKLQotICAgIGlmIGRvY3VtZW50IGlzIG5vdCBOb25lOgotICAg
ICAgICBpZiBvcHRzLnhtbDoKLSAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoZG9jdW1lbnQu
dG94bWwoInV0Zi04IikpCi0gICAgICAgIGVsaWYgb3B0cy50cmVlOgotICAgICAgICAgICAgaWYg
bm90IGhhc2F0dHIoZG9jdW1lbnQsJ19fZ2V0aXRlbV9fJyk6Ci0gICAgICAgICAgICAgICAgZG9j
dW1lbnQgPSBbZG9jdW1lbnRdCi0gICAgICAgICAgICBmb3IgZnJhZ21lbnQgaW4gZG9jdW1lbnQ6
Ci0gICAgICAgICAgICAgICAgcHJpbnQocGFyc2VyLnRyZWUudGVzdFNlcmlhbGl6ZXIoZnJhZ21l
bnQpKQotICAgICAgICBlbGlmIG9wdHMuaGlsaXRlOgotICAgICAgICAgICAgc3lzLnN0ZG91dC53
cml0ZShkb2N1bWVudC5oaWxpdGUoInV0Zi04IikpCi0gICAgICAgIGVsaWYgb3B0cy5odG1sOgot
ICAgICAgICAgICAga3dhcmdzID0ge30KLSAgICAgICAgICAgIGZvciBvcHQgaW4gc2VyaWFsaXpl
ci5IVE1MU2VyaWFsaXplci5vcHRpb25zOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICAgICAga3dhcmdzW29wdF0gPSBnZXRhdHRyKG9wdHMsb3B0KQotICAgICAgICAgICAg
ICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgaWYgbm90
IGt3YXJnc1sncXVvdGVfY2hhciddOgotICAgICAgICAgICAgICAgIGRlbCBrd2FyZ3NbJ3F1b3Rl
X2NoYXInXQotCi0gICAgICAgICAgICB0b2tlbnMgPSB0cmVld2Fsa2Vycy5nZXRUcmVlV2Fsa2Vy
KG9wdHMudHJlZWJ1aWxkZXIpKGRvY3VtZW50KQotICAgICAgICAgICAgaWYgc3lzLnZlcnNpb25f
aW5mb1swXSA+PSAzOgotICAgICAgICAgICAgICAgIGVuY29kaW5nID0gTm9uZQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKLSAgICAgICAgICAg
IGZvciB0ZXh0IGluIHNlcmlhbGl6ZXIuSFRNTFNlcmlhbGl6ZXIoKiprd2FyZ3MpLnNlcmlhbGl6
ZSh0b2tlbnMsIGVuY29kaW5nPWVuY29kaW5nKToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0
LndyaXRlKHRleHQpCi0gICAgICAgICAgICBpZiBub3QgdGV4dC5lbmRzd2l0aCgnXG4nKTogc3lz
LnN0ZG91dC53cml0ZSgnXG4nKQotICAgIGlmIG9wdHMuZXJyb3I6Ci0gICAgICAgIGVyckxpc3Q9
W10KLSAgICAgICAgZm9yIHBvcywgZXJyb3Jjb2RlLCBkYXRhdmFycyBpbiBwYXJzZXIuZXJyb3Jz
OgotICAgICAgICAgICAgZXJyTGlzdC5hcHBlbmQoIkxpbmUgJWkgQ29sICVpIiVwb3MgKyAiICIg
KyBjb25zdGFudHMuRS5nZXQoZXJyb3Jjb2RlLCAnVW5rbm93biBlcnJvciAiJXMiJyAlIGVycm9y
Y29kZSkgJSBkYXRhdmFycykKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5QYXJzZSBlcnJv
cnM6XG4iICsgIlxuIi5qb2luKGVyckxpc3QpKyJcbiIpCi0KLWRlZiBnZXRPcHRQYXJzZXIoKToK
LSAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIodXNhZ2U9X19kb2NfXykKLQotICAgIHBhcnNlci5h
ZGRfb3B0aW9uKCItcCIsICItLXByb2ZpbGUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InByb2ZpbGUiLCBoZWxwPSJVc2Ug
dGhlIGhvdHNob3QgcHJvZmlsZXIgdG8gIgotICAgICAgICAgICAgICAgICAgICAgICJwcm9kdWNl
IGEgZGV0YWlsZWQgbG9nIG9mIHRoZSBydW4iKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi10
IiwgIi0tdGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwg
ZGVmYXVsdD1GYWxzZSwgZGVzdD0idGltZSIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0i
VGltZSB0aGUgcnVuIHVzaW5nIHRpbWUudGltZSAobWF5IG5vdCBiZSBhY2N1cmF0ZSBvbiBhbGwg
cGxhdGZvcm1zLCBlc3BlY2lhbGx5IGZvciBzaG9ydCBydW5zKSIpCi0KLSAgICBwYXJzZXIuYWRk
X29wdGlvbigiLWIiLCAiLS10cmVlYnVpbGRlciIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJp
bmciLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InRyZWVidWlsZGVyIiwgZGVmYXVsdD0i
c2ltcGxlVHJlZSIpCi0KLSAgICBwYXJzZXIuYWRkX29wdGlvbigiLWUiLCAiLS1lcnJvciIsIGFj
dGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0iZXJyb3IiLCBoZWxwPSJQcmludCBhIGxpc3Qgb2YgcGFyc2UgZXJyb3JzIikKLQotICAg
IHBhcnNlci5hZGRfb3B0aW9uKCItZiIsICItLWZyYWdtZW50IiwgYWN0aW9uPSJzdG9yZV90cnVl
IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJmcmFnbWVudCIs
IGhlbHA9IlBhcnNlIGFzIGEgZnJhZ21lbnQiKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIiIs
ICItLXRyZWUiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9InRyZWUiLCBoZWxwPSJPdXRwdXQgYXMgZGVidWcgdHJlZSIpCi0K
LSAgICBwYXJzZXIuYWRkX29wdGlvbigiLXgiLCAiLS14bWwiLCBhY3Rpb249InN0b3JlX3RydWUi
LCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InhtbCIsIGhlbHA9
Ik91dHB1dCBhcyB4bWwiKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW5vLWh0bWwi
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVmYXVsdD1UcnVlLAotICAgICAgICAgICAgICAgICAg
ICAgIGRlc3Q9Imh0bWwiLCBoZWxwPSJEb24ndCBvdXRwdXQgaHRtbCIpCi0KLSAgICBwYXJzZXIu
YWRkX29wdGlvbigiIiwgIi0taGlsaXRlIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1G
YWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJoaWxpdGUiLCBoZWxwPSJPdXRwdXQg
YXMgZm9ybWF0dGVkIGhpZ2hsaWdodGVkIGNvZGUuIikKLQotICAgIHBhcnNlci5hZGRfb3B0aW9u
KCItYyIsICItLWVuY29kaW5nIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwK
LSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJlbmNvZGluZyIsIGhlbHA9IlByaW50IGNoYXJh
Y3RlciBlbmNvZGluZyB1c2VkIikKLQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1pbmpl
Y3QtbWV0YS1jaGFyc2V0IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAg
ICAgICBkZWZhdWx0PUZhbHNlLCBkZXN0PSJpbmplY3RfbWV0YV9jaGFyc2V0IiwKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJpbmplY3QgPG1ldGEgY2hhcnNldD4iKQotCi0gICAgcGFyc2Vy
LmFkZF9vcHRpb24oIiIsICItLXN0cmlwLXdoaXRlc3BhY2UiLCBhY3Rpb249InN0b3JlX3RydWUi
LAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGRlc3Q9InN0cmlwX3doaXRl
c3BhY2UiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InN0cmlwIHdoaXRlc3BhY2UiKQot
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW9taXQtb3B0aW9uYWwtdGFncyIsIGFjdGlv
bj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgZGVz
dD0ib21pdF9vcHRpb25hbF90YWdzIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJvbWl0
IG9wdGlvbmFsIHRhZ3MiKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXF1b3RlLWF0
dHItdmFsdWVzIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLCBkZXN0PSJxdW90ZV9hdHRyX3ZhbHVlcyIsCi0gICAgICAgICAgICAgICAg
ICAgICAgaGVscD0icXVvdGUgYXR0cmlidXRlIHZhbHVlcyIpCi0KLSAgICBwYXJzZXIuYWRkX29w
dGlvbigiIiwgIi0tdXNlLWJlc3QtcXVvdGUtY2hhciIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgZGVzdD0idXNlX2Jlc3RfcXVvdGVf
Y2hhciIsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0idXNlIGJlc3QgcXVvdGUgY2hhcmFj
dGVyIikKLQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1xdW90ZS1jaGFyIiwgYWN0aW9u
PSJzdG9yZSIsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBkZXN0PSJxdW90
ZV9jaGFyIiwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJxdW90ZSBjaGFyYWN0ZXIiKQot
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLW5vLW1pbmltaXplLWJvb2xlYW4tYXR0cmli
dXRlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV9mYWxzZSIsIGRlZmF1
bHQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSJtaW5pbWl6ZV9ib29sZWFuX2F0
dHJpYnV0ZXMiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Im1pbmltaXplIGJvb2xlYW4g
YXR0cmlidXRlcyIpCi0KLSAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLXRyYWlsaW5n
LXNvbGlkdXMiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9RmFsc2UsIGRlc3Q9InVzZV90cmFpbGluZ19zb2xpZHVzIiwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSJ1c2UgdHJhaWxpbmcgc29saWR1cyIpCi0KLSAgICBwYXJzZXIuYWRkX29w
dGlvbigiIiwgIi0tc3BhY2UtYmVmb3JlLXRyYWlsaW5nLXNvbGlkdXMiLAotICAgICAgICAgICAg
ICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgZGVzdD0ic3BhY2VfYmVmb3JlX3RyYWlsaW5nX3NvbGlkdXMiLAotICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9ImFkZCBzcGFjZSBiZWZvcmUgdHJhaWxpbmcgc29saWR1cyIp
Ci0KLSAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tZXNjYXBlLWx0LWluLWF0dHJzIiwgYWN0
aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBk
ZXN0PSJlc2NhcGVfbHRfaW5fYXR0cnMiLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImVz
Y2FwZSBsZXNzIHRoYW4gc2lnbnMgaW4gYXR0cmlidXRlIHZhbHVlcyIpCi0KLSAgICBwYXJzZXIu
YWRkX29wdGlvbigiIiwgIi0tZXNjYXBlLXJjZGF0YSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0g
ICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1GYWxzZSwgZGVzdD0iZXNjYXBlX3JjZGF0YSIs
Ci0gICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXNjYXBlIHJjZGF0YSBlbGVtZW50IHZhbHVl
cyIpCi0KLSAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tc2FuaXRpemUiLCBhY3Rpb249InN0
b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InNh
bml0aXplIiwgaGVscD0ic2FuaXRpemUiKQotCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oIi1sIiwg
Ii0tbG9nIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBkZXN0PSJsb2ciLCBoZWxwPSJsb2cgc3RhdGUgdHJhbnNpdGlvbnMiKQotCi0g
ICAgcmV0dXJuIHBhcnNlcgotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIHBhcnNl
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLWluc3RhbGwuc2ggYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL3JlcXVpcmVtZW50
cy1pbnN0YWxsLnNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZjhiYTUwNjQ1Zjli
OTk1NjlmZGFlMmJhNzhjYjU1NTU1NTg2MzgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLWluc3RhbGwuc2gKKysrIC9kZXYvbnVs
bApAQCAtMSwxNiArMCwwIEBACi0jIS9iaW4vYmFzaCAtZQotCi1pZiBbWyAkVVNFX09QVElPTkFM
ICE9ICJ0cnVlIiAmJiAkVVNFX09QVElPTkFMICE9ICJmYWxzZSIgXV07IHRoZW4KLSAgZWNobyAi
ZmF0YWw6IFwkVVNFX09QVElPTkFMIG5vdCBzZXQgdG8gdHJ1ZSBvciBmYWxzZS4gRXhpdGluZy4i
Ci0gIGV4aXQgMQotZmkKLQotcGlwIGluc3RhbGwgLXIgcmVxdWlyZW1lbnRzLXRlc3QudHh0Ci0K
LWlmIFtbICRVU0VfT1BUSU9OQUwgPT0gInRydWUiICYmICRUUkFWSVNfUFlUSE9OX1ZFUlNJT04g
IT0gInB5cHkiIF1dOyB0aGVuCi0gIGlmIFtbICRUUkFWSVNfUFlUSE9OX1ZFUlNJT04gPT0gIjIu
NiIgXV07IHRoZW4KLSAgICBwaXAgaW5zdGFsbCAtLWFsbG93LWV4dGVybmFsIEdlbnNoaSAtLWFs
bG93LWluc2VjdXJlIEdlbnNoaSAtciByZXF1aXJlbWVudHMtb3B0aW9uYWwtMi42LnR4dAotICBl
bHNlCi0gICAgcGlwIGluc3RhbGwgLS1hbGxvdy1leHRlcm5hbCBHZW5zaGkgLS1hbGxvdy1pbnNl
Y3VyZSBHZW5zaGkgLXIgcmVxdWlyZW1lbnRzLW9wdGlvbmFsLWNweXRob24udHh0Ci0gIGZpCi1m
aQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9odG1sNWxpYi9yZXF1aXJlbWVudHMtb3B0aW9uYWwtMi42LnR4dCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvcmVxdWly
ZW1lbnRzLW9wdGlvbmFsLTIuNi50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3
NTU3YWM0MDNkZjFlZTM0OTFmNjMwZWIwODBmYWEwM2IyNDAzMGEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9yZXF1aXJlbWVudHMtb3B0aW9uYWwtMi42
LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotLXIgcmVxdWlyZW1lbnRzLW9wdGlv
bmFsLWNweXRob24udHh0Ci0KLSMgQ2FuIGJlIHVzZWQgdG8gZm9yY2UgYXR0cmlidXRlcyB0byBi
ZSBzZXJpYWxpemVkIGluIGFscGhhYmV0aWNhbAotIyBvcmRlci4KLW9yZGVyZWRkaWN0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2h0bWw1bGliL3JlcXVpcmVtZW50cy1vcHRpb25hbC1jcHl0aG9uLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvcmVxdWlyZW1l
bnRzLW9wdGlvbmFsLWNweXRob24udHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAz
NWVkMzUyOWMyYzNiMDcyODE0MjUzMDNiNjk2NGI4NzUyZjg0Yjk5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLW9wdGlvbmFsLWNw
eXRob24udHh0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0tciByZXF1aXJlbWVudHMt
b3B0aW9uYWwudHh0Ci0KLSMgbHhtbCBpcyBzdXBwb3J0ZWQgd2l0aCBpdHMgb3duIHRyZWVidWls
ZGVyICgibHhtbCIpIGFuZCBvdGhlcndpc2UKLSMgdXNlcyB0aGUgc3RhbmRhcmQgRWxlbWVudFRy
ZWUgc3VwcG9ydAotbHhtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9yZXF1aXJlbWVudHMtb3B0aW9uYWwudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9yZXF1aXJlbWVudHMtb3B0aW9uYWwudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBjNjM1NTI3MDEyN2VjODFhMDRjNmJmZmY1MTVmMWIyNDRkNjBhYWE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLW9wdGlv
bmFsLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLS1yIHJlcXVpcmVtZW50cy50
eHQKLQotIyBXZSBzdXBwb3J0IGEgR2Vuc2hpIHRyZWV3YWxrZXIgdGhhdCBjYW4gYmUgdXNlZCB0
byBzZXJpYWxpemUgR2Vuc2hpCi0jIHN0cmVhbXMuCi1nZW5zaGkKLQotIyBEQVRyaWUgY2FuIGJl
IHVzZWQgaW4gcGxhY2Ugb2Ygb3VyIFB5dGhvbiB0cmllIGltcGxlbWVudGF0aW9uIGZvcgotIyBz
bGlnaHRseSBiZXR0ZXIgcGFyc2luZyBwZXJmb3JtYW5jZS4KLWRhdHJpZQotCi0jIGNoYXJhZGUg
Y2FuIGJlIHVzZWQgYXMgYSBmYWxsYmFjayBpbiBjYXNlIHdlIGFyZSB1bmFibGUgdG8gZGV0ZXJt
aW5lCi0jIHRoZSBlbmNvZGluZyBvZiBhIGRvY3VtZW50LgotY2hhcmFkZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi9yZXF1aXJlbWVudHMtdGVzdC50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL3JlcXVpcmVtZW50cy10ZXN0LnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVmODA4OGMxYzEzY2I2ZWU4ZWYxZGZmM2U4YWZkNjdh
ODk2OTBhOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGli
L3JlcXVpcmVtZW50cy10ZXN0LnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotLXIg
cmVxdWlyZW1lbnRzLnR4dAotCi1mbGFrZTgKLW5vc2UKLW9yZGVyZWRkaWN0ICMgUHl0aG9uIDIu
NgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9odG1sNWxpYi9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9yZXF1aXJlbWVudHMudHh0CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZmUyZmNlNDk4OTU1YjYyODAxNDYxOGIyOGM2
YmNmMTUyNDY2YTRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRt
bDVsaWIvcmVxdWlyZW1lbnRzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLXNpeApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9odG1sNWxpYi9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvc2V0dXAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGY3NTkxMGVhZjIxMDhkNzhkOGU0NmFiMjA3NDZjNmViYTRmMTE0NDkuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9zZXR1cC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLWZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNl
dHVwCi1pbXBvcnQgb3MKLWltcG9ydCBjb2RlY3MKLQotY2xhc3NpZmllcnM9WwotICAgICdEZXZl
bG9wbWVudCBTdGF0dXMgOjogNSAtIFByb2R1Y3Rpb24vU3RhYmxlJywKLSAgICAnSW50ZW5kZWQg
QXVkaWVuY2UgOjogRGV2ZWxvcGVycycsCi0gICAgJ0xpY2Vuc2UgOjogT1NJIEFwcHJvdmVkIDo6
IE1JVCBMaWNlbnNlJywKLSAgICAnT3BlcmF0aW5nIFN5c3RlbSA6OiBPUyBJbmRlcGVuZGVudCcs
Ci0gICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbicsCi0gICAgJ1Byb2dyYW1taW5n
IExhbmd1YWdlIDo6IFB5dGhvbiA6OiAyJywKLSAgICAnUHJvZ3JhbW1pbmcgTGFuZ3VhZ2UgOjog
UHl0aG9uIDo6IDIuNicsCi0gICAgJ1Byb2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAy
LjcnLAotICAgICdQcm9ncmFtbWluZyBMYW5ndWFnZSA6OiBQeXRob24gOjogMycsCi0gICAgJ1By
b2dyYW1taW5nIExhbmd1YWdlIDo6IFB5dGhvbiA6OiAzLjInLAotICAgICdQcm9ncmFtbWluZyBM
YW5ndWFnZSA6OiBQeXRob24gOjogMy4zJywKLSAgICAnVG9waWMgOjogU29mdHdhcmUgRGV2ZWxv
cG1lbnQgOjogTGlicmFyaWVzIDo6IFB5dGhvbiBNb2R1bGVzJywKLSAgICAnVG9waWMgOjogVGV4
dCBQcm9jZXNzaW5nIDo6IE1hcmt1cCA6OiBIVE1MJwotICAgIF0KLQotcGFja2FnZXMgPSBbJ2h0
bWw1bGliJ10gKyBbJ2h0bWw1bGliLicrbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
Zm9yIG5hbWUgaW4gb3MubGlzdGRpcihvcy5wYXRoLmpvaW4oJ2h0bWw1bGliJykpCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbignaHRtbDVs
aWInLCBuYW1lKSkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBub3QgbmFtZS5zdGFy
dHN3aXRoKCcuJykgYW5kIG5hbWUgIT0gJ3Rlc3RzJ10KLQotY3VycmVudF9kaXIgPSBvcy5wYXRo
LmRpcm5hbWUoX19maWxlX18pCi13aXRoIGNvZGVjcy5vcGVuKG9zLnBhdGguam9pbihjdXJyZW50
X2RpciwgJ1JFQURNRS5yc3QnKSwgJ3InLCAndXRmOCcpIGFzIHJlYWRtZV9maWxlOgotICAgIHdp
dGggY29kZWNzLm9wZW4ob3MucGF0aC5qb2luKGN1cnJlbnRfZGlyLCAnQ0hBTkdFUy5yc3QnKSwg
J3InLCAndXRmOCcpIGFzIGNoYW5nZXNfZmlsZToKLSAgICAgICAgbG9uZ19kZXNjcmlwdGlvbiA9
IHJlYWRtZV9maWxlLnJlYWQoKSArICdcbicgKyBjaGFuZ2VzX2ZpbGUucmVhZCgpCi0KLXNldHVw
KG5hbWU9J2h0bWw1bGliJywKLSAgICAgIHZlcnNpb249JzAuOTk5OS1kZXYnLAotICAgICAgdXJs
PSdodHRwczovL2dpdGh1Yi5jb20vaHRtbDVsaWIvaHRtbDVsaWItcHl0aG9uJywKLSAgICAgIGxp
Y2Vuc2U9Ik1JVCBMaWNlbnNlIiwKLSAgICAgIGRlc2NyaXB0aW9uPSdIVE1MIHBhcnNlciBiYXNl
ZCBvbiB0aGUgV0hBVFdHIEhUTUwgc3BlY2lmY2F0aW9uJywKLSAgICAgIGxvbmdfZGVzY3JpcHRp
b249bG9uZ19kZXNjcmlwdGlvbiwKLSAgICAgIGNsYXNzaWZpZXJzPWNsYXNzaWZpZXJzLAotICAg
ICAgbWFpbnRhaW5lcj0nSmFtZXMgR3JhaGFtJywKLSAgICAgIG1haW50YWluZXJfZW1haWw9J2ph
bWVzQGhvcHBpcG9sbGEuY28udWsnLAotICAgICAgcGFja2FnZXM9cGFja2FnZXMsCi0gICAgICBp
bnN0YWxsX3JlcXVpcmVzPVsKLSAgICAgICAgICAnc2l4JywKLSAgICAgIF0sCi0gICAgICApCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2h0bWw1bGliL3RveC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL3RveC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQ3OWY5ZTFmNzMyM2ZhYzNlMDdkMzczZDRmMDIzN2VkOWQ1NGE4OGIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi90b3guaW5pCisrKyAvZGV2
L251bGwKQEAgLTEsMzAgKzAsMCBAQAotW3RveF0KLWVudmxpc3QgPSBweTI2LHB5MjcscHkzMixw
eTMzLHB5MzQscHlweQotCi1bdGVzdGVudl0KLWRlcHMgPQotICAtcnt0b3hpbmlkaXJ9L3JlcXVp
cmVtZW50cy1vcHRpb25hbC1jcHl0aG9uLnR4dAotICBmbGFrZTgKLSAgbm9zZQotY29tbWFuZHMg
PQotICB7ZW52YmluZGlyfS9ub3NldGVzdHMgLXEKLSAge3RveGluaWRpcn0vZmxha2U4LXJ1bi5z
aAotaW5zdGFsbF9jb21tYW5kID0KLSAgcGlwIGluc3RhbGwge29wdHN9IHtwYWNrYWdlc30KLQot
W3Rlc3RlbnY6cHlweV0KLSMgbHhtbCBkb2Vzbid0IHdvcmsgYW5kIGRhdHJpZSBkb2Vzbid0IG1h
a2Ugc2Vuc2UKLSMgKGl0J3Mgc2xvd2VyIHRoYW4gdGhlIHB1cmUtcHl0aG9uIHZlcnNpb24pCi1k
ZXBzID0KLSAgY2hhcmFkZQotICBmbGFrZTgKLSAgR2Vuc2hpCi0gIG5vc2UKLSAgc2l4Ci0KLVt0
ZXN0ZW52OnB5MjZdCi1iYXNlcHl0aG9uID0gcHl0aG9uMi42Ci1kZXBzID0KLSAgLXJ7dG94aW5p
ZGlyfS9yZXF1aXJlbWVudHMtb3B0aW9uYWwtMi42LnR4dAotICBmbGFrZTgKLSAgbm9zZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9odG1sNWxpYi91dGlscy9lbnRpdGllcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvdXRpbHMvZW50aXRpZXMucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNmEyN2NiYzliOTBjODdkOWRkYzFiOWFlZmViYThk
MjY0MzE5ZTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi91dGlscy9lbnRpdGllcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDg4ICswLDAgQEAKLWltcG9y
dCBqc29uCi0KLWltcG9ydCBodG1sNWxpYgotCi1kZWYgcGFyc2UocGF0aD0iaHRtbDVlbnRzLnht
bCIpOgotICAgIHJldHVybiBodG1sNWxpYi5wYXJzZShvcGVuKHBhdGgpLCB0cmVlYnVpbGRlcj0i
bHhtbCIpCi0KLWRlZiBlbnRpdHlfdGFibGUodHJlZSk6Ci0gICAgcmV0dXJuIGRpY3QoKGVudGl0
eV9uYW1lKCIiLmpvaW4odHJbMF0ueHBhdGgoIi4vL3RleHQoKSIpKSksCi0gICAgICAgICAgICAg
ICAgIGVudGl0eV9jaGFyYWN0ZXJzKHRyWzFdLnRleHQpKQotICAgICAgICAgICAgICAgIGZvciB0
ciBpbiB0cmVlLnhwYXRoKCIvL2g6dGJvZHkvaDp0ciIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmFtZXNwYWNlcz17ImgiOiJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3ho
dG1sIn0pKQotCi1kZWYgZW50aXR5X25hbWUoaW5wKToKLSAgICByZXR1cm4gaW5wLnN0cmlwKCkK
LQotZGVmIGVudGl0eV9jaGFyYWN0ZXJzKGlucCk6Ci0gICAgcmV0dXJuICIiLmpvaW4oY29kZXBv
aW50X3RvX2NoYXJhY3RlcihpdGVtKQotICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBp
bnAuc3BsaXQoKQotICAgICAgICAgICAgICAgICAgICBpZiBpdGVtKQotCi1kZWYgY29kZXBvaW50
X3RvX2NoYXJhY3RlcihpbnApOgotICAgIHJldHVybiAoIlxVMDAwIitpbnBbMjpdKS5kZWNvZGUo
InVuaWNvZGUtZXNjYXBlIikKLQotZGVmIG1ha2VfdGVzdHNfanNvbihlbnRpdGllcyk6Ci0gICAg
dGVzdF9saXN0ID0gbWFrZV90ZXN0X2xpc3QoZW50aXRpZXMpCi0gICAgdGVzdHNfanNvbiA9IHsi
dGVzdHMiOgotICAgICAgICAgICAgICAgICAgICAgIFttYWtlX3Rlc3QoKml0ZW0pIGZvciBpdGVt
IGluIHRlc3RfbGlzdF0KLSAgICAgICAgICAgICAgICAgIH0KLSAgICByZXR1cm4gdGVzdHNfanNv
bgotCi1kZWYgbWFrZV90ZXN0KG5hbWUsIGNoYXJhY3RlcnMsIGdvb2QpOgotICAgIHJldHVybiB7
Ci0gICAgICAgICJkZXNjcmlwdGlvbiI6dGVzdF9kZXNjcmlwdGlvbihuYW1lLCBnb29kKSwKLSAg
ICAgICAgImlucHV0IjoiJiVzIiVuYW1lLAotICAgICAgICAib3V0cHV0Ijp0ZXN0X2V4cGVjdGVk
KG5hbWUsIGNoYXJhY3RlcnMsIGdvb2QpCi0gICAgICAgIH0KLQotZGVmIHRlc3RfZGVzY3JpcHRp
b24obmFtZSwgZ29vZCk6Ci0gICAgd2l0aF9zZW1pY29sb24gPSBuYW1lLmVuZHN3aXRoKCI7IikK
LSAgICBzZW1pY29sb25fdGV4dCA9IHtUcnVlOiJ3aXRoIGEgc2VtaS1jb2xvbiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgRmFsc2U6IndpdGhvdXQgYSBzZW1pLWNvbG9uIn1bd2l0aF9zZW1pY29s
b25dCi0gICAgaWYgZ29vZDoKLSAgICAgICAgdGV4dCA9ICJOYW1lZCBlbnRpdHk6ICVzICVzIiUo
bmFtZSwgc2VtaWNvbG9uX3RleHQpCi0gICAgZWxzZToKLSAgICAgICAgdGV4dCA9ICJCYWQgbmFt
ZWQgZW50aXR5OiAlcyAlcyIlKG5hbWUsIHNlbWljb2xvbl90ZXh0KQotICAgIHJldHVybiB0ZXh0
Ci0KLWRlZiB0ZXN0X2V4cGVjdGVkKG5hbWUsIGNoYXJhY3RlcnMsIGdvb2QpOgotICAgIHJ2ID0g
W10KLSAgICBpZiBub3QgZ29vZCBvciBub3QgbmFtZS5lbmRzd2l0aCgiOyIpOgotICAgICAgICBy
di5hcHBlbmQoIlBhcnNlRXJyb3IiKQotICAgIHJ2LmFwcGVuZChbIkNoYXJhY3RlciIsIGNoYXJh
Y3RlcnNdKQotICAgIHJldHVybiBydgotCi1kZWYgbWFrZV90ZXN0X2xpc3QoZW50aXRpZXMpOgot
ICAgIHRlc3RzID0gW10KLSAgICBmb3IgZW50aXR5X25hbWUsIGNoYXJhY3RlcnMgaW4gZW50aXRp
ZXMuaXRlbXMoKToKLSAgICAgICAgaWYgZW50aXR5X25hbWUuZW5kc3dpdGgoIjsiKSBhbmQgbm90
IHN1YmVudGl0eV9leGlzdHMoZW50aXR5X25hbWUsIGVudGl0aWVzKToKLSAgICAgICAgICAgIHRl
c3RzLmFwcGVuZCgoZW50aXR5X25hbWVbOi0xXSwgIiYiICsgZW50aXR5X25hbWVbOi0xXSwgRmFs
c2UpKQotICAgICAgICB0ZXN0cy5hcHBlbmQoKGVudGl0eV9uYW1lLCBjaGFyYWN0ZXJzLCBUcnVl
KSkKLSAgICByZXR1cm4gc29ydGVkKHRlc3RzKQotCi1kZWYgc3ViZW50aXR5X2V4aXN0cyhlbnRp
dHlfbmFtZSwgZW50aXRpZXMpOgotICAgIGZvciBpIGluIHJhbmdlKDEsIGxlbihlbnRpdHlfbmFt
ZSkpOgotICAgICAgICBpZiBlbnRpdHlfbmFtZVs6LWldIGluIGVudGl0aWVzOgotICAgICAgICAg
ICAgcmV0dXJuIFRydWUKLSAgICByZXR1cm4gRmFsc2UKLQotZGVmIG1ha2VfZW50aXRpZXNfY29k
ZShlbnRpdGllcyk6Ci0gICAgZW50aXRpZXNfdGV4dCA9ICJcbiIuam9pbigiICAgIFwiJXNcIjog
dVwiJXNcIiwiJSgKLSAgICAgICAgICAgIG5hbWUsIGVudGl0aWVzW25hbWVdLmVuY29kZSgKLSAg
ICAgICAgICAgICAgICAidW5pY29kZS1lc2NhcGUiKS5yZXBsYWNlKCJcIiIsICJcXFwiIikpCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3J0ZWQoZW50aXRpZXMu
a2V5cygpKSkKLSAgICByZXR1cm4gIiIiZW50aXRpZXMgPSB7Ci0lcwotfSIiIiVlbnRpdGllc190
ZXh0Ci0KLWRlZiBtYWluKCk6Ci0gICAgZW50aXRpZXMgPSBlbnRpdHlfdGFibGUocGFyc2UoKSkK
LSAgICB0ZXN0c19qc29uID0gbWFrZV90ZXN0c19qc29uKGVudGl0aWVzKQotICAgIGpzb24uZHVt
cCh0ZXN0c19qc29uLCBvcGVuKCJuYW1lZEVudGl0aWVzLnRlc3QiLCAidyIpLCBpbmRlbnQ9NCkK
LSAgICBjb2RlID0gbWFrZV9lbnRpdGllc19jb2RlKGVudGl0aWVzKQotICAgIG9wZW4oImVudGl0
aWVzX2NvbnN0YW50cy5weSIsICJ3Iikud3JpdGUoY29kZSkKLQotaWYgX19uYW1lX18gPT0gIl9f
bWFpbl9fIjoKLSAgICBtYWluKCkKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi91dGlscy9pYW5hX3BhcnNlLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi91dGlscy9pYW5hX3BhcnNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
ZGRlOTRjMjgyOTIyYTBjMjJmODZkOGE3ZjhiYzZhMzJkZGViNjQ1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvdXRpbHMvaWFuYV9wYXJzZS5weQorKysg
L2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotaW1wb3J0
IHN5cwotaW1wb3J0IHVybGxpYi5yZXF1ZXN0LCB1cmxsaWIuZXJyb3IsIHVybGxpYi5wYXJzZQot
aW1wb3J0IGNvZGVjcwotCi1kZWYgbWFpbigpOgotICAgIGVuY29kaW5ncyA9IFtdCi0gICAgZiA9
IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oc3lzLmFyZ3ZbMV0pCi0gICAgZm9yIGxpbmUgaW4gZjoK
LSAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJOYW1lOiAiKSBvciBsaW5lLnN0YXJ0c3dpdGgo
IkFsaWFzOiAiKToKLSAgICAgICAgICAgIGVuYyA9IGxpbmUuc3BsaXQoKVsxXQotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAoZW5jKQotICAgICAgICAgICAg
ICAgIGlmIGVuYy5sb3dlciBub3QgaW4gZW5jb2RpbmdzOgotICAgICAgICAgICAgICAgICAgICBl
bmNvZGluZ3MuYXBwZW5kKGVuYy5sb3dlcigpKQotICAgICAgICAgICAgZXhjZXB0IExvb2t1cEVy
cm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICBzeXMuc3Rkb3V0LndyaXRlKCJlbmNvZGlu
Z3MgPSBmcm96ZW5zZXQoKFxuIikKLSAgICBmb3IgZW5jIGluIGVuY29kaW5nczoKLSAgICAgICAg
c3lzLnN0ZG91dC53cml0ZSgnICAgICIlcyIsXG4nJWVuYykKLSAgICBzeXMuc3Rkb3V0LndyaXRl
KCcgICAgKSknKQotCi1pZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgotICAgIG1haW4oKQpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvdXRpbHMvc3BpZGVyLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxp
Yi91dGlscy9zcGlkZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3YjgwMzE5
NzRiMTMxNzg3ZmU5YWRkMTdlNTUwNmNkYzdiODJmMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi91dGlscy9zcGlkZXIucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjIgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0iIiJTcGlkZXIgdG8gdHJ5
IGFuZCBmaW5kIGJ1Z3MgaW4gdGhlIHBhcnNlci4gUmVxdWlyZXMgaHR0cGxpYjIgYW5kIGVsZW1l
bnR0cmVlCi0KLXVzYWdlOgotaW1wb3J0IHNwaWRlcgotcyA9IHNwaWRlci5TcGlkZXIoKQotcy5z
cGlkZXIoImh0dHA6Ly93d3cuZ29vZ2xlLmNvbSIsIG1heFVSTHM9MTAwKQotIiIiCi0KLWltcG9y
dCB1cmxsaWIucmVxdWVzdCwgdXJsbGliLmVycm9yLCB1cmxsaWIucGFyc2UKLWltcG9ydCB1cmxs
aWIucm9ib3RwYXJzZXIKLWltcG9ydCBtZDUKLQotaW1wb3J0IGh0dHBsaWIyCi0KLWltcG9ydCBo
dG1sNWxpYgotZnJvbSBodG1sNWxpYi50cmVlYnVpbGRlcnMgaW1wb3J0IGV0cmVlCi0KLWNsYXNz
IFNwaWRlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi51
bnZpc2l0ZWRVUkxzID0gc2V0KCkKLSAgICAgICAgc2VsZi52aXNpdGVkVVJMcyA9IHNldCgpCi0g
ICAgICAgIHNlbGYuYnVnZ3lVUkxzPXNldCgpCi0gICAgICAgIHNlbGYucm9ib3RQYXJzZXIgPSB1
cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKLSAgICAgICAgc2VsZi5jb250ZW50
RGlnZXN0ID0ge30KLSAgICAgICAgc2VsZi5odHRwID0gaHR0cGxpYjIuSHR0cCgiLmNhY2hlIikK
LQotICAgIGRlZiBydW4oc2VsZiwgaW5pdGlhbFVSTCwgbWF4VVJMcz0xMDAwKToKLSAgICAgICAg
dXJsTnVtYmVyID0gMAotICAgICAgICBzZWxmLnZpc2l0ZWRVUkxzLmFkZChpbml0aWFsVVJMKQot
ICAgICAgICBjb250ZW50ID0gc2VsZi5sb2FkVVJMKGluaXRpYWxVUkwpCi0gICAgICAgIHdoaWxl
IG1heFVSTHMgaXMgTm9uZSBvciB1cmxOdW1iZXIgPCBtYXhVUkxzOgotICAgICAgICAgICAgaWYg
Y29udGVudCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLnBhcnNlKGNvbnRlbnQp
Ci0gICAgICAgICAgICAgICAgdXJsTnVtYmVyICs9IDEKLSAgICAgICAgICAgIGlmIG5vdCBzZWxm
LnVudmlzaXRlZFVSTHM6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGNvbnRl
bnQgPSBzZWxmLmxvYWRVUkwoc2VsZi51bnZpc2l0ZWRVUkxzLnBvcCgpKQotCi0gICAgZGVmIHBh
cnNlKHNlbGYsIGNvbnRlbnQpOgotICAgICAgICBmYWlsZWQgPSBGYWxzZQotICAgICAgICBwID0g
aHRtbDVsaWIuSFRNTFBhcnNlcih0cmVlPWV0cmVlLlRyZWVCdWlsZGVyKQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICB0cmVlID0gcC5wYXJzZShjb250ZW50KQotICAgICAgICBleGNlcHQ6Ci0g
ICAgICAgICAgICBzZWxmLmJ1Z2d5VVJMcy5hZGQoc2VsZi5jdXJyZW50VVJMKQotICAgICAgICAg
ICAgZmFpbGVkID0gVHJ1ZQotICAgICAgICAgICAgcHJpbnQoIkJVR0dZOiIsIHNlbGYuY3VycmVu
dFVSTCkKLSAgICAgICAgc2VsZi52aXNpdGVkVVJMcy5hZGQoc2VsZi5jdXJyZW50VVJMKQotICAg
ICAgICBpZiBub3QgZmFpbGVkOgotICAgICAgICAgICAgc2VsZi51cGRhdGVVUkxzKHRyZWUpCi0K
LSAgICBkZWYgbG9hZFVSTChzZWxmLCB1cmwpOgotICAgICAgICByZXNwLCBjb250ZW50ID0gc2Vs
Zi5odHRwLnJlcXVlc3QodXJsLCAiR0VUIikKLSAgICAgICAgc2VsZi5jdXJyZW50VVJMID0gdXJs
Ci0gICAgICAgIGRpZ2VzdCA9IG1kNS5tZDUoY29udGVudCkuaGV4ZGlnZXN0KCkKLSAgICAgICAg
aWYgZGlnZXN0IGluIHNlbGYuY29udGVudERpZ2VzdDoKLSAgICAgICAgICAgIGNvbnRlbnQgPSBO
b25lCi0gICAgICAgICAgICBzZWxmLnZpc2l0ZWRVUkxzLmFkZCh1cmwpCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBzZWxmLmNvbnRlbnREaWdlc3RbZGlnZXN0XSA9IHVybAotCi0gICAgICAg
IGlmIHJlc3BbJ3N0YXR1cyddICE9ICIyMDAiOgotICAgICAgICAgICAgY29udGVudCA9IE5vbmUK
LQotICAgICAgICByZXR1cm4gY29udGVudAotCi0gICAgZGVmIHVwZGF0ZVVSTHMoc2VsZiwgdHJl
ZSk6Ci0gICAgICAgICIiIlRha2UgYWxsIHRoZSBsaW5rcyBpbiB0aGUgY3VycmVudCBkb2N1bWVu
dCwgZXh0cmFjdCB0aGUgVVJMcyBhbmQKLSAgICAgICAgdXBkYXRlIHRoZSBsaXN0IG9mIHZpc2l0
ZWQgYW5kIHVudmlzaXRlZCBVUkxzIGFjY29yZGluZyB0byB3aGV0aGVyIHdlCi0gICAgICAgIGhh
dmUgc2VlbiB0aGVtIGJlZm9yZSBvciBub3QiIiIKLSAgICAgICAgdXJscyA9IHNldCgpCi0gICAg
ICAgICNSZW1vdmUgYWxsIGxpbmtzIHdlIGhhdmUgYWxyZWFkeSB2aXNpdGVkCi0gICAgICAgIGZv
ciBsaW5rIGluIHRyZWUuZmluZGFsbCgiLi8vYSIpOgotICAgICAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICAgICAgdXJsID0gdXJsbGliLnBhcnNlLnVybGRlZnJhZyhsaW5rLmF0dHJp
YlsnaHJlZiddKVswXQotICAgICAgICAgICAgICAgICAgICBpZiAodXJsIGFuZCB1cmwgbm90IGlu
IHNlbGYudW52aXNpdGVkVVJMcyBhbmQgdXJsCi0gICAgICAgICAgICAgICAgICAgICAgICBub3Qg
aW4gc2VsZi52aXNpdGVkVVJMcyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB1cmxzLmFkZCh1
cmwpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgICAg
ICBwYXNzCi0KLSAgICAgICAgI1JlbW92ZSBhbGwgbm9uLWh0dHAgVVJMcyBhbmQgYSBkZCBhIHN1
dGlhYmxlIGJhc2UgVVJMIHdoZXJlIHRoYXQgaXMKLSAgICAgICAgI21pc3NpbmcKLSAgICAgICAg
bmV3VXJscyA9IHNldCgpCi0gICAgICAgIGZvciB1cmwgaW4gdXJsczoKLSAgICAgICAgICAgIHNw
bGl0VVJMID0gbGlzdCh1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKSkKLSAgICAgICAgICAgIGlm
IHNwbGl0VVJMWzBdICE9ICJodHRwIjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgaWYgc3BsaXRVUkxbMV0gPT0gIiI6Ci0gICAgICAgICAgICAgICAgc3BsaXRVUkxbMV0g
PSB1cmxsaWIucGFyc2UudXJsc3BsaXQoc2VsZi5jdXJyZW50VVJMKVsxXQotICAgICAgICAgICAg
bmV3VXJscy5hZGQodXJsbGliLnBhcnNlLnVybHVuc3BsaXQoc3BsaXRVUkwpKQotICAgICAgICB1
cmxzID0gbmV3VXJscwotCi0gICAgICAgIHJlc3BvbnNlSGVhZGVycyA9IHt9Ci0gICAgICAgICNO
b3cgd2Ugd2FudCB0byBmaW5kIHRoZSBjb250ZW50IHR5cGVzIG9mIHRoZSBsaW5rcyB3ZSBoYXZl
bid0IHZpc2l0ZWQKLSAgICAgICAgZm9yIHVybCBpbiB1cmxzOgotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIHJlc3AsIGNvbnRlbnQgPSBzZWxmLmh0dHAucmVxdWVzdCh1cmwsICJI
RUFEIikKLSAgICAgICAgICAgICAgICByZXNwb25zZUhlYWRlcnNbdXJsXSA9IHJlc3AKLSAgICAg
ICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvciBhcyBLZXlFcnJvcjoKLSAgICAgICAgICAgICAg
ICAjRG9uJ3Qga25vdyB3aHkgdGhpcyBoYXBwZW5zCi0gICAgICAgICAgICAgICAgcGFzcwotCi0K
LSAgICAgICAgI1JlbW92ZSBsaW5rcyBub3Qgb2YgY29udGVudC10eXBlIGh0bWwgb3IgcGFnZXMg
bm90IGZvdW5kCi0gICAgICAgICNYWFggLSBuZWVkIHRvIGRlYWwgd2l0aCBvdGhlciBzdGF0dXMg
Y29kZXM/Ci0gICAgICAgIHRvVmlzaXQgPSBzZXQoW3VybCBmb3IgdXJsIGluIHVybHMgaWYgdXJs
IGluIHJlc3BvbnNlSGVhZGVycyBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAiaHRtbCIgaW4g
cmVzcG9uc2VIZWFkZXJzW3VybF1bJ2NvbnRlbnQtdHlwZSddIGFuZAotICAgICAgICAgICAgICAg
ICAgICAgIHJlc3BvbnNlSGVhZGVyc1t1cmxdWydzdGF0dXMnXSA9PSAiMjAwIl0pCi0KLSAgICAg
ICAgI05vdyBjaGVjayB3ZSBhcmUgYWxsb3dlZCB0byBzcGlkZXIgdGhlIHBhZ2UKLSAgICAgICAg
Zm9yIHVybCBpbiB0b1Zpc2l0OgotICAgICAgICAgICAgcm9ib3RVUkwgPSBsaXN0KHVybGxpYi5w
YXJzZS51cmxzcGxpdCh1cmwpWzoyXSkKLSAgICAgICAgICAgIHJvYm90VVJMLmV4dGVuZChbInJv
Ym90cy50eHQiLCAiIiwgIiJdKQotICAgICAgICAgICAgcm9ib3RVUkwgPSB1cmxsaWIucGFyc2Uu
dXJsdW5zcGxpdChyb2JvdFVSTCkKLSAgICAgICAgICAgIHNlbGYucm9ib3RQYXJzZXIuc2V0X3Vy
bChyb2JvdFVSTCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJvYm90UGFyc2VyLmNhbl9mZXRj
aCgiKiIsIHVybCk6Ci0gICAgICAgICAgICAgICAgdG9WaXNpdC5yZW1vdmUodXJsKQotCi0gICAg
ICAgIHNlbGYudmlzaXRlZFVSTHMudXBkYXRlKHVybHMpCi0gICAgICAgIHNlbGYudW52aXNpdGVk
VVJMcy51cGRhdGUodG9WaXNpdCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvdXRpbHMvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1
bGliL3V0aWxzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0
YjRmNTJiMjgyZTQ4MWQzZDU2NDAxZGE0MGUwN2M4YWVkODhmMWU1Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvdXRpbHMvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL3V0aWxzL2VudGl0aWVzLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi91dGlscy9pYW5hX3BhcnNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi91dGlscy9zcGlkZXIucHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVs
aWIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2h0bWw1bGliL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5MDU2YTQyZGYzNDM0MjNiOTVjNGFjOWExOTRiMzlmNTg4MGZmYzUyLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL0FVVEhPUlMucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9DSEFOR0VTLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvaHRtbDVsaWIvQ09OVFJJQlVUSU5HLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvTElDRU5TRQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvTUFO
SUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2h0bWw1bGliL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2RlYnVnLWluZm8ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL2ZsYWtlOC1ydW4u
c2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2h0
bWw1bGliL3BhcnNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9odG1sNWxpYi9yZXF1aXJlbWVudHMtaW5zdGFsbC5zaAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvcmVxdWlyZW1l
bnRzLW9wdGlvbmFsLTIuNi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2h0bWw1bGliL3JlcXVpcmVtZW50cy1vcHRpb25hbC1jcHl0aG9uLnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRt
bDVsaWIvcmVxdWlyZW1lbnRzLW9wdGlvbmFsLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLXRlc3QudHh0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9odG1s
NWxpYi9yZXF1aXJlbWVudHMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9odG1sNWxpYi9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvaHRtbDVsaWIvdG94LmluaQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L2ZubWF0Y2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvZm5tYXRjaC5weQppbmRleCAyZmUzZWIwYWE5ZTVhZjA3ZTExYWQ1YjA4ZDkw
ZjgyOWI4YTUxYTUwLi4zZDllZTIzYzk3ZTViYWYxNjU3NzU4ZWYxODI0NDEwNGM3ZjdjMWUzIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvZm5tYXRjaC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvZm5tYXRjaC5weQpAQCAtMywxNyArMywyNiBAQCBmcm9t
IF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAogaW1wb3J0IGZubWF0Y2ggYXMgX3N0
ZGxpYl9mbm1hdGNoCiBpbXBvcnQgb3MKIAorTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMg
TVlQWSBpcyBzZXQgdG8gVHJ1ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5n
IGltcG9ydCBBbnlTdHIKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgSXRlcmFibGUKKyAgICBmcm9t
IHR5cGluZyBpbXBvcnQgTGlzdAorCiAKIF9fYWxsX18gPSBbImZubWF0Y2giLCAiZm5tYXRjaGNh
c2UiLCAiZmlsdGVyIiwgInRyYW5zbGF0ZSJdCiAKIAogZGVmIGZubWF0Y2gobmFtZSwgcGF0KToK
KyAgICAjIHR5cGU6IChBbnlTdHIsIEFueVN0cikgLT4gYm9vbAogICAgIG5hbWUgPSBvcy5wYXRo
Lm5vcm1jYXNlKG5hbWUpCiAgICAgcGF0ID0gb3MucGF0aC5ub3JtY2FzZShwYXQpCiAgICAgcmV0
dXJuIGZubWF0Y2hjYXNlKG5hbWUsIHBhdCkKIAogCiBkZWYgZm5tYXRjaGNhc2UobmFtZSwgcGF0
KToKKyAgICAjIHR5cGU6IChBbnlTdHIsIEFueVN0cikgLT4gYm9vbAogICAgIGlmICc/JyBub3Qg
aW4gcGF0IGFuZCAnWycgbm90IGluIHBhdDoKICAgICAgICAgd2lsZGNhcmRzID0gcGF0LmNvdW50
KCIqIikKICAgICAgICAgaWYgd2lsZGNhcmRzID09IDA6CkBAIC0yNiw2ICszNSw3IEBAIGRlZiBm
bm1hdGNoY2FzZShuYW1lLCBwYXQpOgogCiAKIGRlZiBmaWx0ZXIobmFtZXMsIHBhdCk6CisgICAg
IyB0eXBlOiAoSXRlcmFibGVbQW55U3RyXSwgQW55U3RyKSAtPiBMaXN0W0FueVN0cl0KICAgICBy
ZXR1cm4gW24gZm9yIG4gaW4gbmFtZXMgaWYgZm5tYXRjaChuLCBwYXQpXQogCiAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC9saW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L2xpbnQucHkKaW5kZXggM2Y0M2IzNzNhYmU3OTNlODg1NGJhYTgwZDRhYzEyN2Vk
NjZkMGQ5NS4uYzdjMDE5NzIxM2M0NjYwZDA1YTNkODY4ZWRkODdiZDkwNzQzMGY2YiAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L2xpbnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L2xpbnQucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCBhYmMKIGltcG9y
dCBhcmdwYXJzZQogaW1wb3J0IGFzdAogaW1wb3J0IGpzb24KK2ltcG9ydCBsb2dnaW5nCiBpbXBv
cnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKQEAgLTEzLDMyICsxNCw1NCBAQCBp
bXBvcnQgdGVtcGZpbGUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKIGZy
b20gLiBpbXBvcnQgZm5tYXRjaAorZnJvbSAuIGltcG9ydCBydWxlcwogZnJvbSAuLiBpbXBvcnQg
bG9jYWxwYXRocwogZnJvbSAuLmdpdGlnbm9yZS5naXRpZ25vcmUgaW1wb3J0IFBhdGhGaWx0ZXIK
IGZyb20gLi53cHQgaW1wb3J0IHRlc3RmaWxlcworZnJvbSAuLm1hbmlmZXN0LnZjcyBpbXBvcnQg
d2FsawogCi1mcm9tIG1hbmlmZXN0LnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJjZUZpbGUsIGpzX21l
dGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywgZ2V0X2FueV92YXJpYW50cywgZ2V0
X2RlZmF1bHRfYW55X3ZhcmlhbnRzCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIGl0ZXJp
dGVtcywgaXRlcnZhbHVlcworZnJvbSAuLm1hbmlmZXN0LnNvdXJjZWZpbGUgaW1wb3J0IFNvdXJj
ZUZpbGUsIGpzX21ldGFfcmUsIHB5dGhvbl9tZXRhX3JlLCBzcGFjZV9jaGFycywgZ2V0X2FueV92
YXJpYW50cywgZ2V0X2RlZmF1bHRfYW55X3ZhcmlhbnRzCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5
X3R5cGUsIGl0ZXJpdGVtcywgaXRlcnZhbHVlcywgd2l0aF9tZXRhY2xhc3MKIGZyb20gc2l4Lm1v
dmVzIGltcG9ydCByYW5nZQogZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxz
cGxpdCwgdXJsam9pbgogCi1pbXBvcnQgbG9nZ2luZworTVlQWSA9IEZhbHNlCitpZiBNWVBZOgor
ICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20g
dHlwaW5nIGltcG9ydCBBbnkKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorICAgIGZyb20g
dHlwaW5nIGltcG9ydCBJTworICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorICAgIGZy
b20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNlcXVlbmNlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNl
dAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1
cGxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQg
VW5pb24KKworICAgIFdoaXRlbGlzdCA9IERpY3RbVGV4dCwgRGljdFtUZXh0LCBTZXRbT3B0aW9u
YWxbaW50XV1dXQogCi1sb2dnZXIgPSBOb25lCisKK2xvZ2dlciA9IE5vbmUgICMgdHlwZTogT3B0
aW9uYWxbbG9nZ2luZy5Mb2dnZXJdCiAKIGRlZiBzZXR1cF9sb2dnaW5nKHByZWZpeD1GYWxzZSk6
CisgICAgIyB0eXBlOiAoYm9vbCkgLT4gTm9uZQogICAgIGdsb2JhbCBsb2dnZXIKICAgICBpZiBs
b2dnZXIgaXMgTm9uZToKICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIob3MucGF0
aC5iYXNlbmFtZShvcy5wYXRoLnNwbGl0ZXh0KF9fZmlsZV9fKVswXSkpCi0gICAgICAgIGhhbmRs
ZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKKyAgICAgICAgaGFuZGxlciA9
IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KSAgIyB0eXBlOiBsb2dnaW5nLkhhbmRs
ZXIKICAgICAgICAgIyBPbmx5IGFkZCBhIGhhbmRsZXIgaWYgdGhlIHBhcmVudCBsb2dnZXIgaXMg
bWlzc2luZyBhIGhhbmRsZXIKLSAgICAgICAgaWYgbG9nZ2VyLnBhcmVudCBhbmQgbGVuKGxvZ2dl
ci5wYXJlbnQuaGFuZGxlcnMpID09IDA6CisgICAgICAgIHBhcmVudCA9IGxvZ2dlci5wYXJlbnQK
KyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyZW50LCBsb2dnaW5nLkxvZ2dlcikKKyAgICAg
ICAgaWYgcGFyZW50IGFuZCBsZW4ocGFyZW50LmhhbmRsZXJzKSA9PSAwOgogICAgICAgICAgICAg
aGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihzeXMuc3Rkb3V0KQogICAgICAgICAgICAg
bG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIGZvcm1h
dCA9IGxvZ2dpbmcuQkFTSUNfRk9STUFUCiAgICAgZWxzZToKLSAgICAgICAgZm9ybWF0ID0gIiUo
bWVzc2FnZSlzIgorICAgICAgICBmb3JtYXQgPSBzdHIoIiUobWVzc2FnZSlzIikKICAgICBmb3Jt
YXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcihmb3JtYXQpCiAgICAgZm9yIGhhbmRsZXIgaW4gbG9n
Z2VyLmhhbmRsZXJzOgogICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCkBA
IC02MiwyMSArODUsMjMgQEAgeW91IGNvdWxkIGFkZCB0aGUgZm9sbG93aW5nIGxpbmUgdG8gdGhl
IGxpbnQud2hpdGVsaXN0IGZpbGUuCiAlczogJXMiIiIKIAogZGVmIGFsbF9maWxlc3lzdGVtX3Bh
dGhzKHJlcG9fcm9vdCwgc3ViZGlyPU5vbmUpOgotICAgIHBhdGhfZmlsdGVyID0gUGF0aEZpbHRl
cihyZXBvX3Jvb3QsIGV4dHJhcz1bIi5naXQvIl0pCisgICAgIyB0eXBlOiAoc3RyLCBPcHRpb25h
bFtzdHJdKSAtPiBJdGVyYWJsZVtzdHJdCisgICAgcGF0aF9maWx0ZXIgPSBQYXRoRmlsdGVyKHJl
cG9fcm9vdCwgZXh0cmFzPVtzdHIoIi5naXQvIildKQogICAgIGlmIHN1YmRpcjoKICAgICAgICAg
ZXhwYW5kZWRfcGF0aCA9IHN1YmRpcgogICAgIGVsc2U6CiAgICAgICAgIGV4cGFuZGVkX3BhdGgg
PSByZXBvX3Jvb3QKLSAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBvcy53
YWxrKGV4cGFuZGVkX3BhdGgpOgotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZmlsZW5hbWVzOgot
ICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwg
ZmlsZW5hbWUpLCByZXBvX3Jvb3QpCi0gICAgICAgICAgICBpZiBwYXRoX2ZpbHRlcihwYXRoKToK
LSAgICAgICAgICAgICAgICB5aWVsZCBwYXRoCi0gICAgICAgIGRpcm5hbWVzWzpdID0gW2l0ZW0g
Zm9yIGl0ZW0gaW4gZGlybmFtZXMgaWYKLSAgICAgICAgICAgICAgICAgICAgICAgcGF0aF9maWx0
ZXIob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihkaXJwYXRoLCBpdGVtKSArICIvIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9v
dCkrIi8iKV0KKyAgICBmb3IgZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyBpbiBwYXRoX2Zp
bHRlcih3YWxrKGV4cGFuZGVkX3BhdGgpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lLCBfIGluIGZp
bGVuYW1lczoKKyAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlycGF0aCwgZmlsZW5h
bWUpCisgICAgICAgICAgICBpZiBzdWJkaXI6CisgICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBh
dGguam9pbihzdWJkaXIsIHBhdGgpCisgICAgICAgICAgICBhc3NlcnQgbm90IG9zLnBhdGguaXNh
YnMocGF0aCksIHBhdGgKKyAgICAgICAgICAgIHlpZWxkIHBhdGgKKwogCiBkZWYgX2FsbF9maWxl
c19lcXVhbChwYXRocyk6CisgICAgIyB0eXBlOiAoSXRlcmFibGVbc3RyXSkgLT4gYm9vbAogICAg
ICIiIgogICAgIENoZWNrcyBhbGwgdGhlIHBhdGhzIGFyZSBmaWxlcyB0aGF0IGFyZSBieXRlLWZv
ci1ieXRlIGlkZW50aWNhbAogCkBAIC0xMTUsMzIgKzE0MCw2MCBAQCBkZWYgX2FsbF9maWxlc19l
cXVhbChwYXRocyk6CiAKIAogZGVmIGNoZWNrX3BhdGhfbGVuZ3RoKHJlcG9fcm9vdCwgcGF0aCk6
CisgICAgIyB0eXBlOiAoc3RyLCBzdHIpIC0+IExpc3RbcnVsZXMuRXJyb3JdCiAgICAgaWYgbGVu
KHBhdGgpICsgMSA+IDE1MDoKLSAgICAgICAgcmV0dXJuIFsoIlBBVEggTEVOR1RIIiwgIi8lcyBs
b25nZXIgdGhhbiBtYXhpbXVtIHBhdGggbGVuZ3RoICglZCA+IDE1MCkiICUgKHBhdGgsIGxlbihw
YXRoKSArIDEpLCBwYXRoLCBOb25lKV0KKyAgICAgICAgcmV0dXJuIFtydWxlcy5QYXRoTGVuZ3Ro
LmVycm9yKHBhdGgsIChwYXRoLCBsZW4ocGF0aCkgKyAxKSldCisgICAgcmV0dXJuIFtdCisKKwor
ZGVmIGNoZWNrX2ZpbGVfdHlwZShyZXBvX3Jvb3QsIHBhdGgpOgorICAgICMgdHlwZTogKHN0ciwg
c3RyKSAtPiBMaXN0W3J1bGVzLkVycm9yXQorICAgIGlmIG9zLnBhdGguaXNsaW5rKHBhdGgpOgor
ICAgICAgICByZXR1cm4gW3J1bGVzLkZpbGVUeXBlLmVycm9yKHBhdGgsIChwYXRoLCAic3ltbGlu
ayIpKV0KICAgICByZXR1cm4gW10KIAogCiBkZWYgY2hlY2tfd29ya2VyX2NvbGxpc2lvbihyZXBv
X3Jvb3QsIHBhdGgpOgorICAgICMgdHlwZTogKHN0ciwgc3RyKSAtPiBMaXN0W3J1bGVzLkVycm9y
XQogICAgIGVuZGluZ3MgPSBbKCIuYW55Lmh0bWwiLCAiLmFueS5qcyIpLAogICAgICAgICAgICAg
ICAgKCIuYW55Lndvcmtlci5odG1sIiwgIi5hbnkuanMiKSwKICAgICAgICAgICAgICAgICgiLndv
cmtlci5odG1sIiwgIi53b3JrZXIuanMiKV0KICAgICBmb3IgcGF0aF9lbmRpbmcsIGdlbmVyYXRl
ZCBpbiBlbmRpbmdzOgogICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKHBhdGhfZW5kaW5nKToKLSAg
ICAgICAgICAgIHJldHVybiBbKCJXT1JLRVIgQ09MTElTSU9OIiwKLSAgICAgICAgICAgICAgICAg
ICAgICJwYXRoIGVuZHMgd2l0aCAlcyB3aGljaCBjb2xsaWRlcyB3aXRoIGdlbmVyYXRlZCB0ZXN0
cyBmcm9tICVzIGZpbGVzIiAlIChwYXRoX2VuZGluZywgZ2VuZXJhdGVkKSwKLSAgICAgICAgICAg
ICAgICAgICAgIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICBOb25lKV0KKyAgICAgICAgICAg
IHJldHVybiBbcnVsZXMuV29ya2VyQ29sbGlzaW9uLmVycm9yKHBhdGgsIChwYXRoX2VuZGluZywg
Z2VuZXJhdGVkKSldCiAgICAgcmV0dXJuIFtdCiAKIAorZGVmIGNoZWNrX2dpdGlnbm9yZV9maWxl
KHJlcG9fcm9vdCwgcGF0aCk6CisgICAgIyB0eXBlOiAoc3RyLCBzdHIpIC0+IExpc3RbcnVsZXMu
RXJyb3JdCisgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoIi5naXRpZ25vcmUiKToKKyAgICAgICAg
cmV0dXJuIFtdCisKKyAgICBwYXRoX3BhcnRzID0gcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkKKyAg
ICBpZiBsZW4ocGF0aF9wYXJ0cykgPT0gMToKKyAgICAgICAgcmV0dXJuIFtdCisKKyAgICBpZiBw
YXRoX3BhcnRzWy0xXSAhPSAiLmdpdGlnbm9yZSI6CisgICAgICAgIHJldHVybiBbXQorCisgICAg
aWYgKHBhdGhfcGFydHNbMF0gaW4gWyJ0b29scyIsICJkb2NzIl0gb3IKKyAgICAgICAgcGF0aF9w
YXJ0c1s6Ml0gPT0gWyJyZXNvdXJjZXMiLCAid2ViaWRsMiJdIG9yCisgICAgICAgIHBhdGhfcGFy
dHNbOjNdID09IFsiY3NzIiwgInRvb2xzIiwgImFwaWNsaWVudCJdKToKKyAgICAgICAgcmV0dXJu
IFtdCisKKyAgICByZXR1cm4gW3J1bGVzLkdpdElnbm9yZUZpbGUuZXJyb3IocGF0aCldCisKKwog
ZGVmIGNoZWNrX2FoZW1fY29weShyZXBvX3Jvb3QsIHBhdGgpOgorICAgICMgdHlwZTogKHN0ciwg
c3RyKSAtPiBMaXN0W3J1bGVzLkVycm9yXQogICAgIGxwYXRoID0gcGF0aC5sb3dlcigpCiAgICAg
aWYgImFoZW0iIGluIGxwYXRoIGFuZCBscGF0aC5lbmRzd2l0aCgiLnR0ZiIpOgotICAgICAgICBy
ZXR1cm4gWygiQUhFTSBDT1BZIiwgIkRvbid0IGFkZCBleHRyYSBjb3BpZXMgb2YgQWhlbSwgdXNl
IC9mb250cy9BaGVtLnR0ZiIsIHBhdGgsIE5vbmUpXQorICAgICAgICByZXR1cm4gW3J1bGVzLkFo
ZW1Db3B5LmVycm9yKHBhdGgpXQogICAgIHJldHVybiBbXQogCiAKIGRlZiBjaGVja19naXRfaWdu
b3JlKHJlcG9fcm9vdCwgcGF0aHMpOgorICAgICMgdHlwZTogKHN0ciwgTGlzdFtzdHJdKSAtPiBM
aXN0W3J1bGVzLkVycm9yXQogICAgIGVycm9ycyA9IFtdCiAgICAgd2l0aCB0ZW1wZmlsZS5UZW1w
b3JhcnlGaWxlKCd3KycpIGFzIGY6CiAgICAgICAgIGYud3JpdGUoJ1xuJy5qb2luKHBhdGhzKSkK
QEAgLTE1NCw4ICsyMDcsNyBAQCBkZWYgY2hlY2tfZ2l0X2lnbm9yZShyZXBvX3Jvb3QsIHBhdGhz
KToKICAgICAgICAgICAgICAgICAjIElmIHRoZSBtYXRjaGluZyBmaWx0ZXIgcmVwb3J0ZWQgYnkg
Y2hlY2staWdub3JlIGlzIGEgc3BlY2lhbC1jYXNlIGV4Y2VwdGlvbiwKICAgICAgICAgICAgICAg
ICAjIHRoYXQncyBmaW5lLiBPdGhlcndpc2UsIGl0IHJlcXVpcmVzIGEgbmV3IHNwZWNpYWwtY2Fz
ZSBleGNlcHRpb24uCiAgICAgICAgICAgICAgICAgaWYgZmlsdGVyX3N0cmluZ1swXSAhPSAnISc6
Ci0gICAgICAgICAgICAgICAgICAgIGVycm9ycyArPSBbKCJJR05PUkVEIFBBVEgiLCAiJXMgbWF0
Y2hlcyBhbiBpZ25vcmUgZmlsdGVyIGluIC5naXRpZ25vcmUgLSAiCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJwbGVhc2UgYWRkIGEgLmdpdGlnbm9yZSBleGNlcHRpb24iICUgcGF0
aCwgcGF0aCwgTm9uZSldCisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMu
SWdub3JlZFBhdGguZXJyb3IocGF0aCwgKHBhdGgsKSkpCiAgICAgICAgIGV4Y2VwdCBzdWJwcm9j
ZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKICAgICAgICAgICAgICMgTm9uemVybyByZXR1cm4gY29k
ZSBtZWFucyB0aGF0IG5vIG1hdGNoIGV4aXN0cy4KICAgICAgICAgICAgIHBhc3MKQEAgLTE2OCw2
ICsyMjAsNyBAQCB3M2NfZGV2X3JlID0gcmUuY29tcGlsZShyImh0dHBzP1w6XC9cL2RldlwudzNj
P1wub3JnXC9bXi8/I10rXC8oW14vPyNdKykiKQogCiAKIGRlZiBjaGVja19jc3NfZ2xvYmFsbHlf
dW5pcXVlKHJlcG9fcm9vdCwgcGF0aHMpOgorICAgICMgdHlwZTogKHN0ciwgTGlzdFtzdHJdKSAt
PiBMaXN0W3J1bGVzLkVycm9yXQogICAgICIiIgogICAgIENoZWNrcyB0aGF0IENTUyBmaWxlbmFt
ZXMgYXJlIHN1ZmZpY2llbnRseSB1bmlxdWUKIApAQCAtMTg1LDEzICsyMzgsMTYgQEAgZGVmIGNo
ZWNrX2Nzc19nbG9iYWxseV91bmlxdWUocmVwb19yb290LCBwYXRocyk6CiAgICAgOnJldHVybnM6
IGEgbGlzdCBvZiBlcnJvcnMgZm91bmQgaW4gYGBwYXRoc2BgCiAKICAgICAiIiIKLSAgICB0ZXN0
X2ZpbGVzID0gZGVmYXVsdGRpY3Qoc2V0KQotICAgIHJlZl9maWxlcyA9IGRlZmF1bHRkaWN0KHNl
dCkKLSAgICBzdXBwb3J0X2ZpbGVzID0gZGVmYXVsdGRpY3Qoc2V0KQorICAgIHRlc3RfZmlsZXMg
PSBkZWZhdWx0ZGljdChzZXQpICAjIHR5cGU6IERpY3RbVW5pb25bYnl0ZXMsIFRleHRdLCBTZXRb
c3RyXV0KKyAgICByZWZfZmlsZXMgPSBkZWZhdWx0ZGljdChzZXQpICAjIHR5cGU6IERpY3RbVW5p
b25bYnl0ZXMsIFRleHRdLCBTZXRbc3RyXV0KKyAgICBzdXBwb3J0X2ZpbGVzID0gZGVmYXVsdGRp
Y3Qoc2V0KSAgIyB0eXBlOiBEaWN0W1VuaW9uW2J5dGVzLCBUZXh0XSwgU2V0W3N0cl1dCiAKICAg
ICBmb3IgcGF0aCBpbiBwYXRoczoKICAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgotICAgICAg
ICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgiXFwiLCAiLyIpCisgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKHBhdGgsIGJpbmFyeV90eXBlKToKKyAgICAgICAgICAgICAgICBwYXRoID0gcGF0aC5y
ZXBsYWNlKGIiXFwiLCBiIi8iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBw
YXRoID0gcGF0aC5yZXBsYWNlKHUiXFwiLCB1Ii8iKQogCiAgICAgICAgIGlmIG5vdCBwYXRoLnN0
YXJ0c3dpdGgoImNzcy8iKToKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC0yMTEsMTIgKzI2Nywx
NyBAQCBkZWYgY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhzKToKICAg
ICAgICAgICAgICAgICBhbnkocGFydHNbOmxlbihub25fdGVzdF9wYXRoKV0gPT0gbGlzdChub25f
dGVzdF9wYXRoKSBmb3Igbm9uX3Rlc3RfcGF0aCBpbiBzb3VyY2VfZmlsZS5kaXJfcGF0aF9ub25f
dGVzdCkpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgIG5hbWUgPSBw
YXRoW29mZnNldCsxOl0KLSAgICAgICAgICAgIHN1cHBvcnRfZmlsZXNbbmFtZV0uYWRkKHBhdGgp
CisgICAgICAgICAgICBzdXBwb3J0X25hbWUgPSBwYXRoW29mZnNldCsxOl0KKyAgICAgICAgICAg
IHN1cHBvcnRfZmlsZXNbc3VwcG9ydF9uYW1lXS5hZGQocGF0aCkKICAgICAgICAgZWxpZiBzb3Vy
Y2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZToKICAgICAgICAgICAgIHJlZl9maWxlc1tzb3VyY2Vf
ZmlsZS5uYW1lXS5hZGQocGF0aCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRlc3RfZmls
ZXNbc291cmNlX2ZpbGUubmFtZV0uYWRkKHBhdGgpCisgICAgICAgICAgICB0ZXN0X25hbWUgPSBz
b3VyY2VfZmlsZS5uYW1lICAjIHR5cGU6IFVuaW9uW2J5dGVzLCBUZXh0XQorICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZSh0ZXN0X25hbWUsIGJ5dGVzKToKKyAgICAgICAgICAgICAgICB0ZXN0X25h
bWUgPSB0ZXN0X25hbWUucmVwbGFjZShiJy1tYW51YWwnLCBiJycpCisgICAgICAgICAgICBlbHNl
OgorICAgICAgICAgICAgICAgIHRlc3RfbmFtZSA9IHRlc3RfbmFtZS5yZXBsYWNlKHUnLW1hbnVh
bCcsIHUnJykKKyAgICAgICAgICAgIHRlc3RfZmlsZXNbdGVzdF9uYW1lXS5hZGQocGF0aCkKIAog
ICAgIGVycm9ycyA9IFtdCiAKQEAgLTIyNCw3ICsyODUsNyBAQCBkZWYgY2hlY2tfY3NzX2dsb2Jh
bGx5X3VuaXF1ZShyZXBvX3Jvb3QsIHBhdGhzKToKICAgICAgICAgaWYgbGVuKGNvbGxpZGluZykg
PiAxOgogICAgICAgICAgICAgaWYgbm90IF9hbGxfZmlsZXNfZXF1YWwoW29zLnBhdGguam9pbihy
ZXBvX3Jvb3QsIHgpIGZvciB4IGluIGNvbGxpZGluZ10pOgogICAgICAgICAgICAgICAgICMgT25s
eSBjb21wdXRlIGJ5X3NwZWMgaWYgdGhlcmUgYXJlIHByaW1hLWZhY2llIGNvbGxpc2lvbnMgYmVj
YXVzZSBvZiBjb3N0Ci0gICAgICAgICAgICAgICAgYnlfc3BlYyA9IGRlZmF1bHRkaWN0KHNldCkK
KyAgICAgICAgICAgICAgICBieV9zcGVjID0gZGVmYXVsdGRpY3Qoc2V0KSAgIyB0eXBlOiBEaWN0
W1RleHQsIFNldFtzdHJdXQogICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIGNvbGxpZGluZzoK
ICAgICAgICAgICAgICAgICAgICAgc291cmNlX2ZpbGUgPSBTb3VyY2VGaWxlKHJlcG9fcm9vdCwg
cGF0aCwgIi8iKQogICAgICAgICAgICAgICAgICAgICBmb3IgbGluayBpbiBzb3VyY2VfZmlsZS5z
cGVjX2xpbmtzOgpAQCAtMjM3LDUyICsyOTgsNDkgQEAgZGVmIGNoZWNrX2Nzc19nbG9iYWxseV91
bmlxdWUocmVwb19yb290LCBwYXRocyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKICAgICAgICAgICAgICAgICAgICAgICAgIGJ5X3NwZWNbc3BlY10uYWRkKHBhdGgpCiAK
LSAgICAgICAgICAgICAgICBmb3Igc3BlYywgcGF0aHMgaW4gaXRlcml0ZW1zKGJ5X3NwZWMpOgot
ICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2FsbF9maWxlc19lcXVhbChbb3MucGF0aC5qb2lu
KHJlcG9fcm9vdCwgeCkgZm9yIHggaW4gcGF0aHNdKToKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZvciB4IGluIHBhdGhzOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBl
bmQoKCJDU1MtQ09MTElESU5HLVRFU1QtTkFNRSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIlRoZSBmaWxlbmFtZSAlcyBpbiB0aGUgJXMgdGVzdHN1aXRlIGlz
IHNoYXJlZCBieTogJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJSAobmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzcGVjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIs
ICIuam9pbihzb3J0ZWQocGF0aHMpKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBOb25lKSkKLQotICAgIGZvciBlcnJvcl9uYW1lLCBkIGluIFsoIkNTUy1DT0xMSURJTkctUkVG
LU5BTUUiLCByZWZfZmlsZXMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoIkNTUy1DT0xM
SURJTkctU1VQUE9SVC1OQU1FIiwgc3VwcG9ydF9maWxlcyldOgorICAgICAgICAgICAgICAgIGZv
ciBzcGVjLCBzcGVjX3BhdGhzIGluIGl0ZXJpdGVtcyhieV9zcGVjKToKKyAgICAgICAgICAgICAg
ICAgICAgaWYgbm90IF9hbGxfZmlsZXNfZXF1YWwoW29zLnBhdGguam9pbihyZXBvX3Jvb3QsIHgp
IGZvciB4IGluIHNwZWNfcGF0aHNdKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGlu
IHNwZWNfcGF0aHM6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDEgPSAobmFt
ZSwgc3BlYywgIiwgIi5qb2luKHNvcnRlZChzcGVjX3BhdGhzKSkpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5DU1NDb2xsaWRpbmdUZXN0TmFtZS5lcnJv
cih4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY29udGV4dDEpKQorCisgICAgZm9yIHJ1bGVfY2xhc3Ms
IGQgaW4gWyhydWxlcy5DU1NDb2xsaWRpbmdSZWZOYW1lLCByZWZfZmlsZXMpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAocnVsZXMuQ1NTQ29sbGlkaW5nU3VwcG9ydE5hbWUsIHN1cHBvcnRf
ZmlsZXMpXToKICAgICAgICAgZm9yIG5hbWUsIGNvbGxpZGluZyBpbiBpdGVyaXRlbXMoZCk6CiAg
ICAgICAgICAgICBpZiBsZW4oY29sbGlkaW5nKSA+IDE6CiAgICAgICAgICAgICAgICAgaWYgbm90
IF9hbGxfZmlsZXNfZXF1YWwoW29zLnBhdGguam9pbihyZXBvX3Jvb3QsIHgpIGZvciB4IGluIGNv
bGxpZGluZ10pOgorICAgICAgICAgICAgICAgICAgICBjb250ZXh0MiA9IChuYW1lLCAiLCAiLmpv
aW4oc29ydGVkKGNvbGxpZGluZykpKQorCiAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGNv
bGxpZGluZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKGVycm9yX25h
bWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGVuYW1l
ICVzIGlzIHNoYXJlZCBieTogJXMiICUgKG5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIsICIu
am9pbihzb3J0ZWQoY29sbGlkaW5nKSkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgeCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUp
KQorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlX2NsYXNzLmVycm9y
KHgsIGNvbnRleHQyKSkKIAogICAgIHJldHVybiBlcnJvcnMKIAogCiBkZWYgcGFyc2Vfd2hpdGVs
aXN0KGYpOgorICAgICMgdHlwZTogKElPW2J5dGVzXSkgLT4gVHVwbGVbV2hpdGVsaXN0LCBTZXRb
VGV4dF1dCiAgICAgIiIiCiAgICAgUGFyc2UgdGhlIHdoaXRlbGlzdCBmaWxlIGdpdmVuIGJ5IGBm
YCwgYW5kIHJldHVybiB0aGUgcGFyc2VkIHN0cnVjdHVyZS4KICAgICAiIiIKIAotICAgIGRhdGEg
PSBkZWZhdWx0ZGljdChsYW1iZGE6ZGVmYXVsdGRpY3Qoc2V0KSkKLSAgICBpZ25vcmVkX2ZpbGVz
ID0gc2V0KCkKKyAgICBkYXRhID0gZGVmYXVsdGRpY3QobGFtYmRhOmRlZmF1bHRkaWN0KHNldCkp
ICAjIHR5cGU6IFdoaXRlbGlzdAorICAgIGlnbm9yZWRfZmlsZXMgPSBzZXQoKSAgIyB0eXBlOiBT
ZXRbVGV4dF0KIAogICAgIGZvciBsaW5lIGluIGY6CiAgICAgICAgIGxpbmUgPSBsaW5lLnN0cmlw
KCkKICAgICAgICAgaWYgbm90IGxpbmUgb3IgbGluZS5zdGFydHN3aXRoKCIjIik6CiAgICAgICAg
ICAgICBjb250aW51ZQogICAgICAgICBwYXJ0cyA9IFtpdGVtLnN0cmlwKCkgZm9yIGl0ZW0gaW4g
bGluZS5zcGxpdCgiOiIpXQorCiAgICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMjoKLSAgICAgICAg
ICAgIHBhcnRzLmFwcGVuZChOb25lKQorICAgICAgICAgICAgZXJyb3JfdHlwZXNfcywgZmlsZV9t
YXRjaCA9IHBhcnRzCisgICAgICAgICAgICBsaW5lX251bWJlciA9IE5vbmUgICMgdHlwZTogT3B0
aW9uYWxbaW50XQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFydHNbLTFdID0gaW50KHBh
cnRzWy0xXSkKKyAgICAgICAgICAgIGVycm9yX3R5cGVzX3MsIGZpbGVfbWF0Y2gsIGxpbmVfbnVt
YmVyX3MgPSBwYXJ0cworICAgICAgICAgICAgbGluZV9udW1iZXIgPSBpbnQobGluZV9udW1iZXJf
cykKIAotICAgICAgICBlcnJvcl90eXBlcywgZmlsZV9tYXRjaCwgbGluZV9udW1iZXIgPSBwYXJ0
cwotICAgICAgICBlcnJvcl90eXBlcyA9IHtpdGVtLnN0cmlwKCkgZm9yIGl0ZW0gaW4gZXJyb3Jf
dHlwZXMuc3BsaXQoIiwiKX0KKyAgICAgICAgZXJyb3JfdHlwZXMgPSB7aXRlbS5zdHJpcCgpIGZv
ciBpdGVtIGluIGVycm9yX3R5cGVzX3Muc3BsaXQoIiwiKX0KICAgICAgICAgZmlsZV9tYXRjaCA9
IG9zLnBhdGgubm9ybWNhc2UoZmlsZV9tYXRjaCkKIAogICAgICAgICBpZiAiKiIgaW4gZXJyb3Jf
dHlwZXM6CkBAIC0yOTUsNiArMzUzLDcgQEAgZGVmIHBhcnNlX3doaXRlbGlzdChmKToKIAogCiBk
ZWYgZmlsdGVyX3doaXRlbGlzdF9lcnJvcnMoZGF0YSwgZXJyb3JzKToKKyAgICAjIHR5cGU6IChX
aGl0ZWxpc3QsIFNlcXVlbmNlW3J1bGVzLkVycm9yXSkgLT4gTGlzdFtydWxlcy5FcnJvcl0KICAg
ICAiIiIKICAgICBGaWx0ZXIgb3V0IHRob3NlIGVycm9ycyB0aGF0IGFyZSB3aGl0ZWxpc3RlZCBp
biBgZGF0YWAuCiAgICAgIiIiCkBAIC0zMTcsMTMwICszNzYsNTEgQEAgZGVmIGZpbHRlcl93aGl0
ZWxpc3RfZXJyb3JzKGRhdGEsIGVycm9ycyk6CiAKICAgICByZXR1cm4gW2l0ZW0gZm9yIGksIGl0
ZW0gaW4gZW51bWVyYXRlKGVycm9ycykgaWYgbm90IHdoaXRlbGlzdGVkW2ldXQogCi1jbGFzcyBS
ZWdleHAob2JqZWN0KToKLSAgICBwYXR0ZXJuID0gTm9uZQotICAgIGZpbGVfZXh0ZW5zaW9ucyA9
IE5vbmUKLSAgICBlcnJvciA9IE5vbmUKLSAgICBfcmUgPSBOb25lCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlID0gcmUuY29tcGlsZShzZWxmLnBhdHRlcm4pCi0K
LSAgICBkZWYgYXBwbGllcyhzZWxmLCBwYXRoKToKLSAgICAgICAgcmV0dXJuIChzZWxmLmZpbGVf
ZXh0ZW5zaW9ucyBpcyBOb25lIG9yCi0gICAgICAgICAgICAgICAgb3MucGF0aC5zcGxpdGV4dChw
YXRoKVsxXSBpbiBzZWxmLmZpbGVfZXh0ZW5zaW9ucykKLQotICAgIGRlZiBzZWFyY2goc2VsZiwg
bGluZSk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9yZS5zZWFyY2gobGluZSkKLQotY2xhc3MgVHJh
aWxpbmdXaGl0ZXNwYWNlUmVnZXhwKFJlZ2V4cCk6Ci0gICAgcGF0dGVybiA9IGIiWyBcdFxmXHZd
JCIKLSAgICBlcnJvciA9ICJUUkFJTElORyBXSElURVNQQUNFIgotICAgIGRlc2NyaXB0aW9uID0g
IldoaXRlc3BhY2UgYXQgRU9MIgotCi1jbGFzcyBUYWJzUmVnZXhwKFJlZ2V4cCk6Ci0gICAgcGF0
dGVybiA9IGIiXlx0IgotICAgIGVycm9yID0gIklOREVOVCBUQUJTIgotICAgIGRlc2NyaXB0aW9u
ID0gIlRhYnMgdXNlZCBmb3IgaW5kZW50YXRpb24iCi0KLWNsYXNzIENSUmVnZXhwKFJlZ2V4cCk6
Ci0gICAgcGF0dGVybiA9IGIiXHIkIgotICAgIGVycm9yID0gIkNSIEFUIEVPTCIKLSAgICBkZXNj
cmlwdGlvbiA9ICJDUiBjaGFyYWN0ZXIgaW4gbGluZSBzZXBhcmF0b3IiCi0KLWNsYXNzIFNldFRp
bWVvdXRSZWdleHAoUmVnZXhwKToKLSAgICBwYXR0ZXJuID0gYiJzZXRUaW1lb3V0XHMqXCgiCi0g
ICAgZXJyb3IgPSAiU0VUIFRJTUVPVVQiCi0gICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIs
ICIuaHRtIiwgIi5qcyIsICIueGh0IiwgIi54aHRtbCIsICIuc3ZnIl0KLSAgICBkZXNjcmlwdGlv
biA9ICJzZXRUaW1lb3V0IHVzZWQ7IHN0ZXBfdGltZW91dCBzaG91bGQgdHlwaWNhbGx5IGJlIHVz
ZWQgaW5zdGVhZCIKLQotY2xhc3MgVzNDVGVzdE9yZ1JlZ2V4cChSZWdleHApOgotICAgIHBhdHRl
cm4gPSBiInczY1wtdGVzdFwub3JnIgotICAgIGVycm9yID0gIlczQy1URVNULk9SRyIKLSAgICBk
ZXNjcmlwdGlvbiA9ICJFeHRlcm5hbCB3M2MtdGVzdC5vcmcgZG9tYWluIHVzZWQiCi0KLWNsYXNz
IFdlYlBsYXRmb3JtVGVzdFJlZ2V4cChSZWdleHApOgotICAgIHBhdHRlcm4gPSBiIndlYlwtcGxh
dGZvcm1cLnRlc3QiCi0gICAgZXJyb3IgPSAiV0VCLVBMQVRGT1JNLlRFU1QiCi0gICAgZGVzY3Jp
cHRpb24gPSAiSW50ZXJuYWwgd2ViLXBsYXRmb3JtLnRlc3QgZG9tYWluIHVzZWQiCi0KLWNsYXNz
IFdlYmlkbDJSZWdleHAoUmVnZXhwKToKLSAgICBwYXR0ZXJuID0gYiJ3ZWJpZGwyXC5qcyIKLSAg
ICBlcnJvciA9ICJXRUJJREwyLkpTIgotICAgIGRlc2NyaXB0aW9uID0gIkxlZ2FjeSB3ZWJpZGwy
LmpzIHNjcmlwdCB1c2VkIgotCi1jbGFzcyBDb25zb2xlUmVnZXhwKFJlZ2V4cCk6Ci0gICAgcGF0
dGVybiA9IGIiY29uc29sZVwuW2EtekEtWl0rXHMqXCgiCi0gICAgZXJyb3IgPSAiQ09OU09MRSIK
LSAgICBmaWxlX2V4dGVuc2lvbnMgPSBbIi5odG1sIiwgIi5odG0iLCAiLmpzIiwgIi54aHQiLCAi
LnhodG1sIiwgIi5zdmciXQotICAgIGRlc2NyaXB0aW9uID0gIkNvbnNvbGUgbG9nZ2luZyBBUEkg
dXNlZCIKLQotY2xhc3MgR2VuZXJhdGVUZXN0c1JlZ2V4cChSZWdleHApOgotICAgIHBhdHRlcm4g
PSBiImdlbmVyYXRlX3Rlc3RzXHMqXCgiCi0gICAgZXJyb3IgPSAiR0VORVJBVEVfVEVTVFMiCi0g
ICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIuaHRtIiwgIi5qcyIsICIueGh0IiwgIi54
aHRtbCIsICIuc3ZnIl0KLSAgICBkZXNjcmlwdGlvbiA9ICJnZW5lcmF0ZV90ZXN0cyB1c2VkIgot
Ci1jbGFzcyBQcmludFJlZ2V4cChSZWdleHApOgotICAgIHBhdHRlcm4gPSBiInByaW50KD86XHN8
XHMqXCgpIgotICAgIGVycm9yID0gIlBSSU5UIFNUQVRFTUVOVCIKLSAgICBmaWxlX2V4dGVuc2lv
bnMgPSBbIi5weSJdCi0gICAgZGVzY3JpcHRpb24gPSAiUHJpbnQgZnVuY3Rpb24gdXNlZCIKLQot
Y2xhc3MgTGF5b3V0VGVzdHNSZWdleHAoUmVnZXhwKToKLSAgICBwYXR0ZXJuID0gYiJldmVudFNl
bmRlcnx0ZXN0UnVubmVyfHdpbmRvd1wuaW50ZXJuYWxzIgotICAgIGVycm9yID0gIkxBWU9VVFRF
U1RTIEFQSVMiCi0gICAgZmlsZV9leHRlbnNpb25zID0gWyIuaHRtbCIsICIuaHRtIiwgIi5qcyIs
ICIueGh0IiwgIi54aHRtbCIsICIuc3ZnIl0KLSAgICBkZXNjcmlwdGlvbiA9ICJldmVudFNlbmRl
ci90ZXN0UnVubmVyL3dpbmRvdy5pbnRlcm5hbHMgdXNlZDsgdGhlc2UgYXJlIExheW91dFRlc3Rz
LXNwZWNpZmljIEFQSXMgKFdlYktpdC9CbGluaykiCi0KLWNsYXNzIFNwZWNpYWxQb3dlcnNSZWdl
eHAoUmVnZXhwKToKLSAgICBwYXR0ZXJuID0gYiJTcGVjaWFsUG93ZXJzIgotICAgIGVycm9yID0g
IlNQRUNJQUxQT1dFUlMgQVBJIgotICAgIGZpbGVfZXh0ZW5zaW9ucyA9IFsiLmh0bWwiLCAiLmh0
bSIsICIuanMiLCAiLnhodCIsICIueGh0bWwiLCAiLnN2ZyJdCi0gICAgZGVzY3JpcHRpb24gPSAi
U3BlY2lhbFBvd2VycyB1c2VkOyB0aGlzIGlzIGdlY2tvLXNwZWNpZmljIGFuZCBub3Qgc3VwcG9y
dGVkIGluIHdwdCIKLQotCi1yZWdleHBzID0gW2l0ZW0oKSBmb3IgaXRlbSBpbgotICAgICAgICAg
ICBbVHJhaWxpbmdXaGl0ZXNwYWNlUmVnZXhwLAotICAgICAgICAgICAgVGFic1JlZ2V4cCwKLSAg
ICAgICAgICAgIENSUmVnZXhwLAotICAgICAgICAgICAgU2V0VGltZW91dFJlZ2V4cCwKLSAgICAg
ICAgICAgIFczQ1Rlc3RPcmdSZWdleHAsCi0gICAgICAgICAgICBXZWJQbGF0Zm9ybVRlc3RSZWdl
eHAsCi0gICAgICAgICAgICBXZWJpZGwyUmVnZXhwLAotICAgICAgICAgICAgQ29uc29sZVJlZ2V4
cCwKLSAgICAgICAgICAgIEdlbmVyYXRlVGVzdHNSZWdleHAsCi0gICAgICAgICAgICBQcmludFJl
Z2V4cCwKLSAgICAgICAgICAgIExheW91dFRlc3RzUmVnZXhwLAotICAgICAgICAgICAgU3BlY2lh
bFBvd2Vyc1JlZ2V4cF1dCisKK3JlZ2V4cHMgPSBbaXRlbSgpIGZvciBpdGVtIGluICAjIHR5cGU6
IGlnbm9yZQorICAgICAgICAgICBbcnVsZXMuVHJhaWxpbmdXaGl0ZXNwYWNlUmVnZXhwLAorICAg
ICAgICAgICAgcnVsZXMuVGFic1JlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVzLkNSUmVnZXhwLAor
ICAgICAgICAgICAgcnVsZXMuU2V0VGltZW91dFJlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVzLlcz
Q1Rlc3RPcmdSZWdleHAsCisgICAgICAgICAgICBydWxlcy5XZWJQbGF0Zm9ybVRlc3RSZWdleHAs
CisgICAgICAgICAgICBydWxlcy5XZWJpZGwyUmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuQ29u
c29sZVJlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVzLkdlbmVyYXRlVGVzdHNSZWdleHAsCisgICAg
ICAgICAgICBydWxlcy5QcmludFJlZ2V4cCwKKyAgICAgICAgICAgIHJ1bGVzLkxheW91dFRlc3Rz
UmVnZXhwLAorICAgICAgICAgICAgcnVsZXMuTWlzc2luZ0RlcHNSZWdleHAsCisgICAgICAgICAg
ICBydWxlcy5TcGVjaWFsUG93ZXJzUmVnZXhwXV0KIAogZGVmIGNoZWNrX3JlZ2V4cF9saW5lKHJl
cG9fcm9vdCwgcGF0aCwgZik6Ci0gICAgZXJyb3JzID0gW10KKyAgICAjIHR5cGU6IChzdHIsIHN0
ciwgSU9bYnl0ZXNdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQorICAgIGVycm9ycyA9IFtdICAjIHR5
cGU6IExpc3RbcnVsZXMuRXJyb3JdCiAKICAgICBhcHBsaWNhYmxlX3JlZ2V4cHMgPSBbcmVnZXhw
IGZvciByZWdleHAgaW4gcmVnZXhwcyBpZiByZWdleHAuYXBwbGllcyhwYXRoKV0KIAogICAgIGZv
ciBpLCBsaW5lIGluIGVudW1lcmF0ZShmKToKICAgICAgICAgZm9yIHJlZ2V4cCBpbiBhcHBsaWNh
YmxlX3JlZ2V4cHM6CiAgICAgICAgICAgICBpZiByZWdleHAuc2VhcmNoKGxpbmUpOgotICAgICAg
ICAgICAgICAgIGVycm9ycy5hcHBlbmQoKHJlZ2V4cC5lcnJvciwgcmVnZXhwLmRlc2NyaXB0aW9u
LCBwYXRoLCBpKzEpKQorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKHJlZ2V4cC5uYW1l
LCByZWdleHAuZGVzY3JpcHRpb24sIHBhdGgsIGkrMSkpCiAKICAgICByZXR1cm4gZXJyb3JzCiAK
IGRlZiBjaGVja19wYXJzZWQocmVwb19yb290LCBwYXRoLCBmKToKKyAgICAjIHR5cGU6IChzdHIs
IHN0ciwgSU9bYnl0ZXNdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQogICAgIHNvdXJjZV9maWxlID0g
U291cmNlRmlsZShyZXBvX3Jvb3QsIHBhdGgsICIvIiwgY29udGVudHM9Zi5yZWFkKCkpCiAKLSAg
ICBlcnJvcnMgPSBbXQorICAgIGVycm9ycyA9IFtdICAjIHR5cGU6IExpc3RbcnVsZXMuRXJyb3Jd
CiAKICAgICBpZiBwYXRoLnN0YXJ0c3dpdGgoImNzcy8iKToKICAgICAgICAgaWYgKHNvdXJjZV9m
aWxlLnR5cGUgPT0gInN1cHBvcnQiIGFuZAogICAgICAgICAgICAgbm90IHNvdXJjZV9maWxlLm5h
bWVfaXNfbm9uX3Rlc3QgYW5kCiAgICAgICAgICAgICBub3Qgc291cmNlX2ZpbGUubmFtZV9pc19y
ZWZlcmVuY2UpOgotICAgICAgICAgICAgcmV0dXJuIFsoIlNVUFBPUlQtV1JPTkctRElSIiwgIlN1
cHBvcnQgZmlsZSBub3QgaW4gc3VwcG9ydCBkaXJlY3RvcnkiLCBwYXRoLCBOb25lKV0KKyAgICAg
ICAgICAgIHJldHVybiBbcnVsZXMuU3VwcG9ydFdyb25nRGlyLmVycm9yKHBhdGgpXQogCiAgICAg
ICAgIGlmIChzb3VyY2VfZmlsZS50eXBlICE9ICJzdXBwb3J0IiBhbmQKICAgICAgICAgICAgIG5v
dCBzb3VyY2VfZmlsZS5uYW1lX2lzX3JlZmVyZW5jZSBhbmQKICAgICAgICAgICAgIG5vdCBzb3Vy
Y2VfZmlsZS5zcGVjX2xpbmtzKToKLSAgICAgICAgICAgIHJldHVybiBbKCJNSVNTSU5HLUxJTksi
LCAiVGVzdGNhc2UgZmlsZSBtdXN0IGhhdmUgYSBsaW5rIHRvIGEgc3BlYyIsIHBhdGgsIE5vbmUp
XQorICAgICAgICAgICAgcmV0dXJuIFtydWxlcy5NaXNzaW5nTGluay5lcnJvcihwYXRoKV0KIAog
ICAgIGlmIHNvdXJjZV9maWxlLm5hbWVfaXNfbm9uX3Rlc3Q6CiAgICAgICAgIHJldHVybiBbXQpA
QCAtNDQ5LDMwICs0MjksMzEgQEAgZGVmIGNoZWNrX3BhcnNlZChyZXBvX3Jvb3QsIHBhdGgsIGYp
OgogICAgICAgICByZXR1cm4gW10KIAogICAgIGlmIHNvdXJjZV9maWxlLnJvb3QgaXMgTm9uZToK
LSAgICAgICAgcmV0dXJuIFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIs
IHBhdGgsIE5vbmUpXQorICAgICAgICByZXR1cm4gW3J1bGVzLlBhcnNlRmFpbGVkLmVycm9yKHBh
dGgpXQogCiAgICAgaWYgc291cmNlX2ZpbGUudHlwZSA9PSAibWFudWFsIiBhbmQgbm90IHNvdXJj
ZV9maWxlLm5hbWVfaXNfbWFudWFsOgotICAgICAgICBlcnJvcnMuYXBwZW5kKCgiQ09OVEVOVC1N
QU5VQUwiLCAiTWFudWFsIHRlc3Qgd2hvc2UgZmlsZW5hbWUgZG9lc24ndCBlbmQgaW4gJy1tYW51
YWwnIiwgcGF0aCwgTm9uZSkpCisgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuQ29udGVudE1h
bnVhbC5lcnJvcihwYXRoKSkKIAogICAgIGlmIHNvdXJjZV9maWxlLnR5cGUgPT0gInZpc3VhbCIg
YW5kIG5vdCBzb3VyY2VfZmlsZS5uYW1lX2lzX3Zpc3VhbDoKLSAgICAgICAgZXJyb3JzLmFwcGVu
ZCgoIkNPTlRFTlQtVklTVUFMIiwgIlZpc3VhbCB0ZXN0IHdob3NlIGZpbGVuYW1lIGRvZXNuJ3Qg
ZW5kIGluICctdmlzdWFsJyIsIHBhdGgsIE5vbmUpKQorICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1
bGVzLkNvbnRlbnRWaXN1YWwuZXJyb3IocGF0aCkpCiAKKyAgICBhYm91dF9ibGFua19wYXJ0cyA9
IHVybHNwbGl0KCJhYm91dDpibGFuayIpCiAgICAgZm9yIHJlZnRlc3Rfbm9kZSBpbiBzb3VyY2Vf
ZmlsZS5yZWZ0ZXN0X25vZGVzOgogICAgICAgICBocmVmID0gcmVmdGVzdF9ub2RlLmF0dHJpYi5n
ZXQoImhyZWYiLCAiIikuc3RyaXAoc3BhY2VfY2hhcnMpCiAgICAgICAgIHBhcnRzID0gdXJsc3Bs
aXQoaHJlZikKLSAgICAgICAgaWYgKHBhcnRzLnNjaGVtZSBvciBwYXJ0cy5uZXRsb2MpIGFuZCBw
YXJ0cyAhPSB1cmxzcGxpdCgiYWJvdXQ6YmxhbmsiKToKLSAgICAgICAgICAgIGVycm9ycy5hcHBl
bmQoKCJBQlNPTFVURS1VUkwtUkVGIiwKLSAgICAgICAgICAgICAgICAgICAgICJSZWZlcmVuY2Ug
dGVzdCB3aXRoIGEgcmVmZXJlbmNlIGZpbGUgc3BlY2lmaWVkIHZpYSBhbiBhYnNvbHV0ZSBVUkw6
ICclcyciICUgaHJlZiwgcGF0aCwgTm9uZSkpCisKKyAgICAgICAgaWYgcGFydHMgPT0gYWJvdXRf
YmxhbmtfcGFydHM6CisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGlmIChwYXJ0cy5z
Y2hlbWUgb3IgcGFydHMubmV0bG9jKToKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMu
QWJzb2x1dGVVcmxSZWYuZXJyb3IocGF0aCwgKGhyZWYsKSkpCiAgICAgICAgICAgICBjb250aW51
ZQogCiAgICAgICAgIHJlZl91cmwgPSB1cmxqb2luKHNvdXJjZV9maWxlLnVybCwgaHJlZikKICAg
ICAgICAgcmVmX3BhcnRzID0gdXJsc3BsaXQocmVmX3VybCkKIAogICAgICAgICBpZiBzb3VyY2Vf
ZmlsZS51cmwgPT0gcmVmX3VybDoKLSAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJTQU1FLUZJ
TEUtUkVGIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJSZWZlcmVuY2UgdGVzdCB3aGlj
aCBwb2ludHMgYXQgaXRzZWxmIGFzIGEgcmVmZXJlbmNlIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHBhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKSkKKyAgICAgICAg
ICAgIGVycm9ycy5hcHBlbmQocnVsZXMuU2FtZUZpbGVSZWYuZXJyb3IocGF0aCkpCiAgICAgICAg
ICAgICBjb250aW51ZQogCiAgICAgICAgIGFzc2VydCByZWZfcGFydHMucGF0aCAhPSAiIgpAQCAt
NDgxLDQ1ICs0NjIsMzkgQEAgZGVmIGNoZWNrX3BhcnNlZChyZXBvX3Jvb3QsIHBhdGgsIGYpOgog
ICAgICAgICByZWZlcmVuY2VfcmVsID0gcmVmdGVzdF9ub2RlLmF0dHJpYi5nZXQoInJlbCIsICIi
KQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShyZWZlcmVuY2VfZmlsZSk6Ci0gICAg
ICAgICAgICBlcnJvcnMuYXBwZW5kKCgiTk9OLUVYSVNURU5ULVJFRiIsCi0gICAgICAgICAgICAg
ICAgICAgICAiUmVmZXJlbmNlIHRlc3Qgd2l0aCBhIG5vbi1leGlzdGVudCAnJXMnIHJlbGF0aW9u
c2hpcCByZWZlcmVuY2U6ICclcyciICUgKHJlZmVyZW5jZV9yZWwsIGhyZWYpLCBwYXRoLCBOb25l
KSkKKyAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuTm9uZXhpc3RlbnRSZWYuZXJyb3Io
cGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHJlZmVyZW5jZV9yZWwsIGhyZWYpKSkKIAogICAgIGlmIGxlbihzb3VyY2VfZmlsZS50aW1l
b3V0X25vZGVzKSA+IDE6Ci0gICAgICAgIGVycm9ycy5hcHBlbmQoKCJNVUxUSVBMRS1USU1FT1VU
IiwgIk1vcmUgdGhhbiBvbmUgbWV0YSBuYW1lPSd0aW1lb3V0JyIsIHBhdGgsIE5vbmUpKQorICAg
ICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLk11bHRpcGxlVGltZW91dC5lcnJvcihwYXRoKSkKIAog
ICAgIGZvciB0aW1lb3V0X25vZGUgaW4gc291cmNlX2ZpbGUudGltZW91dF9ub2RlczoKICAgICAg
ICAgdGltZW91dF92YWx1ZSA9IHRpbWVvdXRfbm9kZS5hdHRyaWIuZ2V0KCJjb250ZW50IiwgIiIp
Lmxvd2VyKCkKICAgICAgICAgaWYgdGltZW91dF92YWx1ZSAhPSAibG9uZyI6Ci0gICAgICAgICAg
ICBlcnJvcnMuYXBwZW5kKCgiSU5WQUxJRC1USU1FT1VUIiwgIkludmFsaWQgdGltZW91dCB2YWx1
ZSAlcyIgJSB0aW1lb3V0X3ZhbHVlLCBwYXRoLCBOb25lKSkKKyAgICAgICAgICAgIGVycm9ycy5h
cHBlbmQocnVsZXMuSW52YWxpZFRpbWVvdXQuZXJyb3IocGF0aCwgKHRpbWVvdXRfdmFsdWUsKSkp
CiAKICAgICBpZiBzb3VyY2VfZmlsZS50ZXN0aGFybmVzc19ub2RlczoKICAgICAgICAgaWYgbGVu
KHNvdXJjZV9maWxlLnRlc3RoYXJuZXNzX25vZGVzKSA+IDE6Ci0gICAgICAgICAgICBlcnJvcnMu
YXBwZW5kKCgiTVVMVElQTEUtVEVTVEhBUk5FU1MiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIk1vcmUgdGhhbiBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMn
PiIsIHBhdGgsIE5vbmUpKQorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5NdWx0aXBs
ZVRlc3RoYXJuZXNzLmVycm9yKHBhdGgpKQogCiAgICAgICAgIHRlc3RoYXJuZXNzcmVwb3J0X25v
ZGVzID0gc291cmNlX2ZpbGUucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5
OS94aHRtbH1zY3JpcHRbQHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyddIikK
ICAgICAgICAgaWYgbm90IHRlc3RoYXJuZXNzcmVwb3J0X25vZGVzOgotICAgICAgICAgICAgZXJy
b3JzLmFwcGVuZCgoIk1JU1NJTkctVEVTVEhBUk5FU1NSRVBPUlQiLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIk1pc3NpbmcgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3Ny
ZXBvcnQuanMnPiIsIHBhdGgsIE5vbmUpKQorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxl
cy5NaXNzaW5nVGVzdGhhcm5lc3NSZXBvcnQuZXJyb3IocGF0aCkpCiAgICAgICAgIGVsc2U6CiAg
ICAgICAgICAgICBpZiBsZW4odGVzdGhhcm5lc3NyZXBvcnRfbm9kZXMpID4gMToKLSAgICAgICAg
ICAgICAgICBlcnJvcnMuYXBwZW5kKCgiTVVMVElQTEUtVEVTVEhBUk5FU1NSRVBPUlQiLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNb3JlIHRoYW4gb25lIDxzY3JpcHQgc3JjPScv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz4iLCBwYXRoLCBOb25lKSkKKyAgICAgICAg
ICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLk11bHRpcGxlVGVzdGhhcm5lc3NSZXBvcnQuZXJy
b3IocGF0aCkpCiAKICAgICAgICAgdGVzdGhhcm5lc3Njc3Nfbm9kZXMgPSBzb3VyY2VfZmlsZS5y
b290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sfWxpbmtbQGhyZWY9
Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuY3NzJ10iKQogICAgICAgICBpZiB0ZXN0aGFybmVzc2Nz
c19ub2RlczoKLSAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJQUkVTRU5ULVRFU1RIQVJORVNT
Q1NTIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeHBsaWNpdCBsaW5rIHRvIHRlc3Ro
YXJuZXNzLmNzcyBwcmVzZW50IiwgcGF0aCwgTm9uZSkpCisgICAgICAgICAgICBlcnJvcnMuYXBw
ZW5kKHJ1bGVzLlByZXNlbnRUZXN0aGFybmVzc0NTUy5lcnJvcihwYXRoKSkKIAogICAgICAgICBm
b3IgZWxlbWVudCBpbiBzb3VyY2VfZmlsZS52YXJpYW50X25vZGVzOgogICAgICAgICAgICAgaWYg
ImNvbnRlbnQiIG5vdCBpbiBlbGVtZW50LmF0dHJpYjoKLSAgICAgICAgICAgICAgICBlcnJvcnMu
YXBwZW5kKCgiVkFSSUFOVC1NSVNTSU5HIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiPG1ldGEgbmFtZT12YXJpYW50PiBtaXNzaW5nICdjb250ZW50JyBhdHRyaWJ1dGUiLCBwYXRo
LCBOb25lKSkKKyAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLlZhcmlhbnRNaXNz
aW5nLmVycm9yKHBhdGgpKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB2YXJp
YW50ID0gZWxlbWVudC5hdHRyaWJbImNvbnRlbnQiXQogICAgICAgICAgICAgICAgIGlmIHZhcmlh
bnQgIT0gIiIgYW5kIHZhcmlhbnRbMF0gbm90IGluICgiPyIsICIjIik6Ci0gICAgICAgICAgICAg
ICAgICAgIGVycm9ycy5hcHBlbmQoKCJNQUxGT1JNRUQtVkFSSUFOVCIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiVzIDxtZXRhIG5hbWU9dmFyaWFudD4gJ2NvbnRlbnQnIGF0dHJp
YnV0ZSBtdXN0IGJlIHRoZSBlbXB0eSBzdHJpbmcgb3Igc3RhcnQgd2l0aCAnPycgb3IgJyMnIiAl
IHBhdGgsIE5vbmUpKQorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLk1h
bGZvcm1lZFZhcmlhbnQuZXJyb3IocGF0aCwgKHBhdGgsKSkpCiAKICAgICAgICAgc2Vlbl9lbGVt
ZW50cyA9IHsidGltZW91dCI6IEZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0
aGFybmVzcyI6IEZhbHNlLApAQCAtNTMzLDggKzUwOCw3IEBAIGRlZiBjaGVja19wYXJzZWQocmVw
b19yb290LCBwYXRoLCBmKToKICAgICAgICAgICAgIGlmIHNvdXJjZV9maWxlLnRpbWVvdXRfbm9k
ZXMgYW5kIGVsZW0gPT0gc291cmNlX2ZpbGUudGltZW91dF9ub2Rlc1swXToKICAgICAgICAgICAg
ICAgICBzZWVuX2VsZW1lbnRzWyJ0aW1lb3V0Il0gPSBUcnVlCiAgICAgICAgICAgICAgICAgaWYg
c2Vlbl9lbGVtZW50c1sidGVzdGhhcm5lc3MiXToKLSAgICAgICAgICAgICAgICAgICAgZXJyb3Jz
LmFwcGVuZCgoIkxBVEUtVElNRU9VVCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICI8bWV0YSBuYW1lPXRpbWVvdXQ+IHNlZW4gYWZ0ZXIgdGVzdGhhcm5lc3MuanMgc2NyaXB0
IiwgcGF0aCwgTm9uZSkpCisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMu
TGF0ZVRpbWVvdXQuZXJyb3IocGF0aCkpCiAKICAgICAgICAgICAgIGVsaWYgZWxlbSA9PSBzb3Vy
Y2VfZmlsZS50ZXN0aGFybmVzc19ub2Rlc1swXToKICAgICAgICAgICAgICAgICBzZWVuX2VsZW1l
bnRzWyJ0ZXN0aGFybmVzcyJdID0gVHJ1ZQpAQCAtNTQyLDUyICs1MTYsNjQgQEAgZGVmIGNoZWNr
X3BhcnNlZChyZXBvX3Jvb3QsIHBhdGgsIGYpOgogICAgICAgICAgICAgZWxpZiB0ZXN0aGFybmVz
c3JlcG9ydF9ub2RlcyBhbmQgZWxlbSA9PSB0ZXN0aGFybmVzc3JlcG9ydF9ub2Rlc1swXToKICAg
ICAgICAgICAgICAgICBzZWVuX2VsZW1lbnRzWyJ0ZXN0aGFybmVzc3JlcG9ydCJdID0gVHJ1ZQog
ICAgICAgICAgICAgICAgIGlmIG5vdCBzZWVuX2VsZW1lbnRzWyJ0ZXN0aGFybmVzcyJdOgotICAg
ICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiRUFSTFktVEVTVEhBUk5FU1NSRVBPUlQi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdGhhcm5lc3NyZXBvcnQu
anMgc2NyaXB0IHNlZW4gYmVmb3JlIHRlc3RoYXJuZXNzLmpzIHNjcmlwdCIsIHBhdGgsIE5vbmUp
KQorICAgICAgICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLkVhcmx5VGVzdGhhcm5l
c3NSZXBvcnQuZXJyb3IocGF0aCkpCiAKICAgICAgICAgICAgIGlmIGFsbChzZWVuX2VsZW1lbnRz
W25hbWVdIGZvciBuYW1lIGluIHJlcXVpcmVkX2VsZW1lbnRzKToKICAgICAgICAgICAgICAgICBi
cmVhawogCiAgICAgaWYgc291cmNlX2ZpbGUudGVzdGRyaXZlcl9ub2RlczoKICAgICAgICAgaWYg
bGVuKHNvdXJjZV9maWxlLnRlc3Rkcml2ZXJfbm9kZXMpID4gMToKLSAgICAgICAgICAgIGVycm9y
cy5hcHBlbmQoKCJNVUxUSVBMRS1URVNURFJJVkVSIiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJNb3JlIHRoYW4gb25lIDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMn
PiIsIHBhdGgsIE5vbmUpKQorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5NdWx0aXBs
ZVRlc3Rkcml2ZXIuZXJyb3IocGF0aCkpCiAKICAgICAgICAgdGVzdGRyaXZlcl92ZW5kb3Jfbm9k
ZXMgPSBzb3VyY2VfZmlsZS5yb290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sfXNjcmlwdFtAc3JjPScvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzJ10iKQog
ICAgICAgICBpZiBub3QgdGVzdGRyaXZlcl92ZW5kb3Jfbm9kZXM6Ci0gICAgICAgICAgICBlcnJv
cnMuYXBwZW5kKCgiTUlTU0lORy1URVNURFJJVkVSLVZFTkRPUiIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAiTWlzc2luZyA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0ZHJpdmVyLXZl
bmRvci5qcyc+IiwgcGF0aCwgTm9uZSkpCisgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVz
Lk1pc3NpbmdUZXN0ZHJpdmVyVmVuZG9yLmVycm9yKHBhdGgpKQogICAgICAgICBlbHNlOgogICAg
ICAgICAgICAgaWYgbGVuKHRlc3Rkcml2ZXJfdmVuZG9yX25vZGVzKSA+IDE6Ci0gICAgICAgICAg
ICAgICAgZXJyb3JzLmFwcGVuZCgoIk1VTFRJUExFLVRFU1REUklWRVItVkVORE9SIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiTW9yZSB0aGFuIG9uZSA8c2NyaXB0IHNyYz0nL3Jl
c291cmNlcy90ZXN0ZHJpdmVyLXZlbmRvci5qcyc+IiwgcGF0aCwgTm9uZSkpCisgICAgICAgICAg
ICAgICAgZXJyb3JzLmFwcGVuZChydWxlcy5NdWx0aXBsZVRlc3Rkcml2ZXJWZW5kb3IuZXJyb3Io
cGF0aCkpCiAKICAgICBmb3IgZWxlbWVudCBpbiBzb3VyY2VfZmlsZS5yb290LmZpbmRhbGwoIi4v
L3todHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sfXNjcmlwdFtAc3JjXSIpOgogICAgICAgICBz
cmMgPSBlbGVtZW50LmF0dHJpYlsic3JjIl0KLSAgICAgICAgZm9yIG5hbWUgaW4gWyJ0ZXN0aGFy
bmVzcyIsICJ0ZXN0aGFybmVzc3JlcG9ydCIsICJ0ZXN0ZHJpdmVyIiwgInRlc3Rkcml2ZXItdmVu
ZG9yIl06Ci0gICAgICAgICAgICBpZiAiJXMuanMiICUgbmFtZSA9PSBzcmMgb3IgKCIvJXMuanMi
ICUgbmFtZSBpbiBzcmMgYW5kIHNyYyAhPSAiL3Jlc291cmNlcy8lcy5qcyIgJSBuYW1lKToKLSAg
ICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiJXMtUEFUSCIgJSBuYW1lLnVwcGVyKCksICIl
cy5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiAlIG5hbWUsIHBhdGgsIE5vbmUp
KQorCisgICAgICAgIGRlZiBpbmNvcnJlY3RfcGF0aChzY3JpcHQsIHNyYyk6CisgICAgICAgICAg
ICAjIHR5cGU6IChUZXh0LCBUZXh0KSAtPiBib29sCisgICAgICAgICAgICByZXR1cm4gKHNjcmlw
dCA9PSBzcmMgb3IKKyAgICAgICAgICAgICAgICAoIi8lcyIgJSBzY3JpcHQgaW4gc3JjIGFuZCBz
cmMgIT0gIi9yZXNvdXJjZXMvJXMiICUgc2NyaXB0KSkKKworICAgICAgICBpZiBpbmNvcnJlY3Rf
cGF0aCgidGVzdGhhcm5lc3MuanMiLCBzcmMpOgorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChy
dWxlcy5UZXN0aGFybmVzc1BhdGguZXJyb3IocGF0aCkpCisKKyAgICAgICAgaWYgaW5jb3JyZWN0
X3BhdGgoInRlc3RoYXJuZXNzcmVwb3J0LmpzIiwgc3JjKToKKyAgICAgICAgICAgIGVycm9ycy5h
cHBlbmQocnVsZXMuVGVzdGhhcm5lc3NSZXBvcnRQYXRoLmVycm9yKHBhdGgpKQorCisgICAgICAg
IGlmIGluY29ycmVjdF9wYXRoKCJ0ZXN0ZHJpdmVyLmpzIiwgc3JjKToKKyAgICAgICAgICAgIGVy
cm9ycy5hcHBlbmQocnVsZXMuVGVzdGRyaXZlclBhdGguZXJyb3IocGF0aCkpCisKKyAgICAgICAg
aWYgaW5jb3JyZWN0X3BhdGgoInRlc3Rkcml2ZXItdmVuZG9yLmpzIiwgc3JjKToKKyAgICAgICAg
ICAgIGVycm9ycy5hcHBlbmQocnVsZXMuVGVzdGRyaXZlclZlbmRvclBhdGguZXJyb3IocGF0aCkp
CiAKICAgICByZXR1cm4gZXJyb3JzCiAKLWNsYXNzIEFTVENoZWNrKG9iamVjdCk6Ci0gICAgX19t
ZXRhY2xhc3NfXyA9IGFiYy5BQkNNZXRhCi0gICAgZXJyb3IgPSBOb25lCi0gICAgZGVzY3JpcHRp
b24gPSBOb25lCitjbGFzcyBBU1RDaGVjayh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0YSkpOgor
ICAgIEBhYmMuYWJzdHJhY3Rwcm9wZXJ0eQorICAgIGRlZiBydWxlKHNlbGYpOgorICAgICAgICAj
IHR5cGU6ICgpIC0+IFR5cGVbcnVsZXMuUnVsZV0KKyAgICAgICAgcGFzcwogCiAgICAgQGFiYy5h
YnN0cmFjdG1ldGhvZAogICAgIGRlZiBjaGVjayhzZWxmLCByb290KToKKyAgICAgICAgIyB0eXBl
OiAoYXN0LkFTVCkgLT4gTGlzdFtpbnRdCiAgICAgICAgIHBhc3MKIAogY2xhc3MgT3Blbk1vZGVD
aGVjayhBU1RDaGVjayk6Ci0gICAgZXJyb3IgPSAiT1BFTi1OTy1NT0RFIgotICAgIGRlc2NyaXB0
aW9uID0gIkZpbGUgb3BlbmVkIHdpdGhvdXQgcHJvdmlkaW5nIGFuIGV4cGxpY2l0IG1vZGUgKG5v
dGU6IGJpbmFyeSBmaWxlcyBtdXN0IGJlIHJlYWQgd2l0aCAnYicgaW4gdGhlIG1vZGUgZmxhZ3Mp
IgorICAgIHJ1bGUgPSBydWxlcy5PcGVuTm9Nb2RlCiAKICAgICBkZWYgY2hlY2soc2VsZiwgcm9v
dCk6CisgICAgICAgICMgdHlwZTogKGFzdC5BU1QpIC0+IExpc3RbaW50XQogICAgICAgICBlcnJv
cnMgPSBbXQogICAgICAgICBmb3Igbm9kZSBpbiBhc3Qud2Fsayhyb290KToKICAgICAgICAgICAg
IGlmIGlzaW5zdGFuY2Uobm9kZSwgYXN0LkNhbGwpOgotICAgICAgICAgICAgICAgIGlmIGhhc2F0
dHIobm9kZS5mdW5jLCAiaWQiKSBhbmQgbm9kZS5mdW5jLmlkIGluICgib3BlbiIsICJmaWxlIik6
CisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihub2RlLmZ1bmMsICJpZCIpIGFuZCBub2RlLmZ1
bmMuaWQgaW4gKCJvcGVuIiwgImZpbGUiKTogICMgdHlwZTogaWdub3JlCiAgICAgICAgICAgICAg
ICAgICAgIGlmIChsZW4obm9kZS5hcmdzKSA8IDIgYW5kCiAgICAgICAgICAgICAgICAgICAgICAg
ICBhbGwoaXRlbS5hcmcgIT0gIm1vZGUiIGZvciBpdGVtIGluIG5vZGUua2V5d29yZHMpKToKICAg
ICAgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQobm9kZS5saW5lbm8pCkBAIC01OTYs
MjYgKzU4MiwyOCBAQCBjbGFzcyBPcGVuTW9kZUNoZWNrKEFTVENoZWNrKToKIGFzdF9jaGVja2Vy
cyA9IFtpdGVtKCkgZm9yIGl0ZW0gaW4gW09wZW5Nb2RlQ2hlY2tdXQogCiBkZWYgY2hlY2tfcHl0
aG9uX2FzdChyZXBvX3Jvb3QsIHBhdGgsIGYpOgorICAgICMgdHlwZTogKHN0ciwgc3RyLCBJT1ti
eXRlc10pIC0+IExpc3RbcnVsZXMuRXJyb3JdCiAgICAgaWYgbm90IHBhdGguZW5kc3dpdGgoIi5w
eSIpOgogICAgICAgICByZXR1cm4gW10KIAogICAgIHRyeToKICAgICAgICAgcm9vdCA9IGFzdC5w
YXJzZShmLnJlYWQoKSkKICAgICBleGNlcHQgU3ludGF4RXJyb3IgYXMgZToKLSAgICAgICAgcmV0
dXJuIFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIHBhdGgsIGUubGlu
ZW5vKV0KKyAgICAgICAgcmV0dXJuIFtydWxlcy5QYXJzZUZhaWxlZC5lcnJvcihwYXRoLCBsaW5l
X25vPWUubGluZW5vKV0KIAogICAgIGVycm9ycyA9IFtdCiAgICAgZm9yIGNoZWNrZXIgaW4gYXN0
X2NoZWNrZXJzOgogICAgICAgICBmb3IgbGluZW5vIGluIGNoZWNrZXIuY2hlY2socm9vdCk6Ci0g
ICAgICAgICAgICBlcnJvcnMuYXBwZW5kKChjaGVja2VyLmVycm9yLCBjaGVja2VyLmRlc2NyaXB0
aW9uLCBwYXRoLCBsaW5lbm8pKQorICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChjaGVja2VyLnJ1
bGUuZXJyb3IocGF0aCwgbGluZV9ubz1saW5lbm8pKQogICAgIHJldHVybiBlcnJvcnMKIAogCi1i
cm9rZW5fanNfbWV0YWRhdGEgPSByZS5jb21waWxlKGIiLy9ccypNRVRBOiIpCi1icm9rZW5fcHl0
aG9uX21ldGFkYXRhID0gcmUuY29tcGlsZShiIiNccypNRVRBOiIpCiticm9rZW5fanNfbWV0YWRh
dGEgPSByZS5jb21waWxlKGJyIi8vXHMqTUVUQToiKQorYnJva2VuX3B5dGhvbl9tZXRhZGF0YSA9
IHJlLmNvbXBpbGUoYnIiI1xzKk1FVEE6IikKIAogCiBkZWYgY2hlY2tfZ2xvYmFsX21ldGFkYXRh
KHZhbHVlKToKKyAgICAjIHR5cGU6IChzdHIpIC0+IEl0ZXJhYmxlW1R1cGxlW1R5cGVbcnVsZXMu
UnVsZV0sIFR1cGxlW0FueSwgLi4uXV1dCiAgICAgZ2xvYmFsX3ZhbHVlcyA9IHtpdGVtLnN0cmlw
KCkgZm9yIGl0ZW0gaW4gdmFsdWUuc3BsaXQoYiIsIikgaWYgaXRlbS5zdHJpcCgpfQogCiAgICAg
aW5jbHVkZWRfdmFyaWFudHMgPSBzZXQudW5pb24oZ2V0X2RlZmF1bHRfYW55X3ZhcmlhbnRzKCks
CkBAIC02MjUsMjIgKzYxMywyNSBAQCBkZWYgY2hlY2tfZ2xvYmFsX21ldGFkYXRhKHZhbHVlKToK
ICAgICAgICAgaWYgZ2xvYmFsX3ZhbHVlLnN0YXJ0c3dpdGgoYiIhIik6CiAgICAgICAgICAgICBl
eGNsdWRlZF92YWx1ZSA9IGdsb2JhbF92YWx1ZVsxOl0KICAgICAgICAgICAgIGlmIG5vdCBnZXRf
YW55X3ZhcmlhbnRzKGV4Y2x1ZGVkX3ZhbHVlKToKLSAgICAgICAgICAgICAgICB5aWVsZCAoIlVO
S05PV04tR0xPQkFMLU1FVEFEQVRBIiwgIlVuZXhwZWN0ZWQgdmFsdWUgZm9yIGdsb2JhbCBtZXRh
ZGF0YSIpCisgICAgICAgICAgICAgICAgeWllbGQgKHJ1bGVzLlVua25vd25HbG9iYWxNZXRhZGF0
YSwgKCkpCiAKICAgICAgICAgICAgIGVsaWYgZXhjbHVkZWRfdmFsdWUgaW4gZ2xvYmFsX3ZhbHVl
czoKLSAgICAgICAgICAgICAgICB5aWVsZCAoIkJST0tFTi1HTE9CQUwtTUVUQURBVEEiLCAiQ2Fu
bm90IHNwZWNpZnkgYm90aCAlcyBhbmQgJXMiICUgKGdsb2JhbF92YWx1ZSwgZXhjbHVkZWRfdmFs
dWUpKQorICAgICAgICAgICAgICAgIHlpZWxkIChydWxlcy5Ccm9rZW5HbG9iYWxNZXRhZGF0YSwK
KyAgICAgICAgICAgICAgICAgICAgICAgKCgiQ2Fubm90IHNwZWNpZnkgYm90aCAlcyBhbmQgJXMi
ICUgKGdsb2JhbF92YWx1ZSwgZXhjbHVkZWRfdmFsdWUpKSwpKQogCiAgICAgICAgICAgICBlbHNl
OgogICAgICAgICAgICAgICAgIGV4Y2x1ZGVkX3ZhcmlhbnRzID0gZ2V0X2FueV92YXJpYW50cyhl
eGNsdWRlZF92YWx1ZSkKICAgICAgICAgICAgICAgICBpZiBub3QgKGV4Y2x1ZGVkX3ZhcmlhbnRz
ICYgaW5jbHVkZWRfdmFyaWFudHMpOgotICAgICAgICAgICAgICAgICAgICB5aWVsZCAoIkJST0tF
Ti1HTE9CQUwtTUVUQURBVEEiLCAiQ2Fubm90IGV4Y2x1ZGUgJXMgaWYgaXQgaXMgbm90IGluY2x1
ZGVkIiAlIChleGNsdWRlZF92YWx1ZSwpKQorICAgICAgICAgICAgICAgICAgICB5aWVsZCAocnVs
ZXMuQnJva2VuR2xvYmFsTWV0YWRhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKCJD
YW5ub3QgZXhjbHVkZSAlcyBpZiBpdCBpcyBub3QgaW5jbHVkZWQiICUgKGV4Y2x1ZGVkX3ZhbHVl
LCkpLCkpCiAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIG5vdCBnZXRfYW55X3Zhcmlh
bnRzKGdsb2JhbF92YWx1ZSk6Ci0gICAgICAgICAgICAgICAgeWllbGQgKCJVTktOT1dOLUdMT0JB
TC1NRVRBREFUQSIsICJVbmV4cGVjdGVkIHZhbHVlIGZvciBnbG9iYWwgbWV0YWRhdGEiKQorICAg
ICAgICAgICAgICAgIHlpZWxkIChydWxlcy5Vbmtub3duR2xvYmFsTWV0YWRhdGEsICgpKQogCiAK
IGRlZiBjaGVja19zY3JpcHRfbWV0YWRhdGEocmVwb19yb290LCBwYXRoLCBmKToKKyAgICAjIHR5
cGU6IChzdHIsIHN0ciwgSU9bYnl0ZXNdKSAtPiBMaXN0W3J1bGVzLkVycm9yXQogICAgIGlmIHBh
dGguZW5kc3dpdGgoKCIud29ya2VyLmpzIiwgIi5hbnkuanMiKSk6CiAgICAgICAgIG1ldGFfcmUg
PSBqc19tZXRhX3JlCiAgICAgICAgIGJyb2tlbl9tZXRhZGF0YSA9IGJyb2tlbl9qc19tZXRhZGF0
YQpAQCAtNjU5LDEwICs2NTAsMTIgQEAgZGVmIGNoZWNrX3NjcmlwdF9tZXRhZGF0YShyZXBvX3Jv
b3QsIHBhdGgsIGYpOgogICAgICAgICBpZiBtOgogICAgICAgICAgICAga2V5LCB2YWx1ZSA9IG0u
Z3JvdXBzKCkKICAgICAgICAgICAgIGlmIGtleSA9PSBiImdsb2JhbCI6Ci0gICAgICAgICAgICAg
ICAgZXJyb3JzLmV4dGVuZCgoa2luZCwgbWVzc2FnZSwgcGF0aCwgaWR4ICsgMSkgZm9yIChraW5k
LCBtZXNzYWdlKSBpbiBjaGVja19nbG9iYWxfbWV0YWRhdGEodmFsdWUpKQorICAgICAgICAgICAg
ICAgIGZvciBydWxlX2NsYXNzLCBjb250ZXh0IGluIGNoZWNrX2dsb2JhbF9tZXRhZGF0YSh2YWx1
ZSk6CisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZV9jbGFzcy5lcnJvcihw
YXRoLCBjb250ZXh0LCBpZHggKyAxKSkKICAgICAgICAgICAgIGVsaWYga2V5ID09IGIidGltZW91
dCI6CiAgICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0gYiJsb25nIjoKLSAgICAgICAgICAgICAg
ICAgICAgZXJyb3JzLmFwcGVuZCgoIlVOS05PV04tVElNRU9VVC1NRVRBREFUQSIsICJVbmV4cGVj
dGVkIHZhbHVlIGZvciB0aW1lb3V0IG1ldGFkYXRhIiwgcGF0aCwgaWR4ICsgMSkpCisgICAgICAg
ICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuVW5rbm93blRpbWVvdXRNZXRhZGF0YS5l
cnJvcihwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbGluZV9ubz1pZHggKyAxKSkKICAgICAgICAgICAgIGVs
aWYga2V5ID09IGIidGl0bGUiOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIGVs
aWYga2V5ID09IGIic2NyaXB0IjoKQEAgLTY3MCwyMiArNjYzLDQzIEBAIGRlZiBjaGVja19zY3Jp
cHRfbWV0YWRhdGEocmVwb19yb290LCBwYXRoLCBmKToKICAgICAgICAgICAgIGVsaWYga2V5ID09
IGIidmFyaWFudCI6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBlcnJvcnMuYXBwZW5kKCgiVU5LTk9XTi1NRVRBREFUQSIsICJVbmV4cGVj
dGVkIGtpbmQgb2YgbWV0YWRhdGEiLCBwYXRoLCBpZHggKyAxKSkKKyAgICAgICAgICAgICAgICBl
cnJvcnMuYXBwZW5kKHJ1bGVzLlVua25vd25NZXRhZGF0YS5lcnJvcihwYXRoLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVfbm89
aWR4ICsgMSkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkb25lID0gVHJ1ZQogCiAgICAg
ICAgIGlmIGRvbmU6CiAgICAgICAgICAgICBpZiBtZXRhX3JlLm1hdGNoKGxpbmUpOgotICAgICAg
ICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJTVFJBWS1NRVRBREFUQSIsICJNZXRhZGF0YSBjb21t
ZW50cyBzaG91bGQgc3RhcnQgdGhlIGZpbGUiLCBwYXRoLCBpZHggKyAxKSkKKyAgICAgICAgICAg
ICAgICBlcnJvcnMuYXBwZW5kKHJ1bGVzLlN0cmF5TWV0YWRhdGEuZXJyb3IocGF0aCwgbGluZV9u
bz1pZHggKyAxKSkKICAgICAgICAgICAgIGVsaWYgbWV0YV9yZS5zZWFyY2gobGluZSk6Ci0gICAg
ICAgICAgICAgICAgZXJyb3JzLmFwcGVuZCgoIklOREVOVEVELU1FVEFEQVRBIiwgIk1ldGFkYXRh
IGNvbW1lbnRzIHNob3VsZCBzdGFydCB0aGUgbGluZSIsIHBhdGgsIGlkeCArIDEpKQorICAgICAg
ICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuSW5kZW50ZWRNZXRhZGF0YS5lcnJvcihwYXRo
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lX25vPWlkeCArIDEpKQogICAgICAgICAgICAgZWxpZiBicm9rZW5fbWV0YWRhdGEu
c2VhcmNoKGxpbmUpOgotICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoKCJCUk9LRU4tTUVU
QURBVEEiLCAiTWV0YWRhdGEgY29tbWVudCBpcyBub3QgZm9ybWF0dGVkIGNvcnJlY3RseSIsIHBh
dGgsIGlkeCArIDEpKQorICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuQnJva2Vu
TWV0YWRhdGEuZXJyb3IocGF0aCwgbGluZV9ubz1pZHggKyAxKSkKIAogICAgIHJldHVybiBlcnJv
cnMKIAogCithaGVtX2ZvbnRfcmUgPSByZS5jb21waWxlKGIiZm9udC4qOi4qYWhlbSIsIGZsYWdz
PXJlLklHTk9SRUNBU0UpCisjIEFoZW0gY2FuIGFwcGVhciBlaXRoZXIgaW4gdGhlIGdsb2JhbCBs
b2NhdGlvbiBvciBpbiB0aGUgc3VwcG9ydAorIyBkaXJlY3RvcnkgZm9yIGxlZ2FjeSBNb3ppbGxh
IGltcG9ydHMKK2FoZW1fc3R5bGVzaGVldF9yZSA9IHJlLmNvbXBpbGUoYiJcL2ZvbnRzXC9haGVt
XC5jc3N8c3VwcG9ydFwvYWhlbS5jc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmbGFncz1yZS5JR05PUkVDQVNFKQorCisKK2RlZiBjaGVja19haGVtX3N5c3RlbV9mb250KHJl
cG9fcm9vdCwgcGF0aCwgZik6CisgICAgIyB0eXBlOiAoc3RyLCBzdHIsIElPW2J5dGVzXSkgLT4g
TGlzdFtydWxlcy5FcnJvcl0KKyAgICBpZiBub3QgcGF0aC5lbmRzd2l0aCgoIi5odG1sIiwgIi5o
dG0iLCAiLnhodCIsICIueGh0bWwiKSk6CisgICAgICAgIHJldHVybiBbXQorICAgIGNvbnRlbnRz
ID0gZi5yZWFkKCkKKyAgICBlcnJvcnMgPSBbXQorICAgIGlmIGFoZW1fZm9udF9yZS5zZWFyY2go
Y29udGVudHMpIGFuZCBub3QgYWhlbV9zdHlsZXNoZWV0X3JlLnNlYXJjaChjb250ZW50cyk6Cisg
ICAgICAgIGVycm9ycy5hcHBlbmQocnVsZXMuQWhlbVN5c3RlbUZvbnQuZXJyb3IocGF0aCkpCisg
ICAgcmV0dXJuIGVycm9ycworCisKIGRlZiBjaGVja19wYXRoKHJlcG9fcm9vdCwgcGF0aCk6Cisg
ICAgIyB0eXBlOiAoc3RyLCBzdHIpIC0+IExpc3RbcnVsZXMuRXJyb3JdCiAgICAgIiIiCiAgICAg
UnVucyBsaW50cyB0aGF0IGNoZWNrIHRoZSBmaWxlIHBhdGguCiAKQEAgLTcwMSw2ICs3MTUsNyBA
QCBkZWYgY2hlY2tfcGF0aChyZXBvX3Jvb3QsIHBhdGgpOgogCiAKIGRlZiBjaGVja19hbGxfcGF0
aHMocmVwb19yb290LCBwYXRocyk6CisgICAgIyB0eXBlOiAoc3RyLCBMaXN0W3N0cl0pIC0+IExp
c3RbcnVsZXMuRXJyb3JdCiAgICAgIiIiCiAgICAgUnVucyBsaW50cyB0aGF0IGNoZWNrIGFsbCBw
YXRocyBnbG9iYWxseS4KIApAQCAtNzE2LDYgKzczMSw3IEBAIGRlZiBjaGVja19hbGxfcGF0aHMo
cmVwb19yb290LCBwYXRocyk6CiAKIAogZGVmIGNoZWNrX2ZpbGVfY29udGVudHMocmVwb19yb290
LCBwYXRoLCBmKToKKyAgICAjIHR5cGU6IChzdHIsIHN0ciwgSU9bYnl0ZXNdKSAtPiBMaXN0W3J1
bGVzLkVycm9yXQogICAgICIiIgogICAgIFJ1bnMgbGludHMgdGhhdCBjaGVjayB0aGUgZmlsZSBj
b250ZW50cy4KIApAQCAtNzMzLDYgKzc0OSw4IEBAIGRlZiBjaGVja19maWxlX2NvbnRlbnRzKHJl
cG9fcm9vdCwgcGF0aCwgZik6CiAKIAogZGVmIG91dHB1dF9lcnJvcnNfdGV4dChlcnJvcnMpOgor
ICAgICMgdHlwZTogKExpc3RbcnVsZXMuRXJyb3JdKSAtPiBOb25lCisgICAgYXNzZXJ0IGxvZ2dl
ciBpcyBub3QgTm9uZQogICAgIGZvciBlcnJvcl90eXBlLCBkZXNjcmlwdGlvbiwgcGF0aCwgbGlu
ZV9udW1iZXIgaW4gZXJyb3JzOgogICAgICAgICBwb3Nfc3RyaW5nID0gcGF0aAogICAgICAgICBp
ZiBsaW5lX251bWJlcjoKQEAgLTc0MSw4ICs3NTksMTAgQEAgZGVmIG91dHB1dF9lcnJvcnNfdGV4
dChlcnJvcnMpOgogCiAKIGRlZiBvdXRwdXRfZXJyb3JzX21hcmtkb3duKGVycm9ycyk6CisgICAg
IyB0eXBlOiAoTGlzdFtydWxlcy5FcnJvcl0pIC0+IE5vbmUKICAgICBpZiBub3QgZXJyb3JzOgog
ICAgICAgICByZXR1cm4KKyAgICBhc3NlcnQgbG9nZ2VyIGlzIG5vdCBOb25lCiAgICAgaGVhZGlu
ZyA9ICIiIkdvdCBsaW50IGVycm9yczoKIAogfCBFcnJvciBUeXBlIHwgUG9zaXRpb24gfCBNZXNz
YWdlIHwKQEAgLTc1NywxNSArNzc3LDE4IEBAIGRlZiBvdXRwdXRfZXJyb3JzX21hcmtkb3duKGVy
cm9ycyk6CiAKIAogZGVmIG91dHB1dF9lcnJvcnNfanNvbihlcnJvcnMpOgorICAgICMgdHlwZTog
KExpc3RbcnVsZXMuRXJyb3JdKSAtPiBOb25lCiAgICAgZm9yIGVycm9yX3R5cGUsIGVycm9yLCBw
YXRoLCBsaW5lX251bWJlciBpbiBlcnJvcnM6CiAgICAgICAgIHByaW50KGpzb24uZHVtcHMoeyJw
YXRoIjogcGF0aCwgImxpbmVubyI6IGxpbmVfbnVtYmVyLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAicnVsZSI6IGVycm9yX3R5cGUsICJtZXNzYWdlIjogZXJyb3J9KSkKIAogCiBkZWYgb3V0
cHV0X2Vycm9yX2NvdW50KGVycm9yX2NvdW50KToKKyAgICAjIHR5cGU6IChEaWN0W1RleHQsIGlu
dF0pIC0+IE5vbmUKICAgICBpZiBub3QgZXJyb3JfY291bnQ6CiAgICAgICAgIHJldHVybgogCisg
ICAgYXNzZXJ0IGxvZ2dlciBpcyBub3QgTm9uZQogICAgIGJ5X3R5cGUgPSAiICIuam9pbigiJXM6
ICVkIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gZXJyb3JfY291bnQuaXRlbXMoKSkKICAgICBjb3VudCA9
IHN1bShlcnJvcl9jb3VudC52YWx1ZXMoKSkKICAgICBsb2dnZXIuaW5mbygiIikKQEAgLTc3Niwx
NSArNzk5LDE3IEBAIGRlZiBvdXRwdXRfZXJyb3JfY291bnQoZXJyb3JfY291bnQpOgogCiAKIGRl
ZiBjaGFuZ2VkX2ZpbGVzKHdwdF9yb290KToKKyAgICAjIHR5cGU6IChzdHIpIC0+IExpc3RbVGV4
dF0KICAgICByZXZpc2ggPSB0ZXN0ZmlsZXMuZ2V0X3JldmlzaChyZXZpc2g9Tm9uZSkKLSAgICBj
aGFuZ2VkLCBfID0gdGVzdGZpbGVzLmZpbGVzX2NoYW5nZWQocmV2aXNoLCBzZXQoKSwgaW5jbHVk
ZV91bmNvbW1pdHRlZD1UcnVlLCBpbmNsdWRlX25ldz1UcnVlKQorICAgIGNoYW5nZWQsIF8gPSB0
ZXN0ZmlsZXMuZmlsZXNfY2hhbmdlZChyZXZpc2gsIE5vbmUsIGluY2x1ZGVfdW5jb21taXR0ZWQ9
VHJ1ZSwgaW5jbHVkZV9uZXc9VHJ1ZSkKICAgICByZXR1cm4gW29zLnBhdGgucmVscGF0aChpdGVt
LCB3cHRfcm9vdCkgZm9yIGl0ZW0gaW4gY2hhbmdlZF0KIAogCiBkZWYgbGludF9wYXRocyhrd2Fy
Z3MsIHdwdF9yb290KToKLSAgICBpZiBrd2FyZ3MuZ2V0KCJwYXRocyIpOgorICAgICMgdHlwZTog
KERpY3Rbc3RyLCBBbnldLCBzdHIpIC0+IExpc3Rbc3RyXQorICAgIGlmIGt3YXJncy5nZXQoc3Ry
KCJwYXRocyIpKToKICAgICAgICAgcGF0aHMgPSBbXQotICAgICAgICBmb3IgcGF0aCBpbiBrd2Fy
Z3MuZ2V0KCJwYXRocyIpOgorICAgICAgICBmb3IgcGF0aCBpbiBrd2FyZ3MuZ2V0KHN0cigicGF0
aHMiKSwgW10pOgogICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICAg
ICAgICAgICBwYXRoX2RpciA9IGxpc3QoYWxsX2ZpbGVzeXN0ZW1fcGF0aHMod3B0X3Jvb3QsIHBh
dGgpKQogICAgICAgICAgICAgICAgIHBhdGhzLmV4dGVuZChwYXRoX2RpcikKQEAgLTc5Miw3ICs4
MTcsNyBAQCBkZWYgbGludF9wYXRocyhrd2FyZ3MsIHdwdF9yb290KToKICAgICAgICAgICAgICAg
ICBwYXRocy5hcHBlbmQob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguYWJzcGF0aChwYXRoKSwgd3B0
X3Jvb3QpKQogCiAKLSAgICBlbGlmIGt3YXJnc1siYWxsIl06CisgICAgZWxpZiBrd2FyZ3Nbc3Ry
KCJhbGwiKV06CiAgICAgICAgIHBhdGhzID0gbGlzdChhbGxfZmlsZXN5c3RlbV9wYXRocyh3cHRf
cm9vdCkpCiAgICAgZWxzZToKICAgICAgICAgY2hhbmdlZF9wYXRocyA9IGNoYW5nZWRfZmlsZXMo
d3B0X3Jvb3QpCkBAIC04MDIsMTMgKzgyNywxNCBAQCBkZWYgbGludF9wYXRocyhrd2FyZ3MsIHdw
dF9yb290KToKICAgICAgICAgICAgIGlmIHBhdGggPT0gImxpbnQud2hpdGVsaXN0IiBvciBwYXRo
LnN0YXJ0c3dpdGgoInRvb2xzL2xpbnQvIik6CiAgICAgICAgICAgICAgICAgZm9yY2VfYWxsID0g
VHJ1ZQogICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHBhdGhzID0gKGxpc3QoY2hhbmdl
ZF9wYXRocykgaWYgbm90IGZvcmNlX2FsbAorICAgICAgICBwYXRocyA9IChsaXN0KGNoYW5nZWRf
cGF0aHMpIGlmIG5vdCBmb3JjZV9hbGwgICMgdHlwZTogaWdub3JlCiAgICAgICAgICAgICAgICAg
IGVsc2UgbGlzdChhbGxfZmlsZXN5c3RlbV9wYXRocyh3cHRfcm9vdCkpKQogCiAgICAgcmV0dXJu
IHBhdGhzCiAKIAogZGVmIGNyZWF0ZV9wYXJzZXIoKToKKyAgICAjIHR5cGU6ICgpIC0+IGFyZ3Bh
cnNlLkFyZ3VtZW50UGFyc2VyCiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIo
KQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoInBhdGhzIiwgbmFyZ3M9IioiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0iTGlzdCBvZiBwYXRocyB0byBsaW50IikKQEAgLTgxOCw0MiAr
ODQ0LDUyIEBAIGRlZiBjcmVhdGVfcGFyc2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJPdXRwdXQgbWFya2Rvd24iKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tcmVwby1y
b290IiwgaGVscD0iVGhlIFdQVCBkaXJlY3RvcnkuIFVzZSB0aGlzIgogICAgICAgICAgICAgICAg
ICAgICAgICAgIm9wdGlvbiBpZiB0aGUgbGludCBzY3JpcHQgZXhpc3RzIG91dHNpZGUgdGhlIHJl
cG9zaXRvcnkiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0taWdub3JlLWdsb2IiLCBoZWxw
PSJBZGRpdGlvbmFsIGZpbGUgZ2xvYiB0byBpZ25vcmUuIikKICAgICBwYXJzZXIuYWRkX2FyZ3Vt
ZW50KCItLWFsbCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9IklmIG5vIHBhdGhzIGFyZSBw
YXNzZWQsIHRyeSB0byBsaW50IHRoZSB3aG9sZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAi
d29ya2luZyBkaXJlY3RvcnksIG5vdCBqdXN0IGZpbGVzIHRoYXQgY2hhbmdlZCIpCiAgICAgcmV0
dXJuIHBhcnNlcgogCiAKIGRlZiBtYWluKCoqa3dhcmdzKToKLSAgICBpZiBrd2FyZ3MuZ2V0KCJq
c29uIikgYW5kIGt3YXJncy5nZXQoIm1hcmtkb3duIik6CisgICAgIyB0eXBlOiAoKipBbnkpIC0+
IGludAorICAgIGFzc2VydCBsb2dnZXIgaXMgbm90IE5vbmUKKyAgICBpZiBrd2FyZ3MuZ2V0KHN0
cigianNvbiIpKSBhbmQga3dhcmdzLmdldChzdHIoIm1hcmtkb3duIikpOgogICAgICAgICBsb2dn
ZXIuY3JpdGljYWwoIkNhbm5vdCBzcGVjaWZ5IC0tanNvbiBhbmQgLS1tYXJrZG93biIpCiAgICAg
ICAgIHN5cy5leGl0KDIpCiAKLSAgICByZXBvX3Jvb3QgPSBrd2FyZ3MuZ2V0KCdyZXBvX3Jvb3Qn
KSBvciBsb2NhbHBhdGhzLnJlcG9fcm9vdAotICAgIG91dHB1dF9mb3JtYXQgPSB7KFRydWUsIEZh
bHNlKTogImpzb24iLAotICAgICAgICAgICAgICAgICAgICAgKEZhbHNlLCBUcnVlKTogIm1hcmtk
b3duIiwKLSAgICAgICAgICAgICAgICAgICAgIChGYWxzZSwgRmFsc2UpOiAibm9ybWFsIn1bKGt3
YXJncy5nZXQoImpzb24iLCBGYWxzZSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBrd2FyZ3MuZ2V0KCJtYXJrZG93biIsIEZhbHNlKSldCisgICAgcmVw
b19yb290ID0ga3dhcmdzLmdldChzdHIoJ3JlcG9fcm9vdCcpKSBvciBsb2NhbHBhdGhzLnJlcG9f
cm9vdAorICAgIG91dHB1dF9mb3JtYXQgPSB7KFRydWUsIEZhbHNlKTogc3RyKCJqc29uIiksCisg
ICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIFRydWUpOiBzdHIoIm1hcmtkb3duIiksCisgICAg
ICAgICAgICAgICAgICAgICAoRmFsc2UsIEZhbHNlKTogc3RyKCJub3JtYWwiKX1bKGt3YXJncy5n
ZXQoc3RyKCJqc29uIiksIEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAga3dhcmdzLmdldChzdHIoIm1hcmtkb3duIiksIEZhbHNlKSld
CiAKICAgICBpZiBvdXRwdXRfZm9ybWF0ID09ICJtYXJrZG93biI6CiAgICAgICAgIHNldHVwX2xv
Z2dpbmcoVHJ1ZSkKIAogICAgIHBhdGhzID0gbGludF9wYXRocyhrd2FyZ3MsIHJlcG9fcm9vdCkK
IAotICAgIHJldHVybiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQpCisgICAg
aWdub3JlX2dsb2IgPSBrd2FyZ3MuZ2V0KHN0cigiaWdub3JlX2dsb2IiKSkgb3Igc3RyKCkKIAor
ICAgIHJldHVybiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQsIHN0cihpZ25v
cmVfZ2xvYikpCiAKLWRlZiBsaW50KHJlcG9fcm9vdCwgcGF0aHMsIG91dHB1dF9mb3JtYXQpOgot
ICAgIGVycm9yX2NvdW50ID0gZGVmYXVsdGRpY3QoaW50KQorCitkZWYgbGludChyZXBvX3Jvb3Qs
IHBhdGhzLCBvdXRwdXRfZm9ybWF0LCBpZ25vcmVfZ2xvYj1zdHIoKSk6CisgICAgIyB0eXBlOiAo
c3RyLCBMaXN0W3N0cl0sIHN0ciwgc3RyKSAtPiBpbnQKKyAgICBlcnJvcl9jb3VudCA9IGRlZmF1
bHRkaWN0KGludCkgICMgdHlwZTogRGljdFtUZXh0LCBpbnRdCiAgICAgbGFzdCA9IE5vbmUKIAog
ICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4ocmVwb19yb290LCAibGludC53aGl0ZWxpc3QiKSkg
YXMgZjoKICAgICAgICAgd2hpdGVsaXN0LCBpZ25vcmVkX2ZpbGVzID0gcGFyc2Vfd2hpdGVsaXN0
KGYpCiAKKyAgICBpZiBpZ25vcmVfZ2xvYjoKKyAgICAgICAgaWdub3JlZF9maWxlcy5hZGQoaWdu
b3JlX2dsb2IpCisKICAgICBvdXRwdXRfZXJyb3JzID0geyJqc29uIjogb3V0cHV0X2Vycm9yc19q
c29uLAogICAgICAgICAgICAgICAgICAgICAgIm1hcmtkb3duIjogb3V0cHV0X2Vycm9yc19tYXJr
ZG93biwKICAgICAgICAgICAgICAgICAgICAgICJub3JtYWwiOiBvdXRwdXRfZXJyb3JzX3RleHR9
W291dHB1dF9mb3JtYXRdCiAKICAgICBkZWYgcHJvY2Vzc19lcnJvcnMoZXJyb3JzKToKKyAgICAg
ICAgIyB0eXBlOiAoTGlzdFtydWxlcy5FcnJvcl0pIC0+IE9wdGlvbmFsW1R1cGxlW1RleHQsIFRl
eHRdXQogICAgICAgICAiIiIKICAgICAgICAgRmlsdGVycyBhbmQgcHJpbnRzIHRoZSBlcnJvcnMs
IGFuZCB1cGRhdGVzIHRoZSBgYGVycm9yX2NvdW50YGAgb2JqZWN0LgogCkBAIC04OTcsMTMgKzkz
MywxNyBAQCBkZWYgbGludChyZXBvX3Jvb3QsIHBhdGhzLCBvdXRwdXRfZm9ybWF0KToKICAgICBp
ZiBvdXRwdXRfZm9ybWF0IGluICgibm9ybWFsIiwgIm1hcmtkb3duIik6CiAgICAgICAgIG91dHB1
dF9lcnJvcl9jb3VudChlcnJvcl9jb3VudCkKICAgICAgICAgaWYgZXJyb3JfY291bnQ6CisgICAg
ICAgICAgICBhc3NlcnQgbGFzdCBpcyBub3QgTm9uZQorICAgICAgICAgICAgYXNzZXJ0IGxvZ2dl
ciBpcyBub3QgTm9uZQogICAgICAgICAgICAgZm9yIGxpbmUgaW4gKEVSUk9SX01TRyAlIChsYXN0
WzBdLCBsYXN0WzFdLCBsYXN0WzBdLCBsYXN0WzFdKSkuc3BsaXQoIlxuIik6CiAgICAgICAgICAg
ICAgICAgbG9nZ2VyLmluZm8obGluZSkKICAgICByZXR1cm4gc3VtKGl0ZXJ2YWx1ZXMoZXJyb3Jf
Y291bnQpKQogCi1wYXRoX2xpbnRzID0gW2NoZWNrX3BhdGhfbGVuZ3RoLCBjaGVja193b3JrZXJf
Y29sbGlzaW9uLCBjaGVja19haGVtX2NvcHldCitwYXRoX2xpbnRzID0gW2NoZWNrX2ZpbGVfdHlw
ZSwgY2hlY2tfcGF0aF9sZW5ndGgsIGNoZWNrX3dvcmtlcl9jb2xsaXNpb24sIGNoZWNrX2FoZW1f
Y29weSwKKyAgICAgICAgICAgICAgY2hlY2tfZ2l0aWdub3JlX2ZpbGVdCiBhbGxfcGF0aHNfbGlu
dHMgPSBbY2hlY2tfY3NzX2dsb2JhbGx5X3VuaXF1ZV0KLWZpbGVfbGludHMgPSBbY2hlY2tfcmVn
ZXhwX2xpbmUsIGNoZWNrX3BhcnNlZCwgY2hlY2tfcHl0aG9uX2FzdCwgY2hlY2tfc2NyaXB0X21l
dGFkYXRhXQorZmlsZV9saW50cyA9IFtjaGVja19yZWdleHBfbGluZSwgY2hlY2tfcGFyc2VkLCBj
aGVja19weXRob25fYXN0LCBjaGVja19zY3JpcHRfbWV0YWRhdGEsCisgICAgICAgICAgICAgIGNo
ZWNrX2FoZW1fc3lzdGVtX2ZvbnRdCiAKICMgRG9uJ3QgYnJlYWsgdXNlcnMgb2YgdGhlIGxpbnQg
dGhhdCBkb24ndCBoYXZlIGdpdCBpbnN0YWxsZWQuCiB0cnk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvX19p
bml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvX19pbml0X18ucHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2Zk
OTAxYzdlNmYyZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5
MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9fX2luaXRfXy5weQpAQCAt
MSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0
aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS1leHBlY3RlZC5odG1sIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL2EtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDAwNDkxZmQ3ZTViYjZmYTI4YzUxN2EwYmIzMmI4YjUwNjUzOWQ0ZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvYS1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAot
MQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLWV4cGVjdGVkLmh0bWwKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMDQ5MWZkN2U1YmI2ZmEyOGM1MTdhMGJiMzJi
OGI1MDY1MzlkNGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2EtZXhwZWN0ZWQuaHRtbAorKysgL2Rl
di9udWxsCkBAIC0xICswLDAgQEAKLTEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVu
aXF1ZS9tYXRjaC9zdXBwb3J0L3Rvb2xzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9j
c3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDgxZGJhMzQ0Y2JhZjY3YWUyNTU1ZjNjODBiYjMwY2ZjMmVjZDg2
MDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvbWF0Y2gvc3VwcG9ydC90b29scy9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9j
c3MvY3NzLXVuaXF1ZS9tYXRjaC9zdXBwb3J0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDBmYjM1MjNlZTIyNGRjYzY5ZGYzNjlkZTMzYjc1NDk4ZjdjYTc1NGQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0
Y2gvc3VwcG9ydC9hLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9t
YXRjaC90b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRj
aC90b29scy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGM4
Y2IwZjI5MzM5YzU4ZTAxYjY4MzdjMTEwMjhhNGMwNWIxOTc2YS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0
Y2gvdG9vbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdG9vbHMvYS5odG1sCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbWF0Y2gvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdjZmE2ZGRjMGI1MTU1MWZkNDFjNmQ5YThkMGFmMmQ1OTUxOTU2
NzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL21hdGNoL2Et
ZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9tYXRjaC9hLmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvYS1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0bWwK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZmJmMDg4ODZmY2E5YTkxY2I3NTNlYzg3
MzRjODRmY2JlNTJjOWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9s
aW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0yCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3Nz
L2Nzcy11bmlxdWUvbm90LW1hdGNoL3N1cHBvcnQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
Y3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL3N1cHBvcnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY1MjM0NjQwZWEzYWRiZmFjYjgyZWIzYTlhYTY5YmRkOWMw
MTRhZmEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9zdXBwb3J0L3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3Mt
dW5pcXVlL25vdC1tYXRjaC9zdXBwb3J0L2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nz
cy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9j
c3MvY3NzLXVuaXF1ZS9ub3QtbWF0Y2gvdG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDI0ZmE3ODE4OTg5YmIzNjI0MjJlMTQxZmYxN2YwMzIxMDc5MDBm
ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1
bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC90b29scy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1
ZS9ub3QtbWF0Y2gvdG9vbHMvYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11
bmlxdWUvbm90LW1hdGNoL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVl
L25vdC1tYXRjaC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
OGRkYmMzYmEwY2I2NmM4MTc1ZmY2OTBmMDZiODM2MTIwZTJkYTNhNy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUv
bm90LW1hdGNoL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL25vdC1tYXRjaC9hLWV4cGVjdGVkLmh0
bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xp
bnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvbm90LW1hdGNoL2EuaHRtbApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zZWxlY3RvcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1ODJhNDYwZjJjY2QxYjA0MzAwYjJhZmQxMDdlMTc3ZTI0
M2U4NWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L2Nzcy9jc3MtdW5pcXVlL3NlbGVjdG9ycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9z
ZWxlY3RvcnMvYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3Vw
cG9ydC90b29scy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBw
b3J0L3Rvb2xzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2
MzQ2NDlhNDljYWJkNDgwOWJjNDcxYjg2ZjMwMmVmOTZjMTBkYTE5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9z
dXBwb3J0L3Rvb2xzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3N1cHBvcnQvdG9vbHMvYS5odG1s
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvc3VwcG9ydC93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZjQzZDRhNTQ1NGQyZDVjYWJiMDAxYzdkNjdi
YjI5ZDlhYTE4ZTdmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGlu
dC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS9zdXBwb3J0L3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5p
cXVlL3N1cHBvcnQvYS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUv
dG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvdG9vbHMvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYjZiODg3ODMyYzI3
ZjJkNGM4OTczOGEzMzEzNTNjNzQ2M2JiZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3Rvb2xzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15
L2Nzcy9jc3MtdW5pcXVlL3Rvb2xzL2EuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9j
c3MtdW5pcXVlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGQzMjUxZTM1NGM3NjNi
MWE1OWI5MWY3ZTgxMWRmZjJmZWRlZTIyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3NzLXVuaXF1ZS93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9jc3MvY3Nz
LXVuaXF1ZS9hLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvY3NzL2Nzcy11bmlxdWUvYS5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL2R1bW15L2Nzcy9jc3MtdW5pcXVlL3JlbGF0aXZlLXRlc3RoYXJuZXNzLmh0bWwKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJvdXRfYmxhbmstcmVmLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
cmVmL2Fib3V0X2JsYW5rLXJlZi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4
Zjk0MGI1NDBmOWJkMzgyOTJlZmU3ZGY4YmQ5N2JkYWYzODYzYWZiLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJvdXRfYmxhbmst
cmVmLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi08bGluayByZWw9Im1hdGNoIiBo
cmVmPWFib3V0OmJsYW5rPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxh
dGl2ZS1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9leGlzdGVudF9yZWxhdGl2ZS1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjlkZTI5YmIyZDFkNjQz
NGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L2R1bW15L3JlZi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDg1MjNlOTc5YjUzNWJjYWY2YWE3ZjI1OTJhYTczOWZhOWFhOGFkNS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvcmVmL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2R1bW15L3Jl
Zi9hYm91dF9ibGFuay1yZWYuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvYWJzb2x1dGUuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0
cy9kdW1teS9yZWYvZXhpc3RlbnRfcmVsYXRpdmUtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9y
ZWYvZXhpc3RlbnRfcmVsYXRpdmUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS9yZWYvZXhpc3RlbnRfcm9vdF9y
ZWxhdGl2ZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9saW50L3Rlc3RzL2R1bW15L3JlZi9ub25fZXhpc3RlbnRfcmVsYXRpdmUuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90
ZXN0cy9kdW1teS9yZWYvbm9uX2V4aXN0ZW50X3Jvb3RfcmVsYXRpdmUuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9yZWYvc2FtZV9maWxlX2VtcHR5Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbGludC90ZXN0cy9kdW1teS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZWVmZTMwZTYzMmJhYWJiYjM3YTUzM2IxNzgyNzRhN2Y4NTc4M2QwMC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVt
bXkvYnJva2VuLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvYnJva2VuX2lnbm9yZWQuaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy9kdW1t
eS9kZXBlbmRlbmN5Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkvbGludC53aGl0ZWxpc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvZHVtbXkv
b2theS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3Rf
ZmlsZV9saW50cy5weQppbmRleCAyOGNjYWNjODc4N2M2MWMyYTZjZjM0NTUyZjE3OWVmODkzMzYw
ZmVkLi44MDk0ZDZkNDBhNTQ2MDI0NzdhMDUyNDZmYWY5ZWJjMDczNGNiOTVlIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQv
dGVzdHMvdGVzdF9maWxlX2xpbnRzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2ZpbGVfbGludHMucHkKQEAg
LTU0LDcgKzU0LDcgQEAgZGVmIHRlc3RfaW5kZW50X3RhYnMoKToKICAgICBmb3IgKGZpbGVuYW1l
LCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CiAgICAgICAgIGNoZWNrX2Vy
cm9ycyhlcnJvcnMpCiAKLSAgICAgICAgZXhwZWN0ZWQgPSBbKCJJTkRFTlQgVEFCUyIsICJUYWJz
IHVzZWQgZm9yIGluZGVudGF0aW9uIiwgZmlsZW5hbWUsIDIpXQorICAgICAgICBleHBlY3RlZCA9
IFsoIklOREVOVCBUQUJTIiwgIlRlc3QtZmlsZSBsaW5lIHN0YXJ0cyB3aXRoIG9uZSBvciBtb3Jl
IHRhYiBjaGFyYWN0ZXJzIiwgZmlsZW5hbWUsIDIpXQogICAgICAgICBpZiBraW5kID09ICJ3ZWIt
c3RyaWN0IjoKICAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxFRCIsICJV
bmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCBOb25lKSkKICAgICAgICAgYXNzZXJ0IGVy
cm9ycyA9PSBleHBlY3RlZApAQCAtNjYsNyArNjYsNyBAQCBkZWYgdGVzdF9jcl9ub3RfYXRfZW9s
KCk6CiAgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVt
cygpOgogICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQogCi0gICAgICAgIGV4cGVjdGVkID0g
WygiQ1IgQVQgRU9MIiwgIkNSIGNoYXJhY3RlciBpbiBsaW5lIHNlcGFyYXRvciIsIGZpbGVuYW1l
LCAxKV0KKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJDUiBBVCBFT0wiLCAiVGVzdC1maWxlIGxpbmUg
ZW5kcyB3aXRoIENSIChVKzAwMEQpIGNoYXJhY3RlciIsIGZpbGVuYW1lLCAxKV0KICAgICAgICAg
aWYga2luZCA9PSAid2ViLXN0cmljdCI6CiAgICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQ
QVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgTm9uZSkpCiAg
ICAgICAgIGFzc2VydCBlcnJvcnMgPT0gZXhwZWN0ZWQKQEAgLTc5LDggKzc5LDggQEAgZGVmIHRl
c3RfY3JfYXRfZW9sKCk6CiAgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCiAKICAgICAgICAg
ZXhwZWN0ZWQgPSBbCi0gICAgICAgICAgICAoIkNSIEFUIEVPTCIsICJDUiBjaGFyYWN0ZXIgaW4g
bGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMSksCi0gICAgICAgICAgICAoIkNSIEFUIEVPTCIs
ICJDUiBjaGFyYWN0ZXIgaW4gbGluZSBzZXBhcmF0b3IiLCBmaWxlbmFtZSwgMiksCisgICAgICAg
ICAgICAoIkNSIEFUIEVPTCIsICJUZXN0LWZpbGUgbGluZSBlbmRzIHdpdGggQ1IgKFUrMDAwRCkg
Y2hhcmFjdGVyIiwgZmlsZW5hbWUsIDEpLAorICAgICAgICAgICAgKCJDUiBBVCBFT0wiLCAiVGVz
dC1maWxlIGxpbmUgZW5kcyB3aXRoIENSIChVKzAwMEQpIGNoYXJhY3RlciIsIGZpbGVuYW1lLCAy
KSwKICAgICAgICAgXQogICAgICAgICBpZiBraW5kID09ICJ3ZWItc3RyaWN0IjoKICAgICAgICAg
ICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmls
ZSIsIGZpbGVuYW1lLCBOb25lKSkKQEAgLTkzLDcgKzkzLDcgQEAgZGVmIHRlc3RfdzNjX3Rlc3Rf
b3JnKCk6CiAgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5p
dGVtcygpOgogICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQogCi0gICAgICAgIGV4cGVjdGVk
ID0gWygiVzNDLVRFU1QuT1JHIiwgIkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4gdXNlZCIs
IGZpbGVuYW1lLCAxKV0KKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJXM0MtVEVTVC5PUkciLCAiVGVz
dC1maWxlIGxpbmUgaGFzIHRoZSBzdHJpbmcgYHczYy10ZXN0Lm9yZ2AiLCBmaWxlbmFtZSwgMSld
CiAgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CiAgICAgICAgICAgICBleHBlY3RlZC5hcHBl
bmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFtZSwgMSkp
CiAgICAgICAgIGVsaWYga2luZCA9PSAid2ViLXN0cmljdCI6CkBAIC0xMzYsOCArMTM2LDggQEAg
ZGVmIHRlc3RfY29uc29sZSgpOgogCiAgICAgICAgIGlmIGtpbmQgaW4gWyJ3ZWItbGF4IiwgIndl
Yi1zdHJpY3QiLCAianMiXToKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWwotICAgICAg
ICAgICAgICAgICgiQ09OU09MRSIsICJDb25zb2xlIGxvZ2dpbmcgQVBJIHVzZWQiLCBmaWxlbmFt
ZSwgMiksCi0gICAgICAgICAgICAgICAgKCJDT05TT0xFIiwgIkNvbnNvbGUgbG9nZ2luZyBBUEkg
dXNlZCIsIGZpbGVuYW1lLCAzKSwKKyAgICAgICAgICAgICAgICAoIkNPTlNPTEUiLCAiVGVzdC1m
aWxlIGxpbmUgaGFzIGEgYGNvbnNvbGUuKiguLi4pYCBjYWxsIiwgZmlsZW5hbWUsIDIpLAorICAg
ICAgICAgICAgICAgICgiQ09OU09MRSIsICJUZXN0LWZpbGUgbGluZSBoYXMgYSBgY29uc29sZS4q
KC4uLilgIGNhbGwiLCBmaWxlbmFtZSwgMyksCiAgICAgICAgICAgICBdCiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUg
dG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KQEAgLTE1Myw3ICsxNTMsNyBAQCBkZWYgdGVz
dF9zZXRUaW1lb3V0KCk6CiAgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZB
SUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWygnU0VUIFRJTUVPVVQnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdzZXRUaW1lb3V0IHVzZWQ7IHN0ZXBfdGltZW91dCBz
aG91bGQgdHlwaWNhbGx5IGJlIHVzZWQgaW5zdGVhZCcsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3NldFRpbWVvdXQgdXNlZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMSldCiAKQEAgLTE2
OCw3ICsxNjgsNyBAQCBkZWYgdGVzdF9ldmVudFNlbmRlcigpOgogICAgICAgICAgICAgYXNzZXJ0
IGVycm9ycyA9PSBbKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxl
bmFtZSwgMSldCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFso
J0xBWU9VVFRFU1RTIEFQSVMnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdldmVu
dFNlbmRlci90ZXN0UnVubmVyL3dpbmRvdy5pbnRlcm5hbHMgdXNlZDsgdGhlc2UgYXJlIExheW91
dFRlc3RzLXNwZWNpZmljIEFQSXMgKFdlYktpdC9CbGluayknLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdldmVudFNlbmRlci90ZXN0UnVubmVyL2ludGVybmFscyB1c2VkOyB0aGVz
ZSBhcmUgTGF5b3V0VGVzdHMtc3BlY2lmaWMgQVBJcyAoV2ViS2l0L0JsaW5rKScsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgMSldCiAKQEAgLTE4MywxMiArMTgzLDEyIEBAIGRlZiB0ZXN0X3Rlc3RSdW5uZXIo
KToKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJs
ZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDEpXQogICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgYXNzZXJ0IGVycm9ycyA9PSBbKCdMQVlPVVRURVNUUyBBUElTJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnZXZlbnRTZW5kZXIvdGVzdFJ1bm5lci93aW5kb3cuaW50ZXJuYWxz
IHVzZWQ7IHRoZXNlIGFyZSBMYXlvdXRUZXN0cy1zcGVjaWZpYyBBUElzIChXZWJLaXQvQmxpbmsp
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXZlbnRTZW5kZXIvdGVzdFJ1bm5l
ci9pbnRlcm5hbHMgdXNlZDsgdGhlc2UgYXJlIExheW91dFRlc3RzLXNwZWNpZmljIEFQSXMgKFdl
YktpdC9CbGluayknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEpXQogCiAKLWRlZiB0ZXN0X3dpbmRvd0Rv
dEludGVybmFscygpOgorZGVmIHRlc3RfaW50ZXJuYWxzKCk6CiAgICAgZXJyb3JfbWFwID0gY2hl
Y2tfd2l0aF9maWxlcyhiIjxzY3JpcHQ+aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsgaW50ZXJuYWxz
LmRvQVRoaW5nKCk7IH08L3NjcmlwdD4iKQogCiAgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywg
a2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgpAQCAtMTk4LDExICsxOTgsNDEgQEAgZGVmIHRl
c3Rfd2luZG93RG90SW50ZXJuYWxzKCk6CiAgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFso
IlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWygnTEFZT1VUVEVTVFMg
QVBJUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V2ZW50U2VuZGVyL3Rlc3RS
dW5uZXIvd2luZG93LmludGVybmFscyB1c2VkOyB0aGVzZSBhcmUgTGF5b3V0VGVzdHMtc3BlY2lm
aWMgQVBJcyAoV2ViS2l0L0JsaW5rKScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2V2ZW50U2VuZGVyL3Rlc3RSdW5uZXIvaW50ZXJuYWxzIHVzZWQ7IHRoZXNlIGFyZSBMYXlvdXRU
ZXN0cy1zcGVjaWZpYyBBUElzIChXZWJLaXQvQmxpbmspJywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBmaWxlbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKV0K
IAogCitkZWYgdGVzdF9taXNzaW5nX2RlcHMoKToKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRo
X2ZpbGVzKGIiPHNjcmlwdCBzcmM9Jy9nZW4vZm9vLmpzJz48L3NjcmlwdD4iKQorCisgICAgZm9y
IChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAg
ICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6Cisg
ICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8g
cGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGFz
c2VydCBlcnJvcnMgPT0gWygnTUlTU0lORyBERVBFTkRFTkNZJywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQ2hyb21pdW0tc3BlY2lmaWMgY29udGVudCByZWZlcmVuY2VkJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAxKV0KKworCitkZWYgdGVzdF9ub19taXNzaW5nX2RlcHMoKToKKyAgICBl
cnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGIiIiI8aGVhZD4KKzxzY3JpcHQgc3JjPScvZm9v
L2dlbi9mb28uanMnPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Jy9nZW5zL2Zvby5qcyc+PC9zY3Jp
cHQ+Cis8L2hlYWQ+IiIiKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGlu
IGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAg
ICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFso
IlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKV0KKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KKworCiBkZWYgdGVz
dF9tZXRhX3RpbWVvdXQoKToKICAgICBjb2RlID0gYiIiIgogPGh0bWwgeG1sbnM9Imh0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWwiPgpAQCAtMjE5LDggKzI0OSwxNCBAQCBkZWYgdGVzdF9tZXRh
X3RpbWVvdXQoKToKICAgICAgICAgaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0cmljdCJd
OgogICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCiAgICAgICAgICAgICAgICAgKCJNVUxU
SVBMRS1USU1FT1VUIiwgIk1vcmUgdGhhbiBvbmUgbWV0YSBuYW1lPSd0aW1lb3V0JyIsIGZpbGVu
YW1lLCBOb25lKSwKLSAgICAgICAgICAgICAgICAoIklOVkFMSUQtVElNRU9VVCIsICJJbnZhbGlk
IHRpbWVvdXQgdmFsdWUgIiwgZmlsZW5hbWUsIE5vbmUpLAotICAgICAgICAgICAgICAgICgiSU5W
QUxJRC1USU1FT1VUIiwgIkludmFsaWQgdGltZW91dCB2YWx1ZSBzaG9ydCIsIGZpbGVuYW1lLCBO
b25lKSwKKyAgICAgICAgICAgICAgICAoIklOVkFMSUQtVElNRU9VVCIsCisgICAgICAgICAgICAg
ICAgICAgICJUZXN0IGZpbGUgd2l0aCBgPG1ldGEgbmFtZT0ndGltZW91dCcuLi4+YCBlbGVtZW50
IHRoYXQgaGFzIGEgYGNvbnRlbnRgIGF0dHJpYnV0ZSB3aG9zZSB2YWx1ZSBpcyBub3QgYGxvbmdg
OiAiLAorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAg
Tm9uZSksCisgICAgICAgICAgICAgICAgKCJJTlZBTElELVRJTUVPVVQiLAorICAgICAgICAgICAg
ICAgICAgICAiVGVzdCBmaWxlIHdpdGggYDxtZXRhIG5hbWU9J3RpbWVvdXQnLi4uPmAgZWxlbWVu
dCB0aGF0IGhhcyBhIGBjb250ZW50YCBhdHRyaWJ1dGUgd2hvc2UgdmFsdWUgaXMgbm90IGBsb25n
YDogc2hvcnQiLAorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAg
ICAgICAgTm9uZSksCiAgICAgICAgICAgICBdCiAgICAgICAgIGVsaWYga2luZCA9PSAicHl0aG9u
IjoKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWwpAQCAtMjQyLDcgKzI3OCwxMiBAQCBk
ZWYgdGVzdF9lYXJseV90ZXN0aGFybmVzc3JlcG9ydCgpOgogCiAgICAgICAgIGlmIGtpbmQgaW4g
WyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0g
WwotICAgICAgICAgICAgICAgICgiRUFSTFktVEVTVEhBUk5FU1NSRVBPUlQiLCAidGVzdGhhcm5l
c3NyZXBvcnQuanMgc2NyaXB0IHNlZW4gYmVmb3JlIHRlc3RoYXJuZXNzLmpzIHNjcmlwdCIsIGZp
bGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIkVBUkxZLVRFU1RIQVJORVNTUkVQT1JU
IiwKKyAgICAgICAgICAgICAgICAgICAgIlRlc3QgZmlsZSBoYXMgYW4gaW5zdGFuY2Ugb2YgIgor
ICAgICAgICAgICAgICAgICAgICAiYDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzJz5gICIKKyAgICAgICAgICAgICAgICAgICAgInByaW9yIHRvIGA8c2NyaXB0IHNy
Yz0nL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyc+YCIsCisgICAgICAgICAgICAgICAgICAgIGZp
bGVuYW1lLAorICAgICAgICAgICAgICAgICAgICBOb25lKSwKICAgICAgICAgICAgIF0KICAgICAg
ICAgZWxpZiBraW5kID09ICJweXRob24iOgogICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBb
CkBAIC0yNjQsOCArMzA1LDggQEAgZGVmIHRlc3RfbXVsdGlwbGVfdGVzdGhhcm5lc3MoKToKIAog
ICAgICAgICBpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CiAgICAgICAgICAg
ICBhc3NlcnQgZXJyb3JzID09IFsKLSAgICAgICAgICAgICAgICAoIk1VTFRJUExFLVRFU1RIQVJO
RVNTIiwgIk1vcmUgdGhhbiBvbmUgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3Mu
anMnPiIsIGZpbGVuYW1lLCBOb25lKSwKLSAgICAgICAgICAgICAgICAoIk1JU1NJTkctVEVTVEhB
Uk5FU1NSRVBPUlQiLCAiTWlzc2luZyA8c2NyaXB0IHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyc+IiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiTVVMVElQ
TEUtVEVTVEhBUk5FU1MiLCAiTW9yZSB0aGFuIG9uZSBgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMnPmAiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJN
SVNTSU5HLVRFU1RIQVJORVNTUkVQT1JUIiwgIk1pc3NpbmcgYDxzY3JpcHQgc3JjPScvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz5gIiwgZmlsZW5hbWUsIE5vbmUpLAogICAgICAgICAg
ICAgXQogICAgICAgICBlbGlmIGtpbmQgPT0gInB5dGhvbiI6CiAgICAgICAgICAgICBhc3NlcnQg
ZXJyb3JzID09IFsKQEAgLTI4OCw3ICszMjksODAgQEAgZGVmIHRlc3RfbXVsdGlwbGVfdGVzdGhh
cm5lc3NyZXBvcnQoKToKIAogICAgICAgICBpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3Ry
aWN0Il06CiAgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKLSAgICAgICAgICAgICAgICAo
Ik1VTFRJUExFLVRFU1RIQVJORVNTUkVQT1JUIiwgIk1vcmUgdGhhbiBvbmUgPHNjcmlwdCBzcmM9
Jy9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMnPiIsIGZpbGVuYW1lLCBOb25lKSwKKyAg
ICAgICAgICAgICAgICAoIk1VTFRJUExFLVRFU1RIQVJORVNTUkVQT1JUIiwgIk1vcmUgdGhhbiBv
bmUgYDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzJz5gIiwgZmls
ZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgXQorICAgICAgICBlbGlmIGtpbmQgPT0gInB5dGhv
biI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBB
UlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAyKSwKKyAgICAg
ICAgICAgIF0KKworCitkZWYgdGVzdF9tdWx0aXBsZV90ZXN0ZHJpdmVyKCk6CisgICAgY29kZSA9
IGIiIiIKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3Jj
PSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNv
dXJjZXMvdGVzdGRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90
ZXN0ZHJpdmVyLXZlbmRvci5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9t
YXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3Jz
LCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJv
cnMpCisKKyAgICAgICAgaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0cmljdCJdOgorICAg
ICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAgICAgKCJNVUxUSVBMRS1U
RVNURFJJVkVSIiwgIk1vcmUgdGhhbiBvbmUgYDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3Rk
cml2ZXIuanMnPmAiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBdCisgICAgICAgIGVs
aWYga2luZCA9PSAicHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAg
ICAgICAgICAgICAgICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmls
ZW5hbWUsIDIpLAorICAgICAgICAgICAgXQorCisKK2RlZiB0ZXN0X211bHRpcGxlX3Rlc3Rkcml2
ZXJfdmVuZG9yKCk6CisgICAgY29kZSA9IGIiIiIKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Ij48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMiPjwvc2Ny
aXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMiPjwvc2Ny
aXB0PgorPC9odG1sPgorIiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2Rl
KQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVt
cygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgaW4g
WyJ3ZWItbGF4IiwgIndlYi1zdHJpY3QiXToKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0g
WworICAgICAgICAgICAgICAgICgiTVVMVElQTEUtVEVTVERSSVZFUi1WRU5ET1IiLCAiTW9yZSB0
aGFuIG9uZSBgPHNjcmlwdCBzcmM9Jy9yZXNvdXJjZXMvdGVzdGRyaXZlci12ZW5kb3IuanMnPmAi
LCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICBdCisgICAgICAgIGVsaWYga2luZCA9PSAi
cHl0aG9uIjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAg
ICgiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUsIDIpLAor
ICAgICAgICAgICAgXQorCisKK2RlZiB0ZXN0X21pc3NpbmdfdGVzdGRyaXZlcl92ZW5kb3IoKToK
KyAgICBjb2RlID0gYiIiIgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0Pgor
PHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRyaXZlci5qcyI+PC9zY3JpcHQ+Cis8L2h0bWw+
CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2ZpbGVzKGNvZGUpCisKKyAgICBmb3Ig
KGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAg
IGNoZWNrX2Vycm9ycyhlcnJvcnMpCisKKyAgICAgICAgaWYga2luZCBpbiBbIndlYi1sYXgiLCAi
d2ViLXN0cmljdCJdOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAg
ICAgICAgKCJNSVNTSU5HLVRFU1REUklWRVItVkVORE9SIiwgIk1pc3NpbmcgYDxzY3JpcHQgc3Jj
PScvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9yLmpzJz5gIiwgZmlsZW5hbWUsIE5vbmUpLAog
ICAgICAgICAgICAgXQogICAgICAgICBlbGlmIGtpbmQgPT0gInB5dGhvbiI6CiAgICAgICAgICAg
ICBhc3NlcnQgZXJyb3JzID09IFsKQEAgLTMzMyw3ICs0NDcsNyBAQCBkZWYgdGVzdF90ZXN0aGFy
bmVzc19wYXRoKCk6CiAgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9y
X21hcC5pdGVtcygpOgogICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQogCi0gICAgICAgIGV4
cGVjdGVkID0gWygiVzNDLVRFU1QuT1JHIiwgIkV4dGVybmFsIHczYy10ZXN0Lm9yZyBkb21haW4g
dXNlZCIsIGZpbGVuYW1lLCA1KV0KKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJXM0MtVEVTVC5PUkci
LCAiVGVzdC1maWxlIGxpbmUgaGFzIHRoZSBzdHJpbmcgYHczYy10ZXN0Lm9yZ2AiLCBmaWxlbmFt
ZSwgNSldCiAgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CiAgICAgICAgICAgICBleHBlY3Rl
ZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBhcnNlIGZpbGUiLCBmaWxlbmFt
ZSwgMSkpCiAgICAgICAgIGVsaWYga2luZCBpbiBbIndlYi1sYXgiLCAid2ViLXN0cmljdCJdOgpA
QCAtMzYwLDcgKzQ3NCw3IEBAIGRlZiB0ZXN0X3Rlc3RoYXJuZXNzcmVwb3J0X3BhdGgoKToKICAg
ICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5kKSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CiAg
ICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCiAKLSAgICAgICAgZXhwZWN0ZWQgPSBbKCJXM0Mt
VEVTVC5PUkciLCAiRXh0ZXJuYWwgdzNjLXRlc3Qub3JnIGRvbWFpbiB1c2VkIiwgZmlsZW5hbWUs
IDUpXQorICAgICAgICBleHBlY3RlZCA9IFsoIlczQy1URVNULk9SRyIsICJUZXN0LWZpbGUgbGlu
ZSBoYXMgdGhlIHN0cmluZyBgdzNjLXRlc3Qub3JnYCIsIGZpbGVuYW1lLCA1KV0KICAgICAgICAg
aWYga2luZCA9PSAicHl0aG9uIjoKICAgICAgICAgICAgIGV4cGVjdGVkLmFwcGVuZCgoIlBBUlNF
LUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSkKICAgICAgICAg
ZWxpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06CkBAIC0zNzMsMTIgKzQ4Nyw4
MSBAQCBkZWYgdGVzdF90ZXN0aGFybmVzc3JlcG9ydF9wYXRoKCk6CiAgICAgICAgIGFzc2VydCBl
cnJvcnMgPT0gZXhwZWN0ZWQKIAogCitkZWYgdGVzdF90ZXN0ZHJpdmVyX3BhdGgoKToKKyAgICBj
b2RlID0gYiIiIlwKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4K
KzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3Jp
cHQgc3JjPSJ0ZXN0ZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvZWxzZXdoZXJl
L3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9lbHNld2hlcmUvcmVzb3Vy
Y2VzL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvZWxz
ZXdoZXJlL3Rlc3Rkcml2ZXIuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNl
cy90ZXN0ZHJpdmVyLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rk
cml2ZXItdmVuZG9yLmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9
IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMsIGtp
bmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykK
KworICAgICAgICBleHBlY3RlZCA9IFtdCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6Cisg
ICAgICAgICAgICBleHBlY3RlZC5hcHBlbmQoKCJQQVJTRS1GQUlMRUQiLCAiVW5hYmxlIHRvIHBh
cnNlIGZpbGUiLCBmaWxlbmFtZSwgMSkpCisgICAgICAgIGVsaWYga2luZCBpbiBbIndlYi1sYXgi
LCAid2ViLXN0cmljdCJdOgorICAgICAgICAgICAgZXhwZWN0ZWQuZXh0ZW5kKFsKKyAgICAgICAg
ICAgICAgICAoIlRFU1REUklWRVItUEFUSCIsICJ0ZXN0ZHJpdmVyLmpzIHNjcmlwdCBzZWVuIHdp
dGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9uZSksCisgICAgICAgICAgICAgICAgKCJU
RVNURFJJVkVSLVBBVEgiLCAidGVzdGRyaXZlci5qcyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVj
dCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgiVEVTVERSSVZFUi1Q
QVRIIiwgInRlc3Rkcml2ZXIuanMgc2NyaXB0IHNlZW4gd2l0aCBpbmNvcnJlY3QgcGF0aCIsIGZp
bGVuYW1lLCBOb25lKSwKKyAgICAgICAgICAgICAgICAoIlRFU1REUklWRVItUEFUSCIsICJ0ZXN0
ZHJpdmVyLmpzIHNjcmlwdCBzZWVuIHdpdGggaW5jb3JyZWN0IHBhdGgiLCBmaWxlbmFtZSwgTm9u
ZSksCisgICAgICAgICAgICAgICAgKCJURVNURFJJVkVSLVBBVEgiLCAidGVzdGRyaXZlci5qcyBz
Y3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpCisgICAgICAg
ICAgICBdKQorICAgICAgICBhc3NlcnQgZXJyb3JzID09IGV4cGVjdGVkCisKKworZGVmIHRlc3Rf
dGVzdGRyaXZlcl92ZW5kb3JfcGF0aCgpOgorICAgIGNvZGUgPSBiIiIiXAorPGh0bWwgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMv
dGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhh
cm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGRy
aXZlci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0idGVzdGRyaXZlci12ZW5kb3IuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9lbHNld2hlcmUvdGVzdGRyaXZlci12ZW5kb3IuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9lbHNld2hlcmUvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVu
ZG9yLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL2Vsc2V3aGVyZS90ZXN0
ZHJpdmVyLXZlbmRvci5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL3Rl
c3Rkcml2ZXItdmVuZG9yLmpzIj48L3NjcmlwdD4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21h
cCA9IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkKKworICAgIGZvciAoZmlsZW5hbWUsIChlcnJvcnMs
IGtpbmQpKSBpbiBlcnJvcl9tYXAuaXRlbXMoKToKKyAgICAgICAgY2hlY2tfZXJyb3JzKGVycm9y
cykKKworICAgICAgICBpZiBraW5kID09ICJweXRob24iOgorICAgICAgICAgICAgZXhwZWN0ZWQg
PSBzZXQoWygiUEFSU0UtRkFJTEVEIiwgIlVuYWJsZSB0byBwYXJzZSBmaWxlIiwgZmlsZW5hbWUs
IDEpXSkKKyAgICAgICAgZWxpZiBraW5kIGluIFsid2ViLWxheCIsICJ3ZWItc3RyaWN0Il06Cisg
ICAgICAgICAgICBleHBlY3RlZCA9IHNldChbCisgICAgICAgICAgICAgICAgKCJNSVNTSU5HLVRF
U1REUklWRVItVkVORE9SIiwgIk1pc3NpbmcgYDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3Rk
cml2ZXItdmVuZG9yLmpzJz5gIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAgICgi
VEVTVERSSVZFUi1WRU5ET1ItUEFUSCIsICJ0ZXN0ZHJpdmVyLXZlbmRvci5qcyBzY3JpcHQgc2Vl
biB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAgICAg
ICgiVEVTVERSSVZFUi1WRU5ET1ItUEFUSCIsICJ0ZXN0ZHJpdmVyLXZlbmRvci5qcyBzY3JpcHQg
c2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAgICAg
ICAgICgiVEVTVERSSVZFUi1WRU5ET1ItUEFUSCIsICJ0ZXN0ZHJpdmVyLXZlbmRvci5qcyBzY3Jp
cHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAgICAg
ICAgICAgICgiVEVTVERSSVZFUi1WRU5ET1ItUEFUSCIsICJ0ZXN0ZHJpdmVyLXZlbmRvci5qcyBz
Y3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpLAorICAgICAg
ICAgICAgICAgICgiVEVTVERSSVZFUi1WRU5ET1ItUEFUSCIsICJ0ZXN0ZHJpdmVyLXZlbmRvci5q
cyBzY3JpcHQgc2VlbiB3aXRoIGluY29ycmVjdCBwYXRoIiwgZmlsZW5hbWUsIE5vbmUpCisgICAg
ICAgICAgICBdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZXhwZWN0ZWQgPSBzZXQoKQor
CisgICAgICAgIGFzc2VydCBzZXQoZXJyb3JzKSA9PSBleHBlY3RlZAorCisKIGRlZiB0ZXN0X25v
dF90ZXN0aGFybmVzc19wYXRoKCk6CiAgICAgY29kZSA9IGIiIiJcCiA8aHRtbCB4bWxucz0iaHR0
cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVz
c3JlcG9ydC5qcyI+PC9zY3JpcHQ+CiA8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3dlYnBlcmZ0ZXN0
aGFybmVzcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0ZHJpdmVy
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Rkcml2ZXItdmVuZG9y
LmpzIj48L3NjcmlwdD4KIDwvaHRtbD4KICIiIgogICAgIGVycm9yX21hcCA9IGNoZWNrX3dpdGhf
ZmlsZXMoY29kZSkKQEAgLTM5NCw2ICs1NzcsODUgQEAgZGVmIHRlc3Rfbm90X3Rlc3RoYXJuZXNz
X3BhdGgoKToKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KIAogCitkZWYgdGVzdF92
YXJpYW50X21pc3NpbmcoKToKKyAgICBjb2RlID0gYiIiIlwKKzxodG1sIHhtbG5zPSJodHRwOi8v
d3d3LnczLm9yZy8xOTk5L3hodG1sIj4KKzxtZXRhIG5hbWU9InZhcmlhbnQiPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9odG1sPgorIiIiCisg
ICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFt
ZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19l
cnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAg
ICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJV
bmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSwKKyAgICAgICAgICAgIF0KKyAgICAg
ICAgZWxpZiBraW5kID09ICJ3ZWItbGF4IjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0g
WworICAgICAgICAgICAgICAgICgiVkFSSUFOVC1NSVNTSU5HIiwKKyAgICAgICAgICAgICAgICAg
ICAgIlRlc3QgZmlsZSB3aXRoIGEgYDxtZXRhIG5hbWU9J3ZhcmlhbnQnLi4uPmAgZWxlbWVudCB0
aGF0J3MgbWlzc2luZyBhIGBjb250ZW50YCBhdHRyaWJ1dGUiLAorICAgICAgICAgICAgICAgICAg
ICBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgTm9uZSkKKyAgICAgICAgICAgIF0KKwor
CisjIEEgY29ycmVzcG9uZGluZyAicG9zaXRpdmUiIHRlc3QgY2Fubm90IGJlIHdyaXR0ZW4gYmVj
YXVzZSB0aGUgbWFuaWZlc3QKKyMgU291cmNlRmlsZSBpbXBsZW1lbnRhdGlvbiByYWlzZXMgYSBy
dW50aW1lIGV4Y2VwdGlvbiBmb3IgdGhlIGNvbmRpdGlvbiB0aGlzCisjIGxpbnRpbmcgcnVsZSBk
ZXNjcmliZXMKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiY29udGVudCIsIFsiIiwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPyIKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiIyJdKQorZGVmIHRlc3RfdmFyaWFudF9tYWxmb3JtZWRfbmVnYXRp
dmUoY29udGVudCk6CisgICAgY29kZSA9ICIiIlwKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3Lncz
Lm9yZy8xOTk5L3hodG1sIj4KKzxtZXRhIG5hbWU9InZhcmlhbnQiIGNvbnRlbnQ9Int9Ij4KKzxz
Y3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQg
c3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzwvaHRtbD4K
KyIiIi5mb3JtYXQoY29udGVudCkuZW5jb2RlKCJ1dGYtOCIpCisgICAgZXJyb3JfbWFwID0gY2hl
Y2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkp
IGluIGVycm9yX21hcC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisg
ICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09
IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNFLUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmls
ZSIsIGZpbGVuYW1lLCAxKSwKKyAgICAgICAgICAgIF0KKyAgICAgICAgZWxpZiBraW5kID09ICJ3
ZWItbGF4IjoKKyAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KKworCitkZWYgdGVzdF9s
YXRlX3RpbWVvdXQoKToKKyAgICBjb2RlID0gYiIiIlwKKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3
LnczLm9yZy8xOTk5L3hodG1sIj4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
LmpzIj48L3NjcmlwdD4KKzxtZXRhIG5hbWU9InRpbWVvdXQiIGNvbnRlbnQ9ImxvbmciPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPC9o
dG1sPgorIiIiCisgICAgZXJyb3JfbWFwID0gY2hlY2tfd2l0aF9maWxlcyhjb2RlKQorCisgICAg
Zm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21hcC5pdGVtcygpOgorICAg
ICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGtpbmQgPT0gInB5dGhvbiI6
CisgICAgICAgICAgICBhc3NlcnQgZXJyb3JzID09IFsKKyAgICAgICAgICAgICAgICAoIlBBUlNF
LUZBSUxFRCIsICJVbmFibGUgdG8gcGFyc2UgZmlsZSIsIGZpbGVuYW1lLCAxKSwKKyAgICAgICAg
ICAgIF0KKyAgICAgICAgZWxpZiBraW5kID09ICJ3ZWItbGF4IjoKKyAgICAgICAgICAgIGFzc2Vy
dCBlcnJvcnMgPT0gWworICAgICAgICAgICAgICAgICgiTEFURS1USU1FT1VUIiwKKyAgICAgICAg
ICAgICAgICAgICAgIlRlc3QgZmlsZSB3aXRoIGA8bWV0YSBuYW1lPSd0aW1lb3V0Jy4uLj5gIGVs
ZW1lbnQgYWZ0ZXIgYDxzY3JpcHQgc3JjPScvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0Lmpz
Jz5gIGVsZW1lbnQiLAorICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwKKyAgICAgICAgICAg
ICAgICAgICAgTm9uZSkKKyAgICAgICAgICAgIF0KKworCiBAcHl0ZXN0Lm1hcmsuc2tpcGlmKHNp
eC5QWTMsIHJlYXNvbj0iQ2Fubm90IHBhcnNlIHByaW50IHN0YXRlbWVudHMgZnJvbSBweXRob24g
MyIpCiBkZWYgdGVzdF9wcmludF9zdGF0ZW1lbnQoKToKICAgICBlcnJvcl9tYXAgPSBjaGVja193
aXRoX2ZpbGVzKGIiZGVmIGZvbygpOlxuICBwcmludCAnc3RhdGVtZW50J1xuICBwcmludFxuIikK
QEAgLTQwMyw4ICs2NjUsOCBAQCBkZWYgdGVzdF9wcmludF9zdGF0ZW1lbnQoKToKIAogICAgICAg
ICBpZiBraW5kID09ICJweXRob24iOgogICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCi0g
ICAgICAgICAgICAgICAgKCJQUklOVCBTVEFURU1FTlQiLCAiUHJpbnQgZnVuY3Rpb24gdXNlZCIs
IGZpbGVuYW1lLCAyKSwKLSAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIsICJQcmlu
dCBmdW5jdGlvbiB1c2VkIiwgZmlsZW5hbWUsIDMpLAorICAgICAgICAgICAgICAgICgiUFJJTlQg
U1RBVEVNRU5UIiwgIkEgc2VydmVyLXNpZGUgcHl0aG9uIHN1cHBvcnQgZmlsZSBjb250YWlucyBh
IGBwcmludGAgc3RhdGVtZW50IiwgZmlsZW5hbWUsIDIpLAorICAgICAgICAgICAgICAgICgiUFJJ
TlQgU1RBVEVNRU5UIiwgIkEgc2VydmVyLXNpZGUgcHl0aG9uIHN1cHBvcnQgZmlsZSBjb250YWlu
cyBhIGBwcmludGAgc3RhdGVtZW50IiwgZmlsZW5hbWUsIDMpLAogICAgICAgICAgICAgXQogICAg
ICAgICBlbGlmIGtpbmQgPT0gIndlYi1zdHJpY3QiOgogICAgICAgICAgICAgYXNzZXJ0IGVycm9y
cyA9PSBbCkBAIC00MjIsNyArNjg0LDcgQEAgZGVmIHRlc3RfcHJpbnRfZnVuY3Rpb24oKToKIAog
ICAgICAgICBpZiBraW5kID09ICJweXRob24iOgogICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9
PSBbCi0gICAgICAgICAgICAgICAgKCJQUklOVCBTVEFURU1FTlQiLCAiUHJpbnQgZnVuY3Rpb24g
dXNlZCIsIGZpbGVuYW1lLCAyKSwKKyAgICAgICAgICAgICAgICAoIlBSSU5UIFNUQVRFTUVOVCIs
ICJBIHNlcnZlci1zaWRlIHB5dGhvbiBzdXBwb3J0IGZpbGUgY29udGFpbnMgYSBgcHJpbnRgIHN0
YXRlbWVudCIsIGZpbGVuYW1lLCAyKSwKICAgICAgICAgICAgIF0KICAgICAgICAgZWxpZiBraW5k
ID09ICJ3ZWItc3RyaWN0IjoKICAgICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gWwpAQCAtNDMy
LDYgKzY5NCw0NSBAQCBkZWYgdGVzdF9wcmludF9mdW5jdGlvbigpOgogICAgICAgICAgICAgYXNz
ZXJ0IGVycm9ycyA9PSBbXQogCiAKK2RlZiB0ZXN0X2FoZW1fc3lzdGVtX2ZvbnQoKToKKyAgICBj
b2RlID0gYiIiIlwKKzxodG1sPgorPHN0eWxlPgorYm9keSB7CisgIGZvbnQtZmFtaWx5OiBhSEVt
LCBzYW5zLXNlcmlmOworfQorPC9zdHlsZT4KKzwvaHRtbD4KKyIiIgorICAgIGVycm9yX21hcCA9
IGNoZWNrX3dpdGhfZmlsZXMoY29kZSkKKyAgICBmb3IgKGZpbGVuYW1lLCAoZXJyb3JzLCBraW5k
KSkgaW4gZXJyb3JfbWFwLml0ZW1zKCk6CisgICAgICAgIGNoZWNrX2Vycm9ycyhlcnJvcnMpCisK
KyAgICAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoKCIuaHRtIiwgIi5odG1sIiwgIi54aHQiLCAi
LnhodG1sIikpOgorICAgICAgICAgICAgYXNzZXJ0IGVycm9ycyA9PSBbCisgICAgICAgICAgICAg
ICAgKCJBSEVNIFNZU1RFTSBGT05UIiwgIkRvbid0IHVzZSBBaGVtIGFzIGEgc3lzdGVtIGZvbnQs
IHVzZSAvZm9udHMvYWhlbS5jc3MiLCBmaWxlbmFtZSwgTm9uZSkKKyAgICAgICAgICAgIF0KKwor
CitkZWYgdGVzdF9haGVtX3dlYl9mb250KCk6CisgICAgY29kZSA9IGIiIiJcCis8aHRtbD4KKzxs
aW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii9mb250cy9haGVtLmNz
cyIgLz4KKzxzdHlsZT4KK2JvZHkgeworICBmb250LWZhbWlseTogYUhFbSwgc2Fucy1zZXJpZjsK
K30KKzwvc3R5bGU+Cis8L2h0bWw+CisiIiIKKyAgICBlcnJvcl9tYXAgPSBjaGVja193aXRoX2Zp
bGVzKGNvZGUpCisgICAgZm9yIChmaWxlbmFtZSwgKGVycm9ycywga2luZCkpIGluIGVycm9yX21h
cC5pdGVtcygpOgorICAgICAgICBjaGVja19lcnJvcnMoZXJyb3JzKQorCisgICAgICAgIGlmIGZp
bGVuYW1lLmVuZHN3aXRoKCgiLmh0bSIsICIuaHRtbCIsICIueGh0IiwgIi54aHRtbCIpKToKKyAg
ICAgICAgICAgIGFzc2VydCBlcnJvcnMgPT0gW10KKworCiBvcGVuX21vZGVfY29kZSA9ICIiIgog
ZGVmIGZpcnN0KCk6CiAgICAgcmV0dXJuIHswfSgidGVzdC5wbmciKQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3Rz
L3Rlc3RfbGludC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X2xpbnQucHkKaW5kZXggMWZjMGM3YTcxNWNjYjY3NWVm
NTU1ZTZkODk5YjNhODVhOTNiYmY0MC4uYWYyYjdkM2Q0YWExOWYwYzFkNzJhNTU3NWI1MDEzYzc4
OTdlMWRjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9saW50
LnB5CkBAIC0yMTMsMTIgKzIxMywxMSBAQCBkZWYgdGVzdF9yZWZfYWJzb2x1dGVfdXJsKGNhcGxv
Zyk6CiAKIAogZGVmIHRlc3RfYWJvdXRfYmxhbmtfYXNfcmVmKGNhcGxvZyk6Ci0gICAgd2l0aCBf
bW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2VkX2NoZWNrX3BhdGg6CisgICAgd2l0aCBf
bW9ja19saW50KCJjaGVja19wYXRoIik6CiAgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tf
ZmlsZV9jb250ZW50cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgotICAgICAgICAg
ICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImFib3V0X2JsYW5rLXJlZi5odG1sIl0sICJub3Jt
YWwiKQorICAgICAgICAgICAgcnYgPSBsaW50KF9kdW1teV9yZXBvLCBbImFib3V0X2JsYW5rLmh0
bWwiXSwgIm5vcm1hbCIpCiAgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMAotICAgICAgICAgICAg
YXNzZXJ0IG5vdCBtb2NrZWRfY2hlY2tfcGF0aC5jYWxsZWQKLSAgICAgICAgICAgIGFzc2VydCBu
b3QgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbGVkCisgICAgICAgICAgICBhc3NlcnQg
bW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHMuY2FsbF9jb3VudCA9PSAxCiAgICAgYXNzZXJ0IGNh
cGxvZy50ZXh0ID09ICIiCiAKIApAQCAtMzk5LDE1ICszOTgsMzggQEAgZGVmIHRlc3RfY2hlY2tf
Y3NzX2dsb2JhbGx5X3VuaXF1ZV9pZ25vcmVkX2RpcihjYXBsb2cpOgogICAgIGFzc2VydCBjYXBs
b2cudGV4dCA9PSAiIgogCiAKK2RlZiB0ZXN0X2lnbm9yZV9nbG9iKGNhcGxvZyk6CisgICAgIyBM
aW50IHR3byBmaWxlcyBpbiB0aGUgcmVmLyBkaXJlY3RvcnksIGFuZCBwYXNzIGluIGlnbm9yZV9n
bG9iIHRvIG9taXQgb25lCisgICAgIyBvZiB0aGVtLgorICAgICMgV2hlbiB3ZSBvbWl0IGFic29s
dXRlLmh0bWwsIG5vIGxpbnQgZXJyb3JzIGFwcGVhciBzaW5jZSB0aGUgb3RoZXIgZmlsZSBpcwor
ICAgICMgY2xlYW4uCisgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19wYXRoIikgYXMgbW9ja2Vk
X2NoZWNrX3BhdGg6CisgICAgICAgIHdpdGggX21vY2tfbGludCgiY2hlY2tfZmlsZV9jb250ZW50
cyIpIGFzIG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgcnYgPSBsaW50
KF9kdW1teV9yZXBvLCBbInJlZi9hYnNvbHV0ZS5odG1sIiwgInJlZi9leGlzdGVudF9yZWxhdGl2
ZS5odG1sIl0sICJub3JtYWwiLCAiKnNvbHUqIikKKyAgICAgICAgICAgIGFzc2VydCBydiA9PSAw
CisgICAgICAgICAgICAjIEFsc28gY29uZmlybSB0aGF0IG9ubHkgb25lIGZpbGUgaXMgY2hlY2tl
ZAorICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMQor
ICAgICAgICAgICAgYXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQg
PT0gMQorICAgICAgICAgICAgYXNzZXJ0IGNhcGxvZy50ZXh0ID09ICIiCisgICAgIyBIb3dldmVy
LCBsaW50aW5nIHRoZSBzYW1lIHR3byBmaWxlcyB3aXRob3V0IGlnbm9yZV9nbG9iIHlpZWxkcyBs
aW50IGVycm9ycy4KKyAgICB3aXRoIF9tb2NrX2xpbnQoImNoZWNrX3BhdGgiKSBhcyBtb2NrZWRf
Y2hlY2tfcGF0aDoKKyAgICAgICAgd2l0aCBfbW9ja19saW50KCJjaGVja19maWxlX2NvbnRlbnRz
IikgYXMgbW9ja2VkX2NoZWNrX2ZpbGVfY29udGVudHM6CisgICAgICAgICAgICBydiA9IGxpbnQo
X2R1bW15X3JlcG8sIFsicmVmL2Fic29sdXRlLmh0bWwiLCAicmVmL2V4aXN0ZW50X3JlbGF0aXZl
Lmh0bWwiXSwgIm5vcm1hbCIpCisgICAgICAgICAgICBhc3NlcnQgcnYgPT0gMQorICAgICAgICAg
ICAgYXNzZXJ0IG1vY2tlZF9jaGVja19wYXRoLmNhbGxfY291bnQgPT0gMgorICAgICAgICAgICAg
YXNzZXJ0IG1vY2tlZF9jaGVja19maWxlX2NvbnRlbnRzLmNhbGxfY291bnQgPT0gMgorICAgICAg
ICAgICAgYXNzZXJ0ICJBQlNPTFVURS1VUkwtUkVGIiBpbiBjYXBsb2cudGV4dAorCisKIGRlZiB0
ZXN0X2FsbF9maWxlc3lzdGVtX3BhdGhzKCk6CiAgICAgd2l0aCBtb2NrLnBhdGNoKAotICAgICAg
ICAgICAgJ29zLndhbGsnLAotICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVsoJy4nLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWydkaXJfYScsICdkaXJfYiddLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgWydmaWxlX2EnLCAnZmlsZV9iJ10pLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAob3MucGF0aC5qb2luKCcuJywgJ2Rpcl9hJyksCisgICAgICAgICAgICAndG9vbHMubGlu
dC5saW50LndhbGsnLAorICAgICAgICAgICAgcmV0dXJuX3ZhbHVlPVsoJycsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICBbKCdkaXJfYScsIE5vbmUpLCAoJ2Rpcl9iJywgTm9uZSldLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgWygnZmlsZV9hJywgTm9uZSksICgnZmlsZV9iJywgTm9u
ZSldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdkaXJfYScsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBbXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZmlsZV9jJywg
J2ZpbGVfZCddKV0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2ZpbGVfYycsIE5vbmUp
LCAoJ2ZpbGVfZCcsIE5vbmUpXSldCiAgICAgKToKICAgICAgICAgZ290ID0gbGlzdChsaW50X21v
ZC5hbGxfZmlsZXN5c3RlbV9wYXRocygnLicpKQogICAgICAgICBhc3NlcnQgZ290ID09IFsnZmls
ZV9hJywKQEAgLTQxNiw2ICs0MzgsMjMgQEAgZGVmIHRlc3RfYWxsX2ZpbGVzeXN0ZW1fcGF0aHMo
KToKICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKCdkaXJfYScsICdmaWxlX2Qn
KV0KIAogCitkZWYgdGVzdF9maWxlc3lzdGVtX3BhdGhzX3N1YmRpcigpOgorICAgIHdpdGggbW9j
ay5wYXRjaCgKKyAgICAgICAgICAgICd0b29scy5saW50LmxpbnQud2FsaycsCisgICAgICAgICAg
ICByZXR1cm5fdmFsdWU9WygnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2Rpcl9h
JywgTm9uZSksICgnZGlyX2InLCBOb25lKV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBb
KCdmaWxlX2EnLCBOb25lKSwgKCdmaWxlX2InLCBOb25lKV0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAoJ2Rpcl9hJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgWygnZmlsZV9jJywgTm9uZSksICgnZmlsZV9kJywgTm9uZSld
KV0KKyAgICApOgorICAgICAgICBnb3QgPSBsaXN0KGxpbnRfbW9kLmFsbF9maWxlc3lzdGVtX3Bh
dGhzKCcuJywgJ2RpcicpKQorICAgICAgICBhc3NlcnQgZ290ID09IFtvcy5wYXRoLmpvaW4oJ2Rp
cicsICdmaWxlX2EnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKCdkaXIn
LCAnZmlsZV9iJyksCisgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbignZGlyJywg
J2Rpcl9hJywgJ2ZpbGVfYycpLAorICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
J2RpcicsICdkaXJfYScsICdmaWxlX2QnKV0KKworCiBkZWYgdGVzdF9tYWluX3dpdGhfYXJncygp
OgogICAgIG9yaWdfYXJndiA9IHN5cy5hcmd2CiAgICAgdHJ5OgpAQCAtNDI3LDcgKzQ2Niw4IEBA
IGRlZiB0ZXN0X21haW5fd2l0aF9hcmdzKCk6CiAgICAgICAgICAgICAgICAgbS5hc3NlcnRfY2Fs
bGVkX29uY2Vfd2l0aChyZXBvX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBbb3MucGF0aC5yZWxwYXRoKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgeCks
IHJlcG9fcm9vdCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgeCBpbiBbJ2EnLCAnYicsICdjJ11dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIm5vcm1hbCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAibm9ybWFsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0cigpKQogICAgIGZpbmFsbHk6CiAgICAgICAgIHN5cy5hcmd2ID0gb3JpZ19hcmd2CiAK
QEAgLTQzOSw3ICs0NzksNyBAQCBkZWYgdGVzdF9tYWluX25vX2FyZ3MoKToKICAgICAgICAgd2l0
aCBfbW9ja19saW50KCdsaW50JywgcmV0dXJuX3ZhbHVlPVRydWUpIGFzIG06CiAgICAgICAgICAg
ICB3aXRoIF9tb2NrX2xpbnQoJ2NoYW5nZWRfZmlsZXMnLCByZXR1cm5fdmFsdWU9Wydmb28nLCAn
YmFyJ10pOgogICAgICAgICAgICAgICAgIGxpbnRfbW9kLm1haW4oKip2YXJzKGNyZWF0ZV9wYXJz
ZXIoKS5wYXJzZV9hcmdzKCkpKQotICAgICAgICAgICAgICAgIG0uYXNzZXJ0X2NhbGxlZF9vbmNl
X3dpdGgocmVwb19yb290LCBbJ2ZvbycsICdiYXInXSwgIm5vcm1hbCIpCisgICAgICAgICAgICAg
ICAgbS5hc3NlcnRfY2FsbGVkX29uY2Vfd2l0aChyZXBvX3Jvb3QsIFsnZm9vJywgJ2JhciddLCAi
bm9ybWFsIiwgc3RyKCkpCiAgICAgZmluYWxseToKICAgICAgICAgc3lzLmFyZ3YgPSBvcmlnX2Fy
Z3YKIApAQCAtNDUxLDYgKzQ5MSw2IEBAIGRlZiB0ZXN0X21haW5fYWxsKCk6CiAgICAgICAgIHdp
dGggX21vY2tfbGludCgnbGludCcsIHJldHVybl92YWx1ZT1UcnVlKSBhcyBtOgogICAgICAgICAg
ICAgd2l0aCBfbW9ja19saW50KCdhbGxfZmlsZXN5c3RlbV9wYXRocycsIHJldHVybl92YWx1ZT1b
J2ZvbycsICdiYXInXSk6CiAgICAgICAgICAgICAgICAgbGludF9tb2QubWFpbigqKnZhcnMoY3Jl
YXRlX3BhcnNlcigpLnBhcnNlX2FyZ3MoKSkpCi0gICAgICAgICAgICAgICAgbS5hc3NlcnRfY2Fs
bGVkX29uY2Vfd2l0aChyZXBvX3Jvb3QsIFsnZm9vJywgJ2JhciddLCAibm9ybWFsIikKKyAgICAg
ICAgICAgICAgICBtLmFzc2VydF9jYWxsZWRfb25jZV93aXRoKHJlcG9fcm9vdCwgWydmb28nLCAn
YmFyJ10sICJub3JtYWwiLCBzdHIoKSkKICAgICBmaW5hbGx5OgogICAgICAgICBzeXMuYXJndiA9
IG9yaWdfYXJndgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfcGF0aF9saW50cy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0
X3BhdGhfbGludHMucHkKaW5kZXggYmY4NDE4ZDUyYTAyZTFhMjJiODNmYmIxNWMwYjQ2ODk2OTU0
NmRjNi4uNTU4YjBlZDRmNjQ4ZjQxZTc4ODhkMzNiMDRjOTdiY2U3MjBjYTVkYSAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50
L3Rlc3RzL3Rlc3RfcGF0aF9saW50cy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdGVzdF9wYXRoX2xpbnRzLnB5CkBA
IC0xLDUgKzEsOCBAQAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCiAK
K2ltcG9ydCBtb2NrCitpbXBvcnQgb3MKKwogZnJvbSAuLmxpbnQgaW1wb3J0IGNoZWNrX3BhdGgK
IGZyb20gLmJhc2UgaW1wb3J0IGNoZWNrX2Vycm9ycwogaW1wb3J0IHB5dGVzdApAQCAtMzAsNyAr
MzMsNyBAQCBkZWYgdGVzdF9mb3JiaWRkZW5fcGF0aF9sZW5ndGgoKToKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiLmFueS53b3JrZXIuaHRtbCIs
ICIuYW55LmpzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoIi5hbnkuaHRtbCIsICIuYW55LmpzIildKQogZGVmIHRlc3RfZm9yYmlkZGVuX3Bh
dGhfZW5kaW5ncyhwYXRoX2VuZGluZywgZ2VuZXJhdGVkKToKLSAgICBwYXRoID0gIi90ZXN0L3Rl
c3QiICsgcGF0aF9lbmRpbmcKKyAgICBwYXRoID0gInRlc3QvdGVzdCIgKyBwYXRoX2VuZGluZwog
CiAgICAgbWVzc2FnZSA9ICgicGF0aCBlbmRzIHdpdGggJXMgd2hpY2ggY29sbGlkZXMgd2l0aCBn
ZW5lcmF0ZWQgdGVzdHMgZnJvbSAlcyBmaWxlcyIgJQogICAgICAgICAgICAgICAgKHBhdGhfZW5k
aW5nLCBnZW5lcmF0ZWQpKQpAQCAtMzgsMyArNDEsNzYgQEAgZGVmIHRlc3RfZm9yYmlkZGVuX3Bh
dGhfZW5kaW5ncyhwYXRoX2VuZGluZywgZ2VuZXJhdGVkKToKICAgICBlcnJvcnMgPSBjaGVja19w
YXRoKCIvZm9vLyIsIHBhdGgpCiAgICAgY2hlY2tfZXJyb3JzKGVycm9ycykKICAgICBhc3NlcnQg
ZXJyb3JzID09IFsoIldPUktFUiBDT0xMSVNJT04iLCBtZXNzYWdlLCBwYXRoLCBOb25lKV0KKwor
CitkZWYgdGVzdF9maWxlX3R5cGUoKToKKyAgICBwYXRoID0gInRlc3QvdGVzdCIKKworICAgIG1l
c3NhZ2UgPSAiLyVzIGlzIGFuIHVuc3VwcG9ydGVkIGZpbGUgdHlwZSAoc3ltbGluaykiICUgKHBh
dGgsKQorCisgICAgd2l0aCBtb2NrLnBhdGNoKCJvcy5wYXRoLmlzbGluayIsIHJldHVybnZhbHVl
PVRydWUpOgorICAgICAgICBlcnJvcnMgPSBjaGVja19wYXRoKCIvZm9vLyIsIHBhdGgpCisKKyAg
ICBhc3NlcnQgZXJyb3JzID09IFsoIkZJTEUgVFlQRSIsIG1lc3NhZ2UsIHBhdGgsIE5vbmUpXQor
CisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGF0aCIsIFsiYWhlbS50dGYiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJBaGVtLnR0ZiIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFoZW0udFRmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAibm90LWFoZW0udHRmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic3VwcG9ydC9haGVtLnR0ZiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFoZW0vb3RoZXIudHRmIl0pCitkZWYgdGVzdF9haGVtX2NvcHkocGF0aCk6CisgICAgZXhwZWN0
ZWRfZXJyb3IgPSAoIkFIRU0gQ09QWSIsCisgICAgICAgICAgICAgICAgICAgICAgIkRvbid0IGFk
ZCBleHRyYSBjb3BpZXMgb2YgQWhlbSwgdXNlIC9mb250cy9BaGVtLnR0ZiIsCisgICAgICAgICAg
ICAgICAgICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICBOb25lKQorCisgICAgZXJy
b3JzID0gY2hlY2tfcGF0aCgiL2Zvby8iLCBwYXRoKQorCisgICAgYXNzZXJ0IGVycm9ycyA9PSBb
ZXhwZWN0ZWRfZXJyb3JdCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGF0aCIsIFsiYWhl
bS53b2ZmIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYWhlbS50dGZmIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydC9haGVtLndvZmYiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhaGVtL290aGVyLndvZmYiXSkKK2Rl
ZiB0ZXN0X2FoZW1fY29weV9uZWdhdGl2ZShwYXRoKToKKyAgICBlcnJvcnMgPSBjaGVja19wYXRo
KCIvZm9vLyIsIHBhdGgpCisKKyAgICBhc3NlcnQgZXJyb3JzID09IFtdCisKK0BweXRlc3QubWFy
ay5wYXJhbWV0cml6ZSgicGF0aCIsIFsiZWxzZXdoZXJlLy5naXRpZ25vcmUiLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJlbHNlL3doZXJlLy5naXRpZ25vcmUiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsc2V3aGVyZS90b29scy8uZ2l0aWdub3JlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZWxzZXdoZXJlL2RvY3MvLmdpdGln
bm9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsc2V3aGVyZS9yZXNv
dXJjZXMvd2ViaWRsMi8uZ2l0aWdub3JlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZWxzZXdoZXJlL2Nzcy90b29scy9hcGljbGllbnQvLmdpdGlnbm9yZSJdKQorZGVmIHRl
c3RfZ2l0aWdub3JlX2ZpbGUocGF0aCk6CisgICAgcGF0aCA9IG9zLnBhdGguam9pbigqcGF0aC5z
cGxpdCgiLyIpKQorCisgICAgZXhwZWN0ZWRfZXJyb3IgPSAoIkdJVElHTk9SRSIsCisgICAgICAg
ICAgICAgICAgICAgICAgIi5naXRpZ25vcmUgZm91bmQgb3V0c2lkZSB0aGUgcm9vdCIsCisgICAg
ICAgICAgICAgICAgICAgICAgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICBOb25lKQorCisg
ICAgZXJyb3JzID0gY2hlY2tfcGF0aCgiL2Zvby8iLCBwYXRoKQorCisgICAgYXNzZXJ0IGVycm9y
cyA9PSBbZXhwZWN0ZWRfZXJyb3JdCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGF0aCIs
IFsiLmdpdGlnbm9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVsc2V3
aGVyZS8uZ2l0aWdub3JlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVs
c2V3aGVyZS9uYW1lLmdpdGlnbm9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRvb2xzLy5naXRpZ25vcmUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJ0b29scy9lbHNld2hlcmUvLmdpdGlnbm9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImRvY3MvLmdpdGlnbm9yZSIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZG9jcy9lbHNld2hlcmUvLmdpdGlnbm9yZSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInJlc291cmNlcy93ZWJpZGwyLy5naXRpZ25vcmUiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJyZXNvdXJjZXMvd2ViaWRsMi9lbHNld2hlcmUvLmdpdGln
bm9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNzcy90b29scy9hcGlj
bGllbnQvLmdpdGlnbm9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNz
cy90b29scy9hcGljbGllbnQvZWxzZXdoZXJlLy5naXRpZ25vcmUiXSkKK2RlZiB0ZXN0X2dpdGln
bm9yZV9uZWdhdGl2ZShwYXRoKToKKyAgICBwYXRoID0gb3MucGF0aC5qb2luKCpwYXRoLnNwbGl0
KCIvIikpCisKKyAgICBlcnJvcnMgPSBjaGVja19wYXRoKCIvZm9vLyIsIHBhdGgpCisKKyAgICBh
c3NlcnQgZXJyb3JzID09IFtdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVzdHMv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3YjUxODlmYmUx
MWQ5OGNkZDc4OGYzMDZkZTY1NmIxNjY4YmViODQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL2Jhc2UucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdGVz
dHMvdGVzdF9maWxlX2xpbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9saW50L3Rlc3RzL3Rlc3RfbGludC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC90ZXN0cy90ZXN0X3BhdGhf
bGludHMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbGludC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ5NDM2NDI2NGViZGRkZmYxM2FkNTM1Y2Y5MDI0OWU4
MzUwNzRmMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L2xpbnQvX19pbml0X18ucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9saW50L2NvbW1hbmRzLmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL2xpbnQvZm5tYXRjaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9mbm1hdGNoLnB5Ywot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbGludC9s
aW50LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9saW50L2xpbnQucHljCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L1hNTFBhcnNlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFyc2Vy
LnB5CmluZGV4IDUyM2Y1NDRiN2M0ZTgzNGI4NWQ5NzBhMzUyYWFiMjhkM2M4NDYxNDUuLjZmNWZm
NGQzNWRhYjY3OTU5OWIxMTU1YzZiYmIzMzRiMmYwN2Y3YjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvWE1MUGFy
c2VyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvWE1MUGFyc2VyLnB5CkBAIC0xLDIwICsxLDMyIEBACitpbXBvcnQgc3lz
CiBmcm9tIG9zLnBhdGggaW1wb3J0IGRpcm5hbWUsIGpvaW4KIAogZnJvbSBjb2xsZWN0aW9ucyBp
bXBvcnQgT3JkZXJlZERpY3QKIAogZnJvbSB4bWwucGFyc2VycyBpbXBvcnQgZXhwYXQKLWltcG9y
dCB4bWwuZXRyZWUuRWxlbWVudFRyZWUgYXMgZXRyZWUKK2ltcG9ydCB4bWwuZXRyZWUuRWxlbWVu
dFRyZWUgYXMgZXRyZWUgICMgbm9xYTogTjgxMworCitNWVBZID0gRmFsc2UKK2lmIE1ZUFk6Cisg
ICAgIyBNWVBZIGlzIHNldCB0byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHkuCisgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IERpY3QKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorICAgIGZyb20g
dHlwaW5nIGltcG9ydCBPcHRpb25hbAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CisgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCiAKIF9jYXRhbG9nID0gam9pbihkaXJuYW1lKF9fZmls
ZV9fKSwgImNhdGFsb2ciKQogCiBkZWYgX3dyYXBfZXJyb3IoZSk6CisgICAgIyB0eXBlOiAoZXhw
YXQuZXJyb3IpIC0+IGV0cmVlLlBhcnNlRXJyb3IKICAgICBlcnIgPSBldHJlZS5QYXJzZUVycm9y
KGUpCiAgICAgZXJyLmNvZGUgPSBlLmNvZGUKICAgICBlcnIucG9zaXRpb24gPSBlLmxpbmVubywg
ZS5vZmZzZXQKICAgICByYWlzZSBlcnIKIAotX25hbWVzID0ge30KK19uYW1lcyA9IHt9ICAjIHR5
cGU6IERpY3Rbc3RyLCBzdHJdCiBkZWYgX2ZpeG5hbWUoa2V5KToKKyAgICAjIHR5cGU6IChzdHIp
IC0+IHN0cgogICAgIHRyeToKICAgICAgICAgbmFtZSA9IF9uYW1lc1trZXldCiAgICAgZXhjZXB0
IEtleUVycm9yOgpAQCAtMjUsNiArMzcsMTMgQEAgZGVmIF9maXhuYW1lKGtleSk6CiAgICAgcmV0
dXJuIG5hbWUKIAogCitpZiBzeXMudmVyc2lvbl9pbmZvWzA6Ml0gPj0gKDMsIDIpOgorICAgIF91
bmRlZmluZWRfZW50aXR5X2NvZGUgPSBleHBhdC5lcnJvcnMuY29kZXNbZXhwYXQuZXJyb3JzLlhN
TF9FUlJPUl9VTkRFRklORURfRU5USVRZXSAgIyB0eXBlOiBpbnQKK2Vsc2U6CisgICAgX2NvZGVz
ID0ge2V4cGF0LkVycm9yU3RyaW5nKGkpOiBpIGZvciBpIGluIHJhbmdlKDB4MTAwKX0gICMgdHlw
ZTogRGljdFtzdHIsIGludF0KKyAgICBfdW5kZWZpbmVkX2VudGl0eV9jb2RlID0gX2NvZGVzW2V4
cGF0LmVycm9ycy5YTUxfRVJST1JfVU5ERUZJTkVEX0VOVElUWV0KKworCiBjbGFzcyBYTUxQYXJz
ZXIob2JqZWN0KToKICAgICAiIiIKICAgICBBbiBYTUwgcGFyc2VyIHdpdGggc3VwcG9ydCBmb3Ig
WEhUTUwgRFREcyBhbmQgYWxsIFB5dGhvbi1zdXBwb3J0ZWQgZW5jb2RpbmdzCkBAIC0zNSwxMSAr
NTQsMTIgQEAgY2xhc3MgWE1MUGFyc2VyKG9iamVjdCk6CiAgICAgUHl0aG9uIGRvZXMsIHJhdGhl
ciB0aGFuIGp1c3QgdGhvc2Ugc3VwcG9ydGVkIGJ5IGV4cGF0LgogICAgICIiIgogICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgIyB0eXBlOiAoT3B0aW9uYWxb
c3RyXSkgLT4gTm9uZQogICAgICAgICBzZWxmLl9wYXJzZXIgPSBleHBhdC5QYXJzZXJDcmVhdGUo
ZW5jb2RpbmcsICJ9IikKICAgICAgICAgc2VsZi5fdGFyZ2V0ID0gZXRyZWUuVHJlZUJ1aWxkZXIo
KQogICAgICAgICAjIHBhcnNlciBzZXR0aW5ncwotICAgICAgICBzZWxmLl9wYXJzZXIuYnVmZmVy
X3RleHQgPSAxCi0gICAgICAgIHNlbGYuX3BhcnNlci5vcmRlcmVkX2F0dHJpYnV0ZXMgPSAxCisg
ICAgICAgIHNlbGYuX3BhcnNlci5idWZmZXJfdGV4dCA9IFRydWUKKyAgICAgICAgc2VsZi5fcGFy
c2VyLm9yZGVyZWRfYXR0cmlidXRlcyA9IFRydWUKICAgICAgICAgc2VsZi5fcGFyc2VyLlNldFBh
cmFtRW50aXR5UGFyc2luZyhleHBhdC5YTUxfUEFSQU1fRU5USVRZX1BBUlNJTkdfVU5MRVNTX1NU
QU5EQUxPTkUpCiAgICAgICAgICMgcGFyc2VyIGNhbGxiYWNrcwogICAgICAgICBzZWxmLl9wYXJz
ZXIuWG1sRGVjbEhhbmRsZXIgPSBzZWxmLl94bWxfZGVjbApAQCAtNDcsMzAgKzY3LDM1IEBAIGNs
YXNzIFhNTFBhcnNlcihvYmplY3QpOgogICAgICAgICBzZWxmLl9wYXJzZXIuRW5kRWxlbWVudEhh
bmRsZXIgPSBzZWxmLl9lbmQKICAgICAgICAgc2VsZi5fcGFyc2VyLkNoYXJhY3RlckRhdGFIYW5k
bGVyID0gc2VsZi5fZGF0YQogICAgICAgICBzZWxmLl9wYXJzZXIuRXh0ZXJuYWxFbnRpdHlSZWZI
YW5kbGVyID0gc2VsZi5fZXh0ZXJuYWwKLSAgICAgICAgc2VsZi5fcGFyc2VyLlNraXBwZWRFbnRp
dHlIYW5kbGVyID0gc2VsZi5fc2tpcHBlZAorICAgICAgICBzZWxmLl9wYXJzZXIuU2tpcHBlZEVu
dGl0eUhhbmRsZXIgPSBzZWxmLl9za2lwcGVkICAjIHR5cGU6IGlnbm9yZQogICAgICAgICAjIHVz
ZWQgZm9yIG91ciBob3JyaWJsZSByZS1lbmNvZGluZyBoYWNrCi0gICAgICAgIHNlbGYuX2ZlZF9k
YXRhID0gW10KLSAgICAgICAgc2VsZi5fcmVhZF9lbmNvZGluZyA9IE5vbmUKKyAgICAgICAgc2Vs
Zi5fZmVkX2RhdGEgPSBbXSAgIyB0eXBlOiBPcHRpb25hbFtMaXN0W2J5dGVzXV0KKyAgICAgICAg
c2VsZi5fcmVhZF9lbmNvZGluZyA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbc3RyXQogCiAgICAg
ZGVmIF94bWxfZGVjbChzZWxmLCB2ZXJzaW9uLCBlbmNvZGluZywgc3RhbmRhbG9uZSk6CisgICAg
ICAgICMgdHlwZTogKHN0ciwgT3B0aW9uYWxbc3RyXSwgaW50KSAtPiBOb25lCiAgICAgICAgIHNl
bGYuX3JlYWRfZW5jb2RpbmcgPSBlbmNvZGluZwogCiAgICAgZGVmIF9zdGFydChzZWxmLCB0YWcs
IGF0dHJpYl9pbik6CisgICAgICAgICMgdHlwZTogKHN0ciwgTGlzdFtzdHJdKSAtPiBldHJlZS5F
bGVtZW50CiAgICAgICAgIHNlbGYuX2ZlZF9kYXRhID0gTm9uZQogICAgICAgICB0YWcgPSBfZml4
bmFtZSh0YWcpCi0gICAgICAgIGF0dHJpYiA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgYXR0cmli
ID0gT3JkZXJlZERpY3QoKSAgIyB0eXBlOiBEaWN0W1VuaW9uW3N0ciwgVGV4dF0sIFVuaW9uW3N0
ciwgVGV4dF1dCiAgICAgICAgIGlmIGF0dHJpYl9pbjoKICAgICAgICAgICAgIGZvciBpIGluIHJh
bmdlKDAsIGxlbihhdHRyaWJfaW4pLCAyKToKICAgICAgICAgICAgICAgICBhdHRyaWJbX2ZpeG5h
bWUoYXR0cmliX2luW2ldKV0gPSBhdHRyaWJfaW5baSsxXQogICAgICAgICByZXR1cm4gc2VsZi5f
dGFyZ2V0LnN0YXJ0KHRhZywgYXR0cmliKQogCiAgICAgZGVmIF9kYXRhKHNlbGYsIHRleHQpOgot
ICAgICAgICByZXR1cm4gc2VsZi5fdGFyZ2V0LmRhdGEodGV4dCkKKyAgICAgICAgIyB0eXBlOiAo
c3RyKSAtPiBOb25lCisgICAgICAgIHNlbGYuX3RhcmdldC5kYXRhKHRleHQpCiAKICAgICBkZWYg
X2VuZChzZWxmLCB0YWcpOgorICAgICAgICAjIHR5cGU6IChzdHIpIC0+IGV0cmVlLkVsZW1lbnQK
ICAgICAgICAgcmV0dXJuIHNlbGYuX3RhcmdldC5lbmQoX2ZpeG5hbWUodGFnKSkKIAogICAgIGRl
ZiBfZXh0ZXJuYWwoc2VsZiwgY29udGV4dCwgYmFzZSwgc3lzdGVtX2lkLCBwdWJsaWNfaWQpOgor
ICAgICAgICAjIHR5cGU6IChzdHIsIE9wdGlvbmFsW3N0cl0sIE9wdGlvbmFsW3N0cl0sIE9wdGlv
bmFsW3N0cl0pIC0+IGJvb2wKICAgICAgICAgaWYgcHVibGljX2lkIGluIHsKICAgICAgICAgICAg
ICAgICAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iLAogICAgICAgICAg
ICAgICAgICItLy9XM0MvL0RURCBYSFRNTCAxLjEvL0VOIiwKQEAgLTkyLDE1ICsxMTcsMTcgQEAg
Y2xhc3MgWE1MUGFyc2VyKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBUcnVlCiAKICAgICBkZWYg
X3NraXBwZWQoc2VsZiwgbmFtZSwgaXNfcGFyYW1ldGVyX2VudGl0eSk6CisgICAgICAgICMgdHlw
ZTogKHN0ciwgYm9vbCkgLT4gTm9uZQogICAgICAgICBlcnIgPSBleHBhdC5lcnJvcigidW5kZWZp
bmVkIGVudGl0eSAlczogbGluZSAlZCwgY29sdW1uICVkIiAlCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChuYW1lLCBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fcGFyc2VyLkVycm9yQ29sdW1uTnVtYmVyKSkKLSAgICAgICAg
ZXJyLmNvZGUgPSBleHBhdC5lcnJvcnMuWE1MX0VSUk9SX1VOREVGSU5FRF9FTlRJVFkKKyAgICAg
ICAgZXJyLmNvZGUgPSBfdW5kZWZpbmVkX2VudGl0eV9jb2RlCiAgICAgICAgIGVyci5saW5lbm8g
PSBzZWxmLl9wYXJzZXIuRXJyb3JMaW5lTnVtYmVyCiAgICAgICAgIGVyci5vZmZzZXQgPSBzZWxm
Ll9wYXJzZXIuRXJyb3JDb2x1bW5OdW1iZXIKICAgICAgICAgcmFpc2UgZXJyCiAKICAgICBkZWYg
ZmVlZChzZWxmLCBkYXRhKToKKyAgICAgICAgIyB0eXBlOiAoc3RyKSAtPiBOb25lCiAgICAgICAg
IGlmIHNlbGYuX2ZlZF9kYXRhIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5fZmVkX2Rh
dGEuYXBwZW5kKGRhdGEpCiAgICAgICAgIHRyeToKQEAgLTExMCw2ICsxMzcsNyBAQCBjbGFzcyBY
TUxQYXJzZXIob2JqZWN0KToKICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IgYXMgZToKICAgICAg
ICAgICAgIGlmIGUuYXJnc1swXSA9PSAnbXVsdGktYnl0ZSBlbmNvZGluZ3MgYXJlIG5vdCBzdXBw
b3J0ZWQnOgogICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLl9yZWFkX2VuY29kaW5nIGlzIG5v
dCBOb25lCisgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuX2ZlZF9kYXRhIGlzIG5vdCBOb25l
CiAgICAgICAgICAgICAgICAgeG1sID0gYiIiLmpvaW4oc2VsZi5fZmVkX2RhdGEpLmRlY29kZShz
ZWxmLl9yZWFkX2VuY29kaW5nKS5lbmNvZGUoInV0Zi04IikKICAgICAgICAgICAgICAgICBuZXdf
cGFyc2VyID0gWE1MUGFyc2VyKCJ1dGYtOCIpCiAgICAgICAgICAgICAgICAgc2VsZi5fcGFyc2Vy
ID0gbmV3X3BhcnNlci5fcGFyc2VyCkBAIC0xMTgsNiArMTQ2LDcgQEAgY2xhc3MgWE1MUGFyc2Vy
KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgc2VsZi5mZWVkKHhtbCkKIAogICAgIGRlZiBjbG9z
ZShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBldHJlZS5FbGVtZW50CiAgICAgICAgIHRy
eToKICAgICAgICAgICAgIHNlbGYuX3BhcnNlci5QYXJzZSgiIiwgVHJ1ZSkKICAgICAgICAgZXhj
ZXB0IGV4cGF0LmVycm9yIGFzIHY6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2NhdGFsb2cvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21h
bmlmZXN0L2NhdGFsb2cvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDdkMTM5MTFjMGE3YmJlY2VjZjZhYWRmYTEwNWZkOGQ1NTlhMDcyNzYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3czYy1pbXBvcnQu
bG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGly
ZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9k
aWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1
bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNj
LXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0
aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jYXRhbG9nL3ho
dG1sLmR0ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9tYW5pZmVzdC9jb21tYW5kcy5qc29uIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9jb21tYW5kcy5qc29uCmlu
ZGV4IGQ2Y2NkOTg4MDllZjg5NTE2NjJiZGI5YzBiZjA1ZjIzM2VhZTRkYjIuLjc2OTY3NWUwZWU0
MmM2ZWZjMzZmYzExNTA3Nzg2ODJmOTMzYTY0NjUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvY29tbWFuZHMuanNv
bgorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L2NvbW1hbmRzLmpzb24KQEAgLTEsNiArMSwyMyBAQAoteyJtYW5pZmVzdCI6Ci0g
eyJwYXRoIjogInVwZGF0ZS5weSIsICJzY3JpcHQiOiAicnVuIiwgInBhcnNlciI6ICJjcmVhdGVf
cGFyc2VyIiwgImhlbHAiOiAiVXBkYXRlIHRoZSBNQU5JRkVTVC5qc29uIGZpbGUiLAotICAidmly
dHVhbGVudiI6IGZhbHNlfSwKLSAibWFuaWZlc3QtZG93bmxvYWQiOgotIHsicGF0aCI6ICJkb3du
bG9hZC5weSIsICJzY3JpcHQiOiAicnVuIiwgInBhcnNlciI6ICJjcmVhdGVfcGFyc2VyIiwgImhl
bHAiOiAiRG93bmxvYWQgcmVjZW50IHByZWdlbmVyYXRlZCBNQU5JRkVTVC5qc29uIGZpbGUiLAot
ICAidmlydHVhbGVudiI6IGZhbHNlfX0KK3sKKyAgIm1hbmlmZXN0IjogeworICAgICJwYXRoIjog
InVwZGF0ZS5weSIsCisgICAgInNjcmlwdCI6ICJydW4iLAorICAgICJwYXJzZXIiOiAiY3JlYXRl
X3BhcnNlciIsCisgICAgImhlbHAiOiAiVXBkYXRlIHRoZSBNQU5JRkVTVC5qc29uIGZpbGUiLAor
ICAgICJ2aXJ0dWFsZW52IjogZmFsc2UKKyAgfSwKKyAgIm1hbmlmZXN0LWRvd25sb2FkIjogewor
ICAgICJwYXRoIjogImRvd25sb2FkLnB5IiwKKyAgICAic2NyaXB0IjogInJ1biIsCisgICAgInBh
cnNlciI6ICJjcmVhdGVfcGFyc2VyIiwKKyAgICAiaGVscCI6ICJEb3dubG9hZCByZWNlbnQgcHJl
Z2VuZXJhdGVkIE1BTklGRVNULmpzb24gZmlsZSIsCisgICAgInZpcnR1YWxlbnYiOiBmYWxzZQor
ICB9LAorICAidGVzdC1wYXRocyI6IHsKKyAgICAicGF0aCI6ICJ0ZXN0cGF0aHMucHkiLAorICAg
ICJzY3JpcHQiOiAicnVuIiwKKyAgICAicGFyc2VyIjogImNyZWF0ZV9wYXJzZXIiLAorICAgICJo
ZWxwIjogIlByaW50IHRlc3QgcGF0aHMgZ2l2ZW4gYSBzZXQgb2YgdGVzdCBpZHMiLAorICAgICJ2
aXJ0dWFsZW52IjogZmFsc2UKKyAgfQorfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9hZC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
ZG93bmxvYWQucHkKaW5kZXggOGJiM2NiNjczZGU1NGYwNjc2ZDFjYjg3M2EwODUzYzlkZGY2NWQ0
Yi4uMzczNmQ1NGYxNWRjNWU5YzY2YzU2MDczMGFjZDA4ZjQzZTUzZGIzMCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9kb3dubG9hZC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5CkBAIC0xLDYgKzEsNyBAQAogZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKIAogaW1wb3J0IGFyZ3BhcnNlCitpbXBv
cnQgYnoyCiBpbXBvcnQgZ3ppcAogaW1wb3J0IGpzb24KIGltcG9ydCBpbwpAQCAtOSwxMCArMTAs
MjMgQEAgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQogCiBmcm9tIHNp
eC5tb3Zlcy51cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgogCi1mcm9tIC52Y3MgaW1wb3J0
IEdpdAordHJ5OgorICAgIGltcG9ydCB6c3RhbmRhcmQKK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAg
ICB6c3RhbmRhcmQgPSBOb25lCisKK2Zyb20gLnV0aWxzIGltcG9ydCBnaXQKIAogZnJvbSAuIGlt
cG9ydCBsb2cKIAorTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8g
VHJ1ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBBbnkKKyAg
ICBmcm9tIHR5cGluZyBpbXBvcnQgQ2FsbGFibGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTGlz
dAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorCiBoZXJlID0gb3MucGF0aC5kaXJu
YW1lKF9fZmlsZV9fKQogCiB3cHRfcm9vdCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4o
aGVyZSwgb3MucGFyZGlyLCBvcy5wYXJkaXIpKQpAQCAtMjAsMTAgKzM0LDEyIEBAIGxvZ2dlciA9
IGxvZy5nZXRfbG9nZ2VyKCkKIAogCiBkZWYgYWJzX3BhdGgocGF0aCk6CisgICAgIyB0eXBlOiAo
c3RyKSAtPiBzdHIKICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZXhwYW5kdXNl
cihwYXRoKSkKIAogCiBkZWYgc2hvdWxkX2Rvd25sb2FkKG1hbmlmZXN0X3BhdGgsIHJlYnVpbGRf
dGltZT10aW1lZGVsdGEoZGF5cz01KSk6CisgICAgIyB0eXBlOiAoc3RyLCB0aW1lZGVsdGEpIC0+
IGJvb2wKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobWFuaWZlc3RfcGF0aCk6CiAgICAgICAg
IHJldHVybiBUcnVlCiAgICAgbXRpbWUgPSBkYXRldGltZS5mcm9tdGltZXN0YW1wKG9zLnBhdGgu
Z2V0bXRpbWUobWFuaWZlc3RfcGF0aCkpCkBAIC0zMyw3MiArNDksMTI4IEBAIGRlZiBzaG91bGRf
ZG93bmxvYWQobWFuaWZlc3RfcGF0aCwgcmVidWlsZF90aW1lPXRpbWVkZWx0YShkYXlzPTUpKToK
ICAgICByZXR1cm4gRmFsc2UKIAogCi1kZWYgZ2l0X2NvbW1pdHMocmVwb19yb290KToKLSAgICBn
aXQgPSBHaXQuZ2V0X2Z1bmMocmVwb19yb290KQotICAgIHJldHVybiBbaXRlbSBmb3IgaXRlbSBp
biBnaXQoImxvZyIsICItLWZvcm1hdD0lSCIsICItbjUwIikuc3BsaXQoIlxuIikgaWYgaXRlbV0K
LQotCi1kZWYgZ2l0aHViX3VybChjb21taXRzKToKLSAgICB0cnk6Ci0gICAgICAgIHJlc3AgPSB1
cmxvcGVuKCJodHRwczovL2FwaS5naXRodWIuY29tL3JlcG9zL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQvcmVsZWFzZXMiKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHJldHVybiBOb25l
Ci0KLSAgICBpZiByZXNwLmNvZGUgIT0gMjAwOgotICAgICAgICByZXR1cm4gTm9uZQotCi0gICAg
dHJ5OgotICAgICAgICByZWxlYXNlcyA9IGpzb24ubG9hZChyZXNwLmZwKQotICAgIGV4Y2VwdCBW
YWx1ZUVycm9yOgotICAgICAgICBsb2dnZXIud2FybmluZygiUmVzcG9uc2Ugd2FzIG5vdCB2YWxp
ZCBKU09OIikKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGZhbGxiYWNrID0gTm9uZQotICAg
IGZvciByZWxlYXNlIGluIHJlbGVhc2VzOgotICAgICAgICBmb3IgY29tbWl0IGluIGNvbW1pdHM6
Ci0gICAgICAgICAgICBmb3IgaXRlbSBpbiByZWxlYXNlWyJhc3NldHMiXToKLSAgICAgICAgICAg
ICAgICBpZiBpdGVtWyJuYW1lIl0gPT0gIk1BTklGRVNULSVzLmpzb24uZ3oiICUgY29tbWl0Ogot
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXRlbVsiYnJvd3Nlcl9kb3dubG9hZF91cmwiXQot
ICAgICAgICAgICAgICAgIGVsaWYgaXRlbVsibmFtZSJdID09ICJNQU5JRkVTVC5qc29uLmd6IiBh
bmQgbm90IGZhbGxiYWNrOgotICAgICAgICAgICAgICAgICAgICBmYWxsYmFjayA9IGl0ZW1bImJy
b3dzZXJfZG93bmxvYWRfdXJsIl0KLSAgICBpZiBmYWxsYmFjazoKLSAgICAgICAgbG9nZ2VyLmlu
Zm8oIkNhbid0IGZpbmQgYSBjb21taXQtc3BlY2lmaWMgbWFuaWZlc3Qgc28ganVzdCB1c2luZyB0
aGUgbW9zdCByZWNlbnQgb25lIikKLSAgICAgICAgcmV0dXJuIGZhbGxiYWNrCi0KLQotZGVmIGRv
d25sb2FkX21hbmlmZXN0KG1hbmlmZXN0X3BhdGgsIGNvbW1pdHNfZnVuYywgdXJsX2Z1bmMsIGZv
cmNlPUZhbHNlKToKK2RlZiBtZXJnZV9wcl90YWdzKHJlcG9fcm9vdCwgbWF4X2NvdW50PTUwKToK
KyAgICAjIHR5cGU6IChzdHIsIGludCkgLT4gTGlzdFtzdHJdCisgICAgZ2l0ZnVuYyA9IGdpdChy
ZXBvX3Jvb3QpCisgICAgdGFncyA9IFtdICAjIHR5cGU6IExpc3Rbc3RyXQorICAgIGlmIGdpdGZ1
bmMgaXMgTm9uZToKKyAgICAgICAgcmV0dXJuIHRhZ3MKKyAgICBmb3IgbGluZSBpbiBnaXRmdW5j
KCJsb2ciLCAiLS1mb3JtYXQ9JUQiLCAiLS1tYXgtY291bnQ9JXMiICUgbWF4X2NvdW50KS5zcGxp
dCgiXG4iKToKKyAgICAgICAgZm9yIHJlZiBpbiBsaW5lLnNwbGl0KCIsICIpOgorICAgICAgICAg
ICAgaWYgcmVmLnN0YXJ0c3dpdGgoInRhZzogbWVyZ2VfcHJfIik6CisgICAgICAgICAgICAgICAg
dGFncy5hcHBlbmQocmVmWzU6XSkKKyAgICByZXR1cm4gdGFncworCisKK2RlZiBzY29yZV9uYW1l
KG5hbWUpOgorICAgICMgdHlwZTogKHN0cikgLT4gT3B0aW9uYWxbaW50XQorICAgICIiIlNjb3Jl
IGhvdyBtdWNoIHdlIGxpa2UgZWFjaCBmaWxlbmFtZSwgbG93ZXIgd2lucywgTm9uZSByZWplY3Rz
IiIiCisKKyAgICAjIEFjY2VwdCBib3RoIHdheXMgb2YgbmFtaW5nIHRoZSBtYW5pZmVzdCBhc3Nl
dCwgZXZlbiB0aG91Z2gKKyAgICAjIHRoZXJlJ3Mgbm8gbG9uZ2VyIGEgcmVhc29uIHRvIGluY2x1
ZGUgdGhlIGNvbW1pdCBzaGEuCisgICAgaWYgbmFtZS5zdGFydHN3aXRoKCJNQU5JRkVTVC0iKSBv
ciBuYW1lLnN0YXJ0c3dpdGgoIk1BTklGRVNULiIpOgorICAgICAgICBpZiB6c3RhbmRhcmQgYW5k
IG5hbWUuZW5kc3dpdGgoImpzb24uenN0Iik6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAg
ICBpZiBuYW1lLmVuZHN3aXRoKCIuanNvbi5iejIiKToKKyAgICAgICAgICAgIHJldHVybiAyCisg
ICAgICAgIGlmIG5hbWUuZW5kc3dpdGgoIi5qc29uLmd6Iik6CisgICAgICAgICAgICByZXR1cm4g
MworICAgIHJldHVybiBOb25lCisKKworZGVmIGdpdGh1Yl91cmwodGFncyk6CisgICAgIyB0eXBl
OiAoTGlzdFtzdHJdKSAtPiBPcHRpb25hbFtMaXN0W3N0cl1dCisgICAgZm9yIHRhZyBpbiB0YWdz
OgorICAgICAgICB1cmwgPSAiaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9yZXBvcy93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0L3JlbGVhc2VzL3RhZ3MvJXMiICUgdGFnCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHJlc3AgPSB1cmxvcGVuKHVybCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAg
ICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJGZXRjaGluZyAlcyBmYWlsZWQiICUgdXJsKQorICAg
ICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiByZXNwLmNvZGUgIT0gMjAwOgorICAgICAg
ICAgICAgbG9nZ2VyLndhcm5pbmcoIkZldGNoaW5nICVzIGZhaWxlZDsgZ290IEhUVFAgc3RhdHVz
ICVkIiAlICh1cmwsIHJlc3AuY29kZSkpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIHJlbGVhc2UgPSBqc29uLmxvYWQocmVzcC5mcCkKKyAgICAgICAg
ZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiUmVzcG9uc2Ug
d2FzIG5vdCB2YWxpZCBKU09OIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAg
Y2FuZGlkYXRlcyA9IFtdCisgICAgICAgIGZvciBpdGVtIGluIHJlbGVhc2VbImFzc2V0cyJdOgor
ICAgICAgICAgICAgc2NvcmUgPSBzY29yZV9uYW1lKGl0ZW1bIm5hbWUiXSkKKyAgICAgICAgICAg
IGlmIHNjb3JlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5k
KChzY29yZSwgaXRlbVsiYnJvd3Nlcl9kb3dubG9hZF91cmwiXSkpCisKKyAgICAgICAgcmV0dXJu
IFtpdGVtWzFdIGZvciBpdGVtIGluIHNvcnRlZChjYW5kaWRhdGVzKV0KKworICAgIHJldHVybiBO
b25lCisKKworZGVmIGRvd25sb2FkX21hbmlmZXN0KAorICAgICAgICBtYW5pZmVzdF9wYXRoLCAg
IyB0eXBlOiBzdHIKKyAgICAgICAgdGFnc19mdW5jLCAgIyB0eXBlOiBDYWxsYWJsZVtbXSwgTGlz
dFtzdHJdXQorICAgICAgICB1cmxfZnVuYywgICMgdHlwZTogQ2FsbGFibGVbW0xpc3Rbc3RyXV0s
IE9wdGlvbmFsW0xpc3Rbc3RyXV1dCisgICAgICAgIGZvcmNlPUZhbHNlICAjIHR5cGU6IGJvb2wK
Kyk6CisgICAgIyB0eXBlOiAoLi4uKSAtPiBib29sCiAgICAgaWYgbm90IGZvcmNlIGFuZCBub3Qg
c2hvdWxkX2Rvd25sb2FkKG1hbmlmZXN0X3BhdGgpOgogICAgICAgICByZXR1cm4gRmFsc2UKIAot
ICAgIGNvbW1pdHMgPSBjb21taXRzX2Z1bmMoKQorICAgIHRhZ3MgPSB0YWdzX2Z1bmMoKQogCi0g
ICAgdXJsID0gdXJsX2Z1bmMoY29tbWl0cykKLSAgICBpZiBub3QgdXJsOgorICAgIHVybHMgPSB1
cmxfZnVuYyh0YWdzKQorICAgIGlmIG5vdCB1cmxzOgogICAgICAgICBsb2dnZXIud2FybmluZygi
Tm8gZ2VuZXJhdGVkIG1hbmlmZXN0IGZvdW5kIikKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAg
ICBsb2dnZXIuaW5mbygiRG93bmxvYWRpbmcgbWFuaWZlc3QgZnJvbSAlcyIgJSB1cmwpCi0gICAg
dHJ5OgotICAgICAgICByZXNwID0gdXJsb3Blbih1cmwpCi0gICAgZXhjZXB0IEV4Y2VwdGlvbjoK
LSAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkRvd25sb2FkaW5nIHByZWdlbmVyYXRlZCBtYW5pZmVz
dCBmYWlsZWQiKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGlmIHJlc3AuY29kZSAhPSAy
MDA6Ci0gICAgICAgIGxvZ2dlci53YXJuaW5nKCJEb3dubG9hZGluZyBwcmVnZW5lcmF0ZWQgbWFu
aWZlc3QgZmFpbGVkOyBnb3QgSFRUUCBzdGF0dXMgJWQiICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcC5jb2RlKQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGd6ZiA9IGd6aXAuR3pp
cEZpbGUoZmlsZW9iaj1pby5CeXRlc0lPKHJlc3AucmVhZCgpKSkKLQotICAgIHRyeToKLSAgICAg
ICAgZGVjb21wcmVzc2VkID0gZ3pmLnJlYWQoKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAg
ICBsb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGRlY29tcHJlc3MgZG93bmxvYWRlZCBmaWxlIikK
KyAgICBmb3IgdXJsIGluIHVybHM6CisgICAgICAgIGxvZ2dlci5pbmZvKCJEb3dubG9hZGluZyBt
YW5pZmVzdCBmcm9tICVzIiAlIHVybCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgcmVzcCA9
IHVybG9wZW4odXJsKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgbG9n
Z2VyLndhcm5pbmcoIkRvd25sb2FkaW5nIHByZWdlbmVyYXRlZCBtYW5pZmVzdCBmYWlsZWQiKQor
ICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiByZXNwLmNvZGUgIT0gMjAwOgorICAg
ICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkRvd25sb2FkaW5nIHByZWdlbmVyYXRlZCBtYW5pZmVz
dCBmYWlsZWQ7IGdvdCBIVFRQIHN0YXR1cyAlZCIgJQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcC5jb2RlKQorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBpZiB1cmwuZW5k
c3dpdGgoIi56c3QiKToKKyAgICAgICAgICAgIGlmIG5vdCB6c3RhbmRhcmQ6CisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBkY3R4ID0g
enN0YW5kYXJkLlpzdGREZWNvbXByZXNzb3IoKQorICAgICAgICAgICAgICAgIGRlY29tcHJlc3Nl
ZCA9IGRjdHguZGVjb21wcmVzcyhyZXNwLnJlYWQoKSkKKyAgICAgICAgICAgIGV4Y2VwdCBJT0Vy
cm9yOgorICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gZGVjb21wcmVz
cyBkb3dubG9hZGVkIGZpbGUiKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGVs
aWYgdXJsLmVuZHN3aXRoKCIuYnoyIik6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgZGVjb21wcmVzc2VkID0gYnoyLmRlY29tcHJlc3MocmVzcC5yZWFkKCkpCisgICAgICAgICAg
ICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiRmFpbGVk
IHRvIGRlY29tcHJlc3MgZG93bmxvYWRlZCBmaWxlIikKKyAgICAgICAgICAgICAgICBjb250aW51
ZQorICAgICAgICBlbGlmIHVybC5lbmRzd2l0aCgiLmd6Iik6CisgICAgICAgICAgICBmaWxlb2Jq
ID0gaW8uQnl0ZXNJTyhyZXNwLnJlYWQoKSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAg
ICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW9iaj1maWxlb2JqKSBhcyBnemY6CisgICAgICAg
ICAgICAgICAgICAgIGRlY29tcHJlc3NlZCA9IGd6Zi5yZWFkKCkgICMgdHlwZTogaWdub3JlCisg
ICAgICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAgICAgICBsb2dnZXIud2Fybmlu
ZygiRmFpbGVkIHRvIGRlY29tcHJlc3MgZG93bmxvYWRlZCBmaWxlIikKKyAgICAgICAgICAgICAg
ICBjb250aW51ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIlVu
a25vd24gZmlsZSBleHRlbnNpb246ICVzIiAlIHVybCkKKyAgICAgICAgICAgIGNvbnRpbnVlCisg
ICAgICAgIGJyZWFrCisgICAgZWxzZToKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICB0cnk6
Ci0gICAgICAgIHdpdGggb3BlbihtYW5pZmVzdF9wYXRoLCAidyIpIGFzIGY6CisgICAgICAgIHdp
dGggb3BlbihtYW5pZmVzdF9wYXRoLCAid2IiKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShk
ZWNvbXByZXNzZWQpCiAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgbG9nZ2VyLndhcm5p
bmcoIkZhaWxlZCB0byB3cml0ZSBtYW5pZmVzdCIpCkBAIC0xMDgsNiArMTgwLDcgQEAgZGVmIGRv
d25sb2FkX21hbmlmZXN0KG1hbmlmZXN0X3BhdGgsIGNvbW1pdHNfZnVuYywgdXJsX2Z1bmMsIGZv
cmNlPUZhbHNlKToKIAogCiBkZWYgY3JlYXRlX3BhcnNlcigpOgorICAgICMgdHlwZTogKCkgLT4g
YXJncGFyc2UuQXJndW1lbnRQYXJzZXIKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBh
cnNlcigpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1wIiwgIi0tcGF0aCIs
IHR5cGU9YWJzX3BhdGgsIGhlbHA9IlBhdGggdG8gbWFuaWZlc3QgZmlsZS4iKQpAQCAtMTIwLDEx
ICsxOTMsMTMgQEAgZGVmIGNyZWF0ZV9wYXJzZXIoKToKIAogCiBkZWYgZG93bmxvYWRfZnJvbV9n
aXRodWIocGF0aCwgdGVzdHNfcm9vdCwgZm9yY2U9RmFsc2UpOgotICAgIHJldHVybiBkb3dubG9h
ZF9tYW5pZmVzdChwYXRoLCBsYW1iZGE6IGdpdF9jb21taXRzKHRlc3RzX3Jvb3QpLCBnaXRodWJf
dXJsLAorICAgICMgdHlwZTogKHN0ciwgc3RyLCBib29sKSAtPiBib29sCisgICAgcmV0dXJuIGRv
d25sb2FkX21hbmlmZXN0KHBhdGgsIGxhbWJkYTogbWVyZ2VfcHJfdGFncyh0ZXN0c19yb290KSwg
Z2l0aHViX3VybCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9Zm9yY2UpCiAK
IAogZGVmIHJ1bigqKmt3YXJncyk6CisgICAgIyB0eXBlOiAoKipBbnkpIC0+IGludAogICAgIGlm
IGt3YXJnc1sicGF0aCJdIGlzIE5vbmU6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oa3dh
cmdzWyJ0ZXN0c19yb290Il0sICJNQU5JRkVTVC5qc29uIikKICAgICBlbHNlOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9pdGVtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC9pdGVtLnB5CmluZGV4IDYxOTE5ZmNjMzFlOWM3YWZhOGMxZDU3MzNh
MjcyM2ZjNDFiZDMyNmQuLjIxN2Y2Y2FjMjYyZmJhMDIwYzA0NGQ5NjNkNDJjYTU1YTIzNjFlNTMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvaXRlbS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHkKQEAgLTEsMjMgKzEsMjggQEAK
K2Zyb20gY29weSBpbXBvcnQgY29weQorZnJvbSBpbnNwZWN0IGltcG9ydCBpc2Fic3RyYWN0Citm
cm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCB3aXRoX21ldGFjbGFzcwogZnJvbSBzaXgubW92ZXMu
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luLCB1cmxwYXJzZQogZnJvbSBhYmMgaW1wb3J0IEFC
Q01ldGEsIGFic3RyYWN0cHJvcGVydHkKIAorZnJvbSAudXRpbHMgaW1wb3J0IHRvX29zX3BhdGgK
IAotZGVmIGdldF9zb3VyY2VfZmlsZShzb3VyY2VfZmlsZXMsIHRlc3RzX3Jvb3QsIG1hbmlmZXN0
LCBwYXRoKToKLSAgICBkZWYgbWFrZV9uZXcoKToKLSAgICAgICAgZnJvbSAuc291cmNlZmlsZSBp
bXBvcnQgU291cmNlRmlsZQorTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBz
ZXQgdG8gVHJ1ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBP
cHRpb25hbAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CisgICAgZnJvbSB0eXBpbmcgaW1w
b3J0IERpY3QKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVHVwbGUKKyAgICBmcm9tIHR5cGluZyBp
bXBvcnQgTGlzdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBVbmlvbgorICAgIGZyb20gdHlwaW5n
IGltcG9ydCBUeXBlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorICAgIGZyb20gdHlwaW5n
IGltcG9ydCBTZXF1ZW5jZQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBIYXNoYWJsZQorICAgIGZy
b20gLm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdAorICAgIEZ1enp5ID0gRGljdFtPcHRpb25hbFtU
dXBsZVtUZXh0LCBUZXh0LCBUZXh0XV0sIExpc3RbaW50XV0KIAotICAgICAgICByZXR1cm4gU291
cmNlRmlsZSh0ZXN0c19yb290LCBwYXRoLCBtYW5pZmVzdC51cmxfYmFzZSkKLQotICAgIGlmIHNv
dXJjZV9maWxlcyBpcyBOb25lOgotICAgICAgICByZXR1cm4gbWFrZV9uZXcoKQotCi0gICAgaWYg
cGF0aCBub3QgaW4gc291cmNlX2ZpbGVzOgotICAgICAgICBzb3VyY2VfZmlsZXNbcGF0aF0gPSBt
YWtlX25ldygpCi0KLSAgICByZXR1cm4gc291cmNlX2ZpbGVzW3BhdGhdCi0KLQotaXRlbV90eXBl
cyA9IHt9CitpdGVtX3R5cGVzID0ge30gICMgdHlwZTogRGljdFtzdHIsIFR5cGVbTWFuaWZlc3RJ
dGVtXV0KIAogCiBjbGFzcyBNYW5pZmVzdEl0ZW1NZXRhKEFCQ01ldGEpOgpAQCAtMjUsMTU4ICsz
MCwyMjUgQEAgY2xhc3MgTWFuaWZlc3RJdGVtTWV0YShBQkNNZXRhKToKICAgICBpdGVtX3R5cGVz
IGRpY3Rpb25hcnkgYWNjb3JkaW5nIHRvIHRoZSB2YWx1ZSBvZiB0aGVpciBpdGVtX3R5cGUKICAg
ICBhdHRyaWJ1dGUsIGFuZCBvdGhlcndpc2UgYmVoYXZlcyBsaWtlIGFuIEFCQ01ldGEuIiIiCiAK
LSAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBhdHRycywgKiprd2FyZ3MpOgotICAg
ICAgICBydiA9IEFCQ01ldGEuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBhdHRycywgKiprd2Fy
Z3MpCi0gICAgICAgIGl0ZW1fdHlwZXNbcnYuaXRlbV90eXBlXSA9IHJ2Ci0KLSAgICAgICAgcmV0
dXJuIHJ2CisgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgYXR0cnMpOgorICAgICAg
ICAjIHR5cGU6IChUeXBlW01hbmlmZXN0SXRlbU1ldGFdLCBzdHIsIFR1cGxlW01hbmlmZXN0SXRl
bU1ldGEsIC4uLl0sIERpY3Rbc3RyLCBBbnldKSAtPiBNYW5pZmVzdEl0ZW1NZXRhCisgICAgICAg
IHJ2ID0gc3VwZXIoTWFuaWZlc3RJdGVtTWV0YSwgY2xzKS5fX25ld19fKGNscywgbmFtZSwgYmFz
ZXMsIGF0dHJzKQorICAgICAgICBpZiBub3QgaXNhYnN0cmFjdChydik6CisgICAgICAgICAgICBh
c3NlcnQgaXNzdWJjbGFzcyhydiwgTWFuaWZlc3RJdGVtKQorICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2UocnYuaXRlbV90eXBlLCBzdHIpCisgICAgICAgICAgICBpdGVtX3R5cGVzW3J2Lml0
ZW1fdHlwZV0gPSBydgogCisgICAgICAgIHJldHVybiBydiAgIyB0eXBlOiBpZ25vcmUKIAotY2xh
c3MgTWFuaWZlc3RJdGVtKG9iamVjdCk6Ci0gICAgX19tZXRhY2xhc3NfXyA9IE1hbmlmZXN0SXRl
bU1ldGEKIAotICAgIGl0ZW1fdHlwZSA9IE5vbmUKK2NsYXNzIE1hbmlmZXN0SXRlbSh3aXRoX21l
dGFjbGFzcyhNYW5pZmVzdEl0ZW1NZXRhKSk6CisgICAgX19zbG90c19fID0gKCJfdGVzdHNfcm9v
dCIsICJwYXRoIikKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2VfZmlsZSwgbWFuaWZl
c3Q9Tm9uZSk6Ci0gICAgICAgIHNlbGYubWFuaWZlc3QgPSBtYW5pZmVzdAotICAgICAgICBzZWxm
LnNvdXJjZV9maWxlID0gc291cmNlX2ZpbGUKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdHNf
cm9vdCwgcGF0aCk6CisgICAgICAgICMgdHlwZTogKFRleHQsIFRleHQpIC0+IE5vbmUKKyAgICAg
ICAgc2VsZi5fdGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKyAgICAgICAgc2VsZi5wYXRoID0gcGF0
aAogCiAgICAgQGFic3RyYWN0cHJvcGVydHkKICAgICBkZWYgaWQoc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gVGV4dAogICAgICAgICAiIiJUaGUgdGVzdCdzIGlkICh1c3VhbGx5IGl0cyB1
cmwpIiIiCiAgICAgICAgIHBhc3MKIAotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBtZXRhX2ZsYWdz
KHNlbGYpOgotICAgICAgICByZXR1cm4gc2V0KHNlbGYuc291cmNlX2ZpbGUubWV0YV9mbGFncykK
LQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBwYXRoKHNlbGYpOgotICAgICAgICAiIiJUaGUgdGVz
dCBwYXRoIHJlbGF0aXZlIHRvIHRoZSB0ZXN0X3Jvb3QiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYu
c291cmNlX2ZpbGUucmVsX3BhdGgKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBodHRwcyhzZWxm
KToKLSAgICAgICAgZmxhZ3MgPSBzZWxmLm1ldGFfZmxhZ3MKLSAgICAgICAgcmV0dXJuICgiaHR0
cHMiIGluIGZsYWdzIG9yICJzZXJ2aWNld29ya2VyIiBpbiBmbGFncykKKyAgICBAYWJzdHJhY3Rw
cm9wZXJ0eQorICAgIGRlZiBpdGVtX3R5cGUoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
c3RyCisgICAgICAgICIiIlRoZSBpdGVtJ3MgdHlwZSIiIgorICAgICAgICBwYXNzCiAKICAgICBk
ZWYga2V5KHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IEhhc2hhYmxlCiAgICAgICAgICIi
IkEgdW5pcXVlIGlkZW50aWZpZXIgZm9yIHRoZSB0ZXN0IiIiCiAgICAgICAgIHJldHVybiAoc2Vs
Zi5pdGVtX3R5cGUsIHNlbGYuaWQpCiAKLSAgICBkZWYgbWV0YV9rZXkoc2VsZik6Ci0gICAgICAg
ICIiIkV4dHJhIG1ldGFkYXRhIHRoYXQgZG9lc24ndCBmb3JtIHBhcnQgb2YgdGhlIHRlc3QgaWRl
bnRpdHksIGJ1dCBmb3IKLSAgICAgICAgd2hpY2ggY2hhbmdlcyBtZWFuIHJlZ2VuZXJhdGluZyB0
aGUgbWFuaWZlc3QgKGUuZy4gdGhlIHRlc3QgdGltZW91dC4iIiIKLSAgICAgICAgcmV0dXJuICgp
Ci0KICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIyB0eXBlOiAoQW55KSAt
PiBib29sCiAgICAgICAgIGlmIG5vdCBoYXNhdHRyKG90aGVyLCAia2V5Iik6CiAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIHNlbGYua2V5KCkgPT0gb3RoZXIua2V5KCkK
KyAgICAgICAgcmV0dXJuIGJvb2woc2VsZi5rZXkoKSA9PSBvdGhlci5rZXkoKSkKIAogICAgIGRl
ZiBfX2hhc2hfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5rZXkoKSArIHNlbGYu
bWV0YV9rZXkoKSkKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBpbnQKKyAgICAgICAgcmV0dXJuIGhh
c2goc2VsZi5rZXkoKSkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICI8JXMuJXMgaWQ9JXMsIHBhdGg9JXM+IiAlIChzZWxmLl9fbW9kdWxlX18sIHNlbGYuX19jbGFz
c19fLl9fbmFtZV9fLCBzZWxmLmlkLCBzZWxmLnBhdGgpCisgICAgICAgICMgdHlwZTogKCkgLT4g
c3RyCisgICAgICAgIHJldHVybiAiPCVzLiVzIGlkPSVyLCBwYXRoPSVyPiIgJSAoc2VsZi5fX21v
ZHVsZV9fLCBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5pZCwgc2VsZi5wYXRoKQogCiAg
ICAgZGVmIHRvX2pzb24oc2VsZik6Ci0gICAgICAgIHJldHVybiBbe31dCisgICAgICAgICMgdHlw
ZTogKCkgLT4gVHVwbGVbQW55LCAuLi5dCisgICAgICAgIHJldHVybiAoKQogCiAgICAgQGNsYXNz
bWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIG1hbmlmZXN0LCB0ZXN0c19yb290LCBwYXRo
LCBvYmosIHNvdXJjZV9maWxlcz1Ob25lKToKLSAgICAgICAgc291cmNlX2ZpbGUgPSBnZXRfc291
cmNlX2ZpbGUoc291cmNlX2ZpbGVzLCB0ZXN0c19yb290LCBtYW5pZmVzdCwgcGF0aCkKLSAgICAg
ICAgcmV0dXJuIGNscyhzb3VyY2VfZmlsZSwKLSAgICAgICAgICAgICAgICAgICBtYW5pZmVzdD1t
YW5pZmVzdCkKKyAgICBkZWYgZnJvbV9qc29uKGNscywKKyAgICAgICAgICAgICAgICAgIG1hbmlm
ZXN0LCAgIyB0eXBlOiBNYW5pZmVzdAorICAgICAgICAgICAgICAgICAgcGF0aCwgICMgdHlwZTog
VGV4dAorICAgICAgICAgICAgICAgICAgb2JqICAjIHR5cGU6IEFueQorICAgICAgICAgICAgICAg
ICAgKToKKyAgICAgICAgIyB0eXBlOiAoLi4uKSAtPiBNYW5pZmVzdEl0ZW0KKyAgICAgICAgcGF0
aCA9IHRvX29zX3BhdGgocGF0aCkKKyAgICAgICAgdGVzdHNfcm9vdCA9IG1hbmlmZXN0LnRlc3Rz
X3Jvb3QKKyAgICAgICAgYXNzZXJ0IHRlc3RzX3Jvb3QgaXMgbm90IE5vbmUKKyAgICAgICAgcmV0
dXJuIGNscyh0ZXN0c19yb290LCBwYXRoKQogCiAKIGNsYXNzIFVSTE1hbmlmZXN0SXRlbShNYW5p
ZmVzdEl0ZW0pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2VfZmlsZSwgdXJsLCB1cmxf
YmFzZT0iLyIsIG1hbmlmZXN0PU5vbmUpOgotICAgICAgICBNYW5pZmVzdEl0ZW0uX19pbml0X18o
c2VsZiwgc291cmNlX2ZpbGUsIG1hbmlmZXN0PW1hbmlmZXN0KQotICAgICAgICBzZWxmLl91cmwg
PSB1cmwKKyAgICBfX3Nsb3RzX18gPSAoInVybF9iYXNlIiwgIl91cmwiLCAiX2V4dHJhcyIpCisK
KyAgICBkZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgdGVzdHNfcm9vdCwgICMg
dHlwZTogVGV4dAorICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CisgICAgICAg
ICAgICAgICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICAgICAgIHVybCwg
ICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICAqKmV4dHJhcyAgIyB0eXBlOiBBbnkKKyAg
ICAgICAgICAgICAgICAgKToKKyAgICAgICAgIyB0eXBlOiAoLi4uKSAtPiBOb25lCisgICAgICAg
IHN1cGVyKFVSTE1hbmlmZXN0SXRlbSwgc2VsZikuX19pbml0X18odGVzdHNfcm9vdCwgcGF0aCkK
KyAgICAgICAgYXNzZXJ0IHVybF9iYXNlWzBdID09ICIvIgogICAgICAgICBzZWxmLnVybF9iYXNl
ID0gdXJsX2Jhc2UKKyAgICAgICAgYXNzZXJ0IHVybFswXSAhPSAiLyIKKyAgICAgICAgc2VsZi5f
dXJsID0gdXJsCisgICAgICAgIHNlbGYuX2V4dHJhcyA9IGV4dHJhcwogCiAgICAgQHByb3BlcnR5
CiAgICAgZGVmIGlkKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IFRleHQKICAgICAgICAg
cmV0dXJuIHNlbGYudXJsCiAKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbWV0YV9mbGFncyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIHNldCh1cmxwYXJzZShzZWxmLnVybCkucGF0aC5yc3BsaXQoIi8i
LCAxKVsxXS5zcGxpdCgiLiIpWzE6LTFdKQotCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIHVybChz
ZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUZXh0CisgICAgICAgICMgd2UgY2FuIG91dHBl
cmZvcm0gdXJsam9pbiwgYmVjYXVzZSB3ZSBrbm93IHdlIGp1c3QgaGF2ZSBwYXRoIHJlbGF0aXZl
IFVSTHMKKyAgICAgICAgaWYgc2VsZi51cmxfYmFzZSA9PSAiLyI6CisgICAgICAgICAgICByZXR1
cm4gIi8iICsgc2VsZi5fdXJsCiAgICAgICAgIHJldHVybiB1cmxqb2luKHNlbGYudXJsX2Jhc2Us
IHNlbGYuX3VybCkKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBodHRwcyhzZWxmKToKKyAgICAg
ICAgIyB0eXBlOiAoKSAtPiBib29sCisgICAgICAgIGZsYWdzID0gc2V0KHVybHBhcnNlKHNlbGYu
dXJsKS5wYXRoLnJzcGxpdCgiLyIsIDEpWzFdLnNwbGl0KCIuIilbMTotMV0pCisgICAgICAgIHJl
dHVybiAoImh0dHBzIiBpbiBmbGFncyBvciAic2VydmljZXdvcmtlciIgaW4gZmxhZ3MpCisKICAg
ICBkZWYgdG9fanNvbihzZWxmKToKLSAgICAgICAgcnYgPSBbc2VsZi5fdXJsLCB7fV0KKyAgICAg
ICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCBEaWN0W0FueSwgQW55XV0KKyAgICAgICAgcnYg
PSAoc2VsZi5fdXJsLCB7fSkgICMgdHlwZTogVHVwbGVbVGV4dCwgRGljdFtBbnksIEFueV1dCiAg
ICAgICAgIHJldHVybiBydgogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihj
bHMsIG1hbmlmZXN0LCB0ZXN0c19yb290LCBwYXRoLCBvYmosIHNvdXJjZV9maWxlcz1Ob25lKToK
LSAgICAgICAgc291cmNlX2ZpbGUgPSBnZXRfc291cmNlX2ZpbGUoc291cmNlX2ZpbGVzLCB0ZXN0
c19yb290LCBtYW5pZmVzdCwgcGF0aCkKKyAgICBkZWYgZnJvbV9qc29uKGNscywKKyAgICAgICAg
ICAgICAgICAgIG1hbmlmZXN0LCAgIyB0eXBlOiBNYW5pZmVzdAorICAgICAgICAgICAgICAgICAg
cGF0aCwgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgICAgb2JqICAjIHR5cGU6IFR1cGxl
W1RleHQsIERpY3RbQW55LCBBbnldXQorICAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgIyB0
eXBlOiAoLi4uKSAtPiBVUkxNYW5pZmVzdEl0ZW0KKyAgICAgICAgcGF0aCA9IHRvX29zX3BhdGgo
cGF0aCkKICAgICAgICAgdXJsLCBleHRyYXMgPSBvYmoKLSAgICAgICAgcmV0dXJuIGNscyhzb3Vy
Y2VfZmlsZSwKKyAgICAgICAgdGVzdHNfcm9vdCA9IG1hbmlmZXN0LnRlc3RzX3Jvb3QKKyAgICAg
ICAgYXNzZXJ0IHRlc3RzX3Jvb3QgaXMgbm90IE5vbmUKKyAgICAgICAgcmV0dXJuIGNscyh0ZXN0
c19yb290LAorICAgICAgICAgICAgICAgICAgIHBhdGgsCisgICAgICAgICAgICAgICAgICAgbWFu
aWZlc3QudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgdXJsLAotICAgICAgICAgICAgICAg
ICAgIHVybF9iYXNlPW1hbmlmZXN0LnVybF9iYXNlLAotICAgICAgICAgICAgICAgICAgIG1hbmlm
ZXN0PW1hbmlmZXN0KQorICAgICAgICAgICAgICAgICAgICoqZXh0cmFzKQogCiAKIGNsYXNzIFRl
c3RoYXJuZXNzVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgorICAgIF9fc2xvdHNfXyA9ICgpCisKICAg
ICBpdGVtX3R5cGUgPSAidGVzdGhhcm5lc3MiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc291
cmNlX2ZpbGUsIHVybCwgdXJsX2Jhc2U9Ii8iLCB0aW1lb3V0PU5vbmUsIHRlc3Rkcml2ZXI9RmFs
c2UsIGpzc2hlbGw9RmFsc2UsIG1hbmlmZXN0PU5vbmUpOgotICAgICAgICBVUkxNYW5pZmVzdEl0
ZW0uX19pbml0X18oc2VsZiwgc291cmNlX2ZpbGUsIHVybCwgdXJsX2Jhc2U9dXJsX2Jhc2UsIG1h
bmlmZXN0PW1hbmlmZXN0KQotICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0Ci0gICAgICAg
IHNlbGYudGVzdGRyaXZlciA9IHRlc3Rkcml2ZXIKLSAgICAgICAgc2VsZi5qc3NoZWxsID0ganNz
aGVsbAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiB0aW1lb3V0KHNlbGYpOgorICAgICAgICAjIHR5
cGU6ICgpIC0+IE9wdGlvbmFsW1RleHRdCisgICAgICAgIHJldHVybiBzZWxmLl9leHRyYXMuZ2V0
KCJ0aW1lb3V0IikKIAotICAgIGRlZiBtZXRhX2tleShzZWxmKToKLSAgICAgICAgcmV0dXJuIChz
ZWxmLnRpbWVvdXQsIHNlbGYudGVzdGRyaXZlcikKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdGVz
dGRyaXZlcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUZXh0XQorICAg
ICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgidGVzdGRyaXZlciIpCisKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYganNzaGVsbChzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25h
bFtUZXh0XQorICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgianNzaGVsbCIpCisKKyAg
ICBAcHJvcGVydHkKKyAgICBkZWYgc2NyaXB0X21ldGFkYXRhKHNlbGYpOgorICAgICAgICAjIHR5
cGU6ICgpIC0+IE9wdGlvbmFsW1RleHRdCisgICAgICAgIHJldHVybiBzZWxmLl9leHRyYXMuZ2V0
KCJzY3JpcHRfbWV0YWRhdGEiKQogCiAgICAgZGVmIHRvX2pzb24oc2VsZik6Ci0gICAgICAgIHJ2
ID0gVVJMTWFuaWZlc3RJdGVtLnRvX2pzb24oc2VsZikKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBU
dXBsZVtUZXh0LCBEaWN0W1RleHQsIEFueV1dCisgICAgICAgIHJ2ID0gc3VwZXIoVGVzdGhhcm5l
c3NUZXN0LCBzZWxmKS50b19qc29uKCkKICAgICAgICAgaWYgc2VsZi50aW1lb3V0IGlzIG5vdCBO
b25lOgogICAgICAgICAgICAgcnZbLTFdWyJ0aW1lb3V0Il0gPSBzZWxmLnRpbWVvdXQKICAgICAg
ICAgaWYgc2VsZi50ZXN0ZHJpdmVyOgogICAgICAgICAgICAgcnZbLTFdWyJ0ZXN0ZHJpdmVyIl0g
PSBzZWxmLnRlc3Rkcml2ZXIKICAgICAgICAgaWYgc2VsZi5qc3NoZWxsOgogICAgICAgICAgICAg
cnZbLTFdWyJqc3NoZWxsIl0gPSBUcnVlCisgICAgICAgIGlmIHNlbGYuc2NyaXB0X21ldGFkYXRh
OgorICAgICAgICAgICAgcnZbLTFdWyJzY3JpcHRfbWV0YWRhdGEiXSA9IHNlbGYuc2NyaXB0X21l
dGFkYXRhCiAgICAgICAgIHJldHVybiBydgogCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGZy
b21fanNvbihjbHMsIG1hbmlmZXN0LCB0ZXN0c19yb290LCBwYXRoLCBvYmosIHNvdXJjZV9maWxl
cz1Ob25lKToKLSAgICAgICAgc291cmNlX2ZpbGUgPSBnZXRfc291cmNlX2ZpbGUoc291cmNlX2Zp
bGVzLCB0ZXN0c19yb290LCBtYW5pZmVzdCwgcGF0aCkKIAotICAgICAgICB1cmwsIGV4dHJhcyA9
IG9iagotICAgICAgICByZXR1cm4gY2xzKHNvdXJjZV9maWxlLAotICAgICAgICAgICAgICAgICAg
IHVybCwKLSAgICAgICAgICAgICAgICAgICB1cmxfYmFzZT1tYW5pZmVzdC51cmxfYmFzZSwKLSAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0PWV4dHJhcy5nZXQoInRpbWVvdXQiKSwKLSAgICAgICAg
ICAgICAgICAgICB0ZXN0ZHJpdmVyPWJvb2woZXh0cmFzLmdldCgidGVzdGRyaXZlciIpKSwKLSAg
ICAgICAgICAgICAgICAgICBqc3NoZWxsPWJvb2woZXh0cmFzLmdldCgianNzaGVsbCIpKSwKLSAg
ICAgICAgICAgICAgICAgICBtYW5pZmVzdD1tYW5pZmVzdCkKK2NsYXNzIFJlZlRlc3RCYXNlKFVS
TE1hbmlmZXN0SXRlbSk6CisgICAgX19zbG90c19fID0gKCJyZWZlcmVuY2VzIiwpCiAKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgdGVzdHNfcm9vdCwgICMgdHlwZTog
VGV4dAorICAgICAgICAgICAgICAgICBwYXRoLCAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICAg
ICAgIHVybF9iYXNlLCAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICAgICAgIHVybCwgICMgdHlw
ZTogVGV4dAorICAgICAgICAgICAgICAgICByZWZlcmVuY2VzPU5vbmUsICAjIHR5cGU6IE9wdGlv
bmFsW0xpc3RbVHVwbGVbVGV4dCwgVGV4dF1dXQorICAgICAgICAgICAgICAgICAqKmV4dHJhcyAg
IyB0eXBlOiBBbnkKKyAgICAgICAgICAgICAgICAgKToKKyAgICAgICAgc3VwZXIoUmVmVGVzdEJh
c2UsIHNlbGYpLl9faW5pdF9fKHRlc3RzX3Jvb3QsIHBhdGgsIHVybF9iYXNlLCB1cmwsICoqZXh0
cmFzKQorICAgICAgICBpZiByZWZlcmVuY2VzIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnJl
ZmVyZW5jZXMgPSBbXSAgIyB0eXBlOiBMaXN0W1R1cGxlW1RleHQsIFRleHRdXQorICAgICAgICBl
bHNlOgorICAgICAgICAgICAgc2VsZi5yZWZlcmVuY2VzID0gcmVmZXJlbmNlcwogCi1jbGFzcyBS
ZWZUZXN0Tm9kZShVUkxNYW5pZmVzdEl0ZW0pOgotICAgIGl0ZW1fdHlwZSA9ICJyZWZ0ZXN0X25v
ZGUiCisgICAgQHByb3BlcnR5CisgICAgZGVmIHRpbWVvdXQoc2VsZik6CisgICAgICAgICMgdHlw
ZTogKCkgLT4gT3B0aW9uYWxbVGV4dF0KKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhcy5nZXQo
InRpbWVvdXQiKQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvdXJjZV9maWxlLCB1cmwsIHJl
ZmVyZW5jZXMsIHVybF9iYXNlPSIvIiwgdGltZW91dD1Ob25lLAotICAgICAgICAgICAgICAgICB2
aWV3cG9ydF9zaXplPU5vbmUsIGRwaT1Ob25lLCBtYW5pZmVzdD1Ob25lKToKLSAgICAgICAgVVJM
TWFuaWZlc3RJdGVtLl9faW5pdF9fKHNlbGYsIHNvdXJjZV9maWxlLCB1cmwsIHVybF9iYXNlPXVy
bF9iYXNlLCBtYW5pZmVzdD1tYW5pZmVzdCkKLSAgICAgICAgZm9yIF8sIHJlZl90eXBlIGluIHJl
ZmVyZW5jZXM6Ci0gICAgICAgICAgICBpZiByZWZfdHlwZSBub3QgaW4gWyI9PSIsICIhPSJdOgot
ICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXNlZCByZWZfdHlwZSAl
cyIgJSByZWZfdHlwZSkKLSAgICAgICAgc2VsZi5yZWZlcmVuY2VzID0gdHVwbGUocmVmZXJlbmNl
cykKLSAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dAotICAgICAgICBzZWxmLnZpZXdwb3J0
X3NpemUgPSB2aWV3cG9ydF9zaXplCi0gICAgICAgIHNlbGYuZHBpID0gZHBpCisgICAgQHByb3Bl
cnR5CisgICAgZGVmIHZpZXdwb3J0X3NpemUoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
T3B0aW9uYWxbVGV4dF0KKyAgICAgICAgcmV0dXJuIHNlbGYuX2V4dHJhcy5nZXQoInZpZXdwb3J0
X3NpemUiKQogCi0gICAgZGVmIG1ldGFfa2V5KHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYu
dGltZW91dCwgc2VsZi52aWV3cG9ydF9zaXplLCBzZWxmLmRwaSkKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgZHBpKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW1RleHRdCisg
ICAgICAgIHJldHVybiBzZWxmLl9leHRyYXMuZ2V0KCJkcGkiKQogCi0gICAgZGVmIHRvX2pzb24o
c2VsZik6Ci0gICAgICAgIHJ2ID0gW3NlbGYudXJsLCBzZWxmLnJlZmVyZW5jZXMsIHt9XQorICAg
IEBwcm9wZXJ0eQorICAgIGRlZiBmdXp6eShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBG
dXp6eQorICAgICAgICBmdXp6eSA9IHNlbGYuX2V4dHJhcy5nZXQoImZ1enp5Iiwge30pICAjIHR5
cGU6IFVuaW9uW0Z1enp5LCBMaXN0W1R1cGxlW09wdGlvbmFsW1NlcXVlbmNlW1RleHRdXSwgTGlz
dFtpbnRdXV1dCisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGZ1enp5LCBsaXN0KToKKyAgICAg
ICAgICAgIHJldHVybiBmdXp6eQorCisgICAgICAgIHJ2ID0ge30gICMgdHlwZTogRnV6enkKKyAg
ICAgICAgZm9yIGssIHYgaW4gZnV6enk6ICAjIHR5cGU6IFR1cGxlW09wdGlvbmFsW1NlcXVlbmNl
W1RleHRdXSwgTGlzdFtpbnRdXQorICAgICAgICAgICAgaWYgayBpcyBOb25lOgorICAgICAgICAg
ICAgICAgIGtleSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbVHVwbGVbVGV4dCwgVGV4dCwgVGV4
dF1dCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgbXlweSB0eXBlcyB0aGlz
IGFzIFR1cGxlW1RleHQsIC4uLl0KKyAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKGspID09IDMK
KyAgICAgICAgICAgICAgICBrZXkgPSB0dXBsZShrKSAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAg
ICAgIHJ2W2tleV0gPSB2CisgICAgICAgIHJldHVybiBydgorCisgICAgZGVmIHRvX2pzb24oc2Vs
Zik6ICAjIHR5cGU6IGlnbm9yZQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIExp
c3RbVHVwbGVbVGV4dCwgVGV4dF1dLCBEaWN0W1RleHQsIEFueV1dCisgICAgICAgIHJ2ID0gKHNl
bGYuX3VybCwgc2VsZi5yZWZlcmVuY2VzLCB7fSkgICMgdHlwZTogVHVwbGVbVGV4dCwgTGlzdFtU
dXBsZVtUZXh0LCBUZXh0XV0sIERpY3RbVGV4dCwgQW55XV0KICAgICAgICAgZXh0cmFzID0gcnZb
LTFdCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGV4
dHJhc1sidGltZW91dCJdID0gc2VsZi50aW1lb3V0CkBAIC0xODQsODQgKzI1NiwxMDMgQEAgY2xh
c3MgUmVmVGVzdE5vZGUoVVJMTWFuaWZlc3RJdGVtKToKICAgICAgICAgICAgIGV4dHJhc1sidmll
d3BvcnRfc2l6ZSJdID0gc2VsZi52aWV3cG9ydF9zaXplCiAgICAgICAgIGlmIHNlbGYuZHBpIGlz
IG5vdCBOb25lOgogICAgICAgICAgICAgZXh0cmFzWyJkcGkiXSA9IHNlbGYuZHBpCisgICAgICAg
IGlmIHNlbGYuZnV6enk6CisgICAgICAgICAgICBleHRyYXNbImZ1enp5Il0gPSBsaXN0KGl0ZXJp
dGVtcyhzZWxmLmZ1enp5KSkKICAgICAgICAgcmV0dXJuIHJ2CiAKICAgICBAY2xhc3NtZXRob2QK
LSAgICBkZWYgZnJvbV9qc29uKGNscywgbWFuaWZlc3QsIHRlc3RzX3Jvb3QsIHBhdGgsIG9iaiwg
c291cmNlX2ZpbGVzPU5vbmUpOgotICAgICAgICBzb3VyY2VfZmlsZSA9IGdldF9zb3VyY2VfZmls
ZShzb3VyY2VfZmlsZXMsIHRlc3RzX3Jvb3QsIG1hbmlmZXN0LCBwYXRoKQorICAgIGRlZiBmcm9t
X2pzb24oY2xzLCAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgICAgICAgIG1hbmlmZXN0LCAg
IyB0eXBlOiBNYW5pZmVzdAorICAgICAgICAgICAgICAgICAgcGF0aCwgICMgdHlwZTogVGV4dAor
ICAgICAgICAgICAgICAgICAgb2JqICAjIHR5cGU6IFR1cGxlW1RleHQsIExpc3RbVHVwbGVbVGV4
dCwgVGV4dF1dLCBEaWN0W0FueSwgQW55XV0KKyAgICAgICAgICAgICAgICAgICk6CisgICAgICAg
ICMgdHlwZTogKC4uLikgLT4gUmVmVGVzdEJhc2UKKyAgICAgICAgdGVzdHNfcm9vdCA9IG1hbmlm
ZXN0LnRlc3RzX3Jvb3QKKyAgICAgICAgYXNzZXJ0IHRlc3RzX3Jvb3QgaXMgbm90IE5vbmUKKyAg
ICAgICAgcGF0aCA9IHRvX29zX3BhdGgocGF0aCkKICAgICAgICAgdXJsLCByZWZlcmVuY2VzLCBl
eHRyYXMgPSBvYmoKLSAgICAgICAgcmV0dXJuIGNscyhzb3VyY2VfZmlsZSwKKyAgICAgICAgcmV0
dXJuIGNscyh0ZXN0c19yb290LAorICAgICAgICAgICAgICAgICAgIHBhdGgsCisgICAgICAgICAg
ICAgICAgICAgbWFuaWZlc3QudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgdXJsLAogICAg
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMsCi0gICAgICAgICAgICAgICAgICAgdXJsX2Jhc2U9
bWFuaWZlc3QudXJsX2Jhc2UsCi0gICAgICAgICAgICAgICAgICAgdGltZW91dD1leHRyYXMuZ2V0
KCJ0aW1lb3V0IiksCi0gICAgICAgICAgICAgICAgICAgdmlld3BvcnRfc2l6ZT1leHRyYXMuZ2V0
KCJ2aWV3cG9ydF9zaXplIiksCi0gICAgICAgICAgICAgICAgICAgZHBpPWV4dHJhcy5nZXQoImRw
aSIpLAotICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0PW1hbmlmZXN0KQorICAgICAgICAgICAg
ICAgICAgICoqZXh0cmFzKQogCiAgICAgZGVmIHRvX1JlZlRlc3Qoc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gUmVmVGVzdAogICAgICAgICBpZiB0eXBlKHNlbGYpID09IFJlZlRlc3Q6Cisg
ICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxmLCBSZWZUZXN0KQogICAgICAgICAgICAg
cmV0dXJuIHNlbGYKLSAgICAgICAgcnYgPSBSZWZUZXN0Ll9fbmV3X18oUmVmVGVzdCkKLSAgICAg
ICAgcnYuX19kaWN0X18udXBkYXRlKHNlbGYuX19kaWN0X18pCisgICAgICAgIHJ2ID0gY29weShz
ZWxmKQorICAgICAgICBydi5fX2NsYXNzX18gPSBSZWZUZXN0CisgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHJ2LCBSZWZUZXN0KQogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiB0b19SZWZU
ZXN0Tm9kZShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBSZWZUZXN0Tm9kZQogICAgICAg
ICBpZiB0eXBlKHNlbGYpID09IFJlZlRlc3ROb2RlOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2Uoc2VsZiwgUmVmVGVzdE5vZGUpCiAgICAgICAgICAgICByZXR1cm4gc2VsZgotICAgICAg
ICBydiA9IFJlZlRlc3ROb2RlLl9fbmV3X18oUmVmVGVzdE5vZGUpCi0gICAgICAgIHJ2Ll9fZGlj
dF9fLnVwZGF0ZShzZWxmLl9fZGljdF9fKQorICAgICAgICBydiA9IGNvcHkoc2VsZikKKyAgICAg
ICAgcnYuX19jbGFzc19fID0gUmVmVGVzdE5vZGUKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
cnYsIFJlZlRlc3ROb2RlKQogICAgICAgICByZXR1cm4gcnYKIAogCi1jbGFzcyBSZWZUZXN0KFJl
ZlRlc3ROb2RlKToKK2NsYXNzIFJlZlRlc3ROb2RlKFJlZlRlc3RCYXNlKToKKyAgICBfX3Nsb3Rz
X18gPSAoKQorCisgICAgaXRlbV90eXBlID0gInJlZnRlc3Rfbm9kZSIKKworCitjbGFzcyBSZWZU
ZXN0KFJlZlRlc3RCYXNlKToKKyAgICBfX3Nsb3RzX18gPSAoKQorCiAgICAgaXRlbV90eXBlID0g
InJlZnRlc3QiCiAKIAogY2xhc3MgTWFudWFsVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgorICAgIF9f
c2xvdHNfXyA9ICgpCisKICAgICBpdGVtX3R5cGUgPSAibWFudWFsIgogCiAKIGNsYXNzIENvbmZv
cm1hbmNlQ2hlY2tlclRlc3QoVVJMTWFuaWZlc3RJdGVtKToKKyAgICBfX3Nsb3RzX18gPSAoKQor
CiAgICAgaXRlbV90eXBlID0gImNvbmZvcm1hbmNlY2hlY2tlciIKIAogCiBjbGFzcyBWaXN1YWxU
ZXN0KFVSTE1hbmlmZXN0SXRlbSk6Ci0gICAgaXRlbV90eXBlID0gInZpc3VhbCIKKyAgICBfX3Ns
b3RzX18gPSAoKQogCisgICAgaXRlbV90eXBlID0gInZpc3VhbCIKIAotY2xhc3MgU3R1YihVUkxN
YW5pZmVzdEl0ZW0pOgotICAgIGl0ZW1fdHlwZSA9ICJzdHViIgogCitjbGFzcyBXZWJEcml2ZXJT
cGVjVGVzdChVUkxNYW5pZmVzdEl0ZW0pOgorICAgIF9fc2xvdHNfXyA9ICgpCiAKLWNsYXNzIFdl
YmRyaXZlclNwZWNUZXN0KFVSTE1hbmlmZXN0SXRlbSk6CiAgICAgaXRlbV90eXBlID0gIndkc3Bl
YyIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb3VyY2VfZmlsZSwgdXJsLCB1cmxfYmFzZT0i
LyIsIHRpbWVvdXQ9Tm9uZSwgbWFuaWZlc3Q9Tm9uZSk6Ci0gICAgICAgIFVSTE1hbmlmZXN0SXRl
bS5fX2luaXRfXyhzZWxmLCBzb3VyY2VfZmlsZSwgdXJsLCB1cmxfYmFzZT11cmxfYmFzZSwgbWFu
aWZlc3Q9bWFuaWZlc3QpCi0gICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKKyAgICBAcHJv
cGVydHkKKyAgICBkZWYgdGltZW91dChzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRp
b25hbFtUZXh0XQorICAgICAgICByZXR1cm4gc2VsZi5fZXh0cmFzLmdldCgidGltZW91dCIpCiAK
ICAgICBkZWYgdG9fanNvbihzZWxmKToKLSAgICAgICAgcnYgPSBVUkxNYW5pZmVzdEl0ZW0udG9f
anNvbihzZWxmKQorICAgICAgICAjIHR5cGU6ICgpIC0+IFR1cGxlW1RleHQsIERpY3RbVGV4dCwg
QW55XV0KKyAgICAgICAgcnYgPSBzdXBlcihXZWJEcml2ZXJTcGVjVGVzdCwgc2VsZikudG9fanNv
bigpCiAgICAgICAgIGlmIHNlbGYudGltZW91dCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJ2
Wy0xXVsidGltZW91dCJdID0gc2VsZi50aW1lb3V0CiAgICAgICAgIHJldHVybiBydgogCi0gICAg
QGNsYXNzbWV0aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIG1hbmlmZXN0LCB0ZXN0c19yb290
LCBwYXRoLCBvYmosIHNvdXJjZV9maWxlcz1Ob25lKToKLSAgICAgICAgc291cmNlX2ZpbGUgPSBn
ZXRfc291cmNlX2ZpbGUoc291cmNlX2ZpbGVzLCB0ZXN0c19yb290LCBtYW5pZmVzdCwgcGF0aCkK
LQotICAgICAgICB1cmwsIGV4dHJhcyA9IG9iagotICAgICAgICByZXR1cm4gY2xzKHNvdXJjZV9m
aWxlLAotICAgICAgICAgICAgICAgICAgIHVybCwKLSAgICAgICAgICAgICAgICAgICB1cmxfYmFz
ZT1tYW5pZmVzdC51cmxfYmFzZSwKLSAgICAgICAgICAgICAgICAgICB0aW1lb3V0PWV4dHJhcy5n
ZXQoInRpbWVvdXQiKSwKLSAgICAgICAgICAgICAgICAgICBtYW5pZmVzdD1tYW5pZmVzdCkKLQog
CiBjbGFzcyBTdXBwb3J0RmlsZShNYW5pZmVzdEl0ZW0pOgorICAgIF9fc2xvdHNfXyA9ICgpCisK
ICAgICBpdGVtX3R5cGUgPSAic3VwcG9ydCIKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpZChz
ZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc291cmNlX2ZpbGUucmVsX3BhdGgKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBUZXh0CisgICAgICAgIHJldHVybiBzZWxmLnBhdGgKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZl
c3QvbG9nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC9sb2cucHkKaW5kZXggNTVmZjZlODdjOWRjMDAzZTI4NGIwY2U5YzMzMGE5
ZTU0OTYzYTEzMi4uOWUyYWQ3NDA4MWU0YTFiMzhiOWMzYzNiYTYxZDQ5YmUyZTgxNTFmZCAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9tYW5pZmVzdC9sb2cucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9sb2cucHkKQEAgLTQsNiArNCw3IEBAIGltcG9ydCBz
eXMKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJtYW5pZmVzdCIpCiAKIGRlZiBzZXR1cCgp
OgorICAgICMgdHlwZTogKCkgLT4gTm9uZQogICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRF
QlVHKQogICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKICAg
ICBmb3JtYXR0ZXIgPSBsb2dnaW5nLkZvcm1hdHRlcihsb2dnaW5nLkJBU0lDX0ZPUk1BVCwgTm9u
ZSkKQEAgLTExLDQgKzEyLDUgQEAgZGVmIHNldHVwKCk6CiAgICAgbG9nZ2VyLmFkZEhhbmRsZXIo
aGFuZGxlcikKIAogZGVmIGdldF9sb2dnZXIoKToKKyAgICAjIHR5cGU6ICgpIC0+IGxvZ2dpbmcu
TG9nZ2VyCiAgICAgcmV0dXJuIGxvZ2dlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qv
bWFuaWZlc3QucHkKaW5kZXggNDJhOGUxY2ViMjM2OTNhM2UxMzljZjYxMjliYzgyMzI3Yjc2NTE4
Mi4uNmZiNTkxYjljMzE0YjBkZDAxZDkzZmYxMmYzODIwYmYyNmQ0ZmU3OSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVz
dC9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L21hbmlmZXN0LnB5CkBAIC0xLDE1ICsxLDQyIEBACiBpbXBv
cnQgaXRlcnRvb2xzCiBpbXBvcnQganNvbgogaW1wb3J0IG9zCi1mcm9tIGNvbGxlY3Rpb25zIGlt
cG9ydCBkZWZhdWx0ZGljdAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcywgaXRlcnZhbHVlcywg
dmlld2tleXMsIHN0cmluZ190eXBlcworZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1h
cHBpbmcsIGRlZmF1bHRkaWN0Citmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zLCBpdGVya2V5cywg
aXRlcnZhbHVlcywgc3RyaW5nX3R5cGVzLCBiaW5hcnlfdHlwZSwgdGV4dF90eXBlCiAKLWZyb20g
Lml0ZW0gaW1wb3J0IE1hbnVhbFRlc3QsIFdlYmRyaXZlclNwZWNUZXN0LCBTdHViLCBSZWZUZXN0
Tm9kZSwgUmVmVGVzdCwgVGVzdGhhcm5lc3NUZXN0LCBTdXBwb3J0RmlsZSwgQ29uZm9ybWFuY2VD
aGVja2VyVGVzdCwgVmlzdWFsVGVzdAorZnJvbSAuIGltcG9ydCB2Y3MKK2Zyb20gLml0ZW0gaW1w
b3J0IChDb25mb3JtYW5jZUNoZWNrZXJUZXN0LCBNYW5pZmVzdEl0ZW0sIE1hbnVhbFRlc3QsIFJl
ZlRlc3QsIFJlZlRlc3ROb2RlLAorICAgICAgICAgICAgICAgICAgIFN1cHBvcnRGaWxlLCBUZXN0
aGFybmVzc1Rlc3QsIFZpc3VhbFRlc3QsIFdlYkRyaXZlclNwZWNUZXN0KQogZnJvbSAubG9nIGlt
cG9ydCBnZXRfbG9nZ2VyCitmcm9tIC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlCiBmcm9t
IC51dGlscyBpbXBvcnQgZnJvbV9vc19wYXRoLCB0b19vc19wYXRoCiAKLQotQ1VSUkVOVF9WRVJT
SU9OID0gNQorTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1
ZSB3aGVuIHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gbG9nZ2luZyBpbXBvcnQgTG9nZ2VyCisg
ICAgZnJvbSB0eXBpbmcgaW1wb3J0IEFueQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBDb250YWlu
ZXIKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgRGljdAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBJ
TworICAgIGZyb20gdHlwaW5nIGltcG9ydCBJdGVyYWJsZQorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBJdGVyYXRvcgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBMaXN0CisgICAgZnJvbSB0eXBpbmcg
aW1wb3J0IE9wdGlvbmFsCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFNldAorICAgIGZyb20gdHlw
aW5nIGltcG9ydCBUZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR1cGxlCisgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IFR5cGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVW5pb24KKyAgICBmcm9t
IHR5cGluZyBpbXBvcnQgY2FzdAorCit0cnk6CisgICAgaW1wb3J0IHVqc29uCisgICAgZmFzdF9q
c29uID0gdWpzb24KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBmYXN0X2pzb24gPSBqc29uICAj
IHR5cGU6IGlnbm9yZQorCitDVVJSRU5UX1ZFUlNJT04gPSA2CiAKIAogY2xhc3MgTWFuaWZlc3RF
cnJvcihFeGNlcHRpb24pOgpAQCAtMjAsMzcgKzQ3LDIzMCBAQCBjbGFzcyBNYW5pZmVzdFZlcnNp
b25NaXNtYXRjaChNYW5pZmVzdEVycm9yKToKICAgICBwYXNzCiAKIAotZGVmIGl0ZXJmaWx0ZXIo
ZmlsdGVycywgaXRlcik6Ci0gICAgZm9yIGYgaW4gZmlsdGVyczoKLSAgICAgICAgaXRlciA9IGYo
aXRlcikKLSAgICBmb3IgaXRlbSBpbiBpdGVyOgotICAgICAgICB5aWVsZCBpdGVtCitpdGVtX2Ns
YXNzZXMgPSB7InRlc3RoYXJuZXNzIjogVGVzdGhhcm5lc3NUZXN0LAorICAgICAgICAgICAgICAg
ICJyZWZ0ZXN0IjogUmVmVGVzdCwKKyAgICAgICAgICAgICAgICAicmVmdGVzdF9ub2RlIjogUmVm
VGVzdE5vZGUsCisgICAgICAgICAgICAgICAgIm1hbnVhbCI6IE1hbnVhbFRlc3QsCisgICAgICAg
ICAgICAgICAgIndkc3BlYyI6IFdlYkRyaXZlclNwZWNUZXN0LAorICAgICAgICAgICAgICAgICJj
b25mb3JtYW5jZWNoZWNrZXIiOiBDb25mb3JtYW5jZUNoZWNrZXJUZXN0LAorICAgICAgICAgICAg
ICAgICJ2aXN1YWwiOiBWaXN1YWxUZXN0LAorICAgICAgICAgICAgICAgICJzdXBwb3J0IjogU3Vw
cG9ydEZpbGV9ICAjIHR5cGU6IERpY3Rbc3RyLCBUeXBlW01hbmlmZXN0SXRlbV1dCisKKworaWYg
TVlQWToKKyAgICBUeXBlRGF0YVR5cGUgPSBNdXRhYmxlTWFwcGluZ1tUZXh0LCBTZXRbTWFuaWZl
c3RJdGVtXV0KK2Vsc2U6CisgICAgVHlwZURhdGFUeXBlID0gTXV0YWJsZU1hcHBpbmcKKworY2xh
c3MgVHlwZURhdGEoVHlwZURhdGFUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFuaWZl
c3QsIHR5cGVfY2xzKToKKyAgICAgICAgIyB0eXBlOiAoTWFuaWZlc3QsIFR5cGVbTWFuaWZlc3RJ
dGVtXSkgLT4gTm9uZQorICAgICAgICAiIiJEaWN0LWxpa2Ugb2JqZWN0IGNvbnRhaW5pbmcgdGhl
IFRlc3RJdGVtcyBmb3IgZWFjaCB0ZXN0IHR5cGUuCisKKyAgICAgICAgTG9hZGluZyBhbiBhY3R1
YWwgSXRlbSBjbGFzcyBmb3IgZWFjaCB0ZXN0IGlzIHVubmVjZXNzYXJpbHkKKyAgICAgICAgc2xv
dywgc28gdGhpcyBjbGFzcyBhbGxvd3MgbGF6eS1sb2FkaW5nIG9mIHRoZSB0ZXN0CisgICAgICAg
IGl0ZW1zLiBXaGVuIHRoZSBtYW5pZmVzdCBpcyBsb2FkZWQgd2Ugc3RvcmUgdGhlIHJhdyBqc29u
CisgICAgICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHRlc3QgdHlwZSwgYW5kIG9ubHkgY3JlYXRl
IGFuIEl0ZW0KKyAgICAgICAgc3ViY2xhc3Mgd2hlbiB0aGUgdGVzdCBpcyBhY2Nlc3NlZC4gSW4g
b3JkZXIgdG8gcmVtYWluCisgICAgICAgIEFQSS1jb21wYXRpYmxlIHdpdGggY29uc3VtZXJzIHRo
YXQgZGVwZW5kIG9uIGdldHRpbmcgYW4gSXRlbQorICAgICAgICBmcm9tIGl0ZXJhdGlvbiwgd2Ug
ZG8gZWdlcmx5IGxvYWQgYWxsIGl0ZW1zIHdoZW4gaXRlcmF0aW5nCisgICAgICAgIG92ZXIgdGhl
IGNsYXNzLiIiIgorICAgICAgICBzZWxmLm1hbmlmZXN0ID0gbWFuaWZlc3QKKyAgICAgICAgc2Vs
Zi50eXBlX2NscyA9IHR5cGVfY2xzCisgICAgICAgIHNlbGYuanNvbl9kYXRhID0ge30gICMgdHlw
ZTogT3B0aW9uYWxbRGljdFtUZXh0LCBMaXN0W0FueV1dXQorICAgICAgICBzZWxmLnRlc3RzX3Jv
b3QgPSBOb25lICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAgICAgICAgc2VsZi5kYXRhID0ge30g
ICMgdHlwZTogRGljdFtUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV0KKworICAgIGRlZiBfX2dldGl0
ZW1fXyhzZWxmLCBrZXkpOgorICAgICAgICAjIHR5cGU6IChUZXh0KSAtPiBTZXRbTWFuaWZlc3RJ
dGVtXQorICAgICAgICBpZiBrZXkgbm90IGluIHNlbGYuZGF0YSBhbmQgc2VsZi5qc29uX2RhdGEg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmxvYWQoa2V5KQorICAgICAgICByZXR1cm4g
c2VsZi5kYXRhW2tleV0KKworICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKyAgICAgICAgIyB0
eXBlOiAoKSAtPiBib29sCisgICAgICAgIHJldHVybiBib29sKHNlbGYuZGF0YSkgb3IgYm9vbChz
ZWxmLmpzb25fZGF0YSkKKworICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAjIHR5cGU6
ICgpIC0+IGludAorICAgICAgICBydiA9IGxlbihzZWxmLmRhdGEpCisgICAgICAgIGlmIHNlbGYu
anNvbl9kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcnYgKz0gbGVuKHNlbGYuanNvbl9k
YXRhKQorICAgICAgICByZXR1cm4gcnYKKworICAgIGRlZiBfX2RlbGl0ZW1fXyhzZWxmLCBrZXkp
OgorICAgICAgICAjIHR5cGU6IChUZXh0KSAtPiBOb25lCisgICAgICAgIGlmIGtleSBpbiBzZWxm
LmRhdGE6CisgICAgICAgICAgICBkZWwgc2VsZi5kYXRhW2tleV0KKyAgICAgICAgZWxpZiBzZWxm
Lmpzb25fZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGRlbCBzZWxmLmpzb25fZGF0YVtm
cm9tX29zX3BhdGgoa2V5KV0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIEtleUVy
cm9yCisKKyAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSk6CisgICAgICAgICMg
dHlwZTogKFRleHQsIFNldFtNYW5pZmVzdEl0ZW1dKSAtPiBOb25lCisgICAgICAgIGlmIHNlbGYu
anNvbl9kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgcGF0aCA9IGZyb21fb3NfcGF0aChr
ZXkpCisgICAgICAgICAgICBpZiBwYXRoIGluIHNlbGYuanNvbl9kYXRhOgorICAgICAgICAgICAg
ICAgIGRlbCBzZWxmLmpzb25fZGF0YVtwYXRoXQorICAgICAgICBzZWxmLmRhdGFba2V5XSA9IHZh
bHVlCisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CisgICAgICAgICMgdHlwZTog
KEFueSkgLT4gYm9vbAorICAgICAgICBzZWxmLmxvYWRfYWxsKCkKKyAgICAgICAgcmV0dXJuIGtl
eSBpbiBzZWxmLmRhdGEKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBJdGVyYXRvcltUZXh0XQorICAgICAgICBzZWxmLmxvYWRfYWxsKCkKKyAgICAgICAg
cmV0dXJuIHNlbGYuZGF0YS5fX2l0ZXJfXygpCisKKyAgICBkZWYgaXRlcnZhbHVlcyhzZWxmKToK
KyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVyYXRvcltTZXRbTWFuaWZlc3RJdGVtXV0KKyAgICAg
ICAgc2VsZi5sb2FkX2FsbCgpCisgICAgICAgIHJldHVybiBpdGVydmFsdWVzKHNlbGYuZGF0YSkK
KworICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gSXRlcmF0
b3JbVHVwbGVbVGV4dCwgU2V0W01hbmlmZXN0SXRlbV1dXQorICAgICAgICBzZWxmLmxvYWRfYWxs
KCkKKyAgICAgICAgcmV0dXJuIGl0ZXJpdGVtcyhzZWxmLmRhdGEpCisKKyAgICBkZWYgdmFsdWVz
KHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IExpc3RbU2V0W01hbmlmZXN0SXRlbV1dCisg
ICAgICAgIHJldHVybiBsaXN0KHNlbGYuaXRlcnZhbHVlcygpKQorCisgICAgZGVmIGl0ZW1zKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IExpc3RbVHVwbGVbVGV4dCwgU2V0W01hbmlmZXN0
SXRlbV1dXQorICAgICAgICByZXR1cm4gbGlzdChzZWxmLml0ZXJpdGVtcygpKQorCisgICAgZGVm
IGxvYWQoc2VsZiwga2V5KToKKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gTm9uZQorICAgICAg
ICAiIiJMb2FkIGEgc3BlY2lmaWMgSXRlbSBnaXZlbiBhIHBhdGgiIiIKKyAgICAgICAgaWYgc2Vs
Zi5qc29uX2RhdGEgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBkYXRhID0gc2V0KCkKKyAgICAg
ICAgICAgIHBhdGggPSBmcm9tX29zX3BhdGgoa2V5KQorICAgICAgICAgICAgZm9yIHRlc3QgaW4g
c2VsZi5qc29uX2RhdGEuZ2V0KHBhdGgsIFtdKToKKyAgICAgICAgICAgICAgICBtYW5pZmVzdF9p
dGVtID0gc2VsZi50eXBlX2Nscy5mcm9tX2pzb24oc2VsZi5tYW5pZmVzdCwgcGF0aCwgdGVzdCkK
KyAgICAgICAgICAgICAgICBkYXRhLmFkZChtYW5pZmVzdF9pdGVtKQorICAgICAgICAgICAgdHJ5
OgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLmpzb25fZGF0YVtwYXRoXQorICAgICAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIHNlbGYu
ZGF0YVtrZXldID0gZGF0YQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcgorCisgICAgZGVmIGxvYWRfYWxsKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE5v
bmUKKyAgICAgICAgIiIiTG9hZCBhbGwgdGVzdCBpdGVtcyBpbiB0aGlzIGNsYXNzIiIiCisgICAg
ICAgIGlmIHNlbGYuanNvbl9kYXRhIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgZm9yIHBhdGgs
IHZhbHVlIGluIGl0ZXJpdGVtcyhzZWxmLmpzb25fZGF0YSk6CisgICAgICAgICAgICAgICAga2V5
ID0gdG9fb3NfcGF0aChwYXRoKQorICAgICAgICAgICAgICAgIGlmIGtleSBpbiBzZWxmLmRhdGE6
CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgZGF0YSA9IHNl
dCgpCisgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5qc29uX2RhdGEuZ2V0KHBhdGgs
IFtdKToKKyAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbSA9IHNlbGYudHlwZV9jbHMu
ZnJvbV9qc29uKHNlbGYubWFuaWZlc3QsIHBhdGgsIHRlc3QpCisgICAgICAgICAgICAgICAgICAg
IGRhdGEuYWRkKG1hbmlmZXN0X2l0ZW0pCisgICAgICAgICAgICAgICAgc2VsZi5kYXRhW2tleV0g
PSBkYXRhCisgICAgICAgICAgICBzZWxmLmpzb25fZGF0YSA9IE5vbmUKKworICAgIGRlZiBzZXRf
anNvbihzZWxmLCB0ZXN0c19yb290LCBkYXRhKToKKyAgICAgICAgIyB0eXBlOiAoc3RyLCBEaWN0
W1RleHQsIEFueV0pIC0+IE5vbmUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGF0YSwgZGlj
dCk6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJHb3QgYSAlcyBleHBlY3RlZCBhIGRp
Y3QiICUgKHR5cGUoZGF0YSkpKQorICAgICAgICBzZWxmLnRlc3RzX3Jvb3QgPSB0ZXN0c19yb290
CisgICAgICAgIHNlbGYuanNvbl9kYXRhID0gZGF0YQorCisgICAgZGVmIHRvX2pzb24oc2VsZik6
CisgICAgICAgICMgdHlwZTogKCkgLT4gRGljdFtUZXh0LCBBbnldCisgICAgICAgIGRhdGEgPSB7
CisgICAgICAgICAgICBmcm9tX29zX3BhdGgocGF0aCk6CisgICAgICAgICAgICBbdCBmb3IgdCBp
biBzb3J0ZWQodGVzdC50b19qc29uKCkgZm9yIHRlc3QgaW4gdGVzdHMpXQorICAgICAgICAgICAg
Zm9yIHBhdGgsIHRlc3RzIGluIGl0ZXJpdGVtcyhzZWxmLmRhdGEpCisgICAgICAgIH0KKworICAg
ICAgICBpZiBzZWxmLmpzb25fZGF0YSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGlmIG5vdCBk
YXRhOgorICAgICAgICAgICAgICAgICMgYXZvaWQgY29weWluZyBpZiB0aGVyZSdzIG5vdGhpbmcg
aGVyZSB5ZXQKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5qc29uX2RhdGEKKyAgICAgICAg
ICAgIGRhdGEudXBkYXRlKHNlbGYuanNvbl9kYXRhKQorCisgICAgICAgIHJldHVybiBkYXRhCisK
KyAgICBkZWYgcGF0aHMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gU2V0W1RleHRdCisg
ICAgICAgICIiIkdldCBhIGxpc3Qgb2YgYWxsIHBhdGhzIGNvbnRhaW5pbmcgaXRlbXMgb2YgdGhp
cyB0eXBlLAorICAgICAgICB3aXRob3V0IGFjdHVhbGx5IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0
ZW1zIiIiCisgICAgICAgIHJ2ID0gc2V0KGl0ZXJrZXlzKHNlbGYuZGF0YSkpCisgICAgICAgIGlm
IHNlbGYuanNvbl9kYXRhOgorICAgICAgICAgICAgcnYgfD0ge3RvX29zX3BhdGgoaXRlbSkgZm9y
IGl0ZW0gaW4gaXRlcmtleXMoc2VsZi5qc29uX2RhdGEpfQorICAgICAgICByZXR1cm4gcnYKKwor
CitpZiBNWVBZOgorICAgIE1hbmlmZXN0RGF0YVR5cGUgPSBEaWN0W0FueSwgVHlwZURhdGFdCitl
bHNlOgorICAgIE1hbmlmZXN0RGF0YVR5cGUgPSBkaWN0CisKK2NsYXNzIE1hbmlmZXN0RGF0YShN
YW5pZmVzdERhdGFUeXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFuaWZlc3QpOgorICAg
ICAgICAjIHR5cGU6IChNYW5pZmVzdCkgLT4gTm9uZQorICAgICAgICAiIiJEaWN0aW9uYXJ5IHN1
YmNsYXNzIGNvbnRhaW5pbmcgYSBUeXBlRGF0YSBpbnN0YW5jZSBmb3IgZWFjaCB0ZXN0IHR5cGUs
CisgICAgICAgIGtleWVkIGJ5IHR5cGUgbmFtZSIiIgorICAgICAgICBzZWxmLmluaXRpYWxpemVk
ID0gRmFsc2UgICMgdHlwZTogYm9vbAorICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRl
bXMoaXRlbV9jbGFzc2VzKToKKyAgICAgICAgICAgIHNlbGZba2V5XSA9IFR5cGVEYXRhKG1hbmlm
ZXN0LCB2YWx1ZSkKKyAgICAgICAgc2VsZi5pbml0aWFsaXplZCA9IFRydWUKKyAgICAgICAgc2Vs
Zi5qc29uX29iaiA9IE5vbmUgICMgdHlwZTogTm9uZQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNl
bGYsIGtleSwgdmFsdWUpOgorICAgICAgICAjIHR5cGU6IChzdHIsIFR5cGVEYXRhKSAtPiBOb25l
CisgICAgICAgIGlmIHNlbGYuaW5pdGlhbGl6ZWQ6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1
dGVFcnJvcgorICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpCisKKyAg
ICBkZWYgcGF0aHMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gU2V0W1RleHRdCisgICAg
ICAgICIiIkdldCBhIGxpc3Qgb2YgYWxsIHBhdGhzIGNvbnRhaW5pbmcgdGVzdCBpdGVtcworICAg
ICAgICB3aXRob3V0IGFjdHVhbGx5IGNvbnN0cnVjdGluZyBhbGwgdGhlIGl0ZW1zIiIiCisgICAg
ICAgIHJ2ID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCisgICAgICAgIGZvciBpdGVtX2RhdGEg
aW4gaXRlcnZhbHVlcyhzZWxmKToKKyAgICAgICAgICAgIHJ2IHw9IHNldChpdGVtX2RhdGEucGF0
aHMoKSkKKyAgICAgICAgcmV0dXJuIHJ2CiAKIAogY2xhc3MgTWFuaWZlc3Qob2JqZWN0KToKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgdXJsX2Jhc2U9Ii8iKToKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgdGVzdHNfcm9vdD1Ob25lLCB1cmxfYmFzZT0iLyIpOgorICAgICAgICAjIHR5cGU6IChPcHRp
b25hbFtzdHJdLCBUZXh0KSAtPiBOb25lCiAgICAgICAgIGFzc2VydCB1cmxfYmFzZSBpcyBub3Qg
Tm9uZQotICAgICAgICBzZWxmLl9wYXRoX2hhc2ggPSB7fQotICAgICAgICBzZWxmLl9kYXRhID0g
ZGVmYXVsdGRpY3QoZGljdCkKLSAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmwgPSBO
b25lCi0gICAgICAgIHNlbGYudXJsX2Jhc2UgPSB1cmxfYmFzZQorICAgICAgICBzZWxmLl9wYXRo
X2hhc2ggPSB7fSAgIyB0eXBlOiBEaWN0W1RleHQsIFR1cGxlW1RleHQsIFRleHRdXQorICAgICAg
ICBzZWxmLl9kYXRhID0gTWFuaWZlc3REYXRhKHNlbGYpICAjIHR5cGU6IE1hbmlmZXN0RGF0YQor
ICAgICAgICBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5X3VybCA9IE5vbmUgICMgdHlwZTogT3B0aW9u
YWxbRGljdFtUZXh0LCBVbmlvbltSZWZUZXN0LCBSZWZUZXN0Tm9kZV1dXQorICAgICAgICBzZWxm
LnRlc3RzX3Jvb3QgPSB0ZXN0c19yb290ICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAgICAgICAg
c2VsZi51cmxfYmFzZSA9IHVybF9iYXNlICAjIHR5cGU6IFRleHQKIAogICAgIGRlZiBfX2l0ZXJf
XyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBJdGVyYXRvcltUdXBsZVtzdHIsIFRleHQs
IFNldFtNYW5pZmVzdEl0ZW1dXV0KICAgICAgICAgcmV0dXJuIHNlbGYuaXRlcnR5cGVzKCkKIAog
ICAgIGRlZiBpdGVydHlwZXMoc2VsZiwgKnR5cGVzKToKLSAgICAgICAgaWYgbm90IHR5cGVzOgot
ICAgICAgICAgICAgdHlwZXMgPSBzb3J0ZWQoc2VsZi5fZGF0YS5rZXlzKCkpCi0gICAgICAgIGZv
ciBpdGVtX3R5cGUgaW4gdHlwZXM6Ci0gICAgICAgICAgICBmb3IgcGF0aCwgdGVzdHMgaW4gc29y
dGVkKGl0ZXJpdGVtcyhzZWxmLl9kYXRhW2l0ZW1fdHlwZV0pKToKKyAgICAgICAgIyB0eXBlOiAo
KnN0cikgLT4gSXRlcmF0b3JbVHVwbGVbc3RyLCBUZXh0LCBTZXRbTWFuaWZlc3RJdGVtXV1dCisg
ICAgICAgIGZvciBpdGVtX3R5cGUgaW4gKHR5cGVzIG9yIHNvcnRlZChzZWxmLl9kYXRhLmtleXMo
KSkpOgorICAgICAgICAgICAgZm9yIHBhdGggaW4gc29ydGVkKHNlbGYuX2RhdGFbaXRlbV90eXBl
XSk6CisgICAgICAgICAgICAgICAgdGVzdHMgPSBzZWxmLl9kYXRhW2l0ZW1fdHlwZV1bcGF0aF0K
ICAgICAgICAgICAgICAgICB5aWVsZCBpdGVtX3R5cGUsIHBhdGgsIHRlc3RzCiAKICAgICBkZWYg
aXRlcnBhdGgoc2VsZiwgcGF0aCk6CisgICAgICAgICMgdHlwZTogKFRleHQpIC0+IEl0ZXJhdG9y
W01hbmlmZXN0SXRlbV0KICAgICAgICAgZm9yIHR5cGVfdGVzdHMgaW4gc2VsZi5fZGF0YS52YWx1
ZXMoKToKLSAgICAgICAgICAgIGZvciB0ZXN0IGluIHR5cGVfdGVzdHMuZ2V0KHBhdGgsIHNldCgp
KToKKyAgICAgICAgICAgIGkgPSB0eXBlX3Rlc3RzLmdldChwYXRoLCBzZXQoKSkKKyAgICAgICAg
ICAgIGFzc2VydCBpIGlzIG5vdCBOb25lCisgICAgICAgICAgICBmb3IgdGVzdCBpbiBpOgogICAg
ICAgICAgICAgICAgIHlpZWxkIHRlc3QKIAogICAgIGRlZiBpdGVyZGlyKHNlbGYsIGRpcl9uYW1l
KToKKyAgICAgICAgIyB0eXBlOiAoVGV4dCkgLT4gSXRlcmF0b3JbTWFuaWZlc3RJdGVtXQogICAg
ICAgICBpZiBub3QgZGlyX25hbWUuZW5kc3dpdGgob3MucGF0aC5zZXApOgogICAgICAgICAgICAg
ZGlyX25hbWUgPSBkaXJfbmFtZSArIG9zLnBhdGguc2VwCiAgICAgICAgIGZvciB0eXBlX3Rlc3Rz
IGluIHNlbGYuX2RhdGEudmFsdWVzKCk6CkBAIC02MSwxOTYgKzI4MSwzMTYgQEAgY2xhc3MgTWFu
aWZlc3Qob2JqZWN0KToKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzX2J5
X3VybChzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W1RleHQsIFVuaW9uW1JlZlRl
c3QsIFJlZlRlc3ROb2RlXV0KICAgICAgICAgaWYgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmwg
aXMgTm9uZToKICAgICAgICAgICAgIGJ5X3VybCA9IHt9Ci0gICAgICAgICAgICBmb3IgcGF0aCwg
bm9kZXMgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJpdGVtcyhzZWxmLl9kYXRhLmdldCgicmVmdGVz
dCIsIHt9KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGl0ZXJpdGVtcyhzZWxmLl9kYXRhLmdldCgicmVmdGVzdF9ub2RlIiwge30pKSk6CisgICAgICAg
ICAgICBmb3IgcGF0aCwgbm9kZXMgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJpdGVtcyhzZWxmLl9k
YXRhWyJyZWZ0ZXN0Il0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpdGVyaXRlbXMoc2VsZi5fZGF0YVsicmVmdGVzdF9ub2RlIl0pKToKICAgICAgICAg
ICAgICAgICBmb3Igbm9kZSBpbiBub2RlczoKKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IGlz
aW5zdGFuY2Uobm9kZSwgKFJlZlRlc3QsIFJlZlRlc3ROb2RlKSkKICAgICAgICAgICAgICAgICAg
ICAgYnlfdXJsW25vZGUudXJsXSA9IG5vZGUKICAgICAgICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9k
ZXNfYnlfdXJsID0gYnlfdXJsCiAgICAgICAgIHJldHVybiBzZWxmLl9yZWZ0ZXN0X25vZGVzX2J5
X3VybAogCiAgICAgZGVmIGdldF9yZWZlcmVuY2Uoc2VsZiwgdXJsKToKKyAgICAgICAgIyB0eXBl
OiAoVGV4dCkgLT4gT3B0aW9uYWxbTWFuaWZlc3RJdGVtXQogICAgICAgICByZXR1cm4gc2VsZi5y
ZWZ0ZXN0X25vZGVzX2J5X3VybC5nZXQodXJsKQogCiAgICAgZGVmIHVwZGF0ZShzZWxmLCB0cmVl
KToKLSAgICAgICAgbmV3X2RhdGEgPSBkZWZhdWx0ZGljdChkaWN0KQotICAgICAgICBuZXdfaGFz
aGVzID0ge30KKyAgICAgICAgIyB0eXBlOiAoSXRlcmFibGVbVHVwbGVbVW5pb25bU291cmNlRmls
ZSwgYnl0ZXNdLCBib29sXV0pIC0+IGJvb2wKKyAgICAgICAgIiIiVXBkYXRlIHRoZSBtYW5pZmVz
dCBnaXZlbiBhbiBpdGVyYWJsZSBvZiBpdGVtcyB0aGF0IG1ha2UgdXAgdGhlIHVwZGF0ZWQgbWFu
aWZlc3QuCiAKLSAgICAgICAgcmVmdGVzdF9ub2RlcyA9IFtdCi0gICAgICAgIG9sZF9maWxlcyA9
IGRlZmF1bHRkaWN0KHNldCwge2s6IHNldCh2aWV3a2V5cyh2KSkgZm9yIGssIHYgaW4gaXRlcml0
ZW1zKHNlbGYuX2RhdGEpfSkKKyAgICAgICAgVGhlIGl0ZXJhYmxlIG11c3QgZWl0aGVyIGdlbmVy
YXRlIHR1cGxlcyBvZiB0aGUgZm9ybSAoU291cmNlRmlsZSwgVHJ1ZSkgZm9yIHBhdGhzCisgICAg
ICAgIHRoYXQgYXJlIHRvIGJlIHVwZGF0ZWQsIG9yIChwYXRoLCBGYWxzZSkgZm9yIGl0ZW1zIHRo
YXQgYXJlIG5vdCB0byBiZSB1cGRhdGVkLiBUaGlzCisgICAgICAgIHVudXN1YWwgQVBJIGlzIGRl
c2lnbmVkIGFzIGFuIG9wdGltaXN0YWlvbiBtZWFuaW5nIHRoYXQgU291cmNlRmlsZSBpdGVtcyBu
ZWVkIG5vdCBiZQorICAgICAgICBjb25zdHJ1Y3RlZCBpbiB0aGUgY2FzZSB3ZSBhcmUgbm90IHVw
ZGF0aW5nIGEgcGF0aCwgYnV0IHRoZSBhYnNlbmNlIG9mIGFuIGl0ZW0gZnJvbQorICAgICAgICB0
aGUgaXRlcmF0b3IgbWF5IGJlIHVzZWQgdG8gcmVtb3ZlIGRlZnVuY3QgZW50cmllcyBmcm9tIHRo
ZSBtYW5pZmVzdC4iIiIKKyAgICAgICAgYWxsX3JlZnRlc3Rfbm9kZXMgPSBbXSAgIyB0eXBlOiBM
aXN0W1R1cGxlW01hbmlmZXN0SXRlbSwgVGV4dF1dCisgICAgICAgIHNlZW5fZmlsZXMgPSBzZXQo
KSAgIyB0eXBlOiBTZXRbVGV4dF0KIAogICAgICAgICBjaGFuZ2VkID0gRmFsc2UKICAgICAgICAg
cmVmdGVzdF9jaGFuZ2VzID0gRmFsc2UKIAotICAgICAgICBmb3Igc291cmNlX2ZpbGUgaW4gdHJl
ZToKLSAgICAgICAgICAgIHJlbF9wYXRoID0gc291cmNlX2ZpbGUucmVsX3BhdGgKLSAgICAgICAg
ICAgIGZpbGVfaGFzaCA9IHNvdXJjZV9maWxlLmhhc2gKLQotICAgICAgICAgICAgaXNfbmV3ID0g
cmVsX3BhdGggbm90IGluIHNlbGYuX3BhdGhfaGFzaAotICAgICAgICAgICAgaGFzaF9jaGFuZ2Vk
ID0gRmFsc2UKLQotICAgICAgICAgICAgaWYgbm90IGlzX25ldzoKLSAgICAgICAgICAgICAgICBv
bGRfaGFzaCwgb2xkX3R5cGUgPSBzZWxmLl9wYXRoX2hhc2hbcmVsX3BhdGhdCi0gICAgICAgICAg
ICAgICAgb2xkX2ZpbGVzW29sZF90eXBlXS5yZW1vdmUocmVsX3BhdGgpCi0gICAgICAgICAgICAg
ICAgaWYgb2xkX2hhc2ggIT0gZmlsZV9oYXNoOgotICAgICAgICAgICAgICAgICAgICBuZXdfdHlw
ZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5pZmVzdF9pdGVtcygpCi0gICAgICAg
ICAgICAgICAgICAgIGhhc2hfY2hhbmdlZCA9IFRydWUKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBvbGRfdHlwZSwg
c2VsZi5fZGF0YVtvbGRfdHlwZV1bcmVsX3BhdGhdCi0gICAgICAgICAgICAgICAgaWYgb2xkX3R5
cGUgaW4gKCJyZWZ0ZXN0IiwgInJlZnRlc3Rfbm9kZSIpIGFuZCBuZXdfdHlwZSAhPSBvbGRfdHlw
ZToKLSAgICAgICAgICAgICAgICAgICAgcmVmdGVzdF9jaGFuZ2VzID0gVHJ1ZQorICAgICAgICAj
IENyZWF0ZSBsb2NhbCB2YXJpYWJsZSByZWZlcmVuY2VzIHRvIHRoZXNlIGRpY3RzIHNvIHdlIGF2
b2lkIHRoZQorICAgICAgICAjIGF0dHJpYnV0ZSBhY2Nlc3MgaW4gdGhlIGhvdCBsb29wIGJlbG93
CisgICAgICAgIHBhdGhfaGFzaCA9IHNlbGYuX3BhdGhfaGFzaCAgIyB0eXBlOiBEaWN0W1RleHQs
IFR1cGxlW1RleHQsIFRleHRdXQorICAgICAgICBkYXRhID0gc2VsZi5fZGF0YQorCisgICAgICAg
IHByZXZfZmlsZXMgPSBkYXRhLnBhdGhzKCkgICMgdHlwZTogU2V0W1RleHRdCisKKyAgICAgICAg
cmVmdGVzdF90eXBlcyA9ICgicmVmdGVzdCIsICJyZWZ0ZXN0X25vZGUiKQorCisgICAgICAgIGZv
ciBzb3VyY2VfZmlsZSwgdXBkYXRlIGluIHRyZWU6CisgICAgICAgICAgICBpZiBub3QgdXBkYXRl
OgorICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZV9maWxlLCAoYmluYXJ5
X3R5cGUsIHRleHRfdHlwZSkpCisgICAgICAgICAgICAgICAgcmVsX3BhdGggPSBzb3VyY2VfZmls
ZSAgIyB0eXBlOiBUZXh0CisgICAgICAgICAgICAgICAgc2Vlbl9maWxlcy5hZGQocmVsX3BhdGgp
CisgICAgICAgICAgICAgICAgYXNzZXJ0IHJlbF9wYXRoIGluIHBhdGhfaGFzaAorICAgICAgICAg
ICAgICAgIG9sZF9oYXNoLCBvbGRfdHlwZSA9IHBhdGhfaGFzaFtyZWxfcGF0aF0gICMgdHlwZTog
VHVwbGVbVGV4dCwgVGV4dF0KKyAgICAgICAgICAgICAgICBpZiBvbGRfdHlwZSBpbiByZWZ0ZXN0
X3R5cGVzOgorICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9pdGVtcyA9IGRhdGFbb2xkX3R5
cGVdW3JlbF9wYXRoXSAgIyB0eXBlOiBJdGVyYWJsZVtNYW5pZmVzdEl0ZW1dCisgICAgICAgICAg
ICAgICAgICAgIGFsbF9yZWZ0ZXN0X25vZGVzLmV4dGVuZCgoaXRlbSwgb2xkX2hhc2gpIGZvciBp
dGVtIGluIG1hbmlmZXN0X2l0ZW1zKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBuZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5pZmVzdF9pdGVtcygp
Ci0KLSAgICAgICAgICAgIGlmIG5ld190eXBlIGluICgicmVmdGVzdCIsICJyZWZ0ZXN0X25vZGUi
KToKLSAgICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVzLmV4dGVuZChtYW5pZmVzdF9pdGVtcykK
LSAgICAgICAgICAgICAgICBpZiBpc19uZXcgb3IgaGFzaF9jaGFuZ2VkOgotICAgICAgICAgICAg
ICAgICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCi0gICAgICAgICAgICBlbGlmIG5ld190eXBl
OgotICAgICAgICAgICAgICAgIG5ld19kYXRhW25ld190eXBlXVtyZWxfcGF0aF0gPSBzZXQobWFu
aWZlc3RfaXRlbXMpCi0KLSAgICAgICAgICAgIG5ld19oYXNoZXNbcmVsX3BhdGhdID0gKGZpbGVf
aGFzaCwgbmV3X3R5cGUpCisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBpc2luc3RhbmNlKHNv
dXJjZV9maWxlLCBieXRlcykKKyAgICAgICAgICAgICAgICByZWxfcGF0aCA9IHNvdXJjZV9maWxl
LnJlbF9wYXRoCisgICAgICAgICAgICAgICAgc2Vlbl9maWxlcy5hZGQocmVsX3BhdGgpCisKKyAg
ICAgICAgICAgICAgICBmaWxlX2hhc2ggPSBzb3VyY2VfZmlsZS5oYXNoICAjIHR5cGU6IFRleHQK
KworICAgICAgICAgICAgICAgIGlzX25ldyA9IHJlbF9wYXRoIG5vdCBpbiBwYXRoX2hhc2ggICMg
dHlwZTogYm9vbAorICAgICAgICAgICAgICAgIGhhc2hfY2hhbmdlZCA9IEZhbHNlICAjIHR5cGU6
IGJvb2wKKworICAgICAgICAgICAgICAgIGlmIG5vdCBpc19uZXc6CisgICAgICAgICAgICAgICAg
ICAgIG9sZF9oYXNoLCBvbGRfdHlwZSA9IHBhdGhfaGFzaFtyZWxfcGF0aF0KKyAgICAgICAgICAg
ICAgICAgICAgaWYgb2xkX2hhc2ggIT0gZmlsZV9oYXNoOgorICAgICAgICAgICAgICAgICAgICAg
ICAgbmV3X3R5cGUsIG1hbmlmZXN0X2l0ZW1zID0gc291cmNlX2ZpbGUubWFuaWZlc3RfaXRlbXMo
KQorICAgICAgICAgICAgICAgICAgICAgICAgaGFzaF9jaGFuZ2VkID0gVHJ1ZQorICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgbmV3X3R5cGUgIT0gb2xkX3R5cGU6CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZGVsIGRhdGFbb2xkX3R5cGVdW3JlbF9wYXRoXQorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfY2hhbmdlcyA9IFRydWUKKyAgICAgICAgICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIG5ld190eXBlID0gb2xkX3R5cGUK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfaXRlbXMgPSBkYXRhW29sZF90eXBl
XVtyZWxfcGF0aF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBu
ZXdfdHlwZSwgbWFuaWZlc3RfaXRlbXMgPSBzb3VyY2VfZmlsZS5tYW5pZmVzdF9pdGVtcygpCiAK
LSAgICAgICAgICAgIGlmIGlzX25ldyBvciBoYXNoX2NoYW5nZWQ6Ci0gICAgICAgICAgICAgICAg
Y2hhbmdlZCA9IFRydWUKKyAgICAgICAgICAgICAgICBpZiBuZXdfdHlwZSBpbiByZWZ0ZXN0X3R5
cGVzOgorICAgICAgICAgICAgICAgICAgICBhbGxfcmVmdGVzdF9ub2Rlcy5leHRlbmQoKGl0ZW0s
IGZpbGVfaGFzaCkgZm9yIGl0ZW0gaW4gbWFuaWZlc3RfaXRlbXMpCisgICAgICAgICAgICAgICAg
ICAgIGlmIGlzX25ldyBvciBoYXNoX2NoYW5nZWQ6CisgICAgICAgICAgICAgICAgICAgICAgICBy
ZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxpZiBpc19uZXcgb3IgaGFz
aF9jaGFuZ2VkOgorICAgICAgICAgICAgICAgICAgICBkYXRhW25ld190eXBlXVtyZWxfcGF0aF0g
PSBzZXQobWFuaWZlc3RfaXRlbXMpCiAKLSAgICAgICAgaWYgcmVmdGVzdF9jaGFuZ2VzIG9yIG9s
ZF9maWxlc1sicmVmdGVzdCJdIG9yIG9sZF9maWxlc1sicmVmdGVzdF9ub2RlIl06Ci0gICAgICAg
ICAgICByZWZ0ZXN0cywgcmVmdGVzdF9ub2RlcywgY2hhbmdlZF9oYXNoZXMgPSBzZWxmLl9jb21w
dXRlX3JlZnRlc3RzKHJlZnRlc3Rfbm9kZXMpCi0gICAgICAgICAgICBuZXdfZGF0YVsicmVmdGVz
dCJdID0gcmVmdGVzdHMKLSAgICAgICAgICAgIG5ld19kYXRhWyJyZWZ0ZXN0X25vZGUiXSA9IHJl
ZnRlc3Rfbm9kZXMKLSAgICAgICAgICAgIG5ld19oYXNoZXMudXBkYXRlKGNoYW5nZWRfaGFzaGVz
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV3X2RhdGFbInJlZnRlc3QiXSA9IHNlbGYu
X2RhdGFbInJlZnRlc3QiXQotICAgICAgICAgICAgbmV3X2RhdGFbInJlZnRlc3Rfbm9kZSJdID0g
c2VsZi5fZGF0YVsicmVmdGVzdF9ub2RlIl0KKyAgICAgICAgICAgICAgICBpZiBpc19uZXcgb3Ig
aGFzaF9jaGFuZ2VkOgorICAgICAgICAgICAgICAgICAgICBwYXRoX2hhc2hbcmVsX3BhdGhdID0g
KGZpbGVfaGFzaCwgbmV3X3R5cGUpCisgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSBUcnVl
CiAKLSAgICAgICAgaWYgYW55KGl0ZXJ2YWx1ZXMob2xkX2ZpbGVzKSk6CisgICAgICAgIGRlbGV0
ZWQgPSBwcmV2X2ZpbGVzIC0gc2Vlbl9maWxlcworICAgICAgICBpZiBkZWxldGVkOgogICAgICAg
ICAgICAgY2hhbmdlZCA9IFRydWUKKyAgICAgICAgICAgIGZvciByZWxfcGF0aCBpbiBkZWxldGVk
OgorICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHBhdGhfaGFzaDoKKyAgICAgICAgICAg
ICAgICAgICAgXywgb2xkX3R5cGUgPSBwYXRoX2hhc2hbcmVsX3BhdGhdCisgICAgICAgICAgICAg
ICAgICAgIGlmIG9sZF90eXBlIGluIHJlZnRlc3RfdHlwZXM6CisgICAgICAgICAgICAgICAgICAg
ICAgICByZWZ0ZXN0X2NoYW5nZXMgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGRlbCBwYXRo
X2hhc2hbcmVsX3BhdGhdCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlbCBkYXRhW29sZF90eXBlXVtyZWxfcGF0aF0KKyAgICAgICAgICAgICAgICAg
ICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZvciB0ZXN0X2RhdGEgaW4gaXRl
cnZhbHVlcyhkYXRhKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlbF9wYXRoIGluIHRl
c3RfZGF0YToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgdGVzdF9kYXRhW3JlbF9w
YXRoXQorCisgICAgICAgIGlmIHJlZnRlc3RfY2hhbmdlczoKKyAgICAgICAgICAgIHJlZnRlc3Rz
LCByZWZ0ZXN0X25vZGVzLCBjaGFuZ2VkX2hhc2hlcyA9IHNlbGYuX2NvbXB1dGVfcmVmdGVzdHMo
YWxsX3JlZnRlc3Rfbm9kZXMpCisgICAgICAgICAgICByZWZ0ZXN0X2RhdGEgPSBkYXRhWyJyZWZ0
ZXN0Il0KKyAgICAgICAgICAgIHJlZnRlc3RfZGF0YS5jbGVhcigpCisgICAgICAgICAgICBmb3Ig
cGF0aCwgaXRlbXMgaW4gaXRlcml0ZW1zKHJlZnRlc3RzKToKKyAgICAgICAgICAgICAgICBpZiBN
WVBZOgorICAgICAgICAgICAgICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBjYXN0KFNldFtN
YW5pZmVzdEl0ZW1dLCBpdGVtcykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAg
ICAgICAgICByZWZ0ZXN0X2RhdGFbcGF0aF0gPSBpdGVtcworCisgICAgICAgICAgICByZWZ0ZXN0
X25vZGVfZGF0YSA9IGRhdGFbInJlZnRlc3Rfbm9kZSJdCisgICAgICAgICAgICByZWZ0ZXN0X25v
ZGVfZGF0YS5jbGVhcigpCisgICAgICAgICAgICBmb3Igbm9kZV9wYXRoLCBub2RlX2l0ZW1zIGlu
IGl0ZXJpdGVtcyhyZWZ0ZXN0X25vZGVzKToKKyAgICAgICAgICAgICAgICBpZiBNWVBZOgorICAg
ICAgICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gY2FzdChTZXRb
TWFuaWZlc3RJdGVtXSwgbm9kZV9pdGVtcykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgICAgICAgICByZWZ0ZXN0X25vZGVfZGF0YVtub2RlX3BhdGhdID0gbm9kZV9pdGVtcwog
Ci0gICAgICAgIHNlbGYuX2RhdGEgPSBuZXdfZGF0YQotICAgICAgICBzZWxmLl9wYXRoX2hhc2gg
PSBuZXdfaGFzaGVzCisgICAgICAgICAgICBwYXRoX2hhc2gudXBkYXRlKGNoYW5nZWRfaGFzaGVz
KQogCiAgICAgICAgIHJldHVybiBjaGFuZ2VkCiAKLSAgICBkZWYgX2NvbXB1dGVfcmVmdGVzdHMo
c2VsZiwgcmVmdGVzdF9ub2Rlcyk6CisgICAgZGVmIF9jb21wdXRlX3JlZnRlc3RzKHNlbGYsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlZnRlc3Rfbm9kZXMgICMgdHlwZTogTGlzdFtUdXBs
ZVtNYW5pZmVzdEl0ZW0sIFRleHRdXQorICAgICAgICAgICAgICAgICAgICAgICAgICApOgorICAg
ICAgICAjIHR5cGU6ICguLi4pIC0+IFR1cGxlW0RpY3RbVGV4dCwgU2V0W1JlZlRlc3RdXSwgRGlj
dFtUZXh0LCBTZXRbUmVmVGVzdE5vZGVdXSwgRGljdFtUZXh0LCBUdXBsZVtUZXh0LCBUZXh0XV1d
CiAgICAgICAgIHNlbGYuX3JlZnRlc3Rfbm9kZXNfYnlfdXJsID0ge30KICAgICAgICAgaGFzX2lu
Ym91bmQgPSBzZXQoKQotICAgICAgICBmb3IgaXRlbSBpbiByZWZ0ZXN0X25vZGVzOgorICAgICAg
ICBmb3IgaXRlbSwgXyBpbiByZWZ0ZXN0X25vZGVzOgorICAgICAgICAgICAgYXNzZXJ0IGlzaW5z
dGFuY2UoaXRlbSwgKFJlZlRlc3ROb2RlLCBSZWZUZXN0KSkKICAgICAgICAgICAgIGZvciByZWZf
dXJsLCByZWZfdHlwZSBpbiBpdGVtLnJlZmVyZW5jZXM6CiAgICAgICAgICAgICAgICAgaGFzX2lu
Ym91bmQuYWRkKHJlZl91cmwpCiAKLSAgICAgICAgcmVmdGVzdHMgPSBkZWZhdWx0ZGljdChzZXQp
Ci0gICAgICAgIHJlZmVyZW5jZXMgPSBkZWZhdWx0ZGljdChzZXQpCi0gICAgICAgIGNoYW5nZWRf
aGFzaGVzID0ge30KKyAgICAgICAgcmVmdGVzdHMgPSBkZWZhdWx0ZGljdChzZXQpICAjIHR5cGU6
IERpY3RbVGV4dCwgU2V0W1JlZlRlc3RdXQorICAgICAgICByZWZlcmVuY2VzID0gZGVmYXVsdGRp
Y3Qoc2V0KSAgIyB0eXBlOiBEaWN0W1RleHQsIFNldFtSZWZUZXN0Tm9kZV1dCisgICAgICAgIGNo
YW5nZWRfaGFzaGVzID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBUdXBsZVtUZXh0LCBUZXh0XV0K
IAotICAgICAgICBmb3IgaXRlbSBpbiByZWZ0ZXN0X25vZGVzOgorICAgICAgICBmb3IgaXRlbSwg
ZmlsZV9oYXNoIGluIHJlZnRlc3Rfbm9kZXM6CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5j
ZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQogICAgICAgICAgICAgaWYgaXRlbS51cmwg
aW4gaGFzX2luYm91bmQ6CiAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgcmVmZXJlbmNlCiAg
ICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCBSZWZUZXN0KToKICAgICAgICAgICAg
ICAgICAgICAgaXRlbSA9IGl0ZW0udG9fUmVmVGVzdE5vZGUoKQotICAgICAgICAgICAgICAgICAg
ICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnNvdXJjZV9maWxlLnJlbF9wYXRoXSA9IChpdGVtLnNvdXJj
ZV9maWxlLmhhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXRlbV90eXBlKQotICAgICAgICAgICAgICAgIHJl
ZmVyZW5jZXNbaXRlbS5zb3VyY2VfZmlsZS5yZWxfcGF0aF0uYWRkKGl0ZW0pCisgICAgICAgICAg
ICAgICAgICAgIGNoYW5nZWRfaGFzaGVzW2l0ZW0ucGF0aF0gPSAoZmlsZV9oYXNoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXRlbV90eXBl
KQorICAgICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGl0ZW0sIFJlZlRlc3ROb2RlKQor
ICAgICAgICAgICAgICAgIHJlZmVyZW5jZXNbaXRlbS5wYXRoXS5hZGQoaXRlbSkKICAgICAgICAg
ICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLCBSZWZUZXN0Tm9k
ZSk6CiAgICAgICAgICAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnRvX1JlZlRlc3QoKQotICAgICAg
ICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnNvdXJjZV9maWxlLnJlbF9wYXRoXSA9
IChpdGVtLnNvdXJjZV9maWxlLmhhc2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uaXRlbV90eXBlKQotICAgICAg
ICAgICAgICAgIHJlZnRlc3RzW2l0ZW0uc291cmNlX2ZpbGUucmVsX3BhdGhdLmFkZChpdGVtKQor
ICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkX2hhc2hlc1tpdGVtLnBhdGhdID0gKGZpbGVfaGFz
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVt
Lml0ZW1fdHlwZSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCBSZWZU
ZXN0KQorICAgICAgICAgICAgICAgIHJlZnRlc3RzW2l0ZW0ucGF0aF0uYWRkKGl0ZW0pCisgICAg
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShpdGVtLCAoUmVmVGVzdE5vZGUsIFJlZlRlc3QpKQog
ICAgICAgICAgICAgc2VsZi5fcmVmdGVzdF9ub2Rlc19ieV91cmxbaXRlbS51cmxdID0gaXRlbQog
CiAgICAgICAgIHJldHVybiByZWZ0ZXN0cywgcmVmZXJlbmNlcywgY2hhbmdlZF9oYXNoZXMKIAog
ICAgIGRlZiB0b19qc29uKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IERpY3RbVGV4dCwg
QW55XQogICAgICAgICBvdXRfaXRlbXMgPSB7Ci0gICAgICAgICAgICB0ZXN0X3R5cGU6IHsKLSAg
ICAgICAgICAgICAgICBmcm9tX29zX3BhdGgocGF0aCk6Ci0gICAgICAgICAgICAgICAgW3QgZm9y
IHQgaW4gc29ydGVkKHRlc3QudG9fanNvbigpIGZvciB0ZXN0IGluIHRlc3RzKV0KLSAgICAgICAg
ICAgICAgICBmb3IgcGF0aCwgdGVzdHMgaW4gaXRlcml0ZW1zKHR5cGVfcGF0aHMpCi0gICAgICAg
ICAgICB9Ci0gICAgICAgICAgICBmb3IgdGVzdF90eXBlLCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVt
cyhzZWxmLl9kYXRhKQorICAgICAgICAgICAgdGVzdF90eXBlOiB0eXBlX3BhdGhzLnRvX2pzb24o
KQorICAgICAgICAgICAgZm9yIHRlc3RfdHlwZSwgdHlwZV9wYXRocyBpbiBpdGVyaXRlbXMoc2Vs
Zi5fZGF0YSkgaWYgdHlwZV9wYXRocwogICAgICAgICB9CiAgICAgICAgIHJ2ID0geyJ1cmxfYmFz
ZSI6IHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICJwYXRocyI6IHtmcm9tX29zX3BhdGgo
ayk6IHYgZm9yIGssIHYgaW4gaXRlcml0ZW1zKHNlbGYuX3BhdGhfaGFzaCl9LAogICAgICAgICAg
ICAgICAiaXRlbXMiOiBvdXRfaXRlbXMsCi0gICAgICAgICAgICAgICJ2ZXJzaW9uIjogQ1VSUkVO
VF9WRVJTSU9OfQorICAgICAgICAgICAgICAidmVyc2lvbiI6IENVUlJFTlRfVkVSU0lPTn0gICMg
dHlwZTogRGljdFtUZXh0LCBBbnldCiAgICAgICAgIHJldHVybiBydgogCiAgICAgQGNsYXNzbWV0
aG9kCi0gICAgZGVmIGZyb21fanNvbihjbHMsIHRlc3RzX3Jvb3QsIG9iaiwgdHlwZXM9Tm9uZSwg
bWV0YV9maWx0ZXJzPU5vbmUpOgorICAgIGRlZiBmcm9tX2pzb24oY2xzLCB0ZXN0c19yb290LCBv
YmosIHR5cGVzPU5vbmUpOgorICAgICAgICAjIHR5cGU6IChzdHIsIERpY3RbVGV4dCwgQW55XSwg
T3B0aW9uYWxbQ29udGFpbmVyW1RleHRdXSkgLT4gTWFuaWZlc3QKICAgICAgICAgdmVyc2lvbiA9
IG9iai5nZXQoInZlcnNpb24iKQogICAgICAgICBpZiB2ZXJzaW9uICE9IENVUlJFTlRfVkVSU0lP
TjoKICAgICAgICAgICAgIHJhaXNlIE1hbmlmZXN0VmVyc2lvbk1pc21hdGNoCiAKLSAgICAgICAg
c2VsZiA9IGNscyh1cmxfYmFzZT1vYmouZ2V0KCJ1cmxfYmFzZSIsICIvIikpCisgICAgICAgIHNl
bGYgPSBjbHModGVzdHNfcm9vdCwgdXJsX2Jhc2U9b2JqLmdldCgidXJsX2Jhc2UiLCAiLyIpKQog
ICAgICAgICBpZiBub3QgaGFzYXR0cihvYmosICJpdGVtcyIpIGFuZCBoYXNhdHRyKG9iaiwgInBh
dGhzIik6CiAgICAgICAgICAgICByYWlzZSBNYW5pZmVzdEVycm9yCiAKICAgICAgICAgc2VsZi5f
cGF0aF9oYXNoID0ge3RvX29zX3BhdGgoayk6IHYgZm9yIGssIHYgaW4gaXRlcml0ZW1zKG9ialsi
cGF0aHMiXSl9CiAKLSAgICAgICAgaXRlbV9jbGFzc2VzID0geyJ0ZXN0aGFybmVzcyI6IFRlc3Ro
YXJuZXNzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogUmVmVGVzdCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0X25vZGUiOiBSZWZUZXN0Tm9kZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICJtYW51YWwiOiBNYW51YWxUZXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgInN0dWIiOiBTdHViLAotICAgICAgICAgICAgICAgICAgICAgICAgIndkc3Bl
YyI6IFdlYmRyaXZlclNwZWNUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgImNvbmZvcm1h
bmNlY2hlY2tlciI6IENvbmZvcm1hbmNlQ2hlY2tlclRlc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAidmlzdWFsIjogVmlzdWFsVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdXBw
b3J0IjogU3VwcG9ydEZpbGV9Ci0KLSAgICAgICAgbWV0YV9maWx0ZXJzID0gbWV0YV9maWx0ZXJz
IG9yIFtdCi0KLSAgICAgICAgc291cmNlX2ZpbGVzID0ge30KLQogICAgICAgICBmb3IgdGVzdF90
eXBlLCB0eXBlX3BhdGhzIGluIGl0ZXJpdGVtcyhvYmpbIml0ZW1zIl0pOgorICAgICAgICAgICAg
IyBEcm9wICJzdHViIiBpdGVtcywgd2hpY2ggYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQgYnV0IG1h
eSBiZQorICAgICAgICAgICAgIyBwcmVzZW50IHdoZW4gZG9pbmcgYW4gaW5jcmVtZW50YWwgbWFu
aWZlc3QgdXBkYXRlLgorICAgICAgICAgICAgIyBTZWUgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy9yZmNzL3B1bGwvMjcgZm9yIGJhY2tncm91bmQuCisgICAgICAgICAgICAj
CisgICAgICAgICAgICAjIFRPRE8oTUFOSUZFU1R2Nyk6IHJlbW92ZSB0aGlzIGNvbmRpdGlvbgor
ICAgICAgICAgICAgaWYgdGVzdF90eXBlID09ICJzdHViIjoKKyAgICAgICAgICAgICAgICBjb250
aW51ZQorCiAgICAgICAgICAgICBpZiB0ZXN0X3R5cGUgbm90IGluIGl0ZW1fY2xhc3NlczoKICAg
ICAgICAgICAgICAgICByYWlzZSBNYW5pZmVzdEVycm9yCiAKICAgICAgICAgICAgIGlmIHR5cGVz
IGFuZCB0ZXN0X3R5cGUgbm90IGluIHR5cGVzOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAK
LSAgICAgICAgICAgIHRlc3RfY2xzID0gaXRlbV9jbGFzc2VzW3Rlc3RfdHlwZV0KLSAgICAgICAg
ICAgIHRlc3RzID0gZGVmYXVsdGRpY3Qoc2V0KQotICAgICAgICAgICAgZm9yIHBhdGgsIG1hbmlm
ZXN0X3Rlc3RzIGluIGl0ZXJpdGVtcyh0eXBlX3BhdGhzKToKLSAgICAgICAgICAgICAgICBwYXRo
ID0gdG9fb3NfcGF0aChwYXRoKQotICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIGl0ZXJmaWx0
ZXIobWV0YV9maWx0ZXJzLCBtYW5pZmVzdF90ZXN0cyk6Ci0gICAgICAgICAgICAgICAgICAgIG1h
bmlmZXN0X2l0ZW0gPSB0ZXN0X2Nscy5mcm9tX2pzb24oc2VsZiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0c19yb290LAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzb3VyY2VfZmlsZXM9c291cmNlX2ZpbGVzKQotICAgICAgICAgICAgICAgICAgICB0ZXN0c1tw
YXRoXS5hZGQobWFuaWZlc3RfaXRlbSkKLSAgICAgICAgICAgIHNlbGYuX2RhdGFbdGVzdF90eXBl
XSA9IHRlc3RzCisgICAgICAgICAgICBzZWxmLl9kYXRhW3Rlc3RfdHlwZV0uc2V0X2pzb24odGVz
dHNfcm9vdCwgdHlwZV9wYXRocykKIAogICAgICAgICByZXR1cm4gc2VsZgogCiAKLWRlZiBsb2Fk
KHRlc3RzX3Jvb3QsIG1hbmlmZXN0LCB0eXBlcz1Ob25lLCBtZXRhX2ZpbHRlcnM9Tm9uZSk6Citk
ZWYgbG9hZCh0ZXN0c19yb290LCBtYW5pZmVzdCwgdHlwZXM9Tm9uZSk6CisgICAgIyB0eXBlOiAo
c3RyLCBVbmlvbltJT1tieXRlc10sIHN0cl0sIE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0pIC0+
IE9wdGlvbmFsW01hbmlmZXN0XQogICAgIGxvZ2dlciA9IGdldF9sb2dnZXIoKQogCi0gICAgIyAi
bWFuaWZlc3QiIGlzIGEgcGF0aCBvciBmaWxlLWxpa2Ugb2JqZWN0LgorICAgIGxvZ2dlci53YXJu
aW5nKCJQcmVmZXIgbG9hZF9hbmRfdXBkYXRlIGluc3RlYWQiKQorICAgIHJldHVybiBfbG9hZChs
b2dnZXIsIHRlc3RzX3Jvb3QsIG1hbmlmZXN0LCB0eXBlcykKKworCitfX2xvYWRfY2FjaGUgPSB7
fSAgIyB0eXBlOiBEaWN0W3N0ciwgTWFuaWZlc3RdCisKKworZGVmIF9sb2FkKGxvZ2dlciwgICMg
dHlwZTogTG9nZ2VyCisgICAgICAgICAgdGVzdHNfcm9vdCwgICMgdHlwZTogc3RyCisgICAgICAg
ICAgbWFuaWZlc3QsICAjIHR5cGU6IFVuaW9uW0lPW2J5dGVzXSwgc3RyXQorICAgICAgICAgIHR5
cGVzPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0KKyAgICAgICAgICBh
bGxvd19jYWNoZWQ9VHJ1ZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgKToKKyAgICAjIHR5cGU6
ICguLi4pIC0+IE9wdGlvbmFsW01hbmlmZXN0XQorICAgIG1hbmlmZXN0X3BhdGggPSAobWFuaWZl
c3QgaWYgaXNpbnN0YW5jZShtYW5pZmVzdCwgc3RyaW5nX3R5cGVzKQorICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBtYW5pZmVzdC5uYW1lKQorICAgIGlmIGFsbG93X2NhY2hlZCBhbmQgbWFuaWZl
c3RfcGF0aCBpbiBfX2xvYWRfY2FjaGU6CisgICAgICAgIHJldHVybiBfX2xvYWRfY2FjaGVbbWFu
aWZlc3RfcGF0aF0KKwogICAgIGlmIGlzaW5zdGFuY2UobWFuaWZlc3QsIHN0cmluZ190eXBlcyk6
CiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0KToKICAgICAgICAgICAgIGxvZ2dl
ci5kZWJ1ZygiT3BlbmluZyBtYW5pZmVzdCBhdCAlcyIgJSBtYW5pZmVzdCkKICAgICAgICAgZWxz
ZToKICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiQ3JlYXRpbmcgbmV3IG1hbmlmZXN0IGF0ICVz
IiAlIG1hbmlmZXN0KQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4obWFuaWZl
c3QpIGFzIGY6Ci0gICAgICAgICAgICAgICAgcnYgPSBNYW5pZmVzdC5mcm9tX2pzb24odGVzdHNf
cm9vdCwganNvbi5sb2FkKGYpLCB0eXBlcz10eXBlcywgbWV0YV9maWx0ZXJzPW1ldGFfZmlsdGVy
cykKKyAgICAgICAgICAgIHdpdGggb3BlbihtYW5pZmVzdCwgInJiIikgYXMgZjoKKyAgICAgICAg
ICAgICAgICBydiA9IE1hbmlmZXN0LmZyb21fanNvbih0ZXN0c19yb290LAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3RfanNvbi5sb2FkKGYpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzPXR5cGVzKQogICAgICAgICBleGNl
cHQgSU9FcnJvcjoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGV4Y2VwdCBWYWx1
ZUVycm9yOgogICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIiVyIG1heSBiZSBjb3JydXB0ZWQi
LCBtYW5pZmVzdCkKICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBydgor
ICAgIGVsc2U6CisgICAgICAgIHJ2ID0gTWFuaWZlc3QuZnJvbV9qc29uKHRlc3RzX3Jvb3QsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhc3RfanNvbi5sb2FkKG1hbmlmZXN0KSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXM9dHlwZXMpCisKKyAgICBpZiBh
bGxvd19jYWNoZWQ6CisgICAgICAgIF9fbG9hZF9jYWNoZVttYW5pZmVzdF9wYXRoXSA9IHJ2Cisg
ICAgcmV0dXJuIHJ2CisKKworZGVmIGxvYWRfYW5kX3VwZGF0ZSh0ZXN0c19yb290LCAgIyB0eXBl
OiBieXRlcworICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9wYXRoLCAgIyB0eXBlOiBieXRl
cworICAgICAgICAgICAgICAgICAgICB1cmxfYmFzZSwgICMgdHlwZTogVGV4dAorICAgICAgICAg
ICAgICAgICAgICB1cGRhdGU9VHJ1ZSwgICMgdHlwZTogYm9vbAorICAgICAgICAgICAgICAgICAg
ICByZWJ1aWxkPUZhbHNlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICAgIG1ldGFk
YXRhX3BhdGg9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbYnl0ZXNdCisgICAgICAgICAgICAgICAg
ICAgIGNhY2hlX3Jvb3Q9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbYnl0ZXNdCisgICAgICAgICAg
ICAgICAgICAgIHdvcmtpbmdfY29weT1UcnVlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAg
ICAgICAgIHR5cGVzPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW0NvbnRhaW5lcltUZXh0XV0KKyAg
ICAgICAgICAgICAgICAgICAgd3JpdGVfbWFuaWZlc3Q9VHJ1ZSwgICMgdHlwZTogYm9vbAorICAg
ICAgICAgICAgICAgICAgICBhbGxvd19jYWNoZWQ9VHJ1ZSAgIyB0eXBlOiBib29sCisgICAgICAg
ICAgICAgICAgICAgICk6CisgICAgIyB0eXBlOiAoLi4uKSAtPiBNYW5pZmVzdAorICAgIGxvZ2dl
ciA9IGdldF9sb2dnZXIoKQogCi0gICAgcmV0dXJuIE1hbmlmZXN0LmZyb21fanNvbih0ZXN0c19y
b290LCBqc29uLmxvYWQobWFuaWZlc3QpLCB0eXBlcz10eXBlcywgbWV0YV9maWx0ZXJzPW1ldGFf
ZmlsdGVycykKKyAgICBtYW5pZmVzdCA9IE5vbmUKKyAgICBpZiBub3QgcmVidWlsZDoKKyAgICAg
ICAgdHJ5OgorICAgICAgICAgICAgbWFuaWZlc3QgPSBfbG9hZChsb2dnZXIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X3BhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVzPXR5
cGVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvd19jYWNoZWQ9YWxsb3dfY2Fj
aGVkKQorICAgICAgICBleGNlcHQgTWFuaWZlc3RWZXJzaW9uTWlzbWF0Y2g6CisgICAgICAgICAg
ICBsb2dnZXIuaW5mbygiTWFuaWZlc3QgdmVyc2lvbiBjaGFuZ2VkLCByZWJ1aWxkaW5nIikKKwor
ICAgICAgICBpZiBtYW5pZmVzdCBpcyBub3QgTm9uZSBhbmQgbWFuaWZlc3QudXJsX2Jhc2UgIT0g
dXJsX2Jhc2U6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiTWFuaWZlc3QgdXJsIGJhc2UgZGlk
IG5vdCBtYXRjaCwgcmVidWlsZGluZyIpCisgICAgICAgICAgICBtYW5pZmVzdCA9IE5vbmUKKwor
ICAgIGlmIG1hbmlmZXN0IGlzIE5vbmU6CisgICAgICAgIG1hbmlmZXN0ID0gTWFuaWZlc3QodGVz
dHNfcm9vdCwgdXJsX2Jhc2UpCisgICAgICAgIHJlYnVpbGQgPSBUcnVlCisgICAgICAgIHVwZGF0
ZSA9IFRydWUKKworICAgIGlmIHJlYnVpbGQgb3IgdXBkYXRlOgorICAgICAgICB0cmVlID0gdmNz
LmdldF90cmVlKHRlc3RzX3Jvb3QsIG1hbmlmZXN0LCBtYW5pZmVzdF9wYXRoLCBjYWNoZV9yb290
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtpbmdfY29weSwgcmVidWlsZCkKKyAg
ICAgICAgY2hhbmdlZCA9IG1hbmlmZXN0LnVwZGF0ZSh0cmVlKQorICAgICAgICBpZiB3cml0ZV9t
YW5pZmVzdCBhbmQgY2hhbmdlZDoKKyAgICAgICAgICAgIHdyaXRlKG1hbmlmZXN0LCBtYW5pZmVz
dF9wYXRoKQorICAgICAgICB0cmVlLmR1bXBfY2FjaGVzKCkKKworICAgIHJldHVybiBtYW5pZmVz
dAogCiAKIGRlZiB3cml0ZShtYW5pZmVzdCwgbWFuaWZlc3RfcGF0aCk6CisgICAgIyB0eXBlOiAo
TWFuaWZlc3QsIGJ5dGVzKSAtPiBOb25lCiAgICAgZGlyX25hbWUgPSBvcy5wYXRoLmRpcm5hbWUo
bWFuaWZlc3RfcGF0aCkKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGlyX25hbWUpOgogICAg
ICAgICBvcy5tYWtlZGlycyhkaXJfbmFtZSkKICAgICB3aXRoIG9wZW4obWFuaWZlc3RfcGF0aCwg
IndiIikgYXMgZjoKLSAgICAgICAganNvbi5kdW1wKG1hbmlmZXN0LnRvX2pzb24oKSwgZiwgc29y
dF9rZXlzPVRydWUsIGluZGVudD0xLCBzZXBhcmF0b3JzPSgnLCcsICc6ICcpKQorICAgICAgICAj
IFVzZSAnLCcgaW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAnLCAnIHNlcGFyYXRvciB0byBwcmV2ZW50
IHRyYWlsaW5nCisgICAgICAgICMgc3BhY2VzOiBodHRwczovL2RvY3MucHl0aG9uLm9yZy8yL2xp
YnJhcnkvanNvbi5odG1sI2pzb24uZHVtcAorICAgICAgICBqc29uLmR1bXAobWFuaWZlc3QudG9f
anNvbigpLCBmLAorICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPVRydWUsIGluZGVudD0xLCBz
ZXBhcmF0b3JzPSgnLCcsICc6ICcpKQogICAgICAgICBmLndyaXRlKCJcbiIpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3NvdXJjZWZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKaW5kZXggMTMzZjhiNTk4MjhkYWZk
MDE2ZGY5NTQyOWZlNTI4NjU2MmI0NzMzYy4uNDc4OGZjOWJkYjY0MDQ0N2ViOTk5NzgwOGM1Yjcx
MTA2NjFhMzk2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9zb3VyY2VmaWxlLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3Qvc291cmNlZmls
ZS5weQpAQCAtMSwyOSArMSw1MiBAQAogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCByZQogaW1wb3J0
IG9zCi1mcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0
IGRlcXVlCitmcm9tIHNpeCBpbXBvcnQgYmluYXJ5X3R5cGUsIFBZMwogZnJvbSBzaXgubW92ZXMu
dXJsbGliLnBhcnNlIGltcG9ydCB1cmxqb2luCiBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gK
KworTVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1ZSB3aGVu
IHJ1biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBBbnkKKyAgICBmcm9tIHR5
cGluZyBpbXBvcnQgQW55U3RyCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEJpbmFyeUlPCisgICAg
ZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxhYmxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IERlcXVl
CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IERpY3QKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgSXRl
cmFibGUKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgTGlzdAorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBPcHRpb25hbAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBQYXR0ZXJuCisgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IFNldAorICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CisgICAgZnJvbSB0eXBp
bmcgaW1wb3J0IFR1cGxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFVuaW9uCisgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IGNhc3QKKwogdHJ5OgogICAgIGZyb20geG1sLmV0cmVlIGltcG9ydCBjRWxl
bWVudFRyZWUgYXMgRWxlbWVudFRyZWUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBmcm9tIHht
bC5ldHJlZSBpbXBvcnQgRWxlbWVudFRyZWUKKyAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxl
bWVudFRyZWUgYXMgRWxlbWVudFRyZWUgICMgdHlwZTogaWdub3JlCiAKIGltcG9ydCBodG1sNWxp
YgogCiBmcm9tIC4gaW1wb3J0IFhNTFBhcnNlcgotZnJvbSAuaXRlbSBpbXBvcnQgU3R1YiwgTWFu
dWFsVGVzdCwgV2ViZHJpdmVyU3BlY1Rlc3QsIFJlZlRlc3ROb2RlLCBUZXN0aGFybmVzc1Rlc3Qs
IFN1cHBvcnRGaWxlLCBDb25mb3JtYW5jZUNoZWNrZXJUZXN0LCBWaXN1YWxUZXN0Ci1mcm9tIC51
dGlscyBpbXBvcnQgcmVsX3BhdGhfdG9fdXJsLCBDb250ZXh0TWFuYWdlckJ5dGVzSU8sIGNhY2hl
ZF9wcm9wZXJ0eQorZnJvbSAuaXRlbSBpbXBvcnQgKE1hbmlmZXN0SXRlbSwgTWFudWFsVGVzdCwg
V2ViRHJpdmVyU3BlY1Rlc3QsIFJlZlRlc3ROb2RlLCBUZXN0aGFybmVzc1Rlc3QsCisgICAgICAg
ICAgICAgICAgICAgU3VwcG9ydEZpbGUsIENvbmZvcm1hbmNlQ2hlY2tlclRlc3QsIFZpc3VhbFRl
c3QpCitmcm9tIC51dGlscyBpbXBvcnQgQ29udGV4dE1hbmFnZXJCeXRlc0lPLCBjYWNoZWRfcHJv
cGVydHkKIAogd2RfcGF0dGVybiA9ICIqLnB5IgotanNfbWV0YV9yZSA9IHJlLmNvbXBpbGUoYiIv
L1xzKk1FVEE6XHMqKFx3Kik9KC4qKSQiKQotcHl0aG9uX21ldGFfcmUgPSByZS5jb21waWxlKGIi
I1xzKk1FVEE6XHMqKFx3Kik9KC4qKSQiKQoranNfbWV0YV9yZSA9IHJlLmNvbXBpbGUoYnIiLy9c
cypNRVRBOlxzKihcdyopPSguKikkIikKK3B5dGhvbl9tZXRhX3JlID0gcmUuY29tcGlsZShiciIj
XHMqTUVUQTpccyooXHcqKT0oLiopJCIpCiAKIHJlZmVyZW5jZV9maWxlX3JlID0gcmUuY29tcGls
ZShyJyhefFtcLV9dKShub3QpP3JlZlswLTldKihbXC1fXXwkKScpCiAKLXNwYWNlX2NoYXJzID0g
dSIiLmpvaW4oaHRtbDVsaWIuY29uc3RhbnRzLnNwYWNlQ2hhcmFjdGVycykKK3NwYWNlX2NoYXJz
ID0gdSIiLmpvaW4oaHRtbDVsaWIuY29uc3RhbnRzLnNwYWNlQ2hhcmFjdGVycykgICMgdHlwZTog
VGV4dAogCiBkZWYgcmVwbGFjZV9lbmQocywgb2xkLCBuZXcpOgorICAgICMgdHlwZTogKFRleHQs
IFRleHQsIFRleHQpIC0+IFRleHQKICAgICAiIiIKICAgICBHaXZlbiBhIHN0cmluZyBgc2AgdGhh
dCBlbmRzIHdpdGggYG9sZGAsIHJlcGxhY2UgdGhhdCBvY2N1cnJlbmNlIG9mIGBvbGRgCiAgICAg
d2l0aCBgbmV3YC4KQEAgLTMzLDYgKzU2LDcgQEAgZGVmIHJlcGxhY2VfZW5kKHMsIG9sZCwgbmV3
KToKIAogCiBkZWYgcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwgcmVnZXhwKToKKyAgICAjIHR5cGU6
IChCaW5hcnlJTywgUGF0dGVybltieXRlc10pIC0+IEl0ZXJhYmxlW1R1cGxlW2J5dGVzLCBieXRl
c11dCiAgICAgIiIiCiAgICAgWWllbGRzIGFueSBtZXRhZGF0YSAocGFpcnMgb2YgYnl0ZXN0cmlu
Z3MpIGZyb20gdGhlIGZpbGUtbGlrZSBvYmplY3QgYGZgLAogICAgIGFzIHNwZWNpZmllZCBhY2Nv
cmRpbmcgdG8gYSBzdXBwbGllZCByZWdleHAuCkBAIC01NywxMCArODEsMTEgQEAgX2FueV92YXJp
YW50cyA9IHsKICAgICBiImRlZGljYXRlZHdvcmtlciI6IHsic3VmZml4IjogIi5hbnkud29ya2Vy
Lmh0bWwifSwKICAgICBiIndvcmtlciI6IHsibG9uZ2hhbmQiOiB7YiJkZWRpY2F0ZWR3b3JrZXIi
LCBiInNoYXJlZHdvcmtlciIsIGIic2VydmljZXdvcmtlciJ9fSwKICAgICBiImpzc2hlbGwiOiB7
InN1ZmZpeCI6ICIuYW55LmpzIn0sCi19Cit9ICAjIHR5cGU6IERpY3RbYnl0ZXMsIERpY3Rbc3Ry
LCBBbnldXQogCiAKIGRlZiBnZXRfYW55X3ZhcmlhbnRzKGl0ZW0pOgorICAgICMgdHlwZTogKGJ5
dGVzKSAtPiBTZXRbYnl0ZXNdCiAgICAgIiIiCiAgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50
cyAoYnl0ZXN0cmluZ3MpIGRlZmluZWQgYnkgdGhlIGdpdmVuIGtleXdvcmQuCiAgICAgIiIiCkBA
IC03NSw2ICsxMDAsNyBAQCBkZWYgZ2V0X2FueV92YXJpYW50cyhpdGVtKToKIAogCiBkZWYgZ2V0
X2RlZmF1bHRfYW55X3ZhcmlhbnRzKCk6CisgICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCiAg
ICAgIiIiCiAgICAgUmV0dXJucyBhIHNldCBvZiB2YXJpYW50cyAoYnl0ZXN0cmluZ3MpIHRoYXQg
d2lsbCBiZSB1c2VkIGJ5IGRlZmF1bHQuCiAgICAgIiIiCkBAIC04Miw2ICsxMDgsNyBAQCBkZWYg
Z2V0X2RlZmF1bHRfYW55X3ZhcmlhbnRzKCk6CiAKIAogZGVmIHBhcnNlX3ZhcmlhbnRzKHZhbHVl
KToKKyAgICAjIHR5cGU6IChieXRlcykgLT4gU2V0W2J5dGVzXQogICAgICIiIgogICAgIFJldHVy
bnMgYSBzZXQgb2YgdmFyaWFudHMgKGJ5dGVzdHJpbmdzKSBkZWZpbmVkIGJ5IGEgY29tbWEtc2Vw
YXJhdGVkIHZhbHVlLgogICAgICIiIgpAQCAtMTAwLDYgKzEyNyw3IEBAIGRlZiBwYXJzZV92YXJp
YW50cyh2YWx1ZSk6CiAKIAogZGVmIGdsb2JhbF9zdWZmaXhlcyh2YWx1ZSk6CisgICAgIyB0eXBl
OiAoYnl0ZXMpIC0+IFNldFtUdXBsZVtieXRlcywgYm9vbF1dCiAgICAgIiIiCiAgICAgWWllbGRz
IHR1cGxlcyBvZiB0aGUgcmVsZXZhbnQgZmlsZW5hbWUgc3VmZml4IChhIHN0cmluZykgYW5kIHdo
ZXRoZXIgdGhlCiAgICAgdmFyaWFudCBpcyBpbnRlbmRlZCB0byBydW4gaW4gYSBKUyBzaGVsbCwg
Zm9yIHRoZSB2YXJpYW50cyBkZWZpbmVkIGJ5IHRoZQpAQCAtMTE5LDYgKzE0Nyw3IEBAIGRlZiBn
bG9iYWxfc3VmZml4ZXModmFsdWUpOgogCiAKIGRlZiBnbG9iYWxfdmFyaWFudF91cmwodXJsLCBz
dWZmaXgpOgorICAgICMgdHlwZTogKFRleHQsIFRleHQpIC0+IFRleHQKICAgICAiIiIKICAgICBS
ZXR1cm5zIGEgdXJsIGNyZWF0ZWQgZnJvbSB0aGUgZ2l2ZW4gdXJsIGFuZCBzdWZmaXggKGFsbCBz
dHJpbmdzKS4KICAgICAiIiIKQEAgLTEzMCwzMiArMTU5LDQxIEBAIGRlZiBnbG9iYWxfdmFyaWFu
dF91cmwodXJsLCBzdWZmaXgpOgogICAgIHJldHVybiByZXBsYWNlX2VuZCh1cmwsICIuanMiLCBz
dWZmaXgpCiAKIAorZGVmIF9wYXJzZV9odG1sKGYpOgorICAgICMgdHlwZTogKEJpbmFyeUlPKSAt
PiBFbGVtZW50VHJlZS5FbGVtZW50VHJlZQorICAgIGRvYyA9IGh0bWw1bGliLnBhcnNlKGYsIHRy
ZWVidWlsZGVyPSJldHJlZSIsIHVzZUNoYXJkZXQ9RmFsc2UpCisgICAgaWYgTVlQWToKKyAgICAg
ICAgcmV0dXJuIGNhc3QoRWxlbWVudFRyZWUuRWxlbWVudFRyZWUsIGRvYykKKyAgICByZXR1cm4g
ZG9jCisKIGRlZiBfcGFyc2VfeG1sKGYpOgorICAgICMgdHlwZTogKEJpbmFyeUlPKSAtPiBFbGVt
ZW50VHJlZS5FbGVtZW50VHJlZQogICAgIHRyeToKICAgICAgICAgIyByYWlzZXMgVmFsdWVFcnJv
ciB3aXRoIGFuIHVuc3VwcG9ydGVkIGVuY29kaW5nLAogICAgICAgICAjIFBhcnNlRXJyb3Igd2hl
biB0aGVyZSdzIGFuIHVuZGVmaW5lZCBlbnRpdHkKICAgICAgICAgcmV0dXJuIEVsZW1lbnRUcmVl
LnBhcnNlKGYpCiAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBFbGVtZW50VHJlZS5QYXJzZUVycm9y
KToKICAgICAgICAgZi5zZWVrKDApCi0gICAgICAgIHJldHVybiBFbGVtZW50VHJlZS5wYXJzZShm
LCBYTUxQYXJzZXIuWE1MUGFyc2VyKCkpCisgICAgICAgIHJldHVybiBFbGVtZW50VHJlZS5wYXJz
ZShmLCBYTUxQYXJzZXIuWE1MUGFyc2VyKCkpICAjIHR5cGU6IGlnbm9yZQogCiAKIGNsYXNzIFNv
dXJjZUZpbGUob2JqZWN0KToKLSAgICBwYXJzZXJzID0geyJodG1sIjpsYW1iZGEgeDpodG1sNWxp
Yi5wYXJzZSh4LCB0cmVlYnVpbGRlcj0iZXRyZWUiLCB1c2VDaGFyZGV0PUZhbHNlKSwKKyAgICBw
YXJzZXJzID0geyJodG1sIjpfcGFyc2VfaHRtbCwKICAgICAgICAgICAgICAgICJ4aHRtbCI6X3Bh
cnNlX3htbCwKLSAgICAgICAgICAgICAgICJzdmciOl9wYXJzZV94bWx9CisgICAgICAgICAgICAg
ICAic3ZnIjpfcGFyc2VfeG1sfSAgIyB0eXBlOiBEaWN0W1RleHQsIENhbGxhYmxlW1tCaW5hcnlJ
T10sIEVsZW1lbnRUcmVlLkVsZW1lbnRUcmVlXV0KIAotICAgIHJvb3RfZGlyX25vbl90ZXN0ID0g
c2V0KFsiY29tbW9uIl0pCisgICAgcm9vdF9kaXJfbm9uX3Rlc3QgPSB7ImNvbW1vbiJ9CiAKLSAg
ICBkaXJfbm9uX3Rlc3QgPSBzZXQoWyJyZXNvdXJjZXMiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgInN1cHBvcnQiLAotICAgICAgICAgICAgICAgICAgICAgICAgInRvb2xzIl0pCisgICAgZGly
X25vbl90ZXN0ID0geyJyZXNvdXJjZXMiLAorICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCIs
CisgICAgICAgICAgICAgICAgICAgICJ0b29scyJ9CiAKICAgICBkaXJfcGF0aF9ub25fdGVzdCA9
IHsoImNzczIxIiwgImFyY2hpdmUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIs
ICJDU1MyIiwgImFyY2hpdmUiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJj
b21tb24iKX0KKyAgICAgICAgICAgICAgICAgICAgICAgICAoImNzcyIsICJjb21tb24iKX0gICMg
dHlwZTogU2V0W1R1cGxlW2J5dGVzLCAuLi5dXQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRl
c3RzX3Jvb3QsIHJlbF9wYXRoLCB1cmxfYmFzZSwgaGFzaD1Ob25lLCBjb250ZW50cz1Ob25lKToK
KyAgICAgICAgIyB0eXBlOiAoQW55U3RyLCBBbnlTdHIsIFRleHQsIE9wdGlvbmFsW2J5dGVzXSwg
T3B0aW9uYWxbYnl0ZXNdKSAtPiBOb25lCiAgICAgICAgICIiIk9iamVjdCByZXByZXNlbnRpbmcg
YSBmaWxlIGluIGEgc291cmNlIHRyZWUuCiAKICAgICAgICAgOnBhcmFtIHRlc3RzX3Jvb3Q6IFBh
dGggdG8gdGhlIHJvb3Qgb2YgdGhlIHNvdXJjZSB0cmVlCkBAIC0xNjQsMzEgKzIwMiwzOSBAQCBj
bGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIDpwYXJhbSBjb250ZW50czogQnl0ZSBh
cnJheSBvZiB0aGUgY29udGVudHMgb2YgdGhlIGZpbGUgb3IgYGBOb25lYGAuCiAgICAgICAgICIi
IgogCi0gICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKyAgICAgICAgYXNzZXJ0
IG5vdCBvcy5wYXRoLmlzYWJzKHJlbF9wYXRoKSwgcmVsX3BhdGgKKwogICAgICAgICBpZiBvcy5u
YW1lID09ICJudCI6CiAgICAgICAgICAgICAjIGRvIHNsYXNoIG5vcm1hbGl6YXRpb24gb24gV2lu
ZG93cwogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyZWxfcGF0aCwgYmluYXJ5X3R5cGUpOgot
ICAgICAgICAgICAgICAgIHNlbGYucmVsX3BhdGggPSByZWxfcGF0aC5yZXBsYWNlKGIiLyIsIGIi
XFwiKQorICAgICAgICAgICAgICAgIHJlbF9wYXRoID0gcmVsX3BhdGgucmVwbGFjZShiIi8iLCBi
IlxcIikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCA9
IHJlbF9wYXRoLnJlcGxhY2UodSIvIiwgdSJcXCIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBzZWxmLnJlbF9wYXRoID0gcmVsX3BhdGgKLSAgICAgICAgc2VsZi51cmxfYmFzZSA9IHVybF9i
YXNlCi0gICAgICAgIHNlbGYuY29udGVudHMgPSBjb250ZW50cworICAgICAgICAgICAgICAgIHJl
bF9wYXRoID0gcmVsX3BhdGgucmVwbGFjZSh1Ii8iLCB1IlxcIikKIAotICAgICAgICBzZWxmLmRp
cl9wYXRoLCBzZWxmLmZpbGVuYW1lID0gb3MucGF0aC5zcGxpdChzZWxmLnJlbF9wYXRoKQotICAg
ICAgICBzZWxmLm5hbWUsIHNlbGYuZXh0ID0gb3MucGF0aC5zcGxpdGV4dChzZWxmLmZpbGVuYW1l
KQorICAgICAgICBkaXJfcGF0aCwgZmlsZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHJlbF9wYXRoKQor
ICAgICAgICBuYW1lLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGZpbGVuYW1lKQogCi0gICAgICAg
IHNlbGYudHlwZV9mbGFnID0gTm9uZQotICAgICAgICBpZiAiLSIgaW4gc2VsZi5uYW1lOgotICAg
ICAgICAgICAgc2VsZi50eXBlX2ZsYWcgPSBzZWxmLm5hbWUucnNwbGl0KCItIiwgMSlbMV0uc3Bs
aXQoIi4iKVswXQorICAgICAgICB0eXBlX2ZsYWcgPSBOb25lCisgICAgICAgIGlmICItIiBpbiBu
YW1lOgorICAgICAgICAgICAgdHlwZV9mbGFnID0gbmFtZS5yc3BsaXQoIi0iLCAxKVsxXS5zcGxp
dCgiLiIpWzBdCiAKLSAgICAgICAgc2VsZi5tZXRhX2ZsYWdzID0gc2VsZi5uYW1lLnNwbGl0KCIu
IilbMTpdCisgICAgICAgIG1ldGFfZmxhZ3MgPSBuYW1lLnNwbGl0KCIuIilbMTpdCiAKLSAgICAg
ICAgc2VsZi5pdGVtc19jYWNoZSA9IE5vbmUKKyAgICAgICAgc2VsZi50ZXN0c19yb290ID0gdGVz
dHNfcm9vdCAgIyB0eXBlOiBVbmlvbltieXRlcywgVGV4dF0KKyAgICAgICAgc2VsZi5yZWxfcGF0
aCA9IHJlbF9wYXRoICAjIHR5cGU6IFVuaW9uW2J5dGVzLCBUZXh0XQorICAgICAgICBzZWxmLmRp
cl9wYXRoID0gZGlyX3BhdGggICMgdHlwZTogVW5pb25bYnl0ZXMsIFRleHRdCisgICAgICAgIHNl
bGYuZmlsZW5hbWUgPSBmaWxlbmFtZSAgIyB0eXBlOiBVbmlvbltieXRlcywgVGV4dF0KKyAgICAg
ICAgc2VsZi5uYW1lID0gbmFtZSAgIyB0eXBlOiBVbmlvbltieXRlcywgVGV4dF0KKyAgICAgICAg
c2VsZi5leHQgPSBleHQgICMgdHlwZTogVW5pb25bYnl0ZXMsIFRleHRdCisgICAgICAgIHNlbGYu
dHlwZV9mbGFnID0gdHlwZV9mbGFnICAjIHR5cGU6IE9wdGlvbmFsW1VuaW9uW2J5dGVzLCBUZXh0
XV0KKyAgICAgICAgc2VsZi5tZXRhX2ZsYWdzID0gbWV0YV9mbGFncyAgIyB0eXBlOiBVbmlvbltM
aXN0W2J5dGVzXSwgTGlzdFtUZXh0XV0KKyAgICAgICAgc2VsZi51cmxfYmFzZSA9IHVybF9iYXNl
CisgICAgICAgIHNlbGYuY29udGVudHMgPSBjb250ZW50cworICAgICAgICBzZWxmLml0ZW1zX2Nh
Y2hlID0gTm9uZSAgIyB0eXBlOiBPcHRpb25hbFtUdXBsZVtUZXh0LCBMaXN0W01hbmlmZXN0SXRl
bV1dXQogICAgICAgICBzZWxmLl9oYXNoID0gaGFzaAogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhz
ZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBEaWN0W3N0ciwgQW55XQogICAgICAgICAjIFJl
bW92ZSBjb21wdXRlZCBwcm9wZXJ0aWVzIGlmIHdlIHBpY2tsZSB0aGlzIGNsYXNzCiAgICAgICAg
IHJ2ID0gc2VsZi5fX2RpY3RfXy5jb3B5KCkKIApAQCAtMjAxLDEyICsyNDcsMTQgQEAgY2xhc3Mg
U291cmNlRmlsZShvYmplY3QpOgogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBuYW1lX3By
ZWZpeChzZWxmLCBwcmVmaXgpOgorICAgICAgICAjIHR5cGU6IChieXRlcykgLT4gYm9vbAogICAg
ICAgICAiIiJDaGVjayBpZiB0aGUgZmlsZW5hbWUgc3RhcnRzIHdpdGggYSBnaXZlbiBwcmVmaXgK
IAogICAgICAgICA6cGFyYW0gcHJlZml4OiBUaGUgcHJlZml4IHRvIGNoZWNrIiIiCiAgICAgICAg
IHJldHVybiBzZWxmLm5hbWUuc3RhcnRzd2l0aChwcmVmaXgpCiAKICAgICBkZWYgaXNfZGlyKHNl
bGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKICAgICAgICAgIiIiUmV0dXJuIHdoZXRo
ZXIgdGhpcyBmaWxlIHJlcHJlc2VudHMgYSBkaXJlY3RvcnkuIiIiCiAgICAgICAgIGlmIHNlbGYu
Y29udGVudHMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTIxNCw2
ICsyNjIsNyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAgICAgICAgIHJldHVybiBvcy5w
YXRoLmlzZGlyKHNlbGYucmVsX3BhdGgpCiAKICAgICBkZWYgb3BlbihzZWxmKToKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBCaW5hcnlJTwogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIGVpdGhl
cgogICAgICAgICAqIHRoZSBjb250ZW50cyBzcGVjaWZpZWQgaW4gdGhlIGNvbnN0cnVjdG9yLCBp
ZiBhbnk7CkBAIC0yMjEsMjkgKzI3MCw0OSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAg
ICAgICAgICIiIgogCiAgICAgICAgIGlmIHNlbGYuY29udGVudHMgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICBmaWxlX29iaiA9IENvbnRleHRNYW5hZ2VyQnl0ZXNJTyhzZWxmLmNvbnRlbnRzKQor
ICAgICAgICAgICAgd3JhcHBlZCA9IENvbnRleHRNYW5hZ2VyQnl0ZXNJTyhzZWxmLmNvbnRlbnRz
KQorICAgICAgICAgICAgaWYgTVlQWToKKyAgICAgICAgICAgICAgICBmaWxlX29iaiA9IGNhc3Qo
QmluYXJ5SU8sIHdyYXBwZWQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZp
bGVfb2JqID0gd3JhcHBlZAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZmlsZV9vYmogPSBv
cGVuKHNlbGYucGF0aCwgJ3JiJykKICAgICAgICAgcmV0dXJuIGZpbGVfb2JqCiAKICAgICBAY2Fj
aGVkX3Byb3BlcnR5CiAgICAgZGVmIHBhdGgoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4g
VW5pb25bYnl0ZXMsIFRleHRdCiAgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0
c19yb290LCBzZWxmLnJlbF9wYXRoKQogCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiBy
ZWxfdXJsKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IFRleHQKKyAgICAgICAgYXNzZXJ0
IG5vdCBvcy5wYXRoLmlzYWJzKHNlbGYucmVsX3BhdGgpLCBzZWxmLnJlbF9wYXRoCisgICAgICAg
IHJldHVybiBzZWxmLnJlbF9wYXRoLnJlcGxhY2Uob3Muc2VwLCAiLyIpCisKICAgICBAY2FjaGVk
X3Byb3BlcnR5CiAgICAgZGVmIHVybChzZWxmKToKLSAgICAgICAgcmV0dXJuIHJlbF9wYXRoX3Rv
X3VybChzZWxmLnJlbF9wYXRoLCBzZWxmLnVybF9iYXNlKQorICAgICAgICAjIHR5cGU6ICgpIC0+
IFRleHQKKyAgICAgICAgcmV0dXJuIHVybGpvaW4oc2VsZi51cmxfYmFzZSwgc2VsZi5yZWxfdXJs
KQogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiBoYXNoKHNlbGYpOgorICAgICAgICAj
IHR5cGU6ICgpIC0+IGJ5dGVzCiAgICAgICAgIGlmIG5vdCBzZWxmLl9oYXNoOgogICAgICAgICAg
ICAgd2l0aCBzZWxmLm9wZW4oKSBhcyBmOgogICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBmLnJl
YWQoKQotICAgICAgICAgICAgZGF0YSA9ICIiLmpvaW4oKCJibG9iICIsIHN0cihsZW4oY29udGVu
dCkpLCAiXDAiLCBjb250ZW50KSkKLSAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNobGliLnNo
YTEoZGF0YSkuaGV4ZGlnZXN0KCkKKworICAgICAgICAgICAgZGF0YSA9IGIiIi5qb2luKChiImJs
b2IgIiwgYiIlZCIgJSBsZW4oY29udGVudCksIGIiXDAiLCBjb250ZW50KSkKKyAgICAgICAgICAg
IGhhc2hfc3RyID0gaGFzaGxpYi5zaGExKGRhdGEpLmhleGRpZ2VzdCgpICAjIHR5cGU6IHN0cgor
ICAgICAgICAgICAgaWYgUFkzOgorICAgICAgICAgICAgICAgIHNlbGYuX2hhc2ggPSBoYXNoX3N0
ci5lbmNvZGUoImFzY2lpIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2Vs
Zi5faGFzaCA9IGhhc2hfc3RyCisKICAgICAgICAgcmV0dXJuIHNlbGYuX2hhc2gKIAogICAgIGRl
ZiBpbl9ub25fdGVzdF9kaXIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAogICAg
ICAgICBpZiBzZWxmLmRpcl9wYXRoID09ICIiOgogICAgICAgICAgICAgcmV0dXJuIFRydWUKIApA
QCAtMjU2LDY3ICszMjUsNzEgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogICAgICAgICBy
ZXR1cm4gRmFsc2UKIAogICAgIGRlZiBpbl9jb25mb3JtYW5jZV9jaGVja2VyX2RpcihzZWxmKToK
KyAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgIHJldHVybiAoc2VsZi5kaXJfcGF0
aCA9PSAiY29uZm9ybWFuY2UtY2hlY2tlcnMiIG9yCiAgICAgICAgICAgICAgICAgc2VsZi5kaXJf
cGF0aC5zdGFydHN3aXRoKCJjb25mb3JtYW5jZS1jaGVja2VycyIgKyBvcy5wYXRoLnNlcCkpCiAK
ICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19ub25fdGVzdChzZWxmKToKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgICIiIkNoZWNrIGlmIHRoZSBmaWxlIG5hbWUgbWF0
Y2hlcyB0aGUgY29uZGl0aW9ucyBmb3IgdGhlIGZpbGUgdG8KICAgICAgICAgYmUgYSBub24tdGVz
dCBmaWxlIiIiCiAgICAgICAgIHJldHVybiAoc2VsZi5pc19kaXIoKSBvcgogICAgICAgICAgICAg
ICAgIHNlbGYubmFtZV9wcmVmaXgoIk1BTklGRVNUIikgb3IKICAgICAgICAgICAgICAgICBzZWxm
LmZpbGVuYW1lID09ICJNRVRBLnltbCIgb3IKICAgICAgICAgICAgICAgICBzZWxmLmZpbGVuYW1l
LnN0YXJ0c3dpdGgoIi4iKSBvcgotICAgICAgICAgICAgICAgIHNlbGYudHlwZV9mbGFnID09ICJz
dXBwb3J0IiBvcgorICAgICAgICAgICAgICAgIHNlbGYuZmlsZW5hbWUuZW5kc3dpdGgoIi5oZWFk
ZXJzIikgb3IKICAgICAgICAgICAgICAgICBzZWxmLmluX25vbl90ZXN0X2RpcigpKQogCiAgICAg
QHByb3BlcnR5CiAgICAgZGVmIG5hbWVfaXNfY29uZm9ybWFuY2Uoc2VsZik6CisgICAgICAgICMg
dHlwZTogKCkgLT4gYm9vbAogICAgICAgICByZXR1cm4gKHNlbGYuaW5fY29uZm9ybWFuY2VfY2hl
Y2tlcl9kaXIoKSBhbmQKICAgICAgICAgICAgICAgICBzZWxmLnR5cGVfZmxhZyBpbiAoImlzLXZh
bGlkIiwgIm5vLXZhbGlkIikpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19jb25m
b3JtYW5jZV9zdXBwb3J0KHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKICAgICAg
ICAgcmV0dXJuIHNlbGYuaW5fY29uZm9ybWFuY2VfY2hlY2tlcl9kaXIoKQogCi0gICAgQHByb3Bl
cnR5Ci0gICAgZGVmIG5hbWVfaXNfc3R1YihzZWxmKToKLSAgICAgICAgIiIiQ2hlY2sgaWYgdGhl
IGZpbGUgbmFtZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0bwotICAgICAg
ICBiZSBhIHN0dWIgZmlsZSIiIgotICAgICAgICByZXR1cm4gc2VsZi5uYW1lX3ByZWZpeCgic3R1
Yi0iKQotCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG5hbWVfaXNfbWFudWFsKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKICAgICAgICAgIiIiQ2hlY2sgaWYgdGhlIGZpbGUgbmFt
ZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0bwogICAgICAgICBiZSBhIG1h
bnVhbCB0ZXN0IGZpbGUiIiIKICAgICAgICAgcmV0dXJuIHNlbGYudHlwZV9mbGFnID09ICJtYW51
YWwiCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc192aXN1YWwoc2VsZik6CisgICAg
ICAgICMgdHlwZTogKCkgLT4gYm9vbAogICAgICAgICAiIiJDaGVjayBpZiB0aGUgZmlsZSBuYW1l
IG1hdGNoZXMgdGhlIGNvbmRpdGlvbnMgZm9yIHRoZSBmaWxlIHRvCiAgICAgICAgIGJlIGEgdmlz
dWFsIHRlc3QgZmlsZSIiIgogICAgICAgICByZXR1cm4gc2VsZi50eXBlX2ZsYWcgPT0gInZpc3Vh
bCIKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBuYW1lX2lzX211bHRpX2dsb2JhbChzZWxmKToK
KyAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAgICAgICIiIkNoZWNrIGlmIHRoZSBmaWxl
IG5hbWUgbWF0Y2hlcyB0aGUgY29uZGl0aW9ucyBmb3IgdGhlIGZpbGUgdG8KICAgICAgICAgYmUg
YSBtdWx0aS1nbG9iYWwganMgdGVzdCBmaWxlIiIiCiAgICAgICAgIHJldHVybiAiYW55IiBpbiBz
ZWxmLm1ldGFfZmxhZ3MgYW5kIHNlbGYuZXh0ID09ICIuanMiCiAKICAgICBAcHJvcGVydHkKICAg
ICBkZWYgbmFtZV9pc193b3JrZXIoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAog
ICAgICAgICAiIiJDaGVjayBpZiB0aGUgZmlsZSBuYW1lIG1hdGNoZXMgdGhlIGNvbmRpdGlvbnMg
Zm9yIHRoZSBmaWxlIHRvCiAgICAgICAgIGJlIGEgd29ya2VyIGpzIHRlc3QgZmlsZSIiIgogICAg
ICAgICByZXR1cm4gIndvcmtlciIgaW4gc2VsZi5tZXRhX2ZsYWdzIGFuZCBzZWxmLmV4dCA9PSAi
LmpzIgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIG5hbWVfaXNfd2luZG93KHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IGJvb2wKICAgICAgICAgIiIiQ2hlY2sgaWYgdGhlIGZpbGUgbmFt
ZSBtYXRjaGVzIHRoZSBjb25kaXRpb25zIGZvciB0aGUgZmlsZSB0bwogICAgICAgICBiZSBhIHdp
bmRvdyBqcyB0ZXN0IGZpbGUiIiIKICAgICAgICAgcmV0dXJuICJ3aW5kb3ciIGluIHNlbGYubWV0
YV9mbGFncyBhbmQgc2VsZi5leHQgPT0gIi5qcyIKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBu
YW1lX2lzX3dlYmRyaXZlcihzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBib29sCiAgICAg
ICAgICIiIkNoZWNrIGlmIHRoZSBmaWxlIG5hbWUgbWF0Y2hlcyB0aGUgY29uZGl0aW9ucyBmb3Ig
dGhlIGZpbGUgdG8KICAgICAgICAgYmUgYSB3ZWJkcml2ZXIgc3BlYyB0ZXN0IGZpbGUiIiIKICAg
ICAgICAgIyB3ZHNwZWMgdGVzdHMgYXJlIGluIHN1YmRpcmVjdG9yaWVzIG9mIC93ZWJkcml2ZXIg
ZXhjbHVkaW5nIF9faW5pdF9fLnB5CkBAIC0zMzAsMTIgKzQwMywxNCBAQCBjbGFzcyBTb3VyY2VG
aWxlKG9iamVjdCk6CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbmFtZV9pc19yZWZlcmVuY2Uo
c2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gYm9vbAogICAgICAgICAiIiJDaGVjayBpZiB0
aGUgZmlsZSBuYW1lIG1hdGNoZXMgdGhlIGNvbmRpdGlvbnMgZm9yIHRoZSBmaWxlIHRvCiAgICAg
ICAgIGJlIGEgcmVmZXJlbmNlIGZpbGUgKG5vdCBhIHJlZnRlc3QpIiIiCi0gICAgICAgIHJldHVy
biAiL3JlZmVyZW5jZS8iIGluIHNlbGYudXJsIG9yICIvcmVmdGVzdC8iIGluIHNlbGYudXJsIG9y
IGJvb2wocmVmZXJlbmNlX2ZpbGVfcmUuc2VhcmNoKHNlbGYubmFtZSkpCisgICAgICAgIHJldHVy
biAiL3JlZmVyZW5jZS8iIGluIHNlbGYudXJsIG9yIGJvb2wocmVmZXJlbmNlX2ZpbGVfcmUuc2Vh
cmNoKHNlbGYubmFtZSkpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgbWFya3VwX3R5cGUoc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVGV4dF0KICAgICAgICAgIiIiUmV0
dXJuIHRoZSB0eXBlIG9mIG1hcmt1cCBjb250YWluZWQgaW4gYSBmaWxlLCBiYXNlZCBvbiBpdHMg
ZXh0ZW5zaW9uLAogICAgICAgICBvciBOb25lIGlmIGl0IGRvZXNuJ3QgY29udGFpbiBtYXJrdXAi
IiIKICAgICAgICAgZXh0ID0gc2VsZi5leHQKQEAgLTM1NCw2ICs0MjksNyBAQCBjbGFzcyBTb3Vy
Y2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHJvb3Qoc2Vs
Zik6CisgICAgICAgICMgdHlwZTogKCkgLT4gT3B0aW9uYWxbVW5pb25bRWxlbWVudFRyZWUuRWxl
bWVudCwgRWxlbWVudFRyZWUuRWxlbWVudFRyZWVdXQogICAgICAgICAiIiJSZXR1cm4gYW4gRWxl
bWVudFRyZWUgRWxlbWVudCBmb3IgdGhlIHJvb3Qgbm9kZSBvZiB0aGUgZmlsZSBpZiBpdCBjb250
YWlucwogICAgICAgICBtYXJrdXAsIG9yIE5vbmUgaWYgaXQgZG9lcyBub3QiIiIKICAgICAgICAg
aWYgbm90IHNlbGYubWFya3VwX3R5cGU6CkBAIC0zNjgsNyArNDQ0LDcgQEAgY2xhc3MgU291cmNl
RmlsZShvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgaWYg
aGFzYXR0cih0cmVlLCAiZ2V0cm9vdCIpOgotICAgICAgICAgICAgcm9vdCA9IHRyZWUuZ2V0cm9v
dCgpCisgICAgICAgICAgICByb290ID0gdHJlZS5nZXRyb290KCkgICMgdHlwZTogVW5pb25bRWxl
bWVudFRyZWUuRWxlbWVudCwgRWxlbWVudFRyZWUuRWxlbWVudFRyZWVdCiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICByb290ID0gdHJlZQogCkBAIC0zNzYsMTIgKzQ1MiwxNSBAQCBjbGFzcyBT
b3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHRpbWVv
dXRfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTGlzdFtFbGVtZW50VHJlZS5F
bGVtZW50XQogICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1lbnRzIGNvcnJlc3Bv
bmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKICAgICAgICAgc3BlY2lmeSB0aW1lb3V0cyIi
IgorICAgICAgICBhc3NlcnQgc2VsZi5yb290IGlzIG5vdCBOb25lCiAgICAgICAgIHJldHVybiBz
ZWxmLnJvb3QuZmluZGFsbCgiLi8ve2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtA
bmFtZT0ndGltZW91dCddIikKIAogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYgc2NyaXB0
X21ldGFkYXRhKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW0xpc3RbVHVw
bGVbYnl0ZXMsIGJ5dGVzXV1dCiAgICAgICAgIGlmIHNlbGYubmFtZV9pc193b3JrZXIgb3Igc2Vs
Zi5uYW1lX2lzX211bHRpX2dsb2JhbCBvciBzZWxmLm5hbWVfaXNfd2luZG93OgogICAgICAgICAg
ICAgcmVnZXhwID0ganNfbWV0YV9yZQogICAgICAgICBlbGlmIHNlbGYubmFtZV9pc193ZWJkcml2
ZXI6CkBAIC0zOTQsNiArNDczLDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAg
QGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiB0aW1lb3V0KHNlbGYpOgorICAgICAgICAjIHR5cGU6
ICgpIC0+IE9wdGlvbmFsW1RleHRdCiAgICAgICAgICIiIlRoZSB0aW1lb3V0IG9mIGEgdGVzdCBv
ciByZWZlcmVuY2UgZmlsZS4gImxvbmciIGlmIHRoZSBmaWxlIGhhcyBhbiBleHRlbmRlZCB0aW1l
b3V0CiAgICAgICAgIG9yIE5vbmUgb3RoZXJ3aXNlIiIiCiAgICAgICAgIGlmIHNlbGYuc2NyaXB0
X21ldGFkYXRhOgpAQCAtNDA0LDcgKzQ4NCw3IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToK
ICAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgaWYgc2VsZi50aW1lb3V0X25vZGVz
OgotICAgICAgICAgICAgdGltZW91dF9zdHIgPSBzZWxmLnRpbWVvdXRfbm9kZXNbMF0uYXR0cmli
LmdldCgiY29udGVudCIsIE5vbmUpCisgICAgICAgICAgICB0aW1lb3V0X3N0ciA9IHNlbGYudGlt
ZW91dF9ub2Rlc1swXS5hdHRyaWIuZ2V0KCJjb250ZW50IiwgTm9uZSkgICMgdHlwZTogT3B0aW9u
YWxbVGV4dF0KICAgICAgICAgICAgIGlmIHRpbWVvdXRfc3RyIGFuZCB0aW1lb3V0X3N0ci5sb3dl
cigpID09ICJsb25nIjoKICAgICAgICAgICAgICAgICByZXR1cm4gImxvbmciCiAKQEAgLTQxMiwx
MiArNDkyLDE1IEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgIEBjYWNoZWRfcHJv
cGVydHkKICAgICBkZWYgdmlld3BvcnRfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkg
LT4gTGlzdFtFbGVtZW50VHJlZS5FbGVtZW50XQogICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRU
cmVlIEVsZW1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKICAgICAg
ICAgc3BlY2lmeSB2aWV3cG9ydCBzaXplcyIiIgorICAgICAgICBhc3NlcnQgc2VsZi5yb290IGlz
IG5vdCBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmluZGFsbCgiLi8ve2h0dHA6Ly93
d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtAbmFtZT0ndmlld3BvcnQtc2l6ZSddIikKIAogICAg
IEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYgdmlld3BvcnRfc2l6ZShzZWxmKToKKyAgICAgICAg
IyB0eXBlOiAoKSAtPiBPcHRpb25hbFtUZXh0XQogICAgICAgICAiIiJUaGUgdmlld3BvcnQgc2l6
ZSBvZiBhIHRlc3Qgb3IgcmVmZXJlbmNlIGZpbGUiIiIKICAgICAgICAgaWYgc2VsZi5yb290IGlz
IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpAQCAtNDI5LDEyICs1MTIsMTUgQEAgY2xh
c3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiBk
cGlfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTGlzdFtFbGVtZW50VHJlZS5F
bGVtZW50XQogICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVsZW1lbnRzIGNvcnJlc3Bv
bmRpbmcgdG8gbm9kZXMgaW4gYSB0ZXN0IHRoYXQKICAgICAgICAgc3BlY2lmeSBkZXZpY2UgcGl4
ZWwgcmF0aW9zIiIiCisgICAgICAgIGFzc2VydCBzZWxmLnJvb3QgaXMgbm90IE5vbmUKICAgICAg
ICAgcmV0dXJuIHNlbGYucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5OS94
aHRtbH1tZXRhW0BuYW1lPSdkZXZpY2UtcGl4ZWwtcmF0aW8nXSIpCiAKICAgICBAY2FjaGVkX3By
b3BlcnR5CiAgICAgZGVmIGRwaShzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25h
bFtUZXh0XQogICAgICAgICAiIiJUaGUgZGV2aWNlIHBpeGVsIHJhdGlvIG9mIGEgdGVzdCBvciBy
ZWZlcmVuY2UgZmlsZSIiIgogICAgICAgICBpZiBzZWxmLnJvb3QgaXMgTm9uZToKICAgICAgICAg
ICAgIHJldHVybiBOb25lCkBAIC00NDQsMTQgKzUzMCw5MyBAQCBjbGFzcyBTb3VyY2VGaWxlKG9i
amVjdCk6CiAKICAgICAgICAgcmV0dXJuIHNlbGYuZHBpX25vZGVzWzBdLmF0dHJpYi5nZXQoImNv
bnRlbnQiLCBOb25lKQogCisgICAgQGNhY2hlZF9wcm9wZXJ0eQorICAgIGRlZiBmdXp6eV9ub2Rl
cyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBMaXN0W0VsZW1lbnRUcmVlLkVsZW1lbnRd
CisgICAgICAgICIiIkxpc3Qgb2YgRWxlbWVudFRyZWUgRWxlbWVudHMgY29ycmVzcG9uZGluZyB0
byBub2RlcyBpbiBhIHRlc3QgdGhhdAorICAgICAgICBzcGVjaWZ5IHJlZnRlc3QgZnV6emluZXNz
IiIiCisgICAgICAgIGFzc2VydCBzZWxmLnJvb3QgaXMgbm90IE5vbmUKKyAgICAgICAgcmV0dXJu
IHNlbGYucm9vdC5maW5kYWxsKCIuLy97aHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbH1tZXRh
W0BuYW1lPSdmdXp6eSddIikKKworICAgIEBjYWNoZWRfcHJvcGVydHkKKyAgICBkZWYgZnV6enko
c2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gRGljdFtPcHRpb25hbFtUdXBsZVtUZXh0LCBU
ZXh0LCBUZXh0XV0sIExpc3RbTGlzdFtpbnRdXV0KKyAgICAgICAgcnYgPSB7fSAgIyB0eXBlOiBE
aWN0W09wdGlvbmFsW1R1cGxlW1RleHQsIFRleHQsIFRleHRdXSwgTGlzdFtMaXN0W2ludF1dXQor
ICAgICAgICBpZiBzZWxmLnJvb3QgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiBydgorCisg
ICAgICAgIGlmIG5vdCBzZWxmLmZ1enp5X25vZGVzOgorICAgICAgICAgICAgcmV0dXJuIHJ2CisK
KyAgICAgICAgYXJncyA9IFt1Im1heERpZmZlcmVuY2UiLCB1InRvdGFsUGl4ZWxzIl0KKworICAg
ICAgICBmb3Igbm9kZSBpbiBzZWxmLmZ1enp5X25vZGVzOgorICAgICAgICAgICAgaXRlbSA9IG5v
ZGUuYXR0cmliLmdldCh1ImNvbnRlbnQiLCB1IiIpICAjIHR5cGU6IFRleHQKKworICAgICAgICAg
ICAgcGFydHMgPSBpdGVtLnJzcGxpdCh1IjoiLCAxKQorICAgICAgICAgICAgaWYgbGVuKHBhcnRz
KSA9PSAxOgorICAgICAgICAgICAgICAgIGtleSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbVHVw
bGVbVGV4dCwgVGV4dCwgVGV4dF1dCisgICAgICAgICAgICAgICAgdmFsdWUgPSBwYXJ0c1swXQor
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBrZXlfcGFydCA9IHVybGpvaW4oc2Vs
Zi51cmwsIHBhcnRzWzBdKQorICAgICAgICAgICAgICAgIHJlZnR5cGUgPSBOb25lCisgICAgICAg
ICAgICAgICAgZm9yIHJlZiBpbiBzZWxmLnJlZmVyZW5jZXM6ICAjIHR5cGU6IFR1cGxlW1RleHQs
IFRleHRdCisgICAgICAgICAgICAgICAgICAgIGlmIHJlZlswXSA9PSBrZXlfcGFydDoKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJlZnR5cGUgPSByZWZbMV0KKyAgICAgICAgICAgICAgICAgICAg
ICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgcmVmdHlwZSBub3QgaW4gKHUiPT0iLCB1IiE9
Iik6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkZ1enp5IGtleSAlcyBk
b2Vzbid0IGNvcnJlc3BvbmQgdG8gYSByZWZlcmVuY2VzIiAlIGtleV9wYXJ0KQorICAgICAgICAg
ICAgICAgIGtleSA9IChzZWxmLnVybCwga2V5X3BhcnQsIHJlZnR5cGUpCisgICAgICAgICAgICAg
ICAgdmFsdWUgPSBwYXJ0c1sxXQorICAgICAgICAgICAgcmFuZ2VzID0gdmFsdWUuc3BsaXQodSI7
IikKKyAgICAgICAgICAgIGlmIGxlbihyYW5nZXMpICE9IDI6CisgICAgICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiTWFsZm9ybWVkIGZ1enp5IHZhbHVlICVzIiAlIGl0ZW0pCisgICAgICAg
ICAgICBhcmdfdmFsdWVzID0ge30gICMgdHlwZTogRGljdFtUZXh0LCBMaXN0W2ludF1dCisgICAg
ICAgICAgICBwb3NpdGlvbmFsX2FyZ3MgPSBkZXF1ZSgpICAjIHR5cGU6IERlcXVlW0xpc3RbaW50
XV0KKyAgICAgICAgICAgIGZvciByYW5nZV9zdHJfdmFsdWUgaW4gcmFuZ2VzOiAgIyB0eXBlOiBU
ZXh0CisgICAgICAgICAgICAgICAgbmFtZSA9IE5vbmUgICMgdHlwZTogT3B0aW9uYWxbVGV4dF0K
KyAgICAgICAgICAgICAgICBpZiB1Ij0iIGluIHJhbmdlX3N0cl92YWx1ZToKKyAgICAgICAgICAg
ICAgICAgICAgbmFtZSwgcmFuZ2Vfc3RyX3ZhbHVlID0gW3BhcnQuc3RyaXAoKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcmFuZ2Vfc3Ry
X3ZhbHVlLnNwbGl0KHUiPSIsIDEpXQorICAgICAgICAgICAgICAgICAgICBpZiBuYW1lIG5vdCBp
biBhcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgaXMg
bm90IGEgdmFsaWQgZnV6enkgcHJvcGVydHkiICUgbmFtZSkKKyAgICAgICAgICAgICAgICAgICAg
aWYgYXJnX3ZhbHVlcy5nZXQobmFtZSk6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCJHb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBhcmd1bWVudCAlcyIgJSBuYW1lKQor
ICAgICAgICAgICAgICAgIGlmIHUiLSIgaW4gcmFuZ2Vfc3RyX3ZhbHVlOgorICAgICAgICAgICAg
ICAgICAgICByYW5nZV9taW4sIHJhbmdlX21heCA9IHJhbmdlX3N0cl92YWx1ZS5zcGxpdCh1Ii0i
KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhbmdlX21pbiA9
IHJhbmdlX3N0cl92YWx1ZQorICAgICAgICAgICAgICAgICAgICByYW5nZV9tYXggPSByYW5nZV9z
dHJfdmFsdWUKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJhbmdl
X3ZhbHVlID0gW2ludCh4LnN0cmlwKCkpIGZvciB4IGluIChyYW5nZV9taW4sIHJhbmdlX21heCld
CisgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIkZ1enp5IHZhbHVlICVzIG11c3QgYmUgYSByYW5nZSBvZiBpbnRl
Z2VycyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlX3N0cl92
YWx1ZSkKKyAgICAgICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgICAg
ICAgIHBvc2l0aW9uYWxfYXJncy5hcHBlbmQocmFuZ2VfdmFsdWUpCisgICAgICAgICAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXJnX3ZhbHVlc1tuYW1lXSA9IHJhbmdlX3ZhbHVl
CisgICAgICAgICAgICBydltrZXldID0gW10KKyAgICAgICAgICAgIGZvciBhcmdfbmFtZSBpbiBh
cmdzOgorICAgICAgICAgICAgICAgIGlmIGFyZ192YWx1ZXMuZ2V0KGFyZ19uYW1lKToKKyAgICAg
ICAgICAgICAgICAgICAgYXJnX3ZhbHVlID0gYXJnX3ZhbHVlcy5wb3AoYXJnX25hbWUpCisgICAg
ICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYXJnX3ZhbHVlID0gcG9zaXRp
b25hbF9hcmdzLnBvcGxlZnQoKQorICAgICAgICAgICAgICAgIHJ2W2tleV0uYXBwZW5kKGFyZ192
YWx1ZSkKKyAgICAgICAgICAgIGFzc2VydCBsZW4oYXJnX3ZhbHVlcykgPT0gMCBhbmQgbGVuKHBv
c2l0aW9uYWxfYXJncykgPT0gMAorICAgICAgICByZXR1cm4gcnYKKwogICAgIEBjYWNoZWRfcHJv
cGVydHkKICAgICBkZWYgdGVzdGhhcm5lc3Nfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gTGlzdFtFbGVtZW50VHJlZS5FbGVtZW50XQogICAgICAgICAiIiJMaXN0IG9mIEVsZW1l
bnRUcmVlIEVsZW1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgcmVwcmVzZW50aW5nIGEKICAg
ICAgICAgdGVzdGhhcm5lc3MuanMgc2NyaXB0IiIiCisgICAgICAgIGFzc2VydCBzZWxmLnJvb3Qg
aXMgbm90IE5vbmUKICAgICAgICAgcmV0dXJuIHNlbGYucm9vdC5maW5kYWxsKCIuLy97aHR0cDov
L3d3dy53My5vcmcvMTk5OS94aHRtbH1zY3JpcHRbQHNyYz0nL3Jlc291cmNlcy90ZXN0aGFybmVz
cy5qcyddIikKIAogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYgY29udGVudF9pc190ZXN0
aGFybmVzcyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtib29sXQogICAg
ICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgZmlsZSBjb250ZW50IHJlcHJl
c2VudHMgYQogICAgICAgICB0ZXN0aGFybmVzcy5qcyB0ZXN0IiIiCiAgICAgICAgIGlmIHNlbGYu
cm9vdCBpcyBOb25lOgpAQCAtNDYwLDIxICs2MjUsMjYgQEAgY2xhc3MgU291cmNlRmlsZShvYmpl
Y3QpOgogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQogICAgIGRlZiB2YXJpYW50X25vZGVzKHNlbGYp
OgorICAgICAgICAjIHR5cGU6ICgpIC0+IExpc3RbRWxlbWVudFRyZWUuRWxlbWVudF0KICAgICAg
ICAgIiIiTGlzdCBvZiBFbGVtZW50VHJlZSBFbGVtZW50cyBjb3JyZXNwb25kaW5nIHRvIG5vZGVz
IHJlcHJlc2VudGluZyBhCiAgICAgICAgIHRlc3QgdmFyaWFudCIiIgorICAgICAgICBhc3NlcnQg
c2VsZi5yb290IGlzIG5vdCBOb25lCiAgICAgICAgIHJldHVybiBzZWxmLnJvb3QuZmluZGFsbCgi
Li8ve2h0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWx9bWV0YVtAbmFtZT0ndmFyaWFudCddIikK
IAogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYgdGVzdF92YXJpYW50cyhzZWxmKToKLSAg
ICAgICAgcnYgPSBbXQorICAgICAgICAjIHR5cGU6ICgpIC0+IExpc3RbVGV4dF0KKyAgICAgICAg
cnYgPSBbXSAgIyB0eXBlOiBMaXN0W1RleHRdCiAgICAgICAgIGlmIHNlbGYuZXh0ID09ICIuanMi
OgotICAgICAgICAgICAgZm9yIChrZXksIHZhbHVlKSBpbiBzZWxmLnNjcmlwdF9tZXRhZGF0YToK
KyAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IHNlbGYuc2NyaXB0X21ldGFkYXRhCisgICAg
ICAgICAgICBhc3NlcnQgc2NyaXB0X21ldGFkYXRhIGlzIG5vdCBOb25lCisgICAgICAgICAgICBm
b3IgKGtleSwgdmFsdWUpIGluIHNjcmlwdF9tZXRhZGF0YToKICAgICAgICAgICAgICAgICBpZiBr
ZXkgPT0gYiJ2YXJpYW50IjoKICAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKHZhbHVlLmRl
Y29kZSgidXRmLTgiKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGZvciBlbGVtZW50IGlu
IHNlbGYudmFyaWFudF9ub2RlczoKICAgICAgICAgICAgICAgICBpZiAiY29udGVudCIgaW4gZWxl
bWVudC5hdHRyaWI6Ci0gICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBlbGVtZW50LmF0dHJp
YlsiY29udGVudCJdCisgICAgICAgICAgICAgICAgICAgIHZhcmlhbnQgPSBlbGVtZW50LmF0dHJp
YlsiY29udGVudCJdICAjIHR5cGU6IFRleHQKICAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5k
KHZhcmlhbnQpCiAKICAgICAgICAgZm9yIHZhcmlhbnQgaW4gcnY6CkBAIC00ODcsMTIgKzY1Nywx
NSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAg
ICAgZGVmIHRlc3Rkcml2ZXJfbm9kZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTGlz
dFtFbGVtZW50VHJlZS5FbGVtZW50XQogICAgICAgICAiIiJMaXN0IG9mIEVsZW1lbnRUcmVlIEVs
ZW1lbnRzIGNvcnJlc3BvbmRpbmcgdG8gbm9kZXMgcmVwcmVzZW50aW5nIGEKICAgICAgICAgdGVz
dGRyaXZlci5qcyBzY3JpcHQiIiIKKyAgICAgICAgYXNzZXJ0IHNlbGYucm9vdCBpcyBub3QgTm9u
ZQogICAgICAgICByZXR1cm4gc2VsZi5yb290LmZpbmRhbGwoIi4vL3todHRwOi8vd3d3LnczLm9y
Zy8xOTk5L3hodG1sfXNjcmlwdFtAc3JjPScvcmVzb3VyY2VzL3Rlc3Rkcml2ZXIuanMnXSIpCiAK
ICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIGhhc190ZXN0ZHJpdmVyKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW2Jvb2xdCiAgICAgICAgICIiIkJvb2xlYW4gaW5k
aWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNvbnRlbnQgcmVwcmVzZW50cyBhCiAgICAgICAgIHRl
c3RoYXJuZXNzLmpzIHRlc3QiIiIKICAgICAgICAgaWYgc2VsZi5yb290IGlzIE5vbmU6CkBAIC01
MDEsNiArNjc0LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hlZF9w
cm9wZXJ0eQogICAgIGRlZiByZWZ0ZXN0X25vZGVzKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgp
IC0+IExpc3RbRWxlbWVudFRyZWUuRWxlbWVudF0KICAgICAgICAgIiIiTGlzdCBvZiBFbGVtZW50
VHJlZSBFbGVtZW50cyBjb3JyZXNwb25kaW5nIHRvIG5vZGVzIHJlcHJlc2VudGluZyBhCiAgICAg
ICAgIHRvIGEgcmVmdGVzdCA8bGluaz4iIiIKICAgICAgICAgaWYgc2VsZi5yb290IGlzIE5vbmU6
CkBAIC01MTIsOSArNjg2LDEwIEBAIGNsYXNzIFNvdXJjZUZpbGUob2JqZWN0KToKIAogICAgIEBj
YWNoZWRfcHJvcGVydHkKICAgICBkZWYgcmVmZXJlbmNlcyhzZWxmKToKKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBMaXN0W1R1cGxlW1RleHQsIFRleHRdXQogICAgICAgICAiIiJMaXN0IG9mIChyZWZf
dXJsLCByZWxhdGlvbikgdHVwbGVzIGZvciBhbnkgcmVmdGVzdCByZWZlcmVuY2VzIHNwZWNpZmll
ZCBpbgogICAgICAgICB0aGUgZmlsZSIiIgotICAgICAgICBydiA9IFtdCisgICAgICAgIHJ2ID0g
W10gICMgdHlwZTogTGlzdFtUdXBsZVtUZXh0LCBUZXh0XV0KICAgICAgICAgcmVsX21hcCA9IHsi
bWF0Y2giOiAiPT0iLCAibWlzbWF0Y2giOiAiIT0ifQogICAgICAgICBmb3IgaXRlbSBpbiBzZWxm
LnJlZnRlc3Rfbm9kZXM6CiAgICAgICAgICAgICBpZiAiaHJlZiIgaW4gaXRlbS5hdHRyaWI6CkBA
IC01MjUsMTIgKzcwMCwxNCBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2Fj
aGVkX3Byb3BlcnR5CiAgICAgZGVmIGNvbnRlbnRfaXNfcmVmX25vZGUoc2VsZik6CisgICAgICAg
ICMgdHlwZTogKCkgLT4gYm9vbAogICAgICAgICAiIiJCb29sZWFuIGluZGljYXRpbmcgd2hldGhl
ciB0aGUgZmlsZSBpcyBhIG5vbi1sZWFmIG5vZGUgaW4gYSByZWZ0ZXN0CiAgICAgICAgIGdyYXBo
IChpLmUuIGlmIGl0IGNvbnRhaW5zIGFueSA8bGluayByZWw9W21pc11tYXRjaD4iIiIKICAgICAg
ICAgcmV0dXJuIGJvb2woc2VsZi5yZWZlcmVuY2VzKQogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQog
ICAgIGRlZiBjc3NfZmxhZ19ub2RlcyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBMaXN0
W0VsZW1lbnRUcmVlLkVsZW1lbnRdCiAgICAgICAgICIiIkxpc3Qgb2YgRWxlbWVudFRyZWUgRWxl
bWVudHMgY29ycmVzcG9uZGluZyB0byBub2RlcyByZXByZXNlbnRpbmcgYQogICAgICAgICBmbGFn
IDxtZXRhPiIiIgogICAgICAgICBpZiBzZWxmLnJvb3QgaXMgTm9uZToKQEAgLTUzOSw4ICs3MTYs
OSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAg
ICAgZGVmIGNzc19mbGFncyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbVGV4dF0K
ICAgICAgICAgIiIiU2V0IG9mIGZsYWdzIHNwZWNpZmllZCBpbiB0aGUgZmlsZSIiIgotICAgICAg
ICBydiA9IHNldCgpCisgICAgICAgIHJ2ID0gc2V0KCkgICMgdHlwZTogU2V0W1RleHRdCiAgICAg
ICAgIGZvciBpdGVtIGluIHNlbGYuY3NzX2ZsYWdfbm9kZXM6CiAgICAgICAgICAgICBpZiAiY29u
dGVudCIgaW4gaXRlbS5hdHRyaWI6CiAgICAgICAgICAgICAgICAgZm9yIGZsYWcgaW4gaXRlbS5h
dHRyaWJbImNvbnRlbnQiXS5zcGxpdCgpOgpAQCAtNTQ5LDYgKzcyNyw3IEBAIGNsYXNzIFNvdXJj
ZUZpbGUob2JqZWN0KToKIAogICAgIEBjYWNoZWRfcHJvcGVydHkKICAgICBkZWYgY29udGVudF9p
c19jc3NfbWFudWFsKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE9wdGlvbmFsW2Jvb2xd
CiAgICAgICAgICIiIkJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBmaWxlIGNvbnRlbnQg
cmVwcmVzZW50cyBhCiAgICAgICAgIENTUyBXRy1zdHlsZSBtYW51YWwgdGVzdCIiIgogICAgICAg
ICBpZiBzZWxmLnJvb3QgaXMgTm9uZToKQEAgLTU1OCw2ICs3MzcsNyBAQCBjbGFzcyBTb3VyY2VG
aWxlKG9iamVjdCk6CiAKICAgICBAY2FjaGVkX3Byb3BlcnR5CiAgICAgZGVmIHNwZWNfbGlua19u
b2RlcyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBMaXN0W0VsZW1lbnRUcmVlLkVsZW1l
bnRdCiAgICAgICAgICIiIkxpc3Qgb2YgRWxlbWVudFRyZWUgRWxlbWVudHMgY29ycmVzcG9uZGlu
ZyB0byBub2RlcyByZXByZXNlbnRpbmcgYQogICAgICAgICA8bGluayByZWw9aGVscD4sIHVzZWQg
dG8gcG9pbnQgdG8gc3BlY3MiIiIKICAgICAgICAgaWYgc2VsZi5yb290IGlzIE5vbmU6CkBAIC01
NjYsOCArNzQ2LDkgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hlZF9w
cm9wZXJ0eQogICAgIGRlZiBzcGVjX2xpbmtzKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+
IFNldFtUZXh0XQogICAgICAgICAiIiJTZXQgb2Ygc3BlYyBsaW5rcyBzcGVjaWZpZWQgaW4gdGhl
IGZpbGUiIiIKLSAgICAgICAgcnYgPSBzZXQoKQorICAgICAgICBydiA9IHNldCgpICAjIHR5cGU6
IFNldFtUZXh0XQogICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLnNwZWNfbGlua19ub2RlczoKICAg
ICAgICAgICAgIGlmICJocmVmIiBpbiBpdGVtLmF0dHJpYjoKICAgICAgICAgICAgICAgICBydi5h
ZGQoaXRlbS5hdHRyaWJbImhyZWYiXS5zdHJpcChzcGFjZV9jaGFycykpCkBAIC01NzUsNiArNzU2
LDcgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQGNhY2hlZF9wcm9wZXJ0eQog
ICAgIGRlZiBjb250ZW50X2lzX2Nzc192aXN1YWwoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkg
LT4gT3B0aW9uYWxbYm9vbF0KICAgICAgICAgIiIiQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIg
dGhlIGZpbGUgY29udGVudCByZXByZXNlbnRzIGEKICAgICAgICAgQ1NTIFdHLXN0eWxlIHZpc3Vh
bCB0ZXN0IiIiCiAgICAgICAgIGlmIHNlbGYucm9vdCBpcyBOb25lOgpAQCAtNTg0LDEwICs3NjYs
MTIgQEAgY2xhc3MgU291cmNlRmlsZShvYmplY3QpOgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVm
IHR5cGUoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gVGV4dAogICAgICAgICBydiwgXyA9
IHNlbGYubWFuaWZlc3RfaXRlbXMoKQogICAgICAgICByZXR1cm4gcnYKIAogICAgIGRlZiBtYW5p
ZmVzdF9pdGVtcyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAtPiBUdXBsZVtUZXh0LCBMaXN0
W01hbmlmZXN0SXRlbV1dCiAgICAgICAgICIiIkxpc3Qgb2YgbWFuaWZlc3QgaXRlbXMgY29ycmVz
cG9uZGluZyB0byB0aGUgZmlsZS4gVGhlcmUgaXMgdHlwaWNhbGx5IG9uZQogICAgICAgICBwZXIg
dGVzdCwgYnV0IGluIHRoZSBjYXNlIG9mIHJlZnRlc3RzIGEgbm9kZSBtYXkgaGF2ZSBjb3JyZXNw
b25kaW5nIG1hbmlmZXN0CiAgICAgICAgIGl0ZW1zIHdpdGhvdXQgYmVpbmcgYSB0ZXN0IGl0c2Vs
Zi4iIiIKQEAgLTU5Niw3OCArNzgwLDE2NSBAQCBjbGFzcyBTb3VyY2VGaWxlKG9iamVjdCk6CiAg
ICAgICAgICAgICByZXR1cm4gc2VsZi5pdGVtc19jYWNoZQogCiAgICAgICAgIGlmIHNlbGYubmFt
ZV9pc19ub25fdGVzdDoKLSAgICAgICAgICAgIHJ2ID0gInN1cHBvcnQiLCBbU3VwcG9ydEZpbGUo
c2VsZildCi0KLSAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNfc3R1YjoKLSAgICAgICAgICAgIHJ2
ID0gU3R1Yi5pdGVtX3R5cGUsIFtTdHViKHNlbGYsIHNlbGYudXJsKV0KKyAgICAgICAgICAgIHJ2
ID0gInN1cHBvcnQiLCBbCisgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUoCisgICAgICAgICAg
ICAgICAgICAgIHNlbGYudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxf
cGF0aAorICAgICAgICAgICAgICAgICldICAjIHR5cGU6IFR1cGxlW1RleHQsIExpc3RbTWFuaWZl
c3RJdGVtXV0KIAogICAgICAgICBlbGlmIHNlbGYubmFtZV9pc19tYW51YWw6Ci0gICAgICAgICAg
ICBydiA9IE1hbnVhbFRlc3QuaXRlbV90eXBlLCBbTWFudWFsVGVzdChzZWxmLCBzZWxmLnVybCld
CisgICAgICAgICAgICBydiA9IE1hbnVhbFRlc3QuaXRlbV90eXBlLCBbCisgICAgICAgICAgICAg
ICAgTWFudWFsVGVzdCgKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0c19yb290LAorICAg
ICAgICAgICAgICAgICAgICBzZWxmLnJlbF9wYXRoLAorICAgICAgICAgICAgICAgICAgICBzZWxm
LnVybF9iYXNlLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnJlbF91cmwKKyAgICAgICAgICAg
ICAgICApXQogCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lX2lzX2NvbmZvcm1hbmNlOgotICAgICAg
ICAgICAgcnYgPSBDb25mb3JtYW5jZUNoZWNrZXJUZXN0Lml0ZW1fdHlwZSwgW0NvbmZvcm1hbmNl
Q2hlY2tlclRlc3Qoc2VsZiwgc2VsZi51cmwpXQorICAgICAgICAgICAgcnYgPSBDb25mb3JtYW5j
ZUNoZWNrZXJUZXN0Lml0ZW1fdHlwZSwgWworICAgICAgICAgICAgICAgIENvbmZvcm1hbmNlQ2hl
Y2tlclRlc3QoCisgICAgICAgICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9vdCwKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi51cmxf
YmFzZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfdXJsCisgICAgICAgICAgICAgICAg
KV0KIAogICAgICAgICBlbGlmIHNlbGYubmFtZV9pc19jb25mb3JtYW5jZV9zdXBwb3J0OgotICAg
ICAgICAgICAgcnYgPSAic3VwcG9ydCIsIFtTdXBwb3J0RmlsZShzZWxmKV0KKyAgICAgICAgICAg
IHJ2ID0gInN1cHBvcnQiLCBbCisgICAgICAgICAgICAgICAgU3VwcG9ydEZpbGUoCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZWxfcGF0aAorICAgICAgICAgICAgICAgICldCiAKICAgICAgICAgZWxpZiBzZWxmLm5hbWVfaXNf
dmlzdWFsOgotICAgICAgICAgICAgcnYgPSBWaXN1YWxUZXN0Lml0ZW1fdHlwZSwgW1Zpc3VhbFRl
c3Qoc2VsZiwgc2VsZi51cmwpXQorICAgICAgICAgICAgcnYgPSBWaXN1YWxUZXN0Lml0ZW1fdHlw
ZSwgWworICAgICAgICAgICAgICAgIFZpc3VhbFRlc3QoCisgICAgICAgICAgICAgICAgICAgIHNl
bGYudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWxfcGF0aCwKKyAgICAg
ICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZWxfdXJsCisgICAgICAgICAgICAgICAgKV0KIAogICAgICAgICBlbGlmIHNlbGYubmFtZV9pc19t
dWx0aV9nbG9iYWw6CiAgICAgICAgICAgICBnbG9iYWxzID0gYiIiCi0gICAgICAgICAgICBmb3Ig
KGtleSwgdmFsdWUpIGluIHNlbGYuc2NyaXB0X21ldGFkYXRhOgorICAgICAgICAgICAgc2NyaXB0
X21ldGFkYXRhID0gc2VsZi5zY3JpcHRfbWV0YWRhdGEKKyAgICAgICAgICAgIGFzc2VydCBzY3Jp
cHRfbWV0YWRhdGEgaXMgbm90IE5vbmUKKyAgICAgICAgICAgIGZvciAoa2V5LCB2YWx1ZSkgaW4g
c2NyaXB0X21ldGFkYXRhOgogICAgICAgICAgICAgICAgIGlmIGtleSA9PSBiImdsb2JhbCI6CiAg
ICAgICAgICAgICAgICAgICAgIGdsb2JhbHMgPSB2YWx1ZQogICAgICAgICAgICAgICAgICAgICBi
cmVhawogCiAgICAgICAgICAgICB0ZXN0cyA9IFsKLSAgICAgICAgICAgICAgICBUZXN0aGFybmVz
c1Rlc3Qoc2VsZiwgZ2xvYmFsX3ZhcmlhbnRfdXJsKHNlbGYudXJsLCBzdWZmaXgpICsgdmFyaWFu
dCwgdGltZW91dD1zZWxmLnRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGpzc2hlbGw9anNzaGVsbCkKKyAgICAgICAgICAgICAgICBUZXN0aGFybmVzc1Rlc3QoCisgICAg
ICAgICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5yZWxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKKyAgICAgICAg
ICAgICAgICAgICAgZ2xvYmFsX3ZhcmlhbnRfdXJsKHNlbGYucmVsX3VybCwgc3VmZml4KSArIHZh
cmlhbnQsCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi50aW1lb3V0LAorICAgICAg
ICAgICAgICAgICAgICBqc3NoZWxsPWpzc2hlbGwsCisgICAgICAgICAgICAgICAgICAgIHNjcmlw
dF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQorICAgICAgICAgICAgICAgICkKICAgICAg
ICAgICAgICAgICBmb3IgKHN1ZmZpeCwganNzaGVsbCkgaW4gc29ydGVkKGdsb2JhbF9zdWZmaXhl
cyhnbG9iYWxzKSkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFy
aWFudHMKLSAgICAgICAgICAgIF0KKyAgICAgICAgICAgIF0gICAjIHR5cGU6IExpc3RbTWFuaWZl
c3RJdGVtXQogICAgICAgICAgICAgcnYgPSBUZXN0aGFybmVzc1Rlc3QuaXRlbV90eXBlLCB0ZXN0
cwogCiAgICAgICAgIGVsaWYgc2VsZi5uYW1lX2lzX3dvcmtlcjoKLSAgICAgICAgICAgIHRlc3Rf
dXJsID0gcmVwbGFjZV9lbmQoc2VsZi51cmwsICIud29ya2VyLmpzIiwgIi53b3JrZXIuaHRtbCIp
CisgICAgICAgICAgICB0ZXN0X3VybCA9IHJlcGxhY2VfZW5kKHNlbGYucmVsX3VybCwgIi53b3Jr
ZXIuanMiLCAiLndvcmtlci5odG1sIikKICAgICAgICAgICAgIHRlc3RzID0gWwotICAgICAgICAg
ICAgICAgIFRlc3RoYXJuZXNzVGVzdChzZWxmLCB0ZXN0X3VybCArIHZhcmlhbnQsIHRpbWVvdXQ9
c2VsZi50aW1lb3V0KQorICAgICAgICAgICAgICAgIFRlc3RoYXJuZXNzVGVzdCgKKyAgICAgICAg
ICAgICAgICAgICAgc2VsZi50ZXN0c19yb290LAorICAgICAgICAgICAgICAgICAgICBzZWxmLnJl
bF9wYXRoLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnVybF9iYXNlLAorICAgICAgICAgICAg
ICAgICAgICB0ZXN0X3VybCArIHZhcmlhbnQsCisgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9
c2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICBzY3JpcHRfbWV0YWRhdGE9c2VsZi5z
Y3JpcHRfbWV0YWRhdGEKKyAgICAgICAgICAgICAgICApCiAgICAgICAgICAgICAgICAgZm9yIHZh
cmlhbnQgaW4gc2VsZi50ZXN0X3ZhcmlhbnRzCiAgICAgICAgICAgICBdCiAgICAgICAgICAgICBy
diA9IFRlc3RoYXJuZXNzVGVzdC5pdGVtX3R5cGUsIHRlc3RzCiAKICAgICAgICAgZWxpZiBzZWxm
Lm5hbWVfaXNfd2luZG93OgotICAgICAgICAgICAgdGVzdF91cmwgPSByZXBsYWNlX2VuZChzZWxm
LnVybCwgIi53aW5kb3cuanMiLCAiLndpbmRvdy5odG1sIikKKyAgICAgICAgICAgIHRlc3RfdXJs
ID0gcmVwbGFjZV9lbmQoc2VsZi5yZWxfdXJsLCAiLndpbmRvdy5qcyIsICIud2luZG93Lmh0bWwi
KQogICAgICAgICAgICAgdGVzdHMgPSBbCi0gICAgICAgICAgICAgICAgVGVzdGhhcm5lc3NUZXN0
KHNlbGYsIHRlc3RfdXJsICsgdmFyaWFudCwgdGltZW91dD1zZWxmLnRpbWVvdXQpCisgICAgICAg
ICAgICAgICAgVGVzdGhhcm5lc3NUZXN0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3Rz
X3Jvb3QsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVsX3BhdGgsCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYudXJsX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgIHRlc3RfdXJsICsgdmFy
aWFudCwKKyAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAg
ICAgICAgICAgICAgIHNjcmlwdF9tZXRhZGF0YT1zZWxmLnNjcmlwdF9tZXRhZGF0YQorICAgICAg
ICAgICAgICAgICkKICAgICAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFy
aWFudHMKICAgICAgICAgICAgIF0KICAgICAgICAgICAgIHJ2ID0gVGVzdGhhcm5lc3NUZXN0Lml0
ZW1fdHlwZSwgdGVzdHMKIAogICAgICAgICBlbGlmIHNlbGYubmFtZV9pc193ZWJkcml2ZXI6Ci0g
ICAgICAgICAgICBydiA9IFdlYmRyaXZlclNwZWNUZXN0Lml0ZW1fdHlwZSwgW1dlYmRyaXZlclNw
ZWNUZXN0KHNlbGYsIHNlbGYudXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYudGltZW91dCldCisg
ICAgICAgICAgICBydiA9IFdlYkRyaXZlclNwZWNUZXN0Lml0ZW1fdHlwZSwgWworICAgICAgICAg
ICAgICAgIFdlYkRyaXZlclNwZWNUZXN0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3Rz
X3Jvb3QsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVsX3BhdGgsCisgICAgICAgICAgICAg
ICAgICAgIHNlbGYudXJsX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVsX3VybCwK
KyAgICAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLnRpbWVvdXQKKyAgICAgICAgICAgICAg
ICApXQogCiAgICAgICAgIGVsaWYgc2VsZi5jb250ZW50X2lzX2Nzc19tYW51YWwgYW5kIG5vdCBz
ZWxmLm5hbWVfaXNfcmVmZXJlbmNlOgotICAgICAgICAgICAgcnYgPSBNYW51YWxUZXN0Lml0ZW1f
dHlwZSwgW01hbnVhbFRlc3Qoc2VsZiwgc2VsZi51cmwpXQorICAgICAgICAgICAgcnYgPSBNYW51
YWxUZXN0Lml0ZW1fdHlwZSwgWworICAgICAgICAgICAgICAgIE1hbnVhbFRlc3QoCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYudGVzdHNfcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZWxfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgc2VsZi51cmxfYmFzZSwKKyAgICAgICAgICAg
ICAgICAgICAgc2VsZi5yZWxfdXJsCisgICAgICAgICAgICAgICAgKV0KIAogICAgICAgICBlbGlm
IHNlbGYuY29udGVudF9pc190ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJ2ID0gVGVzdGhhcm5l
c3NUZXN0Lml0ZW1fdHlwZSwgW10KICAgICAgICAgICAgIHRlc3Rkcml2ZXIgPSBzZWxmLmhhc190
ZXN0ZHJpdmVyCiAgICAgICAgICAgICBmb3IgdmFyaWFudCBpbiBzZWxmLnRlc3RfdmFyaWFudHM6
Ci0gICAgICAgICAgICAgICAgdXJsID0gc2VsZi51cmwgKyB2YXJpYW50Ci0gICAgICAgICAgICAg
ICAgcnZbMV0uYXBwZW5kKFRlc3RoYXJuZXNzVGVzdChzZWxmLCB1cmwsIHRpbWVvdXQ9c2VsZi50
aW1lb3V0LCB0ZXN0ZHJpdmVyPXRlc3Rkcml2ZXIpKQorICAgICAgICAgICAgICAgIHVybCA9IHNl
bGYucmVsX3VybCArIHZhcmlhbnQKKyAgICAgICAgICAgICAgICBydlsxXS5hcHBlbmQoVGVzdGhh
cm5lc3NUZXN0KAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RzX3Jvb3QsCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYucmVsX3BhdGgsCisgICAgICAgICAgICAgICAgICAgIHNlbGYudXJs
X2Jhc2UsCisgICAgICAgICAgICAgICAgICAgIHVybCwKKyAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dD1zZWxmLnRpbWVvdXQsCisgICAgICAgICAgICAgICAgICAgIHRlc3Rkcml2ZXI9dGVzdGRy
aXZlciwKKyAgICAgICAgICAgICAgICAgICAgc2NyaXB0X21ldGFkYXRhPXNlbGYuc2NyaXB0X21l
dGFkYXRhCisgICAgICAgICAgICAgICAgKSkKIAogICAgICAgICBlbGlmIHNlbGYuY29udGVudF9p
c19yZWZfbm9kZToKLSAgICAgICAgICAgIHJ2ID0gKFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwKLSAg
ICAgICAgICAgICAgICAgIFtSZWZUZXN0Tm9kZShzZWxmLCBzZWxmLnVybCwgc2VsZi5yZWZlcmVu
Y2VzLCB0aW1lb3V0PXNlbGYudGltZW91dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB2aWV3cG9ydF9zaXplPXNlbGYudmlld3BvcnRfc2l6ZSwgZHBpPXNlbGYuZHBpKV0pCisgICAg
ICAgICAgICBydiA9IFJlZlRlc3ROb2RlLml0ZW1fdHlwZSwgWworICAgICAgICAgICAgICAgIFJl
ZlRlc3ROb2RlKAorICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3RzX3Jvb3QsCisgICAgICAg
ICAgICAgICAgICAgIHNlbGYucmVsX3BhdGgsCisgICAgICAgICAgICAgICAgICAgIHNlbGYudXJs
X2Jhc2UsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVsX3VybCwKKyAgICAgICAgICAgICAg
ICAgICAgcmVmZXJlbmNlcz1zZWxmLnJlZmVyZW5jZXMsCisgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQ9c2VsZi50aW1lb3V0LAorICAgICAgICAgICAgICAgICAgICB2aWV3cG9ydF9zaXplPXNl
bGYudmlld3BvcnRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgZHBpPXNlbGYuZHBpLAorICAg
ICAgICAgICAgICAgICAgICBmdXp6eT1zZWxmLmZ1enp5CisgICAgICAgICAgICAgICAgKV0KIAog
ICAgICAgICBlbGlmIHNlbGYuY29udGVudF9pc19jc3NfdmlzdWFsIGFuZCBub3Qgc2VsZi5uYW1l
X2lzX3JlZmVyZW5jZToKLSAgICAgICAgICAgIHJ2ID0gVmlzdWFsVGVzdC5pdGVtX3R5cGUsIFtW
aXN1YWxUZXN0KHNlbGYsIHNlbGYudXJsKV0KKyAgICAgICAgICAgIHJ2ID0gVmlzdWFsVGVzdC5p
dGVtX3R5cGUsIFsKKyAgICAgICAgICAgICAgICBWaXN1YWxUZXN0KAorICAgICAgICAgICAgICAg
ICAgICBzZWxmLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVsX3BhdGgs
CisgICAgICAgICAgICAgICAgICAgIHNlbGYudXJsX2Jhc2UsCisgICAgICAgICAgICAgICAgICAg
IHNlbGYucmVsX3VybAorICAgICAgICAgICAgICAgICldCiAKICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHJ2ID0gInN1cHBvcnQiLCBbU3VwcG9ydEZpbGUoc2VsZildCisgICAgICAgICAgICBy
diA9ICJzdXBwb3J0IiwgWworICAgICAgICAgICAgICAgIFN1cHBvcnRGaWxlKAorICAgICAgICAg
ICAgICAgICAgICBzZWxmLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAgICAgIHNlbGYucmVs
X3BhdGgKKyAgICAgICAgICAgICAgICApXQorCisgICAgICAgIGFzc2VydCBsZW4ocnZbMV0pID09
IGxlbihzZXQocnZbMV0pKQogCiAgICAgICAgIHNlbGYuaXRlbXNfY2FjaGUgPSBydgogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Rlc3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQppbmRleCBh
NjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQz
NGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL19faW5pdF9fLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
bWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHkKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMg
cmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMu
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X2l0
ZW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L3Rlc3RzL3Rlc3RfaXRlbS5weQppbmRleCA5Zjc5ODc0N2JkNGVkNWU5NzJhMTFi
MjMyNDgwZmNhMTY3MjhmMjVkLi5jZjUyZmU4MGFhZDA0ZTVkY2IzNTAzNDM1MmU5ZmI4ZWRkNTNl
Y2I2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfaXRlbS5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rf
aXRlbS5weQpAQCAtMSwyMyArMSwxMDUgQEAKLWZyb20gLi5pdGVtIGltcG9ydCBTdXBwb3J0Rmls
ZSwgVVJMTWFuaWZlc3RJdGVtCi1mcm9tIC4uc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZQor
aW1wb3J0IGluc3BlY3QKK2ltcG9ydCBqc29uCiAKK2ltcG9ydCBweXRlc3QKIAotZGVmIHRlc3Rf
YmFzZV9tZXRhX2ZsYWdzKCk6Ci0gICAgcyA9IFNvdXJjZUZpbGUoIi8iLCAiYS5iLmMuZCIsICIv
IiwgY29udGVudHM9IiIpCi0gICAgbSA9IFN1cHBvcnRGaWxlKHMpCitmcm9tIC4ubWFuaWZlc3Qg
aW1wb3J0IE1hbmlmZXN0CisjIFByZXZlbnQgcHl0ZXN0IGZyb20gdHJlYXRpbmcgVGVzdGhhcm5l
c3NUZXN0IGFzIGEgdGVzdCBjbGFzcworZnJvbSAuLml0ZW0gaW1wb3J0IFRlc3RoYXJuZXNzVGVz
dCBhcyBIYXJuZXNzVGVzdAorZnJvbSAuLml0ZW0gaW1wb3J0IFJlZlRlc3QsIGl0ZW1fdHlwZXMK
IAotICAgIGFzc2VydCBtLm1ldGFfZmxhZ3MgPT0geyJiIiwgImMifQogCitAcHl0ZXN0Lm1hcmsu
cGFyYW1ldHJpemUoInBhdGgiLCBbCisgICAgImEuaHR0cHMuYyIsCisgICAgImEuYi5odHRwcy5j
IiwKKyAgICAiYS5odHRwcy5iLmMiLAorICAgICJhLmIuaHR0cHMuYy5kIiwKKyAgICAiYS5zZXJ2
aWNld29ya2VyLmMiLAorICAgICJhLmIuc2VydmljZXdvcmtlci5jIiwKKyAgICAiYS5zZXJ2aWNl
d29ya2VyLmIuYyIsCisgICAgImEuYi5zZXJ2aWNld29ya2VyLmMuZCIsCitdKQorZGVmIHRlc3Rf
dXJsX2h0dHBzKHBhdGgpOgorICAgIG0gPSBIYXJuZXNzVGVzdCgiL2ZvbyIsICJiYXIvIiArIHBh
dGgsICIvIiwgImJhci8iICsgcGF0aCkKIAotZGVmIHRlc3RfdXJsX21ldGFfZmxhZ3MoKToKLSAg
ICBzID0gU291cmNlRmlsZSgiLyIsICJhLmIuYyIsICIvIiwgY29udGVudHM9IiIpCi0gICAgbSA9
IFVSTE1hbmlmZXN0SXRlbShzLCAiL2Zvby5iYXIvYS5iLmQuZSIpCisgICAgYXNzZXJ0IG0uaHR0
cHMgaXMgVHJ1ZQogCi0gICAgYXNzZXJ0IG0ubWV0YV9mbGFncyA9PSB7ImIiLCAiZCJ9CiAKK0Bw
eXRlc3QubWFyay5wYXJhbWV0cml6ZSgicGF0aCIsIFsKKyAgICAiaHR0cHMiLAorICAgICJhLmh0
dHBzIiwKKyAgICAiYS5iLmh0dHBzIiwKKyAgICAiaHR0cHMuYSIsCisgICAgImh0dHBzLmEuYiIs
CisgICAgImEuYmh0dHBzLmMiLAorICAgICJhLmh0dHBzYi5jIiwKKyAgICAic2VydmljZXdvcmtl
ciIsCisgICAgImEuc2VydmljZXdvcmtlciIsCisgICAgImEuYi5zZXJ2aWNld29ya2VyIiwKKyAg
ICAic2VydmljZXdvcmtlci5hIiwKKyAgICAic2VydmljZXdvcmtlci5hLmIiLAorICAgICJhLmJz
ZXJ2aWNld29ya2VyLmMiLAorICAgICJhLnNlcnZpY2V3b3JrZXJiLmMiLAorXSkKK2RlZiB0ZXN0
X3VybF9ub3RfaHR0cHMocGF0aCk6CisgICAgbSA9IEhhcm5lc3NUZXN0KCIvZm9vIiwgImJhci8i
ICsgcGF0aCwgIi8iLCAiYmFyLyIgKyBwYXRoKQogCi1kZWYgdGVzdF91cmxfZW1wdHlfbWV0YV9m
bGFncygpOgotICAgIHMgPSBTb3VyY2VGaWxlKCIvIiwgImEuYi5jIiwgIi8iLCBjb250ZW50cz0i
IikKLSAgICBtID0gVVJMTWFuaWZlc3RJdGVtKHMsICIvZm9vLmJhci9hYmNkZSIpCisgICAgYXNz
ZXJ0IG0uaHR0cHMgaXMgRmFsc2UKIAotICAgIGFzc2VydCBtLm1ldGFfZmxhZ3MgPT0gc2V0KCkK
KworQHB5dGVzdC5tYXJrLnBhcmFtZXRyaXplKCJmdXp6eSIsIFsKKyAgICB7KCcvZm9vL3Rlc3Qu
aHRtbCcsIHUnL2Zvby9yZWYuaHRtbCcsICc9PScpOiBbWzEsIDFdLCBbMjAwLCAyMDBdXX0sCisg
ICAgeygnL2Zvby90ZXN0Lmh0bWwnLCB1Jy9mb28vcmVmLmh0bWwnLCAnPT0nKTogW1swLCAxXSwg
WzEwMCwgMjAwXV19LAorICAgIHtOb25lOiBbWzAsIDFdLCBbMTAwLCAyMDBdXX0sCisgICAge05v
bmU6IFtbMSwgMV0sIFsyMDAsIDIwMF1dfSwKK10pCitkZWYgdGVzdF9yZWZ0ZXN0X2Z1enp5KGZ1
enp5KToKKyAgICB0ID0gUmVmVGVzdCgnLycsCisgICAgICAgICAgICAgICAgJ2Zvby90ZXN0Lmh0
bWwnLAorICAgICAgICAgICAgICAgICcvJywKKyAgICAgICAgICAgICAgICAnZm9vL3Rlc3QuaHRt
bCcsCisgICAgICAgICAgICAgICAgWygnL2Zvby9yZWYuaHRtbCcsICc9PScpXSwKKyAgICAgICAg
ICAgICAgICBmdXp6eT1mdXp6eSkKKyAgICBhc3NlcnQgZnV6enkgPT0gdC5mdXp6eQorCisgICAg
anNvbl9vYmogPSB0LnRvX2pzb24oKQorCisgICAgbSA9IE1hbmlmZXN0KCIvIiwgIi8iKQorICAg
IHQyID0gUmVmVGVzdC5mcm9tX2pzb24obSwgdC5wYXRoLCBqc29uX29iaikKKyAgICBhc3NlcnQg
ZnV6enkgPT0gdDIuZnV6enkKKworICAgICMgdGVzdCB0aGUgcm91bmR0cmlwIGNhc2UsIGdpdmVu
IHR1cGxlcyBiZWNvbWUgbGlzdHMKKyAgICByb3VuZHRyaXAgPSBqc29uLmxvYWRzKGpzb24uZHVt
cHMoanNvbl9vYmopKQorICAgIHQzID0gUmVmVGVzdC5mcm9tX2pzb24obSwgdC5wYXRoLCByb3Vu
ZHRyaXApCisgICAgYXNzZXJ0IGZ1enp5ID09IHQzLmZ1enp5CisKKworQHB5dGVzdC5tYXJrLnBh
cmFtZXRyaXplKCJmdXp6eSIsIFsKKyAgICB7KCcvZm9vL3Rlc3QuaHRtbCcsIHUnL2Zvby9yZWYt
Mi5odG1sJywgJz09Jyk6IFtbMCwgMV0sIFsxMDAsIDIwMF1dfSwKKyAgICB7Tm9uZTogW1sxLCAx
XSwgWzIwMCwgMjAwXV0sICgnL2Zvby90ZXN0Lmh0bWwnLCB1Jy9mb28vcmVmLTIuaHRtbCcsICc9
PScpOiBbWzAsIDFdLCBbMTAwLCAyMDBdXX0sCitdKQorZGVmIHRlc3RfcmVmdGVzdF9mdXp6eV9t
dWx0aShmdXp6eSk6CisgICAgdCA9IFJlZlRlc3QoJy8nLAorICAgICAgICAgICAgICAgICdmb28v
dGVzdC5odG1sJywKKyAgICAgICAgICAgICAgICAnLycsCisgICAgICAgICAgICAgICAgJ2Zvby90
ZXN0Lmh0bWwnLAorICAgICAgICAgICAgICAgIFsoJy9mb28vcmVmLTEuaHRtbCcsICc9PScpLCAo
Jy9mb28vcmVmLTIuaHRtbCcsICc9PScpXSwKKyAgICAgICAgICAgICAgICBmdXp6eT1mdXp6eSkK
KyAgICBhc3NlcnQgZnV6enkgPT0gdC5mdXp6eQorCisgICAganNvbl9vYmogPSB0LnRvX2pzb24o
KQorCisgICAgbSA9IE1hbmlmZXN0KCIvIiwgIi8iKQorICAgIHQyID0gUmVmVGVzdC5mcm9tX2pz
b24obSwgdC5wYXRoLCBqc29uX29iaikKKyAgICBhc3NlcnQgZnV6enkgPT0gdDIuZnV6enkKKwor
ICAgICMgdGVzdCB0aGUgcm91bmR0cmlwIGNhc2UsIGdpdmVuIHR1cGxlcyBiZWNvbWUgbGlzdHMK
KyAgICByb3VuZHRyaXAgPSBqc29uLmxvYWRzKGpzb24uZHVtcHMoanNvbl9vYmopKQorICAgIHQz
ID0gUmVmVGVzdC5mcm9tX2pzb24obSwgdC5wYXRoLCByb3VuZHRyaXApCisgICAgYXNzZXJ0IGZ1
enp5ID09IHQzLmZ1enp5CisKKworZGVmIHRlc3RfaXRlbV90eXBlcygpOgorICAgIGZvciBrZXks
IHZhbHVlIGluIGl0ZW1fdHlwZXMuaXRlbXMoKToKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uo
a2V5LCBzdHIpCisgICAgICAgIGFzc2VydCBub3QgaW5zcGVjdC5pc2Fic3RyYWN0KHZhbHVlKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlmZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy90ZXN0X21hbmlm
ZXN0LnB5CmluZGV4IDhiZjdlZjk2YzVmNTEyNDhjNzYyNTRhZjMwMmFkNjM5MWJiMmQ5MDMuLjhl
MDA4YmUwOTExODFkZGEzYTA4NjczYTM4ZTRmYWFlYmZiMTE5YzEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVz
dHMvdGVzdF9tYW5pZmVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfbWFuaWZlc3QucHkKQEAgLTcs
MjAgKzcsMzIgQEAgaW1wb3J0IGh5cG90aGVzaXMuc3RyYXRlZ2llcyBhcyBocwogCiBpbXBvcnQg
cHl0ZXN0CiAKLWZyb20gLi4gaW1wb3J0IG1hbmlmZXN0LCBpdGVtLCB1dGlscworZnJvbSAuLiBp
bXBvcnQgbWFuaWZlc3QsIHNvdXJjZWZpbGUsIGl0ZW0sIHV0aWxzCiAKK01ZUFkgPSBGYWxzZQor
aWYgTVlQWToKKyAgICAjIE1ZUFkgaXMgc2V0IHRvIFRydWUgd2hlbiBydW4gdW5kZXIgTXlweS4K
KyAgICBmcm9tIHR5cGluZyBpbXBvcnQgQW55CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IFR5cGUK
IAotZGVmIFNvdXJjZUZpbGVXaXRoVGVzdChwYXRoLCBoYXNoLCBjbHMsICphcmdzKToKKworZGVm
IFNvdXJjZUZpbGVXaXRoVGVzdChwYXRoLCBoYXNoLCBjbHMsICoqa3dhcmdzKToKKyAgICAjIHR5
cGU6IChzdHIsIHN0ciwgVHlwZVtpdGVtLk1hbmlmZXN0SXRlbV0sICoqQW55KSAtPiBzb3VyY2Vm
aWxlLlNvdXJjZUZpbGUKICAgICBzID0gbW9jay5Nb2NrKHJlbF9wYXRoPXBhdGgsIGhhc2g9aGFz
aCkKLSAgICB0ZXN0ID0gY2xzKHMsIHV0aWxzLnJlbF9wYXRoX3RvX3VybChwYXRoKSwgKmFyZ3Mp
CisgICAgaWYgY2xzID09IGl0ZW0uU3VwcG9ydEZpbGU6CisgICAgICAgIHRlc3QgPSBjbHMoIi9m
b29iYXIiLCBwYXRoKQorICAgIGVsc2U6CisgICAgICAgIGFzc2VydCBpc3N1YmNsYXNzKGNscywg
aXRlbS5VUkxNYW5pZmVzdEl0ZW0pCisgICAgICAgIHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRo
LCAiLyIsIHV0aWxzLmZyb21fb3NfcGF0aChwYXRoKSwgKiprd2FyZ3MpCiAgICAgcy5tYW5pZmVz
dF9pdGVtcyA9IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5pdGVtX3R5cGUsIFt0ZXN0XSkp
Ci0gICAgcmV0dXJuIHMKKyAgICByZXR1cm4gcyAgIyB0eXBlOiBpZ25vcmUKIAogZGVmIFNvdXJj
ZUZpbGVXaXRoVGVzdHMocGF0aCwgaGFzaCwgY2xzLCB2YXJpYW50cyk6CisgICAgIyB0eXBlOiAo
c3RyLCBzdHIsIFR5cGVbaXRlbS5VUkxNYW5pZmVzdEl0ZW1dLCAqKkFueSkgLT4gc291cmNlZmls
ZS5Tb3VyY2VGaWxlCiAgICAgcyA9IG1vY2suTW9jayhyZWxfcGF0aD1wYXRoLCBoYXNoPWhhc2gp
Ci0gICAgdGVzdHMgPSBbY2xzKHMsIGl0ZW1bMF0sICppdGVtWzE6XSkgZm9yIGl0ZW0gaW4gdmFy
aWFudHNdCisgICAgdGVzdHMgPSBbY2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCBpdGVtWzBdLCAq
Kml0ZW1bMV0pIGZvciBpdGVtIGluIHZhcmlhbnRzXQogICAgIHMubWFuaWZlc3RfaXRlbXMgPSBt
b2NrLk1vY2socmV0dXJuX3ZhbHVlPShjbHMuaXRlbV90eXBlLCB0ZXN0cykpCi0gICAgcmV0dXJu
IHMKKyAgICByZXR1cm4gcyAgIyB0eXBlOiBpZ25vcmUKIAogCiBAaHMuY29tcG9zaXRlCkBAIC0z
MCwyMCArNDIsMTUgQEAgZGVmIHJlbF9kaXJfZmlsZV9wYXRoKGRyYXcpOgogICAgICAgICByZXR1
cm4gImEiCiAgICAgZWxzZToKICAgICAgICAgcmVtYWluaW5nID0gbGVuZ3RoIC0gMgotICAgICAg
ICBpZiBvcy5wYXRoLnNlcCA9PSAiLyI6Ci0gICAgICAgICAgICBhbHBoYWJldCA9ICJhLyIKLSAg
ICAgICAgZWxpZiBvcy5wYXRoLnNlcCA9PSAiXFwiOgotICAgICAgICAgICAgYWxwaGFiZXQgPSAi
YS9cXCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCBGYWxzZSwgInVoaGhoLCB0
aGlzIHBsYXRmb3JtIGlzIHdlaXJkIgorICAgICAgICBhbHBoYWJldCA9ICJhIiArIG9zLnBhdGgu
c2VwCiAgICAgICAgIG1pZCA9IGRyYXcoaHMudGV4dChhbHBoYWJldD1hbHBoYWJldCwgbWluX3Np
emU9cmVtYWluaW5nLCBtYXhfc2l6ZT1yZW1haW5pbmcpKQogICAgICAgICByZXR1cm4gb3MucGF0
aC5ub3JtY2FzZSgiYSIgKyBtaWQgKyAiYSIpCiAKIAogQGhzLmNvbXBvc2l0ZQogZGVmIHNvdXJj
ZWZpbGVfc3RyYXRlZ3koZHJhdyk6Ci0gICAgaXRlbV9jbGFzc2VzID0gW2l0ZW0uVGVzdGhhcm5l
c3NUZXN0LCBpdGVtLlJlZlRlc3QsIGl0ZW0uUmVmVGVzdE5vZGUsCi0gICAgICAgICAgICAgICAg
ICAgIGl0ZW0uTWFudWFsVGVzdCwgaXRlbS5TdHViLCBpdGVtLldlYmRyaXZlclNwZWNUZXN0LAor
ICAgIGl0ZW1fY2xhc3NlcyA9IFtpdGVtLlRlc3RoYXJuZXNzVGVzdCwgaXRlbS5SZWZUZXN0Tm9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgaXRlbS5NYW51YWxUZXN0LCBpdGVtLldlYkRyaXZlclNw
ZWNUZXN0LAogICAgICAgICAgICAgICAgICAgICBpdGVtLkNvbmZvcm1hbmNlQ2hlY2tlclRlc3Qs
IGl0ZW0uU3VwcG9ydEZpbGVdCiAgICAgY2xzID0gZHJhdyhocy5zYW1wbGVkX2Zyb20oaXRlbV9j
bGFzc2VzKSkKIApAQCAtNTEsMjggKzU4LDI3IEBAIGRlZiBzb3VyY2VmaWxlX3N0cmF0ZWd5KGRy
YXcpOgogICAgIGhhc2ggPSBkcmF3KGhzLnRleHQoYWxwaGFiZXQ9IjAxMjM0NTY3ODlhYmNkZWYi
LCBtaW5fc2l6ZT00MCwgbWF4X3NpemU9NDApKQogICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9
cGF0aCwgaGFzaD1oYXNoKQogCi0gICAgaWYgY2xzIGluIChpdGVtLlJlZlRlc3QsIGl0ZW0uUmVm
VGVzdE5vZGUpOgorICAgIGlmIGNscyBpcyBpdGVtLlJlZlRlc3ROb2RlOgogICAgICAgICByZWZf
cGF0aCA9IGRyYXcocmVsX2Rpcl9maWxlX3BhdGgoKSkKICAgICAgICAgaC5hc3N1bWUocGF0aCAh
PSByZWZfcGF0aCkKICAgICAgICAgcmVmX2VxID0gZHJhdyhocy5zYW1wbGVkX2Zyb20oWyI9PSIs
ICIhPSJdKSkKLSAgICAgICAgdGVzdCA9IGNscyhzLCB1dGlscy5yZWxfcGF0aF90b191cmwocGF0
aCksIFsodXRpbHMucmVsX3BhdGhfdG9fdXJsKHJlZl9wYXRoKSwgcmVmX2VxKV0pCisgICAgICAg
IHRlc3QgPSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIsIHV0aWxzLmZyb21fb3NfcGF0aChwYXRo
KSwgcmVmZXJlbmNlcz1bKHV0aWxzLmZyb21fb3NfcGF0aChyZWZfcGF0aCksIHJlZl9lcSldKQog
ICAgIGVsaWYgY2xzIGlzIGl0ZW0uU3VwcG9ydEZpbGU6Ci0gICAgICAgIHRlc3QgPSBjbHMocykK
KyAgICAgICAgdGVzdCA9IGNscygiL2Zvb2JhciIsIHBhdGgpCiAgICAgZWxzZToKLSAgICAgICAg
dGVzdCA9IGNscyhzLCB1dGlscy5yZWxfcGF0aF90b191cmwocGF0aCkpCisgICAgICAgIHRlc3Qg
PSBjbHMoIi9mb29iYXIiLCBwYXRoLCAiLyIsIHV0aWxzLmZyb21fb3NfcGF0aChwYXRoKSkKIAog
ICAgIHMubWFuaWZlc3RfaXRlbXMgPSBtb2NrLk1vY2socmV0dXJuX3ZhbHVlPShjbHMuaXRlbV90
eXBlLCBbdGVzdF0pKQogICAgIHJldHVybiBzCiAKIAogQGguZ2l2ZW4oaHMubGlzdHMoc291cmNl
ZmlsZV9zdHJhdGVneSgpLAotICAgICAgICAgICAgICAgICAgbWluX3NpemU9MSwgYXZlcmFnZV9z
aXplPTEwLCBtYXhfc2l6ZT0xMDAwLAotICAgICAgICAgICAgICAgICAgdW5pcXVlX2J5PWxhbWJk
YSB4OiB4LnJlbF9wYXRoKSkKKyAgICAgICAgICAgICAgICAgIG1pbl9zaXplPTEsIG1heF9zaXpl
PTEwMDAsIHVuaXF1ZV9ieT1sYW1iZGEgeDogeC5yZWxfcGF0aCkpCiBAaC5leGFtcGxlKFtTb3Vy
Y2VGaWxlV2l0aFRlc3QoImEiLCAiMCIqNDAsIGl0ZW0uQ29uZm9ybWFuY2VDaGVja2VyVGVzdCld
KQogZGVmIHRlc3RfbWFuaWZlc3RfdG9fanNvbihzKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZl
c3QoKQogCi0gICAgYXNzZXJ0IG0udXBkYXRlKHMpIGlzIFRydWUKKyAgICBhc3NlcnQgbS51cGRh
dGUoKGl0ZW0sIFRydWUpIGZvciBpdGVtIGluIHMpIGlzIFRydWUKIAogICAgIGpzb25fc3RyID0g
bS50b19qc29uKCkKICAgICBsb2FkZWQgPSBtYW5pZmVzdC5NYW5pZmVzdC5mcm9tX2pzb24oIi8i
LCBqc29uX3N0cikKQEAgLTgzLDE4ICs4OSwxNyBAQCBkZWYgdGVzdF9tYW5pZmVzdF90b19qc29u
KHMpOgogCiAKIEBoLmdpdmVuKGhzLmxpc3RzKHNvdXJjZWZpbGVfc3RyYXRlZ3koKSwKLSAgICAg
ICAgICAgICAgICAgIG1pbl9zaXplPTEsIGF2ZXJhZ2Vfc2l6ZT0xMCwKLSAgICAgICAgICAgICAg
ICAgIHVuaXF1ZV9ieT1sYW1iZGEgeDogeC5yZWxfcGF0aCkpCisgICAgICAgICAgICAgICAgICBt
aW5fc2l6ZT0xLCB1bmlxdWVfYnk9bGFtYmRhIHg6IHgucmVsX3BhdGgpKQogQGguZXhhbXBsZShb
U291cmNlRmlsZVdpdGhUZXN0KCJhIiwgIjAiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCldKQot
QGguZXhhbXBsZShbU291cmNlRmlsZVdpdGhUZXN0KCJhIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3Qs
IFsoIi9hYSIsICI9PSIpXSldKQorQGguZXhhbXBsZShbU291cmNlRmlsZVdpdGhUZXN0KCJhIiwg
IjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi9hYSIsICI9PSIpXSldKQog
ZGVmIHRlc3RfbWFuaWZlc3RfaWRlbXBvdGVudChzKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZl
c3QoKQogCi0gICAgYXNzZXJ0IG0udXBkYXRlKHMpIGlzIFRydWUKKyAgICBhc3NlcnQgbS51cGRh
dGUoKGl0ZW0sIFRydWUpIGZvciBpdGVtIGluIHMpIGlzIFRydWUKIAogICAgIG0xID0gbGlzdCht
KQogCi0gICAgYXNzZXJ0IG0udXBkYXRlKHMpIGlzIEZhbHNlCisgICAgYXNzZXJ0IG0udXBkYXRl
KChpdGVtLCBUcnVlKSBmb3IgaXRlbSBpbiBzKSBpcyBGYWxzZQogCiAgICAgYXNzZXJ0IGxpc3Qo
bSkgPT0gbTEKIApAQCAtMTA0LDUyICsxMDksNDIgQEAgZGVmIHRlc3RfbWFuaWZlc3RfdG9fanNv
bl9mb3J3YXJkc2xhc2goKToKIAogICAgIHMgPSBTb3VyY2VGaWxlV2l0aFRlc3QoImEvYiIsICIw
Iio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpCiAKLSAgICBhc3NlcnQgbS51cGRhdGUoW3NdKSBp
cyBUcnVlCisgICAgYXNzZXJ0IG0udXBkYXRlKFsocywgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICBh
c3NlcnQgbS50b19qc29uKCkgPT0gewogICAgICAgICAncGF0aHMnOiB7CiAgICAgICAgICAgICAn
YS9iJzogKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3Ro
YXJuZXNzJykKICAgICAgICAgfSwKLSAgICAgICAgJ3ZlcnNpb24nOiA1LAorICAgICAgICAndmVy
c2lvbic6IDYsCiAgICAgICAgICd1cmxfYmFzZSc6ICcvJywKICAgICAgICAgJ2l0ZW1zJzogewot
ICAgICAgICAgICAgJ3JlZnRlc3QnOiB7fSwKLSAgICAgICAgICAgICdyZWZ0ZXN0X25vZGUnOiB7
fSwKICAgICAgICAgICAgICd0ZXN0aGFybmVzcyc6IHsKLSAgICAgICAgICAgICAgICAnYS9iJzog
W1snL2EvYicsIHt9XV0KKyAgICAgICAgICAgICAgICAnYS9iJzogWygnYS9iJywge30pXQogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogCiAKK0BweXRlc3QubWFyay5za2lwaWYob3Mu
c2VwICE9ICJcXCIsIHJlYXNvbj0iYmFja3NsYXNoIHBhdGgiKQogZGVmIHRlc3RfbWFuaWZlc3Rf
dG9fanNvbl9iYWNrc2xhc2goKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCiAgICAg
cyA9IFNvdXJjZUZpbGVXaXRoVGVzdCgiYVxcYiIsICIwIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rl
c3QpCiAKLSAgICBpZiBvcy5wYXRoLnNlcCA9PSAiXFwiOgotICAgICAgICBhc3NlcnQgbS51cGRh
dGUoW3NdKSBpcyBUcnVlCi0KLSAgICAgICAgYXNzZXJ0IG0udG9fanNvbigpID09IHsKLSAgICAg
ICAgICAgICdwYXRocyc6IHsKLSAgICAgICAgICAgICAgICAnYS9iJzogKCcwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKLSAgICAgICAgICAg
IH0sCi0gICAgICAgICAgICAndmVyc2lvbic6IDUsCi0gICAgICAgICAgICAndXJsX2Jhc2UnOiAn
LycsCi0gICAgICAgICAgICAnaXRlbXMnOiB7Ci0gICAgICAgICAgICAgICAgJ3JlZnRlc3QnOiB7
fSwKLSAgICAgICAgICAgICAgICAncmVmdGVzdF9ub2RlJzoge30sCi0gICAgICAgICAgICAgICAg
J3Rlc3RoYXJuZXNzJzogewotICAgICAgICAgICAgICAgICAgICAnYS9iJzogW1snL2EvYicsIHt9
XV0KLSAgICAgICAgICAgICAgICB9CisgICAgYXNzZXJ0IG0udXBkYXRlKFsocywgVHJ1ZSldKSBp
cyBUcnVlCisKKyAgICBhc3NlcnQgbS50b19qc29uKCkgPT0geworICAgICAgICAncGF0aHMnOiB7
CisgICAgICAgICAgICAnYS9iJzogKCcwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwJywgJ3Rlc3RoYXJuZXNzJykKKyAgICAgICAgfSwKKyAgICAgICAgJ3ZlcnNpb24nOiA2
LAorICAgICAgICAndXJsX2Jhc2UnOiAnLycsCisgICAgICAgICdpdGVtcyc6IHsKKyAgICAgICAg
ICAgICd0ZXN0aGFybmVzcyc6IHsKKyAgICAgICAgICAgICAgICAnYS9iJzogWygnYS9iJywge30p
XQogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgZWxzZToKLSAgICAgICAgd2l0aCBweXRl
c3QucmFpc2VzKFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgIyBvbmUgb2YgdGhlc2UgbXVzdCBy
YWlzZSBWYWx1ZUVycm9yCi0gICAgICAgICAgICAjIHRoZSBmaXJzdCBtdXN0IHJldHVybiBUcnVl
IGlmIGl0IGRvZXNuJ3QgcmFpc2UKLSAgICAgICAgICAgIGFzc2VydCBtLnVwZGF0ZShbc10pIGlz
IFRydWUKLSAgICAgICAgICAgIG0udG9fanNvbigpCisgICAgfQogCiAKIGRlZiB0ZXN0X21hbmlm
ZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKQEAgLTE1NywxMyArMTUyLDExIEBAIGRlZiB0ZXN0
X21hbmlmZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKICAgICAgICAgJ3BhdGhzJzogewogICAg
ICAgICAgICAgJ2FcXGInOiAoJzAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAnLCAndGVzdGhhcm5lc3MnKQogICAgICAgICB9LAotICAgICAgICAndmVyc2lvbic6IDUsCisg
ICAgICAgICd2ZXJzaW9uJzogNiwKICAgICAgICAgJ3VybF9iYXNlJzogJy8nLAogICAgICAgICAn
aXRlbXMnOiB7Ci0gICAgICAgICAgICAncmVmdGVzdCc6IHt9LAotICAgICAgICAgICAgJ3JlZnRl
c3Rfbm9kZSc6IHt9LAogICAgICAgICAgICAgJ3Rlc3RoYXJuZXNzJzogewotICAgICAgICAgICAg
ICAgICdhXFxiJzogW1snL2EvYicsIHt9XV0KKyAgICAgICAgICAgICAgICAnYVxcYic6IFtbJ2Ev
YicsIHt9XV0KICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTE3NSw3OCArMTY4
LDc0IEBAIGRlZiB0ZXN0X21hbmlmZXN0X2Zyb21fanNvbl9iYWNrc2xhc2goKToKIGRlZiB0ZXN0
X3JlZnRlc3RfY29tcHV0YXRpb25fY2hhaW4oKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3Qo
KQogCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJl
ZlRlc3QsIFsoIi90ZXN0MiIsICI9PSIpXSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgi
dGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgWygiL3Rlc3QzIiwgIj09IildKQorICAgIHMx
ID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwg
cmVmZXJlbmNlcz1bKCIvdGVzdDIiLCAiPT0iKV0pCisgICAgczIgPSBTb3VyY2VGaWxlV2l0aFRl
c3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0
MyIsICI9PSIpXSkKIAotICAgIG0udXBkYXRlKFtzMSwgczJdKQorICAgIG0udXBkYXRlKFsoczEs
IFRydWUpLCAoczIsIFRydWUpXSkKIAogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsx
XVswXQogICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsxXVswXQotICAgIHRlc3QyX25v
ZGUgPSB0ZXN0Mi50b19SZWZUZXN0Tm9kZSgpCiAKLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJy
ZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxfSksCi0gICAgICAgICAgICAgICAgICAgICAgICgi
cmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyX25vZGV9KV0KKyAgICBhc3NlcnQgbGlz
dChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRvX1JlZlRlc3QoKX0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRlc3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0
Mn0pXQogCiAKIGRlZiB0ZXN0X3JlZnRlc3RfY29tcHV0YXRpb25fY2hhaW5fdXBkYXRlX2FkZCgp
OgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRo
VGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgWygiL3Rlc3QzIiwgIj09IildKQor
ICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0
Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCiAgICAgdGVzdDIgPSBzMi5tYW5p
ZmVzdF9pdGVtcygpWzFdWzBdCiAKLSAgICBhc3NlcnQgbS51cGRhdGUoW3MyXSkgaXMgVHJ1ZQor
ICAgIGFzc2VydCBtLnVwZGF0ZShbKHMyLCBUcnVlKV0pIGlzIFRydWUKIAotICAgIGFzc2VydCBs
aXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJ9KV0KKyAgICBhc3NlcnQg
bGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDIucGF0aCwge3Rlc3QyLnRvX1JlZlRlc3QoKX0p
XQogCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJl
ZlRlc3QsIFsoIi90ZXN0MiIsICI9PSIpXSkKKyAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgi
dGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwg
Ij09IildKQogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCiAgICAgIyBz
MidzIGhhc2ggaXMgdW5jaGFuZ2VkLCBidXQgaXQgaGFzIGdvbmUgZnJvbSBhIHRlc3QgdG8gYSBu
b2RlCi0gICAgYXNzZXJ0IG0udXBkYXRlKFtzMSwgczJdKSBpcyBUcnVlCisgICAgYXNzZXJ0IG0u
dXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkgaXMgVHJ1ZQogCi0gICAgdGVzdDJfbm9k
ZSA9IHRlc3QyLnRvX1JlZlRlc3ROb2RlKCkKLQotICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJl
ZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDF9KSwKLSAgICAgICAgICAgICAgICAgICAgICAgKCJy
ZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7dGVzdDJfbm9kZX0pXQorICAgIGFzc2VydCBsaXN0
KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICgicmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3Qy
fSldCiAKIAogZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfcmVtb3Zl
KCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHMxID0gU291cmNlRmlsZVdp
dGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0LCBbKCIvdGVzdDIiLCAiPT0iKV0p
Ci0gICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRl
c3QsIFsoIi90ZXN0MyIsICI9PSIpXSkKKyAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVz
dDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3QyIiwgIj09
IildKQorICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5S
ZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCiAKLSAgICBhc3NlcnQg
bS51cGRhdGUoW3MxLCBzMl0pIGlzIFRydWUKKyAgICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1
ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1z
KClbMV1bMF0KICAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KLSAgICB0ZXN0
Ml9ub2RlID0gdGVzdDIudG9fUmVmVGVzdE5vZGUoKQogCi0gICAgYXNzZXJ0IGxpc3QobSkgPT0g
WygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MX0pLAotICAgICAgICAgICAgICAgICAgICAg
ICAoInJlZnRlc3Rfbm9kZSIsIHRlc3QyLnBhdGgsIHt0ZXN0Ml9ub2RlfSldCisgICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJyZWZ0ZXN0X25vZGUiLCB0ZXN0Mi5wYXRoLCB7
dGVzdDJ9KV0KIAogICAgICMgczIncyBoYXNoIGlzIHVuY2hhbmdlZCwgYnV0IGl0IGhhcyBnb25l
IGZyb20gYSBub2RlIHRvIGEgdGVzdAotICAgIGFzc2VydCBtLnVwZGF0ZShbczJdKSBpcyBUcnVl
CisgICAgYXNzZXJ0IG0udXBkYXRlKFsoczIsIFRydWUpXSkgaXMgVHJ1ZQogCi0gICAgYXNzZXJ0
IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QyLnBhdGgsIHt0ZXN0Mn0pXQorICAgIGFzc2Vy
dCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0Mi5wYXRoLCB7dGVzdDIudG9fUmVmVGVzdCgp
fSldCiAKIAogZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfdGVzdF90
eXBlKCk6CiAgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKIAotICAgIHMxID0gU291cmNlRmls
ZVdpdGhUZXN0KCJ0ZXN0IiwgIjAiKjQwLCBpdGVtLlJlZlRlc3QsIFsoIi90ZXN0LXJlZiIsICI9
PSIpXSkKKyAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdCIsICIwIio0MCwgaXRlbS5S
ZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdC1yZWYiLCAiPT0iKV0pCiAKLSAgICBhc3Nl
cnQgbS51cGRhdGUoW3MxXSkgaXMgVHJ1ZQorICAgIGFzc2VydCBtLnVwZGF0ZShbKHMxLCBUcnVl
KV0pIGlzIFRydWUKIAogICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQogCi0g
ICAgYXNzZXJ0IGxpc3QobSkgPT0gWygicmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MX0pXQor
ICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9f
UmVmVGVzdCgpfSldCiAKICAgICAjIHRlc3QgYmVjb21lcyBhIHRlc3RoYXJuZXNzIHRlc3QgKGhh
c2ggY2hhbmdlIGJlY2F1c2UgdGhhdCBpcyBkZXRlcm1pbmVkCiAgICAgIyBiYXNlZCBvbiB0aGUg
ZmlsZSBjb250ZW50cykuIFRoZSB1cGRhdGVkIG1hbmlmZXN0IHNob3VsZCBub3QgaW5jbHVkZXMg
dGhlCiAgICAgIyBvbGQgcmVmdGVzdC4KICAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVz
dCIsICIxIio0MCwgaXRlbS5UZXN0aGFybmVzc1Rlc3QpCi0gICAgYXNzZXJ0IG0udXBkYXRlKFtz
Ml0pIGlzIFRydWUKKyAgICBhc3NlcnQgbS51cGRhdGUoWyhzMiwgVHJ1ZSldKSBpcyBUcnVlCiAK
ICAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KIApAQCAtMjU2LDg2ICsyNDUs
MTU4IEBAIGRlZiB0ZXN0X3JlZnRlc3RfY29tcHV0YXRpb25fY2hhaW5fdXBkYXRlX3Rlc3RfdHlw
ZSgpOgogZGVmIHRlc3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfbm9kZV9jaGFu
Z2UoKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCi0gICAgczEgPSBTb3VyY2VGaWxl
V2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3QsIFsoIi90ZXN0MiIsICI9PSIp
XSkKLSAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVm
VGVzdE5vZGUsIFsoIi90ZXN0MyIsICI9PSIpXSkKKyAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVz
dCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rlc3Qy
IiwgIj09IildKQorICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwg
aXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCiAKLSAgICBh
c3NlcnQgbS51cGRhdGUoW3MxLCBzMl0pIGlzIFRydWUKKyAgICBhc3NlcnQgbS51cGRhdGUoWyhz
MSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCiAKICAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0
X2l0ZW1zKClbMV1bMF0KICAgICB0ZXN0MiA9IHMyLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KIAot
ICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDF9KSwK
KyAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJyZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxLnRv
X1JlZlRlc3QoKX0pLAogICAgICAgICAgICAgICAgICAgICAgICAoInJlZnRlc3Rfbm9kZSIsIHRl
c3QyLnBhdGgsIHt0ZXN0Mn0pXQogCiAgICAgI3Rlc3QyIGNoYW5nZXMgdG8gc3VwcG9ydCB0eXBl
CiAgICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjEiKjQwLCBpdGVtLlN1cHBv
cnRGaWxlKQogCi0gICAgYXNzZXJ0IG0udXBkYXRlKFtzMSxzMl0pIGlzIFRydWUKKyAgICBhc3Nl
cnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCiAgICAgdGVzdDMg
PSBzMi5tYW5pZmVzdF9pdGVtcygpWzFdWzBdCiAKLSAgICBhc3NlcnQgbGlzdChtKSA9PSBbKCJy
ZWZ0ZXN0IiwgdGVzdDEucGF0aCwge3Rlc3QxfSksCisgICAgYXNzZXJ0IGxpc3QobSkgPT0gWygi
cmVmdGVzdCIsIHRlc3QxLnBhdGgsIHt0ZXN0MS50b19SZWZUZXN0KCl9KSwKICAgICAgICAgICAg
ICAgICAgICAgICAgKCJzdXBwb3J0IiwgdGVzdDMucGF0aCwge3Rlc3QzfSldCiAKIAorZGVmIHRl
c3RfcmVmdGVzdF9jb21wdXRhdGlvbl9jaGFpbl91cGRhdGVfbm9kZV9jaGFuZ2VfcGFydGlhbCgp
OgorICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCisKKyAgICBzMSA9IFNvdXJjZUZpbGVXaXRo
VGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5jZXM9WygiL3Rl
c3QyIiwgIj09IildKQorICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0
MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDMiLCAiPT0iKV0pCisKKyAg
ICBhc3NlcnQgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwgVHJ1ZSldKSBpcyBUcnVlCisKKyAg
ICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KKyAgICB0ZXN0MiA9IHMyLm1hbmlm
ZXN0X2l0ZW1zKClbMV1bMF0KKworICAgIGFzc2VydCBsaXN0KG0pID09IFsoInJlZnRlc3QiLCB0
ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCisgICAgICAgICAgICAgICAgICAgICAg
ICgicmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCisKKyAgICBzMiA9IFNvdXJj
ZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMSIqNDAsIGl0ZW0uUmVmVGVzdE5vZGUsIHJlZmVyZW5j
ZXM9WygiL3Rlc3QzIiwgIj09IildKQorCisgICAgYXNzZXJ0IG0udXBkYXRlKFsoczEucmVsX3Bh
dGgsIEZhbHNlKSwgKHMyLCBUcnVlKV0pIGlzIFRydWUKKworICAgIGFzc2VydCBsaXN0KG0pID09
IFsoInJlZnRlc3QiLCB0ZXN0MS5wYXRoLCB7dGVzdDEudG9fUmVmVGVzdCgpfSksCisgICAgICAg
ICAgICAgICAgICAgICAgICgicmVmdGVzdF9ub2RlIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCisK
KwogZGVmIHRlc3RfaXRlcnBhdGgoKToKICAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQogCi0g
ICAgc291cmNlcyA9IFtTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlJl
ZlRlc3QsIFsoIi90ZXN0MS1yZWYiLCAiPT0iKV0pLAotICAgICAgICAgICAgICAgU291cmNlRmls
ZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwgaXRlbS5SZWZUZXN0LCBbKCIvdGVzdDItcmVmIiwg
Ij09IildKSwKLSAgICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVzdHMoInRlc3QyIiwgIjAi
KjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCwgWygiL3Rlc3QyLTEuaHRtbCIsKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICgiL3Rlc3QyLTIuaHRtbCIsKV0pLAorICAgIHNvdXJjZXMgPSBbU291cmNlRmls
ZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1b
KCIvdGVzdDEtcmVmIiwgIj09IildKSwKKyAgICAgICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVz
dHMoInRlc3QyIiwgIjEiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCwgWygidGVzdDItMS5odG1s
Iiwge30pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0Mi0yLmh0bWwiLCB7fSldKSwKICAgICAg
ICAgICAgICAgIFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDMiLCAiMCIqNDAsIGl0ZW0uVGVzdGhh
cm5lc3NUZXN0KV0KLSAgICBtLnVwZGF0ZShzb3VyY2VzKQorICAgIG0udXBkYXRlKFsocywgVHJ1
ZSkgZm9yIHMgaW4gc291cmNlc10pCiAKLSAgICBhc3NlcnQgc2V0KGl0ZW0udXJsIGZvciBpdGVt
IGluIG0uaXRlcnBhdGgoInRlc3QyIikpID09IHNldChbIi90ZXN0MiIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdGVz
dDItMS5odG1sIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIi90ZXN0Mi0yLmh0bWwiXSkKKyAgICBhc3NlcnQge2l0ZW0u
dXJsIGZvciBpdGVtIGluIG0uaXRlcnBhdGgoInRlc3QyIil9ID09IHsiL3Rlc3QyLTEuaHRtbCIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIi90ZXN0Mi0yLmh0bWwifQogICAgIGFzc2VydCBzZXQobS5pdGVycGF0aCgibWlzc2luZyIp
KSA9PSBzZXQoKQogCiAKLWRlZiB0ZXN0X2ZpbHRlcigpOgorZGVmIHRlc3RfcmVmdGVzdF9ub2Rl
X2J5X3VybCgpOgogICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCiAKLSAgICBzb3VyY2VzID0g
W1NvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgWygiL3Rl
c3QxLXJlZiIsICI9PSIpXSksCi0gICAgICAgICAgICAgICBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QyIiwgIjAiKjQwLCBpdGVtLlJlZlRlc3QsIFsoIi90ZXN0Mi1yZWYiLCAiPT0iKV0pLAotICAg
ICAgICAgICAgICAgU291cmNlRmlsZVdpdGhUZXN0cygidGVzdDIiLCAiMCIqNDAsIGl0ZW0uVGVz
dGhhcm5lc3NUZXN0LCBbKCIvdGVzdDItMS5odG1sIiwpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCIv
dGVzdDItMi5odG1sIiwpXSksCi0gICAgICAgICAgICAgICBTb3VyY2VGaWxlV2l0aFRlc3QoInRl
c3QzIiwgIjAiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCldCi0gICAgbS51cGRhdGUoc291cmNl
cykKLQotICAgIGpzb24gPSBtLnRvX2pzb24oKQorICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0
KCJ0ZXN0MSIsICIwIio0MCwgaXRlbS5SZWZUZXN0Tm9kZSwgcmVmZXJlbmNlcz1bKCIvdGVzdDIi
LCAiPT0iKV0pCisgICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwgIjAiKjQwLCBp
dGVtLlJlZlRlc3ROb2RlLCByZWZlcmVuY2VzPVsoIi90ZXN0MyIsICI9PSIpXSkKIAotICAgIGRl
ZiBmaWx0ZXIoaXQpOgotICAgICAgICBmb3IgdGVzdCBpbiBpdDoKLSAgICAgICAgICAgIGlmIHRl
c3RbMF0gaW4gWyIvdGVzdDItMi5odG1sIiwgIi90ZXN0MyJdOgotICAgICAgICAgICAgICAgIHlp
ZWxkIHRlc3QKKyAgICBtLnVwZGF0ZShbKHMxLCBUcnVlKSwgKHMyLCBUcnVlKV0pCiAKLSAgICBm
aWx0ZXJlZF9tYW5pZmVzdCA9IG1hbmlmZXN0Lk1hbmlmZXN0LmZyb21fanNvbigiLyIsIGpzb24s
IHR5cGVzPVsidGVzdGhhcm5lc3MiXSwgbWV0YV9maWx0ZXJzPVtmaWx0ZXJdKQorICAgIHRlc3Qx
ID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQorICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRl
bXMoKVsxXVswXQogCi0gICAgYWN0dWFsID0gWwotICAgICAgICAodHksIHBhdGgsIFt0ZXN0Lmlk
IGZvciB0ZXN0IGluIHRlc3RzXSkKLSAgICAgICAgZm9yICh0eSwgcGF0aCwgdGVzdHMpIGluIGZp
bHRlcmVkX21hbmlmZXN0Ci0gICAgXQotICAgIGFzc2VydCBhY3R1YWwgPT0gWwotICAgICAgICAo
InRlc3RoYXJuZXNzIiwgInRlc3QyIiwgWyIvdGVzdDItMi5odG1sIl0pLAotICAgICAgICAoInRl
c3RoYXJuZXNzIiwgInRlc3QzIiwgWyIvdGVzdDMiXSksCi0gICAgXQorICAgIGFzc2VydCBtLnJl
ZnRlc3Rfbm9kZXNfYnlfdXJsID09IHsiL3Rlc3QxIjogdGVzdDEudG9fUmVmVGVzdCgpLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Rlc3QyIjogdGVzdDJ9CisgICAg
bS5fcmVmdGVzdF9ub2Rlc19ieV91cmwgPSBOb25lCisgICAgYXNzZXJ0IG0ucmVmdGVzdF9ub2Rl
c19ieV91cmwgPT0geyIvdGVzdDEiOiB0ZXN0MS50b19SZWZUZXN0KCksCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICIvdGVzdDIiOiB0ZXN0Mn0KIAogCi1kZWYgdGVzdF9y
ZWZ0ZXN0X25vZGVfYnlfdXJsKCk6CitkZWYgdGVzdF9ub191cGRhdGUoKToKICAgICBtID0gbWFu
aWZlc3QuTWFuaWZlc3QoKQogCi0gICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwg
IjAiKjQwLCBpdGVtLlJlZlRlc3QsIFsoIi90ZXN0MiIsICI9PSIpXSkKLSAgICBzMiA9IFNvdXJj
ZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAsIGl0ZW0uUmVmVGVzdCwgWygiL3Rlc3QzIiwg
Ij09IildKQorICAgIHMxID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIwIio0MCwgaXRl
bS5UZXN0aGFybmVzc1Rlc3QpCisgICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QyIiwg
IjAiKjQwLCBpdGVtLlRlc3RoYXJuZXNzVGVzdCkKIAotICAgIG0udXBkYXRlKFtzMSwgczJdKQor
ICAgIG0udXBkYXRlKFsoczEsIFRydWUpLCAoczIsIFRydWUpXSkKIAogICAgIHRlc3QxID0gczEu
bWFuaWZlc3RfaXRlbXMoKVsxXVswXQogICAgIHRlc3QyID0gczIubWFuaWZlc3RfaXRlbXMoKVsx
XVswXQotICAgIHRlc3QyX25vZGUgPSB0ZXN0Mi50b19SZWZUZXN0Tm9kZSgpCiAKLSAgICBhc3Nl
cnQgbS5yZWZ0ZXN0X25vZGVzX2J5X3VybCA9PSB7Ii90ZXN0MSI6IHRlc3QxLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiL3Rlc3QyIjogdGVzdDJfbm9kZX0KLSAgICBt
Ll9yZWZ0ZXN0X25vZGVzX2J5X3VybCA9IE5vbmUKLSAgICBhc3NlcnQgbS5yZWZ0ZXN0X25vZGVz
X2J5X3VybCA9PSB7Ii90ZXN0MSI6IHRlc3QxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiL3Rlc3QyIjogdGVzdDJfbm9kZX0KKyAgICBhc3NlcnQgbGlzdChtKSA9PSBb
KCJ0ZXN0aGFybmVzcyIsIHRlc3QxLnBhdGgsIHt0ZXN0MX0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAoInRlc3RoYXJuZXNzIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCisKKyAgICBzMV8xID0g
U291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MSIsICIxIio0MCwgaXRlbS5NYW51YWxUZXN0KQorCisg
ICAgbS51cGRhdGUoWyhzMV8xLCBUcnVlKSwgKHMyLnJlbF9wYXRoLCBGYWxzZSldKQorCisgICAg
dGVzdDFfMSA9IHMxXzEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQorCisgICAgYXNzZXJ0IGxpc3Qo
bSkgPT0gWygibWFudWFsIiwgdGVzdDFfMS5wYXRoLCB7dGVzdDFfMX0pLAorICAgICAgICAgICAg
ICAgICAgICAgICAoInRlc3RoYXJuZXNzIiwgdGVzdDIucGF0aCwge3Rlc3QyfSldCisKKworZGVm
IHRlc3Rfbm9fdXBkYXRlX2RlbGV0ZSgpOgorICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdCgpCisK
KyAgICBzMSA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uVGVzdGhh
cm5lc3NUZXN0KQorICAgIHMyID0gU291cmNlRmlsZVdpdGhUZXN0KCJ0ZXN0MiIsICIwIio0MCwg
aXRlbS5UZXN0aGFybmVzc1Rlc3QpCisKKyAgICBtLnVwZGF0ZShbKHMxLCBUcnVlKSwgKHMyLCBU
cnVlKV0pCisKKyAgICB0ZXN0MSA9IHMxLm1hbmlmZXN0X2l0ZW1zKClbMV1bMF0KKworICAgIHMx
XzEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjEiKjQwLCBpdGVtLk1hbnVhbFRlc3Qp
CisKKyAgICBtLnVwZGF0ZShbKHMxXzEucmVsX3BhdGgsIEZhbHNlKV0pCisKKyAgICBhc3NlcnQg
bGlzdChtKSA9PSBbKCJ0ZXN0aGFybmVzcyIsIHRlc3QxLnBhdGgsIHt0ZXN0MX0pXQorCisKK2Rl
ZiB0ZXN0X3VwZGF0ZV9mcm9tX2pzb24oKToKKyAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3QoKQor
CisgICAgczEgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjAiKjQwLCBpdGVtLlRlc3Ro
YXJuZXNzVGVzdCkKKyAgICBzMiA9IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDIiLCAiMCIqNDAs
IGl0ZW0uVGVzdGhhcm5lc3NUZXN0KQorCisgICAgbS51cGRhdGUoWyhzMSwgVHJ1ZSksIChzMiwg
VHJ1ZSldKQorCisgICAganNvbl9zdHIgPSBtLnRvX2pzb24oKQorICAgIG0gPSBtYW5pZmVzdC5N
YW5pZmVzdC5mcm9tX2pzb24oIi8iLCBqc29uX3N0cikKKworICAgIG0udXBkYXRlKFsoczEsIFRy
dWUpXSkKKworICAgIHRlc3QxID0gczEubWFuaWZlc3RfaXRlbXMoKVsxXVswXQorCisgICAgYXNz
ZXJ0IGxpc3QobSkgPT0gWygidGVzdGhhcm5lc3MiLCB0ZXN0MS5wYXRoLCB7dGVzdDF9KV0KKwor
CitkZWYgdGVzdF91cGRhdGVfZnJvbV9qc29uX21vZGlmaWVkKCk6CisgICAgIyBDcmVhdGUgdGhl
IG9yaWdpbmFsIG1hbmlmZXN0CisgICAgbSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKKyAgICBzMSA9
IFNvdXJjZUZpbGVXaXRoVGVzdCgidGVzdDEiLCAiMCIqNDAsIGl0ZW0uVGVzdGhhcm5lc3NUZXN0
KQorICAgIG0udXBkYXRlKFsoczEsIFRydWUpXSkKKyAgICBqc29uX3N0ciA9IG0udG9fanNvbigp
CisKKyAgICAjIFJlbG9hZCBpdCBmcm9tIEpTT04KKyAgICBtID0gbWFuaWZlc3QuTWFuaWZlc3Qu
ZnJvbV9qc29uKCIvIiwganNvbl9zdHIpCisKKyAgICAjIFVwZGF0ZSBpdCB3aXRoIHRpbWVvdXQ9
ImxvbmciCisgICAgczIgPSBTb3VyY2VGaWxlV2l0aFRlc3QoInRlc3QxIiwgIjEiKjQwLCBpdGVt
LlRlc3RoYXJuZXNzVGVzdCwgdGltZW91dD0ibG9uZyIpCisgICAgbS51cGRhdGUoWyhzMiwgVHJ1
ZSldKQorICAgIGpzb25fc3RyID0gbS50b19qc29uKCkKKyAgICBhc3NlcnQganNvbl9zdHIgPT0g
eworICAgICAgICAnaXRlbXMnOiB7J3Rlc3RoYXJuZXNzJzogeyd0ZXN0MSc6IFsoJ3Rlc3QxJywg
eyJ0aW1lb3V0IjogImxvbmcifSldfX0sCisgICAgICAgICdwYXRocyc6IHsndGVzdDEnOiAoJzEx
MTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICd0ZXN0aGFybmVzcycpfSwKKyAgICAgICAgJ3VybF9iYXNlJzogJy8nLAor
ICAgICAgICAndmVyc2lvbic6IDYKKyAgICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3Rfc291
cmNlZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5CmluZGV4IDU3YTE3NWNhZTkx
M2EyNzNjNmJhNGViYmNjMTNkZDQ3NTcxZTQ5NzAuLjBhN2ExY2EwYjQxYTljMWI5NWZjZWEzMDk1
NGNlZmY0YmNjNzRhZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5CkBAIC0zNSw3ICszNSw3IEBAIGRlZiBpdGVt
cyhzKToKICAgICAiZm9vL3Rvb2xzL3Rlc3QuaHRtbCIsCiAgICAgImZvby9yZXNvdXJjZXMvdGVz
dC5odG1sIiwKICAgICAiZm9vL3N1cHBvcnQvdGVzdC5odG1sIiwKLSAgICAiZm9vL3Rlc3Qtc3Vw
cG9ydC5odG1sIiwKKyAgICAiZm9vL2Zvby1tYW51YWwuaHRtbC5oZWFkZXJzIiwKICAgICAiY3Nz
L2NvbW1vbi90ZXN0Lmh0bWwiLAogICAgICJjc3MvQ1NTMi9hcmNoaXZlL3Rlc3QuaHRtbCIsCiBd
KQpAQCAtNTUsNiArNTUsNyBAQCBkZWYgdGVzdF9uYW1lX2lzX25vbl90ZXN0KHJlbF9wYXRoKToK
ICAgICAiZm9vL2NzczIxL2FyY2hpdmUvdGVzdC5odG1sIiwKICAgICAiZm9vL0NTUzIvYXJjaGl2
ZS90ZXN0Lmh0bWwiLAogICAgICJjc3MvY3NzMjEvYXJjaGl2ZS90ZXN0Lmh0bWwiLAorICAgICJm
b28vdGVzdC1zdXBwb3J0Lmh0bWwiLAogXSkKIGRlZiB0ZXN0X25vdF9uYW1lX2lzX25vbl90ZXN0
KHJlbF9wYXRoKToKICAgICBzID0gY3JlYXRlKHJlbF9wYXRoKQpAQCAtNjQsNiArNjUsNyBAQCBk
ZWYgdGVzdF9ub3RfbmFtZV9pc19ub25fdGVzdChyZWxfcGF0aCk6CiAKIAogQHB5dGVzdC5tYXJr
LnBhcmFtZXRyaXplKCJyZWxfcGF0aCIsIFsKKyAgICAiZm9vL2Zvby1tYW51YWwuaHRtbCIsCiAg
ICAgImh0bWwvdGVzdC1tYW51YWwuaHRtbCIsCiAgICAgImh0bWwvdGVzdC1tYW51YWwueGh0bWwi
LAogICAgICJodG1sL3Rlc3QtbWFudWFsLmh0dHBzLmh0bWwiLApAQCAtNzY0LDMgKzc2Niw2OSBA
QCBkZWYgdGVzdF9zcGVjX2xpbmtzX3doaXRlc3BhY2UodXJsKToKICAgICBjb250ZW50ID0gYiI8
bGluayByZWw9aGVscCBocmVmPSclcyc+IiAlIHVybAogICAgIHMgPSBjcmVhdGUoImZvby90ZXN0
Lmh0bWwiLCBjb250ZW50KQogICAgIGFzc2VydCBzLnNwZWNfbGlua3MgPT0geyJodHRwOi8vZXhh
bXBsZS5jb20vIn0KKworCitkZWYgdGVzdF91cmxfYmFzZSgpOgorICAgIGNvbnRlbnRzID0gYiIi
Ii8vIE1FVEE6IGdsb2JhbD13aW5kb3csd29ya2VyCisvLyBNRVRBOiB2YXJpYW50PQorLy8gTUVU
QTogdmFyaWFudD0/d3NzCit0ZXN0KCkiIiIKKworICAgIHMgPSBTb3VyY2VGaWxlKCIvIiwgImh0
bWwvdGVzdC5hbnkuanMiLCAiL19mYWtlX2Jhc2UvIiwgY29udGVudHM9Y29udGVudHMpCisgICAg
aXRlbV90eXBlLCBpdGVtcyA9IHMubWFuaWZlc3RfaXRlbXMoKQorCisgICAgYXNzZXJ0IGl0ZW1f
dHlwZSA9PSAidGVzdGhhcm5lc3MiCisKKyAgICBhc3NlcnQgW2l0ZW0udXJsIGZvciBpdGVtIGlu
IGl0ZW1zXSA9PSBbdScvX2Zha2VfYmFzZS9odG1sL3Rlc3QuYW55Lmh0bWwnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1Jy9fZmFrZV9iYXNlL2h0bWwvdGVz
dC5hbnkuaHRtbD93c3MnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1Jy9fZmFrZV9iYXNlL2h0bWwvdGVzdC5hbnkuc2VydmljZXdvcmtlci5odG1sJywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdScvX2Zha2VfYmFzZS9o
dG1sL3Rlc3QuYW55LnNlcnZpY2V3b3JrZXIuaHRtbD93c3MnLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB1Jy9fZmFrZV9iYXNlL2h0bWwvdGVzdC5hbnkuc2hh
cmVkd29ya2VyLmh0bWwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB1Jy9fZmFrZV9iYXNlL2h0bWwvdGVzdC5hbnkuc2hhcmVkd29ya2VyLmh0bWw/d3NzJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdScvX2Zha2VfYmFz
ZS9odG1sL3Rlc3QuYW55Lndvcmtlci5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdScvX2Zha2VfYmFzZS9odG1sL3Rlc3QuYW55Lndvcmtlci5odG1s
P3dzcyddCisKKyAgICBhc3NlcnQgaXRlbXNbMF0udXJsX2Jhc2UgPT0gIi9fZmFrZV9iYXNlLyIK
KworCitAcHl0ZXN0Lm1hcmsucGFyYW1ldHJpemUoImZ1enp5LCBleHBlY3RlZCIsIFsKKyAgICAo
YiJyZWYuaHRtbDoxOzIwMCIsIHsoIi9mb28vdGVzdC5odG1sIiwgIi9mb28vcmVmLmh0bWwiLCAi
PT0iKTogW1sxLCAxXSwgWzIwMCwgMjAwXV19KSwKKyAgICAoYiJyZWYuaHRtbDowLTE7MTAwLTIw
MCIsIHsoIi9mb28vdGVzdC5odG1sIiwgIi9mb28vcmVmLmh0bWwiLCAiPT0iKTogW1swLCAxXSwg
WzEwMCwgMjAwXV19KSwKKyAgICAoYiIwLTE7MTAwLTIwMCIsIHtOb25lOiBbWzAsMV0sIFsxMDAs
IDIwMF1dfSksCisgICAgKGIibWF4RGlmZmVyZW5jZT0xO3RvdGFsUGl4ZWxzPTIwMCIsIHtOb25l
OiBbWzEsIDFdLCBbMjAwLCAyMDBdXX0pLAorICAgIChiInRvdGFsUGl4ZWxzPTIwMDttYXhEaWZm
ZXJlbmNlPTEiLCB7Tm9uZTogW1sxLCAxXSwgWzIwMCwgMjAwXV19KSwKKyAgICAoYiJ0b3RhbFBp
eGVscz0yMDA7MSIsIHtOb25lOiBbWzEsIDFdLCBbMjAwLCAyMDBdXX0pLAorICAgIChiIm1heERp
ZmZlcmVuY2U9MTsyMDAiLCB7Tm9uZTogW1sxLCAxXSwgWzIwMCwgMjAwXV19KSxdKQorZGVmIHRl
c3RfcmVmdGVzdF9mdXp6eShmdXp6eSwgZXhwZWN0ZWQpOgorICAgIGNvbnRlbnQgPSBiIiIiPGxp
bmsgcmVsPW1hdGNoIGhyZWY9cmVmLmh0bWw+Cis8bWV0YSBuYW1lPWZ1enp5IGNvbnRlbnQ9IiVz
Ij4KKyIiIiAlIGZ1enp5CisKKyAgICBzID0gY3JlYXRlKCJmb28vdGVzdC5odG1sIiwgY29udGVu
dCkKKworICAgIGFzc2VydCBzLmNvbnRlbnRfaXNfcmVmX25vZGUKKyAgICBhc3NlcnQgcy5mdXp6
eSA9PSBleHBlY3RlZAorCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgiZnV6enksIGV4cGVj
dGVkIiwgWworICAgIChbYiIxOzIwMCJdLCB7Tm9uZTogW1sxLCAxXSwgWzIwMCwgMjAwXV19KSwK
KyAgICAoW2IicmVmLTIuaHRtbDowLTE7MTAwLTIwMCJdLCB7KCIvZm9vL3Rlc3QuaHRtbCIsICIv
Zm9vL3JlZi0yLmh0bWwiLCAiPT0iKTogW1swLCAxXSwgWzEwMCwgMjAwXV19KSwKKyAgICAoW2Ii
MTsyMDAiLCBiInJlZi0yLmh0bWw6MC0xOzEwMC0yMDAiXSwKKyAgICAge05vbmU6IFtbMSwgMV0s
IFsyMDAsIDIwMF1dLAorICAgICAgKCIvZm9vL3Rlc3QuaHRtbCIsICIvZm9vL3JlZi0yLmh0bWwi
LCAiPT0iKTogW1swLDFdLCBbMTAwLCAyMDBdXX0pXSkKK2RlZiB0ZXN0X3JlZnRlc3RfZnV6enlf
bXVsdGkoZnV6enksIGV4cGVjdGVkKToKKyAgICBjb250ZW50ID0gYiIiIjxsaW5rIHJlbD1tYXRj
aCBocmVmPXJlZi0xLmh0bWw+Cis8bGluayByZWw9bWF0Y2ggaHJlZj1yZWYtMi5odG1sPgorIiIi
CisgICAgZm9yIGl0ZW0gaW4gZnV6enk6CisgICAgICAgIGNvbnRlbnQgKz0gYidcbjxtZXRhIG5h
bWU9ZnV6enkgY29udGVudD0iJXMiPicgJSBpdGVtCisKKyAgICBzID0gY3JlYXRlKCJmb28vdGVz
dC5odG1sIiwgY29udGVudCkKKworICAgIGFzc2VydCBzLmNvbnRlbnRfaXNfcmVmX25vZGUKKyAg
ICBhc3NlcnQgcy5mdXp6eSA9PSBleHBlY3RlZAorCisKK2RlZiB0ZXN0X2hhc2goKToKKyAgICBz
ID0gU291cmNlRmlsZSgiLyIsICJmb28iLCAiLyIsIGNvbnRlbnRzPWIiSGVsbG8sIFdvcmxkISIp
CisgICAgYXNzZXJ0IGIiYjQ1ZWY2ZmVjODk1MThkMzE0ZjU0NmZkNmMzMDI1MzY3YjcyMTY4NCIg
PT0gcy5oYXNoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy93
M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWYyMGFjODQ0NmZm
ZmQxMTZjODVkYTVhNzcwNWQzYzI1NWQ5YTA2ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMv
dGVzdF9YTUxQYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Rlc3RzL3Rlc3RfaXRlbS5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9t
YW5pZmVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvbWFuaWZlc3QvdGVzdHMvdGVzdF9zb3VyY2VmaWxlLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Vw
ZGF0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvbWFuaWZlc3QvdXBkYXRlLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5k
ZXggOTkyM2NjNWZlNjI5NTVkZWU2N2Y5NTg2YjcyMTkyMzUxODQ4NzdhNC4uYmZiYWFmODk3MTI2
ZDhlZWNhNjlkY2VmOTRiYjMxMzA4ODk3ZmRlMgotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3Vw
ZGF0ZS5weQpAQCAtMiw3ICsyLDcgQEAKIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IG9zCiAKLWlt
cG9ydCBtYW5pZmVzdAorZnJvbSAuIGltcG9ydCBtYW5pZmVzdAogZnJvbSAuIGltcG9ydCB2Y3MK
IGZyb20gLmxvZyBpbXBvcnQgZ2V0X2xvZ2dlcgogZnJvbSAuZG93bmxvYWQgaW1wb3J0IGRvd25s
b2FkX2Zyb21fZ2l0aHViCkBAIC0xMyw0OSArMTMsNTQgQEAgd3B0X3Jvb3QgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKIAogbG9nZ2Vy
ID0gZ2V0X2xvZ2dlcigpCiAKLWRlZiB1cGRhdGUodGVzdHNfcm9vdCwgbWFuaWZlc3QsIHdvcmtp
bmdfY29weT1GYWxzZSk6CitNWVBZID0gRmFsc2UKK2lmIE1ZUFk6CisgICAgIyBNWVBZIGlzIHNl
dCB0byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHkuCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEFu
eQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBPcHRpb25hbAorICAgIGZyb20gLm1hbmlmZXN0IGlt
cG9ydCBNYW5pZmVzdCAgIyBhdm9pZCBjeWNsaWMgaW1wb3J0CisKKworZGVmIHVwZGF0ZSh0ZXN0
c19yb290LCAgIyB0eXBlOiBzdHIKKyAgICAgICAgICAgbWFuaWZlc3QsICAjIHR5cGU6IE1hbmlm
ZXN0CisgICAgICAgICAgIG1hbmlmZXN0X3BhdGg9Tm9uZSwgICMgdHlwZTogT3B0aW9uYWxbc3Ry
XQorICAgICAgICAgICB3b3JraW5nX2NvcHk9VHJ1ZSwgICMgdHlwZTogYm9vbAorICAgICAgICAg
ICBjYWNoZV9yb290PU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW3N0cl0KKyAgICAgICAgICAgcmVi
dWlsZD1GYWxzZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgICk6CisgICAgIyB0eXBlOiAoLi4u
KSAtPiBib29sCisgICAgbG9nZ2VyLndhcm5pbmcoIkRlcHJlY2F0ZWQ7IHVzZSBtYW5pZmVzdC5s
b2FkX2FuZF91cGRhdGUgaW5zdGVhZCIpCiAgICAgbG9nZ2VyLmluZm8oIlVwZGF0aW5nIG1hbmlm
ZXN0IikKLSAgICB0cmVlID0gTm9uZQotICAgIGlmIG5vdCB3b3JraW5nX2NvcHk6Ci0gICAgICAg
IHRyZWUgPSB2Y3MuR2l0LmZvcl9wYXRoKHRlc3RzX3Jvb3QsIG1hbmlmZXN0LnVybF9iYXNlKQot
ICAgIGlmIHRyZWUgaXMgTm9uZToKLSAgICAgICAgdHJlZSA9IHZjcy5GaWxlU3lzdGVtKHRlc3Rz
X3Jvb3QsIG1hbmlmZXN0LnVybF9iYXNlKQogCisgICAgdHJlZSA9IHZjcy5nZXRfdHJlZSh0ZXN0
c19yb290LCBtYW5pZmVzdCwgbWFuaWZlc3RfcGF0aCwgY2FjaGVfcm9vdCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHdvcmtpbmdfY29weSwgcmVidWlsZCkKICAgICByZXR1cm4gbWFuaWZlc3Qu
dXBkYXRlKHRyZWUpCiAKIAogZGVmIHVwZGF0ZV9mcm9tX2NsaSgqKmt3YXJncyk6CisgICAgIyB0
eXBlOiAoKipBbnkpIC0+IE5vbmUKICAgICB0ZXN0c19yb290ID0ga3dhcmdzWyJ0ZXN0c19yb290
Il0KICAgICBwYXRoID0ga3dhcmdzWyJwYXRoIl0KICAgICBhc3NlcnQgdGVzdHNfcm9vdCBpcyBu
b3QgTm9uZQogCi0gICAgbSA9IE5vbmUKLQotICAgIGlmIGt3YXJnc1siZG93bmxvYWQiXToKKyAg
ICBpZiBub3Qga3dhcmdzWyJyZWJ1aWxkIl0gYW5kIGt3YXJnc1siZG93bmxvYWQiXToKICAgICAg
ICAgZG93bmxvYWRfZnJvbV9naXRodWIocGF0aCwgdGVzdHNfcm9vdCkKIAotICAgIGlmIG5vdCBr
d2FyZ3MuZ2V0KCJyZWJ1aWxkIiwgRmFsc2UpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBt
ID0gbWFuaWZlc3QubG9hZCh0ZXN0c19yb290LCBwYXRoKQotICAgICAgICBleGNlcHQgbWFuaWZl
c3QuTWFuaWZlc3RWZXJzaW9uTWlzbWF0Y2g6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygiTWFu
aWZlc3QgdmVyc2lvbiBjaGFuZ2VkLCByZWJ1aWxkaW5nIikKLSAgICAgICAgICAgIG0gPSBOb25l
Ci0KLSAgICBpZiBtIGlzIE5vbmU6Ci0gICAgICAgIG0gPSBtYW5pZmVzdC5NYW5pZmVzdChrd2Fy
Z3NbInVybF9iYXNlIl0pCi0KLSAgICBjaGFuZ2VkID0gdXBkYXRlKHRlc3RzX3Jvb3QsCi0gICAg
ICAgICAgICAgICAgICAgICBtLAotICAgICAgICAgICAgICAgICAgICAgd29ya2luZ19jb3B5PWt3
YXJnc1sid29yayJdKQotICAgIGlmIGNoYW5nZWQ6Ci0gICAgICAgIG1hbmlmZXN0LndyaXRlKG0s
IHBhdGgpCisgICAgbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlKHRlc3RzX3Jvb3QsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGt3YXJnc1sidXJsX2Jhc2UiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRl
PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYnVpbGQ9a3dhcmdzWyJyZWJ1
aWxkIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9a3dhcmdzWyJj
YWNoZV9yb290Il0pCiAKIAogZGVmIGFic19wYXRoKHBhdGgpOgorICAgICMgdHlwZTogKHN0cikg
LT4gc3RyCiAgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmV4cGFuZHVzZXIocGF0
aCkpCiAKIAogZGVmIGNyZWF0ZV9wYXJzZXIoKToKKyAgICAjIHR5cGU6ICgpIC0+IGFyZ3BhcnNl
LkFyZ3VtZW50UGFyc2VyCiAgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQog
ICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItcCIsICItLXBhdGgiLCB0eXBlPWFi
c19wYXRoLCBoZWxwPSJQYXRoIHRvIG1hbmlmZXN0IGZpbGUuIikKQEAgLTY0LDM3ICs2OSwyNyBA
QCBkZWYgY3JlYXRlX3BhcnNlcigpOgogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAg
ICItciIsICItLXJlYnVpbGQiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNlLAog
ICAgICAgICBoZWxwPSJGb3JjZSBhIGZ1bGwgcmVidWlsZCBvZiB0aGUgbWFuaWZlc3QuIikKLSAg
ICBwYXJzZXIuYWRkX2FyZ3VtZW50KAotICAgICAgICAiLS13b3JrIiwgYWN0aW9uPSJzdG9yZV90
cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgaGVscD0iQnVpbGQgZnJvbSB0aGUgd29ya2lu
ZyB0cmVlIHJhdGhlciB0aGFuIHRoZSBsYXRlc3QgY29tbWl0IikKICAgICBwYXJzZXIuYWRkX2Fy
Z3VtZW50KAogICAgICAgICAiLS11cmwtYmFzZSIsIGFjdGlvbj0ic3RvcmUiLCBkZWZhdWx0PSIv
IiwKICAgICAgICAgaGVscD0iQmFzZSB1cmwgdG8gdXNlIGFzIHRoZSBtb3VudCBwb2ludCBmb3Ig
dGVzdHMgaW4gdGhpcyBtYW5pZmVzdC4iKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAg
ICAgICItLW5vLWRvd25sb2FkIiwgZGVzdD0iZG93bmxvYWQiLCBhY3Rpb249InN0b3JlX2ZhbHNl
IiwgZGVmYXVsdD1UcnVlLAogICAgICAgICBoZWxwPSJOZXZlciBhdHRlbXB0IHRvIGRvd25sb2Fk
IHRoZSBtYW5pZmVzdC4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICItLWNh
Y2hlLXJvb3QiLCBhY3Rpb249InN0b3JlIiwgZGVmYXVsdD1vcy5wYXRoLmpvaW4od3B0X3Jvb3Qs
ICIud3B0Y2FjaGUiKSwKKyAgICAgICAgaGVscD0iUGF0aCBpbiB3aGljaCB0byBzdG9yZSBhbnkg
Y2FjaGVzIChkZWZhdWx0IDx0ZXN0c19yb290Pi8ud3B0Y2FjaGUvKSIpCiAgICAgcmV0dXJuIHBh
cnNlcgogCiAKLWRlZiBmaW5kX3RvcF9yZXBvKCk6Ci0gICAgcGF0aCA9IGhlcmUKLSAgICBydiA9
IE5vbmUKLSAgICB3aGlsZSBwYXRoICE9ICIvIjoKLSAgICAgICAgaWYgdmNzLmlzX2dpdF9yZXBv
KHBhdGgpOgotICAgICAgICAgICAgcnYgPSBwYXRoCi0gICAgICAgIHBhdGggPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKHBhdGgsIG9zLnBhcmRpcikpCi0KLSAgICByZXR1cm4gcnYKLQot
Ci1kZWYgcnVuKCoqa3dhcmdzKToKK2RlZiBydW4oKmFyZ3MsICoqa3dhcmdzKToKKyAgICAjIHR5
cGU6ICgqQW55LCAqKkFueSkgLT4gTm9uZQogICAgIGlmIGt3YXJnc1sicGF0aCJdIGlzIE5vbmU6
CiAgICAgICAgIGt3YXJnc1sicGF0aCJdID0gb3MucGF0aC5qb2luKGt3YXJnc1sidGVzdHNfcm9v
dCJdLCAiTUFOSUZFU1QuanNvbiIpCi0KICAgICB1cGRhdGVfZnJvbV9jbGkoKiprd2FyZ3MpCiAK
IAogZGVmIG1haW4oKToKKyAgICAjIHR5cGU6ICgpIC0+IE5vbmUKICAgICBvcHRzID0gY3JlYXRl
X3BhcnNlcigpLnBhcnNlX2FyZ3MoKQogCiAgICAgcnVuKCoqdmFycyhvcHRzKSkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFu
aWZlc3QvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3V0aWxzLnB5CmluZGV4IGQ5YmU3NTBlNDE2OTM1NTUwZTQ0NDI4
MTJiNTI1MzFjNzA5MTkwYmQuLjJlZWQ3OWY0Mjc5ZDBlYzc4YzY5M2Y2MzJiOTZlMzZjZTNjOTZm
YTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvbWFuaWZlc3QvdXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91dGlscy5weQpAQCAtMSwxMCArMSwz
MCBAQAotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgb3MKK2ltcG9ydCBwbGF0Zm9ybQoraW1wb3J0
IHN1YnByb2Nlc3MKIAogZnJvbSBzaXggaW1wb3J0IEJ5dGVzSU8KIAorTVlQWSA9IEZhbHNlCitp
ZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1ZSB3aGVuIHJ1biB1bmRlciBNeXB5Lgor
ICAgIGZyb20gdHlwaW5nIGltcG9ydCBUZXh0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IENhbGxh
YmxlCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEFueVN0cgorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBBbnkKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgQmluYXJ5SU8KKyAgICBmcm9tIHR5cGluZyBp
bXBvcnQgR2VuZXJpYworICAgIGZyb20gdHlwaW5nIGltcG9ydCBUeXBlVmFyCisgICAgZnJvbSB0
eXBpbmcgaW1wb3J0IE9wdGlvbmFsCisgICAgVCA9IFR5cGVWYXIoIlQiKQorZWxzZToKKyAgICAj
IGV3dywgZXd3LCBld3d3dworICAgIEdlbmVyaWMgPSB7fQorICAgIFQgPSBvYmplY3QoKQorICAg
IEdlbmVyaWNbVF0gPSBvYmplY3QKKwogZGVmIHJlbF9wYXRoX3RvX3VybChyZWxfcGF0aCwgdXJs
X2Jhc2U9Ii8iKToKLSAgICBhc3NlcnQgbm90IG9zLnBhdGguaXNhYnMocmVsX3BhdGgpCisgICAg
IyB0eXBlOiAoYnl0ZXMsIFRleHQpIC0+IFRleHQKKyAgICBhc3NlcnQgbm90IG9zLnBhdGguaXNh
YnMocmVsX3BhdGgpLCByZWxfcGF0aAogICAgIGlmIHVybF9iYXNlWzBdICE9ICIvIjoKICAgICAg
ICAgdXJsX2Jhc2UgPSAiLyIgKyB1cmxfYmFzZQogICAgIGlmIHVybF9iYXNlWy0xXSAhPSAiLyI6
CkBAIC0xMywzOSArMzMsNzQgQEAgZGVmIHJlbF9wYXRoX3RvX3VybChyZWxfcGF0aCwgdXJsX2Jh
c2U9Ii8iKToKIAogCiBkZWYgZnJvbV9vc19wYXRoKHBhdGgpOgorICAgICMgdHlwZTogKEFueVN0
cikgLT4gQW55U3RyCiAgICAgYXNzZXJ0IG9zLnBhdGguc2VwID09ICIvIiBvciBwbGF0Zm9ybS5z
eXN0ZW0oKSA9PSAiV2luZG93cyIKLSAgICBydiA9IHBhdGgucmVwbGFjZShvcy5wYXRoLnNlcCwg
Ii8iKQorICAgIGlmICIvIiA9PSBvcy5wYXRoLnNlcDoKKyAgICAgICAgcnYgPSBwYXRoCisgICAg
ZWxzZToKKyAgICAgICAgcnYgPSBwYXRoLnJlcGxhY2Uob3MucGF0aC5zZXAsICIvIikKICAgICBp
ZiAiXFwiIGluIHJ2OgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJwYXRoIGNvbnRhaW5zIFxc
IHdoZW4gc2VwYXJhdG9yIGlzICVzIiAlIG9zLnBhdGguc2VwKQogICAgIHJldHVybiBydgogCiAK
IGRlZiB0b19vc19wYXRoKHBhdGgpOgorICAgICMgdHlwZTogKEFueVN0cikgLT4gQW55U3RyCiAg
ICAgYXNzZXJ0IG9zLnBhdGguc2VwID09ICIvIiBvciBwbGF0Zm9ybS5zeXN0ZW0oKSA9PSAiV2lu
ZG93cyIKICAgICBpZiAiXFwiIGluIHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5v
cm1hbGlzZWQgcGF0aCBjb250YWlucyBcXCIpCisgICAgaWYgIi8iID09IG9zLnBhdGguc2VwOgor
ICAgICAgICByZXR1cm4gcGF0aAogICAgIHJldHVybiBwYXRoLnJlcGxhY2UoIi8iLCBvcy5wYXRo
LnNlcCkKIAogCi1jbGFzcyBDb250ZXh0TWFuYWdlckJ5dGVzSU8oQnl0ZXNJTyk6CitkZWYgZ2l0
KHBhdGgpOgorICAgICMgdHlwZTogKGJ5dGVzKSAtPiBPcHRpb25hbFtDYWxsYWJsZVsuLi4sIGJ5
dGVzXV0KKyAgICBkZWYgZ2l0ZnVuYyhjbWQsICphcmdzKToKKyAgICAgICAgIyB0eXBlOiAoYnl0
ZXMsICpieXRlcykgLT4gYnl0ZXMKKyAgICAgICAgZnVsbF9jbWQgPSBbImdpdCIsIGNtZF0gKyBs
aXN0KGFyZ3MpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNo
ZWNrX291dHB1dChmdWxsX2NtZCwgY3dkPXBhdGgsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCkK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgaWYgcGxhdGZvcm0u
dW5hbWUoKVswXSA9PSAiV2luZG93cyIgYW5kIGlzaW5zdGFuY2UoZSwgV2luZG93c0Vycm9yKToK
KyAgICAgICAgICAgICAgICBmdWxsX2NtZFswXSA9ICJnaXQuYmF0IgorICAgICAgICAgICAgICAg
IHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChmdWxsX2NtZCwgY3dkPXBhdGgsIHN0ZGVy
cj1zdWJwcm9jZXNzLlNURE9VVCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAg
cmFpc2UKKworICAgIHRyeToKKyAgICAgICAgIyB0aGlzIG5lZWRzIHRvIGJlIGEgY29tbWFuZCB0
aGF0IGZhaWxzIGlmIHdlIGFyZW4ndCBpbiBhIGdpdCByZXBvCisgICAgICAgIGdpdGZ1bmMoInJl
di1wYXJzZSIsICItLXNob3ctdG9wbGV2ZWwiKQorICAgIGV4Y2VwdCAoc3VicHJvY2Vzcy5DYWxs
ZWRQcm9jZXNzRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICByZXR1cm4gTm9uZQorICAgIGVsc2U6
CisgICAgICAgIHJldHVybiBnaXRmdW5jCisKKworY2xhc3MgQ29udGV4dE1hbmFnZXJCeXRlc0lP
KEJ5dGVzSU8pOiAgIyB0eXBlOiBpZ25vcmUKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZgorICAgICAgICAjIHR5cGU6ICgpIC0+IEJpbmFyeUlPCisgICAgICAg
IHJldHVybiBzZWxmICAjIHR5cGU6IGlnbm9yZQogCiAgICAgZGVmIF9fZXhpdF9fKHNlbGYsICph
cmdzLCAqKmt3YXJncyk6CisgICAgICAgICMgdHlwZTogKCpBbnksICoqQW55KSAtPiBib29sCiAg
ICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICByZXR1cm4gVHJ1ZQogCiAKLWNsYXNzIGNhY2hl
ZF9wcm9wZXJ0eShvYmplY3QpOgorY2xhc3MgY2FjaGVkX3Byb3BlcnR5KEdlbmVyaWNbVF0pOgog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jKToKKyAgICAgICAgIyB0eXBlOiAoQ2FsbGFibGVb
W0FueV0sIFRdKSAtPiBOb25lCiAgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKICAgICAgICAgc2Vs
Zi5fX2RvY19fID0gZ2V0YXR0cihmdW5jLCAiX19kb2NfXyIpCiAgICAgICAgIHNlbGYubmFtZSA9
IGZ1bmMuX19uYW1lX18KIAogICAgIGRlZiBfX2dldF9fKHNlbGYsIG9iaiwgY2xzPU5vbmUpOgor
ICAgICAgICAjIHR5cGU6IChBbnksIE9wdGlvbmFsW3R5cGVdKSAtPiBUCiAgICAgICAgIGlmIG9i
aiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIHJldHVybiBz
ZWxmICAjIHR5cGU6IGlnbm9yZQogCi0gICAgICAgIGlmIHNlbGYubmFtZSBub3QgaW4gb2JqLl9f
ZGljdF9fOgotICAgICAgICAgICAgb2JqLl9fZGljdF9fW3NlbGYubmFtZV0gPSBzZWxmLmZ1bmMo
b2JqKQotICAgICAgICAgICAgb2JqLl9fZGljdF9fLnNldGRlZmF1bHQoIl9fY2FjaGVkX3Byb3Bl
cnRpZXNfXyIsIHNldCgpKS5hZGQoc2VsZi5uYW1lKQotICAgICAgICByZXR1cm4gb2JqLl9fZGlj
dF9fW3NlbGYubmFtZV0KKyAgICAgICAgIyB3ZSBjYW4gdW5jb25kaXRpb25hbGx5IGFzc2lnbiBh
cyBuZXh0IHRpbWUgdGhpcyB3b24ndCBiZSBjYWxsZWQKKyAgICAgICAgYXNzZXJ0IHNlbGYubmFt
ZSBub3QgaW4gb2JqLl9fZGljdF9fCisgICAgICAgIHJ2ID0gb2JqLl9fZGljdF9fW3NlbGYubmFt
ZV0gPSBzZWxmLmZ1bmMob2JqKQorICAgICAgICByZXR1cm4gcnYKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNz
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9t
YW5pZmVzdC92Y3MucHkKaW5kZXggNDJlOTg2MzcxMmY0MWQ1Y2ZkZjkyNzk1MTM5MzFiMWNiZTQ3
Zjk4Yi4uZDRmNDdmNmJmMGFiMzVjOWRhNTE0ZWRiNGM0Yjc3OTY0NGZmOTBkZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC92Y3MucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9tYW5pZmVzdC92Y3MucHkKQEAgLTEsOTYgKzEsMzE2IEBACitpbXBvcnQgYWJj
CitpbXBvcnQganNvbgogaW1wb3J0IG9zCi1pbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN0YXQK
K2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBN
dXRhYmxlTWFwcGluZworCitmcm9tIHNpeCBpbXBvcnQgd2l0aF9tZXRhY2xhc3MsIFBZMgogCiBm
cm9tIC5zb3VyY2VmaWxlIGltcG9ydCBTb3VyY2VGaWxlCitmcm9tIC51dGlscyBpbXBvcnQgZ2l0
CiAKK3RyeToKKyAgICBmcm9tIC4uZ2l0aWdub3JlIGltcG9ydCBnaXRpZ25vcmUKK2V4Y2VwdCBW
YWx1ZUVycm9yOgorICAgICMgcmVsYXRpdmUgaW1wb3J0IGJleW9uZCB0b3BsZXZlbCB0aHJvd3Mg
KlZhbHVlRXJyb3IqIQorICAgIGZyb20gZ2l0aWdub3JlIGltcG9ydCBnaXRpZ25vcmUgICMgdHlw
ZTogaWdub3JlCiAKLWNsYXNzIEdpdChvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXBvX3Jvb3QsIHVybF9iYXNlKToKLSAgICAgICAgc2VsZi5yb290ID0gb3MucGF0aC5hYnNwYXRo
KHJlcG9fcm9vdCkKLSAgICAgICAgc2VsZi5naXQgPSBHaXQuZ2V0X2Z1bmMocmVwb19yb290KQot
ICAgICAgICBzZWxmLnVybF9iYXNlID0gdXJsX2Jhc2UKIAotICAgIEBzdGF0aWNtZXRob2QKLSAg
ICBkZWYgZ2V0X2Z1bmMocmVwb19wYXRoKToKLSAgICAgICAgZGVmIGdpdChjbWQsICphcmdzKToK
LSAgICAgICAgICAgIGZ1bGxfY21kID0gWyJnaXQiLCBjbWRdICsgbGlzdChhcmdzKQotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1
dChmdWxsX2NtZCwgY3dkPXJlcG9fcGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAg
ICAgICAgICAgZXhjZXB0IFdpbmRvd3NFcnJvcjoKLSAgICAgICAgICAgICAgICBmdWxsX2NtZFsw
XSA9ICJnaXQuYmF0IgotICAgICAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291
dHB1dChmdWxsX2NtZCwgY3dkPXJlcG9fcGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQot
ICAgICAgICByZXR1cm4gZ2l0Ci0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgZm9yX3BhdGgo
Y2xzLCBwYXRoLCB1cmxfYmFzZSk6Ci0gICAgICAgIGdpdCA9IEdpdC5nZXRfZnVuYyhwYXRoKQor
TVlQWSA9IEZhbHNlCitpZiBNWVBZOgorICAgICMgTVlQWSBpcyBzZXQgdG8gVHJ1ZSB3aGVuIHJ1
biB1bmRlciBNeXB5LgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBEaWN0LCBPcHRpb25hbCwgTGlz
dCwgU2V0LCBUZXh0LCBJdGVyYWJsZSwgQW55LCBUdXBsZSwgVW5pb24sIEl0ZXJhdG9yCisgICAg
ZnJvbSAubWFuaWZlc3QgaW1wb3J0IE1hbmlmZXN0ICAjIGN5Y2xpYyBpbXBvcnQgdW5kZXIgTVlQ
WSBndWFyZAorICAgIGlmIFBZMjoKKyAgICAgICAgc3RhdF9yZXN1bHQgPSBBbnkKKyAgICBlbHNl
OgorICAgICAgICBzdGF0X3Jlc3VsdCA9IG9zLnN0YXRfcmVzdWx0CisKKworZGVmIGdldF90cmVl
KHRlc3RzX3Jvb3QsIG1hbmlmZXN0LCBtYW5pZmVzdF9wYXRoLCBjYWNoZV9yb290LAorICAgICAg
ICAgICAgIHdvcmtpbmdfY29weT1UcnVlLCByZWJ1aWxkPUZhbHNlKToKKyAgICAjIHR5cGU6IChi
eXRlcywgTWFuaWZlc3QsIE9wdGlvbmFsW2J5dGVzXSwgT3B0aW9uYWxbYnl0ZXNdLCBib29sLCBi
b29sKSAtPiBGaWxlU3lzdGVtCisgICAgdHJlZSA9IE5vbmUKKyAgICBpZiBjYWNoZV9yb290IGlz
IE5vbmU6CisgICAgICAgIGNhY2hlX3Jvb3QgPSBvcy5wYXRoLmpvaW4odGVzdHNfcm9vdCwgYiIu
d3B0Y2FjaGUiKQorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhjYWNoZV9yb290KToKICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIGNscyhnaXQoInJldi1wYXJzZSIsICItLXNob3ct
dG9wbGV2ZWwiKS5yc3RyaXAoKSwgdXJsX2Jhc2UpCi0gICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNz
LkNhbGxlZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAg
ICBvcy5tYWtlZGlycyhjYWNoZV9yb290KQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAg
ICAgICAgIGNhY2hlX3Jvb3QgPSBOb25lCisKKyAgICBpZiBub3Qgd29ya2luZ19jb3B5OgorICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3b3JraW5nX2NvcHk9RmFsc2UgdW5zdXBwb3J0ZWQiKQor
CisgICAgaWYgdHJlZSBpcyBOb25lOgorICAgICAgICB0cmVlID0gRmlsZVN5c3RlbSh0ZXN0c19y
b290LAorICAgICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdC51cmxfYmFzZSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfcGF0aD1tYW5pZmVzdF9wYXRoLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICBjYWNoZV9wYXRoPWNhY2hlX3Jvb3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlYnVpbGQ9cmVidWlsZCkKKyAgICByZXR1cm4gdHJlZQorCisKK2NsYXNz
IEdpdEhhc2hlcihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICAg
ICAgIyB0eXBlOiAoYnl0ZXMpIC0+IE5vbmUKKyAgICAgICAgc2VsZi5naXQgPSBnaXQocGF0aCkK
IAogICAgIGRlZiBfbG9jYWxfY2hhbmdlcyhzZWxmKToKLSAgICAgICAgY2hhbmdlcyA9IHt9Ci0g
ICAgICAgIGNtZCA9IFsic3RhdHVzIiwgIi16IiwgIi0taWdub3JlLXN1Ym1vZHVsZXM9YWxsIl0K
KyAgICAgICAgIyB0eXBlOiAoKSAtPiBTZXRbYnl0ZXNdCisgICAgICAgICIiImdldCBhIHNldCBv
ZiBmaWxlcyB3aGljaCBoYXZlIGNoYW5nZWQgYmV0d2VlbiBIRUFEIGFuZCB3b3JraW5nIGNvcHki
IiIKKyAgICAgICAgYXNzZXJ0IHNlbGYuZ2l0IGlzIG5vdCBOb25lCisgICAgICAgICMgbm90ZSB0
aGF0IGdpdCBydW5zIHRoZSBjb21tYW5kIHdpdGggdGVzdHNfcm9vdCBhcyB0aGUgY3dkLCB3aGlj
aCBtYXkKKyAgICAgICAgIyBub3QgYmUgdGhlIHJvb3Qgb2YgdGhlIGdpdCByZXBvIChlLmcuLCB3
aXRoaW4gYSBicm93c2VyIHJlcG8pCisgICAgICAgIGNtZCA9IFtiImRpZmYtaW5kZXgiLCBiIi0t
cmVsYXRpdmUiLCBiIi0tbm8tcmVuYW1lcyIsIGIiLS1uYW1lLW9ubHkiLCBiIi16IiwgYiJIRUFE
Il0KICAgICAgICAgZGF0YSA9IHNlbGYuZ2l0KCpjbWQpCisgICAgICAgIHJldHVybiBzZXQoZGF0
YS5zcGxpdChiIlwwIikpCiAKLSAgICAgICAgaWYgZGF0YSA9PSAiIjoKLSAgICAgICAgICAgIHJl
dHVybiBjaGFuZ2VzCisgICAgZGVmIGhhc2hfY2FjaGUoc2VsZik6CisgICAgICAgICMgdHlwZTog
KCkgLT4gRGljdFtieXRlcywgT3B0aW9uYWxbYnl0ZXNdXQorICAgICAgICAiIiIKKyAgICAgICAg
QSBkaWN0IG9mIHJlbF9wYXRoIC0+IGN1cnJlbnQgZ2l0IG9iamVjdCBpZCBpZiB0aGUgd29ya2lu
ZyB0cmVlIG1hdGNoZXMgSEVBRCBlbHNlIE5vbmUKKyAgICAgICAgIiIiCisgICAgICAgIGhhc2hf
Y2FjaGUgPSB7fSAgIyB0eXBlOiBEaWN0W2J5dGVzLCBPcHRpb25hbFtieXRlc11dCiAKLSAgICAg
ICAgcmVuYW1lX2RhdGEgPSBOb25lCi0gICAgICAgIGZvciBlbnRyeSBpbiBkYXRhLnNwbGl0KCJc
MCIpWzotMV06Ci0gICAgICAgICAgICBpZiByZW5hbWVfZGF0YSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICBzdGF0dXMsIHJlbF9wYXRoID0gZW50cnkuc3BsaXQoIiAiKQotICAgICAgICAg
ICAgICAgIGlmIHN0YXR1c1swXSA9PSAiUiI6Ci0gICAgICAgICAgICAgICAgICAgIHJlbmFtZV9k
YXRhID0gKHJlbF9wYXRoLCBzdGF0dXMpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICAgICAgY2hhbmdlc1tyZWxfcGF0aF0gPSAoc3RhdHVzLCBOb25lKQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICByZWxfcGF0aCA9IGVudHJ5Ci0gICAgICAgICAgICAg
ICAgY2hhbmdlc1tyZWxfcGF0aF0gPSByZW5hbWVfZGF0YQotICAgICAgICAgICAgICAgIHJlbmFt
ZV9kYXRhID0gTm9uZQotICAgICAgICByZXR1cm4gY2hhbmdlcworICAgICAgICBpZiBzZWxmLmdp
dCBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIGhhc2hfY2FjaGUKIAotICAgIGRlZiBfc2hv
d19maWxlKHNlbGYsIHBhdGgpOgotICAgICAgICBwYXRoID0gb3MucGF0aC5yZWxwYXRoKG9zLnBh
dGguYWJzcGF0aChwYXRoKSwgc2VsZi5yb290KQotICAgICAgICByZXR1cm4gc2VsZi5naXQoInNo
b3ciLCAiSEVBRDolcyIgJSBwYXRoKQotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAg
ICAjIG5vdGUgdGhhdCBnaXQgcnVucyB0aGUgY29tbWFuZCB3aXRoIHRlc3RzX3Jvb3QgYXMgdGhl
IGN3ZCwgd2hpY2ggbWF5CisgICAgICAgICMgbm90IGJlIHRoZSByb290IG9mIHRoZSBnaXQgcmVw
byAoZS5nLiwgd2l0aGluIGEgYnJvd3NlciByZXBvKQogICAgICAgICBjbWQgPSBbImxzLXRyZWUi
LCAiLXIiLCAiLXoiLCAiSEVBRCJdCiAgICAgICAgIGxvY2FsX2NoYW5nZXMgPSBzZWxmLl9sb2Nh
bF9jaGFuZ2VzKCkKLSAgICAgICAgZm9yIHJlc3VsdCBpbiBzZWxmLmdpdCgqY21kKS5zcGxpdCgi
XDAiKVs6LTFdOgotICAgICAgICAgICAgcmVsX3BhdGggPSByZXN1bHQuc3BsaXQoIlx0IilbLTFd
Ci0gICAgICAgICAgICBoYXNoID0gcmVzdWx0LnNwbGl0KClbMl0KLSAgICAgICAgICAgIGlmIG5v
dCBvcy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihzZWxmLnJvb3QsIHJlbF9wYXRoKSk6Ci0gICAg
ICAgICAgICAgICAgaWYgcmVsX3BhdGggaW4gbG9jYWxfY2hhbmdlczoKLSAgICAgICAgICAgICAg
ICAgICAgY29udGVudHMgPSBzZWxmLl9zaG93X2ZpbGUocmVsX3BhdGgpCi0gICAgICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29udGVudHMgPSBOb25lCi0gICAgICAgICAg
ICAgICAgeWllbGQgU291cmNlRmlsZShzZWxmLnJvb3QsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICByZWxfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYudXJsX2Jhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNoLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGVudHM9Y29udGVudHMpCisgICAgICAg
IGZvciByZXN1bHQgaW4gc2VsZi5naXQoKmNtZCkuc3BsaXQoYiJcMCIpWzotMV06ICAjIHR5cGU6
IGJ5dGVzCisgICAgICAgICAgICBkYXRhLCByZWxfcGF0aCA9IHJlc3VsdC5yc3BsaXQoYiJcdCIs
IDEpCisgICAgICAgICAgICBoYXNoX2NhY2hlW3JlbF9wYXRoXSA9IE5vbmUgaWYgcmVsX3BhdGgg
aW4gbG9jYWxfY2hhbmdlcyBlbHNlIGRhdGEuc3BsaXQoYiIgIiwgMylbMl0KKworICAgICAgICBy
ZXR1cm4gaGFzaF9jYWNoZQorCiAKIAogY2xhc3MgRmlsZVN5c3RlbShvYmplY3QpOgotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByb290LCB1cmxfYmFzZSk6Ci0gICAgICAgIHNlbGYucm9vdCA9IHJv
b3QKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdCwgdXJsX2Jhc2UsIGNhY2hlX3BhdGgsIG1h
bmlmZXN0X3BhdGg9Tm9uZSwgcmVidWlsZD1GYWxzZSk6CisgICAgICAgICMgdHlwZTogKGJ5dGVz
LCBUZXh0LCBPcHRpb25hbFtieXRlc10sIE9wdGlvbmFsW2J5dGVzXSwgYm9vbCkgLT4gTm9uZQor
ICAgICAgICBzZWxmLnJvb3QgPSBvcy5wYXRoLmFic3BhdGgocm9vdCkKICAgICAgICAgc2VsZi51
cmxfYmFzZSA9IHVybF9iYXNlCi0gICAgICAgIGZyb20gZ2l0aWdub3JlIGltcG9ydCBnaXRpZ25v
cmUKLSAgICAgICAgc2VsZi5wYXRoX2ZpbHRlciA9IGdpdGlnbm9yZS5QYXRoRmlsdGVyKHNlbGYu
cm9vdCwgZXh0cmFzPVsiLmdpdC8iXSkKKyAgICAgICAgc2VsZi5pZ25vcmVfY2FjaGUgPSBOb25l
CisgICAgICAgIHNlbGYubXRpbWVfY2FjaGUgPSBOb25lCisgICAgICAgIGlmIGNhY2hlX3BhdGgg
aXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBtYW5pZmVzdF9wYXRoIGlzIG5vdCBOb25lOgor
ICAgICAgICAgICAgICAgIHNlbGYubXRpbWVfY2FjaGUgPSBNdGltZUNhY2hlKGNhY2hlX3BhdGgs
IHJvb3QsIG1hbmlmZXN0X3BhdGgsIHJlYnVpbGQpCisgICAgICAgICAgICBpZiBnaXRpZ25vcmUu
aGFzX2lnbm9yZShyb290KToKKyAgICAgICAgICAgICAgICBzZWxmLmlnbm9yZV9jYWNoZSA9IEdp
dElnbm9yZUNhY2hlKGNhY2hlX3BhdGgsIHJvb3QsIHJlYnVpbGQpCisgICAgICAgIHNlbGYucGF0
aF9maWx0ZXIgPSBnaXRpZ25vcmUuUGF0aEZpbHRlcihzZWxmLnJvb3QsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYXM9WyIuZ2l0LyJdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGU9c2VsZi5p
Z25vcmVfY2FjaGUpCisgICAgICAgIGdpdCA9IEdpdEhhc2hlcihyb290KQorICAgICAgICBpZiBn
aXQgaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLmhhc2hfY2FjaGUgPSBnaXQuaGFzaF9j
YWNoZSgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmhhc2hfY2FjaGUgPSB7fQog
CiAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICBwYXRocyA9IHNlbGYuZ2V0X3BhdGhz
KCkKLSAgICAgICAgZm9yIHBhdGggaW4gcGF0aHM6Ci0gICAgICAgICAgICB5aWVsZCBTb3VyY2VG
aWxlKHNlbGYucm9vdCwgcGF0aCwgc2VsZi51cmxfYmFzZSkKLQotICAgIGRlZiBnZXRfcGF0aHMo
c2VsZik6Ci0gICAgICAgIGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndh
bGsoc2VsZi5yb290KToKLSAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiBmaWxlbmFtZXM6Ci0g
ICAgICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4oZGlycGF0
aCwgZmlsZW5hbWUpLCBzZWxmLnJvb3QpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5wYXRoX2Zp
bHRlcihwYXRoKToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgcGF0aAotCi0gICAgICAgICAg
ICBkaXJuYW1lc1s6XSA9IFtpdGVtIGZvciBpdGVtIGluIGRpcm5hbWVzIGlmIHNlbGYucGF0aF9m
aWx0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLnJlbHBhdGgob3MucGF0
aC5qb2luKGRpcnBhdGgsIGl0ZW0pLCBzZWxmLnJvb3QpICsgIi8iKV0KKyAgICAgICAgIyB0eXBl
OiAoKSAtPiBJdGVyYXRvcltUdXBsZVtVbmlvbltieXRlcywgU291cmNlRmlsZV0sIGJvb2xdXQor
ICAgICAgICBtdGltZV9jYWNoZSA9IHNlbGYubXRpbWVfY2FjaGUKKyAgICAgICAgZm9yIGRpcnBh
dGgsIGRpcm5hbWVzLCBmaWxlbmFtZXMgaW4gc2VsZi5wYXRoX2ZpbHRlcih3YWxrKHNlbGYucm9v
dCkpOgorICAgICAgICAgICAgZm9yIGZpbGVuYW1lLCBwYXRoX3N0YXQgaW4gZmlsZW5hbWVzOgor
ICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlycGF0aCwgZmlsZW5hbWUpCisg
ICAgICAgICAgICAgICAgaWYgbXRpbWVfY2FjaGUgaXMgTm9uZSBvciBtdGltZV9jYWNoZS51cGRh
dGVkKHBhdGgsIHBhdGhfc3RhdCk6CisgICAgICAgICAgICAgICAgICAgIGhhc2ggPSBzZWxmLmhh
c2hfY2FjaGUuZ2V0KHBhdGgsIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHlpZWxkIFNvdXJj
ZUZpbGUoc2VsZi5yb290LCBwYXRoLCBzZWxmLnVybF9iYXNlLCBoYXNoKSwgVHJ1ZQorICAgICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgsIEZhbHNlCisK
KyAgICBkZWYgZHVtcF9jYWNoZXMoc2VsZik6CisgICAgICAgICMgdHlwZTogKCkgLT4gTm9uZQor
ICAgICAgICBmb3IgY2FjaGUgaW4gW3NlbGYubXRpbWVfY2FjaGUsIHNlbGYuaWdub3JlX2NhY2hl
XToKKyAgICAgICAgICAgIGlmIGNhY2hlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNh
Y2hlLmR1bXAoKQorCisKK2NsYXNzIENhY2hlRmlsZSh3aXRoX21ldGFjbGFzcyhhYmMuQUJDTWV0
YSkpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjYWNoZV9yb290LCB0ZXN0c19yb290LCByZWJ1
aWxkPUZhbHNlKToKKyAgICAgICAgIyB0eXBlOiAoYnl0ZXMsIGJ5dGVzLCBib29sKSAtPiBOb25l
CisgICAgICAgIHNlbGYudGVzdHNfcm9vdCA9IHRlc3RzX3Jvb3QKKyAgICAgICAgaWYgbm90IG9z
LnBhdGguZXhpc3RzKGNhY2hlX3Jvb3QpOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoY2FjaGVf
cm9vdCkKKyAgICAgICAgc2VsZi5wYXRoID0gb3MucGF0aC5qb2luKGNhY2hlX3Jvb3QsIHNlbGYu
ZmlsZV9uYW1lKQorICAgICAgICBzZWxmLm1vZGlmaWVkID0gRmFsc2UKKyAgICAgICAgc2VsZi5k
YXRhID0gc2VsZi5sb2FkKHJlYnVpbGQpCisKKyAgICBAYWJjLmFic3RyYWN0cHJvcGVydHkKKyAg
ICBkZWYgZmlsZV9uYW1lKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IGJ5dGVzCisgICAg
ICAgIHBhc3MKKworICAgIGRlZiBkdW1wKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE5v
bmUKKyAgICAgICAgaWYgbm90IHNlbGYubW9kaWZpZWQ6CisgICAgICAgICAgICByZXR1cm4KKyAg
ICAgICAgd2l0aCBvcGVuKHNlbGYucGF0aCwgJ3cnKSBhcyBmOgorICAgICAgICAgICAganNvbi5k
dW1wKHNlbGYuZGF0YSwgZiwgaW5kZW50PTEpCisKKyAgICBkZWYgbG9hZChzZWxmLCByZWJ1aWxk
PUZhbHNlKToKKyAgICAgICAgIyB0eXBlOiAoYm9vbCkgLT4gRGljdFtBbnksIEFueV0KKyAgICAg
ICAgZGF0YSA9IHt9ICAjIHR5cGU6IERpY3RbQW55LCBBbnldCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIGlmIG5vdCByZWJ1aWxkOgorICAgICAgICAgICAgICAgIHdpdGggb3BlbihzZWxmLnBh
dGgsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAg
ICAgICAgICAgZGF0YSA9IGpzb24ubG9hZChmKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQg
VmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAg
ICBkYXRhID0gc2VsZi5jaGVja192YWxpZChkYXRhKQorICAgICAgICBleGNlcHQgSU9FcnJvcjoK
KyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBjaGVja192
YWxpZChzZWxmLCBkYXRhKToKKyAgICAgICAgIyB0eXBlOiAoRGljdFtBbnksIEFueV0pIC0+IERp
Y3RbQW55LCBBbnldCisgICAgICAgICIiIkNoZWNrIGlmIHRoZSBjYWNoZWQgZGF0YSBpcyB2YWxp
ZCBhbmQgcmV0dXJuIGFuIHVwZGF0ZWQgY29weSBvZiB0aGUKKyAgICAgICAgY2FjaGUgY29udGFp
bmluZyBvbmx5IGRhdGEgdGhhdCBjYW4gYmUgdXNlZC4iIiIKKyAgICAgICAgcmV0dXJuIGRhdGEK
KworCitjbGFzcyBNdGltZUNhY2hlKENhY2hlRmlsZSk6CisgICAgZmlsZV9uYW1lID0gYiJtdGlt
ZS5qc29uIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhY2hlX3Jvb3QsIHRlc3RzX3Jvb3Qs
IG1hbmlmZXN0X3BhdGgsIHJlYnVpbGQ9RmFsc2UpOgorICAgICAgICAjIHR5cGU6IChieXRlcywg
Ynl0ZXMsIGJ5dGVzLCBib29sKSAtPiBOb25lCisgICAgICAgIHNlbGYubWFuaWZlc3RfcGF0aCA9
IG1hbmlmZXN0X3BhdGgKKyAgICAgICAgc3VwZXIoTXRpbWVDYWNoZSwgc2VsZikuX19pbml0X18o
Y2FjaGVfcm9vdCwgdGVzdHNfcm9vdCwgcmVidWlsZCkKKworICAgIGRlZiB1cGRhdGVkKHNlbGYs
IHJlbF9wYXRoLCBzdGF0KToKKyAgICAgICAgIyB0eXBlOiAoYnl0ZXMsIHN0YXRfcmVzdWx0KSAt
PiBib29sCisgICAgICAgICIiIlJldHVybiBhIGJvb2xlYW4gaW5kaWNhdGluZyB3aGV0aGVyIHRo
ZSBmaWxlIGNoYW5nZWQgc2luY2UgdGhlIGNhY2hlIHdhcyBsYXN0IHVwZGF0ZWQuCisKKyAgICAg
ICAgVGhpcyBpbXBsaWNpdGx5IHVwZGF0ZXMgdGhlIGNhY2hlIHdpdGggdGhlIG5ldyBtdGltZSBk
YXRhLiIiIgorICAgICAgICBtdGltZSA9IHN0YXQuc3RfbXRpbWUKKyAgICAgICAgaWYgbXRpbWUg
IT0gc2VsZi5kYXRhLmdldChyZWxfcGF0aCk6CisgICAgICAgICAgICBzZWxmLm1vZGlmaWVkID0g
VHJ1ZQorICAgICAgICAgICAgc2VsZi5kYXRhW3JlbF9wYXRoXSA9IG10aW1lCisgICAgICAgICAg
ICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIGRlZiBjaGVja192YWxp
ZChzZWxmLCBkYXRhKToKKyAgICAgICAgIyB0eXBlOiAoRGljdFtBbnksIEFueV0pIC0+IERpY3Rb
QW55LCBBbnldCisgICAgICAgIGlmIGRhdGEuZ2V0KCIvdGVzdHNfcm9vdCIpICE9IHNlbGYudGVz
dHNfcm9vdDoKKyAgICAgICAgICAgIHNlbGYubW9kaWZpZWQgPSBUcnVlCisgICAgICAgIGVsc2U6
CisgICAgICAgICAgICBpZiBzZWxmLm1hbmlmZXN0X3BhdGggaXMgbm90IE5vbmUgYW5kIG9zLnBh
dGguZXhpc3RzKHNlbGYubWFuaWZlc3RfcGF0aCk6CisgICAgICAgICAgICAgICAgbXRpbWUgPSBv
cy5wYXRoLmdldG10aW1lKHNlbGYubWFuaWZlc3RfcGF0aCkKKyAgICAgICAgICAgICAgICBpZiBk
YXRhLmdldCgiL21hbmlmZXN0X3BhdGgiKSAhPSBbc2VsZi5tYW5pZmVzdF9wYXRoLCBtdGltZV06
CisgICAgICAgICAgICAgICAgICAgIHNlbGYubW9kaWZpZWQgPSBUcnVlCisgICAgICAgICAgICBl
bHNlOgorICAgICAgICAgICAgICAgIHNlbGYubW9kaWZpZWQgPSBUcnVlCisgICAgICAgIGlmIHNl
bGYubW9kaWZpZWQ6CisgICAgICAgICAgICBkYXRhID0ge30KKyAgICAgICAgICAgIGRhdGFbIi90
ZXN0c19yb290Il0gPSBzZWxmLnRlc3RzX3Jvb3QKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAg
IGRlZiBkdW1wKHNlbGYpOgorICAgICAgICAjIHR5cGU6ICgpIC0+IE5vbmUKKyAgICAgICAgaWYg
c2VsZi5tYW5pZmVzdF9wYXRoIGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
CisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLm1hbmlmZXN0X3BhdGgpOgorICAg
ICAgICAgICAgcmV0dXJuCisgICAgICAgIG10aW1lID0gb3MucGF0aC5nZXRtdGltZShzZWxmLm1h
bmlmZXN0X3BhdGgpCisgICAgICAgIHNlbGYuZGF0YVsiL21hbmlmZXN0X3BhdGgiXSA9IFtzZWxm
Lm1hbmlmZXN0X3BhdGgsIG10aW1lXQorICAgICAgICBzZWxmLmRhdGFbIi90ZXN0c19yb290Il0g
PSBzZWxmLnRlc3RzX3Jvb3QKKyAgICAgICAgc3VwZXIoTXRpbWVDYWNoZSwgc2VsZikuZHVtcCgp
CisKKworY2xhc3MgR2l0SWdub3JlQ2FjaGUoQ2FjaGVGaWxlLCBNdXRhYmxlTWFwcGluZyk6ICAj
IHR5cGU6IGlnbm9yZQorICAgIGZpbGVfbmFtZSA9IGIiZ2l0aWdub3JlLmpzb24iCisKKyAgICBk
ZWYgY2hlY2tfdmFsaWQoc2VsZiwgZGF0YSk6CisgICAgICAgICMgdHlwZTogKERpY3RbQW55LCBB
bnldKSAtPiBEaWN0W0FueSwgQW55XQorICAgICAgICBpZ25vcmVfcGF0aCA9IG9zLnBhdGguam9p
bihzZWxmLnRlc3RzX3Jvb3QsIGIiLmdpdGlnbm9yZSIpCisgICAgICAgIG10aW1lID0gb3MucGF0
aC5nZXRtdGltZShpZ25vcmVfcGF0aCkKKyAgICAgICAgaWYgZGF0YS5nZXQoYiIvZ2l0aWdub3Jl
X2ZpbGUiKSAhPSBbaWdub3JlX3BhdGgsIG10aW1lXToKKyAgICAgICAgICAgIHNlbGYubW9kaWZp
ZWQgPSBUcnVlCisgICAgICAgICAgICBkYXRhID0ge30KKyAgICAgICAgICAgIGRhdGFbYiIvZ2l0
aWdub3JlX2ZpbGUiXSA9IFtpZ25vcmVfcGF0aCwgbXRpbWVdCisgICAgICAgIHJldHVybiBkYXRh
CisKKyAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGtleSk6CisgICAgICAgICMgdHlwZTogKEFu
eSkgLT4gYm9vbAorICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuZGF0YQorCisgICAgZGVmIF9f
Z2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgICMgdHlwZTogKGJ5dGVzKSAtPiBib29sCisg
ICAgICAgIHYgPSBzZWxmLmRhdGFba2V5XQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh2LCBi
b29sKQorICAgICAgICByZXR1cm4gdgorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtleSwg
dmFsdWUpOgorICAgICAgICAjIHR5cGU6IChieXRlcywgYm9vbCkgLT4gTm9uZQorICAgICAgICBp
ZiBzZWxmLmRhdGEuZ2V0KGtleSkgIT0gdmFsdWU6CisgICAgICAgICAgICBzZWxmLm1vZGlmaWVk
ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5kYXRhW2tleV0gPSB2YWx1ZQorCisgICAgZGVmIF9f
ZGVsaXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgICMgdHlwZTogKGJ5dGVzKSAtPiBOb25lCisg
ICAgICAgIGRlbCBzZWxmLmRhdGFba2V5XQorCisgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAg
ICAgICAjIHR5cGU6ICgpIC0+IEl0ZXJhdG9yW2J5dGVzXQorICAgICAgICByZXR1cm4gaXRlcihz
ZWxmLmRhdGEpCisKKyAgICBkZWYgX19sZW5fXyhzZWxmKToKKyAgICAgICAgIyB0eXBlOiAoKSAt
PiBpbnQKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGEpCisKKworZGVmIHdhbGsocm9vdCk6
CisgICAgIyB0eXBlOiAoYnl0ZXMpIC0+IEl0ZXJhYmxlW1R1cGxlW2J5dGVzLCBMaXN0W1R1cGxl
W2J5dGVzLCBzdGF0X3Jlc3VsdF1dLCBMaXN0W1R1cGxlW2J5dGVzLCBzdGF0X3Jlc3VsdF1dXV0K
KyAgICAiIiJSZS1pbXBsZW1lbnRhdGlvbiBvZiBvcy53YWxrLiBSZXR1cm5zIGFuIGl0ZXJhdG9y
IG92ZXIKKyAgICAoZGlycGF0aCwgZGlybmFtZXMsIGZpbGVuYW1lcyksIHdpdGggc29tZSBzZW1h
bnRpYyBkaWZmZXJlbmNlcworICAgIHRvIG9zLndhbGsuCisKKyAgICBUaGlzIGhhcyBhIHNpbWls
YXIgaW50ZXJmYWNlIHRvIG9zLndhbGssIHdpdGggdGhlIGltcG9ydGFudCBkaWZmZXJlbmNlCisg
ICAgdGhhdCBpbnN0ZWFkIG9mIGxpc3RzIG9mIGZpbGVuYW1lcyBhbmQgZGlyZWN0b3J5IG5hbWVz
LCBpdCB5aWVsZHMKKyAgICBsaXN0cyBvZiB0dXBsZXMgb2YgdGhlIGZvcm0gWyhuYW1lLCBzdGF0
KV0gd2hlcmUgc3RhdCBpcyB0aGUgcmVzdWx0IG9mCisgICAgb3Muc3RhdCBmb3IgdGhlIGZpbGUu
IFRoYXQgYWxsb3dzIHJldXNpbmcgdGhlIHNhbWUgc3RhdCBkYXRhIGluIHRoZQorICAgIGNhbGxl
ci4gSXQgYWxzbyBhbHdheXMgcmV0dXJucyB0aGUgZGlycGF0aCByZWxhdGl2ZSB0byB0aGUgcm9v
dCwgd2l0aAorICAgIHRoZSByb290IGlzZWxmIGJlaW5nIHJldHVybmVkIGFzIHRoZSBlbXB0eSBz
dHJpbmcuCisKKyAgICBVbmxpa2Ugb3Mud2FsayB0aGUgaW1wbGVtZW50YXRpb24gaXMgbm90IHJl
Y3Vyc2l2ZS4iIiIKKworICAgIGdldF9zdGF0ID0gb3Muc3RhdAorICAgIGlzX2RpciA9IHN0YXQu
U19JU0RJUgorICAgIGlzX2xpbmsgPSBzdGF0LlNfSVNMTksKKyAgICBqb2luID0gb3MucGF0aC5q
b2luCisgICAgbGlzdGRpciA9IG9zLmxpc3RkaXIKKyAgICByZWxwYXRoID0gb3MucGF0aC5yZWxw
YXRoCisKKyAgICByb290ID0gb3MucGF0aC5hYnNwYXRoKHJvb3QpCisgICAgc3RhY2sgPSBkZXF1
ZShbKHJvb3QsIGIiIildKQorCisgICAgd2hpbGUgc3RhY2s6CisgICAgICAgIGRpcl9wYXRoLCBy
ZWxfcGF0aCA9IHN0YWNrLnBvcGxlZnQoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIE5v
dGUgdGhhdCBsaXN0ZGlyIGFuZCBlcnJvciBhcmUgZ2xvYmFscyBpbiB0aGlzIG1vZHVsZSBkdWUK
KyAgICAgICAgICAgICMgdG8gZWFybGllciBpbXBvcnQtKi4KKyAgICAgICAgICAgIG5hbWVzID0g
bGlzdGRpcihkaXJfcGF0aCkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBj
b250aW51ZQorCisgICAgICAgIGRpcnMsIG5vbl9kaXJzID0gW10sIFtdCisgICAgICAgIGZvciBu
YW1lIGluIG5hbWVzOgorICAgICAgICAgICAgcGF0aCA9IGpvaW4oZGlyX3BhdGgsIG5hbWUpCisg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgcGF0aF9zdGF0ID0gZ2V0X3N0YXQocGF0
aCkKKyAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgIGNvbnRpbnVl
CisgICAgICAgICAgICBpZiBpc19kaXIocGF0aF9zdGF0LnN0X21vZGUpOgorICAgICAgICAgICAg
ICAgIGRpcnMuYXBwZW5kKChuYW1lLCBwYXRoX3N0YXQpKQorICAgICAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgICAgICBub25fZGlycy5hcHBlbmQoKG5hbWUsIHBhdGhfc3RhdCkpCisKKyAgICAg
ICAgeWllbGQgcmVsX3BhdGgsIGRpcnMsIG5vbl9kaXJzCisgICAgICAgIGZvciBuYW1lLCBwYXRo
X3N0YXQgaW4gZGlyczoKKyAgICAgICAgICAgIG5ld19wYXRoID0gam9pbihkaXJfcGF0aCwgbmFt
ZSkKKyAgICAgICAgICAgIGlmIG5vdCBpc19saW5rKHBhdGhfc3RhdC5zdF9tb2RlKToKKyAgICAg
ICAgICAgICAgICBzdGFjay5hcHBlbmQoKG5ld19wYXRoLCByZWxwYXRoKG5ld19wYXRoLCByb290
KSkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL21hbmlmZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY1ZjI4MzRjMDMwNDViNWRmMTBjNTdhZmQ1MDY3
OTQwMWYyM2MwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlm
ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5p
ZmVzdC9YTUxQYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L1hNTFBhcnNlci5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9f
X2luaXRfXy5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL21hbmlmZXN0L2NvbW1hbmRzLmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2Rvd25sb2FkLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9kb3dubG9h
ZC5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L21hbmlmZXN0L2l0ZW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL21hbmlmZXN0L2l0ZW0ucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC9sb2cucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L2xvZy5weWMKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0
L21hbmlmZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9tYW5pZmVzdC9tYW5pZmVzdC5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJjZWZpbGUucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3NvdXJj
ZWZpbGUucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9tYW5pZmVzdC91cGRhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3VwZGF0ZS5weWMKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL21hbmlmZXN0L3V0aWxzLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9tYW5pZmVzdC91
dGlscy5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL21hbmlmZXN0L3Zjcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvbWFuaWZlc3QvdmNzLnB5YwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXRlc3QuaW5pIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXRlc3QuaW5pCmlu
ZGV4IGI1MmU0NjU1OThhYjk3ZmFhNmI3MTg4NTk2MTdmMjE5NDE0MWZiYjQuLjZiZGI0ZDU2M2Y2
ZGQ1MDg2ZWQzZTA5NzE1MTg3ZTU0OWVkZjI1NWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl0ZXN0LmluaQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5dGVzdC5pbmkK
QEAgLTEsMyArMSw3IEBACiBbcHl0ZXN0XQogbm9yZWN1cnNlZGlycyA9IC4qIHthcmNofSAqLmVn
ZyBodG1sNWxpYiB0aGlyZF9wYXJ0eSBweXdlYnNvY2tldCBzaXggd3B0IHdwdHJ1bm5lcgoteGZh
aWxfc3RyaWN0PXRydWUKK3hmYWlsX3N0cmljdCA9IHRydWUKK2FkZG9wdHMgPSAtLXN0cmljdC1t
YXJrZXJzCittYXJrZXJzID0KKyAgICBzbG93OiBtYXJrcyB0ZXN0cyBhcyBzbG93IChkZXNlbGVj
dCB3aXRoICctbSAibm90IHNsb3ciJykKKyAgICByZW1vdGVfbmV0d29yawpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2VjaG9fY2xpZW50LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fY2xpZW50LnB5
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOTQzY2U2NGU4Yjg4NjU2MmZj
NjkyMDk4MzRiZjkyYjEzOTkxNDJmNy4uOGFjNzQwZTcwNThiZDMxYTc4YmNmMWIxYjg5N2QzYmRm
M2ZjN2Q0YgotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvZWNob19jbGllbnQucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL2VjaG9fY2xpZW50LnB5CkBAIC01MSw2ICs1MSw3IEBAIG9yCiAjIHJ1biBlY2hvIGNsaWVu
dCB0byB0ZXN0IElFVEYgSHlCaSAwMCBwcm90b2NvbAogIHJ1biB3aXRoIC0tcHJvdG9jb2wtdmVy
c2lvbj1oeWJpMDAKICIiIgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgog
CiAKIGltcG9ydCBiYXNlNjQKQEAgLTQ4Myw3ICs0ODQsNyBAQCBjbGFzcyBDbGllbnRIYW5kc2hh
a2VQcm9jZXNzb3IoQ2xpZW50SGFuZHNoYWtlQmFzZSk6CiAgICAgICAgICAgICBpZiBjaCA9PSAn
XG4nOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKLSAgICAgICAgbSA9IHJlLm1hdGNoKCdIVFRQ
L1xcZCtcLlxcZCsgKFxcZFxcZFxcZCkgLipcclxuJywgc3RhdHVzX2xpbmUpCisgICAgICAgIG0g
PSByZS5tYXRjaCgnSFRUUC9cXGQrXFwuXFxkKyAoXFxkXFxkXFxkKSAuKlxyXG4nLCBzdGF0dXNf
bGluZSkKICAgICAgICAgaWYgbSBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCiAgICAgICAgICAgICAgICAgJ1dyb25nIHN0YXR1cyBsaW5lIGZvcm1hdDog
JXInICUgc3RhdHVzX2xpbmUpCkBAIC01MjYsNyArNTI3LDcgQEAgY2xhc3MgQ2xpZW50SGFuZHNo
YWtlUHJvY2Vzc29yKENsaWVudEhhbmRzaGFrZUJhc2UpOgogICAgICAgICAjIFZhbGlkYXRlCiAg
ICAgICAgIHRyeToKICAgICAgICAgICAgIGJpbmFyeV9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2Rl
KGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciwgZToKKyAgICAgICAgZXhjZXB0IFR5
cGVFcnJvcjoKICAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKAogICAgICAgICAgICAg
ICAgICdJbGxlZ2FsIHZhbHVlIGZvciBoZWFkZXIgJXM6ICVyJyAlCiAgICAgICAgICAgICAgICAg
KGNvbW1vbi5TRUNfV0VCU09DS0VUX0FDQ0VQVF9IRUFERVIsIGFjY2VwdCkpCkBAIC05NDAsMTUg
Kzk0MSwxNSBAQCBjbGFzcyBFY2hvQ2xpZW50KG9iamVjdCk6CiAgICAgICAgICAgICBmb3IgbGlu
ZSBpbiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKToKICAgICAgICAgICAgICAgICBz
ZWxmLl9zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUpCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICBwcmludCAnU2VuZDogJXMnICUg
bGluZQorICAgICAgICAgICAgICAgICAgICBwcmludCgnU2VuZDogJXMnICUgbGluZSkKICAgICAg
ICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHJlY2VpdmVkID0gc2VsZi5fc3Ry
ZWFtLnJlY2VpdmVfbWVzc2FnZSgpCiAKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0
aW9ucy52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1JlY3Y6ICVzJyAl
IHJlY2VpdmVkCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAg
ICAgICAgICAgICAgICAgIHByaW50KCdSZWN2OiAlcycgJSByZWNlaXZlZCkKKyAgICAgICAgICAg
ICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ICdFcnJvcjog
JXMnICUgZQorICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0Vycm9yOiAlcycgJSBlKQog
ICAgICAgICAgICAgICAgICAgICByYWlzZQogCiAgICAgICAgICAgICBzZWxmLl9kb19jbG9zaW5n
X2hhbmRzaGFrZSgpCkBAIC05NjQsMTUgKzk2NSwxNSBAQCBjbGFzcyBFY2hvQ2xpZW50KG9iamVj
dCk6CiAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnV2FpdCBmb3Igc2VydmVyLWluaXRp
YXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCiAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5fc3Ry
ZWFtLnJlY2VpdmVfbWVzc2FnZSgpCiAgICAgICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAgICAgcHJpbnQgJ1JlY3YgY2xvc2UnCi0gICAgICAgICAgICAgICAgcHJpbnQg
J1NlbmQgYWNrJworICAgICAgICAgICAgICAgIHByaW50KCdSZWN2IGNsb3NlJykKKyAgICAgICAg
ICAgICAgICBwcmludCgnU2VuZCBhY2snKQogICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKAogICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgY2xvc2luZyBoYW5kc2hha2UgYW5k
IHNlbnQgYWNrJykKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcHJpbnQgJ1NlbmQg
Y2xvc2UnCisgICAgICAgIHByaW50KCdTZW5kIGNsb3NlJykKICAgICAgICAgc2VsZi5fc3RyZWFt
LmNsb3NlX2Nvbm5lY3Rpb24oKQogICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBjbG9z
aW5nIGhhbmRzaGFrZScpCi0gICAgICAgIHByaW50ICdSZWN2IGFjaycKKyAgICAgICAgcHJpbnQo
J1JlY3YgYWNrJykKICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ1JlY2VpdmVkIGFjaycpCiAK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2V2ZW50c291cmNlLmNnaSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9ldmVudHNvdXJjZS5jZ2kKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvc3Bl
Y2lhbF9oZWFkZXJzLmNnaQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBmOTNiOGI2OTU1YjA2MjVhNjEx
NDdkM2MzM2IyN2U5ZTliNTVkN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9leGFtcGxlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsNDkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L2V4YW1wbGUvYWJvcnRfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2FycmF5YnVmZmVy
X2JlbmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2JlbmNoX3dzaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9iZW5jaG1hcmsuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9iZW5jaG1hcmsuanMKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1w
bGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvY2xvc2Vfd3NoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2NvbnNvbGUuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9jb29raWVfd3NoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9leGFtcGxlL2VjaG9fY2xpZW50LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fbm9leHRfd3No
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2V2ZW50c291cmNl
LmNnaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvZXhhbXBsZS9ldmVudHNvdXJjZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNo
X2JlbmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL2ZldGNoX2JlbmNobWFyay5qcwotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9mZXRjaF9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxl
L2hhbmRsZXJfbWFwLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS9oc3RzX3dzaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBs
ZS9pbnRlcm5hbF9lcnJvcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvZXhhbXBsZS9wZXJmb3JtYW5jZV90ZXN0X2lmcmFtZS5odG1sCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFt
cGxlL3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9leGFtcGxlL3B5d2Vic29ja2V0
LmNvbmYKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91
dGlsLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9leGFtcGxlL3V0aWxfbWFpbi5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS91dGlsX3dv
cmtlci5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfYmVuY2htYXJrLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L2V4YW1wbGUv
eGhyX2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvZXhhbXBsZS94aHJfZXZlbnRfbG9nZ2VyLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L2V4YW1wbGUveGhyX3BlcmZvcm1hbmNlX3Rlc3RfaWZyYW1lLmh0bWwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjU3YTQ4YzYyN2JiZDI4MDM2Y2U2YjczN2M2NWFiZDNlZDA2YmVjNi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdl
YnNvY2tldC9oYW5kc2hha2UvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX2Jhc2UucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UvaHliaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRz
aGFrZS9oeWJpMDAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBh
cnNlcmhhbmRsZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5kbGVy
LnB5CmluZGV4IGRkYTQzYzlkODE5N2YyMTc4MDQzMzFmYjFiZTk3MDY1MjgyZTM2NDYuLjA2ZTc2
Mzg1OTc5ODVhOTZhNGMwMGVhMDA1MmEwZDM3MTdlNDQwM2MgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9k
X3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJz
b2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weQpAQCAtMjAxLDcgKzIwMSw3IEBAIGRlZiBoZWFk
ZXJwYXJzZXJoYW5kbGVyKHJlcXVlc3QpOgogICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3Io
CiAgICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogRmFsbGJhY2sgdG8gQXBhY2hlJywg
YXBhY2hlLkFQTE9HX0lORk8pCiAgICAgICAgICAgICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVECi0g
ICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLCBlOgorICAgIGV4Y2VwdCBkaXNw
YXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcigK
ICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IERpc3BhdGNoIGZhaWxlZCBmb3IgZXJyb3I6
ICVzJyAlIGUsCiAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKQEAgLTIxNywxNCArMjE3
LDE0IEBAIGRlZiBoZWFkZXJwYXJzZXJoYW5kbGVyKHJlcXVlc3QpOgogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICBoYW5kc2hha2UuZG9faGFuZHNoYWtlKAogICAgICAgICAgICAgICAgIHJlcXVl
c3QsIF9kaXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9YWxsb3dfZHJhZnQ3NSkKLSAgICAgICAgZXhj
ZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0aW9uLCBlOgorICAgICAgICBleGNlcHQgaGFuZHNo
YWtlLlZlcnNpb25FeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9y
KAogICAgICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IEhhbmRzaGFrZSBmYWlsZWQgZm9y
IHZlcnNpb24gZXJyb3I6ICVzJyAlIGUsCiAgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lO
Rk8pCiAgICAgICAgICAgICByZXF1ZXN0LmVycl9oZWFkZXJzX291dC5hZGQoY29tbW9uLlNFQ19X
RUJTT0NLRVRfVkVSU0lPTl9IRUFERVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZS5zdXBwb3J0ZWRfdmVyc2lvbnMpCiAgICAgICAgICAgICByZXR1cm4gYXBhY2hl
LkhUVFBfQkFEX1JFUVVFU1QKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNl
cHRpb24sIGU6CisgICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9uIGFz
IGU6CiAgICAgICAgICAgICAjIEhhbmRzaGFrZSBmb3Igd3Mvd3NzIGZhaWxlZC4KICAgICAgICAg
ICAgICMgU2VuZCBodHRwIHJlc3BvbnNlIHdpdGggZXJyb3Igc3RhdHVzLgogICAgICAgICAgICAg
cmVxdWVzdC5sb2dfZXJyb3IoCkBAIC0yMzUsMTAgKzIzNSwxMCBAQCBkZWYgaGVhZGVycGFyc2Vy
aGFuZGxlcihyZXF1ZXN0KToKICAgICAgICAgaGFuZHNoYWtlX2lzX2RvbmUgPSBUcnVlCiAgICAg
ICAgIHJlcXVlc3QuX2Rpc3BhdGNoZXIgPSBfZGlzcGF0Y2hlcgogICAgICAgICBfZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlV
c2VyRXhjZXB0aW9uLCBlOgorICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2Vw
dGlvbiBhcyBlOgogICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiBB
Ym9ydGVkOiAlcycgJSBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0df
SU5GTykKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgorICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZToKICAgICAgICAgIyBEaXNwYXRjaEV4Y2VwdGlvbiBjYW4gYWxzbyBiZSB0aHJvd24gaWYgc29t
ZXRoaW5nIGlzIHdyb25nIGluCiAgICAgICAgICMgcHl3ZWJzb2NrZXQgY29kZS4gSXQncyBjYXVn
aHQgaGVyZSwgdGhlbi4KIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbWVtb3Jp
emluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weQppbmRl
eCAwN2JjYmQ1ODc2Y2MzNTUzMjhlYmY1YzdhOWNkOTg4NTBhYmI4YzZhLi5jN2FmY2MxNTdlZDdh
MWQ5NDJjYmY0MzU4YWZhMDQ1NDg0NmYwMWQ0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNv
Y2tldC9tZW1vcml6aW5nZmlsZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tZW1vcml6
aW5nZmlsZS5weQpAQCAtMSw1ICsxLDMgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwogIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKQEAg
LTYyLDcgKzYwLDcgQEAgY2xhc3MgTWVtb3JpemluZ0ZpbGUob2JqZWN0KToKIAogICAgIGRlZiBf
X2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgogICAgICAgICAiIiJSZXR1cm4gYSBmaWxlIGF0
dHJpYnV0ZS4KLSAgICAgICAgCisKICAgICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb3ZlcnJpZGRl
biBieSB0aGlzIGNsYXNzIGZvciBzb21lIGF0dHJpYnV0ZXMsCiAgICAgICAgIGFuZCBmb3J3YXJk
cyB0aGUgY2FsbCB0byBfZmlsZSBmb3IgdGhlIG90aGVyIGF0dHJpYnV0ZXMuCiAgICAgICAgICIi
IgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
bW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQppbmRleCA4NGIyNDcwYzhmOTczYWQ0YzQxYmExODE2NGE0Y2JjNzdhNzFjNzY2Li4yYzg3
ODYwNjQ4ODllODRmMTE1YTc1Njc5YWI3MWM3NDQ2NmEwYzYyCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L3N0YW5kYWxvbmUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9u
ZS5weQpAQCAtMzY5LDcgKzM2OSw3IEBAIGRlZiBfYWxpYXNfaGFuZGxlcnMoZGlzcGF0Y2hlciwg
d2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6CiAgICAgICAgIGZvciBsaW5lIGluIGZwOgogICAg
ICAgICAgICAgaWYgbGluZVswXSA9PSAnIycgb3IgbGluZS5pc3NwYWNlKCk6CiAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgIG0gPSByZS5tYXRjaCgnKFxTKylccysoXFMrKScs
IGxpbmUpCisgICAgICAgICAgICBtID0gcmUubWF0Y2gocicoXFMrKVxzKyhcUyspJywgbGluZSkK
ICAgICAgICAgICAgIGlmIG5vdCBtOgogICAgICAgICAgICAgICAgIGxvZ2dpbmcud2FybmluZygn
V3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBsaW5lKQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBiYzIzYTVkMjhiNzViY2Q5YzRhNWRlMGNkYzhiZDVkNjUzNzg1NjlhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29j
a2V0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9fc3RyZWFtX2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdl
YnNvY2tldC9jb21tb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9m
YXN0X21hc2tpbmcuaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2Rf
cHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1
dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvc3RhbmRhbG9uZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0cmVhbS5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
bW9kX3B5d2Vic29ja2V0L3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC94aHJfYmVuY2ht
YXJrX2hhbmRsZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc2V0dXAucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NldHVwLnB5
Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL0NP
UFlJTkcgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9DT1BZSU5HCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5
ODlkMDJlNGNkMDkyMzc4MDZmN2RmOGJlYWVjYzY5MTUyNzM0MjhlLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL0NPUFlJTkcKKysrIC9kZXYv
bnVsbApAQCAtMSwyOCArMCwwIEBACi1Db3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLUFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0KLVJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgotICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgot
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KLXRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0KLVRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlS
SUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi1PV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi1USEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCi0oSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9NQU5JRkVTVC5pbiBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL01BTklGRVNULmluCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAxOTI1Njg4MmM1NmZlYjcyODEyYzk5YzhhODM3OTk3OWU2M2U0YTBj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L01BTklGRVNULmluCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmNsdWRlIENPUFlJ
TkcKLWluY2x1ZGUgTUFOSUZFU1QuaW4KLWluY2x1ZGUgUkVBRE1FCi1yZWN1cnNpdmUtaW5jbHVk
ZSBleGFtcGxlICoucHkKLXJlY3Vyc2l2ZS1pbmNsdWRlIG1vZF9weXdlYnNvY2tldCAqLnB5Ci1y
ZWN1cnNpdmUtaW5jbHVkZSB0ZXN0ICoucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL1JFQURNRSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhjNzU4ZjVl
ZWY0YzczMTg5MjY0MWRlMzMzZTVkNzVkMTBhM2U1Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9SRUFETUUKKysrIC9kZXYvbnVsbApAQCAt
MSwxNyArMCwwIEBACi1JTlNUQUxMCi0KLVRvIGluc3RhbGwgdGhpcyBwYWNrYWdlIHRvIHRoZSBz
eXN0ZW0sIHJ1biB0aGlzOgotJCBweXRob24gc2V0dXAucHkgYnVpbGQKLSQgc3VkbyBweXRob24g
c2V0dXAucHkgaW5zdGFsbAotCi1UbyBpbnN0YWxsIHRoaXMgcGFja2FnZSBhcyBhIG5vcm1hbCB1
c2VyLCBydW4gdGhpcyBpbnN0ZWFkOgotJCBweXRob24gc2V0dXAucHkgYnVpbGQKLSQgcHl0aG9u
IHNldHVwLnB5IGluc3RhbGwgLS11c2VyCi0KLUxBVU5DSAotCi1UbyB1c2UgcHl3ZWJzb2NrZXQg
YXMgQXBhY2hlIG1vZHVsZSwgcnVuIHRoaXMgdG8gcmVhZCB0aGUgZG9jdW1lbnQ6Ci0kIHB5ZG9j
IG1vZF9weXdlYnNvY2tldAotCi1UbyB1c2UgcHl3ZWJzb2NrZXQgYXMgc3RhbmRhbG9uZSBzZXJ2
ZXIsIHJ1biB0aGlzIHRvIHJlYWQgdGhlIGRvY3VtZW50OgotJCBweWRvYyBtb2RfcHl3ZWJzb2Nr
ZXQuc3RhbmRhbG9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF9oYW5kc2hh
a2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF9oYW5kc2hha2Vfd3NoLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDgwMjNhMWZlOTFlMmYyOTc3YjE2M2Y5NzdkYWU2
ODUwMDA5YWE0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvYWJvcnRfaGFuZHNoYWtlX3dzaC5weQorKysgL2Rldi9udWxsCkBA
IC0xLDQzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMK
LSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQot
IyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4g
bm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwot
IyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
Ci0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
Ci0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBoYW5kc2hha2UKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Uo
cmVxdWVzdCk6Ci0gICAgcmFpc2UgaGFuZHNoYWtlLkFib3J0ZWRCeVVzZXJFeGNlcHRpb24oCi0g
ICAgICAgICJBYm9ydGVkIGluIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIikKLQotCi1k
ZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi0jIHZp
OnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYWJvcnRfd3NoLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvZXhhbXBsZS9hYm9ydF93c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDJiYmYwMDVmNmEzN2M2MDllMTZhYmRlNGRmOTQwMjQyNjhkMGRhZWUuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9h
Ym9ydF93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0jIENvcHlyaWdodCAy
MDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLQotZGVmIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYg
d2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFrZS5B
Ym9ydGVkQnlVc2VyRXhjZXB0aW9uKAotICAgICAgICAiQWJvcnRlZCBpbiB3ZWJfc29ja2V0X3Ry
YW5zZmVyX2RhdGEiKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvZXhhbXBsZS9hcnJheWJ1ZmZlcl9iZW5jaG1hcmsuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
YXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg2OWNkN2UxZWU2NTNkNTlmMDRiODAyZmYzNGM4ZDA4MTMxN2NhODkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9hcnJheWJ1
ZmZlcl9iZW5jaG1hcmsuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi08IS0t
Ci1Db3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4KLUFsbCByaWdodHMgcmVzZXJ2ZWQuCi0KLVJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotbWV0OgotCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgotaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotZGlzdHJpYnV0aW9uLgotICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotY29udHJpYnV0b3JzIG1heSBi
ZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLXRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0KLVRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05U
UklCVVRPUlMKLSJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLUEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi1PV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKLVNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QKLUxJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi1USEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0oSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLU9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0tLT4KLQotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5BcnJh
eUJ1ZmZlciBiZW5jaG1hcms8L3RpdGxlPgotPHNjcmlwdCBzcmM9InV0aWwuanMiPjwvc2NyaXB0
PgotPHNjcmlwdD4KLXZhciBQUklOVF9TSVpFID0gdHJ1ZTsKLQotLy8gSW5pdGlhbCBzaXplIG9m
IGFycmF5cy4KLXZhciBTVEFSVF9TSVpFID0gMTAgKiAxMDI0OwotLy8gU3RvcHMgYmVuY2htYXJr
IHdoZW4gdGhlIHNpemUgb2YgYW4gYXJyYXkgZXhjZWVkcyB0aGlzIHRocmVzaG9sZC4KLXZhciBT
VE9QX1RIUkVTSE9MRCA9IDEwMDAwMCAqIDEwMjQ7Ci0vLyBJZiB0aGUgc2l6ZSBvZiBlYWNoIGFy
cmF5IGlzIHNtYWxsLCB3cml0ZS9yZWFkIHRoZSBhcnJheSBtdWx0aXBsZSB0aW1lcwotLy8gdW50
aWwgdGhlIHN1bSBvZiBzaXplcyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotdmFyIE1JTl9UT1RB
TCA9IDEwMDAwMCAqIDEwMjQ7Ci12YXIgTVVMVElQTElFUlMgPSBbNSwgMl07Ci0KLS8vIFJlcGVh
dCBiZW5jaG1hcmsgZm9yIHNldmVyYWwgdGltZXMgdG8gbWVhc3VyZSBwZXJmb3JtYW5jZSBvZiBv
cHRpbWl6ZWQKLS8vIChzdWNoIGFzIEpJVCkgcnVuLgotdmFyIFJFUEVBVF9GT1JfV0FSTVVQID0g
MzsKLQotZnVuY3Rpb24gd3JpdGVCZW5jaG1hcmsoc2l6ZSwgbWluVG90YWwpIHsKLSAgdmFyIHRv
dGFsU2l6ZSA9IDA7Ci0gIHdoaWxlICh0b3RhbFNpemUgPCBtaW5Ub3RhbCkgewotICAgIHZhciBh
cnJheUJ1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgIC8vIFdyaXRlICdhJ3Mu
Ci0gICAgZmlsbEFycmF5QnVmZmVyKGFycmF5QnVmZmVyLCAweDYxKTsKLQotICAgIHRvdGFsU2l6
ZSArPSBzaXplOwotICB9Ci0gIHJldHVybiB0b3RhbFNpemU7Ci19Ci0KLWZ1bmN0aW9uIHJlYWRC
ZW5jaG1hcmsoc2l6ZSwgbWluVG90YWwpIHsKLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHdoaWxl
ICh0b3RhbFNpemUgPCBtaW5Ub3RhbCkgewotICAgIHZhciBhcnJheUJ1ZmZlciA9IG5ldyBBcnJh
eUJ1ZmZlcihzaXplKTsKLQotICAgIGlmICghdmVyaWZ5QXJyYXlCdWZmZXIoYXJyYXlCdWZmZXIs
IDB4MDApKSB7Ci0gICAgICBxdWV1ZUxvZygnVmVyaWZpY2F0aW9uIGZhaWxlZCcpOwotICAgICAg
cmV0dXJuIC0xOwotICAgIH0KLQotICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9Ci0gIHJldHVy
biB0b3RhbFNpemU7Ci19Ci0KLWZ1bmN0aW9uIHJ1bkJlbmNobWFyayhiZW5jaG1hcmtGdW5jdGlv
biwKLSAgICAgICAgICAgICAgICAgICAgICBzaXplLAotICAgICAgICAgICAgICAgICAgICAgIHN0
b3BUaHJlc2hvbGQsCi0gICAgICAgICAgICAgICAgICAgICAgbWluVG90YWwsCi0gICAgICAgICAg
ICAgICAgICAgICAgbXVsdGlwbGllcnMsCi0gICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGll
ckluZGV4KSB7Ci0gIHdoaWxlIChzaXplIDw9IHN0b3BUaHJlc2hvbGQpIHsKLSAgICB2YXIgbWF4
U3BlZWQgPSAwOwotCi0gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBSRVBFQVRfRk9SX1dBUk1VUDsg
KytpKSB7Ci0gICAgICB2YXIgc3RhcnRUaW1lSW5NcyA9IGdldFRpbWVTdGFtcCgpOwotCi0gICAg
ICB2YXIgdG90YWxTaXplID0gYmVuY2htYXJrRnVuY3Rpb24oc2l6ZSwgbWluVG90YWwpOwotCi0g
ICAgICBtYXhTcGVlZCA9IE1hdGgubWF4KG1heFNwZWVkLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICBjYWxjdWxhdGVTcGVlZEluS0IodG90YWxTaXplLCBzdGFydFRpbWVJbk1zKSk7Ci0gICAg
fQotICAgIHF1ZXVlTG9nKGZvcm1hdFJlc3VsdEluS2lCKHNpemUsIG1heFNwZWVkLCBQUklOVF9T
SVpFKSk7Ci0KLSAgICBzaXplICo9IG11bHRpcGxpZXJzW211bHRpcGxpZXJJbmRleF07Ci0gICAg
bXVsdGlwbGllckluZGV4ID0gKG11bHRpcGxpZXJJbmRleCArIDEpICUgbXVsdGlwbGllcnMubGVu
Z3RoOwotICB9Ci19Ci0KLWZ1bmN0aW9uIHJ1bkJlbmNobWFya3MoKSB7Ci0gIHF1ZXVlTG9nKCdN
ZXNzYWdlIHNpemUgaW4gS2lCLCBTcGVlZCBpbiBrQi9zJyk7Ci0KLSAgcXVldWVMb2coJ1dyaXRl
IGJlbmNobWFyaycpOwotICBydW5CZW5jaG1hcmsoCi0gICAgICB3cml0ZUJlbmNobWFyaywgU1RB
UlRfU0laRSwgU1RPUF9USFJFU0hPTEQsIE1JTl9UT1RBTCwgTVVMVElQTElFUlMsIDApOwotICBx
dWV1ZUxvZygnRmluaXNoZWQnKTsKLQotICBxdWV1ZUxvZygnUmVhZCBiZW5jaG1hcmsnKTsKLSAg
cnVuQmVuY2htYXJrKAotICAgICAgcmVhZEJlbmNobWFyaywgU1RBUlRfU0laRSwgU1RPUF9USFJF
U0hPTEQsIE1JTl9UT1RBTCwgTVVMVElQTElFUlMsIDApOwotICBhZGRUb0xvZygnRmluaXNoZWQn
KTsKLX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ2xvZycpOwotCi0gIHF1ZXVlTG9nKHdpbmRvdy5uYXZpZ2F0b3IudXNlckFnZW50LnRv
TG93ZXJDYXNlKCkpOwotCi0gIGFkZFRvTG9nKCdTdGFydGVkLi4uJyk7Ci0KLSAgc2V0VGltZW91
dChydW5CZW5jaG1hcmtzLCAwKTsKLX0KLQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxv
YWQ9ImluaXQoKSI+Ci08dGV4dGFyZWEKLSAgICBpZD0ibG9nIiByb3dzPSI1MCIgc3R5bGU9Indp
ZHRoOiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9iZW5jaF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Jl
bmNoX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTA2N2NhN2Q4OTU1ZmMx
NjNkNTAwMWNkODgxMmU2YWUyMGMxNjI5My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNoX3dzaC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDYwICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkEgc2ltcGxlIGxv
YWQgdGVzdGVyIGZvciBXZWJTb2NrZXQgY2xpZW50cy4KLQotQSBjbGllbnQgcHJvZ3JhbSBzZW5k
cyBhIG1lc3NhZ2UgZm9ybWF0dGVkIGFzICI8dGltZT4gPGNvdW50PiA8bWVzc2FnZT4iIHRvCi10
aGlzIGhhbmRsZXIuIFRoaXMgaGFuZGxlciBzdGFydHMgc2VuZGluZyB0b3RhbCA8Y291bnQ+IFdl
YlNvY2tldCBtZXNzYWdlcwotY29udGFpbmluZyA8bWVzc2FnZT4gZXZlcnkgPHRpbWU+IHNlY29u
ZHMuIDx0aW1lPiBjYW4gYmUgYSBmbG9hdGluZyBwb2ludAotdmFsdWUuIDxjb3VudD4gbXVzdCBi
ZSBhbiBpbnRlZ2VyIHZhbHVlLgotIiIiCi0KLQotaW1wb3J0IHRpbWUKLQotCi1kZWYgd2ViX3Nv
Y2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcGFzcyAgIyBBbHdheXMgYWNj
ZXB0LgotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6Ci0gICAgbGlu
ZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgcGFydHMgPSBsaW5l
LnNwbGl0KCcgJykKLSAgICBpZiBsZW4ocGFydHMpICE9IDM6Ci0gICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0JhZCBwYXJhbWV0ZXIgZm9ybWF0JykKLSAgICB3YWl0ID0gZmxvYXQocGFydHNbMF0p
Ci0gICAgY291bnQgPSBpbnQocGFydHNbMV0pCi0gICAgbWVzc2FnZSA9IHBhcnRzWzJdCi0gICAg
Zm9yIGkgaW4geHJhbmdlKGNvdW50KToKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9t
ZXNzYWdlKG1lc3NhZ2UpCi0gICAgICAgIHRpbWUuc2xlZXAod2FpdCkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2htYXJrLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAzYTIxODE3M2EwZjFmMzNhNGVkNDYyZTIxZjg2YzFiOGQ0OGJhNjIwLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVu
Y2htYXJrLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMDMgKzAsMCBAQAotPCEtLQotQ29weXJp
Z2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdo
dCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29v
Z2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
Ci0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVD
SUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViU29ja2V0IGJl
bmNobWFyazwvdGl0bGU+Ci08c2NyaXB0IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxz
Y3JpcHQgc3JjPSJ1dGlsLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgc3JjPSJiZW5jaG1hcmsuanMi
Pjwvc2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rpb24g
Z2V0Q29uZmlnKCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1
ZSwKLSAgICBwcmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAotICAg
IG51bVNvY2tldHM6IGdldEludEZyb21JbnB1dCgnbnVtc29ja2V0cycpLAotICAgIC8vIEluaXRp
YWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAgICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQo
J251bWl0ZXJhdGlvbnMnKSwKLSAgICBudW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5w
dXQoJ251bXdhcm11cGl0ZXJhdGlvbnMnKSwKLSAgICBzdGFydFNpemU6IGdldEludEZyb21JbnB1
dCgnc3RhcnRzaXplJyksCi0gICAgLy8gU3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUgb2Yg
bWVzc2FnZSBleGNlZWRzIHRoaXMgdGhyZXNob2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6IGdldElu
dEZyb21JbnB1dCgnc3RvcHRocmVzaG9sZCcpLAotICAgIC8vIElmIHRoZSBzaXplIG9mIGVhY2gg
bWVzc2FnZSBpcyBzbWFsbCwgc2VuZC9yZWNlaXZlIG11bHRpcGxlIG1lc3NhZ2VzCi0gICAgLy8g
dW50aWwgdGhlIHN1bSBvZiBzaXplcyByZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotICAgIG1pblRv
dGFsOiBnZXRJbnRGcm9tSW5wdXQoJ21pbnRvdGFsJyksCi0gICAgbXVsdGlwbGllcnM6IGdldElu
dEFycmF5RnJvbUlucHV0KCdtdWx0aXBsaWVycycpLAotICAgIHZlcmlmeURhdGE6IGdldEJvb2xG
cm9tQ2hlY2tCb3goJ3ZlcmlmeWRhdGEnKQotICB9OwotfQotCi12YXIgd29ya2VyID0gbmV3IFdv
cmtlcignYmVuY2htYXJrLmpzJyk7Ci13b3JrZXIub25tZXNzYWdlID0gb25NZXNzYWdlOwotCi1m
dW5jdGlvbiBvblNlbmRCZW5jaG1hcmsoKSB7Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsK
LQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9z
dE1lc3NhZ2Uoe3R5cGU6ICdzZW5kQmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBl
bHNlIHsKLSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9T
dW1tYXJ5ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJl
VmFsdWU7Ci0gICAgc2VuZEJlbmNobWFyayhjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIG9u
UmVjZWl2ZUJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotCi0gIGlm
IChnZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2Fn
ZSh7dHlwZTogJ3JlY2VpdmVCZW5jaG1hcmsnLCBjb25maWc6IGNvbmZpZ30pOwotICB9IGVsc2Ug
ewotICAgIGNvbmZpZy5hZGRUb0xvZyA9IGFkZFRvTG9nOwotICAgIGNvbmZpZy5hZGRUb1N1bW1h
cnkgPSBhZGRUb1N1bW1hcnk7Ci0gICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IG1lYXN1cmVWYWx1
ZTsKLSAgICByZWNlaXZlQmVuY2htYXJrKGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25C
YXRjaEJlbmNobWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotCi0gIGlmIChn
ZXRCb29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7
dHlwZTogJ2JhdGNoQmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAg
ICBjb25maWcuYWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0g
YWRkVG9TdW1tYXJ5OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0g
ICAgYmF0Y2hCZW5jaG1hcmsoY29uZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7
Ci0gIHZhciBjb25maWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0Jv
eCgnd29ya2VyJykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdzdG9wJywgY29u
ZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRUb0xv
ZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZpZy5t
ZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgc3RvcChjb25maWcpOwotICB9Ci19Ci1m
dW5jdGlvbiBpbml0KCkgewotICBhZGRyZXNzQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
J2FkZHJlc3MnKTsKLSAgbG9nQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xvZycpOwot
Ci0gIHN1bW1hcnlCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnc3VtbWFyeScpOwotCi0g
IHZhciBzY2hlbWUgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT0gJ2h0dHBzOicgPyAnd3Nz
Oi8vJyA6ICd3czovLyc7Ci0gIHZhciBkZWZhdWx0QWRkcmVzcyA9IHNjaGVtZSArIHdpbmRvdy5s
b2NhdGlvbi5ob3N0ICsgJy9iZW5jaG1hcmtfaGVscGVyJzsKLQotICBhZGRyZXNzQm94LnZhbHVl
ID0gZGVmYXVsdEFkZHJlc3M7Ci0KLSAgYWRkVG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdl
bnQudG9Mb3dlckNhc2UoKSk7Ci0gIGFkZFRvU3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJB
Z2VudC50b0xvd2VyQ2FzZSgpKTsKLQotICBpZiAoISgnV2ViU29ja2V0JyBpbiB3aW5kb3cpKSB7
Ci0gICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBpcyBub3QgYXZhaWxhYmxlJyk7Ci0gIH0KLX0KLTwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotCi08ZGl2IGlkPSJiZW5j
aG1hcmtfZGl2Ij4KLSAgdXJsIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVzcyIgc2l6ZT0i
NDAiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGljaz0ib25TZW5k
QmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVjZWl2ZSIgb25j
bGljaz0ib25SZWNlaXZlQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1
ZT0iYmF0Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1dCB0eXBlPSJi
dXR0b24iIHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+Ci0KLSAgPGJyLz4KLQotICA8
aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+Ci0gIDxsYWJlbCBm
b3I9InByaW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwvbGFiZWw+Ci0g
IDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+Ci0gIDxsYWJl
bCBmb3I9InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9ImNo
ZWNrYm94IiBpZD0id29ya2VyIj4KLSAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4gb24gd29ya2Vy
PC9sYWJlbD4KLQotICA8YnIvPgotCi0gIFBhcmFtZXRlcnM6Ci0KLSAgPGJyLz4KLQotICA8dGFi
bGU+Ci0gICAgPHRyPgotICAgICAgPHRkPk51bSBzb2NrZXRzPC90ZD4KLSAgICAgIDx0ZD48aW5w
dXQgdHlwZT0idGV4dCIgaWQ9Im51bXNvY2tldHMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+
Ci0gICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0
ZD48aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgot
ICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlv
bnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0
aW9ucyIgdmFsdWU9IjAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3Rh
cnQgc2l6ZTwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUi
IHZhbHVlPSIxMDI0MCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdG9w
IHRocmVzaG9sZDwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhy
ZXNob2xkIiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAg
ICAgPHRkPk1pbmltdW0gdG90YWw8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBp
ZD0ibWludG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+
Ci0gICAgICA8dGQ+TXVsdGlwbGllcnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0
IiBpZD0ibXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFi
bGU+Ci08L2Rpdj4KLQotPGRpdiBpZD0ibG9nX2RpdiI+Ci0gIDx0ZXh0YXJlYQotICAgICAgaWQ9
ImxvZyIgcm93cz0iMjAiIHN0eWxlPSJ3aWR0aDogMTAwJSIgcmVhZG9ubHk+PC90ZXh0YXJlYT4K
LTwvZGl2PgotPGRpdiBpZD0ic3VtbWFyeV9kaXYiPgotICBTdW1tYXJ5Ci0gIDx0ZXh0YXJlYQot
ICAgICAgaWQ9InN1bW1hcnkiIHJvd3M9IjIwIiBzdHlsZT0id2lkdGg6IDEwMCUiIHJlYWRvbmx5
PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLQotTm90ZTogRWZmZWN0IG9mIFJUVCBpcyBub3QgZWxpbWlu
YXRlZC4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9i
ZW5jaG1hcmsuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZDM0N2FlOWUxM2RlMmYwNWRhMDg1YzQ5MjExZjU0YzBiNjg1MmFm
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9leGFtcGxlL2JlbmNobWFyay5qcworKysgL2Rldi9udWxsCkBAIC0xLDMwOSArMCwwIEBACi0v
LyBDb3B5cmlnaHQgMjAxNCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8v
IFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlCi0vLyBs
aWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLS8vIGh0
dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi1p
ZiAodHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiKSB7Ci0gIC8vIFJ1bm5pbmcg
b24gYSB3b3JrZXIKLSAgaW1wb3J0U2NyaXB0cygndXRpbC5qcycsICd1dGlsX3dvcmtlci5qcycp
OwotfQotCi0vLyBOYW1lc3BhY2UgZm9yIGhvbGRpbmcgZ2xvYmFscy4KLXZhciBiZW5jaG1hcmsg
PSB7c3RhcnRUaW1lSW5NczogMH07Ci0KLXZhciBzb2NrZXRzID0gW107Ci12YXIgbnVtRXN0YWJs
aXNoZWRTb2NrZXRzID0gMDsKLQotdmFyIHRpbWVySUQgPSBudWxsOwotCi1mdW5jdGlvbiBkZXN0
cm95U29ja2V0KHNvY2tldCkgewotICBzb2NrZXQub25vcGVuID0gbnVsbDsKLSAgc29ja2V0Lm9u
bWVzc2FnZSA9IG51bGw7Ci0gIHNvY2tldC5vbmVycm9yID0gbnVsbDsKLSAgc29ja2V0Lm9uY2xv
c2UgPSBudWxsOwotICBzb2NrZXQuY2xvc2UoKTsKLX0KLQotZnVuY3Rpb24gZGVzdHJveUFsbFNv
Y2tldHMoKSB7Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewot
ICAgIGRlc3Ryb3lTb2NrZXQoc29ja2V0c1tpXSk7Ci0gIH0KLSAgc29ja2V0cyA9IFtdOwotfQot
Ci1mdW5jdGlvbiBzZW5kQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcpIHsKLSAgdGltZXJJRCA9
IG51bGw7Ci0KLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZhciB0b3RhbFJlcGxpZWQgPSAwOwot
Ci0gIHZhciBvbk1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBpZiAoIXZl
cmlmeUFja25vd2xlZGdlbWVudChjb25maWcsIGV2ZW50LmRhdGEsIHNpemUpKSB7Ci0gICAgICBk
ZXN0cm95QWxsU29ja2V0cygpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRvdGFsUmVw
bGllZCArPSBzaXplOwotCi0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgewotICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNp
emUsIGJlbmNobWFyay5zdGFydFRpbWVJbk1zLCB0b3RhbFNpemUpOwotCi0gICAgcnVuTmV4dFRh
c2soY29uZmlnKTsKLSAgfTsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHNvY2tldHMubGVuZ3Ro
OyArK2kpIHsKLSAgICB2YXIgc29ja2V0ID0gc29ja2V0c1tpXTsKLSAgICBzb2NrZXQub25tZXNz
YWdlID0gb25NZXNzYWdlSGFuZGxlcjsKLSAgfQotCi0gIHZhciBkYXRhQXJyYXkgPSBbXTsKLQot
ICB3aGlsZSAodG90YWxTaXplIDwgY29uZmlnLm1pblRvdGFsKSB7Ci0gICAgdmFyIGJ1ZmZlciA9
IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKLQotICAgIGZpbGxBcnJheUJ1ZmZlcihidWZmZXIsIDB4
NjEpOwotCi0gICAgZGF0YUFycmF5LnB1c2goYnVmZmVyKTsKLSAgICB0b3RhbFNpemUgKz0gc2l6
ZTsKLSAgfQotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0K
LSAgdG90YWxTaXplID0gMDsKLQotICB2YXIgc29ja2V0SW5kZXggPSAwOwotICB2YXIgZGF0YUlu
ZGV4ID0gMDsKLSAgd2hpbGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgewotICAgIHZh
ciBjb21tYW5kID0gWydzZW5kJ107Ci0gICAgY29tbWFuZC5wdXNoKGNvbmZpZy52ZXJpZnlEYXRh
ID8gJzEnIDogJzAnKTsKLSAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKGNvbW1hbmQuam9p
bignICcpKTsKLSAgICBzb2NrZXRzW3NvY2tldEluZGV4XS5zZW5kKGRhdGFBcnJheVtkYXRhSW5k
ZXhdKTsKLSAgICBzb2NrZXRJbmRleCA9IChzb2NrZXRJbmRleCArIDEpICUgc29ja2V0cy5sZW5n
dGg7Ci0KLSAgICB0b3RhbFNpemUgKz0gc2l6ZTsKLSAgICArK2RhdGFJbmRleDsKLSAgfQotfQot
Ci1mdW5jdGlvbiByZWNlaXZlQmVuY2htYXJrU3RlcChzaXplLCBjb25maWcpIHsKLSAgdGltZXJJ
RCA9IG51bGw7Ci0KLSAgdmFyIHRvdGFsU2l6ZSA9IDA7Ci0gIHZhciB0b3RhbFJlcGxpZWQgPSAw
OwotCi0gIHZhciBvbk1lc3NhZ2VIYW5kbGVyID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICB2YXIg
Ynl0ZXNSZWNlaXZlZCA9IGV2ZW50LmRhdGEuYnl0ZUxlbmd0aDsKLSAgICBpZiAoYnl0ZXNSZWNl
aXZlZCAhPSBzaXplKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0V4cGVjdGVkICcgKyBzaXpl
ICsgJ0IgYnV0IHJlY2VpdmVkICcgKwotICAgICAgICAgIGJ5dGVzUmVjZWl2ZWQgKyAnQicpOwot
ICAgICAgZGVzdHJveUFsbFNvY2tldHMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoY29uZmlnLnZlcmlmeURhdGEgJiYgIXZlcmlmeUFycmF5QnVmZmVyKGV2ZW50LmRhdGEsIDB4
NjEpKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ1Jlc3BvbnNlIHZlcmlmaWNhdGlvbiBmYWls
ZWQnKTsKLSAgICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQot
Ci0gICAgdG90YWxSZXBsaWVkICs9IGJ5dGVzUmVjZWl2ZWQ7Ci0KLSAgICBpZiAodG90YWxSZXBs
aWVkIDwgdG90YWxTaXplKSB7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgY2FsY3VsYXRl
QW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJrLnN0YXJ0VGltZUluTXMsIHRvdGFs
U2l6ZSk7Ci0KLSAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9OwotCi0gIGZvciAodmFyIGkg
PSAwOyBpIDwgc29ja2V0cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBzb2NrZXRz
W2ldOwotICAgIHNvY2tldC5iaW5hcnlUeXBlID0gJ2FycmF5YnVmZmVyJzsKLSAgICBzb2NrZXQu
b25tZXNzYWdlID0gb25NZXNzYWdlSGFuZGxlcjsKLSAgfQotCi0gIGJlbmNobWFyay5zdGFydFRp
bWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0KLSAgdmFyIHNvY2tldEluZGV4ID0gMDsKLSAgd2hp
bGUgKHRvdGFsU2l6ZSA8IGNvbmZpZy5taW5Ub3RhbCkgewotICAgIHNvY2tldHNbc29ja2V0SW5k
ZXhdLnNlbmQoJ3JlY2VpdmUgJyArIHNpemUpOwotICAgIHNvY2tldEluZGV4ID0gKHNvY2tldElu
ZGV4ICsgMSkgJSBzb2NrZXRzLmxlbmd0aDsKLQotICAgIHRvdGFsU2l6ZSArPSBzaXplOwotICB9
Ci19Ci0KLWZ1bmN0aW9uIGNyZWF0ZVNvY2tldChjb25maWcpIHsKLSAgLy8gVE9ETyh0eW9zaGlu
byk6IEFkZCBUQ1Agd2FybSB1cC4KLSAgdmFyIHVybCA9IGNvbmZpZy5wcmVmaXhVcmw7Ci0KLSAg
Y29uZmlnLmFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwpOwotCi0gIHZhciBzb2NrZXQgPSBuZXcg
V2ViU29ja2V0KHVybCk7Ci0gIHNvY2tldC5vbm1lc3NhZ2UgPSBmdW5jdGlvbihldmVudCkgewot
ICAgIGNvbmZpZy5hZGRUb0xvZygnVW5leHBlY3RlZCBtZXNzYWdlIHJlY2VpdmVkLiBBYm9ydGlu
Zy4nKTsKLSAgfTsKLSAgc29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbigpIHsKLSAgICBjb25maWcu
YWRkVG9Mb2coJ0Vycm9yJyk7Ci0gIH07Ci0gIHNvY2tldC5vbmNsb3NlID0gZnVuY3Rpb24oZXZl
bnQpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0Nsb3NlZCcpOwotICB9OwotICByZXR1cm4gc29j
a2V0OwotfQotCi12YXIgdGFza3MgPSBbXTsKLQotZnVuY3Rpb24gc3RhcnRCZW5jaG1hcmsoY29u
ZmlnKSB7Ci0gIGNsZWFyVGltZW91dCh0aW1lcklEKTsKLSAgZGVzdHJveUFsbFNvY2tldHMoKTsK
LQotICBudW1Fc3RhYmxpc2hlZFNvY2tldHMgPSAwOwotCi0gIGZvciAodmFyIGkgPSAwOyBpIDwg
Y29uZmlnLm51bVNvY2tldHM7ICsraSkgewotICAgIHZhciBzb2NrZXQgPSBjcmVhdGVTb2NrZXQo
Y29uZmlnKTsKLSAgICBzb2NrZXQub25vcGVuID0gZnVuY3Rpb24oKSB7Ci0gICAgICBjb25maWcu
YWRkVG9Mb2coJ09wZW5lZCcpOwotCi0gICAgICArK251bUVzdGFibGlzaGVkU29ja2V0czsKLQot
ICAgICAgaWYgKG51bUVzdGFibGlzaGVkU29ja2V0cyA9PSBzb2NrZXRzLmxlbmd0aCkgewotICAg
ICAgICBydW5OZXh0VGFzayhjb25maWcpOwotICAgICAgfQotICAgIH07Ci0gICAgc29ja2V0cy5w
dXNoKHNvY2tldCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcnVuTmV4dFRhc2soY29uZmlnKSB7Ci0g
IHZhciB0YXNrID0gdGFza3Muc2hpZnQoKTsKLSAgaWYgKHRhc2sgPT0gdW5kZWZpbmVkKSB7Ci0g
ICAgY29uZmlnLmFkZFRvTG9nKCdGaW5pc2hlZCcpOwotICAgIGRlc3Ryb3lBbGxTb2NrZXRzKCk7
Ci0gICAgcmV0dXJuOwotICB9Ci0gIHRpbWVySUQgPSBzZXRUaW1lb3V0KHRhc2ssIDApOwotfQot
Ci1mdW5jdGlvbiBidWlsZExlZ2VuZFN0cmluZyhjb25maWcpIHsKLSAgdmFyIGxlZ2VuZCA9ICcn
Ci0gIGlmIChjb25maWcucHJpbnRTaXplKQotICAgIGxlZ2VuZCA9ICdNZXNzYWdlIHNpemUgaW4g
S2lCLCBUaW1lL21lc3NhZ2UgaW4gbXMsICc7Ci0gIGxlZ2VuZCArPSAnU3BlZWQgaW4ga0Ivcyc7
Ci0gIHJldHVybiBsZWdlbmQ7Ci19Ci0KLWZ1bmN0aW9uIGdldENvbmZpZ1N0cmluZyhjb25maWcp
IHsKLSAgcmV0dXJuICcoV2ViU29ja2V0JyArCi0gICAgJywgJyArICh0eXBlb2YgaW1wb3J0U2Ny
aXB0cyAhPT0gInVuZGVmaW5lZCIgPyAnV29ya2VyJyA6ICdNYWluJykgKwotICAgICcsIG51bVNv
Y2tldHM9JyArIGNvbmZpZy5udW1Tb2NrZXRzICsKLSAgICAnLCBudW1JdGVyYXRpb25zPScgKyBj
b25maWcubnVtSXRlcmF0aW9ucyArCi0gICAgJywgdmVyaWZ5RGF0YT0nICsgY29uZmlnLnZlcmlm
eURhdGEgKwotICAgICcsIG1pblRvdGFsPScgKyBjb25maWcubWluVG90YWwgKwotICAgICcsIG51
bVdhcm1VcEl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsKLSAgICAn
KSc7Ci19Ci0KLWZ1bmN0aW9uIGFkZFRhc2tzKGNvbmZpZywgc3RlcEZ1bmMpIHsKLSAgZm9yICh2
YXIgaSA9IDA7Ci0gICAgICBpIDwgY29uZmlnLm51bVdhcm1VcEl0ZXJhdGlvbnMgKyBjb25maWcu
bnVtSXRlcmF0aW9uczsgKytpKSB7Ci0gICAgLy8gSWdub3JlIHRoZSBmaXJzdCB8Y29uZmlnLm51
bVdhcm1VcEl0ZXJhdGlvbnN8IGl0ZXJhdGlvbnMuCi0gICAgaWYgKGkgPT0gY29uZmlnLm51bVdh
cm1VcEl0ZXJhdGlvbnMpCi0gICAgICBhZGRSZXN1bHRDbGVhcmluZ1Rhc2soY29uZmlnKTsKLQot
ICAgIHZhciBtdWx0aXBsaWVySW5kZXggPSAwOwotICAgIGZvciAodmFyIHNpemUgPSBjb25maWcu
c3RhcnRTaXplOwotICAgICAgICAgc2l6ZSA8PSBjb25maWcuc3RvcFRocmVzaG9sZDsKLSAgICAg
ICAgICsrbXVsdGlwbGllckluZGV4KSB7Ci0gICAgICB2YXIgdGFzayA9IHN0ZXBGdW5jLmJpbmQo
Ci0gICAgICAgICAgbnVsbCwKLSAgICAgICAgICBzaXplLAotICAgICAgICAgIGNvbmZpZyk7Ci0g
ICAgICB0YXNrcy5wdXNoKHRhc2spOwotICAgICAgc2l6ZSAqPSBjb25maWcubXVsdGlwbGllcnNb
Ci0gICAgICAgICAgbXVsdGlwbGllckluZGV4ICUgY29uZmlnLm11bHRpcGxpZXJzLmxlbmd0aF07
Ci0gICAgfQotICB9Ci19Ci0KLWZ1bmN0aW9uIGFkZFJlc3VsdFJlcG9ydGluZ1Rhc2soY29uZmln
LCB0aXRsZSkgewotICB0YXNrcy5wdXNoKGZ1bmN0aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVs
bDsKLSAgICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkodGl0bGUpOwotICAgICAgcmVwb3J0QXZlcmFn
ZURhdGEoY29uZmlnKTsKLSAgICAgIGNsZWFyQXZlcmFnZURhdGEoKTsKLSAgICAgIHJ1bk5leHRU
YXNrKGNvbmZpZyk7Ci0gIH0pOwotfQotCi1mdW5jdGlvbiBhZGRSZXN1bHRDbGVhcmluZ1Rhc2so
Y29uZmlnKSB7Ci0gIHRhc2tzLnB1c2goZnVuY3Rpb24oKXsKLSAgICAgIHRpbWVySUQgPSBudWxs
OwotICAgICAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICAgICAgcnVuTmV4dFRhc2soY29uZmlnKTsK
LSAgfSk7Ci19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmsoY29uZmlnKSB7Ci0gIGNvbmZpZy5h
ZGRUb0xvZygnU2VuZCBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5k
U3RyaW5nKGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsK
LSAgYWRkVGFza3MoY29uZmlnLCBzZW5kQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJlcG9y
dGluZ1Rhc2soY29uZmlnLCAnU2VuZCBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25m
aWcpKTsKLSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQotZnVuY3Rpb24gcmVjZWl2ZUJl
bmNobWFyayhjb25maWcpIHsKLSAgY29uZmlnLmFkZFRvTG9nKCdSZWNlaXZlIGJlbmNobWFyaycp
OwotICBjb25maWcuYWRkVG9Mb2coYnVpbGRMZWdlbmRTdHJpbmcoY29uZmlnKSk7Ci0KLSAgdGFz
a3MgPSBbXTsKLSAgY2xlYXJBdmVyYWdlRGF0YSgpOwotICBhZGRUYXNrcyhjb25maWcsIHJlY2Vp
dmVCZW5jaG1hcmtTdGVwKTsKLSAgYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsCi0gICAg
ICAnUmVjZWl2ZSBCZW5jaG1hcmsgJyArIGdldENvbmZpZ1N0cmluZyhjb25maWcpKTsKLSAgc3Rh
cnRCZW5jaG1hcmsoY29uZmlnKTsKLX0KLQotZnVuY3Rpb24gYmF0Y2hCZW5jaG1hcmsoY29uZmln
KSB7Ci0gIGNvbmZpZy5hZGRUb0xvZygnQmF0Y2ggYmVuY2htYXJrJyk7Ci0gIGNvbmZpZy5hZGRU
b0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVh
ckF2ZXJhZ2VEYXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFya1N0ZXApOwot
ICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJrICcgKyBnZXRD
b25maWdTdHJpbmcoY29uZmlnKSk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgcmVjZWl2ZUJlbmNobWFy
a1N0ZXApOwotICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1JlY2VpdmUgQmVuY2ht
YXJrICcgKwotICAgICAgZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykpOwotICBzdGFydEJlbmNobWFy
ayhjb25maWcpOwotfQotCi1mdW5jdGlvbiBzdG9wKGNvbmZpZykgewotICBjbGVhclRpbWVvdXQo
dGltZXJJRCk7Ci0gIHRpbWVySUQgPSBudWxsOwotICBjb25maWcuYWRkVG9Mb2coJ1N0b3BwZWQn
KTsKLSAgZGVzdHJveUFsbFNvY2tldHMoKTsKLX0KLQotb25tZXNzYWdlID0gZnVuY3Rpb24gKG1l
c3NhZ2UpIHsKLSAgdmFyIGNvbmZpZyA9IG1lc3NhZ2UuZGF0YS5jb25maWc7Ci0gIGNvbmZpZy5h
ZGRUb0xvZyA9IHdvcmtlckFkZFRvTG9nOwotICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gd29ya2Vy
QWRkVG9TdW1tYXJ5OwotICBjb25maWcubWVhc3VyZVZhbHVlID0gd29ya2VyTWVhc3VyZVZhbHVl
OwotICBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdzZW5kQmVuY2htYXJrJykKLSAgICBzZW5k
QmVuY2htYXJrKGNvbmZpZyk7Ci0gIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAncmVj
ZWl2ZUJlbmNobWFyaycpCi0gICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOwotICBlbHNlIGlm
IChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ2JhdGNoQmVuY2htYXJrJykKLSAgICBiYXRjaEJlbmNo
bWFyayhjb25maWcpOwotICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ3N0b3AnKQot
ICAgIHN0b3AoY29uZmlnKTsKLX07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNo
bWFya19oZWxwZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9iZW5jaG1hcmtfaGVscGVyX3dz
aC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRhZDBiZmVlZmM2ZjQ0MzA1NzFi
N2I1MzIzM2ZiNzk1MDYxNGNmMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFya19oZWxwZXJfd3NoLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsODUgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMywgR29vZ2xlIEluYy4K
LSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
LSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0j
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiSGFuZGxl
ciBmb3IgYmVuY2htYXJrLmh0bWwuIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgotICAgICMgVHVybiBvZmYgY29tcHJlc3Npb24uCi0gICAgcmVxdWVz
dC53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KToKLSAgICBkYXRhID0gJycKLQotICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgIGNvbW1hbmQgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAg
ICBpZiBjb21tYW5kIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBu
b3QgaXNpbnN0YW5jZShjb21tYW5kLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ0ludmFsaWQgY29tbWFuZCBkYXRhOicgKyBjb21tYW5kKQotICAgICAgICBjb21tYW5k
cyA9IGNvbW1hbmQuc3BsaXQoJyAnKQotICAgICAgICBpZiBsZW4oY29tbWFuZHMpID09IDA6Ci0g
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQgZGF0YTogJyArIGNv
bW1hbmQpCi0KLSAgICAgICAgaWYgY29tbWFuZHNbMF0gPT0gJ3JlY2VpdmUnOgotICAgICAgICAg
ICAgaWYgbGVuKGNvbW1hbmRzKSAhPSAyOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAnSWxsZWdhbCBudW1iZXIgb2YgYXJndW1lbnRz
IGZvciBzZW5kIGNvbW1hbmQnICsKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQpCi0g
ICAgICAgICAgICBzaXplID0gaW50KGNvbW1hbmRzWzFdKQotCi0gICAgICAgICAgICAjIFJldXNl
IGRhdGEgaWYgcG9zc2libGUuCi0gICAgICAgICAgICBpZiBsZW4oZGF0YSkgIT0gc2l6ZToKLSAg
ICAgICAgICAgICAgICBkYXRhID0gJ2EnICogc2l6ZQotICAgICAgICAgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKGRhdGEsIGJpbmFyeT1UcnVlKQotICAgICAgICBlbGlmIGNvbW1h
bmRzWzBdID09ICdzZW5kJzoKLSAgICAgICAgICAgIGlmIGxlbihjb21tYW5kcykgIT0gMjoKLSAg
ICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAg
J0lsbGVnYWwgbnVtYmVyIG9mIGFyZ3VtZW50cyBmb3IgcmVjZWl2ZSBjb21tYW5kJyArCi0gICAg
ICAgICAgICAgICAgICAgICAgICBjb21tYW5kKQotICAgICAgICAgICAgdmVyaWZ5X2RhdGEgPSBj
b21tYW5kc1sxXSA9PSAnMScKLQotICAgICAgICAgICAgZGF0YSA9IHJlcXVlc3Qud3Nfc3RyZWFt
LnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignUGF5bG9hZCBub3QgcmVjZWl2ZWQnKQotICAgICAg
ICAgICAgc2l6ZSA9IGxlbihkYXRhKQotCi0gICAgICAgICAgICBpZiB2ZXJpZnlfZGF0YToKLSAg
ICAgICAgICAgICAgICBpZiBkYXRhICE9ICdhJyAqIHNpemU6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgdmVyaWZpY2F0aW9uIGZhaWxlZCcpCi0KLSAgICAg
ICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShzdHIoc2l6ZSkpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNvbW1hbmQ6ICcg
KyBjb21tYW5kc1swXSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvY2xvc2Vfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jbG9zZV93c2gucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YjA4Mzg0MDgxMjQ1Mzk3OTc2NTdkNDBk
NjQyNzhmMWE2NDgxYzAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jbG9zZV93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2
OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJl
c2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAg
ICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlz
dHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotaW1wb3J0IHN0cnVjdAotCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3Ry
ZWFtCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAg
IHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHdo
aWxlIFRydWU6Ci0gICAgICAgIGxpbmUgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3Nh
Z2UoKQotICAgICAgICBpZiBsaW5lIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAg
ICAgY29kZSwgcmVhc29uID0gbGluZS5zcGxpdCgnICcsIDEpCi0gICAgICAgIGlmIGNvZGUgaXMg
Tm9uZSBvciByZWFzb24gaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXF1
ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25uZWN0aW9uKGludChjb2RlKSwgcmVhc29uKQotICAgICAg
ICAjIGNsb3NlX2Nvbm5lY3Rpb24oKSBpbml0aWF0ZXMgY2xvc2luZyBoYW5kc2hha2UuIEl0IHZh
bGlkYXRlcyBjb2RlCi0gICAgICAgICMgYW5kIHJlYXNvbi4gSWYgeW91IHdhbnQgdG8gc2VuZCBh
IGJyb2tlbiBjbG9zZSBmcmFtZSBmb3IgYSB0ZXN0LAotICAgICAgICAjIGZvbGxvd2luZyBjb2Rl
IHdpbGwgYmUgdXNlZnVsLgotICAgICAgICAjID4gZGF0YSA9IHN0cnVjdC5wYWNrKCchSCcsIGlu
dChjb2RlKSkgKyByZWFzb24uZW5jb2RlKCdVVEYtOCcpCi0gICAgICAgICMgPiByZXF1ZXN0LmNv
bm5lY3Rpb24ud3JpdGUoc3RyZWFtLmNyZWF0ZV9jbG9zZV9mcmFtZShkYXRhKSkKLSAgICAgICAg
IyA+ICMgU3VwcHJlc3MgdG8gcmUtcmVzcG9uZCBjbGllbnQgcmVzcG9uZGluZyBjbG9zZSBmcmFt
ZS4KLSAgICAgICAgIyA+IHJhaXNlIEV4Y2VwdGlvbigiY3VzdG9taXplZCBzZXJ2ZXIgaW5pdGlh
dGVkIGNsb3NpbmcgaGFuZHNoYWtlIikKLQotCi1kZWYgd2ViX3NvY2tldF9wYXNzaXZlX2Nsb3Np
bmdfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgICMgU2ltcGx5IGVjaG8gYSBjbG9zZSBzdGF0dXMg
Y29kZQotICAgIGNvZGUsIHJlYXNvbiA9IHJlcXVlc3Qud3NfY2xvc2VfY29kZSwgcmVxdWVzdC53
c19jbG9zZV9yZWFzb24KLQotICAgICMgcHl3ZWJzb2NrZXQgc2V0cyBwc2V1ZG8gY29kZSBmb3Ig
cmVjZWl2aW5nIGFuIGVtcHR5IGJvZHkgY2xvc2UgZnJhbWUuCi0gICAgaWYgY29kZSA9PSBjb21t
b24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRDoKLSAgICAgICAgY29kZSA9IE5vbmUKLSAgICAg
ICAgcmVhc29uID0gJycKLSAgICByZXR1cm4gY29kZSwgcmVhc29uCi0KLQotIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2NvbnNvbGUuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvY29uc29sZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBj
Y2Q2ZDhmODA2NzZiOTk5MWUyMmRmYzdlYzg1MDgzNDExZGRkMGIzLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY29uc29sZS5o
dG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzE3ICswLDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDEx
LCBHb29nbGUgSW5jLgotQWxsIHJpZ2h0cyByZXNlcnZlZC4KLQotUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci1tb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi1tZXQ6Ci0KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci1ub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gICAgKiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi1jb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi1p
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi1kaXN0cmlidXRpb24uCi0gICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi1jb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLQotVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIkFTIElT
IiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QKLUxJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLU9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBM
SUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi1EQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLVRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLShJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLS0tPgotCi08IS0tCi1BIHNpbXBsZSBjb25zb2xlIGZvciB0ZXN0aW5nIFdlYlNvY2tl
dCBzZXJ2ZXIuCi0KLVR5cGUgYW4gYWRkcmVzcyBpbnRvIHRoZSB0b3AgdGV4dCBpbnB1dCBhbmQg
Y2xpY2sgY29ubmVjdCB0byBlc3RhYmxpc2gKLVdlYlNvY2tldC4gVGhlbiwgdHlwZSBzb21lIG1l
c3NhZ2UgaW50byB0aGUgYm90dG9tIHRleHQgaW5wdXQgYW5kIGNsaWNrIHNlbmQKLXRvIHNlbmQg
dGhlIG1lc3NhZ2UuIFJlY2VpdmVkL3NlbnQgbWVzc2FnZXMgYW5kIGNvbm5lY3Rpb24gc3RhdGUg
d2lsbCBiZSBzaG93bgotb24gdGhlIG1pZGRsZSB0ZXh0YXJlYS4KLS0tPgotCi08aHRtbD4KLTxo
ZWFkPgotPHRpdGxlPldlYlNvY2tldCBjb25zb2xlPC90aXRsZT4KLTxzY3JpcHQ+Ci12YXIgc29j
a2V0ID0gbnVsbDsKLQotdmFyIHNob3dUaW1lU3RhbXAgPSBmYWxzZTsKLQotdmFyIGFkZHJlc3NC
b3ggPSBudWxsOwotdmFyIHByb3RvY29sc0JveCA9IG51bGw7Ci12YXIgbG9nQm94ID0gbnVsbDsK
LXZhciBtZXNzYWdlQm94ID0gbnVsbDsKLXZhciBmaWxlQm94ID0gbnVsbDsKLXZhciBjb2RlQm94
ID0gbnVsbDsKLXZhciByZWFzb25Cb3ggPSBudWxsOwotCi1mdW5jdGlvbiBnZXRUaW1lU3RhbXAo
KSB7Ci0gIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKTsKLX0KLQotZnVuY3Rpb24gYWRkVG9M
b2cobG9nKSB7Ci0gIGlmIChzaG93VGltZVN0YW1wKSB7Ci0gICAgbG9nQm94LnZhbHVlICs9ICdb
JyArIGdldFRpbWVTdGFtcCgpICsgJ10gJzsKLSAgfQotICBsb2dCb3gudmFsdWUgKz0gbG9nICsg
J1xuJwotICAvLyBMYXJnZSBlbm91Z2ggdG8ga2VlcCBzaG93aW5nIHRoZSBsYXRlc3QgbWVzc2Fn
ZS4KLSAgbG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1bmN0aW9uIHNldGJpbmFy
eXR5cGUoYmluYXJ5VHlwZSkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9nKCdOb3Qg
Y29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc29ja2V0LmJpbmFyeVR5cGUgPSBi
aW5hcnlUeXBlOwotICBhZGRUb0xvZygnU2V0IGJpbmFyeVR5cGUgdG8gJyArIGJpbmFyeVR5cGUp
OwotfQotCi1mdW5jdGlvbiBzZW5kKCkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9n
KCdOb3QgY29ubmVjdGVkJyk7Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc29ja2V0LnNlbmQobWVz
c2FnZUJveC52YWx1ZSk7Ci0gIGFkZFRvTG9nKCc+ICcgKyBtZXNzYWdlQm94LnZhbHVlKTsKLSAg
bWVzc2FnZUJveC52YWx1ZSA9ICcnOwotfQotCi1mdW5jdGlvbiBzZW5kZmlsZSgpIHsKLSAgaWYg
KCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90IGNvbm5lY3RlZCcpOwotICAgIHJldHVybjsK
LSAgfQotCi0gIHZhciBmaWxlcyA9IGZpbGVCb3guZmlsZXM7Ci0KLSAgaWYgKGZpbGVzLmxlbmd0
aCA9PSAwKSB7Ci0gICAgYWRkVG9Mb2coJ0ZpbGUgbm90IHNlbGVjdGVkJyk7Ci0gICAgcmV0dXJu
OwotICB9Ci0KLSAgc29ja2V0LnNlbmQoZmlsZXNbMF0pOwotICBhZGRUb0xvZygnPiBTZW5kICcg
KyBmaWxlc1swXS5uYW1lKTsKLX0KLQotZnVuY3Rpb24gcGFyc2VQcm90b2NvbHMocHJvdG9jb2xz
VGV4dCkgewotICB2YXIgcHJvdG9jb2xzID0gcHJvdG9jb2xzVGV4dC5zcGxpdCgnLCcpOwotICBm
b3IgKHZhciBpID0gMDsgaSA8IHByb3RvY29scy5sZW5ndGg7ICsraSkgewotICAgIHByb3RvY29s
c1tpXSA9IHByb3RvY29sc1tpXS50cmltKCk7Ci0gIH0KLQotICBpZiAocHJvdG9jb2xzLmxlbmd0
aCA9PSAwKSB7Ci0gICAgLy8gRG9uJ3QgcGFzcy4KLSAgICBwcm90b2NvbHMgPSBudWxsOwotICB9
IGVsc2UgaWYgKHByb3RvY29scy5sZW5ndGggPT0gMSkgewotICAgIGlmIChwcm90b2NvbHNbMF0u
bGVuZ3RoID09IDApIHsKLSAgICAgIC8vIERvbid0IHBhc3MuCi0gICAgICBwcm90b2NvbHMgPSBu
dWxsOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBQYXNzIGFzIGEgc3RyaW5nLgotICAgICAgcHJv
dG9jb2xzID0gcHJvdG9jb2xzWzBdOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBwcm90b2NvbHM7
Ci19Ci0KLWZ1bmN0aW9uIGNvbm5lY3QoKSB7Ci0gIHZhciB1cmwgPSBhZGRyZXNzQm94LnZhbHVl
OwotICB2YXIgcHJvdG9jb2xzID0gcGFyc2VQcm90b2NvbHMocHJvdG9jb2xzQm94LnZhbHVlKTsK
LQotICBpZiAoJ1dlYlNvY2tldCcgaW4gd2luZG93KSB7Ci0gICAgaWYgKHByb3RvY29scykgewot
ICAgICAgc29ja2V0ID0gbmV3IFdlYlNvY2tldCh1cmwsIHByb3RvY29scyk7Ci0gICAgfSBlbHNl
IHsKLSAgICAgIHNvY2tldCA9IG5ldyBXZWJTb2NrZXQodXJsKTsKLSAgICB9Ci0gIH0gZWxzZSB7
Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgc29ja2V0Lm9ub3BlbiA9IGZ1bmN0aW9uICgpIHsKLSAg
ICB2YXIgZXh0cmFJbmZvID0gW107Ci0gICAgaWYgKCgncHJvdG9jb2wnIGluIHNvY2tldCkgJiYg
c29ja2V0LnByb3RvY29sKSB7Ci0gICAgICBleHRyYUluZm8ucHVzaCgncHJvdG9jb2wgPSAnICsg
c29ja2V0LnByb3RvY29sKTsKLSAgICB9Ci0gICAgaWYgKCgnZXh0ZW5zaW9ucycgaW4gc29ja2V0
KSAmJiBzb2NrZXQuZXh0ZW5zaW9ucykgewotICAgICAgZXh0cmFJbmZvLnB1c2goJ2V4dGVuc2lv
bnMgPSAnICsgc29ja2V0LmV4dGVuc2lvbnMpOwotICAgIH0KLQotICAgIHZhciBsb2dNZXNzYWdl
ID0gJ09wZW5lZCc7Ci0gICAgaWYgKGV4dHJhSW5mby5sZW5ndGggPiAwKSB7Ci0gICAgICBsb2dN
ZXNzYWdlICs9ICcgKCcgKyBleHRyYUluZm8uam9pbignLCAnKSArICcpJzsKLSAgICB9Ci0gICAg
YWRkVG9Mb2cobG9nTWVzc2FnZSk7Ci0gIH07Ci0gIHNvY2tldC5vbm1lc3NhZ2UgPSBmdW5jdGlv
biAoZXZlbnQpIHsKLSAgICBpZiAoKCdBcnJheUJ1ZmZlcicgaW4gd2luZG93KSAmJiAoZXZlbnQu
ZGF0YSBpbnN0YW5jZW9mIEFycmF5QnVmZmVyKSkgewotICAgICAgYWRkVG9Mb2coJzwgUmVjZWl2
ZWQgYW4gQXJyYXlCdWZmZXIgb2YgJyArIGV2ZW50LmRhdGEuYnl0ZUxlbmd0aCArCi0gICAgICAg
ICAgICAgICAnIGJ5dGVzJykKLSAgICB9IGVsc2UgaWYgKCgnQmxvYicgaW4gd2luZG93KSAmJiAo
ZXZlbnQuZGF0YSBpbnN0YW5jZW9mIEJsb2IpKSB7Ci0gICAgICBhZGRUb0xvZygnPCBSZWNlaXZl
ZCBhIEJsb2Igb2YgJyArIGV2ZW50LmRhdGEuc2l6ZSArICcgYnl0ZXMnKQotICAgIH0gZWxzZSB7
Ci0gICAgICBhZGRUb0xvZygnPCAnICsgZXZlbnQuZGF0YSk7Ci0gICAgfQotICB9OwotICBzb2Nr
ZXQub25lcnJvciA9IGZ1bmN0aW9uICgpIHsKLSAgICBhZGRUb0xvZygnRXJyb3InKTsKLSAgfTsK
LSAgc29ja2V0Lm9uY2xvc2UgPSBmdW5jdGlvbiAoZXZlbnQpIHsKLSAgICB2YXIgbG9nTWVzc2Fn
ZSA9ICdDbG9zZWQgKCc7Ci0gICAgaWYgKChhcmd1bWVudHMubGVuZ3RoID09IDEpICYmICgnQ2xv
c2VFdmVudCcgaW4gd2luZG93KSAmJgotICAgICAgICAoZXZlbnQgaW5zdGFuY2VvZiBDbG9zZUV2
ZW50KSkgewotICAgICAgbG9nTWVzc2FnZSArPSAnd2FzQ2xlYW4gPSAnICsgZXZlbnQud2FzQ2xl
YW47Ci0gICAgICAvLyBjb2RlIGFuZCByZWFzb24gYXJlIHByZXNlbnQgb25seSBmb3IKLSAgICAg
IC8vIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wNiBhbmQgbGF0ZXIKLSAg
ICAgIGlmICgnY29kZScgaW4gZXZlbnQpIHsKLSAgICAgICAgbG9nTWVzc2FnZSArPSAnLCBjb2Rl
ID0gJyArIGV2ZW50LmNvZGU7Ci0gICAgICB9Ci0gICAgICBpZiAoJ3JlYXNvbicgaW4gZXZlbnQp
IHsKLSAgICAgICAgbG9nTWVzc2FnZSArPSAnLCByZWFzb24gPSAnICsgZXZlbnQucmVhc29uOwot
ICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBsb2dNZXNzYWdlICs9ICdDbG9zZUV2ZW50IGlz
IG5vdCBhdmFpbGFibGUnOwotICAgIH0KLSAgICBhZGRUb0xvZyhsb2dNZXNzYWdlICsgJyknKTsK
LSAgfTsKLQotICBpZiAocHJvdG9jb2xzKSB7Ci0gICAgYWRkVG9Mb2coJ0Nvbm5lY3QgJyArIHVy
bCArICcgKHByb3RvY29scyA9ICcgKyBwcm90b2NvbHMgKyAnKScpOwotICB9IGVsc2UgewotICAg
IGFkZFRvTG9nKCdDb25uZWN0ICcgKyB1cmwpOwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNsb3NlU29j
a2V0KCkgewotICBpZiAoIXNvY2tldCkgewotICAgIGFkZFRvTG9nKCdOb3QgY29ubmVjdGVkJyk7
Ci0gICAgcmV0dXJuOwotICB9Ci0KLSAgaWYgKGNvZGVCb3gudmFsdWUgfHwgcmVhc29uQm94LnZh
bHVlKSB7Ci0gICAgc29ja2V0LmNsb3NlKGNvZGVCb3gudmFsdWUsIHJlYXNvbkJveC52YWx1ZSk7
Ci0gIH0gZWxzZSB7Ci0gICAgc29ja2V0LmNsb3NlKCk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gcHJp
bnRTdGF0ZSgpIHsKLSAgaWYgKCFzb2NrZXQpIHsKLSAgICBhZGRUb0xvZygnTm90IGNvbm5lY3Rl
ZCcpOwotICAgIHJldHVybjsKLSAgfQotCi0gIGFkZFRvTG9nKAotICAgICAgJ3VybCA9ICcgKyBz
b2NrZXQudXJsICsKLSAgICAgICcsIHJlYWR5U3RhdGUgPSAnICsgc29ja2V0LnJlYWR5U3RhdGUg
KwotICAgICAgJywgYnVmZmVyZWRBbW91bnQgPSAnICsgc29ja2V0LmJ1ZmZlcmVkQW1vdW50KTsK
LX0KLQotZnVuY3Rpb24gaW5pdCgpIHsKLSAgdmFyIHNjaGVtZSA9IHdpbmRvdy5sb2NhdGlvbi5w
cm90b2NvbCA9PSAnaHR0cHM6JyA/ICd3c3M6Ly8nIDogJ3dzOi8vJzsKLSAgdmFyIGRlZmF1bHRB
ZGRyZXNzID0gc2NoZW1lICsgd2luZG93LmxvY2F0aW9uLmhvc3QgKyAnL2VjaG8nOwotCi0gIGFk
ZHJlc3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkcmVzcycpOwotICBwcm90b2Nv
bHNCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncHJvdG9jb2xzJyk7Ci0gIGxvZ0JveCA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKTsKLSAgbWVzc2FnZUJveCA9IGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdtZXNzYWdlJyk7Ci0gIGZpbGVCb3ggPSBkb2N1bWVudC5nZXRFbGVt
ZW50QnlJZCgnZmlsZScpOwotICBjb2RlQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2Nv
ZGUnKTsKLSAgcmVhc29uQm94ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3JlYXNvbicpOwot
Ci0gIGFkZHJlc3NCb3gudmFsdWUgPSBkZWZhdWx0QWRkcmVzczsKLQotICBpZiAoISgnV2ViU29j
a2V0JyBpbiB3aW5kb3cpKSB7Ci0gICAgYWRkVG9Mb2coJ1dlYlNvY2tldCBpcyBub3QgYXZhaWxh
YmxlJyk7Ci0gIH0KLX0KLTwvc2NyaXB0PgotPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLWZvcm0g
ewotICBtYXJnaW46IDBweDsKLX0KLQotI2Nvbm5lY3RfZGl2LCAjbG9nX2RpdiwgI3NlbmRfZGl2
LCAjc2VuZGZpbGVfZGl2LCAjY2xvc2VfZGl2LCAjcHJpbnRzdGF0ZV9kaXYgewotICBwYWRkaW5n
OiA1cHg7Ci0gIG1hcmdpbjogNXB4OwotICBib3JkZXItd2lkdGg6IDBweCAwcHggMHB4IDEwcHg7
Ci0gIGJvcmRlci1zdHlsZTogc29saWQ7Ci0gIGJvcmRlci1jb2xvcjogc2lsdmVyOwotfQotPC9z
dHlsZT4KLTwvaGVhZD4KLTxib2R5IG9ubG9hZD0iaW5pdCgpIj4KLQotPGRpdj4KLQotPGRpdiBp
ZD0iY29ubmVjdF9kaXYiPgotICA8Zm9ybSBhY3Rpb249IiMiIG9uc3VibWl0PSJjb25uZWN0KCk7
IHJldHVybiBmYWxzZTsiPgotICAgIHVybCA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9ImFkZHJlc3Mi
IHNpemU9IjQwIj4KLSAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0iY29ubmVjdCI+Ci0g
ICAgPGJyLz4KLSAgICBwcm90b2NvbHMgPGlucHV0IHR5cGU9InRleHQiIGlkPSJwcm90b2NvbHMi
IHNpemU9IjIwIj4KLSAgPC9mb3JtPgotPC9kaXY+Ci0KLTxkaXYgaWQ9ImxvZ19kaXYiPgotICA8
dGV4dGFyZWEgaWQ9ImxvZyIgcm93cz0iMTAiIGNvbHM9IjQwIiByZWFkb25seT48L3RleHRhcmVh
PgotICA8YnIvPgotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giCi0gICAgICAgICBuYW1lPSJzaG93
dGltZXN0YW1wIgotICAgICAgICAgdmFsdWU9InNob3d0aW1lc3RhbXAiCi0gICAgICAgICBvbmNs
aWNrPSJzaG93VGltZVN0YW1wID0gdGhpcy5jaGVja2VkIj5TaG93IHRpbWUgc3RhbXAKLTwvZGl2
PgotCi08ZGl2IGlkPSJzZW5kX2RpdiI+Ci0gIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9InNl
bmQoKTsgcmV0dXJuIGZhbHNlOyI+Ci0gICAgZGF0YSA8aW5wdXQgdHlwZT0idGV4dCIgaWQ9Im1l
c3NhZ2UiIHNpemU9IjQwIj4KLSAgICA8aW5wdXQgdHlwZT0ic3VibWl0IiB2YWx1ZT0ic2VuZCI+
Ci0gIDwvZm9ybT4KLTwvZGl2PgotCi08ZGl2IGlkPSJzZW5kZmlsZV9kaXYiPgotICA8Zm9ybSBh
Y3Rpb249IiMiIG9uc3VibWl0PSJzZW5kZmlsZSgpOyByZXR1cm4gZmFsc2U7Ij4KLSAgICA8aW5w
dXQgdHlwZT0iZmlsZSIgaWQ9ImZpbGUiIHNpemU9IjQwIj4KLSAgICA8aW5wdXQgdHlwZT0ic3Vi
bWl0IiB2YWx1ZT0ic2VuZCBmaWxlIj4KLSAgPC9mb3JtPgotCi0gIFNldCBiaW5hcnlUeXBlCi0g
IDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImJpbmFyeXR5cGUiCi0gICAgICAg
ICB2YWx1ZT0iYmxvYiIKLSAgICAgICAgIG9uY2xpY2s9InNldGJpbmFyeXR5cGUoJ2Jsb2InKSIg
Y2hlY2tlZD5ibG9iCi0gIDxpbnB1dCB0eXBlPSJyYWRpbyIKLSAgICAgICAgIG5hbWU9ImJpbmFy
eXR5cGUiCi0gICAgICAgICB2YWx1ZT0iYXJyYXlidWZmZXIiCi0gICAgICAgICBvbmNsaWNrPSJz
ZXRiaW5hcnl0eXBlKCdhcnJheWJ1ZmZlcicpIj5hcnJheWJ1ZmZlcgotPC9kaXY+Ci0KLTxkaXYg
aWQ9ImNsb3NlX2RpdiI+Ci0gIDxmb3JtIGFjdGlvbj0iIyIgb25zdWJtaXQ9ImNsb3NlU29ja2V0
KCk7IHJldHVybiBmYWxzZTsiPgotICAgIGNvZGUgPGlucHV0IHR5cGU9InRleHQiIGlkPSJjb2Rl
IiBzaXplPSIxMCI+Ci0gICAgcmVhc29uIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0icmVhc29uIiBz
aXplPSIyMCI+Ci0gICAgPGlucHV0IHR5cGU9InN1Ym1pdCIgdmFsdWU9ImNsb3NlIj4KLSAgPC9m
b3JtPgotPC9kaXY+Ci0KLTxkaXYgaWQ9InByaW50c3RhdGVfZGl2Ij4KLSAgPGlucHV0IHR5cGU9
ImJ1dHRvbiIgdmFsdWU9InByaW50IHN0YXRlIiBvbmNsaWNrPSJwcmludFN0YXRlKCk7Ij4KLTwv
ZGl2PgotCi08L2Rpdj4KLQotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
ZXhhbXBsZS9jb29raWVfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb29raWVfd3NoLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YjMyNzE1MmU3MDFmN2QyMDMxZDdjOWNlMDQ2
MjRjZmE4NGFjMTZkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY29va2llX3dzaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDMy
ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5
bGUKLSMgbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0
Ci0jIGh0dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2Jz
ZAotCi0KLWltcG9ydCB1cmxwYXJzZQotCi0KLWRlZiBfYWRkX3NldF9jb29raWUocmVxdWVzdCwg
dmFsdWUpOgotICAgIHJlcXVlc3QuZXh0cmFfaGVhZGVycy5hcHBlbmQoKCdTZXQtQ29va2llJywg
dmFsdWUpKQotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToK
LSAgICBjb21wb25lbnRzID0gdXJscGFyc2UudXJscGFyc2UocmVxdWVzdC51cmkpCi0gICAgY29t
bWFuZCA9IGNvbXBvbmVudHNbNF0KLQotICAgIE9ORV9EQVlfTElGRSA9ICdNYXgtQWdlPTg2NDAw
JwotCi0gICAgaWYgY29tbWFuZCA9PSAnc2V0JzoKLSAgICAgICAgX2FkZF9zZXRfY29va2llKHJl
cXVlc3QsICc7ICcuam9pbihbJ2Zvbz1iYXInLCBPTkVfREFZX0xJRkVdKSkKLSAgICBlbGlmIGNv
bW1hbmQgPT0gJ3NldF9odHRwb25seSc6Ci0gICAgICAgIF9hZGRfc2V0X2Nvb2tpZShyZXF1ZXN0
LAotICAgICAgICAgICAgJzsgJy5qb2luKFsnaHR0cE9ubHlGb289YmFyJywgT05FX0RBWV9MSUZF
LCAnaHR0cE9ubHknXSkpCi0gICAgZWxpZiBjb21tYW5kID09ICdjbGVhcic6Ci0gICAgICAgIF9h
ZGRfc2V0X2Nvb2tpZShyZXF1ZXN0LCAnZm9vPTA7IE1heC1BZ2U9MCcpCi0gICAgICAgIF9hZGRf
c2V0X2Nvb2tpZShyZXF1ZXN0LCAnaHR0cE9ubHlGb289MDsgTWF4LUFnZT0wJykKLQotCi1kZWYg
d2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHBhc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvZWNob19jbGllbnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9f
Y2xpZW50LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDNjZTY0ZThiODg2NTYy
ZmM2OTIwOTgzNGJmOTJiMTM5OTE0MmY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNob19jbGllbnQucHkKKysrIC9kZXYv
bnVsbApAQCAtMSwxMTI4ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5
cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotIiIiU2ltcGxlIFdlYlNvY2tldCBjbGllbnQgbmFtZWQgZWNob19jbGll
bnQganVzdCBiZWNhdXNlIG9mIGhpc3RvcmljYWwgcmVhc29uLgotCi1tb2RfcHl3ZWJzb2NrZXQg
ZGlyZWN0b3J5IG11c3QgYmUgaW4gUFlUSE9OUEFUSC4KLQotRXhhbXBsZSBVc2FnZToKLQotIyBz
ZXJ2ZXIgc2V0dXAKLSAlIGNkICRweXdlYnNvY2tldAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBw
eXRob24gLi9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSAtcCA4ODgwIFwKLSAgICAtZCAk
Y3dkL3NyYy9leGFtcGxlCi0KLSMgcnVuIGNsaWVudAotICUgUFlUSE9OUEFUSD0kY3dkL3NyYyBw
eXRob24gLi9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weSAtcCA4ODgwIFwKLSAgICAgLXMgbG9j
YWxob3N0IFwKLSAgICAgLW8gaHR0cDovL2xvY2FsaG9zdCAtciAvZWNobyAtbSB0ZXN0Ci0KLW9y
Ci0KLSMgcnVuIGVjaG8gY2xpZW50IHRvIHRlc3QgSUVURiBIeUJpIDAwIHByb3RvY29sCi0gcnVu
IHdpdGggLS1wcm90b2NvbC12ZXJzaW9uPWh5YmkwMAotIiIiCi0KLQotaW1wb3J0IGJhc2U2NAot
aW1wb3J0IGNvZGVjcwotaW1wb3J0IGxvZ2dpbmcKLWZyb20gb3B0cGFyc2UgaW1wb3J0IE9wdGlv
blBhcnNlcgotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWltcG9ydCBzb2Nr
ZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1w
b3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0
ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25z
IGltcG9ydCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgX1Blck1lc3NhZ2VEZWZsYXRlRnJhbWVyCi1mcm9t
IG1vZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBfcGFyc2Vfd2luZG93X2JpdHMKLWZy
b20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0
cmVhbSBpbXBvcnQgU3RyZWFtT3B0aW9ucwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0
aWwKLQotCi1fVElNRU9VVF9TRUMgPSAxMAotX1VOREVGSU5FRF9QT1JUID0gLTEKLQotX1VQR1JB
REVfSEVBREVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1fVVBHUkFERV9IRUFERVJfSElY
SUU3NSA9ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVBREVSID0gJ0Nv
bm5lY3Rpb246IFVwZ3JhZGVcclxuJwotCi0jIFNwZWNpYWwgbWVzc2FnZSB0aGF0IHRlbGxzIHRo
ZSBlY2hvIHNlcnZlciB0byBzdGFydCBjbG9zaW5nIGhhbmRzaGFrZQotX0dPT0RCWUVfTUVTU0FH
RSA9ICdHb29kYnllJwotCi1fUFJPVE9DT0xfVkVSU0lPTl9IWUJJMTMgPSAnaHliaTEzJwotX1BS
T1RPQ09MX1ZFUlNJT05fSFlCSTA4ID0gJ2h5YmkwOCcKLV9QUk9UT0NPTF9WRVJTSU9OX0hZQkkw
MCA9ICdoeWJpMDAnCi1fUFJPVE9DT0xfVkVSU0lPTl9ISVhJRTc1ID0gJ2hpeGllNzUnCi0KLSMg
Q29uc3RhbnRzIGZvciB0aGUgLS10bHNfbW9kdWxlIGZsYWcuCi1fVExTX0JZX1NUQU5EQVJEX01P
RFVMRSA9ICdzc2wnCi1fVExTX0JZX1BZT1BFTlNTTCA9ICdweW9wZW5zc2wnCi0KLSMgVmFsdWVz
IHVzZWQgYnkgdGhlIC0tdGxzLXZlcnNpb24gZmxhZy4KLV9UTFNfVkVSU0lPTl9TU0wyMyA9ICdz
c2wyMycKLV9UTFNfVkVSU0lPTl9TU0wzID0gJ3NzbDMnCi1fVExTX1ZFUlNJT05fVExTMSA9ICd0
bHMxJwotCi0KLWNsYXNzIENsaWVudEhhbmRzaGFrZUVycm9yKEV4Y2VwdGlvbik6Ci0gICAgcGFz
cwotCi0KLWRlZiBfYnVpbGRfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgotICAgIHJldHVybiAnR0VU
ICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBfb3JpZ2luX2hlYWRlcihoZWFk
ZXIsIG9yaWdpbik6Ci0gICAgIyA0LjEgMTMuIGNvbmNhdGVuYXRpb24gb2YgdGhlIHN0cmluZyAi
T3JpZ2luOiIsIGEgVSswMDIwIFNQQUNFIGNoYXJhY3RlciwKLSAgICAjIGFuZCB0aGUgL29yaWdp
bi8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvIC9maWVsZHMvLgotICAg
IHJldHVybiAnJXM6ICVzXHJcbicgJSAoaGVhZGVyLCBvcmlnaW4ubG93ZXIoKSkKLQotCi1kZWYg
X2Zvcm1hdF9ob3N0X2hlYWRlcihob3N0LCBwb3J0LCBzZWN1cmUpOgotICAgICMgNC4xIDkuIExl
dCAvaG9zdHBvcnQvIGJlIGFuIGVtcHR5IHN0cmluZy4KLSAgICAjIDQuMSAxMC4gQXBwZW5kIHRo
ZSAvaG9zdC8gdmFsdWUsIGNvbnZlcnRlZCB0byBBU0NJSSBsb3dlcmNhc2UsIHRvCi0gICAgIyAv
aG9zdHBvcnQvCi0gICAgaG9zdHBvcnQgPSBob3N0Lmxvd2VyKCkKLSAgICAjIDQuMSAxMS4gSWYg
L3NlY3VyZS8gaXMgZmFsc2UsIGFuZCAvcG9ydC8gaXMgbm90IDgwLCBvciBpZiAvc2VjdXJlLwot
ICAgICMgaXMgdHJ1ZSwgYW5kIC9wb3J0LyBpcyBub3QgNDQzLCB0aGVuIGFwcGVuZCBhIFUrMDAz
QSBDT0xPTiBjaGFyYWN0ZXIKLSAgICAjICg6KSBmb2xsb3dlZCBieSB0aGUgdmFsdWUgb2YgL3Bv
cnQvLCBleHByZXNzZWQgYXMgYSBiYXNlLXRlbiBpbnRlZ2VyLAotICAgICMgdG8gL2hvc3Rwb3J0
LwotICAgIGlmICgobm90IHNlY3VyZSBhbmQgcG9ydCAhPSBjb21tb24uREVGQVVMVF9XRUJfU09D
S0VUX1BPUlQpIG9yCi0gICAgICAgIChzZWN1cmUgYW5kIHBvcnQgIT0gY29tbW9uLkRFRkFVTFRf
V0VCX1NPQ0tFVF9TRUNVUkVfUE9SVCkpOgotICAgICAgICBob3N0cG9ydCArPSAnOicgKyBzdHIo
cG9ydCkKLSAgICAjIDQuMSAxMi4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJIb3N0OiIs
IGEgVSswMDIwIFNQQUNFCi0gICAgIyBjaGFyYWN0ZXIsIGFuZCAvaG9zdHBvcnQvLCB0byAvZmll
bGRzLy4KLSAgICByZXR1cm4gJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5IT1NUX0hFQURFUiwgaG9z
dHBvcnQpCi0KLQotZGVmIF9yZWNlaXZlX2J5dGVzKHNvY2tldCwgbGVuZ3RoKToKLSAgICBieXRl
cyA9IFtdCi0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0gICAgd2hpbGUgcmVtYWluaW5nID4gMDoK
LSAgICAgICAgcmVjZWl2ZWRfYnl0ZXMgPSBzb2NrZXQucmVjdihyZW1haW5pbmcpCi0gICAgICAg
IGlmIG5vdCByZWNlaXZlZF9ieXRlczoKLSAgICAgICAgICAgIHJhaXNlIElPRXJyb3IoCi0gICAg
ICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcgcmVxdWVzdGVk
IGxlbmd0aCAnCi0gICAgICAgICAgICAgICAgJyhyZXF1ZXN0ZWQgJWQgYnl0ZXMgYnV0IHJlY2Vp
dmVkIG9ubHkgJWQgYnl0ZXMpJyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0aCwgbGVuZ3RoIC0g
cmVtYWluaW5nKSkKLSAgICAgICAgYnl0ZXMuYXBwZW5kKHJlY2VpdmVkX2J5dGVzKQotICAgICAg
ICByZW1haW5pbmcgLT0gbGVuKHJlY2VpdmVkX2J5dGVzKQotICAgIHJldHVybiAnJy5qb2luKGJ5
dGVzKQotCi0KLWRlZiBfZ2V0X21hbmRhdG9yeV9oZWFkZXIoZmllbGRzLCBuYW1lKToKLSAgICAi
IiJHZXRzIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIHNwZWNpZmllZCBieSBuYW1lIGZyb20gZmll
bGRzLgotCi0gICAgVGhpcyBmdW5jdGlvbiBleHBlY3RzIHRoYXQgdGhlcmUncyBvbmx5IG9uZSBo
ZWFkZXIgd2l0aCB0aGUgc3BlY2lmaWVkIG5hbWUKLSAgICBpbiBmaWVsZHMuIE90aGVyd2lzZSwg
cmFpc2VzIGFuIENsaWVudEhhbmRzaGFrZUVycm9yLgotICAgICIiIgotCi0gICAgdmFsdWVzID0g
ZmllbGRzLmdldChuYW1lLmxvd2VyKCkpCi0gICAgaWYgdmFsdWVzIGlzIE5vbmUgb3IgbGVuKHZh
bHVlcykgPT0gMDoKLSAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAg
ICAgICAnJXMgaGVhZGVyIG5vdCBmb3VuZDogJXInICUgKG5hbWUsIHZhbHVlcykpCi0gICAgaWYg
bGVuKHZhbHVlcykgPiAxOgotICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAg
ICAgICAgICAgICdNdWx0aXBsZSAlcyBoZWFkZXJzIGZvdW5kOiAlcicgJSAobmFtZSwgdmFsdWVz
KSkKLSAgICByZXR1cm4gdmFsdWVzWzBdCi0KLQotZGVmIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVh
ZGVyKGZpZWxkcywgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3Rl
ZF92YWx1ZSwgY2FzZV9zZW5zaXRpdmU9RmFsc2UpOgotICAgICIiIkdldHMgYW5kIHZhbGlkYXRl
cyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBzcGVjaWZpZWQgYnkgbmFtZSBmcm9tCi0gICAgZmll
bGRzLgotCi0gICAgSWYgZXhwZWN0ZWRfdmFsdWUgaXMgc3BlY2lmaWVkLCBjb21wYXJlcyBleHBl
Y3RlZCB2YWx1ZSBhbmQgYWN0dWFsIHZhbHVlCi0gICAgYW5kIHJhaXNlcyBhbiBDbGllbnRIYW5k
c2hha2VFcnJvciBvbiBmYWlsdXJlLiBZb3UgY2FuIHNwZWNpZnkgY2FzZQotICAgIHNlbnNpdGl2
ZW5lc3MgaW4gdGhpcyBjb21wYXJpc29uIGJ5IGNhc2Vfc2Vuc2l0aXZlIHBhcmFtZXRlci4gVGhp
cyBmdW5jdGlvbgotICAgIGV4cGVjdHMgdGhhdCB0aGVyZSdzIG9ubHkgb25lIGhlYWRlciB3aXRo
IHRoZSBzcGVjaWZpZWQgbmFtZSBpbiBmaWVsZHMuCi0gICAgT3RoZXJ3aXNlLCByYWlzZXMgYW4g
Q2xpZW50SGFuZHNoYWtlRXJyb3IuCi0gICAgIiIiCi0KLSAgICB2YWx1ZSA9IF9nZXRfbWFuZGF0
b3J5X2hlYWRlcihmaWVsZHMsIG5hbWUpCi0KLSAgICBpZiAoKGNhc2Vfc2Vuc2l0aXZlIGFuZCB2
YWx1ZSAhPSBleHBlY3RlZF92YWx1ZSkgb3IKLSAgICAgICAgKG5vdCBjYXNlX3NlbnNpdGl2ZSBh
bmQgdmFsdWUubG93ZXIoKSAhPSBleHBlY3RlZF92YWx1ZS5sb3dlcigpKSk6Ci0gICAgICAgIHJh
aXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9y
IGhlYWRlciAlczogJXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAg
KG5hbWUsIGV4cGVjdGVkX3ZhbHVlLCB2YWx1ZSkpCi0KLQotY2xhc3MgX1RMU1NvY2tldChvYmpl
Y3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwKLSAgICAgICAgICAgICAgICAgcmF3X3NvY2tldCwgdGxzX21vZHVsZSwg
dGxzX3ZlcnNpb24sIGRpc2FibGVfdGxzX2NvbXByZXNzaW9uKToKLSAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgaWYgdGxzX21vZHVs
ZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAgICAgICAgIGlmIHRsc192ZXJzaW9u
ID09IF9UTFNfVkVSU0lPTl9TU0wyMzoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3NsLlBS
T1RPQ09MX1NTTHYyMwotICAgICAgICAgICAgZWxpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJ
T05fU1NMMzoKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0gc3NsLlBST1RPQ09MX1NTTHYzCi0g
ICAgICAgICAgICBlbGlmIHRsc192ZXJzaW9uID09IF9UTFNfVkVSU0lPTl9UTFMxOgotICAgICAg
ICAgICAgICAgIHZlcnNpb24gPSBzc2wuUFJPVE9DT0xfVExTdjEKLSAgICAgICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAg
J0ludmFsaWQgLS10bHMtdmVyc2lvbiBmbGFnOiAlcicgJSB0bHNfdmVyc2lvbikKLQotICAgICAg
ICAgICAgaWYgZGlzYWJsZV90bHNfY29tcHJlc3Npb246Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgJy0tZGlzYWJsZS10bHMtY29tcHJlc3Np
b24gaXMgbm90IGF2YWlsYWJsZSBmb3Igc3NsICcKLSAgICAgICAgICAgICAgICAgICAgJ21vZHVs
ZScpCi0KLSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQgPSBzc2wud3JhcF9zb2NrZXQocmF3
X3NvY2tldCwgc3NsX3ZlcnNpb249dmVyc2lvbikKLQotICAgICAgICAgICAgIyBQcmludCBjaXBo
ZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMgZG9uZSBvbiB3cmFwX3NvY2tldCBjYWxsLgotICAgICAg
ICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oIkNpcGhlcjogJXMiLCBzZWxmLl90bHNfc29ja2V0LmNp
cGhlcigpKQotICAgICAgICBlbGlmIHRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9QRU5TU0w6Ci0g
ICAgICAgICAgICBpZiB0bHNfdmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fU1NMMjM6Ci0gICAgICAg
ICAgICAgICAgdmVyc2lvbiA9IE9wZW5TU0wuU1NMLlNTTHYyM19NRVRIT0QKLSAgICAgICAgICAg
IGVsaWYgdGxzX3ZlcnNpb24gPT0gX1RMU19WRVJTSU9OX1NTTDM6Ci0gICAgICAgICAgICAgICAg
dmVyc2lvbiA9IE9wZW5TU0wuU1NMLlNTTHYzX01FVEhPRAotICAgICAgICAgICAgZWxpZiB0bHNf
dmVyc2lvbiA9PSBfVExTX1ZFUlNJT05fVExTMToKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID0g
T3BlblNTTC5TU0wuVExTdjFfTUVUSE9ECi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIC0tdGxz
LXZlcnNpb24gZmxhZzogJXInICUgdGxzX3ZlcnNpb24pCi0KLSAgICAgICAgICAgIGNvbnRleHQg
PSBPcGVuU1NMLlNTTC5Db250ZXh0KHZlcnNpb24pCi0KLSAgICAgICAgICAgIGlmIGRpc2FibGVf
dGxzX2NvbXByZXNzaW9uOgotICAgICAgICAgICAgICAgICMgT1BfTk9fQ09NUFJFU1NJT04gaXMg
bm90IGRlZmluZWQgaW4gT3BlblNTTCBtb2R1bGUuCi0gICAgICAgICAgICAgICAgY29udGV4dC5z
ZXRfb3B0aW9ucygweDAwMDIwMDAwKQotCi0gICAgICAgICAgICBzZWxmLl90bHNfc29ja2V0ID0g
T3BlblNTTC5TU0wuQ29ubmVjdGlvbihjb250ZXh0LCByYXdfc29ja2V0KQotICAgICAgICAgICAg
IyBDbGllbnQgbW9kZS4KLSAgICAgICAgICAgIHNlbGYuX3Rsc19zb2NrZXQuc2V0X2Nvbm5lY3Rf
c3RhdGUoKQotICAgICAgICAgICAgc2VsZi5fdGxzX3NvY2tldC5zZXRibG9ja2luZyhUcnVlKQot
Ci0gICAgICAgICAgICAjIERvIGhhbmRzaGFrZSBub3cgKG5vdCBuZWNlc3NhcnkpLgotICAgICAg
ICAgICAgc2VsZi5fdGxzX3NvY2tldC5kb19oYW5kc2hha2UoKQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTm8gVExTIHN1cHBvcnQgbW9kdWxlIGlzIGF2YWls
YWJsZScpCi0KLSAgICBkZWYgc2VuZChzZWxmLCBkYXRhKToKLSAgICAgICAgcmV0dXJuIHNlbGYu
X3Rsc19zb2NrZXQud3JpdGUoZGF0YSkKLQotICAgIGRlZiBzZW5kYWxsKHNlbGYsIGRhdGEpOgot
ICAgICAgICByZXR1cm4gc2VsZi5fdGxzX3NvY2tldC5zZW5kYWxsKGRhdGEpCi0KLSAgICBkZWYg
cmVjdihzZWxmLCBzaXplPS0xKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rsc19zb2NrZXQucmVh
ZChzaXplKQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fdGxz
X3NvY2tldC5jbG9zZSgpCi0KLSAgICBkZWYgZ2V0cGVlcm5hbWUoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBzZWxmLl90bHNfc29ja2V0LmdldHBlZXJuYW1lKCkKLQotCi1jbGFzcyBDbGllbnRIYW5k
c2hha2VCYXNlKG9iamVjdCk6Ci0gICAgIiIiQSBiYXNlIGNsYXNzIGZvciBXZWJTb2NrZXQgb3Bl
bmluZyBoYW5kc2hha2UgcHJvY2Vzc29ycyBmb3IgZWFjaAotICAgIHByb3RvY29sIHZlcnNpb24u
Ci0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2xvZ2dl
ciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgZGVmIF9yZWFkX2ZpZWxkcyhz
ZWxmKToKLSAgICAgICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qgb2YgbmFtZS12
YWx1ZSBwYWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgICAgICBmaWVsZHMgPSB7fQotICAgICAg
ICB3aGlsZSBUcnVlOiAgIyAiRmllbGQiCi0gICAgICAgICAgICAjIDQuMSAzMy4gbGV0IC9uYW1l
LyBhbmQgL3ZhbHVlLyBiZSBlbXB0eSBieXRlIGFycmF5cwotICAgICAgICAgICAgbmFtZSA9ICcn
Ci0gICAgICAgICAgICB2YWx1ZSA9ICcnCi0gICAgICAgICAgICAjIDQuMSAzNC4gcmVhZCAvbmFt
ZS8KLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9yZWFkX25hbWUoKQotICAgICAgICAgICAgaWYg
bmFtZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAjIDQuMSAz
NS4gcmVhZCBzcGFjZXMKLSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBv
bmUgc3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAgICAgICAgICAgY2ggPSBzZWxm
Ll9za2lwX3NwYWNlcygpCi0gICAgICAgICAgICAjIDQuMSAzNi4gcmVhZCAvdmFsdWUvCi0gICAg
ICAgICAgICB2YWx1ZSA9IHNlbGYuX3JlYWRfdmFsdWUoY2gpCi0gICAgICAgICAgICAjIDQuMSAz
Ny4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgICAgICAgICBjaCA9IF9yZWNlaXZl
X2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAgICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4
MEEKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAg
ICAgICAgICAgICAgJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZCAlciB3aGlsZSByZWFkaW5nIHZhbHVl
ICVyIGZvciAnCi0gICAgICAgICAgICAgICAgICAgICdoZWFkZXIgJXInICUgKGNoLCB2YWx1ZSwg
bmFtZSkpCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkICVyIGhlYWRl
cicsIG5hbWUpCi0gICAgICAgICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVudHJ5IHRvIHRoZSAv
ZmllbGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAgICAgICAjIGdpdmVuIGJ5IHRo
ZSBzdHJpbmcgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvbmFtZS8gYnl0ZQotICAgICAg
ICAgICAgIyBhcnJheSBhcyBhIFVURi04IHN0cmVhbSBhbmQgdGhlIHZhbHVlIGdpdmVuIGJ5IHRo
ZSBzdHJpbmcKLSAgICAgICAgICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFs
dWUvIGJ5dGUgYXJyYXkgYXMgYSBVVEYtOCBieXRlCi0gICAgICAgICAgICAjIHN0cmVhbS4KLSAg
ICAgICAgICAgIGZpZWxkcy5zZXRkZWZhdWx0KG5hbWUsIFtdKS5hcHBlbmQodmFsdWUpCi0gICAg
ICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRvIHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKLSAgICAg
ICAgcmV0dXJuIGZpZWxkcwotCi0gICAgZGVmIF9yZWFkX25hbWUoc2VsZik6Ci0gICAgICAgICMg
NC4xIDMzLiBsZXQgL25hbWUvIGJlIGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgICAgIG5hbWUgPSAn
JwotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgIyA0LjEgMzQuIHJlYWQgYSBieXRl
IGZyb20gdGhlIHNlcnZlcgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9z
b2NrZXQsIDEpCi0gICAgICAgICAgICBpZiBjaCA9PSAnXHInOiAgIyAweDBECi0gICAgICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGVsaWYgY2ggPT0gJ1xuJzogICMgMHgwQQot
ICAgICAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAg
ICAgICAgICAnVW5leHBlY3RlZCBMRiB3aGVuIHJlYWRpbmcgaGVhZGVyIG5hbWUgJXInICUgbmFt
ZSkKLSAgICAgICAgICAgIGVsaWYgY2ggPT0gJzonOiAgIyAweDNBCi0gICAgICAgICAgICAgICAg
cmV0dXJuIG5hbWUKLSAgICAgICAgICAgIGVsaWYgY2ggPj0gJ0EnIGFuZCBjaCA8PSAnWic6ICAj
IFJhbmdlIDB4MzEgdG8gMHg1QQotICAgICAgICAgICAgICAgIGNoID0gY2hyKG9yZChjaCkgKyAw
eDIwKQotICAgICAgICAgICAgICAgIG5hbWUgKz0gY2gKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgbmFtZSArPSBjaAotCi0gICAgZGVmIF9za2lwX3NwYWNlcyhzZWxmKToKLSAg
ICAgICAgIyA0LjEgMzUuIHJlYWQgYSBieXRlIGZyb20gdGhlIHNlcnZlcgotICAgICAgICB3aGls
ZSBUcnVlOgotICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEp
Ci0gICAgICAgICAgICBpZiBjaCA9PSAnICc6ICAjIDB4MjAKLSAgICAgICAgICAgICAgICBjb250
aW51ZQotICAgICAgICAgICAgcmV0dXJuIGNoCi0KLSAgICBkZWYgX3JlYWRfdmFsdWUoc2VsZiwg
Y2gpOgotICAgICAgICAjIDQuMSAzMy4gbGV0IC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBhcnJheXMK
LSAgICAgICAgdmFsdWUgPSAnJwotICAgICAgICAjIDQuMSAzNi4gcmVhZCBhIGJ5dGUgZnJvbSBz
ZXJ2ZXIuCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiBjaCA9PSAnXHInOiAg
IyAweDBECi0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlCi0gICAgICAgICAgICBlbGlmIGNo
ID09ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhl
YWRlciB2YWx1ZSAlcicgJSB2YWx1ZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgdmFsdWUgKz0gY2gKLSAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0ZXMoc2VsZi5fc29j
a2V0LCAxKQotCi0KLWRlZiBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFtZXIoZXh0ZW5zaW9u
X3Jlc3BvbnNlKToKLSAgICAiIiJWYWxpZGF0ZSB0aGUgcmVzcG9uc2UgYW5kIHJldHVybiBhIGZy
YW1lciBvYmplY3QgdXNpbmcgdGhlIHBhcmFtZXRlcnMgaW4KLSAgICB0aGUgcmVzcG9uc2UuIFRo
aXMgbWV0aG9kIGRvZXNuJ3QgYWNjZXB0IHRoZSBzZXJ2ZXJfLiogcGFyYW1ldGVycy4KLSAgICAi
IiIKLQotICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBOb25lCi0gICAgY2xpZW50X25vX2Nv
bnRleHRfdGFrZW92ZXIgPSBOb25lCi0KLSAgICBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUg
PSAoCi0gICAgICAgICAgICBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3Nvci4KLSAg
ICAgICAgICAgICAgICAgICAgX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgY2xp
ZW50X25vX2NvbnRleHRfdGFrZW92ZXJfbmFtZSA9ICgKLSAgICAgICAgICAgIFBlck1lc3NhZ2VE
ZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yLgotICAgICAgICAgICAgICAgICAgICBfQ0xJRU5UX05P
X0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0pCi0KLSAgICAjIFdlIGRpZG4ndCBzZW5kIGFueSBzZXJ2
ZXJfLiogcGFyYW1ldGVyLgotICAgICMgSGFuZGxlIHRob3NlIHBhcmFtZXRlcnMgYXMgaW52YWxp
ZCBpZiBmb3VuZCBpbiB0aGUgcmVzcG9uc2UuCi0KLSAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1f
dmFsdWUgaW4gZXh0ZW5zaW9uX3Jlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCk6Ci0gICAgICAgIGlm
IHBhcmFtX25hbWUgPT0gY2xpZW50X21heF93aW5kb3dfYml0c19uYW1lOgotICAgICAgICAgICAg
aWYgY2xpZW50X21heF93aW5kb3dfYml0cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBy
YWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0
aXBsZSAlcyBmb3VuZCcgJSBjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUpCi0KLSAgICAgICAg
ICAgIHBhcnNlZF92YWx1ZSA9IF9wYXJzZV93aW5kb3dfYml0cyhwYXJhbV92YWx1ZSkKLSAgICAg
ICAgICAgIGlmIHBhcnNlZF92YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIENs
aWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0JhZCAlczogJXIn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgIChjbGllbnRfbWF4X3dpbmRvd19iaXRzX25hbWUs
IHBhcmFtX3ZhbHVlKSkKLSAgICAgICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgPSBwYXJz
ZWRfdmFsdWUKLSAgICAgICAgZWxpZiBwYXJhbV9uYW1lID09IGNsaWVudF9ub19jb250ZXh0X3Rh
a2VvdmVyX25hbWU6Ci0gICAgICAgICAgICBpZiBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlciBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigK
LSAgICAgICAgICAgICAgICAgICAgICAgICdNdWx0aXBsZSAlcyBmb3VuZCcgJSBjbGllbnRfbm9f
Y29udGV4dF90YWtlb3Zlcl9uYW1lKQotCi0gICAgICAgICAgICBpZiBwYXJhbV92YWx1ZSBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAg
ICAgICAgICAgICAgICAgICAgICAgICdCYWQgJXM6IEhhcyB2YWx1ZSAlcicgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgKGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyX25hbWUsIHBhcmFtX3Zh
bHVlKSkKLSAgICAgICAgICAgIGNsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyID0gVHJ1ZQotCi0g
ICAgaWYgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgaXMgTm9uZToKLSAgICAgICAgY2xpZW50
X25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQotCi0gICAgcmV0dXJuIF9QZXJNZXNzYWdlRGVm
bGF0ZUZyYW1lcihjbGllbnRfbWF4X3dpbmRvd19iaXRzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLQotY2xhc3MgQ2xp
ZW50SGFuZHNoYWtlUHJvY2Vzc29yKENsaWVudEhhbmRzaGFrZUJhc2UpOgotICAgICIiIldlYlNv
Y2tldCBvcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yCi0gICAgZHJhZnQtaWV0Zi1oeWJp
LXRoZXdlYnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlci4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgotICAgICAgICBzdXBlcihDbGllbnRIYW5k
c2hha2VQcm9jZXNzb3IsIHNlbGYpLl9faW5pdF9fKCkKLQotICAgICAgICBzZWxmLl9zb2NrZXQg
PSBzb2NrZXQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgIGRlZiBoYW5kc2hh
a2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm1zIG9wZW5pbmcgaGFuZHNoYWtlIG9uIHRoZSBz
cGVjaWZpZWQgc29ja2V0LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENsaWVudEhh
bmRzaGFrZUVycm9yOiBoYW5kc2hha2UgZmFpbGVkLgotICAgICAgICAiIiIKLQotICAgICAgICBy
ZXF1ZXN0X2xpbmUgPSBfYnVpbGRfbWV0aG9kX2xpbmUoc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSkK
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2Ug
UmVxdWVzdC1MaW5lOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0X2xp
bmUpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVlc3RfbGluZSkKLQotICAgICAg
ICBmaWVsZHMgPSBbXQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIo
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3Rs
cykpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSKQotICAgICAgICBmaWVs
ZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5v
cmlnaW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnByb3RvY29s
X3ZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTA4OgotICAgICAgICAgICAgICAgIGZp
ZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoCi0gICAgICAgICAgICAgICAgICAgIGNvbW1vbi5T
RUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29w
dGlvbnMub3JpZ2luKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZmllbGRz
LmFwcGVuZChfb3JpZ2luX2hlYWRlcihjb21tb24uT1JJR0lOX0hFQURFUiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3JpZ2luKSkK
LQotICAgICAgICBvcmlnaW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAgICBzZWxmLl9r
ZXkgPSBiYXNlNjQuYjY0ZW5jb2RlKG9yaWdpbmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKAotICAgICAgICAgICAgJyVzOiAlciAoJXMpJywKLSAgICAgICAgICAgIGNvbW1vbi5T
RUNfV0VCU09DS0VUX0tFWV9IRUFERVIsCi0gICAgICAgICAgICBzZWxmLl9rZXksCi0gICAgICAg
ICAgICB1dGlsLmhleGlmeShvcmlnaW5hbF9rZXkpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKAot
ICAgICAgICAgICAgJyVzOiAlc1xyXG4nICUgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0tFWV9IRUFE
RVIsIHNlbGYuX2tleSkpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9uX2hlYWRl
ciA+IDA6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24u
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudmVyc2lvbl9oZWFkZXIpKQotICAgICAgICBl
bGlmIHNlbGYuX29wdGlvbnMucHJvdG9jb2xfdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9I
WUJJMDg6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24u
U0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNvbW1vbi5WRVJTSU9OX0hZQkkwOCkpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCclczogJWRcclxuJyAlIChjb21tb24uU0VDX1dFQlNP
Q0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbW1vbi5WRVJTSU9OX0hZQklfTEFURVNUKSkKLQotICAgICAgICBleHRlbnNpb25z
X3RvX3JlcXVlc3QgPSBbXQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFt
ZToKLSAgICAgICAgICAgIGV4dGVuc2lvbnNfdG9fcmVxdWVzdC5hcHBlbmQoCi0gICAgICAgICAg
ICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRF
TlNJT04pKQotCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2VfZGVmbGF0
ZToKLSAgICAgICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0g
ICAgICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQot
ICAgICAgICAgICAgIyBBY2NlcHQgdGhlIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9u
IHBhcmFtZXRlciBieSBkZWZhdWx0LgotICAgICAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0
ZXIoCi0gICAgICAgICAgICAgICAgICAgIFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vz
c29yLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9DTElFTlRfTUFYX1dJTkRPV19CSVRT
X1BBUkFNLAotICAgICAgICAgICAgICAgICAgICBOb25lKQotICAgICAgICAgICAgZXh0ZW5zaW9u
c190b19yZXF1ZXN0LmFwcGVuZChleHRlbnNpb24pCi0KLSAgICAgICAgaWYgbGVuKGV4dGVuc2lv
bnNfdG9fcmVxdWVzdCkgIT0gMDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoCi0gICAgICAg
ICAgICAgICAgJyVzOiAlc1xyXG4nICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJT
T0NLRVRfRVhURU5TSU9OU19IRUFERVIsCi0gICAgICAgICAgICAgICAgIGNvbW1vbi5mb3JtYXRf
ZXh0ZW5zaW9ucyhleHRlbnNpb25zX3RvX3JlcXVlc3QpKSkKLQotICAgICAgICBmb3IgZmllbGQg
aW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQpCi0KLSAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnU2VudCBjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczogJXInLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmllbGRzKQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ1N0YXJ0IHJlYWRpbmcgU3RhdHVzLUxpbmUnKQotCi0gICAgICAgIHN0YXR1c19saW5l
ID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gX3JlY2VpdmVfYnl0
ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgc3RhdHVzX2xpbmUgKz0gY2gKLSAgICAg
ICAgICAgIGlmIGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBt
ID0gcmUubWF0Y2goJ0hUVFAvXFxkK1wuXFxkKyAoXFxkXFxkXFxkKSAuKlxyXG4nLCBzdGF0dXNf
bGluZSkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFu
ZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ1dyb25nIHN0YXR1cyBsaW5lIGZvcm1hdDog
JXInICUgc3RhdHVzX2xpbmUpCi0gICAgICAgIHN0YXR1c19jb2RlID0gbS5ncm91cCgxKQotICAg
ICAgICBpZiBzdGF0dXNfY29kZSAhPSAnMTAxJzoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5k
ZWJ1ZygnVW5leHBlY3RlZCBzdGF0dXMgY29kZSAlcyB3aXRoIGZvbGxvd2luZyAnCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYWRlcnM6ICVyJywgc3RhdHVzX2NvZGUsIHNlbGYu
X3JlYWRfZmllbGRzKCkpCi0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigK
LSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgSFRUUCBzdGF0dXMgY29kZSAxMDEgYnV0IGZvdW5k
ICVyJyAlIHN0YXR1c19jb2RlKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2
ZWQgdmFsaWQgU3RhdHVzLUxpbmUnKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N0YXJ0
IHJlYWRpbmcgaGVhZGVycyB1bnRpbCB3ZSBzZWUgYW4gZW1wdHkgbGluZScpCi0KLSAgICAgICAg
ZmllbGRzID0gc2VsZi5fcmVhZF9maWVsZHMoKQotCi0gICAgICAgIGNoID0gX3JlY2VpdmVfYnl0
ZXMoc2VsZi5fc29ja2V0LCAxKQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAg
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnRXhw
ZWN0ZWQgTEYgYnV0IGZvdW5kICVyIHdoaWxlIHJlYWRpbmcgdmFsdWUgJXIgZm9yIGhlYWRlciAn
Ci0gICAgICAgICAgICAgICAgJ25hbWUgJXInICUgKGNoLCB2YWx1ZSwgbmFtZSkpCi0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBhbiBlbXB0eSBsaW5lJykKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdTZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2UgaGVhZGVyczog
JXInLCBmaWVsZHMpCi0KLSAgICAgICAgX3ZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIoCi0gICAg
ICAgICAgICBmaWVsZHMsCi0gICAgICAgICAgICBjb21tb24uVVBHUkFERV9IRUFERVIsCi0gICAg
ICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSwKLSAgICAgICAgICAgIEZhbHNl
KQotCi0gICAgICAgIF92YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmll
bGRzLAotICAgICAgICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLAotICAgICAgICAgICAg
Y29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFLAotICAgICAgICAgICAgRmFsc2UpCi0KLSAg
ICAgICAgYWNjZXB0ID0gX2dldF9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgZmllbGRz
LCBjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSKQotCi0gICAgICAgICMgVmFsaWRh
dGUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYmluYXJ5X2FjY2VwdCA9IGJhc2U2NC5iNjRk
ZWNvZGUoYWNjZXB0KQotICAgICAgICBleGNlcHQgVHlwZUVycm9yLCBlOgotICAgICAgICAgICAg
cmFpc2UgSGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9y
IGhlYWRlciAlczogJXInICUKLSAgICAgICAgICAgICAgICAoY29tbW9uLlNFQ19XRUJTT0NLRVRf
QUNDRVBUX0hFQURFUiwgYWNjZXB0KSkKLQotICAgICAgICBpZiBsZW4oYmluYXJ5X2FjY2VwdCkg
IT0gMjA6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAg
ICAgICAgICAnRGVjb2RlZCB2YWx1ZSBvZiAlcyBpcyBub3QgMjAtYnl0ZSBsb25nJyAlCi0gICAg
ICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfQUNDRVBUX0hFQURFUikKLQotICAgICAg
ICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnUmVzcG9uc2UgZm9yIGNoYWxsZW5n
ZSA6ICVyICglcyknLAotICAgICAgICAgICAgYWNjZXB0LCB1dGlsLmhleGlmeShiaW5hcnlfYWNj
ZXB0KSkKLQotICAgICAgICBiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0ID0gdXRpbC5zaGExX2hhc2go
Ci0gICAgICAgICAgICBzZWxmLl9rZXkgKyBjb21tb24uV0VCU09DS0VUX0FDQ0VQVF9VVUlEKS5k
aWdlc3QoKQotICAgICAgICBleHBlY3RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZW5jb2RlKGJpbmFy
eV9leHBlY3RlZF9hY2NlcHQpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAg
ICAgICAgJ0V4cGVjdGVkIHJlc3BvbnNlIGZvciBjaGFsbGVuZ2U6ICVyICglcyknLAotICAgICAg
ICAgICAgZXhwZWN0ZWRfYWNjZXB0LCB1dGlsLmhleGlmeShiaW5hcnlfZXhwZWN0ZWRfYWNjZXB0
KSkKLQotICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRfYWNjZXB0OgotICAgICAgICAgICAg
cmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJyb3IoCi0gICAgICAgICAgICAgICAgJ0ludmFsaWQgJXMg
aGVhZGVyOiAlciAoZXhwZWN0ZWQ6ICVzKScgJQotICAgICAgICAgICAgICAgIChjb21tb24uU0VD
X1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSLCBhY2NlcHQsIGV4cGVjdGVkX2FjY2VwdCkpCi0KLSAg
ICAgICAgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IEZhbHNlCi0gICAgICAgIHBlcm1lc3NhZ2Vf
ZGVmbGF0ZV9hY2NlcHRlZCA9IEZhbHNlCi0KLSAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBm
aWVsZHMuZ2V0KAotICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19I
RUFERVIubG93ZXIoKSkKLSAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAg
IGlmIGV4dGVuc2lvbnNfaGVhZGVyIGlzIG5vdCBOb25lIGFuZCBsZW4oZXh0ZW5zaW9uc19oZWFk
ZXIpICE9IDA6Ci0gICAgICAgICAgICBhY2NlcHRlZF9leHRlbnNpb25zID0gY29tbW9uLnBhcnNl
X2V4dGVuc2lvbnMoZXh0ZW5zaW9uc19oZWFkZXJbMF0pCi0KLSAgICAgICAgIyBUT0RPKGJhc2hp
KTogU3VwcG9ydCB0aGUgbmV3IHN0eWxlIHBlcmZyYW1lIGNvbXByZXNzaW9uIGV4dGVuc2lvbi4K
LSAgICAgICAgZm9yIGV4dGVuc2lvbiBpbiBhY2NlcHRlZF9leHRlbnNpb25zOgotICAgICAgICAg
ICAgZXh0ZW5zaW9uX25hbWUgPSBleHRlbnNpb24ubmFtZSgpCi0gICAgICAgICAgICBpZiAoZXh0
ZW5zaW9uX25hbWUgPT0gY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OIGFuZAotICAgICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMuZGVmbGF0ZV9mcmFtZSk6Ci0gICAgICAgICAgICAgICAg
ZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IFRydWUKLSAgICAgICAgICAgICAgICBwcm9jZXNzb3Ig
PSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICAgICAg
ICAgIHVudXNlZF9leHRlbnNpb25fcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9y
ZXNwb25zZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lID0g
cHJvY2Vzc29yCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsaWYgKGV4
dGVuc2lvbl9uYW1lID09IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OIGFuZAot
ICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlKToK
LSAgICAgICAgICAgICAgICBwZXJtZXNzYWdlX2RlZmxhdGVfYWNjZXB0ZWQgPSBUcnVlCi0KLSAg
ICAgICAgICAgICAgICBmcmFtZXIgPSBfZ2V0X3Blcm1lc3NhZ2VfZGVmbGF0ZV9mcmFtZXIoZXh0
ZW5zaW9uKQotICAgICAgICAgICAgICAgIGZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5h
YmxlZChUcnVlKQotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3Blcm1lc3NhZ2Vf
ZGVmbGF0ZSA9IGZyYW1lcgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAg
IHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVk
IGV4dGVuc2lvbiAlcicgJSBleHRlbnNpb25fbmFtZSkKLQotICAgICAgICBpZiAoc2VsZi5fb3B0
aW9ucy5kZWZsYXRlX2ZyYW1lIGFuZCBub3QgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCk6Ci0gICAg
ICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigKLSAgICAgICAgICAgICAgICAnUmVx
dWVzdGVkICVzLCBidXQgdGhlIHNlcnZlciByZWplY3RlZCBpdCcgJQotICAgICAgICAgICAgICAg
IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotICAgICAgICBpZiAoc2VsZi5fb3B0
aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlIGFuZAotICAgICAgICAgICAgbm90IHBlcm1lc3Nh
Z2VfZGVmbGF0ZV9hY2NlcHRlZCk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VF
cnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCAlcywgYnV0IHRoZSBzZXJ2ZXIg
cmVqZWN0ZWQgaXQnICUKLSAgICAgICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVG
TEFURV9FWFRFTlNJT04pCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogSGFuZGxlIFNlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wKLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogSGFuZGxlIENvb2tp
ZSwgZXRjLgotCi0KLWNsYXNzIENsaWVudEhhbmRzaGFrZVByb2Nlc3Nvckh5YmkwMChDbGllbnRI
YW5kc2hha2VCYXNlKToKLSAgICAiIiJXZWJTb2NrZXQgb3BlbmluZyBoYW5kc2hha2UgcHJvY2Vz
c29yIGZvcgotICAgIGRyYWZ0LWlldGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMCAoZXF1
aXZhbGVudCB0bwotICAgIGRyYWZ0LWhpeGllLXRoZXdlYnNvY2tldHByb3RvY29sLTc2KS4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIG9wdGlvbnMpOgotICAgICAg
ICBzdXBlcihDbGllbnRIYW5kc2hha2VQcm9jZXNzb3JIeWJpMDAsIHNlbGYpLl9faW5pdF9fKCkK
LQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9
IG9wdGlvbnMKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIo
c2VsZikKLQotICAgICAgICBpZiAoc2VsZi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lIG9yCi0gICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV9wZXJtZXNzYWdlX2RlZmxhdGUpOgotICAgICAgICAg
ICAgbG9nZ2luZy5jcml0aWNhbCgnSHlCaSAwMCBkb2VzblwndCBzdXBwb3J0IGV4dGVuc2lvbnMu
JykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYpOgot
ICAgICAgICAiIiJQZXJmb3JtcyBvcGVuaW5nIGhhbmRzaGFrZSBvbiB0aGUgc3BlY2lmaWVkIHNv
Y2tldC4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDbGllbnRIYW5kc2hha2VFcnJv
cjogaGFuZHNoYWtlIGZhaWxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyA0LjEgNS4gc2Vu
ZCByZXF1ZXN0IGxpbmUuCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKF9idWlsZF9tZXRo
b2RfbGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKSkKLSAgICAgICAgIyA0LjEgNi4gTGV0IC9m
aWVsZHMvIGJlIGFuIGVtcHR5IGxpc3Qgb2Ygc3RyaW5ncy4KLSAgICAgICAgZmllbGRzID0gW10K
LSAgICAgICAgIyA0LjEgNy4gQWRkIHRoZSBzdHJpbmcgIlVwZ3JhZGU6IFdlYlNvY2tldCIgdG8g
L2ZpZWxkcy8uCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSX0hJWElFNzUp
Ci0gICAgICAgICMgNC4xIDguIEFkZCB0aGUgc3RyaW5nICJDb25uZWN0aW9uOiBVcGdyYWRlIiB0
byAvZmllbGRzLy4KLSAgICAgICAgZmllbGRzLmFwcGVuZChfQ09OTkVDVElPTl9IRUFERVIpCi0g
ICAgICAgICMgNC4xIDktMTIuIEFkZCBIb3N0OiBmaWVsZCB0byAvZmllbGRzLy4KLSAgICAgICAg
ZmllbGRzLmFwcGVuZChfZm9ybWF0X2hvc3RfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQs
Ci0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpKQotICAgICAgICAjIDQuMSAxMy4g
QWRkIE9yaWdpbjogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRp
b25zLm9yaWdpbjoKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAg
ICAgICAgICAgICAgICdTcGVjaWZ5IHRoZSBvcmlnaW4gb2YgdGhlIGNvbm5lY3Rpb24gYnkgLS1v
cmlnaW4gZmxhZycpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoY29tbW9u
Lk9SSUdJTl9IRUFERVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5vcmlnaW4pKQotICAgICAgICAjIFRPRE86IDQuMSAxNCBBZGQgU2VjLVdlYlNv
Y2tldC1Qcm90b2NvbDogZmllbGQgdG8gL2ZpZWxkcy8uCi0gICAgICAgICMgVE9ETzogNC4xIDE1
IEFkZCBjb29raWUgaGVhZGVycyB0byAvZmllbGRzLy4KLQotICAgICAgICAjIDQuMSAxNi0yMy4g
QWRkIFNlYy1XZWJTb2NrZXQtS2V5PG4+IHRvIC9maWVsZHMvLgotICAgICAgICBzZWxmLl9udW1i
ZXIxLCBrZXkxID0gc2VsZi5fZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoKQotICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJ051bWJlcjE6ICVkJywgc2VsZi5fbnVtYmVyMSkKLSAgICAgICAg
ZmllbGRzLmFwcGVuZCgnJXM6ICVzXHJcbicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMV9I
RUFERVIsIGtleTEpKQotICAgICAgICBzZWxmLl9udW1iZXIyLCBrZXkyID0gc2VsZi5fZ2VuZXJh
dGVfc2VjX3dlYnNvY2tldF9rZXkoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ051bWJl
cjI6ICVkJywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnJXM6ICVzXHJc
bicgJSAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMl9IRUFERVIsIGtleTIpKQotCi0gICAgICAg
IGZpZWxkcy5hcHBlbmQoJyVzOiAwXHJcbicgJSBjb21tb24uU0VDX1dFQlNPQ0tFVF9EUkFGVF9I
RUFERVIpCi0KLSAgICAgICAgIyA0LjEgMjQuIEZvciBlYWNoIHN0cmluZyBpbiAvZmllbGRzLywg
aW4gYSByYW5kb20gb3JkZXI6IHNlbmQgdGhlCi0gICAgICAgICMgc3RyaW5nLCBlbmNvZGVkIGFz
IFVURi04LCBmb2xsb3dlZCBieSBhIFVURi04IGVuY29kZWQgVSswMDBEIENBUlJJQUdFCi0gICAg
ICAgICMgUkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQgY2hhcmFjdGVyIHBhaXIgKENSTEYpLgotICAg
ICAgICByYW5kb20uc2h1ZmZsZShmaWVsZHMpCi0gICAgICAgIGZvciBmaWVsZCBpbiBmaWVsZHM6
Ci0gICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChmaWVsZCkKLSAgICAgICAgIyA0LjEg
MjUuIHNlbmQgYSBVVEYtOC1lbmNvZGVkIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gVSswMDBBIExJ
TkUgRkVFRAotICAgICAgICAjIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgc2VsZi5f
c29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBh
IHN0cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBl
cXVpdmFsZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5k
aWFuIG9yZGVyKS4KLSAgICAgICAgc2VsZi5fa2V5MyA9IHNlbGYuX2dlbmVyYXRlX2tleTMoKQot
ICAgICAgICAjIDQuMSAyNy4gc2VuZCAva2V5My8gdG8gdGhlIHNlcnZlci4KLSAgICAgICAgc2Vs
Zi5fc29ja2V0LnNlbmRhbGwoc2VsZi5fa2V5MykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KAotICAgICAgICAgICAgJ0tleTM6ICVyICglcyknLCBzZWxmLl9rZXkzLCB1dGlsLmhleGlmeShz
ZWxmLl9rZXkzKSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBoYW5kc2hha2Un
KQotCi0gICAgICAgICMgNC4xIDI4LiBSZWFkIGJ5dGVzIGZyb20gdGhlIHNlcnZlciB1bnRpbCBl
aXRoZXIgdGhlIGNvbm5lY3Rpb24KLSAgICAgICAgIyBjbG9zZXMsIG9yIGEgMHgwQSBieXRlIGlz
IHJlYWQuIGxldCAvZmllbGQvIGJlIHRoZXNlIGJ5dGVzLCBpbmNsdWRpbmcKLSAgICAgICAgIyB0
aGUgMHgwQSBieXRlcy4KLSAgICAgICAgZmllbGQgPSAnJwotICAgICAgICB3aGlsZSBUcnVlOgot
ICAgICAgICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAg
ICAgICBmaWVsZCArPSBjaAotICAgICAgICAgICAgaWYgY2ggPT0gJ1xuJzoKLSAgICAgICAgICAg
ICAgICBicmVhawotICAgICAgICAjIGlmIC9maWVsZC8gaXMgbm90IGF0IGxlYXN0IHNldmVuIGJ5
dGVzIGxvbmcsIG9yIGlmIHRoZSBsYXN0Ci0gICAgICAgICMgdHdvIGJ5dGVzIGFyZW4ndCAweDBE
IGFuZCAweDBBIHJlc3BlY3RpdmVseSwgb3IgaWYgaXQgZG9lcyBub3QKLSAgICAgICAgIyBjb250
YWluIGF0IGxlYXN0IHR3byAweDIwIGJ5dGVzLCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25u
ZWN0aW9uCi0gICAgICAgICMgYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBsZW4o
ZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5kc3dpdGgoJ1xyXG4nKToKLSAgICAgICAgICAgIHJh
aXNlIENsaWVudEhhbmRzaGFrZUVycm9yKCdXcm9uZyBzdGF0dXMgbGluZTogJXInICUgZmllbGQp
Ci0gICAgICAgIG0gPSByZS5tYXRjaCgnW14gXSogKFteIF0qKSAuKicsIGZpZWxkKQotICAgICAg
ICBpZiBtIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hha2VFcnJvcigK
LSAgICAgICAgICAgICAgICAnTm8gSFRUUCBzdGF0dXMgY29kZSBmb3VuZCBpbiBzdGF0dXMgbGlu
ZTogJXInICUgZmllbGQpCi0gICAgICAgICMgNC4xIDI5LiBsZXQgL2NvZGUvIGJlIHRoZSBzdWJz
dHJpbmcgb2YgL2ZpZWxkLyB0aGF0IHN0YXJ0cyBmcm9tIHRoZQotICAgICAgICAjIGJ5dGUgYWZ0
ZXIgdGhlIGZpcnN0IDB4MjAgYnl0ZSwgYW5kIGVuZHMgd2l0aCB0aGUgYnl0ZSBiZWZvcmUgdGhl
Ci0gICAgICAgICMgc2Vjb25kIDB4MjAgYnl0ZS4KLSAgICAgICAgY29kZSA9IG0uZ3JvdXAoMSkK
LSAgICAgICAgIyA0LjEgMzAuIGlmIC9jb2RlLyBpcyBub3QgdGhyZWUgYnl0ZXMgbG9uZywgb3Ig
aWYgYW55IG9mIHRoZSBieXRlcyBpbgotICAgICAgICAjIC9jb2RlLyBhcmUgbm90IGluIHRoZSBy
YW5nZSAweDMwIHRvIDB4OTAsIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0Ci0gICAgICAgICMgY29u
bmVjdGlvbiBhbmQgYWJvcnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIG5vdCByZS5tYXRjaCgn
WzAtOV1bMC05XVswLTldJywgY29kZSk6Ci0gICAgICAgICAgICByYWlzZSBDbGllbnRIYW5kc2hh
a2VFcnJvcigKLSAgICAgICAgICAgICAgICAnSFRUUCBzdGF0dXMgY29kZSAlciBpcyBub3QgdGhy
ZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlCi0gICAgICAgICAgICAgICAgKGNvZGUsIGZp
ZWxkKSkKLSAgICAgICAgIyA0LjEgMzEuIGlmIC9jb2RlLywgaW50ZXJwcmV0ZWQgYXMgVVRGLTgs
IGlzICIxMDEiLCB0aGVuIG1vdmUgdG8gdGhlCi0gICAgICAgICMgbmV4dCBzdGVwLgotICAgICAg
ICBpZiBjb2RlICE9ICcxMDEnOgotICAgICAgICAgICAgcmFpc2UgQ2xpZW50SGFuZHNoYWtlRXJy
b3IoCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIEhUVFAgc3RhdHVzIGNvZGUgMTAxIGJ1dCBm
b3VuZCAlciBpbiBzdGF0dXMgbGluZTogJwotICAgICAgICAgICAgICAgICclcicgJSAoY29kZSwg
ZmllbGQpKQotICAgICAgICAjIDQuMSAzMi0zOS4gcmVhZCBmaWVsZHMgaW50byAvZmllbGRzLwot
ICAgICAgICBmaWVsZHMgPSBzZWxmLl9yZWFkX2ZpZWxkcygpCi0gICAgICAgICMgNC4xIDQwLiBf
RmllbGRzIHByb2Nlc3NpbmdfCi0gICAgICAgICMgcmVhZCBhIGJ5dGUgZnJvbSBzZXJ2ZXIKLSAg
ICAgICAgY2ggPSBfcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgIGlmIGNo
ICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9y
KCdFeHBlY3RlZCBMRiBidXQgZm91bmQgJXInICUgY2gpCi0gICAgICAgICMgNC4xIDQxLiBjaGVj
ayAvZmllbGRzLwotICAgICAgICAjIFRPRE8odWthaSk6IHByb3RvY29sCi0gICAgICAgICMgaWYg
dGhlIGVudHJ5J3MgbmFtZSBpcyAidXBncmFkZSIKLSAgICAgICAgIyAgaWYgdGhlIHZhbHVlIGlz
IG5vdCBleGFjdGx5IGVxdWFsIHRvIHRoZSBzdHJpbmcgIldlYlNvY2tldCIsCi0gICAgICAgICMg
IHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBz
LgotICAgICAgICBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxk
cywKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1v
bi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUsCi0gICAgICAgICAgICBUcnVlKQotICAg
ICAgICAjIGlmIHRoZSBlbnRyeSdzIG5hbWUgaXMgImNvbm5lY3Rpb24iCi0gICAgICAgICMgIGlm
IHRoZSB2YWx1ZSwgY29udmVydGVkIHRvIEFTQ0lJIGxvd2VyY2FzZSwgaXMgbm90IGV4YWN0bHkg
ZXF1YWwKLSAgICAgICAgIyAgdG8gdGhlIHN0cmluZyAidXBncmFkZSIsIHRoZW4gZmFpbCB0aGUg
V2ViU29ja2V0IGNvbm5lY3Rpb24gYW5kCi0gICAgICAgICMgIGFib3J0IHRoZXNlIHN0ZXBzLgot
ICAgICAgICBfdmFsaWRhdGVfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywK
LSAgICAgICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwKLSAgICAgICAgICAgIGNvbW1v
bi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRSwKLSAgICAgICAgICAgIEZhbHNlKQotCi0gICAgICAg
IG9yaWdpbiA9IF9nZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywgY29t
bW9uLlNFQ19XRUJTT0NLRVRfT1JJR0lOX0hFQURFUikKLQotICAgICAgICBsb2NhdGlvbiA9IF9n
ZXRfbWFuZGF0b3J5X2hlYWRlcigKLSAgICAgICAgICAgIGZpZWxkcywgY29tbW9uLlNFQ19XRUJT
T0NLRVRfTE9DQVRJT05fSEVBREVSKQotCi0gICAgICAgICMgVE9ETyh1a2FpKTogY2hlY2sgb3Jp
Z2luLCBsb2NhdGlvbiwgY29va2llLCAuLgotCi0gICAgICAgICMgNC4xIDQyLiBsZXQgL2NoYWxs
ZW5nZS8gYmUgdGhlIGNvbmNhdGVuYXRpb24gb2YgL251bWJlcl8xLywKLSAgICAgICAgIyBleHBy
ZXNzZWQgYXMgYSBiaWcgZW5kaWFuIDMyIGJpdCBpbnRlZ2VyLCAvbnVtYmVyXzIvLCBleHByZXNz
ZWQKLSAgICAgICAgIyBhcyBiaWcgZW5kaWFuIDMyIGJpdCBpbnRlZ2VyLCBhbmQgdGhlIGVpZ2h0
IGJ5dGVzIG9mIC9rZXlfMy8gaW4gdGhlCi0gICAgICAgICMgb3JkZXIgdGhleSB3ZXJlIHNlbnQg
b24gdGhlIHdpcmUuCi0gICAgICAgIGNoYWxsZW5nZSA9IHN0cnVjdC5wYWNrKCchSScsIHNlbGYu
X251bWJlcjEpCi0gICAgICAgIGNoYWxsZW5nZSArPSBzdHJ1Y3QucGFjaygnIUknLCBzZWxmLl9u
dW1iZXIyKQotICAgICAgICBjaGFsbGVuZ2UgKz0gc2VsZi5fa2V5MwotCi0gICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdDaGFsbGVuZ2U6ICVyICglcyknLCBjaGFsbGVu
Z2UsIHV0aWwuaGV4aWZ5KGNoYWxsZW5nZSkpCi0KLSAgICAgICAgIyA0LjEgNDMuIGxldCAvZXhw
ZWN0ZWQvIGJlIHRoZSBNRDUgZmluZ2VycHJpbnQgb2YgL2NoYWxsZW5nZS8gYXMgYQotICAgICAg
ICAjIGJpZy1lbmRpYW4gMTI4IGJpdCBzdHJpbmcuCi0gICAgICAgIGV4cGVjdGVkID0gdXRpbC5t
ZDVfaGFzaChjaGFsbGVuZ2UpLmRpZ2VzdCgpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygK
LSAgICAgICAgICAgICdFeHBlY3RlZCBjaGFsbGVuZ2UgcmVzcG9uc2U6ICVyICglcyknLAotICAg
ICAgICAgICAgZXhwZWN0ZWQsIHV0aWwuaGV4aWZ5KGV4cGVjdGVkKSkKLQotICAgICAgICAjIDQu
MSA0NC4gcmVhZCBzaXh0ZWVuIGJ5dGVzIGZyb20gdGhlIHNlcnZlci4KLSAgICAgICAgIyBsZXQg
L3JlcGx5LyBiZSB0aG9zZSBieXRlcy4KLSAgICAgICAgcmVwbHkgPSBfcmVjZWl2ZV9ieXRlcyhz
ZWxmLl9zb2NrZXQsIDE2KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAg
ICAnQWN0dWFsIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKCVzKScsIHJlcGx5LCB1dGlsLmhleGlm
eShyZXBseSkpCi0KLSAgICAgICAgIyA0LjEgNDUuIGlmIC9yZXBseS8gZG9lcyBub3QgZXhhY3Rs
eSBlcXVhbCAvZXhwZWN0ZWQvLCB0aGVuIGZhaWwKLSAgICAgICAgIyB0aGUgV2ViU29ja2V0IGNv
bm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBleHBlY3RlZCAhPSBy
ZXBseToKLSAgICAgICAgICAgIHJhaXNlIENsaWVudEhhbmRzaGFrZUVycm9yKAotICAgICAgICAg
ICAgICAgICdCYWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAoZXhwZWN0ZWQpICE9ICVyIChhY3R1
YWwpJyAlCi0gICAgICAgICAgICAgICAgKGV4cGVjdGVkLCByZXBseSkpCi0gICAgICAgICMgNC4x
IDQ2LiBUaGUgKldlYlNvY2tldCBjb25uZWN0aW9uIGlzIGVzdGFibGlzaGVkKi4KLQotICAgIGRl
ZiBfZ2VuZXJhdGVfc2VjX3dlYnNvY2tldF9rZXkoc2VsZik6Ci0gICAgICAgICMgNC4xIDE2LiBs
ZXQgL3NwYWNlc19uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMSB0byAxMiBpbmNsdXNpdmUu
Ci0gICAgICAgIHNwYWNlcyA9IHJhbmRvbS5yYW5kaW50KDEsIDEyKQotICAgICAgICAjIDQuMSAx
Ny4gbGV0IC9tYXhfbi8gYmUgdGhlIGxhcmdlc3QgaW50ZWdlciBub3QgZ3JlYXRlciB0aGFuCi0g
ICAgICAgICMgIDQsMjk0LDk2NywyOTUgZGl2aWRlZCBieSAvc3BhY2VzX24vLgotICAgICAgICBt
YXhudW0gPSA0Mjk0OTY3Mjk1IC8gc3BhY2VzCi0gICAgICAgICMgNC4xIDE4LiBsZXQgL251bWJl
cl9uLyBiZSBhIHJhbmRvbSBpbnRlZ2VyIGZyb20gMCB0byAvbWF4X24vCi0gICAgICAgICMgaW5j
bHVzaXZlLgotICAgICAgICBudW1iZXIgPSByYW5kb20ucmFuZGludCgwLCBtYXhudW0pCi0gICAg
ICAgICMgNC4xIDE5LiBsZXQgL3Byb2R1Y3Rfbi8gYmUgdGhlIHJlc3VsdCBvZiBtdWx0aXBseWlu
ZyAvbnVtYmVyX24vIGFuZAotICAgICAgICAjIC9zcGFjZXNfbi8gdG9nZXRoZXIuCi0gICAgICAg
IHByb2R1Y3QgPSBudW1iZXIgKiBzcGFjZXMKLSAgICAgICAgIyA0LjEgMjAuIGxldCAva2V5X24v
IGJlIGEgc3RyaW5nIGNvbnNpc3Rpbmcgb2YgL3Byb2R1Y3Rfbi8sIGV4cHJlc3NlZAotICAgICAg
ICAjIGluIGJhc2UgdGVuIHVzaW5nIHRoZSBudW1lcmFscyBpbiB0aGUgcmFuZ2UgVSswMDMwIERJ
R0lUIFpFUk8gKDApIHRvCi0gICAgICAgICMgVSswMDM5IERJR0lUIE5JTkUgKDkpLgotICAgICAg
ICBrZXkgPSBzdHIocHJvZHVjdCkKLSAgICAgICAgIyA0LjEgMjEuIGluc2VydCBiZXR3ZWVuIG9u
ZSBhbmQgdHdlbHZlIHJhbmRvbSBjaGFyYWN0ZXJzIGZyb20gdGhlCi0gICAgICAgICMgcmFuZ2Ug
VSswMDIxIHRvIFUrMDAyRiBhbmQgVSswMDNBIHRvIFUrMDA3RSBpbnRvIC9rZXlfbi8gYXQgcmFu
ZG9tCi0gICAgICAgICMgcG9zaXRpb25zLgotICAgICAgICBhdmFpbGFibGVfY2hhcnMgPSByYW5n
ZSgweDIxLCAweDJmICsgMSkgKyByYW5nZSgweDNhLCAweDdlICsgMSkKLSAgICAgICAgbiA9IHJh
bmRvbS5yYW5kaW50KDEsIDEyKQotICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uobik6Ci0gICAgICAg
ICAgICBjaCA9IHJhbmRvbS5jaG9pY2UoYXZhaWxhYmxlX2NoYXJzKQotICAgICAgICAgICAgcG9z
ID0gcmFuZG9tLnJhbmRpbnQoMCwgbGVuKGtleSkpCi0gICAgICAgICAgICBrZXkgPSBrZXlbMDpw
b3NdICsgY2hyKGNoKSArIGtleVtwb3M6XQotICAgICAgICAjIDQuMSAyMi4gaW5zZXJ0IC9zcGFj
ZXNfbi8gVSswMDIwIFNQQUNFIGNoYXJhY3RlcnMgaW50byAva2V5X24vIGF0Ci0gICAgICAgICMg
cmFuZG9tIHBvc2l0aW9ucyBvdGhlciB0aGFuIHN0YXJ0IG9yIGVuZCBvZiB0aGUgc3RyaW5nLgot
ICAgICAgICBmb3IgXyBpbiB4cmFuZ2Uoc3BhY2VzKToKLSAgICAgICAgICAgIHBvcyA9IHJhbmRv
bS5yYW5kaW50KDEsIGxlbihrZXkpIC0gMSkKLSAgICAgICAgICAgIGtleSA9IGtleVswOnBvc10g
KyAnICcgKyBrZXlbcG9zOl0KLSAgICAgICAgcmV0dXJuIG51bWJlciwga2V5Ci0KLSAgICBkZWYg
X2dlbmVyYXRlX2tleTMoc2VsZik6Ci0gICAgICAgICMgNC4xIDI2LiBsZXQgL2tleTMvIGJlIGEg
c3RyaW5nIGNvbnNpc3Rpbmcgb2YgZWlnaHQgcmFuZG9tIGJ5dGVzIChvcgotICAgICAgICAjIGVx
dWl2YWxlbnRseSwgYSByYW5kb20gNjQgYml0IGludGVnZXIgZW5jb2RlZCBpbiBhIGJpZy1lbmRp
YW4gb3JkZXIpLgotICAgICAgICByZXR1cm4gJycuam9pbihbY2hyKHJhbmRvbS5yYW5kaW50KDAs
IDI1NSkpIGZvciBfIGluIHhyYW5nZSg4KV0pCi0KLQotY2xhc3MgQ2xpZW50Q29ubmVjdGlvbihv
YmplY3QpOgotICAgICIiIkEgd3JhcHBlciBmb3Igc29ja2V0IG9iamVjdCB0byBwcm92aWRlIHRo
ZSBtcF9jb25uIGludGVyZmFjZS4KLSAgICBtb2RfcHl3ZWJzb2NrZXQgbGlicmFyeSBpcyBkZXNp
Z25lZCB0byBiZSB3b3JraW5nIG9uIEFwYWNoZSBtb2RfcHl0aG9uJ3MKLSAgICBtcF9jb25uIG9i
amVjdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQpOgotICAgICAg
ICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZGF0YSkKLQotICAgIGRlZiByZWFkKHNlbGYsIG4p
OgotICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0LnJlY3YobikKLQotICAgIGRlZiBnZXRfcmVt
b3RlX2FkZHIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9zb2NrZXQuZ2V0cGVlcm5hbWUo
KQotICAgIHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQotCi0KLWNsYXNz
IENsaWVudFJlcXVlc3Qob2JqZWN0KToKLSAgICAiIiJBIHdyYXBwZXIgY2xhc3MganVzdCB0byBt
YWtlIGl0IGFibGUgdG8gcGFzcyBhIHNvY2tldCBvYmplY3QgdG8KLSAgICBmdW5jdGlvbnMgdGhh
dCBleHBlY3QgYSBtcF9yZXF1ZXN0IG9iamVjdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBzb2NrZXQpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19s
b2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLSAgICAgICAgc2Vs
Zi5jb25uZWN0aW9uID0gQ2xpZW50Q29ubmVjdGlvbihzb2NrZXQpCi0KLQotZGVmIF9pbXBvcnRf
c3NsKCk6Ci0gICAgZ2xvYmFsIHNzbAotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHNzbAotICAg
ICAgICByZXR1cm4gVHJ1ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJu
IEZhbHNlCi0KLQotZGVmIF9pbXBvcnRfcHlvcGVuc3NsKCk6Ci0gICAgZ2xvYmFsIE9wZW5TU0wK
LSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBPcGVuU1NMLlNTTAotICAgICAgICByZXR1cm4gVHJ1
ZQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLQotY2xh
c3MgRWNob0NsaWVudChvYmplY3QpOgotICAgICIiIldlYlNvY2tldCBlY2hvIGNsaWVudC4iIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IG9wdGlvbnMKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gTm9uZQotCi0gICAgICAgIHNlbGYu
X2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgZGVmIHJ1bihzZWxm
KToKLSAgICAgICAgIiIiUnVuIHRoZSBjbGllbnQuCi0KLSAgICAgICAgU2hha2UgaGFuZHMgYW5k
IHRoZW4gcmVwZWF0IHNlbmRpbmcgbWVzc2FnZSBhbmQgcmVjZWl2aW5nIGl0cyBlY2hvLgotICAg
ICAgICAiIiIKLQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAg
ICAgc2VsZi5fc29ja2V0LnNldHRpbWVvdXQoc2VsZi5fb3B0aW9ucy5zb2NrZXRfdGltZW91dCkK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LmNvbm5lY3QoKHNlbGYuX29w
dGlvbnMuc2VydmVyX2hvc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCkpCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnVz
ZV90bHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fc29ja2V0ID0gX1RMU1NvY2tldCgKLSAgICAg
ICAgICAgICAgICAgICAgc2VsZi5fc29ja2V0LAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnRsc19tb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMudGxz
X3ZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZGlzYWJsZV90bHNf
Y29tcHJlc3Npb24pCi0KLSAgICAgICAgICAgIHZlcnNpb24gPSBzZWxmLl9vcHRpb25zLnByb3Rv
Y29sX3ZlcnNpb24KLQotICAgICAgICAgICAgaWYgKHZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJ
T05fSFlCSTA4IG9yCi0gICAgICAgICAgICAgICAgdmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lP
Tl9IWUJJMTMpOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZSA9IENsaWVudEhhbmRz
aGFrZVByb2Nlc3NvcigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc29ja2V0LCBzZWxmLl9v
cHRpb25zKQotICAgICAgICAgICAgZWxpZiB2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZ
QkkwMDoKLSAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2UgPSBDbGllbnRIYW5kc2hha2VQ
cm9jZXNzb3JIeWJpMDAoCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5f
b3B0aW9ucykKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigKLSAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgLS1wcm90b2NvbC12ZXJzaW9uIGZs
YWc6ICVyJyAlIHZlcnNpb24pCi0KLSAgICAgICAgICAgIHNlbGYuX2hhbmRzaGFrZS5oYW5kc2hh
a2UoKQotCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnQ29ubmVjdGlvbiBlc3RhYmxp
c2hlZCcpCi0KLSAgICAgICAgICAgIHJlcXVlc3QgPSBDbGllbnRSZXF1ZXN0KHNlbGYuX3NvY2tl
dCkKLQotICAgICAgICAgICAgdmVyc2lvbl9tYXAgPSB7Ci0gICAgICAgICAgICAgICAgX1BST1RP
Q09MX1ZFUlNJT05fSFlCSTA4OiBjb21tb24uVkVSU0lPTl9IWUJJMDgsCi0gICAgICAgICAgICAg
ICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTEzOiBjb21tb24uVkVSU0lPTl9IWUJJMTMsCi0gICAg
ICAgICAgICAgICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTAwOiBjb21tb24uVkVSU0lPTl9IWUJJ
MDB9Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3ZlcnNpb24gPSB2ZXJzaW9uX21hcFt2ZXJzaW9u
XQotCi0gICAgICAgICAgICBpZiAodmVyc2lvbiA9PSBfUFJPVE9DT0xfVkVSU0lPTl9IWUJJMDgg
b3IKLSAgICAgICAgICAgICAgICB2ZXJzaW9uID09IF9QUk9UT0NPTF9WRVJTSU9OX0hZQkkxMyk6
Ci0gICAgICAgICAgICAgICAgc3RyZWFtX29wdGlvbiA9IFN0cmVhbU9wdGlvbnMoKQotICAgICAg
ICAgICAgICAgIHN0cmVhbV9vcHRpb24ubWFza19zZW5kID0gVHJ1ZQotICAgICAgICAgICAgICAg
IHN0cmVhbV9vcHRpb24udW5tYXNrX3JlY2VpdmUgPSBGYWxzZQotCi0gICAgICAgICAgICAgICAg
aWYgc2VsZi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lIGlzIG5vdCBGYWxzZToKLSAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc29yID0gc2VsZi5fb3B0aW9ucy5kZWZsYXRlX2ZyYW1lCi0gICAgICAg
ICAgICAgICAgICAgIHByb2Nlc3Nvci5zZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9u
KQotCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy51c2VfcGVybWVzc2FnZV9kZWZs
YXRlIGlzIG5vdCBGYWxzZToKLSAgICAgICAgICAgICAgICAgICAgZnJhbWVyID0gc2VsZi5fb3B0
aW9ucy51c2VfcGVybWVzc2FnZV9kZWZsYXRlCi0gICAgICAgICAgICAgICAgICAgIGZyYW1lci5z
ZXR1cF9zdHJlYW1fb3B0aW9ucyhzdHJlYW1fb3B0aW9uKQotCi0gICAgICAgICAgICAgICAgc2Vs
Zi5fc3RyZWFtID0gU3RyZWFtKHJlcXVlc3QsIHN0cmVhbV9vcHRpb24pCi0gICAgICAgICAgICBl
bGlmIHZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSFlCSTAwOgotICAgICAgICAgICAgICAg
IHNlbGYuX3N0cmVhbSA9IFN0cmVhbUhpeGllNzUocmVxdWVzdCwgVHJ1ZSkKLQotICAgICAgICAg
ICAgZm9yIGxpbmUgaW4gc2VsZi5fb3B0aW9ucy5tZXNzYWdlLnNwbGl0KCcsJyk6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lKQotICAgICAgICAgICAgICAg
IGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ1Nl
bmQ6ICVzJyAlIGxpbmUKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAg
IHJlY2VpdmVkID0gc2VsZi5fc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0KLSAgICAgICAgICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgcHJpbnQgJ1JlY3Y6ICVzJyAlIHJlY2VpdmVkCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3Nl
OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgJ0Vycm9yOiAlcycgJSBlCi0gICAgICAg
ICAgICAgICAgICAgIHJhaXNlCi0KLSAgICAgICAgICAgIHNlbGYuX2RvX2Nsb3NpbmdfaGFuZHNo
YWtlKCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldC5jbG9zZSgp
Ci0KLSAgICBkZWYgX2RvX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYpOgotICAgICAgICAiIiJQZXJm
b3JtIGNsb3NpbmcgaGFuZHNoYWtlIHVzaW5nIHRoZSBzcGVjaWZpZWQgY2xvc2luZyBmcmFtZS4i
IiIKLQotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLm1lc3NhZ2Uuc3BsaXQoJywnKVstMV0gPT0g
X0dPT0RCWUVfTUVTU0FHRToKLSAgICAgICAgICAgICMgcmVxdWVzdGVkIHNlcnZlciBpbml0aWF0
ZWQgY2xvc2luZyBoYW5kc2hha2UsIHNvCi0gICAgICAgICAgICAjIGV4cGVjdGluZyBjbG9zaW5n
IGhhbmRzaGFrZSBtZXNzYWdlIGZyb20gc2VydmVyLgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmluZm8oJ1dhaXQgZm9yIHNlcnZlci1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAg
ICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAg
ICAgICAgaWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHByaW50ICdSZWN2IGNs
b3NlJwotICAgICAgICAgICAgICAgIHByaW50ICdTZW5kIGFjaycKLSAgICAgICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuaW5mbygKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsb3Npbmcg
aGFuZHNoYWtlIGFuZCBzZW50IGFjaycpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IHByaW50ICdTZW5kIGNsb3NlJwotICAgICAgICBzZWxmLl9zdHJlYW0uY2xvc2VfY29ubmVjdGlv
bigpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTZW50IGNsb3NpbmcgaGFuZHNoYWtlJykK
LSAgICAgICAgcHJpbnQgJ1JlY3YgYWNrJwotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVj
ZWl2ZWQgYWNrJykKLQotCi1kZWYgbWFpbigpOgotICAgIHN5cy5zdGRvdXQgPSBjb2RlY3MuZ2V0
d3JpdGVyKCd1dGYtOCcpKHN5cy5zdGRvdXQpCi0KLSAgICBwYXJzZXIgPSBPcHRpb25QYXJzZXIo
KQotICAgICMgV2UgYWNjZXB0IC0tY29tbWFuZF9saW5lX2ZsYWcgc3R5bGUgZmxhZ3Mgd2hpY2gg
aXMgdGhlIHNhbWUgYXMgR29vZ2xlCi0gICAgIyBnZmxhZ3MgaW4gYWRkaXRpb24gdG8gY29tbW9u
IC0tY29tbWFuZC1saW5lLWZsYWcgc3R5bGUgZmxhZ3MuCi0gICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy1zJywgJy0tc2VydmVyLWhvc3QnLCAnLS1zZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgZGVzdD0nc2VydmVyX2hvc3QnLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9J2xvY2FsaG9zdCcsIGhlbHA9J3NlcnZlciBob3N0JykKLSAgICBwYXJz
ZXIuYWRkX29wdGlvbignLXAnLCAnLS1zZXJ2ZXItcG9ydCcsICctLXNlcnZlcl9wb3J0JywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfcG9ydCcsIHR5cGU9J2ludCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fVU5ERUZJTkVEX1BPUlQsIGhlbHA9J3NlcnZlciBw
b3J0JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLW8nLCAnLS1vcmlnaW4nLCBkZXN0PSdvcmln
aW4nLCB0eXBlPSdzdHJpbmcnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwg
aGVscD0nb3JpZ2luJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLXInLCAnLS1yZXNvdXJjZScs
IGRlc3Q9J3Jlc291cmNlJywgdHlwZT0nc3RyaW5nJywKLSAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PScvZWNobycsIGhlbHA9J3Jlc291cmNlIHBhdGgnKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctbScsICctLW1lc3NhZ2UnLCBkZXN0PSdtZXNzYWdlJywgdHlwZT0nc3RyaW5nJywKLSAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSgnY29tbWEtc2VwYXJhdGVkIG1lc3NhZ2VzIHRvIHNl
bmQuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICclcyB3aWxsIGZvcmNlIGNsb3NlIHRo
ZSBjb25uZWN0aW9uIGZyb20gc2VydmVyLicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IF9HT09EQllFX01FU1NBR0UpKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1aWV0
JywgZGVzdD0ndmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAotICAgICAgICAgICAgICAg
ICAgICAgIGRlZmF1bHQ9VHJ1ZSwgaGVscD0nc3VwcHJlc3MgbWVzc2FnZXMnKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctdCcsICctLXRscycsIGRlc3Q9J3VzZV90bHMnLCBhY3Rpb249J3N0b3Jl
X3RydWUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J3VzZSBU
TFMgKHdzczovLykuIEJ5IGRlZmF1bHQsICcKLSAgICAgICAgICAgICAgICAgICAgICAnaXQgbG9v
a3MgZm9yIHNzbCBhbmQgcHlPcGVuU1NMIG1vZHVsZSBhbmQgdXNlcyBmb3VuZCAnCi0gICAgICAg
ICAgICAgICAgICAgICAgJ29uZS4gVXNlIC0tdGxzLW1vZHVsZSBvcHRpb24gdG8gc3BlY2lmeSB3
aGljaCBtb2R1bGUgJwotICAgICAgICAgICAgICAgICAgICAgICd0byB1c2UnKQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctLXRscy1tb2R1bGUnLCAnLS10bHNfbW9kdWxlJywgZGVzdD0ndGxzX21v
ZHVsZScsCi0gICAgICAgICAgICAgICAgICAgICAgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAg
ICAgICAgICAgICBjaG9pY2VzPVtfVExTX0JZX1NUQU5EQVJEX01PRFVMRSwgX1RMU19CWV9QWU9Q
RU5TU0xdLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1VzZSBzc2wgbW9kdWxlIGlmICIl
cyIgaXMgc3BlY2lmaWVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ1VzZSBweU9wZW5TU0wg
bW9kdWxlIGlmICIlcyIgaXMgc3BlY2lmaWVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgKF9U
TFNfQllfU1RBTkRBUkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTCkpCi0gICAgcGFyc2VyLmFk
ZF9vcHRpb24oJy0tdGxzLXZlcnNpb24nLCAnLS10bHNfdmVyc2lvbicsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0ndGxzX3ZlcnNpb24nLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9
J3N0cmluZycsIGRlZmF1bHQ9X1RMU19WRVJTSU9OX1NTTDIzLAotICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9J1RMUy9TU0wgdmVyc2lvbiB0byB1c2UuIE9uZSBvZiBcJycgKwotICAgICAgICAg
ICAgICAgICAgICAgIF9UTFNfVkVSU0lPTl9TU0wyMyArICdcJyAoU1NMIHZlcnNpb24gMiBvciAz
KSwgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBfVExTX1ZFUlNJT05fU1NMMyArICdcJyAo
U1NMIHZlcnNpb24gMyksIFwnJyArCi0gICAgICAgICAgICAgICAgICAgICAgX1RMU19WRVJTSU9O
X1RMUzEgKyAnXCcgKFRMUyB2ZXJzaW9uIDEpJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1k
aXNhYmxlLXRscy1jb21wcmVzc2lvbicsICctLWRpc2FibGVfdGxzX2NvbXByZXNzaW9uJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSdkaXNhYmxlX3Rsc19jb21wcmVzc2lvbicsCi0gICAg
ICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSdEaXNhYmxlIFRMUyBjb21wcmVzc2lvbi4gQXZhaWxh
YmxlIG9ubHkgd2hlbiAnCi0gICAgICAgICAgICAgICAgICAgICAgJ3B5T3BlblNTTCBtb2R1bGUg
aXMgdXNlZC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycsICctLXNvY2tldC10aW1lb3V0
JywgJy0tc29ja2V0X3RpbWVvdXQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NvY2tl
dF90aW1lb3V0JywgdHlwZT0naW50JywgZGVmYXVsdD1fVElNRU9VVF9TRUMsCi0gICAgICAgICAg
ICAgICAgICAgICAgaGVscD0nVGltZW91dChzZWMpIGZvciBzb2NrZXRzJykKLSAgICBwYXJzZXIu
YWRkX29wdGlvbignLS1kcmFmdDc1JywgZGVzdD0nZHJhZnQ3NScsCi0gICAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSdPYnNvbGV0ZSBvcHRpb24uIERvblwndCB1c2UgdGhpcy4nKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctLXByb3RvY29sLXZlcnNpb24nLCAnLS1wcm90b2NvbF92ZXJzaW9u
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdwcm90b2NvbF92ZXJzaW9uJywKLSAgICAg
ICAgICAgICAgICAgICAgICB0eXBlPSdzdHJpbmcnLCBkZWZhdWx0PV9QUk9UT0NPTF9WRVJTSU9O
X0hZQkkxMywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdXZWJTb2NrZXQgcHJvdG9jb2wg
dmVyc2lvbiB0byB1c2UuIE9uZSBvZiBcJycgKwotICAgICAgICAgICAgICAgICAgICAgIF9QUk9U
T0NPTF9WRVJTSU9OX0hZQkkxMyArICdcJywgXCcnICsKLSAgICAgICAgICAgICAgICAgICAgICBf
UFJPVE9DT0xfVkVSU0lPTl9IWUJJMDggKyAnXCcsIFwnJyArCi0gICAgICAgICAgICAgICAgICAg
ICAgX1BST1RPQ09MX1ZFUlNJT05fSFlCSTAwICsgJ1wnJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLS12ZXJzaW9uLWhlYWRlcicsICctLXZlcnNpb25faGVhZGVyJywKLSAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSd2ZXJzaW9uX2hlYWRlcicsCi0gICAgICAgICAgICAgICAgICAgICAgdHlw
ZT0naW50JywgZGVmYXVsdD0tMSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZ5
IFNlYy1XZWJTb2NrZXQtVmVyc2lvbiBoZWFkZXIgdmFsdWUnKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWRlZmxhdGUtZnJhbWUnLCAnLS1kZWZsYXRlX2ZyYW1lJywKLSAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdkZWZsYXRlX2ZyYW1lJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rp
b249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J1VzZSB0aGUgZGVmbGF0ZS1mcmFtZSBleHRlbnNpb24uJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLS11c2UtcGVybWVzc2FnZS1kZWZsYXRlJywgJy0tdXNlX3Blcm1lc3NhZ2VfZGVmbGF0
ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndXNlX3Blcm1lc3NhZ2VfZGVmbGF0ZScs
Ci0gICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxz
ZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdVc2UgdGhlIHBlcm1lc3NhZ2UtZGVmbGF0
ZSBleHRlbnNpb24uJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLCAnLS1s
b2dfbGV2ZWwnLCB0eXBlPSdjaG9pY2UnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xv
Z19sZXZlbCcsIGRlZmF1bHQ9J3dhcm4nLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9
WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGljYWwnXSwKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwuJykKLQotICAgIChvcHRpb25zLCB1bnVzZWRf
YXJncykgPSBwYXJzZXIucGFyc2VfYXJncygpCi0KLSAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxl
dmVsPWxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKG9wdGlvbnMubG9nX2xldmVsLnVwcGVyKCkpKQotCi0g
ICAgaWYgb3B0aW9ucy5kcmFmdDc1OgotICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCctLWRyYWZ0
NzUgb3B0aW9uIGlzIG9ic29sZXRlLicpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBv
cHRpb25zLnByb3RvY29sX3ZlcnNpb24gPT0gX1BST1RPQ09MX1ZFUlNJT05fSElYSUU3NToKLSAg
ICAgICAgbG9nZ2luZy5jcml0aWNhbCgKLSAgICAgICAgICAgICdWYWx1ZSAlcyBpcyBvYnNvbGV0
ZSBmb3IgLS1wcm90b2NvbF92ZXJzaW9uIG9wdGlvbnMnICUKLSAgICAgICAgICAgIF9QUk9UT0NP
TF9WRVJTSU9OX0hJWElFNzUpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiBvcHRpb25z
LnVzZV90bHM6Ci0gICAgICAgIGlmIG9wdGlvbnMudGxzX21vZHVsZSBpcyBOb25lOgotICAgICAg
ICAgICAgaWYgX2ltcG9ydF9zc2woKToKLSAgICAgICAgICAgICAgICBvcHRpb25zLnRsc19tb2R1
bGUgPSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRQotICAgICAgICAgICAgICAgIGxvZ2dpbmcuZGVi
dWcoJ1VzaW5nIHNzbCBtb2R1bGUnKQotICAgICAgICAgICAgZWxpZiBfaW1wb3J0X3B5b3BlbnNz
bCgpOgotICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSA9IF9UTFNfQllfUFlPUEVO
U1NMCi0gICAgICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygnVXNpbmcgcHlPcGVuU1NMIG1vZHVs
ZScpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
Ci0gICAgICAgICAgICAgICAgICAgICAgICAnVExTIHN1cHBvcnQgcmVxdWlyZXMgc3NsIG9yIHB5
T3BlblNTTCBtb2R1bGUuJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgICAgICBl
bGlmIG9wdGlvbnMudGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAg
ICAgICAgIGlmIG5vdCBfaW1wb3J0X3NzbCgpOgotICAgICAgICAgICAgICAgIGxvZ2dpbmcuY3Jp
dGljYWwoJ3NzbCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZScpCi0gICAgICAgICAgICAgICAgc3lz
LmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9Q
RU5TU0w6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9weW9wZW5zc2woKToKLSAgICAgICAg
ICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdweU9wZW5TU0wgbW9kdWxlIGlzIG5vdCBhdmFpbGFi
bGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBsb2dnaW5nLmNyaXRpY2FsKCdJbnZhbGlkIC0tdGxzLW1vZHVsZSBvcHRpb246ICVyJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9kdWxlKQotICAgICAg
ICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiAob3B0aW9ucy5kaXNhYmxlX3Rsc19jb21w
cmVzc2lvbiBhbmQKLSAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSAhPSBfVExTX0JZX1BZ
T1BFTlNTTCk6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdZb3UgY2FuIGRpc2FibGUg
VExTIGNvbXByZXNzaW9uIG9ubHkgd2hlbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdweU9wZW5TU0wgbW9kdWxlIGlzIHVzZWQuJykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0g
ICAgZWxzZToKLSAgICAgICAgaWYgb3B0aW9ucy50bHNfbW9kdWxlIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgnVXNlIC0tdGxzLW1vZHVsZSBvcHRpb24gb25seSB0
b2dldGhlciB3aXRoICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdXNlLXRscyBv
cHRpb24uJykKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICAgICAgaWYgb3B0aW9ucy5k
aXNhYmxlX3Rsc19jb21wcmVzc2lvbjoKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ1Vz
ZSAtLWRpc2FibGUtdGxzLWNvbXByZXNzaW9uIG9ubHkgdG9nZXRoZXIgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnd2l0aCAtLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBz
eXMuZXhpdCgxKQotCi0gICAgIyBEZWZhdWx0IHBvcnQgbnVtYmVyIGRlcGVuZHMgb24gd2hldGhl
ciBUTFMgaXMgdXNlZC4KLSAgICBpZiBvcHRpb25zLnNlcnZlcl9wb3J0ID09IF9VTkRFRklORURf
UE9SVDoKLSAgICAgICAgaWYgb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgb3B0aW9ucy5z
ZXJ2ZXJfcG9ydCA9IGNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIG9wdGlvbnMuc2VydmVyX3BvcnQgPSBjb21tb24uREVGQVVM
VF9XRUJfU09DS0VUX1BPUlQKLQotICAgICMgb3B0cGFyc2UgZG9lc24ndCBzZWVtIHRvIGhhbmRs
ZSBub24tYXNjaWkgZGVmYXVsdCB2YWx1ZXMuCi0gICAgIyBTZXQgZGVmYXVsdCBtZXNzYWdlIGhl
cmUuCi0gICAgaWYgbm90IG9wdGlvbnMubWVzc2FnZToKLSAgICAgICAgb3B0aW9ucy5tZXNzYWdl
ID0gdSdIZWxsbyxcdTY1ZTVcdTY3MmMnICAgIyAiSmFwYW4iIGluIEphcGFuZXNlCi0KLSAgICBF
Y2hvQ2xpZW50KG9wdGlvbnMpLnJ1bigpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoK
LSAgICBtYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fbm9leHRf
d3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGY1MTUxMjI3MTExZTExNDQy
NGM1NTg2YTE0MmE5YWRiN2Q2MDRkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvZWNob19ub2V4dF93c2gucHkKKysrIC9kZXYv
bnVsbApAQCAtMSw2MSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBB
bGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBt
ZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGlu
IGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0j
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2ds
ZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0
byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklC
VVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1fR09PREJZRV9NRVNT
QUdFID0gdSdHb29kYnllJwotCi0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShy
ZXF1ZXN0KToKLSAgICAiIiJSZWNlaXZlZCBTZWMtV2ViU29ja2V0LUV4dGVuc2lvbnMgaGVhZGVy
IHZhbHVlIGlzIHBhcnNlZCBpbnRvCi0gICAgcmVxdWVzdC53c19yZXF1ZXN0ZWRfZXh0ZW5zaW9u
cy4gcHl3ZWJzb2NrZXQgY3JlYXRlcyBleHRlbnNpb24KLSAgICBwcm9jZXNzb3JzIHVzaW5nIGl0
IGJlZm9yZSBkb19leHRyYV9oYW5kc2hha2UgY2FsbCBhbmQgbmV2ZXIgbG9va3MgYXQgaXQKLSAg
ICBhZnRlciB0aGUgY2FsbC4KLQotICAgIFRvIHJlamVjdCByZXF1ZXN0ZWQgZXh0ZW5zaW9ucywg
Y2xlYXIgdGhlIHByb2Nlc3NvciBsaXN0LgotICAgICIiIgotCi0gICAgcmVxdWVzdC53c19leHRl
bnNpb25fcHJvY2Vzc29ycyA9IFtdCi0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KToKLSAgICAiIiJFY2hvLiBTYW1lIGFzIGVjaG9fd3NoLnB5LiIiIgotCi0gICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgbGluZSA9IHJlcXVlc3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2Fn
ZSgpCi0gICAgICAgIGlmIGxpbmUgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAg
ICBpZiBpc2luc3RhbmNlKGxpbmUsIHVuaWNvZGUpOgotICAgICAgICAgICAgcmVxdWVzdC53c19z
dHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFyeT1GYWxzZSkKLSAgICAgICAgICAgIGlmIGxp
bmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZShsaW5lLCBi
aW5hcnk9VHJ1ZSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUvZWNob193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fd3NoLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODY0NmMzMmNlYjUxNWYxNWRkNTcyNjIyNjg5Yzc5
ZWU2MWU1NDNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvZWNob193c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCww
IEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1fR09PREJZRV9NRVNTQUdFID0gdSdHb29kYnllJwot
Ci0KLWRlZiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKLSAgICAjIFRo
aXMgZXhhbXBsZSBoYW5kbGVyIGFjY2VwdHMgYW55IHJlcXVlc3QuIFNlZSBvcmlnaW5fY2hlY2tf
d3NoLnB5IGZvciBob3cKLSAgICAjIHRvIHJlamVjdCBhY2Nlc3MgZnJvbSB1bnRydXN0ZWQgc2Ny
aXB0cyBiYXNlZCBvbiBvcmlnaW4gdmFsdWUuCi0KLSAgICBwYXNzICAjIEFsd2F5cyBhY2NlcHQu
Ci0KLQotZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICB3aGlsZSBU
cnVlOgotICAgICAgICBsaW5lID0gcmVxdWVzdC53c19zdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkK
LSAgICAgICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlm
IGlzaW5zdGFuY2UobGluZSwgdW5pY29kZSk6Ci0gICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVh
bS5zZW5kX21lc3NhZ2UobGluZSwgYmluYXJ5PUZhbHNlKQotICAgICAgICAgICAgaWYgbGluZSA9
PSBfR09PREJZRV9NRVNTQUdFOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKGxpbmUsIGJpbmFy
eT1UcnVlKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhh
bXBsZS9ldmVudHNvdXJjZS5jZ2kgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmNnaQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRkZGYyMzdjZjdkNDc2NDk3MzQ3ZDA5NWEx
MjI5OTQxNzdlMTQwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmNnaQorKysgL2Rldi9udWxsCkBAIC0x
LDU0ICswLDAgQEAKLSMhL3Vzci9iaW4vcHl0aG9uCi0KLSMgQ29weXJpZ2h0IDIwMTMsIEdvb2ds
ZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
LSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIi
IlRoaXMgQ0dJIHNjcmlwdCBnZW5lcmF0ZXMgdGV4dC9ldmVudC1zdHJlYW0gdHlwZSBkYXRhIHN0
cmVhbSBmb3IgdGVzdGluZwotdGhlIFNlcnZlci1TZW50IEV2ZW50cy4KLQotSXQgd2lsbCBvbmx5
IHdvcmsgY29ycmVjdGx5IHdpdGggSFRUUCBzZXJ2ZXJzIHRoYXQgZG8gbm90IGJ1ZmZlciB0aGUg
b3V0cHV0IG9mCi1DR0kgc2NyaXB0cy4KLSIiIgotCi0KLWltcG9ydCBzeXMKLWltcG9ydCB0aW1l
Ci0KLXN5cy5zdGRvdXQud3JpdGUoJ0NvbnRlbnQtdHlwZTogdGV4dC9ldmVudC1zdHJlYW1cclxu
XHJcbicpCi0KLWlkID0gMAotCi13aGlsZSBUcnVlOgotICBzeXMuc3Rkb3V0LndyaXRlKCdkYXRh
OiBIZWxsb1xyXG5pZDogJWRcclxuXHJcbicgJSBpZCkKLSAgc3lzLnN0ZG91dC5mbHVzaCgpCi0K
LSAgaWQgPSBpZCArIDEKLQotICB0aW1lLnNsZWVwKDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9l
eGFtcGxlL2V2ZW50c291cmNlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50c291cmNlLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1OThhODgwN2QxZmZjY2VjZjU4NWYx
YmI2NTZmZDJkOTAyZmNkMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5odG1sCisrKyAvZGV2L251bGwK
QEAgLTEsNzQgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdvb2dsZSBJbmMuCi1BbGwg
cmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLW1ldDoKLQotICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLWRpc3RyaWJ1dGlvbi4K
LSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi1B
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLURBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotLS0+Ci0KLTwhLS0K
LVNpbXBsZSBleGFtcGxlIG9mIHRoZSBTZXJ2ZXItU2VudCBFdmVudHMKLWh0dHA6Ly9kZXYudzMu
b3JnL2h0bWw1L2V2ZW50c291cmNlLwotCi1Gb3IgY29tcGFyaXNvbiB3aXRoIHRoZSBXZWJTb2Nr
ZXQgUHJvdG9jb2wgJiBBUEkuCi0KLVJ1biB0aGUgcHl3ZWJzb2NrZXQgd2l0aCB0aGUgLS1jZ2lf
cGF0aCBwYXJhbWV0ZXIuCi0tLT4KLQotPGh0bWw+Ci08aGVhZD4KLTx0aXRsZT5TZXJ2ZXItU2Vu
dCBFdmVudHMgRXhhbXBsZTwvdGl0bGU+Ci08c2NyaXB0PgotdmFyIGV2ZW50U291cmNlID0gbnVs
bDsKLQotZnVuY3Rpb24gYWRkVG9Mb2coZGF0YSkgewotICBsb2dCb3gudmFsdWUgKz0gZGF0YSAr
ICdcbic7Ci0gIGxvZ0JveC5zY3JvbGxUb3AgPSAxMDAwMDAwOwotfQotCi1mdW5jdGlvbiBpbml0
KCkgewotICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0KLSAgZXZl
bnRTb3VyY2UgID0gbmV3IEV2ZW50U291cmNlKCcvZXZlbnRzb3VyY2UuY2dpJyk7Ci0gIGV2ZW50
U291cmNlLm9ub3BlbiA9IGZ1bmN0aW9uKCkgewotICAgIGFkZFRvTG9nKCdvbm9wZW4gKHJlYWR5
U3RhdGUgPSAnICsgZXZlbnRTb3VyY2UucmVhZHlTdGF0ZSArICcpJyk7Ci0gIH0KLSAgZXZlbnRT
b3VyY2Uub25tZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAgICBhZGRUb0xvZyhldmVudC5k
YXRhKTsKLSAgfQotICBldmVudFNvdXJjZS5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpIHsKLSAg
ICBhZGRUb0xvZygnb25lcnJvciAocmVhZHlTdGF0ZSA9ICcgKyBldmVudFNvdXJjZS5yZWFkeVN0
YXRlICsgJyknKTsKLSAgfQotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBvbmxvYWQ9Imlu
aXQoKSI+Ci08dGV4dGFyZWEgaWQ9ImxvZyIgcm93cz0iMTAiIGNvbHM9IjQwIiByZWFkb25seT48
L3RleHRhcmVhPgotPHAgc3R5bGU9ImZvbnQtc2l6ZTogc21hbGwiPgotICBNYWtlIHN1cmUgdGhh
dCBweXdlYnNvY2tldCBpcyBydW4gd2l0aCAtLWNnaV9wYXRoIHBhcmFtZXRlci4KLTwvcD4KLTwv
Ym9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvaGFuZGxlcl9tYXAu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvZXhhbXBsZS9oYW5kbGVyX21hcC50eHQKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDIxYzRjMDlhYTAwOTFkOGJhZjI5MDg5NTk5MDU4Njc4NDJhZWI4NjUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhh
bXBsZS9oYW5kbGVyX21hcC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi0jIHdl
YnNvY2tldCBoYW5kbGVyIG1hcCBmaWxlLCB1c2VkIGJ5IHN0YW5kYWxvbmUucHkgLW0gb3B0aW9u
LgotIyBBIGxpbmUgc3RhcnRpbmcgd2l0aCAnIycgaXMgYSBjb21tZW50IGxpbmUuCi0jIEVhY2gg
bGluZSBjb25zaXN0cyBvZiAnYWxpYXNfcmVzb3VyY2VfcGF0aCcgYW5kICdleGlzdGluZ19yZXNv
dXJjZV9wYXRoJwotIyBzZXBhcmF0ZWQgYnkgc3BhY2VzLgotIyBBbGlhc2luZyBpcyBwcm9jZXNz
ZWQgZnJvbSB0aGUgdG9wIHRvIHRoZSBib3R0b20gb2YgdGhlIGxpbmUsIGFuZAotIyAnZXhpc3Rp
bmdfcmVzb3VyY2VfcGF0aCcgbXVzdCBleGlzdCBiZWZvcmUgaXQgaXMgYWxpYXNlZC4KLSMgRm9y
IGV4YW1wbGUsCi0jICAvIC9lY2hvCi0jIG1lYW5zIHRoYXQgYSByZXF1ZXN0IHRvICcvJyB3aWxs
IGJlIGhhbmRsZWQgYnkgaGFuZGxlcnMgZm9yICcvZWNobycuCi0vIC9lY2hvCi0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL2V4YW1wbGUvaHN0c193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2hzdHNf
d3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODYxOTQ2OTIxYWYwNDU5NGQ2
MjAyNmI0NmYwNzc1OGRkZmU0MDJhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvaHN0c193c2gucHkKKysrIC9kZXYvbnVsbApA
QCAtMSw0MCArMCwwIEBACi0jIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5leHRyYV9oZWFkZXJzLmFwcGVu
ZCgKLSAgICAgICAgKCdTdHJpY3QtVHJhbnNwb3J0LVNlY3VyaXR5JywgJ21heC1hZ2U9ODY0MDAn
KSkKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVl
c3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8nLCBiaW5hcnk9RmFsc2UpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2ludGVybmFsX2Vy
cm9yX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTU4MWI1NGE2NDhjMDlhMjJmMjU0NTEyN2Q3MGRm
MDUxMzQ5MjM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvaW50ZXJuYWxfZXJyb3Jfd3NoLnB5CisrKyAvZGV2L251bGwKQEAg
LTEsNDIgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IG1zZ3V0aWwKLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVx
dWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVz
dCk6Ci0gICAgcmFpc2UgbXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24oJ0ludGVudGlvbmFs
JykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUv
b3JpZ2luX2NoZWNrX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTA1NzY3YWI5MzJmYjU4MjgyNGFhZjFh
NTdkOTI0OWMzMDRiZDUxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL29yaWdpbl9jaGVja193c2gucHkKKysrIC9kZXYvbnVs
bApAQCAtMSw0NCArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyBUaGlzIGV4YW1wbGUgaXMg
ZGVyaXZlZCBmcm9tIHRlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weS4K
LQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Ci0gICAgaWYg
cmVxdWVzdC53c19vcmlnaW4gPT0gJ2h0dHA6Ly9leGFtcGxlLmNvbSc6Ci0gICAgICAgIHJldHVy
bgotICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1VuYWNjZXB0YWJsZSBvcmlnaW46ICVyJyAlIHJlcXVl
c3Qud3Nfb3JpZ2luKQotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6
Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdvcmlnaW5fY2hlY2tfd3NoLnB5IGlzIGNh
bGxlZCBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChyZXF1ZXN0
LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZiBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL2V4YW1wbGUvcHl3ZWJzb2NrZXQuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMzM1ZDEzMGE1Yzg0ZjY5ZGU0ZjgxZDM1OGZiMmNkYjViZGU0YWY2ZC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3B5d2Vi
c29ja2V0LmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotIwotIyBTYW1wbGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciBhcGFjaGUyCi0jCi1Mb2dM
ZXZlbCBkZWJ1ZwotPElmTW9kdWxlIHB5dGhvbl9tb2R1bGU+Ci0gIFB5dGhvblBhdGggInN5cy5w
YXRoK1snL21vZF9weXdlYnNvY2tldCddIgotICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0
LmhhbmRsZXJfcm9vdCAvdmFyL3d3dwotICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0Lmhh
bmRsZXJfc2NhbiAvdmFyL3d3dy93cwotICAjUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5h
bGxvd19kcmFmdDc1IE9uCi0gIDxMb2NhdGlvbiAvd3M+Ci0gICAgUHl0aG9uSGVhZGVyUGFyc2Vy
SGFuZGxlciBtb2RfcHl3ZWJzb2NrZXQuaGVhZGVycGFyc2VyaGFuZGxlcgotICA8L0xvY2F0aW9u
PgotPC9JZk1vZHVsZT4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFk
ZXJzLmNnaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJzLmNnaQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZWE1MDgwZjFmMWFlYTNhMzdhN2U3MjljNjc4ZDZhMTIzMzdi
ZWRiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL3NwZWNpYWxfaGVhZGVycy5jZ2kKKysrIC9kZXYvbnVsbApAQCAtMSwyOCAr
MCwwIEBACi0jIS91c3IvYmluL3B5dGhvbgotCi0jIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdv
dmVybmVkIGJ5IGEgQlNELXN0eWxlCi0jIGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhl
IENPUFlJTkcgZmlsZSBvciBhdAotIyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9vcGVu
LXNvdXJjZS9saWNlbnNlcy9ic2QKLQotIiIiQ0dJIHNjcmlwdCBzYW1wbGUgZm9yIHRlc3Rpbmcg
ZWZmZWN0IG9mIEhUVFAgaGVhZGVycyBvbiB0aGUgb3JpZ2luIHBhZ2UuCi0KLU5vdGUgdGhhdCBD
R0kgc2NyaXB0cyBkb24ndCB3b3JrIG9uIHRoZSBzdGFuZGFsb25lIHB5d2Vic29ja2V0IHJ1bm5p
bmcgaW4gVExTCi1tb2RlLgotIiIiCi0KLQotcHJpbnQgIiIiQ29udGVudC10eXBlOiB0ZXh0L2h0
bWwKLUNvbnRlbnQtU2VjdXJpdHktUG9saWN5OiBjb25uZWN0LXNyYyBzZWxmCi0KLTxodG1sPgot
PGhlYWQ+Ci08dGl0bGU+PC90aXRsZT4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdD4KLXZhciBz
b2NrZXQgPSBuZXcgV2ViU29ja2V0KCJ3czovL2V4YW1wbGUuY29tIik7Ci08L3NjcmlwdD4KLTwv
Ym9keT4KLTwvaHRtbD4iIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbC5qcyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL2V4YW1wbGUvdXRpbC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTFjYWQ0OTc1ZWUwY2VhZWM2YTg5ODJlMjk1NGNmOTY0ZmRlNTJlOS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWwuanMK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotLy8gQ29weXJpZ2h0IDIwMTMsIEdvb2ds
ZSBJbmMuCi0vLyBBbGwgcmlnaHRzIHJlc2VydmVkLgotLy8KLS8vIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotLy8gbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQotLy8gbWV0OgotLy8KLS8vICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0vLyBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0vLyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0vLyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIg
bWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0vLyBkaXN0cmlidXRpb24uCi0vLyAgICAgKiBO
ZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0vLyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotLy8gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLS8vCi0vLyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0vLyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0vLyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotLy8gT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0vLyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0vLyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLS8vIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotLy8gVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotLy8gKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCi0vLyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLS8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNh
dGlvbnMgKGZvciBib3RoIG1haW4gYW5kIHdvcmtlciB0aHJlYWQpLgotCi12YXIgcmVzdWx0cyA9
IHt9OwotCi1mdW5jdGlvbiBnZXRUaW1lU3RhbXAoKSB7Ci0gIHJldHVybiBEYXRlLm5vdygpOwot
fQotCi1mdW5jdGlvbiBmb3JtYXRSZXN1bHRJbktpQihzaXplLCB0aW1lUGVyTWVzc2FnZUluTXMs
IHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5NcywKLSAgICBzcGVlZCwgcHJpbnRTaXplKSB7Ci0gIGlm
IChwcmludFNpemUpIHsKLSAgICByZXR1cm4gKHNpemUgLyAxMDI0KSArCi0gICAgICAgICdcdCcg
KyB0aW1lUGVyTWVzc2FnZUluTXMudG9GaXhlZCgzKSArCi0gICAgICAgIChzdGRkZXZUaW1lUGVy
TWVzc2FnZUluTXMgPT0gLTEgPwotICAgICAgICAgICAgJycgOgotICAgICAgICAgICAgJ1x0JyAr
IHN0ZGRldlRpbWVQZXJNZXNzYWdlSW5Ncy50b0ZpeGVkKDMpKSArCi0gICAgICAgICdcdCcgKyBz
cGVlZC50b0ZpeGVkKDMpOwotICB9IGVsc2UgewotICAgIHJldHVybiBzcGVlZC50b1N0cmluZygp
OwotICB9Ci19Ci0KLWZ1bmN0aW9uIGNsZWFyQXZlcmFnZURhdGEoKSB7Ci0gIHJlc3VsdHMgPSB7
fTsKLX0KLQotZnVuY3Rpb24gcmVwb3J0QXZlcmFnZURhdGEoY29uZmlnKSB7Ci0gIGNvbmZpZy5h
ZGRUb1N1bW1hcnkoCi0gICAgICAnU2l6ZVtLaUJdXHRBdmVyYWdlIHRpbWVbbXNdXHRTdGRkZXYg
dGltZVttc11cdFNwZWVkW0tCL3NdJyk7Ci0gIGZvciAodmFyIHNpemUgaW4gcmVzdWx0cykgewot
ICAgIHZhciBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zID0gcmVzdWx0c1tzaXplXS5zdW1fdCAv
IHJlc3VsdHNbc2l6ZV0ubjsKLSAgICB2YXIgc3BlZWQgPSBjYWxjdWxhdGVTcGVlZEluS0Ioc2l6
ZSwgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5Ncyk7Ci0gICAgLy8gQ2FsY3VsYXRlIHNhbXBsZSBz
dGFuZGFyZCBkZXZpYXRpb24KLSAgICB2YXIgc3RkZGV2VGltZVBlck1lc3NhZ2VJbk1zID0gTWF0
aC5zcXJ0KAotICAgICAgICAocmVzdWx0c1tzaXplXS5zdW1fdDIgLyByZXN1bHRzW3NpemVdLm4g
LQotICAgICAgICAgICAgYXZlcmFnZVRpbWVQZXJNZXNzYWdlSW5NcyAqIGF2ZXJhZ2VUaW1lUGVy
TWVzc2FnZUluTXMpICoKLSAgICAgICAgcmVzdWx0c1tzaXplXS5uIC8KLSAgICAgICAgKHJlc3Vs
dHNbc2l6ZV0ubiAtIDEpKTsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5KGZvcm1hdFJlc3VsdElu
S2lCKAotICAgICAgICBzaXplLCBhdmVyYWdlVGltZVBlck1lc3NhZ2VJbk1zLCBzdGRkZXZUaW1l
UGVyTWVzc2FnZUluTXMsIHNwZWVkLAotICAgICAgICB0cnVlKSk7Ci0gIH0KLX0KLQotZnVuY3Rp
b24gY2FsY3VsYXRlU3BlZWRJbktCKHNpemUsIHRpbWVTcGVudEluTXMpIHsKLSAgcmV0dXJuIE1h
dGgucm91bmQoc2l6ZSAvIHRpbWVTcGVudEluTXMgKiAxMDAwKSAvIDEwMDA7Ci19Ci0KLWZ1bmN0
aW9uIGNhbGN1bGF0ZUFuZExvZ1Jlc3VsdChjb25maWcsIHNpemUsIHN0YXJ0VGltZUluTXMsIHRv
dGFsU2l6ZSkgewotICB2YXIgdGltZVNwZW50SW5NcyA9IGdldFRpbWVTdGFtcCgpIC0gc3RhcnRU
aW1lSW5NczsKLSAgdmFyIHNwZWVkID0gY2FsY3VsYXRlU3BlZWRJbktCKHRvdGFsU2l6ZSwgdGlt
ZVNwZW50SW5Ncyk7Ci0gIHZhciB0aW1lUGVyTWVzc2FnZUluTXMgPSB0aW1lU3BlbnRJbk1zIC8g
KHRvdGFsU2l6ZSAvIHNpemUpOwotICBpZiAoIXJlc3VsdHNbc2l6ZV0pIHsKLSAgICByZXN1bHRz
W3NpemVdID0ge246IDAsIHN1bV90OiAwLCBzdW1fdDI6IDB9OwotICB9Ci0gIGNvbmZpZy5tZWFz
dXJlVmFsdWUodGltZVBlck1lc3NhZ2VJbk1zKTsKLSAgcmVzdWx0c1tzaXplXS5uICsrOwotICBy
ZXN1bHRzW3NpemVdLnN1bV90ICs9IHRpbWVQZXJNZXNzYWdlSW5NczsKLSAgcmVzdWx0c1tzaXpl
XS5zdW1fdDIgKz0gdGltZVBlck1lc3NhZ2VJbk1zICogdGltZVBlck1lc3NhZ2VJbk1zOwotICBj
b25maWcuYWRkVG9Mb2coZm9ybWF0UmVzdWx0SW5LaUIoc2l6ZSwgdGltZVBlck1lc3NhZ2VJbk1z
LCAtMSwgc3BlZWQsCi0gICAgICBjb25maWcucHJpbnRTaXplKSk7Ci19Ci0KLWZ1bmN0aW9uIGZp
bGxBcnJheUJ1ZmZlcihidWZmZXIsIGMpIHsKLSAgdmFyIGk7Ci0KLSAgdmFyIHUzMkNvbnRlbnQg
PSBjICogMHgwMTAxMDEwMTsKLQotICB2YXIgdTMyQmxvY2tzID0gTWF0aC5mbG9vcihidWZmZXIu
Ynl0ZUxlbmd0aCAvIDQpOwotICB2YXIgdTMyVmlldyA9IG5ldyBVaW50MzJBcnJheShidWZmZXIs
IDAsIHUzMkJsb2Nrcyk7Ci0gIC8vIGxlbmd0aCBhdHRyaWJ1dGUgaXMgc2xvdyBvbiBDaHJvbWUu
IERvbid0IHVzZSBpdCBmb3IgbG9vcCBjb25kaXRpb24uCi0gIGZvciAoaSA9IDA7IGkgPCB1MzJC
bG9ja3M7ICsraSkgewotICAgIHUzMlZpZXdbaV0gPSB1MzJDb250ZW50OwotICB9Ci0KLSAgLy8g
RnJhY3Rpb24KLSAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5ndGggLSB1MzJCbG9ja3Mg
KiA0OwotICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyLCB1MzJCbG9ja3MgKiA0
LCB1OEJsb2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2NrczsgKytpKSB7Ci0gICAgdThW
aWV3W2ldID0gYzsKLSAgfQotfQotCi1mdW5jdGlvbiB2ZXJpZnlBcnJheUJ1ZmZlcihidWZmZXIs
IGV4cGVjdGVkQ2hhcikgewotICB2YXIgaTsKLQotICB2YXIgZXhwZWN0ZWRVMzJWYWx1ZSA9IGV4
cGVjdGVkQ2hhciAqIDB4MDEwMTAxMDE7Ci0KLSAgdmFyIHUzMkJsb2NrcyA9IE1hdGguZmxvb3Io
YnVmZmVyLmJ5dGVMZW5ndGggLyA0KTsKLSAgdmFyIHUzMlZpZXcgPSBuZXcgVWludDMyQXJyYXko
YnVmZmVyLCAwLCB1MzJCbG9ja3MpOwotICBmb3IgKGkgPSAwOyBpIDwgdTMyQmxvY2tzOyArK2kp
IHsKLSAgICBpZiAodTMyVmlld1tpXSAhPSBleHBlY3RlZFUzMlZhbHVlKSB7Ci0gICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQotICB9Ci0KLSAgdmFyIHU4QmxvY2tzID0gYnVmZmVyLmJ5dGVMZW5n
dGggLSB1MzJCbG9ja3MgKiA0OwotICB2YXIgdThWaWV3ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVy
LCB1MzJCbG9ja3MgKiA0LCB1OEJsb2Nrcyk7Ci0gIGZvciAoaSA9IDA7IGkgPCB1OEJsb2Nrczsg
KytpKSB7Ci0gICAgaWYgKHU4Vmlld1tpXSAhPSBleHBlY3RlZENoYXIpIHsKLSAgICAgIHJldHVy
biBmYWxzZTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gdmVy
aWZ5QmxvYihjb25maWcsIGJsb2IsIGV4cGVjdGVkQ2hhciwgZG9uZUNhbGxiYWNrKSB7Ci0gIHZh
ciByZWFkZXIgPSBuZXcgRmlsZVJlYWRlcihibG9iKTsKLSAgcmVhZGVyLm9uZXJyb3IgPSBmdW5j
dGlvbigpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0ZpbGVSZWFkZXIgRXJyb3I6ICcgKyByZWFk
ZXIuZXJyb3IubWVzc2FnZSk7Ci0gICAgZG9uZUNhbGxiYWNrKGJsb2Iuc2l6ZSwgZmFsc2UpOwot
ICB9Ci0gIHJlYWRlci5vbmxvYWRlbmQgPSBmdW5jdGlvbigpIHsKLSAgICB2YXIgcmVzdWx0ID0g
dmVyaWZ5QXJyYXlCdWZmZXIocmVhZGVyLnJlc3VsdCwgZXhwZWN0ZWRDaGFyKTsKLSAgICBkb25l
Q2FsbGJhY2soYmxvYi5zaXplLCByZXN1bHQpOwotICB9Ci0gIHJlYWRlci5yZWFkQXNBcnJheUJ1
ZmZlcihibG9iKTsKLX0KLQotZnVuY3Rpb24gdmVyaWZ5QWNrbm93bGVkZ2VtZW50KGNvbmZpZywg
bWVzc2FnZSwgc2l6ZSkgewotICBpZiAodHlwZW9mIG1lc3NhZ2UgIT0gJ3N0cmluZycpIHsKLSAg
ICBjb25maWcuYWRkVG9Mb2coJ0ludmFsaWQgYWNrIHR5cGU6ICcgKyB0eXBlb2YgbWVzc2FnZSk7
Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0gIHZhciBwYXJzZWRBY2sgPSBwYXJzZUludChtZXNz
YWdlKTsKLSAgaWYgKGlzTmFOKHBhcnNlZEFjaykpIHsKLSAgICBjb25maWcuYWRkVG9Mb2coJ0lu
dmFsaWQgYWNrIHZhbHVlOiAnICsgbWVzc2FnZSk7Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0g
IGlmIChwYXJzZWRBY2sgIT0gc2l6ZSkgewotICAgIGNvbmZpZy5hZGRUb0xvZygKLSAgICAgICAg
J0V4cGVjdGVkIGFjayBmb3IgJyArIHNpemUgKyAnQiBidXQgcmVjZWl2ZWQgb25lIGZvciAnICsg
cGFyc2VkQWNrICsKLSAgICAgICAgJ0InKTsKLSAgICByZXR1cm4gZmFsc2U7Ci0gIH0KLQotICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotZnVuY3Rpb24gY2xvbmVDb25maWcob2JqKSB7Ci0gIHZhciBuZXdP
YmogPSB7fTsKLSAgZm9yIChrZXkgaW4gb2JqKSB7Ci0gICAgbmV3T2JqW2tleV0gPSBvYmpba2V5
XTsKLSAgfQotICByZXR1cm4gbmV3T2JqOwotfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBs
ZS91dGlsX21haW4uanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3V0aWxfbWFpbi5qcwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggYjAzZDFjMmJkYzQ2MmM2NTRmNjAzNWJhOTZlNGViOGEyYmFh
N2I4NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL3V0aWxfbWFpbi5qcworKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0vLwot
Ly8gVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLS8v
IGxpY2Vuc2UgdGhhdCBjYW4gYmUgZm91bmQgaW4gdGhlIENPUFlJTkcgZmlsZSBvciBhdAotLy8g
aHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vb3Blbi1zb3VyY2UvbGljZW5zZXMvYnNkCi0K
LS8vIFV0aWxpdGllcyBmb3IgZXhhbXBsZSBhcHBsaWNhdGlvbnMgKGZvciB0aGUgbWFpbiB0aHJl
YWQgb25seSkuCi0KLXZhciBsb2dCb3ggPSBudWxsOwotdmFyIHF1ZXVlZExvZyA9ICcnOwotCi12
YXIgc3VtbWFyeUJveCA9IG51bGw7Ci0KLWZ1bmN0aW9uIHF1ZXVlTG9nKGxvZykgewotICBxdWV1
ZWRMb2cgKz0gbG9nICsgJ1xuJzsKLX0KLQotZnVuY3Rpb24gYWRkVG9Mb2cobG9nKSB7Ci0gIGxv
Z0JveC52YWx1ZSArPSBxdWV1ZWRMb2c7Ci0gIHF1ZXVlZExvZyA9ICcnOwotICBsb2dCb3gudmFs
dWUgKz0gbG9nICsgJ1xuJzsKLSAgbG9nQm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLWZ1
bmN0aW9uIGFkZFRvU3VtbWFyeShsb2cpIHsKLSAgc3VtbWFyeUJveC52YWx1ZSArPSBsb2cgKyAn
XG4nOwotICBzdW1tYXJ5Qm94LnNjcm9sbFRvcCA9IDEwMDAwMDA7Ci19Ci0KLS8vIHZhbHVlOiBl
eGVjdXRpb24gdGltZSBpbiBtaWxsaXNlY29uZHMuCi0vLyBjb25maWcubWVhc3VyZVZhbHVlIGlz
IGludGVuZGVkIHRvIGJlIHVzZWQgaW4gUGVyZm9ybWFuY2UgVGVzdHMuCi0vLyBEbyBub3RoaW5n
IGhlcmUgaW4gbm9uLVBlcmZvcm1hbmNlVGVzdC4KLWZ1bmN0aW9uIG1lYXN1cmVWYWx1ZSh2YWx1
ZSkgewotfQotCi1mdW5jdGlvbiBnZXRJbnRGcm9tSW5wdXQoaWQpIHsKLSAgcmV0dXJuIHBhcnNl
SW50KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZSk7Ci19Ci0KLWZ1bmN0aW9uIGdl
dFN0cmluZ0Zyb21SYWRpb0JveChuYW1lKSB7Ci0gIHZhciBsaXN0ID0gZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoJ2JlbmNobWFya19mb3JtJylbbmFtZV07Ci0gIGZvciAodmFyIGkgPSAwOyBpIDwg
bGlzdC5sZW5ndGg7ICsraSkKLSAgICBpZiAobGlzdC5pdGVtKGkpLmNoZWNrZWQpCi0gICAgICBy
ZXR1cm4gbGlzdC5pdGVtKGkpLnZhbHVlOwotICByZXR1cm4gdW5kZWZpbmVkOwotfQotZnVuY3Rp
b24gZ2V0Qm9vbEZyb21DaGVja0JveChpZCkgewotICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpLmNoZWNrZWQ7Ci19Ci0KLWZ1bmN0aW9uIGdldEludEFycmF5RnJvbUlucHV0KGlk
KSB7Ci0gIHZhciBzdHJBcnJheSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKS52YWx1ZS5z
cGxpdCgnLCcpOwotICByZXR1cm4gc3RyQXJyYXkubWFwKGZ1bmN0aW9uKHN0cikgeyByZXR1cm4g
cGFyc2VJbnQoc3RyLCAxMCk7IH0pOwotfQotCi1mdW5jdGlvbiBvbk1lc3NhZ2UobWVzc2FnZSkg
ewotICBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdhZGRUb0xvZycpCi0gICAgYWRkVG9Mb2co
bWVzc2FnZS5kYXRhLmRhdGEpOwotICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ2Fk
ZFRvU3VtbWFyeScpCi0gICAgYWRkVG9TdW1tYXJ5KG1lc3NhZ2UuZGF0YS5kYXRhKTsKLSAgZWxz
ZSBpZiAobWVzc2FnZS5kYXRhLnR5cGUgPT09ICdtZWFzdXJlVmFsdWUnKQotICAgIG1lYXN1cmVW
YWx1ZShtZXNzYWdlLmRhdGEuZGF0YSk7Ci19CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxl
L3V0aWxfd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtlci5qcwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY0Zjc4MjlkNTJkODUwNjQ5ODg5ZjliMGFjZTk5ODVj
N2I2MjExZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9leGFtcGxlL3V0aWxfd29ya2VyLmpzCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAs
MCBAQAotLy8gQ29weXJpZ2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHls
ZQotLy8gbGljZW5zZSB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0
Ci0vLyBodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9i
c2QKLQotLy8gVXRpbGl0aWVzIGZvciBleGFtcGxlIGFwcGxpY2F0aW9ucyAoZm9yIHRoZSB3b3Jr
ZXIgdGhyZWFkcyBvbmx5KS4KLQotZnVuY3Rpb24gd29ya2VyQWRkVG9Mb2codGV4dCkgewotICBw
b3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRvTG9nJywgZGF0YTogdGV4dH0pOwotfQotCi1mdW5jdGlv
biB3b3JrZXJBZGRUb1N1bW1hcnkodGV4dCkgewotICBwb3N0TWVzc2FnZSh7dHlwZTogJ2FkZFRv
U3VtbWFyeScsIGRhdGE6IHRleHR9KTsKLX0KLQotZnVuY3Rpb24gd29ya2VyTWVhc3VyZVZhbHVl
KHZhbHVlKSB7Ci0gIHBvc3RNZXNzYWdlKHt0eXBlOiAnbWVhc3VyZVZhbHVlJywgZGF0YTogdmFs
dWV9KTsKLX0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9leGFtcGxlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBkZjFmNzk5YmM0MWM0YWMxMGM1ODZjNzFiY2EzY2JiMzA5YzFiOWE2Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9leGFtcGxlL2Fib3J0X2hhbmRzaGFrZV93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Fi
b3J0X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYXJyYXlidWZmZXJfYmVuY2htYXJrLmh0bWwK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9leGFtcGxlL2JlbmNoX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvYmVuY2ht
YXJrLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2JlbmNobWFyay5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUvYmVuY2htYXJrX2hlbHBlcl93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2Nsb3NlX3dzaC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL2V4YW1wbGUvY29uc29sZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9jb29r
aWVfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS9lY2hvX2NsaWVudC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvZWNob19ub2V4dF93c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2VjaG9fd3NoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvZXhhbXBsZS9ldmVudHNvdXJjZS5jZ2kKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2V2ZW50
c291cmNlLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUvaHN0c193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL2ludGVybmFsX2Vycm9yX3dz
aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvb3JpZ2luX2NoZWNrX3dzaC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4
YW1wbGUvcHl3ZWJzb2NrZXQuY29uZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvc3BlY2lhbF9oZWFkZXJz
LmNnaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbC5qcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUvdXRpbF9t
YWluLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS91dGlsX3dvcmtlci5qcwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1w
bGUveGhyX2JlbmNobWFyay5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJrLmpz
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvZXhhbXBsZS94aHJfZXZlbnRfbG9nZ2VyLmh0bWwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNobWFyay5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJf
YmVuY2htYXJrLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4NjIyOTc3NWY1
YWMwODJhMWZkZDMyN2E0NTk1ZGY5MWQxZmJkNTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvZXhhbXBsZS94aHJfYmVuY2htYXJrLmh0bWwK
KysrIC9kZXYvbnVsbApAQCAtMSwyMjIgKzAsMCBAQAotPCEtLQotQ29weXJpZ2h0IDIwMTMsIEdv
b2dsZSBJbmMuCi1BbGwgcmlnaHRzIHJlc2VydmVkLgotCi1SZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLW1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLW1ldDoKLQotICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLW5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLWNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLWluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LWRpc3RyaWJ1dGlvbi4KLSAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLWNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi10aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotCi1USElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0iQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCi1BIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi1TUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi1MSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLURBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi1PRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgotLS0+Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+WE1MSHR0cFJlcXVlc3QgYmVuY2htYXJr
PC90aXRsZT4KLTxzY3JpcHQgc3JjPSJ1dGlsX21haW4uanMiPjwvc2NyaXB0PgotPHNjcmlwdCBz
cmM9InV0aWwuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Inhocl9iZW5jaG1hcmsuanMiPjwv
c2NyaXB0PgotPHNjcmlwdD4KLXZhciBhZGRyZXNzQm94ID0gbnVsbDsKLQotZnVuY3Rpb24gZ2V0
Q29uZmlnKCkgewotICByZXR1cm4gewotICAgIHByZWZpeFVybDogYWRkcmVzc0JveC52YWx1ZSwK
LSAgICBwcmludFNpemU6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ByaW50c2l6ZScpLAotICAgIG51
bVhIUnM6IGdldEludEZyb21JbnB1dCgnbnVtWEhScycpLAotICAgIGFzeW5jOiBnZXRCb29sRnJv
bUNoZWNrQm94KCdhc3luYycpLAotICAgIC8vIEluaXRpYWwgc2l6ZSBvZiBtZXNzYWdlcy4KLSAg
ICBudW1JdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bWl0ZXJhdGlvbnMnKSwKLSAgICBu
dW1XYXJtVXBJdGVyYXRpb25zOiBnZXRJbnRGcm9tSW5wdXQoJ251bXdhcm11cGl0ZXJhdGlvbnMn
KSwKLSAgICBzdGFydFNpemU6IGdldEludEZyb21JbnB1dCgnc3RhcnRzaXplJyksCi0gICAgLy8g
U3RvcHMgYmVuY2htYXJrIHdoZW4gdGhlIHNpemUgb2YgbWVzc2FnZSBleGNlZWRzIHRoaXMgdGhy
ZXNob2xkLgotICAgIHN0b3BUaHJlc2hvbGQ6IGdldEludEZyb21JbnB1dCgnc3RvcHRocmVzaG9s
ZCcpLAotICAgIC8vIElmIHRoZSBzaXplIG9mIGVhY2ggbWVzc2FnZSBpcyBzbWFsbCwgc2VuZC9y
ZWNlaXZlIG11bHRpcGxlIG1lc3NhZ2VzCi0gICAgLy8gdW50aWwgdGhlIHN1bSBvZiBzaXplcyBy
ZWFjaGVzIHRoaXMgdGhyZXNob2xkLgotICAgIC8vIG1pblRvdGFsOiBnZXRJbnRGcm9tSW5wdXQo
J21pbnRvdGFsJyksCi0gICAgLy8gbWluVG90YWwgaXMgbm90IHlldCBpbXBsZW1lbnRlZCBvbiBY
SFIgYmVuY2htYXJrCi0gICAgbXVsdGlwbGllcnM6IGdldEludEFycmF5RnJvbUlucHV0KCdtdWx0
aXBsaWVycycpLAotICAgIHZlcmlmeURhdGE6IGdldEJvb2xGcm9tQ2hlY2tCb3goJ3ZlcmlmeWRh
dGEnKQotICB9OwotfQotCi12YXIgd29ya2VyID0gbmV3IFdvcmtlcigneGhyX2JlbmNobWFyay5q
cycpOwotd29ya2VyLm9ubWVzc2FnZSA9IG9uTWVzc2FnZTsKLQotZnVuY3Rpb24gb25TZW5kQmVu
Y2htYXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGNvbmZpZy5kYXRhVHlw
ZSA9IGdldFN0cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycpOwotCi0gIGlmIChnZXRC
b29sRnJvbUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlw
ZTogJ3NlbmRCZW5jaG1hcmsnLCBjb25maWc6IGNvbmZpZ30pOwotICB9IGVsc2UgewotICAgIGNv
bmZpZy5hZGRUb0xvZyA9IGFkZFRvTG9nOwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSBhZGRU
b1N1bW1hcnk7Ci0gICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IG1lYXN1cmVWYWx1ZTsKLSAgICBz
ZW5kQmVuY2htYXJrKGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25SZWNlaXZlQmVuY2ht
YXJrKCkgewotICB2YXIgY29uZmlnID0gZ2V0Q29uZmlnKCk7Ci0gIGNvbmZpZy5kYXRhVHlwZSA9
IGdldFN0cmluZ0Zyb21SYWRpb0JveCgnZGF0YXR5cGVyYWRpbycpOwotCi0gIGlmIChnZXRCb29s
RnJvbUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTog
J3JlY2VpdmVCZW5jaG1hcmsnLCBjb25maWc6IGNvbmZpZ30pOwotICB9IGVsc2UgewotICAgIGNv
bmZpZy5hZGRUb0xvZyA9IGFkZFRvTG9nOwotICAgIGNvbmZpZy5hZGRUb1N1bW1hcnkgPSBhZGRU
b1N1bW1hcnk7Ci0gICAgY29uZmlnLm1lYXN1cmVWYWx1ZSA9IG1lYXN1cmVWYWx1ZTsKLSAgICBy
ZWNlaXZlQmVuY2htYXJrKGNvbmZpZyk7Ci0gIH0KLX0KLQotZnVuY3Rpb24gb25CYXRjaEJlbmNo
bWFyaygpIHsKLSAgdmFyIGNvbmZpZyA9IGdldENvbmZpZygpOwotCi0gIGlmIChnZXRCb29sRnJv
bUNoZWNrQm94KCd3b3JrZXInKSkgewotICAgIHdvcmtlci5wb3N0TWVzc2FnZSh7dHlwZTogJ2Jh
dGNoQmVuY2htYXJrJywgY29uZmlnOiBjb25maWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcu
YWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1t
YXJ5OwotICAgIGNvbmZpZy5tZWFzdXJlVmFsdWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgYmF0Y2hC
ZW5jaG1hcmsoY29uZmlnKTsKLSAgfQotfQotCi1mdW5jdGlvbiBvblN0b3AoKSB7Ci0gIHZhciBj
b25maWcgPSBnZXRDb25maWcoKTsKLQotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnd29ya2Vy
JykpIHsKLSAgICB3b3JrZXIucG9zdE1lc3NhZ2Uoe3R5cGU6ICdzdG9wJywgY29uZmlnOiBjb25m
aWd9KTsKLSAgfSBlbHNlIHsKLSAgICBjb25maWcuYWRkVG9Mb2cgPSBhZGRUb0xvZzsKLSAgICBj
b25maWcuYWRkVG9TdW1tYXJ5ID0gYWRkVG9TdW1tYXJ5OwotICAgIGNvbmZpZy5tZWFzdXJlVmFs
dWUgPSBtZWFzdXJlVmFsdWU7Ci0gICAgc3RvcChjb25maWcpOwotICB9Ci19Ci0KLWZ1bmN0aW9u
IGluaXQoKSB7Ci0gIGFkZHJlc3NCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnYWRkcmVz
cycpOwotICBsb2dCb3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbG9nJyk7Ci0KLSAgc3Vt
bWFyeUJveCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdzdW1tYXJ5Jyk7Ci0KLSAgLy8gU3Bl
Y2lhbCBhZGRyZXNzIG9mIHB5d2Vic29ja2V0IGZvciBYSFIgYmVuY2htYXJrLgotICBhZGRyZXNz
Qm94LnZhbHVlID0gJy8wNzNiZTAwMWUxMDk1MDY5MmNjYmYzYTJhZDIxYzI0NSc7Ci0KLSAgYWRk
VG9Mb2cod2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSk7Ci0gIGFkZFRv
U3VtbWFyeSh3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKTsKLX0KLTwv
c2NyaXB0PgotPC9oZWFkPgotPGJvZHkgb25sb2FkPSJpbml0KCkiPgotCi08Zm9ybSBpZD0iYmVu
Y2htYXJrX2Zvcm0iPgotICB1cmwgcHJlZml4IDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iYWRkcmVz
cyIgc2l6ZT0iNDAiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0ic2VuZCIgb25jbGlj
az0ib25TZW5kQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0dG9uIiB2YWx1ZT0icmVj
ZWl2ZSIgb25jbGljaz0ib25SZWNlaXZlQmVuY2htYXJrKCkiPgotICA8aW5wdXQgdHlwZT0iYnV0
dG9uIiB2YWx1ZT0iYmF0Y2giIG9uY2xpY2s9Im9uQmF0Y2hCZW5jaG1hcmsoKSI+Ci0gIDxpbnB1
dCB0eXBlPSJidXR0b24iIHZhbHVlPSJzdG9wIiBvbmNsaWNrPSJvblN0b3AoKSI+Ci0KLSAgPGJy
Lz4KLQotICA8aW5wdXQgdHlwZT0iY2hlY2tib3giIGlkPSJwcmludHNpemUiIGNoZWNrZWQ+Ci0g
IDxsYWJlbCBmb3I9InByaW50c2l6ZSI+UHJpbnQgc2l6ZSBhbmQgdGltZSBwZXIgbWVzc2FnZTwv
bGFiZWw+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9InZlcmlmeWRhdGEiIGNoZWNrZWQ+
Ci0gIDxsYWJlbCBmb3I9InZlcmlmeWRhdGEiPlZlcmlmeSBkYXRhPC9sYWJlbD4KLSAgPGlucHV0
IHR5cGU9ImNoZWNrYm94IiBpZD0id29ya2VyIj4KLSAgPGxhYmVsIGZvcj0id29ya2VyIj5SdW4g
b24gd29ya2VyPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0iYXN5bmMiIGNo
ZWNrZWQ+Ci0gIDxsYWJlbCBmb3I9ImFzeW5jIj5Bc3luYzwvbGFiZWw+PGJyPgotICAoUmVjZWl2
ZSAmYW1wOyZhbXA7IE5vbi1Xb3JrZXIgJmFtcDsmYW1wOyBTeW5jIGlzIG5vdCBzdXBwb3J0ZWQg
Ynkgc3BlYykKLQotICA8YnIvPgotCi0gIFBhcmFtZXRlcnM6Ci0KLSAgPGJyLz4KLQotICA8dGFi
bGU+Ci0gICAgPHRyPgotICAgICAgPHRkPk51bSBYSFJzPC90ZD4KLSAgICAgIDx0ZD48aW5wdXQg
dHlwZT0idGV4dCIgaWQ9Im51bVhIUnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwvdHI+Ci0gICAg
PHRyPgotICAgICAgPHRkPk51bWJlciBvZiBpdGVyYXRpb25zPC90ZD4KLSAgICAgIDx0ZD48aW5w
dXQgdHlwZT0idGV4dCIgaWQ9Im51bWl0ZXJhdGlvbnMiIHZhbHVlPSIxIj48L3RkPgotICAgIDwv
dHI+Ci0gICAgPHRyPgotICAgICAgPHRkPk51bWJlciBvZiB3YXJtLXVwIGl0ZXJhdGlvbnM8L3Rk
PgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibnVtd2FybXVwaXRlcmF0aW9ucyIg
dmFsdWU9IjAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAgICA8dGQ+U3RhcnQgc2l6
ZTwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdGFydHNpemUiIHZhbHVl
PSIxMDI0MCI+PC90ZD4KLSAgICA8L3RyPgotICAgIDx0cj4KLSAgICAgIDx0ZD5TdG9wIHRocmVz
aG9sZDwvdGQ+Ci0gICAgICA8dGQ+PGlucHV0IHR5cGU9InRleHQiIGlkPSJzdG9wdGhyZXNob2xk
IiB2YWx1ZT0iMTAyNDAwMDAwIj48L3RkPgotICAgIDwvdHI+Ci0gICAgPHRyPgotICAgICAgPHRk
Pk1pbmltdW0gdG90YWw8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0ibWlu
dG90YWwiIHZhbHVlPSIxMDI0MDAwMDAiPjwvdGQ+Ci0gICAgPC90cj4KLSAgICA8dHI+Ci0gICAg
ICA8dGQ+TXVsdGlwbGllcnM8L3RkPgotICAgICAgPHRkPjxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0i
bXVsdGlwbGllcnMiIHZhbHVlPSI1LCAyIj48L3RkPgotICAgIDwvdHI+Ci0gIDwvdGFibGU+Ci0K
LSAgU2V0IGRhdGEgdHlwZQotICA8aW5wdXQgdHlwZT0icmFkaW8iCi0gICAgICAgICBuYW1lPSJk
YXRhdHlwZXJhZGlvIgotICAgICAgICAgaWQ9ImRhdGF0eXBlcmFkaW90ZXh0IgotICAgICAgICAg
dmFsdWU9InRleHQiCi0gICAgICAgICBjaGVja2VkPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW90
ZXh0Ij50ZXh0PC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0i
ZGF0YXR5cGVyYWRpbyIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYmxvYiIKLSAgICAgICAg
IHZhbHVlPSJibG9iIgotICAgICAgICAgPjxsYWJlbCBmb3I9ImRhdGF0eXBlcmFkaW9ibG9iIj5i
bG9iPC9sYWJlbD4KLSAgPGlucHV0IHR5cGU9InJhZGlvIgotICAgICAgICAgbmFtZT0iZGF0YXR5
cGVyYWRpbyIKLSAgICAgICAgIGlkPSJkYXRhdHlwZXJhZGlvYXJyYXlidWZmZXIiCi0gICAgICAg
ICB2YWx1ZT0iYXJyYXlidWZmZXIiCi0gICAgICAgICA+PGxhYmVsIGZvcj0iZGF0YXR5cGVyYWRp
b2FycmF5YnVmZmVyIj5hcnJheWJ1ZmZlcjwvbGFiZWw+Ci08L2Zvcm0+Ci0KLTxkaXYgaWQ9Imxv
Z19kaXYiPgotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJsb2ciIHJvd3M9IjIwIiBzdHlsZT0id2lk
dGg6IDEwMCUiIHJlYWRvbmx5PjwvdGV4dGFyZWE+Ci08L2Rpdj4KLTxkaXYgaWQ9InN1bW1hcnlf
ZGl2Ij4KLSAgU3VtbWFyeQotICA8dGV4dGFyZWEKLSAgICAgIGlkPSJzdW1tYXJ5IiByb3dzPSIy
MCIgc3R5bGU9IndpZHRoOiAxMDAlIiByZWFkb25seT48L3RleHRhcmVhPgotPC9kaXY+Ci0KLU5v
dGU6IEVmZmVjdCBvZiBSVFQgYW5kIHRpbWUgc3BlbnQgZm9yIEFycmF5QnVmZmVyIGNyZWF0aW9u
IGluIHJlY2VpdmUgYmVuY2htYXJrcyBhcmUgbm90IGVsaW1pbmF0ZWQuCi0KLTwvYm9keT4KLTwv
aHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNobWFyay5qcyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL2V4YW1wbGUveGhyX2JlbmNobWFyay5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMjMzYzdjYjM4YzQ5ZTE1OWRiNWE0MTZkOWFmZGEwOWIyZWYzODZjYi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3ho
cl9iZW5jaG1hcmsuanMKKysrIC9kZXYvbnVsbApAQCAtMSwzODkgKzAsMCBAQAotLy8gQ29weXJp
Z2h0IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLS8vCi0vLyBVc2Ugb2Yg
dGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZQotLy8gbGljZW5zZSB0
aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0vLyBodHRwczovL2Rl
dmVsb3BlcnMuZ29vZ2xlLmNvbS9vcGVuLXNvdXJjZS9saWNlbnNlcy9ic2QKLQotdmFyIGlzV29y
a2VyID0gdHlwZW9mIGltcG9ydFNjcmlwdHMgIT09ICJ1bmRlZmluZWQiOwotCi1pZiAoaXNXb3Jr
ZXIpIHsKLSAgLy8gUnVubmluZyBvbiBhIHdvcmtlcgotICBpbXBvcnRTY3JpcHRzKCd1dGlsLmpz
JywgJ3V0aWxfd29ya2VyLmpzJyk7Ci19Ci0KLS8vIE5hbWVzcGFjZSBmb3IgaG9sZGluZyBnbG9i
YWxzLgotdmFyIGJlbmNobWFyayA9IHt9OwotYmVuY2htYXJrLnN0YXJ0VGltZUluTXMgPSAwOwot
Ci12YXIgeGhycyA9IFtdOwotCi12YXIgdGltZXJJRCA9IG51bGw7Ci0KLWZ1bmN0aW9uIGRlc3Ry
b3lBbGxYSFJzKCkgewotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsK
LSAgICB4aHJzW2ldLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG51bGw7Ci0gICAgLy8gQWJvcnQgWEhS
cyBpZiB0aGV5IGFyZSBub3QgeWV0IERPTkUgc3RhdGUuCi0gICAgLy8gQ2FsbGluZyBhYm9ydCgp
IGhlcmUgKGkuZS4gaW4gb25yZWFkeXN0YXRlY2hhbmdlIGhhbmRsZXIpIAotICAgIC8vIGNhdXNl
cyAiTmV0d29ya0Vycm9yIiBtZXNzYWdlcyBpbiBEZXZUb29scyBpbiBzeW5jIG1vZGUsCi0gICAg
Ly8gZXZlbiBpZiBpdCBpcyBhZnRlciB0cmFuc2l0aW9uIHRvIERPTkUgc3RhdGUuCi0gICAgaWYg
KHhocnNbaV0ucmVhZHlTdGF0ZSAhPSBYTUxIdHRwUmVxdWVzdC5ET05FKQotICAgICAgeGhyc1tp
XS5hYm9ydCgpOwotICB9Ci0gIHhocnMgPSBbXTsKLSAgLy8gZ2MoKSBtaWdodCBiZSBuZWVkZWQg
Zm9yIENocm9tZS9CbG9iCi19Ci0KLWZ1bmN0aW9uIHJlcGVhdFN0cmluZyhzdHIsIGNvdW50KSB7
Ci0gIHZhciBkYXRhID0gJyc7Ci0gIHZhciBleHBDaHVuayA9IHN0cjsKLSAgdmFyIHJlbWFpbiA9
IGNvdW50OwotICB3aGlsZSAodHJ1ZSkgewotICAgIGlmIChyZW1haW4gJSAyKSB7Ci0gICAgICBk
YXRhICs9IGV4cENodW5rOwotICAgICAgcmVtYWluID0gKHJlbWFpbiAtIDEpIC8gMjsKLSAgICB9
IGVsc2UgewotICAgICAgcmVtYWluIC89IDI7Ci0gICAgfQotCi0gICAgaWYgKHJlbWFpbiA9PSAw
KQotICAgICAgYnJlYWs7Ci0KLSAgICBleHBDaHVuayA9IGV4cENodW5rICsgZXhwQ2h1bms7Ci0g
IH0KLSAgcmV0dXJuIGRhdGE7Ci19Ci0KLWZ1bmN0aW9uIHNlbmRCZW5jaG1hcmtTdGVwKHNpemUs
IGNvbmZpZykgewotICB0aW1lcklEID0gbnVsbDsKLQotICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5N
cyA9IG51bGw7Ci0gIHZhciB0b3RhbFNpemUgPSAwOwotICB2YXIgdG90YWxSZXBsaWVkID0gMDsK
LQotICB2YXIgb25SZWFkeVN0YXRlQ2hhbmdlSGFuZGxlciA9IGZ1bmN0aW9uICgpIHsKLSAgICBp
ZiAodGhpcy5yZWFkeVN0YXRlICE9IHRoaXMuRE9ORSkgewotICAgICAgcmV0dXJuOwotICAgIH0K
LQotICAgIGlmICh0aGlzLnN0YXR1cyAhPSAyMDApIHsKLSAgICAgIGNvbmZpZy5hZGRUb0xvZygn
RmFpbGVkIChzdGF0dXM9JyArIHRoaXMuc3RhdHVzICsgJyknKTsKLSAgICAgIGRlc3Ryb3lBbGxY
SFJzKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGNvbmZpZy52ZXJpZnlEYXRh
ICYmCi0gICAgICAgICF2ZXJpZnlBY2tub3dsZWRnZW1lbnQoY29uZmlnLCB0aGlzLnJlc3BvbnNl
LCBzaXplKSkgewotICAgICAgZGVzdHJveUFsbFhIUnMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICB0b3RhbFJlcGxpZWQgKz0gc2l6ZTsKLQotICAgIGlmICh0b3RhbFJlcGxpZWQgPCB0
b3RhbFNpemUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYmVuY2htYXJrLnN0
YXJ0VGltZUluTXMgPT0gbnVsbCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdzdGFydFRpbWVJ
bk1zIG5vdCBzZXQnKTsKLSAgICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0gICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgY2FsY3VsYXRlQW5kTG9nUmVzdWx0KGNvbmZpZywgc2l6ZSwgYmVuY2htYXJr
LnN0YXJ0VGltZUluTXMsIHRvdGFsU2l6ZSk7Ci0KLSAgICBkZXN0cm95QWxsWEhScygpOwotCi0g
ICAgcnVuTmV4dFRhc2soY29uZmlnKTsKLSAgfTsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IGNv
bmZpZy5udW1YSFJzOyArK2kpIHsKLSAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7
Ci0gICAgeGhyLm9ucmVhZHlzdGF0ZWNoYW5nZSA9IG9uUmVhZHlTdGF0ZUNoYW5nZUhhbmRsZXI7
Ci0gICAgeGhycy5wdXNoKHhocik7Ci0gIH0KLQotICB2YXIgZGF0YUFycmF5ID0gW107Ci0KLSAg
Zm9yICh2YXIgaSA9IDA7IGkgPCB4aHJzLmxlbmd0aDsgKytpKSB7Ci0gICAgdmFyIGRhdGEgPSBu
dWxsOwotICAgIGlmIChjb25maWcuZGF0YVR5cGUgPT0gJ2FycmF5YnVmZmVyJyB8fAotICAgICAg
ICBjb25maWcuZGF0YVR5cGUgPT0gJ2Jsb2InKSB7Ci0gICAgICBkYXRhID0gbmV3IEFycmF5QnVm
ZmVyKHNpemUpOwotCi0gICAgICBmaWxsQXJyYXlCdWZmZXIoZGF0YSwgMHg2MSk7Ci0KLSAgICAg
IGlmIChjb25maWcuZGF0YVR5cGUgPT0gJ2Jsb2InKSB7Ci0gICAgICAgIGRhdGEgPSBuZXcgQmxv
YihbZGF0YV0pOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBkYXRhID0gcmVwZWF0U3Ry
aW5nKCdhJywgc2l6ZSk7Ci0gICAgfQotCi0gICAgZGF0YUFycmF5LnB1c2goZGF0YSk7Ci0gIH0K
LQotCi0gIGJlbmNobWFyay5zdGFydFRpbWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0gIHRvdGFs
U2l6ZSA9IHNpemUgKiB4aHJzLmxlbmd0aDsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMu
bGVuZ3RoOyArK2kpIHsKLSAgICB2YXIgZGF0YSA9IGRhdGFBcnJheVtpXTsKLSAgICB2YXIgeGhy
ID0geGhyc1tpXTsKLSAgICB4aHIub3BlbignUE9TVCcsIGNvbmZpZy5wcmVmaXhVcmwgKyAnX3Nl
bmQnLCBjb25maWcuYXN5bmMpOwotICAgIHhoci5zZW5kKGRhdGEpOwotICB9Ci19Ci0KLWZ1bmN0
aW9uIHJlY2VpdmVCZW5jaG1hcmtTdGVwKHNpemUsIGNvbmZpZykgewotICB0aW1lcklEID0gbnVs
bDsKLQotICBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9IG51bGw7Ci0gIHZhciB0b3RhbFNpemUg
PSAwOwotICB2YXIgdG90YWxSZXBsaWVkID0gMDsKLQotICB2YXIgY2hlY2tSZXN1bHRBbmRDb250
aW51ZSA9IGZ1bmN0aW9uIChieXRlc1JlY2VpdmVkLCB2ZXJpZmljYXRpb25SZXN1bHQpIHsKLSAg
ICBpZiAoIXZlcmlmaWNhdGlvblJlc3VsdCkgewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdSZXNw
b25zZSB2ZXJpZmljYXRpb24gZmFpbGVkJyk7Ci0gICAgICBkZXN0cm95QWxsWEhScygpOwotICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIHRvdGFsUmVwbGllZCArPSBieXRlc1JlY2VpdmVkOwot
Ci0gICAgaWYgKHRvdGFsUmVwbGllZCA8IHRvdGFsU2l6ZSkgewotICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcyA9PSBudWxsKSB7Ci0gICAgICBj
b25maWcuYWRkVG9Mb2coJ3N0YXJ0VGltZUluTXMgbm90IHNldCcpOwotICAgICAgZGVzdHJveUFs
bFhIUnMoKTsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjYWxjdWxhdGVBbmRMb2dSZXN1
bHQoY29uZmlnLCBzaXplLCBiZW5jaG1hcmsuc3RhcnRUaW1lSW5NcywgdG90YWxTaXplKTsKLQot
ICAgIGRlc3Ryb3lBbGxYSFJzKCk7Ci0KLSAgICBydW5OZXh0VGFzayhjb25maWcpOwotICB9Ci0K
LSAgdmFyIG9uUmVhZHlTdGF0ZUNoYW5nZUhhbmRsZXIgPSBmdW5jdGlvbiAoKSB7Ci0gICAgaWYg
KHRoaXMucmVhZHlTdGF0ZSAhPSB0aGlzLkRPTkUpIHsKLSAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAodGhpcy5zdGF0dXMgIT0gMjAwKSB7Ci0gICAgICBjb25maWcuYWRkVG9Mb2coJ0Zh
aWxlZCAoc3RhdHVzPScgKyB0aGlzLnN0YXR1cyArICcpJyk7Ci0gICAgICBkZXN0cm95QWxsWEhS
cygpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIHZhciBieXRlc1JlY2VpdmVkID0gLTE7
Ci0gICAgaWYgKHRoaXMucmVzcG9uc2VUeXBlID09ICdhcnJheWJ1ZmZlcicpIHsKLSAgICAgIGJ5
dGVzUmVjZWl2ZWQgPSB0aGlzLnJlc3BvbnNlLmJ5dGVMZW5ndGg7Ci0gICAgfSBlbHNlIGlmICh0
aGlzLnJlc3BvbnNlVHlwZSA9PSAnYmxvYicpIHsKLSAgICAgIGJ5dGVzUmVjZWl2ZWQgPSB0aGlz
LnJlc3BvbnNlLnNpemU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGJ5dGVzUmVjZWl2ZWQgPSB0aGlz
LnJlc3BvbnNlLmxlbmd0aDsKLSAgICB9Ci0gICAgaWYgKGJ5dGVzUmVjZWl2ZWQgIT0gc2l6ZSkg
ewotICAgICAgY29uZmlnLmFkZFRvTG9nKCdFeHBlY3RlZCAnICsgc2l6ZSArCi0gICAgICAgICAg
J0IgYnV0IHJlY2VpdmVkICcgKyBieXRlc1JlY2VpdmVkICsgJ0InKTsKLSAgICAgIGRlc3Ryb3lB
bGxYSFJzKCk7Ci0gICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKHRoaXMucmVzcG9uc2VU
eXBlID09ICdhcnJheWJ1ZmZlcicpIHsKLSAgICAgIGNoZWNrUmVzdWx0QW5kQ29udGludWUoYnl0
ZXNSZWNlaXZlZCwKLSAgICAgICAgICAhY29uZmlnLnZlcmlmeURhdGEgfHwgdmVyaWZ5QXJyYXlC
dWZmZXIodGhpcy5yZXNwb25zZSwgMHg2MSkpOwotICAgIH0gZWxzZSBpZiAodGhpcy5yZXNwb25z
ZVR5cGUgPT0gJ2Jsb2InKSB7Ci0gICAgICBpZiAoY29uZmlnLnZlcmlmeURhdGEpCi0gICAgICAg
IHZlcmlmeUJsb2IoY29uZmlnLCB0aGlzLnJlc3BvbnNlLCAweDYxLCBjaGVja1Jlc3VsdEFuZENv
bnRpbnVlKTsKLSAgICAgIGVsc2UKLSAgICAgICAgY2hlY2tSZXN1bHRBbmRDb250aW51ZShieXRl
c1JlY2VpdmVkLCB0cnVlKTsKLSAgICB9IGVsc2UgewotICAgICAgY2hlY2tSZXN1bHRBbmRDb250
aW51ZSgKLSAgICAgICAgICBieXRlc1JlY2VpdmVkLAotICAgICAgICAgICFjb25maWcudmVyaWZ5
RGF0YSB8fAotICAgICAgICAgICAgICB0aGlzLnJlc3BvbnNlID09IHJlcGVhdFN0cmluZygnYScs
IHRoaXMucmVzcG9uc2UubGVuZ3RoKSk7Ci0gICAgfQotICB9OwotCi0gIGZvciAodmFyIGkgPSAw
OyBpIDwgY29uZmlnLm51bVhIUnM7ICsraSkgewotICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJl
cXVlc3QoKTsKLSAgICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gb25SZWFkeVN0YXRlQ2hhbmdl
SGFuZGxlcjsKLSAgICB4aHJzLnB1c2goeGhyKTsKLSAgfQotCi0gIGJlbmNobWFyay5zdGFydFRp
bWVJbk1zID0gZ2V0VGltZVN0YW1wKCk7Ci0gIHRvdGFsU2l6ZSA9IHNpemUgKiB4aHJzLmxlbmd0
aDsKLQotICBmb3IgKHZhciBpID0gMDsgaSA8IHhocnMubGVuZ3RoOyArK2kpIHsKLSAgICB2YXIg
eGhyID0geGhyc1tpXTsKLSAgICB4aHIub3BlbignUE9TVCcsIGNvbmZpZy5wcmVmaXhVcmwgKyAn
X3JlY2VpdmUnLCBjb25maWcuYXN5bmMpOwotICAgIHhoci5yZXNwb25zZVR5cGUgPSBjb25maWcu
ZGF0YVR5cGU7Ci0gICAgeGhyLnNlbmQoc2l6ZSArICcgbm9uZScpOwotICB9Ci19Ci0KLQotZnVu
Y3Rpb24gZ2V0Q29uZmlnU3RyaW5nKGNvbmZpZykgewotICByZXR1cm4gJygnICsgY29uZmlnLmRh
dGFUeXBlICsKLSAgICAnLCB2ZXJpZnlEYXRhPScgKyBjb25maWcudmVyaWZ5RGF0YSArCi0gICAg
JywgJyArIChpc1dvcmtlciA/ICdXb3JrZXInIDogJ01haW4nKSArCi0gICAgJywgJyArIChjb25m
aWcuYXN5bmMgPyAnQXN5bmMnIDogJ1N5bmMnKSArCi0gICAgJywgbnVtWEhScz0nICsgY29uZmln
Lm51bVhIUnMgKwotICAgICcsIG51bUl0ZXJhdGlvbnM9JyArIGNvbmZpZy5udW1JdGVyYXRpb25z
ICsKLSAgICAnLCBudW1XYXJtVXBJdGVyYXRpb25zPScgKyBjb25maWcubnVtV2FybVVwSXRlcmF0
aW9ucyArCi0gICAgJyknOwotfQotCi1mdW5jdGlvbiBzdGFydEJlbmNobWFyayhjb25maWcpIHsK
LSAgY2xlYXJUaW1lb3V0KHRpbWVySUQpOwotICBkZXN0cm95QWxsWEhScygpOwotCi0gIHJ1bk5l
eHRUYXNrKGNvbmZpZyk7Ci19Ci0KLS8vIFRPRE8oaGlyb3NoaWdlKTogdGhlIGZvbGxvd2luZyBj
b2RlIGlzIHRoZSBzYW1lIGFzIGJlbmNobWFyay5odG1sCi0vLyBhbmQgc29tZSBvZiB0aGVtIHNo
b3VsZCBiZSBtZXJnZWQgaW50byBlLmcuIHV0aWwuanMKLQotdmFyIHRhc2tzID0gW107Ci0KLWZ1
bmN0aW9uIHJ1bk5leHRUYXNrKGNvbmZpZykgewotICB2YXIgdGFzayA9IHRhc2tzLnNoaWZ0KCk7
Ci0gIGlmICh0YXNrID09IHVuZGVmaW5lZCkgewotICAgIGNvbmZpZy5hZGRUb0xvZygnRmluaXNo
ZWQnKTsKLSAgICBkZXN0cm95QWxsWEhScygpOwotICAgIHJldHVybjsKLSAgfQotICB0aW1lcklE
ID0gc2V0VGltZW91dCh0YXNrLCAwKTsKLX0KLQotZnVuY3Rpb24gYnVpbGRMZWdlbmRTdHJpbmco
Y29uZmlnKSB7Ci0gIHZhciBsZWdlbmQgPSAnJwotICBpZiAoY29uZmlnLnByaW50U2l6ZSkKLSAg
ICBsZWdlbmQgPSAnTWVzc2FnZSBzaXplIGluIEtpQiwgVGltZS9tZXNzYWdlIGluIG1zLCAnOwot
ICBsZWdlbmQgKz0gJ1NwZWVkIGluIGtCL3MnOwotICByZXR1cm4gbGVnZW5kOwotfQotCi1mdW5j
dGlvbiBhZGRUYXNrcyhjb25maWcsIHN0ZXBGdW5jKSB7Ci0gIGZvciAodmFyIGkgPSAwOwotICAg
ICAgaSA8IGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25zICsgY29uZmlnLm51bUl0ZXJhdGlvbnM7
ICsraSkgewotICAgIC8vIElnbm9yZSB0aGUgZmlyc3QgfGNvbmZpZy5udW1XYXJtVXBJdGVyYXRp
b25zfCBpdGVyYXRpb25zLgotICAgIGlmIChpID09IGNvbmZpZy5udW1XYXJtVXBJdGVyYXRpb25z
KQotICAgICAgYWRkUmVzdWx0Q2xlYXJpbmdUYXNrKGNvbmZpZyk7Ci0KLSAgICB2YXIgbXVsdGlw
bGllckluZGV4ID0gMDsKLSAgICBmb3IgKHZhciBzaXplID0gY29uZmlnLnN0YXJ0U2l6ZTsKLSAg
ICAgICAgIHNpemUgPD0gY29uZmlnLnN0b3BUaHJlc2hvbGQ7Ci0gICAgICAgICArK211bHRpcGxp
ZXJJbmRleCkgewotICAgICAgdmFyIHRhc2sgPSBzdGVwRnVuYy5iaW5kKAotICAgICAgICAgIG51
bGwsCi0gICAgICAgICAgc2l6ZSwKLSAgICAgICAgICBjb25maWcpOwotICAgICAgdGFza3MucHVz
aCh0YXNrKTsKLSAgICAgIHNpemUgKj0gY29uZmlnLm11bHRpcGxpZXJzWwotICAgICAgICAgIG11
bHRpcGxpZXJJbmRleCAlIGNvbmZpZy5tdWx0aXBsaWVycy5sZW5ndGhdOwotICAgIH0KLSAgfQot
fQotCi1mdW5jdGlvbiBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgdGl0bGUpIHsKLSAg
dGFza3MucHVzaChmdW5jdGlvbigpewotICAgICAgdGltZXJJRCA9IG51bGw7Ci0gICAgICBjb25m
aWcuYWRkVG9TdW1tYXJ5KHRpdGxlKTsKLSAgICAgIHJlcG9ydEF2ZXJhZ2VEYXRhKGNvbmZpZyk7
Ci0gICAgICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0gICAgICBydW5OZXh0VGFzayhjb25maWcpOwot
ICB9KTsKLX0KLQotZnVuY3Rpb24gYWRkUmVzdWx0Q2xlYXJpbmdUYXNrKGNvbmZpZykgewotICB0
YXNrcy5wdXNoKGZ1bmN0aW9uKCl7Ci0gICAgICB0aW1lcklEID0gbnVsbDsKLSAgICAgIGNsZWFy
QXZlcmFnZURhdGEoKTsKLSAgICAgIHJ1bk5leHRUYXNrKGNvbmZpZyk7Ci0gIH0pOwotfQotCi0v
LyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1mdW5jdGlvbiBzZW5kQmVuY2ht
YXJrKGNvbmZpZykgewotICBjb25maWcuYWRkVG9Mb2coJ1NlbmQgYmVuY2htYXJrJyk7Ci0gIGNv
bmZpZy5hZGRUb0xvZyhidWlsZExlZ2VuZFN0cmluZyhjb25maWcpKTsKLQotICB0YXNrcyA9IFtd
OwotICBjbGVhckF2ZXJhZ2VEYXRhKCk7Ci0gIGFkZFRhc2tzKGNvbmZpZywgc2VuZEJlbmNobWFy
a1N0ZXApOwotICBhZGRSZXN1bHRSZXBvcnRpbmdUYXNrKGNvbmZpZywgJ1NlbmQgQmVuY2htYXJr
ICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7
Ci19Ci0KLWZ1bmN0aW9uIHJlY2VpdmVCZW5jaG1hcmsoY29uZmlnKSB7Ci0gIGNvbmZpZy5hZGRU
b0xvZygnUmVjZWl2ZSBiZW5jaG1hcmsnKTsKLSAgY29uZmlnLmFkZFRvTG9nKGJ1aWxkTGVnZW5k
U3RyaW5nKGNvbmZpZykpOwotCi0gIHRhc2tzID0gW107Ci0gIGNsZWFyQXZlcmFnZURhdGEoKTsK
LSAgYWRkVGFza3MoY29uZmlnLCByZWNlaXZlQmVuY2htYXJrU3RlcCk7Ci0gIGFkZFJlc3VsdFJl
cG9ydGluZ1Rhc2soY29uZmlnLAotICAgICAgJ1JlY2VpdmUgQmVuY2htYXJrICcgKyBnZXRDb25m
aWdTdHJpbmcoY29uZmlnKSk7Ci0gIHN0YXJ0QmVuY2htYXJrKGNvbmZpZyk7Ci19Ci0KLWZ1bmN0
aW9uIGJhdGNoQmVuY2htYXJrKG9yaWdpbmFsQ29uZmlnKSB7Ci0gIG9yaWdpbmFsQ29uZmlnLmFk
ZFRvTG9nKCdCYXRjaCBiZW5jaG1hcmsnKTsKLQotICB0YXNrcyA9IFtdOwotICBjbGVhckF2ZXJh
Z2VEYXRhKCk7Ci0KLSAgdmFyIGRhdGFUeXBlcyA9IFsndGV4dCcsICdibG9iJywgJ2FycmF5YnVm
ZmVyJ107Ci0gIHZhciBzdGVwRnVuY3MgPSBbc2VuZEJlbmNobWFya1N0ZXAsIHJlY2VpdmVCZW5j
aG1hcmtTdGVwXTsKLSAgdmFyIG5hbWVzID0gWydTZW5kJywgJ1JlY2VpdmUnXTsKLSAgdmFyIGFz
eW5jID0gW3RydWUsIGZhbHNlXTsKLSAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdGVwRnVuY3MubGVu
Z3RoOyArK2kpIHsKLSAgICBmb3IgKHZhciBqID0gMDsgaiA8IGRhdGFUeXBlcy5sZW5ndGg7ICsr
aikgewotICAgICAgZm9yICh2YXIgayA9IDA7IGsgPCBhc3luYy5sZW5ndGg7ICsraykgewotICAg
ICAgICB2YXIgY29uZmlnID0gY2xvbmVDb25maWcob3JpZ2luYWxDb25maWcpOwotICAgICAgICBj
b25maWcuZGF0YVR5cGUgPSBkYXRhVHlwZXNbal07Ci0gICAgICAgIGNvbmZpZy5hc3luYyA9IGFz
eW5jW2tdOwotCi0gICAgICAgIC8vIFJlY2VpdmUgJiYgTm9uLVdvcmtlciAmJiBTeW5jIGlzIG5v
dCBzdXBwb3J0ZWQgYnkgdGhlIHNwZWMKLSAgICAgICAgaWYgKHN0ZXBGdW5jc1tpXSA9PT0gcmVj
ZWl2ZUJlbmNobWFya1N0ZXAgJiYgIWlzV29ya2VyICYmCi0gICAgICAgICAgICAhY29uZmlnLmFz
eW5jKQotICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGFkZFRhc2tzKGNvbmZpZywgc3Rl
cEZ1bmNzW2ldKTsKLSAgICAgICAgYWRkUmVzdWx0UmVwb3J0aW5nVGFzayhjb25maWcsCi0gICAg
ICAgICAgICBuYW1lc1tpXSArICcgYmVuY2htYXJrICcgKyBnZXRDb25maWdTdHJpbmcoY29uZmln
KSk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgc3RhcnRCZW5jaG1hcmsoY29uZmlnKTsKLX0K
LQotCi1mdW5jdGlvbiBzdG9wKGNvbmZpZykgewotICBkZXN0cm95QWxsWEhScygpOwotICBjbGVh
clRpbWVvdXQodGltZXJJRCk7Ci0gIHRpbWVySUQgPSBudWxsOwotICBjb25maWcuYWRkVG9Mb2co
J1N0b3BwZWQnKTsKLX0KLQotb25tZXNzYWdlID0gZnVuY3Rpb24gKG1lc3NhZ2UpIHsKLSAgdmFy
IGNvbmZpZyA9IG1lc3NhZ2UuZGF0YS5jb25maWc7Ci0gIGNvbmZpZy5hZGRUb0xvZyA9IHdvcmtl
ckFkZFRvTG9nOwotICBjb25maWcuYWRkVG9TdW1tYXJ5ID0gd29ya2VyQWRkVG9TdW1tYXJ5Owot
ICBjb25maWcubWVhc3VyZVZhbHVlID0gd29ya2VyTWVhc3VyZVZhbHVlOwotICBpZiAobWVzc2Fn
ZS5kYXRhLnR5cGUgPT09ICdzZW5kQmVuY2htYXJrJykKLSAgICBzZW5kQmVuY2htYXJrKGNvbmZp
Zyk7Ci0gIGVsc2UgaWYgKG1lc3NhZ2UuZGF0YS50eXBlID09PSAncmVjZWl2ZUJlbmNobWFyaycp
Ci0gICAgcmVjZWl2ZUJlbmNobWFyayhjb25maWcpOwotICBlbHNlIGlmIChtZXNzYWdlLmRhdGEu
dHlwZSA9PT0gJ2JhdGNoQmVuY2htYXJrJykKLSAgICBiYXRjaEJlbmNobWFyayhjb25maWcpOwot
ICBlbHNlIGlmIChtZXNzYWdlLmRhdGEudHlwZSA9PT0gJ3N0b3AnKQotICAgIHN0b3AoY29uZmln
KTsKLX07CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9leGFtcGxlL3hocl9ldmVudF9sb2dnZXIuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2OTgzNTUzYjhhYzgwMzU5ZWU4NWJhOTgxZTUwMDU4ZWNlNDM3Yzhh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L2V4YW1wbGUveGhyX2V2ZW50X2xvZ2dlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICsw
LDAgQEAKLTwhLS0KLUNvcHlyaWdodCAyMDE0IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0KLVVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxl
Ci1saWNlbnNlIHRoYXQgY2FuIGJlIGZvdW5kIGluIHRoZSBDT1BZSU5HIGZpbGUgb3IgYXQKLWh0
dHBzOi8vZGV2ZWxvcGVycy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotLS0+
Ci0KLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+WEhSIGV2ZW50IGxvZ2dlcjwvdGl0bGU+Ci08c2Ny
aXB0IHNyYz0idXRpbF9tYWluLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQ+Ci12YXIgZXZlbnRzID0g
W107Ci0KLWZ1bmN0aW9uIHJ1bigpIHsKLSAgZXZlbnRzID0gW107Ci0KLSAgZnVuY3Rpb24gcHVz
aFRvTG9nKHR5cGUpIHsKLSAgICBpZiAoZXZlbnRzLmxlbmd0aCAhPSAwICYmIHR5cGUgPT09IGV2
ZW50c1tldmVudHMubGVuZ3RoIC0gMV0udHlwZSkgewotICAgICAgZXZlbnRzW2V2ZW50cy5sZW5n
dGggLSAxXS5jb3VudCArPSAxOwotICAgIH0gZWxzZSB7Ci0gICAgICBldmVudHMucHVzaCh7dHlw
ZTogdHlwZSwgY291bnQ6IDF9KTsKLSAgICB9Ci0gIH0KLQotICB2YXIgeGhyID0gbmV3IFhNTEh0
dHBSZXF1ZXN0KCk7Ci0KLSAgZnVuY3Rpb24gZ2V0UHJvZ3Jlc3NFdmVudER1bXAoZSkgewotICAg
IHJldHVybiAnKCcgKyBlLmxlbmd0aENvbXB1dGFibGUgKyAnLCAnICsgZS5sb2FkZWQgKyAnLCAn
ICsgZS50b3RhbCArICcpJzsKLSAgfQotCi0gIHZhciBkdW1wUHJvZ3Jlc3NFdmVudCA9IGdldEJv
b2xGcm9tQ2hlY2tCb3goJ2R1bXBwcm9ncmVzc2V2ZW50Jyk7Ci0KLSAgZnVuY3Rpb24gbG9nKGUp
IHsKLSAgICB2YXIgdHlwZSA9IGUudHlwZTsKLSAgICBpZiAodHlwZSA9PT0gJ3JlYWR5c3RhdGVj
aGFuZ2UnKSB7Ci0gICAgICB0eXBlICs9IGUudGFyZ2V0LnJlYWR5U3RhdGU7Ci0gICAgfQotICAg
IGlmIChkdW1wUHJvZ3Jlc3NFdmVudCAmJiAoZSBpbnN0YW5jZW9mIFByb2dyZXNzRXZlbnQpKSB7
Ci0gICAgICB0eXBlICs9IGdldFByb2dyZXNzRXZlbnREdW1wKGUpOwotICAgIH0KLSAgICBwdXNo
VG9Mb2codHlwZSk7Ci0gIH07Ci0KLSAgZnVuY3Rpb24gbG9nVXBsb2FkKGUpIHsKLSAgICB2YXIg
dHlwZSA9IGUudHlwZTsKLSAgICBpZiAoZHVtcFByb2dyZXNzRXZlbnQgJiYgKGUgaW5zdGFuY2Vv
ZiBQcm9ncmVzc0V2ZW50KSkgewotICAgICAgdHlwZSArPSBnZXRQcm9ncmVzc0V2ZW50RHVtcChl
KTsKLSAgICB9Ci0gICAgcHVzaFRvTG9nKCd1cGxvYWQnICsgdHlwZSk7Ci0gIH0KLQotICBpZiAo
Z2V0Qm9vbEZyb21DaGVja0JveCgndXBsb2FkJykpIHsKLSAgICB2YXIgdXBsb2FkID0geGhyLnVw
bG9hZDsKLSAgICB1cGxvYWQub25sb2Fkc3RhcnQgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9u
cHJvZ3Jlc3MgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9uYWJvcnQgPSBsb2dVcGxvYWQ7Ci0g
ICAgdXBsb2FkLm9uZXJyb3IgPSBsb2dVcGxvYWQ7Ci0gICAgdXBsb2FkLm9ubG9hZCA9IGxvZ1Vw
bG9hZDsKLSAgICB1cGxvYWQub250aW1lb3V0ID0gbG9nVXBsb2FkOwotICAgIHVwbG9hZC5vbmxv
YWRlbmQgPSBsb2dVcGxvYWQ7Ci0gIH0KLQotICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gbG9n
OwotICB4aHIub25sb2Fkc3RhcnQgPSBsb2c7Ci0gIHhoci5vbnByb2dyZXNzID0gbG9nOwotICB4
aHIub25hYm9ydCA9IGxvZzsKLSAgeGhyLm9uZXJyb3IgPSBsb2c7Ci0gIHhoci5vbmxvYWQgPSBs
b2c7Ci0gIHhoci5vbnRpbWVvdXQgPSBsb2c7Ci0gIHhoci5vbmxvYWRlbmQgPSBsb2c7Ci0KLSAg
eGhyLm9wZW4oJ1BPU1QnLCAnLzA3M2JlMDAxZTEwOTUwNjkyY2NiZjNhMmFkMjFjMjQ1X3JlY2Vp
dmUnLAotICAgICAgICAgICBnZXRCb29sRnJvbUNoZWNrQm94KCdhc3luYycpKTsKLSAgdmFyIHNp
emUgPSBnZXRJbnRGcm9tSW5wdXQoJ3NpemUnKTsKLSAgdmFyIGNodW5rZWRNb2RlID0gJ25vbmUn
OwotICBpZiAoZ2V0Qm9vbEZyb21DaGVja0JveCgnY2h1bmtlZHJlc3BvbnNlJykpIHsKLSAgICBj
aHVua2VkTW9kZSA9ICdjaHVua2VkJzsKLSAgfQotICB4aHIuc2VuZChzaXplICsgJyAnICsgY2h1
bmtlZE1vZGUpOwotfQotCi1mdW5jdGlvbiBwcmludCgpIHsKLSAgdmFyIHJlc3VsdCA9ICcnOwot
ICBmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50cy5sZW5ndGg7ICsraSkgewotICAgIHZhciBldmVu
dCA9IGV2ZW50c1tpXTsKLSAgICByZXN1bHQgKz0gZXZlbnQudHlwZSArICcgKiAnICsgZXZlbnQu
Y291bnQgKyAnXG4nOwotICB9Ci0gIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsb2cnKS52YWx1
ZSA9IHJlc3VsdDsKLX0KLTwvc2NyaXB0PgotCi08Ym9keT4KLSAgPHRleHRhcmVhIGlkPSJsb2ci
IHJvd3M9IjEwIiBjb2xzPSI0MCIgcmVhZG9ubHk+PC90ZXh0YXJlYT4KLSAgPGJyLz4KLSAgU2l6
ZTogPGlucHV0IHR5cGU9InRleHQiIGlkPSJzaXplIiB2YWx1ZT0iNjU1MzYiPjxici8+Ci0gIDxp
bnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImNodW5rZWRyZXNwb25zZSI+Ci0gIDxsYWJlbCBmb3I9
ImNodW5rZWRyZXNwb25zZSI+VXNlIENodW5rZWQgVC1FIGZvciByZXNwb25zZTwvbGFiZWw+PGJy
Lz4KLSAgPGlucHV0IHR5cGU9ImNoZWNrYm94IiBpZD0idXBsb2FkIj4KLSAgPGxhYmVsIGZvcj0i
dXBsb2FkIj5VcGxvYWQgcHJvZ3Jlc3M8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJjaGVj
a2JveCIgaWQ9ImR1bXBwcm9ncmVzc2V2ZW50Ij4KLSAgPGxhYmVsIGZvcj0iZHVtcHByb2dyZXNz
ZXZlbnQiPgotICAgIER1bXAgbGVuZ3RoQ29tcHV0YWJsZS9sb2FkZWQvdG90YWw8L2xhYmVsPjxi
ci8+Ci0gIDxpbnB1dCB0eXBlPSJjaGVja2JveCIgaWQ9ImFzeW5jIiBjaGVja2VkPgotICA8bGFi
ZWwgZm9yPSJhc3luYyI+QXN5bmM8L2xhYmVsPjxici8+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24i
IG9uY2xpY2s9InJ1bigpIiB2YWx1ZT0iUnVuIFhIUiI+Ci0gIDxpbnB1dCB0eXBlPSJidXR0b24i
IG9uY2xpY2s9InByaW50KCkiIHZhbHVlPSJQcmludCBsb2ciPgotPC9ib2R5PgotPC9odG1sPgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3MDkzM2EyMjA0NTFmYWRiNmEwMWE1YzFkNDVjMjU1MTQ2OGQ3ZDg1Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNv
Y2tldC9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDIyNCArMCwwIEBACi0jIENvcHly
aWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgZXh0ZW5zaW9uIGZvciBBcGFjaGUgSFRUUCBTZXJ2
ZXIuCi0KLW1vZF9weXdlYnNvY2tldCBpcyBhIFdlYlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNo
ZSBIVFRQIFNlcnZlcgotaW50ZW5kZWQgZm9yIHRlc3Rpbmcgb3IgZXhwZXJpbWVudGFsIHB1cnBv
c2VzLiBtb2RfcHl0aG9uIGlzIHJlcXVpcmVkLgotCi0KLUluc3RhbGxhdGlvbgotPT09PT09PT09
PT09Ci0KLTAuIFByZXBhcmUgYW4gQXBhY2hlIEhUVFAgU2VydmVyIGZvciB3aGljaCBtb2RfcHl0
aG9uIGlzIGVuYWJsZWQuCi0KLTEuIFNwZWNpZnkgdGhlIGZvbGxvd2luZyBBcGFjaGUgSFRUUCBT
ZXJ2ZXIgZGlyZWN0aXZlcyB0byBzdWl0IHlvdXIKLSAgIGNvbmZpZ3VyYXRpb24uCi0KLSAgIElm
IG1vZF9weXdlYnNvY2tldCBpcyBub3QgaW4gdGhlIFB5dGhvbiBwYXRoLCBzcGVjaWZ5IHRoZSBm
b2xsb3dpbmcuCi0gICA8d2Vic29ja19saWI+IGlzIHRoZSBkaXJlY3Rvcnkgd2hlcmUgbW9kX3B5
d2Vic29ja2V0IGlzIGluc3RhbGxlZC4KLQotICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1sn
PHdlYnNvY2tfbGliPiddIgotCi0gICBBbHdheXMgc3BlY2lmeSB0aGUgZm9sbG93aW5nLiA8d2Vi
c29ja19oYW5kbGVycz4gaXMgdGhlIGRpcmVjdG9yeSB3aGVyZQotICAgdXNlci13cml0dGVuIFdl
YlNvY2tldCBoYW5kbGVycyBhcmUgcGxhY2VkLgotCi0gICAgICAgUHl0aG9uT3B0aW9uIG1vZF9w
eXdlYnNvY2tldC5oYW5kbGVyX3Jvb3QgPHdlYnNvY2tfaGFuZGxlcnM+Ci0gICAgICAgUHl0aG9u
SGVhZGVyUGFyc2VySGFuZGxlciBtb2RfcHl3ZWJzb2NrZXQuaGVhZGVycGFyc2VyaGFuZGxlcgot
Ci0gICBUbyBsaW1pdCB0aGUgc2VhcmNoIGZvciBXZWJTb2NrZXQgaGFuZGxlcnMgdG8gYSBkaXJl
Y3RvcnkgPHNjYW5fZGlyPgotICAgdW5kZXIgPHdlYnNvY2tfaGFuZGxlcnM+LCBjb25maWd1cmUg
YXMgZm9sbG93czoKLQotICAgICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuaGFuZGxl
cl9zY2FuIDxzY2FuX2Rpcj4KLQotICAgPHNjYW5fZGlyPiBpcyB1c2VmdWwgaW4gc2F2aW5nIHNj
YW4gdGltZSB3aGVuIDx3ZWJzb2NrX2hhbmRsZXJzPgotICAgY29udGFpbnMgbWFueSBub24tV2Vi
U29ja2V0IGhhbmRsZXIgZmlsZXMuCi0KLSAgIElmIHlvdSB3YW50IHRvIGFsbG93IGhhbmRsZXJz
IHdob3NlIGNhbm9uaWNhbCBwYXRoIGlzIG5vdCB1bmRlciB0aGUgcm9vdAotICAgZGlyZWN0b3J5
IChpLmUuIHN5bWJvbGljIGxpbmsgaXMgaW4gcm9vdCBkaXJlY3RvcnkgYnV0IGl0cyB0YXJnZXQg
aXMgbm90KSwKLSAgIGNvbmZpZ3VyZSBhcyBmb2xsb3dzOgotCi0gICAgICAgUHl0aG9uT3B0aW9u
IG1vZF9weXdlYnNvY2tldC5hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyIE9uCi0KLSAg
IEV4YW1wbGUgc25pcHBldCBvZiBodHRwZC5jb25mOgotICAgKG1vZF9weXdlYnNvY2tldCBpcyBp
biAvd2Vic29ja19saWIsIFdlYlNvY2tldCBoYW5kbGVycyBhcmUgaW4KLSAgIC93ZWJzb2NrX2hh
bmRsZXJzLCBwb3J0IGlzIDgwIGZvciB3cywgNDQzIGZvciB3c3MuKQotCi0gICAgICAgPElmTW9k
dWxlIHB5dGhvbl9tb2R1bGU+Ci0gICAgICAgICBQeXRob25QYXRoICJzeXMucGF0aCtbJy93ZWJz
b2NrX2xpYiddIgotICAgICAgICAgUHl0aG9uT3B0aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVy
X3Jvb3QgL3dlYnNvY2tfaGFuZGxlcnMKLSAgICAgICAgIFB5dGhvbkhlYWRlclBhcnNlckhhbmRs
ZXIgbW9kX3B5d2Vic29ja2V0LmhlYWRlcnBhcnNlcmhhbmRsZXIKLSAgICAgICA8L0lmTW9kdWxl
PgotCi0yLiBUdW5lIEFwYWNoZSBwYXJhbWV0ZXJzIGZvciBzZXJ2aW5nIFdlYlNvY2tldC4gV2Un
ZCBsaWtlIHRvIG5vdGUgdGhhdCBhdAotICAgbGVhc3QgVGltZU91dCBkaXJlY3RpdmUgZnJvbSBj
b3JlIGZlYXR1cmVzIGFuZCBSZXF1ZXN0UmVhZFRpbWVvdXQKLSAgIGRpcmVjdGl2ZSBmcm9tIG1v
ZF9yZXF0aW1lb3V0IHNob3VsZCBiZSBtb2RpZmllZCBub3QgdG8ga2lsbCBjb25uZWN0aW9ucwot
ICAgaW4gb25seSBhIGZldyBzZWNvbmRzIG9mIGlkbGUgdGltZS4KLQotMy4gVmVyaWZ5IGluc3Rh
bGxhdGlvbi4gWW91IGNhbiB1c2UgZXhhbXBsZS9jb25zb2xlLmh0bWwgdG8gcG9rZSB0aGUgc2Vy
dmVyLgotCi0KLVdyaXRpbmcgV2ViU29ja2V0IGhhbmRsZXJzCi09PT09PT09PT09PT09PT09PT09
PT09PT09PQotCi1XaGVuIGEgV2ViU29ja2V0IHJlcXVlc3QgY29tZXMgaW4sIHRoZSByZXNvdXJj
ZSBuYW1lCi1zcGVjaWZpZWQgaW4gdGhlIGhhbmRzaGFrZSBpcyBjb25zaWRlcmVkIGFzIGlmIGl0
IGlzIGEgZmlsZSBwYXRoIHVuZGVyCi08d2Vic29ja19oYW5kbGVycz4gYW5kIHRoZSBoYW5kbGVy
IGRlZmluZWQgaW4KLTx3ZWJzb2NrX2hhbmRsZXJzPi88cmVzb3VyY2VfbmFtZT5fd3NoLnB5IGlz
IGludm9rZWQuCi0KLUZvciBleGFtcGxlLCBpZiB0aGUgcmVzb3VyY2UgbmFtZSBpcyAvZXhhbXBs
ZS9jaGF0LCB0aGUgaGFuZGxlciBkZWZpbmVkIGluCi08d2Vic29ja19oYW5kbGVycz4vZXhhbXBs
ZS9jaGF0X3dzaC5weSBpcyBpbnZva2VkLgotCi1BIFdlYlNvY2tldCBoYW5kbGVyIGlzIGNvbXBv
c2VkIG9mIHRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zOgotCi0gICAgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkKLSAgICB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCkKLSAgICB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UocmVxdWVz
dCkKLQotd2hlcmU6Ci0gICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotCi13ZWJfc29j
a2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBjYWxsZWQgZHVyaW5nIHRoZSBoYW5kc2hha2UgYWZ0
ZXIgdGhlCi1oZWFkZXJzIGFyZSBzdWNjZXNzZnVsbHkgcGFyc2VkIGFuZCBXZWJTb2NrZXQgcHJv
cGVydGllcyAod3NfbG9jYXRpb24sCi13c19vcmlnaW4sIGFuZCB3c19yZXNvdXJjZSkgYXJlIGFk
ZGVkIHRvIHJlcXVlc3QuIEEgaGFuZGxlcgotY2FuIHJlamVjdCB0aGUgcmVxdWVzdCBieSByYWlz
aW5nIGFuIGV4Y2VwdGlvbi4KLQotQSByZXF1ZXN0IG9iamVjdCBoYXMgdGhlIGZvbGxvd2luZyBw
cm9wZXJ0aWVzIHRoYXQgeW91IGNhbiB1c2UgZHVyaW5nIHRoZQotZXh0cmEgaGFuZHNoYWtlICh3
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSk6Ci0tIHdzX3Jlc291cmNlCi0tIHdzX29yaWdp
bgotLSB3c192ZXJzaW9uCi0tIHdzX2xvY2F0aW9uIChIeUJpIDAwIG9ubHkpCi0tIHdzX2V4dGVu
c2lvbnMgKEh5QmkgMDYgYW5kIGxhdGVyKQotLSB3c19kZWZsYXRlIChIeUJpIDA2IGFuZCBsYXRl
cikKLS0gd3NfcHJvdG9jb2wKLS0gd3NfcmVxdWVzdGVkX3Byb3RvY29scyAoSHlCaSAwNiBhbmQg
bGF0ZXIpCi0KLVRoZSBsYXN0IHR3byBhcmUgYSBiaXQgdHJpY2t5LiBTZWUgdGhlIG5leHQgc3Vi
c2VjdGlvbi4KLQotCi1TdWJwcm90b2NvbCBOZWdvdGlhdGlvbgotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotRm9yIEh5QmkgMDYgYW5kIGxhdGVyLCB3c19wcm90b2NvbCBpcyBhbHdheXMgc2V0
IHRvIE5vbmUgd2hlbgotd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2FsbGVkLiBJ
ZiB3c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlzIG5vdAotTm9uZSwgeW91IG11c3QgY2hvb3NlIG9u
ZSBzdWJwcm90b2NvbCBmcm9tIHRoaXMgbGlzdCBhbmQgc2V0IGl0IHRvCi13c19wcm90b2NvbC4K
LQotRm9yIEh5QmkgMDAsIHdoZW4gd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgaXMgY2Fs
bGVkLAotd3NfcHJvdG9jb2wgaXMgc2V0IHRvIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgY2xpZW50
IGluCi1TZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlciBvciBOb25lIGlmCi1zdWNoIGhlYWRl
ciB3YXMgbm90IGZvdW5kIGluIHRoZSBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0LiBGaW5pc2gg
ZXh0cmEKLWhhbmRzaGFrZSB3aXRoIHdzX3Byb3RvY29sIHVudG91Y2hlZCB0byBhY2NlcHQgdGhl
IHJlcXVlc3Qgc3VicHJvdG9jb2wuCi1UaGVuLCBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRl
ciB3aWxsIGJlIHNlbnQgdG8KLXRoZSBjbGllbnQgaW4gcmVzcG9uc2Ugd2l0aCB0aGUgc2FtZSB2
YWx1ZSBhcyByZXF1ZXN0ZWQuIFJhaXNlIGFuIGV4Y2VwdGlvbgotaW4gd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0ZWQgc3VicHJvdG9jb2wuCi0KLQot
RGF0YSBUcmFuc2ZlcgotLS0tLS0tLS0tLS0tLQotCi13ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEg
aXMgY2FsbGVkIGFmdGVyIHRoZSBoYW5kc2hha2UgY29tcGxldGVkCi1zdWNjZXNzZnVsbHkuIEEg
aGFuZGxlciBjYW4gcmVjZWl2ZS9zZW5kIG1lc3NhZ2VzIGZyb20vdG8gdGhlIGNsaWVudAotdXNp
bmcgcmVxdWVzdC4gbW9kX3B5d2Vic29ja2V0Lm1zZ3V0aWwgbW9kdWxlIHByb3ZpZGVzIHV0aWxp
dGllcwotZm9yIGRhdGEgdHJhbnNmZXIuCi0KLVlvdSBjYW4gcmVjZWl2ZSBhIG1lc3NhZ2UgYnkg
dGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQuCi0KLSAgICBtZXNzYWdlID0gcmVxdWVzdC53c19zdHJl
YW0ucmVjZWl2ZV9tZXNzYWdlKCkKLQotVGhpcyBjYWxsIGJsb2NrcyB1bnRpbCBhbnkgY29tcGxl
dGUgdGV4dCBmcmFtZSBhcnJpdmVzLCBhbmQgdGhlIHBheWxvYWQgZGF0YQotb2YgdGhlIGluY29t
aW5nIGZyYW1lIHdpbGwgYmUgc3RvcmVkIGludG8gbWVzc2FnZS4gV2hlbiB5b3UncmUgdXNpbmcg
SUVURgotSHlCaSAwMCBvciBsYXRlciBwcm90b2NvbCwgcmVjZWl2ZV9tZXNzYWdlKCkgd2lsbCBy
ZXR1cm4gTm9uZSBvbiByZWNlaXZpbmcKLWNsaWVudC1pbml0aWF0ZWQgY2xvc2luZyBoYW5kc2hh
a2UuIFdoZW4gYW55IGVycm9yIG9jY3VycywgcmVjZWl2ZV9tZXNzYWdlKCkKLXdpbGwgcmFpc2Ug
c29tZSBleGNlcHRpb24uCi0KLVlvdSBjYW4gc2VuZCBhIG1lc3NhZ2UgYnkgdGhlIGZvbGxvd2lu
ZyBzdGF0ZW1lbnQuCi0KLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UobWVzc2Fn
ZSkKLQotCi1DbG9zaW5nIENvbm5lY3Rpb24KLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1FeGVjdXRp
bmcgdGhlIGZvbGxvd2luZyBzdGF0ZW1lbnQgb3IganVzdCByZXR1cm4taW5nIGZyb20KLXdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YSBjYXVzZSBjb25uZWN0aW9uIGNsb3NlLgotCi0gICAgcmVxdWVz
dC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0KLWNsb3NlX2Nvbm5lY3Rpb24gd2lsbCB3
YWl0Ci1mb3IgY2xvc2luZyBoYW5kc2hha2UgYWNrbm93bGVkZ2VtZW50IGNvbWluZyBmcm9tIHRo
ZSBjbGllbnQuIFdoZW4gaXQKLWNvdWxkbid0IHJlY2VpdmUgYSB2YWxpZCBhY2tub3dsZWRnZW1l
bnQsIHJhaXNlcyBhbiBleGNlcHRpb24uCi0KLXdlYl9zb2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZSBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHNlcnZlciByZWNlaXZlcwotaW5jb21pbmcgY2xv
c2luZyBmcmFtZSBmcm9tIHRoZSBjbGllbnQgcGVlciBpbW1lZGlhdGVseS4gWW91IGNhbiBzcGVj
aWZ5Ci1jb2RlIGFuZCByZWFzb24gYnkgcmV0dXJuIHZhbHVlcy4gVGhleSBhcmUgc2VudCBhcyBh
IG91dGdvaW5nIGNsb3NpbmcgZnJhbWUKLWZyb20gdGhlIHNlcnZlci4gQSByZXF1ZXN0IG9iamVj
dCBoYXMgdGhlIGZvbGxvd2luZyBwcm9wZXJ0aWVzIHRoYXQgeW91IGNhbgotdXNlIGluIHdlYl9z
b2NrZXRfcGFzc2l2ZV9jbG9zaW5nX2hhbmRzaGFrZS4KLS0gd3NfY2xvc2VfY29kZQotLSB3c19j
bG9zZV9yZWFzb24KLQotCi1UaHJlYWRpbmcKLS0tLS0tLS0tLQotCi1BIFdlYlNvY2tldCBoYW5k
bGVyIG11c3QgYmUgdGhyZWFkLXNhZmUgaWYgdGhlIHNlcnZlciAoQXBhY2hlIG9yCi1zdGFuZGFs
b25lLnB5KSBpcyBjb25maWd1cmVkIHRvIHVzZSB0aHJlYWRzLgotCi0KLUNvbmZpZ3VyaW5nIFdl
YlNvY2tldCBFeHRlbnNpb24gUHJvY2Vzc29ycwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLVNlZSBleHRlbnNpb25zLnB5IGZvciBzdXBwb3J0ZWQgV2ViU29j
a2V0IGV4dGVuc2lvbnMuIE5vdGUgdGhhdCB0aGV5IGFyZQotdW5zdGFibGUgYW5kIHRoZWlyIEFQ
SXMgYXJlIHN1YmplY3QgdG8gY2hhbmdlIHN1YnN0YW50aWFsbHkuCi0KLUEgcmVxdWVzdCBvYmpl
Y3QgaGFzIHRoZXNlIGV4dGVuc2lvbiBwcm9jZXNzaW5nIHJlbGF0ZWQgYXR0cmlidXRlcy4KLQot
LSB3c19yZXF1ZXN0ZWRfZXh0ZW5zaW9uczoKLQotICBBIGxpc3Qgb2YgY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlciBpbnN0YW5jZXMgcmVwcmVzZW50aW5nIGV4dGVuc2lvbgotICBwYXJhbWV0ZXJz
IHJlY2VpdmVkIGZyb20gdGhlIGNsaWVudCBpbiB0aGUgY2xpZW50J3Mgb3BlbmluZyBoYW5kc2hh
a2UuCi0gIFlvdSBzaG91bGRuJ3QgbW9kaWZ5IGl0IG1hbnVhbGx5LgotCi0tIHdzX2V4dGVuc2lv
bnM6Ci0KLSAgQSBsaXN0IG9mIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIgaW5zdGFuY2VzIHJl
cHJlc2VudGluZyBleHRlbnNpb24KLSAgcGFyYW1ldGVycyB0byBzZW5kIGJhY2sgdG8gdGhlIGNs
aWVudCBpbiB0aGUgc2VydmVyJ3Mgb3BlbmluZyBoYW5kc2hha2UuCi0gIFlvdSBzaG91bGRuJ3Qg
dG91Y2ggaXQgZGlyZWN0bHkuIEluc3RlYWQsIGNhbGwgbWV0aG9kcyBvbiBleHRlbnNpb24KLSAg
cHJvY2Vzc29ycy4KLQotLSB3c19leHRlbnNpb25fcHJvY2Vzc29yczoKLQotICBBIGxpc3Qgb2Yg
bG9hZGVkIGV4dGVuc2lvbiBwcm9jZXNzb3JzLiBGaW5kIHRoZSBwcm9jZXNzb3IgZm9yIHRoZQot
ICBleHRlbnNpb24geW91IHdhbnQgdG8gY29uZmlndXJlIGZyb20gaXQsIGFuZCBjYWxsIGl0cyBt
ZXRob2RzLgotIiIiCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0IHR3PTcyCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L19zdHJlYW1fYmFzZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
ODIzNTY2NmJiYjFkNTFjMTBkYjNmOTFiZGE0YWJjZDdhZmViMjY4Mi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQv
X3N0cmVhbV9iYXNlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTgxICswLDAgQEAKLSMgQ29weXJp
Z2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotCi0KLSIiIkJhc2Ugc3RyZWFtIGNsYXNzLgotIiIiCi0KLQotIyBOb3RlOiByZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0
aG91Z2gKLSMgbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNl
ZCBvbmx5IGluIGNvbm5lY3Rpb24KLSMgaGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUg
bm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUg
bm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVzCi0j
IHdyaXRpbmcvcmVhZGluZy4KLQotCi1pbXBvcnQgc29ja2V0Ci0KLWZyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCi0KLQotIyBFeGNlcHRpb25zCi0KLQotY2xhc3MgQ29ubmVjdGlvblRl
cm1pbmF0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxs
IGJlIHJhaXNlZCB3aGVuIGEgY29ubmVjdGlvbiBpcyB0ZXJtaW5hdGVkCi0gICAgdW5leHBlY3Rl
ZGx5LgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEludmFsaWRGcmFtZUV4Y2VwdGlv
bihDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24g
d2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlZCBhbiBpbnZhbGlkIGZyYW1lIHdlCi0gICAg
Y2Fubm90IHBhcnNlLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNzIEJhZE9wZXJhdGlv
bkV4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0aW9uIHdpbGwgYmUgcmFp
c2VkIHdoZW4gc2VuZF9tZXNzYWdlKCkgaXMgY2FsbGVkIG9uCi0gICAgc2VydmVyLXRlcm1pbmF0
ZWQgY29ubmVjdGlvbiBvciByZWNlaXZlX21lc3NhZ2UoKSBpcyBjYWxsZWQgb24KLSAgICBjbGll
bnQtdGVybWluYXRlZCBjb25uZWN0aW9uLgotICAgICIiIgotCi0gICAgcGFzcwotCi0KLWNsYXNz
IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2Vw
dGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVuIHdlIHJlY2VpdmUgYSBmcmFtZSB3aXRoIGZsYWcsIG9w
Y29kZQotICAgIHdlIGNhbm5vdCBoYW5kbGUuIEhhbmRsZXJzIGNhbiBqdXN0IGNhdGNoIGFuZCBp
Z25vcmUgdGhpcyBleGNlcHRpb24gYW5kCi0gICAgY2FsbCByZWNlaXZlX21lc3NhZ2UoKSBhZ2Fp
biB0byBjb250aW51ZSBwcm9jZXNzaW5nIHRoZSBuZXh0IGZyYW1lLgotICAgICIiIgotCi0gICAg
cGFzcwotCi0KLWNsYXNzIEludmFsaWRVVEY4RXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAgIiIi
VGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiB3ZSByZWNlaXZlIGEgdGV4dCBmcmFt
ZSB3aGljaAotICAgIGNvbnRhaW5zIGludmFsaWQgVVRGLTggc3RyaW5ncy4KLSAgICAiIiIKLQot
ICAgIHBhc3MKLQotCi1jbGFzcyBTdHJlYW1CYXNlKG9iamVjdCk6Ci0gICAgIiIiQmFzZSBzdHJl
YW0gY2xhc3MuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAg
ICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAg
cmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9y
ZXF1ZXN0ID0gcmVxdWVzdAotCi0gICAgZGVmIF9yZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAg
ICIiIlJlYWRzIGxlbmd0aCBieXRlcyBmcm9tIGNvbm5lY3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2gg
YW55IGV4Y2VwdGlvbiwKLSAgICAgICAgcHJlcGVuZHMgcmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4
Y2VwdGlvbiBtZXNzYWdlIGFuZCByYWlzZSBhZ2Fpbi4KLQotICAgICAgICBSYWlzZXM6Ci0gICAg
ICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hlbiByZWFkIHJldHVybnMg
ZW1wdHkgc3RyaW5nLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBy
ZWFkX2J5dGVzID0gc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlYWQobGVuZ3RoKQotICAgICAg
ICAgICAgaWYgbm90IHJlYWRfYnl0ZXM6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlv
blRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdSZWNlaXZpbmcgJWQg
Ynl0ZSBmYWlsZWQuIFBlZXIgKCVyKSBjbG9zZWQgY29ubmVjdGlvbicgJQotICAgICAgICAgICAg
ICAgICAgICAobGVuZ3RoLCAoc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCkp
KQotICAgICAgICAgICAgcmV0dXJuIHJlYWRfYnl0ZXMKLSAgICAgICAgZXhjZXB0IHNvY2tldC5l
cnJvciwgZToKLSAgICAgICAgICAgICMgQ2F0Y2ggYSBzb2NrZXQuZXJyb3IuIEJlY2F1c2UgaXQn
cyBub3QgYSBjaGlsZCBjbGFzcyBvZiB0aGUKLSAgICAgICAgICAgICMgSU9FcnJvciBwcmlvciB0
byBQeXRob24gMi42LCB3ZSBjYW5ub3Qgb21pdCB0aGlzIGV4Y2VwdCBjbGF1c2UuCi0gICAgICAg
ICAgICAjIFVzZSAlcyByYXRoZXIgdGhhbiAlciBmb3IgdGhlIGV4Y2VwdGlvbiB0byB1c2UgaHVt
YW4gZnJpZW5kbHkKLSAgICAgICAgICAgICMgZm9ybWF0LgotICAgICAgICAgICAgcmFpc2UgQ29u
bmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAl
ZCBieXRlIGZhaWxlZC4gc29ja2V0LmVycm9yICglcykgb2NjdXJyZWQnICUKLSAgICAgICAgICAg
ICAgICAobGVuZ3RoLCBlKSkKLSAgICAgICAgZXhjZXB0IElPRXJyb3IsIGU6Ci0gICAgICAgICAg
ICAjIEFsc28gY2F0Y2ggYW4gSU9FcnJvciBiZWNhdXNlIG1vZF9weXRob24gdGhyb3dzIGl0Lgot
ICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRlIGZhaWxlZC4gSU9FcnJvciAoJXMpIG9jY3VycmVk
JyAlCi0gICAgICAgICAgICAgICAgKGxlbmd0aCwgZSkpCi0KLSAgICBkZWYgX3dyaXRlKHNlbGYs
IGJ5dGVzX3RvX3dyaXRlKToKLSAgICAgICAgIiIiV3JpdGVzIGdpdmVuIGJ5dGVzIHRvIGNvbm5l
Y3Rpb24uIEluIGNhc2Ugd2UgY2F0Y2ggYW55IGV4Y2VwdGlvbiwKLSAgICAgICAgcHJlcGVuZHMg
cmVtb3RlIGFkZHJlc3MgdG8gdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGFuZCByYWlzZSBhZ2Fpbi4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5j
b25uZWN0aW9uLndyaXRlKGJ5dGVzX3RvX3dyaXRlKQotICAgICAgICBleGNlcHQgRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAotICAg
ICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHNlbmQgbWVzc2FnZSB0byAlcjogJyAlCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5yZW1vdGVf
YWRkciwpLAotICAgICAgICAgICAgICAgICAgICBlKQotICAgICAgICAgICAgcmFpc2UKLQotICAg
IGRlZiByZWNlaXZlX2J5dGVzKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIlJlY2VpdmVzIG11
bHRpcGxlIGJ5dGVzLiBSZXRyaWVzIHJlYWQgd2hlbiB3ZSBjb3VsZG4ndCByZWNlaXZlIHRoZQot
ICAgICAgICBzcGVjaWZpZWQgYW1vdW50LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAg
IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBz
dHJpbmcuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJlYWRfYnl0ZXMgPSBbXQotICAgICAgICB3
aGlsZSBsZW5ndGggPiAwOgotICAgICAgICAgICAgbmV3X3JlYWRfYnl0ZXMgPSBzZWxmLl9yZWFk
KGxlbmd0aCkKLSAgICAgICAgICAgIHJlYWRfYnl0ZXMuYXBwZW5kKG5ld19yZWFkX2J5dGVzKQot
ICAgICAgICAgICAgbGVuZ3RoIC09IGxlbihuZXdfcmVhZF9ieXRlcykKLSAgICAgICAgcmV0dXJu
ICcnLmpvaW4ocmVhZF9ieXRlcykKLQotICAgIGRlZiBfcmVhZF91bnRpbChzZWxmLCBkZWxpbV9j
aGFyKToKLSAgICAgICAgIiIiUmVhZHMgYnl0ZXMgdW50aWwgd2UgZW5jb3VudGVyIGRlbGltX2No
YXIuIFRoZSByZXN1bHQgd2lsbCBub3QKLSAgICAgICAgY29udGFpbiBkZWxpbV9jaGFyLgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9u
OiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eSBzdHJpbmcuCi0gICAgICAgICIiIgotCi0gICAgICAg
IHJlYWRfYnl0ZXMgPSBbXQotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgY2ggPSBz
ZWxmLl9yZWFkKDEpCi0gICAgICAgICAgICBpZiBjaCA9PSBkZWxpbV9jaGFyOgotICAgICAgICAg
ICAgICAgIGJyZWFrCi0gICAgICAgICAgICByZWFkX2J5dGVzLmFwcGVuZChjaCkKLSAgICAgICAg
cmV0dXJuICcnLmpvaW4ocmVhZF9ieXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oaXhpZTc1LnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA5NGNmNWIzMWJhMGZjM2MzYTM0NzdkZTgyMjk3YTBjMjZkYTFjNDhjLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21v
ZF9weXdlYnNvY2tldC9fc3RyZWFtX2hpeGllNzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMjkg
KzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNl
cnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3Ry
aWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhl
IG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3Bl
Y2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIGEgY2xh
c3MgZm9yIHBhcnNpbmcvYnVpbGRpbmcgZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQKLXByb3RvY29s
IHZlcnNpb24gSHlCaSAwMCBhbmQgSGl4aWUgNzUuCi0KLVNwZWNpZmljYXRpb246Ci0tIEh5Qmkg
MDAgaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXRoZXdlYnNvY2tl
dHByb3RvY29sLTAwCi0tIEhpeGllIDc1IGh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0
LWhpeGllLXRoZXdlYnNvY2tldHByb3RvY29sLTc1Ci0iIiIKLQotCi1mcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1w
b3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9i
YXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9k
X3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgU3RyZWFtQmFzZQotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCi1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotCi0KLWNsYXNzIFN0cmVhbUhpeGllNzUo
U3RyZWFtQmFzZSk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgcGFyc2luZy9idWlsZGluZyBmcmFtZXMg
b2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uCi0gICAgSHlCaSAwMCBhbmQgSGl4aWUg
NzUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZW5hYmxlX2Ns
b3NpbmdfaGFuZHNoYWtlPUZhbHNlKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNl
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVl
c3QuCi0gICAgICAgICAgICBlbmFibGVfY2xvc2luZ19oYW5kc2hha2U6IHRvIGxldCBTdHJlYW1I
aXhpZTc1IHBlcmZvcm0gY2xvc2luZwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBoYW5kc2hha2UgYXMgc3BlY2lmaWVkIGluIEh5QmkgMDAsIHNldAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIG9wdGlvbiB0byBUcnVlLgotICAgICAgICAi
IiIKLQotICAgICAgICBTdHJlYW1CYXNlLl9faW5pdF9fKHNlbGYsIHJlcXVlc3QpCi0KLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAg
c2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtlID0gZW5hYmxlX2Nsb3NpbmdfaGFuZHNoYWtl
Ci0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jbGllbnRfdGVybWluYXRlZCA9IEZhbHNlCi0gICAg
ICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBGYWxzZQotCi0gICAgZGVmIHNl
bmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAg
ICAgIiIiU2VuZCBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtZXNzYWdl
OiB1bmljb2RlIHN0cmluZyB0byBzZW5kLgotICAgICAgICAgICAgYmluYXJ5OiBub3QgdXNlZCBp
biBoaXhpZTc1LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4
Y2VwdGlvbjogd2hlbiBjYWxsZWQgb24gYSBzZXJ2ZXItdGVybWluYXRlZAotICAgICAgICAgICAg
ICAgIGNvbm5lY3Rpb24uCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIG5vdCBlbmQ6Ci0gICAg
ICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1N0
cmVhbUhpeGllNzUgZG9lc25cJ3Qgc3VwcG9ydCBzZW5kX21lc3NhZ2Ugd2l0aCBlbmQ9RmFsc2Un
KQotCi0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0
IHNlbmRfbWVzc2FnZSB3aXRoIGJpbmFyeT1UcnVlJykKLQotICAgICAgICBpZiBzZWxmLl9yZXF1
ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFmdGVyIHNl
bmRpbmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIHNlbGYuX3dyaXRlKCcn
LmpvaW4oWydceDAwJywgbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JyksICdceGZmJ10pKQotCi0gICAg
ZGVmIF9yZWFkX3BheWxvYWRfbGVuZ3RoX2hpeGllNzUoc2VsZik6Ci0gICAgICAgICIiIlJlYWRz
IGEgbGVuZ3RoIGhlYWRlciBpbiBhIEhpeGllNzUgdmVyc2lvbiBmcmFtZSB3aXRoIGxlbmd0aC4K
LQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbjogd2hlbiByZWFkIHJldHVybnMgZW1wdHkgc3RyaW5nLgotICAgICAgICAiIiIKLQotICAg
ICAgICBsZW5ndGggPSAwCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBiX3N0ciA9
IHNlbGYuX3JlYWQoMSkKLSAgICAgICAgICAgIGIgPSBvcmQoYl9zdHIpCi0gICAgICAgICAgICBs
ZW5ndGggPSBsZW5ndGggKiAxMjggKyAoYiAmIDB4N2YpCi0gICAgICAgICAgICBpZiAoYiAmIDB4
ODApID09IDA6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIGxlbmd0aAot
Ci0gICAgZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToKLSAgICAgICAgIiIiUmVjZWl2ZSBhIFdl
YlNvY2tldCBmcmFtZSBhbmQgcmV0dXJuIGl0cyBwYXlsb2FkIGFuIHVuaWNvZGUgc3RyaW5nLgot
Ci0gICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBwYXlsb2FkIHVuaWNvZGUgc3RyaW5nIGlu
IGEgV2ViU29ja2V0IGZyYW1lLgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5l
Y3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uOiB3aGVuIHJlYWQgcmV0dXJucyBlbXB0eQotICAgICAg
ICAgICAgICAgIHN0cmluZy4KLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hl
biBjYWxsZWQgb24gYSBjbGllbnQtdGVybWluYXRlZAotICAgICAgICAgICAgICAgIGNvbm5lY3Rp
b24uCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1p
bmF0ZWQ6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJ1JlcXVlc3RlZCByZWNlaXZlX21lc3NhZ2UgYWZ0ZXIgcmVjZWl2aW5nIGEgY2xv
c2luZyAnCi0gICAgICAgICAgICAgICAgJ2hhbmRzaGFrZScpCi0KLSAgICAgICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgICAgICMgUmVhZCAxIGJ5dGUuCi0gICAgICAgICAgICAjIG1wX2Nvbm4ucmVh
ZCB3aWxsIGJsb2NrIGlmIG5vIGJ5dGVzIGFyZSBhdmFpbGFibGUuCi0gICAgICAgICAgICAjIFRp
bWVvdXQgaXMgY29udHJvbGxlZCBieSBUaW1lT3V0IGRpcmVjdGl2ZSBvZiBBcGFjaGUuCi0gICAg
ICAgICAgICBmcmFtZV90eXBlX3N0ciA9IHNlbGYucmVjZWl2ZV9ieXRlcygxKQotICAgICAgICAg
ICAgZnJhbWVfdHlwZSA9IG9yZChmcmFtZV90eXBlX3N0cikKLSAgICAgICAgICAgIGlmIChmcmFt
ZV90eXBlICYgMHg4MCkgPT0gMHg4MDoKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGxl
bmd0aCBpcyBzcGVjaWZpZWQgaW4gdGhlIGZyYW1lLgotICAgICAgICAgICAgICAgICMgUmVhZCBh
bmQgZGlzY2FyZC4KLSAgICAgICAgICAgICAgICBsZW5ndGggPSBzZWxmLl9yZWFkX3BheWxvYWRf
bGVuZ3RoX2hpeGllNzUoKQotICAgICAgICAgICAgICAgIGlmIGxlbmd0aCA+IDA6Ci0gICAgICAg
ICAgICAgICAgICAgIF8gPSBzZWxmLnJlY2VpdmVfYnl0ZXMobGVuZ3RoKQotICAgICAgICAgICAg
ICAgICMgNS4zIDMuIDEyLiBpZiAvdHlwZS8gaXMgMHhGRiBhbmQgL2xlbmd0aC8gaXMgMCwgdGhl
biBzZXQgdGhlCi0gICAgICAgICAgICAgICAgIyAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgYW5k
IGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9lbmFibGVf
Y2xvc2luZ19oYW5kc2hha2U6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAg
ICAgICAgICAgICBpZiBmcmFtZV90eXBlID09IDB4RkYgYW5kIGxlbmd0aCA9PSAwOgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJtaW5hdGVkID0gVHJ1ZQotCi0g
ICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0g
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRpYXRlZCBjbG9zaW5n
ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaGFuZHNoYWtlJykKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGNsaWVudC1pbml0
aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3Nl
bmRfY2xvc2luZ19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCi0gICAgICAgICAgICAgICAgICAgICAgICAnU2VudCBhY2sgZm9yIGNsaWVudC1pbml0
aWF0ZWQgY2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9u
ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIFRoZSBwYXlsb2FkIGlzIGRl
bGltaXRlZCB3aXRoIFx4ZmYuCi0gICAgICAgICAgICAgICAgYnl0ZXMgPSBzZWxmLl9yZWFkX3Vu
dGlsKCdceGZmJykKLSAgICAgICAgICAgICAgICAjIFRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgc2Vj
dGlvbiA0LjQgc3BlY2lmaWVzIHRoYXQgaW52YWxpZAotICAgICAgICAgICAgICAgICMgY2hhcmFj
dGVycyBtdXN0IGJlIHJlcGxhY2VkIHdpdGggVStmZmZkIFJFUExBQ0VNRU5UCi0gICAgICAgICAg
ICAgICAgIyBDSEFSQUNURVIuCi0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IGJ5dGVzLmRlY29k
ZSgndXRmLTgnLCAncmVwbGFjZScpCi0gICAgICAgICAgICAgICAgaWYgZnJhbWVfdHlwZSA9PSAw
eDAwOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQotICAgICAgICAgICAgICAg
ICMgRGlzY2FyZCBkYXRhIG9mIG90aGVyIHR5cGVzLgotCi0gICAgZGVmIF9zZW5kX2Nsb3Npbmdf
aGFuZHNoYWtlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5fZW5hYmxlX2Nsb3NpbmdfaGFu
ZHNoYWtlOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICdDbG9zaW5nIGhhbmRzaGFrZSBpcyBub3Qgc3VwcG9ydGVkIGluIEhpeGllIDc1
IHByb3RvY29sJykKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0g
VHJ1ZQotCi0gICAgICAgICMgNS4zIHRoZSBzZXJ2ZXIgbWF5IGRlY2lkZSB0byB0ZXJtaW5hdGUg
dGhlIFdlYlNvY2tldCBjb25uZWN0aW9uIGJ5Ci0gICAgICAgICMgcnVubmluZyB0aHJvdWdoIHRo
ZSBmb2xsb3dpbmcgc3RlcHM6Ci0gICAgICAgICMgMS4gc2VuZCBhIDB4RkYgYnl0ZSBhbmQgYSAw
eDAwIGJ5dGUgdG8gdGhlIGNsaWVudCB0byBpbmRpY2F0ZSB0aGUKLSAgICAgICAgIyBzdGFydCBv
ZiB0aGUgY2xvc2luZyBoYW5kc2hha2UuCi0gICAgICAgIHNlbGYuX3dyaXRlKCdceGZmXHgwMCcp
Ci0KLSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCB1bnVzZWRfY29kZT0nJywgdW51c2Vk
X3JlYXNvbj0nJyk6Ci0gICAgICAgICIiIkNsb3NlcyBhIFdlYlNvY2tldCBjb25uZWN0aW9uLgot
Ci0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0
aW9uOiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtlIHdhcwotICAgICAgICAgICAgICAgIG5vdCBzdWNj
ZXNzZnVsbC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5zZXJ2ZXJf
dGVybWluYXRlZDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAg
ICAgICAnUmVxdWVzdGVkIGNsb3NlX2Nvbm5lY3Rpb24gYnV0IHNlcnZlciBpcyBhbHJlYWR5IHRl
cm1pbmF0ZWQnKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgbm90IHNlbGYuX2Vu
YWJsZV9jbG9zaW5nX2hhbmRzaGFrZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVy
X3Rlcm1pbmF0ZWQgPSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0Nvbm5l
Y3Rpb24gY2xvc2VkJykKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHNlbGYuX3NlbmRf
Y2xvc2luZ19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbnQgc2Vy
dmVyLWluaXRpYXRlZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgIyBUT0RPKHVrYWkp
OiAyLiB3YWl0IHVudGlsIHRoZSAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgaGFzIGJlZW4gc2V0
LAotICAgICAgICAjIG9yIHVudGlsIGEgc2VydmVyLWRlZmluZWQgdGltZW91dCBleHBpcmVzLgot
ICAgICAgICAjCi0gICAgICAgICMgRm9yIG5vdywgd2UgZXhwZWN0IHJlY2VpdmluZyBjbG9zaW5n
IGhhbmRzaGFrZSByaWdodCBhZnRlciBzZW5kaW5nCi0gICAgICAgICMgb3V0IGNsb3NpbmcgaGFu
ZHNoYWtlLCBhbmQgaWYgd2UgY291bGRuJ3QgcmVjZWl2ZSBub24taGFuZHNoYWtlCi0gICAgICAg
ICMgZnJhbWUsIHdlIHRha2UgaXQgYXMgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24uCi0g
ICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJlY2VpdmVfbWVzc2FnZSgpCi0gICAgICAgIGlmIG1lc3Nh
Z2UgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRGlkblwndCByZWNlaXZlIHZhbGlkIGFjayBmb3Ig
Y2xvc2luZyBoYW5kc2hha2UnKQotICAgICAgICAjIFRPRE86IDMuIGNsb3NlIHRoZSBXZWJTb2Nr
ZXQgY29ubmVjdGlvbi4KLSAgICAgICAgIyBub3RlOiBtb2RfcHl0aG9uIENvbm5lY3Rpb24gKG1w
X2Nvbm4pIGRvZXNuJ3QgaGF2ZSBjbG9zZSBtZXRob2QuCi0KLSAgICBkZWYgc2VuZF9waW5nKHNl
bGYsIGJvZHkpOgotICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oCi0gICAgICAg
ICAgICAnU3RyZWFtSGl4aWU3NSBkb2VzblwndCBzdXBwb3J0IHNlbmRfcGluZycpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0
cmVhbV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faHliaS5weQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThhNDllM2MzZGM5NWJhOWY3ZmQ0MTI4OTM4
M2ZlMDdhZmRkNTc3Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0cmVhbV9oeWJpLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsODg3ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRoaXMgZmlsZSBw
cm92aWRlcyBjbGFzc2VzIGFuZCBoZWxwZXIgZnVuY3Rpb25zIGZvciBwYXJzaW5nL2J1aWxkaW5n
IGZyYW1lcwotb2YgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0NTUpLgotCi1TcGVjaWZp
Y2F0aW9uOgotaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NQotIiIiCi0KLQotZnJv
bSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWlt
cG9ydCBzdHJ1Y3QKLWltcG9ydCB0aW1lCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBj
b21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEJhZE9wZXJhdGlvbkV4Y2VwdGlvbgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2Vw
dGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkRnJh
bWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52
YWxpZFVURjhFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBv
cnQgU3RyZWFtQmFzZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBV
bnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uCi0KLQotX05PT1BfTUFTS0VSID0gdXRpbC5Ob29wTWFz
a2VyKCkKLQotCi1jbGFzcyBGcmFtZShvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZpbj0xLCByc3YxPTAsIHJzdjI9MCwgcnN2Mz0wLAotICAgICAgICAgICAgICAgICBvcGNvZGU9
Tm9uZSwgcGF5bG9hZD0nJyk6Ci0gICAgICAgIHNlbGYuZmluID0gZmluCi0gICAgICAgIHNlbGYu
cnN2MSA9IHJzdjEKLSAgICAgICAgc2VsZi5yc3YyID0gcnN2MgotICAgICAgICBzZWxmLnJzdjMg
PSByc3YzCi0gICAgICAgIHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0gICAgICAgIHNlbGYucGF5bG9h
ZCA9IHBheWxvYWQKLQotCi0jIEhlbHBlciBmdW5jdGlvbnMgbWFkZSBwdWJsaWMgdG8gYmUgdXNl
ZCBmb3Igd3JpdGluZyB1bml0dGVzdHMgZm9yIFdlYlNvY2tldAotIyBjbGllbnRzLgotCi0KLWRl
ZiBjcmVhdGVfbGVuZ3RoX2hlYWRlcihsZW5ndGgsIG1hc2spOgotICAgICIiIkNyZWF0ZXMgYSBs
ZW5ndGggaGVhZGVyLgotCi0gICAgQXJnczoKLSAgICAgICAgbGVuZ3RoOiBGcmFtZSBsZW5ndGgu
IE11c3QgYmUgbGVzcyB0aGFuIDJeNjMuCi0gICAgICAgIG1hc2s6IE1hc2sgYml0LiBNdXN0IGJl
IGJvb2xlYW4uCi0KLSAgICBSYWlzZXM6Ci0gICAgICAgIFZhbHVlRXJyb3I6IHdoZW4gYmFkIGRh
dGEgaXMgZ2l2ZW4uCi0gICAgIiIiCi0KLSAgICBpZiBtYXNrOgotICAgICAgICBtYXNrX2JpdCA9
IDEgPDwgNwotICAgIGVsc2U6Ci0gICAgICAgIG1hc2tfYml0ID0gMAotCi0gICAgaWYgbGVuZ3Ro
IDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbGVuZ3RoIG11c3QgYmUgbm9uIG5lZ2F0
aXZlIGludGVnZXInKQotICAgIGVsaWYgbGVuZ3RoIDw9IDEyNToKLSAgICAgICAgcmV0dXJuIGNo
cihtYXNrX2JpdCB8IGxlbmd0aCkKLSAgICBlbGlmIGxlbmd0aCA8ICgxIDw8IDE2KToKLSAgICAg
ICAgcmV0dXJuIGNocihtYXNrX2JpdCB8IDEyNikgKyBzdHJ1Y3QucGFjaygnIUgnLCBsZW5ndGgp
Ci0gICAgZWxpZiBsZW5ndGggPCAoMSA8PCA2Myk6Ci0gICAgICAgIHJldHVybiBjaHIobWFza19i
aXQgfCAxMjcpICsgc3RydWN0LnBhY2soJyFRJywgbGVuZ3RoKQotICAgIGVsc2U6Ci0gICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ1BheWxvYWQgaXMgdG9vIGJpZyBmb3Igb25lIGZyYW1lJykKLQot
Ci1kZWYgY3JlYXRlX2hlYWRlcihvcGNvZGUsIHBheWxvYWRfbGVuZ3RoLCBmaW4sIHJzdjEsIHJz
djIsIHJzdjMsIG1hc2spOgotICAgICIiIkNyZWF0ZXMgYSBmcmFtZSBoZWFkZXIuCi0KLSAgICBS
YWlzZXM6Ci0gICAgICAgIEV4Y2VwdGlvbjogd2hlbiBiYWQgZGF0YSBpcyBnaXZlbi4KLSAgICAi
IiIKLQotICAgIGlmIG9wY29kZSA8IDAgb3IgMHhmIDwgb3Bjb2RlOgotICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdPcGNvZGUgb3V0IG9mIHJhbmdlJykKLQotICAgIGlmIHBheWxvYWRfbGVuZ3Ro
IDwgMCBvciAoMSA8PCA2MykgPD0gcGF5bG9hZF9sZW5ndGg6Ci0gICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoJ3BheWxvYWRfbGVuZ3RoIG91dCBvZiByYW5nZScpCi0KLSAgICBpZiAoZmluIHwgcnN2
MSB8IHJzdjIgfCByc3YzKSAmIH4xOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdGSU4gYml0
IGFuZCBSZXNlcnZlZCBiaXQgcGFyYW1ldGVyIG11c3QgYmUgMCBvciAxJykKLQotICAgIGhlYWRl
ciA9ICcnCi0KLSAgICBmaXJzdF9ieXRlID0gKChmaW4gPDwgNykKLSAgICAgICAgICAgICAgICAg
IHwgKHJzdjEgPDwgNikgfCAocnN2MiA8PCA1KSB8IChyc3YzIDw8IDQpCi0gICAgICAgICAgICAg
ICAgICB8IG9wY29kZSkKLSAgICBoZWFkZXIgKz0gY2hyKGZpcnN0X2J5dGUpCi0gICAgaGVhZGVy
ICs9IGNyZWF0ZV9sZW5ndGhfaGVhZGVyKHBheWxvYWRfbGVuZ3RoLCBtYXNrKQotCi0gICAgcmV0
dXJuIGhlYWRlcgotCi0KLWRlZiBfYnVpbGRfZnJhbWUoaGVhZGVyLCBib2R5LCBtYXNrKToKLSAg
ICBpZiBub3QgbWFzazoKLSAgICAgICAgcmV0dXJuIGhlYWRlciArIGJvZHkKLQotICAgIG1hc2tp
bmdfbm9uY2UgPSBvcy51cmFuZG9tKDQpCi0gICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1h
c2tlcihtYXNraW5nX25vbmNlKQotCi0gICAgcmV0dXJuIGhlYWRlciArIG1hc2tpbmdfbm9uY2Ug
KyBtYXNrZXIubWFzayhib2R5KQotCi0KLWRlZiBfZmlsdGVyX2FuZF9mb3JtYXRfZnJhbWVfb2Jq
ZWN0KGZyYW1lLCBtYXNrLCBmcmFtZV9maWx0ZXJzKToKLSAgICBmb3IgZnJhbWVfZmlsdGVyIGlu
IGZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAg
ICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKAotICAgICAgICBmcmFtZS5vcGNvZGUsIGxlbihmcmFt
ZS5wYXlsb2FkKSwgZnJhbWUuZmluLAotICAgICAgICBmcmFtZS5yc3YxLCBmcmFtZS5yc3YyLCBm
cmFtZS5yc3YzLCBtYXNrKQotICAgIHJldHVybiBfYnVpbGRfZnJhbWUoaGVhZGVyLCBmcmFtZS5w
YXlsb2FkLCBtYXNrKQotCi0KLWRlZiBjcmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgIG1lc3NhZ2Us
IG9wY29kZT1jb21tb24uT1BDT0RFX0JJTkFSWSwgZmluPTEsIG1hc2s9RmFsc2UsIGZyYW1lX2Zp
bHRlcnM9W10pOgotICAgICIiIkNyZWF0ZXMgYSBzaW1wbGUgYmluYXJ5IGZyYW1lIHdpdGggbm8g
ZXh0ZW5zaW9uLCByZXNlcnZlZCBiaXQuIiIiCi0KLSAgICBmcmFtZSA9IEZyYW1lKGZpbj1maW4s
IG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9bWVzc2FnZSkKLSAgICByZXR1cm4gX2ZpbHRlcl9hbmRf
Zm9ybWF0X2ZyYW1lX29iamVjdChmcmFtZSwgbWFzaywgZnJhbWVfZmlsdGVycykKLQotCi1kZWYg
Y3JlYXRlX3RleHRfZnJhbWUoCi0gICAgbWVzc2FnZSwgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVY
VCwgZmluPTEsIG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9W10pOgotICAgICIiIkNyZWF0ZXMg
YSBzaW1wbGUgdGV4dCBmcmFtZSB3aXRoIG5vIGV4dGVuc2lvbiwgcmVzZXJ2ZWQgYml0LiIiIgot
Ci0gICAgZW5jb2RlZF9tZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLSAgICByZXR1
cm4gY3JlYXRlX2JpbmFyeV9mcmFtZShlbmNvZGVkX21lc3NhZ2UsIG9wY29kZSwgZmluLCBtYXNr
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lX2ZpbHRlcnMpCi0KLQotZGVm
IHBhcnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXMsIGxvZ2dlcj1Ob25lLAotICAgICAgICAgICAgICAg
IHdzX3ZlcnNpb249Y29tbW9uLlZFUlNJT05fSFlCSV9MQVRFU1QsCi0gICAgICAgICAgICAgICAg
dW5tYXNrX3JlY2VpdmU9VHJ1ZSk6Ci0gICAgIiIiUGFyc2VzIGEgZnJhbWUuIFJldHVybnMgYSB0
dXBsZSBjb250YWluaW5nIGVhY2ggaGVhZGVyIGZpZWxkIGFuZAotICAgIHBheWxvYWQuCi0KLSAg
ICBBcmdzOgotICAgICAgICByZWNlaXZlX2J5dGVzOiBhIGZ1bmN0aW9uIHRoYXQgcmVhZHMgZnJh
bWUgZGF0YSBmcm9tIGEgc3RyZWFtIG9yCi0gICAgICAgICAgICBzb21ldGhpbmcgc2ltaWxhci4g
VGhlIGZ1bmN0aW9uIHRha2VzIGxlbmd0aCBvZiB0aGUgYnl0ZXMgdG8gYmUKLSAgICAgICAgICAg
IHJlYWQuIFRoZSBmdW5jdGlvbiBtdXN0IHJhaXNlIENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0
aW9uIGlmCi0gICAgICAgICAgICB0aGVyZSBpcyBub3QgZW5vdWdoIGRhdGEgdG8gYmUgcmVhZC4K
LSAgICAgICAgbG9nZ2VyOiBhIGxvZ2dpbmcgb2JqZWN0LgotICAgICAgICB3c192ZXJzaW9uOiB0
aGUgdmVyc2lvbiBvZiBXZWJTb2NrZXQgcHJvdG9jb2wuCi0gICAgICAgIHVubWFza19yZWNlaXZl
OiB1bm1hc2sgcmVjZWl2ZWQgZnJhbWVzLiBXaGVuIHJlY2VpdmVkIHVubWFza2VkCi0gICAgICAg
ICAgICBmcmFtZSwgcmFpc2VzIEludmFsaWRGcmFtZUV4Y2VwdGlvbi4KLQotICAgIFJhaXNlczoK
LSAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVjZWl2ZV9ieXRl
cyByYWlzZXMgaXQuCi0gICAgICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiB0aGUgZnJh
bWUgY29udGFpbnMgaW52YWxpZCBkYXRhLgotICAgICIiIgotCi0gICAgaWYgbm90IGxvZ2dlcjoK
LSAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotCi0gICAgbG9nZ2VyLmxvZyhj
b21tb24uTE9HTEVWRUxfRklORSwgJ1JlY2VpdmUgdGhlIGZpcnN0IDIgb2N0ZXRzIG9mIGEgZnJh
bWUnKQotCi0gICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKDIpCi0KLSAgICBmaXJzdF9ieXRl
ID0gb3JkKHJlY2VpdmVkWzBdKQotICAgIGZpbiA9IChmaXJzdF9ieXRlID4+IDcpICYgMQotICAg
IHJzdjEgPSAoZmlyc3RfYnl0ZSA+PiA2KSAmIDEKLSAgICByc3YyID0gKGZpcnN0X2J5dGUgPj4g
NSkgJiAxCi0gICAgcnN2MyA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgIG9wY29kZSA9IGZp
cnN0X2J5dGUgJiAweGYKLQotICAgIHNlY29uZF9ieXRlID0gb3JkKHJlY2VpdmVkWzFdKQotICAg
IG1hc2sgPSAoc2Vjb25kX2J5dGUgPj4gNykgJiAxCi0gICAgcGF5bG9hZF9sZW5ndGggPSBzZWNv
bmRfYnl0ZSAmIDB4N2YKLQotICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsCi0g
ICAgICAgICAgICAgICAnRklOPSVzLCBSU1YxPSVzLCBSU1YyPSVzLCBSU1YzPSVzLCBvcGNvZGU9
JXMsICcKLSAgICAgICAgICAgICAgICdNYXNrPSVzLCBQYXlsb2FkX2xlbmd0aD0lcycsCi0gICAg
ICAgICAgICAgICBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgbWFzaywgcGF5bG9hZF9s
ZW5ndGgpCi0KLSAgICBpZiAobWFzayA9PSAxKSAhPSB1bm1hc2tfcmVjZWl2ZToKLSAgICAgICAg
cmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgJ01hc2sgYml0IG9uIHRo
ZSByZWNlaXZlZCBmcmFtZSBkaWRcJ250IG1hdGNoIG1hc2tpbmcgJwotICAgICAgICAgICAgJ2Nv
bmZpZ3VyYXRpb24gZm9yIHJlY2VpdmVkIGZyYW1lcycpCi0KLSAgICAjIFRoZSBIeUJpIGFuZCBs
YXRlciBzcGVjcyBkaXNhbGxvdyBwdXR0aW5nIGEgdmFsdWUgaW4gMHgwLTB4RkZGRgotICAgICMg
aW50byB0aGUgOC1vY3RldCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBmaWVsZCAob3IgMHgwLTB4
RkQgaW4KLSAgICAjIDItb2N0ZXQgZmllbGQpLgotICAgIHZhbGlkX2xlbmd0aF9lbmNvZGluZyA9
IFRydWUKLSAgICBsZW5ndGhfZW5jb2RpbmdfYnl0ZXMgPSAxCi0gICAgaWYgcGF5bG9hZF9sZW5n
dGggPT0gMTI3OgotICAgICAgICBsb2dnZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZlIDgtb2N0ZXQgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgn
KQotCi0gICAgICAgIGV4dGVuZGVkX3BheWxvYWRfbGVuZ3RoID0gcmVjZWl2ZV9ieXRlcyg4KQot
ICAgICAgICBwYXlsb2FkX2xlbmd0aCA9IHN0cnVjdC51bnBhY2soCi0gICAgICAgICAgICAnIVEn
LCBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aClbMF0KLSAgICAgICAgaWYgcGF5bG9hZF9sZW5ndGgg
PiAweDdGRkZGRkZGRkZGRkZGRkY6Ci0gICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgJ0V4dGVuZGVkIHBheWxvYWQgbGVuZ3RoID49IDJeNjMn
KQotICAgICAgICBpZiB3c192ZXJzaW9uID49IDEzIGFuZCBwYXlsb2FkX2xlbmd0aCA8IDB4MTAw
MDA6Ci0gICAgICAgICAgICB2YWxpZF9sZW5ndGhfZW5jb2RpbmcgPSBGYWxzZQotICAgICAgICAg
ICAgbGVuZ3RoX2VuY29kaW5nX2J5dGVzID0gOAotCi0gICAgICAgIGxvZ2dlci5sb2coY29tbW9u
LkxPR0xFVkVMX0ZJTkUsCi0gICAgICAgICAgICAgICAgICAgJ0RlY29kZWRfcGF5bG9hZF9sZW5n
dGg9JXMnLCBwYXlsb2FkX2xlbmd0aCkKLSAgICBlbGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNjoK
LSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICAg
ICAgICAnUmVjZWl2ZSAyLW9jdGV0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3RoJykKLQotICAgICAg
ICBleHRlbmRlZF9wYXlsb2FkX2xlbmd0aCA9IHJlY2VpdmVfYnl0ZXMoMikKLSAgICAgICAgcGF5
bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFIJywgZXh0ZW5kZWRf
cGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHdzX3ZlcnNpb24gPj0gMTMgYW5kIHBheWxv
YWRfbGVuZ3RoIDwgMTI2OgotICAgICAgICAgICAgdmFsaWRfbGVuZ3RoX2VuY29kaW5nID0gRmFs
c2UKLSAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19ieXRlcyA9IDIKLQotICAgICAgICBsb2dn
ZXIubG9nKGNvbW1vbi5MT0dMRVZFTF9GSU5FLAotICAgICAgICAgICAgICAgICAgICdEZWNvZGVk
X3BheWxvYWRfbGVuZ3RoPSVzJywgcGF5bG9hZF9sZW5ndGgpCi0KLSAgICBpZiBub3QgdmFsaWRf
bGVuZ3RoX2VuY29kaW5nOgotICAgICAgICBsb2dnZXIud2FybmluZygKLSAgICAgICAgICAgICdQ
YXlsb2FkIGxlbmd0aCBpcyBub3QgZW5jb2RlZCB1c2luZyB0aGUgbWluaW1hbCBudW1iZXIgb2Yg
JwotICAgICAgICAgICAgJ2J5dGVzICglZCBpcyBlbmNvZGVkIHVzaW5nICVkIGJ5dGVzKScsCi0g
ICAgICAgICAgICBwYXlsb2FkX2xlbmd0aCwKLSAgICAgICAgICAgIGxlbmd0aF9lbmNvZGluZ19i
eXRlcykKLQotICAgIGlmIG1hc2sgPT0gMToKLSAgICAgICAgbG9nZ2VyLmxvZyhjb21tb24uTE9H
TEVWRUxfRklORSwgJ1JlY2VpdmUgbWFzaycpCi0KLSAgICAgICAgbWFza2luZ19ub25jZSA9IHJl
Y2VpdmVfYnl0ZXMoNCkKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlciht
YXNraW5nX25vbmNlKQotCi0gICAgICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUs
ICdNYXNrPSVyJywgbWFza2luZ19ub25jZSkKLSAgICBlbHNlOgotICAgICAgICBtYXNrZXIgPSBf
Tk9PUF9NQVNLRVIKLQotICAgIGxvZ2dlci5sb2coY29tbW9uLkxPR0xFVkVMX0ZJTkUsICdSZWNl
aXZlIHBheWxvYWQgZGF0YScpCi0gICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9H
TEVWRUxfRklORSk6Ci0gICAgICAgIHJlY2VpdmVfc3RhcnQgPSB0aW1lLnRpbWUoKQotCi0gICAg
cmF3X3BheWxvYWRfYnl0ZXMgPSByZWNlaXZlX2J5dGVzKHBheWxvYWRfbGVuZ3RoKQotCi0gICAg
aWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6Ci0gICAgICAgIGxv
Z2dlci5sb2coCi0gICAgICAgICAgICBjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAg
ICdEb25lIHJlY2VpdmluZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCi0gICAgICAgICAgICBw
YXlsb2FkX2xlbmd0aCAvICh0aW1lLnRpbWUoKSAtIHJlY2VpdmVfc3RhcnQpIC8gMTAwMCAvIDEw
MDApCi0gICAgbG9nZ2VyLmxvZyhjb21tb24uTE9HTEVWRUxfRklORSwgJ1VubWFzayBwYXlsb2Fk
IGRhdGEnKQotCi0gICAgaWYgbG9nZ2VyLmlzRW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklO
RSk6Ci0gICAgICAgIHVubWFza19zdGFydCA9IHRpbWUudGltZSgpCi0KLSAgICB1bm1hc2tlZF9i
eXRlcyA9IG1hc2tlci5tYXNrKHJhd19wYXlsb2FkX2J5dGVzKQotCi0gICAgaWYgbG9nZ2VyLmlz
RW5hYmxlZEZvcihjb21tb24uTE9HTEVWRUxfRklORSk6Ci0gICAgICAgIGxvZ2dlci5sb2coCi0g
ICAgICAgICAgICBjb21tb24uTE9HTEVWRUxfRklORSwKLSAgICAgICAgICAgICdEb25lIHVubWFz
a2luZyBwYXlsb2FkIGRhdGEgYXQgJXMgTUIvcycsCi0gICAgICAgICAgICBwYXlsb2FkX2xlbmd0
aCAvICh0aW1lLnRpbWUoKSAtIHVubWFza19zdGFydCkgLyAxMDAwIC8gMTAwMCkKLQotICAgIHJl
dHVybiBvcGNvZGUsIHVubWFza2VkX2J5dGVzLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMKLQotCi1j
bGFzcyBGcmFnbWVudGVkRnJhbWVCdWlsZGVyKG9iamVjdCk6Ci0gICAgIiIiQSBzdGF0ZWZ1bCBj
bGFzcyB0byBzZW5kIGEgbWVzc2FnZSBhcyBmcmFnbWVudHMuIiIiCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgbWFzaywgZnJhbWVfZmlsdGVycz1bXSwgZW5jb2RlX3V0Zjg9VHJ1ZSk6Ci0gICAg
ICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuIiIiCi0KLSAgICAgICAgc2VsZi5fbWFzayA9
IG1hc2sKLSAgICAgICAgc2VsZi5fZnJhbWVfZmlsdGVycyA9IGZyYW1lX2ZpbHRlcnMKLSAgICAg
ICAgIyBUaGlzIGlzIGZvciBza2lwcGluZyBVVEYtOCBlbmNvZGluZyB3aGVuIGJ1aWxkaW5nIHRl
eHQgdHlwZSBmcmFtZXMKLSAgICAgICAgIyBmcm9tIGNvbXByZXNzZWQgZGF0YS4KLSAgICAgICAg
c2VsZi5fZW5jb2RlX3V0ZjggPSBlbmNvZGVfdXRmOAotCi0gICAgICAgIHNlbGYuX3N0YXJ0ZWQg
PSBGYWxzZQotCi0gICAgICAgICMgSG9sZCBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYW1lIGluIG1l
c3NhZ2VzIHRvIHZlcmlmeSB0eXBlcyBvZiBvdGhlcgotICAgICAgICAjIGZyYW1lcyBpbiB0aGUg
bWVzc2FnZSBhcmUgYWxsIHRoZSBzYW1lLgotICAgICAgICBzZWxmLl9vcGNvZGUgPSBjb21tb24u
T1BDT0RFX1RFWFQKLQotICAgIGRlZiBidWlsZChzZWxmLCBwYXlsb2FkX2RhdGEsIGVuZCwgYmlu
YXJ5KToKLSAgICAgICAgaWYgYmluYXJ5OgotICAgICAgICAgICAgZnJhbWVfdHlwZSA9IGNvbW1v
bi5PUENPREVfQklOQVJZCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmcmFtZV90eXBlID0g
Y29tbW9uLk9QQ09ERV9URVhUCi0gICAgICAgIGlmIHNlbGYuX3N0YXJ0ZWQ6Ci0gICAgICAgICAg
ICBpZiBzZWxmLl9vcGNvZGUgIT0gZnJhbWVfdHlwZToKLSAgICAgICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKCdNZXNzYWdlIHR5cGVzIGFyZSBkaWZmZXJlbnQgaW4gZnJhbWVzIGZvciAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgbWVzc2FnZScpCi0gICAg
ICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTgotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgb3Bjb2RlID0gZnJhbWVfdHlwZQotICAgICAgICAgICAgc2VsZi5fb3Bj
b2RlID0gZnJhbWVfdHlwZQotCi0gICAgICAgIGlmIGVuZDoKLSAgICAgICAgICAgIHNlbGYuX3N0
YXJ0ZWQgPSBGYWxzZQotICAgICAgICAgICAgZmluID0gMQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VsZi5fc3RhcnRlZCA9IFRydWUKLSAgICAgICAgICAgIGZpbiA9IDAKLQotICAgICAg
ICBpZiBiaW5hcnkgb3Igbm90IHNlbGYuX2VuY29kZV91dGY4OgotICAgICAgICAgICAgcmV0dXJu
IGNyZWF0ZV9iaW5hcnlfZnJhbWUoCi0gICAgICAgICAgICAgICAgcGF5bG9hZF9kYXRhLCBvcGNv
ZGUsIGZpbiwgc2VsZi5fbWFzaywgc2VsZi5fZnJhbWVfZmlsdGVycykKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHJldHVybiBjcmVhdGVfdGV4dF9mcmFtZSgKLSAgICAgICAgICAgICAgICBw
YXlsb2FkX2RhdGEsIG9wY29kZSwgZmluLCBzZWxmLl9tYXNrLCBzZWxmLl9mcmFtZV9maWx0ZXJz
KQotCi0KLWRlZiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUob3Bjb2RlLCBib2R5LCBtYXNrLCBmcmFt
ZV9maWx0ZXJzKToKLSAgICBmcmFtZSA9IEZyYW1lKG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9Ym9k
eSkKLQotICAgIGZvciBmcmFtZV9maWx0ZXIgaW4gZnJhbWVfZmlsdGVyczoKLSAgICAgICAgZnJh
bWVfZmlsdGVyLmZpbHRlcihmcmFtZSkKLQotICAgIGlmIGxlbihmcmFtZS5wYXlsb2FkKSA+IDEy
NToKLSAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgJ1Bh
eWxvYWQgZGF0YSBzaXplIG9mIGNvbnRyb2wgZnJhbWVzIG11c3QgYmUgMTI1IGJ5dGVzIG9yIGxl
c3MnKQotCi0gICAgaGVhZGVyID0gY3JlYXRlX2hlYWRlcigKLSAgICAgICAgZnJhbWUub3Bjb2Rl
LCBsZW4oZnJhbWUucGF5bG9hZCksIGZyYW1lLmZpbiwKLSAgICAgICAgZnJhbWUucnN2MSwgZnJh
bWUucnN2MiwgZnJhbWUucnN2MywgbWFzaykKLSAgICByZXR1cm4gX2J1aWxkX2ZyYW1lKGhlYWRl
ciwgZnJhbWUucGF5bG9hZCwgbWFzaykKLQotCi1kZWYgY3JlYXRlX3BpbmdfZnJhbWUoYm9keSwg
bWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgcmV0dXJuIF9jcmVhdGVfY29udHJv
bF9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIG1hc2ssIGZyYW1lX2ZpbHRlcnMpCi0K
LQotZGVmIGNyZWF0ZV9wb25nX2ZyYW1lKGJvZHksIG1hc2s9RmFsc2UsIGZyYW1lX2ZpbHRlcnM9
W10pOgotICAgIHJldHVybiBfY3JlYXRlX2NvbnRyb2xfZnJhbWUoY29tbW9uLk9QQ09ERV9QT05H
LCBib2R5LCBtYXNrLCBmcmFtZV9maWx0ZXJzKQotCi0KLWRlZiBjcmVhdGVfY2xvc2VfZnJhbWUo
Ym9keSwgbWFzaz1GYWxzZSwgZnJhbWVfZmlsdGVycz1bXSk6Ci0gICAgcmV0dXJuIF9jcmVhdGVf
Y29udHJvbF9mcmFtZSgKLSAgICAgICAgY29tbW9uLk9QQ09ERV9DTE9TRSwgYm9keSwgbWFzaywg
ZnJhbWVfZmlsdGVycykKLQotCi1kZWYgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoY29k
ZSwgcmVhc29uKToKLSAgICBib2R5ID0gJycKLSAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgotICAg
ICAgICBpZiAoY29kZSA+IGNvbW1vbi5TVEFUVVNfVVNFUl9QUklWQVRFX01BWCBvcgotICAgICAg
ICAgICAgY29kZSA8IGNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUpOgotICAgICAgICAgICAg
cmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKCdTdGF0dXMgY29kZSBpcyBvdXQgb2YgcmFuZ2Un
KQotICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX05PX1NUQVRVU19SRUNFSVZFRCBv
cgotICAgICAgICAgICAgY29kZSA9PSBjb21tb24uU1RBVFVTX0FCTk9STUFMX0NMT1NVUkUgb3IK
LSAgICAgICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19UTFNfSEFORFNIQUtFKToKLSAgICAg
ICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbignU3RhdHVzIGNvZGUgaXMgcmVzZXJ2
ZWQgcHNldWRvICcKLSAgICAgICAgICAgICAgICAnY29kZScpCi0gICAgICAgIGVuY29kZWRfcmVh
c29uID0gcmVhc29uLmVuY29kZSgndXRmLTgnKQotICAgICAgICBib2R5ID0gc3RydWN0LnBhY2so
JyFIJywgY29kZSkgKyBlbmNvZGVkX3JlYXNvbgotICAgIHJldHVybiBib2R5Ci0KLQotY2xhc3Mg
U3RyZWFtT3B0aW9ucyhvYmplY3QpOgotICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1ZXMgdG8gY29u
ZmlndXJlIFN0cmVhbSBvYmplY3RzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAg
ICAgICAiIiJDb25zdHJ1Y3RzIFN0cmVhbU9wdGlvbnMuIiIiCi0KLSAgICAgICAgIyBGaWx0ZXJz
IGFwcGxpZWQgdG8gZnJhbWVzLgotICAgICAgICBzZWxmLm91dGdvaW5nX2ZyYW1lX2ZpbHRlcnMg
PSBbXQotICAgICAgICBzZWxmLmluY29taW5nX2ZyYW1lX2ZpbHRlcnMgPSBbXQotCi0gICAgICAg
ICMgRmlsdGVycyBhcHBsaWVkIHRvIG1lc3NhZ2VzLiBDb250cm9sIGZyYW1lcyBhcmUgbm90IGFm
ZmVjdGVkIGJ5IHRoZW0uCi0gICAgICAgIHNlbGYub3V0Z29pbmdfbWVzc2FnZV9maWx0ZXJzID0g
W10KLSAgICAgICAgc2VsZi5pbmNvbWluZ19tZXNzYWdlX2ZpbHRlcnMgPSBbXQotCi0gICAgICAg
IHNlbGYuZW5jb2RlX3RleHRfbWVzc2FnZV90b191dGY4ID0gVHJ1ZQotICAgICAgICBzZWxmLm1h
c2tfc2VuZCA9IEZhbHNlCi0gICAgICAgIHNlbGYudW5tYXNrX3JlY2VpdmUgPSBUcnVlCi0KLQot
Y2xhc3MgU3RyZWFtKFN0cmVhbUJhc2UpOgotICAgICIiIkEgY2xhc3MgZm9yIHBhcnNpbmcvYnVp
bGRpbmcgZnJhbWVzIG9mIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wKLSAgICAoUkZDIDY0NTUpLgot
ICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QsIG9wdGlvbnMpOgotICAg
ICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICIiIgotCi0gICAgICAg
IFN0cmVhbUJhc2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLQotICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9vcHRpb25z
ID0gb3B0aW9ucwotCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBG
YWxzZQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkID0gRmFsc2UKLQot
ICAgICAgICAjIEhvbGRzIGJvZHkgb2YgcmVjZWl2ZWQgZnJhZ21lbnRzLgotICAgICAgICBzZWxm
Ll9yZWNlaXZlZF9mcmFnbWVudHMgPSBbXQotICAgICAgICAjIEhvbGRzIHRoZSBvcGNvZGUgb2Yg
dGhlIGZpcnN0IGZyYWdtZW50LgotICAgICAgICBzZWxmLl9vcmlnaW5hbF9vcGNvZGUgPSBOb25l
Ci0KLSAgICAgICAgc2VsZi5fd3JpdGVyID0gRnJhZ21lbnRlZEZyYW1lQnVpbGRlcigKLSAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMubWFza19zZW5kLCBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2Zy
YW1lX2ZpbHRlcnMsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLmVuY29kZV90ZXh0X21lc3Nh
Z2VfdG9fdXRmOCkKLQotICAgICAgICBzZWxmLl9waW5nX3F1ZXVlID0gZGVxdWUoKQotCi0gICAg
ZGVmIF9yZWNlaXZlX2ZyYW1lKHNlbGYpOgotICAgICAgICAiIiJSZWNlaXZlcyBhIGZyYW1lIGFu
ZCByZXR1cm4gZGF0YSBpbiB0aGUgZnJhbWUgYXMgYSB0dXBsZSBjb250YWluaW5nCi0gICAgICAg
IGVhY2ggaGVhZGVyIGZpZWxkIGFuZCBwYXlsb2FkIHNlcGFyYXRlbHkuCi0KLSAgICAgICAgUmFp
c2VzOgotICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb246IHdoZW4gcmVh
ZCByZXR1cm5zIGVtcHR5Ci0gICAgICAgICAgICAgICAgc3RyaW5nLgotICAgICAgICAgICAgSW52
YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGRlZiBfcmVjZWl2ZV9ieXRlcyhsZW5ndGgpOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYucmVjZWl2ZV9ieXRlcyhsZW5ndGgpCi0KLSAgICAgICAgcmV0
dXJuIHBhcnNlX2ZyYW1lKHJlY2VpdmVfYnl0ZXM9X3JlY2VpdmVfYnl0ZXMsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICBsb2dnZXI9c2VsZi5fbG9nZ2VyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgd3NfdmVyc2lvbj1zZWxmLl9yZXF1ZXN0LndzX3ZlcnNpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICB1bm1hc2tfcmVjZWl2ZT1zZWxmLl9vcHRpb25zLnVubWFza19yZWNl
aXZlKQotCi0gICAgZGVmIF9yZWNlaXZlX2ZyYW1lX2FzX2ZyYW1lX29iamVjdChzZWxmKToKLSAg
ICAgICAgb3Bjb2RlLCB1bm1hc2tlZF9ieXRlcywgZmluLCByc3YxLCByc3YyLCByc3YzID0gc2Vs
Zi5fcmVjZWl2ZV9mcmFtZSgpCi0KLSAgICAgICAgcmV0dXJuIEZyYW1lKGZpbj1maW4sIHJzdjE9
cnN2MSwgcnN2Mj1yc3YyLCByc3YzPXJzdjMsCi0gICAgICAgICAgICAgICAgICAgICBvcGNvZGU9
b3Bjb2RlLCBwYXlsb2FkPXVubWFza2VkX2J5dGVzKQotCi0gICAgZGVmIHJlY2VpdmVfZmlsdGVy
ZWRfZnJhbWUoc2VsZik6Ci0gICAgICAgICIiIlJlY2VpdmVzIGEgZnJhbWUgYW5kIGFwcGxpZXMg
ZnJhbWUgZmlsdGVycyBhbmQgbWVzc2FnZSBmaWx0ZXJzLgotICAgICAgICBUaGUgZnJhbWUgdG8g
YmUgcmVjZWl2ZWQgbXVzdCBzYXRpc2Z5IGZvbGxvd2luZyBjb25kaXRpb25zOgotICAgICAgICAt
IFRoZSBmcmFtZSBpcyBub3QgZnJhZ21lbnRlZC4KLSAgICAgICAgLSBUaGUgb3Bjb2RlIG9mIHRo
ZSBmcmFtZSBpcyBURVhUIG9yIEJJTkFSWS4KLQotICAgICAgICBETyBOT1QgVVNFIHRoaXMgbWV0
aG9kIGV4Y2VwdCBmb3IgdGVzdGluZyBwdXJwb3NlLgotICAgICAgICAiIiIKLQotICAgICAgICBm
cmFtZSA9IHNlbGYuX3JlY2VpdmVfZnJhbWVfYXNfZnJhbWVfb2JqZWN0KCkKLSAgICAgICAgaWYg
bm90IGZyYW1lLmZpbjoKLSAgICAgICAgICAgIHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnU2VnbWVudGVkIGZyYW1lcyBtdXN0IG5vdCBiZSByZWNlaXZlZCB2
aWEgJwotICAgICAgICAgICAgICAgICdyZWNlaXZlX2ZpbHRlcmVkX2ZyYW1lKCknKQotICAgICAg
ICBpZiAoZnJhbWUub3Bjb2RlICE9IGNvbW1vbi5PUENPREVfVEVYVCBhbmQKLSAgICAgICAgICAg
IGZyYW1lLm9wY29kZSAhPSBjb21tb24uT1BDT0RFX0JJTkFSWSk6Ci0gICAgICAgICAgICByYWlz
ZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0NvbnRyb2wgZnJhbWVz
IG11c3Qgbm90IGJlIHJlY2VpdmVkIHZpYSAnCi0gICAgICAgICAgICAgICAgJ3JlY2VpdmVfZmls
dGVyZWRfZnJhbWUoKScpCi0KLSAgICAgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRp
b25zLmluY29taW5nX2ZyYW1lX2ZpbHRlcnM6Ci0gICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmls
dGVyKGZyYW1lKQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5p
bmNvbWluZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAgICBmcmFtZS5wYXlsb2FkID0gbWVz
c2FnZV9maWx0ZXIuZmlsdGVyKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHJldHVybiBmcmFtZQot
Ci0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZh
bHNlKToKLSAgICAgICAgIiIiU2VuZCBtZXNzYWdlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICBtZXNzYWdlOiB0ZXh0IGluIHVuaWNvZGUgb3IgYmluYXJ5IGluIHN0ciB0byBzZW5kLgot
ICAgICAgICAgICAgYmluYXJ5OiBzZW5kIG1lc3NhZ2UgYXMgYmluYXJ5IGZyYW1lLgotCi0gICAg
ICAgIFJhaXNlczoKLSAgICAgICAgICAgIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbjogd2hlbiBjYWxs
ZWQgb24gYSBzZXJ2ZXItdGVybWluYXRlZAotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24gb3Ig
Y2FsbGVkIHdpdGggaW5jb25zaXN0ZW50IG1lc3NhZ2UgdHlwZSBvcgotICAgICAgICAgICAgICAg
IGJpbmFyeSBwYXJhbWV0ZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVl
c3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICByYWlzZSBCYWRPcGVyYXRpb25FeGNl
cHRpb24oCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3RlZCBzZW5kX21lc3NhZ2UgYWZ0ZXIgc2Vu
ZGluZyBvdXQgYSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgaWYgYmluYXJ5IGFuZCBp
c2luc3RhbmNlKG1lc3NhZ2UsIHVuaWNvZGUpOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0
aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNZXNzYWdlIGZvciBiaW5hcnkgZnJhbWUg
bXVzdCBiZSBpbnN0YW5jZSBvZiBzdHInKQotCi0gICAgICAgIGZvciBtZXNzYWdlX2ZpbHRlciBp
biBzZWxmLl9vcHRpb25zLm91dGdvaW5nX21lc3NhZ2VfZmlsdGVyczoKLSAgICAgICAgICAgIG1l
c3NhZ2UgPSBtZXNzYWdlX2ZpbHRlci5maWx0ZXIobWVzc2FnZSwgZW5kLCBiaW5hcnkpCi0KLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgIyBTZXQgdGhpcyB0byBhbnkgcG9zaXRpdmUgaW50ZWdl
ciB0byBsaW1pdCBtYXhpbXVtIHNpemUgb2YgZGF0YSBpbgotICAgICAgICAgICAgIyBwYXlsb2Fk
IGRhdGEgb2YgZWFjaCBmcmFtZS4KLSAgICAgICAgICAgIE1BWF9QQVlMT0FEX0RBVEFfU0laRSA9
IC0xCi0KLSAgICAgICAgICAgIGlmIE1BWF9QQVlMT0FEX0RBVEFfU0laRSA8PSAwOgotICAgICAg
ICAgICAgICAgIHNlbGYuX3dyaXRlKHNlbGYuX3dyaXRlci5idWlsZChtZXNzYWdlLCBlbmQsIGJp
bmFyeSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgICAgIGJ5dGVzX3dyaXR0
ZW4gPSAwCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGVuZF9mb3Jf
dGhpc19mcmFtZSA9IGVuZAotICAgICAgICAgICAgICAgIGJ5dGVzX3RvX3dyaXRlID0gbGVuKG1l
c3NhZ2UpIC0gYnl0ZXNfd3JpdHRlbgotICAgICAgICAgICAgICAgIGlmIChNQVhfUEFZTE9BRF9E
QVRBX1NJWkUgPiAwIGFuZAotICAgICAgICAgICAgICAgICAgICBieXRlc190b193cml0ZSA+IE1B
WF9QQVlMT0FEX0RBVEFfU0laRSk6Ci0gICAgICAgICAgICAgICAgICAgIGVuZF9mb3JfdGhpc19m
cmFtZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgICAgIGJ5dGVzX3RvX3dyaXRlID0gTUFYX1BB
WUxPQURfREFUQV9TSVpFCi0KLSAgICAgICAgICAgICAgICBmcmFtZSA9IHNlbGYuX3dyaXRlci5i
dWlsZCgKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZVtieXRlc193cml0dGVuOmJ5dGVzX3dy
aXR0ZW4gKyBieXRlc190b193cml0ZV0sCi0gICAgICAgICAgICAgICAgICAgIGVuZF9mb3JfdGhp
c19mcmFtZSwKLSAgICAgICAgICAgICAgICAgICAgYmluYXJ5KQotICAgICAgICAgICAgICAgIHNl
bGYuX3dyaXRlKGZyYW1lKQotCi0gICAgICAgICAgICAgICAgYnl0ZXNfd3JpdHRlbiArPSBieXRl
c190b193cml0ZQotCi0gICAgICAgICAgICAgICAgIyBUaGlzIGlmIG11c3QgYmUgcGxhY2VkIGhl
cmUgKHRoZSBlbmQgb2Ygd2hpbGUgYmxvY2spIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAjIGF0
IGxlYXN0IG9uZSBmcmFtZSBpcyBzZW50LgotICAgICAgICAgICAgICAgIGlmIGxlbihtZXNzYWdl
KSA8PSBieXRlc193cml0dGVuOgotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBl
eGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2Vw
dGlvbihlKQotCi0gICAgZGVmIF9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKHNlbGYsIGZyYW1lKToK
LSAgICAgICAgIiIiR2V0cyBhIG1lc3NhZ2UgZnJvbSBmcmFtZS4gSWYgdGhlIG1lc3NhZ2UgaXMg
Y29tcG9zZWQgb2YgZnJhZ21lbnRlZAotICAgICAgICBmcmFtZXMgYW5kIHRoZSBmcmFtZSBpcyBu
b3QgdGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFtZSwgdGhpcyBtZXRob2QKLSAgICAgICAgcmV0dXJu
cyBOb25lLiBUaGUgd2hvbGUgbWVzc2FnZSB3aWxsIGJlIHJldHVybmVkIHdoZW4gdGhlIGxhc3QK
LSAgICAgICAgZnJhZ21lbnRlZCBmcmFtZSBpcyBwYXNzZWQgdG8gdGhpcyBtZXRob2QuCi0KLSAg
ICAgICAgUmFpc2VzOgotICAgICAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRo
ZSBmcmFtZSBkb2Vzbid0IG1hdGNoIGRlZnJhZ21lbnRhdGlvbgotICAgICAgICAgICAgICAgIGNv
bnRleHQsIG9yIHRoZSBmcmFtZSBjb250YWlucyBpbnZhbGlkIGRhdGEuCi0gICAgICAgICIiIgot
Ci0gICAgICAgIGlmIGZyYW1lLm9wY29kZSA9PSBjb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTjoK
LSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHM6Ci0gICAgICAgICAg
ICAgICAgaWYgZnJhbWUuZmluOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkRnJh
bWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgYSB0ZXJtaW5h
dGlvbiBmcmFtZSBidXQgZnJhZ21lbnRhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAn
bm90IHN0YXJ0ZWQnKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdS
ZWNlaXZlZCBhbiBpbnRlcm1lZGlhdGUgZnJhbWUgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdmcmFnbWVudGF0aW9uIG5vdCBzdGFydGVkJykKLQotICAgICAgICAgICAgaWYgZnJhbWUu
ZmluOgotICAgICAgICAgICAgICAgICMgRW5kIG9mIGZyYWdtZW50YXRpb24gZnJhbWUKLSAgICAg
ICAgICAgICAgICBzZWxmLl9yZWNlaXZlZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQp
Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9ICcnLmpvaW4oc2VsZi5fcmVjZWl2ZWRfZnJhZ21l
bnRzKQotICAgICAgICAgICAgICAgIHNlbGYuX3JlY2VpdmVkX2ZyYWdtZW50cyA9IFtdCi0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1lc3NhZ2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgIyBJbnRlcm1lZGlhdGUgZnJhbWUKLSAgICAgICAgICAgICAgICBzZWxmLl9yZWNlaXZl
ZF9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgICAgICAgICAgcmV0dXJu
IE5vbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIHNlbGYuX3JlY2VpdmVkX2ZyYWdt
ZW50czoKLSAgICAgICAgICAgICAgICBpZiBmcmFtZS5maW46Ci0gICAgICAgICAgICAgICAgICAg
IHJhaXNlIEludmFsaWRGcmFtZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICdS
ZWNlaXZlZCBhbiB1bmZyYWdtZW50ZWQgZnJhbWUgd2l0aG91dCAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAndGVybWluYXRpbmcgZXhpc3RpbmcgZnJhZ21lbnRhdGlvbicpCi0gICAgICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ05ldyBmcmFnbWVudGF0aW9uIHN0YXJ0ZWQg
d2l0aG91dCB0ZXJtaW5hdGluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3Rpbmcg
ZnJhZ21lbnRhdGlvbicpCi0KLSAgICAgICAgICAgIGlmIGZyYW1lLmZpbjoKLSAgICAgICAgICAg
ICAgICAjIFVuZnJhZ21lbnRlZCBmcmFtZQotCi0gICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2lu
YWxfb3Bjb2RlID0gZnJhbWUub3Bjb2RlCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZyYW1lLnBh
eWxvYWQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIyBTdGFydCBvZiBmcmFn
bWVudGF0aW9uIGZyYW1lCi0KLSAgICAgICAgICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9v
cGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZy
YW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgJ0NvbnRyb2wgZnJhbWVzIG11
c3Qgbm90IGJlIGZyYWdtZW50ZWQnKQotCi0gICAgICAgICAgICAgICAgc2VsZi5fb3JpZ2luYWxf
b3Bjb2RlID0gZnJhbWUub3Bjb2RlCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZWRfZnJh
Z21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25l
Ci0KLSAgICBkZWYgX3Byb2Nlc3NfY2xvc2VfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAg
ICAgIiIiUHJvY2Vzc2VzIGNsb3NlIG1lc3NhZ2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICAgIG1lc3NhZ2U6IGNsb3NlIG1lc3NhZ2UuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAg
ICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBtZXNzYWdlIGlzIGludmFsaWQuCi0g
ICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY2xpZW50X3Rlcm1pbmF0ZWQgPSBU
cnVlCi0KLSAgICAgICAgIyBTdGF0dXMgY29kZSBpcyBvcHRpb25hbC4gV2UgY2FuIGhhdmUgc3Rh
dHVzIHJlYXNvbiBvbmx5IGlmIHdlCi0gICAgICAgICMgaGF2ZSBzdGF0dXMgY29kZS4gU3RhdHVz
IHJlYXNvbiBjYW4gYmUgZW1wdHkgc3RyaW5nLiBTbywKLSAgICAgICAgIyBhbGxvd2VkIGNhc2Vz
IGFyZQotICAgICAgICAjIC0gbm8gYXBwbGljYXRpb24gZGF0YTogbm8gY29kZSBubyByZWFzb24K
LSAgICAgICAgIyAtIDIgb2N0ZXQgb2YgYXBwbGljYXRpb24gZGF0YTogaGFzIGNvZGUgYnV0IG5v
IHJlYXNvbgotICAgICAgICAjIC0gMyBvciBtb3JlIG9jdGV0IG9mIGFwcGxpY2F0aW9uIGRhdGE6
IGJvdGggY29kZSBhbmQgcmVhc29uCi0gICAgICAgIGlmIGxlbihtZXNzYWdlKSA9PSAwOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZWNlaXZlZCBjbG9zZSBmcmFtZSAoZW1wdHkg
Ym9keSknKQotICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jbG9zZV9jb2RlID0gKAotICAg
ICAgICAgICAgICAgIGNvbW1vbi5TVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVEKQotICAgICAgICBl
bGlmIGxlbihtZXNzYWdlKSA9PSAxOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhj
ZXB0aW9uKAotICAgICAgICAgICAgICAgICdJZiBhIGNsb3NlIGZyYW1lIGhhcyBzdGF0dXMgY29k
ZSwgdGhlIGxlbmd0aCBvZiAnCi0gICAgICAgICAgICAgICAgJ3N0YXR1cyBjb2RlIG11c3QgYmUg
MiBvY3RldCcpCi0gICAgICAgIGVsaWYgbGVuKG1lc3NhZ2UpID49IDI6Ci0gICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX2NvZGUgPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAg
ICAgICchSCcsIG1lc3NhZ2VbMDoyXSlbMF0KLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3Nf
Y2xvc2VfcmVhc29uID0gbWVzc2FnZVsyOl0uZGVjb2RlKAotICAgICAgICAgICAgICAgICd1dGYt
OCcsICdyZXBsYWNlJykKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAg
ICAgICAgICAnUmVjZWl2ZWQgY2xvc2UgZnJhbWUgKGNvZGU9JWQsIHJlYXNvbj0lciknLAotICAg
ICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2xvc2VfY29kZSwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKLQotICAgICAgICAjIEFzIHdlJ3ZlIHJl
Y2VpdmVkIGEgY2xvc2UgZnJhbWUsIG5vIG1vcmUgZGF0YSBpcyBjb21pbmcgb3ZlciB0aGUKLSAg
ICAgICAgIyBzb2NrZXQuIFdlIGNhbiBub3cgc2FmZWx5IGNsb3NlIHRoZSBzb2NrZXQgd2l0aG91
dCB3b3JyeWluZyBhYm91dAotICAgICAgICAjIFJTVCBzZW5kaW5nLgotCi0gICAgICAgIGlmIHNl
bGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIGFjayBmb3Igc2VydmVyLWluaXRpYXRl
ZCBjbG9zaW5nIGhhbmRzaGFrZScpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnUmVjZWl2ZWQgY2xpZW50LWluaXRpYXRlZCBj
bG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICAgICAgY29kZSA9IGNvbW1vbi5TVEFUVVNfTk9STUFM
X0NMT1NVUkUKLSAgICAgICAgcmVhc29uID0gJycKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLl9y
ZXF1ZXN0LCAnX2Rpc3BhdGNoZXInKToKLSAgICAgICAgICAgIGRpc3BhdGNoZXIgPSBzZWxmLl9y
ZXF1ZXN0Ll9kaXNwYXRjaGVyCi0gICAgICAgICAgICBjb2RlLCByZWFzb24gPSBkaXNwYXRjaGVy
LnBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UoCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dCkKLSAgICAgICAgICAgIGlmIGNvZGUgaXMgTm9uZSBhbmQgcmVhc29uIGlzIG5vdCBOb25lIGFu
ZCBsZW4ocmVhc29uKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmco
Ci0gICAgICAgICAgICAgICAgICAgICdIYW5kbGVyIHNwZWNpZmllZCByZWFzb24gZGVzcGl0ZSBj
b2RlIGJlaW5nIE5vbmUnKQotICAgICAgICAgICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgICAg
ICBpZiByZWFzb24gaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZWFzb24gPSAnJwotICAgICAg
ICBzZWxmLl9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2Vs
Zi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAgJ0Fja25vd2xlZGdlZCBjbG9zaW5nIGhhbmRz
aGFrZSBpbml0aWF0ZWQgYnkgdGhlIHBlZXIgJwotICAgICAgICAgICAgJyhjb2RlPSVyLCByZWFz
b249JXIpJywgY29kZSwgcmVhc29uKQotCi0gICAgZGVmIF9wcm9jZXNzX3BpbmdfbWVzc2FnZShz
ZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiUHJvY2Vzc2VzIHBpbmcgbWVzc2FnZS4KLQotICAg
ICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTogcGluZyBtZXNzYWdlLgotICAgICAgICAi
IiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBoYW5kbGVyID0gc2VsZi5fcmVxdWVzdC5v
bl9waW5nX2hhbmRsZXIKLSAgICAgICAgICAgIGlmIGhhbmRsZXI6Ci0gICAgICAgICAgICAgICAg
aGFuZGxlcihzZWxmLl9yZXF1ZXN0LCBtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJldHVybgot
ICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IsIGU6Ci0gICAgICAgICAgICBwYXNzCi0gICAg
ICAgIHNlbGYuX3NlbmRfcG9uZyhtZXNzYWdlKQotCi0gICAgZGVmIF9wcm9jZXNzX3BvbmdfbWVz
c2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiUHJvY2Vzc2VzIHBvbmcgbWVzc2FnZS4K
LQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgbWVzc2FnZTogcG9uZyBtZXNzYWdlLgotICAg
ICAgICAiIiIKLQotICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBZGQgcGluZyB0aW1lb3V0IGhh
bmRsaW5nLgotCi0gICAgICAgIGluZmxpZ2h0X3BpbmdzID0gZGVxdWUoKQotCi0gICAgICAgIHdo
aWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZXhwZWN0ZWRfYm9k
eSA9IHNlbGYuX3BpbmdfcXVldWUucG9wbGVmdCgpCi0gICAgICAgICAgICAgICAgaWYgZXhwZWN0
ZWRfYm9keSA9PSBtZXNzYWdlOgotICAgICAgICAgICAgICAgICAgICAjIGluZmxpZ2h0X3Bpbmdz
IGNvbnRhaW5zIHBpbmdzIGlnbm9yZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgb3Ro
ZXIgcGVlci4gSnVzdCBmb3JnZXQgdGhlbS4KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKAotICAgICAgICAgICAgICAgICAgICAgICAgJ1BpbmcgJXIgaXMgYWNrZWQgKCVk
IHBpbmdzIHdlcmUgaWdub3JlZCknLAotICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRf
Ym9keSwgbGVuKGluZmxpZ2h0X3BpbmdzKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAg
ICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBpbmZsaWdodF9waW5ncy5h
cHBlbmQoZXhwZWN0ZWRfYm9keSkKLSAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yLCBlOgot
ICAgICAgICAgICAgICAgICMgVGhlIHJlY2VpdmVkIHBvbmcgd2FzIHVuc29saWNpdGVkIHBvbmcu
IEtlZXAgdGhlCi0gICAgICAgICAgICAgICAgIyBwaW5nIHF1ZXVlIGFzIGlzLgotICAgICAgICAg
ICAgICAgIHNlbGYuX3BpbmdfcXVldWUgPSBpbmZsaWdodF9waW5ncwotICAgICAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgYSB1bnNvbGljaXRlZCBwb25nJykKLSAgICAg
ICAgICAgICAgICBicmVhawotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRsZXIgPSBz
ZWxmLl9yZXF1ZXN0Lm9uX3BvbmdfaGFuZGxlcgotICAgICAgICAgICAgaWYgaGFuZGxlcjoKLSAg
ICAgICAgICAgICAgICBoYW5kbGVyKHNlbGYuX3JlcXVlc3QsIG1lc3NhZ2UpCi0gICAgICAgIGV4
Y2VwdCBBdHRyaWJ1dGVFcnJvciwgZToKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiByZWNl
aXZlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUg
YW5kIHJldHVybiBpdHMgcGF5bG9hZCBhcyBhIHRleHQgaW4KLSAgICAgICAgdW5pY29kZSBvciBh
IGJpbmFyeSBpbiBzdHIuCi0KLSAgICAgICAgUmV0dXJuczoKLSAgICAgICAgICAgIHBheWxvYWQg
ZGF0YSBvZiB0aGUgZnJhbWUKLSAgICAgICAgICAgIC0gYXMgdW5pY29kZSBpbnN0YW5jZSBpZiBy
ZWNlaXZlZCB0ZXh0IGZyYW1lCi0gICAgICAgICAgICAtIGFzIHN0ciBpbnN0YW5jZSBpZiByZWNl
aXZlZCBiaW5hcnkgZnJhbWUKLSAgICAgICAgICAgIG9yIE5vbmUgaWZmIHJlY2VpdmVkIGNsb3Np
bmcgaGFuZHNoYWtlLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBCYWRPcGVyYXRpb25F
eGNlcHRpb246IHdoZW4gY2FsbGVkIG9uIGEgY2xpZW50LXRlcm1pbmF0ZWQKLSAgICAgICAgICAg
ICAgICBjb25uZWN0aW9uLgotICAgICAgICAgICAgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRp
b246IHdoZW4gcmVhZCByZXR1cm5zIGVtcHR5Ci0gICAgICAgICAgICAgICAgc3RyaW5nLgotICAg
ICAgICAgICAgSW52YWxpZEZyYW1lRXhjZXB0aW9uOiB3aGVuIHRoZSBmcmFtZSBjb250YWlucyBp
bnZhbGlkCi0gICAgICAgICAgICAgICAgZGF0YS4KLSAgICAgICAgICAgIFVuc3VwcG9ydGVkRnJh
bWVFeGNlcHRpb246IHdoZW4gdGhlIHJlY2VpdmVkIGZyYW1lIGhhcwotICAgICAgICAgICAgICAg
IGZsYWdzLCBvcGNvZGUgd2UgY2Fubm90IGhhbmRsZS4gWW91IGNhbiBpZ25vcmUgdGhpcwotICAg
ICAgICAgICAgICAgIGV4Y2VwdGlvbiBhbmQgY29udGludWUgcmVjZWl2aW5nIHRoZSBuZXh0IGZy
YW1lLgotICAgICAgICAiIiIKLQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LmNsaWVudF90ZXJt
aW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICdSZXF1ZXN0ZWQgcmVjZWl2ZV9tZXNzYWdlIGFmdGVyIHJlY2VpdmluZyBhIGNs
b3NpbmcgJwotICAgICAgICAgICAgICAgICdoYW5kc2hha2UnKQotCi0gICAgICAgIHdoaWxlIFRy
dWU6Ci0gICAgICAgICAgICAjIG1wX2Nvbm4ucmVhZCB3aWxsIGJsb2NrIGlmIG5vIGJ5dGVzIGFy
ZSBhdmFpbGFibGUuCi0gICAgICAgICAgICAjIFRpbWVvdXQgaXMgY29udHJvbGxlZCBieSBUaW1l
T3V0IGRpcmVjdGl2ZSBvZiBBcGFjaGUuCi0KLSAgICAgICAgICAgIGZyYW1lID0gc2VsZi5fcmVj
ZWl2ZV9mcmFtZV9hc19mcmFtZV9vYmplY3QoKQotCi0gICAgICAgICAgICAjIENoZWNrIHRoZSBj
b25zdHJhaW50IG9uIHRoZSBwYXlsb2FkIHNpemUgZm9yIGNvbnRyb2wgZnJhbWVzCi0gICAgICAg
ICAgICAjIGJlZm9yZSBleHRlbnNpb24gcHJvY2Vzc2VzIHRoZSBmcmFtZS4KLSAgICAgICAgICAg
ICMgU2VlIGFsc28gaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjNjQ1NSNzZWN0aW9uLTUu
NQotICAgICAgICAgICAgaWYgKGNvbW1vbi5pc19jb250cm9sX29wY29kZShmcmFtZS5vcGNvZGUp
IGFuZAotICAgICAgICAgICAgICAgIGxlbihmcmFtZS5wYXlsb2FkKSA+IDEyNSk6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1lRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAg
ICAnUGF5bG9hZCBkYXRhIHNpemUgb2YgY29udHJvbCBmcmFtZXMgbXVzdCBiZSAxMjUgYnl0ZXMg
b3IgJwotICAgICAgICAgICAgICAgICAgICAnbGVzcycpCi0KLSAgICAgICAgICAgIGZvciBmcmFt
ZV9maWx0ZXIgaW4gc2VsZi5fb3B0aW9ucy5pbmNvbWluZ19mcmFtZV9maWx0ZXJzOgotICAgICAg
ICAgICAgICAgIGZyYW1lX2ZpbHRlci5maWx0ZXIoZnJhbWUpCi0KLSAgICAgICAgICAgIGlmIGZy
YW1lLnJzdjEgb3IgZnJhbWUucnN2MiBvciBmcmFtZS5yc3YzOgotICAgICAgICAgICAgICAgIHJh
aXNlIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdVbnN1
cHBvcnRlZCBmbGFnIGlzIHNldCAocnN2ID0gJWQlZCVkKScgJQotICAgICAgICAgICAgICAgICAg
ICAoZnJhbWUucnN2MSwgZnJhbWUucnN2MiwgZnJhbWUucnN2MykpCi0KLSAgICAgICAgICAgIG1l
c3NhZ2UgPSBzZWxmLl9nZXRfbWVzc2FnZV9mcm9tX2ZyYW1lKGZyYW1lKQotICAgICAgICAgICAg
aWYgbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAg
ICAgIGZvciBtZXNzYWdlX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLmluY29taW5nX21lc3NhZ2Vf
ZmlsdGVyczoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVy
KG1lc3NhZ2UpCi0KLSAgICAgICAgICAgIGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21t
b24uT1BDT0RFX1RFWFQ6Ci0gICAgICAgICAgICAgICAgIyBUaGUgV2ViU29ja2V0IHByb3RvY29s
IHNlY3Rpb24gNC40IHNwZWNpZmllcyB0aGF0IGludmFsaWQKLSAgICAgICAgICAgICAgICAjIGNo
YXJhY3RlcnMgbXVzdCBiZSByZXBsYWNlZCB3aXRoIFUrZmZmZCBSRVBMQUNFTUVOVAotICAgICAg
ICAgICAgICAgICMgQ0hBUkFDVEVSLgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICAgICAgcmV0dXJuIG1lc3NhZ2UuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgICAgICAgICAg
ZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciwgZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2Ug
SW52YWxpZFVURjhFeGNlcHRpb24oZSkKLSAgICAgICAgICAgIGVsaWYgc2VsZi5fb3JpZ2luYWxf
b3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklOQVJZOgotICAgICAgICAgICAgICAgIHJldHVybiBt
ZXNzYWdlCi0gICAgICAgICAgICBlbGlmIHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24u
T1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfY2xvc2VfbWVzc2Fn
ZShtZXNzYWdlKQotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBlbGlm
IHNlbGYuX29yaWdpbmFsX29wY29kZSA9PSBjb21tb24uT1BDT0RFX1BJTkc6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fcHJvY2Vzc19waW5nX21lc3NhZ2UobWVzc2FnZSkKLSAgICAgICAgICAgIGVs
aWYgc2VsZi5fb3JpZ2luYWxfb3Bjb2RlID09IGNvbW1vbi5PUENPREVfUE9ORzoKLSAgICAgICAg
ICAgICAgICBzZWxmLl9wcm9jZXNzX3BvbmdfbWVzc2FnZShtZXNzYWdlKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICByYWlzZSBVbnN1cHBvcnRlZEZyYW1lRXhjZXB0aW9uKAot
ICAgICAgICAgICAgICAgICAgICAnT3Bjb2RlICVkIGlzIG5vdCBzdXBwb3J0ZWQnICUgc2VsZi5f
b3JpZ2luYWxfb3Bjb2RlKQotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYs
IGNvZGUsIHJlYXNvbik6Ci0gICAgICAgIGJvZHkgPSBjcmVhdGVfY2xvc2luZ19oYW5kc2hha2Vf
Ym9keShjb2RlLCByZWFzb24pCi0gICAgICAgIGZyYW1lID0gY3JlYXRlX2Nsb3NlX2ZyYW1lKAot
ICAgICAgICAgICAgYm9keSwgbWFzaz1zZWxmLl9vcHRpb25zLm1hc2tfc2VuZCwKLSAgICAgICAg
ICAgIGZyYW1lX2ZpbHRlcnM9c2VsZi5fb3B0aW9ucy5vdXRnb2luZ19mcmFtZV9maWx0ZXJzKQot
Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVlCi0KLSAgICAg
ICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICBkZWYgY2xvc2VfY29ubmVjdGlvbihzZWxmLCBj
b2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICB3YWl0X3Jlc3BvbnNlPVRydWUpOgotICAgICAgICAiIiJDbG9zZXMgYSBX
ZWJTb2NrZXQgY29ubmVjdGlvbi4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgY29kZTog
U3RhdHVzIGNvZGUgZm9yIGNsb3NlIGZyYW1lLiBJZiBjb2RlIGlzIE5vbmUsIGEgY2xvc2UKLSAg
ICAgICAgICAgICAgICBmcmFtZSB3aXRoIGVtcHR5IGJvZHkgd2lsbCBiZSBzZW50LgotICAgICAg
ICAgICAgcmVhc29uOiBzdHJpbmcgcmVwcmVzZW50aW5nIGNsb3NlIHJlYXNvbi4KLSAgICAgICAg
ICAgIHdhaXRfcmVzcG9uc2U6IFRydWUgd2hlbiBjYWxsZXIgd2FudCB0byB3YWl0IHRoZSByZXNw
b25zZS4KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9u
OiB3aGVuIHJlYXNvbiBpcyBzcGVjaWZpZWQgd2l0aCBjb2RlIE5vbmUKLSAgICAgICAgICAgIG9y
IHJlYXNvbiBpcyBub3QgYW4gaW5zdGFuY2Ugb2YgYm90aCBzdHIgYW5kIHVuaWNvZGUuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0g
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgJ1JlcXVlc3Rl
ZCBjbG9zZV9jb25uZWN0aW9uIGJ1dCBzZXJ2ZXIgaXMgYWxyZWFkeSB0ZXJtaW5hdGVkJykKLSAg
ICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGlmIGNvZGUgaXMgTm9uZToKLSAgICAgICAgICAg
IGlmIHJlYXNvbiBpcyBub3QgTm9uZSBhbmQgbGVuKHJlYXNvbikgPiAwOgotICAgICAgICAgICAg
ICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ2Ns
b3NlIHJlYXNvbiBtdXN0IG5vdCBiZSBzcGVjaWZpZWQgaWYgY29kZSBpcyBOb25lJykKLSAgICAg
ICAgICAgIHJlYXNvbiA9ICcnCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShyZWFzb24sIHN0cikgYW5kIG5vdCBpc2luc3RhbmNlKHJlYXNvbiwgdW5pY29kZSk6
Ci0gICAgICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICAgICAnY2xvc2UgcmVhc29uIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2Ygc3RyIG9yIHVu
aWNvZGUnKQotCi0gICAgICAgIHNlbGYuX3NlbmRfY2xvc2luZ19oYW5kc2hha2UoY29kZSwgcmVh
c29uKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnSW5pdGlhdGVk
IGNsb3NpbmcgaGFuZHNoYWtlIChjb2RlPSVyLCByZWFzb249JXIpJywKLSAgICAgICAgICAgIGNv
ZGUsIHJlYXNvbikKLQotICAgICAgICBpZiAoY29kZSA9PSBjb21tb24uU1RBVFVTX0dPSU5HX0FX
QVkgb3IKLSAgICAgICAgICAgIGNvZGUgPT0gY29tbW9uLlNUQVRVU19QUk9UT0NPTF9FUlJPUikg
b3Igbm90IHdhaXRfcmVzcG9uc2U6Ci0gICAgICAgICAgICAjIEl0IGRvZXNuJ3QgbWFrZSBzZW5z
ZSB0byB3YWl0IGZvciBhIGNsb3NlIGZyYW1lIGlmIHRoZSByZWFzb24gaXMKLSAgICAgICAgICAg
ICMgcHJvdG9jb2wgZXJyb3Igb3IgdGhhdCB0aGUgc2VydmVyIGlzIGdvaW5nIGF3YXkuIEZvciBz
b21lIG9mCi0gICAgICAgICAgICAjIG90aGVyIHJlYXNvbnMsIGl0IG1pZ2h0IG5vdCBtYWtlIHNl
bnNlIHRvIHdhaXQgZm9yIGEgY2xvc2UgZnJhbWUsCi0gICAgICAgICAgICAjIGJ1dCBpdCdzIG5v
dCBjbGVhciwgeWV0LgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBUT0RPKHVrYWkp
OiAyLiB3YWl0IHVudGlsIHRoZSAvY2xpZW50IHRlcm1pbmF0ZWQvIGZsYWcgaGFzIGJlZW4gc2V0
LAotICAgICAgICAjIG9yIHVudGlsIGEgc2VydmVyLWRlZmluZWQgdGltZW91dCBleHBpcmVzLgot
ICAgICAgICAjCi0gICAgICAgICMgRm9yIG5vdywgd2UgZXhwZWN0IHJlY2VpdmluZyBjbG9zaW5n
IGhhbmRzaGFrZSByaWdodCBhZnRlciBzZW5kaW5nCi0gICAgICAgICMgb3V0IGNsb3NpbmcgaGFu
ZHNoYWtlLgotICAgICAgICBtZXNzYWdlID0gc2VsZi5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAg
ICBpZiBtZXNzYWdlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmFpc2UgQ29ubmVjdGlvblRl
cm1pbmF0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0RpZG5cJ3QgcmVjZWl2ZSB2YWxp
ZCBhY2sgZm9yIGNsb3NpbmcgaGFuZHNoYWtlJykKLSAgICAgICAgIyBUT0RPOiAzLiBjbG9zZSB0
aGUgV2ViU29ja2V0IGNvbm5lY3Rpb24uCi0gICAgICAgICMgbm90ZTogbW9kX3B5dGhvbiBDb25u
ZWN0aW9uIChtcF9jb25uKSBkb2Vzbid0IGhhdmUgY2xvc2UgbWV0aG9kLgotCi0gICAgZGVmIHNl
bmRfcGluZyhzZWxmLCBib2R5PScnKToKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfcGluZ19mcmFt
ZSgKLSAgICAgICAgICAgIGJvZHksCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLm1hc2tfc2Vu
ZCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycykKLSAg
ICAgICAgc2VsZi5fd3JpdGUoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5fcGluZ19xdWV1ZS5hcHBl
bmQoYm9keSkKLQotICAgIGRlZiBfc2VuZF9wb25nKHNlbGYsIGJvZHkpOgotICAgICAgICBmcmFt
ZSA9IGNyZWF0ZV9wb25nX2ZyYW1lKAotICAgICAgICAgICAgYm9keSwKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMubWFza19zZW5kLAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5vdXRnb2lu
Z19mcmFtZV9maWx0ZXJzKQotICAgICAgICBzZWxmLl93cml0ZShmcmFtZSkKLQotICAgIGRlZiBn
ZXRfbGFzdF9yZWNlaXZlZF9vcGNvZGUoc2VsZik6Ci0gICAgICAgICIiIlJldHVybnMgdGhlIG9w
Y29kZSBvZiB0aGUgV2ViU29ja2V0IG1lc3NhZ2Ugd2hpY2ggdGhlIGxhc3QgcmVjZWl2ZWQKLSAg
ICAgICAgZnJhbWUgYmVsb25ncyB0by4gVGhlIHJldHVybiB2YWx1ZSBpcyB2YWxpZCBpZmYgaW1t
ZWRpYXRlbHkgYWZ0ZXIKLSAgICAgICAgcmVjZWl2ZV9tZXNzYWdlIGNhbGwuCi0gICAgICAgICIi
IgotCi0gICAgICAgIHJldHVybiBzZWxmLl9vcmlnaW5hbF9vcGNvZGUKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9jb21tb24ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyZmMyZWFkNjQ4MWJlNTdiN2FlNGM2NjhjMjJlY2IxZWM0YmJjYjJiLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9jb21tb24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMDMgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIG11c3Qgbm90IGRlcGVuZCBvbiBhbnkgbW9k
dWxlIHNwZWNpZmljIHRvIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wuCi0iIiIKLQotCi1mcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0cF9oZWFkZXJfdXRpbAotCi0KLSMgQWRkaXRpb25hbCBs
b2cgbGV2ZWwgZGVmaW5pdGlvbnMuCi1MT0dMRVZFTF9GSU5FID0gOQotCi0jIENvbnN0YW50cyBp
bmRpY2F0aW5nIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uLgotVkVSU0lPTl9ISVhJRTc1ID0g
LTEKLVZFUlNJT05fSFlCSTAwID0gMAotVkVSU0lPTl9IWUJJMDEgPSAxCi1WRVJTSU9OX0hZQkkw
MiA9IDIKLVZFUlNJT05fSFlCSTAzID0gMgotVkVSU0lPTl9IWUJJMDQgPSA0Ci1WRVJTSU9OX0hZ
QkkwNSA9IDUKLVZFUlNJT05fSFlCSTA2ID0gNgotVkVSU0lPTl9IWUJJMDcgPSA3Ci1WRVJTSU9O
X0hZQkkwOCA9IDgKLVZFUlNJT05fSFlCSTA5ID0gOAotVkVSU0lPTl9IWUJJMTAgPSA4Ci1WRVJT
SU9OX0hZQkkxMSA9IDgKLVZFUlNJT05fSFlCSTEyID0gOAotVkVSU0lPTl9IWUJJMTMgPSAxMwot
VkVSU0lPTl9IWUJJMTQgPSAxMwotVkVSU0lPTl9IWUJJMTUgPSAxMwotVkVSU0lPTl9IWUJJMTYg
PSAxMwotVkVSU0lPTl9IWUJJMTcgPSAxMwotCi0jIENvbnN0YW50cyBpbmRpY2F0aW5nIFdlYlNv
Y2tldCBwcm90b2NvbCBsYXRlc3QgdmVyc2lvbi4KLVZFUlNJT05fSFlCSV9MQVRFU1QgPSBWRVJT
SU9OX0hZQkkxMwotCi0jIFBvcnQgbnVtYmVycwotREVGQVVMVF9XRUJfU09DS0VUX1BPUlQgPSA4
MAotREVGQVVMVF9XRUJfU09DS0VUX1NFQ1VSRV9QT1JUID0gNDQzCi0KLSMgU2NoZW1lcwotV0VC
X1NPQ0tFVF9TQ0hFTUUgPSAnd3MnCi1XRUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUgPSAnd3NzJwot
Ci0jIEZyYW1lIG9wY29kZXMgZGVmaW5lZCBpbiB0aGUgc3BlYy4KLU9QQ09ERV9DT05USU5VQVRJ
T04gPSAweDAKLU9QQ09ERV9URVhUID0gMHgxCi1PUENPREVfQklOQVJZID0gMHgyCi1PUENPREVf
Q0xPU0UgPSAweDgKLU9QQ09ERV9QSU5HID0gMHg5Ci1PUENPREVfUE9ORyA9IDB4YQotCi0jIFVV
SURzIHVzZWQgYnkgSHlCaSAwNCBhbmQgbGF0ZXIgb3BlbmluZyBoYW5kc2hha2UgYW5kIGZyYW1l
IG1hc2tpbmcuCi1XRUJTT0NLRVRfQUNDRVBUX1VVSUQgPSAnMjU4RUFGQTUtRTkxNC00N0RBLTk1
Q0EtQzVBQjBEQzg1QjExJwotCi0jIE9wZW5pbmcgaGFuZHNoYWtlIGhlYWRlciBuYW1lcyBhbmQg
ZXhwZWN0ZWQgdmFsdWVzLgotVVBHUkFERV9IRUFERVIgPSAnVXBncmFkZScKLVdFQlNPQ0tFVF9V
UEdSQURFX1RZUEUgPSAnd2Vic29ja2V0JwotV0VCU09DS0VUX1VQR1JBREVfVFlQRV9ISVhJRTc1
ID0gJ1dlYlNvY2tldCcKLUNPTk5FQ1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rpb24nCi1VUEdSQURF
X0NPTk5FQ1RJT05fVFlQRSA9ICdVcGdyYWRlJwotSE9TVF9IRUFERVIgPSAnSG9zdCcKLU9SSUdJ
Tl9IRUFERVIgPSAnT3JpZ2luJwotU0VDX1dFQlNPQ0tFVF9PUklHSU5fSEVBREVSID0gJ1NlYy1X
ZWJTb2NrZXQtT3JpZ2luJwotU0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSID0gJ1NlYy1XZWJTb2Nr
ZXQtS2V5JwotU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtQWNj
ZXB0JwotU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVZlcnNp
b24nCi1TRUNfV0VCU09DS0VUX1BST1RPQ09MX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LVByb3Rv
Y29sJwotU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUV4
dGVuc2lvbnMnCi1TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LURy
YWZ0JwotU0VDX1dFQlNPQ0tFVF9LRVkxX0hFQURFUiA9ICdTZWMtV2ViU29ja2V0LUtleTEnCi1T
RUNfV0VCU09DS0VUX0tFWTJfSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtS2V5MicKLVNFQ19XRUJT
T0NLRVRfTE9DQVRJT05fSEVBREVSID0gJ1NlYy1XZWJTb2NrZXQtTG9jYXRpb24nCi0KLSMgRXh0
ZW5zaW9ucwotREVGTEFURV9GUkFNRV9FWFRFTlNJT04gPSAnZGVmbGF0ZS1mcmFtZScKLVBFUk1F
U1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OID0gJ3Blcm1lc3NhZ2UtY29tcHJlc3MnCi1QRVJN
RVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OID0gJ3Blcm1lc3NhZ2UtZGVmbGF0ZScKLVhfV0VCS0lU
X0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnCi1YX1dF
QktJVF9QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiA9ICd4LXdlYmtpdC1wZXJtZXNz
YWdlLWNvbXByZXNzJwotTVVYX0VYVEVOU0lPTiA9ICdtdXhfRE9fTk9UX1VTRScKLQotIyBTdGF0
dXMgY29kZXMKLSMgQ29kZSBTVEFUVVNfTk9fU1RBVFVTX1JFQ0VJVkVELCBTVEFUVVNfQUJOT1JN
QUxfQ0xPU1VSRSwgYW5kCi0jIFNUQVRVU19UTFNfSEFORFNIQUtFIGFyZSBwc2V1ZG8gY29kZXMg
dG8gaW5kaWNhdGUgc3BlY2lmaWMgZXJyb3IgY2FzZXMuCi0jIENvdWxkIG5vdCBiZSB1c2VkIGZv
ciBjb2RlcyBpbiBhY3R1YWwgY2xvc2luZyBmcmFtZXMuCi0jIEFwcGxpY2F0aW9uIGxldmVsIGVy
cm9ycyBtdXN0IHVzZSBjb2RlcyBpbiB0aGUgcmFuZ2UKLSMgU1RBVFVTX1VTRVJfUkVHSVNURVJF
RF9CQVNFIHRvIFNUQVRVU19VU0VSX1BSSVZBVEVfTUFYLiBUaGUgY29kZXMgaW4gdGhlCi0jIHJh
bmdlIFNUQVRVU19VU0VSX1JFR0lTVEVSRURfQkFTRSB0byBTVEFUVVNfVVNFUl9SRUdJU1RFUkVE
X01BWCBhcmUgbWFuYWdlZAotIyBieSBJQU5BLiBVc3VhbGx5IGFwcGxpY2F0aW9uIG11c3QgZGVm
aW5lIHVzZXIgcHJvdG9jb2wgbGV2ZWwgZXJyb3JzIGluIHRoZQotIyByYW5nZSBTVEFUVVNfVVNF
Ul9QUklWQVRFX0JBU0UgdG8gU1RBVFVTX1VTRVJfUFJJVkFURV9NQVguCi1TVEFUVVNfTk9STUFM
X0NMT1NVUkUgPSAxMDAwCi1TVEFUVVNfR09JTkdfQVdBWSA9IDEwMDEKLVNUQVRVU19QUk9UT0NP
TF9FUlJPUiA9IDEwMDIKLVNUQVRVU19VTlNVUFBPUlRFRF9EQVRBID0gMTAwMwotU1RBVFVTX05P
X1NUQVRVU19SRUNFSVZFRCA9IDEwMDUKLVNUQVRVU19BQk5PUk1BTF9DTE9TVVJFID0gMTAwNgot
U1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBID0gMTAwNwotU1RBVFVTX1BPTElDWV9W
SU9MQVRJT04gPSAxMDA4Ci1TVEFUVVNfTUVTU0FHRV9UT09fQklHID0gMTAwOQotU1RBVFVTX01B
TkRBVE9SWV9FWFRFTlNJT04gPSAxMDEwCi1TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRfRVJST1Ig
PSAxMDExCi1TVEFUVVNfVExTX0hBTkRTSEFLRSA9IDEwMTUKLVNUQVRVU19VU0VSX1JFR0lTVEVS
RURfQkFTRSA9IDMwMDAKLVNUQVRVU19VU0VSX1JFR0lTVEVSRURfTUFYID0gMzk5OQotU1RBVFVT
X1VTRVJfUFJJVkFURV9CQVNFID0gNDAwMAotU1RBVFVTX1VTRVJfUFJJVkFURV9NQVggPSA0OTk5
Ci0jIEZvbGxvd2luZyBkZWZpbml0aW9ucyBhcmUgYWxpYXNlcyB0byBrZWVwIGNvbXBhdGliaWxp
dHkuIEFwcGxpY2F0aW9ucyBtdXN0Ci0jIG5vdCB1c2UgdGhlc2Ugb2Jzb2xldGVkIGRlZmluaXRp
b25zIGFueW1vcmUuCi1TVEFUVVNfTk9STUFMID0gU1RBVFVTX05PUk1BTF9DTE9TVVJFCi1TVEFU
VVNfVU5TVVBQT1JURUQgPSBTVEFUVVNfVU5TVVBQT1JURURfREFUQQotU1RBVFVTX0NPREVfTk9U
X0FWQUlMQUJMRSA9IFNUQVRVU19OT19TVEFUVVNfUkVDRUlWRUQKLVNUQVRVU19BQk5PUk1BTF9D
TE9TRSA9IFNUQVRVU19BQk5PUk1BTF9DTE9TVVJFCi1TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlM
T0FEID0gU1RBVFVTX0lOVkFMSURfRlJBTUVfUEFZTE9BRF9EQVRBCi1TVEFUVVNfTUFOREFUT1JZ
X0VYVCA9IFNUQVRVU19NQU5EQVRPUllfRVhURU5TSU9OCi0KLSMgSFRUUCBzdGF0dXMgY29kZXMK
LUhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUID0gNDAwCi1IVFRQX1NUQVRVU19GT1JCSURERU4gPSA0
MDMKLUhUVFBfU1RBVFVTX05PVF9GT1VORCA9IDQwNAotCi0KLWRlZiBpc19jb250cm9sX29wY29k
ZShvcGNvZGUpOgotICAgIHJldHVybiAob3Bjb2RlID4+IDMpID09IDEKLQotCi1jbGFzcyBFeHRl
bnNpb25QYXJhbWV0ZXIob2JqZWN0KToKLSAgICAiIiJIb2xkcyBpbmZvcm1hdGlvbiBhYm91dCBh
biBleHRlbnNpb24gd2hpY2ggaXMgZXhjaGFuZ2VkIG9uIGV4dGVuc2lvbgotICAgIG5lZ290aWF0
aW9uIGluIG9wZW5pbmcgaGFuZHNoYWtlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIG5hbWUpOgotICAgICAgICBzZWxmLl9uYW1lID0gbmFtZQotICAgICAgICAjIFRPRE8odHlv
c2hpbm8pOiBDaGFuZ2UgdGhlIGRhdGEgc3RydWN0dXJlIHRvIG1vcmUgZWZmaWNpZW50IG9uZSBz
dWNoCi0gICAgICAgICMgYXMgZGljdCB3aGVuIHRoZSBzcGVjIGNoYW5nZXMgdG8gc2F5IGxpa2UK
LSAgICAgICAgIyAtIFBhcmFtZXRlciBuYW1lcyBtdXN0IGJlIHVuaXF1ZQotICAgICAgICAjIC0g
VGhlIG9yZGVyIG9mIHBhcmFtZXRlcnMgaXMgbm90IHNpZ25pZmljYW50Ci0gICAgICAgIHNlbGYu
X3BhcmFtZXRlcnMgPSBbXQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiBz
ZWxmLl9uYW1lCi0KLSAgICBkZWYgYWRkX3BhcmFtZXRlcihzZWxmLCBuYW1lLCB2YWx1ZSk6Ci0g
ICAgICAgIHNlbGYuX3BhcmFtZXRlcnMuYXBwZW5kKChuYW1lLCB2YWx1ZSkpCi0KLSAgICBkZWYg
Z2V0X3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9wYXJhbWV0ZXJzCi0K
LSAgICBkZWYgZ2V0X3BhcmFtZXRlcl9uYW1lcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIFtuYW1l
IGZvciBuYW1lLCB1bnVzZWRfdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyc10KLQotICAgIGRlZiBo
YXNfcGFyYW1ldGVyKHNlbGYsIG5hbWUpOgotICAgICAgICBmb3IgcGFyYW1fbmFtZSwgcGFyYW1f
dmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKLSAgICAgICAgICAgIGlmIHBhcmFtX25hbWUgPT0g
bmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UK
LQotICAgIGRlZiBnZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYsIG5hbWUpOgotICAgICAgICBmb3Ig
cGFyYW1fbmFtZSwgcGFyYW1fdmFsdWUgaW4gc2VsZi5fcGFyYW1ldGVyczoKLSAgICAgICAgICAg
IGlmIHBhcmFtX25hbWUgPT0gbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4gcGFyYW1fdmFs
dWUKLQotCi1jbGFzcyBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzdXBlcihFeHRlbnNpb25QYXJzaW5n
RXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotCi0KLWRlZiBfcGFyc2VfZXh0ZW5zaW9u
X3BhcmFtKHN0YXRlLCBkZWZpbml0aW9uKToKLSAgICBwYXJhbV9uYW1lID0gaHR0cF9oZWFkZXJf
dXRpbC5jb25zdW1lX3Rva2VuKHN0YXRlKQotCi0gICAgaWYgcGFyYW1fbmFtZSBpcyBOb25lOgot
ICAgICAgICByYWlzZSBFeHRlbnNpb25QYXJzaW5nRXhjZXB0aW9uKCdObyB2YWxpZCBwYXJhbWV0
ZXIgbmFtZSBmb3VuZCcpCi0KLSAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3Rh
dGUpCi0KLSAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmluZyhzdGF0ZSwg
Jz0nKToKLSAgICAgICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIE5vbmUp
Ci0gICAgICAgIHJldHVybgotCi0gICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0
YXRlKQotCi0gICAgIyBUT0RPKHR5b3NoaW5vKTogQWRkIGNvZGUgdG8gdmFsaWRhdGUgdGhhdCBw
YXJzZWQgcGFyYW1fdmFsdWUgaXMgdG9rZW4KLSAgICBwYXJhbV92YWx1ZSA9IGh0dHBfaGVhZGVy
X3V0aWwuY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRlKQotICAgIGlmIHBhcmFt
X3ZhbHVlIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24o
Ci0gICAgICAgICAgICAnTm8gdmFsaWQgcGFyYW1ldGVyIHZhbHVlIGZvdW5kIG9uIHRoZSByaWdo
dC1oYW5kIHNpZGUgb2YgJwotICAgICAgICAgICAgJ3BhcmFtZXRlciAlcicgJSBwYXJhbV9uYW1l
KQotCi0gICAgZGVmaW5pdGlvbi5hZGRfcGFyYW1ldGVyKHBhcmFtX25hbWUsIHBhcmFtX3ZhbHVl
KQotCi0KLWRlZiBfcGFyc2VfZXh0ZW5zaW9uKHN0YXRlKToKLSAgICBleHRlbnNpb25fdG9rZW4g
PSBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfdG9rZW4oc3RhdGUpCi0gICAgaWYgZXh0ZW5zaW9u
X3Rva2VuIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBOb25lCi0KLSAgICBleHRlbnNpb24gPSBF
eHRlbnNpb25QYXJhbWV0ZXIoZXh0ZW5zaW9uX3Rva2VuKQotCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX2x3c2VzKHN0YXRlKQotCi0gICAgICAgIGlm
IG5vdCBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfc3RyaW5nKHN0YXRlLCAnOycpOgotICAgICAg
ICAgICAgYnJlYWsKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3Rh
dGUpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX3BhcnNlX2V4dGVuc2lvbl9wYXJhbShz
dGF0ZSwgZXh0ZW5zaW9uKQotICAgICAgICBleGNlcHQgRXh0ZW5zaW9uUGFyc2luZ0V4Y2VwdGlv
biwgZToKLSAgICAgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBwYXJhbWV0ZXIgZm9yICVyICglciknICUKLSAg
ICAgICAgICAgICAgICAoZXh0ZW5zaW9uX3Rva2VuLCBlKSkKLQotICAgIHJldHVybiBleHRlbnNp
b24KLQotCi1kZWYgcGFyc2VfZXh0ZW5zaW9ucyhkYXRhKToKLSAgICAiIiJQYXJzZXMgU2VjLVdl
YlNvY2tldC1FeHRlbnNpb25zIGhlYWRlciB2YWx1ZSByZXR1cm5zIGEgbGlzdCBvZgotICAgIEV4
dGVuc2lvblBhcmFtZXRlciBvYmplY3RzLgotCi0gICAgTGVhZGluZyBMV1NlcyBtdXN0IGJlIHRy
aW1tZWQuCi0gICAgIiIiCi0KLSAgICBzdGF0ZSA9IGh0dHBfaGVhZGVyX3V0aWwuUGFyc2luZ1N0
YXRlKGRhdGEpCi0KLSAgICBleHRlbnNpb25fbGlzdCA9IFtdCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgZXh0ZW5zaW9uID0gX3BhcnNlX2V4dGVuc2lvbihzdGF0ZSkKLSAgICAgICAgaWYgZXh0
ZW5zaW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZXh0ZW5zaW9uX2xpc3QuYXBwZW5kKGV4
dGVuc2lvbikKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUp
Ci0KLSAgICAgICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgotICAg
ICAgICAgICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1l
X3N0cmluZyhzdGF0ZSwgJywnKToKLSAgICAgICAgICAgIHJhaXNlIEV4dGVuc2lvblBhcnNpbmdF
eGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ0ZhaWxlZCB0byBwYXJzZSBTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnMgaGVhZGVyOiAnCi0gICAgICAgICAgICAgICAgJ0V4cGVjdGVkIGEgY29tbWEg
YnV0IGZvdW5kICVyJyAlCi0gICAgICAgICAgICAgICAgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0
YXRlKSkKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0K
LSAgICBpZiBsZW4oZXh0ZW5zaW9uX2xpc3QpID09IDA6Ci0gICAgICAgIHJhaXNlIEV4dGVuc2lv
blBhcnNpbmdFeGNlcHRpb24oCi0gICAgICAgICAgICAnTm8gdmFsaWQgZXh0ZW5zaW9uIGVudHJ5
IGZvdW5kJykKLQotICAgIHJldHVybiBleHRlbnNpb25fbGlzdAotCi0KLWRlZiBmb3JtYXRfZXh0
ZW5zaW9uKGV4dGVuc2lvbik6Ci0gICAgIiIiRm9ybWF0cyBhbiBFeHRlbnNpb25QYXJhbWV0ZXIg
b2JqZWN0LiIiIgotCi0gICAgZm9ybWF0dGVkX3BhcmFtcyA9IFtleHRlbnNpb24ubmFtZSgpXQot
ICAgIGZvciBwYXJhbV9uYW1lLCBwYXJhbV92YWx1ZSBpbiBleHRlbnNpb24uZ2V0X3BhcmFtZXRl
cnMoKToKLSAgICAgICAgaWYgcGFyYW1fdmFsdWUgaXMgTm9uZToKLSAgICAgICAgICAgIGZvcm1h
dHRlZF9wYXJhbXMuYXBwZW5kKHBhcmFtX25hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBxdW90ZWRfdmFsdWUgPSBodHRwX2hlYWRlcl91dGlsLnF1b3RlX2lmX25lY2Vzc2FyeShwYXJh
bV92YWx1ZSkKLSAgICAgICAgICAgIGZvcm1hdHRlZF9wYXJhbXMuYXBwZW5kKCclcz0lcycgJSAo
cGFyYW1fbmFtZSwgcXVvdGVkX3ZhbHVlKSkKLSAgICByZXR1cm4gJzsgJy5qb2luKGZvcm1hdHRl
ZF9wYXJhbXMpCi0KLQotZGVmIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbl9saXN0KToKLSAg
ICAiIiJGb3JtYXRzIGEgbGlzdCBvZiBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cy4iIiIKLQot
ICAgIGZvcm1hdHRlZF9leHRlbnNpb25fbGlzdCA9IFtdCi0gICAgZm9yIGV4dGVuc2lvbiBpbiBl
eHRlbnNpb25fbGlzdDoKLSAgICAgICAgZm9ybWF0dGVkX2V4dGVuc2lvbl9saXN0LmFwcGVuZChm
b3JtYXRfZXh0ZW5zaW9uKGV4dGVuc2lvbikpCi0gICAgcmV0dXJuICcsICcuam9pbihmb3JtYXR0
ZWRfZXh0ZW5zaW9uX2xpc3QpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJz
b2NrZXQvZGlzcGF0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YzkxZTBj
OTBlNzQyOWQwZjc2MGMwZTljN2I5ODEyMDQwOTJhMGEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Rpc3BhdGNo
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzkzICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTIsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LSIiIkRpc3BhdGNoIFdlYlNvY2tldCByZXF1ZXN0LgotIiIiCi0KLQotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCBvcwotaW1wb3J0IHJlCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21t
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hha2UKLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBtc2d1dGlsCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgbXV4Ci1m
cm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldCBp
bXBvcnQgdXRpbAotCi0KLV9TT1VSQ0VfUEFUSF9QQVRURVJOID0gcmUuY29tcGlsZShyJyg/aSlf
d3NoXC5weSQnKQotX1NPVVJDRV9TVUZGSVggPSAnX3dzaC5weScKLV9ET19FWFRSQV9IQU5EU0hB
S0VfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlJwotX1RSQU5T
RkVSX0RBVEFfSEFORExFUl9OQU1FID0gJ3dlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YScKLV9QQVNT
SVZFX0NMT1NJTkdfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSA9ICgKLSAgICAnd2ViX3NvY2tldF9w
YXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlJykKLQotCi1jbGFzcyBEaXNwYXRjaEV4Y2VwdGlvbihF
eGNlcHRpb24pOgotICAgICIiIkV4Y2VwdGlvbiBpbiBkaXNwYXRjaGluZyBXZWJTb2NrZXQgcmVx
dWVzdC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXM9Y29tbW9uLkhU
VFBfU1RBVFVTX05PVF9GT1VORCk6Ci0gICAgICAgIHN1cGVyKERpc3BhdGNoRXhjZXB0aW9uLCBz
ZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWRl
ZiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIocmVxdWVzdCk6Ci0g
ICAgIiIiRGVmYXVsdCB3ZWJfc29ja2V0X3Bhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UgaGFuZGxl
ci4iIiIKLQotICAgIHJldHVybiBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFLCAnJwotCi0K
LWRlZiBfbm9ybWFsaXplX3BhdGgocGF0aCk6Ci0gICAgIiIiTm9ybWFsaXplIHBhdGguCi0KLSAg
ICBBcmdzOgotICAgICAgICBwYXRoOiB0aGUgcGF0aCB0byBub3JtYWxpemUuCi0KLSAgICBQYXRo
IGlzIGNvbnZlcnRlZCB0byB0aGUgYWJzb2x1dGUgcGF0aC4KLSAgICBUaGUgaW5wdXQgcGF0aCBj
YW4gdXNlIGVpdGhlciAnXFwnIG9yICcvJyBhcyB0aGUgc2VwYXJhdG9yLgotICAgIFRoZSBub3Jt
YWxpemVkIHBhdGggYWx3YXlzIHVzZXMgJy8nIHJlZ2FyZGxlc3Mgb2YgdGhlIHBsYXRmb3JtLgot
ICAgICIiIgotCi0gICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCBvcy5wYXRoLnNlcCkKLSAg
ICBwYXRoID0gb3MucGF0aC5yZWFscGF0aChwYXRoKQotICAgIHBhdGggPSBwYXRoLnJlcGxhY2Uo
J1xcJywgJy8nKQotICAgIHJldHVybiBwYXRoCi0KLQotZGVmIF9jcmVhdGVfcGF0aF90b19yZXNv
dXJjZV9jb252ZXJ0ZXIoYmFzZV9kaXIpOgotICAgICIiIlJldHVybnMgYSBmdW5jdGlvbiB0aGF0
IGNvbnZlcnRzIHRoZSBwYXRoIG9mIGEgV2ViU29ja2V0IGhhbmRsZXIgc291cmNlCi0gICAgZmls
ZSB0byBhIHJlc291cmNlIHN0cmluZyBieSByZW1vdmluZyB0aGUgcGF0aCB0byB0aGUgYmFzZSBk
aXJlY3RvcnkgZnJvbQotICAgIGl0cyBoZWFkLCByZW1vdmluZyBfU09VUkNFX1NVRkZJWCBmcm9t
IGl0cyB0YWlsLCBhbmQgcmVwbGFjaW5nIHBhdGgKLSAgICBzZXBhcmF0b3JzIGluIGl0IHdpdGgg
Jy8nLgotCi0gICAgQXJnczoKLSAgICAgICAgYmFzZV9kaXI6IHRoZSBwYXRoIHRvIHRoZSBiYXNl
IGRpcmVjdG9yeS4KLSAgICAiIiIKLQotICAgIGJhc2VfZGlyID0gX25vcm1hbGl6ZV9wYXRoKGJh
c2VfZGlyKQotCi0gICAgYmFzZV9sZW4gPSBsZW4oYmFzZV9kaXIpCi0gICAgc3VmZml4X2xlbiA9
IGxlbihfU09VUkNFX1NVRkZJWCkKLQotICAgIGRlZiBjb252ZXJ0ZXIocGF0aCk6Ci0gICAgICAg
IGlmIG5vdCBwYXRoLmVuZHN3aXRoKF9TT1VSQ0VfU1VGRklYKToKLSAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgICMgX25vcm1hbGl6ZV9wYXRoIG11c3Qgbm90IGJlIHVzZWQgYmVjYXVz
ZSByZXNvbHZpbmcgc3ltbGluayBicmVha3MKLSAgICAgICAgIyBmb2xsb3dpbmcgcGF0aCBjaGVj
ay4KLSAgICAgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCAnLycpCi0gICAgICAgIGlmIG5v
dCBwYXRoLnN0YXJ0c3dpdGgoYmFzZV9kaXIpOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAg
ICAgICAgcmV0dXJuIHBhdGhbYmFzZV9sZW46LXN1ZmZpeF9sZW5dCi0KLSAgICByZXR1cm4gY29u
dmVydGVyCi0KLQotZGVmIF9lbnVtZXJhdGVfaGFuZGxlcl9maWxlX3BhdGhzKGRpcmVjdG9yeSk6
Ci0gICAgIiIiUmV0dXJucyBhIGdlbmVyYXRvciB0aGF0IGVudW1lcmF0ZXMgV2ViU29ja2V0IEhh
bmRsZXIgc291cmNlIGZpbGUgbmFtZXMKLSAgICBpbiB0aGUgZ2l2ZW4gZGlyZWN0b3J5LgotICAg
ICIiIgotCi0gICAgZm9yIHJvb3QsIHVudXNlZF9kaXJzLCBmaWxlcyBpbiBvcy53YWxrKGRpcmVj
dG9yeSk6Ci0gICAgICAgIGZvciBiYXNlIGluIGZpbGVzOgotICAgICAgICAgICAgcGF0aCA9IG9z
LnBhdGguam9pbihyb290LCBiYXNlKQotICAgICAgICAgICAgaWYgX1NPVVJDRV9QQVRIX1BBVFRF
Uk4uc2VhcmNoKHBhdGgpOgotICAgICAgICAgICAgICAgIHlpZWxkIHBhdGgKLQotCi1jbGFzcyBf
SGFuZGxlclN1aXRlKG9iamVjdCk6Ci0gICAgIiIiQSBoYW5kbGVyIHN1aXRlIGhvbGRlciBjbGFz
cy4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkb19leHRyYV9oYW5kc2hha2UsIHRyYW5z
ZmVyX2RhdGEsCi0gICAgICAgICAgICAgICAgIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UpOgot
ICAgICAgICBzZWxmLmRvX2V4dHJhX2hhbmRzaGFrZSA9IGRvX2V4dHJhX2hhbmRzaGFrZQotICAg
ICAgICBzZWxmLnRyYW5zZmVyX2RhdGEgPSB0cmFuc2Zlcl9kYXRhCi0gICAgICAgIHNlbGYucGFz
c2l2ZV9jbG9zaW5nX2hhbmRzaGFrZSA9IHBhc3NpdmVfY2xvc2luZ19oYW5kc2hha2UKLQotCi1k
ZWYgX3NvdXJjZV9oYW5kbGVyX2ZpbGUoaGFuZGxlcl9kZWZpbml0aW9uKToKLSAgICAiIiJTb3Vy
Y2UgYSBoYW5kbGVyIGRlZmluaXRpb24gc3RyaW5nLgotCi0gICAgQXJnczoKLSAgICAgICAgaGFu
ZGxlcl9kZWZpbml0aW9uOiBhIHN0cmluZyBjb250YWluaW5nIFB5dGhvbiBzdGF0ZW1lbnRzIHRo
YXQgZGVmaW5lCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaGFuZGxlciBmdW5jdGlvbnMu
Ci0gICAgIiIiCi0KLSAgICBnbG9iYWxfZGljID0ge30KLSAgICB0cnk6Ci0gICAgICAgIGV4ZWMg
aGFuZGxlcl9kZWZpbml0aW9uIGluIGdsb2JhbF9kaWMKLSAgICBleGNlcHQgRXhjZXB0aW9uOgot
ICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignRXJyb3IgaW4gc291cmNpbmcgaGFuZGxl
cjonICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5nZXRfc3RhY2tfdHJh
Y2UoKSkKLSAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBOb25lCi0gICAg
dHJ5OgotICAgICAgICBwYXNzaXZlX2Nsb3NpbmdfaGFuZHNoYWtlX2hhbmRsZXIgPSBfZXh0cmFj
dF9oYW5kbGVyKAotICAgICAgICAgICAgZ2xvYmFsX2RpYywgX1BBU1NJVkVfQ0xPU0lOR19IQU5E
U0hBS0VfSEFORExFUl9OQU1FKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHBhc3Np
dmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlciA9ICgKLSAgICAgICAgICAgIF9kZWZhdWx0X3Bh
c3NpdmVfY2xvc2luZ19oYW5kc2hha2VfaGFuZGxlcikKLSAgICByZXR1cm4gX0hhbmRsZXJTdWl0
ZSgKLSAgICAgICAgX2V4dHJhY3RfaGFuZGxlcihnbG9iYWxfZGljLCBfRE9fRVhUUkFfSEFORFNI
QUtFX0hBTkRMRVJfTkFNRSksCi0gICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2RpYywg
X1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSwKLSAgICAgICAgcGFzc2l2ZV9jbG9zaW5nX2hh
bmRzaGFrZV9oYW5kbGVyKQotCi0KLWRlZiBfZXh0cmFjdF9oYW5kbGVyKGRpYywgbmFtZSk6Ci0g
ICAgIiIiRXh0cmFjdHMgYSBjYWxsYWJsZSB3aXRoIHRoZSBzcGVjaWZpZWQgbmFtZSBmcm9tIHRo
ZSBnaXZlbiBkaWN0aW9uYXJ5Ci0gICAgZGljLgotICAgICIiIgotCi0gICAgaWYgbmFtZSBub3Qg
aW4gZGljOgotICAgICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignJXMgaXMgbm90IGRlZmlu
ZWQuJyAlIG5hbWUpCi0gICAgaGFuZGxlciA9IGRpY1tuYW1lXQotICAgIGlmIG5vdCBjYWxsYWJs
ZShoYW5kbGVyKToKLSAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJyVzIGlzIG5vdCBj
YWxsYWJsZS4nICUgbmFtZSkKLSAgICByZXR1cm4gaGFuZGxlcgotCi0KLWNsYXNzIERpc3BhdGNo
ZXIob2JqZWN0KToKLSAgICAiIiJEaXNwYXRjaGVzIFdlYlNvY2tldCByZXF1ZXN0cy4KLQotICAg
IFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20gcmVzb3VyY2UgbmFtZSB0byBoYW5kbGVy
cy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXygKLSAgICAgICAgc2VsZiwgcm9vdF9kaXIs
IHNjYW5fZGlyPU5vbmUsCi0gICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI9
VHJ1ZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgcm9vdF9kaXI6IFRoZSBkaXJlY3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZp
bml0aW9uIGZpbGVzIGFyZQotICAgICAgICAgICAgICAgICAgICAgIHBsYWNlZC4KLSAgICAgICAg
ICAgIHNjYW5fZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJlIGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxl
cyBhcmUKLSAgICAgICAgICAgICAgICAgICAgICBzZWFyY2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBh
IGRpcmVjdG9yeSB1bmRlciByb290X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRp
bmcgcm9vdF9kaXIgaXRzZWxmLiAgSWYgc2Nhbl9kaXIgaXMgTm9uZSwKLSAgICAgICAgICAgICAg
ICAgICAgICByb290X2RpciBpcyB1c2VkIGFzIHNjYW5fZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNl
ZnVsCi0gICAgICAgICAgICAgICAgICAgICAgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIHJvb3Rf
ZGlyIGNvbnRhaW5zIG1hbnkKLSAgICAgICAgICAgICAgICAgICAgICBzdWJkaXJlY3Rvcmllcy4K
LSAgICAgICAgICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXI6IFNjYW5zIGhhbmRs
ZXIgZmlsZXMgZXZlbiBpZiB0aGVpcgotICAgICAgICAgICAgICAgICAgICAgIGNhbm9uaWNhbCBw
YXRoIGlzIG5vdCB1bmRlciByb290X2Rpci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5f
bG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5faGFu
ZGxlcl9zdWl0ZV9tYXAgPSB7fQotICAgICAgICBzZWxmLl9zb3VyY2Vfd2FybmluZ3MgPSBbXQot
ICAgICAgICBpZiBzY2FuX2RpciBpcyBOb25lOgotICAgICAgICAgICAgc2Nhbl9kaXIgPSByb290
X2RpcgotICAgICAgICBpZiBub3Qgb3MucGF0aC5yZWFscGF0aChzY2FuX2Rpcikuc3RhcnRzd2l0
aCgKLSAgICAgICAgICAgICAgICBvcy5wYXRoLnJlYWxwYXRoKHJvb3RfZGlyKSk6Ci0gICAgICAg
ICAgICByYWlzZSBEaXNwYXRjaEV4Y2VwdGlvbignc2Nhbl9kaXI6JXMgbXVzdCBiZSBhIGRpcmVj
dG9yeSB1bmRlciAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncm9vdF9k
aXI6JXMuJyAlIChzY2FuX2Rpciwgcm9vdF9kaXIpKQotICAgICAgICBzZWxmLl9zb3VyY2VfaGFu
ZGxlcl9maWxlc19pbl9kaXIoCi0gICAgICAgICAgICByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpCi0KLSAgICBkZWYgYWRkX3Jlc291cmNlX3BhdGhf
YWxpYXMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxpYXNfcmVzb3Vy
Y2VfcGF0aCwgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCk6Ci0gICAgICAgICIiIkFkZCByZXNvdXJj
ZSBwYXRoIGFsaWFzLgotCi0gICAgICAgIE9uY2UgYWRkZWQsIHJlcXVlc3QgdG8gYWxpYXNfcmVz
b3VyY2VfcGF0aCB3b3VsZCBiZSBoYW5kbGVkIGJ5Ci0gICAgICAgIGhhbmRsZXIgcmVnaXN0ZXJl
ZCBmb3IgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aC4KLQotICAgICAgICBBcmdzOgotICAgICAgICAg
ICAgYWxpYXNfcmVzb3VyY2VfcGF0aDogYWxpYXMgcmVzb3VyY2UgcGF0aAotICAgICAgICAgICAg
ZXhpc3RpbmdfcmVzb3VyY2VfcGF0aDogZXhpc3RpbmcgcmVzb3VyY2UgcGF0aAotICAgICAgICAi
IiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IHNlbGYuX2hhbmRs
ZXJfc3VpdGVfbWFwW2V4aXN0aW5nX3Jlc291cmNlX3BhdGhdCi0gICAgICAgICAgICBzZWxmLl9o
YW5kbGVyX3N1aXRlX21hcFthbGlhc19yZXNvdXJjZV9wYXRoXSA9IGhhbmRsZXJfc3VpdGUKLSAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRp
b24oJ05vIGhhbmRsZXIgZm9yOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCkKLQotICAgIGRlZiBzb3VyY2Vfd2FybmluZ3Mo
c2VsZik6Ci0gICAgICAgICIiIlJldHVybiB3YXJuaW5ncyBpbiBzb3VyY2luZyBoYW5kbGVycy4i
IiIKLQotICAgICAgICByZXR1cm4gc2VsZi5fc291cmNlX3dhcm5pbmdzCi0KLSAgICBkZWYgZG9f
ZXh0cmFfaGFuZHNoYWtlKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJEbyBleHRyYSBjaGVj
a2luZyBpbiBXZWJTb2NrZXQgaGFuZHNoYWtlLgotCi0gICAgICAgIFNlbGVjdCBhIGhhbmRsZXIg
YmFzZWQgb24gcmVxdWVzdC51cmkgYW5kIGNhbGwgaXRzCi0gICAgICAgIHdlYl9zb2NrZXRfZG9f
ZXh0cmFfaGFuZHNoYWtlIGZ1bmN0aW9uLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBy
ZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAg
ICAgRGlzcGF0Y2hFeGNlcHRpb246IHdoZW4gaGFuZGxlciB3YXMgbm90IGZvdW5kCi0gICAgICAg
ICAgICBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uOiB3aGVuIHVzZXIgaGFuZGxlciBhYm9ydCBjb25u
ZWN0aW9uCi0gICAgICAgICAgICBIYW5kc2hha2VFeGNlcHRpb246IHdoZW4gb3BlbmluZyBoYW5k
c2hha2UgZmFpbGVkCi0gICAgICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxm
LmdldF9oYW5kbGVyX3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRs
ZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXhjZXB0aW9uKCdO
byBoYW5kbGVyIGZvcjogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSkKLSAgICAgICAgZG9fZXh0
cmFfaGFuZHNoYWtlXyA9IGhhbmRsZXJfc3VpdGUuZG9fZXh0cmFfaGFuZHNoYWtlCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIGRvX2V4dHJhX2hhbmRzaGFrZV8ocmVxdWVzdCkKLSAgICAgICAg
ZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAg
IyBSZS1yYWlzZSB0byB0ZWxsIHRoZSBjYWxsZXIgb2YgdGhpcyBmdW5jdGlvbiB0byBmaW5pc2gg
dGhpcwotICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhbnkgZXJyb3Iu
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgdXRpbC5nZXRfc3RhY2tfdHJh
Y2UoKSkKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0g
ICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgICAgICclcyByYWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlICgKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlKSwKLSAgICAgICAgICAg
ICAgICAgICAgZSkKLSAgICAgICAgICAgIHJhaXNlIGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRp
b24oZSwgY29tbW9uLkhUVFBfU1RBVFVTX0ZPUkJJRERFTikKLQotICAgIGRlZiB0cmFuc2Zlcl9k
YXRhKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAiIiJMZXQgYSBoYW5kbGVyIHRyYW5zZmVyX2Rh
dGEgd2l0aCBhIFdlYlNvY2tldCBjbGllbnQuCi0KLSAgICAgICAgU2VsZWN0IGEgaGFuZGxlciBi
YXNlZCBvbiByZXF1ZXN0LndzX3Jlc291cmNlIGFuZCBjYWxsIGl0cwotICAgICAgICB3ZWJfc29j
a2V0X3RyYW5zZmVyX2RhdGEgZnVuY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAg
IHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAg
ICAgICBEaXNwYXRjaEV4Y2VwdGlvbjogd2hlbiBoYW5kbGVyIHdhcyBub3QgZm91bmQKLSAgICAg
ICAgICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb246IHdoZW4gdXNlciBoYW5kbGVyIGFib3J0IGNv
bm5lY3Rpb24KLSAgICAgICAgIiIiCi0KLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogVGVybWlu
YXRlIHVuZGVybHlpbmcgVENQIGNvbm5lY3Rpb24gaWYgcG9zc2libGUuCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIGlmIG11eC51c2VfbXV4KHJlcXVlc3QpOgotICAgICAgICAgICAgICAgIG11
eC5zdGFydChyZXF1ZXN0LCBzZWxmKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBoYW5kbGVyX3N1aXRlID0gc2VsZi5nZXRfaGFuZGxlcl9zdWl0ZShyZXF1ZXN0LndzX3Jlc291
cmNlKQotICAgICAgICAgICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNlcHRpb24oJ05vIGhhbmRsZXIgZm9yOiAlcicg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lndz
X3Jlc291cmNlKQotICAgICAgICAgICAgICAgIHRyYW5zZmVyX2RhdGFfID0gaGFuZGxlcl9zdWl0
ZS50cmFuc2Zlcl9kYXRhCi0gICAgICAgICAgICAgICAgdHJhbnNmZXJfZGF0YV8ocmVxdWVzdCkK
LQotICAgICAgICAgICAgaWYgbm90IHJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAg
ICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigpCi0gICAgICAgICMg
Q2F0Y2ggbm9uLWNyaXRpY2FsIGV4Y2VwdGlvbnMgdGhlIGhhbmRsZXIgZGlkbid0IGhhbmRsZS4K
LSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLCBlOgotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkp
Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQgbXNndXRpbC5CYWRPcGVyYXRpb25F
eGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAg
ICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAg
ICAgICAgY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUikKLSAgICAgICAgZXhj
ZXB0IG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgIyBJbnZh
bGlkRnJhbWVFeGNlcHRpb24gbXVzdCBiZSBjYXVnaHQgYmVmb3JlCi0gICAgICAgICAgICAjIENv
bm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uIHRoYXQgY2F0Y2hlcyBJbnZhbGlkRnJhbWVFeGNl
cHRpb24uCi0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oY29tbW9uLlNUQVRVU19QUk9U
T0NPTF9FUlJPUikKLSAgICAgICAgZXhjZXB0IG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2Vw
dGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMnLCBlKQotICAgICAg
ICAgICAgcmVxdWVzdC53c19zdHJlYW0uY2xvc2VfY29ubmVjdGlvbihjb21tb24uU1RBVFVTX1VO
U1VQUE9SVEVEX0RBVEEpCi0gICAgICAgIGV4Y2VwdCBzdHJlYW0uSW52YWxpZFVURjhFeGNlcHRp
b24sIGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAg
ICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24oCi0gICAgICAgICAgICAgICAg
Y29tbW9uLlNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSkKLSAgICAgICAgZXhjZXB0
IG1zZ3V0aWwuQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICBz
ZWxmLl9sb2dnZXIuZGVidWcoJyVzJywgZSkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgICMgQW55IG90aGVyIGV4Y2VwdGlvbnMgYXJlIGZvcndhcmRlZCB0byB0aGUg
Y2FsbGVyIG9mIHRoaXMKLSAgICAgICAgICAgICMgZnVuY3Rpb24uCi0gICAgICAgICAgICB1dGls
LnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJyVzIHJhaXNl
ZCBleGNlcHRpb24gZm9yICVzOiAnICUgKAotICAgICAgICAgICAgICAgICAgICBfVFJBTlNGRVJf
REFUQV9IQU5ETEVSX05BTUUsIHJlcXVlc3Qud3NfcmVzb3VyY2UpLAotICAgICAgICAgICAgICAg
IGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgZGVmIHBhc3NpdmVfY2xvc2luZ19oYW5kc2hh
a2Uoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgICIiIlByZXBhcmUgY29kZSBhbmQgcmVhc29uIGZv
ciByZXNwb25kaW5nIGNsaWVudCBpbml0aWF0ZWQgY2xvc2luZwotICAgICAgICBoYW5kc2hha2Uu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGhhbmRsZXJfc3VpdGUgPSBzZWxmLmdldF9oYW5kbGVy
X3N1aXRlKHJlcXVlc3Qud3NfcmVzb3VyY2UpCi0gICAgICAgIGlmIGhhbmRsZXJfc3VpdGUgaXMg
Tm9uZToKLSAgICAgICAgICAgIHJldHVybiBfZGVmYXVsdF9wYXNzaXZlX2Nsb3NpbmdfaGFuZHNo
YWtlX2hhbmRsZXIocmVxdWVzdCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUucGFzc2l2
ZV9jbG9zaW5nX2hhbmRzaGFrZShyZXF1ZXN0KQotCi0gICAgZGVmIGdldF9oYW5kbGVyX3N1aXRl
KHNlbGYsIHJlc291cmNlKToKLSAgICAgICAgIiIiUmV0cmlldmVzIHR3byBoYW5kbGVycyAob25l
IGZvciBleHRyYSBoYW5kc2hha2UgcHJvY2Vzc2luZywgYW5kIG9uZQotICAgICAgICBmb3IgZGF0
YSB0cmFuc2ZlcikgZm9yIHRoZSBnaXZlbiByZXF1ZXN0IGFzIGEgSGFuZGxlclN1aXRlIG9iamVj
dC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZnJhZ21lbnQgPSBOb25lCi0gICAgICAgIGlmICcj
JyBpbiByZXNvdXJjZToKLSAgICAgICAgICAgIHJlc291cmNlLCBmcmFnbWVudCA9IHJlc291cmNl
LnNwbGl0KCcjJywgMSkKLSAgICAgICAgaWYgJz8nIGluIHJlc291cmNlOgotICAgICAgICAgICAg
cmVzb3VyY2UgPSByZXNvdXJjZS5zcGxpdCgnPycsIDEpWzBdCi0gICAgICAgIGhhbmRsZXJfc3Vp
dGUgPSBzZWxmLl9oYW5kbGVyX3N1aXRlX21hcC5nZXQocmVzb3VyY2UpCi0gICAgICAgIGlmIGhh
bmRsZXJfc3VpdGUgYW5kIGZyYWdtZW50OgotICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFeGNl
cHRpb24oJ0ZyYWdtZW50IGlkZW50aWZpZXJzIE1VU1QgTk9UIGJlIHVzZWQgb24gJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1dlYlNvY2tldCBVUklzJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5IVFRQX1NUQVRVU19CQURfUkVRVUVT
VCkKLSAgICAgICAgcmV0dXJuIGhhbmRsZXJfc3VpdGUKLQotICAgIGRlZiBfc291cmNlX2hhbmRs
ZXJfZmlsZXNfaW5fZGlyKAotICAgICAgICBzZWxmLCByb290X2Rpciwgc2Nhbl9kaXIsIGFsbG93
X2hhbmRsZXJzX291dHNpZGVfcm9vdF9kaXIpOgotICAgICAgICAiIiJTb3VyY2UgYWxsIHRoZSBo
YW5kbGVyIHNvdXJjZSBmaWxlcyBpbiB0aGUgc2Nhbl9kaXIgZGlyZWN0b3J5LgotCi0gICAgICAg
IFRoZSByZXNvdXJjZSBwYXRoIGlzIGRldGVybWluZWQgcmVsYXRpdmUgdG8gcm9vdF9kaXIuCi0g
ICAgICAgICIiIgotCi0gICAgICAgICMgV2UgYnVpbGQgYSBtYXAgZnJvbSByZXNvdXJjZSB0byBo
YW5kbGVyIGNvZGUgYXNzdW1pbmcgdGhhdCB0aGVyZSdzCi0gICAgICAgICMgb25seSBvbmUgcGF0
aCBmcm9tIHJvb3RfZGlyIHRvIHNjYW5fZGlyIGFuZCBpdCBjYW4gYmUgb2J0YWluZWQgYnkKLSAg
ICAgICAgIyBjb21wYXJpbmcgcmVhbHBhdGggb2YgdGhlbS4KLQotICAgICAgICAjIEhlcmUgd2Ug
Y2Fubm90IHVzZSBhYnNwYXRoLiBTZWUKLSAgICAgICAgIyBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MzE2MDMKLQotICAgICAgICBjb252ZXJ0ID0gX2NyZWF0ZV9wYXRo
X3RvX3Jlc291cmNlX2NvbnZlcnRlcihyb290X2RpcikKLSAgICAgICAgc2Nhbl9yZWFscGF0aCA9
IG9zLnBhdGgucmVhbHBhdGgoc2Nhbl9kaXIpCi0gICAgICAgIHJvb3RfcmVhbHBhdGggPSBvcy5w
YXRoLnJlYWxwYXRoKHJvb3RfZGlyKQotICAgICAgICBmb3IgcGF0aCBpbiBfZW51bWVyYXRlX2hh
bmRsZXJfZmlsZV9wYXRocyhzY2FuX3JlYWxwYXRoKToKLSAgICAgICAgICAgIGlmIChub3QgYWxs
b3dfaGFuZGxlcnNfb3V0c2lkZV9yb290X2RpciBhbmQKLSAgICAgICAgICAgICAgICAobm90IG9z
LnBhdGgucmVhbHBhdGgocGF0aCkuc3RhcnRzd2l0aChyb290X3JlYWxwYXRoKSkpOgotICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0Nhbm9u
aWNhbCBwYXRoIG9mICVzIGlzIG5vdCB1bmRlciByb290IGRpcmVjdG9yeScgJQotICAgICAgICAg
ICAgICAgICAgICBwYXRoKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgaGFuZGxlcl9zdWl0ZSA9IF9zb3VyY2VfaGFuZGxlcl9maWxl
KG9wZW4ocGF0aCkucmVhZCgpKQotICAgICAgICAgICAgZXhjZXB0IERpc3BhdGNoRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV93YXJuaW5ncy5hcHBlbmQoJyVzOiAl
cycgJSAocGF0aCwgZSkpCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJl
c291cmNlID0gY29udmVydChwYXRoKQotICAgICAgICAgICAgaWYgcmVzb3VyY2UgaXMgTm9uZToK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAg
ICdQYXRoIHRvIHJlc291cmNlIGNvbnZlcnNpb24gb24gJXMgZmFpbGVkJyAlIHBhdGgpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZXJfc3VpdGVfbWFwW2Nv
bnZlcnQocGF0aCldID0gaGFuZGxlcl9zdWl0ZQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvZXh0ZW5zaW9ucy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggNDlhOWZkY2Y5NDc5ODZhMWI0Y2FjYmU0NmYzZDUzZTAxNThkYjdjYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJz
b2NrZXQvZXh0ZW5zaW9ucy5weQorKysgL2Rldi9udWxsCkBAIC0xLDg4NSArMCwwIEBACi0jIENv
cHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
Ci0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3
cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhF
IENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRF
RCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMg
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaHR0cF9o
ZWFkZXJfdXRpbCBpbXBvcnQgcXVvdGVfaWZfbmVjZXNzYXJ5Ci0KLQotIyBUaGUgbGlzdCBvZiBh
dmFpbGFibGUgc2VydmVyIHNpZGUgZXh0ZW5zaW9uIHByb2Nlc3NvciBjbGFzc2VzLgotX2F2YWls
YWJsZV9wcm9jZXNzb3JzID0ge30KLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFtZXMgPSBbXQot
Ci0KLWNsYXNzIEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZShvYmplY3QpOgotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdl
dF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAot
ICAgICAgICBzZWxmLl9hY3RpdmUgPSBUcnVlCi0KLSAgICBkZWYgcmVxdWVzdChzZWxmKToKLSAg
ICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3QKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAg
ICByZXR1cm4gTm9uZQotCi0gICAgZGVmIGNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJv
Y2Vzc29ycyhzZWxmLCBwcm9jZXNzb3JzKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldF9h
Y3RpdmUoc2VsZiwgYWN0aXZlKToKLSAgICAgICAgc2VsZi5fYWN0aXZlID0gYWN0aXZlCi0KLSAg
ICBkZWYgaXNfYWN0aXZlKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5fYWN0aXZlCi0KLSAg
ICBkZWYgX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBOb25lCi0KLSAgICBkZWYgZ2V0X2V4dGVuc2lvbl9yZXNwb25zZShzZWxmKToKLSAgICAg
ICAgaWYgbm90IHNlbGYuX2FjdGl2ZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
RXh0ZW5zaW9uICVzIGlzIGRlYWN0aXZhdGVkJywgc2VsZi5uYW1lKCkpCi0gICAgICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgICAgIHJlc3BvbnNlID0gc2VsZi5fZ2V0X2V4dGVuc2lvbl9yZXNw
b25zZV9pbnRlcm5hbCgpCi0gICAgICAgIGlmIHJlc3BvbnNlIGlzIE5vbmU6Ci0gICAgICAgICAg
ICBzZWxmLl9hY3RpdmUgPSBGYWxzZQotICAgICAgICByZXR1cm4gcmVzcG9uc2UKLQotICAgIGRl
ZiBfc2V0dXBfc3RyZWFtX29wdGlvbnNfaW50ZXJuYWwoc2VsZiwgc3RyZWFtX29wdGlvbnMpOgot
ICAgICAgICBwYXNzCi0KLSAgICBkZWYgc2V0dXBfc3RyZWFtX29wdGlvbnMoc2VsZiwgc3RyZWFt
X29wdGlvbnMpOgotICAgICAgICBpZiBzZWxmLl9hY3RpdmU6Ci0gICAgICAgICAgICBzZWxmLl9z
ZXR1cF9zdHJlYW1fb3B0aW9uc19pbnRlcm5hbChzdHJlYW1fb3B0aW9ucykKLQotCi1kZWYgX2xv
Z19vdXRnb2luZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgbG9nZ2VyLCBvcmlnaW5hbF9i
eXRlcywgZmlsdGVyZWRfYnl0ZXMsIGF2ZXJhZ2VfcmF0aW8pOgotICAgICMgUHJpbnQgaW5mIHdo
ZW4gcmF0aW8gaXMgbm90IGF2YWlsYWJsZS4KLSAgICByYXRpbyA9IGZsb2F0KCdpbmYnKQotICAg
IGlmIG9yaWdpbmFsX2J5dGVzICE9IDA6Ci0gICAgICAgIHJhdGlvID0gZmxvYXQoZmlsdGVyZWRf
Ynl0ZXMpIC8gb3JpZ2luYWxfYnl0ZXMKLQotICAgIGxvZ2dlci5kZWJ1ZygnT3V0Z29pbmcgY29t
cHJlc3Npb24gcmF0aW86ICVmIChhdmVyYWdlOiAlZiknICUKLSAgICAgICAgICAgIChyYXRpbywg
YXZlcmFnZV9yYXRpbykpCi0KLQotZGVmIF9sb2dfaW5jb21pbmdfY29tcHJlc3Npb25fcmF0aW8o
Ci0gICAgICAgIGxvZ2dlciwgcmVjZWl2ZWRfYnl0ZXMsIGZpbHRlcmVkX2J5dGVzLCBhdmVyYWdl
X3JhdGlvKToKLSAgICAjIFByaW50IGluZiB3aGVuIHJhdGlvIGlzIG5vdCBhdmFpbGFibGUuCi0g
ICAgcmF0aW8gPSBmbG9hdCgnaW5mJykKLSAgICBpZiBmaWx0ZXJlZF9ieXRlcyAhPSAwOgotICAg
ICAgICByYXRpbyA9IGZsb2F0KHJlY2VpdmVkX2J5dGVzKSAvIGZpbHRlcmVkX2J5dGVzCi0KLSAg
ICBsb2dnZXIuZGVidWcoJ0luY29taW5nIGNvbXByZXNzaW9uIHJhdGlvOiAlZiAoYXZlcmFnZTog
JWYpJyAlCi0gICAgICAgICAgICAocmF0aW8sIGF2ZXJhZ2VfcmF0aW8pKQotCi0KLWRlZiBfcGFy
c2Vfd2luZG93X2JpdHMoYml0cyk6Ci0gICAgIiIiUmV0dXJuIHBhcnNlZCBpbnRlZ2VyIHZhbHVl
IGlmZiB0aGUgZ2l2ZW4gc3RyaW5nIGNvbmZvcm1zIHRvIHRoZQotICAgIGdyYW1tYXIgb2YgdGhl
IHdpbmRvdyBiaXRzIGV4dGVuc2lvbiBwYXJhbWV0ZXJzLgotICAgICIiIgotCi0gICAgaWYgYml0
cyBpcyBOb25lOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdWYWx1ZSBpcyByZXF1aXJlZCcp
Ci0KLSAgICAjIEZvciBub24gaW50ZWdlciB2YWx1ZXMgc3VjaCBhcyAiMTAuMCIsIFZhbHVlRXJy
b3Igd2lsbCBiZSByYWlzZWQuCi0gICAgaW50X2JpdHMgPSBpbnQoYml0cykKLQotICAgICMgRmly
c3QgY29uZGl0aW9uIGlzIHRvIGRyb3AgbGVhZGluZyB6ZXJvIGNhc2UgZS5nLiAiMDgiLgotICAg
IGlmIGJpdHMgIT0gc3RyKGludF9iaXRzKSBvciBpbnRfYml0cyA8IDggb3IgaW50X2JpdHMgPiAx
NToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignSW52YWxpZCB2YWx1ZTogJXInICUgYml0cykK
LQotICAgIHJldHVybiBpbnRfYml0cwotCi0KLWNsYXNzIF9BdmVyYWdlUmF0aW9DYWxjdWxhdG9y
KG9iamVjdCk6Ci0gICAgIiIiU3RvcmVzIHRvdGFsIGJ5dGVzIG9mIG9yaWdpbmFsIGFuZCByZXN1
bHQgZGF0YSwgYW5kIGNhbGN1bGF0ZXMgYXZlcmFnZQotICAgIHJlc3VsdCAvIG9yaWdpbmFsIHJh
dGlvLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl90
b3RhbF9vcmlnaW5hbF9ieXRlcyA9IDAKLSAgICAgICAgc2VsZi5fdG90YWxfcmVzdWx0X2J5dGVz
ID0gMAotCi0gICAgZGVmIGFkZF9vcmlnaW5hbF9ieXRlcyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAg
IHNlbGYuX3RvdGFsX29yaWdpbmFsX2J5dGVzICs9IHZhbHVlCi0KLSAgICBkZWYgYWRkX3Jlc3Vs
dF9ieXRlcyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3RvdGFsX3Jlc3VsdF9ieXRlcyAr
PSB2YWx1ZQotCi0gICAgZGVmIGdldF9hdmVyYWdlX3JhdGlvKHNlbGYpOgotICAgICAgICBpZiBz
ZWxmLl90b3RhbF9vcmlnaW5hbF9ieXRlcyAhPSAwOgotICAgICAgICAgICAgcmV0dXJuIChmbG9h
dChzZWxmLl90b3RhbF9yZXN1bHRfYnl0ZXMpIC8KLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
dG90YWxfb3JpZ2luYWxfYnl0ZXMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4g
ZmxvYXQoJ2luZicpCi0KLQotY2xhc3MgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKEV4
dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIiZGVmbGF0ZS1mcmFtZSBleHRlbnNp
b24gcHJvY2Vzc29yLgotCi0gICAgU3BlY2lmaWNhdGlvbjoKLSAgICBodHRwOi8vdG9vbHMuaWV0
Zi5vcmcvaHRtbC9kcmFmdC10eW9zaGluby1oeWJpLXdlYnNvY2tldC1wZXJmcmFtZS1kZWZsYXRl
Ci0gICAgIiIiCi0KLSAgICBfV0lORE9XX0JJVFNfUEFSQU0gPSAnbWF4X3dpbmRvd19iaXRzJwot
ICAgIF9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ25vX2NvbnRleHRfdGFrZW92ZXInCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIEV4dGVuc2lvblByb2Nl
c3NvckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotICAgICAgICBzZWxmLl9sb2dn
ZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXNwb25z
ZV93aW5kb3dfYml0cyA9IE5vbmUKLSAgICAgICAgc2VsZi5fcmVzcG9uc2Vfbm9fY29udGV4dF90
YWtlb3ZlciA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2JmaW5hbCA9IEZhbHNlCi0KLSAgICAgICAg
IyBDYWxjdWxhdGVzCi0gICAgICAgICMgICAgIChUb3RhbCBvdXRnb2luZyBieXRlcyBzdXBwbGll
ZCB0byB0aGlzIGZpbHRlcikgLwotICAgICAgICAjICAgICAoVG90YWwgYnl0ZXMgc2VudCB0byB0
aGUgbmV0d29yayBhZnRlciBhcHBseWluZyB0aGlzIGZpbHRlcikKLSAgICAgICAgc2VsZi5fb3V0
Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yID0gX0F2ZXJhZ2VSYXRpb0NhbGN1bGF0b3Io
KQotCi0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgYnl0ZXMgcmVj
ZWl2ZWQgZnJvbSB0aGUgbmV0d29yaykgLwotICAgICAgICAjICAgICAoVG90YWwgaW5jb21pbmcg
Ynl0ZXMgb2J0YWluZWQgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0gICAgICAgIHNlbGYu
X2luY29taW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdlUmF0aW9DYWxjdWxh
dG9yKCkKLQotICAgIGRlZiBuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gY29tbW9uLkRFRkxB
VEVfRlJBTUVfRVhURU5TSU9OCi0KLSAgICBkZWYgX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50
ZXJuYWwoc2VsZik6Ci0gICAgICAgICMgQW55IHVua25vd24gcGFyYW1ldGVyIHdpbGwgYmUganVz
dCBpZ25vcmVkLgotCi0gICAgICAgIHdpbmRvd19iaXRzID0gTm9uZQotICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0Lmhhc19wYXJhbWV0ZXIoc2VsZi5fV0lORE9XX0JJVFNfUEFSQU0pOgotICAgICAg
ICAgICAgd2luZG93X2JpdHMgPSBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUoCi0g
ICAgICAgICAgICAgICAgc2VsZi5fV0lORE9XX0JJVFNfUEFSQU0pCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgd2luZG93X2JpdHMgPSBfcGFyc2Vfd2luZG93X2JpdHMod2luZG93
X2JpdHMpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gTm9uZQotCi0gICAgICAgIG5vX2NvbnRleHRfdGFrZW92ZXIgPSBzZWxmLl9yZXF1
ZXN0Lmhhc19wYXJhbWV0ZXIoCi0gICAgICAgICAgICBzZWxmLl9OT19DT05URVhUX1RBS0VPVkVS
X1BBUkFNKQotICAgICAgICBpZiAobm9fY29udGV4dF90YWtlb3ZlciBhbmQKLSAgICAgICAgICAg
IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKLSAgICAgICAgICAgICAgICBzZWxm
Ll9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNKSBpcyBub3QgTm9uZSk6Ci0gICAgICAgICAgICBy
ZXR1cm4gTm9uZQotCi0gICAgICAgIHNlbGYuX3JmYzE5NzlfZGVmbGF0ZXIgPSB1dGlsLl9SRkMx
OTc5RGVmbGF0ZXIoCi0gICAgICAgICAgICB3aW5kb3dfYml0cywgbm9fY29udGV4dF90YWtlb3Zl
cikKLQotICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxh
dGVyKCkKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZyA9IFRydWUKLQotICAgICAg
ICByZXNwb25zZSA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoc2VsZi5fcmVxdWVzdC5uYW1l
KCkpCi0KLSAgICAgICAgaWYgc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICByZXNwb25zZS5hZGRfcGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIHNl
bGYuX1dJTkRPV19CSVRTX1BBUkFNLCBzdHIoc2VsZi5fcmVzcG9uc2Vfd2luZG93X2JpdHMpKQot
ICAgICAgICBpZiBzZWxmLl9yZXNwb25zZV9ub19jb250ZXh0X3Rha2VvdmVyOgotICAgICAgICAg
ICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxmLl9OT19DT05U
RVhUX1RBS0VPVkVSX1BBUkFNLCBOb25lKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygK
LSAgICAgICAgICAgICdFbmFibGUgJXMgZXh0ZW5zaW9uICgnCi0gICAgICAgICAgICAncmVxdWVz
dDogd2luZG93X2JpdHM9JXM7IG5vX2NvbnRleHRfdGFrZW92ZXI9JXIsICcKLSAgICAgICAgICAg
ICdyZXNwb25zZTogd2luZG93X3diaXRzPSVzOyBub19jb250ZXh0X3Rha2VvdmVyPSVyKScgJQot
ICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QubmFtZSgpLAotICAgICAgICAgICAgIHdpbmRvd19i
aXRzLAotICAgICAgICAgICAgIG5vX2NvbnRleHRfdGFrZW92ZXIsCi0gICAgICAgICAgICAgc2Vs
Zi5fcmVzcG9uc2Vfd2luZG93X2JpdHMsCi0gICAgICAgICAgICAgc2VsZi5fcmVzcG9uc2Vfbm9f
Y29udGV4dF90YWtlb3ZlcikpCi0KLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYg
X3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLQot
ICAgICAgICBjbGFzcyBfT3V0Z29pbmdGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIHBhcmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0g
cGFyZW50Ci0KLSAgICAgICAgICAgIGRlZiBmaWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAg
ICAgICAgIHNlbGYuX3BhcmVudC5fb3V0Z29pbmdfZmlsdGVyKGZyYW1lKQotCi0gICAgICAgIGNs
YXNzIF9JbmNvbWluZ0ZpbHRlcihvYmplY3QpOgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18o
c2VsZiwgcGFyZW50KToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQot
ICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fcGFyZW50Ll9pbmNvbWluZ19maWx0ZXIoZnJhbWUpCi0KLSAgICAgICAgc3RyZWFtX29wdGlv
bnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBfT3V0Z29pbmdG
aWx0ZXIoc2VsZikpCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmluY29taW5nX2ZyYW1lX2ZpbHRl
cnMuaW5zZXJ0KAotICAgICAgICAgICAgMCwgX0luY29taW5nRmlsdGVyKHNlbGYpKQotCi0gICAg
ZGVmIHNldF9yZXNwb25zZV93aW5kb3dfYml0cyhzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYu
X3Jlc3BvbnNlX3dpbmRvd19iaXRzID0gdmFsdWUKLQotICAgIGRlZiBzZXRfcmVzcG9uc2Vfbm9f
Y29udGV4dF90YWtlb3ZlcihzZWxmLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuX3Jlc3BvbnNlX25v
X2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1ZQotCi0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFs
dWUpOgotICAgICAgICBzZWxmLl9iZmluYWwgPSB2YWx1ZQotCi0gICAgZGVmIGVuYWJsZV9vdXRn
b2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcg
PSBUcnVlCi0KLSAgICBkZWYgZGlzYWJsZV9vdXRnb2luZ19jb21wcmVzc2lvbihzZWxmKToKLSAg
ICAgICAgc2VsZi5fY29tcHJlc3Nfb3V0Z29pbmcgPSBGYWxzZQotCi0gICAgZGVmIF9vdXRnb2lu
Z19maWx0ZXIoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJUcmFuc2Zvcm0gb3V0Z29pbmcgZnJh
bWVzLiBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgb25seSBieQotICAgICAgICBhbiBfT3V0Z29pbmdG
aWx0ZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRf
c2l6ZSA9IGxlbihmcmFtZS5wYXlsb2FkKQotICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdl
X3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgICAgIG9y
aWdpbmFsX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBpZiAobm90IHNlbGYuX2NvbXByZXNzX291
dGdvaW5nIG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bj
b2RlKSk6Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0
b3IuYWRkX3Jlc3VsdF9ieXRlcygKLSAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9h
ZF9zaXplKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZnJhbWUucGF5bG9hZCA9IHNl
bGYuX3JmYzE5NzlfZGVmbGF0ZXIuZmlsdGVyKAotICAgICAgICAgICAgZnJhbWUucGF5bG9hZCwg
YmZpbmFsPXNlbGYuX2JmaW5hbCkKLSAgICAgICAgZnJhbWUucnN2MSA9IDEKLQotICAgICAgICBm
aWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5f
b3V0Z29pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9yZXN1bHRfYnl0ZXMoCi0gICAg
ICAgICAgICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29p
bmdfY29tcHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAg
ICAgICAgICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0
ZXJlZF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFn
ZV9yYXRpb19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLSAgICBkZWYgX2luY29t
aW5nX2ZpbHRlcihzZWxmLCBmcmFtZSk6Ci0gICAgICAgICIiIlRyYW5zZm9ybSBpbmNvbWluZyBm
cmFtZXMuIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCBvbmx5IGJ5Ci0gICAgICAgIGFuIF9JbmNvbWlu
Z0ZpbHRlciBpbnN0YW5jZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9h
ZF9zaXplID0gbGVuKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJh
Z2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJl
Y2VpdmVkX3BheWxvYWRfc2l6ZSkKLQotICAgICAgICBpZiBmcmFtZS5yc3YxICE9IDEgb3IgY29t
bW9uLmlzX2NvbnRyb2xfb3Bjb2RlKGZyYW1lLm9wY29kZSk6Ci0gICAgICAgICAgICBzZWxmLl9p
bmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAg
ICAgICAgICAgICAgICAgICByZWNlaXZlZF9wYXlsb2FkX3NpemUpCi0gICAgICAgICAgICByZXR1
cm4KLQotICAgICAgICBmcmFtZS5wYXlsb2FkID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5maWx0
ZXIoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgZnJhbWUucnN2MSA9IDAKLQotICAgICAgICBmaWx0
ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4oZnJhbWUucGF5bG9hZCkKLSAgICAgICAgc2VsZi5faW5j
b21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFkZF9vcmlnaW5hbF9ieXRlcygKLSAgICAg
ICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUpCi0KLSAgICAgICAgX2xvZ19pbmNvbWlu
Z19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIsCi0gICAg
ICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXplLAotICAgICAgICAgICAgICAgIGZpbHRl
cmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdl
X3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0aW8oKSkKLQotCi1fYXZhaWxhYmxlX3By
b2Nlc3NvcnNbY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OXSA9ICgKLSAgICBEZWZsYXRl
RnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IpCi1fY29tcHJlc3Npb25fZXh0ZW5zaW9uX25hbWVzLmFw
cGVuZChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLV9hdmFpbGFibGVfcHJvY2Vz
c29yc1tjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT05dID0gKAotICAgIERl
ZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nlc3NvcikKLV9jb21wcmVzc2lvbl9leHRlbnNpb25fbmFt
ZXMuYXBwZW5kKGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLQotCi1k
ZWYgX3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZChkYXRhKToKLSAgICAiIiJQYXJzZXMgdGhlIHZh
bHVlIG9mICJtZXRob2QiIGV4dGVuc2lvbiBwYXJhbWV0ZXIuIiIiCi0KLSAgICByZXR1cm4gY29t
bW9uLnBhcnNlX2V4dGVuc2lvbnMoZGF0YSkKLQotCi1kZWYgX2NyZWF0ZV9hY2NlcHRlZF9tZXRo
b2RfZGVzYyhtZXRob2RfbmFtZSwgbWV0aG9kX3BhcmFtcyk6Ci0gICAgIiIiQ3JlYXRlcyBhY2Nl
cHRlZC1tZXRob2QtZGVzYyBmcm9tIGdpdmVuIG1ldGhvZCBuYW1lIGFuZCBwYXJhbWV0ZXJzIiIi
Ci0KLSAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKG1ldGhvZF9uYW1l
KQotICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBtZXRob2RfcGFyYW1zOgotICAgICAgICBleHRlbnNp
b24uYWRkX3BhcmFtZXRlcihuYW1lLCB2YWx1ZSkKLSAgICByZXR1cm4gY29tbW9uLmZvcm1hdF9l
eHRlbnNpb24oZXh0ZW5zaW9uKQotCi0KLWNsYXNzIENvbXByZXNzaW9uRXh0ZW5zaW9uUHJvY2Vz
c29yQmFzZShFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UpOgotICAgICIiIkJhc2UgY2xhc3Mg
Zm9yIHBlcmZyYW1lLWNvbXByZXNzIGFuZCBwZXJtZXNzYWdlLWNvbXByZXNzIGV4dGVuc2lvbi4i
IiIKLQotICAgIF9NRVRIT0RfUEFSQU0gPSAnbWV0aG9kJwotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHJlcXVlc3QpOgotICAgICAgICBFeHRlbnNpb25Qcm9jZXNzb3JJbnRlcmZhY2UuX19pbml0
X18oc2VsZiwgcmVxdWVzdCkKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3Nf
bG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lID0gTm9u
ZQotICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBOb25lCi0gICAgICAgIHNl
bGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rID0gTm9uZQotCi0gICAgZGVmIG5hbWUoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAnJwotCi0gICAgZGVmIF9sb29rdXBfY29tcHJlc3Npb25fcHJv
Y2Vzc29yKHNlbGYsIG1ldGhvZF9kZXNjKToKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIGRl
ZiBfZ2V0X2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9yZXNwb25zZShzZWxmKToKLSAgICAgICAgIiIi
TG9va3MgdXAgdGhlIGNvbXByZXNzaW9uIHByb2Nlc3NvciBiYXNlZCBvbiB0aGUgc2VsZi5fcmVx
dWVzdCBhbmQKLSAgICAgICAgICAgcmV0dXJucyB0aGUgY29tcHJlc3Npb24gcHJvY2Vzc29yJ3Mg
cmVzcG9uc2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIG1ldGhvZF9saXN0ID0gc2VsZi5fcmVx
dWVzdC5nZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYuX01FVEhPRF9QQVJBTSkKLSAgICAgICAgaWYg
bWV0aG9kX2xpc3QgaXMgTm9uZToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIG1l
dGhvZHMgPSBfcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKG1ldGhvZF9saXN0KQotICAgICAgICBp
ZiBtZXRob2RzIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBjb21y
ZXNzaW9uX3Byb2Nlc3NvciA9IE5vbmUKLSAgICAgICAgIyBUaGUgY3VycmVudCBpbXBsZW1lbnRh
dGlvbiB0cmllcyBvbmx5IHRoZSBmaXJzdCBtZXRob2QgdGhhdCBtYXRjaGVzCi0gICAgICAgICMg
c3VwcG9ydGVkIGFsZ29yaXRobS4gRm9sbG93aW5nIG1ldGhvZHMgYXJlbid0IHRyaWVkIGV2ZW4g
aWYgdGhlCi0gICAgICAgICMgZmlyc3Qgb25lIGlzIHJlamVjdGVkLgotICAgICAgICAjIFRPRE8o
YmFzaGkpOiBOZWVkIHRvIGNsYXJpZnkgdGhpcyBiZWhhdmlvci4KLSAgICAgICAgZm9yIG1ldGhv
ZF9kZXNjIGluIG1ldGhvZHM6Ci0gICAgICAgICAgICBjb21wcmVzc2lvbl9wcm9jZXNzb3IgPSBz
ZWxmLl9sb29rdXBfY29tcHJlc3Npb25fcHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIG1ldGhv
ZF9kZXNjKQotICAgICAgICAgICAgaWYgY29tcHJlc3Npb25fcHJvY2Vzc29yIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgICAgIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1lID0gbWV0aG9k
X2Rlc2MubmFtZSgpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgY29tcHJlc3Np
b25fcHJvY2Vzc29yIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAg
IGlmIHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rOgotICAgICAgICAgICAgc2VsZi5f
Y29tcHJlc3Npb25fcHJvY2Vzc29yX2hvb2soY29tcHJlc3Npb25fcHJvY2Vzc29yKQotCi0gICAg
ICAgIHByb2Nlc3Nvcl9yZXNwb25zZSA9IGNvbXByZXNzaW9uX3Byb2Nlc3Nvci5nZXRfZXh0ZW5z
aW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgaWYgcHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9wcm9jZXNz
b3IgPSBjb21wcmVzc2lvbl9wcm9jZXNzb3IKLSAgICAgICAgcmV0dXJuIHByb2Nlc3Nvcl9yZXNw
b25zZQotCi0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgot
ICAgICAgICBwcm9jZXNzb3JfcmVzcG9uc2UgPSBzZWxmLl9nZXRfY29tcHJlc3Npb25fcHJvY2Vz
c29yX3Jlc3BvbnNlKCkKLSAgICAgICAgaWYgcHJvY2Vzc29yX3Jlc3BvbnNlIGlzIE5vbmU6Ci0g
ICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgIHJlc3BvbnNlID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUoKSkKLSAgICAgICAgYWNjZXB0ZWRfbWV0
aG9kX2Rlc2MgPSBfY3JlYXRlX2FjY2VwdGVkX21ldGhvZF9kZXNjKAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9jb21wcmVzc2lvbl9tZXRob2RfbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yX3Jlc3BvbnNlLmdldF9wYXJh
bWV0ZXJzKCkpCi0gICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoc2VsZi5fTUVUSE9EX1BB
UkFNLCBhY2NlcHRlZF9tZXRob2RfZGVzYykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAot
ICAgICAgICAgICAgJ0VuYWJsZSAlcyBleHRlbnNpb24gKG1ldGhvZDogJXMpJyAlCi0gICAgICAg
ICAgICAoc2VsZi5fcmVxdWVzdC5uYW1lKCksIHNlbGYuX2NvbXByZXNzaW9uX21ldGhvZF9uYW1l
KSkKLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3NldHVwX3N0cmVhbV9vcHRp
b25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAgICAgaWYgc2VsZi5fY29t
cHJlc3Npb25fcHJvY2Vzc29yIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
c2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9v
cHRpb25zKQotCi0gICAgZGVmIHNldF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vayhzZWxmLCBo
b29rKToKLSAgICAgICAgc2VsZi5fY29tcHJlc3Npb25fcHJvY2Vzc29yX2hvb2sgPSBob29rCi0K
LSAgICBkZWYgZ2V0X2NvbXByZXNzaW9uX3Byb2Nlc3NvcihzZWxmKToKLSAgICAgICAgcmV0dXJu
IHNlbGYuX2NvbXByZXNzaW9uX3Byb2Nlc3NvcgotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZsYXRl
RXh0ZW5zaW9uUHJvY2Vzc29yKEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFjZSk6Ci0gICAgIiIi
cGVybWVzc2FnZS1kZWZsYXRlIGV4dGVuc2lvbiBwcm9jZXNzb3IuIEl0J3MgYWxzbyB1c2VkIGZv
cgotICAgIHBlcm1lc3NhZ2UtY29tcHJlc3MgZXh0ZW5zaW9uIHdoZW4gdGhlIGRlZmxhdGUgbWV0
aG9kIGlzIGNob3Nlbi4KLQotICAgIFNwZWNpZmljYXRpb246Ci0gICAgaHR0cDovL3Rvb2xzLmll
dGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXBlcm1lc3NhZ2UtY29tcHJlc3Npb24tMDgKLSAg
ICAiIiIKLQotICAgIF9TRVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNID0gJ3NlcnZlcl9tYXhf
d2luZG93X2JpdHMnCi0gICAgX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNID0gJ3Nl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJwotICAgIF9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BB
UkFNID0gJ2NsaWVudF9tYXhfd2luZG93X2JpdHMnCi0gICAgX0NMSUVOVF9OT19DT05URVhUX1RB
S0VPVkVSX1BBUkFNID0gJ2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyJwotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIHJlcXVlc3QsIGRyYWZ0MDg9VHJ1ZSk6Ci0gICAgICAgICIiIkNvbnN0cnVj
dCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcgotCi0gICAgICAgIEFyZ3M6Ci0g
ICAgICAgICAgICBkcmFmdDA4OiBGb2xsb3cgdGhlIGNvbnN0cmFpbnRzIG9uIHRoZSBwYXJhbWV0
ZXJzIHRoYXQgd2VyZSBub3QKLSAgICAgICAgICAgICAgICBzcGVjaWZpZWQgZm9yIHBlcm1lc3Nh
Z2UtY29tcHJlc3MgYnV0IGFyZSBzcGVjaWZpZWQgZm9yCi0gICAgICAgICAgICAgICAgcGVybWVz
c2FnZS1kZWZsYXRlIGFzIG9uCi0gICAgICAgICAgICAgICAgZHJhZnQtaWV0Zi1oeWJpLXBlcm1l
c3NhZ2UtY29tcHJlc3Npb24tMDguCi0gICAgICAgICIiIgotCi0gICAgICAgIEV4dGVuc2lvblBy
b2Nlc3NvckludGVyZmFjZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotICAgICAgICBzZWxmLl9s
b2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9wcmVm
ZXJyZWRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IE5vbmUKLSAgICAgICAgc2VsZi5fY2xpZW50
X25vX2NvbnRleHRfdGFrZW92ZXIgPSBGYWxzZQotCi0gICAgICAgIHNlbGYuX2RyYWZ0MDggPSBk
cmFmdDA4Ci0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICdkZWZsYXRlJwot
Ci0gICAgZGVmIF9nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlX2ludGVybmFsKHNlbGYpOgotICAgICAg
ICBpZiBzZWxmLl9kcmFmdDA4OgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gc2VsZi5fcmVxdWVz
dC5nZXRfcGFyYW1ldGVyX25hbWVzKCk6Ci0gICAgICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4g
W3NlbGYuX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRT
X1BBUkFNXToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdVbmtub3du
IHBhcmFtZXRlcjogJXInLCBuYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBBbnkgdW5rbm93biBwYXJhbWV0ZXIgd2lsbCBi
ZSBqdXN0IGlnbm9yZWQuCi0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgc2VydmVyX21heF93
aW5kb3dfYml0cyA9IE5vbmUKLSAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5oYXNfcGFyYW1ldGVy
KHNlbGYuX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFSQU0pOgotICAgICAgICAgICAgc2VydmVy
X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuZ2V0X3BhcmFtZXRlcl92YWx1ZSgKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX01BWF9XSU5ET1dfQklUU19QQVJBTSkKLSAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzID0g
X3BhcnNlX3dpbmRvd19iaXRzKAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRv
d19iaXRzKQotICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdCYWQgJXMgcGFyYW1ldGVyOiAlcicsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9NQVhfV0lORE9XX0JJVFNfUEFS
QU0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUpCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciA9IHNl
bGYuX3JlcXVlc3QuaGFzX3BhcmFtZXRlcigKLSAgICAgICAgICAgIHNlbGYuX1NFUlZFUl9OT19D
T05URVhUX1RBS0VPVkVSX1BBUkFNKQotICAgICAgICBpZiAoc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXIgYW5kCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0ZXJfdmFsdWUo
Ci0gICAgICAgICAgICAgICAgc2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0p
IGlzIG5vdCBOb25lKToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXMgcGFyYW1l
dGVyIG11c3Qgbm90IGhhdmUgYSB2YWx1ZTogJXInLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYuX1NFUlZFUl9OT19DT05URVhUX1RBS0VPVkVSX1BBUkFNLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyKQotICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICAjIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZnJv
bSBhIGNsaWVudCBpbmRpY2F0ZXMgd2hldGhlciB0aGUgY2xpZW50IGNhbgotICAgICAgICAjIGFj
Y2VwdCBjbGllbnRfbWF4X3dpbmRvd19iaXRzIGZyb20gYSBzZXJ2ZXIgb3Igbm90LgotICAgICAg
ICBjbGllbnRfY2xpZW50X21heF93aW5kb3dfYml0cyA9IHNlbGYuX3JlcXVlc3QuaGFzX3BhcmFt
ZXRlcigKLSAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0g
ICAgICAgIGlmIChzZWxmLl9kcmFmdDA4IGFuZAotICAgICAgICAgICAgY2xpZW50X2NsaWVudF9t
YXhfd2luZG93X2JpdHMgYW5kCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmdldF9wYXJhbWV0
ZXJfdmFsdWUoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19Q
QVJBTSkgaXMgbm90IE5vbmUpOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcyBw
YXJhbWV0ZXIgbXVzdCBub3QgaGF2ZSBhIHZhbHVlIGluIGEgJwotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdjbGllbnRcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9DTElFTlRfTUFYX1dJTkRPV19CSVRTX1BBUkFN
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jbGllbnRfbWF4X3dpbmRv
d19iaXRzKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgICAgICBzZWxmLl9yZmMxOTc5
X2RlZmxhdGVyID0gdXRpbC5fUkZDMTk3OURlZmxhdGVyKAotICAgICAgICAgICAgc2VydmVyX21h
eF93aW5kb3dfYml0cywgc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICAgICAgIyBO
b3RlIHRoYXQgd2UgcHJlcGFyZSBmb3IgaW5jb21pbmcgbWVzc2FnZXMgY29tcHJlc3NlZCB3aXRo
IHdpbmRvdwotICAgICAgICAjIGJpdHMgdXB0byAxNSByZWdhcmRsZXNzIG9mIHRoZSBjbGllbnRf
bWF4X3dpbmRvd19iaXRzIHZhbHVlIHRvIGJlCi0gICAgICAgICMgc2VudCB0byB0aGUgY2xpZW50
LgotICAgICAgICBzZWxmLl9yZmMxOTc5X2luZmxhdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVy
KCkKLQotICAgICAgICBzZWxmLl9mcmFtZXIgPSBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIoCi0g
ICAgICAgICAgICBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzLCBzZXJ2ZXJfbm9fY29udGV4dF90YWtl
b3ZlcikKLSAgICAgICAgc2VsZi5fZnJhbWVyLnNldF9iZmluYWwoRmFsc2UpCi0gICAgICAgIHNl
bGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChUcnVlKQotCi0gICAgICAg
IHJlc3BvbnNlID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihzZWxmLl9yZXF1ZXN0Lm5hbWUo
KSkKLQotICAgICAgICBpZiBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzIGlzIG5vdCBOb25lOgotICAg
ICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxmLl9T
RVJWRVJfTUFYX1dJTkRPV19CSVRTX1BBUkFNLAotICAgICAgICAgICAgICAgIHN0cihzZXJ2ZXJf
bWF4X3dpbmRvd19iaXRzKSkKLQotICAgICAgICBpZiBzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zl
cjoKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAg
c2VsZi5fU0VSVkVSX05PX0NPTlRFWFRfVEFLRU9WRVJfUEFSQU0sIE5vbmUpCi0KLSAgICAgICAg
aWYgc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93X2JpdHMgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBpZiBzZWxmLl9kcmFmdDA4IGFuZCBub3QgY2xpZW50X2NsaWVudF9tYXhfd2lu
ZG93X2JpdHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm9jZXNzb3Ig
aXMgY29uZmlndXJlZCB0byB1c2UgJXMgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RoZSBjbGllbnQgY2Fubm90IGFjY2VwdCBpdCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNlbGYuX0NMSUVOVF9NQVhfV0lORE9XX0JJVFNfUEFSQU0pCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIHJlc3BvbnNlLmFkZF9wYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZi5fQ0xJRU5UX01BWF9XSU5ET1dfQklUU19QQVJB
TSwKLSAgICAgICAgICAgICAgICBzdHIoc2VsZi5fcHJlZmVycmVkX2NsaWVudF9tYXhfd2luZG93
X2JpdHMpKQotCi0gICAgICAgIGlmIHNlbGYuX2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyOgot
ICAgICAgICAgICAgcmVzcG9uc2UuYWRkX3BhcmFtZXRlcigKLSAgICAgICAgICAgICAgICBzZWxm
Ll9DTElFTlRfTk9fQ09OVEVYVF9UQUtFT1ZFUl9QQVJBTSwgTm9uZSkKLQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnRW5hYmxlICVzIGV4dGVuc2lvbiAoJwotICAg
ICAgICAgICAgJ3JlcXVlc3Q6IHNlcnZlcl9tYXhfd2luZG93X2JpdHM9JXM7ICcKLSAgICAgICAg
ICAgICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3Zlcj0lciwgJwotICAgICAgICAgICAgJ3Jlc3Bv
bnNlOiBjbGllbnRfbWF4X3dpbmRvd19iaXRzPSVzOyAnCi0gICAgICAgICAgICAnY2xpZW50X25v
X2NvbnRleHRfdGFrZW92ZXI9JXIpJyAlCi0gICAgICAgICAgICAoc2VsZi5fcmVxdWVzdC5uYW1l
KCksCi0gICAgICAgICAgICAgc2VydmVyX21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBz
ZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciwKLSAgICAgICAgICAgICBzZWxmLl9wcmVmZXJyZWRf
Y2xpZW50X21heF93aW5kb3dfYml0cywKLSAgICAgICAgICAgICBzZWxmLl9jbGllbnRfbm9fY29u
dGV4dF90YWtlb3ZlcikpCi0KLSAgICAgICAgcmV0dXJuIHJlc3BvbnNlCi0KLSAgICBkZWYgX3Nl
dHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25zKToKLSAgICAg
ICAgc2VsZi5fZnJhbWVyLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9vcHRpb25zKQotCi0g
ICAgZGVmIHNldF9jbGllbnRfbWF4X3dpbmRvd19iaXRzKHNlbGYsIHZhbHVlKToKLSAgICAgICAg
IiIiSWYgdGhpcyBvcHRpb24gaXMgc3BlY2lmaWVkLCB0aGlzIGNsYXNzIGFkZHMgdGhlCi0gICAg
ICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFu
ZHNoYWtlIHJlc3BvbnNlLAotICAgICAgICBidXQgZG9lc24ndCByZWR1Y2UgdGhlIExaNzcgc2xp
ZGluZyB3aW5kb3cgc2l6ZSBvZiBpdHMgaW5mbGF0ZXIuCi0gICAgICAgIEkuZS4sIHlvdSBjYW4g
dXNlIHRoaXMgZm9yIHRlc3RpbmcgY2xpZW50IGltcGxlbWVudGF0aW9uIGJ1dCBjYW5ub3QKLSAg
ICAgICAgcmVkdWNlIG1lbW9yeSB1c2FnZSBvZiB0aGlzIGNsYXNzLgotCi0gICAgICAgIElmIHRo
aXMgbWV0aG9kIGhhcyBiZWVuIGNhbGxlZCB3aXRoIFRydWUgYW5kIGFuIG9mZmVyIHdpdGhvdXQg
dGhlCi0gICAgICAgIGNsaWVudF9tYXhfd2luZG93X2JpdHMgZXh0ZW5zaW9uIHBhcmFtZXRlciBp
cyByZWNlaXZlZCwKLSAgICAgICAgLSAoV2hlbiBwcm9jZXNzaW5nIHRoZSBwZXJtZXNzYWdlLWRl
ZmxhdGUgZXh0ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGRlY2xpbmVzIHRoZSBy
ZXF1ZXN0LgotICAgICAgICAtIChXaGVuIHByb2Nlc3NpbmcgdGhlIHBlcm1lc3NhZ2UtY29tcHJl
c3MgZXh0ZW5zaW9uKSB0aGlzIHByb2Nlc3NvcgotICAgICAgICAgIGFjY2VwdHMgdGhlIHJlcXVl
c3QuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3ByZWZlcnJlZF9jbGllbnRfbWF4X3dp
bmRvd19iaXRzID0gdmFsdWUKLQotICAgIGRlZiBzZXRfY2xpZW50X25vX2NvbnRleHRfdGFrZW92
ZXIoc2VsZiwgdmFsdWUpOgotICAgICAgICAiIiJJZiB0aGlzIG9wdGlvbiBpcyBzcGVjaWZpZWQs
IHRoaXMgY2xhc3MgYWRkcyB0aGUKLSAgICAgICAgY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIg
ZXh0ZW5zaW9uIHBhcmFtZXRlciB0byB0aGUgaGFuZHNoYWtlCi0gICAgICAgIHJlc3BvbnNlLCBi
dXQgZG9lc24ndCByZXNldCBpbmZsYXRlciBmb3IgZWFjaCBtZXNzYWdlLiBJLmUuLCB5b3UgY2Fu
Ci0gICAgICAgIHVzZSB0aGlzIGZvciB0ZXN0aW5nIGNsaWVudCBpbXBsZW1lbnRhdGlvbiBidXQg
Y2Fubm90IHJlZHVjZSBtZW1vcnkKLSAgICAgICAgdXNhZ2Ugb2YgdGhpcyBjbGFzcy4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fY2xpZW50X25vX2NvbnRleHRfdGFrZW92ZXIgPSB2YWx1
ZQotCi0gICAgZGVmIHNldF9iZmluYWwoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9mcmFt
ZXIuc2V0X2JmaW5hbCh2YWx1ZSkKLQotICAgIGRlZiBlbmFibGVfb3V0Z29pbmdfY29tcHJlc3Np
b24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5h
YmxlZChUcnVlKQotCi0gICAgZGVmIGRpc2FibGVfb3V0Z29pbmdfY29tcHJlc3Npb24oc2VsZik6
Ci0gICAgICAgIHNlbGYuX2ZyYW1lci5zZXRfY29tcHJlc3Nfb3V0Z29pbmdfZW5hYmxlZChGYWxz
ZSkKLQotCi1jbGFzcyBfUGVyTWVzc2FnZURlZmxhdGVGcmFtZXIob2JqZWN0KToKLSAgICAiIiJB
IGZyYW1lciBmb3IgZXh0ZW5zaW9ucyB3aXRoIHBlci1tZXNzYWdlIERFRkxBVEUgZmVhdHVyZS4i
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkZWZsYXRlX21heF93aW5kb3dfYml0cywgZGVm
bGF0ZV9ub19jb250ZXh0X3Rha2VvdmVyKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5n
ZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3OV9kZWZsYXRlciA9
IHV0aWwuX1JGQzE5NzlEZWZsYXRlcigKLSAgICAgICAgICAgIGRlZmxhdGVfbWF4X3dpbmRvd19i
aXRzLCBkZWZsYXRlX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAgICAgICAgc2VsZi5fcmZjMTk3
OV9pbmZsYXRlciA9IHV0aWwuX1JGQzE5NzlJbmZsYXRlcigpCi0KLSAgICAgICAgc2VsZi5fYmZp
bmFsID0gRmFsc2UKLQotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRnb2luZ19lbmFibGVkID0g
RmFsc2UKLQotICAgICAgICAjIFRydWUgaWYgYSBtZXNzYWdlIGlzIGZyYWdtZW50ZWQgYW5kIGNv
bXByZXNzaW9uIGlzIG9uZ29pbmcuCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcgPSBG
YWxzZQotCi0gICAgICAgICMgQ2FsY3VsYXRlcwotICAgICAgICAjICAgICAoVG90YWwgb3V0Z29p
bmcgYnl0ZXMgc3VwcGxpZWQgdG8gdGhpcyBmaWx0ZXIpIC8KLSAgICAgICAgIyAgICAgKFRvdGFs
IGJ5dGVzIHNlbnQgdG8gdGhlIG5ldHdvcmsgYWZ0ZXIgYXBwbHlpbmcgdGhpcyBmaWx0ZXIpCi0g
ICAgICAgIHNlbGYuX291dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvciA9IF9BdmVyYWdl
UmF0aW9DYWxjdWxhdG9yKCkKLQotICAgICAgICAjIENhbGN1bGF0ZXMKLSAgICAgICAgIyAgICAg
KFRvdGFsIGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIG5ldHdvcmspIC8KLSAgICAgICAgIyAgICAg
KFRvdGFsIGluY29taW5nIGJ5dGVzIG9idGFpbmVkIGFmdGVyIGFwcGx5aW5nIHRoaXMgZmlsdGVy
KQotICAgICAgICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IgPSBfQXZl
cmFnZVJhdGlvQ2FsY3VsYXRvcigpCi0KLSAgICBkZWYgc2V0X2JmaW5hbChzZWxmLCB2YWx1ZSk6
Ci0gICAgICAgIHNlbGYuX2JmaW5hbCA9IHZhbHVlCi0KLSAgICBkZWYgc2V0X2NvbXByZXNzX291
dGdvaW5nX2VuYWJsZWQoc2VsZiwgdmFsdWUpOgotICAgICAgICBzZWxmLl9jb21wcmVzc19vdXRn
b2luZ19lbmFibGVkID0gdmFsdWUKLQotICAgIGRlZiBfcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdl
KHNlbGYsIG1lc3NhZ2UsIGRlY29tcHJlc3MpOgotICAgICAgICBpZiBub3QgZGVjb21wcmVzczoK
LSAgICAgICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9z
aXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX2luY29taW5nX2F2ZXJhZ2VfcmF0aW9f
Y2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAgICAgICAgICAgIHJlY2VpdmVkX3Bh
eWxvYWRfc2l6ZSkKLQotICAgICAgICBtZXNzYWdlID0gc2VsZi5fcmZjMTk3OV9pbmZsYXRlci5m
aWx0ZXIobWVzc2FnZSkKLQotICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUgPSBsZW4obWVz
c2FnZSkKLSAgICAgICAgc2VsZi5faW5jb21pbmdfYXZlcmFnZV9yYXRpb19jYWxjdWxhdG9yLmFk
ZF9vcmlnaW5hbF9ieXRlcygKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9wYXlsb2FkX3NpemUp
Ci0KLSAgICAgICAgX2xvZ19pbmNvbWluZ19jb21wcmVzc2lvbl9yYXRpbygKLSAgICAgICAgICAg
ICAgICBzZWxmLl9sb2dnZXIsCi0gICAgICAgICAgICAgICAgcmVjZWl2ZWRfcGF5bG9hZF9zaXpl
LAotICAgICAgICAgICAgICAgIGZpbHRlcmVkX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAg
ICBzZWxmLl9pbmNvbWluZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0b3IuZ2V0X2F2ZXJhZ2VfcmF0
aW8oKSkKLQotICAgICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgZGVmIF9wcm9jZXNzX291dGdv
aW5nX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSwgZW5kLCBiaW5hcnkpOgotICAgICAgICBpZiBub3Qg
YmluYXJ5OgotICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZW5jb2RlKCd1dGYtOCcpCi0K
LSAgICAgICAgaWYgbm90IHNlbGYuX2NvbXByZXNzX291dGdvaW5nX2VuYWJsZWQ6Ci0gICAgICAg
ICAgICByZXR1cm4gbWVzc2FnZQotCi0gICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSA9IGxl
bihtZXNzYWdlKQotICAgICAgICBzZWxmLl9vdXRnb2luZ19hdmVyYWdlX3JhdGlvX2NhbGN1bGF0
b3IuYWRkX29yaWdpbmFsX2J5dGVzKAotICAgICAgICAgICAgb3JpZ2luYWxfcGF5bG9hZF9zaXpl
KQotCi0gICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9yZmMxOTc5X2RlZmxhdGVyLmZpbHRlcigKLSAg
ICAgICAgICAgIG1lc3NhZ2UsIGVuZD1lbmQsIGJmaW5hbD1zZWxmLl9iZmluYWwpCi0KLSAgICAg
ICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplID0gbGVuKG1lc3NhZ2UpCi0gICAgICAgIHNlbGYuX291
dGdvaW5nX2F2ZXJhZ2VfcmF0aW9fY2FsY3VsYXRvci5hZGRfcmVzdWx0X2J5dGVzKAotICAgICAg
ICAgICAgZmlsdGVyZWRfcGF5bG9hZF9zaXplKQotCi0gICAgICAgIF9sb2dfb3V0Z29pbmdfY29t
cHJlc3Npb25fcmF0aW8oCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLAotICAgICAgICAg
ICAgICAgIG9yaWdpbmFsX3BheWxvYWRfc2l6ZSwKLSAgICAgICAgICAgICAgICBmaWx0ZXJlZF9w
YXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAgc2VsZi5fb3V0Z29pbmdfYXZlcmFnZV9yYXRp
b19jYWxjdWxhdG9yLmdldF9hdmVyYWdlX3JhdGlvKCkpCi0KLSAgICAgICAgaWYgbm90IHNlbGYu
X2NvbXByZXNzX29uZ29pbmc6Ci0gICAgICAgICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0
ZXIuc2V0X2NvbXByZXNzaW9uX2JpdCgpCi0gICAgICAgIHNlbGYuX2NvbXByZXNzX29uZ29pbmcg
PSBub3QgZW5kCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBkZWYgX3Byb2Nlc3NfaW5j
b21pbmdfZnJhbWUoc2VsZiwgZnJhbWUpOgotICAgICAgICBpZiBmcmFtZS5yc3YxID09IDEgYW5k
IG5vdCBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAgICAgICAg
IHNlbGYuX2luY29taW5nX21lc3NhZ2VfZmlsdGVyLmRlY29tcHJlc3NfbmV4dF9tZXNzYWdlKCkK
LSAgICAgICAgICAgIGZyYW1lLnJzdjEgPSAwCi0KLSAgICBkZWYgX3Byb2Nlc3Nfb3V0Z29pbmdf
ZnJhbWUoc2VsZiwgZnJhbWUsIGNvbXByZXNzaW9uX2JpdCk6Ci0gICAgICAgIGlmIChub3QgY29t
cHJlc3Npb25fYml0IG9yCi0gICAgICAgICAgICBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJh
bWUub3Bjb2RlKSk6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBmcmFtZS5yc3YxID0g
MQotCi0gICAgZGVmIHNldHVwX3N0cmVhbV9vcHRpb25zKHNlbGYsIHN0cmVhbV9vcHRpb25zKToK
LSAgICAgICAgIiIiQ3JlYXRlcyBmaWx0ZXJzIGFuZCBzZXRzIHRoZW0gdG8gdGhlIFN0cmVhbU9w
dGlvbnMuIiIiCi0KLSAgICAgICAgY2xhc3MgX091dGdvaW5nTWVzc2FnZUZpbHRlcihvYmplY3Qp
OgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKLSAgICAgICAgICAg
ICAgICBzZWxmLl9wYXJlbnQgPSBwYXJlbnQKLQotICAgICAgICAgICAgZGVmIGZpbHRlcihzZWxm
LCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5fcGFyZW50Ll9wcm9jZXNzX291dGdvaW5nX21lc3NhZ2UoCi0gICAgICAgICAgICAg
ICAgICAgIG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ01l
c3NhZ2VGaWx0ZXIob2JqZWN0KToKLQotICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBh
cmVudCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcGFyZW50ID0gcGFyZW50Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBGYWxzZQotCi0gICAgICAgICAg
ICBkZWYgZGVjb21wcmVzc19uZXh0X21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgICAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzc19uZXh0X21lc3NhZ2UgPSBUcnVlCi0KLSAgICAgICAgICAgIGRlZiBmaWx0
ZXIoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICAgICAgICAgbWVzc2FnZSA9IHNlbGYuX3BhcmVu
dC5fcHJvY2Vzc19pbmNvbWluZ19tZXNzYWdlKAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdl
LCBzZWxmLl9kZWNvbXByZXNzX25leHRfbWVzc2FnZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9k
ZWNvbXByZXNzX25leHRfbWVzc2FnZSA9IEZhbHNlCi0gICAgICAgICAgICAgICAgcmV0dXJuIG1l
c3NhZ2UKLQotICAgICAgICBzZWxmLl9vdXRnb2luZ19tZXNzYWdlX2ZpbHRlciA9IF9PdXRnb2lu
Z01lc3NhZ2VGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5faW5jb21pbmdfbWVzc2FnZV9maWx0
ZXIgPSBfSW5jb21pbmdNZXNzYWdlRmlsdGVyKHNlbGYpCi0gICAgICAgIHN0cmVhbV9vcHRpb25z
Lm91dGdvaW5nX21lc3NhZ2VfZmlsdGVycy5hcHBlbmQoCi0gICAgICAgICAgICBzZWxmLl9vdXRn
b2luZ19tZXNzYWdlX2ZpbHRlcikKLSAgICAgICAgc3RyZWFtX29wdGlvbnMuaW5jb21pbmdfbWVz
c2FnZV9maWx0ZXJzLmFwcGVuZCgKLSAgICAgICAgICAgIHNlbGYuX2luY29taW5nX21lc3NhZ2Vf
ZmlsdGVyKQotCi0gICAgICAgIGNsYXNzIF9PdXRnb2luZ0ZyYW1lRmlsdGVyKG9iamVjdCk6Ci0K
LSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgotICAgICAgICAgICAgICAg
IHNlbGYuX3BhcmVudCA9IHBhcmVudAotICAgICAgICAgICAgICAgIHNlbGYuX3NldF9jb21wcmVz
c2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgICAgICBkZWYgc2V0X2NvbXByZXNzaW9uX2JpdChz
ZWxmKToKLSAgICAgICAgICAgICAgICBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0ID0gVHJ1ZQot
Ci0gICAgICAgICAgICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9wYXJlbnQuX3Byb2Nlc3Nfb3V0Z29pbmdfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAg
IGZyYW1lLCBzZWxmLl9zZXRfY29tcHJlc3Npb25fYml0KQotICAgICAgICAgICAgICAgIHNlbGYu
X3NldF9jb21wcmVzc2lvbl9iaXQgPSBGYWxzZQotCi0gICAgICAgIGNsYXNzIF9JbmNvbWluZ0Zy
YW1lRmlsdGVyKG9iamVjdCk6Ci0KLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJl
bnQpOgotICAgICAgICAgICAgICAgIHNlbGYuX3BhcmVudCA9IHBhcmVudAotCi0gICAgICAgICAg
ICBkZWYgZmlsdGVyKHNlbGYsIGZyYW1lKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wYXJlbnQu
X3Byb2Nlc3NfaW5jb21pbmdfZnJhbWUoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5fb3V0Z29pbmdf
ZnJhbWVfZmlsdGVyID0gX091dGdvaW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAgICAgc2VsZi5f
aW5jb21pbmdfZnJhbWVfZmlsdGVyID0gX0luY29taW5nRnJhbWVGaWx0ZXIoc2VsZikKLSAgICAg
ICAgc3RyZWFtX29wdGlvbnMub3V0Z29pbmdfZnJhbWVfZmlsdGVycy5hcHBlbmQoCi0gICAgICAg
ICAgICBzZWxmLl9vdXRnb2luZ19mcmFtZV9maWx0ZXIpCi0gICAgICAgIHN0cmVhbV9vcHRpb25z
LmluY29taW5nX2ZyYW1lX2ZpbHRlcnMuYXBwZW5kKAotICAgICAgICAgICAgc2VsZi5faW5jb21p
bmdfZnJhbWVfZmlsdGVyKQotCi0gICAgICAgIHN0cmVhbV9vcHRpb25zLmVuY29kZV90ZXh0X21l
c3NhZ2VfdG9fdXRmOCA9IEZhbHNlCi0KLQotX2F2YWlsYWJsZV9wcm9jZXNzb3JzW2NvbW1vbi5Q
RVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OXSA9ICgKLSAgICAgICAgUGVyTWVzc2FnZURlZmxh
dGVFeHRlbnNpb25Qcm9jZXNzb3IpCi0jIFRPRE8odHlvc2hpbm8pOiBSZW9yZ2FuaXplIGNsYXNz
IG5hbWVzLgotX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcy5hcHBlbmQoJ2RlZmxhdGUnKQot
Ci0KLWNsYXNzIFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3NvcigKLSAgICBDb21w
cmVzc2lvbkV4dGVuc2lvblByb2Nlc3NvckJhc2UpOgotICAgICIiInBlcm1lc3NhZ2UtY29tcHJl
c3MgZXh0ZW5zaW9uIHByb2Nlc3Nvci4KLQotICAgIFNwZWNpZmljYXRpb246Ci0gICAgaHR0cDov
L3Rvb2xzLmlldGYub3JnL2h0bWwvZHJhZnQtaWV0Zi1oeWJpLXBlcm1lc3NhZ2UtY29tcHJlc3Np
b24KLSAgICAiIiIKLQotICAgIF9ERUZMQVRFX01FVEhPRCA9ICdkZWZsYXRlJwotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBDb21wcmVzc2lvbkV4dGVuc2lvblBy
b2Nlc3NvckJhc2UuX19pbml0X18oc2VsZiwgcmVxdWVzdCkKLQotICAgIGRlZiBuYW1lKHNlbGYp
OgotICAgICAgICByZXR1cm4gY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9O
Ci0KLSAgICBkZWYgX2xvb2t1cF9jb21wcmVzc2lvbl9wcm9jZXNzb3Ioc2VsZiwgbWV0aG9kX2Rl
c2MpOgotICAgICAgICBpZiBtZXRob2RfZGVzYy5uYW1lKCkgPT0gc2VsZi5fREVGTEFURV9NRVRI
T0Q6Ci0gICAgICAgICAgICByZXR1cm4gUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IobWV0aG9kX2Rlc2MsIEZhbHNlKQotICAgICAgICByZXR1cm4gTm9uZQotCi0KLV9hdmFpbGFi
bGVfcHJvY2Vzc29yc1tjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT05dID0g
KAotICAgIFBlck1lc3NhZ2VDb21wcmVzc0V4dGVuc2lvblByb2Nlc3NvcikKLV9jb21wcmVzc2lv
bl9leHRlbnNpb25fbmFtZXMuYXBwZW5kKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VY
VEVOU0lPTikKLQotCi1jbGFzcyBNdXhFeHRlbnNpb25Qcm9jZXNzb3IoRXh0ZW5zaW9uUHJvY2Vz
c29ySW50ZXJmYWNlKToKLSAgICAiIiJXZWJTb2NrZXQgbXVsdGlwbGV4aW5nIGV4dGVuc2lvbiBw
cm9jZXNzb3IuIiIiCi0KLSAgICBfUVVPVEFfUEFSQU0gPSAncXVvdGEnCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAgIEV4dGVuc2lvblByb2Nlc3NvckludGVyZmFj
ZS5fX2luaXRfXyhzZWxmLCByZXF1ZXN0KQotICAgICAgICBzZWxmLl9xdW90YSA9IDAKLSAgICAg
ICAgc2VsZi5fZXh0ZW5zaW9ucyA9IFtdCi0KLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAg
cmV0dXJuIGNvbW1vbi5NVVhfRVhURU5TSU9OCi0KLSAgICBkZWYgY2hlY2tfY29uc2lzdGVuY3lf
d2l0aF9vdGhlcl9wcm9jZXNzb3JzKHNlbGYsIHByb2Nlc3NvcnMpOgotICAgICAgICBiZWZvcmVf
bXV4ID0gVHJ1ZQotICAgICAgICBmb3IgcHJvY2Vzc29yIGluIHByb2Nlc3NvcnM6Ci0gICAgICAg
ICAgICBuYW1lID0gcHJvY2Vzc29yLm5hbWUoKQotICAgICAgICAgICAgaWYgbmFtZSA9PSBzZWxm
Lm5hbWUoKToKLSAgICAgICAgICAgICAgICBiZWZvcmVfbXV4ID0gRmFsc2UKLSAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgbm90IHByb2Nlc3Nvci5pc19hY3RpdmUoKToK
LSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgaWYgYmVmb3JlX211eDoKLSAg
ICAgICAgICAgICAgICAjIE11eCBleHRlbnNpb24gY2Fubm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5z
aW9ucwotICAgICAgICAgICAgICAgICMgdGhhdCBkZXBlbmQgb24gZnJhbWUgYm91bmRhcnksIGV4
dGVuc2lvbiBkYXRhIGZpZWxkLCBvciBhbnkKLSAgICAgICAgICAgICAgICAjIHJlc2VydmVkIGJp
dHMgd2hpY2ggYXJlIGF0dHJpYnV0ZWQgdG8gZWFjaCBmcmFtZS4KLSAgICAgICAgICAgICAgICBp
ZiAobmFtZSA9PSBjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04gb3IKLSAgICAgICAgICAg
ICAgICAgICAgbmFtZSA9PSBjb21tb24uWF9XRUJLSVRfREVGTEFURV9GUkFNRV9FWFRFTlNJT04p
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNldF9hY3RpdmUoRmFsc2UpCi0gICAgICAgICAg
ICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAjIE11
eCBleHRlbnNpb24gc2hvdWxkIG5vdCBiZSBhcHBsaWVkIGJlZm9yZSBhbnkgaGlzdG9yeS1iYXNl
ZAotICAgICAgICAgICAgICAgICMgY29tcHJlc3Npb24gZXh0ZW5zaW9uLgotICAgICAgICAgICAg
ICAgIGlmIChuYW1lID09IGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTiBvcgotICAgICAg
ICAgICAgICAgICAgICBuYW1lID09IGNvbW1vbi5YX1dFQktJVF9ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTiBvcgotICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNvbW1vbi5QRVJNRVNTQUdFX0NP
TVBSRVNTSU9OX0VYVEVOU0lPTiBvcgotICAgICAgICAgICAgICAgICAgICBuYW1lID09IGNvbW1v
bi5YX1dFQktJVF9QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTik6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuc2V0X2FjdGl2ZShGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuCi0KLSAgICBkZWYgX2dldF9leHRlbnNpb25fcmVzcG9uc2VfaW50ZXJuYWwoc2VsZik6Ci0g
ICAgICAgIHNlbGYuX2FjdGl2ZSA9IEZhbHNlCi0gICAgICAgIHF1b3RhID0gc2VsZi5fcmVxdWVz
dC5nZXRfcGFyYW1ldGVyX3ZhbHVlKHNlbGYuX1FVT1RBX1BBUkFNKQotICAgICAgICBpZiBxdW90
YSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBxdW90YSA9
IGludChxdW90YSkKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAg
ICAgICAgIHJldHVybiBOb25lCi0gICAgICAgICAgICBpZiBxdW90YSA8IDAgb3IgcXVvdGEgPj0g
MiAqKiAzMjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgc2VsZi5f
cXVvdGEgPSBxdW90YQotCi0gICAgICAgIHNlbGYuX2FjdGl2ZSA9IFRydWUKLSAgICAgICAgcmV0
dXJuIGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLk1VWF9FWFRFTlNJT04pCi0KLSAg
ICBkZWYgX3NldHVwX3N0cmVhbV9vcHRpb25zX2ludGVybmFsKHNlbGYsIHN0cmVhbV9vcHRpb25z
KToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNldF9xdW90YShzZWxmLCBxdW90YSk6Ci0gICAg
ICAgIHNlbGYuX3F1b3RhID0gcXVvdGEKLQotICAgIGRlZiBxdW90YShzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3F1b3RhCi0KLSAgICBkZWYgc2V0X2V4dGVuc2lvbnMoc2VsZiwgZXh0ZW5z
aW9ucyk6Ci0gICAgICAgIHNlbGYuX2V4dGVuc2lvbnMgPSBleHRlbnNpb25zCi0KLSAgICBkZWYg
ZXh0ZW5zaW9ucyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2V4dGVuc2lvbnMKLQotCi1f
YXZhaWxhYmxlX3Byb2Nlc3NvcnNbY29tbW9uLk1VWF9FWFRFTlNJT05dID0gTXV4RXh0ZW5zaW9u
UHJvY2Vzc29yCi0KLQotZGVmIGdldF9leHRlbnNpb25fcHJvY2Vzc29yKGV4dGVuc2lvbl9yZXF1
ZXN0KToKLSAgICAiIiJHaXZlbiBhbiBFeHRlbnNpb25QYXJhbWV0ZXIgcmVwcmVzZW50aW5nIGFu
IGV4dGVuc2lvbiBvZmZlciByZWNlaXZlZAotICAgIGZyb20gYSBjbGllbnQsIGNvbmZpZ3VyZXMg
YW5kIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNvcnJlc3BvbmRpbmcKLSAgICBleHRlbnNp
b24gcHJvY2Vzc29yIGNsYXNzLgotICAgICIiIgotCi0gICAgcHJvY2Vzc29yX2NsYXNzID0gX2F2
YWlsYWJsZV9wcm9jZXNzb3JzLmdldChleHRlbnNpb25fcmVxdWVzdC5uYW1lKCkpCi0gICAgaWYg
cHJvY2Vzc29yX2NsYXNzIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJu
IHByb2Nlc3Nvcl9jbGFzcyhleHRlbnNpb25fcmVxdWVzdCkKLQotCi1kZWYgaXNfY29tcHJlc3Np
b25fZXh0ZW5zaW9uKGV4dGVuc2lvbl9uYW1lKToKLSAgICByZXR1cm4gZXh0ZW5zaW9uX25hbWUg
aW4gX2NvbXByZXNzaW9uX2V4dGVuc2lvbl9uYW1lcwotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvbW9kX3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCBkZGFhZDI3ZjUzYzQ2YmUyYTcxYzcwNGM3MDhmYmIzZjQyZjFhM2QxLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9w
eXdlYnNvY2tldC9mYXN0X21hc2tpbmcuaQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAK
LS8vIENvcHlyaWdodCAyMDEzLCBHb29nbGUgSW5jLgotLy8gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LS8vCi0vLyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLS8vIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLS8vIG1ldDoKLS8vCi0vLyAgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotLy8gbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotLy8gICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotLy8gY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotLy8gaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotLy8g
ZGlzdHJpYnV0aW9uLgotLy8gICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotLy8gY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLS8vIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0vLwotLy8gVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotLy8gIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLS8vIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotLy8gQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLS8vIE9XTkVS
IE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLAotLy8gU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotLy8gTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0vLyBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLS8v
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKLS8vIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotLy8gT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0lbW9kdWxl
IGZhc3RfbWFza2luZwotCi0laW5jbHVkZSAiY3N0cmluZy5pIgotCi0lewotI2luY2x1ZGUgPGNz
dHJpbmc+Ci0KLSNpZmRlZiBfX1NTRTJfXwotI2luY2x1ZGUgPGVtbWludHJpbi5oPgotI2VuZGlm
Ci0lfQotCi0lYXBwbHkgKGNoYXIgKlNUUklORywgaW50IExFTkdUSCkgewotICAgIChjb25zdCBj
aGFyKiBwYXlsb2FkLCBpbnQgcGF5bG9hZF9sZW5ndGgpLAotICAgIChjb25zdCBjaGFyKiBtYXNr
aW5nX2tleSwgaW50IG1hc2tpbmdfa2V5X2xlbmd0aCkgfTsKLSVjc3RyaW5nX291dHB1dF9hbGxv
Y2F0ZV9zaXplKAotICAgIGNoYXIqKiByZXN1bHQsIGludCogcmVzdWx0X2xlbmd0aCwgZGVsZXRl
IFtdICokMSk7Ci0KLSVpbmxpbmUgJXsKLQotdm9pZCBtYXNrKAotICAgIGNvbnN0IGNoYXIqIHBh
eWxvYWQsIGludCBwYXlsb2FkX2xlbmd0aCwKLSAgICBjb25zdCBjaGFyKiBtYXNraW5nX2tleSwg
aW50IG1hc2tpbmdfa2V5X2xlbmd0aCwKLSAgICBpbnQgbWFza2luZ19rZXlfaW5kZXgsCi0gICAg
Y2hhcioqIHJlc3VsdCwgaW50KiByZXN1bHRfbGVuZ3RoKSB7Ci0gICpyZXN1bHQgPSBuZXcgY2hh
cltwYXlsb2FkX2xlbmd0aF07Ci0gICpyZXN1bHRfbGVuZ3RoID0gcGF5bG9hZF9sZW5ndGg7Ci0g
IG1lbWNweSgqcmVzdWx0LCBwYXlsb2FkLCBwYXlsb2FkX2xlbmd0aCk7Ci0KLSAgY2hhciogY3Vy
c29yID0gKnJlc3VsdDsKLSAgY2hhciogY3Vyc29yX2VuZCA9ICpyZXN1bHQgKyAqcmVzdWx0X2xl
bmd0aDsKLQotI2lmZGVmIF9fU1NFMl9fCi0gIHdoaWxlICgoY3Vyc29yIDwgY3Vyc29yX2VuZCkg
JiYKLSAgICAgICAgIChyZWludGVycHJldF9jYXN0PHNpemVfdD4oY3Vyc29yKSAmIDB4ZikpIHsK
LSAgICAqY3Vyc29yIF49IG1hc2tpbmdfa2V5W21hc2tpbmdfa2V5X2luZGV4XTsKLSAgICArK2N1
cnNvcjsKLSAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUg
bWFza2luZ19rZXlfbGVuZ3RoOwotICB9Ci0gIGlmIChjdXJzb3IgPT0gY3Vyc29yX2VuZCkgewot
ICAgIHJldHVybjsKLSAgfQotCi0gIGNvbnN0IGludCBrQmxvY2tTaXplID0gMTY7Ci0gIF9fbTEy
OGkgbWFza2luZ19rZXlfYmxvY2s7Ci0gIGZvciAoaW50IGkgPSAwOyBpIDwga0Jsb2NrU2l6ZTsg
KytpKSB7Ci0gICAgKihyZWludGVycHJldF9jYXN0PGNoYXIqPigmbWFza2luZ19rZXlfYmxvY2sp
ICsgaSkgPQotICAgICAgICBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRleF07Ci0gICAgbWFz
a2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlfaW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xl
bmd0aDsKLSAgfQotCi0gIHdoaWxlIChjdXJzb3IgKyBrQmxvY2tTaXplIDw9IGN1cnNvcl9lbmQp
IHsKLSAgICBfX20xMjhpIHBheWxvYWRfYmxvY2sgPQotICAgICAgICBfbW1fbG9hZF9zaTEyOChy
ZWludGVycHJldF9jYXN0PF9fbTEyOGkqPihjdXJzb3IpKTsKLSAgICBfbW1fc3RyZWFtX3NpMTI4
KHJlaW50ZXJwcmV0X2Nhc3Q8X19tMTI4aSo+KGN1cnNvciksCi0gICAgICAgICAgICAgICAgICAg
ICBfbW1feG9yX3NpMTI4KHBheWxvYWRfYmxvY2ssIG1hc2tpbmdfa2V5X2Jsb2NrKSk7Ci0gICAg
Y3Vyc29yICs9IGtCbG9ja1NpemU7Ci0gIH0KLSNlbmRpZgotCi0gIHdoaWxlIChjdXJzb3IgPCBj
dXJzb3JfZW5kKSB7Ci0gICAgKmN1cnNvciBePSBtYXNraW5nX2tleVttYXNraW5nX2tleV9pbmRl
eF07Ci0gICAgKytjdXJzb3I7Ci0gICAgbWFza2luZ19rZXlfaW5kZXggPSAobWFza2luZ19rZXlf
aW5kZXggKyAxKSAlIG1hc2tpbmdfa2V5X2xlbmd0aDsKLSAgfQotfQotCi0lfQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE5NGY2YjM5NWFlMjNiM2ExMzY0MWNkNGI5MDRmNTkzNWQxZmExZjIu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
bW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0x
LDExMCArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMg
ZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAot
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJXZWJTb2NrZXQgb3BlbmluZyBo
YW5kc2hha2UgcHJvY2Vzc29yLiBUaGlzIGNsYXNzIHRyeSB0byBhcHBseSBhdmFpbGFibGUKLW9w
ZW5pbmcgaGFuZHNoYWtlIHByb2Nlc3NvcnMgZm9yIGVhY2ggcHJvdG9jb2wgdmVyc2lvbiB1bnRp
bCBhIGNvbm5lY3Rpb24gaXMKLXN1Y2Nlc3NmdWxseSBlc3RhYmxpc2hlZC4KLSIiIgotCi0KLWlt
cG9ydCBsb2dnaW5nCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20g
bW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZSBpbXBvcnQgaHliaTAwCi1mcm9tIG1vZF9weXdlYnNv
Y2tldC5oYW5kc2hha2UgaW1wb3J0IGh5YmkKLSMgRXhwb3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRp
b24sIEhhbmRzaGFrZUV4Y2VwdGlvbiwgYW5kIFZlcnNpb25FeGNlcHRpb24KLSMgc3ltYm9sIGZy
b20gdGhpcyBtb2R1bGUuCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1w
b3J0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgSGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5o
YW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRpb24KLQotCi1fTE9HR0VSID0gbG9n
Z2luZy5nZXRMb2dnZXIoX19uYW1lX18pCi0KLQotZGVmIGRvX2hhbmRzaGFrZShyZXF1ZXN0LCBk
aXNwYXRjaGVyLCBhbGxvd0RyYWZ0NzU9RmFsc2UsIHN0cmljdD1GYWxzZSk6Ci0gICAgIiIiUGVy
Zm9ybXMgV2ViU29ja2V0IGhhbmRzaGFrZS4KLQotICAgIEFyZ3M6Ci0gICAgICAgIHJlcXVlc3Q6
IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgZGlzcGF0Y2hlcjogRGlzcGF0Y2hlciAoZGlz
cGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAgIGFsbG93RHJhZnQ3NTogb2Jzb2xldGUgYXJndW1l
bnQuIGlnbm9yZWQuCi0gICAgICAgIHN0cmljdDogb2Jzb2xldGUgYXJndW1lbnQuIGlnbm9yZWQu
Ci0KLSAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJj
ZSBpbiBwZXJmb3JtaW5nCi0gICAgaGFuZHNoYWtlLgotICAgICIiIgotCi0gICAgX0xPR0dFUi5k
ZWJ1ZygnQ2xpZW50XCdzIG9wZW5pbmcgaGFuZHNoYWtlIHJlc291cmNlOiAlcicsIHJlcXVlc3Qu
dXJpKQotICAgICMgVG8gcHJpbnQgbWltZXRvb2xzLk1lc3NhZ2UgYXMgZXNjYXBlZCBvbmUtbGlu
ZSBzdHJpbmcsIHdlIGNvbnZlcnRzCi0gICAgIyBoZWFkZXJzX2luIHRvIGRpY3Qgb2JqZWN0LiBX
aXRob3V0IGNvbnZlcnNpb24sIGlmIHdlIHVzZSAlciwgaXQganVzdAotICAgICMgcHJpbnRzIHRo
ZSB0eXBlIGFuZCBhZGRyZXNzLCBhbmQgaWYgd2UgdXNlICVzLCBpdCBwcmludHMgdGhlIG9yaWdp
bmFsCi0gICAgIyBoZWFkZXIgc3RyaW5nIGFzIG11bHRpcGxlIGxpbmVzLgotICAgICMKLSAgICAj
IEJvdGggbWltZXRvb2xzLk1lc3NhZ2UgYW5kIE1wVGFibGVfVHlwZSBvZiBtb2RfcHl0aG9uIGNh
biBiZQotICAgICMgY29udmVydGVkIHRvIGRpY3QuCi0gICAgIwotICAgICMgbWltZXRvb2xzLk1l
c3NhZ2UuX19zdHJfXyByZXR1cm5zIHRoZSBvcmlnaW5hbCBoZWFkZXIgc3RyaW5nLgotICAgICMg
ZGljdChtaW1ldG9vbHMuTWVzc2FnZSBvYmplY3QpIHJldHVybnMgdGhlIG1hcCBmcm9tIGhlYWRl
ciBuYW1lcyB0bwotICAgICMgaGVhZGVyIHZhbHVlcy4gV2hpbGUgTXBUYWJsZV9UeXBlIGRvZXNu
J3QgaGF2ZSBzdWNoIF9fc3RyX18gYnV0IGp1c3QKLSAgICAjIF9fcmVwcl9fIHdoaWNoIGZvcm1h
dHMgaXRzZWxmIGFzIHdlbGwgYXMgZGljdGlvbmFyeSBvYmplY3QuCi0gICAgX0xPR0dFUi5kZWJ1
ZygKLSAgICAgICAgJ0NsaWVudFwncyBvcGVuaW5nIGhhbmRzaGFrZSBoZWFkZXJzOiAlcicsIGRp
Y3QocmVxdWVzdC5oZWFkZXJzX2luKSkKLQotICAgIGhhbmRzaGFrZXJzID0gW10KLSAgICBoYW5k
c2hha2Vycy5hcHBlbmQoCi0gICAgICAgICgnUkZDIDY0NTUnLCBoeWJpLkhhbmRzaGFrZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikpKQotICAgIGhhbmRzaGFrZXJzLmFwcGVuZCgKLSAgICAgICAgKCdI
eUJpIDAwJywgaHliaTAwLkhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikpKQotCi0gICAg
Zm9yIG5hbWUsIGhhbmRzaGFrZXIgaW4gaGFuZHNoYWtlcnM6Ci0gICAgICAgIF9MT0dHRVIuZGVi
dWcoJ1RyeWluZyBwcm90b2NvbCB2ZXJzaW9uICVzJywgbmFtZSkKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgX0xPR0dFUi5p
bmZvKCdFc3RhYmxpc2hlZCAoJXMgcHJvdG9jb2wpJywgbmFtZSkKLSAgICAgICAgICAgIHJldHVy
bgotICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgX0xP
R0dFUi5kZWJ1ZygKLSAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNvbXBsZXRlIG9wZW5pbmcg
aGFuZHNoYWtlIGFzICVzIHByb3RvY29sOiAlcicsCi0gICAgICAgICAgICAgICAgbmFtZSwgZSkK
LSAgICAgICAgICAgIGlmIGUuc3RhdHVzOgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAgICAg
ICAgZXhjZXB0IEFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICByYWlzZQot
ICAgICAgICBleGNlcHQgVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHJhaXNlCi0K
LSAgICAjIFRPRE8odG95b3NoaW0pOiBBZGQgYSB0ZXN0IHRvIGNvdmVyIHRoZSBjYXNlIGFsbCBo
YW5kc2hha2VycyBmYWlsLgotICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAg
J0ZhaWxlZCB0byBjb21wbGV0ZSBvcGVuaW5nIGhhbmRzaGFrZSBmb3IgYWxsIGF2YWlsYWJsZSBw
cm90b2NvbHMnLAotICAgICAgICBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNU
KQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5k
c2hha2UvX2Jhc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTNhNTg0Yjdi
M2U1MmI2MDdiNjViZjM4YWZkY2FkZGNhMmZlNzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9f
YmFzZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi0jIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi0iIiJDb21tb24gZnVuY3Rpb25zIGFuZCBleGNlcHRpb25zIHVzZWQgYnkgV2ViU29ja2V0
IG9wZW5pbmcgaGFuZHNoYWtlCi1wcm9jZXNzb3JzLgotIiIiCi0KLQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGh0dHBfaGVh
ZGVyX3V0aWwKLQotCi1jbGFzcyBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uKEV4Y2VwdGlvbik6Ci0g
ICAgIiIiRXhjZXB0aW9uIGZvciBhYm9ydGluZyBhIGNvbm5lY3Rpb24gaW50ZW50aW9uYWxseS4K
LQotICAgIElmIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbiBkb19leHRyYV9oYW5kc2hha2Ug
aGFuZGxlciwgdGhlIGNvbm5lY3Rpb24KLSAgICB3aWxsIGJlIGFiYW5kb25lZC4gTm8gb3RoZXIg
V2ViU29ja2V0IG9yIEhUVFAoUykgaGFuZGxlciB3aWxsIGJlIGludm9rZWQuCi0KLSAgICBJZiB0
aGlzIGV4Y2VwdGlvbiBpcyByYWlzZWQgaW4gdHJhbnNmZXJfZGF0YV9oYW5kbGVyLCB0aGUgY29u
bmVjdGlvbiB3aWxsCi0gICAgYmUgY2xvc2VkIHdpdGhvdXQgY2xvc2luZyBoYW5kc2hha2UuIE5v
IG90aGVyIFdlYlNvY2tldCBvciBIVFRQKFMpIGhhbmRsZXIKLSAgICB3aWxsIGJlIGludm9rZWQu
Ci0gICAgIiIiCi0KLSAgICBwYXNzCi0KLQotY2xhc3MgSGFuZHNoYWtlRXhjZXB0aW9uKEV4Y2Vw
dGlvbik6Ci0gICAgIiIiVGhpcyBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQgd2hlbiBhbiBlcnJv
ciBvY2N1cnJlZCB3aGlsZSBwcm9jZXNzaW5nCi0gICAgV2ViU29ja2V0IGluaXRpYWwgaGFuZHNo
YWtlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cz1Ob25l
KToKLSAgICAgICAgc3VwZXIoSGFuZHNoYWtlRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1l
KQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwotCi0KLWNsYXNzIFZlcnNpb25FeGNlcHRp
b24oRXhjZXB0aW9uKToKLSAgICAiIiJUaGlzIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNlZCB3aGVu
IGEgdmVyc2lvbiBvZiBjbGllbnQgcmVxdWVzdCBkb2VzIG5vdAotICAgIG1hdGNoIHdpdGggdmVy
c2lvbiB0aGUgc2VydmVyIHN1cHBvcnRzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIG5hbWUsIHN1cHBvcnRlZF92ZXJzaW9ucz0nJyk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBh
biBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgc3VwcG9ydGVkX3ZlcnNp
b246IGEgc3RyIG9iamVjdCB0byBzaG93IHN1cHBvcnRlZCBoeWJpIHZlcnNpb25zLgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuICc4LCAxMycpCi0gICAgICAgICIiIgotICAg
ICAgICBzdXBlcihWZXJzaW9uRXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAg
ICBzZWxmLnN1cHBvcnRlZF92ZXJzaW9ucyA9IHN1cHBvcnRlZF92ZXJzaW9ucwotCi0KLWRlZiBn
ZXRfZGVmYXVsdF9wb3J0KGlzX3NlY3VyZSk6Ci0gICAgaWYgaXNfc2VjdXJlOgotICAgICAgICBy
ZXR1cm4gY29tbW9uLkRFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAotICAgIGVsc2U6Ci0g
ICAgICAgIHJldHVybiBjb21tb24uREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKLQotCi1kZWYgdmFs
aWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpOgotICAgICIiIlZhbGlkYXRlIGEgdmFsdWUg
aW4gdGhlIFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wgZmllbGQuCi0KLSAgICBTZWUgdGhlIFNlY3Rp
b24gNC4xLiwgNC4yLjIuLCBhbmQgNC4zLiBvZiBSRkMgNjQ1NS4KLSAgICAiIiIKLQotICAgIGlm
IG5vdCBzdWJwcm90b2NvbDoKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZh
bGlkIHN1YnByb3RvY29sIG5hbWU6IGVtcHR5JykKLQotICAgICMgUGFyYW1ldGVyIHNob3VsZCBi
ZSBlbmNvZGVkIEhUVFAgdG9rZW4uCi0gICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNp
bmdTdGF0ZShzdWJwcm90b2NvbCkKLSAgICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3Vt
ZV90b2tlbihzdGF0ZSkKLSAgICByZXN0ID0gaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKQot
ICAgICMgSWYgfHJlc3R8IGlzIG5vdCBOb25lLCB8c3VicHJvdG9jb2x8IGlzIG5vdCBvbmUgdG9r
ZW4gb3IgaW52YWxpZC4gSWYKLSAgICAjIHxyZXN0fCBpcyBOb25lLCB8dG9rZW58IG11c3Qgbm90
IGJlIE5vbmUgYmVjYXVzZSB8c3VicHJvdG9jb2x8IGlzCi0gICAgIyBjb25jYXRlbmF0aW9uIG9m
IHx0b2tlbnwgYW5kIHxyZXN0fCBhbmQgaXMgbm90IE5vbmUuCi0gICAgaWYgcmVzdCBpcyBub3Qg
Tm9uZToKLSAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdJbnZhbGlkIG5vbi10b2tl
biBzdHJpbmcgaW4gc3VicHJvdG9jb2wgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ25hbWU6ICVyJyAlIHJlc3QpCi0KLQotZGVmIHBhcnNlX2hvc3RfaGVhZGVyKHJlcXVlc3Qp
OgotICAgIGZpZWxkcyA9IHJlcXVlc3QuaGVhZGVyc19pbltjb21tb24uSE9TVF9IRUFERVJdLnNw
bGl0KCc6JywgMSkKLSAgICBpZiBsZW4oZmllbGRzKSA9PSAxOgotICAgICAgICByZXR1cm4gZmll
bGRzWzBdLCBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNfaHR0cHMoKSkKLSAgICB0cnk6Ci0g
ICAgICAgIHJldHVybiBmaWVsZHNbMF0sIGludChmaWVsZHNbMV0pCi0gICAgZXhjZXB0IFZhbHVl
RXJyb3IsIGU6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBwb3J0
IG51bWJlciBmb3JtYXQ6ICVyJyAlIGUpCi0KLQotZGVmIGZvcm1hdF9oZWFkZXIobmFtZSwgdmFs
dWUpOgotICAgIHJldHVybiAnJXM6ICVzXHJcbicgJSAobmFtZSwgdmFsdWUpCi0KLQotZGVmIGdl
dF9tYW5kYXRvcnlfaGVhZGVyKHJlcXVlc3QsIGtleSk6Ci0gICAgdmFsdWUgPSByZXF1ZXN0Lmhl
YWRlcnNfaW4uZ2V0KGtleSkKLSAgICBpZiB2YWx1ZSBpcyBOb25lOgotICAgICAgICByYWlzZSBI
YW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlciAlcyBpcyBub3QgZGVmaW5lZCcgJSBrZXkpCi0gICAg
cmV0dXJuIHZhbHVlCi0KLQotZGVmIHZhbGlkYXRlX21hbmRhdG9yeV9oZWFkZXIocmVxdWVzdCwg
a2V5LCBleHBlY3RlZF92YWx1ZSwgZmFpbF9zdGF0dXM9Tm9uZSk6Ci0gICAgdmFsdWUgPSBnZXRf
bWFuZGF0b3J5X2hlYWRlcihyZXF1ZXN0LCBrZXkpCi0KLSAgICBpZiB2YWx1ZS5sb3dlcigpICE9
IGV4cGVjdGVkX3ZhbHVlLmxvd2VyKCk6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlv
bigKLSAgICAgICAgICAgICdFeHBlY3RlZCAlciBmb3IgaGVhZGVyICVzIGJ1dCBmb3VuZCAlciAo
Y2FzZS1pbnNlbnNpdGl2ZSknICUKLSAgICAgICAgICAgIChleHBlY3RlZF92YWx1ZSwga2V5LCB2
YWx1ZSksIHN0YXR1cz1mYWlsX3N0YXR1cykKLQotCi1kZWYgY2hlY2tfcmVxdWVzdF9saW5lKHJl
cXVlc3QpOgotICAgICMgNS4xIDEuIFRoZSB0aHJlZSBjaGFyYWN0ZXIgVVRGLTggc3RyaW5nICJH
RVQiLgotICAgICMgNS4xIDIuIEEgVVRGLTgtZW5jb2RlZCBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVy
ICgweDIwIGJ5dGUpLgotICAgIGlmIHJlcXVlc3QubWV0aG9kICE9ICdHRVQnOgotICAgICAgICBy
YWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ01ldGhvZCBpcyBub3QgR0VUOiAlcicgJSByZXF1ZXN0
Lm1ldGhvZCkKLQotICAgIGlmIHJlcXVlc3QucHJvdG9jb2wgIT0gJ0hUVFAvMS4xJzoKLSAgICAg
ICAgcmFpc2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdWZXJzaW9uIGlzIG5vdCBIVFRQLzEuMTogJXIn
ICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QucHJvdG9jb2wpCi0K
LQotZGVmIHBhcnNlX3Rva2VuX2xpc3QoZGF0YSk6Ci0gICAgIiIiUGFyc2VzIGEgaGVhZGVyIHZh
bHVlIHdoaWNoIGZvbGxvd3MgMSN0b2tlbiBhbmQgcmV0dXJucyBwYXJzZWQgZWxlbWVudHMKLSAg
ICBhcyBhIGxpc3Qgb2Ygc3RyaW5ncy4KLQotICAgIExlYWRpbmcgTFdTZXMgbXVzdCBiZSB0cmlt
bWVkLgotICAgICIiIgotCi0gICAgc3RhdGUgPSBodHRwX2hlYWRlcl91dGlsLlBhcnNpbmdTdGF0
ZShkYXRhKQotCi0gICAgdG9rZW5fbGlzdCA9IFtdCi0KLSAgICB3aGlsZSBUcnVlOgotICAgICAg
ICB0b2tlbiA9IGh0dHBfaGVhZGVyX3V0aWwuY29uc3VtZV90b2tlbihzdGF0ZSkKLSAgICAgICAg
aWYgdG9rZW4gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB0b2tlbl9saXN0LmFwcGVuZCh0b2tl
bikKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVfbHdzZXMoc3RhdGUpCi0KLSAg
ICAgICAgaWYgaHR0cF9oZWFkZXJfdXRpbC5wZWVrKHN0YXRlKSBpcyBOb25lOgotICAgICAgICAg
ICAgYnJlYWsKLQotICAgICAgICBpZiBub3QgaHR0cF9oZWFkZXJfdXRpbC5jb25zdW1lX3N0cmlu
ZyhzdGF0ZSwgJywnKToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnRXhwZWN0ZWQgYSBjb21tYSBidXQgZm91bmQgJXInICUgaHR0cF9oZWFk
ZXJfdXRpbC5wZWVrKHN0YXRlKSkKLQotICAgICAgICBodHRwX2hlYWRlcl91dGlsLmNvbnN1bWVf
bHdzZXMoc3RhdGUpCi0KLSAgICBpZiBsZW4odG9rZW5fbGlzdCkgPT0gMDoKLSAgICAgICAgcmFp
c2UgSGFuZHNoYWtlRXhjZXB0aW9uKCdObyB2YWxpZCB0b2tlbiBmb3VuZCcpCi0KLSAgICByZXR1
cm4gdG9rZW5fbGlzdAotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9oeWJpLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAx
YWQxMGVhMzcyODI5ZDA5M2Q2NmU2YWM2MGFjY2NkOWMxY2FlZmI2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9o
YW5kc2hha2UvaHliaS5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMCArMCwwIEBACi0jIENvcHly
aWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0j
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgcHJvdmlkZXMgdGhlIG9wZW5pbmcgaGFuZHNoYWtl
IHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldAotcHJvdG9jb2wgKFJGQyA2NDU1KS4KLQotU3Bl
Y2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL3JmYzY0NTUKLSIiIgotCi0K
LSMgTm90ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlIGlzIHVzZWQgaW4gdGhpcyBtb2R1bGUs
IGV2ZW4gdGhvdWdoIG1vZF9weXRob24KLSMgZG9jdW1lbnQgc2F5cyB0aGF0IGl0IHNob3VsZCBi
ZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbiBoYW5kbGVycy4KLSMgVW5mb3J0dW5hdGVseSwgd2Ug
aGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwgcmVxdWVzdC53cml0ZSBpcyBub3QK
LSMgc3VpdGFibGUgYmVjYXVzZSBpdCBkb2Vzbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMgd3Jp
dGluZy4KLQotCi1pbXBvcnQgYmFzZTY0Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBv
cnQgcmUKLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3
ZWJzb2NrZXQuZXh0ZW5zaW9ucyBpbXBvcnQgZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IKLWZyb20g
bW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IGlzX2NvbXByZXNzaW9uX2V4dGVuc2lv
bgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBjaGVja19yZXF1
ZXN0X2xpbmUKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgZm9y
bWF0X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBn
ZXRfbWFuZGF0b3J5X2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNl
IGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFr
ZS5fYmFzZSBpbXBvcnQgcGFyc2VfdG9rZW5fbGlzdAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFu
ZHNoYWtlLl9iYXNlIGltcG9ydCB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IHZhbGlkYXRlX3N1YnByb3RvY29sCi1m
cm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IFZlcnNpb25FeGNlcHRp
b24KLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5zdHJlYW0gaW1wb3J0IFN0cmVhbU9wdGlvbnMKLWZyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCB1dGlsCi0KLQotIyBVc2VkIHRvIHZhbGlkYXRlIHRoZSB2YWx1ZSBpbiB0aGUg
U2VjLVdlYlNvY2tldC1LZXkgaGVhZGVyIHN0cmljdGx5LiBSRkMgNDY0OAotIyBkaXNhbGxvd3Mg
bm9uLXplcm8gcGFkZGluZywgc28gdGhlIGNoYXJhY3RlciByaWdodCBiZWZvcmUgPT0gbXVzdCBi
ZSBhbnkgb2YKLSMgQSwgUSwgZyBhbmQgdy4KLV9TRUNfV0VCU09DS0VUX0tFWV9SRUdFWCA9IHJl
LmNvbXBpbGUoJ15bKy8wLTlBLVphLXpdezIxfVtBUWd3XT09JCcpCi0KLSMgRGVmaW5pbmcgYWxp
YXNlcyBmb3IgdmFsdWVzIHVzZWQgZnJlcXVlbnRseS4KLV9WRVJTSU9OX0xBVEVTVCA9IGNvbW1v
bi5WRVJTSU9OX0hZQklfTEFURVNUCi1fVkVSU0lPTl9MQVRFU1RfU1RSSU5HID0gc3RyKF9WRVJT
SU9OX0xBVEVTVCkKLV9TVVBQT1JURURfVkVSU0lPTlMgPSBbCi0gICAgX1ZFUlNJT05fTEFURVNU
LAotXQotCi0KLWRlZiBjb21wdXRlX2FjY2VwdChrZXkpOgotICAgICIiIkNvbXB1dGVzIHZhbHVl
IGZvciB0aGUgU2VjLVdlYlNvY2tldC1BY2NlcHQgaGVhZGVyIGZyb20gdmFsdWUgb2YgdGhlCi0g
ICAgU2VjLVdlYlNvY2tldC1LZXkgaGVhZGVyLgotICAgICIiIgotCi0gICAgYWNjZXB0X2JpbmFy
eSA9IHV0aWwuc2hhMV9oYXNoKAotICAgICAgICBrZXkgKyBjb21tb24uV0VCU09DS0VUX0FDQ0VQ
VF9VVUlEKS5kaWdlc3QoKQotICAgIGFjY2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUoYWNjZXB0X2Jp
bmFyeSkKLQotICAgIHJldHVybiAoYWNjZXB0LCBhY2NlcHRfYmluYXJ5KQotCi0KLWNsYXNzIEhh
bmRzaGFrZXIob2JqZWN0KToKLSAgICAiIiJPcGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9y
IHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0IGFuIGlu
c3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICByZXF1ZXN0OiBtb2RfcHl0aG9u
IHJlcXVlc3QuCi0gICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChkaXNwYXRjaC5E
aXNwYXRjaGVyKS4KLQotICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0dHJpYnV0ZXMgc3Vj
aCBhcyB3c19yZXNvdXJjZSBkdXJpbmcgaGFuZHNoYWtlLgotICAgICAgICAiIiIKLQotICAgICAg
ICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBz
ZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9kaXNwYXRjaGVyID0gZGlzcGF0
Y2hlcgotCi0gICAgZGVmIF92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcihzZWxmKToKLSAgICAg
ICAgY29ubmVjdGlvbiA9IGdldF9tYW5kYXRvcnlfaGVhZGVyKAotICAgICAgICAgICAgc2VsZi5f
cmVxdWVzdCwgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSKQotCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGNvbm5lY3Rpb25fdG9rZW5zID0gcGFyc2VfdG9rZW5fbGlzdChjb25uZWN0aW9uKQot
ICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgcmFpc2Ug
SGFuZHNoYWtlRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdGYWlsZWQgdG8gcGFyc2UgJXM6
ICVzJyAlIChjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGUpKQotCi0gICAgICAgIGNvbm5lY3Rp
b25faXNfdmFsaWQgPSBGYWxzZQotICAgICAgICBmb3IgdG9rZW4gaW4gY29ubmVjdGlvbl90b2tl
bnM6Ci0gICAgICAgICAgICBpZiB0b2tlbi5sb3dlcigpID09IGNvbW1vbi5VUEdSQURFX0NPTk5F
Q1RJT05fVFlQRS5sb3dlcigpOgotICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25faXNfdmFsaWQg
PSBUcnVlCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaWYgbm90IGNvbm5lY3Rpb25f
aXNfdmFsaWQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAg
ICAgICAgICAgJyVzIGhlYWRlciBkb2VzblwndCBjb250YWluICIlcyInICUKLSAgICAgICAgICAg
ICAgICAoY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9O
X1RZUEUpKQotCi0gICAgZGVmIGRvX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgc2VsZi5fcmVx
dWVzdC53c19jbG9zZV9jb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2Nsb3Nl
X3JlYXNvbiA9IE5vbmUKLQotICAgICAgICAjIFBhcnNpbmcuCi0KLSAgICAgICAgY2hlY2tfcmVx
dWVzdF9saW5lKHNlbGYuX3JlcXVlc3QpCi0KLSAgICAgICAgdmFsaWRhdGVfbWFuZGF0b3J5X2hl
YWRlcigKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsCi0gICAgICAgICAgICBjb21tb24uVVBH
UkFERV9IRUFERVIsCi0gICAgICAgICAgICBjb21tb24uV0VCU09DS0VUX1VQR1JBREVfVFlQRSkK
LQotICAgICAgICBzZWxmLl92YWxpZGF0ZV9jb25uZWN0aW9uX2hlYWRlcigpCi0KLSAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19yZXNvdXJjZSA9IHNlbGYuX3JlcXVlc3QudXJpCi0KLSAgICAgICAg
dW51c2VkX2hvc3QgPSBnZXRfbWFuZGF0b3J5X2hlYWRlcihzZWxmLl9yZXF1ZXN0LCBjb21tb24u
SE9TVF9IRUFERVIpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c192ZXJzaW9uID0gc2VsZi5f
Y2hlY2tfdmVyc2lvbigpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fZ2V0X29y
aWdpbigpCi0gICAgICAgICAgICBzZWxmLl9zZXRfcHJvdG9jb2woKQotICAgICAgICAgICAgc2Vs
Zi5fcGFyc2VfZXh0ZW5zaW9ucygpCi0KLSAgICAgICAgICAgICMgS2V5IHZhbGlkYXRpb24sIHJl
c3BvbnNlIGdlbmVyYXRpb24uCi0KLSAgICAgICAgICAgIGtleSA9IHNlbGYuX2dldF9rZXkoKQot
ICAgICAgICAgICAgKGFjY2VwdCwgYWNjZXB0X2JpbmFyeSkgPSBjb21wdXRlX2FjY2VwdChrZXkp
Ci0gICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgJyVzOiAl
ciAoJXMpJywKLSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVB
REVSLAotICAgICAgICAgICAgICAgIGFjY2VwdCwKLSAgICAgICAgICAgICAgICB1dGlsLmhleGlm
eShhY2NlcHRfYmluYXJ5KSkKLQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdQcm90
b2NvbCB2ZXJzaW9uIGlzIFJGQyA2NDU1JykKLQotICAgICAgICAgICAgIyBTZXR1cCBleHRlbnNp
b24gcHJvY2Vzc29ycy4KLQotICAgICAgICAgICAgcHJvY2Vzc29ycyA9IFtdCi0gICAgICAgICAg
ICBpZiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zIGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgICAgIGZvciBleHRlbnNpb25fcmVxdWVzdCBpbiBzZWxmLl9yZXF1ZXN0Lndz
X3JlcXVlc3RlZF9leHRlbnNpb25zOgotICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IgPSBn
ZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcihleHRlbnNpb25fcmVxdWVzdCkKLSAgICAgICAgICAgICAg
ICAgICAgIyBVbmtub3duIGV4dGVuc2lvbiByZXF1ZXN0cyBhcmUganVzdCBpZ25vcmVkLgotICAg
ICAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAg
ICAgICAgICAgICBwcm9jZXNzb3JzLmFwcGVuZChwcm9jZXNzb3IpCi0gICAgICAgICAgICBzZWxm
Ll9yZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzID0gcHJvY2Vzc29ycwotCi0gICAgICAg
ICAgICAjIExpc3Qgb2YgZXh0cmEgaGVhZGVycy4gVGhlIGV4dHJhIGhhbmRzaGFrZSBoYW5kbGVy
IG1heSBhZGQgaGVhZGVyCi0gICAgICAgICAgICAjIGRhdGEgYXMgbmFtZS92YWx1ZSBwYWlycyB0
byB0aGlzIGxpc3QgYW5kIHB5d2Vic29ja2V0IGFwcGVuZHMKLSAgICAgICAgICAgICMgdGhlbSB0
byB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZS4KLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuZXh0
cmFfaGVhZGVycyA9IFtdCi0KLSAgICAgICAgICAgICMgRXh0cmEgaGFuZHNoYWtlIGhhbmRsZXIg
bWF5IG1vZGlmeS9yZW1vdmUgcHJvY2Vzc29ycy4KLSAgICAgICAgICAgIHNlbGYuX2Rpc3BhdGNo
ZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYuX3JlcXVlc3QpCi0gICAgICAgICAgICBwcm9jZXNz
b3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3NvciBpcyBub3QgTm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29ycykKLQotICAgICAgICAgICAgIyBBc2sgZWFjaCBwcm9jZXNzb3IgaWYgdGhlcmUg
YXJlIGV4dGVuc2lvbnMgb24gdGhlIHJlcXVlc3Qgd2hpY2gKLSAgICAgICAgICAgICMgY2Fubm90
IGNvLWV4aXN0LiBXaGVuIHByb2Nlc3NvciBkZWNpZGVkIG90aGVyIHByb2Nlc3NvcnMgY2Fubm90
Ci0gICAgICAgICAgICAjIGNvLWV4aXN0IHdpdGggaXQsIHRoZSBwcm9jZXNzb3IgbWFya3MgdGhl
bSAob3IgaXRzZWxmKSBhcwotICAgICAgICAgICAgIyAiaW5hY3RpdmUiLiBUaGUgZmlyc3QgZXh0
ZW5zaW9uIHByb2Nlc3NvciBoYXMgdGhlIHJpZ2h0IHRvCi0gICAgICAgICAgICAjIG1ha2UgdGhl
IGZpbmFsIGNhbGwuCi0gICAgICAgICAgICBmb3IgcHJvY2Vzc29yIGluIHJldmVyc2VkKHByb2Nl
c3NvcnMpOgotICAgICAgICAgICAgICAgIGlmIHByb2Nlc3Nvci5pc19hY3RpdmUoKToKLSAgICAg
ICAgICAgICAgICAgICAgcHJvY2Vzc29yLmNoZWNrX2NvbnNpc3RlbmN5X3dpdGhfb3RoZXJfcHJv
Y2Vzc29ycygKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2Nlc3NvcnMpCi0gICAgICAgICAg
ICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6IHByb2Nlc3Nvci5pc19hY3Rp
dmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29ycykKLQotICAg
ICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0KLSAgICAgICAgICAgICMgV2UgbmVl
ZCB0byB0YWtlIGludG8gYWNjb3VudCBvZiBtdXggZXh0ZW5zaW9uIGhlcmUuCi0gICAgICAgICAg
ICAjIElmIG11eCBleHRlbnNpb24gZXhpc3RzOgotICAgICAgICAgICAgIyAtIFJlbW92ZSBwcm9j
ZXNzb3JzIG9mIGV4dGVuc2lvbnMgZm9yIGxvZ2ljYWwgY2hhbm5lbCwKLSAgICAgICAgICAgICMg
ICB3aGljaCBhcmUgcHJvY2Vzc29ycyBsb2NhdGVkIGJlZm9yZSB0aGUgbXV4IHByb2Nlc3Nvcgot
ICAgICAgICAgICAgIyAtIFBhc3MgZXh0ZW5zaW9uIHJlcXVlc3RzIGZvciBsb2dpY2FsIGNoYW5u
ZWwgdG8gbXV4IHByb2Nlc3NvcgotICAgICAgICAgICAgIyAtIEF0dGFjaCB0aGUgbXV4IHByb2Nl
c3NvciB0byB0aGUgcmVxdWVzdC4gSXQgd2lsbCBiZSByZWZlcnJlZAotICAgICAgICAgICAgIyAg
IGJ5IGRpc3BhdGNoZXIgdG8gc2VlIHdoZXRoZXIgdGhlIGRpc3BhdGNoZXIgc2hvdWxkIHVzZSBt
dXgKLSAgICAgICAgICAgICMgICBoYW5kbGVyIG9yIG5vdC4KLSAgICAgICAgICAgIG11eF9pbmRl
eCA9IC0xCi0gICAgICAgICAgICBmb3IgaSwgcHJvY2Vzc29yIGluIGVudW1lcmF0ZShwcm9jZXNz
b3JzKToKLSAgICAgICAgICAgICAgICBpZiBwcm9jZXNzb3IubmFtZSgpID09IGNvbW1vbi5NVVhf
RVhURU5TSU9OOgotICAgICAgICAgICAgICAgICAgICBtdXhfaW5kZXggPSBpCi0gICAgICAgICAg
ICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICBpZiBtdXhfaW5kZXggPj0gMDoKLSAgICAgICAg
ICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgICAgICAgICAg
Zm9yIHByb2Nlc3NvciBpbiBwcm9jZXNzb3JzWzptdXhfaW5kZXhdOgotICAgICAgICAgICAgICAg
ICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9ucy5hcHBlbmQocHJvY2Vzc29yLnJlcXVlc3Qo
KSkKLSAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldF9hY3RpdmUoRmFsc2UpCi0gICAg
ICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5tdXhfcHJvY2Vzc29yID0gcHJvY2Vzc29yc1ttdXhf
aW5kZXhdCi0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5tdXhfcHJvY2Vzc29yLnNldF9l
eHRlbnNpb25zKAotICAgICAgICAgICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0ZW5zaW9u
cykKLSAgICAgICAgICAgICAgICBwcm9jZXNzb3JzID0gZmlsdGVyKGxhbWJkYSBwcm9jZXNzb3I6
IHByb2Nlc3Nvci5pc19hY3RpdmUoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHByb2Nlc3NvcnMpCi0KLSAgICAgICAgICAgIHN0cmVhbV9vcHRpb25zID0gU3RyZWFtT3B0
aW9ucygpCi0KLSAgICAgICAgICAgIGZvciBpbmRleCwgcHJvY2Vzc29yIGluIGVudW1lcmF0ZShw
cm9jZXNzb3JzKToKLSAgICAgICAgICAgICAgICBpZiBub3QgcHJvY2Vzc29yLmlzX2FjdGl2ZSgp
OgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICAgICAgICAgZXh0ZW5z
aW9uX3Jlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAgICAg
ICAgICAgICAgIGlmIGV4dGVuc2lvbl9yZXNwb25zZSBpcyBOb25lOgotICAgICAgICAgICAgICAg
ICAgICAjIFJlamVjdGVkLgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAg
ICAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucy5hcHBlbmQoZXh0ZW5zaW9uX3Jlc3BvbnNlKQot
Ci0gICAgICAgICAgICAgICAgcHJvY2Vzc29yLnNldHVwX3N0cmVhbV9vcHRpb25zKHN0cmVhbV9v
cHRpb25zKQotCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzX2NvbXByZXNzaW9uX2V4dGVuc2lv
bihwcm9jZXNzb3IubmFtZSgpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAg
ICAgICAgICAgICAgICMgSW5hY3RpdmF0ZSBhbGwgb2YgdGhlIGZvbGxvd2luZyBjb21wcmVzc2lv
biBleHRlbnNpb25zLgotICAgICAgICAgICAgICAgIGZvciBqIGluIHhyYW5nZShpbmRleCArIDEs
IGxlbihwcm9jZXNzb3JzKSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGlzX2NvbXByZXNzaW9u
X2V4dGVuc2lvbihwcm9jZXNzb3JzW2pdLm5hbWUoKSk6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBwcm9jZXNzb3JzW2pdLnNldF9hY3RpdmUoRmFsc2UpCi0KLSAgICAgICAgICAgIGlmIGxlbihh
Y2NlcHRlZF9leHRlbnNpb25zKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC53
c19leHRlbnNpb25zID0gYWNjZXB0ZWRfZXh0ZW5zaW9ucwotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICAgICAgICAgJ0V4dGVuc2lvbnMgYWNjZXB0ZWQ6
ICVyJywKLSAgICAgICAgICAgICAgICAgICAgbWFwKGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIu
bmFtZSwgYWNjZXB0ZWRfZXh0ZW5zaW9ucykpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucyA9IE5vbmUKLQotICAgICAgICAgICAg
c2VsZi5fcmVxdWVzdC53c19zdHJlYW0gPSBzZWxmLl9jcmVhdGVfc3RyZWFtKHN0cmVhbV9vcHRp
b25zKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2Nv
bHMgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90
b2NvbCBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgICAgICAgICAnZG9fZXh0cmFfaGFuZHNoYWtlIG11c3QgY2hv
b3NlIG9uZSBzdWJwcm90b2NvbCBmcm9tICcKLSAgICAgICAgICAgICAgICAgICAgICAgICd3c19y
ZXF1ZXN0ZWRfcHJvdG9jb2xzIGFuZCBzZXQgaXQgdG8gd3NfcHJvdG9jb2wnKQotICAgICAgICAg
ICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sKHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wpCi0K
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAgICAgICAg
ICdTdWJwcm90b2NvbCBhY2NlcHRlZDogJXInLAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LndzX3Byb3RvY29sKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAg
ICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAn
d3NfcHJvdG9jb2wgbXVzdCBiZSBOb25lIHdoZW4gdGhlIGNsaWVudCBkaWRuXCd0ICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICdyZXF1ZXN0IGFueSBzdWJwcm90b2NvbCcpCi0KLSAgICAgICAg
ICAgIHNlbGYuX3NlbmRfaGFuZHNoYWtlKGFjY2VwdCkKLSAgICAgICAgZXhjZXB0IEhhbmRzaGFr
ZUV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIGlmIG5vdCBlLnN0YXR1czoKLSAgICAgICAgICAg
ICAgICAjIEZhbGxiYWNrIHRvIDQwMCBiYWQgcmVxdWVzdCBieSBkZWZhdWx0LgotICAgICAgICAg
ICAgICAgIGUuc3RhdHVzID0gY29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUCi0gICAgICAg
ICAgICByYWlzZSBlCi0KLSAgICBkZWYgX2dldF9vcmlnaW4oc2VsZik6Ci0gICAgICAgIG9yaWdp
bl9oZWFkZXIgPSBjb21tb24uT1JJR0lOX0hFQURFUgotICAgICAgICBvcmlnaW4gPSBzZWxmLl9y
ZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KG9yaWdpbl9oZWFkZXIpCi0gICAgICAgIGlmIG9yaWdpbiBp
cyBOb25lOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDbGllbnQgcmVxdWVzdCBk
b2VzIG5vdCBoYXZlIG9yaWdpbiBoZWFkZXInKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX29y
aWdpbiA9IG9yaWdpbgotCi0gICAgZGVmIF9jaGVja192ZXJzaW9uKHNlbGYpOgotICAgICAgICB2
ZXJzaW9uID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09DS0VUX1ZFUlNJT05f
SEVBREVSKQotICAgICAgICBpZiB2ZXJzaW9uID09IF9WRVJTSU9OX0xBVEVTVF9TVFJJTkc6Ci0g
ICAgICAgICAgICByZXR1cm4gX1ZFUlNJT05fTEFURVNUCi0KLSAgICAgICAgaWYgdmVyc2lvbi5m
aW5kKCcsJykgPj0gMDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnTXVsdGlwbGUgdmVyc2lvbnMgKCVyKSBhcmUgbm90IGFsbG93ZWQgZm9y
IGhlYWRlciAlcycgJQotICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dFQlNP
Q0tFVF9WRVJTSU9OX0hFQURFUiksCi0gICAgICAgICAgICAgICAgc3RhdHVzPWNvbW1vbi5IVFRQ
X1NUQVRVU19CQURfUkVRVUVTVCkKLSAgICAgICAgcmFpc2UgVmVyc2lvbkV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICdVbnN1cHBvcnRlZCB2ZXJzaW9uICVyIGZvciBoZWFkZXIgJXMnICUKLSAgICAg
ICAgICAgICh2ZXJzaW9uLCBjb21tb24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiksCi0g
ICAgICAgICAgICBzdXBwb3J0ZWRfdmVyc2lvbnM9JywgJy5qb2luKG1hcChzdHIsIF9TVVBQT1JU
RURfVkVSU0lPTlMpKSkKLQotICAgIGRlZiBfc2V0X3Byb3RvY29sKHNlbGYpOgotICAgICAgICBz
ZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sID0gTm9uZQotCi0gICAgICAgIHByb3RvY29sX2hlYWRl
ciA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoCi0gICAgICAgICAgICBjb21tb24uU0VD
X1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIpCi0KLSAgICAgICAgaWYgcHJvdG9jb2xfaGVhZGVy
IGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9wcm90b2Nv
bHMgPSBOb25lCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzZWxmLl9yZXF1ZXN0Lndz
X3JlcXVlc3RlZF9wcm90b2NvbHMgPSBwYXJzZV90b2tlbl9saXN0KAotICAgICAgICAgICAgcHJv
dG9jb2xfaGVhZGVyKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1N1YnByb3RvY29scyBy
ZXF1ZXN0ZWQ6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qu
d3NfcmVxdWVzdGVkX3Byb3RvY29scykKLQotICAgIGRlZiBfcGFyc2VfZXh0ZW5zaW9ucyhzZWxm
KToKLSAgICAgICAgZXh0ZW5zaW9uc19oZWFkZXIgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4u
Z2V0KAotICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfRVhURU5TSU9OU19IRUFERVIp
Ci0gICAgICAgIGlmIG5vdCBleHRlbnNpb25zX2hlYWRlcjoKLSAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMgPSBOb25lCi0gICAgICAgICAgICByZXR1cm4K
LQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3JlcXVlc3RlZF9l
eHRlbnNpb25zID0gY29tbW9uLnBhcnNlX2V4dGVuc2lvbnMoCi0gICAgICAgICAgICAgICAgZXh0
ZW5zaW9uc19oZWFkZXIpCi0gICAgICAgIGV4Y2VwdCBjb21tb24uRXh0ZW5zaW9uUGFyc2luZ0V4
Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnRmFpbGVkIHRvIHBhcnNlIFNlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucyBoZWFk
ZXI6ICVyJyAlIGUpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAg
J0V4dGVuc2lvbnMgcmVxdWVzdGVkOiAlcicsCi0gICAgICAgICAgICBtYXAoY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlci5uYW1lLAotICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVx
dWVzdGVkX2V4dGVuc2lvbnMpKQotCi0gICAgZGVmIF92YWxpZGF0ZV9rZXkoc2VsZiwga2V5KToK
LSAgICAgICAgaWYga2V5LmZpbmQoJywnKSA+PSAwOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNo
YWtlRXhjZXB0aW9uKCdSZXF1ZXN0IGhhcyBtdWx0aXBsZSAlcyBoZWFkZXIgbGluZXMgb3IgJwot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjb250YWlucyBpbGxlZ2FsIGNo
YXJhY3RlciBcJyxcJzogJXInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwga2V5KSkKLQotICAgICAgICAjIFZh
bGlkYXRlCi0gICAgICAgIGtleV9pc192YWxpZCA9IEZhbHNlCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgICMgVmFsaWRhdGUga2V5IGJ5IHF1aWNrIHJlZ2V4IG1hdGNoIGJlZm9yZSBwYXJzaW5n
IGJ5IGJhc2U2NAotICAgICAgICAgICAgIyBtb2R1bGUuIEJlY2F1c2UgYmFzZTY0IG1vZHVsZSBz
a2lwcyBpbnZhbGlkIGNoYXJhY3RlcnMsIHdlIGhhdmUKLSAgICAgICAgICAgICMgdG8gZG8gdGhp
cyBpbiBhZHZhbmNlIHRvIG1ha2UgdGhpcyBzZXJ2ZXIgc3RyaWN0bHkgcmVqZWN0IGlsbGVnYWwK
LSAgICAgICAgICAgICMga2V5cy4KLSAgICAgICAgICAgIGlmIF9TRUNfV0VCU09DS0VUX0tFWV9S
RUdFWC5tYXRjaChrZXkpOgotICAgICAgICAgICAgICAgIGRlY29kZWRfa2V5ID0gYmFzZTY0LmI2
NGRlY29kZShrZXkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKGRlY29kZWRfa2V5KSA9PSAxNjoK
LSAgICAgICAgICAgICAgICAgICAga2V5X2lzX3ZhbGlkID0gVHJ1ZQotICAgICAgICBleGNlcHQg
VHlwZUVycm9yLCBlOgotICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlmIG5vdCBrZXlfaXNf
dmFsaWQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0gICAgICAgICAg
ICAgICAgJ0lsbGVnYWwgdmFsdWUgZm9yIGhlYWRlciAlczogJXInICUKLSAgICAgICAgICAgICAg
ICAoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZX0hFQURFUiwga2V5KSkKLQotICAgICAgICByZXR1
cm4gZGVjb2RlZF9rZXkKLQotICAgIGRlZiBfZ2V0X2tleShzZWxmKToKLSAgICAgICAga2V5ID0g
Z2V0X21hbmRhdG9yeV9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LCBjb21tb24u
U0VDX1dFQlNPQ0tFVF9LRVlfSEVBREVSKQotCi0gICAgICAgIGRlY29kZWRfa2V5ID0gc2VsZi5f
dmFsaWRhdGVfa2V5KGtleSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAg
ICAgICAnJXM6ICVyICglcyknLAotICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZ
X0hFQURFUiwKLSAgICAgICAgICAgIGtleSwKLSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KGRlY29k
ZWRfa2V5KSkKLQotICAgICAgICByZXR1cm4ga2V5Ci0KLSAgICBkZWYgX2NyZWF0ZV9zdHJlYW0o
c2VsZiwgc3RyZWFtX29wdGlvbnMpOgotICAgICAgICByZXR1cm4gU3RyZWFtKHNlbGYuX3JlcXVl
c3QsIHN0cmVhbV9vcHRpb25zKQotCi0gICAgZGVmIF9jcmVhdGVfaGFuZHNoYWtlX3Jlc3BvbnNl
KHNlbGYsIGFjY2VwdCk6Ci0gICAgICAgIHJlc3BvbnNlID0gW10KLQotICAgICAgICByZXNwb25z
ZS5hcHBlbmQoJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicpCi0KLSAgICAg
ICAgIyBXZWJTb2NrZXQgaGVhZGVycwotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hl
YWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5VUEdSQURFX0hFQURFUiwgY29tbW9uLldFQlNPQ0tF
VF9VUEdSQURFX1RZUEUpKQotICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigK
LSAgICAgICAgICAgIGNvbW1vbi5DT05ORUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09O
TkVDVElPTl9UWVBFKSkKLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0g
ICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9BQ0NFUFRfSEVBREVSLCBhY2NlcHQpKQot
ICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgcmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICAgICAgY29t
bW9uLlNFQ19XRUJTT0NLRVRfUFJPVE9DT0xfSEVBREVSLAotICAgICAgICAgICAgICAgIHNlbGYu
X3JlcXVlc3Qud3NfcHJvdG9jb2wpKQotICAgICAgICBpZiAoc2VsZi5fcmVxdWVzdC53c19leHRl
bnNpb25zIGlzIG5vdCBOb25lIGFuZAotICAgICAgICAgICAgbGVuKHNlbGYuX3JlcXVlc3Qud3Nf
ZXh0ZW5zaW9ucykgIT0gMCk6Ci0gICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hl
YWRlcigKLSAgICAgICAgICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9FWFRFTlNJT05TX0hF
QURFUiwKLSAgICAgICAgICAgICAgICBjb21tb24uZm9ybWF0X2V4dGVuc2lvbnMoc2VsZi5fcmVx
dWVzdC53c19leHRlbnNpb25zKSkpCi0KLSAgICAgICAgIyBIZWFkZXJzIG5vdCBzcGVjaWZpYyBm
b3IgV2ViU29ja2V0Ci0gICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9yZXF1ZXN0LmV4
dHJhX2hlYWRlcnM6Ci0gICAgICAgICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcihu
YW1lLCB2YWx1ZSkpCi0KLSAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCdcclxuJykKLQotICAgICAg
ICByZXR1cm4gJycuam9pbihyZXNwb25zZSkKLQotICAgIGRlZiBfc2VuZF9oYW5kc2hha2Uoc2Vs
ZiwgYWNjZXB0KToKLSAgICAgICAgcmF3X3Jlc3BvbnNlID0gc2VsZi5fY3JlYXRlX2hhbmRzaGFr
ZV9yZXNwb25zZShhY2NlcHQpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0
ZShyYXdfcmVzcG9uc2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJc
J3Mgb3BlbmluZyBoYW5kc2hha2U6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJh
d19yZXNwb25zZSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvaHliaTAwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vi
c29ja2V0L2hhbmRzaGFrZS9oeWJpMDAucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDg3NTc3MTdhNjM5YmFjM2RiMDVkNGNiMzAyN2UwNTVmZGJmN2YzY2YuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0
L2hhbmRzaGFrZS9oeWJpMDAucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyOTMgKzAsMCBAQAotIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiVGhpcyBmaWxlIHByb3ZpZGVzIHRoZSBvcGVuaW5nIGhhbmRz
aGFrZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQKLXByb3RvY29sIHZlcnNpb24gSHlCaSAw
MC4KLQotU3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWll
dGYtaHliaS10aGV3ZWJzb2NrZXRwcm90b2NvbC0wMAotIiIiCi0KLQotIyBOb3RlOiByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBpbiB0aGlzIG1vZHVsZSwgZXZlbiB0aG91
Z2gKLSMgbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBv
bmx5IGluIGNvbm5lY3Rpb24KLSMgaGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8g
b3RoZXIgb3B0aW9ucy4gRm9yIGV4YW1wbGUsCi0jIHJlcXVlc3Qud3JpdGUvcmVhZCBhcmUgbm90
IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJlY3QgcmF3IGJ5dGVzCi0jIHdy
aXRpbmcvcmVhZGluZy4KLQotCi1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IHJlCi1pbXBvcnQgc3Ry
dWN0Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vi
c29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQg
aW1wb3J0IHV0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQg
SGFuZHNoYWtlRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2Ug
aW1wb3J0IGNoZWNrX3JlcXVlc3RfbGluZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCBmb3JtYXRfaGVhZGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hh
a2UuX2Jhc2UgaW1wb3J0IGdldF9kZWZhdWx0X3BvcnQKLWZyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5fYmFzZSBpbXBvcnQgZ2V0X21hbmRhdG9yeV9oZWFkZXIKLWZyb20gbW9kX3B5d2Vi
c29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgcGFyc2VfaG9zdF9oZWFkZXIKLWZyb20gbW9k
X3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFsaWRhdGVfbWFuZGF0b3J5X2hl
YWRlcgotCi0KLV9NQU5EQVRPUllfSEVBREVSUyA9IFsKLSAgICAjIGtleSwgZXhwZWN0ZWQgdmFs
dWUgb3IgTm9uZQotICAgIFtjb21tb24uVVBHUkFERV9IRUFERVIsIGNvbW1vbi5XRUJTT0NLRVRf
VVBHUkFERV9UWVBFX0hJWElFNzVdLAotICAgIFtjb21tb24uQ09OTkVDVElPTl9IRUFERVIsIGNv
bW1vbi5VUEdSQURFX0NPTk5FQ1RJT05fVFlQRV0sCi1dCi0KLQotZGVmIF92YWxpZGF0ZV9zdWJw
cm90b2NvbChzdWJwcm90b2NvbCk6Ci0gICAgIiIiQ2hlY2tzIGlmIGNoYXJhY3RlcnMgaW4gc3Vi
cHJvdG9jb2wgYXJlIGluIHJhbmdlIGJldHdlZW4gVSswMDIwIGFuZAotICAgIFUrMDA3RS4gQSB2
YWx1ZSBpbiB0aGUgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCBmaWVsZCBuZWVkIHRvIHNhdGlzZnkg
dGhpcwotICAgIHJlcXVpcmVtZW50LgotCi0gICAgU2VlIHRoZSBTZWN0aW9uIDQuMS4gT3Blbmlu
ZyBoYW5kc2hha2Ugb2YgdGhlIHNwZWMuCi0gICAgIiIiCi0KLSAgICBpZiBub3Qgc3VicHJvdG9j
b2w6Ci0gICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbignSW52YWxpZCBzdWJwcm90b2Nv
bCBuYW1lOiBlbXB0eScpCi0KLSAgICAjIFBhcmFtZXRlciBzaG91bGQgYmUgaW4gdGhlIHJhbmdl
IFUrMDAyMCB0byBVKzAwN0UuCi0gICAgZm9yIGMgaW4gc3VicHJvdG9jb2w6Ci0gICAgICAgIGlm
IG5vdCAweDIwIDw9IG9yZChjKSA8PSAweDdlOgotICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdJbGxlZ2FsIGNoYXJhY3RlciBpbiBzdWJwcm90
b2NvbCBuYW1lOiAlcicgJSBjKQotCi0KLWRlZiBfY2hlY2tfaGVhZGVyX2xpbmVzKHJlcXVlc3Qs
IG1hbmRhdG9yeV9oZWFkZXJzKToKLSAgICBjaGVja19yZXF1ZXN0X2xpbmUocmVxdWVzdCkKLQot
ICAgICMgVGhlIGV4cGVjdGVkIGZpZWxkIG5hbWVzLCBhbmQgdGhlIG1lYW5pbmcgb2YgdGhlaXIg
Y29ycmVzcG9uZGluZwotICAgICMgdmFsdWVzLCBhcmUgYXMgZm9sbG93cy4KLSAgICAjICB8VXBn
cmFkZXwgYW5kIHxDb25uZWN0aW9ufAotICAgIGZvciBrZXksIGV4cGVjdGVkX3ZhbHVlIGluIG1h
bmRhdG9yeV9oZWFkZXJzOgotICAgICAgICB2YWxpZGF0ZV9tYW5kYXRvcnlfaGVhZGVyKHJlcXVl
c3QsIGtleSwgZXhwZWN0ZWRfdmFsdWUpCi0KLQotZGVmIF9idWlsZF9sb2NhdGlvbihyZXF1ZXN0
KToKLSAgICAiIiJCdWlsZCBXZWJTb2NrZXQgbG9jYXRpb24gZm9yIHJlcXVlc3QuIiIiCi0KLSAg
ICBsb2NhdGlvbl9wYXJ0cyA9IFtdCi0gICAgaWYgcmVxdWVzdC5pc19odHRwcygpOgotICAgICAg
ICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldFQl9TT0NLRVRfU0VDVVJFX1NDSEVNRSkK
LSAgICBlbHNlOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoY29tbW9uLldFQl9TT0NL
RVRfU0NIRU1FKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZCgnOi8vJykKLSAgICBob3N0LCBw
b3J0ID0gcGFyc2VfaG9zdF9oZWFkZXIocmVxdWVzdCkKLSAgICBjb25uZWN0aW9uX3BvcnQgPSBy
ZXF1ZXN0LmNvbm5lY3Rpb24ubG9jYWxfYWRkclsxXQotICAgIGlmIHBvcnQgIT0gY29ubmVjdGlv
bl9wb3J0OgotICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJ0hlYWRlci9jb25uZWN0
aW9uIHBvcnQgbWlzbWF0Y2g6ICVkLyVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAocG9ydCwgY29ubmVjdGlvbl9wb3J0KSkKLSAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQo
aG9zdCkKLSAgICBpZiAocG9ydCAhPSBnZXRfZGVmYXVsdF9wb3J0KHJlcXVlc3QuaXNfaHR0cHMo
KSkpOgotICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzonKQotICAgICAgICBsb2NhdGlv
bl9wYXJ0cy5hcHBlbmQoc3RyKHBvcnQpKQotICAgIGxvY2F0aW9uX3BhcnRzLmFwcGVuZChyZXF1
ZXN0LnVucGFyc2VkX3VyaSkKLSAgICByZXR1cm4gJycuam9pbihsb2NhdGlvbl9wYXJ0cykKLQot
Ci1jbGFzcyBIYW5kc2hha2VyKG9iamVjdCk6Ci0gICAgIiIiT3BlbmluZyBoYW5kc2hha2UgcHJv
Y2Vzc29yIGZvciB0aGUgV2ViU29ja2V0IHByb3RvY29sIHZlcnNpb24gSHlCaSAwMC4KLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAg
ICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAgICAgICAgICBkaXNwYXRjaGVyOiBE
aXNwYXRjaGVyIChkaXNwYXRjaC5EaXNwYXRjaGVyKS4KLQotICAgICAgICBIYW5kc2hha2VyIHdp
bGwgYWRkIGF0dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5nCi0gICAg
ICAgIGhhbmRzaGFrZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRp
bC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVl
c3QKLSAgICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKLQotICAgIGRlZiBkb19o
YW5kc2hha2Uoc2VsZik6Ci0gICAgICAgICIiIlBlcmZvcm0gV2ViU29ja2V0IEhhbmRzaGFrZS4K
LQotICAgICAgICBPbiBfcmVxdWVzdCwgd2Ugc2V0Ci0gICAgICAgICAgICB3c19yZXNvdXJjZSwg
d3NfcHJvdG9jb2wsIHdzX2xvY2F0aW9uLCB3c19vcmlnaW4sIHdzX2NoYWxsZW5nZSwKLSAgICAg
ICAgICAgIHdzX2NoYWxsZW5nZV9tZDU6IFdlYlNvY2tldCBoYW5kc2hha2UgaW5mb3JtYXRpb24u
Ci0gICAgICAgICAgICB3c19zdHJlYW06IEZyYW1lIGdlbmVyYXRpb24vcGFyc2luZyBjbGFzcy4K
LSAgICAgICAgICAgIHdzX3ZlcnNpb246IFByb3RvY29sIHZlcnNpb24uCi0KLSAgICAgICAgUmFp
c2VzOgotICAgICAgICAgICAgSGFuZHNoYWtlRXhjZXB0aW9uOiB3aGVuIGFueSBlcnJvciBoYXBw
ZW5lZCBpbiBwYXJzaW5nIHRoZSBvcGVuaW5nCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhhbmRzaGFrZSByZXF1ZXN0LgotICAgICAgICAiIiIKLQotICAgICAgICAjIDUuMSBSZWFk
aW5nIHRoZSBjbGllbnQncyBvcGVuaW5nIGhhbmRzaGFrZS4KLSAgICAgICAgIyBkaXNwYXRjaGVy
IHNldHMgaXQgaW4gc2VsZi5fcmVxdWVzdC4KLSAgICAgICAgX2NoZWNrX2hlYWRlcl9saW5lcyhz
ZWxmLl9yZXF1ZXN0LCBfTUFOREFUT1JZX0hFQURFUlMpCi0gICAgICAgIHNlbGYuX3NldF9yZXNv
dXJjZSgpCi0gICAgICAgIHNlbGYuX3NldF9zdWJwcm90b2NvbCgpCi0gICAgICAgIHNlbGYuX3Nl
dF9sb2NhdGlvbigpCi0gICAgICAgIHNlbGYuX3NldF9vcmlnaW4oKQotICAgICAgICBzZWxmLl9z
ZXRfY2hhbGxlbmdlX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5fc2V0X3Byb3RvY29sX3ZlcnNp
b24oKQotCi0gICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYu
X3JlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9oYW5kc2hha2UoKQotCi0gICAgZGVmIF9z
ZXRfcmVzb3VyY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfcmVzb3VyY2UgPSBz
ZWxmLl9yZXF1ZXN0LnVyaQotCi0gICAgZGVmIF9zZXRfc3VicHJvdG9jb2woc2VsZik6Ci0gICAg
ICAgICMgfFNlYy1XZWJTb2NrZXQtUHJvdG9jb2x8Ci0gICAgICAgIHN1YnByb3RvY29sID0gc2Vs
Zi5fcmVxdWVzdC5oZWFkZXJzX2luLmdldCgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09D
S0VUX1BST1RPQ09MX0hFQURFUikKLSAgICAgICAgaWYgc3VicHJvdG9jb2wgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woc3VicHJvdG9jb2wpCi0gICAgICAg
IHNlbGYuX3JlcXVlc3Qud3NfcHJvdG9jb2wgPSBzdWJwcm90b2NvbAotCi0gICAgZGVmIF9zZXRf
bG9jYXRpb24oc2VsZik6Ci0gICAgICAgICMgfEhvc3R8Ci0gICAgICAgIGhvc3QgPSBzZWxmLl9y
ZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNvbW1vbi5IT1NUX0hFQURFUikKLSAgICAgICAgaWYgaG9z
dCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24gPSBf
YnVpbGRfbG9jYXRpb24oc2VsZi5fcmVxdWVzdCkKLSAgICAgICAgIyBUT0RPKHVrYWkpOiBjaGVj
ayBob3N0IGlzIHRoaXMgaG9zdC4KLQotICAgIGRlZiBfc2V0X29yaWdpbihzZWxmKToKLSAgICAg
ICAgIyB8T3JpZ2lufAotICAgICAgICBvcmlnaW4gPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4u
Z2V0KGNvbW1vbi5PUklHSU5fSEVBREVSKQotICAgICAgICBpZiBvcmlnaW4gaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX29yaWdpbiA9IG9yaWdpbgotCi0gICAgZGVm
IF9zZXRfcHJvdG9jb2xfdmVyc2lvbihzZWxmKToKLSAgICAgICAgIyB8U2VjLVdlYlNvY2tldC1E
cmFmdHwKLSAgICAgICAgZHJhZnQgPSBzZWxmLl9yZXF1ZXN0LmhlYWRlcnNfaW4uZ2V0KGNvbW1v
bi5TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUikKLSAgICAgICAgaWYgZHJhZnQgaXMgbm90IE5v
bmUgYW5kIGRyYWZ0ICE9ICcwJzoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlv
bignSWxsZWdhbCB2YWx1ZSBmb3IgJXM6ICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgKGNvbW1vbi5TRUNfV0VCU09DS0VUX0RSQUZUX0hFQURFUiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHJhZnQpKQotCi0gICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnUHJvdG9jb2wgdmVyc2lvbiBpcyBIeUJpIDAwJykKLSAgICAgICAgc2VsZi5f
cmVxdWVzdC53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJT05fSFlCSTAwCi0gICAgICAgIHNlbGYu
X3JlcXVlc3Qud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShzZWxmLl9yZXF1ZXN0LCBUcnVlKQot
Ci0gICAgZGVmIF9zZXRfY2hhbGxlbmdlX3Jlc3BvbnNlKHNlbGYpOgotICAgICAgICAjIDUuMiA0
LTguCi0gICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdlID0gc2VsZi5fZ2V0X2NoYWxs
ZW5nZSgpCi0gICAgICAgICMgNS4yIDkuIGxldCAvcmVzcG9uc2UvIGJlIHRoZSBNRDUgZmludGVy
cHJpbnQgb2YgL2NoYWxsZW5nZS8KLSAgICAgICAgc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2Vf
bWQ1ID0gdXRpbC5tZDVfaGFzaCgKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxl
bmdlKS5kaWdlc3QoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAn
Q2hhbGxlbmdlOiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxl
bmdlLAotICAgICAgICAgICAgdXRpbC5oZXhpZnkoc2VsZi5fcmVxdWVzdC53c19jaGFsbGVuZ2Up
KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxlbmdlIHJl
c3BvbnNlOiAlciAoJXMpJywKLSAgICAgICAgICAgIHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdl
X21kNSwKLSAgICAgICAgICAgIHV0aWwuaGV4aWZ5KHNlbGYuX3JlcXVlc3Qud3NfY2hhbGxlbmdl
X21kNSkpCi0KLSAgICBkZWYgX2dldF9rZXlfdmFsdWUoc2VsZiwga2V5X2ZpZWxkKToKLSAgICAg
ICAga2V5X3ZhbHVlID0gZ2V0X21hbmRhdG9yeV9oZWFkZXIoc2VsZi5fcmVxdWVzdCwga2V5X2Zp
ZWxkKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXM6ICVyJywga2V5X2ZpZWxkLCBr
ZXlfdmFsdWUpCi0KLSAgICAgICAgIyA1LjIgNC4gbGV0IC9rZXktbnVtYmVyX24vIGJlIHRoZSBk
aWdpdHMgKGNoYXJhY3RlcnMgaW4gdGhlIHJhbmdlCi0gICAgICAgICMgVSswMDMwIERJR0lUIFpF
Uk8gKDApIHRvIFUrMDAzOSBESUdJVCBOSU5FICg5KSkgaW4gL2tleV9uLywKLSAgICAgICAgIyBp
bnRlcnByZXRlZCBhcyBhIGJhc2UgdGVuIGludGVnZXIsIGlnbm9yaW5nIGFsbCBvdGhlciBjaGFy
YWN0ZXJzCi0gICAgICAgICMgaW4gL2tleV9uLy4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
a2V5X251bWJlciA9IGludChyZS5zdWIoIlxcRCIsICIiLCBrZXlfdmFsdWUpKQotICAgICAgICBl
eGNlcHQ6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oJyVzIGZpZWxkIGNv
bnRhaW5zIG5vIGRpZ2l0JyAlIGtleV9maWVsZCkKLSAgICAgICAgIyA1LjIgNS4gbGV0IC9zcGFj
ZXNfbi8gYmUgdGhlIG51bWJlciBvZiBVKzAwMjAgU1BBQ0UgY2hhcmFjdGVycwotICAgICAgICAj
IGluIC9rZXlfbi8uCi0gICAgICAgIHNwYWNlcyA9IHJlLnN1Ym4oIiAiLCAiIiwga2V5X3ZhbHVl
KVsxXQotICAgICAgICBpZiBzcGFjZXMgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFr
ZUV4Y2VwdGlvbignJXMgZmllbGQgY29udGFpbnMgbm8gc3BhY2UnICUga2V5X2ZpZWxkKQotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICclczogS2V5LW51bWJlciBp
cyAlZCBhbmQgbnVtYmVyIG9mIHNwYWNlcyBpcyAlZCcsCi0gICAgICAgICAgICBrZXlfZmllbGQs
IGtleV9udW1iZXIsIHNwYWNlcykKLQotICAgICAgICAjIDUuMiA2LiBpZiAva2V5LW51bWJlcl9u
LyBpcyBub3QgYW4gaW50ZWdyYWwgbXVsdGlwbGUgb2YgL3NwYWNlc19uLwotICAgICAgICAjIHRo
ZW4gYWJvcnQgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uLgotICAgICAgICBpZiBrZXlfbnVtYmVy
ICUgc3BhY2VzICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRpb24oCi0g
ICAgICAgICAgICAgICAgJyVzOiBLZXktbnVtYmVyICglZCkgaXMgbm90IGFuIGludGVncmFsIG11
bHRpcGxlIG9mIHNwYWNlcyAnCi0gICAgICAgICAgICAgICAgJyglZCknICUgKGtleV9maWVsZCwg
a2V5X251bWJlciwgc3BhY2VzKSkKLSAgICAgICAgIyA1LjIgNy4gbGV0IC9wYXJ0X24vIGJlIC9r
ZXktbnVtYmVyX24vIGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgcGFydCA9IGtleV9u
dW1iZXIgLyBzcGFjZXMKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclczogUGFydCBpcyAl
ZCcsIGtleV9maWVsZCwgcGFydCkKLSAgICAgICAgcmV0dXJuIHBhcnQKLQotICAgIGRlZiBfZ2V0
X2NoYWxsZW5nZShzZWxmKToKLSAgICAgICAgIyA1LjIgNC03LgotICAgICAgICBrZXkxID0gc2Vs
Zi5fZ2V0X2tleV92YWx1ZShjb21tb24uU0VDX1dFQlNPQ0tFVF9LRVkxX0hFQURFUikKLSAgICAg
ICAga2V5MiA9IHNlbGYuX2dldF9rZXlfdmFsdWUoY29tbW9uLlNFQ19XRUJTT0NLRVRfS0VZMl9I
RUFERVIpCi0gICAgICAgICMgNS4yIDguIGxldCAvY2hhbGxlbmdlLyBiZSB0aGUgY29uY2F0ZW5h
dGlvbiBvZiAvcGFydF8xLywKLSAgICAgICAgY2hhbGxlbmdlID0gJycKLSAgICAgICAgY2hhbGxl
bmdlICs9IHN0cnVjdC5wYWNrKCchSScsIGtleTEpICAjIG5ldHdvcmsgYnl0ZW9yZGVyIGludAot
ICAgICAgICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJJywga2V5MikgICMgbmV0d29yayBi
eXRlb3JkZXIgaW50Ci0gICAgICAgIGNoYWxsZW5nZSArPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rp
b24ucmVhZCg4KQotICAgICAgICByZXR1cm4gY2hhbGxlbmdlCi0KLSAgICBkZWYgX3NlbmRfaGFu
ZHNoYWtlKHNlbGYpOgotICAgICAgICByZXNwb25zZSA9IFtdCi0KLSAgICAgICAgIyA1LjIgMTAu
IHNlbmQgdGhlIGZvbGxvd2luZyBsaW5lLgotICAgICAgICByZXNwb25zZS5hcHBlbmQoJ0hUVFAv
MS4xIDEwMSBXZWJTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicpCi0KLSAgICAgICAgIyA1
LjIgMTEuIHNlbmQgdGhlIGZvbGxvd2luZyBmaWVsZHMgdG8gdGhlIGNsaWVudC4KLSAgICAgICAg
cmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24uVVBHUkFE
RV9IRUFERVIsIGNvbW1vbi5XRUJTT0NLRVRfVVBHUkFERV9UWVBFX0hJWElFNzUpKQotICAgICAg
ICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5DT05O
RUNUSU9OX0hFQURFUiwgY29tbW9uLlVQR1JBREVfQ09OTkVDVElPTl9UWVBFKSkKLSAgICAgICAg
cmVzcG9uc2UuYXBwZW5kKGZvcm1hdF9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24uU0VDX1dF
QlNPQ0tFVF9MT0NBVElPTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3NfbG9jYXRpb24pKQotICAg
ICAgICByZXNwb25zZS5hcHBlbmQoZm9ybWF0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbW1vbi5T
RUNfV0VCU09DS0VUX09SSUdJTl9IRUFERVIsIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luKSkKLSAg
ICAgICAgaWYgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbDoKLSAgICAgICAgICAgIHJlc3BvbnNl
LmFwcGVuZChmb3JtYXRfaGVhZGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5TRUNfV0VCU09D
S0VUX1BST1RPQ09MX0hFQURFUiwKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX3By
b3RvY29sKSkKLSAgICAgICAgIyA1LjIgMTIuIHNlbmQgdHdvIGJ5dGVzIDB4MEQgMHgwQS4KLSAg
ICAgICAgcmVzcG9uc2UuYXBwZW5kKCdcclxuJykKLSAgICAgICAgIyA1LjIgMTMuIHNlbmQgL3Jl
c3BvbnNlLwotICAgICAgICByZXNwb25zZS5hcHBlbmQoc2VsZi5fcmVxdWVzdC53c19jaGFsbGVu
Z2VfbWQ1KQotCi0gICAgICAgIHJhd19yZXNwb25zZSA9ICcnLmpvaW4ocmVzcG9uc2UpCi0gICAg
ICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZShyYXdfcmVzcG9uc2UpCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VudCBzZXJ2ZXJcJ3Mgb3BlbmluZyBoYW5kc2hha2U6ICVy
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhd19yZXNwb25zZSkKLQotCi0jIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hh
a2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTBkZDc1NGE0OTAz
NjhiOWU3YTU5MzM2NWYyZmQwYzA0MTdkMmQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGFuZHNoYWtlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9k
X3B5d2Vic29ja2V0L2hhbmRzaGFrZS9fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tl
dC9oYW5kc2hha2UvaHliaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oYW5kc2hha2Uv
aHliaTAwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFy
c2VyaGFuZGxlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5k
bGVyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjQ0NDIxY2Y3OWJjZGQ3Mzdk
Y2I1N2Y5ZjQzMzZiZTBlODRjYTU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9oZWFkZXJwYXJzZXJoYW5kbGVy
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjU0ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdv
b2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
LSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0K
LSIiIlB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIgZm9yIG1vZF9weXdlYnNvY2tldC4KLQotQXBh
Y2hlIEhUVFAgU2VydmVyIGFuZCBtb2RfcHl0aG9uIG11c3QgYmUgY29uZmlndXJlZCBzdWNoIHRo
YXQgdGhpcwotZnVuY3Rpb24gaXMgY2FsbGVkIHRvIGhhbmRsZSBXZWJTb2NrZXQgcmVxdWVzdC4K
LSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi0KLWZyb20gbW9kX3B5dGhvbiBpbXBvcnQgYXBhY2hl
Ci0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29j
a2V0IGltcG9ydCBkaXNwYXRjaAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFr
ZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi0jIFB5dGhvbk9wdGlvbiB0
byBzcGVjaWZ5IHRoZSBoYW5kbGVyIHJvb3QgZGlyZWN0b3J5LgotX1BZT1BUX0hBTkRMRVJfUk9P
VCA9ICdtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9yb290JwotCi0jIFB5dGhvbk9wdGlvbiB0byBz
cGVjaWZ5IHRoZSBoYW5kbGVyIHNjYW4gZGlyZWN0b3J5LgotIyBUaGlzIG11c3QgYmUgYSBkaXJl
Y3RvcnkgdW5kZXIgdGhlIHJvb3QgZGlyZWN0b3J5LgotIyBUaGUgZGVmYXVsdCBpcyB0aGUgcm9v
dCBkaXJlY3RvcnkuCi1fUFlPUFRfSEFORExFUl9TQ0FOID0gJ21vZF9weXdlYnNvY2tldC5oYW5k
bGVyX3NjYW4nCi0KLSMgUHl0aG9uT3B0aW9uIHRvIGFsbG93IGhhbmRsZXJzIHdob3NlIGNhbm9u
aWNhbCBwYXRoIGlzCi0jIG5vdCB1bmRlciB0aGUgcm9vdCBkaXJlY3RvcnkuIEl0J3MgZGlzYWxs
b3dlZCBieSBkZWZhdWx0LgotIyBTZXQgdGhpcyBvcHRpb24gd2l0aCB2YWx1ZSBvZiAneWVzJyB0
byBhbGxvdy4KLV9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1QgPSAoCi0gICAgJ21v
ZF9weXdlYnNvY2tldC5hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyJykKLSMgTWFwIGZy
b20gdmFsdWVzIHRvIHRoZWlyIG1lYW5pbmdzLiAnWWVzJyBhbmQgJ05vJyBhcmUgYWxsb3dlZCBq
dXN0IGZvcgotIyBjb21wYXRpYmlsaXR5LgotX1BZT1BUX0FMTE9XX0hBTkRMRVJTX09VVFNJREVf
Uk9PVF9ERUZJTklUSU9OID0gewotICAgICdvZmYnOiBGYWxzZSwgJ25vJzogRmFsc2UsICdvbic6
IFRydWUsICd5ZXMnOiBUcnVlfQotCi0jIChPYnNvbGV0ZSBvcHRpb24uIElnbm9yZWQuKQotIyBQ
eXRob25PcHRpb24gdG8gc3BlY2lmeSB0byBhbGxvdyBoYW5kc2hha2UgZGVmaW5lZCBpbiBIaXhp
ZSA3NSB2ZXJzaW9uCi0jIHByb3RvY29sLiBUaGUgZGVmYXVsdCBpcyBOb25lIChPZmYpCi1fUFlP
UFRfQUxMT1dfRFJBRlQ3NSA9ICdtb2RfcHl3ZWJzb2NrZXQuYWxsb3dfZHJhZnQ3NScKLSMgTWFw
IGZyb20gdmFsdWVzIHRvIHRoZWlyIG1lYW5pbmdzLgotX1BZT1BUX0FMTE9XX0RSQUZUNzVfREVG
SU5JVElPTiA9IHsnb2ZmJzogRmFsc2UsICdvbic6IFRydWV9Ci0KLQotY2xhc3MgQXBhY2hlTG9n
SGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgotICAgICIiIldyYXBwZXIgbG9nZ2luZy5IYW5kbGVy
IHRvIGVtaXQgbG9nIG1lc3NhZ2UgdG8gYXBhY2hlJ3MgZXJyb3IubG9nLiIiIgotCi0gICAgX0xF
VkVMUyA9IHsKLSAgICAgICAgbG9nZ2luZy5ERUJVRzogYXBhY2hlLkFQTE9HX0RFQlVHLAotICAg
ICAgICBsb2dnaW5nLklORk86IGFwYWNoZS5BUExPR19JTkZPLAotICAgICAgICBsb2dnaW5nLldB
Uk5JTkc6IGFwYWNoZS5BUExPR19XQVJOSU5HLAotICAgICAgICBsb2dnaW5nLkVSUk9SOiBhcGFj
aGUuQVBMT0dfRVJSLAotICAgICAgICBsb2dnaW5nLkNSSVRJQ0FMOiBhcGFjaGUuQVBMT0dfQ1JJ
VCwKLSAgICAgICAgfQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3Q9Tm9uZSk6Ci0g
ICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9sb2df
ZXJyb3IgPSBhcGFjaGUubG9nX2Vycm9yCi0gICAgICAgIGlmIHJlcXVlc3QgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBzZWxmLl9sb2dfZXJyb3IgPSByZXF1ZXN0LmxvZ19lcnJvcgotCi0gICAg
ICAgICMgVGltZSBhbmQgbGV2ZWwgd2lsbCBiZSBwcmludGVkIGJ5IEFwYWNoZS4KLSAgICAgICAg
c2VsZi5fZm9ybWF0dGVyID0gbG9nZ2luZy5Gb3JtYXR0ZXIoJyUobmFtZSlzOiAlKG1lc3NhZ2Up
cycpCi0KLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgotICAgICAgICBhcGFjaGVfbGV2ZWwg
PSBhcGFjaGUuQVBMT0dfREVCVUcKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gaW4gQXBhY2hl
TG9nSGFuZGxlci5fTEVWRUxTOgotICAgICAgICAgICAgYXBhY2hlX2xldmVsID0gQXBhY2hlTG9n
SGFuZGxlci5fTEVWRUxTW3JlY29yZC5sZXZlbG5vXQotCi0gICAgICAgIG1zZyA9IHNlbGYuX2Zv
cm1hdHRlci5mb3JtYXQocmVjb3JkKQotCi0gICAgICAgICMgInNlcnZlciIgcGFyYW1ldGVyIG11
c3QgYmUgcGFzc2VkIHRvIGhhdmUgImxldmVsIiBwYXJhbWV0ZXIgd29yay4KLSAgICAgICAgIyBJ
ZiBvbmx5ICJsZXZlbCIgcGFyYW1ldGVyIGlzIHBhc3NlZCwgbm90aGluZyBzaG93cyB1cCBvbiBB
cGFjaGUncwotICAgICAgICAjIGxvZy4gSG93ZXZlciwgYXQgdGhpcyBwb2ludCwgd2UgY2Fubm90
IGdldCB0aGUgc2VydmVyIG9iamVjdCBvZiB0aGUKLSAgICAgICAgIyB2aXJ0dWFsIGhvc3Qgd2hp
Y2ggd2lsbCBwcm9jZXNzIFdlYlNvY2tldCByZXF1ZXN0cy4gVGhlIG9ubHkgc2VydmVyCi0gICAg
ICAgICMgb2JqZWN0IHdlIGNhbiBnZXQgaGVyZSBpcyBhcGFjaGUubWFpbl9zZXJ2ZXIuIEJ1dCBX
aGVyZXZlciAoc2VydmVyCi0gICAgICAgICMgY29uZmlndXJhdGlvbiBjb250ZXh0IG9yIHZpcnR1
YWwgaG9zdCBjb250ZXh0KSB3ZSBwdXQKLSAgICAgICAgIyBQeXRob25IZWFkZXJQYXJzZXJIYW5k
bGVyIGRpcmVjdGl2ZSwgYXBhY2hlLm1haW5fc2VydmVyIGp1c3QgcG9pbnRzCi0gICAgICAgICMg
dGhlIG1haW4gc2VydmVyIGluc3RhbmNlIChub3QgYW55IG9mIHZpcnR1YWwgc2VydmVyIGluc3Rh
bmNlKS4gVGhlbiwKLSAgICAgICAgIyBBcGFjaGUgZm9sbG93cyBMb2dMZXZlbCBkaXJlY3RpdmUg
aW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGNvbnRleHQKLSAgICAgICAgIyB0byBmaWx0ZXIg
bG9ncy4gU28sIHdlIG5lZWQgdG8gc3BlY2lmeSBMb2dMZXZlbCBpbiB0aGUgc2VydmVyCi0gICAg
ICAgICMgY29uZmlndXJhdGlvbiBjb250ZXh0LiBFdmVuIGlmIHdlIHNwZWNpZnkgIkxvZ0xldmVs
IGRlYnVnIiBpbiB0aGUKLSAgICAgICAgIyB2aXJ0dWFsIGhvc3QgY29udGV4dCB3aGljaCBhY3R1
YWxseSBoYW5kbGVzIFdlYlNvY2tldCBjb25uZWN0aW9ucywKLSAgICAgICAgIyBERUJVRyBsZXZl
bCBsb2dzIG5ldmVyIHNob3cgdXAgdW5sZXNzICJMb2dMZXZlbCBkZWJ1ZyIgaXMgc3BlY2lmaWVk
Ci0gICAgICAgICMgaW4gdGhlIHNlcnZlciBjb25maWd1cmF0aW9uIGNvbnRleHQuCi0gICAgICAg
ICMKLSAgICAgICAgIyBUT0RPKHR5b3NoaW5vKTogUHJvdmlkZSBsb2dnaW5nIG1ldGhvZHMgb24g
cmVxdWVzdCBvYmplY3QuIFdoZW4KLSAgICAgICAgIyByZXF1ZXN0IGlzIG1wX3JlcXVlc3Qgb2Jq
ZWN0ICh3aGVuIHVzZWQgdG9nZXRoZXIgd2l0aCBBcGFjaGUpLCB0aGUKLSAgICAgICAgIyBtZXRo
b2RzIGNhbGwgcmVxdWVzdC5sb2dfZXJyb3IgaW5kaXJlY3RseS4gV2hlbiByZXF1ZXN0IGlzCi0g
ICAgICAgICMgX1N0YW5kYWxvbmVSZXF1ZXN0LCB0aGUgbWV0aG9kcyBjYWxsIFB5dGhvbidzIGxv
Z2dpbmcgZmFjaWxpdHkgd2hpY2gKLSAgICAgICAgIyB3ZSBjcmVhdGUgaW4gc3RhbmRhbG9uZS5w
eS4KLSAgICAgICAgc2VsZi5fbG9nX2Vycm9yKG1zZywgYXBhY2hlX2xldmVsLCBhcGFjaGUubWFp
bl9zZXJ2ZXIpCi0KLQotZGVmIF9jb25maWd1cmVfbG9nZ2luZygpOgotICAgIGxvZ2dlciA9IGxv
Z2dpbmcuZ2V0TG9nZ2VyKCkKLSAgICAjIExvZ3MgYXJlIGZpbHRlcmVkIGJ5IEFwYWNoZSBiYXNl
ZCBvbiBMb2dMZXZlbCBkaXJlY3RpdmUgaW4gQXBhY2hlCi0gICAgIyBjb25maWd1cmF0aW9uIGZp
bGUuIFdlIG11c3QganVzdCBwYXNzIGxvZ3MgZm9yIGFsbCBsZXZlbHMgdG8KLSAgICAjIEFwYWNo
ZUxvZ0hhbmRsZXIuCi0gICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCi0gICAgbG9n
Z2VyLmFkZEhhbmRsZXIoQXBhY2hlTG9nSGFuZGxlcigpKQotCi0KLV9jb25maWd1cmVfbG9nZ2lu
ZygpCi0KLV9MT0dHRVIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1kZWYgX3Bh
cnNlX29wdGlvbihuYW1lLCB2YWx1ZSwgZGVmaW5pdGlvbik6Ci0gICAgaWYgdmFsdWUgaXMgTm9u
ZToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBtZWFuaW5nID0gZGVmaW5pdGlvbi5nZXQo
dmFsdWUubG93ZXIoKSkKLSAgICBpZiBtZWFuaW5nIGlzIE5vbmU6Ci0gICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignSW52YWxpZCB2YWx1ZSBmb3IgUHl0aG9uT3B0aW9uICVzOiAlcicgJQotICAgICAg
ICAgICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlKSkKLSAgICByZXR1cm4gbWVhbmluZwotCi0K
LWRlZiBfY3JlYXRlX2Rpc3BhdGNoZXIoKToKLSAgICBfTE9HR0VSLmluZm8oJ0luaXRpYWxpemlu
ZyBEaXNwYXRjaGVyJykKLQotICAgIG9wdGlvbnMgPSBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29w
dGlvbnMoKQotCi0gICAgaGFuZGxlcl9yb290ID0gb3B0aW9ucy5nZXQoX1BZT1BUX0hBTkRMRVJf
Uk9PVCwgTm9uZSkKLSAgICBpZiBub3QgaGFuZGxlcl9yb290OgotICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1B5dGhvbk9wdGlvbiAlcyBpcyBub3QgZGVmaW5lZCcgJSBfUFlPUFRfSEFORExFUl9S
T09ULAotICAgICAgICAgICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0VSUikKLQotICAgIGhh
bmRsZXJfc2NhbiA9IG9wdGlvbnMuZ2V0KF9QWU9QVF9IQU5ETEVSX1NDQU4sIGhhbmRsZXJfcm9v
dCkKLQotICAgIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdCA9IF9wYXJzZV9vcHRpb24oCi0g
ICAgICAgIF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1QsCi0gICAgICAgIG9wdGlv
bnMuZ2V0KF9QWU9QVF9BTExPV19IQU5ETEVSU19PVVRTSURFX1JPT1QpLAotICAgICAgICBfUFlP
UFRfQUxMT1dfSEFORExFUlNfT1VUU0lERV9ST09UX0RFRklOSVRJT04pCi0KLSAgICBkaXNwYXRj
aGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcigKLSAgICAgICAgaGFuZGxlcl9yb290LCBoYW5kbGVy
X3NjYW4sIGFsbG93X2hhbmRsZXJzX291dHNpZGVfcm9vdCkKLQotICAgIGZvciB3YXJuaW5nIGlu
IGRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCk6Ci0gICAgICAgIGFwYWNoZS5sb2dfZXJyb3Io
Ci0gICAgICAgICAgICAnbW9kX3B5d2Vic29ja2V0OiBXYXJuaW5nIGluIHNvdXJjZSBsb2FkaW5n
OiAlcycgJSB3YXJuaW5nLAotICAgICAgICAgICAgYXBhY2hlLkFQTE9HX1dBUk5JTkcpCi0KLSAg
ICByZXR1cm4gZGlzcGF0Y2hlcgotCi0KLSMgSW5pdGlhbGl6ZQotX2Rpc3BhdGNoZXIgPSBfY3Jl
YXRlX2Rpc3BhdGNoZXIoKQotCi0KLWRlZiBoZWFkZXJwYXJzZXJoYW5kbGVyKHJlcXVlc3QpOgot
ICAgICIiIkhhbmRsZSByZXF1ZXN0LgotCi0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDogbW9k
X3B5dGhvbiByZXF1ZXN0LgotCi0gICAgVGhpcyBmdW5jdGlvbiBpcyBuYW1lZCBoZWFkZXJwYXJz
ZXJoYW5kbGVyIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQKLSAgICBuYW1lIGZvciBhIFB5dGhv
bkhlYWRlclBhcnNlckhhbmRsZXIuCi0gICAgIiIiCi0KLSAgICBoYW5kc2hha2VfaXNfZG9uZSA9
IEZhbHNlCi0gICAgdHJ5OgotICAgICAgICAjIEZhbGxiYWNrIHRvIGRlZmF1bHQgaHR0cCBoYW5k
bGVyIGZvciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAotICAgICAgICAjIHdlIGRvbid0IGhhdmUg
cmVxdWVzdCBoYW5kbGVycy4KLSAgICAgICAgaWYgbm90IF9kaXNwYXRjaGVyLmdldF9oYW5kbGVy
X3N1aXRlKHJlcXVlc3QudXJpKToKLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAg
ICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQ6IE5vIGhhbmRsZXIgZm9yIHJlc291cmNlOiAl
cicgJSByZXF1ZXN0LnVyaSwKLSAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfSU5GTykKLSAg
ICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgICAgICdtb2RfcHl3ZWJz
b2NrZXQ6IEZhbGxiYWNrIHRvIEFwYWNoZScsIGFwYWNoZS5BUExPR19JTkZPKQotICAgICAgICAg
ICAgcmV0dXJuIGFwYWNoZS5ERUNMSU5FRAotICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4
Y2VwdGlvbiwgZToKLSAgICAgICAgcmVxdWVzdC5sb2dfZXJyb3IoCi0gICAgICAgICAgICAnbW9k
X3B5d2Vic29ja2V0OiBEaXNwYXRjaCBmYWlsZWQgZm9yIGVycm9yOiAlcycgJSBlLAotICAgICAg
ICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAgIGlmIG5vdCBoYW5kc2hha2VfaXNfZG9u
ZToKLSAgICAgICAgICAgIHJldHVybiBlLnN0YXR1cwotCi0gICAgdHJ5OgotICAgICAgICBhbGxv
d19kcmFmdDc1ID0gX3BhcnNlX29wdGlvbigKLSAgICAgICAgICAgIF9QWU9QVF9BTExPV19EUkFG
VDc1LAotICAgICAgICAgICAgYXBhY2hlLm1haW5fc2VydmVyLmdldF9vcHRpb25zKCkuZ2V0KF9Q
WU9QVF9BTExPV19EUkFGVDc1KSwKLSAgICAgICAgICAgIF9QWU9QVF9BTExPV19EUkFGVDc1X0RF
RklOSVRJT04pCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaGFuZHNoYWtlLmRvX2hhbmRz
aGFrZSgKLSAgICAgICAgICAgICAgICByZXF1ZXN0LCBfZGlzcGF0Y2hlciwgYWxsb3dEcmFmdDc1
PWFsbG93X2RyYWZ0NzUpCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lvbkV4Y2VwdGlv
biwgZToKLSAgICAgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKAotICAgICAgICAgICAgICAgICdt
b2RfcHl3ZWJzb2NrZXQ6IEhhbmRzaGFrZSBmYWlsZWQgZm9yIHZlcnNpb24gZXJyb3I6ICVzJyAl
IGUsCi0gICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0gICAgICAgICAgICByZXF1
ZXN0LmVycl9oZWFkZXJzX291dC5hZGQoY29tbW9uLlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFE
RVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS5zdXBwb3J0ZWRf
dmVyc2lvbnMpCi0gICAgICAgICAgICByZXR1cm4gYXBhY2hlLkhUVFBfQkFEX1JFUVVFU1QKLSAg
ICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAg
ICAjIEhhbmRzaGFrZSBmb3Igd3Mvd3NzIGZhaWxlZC4KLSAgICAgICAgICAgICMgU2VuZCBodHRw
IHJlc3BvbnNlIHdpdGggZXJyb3Igc3RhdHVzLgotICAgICAgICAgICAgcmVxdWVzdC5sb2dfZXJy
b3IoCi0gICAgICAgICAgICAgICAgJ21vZF9weXdlYnNvY2tldDogSGFuZHNoYWtlIGZhaWxlZCBm
b3IgZXJyb3I6ICVzJyAlIGUsCi0gICAgICAgICAgICAgICAgYXBhY2hlLkFQTE9HX0lORk8pCi0g
ICAgICAgICAgICByZXR1cm4gZS5zdGF0dXMKLQotICAgICAgICBoYW5kc2hha2VfaXNfZG9uZSA9
IFRydWUKLSAgICAgICAgcmVxdWVzdC5fZGlzcGF0Y2hlciA9IF9kaXNwYXRjaGVyCi0gICAgICAg
IF9kaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkKLSAgICBleGNlcHQgaGFuZHNoYWtl
LkFib3J0ZWRCeVVzZXJFeGNlcHRpb24sIGU6Ci0gICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdt
b2RfcHl3ZWJzb2NrZXQ6IEFib3J0ZWQ6ICVzJyAlIGUsIGFwYWNoZS5BUExPR19JTkZPKQotICAg
IGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICMgRGlzcGF0Y2hFeGNlcHRpb24gY2FuIGFs
c28gYmUgdGhyb3duIGlmIHNvbWV0aGluZyBpcyB3cm9uZyBpbgotICAgICAgICAjIHB5d2Vic29j
a2V0IGNvZGUuIEl0J3MgY2F1Z2h0IGhlcmUsIHRoZW4uCi0KLSAgICAgICAgcmVxdWVzdC5sb2df
ZXJyb3IoJ21vZF9weXdlYnNvY2tldDogRXhjZXB0aW9uIG9jY3VycmVkOiAlc1xuJXMnICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgKGUsIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBMT0dfRVJSKQotICAgICAgICAjIFVua25v
d24gZXhjZXB0aW9ucyBiZWZvcmUgaGFuZHNoYWtlIG1lYW4gQXBhY2hlIG11c3QgaGFuZGxlIGl0
cwotICAgICAgICAjIHJlcXVlc3Qgd2l0aCBhbm90aGVyIGhhbmRsZXIuCi0gICAgICAgIGlmIG5v
dCBoYW5kc2hha2VfaXNfZG9uZToKLSAgICAgICAgICAgIHJldHVybiBhcGFjaGUuREVDTElORUQK
LSAgICAjIFNldCBhc3NiYWNrd2FyZHMgdG8gc3VwcHJlc3MgcmVzcG9uc2UgaGVhZGVyIGdlbmVy
YXRpb24gYnkgQXBhY2hlLgotICAgIHJlcXVlc3QuYXNzYmFja3dhcmRzID0gMQotICAgIHJldHVy
biBhcGFjaGUuRE9ORSAgIyBSZXR1cm4gRE9ORSBzdWNoIHRoYXQgbm8gb3RoZXIgaGFuZGxlcnMg
YXJlIGludm9rZWQuCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdl
YnNvY2tldC9odHRwX2hlYWRlcl91dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBiNzc0NjUzOTMyODVmZjFiZDZiZjhkOTk0MDFjYzY3NDQyMTI1ZTBiLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tl
dC9odHRwX2hlYWRlcl91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLSMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlV0aWxpdGllcyBmb3IgcGFyc2luZyBhbmQgZm9ybWF0dGlu
ZyBoZWFkZXJzIHRoYXQgZm9sbG93IHRoZSBncmFtbWFyIGRlZmluZWQKLWluIEhUVFAgUkZDIGh0
dHA6Ly93d3cuaWV0Zi5vcmcvcmZjL3JmYzI2MTYudHh0LgotIiIiCi0KLQotaW1wb3J0IHVybHBh
cnNlCi0KLQotX1NFUEFSQVRPUlMgPSAnKCk8PkAsOzpcXCIvW10/PXt9IFx0JwotCi0KLWRlZiBf
aXNfY2hhcihjKToKLSAgICAiIiJSZXR1cm5zIHRydWUgaWZmIGMgaXMgaW4gQ0hBUiBhcyBzcGVj
aWZpZWQgaW4gSFRUUCBSRkMuIiIiCi0KLSAgICByZXR1cm4gb3JkKGMpIDw9IDEyNwotCi0KLWRl
ZiBfaXNfY3RsKGMpOgotICAgICIiIlJldHVybnMgdHJ1ZSBpZmYgYyBpcyBpbiBDVEwgYXMgc3Bl
Y2lmaWVkIGluIEhUVFAgUkZDLiIiIgotCi0gICAgcmV0dXJuIG9yZChjKSA8PSAzMSBvciBvcmQo
YykgPT0gMTI3Ci0KLQotY2xhc3MgUGFyc2luZ1N0YXRlKG9iamVjdCk6Ci0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKLSAgICAgICAgc2Vs
Zi5oZWFkID0gMAotCi0KLWRlZiBwZWVrKHN0YXRlLCBwb3M9MCk6Ci0gICAgIiIiUGVla3MgdGhl
IGNoYXJhY3RlciBhdCBwb3MgZnJvbSB0aGUgaGVhZCBvZiBkYXRhLiIiIgotCi0gICAgaWYgc3Rh
dGUuaGVhZCArIHBvcyA+PSBsZW4oc3RhdGUuZGF0YSk6Ci0gICAgICAgIHJldHVybiBOb25lCi0K
LSAgICByZXR1cm4gc3RhdGUuZGF0YVtzdGF0ZS5oZWFkICsgcG9zXQotCi0KLWRlZiBjb25zdW1l
KHN0YXRlLCBhbW91bnQ9MSk6Ci0gICAgIiIiQ29uc3VtZXMgc3BlY2lmaWVkIGFtb3VudCBvZiBi
eXRlcyBmcm9tIHRoZSBoZWFkIGFuZCByZXR1cm5zIHRoZQotICAgIGNvbnN1bWVkIGJ5dGVzLiBJ
ZiB0aGVyZSdzIG5vdCBlbm91Z2ggYnl0ZXMgdG8gY29uc3VtZSwgcmV0dXJucyBOb25lLgotICAg
ICIiIgotCi0gICAgaWYgc3RhdGUuaGVhZCArIGFtb3VudCA+IGxlbihzdGF0ZS5kYXRhKToKLSAg
ICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHJlc3VsdCA9IHN0YXRlLmRhdGFbc3RhdGUuaGVhZDpz
dGF0ZS5oZWFkICsgYW1vdW50XQotICAgIHN0YXRlLmhlYWQgPSBzdGF0ZS5oZWFkICsgYW1vdW50
Ci0gICAgcmV0dXJuIHJlc3VsdAotCi0KLWRlZiBjb25zdW1lX3N0cmluZyhzdGF0ZSwgZXhwZWN0
ZWQpOgotICAgICIiIkdpdmVuIGEgcGFyc2luZyBzdGF0ZSBhbmQgYSBleHBlY3RlZCBzdHJpbmcs
IGNvbnN1bWVzIHRoZSBzdHJpbmcgZnJvbQotICAgIHRoZSBoZWFkLiBSZXR1cm5zIFRydWUgaWYg
Y29uc3VtZWQgc3VjY2Vzc2Z1bGx5LiBPdGhlcndpc2UsIHJldHVybnMKLSAgICBGYWxzZS4KLSAg
ICAiIiIKLQotICAgIHBvcyA9IDAKLQotICAgIGZvciBjIGluIGV4cGVjdGVkOgotICAgICAgICBp
ZiBjICE9IHBlZWsoc3RhdGUsIHBvcyk6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAg
ICAgcG9zICs9IDEKLQotICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICByZXR1cm4gVHJ1ZQot
Ci0KLWRlZiBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSBMV1MgZnJvbSB0
aGUgaGVhZC4gUmV0dXJucyBUcnVlIGlmIGFueSBMV1MgaXMgY29uc3VtZWQuCi0gICAgT3RoZXJ3
aXNlLCByZXR1cm5zIEZhbHNlLgotCi0gICAgTFdTID0gW0NSTEZdIDEqKCBTUCB8IEhUICkKLSAg
ICAiIiIKLQotICAgIG9yaWdpbmFsX2hlYWQgPSBzdGF0ZS5oZWFkCi0KLSAgICBjb25zdW1lX3N0
cmluZyhzdGF0ZSwgJ1xyXG4nKQotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyA9PSAnICcgb3IgYyA9PSAn
XHQnOgotICAgICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlm
IHBvcyA9PSAwOgotICAgICAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgICAgIGNvbnN1bWUoc3RhdGUsIHBvcykKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQot
Ci0KLWRlZiBjb25zdW1lX2x3c2VzKHN0YXRlKToKLSAgICAiIiJDb25zdW1lcyAqTFdTIGZyb20g
dGhlIGhlYWQuIiIiCi0KLSAgICB3aGlsZSBjb25zdW1lX2x3cyhzdGF0ZSk6Ci0gICAgICAgIHBh
c3MKLQotCi1kZWYgY29uc3VtZV90b2tlbihzdGF0ZSk6Ci0gICAgIiIiQ29uc3VtZXMgYSB0b2tl
biBmcm9tIHRoZSBoZWFkLiBSZXR1cm5zIHRoZSB0b2tlbiBvciBOb25lIGlmIG5vIHRva2VuCi0g
ICAgd2FzIGZvdW5kLgotICAgICIiIgotCi0gICAgcG9zID0gMAotCi0gICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgYyA9IHBlZWsoc3RhdGUsIHBvcykKLSAgICAgICAgaWYgYyBpcyBOb25lIG9yIGMg
aW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBub3QgX2lzX2NoYXIoYyk6Ci0gICAgICAg
ICAgICBpZiBwb3MgPT0gMDoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAg
ICAgICByZXR1cm4gY29uc3VtZShzdGF0ZSwgcG9zKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcG9zICs9IDEKLQotCi1kZWYgY29uc3VtZV90b2tlbl9vcl9xdW90ZWRfc3RyaW5nKHN0YXRl
KToKLSAgICAiIiJDb25zdW1lcyBhIHRva2VuIG9yIGEgcXVvdGVkLXN0cmluZywgYW5kIHJldHVy
bnMgdGhlIHRva2VuIG9yIHVucXVvdGVkCi0gICAgc3RyaW5nLiBJZiBubyB0b2tlbiBvciBxdW90
ZWQtc3RyaW5nIHdhcyBmb3VuZCwgcmV0dXJucyBOb25lLgotICAgICIiIgotCi0gICAgb3JpZ2lu
YWxfaGVhZCA9IHN0YXRlLmhlYWQKLQotICAgIGlmIG5vdCBjb25zdW1lX3N0cmluZyhzdGF0ZSwg
JyInKToKLSAgICAgICAgcmV0dXJuIGNvbnN1bWVfdG9rZW4oc3RhdGUpCi0KLSAgICByZXN1bHQg
PSBbXQotCi0gICAgZXhwZWN0X3F1b3RlZF9wYWlyID0gRmFsc2UKLQotICAgIHdoaWxlIFRydWU6
Ci0gICAgICAgIGlmIG5vdCBleHBlY3RfcXVvdGVkX3BhaXIgYW5kIGNvbnN1bWVfbHdzKHN0YXRl
KToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoJyAnKQotICAgICAgICAgICAgY29udGludWUK
LQotICAgICAgICBjID0gY29uc3VtZShzdGF0ZSkKLSAgICAgICAgaWYgYyBpcyBOb25lOgotICAg
ICAgICAgICAgIyBxdW90ZWQtc3RyaW5nIGlzIG5vdCBlbmNsb3NlZCB3aXRoIGRvdWJsZSBxdW90
YXRpb24KLSAgICAgICAgICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGV4cGVjdF9xdW90ZWRfcGFpcjoKLSAgICAgICAg
ICAgIGV4cGVjdF9xdW90ZWRfcGFpciA9IEZhbHNlCi0gICAgICAgICAgICBpZiBfaXNfY2hhcihj
KToKLSAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGMpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICMgTm9uIENIQVIgY2hhcmFjdGVyIGZvdW5kIGluIHF1b3RlZC1wYWly
Ci0gICAgICAgICAgICAgICAgc3RhdGUuaGVhZCA9IG9yaWdpbmFsX2hlYWQKLSAgICAgICAgICAg
ICAgICByZXR1cm4gTm9uZQotICAgICAgICBlbGlmIGMgPT0gJ1xcJzoKLSAgICAgICAgICAgIGV4
cGVjdF9xdW90ZWRfcGFpciA9IFRydWUKLSAgICAgICAgZWxpZiBjID09ICciJzoKLSAgICAgICAg
ICAgIHJldHVybiAnJy5qb2luKHJlc3VsdCkKLSAgICAgICAgZWxpZiBfaXNfY3RsKGMpOgotICAg
ICAgICAgICAgIyBJbnZhbGlkIGNoYXJhY3RlciAlciBmb3VuZCBpbiBxZHRleHQKLSAgICAgICAg
ICAgIHN0YXRlLmhlYWQgPSBvcmlnaW5hbF9oZWFkCi0gICAgICAgICAgICByZXR1cm4gTm9uZQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZChjKQotCi0KLWRlZiBxdW90
ZV9pZl9uZWNlc3Nhcnkocyk6Ci0gICAgIiIiUXVvdGVzIGFyYml0cmFyeSBzdHJpbmcgaW50byBx
dW90ZWQtc3RyaW5nLiIiIgotCi0gICAgcXVvdGUgPSBGYWxzZQotICAgIGlmIHMgPT0gJyc6Ci0g
ICAgICAgIHJldHVybiAnIiInCi0KLSAgICByZXN1bHQgPSBbXQotICAgIGZvciBjIGluIHM6Ci0g
ICAgICAgIGlmIGMgPT0gJyInIG9yIGMgaW4gX1NFUEFSQVRPUlMgb3IgX2lzX2N0bChjKSBvciBu
b3QgX2lzX2NoYXIoYyk6Ci0gICAgICAgICAgICBxdW90ZSA9IFRydWUKLQotICAgICAgICBpZiBj
ID09ICciJyBvciBfaXNfY3RsKGMpOgotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgnXFwnICsg
YykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoYykKLQotICAgIGlm
IHF1b3RlOgotICAgICAgICByZXR1cm4gJyInICsgJycuam9pbihyZXN1bHQpICsgJyInCi0gICAg
ZWxzZToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0KLWRlZiBwYXJzZV91cmko
dXJpKToKLSAgICAiIiJQYXJzZSBhYnNvbHV0ZSBVUkkgdGhlbiByZXR1cm4gaG9zdCwgcG9ydCBh
bmQgcmVzb3VyY2UuIiIiCi0KLSAgICBwYXJzZWQgPSB1cmxwYXJzZS51cmxzcGxpdCh1cmkpCi0g
ICAgaWYgcGFyc2VkLnNjaGVtZSAhPSAnd3NzJyBhbmQgcGFyc2VkLnNjaGVtZSAhPSAnd3MnOgot
ICAgICAgICAjIHx1cml8IG11c3QgYmUgYSByZWxhdGl2ZSBVUkkuCi0gICAgICAgICMgVE9ETyh0
b3lvc2hpbSk6IFNob3VsZCB2YWxpZGF0ZSB8dXJpfC4KLSAgICAgICAgcmV0dXJuIE5vbmUsIE5v
bmUsIHVyaQotCi0gICAgaWYgcGFyc2VkLmhvc3RuYW1lIGlzIE5vbmU6Ci0gICAgICAgIHJldHVy
biBOb25lLCBOb25lLCBOb25lCi0KLSAgICBwb3J0ID0gTm9uZQotICAgIHRyeToKLSAgICAgICAg
cG9ydCA9IHBhcnNlZC5wb3J0Ci0gICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAgICMg
cG9ydCBwcm9wZXJ0eSBjYXVzZSBWYWx1ZUVycm9yIG9uIGludmFsaWQgbnVsbCBwb3J0IGRlc2Ny
aXB0aW9uIGxpa2UKLSAgICAgICAgIyAnd3M6Ly9ob3N0Oi9wYXRoJy4KLSAgICAgICAgcmV0dXJu
IE5vbmUsIE5vbmUsIE5vbmUKLQotICAgIGlmIHBvcnQgaXMgTm9uZToKLSAgICAgICAgaWYgcGFy
c2VkLnNjaGVtZSA9PSAnd3MnOgotICAgICAgICAgICAgcG9ydCA9IDgwCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBwb3J0ID0gNDQzCi0KLSAgICBwYXRoID0gcGFyc2VkLnBhdGgKLSAgICBp
ZiBub3QgcGF0aDoKLSAgICAgICAgcGF0aCArPSAnLycKLSAgICBpZiBwYXJzZWQucXVlcnk6Ci0g
ICAgICAgIHBhdGggKz0gJz8nICsgcGFyc2VkLnF1ZXJ5Ci0gICAgaWYgcGFyc2VkLmZyYWdtZW50
OgotICAgICAgICBwYXRoICs9ICcjJyArIHBhcnNlZC5mcmFnbWVudAotCi0gICAgcmV0dXJuIHBh
cnNlZC5ob3N0bmFtZSwgcG9ydCwgcGF0aAotCi0KLXRyeToKLSAgICB1cmxwYXJzZS51c2VzX25l
dGxvYy5pbmRleCgnd3MnKQotZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgIyB1cmxwYXJzZSBp
biBQeXRob24yLjUuMSBkb2Vzbid0IGhhdmUgJ3dzJyBhbmQgJ3dzcycgZW50cmllcy4KLSAgICB1
cmxwYXJzZS51c2VzX25ldGxvYy5hcHBlbmQoJ3dzJykKLSAgICB1cmxwYXJzZS51c2VzX25ldGxv
Yy5hcHBlbmQoJ3dzcycpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3
ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDRkNGNkOTU4NTk1YWJkZmMwYzQwZDQzMDg0ODg3MDBiN2I5M2M2YjcuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0
L21lbW9yaXppbmdmaWxlLnB5CisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotIyEvdXNy
L2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJNZW1vcml6aW5nIGZp
bGUuCi0KLUEgbWVtb3JpemluZyBmaWxlIHdyYXBzIGEgZmlsZSBhbmQgbWVtb3JpemVzIGxpbmVz
IHJlYWQgYnkgcmVhZGxpbmUuCi0iIiIKLQotCi1pbXBvcnQgc3lzCi0KLQotY2xhc3MgTWVtb3Jp
emluZ0ZpbGUob2JqZWN0KToKLSAgICAiIiJNZW1vcml6aW5nRmlsZSB3cmFwcyBhIGZpbGUgYW5k
IG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgotCi0gICAgTm90ZSB0aGF0IGRhdGEg
cmVhZCBieSBvdGhlciBtZXRob2RzIGFyZSBub3QgbWVtb3JpemVkLiBUaGlzIGJlaGF2aW9yCi0g
ICAgaXMgZ29vZCBlbm91Z2ggZm9yIG1lbW9yaXppbmcgbGluZXMgU2ltcGxlSFRUUFNlcnZlciBy
ZWFkcyBiZWZvcmUKLSAgICB0aGUgY29udHJvbCByZWFjaGVzIFdlYlNvY2tldFJlcXVlc3RIYW5k
bGVyLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGVfLCBtYXhfbWVtb3Jp
emVkX2xpbmVzPXN5cy5tYXhpbnQpOgotICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2Uu
Ci0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZpbGVfOiB0aGUgZmlsZSBvYmplY3QgdG8g
d3JhcC4KLSAgICAgICAgICAgIG1heF9tZW1vcml6ZWRfbGluZXM6IHRoZSBtYXhpbXVtIG51bWJl
ciBvZiBsaW5lcyB0byBtZW1vcml6ZS4KLSAgICAgICAgICAgICAgICBPbmx5IHRoZSBmaXJzdCBt
YXhfbWVtb3JpemVkX2xpbmVzIGFyZSBtZW1vcml6ZWQuCi0gICAgICAgICAgICAgICAgRGVmYXVs
dDogc3lzLm1heGludC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fZmlsZSA9IGZpbGVf
Ci0gICAgICAgIHNlbGYuX21lbW9yaXplZF9saW5lcyA9IFtdCi0gICAgICAgIHNlbGYuX21heF9t
ZW1vcml6ZWRfbGluZXMgPSBtYXhfbWVtb3JpemVkX2xpbmVzCi0gICAgICAgIHNlbGYuX2J1ZmZl
cmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fYnVmZmVyZWRfbGluZSA9IE5vbmUKLQotICAgIGRl
ZiBfX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpOgotICAgICAgICBpZiBuYW1lIGluICgnX2Zp
bGUnLCAnX21lbW9yaXplZF9saW5lcycsICdfbWF4X21lbW9yaXplZF9saW5lcycsCi0gICAgICAg
ICAgICAgICAgICAgICdfYnVmZmVyZWQnLCAnX2J1ZmZlcmVkX2xpbmUnLCAncmVhZGxpbmUnLAot
ICAgICAgICAgICAgICAgICAgICAnZ2V0X21lbW9yaXplZF9saW5lcycpOgotICAgICAgICAgICAg
cmV0dXJuIG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpCi0gICAgICAgIHJldHVy
biBzZWxmLl9maWxlLl9fZ2V0YXR0cmlidXRlX18obmFtZSkKLQotICAgIGRlZiByZWFkbGluZShz
ZWxmLCBzaXplPS0xKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgZmlsZS5yZWFkbGluZSBhbmQgbWVt
b3JpemUgdGhlIGxpbmUgcmVhZC4KLQotICAgICAgICBOb3RlIHRoYXQgZXZlbiBpZiBzaXplIGlz
IHNwZWNpZmllZCBhbmQgc21hbGxlciB0aGFuIGFjdHVhbCBzaXplLAotICAgICAgICB0aGUgd2hv
bGUgbGluZSB3aWxsIGJlIHJlYWQgb3V0IGZyb20gdW5kZXJseWluZyBmaWxlIG9iamVjdCBieQot
ICAgICAgICBzdWJzZXF1ZW50IHJlYWRsaW5lIGNhbGxzLgotICAgICAgICAiIiIKLQotICAgICAg
ICBpZiBzZWxmLl9idWZmZXJlZDoKLSAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9idWZmZXJlZF9s
aW5lCi0gICAgICAgICAgICBzZWxmLl9idWZmZXJlZCA9IEZhbHNlCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICBsaW5lID0gc2VsZi5fZmlsZS5yZWFkbGluZSgpCi0gICAgICAgICAgICBpZiBs
aW5lIGFuZCBsZW4oc2VsZi5fbWVtb3JpemVkX2xpbmVzKSA8IHNlbGYuX21heF9tZW1vcml6ZWRf
bGluZXM6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbWVtb3JpemVkX2xpbmVzLmFwcGVuZChsaW5l
KQotICAgICAgICBpZiBzaXplID49IDAgYW5kIHNpemUgPCBsZW4obGluZSk6Ci0gICAgICAgICAg
ICBzZWxmLl9idWZmZXJlZCA9IFRydWUKLSAgICAgICAgICAgIHNlbGYuX2J1ZmZlcmVkX2xpbmUg
PSBsaW5lW3NpemU6XQotICAgICAgICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCi0gICAgICAgIHJl
dHVybiBsaW5lCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAg
IiIiR2V0IGxpbmVzIG1lbW9yaXplZCBzbyBmYXIuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9t
ZW1vcml6ZWRfbGluZXMKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0
L21zZ3V0aWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjMWEwMTE0YjRiYzQx
OGIyMGU2YTE1NTY1OWU5MjU3YWFiNzM2ZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKKysr
IC9kZXYvbnVsbApAQCAtMSwyMTkgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiTWVz
c2FnZSByZWxhdGVkIHV0aWxpdGllcy4KLQotTm90ZTogcmVxdWVzdC5jb25uZWN0aW9uLndyaXRl
L3JlYWQgYXJlIHVzZWQgaW4gdGhpcyBtb2R1bGUsIGV2ZW4gdGhvdWdoCi1tb2RfcHl0aG9uIGRv
Y3VtZW50IHNheXMgdGhhdCB0aGV5IHNob3VsZCBiZSB1c2VkIG9ubHkgaW4gY29ubmVjdGlvbgot
aGFuZGxlcnMuIFVuZm9ydHVuYXRlbHksIHdlIGhhdmUgbm8gb3RoZXIgb3B0aW9ucy4gRm9yIGV4
YW1wbGUsCi1yZXF1ZXN0LndyaXRlL3JlYWQgYXJlIG5vdCBzdWl0YWJsZSBiZWNhdXNlIHRoZXkg
ZG9uJ3QgYWxsb3cgZGlyZWN0IHJhdwotYnl0ZXMgd3JpdGluZy9yZWFkaW5nLgotIiIiCi0KLQot
aW1wb3J0IFF1ZXVlCi1pbXBvcnQgdGhyZWFkaW5nCi0KLQotIyBFeHBvcnQgRXhjZXB0aW9uIHN5
bWJvbHMgZnJvbSBtc2d1dGlsIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0
aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEludmFsaWRGcmFt
ZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBCYWRP
cGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFzZSBpbXBv
cnQgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbgotCi0KLSMgQW4gQVBJIGZvciBoYW5kbGVyIHRv
IHNlbmQvcmVjZWl2ZSBXZWJTb2NrZXQgbWVzc2FnZXMuCi1kZWYgY2xvc2VfY29ubmVjdGlvbihy
ZXF1ZXN0KToKLSAgICAiIiJDbG9zZSBjb25uZWN0aW9uLgotCi0gICAgQXJnczoKLSAgICAgICAg
cmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICIiIgotICAgIHJlcXVlc3Qud3Nfc3Ry
ZWFtLmNsb3NlX2Nvbm5lY3Rpb24oKQotCi0KLWRlZiBzZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5
bG9hZF9kYXRhLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAiIiJTZW5kIGEgbWVzc2Fn
ZSAob3IgcGFydCBvZiBhIG1lc3NhZ2UpLgotCi0gICAgQXJnczoKLSAgICAgICAgcmVxdWVzdDog
bW9kX3B5dGhvbiByZXF1ZXN0LgotICAgICAgICBwYXlsb2FkX2RhdGE6IHVuaWNvZGUgdGV4dCBv
ciBzdHIgYmluYXJ5IHRvIHNlbmQuCi0gICAgICAgIGVuZDogVHJ1ZSB0byB0ZXJtaW5hdGUgYSBt
ZXNzYWdlLgotICAgICAgICAgICAgIEZhbHNlIHRvIHNlbmQgcGF5bG9hZF9kYXRhIGFzIHBhcnQg
b2YgYSBtZXNzYWdlIHRoYXQgaXMgdG8gYmUKLSAgICAgICAgICAgICB0ZXJtaW5hdGVkIGJ5IG5l
eHQgb3IgbGF0ZXIgc2VuZF9tZXNzYWdlIGNhbGwgd2l0aCBlbmQ9VHJ1ZS4KLSAgICAgICAgYmlu
YXJ5OiBzZW5kIHBheWxvYWRfZGF0YSBhcyBiaW5hcnkgZnJhbWUocykuCi0gICAgUmFpc2VzOgot
ICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246IHdoZW4gc2VydmVyIGFscmVhZHkgdGVybWlu
YXRlZC4KLSAgICAiIiIKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UocGF5bG9h
ZF9kYXRhLCBlbmQsIGJpbmFyeSkKLQotCi1kZWYgcmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpOgot
ICAgICIiIlJlY2VpdmUgYSBXZWJTb2NrZXQgZnJhbWUgYW5kIHJldHVybiBpdHMgcGF5bG9hZCBh
cyBhIHRleHQgaW4KLSAgICB1bmljb2RlIG9yIGEgYmluYXJ5IGluIHN0ci4KLQotICAgIEFyZ3M6
Ci0gICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICBSYWlzZXM6Ci0gICAg
ICAgIEludmFsaWRGcmFtZUV4Y2VwdGlvbjogICAgIHdoZW4gY2xpZW50IHNlbmQgaW52YWxpZCBm
cmFtZS4KLSAgICAgICAgVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbjogd2hlbiBjbGllbnQgc2Vu
ZCB1bnN1cHBvcnRlZCBmcmFtZSBlLmcuIHNvbWUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb2YgcmVzZXJ2ZWQgYml0IGlzIHNldCBidXQgbm8gZXh0ZW5zaW9uIGNhbgotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWNvZ25pemUgaXQuCi0gICAgICAgIElu
dmFsaWRVVEY4RXhjZXB0aW9uOiAgICAgIHdoZW4gY2xpZW50IHNlbmQgYSB0ZXh0IGZyYW1lIGNv
bnRhaW5pbmcgYW55Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludmFsaWQg
VVRGLTggc3RyaW5nLgotICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4Y2VwdGlvbjogd2hl
biB0aGUgY29ubmVjdGlvbiBpcyBjbG9zZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgdW5leHBlY3RlZGx5LgotICAgICAgICBCYWRPcGVyYXRpb25FeGNlcHRpb246ICAgICB3
aGVuIGNsaWVudCBhbHJlYWR5IHRlcm1pbmF0ZWQuCi0gICAgIiIiCi0gICAgcmV0dXJuIHJlcXVl
c3Qud3Nfc3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpCi0KLQotZGVmIHNlbmRfcGluZyhyZXF1ZXN0
LCBib2R5PScnKToKLSAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoYm9keSkKLQotCi1j
bGFzcyBNZXNzYWdlUmVjZWl2ZXIodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiVGhpcyBjbGFz
cyByZWNlaXZlcyBtZXNzYWdlcyBmcm9tIHRoZSBjbGllbnQuCi0KLSAgICBUaGlzIGNsYXNzIHBy
b3ZpZGVzIHRocmVlIHdheXMgdG8gcmVjZWl2ZSBtZXNzYWdlczogYmxvY2tpbmcsCi0gICAgbm9u
LWJsb2NraW5nLCBhbmQgdmlhIGNhbGxiYWNrLiBDYWxsYmFjayBoYXMgdGhlIGhpZ2hlc3QgcHJl
Y2VkZW5jZS4KLQotICAgIE5vdGU6IFRoaXMgY2xhc3Mgc2hvdWxkIG5vdCBiZSB1c2VkIHdpdGgg
dGhlIHN0YW5kYWxvbmUgc2VydmVyIGZvciB3c3MKLSAgICBiZWNhdXNlIHB5T3BlblNTTCB1c2Vk
IGJ5IHRoZSBzZXJ2ZXIgcmFpc2VzIGEgZmF0YWwgZXJyb3IgaWYgdGhlIHNvY2tldAotICAgIGlz
IGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCByZXF1ZXN0LCBvbm1lc3NhZ2U9Tm9uZSk6Ci0gICAgICAgICIiIkNvbnN0cnVj
dCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9k
X3B5dGhvbiByZXF1ZXN0LgotICAgICAgICAgICAgb25tZXNzYWdlOiBhIGZ1bmN0aW9uIHRvIGJl
IGNhbGxlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZC4KLSAgICAgICAgICAgICAgICAgICAg
ICAgTWF5IGJlIE5vbmUuIElmIG5vdCBOb25lLCB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkIG9uCi0g
ICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgdGhyZWFkLiBJbiB0aGF0IGNhc2UsIE1lc3Nh
Z2VSZWNlaXZlci5yZWNlaXZlCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBNZXNzYWdlUmVj
ZWl2ZXIucmVjZWl2ZV9ub3dhaXQgYXJlIHVzZWxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAg
YmVjYXVzZSB0aGV5IHdpbGwgbmV2ZXIgcmV0dXJuIGFueSBtZXNzYWdlcy4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxm
Ll9yZXF1ZXN0ID0gcmVxdWVzdAotICAgICAgICBzZWxmLl9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkK
LSAgICAgICAgc2VsZi5fb25tZXNzYWdlID0gb25tZXNzYWdlCi0gICAgICAgIHNlbGYuX3N0b3Bf
cmVxdWVzdGVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAg
c2VsZi5zdGFydCgpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICB3aGlsZSBub3Qgc2VsZi5fc3RvcF9yZXF1ZXN0ZWQ6Ci0gICAgICAgICAgICAgICAgbWVz
c2FnZSA9IHJlY2VpdmVfbWVzc2FnZShzZWxmLl9yZXF1ZXN0KQotICAgICAgICAgICAgICAgIGlm
IHNlbGYuX29ubWVzc2FnZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fb25tZXNzYWdlKG1l
c3NhZ2UpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
cXVldWUucHV0KG1lc3NhZ2UpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjbG9zZV9j
b25uZWN0aW9uKHNlbGYuX3JlcXVlc3QpCi0KLSAgICBkZWYgcmVjZWl2ZShzZWxmKToKLSAgICAg
ICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZyb20gdGhlIGNoYW5uZWwsIGJsb2NraW5nLgotCi0g
ICAgICAgIFJldHVybnM6Ci0gICAgICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBzdHJpbmcu
Ci0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcXVldWUuZ2V0KCkKLQotICAgIGRl
ZiByZWNlaXZlX25vd2FpdChzZWxmKToKLSAgICAgICAgIiIiIFJlY2VpdmUgYSBtZXNzYWdlIGZy
b20gdGhlIGNoYW5uZWwsIG5vbi1ibG9ja2luZy4KLQotICAgICAgICBSZXR1cm5zOgotICAgICAg
ICAgICAgbWVzc2FnZSBhcyBhIHVuaWNvZGUgc3RyaW5nIGlmIGF2YWlsYWJsZS4gTm9uZSBvdGhl
cndpc2UuCi0gICAgICAgICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBtZXNzYWdlID0g
c2VsZi5fcXVldWUuZ2V0X25vd2FpdCgpCi0gICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eToKLSAg
ICAgICAgICAgIG1lc3NhZ2UgPSBOb25lCi0gICAgICAgIHJldHVybiBtZXNzYWdlCi0KLSAgICBk
ZWYgc3RvcChzZWxmKToKLSAgICAgICAgIiIiUmVxdWVzdCB0byBzdG9wIHRoaXMgaW5zdGFuY2Uu
Ci0KLSAgICAgICAgVGhlIGluc3RhbmNlIHdpbGwgYmUgc3RvcHBlZCBhZnRlciByZWNlaXZpbmcg
dGhlIG5leHQgbWVzc2FnZS4KLSAgICAgICAgVGhpcyBtZXRob2QgbWF5IG5vdCBiZSB2ZXJ5IHVz
ZWZ1bCwgYnV0IHRoZXJlIGlzIG5vIGNsZWFuIHdheQotICAgICAgICBpbiBQeXRob24gdG8gZm9y
Y2VmdWxseSBzdG9wIGEgcnVubmluZyB0aHJlYWQuCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
Ll9zdG9wX3JlcXVlc3RlZCA9IFRydWUKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVyKHRocmVhZGlu
Zy5UaHJlYWQpOgotICAgICIiIlRoaXMgY2xhc3Mgc2VuZHMgbWVzc2FnZXMgdG8gdGhlIGNsaWVu
dC4KLQotICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgYm90aCBzeW5jaHJvbm91cyBhbmQgYXN5bmNo
cm9ub3VzIHdheXMgdG8gc2VuZAotICAgIG1lc3NhZ2VzLgotCi0gICAgTm90ZTogVGhpcyBjbGFz
cyBzaG91bGQgbm90IGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yIHdzcwot
ICAgIGJlY2F1c2UgcHlPcGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlzZXMgYSBmYXRhbCBl
cnJvciBpZiB0aGUgc29ja2V0Ci0gICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRz
LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICAi
IiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIHJl
cXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KLSAgICAgICAgIiIiCi0gICAgICAgIHRocmVhZGlu
Zy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QK
LSAgICAgICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5RdWV1ZSgpCi0gICAgICAgIHNlbGYuc2V0RGFl
bW9uKFRydWUpCi0gICAgICAgIHNlbGYuc3RhcnQoKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAg
ICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNlbGYu
X3F1ZXVlLmdldCgpCi0gICAgICAgICAgICBjb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAg
ICBzZW5kX21lc3NhZ2Uoc2VsZi5fcmVxdWVzdCwgbWVzc2FnZSkKLSAgICAgICAgICAgIGNvbmRp
dGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVm
IHNlbmQoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIlNlbmQgYSBtZXNzYWdlLCBibG9ja2lu
Zy4iIiIKLQotICAgICAgICBjb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLSAgICAg
ICAgY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2Us
IGNvbmRpdGlvbikpCi0gICAgICAgIGNvbmRpdGlvbi53YWl0KCkKLQotICAgIGRlZiBzZW5kX25v
d2FpdChzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1ibG9j
a2luZy4iIiIKLQotICAgICAgICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGluZy5D
b25kaXRpb24oKSkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L211eC5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYzMzQ2ODViMzExMjI1ZTM4NzNiOWI4
MjhlZDAzMWE3ZTkwNzgwMi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvbXV4LnB5CisrKyAvZGV2L251bGwKQEAg
LTEsMTg4OSArMCwwIEBACi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgcHJvdmlk
ZXMgY2xhc3NlcyBhbmQgaGVscGVyIGZ1bmN0aW9ucyBmb3IgbXVsdGlwbGV4aW5nIGV4dGVuc2lv
bi4KLQotU3BlY2lmaWNhdGlvbjoKLWh0dHA6Ly90b29scy5pZXRmLm9yZy9odG1sL2RyYWZ0LWll
dGYtaHliaS13ZWJzb2NrZXQtbXVsdGlwbGV4aW5nLTA2Ci0iIiIKLQotCi1pbXBvcnQgY29sbGVj
dGlvbnMKLWltcG9ydCBjb3B5Ci1pbXBvcnQgZW1haWwKLWltcG9ydCBlbWFpbC5wYXJzZXIKLWlt
cG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAotaW1wb3J0IHN0cnVjdAotaW1wb3J0IHRocmVhZGlu
ZwotaW1wb3J0IHRyYWNlYmFjawotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9u
Ci1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9y
dCBCYWRPcGVyYXRpb25FeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1fYmFz
ZSBpbXBvcnQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29j
a2V0Ll9zdHJlYW1fYmFzZSBpbXBvcnQgSW52YWxpZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IEZyYW1lCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9oeWJpIGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFt
X2h5YmkgaW1wb3J0IGNyZWF0ZV9iaW5hcnlfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkKLWZyb20gbW9k
X3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgY3JlYXRlX2hlYWRlcgotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfbGVuZ3RoX2hlYWRlcgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBwYXJzZV9mcmFtZQotZnJvbSBt
b2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlIGltcG9ydCBoeWJpCi0KLQotX0NPTlRST0xfQ0hBTk5F
TF9JRCA9IDAKLV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BDT0RFX0FERF9DSEFO
TkVMX1JFUVVFU1QgPSAwCi1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRSA9IDEKLV9N
VVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCA9IDMK
LV9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPSA0Ci0KLV9NQVhfQ0hBTk5FTF9JRCA9IDIg
KiogMjkgLSAxCi0KLV9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTID0gNjQKLV9JTklU
SUFMX1FVT1RBX0ZPUl9DTElFTlQgPSA4ICogMTAyNAotCi1fSEFORFNIQUtFX0VOQ09ESU5HX0lE
RU5USVRZID0gMAotX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQSA9IDEKLQotIyBXZSBuZWVkIG9u
bHkgdGhlc2Ugc3RhdHVzIGNvZGUgZm9yIG5vdy4KLV9IVFRQX0JBRF9SRVNQT05TRV9NRVNTQUdF
UyA9IHsKLSAgICBjb21tb24uSFRUUF9TVEFUVVNfQkFEX1JFUVVFU1Q6ICdCYWQgUmVxdWVzdCcs
Ci19Ci0KLSMgRHJvcENoYW5uZWwgcmVhc29uIGNvZGUKLSMgVE9ETyhiYXNoaSk6IERlZmluZSBh
bGwgcmVhc29uIGNvZGUgZGVmaW5lZCBpbiAtMDUgZHJhZnQuCi1fRFJPUF9DT0RFX05PUk1BTF9D
TE9TVVJFID0gMTAwMAotCi1fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxBVElOR19NRVNTQUdF
ID0gMjAwMQotX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5DQVRFRCA9IDIwMDIKLV9EUk9QX0NP
REVfRU5DQVBTVUxBVEVEX0ZSQU1FX0lTX1RSVU5DQVRFRCA9IDIwMDMKLV9EUk9QX0NPREVfVU5L
Tk9XTl9NVVhfT1BDT0RFID0gMjAwNAotX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JM
T0NLID0gMjAwNQotX0RST1BfQ09ERV9DSEFOTkVMX0FMUkVBRFlfRVhJU1RTID0gMjAwNgotX0RS
T1BfQ09ERV9ORVdfQ0hBTk5FTF9TTE9UX1ZJT0xBVElPTiA9IDIwMDcKLV9EUk9QX0NPREVfVU5L
Tk9XTl9SRVFVRVNUX0VOQ09ESU5HID0gMjAxMAotCi1fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklP
TEFUSU9OID0gMzAwNQotX0RST1BfQ09ERV9TRU5EX1FVT1RBX09WRVJGTE9XID0gMzAwNgotX0RS
T1BfQ09ERV9BQ0tOT1dMRURHRUQgPSAzMDA4Ci1fRFJPUF9DT0RFX0JBRF9GUkFHTUVOVEFUSU9O
ID0gMzAwOQotCi0KLWNsYXNzIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAg
ICAiIiJFeGNlcHRpb24gaW4gaGFuZGxpbmcgbXVsdGlwbGV4aW5nIGV4dGVuc2lvbi4iIiIKLSAg
ICBwYXNzCi0KLQotIyBUZW1wb3JhcnkKLWNsYXNzIE11eE5vdEltcGxlbWVudGVkRXhjZXB0aW9u
KEV4Y2VwdGlvbik6Ci0gICAgIiIiUmFpc2VkIHdoZW4gYSBmbG93IGVudGVycyB1bmltcGxlbWVu
dGVkIGNvZGUgcGF0aC4iIiIKLSAgICBwYXNzCi0KLQotY2xhc3MgTG9naWNhbENvbm5lY3Rpb25D
bG9zZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hlbiBsb2dpY2FsIGNv
bm5lY3Rpb24gaXMgZ3JhY2VmdWxseSBjbG9zZWQuIiIiCi0gICAgcGFzcwotCi0KLWNsYXNzIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKEV4Y2VwdGlvbik6Ci0gICAgIiIiUmFpc2VkIHdoZW4gdGhl
cmUgaXMgYSBwaHlzaWNhbCBjb25uZWN0aW9uIGVycm9yLiIiIgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBkcm9wX2NvZGUsIG1lc3NhZ2U9JycpOgotICAgICAgICBzdXBlcihQaHlzaWNhbENvbm5l
Y3Rpb25FcnJvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY29kZT0lZCwgbWVzc2Fn
ZT0lcicgJSAoZHJvcF9jb2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5kcm9wX2NvZGUgPSBk
cm9wX2NvZGUKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQotCi0KLWNsYXNzIExvZ2lj
YWxDaGFubmVsRXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiJSYWlzZWQgd2hlbiB0aGVyZSBpcyBh
IGxvZ2ljYWwgY2hhbm5lbCBlcnJvci4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5l
bF9pZCwgZHJvcF9jb2RlLCBtZXNzYWdlPScnKToKLSAgICAgICAgc3VwZXIoTG9naWNhbENoYW5u
ZWxFcnJvciwgc2VsZikuX19pbml0X18oCi0gICAgICAgICAgICAnY2hhbm5lbF9pZD0lZCwgY29k
ZT0lZCwgbWVzc2FnZT0lcicgJSAoCi0gICAgICAgICAgICAgICAgY2hhbm5lbF9pZCwgZHJvcF9j
b2RlLCBtZXNzYWdlKSkKLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAg
ICAgICBzZWxmLmRyb3BfY29kZSA9IGRyb3BfY29kZQotICAgICAgICBzZWxmLm1lc3NhZ2UgPSBt
ZXNzYWdlCi0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBj
aGFubmVsX2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBt
dXN0IG5vdCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8
IDIgKiogNzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxf
aWQgPCAyICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsg
Y2hhbm5lbF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3Qg
PSBjaHIoMHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsg
c3RydWN0LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lk
IDwgMiAqKiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAg
KyBjaGFubmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0
b28gbGFyZ2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToK
LSAgICByZXR1cm4gY3JlYXRlX2xlbmd0aF9oZWFkZXIobnVtYmVyLCBGYWxzZSkKLQotCi1kZWYg
X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkLCBlbmNvZGVkX2hhbmRzaGFr
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPTAsIHJlamVjdGVk
PUZhbHNlKToKLSAgICBpZiBlbmNvZGluZyAhPSAwIGFuZCBlbmNvZGluZyAhPSAxOgotICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGVuY29kaW5nICVkJyAlIGVuY29kaW5nKQotCi0g
ICAgZmlyc3RfYnl0ZSA9ICgoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0UgPDwgNSkg
fAotICAgICAgICAgICAgICAgICAgKHJlamVjdGVkIDw8IDQpIHwgZW5jb2RpbmcpCi0gICAgYmxv
Y2sgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQo
Y2hhbm5lbF9pZCkgKwotICAgICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKGxlbihlbmNvZGVkX2hh
bmRzaGFrZSkpICsKLSAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSkKLSAgICByZXR1cm4g
YmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZT1Ob25l
LCBtZXNzYWdlPScnKToKLSAgICBpZiBsZW4obWVzc2FnZSkgPiAwIGFuZCBjb2RlIGlzIE5vbmU6
Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0NvZGUgbXVzdCBiZSBzcGVjaWZpZWQgaWYgbWVz
c2FnZSBpcyBzcGVjaWZpZWQnKQotCi0gICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX0RST1Bf
Q0hBTk5FTCA8PCA1Ci0gICAgYmxvY2sgPSBjaHIoZmlyc3RfYnl0ZSkgKyBfZW5jb2RlX2NoYW5u
ZWxfaWQoY2hhbm5lbF9pZCkKLSAgICBpZiBjb2RlIGlzIE5vbmU6Ci0gICAgICAgIGJsb2NrICs9
IF9lbmNvZGVfbnVtYmVyKDApICMgUmVhc29uIHNpemUKLSAgICBlbHNlOgotICAgICAgICByZWFz
b24gPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIG1lc3NhZ2UKLSAgICAgICAgcmVhc29uX3Np
emUgPSBfZW5jb2RlX251bWJlcihsZW4ocmVhc29uKSkKLSAgICAgICAgYmxvY2sgKz0gcmVhc29u
X3NpemUgKyByZWFzb24KLQotICAgIHJldHVybiBibG9jawotCi0KLWRlZiBfY3JlYXRlX2Zsb3df
Y29udHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgZmlyc3RfYnl0ZSA9
IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCA8PCA1Ci0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5
dGUpICsKLSAgICAgICAgICAgICBfZW5jb2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAg
ICAgICAgICAgIF9lbmNvZGVfbnVtYmVyKHJlcGxlbmlzaGVkX3F1b3RhKSkKLSAgICByZXR1cm4g
YmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9uZXdfY2hhbm5lbF9zbG90KHNsb3RzLCBzZW5kX3F1b3Rh
KToKLSAgICBpZiBzbG90cyA8IDAgb3Igc2VuZF9xdW90YSA8IDA6Ci0gICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ3Nsb3RzIGFuZCBzZW5kX3F1b3RhIG11c3QgYmUgbm9uLW5lZ2F0aXZlLicpCi0g
ICAgZmlyc3RfYnl0ZSA9IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPDwgNQotICAgIGJs
b2NrID0gKGNocihmaXJzdF9ieXRlKSArCi0gICAgICAgICAgICAgX2VuY29kZV9udW1iZXIoc2xv
dHMpICsKLSAgICAgICAgICAgICBfZW5jb2RlX251bWJlcihzZW5kX3F1b3RhKSkKLSAgICByZXR1
cm4gYmxvY2sKLQotCi1kZWYgX2NyZWF0ZV9mYWxsYmFja19uZXdfY2hhbm5lbF9zbG90KCk6Ci0g
ICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9UIDw8IDUpIHwgMSAj
IFNldCB0aGUgRiBmbGFnCi0gICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsgX2VuY29kZV9u
dW1iZXIoMCkgKyBfZW5jb2RlX251bWJlcigwKSkKLSAgICByZXR1cm4gYmxvY2sKLQotCi1kZWYg
X3BhcnNlX3JlcXVlc3RfdGV4dChyZXF1ZXN0X3RleHQpOgotICAgIHJlcXVlc3RfbGluZSwgaGVh
ZGVyX2xpbmVzID0gcmVxdWVzdF90ZXh0LnNwbGl0KCdcclxuJywgMSkKLQotICAgIHdvcmRzID0g
cmVxdWVzdF9saW5lLnNwbGl0KCcgJykKLSAgICBpZiBsZW4od29yZHMpICE9IDM6Ci0gICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCBSZXF1ZXN0LUxpbmUgc3ludGF4ICVyJyAlIHJlcXVlc3Rf
bGluZSkKLSAgICBbY29tbWFuZCwgcGF0aCwgdmVyc2lvbl0gPSB3b3JkcwotICAgIGlmIHZlcnNp
b24gIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQmFkIHJlcXVlc3Qg
dmVyc2lvbiAlcicgJSB2ZXJzaW9uKQotCi0gICAgIyBlbWFpbC5wYXJzZXIuUGFyc2VyKCkgcGFy
c2VzIFJGQyAyODIyIChSRkMgODIyKSBzdHlsZSBoZWFkZXJzLgotICAgICMgUkZDIDY0NTUgcmVm
ZXJzIFJGQyAyNjE2IGZvciBoYW5kc2hha2UgcGFyc2luZywgYW5kIFJGQyAyNjE2IHJlZmVycwot
ICAgICMgUkZDIDgyMi4KLSAgICBoZWFkZXJzID0gZW1haWwucGFyc2VyLlBhcnNlcigpLnBhcnNl
c3RyKGhlYWRlcl9saW5lcykKLSAgICByZXR1cm4gY29tbWFuZCwgcGF0aCwgdmVyc2lvbiwgaGVh
ZGVycwotCi0KLWNsYXNzIF9Db250cm9sQmxvY2sob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVy
ZSB0aGF0IGhvbGRzIHBhcnNpbmcgcmVzdWx0IG9mIG11bHRpcGxleGluZyBjb250cm9sIGJsb2Nr
LgotICAgIENvbnRyb2wgYmxvY2sgc3BlY2lmaWMgYXR0cmlidXRlcyB3aWxsIGJlIGFkZGVkIGJ5
IF9NdXhGcmFtZVBheWxvYWRQYXJzZXIuCi0gICAgKGUuZy4gZW5jb2RlZF9oYW5kc2hha2Ugd2ls
bCBiZSBhZGRlZCBmb3IgQWRkQ2hhbm5lbFJlcXVlc3QgYW5kCi0gICAgQWRkQ2hhbm5lbFJlc3Bv
bnNlKQotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wY29kZSk6Ci0gICAgICAg
IHNlbGYub3Bjb2RlID0gb3Bjb2RlCi0KLQotY2xhc3MgX011eEZyYW1lUGF5bG9hZFBhcnNlcihv
YmplY3QpOgotICAgICIiIkEgY2xhc3MgdGhhdCBwYXJzZXMgbXVsdGlwbGV4ZWQgZnJhbWUgcGF5
bG9hZC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXlsb2FkKToKLSAgICAgICAgc2Vs
Zi5fZGF0YSA9IHBheWxvYWQKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiA9IDAKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICBkZWYg
cmVhZF9jaGFubmVsX2lkKHNlbGYpOgotICAgICAgICAiIiJSZWFkcyBjaGFubmVsIGlkLgotCi0g
ICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIFZhbHVlRXJyb3I6IHdoZW4gdGhlIHBheWxvYWQg
ZG9lc24ndCBjb250YWluCi0gICAgICAgICAgICAgICAgdmFsaWQgY2hhbm5lbCBpZC4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgcmVtYWluaW5nX2xlbmd0aCA9IGxlbihzZWxmLl9kYXRhKSAtIHNl
bGYuX3JlYWRfcG9zaXRpb24KLSAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9wb3NpdGlvbgotICAg
ICAgICBpZiByZW1haW5pbmdfbGVuZ3RoID09IDA6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLQotICAgICAgICBjaGFubmVsX2lkID0g
b3JkKHNlbGYuX2RhdGFbcG9zXSkKLSAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAxCi0gICAg
ICAgIGlmIGNoYW5uZWxfaWQgJiAweGUwID09IDB4ZTA6Ci0gICAgICAgICAgICBpZiByZW1haW5p
bmdfbGVuZ3RoIDwgNDoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlk
IGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5w
YWNrKCchTCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9k
YXRhW3Bvczpwb3MrNF0pWzBdICYgMHgxZmZmZmZmZgotICAgICAgICAgICAgY2hhbm5lbF9pZF9s
ZW5ndGggPSA0Ci0gICAgICAgIGVsaWYgY2hhbm5lbF9pZCAmIDB4YzAgPT0gMHhjMDoKLSAgICAg
ICAgICAgIGlmIHJlbWFpbmluZ19sZW5ndGggPCAzOgotICAgICAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoJ0ludmFsaWQgY2hhbm5lbCBpZCBmb3JtYXQnKQotICAgICAgICAgICAgY2hhbm5l
bF9pZCA9ICgoKGNoYW5uZWxfaWQgJiAweDFmKSA8PCAxNikgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdHJ1Y3QudW5wYWNrKCchSCcsIHNlbGYuX2RhdGFbcG9zKzE6cG9zKzNdKVswXSkK
LSAgICAgICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gMwotICAgICAgICBlbGlmIGNoYW5uZWxf
aWQgJiAweDgwID09IDB4ODA6Ci0gICAgICAgICAgICBpZiByZW1haW5pbmdfbGVuZ3RoIDwgMjoK
LSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9y
bWF0JykKLSAgICAgICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchSCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhW3Bvczpwb3MrMl0p
WzBdICYgMHgzZmZmCi0gICAgICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDIKLSAgICAgICAg
c2VsZi5fcmVhZF9wb3NpdGlvbiArPSBjaGFubmVsX2lkX2xlbmd0aAotCi0gICAgICAgIHJldHVy
biBjaGFubmVsX2lkCi0KLSAgICBkZWYgcmVhZF9pbm5lcl9mcmFtZShzZWxmKToKLSAgICAgICAg
IiIiUmVhZHMgYW4gaW5uZXIgZnJhbWUuCi0KLSAgICAgICAgUmFpc2VzOgotICAgICAgICAgICAg
UGh5c2ljYWxDb25uZWN0aW9uRXJyb3I6IHdoZW4gdGhlIGlubmVyIGZyYW1lIGlzIGludmFsaWQu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIGlmIGxlbihzZWxmLl9kYXRhKSA9PSBzZWxmLl9yZWFk
X3Bvc2l0aW9uOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0g
ICAgICAgICAgICAgICAgX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVE
KQotCi0gICAgICAgIGJpdHMgPSBvcmQoc2VsZi5fZGF0YVtzZWxmLl9yZWFkX3Bvc2l0aW9uXSkK
LSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0gICAgICAgIGZpbiA9IChiaXRzICYg
MHg4MCkgPT0gMHg4MAotICAgICAgICByc3YxID0gKGJpdHMgJiAweDQwKSA9PSAweDQwCi0gICAg
ICAgIHJzdjIgPSAoYml0cyAmIDB4MjApID09IDB4MjAKLSAgICAgICAgcnN2MyA9IChiaXRzICYg
MHgxMCkgPT0gMHgxMAotICAgICAgICBvcGNvZGUgPSBiaXRzICYgMHhmCi0gICAgICAgIHBheWxv
YWQgPSBzZWxmLnJlbWFpbmluZ19kYXRhKCkKLSAgICAgICAgIyBDb25zdW1lIHJlc3Qgb2YgdGhl
IG1lc3NhZ2Ugd2hpY2ggaXMgcGF5bG9hZCBkYXRhIG9mIHRoZSBvcmlnaW5hbAotICAgICAgICAj
IGZyYW1lLgotICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uID0gbGVuKHNlbGYuX2RhdGEpCi0g
ICAgICAgIHJldHVybiBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29kZSwgcGF5bG9hZAotCi0g
ICAgZGVmIF9yZWFkX251bWJlcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3NpdGlv
biArIDEgPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAot
ICAgICAgICAgICAgICAgICdDYW5ub3QgcmVhZCB0aGUgZmlyc3QgYnl0ZSBvZiBudW1iZXIgZmll
bGQnKQotCi0gICAgICAgIG51bWJlciA9IG9yZChzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRp
b25dKQotICAgICAgICBpZiBudW1iZXIgJiAweDgwID09IDB4ODA6Ci0gICAgICAgICAgICByYWlz
ZSBWYWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICdUaGUgbW9zdCBzaWduaWZpY2FudCBiaXQg
b2YgdGhlIGZpcnN0IGJ5dGUgb2YgbnVtYmVyIHNob3VsZCAnCi0gICAgICAgICAgICAgICAgJ2Jl
IHVuc2V0JykKLSAgICAgICAgc2VsZi5fcmVhZF9wb3NpdGlvbiArPSAxCi0gICAgICAgIHBvcyA9
IHNlbGYuX3JlYWRfcG9zaXRpb24KLSAgICAgICAgaWYgbnVtYmVyID09IDEyNzoKLSAgICAgICAg
ICAgIGlmIHBvcyArIDggPiBsZW4oc2VsZi5fZGF0YSk6Ci0gICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignSW52YWxpZCBudW1iZXIgZmllbGQnKQotICAgICAgICAgICAgc2VsZi5fcmVh
ZF9wb3NpdGlvbiArPSA4Ci0gICAgICAgICAgICBudW1iZXIgPSBzdHJ1Y3QudW5wYWNrKCchUScs
IHNlbGYuX2RhdGFbcG9zOnBvcys4XSlbMF0KLSAgICAgICAgICAgIGlmIG51bWJlciA+IDB4N0ZG
RkZGRkZGRkZGRkZGRjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdFbmNvZGVk
IG51bWJlciglZCkgPj0gMl42MycgJSBudW1iZXIpCi0gICAgICAgICAgICBpZiBudW1iZXIgPD0g
MHhGRkZGOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAgICAgICAg
ICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgOSBieXRlcyBlbmNvZGluZycgJSBu
dW1iZXIpCi0gICAgICAgICAgICByZXR1cm4gbnVtYmVyCi0gICAgICAgIGlmIG51bWJlciA9PSAx
MjY6Ci0gICAgICAgICAgICBpZiBwb3MgKyAyID4gbGVuKHNlbGYuX2RhdGEpOgotICAgICAgICAg
ICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgbnVtYmVyIGZpZWxkJykKLSAgICAgICAg
ICAgIHNlbGYuX3JlYWRfcG9zaXRpb24gKz0gMgotICAgICAgICAgICAgbnVtYmVyID0gc3RydWN0
LnVucGFjaygnIUgnLCBzZWxmLl9kYXRhW3Bvczpwb3MrMl0pWzBdCi0gICAgICAgICAgICBpZiBu
dW1iZXIgPD0gMTI1OgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoCi0gICAgICAg
ICAgICAgICAgICAgICclZCBzaG91bGQgbm90IGJlIGVuY29kZWQgYnkgMyBieXRlcyBlbmNvZGlu
ZycgJSBudW1iZXIpCi0gICAgICAgIHJldHVybiBudW1iZXIKLQotICAgIGRlZiBfcmVhZF9zaXpl
X2FuZF9jb250ZW50cyhzZWxmKToKLSAgICAgICAgIiIiUmVhZHMgZGF0YSB0aGF0IGNvbnNpc3Rz
IG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIHRoZSBzaXplIG9mIHRoZSBjb250ZW50cyBl
bmNvZGVkIHRoZSBzYW1lIHdheSBhcyBwYXlsb2FkIGxlbmd0aAotICAgICAgICAgICAgICBvZiB0
aGUgV2ViU29ja2V0IFByb3RvY29sIHdpdGggMSBiaXQgcGFkZGluZyBhdCB0aGUgaGVhZC4KLSAg
ICAgICAgICAgIC0gdGhlIGNvbnRlbnRzLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBzaXplID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAgICBleGNlcHQgVmFs
dWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKF9E
Uk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKLSAgICAgICAgcG9zID0gc2VsZi5fcmVhZF9w
b3NpdGlvbgotICAgICAgICBpZiBwb3MgKyBzaXplID4gbGVuKHNlbGYuX2RhdGEpOgotICAgICAg
ICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RS
T1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICdDYW5u
b3QgcmVhZCAlZCBieXRlcyBkYXRhJyAlIHNpemUpCi0KLSAgICAgICAgc2VsZi5fcmVhZF9wb3Np
dGlvbiArPSBzaXplCi0gICAgICAgIHJldHVybiBzZWxmLl9kYXRhW3Bvczpwb3Mrc2l6ZV0KLQot
ICAgIGRlZiBfcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRy
b2xfYmxvY2spOgotICAgICAgICByZXNlcnZlZCA9IChmaXJzdF9ieXRlID4+IDIpICYgMHg3Ci0g
ICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5l
Y3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRS
T0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcp
Ci0KLSAgICAgICAgIyBJbnZhbGlkIGVuY29kaW5nIHdpbGwgYmUgaGFuZGxlZCBieSBNdXhIYW5k
bGVyLgotICAgICAgICBlbmNvZGluZyA9IGZpcnN0X2J5dGUgJiAweDMKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgY29udHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxf
aWQoKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBo
eXNpY2FsQ29ubmVjdGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9D
SykKLSAgICAgICAgY29udHJvbF9ibG9jay5lbmNvZGluZyA9IGVuY29kaW5nCi0gICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50cygpCi0gICAgICAg
IGNvbnRyb2xfYmxvY2suZW5jb2RlZF9oYW5kc2hha2UgPSBlbmNvZGVkX2hhbmRzaGFrZQotICAg
ICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2FkZF9jaGFubmVsX3Jl
c3BvbnNlKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZl
ZCA9IChmaXJzdF9ieXRlID4+IDIpICYgMHgzCi0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0g
ICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAg
ICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAg
J1Jlc2VydmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgY29udHJvbF9ibG9jay5h
Y2NlcHRlZCA9IChmaXJzdF9ieXRlID4+IDQpICYgMQotICAgICAgICBjb250cm9sX2Jsb2NrLmVu
Y29kaW5nID0gZmlyc3RfYnl0ZSAmIDB4MwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb250
cm9sX2Jsb2NrLmNoYW5uZWxfaWQgPSBzZWxmLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4
Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9u
RXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NLKQotICAgICAgICBjb250
cm9sX2Jsb2NrLmVuY29kZWRfaGFuZHNoYWtlID0gc2VsZi5fcmVhZF9zaXplX2FuZF9jb250ZW50
cygpCi0gICAgICAgIHJldHVybiBjb250cm9sX2Jsb2NrCi0KLSAgICBkZWYgX3JlYWRfZmxvd19j
b250cm9sKHNlbGYsIGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spOgotICAgICAgICByZXNlcnZl
ZCA9IGZpcnN0X2J5dGUgJiAweDFmCi0gICAgICAgIGlmIHJlc2VydmVkICE9IDA6Ci0gICAgICAg
ICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJP
UF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1Jlc2Vy
dmVkIGJpdHMgbXVzdCBiZSB1bnNldCcpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29u
dHJvbF9ibG9jay5jaGFubmVsX2lkID0gc2VsZi5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICAg
ICAgY29udHJvbF9ibG9jay5zZW5kX3F1b3RhID0gc2VsZi5fcmVhZF9udW1iZXIoKQotICAgICAg
ICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVj
dGlvbkVycm9yKF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9CTE9DSywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKLQotICAgICAgICByZXR1
cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIF9yZWFkX2Ryb3BfY2hhbm5lbChzZWxmLCBmaXJz
dF9ieXRlLCBjb250cm9sX2Jsb2NrKToKLSAgICAgICAgcmVzZXJ2ZWQgPSBmaXJzdF9ieXRlICYg
MHgxZgotICAgICAgICBpZiByZXNlcnZlZCAhPSAwOgotICAgICAgICAgICAgcmFpc2UgUGh5c2lj
YWxDb25uZWN0aW9uRXJyb3IoCi0gICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01V
WF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICdSZXNlcnZlZCBiaXRzIG11c3QgYmUg
dW5zZXQnKQotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suY2hhbm5l
bF9pZCA9IHNlbGYucmVhZF9jaGFubmVsX2lkKCkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3Is
IGU6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcihfRFJPUF9DT0RF
X0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0spCi0gICAgICAgIHJlYXNvbiA9IHNlbGYuX3JlYWRf
c2l6ZV9hbmRfY29udGVudHMoKQotICAgICAgICBpZiBsZW4ocmVhc29uKSA9PSAwOgotICAgICAg
ICAgICAgY29udHJvbF9ibG9jay5kcm9wX2NvZGUgPSBOb25lCi0gICAgICAgICAgICBjb250cm9s
X2Jsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAgICAgIGVsaWYgbGVuKHJlYXNvbikgPj0gMjoK
LSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suZHJvcF9jb2RlID0gc3RydWN0LnVucGFjaygnIUgn
LCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAgY29udHJvbF9ibG9jay5kcm9wX21lc3NhZ2Ug
PSByZWFzb25bMjpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBQaHlzaWNhbENv
bm5lY3Rpb25FcnJvcigKLSAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NP
TlRST0xfQkxPQ0ssCi0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIERyb3BDaGFubmVsIHRoYXQg
Y29uYWlucyBvbmx5IDEtYnl0ZSByZWFzb24nKQotICAgICAgICByZXR1cm4gY29udHJvbF9ibG9j
awotCi0gICAgZGVmIF9yZWFkX25ld19jaGFubmVsX3Nsb3Qoc2VsZiwgZmlyc3RfYnl0ZSwgY29u
dHJvbF9ibG9jayk6Ci0gICAgICAgIHJlc2VydmVkID0gZmlyc3RfYnl0ZSAmIDB4MWUKLSAgICAg
ICAgaWYgcmVzZXJ2ZWQgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlv
bkVycm9yKAotICAgICAgICAgICAgICAgIF9EUk9QX0NPREVfSU5WQUxJRF9NVVhfQ09OVFJPTF9C
TE9DSywKLSAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgYml0cyBtdXN0IGJlIHVuc2V0JykKLSAg
ICAgICAgY29udHJvbF9ibG9jay5mYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIGNvbnRyb2xfYmxvY2suc2xvdHMgPSBzZWxmLl9yZWFkX251bWJlcigp
Ci0gICAgICAgICAgICBjb250cm9sX2Jsb2NrLnNlbmRfcXVvdGEgPSBzZWxmLl9yZWFkX251bWJl
cigpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5
c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9MX0JMT0NL
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUpKQotICAg
ICAgICByZXR1cm4gY29udHJvbF9ibG9jawotCi0gICAgZGVmIHJlYWRfY29udHJvbF9ibG9ja3Mo
c2VsZik6Ci0gICAgICAgICIiIlJlYWRzIGNvbnRyb2wgYmxvY2socykuCi0KLSAgICAgICAgUmFp
c2VzOgotICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25FcnJvcjogd2hlbiB0aGUgcGF5bG9h
ZCBjb250YWlucyBpbnZhbGlkIGNvbnRyb2wKLSAgICAgICAgICAgICAgIGJsb2NrKHMpLgotICAg
ICAgICAgICBTdG9wSXRlcmF0aW9uOiB3aGVuIG5vIGNvbnRyb2wgYmxvY2tzIGxlZnQuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHdoaWxlIHNlbGYuX3JlYWRfcG9zaXRpb24gPCBsZW4oc2VsZi5f
ZGF0YSk6Ci0gICAgICAgICAgICBmaXJzdF9ieXRlID0gb3JkKHNlbGYuX2RhdGFbc2VsZi5fcmVh
ZF9wb3NpdGlvbl0pCi0gICAgICAgICAgICBzZWxmLl9yZWFkX3Bvc2l0aW9uICs9IDEKLSAgICAg
ICAgICAgIG9wY29kZSA9IChmaXJzdF9ieXRlID4+IDUpICYgMHg3Ci0gICAgICAgICAgICBjb250
cm9sX2Jsb2NrID0gX0NvbnRyb2xCbG9jayhvcGNvZGU9b3Bjb2RlKQotICAgICAgICAgICAgaWYg
b3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6Ci0gICAgICAgICAgICAg
ICAgeWllbGQgc2VsZi5fcmVhZF9hZGRfY2hhbm5lbF9yZXF1ZXN0KGZpcnN0X2J5dGUsIGNvbnRy
b2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hB
Tk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICB5aWVsZCBzZWxmLl9yZWFkX2FkZF9jaGFu
bmVsX3Jlc3BvbnNlKAotICAgICAgICAgICAgICAgICAgICBmaXJzdF9ieXRlLCBjb250cm9sX2Js
b2NrKQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRkxPV19DT05UUk9M
OgotICAgICAgICAgICAgICAgIHlpZWxkIHNlbGYuX3JlYWRfZmxvd19jb250cm9sKGZpcnN0X2J5
dGUsIGNvbnRyb2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09E
RV9EUk9QX0NIQU5ORUw6Ci0gICAgICAgICAgICAgICAgeWllbGQgc2VsZi5fcmVhZF9kcm9wX2No
YW5uZWwoZmlyc3RfYnl0ZSwgY29udHJvbF9ibG9jaykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2Rl
ID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1Q6Ci0gICAgICAgICAgICAgICAgeWllbGQg
c2VsZi5fcmVhZF9uZXdfY2hhbm5lbF9zbG90KGZpcnN0X2J5dGUsIGNvbnRyb2xfYmxvY2spCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlv
bkVycm9yKAotICAgICAgICAgICAgICAgICAgICBfRFJPUF9DT0RFX1VOS05PV05fTVVYX09QQ09E
RSwKLSAgICAgICAgICAgICAgICAgICAgJ0ludmFsaWQgb3Bjb2RlICVkJyAlIG9wY29kZSkKLQot
ICAgICAgICBhc3NlcnQgc2VsZi5fcmVhZF9wb3NpdGlvbiA9PSBsZW4oc2VsZi5fZGF0YSkKLSAg
ICAgICAgcmFpc2UgU3RvcEl0ZXJhdGlvbgotCi0gICAgZGVmIHJlbWFpbmluZ19kYXRhKHNlbGYp
OgotICAgICAgICAiIiJSZXR1cm5zIHJlbWFpbmluZyBkYXRhLiIiIgotCi0gICAgICAgIHJldHVy
biBzZWxmLl9kYXRhW3NlbGYuX3JlYWRfcG9zaXRpb246XQotCi0KLWNsYXNzIF9Mb2dpY2FsUmVx
dWVzdChvYmplY3QpOgotICAgICIiIk1pbWljcyBtb2RfcHl0aG9uIHJlcXVlc3QuIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5lbF9pZCwgY29tbWFuZCwgcGF0aCwgcHJvdG9jb2ws
IGhlYWRlcnMsCi0gICAgICAgICAgICAgICAgIGNvbm5lY3Rpb24pOgotICAgICAgICAiIiJDb25z
dHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVs
X2lkOiB0aGUgY2hhbm5lbCBpZCBvZiB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICAgICAg
Y29tbWFuZDogSFRUUCByZXF1ZXN0IGNvbW1hbmQuCi0gICAgICAgICAgICBwYXRoOiBIVFRQIHJl
cXVlc3QgcGF0aC4KLSAgICAgICAgICAgIGhlYWRlcnM6IEhUVFAgaGVhZGVycy4KLSAgICAgICAg
ICAgIGNvbm5lY3Rpb246IF9Mb2dpY2FsQ29ubmVjdGlvbiBpbnN0YW5jZS4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgc2VsZi5jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxmLm1l
dGhvZCA9IGNvbW1hbmQKLSAgICAgICAgc2VsZi51cmkgPSBwYXRoCi0gICAgICAgIHNlbGYucHJv
dG9jb2wgPSBwcm90b2NvbAotICAgICAgICBzZWxmLmhlYWRlcnNfaW4gPSBoZWFkZXJzCi0gICAg
ICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5zZXJ2ZXJfdGVy
bWluYXRlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuY2xpZW50X3Rlcm1pbmF0ZWQgPSBGYWxzZQot
Ci0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJNaW1pY3MgcmVxdWVzdC5pc19o
dHRwcygpLiBSZXR1cm5zIEZhbHNlIGJlY2F1c2UgdGhpcyBtZXRob2QgaXMKLSAgICAgICAgdXNl
ZCBvbmx5IGJ5IG9sZCBwcm90b2NvbHMgKGhpeGllIGFuZCBoeWJpMDApLgotICAgICAgICAiIiIK
LQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1jbGFzcyBfTG9naWNhbENvbm5lY3Rpb24ob2Jq
ZWN0KToKLSAgICAiIiJNaW1pY3MgbW9kX3B5dGhvbiBtcF9jb25uLiIiIgotCi0gICAgIyBGb3Ig
ZGV0YWlscywgc2VlIHRoZSBjb21tZW50IG9mIHNldF9yZWFkX3N0YXRlKCkuCi0gICAgU1RBVEVf
QUNUSVZFID0gMQotICAgIFNUQVRFX0dSQUNFRlVMTFlfQ0xPU0VEID0gMgotICAgIFNUQVRFX1RF
Uk1JTkFURUQgPSAzCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIsIGNoYW5u
ZWxfaWQpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFy
Z3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAg
ICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkIG9mIHRoaXMgY29ubmVjdGlvbi4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgotICAgICAg
ICBzZWxmLl9jaGFubmVsX2lkID0gY2hhbm5lbF9pZAotICAgICAgICBzZWxmLl9pbmNvbWluZ19k
YXRhID0gJycKLQotICAgICAgICAjIC0gUHJvdGVjdHMgX3dhaXRpbmdfd3JpdGVfY29tcGxldGlv
bgotICAgICAgICAjIC0gU2lnbmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9yIGNvbXBsZXRpb24g
b2Ygd3JpdGUgYnkgbXV4IGhhbmRsZXIKLSAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uID0g
dGhyZWFkaW5nLkNvbmRpdGlvbigpCi0gICAgICAgIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxl
dGlvbiA9IEZhbHNlCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24gPSB0aHJlYWRpbmcu
Q29uZGl0aW9uKCkKLSAgICAgICAgc2VsZi5fcmVhZF9zdGF0ZSA9IHNlbGYuU1RBVEVfQUNUSVZF
Ci0KLSAgICBkZWYgZ2V0X2xvY2FsX2FkZHIoc2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBt
aW1pYyBtcF9jb25uLmxvY2FsX2FkZHIuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX211eF9o
YW5kbGVyLnBoeXNpY2FsX2Nvbm5lY3Rpb24uZ2V0X2xvY2FsX2FkZHIoKQotICAgIGxvY2FsX2Fk
ZHIgPSBwcm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIo
c2VsZik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJlbW90ZV9hZGRyLiIi
IgotCi0gICAgICAgIHJldHVybiBzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9u
LmdldF9yZW1vdGVfYWRkcigpCi0gICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3Rl
X2FkZHIpCi0KLSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKLSAgICAgICAgIiIi
R2V0cyBtZW1vcml6ZWQgbGluZXMuIE5vdCBzdXBwb3J0ZWQuIiIiCi0KLSAgICAgICAgcmFpc2Ug
TXV4VW5leHBlY3RlZEV4Y2VwdGlvbignX0xvZ2ljYWxDb25uZWN0aW9uIGRvZXMgbm90IHN1cHBv
cnQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdnZXRfbWVtb3JpemVk
X2xpbmVzJykKLQotICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGVz
IGRhdGEuIG11eF9oYW5kbGVyIHNlbmRzIGRhdGEgYXN5bmNocm9ub3VzbHkuIFRoZSBjYWxsZXIg
d2lsbAotICAgICAgICBiZSBzdXNwZW5kZWQgdW50aWwgd3JpdGUgZG9uZS4KLQotICAgICAgICBB
cmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgotCi0gICAgICAgIFJh
aXNlczoKLSAgICAgICAgICAgIE11eFVuZXhwZWN0ZWRFeGNlcHRpb246IHdoZW4gY2FsbGVkIGJl
Zm9yZSBmaW5pc2hpbmcgdGhlIHByZXZpb3VzCi0gICAgICAgICAgICAgICAgd3JpdGUuCi0gICAg
ICAgICIiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIHNlbGYuX3dhaXRpbmdfd3JpdGVfY29tcGxldGlv
bjoKLSAgICAgICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGFscmVhZHkgd2FpdGluZyB0
aGUgY29tcGxldGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICdvZiB3cml0ZScgJSBzZWxmLl9j
aGFubmVsX2lkKQotCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRpb24g
PSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2RhdGEoc2VsZi5fY2hh
bm5lbF9pZCwgZGF0YSkKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRpdGlvbi53YWl0KCkK
LSAgICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB3b2tl
IHVwIGJ5IG9uX3dyaXRlcl9kb25lLgotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vs
Zi5fd3JpdGVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIHdyaXRlX2NvbnRyb2xfZGF0
YShzZWxmLCBkYXRhKToKLSAgICAgICAgIiIiV3JpdGVzIGRhdGEgdmlhIHRoZSBjb250cm9sIGNo
YW5uZWwuIERvbid0IHdhaXQgZmluaXNoaW5nIHdyaXRlCi0gICAgICAgIGJlY2F1c2UgdGhpcyBt
ZXRob2QgY2FuIGJlIGNhbGxlZCBieSBtdXggZGlzcGF0Y2hlci4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSB3cml0dGVuLgotICAgICAgICAiIiIKLQotICAg
ICAgICBzZWxmLl9tdXhfaGFuZGxlci5zZW5kX2NvbnRyb2xfZGF0YShkYXRhKQotCi0gICAgZGVm
IG9uX3dyaXRlX2RhdGFfZG9uZShzZWxmKToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gc2VuZGlu
ZyBkYXRhIGlzIGNvbXBsZXRlZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxm
Ll93cml0ZV9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3Qgc2VsZi5fd2Fp
dGluZ193cml0ZV9jb21wbGV0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0
ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdJbnZhbGlkIGNhbGwgb2Ygb25fd3Jp
dGVfZGF0YV9kb25lIGZvciBsb2dpY2FsICcKLSAgICAgICAgICAgICAgICAgICAgJ2Nvbm5lY3Rp
b24gJWQnICUgc2VsZi5fY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIHNlbGYuX3dhaXRpbmdfd3Jp
dGVfY29tcGxldGlvbiA9IEZhbHNlCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24u
bm90aWZ5KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbmRp
dGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBvbl93cml0ZXJfZG9uZShzZWxmKToKLSAgICAgICAg
IiIiQ2FsbGVkIGJ5IHRoZSBtdXggaGFuZGxlciB3aGVuIHRoZSB3cml0ZXIgdGhyZWFkIGhhcyBm
aW5pc2hlZC4iIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25k
aXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBzZWxmLl93YWl0aW5nX3dyaXRlX2NvbXBsZXRp
b24gPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uZGl0aW9uLm5vdGlmeSgpCi0g
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9jb25kaXRpb24ucmVsZWFz
ZSgpCi0KLQotICAgIGRlZiBhcHBlbmRfZnJhbWVfZGF0YShzZWxmLCBmcmFtZV9kYXRhKToKLSAg
ICAgICAgIiIiQXBwZW5kcyBpbmNvbWluZyBmcmFtZSBkYXRhLiBDYWxsZWQgd2hlbiBtdXhfaGFu
ZGxlciBkaXNwYXRjaGVzCi0gICAgICAgIGZyYW1lIGRhdGEgdG8gdGhlIGNvcnJlc3BvbmRpbmcg
YXBwbGljYXRpb24uCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAgICAgIGZyYW1lX2RhdGE6IGlu
Y29taW5nIGZyYW1lIGRhdGEuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3JlYWRfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9pbmNvbWluZ19kYXRhICs9IGZyYW1lX2Rh
dGEKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5f
cmVhZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgot
ICAgICAgICAiIiJSZWFkcyBkYXRhLiBCbG9ja3MgdW50aWwgZW5vdWdoIGRhdGEgaGFzIGFycml2
ZWQgdmlhIHBoeXNpY2FsCi0gICAgICAgIGNvbm5lY3Rpb24uCi0KLSAgICAgICAgQXJnczoKLSAg
ICAgICAgICAgIGxlbmd0aDogbGVuZ3RoIG9mIGRhdGEgdG8gYmUgcmVhZC4KLSAgICAgICAgUmFp
c2VzOgotICAgICAgICAgICAgTG9naWNhbENvbm5lY3Rpb25DbG9zZWRFeGNlcHRpb246IHdoZW4g
Y2xvc2luZyBoYW5kc2hha2UgZm9yIHRoaXMKLSAgICAgICAgICAgICAgICBsb2dpY2FsIGNoYW5u
ZWwgaGFzIGJlZW4gcmVjZWl2ZWQuCi0gICAgICAgICAgICBDb25uZWN0aW9uVGVybWluYXRlZEV4
Y2VwdGlvbjogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMKLSAgICAgICAgICAgICAg
ICBjbG9zZWQsIG9yIGFuIGVycm9yIGlzIGNhdXNlZCBvbiB0aGUgcmVhZGVyIHRocmVhZC4KLSAg
ICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWlyZSgpCi0gICAg
ICAgIHdoaWxlIChzZWxmLl9yZWFkX3N0YXRlID09IHNlbGYuU1RBVEVfQUNUSVZFIGFuZAotICAg
ICAgICAgICAgICAgbGVuKHNlbGYuX2luY29taW5nX2RhdGEpIDwgbGVuZ3RoKToKLSAgICAgICAg
ICAgIHNlbGYuX3JlYWRfY29uZGl0aW9uLndhaXQoKQotCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIGlmIHNlbGYuX3JlYWRfc3RhdGUgPT0gc2VsZi5TVEFURV9HUkFDRUZVTExZX0NMT1NFRDoK
LSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgJ0xvZ2ljYWwgY2hhbm5lbCAlZCBoYXMgY2xvc2VkLicgJSBz
ZWxmLl9jaGFubmVsX2lkKQotICAgICAgICAgICAgZWxpZiBzZWxmLl9yZWFkX3N0YXRlID09IHNl
bGYuU1RBVEVfVEVSTUlOQVRFRDoKLSAgICAgICAgICAgICAgICByYWlzZSBDb25uZWN0aW9uVGVy
bWluYXRlZEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgJ1JlY2VpdmluZyAlZCBieXRl
IGZhaWxlZC4gTG9naWNhbCBjaGFubmVsICglZCkgY2xvc2VkJyAlCi0gICAgICAgICAgICAgICAg
ICAgIChsZW5ndGgsIHNlbGYuX2NoYW5uZWxfaWQpKQotCi0gICAgICAgICAgICB2YWx1ZSA9IHNl
bGYuX2luY29taW5nX2RhdGFbOmxlbmd0aF0KLSAgICAgICAgICAgIHNlbGYuX2luY29taW5nX2Rh
dGEgPSBzZWxmLl9pbmNvbWluZ19kYXRhW2xlbmd0aDpdCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBzZWxmLl9yZWFkX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICByZXR1cm4g
dmFsdWUKLQotICAgIGRlZiBzZXRfcmVhZF9zdGF0ZShzZWxmLCBuZXdfc3RhdGUpOgotICAgICAg
ICAiIiJTZXRzIHRoZSBzdGF0ZSBvZiB0aGlzIGNvbm5lY3Rpb24uIENhbGxlZCB3aGVuIGFuIGV2
ZW50IGZvciB0aGlzCi0gICAgICAgIGNvbm5lY3Rpb24gaGFzIG9jY3VycmVkLgotCi0gICAgICAg
IEFyZ3M6Ci0gICAgICAgICAgICBuZXdfc3RhdGU6IHN0YXRlIHRvIGJlIHNldC4gbmV3X3N0YXRl
IG11c3QgYmUgb25lIG9mIGZvbGxvd2luZ3M6Ci0gICAgICAgICAgICAtIFNUQVRFX0dSQUNFRlVM
TFlfQ0xPU0VEOiB3aGVuIGNsb3NpbmcgaGFuZHNoYWtlIGZvciB0aGlzCi0gICAgICAgICAgICAg
ICAgY29ubmVjdGlvbiBoYXMgYmVlbiByZWNlaXZlZC4KLSAgICAgICAgICAgIC0gU1RBVEVfVEVS
TUlOQVRFRDogd2hlbiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbiBoYXMgY2xvc2VkIG9yCi0gICAg
ICAgICAgICAgICAgRHJvcENoYW5uZWwgb2YgdGhpcyBjb25uZWN0aW9uIGhhcyByZWNlaXZlZC4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24uYWNxdWlyZSgpCi0g
ICAgICAgIHNlbGYuX3JlYWRfc3RhdGUgPSBuZXdfc3RhdGUKLSAgICAgICAgc2VsZi5fcmVhZF9j
b25kaXRpb24ubm90aWZ5KCkKLSAgICAgICAgc2VsZi5fcmVhZF9jb25kaXRpb24ucmVsZWFzZSgp
Ci0KLQotY2xhc3MgX0lubmVyTWVzc2FnZShvYmplY3QpOgotICAgICIiIkhvbGRzIHRoZSByZXN1
bHQgb2YgX0lubmVyTWVzc2FnZUJ1aWxkZXIuYnVpbGQoKS4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcGNvZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxmLm9wY29kZSA9IG9w
Y29kZQotICAgICAgICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCi0KLQotY2xhc3MgX0lubmVyTWVz
c2FnZUJ1aWxkZXIob2JqZWN0KToKLSAgICAiIiJBIGNsYXNzIHRoYXQgaG9sZHMgdGhlIGNvbnRl
eHQgb2YgaW5uZXIgbWVzc2FnZSBmcmFnbWVudGF0aW9uIGFuZAotICAgIGJ1aWxkcyBhIG1lc3Nh
Z2UgZnJvbSBmcmFnbWVudGVkIGlubmVyIGZyYW1lKHMpLgotICAgICIiIgotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9jb250cm9sX29wY29kZSA9IE5vbmUKLSAgICAg
ICAgc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cyA9IFtdCi0gICAgICAgIHNlbGYuX21l
c3NhZ2Vfb3Bjb2RlID0gTm9uZQotICAgICAgICBzZWxmLl9wZW5kaW5nX21lc3NhZ2VfZnJhZ21l
bnRzID0gW10KLSAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hhbmRsZV9maXJz
dAotCi0gICAgZGVmIF9oYW5kbGVfZmlyc3Qoc2VsZiwgZnJhbWUpOgotICAgICAgICBpZiBmcmFt
ZS5vcGNvZGUgPT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICByYWlz
ZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oJ1NlbmRpbmcgaW52YWxpZCBjb250aW51YXRpb24gb3Bj
b2RlJykKLQotICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2Rl
KToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29u
dHJvbChmcmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9wcm9j
ZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfbWVzc2FnZShmcmFtZSkKLQotICAgIGRlZiBfcHJvY2Vzc19m
aXJzdF9mcmFnbWVudGVkX2NvbnRyb2woc2VsZiwgZnJhbWUpOgotICAgICAgICBzZWxmLl9jb250
cm9sX29wY29kZSA9IGZyYW1lLm9wY29kZQotICAgICAgICBzZWxmLl9wZW5kaW5nX2NvbnRyb2xf
ZnJhZ21lbnRzLmFwcGVuZChmcmFtZS5wYXlsb2FkKQotICAgICAgICBpZiBub3QgZnJhbWUuZmlu
OgotICAgICAgICAgICAgc2VsZi5fZnJhbWVfaGFuZGxlciA9IHNlbGYuX2hhbmRsZV9mcmFnbWVu
dGVkX2NvbnRyb2wKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIHJldHVybiBzZWxm
Ll9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJvbCgpCi0KLSAgICBkZWYgX3Byb2Nlc3NfZmly
c3RfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYsIGZyYW1lKToKLSAgICAgICAgc2VsZi5fbWVzc2Fn
ZV9vcGNvZGUgPSBmcmFtZS5vcGNvZGUKLSAgICAgICAgc2VsZi5fcGVuZGluZ19tZXNzYWdlX2Zy
YWdtZW50cy5hcHBlbmQoZnJhbWUucGF5bG9hZCkKLSAgICAgICAgaWYgbm90IGZyYW1lLmZpbjoK
LSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVfZnJhZ21lbnRl
ZF9tZXNzYWdlCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5f
cmVhc3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9oYW5kbGVfZnJhZ21l
bnRlZF9jb250cm9sKHNlbGYsIGZyYW1lKToKLSAgICAgICAgaWYgZnJhbWUub3Bjb2RlICE9IGNv
bW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgcmFpc2UgSW52YWxpZEZyYW1l
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdTZW5kaW5nIGludmFsaWQgb3Bjb2RlICVkIHdo
aWxlIHNlbmRpbmcgZnJhZ21lbnRlZCBjb250cm9sICcKLSAgICAgICAgICAgICAgICAnbWVzc2Fn
ZScgJSBmcmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfY29udHJvbF9mcmFnbWVu
dHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFtZS5maW46Ci0gICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhc3NlbWJsZV9mcmFn
bWVudGVkX2NvbnRyb2woKQotCi0gICAgZGVmIF9yZWFzc2VtYmxlX2ZyYWdtZW50ZWRfY29udHJv
bChzZWxmKToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5fY29udHJvbF9vcGNvZGUKLSAgICAgICAg
cGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19jb250cm9sX2ZyYWdtZW50cykKLSAgICAg
ICAgc2VsZi5fY29udHJvbF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfY29u
dHJvbF9mcmFnbWVudHMgPSBbXQotICAgICAgICBpZiBzZWxmLl9tZXNzYWdlX29wY29kZSBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2ZyYW1lX2hhbmRsZXIgPSBzZWxmLl9oYW5kbGVf
ZnJhZ21lbnRlZF9tZXNzYWdlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9mcmFt
ZV9oYW5kbGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVybiBfSW5uZXJNZXNz
YWdlKG9wY29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBfaGFuZGxlX2ZyYWdtZW50ZWRfbWVzc2Fn
ZShzZWxmLCBmcmFtZSk6Ci0gICAgICAgICMgU2VuZGVyIGNhbiBpbnRlcmxlYXZlIGEgY29udHJv
bCBtZXNzYWdlIHdoaWxlIHNlbmRpbmcgZnJhZ21lbnRlZAotICAgICAgICAjIG1lc3NhZ2VzLgot
ICAgICAgICBpZiBjb21tb24uaXNfY29udHJvbF9vcGNvZGUoZnJhbWUub3Bjb2RlKToKLSAgICAg
ICAgICAgIGlmIHNlbGYuX2NvbnRyb2xfb3Bjb2RlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAg
ICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdT
aG91bGQgbm90IHJlYWNoIGhlcmUoQnVnIGluIGJ1aWxkZXIpJykKLSAgICAgICAgICAgIHJldHVy
biBzZWxmLl9wcm9jZXNzX2ZpcnN0X2ZyYWdtZW50ZWRfY29udHJvbChmcmFtZSkKLQotICAgICAg
ICBpZiBmcmFtZS5vcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAg
ICAgICByYWlzZSBJbnZhbGlkRnJhbWVFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1NlbmRp
bmcgaW52YWxpZCBvcGNvZGUgJWQgd2hpbGUgc2VuZGluZyBmcmFnbWVudGVkIG1lc3NhZ2UnICUK
LSAgICAgICAgICAgICAgICBmcmFtZS5vcGNvZGUpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfbWVz
c2FnZV9mcmFnbWVudHMuYXBwZW5kKGZyYW1lLnBheWxvYWQpCi0gICAgICAgIGlmIG5vdCBmcmFt
ZS5maW46Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICByZXR1cm4gc2VsZi5fcmVh
c3NlbWJsZV9mcmFnbWVudGVkX21lc3NhZ2UoKQotCi0gICAgZGVmIF9yZWFzc2VtYmxlX2ZyYWdt
ZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgb3Bjb2RlID0gc2VsZi5fbWVzc2FnZV9vcGNv
ZGUKLSAgICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oc2VsZi5fcGVuZGluZ19tZXNzYWdlX2ZyYWdt
ZW50cykKLSAgICAgICAgc2VsZi5fbWVzc2FnZV9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYu
X3BlbmRpbmdfbWVzc2FnZV9mcmFnbWVudHMgPSBbXQotICAgICAgICBzZWxmLl9mcmFtZV9oYW5k
bGVyID0gc2VsZi5faGFuZGxlX2ZpcnN0Ci0gICAgICAgIHJldHVybiBfSW5uZXJNZXNzYWdlKG9w
Y29kZSwgcGF5bG9hZCkKLQotICAgIGRlZiBidWlsZChzZWxmLCBmcmFtZSk6Ci0gICAgICAgICIi
IkJ1aWxkIGFuIGlubmVyIG1lc3NhZ2UuIFJldHVybnMgYW4gX0lubmVyTWVzc2FnZSBpbnN0YW5j
ZSB3aGVuCi0gICAgICAgIHRoZSBnaXZlbiBmcmFtZSBpcyB0aGUgbGFzdCBmcmFnbWVudGVkIGZy
YW1lLiBSZXR1cm5zIE5vbmUgb3RoZXJ3aXNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAg
ICBmcmFtZTogYW4gaW5uZXIgZnJhbWUuCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAgICAgIElu
dmFsaWRGcmFtZUV4Y2VwdGlvbjogd2hlbiByZWNlaXZlZCBpbnZhbGlkIG9wY29kZS4gKGUuZy4K
LSAgICAgICAgICAgICAgICByZWNlaXZpbmcgbm9uIGNvbnRpbnVhdGlvbiBkYXRhIG9wY29kZSBi
dXQgdGhlIGZpbiBmbGFnIG9mCi0gICAgICAgICAgICAgICAgdGhlIHByZXZpb3VzIGlubmVyIGZy
YW1lIHdhcyBub3Qgc2V0LikKLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX2Zy
YW1lX2hhbmRsZXIoZnJhbWUpCi0KLQotY2xhc3MgX0xvZ2ljYWxTdHJlYW0oU3RyZWFtKToKLSAg
ICAiIiJNaW1pY3MgdGhlIFN0cmVhbSBjbGFzcy4gVGhpcyBjbGFzcyBpbnRlcnByZXRzIG11bHRp
cGxleGVkIFdlYlNvY2tldAotICAgIGZyYW1lcy4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VuZF9xdW90YSwgcmVjZWl2ZV9xdW90
YSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoK
LSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4KLSAgICAgICAg
ICAgIHN0cmVhbV9vcHRpb25zOiBTdHJlYW1PcHRpb25zIGluc3RhbmNlLgotICAgICAgICAgICAg
c2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1b3RhLgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90
YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFBoeXNp
Y2FsIHN0cmVhbSBpcyByZXNwb25zaWJsZSBmb3IgbWFza2luZy4KLSAgICAgICAgc3RyZWFtX29w
dGlvbnMudW5tYXNrX3JlY2VpdmUgPSBGYWxzZQotICAgICAgICBTdHJlYW0uX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMpCi0KLSAgICAgICAgc2VsZi5fc2VuZF9jbG9zZWQg
PSBGYWxzZQotICAgICAgICBzZWxmLl9zZW5kX3F1b3RhID0gc2VuZF9xdW90YQotICAgICAgICAj
IC0gUHJvdGVjdHMgX3NlbmRfY2xvc2VkIGFuZCBfc2VuZF9xdW90YQotICAgICAgICAjIC0gU2ln
bmFscyB0aGUgdGhyZWFkIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgcmVwbGVuaXNoZWQKLSAgICAg
ICAgc2VsZi5fc2VuZF9jb25kaXRpb24gPSB0aHJlYWRpbmcuQ29uZGl0aW9uKCkKLQotICAgICAg
ICAjIFRoZSBvcGNvZGUgb2YgdGhlIGZpcnN0IGZyYW1lIGluIG1lc3NhZ2VzLgotICAgICAgICBz
ZWxmLl9tZXNzYWdlX29wY29kZSA9IGNvbW1vbi5PUENPREVfVEVYVAotICAgICAgICAjIFRydWUg
d2hlbiB0aGUgbGFzdCBtZXNzYWdlIHdhcyBmcmFnbWVudGVkLgotICAgICAgICBzZWxmLl9sYXN0
X21lc3NhZ2Vfd2FzX2ZyYWdtZW50ZWQgPSBGYWxzZQotCi0gICAgICAgIHNlbGYuX3JlY2VpdmVf
cXVvdGEgPSByZWNlaXZlX3F1b3RhCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lX3Nl
bWFwaG9yZSA9IHRocmVhZGluZy5TZW1hcGhvcmUoKQotCi0gICAgICAgIHNlbGYuX2lubmVyX21l
c3NhZ2VfYnVpbGRlciA9IF9Jbm5lck1lc3NhZ2VCdWlsZGVyKCkKLQotICAgIGRlZiBfY3JlYXRl
X2lubmVyX2ZyYW1lKHNlbGYsIG9wY29kZSwgcGF5bG9hZCwgZW5kPVRydWUpOgotICAgICAgICBm
cmFtZSA9IEZyYW1lKGZpbj1lbmQsIG9wY29kZT1vcGNvZGUsIHBheWxvYWQ9cGF5bG9hZCkKLSAg
ICAgICAgZm9yIGZyYW1lX2ZpbHRlciBpbiBzZWxmLl9vcHRpb25zLm91dGdvaW5nX2ZyYW1lX2Zp
bHRlcnM6Ci0gICAgICAgICAgICBmcmFtZV9maWx0ZXIuZmlsdGVyKGZyYW1lKQotCi0gICAgICAg
IGlmIGxlbihwYXlsb2FkKSAhPSBsZW4oZnJhbWUucGF5bG9hZCk6Ci0gICAgICAgICAgICByYWlz
ZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdXggZXh0ZW5zaW9u
IG11c3Qgbm90IGJlIHVzZWQgYWZ0ZXIgZXh0ZW5zaW9ucyB3aGljaCBjaGFuZ2UgJwotICAgICAg
ICAgICAgICAgICcgZnJhbWUgYm91bmRhcnknKQotCi0gICAgICAgIGZpcnN0X2J5dGUgPSAoKGZy
YW1lLmZpbiA8PCA3KSB8IChmcmFtZS5yc3YxIDw8IDYpIHwKLSAgICAgICAgICAgICAgICAgICAg
ICAoZnJhbWUucnN2MiA8PCA1KSB8IChmcmFtZS5yc3YzIDw8IDQpIHwgZnJhbWUub3Bjb2RlKQot
ICAgICAgICByZXR1cm4gY2hyKGZpcnN0X2J5dGUpICsgZnJhbWUucGF5bG9hZAotCi0gICAgZGVm
IF93cml0ZV9pbm5lcl9mcmFtZShzZWxmLCBvcGNvZGUsIHBheWxvYWQsIGVuZD1UcnVlKToKLSAg
ICAgICAgcGF5bG9hZF9sZW5ndGggPSBsZW4ocGF5bG9hZCkKLSAgICAgICAgd3JpdGVfcG9zaXRp
b24gPSAwCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBBbiBpbm5lciBmcmFtZSB3aWxs
IGJlIGZyYWdtZW50ZWQgaWYgdGhlcmUgaXMgbm8gZW5vdWdoIHNlbmQKLSAgICAgICAgICAgICMg
cXVvdGEuIFRoaXMgc2VtYXBob3JlIGVuc3VyZXMgdGhhdCBmcmFnbWVudGVkIGlubmVyIGZyYW1l
cyBhcmUKLSAgICAgICAgICAgICMgc2VudCBpbiBvcmRlciBvbiB0aGUgbG9naWNhbCBjaGFubmVs
LgotICAgICAgICAgICAgIyBOb3RlIHRoYXQgZnJhbWVzIHRoYXQgY29tZSBmcm9tIG90aGVyIGxv
Z2ljYWwgY2hhbm5lbHMgb3IKLSAgICAgICAgICAgICMgbXVsdGlwbGV4aW5nIGNvbnRyb2wgYmxv
Y2tzIGNhbiBiZSBpbnNlcnRlZCBiZXR3ZWVuIGZyYWdtZW50ZWQKLSAgICAgICAgICAgICMgaW5u
ZXIgZnJhbWVzIG9uIHRoZSBwaHlzaWNhbCBjaGFubmVsLgotICAgICAgICAgICAgc2VsZi5fd3Jp
dGVfaW5uZXJfZnJhbWVfc2VtYXBob3JlLmFjcXVpcmUoKQotCi0gICAgICAgICAgICAjIENvbnN1
bWUgYW4gb2N0ZXQgcXVvdGEgd2hlbiB0aGlzIGlzIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1l
LgotICAgICAgICAgICAgaWYgb3Bjb2RlICE9IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OOgot
ICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25k
aXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAgICAgIHdoaWxlIChub3Qgc2VsZi5fc2Vu
ZF9jbG9zZWQpIGFuZCBzZWxmLl9zZW5kX3F1b3RhID09IDA6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi53YWl0KCkKLQotICAgICAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9zZW5kX2Nsb3NlZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9w
ZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBj
b25uZWN0aW9uICVkIGlzIGNsb3NlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuX3JlcXVlc3QuY2hhbm5lbF9pZCkKLQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5k
X3F1b3RhIC09IDEKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAg
ICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICAgICAgd2hpbGUgd3Jp
dGVfcG9zaXRpb24gPCBwYXlsb2FkX2xlbmd0aDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAg
ICAgICAgICAgICB3aGlsZSAobm90IHNlbGYuX3NlbmRfY2xvc2VkKSBhbmQgc2VsZi5fc2VuZF9x
dW90YSA9PSAwOgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICdObyBxdW90YS4gV2FpdGluZyBGbG93Q29udHJv
bCBtZXNzYWdlIGZvciAlZC4nICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9y
ZXF1ZXN0LmNoYW5uZWxfaWQpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2Nv
bmRpdGlvbi53YWl0KCkKLQotICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLl9zZW5kX2Nsb3Nl
ZDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZE9wZXJhdGlvbkV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTG9naWNhbCBjb25uZWN0aW9uICVkIGlzIGNs
b3NlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVxdWVzdC5fY2hhbm5l
bF9pZCkKLQotICAgICAgICAgICAgICAgICAgICByZW1haW5pbmcgPSBwYXlsb2FkX2xlbmd0aCAt
IHdyaXRlX3Bvc2l0aW9uCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlX2xlbmd0aCA9IG1pbihz
ZWxmLl9zZW5kX3F1b3RhLCByZW1haW5pbmcpCi0gICAgICAgICAgICAgICAgICAgIGlubmVyX2Zy
YW1lX2VuZCA9ICgKLSAgICAgICAgICAgICAgICAgICAgICAgIGVuZCBhbmQKLSAgICAgICAgICAg
ICAgICAgICAgICAgICh3cml0ZV9wb3NpdGlvbiArIHdyaXRlX2xlbmd0aCA9PSBwYXlsb2FkX2xl
bmd0aCkpCi0KLSAgICAgICAgICAgICAgICAgICAgaW5uZXJfZnJhbWUgPSBzZWxmLl9jcmVhdGVf
aW5uZXJfZnJhbWUoCi0gICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICBwYXlsb2FkW3dyaXRlX3Bvc2l0aW9uOndyaXRlX3Bvc2l0aW9uK3dyaXRl
X2xlbmd0aF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZV9lbmQpCi0gICAg
ICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfcXVvdGEgLT0gd3JpdGVfbGVuZ3RoCi0gICAgICAg
ICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29uc3VtZWQgcXVvdGE9JWQsIHJlbWFp
bmluZz0lZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdyaXRl
X2xlbmd0aCwgc2VsZi5fc2VuZF9xdW90YSkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAg
ICAgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAg
ICAgICAgICAgICAjIFdyaXRpbmcgZGF0YSB3aWxsIGJsb2NrIHRoZSB3b3JrZXIgc28gd2UgbmVl
ZCB0byByZWxlYXNlCi0gICAgICAgICAgICAgICAgIyBfc2VuZF9jb25kaXRpb24gYmVmb3JlIHdy
aXRpbmcuCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGlubmVy
IGZyYW1lOiAlcicgJSBpbm5lcl9mcmFtZSkKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoaW5uZXJfZnJhbWUpCi0gICAgICAgICAgICAgICAgd3JpdGVfcG9z
aXRpb24gKz0gd3JpdGVfbGVuZ3RoCi0KLSAgICAgICAgICAgICAgICBvcGNvZGUgPSBjb21tb24u
T1BDT0RFX0NPTlRJTlVBVElPTgotCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yLCBlOgotICAg
ICAgICAgICAgcmFpc2UgQmFkT3BlcmF0aW9uRXhjZXB0aW9uKGUpCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBzZWxmLl93cml0ZV9pbm5lcl9mcmFtZV9zZW1hcGhvcmUucmVsZWFzZSgp
Ci0KLSAgICBkZWYgcmVwbGVuaXNoX3NlbmRfcXVvdGEoc2VsZiwgc2VuZF9xdW90YSk6Ci0gICAg
ICAgICIiIlJlcGxlbmlzaCBzZW5kIHF1b3RhLiIiIgotCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgaWYgc2VsZi5f
c2VuZF9xdW90YSArIHNlbmRfcXVvdGEgPiAweDdGRkZGRkZGRkZGRkZGRkY6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IDAKLSAgICAgICAgICAgICAgICByYWlzZSBMb2dpY2Fs
Q2hhbm5lbEVycm9yKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNoYW5uZWxf
aWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9PVkVSRkxPVykKLSAgICAgICAgICAgIHNlbGYuX3Nl
bmRfcXVvdGEgKz0gc2VuZF9xdW90YQotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdS
ZXBsZW5pc2hlZCBzZW5kIHF1b3RhIGZvciBjaGFubmVsIGlkICVkOiAlZCcgJQotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIHNlbGYuX3Nl
bmRfcXVvdGEpKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fc2VuZF9jb25k
aXRpb24ubm90aWZ5KCkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2Uo
KQotCi0gICAgZGVmIGNvbnN1bWVfcmVjZWl2ZV9xdW90YShzZWxmLCBhbW91bnQpOgotICAgICAg
ICAiIiJDb25zdW1lcyByZWNlaXZlIHF1b3RhLiBSZXR1cm5zIEZhbHNlIG9uIGZhaWx1cmUuIiIi
Ci0KLSAgICAgICAgaWYgc2VsZi5fcmVjZWl2ZV9xdW90YSA8IGFtb3VudDoKLSAgICAgICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnVmlvbGF0ZSBxdW90YSBvbiBjaGFubmVsIGlkICVkOiAlZCA8
ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVlc3QuY2hh
bm5lbF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVjZWl2ZV9x
dW90YSwgYW1vdW50KSkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBzZWxmLl9y
ZWNlaXZlX3F1b3RhIC09IGFtb3VudAotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHNl
bmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAg
ICAgIiIiT3ZlcnJpZGUgU3RyZWFtLnNlbmRfbWVzc2FnZS4iIiIKLQotICAgICAgICBpZiBzZWxm
Ll9yZXF1ZXN0LnNlcnZlcl90ZXJtaW5hdGVkOgotICAgICAgICAgICAgcmFpc2UgQmFkT3BlcmF0
aW9uRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZXF1ZXN0ZWQgc2VuZF9tZXNzYWdlIGFm
dGVyIHNlbmRpbmcgb3V0IGEgY2xvc2luZyBoYW5kc2hha2UnKQotCi0gICAgICAgIGlmIGJpbmFy
eSBhbmQgaXNpbnN0YW5jZShtZXNzYWdlLCB1bmljb2RlKToKLSAgICAgICAgICAgIHJhaXNlIEJh
ZE9wZXJhdGlvbkV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTWVzc2FnZSBmb3IgYmluYXJ5
IGZyYW1lIG11c3QgYmUgaW5zdGFuY2Ugb2Ygc3RyJykKLQotICAgICAgICBpZiBiaW5hcnk6Ci0g
ICAgICAgICAgICBvcGNvZGUgPSBjb21tb24uT1BDT0RFX0JJTkFSWQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09ERV9URVhUCi0gICAgICAgICAgICBtZXNz
YWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICBmb3IgbWVzc2FnZV9maWx0
ZXIgaW4gc2VsZi5fb3B0aW9ucy5vdXRnb2luZ19tZXNzYWdlX2ZpbHRlcnM6Ci0gICAgICAgICAg
ICBtZXNzYWdlID0gbWVzc2FnZV9maWx0ZXIuZmlsdGVyKG1lc3NhZ2UsIGVuZCwgYmluYXJ5KQot
Ci0gICAgICAgIGlmIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRlZDoKLSAgICAgICAg
ICAgIGlmIG9wY29kZSAhPSBzZWxmLl9tZXNzYWdlX29wY29kZToKLSAgICAgICAgICAgICAgICBy
YWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ01lc3NhZ2UgdHlwZXMgYXJlIGRpZmZlcmVudCBp
biAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFtZXMg
Zm9yIHRoZSBzYW1lIG1lc3NhZ2UnKQotICAgICAgICAgICAgb3Bjb2RlID0gY29tbW9uLk9QQ09E
RV9DT05USU5VQVRJT04KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX21lc3NhZ2Vf
b3Bjb2RlID0gb3Bjb2RlCi0KLSAgICAgICAgc2VsZi5fd3JpdGVfaW5uZXJfZnJhbWUob3Bjb2Rl
LCBtZXNzYWdlLCBlbmQpCi0gICAgICAgIHNlbGYuX2xhc3RfbWVzc2FnZV93YXNfZnJhZ21lbnRl
ZCA9IG5vdCBlbmQKLQotICAgIGRlZiBfcmVjZWl2ZV9mcmFtZShzZWxmKToKLSAgICAgICAgIiIi
T3ZlcnJpZGVzIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZS4KLQotICAgICAgICBJbiBhZGRpdGlvbiB0
byBjYWxsIFN0cmVhbS5fcmVjZWl2ZV9mcmFtZSwgdGhpcyBtZXRob2QgYWRkcyB0aGUgYW1vdW50
Ci0gICAgICAgIG9mIHBheWxvYWQgdG8gcmVjZWl2aW5nIHF1b3RhIGFuZCBzZW5kcyBGbG93Q29u
dHJvbCB0byB0aGUgY2xpZW50LgotICAgICAgICBXZSBuZWVkIHRvIGRvIGl0IGhlcmUgYmVjYXVz
ZSBTdHJlYW0ucmVjZWl2ZV9tZXNzYWdlKCkgaGFuZGxlcwotICAgICAgICBjb250cm9sIGZyYW1l
cyBpbnRlcm5hbGx5LgotICAgICAgICAiIiIKLQotICAgICAgICBvcGNvZGUsIHBheWxvYWQsIGZp
biwgcnN2MSwgcnN2MiwgcnN2MyA9IFN0cmVhbS5fcmVjZWl2ZV9mcmFtZShzZWxmKQotICAgICAg
ICBhbW91bnQgPSBsZW4ocGF5bG9hZCkKLSAgICAgICAgIyBSZXBsZW5pc2ggZXh0cmEgb25lIG9j
dGV0IHdoZW4gcmVjZWl2aW5nIHRoZSBmaXJzdCBmcmFnbWVudGVkIGZyYW1lLgotICAgICAgICBp
ZiBvcGNvZGUgIT0gY29tbW9uLk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICBhbW91
bnQgKz0gMQotICAgICAgICBzZWxmLl9yZWNlaXZlX3F1b3RhICs9IGFtb3VudAotICAgICAgICBm
cmFtZV9kYXRhID0gX2NyZWF0ZV9mbG93X2NvbnRyb2woc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lk
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW1vdW50KQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1NlbmRpbmcgZmxvdyBjb250cm9sIGZvciAlZCwgcmVw
bGVuaXNoZWQ9JWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9yZXF1ZXN0
LmNoYW5uZWxfaWQsIGFtb3VudCkpCi0gICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53
cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLSAgICAgICAgcmV0dXJuIG9wY29kZSwgcGF5
bG9hZCwgZmluLCByc3YxLCByc3YyLCByc3YzCi0KLSAgICBkZWYgX2dldF9tZXNzYWdlX2Zyb21f
ZnJhbWUoc2VsZiwgZnJhbWUpOgotICAgICAgICAiIiJPdmVycmlkZXMgU3RyZWFtLl9nZXRfbWVz
c2FnZV9mcm9tX2ZyYW1lLgotICAgICAgICAiIiIKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBpbm5lcl9tZXNzYWdlID0gc2VsZi5faW5uZXJfbWVzc2FnZV9idWlsZGVyLmJ1aWxkKGZyYW1l
KQotICAgICAgICBleGNlcHQgSW52YWxpZEZyYW1lRXhjZXB0aW9uOgotICAgICAgICAgICAgcmFp
c2UgTG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNo
YW5uZWxfaWQsIF9EUk9QX0NPREVfQkFEX0ZSQUdNRU5UQVRJT04pCi0KLSAgICAgICAgaWYgaW5u
ZXJfbWVzc2FnZSBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAgc2Vs
Zi5fb3JpZ2luYWxfb3Bjb2RlID0gaW5uZXJfbWVzc2FnZS5vcGNvZGUKLSAgICAgICAgcmV0dXJu
IGlubmVyX21lc3NhZ2UucGF5bG9hZAotCi0gICAgZGVmIHJlY2VpdmVfbWVzc2FnZShzZWxmKToK
LSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5yZWNlaXZlX21lc3NhZ2UuIiIiCi0KLSAgICAg
ICAgIyBKdXN0IGNhbGwgU3RyZWFtLnJlY2VpdmVfbWVzc2FnZSgpLCBidXQgY2F0Y2gKLSAgICAg
ICAgIyBMb2dpY2FsQ29ubmVjdGlvbkNsb3NlZEV4Y2VwdGlvbiwgd2hpY2ggaXMgcmFpc2VkIHdo
ZW4gdGhlIGxvZ2ljYWwKLSAgICAgICAgIyBjb25uZWN0aW9uIGhhcyBjbG9zZWQgZ3JhY2VmdWxs
eS4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIFN0cmVhbS5yZWNlaXZlX21lc3Nh
Z2Uoc2VsZikKLSAgICAgICAgZXhjZXB0IExvZ2ljYWxDb25uZWN0aW9uQ2xvc2VkRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcycsIGUpCi0gICAgICAgICAg
ICByZXR1cm4gTm9uZQotCi0gICAgZGVmIF9zZW5kX2Nsb3NpbmdfaGFuZHNoYWtlKHNlbGYsIGNv
ZGUsIHJlYXNvbik6Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uX3NlbmRfY2xvc2luZ19o
YW5kc2hha2UuIiIiCi0KLSAgICAgICAgYm9keSA9IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFrZV9i
b2R5KGNvZGUsIHJlYXNvbikKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGNs
b3NpbmcgaGFuZHNoYWtlIGZvciAlZDogKCVyLCAlciknICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGNvZGUsIHJlYXNvbikpCi0gICAgICAg
IHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNvbW1vbi5PUENPREVfQ0xPU0UsIGJvZHksIGVuZD1U
cnVlKQotCi0gICAgICAgIHNlbGYuX3JlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQgPSBUcnVlCi0K
LSAgICBkZWYgc2VuZF9waW5nKHNlbGYsIGJvZHk9JycpOgotICAgICAgICAiIiJPdmVycmlkZXMg
U3RyZWFtLnNlbmRfcGluZyIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VuZGlu
ZyBwaW5nIG9uIGxvZ2ljYWwgY2hhbm5lbCAlZDogJXInICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzZWxmLl9yZXF1ZXN0LmNoYW5uZWxfaWQsIGJvZHkpKQotICAgICAgICBzZWxmLl93
cml0ZV9pbm5lcl9mcmFtZShjb21tb24uT1BDT0RFX1BJTkcsIGJvZHksIGVuZD1UcnVlKQotCi0g
ICAgICAgIHNlbGYuX3BpbmdfcXVldWUuYXBwZW5kKGJvZHkpCi0KLSAgICBkZWYgX3NlbmRfcG9u
ZyhzZWxmLCBib2R5KToKLSAgICAgICAgIiIiT3ZlcnJpZGVzIFN0cmVhbS5fc2VuZF9wb25nIiIi
Ci0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIHBvbmcgb24gbG9naWNhbCBj
aGFubmVsICVkOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuX3JlcXVl
c3QuY2hhbm5lbF9pZCwgYm9keSkpCi0gICAgICAgIHNlbGYuX3dyaXRlX2lubmVyX2ZyYW1lKGNv
bW1vbi5PUENPREVfUE9ORywgYm9keSwgZW5kPVRydWUpCi0KLSAgICBkZWYgY2xvc2VfY29ubmVj
dGlvbihzZWxmLCBjb2RlPWNvbW1vbi5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJyk6
Ci0gICAgICAgICIiIk92ZXJyaWRlcyBTdHJlYW0uY2xvc2VfY29ubmVjdGlvbi4iIiIKLQotICAg
ICAgICAjIFRPRE8oYmFzaGkpOiBJbXBsZW1lbnQKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVn
KCdDbG9zaW5nIGxvZ2ljYWwgY29ubmVjdGlvbiAlZCcgJQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLl9yZXF1ZXN0LnNl
cnZlcl90ZXJtaW5hdGVkID0gVHJ1ZQotCi0gICAgZGVmIHN0b3Bfc2VuZGluZyhzZWxmKToKLSAg
ICAgICAgIiIiU3RvcHMgYWNjZXB0aW5nIG5ldyBzZW5kIG9wZXJhdGlvbiAoX3dyaXRlX2lubmVy
X2ZyYW1lKS4iIiIKLQotICAgICAgICBzZWxmLl9zZW5kX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAg
ICAgICAgc2VsZi5fc2VuZF9jbG9zZWQgPSBUcnVlCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0
aW9uLm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX3NlbmRfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0K
LWNsYXNzIF9PdXRnb2luZ0RhdGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0aGF0IGhv
bGRzIGRhdGEgdG8gYmUgc2VudCB2aWEgcGh5c2ljYWwgY29ubmVjdGlvbiBhbmQKLSAgICBvcmln
aW4gb2YgdGhlIGRhdGEuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2hhbm5l
bF9pZCwgZGF0YSk6Ci0gICAgICAgIHNlbGYuY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAg
ICAgc2VsZi5kYXRhID0gZGF0YQotCi0KLWNsYXNzIF9QaHlzaWNhbENvbm5lY3Rpb25Xcml0ZXIo
dGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgIiIiQSB0aHJlYWQgdGhhdCBpcyByZXNwb25zaWJsZSBm
b3Igd3JpdGluZyBkYXRhIHRvIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0KLSAgICBUT0RPKGJhc2hp
KTogTWFrZSBzdXJlIHRoZXJlIGlzIG5vIHRocmVhZC1zYWZldHkgcHJvYmxlbSB3aGVuIHRoZSBy
ZWFkZXIKLSAgICB0aHJlYWQgcmVhZHMgZGF0YSBmcm9tIHRoZSBzYW1lIHNvY2tldCBhdCBhIHRp
bWUuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgotICAg
ICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICBtdXhfaGFuZGxlcjogX011eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9n
Z2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5k
bGVyID0gbXV4X2hhbmRsZXIKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgICAg
ICAjIFdoZW4gc2V0LCBtYWtlIHRoaXMgdGhyZWFkIHN0b3AgYWNjZXB0aW5nIG5ldyBkYXRhLCBm
bHVzaCBwZW5kaW5nCi0gICAgICAgICMgZGF0YSBhbmQgZXhpdC4KLSAgICAgICAgc2VsZi5fc3Rv
cF9yZXF1ZXN0ZWQgPSBGYWxzZQotICAgICAgICAjIFRoZSBjbG9zZSBjb2RlIG9mIHRoZSBwaHlz
aWNhbCBjb25uZWN0aW9uLgotICAgICAgICBzZWxmLl9jbG9zZV9jb2RlID0gY29tbW9uLlNUQVRV
U19OT1JNQUxfQ0xPU1VSRQotICAgICAgICAjIERlcXVlIGZvciBwYXNzaW5nIHdyaXRlIGRhdGEu
IEl0J3MgcHJvdGVjdGVkIGJ5IF9kZXF1ZV9jb25kaXRpb24KLSAgICAgICAgIyB1bnRpbCBfc3Rv
cF9yZXF1ZXN0ZWQgaXMgc2V0LgotICAgICAgICBzZWxmLl9kZXF1ZSA9IGNvbGxlY3Rpb25zLmRl
cXVlKCkKLSAgICAgICAgIyAtIFByb3RlY3RzIF9kZXF1ZSwgX3N0b3BfcmVxdWVzdGVkIGFuZCBf
Y2xvc2VfY29kZQotICAgICAgICAjIC0gU2lnbmFscyB0aHJlYWRzIHdhaXRpbmcgZm9yIHRoZW0g
dG8gYmUgYXZhaWxhYmxlCi0gICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbiA9IHRocmVhZGlu
Zy5Db25kaXRpb24oKQotCi0gICAgZGVmIHB1dF9vdXRnb2luZ19kYXRhKHNlbGYsIGRhdGEpOgot
ICAgICAgICAiIiJQdXRzIG91dGdvaW5nIGRhdGEuCi0KLSAgICAgICAgQXJnczoKLSAgICAgICAg
ICAgIGRhdGE6IF9PdXRnb2luZ0RhdGEgaW5zdGFuY2UuCi0KLSAgICAgICAgUmFpc2VzOgotICAg
ICAgICAgICAgQmFkT3BlcmF0aW9uRXhjZXB0aW9uOiB3aGVuIHRoZSB0aHJlYWQgaGFzIGJlZW4g
cmVxdWVzdGVkIHRvCi0gICAgICAgICAgICAgICAgdGVybWluYXRlLgotICAgICAgICAiIiIKLQot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9kZXF1ZV9jb25kaXRpb24uYWNxdWlyZSgp
Ci0gICAgICAgICAgICBpZiBzZWxmLl9zdG9wX3JlcXVlc3RlZDoKLSAgICAgICAgICAgICAgICBy
YWlzZSBCYWRPcGVyYXRpb25FeGNlcHRpb24oJ0Nhbm5vdCB3cml0ZSBkYXRhIGFueW1vcmUnKQot
Ci0gICAgICAgICAgICBzZWxmLl9kZXF1ZS5hcHBlbmQoZGF0YSkKLSAgICAgICAgICAgIHNlbGYu
X2RlcXVlX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAg
c2VsZi5fZGVxdWVfY29uZGl0aW9uLnJlbGVhc2UoKQotCi0gICAgZGVmIF93cml0ZV9kYXRhKHNl
bGYsIG91dGdvaW5nX2RhdGEpOgotICAgICAgICBtZXNzYWdlID0gKF9lbmNvZGVfY2hhbm5lbF9p
ZChvdXRnb2luZ19kYXRhLmNoYW5uZWxfaWQpICsKLSAgICAgICAgICAgICAgICAgICBvdXRnb2lu
Z19kYXRhLmRhdGEpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5kbGVy
LnBoeXNpY2FsX3N0cmVhbS5zZW5kX21lc3NhZ2UoCi0gICAgICAgICAgICAgICAgbWVzc2FnZT1t
ZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PVRydWUpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24s
IGU6Ci0gICAgICAgICAgICB1dGlsLnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgJ0ZhaWxlZCB0byBzZW5kIG1lc3NhZ2UgdG8gJXI6ICcgJQotICAgICAgICAg
ICAgICAgIChzZWxmLl9tdXhfaGFuZGxlci5waHlzaWNhbF9jb25uZWN0aW9uLnJlbW90ZV9hZGRy
LCksIGUpCi0gICAgICAgICAgICByYWlzZQotCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IEl0IHdv
dWxkIGJlIGJldHRlciB0byBibG9jayB0aGUgdGhyZWFkIHRoYXQgc2VuZHMKLSAgICAgICAgIyBj
b250cm9sIGRhdGEgYXMgd2VsbC4KLSAgICAgICAgaWYgb3V0Z29pbmdfZGF0YS5jaGFubmVsX2lk
ICE9IF9DT05UUk9MX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5u
b3RpZnlfd3JpdGVfZGF0YV9kb25lKG91dGdvaW5nX2RhdGEuY2hhbm5lbF9pZCkKLQotICAgIGRl
ZiBydW4oc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRp
dGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLl9zdG9wX3JlcXVlc3Rl
ZDoKLSAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5fZGVxdWUpID09IDA6Ci0gICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi53YWl0KCkKLSAgICAgICAgICAgICAgICAg
ICAgY29udGludWUKLQotICAgICAgICAgICAgICAgIG91dGdvaW5nX2RhdGEgPSBzZWxmLl9kZXF1
ZS5wb3BsZWZ0KCkKLQotICAgICAgICAgICAgICAgIHNlbGYuX2RlcXVlX2NvbmRpdGlvbi5yZWxl
YXNlKCkKLSAgICAgICAgICAgICAgICBzZWxmLl93cml0ZV9kYXRhKG91dGdvaW5nX2RhdGEpCi0g
ICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotCi0gICAgICAg
ICAgICAjIEZsdXNoIGRlcXVlLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyBBdCB0aGlz
IHBvaW50LCBzZWxmLl9kZXF1ZV9jb25kaXRpb24gaXMgYWx3YXlzIGFjcXVpcmVkLgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdoaWxlIGxlbihzZWxmLl9kZXF1ZSkgPiAwOgot
ICAgICAgICAgICAgICAgICAgICBvdXRnb2luZ19kYXRhID0gc2VsZi5fZGVxdWUucG9wbGVmdCgp
Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3dyaXRlX2RhdGEob3V0Z29pbmdfZGF0YSkKLSAg
ICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZGVxdWVfY29uZGl0aW9u
LnJlbGVhc2UoKQotCi0gICAgICAgICAgICAjIENsb3NlIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCB3YWl0IHRoZSByZXNwb25z
ZSBoZXJlLiBUaGUgcmVzcG9uc2Ugd2lsbCBiZSByZWFkCi0gICAgICAgICAgICAgICAgIyBieSB0
aGUgcmVhZGVyIHRocmVhZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5waHlz
aWNhbF9zdHJlYW0uY2xvc2VfY29ubmVjdGlvbigKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5f
Y2xvc2VfY29kZSwgd2FpdF9yZXNwb25zZT1GYWxzZSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0
aW9uKAotICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIGNsb3NlIHRoZSBwaHlzaWNhbCBj
b25uZWN0aW9uOiAlcicgJSBlKQotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5ub3RpZnlfd3JpdGVyX2RvbmUoKQot
Ci0gICAgZGVmIHN0b3Aoc2VsZiwgY2xvc2VfY29kZT1jb21tb24uU1RBVFVTX05PUk1BTF9DTE9T
VVJFKToKLSAgICAgICAgIiIiU3RvcHMgdGhlIHdyaXRlciB0aHJlYWQuIiIiCi0KLSAgICAgICAg
c2VsZi5fZGVxdWVfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICBzZWxmLl9zdG9wX3JlcXVl
c3RlZCA9IFRydWUKLSAgICAgICAgc2VsZi5fY2xvc2VfY29kZSA9IGNsb3NlX2NvZGUKLSAgICAg
ICAgc2VsZi5fZGVxdWVfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgIHNlbGYuX2RlcXVlX2Nv
bmRpdGlvbi5yZWxlYXNlKCkKLQotCi1jbGFzcyBfUGh5c2ljYWxDb25uZWN0aW9uUmVhZGVyKHRo
cmVhZGluZy5UaHJlYWQpOgotICAgICIiIkEgdGhyZWFkIHRoYXQgaXMgcmVzcG9uc2libGUgZm9y
IHJlYWRpbmcgZGF0YSBmcm9tIHBoeXNpY2FsIGNvbm5lY3Rpb24uCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgbXV4X2hhbmRsZXIpOgotICAgICAgICAiIiJDb25zdHJ1Y3RzIGFu
IGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBtdXhfaGFuZGxlcjogX011
eEhhbmRsZXIgaW5zdGFuY2UuCi0gICAgICAgICIiIgotCi0gICAgICAgIHRocmVhZGluZy5UaHJl
YWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3Nf
bG9nZ2VyKHNlbGYpCi0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyID0gbXV4X2hhbmRsZXIKLSAg
ICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAg
IHdoaWxlIFRydWU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGh5c2ljYWxf
c3RyZWFtID0gc2VsZi5fbXV4X2hhbmRsZXIucGh5c2ljYWxfc3RyZWFtCi0gICAgICAgICAgICAg
ICAgbWVzc2FnZSA9IHBoeXNpY2FsX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAg
ICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAg
ICAgICAgICAgICAgICAjIEJlbG93IGhhcHBlbnMgb25seSB3aGVuIGEgZGF0YSBtZXNzYWdlIGlz
IHJlY2VpdmVkLgotICAgICAgICAgICAgICAgIG9wY29kZSA9IHBoeXNpY2FsX3N0cmVhbS5nZXRf
bGFzdF9yZWNlaXZlZF9vcGNvZGUoKQotICAgICAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21t
b24uT1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIu
ZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKAotICAgICAgICAgICAgICAgICAgICAgICAgX0RST1Bf
Q09ERV9JTlZBTElEX0VOQ0FQU1VMQVRJTkdfTUVTU0FHRSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICdSZWNlaXZlZCBhIHRleHQgbWVzc2FnZSBvbiBwaHlzaWNhbCBjb25uZWN0aW9uJykKLSAg
ICAgICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25U
ZXJtaW5hdGVkRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1
ZygnJXMnLCBlKQotICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5kaXNwYXRjaF9tZXNzYWdlKG1lc3NhZ2Up
Ci0gICAgICAgICAgICBleGNlcHQgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IsIGU6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fbXV4X2hhbmRsZXIuZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKAotICAg
ICAgICAgICAgICAgICAgICBlLmRyb3BfY29kZSwgZS5tZXNzYWdlKQotICAgICAgICAgICAgICAg
IGJyZWFrCi0gICAgICAgICAgICBleGNlcHQgTG9naWNhbENoYW5uZWxFcnJvciwgZToKLSAgICAg
ICAgICAgICAgICBzZWxmLl9tdXhfaGFuZGxlci5mYWlsX2xvZ2ljYWxfY2hhbm5lbCgKLSAgICAg
ICAgICAgICAgICAgICAgZS5jaGFubmVsX2lkLCBlLmRyb3BfY29kZSwgZS5tZXNzYWdlKQotICAg
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgICAgICAgICBicmVhawot
Ci0gICAgICAgIHNlbGYuX211eF9oYW5kbGVyLm5vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQotY2xh
c3MgX1dvcmtlcih0aHJlYWRpbmcuVGhyZWFkKToKLSAgICAiIiJBIHRocmVhZCB0aGF0IGlzIHJl
c3BvbnNpYmxlIGZvciBydW5uaW5nIHRoZSBjb3JyZXNwb25kaW5nIGFwcGxpY2F0aW9uCi0gICAg
aGFuZGxlci4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtdXhfaGFuZGxlciwg
cmVxdWVzdCk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAg
QXJnczoKLSAgICAgICAgICAgIG11eF9oYW5kbGVyOiBfTXV4SGFuZGxlciBpbnN0YW5jZS4KLSAg
ICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4KLSAgICAgICAgIiIi
Ci0KLSAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fbXV4
X2hhbmRsZXIgPSBtdXhfaGFuZGxlcgotICAgICAgICBzZWxmLl9yZXF1ZXN0ID0gcmVxdWVzdAot
ICAgICAgICBzZWxmLnNldERhZW1vbihUcnVlKQotCi0gICAgZGVmIHJ1bihzZWxmKToKLSAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdMb2dpY2FsIGNoYW5uZWwgd29ya2VyIHN0YXJ0ZWQuIChp
ZD0lZCknICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QuY2hhbm5l
bF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBOb24tY3JpdGljYWwgZXhjZXB0aW9u
cyB3aWxsIGJlIGhhbmRsZWQgYnkgZGlzcGF0Y2hlci4KLSAgICAgICAgICAgIHNlbGYuX211eF9o
YW5kbGVyLmRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShzZWxmLl9yZXF1ZXN0KQotICAgICAgICBl
eGNlcHQgTG9naWNhbENoYW5uZWxFcnJvciwgZToKLSAgICAgICAgICAgIHNlbGYuX211eF9oYW5k
bGVyLmZhaWxfbG9naWNhbF9jaGFubmVsKAotICAgICAgICAgICAgICAgIGUuY2hhbm5lbF9pZCwg
ZS5kcm9wX2NvZGUsIGUubWVzc2FnZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNl
bGYuX211eF9oYW5kbGVyLm5vdGlmeV93b3JrZXJfZG9uZShzZWxmLl9yZXF1ZXN0LmNoYW5uZWxf
aWQpCi0KLQotY2xhc3MgX011eEhhbmRzaGFrZXIoaHliaS5IYW5kc2hha2VyKToKLSAgICAiIiJP
cGVuaW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IgZm9yIG11bHRpcGxleGluZy4iIiIKLQotICAgIF9E
VU1NWV9XRUJTT0NLRVRfS0VZID0gJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyLCBzZW5kX3F1b3RhLCByZWNlaXZl
X3F1b3RhKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBpbnN0YW5jZS4KLSAgICAgICAgQXJn
czoKLSAgICAgICAgICAgIHJlcXVlc3Q6IF9Mb2dpY2FsUmVxdWVzdCBpbnN0YW5jZS4KLSAgICAg
ICAgICAgIGRpc3BhdGNoZXI6IERpc3BhdGNoZXIgaW5zdGFuY2UgKGRpc3BhdGNoLkRpc3BhdGNo
ZXIpLgotICAgICAgICAgICAgc2VuZF9xdW90YTogSW5pdGlhbCBzZW5kIHF1b3RhLgotICAgICAg
ICAgICAgcmVjZWl2ZV9xdW90YTogSW5pdGlhbCByZWNlaXZlIHF1b3RhLgotICAgICAgICAiIiIK
LQotICAgICAgICBoeWJpLkhhbmRzaGFrZXIuX19pbml0X18oc2VsZiwgcmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICAgICAgc2VsZi5fc2VuZF9xdW90YSA9IHNlbmRfcXVvdGEKLSAgICAgICAgc2Vs
Zi5fcmVjZWl2ZV9xdW90YSA9IHJlY2VpdmVfcXVvdGEKLQotICAgICAgICAjIEFwcGVuZCBoZWFk
ZXJzIHdoaWNoIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgaW4gaGFuZHNoYWtlIGZpZWxkIG9mCi0g
ICAgICAgICMgQWRkQ2hhbm5lbFJlcXVlc3QuCi0gICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ug
c3VyZSB3aGV0aGVyIHdlIHNob3VsZCByYWlzZSBleGNlcHRpb24gd2hlbgotICAgICAgICAjICAg
ICB0aGVzZSBoZWFkZXJzIGFyZSBpbmNsdWRlZCBhbHJlYWR5LgotICAgICAgICByZXF1ZXN0Lmhl
YWRlcnNfaW5bY29tbW9uLlVQR1JBREVfSEVBREVSXSA9ICgKLSAgICAgICAgICAgIGNvbW1vbi5X
RUJTT0NLRVRfVVBHUkFERV9UWVBFKQotICAgICAgICByZXF1ZXN0LmhlYWRlcnNfaW5bY29tbW9u
LlNFQ19XRUJTT0NLRVRfVkVSU0lPTl9IRUFERVJdID0gKAotICAgICAgICAgICAgc3RyKGNvbW1v
bi5WRVJTSU9OX0hZQklfTEFURVNUKSkKLSAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luW2NvbW1v
bi5TRUNfV0VCU09DS0VUX0tFWV9IRUFERVJdID0gKAotICAgICAgICAgICAgc2VsZi5fRFVNTVlf
V0VCU09DS0VUX0tFWSkKLQotICAgIGRlZiBfY3JlYXRlX3N0cmVhbShzZWxmLCBzdHJlYW1fb3B0
aW9ucyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIGh5YmkuSGFuZHNoYWtlci5fY3JlYXRlX3N0cmVh
bS4iIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NyZWF0aW5nIGxvZ2ljYWwgc3Ry
ZWFtIGZvciAlZCcgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5j
aGFubmVsX2lkKQotICAgICAgICByZXR1cm4gX0xvZ2ljYWxTdHJlYW0oCi0gICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0LCBzdHJlYW1fb3B0aW9ucywgc2VsZi5fc2VuZF9xdW90YSwKLSAgICAgICAg
ICAgIHNlbGYuX3JlY2VpdmVfcXVvdGEpCi0KLSAgICBkZWYgX2NyZWF0ZV9oYW5kc2hha2VfcmVz
cG9uc2Uoc2VsZiwgYWNjZXB0KToKLSAgICAgICAgIiIiT3ZlcnJpZGUgaHliaS5fY3JlYXRlX2hh
bmRzaGFrZV9yZXNwb25zZS4iIiIKLQotICAgICAgICByZXNwb25zZSA9IFtdCi0KLSAgICAgICAg
cmVzcG9uc2UuYXBwZW5kKCdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4nKQot
Ci0gICAgICAgICMgVXBncmFkZSBhbmQgU2VjLVdlYlNvY2tldC1BY2NlcHQgc2hvdWxkIGJlIGV4
Y2x1ZGVkLgotICAgICAgICByZXNwb25zZS5hcHBlbmQoJyVzOiAlc1xyXG4nICUgKAotICAgICAg
ICAgICAgY29tbW9uLkNPTk5FQ1RJT05fSEVBREVSLCBjb21tb24uVVBHUkFERV9DT05ORUNUSU9O
X1RZUEUpKQotICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0LndzX3Byb3RvY29sIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgcmVzcG9uc2UuYXBwZW5kKCclczogJXNcclxuJyAlICgKLSAgICAgICAg
ICAgICAgICBjb21tb24uU0VDX1dFQlNPQ0tFVF9QUk9UT0NPTF9IRUFERVIsCi0gICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkpCi0gICAgICAgIGlmIChzZWxmLl9yZXF1
ZXN0LndzX2V4dGVuc2lvbnMgaXMgbm90IE5vbmUgYW5kCi0gICAgICAgICAgICBsZW4oc2VsZi5f
cmVxdWVzdC53c19leHRlbnNpb25zKSAhPSAwKToKLSAgICAgICAgICAgIHJlc3BvbnNlLmFwcGVu
ZCgnJXM6ICVzXHJcbicgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNFQ19XRUJTT0NLRVRf
RVhURU5TSU9OU19IRUFERVIsCi0gICAgICAgICAgICAgICAgY29tbW9uLmZvcm1hdF9leHRlbnNp
b25zKHNlbGYuX3JlcXVlc3Qud3NfZXh0ZW5zaW9ucykpKQotICAgICAgICByZXNwb25zZS5hcHBl
bmQoJ1xyXG4nKQotCi0gICAgICAgIHJldHVybiAnJy5qb2luKHJlc3BvbnNlKQotCi0gICAgZGVm
IF9zZW5kX2hhbmRzaGFrZShzZWxmLCBhY2NlcHQpOgotICAgICAgICAiIiJPdmVycmlkZSBoeWJp
LkhhbmRzaGFrZXIuX3NlbmRfaGFuZHNoYWtlLiIiIgotCi0gICAgICAgICMgRG9uJ3Qgc2VuZCBo
YW5kc2hha2UgcmVzcG9uc2UgZm9yIHRoZSBkZWZhdWx0IGNoYW5uZWwKLSAgICAgICAgaWYgc2Vs
Zi5fcmVxdWVzdC5jaGFubmVsX2lkID09IF9ERUZBVUxUX0NIQU5ORUxfSUQ6Ci0gICAgICAgICAg
ICByZXR1cm4KLQotICAgICAgICBoYW5kc2hha2VfcmVzcG9uc2UgPSBzZWxmLl9jcmVhdGVfaGFu
ZHNoYWtlX3Jlc3BvbnNlKGFjY2VwdCkKLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfYWRk
X2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcmVxdWVz
dC5jaGFubmVsX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgIGhhbmRzaGFrZV9yZXNwb25z
ZSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdTZW5kaW5nIGhhbmRzaGFrZSByZXNwb25z
ZSBmb3IgJWQ6ICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5fcmVxdWVz
dC5jaGFubmVsX2lkLCBmcmFtZV9kYXRhKSkKLSAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0
aW9uLndyaXRlX2NvbnRyb2xfZGF0YShmcmFtZV9kYXRhKQotCi0KLWNsYXNzIF9Mb2dpY2FsQ2hh
bm5lbERhdGEob2JqZWN0KToKLSAgICAiIiJBIHN0cnVjdHVyZSB0aGF0IGhvbGRzIGluZm9ybWF0
aW9uIGFib3V0IGxvZ2ljYWwgY2hhbm5lbC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByZXF1ZXN0LCB3b3JrZXIpOgotICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0Ci0g
ICAgICAgIHNlbGYud29ya2VyID0gd29ya2VyCi0gICAgICAgIHNlbGYuZHJvcF9jb2RlID0gX0RS
T1BfQ09ERV9OT1JNQUxfQ0xPU1VSRQotICAgICAgICBzZWxmLmRyb3BfbWVzc2FnZSA9ICcnCi0K
LQotY2xhc3MgX0hhbmRzaGFrZURlbHRhQmFzZShvYmplY3QpOgotICAgICIiIkEgY2xhc3MgdGhh
dCBob2xkcyBpbmZvcm1hdGlvbiBmb3IgZGVsdGEtZW5jb2RlZCBoYW5kc2hha2UuIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgaGVhZGVycyk6Ci0gICAgICAgIHNlbGYuX2hlYWRlcnMgPSBo
ZWFkZXJzCi0KLSAgICBkZWYgY3JlYXRlX2hlYWRlcnMoc2VsZiwgZGVsdGE9Tm9uZSk6Ci0gICAg
ICAgICIiIkNyZWF0ZXMgcmVxdWVzdCBoZWFkZXJzIGZvciBhbiBBZGRDaGFubmVsUmVxdWVzdCB0
aGF0IGhhcwotICAgICAgICBkZWx0YS1lbmNvZGVkIGhhbmRzaGFrZS4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgZGVsdGE6IGhlYWRlcnMgc2hvdWxkIGJlIG92ZXJyaWRkZW4uCi0gICAg
ICAgICIiIgotCi0gICAgICAgIGhlYWRlcnMgPSBjb3B5LmNvcHkoc2VsZi5faGVhZGVycykKLSAg
ICAgICAgaWYgZGVsdGE6Ci0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkZWx0YS5pdGVt
cygpOgotICAgICAgICAgICAgICAgICMgVGhlIHNwZWMgcmVxdWlyZXMgdGhhdCBhIGhlYWRlciB3
aXRoIGFuIGVtcHR5IHZhbHVlIGlzCi0gICAgICAgICAgICAgICAgIyByZW1vdmVkIGZyb20gdGhl
IGRlbHRhIGJhc2UuCi0gICAgICAgICAgICAgICAgaWYgbGVuKHZhbHVlKSA9PSAwIGFuZCBoZWFk
ZXJzLmhhc19rZXkoa2V5KToKLSAgICAgICAgICAgICAgICAgICAgZGVsIGhlYWRlcnNba2V5XQot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGhlYWRlcnNba2V5XSA9
IHZhbHVlCi0gICAgICAgIHJldHVybiBoZWFkZXJzCi0KLQotY2xhc3MgX011eEhhbmRsZXIob2Jq
ZWN0KToKLSAgICAiIiJNdWx0aXBsZXhpbmcgaGFuZGxlci4gV2hlbiBhIGhhbmRsZXIgc3RhcnRz
LCBpdCBsYXVuY2hlcyB0aHJlZQotICAgIHRocmVhZHM7IHRoZSByZWFkZXIgdGhyZWFkLCB0aGUg
d3JpdGVyIHRocmVhZCwgYW5kIGEgd29ya2VyIHRocmVhZC4KLQotICAgIFRoZSByZWFkZXIgdGhy
ZWFkIHJlYWRzIGRhdGEgZnJvbSB0aGUgcGh5c2ljYWwgc3RyZWFtLCBpLmUuLCB0aGUKLSAgICB3
c19zdHJlYW0gb2JqZWN0IG9mIHRoZSB1bmRlcmx5aW5nIHdlYnNvY2tldCBjb25uZWN0aW9uLiBU
aGUgcmVhZGVyCi0gICAgdGhyZWFkIGludGVycHJldHMgbXVsdGlwbGV4ZWQgZnJhbWVzIGFuZCBk
aXNwYXRjaGVzIHRoZW0gdG8gbG9naWNhbAotICAgIGNoYW5uZWxzLiBNZXRob2RzIG9mIHRoaXMg
Y2xhc3MgYXJlIG1vc3RseSBjYWxsZWQgYnkgdGhlIHJlYWRlciB0aHJlYWQuCi0KLSAgICBUaGUg
d3JpdGVyIHRocmVhZCBzZW5kcyBtdWx0aXBsZXhlZCBmcmFtZXMgd2hpY2ggYXJlIGNyZWF0ZWQg
YnkKLSAgICBsb2dpY2FsIGNoYW5uZWxzIHZpYSB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLQot
ICAgIFRoZSB3b3JrZXIgdGhyZWFkIGxhdW5jaGVkIGF0IHRoZSBzdGFydGluZyBwb2ludCBoYW5k
bGVzIHRoZQotICAgICJJbXBsaWNpdGx5IE9wZW5lZCBDb25uZWN0aW9uIi4gSWYgbXVsdGlwbGV4
aW5nIGhhbmRsZXIgcmVjZWl2ZXMKLSAgICBhbiBBZGRDaGFubmVsUmVxdWVzdCBhbmQgYWNjZXB0
cyBpdCwgdGhlIGhhbmRsZXIgd2lsbCBsYXVuY2ggYSBuZXcgd29ya2VyCi0gICAgdGhyZWFkIGFu
ZCBkaXNwYXRjaCB0aGUgcmVxdWVzdCB0byBpdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXF1ZXN0LCBkaXNwYXRjaGVyKToKLSAgICAgICAgIiIiQ29uc3RydWN0cyBhbiBp
bnN0YW5jZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhv
biByZXF1ZXN0IG9mIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotICAgICAgICAgICAgZGlzcGF0
Y2hlcjogRGlzcGF0Y2hlciBpbnN0YW5jZSAoZGlzcGF0Y2guRGlzcGF0Y2hlcikuCi0gICAgICAg
ICIiIgotCi0gICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAg
c2VsZi5kaXNwYXRjaGVyID0gZGlzcGF0Y2hlcgotICAgICAgICBzZWxmLnBoeXNpY2FsX2Nvbm5l
Y3Rpb24gPSByZXF1ZXN0LmNvbm5lY3Rpb24KLSAgICAgICAgc2VsZi5waHlzaWNhbF9zdHJlYW0g
PSByZXF1ZXN0LndzX3N0cmVhbQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFz
c19sb2dnZXIoc2VsZikKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVscyA9IHt9Ci0gICAg
ICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlv
bigpCi0gICAgICAgICMgSG9sZHMgY2xpZW50J3MgaW5pdGlhbCBxdW90YQotICAgICAgICBzZWxm
Ll9jaGFubmVsX3Nsb3RzID0gY29sbGVjdGlvbnMuZGVxdWUoKQotICAgICAgICBzZWxmLl9oYW5k
c2hha2VfYmFzZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2Vp
dmVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVhZGVyID0gTm9uZQotICAgICAgICBzZWxmLl93
cml0ZXIgPSBOb25lCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgICIiIlN0YXJ0cyB0
aGUgaGFuZGxlci4KLQotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBNdXhVbmV4cGVjdGVk
RXhjZXB0aW9uOiB3aGVuIHRoZSBoYW5kbGVyIGFscmVhZHkgc3RhcnRlZCwgb3Igd2hlbgotICAg
ICAgICAgICAgICAgIG9wZW5pbmcgaGFuZHNoYWtlIG9mIHRoZSBkZWZhdWx0IGNoYW5uZWwgZmFp
bHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIGlmIHNlbGYuX3JlYWRlciBvciBzZWxmLl93cml0
ZXI6Ci0gICAgICAgICAgICByYWlzZSBNdXhVbmV4cGVjdGVkRXhjZXB0aW9uKCdNdXhIYW5kbGVy
IGFscmVhZHkgc3RhcnRlZCcpCi0KLSAgICAgICAgc2VsZi5fcmVhZGVyID0gX1BoeXNpY2FsQ29u
bmVjdGlvblJlYWRlcihzZWxmKQotICAgICAgICBzZWxmLl93cml0ZXIgPSBfUGh5c2ljYWxDb25u
ZWN0aW9uV3JpdGVyKHNlbGYpCi0gICAgICAgIHNlbGYuX3JlYWRlci5zdGFydCgpCi0gICAgICAg
IHNlbGYuX3dyaXRlci5zdGFydCgpCi0KLSAgICAgICAgIyBDcmVhdGUgIkltcGxpY2l0bHkgT3Bl
bmVkIENvbm5lY3Rpb24iLgotICAgICAgICBsb2dpY2FsX2Nvbm5lY3Rpb24gPSBfTG9naWNhbENv
bm5lY3Rpb24oc2VsZiwgX0RFRkFVTFRfQ0hBTk5FTF9JRCkKLSAgICAgICAgaGVhZGVycyA9IGNv
cHkuY29weShzZWxmLm9yaWdpbmFsX3JlcXVlc3QuaGVhZGVyc19pbikKLSAgICAgICAgIyBBZGQg
ZXh0ZW5zaW9ucyBmb3IgbG9naWNhbCBjaGFubmVsLgotICAgICAgICBoZWFkZXJzW2NvbW1vbi5T
RUNfV0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSXSA9ICgKLSAgICAgICAgICAgIGNvbW1vbi5m
b3JtYXRfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAgICBzZWxmLm9yaWdpbmFsX3JlcXVlc3Qu
bXV4X3Byb2Nlc3Nvci5leHRlbnNpb25zKCkpKQotICAgICAgICBzZWxmLl9oYW5kc2hha2VfYmFz
ZSA9IF9IYW5kc2hha2VEZWx0YUJhc2UoaGVhZGVycykKLSAgICAgICAgbG9naWNhbF9yZXF1ZXN0
ID0gX0xvZ2ljYWxSZXF1ZXN0KAotICAgICAgICAgICAgX0RFRkFVTFRfQ0hBTk5FTF9JRCwKLSAg
ICAgICAgICAgIHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tZXRob2QsCi0gICAgICAgICAgICBzZWxm
Lm9yaWdpbmFsX3JlcXVlc3QudXJpLAotICAgICAgICAgICAgc2VsZi5vcmlnaW5hbF9yZXF1ZXN0
LnByb3RvY29sLAotICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlX2Jhc2UuY3JlYXRlX2hlYWRl
cnMoKSwKLSAgICAgICAgICAgIGxvZ2ljYWxfY29ubmVjdGlvbikKLSAgICAgICAgIyBDbGllbnQn
cyBzZW5kIHF1b3RhIGZvciB0aGUgaW1wbGljaXRseSBvcGVuZWQgY29ubmVjdGlvbiBpcyB6ZXJv
LAotICAgICAgICAjIGJ1dCB3ZSB3aWxsIHNlbmQgRmxvd0NvbnRyb2wgbGF0ZXIgc28gc2V0IHRo
ZSBpbml0aWFsIHF1b3RhIHRvCi0gICAgICAgICMgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVC4K
LSAgICAgICAgc2VsZi5fY2hhbm5lbF9zbG90cy5hcHBlbmQoX0lOSVRJQUxfUVVPVEFfRk9SX0NM
SUVOVCkKLSAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYub3JpZ2luYWxfcmVxdWVzdC5tdXhfcHJv
Y2Vzc29yLnF1b3RhKCkKLSAgICAgICAgaWYgbm90IHNlbGYuX2RvX2hhbmRzaGFrZV9mb3JfbG9n
aWNhbF9yZXF1ZXN0KAotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LCBzZW5kX3F1b3RhPXNl
bmRfcXVvdGEpOgotICAgICAgICAgICAgcmFpc2UgTXV4VW5leHBlY3RlZEV4Y2VwdGlvbigKLSAg
ICAgICAgICAgICAgICAnRmFpbGVkIGhhbmRzaGFrZSBvbiB0aGUgZGVmYXVsdCBjaGFubmVsIGlk
JykKLSAgICAgICAgc2VsZi5fYWRkX2xvZ2ljYWxfY2hhbm5lbChsb2dpY2FsX3JlcXVlc3QpCi0K
LSAgICAgICAgIyBTZW5kIEZsb3dDb250cm9sIGZvciB0aGUgaW1wbGljaXRseSBvcGVuZWQgY29u
bmVjdGlvbi4KLSAgICAgICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZmxvd19jb250cm9sKF9ERUZB
VUxUX0NIQU5ORUxfSUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICBsb2dpY2FsX3JlcXVlc3QuY29u
bmVjdGlvbi53cml0ZV9jb250cm9sX2RhdGEoZnJhbWVfZGF0YSkKLQotICAgIGRlZiBhZGRfY2hh
bm5lbF9zbG90cyhzZWxmLCBzbG90cywgc2VuZF9xdW90YSk6Ci0gICAgICAgICIiIkFkZHMgY2hh
bm5lbCBzbG90cy4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAgc2xvdHM6IG51bWJlciBv
ZiBzbG90cyB0byBiZSBhZGRlZC4KLSAgICAgICAgICAgIHNlbmRfcXVvdGE6IGluaXRpYWwgc2Vu
ZCBxdW90YSBmb3Igc2xvdHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX2NoYW5uZWxf
c2xvdHMuZXh0ZW5kKFtzZW5kX3F1b3RhXSAqIHNsb3RzKQotICAgICAgICAjIFNlbmQgTmV3Q2hh
bm5lbFNsb3QgdG8gY2xpZW50LgotICAgICAgICBmcmFtZV9kYXRhID0gX2NyZWF0ZV9uZXdfY2hh
bm5lbF9zbG90KHNsb3RzLCBzZW5kX3F1b3RhKQotICAgICAgICBzZWxmLnNlbmRfY29udHJvbF9k
YXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgd2FpdF91bnRpbF9kb25lKHNlbGYsIHRpbWVvdXQ9
Tm9uZSk6Ci0gICAgICAgICIiIldhaXRzIHVudGlsIGFsbCB3b3JrZXJzIGFyZSBkb25lLiBSZXR1
cm5zIEZhbHNlIHdoZW4gdGltZW91dCBoYXMKLSAgICAgICAgb2NjdXJyZWQuIFJldHVybnMgVHJ1
ZSBvbiBzdWNjZXNzLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICB0aW1lb3V0OiB0aW1l
b3V0IGluIHNlYy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVs
c19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIGxl
bihzZWxmLl9sb2dpY2FsX2NoYW5uZWxzKSA+IDA6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9n
Z2VyLmRlYnVnKCdXYWl0aW5nIHdvcmtlcnMoJWQpLi4uJyAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGxlbihzZWxmLl9sb2dpY2FsX2NoYW5uZWxzKSkKLSAgICAgICAgICAg
ICAgICBzZWxmLl93b3JrZXJfZG9uZV9ub3RpZnlfcmVjZWl2ZWQgPSBGYWxzZQotICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLndhaXQodGltZW91dCkKLSAg
ICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fd29ya2VyX2RvbmVfbm90aWZ5X3JlY2VpdmVkOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1dhaXRpbmcgd29ya2VyKHMp
IHRpbWVkIG91dCcpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVs
ZWFzZSgpCi0KLSAgICAgICAgIyBGbHVzaCBwZW5kaW5nIG91dGdvaW5nIGRhdGEKLSAgICAgICAg
c2VsZi5fd3JpdGVyLnN0b3AoKQotICAgICAgICBzZWxmLl93cml0ZXIuam9pbigpCi0KLSAgICAg
ICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBub3RpZnlfd3JpdGVfZGF0YV9kb25lKHNlbGYsIGNo
YW5uZWxfaWQpOgotICAgICAgICAiIiJDYWxsZWQgYnkgdGhlIHdyaXRlciB0aHJlYWQgd2hlbiBh
IHdyaXRlIG9wZXJhdGlvbiBoYXMgZG9uZS4KLQotICAgICAgICBBcmdzOgotICAgICAgICAgICAg
Y2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5uZWwgaWQuCi0gICAgICAgICIiIgotCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVp
cmUoKQotICAgICAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
OgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNb
Y2hhbm5lbF9pZF0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0
aW9uLm9uX3dyaXRlX2RhdGFfZG9uZSgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnU2VlbXMgdGhhdCBsb2dpY2FsIGNoYW5uZWwgZm9yICVk
IGhhcyBnb25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGNoYW5uZWxf
aWQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgIGRlZiBzZW5kX2NvbnRyb2xfZGF0YShzZWxmLCBk
YXRhKToKLSAgICAgICAgIiIiU2VuZHMgZGF0YSB2aWEgdGhlIGNvbnRyb2wgY2hhbm5lbC4KLQot
ICAgICAgICBBcmdzOgotICAgICAgICAgICAgZGF0YTogZGF0YSB0byBiZSBzZW50LgotICAgICAg
ICAiIiIKLQotICAgICAgICBzZWxmLl93cml0ZXIucHV0X291dGdvaW5nX2RhdGEoX091dGdvaW5n
RGF0YSgKLSAgICAgICAgICAgICAgICBjaGFubmVsX2lkPV9DT05UUk9MX0NIQU5ORUxfSUQsIGRh
dGE9ZGF0YSkpCi0KLSAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIGNoYW5uZWxfaWQsIGRhdGEpOgot
ICAgICAgICAiIiJTZW5kcyBkYXRhIHZpYSBnaXZlbiBsb2dpY2FsIGNoYW5uZWwuIFRoaXMgbWV0
aG9kIGlzIGNhbGxlZCBieQotICAgICAgICB3b3JrZXIgdGhyZWFkcy4KLQotICAgICAgICBBcmdz
OgotICAgICAgICAgICAgY2hhbm5lbF9pZDogb2JqZWN0aXZlIGNoYW5uZWwgaWQuCi0gICAgICAg
ICAgICBkYXRhOiBkYXRhIHRvIGJlIHNlbnQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYu
X3dyaXRlci5wdXRfb3V0Z29pbmdfZGF0YShfT3V0Z29pbmdEYXRhKAotICAgICAgICAgICAgICAg
IGNoYW5uZWxfaWQ9Y2hhbm5lbF9pZCwgZGF0YT1kYXRhKSkKLQotICAgIGRlZiBfc2VuZF9kcm9w
X2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCwgY29kZT1Ob25lLCBtZXNzYWdlPScnKToKLSAgICAg
ICAgZnJhbWVfZGF0YSA9IF9jcmVhdGVfZHJvcF9jaGFubmVsKGNoYW5uZWxfaWQsIGNvZGUsIG1l
c3NhZ2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdTZW5kaW5n
IGRyb3AgY2hhbm5lbCBmb3IgY2hhbm5lbCBpZCAlZCcgJSBjaGFubmVsX2lkKQotICAgICAgICBz
ZWxmLnNlbmRfY29udHJvbF9kYXRhKGZyYW1lX2RhdGEpCi0KLSAgICBkZWYgX3NlbmRfZXJyb3Jf
YWRkX2NoYW5uZWxfcmVzcG9uc2Uoc2VsZiwgY2hhbm5lbF9pZCwgc3RhdHVzPU5vbmUpOgotICAg
ICAgICBpZiBzdGF0dXMgaXMgTm9uZToKLSAgICAgICAgICAgIHN0YXR1cyA9IGNvbW1vbi5IVFRQ
X1NUQVRVU19CQURfUkVRVUVTVAotCi0gICAgICAgIGlmIHN0YXR1cyBpbiBfSFRUUF9CQURfUkVT
UE9OU0VfTUVTU0FHRVM6Ci0gICAgICAgICAgICBtZXNzYWdlID0gX0hUVFBfQkFEX1JFU1BPTlNF
X01FU1NBR0VTW3N0YXR1c10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5kZWJ1ZygnUmVzcG9uc2UgbWVzc2FnZSBmb3IgJWQgaXMgbm90IGZvdW5kJyAlIHN0YXR1cykK
LSAgICAgICAgICAgIG1lc3NhZ2UgPSAnPz8/JwotCi0gICAgICAgIHJlc3BvbnNlID0gJ0hUVFAv
MS4xICVkICVzXHJcblxyXG4nICUgKHN0YXR1cywgbWVzc2FnZSkKLSAgICAgICAgZnJhbWVfZGF0
YSA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVzcG9uc2UoY2hhbm5lbF9pZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9
cmVzcG9uc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGVuY29kaW5nPTAsIHJlamVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuc2VuZF9jb250cm9s
X2RhdGEoZnJhbWVfZGF0YSkKLQotICAgIGRlZiBfY3JlYXRlX2xvZ2ljYWxfcmVxdWVzdChzZWxm
LCBibG9jayk6Ci0gICAgICAgIGlmIGJsb2NrLmNoYW5uZWxfaWQgPT0gX0NPTlRST0xfQ0hBTk5F
TF9JRDoKLSAgICAgICAgICAgICMgVE9ETyhiYXNoaSk6IFJhaXNlIFBoeXNpY2FsQ29ubmVjdGlv
bkVycm9yIHdpdGggY29kZSAyMDA2Ci0gICAgICAgICAgICAjIGluc3RlYWQgb2YgTXV4VW5leHBl
Y3RlZEV4Y2VwdGlvbi4KLSAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ1JlY2VpdmVkIHRoZSBjb250cm9sIGNoYW5uZWwgaWQgKDApIGFz
IG9iamVjdGl2ZSBjaGFubmVsICcKLSAgICAgICAgICAgICAgICAnaWQgZm9yIEFkZENoYW5uZWwn
KQotCi0gICAgICAgIGlmIGJsb2NrLmVuY29kaW5nID4gX0hBTkRTSEFLRV9FTkNPRElOR19ERUxU
QToKLSAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAg
ICAgICAgIF9EUk9QX0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HKQotCi0gICAgICAgIG1l
dGhvZCwgcGF0aCwgdmVyc2lvbiwgaGVhZGVycyA9IF9wYXJzZV9yZXF1ZXN0X3RleHQoCi0gICAg
ICAgICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgaWYgYmxvY2suZW5jb2Rp
bmcgPT0gX0hBTkRTSEFLRV9FTkNPRElOR19ERUxUQToKLSAgICAgICAgICAgIGhlYWRlcnMgPSBz
ZWxmLl9oYW5kc2hha2VfYmFzZS5jcmVhdGVfaGVhZGVycyhoZWFkZXJzKQotCi0gICAgICAgIGNv
bm5lY3Rpb24gPSBfTG9naWNhbENvbm5lY3Rpb24oc2VsZiwgYmxvY2suY2hhbm5lbF9pZCkKLSAg
ICAgICAgcmVxdWVzdCA9IF9Mb2dpY2FsUmVxdWVzdChibG9jay5jaGFubmVsX2lkLCBtZXRob2Qs
IHBhdGgsIHZlcnNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVhZGVy
cywgY29ubmVjdGlvbikKLSAgICAgICAgcmV0dXJuIHJlcXVlc3QKLQotICAgIGRlZiBfZG9faGFu
ZHNoYWtlX2Zvcl9sb2dpY2FsX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgc2VuZF9xdW90YT0wKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVjZWl2ZV9xdW90YSA9IHNlbGYuX2NoYW5uZWxf
c2xvdHMucG9wbGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgotICAgICAgICAgICAg
cmFpc2UgTG9naWNhbENoYW5uZWxFcnJvcigKLSAgICAgICAgICAgICAgICByZXF1ZXN0LmNoYW5u
ZWxfaWQsIF9EUk9QX0NPREVfTkVXX0NIQU5ORUxfU0xPVF9WSU9MQVRJT04pCi0KLSAgICAgICAg
aGFuZHNoYWtlciA9IF9NdXhIYW5kc2hha2VyKHJlcXVlc3QsIHNlbGYuZGlzcGF0Y2hlciwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGEsIHJlY2VpdmVfcXVv
dGEpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkK
LSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5WZXJzaW9uRXhjZXB0aW9uLCBlOgotICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJy
b3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jaGFubmVs
X2lkLCBzdGF0dXM9Y29tbW9uLkhUVFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAg
cmV0dXJuIEZhbHNlCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuSGFuZHNoYWtlRXhjZXB0aW9u
LCBlOgotICAgICAgICAgICAgIyBUT0RPKGJhc2hpKTogU2hvdWxkIHdlIF9GYWlsIHRoZSBMb2dp
Y2FsIENoYW5uZWxfIHdpdGggMzAwMQotICAgICAgICAgICAgIyBpbnN0ZWFkPwotICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywgZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJy
b3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UocmVxdWVzdC5jaGFubmVsX2lkLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9ZS5zdGF0dXMpCi0g
ICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5BYm9ydGVk
QnlVc2VyRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJyVzJywg
ZSkKLSAgICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UocmVx
dWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgcmV0
dXJuIFRydWUKLQotICAgIGRlZiBfYWRkX2xvZ2ljYWxfY2hhbm5lbChzZWxmLCBsb2dpY2FsX3Jl
cXVlc3QpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxz
X2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIGxvZ2ljYWxfcmVxdWVzdC5jaGFu
bmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ljYWxfcmVxdWVzdC5jaGFubmVsX2lkKQotICAg
ICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAgICAgICAg
ICAgICAgICBfRFJPUF9DT0RFX0NIQU5ORUxfQUxSRUFEWV9FWElTVFMsCi0gICAgICAgICAgICAg
ICAgICAgICdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlCi0gICAgICAgICAgICAgICAg
ICAgIGxvZ2ljYWxfcmVxdWVzdC5jaGFubmVsX2lkKQotICAgICAgICAgICAgd29ya2VyID0gX1dv
cmtlcihzZWxmLCBsb2dpY2FsX3JlcXVlc3QpCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBf
TG9naWNhbENoYW5uZWxEYXRhKGxvZ2ljYWxfcmVxdWVzdCwgd29ya2VyKQotICAgICAgICAgICAg
c2VsZi5fbG9naWNhbF9jaGFubmVsc1tsb2dpY2FsX3JlcXVlc3QuY2hhbm5lbF9pZF0gPSBjaGFu
bmVsX2RhdGEKLSAgICAgICAgICAgIHdvcmtlci5zdGFydCgpCi0gICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQot
ICAgIGRlZiBfcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KHNlbGYsIGJsb2NrKToKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0ID0gc2VsZi5fY3JlYXRlX2xvZ2lj
YWxfcmVxdWVzdChibG9jaykKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3IsIGU6Ci0gICAgICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0ZhaWxlZCB0byBjcmVhdGUgbG9naWNhbCByZXF1ZXN0
OiAlcicgJSBlKQotICAgICAgICAgICAgc2VsZi5fc2VuZF9lcnJvcl9hZGRfY2hhbm5lbF9yZXNw
b25zZSgKLSAgICAgICAgICAgICAgICBibG9jay5jaGFubmVsX2lkLCBzdGF0dXM9Y29tbW9uLkhU
VFBfU1RBVFVTX0JBRF9SRVFVRVNUKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNl
bGYuX2RvX2hhbmRzaGFrZV9mb3JfbG9naWNhbF9yZXF1ZXN0KGxvZ2ljYWxfcmVxdWVzdCk6Ci0g
ICAgICAgICAgICBpZiBibG9jay5lbmNvZGluZyA9PSBfSEFORFNIQUtFX0VOQ09ESU5HX0lERU5U
SVRZOgotICAgICAgICAgICAgICAgICMgVXBkYXRlIGhhbmRzaGFrZSBiYXNlLgotICAgICAgICAg
ICAgICAgICMgVE9ETyhiYXNoaSk6IE1ha2Ugc3VyZSB0aGlzIGlzIHRoZSByaWdodCBwbGFjZSB0
byB1cGRhdGUKLSAgICAgICAgICAgICAgICAjIGhhbmRzaGFrZSBiYXNlLgotICAgICAgICAgICAg
ICAgIHNlbGYuX2hhbmRzaGFrZV9iYXNlID0gX0hhbmRzaGFrZURlbHRhQmFzZSgKLSAgICAgICAg
ICAgICAgICAgICAgbG9naWNhbF9yZXF1ZXN0LmhlYWRlcnNfaW4pCi0gICAgICAgICAgICBzZWxm
Ll9hZGRfbG9naWNhbF9jaGFubmVsKGxvZ2ljYWxfcmVxdWVzdCkKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHNlbGYuX3NlbmRfZXJyb3JfYWRkX2NoYW5uZWxfcmVzcG9uc2UoCi0gICAgICAg
ICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCwgc3RhdHVzPWNvbW1vbi5IVFRQX1NUQVRVU19CQURf
UkVRVUVTVCkKLQotICAgIGRlZiBfcHJvY2Vzc19mbG93X2NvbnRyb2woc2VsZiwgYmxvY2spOgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlv
bi5hY3F1aXJlKCkKLSAgICAgICAgICAgIGlmIG5vdCBibG9jay5jaGFubmVsX2lkIGluIHNlbGYu
X2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBj
aGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2Jsb2NrLmNoYW5uZWxfaWRdCi0g
ICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC53c19zdHJlYW0ucmVwbGVuaXNoX3NlbmRf
cXVvdGEoCi0gICAgICAgICAgICAgICAgYmxvY2suc2VuZF9xdW90YSkKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVhc2Uo
KQotCi0gICAgZGVmIF9wcm9jZXNzX2Ryb3BfY2hhbm5lbChzZWxmLCBibG9jayk6Ci0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdEcm9wQ2hhbm5lbCByZWNlaXZlZCBm
b3IgJWQ6IGNvZGU9JXIsIHJlYXNvbj0lcicgJQotICAgICAgICAgICAgKGJsb2NrLmNoYW5uZWxf
aWQsIGJsb2NrLmRyb3BfY29kZSwgYmxvY2suZHJvcF9tZXNzYWdlKSkKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0g
ICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0g
c2VsZi5fbG9naWNhbF9jaGFubmVsc1tibG9jay5jaGFubmVsX2lkXQotICAgICAgICAgICAgY2hh
bm5lbF9kYXRhLmRyb3BfY29kZSA9IF9EUk9QX0NPREVfQUNLTk9XTEVER0VECi0KLSAgICAgICAg
ICAgICMgQ2xvc2UgdGhlIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAgY2hhbm5lbF9kYXRh
LnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAgICAgICAgICBfTG9n
aWNhbENvbm5lY3Rpb24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgIGNoYW5uZWxfZGF0
YS5yZXF1ZXN0LndzX3N0cmVhbS5zdG9wX3NlbmRpbmcoKQotICAgICAgICBmaW5hbGx5OgotICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAg
ICBkZWYgX3Byb2Nlc3NfY29udHJvbF9ibG9ja3Moc2VsZiwgcGFyc2VyKToKLSAgICAgICAgZm9y
IGNvbnRyb2xfYmxvY2sgaW4gcGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKToKLSAgICAgICAg
ICAgIG9wY29kZSA9IGNvbnRyb2xfYmxvY2sub3Bjb2RlCi0gICAgICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ2NvbnRyb2wgYmxvY2sgcmVjZWl2ZWQsIG9wY29kZTogJWQnICUgb3Bjb2RlKQot
ICAgICAgICAgICAgaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1Q6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19hZGRfY2hhbm5lbF9yZXF1ZXN0KGNvbnRy
b2xfYmxvY2spCi0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9BRERfQ0hB
Tk5FTF9SRVNQT05TRToKLSAgICAgICAgICAgICAgICByYWlzZSBQaHlzaWNhbENvbm5lY3Rpb25F
cnJvcigKLSAgICAgICAgICAgICAgICAgICAgX0RST1BfQ09ERV9JTlZBTElEX01VWF9DT05UUk9M
X0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAnUmVjZWl2ZWQgQWRkQ2hhbm5lbFJlc3BvbnNl
JykKLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTDoK
LSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2Zsb3dfY29udHJvbChjb250cm9sX2Jsb2Nr
KQotICAgICAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfRFJPUF9DSEFOTkVMOgot
ICAgICAgICAgICAgICAgIHNlbGYuX3Byb2Nlc3NfZHJvcF9jaGFubmVsKGNvbnRyb2xfYmxvY2sp
Ci0gICAgICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9ORVdfQ0hBTk5FTF9TTE9U
OgotICAgICAgICAgICAgICAgIHJhaXNlIFBoeXNpY2FsQ29ubmVjdGlvbkVycm9yKAotICAgICAg
ICAgICAgICAgICAgICBfRFJPUF9DT0RFX0lOVkFMSURfTVVYX0NPTlRST0xfQkxPQ0ssCi0gICAg
ICAgICAgICAgICAgICAgICdSZWNlaXZlZCBOZXdDaGFubmVsU2xvdCcpCi0gICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVuZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAg
ICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZSAlcicgJSBvcGNvZGUpCi0KLSAgICBk
ZWYgX3Byb2Nlc3NfbG9naWNhbF9mcmFtZShzZWxmLCBjaGFubmVsX2lkLCBwYXJzZXIpOgotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlY2VpdmVkIGEgZnJhbWUuIGNoYW5uZWwgaWQ9JWQn
ICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9j
aGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9p
ZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICMgV2UgbXVzdCBp
Z25vcmUgdGhlIG1lc3NhZ2UgZm9yIGFuIGluYWN0aXZlIGNoYW5uZWwuCi0gICAgICAgICAgICAg
ICAgcmV0dXJuCi0gICAgICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzW2NoYW5uZWxfaWRdCi0gICAgICAgICAgICBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsIG9wY29k
ZSwgcGF5bG9hZCA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAgICAgICAgICAgIGNvbnN1
bWluZ19ieXRlID0gbGVuKHBheWxvYWQpCi0gICAgICAgICAgICBpZiBvcGNvZGUgIT0gY29tbW9u
Lk9QQ09ERV9DT05USU5VQVRJT046Ci0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUgKz0g
MQotICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfZGF0YS5yZXF1ZXN0LndzX3N0cmVhbS5jb25z
dW1lX3JlY2VpdmVfcXVvdGEoCi0gICAgICAgICAgICAgICAgY29uc3VtaW5nX2J5dGUpOgotICAg
ICAgICAgICAgICAgICMgVGhlIGNsaWVudCB2aW9sYXRlcyBxdW90YS4gQ2xvc2UgbG9naWNhbCBj
aGFubmVsLgotICAgICAgICAgICAgICAgIHJhaXNlIExvZ2ljYWxDaGFubmVsRXJyb3IoCi0gICAg
ICAgICAgICAgICAgICAgIGNoYW5uZWxfaWQsIF9EUk9QX0NPREVfU0VORF9RVU9UQV9WSU9MQVRJ
T04pCi0gICAgICAgICAgICBoZWFkZXIgPSBjcmVhdGVfaGVhZGVyKG9wY29kZSwgbGVuKHBheWxv
YWQpLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hc2s9RmFsc2UpCi0gICAgICAgICAgICBmcmFtZV9kYXRhID0gaGVhZGVyICsgcGF5
bG9hZAotICAgICAgICAgICAgY2hhbm5lbF9kYXRhLnJlcXVlc3QuY29ubmVjdGlvbi5hcHBlbmRf
ZnJhbWVfZGF0YShmcmFtZV9kYXRhKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICBkZWYgZGlzcGF0
Y2hfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgIiIiRGlzcGF0Y2hlcyBtZXNzYWdl
LiBUaGUgcmVhZGVyIHRocmVhZCBjYWxscyB0aGlzIG1ldGhvZC4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgbWVzc2FnZTogYSBtZXNzYWdlIHRoYXQgY29udGFpbnMgZW5jYXBzdWxhdGVk
IGZyYW1lLgotICAgICAgICBSYWlzZXM6Ci0gICAgICAgICAgICBQaHlzaWNhbENvbm5lY3Rpb25F
cnJvcjogaWYgdGhlIG1lc3NhZ2UgY29udGFpbnMgcGh5c2ljYWwKLSAgICAgICAgICAgICAgICBj
b25uZWN0aW9uIGxldmVsIGVycm9ycy4KLSAgICAgICAgICAgIExvZ2ljYWxDaGFubmVsRXJyb3I6
IGlmIHRoZSBtZXNzYWdlIGNvbnRhaW5zIGxvZ2ljYWwgY2hhbm5lbAotICAgICAgICAgICAgICAg
IGxldmVsIGVycm9ycy4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcGFyc2VyID0gX011eEZyYW1l
UGF5bG9hZFBhcnNlcihtZXNzYWdlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjaGFubmVs
X2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9y
LCBlOgotICAgICAgICAgICAgcmFpc2UgUGh5c2ljYWxDb25uZWN0aW9uRXJyb3IoX0RST1BfQ09E
RV9DSEFOTkVMX0lEX1RSVU5DQVRFRCkKLSAgICAgICAgaWYgY2hhbm5lbF9pZCA9PSBfQ09OVFJP
TF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19jb250cm9sX2Jsb2Nrcyhw
YXJzZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9wcm9jZXNzX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZCwgcGFyc2VyKQotCi0gICAgZGVmIG5vdGlmeV93b3JrZXJfZG9uZShz
ZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgIiIiQ2FsbGVkIHdoZW4gYSB3b3JrZXIgaGFzIGZp
bmlzaGVkLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVs
IGlkIGNvcnJlc3BvbmRlZCB3aXRoIHRoZSB3b3JrZXIuCi0gICAgICAgICIiIgotCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnV29ya2VyIGZvciBjaGFubmVsIGlkICVkIHRlcm1pbmF0ZWQn
ICUgY2hhbm5lbF9pZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9j
aGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBpZiBub3QgY2hhbm5lbF9p
ZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgIHJhaXNlIE11eFVu
ZXhwZWN0ZWRFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgICAgICdDaGFubmVsIGlkICVkIG5v
dCBmb3VuZCcgJSBjaGFubmVsX2lkKQotICAgICAgICAgICAgY2hhbm5lbF9kYXRhID0gc2VsZi5f
bG9naWNhbF9jaGFubmVscy5wb3AoY2hhbm5lbF9pZCkKLSAgICAgICAgZmluYWxseToKLSAgICAg
ICAgICAgIHNlbGYuX3dvcmtlcl9kb25lX25vdGlmeV9yZWNlaXZlZCA9IFRydWUKLSAgICAgICAg
ICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLm5vdGlmeSgpCi0gICAgICAgICAg
ICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBp
ZiBub3QgY2hhbm5lbF9kYXRhLnJlcXVlc3Quc2VydmVyX3Rlcm1pbmF0ZWQ6Ci0gICAgICAgICAg
ICBzZWxmLl9zZW5kX2Ryb3BfY2hhbm5lbCgKLSAgICAgICAgICAgICAgICBjaGFubmVsX2lkLCBj
b2RlPWNoYW5uZWxfZGF0YS5kcm9wX2NvZGUsCi0gICAgICAgICAgICAgICAgbWVzc2FnZT1jaGFu
bmVsX2RhdGEuZHJvcF9tZXNzYWdlKQotCi0gICAgZGVmIG5vdGlmeV9yZWFkZXJfZG9uZShzZWxm
KToKLSAgICAgICAgIiIiVGhpcyBtZXRob2QgaXMgY2FsbGVkIGJ5IHRoZSByZWFkZXIgdGhyZWFk
IHdoZW4gdGhlIHJlYWRlciBoYXMKLSAgICAgICAgZmluaXNoZWQuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygKLSAgICAgICAgICAgICdUZXJtaWF0aW5nIGFsbCBs
b2dpY2FsIGNvbm5lY3Rpb25zIHdhaXRpbmcgZm9yIGluY29taW5nIGRhdGEgJwotICAgICAgICAg
ICAgJy4uLicpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLmFjcXVp
cmUoKQotICAgICAgICBmb3IgY2hhbm5lbF9kYXRhIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHMu
dmFsdWVzKCk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY2hhbm5lbF9kYXRh
LnJlcXVlc3QuY29ubmVjdGlvbi5zZXRfcmVhZF9zdGF0ZSgKLSAgICAgICAgICAgICAgICAgICAg
X0xvZ2ljYWxDb25uZWN0aW9uLlNUQVRFX1RFUk1JTkFURUQpCi0gICAgICAgICAgICBleGNlcHQg
RXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zyh0cmFjZWJhY2su
Zm9ybWF0X2V4YygpKQotICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5y
ZWxlYXNlKCkKLQotICAgIGRlZiBub3RpZnlfd3JpdGVyX2RvbmUoc2VsZik6Ci0gICAgICAgICIi
IlRoaXMgbWV0aG9kIGlzIGNhbGxlZCBieSB0aGUgd3JpdGVyIHRocmVhZCB3aGVuIHRoZSB3cml0
ZXIgaGFzCi0gICAgICAgIGZpbmlzaGVkLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9s
b2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnVGVybWlhdGluZyBhbGwgbG9naWNhbCBjb25uZWN0
aW9ucyB3YWl0aW5nIGZvciB3cml0ZSAnCi0gICAgICAgICAgICAnY29tcGxldGlvbiAuLi4nKQot
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAg
ICAgZm9yIGNoYW5uZWxfZGF0YSBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzLnZhbHVlcygpOgot
ICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5yZXF1ZXN0LmNv
bm5lY3Rpb24ub25fd3JpdGVyX2RvbmUoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcodHJhY2ViYWNrLmZvcm1hdF9leGMo
KSkKLSAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0K
LSAgICBkZWYgZmFpbF9waHlzaWNhbF9jb25uZWN0aW9uKHNlbGYsIGNvZGUsIG1lc3NhZ2UpOgot
ICAgICAgICAiIiJGYWlsIHRoZSBwaHlzaWNhbCBjb25uZWN0aW9uLgotCi0gICAgICAgIEFyZ3M6
Ci0gICAgICAgICAgICBjb2RlOiBkcm9wIHJlYXNvbiBjb2RlLgotICAgICAgICAgICAgbWVzc2Fn
ZTogZHJvcCBtZXNzYWdlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVi
dWcoJ0ZhaWxpbmcgdGhlIHBoeXNpY2FsIGNvbm5lY3Rpb24uLi4nKQotICAgICAgICBzZWxmLl9z
ZW5kX2Ryb3BfY2hhbm5lbChfQ09OVFJPTF9DSEFOTkVMX0lELCBjb2RlLCBtZXNzYWdlKQotICAg
ICAgICBzZWxmLl93cml0ZXIuc3RvcChjb21tb24uU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VS
Uk9SKQotCi0gICAgZGVmIGZhaWxfbG9naWNhbF9jaGFubmVsKHNlbGYsIGNoYW5uZWxfaWQsIGNv
ZGUsIG1lc3NhZ2UpOgotICAgICAgICAiIiJGYWlsIGEgbG9naWNhbCBjaGFubmVsLgotCi0gICAg
ICAgIEFyZ3M6Ci0gICAgICAgICAgICBjaGFubmVsX2lkOiBjaGFubmVsIGlkLgotICAgICAgICAg
ICAgY29kZTogZHJvcCByZWFzb24gY29kZS4KLSAgICAgICAgICAgIG1lc3NhZ2U6IGRyb3AgbWVz
c2FnZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdGYWlsaW5n
IGxvZ2ljYWwgY2hhbm5lbCAlZC4uLicgJSBjaGFubmVsX2lkKQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAg
ICAgICAgIGlmIGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoKLSAgICAgICAg
ICAgICAgICBjaGFubmVsX2RhdGEgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRd
Ci0gICAgICAgICAgICAgICAgIyBDbG9zZSB0aGUgbG9naWNhbCBjaGFubmVsLiBub3RpZnlfd29y
a2VyX2RvbmUoKSB3aWxsIGJlCi0gICAgICAgICAgICAgICAgIyBjYWxsZWQgbGF0ZXIgYW5kIGl0
IHdpbGwgc2VuZCBEcm9wQ2hhbm5lbC4KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEuZHJv
cF9jb2RlID0gY29kZQotICAgICAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5kcm9wX21lc3NhZ2Ug
PSBtZXNzYWdlCi0KLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVzdC5jb25uZWN0
aW9uLnNldF9yZWFkX3N0YXRlKAotICAgICAgICAgICAgICAgICAgICBfTG9naWNhbENvbm5lY3Rp
b24uU1RBVEVfVEVSTUlOQVRFRCkKLSAgICAgICAgICAgICAgICBjaGFubmVsX2RhdGEucmVxdWVz
dC53c19zdHJlYW0uc3RvcF9zZW5kaW5nKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fc2VuZF9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZCwgY29kZSwgbWVzc2FnZSkK
LSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLnJlbGVhc2UoKQotCi0KLWRlZiB1c2VfbXV4KHJlcXVlc3QpOgotICAgIHJldHVybiBo
YXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykgYW5kICgKLSAgICAgICAgcmVxdWVzdC5t
dXhfcHJvY2Vzc29yLmlzX2FjdGl2ZSgpKQotCi0KLWRlZiBzdGFydChyZXF1ZXN0LCBkaXNwYXRj
aGVyKToKLSAgICBtdXhfaGFuZGxlciA9IF9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIp
Ci0gICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxf
c2xvdHMoX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgIG11eF9o
YW5kbGVyLndhaXRfdW50aWxfZG9uZSgpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21v
ZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAyNGMyOTllYWYzZGY5ZmMzZTE3MzhiY2ZlNzA3NzMxOWY4NzZlODk0Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tl
dC9zdGFuZGFsb25lLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTE5MyArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlN0YW5kYWxvbmUgV2Vi
U29ja2V0IHNlcnZlci4KLQotVXNlIHRoaXMgZmlsZSB0byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0
aG91dCBBcGFjaGUgSFRUUCBTZXJ2ZXIuCi0KLQotQkFTSUMgVVNBR0UKLT09PT09PT09PT09Ci0K
LUdvIHRvIHRoZSBzcmMgZGlyZWN0b3J5IGFuZCBydW4KLQotICAkIHB5dGhvbiBtb2RfcHl3ZWJz
b2NrZXQvc3RhbmRhbG9uZS5weSBbLXAgPHdzX3BvcnQ+XQotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbLXcgPHdlYnNvY2tfaGFuZGxlcnM+XQotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQotCi08d3Nf
cG9ydD4gaXMgdGhlIHBvcnQgbnVtYmVyIHRvIHVzZSBmb3Igd3M6Ly8gY29ubmVjdGlvbi4KLQot
PGRvY3VtZW50X3Jvb3Q+IGlzIHRoZSBwYXRoIHRvIHRoZSByb290IGRpcmVjdG9yeSBvZiBIVE1M
IGZpbGVzLgotCi08d2Vic29ja19oYW5kbGVycz4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGly
ZWN0b3J5IG9mIFdlYlNvY2tldCBoYW5kbGVycy4KLUlmIG5vdCBzcGVjaWZpZWQsIDxkb2N1bWVu
dF9yb290PiB3aWxsIGJlIHVzZWQuIFNlZSBfX2luaXRfXy5weSAob3IKLXJ1biAkIHB5ZG9jIG1v
ZF9weXdlYnNvY2tldCkgZm9yIGhvdyB0byB3cml0ZSBXZWJTb2NrZXQgaGFuZGxlcnMuCi0KLUZv
ciBtb3JlIGRldGFpbCBhbmQgb3RoZXIgb3B0aW9ucywgcnVuCi0KLSAgJCBweXRob24gbW9kX3B5
d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLS1oZWxwCi0KLW9yIHNlZSBfYnVpbGRfb3B0aW9uX3Bh
cnNlciBtZXRob2QgYmVsb3cuCi0KLUZvciB0cm91YmxlIHNob290aW5nLCBhZGRpbmcgIi0tbG9n
X2xldmVsIGRlYnVnIiBtaWdodCBoZWxwIHlvdS4KLQotCi1UUlkgREVNTwotPT09PT09PT0KLQot
R28gdG8gdGhlIHNyYyBkaXJlY3RvcnkgYW5kIHJ1biBzdGFuZGFsb25lLnB5IHdpdGggLWQgb3B0
aW9uIHRvIHNldCB0aGUKLWRvY3VtZW50IHJvb3QgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5n
IGV4YW1wbGUgSFRNTHMgYW5kIGhhbmRsZXJzIGxpa2UgdGhpczoKLQotICAkIGNkIHNyYwotICAk
IFBZVEhPTlBBVEg9LiBweXRob24gbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgLWQgZXhh
bXBsZQotCi10byBsYXVuY2ggcHl3ZWJzb2NrZXQgd2l0aCB0aGUgc2FtcGxlIGhhbmRsZXIgYW5k
IGh0bWwgb24gcG9ydCA4MC4gT3BlbgotaHR0cDovL2xvY2FsaG9zdC9jb25zb2xlLmh0bWwsIGNs
aWNrIHRoZSBjb25uZWN0IGJ1dHRvbiwgdHlwZSBzb21ldGhpbmcgaW50bwotdGhlIHRleHQgYm94
IG5leHQgdG8gdGhlIHNlbmQgYnV0dG9uIGFuZCBjbGljayB0aGUgc2VuZCBidXR0b24uIElmIGV2
ZXJ5dGhpbmcKLWlzIHdvcmtpbmcsIHlvdSdsbCBzZWUgdGhlIG1lc3NhZ2UgeW91IHR5cGVkIGVj
aG9lZCBieSB0aGUgc2VydmVyLgotCi0KLVVTSU5HIFRMUwotPT09PT09PT09Ci0KLVRvIHJ1biB0
aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgd2l0aCBUTFMgc3VwcG9ydCwgcnVuIGl0IHdpdGggLXQsIC1r
LCBhbmQgLWMKLW9wdGlvbnMuIFdoZW4gVExTIGlzIGVuYWJsZWQsIHRoZSBzdGFuZGFsb25lIHNl
cnZlciBhY2NlcHRzIG9ubHkgVExTIGNvbm5lY3Rpb24uCi0KLU5vdGUgdGhhdCB3aGVuIHNzbCBt
b2R1bGUgaXMgdXNlZCBhbmQgdGhlIGtleS9jZXJ0IGxvY2F0aW9uIGlzIGluY29ycmVjdCwKLVRM
UyBjb25uZWN0aW9uIHNpbGVudGx5IGZhaWxzIHdoaWxlIHB5T3BlblNTTCBmYWlscyBvbiBzdGFy
dHVwLgotCi1FeGFtcGxlOgotCi0gICQgUFlUSE9OUEFUSD0uIHB5dGhvbiBtb2RfcHl3ZWJzb2Nr
ZXQvc3RhbmRhbG9uZS5weSBcCi0gICAgICAgIC1kIGV4YW1wbGUgXAotICAgICAgICAtcCAxMDQ0
MyBcCi0gICAgICAgIC10IFwKLSAgICAgICAgLWMgLi4vdGVzdC9jZXJ0L2NlcnQucGVtIFwKLSAg
ICAgICAgLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5n
IGEgcmVsYXRpdmUgcGF0aCB0byAtYyBhbmQgLWsgb3B0aW9uLCBpdCB3aWxsIGJlIHJlc29sdmVk
Ci11c2luZyB0aGUgZG9jdW1lbnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotVVNJ
TkcgQ0xJRU5UIEFVVEhFTlRJQ0FUSU9OCi09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
VG8gcnVuIHRoZSBzdGFuZGFsb25lIHNlcnZlciB3aXRoIFRMUyBjbGllbnQgYXV0aGVudGljYXRp
b24gc3VwcG9ydCwgcnVuIGl0IHdpdGgKLS0tdGxzLWNsaWVudC1hdXRoIGFuZCAtLXRscy1jbGll
bnQtY2Egb3B0aW9ucyBpbiBhZGRpdGlvbiB0byBvbmVzIHJlcXVpcmVkIGZvcgotVExTIHN1cHBv
cnQuCi0KLUV4YW1wbGU6Ci0KLSAgJCBQWVRIT05QQVRIPS4gcHl0aG9uIG1vZF9weXdlYnNvY2tl
dC9zdGFuZGFsb25lLnB5IC1kIGV4YW1wbGUgLXAgMTA0NDMgLXQgXAotICAgICAgICAtYyAuLi90
ZXN0L2NlcnQvY2VydC5wZW0gLWsgLi4vdGVzdC9jZXJ0L2tleS5wZW0gXAotICAgICAgICAtLXRs
cy1jbGllbnQtYXV0aCBcCi0gICAgICAgIC0tdGxzLWNsaWVudC1jYT0uLi90ZXN0L2NlcnQvY2Fj
ZXJ0LnBlbQotCi1Ob3RlIHRoYXQgd2hlbiBwYXNzaW5nIGEgcmVsYXRpdmUgcGF0aCB0byAtLXRs
cy1jbGllbnQtY2Egb3B0aW9uLCBpdCB3aWxsIGJlCi1yZXNvbHZlZCB1c2luZyB0aGUgZG9jdW1l
bnQgcm9vdCBkaXJlY3RvcnkgYXMgdGhlIGJhc2UuCi0KLQotQ09ORklHVVJBVElPTiBGSUxFCi09
PT09PT09PT09PT09PT09PT0KLQotWW91IGNhbiBhbHNvIHdyaXRlIGEgY29uZmlndXJhdGlvbiBm
aWxlIGFuZCB1c2UgaXQgYnkgc3BlY2lmeWluZyB0aGUgcGF0aCB0bwotdGhlIGNvbmZpZ3VyYXRp
b24gZmlsZSBieSAtLWNvbmZpZyBvcHRpb24uIFBsZWFzZSB3cml0ZSBhIGNvbmZpZ3VyYXRpb24g
ZmlsZQotZm9sbG93aW5nIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSBQeXRob24gQ29uZmlnUGFy
c2VyIGxpYnJhcnkuIE5hbWUgb2YgZWFjaAotZW50cnkgbXVzdCBiZSB0aGUgbG9uZyB2ZXJzaW9u
IGFyZ3VtZW50IG5hbWUuIEUuZy4gdG8gc2V0IGxvZyBsZXZlbCB0byBkZWJ1ZywKLWFkZCB0aGUg
Zm9sbG93aW5nIGxpbmU6Ci0KLWxvZ19sZXZlbD1kZWJ1ZwotCi1Gb3Igb3B0aW9ucyB3aGljaCBk
b2Vzbid0IHRha2UgdmFsdWUsIHBsZWFzZSBhZGQgc29tZSBmYWtlIHZhbHVlLiBFLmcuIGZvcgot
LS10bHMgb3B0aW9uLCBhZGQgdGhlIGZvbGxvd2luZyBsaW5lOgotCi10bHM9VHJ1ZQotCi1Ob3Rl
IHRoYXQgdGxzIHdpbGwgYmUgZW5hYmxlZCBldmVuIGlmIHlvdSB3cml0ZSB0bHM9RmFsc2UgYXMg
dGhlIHZhbHVlIHBhcnQgaXMKLWZha2UuCi0KLVdoZW4gYm90aCBhIGNvbW1hbmQgbGluZSBhcmd1
bWVudCBhbmQgYSBjb25maWd1cmF0aW9uIGZpbGUgZW50cnkgYXJlIHNldCBmb3IKLXRoZSBzYW1l
IGNvbmZpZ3VyYXRpb24gaXRlbSwgdGhlIGNvbW1hbmQgbGluZSB2YWx1ZSB3aWxsIG92ZXJyaWRl
IG9uZSBpbiB0aGUKLWNvbmZpZ3VyYXRpb24gZmlsZS4KLQotCi1USFJFQURJTkcKLT09PT09PT09
PQotCi1UaGlzIHNlcnZlciBpcyBkZXJpdmVkIGZyb20gU29ja2V0U2VydmVyLlRocmVhZGluZ01p
eEluLiBIZW5jZSBhIHRocmVhZCBpcwotdXNlZCBmb3IgZWFjaCByZXF1ZXN0LgotCi0KLVNFQ1VS
SVRZIFdBUk5JTkcKLT09PT09PT09PT09PT09PT0KLQotVGhpcyB1c2VzIENHSUhUVFBTZXJ2ZXIg
YW5kIENHSUhUVFBTZXJ2ZXIgaXMgbm90IHNlY3VyZS4KLUl0IG1heSBleGVjdXRlIGFyYml0cmFy
eSBQeXRob24gY29kZSBvciBleHRlcm5hbCBwcm9ncmFtcy4gSXQgc2hvdWxkIG5vdCBiZQotdXNl
ZCBvdXRzaWRlIGEgZmlyZXdhbGwuCi0iIiIKLQotaW1wb3J0IEJhc2VIVFRQU2VydmVyCi1pbXBv
cnQgQ0dJSFRUUFNlcnZlcgotaW1wb3J0IFNpbXBsZUhUVFBTZXJ2ZXIKLWltcG9ydCBTb2NrZXRT
ZXJ2ZXIKLWltcG9ydCBDb25maWdQYXJzZXIKLWltcG9ydCBiYXNlNjQKLWltcG9ydCBodHRwbGli
Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IGxvZ2dpbmcuaGFuZGxlcnMKLWltcG9ydCBvcHRwYXJz
ZQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWltcG9ydCBzZWxlY3QKLWltcG9ydCBzb2NrZXQKLWlt
cG9ydCBzeXMKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB0aW1lCi0KLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBkaXNwYXRj
aAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGhhbmRzaGFrZQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQgaW1wb3J0IGh0dHBfaGVhZGVyX3V0aWwKLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBtZW1vcml6aW5nZmlsZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLWZyb20g
bW9kX3B5d2Vic29ja2V0Lnhocl9iZW5jaG1hcmtfaGFuZGxlciBpbXBvcnQgWEhSQmVuY2htYXJr
SGFuZGxlcgotCi0KLV9ERUZBVUxUX0xPR19NQVhfQllURVMgPSAxMDI0ICogMjU2Ci1fREVGQVVM
VF9MT0dfQkFDS1VQX0NPVU5UID0gNQotCi1fREVGQVVMVF9SRVFVRVNUX1FVRVVFX1NJWkUgPSAx
MjgKLQotIyAxMDI0IGlzIHByYWN0aWNhbGx5IGxhcmdlIGVub3VnaCB0byBjb250YWluIFdlYlNv
Y2tldCBoYW5kc2hha2UgbGluZXMuCi1fTUFYX01FTU9SSVpFRF9MSU5FUyA9IDEwMjQKLQotIyBD
b25zdGFudHMgZm9yIHRoZSAtLXRsc19tb2R1bGUgZmxhZy4KLV9UTFNfQllfU1RBTkRBUkRfTU9E
VUxFID0gJ3NzbCcKLV9UTFNfQllfUFlPUEVOU1NMID0gJ3B5b3BlbnNzbCcKLQotCi1jbGFzcyBf
U3RhbmRhbG9uZUNvbm5lY3Rpb24ob2JqZWN0KToKLSAgICAiIiJNaW1pYyBtb2RfcHl0aG9uIG1w
X2Nvbm4uIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyKToKLSAg
ICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAg
ICAgICByZXF1ZXN0X2hhbmRsZXI6IEEgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgaW5zdGFuY2Uu
Ci0gICAgICAgICIiIgotCi0gICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlciA9IHJlcXVlc3Rf
aGFuZGxlcgotCi0gICAgZGVmIGdldF9sb2NhbF9hZGRyKHNlbGYpOgotICAgICAgICAiIiJHZXR0
ZXIgdG8gbWltaWMgbXBfY29ubi5sb2NhbF9hZGRyLiIiIgotCi0gICAgICAgIHJldHVybiAoc2Vs
Zi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfbmFtZSwKLSAgICAgICAgICAgICAgICBz
ZWxmLl9yZXF1ZXN0X2hhbmRsZXIuc2VydmVyLnNlcnZlcl9wb3J0KQotICAgIGxvY2FsX2FkZHIg
PSBwcm9wZXJ0eShnZXRfbG9jYWxfYWRkcikKLQotICAgIGRlZiBnZXRfcmVtb3RlX2FkZHIoc2Vs
Zik6Ci0gICAgICAgICIiIkdldHRlciB0byBtaW1pYyBtcF9jb25uLnJlbW90ZV9hZGRyLgotCi0g
ICAgICAgIFNldHRpbmcgdGhlIHByb3BlcnR5IGluIF9faW5pdF9fIHdvbid0IHdvcmsgYmVjYXVz
ZSB0aGUgcmVxdWVzdAotICAgICAgICBoYW5kbGVyIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQgdGhl
cmUuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5jbGllbnRfYWRk
cmVzcwotICAgIHJlbW90ZV9hZGRyID0gcHJvcGVydHkoZ2V0X3JlbW90ZV9hZGRyKQotCi0gICAg
ZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJNaW1pYyBtcF9jb25uLndyaXRlKCku
IiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0ZShk
YXRhKQotCi0gICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKLSAgICAgICAgIiIiTWltaWMgbXBf
Y29ubi5yZWFkKCkuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci5y
ZmlsZS5yZWFkKGxlbmd0aCkKLQotICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgot
ICAgICAgICAiIiJHZXQgbWVtb3JpemVkIGxpbmVzLiIiIgotCi0gICAgICAgIHJldHVybiBzZWxm
Ll9yZXF1ZXN0X2hhbmRsZXIucmZpbGUuZ2V0X21lbW9yaXplZF9saW5lcygpCi0KLQotY2xhc3Mg
X1N0YW5kYWxvbmVSZXF1ZXN0KG9iamVjdCk6Ci0gICAgIiIiTWltaWMgbW9kX3B5dGhvbiByZXF1
ZXN0LiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3RfaGFuZGxlciwgdXNlX3Rs
cyk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KLQotICAgICAgICBBcmdzOgot
ICAgICAgICAgICAgcmVxdWVzdF9oYW5kbGVyOiBBIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyIGlu
c3RhbmNlLgotICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9j
bGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1
ZXN0X2hhbmRsZXIKLSAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gX1N0YW5kYWxvbmVDb25uZWN0
aW9uKHJlcXVlc3RfaGFuZGxlcikKLSAgICAgICAgc2VsZi5fdXNlX3RscyA9IHVzZV90bHMKLSAg
ICAgICAgc2VsZi5oZWFkZXJzX2luID0gcmVxdWVzdF9oYW5kbGVyLmhlYWRlcnMKLQotICAgIGRl
ZiBnZXRfdXJpKHNlbGYpOgotICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVxdWVzdC51cmku
Ci0KLSAgICAgICAgVGhpcyBtZXRob2QgcmV0dXJucyB0aGUgcmF3IGRhdGEgYXQgdGhlIFJlcXVl
c3QtVVJJIHBhcnQgb2YgdGhlCi0gICAgICAgIFJlcXVlc3QtTGluZSwgd2hpbGUgdGhlIHVyaSBt
ZXRob2Qgb24gdGhlIHJlcXVlc3Qgb2JqZWN0IG9mIG1vZF9weXRob24KLSAgICAgICAgcmV0dXJu
cyB0aGUgcGF0aCBwb3J0aW9uIGFmdGVyIHBhcnNpbmcgdGhlIHJhdyBkYXRhLiBUaGlzIGJlaGF2
aW9yIGlzCi0gICAgICAgIGtlcHQgZm9yIGNvbXBhdGliaWxpdHkuCi0gICAgICAgICIiIgotCi0g
ICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAotICAgIHVyaSA9IHByb3Bl
cnR5KGdldF91cmkpCi0KLSAgICBkZWYgZ2V0X3VucGFyc2VkX3VyaShzZWxmKToKLSAgICAgICAg
IiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QudW5wYXJzZWRfdXJpLiIiIgotCi0gICAgICAgIHJl
dHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAotICAgIHVucGFyc2VkX3VyaSA9IHByb3Bl
cnR5KGdldF91bnBhcnNlZF91cmkpCi0KLSAgICBkZWYgZ2V0X21ldGhvZChzZWxmKToKLSAgICAg
ICAgIiIiR2V0dGVyIHRvIG1pbWljIHJlcXVlc3QubWV0aG9kLiIiIgotCi0gICAgICAgIHJldHVy
biBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuY29tbWFuZAotICAgIG1ldGhvZCA9IHByb3BlcnR5KGdl
dF9tZXRob2QpCi0KLSAgICBkZWYgZ2V0X3Byb3RvY29sKHNlbGYpOgotICAgICAgICAiIiJHZXR0
ZXIgdG8gbWltaWMgcmVxdWVzdC5wcm90b2NvbC4iIiIKLQotICAgICAgICByZXR1cm4gc2VsZi5f
cmVxdWVzdF9oYW5kbGVyLnJlcXVlc3RfdmVyc2lvbgotICAgIHByb3RvY29sID0gcHJvcGVydHko
Z2V0X3Byb3RvY29sKQotCi0gICAgZGVmIGlzX2h0dHBzKHNlbGYpOgotICAgICAgICAiIiJNaW1p
YyByZXF1ZXN0LmlzX2h0dHBzKCkuIiIiCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3VzZV90bHMK
LQotCi1kZWYgX2ltcG9ydF9zc2woKToKLSAgICBnbG9iYWwgc3NsCi0gICAgdHJ5OgotICAgICAg
ICBpbXBvcnQgc3NsCi0gICAgICAgIHJldHVybiBUcnVlCi0gICAgZXhjZXB0IEltcG9ydEVycm9y
OgotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgX2ltcG9ydF9weW9wZW5zc2woKToKLSAg
ICBnbG9iYWwgT3BlblNTTAotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IE9wZW5TU0wuU1NMCi0g
ICAgICAgIHJldHVybiBUcnVlCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICByZXR1
cm4gRmFsc2UKLQotCi1jbGFzcyBfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24ob2JqZWN0KToKLSAg
ICAiIiJBIHdyYXBwZXIgY2xhc3MgZm9yIE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24gdG8KLSAgICAt
IHByb3ZpZGUgbWFrZWZpbGUgbWV0aG9kIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGNs
YXNzCi0gICAgLSB0d2VhayBzaHV0ZG93biBtZXRob2Qgc2luY2UgT3BlblNTTC5TU0wuQ29ubmVj
dGlvbi5zaHV0ZG93biBkb2Vzbid0Ci0gICAgICBhY2NlcHQgdGhlICJob3ciIGFyZ3VtZW50Lgot
ICAgIC0gY29udmVydCBTeXNDYWxsRXJyb3IgZXhjZXB0aW9ucyB0aGF0IGl0cyByZWN2IG1ldGhv
ZCBtYXkgcmFpc2UgaW50byBhCi0gICAgICByZXR1cm4gdmFsdWUgb2YgJycsIG1lYW5pbmcgRU9G
LiBXZSBjYW5ub3Qgb3ZlcndyaXRlIHRoZSByZWN2IG1ldGhvZCBvbgotICAgICAgc2VsZi5fY29u
bmVjdGlvbiBzaW5jZSBpdCdzIGltbXV0YWJsZS4KLSAgICAiIiIKLQotICAgIF9PVkVSUklEREVO
X0FUVFJJQlVURVMgPSBbJ19jb25uZWN0aW9uJywgJ21ha2VmaWxlJywgJ3NodXRkb3duJywgJ3Jl
Y3YnXQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbm5lY3Rpb24pOgotICAgICAgICBzZWxm
Ll9jb25uZWN0aW9uID0gY29ubmVjdGlvbgotCi0gICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oc2Vs
ZiwgbmFtZSk6Ci0gICAgICAgIGlmIG5hbWUgaW4gX1N0YW5kYWxvbmVTU0xDb25uZWN0aW9uLl9P
VkVSUklEREVOX0FUVFJJQlVURVM6Ci0gICAgICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0
cmlidXRlX18oc2VsZiwgbmFtZSkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2Nvbm5lY3Rpb24uX19n
ZXRhdHRyaWJ1dGVfXyhuYW1lKQotCi0gICAgZGVmIF9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZh
bHVlKToKLSAgICAgICAgaWYgbmFtZSBpbiBfU3RhbmRhbG9uZVNTTENvbm5lY3Rpb24uX09WRVJS
SURERU5fQVRUUklCVVRFUzoKLSAgICAgICAgICAgIHJldHVybiBvYmplY3QuX19zZXRhdHRyX18o
c2VsZiwgbmFtZSwgdmFsdWUpCi0gICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uLl9fc2V0
YXR0cl9fKG5hbWUsIHZhbHVlKQotCi0gICAgZGVmIG1ha2VmaWxlKHNlbGYsIG1vZGU9J3InLCBi
dWZzaXplPS0xKToKLSAgICAgICAgcmV0dXJuIHNvY2tldC5fZmlsZW9iamVjdChzZWxmLCBtb2Rl
LCBidWZzaXplKQotCi0gICAgZGVmIHNodXRkb3duKHNlbGYsIHVudXNlZF9ob3cpOgotICAgICAg
ICBzZWxmLl9jb25uZWN0aW9uLnNodXRkb3duKCkKLQotICAgIGRlZiByZWN2KHNlbGYsIGJ1ZnNp
emUsIGZsYWdzPTApOgotICAgICAgICBpZiBmbGFncyAhPSAwOgotICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcignTm9uLXplcm8gZmxhZ3Mgbm90IGFsbG93ZWQnKQotCi0gICAgICAgIHRyeToK
LSAgICAgICAgICAgIHJldHVybiBzZWxmLl9jb25uZWN0aW9uLnJlY3YoYnVmc2l6ZSkKLSAgICAg
ICAgZXhjZXB0IE9wZW5TU0wuU1NMLlN5c0NhbGxFcnJvciwgKGVyciwgbWVzc2FnZSk6Ci0gICAg
ICAgICAgICBpZiBlcnIgPT0gLTE6Ci0gICAgICAgICAgICAgICAgIyBTdXBwcmVzcyAidW5leHBl
Y3RlZCBFT0YiIGV4Y2VwdGlvbi4gU2VlIHRoZSBPcGVuU1NMIGRvY3VtZW50Ci0gICAgICAgICAg
ICAgICAgIyBmb3IgU1NMX2dldF9lcnJvci4KLSAgICAgICAgICAgICAgICByZXR1cm4gJycKLSAg
ICAgICAgICAgIHJhaXNlCi0KLQotZGVmIF9hbGlhc19oYW5kbGVycyhkaXNwYXRjaGVyLCB3ZWJz
b2NrX2hhbmRsZXJzX21hcF9maWxlKToKLSAgICAiIiJTZXQgYWxpYXNlcyBzcGVjaWZpZWQgaW4g
d2Vic29ja19oYW5kbGVyX21hcF9maWxlIGluIGRpc3BhdGNoZXIuCi0KLSAgICBBcmdzOgotICAg
ICAgICBkaXNwYXRjaGVyOiBkaXNwYXRjaC5EaXNwYXRjaGVyIGluc3RhbmNlCi0gICAgICAgIHdl
YnNvY2tfaGFuZGxlcl9tYXBfZmlsZTogYWxpYXMgbWFwIGZpbGUKLSAgICAiIiIKLQotICAgIGZw
ID0gb3Blbih3ZWJzb2NrX2hhbmRsZXJzX21hcF9maWxlKQotICAgIHRyeToKLSAgICAgICAgZm9y
IGxpbmUgaW4gZnA6Ci0gICAgICAgICAgICBpZiBsaW5lWzBdID09ICcjJyBvciBsaW5lLmlzc3Bh
Y2UoKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgbSA9IHJlLm1hdGNo
KCcoXFMrKVxzKyhcUyspJywgbGluZSkKLSAgICAgICAgICAgIGlmIG5vdCBtOgotICAgICAgICAg
ICAgICAgIGxvZ2dpbmcud2FybmluZygnV3JvbmcgZm9ybWF0IGluIG1hcCBmaWxlOicgKyBsaW5l
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZGlzcGF0Y2hlci5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygKLSAgICAgICAgICAgICAg
ICAgICAgbS5ncm91cCgxKSwgbS5ncm91cCgyKSkKLSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRj
aC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmVycm9yKHN0
cihlKSkKLSAgICBmaW5hbGx5OgotICAgICAgICBmcC5jbG9zZSgpCi0KLQotY2xhc3MgV2ViU29j
a2V0U2VydmVyKFNvY2tldFNlcnZlci5UaHJlYWRpbmdNaXhJbiwgQmFzZUhUVFBTZXJ2ZXIuSFRU
UFNlcnZlcik6Ci0gICAgIiIiSFRUUFNlcnZlciBzcGVjaWFsaXplZCBmb3IgV2ViU29ja2V0LiIi
IgotCi0gICAgIyBPdmVycmlkZXMgU29ja2V0U2VydmVyLlRocmVhZGluZ01peEluLmRhZW1vbl90
aHJlYWRzCi0gICAgZGFlbW9uX3RocmVhZHMgPSBUcnVlCi0gICAgIyBPdmVycmlkZXMgQmFzZUhU
VFBTZXJ2ZXIuSFRUUFNlcnZlci5hbGxvd19yZXVzZV9hZGRyZXNzCi0gICAgYWxsb3dfcmV1c2Vf
YWRkcmVzcyA9IFRydWUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAg
ICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5fX2luaXRfXyB0byBzZXQgU1NM
IGVuYWJsZWQKLSAgICAgICAgc29ja2V0IG9iamVjdCB0byBzZWxmLnNvY2tldCBiZWZvcmUgc2Vy
dmVyX2JpbmQgYW5kIHNlcnZlcl9hY3RpdmF0ZSwKLSAgICAgICAgaWYgbmVjZXNzYXJ5LgotICAg
ICAgICAiIiIKLQotICAgICAgICAjIFNoYXJlIGEgRGlzcGF0Y2hlciBhbW9uZyByZXF1ZXN0IGhh
bmRsZXJzIHRvIHNhdmUgdGltZSBmb3IKLSAgICAgICAgIyBpbnN0YW50aWF0aW9uLiAgRGlzcGF0
Y2hlciBjYW4gYmUgc2hhcmVkIGJlY2F1c2UgaXQgaXMgdGhyZWFkLXNhZmUuCi0gICAgICAgIG9w
dGlvbnMuZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoCi0gICAgICAgICAgICBvcHRp
b25zLndlYnNvY2tfaGFuZGxlcnMsCi0gICAgICAgICAgICBvcHRpb25zLnNjYW5fZGlyLAotICAg
ICAgICAgICAgb3B0aW9ucy5hbGxvd19oYW5kbGVyc19vdXRzaWRlX3Jvb3RfZGlyKQotICAgICAg
ICBpZiBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGU6Ci0gICAgICAgICAgICBfYWxp
YXNfaGFuZGxlcnMob3B0aW9ucy5kaXNwYXRjaGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMud2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSkKLSAgICAgICAgd2FybmluZ3Mg
PSBvcHRpb25zLmRpc3BhdGNoZXIuc291cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgaWYgd2Fybmlu
Z3M6Ci0gICAgICAgICAgICBmb3Igd2FybmluZyBpbiB3YXJuaW5nczoKLSAgICAgICAgICAgICAg
ICBsb2dnaW5nLndhcm5pbmcoJ1dhcm5pbmcgaW4gc291cmNlIGxvYWRpbmc6ICVzJyAlIHdhcm5p
bmcpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYp
Ci0KLSAgICAgICAgc2VsZi5yZXF1ZXN0X3F1ZXVlX3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVl
dWVfc2l6ZQotICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duID0gdGhyZWFkaW5nLkV2ZW50
KCkKLSAgICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBGYWxzZQotCi0gICAgICAgIFNvY2tldFNl
cnZlci5CYXNlU2VydmVyLl9faW5pdF9fKAotICAgICAgICAgICAgc2VsZiwgKG9wdGlvbnMuc2Vy
dmVyX2hvc3QsIG9wdGlvbnMucG9ydCksIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyKQotCi0gICAg
ICAgICMgRXhwb3NlIHRoZSBvcHRpb25zIG9iamVjdCB0byBhbGxvdyBoYW5kbGVyIG9iamVjdHMg
YWNjZXNzIGl0LiBXZSBuYW1lCi0gICAgICAgICMgaXQgd2l0aCB3ZWJzb2NrZXRfIHByZWZpeCB0
byBhdm9pZCBjb25mbGljdC4KLSAgICAgICAgc2VsZi53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMg
PSBvcHRpb25zCi0KLSAgICAgICAgc2VsZi5fY3JlYXRlX3NvY2tldHMoKQotICAgICAgICBzZWxm
LnNlcnZlcl9iaW5kKCkKLSAgICAgICAgc2VsZi5zZXJ2ZXJfYWN0aXZhdGUoKQotCi0gICAgZGVm
IF9jcmVhdGVfc29ja2V0cyhzZWxmKToKLSAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSwgc2VsZi5z
ZXJ2ZXJfcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3MKLSAgICAgICAgc2VsZi5fc29ja2V0cyA9
IFtdCi0gICAgICAgIGlmIG5vdCBzZWxmLnNlcnZlcl9uYW1lOgotICAgICAgICAgICAgIyBPbiBw
bGF0Zm9ybXMgdGhhdCBkb2Vzbid0IHN1cHBvcnQgSVB2NiwgdGhlIGZpcnN0IGJpbmQgZmFpbHMu
Ci0gICAgICAgICAgICAjIE9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnRzIElQdjYKLSAgICAgICAg
ICAgICMgLSBJZiBpdCBiaW5kcyBib3RoIElQdjQgYW5kIElQdjYgb24gY2FsbCB3aXRoIEFGX0lO
RVQ2LCB0aGUKLSAgICAgICAgICAgICMgICBmaXJzdCBiaW5kIHN1Y2NlZWRzIGFuZCB0aGUgc2Vj
b25kIGZhaWxzICh3ZSdsbCBzZWUgJ0FkZHJlc3MKLSAgICAgICAgICAgICMgICBhbHJlYWR5IGlu
IHVzZScgZXJyb3IpLgotICAgICAgICAgICAgIyAtIElmIGl0IGJpbmRzIG9ubHkgSVB2NiBvbiBj
YWxsIHdpdGggQUZfSU5FVDYsIGJvdGggY2FsbCBhcmUKLSAgICAgICAgICAgICMgICBleHBlY3Rl
ZCB0byBzdWNjZWVkIHRvIGxpc3RlbiBib3RoIHByb3RvY29sLgotICAgICAgICAgICAgYWRkcmlu
Zm9fYXJyYXkgPSBbCi0gICAgICAgICAgICAgICAgKHNvY2tldC5BRl9JTkVUNiwgc29ja2V0LlNP
Q0tfU1RSRUFNLCAnJywgJycsICcnKSwKLSAgICAgICAgICAgICAgICAoc29ja2V0LkFGX0lORVQs
IHNvY2tldC5TT0NLX1NUUkVBTSwgJycsICcnLCAnJyldCi0gICAgICAgIGVsc2U6Ci0gICAgICAg
ICAgICBhZGRyaW5mb19hcnJheSA9IHNvY2tldC5nZXRhZGRyaW5mbyhzZWxmLnNlcnZlcl9uYW1l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5z
ZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvY2tldC5BRl9VTlNQRUMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzb2NrZXQuU09DS19TVFJFQU0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXQuSVBQUk9UT19UQ1ApCi0gICAgICAgIGZv
ciBhZGRyaW5mbyBpbiBhZGRyaW5mb19hcnJheToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5p
bmZvKCdDcmVhdGUgc29ja2V0IG9uOiAlcicsIGFkZHJpbmZvKQotICAgICAgICAgICAgZmFtaWx5
LCBzb2NrdHlwZSwgcHJvdG8sIGNhbm9ubmFtZSwgc29ja2FkZHIgPSBhZGRyaW5mbwotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvY2tldF8gPSBzb2NrZXQuc29ja2V0KGZhbWls
eSwgc29ja3R5cGUpCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdTa2lwIGJ5IGZhaWx1cmU6ICVyJywgZSkKLSAgICAg
ICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLndl
YnNvY2tldF9zZXJ2ZXJfb3B0aW9ucwotICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudXNl
X3RsczoKLSAgICAgICAgICAgICAgICAjIEZvciB0aGUgY2FzZSBvZiBfSEFTX09QRU5fU1NMLCB3
ZSBkbyB3cmFwcGVyIHNldHVwIGFmdGVyCi0gICAgICAgICAgICAgICAgIyBhY2NlcHQuCi0gICAg
ICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5E
QVJEX01PRFVMRToKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudGxzX2Ns
aWVudF9hdXRoOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMudGxz
X2NsaWVudF9jZXJ0X29wdGlvbmFsOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVu
dF9jZXJ0XyA9IHNzbC5DRVJUX09QVElPTkFMCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsaWVudF9jZXJ0XyA9IHNzbC5DRVJUX1JF
UVVJUkVECi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfY2VydF8gPSBzc2wuQ0VSVF9OT05FCi0gICAgICAgICAgICAgICAgICAgIHNvY2tl
dF8gPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0XywKLSAgICAgICAgICAgICAgICAgICAgICAgIGtl
eWZpbGU9c2VydmVyX29wdGlvbnMucHJpdmF0ZV9rZXksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBjZXJ0ZmlsZT1zZXJ2ZXJfb3B0aW9ucy5jZXJ0aWZpY2F0ZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9TU0x2MjMsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBjYV9jZXJ0cz1zZXJ2ZXJfb3B0aW9ucy50bHNfY2xpZW50X2NhLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY2VydF9yZXFzPWNsaWVudF9jZXJ0XywKLSAgICAgICAgICAgICAgICAg
ICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgc2VsZi5f
c29ja2V0cy5hcHBlbmQoKHNvY2tldF8sIGFkZHJpbmZvKSkKLQotICAgIGRlZiBzZXJ2ZXJfYmlu
ZChzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2
ZXJfYmluZCB0byBlbmFibGUgbXVsdGlwbGUKLSAgICAgICAgc29ja2V0cyBiaW5kLgotICAgICAg
ICAiIiIKLQotICAgICAgICBmYWlsZWRfc29ja2V0cyA9IFtdCi0KLSAgICAgICAgZm9yIHNvY2tl
dGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNvY2tldF8sIGFkZHJpbmZvID0g
c29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0JpbmQgb246ICVyJywg
YWRkcmluZm8pCi0gICAgICAgICAgICBpZiBzZWxmLmFsbG93X3JldXNlX2FkZHJlc3M6Ci0gICAg
ICAgICAgICAgICAgc29ja2V0Xy5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfU09DS0VULCBzb2NrZXQu
U09fUkVVU0VBRERSLCAxKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNvY2tl
dF8uYmluZChzZWxmLnNlcnZlcl9hZGRyZXNzKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biwgZToKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2tpcCBieSBmYWlsdXJl
OiAlcicsIGUpCi0gICAgICAgICAgICAgICAgc29ja2V0Xy5jbG9zZSgpCi0gICAgICAgICAgICAg
ICAgZmFpbGVkX3NvY2tldHMuYXBwZW5kKHNvY2tldGluZm8pCi0gICAgICAgICAgICBpZiBzZWxm
LnNlcnZlcl9hZGRyZXNzWzFdID09IDA6Ci0gICAgICAgICAgICAgICAgIyBUaGUgb3BlcmF0aW5n
IHN5c3RlbSBhc3NpZ25zIHRoZSBhY3R1YWwgcG9ydCBudW1iZXIgZm9yIHBvcnQKLSAgICAgICAg
ICAgICAgICAjIG51bWJlciAwLiBUaGlzIGNhc2UsIHRoZSBzZWNvbmQgYW5kIGxhdGVyIHNvY2tl
dHMgc2hvdWxkIHVzZQotICAgICAgICAgICAgICAgICMgdGhlIHNhbWUgcG9ydCBudW1iZXIuIEFs
c28gc2VsZi5zZXJ2ZXJfcG9ydCBpcyByZXdyaXR0ZW4KLSAgICAgICAgICAgICAgICAjIGJlY2F1
c2UgaXQgaXMgZXhwb3J0ZWQsIGFuZCB3aWxsIGJlIHVzZWQgYnkgZXh0ZXJuYWwgY29kZS4KLSAg
ICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9hZGRyZXNzID0gKAotICAgICAgICAgICAgICAgICAg
ICBzZWxmLnNlcnZlcl9uYW1lLCBzb2NrZXRfLmdldHNvY2tuYW1lKClbMV0pCi0gICAgICAgICAg
ICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IHNlbGYuc2VydmVyX2FkZHJlc3NbMV0KLSAgICAgICAg
ICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUG9ydCAlciBpcyBhc3NpZ25lZCcsIHNlbGYuc2Vy
dmVyX3BvcnQpCi0KLSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gZmFpbGVkX3NvY2tldHM6Ci0g
ICAgICAgICAgICBzZWxmLl9zb2NrZXRzLnJlbW92ZShzb2NrZXRpbmZvKQotCi0gICAgZGVmIHNl
cnZlcl9hY3RpdmF0ZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRD
UFNlcnZlci5zZXJ2ZXJfYWN0aXZhdGUgdG8gZW5hYmxlIG11bHRpcGxlCi0gICAgICAgIHNvY2tl
dHMgbGlzdGVuLgotICAgICAgICAiIiIKLQotICAgICAgICBmYWlsZWRfc29ja2V0cyA9IFtdCi0K
LSAgICAgICAgZm9yIHNvY2tldGluZm8gaW4gc2VsZi5fc29ja2V0czoKLSAgICAgICAgICAgIHNv
Y2tldF8sIGFkZHJpbmZvID0gc29ja2V0aW5mbwotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmlu
Zm8oJ0xpc3RlbiBvbjogJXInLCBhZGRyaW5mbykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICBzb2NrZXRfLmxpc3RlbihzZWxmLnJlcXVlc3RfcXVldWVfc2l6ZSkKLSAgICAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmlu
Zm8oJ1NraXAgYnkgZmFpbHVyZTogJXInLCBlKQotICAgICAgICAgICAgICAgIHNvY2tldF8uY2xv
c2UoKQotICAgICAgICAgICAgICAgIGZhaWxlZF9zb2NrZXRzLmFwcGVuZChzb2NrZXRpbmZvKQot
Ci0gICAgICAgIGZvciBzb2NrZXRpbmZvIGluIGZhaWxlZF9zb2NrZXRzOgotICAgICAgICAgICAg
c2VsZi5fc29ja2V0cy5yZW1vdmUoc29ja2V0aW5mbykKLQotICAgICAgICBpZiBsZW4oc2VsZi5f
c29ja2V0cykgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5jcml0aWNhbCgKLSAgICAg
ICAgICAgICAgICAnTm8gc29ja2V0cyBhY3RpdmF0ZWQuIFVzZSBpbmZvIGxvZyBsZXZlbCB0byBz
ZWUgdGhlIHJlYXNvbi4nKQotCi0gICAgZGVmIHNlcnZlcl9jbG9zZShzZWxmKToKLSAgICAgICAg
IiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNlcnZlci5zZXJ2ZXJfY2xvc2UgdG8gZW5hYmxl
IG11bHRpcGxlCi0gICAgICAgIHNvY2tldHMgY2xvc2UuCi0gICAgICAgICIiIgotCi0gICAgICAg
IGZvciBzb2NrZXRpbmZvIGluIHNlbGYuX3NvY2tldHM6Ci0gICAgICAgICAgICBzb2NrZXRfLCBh
ZGRyaW5mbyA9IHNvY2tldGluZm8KLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdDbG9z
ZSBvbjogJXInLCBhZGRyaW5mbykKLSAgICAgICAgICAgIHNvY2tldF8uY2xvc2UoKQotCi0gICAg
ZGVmIGZpbGVubyhzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlRDUFNl
cnZlci5maWxlbm8uIiIiCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmNyaXRpY2FsKCdOb3Qgc3Vw
cG9ydGVkOiBmaWxlbm8nKQotICAgICAgICByZXR1cm4gc2VsZi5fc29ja2V0c1swXVswXS5maWxl
bm8oKQotCi0gICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVz
cyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5oYW5kbGVfZXJyb3IuIiIiCi0K
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmVycm9yKAotICAgICAgICAgICAgJ0V4Y2VwdGlvbiBpbiBw
cm9jZXNzaW5nIHJlcXVlc3QgZnJvbTogJXJcbiVzJywKLSAgICAgICAgICAgIGNsaWVudF9hZGRy
ZXNzLAotICAgICAgICAgICAgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgIyBOb3Rl
OiBjbGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLgotCi0gICAgZGVmIGdldF9yZXF1ZXN0KHNlbGYp
OgotICAgICAgICAiIiJPdmVycmlkZSBUQ1BTZXJ2ZXIuZ2V0X3JlcXVlc3QgdG8gd3JhcCBPcGVu
U1NMLlNTTC5Db25uZWN0aW9uCi0gICAgICAgIG9iamVjdCB3aXRoIF9TdGFuZGFsb25lU1NMQ29u
bmVjdGlvbiB0byBwcm92aWRlIG1ha2VmaWxlIG1ldGhvZC4gV2UKLSAgICAgICAgY2Fubm90IHN1
YnN0aXR1dGUgT3BlblNTTC5TU0wuQ29ubmVjdGlvbi5tYWtlZmlsZSBzaW5jZSBpdCdzIHJlYWRv
bmx5Ci0gICAgICAgIGF0dHJpYnV0ZS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgYWNjZXB0ZWRf
c29ja2V0LCBjbGllbnRfYWRkcmVzcyA9IHNlbGYuc29ja2V0LmFjY2VwdCgpCi0KLSAgICAgICAg
c2VydmVyX29wdGlvbnMgPSBzZWxmLndlYnNvY2tldF9zZXJ2ZXJfb3B0aW9ucwotICAgICAgICBp
ZiBzZXJ2ZXJfb3B0aW9ucy51c2VfdGxzOgotICAgICAgICAgICAgaWYgc2VydmVyX29wdGlvbnMu
dGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRToKLSAgICAgICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldC5kb19oYW5kc2hha2UoKQot
ICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMRXJyb3IsIGU6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnJXInLCBlKQotICAgICAgICAgICAgICAgICAgICByYWlz
ZQotCi0gICAgICAgICAgICAgICAgIyBQcmludCBjaXBoZXIgaW4gdXNlLiBIYW5kc2hha2UgaXMg
ZG9uZSBvbiBhY2NlcHQuCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdDaXBo
ZXI6ICVzJywgYWNjZXB0ZWRfc29ja2V0LmNpcGhlcigpKQotICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2dlci5kZWJ1ZygnQ2xpZW50IGNlcnQ6ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBl
bGlmIHNlcnZlcl9vcHRpb25zLnRsc19tb2R1bGUgPT0gX1RMU19CWV9QWU9QRU5TU0w6Ci0gICAg
ICAgICAgICAgICAgIyBXZSBjYW5ub3QgcHJpbnQgdGhlIGNpcGhlciBpbiB1c2UuIHB5T3BlblNT
TCBkb2Vzbid0IHByb3ZpZGUKLSAgICAgICAgICAgICAgICAjIGFueSBtZXRob2QgdG8gZmV0Y2gg
dGhhdC4KLQotICAgICAgICAgICAgICAgIGN0eCA9IE9wZW5TU0wuU1NMLkNvbnRleHQoT3BlblNT
TC5TU0wuU1NMdjIzX01FVEhPRCkKLSAgICAgICAgICAgICAgICBjdHgudXNlX3ByaXZhdGVrZXlf
ZmlsZShzZXJ2ZXJfb3B0aW9ucy5wcml2YXRlX2tleSkKLSAgICAgICAgICAgICAgICBjdHgudXNl
X2NlcnRpZmljYXRlX2ZpbGUoc2VydmVyX29wdGlvbnMuY2VydGlmaWNhdGUpCi0KLSAgICAgICAg
ICAgICAgICBkZWYgZGVmYXVsdF9jYWxsYmFjayhjb25uLCBjZXJ0LCBlcnJudW0sIGVycmRlcHRo
LCBvayk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBvayA9PSAxCi0KLSAgICAgICAgICAg
ICAgICAjIFNlZSB0aGUgT3BlblNTTCBkb2N1bWVudCBmb3IgU1NMX0NUWF9zZXRfdmVyaWZ5Lgot
ICAgICAgICAgICAgICAgIGlmIHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRfYXV0aDoKLSAgICAg
ICAgICAgICAgICAgICAgdmVyaWZ5X21vZGUgPSBPcGVuU1NMLlNTTC5WRVJJRllfUEVFUgotICAg
ICAgICAgICAgICAgICAgICBpZiBub3Qgc2VydmVyX29wdGlvbnMudGxzX2NsaWVudF9jZXJ0X29w
dGlvbmFsOgotICAgICAgICAgICAgICAgICAgICAgICAgdmVyaWZ5X21vZGUgfD0gT3BlblNTTC5T
U0wuVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJUCi0gICAgICAgICAgICAgICAgICAgIGN0eC5z
ZXRfdmVyaWZ5KHZlcmlmeV9tb2RlLCBkZWZhdWx0X2NhbGxiYWNrKQotICAgICAgICAgICAgICAg
ICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKHNlcnZlcl9vcHRpb25zLnRsc19jbGllbnRf
Y2EsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSkK
LSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjdHguc2V0X3Zlcmlm
eShPcGVuU1NMLlNTTC5WRVJJRllfTk9ORSwgZGVmYXVsdF9jYWxsYmFjaykKLQotICAgICAgICAg
ICAgICAgIGFjY2VwdGVkX3NvY2tldCA9IE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24oY3R4LCBhY2Nl
cHRlZF9zb2NrZXQpCi0gICAgICAgICAgICAgICAgYWNjZXB0ZWRfc29ja2V0LnNldF9hY2NlcHRf
c3RhdGUoKQotCi0gICAgICAgICAgICAgICAgIyBDb252ZXJ0IFNTTCByZWxhdGVkIGVycm9yIGlu
dG8gc29ja2V0LmVycm9yIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAjIFNvY2tldFNlcnZlciBp
Z25vcmVzIHRoZW0gYW5kIGtlZXBzIHJ1bm5pbmcuCi0gICAgICAgICAgICAgICAgIwotICAgICAg
ICAgICAgICAgICMgVE9ETyh0eW9zaGlubyk6IENvbnZlcnQgYWxsIGtpbmRzIG9mIGVycm9ycy4K
LSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tl
dC5kb19oYW5kc2hha2UoKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBPcGVuU1NMLlNTTC5FcnJv
ciwgZToKLSAgICAgICAgICAgICAgICAgICAgIyBTZXQgZXJybm8gcGFydCB0byAxIChTU0xfRVJS
T1JfU1NMKSBsaWtlIHRoZSBzc2wgbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgICMgZG9lcy4K
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCclcicsIGUpCi0gICAgICAg
ICAgICAgICAgICAgIHJhaXNlIHNvY2tldC5lcnJvcigxLCAnJXInICUgZSkKLSAgICAgICAgICAg
ICAgICBjZXJ0ID0gYWNjZXB0ZWRfc29ja2V0LmdldF9wZWVyX2NlcnRpZmljYXRlKCkKLSAgICAg
ICAgICAgICAgICBpZiBjZXJ0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ0NsaWVudCBjZXJ0IHN1YmplY3Q6ICVyJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnQuZ2V0X3N1YmplY3QoKS5nZXRfY29tcG9uZW50
cygpKQotICAgICAgICAgICAgICAgIGFjY2VwdGVkX3NvY2tldCA9IF9TdGFuZGFsb25lU1NMQ29u
bmVjdGlvbihhY2NlcHRlZF9zb2NrZXQpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoJ05vIFRMUyBzdXBwb3J0IG1vZHVsZSBpcyBhdmFpbGFibGUn
KQotCi0gICAgICAgIHJldHVybiBhY2NlcHRlZF9zb2NrZXQsIGNsaWVudF9hZGRyZXNzCi0KLSAg
ICBkZWYgc2VydmVfZm9yZXZlcihzZWxmLCBwb2xsX2ludGVydmFsPTAuNSk6Ci0gICAgICAgICIi
Ik92ZXJyaWRlIFNvY2tldFNlcnZlci5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXIuIiIiCi0KLSAg
ICAgICAgc2VsZi5fX3dzX3NlcnZpbmcgPSBUcnVlCi0gICAgICAgIHNlbGYuX193c19pc19zaHV0
X2Rvd24uY2xlYXIoKQotICAgICAgICBoYW5kbGVfcmVxdWVzdCA9IHNlbGYuaGFuZGxlX3JlcXVl
c3QKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnX2hhbmRsZV9yZXF1ZXN0X25vYmxvY2snKToK
LSAgICAgICAgICAgIGhhbmRsZV9yZXF1ZXN0ID0gc2VsZi5faGFuZGxlX3JlcXVlc3Rfbm9ibG9j
awotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLndhcm5pbmcoJ0ZhbGxi
YWNrIHRvIGJsb2NraW5nIHJlcXVlc3QgaGFuZGxlcicpCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHdoaWxlIHNlbGYuX193c19zZXJ2aW5nOgotICAgICAgICAgICAgICAgIHIsIHcsIGUgPSBz
ZWxlY3Quc2VsZWN0KAotICAgICAgICAgICAgICAgICAgICBbc29ja2V0X1swXSBmb3Igc29ja2V0
XyBpbiBzZWxmLl9zb2NrZXRzXSwKLSAgICAgICAgICAgICAgICAgICAgW10sIFtdLCBwb2xsX2lu
dGVydmFsKQotICAgICAgICAgICAgICAgIGZvciBzb2NrZXRfIGluIHI6Ci0gICAgICAgICAgICAg
ICAgICAgIHNlbGYuc29ja2V0ID0gc29ja2V0XwotICAgICAgICAgICAgICAgICAgICBoYW5kbGVf
cmVxdWVzdCgpCi0gICAgICAgICAgICAgICAgc2VsZi5zb2NrZXQgPSBOb25lCi0gICAgICAgIGZp
bmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9fd3NfaXNfc2h1dF9kb3duLnNldCgpCi0KLSAgICBk
ZWYgc2h1dGRvd24oc2VsZik6Ci0gICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5CYXNl
U2VydmVyLnNodXRkb3duLiIiIgotCi0gICAgICAgIHNlbGYuX193c19zZXJ2aW5nID0gRmFsc2UK
LSAgICAgICAgc2VsZi5fX3dzX2lzX3NodXRfZG93bi53YWl0KCkKLQotCi1jbGFzcyBXZWJTb2Nr
ZXRSZXF1ZXN0SGFuZGxlcihDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1ZXN0SGFuZGxlcik6Ci0g
ICAgIiIiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIHNwZWNpYWxpemVkIGZvciBXZWJTb2NrZXQuIiIi
Ci0KLSAgICAjIFVzZSBodHRwbGliLkhUVFBNZXNzYWdlIGluc3RlYWQgb2YgbWltZXRvb2xzLk1l
c3NhZ2UuCi0gICAgTWVzc2FnZUNsYXNzID0gaHR0cGxpYi5IVFRQTWVzc2FnZQotCi0gICAgcHJv
dG9jb2xfdmVyc2lvbiA9ICJIVFRQLzEuMSIKLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAg
ICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyLnNldHVwIHRv
IHdyYXAgcmZpbGUKLSAgICAgICAgd2l0aCBNZW1vcml6aW5nRmlsZS4KLQotICAgICAgICBUaGlz
IG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBieSBCYXNlUmVxdWVzdEhhbmRsZXIncyBjb25zdHJ1Y3Rv
cgotICAgICAgICBiZWZvcmUgY2FsbGluZyBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZS4K
LSAgICAgICAgQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5oYW5kbGUgd2lsbCBjYWxsCi0gICAgICAg
IEJhc2VIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGFuZCBpdCB3aWxsIGNh
bGwKLSAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KLSAgICAg
ICAgIiIiCi0KLSAgICAgICAgIyBDYWxsIHN1cGVyY2xhc3MncyBzZXR1cCB0byBwcmVwYXJlIHJm
aWxlLCB3ZmlsZSwgZXRjLiBTZWUgc2V0dXAKLSAgICAgICAgIyBkZWZpbml0aW9uIG9uIHRoZSBy
b290IGNsYXNzIFNvY2tldFNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlciB0bwotICAgICAgICAj
IHVuZGVyc3RhbmQgd2hhdCB0aGlzIGRvZXMuCi0gICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRU
UFJlcXVlc3RIYW5kbGVyLnNldHVwKHNlbGYpCi0KLSAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9y
aXppbmdmaWxlLk1lbW9yaXppbmdGaWxlKAotICAgICAgICAgICAgc2VsZi5yZmlsZSwKLSAgICAg
ICAgICAgIG1heF9tZW1vcml6ZWRfbGluZXM9X01BWF9NRU1PUklaRURfTElORVMpCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcik6Ci0gICAg
ICAgIHNlbGYuX2xvZ2dlciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAg
IHNlbGYuX29wdGlvbnMgPSBzZXJ2ZXIud2Vic29ja2V0X3NlcnZlcl9vcHRpb25zCi0KLSAgICAg
ICAgIyBPdmVycmlkZXMgQ0dJSFRUUFNlcnZlclJlcXVlc3RIYW5kbGVyLmNnaV9kaXJlY3Rvcmll
cy4KLSAgICAgICAgc2VsZi5jZ2lfZGlyZWN0b3JpZXMgPSBzZWxmLl9vcHRpb25zLmNnaV9kaXJl
Y3RvcmllcwotICAgICAgICAjIFJlcGxhY2UgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLmlzX2V4ZWN1
dGFibGUgbWV0aG9kLgotICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmlzX2V4ZWN1dGFibGVfbWV0
aG9kIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5pc19leGVjdXRhYmxlID0gc2VsZi5f
b3B0aW9ucy5pc19leGVjdXRhYmxlX21ldGhvZAotCi0gICAgICAgICMgVGhpcyBhY3R1YWxseSBj
YWxscyBCYXNlUmVxdWVzdEhhbmRsZXIuX19pbml0X18uCi0gICAgICAgIENHSUhUVFBTZXJ2ZXIu
Q0dJSFRUUFJlcXVlc3RIYW5kbGVyLl9faW5pdF9fKAotICAgICAgICAgICAgc2VsZiwgcmVxdWVz
dCwgY2xpZW50X2FkZHJlc3MsIHNlcnZlcikKLQotICAgIGRlZiBwYXJzZV9yZXF1ZXN0KHNlbGYp
OgotICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5k
bGVyLnBhcnNlX3JlcXVlc3QuCi0KLSAgICAgICAgUmV0dXJuIFRydWUgdG8gY29udGludWUgcHJv
Y2Vzc2luZyBmb3IgSFRUUChTKSwgRmFsc2Ugb3RoZXJ3aXNlLgotCi0gICAgICAgIFNlZSBCYXNl
SFRUUFJlcXVlc3RIYW5kbGVyLmhhbmRsZV9vbmVfcmVxdWVzdCBtZXRob2Qgd2hpY2ggY2FsbHMK
LSAgICAgICAgdGhpcyBtZXRob2QgdG8gdW5kZXJzdGFuZCBob3cgdGhlIHJldHVybiB2YWx1ZSB3
aWxsIGJlIGhhbmRsZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgICMgV2UgaG9vayBwYXJzZV9y
ZXF1ZXN0IG1ldGhvZCwgYnV0IGFsc28gY2FsbCB0aGUgb3JpZ2luYWwKLSAgICAgICAgIyBDR0lI
VFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdCBzaW5jZSB3aGVuIHdlIHJldHVybiBGYWxz
ZSwKLSAgICAgICAgIyBDR0lIVFRQUmVxdWVzdEhhbmRsZXIuaGFuZGxlX29uZV9yZXF1ZXN0IGNv
bnRpbnVlcyBwcm9jZXNzaW5nIGFuZAotICAgICAgICAjIGl0IG5lZWRzIHZhcmlhYmxlcyBzZXQg
YnkgQ0dJSFRUUFJlcXVlc3RIYW5kbGVyLnBhcnNlX3JlcXVlc3QuCi0gICAgICAgICMKLSAgICAg
ICAgIyBWYXJpYWJsZXMgc2V0IGJ5IHRoaXMgbWV0aG9kIHdpbGwgYmUgYWxzbyB1c2VkIGJ5IFdl
YlNvY2tldCByZXF1ZXN0Ci0gICAgICAgICMgaGFuZGxpbmcgKHNlbGYucGF0aCwgc2VsZi5jb21t
YW5kLCBzZWxmLnJlcXVlc3RsaW5lLCBldGMuIFNlZSBhbHNvCi0gICAgICAgICMgaG93IF9TdGFu
ZGFsb25lUmVxdWVzdCdzIG1lbWJlcnMgYXJlIGltcGxlbWVudGVkIHVzaW5nIHRoZXNlCi0gICAg
ICAgICMgYXR0cmlidXRlcykuCi0gICAgICAgIGlmIG5vdCBDR0lIVFRQU2VydmVyLkNHSUhUVFBS
ZXF1ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIEZh
bHNlCi0KLSAgICAgICAgaWYgc2VsZi5jb21tYW5kID09ICJDT05ORUNUIjoKLSAgICAgICAgICAg
IHNlbGYuc2VuZF9yZXNwb25zZSgyMDAsICJDb25uZWN0ZWQiKQotICAgICAgICAgICAgc2VsZi5z
ZW5kX2hlYWRlcigiQ29ubmVjdGlvbiIsICJrZWVwLWFsaXZlIikKLSAgICAgICAgICAgIHNlbGYu
ZW5kX2hlYWRlcnMoKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy51c2VfYmFzaWNfYXV0aDoKLSAgICAgICAgICAgIGF1dGggPSBzZWxmLmhlYWRl
cnMuZ2V0aGVhZGVyKCdBdXRob3JpemF0aW9uJykKLSAgICAgICAgICAgIGlmIGF1dGggIT0gc2Vs
Zi5fb3B0aW9ucy5iYXNpY19hdXRoX2NyZWRlbnRpYWw6Ci0gICAgICAgICAgICAgICAgc2VsZi5z
ZW5kX3Jlc3BvbnNlKDQwMSkKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCdXV1ct
QXV0aGVudGljYXRlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdCYXNpYyBy
ZWFsbT0iUHl3ZWJzb2NrZXQiJykKLSAgICAgICAgICAgICAgICBzZWxmLmVuZF9oZWFkZXJzKCkK
LSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnUmVxdWVzdCBiYXNpYyBhdXRoZW50
aWNhdGlvbicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaG9zdCwg
cG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaShzZWxmLnBhdGgpCi0K
LSAgICAgICAgIyBTcGVjaWFsIHBhdGhzIGZvciBYTUxIdHRwUmVxdWVzdCBiZW5jaG1hcmsKLSAg
ICAgICAgeGhyX2JlbmNobWFya19oZWxwZXJfcHJlZml4ID0gJy8wNzNiZTAwMWUxMDk1MDY5MmNj
YmYzYTJhZDIxYzI0NScKLSAgICAgICAgaWYgcmVzb3VyY2UgPT0gKHhocl9iZW5jaG1hcmtfaGVs
cGVyX3ByZWZpeCArICdfc2VuZCcpOgotICAgICAgICAgICAgeGhyX2JlbmNobWFya19oYW5kbGVy
ID0gWEhSQmVuY2htYXJrSGFuZGxlcigKLSAgICAgICAgICAgICAgICBzZWxmLmhlYWRlcnMsIHNl
bGYucmZpbGUsIHNlbGYud2ZpbGUpCi0gICAgICAgICAgICB4aHJfYmVuY2htYXJrX2hhbmRsZXIu
ZG9fc2VuZCgpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYgcmVzb3VyY2Ug
PT0gKHhocl9iZW5jaG1hcmtfaGVscGVyX3ByZWZpeCArICdfcmVjZWl2ZScpOgotICAgICAgICAg
ICAgeGhyX2JlbmNobWFya19oYW5kbGVyID0gWEhSQmVuY2htYXJrSGFuZGxlcigKLSAgICAgICAg
ICAgICAgICBzZWxmLmhlYWRlcnMsIHNlbGYucmZpbGUsIHNlbGYud2ZpbGUpCi0gICAgICAgICAg
ICB4aHJfYmVuY2htYXJrX2hhbmRsZXIuZG9fcmVjZWl2ZSgpCi0gICAgICAgICAgICByZXR1cm4g
RmFsc2UKLQotICAgICAgICBpZiByZXNvdXJjZSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5f
bG9nZ2VyLmluZm8oJ0ludmFsaWQgVVJJOiAlcicsIHNlbGYucGF0aCkKLSAgICAgICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVxdWVzdEhhbmRsZXInKQotICAg
ICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VydmVyX29wdGlvbnMgPSBzZWxmLnNlcnZl
ci53ZWJzb2NrZXRfc2VydmVyX29wdGlvbnMKLSAgICAgICAgaWYgaG9zdCBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIHZhbGlkYXRpb25faG9zdCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRpb25f
aG9zdAotICAgICAgICAgICAgaWYgdmFsaWRhdGlvbl9ob3N0IGlzIG5vdCBOb25lIGFuZCBob3N0
ICE9IHZhbGlkYXRpb25faG9zdDoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygn
SW52YWxpZCBob3N0OiAlciAoZXhwZWN0ZWQ6ICVyKScsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaG9zdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxp
ZGF0aW9uX2hvc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNr
IHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicpCi0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUK
LSAgICAgICAgaWYgcG9ydCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHZhbGlkYXRpb25fcG9y
dCA9IHNlcnZlcl9vcHRpb25zLnZhbGlkYXRpb25fcG9ydAotICAgICAgICAgICAgaWYgdmFsaWRh
dGlvbl9wb3J0IGlzIG5vdCBOb25lIGFuZCBwb3J0ICE9IHZhbGlkYXRpb25fcG9ydDoKLSAgICAg
ICAgICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnSW52YWxpZCBwb3J0OiAlciAoZXhwZWN0ZWQ6
ICVyKScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0aW9uX3BvcnQpCi0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmluZm8oJ0ZhbGxiYWNrIHRvIENHSUhUVFBSZXF1ZXN0SGFuZGxlcicp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgc2VsZi5wYXRoID0gcmVzb3Vy
Y2UKLQotICAgICAgICByZXF1ZXN0ID0gX1N0YW5kYWxvbmVSZXF1ZXN0KHNlbGYsIHNlbGYuX29w
dGlvbnMudXNlX3RscykKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIEZhbGxiYWNrIHRv
IGRlZmF1bHQgaHR0cCBoYW5kbGVyIGZvciByZXF1ZXN0IHBhdGhzIGZvciB3aGljaAotICAgICAg
ICAgICAgIyB3ZSBkb24ndCBoYXZlIHJlcXVlc3QgaGFuZGxlcnMuCi0gICAgICAgICAgICBpZiBu
b3Qgc2VsZi5fb3B0aW9ucy5kaXNwYXRjaGVyLmdldF9oYW5kbGVyX3N1aXRlKHNlbGYucGF0aCk6
Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmluZm8oJ05vIGhhbmRsZXIgZm9yIHJlc291
cmNlOiAlcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoKQot
ICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdGYWxsYmFjayB0byBDR0lIVFRQUmVx
dWVzdEhhbmRsZXInKQotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIGV4Y2Vw
dCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dl
ci5pbmZvKCdEaXNwYXRjaCBmYWlsZWQgZm9yIGVycm9yOiAlcycsIGUpCi0gICAgICAgICAgICBz
ZWxmLnNlbmRfZXJyb3IoZS5zdGF0dXMpCi0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
ICAgICAjIElmIGFueSBFeGNlcHRpb25zIHdpdGhvdXQgZXhjZXB0IGNsYXVzZSBzZXR1cCAoaW5j
bHVkaW5nCi0gICAgICAgICMgRGlzcGF0Y2hFeGNlcHRpb24pIGlzIHJhaXNlZCBiZWxvdyB0aGlz
IHBvaW50LCBpdCB3aWxsIGJlIGNhdWdodAotICAgICAgICAjIGFuZCBsb2dnZWQgYnkgV2ViU29j
a2V0U2VydmVyLgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICBoYW5kc2hha2UuZG9faGFuZHNoYWtlKAotICAgICAgICAgICAgICAgICAgICByZXF1ZXN0
LAotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmRpc3BhdGNoZXIsCi0gICAgICAg
ICAgICAgICAgICAgIGFsbG93RHJhZnQ3NT1zZWxmLl9vcHRpb25zLmFsbG93X2RyYWZ0NzUsCi0g
ICAgICAgICAgICAgICAgICAgIHN0cmljdD1zZWxmLl9vcHRpb25zLnN0cmljdCkKLSAgICAgICAg
ICAgIGV4Y2VwdCBoYW5kc2hha2UuVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLl9sb2dnZXIuaW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3IgdmVyc2lvbiBlcnJvcjog
JXMnLCBlKQotICAgICAgICAgICAgICAgIHNlbGYuc2VuZF9yZXNwb25zZShjb21tb24uSFRUUF9T
VEFUVVNfQkFEX1JFUVVFU1QpCi0gICAgICAgICAgICAgICAgc2VsZi5zZW5kX2hlYWRlcihjb21t
b24uU0VDX1dFQlNPQ0tFVF9WRVJTSU9OX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGUuc3VwcG9ydGVkX3ZlcnNpb25zKQotICAgICAgICAgICAgICAgIHNlbGYuZW5k
X2hlYWRlcnMoKQotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgZXhj
ZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAgICAgICAgICAgIyBI
YW5kc2hha2UgZm9yIHdzKHMpIGZhaWxlZC4KLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnZXIu
aW5mbygnSGFuZHNoYWtlIGZhaWxlZCBmb3IgZXJyb3I6ICVzJywgZSkKLSAgICAgICAgICAgICAg
ICBzZWxmLnNlbmRfZXJyb3IoZS5zdGF0dXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNl
Ci0KLSAgICAgICAgICAgIHJlcXVlc3QuX2Rpc3BhdGNoZXIgPSBzZWxmLl9vcHRpb25zLmRpc3Bh
dGNoZXIKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpCi0gICAgICAgIGV4Y2VwdCBoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlv
biwgZToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCdBYm9ydGVkOiAlcycsIGUpCi0g
ICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGxvZ19yZXF1ZXN0KHNlbGYsIGNvZGU9Jy0n
LCBzaXplPSctJyk6Ci0gICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVyLmxvZ19yZXF1
ZXN0LiIiIgotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5pbmZvKCciJXMiICVzICVzJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSwgc3RyKGNvZGUpLCBzdHIoc2l6
ZSkpCi0KLSAgICBkZWYgbG9nX2Vycm9yKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiT3ZlcnJp
ZGUgQmFzZUhUVFBTZXJ2ZXIubG9nX2Vycm9yLiIiIgotCi0gICAgICAgICMgRGVzcGl0ZSB0aGUg
bmFtZSwgdGhpcyBtZXRob2QgaXMgZm9yIHdhcm5pbmdzIHRoYW4gZm9yIGVycm9ycy4KLSAgICAg
ICAgIyBGb3IgZXhhbXBsZSwgSFRUUCBzdGF0dXMgY29kZSBpcyBsb2dnZWQgYnkgdGhpcyBtZXRo
b2QuCi0gICAgICAgIHNlbGYuX2xvZ2dlci53YXJuaW5nKCclcyAtICVzJywKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5hZGRyZXNzX3N0cmluZygpLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhcmdzWzBdICUgYXJnc1sxOl0pCi0KLSAgICBkZWYgaXNfY2dpKHNlbGYp
OgotICAgICAgICAiIiJUZXN0IHdoZXRoZXIgc2VsZi5wYXRoIGNvcnJlc3BvbmRzIHRvIGEgQ0dJ
IHNjcmlwdC4KLQotICAgICAgICBBZGQgZXh0cmEgY2hlY2sgdGhhdCBzZWxmLnBhdGggZG9lc24n
dCBjb250YWlucyAuLgotICAgICAgICBBbHNvIGNoZWNrIGlmIHRoZSBmaWxlIGlzIGEgZXhlY3V0
YWJsZSBmaWxlIG9yIG5vdC4KLSAgICAgICAgSWYgdGhlIGZpbGUgaXMgbm90IGV4ZWN1dGFibGUs
IGl0IGlzIGhhbmRsZWQgYXMgc3RhdGljIGZpbGUgb3IgZGlyCi0gICAgICAgIHJhdGhlciB0aGFu
IGEgQ0dJIHNjcmlwdC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgaWYgQ0dJSFRUUFNlcnZlci5D
R0lIVFRQUmVxdWVzdEhhbmRsZXIuaXNfY2dpKHNlbGYpOgotICAgICAgICAgICAgaWYgJy4uJyBp
biBzZWxmLnBhdGg6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgICAgICAj
IHN0cmlwIHF1ZXJ5IHBhcmFtZXRlciBmcm9tIHJlcXVlc3QgcGF0aAotICAgICAgICAgICAgcmVz
b3VyY2VfbmFtZSA9IHNlbGYucGF0aC5zcGxpdCgnPycsIDIpWzBdCi0gICAgICAgICAgICAjIGNv
bnZlcnQgcmVzb3VyY2VfbmFtZSBpbnRvIHJlYWwgcGF0aCBuYW1lIGluIGZpbGVzeXN0ZW0uCi0g
ICAgICAgICAgICBzY3JpcHRmaWxlID0gc2VsZi50cmFuc2xhdGVfcGF0aChyZXNvdXJjZV9uYW1l
KQotICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKHNjcmlwdGZpbGUpOgotICAgICAg
ICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgaWYgbm90IHNlbGYuaXNfZXhlY3V0
YWJsZShzY3JpcHRmaWxlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAg
ICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRlZiBfZ2V0X2xvZ2dl
cl9mcm9tX2NsYXNzKGMpOgotICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcignJXMuJXMnICUg
KGMuX19tb2R1bGVfXywgYy5fX25hbWVfXykpCi0KLQotZGVmIF9jb25maWd1cmVfbG9nZ2luZyhv
cHRpb25zKToKLSAgICBsb2dnaW5nLmFkZExldmVsTmFtZShjb21tb24uTE9HTEVWRUxfRklORSwg
J0ZJTkUnKQotCi0gICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgIGxvZ2dlci5z
ZXRMZXZlbChsb2dnaW5nLmdldExldmVsTmFtZShvcHRpb25zLmxvZ19sZXZlbC51cHBlcigpKSkK
LSAgICBpZiBvcHRpb25zLmxvZ19maWxlOgotICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5oYW5k
bGVycy5Sb3RhdGluZ0ZpbGVIYW5kbGVyKAotICAgICAgICAgICAgICAgIG9wdGlvbnMubG9nX2Zp
bGUsICdhJywgb3B0aW9ucy5sb2dfbWF4LCBvcHRpb25zLmxvZ19jb3VudCkKLSAgICBlbHNlOgot
ICAgICAgICBoYW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKCkKLSAgICBmb3JtYXR0ZXIg
PSBsb2dnaW5nLkZvcm1hdHRlcigKLSAgICAgICAgICAgICdbJShhc2N0aW1lKXNdIFslKGxldmVs
bmFtZSlzXSAlKG5hbWUpczogJShtZXNzYWdlKXMnKQotICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVy
KGZvcm1hdHRlcikKLSAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQotCi0gICAgZGVmbGF0
ZV9sb2dfbGV2ZWxfbmFtZSA9IGxvZ2dpbmcuZ2V0TGV2ZWxOYW1lKAotICAgICAgICBvcHRpb25z
LmRlZmxhdGVfbG9nX2xldmVsLnVwcGVyKCkpCi0gICAgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1
dGlsLl9EZWZsYXRlcikuc2V0TGV2ZWwoCi0gICAgICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUp
Ci0gICAgX2dldF9sb2dnZXJfZnJvbV9jbGFzcyh1dGlsLl9JbmZsYXRlcikuc2V0TGV2ZWwoCi0g
ICAgICAgIGRlZmxhdGVfbG9nX2xldmVsX25hbWUpCi0KLQotZGVmIF9idWlsZF9vcHRpb25fcGFy
c2VyKCk6Ci0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLQotICAgIHBhcnNl
ci5hZGRfb3B0aW9uKCctLWNvbmZpZycsIGRlc3Q9J2NvbmZpZ19maWxlJywgdHlwZT0nc3RyaW5n
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAg
ICAgICAgaGVscD0oJ1BhdGggdG8gY29uZmlndXJhdGlvbiBmaWxlLiBTZWUgdGhlIGZpbGUgY29t
bWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0IHRoZSB0b3Agb2YgdGhpcyBm
aWxlIGZvciB0aGUgY29uZmlndXJhdGlvbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2ZpbGUgZm9ybWF0JykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1IJywgJy0tc2VydmVyLWhv
c3QnLCAnLS1zZXJ2ZXJfaG9zdCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0nc2VydmVy
X2hvc3QnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0nc2VydmVyIGhvc3RuYW1lIHRvIGxpc3RlbiB0bycpCi0gICAgcGFyc2Vy
LmFkZF9vcHRpb24oJy1WJywgJy0tdmFsaWRhdGlvbi1ob3N0JywgJy0tdmFsaWRhdGlvbl9ob3N0
JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2YWxpZGF0aW9uX2hvc3QnLAotICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSdzZXJ2ZXIgaG9zdG5hbWUgdG8gdmFsaWRhdGUgaW4gYWJzb2x1dGUgcGF0aC4nKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctcCcsICctLXBvcnQnLCBkZXN0PSdwb3J0JywgdHlwZT0naW50JywK
LSAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PWNvbW1vbi5ERUZBVUxUX1dFQl9TT0NLRVRf
UE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdwb3J0IHRvIGxpc3RlbiB0bycpCi0g
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1QJywgJy0tdmFsaWRhdGlvbi1wb3J0JywgJy0tdmFsaWRh
dGlvbl9wb3J0JywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd2YWxpZGF0aW9uX3BvcnQn
LCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgcG9ydCB0byB2YWxpZGF0ZSBpbiBhYnNvbHV0
ZSBwYXRoLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy13JywgJy0td2Vic29jay1oYW5kbGVy
cycsICctLXdlYnNvY2tfaGFuZGxlcnMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dl
YnNvY2tfaGFuZGxlcnMnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jy4nLAotICAg
ICAgICAgICAgICAgICAgICAgIGhlbHA9KCdUaGUgcm9vdCBkaXJlY3Rvcnkgb2YgV2ViU29ja2V0
IGhhbmRsZXIgZmlsZXMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSWYgdGhlIHBh
dGggaXMgcmVsYXRpdmUsIC0tZG9jdW1lbnQtcm9vdCBpcyB1c2VkICcKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnYXMgdGhlIGJhc2UuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1t
JywgJy0td2Vic29jay1oYW5kbGVycy1tYXAtZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAg
Jy0td2Vic29ja19oYW5kbGVyc19tYXBfZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVm
YXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdXZWJTb2NrZXQgaGFuZGxl
cnMgbWFwIGZpbGUuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnRWFjaCBsaW5lIGNv
bnNpc3RzIG9mIGFsaWFzX3Jlc291cmNlX3BhdGggYW5kICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcy4nKSkK
LSAgICBwYXJzZXIuYWRkX29wdGlvbignLXMnLCAnLS1zY2FuLWRpcicsICctLXNjYW5fZGlyJywg
ZGVzdD0nc2Nhbl9kaXInLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgICAgICBoZWxwPSgnTXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAtLXdl
YnNvY2staGFuZGxlcnMuICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnT25seSBoYW5k
bGVycyB1bmRlciB0aGlzIGRpcmVjdG9yeSBhcmUgc2Nhbm5lZCAnCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2FuZCByZWdpc3RlcmVkIHRvIHRoZSBzZXJ2ZXIuICcKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnVXNlZnVsIGZvciBzYXZpbmcgc2NhbiB0aW1lIHdoZW4gdGhlIGhh
bmRsZXIgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyb290IGRpcmVjdG9yeSBjb250
YWlucyBsb3RzIG9mIGZpbGVzIHRoYXQgYXJlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnbm90IGhhbmRsZXIgZmlsZSBvciBhcmUgaGFuZGxlciBmaWxlcyBidXQgeW91ICcKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAnZG9uXCd0IHdhbnQgdGhlbSB0byBiZSByZWdpc3RlcmVk
LiAnKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1hbGxvdy1oYW5kbGVycy1vdXRzaWRlLXJv
b3QtZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICAnLS1hbGxvd19oYW5kbGVyc19vdXRzaWRl
X3Jvb3RfZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdhbGxvd19oYW5kbGVyc19v
dXRzaWRlX3Jvb3RfZGlyJywKLSAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3Ry
dWUnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgaGVscD0oJ1NjYW5zIFdlYlNvY2tldCBoYW5kbGVycyBldmVuIGlmIHRoZWlyIGNh
bm9uaWNhbCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhdGggaXMgbm90IHVuZGVy
IC0td2Vic29jay1oYW5kbGVycy4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLWQnLCAnLS1k
b2N1bWVudC1yb290JywgJy0tZG9jdW1lbnRfcm9vdCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ZGVzdD0nZG9jdW1lbnRfcm9vdCcsIGRlZmF1bHQ9Jy4nLAotICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J0RvY3VtZW50IHJvb3QgZGlyZWN0b3J5LicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24o
Jy14JywgJy0tY2dpLXBhdGhzJywgJy0tY2dpX3BhdGhzJywgZGVzdD0nY2dpX3BhdGhzJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
aGVscD0oJ0NHSSBwYXRocyByZWxhdGl2ZSB0byBkb2N1bWVudF9yb290LicKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAnQ29tbWEtc2VwYXJhdGVkLiAoZS5nIC14IC9jZ2ksL2h0YmluKSAn
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzIHVuZGVyIGRvY3VtZW50X3Jvb3Qv
Y2dpX3BhdGggYXJlIGhhbmRsZWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcyBD
R0kgcHJvZ3JhbXMuIE11c3QgYmUgZXhlY3V0YWJsZS4nKSkKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLXQnLCAnLS10bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8p
JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtbW9kdWxlJywgJy0tdGxzX21vZHVsZScs
IGRlc3Q9J3Rsc19tb2R1bGUnLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Nob2ljZScs
Ci0gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcyA9IFtfVExTX0JZX1NUQU5EQVJEX01PRFVM
RSwgX1RMU19CWV9QWU9QRU5TU0xdLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1VzZSBz
c2wgbW9kdWxlIGlmICIlcyIgaXMgc3BlY2lmaWVkLiAnCi0gICAgICAgICAgICAgICAgICAgICAg
J1VzZSBweU9wZW5TU0wgbW9kdWxlIGlmICIlcyIgaXMgc3BlY2lmaWVkJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgKF9UTFNfQllfU1RBTkRBUkRfTU9EVUxFLCBfVExTX0JZX1BZT1BFTlNTTCkp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1rJywgJy0tcHJpdmF0ZS1rZXknLCAnLS1wcml2YXRl
X2tleScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVzdD0ncHJpdmF0ZV9rZXknLAotICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J1RMUyBwcml2YXRlIGtleSBmaWxlLicp
Ci0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1jJywgJy0tY2VydGlmaWNhdGUnLCBkZXN0PSdjZXJ0
aWZpY2F0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIGNl
cnRpZmljYXRlIGZpbGUuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50LWF1
dGgnLCBkZXN0PSd0bHNfY2xpZW50X2F1dGgnLAotICAgICAgICAgICAgICAgICAgICAgIGFjdGlv
bj0nc3RvcmVfdHJ1ZScsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgaGVs
cD0nUmVxdWVzdHMgVExTIGNsaWVudCBhdXRoIG9uIGV2ZXJ5IGNvbm5lY3Rpb24uJykKLSAgICBw
YXJzZXIuYWRkX29wdGlvbignLS10bHMtY2xpZW50LWNlcnQtb3B0aW9uYWwnLAotICAgICAgICAg
ICAgICAgICAgICAgIGRlc3Q9J3Rsc19jbGllbnRfY2VydF9vcHRpb25hbCcsCi0gICAgICAgICAg
ICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSgnTWFrZXMgY2xpZW50IGNlcnRpZmljYXRlIG9wdGlvbmFsIGV2
ZW4gdGhvdWdoICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVExTIGNsaWVudCBhdXRo
IGlzIGVuYWJsZWQuJykpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tdGxzLWNsaWVudC1jYScs
IGRlc3Q9J3Rsc19jbGllbnRfY2EnLCBkZWZhdWx0PScnLAotICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9KCdTcGVjaWZpZXMgYSBwZW0gZmlsZSB3aGljaCBjb250YWlucyBhIHNldCBvZiAnCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbmNhdGVuYXRlZCBDQSBjZXJ0aWZpY2F0ZXMg
d2hpY2ggYXJlIHVzZWQgdG8gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWxpZGF0
ZSBjZXJ0aWZpY2F0ZXMgcGFzc2VkIGZyb20gY2xpZW50cycpKQotICAgIHBhcnNlci5hZGRfb3B0
aW9uKCctLWJhc2ljLWF1dGgnLCBkZXN0PSd1c2VfYmFzaWNfYXV0aCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSdSZXF1aXJlcyBCYXNpYyBhdXRoZW50aWNhdGlvbi4nKQotICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctLWJhc2ljLWF1dGgtY3JlZGVudGlhbCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nYmFzaWNfYXV0aF9jcmVkZW50aWFsJywgZGVmYXVsdD0ndGVzdDp0ZXN0
JywKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdTcGVjaWZpZXMgdGhlIGNyZWRlbnRpYWwg
b2YgYmFzaWMgYXV0aGVudGljYXRpb24gJwotICAgICAgICAgICAgICAgICAgICAgICdieSB1c2Vy
bmFtZTpwYXNzd29yZCBwYWlyIChlLmcuIHRlc3Q6dGVzdCkuJykKLSAgICBwYXJzZXIuYWRkX29w
dGlvbignLWwnLCAnLS1sb2ctZmlsZScsICctLWxvZ19maWxlJywgZGVzdD0nbG9nX2ZpbGUnLAot
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9JycsIGhlbHA9J0xvZyBmaWxlLicpCi0gICAg
IyBDdXN0b20gbG9nIGxldmVsOgotICAgICMgLSBGSU5FOiBQcmludHMgc3RhdHVzIG9mIGVhY2gg
ZnJhbWUgcHJvY2Vzc2luZyBzdGVwCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWxldmVs
JywgJy0tbG9nX2xldmVsJywgdHlwZT0nY2hvaWNlJywKLSAgICAgICAgICAgICAgICAgICAgICBk
ZXN0PSdsb2dfbGV2ZWwnLCBkZWZhdWx0PSd3YXJuJywKLSAgICAgICAgICAgICAgICAgICAgICBj
aG9pY2VzPVsnZmluZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlYnVnJywg
J2luZm8nLCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAnY3JpdGljYWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cg
bGV2ZWwuJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1kZWZsYXRlLWxvZy1sZXZlbCcsICct
LWRlZmxhdGVfbG9nX2xldmVsJywKLSAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdjaG9pY2Un
LAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2RlZmxhdGVfbG9nX2xldmVsJywgZGVmYXVs
dD0nd2FybicsCi0gICAgICAgICAgICAgICAgICAgICAgY2hvaWNlcz1bJ2RlYnVnJywgJ2luZm8n
LCAnd2FybmluZycsICd3YXJuJywgJ2Vycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAnY3JpdGljYWwnXSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwg
Zm9yIF9EZWZsYXRlciBhbmQgX0luZmxhdGVyLicpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy0t
dGhyZWFkLW1vbml0b3ItaW50ZXJ2YWwtaW4tc2VjJywKLSAgICAgICAgICAgICAgICAgICAgICAn
LS10aHJlYWRfbW9uaXRvcl9pbnRlcnZhbF9pbl9zZWMnLAotICAgICAgICAgICAgICAgICAgICAg
IGRlc3Q9J3RocmVhZF9tb25pdG9yX2ludGVydmFsX2luX3NlYycsCi0gICAgICAgICAgICAgICAg
ICAgICAgdHlwZT0naW50JywgZGVmYXVsdD0tMSwKLSAgICAgICAgICAgICAgICAgICAgICBoZWxw
PSgnSWYgcG9zaXRpdmUgaW50ZWdlciBpcyBzcGVjaWZpZWQsIHJ1biBhIHRocmVhZCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ21vbml0b3IgdG8gc2hvdyB0aGUgc3RhdHVzIG9mIHNl
cnZlciB0aHJlYWRzICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAncGVyaW9kaWNhbGx5
IGluIHRoZSBzcGVjaWZpZWQgaW50ZXZhbCBpbiAnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ3NlY29uZC4gSWYgbm9uLXBvc2l0aXZlIGludGVnZXIgaXMgc3BlY2lmaWVkLCAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc2FibGUgdGhlIHRocmVhZCBtb25pdG9yLicpKQot
ICAgIHBhcnNlci5hZGRfb3B0aW9uKCctLWxvZy1tYXgnLCAnLS1sb2dfbWF4JywgZGVzdD0nbG9n
X21heCcsIHR5cGU9J2ludCcsCi0gICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1fREVGQVVM
VF9MT0dfTUFYX0JZVEVTLAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0xvZyBtYXhpbXVt
IGJ5dGVzJykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1sb2ctY291bnQnLCAnLS1sb2dfY291
bnQnLCBkZXN0PSdsb2dfY291bnQnLAotICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2ludCcs
IGRlZmF1bHQ9X0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCwKLSAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdMb2cgYmFja3VwIGNvdW50JykKLSAgICBwYXJzZXIuYWRkX29wdGlvbignLS1hbGxv
dy1kcmFmdDc1JywgZGVzdD0nYWxsb3dfZHJhZnQ3NScsCi0gICAgICAgICAgICAgICAgICAgICAg
YWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdPYnNvbGV0ZSBvcHRpb24uIElnbm9yZWQuJykKLSAgICBwYXJzZXIuYWRkX29wdGlv
bignLS1zdHJpY3QnLCBkZXN0PSdzdHJpY3QnLCBhY3Rpb249J3N0b3JlX3RydWUnLAotICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J09ic29sZXRlIG9wdGlvbi4gSWdu
b3JlZC4nKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKCctcScsICctLXF1ZXVlJywgZGVzdD0ncmVx
dWVzdF9xdWV1ZV9zaXplJywgdHlwZT0naW50JywKLSAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PV9ERUZBVUxUX1JFUVVFU1RfUVVFVUVfU0laRSwKLSAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSdyZXF1ZXN0IHF1ZXVlIHNpemUnKQotCi0gICAgcmV0dXJuIHBhcnNlcgotCi0KLWNsYXNz
IFRocmVhZE1vbml0b3IodGhyZWFkaW5nLlRocmVhZCk6Ci0gICAgZGFlbW9uID0gVHJ1ZQotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYsIGludGVydmFsX2luX3NlYyk6Ci0gICAgICAgIHRocmVhZGlu
Zy5UaHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0nVGhyZWFkTW9uaXRvcicpCi0KLSAgICAgICAg
c2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRfY2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2Vs
Zi5faW50ZXJ2YWxfaW5fc2VjID0gaW50ZXJ2YWxfaW5fc2VjCi0KLSAgICBkZWYgcnVuKHNlbGYp
OgotICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgdGhyZWFkX25hbWVfbGlzdCA9IFtd
Ci0gICAgICAgICAgICBmb3IgdGhyZWFkIGluIHRocmVhZGluZy5lbnVtZXJhdGUoKToKLSAgICAg
ICAgICAgICAgICB0aHJlYWRfbmFtZV9saXN0LmFwcGVuZCh0aHJlYWQubmFtZSkKLSAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5pbmZvKAotICAgICAgICAgICAgICAgICIlZCBhY3RpdmUgdGhyZWFk
czogJXMiLAotICAgICAgICAgICAgICAgIHRocmVhZGluZy5hY3RpdmVfY291bnQoKSwKLSAgICAg
ICAgICAgICAgICAnLCAnLmpvaW4odGhyZWFkX25hbWVfbGlzdCkpCi0gICAgICAgICAgICB0aW1l
LnNsZWVwKHNlbGYuX2ludGVydmFsX2luX3NlYykKLQotCi1kZWYgX3BhcnNlX2FyZ3NfYW5kX2Nv
bmZpZyhhcmdzKToKLSAgICBwYXJzZXIgPSBfYnVpbGRfb3B0aW9uX3BhcnNlcigpCi0KLSAgICAj
IEZpcnN0LCBwYXJzZSBvcHRpb25zIHdpdGhvdXQgY29uZmlndXJhdGlvbiBmaWxlLgotICAgIHRl
bXBvcmFyeV9vcHRpb25zLCB0ZW1wb3JhcnlfYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKGFyZ3M9
YXJncykKLSAgICBpZiB0ZW1wb3JhcnlfYXJnczoKLSAgICAgICAgbG9nZ2luZy5jcml0aWNhbCgK
LSAgICAgICAgICAgICdVbnJlY29nbml6ZWQgcG9zaXRpb25hbCBhcmd1bWVudHM6ICVyJywgdGVt
cG9yYXJ5X2FyZ3MpCi0gICAgICAgIHN5cy5leGl0KDEpCi0KLSAgICBpZiB0ZW1wb3Jhcnlfb3B0
aW9ucy5jb25maWdfZmlsZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29uZmlnX2ZwID0g
b3Blbih0ZW1wb3Jhcnlfb3B0aW9ucy5jb25maWdfZmlsZSwgJ3InKQotICAgICAgICBleGNlcHQg
SU9FcnJvciwgZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCi0gICAgICAgICAgICAg
ICAgJ0ZhaWxlZCB0byBvcGVuIGNvbmZpZ3VyYXRpb24gZmlsZSAlcjogJXInLAotICAgICAgICAg
ICAgICAgIHRlbXBvcmFyeV9vcHRpb25zLmNvbmZpZ19maWxlLAotICAgICAgICAgICAgICAgIGUp
Ci0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIGNvbmZpZ19wYXJzZXIgPSBDb25m
aWdQYXJzZXIuU2FmZUNvbmZpZ1BhcnNlcigpCi0gICAgICAgIGNvbmZpZ19wYXJzZXIucmVhZGZw
KGNvbmZpZ19mcCkKLSAgICAgICAgY29uZmlnX2ZwLmNsb3NlKCkKLQotICAgICAgICBhcmdzX2Zy
b21fY29uZmlnID0gW10KLSAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIGNvbmZpZ19wYXJzZXIu
aXRlbXMoJ3B5d2Vic29ja2V0Jyk6Ci0gICAgICAgICAgICBhcmdzX2Zyb21fY29uZmlnLmFwcGVu
ZCgnLS0nICsgbmFtZSkKLSAgICAgICAgICAgIGFyZ3NfZnJvbV9jb25maWcuYXBwZW5kKHZhbHVl
KQotICAgICAgICBpZiBhcmdzIGlzIE5vbmU6Ci0gICAgICAgICAgICBhcmdzID0gYXJnc19mcm9t
X2NvbmZpZwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXJncyA9IGFyZ3NfZnJvbV9jb25m
aWcgKyBhcmdzCi0gICAgICAgIHJldHVybiBwYXJzZXIucGFyc2VfYXJncyhhcmdzPWFyZ3MpCi0g
ICAgZWxzZToKLSAgICAgICAgcmV0dXJuIHRlbXBvcmFyeV9vcHRpb25zLCB0ZW1wb3JhcnlfYXJn
cwotCi0KLWRlZiBfbWFpbihhcmdzPU5vbmUpOgotICAgICIiIllvdSBjYW4gY2FsbCB0aGlzIGZ1
bmN0aW9uIGZyb20geW91ciBvd24gcHJvZ3JhbSwgYnV0IHBsZWFzZSBub3RlIHRoYXQKLSAgICB0
aGlzIGZ1bmN0aW9uIGhhcyBzb21lIHNpZGUtZWZmZWN0cyB0aGF0IG1pZ2h0IGFmZmVjdCB5b3Vy
IHByb2dyYW0uIEZvcgotICAgIGV4YW1wbGUsIHV0aWwud3JhcF9wb3BlbjNfZm9yX3dpbiB1c2Ug
aW4gdGhpcyBtZXRob2QgcmVwbGFjZXMgaW1wbGVtZW50YXRpb24KLSAgICBvZiBvcy5wb3BlbjMu
Ci0gICAgIiIiCi0KLSAgICBvcHRpb25zLCBhcmdzID0gX3BhcnNlX2FyZ3NfYW5kX2NvbmZpZyhh
cmdzPWFyZ3MpCi0KLSAgICBvcy5jaGRpcihvcHRpb25zLmRvY3VtZW50X3Jvb3QpCi0KLSAgICBf
Y29uZmlndXJlX2xvZ2dpbmcob3B0aW9ucykKLQotICAgIGlmIG9wdGlvbnMuYWxsb3dfZHJhZnQ3
NToKLSAgICAgICAgbG9nZ2luZy53YXJuaW5nKCctLWFsbG93X2RyYWZ0NzUgb3B0aW9uIGlzIG9i
c29sZXRlLicpCi0KLSAgICBpZiBvcHRpb25zLnN0cmljdDoKLSAgICAgICAgbG9nZ2luZy53YXJu
aW5nKCctLXN0cmljdCBvcHRpb24gaXMgb2Jzb2xldGUuJykKLQotICAgICMgVE9ETyh0eW9zaGlu
byk6IENsZWFuIHVwIGluaXRpYWxpemF0aW9uIG9mIENHSSByZWxhdGVkIHZhbHVlcy4gTW92ZSBz
b21lCi0gICAgIyBvZiBjb2RlIGhlcmUgdG8gV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgY2xhc3Mg
aWYgaXQncyBiZXR0ZXIuCi0gICAgb3B0aW9ucy5jZ2lfZGlyZWN0b3JpZXMgPSBbXQotICAgIG9w
dGlvbnMuaXNfZXhlY3V0YWJsZV9tZXRob2QgPSBOb25lCi0gICAgaWYgb3B0aW9ucy5jZ2lfcGF0
aHM6Ci0gICAgICAgIG9wdGlvbnMuY2dpX2RpcmVjdG9yaWVzID0gb3B0aW9ucy5jZ2lfcGF0aHMu
c3BsaXQoJywnKQotICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdjeWd3aW4nLCAnd2luMzIn
KToKLSAgICAgICAgICAgIGN5Z3dpbl9wYXRoID0gTm9uZQotICAgICAgICAgICAgIyBGb3IgV2lu
MzIgUHl0aG9uLCBpdCBpcyBleHBlY3RlZCB0aGF0IENZR1dJTl9QQVRICi0gICAgICAgICAgICAj
IGlzIHNldCB0byBhIGRpcmVjdG9yeSBvZiBjeWd3aW4gYmluYXJpZXMuCi0gICAgICAgICAgICAj
IEZvciBleGFtcGxlLCB3ZWJzb2NrZXRfc2VydmVyLnB5IGluIENocm9taXVtIHNldHMgQ1lHV0lO
X1BBVEggdG8KLSAgICAgICAgICAgICMgZnVsbCBwYXRoIG9mIHRoaXJkX3BhcnR5L2N5Z3dpbi9i
aW4uCi0gICAgICAgICAgICBpZiAnQ1lHV0lOX1BBVEgnIGluIG9zLmVudmlyb246Ci0gICAgICAg
ICAgICAgICAgY3lnd2luX3BhdGggPSBvcy5lbnZpcm9uWydDWUdXSU5fUEFUSCddCi0gICAgICAg
ICAgICB1dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpCi0KLSAgICAgICAgICAg
IGRlZiBfX2NoZWNrX3NjcmlwdChzY3JpcHRwYXRoKToKLSAgICAgICAgICAgICAgICByZXR1cm4g
dXRpbC5nZXRfc2NyaXB0X2ludGVycChzY3JpcHRwYXRoLCBjeWd3aW5fcGF0aCkKLQotICAgICAg
ICAgICAgb3B0aW9ucy5pc19leGVjdXRhYmxlX21ldGhvZCA9IF9fY2hlY2tfc2NyaXB0Ci0KLSAg
ICBpZiBvcHRpb25zLnVzZV90bHM6Ci0gICAgICAgIGlmIG9wdGlvbnMudGxzX21vZHVsZSBpcyBO
b25lOgotICAgICAgICAgICAgaWYgX2ltcG9ydF9zc2woKToKLSAgICAgICAgICAgICAgICBvcHRp
b25zLnRsc19tb2R1bGUgPSBfVExTX0JZX1NUQU5EQVJEX01PRFVMRQotICAgICAgICAgICAgICAg
IGxvZ2dpbmcuZGVidWcoJ1VzaW5nIHNzbCBtb2R1bGUnKQotICAgICAgICAgICAgZWxpZiBfaW1w
b3J0X3B5b3BlbnNzbCgpOgotICAgICAgICAgICAgICAgIG9wdGlvbnMudGxzX21vZHVsZSA9IF9U
TFNfQllfUFlPUEVOU1NMCi0gICAgICAgICAgICAgICAgbG9nZ2luZy5kZWJ1ZygnVXNpbmcgcHlP
cGVuU1NMIG1vZHVsZScpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoCi0gICAgICAgICAgICAgICAgICAgICAgICAnVExTIHN1cHBvcnQgcmVxdWly
ZXMgc3NsIG9yIHB5T3BlblNTTCBtb2R1bGUuJykKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgx
KQotICAgICAgICBlbGlmIG9wdGlvbnMudGxzX21vZHVsZSA9PSBfVExTX0JZX1NUQU5EQVJEX01P
RFVMRToKLSAgICAgICAgICAgIGlmIG5vdCBfaW1wb3J0X3NzbCgpOgotICAgICAgICAgICAgICAg
IGxvZ2dpbmcuY3JpdGljYWwoJ3NzbCBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZScpCi0gICAgICAg
ICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZWxpZiBvcHRpb25zLnRsc19tb2R1bGUgPT0g
X1RMU19CWV9QWU9QRU5TU0w6Ci0gICAgICAgICAgICBpZiBub3QgX2ltcG9ydF9weW9wZW5zc2wo
KToKLSAgICAgICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdweU9wZW5TU0wgbW9kdWxlIGlz
IG5vdCBhdmFpbGFibGUnKQotICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBsb2dnaW5nLmNyaXRpY2FsKCdJbnZhbGlkIC0tdGxzLW1vZHVsZSBv
cHRpb246ICVyJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucy50bHNfbW9k
dWxlKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQotICAgICAgICBpZiBub3Qgb3B0aW9ucy5w
cml2YXRlX2tleSBvciBub3Qgb3B0aW9ucy5jZXJ0aWZpY2F0ZToKLSAgICAgICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoCi0gICAgICAgICAgICAgICAgICAgICdUbyB1c2UgVExTLCBzcGVjaWZ5IHBy
aXZhdGVfa2V5IGFuZCBjZXJ0aWZpY2F0ZS4nKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLQot
ICAgICAgICBpZiAob3B0aW9ucy50bHNfY2xpZW50X2NlcnRfb3B0aW9uYWwgYW5kCi0gICAgICAg
ICAgICBub3Qgb3B0aW9ucy50bHNfY2xpZW50X2F1dGgpOgotICAgICAgICAgICAgbG9nZ2luZy5j
cml0aWNhbCgnQ2xpZW50IGF1dGhlbnRpY2F0aW9uIG11c3QgYmUgZW5hYmxlZCB0byAnCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdzcGVjaWZ5IHRsc19jbGllbnRfY2VydF9vcHRpb25h
bCcpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotICAgIGVsc2U6Ci0gICAgICAgIGlmIG9wdGlv
bnMudGxzX21vZHVsZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwo
J1VzZSAtLXRscy1tb2R1bGUgb3B0aW9uIG9ubHkgdG9nZXRoZXIgd2l0aCAnCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICctLXVzZS10bHMgb3B0aW9uLicpCi0gICAgICAgICAgICBzeXMu
ZXhpdCgxKQotCi0gICAgICAgIGlmIG9wdGlvbnMudGxzX2NsaWVudF9hdXRoOgotICAgICAgICAg
ICAgbG9nZ2luZy5jcml0aWNhbCgnVExTIG11c3QgYmUgZW5hYmxlZCBmb3IgY2xpZW50IGF1dGhl
bnRpY2F0aW9uLicpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgICAgIGlmIG9wdGlv
bnMudGxzX2NsaWVudF9jZXJ0X29wdGlvbmFsOgotICAgICAgICAgICAgbG9nZ2luZy5jcml0aWNh
bCgnVExTIG11c3QgYmUgZW5hYmxlZCBmb3IgY2xpZW50IGF1dGhlbnRpY2F0aW9uLicpCi0gICAg
ICAgICAgICBzeXMuZXhpdCgxKQotCi0gICAgaWYgbm90IG9wdGlvbnMuc2Nhbl9kaXI6Ci0gICAg
ICAgIG9wdGlvbnMuc2Nhbl9kaXIgPSBvcHRpb25zLndlYnNvY2tfaGFuZGxlcnMKLQotICAgIGlm
IG9wdGlvbnMudXNlX2Jhc2ljX2F1dGg6Ci0gICAgICAgIG9wdGlvbnMuYmFzaWNfYXV0aF9jcmVk
ZW50aWFsID0gJ0Jhc2ljICcgKyBiYXNlNjQuYjY0ZW5jb2RlKAotICAgICAgICAgICAgb3B0aW9u
cy5iYXNpY19hdXRoX2NyZWRlbnRpYWwpCi0KLSAgICB0cnk6Ci0gICAgICAgIGlmIG9wdGlvbnMu
dGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjID4gMDoKLSAgICAgICAgICAgICMgUnVuIGEg
dGhyZWFkIG1vbml0b3IgdG8gc2hvdyB0aGUgc3RhdHVzIG9mIHNlcnZlciB0aHJlYWRzIGZvcgot
ICAgICAgICAgICAgIyBkZWJ1Z2dpbmcuCi0gICAgICAgICAgICBUaHJlYWRNb25pdG9yKG9wdGlv
bnMudGhyZWFkX21vbml0b3JfaW50ZXJ2YWxfaW5fc2VjKS5zdGFydCgpCi0KLSAgICAgICAgc2Vy
dmVyID0gV2ViU29ja2V0U2VydmVyKG9wdGlvbnMpCi0gICAgICAgIHNlcnZlci5zZXJ2ZV9mb3Jl
dmVyKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICBsb2dnaW5nLmNyaXRpY2Fs
KCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIGUpCi0gICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoJ21v
ZF9weXdlYnNvY2tldDogJXMnICUgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKLSAgICAgICAgc3lz
LmV4aXQoMSkKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIF9tYWluKHN5cy5h
cmd2WzE6XSkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21v
ZF9weXdlYnNvY2tldC9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFt
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGM1MzMyNzk3NDk3YjU4MGUzYjdl
ZmYyZjg4ZDE4OGQ3MDQxZjEzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9zdHJlYW0ucHkKKysrIC9kZXYvbnVs
bApAQCAtMSw1NyArMCwwIEBACi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUgSW5jLgotIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6
Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUaGlzIGZpbGUgZXhw
b3J0cyBwdWJsaWMgc3ltYm9scy4KLSIiIgotCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJl
YW1fYmFzZSBpbXBvcnQgQmFkT3BlcmF0aW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tl
dC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uCi1mcm9t
IG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IEludmFsaWRGcmFtZUV4Y2VwdGlv
bgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBJbnZhbGlkVVRGOEV4
Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9iYXNlIGltcG9ydCBVbnN1cHBv
cnRlZEZyYW1lRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2hpeGllNzUg
aW1wb3J0IFN0cmVhbUhpeGllNzUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBp
bXBvcnQgRnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgU3Ry
ZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IFN0cmVhbU9wdGlv
bnMKLQotIyBUaGVzZSBtZXRob2RzIGFyZSBpbnRlbmRlZCB0byBiZSB1c2VkIGJ5IFdlYlNvY2tl
dCBjbGllbnQgZGV2ZWxvcGVycyB0byBoYXZlCi0jIHRoZWlyIGltcGxlbWVudGF0aW9ucyByZWNl
aXZlIGJyb2tlbiBkYXRhIGluIHRlc3RzLgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9o
eWJpIGltcG9ydCBjcmVhdGVfY2xvc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJl
YW1faHliaSBpbXBvcnQgY3JlYXRlX2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVh
bV9oeWJpIGltcG9ydCBjcmVhdGVfbGVuZ3RoX2hlYWRlcgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
X3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfcGluZ19mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2Nr
ZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfcG9uZ19mcmFtZQotZnJvbSBtb2RfcHl3ZWJz
b2NrZXQuX3N0cmVhbV9oeWJpIGltcG9ydCBjcmVhdGVfYmluYXJ5X2ZyYW1lCi1mcm9tIG1vZF9w
eXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV90ZXh0X2ZyYW1lCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0IGNyZWF0ZV9jbG9zaW5nX2hhbmRzaGFr
ZV9ib2R5Ci0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjI0YWUzOTQyZDdmZTJjZjc3Yjk4ODQ5NWVm
NmUyOGExYmY0OGRjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
NDE2ICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIldlYlNvY2tldCB1dGlsaXRpZXMu
Ci0iIiIKLQotCi1pbXBvcnQgYXJyYXkKLWltcG9ydCBlcnJubwotCi0jIEltcG9ydCBoYXNoIGNs
YXNzZXMgZnJvbSBhIG1vZHVsZSBhdmFpbGFibGUgYW5kIHJlY29tbWVuZGVkIGZvciBlYWNoIFB5
dGhvbgotIyB2ZXJzaW9uIGFuZCByZS1leHBvcnQgdGhvc2Ugc3ltYm9sLiBVc2Ugc2hhIGFuZCBt
ZDUgbW9kdWxlIGluIFB5dGhvbiAyLjQsIGFuZAotIyBoYXNobGliIG1vZHVsZSBpbiBQeXRob24g
Mi42LgotdHJ5OgotICAgIGltcG9ydCBoYXNobGliCi0gICAgbWQ1X2hhc2ggPSBoYXNobGliLm1k
NQotICAgIHNoYTFfaGFzaCA9IGhhc2hsaWIuc2hhMQotZXhjZXB0IEltcG9ydEVycm9yOgotICAg
IGltcG9ydCBtZDUKLSAgICBpbXBvcnQgc2hhCi0gICAgbWQ1X2hhc2ggPSBtZDUubWQ1Ci0gICAg
c2hhMV9oYXNoID0gc2hhLnNoYQotCi1pbXBvcnQgU3RyaW5nSU8KLWltcG9ydCBsb2dnaW5nCi1p
bXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IHNvY2tldAotaW1wb3J0IHRyYWNlYmFjawotaW1w
b3J0IHpsaWIKLQotdHJ5OgotICAgIGZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBmYXN0X21h
c2tpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KLQotZGVmIGdldF9zdGFja190
cmFjZSgpOgotICAgICIiIkdldCB0aGUgY3VycmVudCBzdGFjayB0cmFjZSBhcyBzdHJpbmcuCi0K
LSAgICBUaGlzIGlzIG5lZWRlZCB0byBzdXBwb3J0IFB5dGhvbiAyLjMuCi0gICAgVE9ETzogUmVt
b3ZlIHRoaXMgd2hlbiB3ZSBvbmx5IHN1cHBvcnQgUHl0aG9uIDIuNCBhbmQgYWJvdmUuCi0gICAg
ICAgICAgVXNlIHRyYWNlYmFjay5mb3JtYXRfZXhjIGluc3RlYWQuCi0gICAgIiIiCi0KLSAgICBv
dXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgdHJhY2ViYWNrLnByaW50X2V4YyhmaWxlPW91
dCkKLSAgICByZXR1cm4gb3V0LmdldHZhbHVlKCkKLQotCi1kZWYgcHJlcGVuZF9tZXNzYWdlX3Rv
X2V4Y2VwdGlvbihtZXNzYWdlLCBleGMpOgotICAgICIiIlByZXBlbmQgbWVzc2FnZSB0byB0aGUg
ZXhjZXB0aW9uLiIiIgotCi0gICAgZXhjLmFyZ3MgPSAobWVzc2FnZSArIHN0cihleGMpLCkKLSAg
ICByZXR1cm4KLQotCi1kZWYgX190cmFuc2xhdGVfaW50ZXJwKGludGVycCwgY3lnd2luX3BhdGgp
OgotICAgICIiIlRyYW5zbGF0ZSBpbnRlcnAgcHJvZ3JhbSBwYXRoIGZvciBXaW4zMiBweXRob24g
dG8gcnVuIGN5Z3dpbiBwcm9ncmFtCi0gICAgKGUuZy4gcGVybCkuICBOb3RlIHRoYXQgaXQgZG9l
c24ndCBzdXBwb3J0IHBhdGggdGhhdCBjb250YWlucyBzcGFjZSwKLSAgICB3aGljaCBpcyB0eXBp
Y2FsbHkgdHJ1ZSBmb3IgVW5peCwgd2hlcmUgIyEtc2NyaXB0IGlzIHdyaXR0ZW4uCi0gICAgRm9y
IFdpbjMyIHB5dGhvbiwgY3lnd2luX3BhdGggaXMgYSBkaXJlY3Rvcnkgb2YgY3lnd2luIGJpbmFy
aWVzLgotCi0gICAgQXJnczoKLSAgICAgIGludGVycDogaW50ZXJwIGNvbW1hbmQgbGluZQotICAg
ICAgY3lnd2luX3BhdGg6IGRpcmVjdG9yeSBuYW1lIG9mIGN5Z3dpbiBiaW5hcnksIG9yIE5vbmUK
LSAgICBSZXR1cm5zOgotICAgICAgdHJhbnNsYXRlZCBpbnRlcnAgY29tbWFuZCBsaW5lLgotICAg
ICIiIgotICAgIGlmIG5vdCBjeWd3aW5fcGF0aDoKLSAgICAgICAgcmV0dXJuIGludGVycAotICAg
IG0gPSByZS5tYXRjaCgnXlteIF0qLyhbXiBdKykoIC4qKT8nLCBpbnRlcnApCi0gICAgaWYgbToK
LSAgICAgICAgY21kID0gb3MucGF0aC5qb2luKGN5Z3dpbl9wYXRoLCBtLmdyb3VwKDEpKQotICAg
ICAgICByZXR1cm4gY21kICsgbS5ncm91cCgyKQotICAgIHJldHVybiBpbnRlcnAKLQotCi1kZWYg
Z2V0X3NjcmlwdF9pbnRlcnAoc2NyaXB0X3BhdGgsIGN5Z3dpbl9wYXRoPU5vbmUpOgotICAgICIi
IkdldHMgIyEtaW50ZXJwcmV0ZXIgY29tbWFuZCBsaW5lIGZyb20gdGhlIHNjcmlwdC4KLQotICAg
IEl0IGFsc28gZml4ZXMgY29tbWFuZCBwYXRoLiAgV2hlbiBDeWd3aW4gUHl0aG9uIGlzIHVzZWQs
IGUuZy4gaW4gV2ViS2l0LAotICAgIGl0IGNvdWxkIHJ1biAiL3Vzci9iaW4vcGVybCAtd1QgaGVs
bG8ucGwiLgotICAgIFdoZW4gV2luMzIgUHl0aG9uIGlzIHVzZWQsIGUuZy4gaW4gQ2hyb21pdW0s
IGl0IGNvdWxkbid0LiAgU28sIGZpeAotICAgICIvdXNyL2Jpbi9wZXJsIiB0byAiPGN5Z3dpbl9w
YXRoPlxwZXJsLmV4ZSIuCi0KLSAgICBBcmdzOgotICAgICAgc2NyaXB0X3BhdGg6IHBhdGhuYW1l
IG9mIHRoZSBzY3JpcHQKLSAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3RvcnkgbmFtZSBvZiBjeWd3
aW4gYmluYXJ5LCBvciBOb25lCi0gICAgUmV0dXJuczoKLSAgICAgICMhLWludGVycHJldGVyIGNv
bW1hbmQgbGluZSwgb3IgTm9uZSBpZiBpdCBpcyBub3QgIyEtc2NyaXB0LgotICAgICIiIgotICAg
IGZwID0gb3BlbihzY3JpcHRfcGF0aCkKLSAgICBsaW5lID0gZnAucmVhZGxpbmUoKQotICAgIGZw
LmNsb3NlKCkKLSAgICBtID0gcmUubWF0Y2goJ14jISguKiknLCBsaW5lKQotICAgIGlmIG06Ci0g
ICAgICAgIHJldHVybiBfX3RyYW5zbGF0ZV9pbnRlcnAobS5ncm91cCgxKSwgY3lnd2luX3BhdGgp
Ci0gICAgcmV0dXJuIE5vbmUKLQotCi1kZWYgd3JhcF9wb3BlbjNfZm9yX3dpbihjeWd3aW5fcGF0
aCk6Ci0gICAgIiIiV3JhcCBwb3BlbjMgdG8gc3VwcG9ydCAjIS1zY3JpcHQgb24gV2luZG93cy4K
LQotICAgIEFyZ3M6Ci0gICAgICBjeWd3aW5fcGF0aDogIHBhdGggZm9yIGN5Z3dpbiBiaW5hcnkg
aWYgY29tbWFuZCBwYXRoIGlzIG5lZWRlZCB0byBiZQotICAgICAgICAgICAgICAgICAgICB0cmFu
c2xhdGVkLiAgTm9uZSBpZiBubyB0cmFuc2xhdGlvbiByZXF1aXJlZC4KLSAgICAiIiIKLQotICAg
IF9fb3JpZ19wb3BlbjMgPSBvcy5wb3BlbjMKLQotICAgIGRlZiBfX3dyYXBfcG9wZW4zKGNtZCwg
bW9kZT0ndCcsIGJ1ZnNpemU9LTEpOgotICAgICAgICBjbWRsaW5lID0gY21kLnNwbGl0KCcgJykK
LSAgICAgICAgaW50ZXJwID0gZ2V0X3NjcmlwdF9pbnRlcnAoY21kbGluZVswXSwgY3lnd2luX3Bh
dGgpCi0gICAgICAgIGlmIGludGVycDoKLSAgICAgICAgICAgIGNtZCA9IGludGVycCArICcgJyAr
IGNtZAotICAgICAgICByZXR1cm4gX19vcmlnX3BvcGVuMyhjbWQsIG1vZGUsIGJ1ZnNpemUpCi0K
LSAgICBvcy5wb3BlbjMgPSBfX3dyYXBfcG9wZW4zCi0KLQotZGVmIGhleGlmeShzKToKLSAgICBy
ZXR1cm4gJyAnLmpvaW4obWFwKGxhbWJkYSB4OiAnJTAyeCcgJSBvcmQoeCksIHMpKQotCi0KLWRl
ZiBnZXRfY2xhc3NfbG9nZ2VyKG8pOgotICAgIHJldHVybiBsb2dnaW5nLmdldExvZ2dlcigKLSAg
ICAgICAgJyVzLiVzJyAlIChvLl9fY2xhc3NfXy5fX21vZHVsZV9fLCBvLl9fY2xhc3NfXy5fX25h
bWVfXykpCi0KLQotY2xhc3MgTm9vcE1hc2tlcihvYmplY3QpOgotICAgICIiIkEgbWFza2luZyBv
YmplY3QgdGhhdCBoYXMgdGhlIHNhbWUgaW50ZXJmYWNlIGFzIFJlcGVhdGVkWG9yTWFza2VyIGJ1
dAotICAgIGp1c3QgcmV0dXJucyB0aGUgc3RyaW5nIHBhc3NlZCBpbiB3aXRob3V0IG1ha2luZyBh
bnkgY2hhbmdlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBw
YXNzCi0KLSAgICBkZWYgbWFzayhzZWxmLCBzKToKLSAgICAgICAgcmV0dXJuIHMKLQotCi1jbGFz
cyBSZXBlYXRlZFhvck1hc2tlcihvYmplY3QpOgotICAgICIiIkEgbWFza2luZyBvYmplY3QgdGhh
dCBhcHBsaWVzIFhPUiBvbiB0aGUgc3RyaW5nIGdpdmVuIHRvIG1hc2sgbWV0aG9kCi0gICAgd2l0
aCB0aGUgbWFza2luZyBieXRlcyBnaXZlbiB0byB0aGUgY29uc3RydWN0b3IgcmVwZWF0ZWRseS4g
VGhpcyBvYmplY3QKLSAgICByZW1lbWJlcnMgdGhlIHBvc2l0aW9uIGluIHRoZSBtYXNraW5nIGJ5
dGVzIHRoZSBsYXN0IG1hc2sgbWV0aG9kIGNhbGwKLSAgICBlbmRlZCBhbmQgcmVzdW1lcyBmcm9t
IHRoYXQgcG9pbnQgb24gdGhlIG5leHQgbWFzayBtZXRob2QgY2FsbC4KLSAgICAiIiIKLQotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtYXNraW5nX2tleSk6Ci0gICAgICAgIHNlbGYuX21hc2tpbmdf
a2V5ID0gbWFza2luZ19rZXkKLSAgICAgICAgc2VsZi5fbWFza2luZ19rZXlfaW5kZXggPSAwCi0K
LSAgICBkZWYgX21hc2tfdXNpbmdfc3dpZyhzZWxmLCBzKToKLSAgICAgICAgbWFza2VkX2RhdGEg
PSBmYXN0X21hc2tpbmcubWFzaygKLSAgICAgICAgICAgICAgICBzLCBzZWxmLl9tYXNraW5nX2tl
eSwgc2VsZi5fbWFza2luZ19rZXlfaW5kZXgpCi0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2lu
ZGV4ID0gKAotICAgICAgICAgICAgICAgIChzZWxmLl9tYXNraW5nX2tleV9pbmRleCArIGxlbihz
KSkgJSBsZW4oc2VsZi5fbWFza2luZ19rZXkpKQotICAgICAgICByZXR1cm4gbWFza2VkX2RhdGEK
LQotICAgIGRlZiBfbWFza191c2luZ19hcnJheShzZWxmLCBzKToKLSAgICAgICAgcmVzdWx0ID0g
YXJyYXkuYXJyYXkoJ0InKQotICAgICAgICByZXN1bHQuZnJvbXN0cmluZyhzKQotCi0gICAgICAg
ICMgVXNlIHRlbXBvcmFyeSBsb2NhbCB2YXJpYWJsZXMgdG8gZWxpbWluYXRlIHRoZSBjb3N0IHRv
IGFjY2VzcwotICAgICAgICAjIGF0dHJpYnV0ZXMKLSAgICAgICAgbWFza2luZ19rZXkgPSBtYXAo
b3JkLCBzZWxmLl9tYXNraW5nX2tleSkKLSAgICAgICAgbWFza2luZ19rZXlfc2l6ZSA9IGxlbiht
YXNraW5nX2tleSkKLSAgICAgICAgbWFza2luZ19rZXlfaW5kZXggPSBzZWxmLl9tYXNraW5nX2tl
eV9pbmRleAotCi0gICAgICAgIGZvciBpIGluIHhyYW5nZShsZW4ocmVzdWx0KSk6Ci0gICAgICAg
ICAgICByZXN1bHRbaV0gXj0gbWFza2luZ19rZXlbbWFza2luZ19rZXlfaW5kZXhdCi0gICAgICAg
ICAgICBtYXNraW5nX2tleV9pbmRleCA9IChtYXNraW5nX2tleV9pbmRleCArIDEpICUgbWFza2lu
Z19rZXlfc2l6ZQotCi0gICAgICAgIHNlbGYuX21hc2tpbmdfa2V5X2luZGV4ID0gbWFza2luZ19r
ZXlfaW5kZXgKLQotICAgICAgICByZXR1cm4gcmVzdWx0LnRvc3RyaW5nKCkKLQotICAgIGlmICdm
YXN0X21hc2tpbmcnIGluIGdsb2JhbHMoKToKLSAgICAgICAgbWFzayA9IF9tYXNrX3VzaW5nX3N3
aWcKLSAgICBlbHNlOgotICAgICAgICBtYXNrID0gX21hc2tfdXNpbmdfYXJyYXkKLQotCi0jIEJ5
IG1ha2luZyB3Yml0cyBvcHRpb24gbmVnYXRpdmUsIHdlIGNhbiBzdXBwcmVzcyBDTUYvRkxHICgy
IG9jdGV0KSBhbmQKLSMgQURMRVIzMiAoNCBvY3RldCkgZmllbGRzIG9mIHpsaWIgc28gdGhhdCB3
ZSBjYW4gdXNlIHpsaWIgbW9kdWxlIGp1c3QgYXMKLSMgZGVmbGF0ZSBsaWJyYXJ5LiBESUNUSUQg
d29uJ3QgYmUgYWRkZWQgYXMgZmFyIGFzIHdlIGRvbid0IHNldCBkaWN0aW9uYXJ5LgotIyBMWjc3
IHdpbmRvdyBvZiAzMksgd2lsbCBiZSB1c2VkIGZvciBib3RoIGNvbXByZXNzaW9uIGFuZCBkZWNv
bXByZXNzaW9uLgotIyBGb3IgZGVjb21wcmVzc2lvbiwgd2UgY2FuIGp1c3QgdXNlIDMySyB0byBj
b3ZlciBhbnkgd2luZG93cyBzaXplLiBGb3IKLSMgY29tcHJlc3Npb24sIHdlIHVzZSAzMksgc28g
cmVjZWl2ZXJzIG11c3QgdXNlIDMySy4KLSMKLSMgQ29tcHJlc3Npb24gbGV2ZWwgaXMgWl9ERUZB
VUxUX0NPTVBSRVNTSU9OLiBXZSBkb24ndCBoYXZlIHRvIG1hdGNoIGxldmVsCi0jIHRvIGRlY29k
ZS4KLSMKLSMgU2VlIHpjb25mLmgsIGRlZmxhdGUuY2MsIGluZmxhdGUuY2Mgb2YgemxpYiBsaWJy
YXJ5LCBhbmQgemxpYm1vZHVsZS5jIG9mCi0jIFB5dGhvbi4gU2VlIGFsc28gUkZDMTk1MCAoWkxJ
QiAzLjMpLgotCi0KLWNsYXNzIF9EZWZsYXRlcihvYmplY3QpOgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIHdpbmRvd19iaXRzKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xv
Z2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX2NvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigK
LSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAt
d2luZG93X2JpdHMpCi0KLSAgICBkZWYgY29tcHJlc3Moc2VsZiwgYnl0ZXMpOgotICAgICAgICBj
b21wcmVzc2VkX2J5dGVzID0gc2VsZi5fY29tcHJlc3MuY29tcHJlc3MoYnl0ZXMpCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3MgaW5wdXQgJXInLCBieXRlcykKLSAgICAgICAg
c2VsZi5fbG9nZ2VyLmRlYnVnKCdDb21wcmVzcyByZXN1bHQgJXInLCBjb21wcmVzc2VkX2J5dGVz
KQotICAgICAgICByZXR1cm4gY29tcHJlc3NlZF9ieXRlcwotCi0gICAgZGVmIGNvbXByZXNzX2Fu
ZF9mbHVzaChzZWxmLCBieXRlcyk6Ci0gICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9j
b21wcmVzcy5jb21wcmVzcyhieXRlcykKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyArPSBzZWxm
Ll9jb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdDb21wcmVzcyBpbnB1dCAlcicsIGJ5dGVzKQotICAgICAgICBzZWxmLl9sb2dnZXIu
ZGVidWcoJ0NvbXByZXNzIHJlc3VsdCAlcicsIGNvbXByZXNzZWRfYnl0ZXMpCi0gICAgICAgIHJl
dHVybiBjb21wcmVzc2VkX2J5dGVzCi0KLSAgICBkZWYgY29tcHJlc3NfYW5kX2ZpbmlzaChzZWxm
LCBieXRlcyk6Ci0gICAgICAgIGNvbXByZXNzZWRfYnl0ZXMgPSBzZWxmLl9jb21wcmVzcy5jb21w
cmVzcyhieXRlcykKLSAgICAgICAgY29tcHJlc3NlZF9ieXRlcyArPSBzZWxmLl9jb21wcmVzcy5m
bHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0NvbXByZXNz
IGlucHV0ICVyJywgYnl0ZXMpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnQ29tcHJlc3Mg
cmVzdWx0ICVyJywgY29tcHJlc3NlZF9ieXRlcykKLSAgICAgICAgcmV0dXJuIGNvbXByZXNzZWRf
Ynl0ZXMKLQotCi1jbGFzcyBfSW5mbGF0ZXIob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCB3aW5kb3dfYml0cyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dlciA9IGdldF9jbGFzc19sb2dn
ZXIoc2VsZikKLSAgICAgICAgc2VsZi5fd2luZG93X2JpdHMgPSB3aW5kb3dfYml0cwotCi0gICAg
ICAgIHNlbGYuX3VuY29uc3VtZWQgPSAnJwotCi0gICAgICAgIHNlbGYucmVzZXQoKQotCi0gICAg
ZGVmIGRlY29tcHJlc3Moc2VsZiwgc2l6ZSk6Ci0gICAgICAgIGlmIG5vdCAoc2l6ZSA9PSAtMSBv
ciBzaXplID4gMCk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ3NpemUgbXVzdCBiZSAt
MSBvciBwb3NpdGl2ZScpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgICAgIGlmIHNpemUgPT0gLTE6Ci0gICAgICAgICAgICAgICAgZGF0YSArPSBz
ZWxmLl9kZWNvbXByZXNzLmRlY29tcHJlc3Moc2VsZi5fdW5jb25zdW1lZCkKLSAgICAgICAgICAg
ICAgICAjIFNlZSBQeXRob24gYnVnIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxMjA1MCB0
bwotICAgICAgICAgICAgICAgICMgdW5kZXJzdGFuZCB3aHkgdGhlIHNhbWUgY29kZSBjYW5ub3Qg
YmUgdXNlZCBmb3IgdXBkYXRpbmcKLSAgICAgICAgICAgICAgICAjIHNlbGYuX3VuY29uc3VtZWQg
Zm9yIGhlcmUgYW5kIGVsc2UgYmxvY2suCi0gICAgICAgICAgICAgICAgc2VsZi5fdW5jb25zdW1l
ZCA9ICcnCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRhdGEgKz0gc2VsZi5f
ZGVjb21wcmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgICAgICBzZWxmLl91bmNvbnN1
bWVkLCBzaXplIC0gbGVuKGRhdGEpKQotICAgICAgICAgICAgICAgIHNlbGYuX3VuY29uc3VtZWQg
PSBzZWxmLl9kZWNvbXByZXNzLnVuY29uc3VtZWRfdGFpbAotICAgICAgICAgICAgaWYgc2VsZi5f
ZGVjb21wcmVzcy51bnVzZWRfZGF0YToKLSAgICAgICAgICAgICAgICAjIEVuY291bnRlcmVkIGEg
bGFzdCBibG9jayAoaS5lLiBhIGJsb2NrIHdpdGggQkZJTkFMID0gMSkgYW5kCi0gICAgICAgICAg
ICAgICAgIyBmb3VuZCBhIG5ldyBzdHJlYW0gKHVudXNlZF9kYXRhKS4gV2UgY2Fubm90IHVzZSB0
aGUgc2FtZQotICAgICAgICAgICAgICAgICMgemxpYi5EZWNvbXByZXNzIG9iamVjdCBmb3IgdGhl
IG5ldyBzdHJlYW0uIENyZWF0ZSBhIG5ldwotICAgICAgICAgICAgICAgICMgRGVjb21wcmVzcyBv
YmplY3QgdG8gZGVjb21wcmVzcyB0aGUgbmV3IG9uZS4KLSAgICAgICAgICAgICAgICAjCi0gICAg
ICAgICAgICAgICAgIyBJdCdzIGZpbmUgdG8gaWdub3JlIHVuY29uc3VtZWRfdGFpbCBpZiB1bnVz
ZWRfZGF0YSBpcyBub3QKLSAgICAgICAgICAgICAgICAjIGVtcHR5LgotICAgICAgICAgICAgICAg
IHNlbGYuX3VuY29uc3VtZWQgPSBzZWxmLl9kZWNvbXByZXNzLnVudXNlZF9kYXRhCi0gICAgICAg
ICAgICAgICAgc2VsZi5yZXNldCgpCi0gICAgICAgICAgICAgICAgaWYgc2l6ZSA+PSAwIGFuZCBs
ZW4oZGF0YSkgPT0gc2l6ZToKLSAgICAgICAgICAgICAgICAgICAgIyBkYXRhIGlzIGZpbGxlZC4g
RG9uJ3QgY2FsbCBkZWNvbXByZXNzIGFnYWluLgotICAgICAgICAgICAgICAgICAgICBicmVhawot
ICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgUmUtaW52b2tlIERl
Y29tcHJlc3MuZGVjb21wcmVzcyB0byB0cnkgdG8gZGVjb21wcmVzcyBhbGwKLSAgICAgICAgICAg
ICAgICAgICAgIyBhdmFpbGFibGUgYnl0ZXMgYmVmb3JlIGludm9raW5nIHJlYWQgd2hpY2ggYmxv
Y2tzIHVudGlsCi0gICAgICAgICAgICAgICAgICAgICMgYW55IG5ldyBieXRlIGlzIGF2YWlsYWJs
ZS4KLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICAgICAgIyBIZXJlLCBzaW5jZSB1bnVzZWRfZGF0YSBpcyBlbXB0eSwgZXZlbiBpZiB1
bmNvbnN1bWVkX3RhaWwgaXMKLSAgICAgICAgICAgICAgICAjIG5vdCBlbXB0eSwgYnl0ZXMgb2Yg
cmVxdWVzdGVkIGxlbmd0aCBhcmUgYWxyZWFkeSBpbiBkYXRhLiBXZQotICAgICAgICAgICAgICAg
ICMgZG9uJ3QgaGF2ZSB0byAiY29udGludWUiIGhlcmUuCi0gICAgICAgICAgICAgICAgYnJlYWsK
LQotICAgICAgICBpZiBkYXRhOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdEZWNv
bXByZXNzZWQgJXInLCBkYXRhKQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIGFwcGVu
ZChzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdBcHBlbmRlZCAlcics
IGRhdGEpCi0gICAgICAgIHNlbGYuX3VuY29uc3VtZWQgKz0gZGF0YQotCi0gICAgZGVmIHJlc2V0
KHNlbGYpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1Jlc2V0JykKLSAgICAgICAgc2Vs
Zi5fZGVjb21wcmVzcyA9IHpsaWIuZGVjb21wcmVzc29iaigtc2VsZi5fd2luZG93X2JpdHMpCi0K
LQotIyBDb21wcmVzc2VzL2RlY29tcHJlc3NlcyBnaXZlbiBvY3RldHMgdXNpbmcgdGhlIG1ldGhv
ZCBpbnRyb2R1Y2VkIGluIFJGQzE5NzkuCi0KLQotY2xhc3MgX1JGQzE5NzlEZWZsYXRlcihvYmpl
Y3QpOgotICAgICIiIkEgY29tcHJlc3NvciBjbGFzcyB0aGF0IGFwcGxpZXMgREVGTEFURSB0byBn
aXZlbiBieXRlIHNlcXVlbmNlIGFuZAotICAgIGZsdXNoZXMgdXNpbmcgdGhlIGFsZ29yaXRobSBk
ZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0gICAgIiIiCi0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgd2luZG93X2JpdHMsIG5vX2NvbnRleHRfdGFrZW92ZXIpOgotICAgICAg
ICBzZWxmLl9kZWZsYXRlciA9IE5vbmUKLSAgICAgICAgaWYgd2luZG93X2JpdHMgaXMgTm9uZToK
LSAgICAgICAgICAgIHdpbmRvd19iaXRzID0gemxpYi5NQVhfV0JJVFMKLSAgICAgICAgc2VsZi5f
d2luZG93X2JpdHMgPSB3aW5kb3dfYml0cwotICAgICAgICBzZWxmLl9ub19jb250ZXh0X3Rha2Vv
dmVyID0gbm9fY29udGV4dF90YWtlb3ZlcgotCi0gICAgZGVmIGZpbHRlcihzZWxmLCBieXRlcywg
ZW5kPVRydWUsIGJmaW5hbD1GYWxzZSk6Ci0gICAgICAgIGlmIHNlbGYuX2RlZmxhdGVyIGlzIE5v
bmU6Ci0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IF9EZWZsYXRlcihzZWxmLl93aW5kb3df
Yml0cykKLQotICAgICAgICBpZiBiZmluYWw6Ci0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLl9k
ZWZsYXRlci5jb21wcmVzc19hbmRfZmluaXNoKGJ5dGVzKQotICAgICAgICAgICAgIyBBZGQgYSBw
YWRkaW5nIGJsb2NrIHdpdGggQkZJTkFMID0gMCBhbmQgQlRZUEUgPSAwLgotICAgICAgICAgICAg
cmVzdWx0ID0gcmVzdWx0ICsgY2hyKDApCi0gICAgICAgICAgICBzZWxmLl9kZWZsYXRlciA9IE5v
bmUKLSAgICAgICAgICAgIHJldHVybiByZXN1bHQKLQotICAgICAgICByZXN1bHQgPSBzZWxmLl9k
ZWZsYXRlci5jb21wcmVzc19hbmRfZmx1c2goYnl0ZXMpCi0gICAgICAgIGlmIGVuZDoKLSAgICAg
ICAgICAgICMgU3RyaXAgbGFzdCA0IG9jdGV0cyB3aGljaCBpcyBMRU4gYW5kIE5MRU4gZmllbGQg
b2YgYQotICAgICAgICAgICAgIyBub24tY29tcHJlc3NlZCBibG9jayBhZGRlZCBmb3IgWl9TWU5D
X0ZMVVNILgotICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0WzotNF0KLQotICAgICAgICBpZiBz
ZWxmLl9ub19jb250ZXh0X3Rha2VvdmVyIGFuZCBlbmQ6Ci0gICAgICAgICAgICBzZWxmLl9kZWZs
YXRlciA9IE5vbmUKLQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLQotY2xhc3MgX1JGQzE5NzlJ
bmZsYXRlcihvYmplY3QpOgotICAgICIiIkEgZGVjb21wcmVzc29yIGNsYXNzIGZvciBieXRlIHNl
cXVlbmNlIGNvbXByZXNzZWQgYW5kIGZsdXNoZWQgZm9sbG93aW5nCi0gICAgdGhlIGFsZ29yaXRo
bSBkZXNjcmliZWQgaW4gdGhlIFJGQzE5Nzkgc2VjdGlvbiAyLjEuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgd2luZG93X2JpdHM9emxpYi5NQVhfV0JJVFMpOgotICAgICAgICBz
ZWxmLl9pbmZsYXRlciA9IF9JbmZsYXRlcih3aW5kb3dfYml0cykKLQotICAgIGRlZiBmaWx0ZXIo
c2VsZiwgYnl0ZXMpOgotICAgICAgICAjIFJlc3RvcmUgc3RyaXBwZWQgTEVOIGFuZCBOTEVOIGZp
ZWxkIG9mIGEgbm9uLWNvbXByZXNzZWQgYmxvY2sgYWRkZWQKLSAgICAgICAgIyBmb3IgWl9TWU5D
X0ZMVVNILgotICAgICAgICBzZWxmLl9pbmZsYXRlci5hcHBlbmQoYnl0ZXMgKyAnXHgwMFx4MDBc
eGZmXHhmZicpCi0gICAgICAgIHJldHVybiBzZWxmLl9pbmZsYXRlci5kZWNvbXByZXNzKC0xKQot
Ci0KLWNsYXNzIERlZmxhdGVTb2NrZXQob2JqZWN0KToKLSAgICAiIiJBIHdyYXBwZXIgY2xhc3Mg
Zm9yIHNvY2tldCBvYmplY3QgdG8gaW50ZXJjZXB0IHNlbmQgYW5kIHJlY3YgdG8gcGVyZm9ybQot
ICAgIGRlZmxhdGUgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gdHJhbnNwYXJlbnRseS4K
LSAgICAiIiIKLQotICAgICMgU2l6ZSBvZiB0aGUgYnVmZmVyIHBhc3NlZCB0byByZWN2IHRvIHJl
Y2VpdmUgY29tcHJlc3NlZCBkYXRhLgotICAgIF9SRUNWX1NJWkUgPSA0MDk2Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgc29ja2V0KToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0Ci0K
LSAgICAgICAgc2VsZi5fbG9nZ2VyID0gZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAg
IHNlbGYuX2RlZmxhdGVyID0gX0RlZmxhdGVyKHpsaWIuTUFYX1dCSVRTKQotICAgICAgICBzZWxm
Ll9pbmZsYXRlciA9IF9JbmZsYXRlcih6bGliLk1BWF9XQklUUykKLQotICAgIGRlZiByZWN2KHNl
bGYsIHNpemUpOgotICAgICAgICAiIiJSZWNlaXZlcyBkYXRhIGZyb20gdGhlIHNvY2tldCBzcGVj
aWZpZWQgb24gdGhlIGNvbnN0cnVjdGlvbiB1cAotICAgICAgICB0byB0aGUgc3BlY2lmaWVkIHNp
emUuIE9uY2UgYW55IGRhdGEgaXMgYXZhaWxhYmxlLCByZXR1cm5zIGl0IGV2ZW4KLSAgICAgICAg
aWYgaXQncyBzbWFsbGVyIHRoYW4gdGhlIHNwZWNpZmllZCBzaXplLgotICAgICAgICAiIiIKLQot
ICAgICAgICAjIFRPRE8odHlvc2hpbm8pOiBBbGxvdyBjYWxsIHdpdGggc2l6ZT0wLiBJdCBzaG91
bGQgYmxvY2sgdW50aWwgYW55Ci0gICAgICAgICMgZGVjb21wcmVzc2VkIGRhdGEgaXMgYXZhaWxh
YmxlLgotICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J05vbi1wb3NpdGl2ZSBzaXplIHBhc3NlZCcpCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAg
ICAgICBkYXRhID0gc2VsZi5faW5mbGF0ZXIuZGVjb21wcmVzcyhzaXplKQotICAgICAgICAgICAg
aWYgbGVuKGRhdGEpICE9IDA6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRhdGEKLQotICAgICAg
ICAgICAgcmVhZF9kYXRhID0gc2VsZi5fc29ja2V0LnJlY3YoRGVmbGF0ZVNvY2tldC5fUkVDVl9T
SVpFKQotICAgICAgICAgICAgaWYgbm90IHJlYWRfZGF0YToKLSAgICAgICAgICAgICAgICByZXR1
cm4gJycKLSAgICAgICAgICAgIHNlbGYuX2luZmxhdGVyLmFwcGVuZChyZWFkX2RhdGEpCi0KLSAg
ICBkZWYgc2VuZGFsbChzZWxmLCBieXRlcyk6Ci0gICAgICAgIHNlbGYuc2VuZChieXRlcykKLQot
ICAgIGRlZiBzZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwo
c2VsZi5fZGVmbGF0ZXIuY29tcHJlc3NfYW5kX2ZsdXNoKGJ5dGVzKSkKLSAgICAgICAgcmV0dXJu
IGxlbihieXRlcykKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L21vZF9weXdlYnNvY2tldC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tl
dC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTc5ZGYzNTk5
OGQxMTUxYjNiMDk4YTA1YTBiMWM4NzlkNDI1MmQ4Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9t
b2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvX3N0
cmVhbV9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L19zdHJlYW1faGl4aWU3NS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9fc3RyZWFtX2h5YmkucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9t
b2RfcHl3ZWJzb2NrZXQvY29tbW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2Rpc3Bh
dGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L2V4dGVuc2lvbnMucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy9tb2RfcHl3ZWJzb2NrZXQvZmFzdF9tYXNraW5nLmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2Nr
ZXQvaGVhZGVycGFyc2VyaGFuZGxlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL21vZF9weXdlYnNvY2tldC9odHRw
X2hlYWRlcl91dGlsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L21zZ3V0aWwucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2Rf
cHl3ZWJzb2NrZXQvbXV4LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQvc3RyZWFtLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5
d2Vic29ja2V0L3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFy
a19oYW5kbGVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQveGhyX2Jl
bmNobWFya19oYW5kbGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvbW9kX3B5d2Vic29ja2V0L3hocl9iZW5jaG1h
cmtfaGFuZGxlci5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczNWM3ZTJhM2Ri
OGRjN2M0M2ZkMTcyMDE0OTVkNDM1Y2NlNjhjZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy9tb2RfcHl3ZWJzb2NrZXQveGhyX2JlbmNobWFy
a19oYW5kbGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLSMgQ29weXJpZ2h0
IDIwMTQgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgVXNlIG9mIHRoaXMg
c291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUKLSMgbGljZW5zZSB0aGF0IGNh
biBiZSBmb3VuZCBpbiB0aGUgQ09QWUlORyBmaWxlIG9yIGF0Ci0jIGh0dHBzOi8vZGV2ZWxvcGVy
cy5nb29nbGUuY29tL29wZW4tc291cmNlL2xpY2Vuc2VzL2JzZAotCi0KLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCB1dGlsCi0KLQotY2xhc3MgWEhSQmVuY2htYXJrSGFuZGxlcihvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoZWFkZXJzLCByZmlsZSwgd2ZpbGUpOgotICAgICAg
ICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBz
ZWxmLmhlYWRlcnMgPSBoZWFkZXJzCi0gICAgICAgIHNlbGYucmZpbGUgPSByZmlsZQotICAgICAg
ICBzZWxmLndmaWxlID0gd2ZpbGUKLQotICAgIGRlZiBkb19zZW5kKHNlbGYpOgotICAgICAgICBj
b250ZW50X2xlbmd0aCA9IGludChzZWxmLmhlYWRlcnMuZ2V0aGVhZGVyKCdDb250ZW50LUxlbmd0
aCcpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVxdWVzdGVkIHRvIHJlY2VpdmUg
JXMgYnl0ZXMnLCBjb250ZW50X2xlbmd0aCkKLQotICAgICAgICBSRUNFSVZFX0JMT0NLX1NJWkUg
PSAxMDI0ICogMTAyNAotCi0gICAgICAgIGJ5dGVzX3RvX3JlY2VpdmUgPSBjb250ZW50X2xlbmd0
aAotICAgICAgICB3aGlsZSBieXRlc190b19yZWNlaXZlID4gMDoKLSAgICAgICAgICAgIGJ5dGVz
X3RvX3JlY2VpdmVfaW5fdGhpc19sb29wID0gYnl0ZXNfdG9fcmVjZWl2ZQotICAgICAgICAgICAg
aWYgYnl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPiBSRUNFSVZFX0JMT0NLX1NJWkU6Ci0g
ICAgICAgICAgICAgICAgYnl0ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3AgPSBSRUNFSVZFX0JM
T0NLX1NJWkUKLSAgICAgICAgICAgIHJlY2VpdmVkX2RhdGEgPSBzZWxmLnJmaWxlLnJlYWQoYnl0
ZXNfdG9fcmVjZWl2ZV9pbl90aGlzX2xvb3ApCi0gICAgICAgICAgICBpZiByZWNlaXZlZF9kYXRh
ICE9ICgnYScgKiBieXRlc190b19yZWNlaXZlX2luX3RoaXNfbG9vcCk6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXF1ZXN0IGJvZHkgdmVyaWZpY2F0aW9uIGZhaWxlZCcp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICBieXRlc190b19yZWNlaXZlIC09
IGxlbihyZWNlaXZlZF9kYXRhKQotICAgICAgICBpZiBieXRlc190b19yZWNlaXZlIDwgMDoKLSAg
ICAgICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnUmVjZWl2ZWQgJWQgbW9yZSBieXRlcyB0aGFu
IGV4cGVjdGVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC1ieXRlc190b19y
ZWNlaXZlKSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgUmV0dXJuIHRoZSBudW1i
ZXIgb2YgcmVjZWl2ZWQgYnl0ZXMgYmFjayB0byB0aGUgY2xpZW50LgotICAgICAgICByZXNwb25z
ZV9ib2R5ID0gJyVkJyAlIGNvbnRlbnRfbGVuZ3RoCi0gICAgICAgIHNlbGYud2ZpbGUud3JpdGUo
Ci0gICAgICAgICAgICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKLSAgICAgICAgICAgICdDb250ZW50
LVR5cGU6IHRleHQvaHRtbFxyXG4nCi0gICAgICAgICAgICAnQ29udGVudC1MZW5ndGg6ICVkXHJc
bicKLSAgICAgICAgICAgICdcclxuJXMnICUgKGxlbihyZXNwb25zZV9ib2R5KSwgcmVzcG9uc2Vf
Ym9keSkpCi0gICAgICAgIHNlbGYud2ZpbGUuZmx1c2goKQotCi0gICAgZGVmIGRvX3JlY2VpdmUo
c2VsZik6Ci0gICAgICAgIGNvbnRlbnRfbGVuZ3RoID0gaW50KHNlbGYuaGVhZGVycy5nZXRoZWFk
ZXIoJ0NvbnRlbnQtTGVuZ3RoJykpCi0gICAgICAgIHJlcXVlc3RfYm9keSA9IHNlbGYucmZpbGUu
cmVhZChjb250ZW50X2xlbmd0aCkKLQotICAgICAgICByZXF1ZXN0X2FycmF5ID0gcmVxdWVzdF9i
b2R5LnNwbGl0KCcgJykKLSAgICAgICAgaWYgbGVuKHJlcXVlc3RfYXJyYXkpIDwgMjoKLSAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnTWFsZm9ybWVkIHJlcXVlc3QgYm9keTogJXInLCBy
ZXF1ZXN0X2JvZHkpCi0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICAjIFBhcnNlIHRoZSBz
aXplIHBhcmFtZXRlci4KLSAgICAgICAgYnl0ZXNfdG9fc2VuZCA9IHJlcXVlc3RfYXJyYXlbMF0K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZCA9IGludChieXRlc190b19z
ZW5kKQotICAgICAgICBleGNlcHQgVmFsdWVFcnJvciwgZToKLSAgICAgICAgICAgIHNlbGYuX2xv
Z2dlci5kZWJ1ZygnTWFsZm9ybWVkIHNpemUgcGFyYW1ldGVyOiAlcicsIGJ5dGVzX3RvX3NlbmQp
Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdSZXF1ZXN0
ZWQgdG8gc2VuZCAlcyBieXRlcycsIGJ5dGVzX3RvX3NlbmQpCi0KLSAgICAgICAgIyBQYXJzZSB0
aGUgdHJhbnNmZXIgZW5jb2RpbmcgcGFyYW1ldGVyLgotICAgICAgICBjaHVua2VkX21vZGUgPSBG
YWxzZQotICAgICAgICBtb2RlX3BhcmFtZXRlciA9IHJlcXVlc3RfYXJyYXlbMV0KLSAgICAgICAg
aWYgbW9kZV9wYXJhbWV0ZXIgPT0gJ2NodW5rZWQnOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2Vy
LmRlYnVnKCdSZXF1ZXN0ZWQgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZycpCi0gICAgICAgICAg
ICBjaHVua2VkX21vZGUgPSBUcnVlCi0gICAgICAgIGVsaWYgbW9kZV9wYXJhbWV0ZXIgIT0gJ25v
bmUnOgotICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdJbnZhbGlkIG1vZGUgcGFyYW1l
dGVyOiAlcicsIG1vZGVfcGFyYW1ldGVyKQotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAg
IyBXcml0ZSBhIGhlYWRlcgotICAgICAgICByZXNwb25zZV9oZWFkZXIgPSAoCi0gICAgICAgICAg
ICAnSFRUUC8xLjEgMjAwIE9LXHJcbicKLSAgICAgICAgICAgICdDb250ZW50LVR5cGU6IGFwcGxp
Y2F0aW9uL29jdGV0LXN0cmVhbVxyXG4nKQotICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAg
ICAgICAgICByZXNwb25zZV9oZWFkZXIgKz0gJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJc
blxyXG4nCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXNwb25zZV9oZWFkZXIgKz0gKAot
ICAgICAgICAgICAgICAgICdDb250ZW50LUxlbmd0aDogJWRcclxuXHJcbicgJSBieXRlc190b19z
ZW5kKQotICAgICAgICBzZWxmLndmaWxlLndyaXRlKHJlc3BvbnNlX2hlYWRlcikKLSAgICAgICAg
c2VsZi53ZmlsZS5mbHVzaCgpCi0KLSAgICAgICAgIyBXcml0ZSBhIGJvZHkKLSAgICAgICAgU0VO
RF9CTE9DS19TSVpFID0gMTAyNCAqIDEwMjQKLQotICAgICAgICB3aGlsZSBieXRlc190b19zZW5k
ID4gMDoKLSAgICAgICAgICAgIGJ5dGVzX3RvX3NlbmRfaW5fdGhpc19sb29wID0gYnl0ZXNfdG9f
c2VuZAotICAgICAgICAgICAgaWYgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPiBTRU5EX0JM
T0NLX1NJWkU6Ci0gICAgICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZF9pbl90aGlzX2xvb3AgPSBT
RU5EX0JMT0NLX1NJWkUKLQotICAgICAgICAgICAgaWYgY2h1bmtlZF9tb2RlOgotICAgICAgICAg
ICAgICAgIHNlbGYud2ZpbGUud3JpdGUoJyV4XHJcbicgJSBieXRlc190b19zZW5kX2luX3RoaXNf
bG9vcCkKLSAgICAgICAgICAgIHNlbGYud2ZpbGUud3JpdGUoJ2EnICogYnl0ZXNfdG9fc2VuZF9p
bl90aGlzX2xvb3ApCi0gICAgICAgICAgICBpZiBjaHVua2VkX21vZGU6Ci0gICAgICAgICAgICAg
ICAgc2VsZi53ZmlsZS53cml0ZSgnXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNo
KCkKLQotICAgICAgICAgICAgYnl0ZXNfdG9fc2VuZCAtPSBieXRlc190b19zZW5kX2luX3RoaXNf
bG9vcAotCi0gICAgICAgIGlmIGNodW5rZWRfbW9kZToKLSAgICAgICAgICAgIHNlbGYud2ZpbGUu
d3JpdGUoJzBcclxuXHJcbicpCi0gICAgICAgICAgICBzZWxmLndmaWxlLmZsdXNoKCkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvc2V0dXAucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGFkYThkYjNlMTExYjBhNTQzMWQ3MWU2MWY0NDkxM2VjNWRhYzky
NDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvc2V0dXAucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi0jIS91c3IvYmluL2Vu
diBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMg
ICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBk
aXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9y
IHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0
IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0j
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0j
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlNldCB1cCBzY3JpcHQgZm9yIG1v
ZF9weXdlYnNvY2tldC4KLSIiIgotCi0KLWZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVw
LCBFeHRlbnNpb24KLWltcG9ydCBzeXMKLQotCi1fUEFDS0FHRV9OQU1FID0gJ21vZF9weXdlYnNv
Y2tldCcKLQotIyBCdWlsZCBhbmQgdXNlIGEgQysrIGV4dGVuc2lvbiBmb3IgZmFzdGVyIG1hc2tp
bmcuIFNXSUcgaXMgcmVxdWlyZWQuCi1fVVNFX0ZBU1RfTUFTS0lORyA9IEZhbHNlCi0KLWlmIHN5
cy52ZXJzaW9uIDwgJzIuMyc6Ci0gICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgJyVzIHJlcXVpcmVz
IFB5dGhvbiAyLjMgb3IgbGF0ZXIuJyAlIF9QQUNLQUdFX05BTUUKLSAgICBzeXMuZXhpdCgxKQot
Ci1pZiBfVVNFX0ZBU1RfTUFTS0lORzoKLSAgICBzZXR1cChleHRfbW9kdWxlcz1bCi0gICAgICAg
ICAgICAgICAgICBFeHRlbnNpb24oCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdtb2RfcHl3
ZWJzb2NrZXQvX2Zhc3RfbWFza2luZycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFsnbW9k
X3B5d2Vic29ja2V0L2Zhc3RfbWFza2luZy5pJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHN3aWdfb3B0cz1bJy1jKysnXSldKQotCi1zZXR1cChhdXRob3I9J1l1em8gRnVqaXNoaW1hJywK
LSAgICAgIGF1dGhvcl9lbWFpbD0neXV6b0BjaHJvbWl1bS5vcmcnLAotICAgICAgZGVzY3JpcHRp
b249J1dlYlNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlci4nLAotICAgICAg
bG9uZ19kZXNjcmlwdGlvbj0oCi0gICAgICAgICAgICAgICdtb2RfcHl3ZWJzb2NrZXQgaXMgYW4g
QXBhY2hlIEhUVFAgU2VydmVyIGV4dGVuc2lvbiBmb3IgJwotICAgICAgICAgICAgICAndGhlIFdl
YlNvY2tldCBQcm90b2NvbCAoUkZDIDY0NTUpLiAnCi0gICAgICAgICAgICAgICdTZWUgbW9kX3B5
d2Vic29ja2V0L19faW5pdF9fLnB5IGZvciBtb3JlIGRldGFpbC4nKSwKLSAgICAgIGxpY2Vuc2U9
J1NlZSBDT1BZSU5HJywKLSAgICAgIG5hbWU9X1BBQ0tBR0VfTkFNRSwKLSAgICAgIHBhY2thZ2Vz
PVtfUEFDS0FHRV9OQU1FLCBfUEFDS0FHRV9OQU1FICsgJy5oYW5kc2hha2UnXSwKLSAgICAgIHVy
bD0naHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL3B5d2Vic29ja2V0LycsCi0gICAgICAjIFNlZSB0
aGUgc291cmNlIG9mIGRpc3R1dGlscy52ZXJzaW9uLCBkaXN0dXRpbHMudmVyc2lvbnByZWRpY2F0
ZSBhbmQKLSAgICAgICMgZGlzdHV0aWxzLmRpc3QgdG8gdW5kZXJzdGFuZCBob3cgdG8gbmFtZSB2
ZXJzaW9uIG51bWJlcnMuCi0gICAgICB2ZXJzaW9uPScwLjcuOScsCi0gICAgICApCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L19faW5pdF9fLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC9zcmMvdGVzdC9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L19faW5pdF9fLnB5
CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9y
IFB5dGhvbiB0byBzZWFyY2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2NhY2VydC5w
ZW0gYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2FjZXJ0LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGRhZGFlMTIxYmRkM2FkYjc0NDM4M2NkM2JmMDhjMjI2Zjg1NTRiYS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2Nl
cnQvY2FjZXJ0LnBlbQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLS0tLS0tQkVHSU4g
Q0VSVElGSUNBVEUtLS0tLQotTUlJQ3ZEQ0NBaVdnQXdJQkFnSUpBS3FWZ2hrR0YxclNNQTBHQ1Nx
R1NJYjNEUUVCQlFVQU1Fa3hDekFKQmdOVgotQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6
RVVNQklHQTFVRUNoTUxjSGwzWldKemIyTnJaWFF4RkRBUwotQmdOVkJBTVRDM0I1ZDJWaWMyOWph
MlYwTUI0WERURXlNRFl3TmpBM01qUXpNMW9YRFRNNU1UQXlNekEzTWpRegotTTFvd1NURUxNQWtH
QTFVRUJoTUNTbEF4RGpBTUJnTlZCQWdUQlZSdmEzbHZNUlF3RWdZRFZRUUtFd3R3ZVhkbAotWW5O
dlkydGxkREVVTUJJR0ExVUVBeE1MY0hsM1pXSnpiMk5yWlhRd2daOHdEUVlKS29aSWh2Y05BUUVC
QlFBRAotZ1kwQU1JR0pBb0dCQUtvU0VXMmJpUXhWck1NS2RuLzhQSnpEWWlTWERQUjlXUWJMUlJR
MUdtNWprQ1lpYWhYVwotdTJDYlRUaGZQUGZpMk5IQTNJK0hsVDdnTzl5UjdSVlV2TjZJU1V6R3dY
REVxNGY0VU5xdFFPaFFhcXFLK0NaOQotTE8vQmhPL1lZZk5yYlNQbFl6SFVLYVQ5ZXNlN3hPOVZ6
VktMVytxVWYyTWpoNC8rU3p4QkROUDdBZ01CQUFHagotZ2Fzd2dhZ3dIUVlEVlIwT0JCWUVGT3NX
ZHhDU3V5aHdhWmVhYjZCb1RobzMrK2J6TUhrR0ExVWRJd1J5TUhDQQotRk9zV2R4Q1N1eWh3YVpl
YWI2Qm9UaG8zKytiem9VMmtTekJKTVFzd0NRWURWUVFHRXdKS1VERU9NQXdHQTFVRQotQ0JNRlZH
OXJlVzh4RkRBU0JnTlZCQW9UQzNCNWQyVmljMjlqYTJWME1SUXdFZ1lEVlFRREV3dHdlWGRsWW5O
dgotWTJ0bGRJSUpBS3FWZ2hrR0YxclNNQXdHQTFVZEV3UUZNQU1CQWY4d0RRWUpLb1pJaHZjTkFR
RUZCUUFEZ1lFQQotZ3NNSTFXRVlxTncvamhVSWRyVEJjQ3hKMFg2aEp2QTl6aUtBTlZtMVJzKzRQ
M1lEQXJrUThiQ3I2eFkrS3c3cwotWnAweUU3ZE04R01kaStEVTZoTDN0M0U1ZU1rVFMxeVpyOVdD
SzRmMlJMbytldDk4c2VsWnlkcEhlbUYzREpKMwotZ0FqOFN4NExCYUc4Q2IvV25FTVB2M014RzNm
QkU1ZmF2RjZWNGpVMDdoUT0KLS0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvY2VydC9jZXJ0LnBlbSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jZXJ0LnBl
bQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjUzNzlhNzJiMGRhYzVmNDE5NzljODAy
YzY2M2RmOGI4OGRlYTgyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2VydC5wZW0KKysrIC9kZXYvbnVsbApAQCAtMSw2
MSArMCwwIEBACi1DZXJ0aWZpY2F0ZToKLSAgICBEYXRhOgotICAgICAgICBWZXJzaW9uOiAzICgw
eDIpCi0gICAgICAgIFNlcmlhbCBOdW1iZXI6IDEgKDB4MSkKLSAgICAgICAgU2lnbmF0dXJlIEFs
Z29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0aW9uCi0gICAgICAgIElzc3VlcjogQz1KUCwgU1Q9
VG9reW8sIE89cHl3ZWJzb2NrZXQsIENOPXB5d2Vic29ja2V0Ci0gICAgICAgIFZhbGlkaXR5Ci0g
ICAgICAgICAgICBOb3QgQmVmb3JlOiBKdW4gIDYgMDc6MjU6MDggMjAxMiBHTVQKLSAgICAgICAg
ICAgIE5vdCBBZnRlciA6IE9jdCAyMyAwNzoyNTowOCAyMDM5IEdNVAotICAgICAgICBTdWJqZWN0
OiBDPUpQLCBTVD1Ub2t5bywgTz1weXdlYnNvY2tldCwgQ049cHl3ZWJzb2NrZXQKLSAgICAgICAg
U3ViamVjdCBQdWJsaWMgS2V5IEluZm86Ci0gICAgICAgICAgICBQdWJsaWMgS2V5IEFsZ29yaXRo
bTogcnNhRW5jcnlwdGlvbgotICAgICAgICAgICAgUlNBIFB1YmxpYyBLZXk6ICgxMDI0IGJpdCkK
LSAgICAgICAgICAgICAgICBNb2R1bHVzICgxMDI0IGJpdCk6Ci0gICAgICAgICAgICAgICAgICAg
IDAwOmRlOjEwOmNlOjNhOjVhOjA0OmE0OjFjOjI5OjkzOjVjOjIzOjgyOjFhOgotICAgICAgICAg
ICAgICAgICAgICBmMjowNjowMTplNjoyYjphNDowZjpkZDo3Nzo0OTo3Njo4OTowMzphMjoyMToK
LSAgICAgICAgICAgICAgICAgICAgZGU6MDQ6NzU6YzY6ZTI6ZGQ6ZmI6MzU6Mjc6M2E6YTI6OTI6
OGU6MTI6NjI6Ci0gICAgICAgICAgICAgICAgICAgIDJiOjNlOjFmOmY0Ojc4OmRmOmI2Ojk0OmNi
OjI3OmQ2OmNiOmQ2OjM3OmQ3OgotICAgICAgICAgICAgICAgICAgICA1YzowODpmMDowOTozZTpj
OTpjZToyNDoyZDowMDpjOTpkZjo0YTplMDo5OToKLSAgICAgICAgICAgICAgICAgICAgZTU6ZmI6
MjM6YTk6ZTI6ZDY6Yzk6M2Q6OTY6ZmE6MDE6ODg6ZGU6NWE6ODk6Ci0gICAgICAgICAgICAgICAg
ICAgIGIwOmNmOjAzOjY3OjZmOjA0Ojg2OjFkOmVmOjYyOjFjOjU1OmE5OjA3OjlhOgotICAgICAg
ICAgICAgICAgICAgICAyZTo2NjoyYTo3Mzo1Yjo0Yzo2MjowMzpmOTo4Mjo4MzpkYjo2ODpiZjpi
ODoKLSAgICAgICAgICAgICAgICAgICAgNGI6MGI6OGI6OTM6MTE6Yjg6NTQ6NzM6N2IKLSAgICAg
ICAgICAgICAgICBFeHBvbmVudDogNjU1MzcgKDB4MTAwMDEpCi0gICAgICAgIFg1MDl2MyBleHRl
bnNpb25zOgotICAgICAgICAgICAgWDUwOXYzIEJhc2ljIENvbnN0cmFpbnRzOiAKLSAgICAgICAg
ICAgICAgICBDQTpGQUxTRQotICAgICAgICAgICAgTmV0c2NhcGUgQ2VydCBUeXBlOiAKLSAgICAg
ICAgICAgICAgICBTU0wgU2VydmVyCi0gICAgICAgICAgICBOZXRzY2FwZSBDb21tZW50OiAKLSAg
ICAgICAgICAgICAgICBPcGVuU1NMIEdlbmVyYXRlZCBDZXJ0aWZpY2F0ZQotICAgICAgICAgICAg
WDUwOXYzIFN1YmplY3QgS2V5IElkZW50aWZpZXI6IAotICAgICAgICAgICAgICAgIDgyOkExOjcz
OjhCOjE2OjBDOjdDOkU0OkQzOjQ2Ojk1OjEzOjk1OjFBOjMyOkMxOjg0OkU5OjA2OjAwCi0gICAg
ICAgICAgICBYNTA5djMgQXV0aG9yaXR5IEtleSBJZGVudGlmaWVyOiAKLSAgICAgICAgICAgICAg
ICBrZXlpZDpFQjoxNjo3NzoxMDo5MjpCQjoyODo3MDo2OTo5Nzo5QTo2RjpBMDo2ODo0RToxQToz
NzpGQjpFNjpGMwotCi0gICAgU2lnbmF0dXJlIEFsZ29yaXRobTogc2hhMVdpdGhSU0FFbmNyeXB0
aW9uCi0gICAgICAgIDZiOmIzOjQ2OjI5OjAyOmRmOmIwOmM4OjhlOmM0OmQ3OjdmOmEwOjFlOjBk
OjFhOmViOjJmOgotICAgICAgICBkZjpkMTo0ODo1NzozNjo1Zjo5NTo4YzoxYjpmMDo1MTpkNjo1
MjplNzo4ZDo4NDozYjo5ZjoKLSAgICAgICAgZDg6ZWQ6MjI6OWM6YWE6YmQ6ZWU6OWI6OTA6MWQ6
ODQ6YTM6NGM6MGI6Y2I6ZWI6NjQ6NzM6Ci0gICAgICAgIGJhOmY3OjE1OmNlOmRhOjVmOmRiOjhi
OjE1OjA3OmE2OjI4OjdmOmI5OjhjOjExOjliOjY0OgotICAgICAgICBkMzpmMTpiZTo1Mjo0Zjpj
MzpkODo1ODpmZTpkZTo1Njo2Mzo2MzozYjo1MTplZDphNzo4MToKLSAgICAgICAgZjk6MDU6NTE6
NzA6NjM6MzI6MDk6MGU6OTQ6N2U6MDU6ZmU6YTE6NTY6MTg6MzQ6OTg6ZDU6Ci0gICAgICAgIDk5
OjFlOjRlOjI3OjM4Ojg5OjkwOjZhOmU1OmNlOjYwOjM1OjAxOmY1OmRlOjM0OjYwOmIxOgotICAg
ICAgICBjYjphZQotLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCi1NSUlDbURDQ0FnR2dBd0lC
QWdJQkFUQU5CZ2txaGtpRzl3MEJBUVVGQURCSk1Rc3dDUVlEVlFRR0V3SktVREVPCi1NQXdHQTFV
RUNCTUZWRzlyZVc4eEZEQVNCZ05WQkFvVEMzQjVkMlZpYzI5amEyVjBNUlF3RWdZRFZRUURFd3R3
Ci1lWGRsWW5OdlkydGxkREFlRncweE1qQTJNRFl3TnpJMU1EaGFGdzB6T1RFd01qTXdOekkxTURo
YU1Fa3hDekFKCi1CZ05WQkFZVEFrcFFNUTR3REFZRFZRUUlFd1ZVYjJ0NWJ6RVVNQklHQTFVRUNo
TUxjSGwzWldKemIyTnJaWFF4Ci1GREFTQmdOVkJBTVRDM0I1ZDJWaWMyOWphMlYwTUlHZk1BMEdD
U3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCCi1nUURlRU00NldnU2tIQ21UWENPQ0d2SUdBZVly
cEEvZGQwbDJpUU9pSWQ0RWRjYmkzZnMxSnpxaWtvNFNZaXMrCi1IL1I0MzdhVXl5Zld5OVkzMTF3
SThBayt5YzRrTFFESjMwcmdtZVg3STZuaTFzazlsdm9CaU41YWliRFBBMmR2Ci1CSVlkNzJJY1Zh
a0htaTVtS25OYlRHSUQrWUtEMjJpL3VFc0xpNU1SdUZSemV3SURBUUFCbzRHUE1JR01NQWtHCi1B
MVVkRXdRQ01BQXdFUVlKWUlaSUFZYjRRZ0VCQkFRREFnWkFNQ3dHQ1dDR1NBR0crRUlCRFFRZkZo
MVBjR1Z1Ci1VMU5NSUVkbGJtVnlZWFJsWkNCRFpYSjBhV1pwWTJGMFpUQWRCZ05WSFE0RUZnUVVn
cUZ6aXhZTWZPVFRScFVUCi1sUm95d1lUcEJnQXdId1lEVlIwakJCZ3dGb0FVNnhaM0VKSzdLSEJw
bDVwdm9HaE9HamY3NXZNd0RRWUpLb1pJCi1odmNOQVFFRkJRQURnWUVBYTdOR0tRTGZzTWlPeE5k
L29CNE5HdXN2MzlGSVZ6WmZsWXdiOEZIV1V1ZU5oRHVmCi0yTzBpbktxOTdwdVFIWVNqVEF2TDYy
Unp1dmNWenRwZjI0c1ZCNllvZjdtTUVadGswL0crVWsvRDJGaiszbFpqCi1ZenRSN2FlQitRVlJj
R015Q1E2VWZnWCtvVllZTkpqVm1SNU9KemlKa0dybHptQTFBZlhlTkdDeHk2ND0KLS0tLS0tRU5E
IENFUlRJRklDQVRFLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jbGllbnRf
Y2VydC5wMTIgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2xpZW50X2NlcnQucDEyCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAxNGUxMzk5Mjc5ODJmYTk4MjNhNTcyMzFhZjExMzQ5OWQ2YTVh
OGIwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI1ODIKemNtWStGWEgqamk3S01g
IzB0QmcycXpGaXRQIWY8UEhBLSpOTG9AVl9nY2YwdDhXQigjST97JVlSRngqdWAlKXlKCnoxbkch
SzM1YnFoWHJYN0FiOVElamY4NnVseCVadi0+JUheQWFacHdla1A0MllufWc2diNPdVlBOEd0bXZW
alNJagp6RnBoNVUoKFolZkFTd1N1a1lYR3A9RipBKTBSZmk8YCVlT2ReRnBCaS1mI3M3ZmlyPz4y
Y1ckVCM7MipHQVBfQWUKejFfI2xybjJFKGVLT01KNk4yNllKbmVfQGhwfVNLUFhVQjdGTWVyX341
fDFxZ0N7VHFubkJ1djEka3BwNU9CeiVACno8bXlTdys/WT5eakFaNCNYQS19KiFRc2J1T2hXKHNP
ODM2NigkOygxQT5tbyhPLSV4KGhuKD15Wjt5fk5HI1FYMQp6Z0hrU2leXjhjdjRUVFNMOXZuNXFS
KD5fRDNmJm9jKmp3UGdJI0tAUSNBc0wpRDtCRCZXYjJkK0kxXko3bj59WVoKemJDWG85Zk9AZyFA
ZFdZYTJWJX07KSF7PHpEY3wocHZKSWF4VzdOZE8lTzZmPnImYU9ycEhre29fUjltUTQ3dW9iCno/
bD45fG58WDNgYWdwXkc7THdYUjU8KGxyK1I8Y0w1alRRKD9eRDxrUm8hSF9UI3A/eTNkfV50Q1lW
IThSXk4/fQp6QyolWG05TGVmPmo3aGxyLT9qSGxwfHdmQSZebi1zOzwheiRxRDF4UHEhOEtRMX1+
ZHVwd35CTTFnc35AQW87Q3EKendSZ1V8Ml5kfU4tZ1Y7QGFZa3U4SSV9fDxsNlFNPz1kfkZZcGJH
Rkg5JnZOZ0taKlN5Y0lTfG1jdU9SP2wmQ093Cnpze3pkNXptZWx4cU4xRFF5e31QZ0I9dSNmeklO
UGtCMG9OKmNrM3ZgKzF7IVlYUH57RVZJN1ZxaCp+dWFXX35VQwp6bFIzM1JaMDVIaGtDLTFlSXAp
LUBZXnl2Yy18UiUhKjlkdzduZlcpeWpjSElZZjZyPWFDdChVaGktRkptMm57XykKeiV7dWxCVVhS
YDI8Pmx4fWVHbVNtUko+NW90a0AoK3Bqc1BxOzRoWjZGSUtsI3tueFAhQUwhMjhfX0FZZmxgVmd7
CnpsUlJhQVJ8Vm15MV9gXmJialpyekF7USRsWWVqSVlkXkEkWj5XJmp5bk09S2BUbDR3Vikzd0Bk
MUpjYC01LUNHSgp6eHFeQDhfKCE8WkYycWxoX1p9fW5yP1MmNSp6K0ZAKXYoWjFFSXM7SG19ITF+
TVRMIWoxQGMkWkhMUn1WKD07Xm8KemRVcGZ5P28+eXpvbF9zaTw8VUVCPXQoZWVCemdKXldZd3NI
Q0c5MzRzJGQpQHFxSHdnXnlaTXtgXmpKITk7dHI2Cnplb1VheSYkK0J5R3xOXl96b0FIXnRZSWc+
aGFZd3xAfGMzMV53KG5VZDdrKFltRUo3NlZZNzkrKEMoXyQ7MU1zVQp6aGlOaStCNWdTckRqfDk+
PEA/NlImOHpibThicj9DLU5uMWNrKCs8TkslNyk2di13V3E0PU1fVGJ0MTk0elUqeUYKemg8b3Q8
SEJXbm94QiUxazkoTTBvPE5nKVJnSFMoIz9lZEVRQiFefEZrLV8oYWBiVUJMQUsqaH5hen4hX3h1
PVQ0Cno2RzVLLWFYSm90SFFsRUM4Q1U1fFJ5TVJ1UWtYRSk/XnY2KGk9TXUpPSRebyUwIXlzNUdW
UmFYWjJTMkg0STgzTAp6cSliYHxQeHsoODlXMzJ6cTRzcXpIK0JBS1A5dWFERXBEOElJQTlELUg0
NUMlVlQ/SkojTWErQkBpOU1QZEYtIyMKek54RjVUdX1pel9oeiRTS1owX18mIVlwMXlhZFZ6b2NA
RXkrQmVmSkN0Q1NWZDUoSnkoPEM2SWNDV31EbUh3QzhUCnpSe2txdlJAPzNyekxHMiRaZGN4LTV2
RlJAZCRRI0REK357ZGhAbWRfZWBCQjYqVVk2Uis0XiNVJXo0bHR4OUIlOwp6TlY4eip7R2NHTTtn
cTJSdHlkantIMFMwcCN6PDYlN20zISV7P01RdWE8YEBlNWJPdGJkIUVjP0dedXhmNGd4Y0kKei1G
N1NUWWl+dkRibXZDWjNORGNmSGo4PkM5RlY2amQxfShwU3dyZ0drKlFaOVJyNCk2IXNTa1RVcWJ4
YmFlYTJ1Cnp3U2AkeW9zUSllYiVvX3ZKTyohQWBkUjtZNGs+JnFZenVhLVpORTwzRkU9SStlU1U7
eCFwdF5BMzU+b0lvUGBKcQp6Wmx+KXJDNjBMK2tTeEFnb1BFfHJHalZAPzJBeSpYYj0kY2BjX0wz
PUV6aGpCVUQ9aDFfNCVlQkNmbGomRUhabU8KenN7MWJ8TnV4Nis7SyNLQj1Ua198aWt8eyowMWRr
JDlLYTZgY1JVPU1jWWlOIWstYSkyUEQzMWg8Y1RzJWtQaG9aCnpPKTJ3X1Q5LTh3Mk5NJiZxMnBs
NF5LcX1DUGU9bDlocSRXNCF0O0pEJXxVSigyOHZEYk0qTD5WRjdiV19Ye2IxNAp6R053KHc+RV9T
OWA8O3hRbFBgQHNkPjZtM24yKUwpMHAhWFJyRCMyNWlJa1JEcykxdWpOJVNzeXcjNjJ2ZHYmQWwK
emNkai1ZbCM2K0BhMFdzY1U8M2BndlckMnctKF5IZkVSeXhzTnNxNm1LMGQ4Oz8wTFNlTmglTkVl
MEJZSjRJTChhCnokV1huZClQQlc8QVRre3klMlM5R1BhMnF5SlckXkpKX2NvX1hQMW05RX1qKVE/
XmwkIypNRHhQNXxtWTF6Y3EzeQp6Yj1AenlDWHVnd2R7Tmp4P2kyN2orelhPNCpWPn1aZS16QlF4
KUh5bndMYE5qKCE5dCk1NGRPO3pUVn4tTyM7VTsKek13cDBQVS11VUw/IyM4TC0pJnZtYm5BbW4j
QCZhPnY9Y1B9RVVRSlZ3YUR3OVY8LUl3WXRpVDl3KFRNZWEyJUR5Cnp8QTQwJE41dW9pUUVeX3tT
MS1pYHE1bHR0cGc+U0Q0cGFmaGZsQnw2UEU+IT5zaFdrb0VtWmhnK34wSHA8M0tUQAp6OWprJHFN
Qz0wJkJia15mUm80ZjM4Sn5pV0N8eEdQMGB3WjNGI2s4ZypJZE5ZJEdGLUF4OF48RHJCXmoyOFhi
NnMKelJ8O1Z2YXIlPHxUWkt+PjMwa0QzKVckQUQjKHR0YCNAeDdROE9ZYXBUX0p5TTF2VD9sYngt
K19GKEpGJXlTME8kCnpwUyNsfXcqMGo+Yn1NM2U7NEk+e3BNTT5zJWA/ZlNBRV9RYmBBbj5fViFr
aX0kOXdNTjkoZlUxdUpHbTBNaTdoSwp6QTVsMGUxd1ZjXiRxbD81Z20+OEV2QnBTYVdmNVRJZzNa
U2J1SmhwO2ElKFora2N7Y2R2MVB1WCRlMkdBTj9KZjgKeldLTmdTPChNMkZOVWBSeGRCR31mPVMx
cm5RKmVSMTJxRl9DJiZwbkBgeSVDfkw5XlFfWjlsaCZHPVh2R0MhNDEwCnp5bik1bz0peDJpSlkr
Xj9eRUxqbnRISGB9Syl6YT9JPXx2ISRoTDBuJkd6eXB6YUx3TmRlTT1Pald8LS09bVJfagp6eXQ/
flZ4X185QkV2Y2hMPzlodVVvYi01bityMT88eEBjZ301YXxWfEZjRlFPKmVJcHdaRW5+VkdMZXF2
U0BXazIKeikhK0QzLTt7NEBPTyliK2JRTyM9LUUrQmVPQGYhMzxpVDBtYjJwYjM4OHtHSVJhcmpk
blRpJUA/NHF3eSNxNjBZCnpxaUF8e3Q2bzQ5RU0xOEomdzhEQSN3UUREc0Z3TiRIRypNVEwyMUJR
ailZUmBXNUw7WmZNTTwqckw9RklnfDBiSgp6VDlyN0ZsQkxMXnJWJTFVTyEzfEdERWFNIWpIUExy
PzVRQnVDQyFXKT5kcmZeUkNgYDdZUllaKEs+aWUwPnBKZF4KekpXX0h7JSleYyE2Pmx8OVA4P2M9
aihCNTdZSno4P1h5UXpFOXVHYX1kVjBQVHAzITtwIVNGKX10LWk+QzxFZEgrCnpNS0FTblYjISZT
V2ZkfTBkbGpYc3lRZnpzQDZpMCtkcVNISkx+Rjd+b3R8JEh3ZitGKjBqQ0sqdzVXb0ZAUTloTgp6
aGxrJVN7aDZDNTdDSTJfNVI5O2YzO3AtMT5EVW4qVV5lb0dqaHFvOypSKiRrVkUwMUo+VEpRUnN2
OW96JmshM3oKemtXVDsqMFFlME0zVUNMdzBEPUorZkdmY0Z2SlV8YFVkc0tfMzR0VHZIe2YmLVk4
V0ZHaD9eUCFYNTt5PUZadURzCmZmcldrMCVNKE9HblRNTjxoJnFAeUxkRFVfJk1jQWY/fDFrTWVq
VU5vCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jZXJ0L2tleS5wZW0gYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L2NlcnQva2V5LnBlbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmFlODU4MzE4
ZjI5YmE2YjQ2MjNiZDVmYmM0YTA4Y2U3M2Q5MDMxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQva2V5LnBlbQorKysgL2Rl
di9udWxsCkBAIC0xLDE1ICswLDAgQEAKLS0tLS0tQkVHSU4gUlNBIFBSSVZBVEUgS0VZLS0tLS0K
LU1JSUNYZ0lCQUFLQmdRRGVFTTQ2V2dTa0hDbVRYQ09DR3ZJR0FlWXJwQS9kZDBsMmlRT2lJZDRF
ZGNiaTNmczEKLUp6cWlrbzRTWWlzK0gvUjQzN2FVeXlmV3k5WTMxMXdJOEFrK3ljNGtMUURKMzBy
Z21lWDdJNm5pMXNrOWx2b0IKLWlONWFpYkRQQTJkdkJJWWQ3MkljVmFrSG1pNW1Lbk5iVEdJRCtZ
S0QyMmkvdUVzTGk1TVJ1RlJ6ZXdJREFRQUIKLUFvR0JBSXVDdVYxVmNuYjdybThDd3RnWlA1WGdt
WTh2U2p4VGxkYWZhNlh2YXdFWVVUUDBTNzd2LzFsbGcxWXYKLVVJVitJK1BRZ0c5b1ZvWU9sMjJM
b2ltSFMvWjNlMWZzb3Q1dERZc3pHZTgvR2tzdDRvYVJlU294dkJVYTZXWHAKLVFTbzdZRkNhanVI
dEUrVy9nekYrVUhiZHp6WElEalFaMzE0TE5GNXQrNFVuc0VQQkFrRUErZ2lySW1xV29NMnQKLTNV
UjhmOG9la0VSd3NtRU1mOURINVlwSDRjdlVudkkra3dlc0MvcjJVOFNobysrZnlFTVVObTdhSVhH
cU5MZ2EKLW9nQU0rNE5YNFFKQkFPTmRTeFNheTIyZWdUR05vSWhMbmRsaldrdU90LzlGV2oya2xm
LzRReEQ0YmxNSlE1T3EKLVFkT0dBaDduVlFqcFBMUTVEN0NCVkFLcEdNMkNEK1FKQnRzQ1FFUDJr
ejM1cHhQeWxHM3VyY0MybWZReEJra1cKLVpDVmlCTlA1OEd3SjBiT2F1VE9TQkV3RlhXdUxxVHc4
YUR3eEw0OVVObXFjME4wZnBlMmZBZWhqM1VFQ1FRQ20KLUZIL0RqVThMdzd5YmRkak50bTZYWFB1
WU5hZ3h6M2Nia0I0QjNGY2hEbGVJVUR3TW9WRjBNVzliSTUvNTRtVjEKLVFEazF0VUtvcnR4dlFa
SmFBRDRCQWtFQWhHT0hRcVBkNmJCQm9GQnZwYUx6UEpNeHdMS3JCK1d0a3EvUWxDNzIKLUNsUmlN
bjJnOFNBTGlJTDNCRGdHWEtjS0UvV3k3am8vYWYvSkN6US9jUHF0L0E9PQotLS0tLS1FTkQgUlNB
IFBSSVZBVEUgS0VZLS0tLS0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggN2JkNzAzZDgyMWVhNWJhZWUxNTU2MTFlZTg0N2YyNzBjYmEyNmY3
NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NlcnQvY2FjZXJ0LnBlbQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
Y2VydC9jZXJ0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2VydC9jbGllbnRfY2VydC5wMTIKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L2NlcnQva2V5LnBlbQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9jbGllbnRf
Zm9yX3Rlc3RpbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzdmODA1ZWU5NGU1NDk0NjllZDg3MGRhZTdlMGNj
ZjIwMjZiZWFiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQorKysgL2Rldi9udWxsCkBAIC0x
LDExMDAgKzAsMCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEy
LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LQotCi0iIiJXZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRlc3RpbmcuCi0KLVRoaXMgbW9k
dWxlIGNvbnRhaW5zIGhlbHBlciBtZXRob2RzIGZvciBwZXJmb3JtaW5nIGhhbmRzaGFrZSwgZnJh
bWUKLXNlbmRpbmcvcmVjZWl2aW5nIGFzIGEgV2ViU29ja2V0IGNsaWVudC4KLQotVGhpcyBpcyBj
b2RlIGZvciB0ZXN0aW5nIG1vZF9weXdlYnNvY2tldC4gS2VlcCB0aGlzIGNvZGUgaW5kZXBlbmRl
bnQgZnJvbQotbW9kX3B5d2Vic29ja2V0LiBEb24ndCBpbXBvcnQgZS5nLiBTdHJlYW0gY2xhc3Mg
Zm9yIGdlbmVyYXRpbmcgZnJhbWUgZm9yCi10ZXN0aW5nLiBVc2luZyB1dGlsLmhleGlmeSwgZXRj
LiB0aGF0IGFyZSBub3QgcmVsYXRlZCB0byBwcm90b2NvbCBwcm9jZXNzaW5nCi1pcyBhbGxvd2Vk
LgotCi1Ob3RlOgotVGhpcyBjb2RlIGlzIGZhciBmcm9tIHJvYnVzdCwgZS5nLiwgd2UgY3V0IGNv
cm5lcnMgaW4gaGFuZHNoYWtlLgotIiIiCi0KLQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGVycm5v
Ci1pbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgcmUKLWlt
cG9ydCBzb2NrZXQKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCB0aW1lCi0KLWZyb20gbW9kX3B5d2Vi
c29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0K
LQotREVGQVVMVF9QT1JUID0gODAKLURFRkFVTFRfU0VDVVJFX1BPUlQgPSA0NDMKLQotIyBPcGNv
ZGVzIGludHJvZHVjZWQgaW4gSUVURiBIeUJpIDAxIGZvciB0aGUgbmV3IGZyYW1pbmcgZm9ybWF0
Ci1PUENPREVfQ09OVElOVUFUSU9OID0gMHgwCi1PUENPREVfQ0xPU0UgPSAweDgKLU9QQ09ERV9Q
SU5HID0gMHg5Ci1PUENPREVfUE9ORyA9IDB4YQotT1BDT0RFX1RFWFQgPSAweDEKLU9QQ09ERV9C
SU5BUlkgPSAweDIKLQotIyBTdHJpbmdzIHVzZWQgZm9yIGhhbmRzaGFrZQotX1VQR1JBREVfSEVB
REVSID0gJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi1fVVBHUkFERV9IRUFERVJfSElYSUU3NSA9
ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotX0NPTk5FQ1RJT05fSEVBREVSID0gJ0Nvbm5lY3Rp
b246IFVwZ3JhZGVcclxuJwotCi1XRUJTT0NLRVRfQUNDRVBUX1VVSUQgPSAnMjU4RUFGQTUtRTkx
NC00N0RBLTk1Q0EtQzVBQjBEQzg1QjExJwotCi0jIFN0YXR1cyBjb2RlcwotU1RBVFVTX05PUk1B
TF9DTE9TVVJFID0gMTAwMAotU1RBVFVTX0dPSU5HX0FXQVkgPSAxMDAxCi1TVEFUVVNfUFJPVE9D
T0xfRVJST1IgPSAxMDAyCi1TVEFUVVNfVU5TVVBQT1JURURfREFUQSA9IDEwMDMKLVNUQVRVU19O
T19TVEFUVVNfUkVDRUlWRUQgPSAxMDA1Ci1TVEFUVVNfQUJOT1JNQUxfQ0xPU1VSRSA9IDEwMDYK
LVNUQVRVU19JTlZBTElEX0ZSQU1FX1BBWUxPQURfREFUQSA9IDEwMDcKLVNUQVRVU19QT0xJQ1lf
VklPTEFUSU9OID0gMTAwOAotU1RBVFVTX01FU1NBR0VfVE9PX0JJRyA9IDEwMDkKLVNUQVRVU19N
QU5EQVRPUllfRVhUID0gMTAxMAotU1RBVFVTX0lOVEVSTkFMX0VORFBPSU5UX0VSUk9SID0gMTAx
MQotU1RBVFVTX1RMU19IQU5EU0hBS0UgPSAxMDE1Ci0KLSMgRXh0ZW5zaW9uIHRva2VucwotX0RF
RkxBVEVfRlJBTUVfRVhURU5TSU9OID0gJ2RlZmxhdGUtZnJhbWUnCi0jIFRPRE8oYmFzaGkpOiBV
cGRhdGUgYWZ0ZXIgbXV4IGltcGxlbWVudGF0aW9uIGZpbmlzaGVkLgotX01VWF9FWFRFTlNJT04g
PSAnbXV4X0RPX05PVF9VU0UnCi1fUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTiA9ICdwZXJt
ZXNzYWdlLWRlZmxhdGUnCi0KLWRlZiBfbWV0aG9kX2xpbmUocmVzb3VyY2UpOgotICAgIHJldHVy
biAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSByZXNvdXJjZQotCi0KLWRlZiBfc2VjX29yaWdpbl9o
ZWFkZXIob3JpZ2luKToKLSAgICByZXR1cm4gJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiAlc1xyXG4n
ICUgb3JpZ2luLmxvd2VyKCkKLQotCi1kZWYgX29yaWdpbl9oZWFkZXIob3JpZ2luKToKLSAgICAj
IDQuMSAxMy4gY29uY2F0ZW5hdGlvbiBvZiB0aGUgc3RyaW5nICJPcmlnaW46IiwgYSBVKzAwMjAg
U1BBQ0UgY2hhcmFjdGVyLAotICAgICMgYW5kIHRoZSAvb3JpZ2luLyB2YWx1ZSwgY29udmVydGVk
IHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8gL2ZpZWxkcy8uCi0gICAgcmV0dXJuICdPcmlnaW46ICVz
XHJcbicgJSBvcmlnaW4ubG93ZXIoKQotCi0KLWRlZiBfZm9ybWF0X2hvc3RfaGVhZGVyKGhvc3Qs
IHBvcnQsIHNlY3VyZSk6Ci0gICAgIyA0LjEgOS4gTGV0IC9ob3N0cG9ydC8gYmUgYW4gZW1wdHkg
c3RyaW5nLgotICAgICMgNC4xIDEwLiBBcHBlbmQgdGhlIC9ob3N0LyB2YWx1ZSwgY29udmVydGVk
IHRvIEFTQ0lJIGxvd2VyY2FzZSwgdG8KLSAgICAjIC9ob3N0cG9ydC8KLSAgICBob3N0cG9ydCA9
IGhvc3QubG93ZXIoKQotICAgICMgNC4xIDExLiBJZiAvc2VjdXJlLyBpcyBmYWxzZSwgYW5kIC9w
b3J0LyBpcyBub3QgODAsIG9yIGlmIC9zZWN1cmUvCi0gICAgIyBpcyB0cnVlLCBhbmQgL3BvcnQv
IGlzIG5vdCA0NDMsIHRoZW4gYXBwZW5kIGEgVSswMDNBIENPTE9OIGNoYXJhY3RlcgotICAgICMg
KDopIGZvbGxvd2VkIGJ5IHRoZSB2YWx1ZSBvZiAvcG9ydC8sIGV4cHJlc3NlZCBhcyBhIGJhc2Ut
dGVuIGludGVnZXIsCi0gICAgIyB0byAvaG9zdHBvcnQvCi0gICAgaWYgKChub3Qgc2VjdXJlIGFu
ZCBwb3J0ICE9IERFRkFVTFRfUE9SVCkgb3IKLSAgICAgICAgKHNlY3VyZSBhbmQgcG9ydCAhPSBE
RUZBVUxUX1NFQ1VSRV9QT1JUKSk6Ci0gICAgICAgIGhvc3Rwb3J0ICs9ICc6JyArIHN0cihwb3J0
KQotICAgICMgNC4xIDEyLiBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmcgIkhvc3Q6IiwgYSBV
KzAwMjAgU1BBQ0UKLSAgICAjIGNoYXJhY3RlciwgYW5kIC9ob3N0cG9ydC8sIHRvIC9maWVsZHMv
LgotICAgIHJldHVybiAnSG9zdDogJXNcclxuJyAlIGhvc3Rwb3J0Ci0KLQotIyBUT0RPKHR5b3No
aW5vKTogRGVmaW5lIGEgYmFzZSBjbGFzcyBhbmQgbW92ZSB0aGVzZSBzaGFyZWQgbWV0aG9kcyB0
byB0aGF0LgotCi0KLWRlZiByZWNlaXZlX2J5dGVzKHNvY2tldCwgbGVuZ3RoKToKLSAgICByZWNl
aXZlZF9ieXRlcyA9IFtdCi0gICAgcmVtYWluaW5nID0gbGVuZ3RoCi0gICAgd2hpbGUgcmVtYWlu
aW5nID4gMDoKLSAgICAgICAgbmV3X3JlY2VpdmVkX2J5dGVzID0gc29ja2V0LnJlY3YocmVtYWlu
aW5nKQotICAgICAgICBpZiBub3QgbmV3X3JlY2VpdmVkX2J5dGVzOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUg
cmVjZWl2aW5nIHJlcXVlc3RlZCBsZW5ndGggJwotICAgICAgICAgICAgICAgICcocmVxdWVzdGVk
ICVkIGJ5dGVzIGJ1dCByZWNlaXZlZCBvbmx5ICVkIGJ5dGVzKScgJQotICAgICAgICAgICAgICAg
IChsZW5ndGgsIGxlbmd0aCAtIHJlbWFpbmluZykpCi0gICAgICAgIHJlY2VpdmVkX2J5dGVzLmFw
cGVuZChuZXdfcmVjZWl2ZWRfYnl0ZXMpCi0gICAgICAgIHJlbWFpbmluZyAtPSBsZW4obmV3X3Jl
Y2VpdmVkX2J5dGVzKQotICAgIHJldHVybiAnJy5qb2luKHJlY2VpdmVkX2J5dGVzKQotCi0KLSMg
VE9ETyh0eW9zaGlubyk6IE5vdyB0aGUgV2ViU29ja2V0SGFuZHNoYWtlIGNsYXNzIGRpdmVydHMg
dGhlc2UgbWV0aG9kcy4gV2UKLSMgc2hvdWxkIG1vdmUgdG8gSFRUUCBwYXJzZXIgYXMgc3BlY2lm
aWVkIGluIFJGQyA2NDU1LiBGb3IgSHlCaSAwMCBhbmQKLSMgSGl4aWUgNzUsIHBhY2sgdGhlc2Ug
bWV0aG9kcyBhcyBzb21lIHBhcnNlciBjbGFzcy4KLQotCi1kZWYgX3JlYWRfZmllbGRzKHNvY2tl
dCk6Ci0gICAgIyA0LjEgMzIuIGxldCAvZmllbGRzLyBiZSBhIGxpc3Qgb2YgbmFtZS12YWx1ZSBw
YWlycywgaW5pdGlhbGx5IGVtcHR5LgotICAgIGZpZWxkcyA9IHt9Ci0gICAgd2hpbGUgVHJ1ZToK
LSAgICAgICAgIyA0LjEgMzMuIGxldCAvbmFtZS8gYW5kIC92YWx1ZS8gYmUgZW1wdHkgYnl0ZSBh
cnJheXMKLSAgICAgICAgbmFtZSA9ICcnCi0gICAgICAgIHZhbHVlID0gJycKLSAgICAgICAgIyA0
LjEgMzQuIHJlYWQgL25hbWUvCi0gICAgICAgIG5hbWUgPSBfcmVhZF9uYW1lKHNvY2tldCkKLSAg
ICAgICAgaWYgbmFtZSBpcyBOb25lOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyA0LjEg
MzUuIHJlYWQgc3BhY2VzCi0gICAgICAgICMgVE9ETyh0eW9zaGlubyk6IFNraXAgb25seSBvbmUg
c3BhY2UgYXMgZGVzY3JpYmVkIGluIHRoZSBzcGVjLgotICAgICAgICBjaCA9IF9za2lwX3NwYWNl
cyhzb2NrZXQpCi0gICAgICAgICMgNC4xIDM2LiByZWFkIC92YWx1ZS8KLSAgICAgICAgdmFsdWUg
PSBfcmVhZF92YWx1ZShzb2NrZXQsIGNoKQotICAgICAgICAjIDQuMSAzNy4gcmVhZCBhIGJ5dGUg
ZnJvbSB0aGUgc2VydmVyCi0gICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCi0g
ICAgICAgIGlmIGNoICE9ICdcbic6ICAjIDB4MEEKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlv
bigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgTEYgYnV0IGZvdW5kICVyIHdoaWxlIHJlYWRp
bmcgdmFsdWUgJXIgZm9yIGhlYWRlciAnCi0gICAgICAgICAgICAgICAgJyVyJyAlIChjaCwgbmFt
ZSwgdmFsdWUpKQotICAgICAgICAjIDQuMSAzOC4gYXBwZW5kIGFuIGVudHJ5IHRvIHRoZSAvZmll
bGRzLyBsaXN0IHRoYXQgaGFzIHRoZSBuYW1lCi0gICAgICAgICMgZ2l2ZW4gYnkgdGhlIHN0cmlu
ZyBvYnRhaW5lZCBieSBpbnRlcnByZXRpbmcgdGhlIC9uYW1lLyBieXRlCi0gICAgICAgICMgYXJy
YXkgYXMgYSBVVEYtOCBzdHJlYW0gYW5kIHRoZSB2YWx1ZSBnaXZlbiBieSB0aGUgc3RyaW5nCi0g
ICAgICAgICMgb2J0YWluZWQgYnkgaW50ZXJwcmV0aW5nIHRoZSAvdmFsdWUvIGJ5dGUgYXJyYXkg
YXMgYSBVVEYtOCBieXRlCi0gICAgICAgICMgc3RyZWFtLgotICAgICAgICBmaWVsZHMuc2V0ZGVm
YXVsdChuYW1lLCBbXSkuYXBwZW5kKHZhbHVlKQotICAgICAgICAjIDQuMSAzOS4gcmV0dXJuIHRv
IHRoZSAiRmllbGQiIHN0ZXAgYWJvdmUKLSAgICByZXR1cm4gZmllbGRzCi0KLQotZGVmIF9yZWFk
X25hbWUoc29ja2V0KToKLSAgICAjIDQuMSAzMy4gbGV0IC9uYW1lLyBiZSBlbXB0eSBieXRlIGFy
cmF5cwotICAgIG5hbWUgPSAnJwotICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICMgNC4xIDM0LiBy
ZWFkIGEgYnl0ZSBmcm9tIHRoZSBzZXJ2ZXIKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNv
Y2tldCwgMSkKLSAgICAgICAgaWYgY2ggPT0gJ1xyJzogICMgMHgwRAotICAgICAgICAgICAgcmV0
dXJuIE5vbmUKLSAgICAgICAgZWxpZiBjaCA9PSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICBy
YWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFk
aW5nIGhlYWRlciBuYW1lICVyJyAlIG5hbWUpCi0gICAgICAgIGVsaWYgY2ggPT0gJzonOiAgIyAw
eDNBCi0gICAgICAgICAgICByZXR1cm4gbmFtZQotICAgICAgICBlbGlmIGNoID49ICdBJyBhbmQg
Y2ggPD0gJ1onOiAgIyByYW5nZSAweDMxIHRvIDB4NUEKLSAgICAgICAgICAgIGNoID0gY2hyKG9y
ZChjaCkgKyAweDIwKQotICAgICAgICAgICAgbmFtZSArPSBjaAotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgbmFtZSArPSBjaAotCi0KLWRlZiBfc2tpcF9zcGFjZXMoc29ja2V0KToKLSAgICAj
IDQuMSAzNS4gcmVhZCBhIGJ5dGUgZnJvbSB0aGUgc2VydmVyCi0gICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMSkKLSAgICAgICAgaWYgY2ggPT0gJyAn
OiAgIyAweDIwCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICByZXR1cm4gY2gKLQotCi1k
ZWYgX3JlYWRfdmFsdWUoc29ja2V0LCBjaCk6Ci0gICAgIyA0LjEgMzMuIGxldCAvdmFsdWUvIGJl
IGVtcHR5IGJ5dGUgYXJyYXlzCi0gICAgdmFsdWUgPSAnJwotICAgICMgNC4xIDM2LiByZWFkIGEg
Ynl0ZSBmcm9tIHNlcnZlci4KLSAgICB3aGlsZSBUcnVlOgotICAgICAgICBpZiBjaCA9PSAnXHIn
OiAgIyAweDBECi0gICAgICAgICAgICByZXR1cm4gdmFsdWUKLSAgICAgICAgZWxpZiBjaCA9PSAn
XG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJ1VuZXhwZWN0ZWQgTEYgd2hlbiByZWFkaW5nIGhlYWRlciB2YWx1ZSAlcicgJSB2YWx1ZSkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHZhbHVlICs9IGNoCi0gICAgICAgIGNoID0gcmVj
ZWl2ZV9ieXRlcyhzb2NrZXQsIDEpCi0KLQotZGVmIHJlYWRfZnJhbWVfaGVhZGVyKHNvY2tldCk6
Ci0gICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgMikKLQotICAgIGZpcnN0X2J5
dGUgPSBvcmQocmVjZWl2ZWRbMF0pCi0gICAgZmluID0gKGZpcnN0X2J5dGUgPj4gNykgJiAxCi0g
ICAgcnN2MSA9IChmaXJzdF9ieXRlID4+IDYpICYgMQotICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA+
PiA1KSAmIDEKLSAgICByc3YzID0gKGZpcnN0X2J5dGUgPj4gNCkgJiAxCi0gICAgb3Bjb2RlID0g
Zmlyc3RfYnl0ZSAmIDB4ZgotCi0gICAgc2Vjb25kX2J5dGUgPSBvcmQocmVjZWl2ZWRbMV0pCi0g
ICAgbWFzayA9IChzZWNvbmRfYnl0ZSA+PiA3KSAmIDEKLSAgICBwYXlsb2FkX2xlbmd0aCA9IHNl
Y29uZF9ieXRlICYgMHg3ZgotCi0gICAgaWYgbWFzayAhPSAwOgotICAgICAgICByYWlzZSBFeGNl
cHRpb24oCi0gICAgICAgICAgICAnTWFzayBiaXQgbXVzdCBiZSAwIGZvciBmcmFtZXMgY29taW5n
IGZyb20gc2VydmVyJykKLQotICAgIGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNzoKLSAgICAgICAg
ZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwgOCkKLSAgICAg
ICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAgJyFRJywgZXh0
ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0gICAgICAgIGlmIHBheWxvYWRfbGVuZ3RoID4gMHg3
RkZGRkZGRkZGRkZGRkZGOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdFeHRlbmRlZCBw
YXlsb2FkIGxlbmd0aCA+PSAyXjYzJykKLSAgICBlbGlmIHBheWxvYWRfbGVuZ3RoID09IDEyNjoK
LSAgICAgICAgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGggPSByZWNlaXZlX2J5dGVzKHNvY2tldCwg
MikKLSAgICAgICAgcGF5bG9hZF9sZW5ndGggPSBzdHJ1Y3QudW5wYWNrKAotICAgICAgICAgICAg
JyFIJywgZXh0ZW5kZWRfcGF5bG9hZF9sZW5ndGgpWzBdCi0KLSAgICByZXR1cm4gZmluLCByc3Yx
LCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWRfbGVuZ3RoCi0KLQotY2xhc3MgX1RMU1NvY2tl
dChvYmplY3QpOgotICAgICIiIldyYXBwZXIgZm9yIGEgVExTIGNvbm5lY3Rpb24uIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcmF3X3NvY2tldCk6Ci0gICAgICAgIHNlbGYuX3NzbCA9IHNv
Y2tldC5zc2wocmF3X3NvY2tldCkKLQotICAgIGRlZiBzZW5kKHNlbGYsIGJ5dGVzKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYuX3NzbC53cml0ZShieXRlcykKLQotICAgIGRlZiByZWN2KHNlbGYsIHNp
emU9LTEpOgotICAgICAgICByZXR1cm4gc2VsZi5fc3NsLnJlYWQoc2l6ZSkKLQotICAgIGRlZiBj
bG9zZShzZWxmKToKLSAgICAgICAgIyBOb3RoaW5nIHRvIGRvLgotICAgICAgICBwYXNzCi0KLQot
Y2xhc3MgSHR0cFN0YXR1c0V4Y2VwdGlvbihFeGNlcHRpb24pOgotICAgICIiIlRoaXMgZXhjZXB0
aW9uIHdpbGwgYmUgcmFpc2VkIHdoZW4gdW5leHBlY3RlZCBodHRwIHN0YXR1cyBjb2RlIHdhcwot
ICAgIHJlY2VpdmVkIGFzIGEgcmVzdWx0IG9mIGhhbmRzaGFrZS4KLSAgICAiIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBzdGF0dXMpOgotICAgICAgICBzdXBlcihIdHRwU3RhdHVz
RXhjZXB0aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lKQotICAgICAgICBzZWxmLnN0YXR1cyA9IHN0
YXR1cwotCi0KLWNsYXNzIFdlYlNvY2tldEhhbmRzaGFrZShvYmplY3QpOgotICAgICIiIk9wZW5p
bmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCAoUkZDIDY0
NTUpLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlvbnMpOgotICAgICAgICBzZWxm
Ll9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIoc2VsZikKLQotICAgICAgICBzZWxmLl9v
cHRpb25zID0gb3B0aW9ucwotCi0gICAgZGVmIGhhbmRzaGFrZShzZWxmLCBzb2NrZXQpOgotICAg
ICAgICAiIiJIYW5kc2hha2UgV2ViU29ja2V0LgotCi0gICAgICAgIFJhaXNlczoKLSAgICAgICAg
ICAgIEV4Y2VwdGlvbjogaGFuZHNoYWtlIGZhaWxlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAg
c2VsZi5fc29ja2V0ID0gc29ja2V0Ci0KLSAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9s
aW5lKHNlbGYuX29wdGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1Zygn
T3BlbmluZyBoYW5kc2hha2UgUmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKLSAgICAg
ICAgc2VsZi5fc29ja2V0LnNlbmRhbGwocmVxdWVzdF9saW5lKQotCi0gICAgICAgIGZpZWxkcyA9
IFtdCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoX1VQR1JBREVfSEVBREVSKQotICAgICAgICBmaWVs
ZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKF9m
b3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9ob3N0
LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAgIHNl
bGYuX29wdGlvbnMudXNlX3RscykpCi0KLSAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJzaW9u
IGlzIDg6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKF9zZWNfb3JpZ2luX2hlYWRlcihzZWxm
Ll9vcHRpb25zLm9yaWdpbikpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWVsZHMuYXBw
ZW5kKF9vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKLQotICAgICAgICBvcmln
aW5hbF9rZXkgPSBvcy51cmFuZG9tKDE2KQotICAgICAgICBrZXkgPSBiYXNlNjQuYjY0ZW5jb2Rl
KG9yaWdpbmFsX2tleSkKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAgICAgICAgICAg
J1NlYy1XZWJTb2NrZXQtS2V5OiAlcyAoJXMpJywga2V5LCB1dGlsLmhleGlmeShvcmlnaW5hbF9r
ZXkpKQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LUtleTogJXNcclxuJyAl
IGtleSkKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LVZlcnNpb246ICVk
XHJcbicgJSBzZWxmLl9vcHRpb25zLnZlcnNpb24pCi0KLSAgICAgICAgIyBTZXR0aW5nIHVwIGV4
dGVuc2lvbnMuCi0gICAgICAgIGlmIGxlbihzZWxmLl9vcHRpb25zLmV4dGVuc2lvbnMpID4gMDoK
LSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczogJXNc
clxuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihzZWxmLl9vcHRpb25z
LmV4dGVuc2lvbnMpKQotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5k
c2hha2UgcmVxdWVzdCBoZWFkZXJzOiAlcicsIGZpZWxkcykKLQotICAgICAgICBmb3IgZmllbGQg
aW4gZmllbGRzOgotICAgICAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQpCi0gICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKCdcclxuJykKLQotICAgICAgICBzZWxmLl9sb2dnZXIu
aW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0JykKLQotICAgICAgICBmaWVsZCA9
ICcnCi0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMo
c2VsZi5fc29ja2V0LCAxKQotICAgICAgICAgICAgZmllbGQgKz0gY2gKLSAgICAgICAgICAgIGlm
IGNoID09ICdcbic6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlc3BvbnNlLUxpbmU6ICVyJywgZmllbGQpCi0K
LSAgICAgICAgaWYgbGVuKGZpZWxkKSA8IDcgb3Igbm90IGZpZWxkLmVuZHN3aXRoKCdcclxuJyk6
Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1dyb25nIHN0YXR1cyBsaW5lOiAlcicgJSBm
aWVsZCkKLSAgICAgICAgbSA9IHJlLm1hdGNoKCdbXiBdKiAoW14gXSopIC4qJywgZmllbGQpCi0g
ICAgICAgIGlmIG0gaXMgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnTm8gSFRUUCBzdGF0dXMgY29kZSBmb3VuZCBpbiBzdGF0dXMgbGluZTogJXIn
ICUgZmllbGQpCi0gICAgICAgIGNvZGUgPSBtLmdyb3VwKDEpCi0gICAgICAgIGlmIG5vdCByZS5t
YXRjaCgnWzAtOV1bMC05XVswLTldJywgY29kZSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJ0hUVFAgc3RhdHVzIGNvZGUgJXIgaXMgbm90IHRocmVlIGRp
Z2l0IGluIHN0YXR1cyBsaW5lOiAlcicgJQotICAgICAgICAgICAgICAgIChjb2RlLCBmaWVsZCkp
Ci0gICAgICAgIGlmIGNvZGUgIT0gJzEwMSc6Ci0gICAgICAgICAgICByYWlzZSBIdHRwU3RhdHVz
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdFeHBlY3RlZCBIVFRQIHN0YXR1cyBjb2RlIDEw
MSBidXQgZm91bmQgJXIgaW4gc3RhdHVzIGxpbmU6ICcKLSAgICAgICAgICAgICAgICAnJXInICUg
KGNvZGUsIGZpZWxkKSwgaW50KGNvZGUpKQotICAgICAgICBmaWVsZHMgPSBfcmVhZF9maWVsZHMo
c2VsZi5fc29ja2V0KQotICAgICAgICBjaCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAx
KQotICAgICAgICBpZiBjaCAhPSAnXG4nOiAgIyAweDBBCi0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ0V4cGVjdGVkIExGIGJ1dCBmb3VuZDogJXInICUgY2gpCi0KLSAgICAgICAgc2VsZi5f
bG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXNwb25zZSBoZWFkZXJzOiAlcicsIGZp
ZWxkcykKLQotICAgICAgICAjIENoZWNrIC9maWVsZHMvCi0gICAgICAgIGlmIGxlbihmaWVsZHNb
J3VwZ3JhZGUnXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnTXVsdGlwbGUgVXBncmFkZSBoZWFkZXJzIGZvdW5kOiAlcycgJSBmaWVsZHNbJ3Vw
Z3JhZGUnXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snY29ubmVjdGlvbiddKSAhPSAxOgotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdNdWx0aXBsZSBDb25u
ZWN0aW9uIGhlYWRlcnMgZm91bmQ6ICVzJyAlIGZpZWxkc1snY29ubmVjdGlvbiddKQotICAgICAg
ICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVswXSAhPSAnd2Vic29ja2V0JzoKLSAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBVcGdyYWRlIGhlYWRl
ciB2YWx1ZTogJXMnICUgZmllbGRzWyd1cGdyYWRlJ11bMF0pCi0gICAgICAgIGlmIGZpZWxkc1sn
Y29ubmVjdGlvbiddWzBdLmxvd2VyKCkgIT0gJ3VwZ3JhZGUnOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVy
IHZhbHVlOiAlcycgJQotICAgICAgICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQot
Ci0gICAgICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtYWNjZXB0J10pICE9IDE6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011bHRpcGxlIFNl
Yy1XZWJTb2NrZXQtQWNjZXB0IGhlYWRlcnMgZm91bmQ6ICVzJyAlCi0gICAgICAgICAgICAgICAg
ZmllbGRzWydzZWMtd2Vic29ja2V0LWFjY2VwdCddKQotCi0gICAgICAgIGFjY2VwdCA9IGZpZWxk
c1snc2VjLXdlYnNvY2tldC1hY2NlcHQnXVswXQotCi0gICAgICAgICMgVmFsaWRhdGUKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgZGVjb2RlZF9hY2NlcHQgPSBiYXNlNjQuYjY0ZGVjb2RlKGFj
Y2VwdCkKLSAgICAgICAgZXhjZXB0IFR5cGVFcnJvciwgZToKLSAgICAgICAgICAgIHJhaXNlIEhh
bmRzaGFrZUV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSWxsZWdhbCB2YWx1ZSBmb3IgaGVh
ZGVyIFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAnICsgYWNjZXB0KQotCi0gICAgICAgIGlmIGxlbihk
ZWNvZGVkX2FjY2VwdCkgIT0gMjA6Ci0gICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFeGNlcHRp
b24oCi0gICAgICAgICAgICAgICAgJ0RlY29kZWQgdmFsdWUgb2YgU2VjLVdlYlNvY2tldC1BY2Nl
cHQgaXMgbm90IDIwLWJ5dGUgbG9uZycpCi0KLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdB
Y3R1YWwgU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVyICglcyknLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYWNjZXB0LCB1dGlsLmhleGlmeShkZWNvZGVkX2FjY2VwdCkpCi0KLSAgICAgICAg
b3JpZ2luYWxfZXhwZWN0ZWRfYWNjZXB0ID0gdXRpbC5zaGExX2hhc2goCi0gICAgICAgICAgICBr
ZXkgKyBXRUJTT0NLRVRfQUNDRVBUX1VVSUQpLmRpZ2VzdCgpCi0gICAgICAgIGV4cGVjdGVkX2Fj
Y2VwdCA9IGJhc2U2NC5iNjRlbmNvZGUob3JpZ2luYWxfZXhwZWN0ZWRfYWNjZXB0KQotCi0gICAg
ICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnRXhwZWN0ZWQgU2VjLVdlYlNvY2tldC1BY2NlcHQ6ICVy
ICglcyknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYWNjZXB0LAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkob3JpZ2luYWxfZXhwZWN0ZWRfYWNj
ZXB0KSkKLQotICAgICAgICBpZiBhY2NlcHQgIT0gZXhwZWN0ZWRfYWNjZXB0OgotICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdJbnZhbGlkIFNlYy1XZWJTb2Nr
ZXQtQWNjZXB0IGhlYWRlcjogJXIgKGV4cGVjdGVkKSAhPSAlciAnCi0gICAgICAgICAgICAgICAg
JyhhY3R1YWwpJyAlIChhY2NlcHQsIGV4cGVjdGVkX2FjY2VwdCkpCi0KLSAgICAgICAgc2VydmVy
X2V4dGVuc2lvbnNfaGVhZGVyID0gZmllbGRzLmdldCgnc2VjLXdlYnNvY2tldC1leHRlbnNpb25z
JykKLSAgICAgICAgYWNjZXB0ZWRfZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgIGlmIHNlcnZlcl9l
eHRlbnNpb25zX2hlYWRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGFjY2VwdGVkX2V4dGVu
c2lvbnMgPSBjb21tb24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICAgICAgICAgJywg
Jy5qb2luKHNlcnZlcl9leHRlbnNpb25zX2hlYWRlcikpCi0KLSAgICAgICAgIyBTY2FuIGFjY2Vw
dGVkIGV4dGVuc2lvbiBsaXN0IHRvIGNoZWNrIGlmIHRoZXJlIGlzIGFueSB1bnJlY29nbml6ZWQK
LSAgICAgICAgIyBleHRlbnNpb25zIG9yIGV4dGVuc2lvbnMgd2UgZGlkbid0IHJlcXVlc3QgaW4g
aXQuIFRoZW4sIGZvcgotICAgICAgICAjIGV4dGVuc2lvbnMgd2UgcmVxdWVzdCwgcGFyc2UgdGhl
bSBhbmQgc3RvcmUgcGFyYW1ldGVycy4gVGhleSB3aWxsIGJlCi0gICAgICAgICMgdXNlZCBsYXRl
ciBieSBlYWNoIGV4dGVuc2lvbi4KLSAgICAgICAgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCA9IEZh
bHNlCi0gICAgICAgIG11eF9hY2NlcHRlZCA9IEZhbHNlCi0gICAgICAgIGZvciBleHRlbnNpb24g
aW4gYWNjZXB0ZWRfZXh0ZW5zaW9uczoKLSAgICAgICAgICAgIGlmIGV4dGVuc2lvbi5uYW1lKCkg
PT0gX0RFRkxBVEVfRlJBTUVfRVhURU5TSU9OOgotICAgICAgICAgICAgICAgIGlmIHNlbGYuX29w
dGlvbnMudXNlX2RlZmxhdGVfZnJhbWU6Ci0gICAgICAgICAgICAgICAgICAgIGRlZmxhdGVfZnJh
bWVfYWNjZXB0ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAg
ICAgICBpZiBleHRlbnNpb24ubmFtZSgpID09IF9NVVhfRVhURU5TSU9OOgotICAgICAgICAgICAg
ICAgIGlmIHNlbGYuX29wdGlvbnMudXNlX211eDoKLSAgICAgICAgICAgICAgICAgICAgbXV4X2Fj
Y2VwdGVkID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
aWYgZXh0ZW5zaW9uLm5hbWUoKSA9PSBfUEVSTUVTU0FHRV9ERUZMQVRFX0VYVEVOU0lPTjoKLSAg
ICAgICAgICAgICAgICBjaGVja2VyID0gc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNzYWdlX2Rl
ZmxhdGUKLSAgICAgICAgICAgICAgICBpZiBjaGVja2VyOgotICAgICAgICAgICAgICAgICAgICBj
aGVja2VyKGV4dGVuc2lvbikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLQotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdSZWNlaXZlZCB1bnJlY29n
bml6ZWQgZXh0ZW5zaW9uOiAlcycgJSBleHRlbnNpb24ubmFtZSgpKQotCi0gICAgICAgICMgTGV0
IGFsbCBleHRlbnNpb25zIGNoZWNrIHRoZSByZXNwb25zZSBmb3IgZXh0ZW5zaW9uIHJlcXVlc3Qu
Ci0KLSAgICAgICAgaWYgKHNlbGYuX29wdGlvbnMudXNlX2RlZmxhdGVfZnJhbWUgYW5kCi0gICAg
ICAgICAgICBub3QgZGVmbGF0ZV9mcmFtZV9hY2NlcHRlZCk6Ci0gICAgICAgICAgICByYWlzZSBF
eGNlcHRpb24oJyVzIGV4dGVuc2lvbiBub3QgYWNjZXB0ZWQnICUKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBfREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0KLSAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy51c2VfbXV4IGFuZCBub3QgbXV4X2FjY2VwdGVkOgotICAgICAgICAgICAgcmFpc2Ug
RXhjZXB0aW9uKCclcyBleHRlbnNpb24gbm90IGFjY2VwdGVkJyAlIF9NVVhfRVhURU5TSU9OKQot
Ci0KLWNsYXNzIFdlYlNvY2tldEh5YmkwMEhhbmRzaGFrZShvYmplY3QpOgotICAgICIiIk9wZW5p
bmcgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9u
IEh5QmkgMDAuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucywgZHJh
ZnRfZmllbGQpOgotICAgICAgICBzZWxmLl9sb2dnZXIgPSB1dGlsLmdldF9jbGFzc19sb2dnZXIo
c2VsZikKLQotICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9k
cmFmdF9maWVsZCA9IGRyYWZ0X2ZpZWxkCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYsIHNvY2tl
dCk6Ci0gICAgICAgICIiIkhhbmRzaGFrZSBXZWJTb2NrZXQuCi0KLSAgICAgICAgUmFpc2VzOgot
ICAgICAgICAgICAgRXhjZXB0aW9uOiBoYW5kc2hha2UgZmFpbGVkLgotICAgICAgICAiIiIKLQot
ICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQotICAgICAgICAjIDQuMSA1LiBzZW5kIHJl
cXVlc3QgbGluZS4KLSAgICAgICAgcmVxdWVzdF9saW5lID0gX21ldGhvZF9saW5lKHNlbGYuX29w
dGlvbnMucmVzb3VyY2UpCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5k
c2hha2UgUmVxdWVzdC1MaW5lOiAlcicsIHJlcXVlc3RfbGluZSkKLSAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwocmVxdWVzdF9saW5lKQotICAgICAgICAjIDQuMSA2LiBMZXQgL2ZpZWxkcy8g
YmUgYW4gZW1wdHkgbGlzdCBvZiBzdHJpbmdzLgotICAgICAgICBmaWVsZHMgPSBbXQotICAgICAg
ICAjIDQuMSA3LiBBZGQgdGhlIHN0cmluZyAiVXBncmFkZTogV2ViU29ja2V0IiB0byAvZmllbGRz
Ly4KLSAgICAgICAgZmllbGRzLmFwcGVuZChfVVBHUkFERV9IRUFERVJfSElYSUU3NSkKLSAgICAg
ICAgIyA0LjEgOC4gQWRkIHRoZSBzdHJpbmcgIkNvbm5lY3Rpb246IFVwZ3JhZGUiIHRvIC9maWVs
ZHMvLgotICAgICAgICBmaWVsZHMuYXBwZW5kKF9DT05ORUNUSU9OX0hFQURFUikKLSAgICAgICAg
IyA0LjEgOS0xMi4gQWRkIEhvc3Q6IGZpZWxkIHRvIC9maWVsZHMvLgotICAgICAgICBmaWVsZHMu
YXBwZW5kKF9mb3JtYXRfaG9zdF9oZWFkZXIoCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNl
cnZlcl9ob3N0LAotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAg
ICAgICAgIHNlbGYuX29wdGlvbnMudXNlX3RscykpCi0gICAgICAgICMgNC4xIDEzLiBBZGQgT3Jp
Z2luOiBmaWVsZCB0byAvZmllbGRzLy4KLSAgICAgICAgZmllbGRzLmFwcGVuZChfb3JpZ2luX2hl
YWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikpCi0gICAgICAgICMgVE9ETzogNC4xIDE0IEFkZCBT
ZWMtV2ViU29ja2V0LVByb3RvY29sOiBmaWVsZCB0byAvZmllbGRzLy4KLSAgICAgICAgIyBUT0RP
OiA0LjEgMTUgQWRkIGNvb2tpZSBoZWFkZXJzIHRvIC9maWVsZHMvLgotCi0gICAgICAgICMgNC4x
IDE2LTIzLiBBZGQgU2VjLVdlYlNvY2tldC1LZXk8bj4gdG8gL2ZpZWxkcy8uCi0gICAgICAgIHNl
bGYuX251bWJlcjEsIGtleTEgPSBzZWxmLl9nZW5lcmF0ZV9zZWNfd2Vic29ja2V0X2tleSgpCi0g
ICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnTnVtYmVyMTogJWQnLCBzZWxmLl9udW1iZXIxKQot
ICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LUtleTE6ICVzXHJcbicgJSBrZXkx
KQotICAgICAgICBzZWxmLl9udW1iZXIyLCBrZXkyID0gc2VsZi5fZ2VuZXJhdGVfc2VjX3dlYnNv
Y2tldF9rZXkoKQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ051bWJlcjI6ICVkJywgc2Vs
Zi5fbnVtYmVyMSkKLSAgICAgICAgZmllbGRzLmFwcGVuZCgnU2VjLVdlYlNvY2tldC1LZXkyOiAl
c1xyXG4nICUga2V5MikKLQotICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0LURy
YWZ0OiAlc1xyXG4nICUgc2VsZi5fZHJhZnRfZmllbGQpCi0KLSAgICAgICAgIyA0LjEgMjQuIEZv
ciBlYWNoIHN0cmluZyBpbiAvZmllbGRzLywgaW4gYSByYW5kb20gb3JkZXI6IHNlbmQgdGhlCi0g
ICAgICAgICMgc3RyaW5nLCBlbmNvZGVkIGFzIFVURi04LCBmb2xsb3dlZCBieSBhIFVURi04IGVu
Y29kZWQgVSswMDBEIENBUlJJQUdFCi0gICAgICAgICMgUkVUVVJOIFUrMDAwQSBMSU5FIEZFRUQg
Y2hhcmFjdGVyIHBhaXIgKENSTEYpLgotICAgICAgICByYW5kb20uc2h1ZmZsZShmaWVsZHMpCi0K
LSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKCdPcGVuaW5nIGhhbmRzaGFrZSByZXF1ZXN0IGhl
YWRlcnM6ICVyJywgZmllbGRzKQotICAgICAgICBmb3IgZmllbGQgaW4gZmllbGRzOgotICAgICAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoZmllbGQpCi0KLSAgICAgICAgIyA0LjEgMjUuIHNl
bmQgYSBVVEYtOC1lbmNvZGVkIFUrMDAwRCBDQVJSSUFHRSBSRVRVUk4gVSswMDBBIExJTkUgRkVF
RAotICAgICAgICAjIGNoYXJhY3RlciBwYWlyIChDUkxGKS4KLSAgICAgICAgc2VsZi5fc29ja2V0
LnNlbmRhbGwoJ1xyXG4nKQotICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0cmlu
ZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVpdmFs
ZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFuIG9y
ZGVyKS4KLSAgICAgICAgc2VsZi5fa2V5MyA9IHNlbGYuX2dlbmVyYXRlX2tleTMoKQotICAgICAg
ICAjIDQuMSAyNy4gc2VuZCAva2V5My8gdG8gdGhlIHNlcnZlci4KLSAgICAgICAgc2VsZi5fc29j
a2V0LnNlbmRhbGwoc2VsZi5fa2V5MykKLSAgICAgICAgc2VsZi5fbG9nZ2VyLmRlYnVnKAotICAg
ICAgICAgICAgJ0tleTM6ICVyICglcyknLCBzZWxmLl9rZXkzLCB1dGlsLmhleGlmeShzZWxmLl9r
ZXkzKSkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5mbygnU2VudCBvcGVuaW5nIGhhbmRzaGFr
ZSByZXF1ZXN0JykKLQotICAgICAgICAjIDQuMSAyOC4gUmVhZCBieXRlcyBmcm9tIHRoZSBzZXJ2
ZXIgdW50aWwgZWl0aGVyIHRoZSBjb25uZWN0aW9uCi0gICAgICAgICMgY2xvc2VzLCBvciBhIDB4
MEEgYnl0ZSBpcyByZWFkLiBsZXQgL2ZpZWxkLyBiZSB0aGVzZSBieXRlcywgaW5jbHVkaW5nCi0g
ICAgICAgICMgdGhlIDB4MEEgYnl0ZXMuCi0gICAgICAgIGZpZWxkID0gJycKLSAgICAgICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgICAgIGNoID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDEp
Ci0gICAgICAgICAgICBmaWVsZCArPSBjaAotICAgICAgICAgICAgaWYgY2ggPT0gJ1xuJzoKLSAg
ICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3Blbmlu
ZyBoYW5kc2hha2UgUmVzcG9uc2UtTGluZTogJXInLCBmaWVsZCkKLQotICAgICAgICAjIGlmIC9m
aWVsZC8gaXMgbm90IGF0IGxlYXN0IHNldmVuIGJ5dGVzIGxvbmcsIG9yIGlmIHRoZSBsYXN0Ci0g
ICAgICAgICMgdHdvIGJ5dGVzIGFyZW4ndCAweDBEIGFuZCAweDBBIHJlc3BlY3RpdmVseSwgb3Ig
aWYgaXQgZG9lcyBub3QKLSAgICAgICAgIyBjb250YWluIGF0IGxlYXN0IHR3byAweDIwIGJ5dGVz
LCB0aGVuIGZhaWwgdGhlIFdlYlNvY2tldCBjb25uZWN0aW9uCi0gICAgICAgICMgYW5kIGFib3J0
IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBsZW4oZmllbGQpIDwgNyBvciBub3QgZmllbGQuZW5k
c3dpdGgoJ1xyXG4nKToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignV3Jvbmcgc3RhdHVz
IGxpbmU6ICVyJyAlIGZpZWxkKQotICAgICAgICBtID0gcmUubWF0Y2goJ1teIF0qIChbXiBdKikg
LionLCBmaWVsZCkKLSAgICAgICAgaWYgbSBpcyBOb25lOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdObyBjb2RlIGZvdW5kIGluIHN0YXR1cyBsaW5lOiAlcicgJSBmaWVsZCkKLSAgICAg
ICAgIyA0LjEgMjkuIGxldCAvY29kZS8gYmUgdGhlIHN1YnN0cmluZyBvZiAvZmllbGQvIHRoYXQg
c3RhcnRzIGZyb20gdGhlCi0gICAgICAgICMgYnl0ZSBhZnRlciB0aGUgZmlyc3QgMHgyMCBieXRl
LCBhbmQgZW5kcyB3aXRoIHRoZSBieXRlIGJlZm9yZSB0aGUKLSAgICAgICAgIyBzZWNvbmQgMHgy
MCBieXRlLgotICAgICAgICBjb2RlID0gbS5ncm91cCgxKQotICAgICAgICAjIDQuMSAzMC4gaWYg
L2NvZGUvIGlzIG5vdCB0aHJlZSBieXRlcyBsb25nLCBvciBpZiBhbnkgb2YgdGhlIGJ5dGVzIGlu
Ci0gICAgICAgICMgL2NvZGUvIGFyZSBub3QgaW4gdGhlIHJhbmdlIDB4MzAgdG8gMHg5MCwgdGhl
biBmYWlsIHRoZSBXZWJTb2NrZXQKLSAgICAgICAgIyBjb25uZWN0aW9uIGFuZCBhYm9ydCB0aGVz
ZSBzdGVwcy4KLSAgICAgICAgaWYgbm90IHJlLm1hdGNoKCdbMC05XVswLTldWzAtOV0nLCBjb2Rl
KToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnSFRUUCBz
dGF0dXMgY29kZSAlciBpcyBub3QgdGhyZWUgZGlnaXQgaW4gc3RhdHVzIGxpbmU6ICVyJyAlCi0g
ICAgICAgICAgICAgICAgKGNvZGUsIGZpZWxkKSkKLSAgICAgICAgIyA0LjEgMzEuIGlmIC9jb2Rl
LywgaW50ZXJwcmV0ZWQgYXMgVVRGLTgsIGlzICIxMDEiLCB0aGVuIG1vdmUgdG8gdGhlCi0gICAg
ICAgICMgbmV4dCBzdGVwLgotICAgICAgICBpZiBjb2RlICE9ICcxMDEnOgotICAgICAgICAgICAg
cmFpc2UgSHR0cFN0YXR1c0V4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnRXhwZWN0ZWQgSFRU
UCBzdGF0dXMgY29kZSAxMDEgYnV0IGZvdW5kICVyIGluIHN0YXR1cyBsaW5lOiAnCi0gICAgICAg
ICAgICAgICAgJyVyJyAlIChjb2RlLCBmaWVsZCksIGludChjb2RlKSkKLSAgICAgICAgIyA0LjEg
MzItMzkuIHJlYWQgZmllbGRzIGludG8gL2ZpZWxkcy8KLSAgICAgICAgZmllbGRzID0gX3JlYWRf
ZmllbGRzKHNlbGYuX3NvY2tldCkKLQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ09wZW5p
bmcgaGFuZHNoYWtlIHJlc3BvbnNlIGhlYWRlcnM6ICVyJywgZmllbGRzKQotCi0gICAgICAgICMg
NC4xIDQwLiBfRmllbGRzIHByb2Nlc3NpbmdfCi0gICAgICAgICMgcmVhZCBhIGJ5dGUgZnJvbSBz
ZXJ2ZXIKLSAgICAgICAgY2ggPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwgMSkKLSAgICAg
ICAgaWYgY2ggIT0gJ1xuJzogICMgMHgwQQotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdF
eHBlY3RlZCBMRiBidXQgZm91bmQgJXInICUgY2gpCi0gICAgICAgICMgNC4xIDQxLiBjaGVjayAv
ZmllbGRzLwotICAgICAgICBpZiBsZW4oZmllbGRzWyd1cGdyYWRlJ10pICE9IDE6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ011bHRpcGxlIFVwZ3JhZGUg
aGVhZGVycyBmb3VuZDogJXMnICUgZmllbGRzWyd1cGdyYWRlJ10pCi0gICAgICAgIGlmIGxlbihm
aWVsZHNbJ2Nvbm5lY3Rpb24nXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigK
LSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgQ29ubmVjdGlvbiBoZWFkZXJzIGZvdW5kOiAlcycg
JSBmaWVsZHNbJ2Nvbm5lY3Rpb24nXSkKLSAgICAgICAgaWYgbGVuKGZpZWxkc1snc2VjLXdlYnNv
Y2tldC1vcmlnaW4nXSkgIT0gMToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAg
ICAgICAgICAgICAnTXVsdGlwbGUgU2VjLVdlYlNvY2tldC1PcmlnaW4gaGVhZGVycyBmb3VuZDog
JXMnICUKLSAgICAgICAgICAgICAgICBmaWVsZHNbJ3NlYy1zZWJzb2NrZXQtb3JpZ2luJ10pCi0g
ICAgICAgIGlmIGxlbihmaWVsZHNbJ3NlYy13ZWJzb2NrZXQtbG9jYXRpb24nXSkgIT0gMToKLSAg
ICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnTXVsdGlwbGUgU2Vj
LVdlYlNvY2tldC1Mb2NhdGlvbiBoZWFkZXJzIGZvdW5kOiAlcycgJQotICAgICAgICAgICAgICAg
IGZpZWxkc1snc2VjLXNlYnNvY2tldC1sb2NhdGlvbiddKQotICAgICAgICAjIFRPRE8odWthaSk6
IHByb3RvY29sCi0gICAgICAgICMgaWYgdGhlIGVudHJ5J3MgbmFtZSBpcyAidXBncmFkZSIKLSAg
ICAgICAgIyAgaWYgdGhlIHZhbHVlIGlzIG5vdCBleGFjdGx5IGVxdWFsIHRvIHRoZSBzdHJpbmcg
IldlYlNvY2tldCIsCi0gICAgICAgICMgIHRoZW4gZmFpbCB0aGUgV2ViU29ja2V0IGNvbm5lY3Rp
b24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBmaWVsZHNbJ3VwZ3JhZGUnXVsw
XSAhPSAnV2ViU29ja2V0JzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAg
ICAgICAgICAnVW5leHBlY3RlZCBVcGdyYWRlIGhlYWRlciB2YWx1ZTogJXMnICUgZmllbGRzWyd1
cGdyYWRlJ11bMF0pCi0gICAgICAgICMgaWYgdGhlIGVudHJ5J3MgbmFtZSBpcyAiY29ubmVjdGlv
biIKLSAgICAgICAgIyAgaWYgdGhlIHZhbHVlLCBjb252ZXJ0ZWQgdG8gQVNDSUkgbG93ZXJjYXNl
LCBpcyBub3QgZXhhY3RseSBlcXVhbAotICAgICAgICAjICB0byB0aGUgc3RyaW5nICJ1cGdyYWRl
IiwgdGhlbiBmYWlsIHRoZSBXZWJTb2NrZXQgY29ubmVjdGlvbiBhbmQKLSAgICAgICAgIyAgYWJv
cnQgdGhlc2Ugc3RlcHMuCi0gICAgICAgIGlmIGZpZWxkc1snY29ubmVjdGlvbiddWzBdLmxvd2Vy
KCkgIT0gJ3VwZ3JhZGUnOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAg
ICAgICAgICdVbmV4cGVjdGVkIENvbm5lY3Rpb24gaGVhZGVyIHZhbHVlOiAlcycgJQotICAgICAg
ICAgICAgICAgIGZpZWxkc1snY29ubmVjdGlvbiddWzBdKQotICAgICAgICAjIFRPRE8odWthaSk6
IGNoZWNrIG9yaWdpbiwgbG9jYXRpb24sIGNvb2tpZSwgLi4KLQotICAgICAgICAjIDQuMSA0Mi4g
bGV0IC9jaGFsbGVuZ2UvIGJlIHRoZSBjb25jYXRlbmF0aW9uIG9mIC9udW1iZXJfMS8sCi0gICAg
ICAgICMgZXhwcmVzc2VkIGFzIGEgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdlciwgL251bWJlcl8y
LywgZXhwcmVzc2VkCi0gICAgICAgICMgYXMgYmlnIGVuZGlhbiAzMiBiaXQgaW50ZWdlciwgYW5k
IHRoZSBlaWdodCBieXRlcyBvZiAva2V5XzMvIGluIHRoZQotICAgICAgICAjIG9yZGVyIHRoZXkg
d2VyZSBzZW50IG9uIHRoZSB3aXJlLgotICAgICAgICBjaGFsbGVuZ2UgPSBzdHJ1Y3QucGFjaygn
IUknLCBzZWxmLl9udW1iZXIxKQotICAgICAgICBjaGFsbGVuZ2UgKz0gc3RydWN0LnBhY2soJyFJ
Jywgc2VsZi5fbnVtYmVyMikKLSAgICAgICAgY2hhbGxlbmdlICs9IHNlbGYuX2tleTMKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0gICAgICAgICAgICAnQ2hhbGxlbmdlOiAlciAoJXMp
JywgY2hhbGxlbmdlLCB1dGlsLmhleGlmeShjaGFsbGVuZ2UpKQotCi0gICAgICAgICMgNC4xIDQz
LiBsZXQgL2V4cGVjdGVkLyBiZSB0aGUgTUQ1IGZpbmdlcnByaW50IG9mIC9jaGFsbGVuZ2UvIGFz
IGEKLSAgICAgICAgIyBiaWctZW5kaWFuIDEyOCBiaXQgc3RyaW5nLgotICAgICAgICBleHBlY3Rl
ZCA9IHV0aWwubWQ1X2hhc2goY2hhbGxlbmdlKS5kaWdlc3QoKQotICAgICAgICBzZWxmLl9sb2dn
ZXIuZGVidWcoCi0gICAgICAgICAgICAnRXhwZWN0ZWQgY2hhbGxlbmdlIHJlc3BvbnNlOiAlciAo
JXMpJywKLSAgICAgICAgICAgIGV4cGVjdGVkLCB1dGlsLmhleGlmeShleHBlY3RlZCkpCi0KLSAg
ICAgICAgIyA0LjEgNDQuIHJlYWQgc2l4dGVlbiBieXRlcyBmcm9tIHRoZSBzZXJ2ZXIuCi0gICAg
ICAgICMgbGV0IC9yZXBseS8gYmUgdGhvc2UgYnl0ZXMuCi0gICAgICAgIHJlcGx5ID0gcmVjZWl2
ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIDE2KQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoCi0g
ICAgICAgICAgICAnQWN0dWFsIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKCVzKScsIHJlcGx5LCB1
dGlsLmhleGlmeShyZXBseSkpCi0KLSAgICAgICAgIyA0LjEgNDUuIGlmIC9yZXBseS8gZG9lcyBu
b3QgZXhhY3RseSBlcXVhbCAvZXhwZWN0ZWQvLCB0aGVuIGZhaWwKLSAgICAgICAgIyB0aGUgV2Vi
U29ja2V0IGNvbm5lY3Rpb24gYW5kIGFib3J0IHRoZXNlIHN0ZXBzLgotICAgICAgICBpZiBleHBl
Y3RlZCAhPSByZXBseToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAg
ICAgICAnQmFkIGNoYWxsZW5nZSByZXNwb25zZTogJXIgKGV4cGVjdGVkKSAhPSAlciAoYWN0dWFs
KScgJQotICAgICAgICAgICAgICAgIChleHBlY3RlZCwgcmVwbHkpKQotICAgICAgICAjIDQuMSA0
Ni4gVGhlICpXZWJTb2NrZXQgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZCouCi0KLSAgICBkZWYg
X2dlbmVyYXRlX3NlY193ZWJzb2NrZXRfa2V5KHNlbGYpOgotICAgICAgICAjIDQuMSAxNi4gbGV0
IC9zcGFjZXNfbi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDEgdG8gMTIgaW5jbHVzaXZlLgot
ICAgICAgICBzcGFjZXMgPSByYW5kb20ucmFuZGludCgxLCAxMikKLSAgICAgICAgIyA0LjEgMTcu
IGxldCAvbWF4X24vIGJlIHRoZSBsYXJnZXN0IGludGVnZXIgbm90IGdyZWF0ZXIgdGhhbgotICAg
ICAgICAjICA0LDI5NCw5NjcsMjk1IGRpdmlkZWQgYnkgL3NwYWNlc19uLy4KLSAgICAgICAgbWF4
bnVtID0gNDI5NDk2NzI5NSAvIHNwYWNlcwotICAgICAgICAjIDQuMSAxOC4gbGV0IC9udW1iZXJf
bi8gYmUgYSByYW5kb20gaW50ZWdlciBmcm9tIDAgdG8gL21heF9uLwotICAgICAgICAjIGluY2x1
c2l2ZS4KLSAgICAgICAgbnVtYmVyID0gcmFuZG9tLnJhbmRpbnQoMCwgbWF4bnVtKQotICAgICAg
ICAjIDQuMSAxOS4gbGV0IC9wcm9kdWN0X24vIGJlIHRoZSByZXN1bHQgb2YgbXVsdGlwbHlpbmcg
L251bWJlcl9uLyBhbmQKLSAgICAgICAgIyAvc3BhY2VzX24vIHRvZ2V0aGVyLgotICAgICAgICBw
cm9kdWN0ID0gbnVtYmVyICogc3BhY2VzCi0gICAgICAgICMgNC4xIDIwLiBsZXQgL2tleV9uLyBi
ZSBhIHN0cmluZyBjb25zaXN0aW5nIG9mIC9wcm9kdWN0X24vLCBleHByZXNzZWQKLSAgICAgICAg
IyBpbiBiYXNlIHRlbiB1c2luZyB0aGUgbnVtZXJhbHMgaW4gdGhlIHJhbmdlIFUrMDAzMCBESUdJ
VCBaRVJPICgwKSB0bwotICAgICAgICAjIFUrMDAzOSBESUdJVCBOSU5FICg5KS4KLSAgICAgICAg
a2V5ID0gc3RyKHByb2R1Y3QpCi0gICAgICAgICMgNC4xIDIxLiBpbnNlcnQgYmV0d2VlbiBvbmUg
YW5kIHR3ZWx2ZSByYW5kb20gY2hhcmFjdGVycyBmcm9tIHRoZQotICAgICAgICAjIHJhbmdlIFUr
MDAyMSB0byBVKzAwMkYgYW5kIFUrMDAzQSB0byBVKzAwN0UgaW50byAva2V5X24vIGF0IHJhbmRv
bQotICAgICAgICAjIHBvc2l0aW9ucy4KLSAgICAgICAgYXZhaWxhYmxlX2NoYXJzID0gcmFuZ2Uo
MHgyMSwgMHgyZiArIDEpICsgcmFuZ2UoMHgzYSwgMHg3ZSArIDEpCi0gICAgICAgIG4gPSByYW5k
b20ucmFuZGludCgxLCAxMikKLSAgICAgICAgZm9yIF8gaW4geHJhbmdlKG4pOgotICAgICAgICAg
ICAgY2ggPSByYW5kb20uY2hvaWNlKGF2YWlsYWJsZV9jaGFycykKLSAgICAgICAgICAgIHBvcyA9
IHJhbmRvbS5yYW5kaW50KDAsIGxlbihrZXkpKQotICAgICAgICAgICAga2V5ID0ga2V5WzA6cG9z
XSArIGNocihjaCkgKyBrZXlbcG9zOl0KLSAgICAgICAgIyA0LjEgMjIuIGluc2VydCAvc3BhY2Vz
X24vIFUrMDAyMCBTUEFDRSBjaGFyYWN0ZXJzIGludG8gL2tleV9uLyBhdAotICAgICAgICAjIHJh
bmRvbSBwb3NpdGlvbnMgb3RoZXIgdGhhbiBzdGFydCBvciBlbmQgb2YgdGhlIHN0cmluZy4KLSAg
ICAgICAgZm9yIF8gaW4geHJhbmdlKHNwYWNlcyk6Ci0gICAgICAgICAgICBwb3MgPSByYW5kb20u
cmFuZGludCgxLCBsZW4oa2V5KSAtIDEpCi0gICAgICAgICAgICBrZXkgPSBrZXlbMDpwb3NdICsg
JyAnICsga2V5W3BvczpdCi0gICAgICAgIHJldHVybiBudW1iZXIsIGtleQotCi0gICAgZGVmIF9n
ZW5lcmF0ZV9rZXkzKHNlbGYpOgotICAgICAgICAjIDQuMSAyNi4gbGV0IC9rZXkzLyBiZSBhIHN0
cmluZyBjb25zaXN0aW5nIG9mIGVpZ2h0IHJhbmRvbSBieXRlcyAob3IKLSAgICAgICAgIyBlcXVp
dmFsZW50bHksIGEgcmFuZG9tIDY0IGJpdCBpbnRlZ2VyIGVuY29kZWQgaW4gYSBiaWctZW5kaWFu
IG9yZGVyKS4KLSAgICAgICAgcmV0dXJuICcnLmpvaW4oW2NocihyYW5kb20ucmFuZGludCgwLCAy
NTUpKSBmb3IgXyBpbiB4cmFuZ2UoOCldKQotCi0KLWNsYXNzIFdlYlNvY2tldEhpeGllNzVIYW5k
c2hha2Uob2JqZWN0KToKLSAgICAiIiJXZWJTb2NrZXQgaGFuZHNoYWtlIHByb2Nlc3NvciBmb3Ig
SUVURiBIaXhpZSA3NS4iIiIKLQotICAgIF9FWFBFQ1RFRF9SRVNQT05TRSA9ICgKLSAgICAgICAg
J0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nICsKLSAgICAg
ICAgX1VQR1JBREVfSEVBREVSX0hJWElFNzUgKwotICAgICAgICBfQ09OTkVDVElPTl9IRUFERVIp
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgb3B0aW9ucyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dl
ciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMg
PSBvcHRpb25zCi0KLSAgICBkZWYgX3NraXBfaGVhZGVycyhzZWxmKToKLSAgICAgICAgdGVybWlu
YXRvciA9ICdcclxuXHJcbicKLSAgICAgICAgcG9zID0gMAotICAgICAgICB3aGlsZSBwb3MgPCBs
ZW4odGVybWluYXRvcik6Ci0gICAgICAgICAgICByZWNlaXZlZCA9IHJlY2VpdmVfYnl0ZXMoc2Vs
Zi5fc29ja2V0LCAxKQotICAgICAgICAgICAgaWYgcmVjZWl2ZWQgPT0gdGVybWluYXRvcltwb3Nd
OgotICAgICAgICAgICAgICAgIHBvcyArPSAxCi0gICAgICAgICAgICBlbGlmIHJlY2VpdmVkID09
IHRlcm1pbmF0b3JbMF06Ci0gICAgICAgICAgICAgICAgcG9zID0gMQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBwb3MgPSAwCi0KLSAgICBkZWYgaGFuZHNoYWtlKHNlbGYsIHNv
Y2tldCk6Ci0gICAgICAgIHNlbGYuX3NvY2tldCA9IHNvY2tldAotCi0gICAgICAgIHJlcXVlc3Rf
bGluZSA9IF9tZXRob2RfbGluZShzZWxmLl9vcHRpb25zLnJlc291cmNlKQotICAgICAgICBzZWxm
Ll9sb2dnZXIuZGVidWcoJ09wZW5pbmcgaGFuZHNoYWtlIFJlcXVlc3QtTGluZTogJXInLCByZXF1
ZXN0X2xpbmUpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKHJlcXVlc3RfbGluZSkKLQot
ICAgICAgICBoZWFkZXJzID0gX1VQR1JBREVfSEVBREVSX0hJWElFNzUgKyBfQ09OTkVDVElPTl9I
RUFERVIKLSAgICAgICAgaGVhZGVycyArPSBfZm9ybWF0X2hvc3RfaGVhZGVyKAotICAgICAgICAg
ICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfaG9zdCwKLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMu
c2VydmVyX3BvcnQsCi0gICAgICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0gICAgICAg
IGhlYWRlcnMgKz0gX29yaWdpbl9oZWFkZXIoc2VsZi5fb3B0aW9ucy5vcmlnaW4pCi0gICAgICAg
IHNlbGYuX2xvZ2dlci5kZWJ1ZygnT3BlbmluZyBoYW5kc2hha2UgcmVxdWVzdCBoZWFkZXJzOiAl
cicsIGhlYWRlcnMpCi0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRlcnMpCi0KLSAg
ICAgICAgc2VsZi5fc29ja2V0LnNlbmRhbGwoJ1xyXG4nKQotCi0gICAgICAgIHNlbGYuX2xvZ2dl
ci5pbmZvKCdTZW50IG9wZW5pbmcgaGFuZHNoYWtlIHJlcXVlc3QnKQotCi0gICAgICAgIGZvciBl
eHBlY3RlZF9jaGFyIGluIFdlYlNvY2tldEhpeGllNzVIYW5kc2hha2UuX0VYUEVDVEVEX1JFU1BP
TlNFOgotICAgICAgICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3NvY2tldCwg
MSkKLSAgICAgICAgICAgIGlmIGV4cGVjdGVkX2NoYXIgIT0gcmVjZWl2ZWQ6Ci0gICAgICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdIYW5kc2hha2UgZmFpbHVyZScpCi0gICAgICAgICMgV2Ug
Y3V0IGNvcm5lcnMgYW5kIHNraXAgb3RoZXIgaGVhZGVycy4KLSAgICAgICAgc2VsZi5fc2tpcF9o
ZWFkZXJzKCkKLQotCi1jbGFzcyBXZWJTb2NrZXRTdHJlYW0ob2JqZWN0KToKLSAgICAiIiJGcmFt
ZSBwcm9jZXNzb3IgZm9yIHRoZSBXZWJTb2NrZXQgcHJvdG9jb2wgKFJGQyA2NDU1KS4iIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrZXQsIGhhbmRzaGFrZSk6Ci0gICAgICAgIHNlbGYu
X2hhbmRzaGFrZSA9IGhhbmRzaGFrZQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBzb2NrZXQKLQot
ICAgICAgICAjIEZpbHRlcnMgYXBwbGllZCB0byBhcHBsaWNhdGlvbiBkYXRhIHBhcnQgb2YgZGF0
YSBmcmFtZXMuCi0gICAgICAgIHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9IE5vbmUKLSAg
ICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQotCi0gICAgICAgIGlmIHNl
bGYuX2hhbmRzaGFrZS5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgIHNl
bGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlciA9ICgKLSAgICAgICAgICAgICAgICB1dGlsLl9SRkMx
OTc5RGVmbGF0ZXIoTm9uZSwgRmFsc2UpKQotICAgICAgICAgICAgc2VsZi5faW5jb21pbmdfZnJh
bWVfZmlsdGVyID0gdXRpbC5fUkZDMTk3OUluZmxhdGVyKCkKLQotICAgICAgICBzZWxmLl9mcmFn
bWVudGVkID0gRmFsc2UKLQotICAgIGRlZiBfbWFza19oeWJpKHNlbGYsIHMpOgotICAgICAgICAj
IFRPRE8odHlvc2hpbm8pOiBvcy51cmFuZG9tIGRvZXMgb3Blbi9yZWFkL2Nsb3NlIGZvciBldmVy
eSBjYWxsLiBJZgotICAgICAgICAjIHBlcmZvcm1hbmNlIG1hdHRlcnMsIGNoYW5nZSB0aGlzIHRv
IHNvbWUgbGlicmFyeSBjYWxsIHRoYXQgZ2VuZXJhdGVzCi0gICAgICAgICMgY3J5cHRvZ3JhcGhp
Y2FsbHkgc2VjdXJlIHBzZXVkbyByYW5kb20gbnVtYmVyIHNlcXVlbmNlLgotICAgICAgICBtYXNr
aW5nX25vbmNlID0gb3MudXJhbmRvbSg0KQotICAgICAgICByZXN1bHQgPSBbbWFza2luZ19ub25j
ZV0KLSAgICAgICAgY291bnQgPSAwCi0gICAgICAgIGZvciBjIGluIHM6Ci0gICAgICAgICAgICBy
ZXN1bHQuYXBwZW5kKGNocihvcmQoYykgXiBvcmQobWFza2luZ19ub25jZVtjb3VudF0pKSkKLSAg
ICAgICAgICAgIGNvdW50ID0gKGNvdW50ICsgMSkgJSBsZW4obWFza2luZ19ub25jZSkKLSAgICAg
ICAgcmV0dXJuICcnLmpvaW4ocmVzdWx0KQotCi0gICAgZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRy
YXJ5X2J5dGVzKHNlbGYsIGhlYWRlciwgYm9keSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5k
YWxsKGhlYWRlciArIHNlbGYuX21hc2tfaHliaShib2R5KSkKLQotICAgIGRlZiBzZW5kX2RhdGEo
c2VsZiwgcGF5bG9hZCwgZnJhbWVfdHlwZSwgZW5kPVRydWUsIG1hc2s9VHJ1ZSwKLSAgICAgICAg
ICAgICAgICAgIHJzdjE9MCwgcnN2Mj0wLCByc3YzPTApOgotICAgICAgICBpZiBzZWxmLl9vdXRn
b2luZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBwYXlsb2FkID0gc2Vs
Zi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyLmZpbHRlcihwYXlsb2FkKQotCi0gICAgICAgIGlmIHNl
bGYuX2ZyYWdtZW50ZWQ6Ci0gICAgICAgICAgICBvcGNvZGUgPSBPUENPREVfQ09OVElOVUFUSU9O
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvcGNvZGUgPSBmcmFtZV90eXBlCi0KLSAgICAg
ICAgaWYgZW5kOgotICAgICAgICAgICAgc2VsZi5fZnJhZ21lbnRlZCA9IEZhbHNlCi0gICAgICAg
ICAgICBmaW4gPSAxCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9mcmFnbWVudGVk
ID0gVHJ1ZQotICAgICAgICAgICAgZmluID0gMAotCi0gICAgICAgIGlmIHNlbGYuX2hhbmRzaGFr
ZS5fb3B0aW9ucy51c2VfZGVmbGF0ZV9mcmFtZToKLSAgICAgICAgICAgIHJzdjEgPSAxCi0KLSAg
ICAgICAgaWYgbWFzazoKLSAgICAgICAgICAgIG1hc2tfYml0ID0gMSA8PCA3Ci0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBtYXNrX2JpdCA9IDAKLQotICAgICAgICBoZWFkZXIgPSBjaHIoZmlu
IDw8IDcgfCByc3YxIDw8IDYgfCByc3YyIDw8IDUgfCByc3YzIDw8IDQgfCBvcGNvZGUpCi0gICAg
ICAgIHBheWxvYWRfbGVuZ3RoID0gbGVuKHBheWxvYWQpCi0gICAgICAgIGlmIHBheWxvYWRfbGVu
Z3RoIDw9IDEyNToKLSAgICAgICAgICAgIGhlYWRlciArPSBjaHIobWFza19iaXQgfCBwYXlsb2Fk
X2xlbmd0aCkKLSAgICAgICAgZWxpZiBwYXlsb2FkX2xlbmd0aCA8IDEgPDwgMTY6Ci0gICAgICAg
ICAgICBoZWFkZXIgKz0gY2hyKG1hc2tfYml0IHwgMTI2KSArIHN0cnVjdC5wYWNrKCchSCcsIHBh
eWxvYWRfbGVuZ3RoKQotICAgICAgICBlbGlmIHBheWxvYWRfbGVuZ3RoIDwgMSA8PCA2MzoKLSAg
ICAgICAgICAgIGhlYWRlciArPSBjaHIobWFza19iaXQgfCAxMjcpICsgc3RydWN0LnBhY2soJyFR
JywgcGF5bG9hZF9sZW5ndGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBFeGNl
cHRpb24oJ1RvbyBsb25nIHBheWxvYWQgKCVkIGJ5dGUpJyAlIHBheWxvYWRfbGVuZ3RoKQotICAg
ICAgICBpZiBtYXNrOgotICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX21hc2tfaHliaShwYXls
b2FkKQotICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZGFsbChoZWFkZXIgKyBwYXlsb2FkKQotCi0g
ICAgZGVmIHNlbmRfYmluYXJ5KHNlbGYsIHBheWxvYWQsIGVuZD1UcnVlLCBtYXNrPVRydWUpOgot
ICAgICAgICBzZWxmLnNlbmRfZGF0YShwYXlsb2FkLCBPUENPREVfQklOQVJZLCBlbmQsIG1hc2sp
Ci0KLSAgICBkZWYgc2VuZF90ZXh0KHNlbGYsIHBheWxvYWQsIGVuZD1UcnVlLCBtYXNrPVRydWUp
OgotICAgICAgICBzZWxmLnNlbmRfZGF0YShwYXlsb2FkLmVuY29kZSgndXRmLTgnKSwgT1BDT0RF
X1RFWFQsIGVuZCwgbWFzaykKLQotICAgIGRlZiBfYXNzZXJ0X3JlY2VpdmVfZGF0YShzZWxmLCBw
YXlsb2FkLCBvcGNvZGUsIGZpbiwgcnN2MSwgcnN2MiwgcnN2Myk6Ci0gICAgICAgIChhY3R1YWxf
ZmluLCBhY3R1YWxfcnN2MSwgYWN0dWFsX3JzdjIsIGFjdHVhbF9yc3YzLCBhY3R1YWxfb3Bjb2Rl
LAotICAgICAgICAgcGF5bG9hZF9sZW5ndGgpID0gcmVhZF9mcmFtZV9oZWFkZXIoc2VsZi5fc29j
a2V0KQotCi0gICAgICAgIGlmIGFjdHVhbF9vcGNvZGUgIT0gb3Bjb2RlOgotICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIG9wY29kZTogJWQg
KGV4cGVjdGVkKSB2cyAlZCAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChvcGNvZGUsIGFj
dHVhbF9vcGNvZGUpKQotCi0gICAgICAgIGlmIGFjdHVhbF9maW4gIT0gZmluOgotICAgICAgICAg
ICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGZpbjogJWQg
KGV4cGVjdGVkKSB2cyAlZCAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChmaW4sIGFjdHVh
bF9maW4pKQotCi0gICAgICAgIGlmIHJzdjEgaXMgTm9uZToKLSAgICAgICAgICAgIHJzdjEgPSAw
Ci0gICAgICAgICAgICBpZiBzZWxmLl9oYW5kc2hha2UuX29wdGlvbnMudXNlX2RlZmxhdGVfZnJh
bWU6Ci0gICAgICAgICAgICAgICAgcnN2MSA9IDEKLQotICAgICAgICBpZiByc3YyIGlzIE5vbmU6
Ci0gICAgICAgICAgICByc3YyID0gMAotCi0gICAgICAgIGlmIHJzdjMgaXMgTm9uZToKLSAgICAg
ICAgICAgIHJzdjMgPSAwCi0KLSAgICAgICAgaWYgYWN0dWFsX3JzdjEgIT0gcnN2MToKLSAgICAg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCByc3Yx
OiAlciAoZXhwZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKHJzdjEs
IGFjdHVhbF9yc3YxKSkKLQotICAgICAgICBpZiBhY3R1YWxfcnN2MiAhPSByc3YyOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHJzdjI6
ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAocnN2Miwg
YWN0dWFsX3JzdjIpKQotCi0gICAgICAgIGlmIGFjdHVhbF9yc3YzICE9IHJzdjM6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgcnN2Mzog
JXIgKGV4cGVjdGVkKSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgIChyc3YzLCBh
Y3R1YWxfcnN2MykpCi0KLSAgICAgICAgcmVjZWl2ZWQgPSByZWNlaXZlX2J5dGVzKHNlbGYuX3Nv
Y2tldCwgcGF5bG9hZF9sZW5ndGgpCi0KLSAgICAgICAgaWYgc2VsZi5faW5jb21pbmdfZnJhbWVf
ZmlsdGVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmVjZWl2ZWQgPSBzZWxmLl9pbmNvbWlu
Z19mcmFtZV9maWx0ZXIuZmlsdGVyKHJlY2VpdmVkKQotCi0gICAgICAgIGlmIGxlbihyZWNlaXZl
ZCkgIT0gbGVuKHBheWxvYWQpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKAotICAgICAg
ICAgICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQgbGVuZ3RoOiAlZCAoZXhwZWN0ZWQpIHZzICVk
IChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKGxlbihwYXlsb2FkKSwgbGVuKHJlY2VpdmVk
KSkpCi0KLSAgICAgICAgaWYgcGF5bG9hZCAhPSByZWNlaXZlZDoKLSAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBwYXlsb2FkOiAlciAoZXhw
ZWN0ZWQpIHZzICVyIChhY3R1YWwpJyAlCi0gICAgICAgICAgICAgICAgKHBheWxvYWQsIHJlY2Vp
dmVkKSkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9iaW5hcnkoc2VsZiwgcGF5bG9hZCwgb3Bj
b2RlPU9QQ09ERV9CSU5BUlksIGZpbj0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnN2MT1Ob25lLCByc3YyPU5vbmUsIHJzdjM9Tm9uZSk6Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9y
ZWNlaXZlX2RhdGEocGF5bG9hZCwgb3Bjb2RlLCBmaW4sIHJzdjEsIHJzdjIsIHJzdjMpCi0KLSAg
ICBkZWYgYXNzZXJ0X3JlY2VpdmVfdGV4dChzZWxmLCBwYXlsb2FkLCBvcGNvZGU9T1BDT0RFX1RF
WFQsIGZpbj0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9Tm9uZSwgcnN2Mj1O
b25lLCByc3YzPU5vbmUpOgotICAgICAgICBzZWxmLl9hc3NlcnRfcmVjZWl2ZV9kYXRhKHBheWxv
YWQuZW5jb2RlKCd1dGYtOCcpLCBvcGNvZGUsIGZpbiwgcnN2MSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByc3YyLCByc3YzKQotCi0gICAgZGVmIF9idWlsZF9jbG9zZV9mcmFt
ZShzZWxmLCBjb2RlLCByZWFzb24sIG1hc2spOgotICAgICAgICBmcmFtZSA9IGNocigxIDw8IDcg
fCBPUENPREVfQ0xPU0UpCi0KLSAgICAgICAgaWYgY29kZSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGJvZHkgPSBzdHJ1Y3QucGFjaygnIUgnLCBjb2RlKSArIHJlYXNvbi5lbmNvZGUoJ3V0Zi04
JykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGJvZHkgPSAnJwotICAgICAgICBpZiBtYXNr
OgotICAgICAgICAgICAgZnJhbWUgKz0gY2hyKDEgPDwgNyB8IGxlbihib2R5KSkgKyBzZWxmLl9t
YXNrX2h5YmkoYm9keSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZyYW1lICs9IGNocihs
ZW4oYm9keSkpICsgYm9keQotICAgICAgICByZXR1cm4gZnJhbWUKLQotICAgIGRlZiBzZW5kX2Ns
b3NlKHNlbGYsIGNvZGUsIHJlYXNvbik6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKAot
ICAgICAgICAgICAgc2VsZi5fYnVpbGRfY2xvc2VfZnJhbWUoY29kZSwgcmVhc29uLCBUcnVlKSkK
LQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjb2RlLCByZWFzb24pOgotICAg
ICAgICBleHBlY3RlZF9mcmFtZSA9IHNlbGYuX2J1aWxkX2Nsb3NlX2ZyYW1lKGNvZGUsIHJlYXNv
biwgRmFsc2UpCi0gICAgICAgIGFjdHVhbF9mcmFtZSA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29j
a2V0LCBsZW4oZXhwZWN0ZWRfZnJhbWUpKQotICAgICAgICBpZiBhY3R1YWxfZnJhbWUgIT0gZXhw
ZWN0ZWRfZnJhbWU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oCi0gICAgICAgICAgICAg
ICAgJ1VuZXhwZWN0ZWQgY2xvc2UgZnJhbWU6ICVyIChleHBlY3RlZCkgdnMgJXIgKGFjdHVhbCkn
ICUKLSAgICAgICAgICAgICAgICAoZXhwZWN0ZWRfZnJhbWUsIGFjdHVhbF9mcmFtZSkpCi0KLQot
Y2xhc3MgV2ViU29ja2V0U3RyZWFtSGl4aWU3NShvYmplY3QpOgotICAgICIiIkZyYW1lIHByb2Nl
c3NvciBmb3IgdGhlIFdlYlNvY2tldCBwcm90b2NvbCB2ZXJzaW9uIEhpeGllIDc1IGFuZCBIeUJp
IDAwLgotICAgICIiIgotCi0gICAgX0NMT1NFX0ZSQU1FID0gJ1x4ZmZceDAwJwotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIHNvY2tldCwgdW51c2VkX2hhbmRzaGFrZSk6Ci0gICAgICAgIHNlbGYu
X3NvY2tldCA9IHNvY2tldAotCi0gICAgZGVmIHNlbmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVz
KHNlbGYsIGhlYWRlciwgYm9keSk6Ci0gICAgICAgIHNlbGYuX3NvY2tldC5zZW5kYWxsKGhlYWRl
ciArIGJvZHkpCi0KLSAgICBkZWYgc2VuZF9kYXRhKHNlbGYsIHBheWxvYWQsIHVudXNlZF9mcmFt
ZV90eXBlbSwgdW51c2VkX2VuZCwgdW51c2VkX21hc2spOgotICAgICAgICBmcmFtZSA9ICcnLmpv
aW4oWydceDAwJywgcGF5bG9hZCwgJ1x4ZmYnXSkKLSAgICAgICAgc2VsZi5fc29ja2V0LnNlbmRh
bGwoZnJhbWUpCi0KLSAgICBkZWYgc2VuZF9iaW5hcnkoc2VsZiwgdW51c2VkX3BheWxvYWQsIHVu
dXNlZF9lbmQsIHVudXNlZF9tYXNrKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIHNlbmRfdGV4
dChzZWxmLCBwYXlsb2FkLCB1bnVzZWRfZW5kLCB1bnVzZWRfbWFzayk6Ci0gICAgICAgIGVuY29k
ZWRfcGF5bG9hZCA9IHBheWxvYWQuZW5jb2RlKCd1dGYtOCcpCi0gICAgICAgIGZyYW1lID0gJycu
am9pbihbJ1x4MDAnLCBlbmNvZGVkX3BheWxvYWQsICdceGZmJ10pCi0gICAgICAgIHNlbGYuX3Nv
Y2tldC5zZW5kYWxsKGZyYW1lKQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlX2JpbmFyeShzZWxm
LCBwYXlsb2FkLCBvcGNvZGU9T1BDT0RFX0JJTkFSWSwgZmluPTEsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByc3YxPTAsIHJzdjI9MCwgcnN2Mz0wKToKLSAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdCaW5hcnkgZnJhbWUgaXMgbm90IHN1cHBvcnRlZCBpbiBoaXhpZTc1JykKLQotICAg
IGRlZiBhc3NlcnRfcmVjZWl2ZV90ZXh0KHNlbGYsIHBheWxvYWQpOgotICAgICAgICByZWNlaXZl
ZCA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAxKQotCi0gICAgICAgIGlmIHJlY2VpdmVk
ICE9ICdceDAwJzoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAg
ICAnVW5leHBlY3RlZCBmcmFtZSB0eXBlOiAlZCAoZXhwZWN0ZWQpIHZzICVkIChhY3R1YWwpJyAl
Ci0gICAgICAgICAgICAgICAgKDAsIG9yZChyZWNlaXZlZCkpKQotCi0gICAgICAgIHJlY2VpdmVk
ID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxlbihwYXlsb2FkKSArIDEpCi0gICAgICAg
IGlmIHJlY2VpdmVkWy0xXSAhPSAnXHhmZic6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
Ci0gICAgICAgICAgICAgICAgJ1Rlcm1pbmF0aW9uIGV4cGVjdGVkOiAweGZmIChleHBlY3RlZCkg
dnMgJXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICByZWNlaXZlZCkKLQotICAgICAgICBp
ZiByZWNlaXZlZFswOi0xXSAhPSBwYXlsb2FkOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9u
KAotICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIHBheWxvYWQ6ICVyIChleHBlY3RlZCkgdnMg
JXIgKGFjdHVhbCknICUKLSAgICAgICAgICAgICAgICAocGF5bG9hZCwgcmVjZWl2ZWRbMDotMV0p
KQotCi0gICAgZGVmIHNlbmRfY2xvc2Uoc2VsZiwgY29kZSwgcmVhc29uKToKLSAgICAgICAgc2Vs
Zi5fc29ja2V0LnNlbmRhbGwoc2VsZi5fQ0xPU0VfRlJBTUUpCi0KLSAgICBkZWYgYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2Uoc2VsZiwgdW51c2VkX2NvZGUsIHVudXNlZF9yZWFzb24pOgotICAgICAgICBj
bG9zaW5nID0gcmVjZWl2ZV9ieXRlcyhzZWxmLl9zb2NrZXQsIGxlbihzZWxmLl9DTE9TRV9GUkFN
RSkpCi0gICAgICAgIGlmIGNsb3NpbmcgIT0gc2VsZi5fQ0xPU0VfRlJBTUU6Ci0gICAgICAgICAg
ICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBjbG9zaW5nIGhhbmRzaGFrZScpCi0K
LQotY2xhc3MgQ2xpZW50T3B0aW9ucyhvYmplY3QpOgotICAgICIiIkhvbGRzIG9wdGlvbiB2YWx1
ZXMgdG8gY29uZmlndXJlIHRoZSBDbGllbnQgb2JqZWN0LiIiIgotCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYpOgotICAgICAgICBzZWxmLnZlcnNpb24gPSAxMwotICAgICAgICBzZWxmLnNlcnZlcl9o
b3N0ID0gJycKLSAgICAgICAgc2VsZi5vcmlnaW4gPSAnJwotICAgICAgICBzZWxmLnJlc291cmNl
ID0gJycKLSAgICAgICAgc2VsZi5zZXJ2ZXJfcG9ydCA9IC0xCi0gICAgICAgIHNlbGYuc29ja2V0
X3RpbWVvdXQgPSAxMDAwCi0gICAgICAgIHNlbGYudXNlX3RscyA9IEZhbHNlCi0gICAgICAgIHNl
bGYuZXh0ZW5zaW9ucyA9IFtdCi0gICAgICAgICMgRW5hYmxlIGRlZmxhdGUtYXBwbGljYXRpb24t
ZGF0YS4KLSAgICAgICAgc2VsZi51c2VfZGVmbGF0ZV9mcmFtZSA9IEZhbHNlCi0gICAgICAgICMg
RW5hYmxlIG11eAotICAgICAgICBzZWxmLnVzZV9tdXggPSBGYWxzZQotCi0gICAgZGVmIGVuYWJs
ZV9kZWZsYXRlX2ZyYW1lKHNlbGYpOgotICAgICAgICBzZWxmLnVzZV9kZWZsYXRlX2ZyYW1lID0g
VHJ1ZQotICAgICAgICBzZWxmLmV4dGVuc2lvbnMuYXBwZW5kKF9ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTikKLQotICAgIGRlZiBlbmFibGVfbXV4KHNlbGYpOgotICAgICAgICBzZWxmLnVzZV9tdXgg
PSBUcnVlCi0gICAgICAgIHNlbGYuZXh0ZW5zaW9ucy5hcHBlbmQoX01VWF9FWFRFTlNJT04pCi0K
LQotZGVmIGNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnkoaG9zdCwgcG9ydCwgdGltZW91dCwgdXNl
X3RscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHJ5PTEwLCBzbGVlcF9zZWM9
MC4xKToKLSAgICByZXRyeV9jb3VudCA9IDAKLSAgICB3aGlsZSByZXRyeV9jb3VudCA8IHJldHJ5
OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCi0gICAgICAg
ICAgICBzLnNldHRpbWVvdXQodGltZW91dCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoaG9zdCwg
cG9ydCkpCi0gICAgICAgICAgICBpZiB1c2VfdGxzOgotICAgICAgICAgICAgICAgIHJldHVybiBf
VExTU29ja2V0KHMpCi0gICAgICAgICAgICByZXR1cm4gcwotICAgICAgICBleGNlcHQgc29ja2V0
LmVycm9yLCBlOgotICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FQ09OTlJFRlVTRUQ6
Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgcmV0cnlfY291bnQgPSByZXRyeV9jb3VudCArIDEKLSAgICAgICAgICAgICAgICB0aW1lLnNs
ZWVwKHNsZWVwX3NlYykKLQotICAgIHJldHVybiBOb25lCi0KLQotY2xhc3MgQ2xpZW50KG9iamVj
dCk6Ci0gICAgIiIiV2ViU29ja2V0IGNsaWVudC4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBvcHRpb25zLCBoYW5kc2hha2UsIHN0cmVhbV9jbGFzcyk6Ci0gICAgICAgIHNlbGYuX2xvZ2dl
ciA9IHV0aWwuZ2V0X2NsYXNzX2xvZ2dlcihzZWxmKQotCi0gICAgICAgIHNlbGYuX29wdGlvbnMg
PSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3NvY2tldCA9IE5vbmUKLQotICAgICAgICBzZWxmLl9o
YW5kc2hha2UgPSBoYW5kc2hha2UKLSAgICAgICAgc2VsZi5fc3RyZWFtX2NsYXNzID0gc3RyZWFt
X2NsYXNzCi0KLSAgICBkZWYgY29ubmVjdChzZWxmKToKLSAgICAgICAgc2VsZi5fc29ja2V0ID0g
Y29ubmVjdF9zb2NrZXRfd2l0aF9yZXRyeSgKLSAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25z
LnNlcnZlcl9ob3N0LAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQs
Ci0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zb2NrZXRfdGltZW91dCwKLSAgICAgICAg
ICAgICAgICBzZWxmLl9vcHRpb25zLnVzZV90bHMpCi0KLSAgICAgICAgc2VsZi5faGFuZHNoYWtl
LmhhbmRzaGFrZShzZWxmLl9zb2NrZXQpCi0KLSAgICAgICAgc2VsZi5fc3RyZWFtID0gc2VsZi5f
c3RyZWFtX2NsYXNzKHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtlKQotCi0gICAgICAgIHNl
bGYuX2xvZ2dlci5pbmZvKCdDb25uZWN0aW9uIGVzdGFibGlzaGVkJykKLQotICAgIGRlZiBzZW5k
X2ZyYW1lX29mX2FyYml0cmFyeV9ieXRlcyhzZWxmLCBoZWFkZXIsIGJvZHkpOgotICAgICAgICBz
ZWxmLl9zdHJlYW0uc2VuZF9mcmFtZV9vZl9hcmJpdHJhcnlfYnl0ZXMoaGVhZGVyLCBib2R5KQot
Ci0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZh
bHNlLCByYXc9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBtYXNrPVRydWUpOgotICAgICAg
ICBpZiBiaW5hcnk6Ci0gICAgICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkobWVzc2Fn
ZSwgZW5kLCBtYXNrKQotICAgICAgICBlbGlmIHJhdzoKLSAgICAgICAgICAgIHNlbGYuX3N0cmVh
bS5zZW5kX2RhdGEobWVzc2FnZSwgT1BDT0RFX1RFWFQsIGVuZCwgbWFzaykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX3RleHQobWVzc2FnZSwgZW5kLCBtYXNr
KQotCi0gICAgZGVmIGFzc2VydF9yZWNlaXZlKHNlbGYsIHBheWxvYWQsIGJpbmFyeT1GYWxzZSk6
Ci0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS5hc3NlcnRfcmVj
ZWl2ZV9iaW5hcnkocGF5bG9hZCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3N0
cmVhbS5hc3NlcnRfcmVjZWl2ZV90ZXh0KHBheWxvYWQpCi0KLSAgICBkZWYgc2VuZF9jbG9zZShz
ZWxmLCBjb2RlPVNUQVRVU19OT1JNQUxfQ0xPU1VSRSwgcmVhc29uPScnKToKLSAgICAgICAgc2Vs
Zi5fc3RyZWFtLnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotCi0gICAgZGVmIGFzc2VydF9yZWNl
aXZlX2Nsb3NlKHNlbGYsIGNvZGU9U1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycpOgot
ICAgICAgICBzZWxmLl9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfY2xvc2UoY29kZSwgcmVhc29uKQot
Ci0gICAgZGVmIGNsb3NlX3NvY2tldChzZWxmKToKLSAgICAgICAgc2VsZi5fc29ja2V0LmNsb3Nl
KCkKLQotICAgIGRlZiBhc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoc2VsZik6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHJlYWRfZGF0YSA9IHJlY2VpdmVfYnl0ZXMoc2VsZi5fc29ja2V0LCAx
KQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgaWYgc3RyKGUpLmZp
bmQoCi0gICAgICAgICAgICAgICAgJ0Nvbm5lY3Rpb24gY2xvc2VkIGJlZm9yZSByZWNlaXZpbmcg
cmVxdWVzdGVkIGxlbmd0aCAnKSA9PSAwOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVycm9yX251bWJlciwgbWVzc2FnZSA9IGUKLSAg
ICAgICAgICAgICAgICBmb3IgZXJyb3JfbmFtZSBpbiBbJ0VDT05OUkVTRVQnLCAnV1NBRUNPTk5S
RVNFVCddOgotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyb3JfbmFtZSBpbiBkaXIoZXJybm8p
IGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbnVtYmVyID09IGdldGF0dHIoZXJy
bm8sIGVycm9yX25hbWUpKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHJhaXNlIGUKLSAgICAgICAgICAgIHJhaXNl
IGUKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0Nvbm5lY3Rpb24gaXMgbm90IGNsb3NlZCAo
UmVhZDogJXIpJyAlIHJlYWRfZGF0YSkKLQotCi1kZWYgY3JlYXRlX2NsaWVudChvcHRpb25zKToK
LSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25zLCBXZWJTb2NrZXRIYW5kc2hha2Uo
b3B0aW9ucyksIFdlYlNvY2tldFN0cmVhbSkKLQotCi1kZWYgY3JlYXRlX2NsaWVudF9oeWJpMDAo
b3B0aW9ucyk6Ci0gICAgcmV0dXJuIENsaWVudCgKLSAgICAgICAgb3B0aW9ucywKLSAgICAgICAg
V2ViU29ja2V0SHliaTAwSGFuZHNoYWtlKG9wdGlvbnMsICcwJyksCi0gICAgICAgIFdlYlNvY2tl
dFN0cmVhbUhpeGllNzUpCi0KLQotZGVmIGNyZWF0ZV9jbGllbnRfaGl4aWU3NShvcHRpb25zKToK
LSAgICByZXR1cm4gQ2xpZW50KAotICAgICAgICBvcHRpb25zLCBXZWJTb2NrZXRIaXhpZTc1SGFu
ZHNoYWtlKG9wdGlvbnMpLCBXZWJTb2NrZXRTdHJlYW1IaXhpZTc1KQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFs
X3NlcnZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvZW5kdG9lbmRfd2l0aF9leHRlcm5hbF9zZXJ2ZXIu
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3Zjg2ZmRiNDE2M2Q0ZTczODk1MmIz
Y2NiNzdmMTkyMTZiYzU5MTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weQor
KysgL2Rldi9udWxsCkBAIC0xLDY3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwot
IyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMK
LSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4K
LSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
Ci0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdCBmb3IgZW5kLXRvLWVuZCB3aXRoIGV4dGVybmFs
IHNlcnZlci4KLQotVGhpcyB0ZXN0IGlzIG5vdCBydW4gYnkgcnVuX2FsbC5weSBiZWNhdXNlIGl0
IHJlcXVpcmVzIHNvbWUgcHJlcGFyYXRpb25zLgotSWYgeW91IHdvdWxkIGxpa2UgdG8gcnVuIHRo
aXMgdGVzdCBjb3JyZWN0bHksIGxhdW5jaCBBcGFjaGUgd2l0aCBtb2RfcHl0aG9uCi1hbmQgbW9k
X3B5d2Vic29ja2V0IG1hbnVhbGx5LiBJbiBhZGRpdGlvbiwgeW91IHNob3VsZCBwYXNzIGFsbG93
X2RyYWZ0NzUgb3B0aW9uCi1hbmQgZXhhbXBsZSBwYXRoIGFzIGhhbmRsZXJfc2NhbiBvcHRpb24g
YW5kIEFwYWNoZSdzIERvY3VtZW50Um9vdC4KLSIiIgotCi0KLWltcG9ydCBvcHRwYXJzZQotaW1w
b3J0IHN5cwotaW1wb3J0IHRlc3QudGVzdF9lbmR0b2VuZAotaW1wb3J0IHVuaXR0ZXN0Ci0KLQot
X0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JUID0gODAKLQotCi1jbGFzcyBFbmRUb0VuZFRlc3RXaXRo
RXh0ZXJuYWxTZXJ2ZXIodGVzdC50ZXN0X2VuZHRvZW5kLkVuZFRvRW5kVGVzdCk6Ci0gICAgcGFz
cwotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9w
dGlvblBhcnNlcigpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oJy1wJywgJy0tcG9ydCcsIGRlc3Q9
J3BvcnQnLCB0eXBlPSdpbnQnLAotICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFV
TFRfV0VCX1NPQ0tFVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2V4dGVybmFs
IHRlc3Qgc2VydmVyIHBvcnQuJykKLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2Vf
YXJncygpCi0KLSAgICB0ZXN0LnRlc3RfZW5kdG9lbmQuX3VzZV9leHRlcm5hbF9zZXJ2ZXIgPSBU
cnVlCi0gICAgdGVzdC50ZXN0X2VuZHRvZW5kLl9leHRlcm5hbF9zZXJ2ZXJfcG9ydCA9IG9wdGlv
bnMucG9ydAotCi0gICAgdW5pdHRlc3QubWFpbihhcmd2PVtzeXMuYXJndlswXV0pCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L21vY2sucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L21vY2sucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiZmZjYWM0
OGRjNDNhNTJiOWNjZjFiY2QwMTI5NzU0MjQwNDhkNjcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9tb2NrLnB5CisrKyAvZGV2L251
bGwKQEAgLTEsMjIxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMg
aW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xl
IEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRv
IGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIk1vY2tzIGZvciB0
ZXN0aW5nLgotIiIiCi0KLQotaW1wb3J0IFF1ZXVlCi1pbXBvcnQgdGhyZWFkaW5nCi0KLWZyb20g
bW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LnN0cmVh
bSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotCi0KLWNsYXNzIF9Nb2NrQ29ubkJhc2Uob2JqZWN0KToK
LSAgICAiIiJCYXNlIGNsYXNzIG9mIG1vY2tzIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25u
LgotCi0gICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIGNoZWNrIHdoYXQgaXMgd3JpdHRlbiB0byBh
IChtb2NrKSBtcF9jb25uLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAg
ICAgICBzZWxmLl93cml0ZV9kYXRhID0gW10KLSAgICAgICAgc2VsZi5yZW1vdGVfYWRkciA9ICdm
YWtlX2FkZHJlc3MnCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6Ci0gICAgICAgICIiIk92
ZXJyaWRlIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4ud3JpdGUuIiIiCi0KLSAgICAgICAgc2Vs
Zi5fd3JpdGVfZGF0YS5hcHBlbmQoZGF0YSkKLQotICAgIGRlZiB3cml0dGVuX2RhdGEoc2VsZik6
Ci0gICAgICAgICIiIkdldCBieXRlcyB3cml0dGVuIHRvIHRoaXMgbW9jay4iIiIKLQotICAgICAg
ICByZXR1cm4gJycuam9pbihzZWxmLl93cml0ZV9kYXRhKQotCi0KLWNsYXNzIE1vY2tDb25uKF9N
b2NrQ29ubkJhc2UpOgotICAgICIiIk1vY2sgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4u
Ci0KLSAgICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gc3BlY2lmeSB3aGF0IHNob3VsZCBiZSByZWFk
IGZyb20gYSAobW9jaykgbXBfY29ubiBhcwotICAgIHdlbGwgYXMgdG8gY2hlY2sgd2hhdCBpcyB3
cml0dGVuIHRvIGl0LgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlYWRfZGF0
YSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdHMgYW4gaW5zdGFuY2UuCi0KLSAgICAgICAgQXJnczoK
LSAgICAgICAgICAgIHJlYWRfZGF0YTogYnl0ZXMgdGhhdCBzaG91bGQgYmUgcmV0dXJuZWQgd2hl
biByZWFkKiBtZXRob2RzIGFyZQotICAgICAgICAgICAgY2FsbGVkLgotICAgICAgICAiIiIKLQot
ICAgICAgICBfTW9ja0Nvbm5CYXNlLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYuX3JlYWRf
ZGF0YSA9IHJlYWRfZGF0YQotICAgICAgICBzZWxmLl9yZWFkX3BvcyA9IDAKLQotICAgIGRlZiBy
ZWFkbGluZShzZWxmKToKLSAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUubXBf
Y29ubi5yZWFkbGluZS4iIiIKLQotICAgICAgICBpZiBzZWxmLl9yZWFkX3BvcyA+PSBsZW4oc2Vs
Zi5fcmVhZF9kYXRhKToKLSAgICAgICAgICAgIHJldHVybiAnJwotICAgICAgICBlbmRfaW5kZXgg
PSBzZWxmLl9yZWFkX2RhdGEuZmluZCgnXG4nLCBzZWxmLl9yZWFkX3BvcykgKyAxCi0gICAgICAg
IGlmIG5vdCBlbmRfaW5kZXg6Ci0gICAgICAgICAgICBlbmRfaW5kZXggPSBsZW4oc2VsZi5fcmVh
ZF9kYXRhKQotICAgICAgICByZXR1cm4gc2VsZi5fcmVhZF91cF90byhlbmRfaW5kZXgpCi0KLSAg
ICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9u
LmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCi0KLSAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3MgPj0g
bGVuKHNlbGYuX3JlYWRfZGF0YSk6Ci0gICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgZW5k
X2luZGV4ID0gbWluKGxlbihzZWxmLl9yZWFkX2RhdGEpLCBzZWxmLl9yZWFkX3BvcyArIGxlbmd0
aCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfdXBfdG8oZW5kX2luZGV4KQotCi0gICAgZGVm
IF9yZWFkX3VwX3RvKHNlbGYsIGVuZF9pbmRleCk6Ci0gICAgICAgIGxpbmUgPSBzZWxmLl9yZWFk
X2RhdGFbc2VsZi5fcmVhZF9wb3M6ZW5kX2luZGV4XQotICAgICAgICBzZWxmLl9yZWFkX3BvcyA9
IGVuZF9pbmRleAotICAgICAgICByZXR1cm4gbGluZQotCi0KLWNsYXNzIE1vY2tCbG9ja2luZ0Nv
bm4oX01vY2tDb25uQmFzZSk6Ci0gICAgIiIiQmxvY2tpbmcgbW9jayBmb3IgbW9kX3B5dGhvbi5h
cGFjaGUubXBfY29ubi4KLQotICAgIFRoaXMgZW5hYmxlcyB0ZXN0cyB0byBzcGVjaWZ5IHdoYXQg
c2hvdWxkIGJlIHJlYWQgZnJvbSBhIChtb2NrKSBtcF9jb25uIGFzCi0gICAgd2VsbCBhcyB0byBj
aGVjayB3aGF0IGlzIHdyaXR0ZW4gdG8gaXQuCi0gICAgQ2FsbGVycyBvZiByZWFkKiBtZXRob2Rz
IHdpbGwgYmxvY2sgaWYgdGhlcmUgaXMgbm8gYnl0ZXMgYXZhaWxhYmxlLgotICAgICIiIgotCi0g
ICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBfTW9ja0Nvbm5CYXNlLl9faW5pdF9fKHNl
bGYpCi0gICAgICAgIHNlbGYuX3F1ZXVlID0gUXVldWUuUXVldWUoKQotCi0gICAgZGVmIHJlYWRs
aW5lKHNlbGYpOgotICAgICAgICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25u
LnJlYWRsaW5lLiIiIgotICAgICAgICBsaW5lID0gJycKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAg
ICAgICAgICAgIGMgPSBzZWxmLl9xdWV1ZS5nZXQoKQotICAgICAgICAgICAgbGluZSArPSBjCi0g
ICAgICAgICAgICBpZiBjID09ICdcbic6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGxpbmUKLQot
ICAgIGRlZiByZWFkKHNlbGYsIGxlbmd0aCk6Ci0gICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRo
b24uYXBhY2hlLm1wX2Nvbm4ucmVhZC4iIiIKLQotICAgICAgICBkYXRhID0gJycKLSAgICAgICAg
Zm9yIHVudXNlZCBpbiByYW5nZShsZW5ndGgpOgotICAgICAgICAgICAgZGF0YSArPSBzZWxmLl9x
dWV1ZS5nZXQoKQotICAgICAgICByZXR1cm4gZGF0YQotCi0gICAgZGVmIHB1dF9ieXRlcyhzZWxm
LCBieXRlcyk6Ci0gICAgICAgICIiIlB1dCBieXRlcyB0byBiZSByZWFkIGZyb20gdGhpcyBtb2Nr
LgotCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgICBieXRlczogYnl0ZXMgdG8gYmUgcmVhZC4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgZm9yIGJ5dGUgaW4gYnl0ZXM6Ci0gICAgICAgICAgICBz
ZWxmLl9xdWV1ZS5wdXQoYnl0ZSkKLQotCi1jbGFzcyBNb2NrVGFibGUoZGljdCk6Ci0gICAgIiIi
TW9jayB0YWJsZS4KLQotICAgIFRoaXMgbWltaWNzIG1vZF9weXRob24gbXBfdGFibGUuIE5vdGUg
dGhhdCBvbmx5IHRoZSBtZXRob2RzIHVzZWQgYnkKLSAgICB0ZXN0cyBhcmUgb3ZlcnJpZGRlbi4K
LSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb3B5X2Zyb209e30pOgotICAgICAg
ICBpZiBpc2luc3RhbmNlKGNvcHlfZnJvbSwgZGljdCk6Ci0gICAgICAgICAgICBjb3B5X2Zyb20g
PSBjb3B5X2Zyb20uaXRlbXMoKQotICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBjb3B5X2Zyb206
Ci0gICAgICAgICAgICBzZWxmLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUpCi0KLSAgICBkZWYgX19n
ZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgcmV0dXJuIHN1cGVyKE1vY2tUYWJsZSwgc2Vs
ZikuX19nZXRpdGVtX18oa2V5Lmxvd2VyKCkpCi0KLSAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwg
a2V5LCB2YWx1ZSk6Ci0gICAgICAgIHN1cGVyKE1vY2tUYWJsZSwgc2VsZikuX19zZXRpdGVtX18o
a2V5Lmxvd2VyKCksIHZhbHVlKQotCi0gICAgZGVmIGdldChzZWxmLCBrZXksIGRlZl92YWx1ZT1O
b25lKToKLSAgICAgICAgcmV0dXJuIHN1cGVyKE1vY2tUYWJsZSwgc2VsZikuZ2V0KGtleS5sb3dl
cigpLCBkZWZfdmFsdWUpCi0KLQotY2xhc3MgTW9ja1JlcXVlc3Qob2JqZWN0KToKLSAgICAiIiJN
b2NrIHJlcXVlc3QuCi0KLSAgICBUaGlzIG1pbWljcyBtb2RfcHl0aG9uIHJlcXVlc3QuCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgdXJpPU5vbmUsIGhlYWRlcnNfaW49e30sIGNv
bm5lY3Rpb249Tm9uZSwgbWV0aG9kPSdHRVQnLAotICAgICAgICAgICAgICAgICBwcm90b2NvbD0n
SFRUUC8xLjEnLCBpc19odHRwcz1GYWxzZSk6Ci0gICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0
YW5jZS4KLQotICAgICAgICBBcmd1bWVudHM6Ci0gICAgICAgICAgICB1cmk6IFVSSSBvZiB0aGUg
cmVxdWVzdC4KLSAgICAgICAgICAgIGhlYWRlcnNfaW46IFJlcXVlc3QgaGVhZGVycy4KLSAgICAg
ICAgICAgIGNvbm5lY3Rpb246IENvbm5lY3Rpb24gdXNlZCBmb3IgdGhlIHJlcXVlc3QuCi0gICAg
ICAgICAgICBtZXRob2Q6IHJlcXVlc3QgbWV0aG9kLgotICAgICAgICAgICAgaXNfaHR0cHM6IFdo
ZXRoZXIgdGhpcyByZXF1ZXN0IGlzIG92ZXIgU1NMLgotCi0gICAgICAgIFNlZSB0aGUgZG9jdW1l
bnQgb2YgbW9kX3B5dGhvbiBSZXF1ZXN0IGZvciBkZXRhaWxzLgotICAgICAgICAiIiIKLSAgICAg
ICAgc2VsZi51cmkgPSB1cmkKLSAgICAgICAgc2VsZi51bnBhcnNlZF91cmkgPSB1cmkKLSAgICAg
ICAgc2VsZi5jb25uZWN0aW9uID0gY29ubmVjdGlvbgotICAgICAgICBzZWxmLm1ldGhvZCA9IG1l
dGhvZAotICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKLSAgICAgICAgc2VsZi5oZWFk
ZXJzX2luID0gTW9ja1RhYmxlKGhlYWRlcnNfaW4pCi0gICAgICAgICMgc2VsZi5pc19odHRwc18g
bmVlZHMgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIHRlc3RzLiAgVG8gYXZvaWQgbmFtZQotICAgICAg
ICAjIGNvbmZsaWN0IHdpdGggc2VsZi5pc19odHRwcygpLCBpdCBpcyBuYW1lZCBhcyBzdWNoLgot
ICAgICAgICBzZWxmLmlzX2h0dHBzXyA9IGlzX2h0dHBzCi0gICAgICAgIHNlbGYud3Nfc3RyZWFt
ID0gU3RyZWFtSGl4aWU3NShzZWxmLCBUcnVlKQotICAgICAgICBzZWxmLndzX2Nsb3NlX2NvZGUg
PSBOb25lCi0gICAgICAgIHNlbGYud3NfY2xvc2VfcmVhc29uID0gTm9uZQotICAgICAgICBzZWxm
LndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJMDAKLSAgICAgICAgc2VsZi53c19kZWZs
YXRlID0gRmFsc2UKLQotICAgIGRlZiBpc19odHRwcyhzZWxmKToKLSAgICAgICAgIiIiUmV0dXJu
IHdoZXRoZXIgdGhpcyByZXF1ZXN0IGlzIG92ZXIgU1NMLiIiIgotICAgICAgICByZXR1cm4gc2Vs
Zi5pc19odHRwc18KLQotCi1jbGFzcyBNb2NrRGlzcGF0Y2hlcihvYmplY3QpOgotICAgICIiIk1v
Y2sgZm9yIGRpc3BhdGNoLkRpc3BhdGNoZXIuIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6
Ci0gICAgICAgIHNlbGYuZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCA9IEZhbHNlCi0KLSAgICBk
ZWYgZG9fZXh0cmFfaGFuZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHNlbGYu
ZG9fZXh0cmFfaGFuZHNoYWtlX2NhbGxlZCA9IFRydWUKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRh
KHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi0jIHZpOnN0cz00IHN3PTQg
ZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvc3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggZGQ1NDM1YThjYzBlMjc1NWM1ODNjMzZkMGNlYWYzZjNmZjYwMjFiMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L211eF9jbGllbnRfZm9yX3Rlc3RpbmcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2OTAgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJX
ZWJTb2NrZXQgY2xpZW50IHV0aWxpdHkgZm9yIHRlc3RpbmcgbXV4IGV4dGVuc2lvbi4KLQotVGhp
cyBjb2RlIHNob3VsZCBiZSBpbmRlcGVuZGVudCBmcm9tIG1vZF9weXdlYnNvY2tldC4gU2VlIHRo
ZSBjb21tZW50IG9mCi1jbGllbnRfZm9yX3Rlc3RpbmcucHkuCi0KLU5PVEU6IFRoaXMgY29kZSBp
cyBmYXIgZnJvbSByb2J1c3QgbGlrZSBjbGllbnRfZm9yX3Rlc3RpbmcucHkuCi0iIiIKLQotCi0K
LWltcG9ydCBRdWV1ZQotaW1wb3J0IGJhc2U2NAotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQg
ZW1haWwKLWltcG9ydCBlbWFpbC5wYXJzZXIKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgbWF0aAot
aW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCi1pbXBvcnQgc29ja2V0Ci1pbXBvcnQgc3RydWN0Ci1p
bXBvcnQgdGhyZWFkaW5nCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCi0KLWZy
b20gdGVzdCBpbXBvcnQgY2xpZW50X2Zvcl90ZXN0aW5nCi0KLQotX0NPTlRST0xfQ0hBTk5FTF9J
RCA9IDAKLV9ERUZBVUxUX0NIQU5ORUxfSUQgPSAxCi0KLV9NVVhfT1BDT0RFX0FERF9DSEFOTkVM
X1JFUVVFU1QgPSAwCi1fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9SRVNQT05TRSA9IDEKLV9NVVhf
T1BDT0RFX0ZMT1dfQ09OVFJPTCA9IDIKLV9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCA9IDMKLV9N
VVhfT1BDT0RFX05FV19DSEFOTkVMX1NMT1QgPSA0Ci0KLQotY2xhc3MgX0NvbnRyb2xCbG9jazoK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgb3Bjb2RlKToKLSAgICAgICAgc2VsZi5vcGNvZGUgPSBv
cGNvZGUKLQotCi1kZWYgX3BhcnNlX2hhbmRzaGFrZV9yZXNwb25zZShyZXNwb25zZSk6Ci0gICAg
c3RhdHVzX2xpbmUsIGhlYWRlcl9saW5lcyA9IHJlc3BvbnNlLnNwbGl0KCdcclxuJywgMSkKLQot
ICAgIHdvcmRzID0gc3RhdHVzX2xpbmUuc3BsaXQoJyAnKQotICAgIGlmIGxlbih3b3JkcykgPCAz
OgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdCYWQgU3RhdHVzLUxpbmUgc3ludGF4ICVyJyAl
IHN0YXR1c19saW5lKQotICAgIFt2ZXJzaW9uLCByZXNwb25zZV9jb2RlXSA9IHdvcmRzWzoyXQot
ICAgIGlmIHZlcnNpb24gIT0gJ0hUVFAvMS4xJzoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcign
QmFkIHJlc3BvbnNlIHZlcnNpb24gJXInICUgdmVyc2lvbikKLQotICAgIGlmIHJlc3BvbnNlX2Nv
ZGUgIT0gJzEwMSc6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0JhZCByZXNwb25zZSBjb2Rl
ICVyICcgJSByZXNwb25zZV9jb2RlKQotICAgIGhlYWRlcnMgPSBlbWFpbC5wYXJzZXIuUGFyc2Vy
KCkucGFyc2VzdHIoaGVhZGVyX2xpbmVzKQotICAgIHJldHVybiBoZWFkZXJzCi0KLQotZGVmIF9w
YXJzZV9jaGFubmVsX2lkKGRhdGEsIG9mZnNldD0wKToKLSAgICBsZW5ndGggPSBsZW4oZGF0YSkK
LSAgICByZW1haW5pbmcgPSBsZW5ndGggLSBvZmZzZXQKLQotICAgIGlmIHJlbWFpbmluZyA8PSAw
OgotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ05vIGNoYW5uZWwgaWQgZm91bmQnKQotCi0gICAg
Y2hhbm5lbF9pZCA9IG9yZChkYXRhW29mZnNldF0pCi0gICAgY2hhbm5lbF9pZF9sZW5ndGggPSAx
Ci0gICAgaWYgY2hhbm5lbF9pZCAmIDB4ZTAgPT0gMHhlMDoKLSAgICAgICAgaWYgcmVtYWluaW5n
IDwgNDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZv
cm1hdCcpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBzdHJ1Y3QudW5wYWNrKCchTCcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFbb2Zmc2V0Om9mZnNldCs0XSlbMF0gJiAw
eDFmZmZmZmZmCi0gICAgICAgIGNoYW5uZWxfaWRfbGVuZ3RoID0gNAotICAgIGVsaWYgY2hhbm5l
bF9pZCAmIDB4YzAgPT0gMHhjMDoKLSAgICAgICAgaWYgcmVtYWluaW5nIDwgMzoKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignSW52YWxpZCBjaGFubmVsIGlkIGZvcm1hdCcpCi0gICAgICAg
IGNoYW5uZWxfaWQgPSAoKChjaGFubmVsX2lkICYgMHgxZikgPDwgMTYpICsKLSAgICAgICAgICAg
ICAgICAgICAgICBzdHJ1Y3QudW5wYWNrKCchSCcsIGRhdGFbb2Zmc2V0KzE6b2Zmc2V0KzNdKVsw
XSkKLSAgICAgICAgY2hhbm5lbF9pZF9sZW5ndGggPSAzCi0gICAgZWxpZiBjaGFubmVsX2lkICYg
MHg4MCA9PSAweDgwOgotICAgICAgICBpZiByZW1haW5pbmcgPCAyOgotICAgICAgICAgICAgcmFp
c2UgRXhjZXB0aW9uKCdJbnZhbGlkIGNoYW5uZWwgaWQgZm9ybWF0JykKLSAgICAgICAgY2hhbm5l
bF9pZCA9IHN0cnVjdC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQ6b2Zmc2V0KzJdKVswXSAmIDB4
M2ZmZgotICAgICAgICBjaGFubmVsX2lkX2xlbmd0aCA9IDIKLQotICAgIHJldHVybiBjaGFubmVs
X2lkLCBjaGFubmVsX2lkX2xlbmd0aAotCi0KLWRlZiBfcGFyc2VfbnVtYmVyKGRhdGEsIG9mZnNl
dD0wKToKLSAgICBmaXJzdF9ieXRlID0gb3JkKGRhdGFbb2Zmc2V0XSkKLSAgICBpZiAoZmlyc3Rf
Ynl0ZSAmIDB4ODApICE9IDA6Ci0gICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGhlIE1TQiBvZiBu
dW1iZXIgZmllbGQgbXVzdCBiZSB1bnNldCcpCi0gICAgZmlyc3RfYnl0ZSA9IGZpcnN0X2J5dGUg
JiAweDdmCi0gICAgaWYgZmlyc3RfYnl0ZSA9PSAxMjc6Ci0gICAgICAgIGlmIG9mZnNldCArIDkg
PiBsZW4oZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVy
JykKLSAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJyFRJywgZGF0YVtvZmZzZXQrMTpvZmZz
ZXQrOV0pWzBdLCA5Ci0gICAgaWYgZmlyc3RfYnl0ZSA9PSAxMjY6Ci0gICAgICAgIGlmIG9mZnNl
dCArIDMgPiBsZW4oZGF0YSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQg
bnVtYmVyJykKLSAgICAgICAgcmV0dXJuIHN0cnVjdC51bnBhY2soJyFIJywgZGF0YVtvZmZzZXQr
MTpvZmZzZXQrM10pWzBdLCAzCi0gICAgcmV0dXJuIGZpcnN0X2J5dGUsIDEKLQotCi1kZWYgX3Bh
cnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIG9mZnNldD0wKToKLSAgICBzaXplLCBhZHZhbmNl
ID0gX3BhcnNlX251bWJlcihkYXRhLCBvZmZzZXQpCi0gICAgc3RhcnRfcG9zaXRpb24gPSBvZmZz
ZXQgKyBhZHZhbmNlCi0gICAgZW5kX3Bvc2l0aW9uID0gc3RhcnRfcG9zaXRpb24gKyBzaXplCi0g
ICAgaWYgbGVuKGRhdGEpIDwgZW5kX3Bvc2l0aW9uOgotICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0ludmFsaWQgc2l6ZSBvZiBjb250cm9sIGJsb2NrICglZCA8ICVkKScgJSAoCi0gICAgICAgICAg
ICAgICAgbGVuKGRhdGEpLCBlbmRfcG9zaXRpb24pKQotICAgIHJldHVybiBkYXRhW3N0YXJ0X3Bv
c2l0aW9uOmVuZF9wb3NpdGlvbl0sIHNpemUgKyBhZHZhbmNlCi0KLQotZGVmIF9wYXJzZV9jb250
cm9sX2Jsb2NrcyhkYXRhKToKLSAgICBibG9ja3MgPSBbXQotICAgIGxlbmd0aCA9IGxlbihkYXRh
KQotICAgIHBvcyA9IDAKLQotICAgIHdoaWxlIHBvcyA8IGxlbmd0aDoKLSAgICAgICAgZmlyc3Rf
Ynl0ZSA9IG9yZChkYXRhW3Bvc10pCi0gICAgICAgIHBvcyArPSAxCi0gICAgICAgIG9wY29kZSA9
IChmaXJzdF9ieXRlID4+IDUpICYgMHg3Ci0gICAgICAgIGJsb2NrID0gX0NvbnRyb2xCbG9jayhv
cGNvZGUpCi0KLSAgICAgICAgIyBUT0RPKGJhc2hpKTogU3VwcG9ydCBtb3JlIG9wY29kZQotICAg
ICAgICBpZiBvcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6Ci0gICAg
ICAgICAgICBibG9jay5lbmNvZGUgPSBmaXJzdF9ieXRlICYgMwotICAgICAgICAgICAgYmxvY2su
cmVqZWN0ZWQgPSAoZmlyc3RfYnl0ZSA+PiA0KSAmIDEKLQotICAgICAgICAgICAgY2hhbm5lbF9p
ZCwgYWR2YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lkKGRhdGEsIHBvcykKLSAgICAgICAgICAgIGJs
b2NrLmNoYW5uZWxfaWQgPSBjaGFubmVsX2lkCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQot
Ci0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSwgYWR2YW5jZSA9IF9wYXJzZV9zaXplX2Fu
ZF9jb250ZW50cyhkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5lbmNvZGVkX2hhbmRzaGFr
ZSA9IGVuY29kZWRfaGFuZHNoYWtlCi0gICAgICAgICAgICBwb3MgKz0gYWR2YW5jZQotICAgICAg
ICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAgZWxpZiBvcGNvZGUgPT0gX01VWF9P
UENPREVfRFJPUF9DSEFOTkVMOgotICAgICAgICAgICAgYmxvY2subXV4X2Vycm9yID0gKGZpcnN0
X2J5dGUgPj4gNCkgJiAxCi0KLSAgICAgICAgICAgIGNoYW5uZWxfaWQsIGFkdmFuY2UgPSBfcGFy
c2VfY2hhbm5lbF9pZChkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5jaGFubmVsX2lkID0g
Y2hhbm5lbF9pZAotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLQotICAgICAgICAgICAgcmVh
c29uLCBhZHZhbmNlID0gX3BhcnNlX3NpemVfYW5kX2NvbnRlbnRzKGRhdGEsIHBvcykKLSAgICAg
ICAgICAgIGlmIGxlbihyZWFzb24pID09IDA6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJvcF9j
b2RlID0gTm9uZQotICAgICAgICAgICAgICAgIGJsb2NrLmRyb3BfbWVzc2FnZSA9ICcnCi0gICAg
ICAgICAgICBlbGlmIGxlbihyZWFzb24pID49IDI6Ci0gICAgICAgICAgICAgICAgYmxvY2suZHJv
cF9jb2RlID0gc3RydWN0LnVucGFjaygnIUgnLCByZWFzb25bOjJdKVswXQotICAgICAgICAgICAg
ICAgIGJsb2NrLmRyb3BfbWVzc2FnZSA9IHJlYXNvblsyOl0KLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIERyb3BDaGFubmVsJykKLSAg
ICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBibG9ja3MuYXBwZW5kKGJsb2Nr
KQotICAgICAgICBlbGlmIG9wY29kZSA9PSBfTVVYX09QQ09ERV9GTE9XX0NPTlRST0w6Ci0gICAg
ICAgICAgICBjaGFubmVsX2lkLCBhZHZhbmNlID0gX3BhcnNlX2NoYW5uZWxfaWQoZGF0YSwgcG9z
KQotICAgICAgICAgICAgYmxvY2suY2hhbm5lbF9pZCA9IGNoYW5uZWxfaWQKLSAgICAgICAgICAg
IHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAgICBzZW5kX3F1b3RhLCBhZHZhbmNlID0gX3BhcnNl
X251bWJlcihkYXRhLCBwb3MpCi0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2VuZF9x
dW90YQotICAgICAgICAgICAgcG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIGJsb2Nrcy5hcHBl
bmQoYmxvY2spCi0gICAgICAgIGVsaWYgb3Bjb2RlID09IF9NVVhfT1BDT0RFX05FV19DSEFOTkVM
X1NMT1Q6Ci0gICAgICAgICAgICBmYWxsYmFjayA9IGZpcnN0X2J5dGUgJiAxCi0gICAgICAgICAg
ICBzbG90cywgYWR2YW5jZSA9IF9wYXJzZV9udW1iZXIoZGF0YSwgcG9zKQotICAgICAgICAgICAg
cG9zICs9IGFkdmFuY2UKLSAgICAgICAgICAgIHNlbmRfcXVvdGEsIGFkdmFuY2UgPSBfcGFyc2Vf
bnVtYmVyKGRhdGEsIHBvcykKLSAgICAgICAgICAgIHBvcyArPSBhZHZhbmNlCi0gICAgICAgICAg
ICBpZiBmYWxsYmFjayA9PSAxIGFuZCAoc2xvdHMgIT0gMCBvciBzZW5kX3F1b3RhICE9IDApOgot
ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignc2xvdHMgYW5kIHNlbmRfcXVvdGEgbXVz
dCBiZSB6ZXJvIGlmIEYgYml0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lz
IHNldCcpCi0gICAgICAgICAgICBibG9jay5mYWxsYmFjayA9IGZhbGxiYWNrCi0gICAgICAgICAg
ICBibG9jay5zbG90cyA9IHNsb3RzCi0gICAgICAgICAgICBibG9jay5zZW5kX3F1b3RhID0gc2Vu
ZF9xdW90YQotICAgICAgICAgICAgYmxvY2tzLmFwcGVuZChibG9jaykKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigKLSAgICAgICAgICAgICAgICAnVW5zdXBwb3J0
ZWQgbXV4IG9wY29kZSAlZCByZWNlaXZlZCcgJSBvcGNvZGUpCi0KLSAgICByZXR1cm4gYmxvY2tz
Ci0KLQotZGVmIF9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKToKLSAgICBpZiBjaGFubmVs
X2lkIDwgMDoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBtdXN0IG5v
dCBiZSBuZWdhdGl2ZScgJSBjaGFubmVsX2lkKQotCi0gICAgaWYgY2hhbm5lbF9pZCA8IDIgKiog
NzoKLSAgICAgICAgcmV0dXJuIGNocihjaGFubmVsX2lkKQotICAgIGlmIGNoYW5uZWxfaWQgPCAy
ICoqIDE0OgotICAgICAgICByZXR1cm4gc3RydWN0LnBhY2soJyFIJywgMHg4MDAwICsgY2hhbm5l
bF9pZCkKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAqKiAyMToKLSAgICAgICAgZmlyc3QgPSBjaHIo
MHhjMCArIChjaGFubmVsX2lkID4+IDE2KSkKLSAgICAgICAgcmV0dXJuIGZpcnN0ICsgc3RydWN0
LnBhY2soJyFIJywgY2hhbm5lbF9pZCAmIDB4ZmZmZikKLSAgICBpZiBjaGFubmVsX2lkIDwgMiAq
KiAyOToKLSAgICAgICAgcmV0dXJuIHN0cnVjdC5wYWNrKCchTCcsIDB4ZTAwMDAwMDAgKyBjaGFu
bmVsX2lkKQotCi0gICAgcmFpc2UgVmFsdWVFcnJvcignQ2hhbm5lbCBpZCAlZCBpcyB0b28gbGFy
Z2UnICUgY2hhbm5lbF9pZCkKLQotCi1kZWYgX2VuY29kZV9udW1iZXIobnVtYmVyKToKLSAgICBp
ZiBudW1iZXIgPD0gMTI1OgotICAgICAgICByZXR1cm4gY2hyKG51bWJlcikKLSAgICBlbGlmIG51
bWJlciA8ICgxIDw8IDE2KToKLSAgICAgICAgcmV0dXJuIGNocigweDdlKSArIHN0cnVjdC5wYWNr
KCchSCcsIG51bWJlcikKLSAgICBlbGlmIG51bWJlciA8ICgxIDw8IDYzKToKLSAgICAgICAgcmV0
dXJuIGNocigweDdmKSArIHN0cnVjdC5wYWNrKCchUScsIG51bWJlcikKLSAgICBlbHNlOgotICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgbnVtYmVyJykKLQotCi1kZWYgX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXF1ZXN0KGNoYW5uZWxfaWQsIGVuY29kZWRfaGFuZHNoYWtlLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0wKToKLSAgICBsZW5ndGggPSBsZW4o
ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgaGFuZHNoYWtlX2xlbmd0aCA9IF9lbmNvZGVfbnVtYmVy
KGxlbmd0aCkKLQotICAgIGZpcnN0X2J5dGUgPSAoX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVR
VUVTVCA8PCA1KSB8IGVuY29kaW5nCi0gICAgcmV0dXJuIChjaHIoZmlyc3RfYnl0ZSkgKyBfZW5j
b2RlX2NoYW5uZWxfaWQoY2hhbm5lbF9pZCkgKwotICAgICAgICAgICAgaGFuZHNoYWtlX2xlbmd0
aCArIGVuY29kZWRfaGFuZHNoYWtlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbChjaGFu
bmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgZmlyc3RfYnl0ZSA9IChfTVVYX09QQ09E
RV9GTE9XX0NPTlRST0wgPDwgNSkKLSAgICByZXR1cm4gKGNocihmaXJzdF9ieXRlKSArIF9lbmNv
ZGVfY2hhbm5lbF9pZChjaGFubmVsX2lkKSArCi0gICAgICAgICAgICBfZW5jb2RlX251bWJlcihy
ZXBsZW5pc2hlZF9xdW90YSkpCi0KLQotY2xhc3MgX011eFJlYWRlclRocmVhZCh0aHJlYWRpbmcu
VGhyZWFkKToKLSAgICAiIiJNdXggcmVhZGVyIHRocmVhZC4KLQotICAgIFJlYWRzIGZyYW1lcyBh
bmQgcGFzc2VzIHRoZW0gdG8gdGhlIG11eCBjbGllbnQuIFRoaXMgdGhyZWFkIGFjY2Vzc2VzCi0g
ICAgcHJpdmF0ZSBmdW5jdGlvbnMvdmFyaWFibGVzIG9mIHRoZSBtdXggY2xpZW50LgotICAgICIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG11eCk6Ci0gICAgICAgIHRocmVhZGluZy5UaHJl
YWQuX19pbml0X18oc2VsZikKLSAgICAgICAgc2VsZi5zZXREYWVtb24oVHJ1ZSkKLSAgICAgICAg
c2VsZi5fbXV4ID0gbXV4Ci0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gRmFsc2UKLQot
ICAgIGRlZiBfcmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBmaXJzdF9vcGNvZGUgPSBO
b25lCi0gICAgICAgIHBlbmRpbmdfcGF5bG9hZCA9IFtdCi0gICAgICAgIHdoaWxlIG5vdCBzZWxm
Ll9zdG9wX3JlcXVlc3RlZDoKLSAgICAgICAgICAgIGZpbiwgcnN2MSwgcnN2MiwgcnN2Mywgb3Bj
b2RlLCBwYXlsb2FkX2xlbmd0aCA9ICgKLSAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3Rp
bmcucmVhZF9mcmFtZV9oZWFkZXIoc2VsZi5fbXV4Ll9zb2NrZXQpKQotCi0gICAgICAgICAgICBp
ZiBub3QgZmlyc3Rfb3Bjb2RlOgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQ6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2Vw
dGlvbignUmVjZWl2ZWQgYSB0ZXh0IG1lc3NhZ2Ugb24gcGh5c2ljYWwgJwotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ2Nvbm5lY3Rpb24nKQotICAgICAgICAgICAgICAgIGlm
IG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0NPTlRJTlVBVElPTjoKLSAgICAg
ICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBhbiBpbnRlcm1lZGlhdGUg
ZnJhbWUgYnV0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcmFnbWVu
dGF0aW9uIHdhcyBub3Qgc3RhcnRlZCcpCi0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBj
bGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFSWSBvcgotICAgICAgICAgICAgICAgICAgICBv
cGNvZGUgPT0gY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9QT05HIG9yCi0gICAgICAgICAgICAg
ICAgICAgIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1BPTkcgb3IKLSAgICAg
ICAgICAgICAgICAgICAgb3Bjb2RlID09IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0Up
OgotICAgICAgICAgICAgICAgICAgICBmaXJzdF9vcGNvZGUgPSBvcGNvZGUKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1JlY2VpdmVk
IGFuIHVuZGVmaW5lZCBvcGNvZGUgZnJhbWU6ICVkJyAlCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBvcGNvZGUpCi0KLSAgICAgICAgICAgIGVsaWYgb3Bjb2RlICE9IGNsaWVu
dF9mb3JfdGVzdGluZy5PUENPREVfQ09OVElOVUFUSU9OOgotICAgICAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignUmVjZWl2ZWQgYSBuZXcgb3Bjb2RlIGJlZm9yZSAnCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICd0ZXJtaW5hdGluZyBmcmFnbWVudGF0aW9uJykKLQotICAgICAg
ICAgICAgcGF5bG9hZCA9IGNsaWVudF9mb3JfdGVzdGluZy5yZWNlaXZlX2J5dGVzKAotICAgICAg
ICAgICAgICAgIHNlbGYuX211eC5fc29ja2V0LCBwYXlsb2FkX2xlbmd0aCkKLQotICAgICAgICAg
ICAgaWYgc2VsZi5fbXV4Ll9pbmNvbWluZ19mcmFtZV9maWx0ZXIgaXMgbm90IE5vbmU6Ci0gICAg
ICAgICAgICAgICAgcGF5bG9hZCA9IHNlbGYuX211eC5faW5jb21pbmdfZnJhbWVfZmlsdGVyLmZp
bHRlcihwYXlsb2FkKQotCi0gICAgICAgICAgICBwZW5kaW5nX3BheWxvYWQuYXBwZW5kKHBheWxv
YWQpCi0KLSAgICAgICAgICAgIGlmIGZpbjoKLSAgICAgICAgICAgICAgICBicmVhawotCi0gICAg
ICAgIGlmIHNlbGYuX3N0b3BfcmVxdWVzdGVkOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5v
bmUKLQotICAgICAgICBtZXNzYWdlID0gJycuam9pbihwZW5kaW5nX3BheWxvYWQpCi0gICAgICAg
IHJldHVybiBmaXJzdF9vcGNvZGUsIG1lc3NhZ2UKLQotICAgIGRlZiByZXF1ZXN0X3N0b3Aoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQotCi0gICAgZGVmIHJ1bihz
ZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVx
dWVzdGVkOgotICAgICAgICAgICAgICAgICMgb3Bjb2RlIGlzIE9QQ09ERV9CSU5BUlkgb3IgY29u
dHJvbCBvcGNvZGVzIHdoZW4gYSBtZXNzYWdlCi0gICAgICAgICAgICAgICAgIyBpcyBzdWNjZXNm
dWxseSByZWNlaXZlZC4KLSAgICAgICAgICAgICAgICBvcGNvZGUsIG1lc3NhZ2UgPSBzZWxmLl9y
ZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgICAgIGlmIG5vdCBvcGNvZGU6Ci0gICAgICAg
ICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgICAgIGlmIG9wY29kZSA9PSBjbGllbnRf
Zm9yX3Rlc3RpbmcuT1BDT0RFX0JJTkFSWToKLSAgICAgICAgICAgICAgICAgICAgY2hhbm5lbF9p
ZCwgYWR2YW5jZSA9IF9wYXJzZV9jaGFubmVsX2lkKG1lc3NhZ2UpCi0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuX211eC5fZGlzcGF0Y2hfZnJhbWUoY2hhbm5lbF9pZCwgbWVzc2FnZVthZHZhbmNl
Ol0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbXV4
Ll9wcm9jZXNzX2NvbnRyb2xfbWVzc2FnZShvcGNvZGUsIG1lc3NhZ2UpCi0gICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBzZWxmLl9tdXguX25vdGlmeV9yZWFkZXJfZG9uZSgpCi0KLQotY2xh
c3MgX0lubmVyRnJhbWUob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZmluLCByc3Yx
LCByc3YyLCByc3YzLCBvcGNvZGUsIHBheWxvYWQpOgotICAgICAgICBzZWxmLmZpbiA9IGZpbgot
ICAgICAgICBzZWxmLnJzdjEgPSByc3YxCi0gICAgICAgIHNlbGYucnN2MiA9IHJzdjIKLSAgICAg
ICAgc2VsZi5yc3YzID0gcnN2MwotICAgICAgICBzZWxmLm9wY29kZSA9IG9wY29kZQotICAgICAg
ICBzZWxmLnBheWxvYWQgPSBwYXlsb2FkCi0KLQotY2xhc3MgX0xvZ2ljYWxDaGFubmVsRGF0YShv
YmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5xdWV1ZSA9IFF1
ZXVlLlF1ZXVlKCkKLSAgICAgICAgc2VsZi5zZW5kX3F1b3RhID0gMAotICAgICAgICBzZWxmLnJl
Y2VpdmVfcXVvdGEgPSAwCi0KLQotY2xhc3MgTXV4Q2xpZW50KG9iamVjdCk6Ci0gICAgIiIiV2Vi
U29ja2V0IG11eCBjbGllbnQuCi0KLSAgICBOb3RlIHRoYXQgdGhpcyBjbGFzcyBpcyBOT1QgdGhy
ZWFkLXNhZmUuIERvIG5vdCBhY2Nlc3MgYW4gaW5zdGFuY2Ugb2YgdGhpcwotICAgIGNsYXNzIGZy
b20gbXVsdGlwbGUgdGhyZWFkcyBhdCBhIHNhbWUgdGltZS4KLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBvcHRpb25zKToKLSAgICAgICAgc2VsZi5fbG9nZ2VyID0gdXRpbC5nZXRf
Y2xhc3NfbG9nZ2VyKHNlbGYpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9ucyA9IG9wdGlvbnMKLSAg
ICAgICAgc2VsZi5fb3B0aW9ucy5lbmFibGVfbXV4KCkKLSAgICAgICAgc2VsZi5fc3RyZWFtID0g
Tm9uZQotICAgICAgICBzZWxmLl9zb2NrZXQgPSBOb25lCi0gICAgICAgIHNlbGYuX2hhbmRzaGFr
ZSA9IGNsaWVudF9mb3JfdGVzdGluZy5XZWJTb2NrZXRIYW5kc2hha2Uoc2VsZi5fb3B0aW9ucykK
LSAgICAgICAgc2VsZi5faW5jb21pbmdfZnJhbWVfZmlsdGVyID0gTm9uZQotICAgICAgICBzZWxm
Ll9vdXRnb2luZ19mcmFtZV9maWx0ZXIgPSBOb25lCi0KLSAgICAgICAgc2VsZi5faXNfYWN0aXZl
ID0gRmFsc2UKLSAgICAgICAgc2VsZi5fcmVhZF90aHJlYWQgPSBOb25lCi0gICAgICAgIHNlbGYu
X2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbiA9IHRocmVhZGluZy5Db25kaXRpb24oKQotICAgICAg
ICBzZWxmLl9jb250cm9sX2Jsb2NrcyA9IFtdCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfc2xvdHMg
PSBjb2xsZWN0aW9ucy5kZXF1ZSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uID0gdGhyZWFkaW5nLkNvbmRpdGlvbigpOwotICAgICAgICBzZWxmLl9sb2dpY2FsX2No
YW5uZWxzID0ge30KLSAgICAgICAgc2VsZi5fdGltZW91dCA9IDIKLSAgICAgICAgc2VsZi5fcGh5
c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudCA9IE5vbmUKLSAgICAgICAgc2VsZi5fcGh5c2lj
YWxfY29ubmVjdGlvbl9jbG9zZV9tZXNzYWdlID0gTm9uZQotCi0gICAgZGVmIF9wYXJzZV9pbm5l
cl9mcmFtZShzZWxmLCBkYXRhKToKLSAgICAgICAgaWYgbGVuKGRhdGEpID09IDA6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ0ludmFsaWQgZW5jYXBzdWxhdGVkIGZyYW1lIHJlY2VpdmVk
JykKLQotICAgICAgICBmaXJzdF9ieXRlID0gb3JkKGRhdGFbMF0pCi0gICAgICAgIGZpbiA9IChm
aXJzdF9ieXRlIDw8IDcpICYgMQotICAgICAgICByc3YxID0gKGZpcnN0X2J5dGUgPDwgNikgJiAx
Ci0gICAgICAgIHJzdjIgPSAoZmlyc3RfYnl0ZSA8PCA1KSAmIDEKLSAgICAgICAgcnN2MyA9IChm
aXJzdF9ieXRlIDw8IDQpICYgMQotICAgICAgICBvcGNvZGUgPSBmaXJzdF9ieXRlICYgMHhmCi0K
LSAgICAgICAgaWYgc2VsZi5fb3V0Z29pbmdfZnJhbWVfZmlsdGVyOgotICAgICAgICAgICAgcGF5
bG9hZCA9IHNlbGYuX291dGdvaW5nX2ZyYW1lX2ZpbHRlci5maWx0ZXIoCi0gICAgICAgICAgICAg
ICAgZGF0YVsxOl0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXlsb2FkID0gZGF0YVsx
Ol0KLQotICAgICAgICByZXR1cm4gX0lubmVyRnJhbWUoZmluLCByc3YxLCByc3YyLCByc3YzLCBv
cGNvZGUsIHBheWxvYWQpCi0KLSAgICBkZWYgX3Byb2Nlc3NfbXV4X2NvbnRyb2xfYmxvY2tzKHNl
bGYpOgotICAgICAgICBmb3IgYmxvY2sgaW4gc2VsZi5fY29udHJvbF9ibG9ja3M6Ci0gICAgICAg
ICAgICBpZiBibG9jay5vcGNvZGUgPT0gX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVTUE9OU0U6
Ci0gICAgICAgICAgICAgICAgIyBBZGRDaGFubmVsUmVzcG9uc2Ugd2lsbCBiZSBoYW5kbGVkIGlu
IGFkZF9jaGFubmVsKCkuCi0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGVs
aWYgYmxvY2sub3Bjb2RlID09IF9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTDoKLSAgICAgICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29u
ZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgYmxvY2suY2hhbm5l
bF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAgICAgICAgICAgICAgICAgICAg
cmFpc2UgRXhjZXB0aW9uKCdJbnZhbGlkIGZsb3cgY29udHJvbCByZWNlaXZlZCBmb3IgJwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFubmVsIGlkICVkJyAlIGJs
b2NrLmNoYW5uZWxfaWQpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5l
bHNbYmxvY2suY2hhbm5lbF9pZF0uc2VuZF9xdW90YSArPSAoCi0gICAgICAgICAgICAgICAgICAg
ICAgICBibG9jay5zZW5kX3F1b3RhKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9sb2dpY2Fs
X2NoYW5uZWxzX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVh
c2UoKQotICAgICAgICAgICAgZWxpZiBibG9jay5vcGNvZGUgPT0gX01VWF9PUENPREVfTkVXX0NI
QU5ORUxfU0xPVDoKLSAgICAgICAgICAgICAgICBzZWxmLl9jaGFubmVsX3Nsb3RzLmV4dGVuZChb
YmxvY2suc2VuZF9xdW90YV0gKiBibG9jay5zbG90cykKLQotICAgIGRlZiBfZGlzcGF0Y2hfZnJh
bWUoc2VsZiwgY2hhbm5lbF9pZCwgcGF5bG9hZCk6Ci0gICAgICAgIGlmIGNoYW5uZWxfaWQgPT0g
X0NPTlRST0xfQ0hBTk5FTF9JRDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBz
ZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICAgICAg
c2VsZi5fY29udHJvbF9ibG9ja3MgKz0gX3BhcnNlX2NvbnRyb2xfYmxvY2tzKHBheWxvYWQpCi0g
ICAgICAgICAgICAgICAgc2VsZi5fcHJvY2Vzc19tdXhfY29udHJvbF9ibG9ja3MoKQotICAgICAg
ICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5ub3RpZnkoKQotICAgICAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25k
aXRpb24ucmVsZWFzZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAg
ICAgICAgICAgICAgaWYgbm90IGNoYW5uZWxfaWQgaW4gc2VsZi5fbG9naWNhbF9jaGFubmVsczoK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdSZWNlaXZlZCBsb2dpY2FsIGZy
YW1lIG9uIGNoYW5uZWwgaWQgJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
JyVkLCB3aGljaCBpcyBub3QgZXN0YWJsaXNoZWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGNoYW5uZWxfaWQpCi0KLSAgICAgICAgICAgICAgICBpbm5lcl9mcmFtZSA9
IHNlbGYuX3BhcnNlX2lubmVyX2ZyYW1lKHBheWxvYWQpCi0gICAgICAgICAgICAgICAgc2VsZi5f
bG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5yZWNlaXZlX3F1b3RhIC09ICgKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGxlbihpbm5lcl9mcmFtZS5wYXlsb2FkKSkKLSAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgPCAw
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1RoZSBzZXJ2ZXIgdmlvbGF0
ZXMgcXVvdGEgb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NoYW5u
ZWwgaWQgJWQnICUgY2hhbm5lbF9pZCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAg
ICAgICAgc2VsZi5fbG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAg
ICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLnB1dChpbm5lcl9m
cmFtZSkKLQotICAgIGRlZiBfcHJvY2Vzc19jb250cm9sX21lc3NhZ2Uoc2VsZiwgb3Bjb2RlLCBt
ZXNzYWdlKToKLSAgICAgICAgIyBQaW5nL1BvbmcgYXJlIG5vdCBzdXBwb3J0ZWQuCi0gICAgICAg
IGlmIG9wY29kZSA9PSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX0NMT1NFOgotICAgICAgICAg
ICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9tZXNzYWdlID0gbWVzc2FnZQotICAg
ICAgICAgICAgaWYgc2VsZi5faXNfYWN0aXZlOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVh
bS5zZW5kX2Nsb3NlKAotICAgICAgICAgICAgICAgICAgICBjb2RlPWNsaWVudF9mb3JfdGVzdGlu
Zy5TVEFUVVNfTk9STUFMX0NMT1NVUkUsIHJlYXNvbj0nJykKLSAgICAgICAgICAgICAgICBzZWxm
Ll9yZWFkX3RocmVhZC5yZXF1ZXN0X3N0b3AoKQotCi0gICAgICAgICAgICBpZiBzZWxmLl9waHlz
aWNhbF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50OgotICAgICAgICAgICAgICAgIHNlbGYuX3BoeXNp
Y2FsX2Nvbm5lY3Rpb25fY2xvc2VfZXZlbnQuc2V0KCkKLQotICAgIGRlZiBfbm90aWZ5X3JlYWRl
cl9kb25lKHNlbGYpOgotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1JlYWQgdGhyZWFkIHRl
cm1pbmF0ZWQuJykKLSAgICAgICAgc2VsZi5jbG9zZV9zb2NrZXQoKQotCi0gICAgZGVmIF9hc3Nl
cnRfY2hhbm5lbF9zbG90X2F2YWlsYWJsZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgc2VsZi5fY29udHJvbF9ibG9ja3NfY29uZGl0aW9uLmFjcXVpcmUoKQotICAgICAgICAgICAg
aWYgbGVuKHNlbGYuX2NoYW5uZWxfc2xvdHMpID09IDA6Ci0gICAgICAgICAgICAgICAgIyBXYWl0
IG9uY2UKLSAgICAgICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ud2Fp
dCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBz
ZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ucmVsZWFzZSgpCi0KLSAgICAgICAgaWYgbGVu
KHNlbGYuX2NoYW5uZWxfc2xvdHMpID09IDA6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0ZhaWxlZCB0byByZWNlaXZlIE5ld0NoYW5uZWxTbG90JykKLQotICAgIGRlZiBfYXNzZXJ0X3Nl
bmRfcXVvdGFfYXZhaWxhYmxlKHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAg
ICAgICAgIGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA9
PSAwOgotICAgICAgICAgICAgICAgICMgV2FpdCBvbmNlCi0gICAgICAgICAgICAgICAgc2VsZi5f
bG9naWNhbF9jaGFubmVsc19jb25kaXRpb24ud2FpdCh0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0g
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRp
dGlvbi5yZWxlYXNlKCkKLQotICAgICAgICBpZiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5u
ZWxfaWRdLnNlbmRfcXVvdGEgPT0gMDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFp
bGVkIHRvIHJlY2VpdmUgRmxvd0NvbnRyb2wgZm9yIGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2lkKQotCi0gICAgZGVmIGNvbm5lY3Qoc2VsZik6
Ci0gICAgICAgIHNlbGYuX3NvY2tldCA9IGNsaWVudF9mb3JfdGVzdGluZy5jb25uZWN0X3NvY2tl
dF93aXRoX3JldHJ5KAotICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX2hvc3Qs
Ci0gICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCwKLSAgICAgICAgICAg
ICAgICBzZWxmLl9vcHRpb25zLnNvY2tldF90aW1lb3V0LAotICAgICAgICAgICAgICAgIHNlbGYu
X29wdGlvbnMudXNlX3RscykKLQotICAgICAgICBzZWxmLl9oYW5kc2hha2UuaGFuZHNoYWtlKHNl
bGYuX3NvY2tldCkKLSAgICAgICAgc2VsZi5fc3RyZWFtID0gY2xpZW50X2Zvcl90ZXN0aW5nLldl
YlNvY2tldFN0cmVhbSgKLSAgICAgICAgICAgIHNlbGYuX3NvY2tldCwgc2VsZi5faGFuZHNoYWtl
KQotCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbX0RFRkFVTFRfQ0hBTk5FTF9JRF0g
PSBfTG9naWNhbENoYW5uZWxEYXRhKCkKLQotICAgICAgICBzZWxmLl9yZWFkX3RocmVhZCA9IF9N
dXhSZWFkZXJUaHJlYWQoc2VsZikKLSAgICAgICAgc2VsZi5fcmVhZF90aHJlYWQuc3RhcnQoKQot
Ci0gICAgICAgIHNlbGYuX2Fzc2VydF9jaGFubmVsX3Nsb3RfYXZhaWxhYmxlKCkKLSAgICAgICAg
c2VsZi5fYXNzZXJ0X3NlbmRfcXVvdGFfYXZhaWxhYmxlKF9ERUZBVUxUX0NIQU5ORUxfSUQpCi0K
LSAgICAgICAgc2VsZi5faXNfYWN0aXZlID0gVHJ1ZQotICAgICAgICBzZWxmLl9sb2dnZXIuaW5m
bygnQ29ubmVjdGlvbiBlc3RhYmxpc2hlZCcpCi0KLSAgICBkZWYgYWRkX2NoYW5uZWwoc2VsZiwg
Y2hhbm5lbF9pZCwgb3B0aW9ucyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ011eCBjbGllbnQgaXMgbm90IGFjdGl2ZScpCi0K
LSAgICAgICAgaWYgY2hhbm5lbF9pZCBpbiBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzOgotICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDaGFubmVsIGlkICVkIGFscmVhZHkgZXhpc3RzJyAlIGNo
YW5uZWxfaWQpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VuZF9xdW90YSA9IHNlbGYu
X2NoYW5uZWxfc2xvdHMucG9wbGVmdCgpCi0gICAgICAgIGV4Y2VwdCBJbmRleEVycm9yLCBlOgot
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdObyBjaGFubmVsIHNsb3RzOiAlcicgJSBlKQot
Ci0gICAgICAgICMgQ3JlYXRlIEFkZENoYW5uZWwgcmVxdWVzdAotICAgICAgICByZXF1ZXN0X2xp
bmUgPSAnR0VUICVzIEhUVFAvMS4xXHJcbicgJSBvcHRpb25zLnJlc291cmNlCi0gICAgICAgIGZp
ZWxkcyA9IFtdCi0gICAgICAgIGlmIG9wdGlvbnMuc2VydmVyX3BvcnQgPT0gY2xpZW50X2Zvcl90
ZXN0aW5nLkRFRkFVTFRfUE9SVDoKLSAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoJ0hvc3Q6ICVz
XHJcbicgJSBvcHRpb25zLnNlcnZlcl9ob3N0Lmxvd2VyKCkpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBmaWVsZHMuYXBwZW5kKCdIb3N0OiAlczolZFxyXG4nICUgKG9wdGlvbnMuc2VydmVy
X2hvc3QubG93ZXIoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3B0aW9ucy5zZXJ2ZXJfcG9ydCkpCi0gICAgICAgIGZpZWxkcy5hcHBlbmQoJ09yaWdp
bjogJXNcclxuJyAlIG9wdGlvbnMub3JpZ2luLmxvd2VyKCkpCi0gICAgICAgIGZpZWxkcy5hcHBl
bmQoJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJykKLQotICAgICAgICBpZiBsZW4ob3B0aW9ucy5l
eHRlbnNpb25zKSA+IDA6Ci0gICAgICAgICAgICBmaWVsZHMuYXBwZW5kKCdTZWMtV2ViU29ja2V0
LUV4dGVuc2lvbnM6ICVzXHJcbicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAnLCAnLmpv
aW4ob3B0aW9ucy5leHRlbnNpb25zKSkKLQotICAgICAgICBoYW5kc2hha2UgPSByZXF1ZXN0X2xp
bmUgKyAnJy5qb2luKGZpZWxkcykgKyAnXHJcbicKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVz
dCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdCgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQs
IGhhbmRzaGFrZSkKLSAgICAgICAgcGF5bG9hZCA9IF9lbmNvZGVfY2hhbm5lbF9pZChfQ09OVFJP
TF9DSEFOTkVMX0lEKSArIGFkZF9jaGFubmVsX3JlcXVlc3QKLSAgICAgICAgc2VsZi5fc3RyZWFt
LnNlbmRfYmluYXJ5KHBheWxvYWQpCi0KLSAgICAgICAgIyBXYWl0IEFkZENoYW5uZWxSZXNwb25z
ZQotICAgICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ1dhaXRpbmcgQWRkQ2hhbm5lbFJlc3BvbnNl
IGZvciB0aGUgcmVxdWVzdC4uLicpCi0gICAgICAgIHJlc3BvbnNlID0gTm9uZQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICBzZWxmLl9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24uYWNxdWlyZSgp
Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGZvciBibG9jayBpbiBz
ZWxmLl9jb250cm9sX2Jsb2NrczoKLSAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2sub3Bjb2Rl
ICE9IF9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFU1BPTlNFOgotICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaWYgYmxvY2suY2hhbm5lbF9pZCA9
PSBjaGFubmVsX2lkOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2UgPSBibG9jawot
ICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fY29udHJvbF9ibG9ja3MucmVtb3ZlKHJlc3Bv
bnNlKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBpZiBy
ZXNwb25zZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICBzZWxm
Ll9jb250cm9sX2Jsb2Nrc19jb25kaXRpb24ud2FpdChzZWxmLl90aW1lb3V0KQotICAgICAgICAg
ICAgICAgIGlmIG5vdCBzZWxmLl9pc19hY3RpdmU6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNl
IEV4Y2VwdGlvbignQWRkQ2hhbm5lbFJlcXVlc3QgdGltZWQgb3V0JykKLSAgICAgICAgZmluYWxs
eToKLSAgICAgICAgICAgIHNlbGYuX2NvbnRyb2xfYmxvY2tzX2NvbmRpdGlvbi5yZWxlYXNlKCkK
LQotICAgICAgICAjIFZhbGlkYXRlIEFkZENoYW5uZWxSZXNwb25zZQotICAgICAgICBpZiByZXNw
b25zZS5yZWplY3RlZDoKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVGhlIHNlcnZlciBy
ZWplY3RlZCBBZGRDaGFubmVsUmVxdWVzdCcpCi0KLSAgICAgICAgZmllbGRzID0gX3BhcnNlX2hh
bmRzaGFrZV9yZXNwb25zZShyZXNwb25zZS5lbmNvZGVkX2hhbmRzaGFrZSkKLQotICAgICAgICAj
IFNob3VsZCB3ZSByZWplY3Qgd2hlbiBVcGdyYWRlLCBDb25uZWN0aW9uLCBvciBTZWMtV2ViU29j
a2V0LUFjY2VwdAotICAgICAgICAjIGhlYWRlcnMgZXhpc3Q/Ci0KLSAgICAgICAgc2VsZi5fbG9n
aWNhbF9jaGFubmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgIHNlbGYuX2xvZ2ljYWxf
Y2hhbm5lbHNbY2hhbm5lbF9pZF0gPSBfTG9naWNhbENoYW5uZWxEYXRhKCkKLSAgICAgICAgc2Vs
Zi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lkXS5zZW5kX3F1b3RhID0gc2VuZF9xdW90YQot
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5yZWxlYXNlKCkKLQotICAg
ICAgICBzZWxmLl9sb2dnZXIuZGVidWcoJ0xvZ2ljYWwgY2hhbm5lbCAlZCBlc3RhYmxpc2hlZCcg
JSBjaGFubmVsX2lkKQotCi0gICAgZGVmIF9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVk
KHNlbGYsIGNoYW5uZWxfaWQpOgotICAgICAgICBpZiBub3Qgc2VsZi5faXNfYWN0aXZlOgotICAg
ICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdNdXggY2xpZW50IGlzIG5vdCBhY3RpdmUnKQotCi0g
ICAgICAgIGlmIG5vdCBjaGFubmVsX2lkIGluIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHM6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0xvZ2ljYWwgY2hhbm5lbCAlZCBpcyBub3QgZXN0YWJs
aXNoZWQuJykKLQotICAgIGRlZiBkcm9wX2NoYW5uZWwoc2VsZiwgY2hhbm5lbF9pZCk6Ci0gICAg
ICAgICMgVE9ETyhiYXNoaSk6IEltcGxlbWVudAotICAgICAgICBwYXNzCi0KLSAgICBkZWYgc2Vu
ZF9mbG93X2NvbnRyb2woc2VsZiwgY2hhbm5lbF9pZCwgcmVwbGVuaXNoZWRfcXVvdGEpOgotICAg
ICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5uZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0g
ICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sKGNoYW5uZWxfaWQsIHJl
cGxlbmlzaGVkX3F1b3RhKQotICAgICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lkKF9D
T05UUk9MX0NIQU5ORUxfSUQpICsgZmxvd19jb250cm9sCi0gICAgICAgICMgUmVwbGVuaXNoIHJl
Y2VpdmUgcXVvdGEKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNhbF9jaGFu
bmVsc19jb25kaXRpb24uYWNxdWlyZSgpCi0gICAgICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5u
ZWxzW2NoYW5uZWxfaWRdLnJlY2VpdmVfcXVvdGEgKz0gKAotICAgICAgICAgICAgICAgIHJlcGxl
bmlzaGVkX3F1b3RhKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fbG9naWNh
bF9jaGFubmVsc19jb25kaXRpb24ucmVsZWFzZSgpCi0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5k
X2JpbmFyeShwYXlsb2FkKQotCi0gICAgZGVmIHNlbmRfbWVzc2FnZShzZWxmLCBjaGFubmVsX2lk
LCBtZXNzYWdlLCBlbmQ9VHJ1ZSwgYmluYXJ5PUZhbHNlKToKLSAgICAgICAgc2VsZi5fY2hlY2tf
bG9naWNhbF9jaGFubmVsX2lzX29wZW5lZChjaGFubmVsX2lkKQotCi0gICAgICAgIGlmIGJpbmFy
eToKLSAgICAgICAgICAgIGZpcnN0X2J5dGUgPSAoZW5kIDw8IDcpIHwgY2xpZW50X2Zvcl90ZXN0
aW5nLk9QQ09ERV9CSU5BUlkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpcnN0X2J5dGUg
PSAoZW5kIDw8IDcpIHwgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhUCi0gICAgICAgICAg
ICBtZXNzYWdlID0gbWVzc2FnZS5lbmNvZGUoJ3V0Zi04JykKLQotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzX2NvbmRpdGlvbi5hY3F1aXJlKCkKLSAgICAg
ICAgICAgIGlmIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSA8
IGxlbihtZXNzYWdlKToKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1NlbmQgcXVv
dGEgdmlvbGF0aW9uOiAlZCA8ICVkJyAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
X2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGxlbihtZXNzYWdlKSkpCi0KLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hh
bm5lbHNbY2hhbm5lbF9pZF0uc2VuZF9xdW90YSAtPSBsZW4obWVzc2FnZSkKLSAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNfY29uZGl0aW9uLnJlbGVh
c2UoKQotICAgICAgICBwYXlsb2FkID0gX2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsg
Y2hyKGZpcnN0X2J5dGUpICsgbWVzc2FnZQotICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5h
cnkocGF5bG9hZCkKLQotICAgIGRlZiBhc3NlcnRfcmVjZWl2ZShzZWxmLCBjaGFubmVsX2lkLCBw
YXlsb2FkLCBiaW5hcnk9RmFsc2UpOgotICAgICAgICBzZWxmLl9jaGVja19sb2dpY2FsX2NoYW5u
ZWxfaXNfb3BlbmVkKGNoYW5uZWxfaWQpCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW5u
ZXJfZnJhbWUgPSBzZWxmLl9sb2dpY2FsX2NoYW5uZWxzW2NoYW5uZWxfaWRdLnF1ZXVlLmdldCgK
LSAgICAgICAgICAgICAgICB0aW1lb3V0PXNlbGYuX3RpbWVvdXQpCi0gICAgICAgIGV4Y2VwdCBR
dWV1ZS5FbXB0eSwgZToKLSAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignQ2Fubm90IHJlY2Vp
dmUgbWVzc2FnZSBmcm9tIGNoYW5uZWwgaWQgJWQnICUKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjaGFubmVsX2lkKQotCi0gICAgICAgIGlmIGJpbmFyeToKLSAgICAgICAgICAgIG9wY29k
ZSA9IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQklOQVJZCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBvcGNvZGUgPSBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQKLQotICAgICAg
ICBpZiBpbm5lcl9mcmFtZS5vcGNvZGUgIT0gb3Bjb2RlOgotICAgICAgICAgICAgcmFpc2UgRXhj
ZXB0aW9uKCdVbmV4cGVjdGVkIG9wY29kZSByZWNlaXZlZCAoJXIgIT0gJXIpJyAlCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgKGV4cGVjdGVkX29wY29kZSwgaW5uZXJfZnJhbWUub3Bjb2Rl
KSkKLQotICAgICAgICBpZiBpbm5lcl9mcmFtZS5wYXlsb2FkICE9IHBheWxvYWQ6Ci0gICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcGF5bG9hZCByZWNlaXZlZCcpCi0KLSAg
ICBkZWYgc2VuZF9jbG9zZShzZWxmLCBjaGFubmVsX2lkLCBjb2RlPU5vbmUsIHJlYXNvbj0nJyk6
Ci0gICAgICAgIHNlbGYuX2NoZWNrX2xvZ2ljYWxfY2hhbm5lbF9pc19vcGVuZWQoY2hhbm5lbF9p
ZCkKLQotICAgICAgICBpZiBjb2RlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgYm9keSA9IHN0
cnVjdC5wYWNrKCchSCcsIGNvZGUpICsgcmVhc29uLmVuY29kZSgndXRmLTgnKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgYm9keSA9ICcnCi0KLSAgICAgICAgZmlyc3RfYnl0ZSA9ICgxIDw8
IDcpIHwgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9DTE9TRQotICAgICAgICBwYXlsb2FkID0g
X2VuY29kZV9jaGFubmVsX2lkKGNoYW5uZWxfaWQpICsgY2hyKGZpcnN0X2J5dGUpICsgYm9keQot
ICAgICAgICBzZWxmLl9zdHJlYW0uc2VuZF9iaW5hcnkocGF5bG9hZCkKLQotICAgIGRlZiBhc3Nl
cnRfcmVjZWl2ZV9jbG9zZShzZWxmLCBjaGFubmVsX2lkKToKLSAgICAgICAgc2VsZi5fY2hlY2tf
bG9naWNhbF9jaGFubmVsX2lzX29wZW5lZChjaGFubmVsX2lkKQotCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGlubmVyX2ZyYW1lID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lk
XS5xdWV1ZS5nZXQoCi0gICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLl90aW1lb3V0KQotICAg
ICAgICBleGNlcHQgUXVldWUuRW1wdHksIGU6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24o
J0Nhbm5vdCByZWNlaXZlIG1lc3NhZ2UgZnJvbSBjaGFubmVsIGlkICVkJyAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY2hhbm5lbF9pZCkKLSAgICAgICAgaWYgaW5uZXJfZnJhbWUub3Bj
b2RlICE9IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfQ0xPU0U6Ci0gICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oJ0RpZG5cJ3QgcmVjZWl2ZSBjbG9zZSBmcmFtZScpCi0KLSAgICBkZWYgc2Vu
ZF9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlKHNlbGYsIGNvZGU9Tm9uZSwgcmVhc29uPScnKToK
LSAgICAgICAgc2VsZi5fcGh5c2ljYWxfY29ubmVjdGlvbl9jbG9zZV9ldmVudCA9IHRocmVhZGlu
Zy5FdmVudCgpCi0gICAgICAgIHNlbGYuX3N0cmVhbS5zZW5kX2Nsb3NlKGNvZGUsIHJlYXNvbikK
LQotICAgICMgVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgb25seSBhZnRlciBjYWxsaW5nCi0gICAg
IyBzZW5kX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2UoKS4KLSAgICBkZWYgYXNzZXJ0X3BoeXNp
Y2FsX2Nvbm5lY3Rpb25fcmVjZWl2ZV9jbG9zZSgKLSAgICAgICAgc2VsZiwgY29kZT1jbGllbnRf
Zm9yX3Rlc3RpbmcuU1RBVFVTX05PUk1BTF9DTE9TVVJFLCByZWFzb249JycpOgotICAgICAgICBz
ZWxmLl9waHlzaWNhbF9jb25uZWN0aW9uX2Nsb3NlX2V2ZW50LndhaXQodGltZW91dD1zZWxmLl90
aW1lb3V0KQotICAgICAgICBpZiAobm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2Vf
ZXZlbnQuaXNTZXQoKSBvcgotICAgICAgICAgICAgbm90IHNlbGYuX3BoeXNpY2FsX2Nvbm5lY3Rp
b25fY2xvc2VfbWVzc2FnZSk6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0RpZG5cJ3Qg
cmVjZWl2ZSBjbG9zaW5nIGhhbmRzaGFrZScpCi0KLSAgICBkZWYgY2xvc2Vfc29ja2V0KHNlbGYp
OgotICAgICAgICBzZWxmLl9pc19hY3RpdmUgPSBGYWxzZQotICAgICAgICBzZWxmLl9zb2NrZXQu
Y2xvc2UoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9ydW5fYWxsLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
dGVzdC9ydW5fYWxsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGE1ZDg3ZDgz
ODIyYjA3ODNiZTEzZTMzZGRhM2FiNjFhNWFmZTQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvcnVuX2FsbC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDg5ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmln
aHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotIiIiUnVuIGFsbCB0ZXN0cyBpbiB0aGUgc2FtZSBkaXJlY3RvcnkuCi0KLVRo
aXMgc3VpdGUgaXMgZXhwZWN0ZWQgdG8gYmUgcnVuIHVuZGVyIHB5d2Vic29ja2V0J3Mgc3JjIGRp
cmVjdG9yeSwgaS5lLiB0aGUKLWRpcmVjdG9yeSBjb250YWluaW5nIG1vZF9weXdlYnNvY2tldCwg
dGVzdCwgZXRjLgotCi1UbyBjaGFuZ2UgbG9nZ2luIGxldmVsLCBwbGVhc2Ugc3BlY2lmeSAtLWxv
Zy1sZXZlbCBvcHRpb24uCi0gICAgcHl0aG9uIHRlc3QvcnVuX3Rlc3QucHkgLS1sb2ctbGV2ZWwg
ZGVidWcKLQotVG8gcGFzcyBhbnkgb3B0aW9uIHRvIHVuaXR0ZXN0IG1vZHVsZSwgcGxlYXNlIHNw
ZWNpZnkgb3B0aW9ucyBhZnRlciAnLS0nLiBGb3IKLWV4YW1wbGUsIHJ1biB0aGlzIGZvciBtYWtp
bmcgdGhlIHRlc3QgcnVubmVyIHZlcmJvc2UuCi0gICAgcHl0aG9uIHRlc3QvcnVuX3Rlc3QucHkg
LS1sb2ctbGV2ZWwgZGVidWcgLS0gLXYKLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQg
b3B0cGFyc2UKLWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRl
c3QKLQotCi1fVEVTVF9NT0RVTEVfUEFUVEVSTiA9IHJlLmNvbXBpbGUocideKHRlc3RfLispXC5w
eSQnKQotCi0KLWRlZiBfbGlzdF90ZXN0X21vZHVsZXMoZGlyZWN0b3J5KToKLSAgICBtb2R1bGVf
bmFtZXMgPSBbXQotICAgIGZvciBmaWxlbmFtZSBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6Ci0g
ICAgICAgIG1hdGNoID0gX1RFU1RfTU9EVUxFX1BBVFRFUk4uc2VhcmNoKGZpbGVuYW1lKQotICAg
ICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgIG1vZHVsZV9uYW1lcy5hcHBlbmQobWF0Y2guZ3Jv
dXAoMSkpCi0gICAgcmV0dXJuIG1vZHVsZV9uYW1lcwotCi0KLWRlZiBfc3VpdGUoKToKLSAgICBs
b2FkZXIgPSB1bml0dGVzdC5UZXN0TG9hZGVyKCkKLSAgICByZXR1cm4gbG9hZGVyLmxvYWRUZXN0
c0Zyb21OYW1lcygKLSAgICAgICAgICAgIF9saXN0X3Rlc3RfbW9kdWxlcyhvcy5wYXRoLmpvaW4o
b3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICcuJykpKQotCi0KLWlmIF9fbmFtZV9fID09ICdf
X21haW5fXyc6Ci0gICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKLSAgICBwYXJz
ZXIuYWRkX29wdGlvbignLS1sb2ctbGV2ZWwnLCAnLS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9pY2Un
LAotICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dhcm5p
bmcnLAotICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dh
cm5pbmcnLCAnd2FybicsICdlcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J2NyaXRpY2FsJ10pCi0gICAgb3B0aW9ucywgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKLSAg
ICBsb2dnaW5nLmJhc2ljQ29uZmlnKAotICAgICAgICAgICAgbGV2ZWw9bG9nZ2luZy5nZXRMZXZl
bE5hbWUob3B0aW9ucy5sb2dfbGV2ZWwudXBwZXIoKSksCi0gICAgICAgICAgICBmb3JtYXQ9JyUo
bGV2ZWxuYW1lKXMgJShhc2N0aW1lKXMgJwotICAgICAgICAgICAgICAgICAgICclKGZpbGVuYW1l
KXM6JShsaW5lbm8pZF0gJwotICAgICAgICAgICAgICAgICAgICclKG1lc3NhZ2UpcycsCi0gICAg
ICAgICAgICBkYXRlZm10PSclSDolTTolUycpCi0gICAgdW5pdHRlc3QubWFpbihkZWZhdWx0VGVz
dD0nX3N1aXRlJywgYXJndj1bc3lzLmFyZ3ZbMF1dICsgYXJncykKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qvc2V0X3N5c19wYXRoLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9zZXRfc3lzX3BhdGgucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUz
YzZkYjllYTRkMzgzYTM3YzI3YTA2MGEwZWYxYzU2M2JiYjFlMTQuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC9zZXRfc3lzX3BhdGgu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29n
bGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29k
ZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5
cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBu
YW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0j
IHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24u
Ci0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0i
IiJDb25maWd1cmF0aW9uIGZvciB0ZXN0aW5nLgotCi1UZXN0IGZpbGVzIHNob3VsZCBpbXBvcnQg
dGhpcyBtb2R1bGUgYmVmb3JlIG1vZF9weXdlYnNvY2tldC4KLSIiIgotCi0KLWltcG9ydCBvcwot
aW1wb3J0IHN5cwotCi0KLSMgQWRkIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHRvIHN5cy5wYXRoIHRv
IGVuYWJsZSBpbXBvcnRpbmcgbW9kX3B5d2Vic29ja2V0Lgotc3lzLnBhdGguaW5zZXJ0KDAsIG9z
LnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4uJykpCi0KLQotIyB2aTpz
dHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDljYTNkNGYzYWUxZGJmNWY5N2IyN2Q4NGVjNmU2NDIyZmQwZWNhYTQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0
X2Rpc3BhdGNoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjg4ICswLDAgQEAKLSMhL3Vzci9iaW4v
ZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwot
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0j
IGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0j
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
LSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
LSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIGRpc3BhdGNo
IG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgb3MKLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0
X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1v
ZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGRpc3BhdGNoCi1mcm9tIG1vZF9w
eXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi1mcm9tIHRlc3QgaW1wb3J0IG1vY2sKLQotCi1f
VEVTVF9IQU5ETEVSU19ESVIgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgIG9zLnBhdGguc3BsaXQo
X19maWxlX18pWzBdLCAndGVzdGRhdGEnLCAnaGFuZGxlcnMnKQotCi1fVEVTVF9IQU5ETEVSU19T
VUJfRElSID0gb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicpCi0KLQotY2xh
c3MgRGlzcGF0Y2hlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3Qg
Zm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X25vcm1hbGl6ZV9wYXRoKHNl
bGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLnBhdGguYWJzcGF0aCgnL2EvYicpLnJl
cGxhY2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9y
bWFsaXplX3BhdGgoJy9hL2InKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFi
c3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCdcXGFcXGInKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNlKCdcXCcsICcvJyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9wYXRoKCcvYS9jLy4uL2In
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJ2FiYycpLnJlcGxh
Y2UoJ1xcJywgJy8nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5fbm9ybWFs
aXplX3BhdGgoJ2FiYycpKQotCi0gICAgZGVmIHRlc3RfY29udmVydGVyKHNlbGYpOgotICAgICAg
ICBjb252ZXJ0ZXIgPSBkaXNwYXRjaC5fY3JlYXRlX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVy
KCcvYS9iJykKLSAgICAgICAgIyBQeXRob24gYnVpbHQgYnkgTVNDIGluc2VydHMgYSBkcml2ZSBu
YW1lIGxpa2UgJ0M6XCcgdmlhIHJlYWxwYXRoKCkuCi0gICAgICAgICMgQ29udmVydGVyIEdlbmVy
YXRvciBleHBhbmRzIHByb3ZpZGVkIHBhdGggdXNpbmcgcmVhbHBhdGgoKSBhbmQgdXNlcwotICAg
ICAgICAjIHRoZSBwYXRoIGluY2x1ZGluZyBhIGRyaXZlIG5hbWUgdG8gdmVyaWZ5IHRoZSBwcmVm
aXguCi0gICAgICAgIG9zX3Jvb3QgPSBvcy5wYXRoLnJlYWxwYXRoKCcvJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nfcm9vdCArICdhL2IvaF93c2gucHknKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2MvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2Ev
Yi9jL2hfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVy
KG9zX3Jvb3QgKyAnYS9iL2gucHknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBj
b252ZXJ0ZXIoJ2EvYi9oX3dzaC5weScpKQotCi0gICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNo
Ll9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJ2EvYicpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgKLSAg
ICAgICAgICAgICdhL2IvaF93c2gucHknKSkpCi0KLSAgICAgICAgY29udmVydGVyID0gZGlzcGF0
Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKG9zX3Jvb3QgKyAnYS9iL2hfd3NoLnB5
JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKGRpc3BhdGNoLl9u
b3JtYWxpemVfcGF0aCgKLSAgICAgICAgICAgICcvYS9iLy4uL2IvaF93c2gucHknKSkpCi0KLSAg
ICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX2NyZWF0ZV9wYXRoX3RvX3Jlc291cmNlX2NvbnZl
cnRlcigKLSAgICAgICAgICAgICcvYS8uLi9hL2IvLi4vYi8nKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcvaCcsIGNvbnZlcnRlcihvc19yb290ICsgJ2EvYi9oX3dzaC5weScpKQotCi0gICAg
ICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9jcmVhdGVfcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0
ZXIocidcYVxiJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIob3Nf
cm9vdCArIHInYVxiXGhfd3NoLnB5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywg
Y29udmVydGVyKG9zX3Jvb3QgKyByJ2EvYi9oX3dzaC5weScpKQotCi0gICAgZGVmIHRlc3RfZW51
bWVyYXRlX2hhbmRsZXJfZmlsZV9wYXRocyhzZWxmKToKLSAgICAgICAgcGF0aHMgPSBsaXN0KAot
ICAgICAgICAgICAgZGlzcGF0Y2guX2VudW1lcmF0ZV9oYW5kbGVyX2ZpbGVfcGF0aHMoX1RFU1Rf
SEFORExFUlNfRElSKSkKLSAgICAgICAgcGF0aHMuc29ydCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoOCwgbGVuKHBhdGhzKSkKLSAgICAgICAgZXhwZWN0ZWRfcGF0aHMgPSBbCi0gICAgICAg
ICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ2Fib3J0X2J5X3VzZXJf
d3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJ
UiwgJ2JsYW5rX3dzaC5weScpLAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9I
QU5ETEVSU19ESVIsICdvcmlnaW5fY2hlY2tfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3Mu
cGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdleGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5JyksCi0gICAgICAgICAgICAg
ICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICdub25fY2FsbGFibGVf
d3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJ
UiwgJ3N1YicsICdwbGFpbl93c2gucHknKSwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4o
X1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
J3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgb3MucGF0aC5q
b2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICd3cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5JyksCi0gICAgICAgICAgICAgICAgXQotICAg
ICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfcGF0aHMsIHBhdGhzKToK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAgIGRl
ZiB0ZXN0X3NvdXJjZV9oYW5kbGVyX2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKAotICAgICAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGRpc3BhdGNoLl9z
b3VyY2VfaGFuZGxlcl9maWxlLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAg
ICAgICAgICBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZGlzcGF0Y2guX3NvdXJjZV9oYW5k
bGVyX2ZpbGUsICdkZWYnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcygKLSAgICAgICAgICAg
IGRpc3BhdGNoLkRpc3BhdGNoRXhjZXB0aW9uLCBkaXNwYXRjaC5fc291cmNlX2hhbmRsZXJfZmls
ZSwgJzEvMCcpCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwYXRjaC5fc291cmNlX2hhbmRs
ZXJfZmlsZSgKLSAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOnBhc3NcbicKLSAgICAgICAgICAgICAgICAnZGVmIHdlYl9zb2NrZXRfdHJh
bnNmZXJfZGF0YShyZXF1ZXN0KTpwYXNzXG4nKSkKLQotICAgIGRlZiB0ZXN0X3NvdXJjZV93YXJu
aW5ncyhzZWxmKToKLSAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RF
U1RfSEFORExFUlNfRElSLCBOb25lKQotICAgICAgICB3YXJuaW5ncyA9IGRpc3BhdGNoZXIuc291
cmNlX3dhcm5pbmdzKCkKLSAgICAgICAgd2FybmluZ3Muc29ydCgpCi0gICAgICAgIGV4cGVjdGVk
X3dhcm5pbmdzID0gWwotICAgICAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBhdGgu
am9pbigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfRElSLCAnYmxhbmtfd3No
LnB5JykpICsKLSAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAgKG9zLnBhdGgucmVhbHBhdGgo
b3MucGF0aC5qb2luKAotICAgICAgICAgICAgICAgICAgICBfVEVTVF9IQU5ETEVSU19ESVIsICdz
dWInLCAnbm9uX2NhbGxhYmxlX3dzaC5weScpKSArCi0gICAgICAgICAgICAgICAgICc6IHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlzIG5vdCBjYWxsYWJsZS4nKSwKLSAgICAgICAgICAg
ICAgICAob3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oCi0gICAgICAgICAgICAgICAgICAg
IF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsICd3cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weScp
KSArCi0gICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGlz
IG5vdCBkZWZpbmVkLicpLAotICAgICAgICAgICAgICAgIChvcy5wYXRoLnJlYWxwYXRoKG9zLnBh
dGguam9pbigKLSAgICAgICAgICAgICAgICAgICAgX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywg
J3dyb25nX3RyYW5zZmVyX3NpZ193c2gucHknKSkgKwotICAgICAgICAgICAgICAgICAnOiB3ZWJf
c29ja2V0X3RyYW5zZmVyX2RhdGEgaXMgbm90IGRlZmluZWQuJyksCi0gICAgICAgICAgICAgICAg
XQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyg0LCBsZW4od2FybmluZ3MpKQotICAgICAgICBm
b3IgZXhwZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfd2FybmluZ3MsIHdhcm5pbmdzKToK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGV4cGVjdGVkLCBhY3R1YWwpCi0KLSAgICBk
ZWYgdGVzdF9kb19leHRyYV9oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBk
aXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVx
dWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQotICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0g
Jy9vcmlnaW5fY2hlY2snCi0gICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2luID0gJ2h0dHA6Ly9leGFt
cGxlLmNvbScKLSAgICAgICAgZGlzcGF0Y2hlci5kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkg
ICMgTXVzdCBub3QgcmFpc2UgZXhjZXB0aW9uLgotCi0gICAgICAgIHJlcXVlc3Qud3Nfb3JpZ2lu
ID0gJ2h0dHA6Ly9iYWQuZXhhbXBsZS5jb20nCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGRp
c3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpCi0gICAgICAgICAgICBzZWxmLmZh
aWwoJ0NvdWxkIG5vdCBjYXRjaCBIYW5kc2hha2VFeGNlcHRpb24gd2l0aCA0MDMgc3RhdHVzJykK
LSAgICAgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24sIGU6Ci0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyg0MDMsIGUuc3RhdHVzKQotICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmV4cGVjdGVkIGV4Y2VwdGlvbjog
JXInICUgZSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0X2V4dHJhX2hhbmRzaGFrZShzZWxmKToKLSAg
ICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElS
LCBOb25lKQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdCgpCi0gICAgICAgIHJl
cXVlc3Qud3NfcmVzb3VyY2UgPSAnL2Fib3J0X2J5X3VzZXInCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKGhhbmRzaGFrZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICBkaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFrZSwgcmVxdWVzdCkKLQotICAg
IGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGEoc2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNw
YXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLQotICAgICAgICByZXF1
ZXN0ID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAw
JykpCi0gICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL29yaWdpbl9jaGVjaycKLSAgICAg
ICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMScKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zl
cl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ29yaWdpbl9jaGVja193
c2gucHkgaXMgY2FsbGVkIGZvciAvb3JpZ2luX2NoZWNrLCBwMScKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVx
dWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAgICAgIHJlcXVl
c3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbicKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2Nv
bCA9IE5vbmUKLSAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3Vi
L3BsYWluLCBOb25lJwotICAgICAgICAgICAgICAgICAgICAgICAgICdceGZmXHgwMCcsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQot
Ci0gICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2Nr
Q29ubignXHhmZlx4MDAnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3Bs
YWluPycKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKLSAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1
Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluPywgTm9uZScKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAnXHhmZlx4MDAnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0ID0gbW9j
ay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJ1x4ZmZceDAwJykpCi0gICAg
ICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbj9xPXYnCi0gICAgICAgIHJlcXVl
c3Qud3NfcHJvdG9jb2wgPSBOb25lCi0gICAgICAgIGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShy
ZXF1ZXN0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3NoLnB5IGlzIGNh
bGxlZCBmb3IgL3N1Yi9wbGFpbj9xPXYsIE5vbmUnCi0gICAgICAgICAgICAgICAgICAgICAgICAg
J1x4ZmZceDAwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
d3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF90cmFuc2Zlcl9kYXRhX25vX2hhbmRsZXIo
c2VsZik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hB
TkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgZm9yIHJlc291cmNlIGluIFsnL2JsYW5rJywgJy9z
dWIvbm9uX2NhbGxhYmxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAnL3N1Yi9ub193c2hf
YXRfdGhlX2VuZCcsICcvZG9lcy9ub3QvZXhpc3QnXToKLSAgICAgICAgICAgIHJlcXVlc3QgPSBt
b2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCi0gICAgICAgICAg
ICByZXF1ZXN0LndzX3Jlc291cmNlID0gcmVzb3VyY2UKLSAgICAgICAgICAgIHJlcXVlc3Qud3Nf
cHJvdG9jb2wgPSAncDInCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGlzcGF0
Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCkK
LSAgICAgICAgICAgIGV4Y2VwdCBkaXNwYXRjaC5EaXNwYXRjaEV4Y2VwdGlvbiwgZToKLSAgICAg
ICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3Moc3RyKGUpLmZpbmQoJ05vIGhhbmRsZXInKSAhPSAt
MSkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgc2VsZi5m
YWlsKCkKLQotICAgIGRlZiB0ZXN0X3RyYW5zZmVyX2RhdGFfaGFuZGxlcl9leGNlcHRpb24oc2Vs
Zik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRM
RVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVj
dGlvbj1tb2NrLk1vY2tDb25uKCcnKSkKLSAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcv
c3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicKLSAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9
ICdwMycKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRh
KHJlcXVlc3QpCi0gICAgICAgICAgICBzZWxmLmZhaWwoKQotICAgICAgICBleGNlcHQgRXhjZXB0
aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHN0cihlKS5maW5kKCdJbnRlbnRp
b25hbCcpICE9IC0xLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4
Y2VwdGlvbjogJXMnICUgZSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0X3RyYW5zZmVyX2RhdGEoc2Vs
Zik6Ci0gICAgICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRM
RVJTX0RJUiwgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoKQotICAg
ICAgICByZXF1ZXN0LndzX3Jlc291cmNlID0gJy9hYm9ydF9ieV91c2VyJwotICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhoYW5kc2hha2UuQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhLCByZXF1ZXN0KQotCi0g
ICAgZGVmIHRlc3Rfc2Nhbl9kaXIoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNw
YXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCg0LCBsZW4oZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxVbmxl
c3MoJy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBz
ZWxmLmZhaWxVbmxlc3MoCi0gICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXIn
IGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9z
dWIvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotCi0gICAgZGVmIHRlc3Rfc2Nh
bl9zdWJfZGlyKHNlbGYpOgotICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVT
VF9IQU5ETEVSU19ESVIsIF9URVNUX0hBTkRMRVJTX1NVQl9ESVIpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKLSAgICAgICAgc2VsZi5m
YWlsSWYoJy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAg
ICBzZWxmLmZhaWxVbmxlc3MoCi0gICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNm
ZXInIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3Mo
Jy9zdWIvcGxhaW4nIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotCi0gICAgZGVmIHRlc3Rf
c2Nhbl9zdWJfZGlyX2FzX3Jvb3Qoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNw
YXRjaGVyKF9URVNUX0hBTkRMRVJTX1NVQl9ESVIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9URVNUX0hBTkRMRVJTX1NVQl9ESVIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMiwgbGVuKGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKSkKLSAgICAgICAgc2VsZi5mYWlsSWYo
Jy9vcmlnaW5fY2hlY2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxm
LmZhaWxJZignL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRsZXJfc3Vp
dGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxJZignL3N1Yi9wbGFpbicgaW4gZGlzcC5faGFuZGxl
cl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVzcygnL2V4Y2VwdGlvbl9pbl90cmFu
c2ZlcicgaW4gZGlzcC5faGFuZGxlcl9zdWl0ZV9tYXApCi0gICAgICAgIHNlbGYuZmFpbFVubGVz
cygnL3BsYWluJyBpbiBkaXNwLl9oYW5kbGVyX3N1aXRlX21hcCkKLQotICAgIGRlZiB0ZXN0X3Nj
YW5fZGlyX211c3RfdW5kZXJfcm9vdChzZWxmKToKLSAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hl
cignYS9iJywgJ2EvYi9jJykgICMgT0sKLSAgICAgICAgZGlzcGF0Y2guRGlzcGF0Y2hlcignYS9i
Ly8vJywgJ2EvYicpICAjIE9LCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRp
c3BhdGNoRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaC5EaXNw
YXRjaGVyLCAnYS9iL2MnLCAnYS9iJykKLQotICAgIGRlZiB0ZXN0X3Jlc291cmNlX3BhdGhfYWxp
YXMoc2VsZik6Ci0gICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRM
RVJTX0RJUiwgTm9uZSkKLSAgICAgICAgZGlzcC5hZGRfcmVzb3VyY2VfcGF0aF9hbGlhcygnLycs
ICcvb3JpZ2luX2NoZWNrJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg1LCBsZW4oZGlzcC5f
aGFuZGxlcl9zdWl0ZV9tYXApKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9vcmlnaW5fY2hl
Y2snIGluIGRpc3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3Mo
Ci0gICAgICAgICAgICAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInIGluIGRpc3AuX2hhbmRs
ZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy9zdWIvcGxhaW4nIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MoJy8nIGluIGRp
c3AuX2hhbmRsZXJfc3VpdGVfbWFwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRj
aC5EaXNwYXRjaEV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcC5hZGRf
cmVzb3VyY2VfcGF0aF9hbGlhcywgJy9hbGlhcycsICcvbm90LWV4aXN0JykKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC90ZXN0X2VuZHRvZW5kLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA1ZTVjZjYxNTczOTE3ZDg3ZDEzNjViMTZhNThjMmM0MTg4YTkxMmVjLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9lbmR0
b2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDc1MyArMCwwIEBACi0jIS91c3IvYmluL2VudiBw
eXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0
cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3Ig
cHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMg
SVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkVuZC10by1lbmQgdGVzdHMgZm9yIHB5
d2Vic29ja2V0LiBUZXN0cyBzdGFuZGFsb25lLnB5IGJ5IGRlZmF1bHQuIFlvdQotY2FuIGFsc28g
dGVzdCBtb2RfcHl3ZWJzb2NrZXQgaG9zdGVkIG9uIGFuIEFwYWNoZSBzZXJ2ZXIgYnkgc2V0dGlu
ZwotX3VzZV9leHRlcm5hbF9zZXJ2ZXIgdG8gVHJ1ZSBhbmQgbW9kaWZ5aW5nIF9leHRlcm5hbF9z
ZXJ2ZXJfcG9ydCB0byBwb2ludCB0bwotdGhlIHBvcnQgb24gd2hpY2ggdGhlIEFwYWNoZSBzZXJ2
ZXIgaXMgcnVubmluZy4KLSIiIgotCi0KLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgb3MKLWltcG9y
dCBzaWduYWwKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1p
bXBvcnQgdGltZQotaW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBk
YXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIHRl
c3QgaW1wb3J0IGNsaWVudF9mb3JfdGVzdGluZwotZnJvbSB0ZXN0IGltcG9ydCBtdXhfY2xpZW50
X2Zvcl90ZXN0aW5nCi0KLQotIyBTcGVjaWFsIG1lc3NhZ2UgdGhhdCB0ZWxscyB0aGUgZWNobyBz
ZXJ2ZXIgdG8gc3RhcnQgY2xvc2luZyBoYW5kc2hha2UKLV9HT09EQllFX01FU1NBR0UgPSAnR29v
ZGJ5ZScKLQotX1NFUlZFUl9XQVJNVVBfSU5fU0VDID0gMC4yCi0KLSMgSWYgeW91IHdhbnQgdG8g
dXNlIGV4dGVybmFsIHNlcnZlciB0byBydW4gZW5kIHRvIGVuZCB0ZXN0cywgc2V0IGZvbGxvd2lu
ZwotIyBwYXJhbWV0ZXJzIGNvcnJlY3RseS4KLV91c2VfZXh0ZXJuYWxfc2VydmVyID0gRmFsc2UK
LV9leHRlcm5hbF9zZXJ2ZXJfcG9ydCA9IDAKLQotCi0jIFRlc3QgYm9keSBmdW5jdGlvbnMKLWRl
ZiBfZWNob19jaGVja19wcm9jZWR1cmUoY2xpZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0K
LSAgICBjbGllbnQuc2VuZF9tZXNzYWdlKCd0ZXN0JykKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmUoJ3Rlc3QnKQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ2hlbGxvd29ybGQnKQotICAgIGNs
aWVudC5hc3NlcnRfcmVjZWl2ZSgnaGVsbG93b3JsZCcpCi0KLSAgICBjbGllbnQuc2VuZF9jbG9z
ZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgIGNsaWVudC5hc3Nl
cnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19wcm9jZWR1cmVfd2l0
aF9iaW5hcnkoY2xpZW50KToKLSAgICBjbGllbnQuY29ubmVjdCgpCi0KLSAgICBjbGllbnQuc2Vu
ZF9tZXNzYWdlKCdiaW5hcnknLCBiaW5hcnk9VHJ1ZSkKLSAgICBjbGllbnQuYXNzZXJ0X3JlY2Vp
dmUoJ2JpbmFyeScsIGJpbmFyeT1UcnVlKQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoJ1x4MDBc
eDgwXHhmZVx4ZmZceDAwXHg4MCcsIGJpbmFyeT1UcnVlKQotICAgIGNsaWVudC5hc3NlcnRfcmVj
ZWl2ZSgnXHgwMFx4ODBceGZlXHhmZlx4MDBceDgwJywgYmluYXJ5PVRydWUpCi0KLSAgICBjbGll
bnQuc2VuZF9jbG9zZSgpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAg
IGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfZWNob19jaGVja19w
cm9jZWR1cmVfd2l0aF9nb29kYnllKGNsaWVudCk6Ci0gICAgY2xpZW50LmNvbm5lY3QoKQotCi0g
ICAgY2xpZW50LnNlbmRfbWVzc2FnZSgndGVzdCcpCi0gICAgY2xpZW50LmFzc2VydF9yZWNlaXZl
KCd0ZXN0JykKLQotICAgIGNsaWVudC5zZW5kX21lc3NhZ2UoX0dPT0RCWUVfTUVTU0FHRSkKLSAg
ICBjbGllbnQuYXNzZXJ0X3JlY2VpdmUoX0dPT0RCWUVfTUVTU0FHRSkKLQotICAgIGNsaWVudC5h
c3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoKQotCi0gICAgY2xp
ZW50LmFzc2VydF9jb25uZWN0aW9uX2Nsb3NlZCgpCi0KLQotZGVmIF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNvbihjbGllbnQsIGNvZGUsIHJlYXNvbik6Ci0gICAgY2xp
ZW50LmNvbm5lY3QoKQotCi0gICAgY2xpZW50LnNlbmRfY2xvc2UoY29kZSwgcmVhc29uKQotICAg
IGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZShjb2RlLCByZWFzb24pCi0KLSAgICBjbGllbnQu
YXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkKLQotCi1kZWYgX3VubWFza2VkX2ZyYW1lX2NoZWNr
X3Byb2NlZHVyZShjbGllbnQpOgotICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgIGNsaWVudC5z
ZW5kX21lc3NhZ2UoJ3Rlc3QnLCBtYXNrPUZhbHNlKQotICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2
ZV9jbG9zZShjbGllbnRfZm9yX3Rlc3RpbmcuU1RBVFVTX1BST1RPQ09MX0VSUk9SLCAnJykKLQot
ICAgIGNsaWVudC5hc3NlcnRfY29ubmVjdGlvbl9jbG9zZWQoKQotCi0KLWRlZiBfbXV4X2VjaG9f
Y2hlY2tfcHJvY2VkdXJlKG11eF9jbGllbnQpOgotICAgIG11eF9jbGllbnQuY29ubmVjdCgpCi0g
ICAgbXV4X2NsaWVudC5zZW5kX2Zsb3dfY29udHJvbCgxLCAxMDI0KQotCi0gICAgbG9naWNhbF9j
aGFubmVsX29wdGlvbnMgPSBjbGllbnRfZm9yX3Rlc3RpbmcuQ2xpZW50T3B0aW9ucygpCi0gICAg
bG9naWNhbF9jaGFubmVsX29wdGlvbnMuc2VydmVyX2hvc3QgPSAnbG9jYWxob3N0JwotICAgIGxv
Z2ljYWxfY2hhbm5lbF9vcHRpb25zLnNlcnZlcl9wb3J0ID0gODAKLSAgICBsb2dpY2FsX2NoYW5u
ZWxfb3B0aW9ucy5vcmlnaW4gPSAnaHR0cDovL2xvY2FsaG9zdCcKLSAgICBsb2dpY2FsX2NoYW5u
ZWxfb3B0aW9ucy5yZXNvdXJjZSA9ICcvZWNobycKLSAgICBtdXhfY2xpZW50LmFkZF9jaGFubmVs
KDIsIGxvZ2ljYWxfY2hhbm5lbF9vcHRpb25zKQotICAgIG11eF9jbGllbnQuc2VuZF9mbG93X2Nv
bnRyb2woMiwgMTAyNCkKLQotICAgIG11eF9jbGllbnQuc2VuZF9tZXNzYWdlKDIsICd0ZXN0JykK
LSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNlaXZlKDIsICd0ZXN0JykKLQotICAgIG11eF9jbGll
bnQuYWRkX2NoYW5uZWwoMywgbG9naWNhbF9jaGFubmVsX29wdGlvbnMpCi0gICAgbXV4X2NsaWVu
dC5zZW5kX2Zsb3dfY29udHJvbCgzLCAxMDI0KQotCi0gICAgbXV4X2NsaWVudC5zZW5kX21lc3Nh
Z2UoMiwgJ2hlbGxvJykKLSAgICBtdXhfY2xpZW50LnNlbmRfbWVzc2FnZSgzLCAnd29ybGQnKQot
ICAgIG11eF9jbGllbnQuYXNzZXJ0X3JlY2VpdmUoMiwgJ2hlbGxvJykKLSAgICBtdXhfY2xpZW50
LmFzc2VydF9yZWNlaXZlKDMsICd3b3JsZCcpCi0KLSAgICAjIERvbid0IHNlbmQgY2xvc2UgbWVz
c2FnZSBvbiBjaGFubmVsIGlkIDEgc28gdGhhdCBzZXJ2ZXItaW5pdGlhdGVkCi0gICAgIyBjbG9z
aW5nIGhhbmRzaGFrZSB3b24ndCBvY2N1ci4KLSAgICBtdXhfY2xpZW50LnNlbmRfY2xvc2UoMikK
LSAgICBtdXhfY2xpZW50LnNlbmRfY2xvc2UoMykKLSAgICBtdXhfY2xpZW50LmFzc2VydF9yZWNl
aXZlX2Nsb3NlKDIpCi0gICAgbXV4X2NsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgzKQotCi0g
ICAgbXV4X2NsaWVudC5zZW5kX3BoeXNpY2FsX2Nvbm5lY3Rpb25fY2xvc2UoKQotICAgIG11eF9j
bGllbnQuYXNzZXJ0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fcmVjZWl2ZV9jbG9zZSgpCi0KLQotY2xh
c3MgRW5kVG9FbmRUZXN0QmFzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQmFzZSBjbGFz
cyBmb3IgZW5kLXRvLWVuZCB0ZXN0cyB0aGF0IGxhdW5jaCBweXdlYnNvY2tldCBzdGFuZGFsb25l
Ci0gICAgc2VydmVyIGFzIGEgc2VwYXJhdGUgcHJvY2VzcywgY29ubmVjdCB0byBpdCB1c2luZyB0
aGUgY2xpZW50X2Zvcl90ZXN0aW5nCi0gICAgbW9kdWxlLCBhbmQgY2hlY2sgaWYgdGhlIHNlcnZl
ciBiZWhhdmVzIGNvcnJlY3RseSBieSBleGNoYW5naW5nIG9wZW5pbmcKLSAgICBoYW5kc2hha2Ug
YW5kIGZyYW1lcyBvdmVyIGEgVENQIGNvbm5lY3Rpb24uCi0gICAgIiIiCi0KLSAgICBkZWYgc2V0
VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuc2VydmVyX3N0ZGVyciA9IE5vbmUKLSAgICAgICAgc2Vs
Zi50b3BfZGlyID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAnLi4n
KQotICAgICAgICBvcy5wdXRlbnYoJ1BZVEhPTlBBVEgnLCBvcy5wYXRoLnBhdGhzZXAuam9pbihz
eXMucGF0aCkpCi0gICAgICAgIHNlbGYuc3RhbmRhbG9uZV9jb21tYW5kID0gb3MucGF0aC5qb2lu
KAotICAgICAgICAgICAgc2VsZi50b3BfZGlyLCAnbW9kX3B5d2Vic29ja2V0JywgJ3N0YW5kYWxv
bmUucHknKQotICAgICAgICBzZWxmLmRvY3VtZW50X3Jvb3QgPSBvcy5wYXRoLmpvaW4oc2VsZi50
b3BfZGlyLCAnZXhhbXBsZScpCi0gICAgICAgIHMgPSBzb2NrZXQuc29ja2V0KCkKLSAgICAgICAg
cy5iaW5kKCgnbG9jYWxob3N0JywgMCkpCi0gICAgICAgIChfLCBzZWxmLnRlc3RfcG9ydCkgPSBz
LmdldHNvY2tuYW1lKCkKLSAgICAgICAgcy5jbG9zZSgpCi0KLSAgICAgICAgc2VsZi5fb3B0aW9u
cyA9IGNsaWVudF9mb3JfdGVzdGluZy5DbGllbnRPcHRpb25zKCkKLSAgICAgICAgc2VsZi5fb3B0
aW9ucy5zZXJ2ZXJfaG9zdCA9ICdsb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuX29wdGlvbnMub3Jp
Z2luID0gJ2h0dHA6Ly9sb2NhbGhvc3QnCi0gICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2Ug
PSAnL2VjaG8nCi0KLSAgICAgICAgIyBUT0RPKHRveW9zaGltKTogRWxpbWluYXRlIGxhdW5jaGlu
ZyBhIHN0YW5kYWxvbmUgc2VydmVyIG9uIHVzaW5nCi0gICAgICAgICMgZXh0ZXJuYWwgc2VydmVy
LgotCi0gICAgICAgIGlmIF91c2VfZXh0ZXJuYWxfc2VydmVyOgotICAgICAgICAgICAgc2VsZi5f
b3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IF9leHRlcm5hbF9zZXJ2ZXJfcG9ydAotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCA9IHNlbGYudGVzdF9wb3J0
Ci0KLSAgICAjIFRPRE8odHlvc2hpbm8pOiBVc2UgdGVhckRvd24gdG8ga2lsbCB0aGUgc2VydmVy
LgotCi0gICAgZGVmIF9ydW5fcHl0aG9uX2NvbW1hbmQoc2VsZiwgY29tbWFuZGxpbmUsIHN0ZG91
dD1Ob25lLCBzdGRlcnI9Tm9uZSk6Ci0gICAgICAgIHJldHVybiBzdWJwcm9jZXNzLlBvcGVuKFtz
eXMuZXhlY3V0YWJsZV0gKyBjb21tYW5kbGluZSwgY2xvc2VfZmRzPVRydWUsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdGRvdXQsIHN0ZGVycj1zdGRlcnIpCi0KLSAg
ICBkZWYgX3J1bl9zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIGFyZ3MgPSBbc2VsZi5zdGFuZGFsb25l
X2NvbW1hbmQsCi0gICAgICAgICAgICAgICAgJy1IJywgJ2xvY2FsaG9zdCcsCi0gICAgICAgICAg
ICAgICAgJy1WJywgJ2xvY2FsaG9zdCcsCi0gICAgICAgICAgICAgICAgJy1wJywgc3RyKHNlbGYu
dGVzdF9wb3J0KSwKLSAgICAgICAgICAgICAgICAnLVAnLCBzdHIoc2VsZi50ZXN0X3BvcnQpLAot
ICAgICAgICAgICAgICAgICctZCcsIHNlbGYuZG9jdW1lbnRfcm9vdF0KLQotICAgICAgICAjIElu
aGVyaXQgdGhlIGxldmVsIHNldCB0byB0aGUgcm9vdCBsb2dnZXIgYnkgdGVzdCBydW5uZXIuCi0g
ICAgICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgICAgICBsb2dfbGV2
ZWwgPSByb290X2xvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpCi0gICAgICAgIGlmIGxvZ19sZXZl
bCAhPSBsb2dnaW5nLk5PVFNFVDoKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCctLWxvZy1sZXZl
bCcpCi0gICAgICAgICAgICBhcmdzLmFwcGVuZChsb2dnaW5nLmdldExldmVsTmFtZShsb2dfbGV2
ZWwpLmxvd2VyKCkpCi0KLSAgICAgICAgcmV0dXJuIHNlbGYuX3J1bl9weXRob25fY29tbWFuZChh
cmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zZWxm
LnNlcnZlcl9zdGRlcnIpCi0KLSAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBwaWQpOgotICAg
ICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCd3aW4zMicsICdjeWd3aW4nKToKLSAgICAgICAgICAg
IHN1YnByb2Nlc3MuY2FsbCgKLSAgICAgICAgICAgICAgICAoJ3Rhc2traWxsLmV4ZScsICcvZics
ICcvcGlkJywgc3RyKHBpZCkpLCBjbG9zZV9mZHM9VHJ1ZSkKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKLQotCi1jbGFzcyBFbmRUb0VuZEh5
QmlUZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAg
RW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9ydW5fdGVzdF93aXRoX2Ns
aWVudF9vcHRpb25zKHNlbGYsIHRlc3RfZnVuY3Rpb24sIG9wdGlvbnMpOgotICAgICAgICBzZXJ2
ZXIgPSBzZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBUT0RP
KHR5b3NoaW5vKTogYWRkIHNvbWUgbG9naWMgdG8gcG9sbCB0aGUgc2VydmVyIHVudGlsIGl0Ci0g
ICAgICAgICAgICAjIGJlY29tZXMgcmVhZHkKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZF
Ul9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3Rp
bmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAgZGVmIF9ydW5fdGVzdChz
ZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGllbnRf
b3B0aW9ucyh0ZXN0X2Z1bmN0aW9uLCBzZWxmLl9vcHRpb25zKQotCi0gICAgZGVmIF9ydW5fZGVm
bGF0ZV9mcmFtZV90ZXN0KHNlbGYsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIgPSBz
ZWxmLl9ydW5fc2VydmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChf
U0VSVkVSX1dBUk1VUF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZW5hYmxl
X2RlZmxhdGVfZnJhbWUoKQotICAgICAgICAgICAgY2xpZW50ID0gY2xpZW50X2Zvcl90ZXN0aW5n
LmNyZWF0ZV9jbGllbnQoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAg
ICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAg
ICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX3Bl
cm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgc2VsZiwgb2ZmZXIsIHJlc3BvbnNl
X2NoZWNrZXIsIHRlc3RfZnVuY3Rpb24pOgotICAgICAgICBzZXJ2ZXIgPSBzZWxmLl9ydW5fc2Vy
dmVyKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGltZS5zbGVlcChfU0VSVkVSX1dBUk1V
UF9JTl9TRUMpCi0KLSAgICAgICAgICAgIHNlbGYuX29wdGlvbnMuZXh0ZW5zaW9ucyArPSBvZmZl
cgotICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5jaGVja19wZXJtZXNzYWdlX2RlZmxhdGUgPSBy
ZXNwb25zZV9jaGVja2VyCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3Rpbmcu
Y3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25zKQotCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgY2xpZW50LmNvbm5lY3QoKQotCi0gICAgICAgICAgICAgICAgaWYgdGVzdF9mdW5j
dGlvbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbihjbGll
bnQpCi0KLSAgICAgICAgICAgICAgICBjbGllbnQuYXNzZXJ0X2Nvbm5lY3Rpb25fY2xvc2VkKCkK
LSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tl
dCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2Vy
dmVyLnBpZCkKLQotICAgIGRlZiBfcnVuX2Nsb3NlX3dpdGhfY29kZV9hbmRfcmVhc29uX3Rlc3Qo
c2VsZiwgdGVzdF9mdW5jdGlvbiwgY29kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVhc29uKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVu
X3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9X
QVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3Rpbmcu
Y3JlYXRlX2NsaWVudChzZWxmLl9vcHRpb25zKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgIHRlc3RfZnVuY3Rpb24oY2xpZW50LCBjb2RlLCByZWFzb24pCi0gICAgICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9zb2NrZXQoKQotICAgICAgICBm
aW5hbGx5OgotICAgICAgICAgICAgc2VsZi5fa2lsbF9wcm9jZXNzKHNlcnZlci5waWQpCi0KLSAg
ICBkZWYgX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qoc2VsZiwgb3B0aW9ucywgc3RhdHVzKToKLSAg
ICAgICAgc2VydmVyID0gc2VsZi5fcnVuX3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9XQVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGll
bnQgPSBjbGllbnRfZm9yX3Rlc3RpbmcuY3JlYXRlX2NsaWVudChvcHRpb25zKQotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLSAgICAgICAgICAgICAg
ICBzZWxmLmZhaWwoJ0NvdWxkIG5vdCBjYXRjaCBIdHRwU3RhdHVzRXhjZXB0aW9uJykKLSAgICAg
ICAgICAgIGV4Y2VwdCBjbGllbnRfZm9yX3Rlc3RpbmcuSHR0cFN0YXR1c0V4Y2VwdGlvbiwgZToK
LSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgZS5zdGF0dXMpCi0gICAg
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgn
Q2F0Y2ggdW5leHBlY3RlZCBleGNlcHRpb24nKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAg
ICAgICAgICAgICBjbGllbnQuY2xvc2Vfc29ja2V0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAg
ICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0gICAgZGVmIF9ydW5fbXV4
X3Rlc3Qoc2VsZiwgdGVzdF9mdW5jdGlvbik6Ci0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9z
ZXJ2ZXIoKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FS
TVVQX0lOX1NFQykKLQotICAgICAgICAgICAgY2xpZW50ID0gbXV4X2NsaWVudF9mb3JfdGVzdGlu
Zy5NdXhDbGllbnQoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAg
ICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAg
ICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiB0ZXN0X2VjaG8o
c2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQot
ICAgIGRlZiB0ZXN0X2VjaG9fYmluYXJ5KHNlbGYpOgotICAgICAgICBzZWxmLl9ydW5fdGVzdChf
ZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9iaW5hcnkpCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Nl
cnZlcl9jbG9zZShzZWxmKToKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QoX2VjaG9fY2hlY2tfcHJv
Y2VkdXJlX3dpdGhfZ29vZGJ5ZSkKLQotICAgIGRlZiB0ZXN0X3VubWFza2VkX2ZyYW1lKHNlbGYp
OgotICAgICAgICBzZWxmLl9ydW5fdGVzdChfdW5tYXNrZWRfZnJhbWVfY2hlY2tfcHJvY2VkdXJl
KQotCi0gICAgZGVmIHRlc3RfZWNob19kZWZsYXRlX2ZyYW1lKHNlbGYpOgotICAgICAgICBzZWxm
Ll9ydW5fZGVmbGF0ZV9mcmFtZV90ZXN0KF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRl
ZiB0ZXN0X2VjaG9fZGVmbGF0ZV9mcmFtZV9zZXJ2ZXJfY2xvc2Uoc2VsZik6Ci0gICAgICAgIHNl
bGYuX3J1bl9kZWZsYXRlX2ZyYW1lX3Rlc3QoCi0gICAgICAgICAgICBfZWNob19jaGVja19wcm9j
ZWR1cmVfd2l0aF9nb29kYnllKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNzYWdlX2RlZmxh
dGUoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAg
ICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAgICAgICAgICAgY29tcHJlc3Nl
ZF9oZWxsbyA9ICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJwotICAgICAgICAgICAgY2xp
ZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAgICBjb21wcmVzc2VkX2hl
bGxvLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQs
Ci0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFt
LmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9o
ZWxsbywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENP
REVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0gICAgICAgICAgICBjbGll
bnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2Uo
KQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywgcGFyYW1ldGVyLm5hbWUo
KSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFtdLCBwYXJhbWV0ZXIuZ2V0X3BhcmFt
ZXRlcnMoKSkKLQotICAgICAgICBzZWxmLl9ydW5fcGVybWVzc2FnZV9kZWZsYXRlX3Rlc3QoCi0g
ICAgICAgICAgICAgICAgWydwZXJtZXNzYWdlLWRlZmxhdGUnXSwKLSAgICAgICAgICAgICAgICBy
ZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBk
ZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV90d29fZnJhbWVzKHNlbGYpOgotICAgICAg
ICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFt
cGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgK
LSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhjZCcsCi0gICAgICAgICAgICAgICAgICAg
IGNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgZW5k
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGllbnQu
X3N0cmVhbS5zZW5kX2RhdGEoCi0gICAgICAgICAgICAgICAgICAgICdceGM5XHhjOVx4MDdceDAw
JywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhUKQot
ICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAotICAgICAg
ICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAgICAgICAg
ICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAg
ICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQot
ICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYg
cmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhbXSwgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAg
ICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsn
cGVybWVzc2FnZS1kZWZsYXRlJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwK
LSAgICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJt
ZXNzYWdlX2RlZmxhdGVfdHdvX21lc3NhZ2VzKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5j
dGlvbihjbGllbnQpOgotICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3Bl
Yy4KLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAg
ICAgICAgJ1x4ZjJceDQ4XHhjZFx4YzlceGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAg
ICBjbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJz
djE9MSkKLSAgICAgICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAg
ICAgICAgICAgJ1x4ZjJceDAwXHgxMVx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xp
ZW50X2Zvcl90ZXN0aW5nLk9QQ09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEp
Ci0gICAgICAgICAgICBjbGllbnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAg
ICAgICAgICAgICAgICAgICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAg
ICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAg
ICAgICAgICAgICAgICAgcnN2MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0
X3JlY2VpdmVfYmluYXJ5KAotICAgICAgICAgICAgICAgICAgICAnXHhmMlx4MDBceDExXHgwMFx4
MDAnLAotICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y2xpZW50X2Zvcl90ZXN0aW5nLk9QQ09E
RV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0KLSAgICAgICAgICAgIGNsaWVu
dC5zZW5kX2Nsb3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgp
Ci0KLSAgICAgICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBwYXJhbWV0ZXIubmFtZSgp
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoW10sIHBhcmFtZXRlci5nZXRfcGFyYW1l
dGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAg
ICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZSddLAotICAgICAgICAgICAgICAgIHJl
c3BvbnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRl
ZiB0ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3R3b19tc2dzX3NlcnZlcl9ub19jb250ZXh0
X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAg
ICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAgIGNs
aWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDQ4XHhj
ZFx4YzlceGM5XHgwN1x4MDAnLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAg
IGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgJ1x4ZjJceDAw
XHgxMVx4MDBceDAwJywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9Q
Q09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGll
bnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAgICdc
eGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
PWNsaWVudF9mb3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2
MT0xKQotICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uYXNzZXJ0X3JlY2VpdmVfYmluYXJ5KAot
ICAgICAgICAgICAgICAgICAgICAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcsCi0gICAg
ICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rlc3RpbmcuT1BDT0RFX1RFWFQsCi0g
ICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAgICAgICAgY2xpZW50LnNlbmRfY2xv
c2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKCkKLQotICAgICAg
ICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFtZXRlci5uYW1lKCkpCi0gICAgICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhbKCdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlcicsIE5v
bmUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlci5nZXRfcGFyYW1l
dGVycygpKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAg
ICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX25vX2NvbnRleHRfdGFr
ZW92ZXInXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAg
ICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0
ZV9wcmVmZXJlbmNlKHNlbGYpOgotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgot
ICAgICAgICAgICAgIyBGcm9tIHRoZSBleGFtcGxlcyBpbiB0aGUgc3BlYy4KLSAgICAgICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gPSAnXHhmMlx4NDhceGNkXHhjOVx4YzlceDA3XHgwMCcKLSAgICAg
ICAgICAgIGNsaWVudC5fc3RyZWFtLnNlbmRfZGF0YSgKLSAgICAgICAgICAgICAgICAgICAgY29t
cHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLk9Q
Q09ERV9URVhULAotICAgICAgICAgICAgICAgICAgICByc3YxPTEpCi0gICAgICAgICAgICBjbGll
bnQuX3N0cmVhbS5hc3NlcnRfcmVjZWl2ZV9iaW5hcnkoCi0gICAgICAgICAgICAgICAgICAgIGNv
bXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAgICAgICAgIG9wY29kZT1jbGllbnRfZm9yX3Rl
c3RpbmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLQotICAgICAg
ICAgICAgY2xpZW50LnNlbmRfY2xvc2UoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNl
aXZlX2Nsb3NlKCkKLQotICAgICAgICBkZWYgcmVzcG9uc2VfY2hlY2tlcihwYXJhbWV0ZXIpOgot
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHBhcmFt
ZXRlci5uYW1lKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbXSwgcGFyYW1ldGVy
LmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0
ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVzc2FnZS1kZWZsYXRlJywgJ2RlZmxhdGUt
ZnJhbWUnXSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAg
ICAgIHRlc3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0
ZV93aXRoX3BhcmFtZXRlcnMoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVu
dCk6Ci0gICAgICAgICAgICAjIEZyb20gdGhlIGV4YW1wbGVzIGluIHRoZSBzcGVjLgotICAgICAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9ICdceGYyXHg0OFx4Y2RceGM5XHhjOVx4MDdceDAwJwot
ICAgICAgICAgICAgY2xpZW50Ll9zdHJlYW0uc2VuZF9kYXRhKAotICAgICAgICAgICAgICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvLAotICAgICAgICAgICAgICAgICAgICBjbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX1RFWFQsCi0gICAgICAgICAgICAgICAgICAgIHJzdjE9MSkKLSAgICAgICAgICAg
IGNsaWVudC5fc3RyZWFtLmFzc2VydF9yZWNlaXZlX2JpbmFyeSgKLSAgICAgICAgICAgICAgICAg
ICAgY29tcHJlc3NlZF9oZWxsbywKLSAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNsaWVudF9m
b3JfdGVzdGluZy5PUENPREVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgcnN2MT0xKQotCi0g
ICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0
X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRl
cik6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygncGVybWVzc2FnZS1kZWZsYXRlJywg
cGFyYW1ldGVyLm5hbWUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsoJ3NlcnZl
cl9tYXhfd2luZG93X2JpdHMnLCAnMTAnKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoJ3NlcnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyYW1ldGVyLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2Vs
Zi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAgICAgIFsncGVybWVz
c2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTEwOyAnCi0gICAgICAgICAgICAg
ICAgICdzZXJ2ZXJfbm9fY29udGV4dF90YWtlb3ZlciddLAotICAgICAgICAgICAgICAgIHJlc3Bv
bnNlX2NoZWNrZXIsCi0gICAgICAgICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0
ZXN0X2VjaG9fcGVybWVzc2FnZV9kZWZsYXRlX3dpdGhfYmFkX3NlcnZlcl9tYXhfd2luZG93X2Jp
dHMoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAg
ICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3JlY2VpdmVf
Y2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2VyKHBhcmFtZXRlcik6Ci0gICAg
ICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNjZXB0YW5jZSBvZiBwZXJtZXNz
YWdlLWRlZmxhdGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJtZXNzYWdlX2RlZmxhdGVfdGVz
dCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0ZTsgc2VydmVyX21heF93aW5k
b3dfYml0cz0zMDAwMDAwJ10sCi0gICAgICAgICAgICAgICAgcmVzcG9uc2VfY2hlY2tlciwKLSAg
ICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfZWNob19wZXJtZXNz
YWdlX2RlZmxhdGVfd2l0aF9iYWRfc2VydmVyX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAg
ICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5zZW5kX2Ns
b3NlKCkKLSAgICAgICAgICAgIGNsaWVudC5hc3NlcnRfcmVjZWl2ZV9jbG9zZSgpCi0KLSAgICAg
ICAgZGVmIHJlc3BvbnNlX2NoZWNrZXIocGFyYW1ldGVyKToKLSAgICAgICAgICAgIHJhaXNlIEV4
Y2VwdGlvbignVW5leHBlY3RlZCBhY2NlcHRhbmNlIG9mIHBlcm1lc3NhZ2UtZGVmbGF0ZScpCi0K
LSAgICAgICAgc2VsZi5fcnVuX3Blcm1lc3NhZ2VfZGVmbGF0ZV90ZXN0KAotICAgICAgICAgICAg
ICAgIFsncGVybWVzc2FnZS1kZWZsYXRlOyBzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzPTMwMDAwMDAn
XSwKLSAgICAgICAgICAgICAgICByZXNwb25zZV9jaGVja2VyLAotICAgICAgICAgICAgICAgIHRl
c3RfZnVuY3Rpb24pCi0KLSAgICBkZWYgdGVzdF9lY2hvX3Blcm1lc3NhZ2VfZGVmbGF0ZV93aXRo
X3VuZGVmaW5lZF9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKGNs
aWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuc2VuZF9jbG9zZSgpCi0gICAgICAgICAgICBjbGll
bnQuYXNzZXJ0X3JlY2VpdmVfY2xvc2UoKQotCi0gICAgICAgIGRlZiByZXNwb25zZV9jaGVja2Vy
KHBhcmFtZXRlcik6Ci0gICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgYWNj
ZXB0YW5jZSBvZiBwZXJtZXNzYWdlLWRlZmxhdGUnKQotCi0gICAgICAgIHNlbGYuX3J1bl9wZXJt
ZXNzYWdlX2RlZmxhdGVfdGVzdCgKLSAgICAgICAgICAgICAgICBbJ3Blcm1lc3NhZ2UtZGVmbGF0
ZTsgZm9vPWJhciddLAotICAgICAgICAgICAgICAgIHJlc3BvbnNlX2NoZWNrZXIsCi0gICAgICAg
ICAgICAgICAgdGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2VjaG9fY2xvc2Vfd2l0aF9j
b2RlX2FuZF9yZWFzb24oc2VsZik6Ci0gICAgICAgIHNlbGYuX29wdGlvbnMucmVzb3VyY2UgPSAn
L2Nsb3NlJwotICAgICAgICBzZWxmLl9ydW5fY2xvc2Vfd2l0aF9jb2RlX2FuZF9yZWFzb25fdGVz
dCgKLSAgICAgICAgICAgIF9lY2hvX2NoZWNrX3Byb2NlZHVyZV93aXRoX2NvZGVfYW5kX3JlYXNv
biwgMzMzMywgJ3N1bnN1bnN1bnN1bicpCi0KLSAgICBkZWYgdGVzdF9lY2hvX2Nsb3NlX3dpdGhf
ZW1wdHlfYm9keShzZWxmKToKLSAgICAgICAgc2VsZi5fb3B0aW9ucy5yZXNvdXJjZSA9ICcvY2xv
c2UnCi0gICAgICAgIHNlbGYuX3J1bl9jbG9zZV93aXRoX2NvZGVfYW5kX3JlYXNvbl90ZXN0KAot
ICAgICAgICAgICAgX2VjaG9fY2hlY2tfcHJvY2VkdXJlX3dpdGhfY29kZV9hbmRfcmVhc29uLCBO
b25lLCAnJykKLQotICAgIGRlZiB0ZXN0X211eF9lY2hvKHNlbGYpOgotICAgICAgICBzZWxmLl9y
dW5fbXV4X3Rlc3QoX211eF9lY2hvX2NoZWNrX3Byb2NlZHVyZSkKLQotICAgIGRlZiB0ZXN0X2Ns
b3NlX29uX3Byb3RvY29sX2Vycm9yKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBz
ZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRoIHByb3RvY29sIGVycm9yIHN0YXR1cwotICAg
ICAgICBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5kcyBkYXRhIHdpdGggc29tZSBwcm90b2NvbCBl
cnJvci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oY2xpZW50KToK
LSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgICAgICAgICAgIyBJbnRlcm1lZGlh
dGUgZnJhbWUgd2l0aG91dCBhbnkgcHJlY2VkaW5nIHN0YXJ0IG9mIGZyYWdtZW50YXRpb24KLSAg
ICAgICAgICAgICMgZnJhbWUuCi0gICAgICAgICAgICBjbGllbnQuc2VuZF9mcmFtZV9vZl9hcmJp
dHJhcnlfYnl0ZXMoJ1x4ODBceDgwJywgJycpCi0gICAgICAgICAgICBjbGllbnQuYXNzZXJ0X3Jl
Y2VpdmVfY2xvc2UoCi0gICAgICAgICAgICAgICAgY2xpZW50X2Zvcl90ZXN0aW5nLlNUQVRVU19Q
Uk9UT0NPTF9FUlJPUikKLQotICAgICAgICBzZWxmLl9ydW5fdGVzdCh0ZXN0X2Z1bmN0aW9uKQot
Ci0gICAgZGVmIHRlc3RfY2xvc2Vfb25fdW5zdXBwb3J0ZWRfZnJhbWUoc2VsZik6Ci0gICAgICAg
ICIiIlRlc3RzIHRoYXQgdGhlIHNlcnZlciBzZW5kcyBhIGNsb3NlIGZyYW1lIHdpdGggdW5zdXBw
b3J0ZWQgb3BlcmF0aW9uCi0gICAgICAgIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGNsaWVudCBzZW5k
cyBkYXRhIGFza2luZyBzb21lIG9wZXJhdGlvbiB0aGF0IGlzCi0gICAgICAgIG5vdCBzdXBwb3J0
ZWQgYnkgdGhlIHNlcnZlci4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgZGVmIHRlc3RfZnVuY3Rp
b24oY2xpZW50KToKLSAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKLQotICAgICAgICAgICAg
IyBUZXh0IGZyYW1lIHdpdGggUlNWMyBiaXQgcmFpc2VkLgotICAgICAgICAgICAgY2xpZW50LnNl
bmRfZnJhbWVfb2ZfYXJiaXRyYXJ5X2J5dGVzKCdceDkxXHg4MCcsICcnKQotICAgICAgICAgICAg
Y2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3Jf
dGVzdGluZy5TVEFUVVNfVU5TVVBQT1JURURfREFUQSkKLQotICAgICAgICBzZWxmLl9ydW5fdGVz
dCh0ZXN0X2Z1bmN0aW9uKQotCi0gICAgZGVmIHRlc3RfY2xvc2Vfb25faW52YWxpZF9mcmFtZShz
ZWxmKToKLSAgICAgICAgIiIiVGVzdHMgdGhhdCB0aGUgc2VydmVyIHNlbmRzIGEgY2xvc2UgZnJh
bWUgd2l0aCBpbnZhbGlkIGZyYW1lIHBheWxvYWQKLSAgICAgICAgZGF0YSBzdGF0dXMgY29kZSB3
aGVuIHRoZSBjbGllbnQgc2VuZHMgYW4gaW52YWxpZCBmcmFtZSBsaWtlIGNvbnRhaW5pbmcKLSAg
ICAgICAgaW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIuCi0gICAgICAgICIiIgotCi0gICAgICAgIGRl
ZiB0ZXN0X2Z1bmN0aW9uKGNsaWVudCk6Ci0gICAgICAgICAgICBjbGllbnQuY29ubmVjdCgpCi0K
LSAgICAgICAgICAgICMgVGV4dCBmcmFtZSB3aXRoIGludmFsaWQgVVRGLTggc3RyaW5nLgotICAg
ICAgICAgICAgY2xpZW50LnNlbmRfbWVzc2FnZSgnXHg4MCcsIHJhdz1UcnVlKQotICAgICAgICAg
ICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Nsb3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9m
b3JfdGVzdGluZy5TVEFUVVNfSU5WQUxJRF9GUkFNRV9QQVlMT0FEX0RBVEEpCi0KLSAgICAgICAg
c2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikKLQotICAgIGRlZiB0ZXN0X2Nsb3NlX29uX2lu
dGVybmFsX2VuZHBvaW50X2Vycm9yKHNlbGYpOgotICAgICAgICAiIiJUZXN0cyB0aGF0IHRoZSBz
ZXJ2ZXIgc2VuZHMgYSBjbG9zZSBmcmFtZSB3aXRoIGludGVybmFsIGVuZHBvaW50Ci0gICAgICAg
IGVycm9yIHN0YXR1cyBjb2RlIHdoZW4gdGhlIGhhbmRsZXIgZG9lcyBiYWQgb3BlcmF0aW9uLgot
ICAgICAgICAiIiIKLQotICAgICAgICBzZWxmLl9vcHRpb25zLnJlc291cmNlID0gJy9pbnRlcm5h
bF9lcnJvcicKLQotICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbihjbGllbnQpOgotICAgICAgICAg
ICAgY2xpZW50LmNvbm5lY3QoKQotICAgICAgICAgICAgY2xpZW50LmFzc2VydF9yZWNlaXZlX2Ns
b3NlKAotICAgICAgICAgICAgICAgIGNsaWVudF9mb3JfdGVzdGluZy5TVEFUVVNfSU5URVJOQUxf
RU5EUE9JTlRfRVJST1IpCi0KLSAgICAgICAgc2VsZi5fcnVuX3Rlc3QodGVzdF9mdW5jdGlvbikK
LQotICAgICMgVE9ETyh0b3lvc2hpbSk6IEFkZCB0ZXN0cyB0byB2ZXJpZnkgaW52YWxpZCBhYnNv
bHV0ZSB1cmkgaGFuZGxpbmcgbGlrZQotICAgICMgaG9zdCB1bm1hdGNoLCBwb3J0IHVubWF0Y2gg
YW5kIGludmFsaWQgcG9ydCBkZXNjcmlwdGlvbiAoJzonIHdpdGhvdXQgcG9ydAotICAgICMgbnVt
YmVyKS4KLQotICAgIGRlZiB0ZXN0X2Fic29sdXRlX3VyaShzZWxmKToKLSAgICAgICAgIiIiVGVz
dHMgYWJzb2x1dGUgdXJpIHJlcXVlc3QuIiIiCi0KLSAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29w
dGlvbnMKLSAgICAgICAgb3B0aW9ucy5yZXNvdXJjZSA9ICd3czovL2xvY2FsaG9zdDolZC9lY2hv
JyAlIG9wdGlvbnMuc2VydmVyX3BvcnQKLSAgICAgICAgc2VsZi5fcnVuX3Rlc3Rfd2l0aF9jbGll
bnRfb3B0aW9ucyhfZWNob19jaGVja19wcm9jZWR1cmUsIG9wdGlvbnMpCi0KLSAgICBkZWYgdGVz
dF9vcmlnaW5fY2hlY2soc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIGh0dHAgZmFsbGJhY2sgb24g
b3JpZ2luIGNoZWNrIGZhaWwuIiIiCi0KLSAgICAgICAgb3B0aW9ucyA9IHNlbGYuX29wdGlvbnMK
LSAgICAgICAgb3B0aW9ucy5yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJwotICAgICAgICAjIFNl
cnZlciBzaG93cyB3YXJuaW5nIG1lc3NhZ2UgZm9yIGh0dHAgNDAzIGZhbGxiYWNrLiBUaGlzIHdh
cm5pbmcKLSAgICAgICAgIyBtZXNzYWdlIGlzIGNvbmZ1c2luZy4gRm9sbG93aW5nIHBpcGUgZGlz
cG9zZXMgd2FybmluZyBtZXNzYWdlcy4KLSAgICAgICAgc2VsZi5zZXJ2ZXJfc3RkZXJyID0gc3Vi
cHJvY2Vzcy5QSVBFCi0gICAgICAgIHNlbGYuX3J1bl9odHRwX2ZhbGxiYWNrX3Rlc3Qob3B0aW9u
cywgNDAzKQotCi0gICAgZGVmIHRlc3RfdmVyc2lvbl9jaGVjayhzZWxmKToKLSAgICAgICAgIiIi
VGVzdHMgaHR0cCBmYWxsYmFjayBvbiB2ZXJzaW9uIGNoZWNrIGZhaWwuIiIiCi0KLSAgICAgICAg
b3B0aW9ucyA9IHNlbGYuX29wdGlvbnMKLSAgICAgICAgb3B0aW9ucy52ZXJzaW9uID0gOTkKLSAg
ICAgICAgc2VsZi5fcnVuX2h0dHBfZmFsbGJhY2tfdGVzdChvcHRpb25zLCA0MDApCi0KLQotY2xh
c3MgRW5kVG9FbmRIeUJpMDBUZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRlZiBzZXRVcChz
ZWxmKToKLSAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0gICAgZGVmIF9y
dW5fdGVzdChzZWxmLCB0ZXN0X2Z1bmN0aW9uKToKLSAgICAgICAgc2VydmVyID0gc2VsZi5fcnVu
X3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUuc2xlZXAoX1NFUlZFUl9X
QVJNVVBfSU5fU0VDKQotCi0gICAgICAgICAgICBjbGllbnQgPSBjbGllbnRfZm9yX3Rlc3Rpbmcu
Y3JlYXRlX2NsaWVudF9oeWJpMDAoc2VsZi5fb3B0aW9ucykKLSAgICAgICAgICAgIHRyeToKLSAg
ICAgICAgICAgICAgICB0ZXN0X2Z1bmN0aW9uKGNsaWVudCkKLSAgICAgICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICAgICAgY2xpZW50LmNsb3NlX3NvY2tldCgpCi0gICAgICAgIGZpbmFsbHk6
Ci0gICAgICAgICAgICBzZWxmLl9raWxsX3Byb2Nlc3Moc2VydmVyLnBpZCkKLQotICAgIGRlZiB0
ZXN0X2VjaG8oc2VsZik6Ci0gICAgICAgIHNlbGYuX3J1bl90ZXN0KF9lY2hvX2NoZWNrX3Byb2Nl
ZHVyZSkKLQotICAgIGRlZiB0ZXN0X2VjaG9fc2VydmVyX2Nsb3NlKHNlbGYpOgotICAgICAgICBz
ZWxmLl9ydW5fdGVzdChfZWNob19jaGVja19wcm9jZWR1cmVfd2l0aF9nb29kYnllKQotCi0KLWNs
YXNzIEVuZFRvRW5kVGVzdFdpdGhFY2hvQ2xpZW50KEVuZFRvRW5kVGVzdEJhc2UpOgotICAgIGRl
ZiBzZXRVcChzZWxmKToKLSAgICAgICAgRW5kVG9FbmRUZXN0QmFzZS5zZXRVcChzZWxmKQotCi0g
ICAgZGVmIF9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdCgKLSAgICAgICAgc2VsZiwg
ZXhwZWN0ZWQsIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEpOgotICAgICAgICBhY3R1YWwgPSBzdGRv
dXRkYXRhLmRlY29kZSgidXRmLTgiKQotICAgICAgICBpZiBhY3R1YWwgIT0gZXhwZWN0ZWQ6Ci0g
ICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1VuZXhwZWN0ZWQgcmVzdWx0IG9uIGV4YW1wbGUg
ZWNobyBjbGllbnQ6ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJXIgKGV4cGVjdGVk
KSB2cyAlciAoYWN0dWFsKScgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChleHBlY3Rl
ZCwgYWN0dWFsKSkKLSAgICAgICAgaWYgc3RkZXJyZGF0YSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignVW5leHBlY3RlZCBlcnJvciBtZXNzYWdlIG9uIGV4YW1wbGUg
ZWNobyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NsaWVudDogJXInICUgc3RkZXJy
ZGF0YSkKLQotICAgIGRlZiB0ZXN0X2V4YW1wbGVfZWNob19jbGllbnQoc2VsZik6Ci0gICAgICAg
ICIiIlRlc3RzIHRoYXQgdGhlIGVjaG9fY2xpZW50LnB5IGV4YW1wbGUgY2FuIHRhbGsgd2l0aCB0
aGUgc2VydmVyLiIiIgotCi0gICAgICAgIHNlcnZlciA9IHNlbGYuX3J1bl9zZXJ2ZXIoKQotICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLnNsZWVwKF9TRVJWRVJfV0FSTVVQX0lOX1NFQykK
LQotICAgICAgICAgICAgY2xpZW50X2NvbW1hbmQgPSBvcy5wYXRoLmpvaW4oCi0gICAgICAgICAg
ICAgICAgc2VsZi50b3BfZGlyLCAnZXhhbXBsZScsICdlY2hvX2NsaWVudC5weScpCi0KLSAgICAg
ICAgICAgICMgRXhwZWN0ZWQgb3V0cHV0IGZvciB0aGUgZGVmYXVsdCBtZXNzYWdlcy4KLSAgICAg
ICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24gPSAoJ1NlbmQ6IEhlbGxvXG4nICdSZWN2OiBIZWxs
b1xuJwotICAgICAgICAgICAgICAgIHUnU2VuZDogXHU2NWU1XHU2NzJjXG4nIHUnUmVjdjogXHU2
NWU1XHU2NzJjXG4nCi0gICAgICAgICAgICAgICAgJ1NlbmQgY2xvc2VcbicgJ1JlY3YgYWNrXG4n
KQotCi0gICAgICAgICAgICBhcmdzID0gW2NsaWVudF9jb21tYW5kLAotICAgICAgICAgICAgICAg
ICAgICAnLXAnLCBzdHIoc2VsZi5fb3B0aW9ucy5zZXJ2ZXJfcG9ydCldCi0gICAgICAgICAgICBj
bGllbnQgPSBzZWxmLl9ydW5fcHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3Mu
UElQRSkKLSAgICAgICAgICAgIHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVu
aWNhdGUoKQotICAgICAgICAgICAgc2VsZi5fY2hlY2tfZXhhbXBsZV9lY2hvX2NsaWVudF9yZXN1
bHQoCi0gICAgICAgICAgICAgICAgICAgIGRlZmF1bHRfZXhwZWN0YXRpb24sIHN0ZG91dGRhdGEs
IHN0ZGVycmRhdGEpCi0KLSAgICAgICAgICAgICMgUHJvY2VzcyBhIGJpZyBtZXNzYWdlIGZvciB3
aGljaCBleHRlbmRlZCBwYXlsb2FkIGxlbmd0aCBpcyB1c2VkLgotICAgICAgICAgICAgIyBUbyBo
YW5kbGUgZXh0ZW5kZWQgcGF5bG9hZCBsZW5ndGgsIHdzX3ZlcnNpb24gYXR0cmlidXRlIHdpbGwg
YmUKLSAgICAgICAgICAgICMgYWNjZXNzZWQuIFRoaXMgdGVzdCBjaGVja3MgdGhhdCB3c192ZXJz
aW9uIGlzIGNvcnJlY3RseSBzZXQuCi0gICAgICAgICAgICBiaWdfbWVzc2FnZSA9ICdhJyAqIDEw
MjQKLSAgICAgICAgICAgIGFyZ3MgPSBbY2xpZW50X2NvbW1hbmQsCi0gICAgICAgICAgICAgICAg
ICAgICctcCcsIHN0cihzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0KSwKLSAgICAgICAgICAgICAg
ICAgICAgJy1tJywgYmlnX21lc3NhZ2VdCi0gICAgICAgICAgICBjbGllbnQgPSBzZWxmLl9ydW5f
cHl0aG9uX2NvbW1hbmQoYXJncywgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAg
IHN0ZG91dGRhdGEsIHN0ZGVycmRhdGEgPSBjbGllbnQuY29tbXVuaWNhdGUoKQotICAgICAgICAg
ICAgZXhwZWN0ZWQgPSAoJ1NlbmQ6ICVzXG5SZWN2OiAlc1xuU2VuZCBjbG9zZVxuUmVjdiBhY2tc
bicgJQotICAgICAgICAgICAgICAgICAgICAgICAgKGJpZ19tZXNzYWdlLCBiaWdfbWVzc2FnZSkp
Ci0gICAgICAgICAgICBzZWxmLl9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdCgKLSAg
ICAgICAgICAgICAgICBleHBlY3RlZCwgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSkKLQotICAgICAg
ICAgICAgIyBUZXN0IHRoZSBwZXJtZXNzYWdlLWRlZmxhdGUgZXh0ZW5zaW9uLgotICAgICAgICAg
ICAgYXJncyA9IFtjbGllbnRfY29tbWFuZCwKLSAgICAgICAgICAgICAgICAgICAgJy1wJywgc3Ry
KHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpLAotICAgICAgICAgICAgICAgICAgICAnLS11c2Vf
cGVybWVzc2FnZV9kZWZsYXRlJ10KLSAgICAgICAgICAgIGNsaWVudCA9IHNlbGYuX3J1bl9weXRo
b25fY29tbWFuZChhcmdzLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQotICAgICAgICAgICAgc3Rk
b3V0ZGF0YSwgc3RkZXJyZGF0YSA9IGNsaWVudC5jb21tdW5pY2F0ZSgpCi0gICAgICAgICAgICBz
ZWxmLl9jaGVja19leGFtcGxlX2VjaG9fY2xpZW50X3Jlc3VsdCgKLSAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdF9leHBlY3RhdGlvbiwgc3Rkb3V0ZGF0YSwgc3RkZXJyZGF0YSkKLSAgICAgICAg
ZmluYWxseToKLSAgICAgICAgICAgIHNlbGYuX2tpbGxfcHJvY2VzcyhzZXJ2ZXIucGlkKQotCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfZXh0ZW5zaW9u
cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9leHRlbnNpb25zLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA2YzhiMTI2MmQ4OWI5NDk2NDk2NWMzYzM4ZDVjYzQ5NDQ3OWMxYjY3Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rl
c3QvdGVzdF9leHRlbnNpb25zLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzYwICswLDAgQEAKLSMh
L3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3Vy
Y2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMg
bWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgot
IyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29n
bGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQg
dG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3
YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElT
IFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJ
QlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05F
UiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9y
IGV4dGVuc2lvbnMgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHpsaWIK
LQotaW1wb3J0IHNldF9zeXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9w
eXdlYnNvY2tldCBtb2R1bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBjb21tb24K
LWZyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBleHRlbnNpb25zCi0KLQotY2xhc3MgRXh0ZW5z
aW9uc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIG5vbi1j
bGFzcyBtZXRob2RzIGluIGV4dGVuc2lvbnMucHkiIiIKLQotICAgIGRlZiB0ZXN0X3BhcnNlX3dp
bmRvd19iaXRzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBl
eHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRS
YWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICdmb29iYXIn
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJz
ZV93aW5kb3dfYml0cywgJyA4ICcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJy
b3IsIGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnYThhJykKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcw
MDAwMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGV4dGVuc2lvbnMu
X3BhcnNlX3dpbmRvd19iaXRzLCAnMDAwMDgnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhW
YWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzB4OCcpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93
X2JpdHMsICc5LjUnKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRl
bnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzguMCcpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKGV4dGVuc2lvbnMuX3BhcnNlX3dpbmRvd19iaXRzLCAnOCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0cywgJzE1JykKLQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJy04JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZXh0ZW5zaW9u
cy5fcGFyc2Vfd2luZG93X2JpdHMsICcwJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICc3JykKLQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBleHRlbnNpb25zLl9wYXJzZV93aW5kb3dfYml0
cywgJzE2JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoCi0gICAgICAgICAgICAgICAgVmFs
dWVFcnJvciwgZXh0ZW5zaW9ucy5fcGFyc2Vfd2luZG93X2JpdHMsICcxMDAwMDAwMCcpCi0KLQot
Y2xhc3MgQ29tcHJlc3Npb25NZXRob2RQYXJhbWV0ZXJQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0IGZvciBfcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kIHdo
aWNoIHBhcnNlcyB0aGUgY29tcHJlc3Npb24KLSAgICBtZXRob2QgZGVzY3JpcHRpb24gdXNlZCBi
eSBwZXJmcmFtZS1jb21wcmVzc2lvbiBhbmQgcGVybWVzc2FnZS1jb21wcmVzc2lvbgotICAgIGV4
dGVuc2lvbiBpbiB0aGVpciAibWV0aG9kIiBleHRlbnNpb24gcGFyYW1ldGVyLgotICAgICIiIgot
Ci0gICAgZGVmIHRlc3RfcGFyc2VfbWV0aG9kX3NpbXBsZShzZWxmKToKLSAgICAgICAgbWV0aG9k
X2xpc3QgPSBleHRlbnNpb25zLl9wYXJzZV9jb21wcmVzc2lvbl9tZXRob2QoJ2ZvbycpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1ldGhvZF9saXN0KSkKLSAgICAgICAgbWV0aG9k
ID0gbWV0aG9kX2xpc3RbMF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgbWV0aG9k
Lm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4obWV0aG9kLmdldF9wYXJh
bWV0ZXJzKCkpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfbWV0aG9kX3dpdGhfcGFyYW1ldGVyKHNl
bGYpOgotICAgICAgICBtZXRob2RfbGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNlX2NvbXByZXNzaW9u
X21ldGhvZCgnZm9vOyB4OyB5PTEwJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
bWV0aG9kX2xpc3QpKQotICAgICAgICBtZXRob2QgPSBtZXRob2RfbGlzdFswXQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdmb28nLCBtZXRob2QubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDIsIGxlbihtZXRob2QuZ2V0X3BhcmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtZXRob2QuaGFzX3BhcmFtZXRlcigneCcpKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKE5vbmUsIG1ldGhvZC5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd4JykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0VHJ1ZShtZXRob2QuaGFzX3BhcmFtZXRlcigneScpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCcxMCcsIG1ldGhvZC5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd5JykpCi0KLSAgICBkZWYg
dGVzdF9wYXJzZV9tZXRob2Rfd2l0aF9xdW90ZWRfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBt
ZXRob2RfbGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNlX2NvbXByZXNzaW9uX21ldGhvZCgKLSAgICAg
ICAgICAgICdmb287IHg9IkhlbGxvIFdvcmxkIjsgeT0xMCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoMSwgbGVuKG1ldGhvZF9saXN0KSkKLSAgICAgICAgbWV0aG9kID0gbWV0aG9kX2xpc3Rb
MF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgbWV0aG9kLm5hbWUoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4obWV0aG9kLmdldF9wYXJhbWV0ZXJzKCkpKQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kLmhhc19wYXJhbWV0ZXIoJ3gnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQnLCBtZXRob2QuZ2V0X3BhcmFtZXRlcl92YWx1
ZSgneCcpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobWV0aG9kLmhhc19wYXJhbWV0ZXIoJ3kn
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnMTAnLCBtZXRob2QuZ2V0X3BhcmFtZXRlcl92
YWx1ZSgneScpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfbWV0aG9kX211bHRpcGxlKHNlbGYpOgot
ICAgICAgICBtZXRob2RfbGlzdCA9IGV4dGVuc2lvbnMuX3BhcnNlX2NvbXByZXNzaW9uX21ldGhv
ZCgnZm9vLCBiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGxlbihtZXRob2RfbGlz
dCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2ZvbycsIG1ldGhvZF9saXN0WzBdLm5hbWUo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4obWV0aG9kX2xpc3RbMF0uZ2V0X3Bh
cmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2JhcicsIG1ldGhvZF9saXN0
WzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4obWV0aG9kX2xpc3Rb
MV0uZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAgICBkZWYgdGVzdF9wYXJzZV9tZXRob2RfbXVsdGlw
bGVfbWV0aG9kc193aXRoX3F1b3RlZF9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAgIG1ldGhvZF9s
aXN0ID0gZXh0ZW5zaW9ucy5fcGFyc2VfY29tcHJlc3Npb25fbWV0aG9kKAotICAgICAgICAgICAg
J2ZvbzsgeD0iSGVsbG8gV29ybGQiLCBiYXI7IHk9MTAnKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDIsIGxlbihtZXRob2RfbGlzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Zvbycs
IG1ldGhvZF9saXN0WzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4o
bWV0aG9kX2xpc3RbMF0uZ2V0X3BhcmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtZXRob2RfbGlzdFswXS5oYXNfcGFyYW1ldGVyKCd4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ0hlbGxvIFdvcmxkJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBtZXRob2RfbGlz
dFswXS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCd4JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J2JhcicsIG1ldGhvZF9saXN0WzFdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4obWV0aG9kX2xpc3RbMV0uZ2V0X3BhcmFtZXRlcnMoKSkpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtZXRob2RfbGlzdFsxXS5oYXNfcGFyYW1ldGVyKCd5JykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJzEwJywgbWV0aG9kX2xpc3RbMV0uZ2V0X3BhcmFtZXRlcl92YWx1ZSgneScp
KQotCi0gICAgZGVmIHRlc3RfY3JlYXRlX21ldGhvZF9kZXNjX3NpbXBsZShzZWxmKToKLSAgICAg
ICAgcGFyYW1zID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcignZm9vJykKLSAgICAgICAgZGVz
YyA9IGV4dGVuc2lvbnMuX2NyZWF0ZV9hY2NlcHRlZF9tZXRob2RfZGVzYygnZm9vJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMu
Z2V0X3BhcmFtZXRlcnMoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vJywgZGVzYykK
LQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9tZXRob2RfZGVzY193aXRoX3BhcmFtZXRlcnMoc2VsZik6
Ci0gICAgICAgIHBhcmFtcyA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ2ZvbycpCi0gICAg
ICAgIHBhcmFtcy5hZGRfcGFyYW1ldGVyKCd4JywgJ0hlbGxvLCBXb3JsZCcpCi0gICAgICAgIHBh
cmFtcy5hZGRfcGFyYW1ldGVyKCd5JywgJzEwJykKLSAgICAgICAgZGVzYyA9IGV4dGVuc2lvbnMu
X2NyZWF0ZV9hY2NlcHRlZF9tZXRob2RfZGVzYygnZm9vJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbXMuZ2V0X3BhcmFtZXRlcnMo
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZm9vOyB4PSJIZWxsbywgV29ybGQiOyB5PTEw
JywgZGVzYykKLQotCi1jbGFzcyBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3JQYXJzaW5n
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgY2hlY2tpbmcg
dGhhdCBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IgcGFyc2VzIGdpdmVuCi0gICAgZXh0
ZW5zaW9uIHBhcmFtZXRlciBjb3JyZWN0bHkuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdp
c3RyeShzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9u
X3Byb2Nlc3NvcigKLSAgICAgICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdk
ZWZsYXRlLWZyYW1lJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShwcm9jZXNzb3Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4
dGVuc2lvblByb2Nlc3NvcikKLQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLmdldF9l
eHRlbnNpb25fcHJvY2Vzc29yKAotICAgICAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoJ3gtd2Via2l0LWRlZmxhdGUtZnJhbWUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0lu
c3RhbmNlKHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dGVuc2lv
bnMuRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKQotCi0gICAgZGVmIHRlc3RfbWluaW1h
bF9vZmZlcihzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJh
bWVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1l
dGVyKCdwZXJmcmFtZS1kZWZsYXRlJykpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3Iu
Z2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZy
YW1lLWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MCwgbGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoemxpYi5NQVhfV0JJVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzc29y
Ll9yZmMxOTc5X2RlZmxhdGVyLl93aW5kb3dfYml0cykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxz
ZShwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX25vX2NvbnRleHRfdGFrZW92ZXIpCi0KLSAg
ICBkZWYgdGVzdF9vZmZlcl93aXRoX21heF93aW5kb3dfYml0cyhzZWxmKToKLSAgICAgICAgcGFy
YW1ldGVyID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVyZnJhbWUtZGVmbGF0ZScpCi0g
ICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdtYXhfd2luZG93X2JpdHMnLCAnMTAnKQot
ICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblByb2Nl
c3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1lLWRlZmxh
dGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgbGVuKHJl
c3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAs
IHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVz
dF9vZmZlcl93aXRoX291dF9vZl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAg
IHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUn
KQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgJzAn
KQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lvblBy
b2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29y
LmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbWF4
X3dpbmRvd19iaXRzX3dpdGhvdXRfdmFsdWUoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJh
bWV0ZXIuYWRkX3BhcmFtZXRlcignbWF4X3dpbmRvd19iaXRzJywgTm9uZSkKLSAgICAgICAgcHJv
Y2Vzc29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1l
dGVyKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9u
X3Jlc3BvbnNlKCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX25vX2NvbnRleHRfdGFrZW92
ZXIoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIo
J3BlcmZyYW1lLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignbm9f
Y29udGV4dF90YWtlb3ZlcicsIE5vbmUpCi0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lvbnMu
RGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICByZXNw
b25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgncGVyZnJhbWUtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRUcnVlKHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29u
dGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtl
b3Zlcl93aXRoX3ZhbHVlKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKCdwZXJmcmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9w
YXJhbWV0ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vz
c29yID0gZXh0ZW5zaW9ucy5EZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1ldGVy
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jl
c3BvbnNlKCkpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93aXRoX3Vua25vd25fcGFyYW1ldGVyKHNl
bGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJm
cmFtZS1kZWZsYXRlJykKLSAgICAgICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ2ZvbycsICdi
YXInKQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLkRlZmxhdGVGcmFtZUV4dGVuc2lv
blByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3BlcmZyYW1l
LWRlZmxhdGUnLCByZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwg
bGVuKHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpKQotCi0KLWNsYXNzIFBlck1lc3NhZ2VEZWZs
YXRlRXh0ZW5zaW9uUHJvY2Vzc29yUGFyc2luZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIkEgdW5pdHRlc3QgZm9yIGNoZWNraW5nIHRoYXQgUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNp
b25Qcm9jZXNzb3IgcGFyc2VzCi0gICAgZ2l2ZW4gZXh0ZW5zaW9uIHBhcmFtZXRlciBjb3JyZWN0
bHkuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9yZWdpc3RyeShzZWxmKToKLSAgICAgICAgcHJv
Y2Vzc29yID0gZXh0ZW5zaW9ucy5nZXRfZXh0ZW5zaW9uX3Byb2Nlc3NvcigKLSAgICAgICAgICAg
ICAgICBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHByb2Nlc3NvciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNz
b3IpCi0KLSAgICBkZWYgdGVzdF9taW5pbWFsX29mZmVyKHNlbGYpOgotICAgICAgICBwcm9jZXNz
b3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAg
ICAgICAgICAgY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykp
Ci0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNl
Lm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3Bh
cmFtZXRlcnMoKSkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6bGliLk1BWF9XQklUUywK
LSAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzb3IuX3JmYzE5NzlfZGVmbGF0ZXIuX3dp
bmRvd19iaXRzKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHByb2Nlc3Nvci5fcmZjMTk3OV9k
ZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhf
bWF4X3dpbmRvd19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRk
X3BhcmFtZXRlcignc2VydmVyX21heF93aW5kb3dfYml0cycsICcxMCcpCi0gICAgICAgIHByb2Nl
c3NvciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFy
YW1ldGVyKQotCi0gICAgICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVz
cG9uc2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdwZXJtZXNzYWdlLWRlZmxhdGUnLCBy
ZXNwb25zZS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWygnc2VydmVyX21heF93
aW5kb3dfYml0cycsICcxMCcpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5n
ZXRfcGFyYW1ldGVycygpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAsIHByb2Nlc3Nv
ci5fcmZjMTk3OV9kZWZsYXRlci5fd2luZG93X2JpdHMpCi0KLSAgICBkZWYgdGVzdF9vZmZlcl93
aXRoX291dF9vZl9yYW5nZV9tYXhfd2luZG93X2JpdHMoc2VsZik6Ci0gICAgICAgIHBhcmFtZXRl
ciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpCi0gICAg
ICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRzJywgJzAn
KQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5z
aW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9j
ZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0
aF9tYXhfd2luZG93X2JpdHNfd2l0aG91dF92YWx1ZShzZWxmKToKLSAgICAgICAgcGFyYW1ldGVy
ID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykKLSAgICAg
ICAgcGFyYW1ldGVyLmFkZF9wYXJhbWV0ZXIoJ3NlcnZlcl9tYXhfd2luZG93X2JpdHMnLCBOb25l
KQotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5z
aW9uUHJvY2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwcm9j
ZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3Rfb2ZmZXJfd2l0
aF9ub19jb250ZXh0X3Rha2VvdmVyKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24u
RXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0
ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAg
ICAgICBwcm9jZXNzb3IgPSBleHRlbnNpb25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJv
Y2Vzc29yKHBhcmFtZXRlcikKLQotICAgICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0
ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgncGVybWVzc2FnZS1k
ZWZsYXRlJywgcmVzcG9uc2UubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsoJ3Nl
cnZlcl9ub19jb250ZXh0X3Rha2VvdmVyJywgTm9uZSldLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJzKCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHByb2Nlc3Nvci5fcmZjMTk3OV9kZWZsYXRlci5fbm9fY29udGV4dF90YWtlb3ZlcikKLQotICAg
IGRlZiB0ZXN0X29mZmVyX3dpdGhfbm9fY29udGV4dF90YWtlb3Zlcl93aXRoX3ZhbHVlKHNlbGYp
OgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNz
YWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3BhcmFtZXRlcignc2VydmVyX25v
X2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5z
aW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lvblByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAg
ICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2Uo
KSkKLQotICAgIGRlZiB0ZXN0X29mZmVyX3dpdGhfdW5rbm93bl9wYXJhbWV0ZXIoc2VsZik6Ci0g
ICAgICAgIHBhcmFtZXRlciA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoJ3Blcm1lc3NhZ2Ut
ZGVmbGF0ZScpCi0gICAgICAgIHBhcmFtZXRlci5hZGRfcGFyYW1ldGVyKCdmb28nLCAnYmFyJykK
LSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvcihwYXJhbWV0ZXIpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocHJvY2Vz
c29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0
ZUV4dGVuc2lvblByb2Nlc3NvckJ1aWxkaW5nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAg
IiIiQSB1bml0dGVzdCBmb3IgY2hlY2tpbmcgdGhhdCBQZXJNZXNzYWdlRGVmbGF0ZUV4dGVuc2lv
blByb2Nlc3NvciBidWlsZHMKLSAgICBhIHJlc3BvbnNlIGJhc2VkIG9uIHNwZWNpZmllZCBvcHRp
b25zIGNvcnJlY3RseS4KLSAgICAiIiIKLQotICAgIGRlZiB0ZXN0X3Jlc3BvbnNlX3dpdGhfbWF4
X3dpbmRvd19iaXRzKHNlbGYpOgotICAgICAgICBwYXJhbWV0ZXIgPSBjb21tb24uRXh0ZW5zaW9u
UGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKQotICAgICAgICBwYXJhbWV0ZXIuYWRkX3Bh
cmFtZXRlcignY2xpZW50X21heF93aW5kb3dfYml0cycsIE5vbmUpCi0gICAgICAgIHByb2Nlc3Nv
ciA9IGV4dGVuc2lvbnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IocGFyYW1l
dGVyKQotICAgICAgICBwcm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoMTApCi0K
LSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5h
bWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbWF4X3dpbmRvd19iaXRz
JywgJzEwJyldLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0
ZXJzKCkpCi0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX21heF93aW5kb3dfYml0c193aXRo
b3V0X2NsaWVudF9wZXJtaXNzaW9uKHNlbGYpOgotICAgICAgICBwcm9jZXNzb3IgPSBleHRlbnNp
b25zLlBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAgY29t
bW9uLkV4dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1kZWZsYXRlJykpCi0gICAgICAgIHBy
b2Nlc3Nvci5zZXRfY2xpZW50X21heF93aW5kb3dfYml0cygxMCkKLQotICAgICAgICByZXNwb25z
ZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRJc05vbmUocmVzcG9uc2UpCi0KLSAgICBkZWYgdGVzdF9yZXNwb25zZV93aXRoX3RydWVfZm9y
X25vX2NvbnRleHRfdGFrZW92ZXIoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVuc2lv
bnMuUGVyTWVzc2FnZURlZmxhdGVFeHRlbnNpb25Qcm9jZXNzb3IoCi0gICAgICAgICAgICBjb21t
b24uRXh0ZW5zaW9uUGFyYW1ldGVyKCdwZXJtZXNzYWdlLWRlZmxhdGUnKSkKLQotICAgICAgICBw
cm9jZXNzb3Iuc2V0X2NsaWVudF9ub19jb250ZXh0X3Rha2VvdmVyKFRydWUpCi0KLSAgICAgICAg
cmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbKCdjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicsIE5v
bmUpXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZS5nZXRfcGFyYW1ldGVycygp
KQotCi0gICAgZGVmIHRlc3RfcmVzcG9uc2Vfd2l0aF9mYWxzZV9mb3Jfbm9fY29udGV4dF90YWtl
b3ZlcihzZWxmKToKLSAgICAgICAgcHJvY2Vzc29yID0gZXh0ZW5zaW9ucy5QZXJNZXNzYWdlRGVm
bGF0ZUV4dGVuc2lvblByb2Nlc3NvcigKLSAgICAgICAgICAgIGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoJ3Blcm1lc3NhZ2UtZGVmbGF0ZScpKQotCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfY2xp
ZW50X25vX2NvbnRleHRfdGFrZW92ZXIoRmFsc2UpCi0KLSAgICAgICAgcmVzcG9uc2UgPSBwcm9j
ZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J3Blcm1lc3NhZ2UtZGVmbGF0ZScsIHJlc3BvbnNlLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgwLCBsZW4ocmVzcG9uc2UuZ2V0X3BhcmFtZXRlcnMoKSkpCi0KLQotY2xhc3MgUGVy
TWVzc2FnZUNvbXByZXNzRXh0ZW5zaW9uUHJvY2Vzc29yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6
Ci0gICAgZGVmIHRlc3RfcmVnaXN0cnkoc2VsZik6Ci0gICAgICAgIHByb2Nlc3NvciA9IGV4dGVu
c2lvbnMuZ2V0X2V4dGVuc2lvbl9wcm9jZXNzb3IoCi0gICAgICAgICAgICAgICAgY29tbW9uLkV4
dGVuc2lvblBhcmFtZXRlcigncGVybWVzc2FnZS1jb21wcmVzcycpKQotICAgICAgICBzZWxmLmFz
c2VydElzSW5zdGFuY2UocHJvY2Vzc29yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0ZW5zaW9ucy5QZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5kc2hha2UucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhYTc4YWMwNWU1ODcxZDE1OWE2N2Y3ZTQxNmYzMDI3MDBmYTBmOTI2Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dF9oYW5kc2hha2UucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotIyEvdXNyL2Jp
bi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDEyLCBHb29nbGUgSW5jLgotIyBBbGwgcmln
aHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0j
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRo
ZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUK
LSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMu
IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRv
cnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0
aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMK
LSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJ
TkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENP
TlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFM
LAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJUZXN0cyBmb3IgaGFuZHNo
YWtlLl9iYXNlIG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgdW5pdHRlc3QKLQotaW1wb3J0IHNldF9z
eXNfcGF0aCAgIyBVcGRhdGUgc3lzLnBhdGggdG8gbG9jYXRlIG1vZF9weXdlYnNvY2tldCBtb2R1
bGUuCi0KLWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgRXh0ZW5zaW9uUGFyYW1l
dGVyCi1mcm9tIG1vZF9weXdlYnNvY2tldC5jb21tb24gaW1wb3J0IEV4dGVuc2lvblBhcnNpbmdF
eGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgZm9ybWF0X2V4dGVu
c2lvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0LmNvbW1vbiBpbXBvcnQgcGFyc2VfZXh0ZW5zaW9u
cwotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBIYW5kc2hha2VF
eGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0LmhhbmRzaGFrZS5fYmFzZSBpbXBvcnQgdmFs
aWRhdGVfc3VicHJvdG9jb2wKLQotCi1jbGFzcyBWYWxpZGF0ZVN1YnByb3RvY29sVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgdmFsaWRhdGVfc3VicHJvdG9j
b2wgbWV0aG9kLiIiIgotCi0gICAgZGVmIHRlc3RfdmFsaWRhdGVfc3VicHJvdG9jb2woc2VsZik6
Ci0gICAgICAgICMgU2hvdWxkIHN1Y2NlZWQuCi0gICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29s
KCdzYW1wbGUnKQotICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCgnU2FtcGxlJykKLSAgICAg
ICAgdmFsaWRhdGVfc3VicHJvdG9jb2woJ3NhbXBsZVx4N2Vwcm90b2NvbCcpCi0KLSAgICAgICAg
IyBTaG91bGQgZmFpbC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhh
bmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3Vi
cHJvdG9jb2wsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDA5cHJvdG9jb2wn
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgIHZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAnc2FtcGxlXHgxOXByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlz
ZXMoSGFuZHNoYWtlRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICB2YWxpZGF0
ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NhbXBsZVx4MjBwcm90
b2NvbCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICdzYW1wbGVceDdmcHJvdG9jb2wnKQotICAgICAgICBzZWxmLmFzc2Vy
dFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHZh
bGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIg
aW4gSmFwYW5lc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQot
Ci0KLV9URVNUX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWwotICAgICgnZm9vJywgWygnZm9vJywg
W10pXSksCi0gICAgKCdmb287IGJhcicsIFsoJ2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKLSAg
ICAoJ2ZvbzsgYmFyPWJheicsIFsoJ2ZvbycsIFsoJ2JhcicsICdiYXonKV0pXSksCi0gICAgKCdm
b287IGJhcj1iYXo7IGNhcj1jZHInLCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyksICgnY2FyJywg
J2NkcicpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPWJheiwgY2FyOyBjZHInLAotICAgICBbKCdmb28n
LCBbKCdiYXInLCAnYmF6JyldKSwgKCdjYXInLCBbKCdjZHInLCBOb25lKV0pXSksCi0gICAgKCdh
LCBiLCBjLCBkJywKLSAgICAgWygnYScsIFtdKSwgKCdiJywgW10pLCAoJ2MnLCBbXSksICgnZCcs
IFtdKV0pLAotICAgIF0KLQotCi1fVEVTVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCi0gICAg
KCdmb287IGJhcj0iIicsIFsoJ2ZvbycsIFsoJ2JhcicsICcnKV0pXSksCi0gICAgKCdmb287IGJh
cj0iIGJheiAiJywgWygnZm9vJywgWygnYmFyJywgJyBiYXogJyldKV0pLAotICAgICgnZm9vOyBi
YXI9IixiYXo7IicsIFsoJ2ZvbycsIFsoJ2JhcicsICcsYmF6OycpXSldKSwKLSAgICAoJ2Zvbzsg
YmFyPSJcXFxyXFxcbmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHJcbmJheicpXSldKSwKLSAg
ICAoJ2ZvbzsgYmFyPSJcXCJiYXoiJywgWygnZm9vJywgWygnYmFyJywgJyJiYXonKV0pXSksCi0g
ICAgKCdmb287IGJhcj0iXHhiYmJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnXHhiYmJheicpXSld
KSwKLSAgICBdCi0KLQotX1RFU1RfUkVEVU5EQU5UX1RPS0VOX0VYVEVOU0lPTl9EQVRBID0gWwot
ICAgICgnZm9vIFx0ICcsIFsoJ2ZvbycsIFtdKV0pLAotICAgICgnZm9vOyBcclxuIGJhcicsIFso
J2ZvbycsIFsoJ2JhcicsIE5vbmUpXSldKSwKLSAgICAoJ2ZvbzsgYmFyPVxyXG4gXHJcbiBiYXon
LCBbKCdmb28nLCBbKCdiYXInLCAnYmF6JyldKV0pLAotICAgICgnZm9vIDtiYXIgPSBiYXogJywg
WygnZm9vJywgWygnYmFyJywgJ2JheicpXSldKSwKLSAgICAoJ2ZvbyxiYXIsLGJheicsIFsoJ2Zv
bycsIFtdKSwgKCdiYXInLCBbXSksICgnYmF6JywgW10pXSksCi0gICAgXQotCi0KLV9URVNUX1JF
RFVOREFOVF9RVU9URURfRVhURU5TSU9OX0RBVEEgPSBbCi0gICAgKCdmb287IGJhcj0iXHJcbiBc
clxuIGJheiInLCBbKCdmb28nLCBbKCdiYXInLCAnICBiYXonKV0pXSksCi0gICAgXQotCi0KLWNs
YXNzIEV4dGVuc2lvbnNQYXJzZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiBf
dmVyaWZ5X2V4dGVuc2lvbl9saXN0KHNlbGYsIGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToK
LSAgICAgICAgIiIiVmVyaWZpZXMgdGhhdCBFeHRlbnNpb25QYXJhbWV0ZXIgb2JqZWN0cyBpbiBh
Y3R1YWxfbGlzdCBoYXZlIHRoZQotICAgICAgICBzYW1lIG1lbWJlcnMgYXMgZXh0ZW5zaW9uIGRl
ZmluaXRpb25zIGluIGV4cGVjdGVkX2xpc3QuIEV4dGVuc2lvbgotICAgICAgICBkZWZpbml0aW9u
IHVzZWQgaW4gdGhpcyB0ZXN0IGlzIGEgcGFpciBvZiBhbiBleHRlbnNpb24gbmFtZSBhbmQgYQot
ICAgICAgICBwYXJhbWV0ZXIgZGljdGlvbmFyeS4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbGlzdCksIGxlbihhY3R1YWxfbGlzdCkpCi0gICAg
ICAgIGZvciBleHBlY3RlZCwgYWN0dWFsIGluIHppcChleHBlY3RlZF9saXN0LCBhY3R1YWxfbGlz
dCk6Ci0gICAgICAgICAgICAobmFtZSwgcGFyYW1ldGVycykgPSBleHBlY3RlZAotICAgICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lLCBhY3R1YWwuX25hbWUpCi0gICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBhcmFtZXRlcnMsIGFjdHVhbC5fcGFyYW1ldGVycykKLQotICAgIGRlZiB0
ZXN0X3BhcnNlKHNlbGYpOgotICAgICAgICBmb3IgZm9ybWF0dGVkX3N0cmluZywgZGVmaW5pdGlv
biBpbiBfVEVTVF9UT0tFTl9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIHNlbGYuX3Zlcmlm
eV9leHRlbnNpb25fbGlzdCgKLSAgICAgICAgICAgICAgICBkZWZpbml0aW9uLCBwYXJzZV9leHRl
bnNpb25zKGZvcm1hdHRlZF9zdHJpbmcpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfcXVvdGVkX2Rh
dGEoc2VsZik6Ci0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9uIGluIF9U
RVNUX1FVT1RFRF9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIHNlbGYuX3ZlcmlmeV9leHRl
bnNpb25fbGlzdCgKLSAgICAgICAgICAgICAgICBkZWZpbml0aW9uLCBwYXJzZV9leHRlbnNpb25z
KGZvcm1hdHRlZF9zdHJpbmcpKQotCi0gICAgZGVmIHRlc3RfcGFyc2VfcmVkdW5kYW50X2RhdGEo
c2VsZik6Ci0gICAgICAgIGZvciAoZm9ybWF0dGVkX3N0cmluZywKLSAgICAgICAgICAgICBkZWZp
bml0aW9uKSBpbiBfVEVTVF9SRURVTkRBTlRfVE9LRU5fRVhURU5TSU9OX0RBVEE6Ci0gICAgICAg
ICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9uX2xpc3QoCi0gICAgICAgICAgICAgICAgZGVmaW5p
dGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3JtYXR0ZWRfc3RyaW5nKSkKLQotICAgIGRlZiB0ZXN0
X3BhcnNlX3JlZHVuZGFudF9xdW90ZWRfZGF0YShzZWxmKToKLSAgICAgICAgZm9yIChmb3JtYXR0
ZWRfc3RyaW5nLAotICAgICAgICAgICAgIGRlZmluaXRpb24pIGluIF9URVNUX1JFRFVOREFOVF9R
VU9URURfRVhURU5TSU9OX0RBVEE6Ci0gICAgICAgICAgICBzZWxmLl92ZXJpZnlfZXh0ZW5zaW9u
X2xpc3QoCi0gICAgICAgICAgICAgICAgZGVmaW5pdGlvbiwgcGFyc2VfZXh0ZW5zaW9ucyhmb3Jt
YXR0ZWRfc3RyaW5nKSkKLQotICAgIGRlZiB0ZXN0X3BhcnNlX2JhZF9kYXRhKHNlbGYpOgotICAg
ICAgICBfVEVTVF9CQURfRVhURU5TSU9OX0RBVEEgPSBbCi0gICAgICAgICAgICAoJ2ZvbzsgOyAn
KSwKLSAgICAgICAgICAgICgnZm9vOyBhIGEnKSwKLSAgICAgICAgICAgICgnZm9vIGZvbycpLAot
ICAgICAgICAgICAgKCcsLCwnKSwKLSAgICAgICAgICAgICgnZm9vOyBiYXI9JyksCi0gICAgICAg
ICAgICAoJ2ZvbzsgYmFyPSJob2dlJyksCi0gICAgICAgICAgICAoJ2ZvbzsgYmFyPSJhXHIiJyks
Ci0gICAgICAgICAgICAoJ2ZvbzsgYmFyPSJcXFx4ZmYiJyksCi0gICAgICAgICAgICAoJ2Zvbzsg
YmFyPVxyYScpLAotICAgICAgICAgICAgXQotCi0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5n
IGluIF9URVNUX0JBRF9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKAotICAgICAgICAgICAgICAgIEV4dGVuc2lvblBhcnNpbmdFeGNlcHRpb24sIHBhcnNlX2V4
dGVuc2lvbnMsIGZvcm1hdHRlZF9zdHJpbmcpCi0KLQotY2xhc3MgRm9ybWF0RXh0ZW5zaW9uc1Rl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfZm9ybWF0X2V4dGVuc2lvbnMo
c2VsZik6Ci0gICAgICAgIGZvciBmb3JtYXR0ZWRfc3RyaW5nLCBkZWZpbml0aW9ucyBpbiBfVEVT
VF9UT0tFTl9FWFRFTlNJT05fREFUQToKLSAgICAgICAgICAgIGV4dGVuc2lvbnMgPSBbXQotICAg
ICAgICAgICAgZm9yIGRlZmluaXRpb24gaW4gZGVmaW5pdGlvbnM6Ci0gICAgICAgICAgICAgICAg
KG5hbWUsIHBhcmFtZXRlcnMpID0gZGVmaW5pdGlvbgotICAgICAgICAgICAgICAgIGV4dGVuc2lv
biA9IEV4dGVuc2lvblBhcmFtZXRlcihuYW1lKQotICAgICAgICAgICAgICAgIGV4dGVuc2lvbi5f
cGFyYW1ldGVycyA9IHBhcmFtZXRlcnMKLSAgICAgICAgICAgICAgICBleHRlbnNpb25zLmFwcGVu
ZChleHRlbnNpb24pCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
ICAgIGZvcm1hdHRlZF9zdHJpbmcsIGZvcm1hdF9leHRlbnNpb25zKGV4dGVuc2lvbnMpKQotCi0K
LWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2
aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtl
X2h5YmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5YmkucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjODcxMzgyMzBiMzAzYmYzOGRjNGNmODRjMTI5MGE4OGY3
YmQ4ZDIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTM0
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiVGVzdHMgZm9yIGhhbmRzaGFrZSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0IHVuaXR0ZXN0Ci0K
LWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3
ZWJzb2NrZXQgbW9kdWxlLgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJv
bSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9ydCBBYm9ydGVkQnlVc2VyRXhj
ZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuX2Jhc2UgaW1wb3J0IEhhbmRz
aGFrZUV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtlLl9iYXNlIGltcG9y
dCBWZXJzaW9uRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5oYW5kc2hha2UuaHliaSBp
bXBvcnQgSGFuZHNoYWtlcgotCi1pbXBvcnQgbW9jawotCi0KLWNsYXNzIFJlcXVlc3REZWZpbml0
aW9uKG9iamVjdCk6Ci0gICAgIiIiQSBjbGFzcyBmb3IgaG9sZGluZyBkYXRhIGZvciBjb25zdHJ1
Y3Rpbmcgb3BlbmluZyBoYW5kc2hha2Ugc3RyaW5ncyBmb3IKLSAgICB0ZXN0aW5nIHRoZSBvcGVu
aW5nIGhhbmRzaGFrZSBwcm9jZXNzb3IuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2Vs
ZiwgbWV0aG9kLCB1cmksIGhlYWRlcnMpOgotICAgICAgICBzZWxmLm1ldGhvZCA9IG1ldGhvZAot
ICAgICAgICBzZWxmLnVyaSA9IHVyaQotICAgICAgICBzZWxmLmhlYWRlcnMgPSBoZWFkZXJzCi0K
LQotZGVmIF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpOgotICAgIHJldHVybiBSZXF1ZXN0RGVm
aW5pdGlvbigKLSAgICAgICAgJ0dFVCcsICcvZGVtbycsCi0gICAgICAgIHsnSG9zdCc6ICdzZXJ2
ZXIuZXhhbXBsZS5jb20nLAotICAgICAgICAgJ1VwZ3JhZGUnOiAnd2Vic29ja2V0JywKLSAgICAg
ICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5
JzogJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScsCi0gICAgICAgICAnU2VjLVdlYlNvY2tldC1W
ZXJzaW9uJzogJzEzJywKLSAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJ30p
Ci0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6Ci0gICAgY29ubiA9IG1vY2su
TW9ja0Nvbm4oJycpCi0gICAgcmV0dXJuIG1vY2suTW9ja1JlcXVlc3QoCi0gICAgICAgIG1ldGhv
ZD1yZXF1ZXN0X2RlZi5tZXRob2QsCi0gICAgICAgIHVyaT1yZXF1ZXN0X2RlZi51cmksCi0gICAg
ICAgIGhlYWRlcnNfaW49cmVxdWVzdF9kZWYuaGVhZGVycywKLSAgICAgICAgY29ubmVjdGlvbj1j
b25uKQotCi0KLWRlZiBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCk6Ci0gICAgaGFuZHNoYWtl
ciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgIHJldHVy
biBoYW5kc2hha2VyCi0KLQotY2xhc3MgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIob2Jq
ZWN0KToKLSAgICAiIiJBIGRpc3BhdGNoZXIgZm9yIHRlc3RpbmcuIFRoaXMgZGlzcGF0Y2hlciBz
ZXRzIHRoZSBpLXRoIHN1YnByb3RvY29sCi0gICAgb2YgcmVxdWVzdGVkIG9uZXMgdG8gd3NfcHJv
dG9jb2wgd2hlcmUgaSBpcyBnaXZlbiBvbiBjb25zdHJ1Y3Rpb24gYXMgaW5kZXgKLSAgICBhcmd1
bWVudC4gSWYgaW5kZXggaXMgbmVnYXRpdmUsIGRlZmF1bHRfdmFsdWUgd2lsbCBiZSBzZXQgdG8g
d3NfcHJvdG9jb2wuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXgsIGRl
ZmF1bHRfdmFsdWU9Tm9uZSk6Ci0gICAgICAgIHNlbGYuaW5kZXggPSBpbmRleAotICAgICAgICBz
ZWxmLmRlZmF1bHRfdmFsdWUgPSBkZWZhdWx0X3ZhbHVlCi0KLSAgICBkZWYgZG9fZXh0cmFfaGFu
ZHNoYWtlKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0gICAgICAgIGlmIHNlbGYuaW5kZXggPj0gMDoK
LSAgICAgICAgICAgIGNvbm5fY29udGV4dC53c19wcm90b2NvbCA9IGNvbm5fY29udGV4dC53c19y
ZXF1ZXN0ZWRfcHJvdG9jb2xzWwotICAgICAgICAgICAgICAgIHNlbGYuaW5kZXhdCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBjb25uX2NvbnRleHQud3NfcHJvdG9jb2wgPSBzZWxmLmRlZmF1
bHRfdmFsdWUKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYsIGNvbm5fY29udGV4dCk6Ci0g
ICAgICAgIHBhc3MKLQotCi1jbGFzcyBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uKEV4Y2VwdGlv
bik6Ci0gICAgcGFzcwotCi0KLWNsYXNzIEFib3J0aW5nRGlzcGF0Y2hlcihvYmplY3QpOgotICAg
ICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBkaXNwYXRjaGVyIHJhaXNlcyBhbiBl
eGNlcHRpb24gaW4KLSAgICBkb19leHRyYV9oYW5kc2hha2UgdG8gcmVqZWN0IHRoZSByZXF1ZXN0
LgotICAgICIiIgotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRl
eHQpOgotICAgICAgICByYWlzZSBIYW5kc2hha2VBYm9ydGVkRXhjZXB0aW9uKCdBbiBleGNlcHRp
b24gdG8gcmVqZWN0IHRoZSByZXF1ZXN0JykKLQotICAgIGRlZiB0cmFuc2Zlcl9kYXRhKHNlbGYs
IGNvbm5fY29udGV4dCk6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBBYm9ydGVkQnlVc2VyRGlz
cGF0Y2hlcihvYmplY3QpOgotICAgICIiIkEgZGlzcGF0Y2hlciBmb3IgdGVzdGluZy4gVGhpcyBk
aXNwYXRjaGVyIHJhaXNlcyBhbgotICAgIEFib3J0ZWRCeVVzZXJFeGNlcHRpb24gaW4gZG9fZXh0
cmFfaGFuZHNoYWtlIHRvIHJlamVjdCB0aGUgcmVxdWVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBk
b19leHRyYV9oYW5kc2hha2Uoc2VsZiwgY29ubl9jb250ZXh0KToKLSAgICAgICAgcmFpc2UgQWJv
cnRlZEJ5VXNlckV4Y2VwdGlvbignQW4gQWJvcnRlZEJ5VXNlckV4Y2VwdGlvbiB0byByZWplY3Qg
dGhlICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWVzdCcpCi0K
LSAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQpOgotICAgICAgICBwYXNz
Ci0KLQotX0VYUEVDVEVEX1JFU1BPTlNFID0gKAotICAgICdIVFRQLzEuMSAxMDEgU3dpdGNoaW5n
IFByb3RvY29sc1xyXG4nCi0gICAgJ1VwZ3JhZGU6IHdlYnNvY2tldFxyXG4nCi0gICAgJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUFjY2VwdDogczNwUExNQmlU
eGFROWtZR3p6aFpSYksreE9vPVxyXG5cclxuJykKLQotCi1jbGFzcyBIYW5kc2hha2VyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgZHJhZnQtaWV0Zi1oeWJp
LXRoZXdlYnNvY2tldHByb3RvY29sLTA2IGFuZCBsYXRlcgotICAgIGhhbmRzaGFrZSBwcm9jZXNz
b3IuCi0gICAgIiIiCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpCi0g
ICAgICAgIGRpc3BhdGNoZXIgPSBtb2NrLk1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgaGFuZHNo
YWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgaGFuZHNoYWtl
ci5kb19oYW5kc2hha2UoKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaXNwYXRjaGVyLmRv
X2V4dHJhX2hhbmRzaGFrZV9jYWxsZWQpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAg
ICAgICAgICAgIF9FWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvZGVtbycsIHJlcXVlc3Qud3NfcmVz
b3VyY2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2h0dHA6Ly9leGFtcGxlLmNvbScsIHJl
cXVlc3Qud3Nfb3JpZ2luKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVxdWVzdC53c19l
eHRlbnNpb25zKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5WRVJTSU9OX0hZQklf
TEFURVNULCByZXF1ZXN0LndzX3ZlcnNpb24pCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vf
d2l0aF9leHRyYV9oZWFkZXJzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVf
Z29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgICMgQWRkIGhlYWRlcnMgbm90IHJlbGF0ZWQgdG8g
V2ViU29ja2V0IG9wZW5pbmcgaGFuZHNoYWtlLgotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJz
WydGb29LZXknXSA9ICdCYXJWYWx1ZScKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snRW1w
dHlLZXknXSA9ICcnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0
X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQot
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53
cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2NhcGl0YWxp
emVkX3ZhbHVlKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ3VwZ3JhZGUnXSA9ICdXRUJT
T0NLRVQnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
LSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVu
X2RhdGEoKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5lY3Rpb24nXSA9ICdVUEdSQURF
JwotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAg
ICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRlX2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFu
ZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAg
ICAgICAgX0VYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9tdWx0aXBsZV9jb25uZWN0aW9u
X3ZhbHVlcyhzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVz
dF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydDb25uZWN0aW9uJ10gPSAnVXBn
cmFkZSwga2VlcC1hbGl2ZSwgLCAnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihy
ZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBfRVhQRUNURURfUkVTUE9OU0UsIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2Fib3J0aW5nX2hhbmRzaGFr
ZShzZWxmKToKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIoCi0gICAgICAgICAgICBf
Y3JlYXRlX3JlcXVlc3QoX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkpLAotICAgICAgICAgICAg
QWJvcnRpbmdEaXNwYXRjaGVyKCkpCi0gICAgICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNl
cyBhbiBleGNlcHRpb24uIENoZWNrIHRoYXQgaXQncyBub3QgY2F1Z2h0IGJ5Ci0gICAgICAgICMg
ZG9faGFuZHNoYWtlLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VBYm9ydGVk
RXhjZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hh
bmRzaGFrZV93aXRoX3Byb3RvY29sKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVh
dGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wnXSA9ICdjaGF0LCBzdXBlcmNoYXQnCi0KLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIocmVxdWVzdCwgU3VicHJvdG9jb2xDaG9vc2luZ0Rpc3BhdGNoZXIoMCkpCi0gICAg
ICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLQotICAgICAgICBFWFBFQ1RFRF9SRVNQT05T
RSA9ICgKLSAgICAgICAgICAgICdIVFRQLzEuMSAxMDEgU3dpdGNoaW5nIFByb3RvY29sc1xyXG4n
Ci0gICAgICAgICAgICAnVXBncmFkZTogd2Vic29ja2V0XHJcbicKLSAgICAgICAgICAgICdDb25u
ZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUFjY2VwdDog
czNwUExNQmlUeGFROWtZR3p6aFpSYksreE9vPVxyXG4nCi0gICAgICAgICAgICAnU2VjLVdlYlNv
Y2tldC1Qcm90b2NvbDogY2hhdFxyXG5cclxuJykKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KEVYUEVDVEVEX1JFU1BPTlNFLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NoYXQnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0g
ICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3Byb3RvY29sX25vdF9pbl9yZXF1ZXN0X2J1dF9pbl9y
ZXNwb25zZShzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVz
dF9kZWYoKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQot
ICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcigKLSAgICAgICAgICAgIHJlcXVlc3QsIFN1
YnByb3RvY29sQ2hvb3NpbmdEaXNwYXRjaGVyKC0xLCAnZm9vYmFyJykpCi0gICAgICAgICMgTm8g
cmVxdWVzdCBoYXMgYmVlbiBtYWRlIGJ1dCB3c19wcm90b2NvbCBpcyBzZXQuIEhhbmRzaGFrZUV4
Y2VwdGlvbgotICAgICAgICAjIG11c3QgYmUgcmFpc2VkLgotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhIYW5kc2hha2VFeGNlcHRpb24sIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKQotCi0gICAg
ZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcHJvdG9jb2xfbm9fcHJvdG9jb2xfc2VsZWN0aW9u
KHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnXSA9
ICdjaGF0LCBzdXBlcmNoYXQnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChy
ZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1
ZXN0KQotICAgICAgICAjIHdzX3Byb3RvY29sIGlzIG5vdCBzZXQuIEhhbmRzaGFrZUV4Y2VwdGlv
biBtdXN0IGJlIHJhaXNlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhj
ZXB0aW9uLCBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRz
aGFrZV93aXRoX2V4dGVuc2lvbnMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdl
YlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAgICAncGVybWVzc2FnZS1jb21wcmVz
czsgbWV0aG9kPWRlZmxhdGUsIHVua25vd24nKQotCi0gICAgICAgIEVYUEVDVEVEX1JFU1BPTlNF
ID0gKAotICAgICAgICAgICAgJ0hUVFAvMS4xIDEwMSBTd2l0Y2hpbmcgUHJvdG9jb2xzXHJcbicK
LSAgICAgICAgICAgICdVcGdyYWRlOiB3ZWJzb2NrZXRcclxuJwotICAgICAgICAgICAgJ0Nvbm5l
Y3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtQWNjZXB0OiBz
M3BQTE1CaVR4YVE5a1lHenpoWlJiSyt4T289XHJcbicKLSAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LUV4dGVuc2lvbnM6IHBlcm1lc3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlXHJcbicK
LSAgICAgICAgICAgICdcclxuJykKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5kc2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJl
cXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChFWFBFQ1RFRF9SRVNQT05TRSwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVu
c2lvbnMpKQotICAgICAgICBleHRlbnNpb24gPSByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRF
TlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uLm5hbWUoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbJ21ldGhvZCddLCBleHRlbnNpb24uZ2V0X3BhcmFtZXRlcl9u
YW1lcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdkZWZsYXRlJywgZXh0ZW5zaW9uLmdl
dF9wYXJhbWV0ZXJfdmFsdWUoJ21ldGhvZCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1l
KCkpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hha2Vfd2l0aF9wZXJtZXNzYWdlX2NvbXByZXNz
KHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucydd
ID0gKAotICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlJykK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAg
aGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVl
c3Qud3NfZXh0ZW5zaW9ucykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1F
U1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3Qud3NfZXh0ZW5zaW9uc1swXS5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzBdLm5h
bWUoKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX3F1b3RlZF9leHRlbnNpb25z
KHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigp
Ci0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9ucydd
ID0gKAotICAgICAgICAgICAgJ3Blcm1lc3NhZ2UtY29tcHJlc3M7IG1ldGhvZD1kZWZsYXRlLCAs
ICcKLSAgICAgICAgICAgICd1bmtub3duOyBlICAgPSAgICAibWNeMiI7IG1hPSJcclxuICAgICAg
XFxccmYgICI7IHB2PW5ydCcpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChy
ZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1
ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnMpKQotICAgICAg
ICBmaXJzdF9leHRlbnNpb24gPSByZXF1ZXN0LndzX3JlcXVlc3RlZF9leHRlbnNpb25zWzBdCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3Blcm1lc3NhZ2UtY29tcHJlc3MnLCBmaXJzdF9leHRl
bnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnbWV0aG9kJ10sIGZpcnN0
X2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX25hbWVzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ2RlZmxhdGUnLAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2V4dGVuc2lvbi5n
ZXRfcGFyYW1ldGVyX3ZhbHVlKCdtZXRob2QnKSkKLSAgICAgICAgc2Vjb25kX2V4dGVuc2lvbiA9
IHJlcXVlc3Qud3NfcmVxdWVzdGVkX2V4dGVuc2lvbnNbMV0KLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgndW5rbm93bicsIHNlY29uZF9leHRlbnNpb24ubmFtZSgpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgWydlJywgJ21hJywgJ3B2J10sIHNlY29uZF9leHRlbnNp
b24uZ2V0X3BhcmFtZXRlcl9uYW1lcygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdtY14y
Jywgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdlJykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJyBccmYgJywgc2Vjb25kX2V4dGVuc2lvbi5nZXRfcGFyYW1ldGVyX3Zh
bHVlKCdtYScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCducnQnLCBzZWNvbmRfZXh0ZW5z
aW9uLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ3B2JykpCi0KLSAgICBkZWYgdGVzdF9kb19oYW5kc2hh
a2Vfd2l0aF9vcHRpb25hbF9oZWFkZXJzKHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9j
cmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Vt
cHR5VmFsdWUnXSA9ICcnCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0FLZXknXSA9ICdB
VmFsdWUnCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikK
LSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQotICAgICAg
ICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICAnQVZhbHVlJywgcmVxdWVzdC5oZWFkZXJzX2luWydBS2V5J10pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnJywgcmVxdWVzdC5oZWFkZXJzX2luWydF
bXB0eVZhbHVlJ10pCi0KLSAgICBkZWYgdGVzdF9hYm9ydF9leHRyYV9oYW5kc2hha2Uoc2VsZik6
Ci0gICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKAotICAgICAgICAgICAgX2NyZWF0ZV9y
ZXF1ZXN0KF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2RlZigpKSwKLSAgICAgICAgICAgIEFib3J0ZWRC
eVVzZXJEaXNwYXRjaGVyKCkpCi0gICAgICAgICMgZG9fZXh0cmFfaGFuZHNoYWtlIHJhaXNlcyBh
biBBYm9ydGVkQnlVc2VyRXhjZXB0aW9uLiBDaGVjayB0aGF0IGl0J3MKLSAgICAgICAgIyBub3Qg
Y2F1Z2h0IGJ5IGRvX2hhbmRzaGFrZS4KLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQWJvcnRl
ZEJ5VXNlckV4Y2VwdGlvbiwgaGFuZHNoYWtlci5kb19oYW5kc2hha2UpCi0KLSAgICBkZWYgdGVz
dF9kb19oYW5kc2hha2Vfd2l0aF9tdXhfYW5kX2RlZmxhdGVfZnJhbWUoc2VsZik6Ci0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVz
dF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoJyVzLCAlcycgJSAo
Ci0gICAgICAgICAgICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAg
Y29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFu
ZHNoYWtlcihyZXF1ZXN0KQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAg
ICAgICMgbXV4IHNob3VsZCBiZSByZWplY3RlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgx
LCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25zKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cmVxdWVzdC53c19leHRlbnNpb25zWzBdLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgyLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXS5uYW1lKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgp
KQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eF9wcm9jZXNz
b3InKSkKLQotICAgIGRlZiB0ZXN0X2RvX2hhbmRzaGFrZV93aXRoX2RlZmxhdGVfZnJhbWVfYW5k
X211eChzZWxmKToKLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9k
ZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUV4dGVuc2lv
bnMnXSA9ICgnJXMsICVzJyAlICgKLSAgICAgICAgICAgICAgICBjb21tb24uREVGTEFURV9GUkFN
RV9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLk1VWF9FWFRFTlNJT04pKQotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKQotICAgICAgICBoYW5k
c2hha2VyID0gX2NyZWF0ZV9oYW5kc2hha2VyKHJlcXVlc3QpCi0gICAgICAgIGhhbmRzaGFrZXIu
ZG9faGFuZHNoYWtlKCkKLSAgICAgICAgIyBtdXggc2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihyZXF1ZXN0LndzX2V4dGVuc2lvbnMpKQotICAgICAg
ICBmaXJzdF9leHRlbnNpb24gPSByZXF1ZXN0LndzX2V4dGVuc2lvbnNbMF0KLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgZmlyc3RfZXh0ZW5zaW9uLm5hbWUoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OLAotICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0ubmFt
ZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhfRVhURU5TSU9OLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMV0u
bmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGhhc2F0dHIocmVxdWVzdCwgJ211eCcp
KQotCi0gICAgZGVmIHRlc3RfZG9faGFuZHNoYWtlX3dpdGhfcGVybWVzc2FnZV9jb21wcmVzc19h
bmRfbXV4KHNlbGYpOgotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0
X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtRXh0ZW5z
aW9ucyddID0gKAotICAgICAgICAgICAgJyVzOyBtZXRob2Q9ZGVmbGF0ZSwgJXMnICUgKAotICAg
ICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAg
ICAgICAgICAgICAgICBjb21tb24uTVVYX0VYVEVOU0lPTikpCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QocmVxdWVzdF9kZWYpCi0gICAgICAgIGhhbmRzaGFrZXIgPSBfY3JlYXRl
X2hhbmRzaGFrZXIocmVxdWVzdCkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKHJlcXVlc3Qud3NfZXh0ZW5zaW9ucykp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk1VWF9FWFRFTlNJT04sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC53c19leHRlbnNpb25zWzBdLm5hbWUoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29y
cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJ
T05fRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5z
aW9uX3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1v
bi5NVVhfRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0
ZW5zaW9uX3Byb2Nlc3NvcnNbMV0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFz
YXR0cihyZXF1ZXN0LCAnbXV4X3Byb2Nlc3NvcicpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
cmVxdWVzdC5tdXhfcHJvY2Vzc29yLmlzX2FjdGl2ZSgpKQotICAgICAgICBtdXhfZXh0ZW5zaW9u
cyA9IHJlcXVlc3QubXV4X3Byb2Nlc3Nvci5leHRlbnNpb25zKCkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgxLCBsZW4obXV4X2V4dGVuc2lvbnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGNvbW1vbi5QRVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBtdXhfZXh0ZW5zaW9uc1swXS5uYW1lKCkpCi0KLSAgICBkZWYgdGVzdF9kb19o
YW5kc2hha2Vfd2l0aF9tdXhfYW5kX3Blcm1lc3NhZ2VfY29tcHJlc3Moc2VsZik6Ci0gICAgICAg
IHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVz
dF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1FeHRlbnNpb25zJ10gPSAoCi0gICAgICAgICAg
ICAnJXMsICVzOyBtZXRob2Q9ZGVmbGF0ZScgJSAoCi0gICAgICAgICAgICAgICAgY29tbW9uLk1V
WF9FWFRFTlNJT04sCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJ
T05fRVhURU5TSU9OKSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0
X2RlZikKLSAgICAgICAgaGFuZHNoYWtlciA9IF9jcmVhdGVfaGFuZHNoYWtlcihyZXF1ZXN0KQot
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICMgbXV4IHNob3VsZCBi
ZSByZWplY3RlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVxdWVzdC53c19l
eHRlbnNpb25zKSkKLSAgICAgICAgZmlyc3RfZXh0ZW5zaW9uID0gcmVxdWVzdC53c19leHRlbnNp
b25zWzBdCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJF
U1NJT05fRVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X2V4dGVuc2lv
bi5uYW1lKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKHJlcXVlc3Qud3NfZXh0
ZW5zaW9uX3Byb2Nlc3NvcnMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5NVVhf
RVhURU5TSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9u
X3Byb2Nlc3NvcnNbMF0ubmFtZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5Q
RVJNRVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LndzX2V4dGVuc2lvbl9wcm9jZXNzb3JzWzFdLm5hbWUoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShoYXNhdHRyKHJlcXVlc3QsICdtdXhfcHJvY2Vzc29yJykpCi0KLSAgICBk
ZWYgdGVzdF9iYWRfcmVxdWVzdHMoc2VsZik6Ci0gICAgICAgIGJhZF9jYXNlcyA9IFsKLSAgICAg
ICAgICAgICgnSFRUUCByZXF1ZXN0JywKLSAgICAgICAgICAgICBSZXF1ZXN0RGVmaW5pdGlvbigK
LSAgICAgICAgICAgICAgICAgJ0dFVCcsICcvZGVtbycsCi0gICAgICAgICAgICAgICAgIHsnSG9z
dCc6ICd3d3cuZ29vZ2xlLmNvbScsCi0gICAgICAgICAgICAgICAgICAnVXNlci1BZ2VudCc6Ci0g
ICAgICAgICAgICAgICAgICAgICAgJ01vemlsbGEvNS4wIChNYWNpbnRvc2g7IFU7IEludGVsIE1h
YyBPUyBYIDEwLjU7JwotICAgICAgICAgICAgICAgICAgICAgICcgZW4tVVM7IHJ2OjEuOS4xLjMp
IEdlY2tvLzIwMDkwODI0IEZpcmVmb3gvMy41LjMnCi0gICAgICAgICAgICAgICAgICAgICAgJyBH
VEI2IEdUQkEnLAotICAgICAgICAgICAgICAgICAgJ0FjY2VwdCc6Ci0gICAgICAgICAgICAgICAg
ICAgICAgJ3RleHQvaHRtbCxhcHBsaWNhdGlvbi94aHRtbCt4bWwsYXBwbGljYXRpb24veG1sO3E9
MC45LCcKLSAgICAgICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKLSAgICAgICAgICAgICAg
ICAgICdBY2NlcHQtTGFuZ3VhZ2UnOiAnZW4tdXMsZW47cT0wLjUnLAotICAgICAgICAgICAgICAg
ICAgJ0FjY2VwdC1FbmNvZGluZyc6ICdnemlwLGRlZmxhdGUnLAotICAgICAgICAgICAgICAgICAg
J0FjY2VwdC1DaGFyc2V0JzogJ0lTTy04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCi0gICAg
ICAgICAgICAgICAgICAnS2VlcC1BbGl2ZSc6ICczMDAnLAotICAgICAgICAgICAgICAgICAgJ0Nv
bm5lY3Rpb24nOiAna2VlcC1hbGl2ZSd9KSwgTm9uZSwgVHJ1ZSldCi0KLSAgICAgICAgcmVxdWVz
dF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5t
ZXRob2QgPSAnUE9TVCcKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIG1ldGhvZCcs
IHJlcXVlc3RfZGVmLCBOb25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVh
dGVfZ29vZF9yZXF1ZXN0X2RlZigpCi0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydI
b3N0J10KLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgSG9zdCcsIHJlcXVlc3Rf
ZGVmLCBOb25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9y
ZXF1ZXN0X2RlZigpCi0gICAgICAgIGRlbCByZXF1ZXN0X2RlZi5oZWFkZXJzWydVcGdyYWRlJ10K
LSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ01pc3NpbmcgVXBncmFkZScsIHJlcXVlc3RfZGVm
LCBOb25lLCBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1
ZXN0X2RlZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1VwZ3JhZGUnXSA9ICdub253
ZWJzb2NrZXQnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBVcGdyYWRlJywgcmVx
dWVzdF9kZWYsIE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9n
b29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ0Nvbm5l
Y3Rpb24nXQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnTWlzc2luZyBDb25uZWN0aW9uJywg
cmVxdWVzdF9kZWYsIE5vbmUsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0
ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snQ29ubmVj
dGlvbiddID0gJ0Rvd25ncmFkZScKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgoJ1dyb25nIENv
bm5lY3Rpb24nLCByZXF1ZXN0X2RlZiwgTm9uZSwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9k
ZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICBkZWwgcmVxdWVzdF9kZWYu
aGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXQotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgn
TWlzc2luZyBTZWMtV2ViU29ja2V0LUtleScsIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0g
ICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAg
cmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAgICAgICAg
ICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT1nYXJiYWdlJykKLSAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgoJ1dyb25nIFNlYy1XZWJTb2NrZXQtS2V5ICh3aXRoIGdhcmJhZ2Ugb24gdGhlIHRhaWwp
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0K
LSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAg
ICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29ja2V0LUtleSddID0gJ1lRPT0nICAjIEJB
U0U2NCBvZiAnYScKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3Jv
bmcgU2VjLVdlYlNvY2tldC1LZXkgKGRlY29kZWQgdmFsdWUgaXMgbm90IDE2IG9jdGV0cyBsb25n
KScsCi0gICAgICAgICAgICAgcmVxdWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVx
dWVzdF9kZWYgPSBfY3JlYXRlX2dvb2RfcmVxdWVzdF9kZWYoKQotICAgICAgICAjIFRoZSBsYXN0
IGNoYXJhY3RlciByaWdodCBiZWZvcmUgPT0gbXVzdCBiZSBhbnkgb2YgQSwgUSwgdyBhbmQgZy4K
LSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAg
ICAgICAgICAgICdBUUlEQkFVR0J3Z0pDZ3NNRFE0UEVDPT0nKQotICAgICAgICBiYWRfY2FzZXMu
YXBwZW5kKAotICAgICAgICAgICAgKCdXcm9uZyBTZWMtV2ViU29ja2V0LUtleSAocGFkZGluZyBi
aXRzIGFyZSBub3QgemVybyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUp
KQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAg
ICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1LZXknXSA9ICgKLSAgICAg
ICAgICAgICdkR2hsSUhOaGJYQnNaU0J1YjI1alpRPT0sZEdobElITmhiWEJzWlNCdWIyNWpaUT09
JykKLSAgICAgICAgYmFkX2Nhc2VzLmFwcGVuZCgKLSAgICAgICAgICAgICgnV3JvbmcgU2VjLVdl
YlNvY2tldC1LZXkgKG11bHRpcGxlIHZhbHVlcyknLAotICAgICAgICAgICAgIHJlcXVlc3RfZGVm
LCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVl
c3RfZGVmKCkKLSAgICAgICAgZGVsIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQt
VmVyc2lvbiddCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdNaXNzaW5nIFNlYy1XZWJTb2Nr
ZXQtVmVyc2lvbicsIHJlcXVlc3RfZGVmLCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBUcnVlKSkKLQotICAgICAgICByZXF1ZXN0X2RlZiA9IF9jcmVhdGVfZ29vZF9yZXF1ZXN0X2Rl
ZigpCi0gICAgICAgIHJlcXVlc3RfZGVmLmhlYWRlcnNbJ1NlYy1XZWJTb2NrZXQtVmVyc2lvbidd
ID0gJzMnCi0gICAgICAgIGJhZF9jYXNlcy5hcHBlbmQoKCdXcm9uZyBTZWMtV2ViU29ja2V0LVZl
cnNpb24nLCByZXF1ZXN0X2RlZiwgTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRmFs
c2UpKQotCi0gICAgICAgIHJlcXVlc3RfZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkK
LSAgICAgICAgcmVxdWVzdF9kZWYuaGVhZGVyc1snU2VjLVdlYlNvY2tldC1WZXJzaW9uJ10gPSAn
MTMsIDEzJwotICAgICAgICBiYWRfY2FzZXMuYXBwZW5kKCgnV3JvbmcgU2VjLVdlYlNvY2tldC1W
ZXJzaW9uIChtdWx0aXBsZSB2YWx1ZXMpJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdF9kZWYsIDQwMCwgVHJ1ZSkpCi0KLSAgICAgICAgcmVxdWVzdF9kZWYgPSBfY3JlYXRlX2dv
b2RfcmVxdWVzdF9kZWYoKQotICAgICAgICByZXF1ZXN0X2RlZi5oZWFkZXJzWydTZWMtV2ViU29j
a2V0LVByb3RvY29sJ10gPSAnaWxsZWdhbFx4MDlwcm90b2NvbCcKLSAgICAgICAgYmFkX2Nhc2Vz
LmFwcGVuZCgoJ0lsbGVnYWwgU2VjLVdlYlNvY2tldC1Qcm90b2NvbCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3RfZGVmLCA0MDAsIFRydWUpKQotCi0gICAgICAgIHJlcXVlc3Rf
ZGVmID0gX2NyZWF0ZV9nb29kX3JlcXVlc3RfZGVmKCkKLSAgICAgICAgcmVxdWVzdF9kZWYuaGVh
ZGVyc1snU2VjLVdlYlNvY2tldC1Qcm90b2NvbCddID0gJycKLSAgICAgICAgYmFkX2Nhc2VzLmFw
cGVuZCgoJ0VtcHR5IFNlYy1XZWJTb2NrZXQtUHJvdG9jb2wnLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0X2RlZiwgNDAwLCBUcnVlKSkKLQotICAgICAgICBmb3IgKGNhc2VfbmFt
ZSwgcmVxdWVzdF9kZWYsIGV4cGVjdGVkX3N0YXR1cywKLSAgICAgICAgICAgICBleHBlY3RfaGFu
ZHNoYWtlX2V4Y2VwdGlvbikgaW4gYmFkX2Nhc2VzOgotICAgICAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZikKLSAgICAgICAgICAgIGhhbmRzaGFrZXIgPSBIYW5k
c2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAg
ICAgc2VsZi5mYWlsKCdObyBleGNlcHRpb24gdGhyb3duIGZvciBcJyVzXCcgY2FzZScgJSBjYXNl
X25hbWUpCi0gICAgICAgICAgICBleGNlcHQgSGFuZHNoYWtlRXhjZXB0aW9uLCBlOgotICAgICAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShleHBlY3RfaGFuZHNoYWtlX2V4Y2VwdGlvbikKLSAg
ICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX3N0YXR1cywgZS5zdGF0dXMp
Ci0gICAgICAgICAgICBleGNlcHQgVmVyc2lvbkV4Y2VwdGlvbiwgZToKLSAgICAgICAgICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGV4cGVjdF9oYW5kc2hha2VfZXhjZXB0aW9uKQotCi0KLWlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaGFuZHNoYWtlX2h5Ymkw
MC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaTAwLnB5CmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3M2Y5ZjI3Y2EyZDk0MjFiMjMwMTVmNThjODkzYWNmMWRjMDA5
ZGVmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaTAwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTE2
ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMSwgR29v
Z2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQot
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQot
IiIiVGVzdHMgZm9yIGhhbmRzaGFrZS5oeWJpMDAgbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0
dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUg
bW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuaGFuZHNoYWtl
Ll9iYXNlIGltcG9ydCBIYW5kc2hha2VFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5oeWJpMDAgaW1wb3J0IEhhbmRzaGFrZXIKLWZyb20gbW9kX3B5d2Vic29ja2V0Lmhh
bmRzaGFrZS5oeWJpMDAgaW1wb3J0IF92YWxpZGF0ZV9zdWJwcm90b2NvbAotZnJvbSB0ZXN0IGlt
cG9ydCBtb2NrCi0KLQotX1RFU1RfS0VZMSA9ICc0IEAxICA0NjU0NnhXJTBsIDEgNScKLV9URVNU
X0tFWTIgPSAnMTI5OTggNSBZMyAxICAuUDAwJwotX1RFU1RfS0VZMyA9ICdebjpkc1s0VScKLV9U
RVNUX0NIQUxMRU5HRV9SRVNQT05TRSA9ICc4aktTXCd5OkcqQ28sV3hhLScKLQotCi1fR09PRF9S
RVFVRVNUID0gKAotICAgIDgwLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAgewotICAg
ICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3Jh
ZGUnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAg
J1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUnOiAn
V2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0g
ICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNU
X0tFWTMpCi0KLV9HT09EX1JFUVVFU1RfQ0FQSVRBTElaRURfSEVBREVSX1ZBTFVFUyA9ICgKLSAg
ICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAgICAgICAgJ0hvc3QnOiAn
ZXhhbXBsZS5jb20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVUEdSQURFJywKLSAgICAgICAg
J1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICdTZWMtV2ViU29ja2V0
LVByb3RvY29sJzogJ3NhbXBsZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dFQlNPQ0tFVCcsCi0g
ICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAnT3JpZ2lu
JzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0gICAgfSwKLSAgICBfVEVTVF9LRVkzKQotCi1fR09P
RF9SRVFVRVNUX0NBU0VfTUlYRURfSEVBREVSX05BTUVTID0gKAotICAgIDgwLAotICAgICdHRVQn
LAotICAgICcvZGVtbycsCi0gICAgewotICAgICAgICAnaE9zVCc6ICdleGFtcGxlLmNvbScsCi0g
ICAgICAgICdjT25OZUN0SW9OJzogJ1VwZ3JhZGUnLAotICAgICAgICAnc0VjLXdFYnNPY0tlVC1r
RXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ3NFYy13RWJzT2NLZVQtcFJvVG9Db0wnOiAnc2Ft
cGxlJywKLSAgICAgICAgJ3VQZ1JhRGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgJ3NFYy13RWJz
T2NLZVQta0V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdvUmlHaU4nOiAnaHR0cDovL2V4YW1w
bGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFU1BPTlNFX0RFRkFV
TFRfUE9SVCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hh
a2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBV
cGdyYWRlXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFtcGxlLmNv
bS9kZW1vXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNv
bVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xy
XG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFU1BPTlNFX1NF
Q1VSRSA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2Vc
clxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdy
YWRlXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3NzOi8vZXhhbXBsZS5jb20v
ZGVtb1xyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21c
clxuJwotICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxu
JyArCi0gICAgX1RFU1RfQ0hBTExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVFVRVNUX05PTkRF
RkFVTFRfUE9SVCA9ICgKLSAgICA4MDgxLAotICAgICdHRVQnLAotICAgICcvZGVtbycsCi0gICAg
ewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbTo4MDgxJywKLSAgICAgICAgJ0Nvbm5lY3Rp
b24nOiAnVXBncmFkZScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVky
LAotICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAn
VXBncmFkZSc6ICdXZWJTb2NrZXQnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzogX1RF
U1RfS0VZMSwKLSAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgIH0s
Ci0gICAgX1RFU1RfS0VZMykKLQotX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JUID0gKAot
ICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCi0gICAg
J1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwot
ICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xy
XG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwot
ICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sOiBzYW1wbGVcclxuJwotICAgICdcclxuJyArCi0g
ICAgX1RFU1RfQ0hBTExFTkdFX1JFU1BPTlNFKQotCi1fR09PRF9SRVNQT05TRV9TRUNVUkVfTk9O
REVGID0gKAotICAgICdIVFRQLzEuMSAxMDEgV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxy
XG4nCi0gICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCi0gICAgJ0Nvbm5lY3Rpb246IFVwZ3Jh
ZGVcclxuJwotICAgICdTZWMtV2ViU29ja2V0LUxvY2F0aW9uOiB3c3M6Ly9leGFtcGxlLmNvbTo4
MDgxL2RlbW9cclxuJwotICAgICdTZWMtV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUu
Y29tXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKLSAgICAn
XHJcbicgKwotICAgIF9URVNUX0NIQUxMRU5HRV9SRVNQT05TRSkKLQotX0dPT0RfUkVRVUVTVF9O
T19QUk9UT0NPTCA9ICgKLSAgICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsK
LSAgICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdV
cGdyYWRlJywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAg
ICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEn
OiBfVEVTVF9LRVkxLAotICAgICAgICAnT3JpZ2luJzogJ2h0dHA6Ly9leGFtcGxlLmNvbScsCi0g
ICAgfSwKLSAgICBfVEVTVF9LRVkzKQotCi1fR09PRF9SRVNQT05TRV9OT19QUk9UT0NPTCA9ICgK
LSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAg
ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicK
LSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicK
LSAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAg
J1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0UpCi0KLV9HT09EX1JFUVVFU1Rf
V0lUSF9PUFRJT05BTF9IRUFERVJTID0gKAotICAgIDgwLAotICAgICdHRVQnLAotICAgICcvZGVt
bycsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICdDb25u
ZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1Rf
S0VZMiwKLSAgICAgICAgJ0VtcHR5VmFsdWUnOiAnJywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQt
UHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ0FLZXknOiAnQVZhbHVlJywKLSAgICAgICAg
J1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9U
RVNUX0tFWTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9
LAotICAgIF9URVNUX0tFWTMpCi0KLSMgVE9ETyh0eW9zaGlubyk6IEluY2x1ZGUgXHIgXG4gaW4g
a2V5MywgY2hhbGxlbmdlIHJlc3BvbnNlLgotCi1fR09PRF9SRVFVRVNUX1dJVEhfTk9OUFJJTlRB
QkxFX0tFWSA9ICgKLSAgICA4MCwKLSAgICAnR0VUJywKLSAgICAnL2RlbW8nLAotICAgIHsKLSAg
ICAgICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdy
YWRlJywKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6ICd5ICBSMiA0OCBRMU80ICBlfEJW
MyBpNSAxICB1LSA2NScsCi0gICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ3NhbXBs
ZScsCi0gICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICdTZWMtV2ViU29j
a2V0LUtleTEnOiAnMzYgNyAgIDc0IGkgIDkyIDJcJ20gOSAwRycsCi0gICAgICAgICdPcmlnaW4n
OiAnaHR0cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgICcnLmpvaW4obWFwKGNociwgWzB4
MDEsIDB4ZDEsIDB4ZGQsIDB4M2IsIDB4ZDEsIDB4NTYsIDB4NjMsIDB4ZmZdKSkpCi0KLV9HT09E
X1JFU1BPTlNFX1dJVEhfTk9OUFJJTlRBQkxFX0tFWSA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdl
YlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRc
clxuJwotICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1M
b2NhdGlvbjogd3M6Ly9leGFtcGxlLmNvbS9kZW1vXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1P
cmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9j
b2w6IHNhbXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICAnJy5qb2luKG1hcChjaHIsIFsweDBi
LCAweDk5LCAweGZhLCAweDU1LCAweGJkLCAweDAxLCAweDIzLCAweDdiLAotICAgICAgICAgICAg
ICAgICAgICAgIDB4NDUsIDB4YTIsIDB4ZjEsIDB4ZDAsIDB4ODcsIDB4OGEsIDB4ZWUsIDB4ZWJd
KSkpCi0KLV9HT09EX1JFUVVFU1RfV0lUSF9RVUVSWV9QQVJUID0gKAotICAgIDgwLAotICAgICdH
RVQnLAotICAgICcvZGVtbz9lPW1jMicsCi0gICAgewotICAgICAgICAnSG9zdCc6ICdleGFtcGxl
LmNvbScsCi0gICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAnU2VjLVdl
YlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9j
b2wnOiAnc2FtcGxlJywKLSAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAg
J1NlYy1XZWJTb2NrZXQtS2V5MSc6IF9URVNUX0tFWTEsCi0gICAgICAgICdPcmlnaW4nOiAnaHR0
cDovL2V4YW1wbGUuY29tJywKLSAgICB9LAotICAgIF9URVNUX0tFWTMpCi0KLV9HT09EX1JFU1BP
TlNFX1dJVEhfUVVFUllfUEFSVCA9ICgKLSAgICAnSFRUUC8xLjEgMTAxIFdlYlNvY2tldCBQcm90
b2NvbCBIYW5kc2hha2VcclxuJwotICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJwotICAgICdD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1Mb2NhdGlvbjogd3M6
Ly9leGFtcGxlLmNvbS9kZW1vP2U9bWMyXHJcbicKLSAgICAnU2VjLVdlYlNvY2tldC1PcmlnaW46
IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nCi0gICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2w6IHNh
bXBsZVxyXG4nCi0gICAgJ1xyXG4nICsKLSAgICBfVEVTVF9DSEFMTEVOR0VfUkVTUE9OU0UpCi0K
LV9CQURfUkVRVUVTVFMgPSAoCi0gICAgKCAgIyBIVFRQIHJlcXVlc3QKLSAgICAgICAgODAsCi0g
ICAgICAgICdHRVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAn
SG9zdCc6ICd3d3cuZ29vZ2xlLmNvbScsCi0gICAgICAgICAgICAnVXNlci1BZ2VudCc6ICdNb3pp
bGxhLzUuMCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OycKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgJyBlbi1VUzsgcnY6MS45LjEuMykgR2Vja28vMjAwOTA4MjQgRmlyZWZv
eC8zLjUuMycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJyBHVEI2IEdUQkEnLAotICAgICAg
ICAgICAgJ0FjY2VwdCc6ICd0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0
aW9uL3htbDtxPTAuOSwnCi0gICAgICAgICAgICAgICAgICAgICAgJyovKjtxPTAuOCcsCi0gICAg
ICAgICAgICAnQWNjZXB0LUxhbmd1YWdlJzogJ2VuLXVzLGVuO3E9MC41JywKLSAgICAgICAgICAg
ICdBY2NlcHQtRW5jb2RpbmcnOiAnZ3ppcCxkZWZsYXRlJywKLSAgICAgICAgICAgICdBY2NlcHQt
Q2hhcnNldCc6ICdJU08tODg1OS0xLHV0Zi04O3E9MC43LCo7cT0wLjcnLAotICAgICAgICAgICAg
J0tlZXAtQWxpdmUnOiAnMzAwJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ2tlZXAtYWxp
dmUnLAotICAgICAgICB9KSwKLSAgICAoICAjIFdyb25nIG1ldGhvZAotICAgICAgICA4MCwKLSAg
ICAgICAgJ1BPU1QnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAn
SG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRl
JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAg
ICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgICAgICdV
cGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzog
X1RFU1RfS0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywK
LSAgICAgICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0gICAgKCAgIyBNaXNzaW5nIFVwZ3Jh
ZGUKLSAgICAgICAgODAsCi0gICAgICAgICdHRVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAg
ICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29u
bmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBf
VEVTVF9LRVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxl
JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAg
ICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAg
ICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIFdyb25nIFVwZ3JhZGUKLSAgICAgICAgODAsCi0gICAg
ICAgICdHRVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9z
dCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAgICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywK
LSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAg
ICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wnOiAnc2FtcGxlJywKLSAgICAgICAgICAgICdVcGdy
YWRlJzogJ05vbldlYlNvY2tldCcsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkxJzog
X1RFU1RfS0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAnaHR0cDovL2V4YW1wbGUuY29tJywK
LSAgICAgICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0gICAgKCAgIyBFbXB0eSBXZWJTb2Nr
ZXQtUHJvdG9jb2wKLSAgICAgICAgODAsCi0gICAgICAgICdHRVQnLAotICAgICAgICAnL2RlbW8n
LAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdleGFtcGxlLmNvbScsCi0gICAgICAg
ICAgICAnQ29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0
LUtleTInOiBfVEVTVF9LRVkyLAotICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtUHJvdG9jb2wn
OiAnJywKLSAgICAgICAgICAgICdVcGdyYWRlJzogJ1dlYlNvY2tldCcsCi0gICAgICAgICAgICAn
U2VjLVdlYlNvY2tldC1LZXkxJzogX1RFU1RfS0VZMSwKLSAgICAgICAgICAgICdPcmlnaW4nOiAn
aHR0cDovL2V4YW1wbGUuY29tJywKLSAgICAgICAgfSwKLSAgICAgICAgX1RFU1RfS0VZMyksCi0g
ICAgKCAgIyBXcm9uZyBwb3J0IG51bWJlciBmb3JtYXQKLSAgICAgICAgODAsCi0gICAgICAgICdH
RVQnLAotICAgICAgICAnL2RlbW8nLAotICAgICAgICB7Ci0gICAgICAgICAgICAnSG9zdCc6ICdl
eGFtcGxlLmNvbToweDUwJywKLSAgICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAot
ICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAg
ICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3Jh
ZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVT
VF9LRVkxLAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAg
ICAgICB9LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSAgICAoICAjIEhlYWRlci9jb25uZWN0aW9u
IHBvcnQgbWlzbWF0Y2gKLSAgICAgICAgODA4MCwKLSAgICAgICAgJ0dFVCcsCi0gICAgICAgICcv
ZGVtbycsCi0gICAgICAgIHsKLSAgICAgICAgICAgICdIb3N0JzogJ2V4YW1wbGUuY29tJywKLSAg
ICAgICAgICAgICdDb25uZWN0aW9uJzogJ1VwZ3JhZGUnLAotICAgICAgICAgICAgJ1NlYy1XZWJT
b2NrZXQtS2V5Mic6IF9URVNUX0tFWTIsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90
b2NvbCc6ICdzYW1wbGUnLAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAg
J09yaWdpbic6ICdodHRwOi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVT
VF9LRVkzKSwKLSAgICAoICAjIElsbGVnYWwgV2ViU29ja2V0LVByb3RvY29sCi0gICAgICAgIDgw
LAotICAgICAgICAnR0VUJywKLSAgICAgICAgJy9kZW1vJywKLSAgICAgICAgewotICAgICAgICAg
ICAgJ0hvc3QnOiAnZXhhbXBsZS5jb20nLAotICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOiAnVXBn
cmFkZScsCi0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1LZXkyJzogX1RFU1RfS0VZMiwKLSAg
ICAgICAgICAgICdTZWMtV2ViU29ja2V0LVByb3RvY29sJzogJ2lsbGVnYWxceDA5cHJvdG9jb2wn
LAotICAgICAgICAgICAgJ1VwZ3JhZGUnOiAnV2ViU29ja2V0JywKLSAgICAgICAgICAgICdTZWMt
V2ViU29ja2V0LUtleTEnOiBfVEVTVF9LRVkxLAotICAgICAgICAgICAgJ09yaWdpbic6ICdodHRw
Oi8vZXhhbXBsZS5jb20nLAotICAgICAgICB9LAotICAgICAgICBfVEVTVF9LRVkzKSwKLSkKLQot
Ci1kZWYgX2NyZWF0ZV9yZXF1ZXN0KHJlcXVlc3RfZGVmKToKLSAgICBkYXRhID0gJycKLSAgICBp
ZiBsZW4ocmVxdWVzdF9kZWYpID4gNDoKLSAgICAgICAgZGF0YSA9IHJlcXVlc3RfZGVmWzRdCi0g
ICAgY29ubiA9IG1vY2suTW9ja0Nvbm4oZGF0YSkKLSAgICBjb25uLmxvY2FsX2FkZHIgPSAoJzAu
MC4wLjAnLCByZXF1ZXN0X2RlZlswXSkKLSAgICByZXR1cm4gbW9jay5Nb2NrUmVxdWVzdCgKLSAg
ICAgICAgbWV0aG9kPXJlcXVlc3RfZGVmWzFdLAotICAgICAgICB1cmk9cmVxdWVzdF9kZWZbMl0s
Ci0gICAgICAgIGhlYWRlcnNfaW49cmVxdWVzdF9kZWZbM10sCi0gICAgICAgIGNvbm5lY3Rpb249
Y29ubikKLQotCi1kZWYgX2NyZWF0ZV9nZXRfbWVtb3JpemVkX2xpbmVzKGxpbmVzKToKLSAgICAi
IiJDcmVhdGVzIGEgZnVuY3Rpb24gdGhhdCByZXR1cm5zIHRoZSBnaXZlbiBzdHJpbmcuIiIiCi0K
LSAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcygpOgotICAgICAgICByZXR1cm4gbGluZXMKLSAg
ICByZXR1cm4gZ2V0X21lbW9yaXplZF9saW5lcwotCi0KLWRlZiBfY3JlYXRlX3JlcXVlc3RzX3dp
dGhfbGluZXMocmVxdWVzdF9saW5lc19zZXQpOgotICAgIHJlcXVlc3RzID0gW10KLSAgICBmb3Ig
bGluZXMgaW4gcmVxdWVzdF9saW5lc19zZXQ6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoX0dPT0RfUkVRVUVTVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF9tZW1v
cml6ZWRfbGluZXMgPSBfY3JlYXRlX2dldF9tZW1vcml6ZWRfbGluZXMoCi0gICAgICAgICAgICAg
ICAgbGluZXMpCi0gICAgICAgIHJlcXVlc3RzLmFwcGVuZChyZXF1ZXN0KQotICAgIHJldHVybiBy
ZXF1ZXN0cwotCi0KLWNsYXNzIEh5QmkwMEhhbmRzaGFrZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9kZWZhdWx0X3BvcnQoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVCkKLSAgICAgICAgaGFu
ZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAg
ICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
X0dPT0RfUkVTUE9OU0VfREVGQVVMVF9QT1JULAotICAgICAgICAgICAgICAgICAgICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnL2RlbW8nLCByZXF1ZXN0LndzX3Jlc291cmNlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdodHRwOi8vZXhhbXBsZS5jb20nLCByZXF1ZXN0LndzX29yaWdpbikKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnd3M6Ly9leGFtcGxlLmNvbS9kZW1vJywgcmVxdWVzdC53c19sb2NhdGlvbikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkK
LQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9jYXBpdGFsaXplZF9oZWFkZXJfdmFsdWVzKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfQ0FQ
SVRBTElaRURfSEVBREVSX1ZBTFVFUykKLSAgICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIo
cmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfREVGQVVM
VF9QT1JULAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0
dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF9jYXNlX21peGVkX2hlYWRl
cl9uYW1lcyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9S
RVFVRVNUX0NBU0VfTUlYRURfSEVBREVSX05BTUVTKQotICAgICAgICBoYW5kc2hha2VyID0gSGFu
ZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0gICAgICAgIGhhbmRzaGFr
ZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfR09PRF9SRVNQT05T
RV9ERUZBVUxUX1BPUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X3NlY3VyZV9k
ZWZhdWx0X3BvcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dP
T0RfUkVRVUVTVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmxvY2FsX2FkZHIgPSAoJzAu
MC4wLjAnLCA0NDMpCi0gICAgICAgIHJlcXVlc3QuaXNfaHR0cHNfID0gVHJ1ZQotICAgICAgICBo
YW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRjaGVyKCkpCi0g
ICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChfR09PRF9SRVNQT05TRV9TRUNVUkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdz
YW1wbGUnLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0
X25vbmRlZmF1bHRfcG9ydChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dChfR09PRF9SRVFVRVNUX05PTkRFRkFVTFRfUE9SVCkKLSAgICAgICAgaGFuZHNoYWtlciA9IEhh
bmRzaGFrZXIocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX05PTkRFRkFVTFRf
UE9SVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3Nf
cHJvdG9jb2wpCi0KLSAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3Rfc2VjdXJlX25vbl9kZWZhdWx0
X3BvcnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVR
VUVTVF9OT05ERUZBVUxUX1BPUlQpCi0gICAgICAgIHJlcXVlc3QuaXNfaHR0cHNfID0gVHJ1ZQot
ICAgICAgICBoYW5kc2hha2VyID0gSGFuZHNoYWtlcihyZXF1ZXN0LCBtb2NrLk1vY2tEaXNwYXRj
aGVyKCkpCi0gICAgICAgIGhhbmRzaGFrZXIuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChfR09PRF9SRVNQT05TRV9TRUNVUkVfTk9OREVGLAotICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAgIGRlZiB0
ZXN0X2dvb2RfcmVxdWVzdF9kZWZhdWx0X25vX3Byb3RvY29sKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KF9HT09EX1JFUVVFU1RfTk9fUFJPVE9DT0wpCi0gICAgICAg
IGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkK
LSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKF9HT09EX1JFU1BPTlNFX05PX1BST1RPQ09MLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChOb25lLCByZXF1ZXN0LndzX3Byb3RvY29sKQotCi0gICAgZGVmIHRlc3RfZ29vZF9yZXF1
ZXN0X29wdGlvbmFsX2hlYWRlcnMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoX0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFMX0hFQURFUlMpCi0gICAgICAgIGhhbmRz
aGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKLSAgICAg
ICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdB
VmFsdWUnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuaGVhZGVyc19pblsnQUtl
eSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLAotICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuaGVhZGVyc19pblsnRW1wdHlWYWx1ZSddKQotCi0gICAgZGVmIHRlc3RfZ29v
ZF9yZXF1ZXN0X3dpdGhfbm9ucHJpbnRhYmxlX2tleShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX1dJVEhfTk9OUFJJTlRBQkxFX0tFWSkKLSAg
ICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hl
cigpKQotICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfV0lUSF9OT05QUklOVEFCTEVfS0VZLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKLQotICAg
IGRlZiB0ZXN0X2dvb2RfcmVxdWVzdF93aXRoX3F1ZXJ5X3BhcnQoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9XSVRIX1FVRVJZX1BBUlQpCi0g
ICAgICAgIGhhbmRzaGFrZXIgPSBIYW5kc2hha2VyKHJlcXVlc3QsIG1vY2suTW9ja0Rpc3BhdGNo
ZXIoKSkKLSAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX1dJVEhfUVVFUllfUEFSVCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ3dzOi8vZXhhbXBsZS5jb20vZGVtbz9lPW1jMicsIHJlcXVlc3Qud3Nf
bG9jYXRpb24pCi0KLSAgICBkZWYgdGVzdF9iYWRfcmVxdWVzdHMoc2VsZik6Ci0gICAgICAgIGZv
ciByZXF1ZXN0IGluIG1hcChfY3JlYXRlX3JlcXVlc3QsIF9CQURfUkVRVUVTVFMpOgotICAgICAg
ICAgICAgaGFuZHNoYWtlciA9IEhhbmRzaGFrZXIocmVxdWVzdCwgbW9jay5Nb2NrRGlzcGF0Y2hl
cigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0aW9uLCBo
YW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKLQotCi1jbGFzcyBIeUJpMDBWYWxpZGF0ZVN1YnByb3Rv
Y29sVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfdmFsaWRhdGVfc3VicHJv
dG9jb2woc2VsZik6Ci0gICAgICAgICMgc2hvdWxkIHN1Y2NlZWQuCi0gICAgICAgIF92YWxpZGF0
ZV9zdWJwcm90b2NvbCgnc2FtcGxlJykKLSAgICAgICAgX3ZhbGlkYXRlX3N1YnByb3RvY29sKCdT
YW1wbGUnKQotICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2woJ3NhbXBsZVx4N2Vwcm90b2Nv
bCcpCi0gICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCgnc2FtcGxlXHgyMHByb3RvY29sJykK
LQotICAgICAgICAjIHNob3VsZCBmYWlsLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhIYW5k
c2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIF92YWxpZGF0ZV9zdWJw
cm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKEhhbmRzaGFrZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
X3ZhbGlkYXRlX3N1YnByb3RvY29sLAotICAgICAgICAgICAgICAgICAgICAgICAgICAnc2FtcGxl
XHgxOXByb3RvY29sJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSGFuZHNoYWtlRXhjZXB0
aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfdmFsaWRhdGVfc3VicHJvdG9jb2wsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICdzYW1wbGVceDdmcHJvdG9jb2wnKQotICAgICAgICBz
ZWxmLmFzc2VydFJhaXNlcyhIYW5kc2hha2VFeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgIF92YWxpZGF0ZV9zdWJwcm90b2NvbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
IyAiSmFwYW4iIGluIEphcGFuZXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHUnXHU2NWU1
XHU2NzJjJykKLQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1h
aW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90
ZXN0X2h0dHBfaGVhZGVyX3V0aWwucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJf
dXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM2ZGM1N2MzNzMxMDcxZmUy
OTAxOTE5ZTMzZjI0YzFiNTU5ZjYwNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBD
b3B5cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0j
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIGh0dHBfaGVhZGVyX3V0aWwgbW9kdWxlLiIi
IgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaHR0
cF9oZWFkZXJfdXRpbAotCi0KLWNsYXNzIFVuaXRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAg
ICAiIiJBIHVuaXR0ZXN0IGZvciBodHRwX2hlYWRlcl91dGlsIG1vZHVsZS4iIiIKLQotICAgIGRl
ZiB0ZXN0X3BhcnNlX3JlbGF0aXZlX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVz
b3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnL3dzL3Rlc3QnKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKE5vbmUsIGhvc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkK
LQotICAgIGRlZiB0ZXN0X3BhcnNlX2Fic29sdXRlX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwg
cG9ydCwgcmVzb3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgKLSAgICAgICAgICAg
ICd3czovL2xvY2FsaG9zdDoxMDA4MC93cy90ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnbG9jYWxob3N0JywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMDA4MCwgcG9y
dCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkKLQotICAg
ICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAot
ICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb20vd3MvdGVzdCcpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4
MCwgcG9ydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL3dzL3Rlc3QnLCByZXNvdXJjZSkK
LQotICAgICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2Vf
dXJpKAotICAgICAgICAgICAgJ3dzczovL2V4YW1wbGUuY29tLycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg0
NDMsIHBvcnQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy8nLCByZXNvdXJjZSkKLQotICAg
ICAgICBob3N0LCBwb3J0LCByZXNvdXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKAot
ICAgICAgICAgICAgJ3dzOi8vZXhhbXBsZS5jb206ODA4MCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ2V4YW1wbGUuY29tJywgaG9zdCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCg4MDgw
LCBwb3J0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvJywgcmVzb3VyY2UpCi0KLSAgICBk
ZWYgdGVzdF9wYXJzZV9pbnZhbGlkX3VyaShzZWxmKToKLSAgICAgICAgaG9zdCwgcG9ydCwgcmVz
b3VyY2UgPSBodHRwX2hlYWRlcl91dGlsLnBhcnNlX3VyaSgnd3M6Ly8vJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCByZXNvdXJjZSkKLQotICAgICAgICBob3N0LCBwb3J0LCByZXNv
dXJjZSA9IGh0dHBfaGVhZGVyX3V0aWwucGFyc2VfdXJpKCd3czovL2xvY2FsaG9zdDonKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlc291cmNlKQotCi0gICAgICAgIGhvc3QsIHBv
cnQsIHJlc291cmNlID0gaHR0cF9oZWFkZXJfdXRpbC5wYXJzZV91cmkoJ3dzOi8vbG9jYWxob3N0
Oi93cycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgcmVzb3VyY2UpCi0KLQotaWYg
X19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmls
ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGYxYjhlZWY0MzM3OGE5YjAwNjI1ZjIyMGM5N2ZlMjJmNzQwYThm
Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RfbWVtb3JpemluZ2ZpbGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAs
MCBAQAotIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jCi0jIENvcHlyaWdodCAyMDExLCBHb29nbGUg
SW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0j
Ci0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
Ci0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi0iIiJU
ZXN0cyBmb3IgbWVtb3JpemluZ2ZpbGUgbW9kdWxlLiIiIgotCi0KLWltcG9ydCBTdHJpbmdJTwot
aW1wb3J0IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRo
IHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tl
dCBpbXBvcnQgbWVtb3JpemluZ2ZpbGUKLQotCi1jbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgbWVtb3JpemluZ2ZpbGUgbW9kdWxlLiIiIgot
Ci0gICAgZGVmIGNoZWNrKHNlbGYsIG1lbW9yaXppbmdfZmlsZSwgbnVtX3JlYWQsIGV4cGVjdGVk
X2xpc3QpOgotICAgICAgICBmb3IgdW51c2VkIGluIHJhbmdlKG51bV9yZWFkKToKLSAgICAgICAg
ICAgIG1lbW9yaXppbmdfZmlsZS5yZWFkbGluZSgpCi0gICAgICAgIGFjdHVhbF9saXN0ID0gbWVt
b3JpemluZ19maWxlLmdldF9tZW1vcml6ZWRfbGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihleHBlY3RlZF9saXN0KSwgbGVuKGFjdHVhbF9saXN0KSkKLSAgICAgICAgZm9yIGV4
cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX2xpc3QsIGFjdHVhbF9saXN0KToKLSAgICAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIGFjdHVhbCkKLQotICAgIGRlZiBjaGVj
a193aXRoX3NpemUoc2VsZiwgbWVtb3JpemluZ19maWxlLCByZWFkX3NpemUsIGV4cGVjdGVkX2xp
c3QpOgotICAgICAgICByZWFkX2xpc3QgPSBbXQotICAgICAgICByZWFkX2xpbmUgPSAnJwotICAg
ICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgbGluZSA9IG1lbW9yaXppbmdfZmlsZS5yZWFk
bGluZShyZWFkX3NpemUpCi0gICAgICAgICAgICBsaW5lX2xlbmd0aCA9IGxlbihsaW5lKQotICAg
ICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxpbmVfbGVuZ3RoIDw9IHJlYWRfc2l6ZSkKLSAgICAg
ICAgICAgIGlmIGxpbmVfbGVuZ3RoID09IDA6Ci0gICAgICAgICAgICAgICAgaWYgcmVhZF9saW5l
ICE9ICcnOgotICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QuYXBwZW5kKHJlYWRfbGluZSkK
LSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgcmVhZF9saW5lICs9IGxpbmUKLSAg
ICAgICAgICAgIGlmIGxpbmVbbGluZV9sZW5ndGggLSAxXSA9PSAnXG4nOgotICAgICAgICAgICAg
ICAgIHJlYWRfbGlzdC5hcHBlbmQocmVhZF9saW5lKQotICAgICAgICAgICAgICAgIHJlYWRfbGlu
ZSA9ICcnCi0gICAgICAgIGFjdHVhbF9saXN0ID0gbWVtb3JpemluZ19maWxlLmdldF9tZW1vcml6
ZWRfbGluZXMoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihleHBlY3RlZF9saXN0KSwg
bGVuKGFjdHVhbF9saXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRf
bGlzdCksIGxlbihyZWFkX2xpc3QpKQotICAgICAgICBmb3IgZXhwZWN0ZWQsIGFjdHVhbCwgcmVh
ZCBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICByZWFkX2xpc3QpOgotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChl
eHBlY3RlZCwgcmVhZCkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGluZXMoc2VsZik6
Ci0gICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxl
KFN0cmluZ0lPLlN0cmluZ0lPKAotICAgICAgICAgICAgICAgICdIZWxsb1xuV29ybGRcbldlbGNv
bWUnKSkKLSAgICAgICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9cbics
ICdXb3JsZFxuJywgJ1dlbGNvbWUnXSkKLQotICAgIGRlZiB0ZXN0X2dldF9tZW1vcml6ZWRfbGlu
ZXNfbGltaXRfbWVtb3JpemVkX2xpbmVzKHNlbGYpOgotICAgICAgICBtZW1vcml6aW5nX2ZpbGUg
PSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJpbmdJTygKLSAgICAg
ICAgICAgICAgICAnSGVsbG9cbldvcmxkXG5XZWxjb21lJyksIDIpCi0gICAgICAgIHNlbGYuY2hl
Y2sobWVtb3JpemluZ19maWxlLCAzLCBbJ0hlbGxvXG4nLCAnV29ybGRcbiddKQotCi0gICAgZGVm
IHRlc3RfZ2V0X21lbW9yaXplZF9saW5lc19lbXB0eV9maWxlKHNlbGYpOgotICAgICAgICBtZW1v
cml6aW5nX2ZpbGUgPSBtZW1vcml6aW5nZmlsZS5NZW1vcml6aW5nRmlsZShTdHJpbmdJTy5TdHJp
bmdJTygKLSAgICAgICAgICAgICAgICAnJykpCi0gICAgICAgIHNlbGYuY2hlY2sobWVtb3Jpemlu
Z19maWxlLCAxMCwgW10pCi0KLSAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX3dpdGhf
c2l6ZShzZWxmKToKLSAgICAgICAgZm9yIHNpemUgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAg
ICAgbWVtb3JpemluZ19maWxlID0gbWVtb3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5n
SU8uU3RyaW5nSU8oCi0gICAgICAgICAgICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScpKQot
ICAgICAgICAgICAgc2VsZi5jaGVja193aXRoX3NpemUobWVtb3JpemluZ19maWxlLCBzaXplLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydIZWxsb1xuJywgJ1dvcmxkXG4nLCAn
V2VsY29tZSddKQotCi1pZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1h
aW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90
ZXN0X21vY2sucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbW9jay5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggN2RjMjNhNzNkOGZiMWEwN2FlYjNlNWFlOTQwMmNjODZiOGZjYzM2Ni4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L3Rlc3RfbW9jay5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi0jIS91c3Iv
YmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtb2Nr
IG1vZHVsZS4iIiIKLQotCi1pbXBvcnQgUXVldWUKLWltcG9ydCB0aHJlYWRpbmcKLWltcG9ydCB1
bml0dGVzdAotCi1pbXBvcnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2Nh
dGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQotZnJvbSB0ZXN0IGltcG9ydCBtb2NrCi0KLQot
Y2xhc3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0ZXN0
IGZvciBNb2NrQ29ubiBjbGFzcy4iIiIKLQotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAg
c2VsZi5fY29ubiA9IG1vY2suTW9ja0Nvbm4oJ0FCQ1xyXG5ERUZHXHJcblxyXG5ISUpLJykKLQot
ICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdB
QkNcclxuJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdERUZHXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnSElKSycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnJywgc2VsZi5fY29ubi5yZWFkbGluZSgpKQotCi0gICAgZGVmIHRlc3RfcmVhZChzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQUJDXHJcbkQnLCBzZWxmLl9jb25uLnJlYWQo
NikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0VGR1xyXG5cclxuSEknLCBzZWxmLl9jb25u
LnJlYWQoOSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0pLJywgc2VsZi5fY29ubi5yZWFk
KDEwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgc2VsZi5fY29ubi5yZWFkKDEwKSkK
LQotICAgIGRlZiB0ZXN0X3JlYWRfYW5kX3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdBQkNcclxuRCcsIHNlbGYuX2Nvbm4ucmVhZCg2KSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnRUZHXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnXHJcbkhJSksnLCBzZWxmLl9jb25uLnJlYWQoOSkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUoKSkKLQotICAgIGRlZiB0ZXN0
X3dyaXRlKHNlbGYpOgotICAgICAgICBzZWxmLl9jb25uLndyaXRlKCdIZWxsb1xyXG4nKQotICAg
ICAgICBzZWxmLl9jb25uLndyaXRlKCdXb3JsZFxyXG4nKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdIZWxsb1xyXG5Xb3JsZFxyXG4nLCBzZWxmLl9jb25uLndyaXR0ZW5fZGF0YSgpKQotCi0K
LWNsYXNzIE1vY2tCbG9ja2luZ0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJB
IHVuaXR0ZXN0IGZvciBNb2NrQmxvY2tpbmdDb25uIGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3Rf
cmVhZChzZWxmKToKLSAgICAgICAgIiIiVGVzdHMgdGhhdCBkYXRhIHB1dCB0byBNb2NrQmxvY2tp
bmdDb25uIGJ5IHB1dF9ieXRlcyBtZXRob2QgY2FuIGJlCi0gICAgICAgIHJlYWQgZnJvbSBpdC4K
LSAgICAgICAgIiIiCi0KLSAgICAgICAgY2xhc3MgTGluZVJlYWRlcih0aHJlYWRpbmcuVGhyZWFk
KToKLSAgICAgICAgICAgICIiIkEgdGVzdCBjbGFzcyB0aGF0IGxhdW5jaGVzIGEgdGhyZWFkLCBj
YWxscyByZWFkbGluZSBvbiB0aGUKLSAgICAgICAgICAgIHNwZWNpZmllZCBjb25uIHJlcGVhdGVk
bHkgYW5kIHB1dHMgdGhlIHJlYWQgZGF0YSB0byB0aGUgc3BlY2lmaWVkCi0gICAgICAgICAgICBx
dWV1ZS4KLSAgICAgICAgICAgICIiIgotCi0gICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwg
Y29ubiwgcXVldWUpOgotICAgICAgICAgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18o
c2VsZikKLSAgICAgICAgICAgICAgICBzZWxmLl9xdWV1ZSA9IHF1ZXVlCi0gICAgICAgICAgICAg
ICAgc2VsZi5fY29ubiA9IGNvbm4KLSAgICAgICAgICAgICAgICBzZWxmLnNldERhZW1vbihUcnVl
KQotICAgICAgICAgICAgICAgIHNlbGYuc3RhcnQoKQotCi0gICAgICAgICAgICBkZWYgcnVuKHNl
bGYpOgotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIGRh
dGEgPSBzZWxmLl9jb25uLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fcXVl
dWUucHV0KGRhdGEpCi0KLSAgICAgICAgY29ubiA9IG1vY2suTW9ja0Jsb2NraW5nQ29ubigpCi0g
ICAgICAgIHF1ZXVlID0gUXVldWUuUXVldWUoKQotICAgICAgICByZWFkZXIgPSBMaW5lUmVhZGVy
KGNvbm4sIHF1ZXVlKQotICAgICAgICBzZWxmLmZhaWxVbmxlc3MocXVldWUuZW1wdHkoKSkKLSAg
ICAgICAgY29ubi5wdXRfYnl0ZXMoJ0ZvbyBiYXJcclxuJykKLSAgICAgICAgcmVhZCA9IHF1ZXVl
LmdldCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZvbyBiYXJcclxuJywgcmVhZCkKLQot
Ci1jbGFzcyBNb2NrVGFibGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJBIHVuaXR0
ZXN0IGZvciBNb2NrVGFibGUgY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV9k
aWN0KHNlbGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKHsnS2V5JzogJ1ZhbHVl
J30pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0KLSAgICBk
ZWYgdGVzdF9jcmVhdGVfZnJvbV9saXN0KHNlbGYpOgotICAgICAgICB0YWJsZSA9IG1vY2suTW9j
a1RhYmxlKFsoJ0tleScsICdWYWx1ZScpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFs
dWUnLCB0YWJsZS5nZXQoJ0tFWScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScs
IHRhYmxlWydrZXknXSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9tX3R1cGxlKHNlbGYpOgot
ICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCgoJ0tleScsICdWYWx1ZScpLCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdLRVknKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0KLSAgICBkZWYgdGVzdF9z
ZXRfYW5kX2dldChzZWxmKToKLSAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJsZSgpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgdGFibGUuZ2V0KCdLZXknKSkKLSAgICAgICAgdGFi
bGVbJ0tleSddID0gJ1ZhbHVlJwotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRh
YmxlLmdldCgnS2V5JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUu
Z2V0KCdrZXknKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQo
J0tFWScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScsIHRhYmxlWydLZXknXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tFWSddKQotCi0KLWlmIF9fbmFtZV9f
ID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCi0KLQotIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXNndXRpbC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvdGVzdF9tc2d1dGlsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZmVk
Y2Y5MmY2MWZlOGNkOWU1NjBmMjc0YTg5YTAzYjQzYTcyYmRhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tc2d1dGlsLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMTM1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24K
LSMKLSMgQ29weXJpZ2h0IDIwMTIsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciBtc2d1dGlsIG1vZHVsZS4iIiIK
LQotCi1pbXBvcnQgYXJyYXkKLWltcG9ydCBRdWV1ZQotaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN0
cnVjdAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgemxpYgotCi1pbXBvcnQgc2V0X3N5c19wYXRo
ICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1vZHVsZS4KLQot
ZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IGNvbW1vbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQu
ZXh0ZW5zaW9ucyBpbXBvcnQgRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1v
ZF9weXdlYnNvY2tldC5leHRlbnNpb25zIGltcG9ydCBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNp
b25Qcm9jZXNzb3IKLWZyb20gbW9kX3B5d2Vic29ja2V0LmV4dGVuc2lvbnMgaW1wb3J0IFBlck1l
c3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgbXNndXRpbAotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBJbnZhbGlkVVRG
OEV4Y2VwdGlvbgotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW0KLWZy
b20gbW9kX3B5d2Vic29ja2V0LnN0cmVhbSBpbXBvcnQgU3RyZWFtSGl4aWU3NQotZnJvbSBtb2Rf
cHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1PcHRpb25zCi1mcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgdXRpbAotZnJvbSB0ZXN0IGltcG9ydCBtb2NrCi0KLQotIyBXZSB1c2Ugb25l
IGZpeGVkIG5vbmNlIGZvciB0ZXN0aW5nIGluc3RlYWQgb2YgY3J5cHRvZ3JhcGhpY2FsbHkgc2Vj
dXJlIFBSTkcuCi1fTUFTS0lOR19OT05DRSA9ICdBQkNEJwotCi0KLWRlZiBfbWFza19oeWJpKGZy
YW1lKToKLSAgICBmcmFtZV9rZXkgPSBtYXAob3JkLCBfTUFTS0lOR19OT05DRSkKLSAgICBmcmFt
ZV9rZXlfbGVuID0gbGVuKGZyYW1lX2tleSkKLSAgICByZXN1bHQgPSBhcnJheS5hcnJheSgnQicp
Ci0gICAgcmVzdWx0LmZyb21zdHJpbmcoZnJhbWUpCi0gICAgY291bnQgPSAwCi0gICAgZm9yIGkg
aW4geHJhbmdlKGxlbihyZXN1bHQpKToKLSAgICAgICAgcmVzdWx0W2ldIF49IGZyYW1lX2tleVtj
b3VudF0KLSAgICAgICAgY291bnQgPSAoY291bnQgKyAxKSAlIGZyYW1lX2tleV9sZW4KLSAgICBy
ZXR1cm4gX01BU0tJTkdfTk9OQ0UgKyByZXN1bHQudG9zdHJpbmcoKQotCi0KLWRlZiBfaW5zdGFs
bF9leHRlbnNpb25fcHJvY2Vzc29yKHByb2Nlc3NvciwgcmVxdWVzdCwgc3RyZWFtX29wdGlvbnMp
OgotICAgIHJlc3BvbnNlID0gcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKQotICAg
IGlmIHJlc3BvbnNlIGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNzb3Iuc2V0dXBfc3RyZWFt
X29wdGlvbnMoc3RyZWFtX29wdGlvbnMpCi0gICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3By
b2Nlc3NvcnMuYXBwZW5kKHByb2Nlc3NvcikKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0X2Zyb21f
cmF3ZGF0YSgKLSAgICAgICAgcmVhZF9kYXRhLAotICAgICAgICBkZWZsYXRlX2ZyYW1lX3JlcXVl
c3Q9Tm9uZSwKLSAgICAgICAgcGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0PU5vbmUsCi0g
ICAgICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PU5vbmUpOgotICAgIHJlcSA9IG1vY2su
TW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tDb25uKCcnLmpvaW4ocmVhZF9kYXRhKSkp
Ci0gICAgcmVxLndzX3ZlcnNpb24gPSBjb21tb24uVkVSU0lPTl9IWUJJX0xBVEVTVAotICAgIHJl
cS53c19leHRlbnNpb25fcHJvY2Vzc29ycyA9IFtdCi0KLSAgICBwcm9jZXNzb3IgPSBOb25lCi0g
ICAgaWYgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0IGlzIG5vdCBOb25lOgotICAgICAgICBwcm9jZXNz
b3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3IoZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0
KQotICAgIGVsaWYgcGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0IGlzIG5vdCBOb25lOgot
ICAgICAgICBwcm9jZXNzb3IgPSBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3Io
Ci0gICAgICAgICAgICAgICAgcGVybWVzc2FnZV9jb21wcmVzc2lvbl9yZXF1ZXN0KQotICAgIGVs
aWYgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3QgaXMgbm90IE5vbmU6Ci0gICAgICAgIHByb2Nl
c3NvciA9IFBlck1lc3NhZ2VEZWZsYXRlRXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICAgICAg
ICAgIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0KQotCi0gICAgc3RyZWFtX29wdGlvbnMgPSBT
dHJlYW1PcHRpb25zKCkKLSAgICBpZiBwcm9jZXNzb3IgaXMgbm90IE5vbmU6Ci0gICAgICAgIF9p
bnN0YWxsX2V4dGVuc2lvbl9wcm9jZXNzb3IocHJvY2Vzc29yLCByZXEsIHN0cmVhbV9vcHRpb25z
KQotICAgIHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLQotICAg
IHJldHVybiByZXEKLQotCi1kZWYgX2NyZWF0ZV9yZXF1ZXN0KCpmcmFtZXMpOgotICAgICIiIkNy
ZWF0ZXMgTW9ja1JlcXVlc3QgdXNpbmcgZGF0YSBnaXZlbiBhcyBmcmFtZXMuCi0KLSAgICBmcmFt
ZXMgd2lsbCBiZSByZXR1cm5lZCBvbiBjYWxsaW5nIHJlcXVlc3QuY29ubmVjdGlvbi5yZWFkKCkg
d2hlcmUgcmVxdWVzdAotICAgIGlzIE1vY2tSZXF1ZXN0IHJldHVybmVkIGJ5IHRoaXMgZnVuY3Rp
b24uCi0gICAgIiIiCi0KLSAgICByZWFkX2RhdGEgPSBbXQotICAgIGZvciAoaGVhZGVyLCBib2R5
KSBpbiBmcmFtZXM6Ci0gICAgICAgIHJlYWRfZGF0YS5hcHBlbmQoaGVhZGVyICsgX21hc2tfaHli
aShib2R5KSkKLQotICAgIHJldHVybiBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKHJlYWRf
ZGF0YSkKLQotCi1kZWYgX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCk6Ci0gICAgIiIiQ3JlYXRl
cyBNb2NrUmVxdWVzdC4KLQotICAgIERhdGEgd3JpdHRlbiB0byBhIE1vY2tSZXF1ZXN0IGNhbiBi
ZSByZWFkIG91dCBieSBjYWxsaW5nCi0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0
YSgpLgotICAgICIiIgotCi0gICAgcmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1v
Y2suTW9ja0Jsb2NraW5nQ29ubigpKQotICAgIHJlcS53c192ZXJzaW9uID0gY29tbW9uLlZFUlNJ
T05fSFlCSV9MQVRFU1QKLSAgICBzdHJlYW1fb3B0aW9ucyA9IFN0cmVhbU9wdGlvbnMoKQotICAg
IHJlcS53c19zdHJlYW0gPSBTdHJlYW0ocmVxLCBzdHJlYW1fb3B0aW9ucykKLSAgICByZXR1cm4g
cmVxCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KHJlYWRfZGF0YT0nJyk6Ci0gICAg
cmVxID0gbW9jay5Nb2NrUmVxdWVzdChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4ocmVhZF9kYXRh
KSkKLSAgICByZXEud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJl
cQotCi0KLWRlZiBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpOgotICAgIHJlcSA9
IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKLSAg
ICByZXEud3Nfc3RyZWFtID0gU3RyZWFtSGl4aWU3NShyZXEpCi0gICAgcmV0dXJuIHJlcQotCi0K
LWNsYXNzIEJhc2ljTWVzc2FnZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkJhc2lj
IHRlc3RzIGZvciBTdHJlYW0uIiIiCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdc
eDgxXHgwNUhlbGxvJywgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAg
ICAgIHBheWxvYWQgPSAnYScgKiAxMjUKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsIHBheWxvYWQpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDdkJyArIHBheWxvYWQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVm
IHRlc3Rfc2VuZF9tZWRpdW1fbWVzc2FnZShzZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAq
IDEyNgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRp
bC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgcGF5bG9hZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgnXHg4MVx4N2VceDAwXHg3ZScgKyBwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgICAgICBwYXlsb2FkID0g
J2EnICogKCgxIDw8IDE2KSAtIDEpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Qo
KQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceDgxXHg3ZVx4ZmZceGZmJyArIHBheWxvYWQsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0g
ICAgZGVmIHRlc3Rfc2VuZF9sYXJnZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICBwYXlsb2FkID0g
J2EnICogKDEgPDwgMTYpCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCBwYXlsb2FkKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdceDgxXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4MDBceDAwJyAr
IHBheWxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VuaWNvZGUoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBtc2d1dGlsLnNl
bmRfbWVzc2FnZShyZXF1ZXN0LCB1J1x1NjVlNScpCi0gICAgICAgICMgVSs2NWU1IGlzIGVuY29k
ZWQgYXMgZTYsOTcsYTUgaW4gVVRGLTgKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4
MDNceGU2XHg5N1x4YTUnLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVj
dGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVu
dHMoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKQotICAgICAgICBt
c2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBGYWxzZSkKLSAgICAgICAgbXNn
dXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJyAnLCBGYWxzZSkKLSAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ1dvcmxkJywgRmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2Vu
ZF9tZXNzYWdlKHJlcXVlc3QsICchJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
XHgwMVx4MDVIZWxsb1x4MDBceDAxIFx4MDBceDA1V29ybGRceDgwXHgwMSEnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAg
IGRlZiB0ZXN0X3NlbmRfZnJhZ21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScsIEZhbHNlKQotICAgICAgICBtc2d1
dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnJywgVHJ1ZSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnXHgwMVx4MGNIZWxsbyBXb3JsZCFceDgwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rf
cmVjZWl2ZV9tZXNzYWdlKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KAotICAgICAgICAgICAgKCdceDgxXHg4NScsICdIZWxsbycpLCAoJ1x4ODFceDg2JywgJ1dvcmxk
IScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCEnLCBtc2d1
dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBwYXlsb2FkID0gJ2EnICog
MTI1Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgxXHhmZCcsIHBheWxv
YWQpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9t
ZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZWRpdW1fbWVzc2FnZShz
ZWxmKToKLSAgICAgICAgcGF5bG9hZCA9ICdhJyAqIDEyNgotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ZmVceDAwXHg3ZScsIHBheWxvYWQpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQot
Ci0gICAgICAgIHBheWxvYWQgPSAnYScgKiAoKDEgPDwgMTYpIC0gMSkKLSAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODFceGZlXHhmZlx4ZmYnLCBwYXlsb2FkKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwYXlsb2FkLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbGFyZ2VfbWVzc2FnZShzZWxmKToKLSAgICAg
ICAgcGF5bG9hZCA9ICdhJyAqICgxIDw8IDE2KQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9y
ZXF1ZXN0KAotICAgICAgICAgICAgKCdceDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMVx4
MDBceDAwJywgcGF5bG9hZCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2xl
bmd0aF9ub3RfZW5jb2RlZF91c2luZ19taW5pbWFsX251bWJlcl9vZl9ieXRlcyhzZWxmKToKLSAg
ICAgICAgIyBMb2cgd2FybmluZyBvbiByZWNlaXZpbmcgYmFkIHBheWxvYWQgbGVuZ3RoIGZpZWxk
IHRoYXQgZG9lc24ndCB1c2UKLSAgICAgICAgIyBtaW5pbWFsIG51bWJlciBvZiBieXRlcyBidXQg
Y29udGludWUgcHJvY2Vzc2luZy4KLQotICAgICAgICBwYXlsb2FkID0gJ2EnCi0gICAgICAgICMg
MSBieXRlIGNhbiBiZSByZXByZXNlbnRlZCB3aXRob3V0IGV4dGVuZGVkIHBheWxvYWQgbGVuZ3Ro
IGZpZWxkLgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAg
KCdceDgxXHhmZlx4MDBceDAwXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxJywgcGF5bG9hZCkpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF5bG9hZCwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2Uo
cmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToK
LSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODFceDgzJywgJ1x4ZTZceDlj
XHhhYycpKQotICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDljLGFjIGluIFVURi04
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGlsLnJlY2VpdmVfbWVz
c2FnZShyZXF1ZXN0KSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9lcnJvbmVvdXNf
dW5pY29kZShzZWxmKToKLSAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBpbnZhbGlkIGFzIFVU
Ri04LgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCgnXHg4MVx4ODInLCAnXHg4
MFx4ODEnKSkKLSAgICAgICAgIyBJbnZhbGlkIGNoYXJhY3RlcnMgc2hvdWxkIHJhaXNlIEludmFs
aWRVVEY4RXhjZXB0aW9uCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRVVEY4RXhj
ZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnJlY2VpdmVfbWVzc2Fn
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0X3Jl
Y2VpdmVfZnJhZ21lbnRzKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0
KAotICAgICAgICAgICAgKCdceDAxXHg4NScsICdIZWxsbycpLAotICAgICAgICAgICAgKCdceDAw
XHg4MScsICcgJyksCi0gICAgICAgICAgICAoJ1x4MDBceDg1JywgJ1dvcmxkJyksCi0gICAgICAg
ICAgICAoJ1x4ODBceDgxJywgJyEnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8g
V29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX2ZyYWdtZW50c191bmljb2RlKHNlbGYpOgotICAgICAgICAjIFVURi04IGVuY29k
ZXMgVSs2ZjIyIGludG8gZTZiY2EyIGFuZCBVKzViNTcgaW50byBlNWFkOTcuCi0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4MDFceDgyJywgJ1x4ZTZc
eGJjJyksCi0gICAgICAgICAgICAoJ1x4MDBceDgyJywgJ1x4YTJceGU1JyksCi0gICAgICAgICAg
ICAoJ1x4ODBceDgyJywgJ1x4YWRceDk3JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdc
dTZmMjJcdTViNTcnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2ltbWVkaWF0ZV96ZXJvX3Rlcm1pbmF0aW9uKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdceDAx
XHg4YycsICdIZWxsbyBXb3JsZCEnKSwgKCdceDgwXHg4MCcsICcnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnSGVsbG8gV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50c19kdXBsaWNhdGVfc3RhcnQoc2Vs
Zik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4
MDFceDg1JywgJ0hlbGxvJyksICgnXHgwMVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMobXNndXRpbC5JbnZhbGlkRnJhbWVFeGNlcHRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9mcmFnbWVudHNfaW50ZXJt
ZWRpYXRlX2J1dF9ub3Rfc3RhcnRlZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
cmVxdWVzdCgoJ1x4MDBceDg1JywgJ0hlbGxvJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KG1zZ3V0aWwuSW52YWxpZEZyYW1lRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVx
dWVzdCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRzX2VuZF9idXRfbm90X3N0YXJ0
ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoKCdceDgwXHg4NScs
ICdIZWxsbycpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFt
ZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21l
c3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVz
dF9yZWNlaXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVh
dGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4Zlx4ODYnLCAnSUdOT1JFJyksICgnXHg4MVx4
ODUnLCAnSGVsbG8nKSwKLSAgICAgICAgICAgICgnXHg4Zlx4ODknLCAnRElTUkVHQVJEJyksICgn
XHg4MVx4ODYnLCAnV29ybGQhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwu
VW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNn
dXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0UmFpc2VzKG1zZ3V0aWwuVW5zdXBwb3J0ZWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsIHJlcXVlc3QpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJl
cXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9jbG9zZShzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgKLSAgICAgICAgICAgICgnXHg4OFx4OGEnLCBzdHJ1Y3Qu
cGFjaygnIUgnLCAxMDAwKSArICdHb29kIGJ5ZScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDEwMDAsIHJlcXVlc3Qud3NfY2xvc2VfY29kZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnR29vZCBieWUnLCByZXF1ZXN0LndzX2Nsb3NlX3JlYXNvbikKLQotICAgIGRlZiB0
ZXN0X3NlbmRfbG9uZ2VzdF9jbG9zZShzZWxmKToKLSAgICAgICAgcmVhc29uID0gJ2EnICogMTIz
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODhc
eGZkJywKLSAgICAgICAgICAgICBzdHJ1Y3QucGFjaygnIUgnLCBjb21tb24uU1RBVFVTX05PUk1B
TF9DTE9TVVJFKSArIHJlYXNvbikpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nv
bm5lY3Rpb24oY29tbW9uLlNUQVRVU19OT1JNQUxfQ0xPU1VSRSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZWFzb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocmVxdWVzdC53c19jbG9zZV9jb2RlLCBjb21tb24uU1RBVFVTX05PUk1BTF9DTE9TVVJFKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcXVlc3Qud3NfY2xvc2VfcmVhc29uLCByZWFzb24p
Ci0KLSAgICBkZWYgdGVzdF9zZW5kX2Nsb3NlX3Rvb19sb25nKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMobXNndXRp
bC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmVh
bS5jbG9zZV9jb25uZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0Lndz
X3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbW9uLlNUQVRVU19OT1JNQUxf
Q0xPU1VSRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnICogMTI0KQotCi0gICAgZGVm
IHRlc3Rfc2VuZF9jbG9zZV9pbmNvbnNpc3RlbnRfY29kZV9hbmRfcmVhc29uKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAgICAgIyByZWFzb24gcGFyYW1l
dGVyIG11c3Qgbm90IGJlIHNwZWNpZmllZCB3aGVuIGNvZGUgaXMgTm9uZS4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMobXNndXRpbC5CYWRPcGVyYXRpb25FeGNlcHRpb24sCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIFN0cmVhbS5jbG9zZV9jb25uZWN0aW9uLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnKQotCi0gICAgZGVmIHRlc3Rfc2Vu
ZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCkKLSAgICAg
ICAgbXNndXRpbC5zZW5kX3BpbmcocmVxdWVzdCwgJ0hlbGxvIFdvcmxkIScpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1x4ODlceDBjSGVsbG8gV29ybGQhJywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVz
dF9zZW5kX2xvbmdlc3RfcGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVx
dWVzdCgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdhJyAqIDEyNSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4OVx4N2QnICsgJ2EnICogMTI1LAotICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQotICAg
IGRlZiB0ZXN0X3NlbmRfcGluZ190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9j
cmVhdGVfcmVxdWVzdCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG1zZ3V0aWwuQmFkT3Bl
cmF0aW9uRXhjZXB0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICBtc2d1dGlsLnNlbmRf
cGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgJ2EnICogMTI2KQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nKHNlbGYp
OgotICAgICAgICAiIiJUZXN0cyByZWNlaXZpbmcgYSBwaW5nIGNvbnRyb2wgZnJhbWUuIiIiCi0K
LSAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgbWVzc2FnZSk6Ci0gICAgICAgICAgICByZXF1
ZXN0LmNhbGxlZCA9IFRydWUKLQotICAgICAgICAjIFN0cmVhbSBhdXRvbWF0aWNhbGx5IHJlc3Bv
bmQgdG8gcGluZyB3aXRoIHBvbmcgd2l0aG91dCBhbnkgYWN0aW9uCi0gICAgICAgICMgYnkgYXBw
bGljYXRpb24gbGF5ZXIuCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAg
ICAgICAgICAoJ1x4ODlceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShy
ZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4YVx4MDVIZWxsbycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQot
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4ODlc
eDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5v
bl9waW5nX2hhbmRsZXIgPSBoYW5kbGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxk
JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShyZXF1ZXN0LmNhbGxlZCkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbG9uZ2VzdF9waW5n
KHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAg
KCdceDg5XHhmZCcsICdhJyAqIDEyNSksICgnXHg4MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4YVx4N2QnICsgJ2EnICogMTI1LAotICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
LQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfcGluZ190b29fbG9uZyhzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODlceGZlXHgwMFx4N2UnLCAnYScgKiAxMjYpKQot
ICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3Bv
bmcoc2VsZik6Ci0gICAgICAgICIiIlRlc3RzIHJlY2VpdmluZyBhIHBvbmcgY29udHJvbCBmcmFt
ZS4iIiIKLQotICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCBtZXNzYWdlKToKLSAgICAgICAg
ICAgIHJlcXVlc3QuY2FsbGVkID0gVHJ1ZQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoCi0gICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4MVx4ODUnLCAn
V29ybGQnKSkKLSAgICAgICAgcmVxdWVzdC5vbl9wb25nX2hhbmRsZXIgPSBoYW5kbGVyCi0gICAg
ICAgIG1zZ3V0aWwuc2VuZF9waW5nKHJlcXVlc3QsICdIZWxsbycpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4ODlceDA1SGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLSAgICAgICAgIyBWYWxpZCBwb25nIGlzIHJl
Y2VpdmVkLCBidXQgcmVjZWl2ZV9tZXNzYWdlIHdvbid0IHJldHVybiBmb3IgaXQuCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0gICAgICAgICMgQ2hlY2sgdGhhdCBub3RoaW5nIHdhcyB3cml0dGVuIGFmdGVyIHJlY2Vp
dmVfbWVzc2FnZSBjYWxsLgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDg5XHgwNUhlbGxv
JywKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9k
YXRhKCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlcXVlc3QuY2FsbGVkKQotCi0gICAg
ZGVmIHRlc3RfcmVjZWl2ZV91bnNvbGljaXRlZF9wb25nKHNlbGYpOgotICAgICAgICAjIFVuc29s
aWNpdGVkIHBvbmcgaXMgYWxsb3dlZCBmcm9tIEh5QmkgMDcuCi0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX3JlcXVlc3QoCi0gICAgICAgICAgICAoJ1x4OGFceDg1JywgJ0hlbGxvJyksICgnXHg4
MVx4ODUnLCAnV29ybGQnKSkKLSAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkKLQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KAotICAgICAgICAgICAgKCdc
eDhhXHg4NScsICdIZWxsbycpLCAoJ1x4ODFceDg1JywgJ1dvcmxkJykpCi0gICAgICAgIG1zZ3V0
aWwuc2VuZF9waW5nKHJlcXVlc3QsICdKdW1ibycpCi0gICAgICAgICMgQm9keSBtaXNtYXRjaC4K
LSAgICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkKLQotICAgIGRlZiB0ZXN0
X3BpbmdfY2Fubm90X2JlX2ZyYWdtZW50ZWQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3Jl
YXRlX3JlcXVlc3QoKCdceDA5XHg4NScsICdIZWxsbycpKQotICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhtc2d1dGlsLkludmFsaWRGcmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcXVlc3QpCi0KLSAgICBkZWYgdGVzdF9waW5nX3dpdGhfdG9vX2xvbmdfcGF5bG9hZChzZWxm
KToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgoJ1x4ODlceGZlXHgwMVx4MDAn
LCAnYScgKiAyNTYpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtc2d1dGlsLkludmFsaWRG
cmFtZUV4Y2VwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QpCi0KLQotY2xhc3Mg
RGVmbGF0ZUZyYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIGNo
ZWNraW5nIGRlZmxhdGUtZnJhbWUgZXh0ZW5zaW9uLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZF9t
ZXNzYWdlKHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAg
ICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIu
TUFYX1dCSVRTKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2Ny
ZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1l
X3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCAnSGVsbG8nKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnV29ybGQn
KQotCi0gICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0g
Y29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBj
b21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
byA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCArPSAnXHhjMSVjJyAl
IGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hl
bGxvCi0KLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3Js
ZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZ
TkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzot
NF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF93b3JsZCkK
LSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKLQot
ICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9iZmluYWwoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5T
SU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAg
ICAgICAgICAgICcnLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykp
Ci0gICAgICAgIGRlZmxhdGVfZnJhbWVfcHJvY2Vzc29yID0gcmVxdWVzdC53c19leHRlbnNpb25f
cHJvY2Vzc29yc1swXQotICAgICAgICBkZWZsYXRlX2ZyYW1lX3Byb2Nlc3Nvci5zZXRfYmZpbmFs
KFRydWUpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0g
ICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAg
ZXhwZWN0ZWQgPSAnJwotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAg
ICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxp
Yi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVz
cygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9GSU5JU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxv
ICsgY2hyKDApCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNzZWRf
aGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAgICBj
b21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9D
T01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21w
cmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJl
c3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21w
cmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZCArIGNocigwKQotICAgICAgICBleHBlY3Rl
ZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBlY3RlZCAr
PSBjb21wcmVzc2VkX3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9t
ZXNzYWdlX2NvbXBfYml0KHNlbGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3Nv
YmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRF
RCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICcnLCBkZWZs
YXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscygx
LCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29ycykpCi0gICAgICAgIGRlZmxhdGVf
ZnJhbWVfcHJvY2Vzc29yID0gcmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29yc1swXQotICAg
ICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotICAgICAgICBkZWZs
YXRlX2ZyYW1lX3Byb2Nlc3Nvci5kaXNhYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAg
ICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLSAgICAgICAgZGVmbGF0
ZV9mcmFtZV9wcm9jZXNzb3IuZW5hYmxlX291dGdvaW5nX2NvbXByZXNzaW9uKCkKLSAgICAgICAg
bXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBleHBlY3Rl
ZCA9ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdI
ZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5a
X1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxv
WzotNF0KLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4YzElYycgJSBsZW4oY29tcHJlc3NlZF9oZWxs
bykKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9oZWxsbwotCi0gICAgICAgIGV4cGVj
dGVkICs9ICdceDgxXHgwNUhlbGxvJwotCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hlbGxvID0g
Y29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF8ybmRfaGVsbG8g
Kz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRf
Mm5kX2hlbGxvID0gY29tcHJlc3NlZF8ybmRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCAr
PSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkXzJuZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQg
Kz0gY29tcHJlc3NlZF8ybmRfaGVsbG8KLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVj
dGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9z
ZW5kX21lc3NhZ2Vfbm9fY29udGV4dF90YWtlb3Zlcl9wYXJhbWV0ZXIoc2VsZik6Ci0gICAgICAg
IGNvbXByZXNzID0gemxpYi5jb21wcmVzc29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAg
ZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFN
RV9FWFRFTlNJT04pCi0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdub19jb250ZXh0
X3Rha2VvdmVyJywgTm9uZSkKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9t
X3Jhd2RhdGEoCi0gICAgICAgICAgICAnJywgZGVmbGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVuc2lv
bikKLSAgICAgICAgZm9yIGkgaW4geHJhbmdlKDMpOgotICAgICAgICAgICAgbXNndXRpbC5zZW5k
X21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKLQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2Ug
PSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX21lc3NhZ2Ug
Kz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRf
bWVzc2FnZSA9IGNvbXByZXNzZWRfbWVzc2FnZVs6LTRdCi0gICAgICAgIGV4cGVjdGVkID0gJ1x4
YzElYycgJSBsZW4oY29tcHJlc3NlZF9tZXNzYWdlKQotICAgICAgICBleHBlY3RlZCArPSBjb21w
cmVzc2VkX21lc3NhZ2UKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAg
ZXhwZWN0ZWQgKyBleHBlY3RlZCArIGV4cGVjdGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRl
bl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9iYWRfcmVxdWVzdF9wYXJhbWV0ZXJzKHNlbGYpOgot
ICAgICAgICAiIiJUZXN0cyB0aGF0IGlmIHRoZXJlJ3MgYW55dGhpbmcgd3Jvbmcgd2l0aCBkZWZs
YXRlLWZyYW1lIGV4dGVuc2lvbgotICAgICAgICByZXF1ZXN0LCBkZWZsYXRlLWZyYW1lIGlzIHJl
amVjdGVkLgotICAgICAgICAiIiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5z
aW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgIyBt
YXhfd2luZG93X2JpdHMgbGVzcyB0aGFuIDggaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9u
LmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICc3JykKLSAgICAgICAgcHJvY2Vzc29y
ID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpKQot
Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRF
RkxBVEVfRlJBTUVfRVhURU5TSU9OKQotICAgICAgICAjIG1heF93aW5kb3dfYml0cyBncmVhdGVy
IHRoYW4gMTUgaXMgaWxsZWdhbC4KLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21h
eF93aW5kb3dfYml0cycsICcxNicpCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4
dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9u
ZSwgcHJvY2Vzc29yLmdldF9leHRlbnNpb25fcmVzcG9uc2UoKSkKLQotICAgICAgICBleHRlbnNp
b24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1FX0VYVEVO
U0lPTikKLSAgICAgICAgIyBOb24gaW50ZWdlciBtYXhfd2luZG93X2JpdHMgaXMgaWxsZWdhbC4K
LSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ21heF93aW5kb3dfYml0cycsICdmb29i
YXInKQotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNpb25Qcm9jZXNzb3Io
ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHByb2Nlc3Nvci5nZXRf
ZXh0ZW5zaW9uX3Jlc3BvbnNlKCkpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVu
c2lvblBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgICMg
bm9fY29udGV4dF90YWtlb3ZlciBtdXN0IG5vdCBoYXZlIGFueSB2YWx1ZS4KLSAgICAgICAgZXh0
ZW5zaW9uLmFkZF9wYXJhbWV0ZXIoJ25vX2NvbnRleHRfdGFrZW92ZXInLCAnZm9vYmFyJykKLSAg
ICAgICAgcHJvY2Vzc29yID0gRGVmbGF0ZUZyYW1lRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lv
bikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lv
bl9yZXNwb25zZSgpKQotCi0gICAgZGVmIHRlc3RfcmVzcG9uc2VfcGFyYW1ldGVycyhzZWxmKToK
LSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcihjb21tb24uREVG
TEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHByb2Nlc3NvciA9IERlZmxhdGVGcmFtZUV4
dGVuc2lvblByb2Nlc3NvcihleHRlbnNpb24pCi0gICAgICAgIHByb2Nlc3Nvci5zZXRfcmVzcG9u
c2Vfd2luZG93X2JpdHMoOCkKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVu
c2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5oYXNfcGFy
YW1ldGVyKCdtYXhfd2luZG93X2JpdHMnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnOCcs
IHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ21heF93aW5kb3dfYml0cycpKQotCi0gICAg
ICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVf
RlJBTUVfRVhURU5TSU9OKQotICAgICAgICBwcm9jZXNzb3IgPSBEZWZsYXRlRnJhbWVFeHRlbnNp
b25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAgICAgICBwcm9jZXNzb3Iuc2V0X3Jlc3BvbnNlX25v
X2NvbnRleHRfdGFrZW92ZXIoVHJ1ZSkKLSAgICAgICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0
X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZXNwb25zZS5o
YXNfcGFyYW1ldGVyKCdub19jb250ZXh0X3Rha2VvdmVyJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZSgKLSAgICAgICAgICAgIHJlc3BvbnNlLmdldF9wYXJhbWV0ZXJfdmFsdWUoJ25vX2NvbnRl
eHRfdGFrZW92ZXInKSBpcyBOb25lKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlKHNl
bGYpOgotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6
bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRT
KQotCi0gICAgICAgIGRhdGEgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21w
cmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXBy
ZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0g
Y29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNv
bXByZXNzZWRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXBy
ZXNzZWRfaGVsbG8pCi0KLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgPSBjb21wcmVzcy5j
b21wcmVzcygnV2ViU29ja2V0JykKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQgKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3NlZF93ZWJzb2NrZXQg
Kz0gJ1x4MDAnCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd2Vi
c29ja2V0KSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX3dl
YnNvY2tldCkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAg
ICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFY
X1dCSVRTKQotCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygn
V29ybGQnKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIu
Wl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3Js
ZFs6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXByZXNzZWRfd29ybGQp
IHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfd29ybGQpCi0K
LSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4XHg4YScgKyBfbWFz
a19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykKLQotICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5ERUZMQVRFX0ZSQU1F
X0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9mcm9tX3Jhd2Rh
dGEoCi0gICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9ZXh0ZW5zaW9uKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdl
KHJlcXVlc3QpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXZWJTb2NrZXQnLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29y
bGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAg
ZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2NsaWVudF91c2luZ19zbWFsbGVyX3dpbmRvdyhzZWxm
KToKLSAgICAgICAgIiIiVGVzdCB0aGF0IGZyYW1lcyBjb21pbmcgZnJvbSBhIGNsaWVudCB3aGlj
aCBpcyB1c2luZyBzbWFsbGVyIHdpbmRvdwotICAgICAgICBzaXplIHRoYXQgdGhlIHNlcnZlciBh
cmUgY29ycmVjdGx5IHJlY2VpdmVkLgotICAgICAgICAiIiIKLQotICAgICAgICAjIFVzaW5nIHRo
ZSBzbWFsbGVzdCB3aW5kb3cgYml0cyBvZiA4IGZvciBnZW5lcmF0aW5nIGlucHV0IGZyYW1lcy4K
LSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5a
X0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC04KQotCi0gICAgICAgIGRhdGEg
PSAnJwotCi0gICAgICAgICMgVXNlIGEgZnJhbWUgd2hvc2UgY29udGVudCBpcyBiaWdnZXIgdGhh
biB0aGUgY2xpZW50cycgREVGTEFURSB3aW5kb3cKLSAgICAgICAgIyBzaXplIGJlZm9yZSBjb21w
cmVzc2lvbi4gVGhlIGNvbnRlbnQgbWFpbmx5IGNvbnNpc3RzIG9mICdhJyBidXQKLSAgICAgICAg
IyByZXBldGl0aW9uIG9mICdiJyBpcyBwdXQgYXQgdGhlIGhlYWQgYW5kIHRhaWwgc28gdGhhdCBp
ZiB0aGUgd2luZG93Ci0gICAgICAgICMgc2l6ZSBpcyBiaWcsIHRoZSBoZWFkIGlzIGJhY2stcmVm
ZXJlbmNlZCBidXQgaWYgc21hbGwsIG5vdC4KLSAgICAgICAgcGF5bG9hZCA9ICdiJyAqIDY0ICsg
J2EnICogMTAyNCArICdiJyAqIDY0Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVz
cy5jb21wcmVzcyhwYXlsb2FkKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNz
LmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEgKz0gJ1x4YzElYycgJSAobGVuKGNvbXBy
ZXNzZWRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAgZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNz
ZWRfaGVsbG8pCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4
XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykK
LQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5E
RUZMQVRFX0ZSQU1FX0VYVEVOU0lPTikKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVz
dF9mcm9tX3Jhd2RhdGEoCi0gICAgICAgICAgICBkYXRhLCBkZWZsYXRlX2ZyYW1lX3JlcXVlc3Q9
ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwg
bXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZl
X21lc3NhZ2VfY29tcF9iaXQoc2VsZik6Ci0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVz
c29iaigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxB
VEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgY29t
cHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXBy
ZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAg
IGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSAr
PSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRh
ICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICBkYXRhICs9ICdceDgx
XHg4NScgKyBfbWFza19oeWJpKCdIZWxsbycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNv
bXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIu
REVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVzc2VkXzJuZF9oZWxs
byA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfMm5kX2hl
bGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVz
c2VkXzJuZF9oZWxsbyA9IGNvbXByZXNzZWRfMm5kX2hlbGxvWzotNF0KLSAgICAgICAgZGF0YSAr
PSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF8ybmRfaGVsbG8pIHwgMHg4MCkKLSAgICAgICAg
ZGF0YSArPSBfbWFza19oeWJpKGNvbXByZXNzZWRfMm5kX2hlbGxvKQotCi0gICAgICAgIGV4dGVu
c2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoY29tbW9uLkRFRkxBVEVfRlJBTUVfRVhU
RU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
LSAgICAgICAgICAgIGRhdGEsIGRlZmxhdGVfZnJhbWVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAg
ICAgIGZvciBpIGluIHhyYW5nZSgzKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hl
bGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0KLSAgICBkZWYgdGVzdF9y
ZWNlaXZlX21lc3NhZ2VfdmFyaW91c19idHlwZShzZWxmKToKLSAgICAgICAgY29tcHJlc3MgPSB6
bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04s
IHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBkYXRhID0gJycKLQot
ICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVT
SCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAg
ICAgICBkYXRhICs9ICdceGMxJWMnICUgKGxlbihjb21wcmVzc2VkX2hlbGxvKSB8IDB4ODApCi0g
ICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hlbGxvKQotCi0gICAgICAgIGNv
bXByZXNzZWRfd2Vic29ja2V0ID0gY29tcHJlc3MuY29tcHJlc3MoJ1dlYlNvY2tldCcpCi0gICAg
ICAgIGNvbXByZXNzZWRfd2Vic29ja2V0ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9GSU5JU0gp
Ci0gICAgICAgIGNvbXByZXNzZWRfd2Vic29ja2V0ICs9ICdceDAwJwotICAgICAgICBkYXRhICs9
ICdceGMxJWMnICUgKGxlbihjb21wcmVzc2VkX3dlYnNvY2tldCkgfCAweDgwKQotICAgICAgICBk
YXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF93ZWJzb2NrZXQpCi0KLSAgICAgICAgY29tcHJl
c3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJF
U1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBjb21wcmVz
c2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAgY29tcHJlc3Nl
ZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29t
cHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBkYXRhICs9ICdc
eGMxJWMnICUgKGxlbihjb21wcmVzc2VkX3dvcmxkKSB8IDB4ODApCi0gICAgICAgIGRhdGEgKz0g
X21hc2tfaHliaShjb21wcmVzc2VkX3dvcmxkKQotCi0gICAgICAgICMgQ2xvc2UgZnJhbWUKLSAg
ICAgICAgZGF0YSArPSAnXHg4OFx4OGEnICsgX21hc2tfaHliaShzdHJ1Y3QucGFjaygnIUgnLCAx
MDAwKSArICdHb29kIGJ5ZScpCi0KLSAgICAgICAgZXh0ZW5zaW9uID0gY29tbW9uLkV4dGVuc2lv
blBhcmFtZXRlcihjb21tb24uREVGTEFURV9GUkFNRV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgZGVm
bGF0ZV9mcmFtZV9yZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
SGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnV2ViU29ja2V0JywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbXNndXRpbC5yZWNlaXZlX21lc3Nh
Z2UocmVxdWVzdCkpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBtc2d1dGlsLnJl
Y2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotCi1jbGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3Qo
dW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciBwZXJtZXNzYWdlLWRlZmxhdGUg
ZXh0ZW5zaW9uLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlKHNlbGYpOgotICAgICAg
ICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAg
IGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVz
c2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVz
c2FnZShyZXF1ZXN0LCAnSGVsbG8nKQotCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVz
c29iaigKLSAgICAgICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lPTiwgemxpYi5E
RUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29t
cHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21w
cmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9
IGNvbXByZXNzZWRfaGVsbG9bOi00XQotICAgICAgICBleHBlY3RlZCA9ICdceGMxJWMnICUgbGVu
KGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9lbXB0eV9tZXNzYWdlKHNlbGYpOgot
ICAgICAgICAiIiJUZXN0IHRoYXQgYW4gZW1wdHkgbWVzc2FnZSBpcyBjb21wcmVzc2VkIGNvcnJl
Y3RseS4iIiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAg
ICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotCi0gICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICcnKQotCi0gICAgICAgICMgUGF5bG9h
ZCBpbiBiaW5hcnk6IDBiMDAwMDAwMTAgMGIwMDAwMDAwMAotICAgICAgICAjIEZyb20gTFNCLAot
ICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFMICgwKQotICAgICAgICAjIC0gMiBiaXRzIG9mIEJU
WVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1ZmZtYW4pCi0gICAgICAgICMgLSA3IGJpdHMgb2Yg
dGhlIGZpcnN0IGNvZGUgKDAwMDAwMDAgdGhhdCBpcyB0aGUgY29kZSBmb3IgdGhlCi0gICAgICAg
ICMgICBlbmQtb2YtYmxvY2spCi0gICAgICAgICMgLSAxIGJpdCBvZiBCRklOQUwgKDApCi0gICAg
ICAgICMgLSAyIGJpdHMgb2YgQlRZUEUgKG5vIGNvbXByZXNzaW9uKQotICAgICAgICAjIC0gMyBi
aXRzIG9mIHBhZGRpbmcKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHhjMVx4MDJceDAyXHgw
MCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5f
ZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3dpdGhfbnVsbF9jaGFyYWN0ZXIo
c2VsZik6Ci0gICAgICAgICIiIlRlc3QgdGhhdCBhIHNpbXBsZSBwYXlsb2FkIChvbmUgbnVsbCkg
aXMgZnJhbWVkIGNvcnJlY3RseS4iIiIKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0
ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxB
VEVfRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3
ZGF0YSgKLSAgICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0
ZW5zaW9uKQotCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdceDAwJykK
LQotICAgICAgICAjIFBheWxvYWQgaW4gYmluYXJ5OiAwYjAxMTAwMDEwIDBiMDAwMDAwMDAgMGIw
MDAwMDAwMAotICAgICAgICAjIEZyb20gTFNCLAotICAgICAgICAjIC0gMSBiaXQgb2YgQkZJTkFM
ICgwKQotICAgICAgICAjIC0gMiBiaXRzIG9mIEJUWVBFICgwMSB0aGF0IG1lYW5zIGZpeGVkIEh1
ZmZtYW4pCi0gICAgICAgICMgLSA4IGJpdHMgb2YgdGhlIGZpcnN0IGNvZGUgKDAwMTEwMDAwIHRo
YXQgaXMgdGhlIGNvZGUgZm9yIHRoZSBsaXRlcmFsCi0gICAgICAgICMgICBhbHBoYWJldCAweDAw
KQotICAgICAgICAjIC0gNyBiaXRzIG9mIHRoZSBzZWNvbmQgY29kZSAoMDAwMDAwMCB0aGF0IGlz
IHRoZSBjb2RlIGZvciB0aGUKLSAgICAgICAgIyAgIGVuZC1vZi1ibG9jaykKLSAgICAgICAgIyAt
IDEgYml0IG9mIEJGSU5BTCAoMCkKLSAgICAgICAgIyAtIDIgYml0cyBvZiBCVFlQRSAobm8gY29t
cHJlc3Npb24pCi0gICAgICAgICMgLSAyIGJpdHMgb2YgcGFkZGluZwotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdceGMxXHgwM1x4NjJceDAwXHgwMCcsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2Vu
ZF90d29fbWVzc2FnZXMoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNp
b25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9F
WFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRh
KAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNp
b24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycpCi0gICAg
ICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcpCi0KLSAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAgICAgICAg
ZXhwZWN0ZWQgPSAnJwotCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21w
cmVzcygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNo
KHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3Nl
ZF9oZWxsb1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceGMxJWMnICUgbGVuKGNvbXByZXNz
ZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLQotICAgICAg
ICBjb21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3MuY29tcHJlc3MoJ1dvcmxkJykKLSAgICAgICAg
Y29tcHJlc3NlZF93b3JsZCArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfU1lOQ19GTFVTSCkKLSAg
ICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGRbOi00XQotICAgICAgICBl
eHBlY3RlZCArPSAnXHhjMSVjJyAlIGxlbihjb21wcmVzc2VkX3dvcmxkKQotICAgICAgICBleHBl
Y3RlZCArPSBjb21wcmVzc2VkX3dvcmxkCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBl
Y3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rf
c2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWQoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1v
bi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0Vf
REVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJv
bV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVz
dD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxs
bycsIGVuZD1GYWxzZSkKLSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0dv
b2RieWUnLCBlbmQ9RmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdXb3JsZCcpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAg
ICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxp
Yi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVz
cygnSGVsbG8nKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXBy
ZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAg
ICAgY29tcHJlc3NlZF9nb29kYnllID0gY29tcHJlc3MuY29tcHJlc3MoJ0dvb2RieWUnKQotICAg
ICAgICBjb21wcmVzc2VkX2dvb2RieWUgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDAwJWMnICUgbGVuKGNvbXByZXNzZWRfZ29vZGJ5
ZSkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF9nb29kYnllCi0gICAgICAgIGNvbXBy
ZXNzZWRfd29ybGQgPSBjb21wcmVzcy5jb21wcmVzcygnV29ybGQnKQotICAgICAgICBjb21wcmVz
c2VkX3dvcmxkICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBj
b21wcmVzc2VkX3dvcmxkID0gY29tcHJlc3NlZF93b3JsZFs6LTRdCi0gICAgICAgIGV4cGVjdGVk
ICs9ICdceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfd29ybGQpCi0gICAgICAgIGV4cGVjdGVkICs9
IGNvbXByZXNzZWRfd29ybGQKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVx
dWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNz
YWdlX2ZyYWdtZW50ZWRfZW1wdHlfZmlyc3RfZnJhbWUoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lv
biA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBF
Uk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxh
dGVfcmVxdWVzdD1leHRlbnNpb24pCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsICcnLCBlbmQ9RmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3Qs
ICdIZWxsbycpCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAg
ICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxp
Yi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVz
cygnJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpf
U1lOQ19GTFVTSCkKLSAgICAgICAgZXhwZWN0ZWQgPSAnXHg0MSVjJyAlIGxlbihjb21wcmVzc2Vk
X2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVzc2VkX2hlbGxvCi0gICAgICAgIGNv
bXByZXNzZWRfZW1wdHkgPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21w
cmVzc2VkX2VtcHR5ICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAg
ICBjb21wcmVzc2VkX2VtcHR5ID0gY29tcHJlc3NlZF9lbXB0eVs6LTRdCi0gICAgICAgIGV4cGVj
dGVkICs9ICdceDgwJWMnICUgbGVuKGNvbXByZXNzZWRfZW1wdHkpCi0gICAgICAgIGV4cGVjdGVk
ICs9IGNvbXByZXNzZWRfZW1wdHkKLSAgICAgICAgcHJpbnQgJyVyJyAlIGV4cGVjdGVkCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVu
X2RhdGEoKSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV9mcmFnbWVudGVkX2VtcHR5X2xh
c3RfZnJhbWUoc2VsZik6Ci0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJh
bWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJ
T04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAg
ICAgICAgICAgICAgICcnLCBwZXJtZXNzYWdlX2RlZmxhdGVfcmVxdWVzdD1leHRlbnNpb24pCi0g
ICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycsIGVuZD1GYWxzZSkK
LSAgICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgJycpCi0KLSAgICAgICAgY29t
cHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxU
X0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAg
ICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVuKGNvbXByZXNzZWRfaGVsbG8pCi0gICAgICAgIGV4
cGVjdGVkICs9IGNvbXByZXNzZWRfaGVsbG8KLSAgICAgICAgY29tcHJlc3NlZF9lbXB0eSA9IGNv
bXByZXNzLmNvbXByZXNzKCcnKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ICs9IGNvbXByZXNz
LmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2VtcHR5ID0gY29t
cHJlc3NlZF9lbXB0eVs6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMnICUgbGVuKGNv
bXByZXNzZWRfZW1wdHkpCi0gICAgICAgIGV4cGVjdGVkICs9IGNvbXByZXNzZWRfZW1wdHkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX3VzaW5nX3NtYWxsX3dpbmRv
dyhzZWxmKToKLSAgICAgICAgY29tbW9uX3BhcnQgPSAnYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4
eXonCi0gICAgICAgIHRlc3RfbWVzc2FnZSA9IGNvbW1vbl9wYXJ0ICsgJy0nICogMzAwMDAgKyBj
b21tb25fcGFydAotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRlbnNpb25QYXJhbWV0
ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04p
Ci0gICAgICAgIGV4dGVuc2lvbi5hZGRfcGFyYW1ldGVyKCdzZXJ2ZXJfbWF4X3dpbmRvd19iaXRz
JywgJzgnKQotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgK
LSAgICAgICAgICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9u
KQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCB0ZXN0X21lc3NhZ2UpCi0K
LSAgICAgICAgZXhwZWN0ZWRfd2Vic29ja2V0X2hlYWRlcl9zaXplID0gMgotICAgICAgICBleHBl
Y3RlZF93ZWJzb2NrZXRfcGF5bG9hZF9zaXplID0gOTEKLQotICAgICAgICBhY3R1YWxfZnJhbWUg
PSByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChleHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemUgKwotICAgICAgICAgICAgICAgICAg
ICAgICAgIGV4cGVjdGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgbGVuKGFjdHVhbF9mcmFtZSkpCi0gICAgICAgIGFjdHVhbF9oZWFkZXIgPSBhY3R1
YWxfZnJhbWVbMDpleHBlY3RlZF93ZWJzb2NrZXRfaGVhZGVyX3NpemVdCi0gICAgICAgIGFjdHVh
bF9wYXlsb2FkID0gYWN0dWFsX2ZyYW1lW2V4cGVjdGVkX3dlYnNvY2tldF9oZWFkZXJfc2l6ZTpd
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICAnXHhjMSVjJyAl
IGV4cGVjdGVkX3dlYnNvY2tldF9wYXlsb2FkX3NpemUsIGFjdHVhbF9oZWFkZXIpCi0gICAgICAg
IGRlY29tcHJlc3MgPSB6bGliLmRlY29tcHJlc3NvYmooLTgpCi0gICAgICAgIGRlY29tcHJlc3Nl
ZF9tZXNzYWdlID0gZGVjb21wcmVzcy5kZWNvbXByZXNzKAotICAgICAgICAgICAgICAgIGFjdHVh
bF9wYXlsb2FkICsgJ1x4MDBceDAwXHhmZlx4ZmYnKQotICAgICAgICBkZWNvbXByZXNzZWRfbWVz
c2FnZSArPSBkZWNvbXByZXNzLmZsdXNoKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0
X21lc3NhZ2UsIGRlY29tcHJlc3NlZF9tZXNzYWdlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDAsIGxlbihkZWNvbXByZXNzLnVudXNlZF9kYXRhKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgwLCBsZW4oZGVjb21wcmVzcy51bmNvbnN1bWVkX3RhaWwpKQotCi0gICAgZGVmIHRlc3Rfc2Vu
ZF9tZXNzYWdlX25vX2NvbnRleHRfdGFrZW92ZXJfcGFyYW1ldGVyKHNlbGYpOgotICAgICAgICBl
eHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAgICAgICAgIGNv
bW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQotICAgICAgICBleHRlbnNpb24uYWRk
X3BhcmFtZXRlcignc2VydmVyX25vX2NvbnRleHRfdGFrZW92ZXInLCBOb25lKQotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAgICAgICAgICAn
JywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBmb3IgaSBp
biB4cmFuZ2UoMyk6Ci0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAn
SGVsbG8nLCBlbmQ9RmFsc2UpCi0gICAgICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1
ZXN0LCAnSGVsbG8nLCBlbmQ9VHJ1ZSkKLQotICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJl
c3NvYmooCi0gICAgICAgICAgICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIu
REVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLQotICAgICAgICBmaXJzdF9oZWxsbyA9IGNvbXBy
ZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAgICAgIGZpcnN0X2hlbGxvICs9IGNvbXByZXNzLmZs
dXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBleHBlY3RlZCA9ICdceDQxJWMnICUgbGVu
KGZpcnN0X2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBmaXJzdF9oZWxsbwotICAgICAgICBz
ZWNvbmRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBzZWNvbmRf
aGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIHNlY29u
ZF9oZWxsbyA9IHNlY29uZF9oZWxsb1s6LTRdCi0gICAgICAgIGV4cGVjdGVkICs9ICdceDgwJWMn
ICUgbGVuKHNlY29uZF9oZWxsbykKLSAgICAgICAgZXhwZWN0ZWQgKz0gc2Vjb25kX2hlbGxvCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBleHBlY3RlZCArIGV4
cGVjdGVkICsgZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndy
aXR0ZW5fZGF0YSgpKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9tZXNzYWdlX2ZyYWdtZW50ZWRfYmZp
bmFsKHNlbGYpOgotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVy
KAotICAgICAgICAgICAgICAgIGNvbW1vbi5QRVJNRVNTQUdFX0RFRkxBVEVfRVhURU5TSU9OKQot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0X2Zyb21fcmF3ZGF0YSgKLSAgICAgICAg
ICAgICAgICAnJywgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4ocmVxdWVzdC53c19leHRlbnNpb25fcHJvY2Vzc29y
cykpCi0gICAgICAgIHJlcXVlc3Qud3NfZXh0ZW5zaW9uX3Byb2Nlc3NvcnNbMF0uc2V0X2JmaW5h
bChUcnVlKQotICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0LCAnSGVsbG8nLCBl
bmQ9RmFsc2UpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdXb3JsZCcs
IGVuZD1UcnVlKQotCi0gICAgICAgIGV4cGVjdGVkID0gJycKLQotICAgICAgICBjb21wcmVzcyA9
IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01QUkVTU0lP
TiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVzc2VkX2hl
bGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxs
byArPSBjb21wcmVzcy5mbHVzaCh6bGliLlpfRklOSVNIKQotICAgICAgICBjb21wcmVzc2VkX2hl
bGxvID0gY29tcHJlc3NlZF9oZWxsbyArIGNocigwKQotICAgICAgICBleHBlY3RlZCArPSAnXHg0
MSVjJyAlIGxlbihjb21wcmVzc2VkX2hlbGxvKQotICAgICAgICBleHBlY3RlZCArPSBjb21wcmVz
c2VkX2hlbGxvCi0KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAg
ICAgICAgemxpYi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1B
WF9XQklUUykKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdX
b3JsZCcpCi0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5a
X0ZJTklTSCkKLSAgICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzZWRfd29ybGQgKyBj
aHIoMCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF93b3Js
ZCkKLSAgICAgICAgZXhwZWN0ZWQgKz0gY29tcHJlc3NlZF93b3JsZAotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoZXhwZWN0ZWQsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
LQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9kZWZsYXRlKHNlbGYpOgotICAgICAgICBj
b21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9D
T01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotCi0gICAgICAgIGNv
bXByZXNzZWRfaGVsbG8gPSBjb21wcmVzcy5jb21wcmVzcygnSGVsbG8nKQotICAgICAgICBjb21w
cmVzc2VkX2hlbGxvICs9IGNvbXByZXNzLmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAg
ICBjb21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3NlZF9oZWxsb1s6LTRdCi0gICAgICAgIGRhdGEg
PSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF9oZWxsbykgfCAweDgwKQotICAgICAgICBkYXRh
ICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxsbykKLQotICAgICAgICAjIENsb3NlIGZyYW1l
Ci0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0LnBhY2soJyFI
JywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNvbW1vbi5FeHRl
bnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFU
RV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdk
YXRhKAotICAgICAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9yZXF1ZXN0PWV4
dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2Vp
dmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1z
Z3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9t
ZXNzYWdlX3JhbmRvbV9zZWN0aW9uKHNlbGYpOgotICAgICAgICAiIiJUZXN0IHRoYXQgYSBjb21w
cmVzc2VkIG1lc3NhZ2UgZnJhZ21lbnRlZCBpbnRvIGxvdHMgb2YgY2h1bmtzIGlzCi0gICAgICAg
IGNvcnJlY3RseSByZWNlaXZlZC4KLSAgICAgICAgIiIiCi0KLSAgICAgICAgcmFuZG9tLnNlZWQo
YT0wKQotICAgICAgICBwYXlsb2FkID0gJycuam9pbigKLSAgICAgICAgICAgIFtjaHIocmFuZG9t
LnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4geHJhbmdlKDEwMDApXSkKLQotICAgICAgICBjb21w
cmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVMVF9DT01Q
UkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBjb21wcmVz
c2VkX3BheWxvYWQgPSBjb21wcmVzcy5jb21wcmVzcyhwYXlsb2FkKQotICAgICAgICBjb21wcmVz
c2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAg
IGNvbXByZXNzZWRfcGF5bG9hZCA9IGNvbXByZXNzZWRfcGF5bG9hZFs6LTRdCi0KLSAgICAgICAg
IyBGcmFnbWVudCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90cyBvZiBmcmFtZXMuCi0g
ICAgICAgIGJ5dGVzX2NodW5rZWQgPSAwCi0gICAgICAgIGRhdGEgPSAnJwotICAgICAgICBmcmFt
ZV9jb3VudCA9IDAKLQotICAgICAgICBjaHVua19zaXplcyA9IFtdCi0KLSAgICAgICAgd2hpbGUg
Ynl0ZXNfY2h1bmtlZCA8IGxlbihjb21wcmVzc2VkX3BheWxvYWQpOgotICAgICAgICAgICAgIyBN
YWtlIHN1cmUgdGhhdAotICAgICAgICAgICAgIyAtIHRoZSBsZW5ndGggb2YgY2h1bmtzIGFyZSBl
cXVhbCBvciBsZXNzIHRoYW4gMTI1IHNvIHRoYXQgd2UgY2FuCi0gICAgICAgICAgICAjICAgdXNl
IDEgb2N0ZXQgbGVuZ3RoIGhlYWRlciBmb3JtYXQgZm9yIGFsbCBmcmFtZXMuCi0gICAgICAgICAg
ICAjIC0gYXQgbGVhc3QgMTAgY2h1bmtzIGFyZSBjcmVhdGVkLgotICAgICAgICAgICAgY2h1bmtf
c2l6ZSA9IHJhbmRvbS5yYW5kaW50KAotICAgICAgICAgICAgICAgIDEsIG1pbigxMjUsCi0gICAg
ICAgICAgICAgICAgICAgICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC8gMTAsCi0gICAgICAg
ICAgICAgICAgICAgICAgIGxlbihjb21wcmVzc2VkX3BheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkp
Ci0gICAgICAgICAgICBjaHVua19zaXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKLSAgICAgICAgICAg
IGNodW5rID0gY29tcHJlc3NlZF9wYXlsb2FkWwotICAgICAgICAgICAgICAgIGJ5dGVzX2NodW5r
ZWQ6Ynl0ZXNfY2h1bmtlZCArIGNodW5rX3NpemVdCi0gICAgICAgICAgICBieXRlc19jaHVua2Vk
ICs9IGNodW5rX3NpemUKLQotICAgICAgICAgICAgZmlyc3Rfb2N0ZXQgPSAweDAwCi0gICAgICAg
ICAgICBpZiBsZW4oZGF0YSkgPT0gMDoKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZp
cnN0X29jdGV0IHwgMHg0MgotICAgICAgICAgICAgaWYgYnl0ZXNfY2h1bmtlZCA9PSBsZW4oY29t
cHJlc3NlZF9wYXlsb2FkKToKLSAgICAgICAgICAgICAgICBmaXJzdF9vY3RldCA9IGZpcnN0X29j
dGV0IHwgMHg4MAotCi0gICAgICAgICAgICBkYXRhICs9ICclYyVjJyAlIChmaXJzdF9vY3RldCwg
Y2h1bmtfc2l6ZSB8IDB4ODApCi0gICAgICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY2h1bmsp
Ci0KLSAgICAgICAgICAgIGZyYW1lX2NvdW50ICs9IDEKLQotICAgICAgICBwcmludCAiQ2h1bmsg
c2l6ZXM6ICVyIiAlIGNodW5rX3NpemVzCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oY2h1
bmtfc2l6ZXMpID4gMTApCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9
ICdceDg4XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2Qg
YnllJykKLQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAot
ICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0
YSwgcGVybWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX3R3b19tZXNzYWdlcyhzZWxmKToKLSAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAg
ICAgICAgZGF0YSA9ICcnCi0KLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNv
bXByZXNzKCdIZWxsb1dlYlNvY2tldCcpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29t
cHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8g
PSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAgICAgICAgc3BsaXRfcG9zaXRpb24gPSBsZW4oY29t
cHJlc3NlZF9oZWxsbykgLyAyCi0gICAgICAgIGRhdGEgKz0gJ1x4NDElYycgJSAoc3BsaXRfcG9z
aXRpb24gfCAweDgwKQotICAgICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF9oZWxs
b1s6c3BsaXRfcG9zaXRpb25dKQotCi0gICAgICAgIGRhdGEgKz0gJ1x4ODAlYycgJSAoKGxlbihj
b21wcmVzc2VkX2hlbGxvKSAtIHNwbGl0X3Bvc2l0aW9uKSB8IDB4ODApCi0gICAgICAgIGRhdGEg
Kz0gX21hc2tfaHliaShjb21wcmVzc2VkX2hlbGxvW3NwbGl0X3Bvc2l0aW9uOl0pCi0KLSAgICAg
ICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgICAgIHpsaWIuWl9E
RUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVELCAtemxpYi5NQVhfV0JJVFMpCi0KLSAg
ICAgICAgY29tcHJlc3NlZF93b3JsZCA9IGNvbXByZXNzLmNvbXByZXNzKCdXb3JsZCcpCi0gICAg
ICAgIGNvbXByZXNzZWRfd29ybGQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gp
Ci0gICAgICAgIGNvbXByZXNzZWRfd29ybGQgPSBjb21wcmVzc2VkX3dvcmxkWzotNF0KLSAgICAg
ICAgZGF0YSArPSAnXHhjMSVjJyAlIChsZW4oY29tcHJlc3NlZF93b3JsZCkgfCAweDgwKQotICAg
ICAgICBkYXRhICs9IF9tYXNrX2h5YmkoY29tcHJlc3NlZF93b3JsZCkKLQotICAgICAgICAjIENs
b3NlIGZyYW1lCi0gICAgICAgIGRhdGEgKz0gJ1x4ODhceDhhJyArIF9tYXNrX2h5Ymkoc3RydWN0
LnBhY2soJyFIJywgMTAwMCkgKyAnR29vZCBieWUnKQotCi0gICAgICAgIGV4dGVuc2lvbiA9IGNv
bW1vbi5FeHRlbnNpb25QYXJhbWV0ZXIoCi0gICAgICAgICAgICAgICAgY29tbW9uLlBFUk1FU1NB
R0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
ZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgICAgIGRhdGEsIHBlcm1lc3NhZ2VfZGVmbGF0ZV9y
ZXF1ZXN0PWV4dGVuc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG9XZWJTb2Nr
ZXQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnV29ybGQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVl
c3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX21peGVkX2J0eXBlKHNlbGYpOgot
ICAgICAgICAiIiJUZXN0IHRoYXQgYSBtZXNzYWdlIGNvbXByZXNzZWQgdXNpbmcgbG90cyBvZiBE
RUZMQVRFIGJsb2NrcyB3aXRoCi0gICAgICAgIHZhcmlvdXMgZmx1c2ggbW9kZSBpcyBjb3JyZWN0
bHkgcmVjZWl2ZWQuCi0gICAgICAgICIiIgotCi0gICAgICAgIHJhbmRvbS5zZWVkKGE9MCkKLSAg
ICAgICAgcGF5bG9hZCA9ICcnLmpvaW4oCi0gICAgICAgICAgICBbY2hyKHJhbmRvbS5yYW5kaW50
KDAsIDI1NSkpIGZvciBpIGluIHhyYW5nZSgxMDAwKV0pCi0KLSAgICAgICAgY29tcHJlc3MgPSBO
b25lCi0KLSAgICAgICAgIyBGcmFnbWVudCB0aGUgY29tcHJlc3NlZCBwYXlsb2FkIGludG8gbG90
cyBvZiBmcmFtZXMuCi0gICAgICAgIGJ5dGVzX2NodW5rZWQgPSAwCi0gICAgICAgIGNvbXByZXNz
ZWRfcGF5bG9hZCA9ICcnCi0KLSAgICAgICAgY2h1bmtfc2l6ZXMgPSBbXQotICAgICAgICBtZXRo
b2RzID0gW10KLSAgICAgICAgc3luY191c2VkID0gRmFsc2UKLSAgICAgICAgZmluaXNoX3VzZWQg
PSBGYWxzZQotCi0gICAgICAgIHdoaWxlIGJ5dGVzX2NodW5rZWQgPCBsZW4ocGF5bG9hZCk6Ci0g
ICAgICAgICAgICAjIE1ha2Ugc3VyZSBhdCBsZWFzdCAxMCBjaHVua3MgYXJlIGNyZWF0ZWQuCi0g
ICAgICAgICAgICBjaHVua19zaXplID0gcmFuZG9tLnJhbmRpbnQoCi0gICAgICAgICAgICAgICAg
MSwgbWluKDEwMCwgbGVuKHBheWxvYWQpIC0gYnl0ZXNfY2h1bmtlZCkpCi0gICAgICAgICAgICBj
aHVua19zaXplcy5hcHBlbmQoY2h1bmtfc2l6ZSkKLSAgICAgICAgICAgIGNodW5rID0gcGF5bG9h
ZFtieXRlc19jaHVua2VkOmJ5dGVzX2NodW5rZWQgKyBjaHVua19zaXplXQotCi0gICAgICAgICAg
ICBieXRlc19jaHVua2VkICs9IGNodW5rX3NpemUKLQotICAgICAgICAgICAgaWYgY29tcHJlc3Mg
aXMgTm9uZToKLSAgICAgICAgICAgICAgICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0g
ICAgICAgICAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLAotICAgICAgICAg
ICAgICAgICAgICB6bGliLkRFRkxBVEVELAotICAgICAgICAgICAgICAgICAgICAtemxpYi5NQVhf
V0JJVFMpCi0KLSAgICAgICAgICAgIGlmIGJ5dGVzX2NodW5rZWQgPT0gbGVuKHBheWxvYWQpOgot
ICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhj
aHVuaykKLSAgICAgICAgICAgICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1
c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2Fk
ID0gY29tcHJlc3NlZF9wYXlsb2FkWzotNF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgbWV0aG9kID0gcmFuZG9tLnJhbmRpbnQoMCwgMSkKLSAgICAgICAgICAgICAgICBtZXRo
b2RzLmFwcGVuZChtZXRob2QpCi0gICAgICAgICAgICAgICAgaWYgbWV0aG9kID09IDA6Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbXByZXNzZWRfcGF5bG9hZCArPSBjb21wcmVzcy5jb21wcmVzcyhj
aHVuaykKLSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3NlZF9wYXlsb2FkICs9IGNvbXByZXNz
LmZsdXNoKHpsaWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICAgICAgICAgICAgICBzeW5jX3VzZWQg
PSBUcnVlCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgY29tcHJl
c3NlZF9wYXlsb2FkICs9IGNvbXByZXNzLmNvbXByZXNzKGNodW5rKQotICAgICAgICAgICAgICAg
ICAgICBjb21wcmVzc2VkX3BheWxvYWQgKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX0ZJTklTSCkK
LSAgICAgICAgICAgICAgICAgICAgY29tcHJlc3MgPSBOb25lCi0gICAgICAgICAgICAgICAgICAg
IGZpbmlzaF91c2VkID0gVHJ1ZQotCi0gICAgICAgIHByaW50ICJDaHVuayBzaXplczogJXIiICUg
Y2h1bmtfc2l6ZXMKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXplcykgPiAx
MCkKLSAgICAgICAgcHJpbnQgIk1ldGhvZHM6ICVyIiAlIG1ldGhvZHMKLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKHN5bmNfdXNlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZpbmlzaF91c2Vk
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgxMjUgPCBsZW4oY29tcHJlc3NlZF9wYXlsb2Fk
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjb21wcmVzc2VkX3BheWxvYWQpIDwgNjU1
MzYpCi0gICAgICAgIGRhdGEgPSAnXHhjMlx4ZmUnICsgc3RydWN0LnBhY2soJyFIJywgbGVuKGNv
bXByZXNzZWRfcGF5bG9hZCkpCi0gICAgICAgIGRhdGEgKz0gX21hc2tfaHliaShjb21wcmVzc2Vk
X3BheWxvYWQpCi0KLSAgICAgICAgIyBDbG9zZSBmcmFtZQotICAgICAgICBkYXRhICs9ICdceDg4
XHg4YScgKyBfbWFza19oeWJpKHN0cnVjdC5wYWNrKCchSCcsIDEwMDApICsgJ0dvb2QgYnllJykK
LQotICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAg
ICAgICAgY29tbW9uLlBFUk1FU1NBR0VfREVGTEFURV9FWFRFTlNJT04pCi0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3RfZnJvbV9yYXdkYXRhKAotICAgICAgICAgICAgZGF0YSwgcGVy
bWVzc2FnZV9kZWZsYXRlX3JlcXVlc3Q9ZXh0ZW5zaW9uKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBheWxvYWQsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3QpKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkp
Ci0KLQotY2xhc3MgUGVyTWVzc2FnZUNvbXByZXNzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0g
ICAgIiIiVGVzdHMgZm9yIGNoZWNraW5nIHBlcm1lc3NhZ2UtY29tcHJlc3Npb24gZXh0ZW5zaW9u
LiIiIgotCi0gICAgZGVmIHRlc3RfZGVmbGF0ZV9yZXNwb25zZV9wYXJhbWV0ZXJzKHNlbGYpOgot
ICAgICAgICBleHRlbnNpb24gPSBjb21tb24uRXh0ZW5zaW9uUGFyYW1ldGVyKAotICAgICAgICAg
ICAgY29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICBleHRl
bnNpb24uYWRkX3BhcmFtZXRlcignbWV0aG9kJywgJ2RlZmxhdGUnKQotICAgICAgICBwcm9jZXNz
b3IgPSBQZXJNZXNzYWdlQ29tcHJlc3NFeHRlbnNpb25Qcm9jZXNzb3IoZXh0ZW5zaW9uKQotICAg
ICAgICByZXNwb25zZSA9IHByb2Nlc3Nvci5nZXRfZXh0ZW5zaW9uX3Jlc3BvbnNlKCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnZGVmbGF0ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
cmVzcG9uc2UuZ2V0X3BhcmFtZXRlcl92YWx1ZSgnbWV0aG9kJykpCi0KLSAgICAgICAgZXh0ZW5z
aW9uID0gY29tbW9uLkV4dGVuc2lvblBhcmFtZXRlcigKLSAgICAgICAgICAgIGNvbW1vbi5QRVJN
RVNTQUdFX0NPTVBSRVNTSU9OX0VYVEVOU0lPTikKLSAgICAgICAgZXh0ZW5zaW9uLmFkZF9wYXJh
bWV0ZXIoJ21ldGhvZCcsICdkZWZsYXRlJykKLSAgICAgICAgcHJvY2Vzc29yID0gUGVyTWVzc2Fn
ZUNvbXByZXNzRXh0ZW5zaW9uUHJvY2Vzc29yKGV4dGVuc2lvbikKLQotICAgICAgICBkZWYgX2Nv
bXByZXNzaW9uX3Byb2Nlc3Nvcl9ob29rKGNvbXByZXNzaW9uX3Byb2Nlc3Nvcik6Ci0gICAgICAg
ICAgICBjb21wcmVzc2lvbl9wcm9jZXNzb3Iuc2V0X2NsaWVudF9tYXhfd2luZG93X2JpdHMoOCkK
LSAgICAgICAgICAgIGNvbXByZXNzaW9uX3Byb2Nlc3Nvci5zZXRfY2xpZW50X25vX2NvbnRleHRf
dGFrZW92ZXIoVHJ1ZSkKLSAgICAgICAgcHJvY2Vzc29yLnNldF9jb21wcmVzc2lvbl9wcm9jZXNz
b3JfaG9vaygKLSAgICAgICAgICAgIF9jb21wcmVzc2lvbl9wcm9jZXNzb3JfaG9vaykKLSAgICAg
ICAgcmVzcG9uc2UgPSBwcm9jZXNzb3IuZ2V0X2V4dGVuc2lvbl9yZXNwb25zZSgpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICAnZGVmbGF0ZTsgY2xpZW50X21heF93aW5k
b3dfYml0cz04OyBjbGllbnRfbm9fY29udGV4dF90YWtlb3ZlcicsCi0gICAgICAgICAgICByZXNw
b25zZS5nZXRfcGFyYW1ldGVyX3ZhbHVlKCdtZXRob2QnKSkKLQotCi1jbGFzcyBNZXNzYWdlVGVz
dEhpeGllNzUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3RzIGZvciBkcmFmdC1oaXhp
ZS10aGV3ZWJzb2NrZXRwcm90b2NvbC03NiBzdHJlYW0gY2xhc3MuIiIiCi0KLSAgICBkZWYgdGVz
dF9zZW5kX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3Rf
aGl4aWU3NSgpCi0gICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVlc3QsICdIZWxsbycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBIZWxsb1x4ZmYnLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX21lc3NhZ2VfdW5pY29k
ZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCkKLSAg
ICAgICAgbXNndXRpbC5zZW5kX21lc3NhZ2UocmVxdWVzdCwgdSdcdTY1ZTUnKQotICAgICAgICAj
IFUrNjVlNSBpcyBlbmNvZGVkIGFzIGU2LDk3LGE1IGluIFVURi04Ci0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoJ1x4MDBceGU2XHg5N1x4YTVceGZmJywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9yZWNl
aXZlX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4
aWU3NSgnXHgwMEhlbGxvXHhmZlx4MDBXb3JsZCFceGZmJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnV29ybGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVz
dCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29kZShzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDAwXHhlNlx4OWNceGFjXHhm
ZicpCi0gICAgICAgICMgVSs2NzJjIGlzIGVuY29kZWQgYXMgZTYsOWMsYWMgaW4gVVRGLTgKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1J1x1NjcyYycsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdl
KHJlcXVlc3QpKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9tZXNzYWdlX2Vycm9uZW91c191bmlj
b2RlKHNlbGYpOgotICAgICAgICAjIFx4ODAgYW5kIFx4ODEgYXJlIGludmFsaWQgYXMgVVRGLTgu
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NSgnXHgwMFx4ODBceDgx
XHhmZicpCi0gICAgICAgICMgSW52YWxpZCBjaGFyYWN0ZXJzIHNob3VsZCBiZSByZXBsYWNlZCB3
aXRoCi0gICAgICAgICMgVStmZmZkIFJFUExBQ0VNRU5UIENIQVJBQ1RFUgotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHUnXHVmZmZkXHVmZmZkJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVx
dWVzdCkpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfZGlzY2FyZChzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdF9oaXhpZTc1KCdceDgwXHgwNklHTk9SRVx4
MDBIZWxsb1x4ZmYnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAn
XHgwMURJU1JFR0FSRFx4ZmZceDAwV29ybGQhXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ0hlbGxvJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ1dvcmxkIScsIG1zZ3V0aWwucmVjZWl2ZV9tZXNzYWdlKHJlcXVlc3Qp
KQotCi0KLWNsYXNzIE1lc3NhZ2VSZWNlaXZlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAg
ICIiIlRlc3RzIHRoZSBTdHJlYW0gY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0g
ICAgZGVmIHRlc3RfcXVldWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2Nr
aW5nX3JlcXVlc3QoKQotICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJlY2VpdmVy
KHJlcXVlc3QpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZWNlaXZlci5yZWNl
aXZlX25vd2FpdCgpKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoJ1x4
ODFceDg2JyArIF9tYXNrX2h5YmkoJ0hlbGxvIScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdIZWxsbyEnLCByZWNlaXZlci5yZWNlaXZlKCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uo
c2VsZik6Ci0gICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAg
ICBkZWYgb25tZXNzYWdlX2hhbmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2Vf
cXVldWUucHV0KG1lc3NhZ2UpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdf
cmVxdWVzdCgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVx
dWVzdCwgb25tZXNzYWdlX2hhbmRsZXIpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcygnXHg4MVx4ODYnICsgX21hc2tfaHliaSgnSGVsbG8hJykpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ0hlbGxvIScsIG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBN
ZXNzYWdlUmVjZWl2ZXJIaXhpZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVz
dHMgdGhlIFN0cmVhbUhpeGllNzUgY2xhc3MgdXNpbmcgTWVzc2FnZVJlY2VpdmVyLiIiIgotCi0g
ICAgZGVmIHRlc3RfcXVldWUoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2Nr
aW5nX3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHJlY2VpdmVyID0gbXNndXRpbC5NZXNzYWdl
UmVjZWl2ZXIocmVxdWVzdCkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHJlY2Vp
dmVyLnJlY2VpdmVfbm93YWl0KCkpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygnXHgwMEhlbGxvIVx4ZmYnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdIZWxsbyEn
LCByZWNlaXZlci5yZWNlaXZlKCkpCi0KLSAgICBkZWYgdGVzdF9vbm1lc3NhZ2Uoc2VsZik6Ci0g
ICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKLQotICAgICAgICBkZWYgb25t
ZXNzYWdlX2hhbmRsZXIobWVzc2FnZSk6Ci0gICAgICAgICAgICBvbm1lc3NhZ2VfcXVldWUucHV0
KG1lc3NhZ2UpCi0KLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdF9o
aXhpZTc1KCkKLSAgICAgICAgcmVjZWl2ZXIgPSBtc2d1dGlsLk1lc3NhZ2VSZWNlaXZlcihyZXF1
ZXN0LCBvbm1lc3NhZ2VfaGFuZGxlcikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKCdceDAwSGVsbG8hXHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxv
IScsIG9ubWVzc2FnZV9xdWV1ZS5nZXQoKSkKLQotCi1jbGFzcyBNZXNzYWdlU2VuZGVyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVhbSBjbGFzcyB1c2luZyBN
ZXNzYWdlU2VuZGVyLiIiIgotCi0gICAgZGVmIHRlc3Rfc2VuZChzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0
aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToK
LSAgICAgICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNz
YWdlU2VuZGVyLgotICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBj
YW5ub3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMg
aW4gYSBzZXBhcmF0ZSB0aHJlYWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgp
Ci0KLSAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0
KGJ5dGVzKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3QoKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUgPSB3cml0ZQotCi0gICAgICAgIHNlbmRl
ciA9IG1zZ3V0aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5k
X25vd2FpdCgnSGVsbG8nKQotICAgICAgICBzZW5kZXIuc2VuZF9ub3dhaXQoJ1dvcmxkJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHg4MVx4MDVIZWxsbycsIHNlbmRfcXVldWUuZ2V0KCkp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ODFceDA1V29ybGQnLCBzZW5kX3F1ZXVlLmdl
dCgpKQotCi0KLWNsYXNzIE1lc3NhZ2VTZW5kZXJIaXhpZTc1VGVzdCh1bml0dGVzdC5UZXN0Q2Fz
ZSk6Ci0gICAgIiIiVGVzdHMgdGhlIFN0cmVhbUhpeGllNzUgY2xhc3MgdXNpbmcgTWVzc2FnZVNl
bmRlci4iIiIKLQotICAgIGRlZiB0ZXN0X3NlbmQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBf
Y3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4aWU3NSgpCi0gICAgICAgIHNlbmRlciA9IG1zZ3V0
aWwuTWVzc2FnZVNlbmRlcihyZXF1ZXN0KQotCi0gICAgICAgIHNlbmRlci5zZW5kKCdXb3JsZCcp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBXb3JsZFx4ZmYnLCByZXF1ZXN0LmNvbm5l
Y3Rpb24ud3JpdHRlbl9kYXRhKCkpCi0KLSAgICBkZWYgdGVzdF9zZW5kX25vd2FpdChzZWxmKToK
LSAgICAgICAgIyBVc2UgYSBxdWV1ZSB0byBjaGVjayB0aGUgYnl0ZXMgd3JpdHRlbiBieSBNZXNz
YWdlU2VuZGVyLgotICAgICAgICAjIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSBj
YW5ub3QgYmUgdXNlZCBoZXJlIGJlY2F1c2UKLSAgICAgICAgIyBNZXNzYWdlU2VuZGVyIHJ1bnMg
aW4gYSBzZXBhcmF0ZSB0aHJlYWQuCi0gICAgICAgIHNlbmRfcXVldWUgPSBRdWV1ZS5RdWV1ZSgp
Ci0KLSAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKLSAgICAgICAgICAgIHNlbmRfcXVldWUucHV0
KGJ5dGVzKQotCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX2Jsb2NraW5nX3JlcXVlc3RfaGl4
aWU3NSgpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSA9IHdyaXRlCi0KLSAgICAg
ICAgc2VuZGVyID0gbXNndXRpbC5NZXNzYWdlU2VuZGVyKHJlcXVlc3QpCi0KLSAgICAgICAgc2Vu
ZGVyLnNlbmRfbm93YWl0KCdIZWxsbycpCi0gICAgICAgIHNlbmRlci5zZW5kX25vd2FpdCgnV29y
bGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwSGVsbG9ceGZmJywgc2VuZF9xdWV1
ZS5nZXQoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFdvcmxkXHhmZicsIHNlbmRf
cXVldWUuZ2V0KCkpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVz
dC5tYWluKCkKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rl
c3QvdGVzdF9tdXgucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXV4LnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBkNDU5ODk0NGUwODdjYmQyYzJiMmNlMmE0YjA4OWFhZmQ3YTMzNGMy
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvdGVzdF9tdXgucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMDg5ICswLDAgQEAKLSMhL3Vz
ci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5cmlnaHQgMjAxMiwgR29vZ2xlIEluYy4KLSMgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0
OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBp
biB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUg
SW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8g
ZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJl
IHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVU
T1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBP
UiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9S
IFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIG11
eCBtb2R1bGUuIiIiCi0KLWltcG9ydCBRdWV1ZQotaW1wb3J0IGNvcHkKLWltcG9ydCBsb2dnaW5n
Ci1pbXBvcnQgb3B0cGFyc2UKLWltcG9ydCBzdHJ1Y3QKLWltcG9ydCBzeXMKLWltcG9ydCB1bml0
dGVzdAotaW1wb3J0IHRpbWUKLWltcG9ydCB6bGliCi0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMg
VXBkYXRlIHN5cy5wYXRoIHRvIGxvY2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9t
IG1vZF9weXdlYnNvY2tldCBpbXBvcnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgbXV4Ci1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2UgaW1wb3J0IENvbm5lY3Rp
b25UZXJtaW5hdGVkRXhjZXB0aW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2Jhc2Ug
aW1wb3J0IFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24KLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9z
dHJlYW1faHliaSBpbXBvcnQgRnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgU3RyZWFtCi1mcm9tIG1vZF9weXdlYnNvY2tldC5fc3RyZWFtX2h5YmkgaW1wb3J0
IFN0cmVhbU9wdGlvbnMKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHliaSBpbXBvcnQg
Y3JlYXRlX2JpbmFyeV9mcmFtZQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuX3N0cmVhbV9oeWJpIGlt
cG9ydCBjcmVhdGVfY2xvc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0Ll9zdHJlYW1faHli
aSBpbXBvcnQgY3JlYXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkKLWZyb20gbW9kX3B5d2Vic29j
a2V0Ll9zdHJlYW1faHliaSBpbXBvcnQgcGFyc2VfZnJhbWUKLWZyb20gbW9kX3B5d2Vic29ja2V0
LmV4dGVuc2lvbnMgaW1wb3J0IE11eEV4dGVuc2lvblByb2Nlc3NvcgotCi0KLWltcG9ydCBtb2Nr
Ci0KLQotX1RFU1RfSEVBREVSUyA9IHsnSG9zdCc6ICdzZXJ2ZXIuZXhhbXBsZS5jb20nLAotICAg
ICAgICAgICAgICAgICAnVXBncmFkZSc6ICd3ZWJzb2NrZXQnLAotICAgICAgICAgICAgICAgICAn
Q29ubmVjdGlvbic6ICdVcGdyYWRlJywKLSAgICAgICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQt
S2V5JzogJ2RHaGxJSE5oYlhCc1pTQnViMjVqWlE9PScsCi0gICAgICAgICAgICAgICAgICdTZWMt
V2ViU29ja2V0LVZlcnNpb24nOiAnMTMnLAotICAgICAgICAgICAgICAgICAnT3JpZ2luJzogJ2h0
dHA6Ly9leGFtcGxlLmNvbSd9Ci0KLQotY2xhc3MgX091dGdvaW5nQ2hhbm5lbERhdGEob2JqZWN0
KToKLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYubWVzc2FnZXMgPSBbXQot
ICAgICAgICBzZWxmLmNvbnRyb2xfbWVzc2FnZXMgPSBbXQotCi0gICAgICAgIHNlbGYuYnVpbGRl
ciA9IG11eC5fSW5uZXJNZXNzYWdlQnVpbGRlcigpCi0KLWNsYXNzIF9Nb2NrTXV4Q29ubmVjdGlv
bihtb2NrLk1vY2tCbG9ja2luZ0Nvbm4pOgotICAgICIiIk1vY2sgY2xhc3Mgb2YgbW9kX3B5dGhv
biBjb25uZWN0aW9uIGZvciBtdXguIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAg
ICAgIG1vY2suTW9ja0Jsb2NraW5nQ29ubi5fX2luaXRfXyhzZWxmKQotICAgICAgICBzZWxmLl9j
b250cm9sX2Jsb2NrcyA9IFtdCi0gICAgICAgIHNlbGYuX2NoYW5uZWxfZGF0YSA9IHt9Ci0KLSAg
ICAgICAgc2VsZi5fY3VycmVudF9vcGNvZGUgPSBOb25lCi0gICAgICAgIHNlbGYuX3BlbmRpbmdf
ZnJhZ21lbnRzID0gW10KLQotICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZV9jb2RlID0gTm9uZQot
Ci0gICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiJPdmVycmlkZSBNb2NrQmxv
Y2tpbmdDb25uLndyaXRlLiIiIgotCi0gICAgICAgIHNlbGYuX2N1cnJlbnRfZGF0YSA9IGRhdGEK
LSAgICAgICAgc2VsZi5fcG9zaXRpb24gPSAwCi0KLSAgICAgICAgZGVmIF9yZWNlaXZlX2J5dGVz
KGxlbmd0aCk6Ci0gICAgICAgICAgICBpZiBzZWxmLl9wb3NpdGlvbiArIGxlbmd0aCA+IGxlbihz
ZWxmLl9jdXJyZW50X2RhdGEpOgotICAgICAgICAgICAgICAgIHJhaXNlIENvbm5lY3Rpb25UZXJt
aW5hdGVkRXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAgICAnRmFpbGVkIHRvIHJlY2VpdmUg
JWQgYnl0ZXMgZnJvbSBlbmNhcHN1bGF0ZWQgJwotICAgICAgICAgICAgICAgICAgICAnZnJhbWUn
ICUgbGVuZ3RoKQotICAgICAgICAgICAgZGF0YSA9IHNlbGYuX2N1cnJlbnRfZGF0YVtzZWxmLl9w
b3NpdGlvbjpzZWxmLl9wb3NpdGlvbitsZW5ndGhdCi0gICAgICAgICAgICBzZWxmLl9wb3NpdGlv
biArPSBsZW5ndGgKLSAgICAgICAgICAgIHJldHVybiBkYXRhCi0KLSAgICAgICAgIyBQYXJzZSBw
aHlzaWNhbCBmcmFtZXMgYW5kIGFzc2VtYmxlIGEgbWVzc2FnZSBpZiB0aGUgbWVzc2FnZSBpcwot
ICAgICAgICAjIGZyYWdtZW50ZWQuCi0gICAgICAgIG9wY29kZSwgcGF5bG9hZCwgZmluLCByc3Yx
LCByc3YyLCByc3YzID0gKAotICAgICAgICAgICAgcGFyc2VfZnJhbWUoX3JlY2VpdmVfYnl0ZXMs
IHVubWFza19yZWNlaXZlPUZhbHNlKSkKLQotICAgICAgICBzZWxmLl9wZW5kaW5nX2ZyYWdtZW50
cy5hcHBlbmQocGF5bG9hZCkKLQotICAgICAgICBpZiBzZWxmLl9jdXJyZW50X29wY29kZSBpcyBO
b25lOgotICAgICAgICAgICAgaWYgb3Bjb2RlID09IGNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9O
OgotICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignU2VuZGluZyBpbnZhbGlkIGNvbnRp
bnVhdGlvbiBvcGNvZGUnKQotICAgICAgICAgICAgc2VsZi5fY3VycmVudF9vcGNvZGUgPSBvcGNv
ZGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIG9wY29kZSAhPSBjb21tb24uT1BDT0RF
X0NPTlRJTlVBVElPTjoKLSAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ1NlbmRpbmcg
aW52YWxpZCBvcGNvZGUgJWQnICUgb3Bjb2RlKQotICAgICAgICBpZiBub3QgZmluOgotICAgICAg
ICAgICAgcmV0dXJuCi0KLSAgICAgICAgaW5uZXJfZnJhbWVfZGF0YSA9ICcnLmpvaW4oc2VsZi5f
cGVuZGluZ19mcmFnbWVudHMpCi0gICAgICAgIHNlbGYuX3BlbmRpbmdfZnJhZ21lbnRzID0gW10K
LSAgICAgICAgc2VsZi5fY3VycmVudF9vcGNvZGUgPSBOb25lCi0KLSAgICAgICAgIyBIYW5kbGUg
YSBjb250cm9sIG1lc3NhZ2Ugb24gdGhlIHBoeXNpY2FsIGNoYW5uZWwuCi0gICAgICAgICMgVE9E
TyhiYXNoaSk6IFN1cHBvcnQgb3RoZXIgb3Bjb2RlcyBpZiBuZWVkZWQuCi0gICAgICAgIGlmIG9w
Y29kZSA9PSBjb21tb24uT1BDT0RFX0NMT1NFOgotICAgICAgICAgICAgaWYgbGVuKHBheWxvYWQp
ID49IDI6Ci0gICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfY2xvc2VfY29kZSA9IHN0cnVjdC51
bnBhY2soJyFIJywgcGF5bG9hZFs6Ml0pWzBdCi0gICAgICAgICAgICBjbG9zZV9ib2R5ID0gY3Jl
YXRlX2Nsb3NpbmdfaGFuZHNoYWtlX2JvZHkoCi0gICAgICAgICAgICAgICAgY29tbW9uLlNUQVRV
U19OT1JNQUxfQ0xPU1VSRSwgJycpCi0gICAgICAgICAgICBjbG9zZV9mcmFtZSA9IGNyZWF0ZV9j
bG9zZV9mcmFtZShjbG9zZV9ib2R5LCBtYXNrPVRydWUpCi0gICAgICAgICAgICBzZWxmLnB1dF9i
eXRlcyhjbG9zZV9mcmFtZSkKLSAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgICMgUGFyc2Ug
dGhlIHBheWxvYWQgb2YgdGhlIG1lc3NhZ2Ugb24gcGh5c2ljYWwgY2hhbm5lbC4KLSAgICAgICAg
cGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoaW5uZXJfZnJhbWVfZGF0YSkKLSAg
ICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBpZiBj
aGFubmVsX2lkID09IG11eC5fQ09OVFJPTF9DSEFOTkVMX0lEOgotICAgICAgICAgICAgc2VsZi5f
Y29udHJvbF9ibG9ja3MuZXh0ZW5kKGxpc3QocGFyc2VyLnJlYWRfY29udHJvbF9ibG9ja3MoKSkp
Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBpZiBub3QgY2hhbm5lbF9pZCBpbiBzZWxm
Ll9jaGFubmVsX2RhdGE6Ci0gICAgICAgICAgICBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9p
ZF0gPSBfT3V0Z29pbmdDaGFubmVsRGF0YSgpCi0gICAgICAgIGNoYW5uZWxfZGF0YSA9IHNlbGYu
X2NoYW5uZWxfZGF0YVtjaGFubmVsX2lkXQotCi0gICAgICAgICMgUGFyc2UgbG9naWNhbCBmcmFt
ZXMgYW5kIGFzc2VtYmxlIGFuIGlubmVyIChsb2dpY2FsKSBtZXNzYWdlLgotICAgICAgICAoaW5u
ZXJfZmluLCBpbm5lcl9yc3YxLCBpbm5lcl9yc3YyLCBpbm5lcl9yc3YzLCBpbm5lcl9vcGNvZGUs
Ci0gICAgICAgICBpbm5lcl9wYXlsb2FkKSA9IHBhcnNlci5yZWFkX2lubmVyX2ZyYW1lKCkKLSAg
ICAgICAgaW5uZXJfZnJhbWUgPSBGcmFtZShpbm5lcl9maW4sIGlubmVyX3JzdjEsIGlubmVyX3Jz
djIsIGlubmVyX3JzdjMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5uZXJfb3Bjb2Rl
LCBpbm5lcl9wYXlsb2FkKQotICAgICAgICBtZXNzYWdlID0gY2hhbm5lbF9kYXRhLmJ1aWxkZXIu
YnVpbGQoaW5uZXJfZnJhbWUpCi0gICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKLSAgICAgICAg
ICAgIHJldHVybgotCi0gICAgICAgIGlmIChtZXNzYWdlLm9wY29kZSA9PSBjb21tb24uT1BDT0RF
X1RFWFQgb3IKLSAgICAgICAgICAgIG1lc3NhZ2Uub3Bjb2RlID09IGNvbW1vbi5PUENPREVfQklO
QVJZKToKLSAgICAgICAgICAgIGNoYW5uZWxfZGF0YS5tZXNzYWdlcy5hcHBlbmQobWVzc2FnZS5w
YXlsb2FkKQotCi0gICAgICAgICAgICBzZWxmLm9uX2RhdGFfbWVzc2FnZShtZXNzYWdlLnBheWxv
YWQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjaGFubmVsX2RhdGEuY29udHJvbF9tZXNz
YWdlcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgeydvcGNvZGUnOiBtZXNzYWdlLm9wY29kZSwK
LSAgICAgICAgICAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLnBheWxvYWR9KQotCi0gICAgZGVm
IG9uX2RhdGFfbWVzc2FnZShzZWxmLCBtZXNzYWdlKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVm
IGdldF93cml0dGVuX2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5f
Y29udHJvbF9ibG9ja3MKLQotICAgIGRlZiBnZXRfd3JpdHRlbl9tZXNzYWdlcyhzZWxmLCBjaGFu
bmVsX2lkKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NoYW5uZWxfZGF0YVtjaGFubmVsX2lkXS5t
ZXNzYWdlcwotCi0gICAgZGVmIGdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoc2VsZiwgY2hh
bm5lbF9pZCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9jaGFubmVsX2RhdGFbY2hhbm5lbF9pZF0u
Y29udHJvbF9tZXNzYWdlcwotCi0KLWNsYXNzIF9GYWlsT25Xcml0ZUNvbm5lY3Rpb24oX01vY2tN
dXhDb25uZWN0aW9uKToKLSAgICAiIiJTcGVjaWNpYWxpemVkIHZlcnNpb24gb2YgX01vY2tNdXhD
b25uZWN0aW9uLiBJdHMgd3JpdGUoKSBtZXRob2QgcmFpc2VzCi0gICAgYW4gZXhjZXB0aW9uIGZv
ciB0ZXN0aW5nIHdoZW4gYSBkYXRhIG1lc3NhZ2UgaXMgd3JpdHRlbi4KLSAgICAiIiIKLQotICAg
IGRlZiBvbl9kYXRhX21lc3NhZ2Uoc2VsZiwgbWVzc2FnZSk6Ci0gICAgICAgICIiIk92ZXJyaWRl
IHRvIHJhaXNlIGFuIGV4Y2VwdGlvbi4iIiIKLQotICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0lu
dGVudGlvbmFsIGZhaWx1cmUnKQotCi0KLWNsYXNzIF9DaGFubmVsRXZlbnQob2JqZWN0KToKLSAg
ICAiIiJBIHN0cnVjdHVyZSB0aGF0IHJlY29yZHMgY2hhbm5lbCBldmVudHMuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucmVxdWVzdCA9IE5vbmUKLSAgICAgICAg
c2VsZi5tZXNzYWdlcyA9IFtdCi0gICAgICAgIHNlbGYuZXhjZXB0aW9uID0gTm9uZQotICAgICAg
ICBzZWxmLmNsaWVudF9pbml0aWF0ZWRfY2xvc2luZyA9IEZhbHNlCi0KLQotY2xhc3MgX011eE1v
Y2tEaXNwYXRjaGVyKG9iamVjdCk6Ci0gICAgIiIiTW9jayBjbGFzcyBvZiBkaXNwYXRjaC5EaXNw
YXRjaGVyIGZvciBtdXguIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNl
bGYuY2hhbm5lbF9ldmVudHMgPSB7fQotCi0gICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxm
LCByZXF1ZXN0KToKLSAgICAgICAgaWYgcmVxdWVzdC53c19yZXF1ZXN0ZWRfcHJvdG9jb2xzIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IHJlcXVlc3Qud3Nf
cmVxdWVzdGVkX3Byb3RvY29sc1swXQotCi0gICAgZGVmIF9kb19lY2hvKHNlbGYsIHJlcXVlc3Qs
IGNoYW5uZWxfZXZlbnRzKToKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIG1lc3Nh
Z2UgPSByZXF1ZXN0LndzX3N0cmVhbS5yZWNlaXZlX21lc3NhZ2UoKQotICAgICAgICAgICAgaWYg
bWVzc2FnZSA9PSBOb25lOgotICAgICAgICAgICAgICAgIGNoYW5uZWxfZXZlbnRzLmNsaWVudF9p
bml0aWF0ZWRfY2xvc2luZyA9IFRydWUKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAg
ICAgIGlmIG1lc3NhZ2UgPT0gJ0dvb2RieWUnOgotICAgICAgICAgICAgICAgIHJldHVybgotICAg
ICAgICAgICAgY2hhbm5lbF9ldmVudHMubWVzc2FnZXMuYXBwZW5kKG1lc3NhZ2UpCi0gICAgICAg
ICAgICAjIGVjaG8gYmFjawotICAgICAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNz
YWdlKG1lc3NhZ2UpCi0KLSAgICBkZWYgX2RvX3Bpbmcoc2VsZiwgcmVxdWVzdCwgY2hhbm5lbF9l
dmVudHMpOgotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1BpbmchJykKLQot
ICAgIGRlZiBfZG9fcGluZ193aGlsZV9oZWxsb193b3JsZChzZWxmLCByZXF1ZXN0LCBjaGFubmVs
X2V2ZW50cyk6Ci0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfbWVzc2FnZSgnSGVsbG8g
JywgZW5kPUZhbHNlKQotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX3BpbmcoJ1Bpbmch
JykKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2VuZF9tZXNzYWdlKCdXb3JsZCEnLCBlbmQ9
VHJ1ZSkKLQotICAgIGRlZiBfZG9fdHdvX3Bpbmdfd2hpbGVfaGVsbG9fd29ybGQoc2VsZiwgcmVx
dWVzdCwgY2hhbm5lbF9ldmVudHMpOgotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21l
c3NhZ2UoJ0hlbGxvICcsIGVuZD1GYWxzZSkKLSAgICAgICAgcmVxdWVzdC53c19zdHJlYW0uc2Vu
ZF9waW5nKCdQaW5nIScpCi0gICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLnNlbmRfcGluZygnUG9u
ZyEnKQotICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5zZW5kX21lc3NhZ2UoJ1dvcmxkIScsIGVu
ZD1UcnVlKQotCi0gICAgZGVmIHRyYW5zZmVyX2RhdGEoc2VsZiwgcmVxdWVzdCk6Ci0gICAgICAg
IHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXSA9IF9DaGFubmVsRXZlbnQo
KQotICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0ucmVxdWVz
dCA9IHJlcXVlc3QKLQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICAjIE5vdGU6IG1vcmUgaGFu
ZGxlciB3aWxsIGJlIGFkZGVkLgotICAgICAgICAgICAgaWYgcmVxdWVzdC51cmkuZW5kc3dpdGgo
J2VjaG8nKToKLSAgICAgICAgICAgICAgICBzZWxmLl9kb19lY2hvKHJlcXVlc3QsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5l
bF9pZF0pCi0gICAgICAgICAgICBlbGlmIHJlcXVlc3QudXJpLmVuZHN3aXRoKCdwaW5nJyk6Ci0g
ICAgICAgICAgICAgICAgc2VsZi5fZG9fcGluZyhyZXF1ZXN0LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc2VsZi5jaGFubmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAg
ICAgICAgICAgZWxpZiByZXF1ZXN0LnVyaS5lbmRzd2l0aCgndHdvX3Bpbmdfd2hpbGVfaGVsbG9f
d29ybGQnKToKLSAgICAgICAgICAgICAgICBzZWxmLl9kb190d29fcGluZ193aGlsZV9oZWxsb193
b3JsZCgKLSAgICAgICAgICAgICAgICAgICAgcmVxdWVzdCwgc2VsZi5jaGFubmVsX2V2ZW50c1ty
ZXF1ZXN0LmNoYW5uZWxfaWRdKQotICAgICAgICAgICAgZWxpZiByZXF1ZXN0LnVyaS5lbmRzd2l0
aCgncGluZ193aGlsZV9oZWxsb193b3JsZCcpOgotICAgICAgICAgICAgICAgIHNlbGYuX2RvX3Bp
bmdfd2hpbGVfaGVsbG9fd29ybGQoCi0gICAgICAgICAgICAgICAgICAgIHJlcXVlc3QsIHNlbGYu
Y2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXSkKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignQ2Fubm90IGhhbmRsZSBwYXRoICVyJyAl
IHJlcXVlc3QucGF0aCkKLSAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnNlcnZlcl90ZXJtaW5h
dGVkOgotICAgICAgICAgICAgICAgIHJlcXVlc3Qud3Nfc3RyZWFtLmNsb3NlX2Nvbm5lY3Rpb24o
KQotICAgICAgICBleGNlcHQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24sIGU6Ci0gICAg
ICAgICAgICBzZWxmLmNoYW5uZWxfZXZlbnRzW3JlcXVlc3QuY2hhbm5lbF9pZF0uZXhjZXB0aW9u
ID0gZQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uLCBlOgotICAgICAgICAgICAgc2VsZi5jaGFu
bmVsX2V2ZW50c1tyZXF1ZXN0LmNoYW5uZWxfaWRdLmV4Y2VwdGlvbiA9IGUKLSAgICAgICAgICAg
IHJhaXNlCi0KLQotZGVmIF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249Tm9uZSwgbG9n
aWNhbF9jaGFubmVsX2V4dGVuc2lvbnM9Tm9uZSk6Ci0gICAgaWYgY29ubmVjdGlvbiBpcyBOb25l
OgotICAgICAgICBjb25uZWN0aW9uID0gX01vY2tNdXhDb25uZWN0aW9uKCkKLQotICAgIHJlcXVl
c3QgPSBtb2NrLk1vY2tSZXF1ZXN0KHVyaT0nL2VjaG8nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlYWRlcnNfaW49X1RFU1RfSEVBREVSUywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25uZWN0aW9uPWNvbm5lY3Rpb24pCi0gICAgcmVxdWVzdC53c19zdHJlYW0g
PSBTdHJlYW0ocmVxdWVzdCwgb3B0aW9ucz1TdHJlYW1PcHRpb25zKCkpCi0gICAgcmVxdWVzdC5t
dXhfcHJvY2Vzc29yID0gTXV4RXh0ZW5zaW9uUHJvY2Vzc29yKAotICAgICAgICBjb21tb24uRXh0
ZW5zaW9uUGFyYW1ldGVyKGNvbW1vbi5NVVhfRVhURU5TSU9OKSkKLSAgICBpZiBsb2dpY2FsX2No
YW5uZWxfZXh0ZW5zaW9ucyBpcyBub3QgTm9uZToKLSAgICAgICAgcmVxdWVzdC5tdXhfcHJvY2Vz
c29yLnNldF9leHRlbnNpb25zKGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zKQotICAgIHJlcXVl
c3QubXV4X3Byb2Nlc3Nvci5zZXRfcXVvdGEoOCAqIDEwMjQpCi0gICAgcmV0dXJuIHJlcXVlc3QK
LQotCi1kZWYgX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKGNoYW5uZWxfaWQsIGVu
Y29kaW5nLCBlbmNvZGVkX2hhbmRzaGFrZSk6Ci0gICAgIyBBbGxvdyBpbnZhbGlkIGVuY29kaW5n
IGZvciB0ZXN0aW5nLgotICAgIGZpcnN0X2J5dGUgPSAoKG11eC5fTVVYX09QQ09ERV9BRERfQ0hB
Tk5FTF9SRVFVRVNUIDw8IDUpIHwgZW5jb2RpbmcpCi0gICAgcGF5bG9hZCA9IChjaHIoZmlyc3Rf
Ynl0ZSkgKwotICAgICAgICAgICAgICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZChjaGFubmVsX2lk
KSArCi0gICAgICAgICAgICAgICBtdXguX2VuY29kZV9udW1iZXIobGVuKGVuY29kZWRfaGFuZHNo
YWtlKSkgKwotICAgICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgcmV0dXJuIGNy
ZWF0ZV9iaW5hcnlfZnJhbWUoCi0gICAgICAgIChtdXguX2VuY29kZV9jaGFubmVsX2lkKG11eC5f
Q09OVFJPTF9DSEFOTkVMX0lEKSArIHBheWxvYWQpLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVh
dGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5uZWxfaWQsIGNvZGU9Tm9uZSwgbWVzc2FnZT0nJyk6
Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRlX2Ryb3BfY2hhbm5lbChjaGFubmVsX2lkLCBjb2Rl
LCBtZXNzYWdlKQotICAgIHJldHVybiBjcmVhdGVfYmluYXJ5X2ZyYW1lKAotICAgICAgICAobXV4
Ll9lbmNvZGVfY2hhbm5lbF9pZChtdXguX0NPTlRST0xfQ0hBTk5FTF9JRCkgKyBwYXlsb2FkKSwg
bWFzaz1UcnVlKQotCi0KLWRlZiBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lk
LCByZXBsZW5pc2hlZF9xdW90YSk6Ci0gICAgcGF5bG9hZCA9IG11eC5fY3JlYXRlX2Zsb3dfY29u
dHJvbChjaGFubmVsX2lkLCByZXBsZW5pc2hlZF9xdW90YSkKLSAgICByZXR1cm4gY3JlYXRlX2Jp
bmFyeV9mcmFtZSgKLSAgICAgICAgKG11eC5fZW5jb2RlX2NoYW5uZWxfaWQobXV4Ll9DT05UUk9M
X0NIQU5ORUxfSUQpICsgcGF5bG9hZCksIG1hc2s9VHJ1ZSkKLQotCi1kZWYgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQsIG1lc3NhZ2UsIG9wY29kZT1jb21tb24uT1BDT0RFX0JJTkFS
WSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsIHJzdjE9RmFsc2UsIHJzdjI9
RmFsc2UsIHJzdjM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1hc2s9VHJ1ZSk6
Ci0gICAgYml0cyA9IGNocigoZmluIDw8IDcpIHwgKHJzdjEgPDwgNikgfCAocnN2MiA8PCA1KSB8
IChyc3YzIDw8IDQpIHwgb3Bjb2RlKQotICAgIHBheWxvYWQgPSBtdXguX2VuY29kZV9jaGFubmVs
X2lkKGNoYW5uZWxfaWQpICsgYml0cyArIG1lc3NhZ2UKLSAgICByZXR1cm4gY3JlYXRlX2JpbmFy
eV9mcmFtZShwYXlsb2FkLCBtYXNrPVRydWUpCi0KLQotZGVmIF9jcmVhdGVfcmVxdWVzdF9oZWFk
ZXIocGF0aD0nL2VjaG8nLCBleHRlbnNpb25zPU5vbmUpOgotICAgIGhlYWRlcnMgPSAoCi0gICAg
ICAgICdHRVQgJXMgSFRUUC8xLjFcclxuJwotICAgICAgICAnSG9zdDogc2VydmVyLmV4YW1wbGUu
Y29tXHJcbicKLSAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAnT3Jp
Z2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJykgJSBwYXRoCi0gICAgaWYgZXh0ZW5zaW9uczoK
LSAgICAgICAgaGVhZGVycyArPSAnJXM6ICVzJyAlICgKLSAgICAgICAgICAgIGNvbW1vbi5TRUNf
V0VCU09DS0VUX0VYVEVOU0lPTlNfSEVBREVSLCBleHRlbnNpb25zKQotICAgIHJldHVybiBoZWFk
ZXJzCi0KLQotY2xhc3MgTXV4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0
dGVzdCBmb3IgbXV4IG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X2NoYW5uZWxfaWRfZGVjb2Rl
KHNlbGYpOgotICAgICAgICBkYXRhID0gJ1x4MDBceDAxXHhiZlx4ZmZceGRmXHhmZlx4ZmZceGZm
XHhmZlx4ZmZceGZmJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNl
cihkYXRhKQotICAgICAgICBjaGFubmVsX2lkID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCwgY2hhbm5lbF9pZCkKLSAgICAgICAgY2hhbm5lbF9p
ZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEs
IGNoYW5uZWxfaWQpCi0gICAgICAgIGNoYW5uZWxfaWQgPSBwYXJzZXIucmVhZF9jaGFubmVsX2lk
KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyICoqIDE0IC0gMSwgY2hhbm5lbF9pZCkKLSAg
ICAgICAgY2hhbm5lbF9pZCA9IHBhcnNlci5yZWFkX2NoYW5uZWxfaWQoKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKDIgKiogMjEgLSAxLCBjaGFubmVsX2lkKQotICAgICAgICBjaGFubmVsX2lk
ID0gcGFyc2VyLnJlYWRfY2hhbm5lbF9pZCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAq
KiAyOSAtIDEsIGNoYW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRhdGEp
LCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX2VuY29k
ZShzZWxmKToKLSAgICAgICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMCkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQg
PSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIgKiogMTQgLSAxKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdceGJmXHhmZicsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29k
ZV9jaGFubmVsX2lkKDIgKiogMTQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4YzBAXHgw
MCcsIGVuY29kZWQpCi0gICAgICAgIGVuY29kZWQgPSBtdXguX2VuY29kZV9jaGFubmVsX2lkKDIg
KiogMjEgLSAxKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGRmXHhmZlx4ZmYnLCBlbmNv
ZGVkKQotICAgICAgICBlbmNvZGVkID0gbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgyICoqIDIxKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGUwIFx4MDBceDAwJywgZW5jb2RlZCkKLSAgICAg
ICAgZW5jb2RlZCA9IG11eC5fZW5jb2RlX2NoYW5uZWxfaWQoMiAqKiAyOSAtIDEpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ZmZceGZmXHhmZlx4ZmYnLCBlbmNvZGVkKQotICAgICAgICAj
IGNoYW5uZWxfaWQgaXMgdG9vIGxhcmdlCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVl
RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fZW5jb2RlX2NoYW5uZWxfaWQs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIDIgKiogMjkpCi0KLSAgICBkZWYgdGVzdF9yZWFk
X211bHRpcGxlX2NvbnRyb2xfYmxvY2tzKHNlbGYpOgotICAgICAgICAjIFVzZSBBZGRDaGFubmVs
UmVxdWVzdCBiZWNhdXNlIGl0IGNhbiBjb250YWluIGFyYml0cmFyeSBsZW5ndGggb2YgZGF0YQot
ICAgICAgICBkYXRhID0gKCdceDAwXHgwMVx4MDFhJwotICAgICAgICAgICAgICAgICdceDAwXHgw
Mlx4N2QlcycKLSAgICAgICAgICAgICAgICAnXHgwMFx4MDNceDdlXHhmZlx4ZmYlcycKLSAgICAg
ICAgICAgICAgICAnXHgwMFx4MDRceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAxXHgwMFx4MDAl
cycpICUgKAotICAgICAgICAgICAgJ2EnICogMHg3ZCwgJ2InICogMHhmZmZmLCAnYycgKiAweDEw
MDAwKQotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQot
ICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoNCwgbGVuKGJsb2NrcykpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChtdXguX01VWF9PUENPREVfQUREX0NIQU5ORUxfUkVRVUVTVCwgYmxvY2tzWzBdLm9w
Y29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBibG9ja3NbMF0uY2hhbm5lbF9pZCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4oYmxvY2tzWzBdLmVuY29kZWRfaGFuZHNo
YWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hB
Tk5FTF9SRVFVRVNULCBibG9ja3NbMV0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KDIsIGJsb2Nrc1sxXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4N2Qs
IGxlbihibG9ja3NbMV0uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFOTkVMX1JFUVVFU1QsIGJsb2Nrc1syXS5vcGNv
ZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgYmxvY2tzWzJdLmNoYW5uZWxfaWQpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMHhmZmZmLCBsZW4oYmxvY2tzWzJdLmVuY29kZWRfaGFu
ZHNoYWtlKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERf
Q0hBTk5FTF9SRVFVRVNULCBibG9ja3NbM10ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKDQsIGJsb2Nrc1szXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDB4
MTAwMDAsIGxlbihibG9ja3NbM10uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwobGVuKGRhdGEpLCBwYXJzZXIuX3JlYWRfcG9zaXRpb24pCi0KLSAgICBkZWYg
dGVzdF9yZWFkX2FkZF9jaGFubmVsX3JlcXVlc3Qoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHgw
MFx4MDFceDAxYScKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIo
ZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2Nrcygp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9BRERfQ0hBTk5FTF9S
RVFVRVNULCBibG9ja3NbMF0ub3Bjb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGJs
b2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9j
a3NbMF0uZW5jb2RlZF9oYW5kc2hha2UpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9kcm9wX2NoYW5u
ZWwoc2VsZik6Ci0gICAgICAgIGRhdGEgPSAnXHg2MFx4MDFceDAwJwotICAgICAgICBwYXJzZXIg
PSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0
KHBhcnNlci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKGJsb2NrcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNo
YW5uZWxfaWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0RST1Bf
Q0hBTk5FTCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25l
LCBibG9ja3NbMF0uZHJvcF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGxlbihi
bG9ja3NbMF0uZHJvcF9tZXNzYWdlKSkKLQotICAgICAgICBkYXRhID0gJ1x4NjBceDAyXHgwOVx4
MDNceGU4U3VjY2VzcycKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJz
ZXIoZGF0YSkKLSAgICAgICAgYmxvY2tzID0gbGlzdChwYXJzZXIucmVhZF9jb250cm9sX2Jsb2Nr
cygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihibG9ja3MpKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKDIsIGJsb2Nrc1swXS5jaGFubmVsX2lkKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG11eC5fTVVYX09QQ09ERV9EUk9QX0NIQU5ORUwsIGJsb2Nrc1swXS5vcGNvZGUp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTAwMCwgYmxvY2tzWzBdLmRyb3BfY29kZSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnU3VjY2VzcycsIGJsb2Nrc1swXS5kcm9wX21lc3NhZ2Up
Ci0KLSAgICAgICAgIyBSZWFzb24gaXMgdG9vIHNob3J0LgotICAgICAgICBkYXRhID0gJ1x4NjBc
eDAxXHgwMVx4MDAnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2Vy
KGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENvbm5lY3Rpb25F
cnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBhcnNlci5yZWFk
X2NvbnRyb2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9mbG93X2NvbnRyb2woc2Vs
Zik6Ci0gICAgICAgIGRhdGEgPSAnXHg0MFx4MDFceDAyJwotICAgICAgICBwYXJzZXIgPSBtdXgu
X011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAgICBibG9ja3MgPSBsaXN0KHBhcnNl
ci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVu
KGJsb2NrcykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgYmxvY2tzWzBdLmNoYW5uZWxf
aWQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJP
TCwgYmxvY2tzWzBdLm9wY29kZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBibG9ja3Nb
MF0uc2VuZF9xdW90YSkKLQotICAgIGRlZiB0ZXN0X3JlYWRfbmV3X2NoYW5uZWxfc2xvdChzZWxm
KToKLSAgICAgICAgZGF0YSA9ICdceDgwXHgwMVx4MDJceDAyXHgwMycKLSAgICAgICAgcGFyc2Vy
ID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgIyBUT0RPKGJhc2hp
KTogSW1wbGVtZW50Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKG11eC5QaHlzaWNhbENvbm5l
Y3Rpb25FcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhOiBsaXN0KHBhcnNl
ci5yZWFkX2NvbnRyb2xfYmxvY2tzKCkpKQotCi0gICAgZGVmIHRlc3RfcmVhZF9pbnZhbGlkX251
bWJlcl9maWVsZF9pbl9jb250cm9sX2Jsb2NrKHNlbGYpOgotICAgICAgICAjIE5vIG51bWJlciBm
aWVsZC4KLSAgICAgICAgZGF0YSA9ICcnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQ
YXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Is
IHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBUaGUgbGFzdCB0d28gYnl0ZXMgYXJl
IG1pc3NpbmcuCi0gICAgICAgIGRhdGEgPSAnXHg3ZScKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9N
dXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFs
dWVFcnJvciwgcGFyc2VyLl9yZWFkX251bWJlcikKLQotICAgICAgICAjIE1pc3NpbmcgdGhlIGxh
c3Qgb25lIGJ5dGUuCi0gICAgICAgIGRhdGEgPSAnXHg3Zlx4MDBceDAwXHgwMFx4MDBceDAwXHgw
MVx4MDAnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRhdGEp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9udW1i
ZXIpCi0KLSAgICAgICAgIyBUaGUgbGVuZ3RoIG9mIG51bWJlciBmaWVsZCBpcyB0b28gbGFyZ2Uu
Ci0gICAgICAgIGRhdGEgPSAnXHg3Zlx4ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmZceGZmJwot
ICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRhKQotICAgICAg
ICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBwYXJzZXIuX3JlYWRfbnVtYmVyKQotCi0g
ICAgICAgICMgVGhlIG1zYiBvZiB0aGUgZmlyc3QgYnl0ZSBpcyBzZXQuCi0gICAgICAgIGRhdGEg
PSAnXHg4MCcKLSAgICAgICAgcGFyc2VyID0gbXV4Ll9NdXhGcmFtZVBheWxvYWRQYXJzZXIoZGF0
YSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcGFyc2VyLl9yZWFkX251
bWJlcikKLQotICAgICAgICAjIFVzaW5nIDMgYnl0ZXMgZW5jb2RpbmcgZm9yIDEyNS4KLSAgICAg
ICAgZGF0YSA9ICdceDdlXHgwMFx4N2QnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQ
YXlsb2FkUGFyc2VyKGRhdGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3Is
IHBhcnNlci5fcmVhZF9udW1iZXIpCi0KLSAgICAgICAgIyBVc2luZyA5IGJ5dGVzIGVuY29kaW5n
IGZvciAweGZmZmYKLSAgICAgICAgZGF0YSA9ICdceDdmXHgwMFx4MDBceDAwXHgwMFx4MDBceDAw
XHhmZlx4ZmYnCi0gICAgICAgIHBhcnNlciA9IG11eC5fTXV4RnJhbWVQYXlsb2FkUGFyc2VyKGRh
dGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHBhcnNlci5fcmVhZF9u
dW1iZXIpCi0KLSAgICBkZWYgdGVzdF9yZWFkX2ludmFsaWRfc2l6ZV9hbmRfY29udGVudHMoc2Vs
Zik6Ci0gICAgICAgICMgT25seSBjb250YWluIG51bWJlciBmaWVsZC4KLSAgICAgICAgZGF0YSA9
ICdceDAxJwotICAgICAgICBwYXJzZXIgPSBtdXguX011eEZyYW1lUGF5bG9hZFBhcnNlcihkYXRh
KQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhtdXguUGh5c2ljYWxDb25uZWN0aW9uRXJyb3Is
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlci5fcmVhZF9zaXplX2FuZF9jb250ZW50
cykKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShzZWxmKToKLSAg
ICAgICAgZGF0YSA9IG11eC5fY3JlYXRlX2FkZF9jaGFubmVsX3Jlc3BvbnNlKGNoYW5uZWxfaWQ9
MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29k
ZWRfaGFuZHNoYWtlPSdGb29CYXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlamVjdGVkPUZhbHNlKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdceDIwXHgwMVx4MDZGb29CYXInLCBkYXRhKQotCi0gICAgICAgIGRhdGEgPSBtdXguX2Ny
ZWF0ZV9hZGRfY2hhbm5lbF9yZXNwb25zZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT0nSGVsbG8n
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rp
bmc9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl
amVjdGVkPVRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MzFceDAyXHgwNUhlbGxv
JywgZGF0YSkKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9kcm9wX2NoYW5uZWwoc2VsZik6Ci0gICAg
ICAgIGRhdGEgPSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdceDYwXHgwMVx4MDAnLCBkYXRhKQotCi0gICAgICAgIGRhdGEg
PSBtdXguX2NyZWF0ZV9kcm9wX2NoYW5uZWwoY2hhbm5lbF9pZD0xLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGU9MjAwMCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdlcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ1x4NjBceDAxXHgwN1x4MDdceGQwZXJyb3InLCBkYXRhKQotCi0gICAgICAgICMgcmVh
c29uIG11c3QgYmUgZW1wdHkgaWYgY29kZSBpcyBOb25lCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFp
c2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fY3JlYXRlX2Ry
b3BfY2hhbm5lbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgMSwgTm9uZSwgJ0Zvb0Jhcicp
Ci0KLSAgICBkZWYgdGVzdF9wYXJzZV9yZXF1ZXN0X3RleHQoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3RfdGV4dCA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIoKQotICAgICAgICBjb21tYW5kLCBwYXRo
LCB2ZXJzaW9uLCBoZWFkZXJzID0gbXV4Ll9wYXJzZV9yZXF1ZXN0X3RleHQocmVxdWVzdF90ZXh0
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdHRVQnLCBjb21tYW5kKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCcvZWNobycsIHBhdGgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hU
VFAvMS4xJywgdmVyc2lvbikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oaGVhZGVy
cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NlcnZlci5leGFtcGxlLmNvbScsIGhlYWRl
cnNbJ0hvc3QnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4YW1wbGUuY29t
JywgaGVhZGVyc1snT3JpZ2luJ10pCi0KLQotY2xhc3MgTXV4SGFuZGxlclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgotCi0gICAgZGVmIHRlc3RfYWRkX2NoYW5uZWwoc2VsZik6Ci0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4
TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihy
ZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAg
IG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hB
Tk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9J
TklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBf
Y3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxf
cmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAg
IGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
PWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICBlbmNv
ZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAg
ICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2Zy
YW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAgICAg
ZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2Nv
bnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1
b3RhPTYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9s
KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBf
Y3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nV29ybGQnKSkKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTMsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4
X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNb
Ml0ubWVzc2FnZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydXb3JsZCddLCBkaXNwYXRj
aGVyLmNoYW5uZWxfZXZlbnRzWzNdLm1lc3NhZ2VzKQotICAgICAgICAjIENoYW5uZWwgMgotICAg
ICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygy
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgQ2hhbm5lbCAz
Ci0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3Nh
Z2VzKDMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQnLCBtZXNzYWdlc1swXSkKLSAgICAgICAgY29udHJv
bF9ibG9ja3MgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3Mo
KQotICAgICAgICAjIFRoZXJlIHNob3VsZCBiZSA4IGNvbnRyb2wgYmxvY2tzOgotICAgICAgICAj
ICAgLSAxIE5ld0NoYW5uZWxTbG90Ci0gICAgICAgICMgICAtIDIgQWRkQ2hhbm5lbFJlc3BvbnNl
cyBmb3IgY2hhbm5lbCBpZCAyIGFuZCAzCi0gICAgICAgICMgICAtIDYgRmxvd0NvbnRyb2xzIGZv
ciBjaGFubmVsIGlkIDEgKGluaXRpYWxpemUpLCAnSGVsbG8nLCAnV29ybGQnLAotICAgICAgICAj
ICAgICBhbmQgMyAnR29vZGJ5ZSdzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoOSwgbGVuKGNv
bnRyb2xfYmxvY2tzKSkKLQotICAgIGRlZiB0ZXN0X3BoeXNpY2FsX2Nvbm5lY3Rpb25fd3JpdGVf
ZmFpbHVyZShzZWxmKToKLSAgICAgICAgIyBVc2UgX0ZhaWxPbldyaXRlQ29ubmVjdGlvbi4KLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KGNvbm5lY3Rpb249X0ZhaWxPbldy
aXRlQ29ubmVjdGlvbigpKQotCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNo
ZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNw
YXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAgIyBMZXQgdGhl
IHdvcmtlciBlY2hvIGJhY2sgJ0hlbGxvJy4gSXQgY2F1c2VzIF9GYWlsT25Xcml0ZUNvbm5lY3Rp
b24KLSAgICAgICAgIyByYWlzaW5nIGFuIGV4Y2VwdGlvbi4KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTEsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBMZXQgdGhlIHdvcmtlciBl
eGl0LiBUaGlzIHdpbGwgYmUgdW5uZWNlc3Nhcnkgd2hlbgotICAgICAgICAjIF9Mb2dpY2FsQ29u
bmVjdGlvbi53cml0ZSgpIGlzIGNoYW5nZWQgdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmCi0gICAg
ICAgICMgd29rZSB1cCBieSBvbl93cml0ZXJfZG9uZS4KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVs
X2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEFsbCB0aHJlYWRzIHNob3Vs
ZCBiZSBkb25lLgotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRp
bF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICBkZWYgdGVzdF9zZW5kX2Jsb2NrZWQoc2VsZik6Ci0g
ICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNo
ZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4
SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgp
Ci0KLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05V
TUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBh
ZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAot
ICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2Rl
ZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIE9uIHJlY2Vpdmlu
ZyB0aGlzICdIZWxsbycsIHRoZSBzZXJ2ZXIgdHJpZXMgdG8gZWNobyBiYWNrICdIZWxsbycsCi0g
ICAgICAgICMgYnV0IGl0IHdpbGwgYmUgYmxvY2tlZCBzaW5jZSB0aGVyZSdzIG5vIHNlbmQgcXVv
dGEgYXZhaWxhYmxlIGZvciB0aGUKLSAgICAgICAgIyBjaGFubmVsIDIuCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsbycpKQotCi0gICAgICAgICMgV2FpdCB1bnRp
bCB0aGUgd29ya2VyIGlzIGJsb2NrZWQgZHVlIHRvIHNlbmQgcXVvdGEgc2hvcnRhZ2UuCi0gICAg
ICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAjIENsb3NlIHRoZSBjaGFubmVsIDIuIFRoZSB3
b3JrZXIgc2hvdWxkIGJlIG5vdGlmaWVkIG9mIHRoZSBlbmQgb2YKLSAgICAgICAgIyB3cml0ZXIg
dGhyZWFkIGFuZCBzdG9wIHdhaXRpbmcgZm9yIHNlbmQgcXVvdGEgdG8gYmUgcmVwbGVuaXNoZWQu
Ci0gICAgICAgIGRyb3BfY2hhbm5lbCA9IF9jcmVhdGVfZHJvcF9jaGFubmVsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MikKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGRyb3BfY2hh
bm5lbCkKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgY2hhbm5lbCAxIGlzIGFsc28gY2xvc2Vk
LgotICAgICAgICBkcm9wX2NoYW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFu
bmVsX2lkPTEpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZHJvcF9jaGFu
bmVsKQotCi0gICAgICAgICMgQWxsIHRocmVhZHMgc2hvdWxkIGJlIGRvbmUuCi0gICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQot
ICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2VuY29kaW5nKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGRlbHRhID0gJ0dFVCAvZWNobyBI
VFRQLzEuMVxyXG5cclxuJwotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNv
ZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJv
bCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9
NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0K
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJd
Lm1lc3NhZ2VzKQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3Jp
dHRlbl9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdl
cykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvJywgbWVzc2FnZXNbMF0pCi0KLSAg
ICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19vdmVycmlkZShzZWxmKToKLSAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hl
ciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhI
YW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkK
LSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJF
Ul9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICAjIE92ZXJyaWRlIFNl
Yy1XZWJTb2NrZXQtUHJvdG9jb2wuCi0gICAgICAgIGRlbHRhID0gKCdHRVQgL2VjaG8gSFRUUC8x
LjFcclxuJwotICAgICAgICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29c
clxuJwotICAgICAgICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVl
c3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFu
bmVsX2lkPTIsIGVuY29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAg
ICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0y
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBs
ZW5pc2hlZF9xdW90YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZs
b3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAg
ICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVs
bG8nKSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAg
IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVh
dGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAg
ICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9
MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hh
bm5lbF9ldmVudHNbMl0ubWVzc2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25u
ZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
MSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNz
YWdlc1swXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgneC1mb28nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19wcm90
b2NvbCkKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFubmVsX2RlbHRhX2FmdGVyX2lkZW50aXR5KHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBk
aXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBt
dXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIu
c3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJ
QUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICAjIFNlYy1X
ZWJTb2NrZXQtUHJvdG9jb2wgaXMgZGlmZmVyZW50IGZyb20gY2xpZW50J3Mgb3BlbmluZyBoYW5k
c2hha2UKLSAgICAgICAgIyBvZiB0aGUgcGh5c2ljYWwgY29ubmVjdGlvbi4KLSAgICAgICAgIyBU
T0RPKGJhc2hpKTogUmVtb3ZlIFVwZ3JhZGUsIENvbm5lY3Rpb24sIFNlYy1XZWJTb2NrZXQtS2V5
IGFuZAotICAgICAgICAjIFNlYy1XZWJTb2NrZXQtVmVyc2lvbi4KLSAgICAgICAgZW5jb2RlZF9o
YW5kc2hha2UgPSAoCi0gICAgICAgICAgICAnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAg
ICAgICAgICdIb3N0OiBzZXJ2ZXIuZXhhbXBsZS5jb21cclxuJwotICAgICAgICAgICAgJ1NlYy1X
ZWJTb2NrZXQtUHJvdG9jb2w6IHgtZm9vXHJcbicKLSAgICAgICAgICAgICdDb25uZWN0aW9uOiBV
cGdyYWRlXHJcbicKLSAgICAgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4n
Ci0gICAgICAgICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3Jl
YXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIs
IGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRz
aGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9y
ZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgZGVsdGEgPSAnR0VUIC9lY2hv
IEhUVFAvMS4xXHJcblxyXG4nCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRl
X2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTMsIGVu
Y29kaW5nPTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250
cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90
YT02KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkK
LQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9n
aWNhbF9mcmFtZShjaGFubmVsX2lkPTMsIG1lc3NhZ2U9J1dvcmxkJykpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0zLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9o
YW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoW10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJd
Lm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnV29ybGQnXSwgZGlzcGF0Y2hl
ci5jaGFubmVsX2V2ZW50c1szXS5tZXNzYWdlcykKLSAgICAgICAgIyBDaGFubmVsIDIKLSAgICAg
ICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdIZWxsbycsIG1lc3NhZ2VzWzBdKQotICAgICAgICAjIENoYW5uZWwgMwot
ICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdl
cygzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgbWVzc2FnZXNbMF0pCi0gICAgICAgICMgSGFuZHNo
YWtlIGJhc2Ugc2hvdWxkIGJlIHVwZGF0ZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0g
ICAgICAgICAgICAneC1mb28nLAotICAgICAgICAgICAgbXV4X2hhbmRsZXIuX2hhbmRzaGFrZV9i
YXNlLl9oZWFkZXJzWydTZWMtV2ViU29ja2V0LVByb3RvY29sJ10pCi0KLSAgICBkZWYgdGVzdF9h
ZGRfY2hhbm5lbF9kZWx0YV9yZW1vdmVfaGVhZGVyKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNw
YXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwg
ZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFu
ZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xP
VFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9R
VU9UQV9GT1JfQ0xJRU5UKQotICAgICAgICAjIE92ZXJyaWRlIGhhbmRzaGFrZSBkZWx0YSBiYXNl
LgotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9ICgKLSAgICAgICAgICAgICdHRVQgL2VjaG8g
SFRUUC8xLjFcclxuJwotICAgICAgICAgICAgJ0hvc3Q6IHNlcnZlci5leGFtcGxlLmNvbVxyXG4n
Ci0gICAgICAgICAgICAnU2VjLVdlYlNvY2tldC1Qcm90b2NvbDogeC1mb29cclxuJwotICAgICAg
ICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJwotICAgICAgICAgICAgJ09yaWdpbjogaHR0
cDovL2V4YW1wbGUuY29tXHJcbicKLSAgICAgICAgICAgICdcclxuJykKLSAgICAgICAgYWRkX2No
YW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAg
ICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAg
ICAjIFJlbW92ZSBTZWMtV2ViU29ja2V0LVByb3RvY29sIGhlYWRlci4KLSAgICAgICAgZGVsdGEg
PSAoJ0dFVCAvZWNobyBIVFRQLzEuMVxyXG4nCi0gICAgICAgICAgICAgICAgICdTZWMtV2ViU29j
a2V0LVByb3RvY29sOicKLSAgICAgICAgICAgICAgICAgJ1xyXG4nKQotICAgICAgICBhZGRfY2hh
bm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAg
ICAgICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0xLCBlbmNvZGVkX2hhbmRzaGFrZT1kZWx0YSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0
KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNo
YW5uZWxfaWQ9MywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1l
c3NhZ2U9J0hlbGxvJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0g
ICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLCBtZXNzYWdlPSdX
b3JsZCcpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAg
ICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScp
KQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2Ny
ZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkK
LQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtdLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRz
WzFdLm1lc3NhZ2VzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0
Y2hlci5jaGFubmVsX2V2ZW50c1syXS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChbJ1dvcmxkJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbM10ubWVzc2FnZXMpCi0gICAg
ICAgICMgQ2hhbm5lbCAyCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdl
dF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKG1l
c3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtZXNzYWdlc1swXSkK
LSAgICAgICAgIyBDaGFubmVsIDMKLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rp
b24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBs
ZW4obWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdXb3JsZCcsIG1lc3NhZ2Vz
WzBdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgJ3gtZm9vJywKLSAg
ICAgICAgICAgIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0ucmVxdWVzdC53c19wcm90b2Nv
bCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIE5vbmUsCi0gICAgICAg
ICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzNdLnJlcXVlc3Qud3NfcHJvdG9jb2wpCi0K
LSAgICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19wZXJtZXNzYWdlX2NvbXBy
ZXNzKHNlbGYpOgotICAgICAgICAjIEVuYWJsZSBwZXJtZXNzYWdlIGNvbXByZXNzIGV4dGVuc2lv
biBvbiB0aGUgaW1wbGljaXRseSBvcGVuZWQgY2hhbm5lbC4KLSAgICAgICAgZXh0ZW5zaW9ucyA9
IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAgJyVzOyBtZXRob2Q9ZGVmbGF0
ZScgJSBjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04pCi0gICAgICAgIHJl
cXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgKLSAgICAgICAgICAgIGxvZ2ljYWxfY2hhbm5l
bF9leHRlbnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rp
c3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0
LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9o
YW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9T
TE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZGVsdGEgPSAnR0VUIC9lY2hvIEhUVFAvMS4x
XHJcblxyXG4nCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFu
bmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTEs
IGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0gX2Ny
ZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkKLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAg
ICAgIyBTZW5kIGNvbXByZXNzZWQgJ0hlbGxvJyBvbiBsb2dpY2FsIGNoYW5uZWwgMSBhbmQgMi4K
LSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxpYi5a
X0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykKLSAg
ICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0gICAg
ICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxVU0gp
Ci0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9s
b2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT1jb21wcmVzc2VkX2hlbGxvLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJzdjE9VHJ1ZSkpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPWNvbXByZXNzZWRfaGVsbG8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcnN2MT1UcnVlKSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5u
ZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFu
ZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sxXS5tZXNzYWdlcykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvJ10sIGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVu
dHNbMl0ubWVzc2FnZXMpCi0gICAgICAgICMgV3JpdHRlbiAnSGVsbG8ncyBzaG91bGQgYmUgY29t
cHJlc3NlZC4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0
ZW5fbWVzc2FnZXMoMSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4obWVzc2FnZXMp
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXByZXNzZWRfaGVsbG8sIG1lc3NhZ2VzWzBd
KQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNz
YWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGxlbihtZXNzYWdlcykpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbywgbWVzc2FnZXNbMF0pCi0KLSAg
ICBkZWYgdGVzdF9hZGRfY2hhbm5lbF9kZWx0YV9lbmNvZGluZ19yZW1vdmVfZXh0ZW5zaW9ucyhz
ZWxmKToKLSAgICAgICAgIyBFbmFibGUgcGVybWVzc2FnZSBjb21wcmVzcyBleHRlbnNpb24gb24g
dGhlIGltcGxpY2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIGV4dGVuc2lvbnMgPSBjb21t
b24ucGFyc2VfZXh0ZW5zaW9ucygKLSAgICAgICAgICAgICclczsgbWV0aG9kPWRlZmxhdGUnICUg
Y29tbW9uLlBFUk1FU1NBR0VfQ09NUFJFU1NJT05fRVhURU5TSU9OKQotICAgICAgICByZXF1ZXN0
ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoCi0gICAgICAgICAgICBsb2dpY2FsX2NoYW5uZWxfZXh0
ZW5zaW9ucz1leHRlbnNpb25zKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRj
aGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlz
cGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxl
ci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9U
QV9GT1JfQ0xJRU5UKQotCi0gICAgICAgICMgUmVtb3ZlIHBlcm1lc3NhZ2UgY29tcHJlc3MgZXh0
ZW5zaW9uLgotICAgICAgICBkZWx0YSA9ICgnR0VUIC9lY2hvIEhUVFAvMS4xXHJcbicKLSAgICAg
ICAgICAgICAgICAgJ1NlYy1XZWJTb2NrZXQtRXh0ZW5zaW9uczpcclxuJwotICAgICAgICAgICAg
ICAgICAnXHJcbicpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9j
aGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5n
PTEsIGVuY29kZWRfaGFuZHNoYWtlPWRlbHRhKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24u
cHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgZmxvd19jb250cm9sID0g
X2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT0yMCkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAg
ICAgICAgIyBTZW5kIGNvbXByZXNzZWQgbWVzc2FnZSBvbiBsb2dpY2FsIGNoYW5uZWwgMi4gVGhl
IG1lc3NhZ2Ugc2hvdWxkCi0gICAgICAgICMgYmUgcmVqZWN0ZWQgKHNpbmNlIHJzdjEgaXMgc2V0
KS4KLSAgICAgICAgY29tcHJlc3MgPSB6bGliLmNvbXByZXNzb2JqKAotICAgICAgICAgICAgemxp
Yi5aX0RFRkFVTFRfQ09NUFJFU1NJT04sIHpsaWIuREVGTEFURUQsIC16bGliLk1BWF9XQklUUykK
LSAgICAgICAgY29tcHJlc3NlZF9oZWxsbyA9IGNvbXByZXNzLmNvbXByZXNzKCdIZWxsbycpCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJlc3NlZF9oZWxsbywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByc3YxPVRydWUpKQotCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxf
ZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAg
ICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3Qu
Y29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBi
Lm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX05PUk1BTF9DTE9TVVJFLCBkcm9wX2NoYW5uZWwuZHJv
cF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVs
X2lkKQotICAgICAgICAjIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24gc2hvdWxkIGJlIHJhaXNl
ZCBvbiBsb2dpY2FsIGNoYW5uZWwgMi4KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFu
Y2UoZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1syXS5leGNlcHRpb24sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFVuc3VwcG9ydGVkRnJhbWVFeGNlcHRpb24pKQotCi0gICAg
ZGVmIHRlc3RfYWRkX2NoYW5uZWxfaW52YWxpZF9lbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmVx
dWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhN
b2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJl
cXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAg
bXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFO
TkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lO
SVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9j
cmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9y
ZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAg
Y2hhbm5lbF9pZD0yLCBlbmNvZGluZz0zLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9
ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
YWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRs
ZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0g
bmV4dCgKLSAgICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0
dGVuX2NvbnRyb2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVY
X09QQ09ERV9EUk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9Q
X0NPREVfVU5LTk9XTl9SRVFVRVNUX0VOQ09ESU5HLAotICAgICAgICAgICAgICAgICAgICAgICAg
IGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9u
LlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9h
ZGRfY2hhbm5lbF9pbmNvbXBsZXRlX2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9
IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlz
cGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3Qs
IGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hh
bmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NM
T1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxf
UVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBpbmNvbXBsZXRlX2VuY29kZWRfaGFuZHNoYWtl
ID0gJ0dFVCAvZWNobyBIVFRQLzEuMScKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9j
cmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9
MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWluY29tcGxldGVf
ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
YWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVz
c2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53
YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUoMSBp
biBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzKQotICAgICAgICBzZWxmLmFzc2VydFRydWUobm90
IDIgaW4gZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50cykKLQotICAgIGRlZiB0ZXN0X2FkZF9jaGFu
bmVsX2R1cGxpY2F0ZV9jaGFubmVsX2lkKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0
ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVy
KCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0
Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5h
ZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9G
T1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0
X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3Jl
YXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIs
IGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRz
aGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9y
ZXF1ZXN0KQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hl
YWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRl
X2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVu
Y29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFr
ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1
ZXN0KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2Rv
bmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAg
ICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9j
a3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hB
Tk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0FM
UkVBRFlfRVhJU1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9w
X2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2Ryb3BfY2hhbm5l
bChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAg
ICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVy
ID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5k
bGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9J
TklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBl
bmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQot
ICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0
X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAg
ICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBkcm9w
X2NoYW5uZWwgPSBfY3JlYXRlX2Ryb3BfY2hhbm5lbF9mcmFtZShjaGFubmVsX2lkPTIpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZHJvcF9jaGFubmVsKQotCi0gICAgICAg
ICMgVGVybWluYXRlIGltcGxpY2l0bHkgb3BlbmVkIGNoYW5uZWwuCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUo
Y2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRU
cnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGV4
Y2VwdGlvbiA9IGRpc3BhdGNoZXIuY2hhbm5lbF9ldmVudHNbMl0uZXhjZXB0aW9uCi0gICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZShleGNlcHRpb24uX19jbGFzc19fID09IENvbm5lY3Rpb25UZXJtaW5h
dGVkRXhjZXB0aW9uKQotCi0gICAgZGVmIHRlc3RfcmVjZWl2ZV9waW5nX2ZyYW1lKHNlbGYpOgot
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRj
aGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011
eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQo
KQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVN
QkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFk
ZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0g
ICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVk
X2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9
IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0g
ICAgICAgIHBpbmdfZnJhbWUgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J0hlbGxv
IFdvcmxkIScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bj
b2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhwaW5nX2ZyYW1lKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
Ci0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdl
PSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29k
YnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxf
ZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9u
LmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChjb21tb24uT1BDT0RFX1BPTkcsIG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgnSGVsbG8gV29ybGQhJywgbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLQot
ICAgIGRlZiB0ZXN0X3JlY2VpdmVfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICByZXF1
ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1v
Y2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVx
dWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBt
dXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5O
RUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5J
VElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2Ny
ZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVsX3Jl
cXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBj
aGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1l
bmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhh
ZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTMpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2Vu
ZCBhIHBpbmcgd2l0aCBtZXNzYWdlICdIZWxsbyB3b3JsZCEnIGluIHR3byBmcmFnbWVudGVkIGZy
YW1lcy4KLSAgICAgICAgcGluZ19mcmFtZTEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5l
bF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlPSdIZWxsbyAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBmaW49RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMocGluZ19mcmFtZTEpCi0gICAgICAgIHBpbmdfZnJhbWUyID0gX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbWVzc2FnZT0nV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nX2ZyYW1lMikKLQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1l
KGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0
VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBt
ZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3NhZ2Vz
KDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLk9QQ09ERV9QT05HLCBtZXNzYWdl
c1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxkIScs
IG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVzdF9yZWNlaXZlX2ZyYWdtZW50
ZWRfcGluZ193aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYpOgotICAgICAg
ICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0g
X011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRs
ZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAg
ICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09G
X0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11
eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtl
ID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFu
bmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAg
ICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MTkpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAg
ICMgU2VuZCBhIGZyYWdtZW50ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4KLSAgICAgICAg
aGVsbG8gPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoaGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUg
bGFzdCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAgICAgICAgIyBm
cmFnbWVudGVkIHBpbmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT0nUGknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BD
T0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGluZzEpCi0g
ICAgICAgIHBpbmcyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJTlVBVElPTikK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQotICAgICAgICAj
IFNlbmQgdGhlIGxhc3QgZnJhZ21lbnRlZCBmcmFtZSBvZiB0aGUgbWVzc2FnZS4KLSAgICAgICAg
d29ybGQgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdXb3JsZCEnLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAg
ICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHdvcmxkKQotCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3Nh
Z2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyBXb3JsZCEnXSwgbWVzc2FnZXMpCi0gICAgICAgIGNv
bnRyb2xfbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5PUENPREVfUE9ORywg
Y29udHJvbF9tZXNzYWdlc1swXVsnb3Bjb2RlJ10pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1BpbmchJywgY29udHJvbF9tZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rf
cmVjZWl2ZV90d29fcGluZ193aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9tZXNzYWdlKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNw
YXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXgu
X011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3Rh
cnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxf
TlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAg
IGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUo
Ci0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNv
ZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJv
bCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9
MjUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQot
Ci0gICAgICAgICMgU2VuZCBhIGZyYWdtZW50ZWQgZnJhbWUgb2YgbWVzc2FnZSAnSGVsbG8gJy4K
LSAgICAgICAgaGVsbG8gPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdIZWxsbyAnLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49RmFsc2UpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoaGVsbG8pCi0KLSAgICAgICAgIyBCZWZvcmUgc2Vu
ZGluZyB0aGUgbGFzdCBmcmFnbWVudGVkIGZyYW1lIG9mIHRoZSBtZXNzYWdlLCBzZW5kIGEKLSAg
ICAgICAgIyBmcmFnbWVudGVkIHBpbmcgYW5kIGEgbm9uLWZyYWdtZW50ZWQgcGluZy4KLSAgICAg
ICAgcGluZzEgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQaScsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfUElORykKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMSkKLSAgICAgICAgcGluZzIgPSBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBtZXNzYWdlPSduZyEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBmaW49VHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3Bjb2RlPWNvbW1vbi5PUENPREVfQ09OVElOVUFUSU9OKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKHBpbmcyKQotICAgICAgICBwaW5nMyA9IF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1lc3NhZ2U9J1BvbmchJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1j
b21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMo
cGluZzMpCi0KLSAgICAgICAgIyBTZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhl
IG1lc3NhZ2UuCi0gICAgICAgIHdvcmxkID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nV29y
bGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RF
X0NPTlRJTlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyh3b3Js
ZCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9t
ZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1l
c3NhZ2VzKQotICAgICAgICBjb250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdl
dF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChj
b21tb24uT1BDT0RFX1BPTkcsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2Un
XSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BPTkcsIGNvbnRyb2xf
bWVzc2FnZXNbMV1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScs
IGNvbnRyb2xfbWVzc2FnZXNbMV1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVf
bWVzc2FnZV93aGlsZV9yZWNlaXZpbmdfZnJhZ21lbnRlZF9waW5nKHNlbGYpOgotICAgICAgICBy
ZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011
eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIo
cmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAg
ICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NI
QU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5f
SU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0g
X2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9jaGFubmVs
X3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAg
ICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVf
Zmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE5KQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICAjIFNl
bmQgYSBmcmFnbWVudGVkIHBpbmcuCi0gICAgICAgIHBpbmcxID0gX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZT0nUGknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaW49
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21t
b24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMocGlu
ZzEpCi0KLSAgICAgICAgIyBCZWZvcmUgc2VuZGluZyB0aGUgbGFzdCBmcmFnbWVudGVkIHBpbmcs
IHNlbmQgYSBtZXNzYWdlLgotICAgICAgICAjIFRoZSBsb2dpY2FsIGNoYW5uZWwgKDIpIHNob3Vs
ZCBiZSBkcm9wcGVkLgotICAgICAgICBtZXNzYWdlID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNz
YWdlPSdIZWxsbyB3b3JsZCEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGZpbj1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKG1lc3Nh
Z2UpCi0KLSAgICAgICAgIyBTZW5kIHRoZSBsYXN0IGZyYWdtZW50ZWQgZnJhbWUgb2YgdGhlIG1l
c3NhZ2UuCi0gICAgICAgIHBpbmcyID0gX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9
MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nbmchJywK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX0NPTlRJ
TlVBVElPTikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhwaW5nMikKLQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBp
biByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAg
ICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwuY2hhbm5lbF9pZCkKLSAgICAgICAg
IyBObyBtZXNzYWdlIHNob3VsZCBiZSBzZW50IG9uIGNoYW5uZWwgMi4KLSAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoS2V5RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcywKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgMikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX21lc3Nh
Z2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9w
aW5nKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAg
ICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRs
ZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hh
bmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXgu
X0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAg
IGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycp
Ci0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVl
c3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAg
ICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVz
dC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZs
b3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNo
ZWRfcXVvdGE9NikKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2Nv
bnRyb2wpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAg
ICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUn
KSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25l
KHRpbWVvdXQ9MikpCi0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0
X3dyaXR0ZW5fY29udHJvbF9tZXNzYWdlcygyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNv
bW1vbi5PUENPREVfUElORywgbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCdQaW5nIScsIG1lc3NhZ2VzWzBdWydtZXNzYWdlJ10pCi0KLSAgICBkZWYgdGVz
dF9zZW5kX2ZyYWdtZW50ZWRfcGluZyhzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVf
bW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigp
Ci0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNo
ZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRk
X2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9S
X0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9o
ZWFkZXIocGF0aD0nL3BpbmcnKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0
ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBl
bmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hh
a2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVx
dWVzdCkKLQotICAgICAgICAjIFJlcGxlbmlzaCAzIGJ5dGVzLiBUaGlzIGlzbid0IGVub3VnaCB0
byBzZW5kIHRoZSB3aG9sZSBwaW5nIGZyYW1lCi0gICAgICAgICMgYmVjYXVzZSB0aGUgZnJhbWUg
d2lsbCBoYXZlIDUgYnl0ZXMgbWVzc2FnZSgnUGluZyEnKS4gVGhlIGZyYW1lCi0gICAgICAgICMg
c2hvdWxkIGJlIGZyYWdtZW50ZWQuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxv
d19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MykKLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAgIyBXYWl0
IHVudGlsIHRoZSB3b3JrZXIgaXMgYmxvY2tlZCBkdWUgdG8gc2VuZCBxdW90YSBzaG9ydGFnZS4K
LSAgICAgICAgdGltZS5zbGVlcCgxKQotCi0gICAgICAgICMgUmVwbGVuaXNoIHJlbWFpbmluZyAy
ICsgMSBieXRlcyAoaW5jbHVkaW5nIGV4dHJhIGNvc3QpLgotICAgICAgICBmbG93X2NvbnRyb2wg
PSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMp
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIp
KQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2Nv
bnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RF
X1BJTkcsIG1lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
UGluZyEnLCBtZXNzYWdlc1swXVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3Rfc2VuZF9mcmFn
bWVudGVkX3Bpbmdfd2hpbGVfc2VuZGluZ19mcmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAg
ICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIg
PSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFu
ZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0g
ICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJf
T0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKAotICAgICAgICAgICAgcGF0aD0nL3Bpbmdfd2hp
bGVfaGVsbG9fd29ybGQnKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNv
ZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2Up
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVz
dCkKLQotICAgICAgICAjIEFwcGxpY2F0aW9uIHdpbGwgc2VuZDoKLSAgICAgICAgIyAtIHRleHQg
bWVzc2FnZSAnSGVsbG8gJyB3aXRoIGZpbj0wCi0gICAgICAgICMgLSBwaW5nIHdpdGggJ1Bpbmch
JyBtZXNzYWdlCi0gICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ1dvcmxkIScgd2l0aCBmaW49MQot
ICAgICAgICAjIFJlcGxlbmlzaCAoNiArIDEpICsgKDIgKyAxKSBieXRlcyBzbyB0aGF0IHRoZSBw
aW5nIHdpbGwgYmUKLSAgICAgICAgIyBmcmFnbWVudGVkIG9uIHRoZSBsb2dpY2FsIGNoYW5uZWwu
Ci0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5u
ZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVwbGVuaXNoZWRfcXVvdGE9MTApCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHRpbWUuc2xlZXAoMSkKLQotICAgICAgICAj
IFJlcGxlbmlzaCByZW1haW5pbmcgMyArIDYgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9
IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9OSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAg
ICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVf
bG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9Mikp
Ci0KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fbWVz
c2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJ0hlbGxvIFdvcmxkISddLCBtZXNz
YWdlcykKLSAgICAgICAgY29udHJvbF9tZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRf
d3JpdHRlbl9jb250cm9sX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29t
bW9uLk9QQ09ERV9QSU5HLCBjb250cm9sX21lc3NhZ2VzWzBdWydvcGNvZGUnXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBjb250cm9sX21lc3NhZ2VzWzBdWydtZXNzYWdlJ10p
Ci0KLSAgICBkZWYgdGVzdF9zZW5kX2ZyYWdtZW50ZWRfdHdvX3Bpbmdfd2hpbGVfc2VuZGluZ19m
cmFnbWVudGVkX21lc3NhZ2Uoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tf
cmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAg
ICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQot
ICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFu
bmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElF
TlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVy
KAotICAgICAgICAgICAgcGF0aD0nL3R3b19waW5nX3doaWxlX2hlbGxvX3dvcmxkJykKLSAgICAg
ICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFt
ZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0KLSAgICAgICAgIyBBcHBsaWNh
dGlvbiB3aWxsIHNlbmQ6Ci0gICAgICAgICMgLSB0ZXh0IG1lc3NhZ2UgJ0hlbGxvICcgd2l0aCBm
aW49MAotICAgICAgICAjIC0gcGluZyB3aXRoICdQaW5nIScgbWVzc2FnZQotICAgICAgICAjIC0g
cGluZyB3aXRoICdQb25nIScgbWVzc2FnZQotICAgICAgICAjIC0gdGV4dCBtZXNzYWdlICdXb3Js
ZCEnIHdpdGggZmluPTEKLSAgICAgICAgIyBSZXBsZW5pc2ggKDYgKyAxKSArICgyICsgMSkgYnl0
ZXMgc28gdGhhdCB0aGUgZmlyc3QgcGluZyB3aWxsIGJlCi0gICAgICAgICMgZnJhZ21lbnRlZCBv
biB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zs
b3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTEwKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICB0aW1l
LnNsZWVwKDEpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggcmVtYWluaW5nIDMgKyAoNSArIDEpICsg
NiBieXRlcy4gVGhlIHNlY29uZCBwaW5nIHdvbid0Ci0gICAgICAgICMgYmUgZnJhZ21lbnRlZCBv
biB0aGUgbG9naWNhbCBjaGFubmVsLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zs
b3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTE1KQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNz
ZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAg
ICBtZXNzYWdlcyA9IHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9tZXNzYWdlcygyKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8gV29ybGQhJ10sIG1lc3NhZ2VzKQotICAg
ICAgICBjb250cm9sX21lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2Nv
bnRyb2xfbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RF
X1BJTkcsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdQaW5nIScsIGNvbnRyb2xfbWVzc2FnZXNbMF1bJ21lc3NhZ2UnXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIGNvbnRyb2xfbWVzc2FnZXNbMV1b
J29wY29kZSddKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdQb25nIScsIGNvbnRyb2xfbWVz
c2FnZXNbMV1bJ21lc3NhZ2UnXSkKLQotICAgIGRlZiB0ZXN0X3NlbmRfZHJvcF9jaGFubmVsKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBk
aXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBt
dXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIu
c3RhcnQoKQotCi0gICAgICAgICMgRHJvcENoYW5uZWwgZm9yIGNoYW5uZWwgaWQgMSB3aGljaCBk
b2Vzbid0IGhhdmUgcmVhc29uLgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUo
J1x4MDBceDYwXHgwMVx4MDAnLCBtYXNrPVRydWUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoZnJhbWUpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVy
LndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5l
eHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRl
bl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9P
UENPREVfRFJPUF9DSEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9D
T0RFX0FDS05PV0xFREdFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwu
ZHJvcF9jb2RlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEsIGRyb3BfY2hhbm5lbC5jaGFu
bmVsX2lkKQotCi0gICAgZGVmIHRlc3RfdHdvX2Zsb3dfY29udHJvbChzZWxmKToKLSAgICAgICAg
cmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9N
dXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVy
KHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAg
ICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9D
SEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtdXgu
X0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9
IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5l
bF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAg
ICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICAjIFJlcGxlbmlzaCA1IGJ5dGVzLgot
ICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVs
X2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlcGxlbmlzaGVkX3F1b3RhPTUpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCAxMCBieXRlcy4gVGhlIHNlcnZlciB3
aWxsIHRyeSBlY2hvIGJhY2sgMTAgYnl0ZXMuCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0y
LCBtZXNzYWdlPSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgIyBSZXBsZW5pc2ggNSArIDEgKHBl
ci1tZXNzYWdlIGV4dHJhIGNvc3QpIGJ5dGVzLgotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3Jl
YXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2lj
YWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0gICAgICAgIHJlcXVl
c3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAg
IG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsb1dvcmxkJ10sIG1lc3NhZ2VzKQotICAgICAg
ICByZWNlaXZlZF9mbG93X2NvbnRyb2xzID0gWwotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1
ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAg
aWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0ZMT1dfQ09OVFJPTCBhbmQgYi5jaGFubmVs
X2lkID09IDJdCi0gICAgICAgICMgUmVwbGVuaXNobWVudCBmb3IgJ0hlbGxvV29ybGQnICsgMQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDExLCByZWNlaXZlZF9mbG93X2NvbnRyb2xzWzBdLnNl
bmRfcXVvdGEpCi0gICAgICAgICMgUmVwbGVuaXNobWVudCBmb3IgJ0dvb2RieWUnICsgMQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDgsIHJlY2VpdmVkX2Zsb3dfY29udHJvbHNbMV0uc2VuZF9x
dW90YSkKLQotICAgIGRlZiB0ZXN0X25vX3NlbmRfcXVvdGFfb25fc2VydmVyKHNlbGYpOgotICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNwYXRjaGVy
ID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXguX011eEhh
bmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3RhcnQoKQot
ICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxfTlVNQkVS
X09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRfaGFuZHNo
YWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAgIGFkZF9j
aGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAg
ICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hh
bmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1
dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9p
ZD0yLCBtZXNzYWdlPSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lk
PTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBmb3IgMSBzZWMg
c28gdGhhdCB0aGUgc2VydmVyIGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAgICAjICdIZWxs
b1dvcmxkJy4KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShtdXhfaGFuZGxlci53YWl0X3VudGls
X2RvbmUodGltZW91dD0xKSkKLQotICAgICAgICAjIE5vIG1lc3NhZ2Ugc2hvdWxkIGJlIHNlbnQg
b24gY2hhbm5lbCAyLgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3Nh
Z2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAyKQotCi0gICAgZGVmIHRlc3Rfbm9fc2Vu
ZF9xdW90YV9vbl9zZXJ2ZXJfZm9yX3Blcm1lc3NhZ2VfZXh0cmFfY29zdChzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9
IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5k
bGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAg
ICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklUSUFMX05VTUJFUl9P
Rl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
dXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFr
ZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hh
bm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAg
ICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5k
c2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRf
Ynl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3Jl
YXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0gICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2Fs
X2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGVsbG8nKSkKLSAgICAgICAgIyBSZXBsZW5p
c2ggb25seSBsZW4oJ1dvcmxkJykgYnl0ZXMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NSkKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0gICAgICAgICMg
U2VydmVyIHNob3VsZCBub3QgY2FsbGJhY2sgZm9yIHRoaXMgbWVzc2FnZS4KLSAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9m
cmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShj
aGFubmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICAjIEp1c3Qgd2FpdCBm
b3IgMSBzZWMgc28gdGhhdCB0aGUgc2VydmVyIGF0dGVtcHRzIHRvIGVjaG8gYmFjawotICAgICAg
ICAjICdXb3JsZCcuCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobXV4X2hhbmRsZXIud2FpdF91
bnRpbF9kb25lKHRpbWVvdXQ9MSkpCi0KLSAgICAgICAgIyBPbmx5IG9uZSBtZXNzYWdlIHNob3Vs
ZCBiZSBzZW50IG9uIGNoYW5uZWwgMi4KLSAgICAgICAgbWVzc2FnZXMgPSByZXF1ZXN0LmNvbm5l
Y3Rpb24uZ2V0X3dyaXR0ZW5fbWVzc2FnZXMoMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChb
J0hlbGxvJ10sIG1lc3NhZ2VzKQotCi0gICAgZGVmIHRlc3RfcXVvdGFfdmlvbGF0aW9uX2J5X2Ns
aWVudChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAg
ICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5k
bGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9o
YW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4
Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLCAwKQotCi0gICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0gICAgICAg
IGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUo
Ci0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNv
ZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0yLCBtZXNzYWdlPSdIZWxsb1dvcmxkJykpCi0KLSAgICAgICAgcmVxdWVzdC5jb25u
ZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFu
bmVsX2lkPTEsIG1lc3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUo
bXV4X2hhbmRsZXIud2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgY29udHJv
bF9ibG9ja3MgPSByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3Mo
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDUsIGxlbihjb250cm9sX2Jsb2NrcykpCi0gICAg
ICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZvciBiIGluIGNvbnRyb2xf
YmxvY2tzCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9D
SEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVP
VEFfVklPTEFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9w
X2NvZGUpCi0KLSAgICBkZWYgdGVzdF9jb25zdW1lX3F1b3RhX2VtcHR5X21lc3NhZ2Uoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0gICAgICAgICMgQ2xpZW50IGhhcyAxIGJ5dGUgcXVvdGEuCi0gICAgICAgIG11eF9oYW5k
bGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9OVU1CRVJfT0ZfQ0hBTk5FTF9TTE9U
UywgMSkKLQotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFk
ZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9h
ZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNv
ZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2Up
Ci0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVz
dCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShj
aGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTIpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICAjIFNlbmQgYW4gZW1wdHkgbWVzc2FnZS4g
UHl3ZWJzb2NrZXQgYWx3YXlzIHJlcGxlbmlzaGVzIDEgYnl0ZSBxdW90YQotICAgICAgICAjIGZv
ciBlbXB0eSBtZXNzYWdlCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0g
ICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPScn
KSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQot
ICAgICAgICAjIFRoaXMgbWVzc2FnZSB2aW9sYXRlcyBxdW90YSBvbiBjaGFubmVsIGlkIDIuCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAg
ICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIp
KQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgbGVuKGRpc3BhdGNoZXIuY2hhbm5lbF9l
dmVudHNbMl0ubWVzc2FnZXMpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBkaXNwYXRj
aGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2VzWzBdKQotCi0gICAgICAgIHJlY2VpdmVkX2Zs
b3dfY29udHJvbHMgPSBbCi0gICAgICAgICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlv
bi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9
PSBtdXguX01VWF9PUENPREVfRkxPV19DT05UUk9MIGFuZCBiLmNoYW5uZWxfaWQgPT0gMl0KLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4ocmVjZWl2ZWRfZmxvd19jb250cm9scykpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgcmVjZWl2ZWRfZmxvd19jb250cm9sc1swXS5zZW5k
X3F1b3RhKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZv
ciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0g
ICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIsIGRyb3BfY2hhbm5lbC5jaGFubmVsX2lkKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX1NFTkRfUVVPVEFfVklPTEFUSU9O
LAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0KLSAg
ICBkZWYgdGVzdF9jb25zdW1lX3F1b3RhX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAgICAg
ICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9
IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5k
bGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAg
ICAgICAgIyBDbGllbnQgaGFzIGxlbignSGVsbG8nKSArIGxlbignR29vZGJ5ZScpICsgMiBieXRl
cyBxdW90YS4KLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xvdHMobXV4Ll9JTklU
SUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLCAxNCkKLQotICAgICAgICBlbmNvZGVkX2hhbmRz
aGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRf
Y2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAg
ICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9o
YW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBf
Y3JlYXRlX2Zsb3dfY29udHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTYpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dp
Y2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nSGUnLCBmaW49RmFsc2UsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2RlPWNvbW1vbi5PUENPREVfVEVYVCkpCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRl
X2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdsbG8nLCBmaW49VHJ1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05U
SU5VQVRJT04pKQotCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAg
ICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0xLCBtZXNzYWdlPSdHb29k
YnllJykpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAg
ICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLCBtZXNzYWdlPSdHb29kYnllJykp
Ci0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0
aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93
cml0dGVuX21lc3NhZ2VzKDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWydIZWxsbyddLCBt
ZXNzYWdlcykKLQotICAgIGRlZiB0ZXN0X2ZyYWdtZW50ZWRfY29udHJvbF9tZXNzYWdlKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNw
YXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXgu
X011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3Rh
cnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9zbG90cyhtdXguX0lOSVRJQUxf
TlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQotCi0gICAgICAgIGVuY29kZWRf
aGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvcGluZycpCi0gICAgICAg
IGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUo
Ci0gICAgICAgICAgICBjaGFubmVsX2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNv
ZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0
aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgUmVwbGVuaXNo
IHRvdGFsIDYgYnl0ZXMgaW4gMyBGbG93Q29udHJvbHMuCi0gICAgICAgIGZsb3dfY29udHJvbCA9
IF9jcmVhdGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MSkK
LSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAg
ICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9p
ZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXBsZW5pc2hlZF9xdW90YT0yKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KGZsb3dfY29udHJvbCkKLQotICAgICAgICBmbG93X2NvbnRyb2wgPSBfY3JlYXRlX2Zsb3dfY29u
dHJvbF9mcmFtZShjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlcGxlbmlzaGVkX3F1b3RhPTMpCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoCi0gICAgICAgICAgICBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hh
bm5lbF9pZD0xLCBtZXNzYWdlPSdHb29kYnllJykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1lb3V0PTIpKQotCi0gICAgICAgIG1lc3Nh
Z2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRyb2xfbWVzc2FnZXMoMikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tb24uT1BDT0RFX1BJTkcsIG1lc3NhZ2VzWzBd
WydvcGNvZGUnXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnUGluZyEnLCBtZXNzYWdlc1sw
XVsnbWVzc2FnZSddKQotCi0gICAgZGVmIHRlc3RfY2hhbm5lbF9zbG90X3Zpb2xhdGlvbl9ieV9j
bGllbnQoc2VsZik6Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0g
ICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFu
ZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhf
aGFuZGxlci5zdGFydCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNs
b3RzPTEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9
bXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2UgPSBfY3JlYXRlX3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2No
YW5uZWxfcmVxdWVzdCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAg
ICAgICAgIGNoYW5uZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFu
ZHNoYWtlPWVuY29kZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGFkZF9jaGFubmVsX3JlcXVlc3QpCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVh
dGVfZmxvd19jb250cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9NikKLSAgICAg
ICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhmbG93X2NvbnRyb2wpCi0KLSAgICAgICAg
cmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNh
bF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9J0hlbGxvJykpCi0KLSAgICAgICAgIyBUaGlz
IHJlcXVlc3Qgc2hvdWxkIGJlIHJlamVjdGVkLgotICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9
IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0nL2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5l
bF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5lbF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAg
ICAgY2hhbm5lbF9pZD0zLCBlbmNvZGluZz0wLAotICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hh
a2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0
ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9m
bG93X2NvbnRyb2xfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZXBsZW5pc2hlZF9xdW90YT02KQotICAgICAgICBy
ZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2Zy
YW1lKGNoYW5uZWxfaWQ9MywgbWVzc2FnZT0nSGVsbG8nKSkKLQotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxf
aWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhf
aGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKFtdLCBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzFdLm1lc3NhZ2VzKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nXSwgZGlzcGF0Y2hlci5jaGFubmVsX2V2ZW50c1sy
XS5tZXNzYWdlcykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShkaXNwYXRjaGVyLmNoYW5uZWxf
ZXZlbnRzLmhhc19rZXkoMykpCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAg
ICAgICBiIGZvciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Js
b2NrcygpCi0gICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9D
SEFOTkVMKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDMsIGRyb3BfY2hhbm5lbC5jaGFubmVs
X2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX05FV19DSEFOTkVM
X1NMT1RfVklPTEFUSU9OLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5k
cm9wX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9xdW90YV9vdmVyZmxvd19ieV9jbGllbnQoc2VsZik6
Ci0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKHNsb3RzPTEsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbmRfcXVvdGE9bXV4Ll9JTklUSUFM
X1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRl
X3JlcXVlc3RfaGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVz
dCA9IF9jcmVhdGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5u
ZWxfaWQ9MiwgZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29k
ZWRfaGFuZHNoYWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9j
aGFubmVsX3JlcXVlc3QpCi0gICAgICAgICMgUmVwbGVuaXNoIDB4N0ZGRkZGRkZGRkZGRkZGRiBi
eXRlcyB0d2ljZS4KLSAgICAgICAgZmxvd19jb250cm9sID0gX2NyZWF0ZV9mbG93X2NvbnRyb2xf
ZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTIsCi0gICAgICAgICAgICByZXBsZW5pc2hl
ZF9xdW90YT0weDdGRkZGRkZGRkZGRkZGRkYpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5w
dXRfYnl0ZXMoZmxvd19jb250cm9sKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5
dGVzKGZsb3dfY29udHJvbCkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2Fn
ZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAot
ICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29u
dHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RF
X0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBkcm9wX2NoYW5uZWwu
Y2hhbm5lbF9pZCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9TRU5E
X1FVT1RBX09WRVJGTE9XLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5k
cm9wX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX2VuY2Fwc3VsYXRlZF9tZXNzYWdlKHNl
bGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBk
aXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBt
dXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIu
c3RhcnQoKQotCi0gICAgICAgIGZpcnN0X2J5dGUgPSAobXV4Ll9NVVhfT1BDT0RFX0FERF9DSEFO
TkVMX1JFUVVFU1QgPDwgNSkKLSAgICAgICAgYmxvY2sgPSAoY2hyKGZpcnN0X2J5dGUpICsKLSAg
ICAgICAgICAgICAgICAgbXV4Ll9lbmNvZGVfY2hhbm5lbF9pZCgxKSArCi0gICAgICAgICAgICAg
ICAgIG11eC5fZW5jb2RlX251bWJlcigwKSkKLSAgICAgICAgcGF5bG9hZCA9IG11eC5fZW5jb2Rl
X2NoYW5uZWxfaWQobXV4Ll9DT05UUk9MX0NIQU5ORUxfSUQpICsgYmxvY2sKLSAgICAgICAgdGV4
dF9mcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUocGF5bG9hZCwgb3Bjb2RlPWNvbW1vbi5PUENP
REVfVEVYVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFzaz1U
cnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKHRleHRfZnJhbWUpCi0K
LSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG11eF9oYW5kbGVyLndhaXRfdW50aWxfZG9uZSh0aW1l
b3V0PTIpKQotCi0gICAgICAgIGRyb3BfY2hhbm5lbCA9IG5leHQoCi0gICAgICAgICAgICBiIGZv
ciBiIGluIHJlcXVlc3QuY29ubmVjdGlvbi5nZXRfd3JpdHRlbl9jb250cm9sX2Jsb2NrcygpCi0g
ICAgICAgICAgICBpZiBiLm9wY29kZSA9PSBtdXguX01VWF9PUENPREVfRFJPUF9DSEFOTkVMKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0lOVkFMSURfRU5DQVBTVUxB
VElOR19NRVNTQUdFLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9w
X2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9F
TkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9jaGFubmVsX2lkX3RydW5jYXRl
ZChzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0KCkKLSAgICAg
ICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11eF9oYW5kbGVy
ID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAgIG11eF9oYW5k
bGVyLnN0YXJ0KCkKLQotICAgICAgICAjIFRoZSBsYXN0IGJ5dGUgb2YgdGhlIGNoYW5uZWwgaWQg
aXMgbWlzc2luZy4KLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDgwJywg
bWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lKQot
Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGlt
ZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBm
b3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQot
ICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9DSEFOTkVMX0lEX1RSVU5D
QVRFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkcm9wX2NoYW5uZWwuZHJvcF9jb2RlKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbi5TVEFUVVNfSU5URVJOQUxfRU5EUE9JTlRf
RVJST1IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnNlcnZl
cl9jbG9zZV9jb2RlKQotCi0gICAgZGVmIHRlc3RfaW5uZXJfZnJhbWVfdHJ1bmNhdGVkKHNlbGYp
OgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3QoKQotICAgICAgICBkaXNw
YXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4X2hhbmRsZXIgPSBtdXgu
X011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAgbXV4X2hhbmRsZXIuc3Rh
cnQoKQotCi0gICAgICAgICMgSnVzdCBjb250YWluIGNoYW5uZWwgaWQgMS4KLSAgICAgICAgZnJh
bWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1lKCdceDAxJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1
ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9w
X2NoYW5uZWwgPSBuZXh0KAotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rp
b24uZ2V0X3dyaXR0ZW5fY29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUg
PT0gbXV4Ll9NVVhfT1BDT0RFX0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChtdXguX0RST1BfQ09ERV9FTkNBUFNVTEFURURfRlJBTUVfSVNfVFJVTkNBVEVELAotICAgICAg
ICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUp
Ci0KLSAgICBkZWYgdGVzdF91bmtub3duX211eF9vcGNvZGUoc2VsZik6Ci0gICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgpCi0gICAgICAgIGRpc3BhdGNoZXIgPSBfTXV4TW9j
a0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5fTXV4SGFuZGxlcihyZXF1
ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFydCgpCi0KLSAgICAgICAg
IyBVbmRlZmluZWQgb3Bjb2RlIDUKLSAgICAgICAgZnJhbWUgPSBjcmVhdGVfYmluYXJ5X2ZyYW1l
KCdceDAwXHhhMCcsIG1hc2s9VHJ1ZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcyhmcmFtZSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIud2FpdF91
bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgZHJvcF9jaGFubmVsID0gbmV4dCgKLSAg
ICAgICAgICAgIGIgZm9yIGIgaW4gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX2NvbnRy
b2xfYmxvY2tzKCkKLSAgICAgICAgICAgIGlmIGIub3Bjb2RlID09IG11eC5fTVVYX09QQ09ERV9E
Uk9QX0NIQU5ORUwpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXV4Ll9EUk9QX0NPREVfVU5L
Tk9XTl9NVVhfT1BDT0RFLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3BfY2hhbm5lbC5k
cm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRVU19JTlRFUk5B
TF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX211eF9jb250
cm9sX2Jsb2NrKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVlc3Qo
KQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAgbXV4
X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAgICAg
bXV4X2hhbmRsZXIuc3RhcnQoKQotCi0gICAgICAgICMgRHJvcENoYW5uZWwgY29udGFpbnMgMSBi
eXRlIHJlYXNvbgotICAgICAgICBmcmFtZSA9IGNyZWF0ZV9iaW5hcnlfZnJhbWUoJ1x4MDBceDYw
XHgwMFx4MDFceDAwJywgbWFzaz1UcnVlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKGZyYW1lKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0
X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWwgPSBuZXh0KAot
ICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5fY29u
dHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BDT0RF
X0RST1BfQ0hBTk5FTCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtdXguX0RST1BfQ09ERV9J
TlZBTElEX01VWF9DT05UUk9MX0JMT0NLLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRyb3Bf
Y2hhbm5lbC5kcm9wX2NvZGUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uLlNUQVRV
U19JTlRFUk5BTF9FTkRQT0lOVF9FUlJPUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXF1
ZXN0LmNvbm5lY3Rpb24uc2VydmVyX2Nsb3NlX2NvZGUpCi0KLSAgICBkZWYgdGVzdF9wZXJtZXNz
YWdlX2NvbXByZXNzKHNlbGYpOgotICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9tb2NrX3JlcXVl
c3QoKQotICAgICAgICBkaXNwYXRjaGVyID0gX011eE1vY2tEaXNwYXRjaGVyKCkKLSAgICAgICAg
bXV4X2hhbmRsZXIgPSBtdXguX011eEhhbmRsZXIocmVxdWVzdCwgZGlzcGF0Y2hlcikKLSAgICAg
ICAgbXV4X2hhbmRsZXIuc3RhcnQoKQotICAgICAgICBtdXhfaGFuZGxlci5hZGRfY2hhbm5lbF9z
bG90cyhtdXguX0lOSVRJQUxfTlVNQkVSX09GX0NIQU5ORUxfU0xPVFMsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG11eC5fSU5JVElBTF9RVU9UQV9GT1JfQ0xJRU5UKQot
Ci0gICAgICAgICMgRW5hYmxlIHBlcm1lc3NhZ2UgY29tcHJlc3MgZXh0ZW5zaW9uIG9uIGxvZ2lj
YWwgY2hhbm5lbCAyLgotICAgICAgICBleHRlbnNpb25zID0gJyVzOyBtZXRob2Q9ZGVmbGF0ZScg
JSAoCi0gICAgICAgICAgICBjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRFTlNJT04p
Ci0gICAgICAgIGVuY29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRo
PScvZWNobycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBleHRlbnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3Qg
PSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3RfZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVs
X2lkPTIsIGVuY29kaW5nPTAsCi0gICAgICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVk
X2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hh
bm5lbF9yZXF1ZXN0KQotCi0gICAgICAgIGZsb3dfY29udHJvbCA9IF9jcmVhdGVfZmxvd19jb250
cm9sX2ZyYW1lKGNoYW5uZWxfaWQ9MiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmVwbGVuaXNoZWRfcXVvdGE9MjApCi0gICAgICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi5wdXRfYnl0ZXMoZmxvd19jb250cm9sKQotCi0gICAgICAgICMgU2VuZCBjb21w
cmVzc2VkICdIZWxsbycgdHdpY2UuCi0gICAgICAgIGNvbXByZXNzID0gemxpYi5jb21wcmVzc29i
aigKLSAgICAgICAgICAgIHpsaWIuWl9ERUZBVUxUX0NPTVBSRVNTSU9OLCB6bGliLkRFRkxBVEVE
LCAtemxpYi5NQVhfV0JJVFMpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29tcHJlc3Mu
Y29tcHJlc3MoJ0hlbGxvJykKLSAgICAgICAgY29tcHJlc3NlZF9oZWxsbzEgKz0gY29tcHJlc3Mu
Zmx1c2goemxpYi5aX1NZTkNfRkxVU0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8xID0gY29t
cHJlc3NlZF9oZWxsbzFbOi00XQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVz
KAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2Fn
ZT1jb21wcmVzc2VkX2hlbGxvMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBy
c3YxPVRydWUpKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzLmNvbXByZXNz
KCdIZWxsbycpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8yICs9IGNvbXByZXNzLmZsdXNoKHps
aWIuWl9TWU5DX0ZMVVNIKQotICAgICAgICBjb21wcmVzc2VkX2hlbGxvMiA9IGNvbXByZXNzZWRf
aGVsbG8yWzotNF0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygKLSAgICAg
ICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTIsIG1lc3NhZ2U9Y29tcHJl
c3NlZF9oZWxsbzIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnN2MT1UcnVl
KSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAg
X2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwgbWVzc2FnZT0nR29vZGJ5ZScpKQot
ICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0
ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MiwgbWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxlci53YWl0X3VudGlsX2RvbmUodGltZW91dD0y
KSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnSGVsbG8nLCAnSGVsbG8nXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLmNoYW5uZWxfZXZlbnRzWzJdLm1lc3NhZ2Vz
KQotICAgICAgICAjIFdyaXR0ZW4gJ0hlbGxvJ3Mgc2hvdWxkIGJlIGNvbXByZXNzZWQuCi0gICAg
ICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5jb25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDIp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChjb21wcmVzc2VkX2hlbGxvMSwgbWVzc2FnZXNbMF0pCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoY29tcHJlc3NlZF9oZWxsbzIsIG1lc3NhZ2VzWzFdKQotCi0KLSAgICBk
ZWYgdGVzdF9wZXJtZXNzYWdlX2NvbXByZXNzX2ZyYWdtZW50ZWRfbWVzc2FnZShzZWxmKToKLSAg
ICAgICAgZXh0ZW5zaW9ucyA9IGNvbW1vbi5wYXJzZV9leHRlbnNpb25zKAotICAgICAgICAgICAg
JyVzOyBtZXRob2Q9ZGVmbGF0ZScgJSBjb21tb24uUEVSTUVTU0FHRV9DT01QUkVTU0lPTl9FWFRF
TlNJT04pCi0gICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX21vY2tfcmVxdWVzdCgKLSAgICAgICAg
ICAgIGxvZ2ljYWxfY2hhbm5lbF9leHRlbnNpb25zPWV4dGVuc2lvbnMpCi0gICAgICAgIGRpc3Bh
dGNoZXIgPSBfTXV4TW9ja0Rpc3BhdGNoZXIoKQotICAgICAgICBtdXhfaGFuZGxlciA9IG11eC5f
TXV4SGFuZGxlcihyZXF1ZXN0LCBkaXNwYXRjaGVyKQotICAgICAgICBtdXhfaGFuZGxlci5zdGFy
dCgpCi0gICAgICAgIG11eF9oYW5kbGVyLmFkZF9jaGFubmVsX3Nsb3RzKG11eC5fSU5JVElBTF9O
VU1CRVJfT0ZfQ0hBTk5FTF9TTE9UUywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbXV4Ll9JTklUSUFMX1FVT1RBX0ZPUl9DTElFTlQpCi0KLSAgICAgICAgIyBTZW5kIGNv
bXByZXNzZWQgJ0hlbGxvSGVsbG9IZWxsbycgYXMgZnJhZ21lbnRlZCBtZXNzYWdlLgotICAgICAg
ICBjb21wcmVzcyA9IHpsaWIuY29tcHJlc3NvYmooCi0gICAgICAgICAgICB6bGliLlpfREVGQVVM
VF9DT01QUkVTU0lPTiwgemxpYi5ERUZMQVRFRCwgLXpsaWIuTUFYX1dCSVRTKQotICAgICAgICBj
b21wcmVzc2VkX2hlbGxvID0gY29tcHJlc3MuY29tcHJlc3MoJ0hlbGxvSGVsbG9IZWxsbycpCi0g
ICAgICAgIGNvbXByZXNzZWRfaGVsbG8gKz0gY29tcHJlc3MuZmx1c2goemxpYi5aX1NZTkNfRkxV
U0gpCi0gICAgICAgIGNvbXByZXNzZWRfaGVsbG8gPSBjb21wcmVzc2VkX2hlbGxvWzotNF0KLQot
ICAgICAgICBtID0gbGVuKGNvbXByZXNzZWRfaGVsbG8pIC8gMgotICAgICAgICByZXF1ZXN0LmNv
bm5lY3Rpb24ucHV0X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNo
YW5uZWxfaWQ9MSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNv
bXByZXNzZWRfaGVsbG9bOm1dLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZp
bj1GYWxzZSwgcnN2MT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9w
Y29kZT1jb21tb24uT1BDT0RFX1RFWFQpKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPWNvbXByZXNzZWRfaGVs
bG9bbTpdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1UcnVlLCByc3Yx
PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24u
T1BDT0RFX0NPTlRJTlVBVElPTikpCi0KLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9i
eXRlcygKLSAgICAgICAgICAgIF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTEsIG1l
c3NhZ2U9J0dvb2RieWUnKSkKLQotICAgICAgICBzZWxmLmFzc2VydFRydWUobXV4X2hhbmRsZXIu
d2FpdF91bnRpbF9kb25lKHRpbWVvdXQ9MikpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChb
J0hlbGxvSGVsbG9IZWxsbyddLAotICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3BhdGNoZXIu
Y2hhbm5lbF9ldmVudHNbMV0ubWVzc2FnZXMpCi0gICAgICAgIG1lc3NhZ2VzID0gcmVxdWVzdC5j
b25uZWN0aW9uLmdldF93cml0dGVuX21lc3NhZ2VzKDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoMSwgbGVuKG1lc3NhZ2VzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wcmVzc2Vk
X2hlbGxvLCBtZXNzYWdlc1swXSkKLQotICAgIGRlZiB0ZXN0X3JlY2VpdmVfYmFkX2ZyYWdtZW50
ZWRfbWVzc2FnZShzZWxmKToKLSAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfbW9ja19yZXF1ZXN0
KCkKLSAgICAgICAgZGlzcGF0Y2hlciA9IF9NdXhNb2NrRGlzcGF0Y2hlcigpCi0gICAgICAgIG11
eF9oYW5kbGVyID0gbXV4Ll9NdXhIYW5kbGVyKHJlcXVlc3QsIGRpc3BhdGNoZXIpCi0gICAgICAg
IG11eF9oYW5kbGVyLnN0YXJ0KCkKLSAgICAgICAgbXV4X2hhbmRsZXIuYWRkX2NoYW5uZWxfc2xv
dHMobXV4Ll9JTklUSUFMX05VTUJFUl9PRl9DSEFOTkVMX1NMT1RTLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtdXguX0lOSVRJQUxfUVVPVEFfRk9SX0NMSUVOVCkKLQot
ICAgICAgICBlbmNvZGVkX2hhbmRzaGFrZSA9IF9jcmVhdGVfcmVxdWVzdF9oZWFkZXIocGF0aD0n
L2VjaG8nKQotICAgICAgICBhZGRfY2hhbm5lbF9yZXF1ZXN0ID0gX2NyZWF0ZV9hZGRfY2hhbm5l
bF9yZXF1ZXN0X2ZyYW1lKAotICAgICAgICAgICAgY2hhbm5lbF9pZD0yLCBlbmNvZGluZz0wLAot
ICAgICAgICAgICAgZW5jb2RlZF9oYW5kc2hha2U9ZW5jb2RlZF9oYW5kc2hha2UpCi0gICAgICAg
IHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoYWRkX2NoYW5uZWxfcmVxdWVzdCkKLQotICAg
ICAgICAjIFNlbmQgYSBmcmFtZSB3aXRoIGZpbj1GYWxzZSwgYW5kIHRoZW4gc2VuZCBhIGZyYW1l
IHdpdGgKLSAgICAgICAgIyBvcGNvZGU9VEVYVCAobm90IENPTlRJTlVBVElPTikuIExvZ2ljYWwg
Y2hhbm5lbCAyIHNob3VsZCBiZSBkcm9wcGVkLgotICAgICAgICBmcmFtZTEgPSBfY3JlYXRlX2xv
Z2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbWVzc2FnZT0nSGVsbG8gJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1RFWFQpCi0gICAgICAgIHJlcXVlc3QuY29ubmVjdGlv
bi5wdXRfYnl0ZXMoZnJhbWUxKQotICAgICAgICBmcmFtZTIgPSBfY3JlYXRlX2xvZ2ljYWxfZnJh
bWUoY2hhbm5lbF9pZD0yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bWVzc2FnZT0nV29ybGQhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGZpbj1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Bjb2Rl
PWNvbW1vbi5PUENPREVfVEVYVCkKLSAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLnB1dF9ieXRl
cyhmcmFtZTIpCi0KLSAgICAgICAgZW5jb2RlZF9oYW5kc2hha2UgPSBfY3JlYXRlX3JlcXVlc3Rf
aGVhZGVyKHBhdGg9Jy9lY2hvJykKLSAgICAgICAgYWRkX2NoYW5uZWxfcmVxdWVzdCA9IF9jcmVh
dGVfYWRkX2NoYW5uZWxfcmVxdWVzdF9mcmFtZSgKLSAgICAgICAgICAgIGNoYW5uZWxfaWQ9Mywg
ZW5jb2Rpbmc9MCwKLSAgICAgICAgICAgIGVuY29kZWRfaGFuZHNoYWtlPWVuY29kZWRfaGFuZHNo
YWtlKQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0X2J5dGVzKGFkZF9jaGFubmVsX3Jl
cXVlc3QpCi0KLSAgICAgICAgIyBTZW5kIGEgZnJhbWUgd2l0aCBvcGNvZGU9Q09OVElOVUFUSU9O
IHdpdGhvdXQgYSBwcmVjZWRpbmcgZnJhbWUKLSAgICAgICAgIyB0aGUgZmluIG9mIHdoaWNoIGlz
IG5vdCBzZXQuIExvZ2ljYWwgY2hhbm5lbCAzIHNob3VsZCBiZSBkcm9wcGVkLgotICAgICAgICBm
cmFtZTMgPSBfY3JlYXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD0zLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVsbG8nLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9DT05USU5VQVRJT04pCi0g
ICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWUzKQotCi0gICAgICAgIGVu
Y29kZWRfaGFuZHNoYWtlID0gX2NyZWF0ZV9yZXF1ZXN0X2hlYWRlcihwYXRoPScvZWNobycpCi0g
ICAgICAgIGFkZF9jaGFubmVsX3JlcXVlc3QgPSBfY3JlYXRlX2FkZF9jaGFubmVsX3JlcXVlc3Rf
ZnJhbWUoCi0gICAgICAgICAgICBjaGFubmVsX2lkPTQsIGVuY29kaW5nPTAsCi0gICAgICAgICAg
ICBlbmNvZGVkX2hhbmRzaGFrZT1lbmNvZGVkX2hhbmRzaGFrZSkKLSAgICAgICAgcmVxdWVzdC5j
b25uZWN0aW9uLnB1dF9ieXRlcyhhZGRfY2hhbm5lbF9yZXF1ZXN0KQotCi0gICAgICAgICMgU2Vu
ZCBhIGZyYW1lIHdpdGggb3Bjb2RlPVBJTkcgYW5kIGZpbj1GYWxzZSwgYW5kIHRoZW4gc2VuZCBh
IGZyYW1lCi0gICAgICAgICMgd2l0aCBvcGNvZGU9VEVYVCAobm90IENPTlRJTlVBVElPTikuIExv
Z2ljYWwgY2hhbm5lbCA0IHNob3VsZCBiZQotICAgICAgICAjIGRyb3BwZWQuCi0gICAgICAgIGZy
YW1lNCA9IF9jcmVhdGVfbG9naWNhbF9mcmFtZShjaGFubmVsX2lkPTQsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdQaW5nJywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGZpbj1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9wY29kZT1jb21tb24uT1BDT0RFX1BJTkcpCi0gICAgICAgIHJl
cXVlc3QuY29ubmVjdGlvbi5wdXRfYnl0ZXMoZnJhbWU0KQotICAgICAgICBmcmFtZTUgPSBfY3Jl
YXRlX2xvZ2ljYWxfZnJhbWUoY2hhbm5lbF9pZD00LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVsbG8nLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZmluPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBvcGNvZGU9Y29tbW9uLk9QQ09ERV9URVhUKQotICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ucHV0X2J5dGVzKGZyYW1lNSkKLQotICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ucHV0
X2J5dGVzKAotICAgICAgICAgICAgX2NyZWF0ZV9sb2dpY2FsX2ZyYW1lKGNoYW5uZWxfaWQ9MSwg
bWVzc2FnZT0nR29vZGJ5ZScpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtdXhfaGFuZGxl
ci53YWl0X3VudGlsX2RvbmUodGltZW91dD0yKSkKLQotICAgICAgICBkcm9wX2NoYW5uZWxzID0g
WwotICAgICAgICAgICAgYiBmb3IgYiBpbiByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X3dyaXR0ZW5f
Y29udHJvbF9ibG9ja3MoKQotICAgICAgICAgICAgaWYgYi5vcGNvZGUgPT0gbXV4Ll9NVVhfT1BD
T0RFX0RST1BfQ0hBTk5FTF0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgzLCBsZW4oZHJvcF9j
aGFubmVscykpCi0gICAgICAgIGZvciBkIGluIGRyb3BfY2hhbm5lbHM6Ci0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKG11eC5fRFJPUF9DT0RFX0JBRF9GUkFHTUVOVEFUSU9OLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkLmRyb3BfY29kZSkKLQotCi1pZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3N0cmVhbS5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdF9zdHJlYW0ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxYWNmZWIwNDhk
M2IyMDMyYTc5NDhjZmEyYWRlYTdjZTY0Zjk1YWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3N0cmVhbS5weQorKysgL2Rl
di9udWxsCkBAIC0xLDc3ICswLDAgQEAKLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotIwotIyBDb3B5
cmlnaHQgMjAxMSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
Ci0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAg
ICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwot
IyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3Rz
IGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3Jp
dHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBD
T1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQg
VE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCi0KLQotIiIiVGVzdHMgZm9yIHN0cmVhbSBtb2R1bGUuIiIiCi0KLQotaW1wb3J0
IHVuaXR0ZXN0Ci0KLWltcG9ydCBzZXRfc3lzX3BhdGggICMgVXBkYXRlIHN5cy5wYXRoIHRvIGxv
Y2F0ZSBtb2RfcHl3ZWJzb2NrZXQgbW9kdWxlLgotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBv
cnQgY29tbW9uCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgc3RyZWFtCi0KLQotY2xhc3Mg
U3RyZWFtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3Igc3Ry
ZWFtIG1vZHVsZS4iIiIKLQotICAgIGRlZiB0ZXN0X2NyZWF0ZV9oZWFkZXIoc2VsZik6Ci0gICAg
ICAgICMgbW9yZSwgcnN2MSwgLi4uLCByc3Y0IGFyZSBhbGwgdHJ1ZQotICAgICAgICBoZWFkZXIg
PSBzdHJlYW0uY3JlYXRlX2hlYWRlcihjb21tb24uT1BDT0RFX1RFWFQsIDEsIDEsIDEsIDEsIDEs
IDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4ZjFceDgxJywgaGVhZGVyKQotCi0gICAg
ICAgICMgTWF4aW11bSBwYXlsb2FkIHNpemUKLSAgICAgICAgaGVhZGVyID0gc3RyZWFtLmNyZWF0
ZV9oZWFkZXIoCi0gICAgICAgICAgICBjb21tb24uT1BDT0RFX1RFWFQsICgxIDw8IDYzKSAtIDEs
IDAsIDAsIDAsIDAsIDApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDFceDdmXHg3Zlx4
ZmZceGZmXHhmZlx4ZmZceGZmXHhmZlx4ZmYnLCBoZWFkZXIpCi0KLSAgICAgICAgIyBJbnZhbGlk
IG9wY29kZSAweDEwCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5jcmVhdGVfaGVhZGVyLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAweDEwLCAwLCAwLCAwLCAwLCAwLCAwKQotCi0gICAgICAgICMgSW52YWxp
ZCB2YWx1ZSAweGYgcGFzc2VkIHRvIG1vcmUgcGFyYW1ldGVyCi0gICAgICAgIHNlbGYuYXNzZXJ0
UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbS5jcmVh
dGVfaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tb24uT1BDT0RFX1RFWFQs
IDAsIDB4ZiwgMCwgMCwgMCwgMCkKLQotICAgICAgICAjIFRvbyBsb25nIHBheWxvYWRfbGVuZ3Ro
Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmVhbS5jcmVhdGVfaGVhZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb21tb24uT1BDT0RFX1RFWFQsIDEgPDwgNjMsIDAsIDAsIDAsIDAsIDApCi0KLQotaWYgX19u
YW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKCkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggY2E5YWM3MTMwYjczMDRlYjkyZGJiYmMxNTMzYWE0MTU0NWUwMjQ2ZC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L3Rlc3Rfc3RyZWFtX2hpeGllNzUucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBA
Ci0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMgQ29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMu
Ci0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJl
Ci0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1
c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMg
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENP
TlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMg
T1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQot
IyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3Rz
IGZvciBzdHJlYW0gbW9kdWxlLiIiIgotCi0KLWltcG9ydCB1bml0dGVzdAotCi1pbXBvcnQgc2V0
X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29ja2V0IG1v
ZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQuc3RyZWFtIGltcG9ydCBTdHJlYW1IaXhpZTc1
Ci1mcm9tIHRlc3QudGVzdF9tc2d1dGlsIGltcG9ydCBfY3JlYXRlX3JlcXVlc3RfaGl4aWU3NQot
Ci0KLWNsYXNzIFN0cmVhbUhpeGllNzVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiIiJB
IHVuaXR0ZXN0IGZvciBTdHJlYW1IaXhpZTc1IGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3RfcGF5
bG9hZF9sZW5ndGgoc2VsZik6Ci0gICAgICAgIGZvciBsZW5ndGgsIGJ5dGVzIGluICgoMCwgJ1x4
MDAnKSwgKDB4N2YsICdceDdmJyksICgweDgwLCAnXHg4MVx4MDAnKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICgweDEyMzQsICdceDgwXHhhNFx4MzQnKSk6Ci0gICAgICAgICAgICB0
ZXN0X3N0cmVhbSA9IFN0cmVhbUhpeGllNzUoX2NyZWF0ZV9yZXF1ZXN0X2hpeGllNzUoYnl0ZXMp
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgICAgICBsZW5ndGgs
IHRlc3Rfc3RyZWFtLl9yZWFkX3BheWxvYWRfbGVuZ3RoX2hpeGllNzUoKSkKLQotCi1pZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X3V0aWwucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RfdXRpbC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBmNGFi
MDU5NjUyYzU4NjllYzIwNWExMjhkZjkzOTE0Y2E4YzcxZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfdXRpbC5weQorKysg
L2Rldi9udWxsCkBAIC0xLDIwMCArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24KLSMKLSMg
Q29weXJpZ2h0IDIwMTEsIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0j
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSMg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0j
ICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBp
dHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBU
SEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1J
VEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUwsIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
IyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgotCi0KLSIiIlRlc3RzIGZvciB1dGlsIG1vZHVsZS4iIiIKLQotCi1pbXBv
cnQgb3MKLWltcG9ydCByYW5kb20KLWltcG9ydCBzeXMKLWltcG9ydCB1bml0dGVzdAotCi1pbXBv
cnQgc2V0X3N5c19wYXRoICAjIFVwZGF0ZSBzeXMucGF0aCB0byBsb2NhdGUgbW9kX3B5d2Vic29j
a2V0IG1vZHVsZS4KLQotZnJvbSBtb2RfcHl3ZWJzb2NrZXQgaW1wb3J0IHV0aWwKLQotCi1fVEVT
VF9EQVRBX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJ3Rl
c3RkYXRhJykKLQotCi1jbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIi
QSB1bml0dGVzdCBmb3IgdXRpbCBtb2R1bGUuIiIiCi0KLSAgICBkZWYgdGVzdF9nZXRfc3RhY2tf
dHJhY2Uoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ05vbmVcbicsIHV0aWwuZ2V0
X3N0YWNrX3RyYWNlKCkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGEgPSAxIC8gMCAgIyBJ
bnRlbnRpb25hbGx5IHJhaXNlIGV4Y2VwdGlvbi4KLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoK
LSAgICAgICAgICAgIHRyYWNlID0gdXRpbC5nZXRfc3RhY2tfdHJhY2UoKQotICAgICAgICAgICAg
c2VsZi5mYWlsVW5sZXNzKHRyYWNlLnN0YXJ0c3dpdGgoJ1RyYWNlYmFjaycpKQotICAgICAgICAg
ICAgc2VsZi5mYWlsVW5sZXNzKHRyYWNlLmZpbmQoJ1plcm9EaXZpc2lvbkVycm9yJykgIT0gLTEp
Ci0KLSAgICBkZWYgdGVzdF9wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKHNlbGYpOgotICAg
ICAgICBleGMgPSBFeGNlcHRpb24oJ1dvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
V29ybGQnLCBzdHIoZXhjKSkKLSAgICAgICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0
aW9uKCdIZWxsbyAnLCBleGMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hlbGxvIFdvcmxk
Jywgc3RyKGV4YykpCi0KLSAgICBkZWYgdGVzdF9nZXRfc2NyaXB0X2ludGVycChzZWxmKToKLSAg
ICAgICAgY3lnd2luX3BhdGggPSAnYzpcXGN5Z3dpblxcYmluJwotICAgICAgICBjeWd3aW5fcGVy
bCA9IG9zLnBhdGguam9pbihjeWd3aW5fcGF0aCwgJ3BlcmwnKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKE5vbmUsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCi0gICAgICAgICAgICBvcy5wYXRo
LmpvaW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoTm9uZSwgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgKLSAgICAgICAgICAgIG9zLnBhdGguam9p
bihfVEVTVF9EQVRBX0RJUiwgJ1JFQURNRScpLCBjeWd3aW5fcGF0aCkpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJy91c3IvYmluL3BlcmwgLXdUJywgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgK
LSAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxvLnBsJykpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN5Z3dpbl9wZXJsICsgJyAtd1QnLCB1dGlsLmdldF9z
Y3JpcHRfaW50ZXJwKAotICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAn
aGVsbG8ucGwnKSwgY3lnd2luX3BhdGgpKQotCi0gICAgZGVmIHRlc3RfaGV4aWZ5KHNlbGYpOgot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCc2MSA3YSA0MSA1YSAzMCAzOSAyMCAwOSAwZCAwYSAw
MCBmZicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgdXRpbC5oZXhpZnkoJ2F6QVowOSBcdFxy
XG5ceDAwXHhmZicpKQotCi0KLWNsYXNzIFJlcGVhdGVkWG9yTWFza2VyVGVzdCh1bml0dGVzdC5U
ZXN0Q2FzZSk6Ci0gICAgIiIiQSB1bml0dGVzdCBmb3IgUmVwZWF0ZWRYb3JNYXNrZXIgY2xhc3Mu
IiIiCi0KLSAgICBkZWYgdGVzdF9tYXNrKHNlbGYpOgotICAgICAgICAjIFNhbXBsZSBpbnB1dCBl
Niw5NyxhNSBpcyBVKzY1ZTUgaW4gVVRGLTgKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRl
ZFhvck1hc2tlcignXHhmZlx4ZmZceGZmXHhmZicpCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5t
YXNrKCdceGU2XHg5N1x4YTUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDE5XHg2OFx4
NWEnLCByZXN1bHQpCi0KLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcign
XHgwMFx4MDBceDAwXHgwMCcpCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceGU2XHg5
N1x4YTUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceGU2XHg5N1x4YTUnLCByZXN1bHQp
Ci0KLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignXHhlNlx4OTdceGE1
XHgyMCcpCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKCdceGU2XHg5N1x4YTUnKQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwXHgwMFx4MDAnLCByZXN1bHQpCi0KLSAgICBkZWYg
dGVzdF9tYXNrX3R3aWNlKHNlbGYpOgotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVkWG9y
TWFza2VyKCdceDAwXHg3Zlx4ZmZceDIwJykKLSAgICAgICAgIyBtYXNrWzBdLCBtYXNrWzFdLCAu
Li4gd2lsbCBiZSB1c2VkLgotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHgwMFx4MDBc
eDAwXHgwMFx4MDAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwXHg3Zlx4ZmZceDIw
XHgwMCcsIHJlc3VsdCkKLSAgICAgICAgIyBtYXNrWzJdLCBtYXNrWzBdLCAuLi4gd2lsbCBiZSB1
c2VkIGZvciB0aGUgbmV4dCBjYWxsLgotICAgICAgICByZXN1bHQgPSBtYXNrZXIubWFzaygnXHgw
MFx4MDBceDAwXHgwMFx4MDAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDdmXHhmZlx4
MjBceDAwXHg3ZicsIHJlc3VsdCkKLQotICAgIGRlZiB0ZXN0X21hc2tfbGFyZ2VfZGF0YShzZWxm
KToKLSAgICAgICAgbWFza2VyID0gdXRpbC5SZXBlYXRlZFhvck1hc2tlcignbUFTaycpCi0gICAg
ICAgIG9yaWdpbmFsID0gJycuam9pbihbY2hyKGkgJSAyNTYpIGZvciBpIGluIHhyYW5nZSgxMDAw
KV0pCi0gICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKG9yaWdpbmFsKQotICAgICAgICBleHBl
Y3RlZCA9ICcnLmpvaW4oCi0gICAgICAgICAgICAgICAgW2NocigoaSAlIDI1NikgXiBvcmQoJ21B
U2snW2kgJSA0XSkpIGZvciBpIGluIHhyYW5nZSgxMDAwKV0pCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoZXhwZWN0ZWQsIHJlc3VsdCkKLQotICAgICAgICBtYXNrZXIgPSB1dGlsLlJlcGVhdGVk
WG9yTWFza2VyKCdNYVNrJykKLSAgICAgICAgZmlyc3RfcGFydCA9ICdUaGUgV2ViU29ja2V0IFBy
b3RvY29sIGVuYWJsZXMgdHdvLXdheSBjb21tdW5pY2F0aW9uLicKLSAgICAgICAgcmVzdWx0ID0g
bWFza2VyLm1hc2soZmlyc3RfcGFydCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAg
ICAgICAgICAgICAnXHgxOVx0NktceDFhXHgwNDE4Ilx4MDI4XHgwZTlBXHgwM1x4MTkiXHgxNTxc
eDA4Ilxyc1x4MGUjJwotICAgICAgICAgICAgICAgICdceDAwMVx4MDcoXHgxMnNceDFmOlx4MGV+
XHgxYyxceDE4c1x4MDgiXHgwYz5ceDFlI1x4MDgwXG45JwotICAgICAgICAgICAgICAgICdceDA4
PFx4MDVjJywKLSAgICAgICAgICAgICAgICByZXN1bHQpCi0gICAgICAgIHNlY29uZF9wYXJ0ID0g
J0l0IGhhcyB0d28gcGFydHM6IGEgaGFuZHNoYWtlIGFuZCB0aGUgZGF0YSB0cmFuc2Zlci4nCi0g
ICAgICAgIHJlc3VsdCA9IG1hc2tlci5tYXNrKHNlY29uZF9wYXJ0KQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKAotICAgICAgICAgICAgICAgICIoJ0slXHgwMCBLOVx4MTY8Sz1ceDAwIVx4MWY+
W3Ncbm1cdDJceDA1KVx4MTI7XG4mXHgwNHNcbiMiCi0gICAgICAgICAgICAgICAgIlx4MDVzXHgx
ZiVceDA0c1x4MGYsXHgxNTJLOVx4MTMyXHgwNT5ceDA3Nlx4MTljIiwKLSAgICAgICAgICAgICAg
ICByZXN1bHQpCi0KLQotZGVmIGdldF9yYW5kb21fc2VjdGlvbihzb3VyY2UsIG1pbl9udW1fY2h1
bmtzKToKLSAgICBjaHVua3MgPSBbXQotICAgIGJ5dGVzX2NodW5rZWQgPSAwCi0KLSAgICB3aGls
ZSBieXRlc19jaHVua2VkIDwgbGVuKHNvdXJjZSk6Ci0gICAgICAgIGNodW5rX3NpemUgPSByYW5k
b20ucmFuZGludCgKLSAgICAgICAgICAgIDEsCi0gICAgICAgICAgICBtaW4obGVuKHNvdXJjZSkg
LyBtaW5fbnVtX2NodW5rcywgbGVuKHNvdXJjZSkgLSBieXRlc19jaHVua2VkKSkKLSAgICAgICAg
Y2h1bmsgPSBzb3VyY2VbYnl0ZXNfY2h1bmtlZDpieXRlc19jaHVua2VkICsgY2h1bmtfc2l6ZV0K
LSAgICAgICAgY2h1bmtzLmFwcGVuZChjaHVuaykKLSAgICAgICAgYnl0ZXNfY2h1bmtlZCArPSBj
aHVua19zaXplCi0KLSAgICByZXR1cm4gY2h1bmtzCi0KLQotY2xhc3MgSW5mbGF0ZXJEZWZsYXRl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIkEgdW5pdHRlc3QgZm9yIF9JbmZsYXRl
ciBhbmQgX0RlZmxhdGVyIGNsYXNzLiIiIgotCi0gICAgZGVmIHRlc3RfaW5mbGF0ZV9kZWZsYXRl
X2RlZmF1bHQoc2VsZik6Ci0gICAgICAgIGlucHV0ID0gYidoZWxsbycgKyAnLScgKiAzMDAwMCAr
IGInaGVsbG8nCi0gICAgICAgIGluZmxhdGVyMTUgPSB1dGlsLl9JbmZsYXRlcigxNSkKLSAgICAg
ICAgZGVmbGF0ZXIxNSA9IHV0aWwuX0RlZmxhdGVyKDE1KQotICAgICAgICBpbmZsYXRlcjggPSB1
dGlsLl9JbmZsYXRlcig4KQotICAgICAgICBkZWZsYXRlcjggPSB1dGlsLl9EZWZsYXRlcig4KQot
Ci0gICAgICAgIGNvbXByZXNzZWQxNSA9IGRlZmxhdGVyMTUuY29tcHJlc3NfYW5kX2ZpbmlzaChp
bnB1dCkKLSAgICAgICAgY29tcHJlc3NlZDggPSBkZWZsYXRlcjguY29tcHJlc3NfYW5kX2Zpbmlz
aChpbnB1dCkKLQotICAgICAgICBpbmZsYXRlcjE1LmFwcGVuZChjb21wcmVzc2VkMTUpCi0gICAg
ICAgIGluZmxhdGVyOC5hcHBlbmQoY29tcHJlc3NlZDgpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRO
b3RFcXVhbChjb21wcmVzc2VkMTUsIGNvbXByZXNzZWQ4KQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGlucHV0LCBpbmZsYXRlcjE1LmRlY29tcHJlc3MoLTEpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGlucHV0LCBpbmZsYXRlcjguZGVjb21wcmVzcygtMSkpCi0KLSAgICBkZWYgdGVzdF9y
YW5kb21fc2VjdGlvbihzZWxmKToKLSAgICAgICAgcmFuZG9tLnNlZWQoYT0wKQotICAgICAgICBz
b3VyY2UgPSAnJy5qb2luKAotICAgICAgICAgICAgW2NocihyYW5kb20ucmFuZGludCgwLCAyNTUp
KSBmb3IgaSBpbiB4cmFuZ2UoMTAwICogMTAyNCldKQotCi0gICAgICAgIGNodW5rZWRfaW5wdXQg
PSBnZXRfcmFuZG9tX3NlY3Rpb24oc291cmNlLCAxMCkKLSAgICAgICAgcHJpbnQgIklucHV0IGNo
dW5rIHNpemVzOiAlciIgJSBbbGVuKGMpIGZvciBjIGluIGNodW5rZWRfaW5wdXRdCi0KLSAgICAg
ICAgZGVmbGF0ZXIgPSB1dGlsLl9EZWZsYXRlcigxNSkKLSAgICAgICAgY29tcHJlc3NlZCA9IFtd
Ci0gICAgICAgIGZvciBjaHVuayBpbiBjaHVua2VkX2lucHV0OgotICAgICAgICAgICAgY29tcHJl
c3NlZC5hcHBlbmQoZGVmbGF0ZXIuY29tcHJlc3MoY2h1bmspKQotICAgICAgICBjb21wcmVzc2Vk
LmFwcGVuZChkZWZsYXRlci5jb21wcmVzc19hbmRfZmluaXNoKCcnKSkKLQotICAgICAgICBjaHVu
a2VkX2V4cGVjdGF0aW9uID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCi0gICAgICAg
IHByaW50ICgiRXhwZWN0YXRpb24gY2h1bmsgc2l6ZXM6ICVyIiAlCi0gICAgICAgICAgICAgICBb
bGVuKGMpIGZvciBjIGluIGNodW5rZWRfZXhwZWN0YXRpb25dKQotCi0gICAgICAgIGluZmxhdGVy
ID0gdXRpbC5fSW5mbGF0ZXIoMTUpCi0gICAgICAgIGluZmxhdGVyLmFwcGVuZCgnJy5qb2luKGNv
bXByZXNzZWQpKQotICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtlZF9leHBlY3RhdGlvbjoKLSAg
ICAgICAgICAgIGRlY29tcHJlc3NlZCA9IGluZmxhdGVyLmRlY29tcHJlc3MobGVuKGNodW5rKSkK
LSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2h1bmssIGRlY29tcHJlc3NlZCkKLQotICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBpbmZsYXRlci5kZWNvbXByZXNzKC0xKSkKLQotCi1p
ZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQotCi0KLSMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9SRUFETUUg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggYzAwMWFhNTU5NWNkZDEzNDA3ZjU3MjhlY2Q1MzJhNWQxMjI2M2VmYS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rk
YXRhL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xICswLDAgQEAKLVRlc3QgZGF0YSBkaXJlY3Rv
cnkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlf
dXNlcl93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2Fib3J0X2J5X3Vz
ZXJfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjdmOTkzMGY3ODI0YzNh
NTM1OTE0YTViMzc3OWY2YjZmYmEyNDNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlf
dXNlcl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi0jIENvcHlyaWdodCAy
MDExLCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
LSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0j
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAot
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLQotCi1mcm9tIG1vZF9weXdlYnNvY2tldCBpbXBvcnQgaGFuZHNoYWtlCi0KLQotZGVmIHdl
Yl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHJhaXNlIGhhbmRzaGFr
ZS5BYm9ydGVkQnlVc2VyRXhjZXB0aW9uKCJhYm9ydCBmb3IgdGVzdCIpCi0KLQotZGVmIHdlYl9z
b2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKLSAgICByYWlzZSBoYW5kc2hha2UuQWJvcnRl
ZEJ5VXNlckV4Y2VwdGlvbigiYWJvcnQgZm9yIHRlc3QiKQotCi0KLSMgdmk6c3RzPTQgc3c9NCBl
dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFua193c2gu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Y4N2M2YWYyM2RmMDhlZmUzNTc1Y2FlMjA4ZGU1MDIy
Y2JhYTY2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQorKysgL2Rldi9udWxs
CkBAIC0xLDMxICswLDAgQEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSMgaW50ZW50aW9uYWxseSBs
ZWZ0IGJsYW5rCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29y
aWdpbl9jaGVja193c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL29yaWdp
bl9jaGVja193c2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjMTM5ZmExNzZj
YzM0MTdiZTk2ZGU3OThlNmE4MWVkMTQ5YjE5OTIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmln
aW5fY2hlY2tfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyBDb3B5cmln
aHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0j
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3Ro
ZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICog
TmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBj
b250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRl
cml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRl
biBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZ
UklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8s
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgot
ICAgIGlmIHJlcXVlc3Qud3Nfb3JpZ2luID09ICdodHRwOi8vZXhhbXBsZS5jb20nOgotICAgICAg
ICByZXR1cm4KLSAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmFjY2VwdGFibGUgb3JpZ2luOiAlcicg
JSByZXF1ZXN0LndzX29yaWdpbikKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnb3JpZ2luX2NoZWNrX3dzaC5w
eSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
cmVxdWVzdC53c19yZXNvdXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9
NCBzdz00IGV0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggYjk4MmQwMjMxZWYwMGYwMmUwZDkwZGY2NzhlYjgwNGJhNDM4NjJkOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90
ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3NoLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiRXhj
ZXB0aW9uIGluIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSgpLgotIiIiCi0KLQotZGVmIHdlYl9z
b2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2Vi
X3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJhaXNlIEV4Y2VwdGlvbignSW50
ZW50aW9uYWwgRXhjZXB0aW9uIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgICAgICAgICAgKHJl
cXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQotCi0KLSMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIv
bm9fd3NoX2F0X3RoZV9lbmQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi9ub193c2hfYXRfdGhlX2VuZC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTdl
N2JlMTgwMmUzYzY2YzYzODQ5ODc1ZWEzNWUyNDA2YTM4MWU2MC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAg
QEAKLSMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCi0jIEFsbCByaWdodHMgcmVzZXJ2ZWQu
Ci0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRp
b24uCi0jICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90
ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMiIEFO
RCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAot
IyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBB
TkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNF
UzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgotCi0KLSIiIkNvcnJlY3Qgc2lnbmF0dXJlcywgd3JvbmcgZmls
ZSBuYW1lLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVl
c3QpOgotICAgIHBhc3MKLQotCi1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3Qp
OgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvbm9fd3No
X2F0X3RoZV9lbmQucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgIChyZXF1
ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00IHN3
PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25v
bl9jYWxsYWJsZV93c2gucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9u
b25fY2FsbGFibGVfd3NoLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNjM1MmVi
NGNhMjM4OTUyMjM5ZTM1NDI3MjhjZTNiMzhkODNkZDZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL25vbl9jYWxsYWJsZV93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi0j
IENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwot
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0j
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgot
IyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2Yg
aXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlv
ciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
VEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBBTkQgQU5Z
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKLSMgTElN
SVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFMLCBFWEVN
UExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJ
TUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
LSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KLQotCi0iIiJOb24tY2FsbGFibGUgaGFuZGxlcnMuCi0iIiIKLQotCi13
ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSA9IFRydWUKLXdlYl9zb2NrZXRfdHJhbnNmZXJf
ZGF0YSA9IDEKLQotCi0jIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGIzZmY2OTMwMjU2YmMxYjEzZTJjNGMyZDFjODQzYzRiN2M4MGFhNC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3Rk
YXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93c2gucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCww
IEBACi0jIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgotIyBBbGwgcmlnaHRzIHJlc2VydmVk
LgotIwotIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0jIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0
aW9uLgotIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFt
ZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZp
YyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFTIElTIiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QK
LSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJ
TiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJV
UFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLQotCi1kZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UocmVxdWVzdCk6Ci0gICAgcGFzcwotCi0KLWRlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEo
cmVxdWVzdCk6Ci0gICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdzdWIvcGxhaW5fd3NoLnB5
IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIChy
ZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkKLQotCi0jIHZpOnN0cz00
IHN3PTQgZXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRhZDNmMmU4NTkxMGNi
NjdjYTIzNmIxNDNmZDEwYTVhMjc3ZWRlZDkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXJfd3No
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9l
bmQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub25fY2FsbGFibGVf
d3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfaGFuZHNoYWtlX3Np
Z193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFu
c2Zlcl9zaWdfd3NoLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2YmY2NTliYzlhZjAxYzEwN2VmMzUwOGIyYjVkMDE3M2RjZjU5MDA5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3Jj
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIElu
Yy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBh
cmUKLSMgbWV0OgotIwotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lcgotIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBv
ZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJl
IHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwot
IyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIg
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAot
IyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
Ci0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jv
bmcgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2Ugc2lnbmF0dXJlLgotIiIiCi0KLQotZGVm
IG5vX3dlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQot
Ci1kZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29u
bmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAgICdzdWIvd3JvbmdfaGFuZHNoYWtlX3NpZ193c2gu
cHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKLSAgICAgICAgICAgICAocmVxdWVzdC53c19yZXNv
dXJjZSwgcmVxdWVzdC53c19wcm90b2NvbCkpCi0KLQotIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ190cmFuc2Zl
cl9zaWdfd3NoLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3Jvbmdf
dHJhbnNmZXJfc2lnX3dzaC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBlMmU1
NTA3OTRiN2I5OTBlMGI0NGIzM2NmYzJkNGQxNTJlNmMwNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L3N1Yi93cm9uZ190cmFuc2Zlcl9zaWdfd3NoLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAs
MCBAQAotIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KLSMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSMKLSMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKLSMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCi0jIGRpc3RyaWJ1
dGlvbi4KLSMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
Ci0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLQotIiIiV3Jvbmcgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKCkgc2lnbmF0dXJlLgotIiIiCi0KLQotZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNo
YWtlKHJlcXVlc3QpOgotICAgIHBhc3MKLQotCi1kZWYgbm9fd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgotICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKLSAgICAgICAgICAg
ICdzdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQot
ICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQot
Ci0KLSMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MDI4YWU0
Nzc2Y2Q2NzlkZjNiNDM0NjhjNzE2MzFhMTVhZjBiMTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2Nr
ZXQvc3JjL3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYWJvcnRfYnlfdXNlcl93c2gucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3NyYy90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdGRhdGEv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNTMxZjkxMzQx
Zjg2ZmFhZTQ4MTBhN2MwMjM0ZjY3NDA3YjMyYTMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0ZGF0YS93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qv
dGVzdGRhdGEvUkVBRE1FCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggOGVlNzI0MGRhMjg5OTIyM2M2YzIyNDk5NzM2YWNiZGM2M2FmZDU4Mi4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvdGVzdC9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC9zcmMvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
c3JjL3Rlc3QvbW9jay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvcnVuX2FsbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3Qvc2V0X3N5c19wYXRo
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0
X2VuZHRvZW5kLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9o
eWJpLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC9zcmMvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Ny
Yy90ZXN0L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tZW1v
cml6aW5nZmlsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9tb2NrLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvdGVz
dC90ZXN0X21zZ3V0aWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy90ZXN0L3Rlc3RfbXV4LnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMv
dGVzdC90ZXN0X3N0cmVhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvc3JjL3Rlc3QvdGVzdF91dGlsLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3NyYy93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3ZDMyYTZiNmJiYmY4NmNlODhjZTY5YWJjM2RlNWE1MzQwMDE2YzZkLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvc3JjL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9z
cmMvQ09QWUlORwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvc3JjL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zcmMvUkVBRE1FCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tl
dC9zcmMvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJm
OGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L19faW5pdF9fLnB5CkBA
IC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNo
IHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jZXJ0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2Nl
cnQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MTI0MTZi
ODZiNWU1OGZkZjUyZTFlNTk2YzcxZGJlYjFiNDQ1MWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NlcnQvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jYWNl
cnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9weXdlYnNvY2tldC90ZXN0L2NlcnQvY2VydC5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9jbGllbnRf
Y2VydC5wMTIKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvY2VydC9rZXkucGVtCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3Qv
Y2xpZW50X2Zvcl90ZXN0aW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2NsaWVudF9mb3JfdGVzdGluZy5weQpp
bmRleCBjN2Y4MDVlZTk0ZTU0OTQ2OWVkODcwZGFlN2UwY2NmMjAyNmJlYWI3Li4xOGQxODU3MTJl
ZWE0MDhhMjNkMjRmYmNjZTFhYWY0OTNhNWFhN2UzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvY2xp
ZW50X2Zvcl90ZXN0aW5nLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9jbGllbnRfZm9yX3Rlc3RpbmcucHkK
QEAgLTMxNiw3ICszMTYsNyBAQCBjbGFzcyBXZWJTb2NrZXRIYW5kc2hha2Uob2JqZWN0KToKICAg
ICAgICAgICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQsCiAgICAgICAgICAgICBzZWxmLl9v
cHRpb25zLnVzZV90bHMpKQogCi0gICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyc2lvbiBpcyA4
OgorICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcnNpb24gPT0gODoKICAgICAgICAgICAgIGZp
ZWxkcy5hcHBlbmQoX3NlY19vcmlnaW5faGVhZGVyKHNlbGYuX29wdGlvbnMub3JpZ2luKSkKICAg
ICAgICAgZWxzZToKICAgICAgICAgICAgIGZpZWxkcy5hcHBlbmQoX29yaWdpbl9oZWFkZXIoc2Vs
Zi5fb3B0aW9ucy5vcmlnaW4pKQpAQCAtMzk4LDcgKzM5OCw3IEBAIGNsYXNzIFdlYlNvY2tldEhh
bmRzaGFrZShvYmplY3QpOgogICAgICAgICAjIFZhbGlkYXRlCiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIGRlY29kZWRfYWNjZXB0ID0gYmFzZTY0LmI2NGRlY29kZShhY2NlcHQpCi0gICAgICAg
IGV4Y2VwdCBUeXBlRXJyb3IsIGU6CisgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3IgYXMgZToKICAg
ICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUV4Y2VwdGlvbigKICAgICAgICAgICAgICAgICAnSWxs
ZWdhbCB2YWx1ZSBmb3IgaGVhZGVyIFNlYy1XZWJTb2NrZXQtQWNjZXB0OiAnICsgYWNjZXB0KQog
CkBAIC05OTgsNyArOTk4LDcgQEAgZGVmIGNvbm5lY3Rfc29ja2V0X3dpdGhfcmV0cnkoaG9zdCwg
cG9ydCwgdGltZW91dCwgdXNlX3RscywKICAgICAgICAgICAgIGlmIHVzZV90bHM6CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIF9UTFNTb2NrZXQocykKICAgICAgICAgICAgIHJldHVybiBzCi0gICAg
ICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IsIGU6CisgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3Ig
YXMgZToKICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRUNPTk5SRUZVU0VEOgogICAg
ICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBlbHNlOgpAQCAtMTA2Myw3ICsxMDYzLDcg
QEAgY2xhc3MgQ2xpZW50KG9iamVjdCk6CiAgICAgZGVmIGFzc2VydF9jb25uZWN0aW9uX2Nsb3Nl
ZChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmVhZF9kYXRhID0gcmVjZWl2ZV9i
eXRlcyhzZWxmLl9zb2NrZXQsIDEpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGlmIHN0cihlKS5maW5kKAog
ICAgICAgICAgICAgICAgICdDb25uZWN0aW9uIGNsb3NlZCBiZWZvcmUgcmVjZWl2aW5nIHJlcXVl
c3RlZCBsZW5ndGggJykgPT0gMDoKICAgICAgICAgICAgICAgICByZXR1cm4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC9lbmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9l
bmR0b2VuZF93aXRoX2V4dGVybmFsX3NlcnZlci5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUg
MTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC9tdXhfY2xpZW50X2Zvcl90ZXN0aW5nLnB5CmluZGV4IGRkNTQzNWE4Y2MwZTI3
NTVjNTgzYzM2ZDBjZWFmM2YzZmY2MDIxYjAuLjMwNGU3ZmM5NWQzZmM1YjNlZTJkOWU1NGYyMDc4
MmFkZGFlMjA0MGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9tdXhfY2xpZW50X2Zvcl90ZXN0aW5n
LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC9tdXhfY2xpZW50X2Zvcl90ZXN0aW5nLnB5CkBAIC01MTksNyAr
NTE5LDcgQEAgY2xhc3MgTXV4Q2xpZW50KG9iamVjdCk6CiAKICAgICAgICAgdHJ5OgogICAgICAg
ICAgICAgc2VuZF9xdW90YSA9IHNlbGYuX2NoYW5uZWxfc2xvdHMucG9wbGVmdCgpCi0gICAgICAg
IGV4Y2VwdCBJbmRleEVycm9yLCBlOgorICAgICAgICBleGNlcHQgSW5kZXhFcnJvciBhcyBlOgog
ICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdObyBjaGFubmVsIHNsb3RzOiAlcicgJSBlKQog
CiAgICAgICAgICMgQ3JlYXRlIEFkZENoYW5uZWwgcmVxdWVzdApAQCAtNjMyLDcgKzYzMiw3IEBA
IGNsYXNzIE11eENsaWVudChvYmplY3QpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpbm5l
cl9mcmFtZSA9IHNlbGYuX2xvZ2ljYWxfY2hhbm5lbHNbY2hhbm5lbF9pZF0ucXVldWUuZ2V0KAog
ICAgICAgICAgICAgICAgIHRpbWVvdXQ9c2VsZi5fdGltZW91dCkKLSAgICAgICAgZXhjZXB0IFF1
ZXVlLkVtcHR5LCBlOgorICAgICAgICBleGNlcHQgUXVldWUuRW1wdHkgYXMgZToKICAgICAgICAg
ICAgIHJhaXNlIEV4Y2VwdGlvbignQ2Fubm90IHJlY2VpdmUgbWVzc2FnZSBmcm9tIGNoYW5uZWwg
aWQgJWQnICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2lkKQogCkBAIC02
NjYsNyArNjY2LDcgQEAgY2xhc3MgTXV4Q2xpZW50KG9iamVjdCk6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIGlubmVyX2ZyYW1lID0gc2VsZi5fbG9naWNhbF9jaGFubmVsc1tjaGFubmVsX2lk
XS5xdWV1ZS5nZXQoCiAgICAgICAgICAgICAgICAgdGltZW91dD1zZWxmLl90aW1lb3V0KQotICAg
ICAgICBleGNlcHQgUXVldWUuRW1wdHksIGU6CisgICAgICAgIGV4Y2VwdCBRdWV1ZS5FbXB0eSBh
cyBlOgogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdDYW5ub3QgcmVjZWl2ZSBtZXNzYWdl
IGZyb20gY2hhbm5lbCBpZCAlZCcgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5u
ZWxfaWQpCiAgICAgICAgIGlmIGlubmVyX2ZyYW1lLm9wY29kZSAhPSBjbGllbnRfZm9yX3Rlc3Rp
bmcuT1BDT0RFX0NMT1NFOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3J1bl9hbGwucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvcnVuX2FsbC5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9kaXNwYXRjaC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2Rpc3BhdGNo
LnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggOWNhM2Q0ZjNhZTFkYmY1
Zjk3YjI3ZDg0ZWM2ZTY0MjJmZDBlY2FhNC4uZTE2ZDYwNTYwOWM4YWI3YjMwZDcyMDYzODMwZmY0
MzRjMWM1NmRjMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9kaXNwYXRjaC5weQorKysgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rl
c3QvdGVzdF9kaXNwYXRjaC5weQpAQCAtMTU1LDkgKzE1NSw5IEBAIGNsYXNzIERpc3BhdGNoZXJU
ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGlzcGF0
Y2hlci5kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCkKICAgICAgICAgICAgIHNlbGYuZmFpbCgn
Q291bGQgbm90IGNhdGNoIEhhbmRzaGFrZUV4Y2VwdGlvbiB3aXRoIDQwMyBzdGF0dXMnKQotICAg
ICAgICBleGNlcHQgaGFuZHNoYWtlLkhhbmRzaGFrZUV4Y2VwdGlvbiwgZToKKyAgICAgICAgZXhj
ZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWxzKDQwMywgZS5zdGF0dXMpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6
CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIHNlbGYuZmFpbCgn
VW5leHBlY3RlZCBleGNlcHRpb246ICVyJyAlIGUpCiAKICAgICBkZWYgdGVzdF9hYm9ydF9leHRy
YV9oYW5kc2hha2Uoc2VsZik6CkBAIC0yMTIsNyArMjEyLDcgQEAgY2xhc3MgRGlzcGF0Y2hlclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAg
IGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQogICAgICAgICAgICAgICAgIHNlbGYu
ZmFpbCgpCi0gICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24sIGU6
CisgICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFeGNlcHRpb24gYXMgZToKICAg
ICAgICAgICAgICAgICBzZWxmLmZhaWxVbmxlc3Moc3RyKGUpLmZpbmQoJ05vIGhhbmRsZXInKSAh
PSAtMSkKICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgc2Vs
Zi5mYWlsKCkKQEAgLTIyNSw3ICsyMjUsNyBAQCBjbGFzcyBEaXNwYXRjaGVyVGVzdCh1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGRpc3BhdGNoZXIudHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KQogICAgICAgICAgICAgc2VsZi5mYWlsKCkKLSAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAg
ICAgc2VsZi5mYWlsVW5sZXNzKHN0cihlKS5maW5kKCdJbnRlbnRpb25hbCcpICE9IC0xLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGV4Y2VwdGlvbjogJXMnICUgZSkK
IApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVz
dF9lbmR0b2VuZC5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IDVlNWNm
NjE1NzM5MTdkODdkMTM2NWIxNmE1OGMyYzQxODhhOTEyZWMuLjM2ODBlYzJlYmE2NzI0YTc0OTA1
YmU0ZjE1ODFmMzZhN2E3Zjc3MTMKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKQEAgLTMwNCw5ICszMDQsOSBAQCBjbGFzcyBF
bmRUb0VuZEh5QmlUZXN0KEVuZFRvRW5kVGVzdEJhc2UpOgogICAgICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgICAgIGNsaWVudC5jb25uZWN0KCkKICAgICAgICAgICAgICAgICBzZWxmLmZhaWwo
J0NvdWxkIG5vdCBjYXRjaCBIdHRwU3RhdHVzRXhjZXB0aW9uJykKLSAgICAgICAgICAgIGV4Y2Vw
dCBjbGllbnRfZm9yX3Rlc3RpbmcuSHR0cFN0YXR1c0V4Y2VwdGlvbiwgZToKKyAgICAgICAgICAg
IGV4Y2VwdCBjbGllbnRfZm9yX3Rlc3RpbmcuSHR0cFN0YXR1c0V4Y2VwdGlvbiBhcyBlOgogICAg
ICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCBlLnN0YXR1cykKLSAgICAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz
IGU6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdDYXRjaCB1bmV4cGVjdGVkIGV4Y2VwdGlv
bicpCiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIGNsaWVudC5jbG9zZV9z
b2NrZXQoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZXh0ZW5zaW9ucy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0X2V4dGVuc2lvbnMucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
aGFuZHNoYWtlLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNo
YWtlX2h5YmkucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkMTA2Njc3
NDllNjM1YmExYzk2ZjhiMjNmYjk3ZmFiNTk4MzA1MmI5Li5kMGFhZjY0MGE1ODhlMmIwNDJmMzJh
OWM2NmEzNjk3YWQ0ZGQxMGJlCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5
CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
cHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpLnB5CkBAIC01MDcsMTAgKzUwNywx
MCBAQCBjbGFzcyBIYW5kc2hha2VyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgICAg
ICB0cnk6CiAgICAgICAgICAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQogICAgICAg
ICAgICAgICAgIHNlbGYuZmFpbCgnTm8gZXhjZXB0aW9uIHRocm93biBmb3IgXCclc1wnIGNhc2Un
ICUgY2FzZV9uYW1lKQotICAgICAgICAgICAgZXhjZXB0IEhhbmRzaGFrZUV4Y2VwdGlvbiwgZToK
KyAgICAgICAgICAgIGV4Y2VwdCBIYW5kc2hha2VFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAg
ICAgICBzZWxmLmFzc2VydFRydWUoZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pCiAgICAgICAg
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9zdGF0dXMsIGUuc3RhdHVzKQotICAg
ICAgICAgICAgZXhjZXB0IFZlcnNpb25FeGNlcHRpb24sIGU6CisgICAgICAgICAgICBleGNlcHQg
VmVyc2lvbkV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
ZXhwZWN0X2hhbmRzaGFrZV9leGNlcHRpb24pCiAKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rl
c3RfaGFuZHNoYWtlX2h5YmkwMC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFrZV9oeWJpMDAu
cHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2h0dHBfaGVhZGVyX3V0
aWwucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RfbWVtb3JpemluZ2ZpbGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tZW1vcml6aW5nZmls
ZS5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rl
c3QvdGVzdF9tb2NrLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbW9jay5weQpvbGQgbW9kZSAxMDA2NDQK
bmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RfbXNndXRpbC5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1
CmluZGV4IDlkYmJiNWQ4ZDRiOWFjMjNlOWM4NzdiYmNlZGI5MjljZTA5MDhjZjEuLjIzNDczNWM2
MzA0N2QyZWRiMjM4Y2I1MjU1YWQ0NzRhMmU0ZDBhODMKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbXNn
dXRpbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tc2d1dGlsLnB5CkBAIC0zMSw2ICszMSw3IEBA
CiAKIAogIiIiVGVzdHMgZm9yIG1zZ3V0aWwgbW9kdWxlLiIiIgorZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbgogCiAKIGltcG9ydCBhcnJheQpAQCAtODg0LDcgKzg4NSw3IEBA
IGNsYXNzIFBlck1lc3NhZ2VEZWZsYXRlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAg
IGNvbXByZXNzZWRfZW1wdHkgPSBjb21wcmVzc2VkX2VtcHR5WzotNF0KICAgICAgICAgZXhwZWN0
ZWQgKz0gJ1x4ODAlYycgJSBsZW4oY29tcHJlc3NlZF9lbXB0eSkKICAgICAgICAgZXhwZWN0ZWQg
Kz0gY29tcHJlc3NlZF9lbXB0eQotICAgICAgICBwcmludCAnJXInICUgZXhwZWN0ZWQKKyAgICAg
ICAgcHJpbnQoJyVyJyAlIGV4cGVjdGVkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVj
dGVkLCByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRhKCkpCiAKICAgICBkZWYgdGVzdF9z
ZW5kX21lc3NhZ2VfZnJhZ21lbnRlZF9lbXB0eV9sYXN0X2ZyYW1lKHNlbGYpOgpAQCAtMTA2NCw3
ICsxMDY1LDcgQEAgY2xhc3MgUGVyTWVzc2FnZURlZmxhdGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKIAogICAgICAgICAgICAgZnJhbWVfY291bnQgKz0gMQogCi0gICAgICAgIHByaW50ICJDaHVu
ayBzaXplczogJXIiICUgY2h1bmtfc2l6ZXMKKyAgICAgICAgcHJpbnQoIkNodW5rIHNpemVzOiAl
ciIgJSBjaHVua19zaXplcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihjaHVua19zaXpl
cykgPiAxMCkKIAogICAgICAgICAjIENsb3NlIGZyYW1lCkBAIC0xMTY3LDkgKzExNjgsOSBAQCBj
bGFzcyBQZXJNZXNzYWdlRGVmbGF0ZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAg
ICAgICAgICAgICBjb21wcmVzcyA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgZmluaXNoX3Vz
ZWQgPSBUcnVlCiAKLSAgICAgICAgcHJpbnQgIkNodW5rIHNpemVzOiAlciIgJSBjaHVua19zaXpl
cworICAgICAgICBwcmludCgiQ2h1bmsgc2l6ZXM6ICVyIiAlIGNodW5rX3NpemVzKQogICAgICAg
ICBzZWxmLmFzc2VydFRydWUobGVuKGNodW5rX3NpemVzKSA+IDEwKQotICAgICAgICBwcmludCAi
TWV0aG9kczogJXIiICUgbWV0aG9kcworICAgICAgICBwcmludCgiTWV0aG9kczogJXIiICUgbWV0
aG9kcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN5bmNfdXNlZCkKICAgICAgICAgc2VsZi5h
c3NlcnRUcnVlKGZpbmlzaF91c2VkKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tdXgu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L3Rlc3QvdGVzdF9tdXgucHkKaW5kZXggM2NlNDVjZjZiM2ZlZTBjMGI5YTkxNGQw
YzI0Nzc3NWI2ZjI0OTlmYi4uMDc3M2RlY2JmZDY2ZDBkZmZlZjBiNDI4N2JhZDg3NDUzZmMxZDY0
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbXV4LnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0
X211eC5weQpAQCAtMjU4LDkgKzI1OCw5IEBAIGNsYXNzIF9NdXhNb2NrRGlzcGF0Y2hlcihvYmpl
Y3QpOgogICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0Nhbm5vdCBoYW5kbGUgcGF0
aCAlcicgJSByZXF1ZXN0LnBhdGgpCiAgICAgICAgICAgICBpZiBub3QgcmVxdWVzdC5zZXJ2ZXJf
dGVybWluYXRlZDoKICAgICAgICAgICAgICAgICByZXF1ZXN0LndzX3N0cmVhbS5jbG9zZV9jb25u
ZWN0aW9uKCkKLSAgICAgICAgZXhjZXB0IENvbm5lY3Rpb25UZXJtaW5hdGVkRXhjZXB0aW9uLCBl
OgorICAgICAgICBleGNlcHQgQ29ubmVjdGlvblRlcm1pbmF0ZWRFeGNlcHRpb24gYXMgZToKICAg
ICAgICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFubmVsX2lkXS5leGNlcHRp
b24gPSBlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24gYXMgZToKICAgICAgICAgICAgIHNlbGYuY2hhbm5lbF9ldmVudHNbcmVxdWVzdC5jaGFu
bmVsX2lkXS5leGNlcHRpb24gPSBlCiAgICAgICAgICAgICByYWlzZQogCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29j
a2V0L3Rlc3QvdGVzdF9zdHJlYW0ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJlYW0ucHkKb2xkIG1v
ZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rfc3Ry
ZWFtX2hpeGllNzUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQpvbGQgbW9k
ZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGls
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RfdXRpbC5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAw
NzU1CmluZGV4IDIwZjRhYjA1OTY1MmM1ODY5ZWMyMDVhMTI4ZGY5MzkxNGNhOGM3MWUuLjY0YmEz
ZjQ3NzM3YTMzMWVmMDM5MGNjNmIwYzgxYzJkMzRhNDI4MzMKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
dXRpbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGlsLnB5CkBAIC0zMSw2ICszMSw3IEBACiAK
IAogIiIiVGVzdHMgZm9yIHV0aWwgbW9kdWxlLiIiIgorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBw
cmludF9mdW5jdGlvbgogCiAKIGltcG9ydCBvcwpAQCAtMTcyLDcgKzE3Myw3IEBAIGNsYXNzIElu
ZmxhdGVyRGVmbGF0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIFtjaHIo
cmFuZG9tLnJhbmRpbnQoMCwgMjU1KSkgZm9yIGkgaW4geHJhbmdlKDEwMCAqIDEwMjQpXSkKIAog
ICAgICAgICBjaHVua2VkX2lucHV0ID0gZ2V0X3JhbmRvbV9zZWN0aW9uKHNvdXJjZSwgMTApCi0g
ICAgICAgIHByaW50ICJJbnB1dCBjaHVuayBzaXplczogJXIiICUgW2xlbihjKSBmb3IgYyBpbiBj
aHVua2VkX2lucHV0XQorICAgICAgICBwcmludCgiSW5wdXQgY2h1bmsgc2l6ZXM6ICVyIiAlIFts
ZW4oYykgZm9yIGMgaW4gY2h1bmtlZF9pbnB1dF0pCiAKICAgICAgICAgZGVmbGF0ZXIgPSB1dGls
Ll9EZWZsYXRlcigxNSkKICAgICAgICAgY29tcHJlc3NlZCA9IFtdCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rl
c3RkYXRhL2hhbmRsZXJzL3N1Yi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggZjA5YTM2MTQyNjgyYTE2YzgyNGE1MmI2YWUyYTNjNmExYzViNjA5MC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9leGNlcHRpb25f
aW5fdHJhbnNmZXJfd3NoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9ub193
c2hfYXRfdGhlX2VuZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2Nh
bGxhYmxlX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvcGxhaW5fd3No
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2ln
X3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJf
c2lnX3dzaC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWZjN2JlZjQyOTE4OTIzMTNjMGY2NjM5ZGUx
MTgyNjFiYjI0MmUyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVy
cy9hYm9ydF9ieV91c2VyX3dzaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9ibGFu
a193c2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90
ZXN0L3Rlc3RkYXRhL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA3OGNjYTNlZGU2OGMzYzE0ODBmMWNlZjY4YTRlNWVkZjY5MDg2NTU2Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0ZGF0YS9SRUFETUUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3
ZWJzb2NrZXQvdGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggOGZiNWU0MTU4MDAxYzE1ZmY4NWUzMTFiY2M2Y2YyNTFmYmIxY2QzZi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvY2xpZW50X2Zvcl90ZXN0aW5nLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L2Vu
ZHRvZW5kX3dpdGhfZXh0ZXJuYWxfc2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L21vY2sucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvbXV4X2NsaWVudF9mb3JfdGVzdGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC9ydW5fYWxsLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3NldF9zeXNfcGF0aC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2Rpc3BhdGNoLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RfZW5kdG9lbmQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9leHRlbnNpb25zLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdl
YnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtl
X2h5YmkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9oYW5kc2hha2VfaHliaTAwLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC90ZXN0
L3Rlc3RfaHR0cF9oZWFkZXJfdXRpbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RfbW9jay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L3Rlc3QvdGVzdF9tdXgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9zdHJlYW0ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0
L3Rlc3QvdGVzdF9zdHJlYW1faGl4aWU3NS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0aWwucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcHl3ZWJzb2NrZXQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vic29ja2V0L3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YmIyZWQ1MjNiM2IyMjJiYTE3NTg3YTRmZTY3MGE2
Njg5ZGQzZDA3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJz
b2NrZXQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5
d2Vic29ja2V0L0NPTlRSSUJVVElORwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl3ZWJzb2NrZXQvTUFOSUZFU1QuaW4K
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3B5d2Vi
c29ja2V0L1JFQURNRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcHl3ZWJzb2NrZXQvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9weXdlYnNvY2tldC9zZXR1cC5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5u
ZXIvY3NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvY3NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBjYTBjMTgxNTJkZDQyOTEyOGUyMTI1NDEzZjJhYjhiNzJhYzIxZDZm
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2Nzcy93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2Nzcy9i
b290c3RyYXAtdGhlbWUubWluLmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2Nzcy9ib290c3RyYXAubWluLmNzcwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5u
ZXIvZm9udHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9mb250cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhZjI3MjEzYmM2MzgyY2JiY2FjODkzNzQ1Yzg2ZjViYjNl
NTcyNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9mb250
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVy
L2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIuZW90Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvZm9udHMvZ2x5cGhpY29u
cy1oYWxmbGluZ3MtcmVndWxhci5zdmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9mb250cy9nbHlwaGljb25zLWhhbGZsaW5ncy1yZWd1
bGFyLnR0ZgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvcnVubmVyL2ZvbnRzL2dseXBoaWNvbnMtaGFsZmxpbmdzLXJlZ3VsYXIud29mZgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9y
dW5uZXIvaW5kZXguaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvcnVubmVyL2luZGV4Lmh0bWwKaW5kZXggNmM5YThhZmZlZDU4YzJiNzBiNzUz
OTQ0YjMxZjAwOTk3NmQ0OWQ2ZC4uNTc5NDBkMDJkMGMzMmIzNjZjNDA3YWJlYzEwYTdkNzBkNDQw
ZDYwZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9ydW5uZXIvaW5kZXguaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9pbmRleC5odG1sCkBAIC0xLDI2ICsx
LDQwIEBACiA8IURPQ1RZUEUgaHRtbD4KIDxodG1sIGxhbmc9ZW4+CiA8bWV0YSBjaGFyc2V0PVVU
Ri04PgotPHRpdGxlPldlYiB0ZXN0czwvdGl0bGU+Cis8dGl0bGU+d2ViLXBsYXRmb3JtLXRlc3Rz
IFJ1bm5lcjwvdGl0bGU+CiA8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J2Nzcy9ib290c3Ry
YXAubWluLmNzcyc+CiA8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J2Nzcy9ib290c3RyYXAt
dGhlbWUubWluLmNzcyc+CiA8bGluayByZWw9J3N0eWxlc2hlZXQnIGhyZWY9J3J1bm5lci5jc3Mn
PgogPHNjcmlwdCBzcmM9Jy9jb21tb24vZ2V0LWhvc3QtaW5mby5zdWIuanMnPjwvc2NyaXB0Pgog
PHNjcmlwdCBzcmM9J3J1bm5lci5qcyc+PC9zY3JpcHQ+CiAKLQogPGhlYWRlciBjbGFzcz0ibmF2
YmFyIG5hdmJhci1pbnZlcnNlIG5hdmJhci1maXhlZC10b3AiPgogICA8ZGl2IGNsYXNzPSJjb250
YWluZXIiPgogICAgIDxkaXYgY2xhc3M9Im5hdmJhci1oZWFkZXIiPgogICAgICAgPGEgY2xhc3M9
Im5hdmJhci1icmFuZCIgaHJlZj0iIyI+Ci0gICAgICAgIDxpbWcgc3JjPSdsb2dvLnN2Zycgd2lk
dGg9JzUwJyBoZWlnaHQ9JzUwJyBhbHQ9J0xvZ28gZm9yIHRoZSBXUFQgUnVubmVyJz4KLSAgICAg
ICAgV2ViIFBsYXRmb3JtIFRlc3RzIFJ1bm5lcgorICAgICAgICA8aW1nIHNyYz0nL2ltYWdlcy93
cHQtbG9nby93cHQtbG9nby1saWdodGJsdWUtYmcuc3ZnJyB3aWR0aD0nNTAnIGhlaWdodD0nNTAn
IHN0eWxlPSdib3JkZXItcmFkaXVzOiA1MCUnIGFsdD0nV1BUIExvZ28nPgorICAgICAgICB3ZWIt
cGxhdGZvcm0tdGVzdHMgUnVubmVyCiAgICAgICA8L2E+CiAgICAgPC9kaXY+CiAgIDwvZGl2Pgog
PC9oZWFkZXI+CiAKIDxkaXYgY2xhc3M9ImNvbnRhaW5lciI+CisgIDxkaXYgY2xhc3M9ImFsZXJ0
IGFsZXJ0LXdhcm5pbmciPgorICAgICAgICBUaGlzIHJ1bm5lciBkb2VzIG5vdCBmdWxseSBzdXBw
b3J0IGFsbCB0ZXN0IHR5cGVzIGFuZCBoYXMgYSBudW1iZXIgb2YKKyAgICAgICAgPGEgaHJlZj0i
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvbGFiZWxzL3J1bm5lciI+
a25vd24gaXNzdWVzPC9hPi4KKyAgICAgICAgPHNwYW4gaWQ9InJ1bm5lci1jb250YWN0LWluZm8i
Pjwvc3Bhbj4KKyAgICAgICAgPGNvZGU+Li93cHQgcnVuPC9jb2RlPiBpcyBhIG1vcmUgd2VsbC1z
dXBwb3J0ZWQgcnVubmVyLCBzZWUgdGhlIGRvY3VtZW50YXRpb24gb24KKyAgICAgICAgPGEgaHJl
Zj0iaHR0cHM6Ly93ZWItcGxhdGZvcm0tdGVzdHMub3JnL3J1bm5pbmctdGVzdHMvIj5ydW5uaW5n
IHRlc3RzPC9hPi4KKyAgICAgICAgPHNjcmlwdD4KKyAgICAgICAgaWYgKGxvY2F0aW9uLmhvc3Qg
PT0gInczYy10ZXN0Lm9yZyIpIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJydW5uZXItY29udGFjdC1pbmZvIikKKyAgICAgICAgICAgICAgICAuaW5uZXJIVE1MID0gJyBJ
ZiB0aGlzIHJ1bm5lciBpc27igJl0IHdvcmtpbmcsIGNvbnRhY3QnCisgICAgICAgICAgICAgICAg
ICAgICsgJyA8YSBocmVmPSJtYWlsdG86bWlrZUB3My5vcmciPm1pa2VAdzMub3JnPC9hPi4gJwor
ICAgICAgICB9CisgICAgICAgIDwvc2NyaXB0PgorICA8L2Rpdj4KKwogICA8ZGl2IGlkPSJ0ZXN0
Q29udHJvbCIgY2xhc3M9InBhbmVsIHBhbmVsLWRlZmF1bHQiPgogICAgIDxkaXYgY2xhc3M9InBh
bmVsLWJvZHkiPgogICAgICAgPGZvcm0gaWQ9J29wdGlvbnMnIGNsYXNzPSdob3Jpem9udGFsLWZv
cm0nIG9uc3VibWl0PSdyZXR1cm4gZmFsc2U7Jz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2xvZ28uc3ZnIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvbG9n
by5zdmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMjU3NzZiNmY0YzdhNmY5YzA3
OTk2MzcxYjAyNmYyNGQzMTQ2Y2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy9ydW5uZXIvbG9nby5zdmcKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLTxzdmcg
d2lkdGg9IjQ1M3B4IiBoZWlnaHQ9IjQ1M3B4IiB2aWV3Qm94PSIwIDAgNDUzIDQ1MyIgeG1sbnM9
Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KLSAgPGNpcmNsZSBzdHJva2U9IiNlZDU1NjUi
IHN0cm9rZS13aWR0aD0iMjAiIGZpbGw9IiNmZmYiIGN4PSIyMjYuNSIgY3k9IjIyNi41IiByPSIy
MTMuNSI+PC9jaXJjbGU+Ci0gIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MCAyNTApIj4KLSAg
ICA8ZyB0cmFuc2Zvcm09Im1hdHJpeCgyLjI1IDAgMCAtMi4yNSAwIDApIj4KLSAgICAgIDxwYXRo
IGQ9Im0wIDBjMC4yNTItMC4zMzMgMC41MDgtMC42NTkgMC43NjYtMC45NzQtMS4yNjktMy43NjQt
Mi4zNjgtNy43NDktMy40NDctMTEuMzgzLTAuMTY2LTAuMDUzLTAuMzI5LTAuMTE2LTAuNDg2LTAu
MTk0LTguNTcyIDguMjExLTIuMDU2IDExLjM2NCAzLjE2NyAxMi41NTFtNTkuODA5IDQ1LjU3YzIu
ODk5IDIwLjExOC0xMC4wODQgMzguNjM1LTI5IDQxLjM2Mi0xOC45MTUgMi43MjYtMzYuNjAxLTEx
LjM3MS0zOS41LTMxLjQ4OS0yLjQxOC0xNi43NzQgNi4yMTItMzIuNDI3IDIwLjExMi0zOC43NWwt
MC4wNSAwLjAxNC0wLjMyMy0yLjI0MmMwLjIxOS0wLjA0OSAwLjQyNy0wLjA5IDAuNjQtMC4xMzQt
MC4xMjItMC4wMjctMC4yNDUtMC4wNTMtMC4zNjUtMC4wODZsLTAuMDA0IDAuMDEzcy0wLjA0Mi0w
LjAxNy0wLjEwNi0wLjA0MmMtMC40NjUtMC4xMzctMC45MTUtMC4zMTktMS4zNDktMC41NDQtMy41
MDItMS40MjQtMTIuMjg1LTUuMDk1LTE0LjI4Ny02Ljg2NyAwIDAgMC45MjctMS42NjUgMi4yNTQt
My43MDQtMTcuMzM1LTIuNDIxLTYuNTIyLTE1LjYzLTMuMTc2LTE5LjI2LTAuMDE1LTAuMjk2IDAu
MDA0LTAuNTkyIDAuMDM5LTAuODg4LTIuNTYyLTEuNjc3LTUuNzcyLTQuMTk1LTcuNzcyLTcuMjkg
MCAwIDAuNTUyLTAuMTgyIDEuNDU4LTAuNTM2di0wLjAwMWwwLjAxNi0wLjAwNWMxLjE4Mi0wLjQ2
MyAyLjk2LTEuMjE5IDQuOTE0LTIuMjQ4LTMuMDA0LTEzLjU1Ny03LjU0Mi05LjY3Ny0xMC41ODkt
NC42ODMgMC43NDUgMi4yMzIgMC43NDEgNC4yMy0wLjIwMiA1LjM5My0wLjY2IDAuODExLTEuNjgx
IDEuMTAxLTIuODg5IDAuOTMxLTAuMDg3IDAuMjIyLTAuMTM1IDAuMzQ5LTAuMTM1IDAuMzQ5bC0w
LjEwOC0wLjM5N2MtMC4wNTctMC4wMS0wLjExNS0wLjAyMS0wLjE3My0wLjAzNCAwLjAwNSAwLjAw
MyAwLjAwOCAwLjAwNSAwLjAxMyAwLjAwOCAwIDAtMC4wMzItMC4wMDgtMC4wNzgtMC4wMjEtMC41
MDgtMC4xMTYtMS4wNDItMC4zMDYtMS41OTMtMC41NjYtMi43NTktMS4xNTgtOC4wMjMtNC4yNDgt
OC42MzktMTEuMDg4LTAuMjA4LTEuMDU2LTAuMjEyLTIuMDE1IDAuMDAyLTIuODEyIDAuMDAxLTAu
MDE0IDAuMDAxLTAuMDI2IDAuMDAzLTAuMDQgMCAwIDAuNTI3LTQuNTYxIDQuMjg4LTEuODk0bC0w
LjAwMiAwLjAwM2MxLjg2MSAwLjUzNiA0LjAzNCAyLjAwMyA1Ljk4OSA0LjIyNiAwLjY2NCAwLjc1
NSAxLjI1NiAxLjU0NSAxLjc2OCAyLjM0MyA4LjUzNy0xNi43NjggMTQuOTc0IDMuNDA5IDE1Ljgx
IDYuMjMgMi4zMDktMS41MzggNC41MjgtMy40MjUgNi4wMTktNS42NCAwIDAgMS4xODIgMy40NTgg
My45NDIgNi4zMTIgNS45ODQtOC45NTYgMTMuMzc0LTEwLjQ2NSAxMy4zNzQtMTAuNDY1bDMuODAy
IDYuMTUyYzExLjMyOC01LjU2OSA3LjM4Mi0xMC4zODUgMi43MTMtMTMuMjUzLTEuNzU3IDEuMTk4
LTMuNDI4IDEuNDg1LTQuNTM3IDAuNTUtMC43NzUtMC42NTMtMS4xNjYtMS44MDctMS4yLTMuMjQ2
LTAuMTk5LTAuMDY5LTAuMzEyLTAuMTA2LTAuMzEyLTAuMTA2bDAuMzE2LTAuMTg1YzAuMDAxLTAu
MDY5IDAuMDAyLTAuMTM5IDAuMDA0LTAuMjEtMC4wMDIgMC4wMDYtMC4wMDQgMC4wMTItMC4wMDYg
MC4wMTkgMCAwIDAuMDAzLTAuMDQ0IDAuMDA3LTAuMTEyIDAuMDI0LTAuNjA0IDAuMTA0LTEuMjQ3
IDAuMjM5LTEuOTIgMC41NjQtMy4zOTUgMi4zNzgtMTAuMDE5IDguMDEzLTExLjc0MSAwLjg1MS0w
LjM5NiAxLjY1Mi0wLjU0MiAyLjM0OS0wLjQwNyAwLjAxMiAwIDAuMDIzLTAuMDAzIDAuMDM1LTAu
MDAzIDAgMCAzLjg5MS0wLjA0OCAyLjIxIDQuNzQ1bC0wLjAwNC0wLjAwNGMtMC4xNzYgMi4yNTgt
MS4wODYgNS4wMTUtMi42NTkgNy42MjgtMC41MzUgMC44ODgtMS4xMDkgMS42OTUtMS43MDEgMi40
MTMgMTYuMzc0IDguMDk1LTMuMTUgMTkuNTY3LTMuMTU2IDE5LjU3bDIuMDYyIDMuMzM2LTQuNTg0
IDEuMDI4Yy0wLjUxNiAwLjExNi0xLjQ0NiAwLjQ1OC0yLjYzOSAwLjk0OSAwLjYxLTAuMTE2IDEu
MjE4LTAuMjI1IDEuODIxLTAuMzIyIDAuMjIxIDAuNjE1IDAuNDMyIDEuMjQ5IDAuNjMxIDEuOTE4
IDEuNzE1IDUuNzY2IDIuMzQgMTIuNTc3IDEuODAzIDE4Ljc2bDEuNTQ0LTMuNjAxczAuNjU1IDAu
NDA0IDEuNjEyIDAuODI3bC0wLjA4OC0wLjE2N2MzLjgzMi0yNi45MDYgMTQuNjMxLTEwLjY2NiAx
Ny40MDctNS45MjQgMS40NDUgMC4xMjUgMi44MTkgMS4yNyAzLjQ0OCAzLjA3NCAwLjg2NCAyLjQ3
NSAwLjAwMiA1LjI0Mi0xLjkyNiA2LjE4My0xLjkyNyAwLjk0Mi00LjE4OC0wLjMwMS01LjA1LTIu
Nzc0LTAuNTMzLTEuNTI0LTAuNDA2LTMuMTU4IDAuMjE4LTQuNDEtNi42Ny0xMy4wNDQtMTAuMzYt
MS4wMTYtMTEuNjQ3IDQuODEgMC42NjkgMC4xNDMgMS4zNTUgMC4yMSAxLjk5OCAwLjEzNSAwIDAt
NC4xODUgMTEuMjM0LTExLjc0MyAxNS42MTgtMC4wOTcgMC4xMzYtMC4xOTIgMC4yNzUtMC4yOTEg
MC40MDUtMC4wNTYtMC4wMTctMC4xMTYtMC4wMjktMC4xNzQtMC4wNDRsMC4zNDUgMi44MzJjMC41
NjcgMC4wNDYgMC44NzEgMC4wOTkgMC44NzEgMC4wOTlsMC4wMjEgMC4xNDYtMC42NSAwLjE4MWMx
OC41NzItMi4xNTggMzUuNzQ0IDExLjc5NyAzOC41OTcgMzEuNTkzIiBmaWxsPSIjZWQ1NTY1Ii8+
Ci0gICAgPC9nPgotICA8L2c+Ci08L3N2Zz4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3JlcG9y
dC5weQppbmRleCA5NTJkZjA4YjgwNTk4OWM4NDA4ZWMwZTVlOTBjMDY1MmM3MzRhNTYxLi41ZWI4
ZDY3YzdmNmRhOWM1ZmQwMWRlOGRlNDBmNWNjOTJjMTFiZTkwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9yZXBvcnQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy9ydW5uZXIvcmVwb3J0LnB5CkBAIC0xNjAsNyArMTYwLDcgQEAgZGVmIGFsbF90ZXN0cyhkYXRh
KToKICAgICBmb3IgVUEsIHJlc3VsdHMgaW4gZGF0YS5pdGVyaXRlbXMoKToKICAgICAgICAgZm9y
IHJlc3VsdCBpbiByZXN1bHRzWyJyZXN1bHRzIl06CiAgICAgICAgICAgICBpZCA9IHRlc3RfaWQo
cmVzdWx0WyJ0ZXN0Il0pCi0gICAgICAgICAgICB0ZXN0c1tpZF0gfD0gc2V0KHN1YnRlc3RbIm5h
bWUiXSBmb3Igc3VidGVzdCBpbiByZXN1bHRbInN1YnRlc3RzIl0pCisgICAgICAgICAgICB0ZXN0
c1tpZF0gfD0ge3N1YnRlc3RbIm5hbWUiXSBmb3Igc3VidGVzdCBpbiByZXN1bHRbInN1YnRlc3Rz
Il19CiAgICAgcmV0dXJuIHRlc3RzCiAKIApAQCAtMTc5LDcgKzE3OSw3IEBAIGRlZiBncm91cF9y
ZXN1bHRzKGRhdGEpOgogCiAgICAgZGVmIHJlc3VsdCgpOgogICAgICAgICByZXR1cm4gewotICAg
ICAgICAgICAgImhhcm5lc3MiOiBkaWN0KChVQSwgKE5vbmUsIE5vbmUpKSBmb3IgVUEgaW4gVUFz
KSwKKyAgICAgICAgICAgICJoYXJuZXNzIjoge1VBOiAoTm9uZSwgTm9uZSkgZm9yIFVBIGluIFVB
c30sCiAgICAgICAgICAgICAic3VidGVzdHMiOiBOb25lICAjIGluaXQgdGhpcyBsYXRlcgogICAg
ICAgICB9CiAKQEAgLTE5MSw5ICsxOTEsOSBAQCBkZWYgZ3JvdXBfcmVzdWx0cyhkYXRhKToKICAg
ICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdHNfYnlfdGVzdFtpZF0KIAogICAgICAgICAgICAgaWYg
cmVzdWx0WyJzdWJ0ZXN0cyJdIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgcmVzdWx0WyJzdWJ0
ZXN0cyJdID0gZGljdCgKLSAgICAgICAgICAgICAgICAgICAgKG5hbWUsIGRpY3QoKFVBLCAoTm9u
ZSwgTm9uZSkpIGZvciBVQSBpbiBVQXMpKSBmb3IgbmFtZSBpbiB0ZXN0c1tpZF0KLSAgICAgICAg
ICAgICAgICApCisgICAgICAgICAgICAgICAgcmVzdWx0WyJzdWJ0ZXN0cyJdID0geworICAgICAg
ICAgICAgICAgICAgICBuYW1lOiB7VUE6IChOb25lLCBOb25lKSBmb3IgVUEgaW4gVUFzfSBmb3Ig
bmFtZSBpbiB0ZXN0c1tpZF0KKyAgICAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIHJlc3Vs
dFsiaGFybmVzcyJdW1VBXSA9ICh0ZXN0X2RhdGFbInN0YXR1cyJdLCB0ZXN0X2RhdGFbIm1lc3Nh
Z2UiXSkKICAgICAgICAgICAgIGZvciBzdWJ0ZXN0IGluIHRlc3RfZGF0YVsic3VidGVzdHMiXToK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvcnVubmVyL3J1bm5lci5jc3MgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuY3NzCmluZGV4IDg1NDYwMTc3ZWExNTFh
YmQzZWVmYTg0OTg2NjA3NzU1YzkyZWZlOTMuLmVjNzJhY2I4M2U3MGI1ZmEwZGZlNDZlOTJmNzA1
OWQ1ZjU3ZTU0ZDggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5jc3MKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvcnVubmVyLmNzcwpAQCAt
NTIsNyArNTIsNiBAQCBzZWN0aW9uIG9sIHsKIH0KIAogaHRtbC5kb25lIHNlY3Rpb24gb2wgewot
ICAgIC1tb3otY29sdW1uLWNvdW50OiAzOwogICAgIC13ZWJraXQtY29sdW1uLWNvdW50OiAzOwog
ICAgIGNvbHVtbi1jb3VudDogMzsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5qcyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5q
cwppbmRleCBlZjBiNmE0NDlkNjg2MTY4NDY5ZGZjYjg1MWIzMDkxMjEyNDM4N2E3Li5kYWFmOWQ0
NWRhNWJmYmE2MzIzNTRlOWVkYmQyODQ2ZDA1MmQwMDM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9y
dW5uZXIvcnVubmVyLmpzCkBAIC0xNTMsMTMgKzE1MywyMiBAQCBNYW5pZmVzdEl0ZXJhdG9yLnBy
b3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgbWF0Y2hlczogZnVuY3Rpb24obWFuaWZlc3RfaXRl
bSkgewotICAgICAgICByZXR1cm4gdGhpcy5tYXRjaF9sb2NhdGlvbihtYW5pZmVzdF9pdGVtLnVy
bCkgIT09IG51bGw7CisgICAgICAgIHZhciB1cmxfYmFzZSA9IHRoaXMubWFuaWZlc3QuZGF0YS51
cmxfYmFzZTsKKyAgICAgICAgaWYgKHVybF9iYXNlLmNoYXJBdCh1cmxfYmFzZS5sZW5ndGggLSAx
KSAhPT0gIi8iKSB7CisgICAgICAgICAgICB1cmxfYmFzZSA9IHVybF9iYXNlICsgIi8iOworICAg
ICAgICB9CisgICAgICAgIHZhciB1cmwgPSB1cmxfYmFzZSArIG1hbmlmZXN0X2l0ZW0udXJsOwor
ICAgICAgICByZXR1cm4gdGhpcy5tYXRjaF9sb2NhdGlvbih1cmwpICE9PSBudWxsOwogICAgIH0s
CiAKICAgICB0b190ZXN0OiBmdW5jdGlvbihtYW5pZmVzdF9pdGVtKSB7CisgICAgICAgIHZhciB1
cmxfYmFzZSA9IHRoaXMubWFuaWZlc3QuZGF0YS51cmxfYmFzZTsKKyAgICAgICAgaWYgKHVybF9i
YXNlLmNoYXJBdCh1cmxfYmFzZS5sZW5ndGggLSAxKSAhPT0gIi8iKSB7CisgICAgICAgICAgICB1
cmxfYmFzZSA9IHVybF9iYXNlICsgIi8iOworICAgICAgICB9CiAgICAgICAgIHZhciB0ZXN0ID0g
ewogICAgICAgICAgICAgdHlwZTogdGhpcy50ZXN0X3R5cGVzW3RoaXMudGVzdF90eXBlc19pbmRl
eF0sCi0gICAgICAgICAgICB1cmw6IG1hbmlmZXN0X2l0ZW0udXJsCisgICAgICAgICAgICB1cmw6
IHVybF9iYXNlICsgbWFuaWZlc3RfaXRlbS51cmwKICAgICAgICAgfTsKICAgICAgICAgaWYgKG1h
bmlmZXN0X2l0ZW0uaGFzT3duUHJvcGVydHkoInJlZmVyZW5jZXMiKSkgewogICAgICAgICAgICAg
dGVzdC5yZWZfbGVuZ3RoID0gbWFuaWZlc3RfaXRlbS5yZWZlcmVuY2VzLmxlbmd0aDsKQEAgLTYz
OCw4ICs2NDcsOSBAQCBSZXN1bHRzLnByb3RvdHlwZSA9IHsKICAgICB9LAogCiAgICAgdG9fanNv
bjogZnVuY3Rpb24oKSB7CisgICAgICAgIHZhciB0ZXN0X3Jlc3VsdHMgPSB0aGlzLnRlc3RfcmVz
dWx0cyB8fCBbXTsKICAgICAgICAgdmFyIGRhdGEgPSB7Ci0gICAgICAgICAgICAicmVzdWx0cyI6
IHRoaXMudGVzdF9yZXN1bHRzLm1hcChmdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgICAgICJy
ZXN1bHRzIjogdGVzdF9yZXN1bHRzLm1hcChmdW5jdGlvbihyZXN1bHQpIHsKICAgICAgICAgICAg
ICAgICB2YXIgcnYgPSB7InRlc3QiOihyZXN1bHQudGVzdC5oYXNPd25Qcm9wZXJ0eSgicmVmX3Vy
bCIpID8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbcmVzdWx0LnRlc3QudXJs
LCByZXN1bHQudGVzdC5yZWZfdHlwZSwgcmVzdWx0LnRlc3QucmVmX3VybF0gOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC50ZXN0LnVybCksCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3N2RiYjYxMjdlMzNhYTYyMDBlNDFkZjBkMzQyOTBjYmM4YjkyNGI3Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5uZXIvaW5kZXguaHRtbAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL2xvZ28uc3Zn
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9ydW5u
ZXIvcmVwb3J0LmNzcwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvcnVubmVyL3JlcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvcnVubmVyL3J1bm5lci5jc3MKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci9ydW5uZXIuanMKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3J1bm5lci91cGRh
dGVfbWFuaWZlc3QucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy9tYW5pZmVzdC5qcyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy9tYW5pZmVzdC5qcwpp
bmRleCBmYmQ1NTY4MjU5MDA5OGE5ZDI0MzQxZjJiODE5ZmQ2ZDk3ZTdhYWY5Li5hOWUzNzE3YWI1
NjQ0NjM3M2I3YjcxYzA1MmJlYWY3MmMwMWUzMThmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvbWFuaWZlc3QuanMK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9z
Y3JpcHRzL21hbmlmZXN0LmpzCkBAIC0yLDExOSArMiwxMTkgQEAKIGZ1bmN0aW9uIF9fcmVzdWx0
X2hhbmRsZXIoKSB7CiAKICAgICBmdW5jdGlvbiBfX2dldF9tZXRhZGF0YSgpIHsKLQl2YXIgb2Jq
ID0gbmV3IE9iamVjdCgpOwotCXZhciBhdXRob3IgPSBbXTsKLQl2YXIgYXNzZXJ0ID0gW107Ci0J
dmFyIGhlbHAgPSBbXTsKLQl2YXIgbWF0Y2ggPSBbXTsKLQl2YXIgbWlzbWF0Y2ggPSBbXTsKLQl2
YXIgZmxhZ3MgPSBbXTsKLQl2YXIgbm9kZXM7Ci0KLQlub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2Vs
ZWN0b3JBbGwoJ2xpbmtbcmVsPSJhdXRob3IiXScpOwotCWZvciAodmFyIGkgPSAwOyBpIDwgbm9k
ZXMubGVuZ3RoOyBpKyspIHsKLQkgICAgdmFyIGhyZWYgPSBub2Rlc1tpXS5nZXRBdHRyaWJ1dGUo
ImhyZWYiKTsKLQkgICAgdmFyIHRpdGxlID0gbm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJ0aXRsZSIp
OwotCSAgICB2YXIgcyA9IHRpdGxlOwotCSAgICBpZiAoaHJlZiAhPSBudWxsKSB7Ci0JCXMgKz0g
IiA8IiArIGhyZWYgKyAiPiI7Ci0JICAgIH0KLQkgICAgYXV0aG9yLnB1c2gocyk7Ci0JfQotCWlm
IChub2Rlcy5sZW5ndGggPiAwKSBvYmouYXV0aG9yID0gYXV0aG9yOwotCW5vZGVzID0gZG9jdW1l
bnQucXVlcnlTZWxlY3RvckFsbCgnbWV0YVtuYW1lPSJhc3NlcnQiXScpOwotCWZvciAodmFyIGkg
PSAwOyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKLQkgICAgYXNzZXJ0LnB1c2gobm9kZXNbaV0u
Z2V0QXR0cmlidXRlKCJjb250ZW50IikpOwotCX0KLQlpZiAobm9kZXMubGVuZ3RoID4gMCkgb2Jq
LmFzc2VydCA9IGFzc2VydDsKLQlub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xp
bmtbcmVsPSJoZWxwIl0nKTsKLQlmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsr
KSB7Ci0JICAgIGhlbHAucHVzaChub2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImhyZWYiKSk7Ci0JfQot
CWlmIChub2Rlcy5sZW5ndGggPiAwKSBvYmouaGVscCA9IGhlbHA7Ci0Jbm9kZXMgPSBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yQWxsKCdsaW5rW3JlbD0ibWF0Y2giXScpOwotCWZvciAodmFyIGkgPSAw
OyBpIDwgbm9kZXMubGVuZ3RoOyBpKyspIHsKLQkgICAgbWF0Y2gucHVzaChub2Rlc1tpXS5nZXRB
dHRyaWJ1dGUoImhyZWYiKSk7Ci0JfQotCWlmIChub2Rlcy5sZW5ndGggPiAwKSBvYmoubWF0Y2gg
PSBtYXRjaDsKLQlub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xpbmtbcmVsPSJt
aXNtYXRjaCJdJyk7Ci0JZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewot
CSAgICBtaXNtYXRjaC5wdXNoKG5vZGVzW2ldLmdldEF0dHJpYnV0ZSgiaHJlZiIpKTsKLQl9Ci0J
aWYgKG5vZGVzLmxlbmd0aCA+IDApIG9iai5tYXRjaCA9IG1pc21hdGNoOwotCW5vZGVzID0gZG9j
dW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbWV0YVtuYW1lPSJmbGFncyJdJyk7Ci0JZm9yICh2YXIg
aSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgewotCSAgICBmbGFncy5wdXNoKG5vZGVzW2ld
LmdldEF0dHJpYnV0ZSgiY29udGVudCIpKTsKLQl9Ci0JaWYgKG5vZGVzLmxlbmd0aCA+IDApIG9i
ai5mbGFncyA9IGZsYWdzOwotCi0JcmV0dXJuIG9iajsKKyAgICAgICAgdmFyIG9iaiA9IG5ldyBP
YmplY3QoKTsKKyAgICAgICAgdmFyIGF1dGhvciA9IFtdOworICAgICAgICB2YXIgYXNzZXJ0ID0g
W107CisgICAgICAgIHZhciBoZWxwID0gW107CisgICAgICAgIHZhciBtYXRjaCA9IFtdOworICAg
ICAgICB2YXIgbWlzbWF0Y2ggPSBbXTsKKyAgICAgICAgdmFyIGZsYWdzID0gW107CisgICAgICAg
IHZhciBub2RlczsKKworICAgICAgICBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwo
J2xpbmtbcmVsPSJhdXRob3IiXScpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVz
Lmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICB2YXIgaHJlZiA9IG5vZGVzW2ldLmdldEF0dHJp
YnV0ZSgiaHJlZiIpOworICAgICAgICAgICAgdmFyIHRpdGxlID0gbm9kZXNbaV0uZ2V0QXR0cmli
dXRlKCJ0aXRsZSIpOworICAgICAgICAgICAgdmFyIHMgPSB0aXRsZTsKKyAgICAgICAgICAgIGlm
IChocmVmICE9IG51bGwpIHsKKyAgICAgICAgICAgICAgICBzICs9ICIgPCIgKyBocmVmICsgIj4i
OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYXV0aG9yLnB1c2gocyk7CisgICAgICAgIH0K
KyAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA+IDApIG9iai5hdXRob3IgPSBhdXRob3I7CisgICAg
ICAgIG5vZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbWV0YVtuYW1lPSJhc3NlcnQi
XScpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsgaSsrKSB7Cisg
ICAgICAgICAgICBhc3NlcnQucHVzaChub2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKSk7
CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA+IDApIG9iai5hc3NlcnQgPSBh
c3NlcnQ7CisgICAgICAgIG5vZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1ty
ZWw9ImhlbHAiXScpOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0aDsg
aSsrKSB7CisgICAgICAgICAgICBoZWxwLnB1c2gobm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJocmVm
IikpOworICAgICAgICB9CisgICAgICAgIGlmIChub2Rlcy5sZW5ndGggPiAwKSBvYmouaGVscCA9
IGhlbHA7CisgICAgICAgIG5vZGVzID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgnbGlua1ty
ZWw9Im1hdGNoIl0nKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7
IGkrKykgeworICAgICAgICAgICAgbWF0Y2gucHVzaChub2Rlc1tpXS5nZXRBdHRyaWJ1dGUoImhy
ZWYiKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGVzLmxlbmd0aCA+IDApIG9iai5tYXRj
aCA9IG1hdGNoOworICAgICAgICBub2RlcyA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoJ2xp
bmtbcmVsPSJtaXNtYXRjaCJdJyk7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZXMu
bGVuZ3RoOyBpKyspIHsKKyAgICAgICAgICAgIG1pc21hdGNoLnB1c2gobm9kZXNbaV0uZ2V0QXR0
cmlidXRlKCJocmVmIikpOworICAgICAgICB9CisgICAgICAgIGlmIChub2Rlcy5sZW5ndGggPiAw
KSBvYmoubWF0Y2ggPSBtaXNtYXRjaDsKKyAgICAgICAgbm9kZXMgPSBkb2N1bWVudC5xdWVyeVNl
bGVjdG9yQWxsKCdtZXRhW25hbWU9ImZsYWdzIl0nKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgeworICAgICAgICAgICAgZmxhZ3MucHVzaChub2Rlc1tp
XS5nZXRBdHRyaWJ1dGUoImNvbnRlbnQiKSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGVz
Lmxlbmd0aCA+IDApIG9iai5mbGFncyA9IGZsYWdzOworCisgICAgICAgIHJldHVybiBvYmo7CiAg
ICAgfQogCiAgICAgdmFyIG1ldGEgPSBfX2dldF9tZXRhZGF0YSgpOwogICAgIHZhciBub2RlczsK
IAogICAgIGZ1bmN0aW9uIGNvcHkob2JqLCBwcm9wLCBhcnIpIHsKLQlpZiAodHlwZW9mIGFyciAh
PT0gInVuZGVmaW5lZCIpIHsKLQkgICAgdmFyIGEgPSBbXTsKLQkgICAgZm9yICh2YXIgaSA9IDA7
IGk8YXJyLmxlbmd0aDtpKyspIHsKLQkJYVtpXSA9IGFycltpXTsKLQkgICAgfQkKLQkgICAgb2Jq
W3Byb3BdID0gYTsKLQl9CisgICAgICAgIGlmICh0eXBlb2YgYXJyICE9PSAidW5kZWZpbmVkIikg
eworICAgICAgICAgICAgdmFyIGEgPSBbXTsKKyAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
PGFyci5sZW5ndGg7aSsrKSB7CisgICAgICAgICAgICAgICAgYVtpXSA9IGFycltpXTsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIG9ialtwcm9wXSA9IGE7CisgICAgICAgIH0KICAgICB9CiAK
IAogICAgIHZhciByZXQgPSBuZXcgT2JqZWN0KCk7CiAgICAgcmV0LmxvY2F0aW9uID0gZG9jdW1l
bnQubG9jYXRpb24uaHJlZjsKLSAgICByZXQudHlwZSAgPSAibWFudWFsIjsgICAgCisgICAgcmV0
LnR5cGUgID0gIm1hbnVhbCI7CiAgICAgcmV0LnRlc3RzID0gbmV3IE9iamVjdCgpOwogCiAgICAg
dmFyIG5vZGUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdzY3JpcHRbc3JjJD0iL3Jlc291cmNl
cy90ZXN0aGFybmVzcy5qcyJdJyk7CiAgICAgaWYgKG5vZGUgIT09IG51bGwpIHsKLQlyZXQudHlw
ZSA9ICJzY3JpcHQiOworICAgICAgICByZXQudHlwZSA9ICJzY3JpcHQiOwogICAgIH0KIAogICAg
IGlmIChyZXQudHlwZSA9PT0gInNjcmlwdCIpIHsKLQlpZiAodHlwZW9mIG1ldGFkYXRhX2dlbmVy
YXRvciA9PT0gInVuZGVmaW5lZCIKLQkgICAgfHwgT2JqZWN0LmtleXMobWV0YWRhdGFfZ2VuZXJh
dG9yLmN1cnJlbnRNZXRhZGF0YSkubGVuZ3RoID09PSAwKQotCSAgICByZXR1cm4gIldSQVBQRVI6
VFJZX0FHQUlOIjsKLQllbHNlIHsKLQkgICAgZm9yICh2YXIga2V5IGluIG1ldGFkYXRhX2dlbmVy
YXRvci5jdXJyZW50TWV0YWRhdGEpIHsKLQkJdmFyIG9iaiA9IG1ldGFkYXRhX2dlbmVyYXRvci5j
dXJyZW50TWV0YWRhdGFba2V5XTsKLQkJdmFyIG5ld3Rlc3QgPSBuZXcgT2JqZWN0KCk7Ci0JCXJl
dC50ZXN0c1trZXldPSBuZXd0ZXN0OwotCQlpZiAodHlwZW9mIG9iai5oZWxwID09PSAidW5kZWZp
bmVkIikgewotCQkgICAgY29weShuZXd0ZXN0LCAiaGVscCIsIG1ldGEuaGVscCk7Ci0JCX0gZWxz
ZSBpZiAodHlwZW9mIG9iai5oZWxwID09PSAic3RyaW5nIikgewotCQkgICAgbmV3dGVzdC5oZWxw
ID0gWyBvYmouaGVscCBdOwkgIAotCQl9Ci0JCWlmICh0eXBlb2Ygb2JqLmF1dGhvciA9PT0gInVu
ZGVmaW5lZCIpIHsKLQkJICAgIGNvcHkobmV3dGVzdCwgImF1dGhvciIsIG1ldGEuYXV0aG9yKTsK
LQkJfSBlbHNlIGlmICh0eXBlb2Ygb2JqLmF1dGhvciA9PT0gInN0cmluZyIpIHsKLQkJICAgIG5l
d3Rlc3QuYXV0aG9yID0gWyBvYmouYXV0aG9yIF07CSAgCi0JCX0KLQkJaWYgKHR5cGVvZiBvYmou
YXNzZXJ0ID09PSAidW5kZWZpbmVkIikgewotCQkgICAgY29weShuZXd0ZXN0LCAiYXNzZXJ0Iiwg
bWV0YS5hc3NlcnQpOwotCQl9IGVsc2UgaWYgKHR5cGVvZiBvYmouYXNzZXJ0ID09PSAic3RyaW5n
IikgewotCQkgICAgbmV3dGVzdC5hc3NlcnQgPSBbIG9iai5hc3NlcnQgXTsJICAKLQkJfQotCQlj
b3B5KG5ld3Rlc3QsICJtYXRjaCIsIG1ldGEubWF0Y2gpOwotCQljb3B5KG5ld3Rlc3QsICJtaXNt
YXRjaCIsIG1ldGEubWlzbWF0Y2gpOwotCQljb3B5KG5ld3Rlc3QsICJmbGFncyIsIG1ldGEuZmxh
Z3MpOwotCSAgICB9Ci0JICAgIHJldHVybiByZXQ7Ci0JfQorICAgICAgICBpZiAodHlwZW9mIG1l
dGFkYXRhX2dlbmVyYXRvciA9PT0gInVuZGVmaW5lZCIKKyAgICAgICAgICAgIHx8IE9iamVjdC5r
ZXlzKG1ldGFkYXRhX2dlbmVyYXRvci5jdXJyZW50TWV0YWRhdGEpLmxlbmd0aCA9PT0gMCkKKyAg
ICAgICAgICAgIHJldHVybiAiV1JBUFBFUjpUUllfQUdBSU4iOworICAgICAgICBlbHNlIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIGtleSBpbiBtZXRhZGF0YV9nZW5lcmF0b3IuY3VycmVudE1ldGFk
YXRhKSB7CisgICAgICAgICAgICAgICAgdmFyIG9iaiA9IG1ldGFkYXRhX2dlbmVyYXRvci5jdXJy
ZW50TWV0YWRhdGFba2V5XTsKKyAgICAgICAgICAgICAgICB2YXIgbmV3dGVzdCA9IG5ldyBPYmpl
Y3QoKTsKKyAgICAgICAgICAgICAgICByZXQudGVzdHNba2V5XT0gbmV3dGVzdDsKKyAgICAgICAg
ICAgICAgICBpZiAodHlwZW9mIG9iai5oZWxwID09PSAidW5kZWZpbmVkIikgeworICAgICAgICAg
ICAgICAgICAgICBjb3B5KG5ld3Rlc3QsICJoZWxwIiwgbWV0YS5oZWxwKTsKKyAgICAgICAgICAg
ICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmouaGVscCA9PT0gInN0cmluZyIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgbmV3dGVzdC5oZWxwID0gWyBvYmouaGVscCBdOworICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9iai5hdXRob3IgPT09ICJ1bmRlZmluZWQi
KSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHkobmV3dGVzdCwgImF1dGhvciIsIG1ldGEuYXV0
aG9yKTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBvYmouYXV0aG9yID09PSAi
c3RyaW5nIikgeworICAgICAgICAgICAgICAgICAgICBuZXd0ZXN0LmF1dGhvciA9IFsgb2JqLmF1
dGhvciBdOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAodHlwZW9mIG9i
ai5hc3NlcnQgPT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAgICAgICAgIGNvcHkobmV3
dGVzdCwgImFzc2VydCIsIG1ldGEuYXNzZXJ0KTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYg
KHR5cGVvZiBvYmouYXNzZXJ0ID09PSAic3RyaW5nIikgeworICAgICAgICAgICAgICAgICAgICBu
ZXd0ZXN0LmFzc2VydCA9IFsgb2JqLmFzc2VydCBdOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgICAgICBjb3B5KG5ld3Rlc3QsICJtYXRjaCIsIG1ldGEubWF0Y2gpOworICAgICAgICAg
ICAgICAgIGNvcHkobmV3dGVzdCwgIm1pc21hdGNoIiwgbWV0YS5taXNtYXRjaCk7CisgICAgICAg
ICAgICAgICAgY29weShuZXd0ZXN0LCAiZmxhZ3MiLCBtZXRhLmZsYWdzKTsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIHJldHVybiByZXQ7CisgICAgICAgIH0KICAgICB9IGVsc2UgewotCXZh
ciBuZXd0ZXN0ID0gbWV0YTsKLQlyZXQudGVzdHNbZG9jdW1lbnQudGl0bGVdPSBuZXd0ZXN0OwkK
KyAgICAgICAgdmFyIG5ld3Rlc3QgPSBtZXRhOworICAgICAgICByZXQudGVzdHNbZG9jdW1lbnQu
dGl0bGVdPSBuZXd0ZXN0OwogCi0JaWYgKHR5cGVvZiBuZXd0ZXN0Lm1hdGNoICE9PSAidW5kZWZp
bmVkIgotCSAgICB8fCB0eXBlb2YgbmV3dGVzdC5taXNtYXRjaCAhPT0gInVuZGVmaW5lZCIpIHsK
LQkgICAgcmV0LnR5cGUgPSAicmVmdGVzdCI7Ci0JfQorICAgICAgICBpZiAodHlwZW9mIG5ld3Rl
c3QubWF0Y2ggIT09ICJ1bmRlZmluZWQiCisgICAgICAgICAgICB8fCB0eXBlb2YgbmV3dGVzdC5t
aXNtYXRjaCAhPT0gInVuZGVmaW5lZCIpIHsKKyAgICAgICAgICAgIHJldC50eXBlID0gInJlZnRl
c3QiOworICAgICAgICB9CiAKLQlyZXR1cm4gcmV0OworICAgICAgICByZXR1cm4gcmV0OwogICAg
IH0KIAogfQpAQCAtMTIyLDE5ICsxMjIsMTkgQEAgZnVuY3Rpb24gX19yZXN1bHRfaGFuZGxlcigp
IHsKIGZ1bmN0aW9uIF9fZ2l2ZV91cCgpIHsKICAgICB2YXIgcmV0ID0gbmV3IE9iamVjdCgpOwog
ICAgIHJldC5sb2NhdGlvbiA9IGRvY3VtZW50LmxvY2F0aW9uLmhyZWY7Ci0gICAgcmV0LnR5cGUg
ID0gIm1hbnVhbCI7ICAgIAorICAgIHJldC50eXBlICA9ICJtYW51YWwiOwogICAgIHJldC50ZXN0
cyA9IG5ldyBPYmplY3QoKTsKIAogICAgIHZhciBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignc2NyaXB0W3NyYyQ9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiXScpOwogICAgIGlmIChu
b2RlICE9PSBudWxsKSB7Ci0JcmV0LnR5cGUgPSAic2NyaXB0IjsKKyAgICAgICAgcmV0LnR5cGUg
PSAic2NyaXB0IjsKICAgICB9IGVsc2UgaWYgKHR5cGVvZiBuZXd0ZXN0Lm1hdGNoICE9PSAidW5k
ZWZpbmVkIgotCSAgICAgICB8fCB0eXBlb2YgbmV3dGVzdC5taXNtYXRjaCAhPT0gInVuZGVmaW5l
ZCIpIHsKLQlyZXQudHlwZSA9ICJyZWZ0ZXN0IjsKKyAgICAgICAgICAgICAgIHx8IHR5cGVvZiBu
ZXd0ZXN0Lm1pc21hdGNoICE9PSAidW5kZWZpbmVkIikgeworICAgICAgICByZXQudHlwZSA9ICJy
ZWZ0ZXN0IjsKICAgICB9CiAKICAgICB2YXIgbmV3dGVzdCA9IF9fZ2V0X21ldGFkYXRhKCk7Ci0g
ICAgcmV0LnRlc3RzW2RvY3VtZW50LnRpdGxlXT0gbmV3dGVzdDsJCi0gICAgCisgICAgcmV0LnRl
c3RzW2RvY3VtZW50LnRpdGxlXT0gbmV3dGVzdDsKKwogICAgIHJldHVybiByZXQ7CiB9CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3NjcmlwdHMvdG9jLmpzIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zY3JpcHRzL3RvYy5qcwppbmRleCAxMjBkNGJlMDM5ZmQxYWY5MDNmMTI4ZjFj
MzA4YzA5MTJlMjBjZDNjLi4yOTdiNzE4MTQzZjkzMTMyMDA3Nzc2ODZlMjM2M2M5MzZlNjQ5ZDcw
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NjcmlwdHMvdG9jLmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0cy90b2MuanMKQEAgLTEsMTA2ICsxLDEwNiBAQAog
Ly8gZ3JhYiB0aGUgdGFibGUgb2YgY29udGVudHMgZmlsbGVkIHdpdGggYWxsIHRoZSBhbmNob3Jz
CiBmdW5jdGlvbiBfX3Jlc3VsdF9oYW5kbGVyKCkgewogICAgIGZ1bmN0aW9uIGdldE1hcCgpIHsK
LQl2YXIgdG9jX2VsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiY29udGVudHMiKS5u
ZXh0RWxlbWVudFNpYmxpbmc7Ci0KLQlmdW5jdGlvbiBnZXRTZWN0aW9uKCkgewotCSAgICBmdW5j
dGlvbiBnZXRJZHMobm9kZSkgewotCQl2YXIgYSA9IFtdOwotCSAgICAKLQkJdmFyIG5vZGVzID0g
bm9kZS5xdWVyeVNlbGVjdG9yQWxsKCcqW2lkXScpOwotCQlmb3IgKHZhciBpID0gMDsgaSA8IG5v
ZGVzLmxlbmd0aDsgaSsrKSB7Ci0JCSAgICBhLnB1c2gobm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJp
ZCIpKTsKLQkJfQotCQlyZXR1cm4gYTsKLQkgICAgfQotCQotCSAgICBmdW5jdGlvbiBnZXRUT0NJ
ZHMoKSB7Ci0JCXZhciBhID0gW107Ci0JICAgIAotCQl2YXIgbm9kZXMgPSB0b2NfZWxlbWVudC5x
dWVyeVNlbGVjdG9yQWxsKCdsaScpOwotCQlmb3IgKHZhciBpID0gMDsgaSA8IG5vZGVzLmxlbmd0
aDsgaSsrKSB7Ci0JCSAgICB2YXIgaHJlZiA9IG5vZGVzW2ldLmZpcnN0RWxlbWVudENoaWxkLmdl
dEF0dHJpYnV0ZSgiaHJlZiIpOwotCQkgICAgYS5wdXNoKGhyZWYuc3Vic3RyaW5nKDEpKTsKLQkJ
fQotCQlyZXR1cm4gYTsKLQkgICAgfQotCi0JICAgIHZhciBvYmogPSBuZXcgT2JqZWN0KCk7Ci0J
ICAgIHZhciBpZHMgPSBnZXRJZHMoZG9jdW1lbnQpOwotCSAgICB2YXIgdG9jID0gZ2V0VE9DSWRz
KCk7Ci0gICAgCi0JICAgIGZvciAodmFyIGkgPSAxOyBpIDwgdG9jLmxlbmd0aDsgaSsrKSB7Ci0J
CXZhciBrZXkxID0gdG9jW2ktMV07Ci0JCXZhciBrZXkyID0gdG9jW2ldOwotCQl2YXIgbWFwID0g
W107Ci0KLQkJdmFyIGluZGV4MSA9IGlkcy5pbmRleE9mKGtleTEpOwotCQl2YXIgaW5kZXgyID0g
aWRzLmluZGV4T2Yoa2V5Mik7Ci0KLQkJaWYgKChpbmRleDItaW5kZXgxKSA+IDEpIHsKLQkJICAg
IGZvciAodmFyIGogPSBpbmRleDErMTsgaiA8IGluZGV4MjtqKyspIHsKLQkJCW1hcC5wdXNoKGlk
c1tqXSk7Ci0JCSAgICB9Ci0JCX0KLQotCQlvYmpba2V5MV0gPSBtYXA7Ci0JICAgIH0KLQkgICAg
ewotCQl2YXIga2V5ID0gdG9jW3RvYy5sZW5ndGgtMV07Ci0JCXZhciBpbmRleCA9IGlkcy5pbmRl
eE9mKGtleSk7Ci0JCXZhciBtYXAgPSBbXTsKLQotCQlmb3IgKHZhciBqID0gaW5kZXgrMTsgaiA8
IGlkcy5sZW5ndGg7aisrKSB7Ci0JCSAgICBtYXAucHVzaChpZHNbal0pOwotCQl9Ci0JCW9ialtr
ZXldID0gbWFwOwotCSAgICB9Ci0gICAgCi0JICAgIHJldHVybiBvYmo7Ci0JfQotCi0JZnVuY3Rp
b24gc2VjdGlvbihpZCkgewotCSAgICB0aGlzLmlkID0gaWQ7Ci0JfQotCWZ1bmN0aW9uIGFkZFN1
YlNlY3Rpb24oc2VjdGlvbiwgc3ViKSB7Ci0JICAgIGlmICh0eXBlb2Ygc2VjdGlvbi5zZWN0aW9u
cyA9PT0gInVuZGVmaW5lZCIpIHsKLQkJc2VjdGlvbi5zZWN0aW9ucyA9IFtdOwotCSAgICB9Ci0J
ICAgIHNlY3Rpb24uc2VjdGlvbnMucHVzaChzdWIpOwotCX0KLQotCWZ1bmN0aW9uIGxpKGVsLCBt
YXApIHsKLQkgICAgdmFyIG9iaiA9IG5ldyBzZWN0aW9uKGVsLmZpcnN0RWxlbWVudENoaWxkLmdl
dEF0dHJpYnV0ZSgiaHJlZiIpLnN1YnN0cmluZygxKSk7Ci0JICAgIG9iai50aXRsZSA9IGVsLmZp
cnN0RWxlbWVudENoaWxkLnRleHRDb250ZW50OwotCSAgICB2YXIgY2hpbGQgPSBlbC5maXJzdEVs
ZW1lbnRDaGlsZDsKLQotCSAgICB2YXIgbSA9IG1hcFtvYmouaWRdOwotCSAgICBmb3IgKHZhciBp
ID0gMDsgaSA8IG0ubGVuZ3RoOyBpKyspICB7CSAgICAKLQkJdmFyIHN1YiA9IG5ldyBzZWN0aW9u
KG1baV0pOyAKLQkJYWRkU3ViU2VjdGlvbihvYmosIHN1Yik7Ci0JICAgIH0KLQkgICAgd2hpbGUg
KGNoaWxkICE9PSBudWxsKSB7Ci0JCWlmIChjaGlsZC5ub2RlTmFtZSA9PT0gIk9MIikgb2woY2hp
bGQsIG9iaiwgbWFwKTsKLQkJY2hpbGQgPSBjaGlsZC5uZXh0RWxlbWVudFNpYmxpbmc7Ci0JICAg
IH0KLQkgICAgcmV0dXJuIG9iajsKLQl9Ci0KLQlmdW5jdGlvbiBvbChlbCwgc2VjdGlvbiwgbWFw
KSB7Ci0JICAgIHZhciBjaGlsZCA9IGVsLmZpcnN0RWxlbWVudENoaWxkOwotCSAgICB3aGlsZSAo
Y2hpbGQgIT09IG51bGwpIHsKLQkJYWRkU3ViU2VjdGlvbihzZWN0aW9uLCBsaShjaGlsZCwgbWFw
KSk7Ci0JCWNoaWxkID0gY2hpbGQubmV4dEVsZW1lbnRTaWJsaW5nOwotCSAgICB9Ci0JfQotCi0J
dmFyIG1hcCA9IGdldFNlY3Rpb24oKTsKLQl2YXIgbWFpbiA9IG5ldyBzZWN0aW9uKCJfX19tYWlu
X19fIik7Ci0JbWFpbi50aXRsZSA9IGRvY3VtZW50LnRpdGxlOwotCi0Jb2wodG9jX2VsZW1lbnQs
IG1haW4sIG1hcCk7Ci0KLQlyZXR1cm4gbWFpbjsKKyAgICAgICAgdmFyIHRvY19lbGVtZW50ID0g
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnRlbnRzIikubmV4dEVsZW1lbnRTaWJsaW5nOwor
CisgICAgICAgIGZ1bmN0aW9uIGdldFNlY3Rpb24oKSB7CisgICAgICAgICAgICBmdW5jdGlvbiBn
ZXRJZHMobm9kZSkgeworICAgICAgICAgICAgICAgIHZhciBhID0gW107CisKKyAgICAgICAgICAg
ICAgICB2YXIgbm9kZXMgPSBub2RlLnF1ZXJ5U2VsZWN0b3JBbGwoJypbaWRdJyk7CisgICAgICAg
ICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBub2Rlcy5sZW5ndGg7IGkrKykgeworICAgICAg
ICAgICAgICAgICAgICBhLnB1c2gobm9kZXNbaV0uZ2V0QXR0cmlidXRlKCJpZCIpKTsKKyAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcmV0dXJuIGE7CisgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgIGZ1bmN0aW9uIGdldFRPQ0lkcygpIHsKKyAgICAgICAgICAgICAgICB2YXIg
YSA9IFtdOworCisgICAgICAgICAgICAgICAgdmFyIG5vZGVzID0gdG9jX2VsZW1lbnQucXVlcnlT
ZWxlY3RvckFsbCgnbGknKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5v
ZGVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgICAgIHZhciBocmVmID0gbm9kZXNb
aV0uZmlyc3RFbGVtZW50Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIik7CisgICAgICAgICAgICAg
ICAgICAgIGEucHVzaChocmVmLnN1YnN0cmluZygxKSk7CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgICAgIHJldHVybiBhOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB2YXIg
b2JqID0gbmV3IE9iamVjdCgpOworICAgICAgICAgICAgdmFyIGlkcyA9IGdldElkcyhkb2N1bWVu
dCk7CisgICAgICAgICAgICB2YXIgdG9jID0gZ2V0VE9DSWRzKCk7CisKKyAgICAgICAgICAgIGZv
ciAodmFyIGkgPSAxOyBpIDwgdG9jLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAgICAgICAgdmFy
IGtleTEgPSB0b2NbaS0xXTsKKyAgICAgICAgICAgICAgICB2YXIga2V5MiA9IHRvY1tpXTsKKyAg
ICAgICAgICAgICAgICB2YXIgbWFwID0gW107CisKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXgx
ID0gaWRzLmluZGV4T2Yoa2V5MSk7CisgICAgICAgICAgICAgICAgdmFyIGluZGV4MiA9IGlkcy5p
bmRleE9mKGtleTIpOworCisgICAgICAgICAgICAgICAgaWYgKChpbmRleDItaW5kZXgxKSA+IDEp
IHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgaiA9IGluZGV4MSsxOyBqIDwgaW5kZXgy
O2orKykgeworICAgICAgICAgICAgICAgICAgICAgICAgbWFwLnB1c2goaWRzW2pdKTsKKyAgICAg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIG9i
altrZXkxXSA9IG1hcDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHsKKyAgICAgICAgICAg
ICAgICB2YXIga2V5ID0gdG9jW3RvYy5sZW5ndGgtMV07CisgICAgICAgICAgICAgICAgdmFyIGlu
ZGV4ID0gaWRzLmluZGV4T2Yoa2V5KTsKKyAgICAgICAgICAgICAgICB2YXIgbWFwID0gW107CisK
KyAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gaW5kZXgrMTsgaiA8IGlkcy5sZW5ndGg7aisr
KSB7CisgICAgICAgICAgICAgICAgICAgIG1hcC5wdXNoKGlkc1tqXSk7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIG9ialtrZXldID0gbWFwOworICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICByZXR1cm4gb2JqOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gc2Vj
dGlvbihpZCkgeworICAgICAgICAgICAgdGhpcy5pZCA9IGlkOworICAgICAgICB9CisgICAgICAg
IGZ1bmN0aW9uIGFkZFN1YlNlY3Rpb24oc2VjdGlvbiwgc3ViKSB7CisgICAgICAgICAgICBpZiAo
dHlwZW9mIHNlY3Rpb24uc2VjdGlvbnMgPT09ICJ1bmRlZmluZWQiKSB7CisgICAgICAgICAgICAg
ICAgc2VjdGlvbi5zZWN0aW9ucyA9IFtdOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc2Vj
dGlvbi5zZWN0aW9ucy5wdXNoKHN1Yik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBs
aShlbCwgbWFwKSB7CisgICAgICAgICAgICB2YXIgb2JqID0gbmV3IHNlY3Rpb24oZWwuZmlyc3RF
bGVtZW50Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikuc3Vic3RyaW5nKDEpKTsKKyAgICAgICAg
ICAgIG9iai50aXRsZSA9IGVsLmZpcnN0RWxlbWVudENoaWxkLnRleHRDb250ZW50OworICAgICAg
ICAgICAgdmFyIGNoaWxkID0gZWwuZmlyc3RFbGVtZW50Q2hpbGQ7CisKKyAgICAgICAgICAgIHZh
ciBtID0gbWFwW29iai5pZF07CisgICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG0ubGVu
Z3RoOyBpKyspICB7CisgICAgICAgICAgICAgICAgdmFyIHN1YiA9IG5ldyBzZWN0aW9uKG1baV0p
OworICAgICAgICAgICAgICAgIGFkZFN1YlNlY3Rpb24ob2JqLCBzdWIpOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgd2hpbGUgKGNoaWxkICE9PSBudWxsKSB7CisgICAgICAgICAgICAgICAg
aWYgKGNoaWxkLm5vZGVOYW1lID09PSAiT0wiKSBvbChjaGlsZCwgb2JqLCBtYXApOworICAgICAg
ICAgICAgICAgIGNoaWxkID0gY2hpbGQubmV4dEVsZW1lbnRTaWJsaW5nOworICAgICAgICAgICAg
fQorICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9u
IG9sKGVsLCBzZWN0aW9uLCBtYXApIHsKKyAgICAgICAgICAgIHZhciBjaGlsZCA9IGVsLmZpcnN0
RWxlbWVudENoaWxkOworICAgICAgICAgICAgd2hpbGUgKGNoaWxkICE9PSBudWxsKSB7CisgICAg
ICAgICAgICAgICAgYWRkU3ViU2VjdGlvbihzZWN0aW9uLCBsaShjaGlsZCwgbWFwKSk7CisgICAg
ICAgICAgICAgICAgY2hpbGQgPSBjaGlsZC5uZXh0RWxlbWVudFNpYmxpbmc7CisgICAgICAgICAg
ICB9CisgICAgICAgIH0KKworICAgICAgICB2YXIgbWFwID0gZ2V0U2VjdGlvbigpOworICAgICAg
ICB2YXIgbWFpbiA9IG5ldyBzZWN0aW9uKCJfX19tYWluX19fIik7CisgICAgICAgIG1haW4udGl0
bGUgPSBkb2N1bWVudC50aXRsZTsKKworICAgICAgICBvbCh0b2NfZWxlbWVudCwgbWFpbiwgbWFw
KTsKKworICAgICAgICByZXR1cm4gbWFpbjsKICAgICB9CiAKICAgICByZXR1cm4gZ2V0TWFwKCk7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NjcmlwdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlYjliMjYyNzNlMmZjNmVkOWY0NDYxOGY0ZDliNTBiZWIz
MzQ2ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL2lk
MnBhdGguanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3NjcmlwdHMvaWQycGF0aC5qc29uCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL21hbmlmZXN0LmpzCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zY3JpcHRzL3BhY2thZ2UuanNvbgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2NyaXB0
cy90b2MuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3NjcmlwdHMvdXBkYXRlLWRpcmVjdG9yeS1zdHJ1Y3R1cmUuanMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvc2Vy
dmUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3NlcnZlL3NlcnZlLnB5CmluZGV4IDEzOWE1NWNlNWNiOTJmYTUwNzEzOWRlYmMwZmI1MjQ2NDNl
YmNiMzYuLjE4NjhiMWEzNmU1MWMxODc0OTFkNzNhYTI3MDg0ODRkYTg4MjA0MmYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2Vy
dmUvc2VydmUucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zZXJ2ZS9zZXJ2ZS5weQpAQCAtOCw2ICs4LDcgQEAgaW1wb3J0IGpzb24KIGlt
cG9ydCBsb2dnaW5nCiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQoraW1wb3J0IHNpZ25hbAog
aW1wb3J0IHNvY2tldAogaW1wb3J0IHN5cwogaW1wb3J0IHRocmVhZGluZwpAQCAtMTYsNiArMTcs
NyBAQCBpbXBvcnQgdHJhY2ViYWNrCiBmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgdXJsbGliCiBpbXBv
cnQgdXVpZAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIE9yZGVyZWREaWN0
Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4sIHByb2R1Y3QKIGZyb20gbXVsdGlwcm9jZXNz
aW5nIGltcG9ydCBQcm9jZXNzLCBFdmVudAogCiBmcm9tIGxvY2FscGF0aHMgaW1wb3J0IHJlcG9f
cm9vdApAQCAtMzEsNiArMzMsMTIgQEAgZnJvbSB3cHRzZXJ2ZS51dGlscyBpbXBvcnQgZ2V0X3Bv
cnQsIEhUVFBFeGNlcHRpb24sIGh0dHAyX2NvbXBhdGlibGUKIGZyb20gbW9kX3B5d2Vic29ja2V0
IGltcG9ydCBzdGFuZGFsb25lIGFzIHB5d2Vic29ja2V0CiAKIAorRURJVF9IT1NUU19IRUxQID0g
KCJQbGVhc2UgZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IFdQVCBzdWJkb21haW5zICIKKyAgICAg
ICAgICAgICAgICAgICAiYXJlIG1hcHBlZCB0byBhIGxvb3BiYWNrIGRldmljZSBpbiAvZXRjL2hv
c3RzLiAiCisgICAgICAgICAgICAgICAgICAgIlNlZSBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBs
YXRmb3JtLXRlc3RzL3dwdCNydW5uaW5nLXRoZS10ZXN0cyAiCisgICAgICAgICAgICAgICAgICAg
ImZvciBpbnN0cnVjdGlvbnMuIikKKworCiBkZWYgcmVwbGFjZV9lbmQocywgb2xkLCBuZXcpOgog
ICAgICIiIgogICAgIEdpdmVuIGEgc3RyaW5nIGBzYCB0aGF0IGVuZHMgd2l0aCBgb2xkYCwgcmVw
bGFjZSB0aGF0IG9jY3VycmVuY2Ugb2YgYG9sZGAKQEAgLTQwLDYgKzQ4LDE1IEBAIGRlZiByZXBs
YWNlX2VuZChzLCBvbGQsIG5ldyk6CiAgICAgcmV0dXJuIHNbOi1sZW4ob2xkKV0gKyBuZXcKIAog
CitkZWYgZG9tYWluc19hcmVfZGlzdGluY3QoYSwgYik6CisgICAgYV9wYXJ0cyA9IGEuc3BsaXQo
Ii4iKQorICAgIGJfcGFydHMgPSBiLnNwbGl0KCIuIikKKyAgICBtaW5fbGVuZ3RoID0gbWluKGxl
bihhX3BhcnRzKSwgbGVuKGJfcGFydHMpKQorICAgIHNsaWNlX2luZGV4ID0gLTEgKiBtaW5fbGVu
Z3RoCisKKyAgICByZXR1cm4gYV9wYXJ0c1tzbGljZV9pbmRleDpdICE9IGJfcGFydHNbc2xpY2Vf
aW5kZXg6XQorCisKIGNsYXNzIFdyYXBwZXJIYW5kbGVyKG9iamVjdCk6CiAKICAgICBfX21ldGFf
XyA9IGFiYy5BQkNNZXRhCkBAIC0xMDAsOSArMTE3LDEyIEBAIGNsYXNzIFdyYXBwZXJIYW5kbGVy
KG9iamVjdCk6CiAgICAgICAgIDpwYXJhbSByZXF1ZXN0OiBUaGUgUmVxdWVzdCBiZWluZyBwcm9j
ZXNzZWQuCiAgICAgICAgICIiIgogICAgICAgICBwYXRoID0gc2VsZi5fZ2V0X3BhdGgoZmlsZXN5
c3RlbV9wYXRoKHNlbGYuYmFzZV9wYXRoLCByZXF1ZXN0LCBzZWxmLnVybF9iYXNlKSwgRmFsc2Up
Ci0gICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmOgotICAgICAgICAgICAgZm9yIGtl
eSwgdmFsdWUgaW4gcmVhZF9zY3JpcHRfbWV0YWRhdGEoZiwganNfbWV0YV9yZSk6Ci0gICAgICAg
ICAgICAgICAgeWllbGQga2V5LCB2YWx1ZQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRo
IG9wZW4ocGF0aCwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBp
biByZWFkX3NjcmlwdF9tZXRhZGF0YShmLCBqc19tZXRhX3JlKToKKyAgICAgICAgICAgICAgICAg
ICAgeWllbGQga2V5LCB2YWx1ZQorICAgICAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgICAg
IHJhaXNlIEhUVFBFeGNlcHRpb24oNDA0KQogCiAgICAgZGVmIF9nZXRfbWV0YShzZWxmLCByZXF1
ZXN0KToKICAgICAgICAgIiIiR2V0IGFuIGl0ZXJhdG9yIG92ZXIgc3RyaW5ncyB0byBpbmplY3Qg
aW50byB0aGUgd3JhcHBlciBkb2N1bWVudApAQCAtMjk4LDYgKzMxOCw3IEBAIGRvbmUoKTsKIAog
cmV3cml0ZXMgPSBbKCJHRVQiLCAiL3Jlc291cmNlcy9XZWJJRExQYXJzZXIuanMiLCAiL3Jlc291
cmNlcy93ZWJpZGwyL2xpYi93ZWJpZGwyLmpzIildCiAKKwogY2xhc3MgUm91dGVzQnVpbGRlcihv
YmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc2VsZi5mb3JiaWRkZW5f
b3ZlcnJpZGUgPSBbKCJHRVQiLCAiL3Rvb2xzL3J1bm5lci8qIiwgaGFuZGxlcnMuZmlsZV9oYW5k
bGVyKSwKQEAgLTMwNiw4ICszMjcsNyBAQCBjbGFzcyBSb3V0ZXNCdWlsZGVyKG9iamVjdCk6CiAK
ICAgICAgICAgc2VsZi5mb3JiaWRkZW4gPSBbKCIqIiwgIi9fY2VydHMvKiIsIGhhbmRsZXJzLkVy
cm9ySGFuZGxlcig0MDQpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgKCIqIiwgIi90b29s
cy8qIiwgaGFuZGxlcnMuRXJyb3JIYW5kbGVyKDQwNCkpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAoIioiLCAie3NwZWN9L3Rvb2xzLyoiLCBoYW5kbGVycy5FcnJvckhhbmRsZXIoNDA0KSks
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICgiKiIsICIvc2VydmUucHkiLCBoYW5kbGVycy5F
cnJvckhhbmRsZXIoNDA0KSldCisgICAgICAgICAgICAgICAgICAgICAgICAgICgiKiIsICJ7c3Bl
Y30vdG9vbHMvKiIsIGhhbmRsZXJzLkVycm9ySGFuZGxlcig0MDQpKV0KIAogICAgICAgICBzZWxm
LmV4dHJhID0gW10KIApAQCAtMzc4LDE1ICszOTgsMTcgQEAgZGVmIGJ1aWxkX3JvdXRlcyhhbGlh
c2VzKToKIAogCiBjbGFzcyBTZXJ2ZXJQcm9jKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNl
bGYpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzY2hlbWU9Tm9uZSk6CiAgICAgICAgIHNlbGYu
cHJvYyA9IE5vbmUKICAgICAgICAgc2VsZi5kYWVtb24gPSBOb25lCiAgICAgICAgIHNlbGYuc3Rv
cCA9IEV2ZW50KCkKKyAgICAgICAgc2VsZi5zY2hlbWUgPSBzY2hlbWUKIAogICAgIGRlZiBzdGFy
dChzZWxmLCBpbml0X2Z1bmMsIGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVz
cywgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgIHNlbGYucHJvYyA9IFByb2Nlc3ModGFyZ2V0
PXNlbGYuY3JlYXRlX2RhZW1vbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzPShp
bml0X2Z1bmMsIGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcpLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG5hbWU9JyVzIG9uIHBvcnQgJXMnICUgKHNlbGYuc2NoZW1lLCBwb3J0KSwKICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3M9a3dhcmdzKQogICAgICAgICBzZWxmLnBy
b2MuZGFlbW9uID0gVHJ1ZQogICAgICAgICBzZWxmLnByb2Muc3RhcnQoKQpAQCAtNDM5LDE4ICs0
NjEsMTkgQEAgZGVmIGNoZWNrX3N1YmRvbWFpbnMoY29uZmlnKToKICAgICB3cmFwcGVyLnN0YXJ0
KHN0YXJ0X2h0dHBfc2VydmVyLCBob3N0LCBwb3J0LCBwYXRocywgYnVpbGRfcm91dGVzKGFsaWFz
ZXMpLAogICAgICAgICAgICAgICAgICAgYmluZF9hZGRyZXNzLCBjb25maWcpCiAKKyAgICB1cmwg
PSAiaHR0cDovL3t9Ont9LyIuZm9ybWF0KGhvc3QsIHBvcnQpCiAgICAgY29ubmVjdGVkID0gRmFs
c2UKICAgICBmb3IgaSBpbiByYW5nZSgxMCk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHVy
bGxpYi5yZXF1ZXN0LnVybG9wZW4oImh0dHA6Ly8lczolZC8iICUgKGhvc3QsIHBvcnQpKQorICAg
ICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3Blbih1cmwpCiAgICAgICAgICAgICBjb25uZWN0
ZWQgPSBUcnVlCiAgICAgICAgICAgICBicmVhawogICAgICAgICBleGNlcHQgdXJsbGliLmVycm9y
LlVSTEVycm9yOgogICAgICAgICAgICAgdGltZS5zbGVlcCgxKQogCiAgICAgaWYgbm90IGNvbm5l
Y3RlZDoKLSAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJGYWlsZWQgdG8gY29ubmVjdCB0byB0ZXN0
IHNlcnZlciBvbiBodHRwOi8vJXM6JXMuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJZb3Ug
bWF5IG5lZWQgdG8gZWRpdCAvZXRjL2hvc3RzIG9yIHNpbWlsYXIsIHNlZSBSRUFETUUubWQuIiAl
IChob3N0LCBwb3J0KSkKKyAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJGYWlsZWQgdG8gY29ubmVj
dCB0byB0ZXN0IHNlcnZlciAiCisgICAgICAgICAgICAgICAgICAgICAgICAib24ge30uIHt9Ii5m
b3JtYXQodXJsLCBFRElUX0hPU1RTX0hFTFApKQogICAgICAgICBzeXMuZXhpdCgxKQogCiAgICAg
Zm9yIGRvbWFpbiBpbiBjb25maWcuZG9tYWluc19zZXQ6CkBAIC00NjAsOCArNDgzLDcgQEAgZGVm
IGNoZWNrX3N1YmRvbWFpbnMoY29uZmlnKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdXJs
bGliLnJlcXVlc3QudXJsb3BlbigiaHR0cDovLyVzOiVkLyIgJSAoZG9tYWluLCBwb3J0KSkKICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiRmFp
bGVkIHByb2JpbmcgZG9tYWluICVzLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIllv
dSBtYXkgbmVlZCB0byBlZGl0IC9ldGMvaG9zdHMgb3Igc2ltaWxhciwgc2VlIFJFQURNRS5tZC4i
ICUgZG9tYWluKQorICAgICAgICAgICAgbG9nZ2VyLmNyaXRpY2FsKCJGYWlsZWQgcHJvYmluZyBk
b21haW4ge30uIHt9Ii5mb3JtYXQoZG9tYWluLCBFRElUX0hPU1RTX0hFTFApKQogICAgICAgICAg
ICAgc3lzLmV4aXQoMSkKIAogICAgIHdyYXBwZXIud2FpdCgpCkBAIC00OTAsMjMgKzUxMiwyNCBA
QCBkZWYgbWFrZV9ob3N0c19maWxlKGNvbmZpZywgaG9zdCk6CiBkZWYgc3RhcnRfc2VydmVycyho
b3N0LCBwb3J0cywgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRyZXNzLCBjb25maWcsICoqa3dhcmdz
KToKICAgICBzZXJ2ZXJzID0gZGVmYXVsdGRpY3QobGlzdCkKICAgICBmb3Igc2NoZW1lLCBwb3J0
cyBpbiBwb3J0cy5pdGVtcygpOgotICAgICAgICBhc3NlcnQgbGVuKHBvcnRzKSA9PSB7Imh0dHAi
OjJ9LmdldChzY2hlbWUsIDEpCisgICAgICAgIGFzc2VydCBsZW4ocG9ydHMpID09IHsiaHR0cCI6
IDJ9LmdldChzY2hlbWUsIDEpCiAKLSAgICAgICAgIyBUT0RPIE5vdCB2ZXJ5IGlkZWFsLCBsb29r
IGludG8gcmVtb3ZpbmcgaXQgaW4gdGhlIGZ1dHVyZQotICAgICAgICAjIENoZWNrIHRoYXQgcHl0
aG9uIDIuNy4xNSBpcyBiZWluZyB1c2VkIGZvciBIVFRQLzIuMAorICAgICAgICAjIElmIHRyeWlu
ZyB0byBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIsIGNoZWNrIGNvbXBhdGliaWxpdHkKICAgICAgICAg
aWYgc2NoZW1lID09ICdodHRwMicgYW5kIG5vdCBodHRwMl9jb21wYXRpYmxlKCk6CisgICAgICAg
ICAgICBsb2dnZXIuZXJyb3IoJ0Nhbm5vdCBzdGFydCBIVFRQLzIuMCBzZXJ2ZXIgYXMgdGhlIGVu
dmlyb25tZW50IGlzIG5vdCBjb21wYXRpYmxlLiAnICsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAnUmVxdWlyZXMgUHl0aG9uIDIuNy4xMCsgKDwgMy4wKSBhbmQgT3BlblNTTCAxLjAuMisnKQog
ICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICBmb3IgcG9ydCBpbiBwb3J0czoKICAgICAg
ICAgICAgIGlmIHBvcnQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAg
ICAgICAgaW5pdF9mdW5jID0geyJodHRwIjpzdGFydF9odHRwX3NlcnZlciwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAiaHR0cHMiOnN0YXJ0X2h0dHBzX3NlcnZlciwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAiaHR0cDIiOnN0YXJ0X2h0dHAyX3NlcnZlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAid3MiOnN0YXJ0X3dzX3NlcnZlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAi
d3NzIjpzdGFydF93c3Nfc2VydmVyfVtzY2hlbWVdCisgICAgICAgICAgICBpbml0X2Z1bmMgPSB7
Imh0dHAiOiBzdGFydF9odHRwX3NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0
cHMiOiBzdGFydF9odHRwc19zZXJ2ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHAy
Ijogc3RhcnRfaHR0cDJfc2VydmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICJ3cyI6IHN0
YXJ0X3dzX3NlcnZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAid3NzIjogc3RhcnRfd3Nz
X3NlcnZlcn1bc2NoZW1lXQogCi0gICAgICAgICAgICBzZXJ2ZXJfcHJvYyA9IFNlcnZlclByb2Mo
KQorICAgICAgICAgICAgc2VydmVyX3Byb2MgPSBTZXJ2ZXJQcm9jKHNjaGVtZT1zY2hlbWUpCiAg
ICAgICAgICAgICBzZXJ2ZXJfcHJvYy5zdGFydChpbml0X2Z1bmMsIGhvc3QsIHBvcnQsIHBhdGhz
LCByb3V0ZXMsIGJpbmRfYWRkcmVzcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bmZpZywgKiprd2FyZ3MpCiAgICAgICAgICAgICBzZXJ2ZXJzW3NjaGVtZV0uYXBwZW5kKChwb3J0
LCBzZXJ2ZXJfcHJvYykpCkBAIC01NTgsMTQgKzU4MSwxNCBAQCBkZWYgc3RhcnRfaHR0cDJfc2Vy
dmVyKGhvc3QsIHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3
YXJncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jcnlwdF9hZnRlcl9jb25u
ZWN0PWNvbmZpZy5zc2xfY29uZmlnWyJlbmNyeXB0X2FmdGVyX2Nvbm5lY3QiXSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGxhdGVuY3k9a3dhcmdzLmdldCgibGF0ZW5jeSIpLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cDI9VHJ1ZSkKKworCiBjbGFzcyBX
ZWJTb2NrZXREYWVtb24ob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9y
dCwgZG9jX3Jvb3QsIGhhbmRsZXJzX3Jvb3QsIGxvZ19sZXZlbCwgYmluZF9hZGRyZXNzLAotICAg
ICAgICAgICAgICAgICBzc2xfY29uZmlnKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwg
cG9ydCwgZG9jX3Jvb3QsIGhhbmRsZXJzX3Jvb3QsIGJpbmRfYWRkcmVzcywgc3NsX2NvbmZpZyk6
CiAgICAgICAgIHNlbGYuaG9zdCA9IGhvc3QKICAgICAgICAgY21kX2FyZ3MgPSBbIi1wIiwgcG9y
dCwKICAgICAgICAgICAgICAgICAgICAgIi1kIiwgZG9jX3Jvb3QsCi0gICAgICAgICAgICAgICAg
ICAgICItdyIsIGhhbmRsZXJzX3Jvb3QsCi0gICAgICAgICAgICAgICAgICAgICItLWxvZy1sZXZl
bCIsIGxvZ19sZXZlbF0KKyAgICAgICAgICAgICAgICAgICAgIi13IiwgaGFuZGxlcnNfcm9vdF0K
IAogICAgICAgICBpZiBzc2xfY29uZmlnIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgIyBUaGlz
IGlzIHVzdWFsbHkgZG9uZSB0aHJvdWdoIHB5d2Vic29ja2V0Lm1haW4sIGhvd2V2ZXIgd2UncmUK
QEAgLTYyMywyOCArNjQ2LDM5IEBAIGNsYXNzIFdlYlNvY2tldERhZW1vbihvYmplY3QpOgogICAg
ICAgICBzZWxmLnNlcnZlciA9IE5vbmUKIAogCitkZWYgcmVsZWFzZV9tb3psb2dfbG9jaygpOgor
ICAgIHRyeToKKyAgICAgICAgZnJvbSBtb3psb2cuc3RydWN0dXJlZGxvZyBpbXBvcnQgU3RydWN0
dXJlZExvZ2dlcgorICAgICAgICB0cnk6CisgICAgICAgICAgICBTdHJ1Y3R1cmVkTG9nZ2VyLl9s
b2NrLnJlbGVhc2UoKQorICAgICAgICBleGNlcHQgdGhyZWFkaW5nLlRocmVhZEVycm9yOgorICAg
ICAgICAgICAgcGFzcworICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgcGFzcworCisK
IGRlZiBzdGFydF93c19zZXJ2ZXIoaG9zdCwgcG9ydCwgcGF0aHMsIHJvdXRlcywgYmluZF9hZGRy
ZXNzLCBjb25maWcsICoqa3dhcmdzKToKLSAgICAjIEVuc3VyZSB0aGF0IHdoZW4gd2Ugc3RhcnQg
dGhpcyBpbiBhIG5ldyBwcm9jZXNzIHdlIGRvbid0IGluaGVyaXQgdGhlCi0gICAgIyBnbG9iYWwg
bG9jayBpbiB0aGUgbG9nZ2luZyBtb2R1bGUKKyAgICAjIEVuc3VyZSB0aGF0IHdoZW4gd2Ugc3Rh
cnQgdGhpcyBpbiBhIG5ldyBwcm9jZXNzIHdlIGhhdmUgdGhlIGdsb2JhbCBsb2NrCisgICAgIyBp
biB0aGUgbG9nZ2luZyBtb2R1bGUgdW5sb2NrZWQKICAgICByZWxvYWRfbW9kdWxlKGxvZ2dpbmcp
CisgICAgcmVsZWFzZV9tb3psb2dfbG9jaygpCiAgICAgcmV0dXJuIFdlYlNvY2tldERhZW1vbiho
b3N0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKHBvcnQpLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVwb19yb290LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
ZmlnLnBhdGhzWyJ3c19kb2Nfcm9vdCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImRl
YnVnIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJpbmRfYWRkcmVzcywKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHNzbF9jb25maWcgPSBOb25lKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3NsX2NvbmZpZz1Ob25lKQogCiAKIGRlZiBzdGFydF93c3Nfc2VydmVyKGhvc3Qs
IHBvcnQsIHBhdGhzLCByb3V0ZXMsIGJpbmRfYWRkcmVzcywgY29uZmlnLCAqKmt3YXJncyk6Ci0g
ICAgIyBFbnN1cmUgdGhhdCB3aGVuIHdlIHN0YXJ0IHRoaXMgaW4gYSBuZXcgcHJvY2VzcyB3ZSBk
b24ndCBpbmhlcml0IHRoZQotICAgICMgZ2xvYmFsIGxvY2sgaW4gdGhlIGxvZ2dpbmcgbW9kdWxl
CisgICAgIyBFbnN1cmUgdGhhdCB3aGVuIHdlIHN0YXJ0IHRoaXMgaW4gYSBuZXcgcHJvY2VzcyB3
ZSBoYXZlIHRoZSBnbG9iYWwgbG9jaworICAgICMgaW4gdGhlIGxvZ2dpbmcgbW9kdWxlIHVubG9j
a2VkCiAgICAgcmVsb2FkX21vZHVsZShsb2dnaW5nKQorICAgIHJlbGVhc2VfbW96bG9nX2xvY2so
KQogICAgIHJldHVybiBXZWJTb2NrZXREYWVtb24oaG9zdCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHN0cihwb3J0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcG9fcm9vdCwK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZy5wYXRoc1sid3NfZG9jX3Jvb3QiXSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWJ1ZyIsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiaW5kX2FkZHJlc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWcu
c3NsX2NvbmZpZykKIApAQCAtNzAxLDYgKzczNSwxMSBAQCBkZWYgYnVpbGRfY29uZmlnKG92ZXJy
aWRlX3BhdGg9Tm9uZSwgKiprd2FyZ3MpOgogCiAgICAgcmV0dXJuIHJ2CiAKKworZGVmIF9tYWtl
X3N1YmRvbWFpbnNfcHJvZHVjdChzLCBkZXB0aD0yKToKKyAgICByZXR1cm4ge3UiLiIuam9pbih4
KSBmb3IgeCBpbiBjaGFpbigqKHByb2R1Y3QocywgcmVwZWF0PWkpIGZvciBpIGluIHJhbmdlKDEs
IGRlcHRoKzEpKSl9CisKKwogX3N1YmRvbWFpbnMgPSB7dSJ3d3ciLAogICAgICAgICAgICAgICAg
dSJ3d3cxIiwKICAgICAgICAgICAgICAgIHUid3d3MiIsCkBAIC03MDksMTEgKzc0OCwxNiBAQCBf
c3ViZG9tYWlucyA9IHt1Ind3dyIsCiAKIF9ub3Rfc3ViZG9tYWlucyA9IHt1Im5vbmV4aXN0ZW50
In0KIAorX3N1YmRvbWFpbnMgPSBfbWFrZV9zdWJkb21haW5zX3Byb2R1Y3QoX3N1YmRvbWFpbnMp
CisKK19ub3Rfc3ViZG9tYWlucyA9IF9tYWtlX3N1YmRvbWFpbnNfcHJvZHVjdChfbm90X3N1YmRv
bWFpbnMpCisKIAogY2xhc3MgQ29uZmlnQnVpbGRlcihjb25maWcuQ29uZmlnQnVpbGRlcik6CiAg
ICAgIiIic2VydmUgY29uZmlnCiAKLSAgICB0aGlzIHN1YmNsYXNzZXMgd3B0c2VydmUuY29uZmln
LkNvbmZpZ0J1aWxkZXIgdG8gYWRkIHNlcnZlIGNvbmZpZyBvcHRpb25zIiIiCisgICAgVGhpcyBz
dWJjbGFzc2VzIHdwdHNlcnZlLmNvbmZpZy5Db25maWdCdWlsZGVyIHRvIGFkZCBzZXJ2ZSBjb25m
aWcgb3B0aW9ucy4KKyAgICAiIiIKIAogICAgIF9kZWZhdWx0ID0gewogICAgICAgICAiYnJvd3Nl
cl9ob3N0IjogIndlYi1wbGF0Zm9ybS50ZXN0IiwKQEAgLTczOCw3ICs3ODIsOSBAQCBjbGFzcyBD
b25maWdCdWlsZGVyKGNvbmZpZy5Db25maWdCdWlsZGVyKToKICAgICAgICAgICAgICJvcGVuc3Ns
IjogewogICAgICAgICAgICAgICAgICJvcGVuc3NsX2JpbmFyeSI6ICJvcGVuc3NsIiwKICAgICAg
ICAgICAgICAgICAiYmFzZV9wYXRoIjogIl9jZXJ0cyIsCisgICAgICAgICAgICAgICAgInBhc3N3
b3JkIjogIndlYi1wbGF0Zm9ybS10ZXN0cyIsCiAgICAgICAgICAgICAgICAgImZvcmNlX3JlZ2Vu
ZXJhdGUiOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAiZHVyYXRpb24iOiAzMCwKICAgICAgICAg
ICAgICAgICAiYmFzZV9jb25mX3BhdGgiOiBOb25lCiAgICAgICAgICAgICB9LAogICAgICAgICAg
ICAgInByZWdlbmVyYXRlZCI6IHsKQEAgLTc2MSw2ICs4MDcsMTQgQEAgY2xhc3MgQ29uZmlnQnVp
bGRlcihjb25maWcuQ29uZmlnQnVpbGRlcik6CiAgICAgICAgICAgICAqYXJncywKICAgICAgICAg
ICAgICoqa3dhcmdzCiAgICAgICAgICkKKyAgICAgICAgd2l0aCBzZWxmIGFzIGM6CisgICAgICAg
ICAgICBicm93c2VyX2hvc3QgPSBjLmdldCgiYnJvd3Nlcl9ob3N0IikKKyAgICAgICAgICAgIGFs
dGVybmF0ZV9ob3N0ID0gYy5nZXQoImFsdGVybmF0ZV9ob3N0cyIsIHt9KS5nZXQoImFsdCIpCisK
KyAgICAgICAgICAgIGlmIG5vdCBkb21haW5zX2FyZV9kaXN0aW5jdChicm93c2VyX2hvc3QsIGFs
dGVybmF0ZV9ob3N0KToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAorICAgICAg
ICAgICAgICAgICAgICAiQWx0ZXJuYXRlIGhvc3QgbXVzdCBiZSBkaXN0aW5jdCBmcm9tIGJyb3dz
ZXIgaG9zdCIKKyAgICAgICAgICAgICAgICApCiAKICAgICBkZWYgX2dldF93c19kb2Nfcm9vdChz
ZWxmLCBkYXRhKToKICAgICAgICAgaWYgZGF0YVsid3NfZG9jX3Jvb3QiXSBpcyBub3QgTm9uZToK
QEAgLTc5OCwxMSArODUyLDE5IEBAIGRlZiBnZXRfcGFyc2VyKCk6CiAKIAogZGVmIHJ1bigqKmt3
YXJncyk6CisgICAgcmVjZWl2ZWRfc2lnbmFsID0gdGhyZWFkaW5nLkV2ZW50KCkKKwogICAgIHdp
dGggYnVpbGRfY29uZmlnKG9zLnBhdGguam9pbihyZXBvX3Jvb3QsICJjb25maWcuanNvbiIpLAog
ICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKSBhcyBjb25maWc6CiAgICAgICAgIGdsb2Jh
bCBsb2dnZXIKICAgICAgICAgbG9nZ2VyID0gY29uZmlnLmxvZ2dlcgogICAgICAgICBzZXRfbG9n
Z2VyKGxvZ2dlcikKKyAgICAgICAgIyBDb25maWd1cmUgdGhlIHJvb3QgbG9nZ2VyIHRvIGNvdmVy
IHRoaXJkLXBhcnR5IGxpYnJhcmllcy4KKyAgICAgICAgbG9nZ2luZy5nZXRMb2dnZXIoKS5zZXRM
ZXZlbChjb25maWcubG9nX2xldmVsKQorCisgICAgICAgIGRlZiBoYW5kbGVfc2lnbmFsKHNpZ251
bSwgZnJhbWUpOgorICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJSZWNlaXZlZCBzaWduYWwgJXMu
IFNodXR0aW5nIGRvd24uIiwgc2lnbnVtKQorICAgICAgICAgICAgcmVjZWl2ZWRfc2lnbmFsLnNl
dCgpCiAKICAgICAgICAgYmluZF9hZGRyZXNzID0gY29uZmlnWyJiaW5kX2FkZHJlc3MiXQogCkBA
IC04MjUsMTMgKzg4NywyMCBAQCBkZWYgcnVuKCoqa3dhcmdzKToKIAogICAgICAgICB3aXRoIHN0
YXNoLlN0YXNoU2VydmVyKHN0YXNoX2FkZHJlc3MsIGF1dGhrZXk9c3RyKHV1aWQudXVpZDQoKSkp
OgogICAgICAgICAgICAgc2VydmVycyA9IHN0YXJ0KGNvbmZpZywgYnVpbGRfcm91dGVzKGNvbmZp
Z1siYWxpYXNlcyJdKSwgKiprd2FyZ3MpCisgICAgICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25h
bC5TSUdURVJNLCBoYW5kbGVfc2lnbmFsKQorICAgICAgICAgICAgc2lnbmFsLnNpZ25hbChzaWdu
YWwuU0lHSU5ULCBoYW5kbGVfc2lnbmFsKQorCisgICAgICAgICAgICB3aGlsZSBhbGwoaXRlbS5p
c19hbGl2ZSgpIGZvciBpdGVtIGluIGl0ZXJfcHJvY3Moc2VydmVycykpIGFuZCBub3QgcmVjZWl2
ZWRfc2lnbmFsLmlzX3NldCgpOgorICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZXJfcHJv
Y3Moc2VydmVycyk6CisgICAgICAgICAgICAgICAgICAgIGl0ZW0uam9pbigxKQorICAgICAgICAg
ICAgZXhpdGVkID0gW2l0ZW0gZm9yIGl0ZW0gaW4gaXRlcl9wcm9jcyhzZXJ2ZXJzKSBpZiBub3Qg
aXRlbS5pc19hbGl2ZSgpXQorICAgICAgICAgICAgc3ViamVjdCA9ICJzdWJwcm9jZXNzIiBpZiBs
ZW4oZXhpdGVkKSA9PSAxIGVsc2UgInN1YnByb2Nlc3NlcyIKKworICAgICAgICAgICAgbG9nZ2Vy
LmluZm8oIiVzICVzIGV4aXRlZDoiICUgKGxlbihleGl0ZWQpLCBzdWJqZWN0KSkKKworICAgICAg
ICAgICAgZm9yIGl0ZW0gaW4gaXRlcl9wcm9jcyhzZXJ2ZXJzKToKKyAgICAgICAgICAgICAgICBs
b2dnZXIuaW5mbygiU3RhdHVzIG9mICVzOlx0JXMiICUgKGl0ZW0ubmFtZSwgInJ1bm5pbmciIGlm
IGl0ZW0uaXNfYWxpdmUoKSBlbHNlICJub3QgcnVubmluZyIpKQogCi0gICAgICAgICAgICB0cnk6
Ci0gICAgICAgICAgICAgICAgd2hpbGUgYW55KGl0ZW0uaXNfYWxpdmUoKSBmb3IgaXRlbSBpbiBp
dGVyX3Byb2NzKHNlcnZlcnMpKToKLSAgICAgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRl
cl9wcm9jcyhzZXJ2ZXJzKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uam9pbigxKQot
ICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIGxv
Z2dlci5pbmZvKCJTaHV0dGluZyBkb3duIikKIAogZGVmIG1haW4oKToKICAgICBrd2FyZ3MgPSB2
YXJzKGdldF9wYXJzZXIoKS5wYXJzZV9hcmdzKCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rfc2VydmUucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZl
L3Rlc3Rfc2VydmUucHkKaW5kZXggMWMwODliNTA2NzM4ZWU3M2UyZjFlMjljZjE3MjlhMWFiYzFl
MGMwYi4uZDZjMDgyYTk3MDM1N2Y0NzdlODJjZDI1YTFjMDk1MmVlNzQ0ZGI1NCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2
ZS90ZXN0X3NlcnZlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvc2VydmUvdGVzdF9zZXJ2ZS5weQpAQCAtMSw2ICsxLDcgQEAKK2ltcG9y
dCBqc29uCitpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBwbGF0Zm9ybQotaW1wb3J0
IG9zCiAKIGltcG9ydCBweXRlc3QKIApAQCAtNzUsMyArNzYsMzIgQEAgZGVmIHRlc3RfcGlja2xl
KCk6CiAgICAgIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlnIG9iamVjdCBjYW4gYmUgcGlja2xlZAog
ICAgIHdpdGggQ29uZmlnQnVpbGRlcigpIGFzIGM6CiAgICAgICAgIHBpY2tsZS5kdW1wcyhjKQor
CisKK2RlZiB0ZXN0X2NvbmZpZ19qc29uX2xlbmd0aCgpOgorICAgICMgd2Ugc2VyaWFsaXplIHRo
ZSBjb25maWcgYXMgSlNPTiBmb3IgcHl0ZXN0cnVubmVyIGFuZCBwdXQgaXQgaW4gYW4gZW52Cisg
ICAgIyB2YXJpYWJsZSwgd2hpY2ggb24gV2luZG93cyBtdXN0IGhhdmUgYSBsZW5ndGggPD0gMHg3
RkZGIChpbnQxNikKKyAgICB3aXRoIENvbmZpZ0J1aWxkZXIoKSBhcyBjOgorICAgICAgICBkYXRh
ID0ganNvbi5kdW1wcyhjLmFzX2RpY3QoKSkKKyAgICBhc3NlcnQgbGVuKGRhdGEpIDw9IDB4N0ZG
RgorCitkZWYgdGVzdF9hbHRlcm5hdGVfaG9zdF91bnNwZWNpZmllZCgpOgorICAgIENvbmZpZ0J1
aWxkZXIoYnJvd3Nlcl9ob3N0PSJ3ZWItcGxhdGZvcm0udGVzdCIpCisKK0BweXRlc3QubWFyay5w
YXJhbWV0cml6ZSgicHJpbWFyeSwgYWx0ZXJuYXRlIiwgWworICAgICgid2ViLXBsYXRmb3JtLnRl
c3QiLCAid2ViLXBsYXRmb3JtLnRlc3QiKSwKKyAgICAoImEud2ViLXBsYXRmb3JtLnRlc3QiLCAi
d2ViLXBsYXRmb3JtLnRlc3QiKSwKKyAgICAoIndlYi1wbGF0Zm9ybS50ZXN0IiwgImEud2ViLXBs
YXRmb3JtLnRlc3QiKSwKKyAgICAoImEud2ViLXBsYXRmb3JtLnRlc3QiLCAiYS53ZWItcGxhdGZv
cm0udGVzdCIpLAorXSkKK2RlZiB0ZXN0X2FsdGVybmF0ZV9ob3N0X2ludmFsaWQocHJpbWFyeSwg
YWx0ZXJuYXRlKToKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAg
IENvbmZpZ0J1aWxkZXIoYnJvd3Nlcl9ob3N0PXByaW1hcnksIGFsdGVybmF0ZV9ob3N0cz17ImFs
dCI6IGFsdGVybmF0ZX0pCisKK0BweXRlc3QubWFyay5wYXJhbWV0cml6ZSgicHJpbWFyeSwgYWx0
ZXJuYXRlIiwgWworICAgICgid2ViLXBsYXRmb3JtLnRlc3QiLCAibm90LXdlYi1wbGF0Zm9ybS50
ZXN0IiksCisgICAgKCJhLndlYi1wbGF0Zm9ybS50ZXN0IiwgImIud2ViLXBsYXRmb3JtLnRlc3Qi
KSwKKyAgICAoIndlYi1wbGF0Zm9ybS10ZXN0cy5kZXYiLCAid2ViLXBsYXRmb3JtLXRlc3RzLmxp
dmUiKSwKK10pCitkZWYgdGVzdF9hbHRlcm5hdGVfaG9zdF92YWxpZChwcmltYXJ5LCBhbHRlcm5h
dGUpOgorICAgIENvbmZpZ0J1aWxkZXIoYnJvd3Nlcl9ob3N0PXByaW1hcnksIGFsdGVybmF0ZV9o
b3N0cz17ImFsdCI6IGFsdGVybmF0ZX0pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zZXJ2ZS93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWFhNTcyMjVkYmRkMThm
NmIzMmZiY2Y2N2I5MDdkY2M4NThjNjZmZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NlcnZlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9zZXJ2ZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvY29tbWFuZHMuanNvbgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2VydmUvc2VydmUucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NlcnZlL3Rlc3Rf
c2VydmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL01h
a2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZWJhZmNkNmQ2MGYxMjljYjVj
NjI2ZmIyZTA0ZDQwZjc4ZTM3NWRhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvc2l4L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKKysrIC9kZXYvbnVsbApAQCAtMSwxMzAg
KzAsMCBAQAotIyBNYWtlZmlsZSBmb3IgU3BoaW54IGRvY3VtZW50YXRpb24KLSMKLQotIyBZb3Ug
Y2FuIHNldCB0aGVzZSB2YXJpYWJsZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lLgotU1BISU5YT1BU
UyAgICA9Ci1TUEhJTlhCVUlMRCAgID0gc3BoaW54LWJ1aWxkCi1QQVBFUiAgICAgICAgID0KLUJV
SUxERElSICAgICAgPSBfYnVpbGQKLQotIyBJbnRlcm5hbCB2YXJpYWJsZXMuCi1QQVBFUk9QVF9h
NCAgICAgPSAtRCBsYXRleF9wYXBlcl9zaXplPWE0Ci1QQVBFUk9QVF9sZXR0ZXIgPSAtRCBsYXRl
eF9wYXBlcl9zaXplPWxldHRlcgotQUxMU1BISU5YT1BUUyAgID0gLWQgJChCVUlMRERJUikvZG9j
dHJlZXMgJChQQVBFUk9QVF8kKFBBUEVSKSkgJChTUEhJTlhPUFRTKSAuCi0KLS5QSE9OWTogaGVs
cCBjbGVhbiBodG1sIGRpcmh0bWwgc2luZ2xlaHRtbCBwaWNrbGUganNvbiBodG1saGVscCBxdGhl
bHAgZGV2aGVscCBlcHViIGxhdGV4IGxhdGV4cGRmIHRleHQgbWFuIGNoYW5nZXMgbGlua2NoZWNr
IGRvY3Rlc3QKLQotaGVscDoKLQlAZWNobyAiUGxlYXNlIHVzZSBcYG1ha2UgPHRhcmdldD4nIHdo
ZXJlIDx0YXJnZXQ+IGlzIG9uZSBvZiIKLQlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3Rh
bmRhbG9uZSBIVE1MIGZpbGVzIgotCUBlY2hvICIgIGRpcmh0bWwgICAgdG8gbWFrZSBIVE1MIGZp
bGVzIG5hbWVkIGluZGV4Lmh0bWwgaW4gZGlyZWN0b3JpZXMiCi0JQGVjaG8gIiAgc2luZ2xlaHRt
bCB0byBtYWtlIGEgc2luZ2xlIGxhcmdlIEhUTUwgZmlsZSIKLQlAZWNobyAiICBwaWNrbGUgICAg
IHRvIG1ha2UgcGlja2xlIGZpbGVzIgotCUBlY2hvICIgIGpzb24gICAgICAgdG8gbWFrZSBKU09O
IGZpbGVzIgotCUBlY2hvICIgIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhU
TUwgaGVscCBwcm9qZWN0IgotCUBlY2hvICIgIHF0aGVscCAgICAgdG8gbWFrZSBIVE1MIGZpbGVz
IGFuZCBhIHF0aGVscCBwcm9qZWN0IgotCUBlY2hvICIgIGRldmhlbHAgICAgdG8gbWFrZSBIVE1M
IGZpbGVzIGFuZCBhIERldmhlbHAgcHJvamVjdCIKLQlAZWNobyAiICBlcHViICAgICAgIHRvIG1h
a2UgYW4gZXB1YiIKLQlAZWNobyAiICBsYXRleCAgICAgIHRvIG1ha2UgTGFUZVggZmlsZXMsIHlv
dSBjYW4gc2V0IFBBUEVSPWE0IG9yIFBBUEVSPWxldHRlciIKLQlAZWNobyAiICBsYXRleHBkZiAg
IHRvIG1ha2UgTGFUZVggZmlsZXMgYW5kIHJ1biB0aGVtIHRocm91Z2ggcGRmbGF0ZXgiCi0JQGVj
aG8gIiAgdGV4dCAgICAgICB0byBtYWtlIHRleHQgZmlsZXMiCi0JQGVjaG8gIiAgbWFuICAgICAg
ICB0byBtYWtlIG1hbnVhbCBwYWdlcyIKLQlAZWNobyAiICBjaGFuZ2VzICAgIHRvIG1ha2UgYW4g
b3ZlcnZpZXcgb2YgYWxsIGNoYW5nZWQvYWRkZWQvZGVwcmVjYXRlZCBpdGVtcyIKLQlAZWNobyAi
ICBsaW5rY2hlY2sgIHRvIGNoZWNrIGFsbCBleHRlcm5hbCBsaW5rcyBmb3IgaW50ZWdyaXR5Igot
CUBlY2hvICIgIGRvY3Rlc3QgICAgdG8gcnVuIGFsbCBkb2N0ZXN0cyBlbWJlZGRlZCBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiAoaWYgZW5hYmxlZCkiCi0KLWNsZWFuOgotCS1ybSAtcmYgJChCVUlMRERJ
UikvKgotCi1odG1sOgotCSQoU1BISU5YQlVJTEQpIC1iIGh0bWwgJChBTExTUEhJTlhPUFRTKSAk
KEJVSUxERElSKS9odG1sCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1M
IHBhZ2VzIGFyZSBpbiAkKEJVSUxERElSKS9odG1sLiIKLQotZGlyaHRtbDoKLQkkKFNQSElOWEJV
SUxEKSAtYiBkaXJodG1sICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZGlyaHRtbAotCUBl
Y2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJChCVUlM
RERJUikvZGlyaHRtbC4iCi0KLXNpbmdsZWh0bWw6Ci0JJChTUEhJTlhCVUlMRCkgLWIgc2luZ2xl
aHRtbCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3NpbmdsZWh0bWwKLQlAZWNobwotCUBl
Y2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIEhUTUwgcGFnZSBpcyBpbiAkKEJVSUxERElSKS9zaW5n
bGVodG1sLiIKLQotcGlja2xlOgotCSQoU1BISU5YQlVJTEQpIC1iIHBpY2tsZSAkKEFMTFNQSElO
WE9QVFMpICQoQlVJTERESVIpL3BpY2tsZQotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVk
OyBub3cgeW91IGNhbiBwcm9jZXNzIHRoZSBwaWNrbGUgZmlsZXMuIgotCi1qc29uOgotCSQoU1BI
SU5YQlVJTEQpIC1iIGpzb24gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9qc29uCi0JQGVj
aG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIEpTT04g
ZmlsZXMuIgotCi1odG1saGVscDoKLQkkKFNQSElOWEJVSUxEKSAtYiBodG1saGVscCAkKEFMTFNQ
SElOWE9QVFMpICQoQlVJTERESVIpL2h0bWxoZWxwCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmlu
aXNoZWQ7IG5vdyB5b3UgY2FuIHJ1biBIVE1MIEhlbHAgV29ya3Nob3Agd2l0aCB0aGUiIFwKLQkg
ICAgICAiLmhocCBwcm9qZWN0IGZpbGUgaW4gJChCVUlMRERJUikvaHRtbGhlbHAuIgotCi1xdGhl
bHA6Ci0JJChTUEhJTlhCVUlMRCkgLWIgcXRoZWxwICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJ
UikvcXRoZWxwCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHJ1
biAicWNvbGxlY3Rpb25nZW5lcmF0b3IiIHdpdGggdGhlIiBcCi0JICAgICAgIi5xaGNwIHByb2pl
Y3QgZmlsZSBpbiAkKEJVSUxERElSKS9xdGhlbHAsIGxpa2UgdGhpczoiCi0JQGVjaG8gIiMgcWNv
bGxlY3Rpb25nZW5lcmF0b3IgJChCVUlMRERJUikvcXRoZWxwL3NpeC5xaGNwIgotCUBlY2hvICJU
byB2aWV3IHRoZSBoZWxwIGZpbGU6IgotCUBlY2hvICIjIGFzc2lzdGFudCAtY29sbGVjdGlvbkZp
bGUgJChCVUlMRERJUikvcXRoZWxwL3NpeC5xaGMiCi0KLWRldmhlbHA6Ci0JJChTUEhJTlhCVUlM
RCkgLWIgZGV2aGVscCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RldmhlbHAKLQlAZWNo
bwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4iCi0JQGVjaG8gIlRvIHZpZXcgdGhlIGhlbHAgZmls
ZToiCi0JQGVjaG8gIiMgbWtkaXIgLXAgJCRIT01FLy5sb2NhbC9zaGFyZS9kZXZoZWxwL3NpeCIK
LQlAZWNobyAiIyBsbiAtcyAkKEJVSUxERElSKS9kZXZoZWxwICQkSE9NRS8ubG9jYWwvc2hhcmUv
ZGV2aGVscC9zaXgiCi0JQGVjaG8gIiMgZGV2aGVscCIKLQotZXB1YjoKLQkkKFNQSElOWEJVSUxE
KSAtYiBlcHViICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvZXB1YgotCUBlY2hvCi0JQGVj
aG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgZXB1YiBmaWxlIGlzIGluICQoQlVJTERESVIpL2VwdWIu
IgotCi1sYXRleDoKLQkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMpICQo
QlVJTERESVIpL2xhdGV4Ci0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQ7IHRoZSBMYVRl
WCBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvbGF0ZXguIgotCUBlY2hvICJSdW4gXGBtYWtlJyBp
biB0aGF0IGRpcmVjdG9yeSB0byBydW4gdGhlc2UgdGhyb3VnaCAocGRmKWxhdGV4IiBcCi0JICAg
ICAgIih1c2UgXGBtYWtlIGxhdGV4cGRmJyBoZXJlIHRvIGRvIHRoYXQgYXV0b21hdGljYWxseSku
IgotCi1sYXRleHBkZjoKLQkkKFNQSElOWEJVSUxEKSAtYiBsYXRleCAkKEFMTFNQSElOWE9QVFMp
ICQoQlVJTERESVIpL2xhdGV4Ci0JQGVjaG8gIlJ1bm5pbmcgTGFUZVggZmlsZXMgdGhyb3VnaCBw
ZGZsYXRleC4uLiIKLQltYWtlIC1DICQoQlVJTERESVIpL2xhdGV4IGFsbC1wZGYKLQlAZWNobyAi
cGRmbGF0ZXggZmluaXNoZWQ7IHRoZSBQREYgZmlsZXMgYXJlIGluICQoQlVJTERESVIpL2xhdGV4
LiIKLQotdGV4dDoKLQkkKFNQSElOWEJVSUxEKSAtYiB0ZXh0ICQoQUxMU1BISU5YT1BUUykgJChC
VUlMRERJUikvdGV4dAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgdGV4dCBm
aWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4dC4iCi0KLW1hbjoKLQkkKFNQSElOWEJVSUxEKSAt
YiBtYW4gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9tYW4KLQlAZWNobwotCUBlY2hvICJC
dWlsZCBmaW5pc2hlZC4gVGhlIG1hbnVhbCBwYWdlcyBhcmUgaW4gJChCVUlMRERJUikvbWFuLiIK
LQotY2hhbmdlczoKLQkkKFNQSElOWEJVSUxEKSAtYiBjaGFuZ2VzICQoQUxMU1BISU5YT1BUUykg
JChCVUlMRERJUikvY2hhbmdlcwotCUBlY2hvCi0JQGVjaG8gIlRoZSBvdmVydmlldyBmaWxlIGlz
IGluICQoQlVJTERESVIpL2NoYW5nZXMuIgotCi1saW5rY2hlY2s6Ci0JJChTUEhJTlhCVUlMRCkg
LWIgbGlua2NoZWNrICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvbGlua2NoZWNrCi0JQGVj
aG8KLQlAZWNobyAiTGluayBjaGVjayBjb21wbGV0ZTsgbG9vayBmb3IgYW55IGVycm9ycyBpbiB0
aGUgYWJvdmUgb3V0cHV0ICIgXAotCSAgICAgICJvciBpbiAkKEJVSUxERElSKS9saW5rY2hlY2sv
b3V0cHV0LnR4dC4iCi0KLWRvY3Rlc3Q6Ci0JJChTUEhJTlhCVUlMRCkgLWIgZG9jdGVzdCAkKEFM
TFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RvY3Rlc3QKLQlAZWNobyAiVGVzdGluZyBvZiBkb2N0
ZXN0cyBpbiB0aGUgc291cmNlcyBmaW5pc2hlZCwgbG9vayBhdCB0aGUgIiBcCi0JICAgICAgInJl
c3VsdHMgaW4gJChCVUlMRERJUikvZG9jdGVzdC9vdXRwdXQudHh0LiIKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3Vt
ZW50YXRpb24vY29uZi5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vY29uZi5weQpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2U1NDI4N2E2OWUwNDcwN2IxYTUwZWY2YjY2ZmFhNmJkMmQxODgxMS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2Nv
bmYucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyMTcgKzAsMCBAQAotIyAtKi0gY29kaW5nOiB1dGYt
OCAtKi0KLSMKLSMgc2l4IGRvY3VtZW50YXRpb24gYnVpbGQgY29uZmlndXJhdGlvbiBmaWxlCi0K
LWltcG9ydCBvcwotaW1wb3J0IHN5cwotCi0jIElmIGV4dGVuc2lvbnMgKG9yIG1vZHVsZXMgdG8g
ZG9jdW1lbnQgd2l0aCBhdXRvZG9jKSBhcmUgaW4gYW5vdGhlciBkaXJlY3RvcnksCi0jIGFkZCB0
aGVzZSBkaXJlY3RvcmllcyB0byBzeXMucGF0aCBoZXJlLiBJZiB0aGUgZGlyZWN0b3J5IGlzIHJl
bGF0aXZlIHRvIHRoZQotIyBkb2N1bWVudGF0aW9uIHJvb3QsIHVzZSBvcy5wYXRoLmFic3BhdGgg
dG8gbWFrZSBpdCBhYnNvbHV0ZSwgbGlrZSBzaG93biBoZXJlLgotI3N5cy5wYXRoLmFwcGVuZChv
cy5wYXRoLmFic3BhdGgoJy4nKSkKLQotIyAtLSBHZW5lcmFsIGNvbmZpZ3VyYXRpb24gLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBJZiB5
b3VyIGRvY3VtZW50YXRpb24gbmVlZHMgYSBtaW5pbWFsIFNwaGlueCB2ZXJzaW9uLCBzdGF0ZSBp
dCBoZXJlLgotbmVlZHNfc3BoaW54ID0gIjEuMCIKLQotIyBBZGQgYW55IFNwaGlueCBleHRlbnNp
b24gbW9kdWxlIG5hbWVzIGhlcmUsIGFzIHN0cmluZ3MuIFRoZXkgY2FuIGJlIGV4dGVuc2lvbnMK
LSMgY29taW5nIHdpdGggU3BoaW54IChuYW1lZCAnc3BoaW54LmV4dC4qJykgb3IgeW91ciBjdXN0
b20gb25lcy4KLWV4dGVuc2lvbnMgPSBbInNwaGlueC5leHQuaW50ZXJzcGhpbngiXQotCi0jIEFk
ZCBhbnkgcGF0aHMgdGhhdCBjb250YWluIHRlbXBsYXRlcyBoZXJlLCByZWxhdGl2ZSB0byB0aGlz
IGRpcmVjdG9yeS4KLXRlbXBsYXRlc19wYXRoID0gWyJfdGVtcGxhdGVzIl0KLQotIyBUaGUgc3Vm
Zml4IG9mIHNvdXJjZSBmaWxlbmFtZXMuCi1zb3VyY2Vfc3VmZml4ID0gIi5yc3QiCi0KLSMgVGhl
IGVuY29kaW5nIG9mIHNvdXJjZSBmaWxlcy4KLSNzb3VyY2VfZW5jb2RpbmcgPSAidXRmLTgtc2ln
IgotCi0jIFRoZSBtYXN0ZXIgdG9jdHJlZSBkb2N1bWVudC4KLW1hc3Rlcl9kb2MgPSAiaW5kZXgi
Ci0KLSMgR2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgcHJvamVjdC4KLXByb2plY3QgPSB1
InNpeCIKLWNvcHlyaWdodCA9IHUiMjAxMC0yMDE0LCBCZW5qYW1pbiBQZXRlcnNvbiIKLQotc3lz
LnBhdGguYXBwZW5kKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oIi4iLCAiLi4iKSkpCi1m
cm9tIHNpeCBpbXBvcnQgX192ZXJzaW9uX18gYXMgc2l4X3ZlcnNpb24KLXN5cy5wYXRoLnBvcCgp
Ci0KLSMgVGhlIHZlcnNpb24gaW5mbyBmb3IgdGhlIHByb2plY3QgeW91J3JlIGRvY3VtZW50aW5n
LCBhY3RzIGFzIHJlcGxhY2VtZW50IGZvcgotIyB8dmVyc2lvbnwgYW5kIHxyZWxlYXNlfCwgYWxz
byB1c2VkIGluIHZhcmlvdXMgb3RoZXIgcGxhY2VzIHRocm91Z2hvdXQgdGhlCi0jIGJ1aWx0IGRv
Y3VtZW50cy4KLSMKLSMgVGhlIHNob3J0IFguWSB2ZXJzaW9uLgotdmVyc2lvbiA9IHNpeF92ZXJz
aW9uWzotMl0KLSMgVGhlIGZ1bGwgdmVyc2lvbiwgaW5jbHVkaW5nIGFscGhhL2JldGEvcmMgdGFn
cy4KLXJlbGVhc2UgPSBzaXhfdmVyc2lvbgotCi0jIFRoZSBsYW5ndWFnZSBmb3IgY29udGVudCBh
dXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1lbnRhdGlvbgotIyBmb3IgYSBs
aXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCi0jbGFuZ3VhZ2UgPSBOb25lCi0KLSMgVGhlcmUg
YXJlIHR3byBvcHRpb25zIGZvciByZXBsYWNpbmcgfHRvZGF5fDogZWl0aGVyLCB5b3Ugc2V0IHRv
ZGF5IHRvIHNvbWUKLSMgbm9uLWZhbHNlIHZhbHVlLCB0aGVuIGl0IGlzIHVzZWQ6Ci0jdG9kYXkg
PSAnJwotIyBFbHNlLCB0b2RheV9mbXQgaXMgdXNlZCBhcyB0aGUgZm9ybWF0IGZvciBhIHN0cmZ0
aW1lIGNhbGwuCi0jdG9kYXlfZm10ID0gJyVCICVkLCAlWScKLQotIyBMaXN0IG9mIHBhdHRlcm5z
LCByZWxhdGl2ZSB0byBzb3VyY2UgZGlyZWN0b3J5LCB0aGF0IG1hdGNoIGZpbGVzIGFuZAotIyBk
aXJlY3RvcmllcyB0byBpZ25vcmUgd2hlbiBsb29raW5nIGZvciBzb3VyY2UgZmlsZXMuCi1leGNs
dWRlX3BhdHRlcm5zID0gWyJfYnVpbGQiXQotCi0jIFRoZSByZVNUIGRlZmF1bHQgcm9sZSAodXNl
ZCBmb3IgdGhpcyBtYXJrdXA6IGB0ZXh0YCkgdG8gdXNlIGZvciBhbGwgZG9jdW1lbnRzLgotI2Rl
ZmF1bHRfcm9sZSA9IE5vbmUKLQotIyBJZiB0cnVlLCAnKCknIHdpbGwgYmUgYXBwZW5kZWQgdG8g
OmZ1bmM6IGV0Yy4gY3Jvc3MtcmVmZXJlbmNlIHRleHQuCi0jYWRkX2Z1bmN0aW9uX3BhcmVudGhl
c2VzID0gVHJ1ZQotCi0jIElmIHRydWUsIHRoZSBjdXJyZW50IG1vZHVsZSBuYW1lIHdpbGwgYmUg
cHJlcGVuZGVkIHRvIGFsbCBkZXNjcmlwdGlvbgotIyB1bml0IHRpdGxlcyAoc3VjaCBhcyAuLiBm
dW5jdGlvbjo6KS4KLSNhZGRfbW9kdWxlX25hbWVzID0gVHJ1ZQotCi0jIElmIHRydWUsIHNlY3Rp
b25hdXRob3IgYW5kIG1vZHVsZWF1dGhvciBkaXJlY3RpdmVzIHdpbGwgYmUgc2hvd24gaW4gdGhl
Ci0jIG91dHB1dC4gVGhleSBhcmUgaWdub3JlZCBieSBkZWZhdWx0LgotI3Nob3dfYXV0aG9ycyA9
IEZhbHNlCi0KLSMgVGhlIG5hbWUgb2YgdGhlIFB5Z21lbnRzIChzeW50YXggaGlnaGxpZ2h0aW5n
KSBzdHlsZSB0byB1c2UuCi1weWdtZW50c19zdHlsZSA9ICJzcGhpbngiCi0KLSMgQSBsaXN0IG9m
IGlnbm9yZWQgcHJlZml4ZXMgZm9yIG1vZHVsZSBpbmRleCBzb3J0aW5nLgotI21vZGluZGV4X2Nv
bW1vbl9wcmVmaXggPSBbXQotCi0KLSMgLS0gT3B0aW9ucyBmb3IgSFRNTCBvdXRwdXQgLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgVGhlIHRo
ZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRoZSBkb2N1bWVu
dGF0aW9uIGZvcgotIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCi1odG1sX3RoZW1lID0gImRl
ZmF1bHQiCi0KLSMgVGhlbWUgb3B0aW9ucyBhcmUgdGhlbWUtc3BlY2lmaWMgYW5kIGN1c3RvbWl6
ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBhIHRoZW1lCi0jIGZ1cnRoZXIuICBGb3IgYSBsaXN0IG9m
IG9wdGlvbnMgYXZhaWxhYmxlIGZvciBlYWNoIHRoZW1lLCBzZWUgdGhlCi0jIGRvY3VtZW50YXRp
b24uCi0jaHRtbF90aGVtZV9vcHRpb25zID0ge30KLQotIyBBZGQgYW55IHBhdGhzIHRoYXQgY29u
dGFpbiBjdXN0b20gdGhlbWVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5LgotI2h0
bWxfdGhlbWVfcGF0aCA9IFtdCi0KLSMgVGhlIG5hbWUgZm9yIHRoaXMgc2V0IG9mIFNwaGlueCBk
b2N1bWVudHMuICBJZiBOb25lLCBpdCBkZWZhdWx0cyB0bwotIyAiPHByb2plY3Q+IHY8cmVsZWFz
ZT4gZG9jdW1lbnRhdGlvbiIuCi0jaHRtbF90aXRsZSA9IE5vbmUKLQotIyBBIHNob3J0ZXIgdGl0
bGUgZm9yIHRoZSBuYXZpZ2F0aW9uIGJhci4gIERlZmF1bHQgaXMgdGhlIHNhbWUgYXMgaHRtbF90
aXRsZS4KLSNodG1sX3Nob3J0X3RpdGxlID0gTm9uZQotCi0jIFRoZSBuYW1lIG9mIGFuIGltYWdl
IGZpbGUgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KSB0byBwbGFjZSBhdCB0aGUgdG9wCi0j
IG9mIHRoZSBzaWRlYmFyLgotI2h0bWxfbG9nbyA9IE5vbmUKLQotIyBUaGUgbmFtZSBvZiBhbiBp
bWFnZSBmaWxlICh3aXRoaW4gdGhlIHN0YXRpYyBwYXRoKSB0byB1c2UgYXMgZmF2aWNvbiBvZiB0
aGUKLSMgZG9jcy4gIFRoaXMgZmlsZSBzaG91bGQgYmUgYSBXaW5kb3dzIGljb24gZmlsZSAoLmlj
bykgYmVpbmcgMTZ4MTYgb3IgMzJ4MzIKLSMgcGl4ZWxzIGxhcmdlLgotI2h0bWxfZmF2aWNvbiA9
IE5vbmUKLQotIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gc3RhdGljIGZpbGVz
IChzdWNoIGFzIHN0eWxlIHNoZWV0cykgaGVyZSwKLSMgcmVsYXRpdmUgdG8gdGhpcyBkaXJlY3Rv
cnkuIFRoZXkgYXJlIGNvcGllZCBhZnRlciB0aGUgYnVpbHRpbiBzdGF0aWMgZmlsZXMsCi0jIHNv
IGEgZmlsZSBuYW1lZCAiZGVmYXVsdC5jc3MiIHdpbGwgb3ZlcndyaXRlIHRoZSBidWlsdGluICJk
ZWZhdWx0LmNzcyIuCi1odG1sX3N0YXRpY19wYXRoID0gWyJfc3RhdGljIl0KLQotIyBJZiBub3Qg
JycsIGEgJ0xhc3QgdXBkYXRlZCBvbjonIHRpbWVzdGFtcCBpcyBpbnNlcnRlZCBhdCBldmVyeSBw
YWdlIGJvdHRvbSwKLSMgdXNpbmcgdGhlIGdpdmVuIHN0cmZ0aW1lIGZvcm1hdC4KLSNodG1sX2xh
c3RfdXBkYXRlZF9mbXQgPSAnJWIgJWQsICVZJwotCi0jIElmIHRydWUsIFNtYXJ0eVBhbnRzIHdp
bGwgYmUgdXNlZCB0byBjb252ZXJ0IHF1b3RlcyBhbmQgZGFzaGVzIHRvCi0jIHR5cG9ncmFwaGlj
YWxseSBjb3JyZWN0IGVudGl0aWVzLgotI2h0bWxfdXNlX3NtYXJ0eXBhbnRzID0gVHJ1ZQotCi0j
IEN1c3RvbSBzaWRlYmFyIHRlbXBsYXRlcywgbWFwcyBkb2N1bWVudCBuYW1lcyB0byB0ZW1wbGF0
ZSBuYW1lcy4KLSNodG1sX3NpZGViYXJzID0ge30KLQotIyBBZGRpdGlvbmFsIHRlbXBsYXRlcyB0
aGF0IHNob3VsZCBiZSByZW5kZXJlZCB0byBwYWdlcywgbWFwcyBwYWdlIG5hbWVzIHRvCi0jIHRl
bXBsYXRlIG5hbWVzLgotI2h0bWxfYWRkaXRpb25hbF9wYWdlcyA9IHt9Ci0KLSMgSWYgZmFsc2Us
IG5vIG1vZHVsZSBpbmRleCBpcyBnZW5lcmF0ZWQuCi0jaHRtbF9kb21haW5faW5kaWNlcyA9IFRy
dWUKLQotIyBJZiBmYWxzZSwgbm8gaW5kZXggaXMgZ2VuZXJhdGVkLgotI2h0bWxfdXNlX2luZGV4
ID0gVHJ1ZQotCi0jIElmIHRydWUsIHRoZSBpbmRleCBpcyBzcGxpdCBpbnRvIGluZGl2aWR1YWwg
cGFnZXMgZm9yIGVhY2ggbGV0dGVyLgotI2h0bWxfc3BsaXRfaW5kZXggPSBGYWxzZQotCi0jIElm
IHRydWUsIGxpbmtzIHRvIHRoZSByZVNUIHNvdXJjZXMgYXJlIGFkZGVkIHRvIHRoZSBwYWdlcy4K
LSNodG1sX3Nob3dfc291cmNlbGluayA9IFRydWUKLQotIyBJZiB0cnVlLCAiQ3JlYXRlZCB1c2lu
ZyBTcGhpbngiIGlzIHNob3duIGluIHRoZSBIVE1MIGZvb3Rlci4gRGVmYXVsdCBpcyBUcnVlLgot
I2h0bWxfc2hvd19zcGhpbnggPSBUcnVlCi0KLSMgSWYgdHJ1ZSwgIihDKSBDb3B5cmlnaHQgLi4u
IiBpcyBzaG93biBpbiB0aGUgSFRNTCBmb290ZXIuIERlZmF1bHQgaXMgVHJ1ZS4KLSNodG1sX3No
b3dfY29weXJpZ2h0ID0gVHJ1ZQotCi0jIElmIHRydWUsIGFuIE9wZW5TZWFyY2ggZGVzY3JpcHRp
b24gZmlsZSB3aWxsIGJlIG91dHB1dCwgYW5kIGFsbCBwYWdlcyB3aWxsCi0jIGNvbnRhaW4gYSA8
bGluaz4gdGFnIHJlZmVycmluZyB0byBpdC4gIFRoZSB2YWx1ZSBvZiB0aGlzIG9wdGlvbiBtdXN0
IGJlIHRoZQotIyBiYXNlIFVSTCBmcm9tIHdoaWNoIHRoZSBmaW5pc2hlZCBIVE1MIGlzIHNlcnZl
ZC4KLSNodG1sX3VzZV9vcGVuc2VhcmNoID0gJycKLQotIyBJZiBub25lbXB0eSwgdGhpcyBpcyB0
aGUgZmlsZSBuYW1lIHN1ZmZpeCBmb3IgSFRNTCBmaWxlcyAoZS5nLiAiLnhodG1sIikuCi0jaHRt
bF9maWxlX3N1ZmZpeCA9ICcnCi0KLSMgT3V0cHV0IGZpbGUgYmFzZSBuYW1lIGZvciBIVE1MIGhl
bHAgYnVpbGRlci4KLWh0bWxoZWxwX2Jhc2VuYW1lID0gJ3NpeGRvYycKLQotCi0jIC0tIE9wdGlv
bnMgZm9yIExhVGVYIG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi0jIFRoZSBwYXBlciBzaXplICgnbGV0dGVyJyBvciAnYTQnKS4KLSNs
YXRleF9wYXBlcl9zaXplID0gJ2xldHRlcicKLQotIyBUaGUgZm9udCBzaXplICgnMTBwdCcsICcx
MXB0JyBvciAnMTJwdCcpLgotI2xhdGV4X2ZvbnRfc2l6ZSA9ICcxMHB0JwotCi0jIEdyb3VwaW5n
IHRoZSBkb2N1bWVudCB0cmVlIGludG8gTGFUZVggZmlsZXMuIExpc3Qgb2YgdHVwbGVzCi0jIChz
b3VyY2Ugc3RhcnQgZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLCBhdXRob3IsIGRvY3VtZW50Y2xh
c3MgW2hvd3RvL21hbnVhbF0pLgotbGF0ZXhfZG9jdW1lbnRzID0gWwotICAoImluZGV4IiwgInNp
eC50ZXgiLCB1InNpeCBEb2N1bWVudGF0aW9uIiwKLSAgIHUiQmVuamFtaW4gUGV0ZXJzb24iLCAi
bWFudWFsIiksCi1dCi0KLSMgVGhlIG5hbWUgb2YgYW4gaW1hZ2UgZmlsZSAocmVsYXRpdmUgdG8g
dGhpcyBkaXJlY3RvcnkpIHRvIHBsYWNlIGF0IHRoZSB0b3Agb2YKLSMgdGhlIHRpdGxlIHBhZ2Uu
Ci0jbGF0ZXhfbG9nbyA9IE5vbmUKLQotIyBGb3IgIm1hbnVhbCIgZG9jdW1lbnRzLCBpZiB0aGlz
IGlzIHRydWUsIHRoZW4gdG9wbGV2ZWwgaGVhZGluZ3MgYXJlIHBhcnRzLAotIyBub3QgY2hhcHRl
cnMuCi0jbGF0ZXhfdXNlX3BhcnRzID0gRmFsc2UKLQotIyBJZiB0cnVlLCBzaG93IHBhZ2UgcmVm
ZXJlbmNlcyBhZnRlciBpbnRlcm5hbCBsaW5rcy4KLSNsYXRleF9zaG93X3BhZ2VyZWZzID0gRmFs
c2UKLQotIyBJZiB0cnVlLCBzaG93IFVSTCBhZGRyZXNzZXMgYWZ0ZXIgZXh0ZXJuYWwgbGlua3Mu
Ci0jbGF0ZXhfc2hvd191cmxzID0gRmFsc2UKLQotIyBBZGRpdGlvbmFsIHN0dWZmIGZvciB0aGUg
TGFUZVggcHJlYW1ibGUuCi0jbGF0ZXhfcHJlYW1ibGUgPSAnJwotCi0jIERvY3VtZW50cyB0byBh
cHBlbmQgYXMgYW4gYXBwZW5kaXggdG8gYWxsIG1hbnVhbHMuCi0jbGF0ZXhfYXBwZW5kaWNlcyA9
IFtdCi0KLSMgSWYgZmFsc2UsIG5vIG1vZHVsZSBpbmRleCBpcyBnZW5lcmF0ZWQuCi0jbGF0ZXhf
ZG9tYWluX2luZGljZXMgPSBUcnVlCi0KLQotIyAtLSBPcHRpb25zIGZvciBtYW51YWwgcGFnZSBv
dXRwdXQgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotIyBP
bmUgZW50cnkgcGVyIG1hbnVhbCBwYWdlLiBMaXN0IG9mIHR1cGxlcwotIyAoc291cmNlIHN0YXJ0
IGZpbGUsIG5hbWUsIGRlc2NyaXB0aW9uLCBhdXRob3JzLCBtYW51YWwgc2VjdGlvbikuCi1tYW5f
cGFnZXMgPSBbCi0gICAgKCJpbmRleCIsICJzaXgiLCB1InNpeCBEb2N1bWVudGF0aW9uIiwKLSAg
ICAgW3UiQmVuamFtaW4gUGV0ZXJzb24iXSwgMSkKLV0KLQotIyAtLSBJbnRlcnNwaGlueCAtLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotaW50ZXJzcGhpbnhfbWFwcGluZyA9IHsicHkyIiA6ICgiaHR0cHM6Ly9kb2NzLnB5dGhv
bi5vcmcvMi8iLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICAgICAgInB5MyIgOiAoImh0dHBz
Oi8vZG9jcy5weXRob24ub3JnLzMvIiwgTm9uZSl9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0aW9uL2lu
ZGV4LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA5ODI3ZTY2OTViNTkzMWU1NTE0NGM4NTg3NmI3ZDZmMjU1Y2YzNDQyLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vaW5kZXgucnN0
CisrKyAvZGV2L251bGwKQEAgLTEsNzg1ICswLDAgQEAKLVNpeDogUHl0aG9uIDIgYW5kIDMgQ29t
cGF0aWJpbGl0eSBMaWJyYXJ5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotCi0uLiBtb2R1bGU6OiBzaXgKLSAgIDpzeW5vcHNpczogUHl0aG9uIDIgYW5kIDMgY29t
cGF0aWJpbGl0eQotCi0uLiBtb2R1bGVhdXRob3I6OiBCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFt
aW5AcHl0aG9uLm9yZz4KLS4uIHNlY3Rpb25hdXRob3I6OiBCZW5qYW1pbiBQZXRlcnNvbiA8YmVu
amFtaW5AcHl0aG9uLm9yZz4KLQotCi1TaXggcHJvdmlkZXMgc2ltcGxlIHV0aWxpdGllcyBmb3Ig
d3JhcHBpbmcgb3ZlciBkaWZmZXJlbmNlcyBiZXR3ZWVuIFB5dGhvbiAyIGFuZAotUHl0aG9uIDMu
ICBJdCBpcyBpbnRlbmRlZCB0byBzdXBwb3J0IGNvZGViYXNlcyB0aGF0IHdvcmsgb24gYm90aCBQ
eXRob24gMiBhbmQgMwotd2l0aG91dCBtb2RpZmljYXRpb24uICBzaXggY29uc2lzdHMgb2Ygb25s
eSBvbmUgUHl0aG9uIGZpbGUsIHNvIGl0IGlzIHBhaW5sZXNzCi10byBjb3B5IGludG8gYSBwcm9q
ZWN0LgotCi1TaXggY2FuIGJlIGRvd25sb2FkZWQgb24gYFB5UGkgPGh0dHA6Ly9weXBpLnB5dGhv
bi5vcmcvcHlwaS9zaXgvPmBfLiAgSXRzIGJ1ZwotdHJhY2tlciBhbmQgY29kZSBob3N0aW5nIGlz
IG9uIGBCaXRCdWNrZXQgPGh0dHA6Ly9iaXRidWNrZXQub3JnL2d1dHdvcnRoL3NpeD5gXy4KLQot
VGhlIG5hbWUsICJzaXgiLCBjb21lcyBmcm9tIHRoZSBmYWN0IHRoYXQgMiozIGVxdWFscyA2LiAg
V2h5IG5vdCBhZGRpdGlvbj8KLU11bHRpcGxpY2F0aW9uIGlzIG1vcmUgcG93ZXJmdWwsIGFuZCwg
YW55d2F5LCAiZml2ZSIgaGFzIGFscmVhZHkgYmVlbiBzbmF0Y2hlZAotYXdheSBieSB0aGUgWm9w
ZSBGaXZlIHByb2plY3QuCi0KLQotSW5kaWNlcyBhbmQgdGFibGVzCi0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotKiA6cmVmOmBnZW5pbmRleGAKLSogOnJlZjpgc2VhcmNoYAotCi0KLVBhY2thZ2UgY29u
dGVudHMKLS0tLS0tLS0tLS0tLS0tLS0KLQotLi4gZGF0YTo6IFBZMgotCi0gICBBIGJvb2xlYW4g
aW5kaWNhdGluZyBpZiB0aGUgY29kZSBpcyBydW5uaW5nIG9uIFB5dGhvbiAyLgotCi0uLiBkYXRh
OjogUFkzCi0KLSAgIEEgYm9vbGVhbiBpbmRpY2F0aW5nIGlmIHRoZSBjb2RlIGlzIHJ1bm5pbmcg
b24gUHl0aG9uIDMuCi0KLQotQ29uc3RhbnRzCi0+Pj4+Pj4+Pj4KLQotU2l4IHByb3ZpZGVzIGNv
bnN0YW50cyB0aGF0IG1heSBkaWZmZXIgYmV0d2VlbiBQeXRob24gdmVyc2lvbnMuICBPbmVzIGVu
ZGluZwotYGBfdHlwZXNgYCBhcmUgbW9zdGx5IHVzZWZ1bCBhcyB0aGUgc2Vjb25kIGFyZ3VtZW50
IHRvIGBgaXNpbnN0YW5jZWBgIG9yCi1gYGlzc3ViY2xhc3NgYC4KLQotCi0uLiBkYXRhOjogY2xh
c3NfdHlwZXMKLQotICAgUG9zc2libGUgY2xhc3MgdHlwZXMuICBJbiBQeXRob24gMiwgdGhpcyBl
bmNvbXBhc3NlcyBvbGQtc3R5bGUgYW5kIG5ldy1zdHlsZQotICAgY2xhc3Nlcy4gIEluIFB5dGhv
biAzLCB0aGlzIGlzIGp1c3QgbmV3LXN0eWxlcy4KLQotCi0uLiBkYXRhOjogaW50ZWdlcl90eXBl
cwotCi0gICBQb3NzaWJsZSBpbnRlZ2VyIHR5cGVzLiAgSW4gUHl0aG9uIDIsIHRoaXMgaXMgOmZ1
bmM6YHB5Mjpsb25nYCBhbmQKLSAgIDpmdW5jOmBweTI6aW50YCwgYW5kIGluIFB5dGhvbiAzLCBq
dXN0IDpmdW5jOmBweTM6aW50YC4KLQotCi0uLiBkYXRhOjogc3RyaW5nX3R5cGVzCi0KLSAgIFBv
c3NpYmxlIHR5cGVzIGZvciB0ZXh0IGRhdGEuICBUaGlzIGlzIDpmdW5jOmBweTI6YmFzZXN0cmlu
Z2AgaW4gUHl0aG9uIDIgYW5kCi0gICA6ZnVuYzpgcHkzOnN0cmAgaW4gUHl0aG9uIDMuCi0KLQot
Li4gZGF0YTo6IHRleHRfdHlwZQotCi0gICBUeXBlIGZvciByZXByZXNlbnRpbmcgKFVuaWNvZGUp
IHRleHR1YWwgZGF0YS4gIFRoaXMgaXMgOmZ1bmM6YHB5Mjp1bmljb2RlYCBpbgotICAgUHl0aG9u
IDIgYW5kIDpmdW5jOmBweTM6c3RyYCBpbiBQeXRob24gMy4KLQotCi0uLiBkYXRhOjogYmluYXJ5
X3R5cGUKLQotICAgVHlwZSBmb3IgcmVwcmVzZW50aW5nIGJpbmFyeSBkYXRhLiAgVGhpcyBpcyA6
ZnVuYzpgcHkyOnN0cmAgaW4gUHl0aG9uIDIgYW5kCi0gICA6ZnVuYzpgcHkzOmJ5dGVzYCBpbiBQ
eXRob24gMy4KLQotCi0uLiBkYXRhOjogTUFYU0laRQotCi0gICBUaGUgbWF4aW11bSAgc2l6ZSBv
ZiBhICBjb250YWluZXIgbGlrZSA6ZnVuYzpgcHkzOmxpc3RgICBvciA6ZnVuYzpgcHkzOmRpY3Rg
LgotICAgVGhpcyAgaXMgIGVxdWl2YWxlbnQgIHRvICA6ZGF0YTpgcHkzOnN5cy5tYXhzaXplYCBp
biAgUHl0aG9uICAyLjYgIGFuZCAgbGF0ZXIKLSAgIChpbmNsdWRpbmcgMy54KS4gICBOb3RlLCB0
aGlzIGlzIHRlbXB0aW5nbHkgIHNpbWlsYXIgdG8sIGJ1dCBub3QgIHRoZSBzYW1lIGFzCi0gICA6
ZGF0YTpgcHkyOnN5cy5tYXhpbnRgICBpbiAgUHl0aG9uICAyLiAgIFRoZXJlIGlzICBubyAgZGly
ZWN0ICBlcXVpdmFsZW50ICB0bwotICAgOmRhdGE6YHB5MjpzeXMubWF4aW50YCBpbiAgUHl0aG9u
IDMgIGJlY2F1c2UgaXRzIGludGVnZXIgIHR5cGUgaGFzICBubyBsaW1pdHMKLSAgIGFzaWRlIGZy
b20gbWVtb3J5LgotCi0KLUhlcmUncyBleGFtcGxlIHVzYWdlIG9mIHRoZSBtb2R1bGU6OgotCi0g
ICBpbXBvcnQgc2l4Ci0KLSAgIGRlZiBkaXNwYXRjaF90eXBlcyh2YWx1ZSk6Ci0gICAgICAgaWYg
aXNpbnN0YW5jZSh2YWx1ZSwgc2l4LmludGVnZXJfdHlwZXMpOgotICAgICAgICAgICBoYW5kbGVf
aW50ZWdlcih2YWx1ZSkKLSAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHNpeC5jbGFzc190
eXBlcyk6Ci0gICAgICAgICAgIGhhbmRsZV9jbGFzcyh2YWx1ZSkKLSAgICAgICBlbGlmIGlzaW5z
dGFuY2UodmFsdWUsIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAgICAgICBoYW5kbGVfc3RyaW5n
KHZhbHVlKQotCi0KLU9iamVjdCBtb2RlbCBjb21wYXRpYmlsaXR5Ci0+Pj4+Pj4+Pj4+Pj4+Pj4+
Pj4+Pj4+Pj4+PgotCi1QeXRob24gMyByZW5hbWVkIHRoZSBhdHRyaWJ1dGVzIG9mIHNldmVyYWwg
aW50ZXJwcmV0ZXIgZGF0YSBzdHJ1Y3R1cmVzLiAgVGhlCi1mb2xsb3dpbmcgYWNjZXNzb3JzIGFy
ZSBhdmFpbGFibGUuICBOb3RlIHRoYXQgdGhlIHJlY29tbWVuZGVkIHdheSB0byBpbnNwZWN0Ci1m
dW5jdGlvbnMgYW5kIG1ldGhvZHMgaXMgdGhlIHN0ZGxpYiA6bW9kOmBweTM6aW5zcGVjdGAgbW9k
dWxlLgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0X3VuYm91bmRfZnVuY3Rpb24obWV0aCkKLQotICAg
R2V0IHRoZSBmdW5jdGlvbiBvdXQgb2YgdW5ib3VuZCBtZXRob2QgKm1ldGgqLiAgSW4gUHl0aG9u
IDMsIHVuYm91bmQgbWV0aG9kcwotICAgZG9uJ3QgZXhpc3QsIHNvIHRoaXMgZnVuY3Rpb24ganVz
dCByZXR1cm5zICptZXRoKiB1bmNoYW5nZWQuICBFeGFtcGxlCi0gICB1c2FnZTo6Ci0KLSAgICAg
IGZyb20gc2l4IGltcG9ydCBnZXRfdW5ib3VuZF9mdW5jdGlvbgotCi0gICAgICBjbGFzcyBYKG9i
amVjdCk6Ci0gICAgICAgICAgZGVmIG1ldGhvZChzZWxmKToKLSAgICAgICAgICAgICAgcGFzcwot
ICAgICAgbWV0aG9kX2Z1bmN0aW9uID0gZ2V0X3VuYm91bmRfZnVuY3Rpb24oWC5tZXRob2QpCi0K
LQotLi4gZnVuY3Rpb246OiBnZXRfbWV0aG9kX2Z1bmN0aW9uKG1ldGgpCi0KLSAgIEdldCB0aGUg
ZnVuY3Rpb24gb3V0IG9mIG1ldGhvZCBvYmplY3QgKm1ldGgqLgotCi0KLS4uIGZ1bmN0aW9uOjog
Z2V0X21ldGhvZF9zZWxmKG1ldGgpCi0KLSAgIEdldCB0aGUgYGBzZWxmYGAgb2YgYm91bmQgbWV0
aG9kICptZXRoKi4KLQotCi0uLiBmdW5jdGlvbjo6IGdldF9mdW5jdGlvbl9jbG9zdXJlKGZ1bmMp
Ci0KLSAgIEdldCB0aGUgY2xvc3VyZSAobGlzdCBvZiBjZWxscykgYXNzb2NpYXRlZCB3aXRoICpm
dW5jKi4gIFRoaXMgaXMgZXF1aXZhbGVudAotICAgdG8gYGBmdW5jLl9fY2xvc3VyZV9fYGAgb24g
UHl0aG9uIDIuNisgYW5kIGBgZnVuYy5mdW5jX2Nsb3N1cmVgYCBvbiBQeXRob24KLSAgIDIuNS4K
LQotCi0uLiBmdW5jdGlvbjo6IGdldF9mdW5jdGlvbl9jb2RlKGZ1bmMpCi0KLSAgIEdldCB0aGUg
Y29kZSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoICpmdW5jKi4gIFRoaXMgaXMgZXF1aXZhbGVudCB0
bwotICAgYGBmdW5jLl9fY29kZV9fYGAgb24gUHl0aG9uIDIuNisgYW5kIGBgZnVuYy5mdW5jX2Nv
ZGVgYCBvbiBQeXRob24gMi41LgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0X2Z1bmN0aW9uX2RlZmF1
bHRzKGZ1bmMpCi0KLSAgIEdldCB0aGUgZGVmYXVsdHMgdHVwbGUgYXNzb2NpYXRlZCB3aXRoICpm
dW5jKi4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bwotICAgYGBmdW5jLl9fZGVmYXVsdHNfX2BgIG9u
IFB5dGhvbiAyLjYrIGFuZCBgYGZ1bmMuZnVuY19kZWZhdWx0c2BgIG9uIFB5dGhvbgotICAgMi41
LgotCi0KLS4uIGZ1bmN0aW9uOjogZ2V0X2Z1bmN0aW9uX2dsb2JhbHMoZnVuYykKLQotICAgR2V0
IHRoZSBnbG9iYWxzIG9mICpmdW5jKi4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYGZ1bmMuX19n
bG9iYWxzX19gYCBvbgotICAgUHl0aG9uIDIuNisgYW5kIGBgZnVuYy5mdW5jX2dsb2JhbHNgYCBv
biBQeXRob24gMi41LgotCi0KLS4uIGZ1bmN0aW9uOjogbmV4dChpdCkKLSAgICAgICAgICAgICAg
YWR2YW5jZV9pdGVyYXRvcihpdCkKLQotICAgR2V0IHRoZSBuZXh0IGl0ZW0gb2YgaXRlcmF0b3Ig
Kml0Ki4gIDpleGM6YHB5MzpTdG9wSXRlcmF0aW9uYCBpcyByYWlzZWQgaWYKLSAgIHRoZSBpdGVy
YXRvciBpcyBleGhhdXN0ZWQuICBUaGlzIGlzIGEgcmVwbGFjZW1lbnQgZm9yIGNhbGxpbmcgYGBp
dC5uZXh0KClgYAotICAgaW4gUHl0aG9uIDIgYW5kIGBgbmV4dChpdClgYCBpbiBQeXRob24gMy4K
LQotCi0uLiBmdW5jdGlvbjo6IGNhbGxhYmxlKG9iaikKLQotICAgQ2hlY2sgaWYgKm9iaiogY2Fu
IGJlIGNhbGxlZC4gIE5vdGUgYGBjYWxsYWJsZWBgIGhhcyByZXR1cm5lZCBpbiBQeXRob24gMy4y
LAotICAgc28gdXNpbmcgc2l4J3MgdmVyc2lvbiBpcyBvbmx5IG5lY2Vzc2FyeSB3aGVuIHN1cHBv
cnRpbmcgUHl0aG9uIDMuMCBvciAzLjEuCi0KLQotLi4gZnVuY3Rpb246OiBpdGVya2V5cyhkaWN0
aW9uYXJ5LCAqKmt3YXJncykKLQotICAgUmV0dXJucyBhbiBpdGVyYXRvciBvdmVyICpkaWN0aW9u
YXJ5KlwncyBrZXlzLiBUaGlzIHJlcGxhY2VzCi0gICBgYGRpY3Rpb25hcnkuaXRlcmtleXMoKWBg
IG9uIFB5dGhvbiAyIGFuZCBgYGRpY3Rpb25hcnkua2V5cygpYGAgb24KLSAgIFB5dGhvbiAzLiAg
Kmt3YXJncyogYXJlIHBhc3NlZCB0aHJvdWdoIHRvIHRoZSB1bmRlcmx5aW5nIG1ldGhvZC4KLQot
Ci0uLiBmdW5jdGlvbjo6IGl0ZXJ2YWx1ZXMoZGljdGlvbmFyeSwgKiprd2FyZ3MpCi0KLSAgIFJl
dHVybnMgYW4gaXRlcmF0b3Igb3ZlciAqZGljdGlvbmFyeSpcJ3MgdmFsdWVzLiBUaGlzIHJlcGxh
Y2VzCi0gICBgYGRpY3Rpb25hcnkuaXRlcnZhbHVlcygpYGAgb24gUHl0aG9uIDIgYW5kIGBgZGlj
dGlvbmFyeS52YWx1ZXMoKWBgIG9uCi0gICBQeXRob24gMy4gICprd2FyZ3MqIGFyZSBwYXNzZWQg
dGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBtZXRob2QuCi0KLQotLi4gZnVuY3Rpb246OiBpdGVy
aXRlbXMoZGljdGlvbmFyeSwgKiprd2FyZ3MpCi0KLSAgIFJldHVybnMgYW4gaXRlcmF0b3Igb3Zl
ciAqZGljdGlvbmFyeSpcJ3MgaXRlbXMuIFRoaXMgcmVwbGFjZXMKLSAgIGBgZGljdGlvbmFyeS5p
dGVyaXRlbXMoKWBgIG9uIFB5dGhvbiAyIGFuZCBgYGRpY3Rpb25hcnkuaXRlbXMoKWBgIG9uCi0g
ICBQeXRob24gMy4gICprd2FyZ3MqIGFyZSBwYXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJseWlu
ZyBtZXRob2QuCi0KLQotLi4gZnVuY3Rpb246OiBpdGVybGlzdHMoZGljdGlvbmFyeSwgKiprd2Fy
Z3MpCi0KLSAgIENhbGxzIGBgZGljdGlvbmFyeS5pdGVybGlzdHMoKWBgIG9uIFB5dGhvbiAyIGFu
ZCBgYGRpY3Rpb25hcnkubGlzdHMoKWBgIG9uCi0gICBQeXRob24gMy4gIE5vIGJ1aWx0aW4gUHl0
aG9uIG1hcHBpbmcgdHlwZSBoYXMgc3VjaCBhIG1ldGhvZDsgdGhpcyBtZXRob2QgaXMKLSAgIGlu
dGVuZGVkIGZvciB1c2Ugd2l0aCBtdWx0aS12YWx1ZWQgZGljdGlvbmFyaWVzIGxpa2UgYFdlcmt6
ZXVnJ3MKLSAgIDxodHRwOi8vd2Vya3pldWcucG9jb28ub3JnL2RvY3MvZGF0YXN0cnVjdHVyZXMv
I3dlcmt6ZXVnLmRhdGFzdHJ1Y3R1cmVzLk11bHRpRGljdD5gXy4KLSAgICprd2FyZ3MqIGFyZSBw
YXNzZWQgdGhyb3VnaCB0byB0aGUgdW5kZXJseWluZyBtZXRob2QuCi0KLQotLi4gZnVuY3Rpb246
OiB2aWV3a2V5cyhkaWN0aW9uYXJ5KQotCi0gICBSZXR1cm4gYSB2aWV3IG92ZXIgKmRpY3Rpb25h
cnkqXCdzIGtleXMuIFRoaXMgcmVwbGFjZXMKLSAgIDptZXRoOmBweTI6ZGljdC52aWV3a2V5c2Ag
b24gUHl0aG9uIDIuNyBhbmQgOm1ldGg6YHB5MzpkaWN0LmtleXNgIG9uCi0gICBQeXRob24gMy4K
LQotCi0uLiBmdW5jdGlvbjo6IHZpZXd2YWx1ZXMoZGljdGlvbmFyeSkKLQotICAgUmV0dXJuIGEg
dmlldyBvdmVyICpkaWN0aW9uYXJ5KlwncyB2YWx1ZXMuIFRoaXMgcmVwbGFjZXMKLSAgIDptZXRo
OmBweTI6ZGljdC52aWV3dmFsdWVzYCBvbiBQeXRob24gMi43IGFuZCA6bWV0aDpgcHkzOmRpY3Qu
dmFsdWVzYCBvbgotICAgUHl0aG9uIDMuCi0KLQotLi4gZnVuY3Rpb246OiB2aWV3aXRlbXMoZGlj
dGlvbmFyeSkKLQotICAgUmV0dXJuIGEgdmlldyBvdmVyICpkaWN0aW9uYXJ5KlwncyBpdGVtcy4g
VGhpcyByZXBsYWNlcwotICAgOm1ldGg6YHB5MjpkaWN0LnZpZXdpdGVtc2Agb24gUHl0aG9uIDIu
NyBhbmQgOm1ldGg6YHB5MzpkaWN0Lml0ZW1zYCBvbgotICAgUHl0aG9uIDMuCi0KLQotLi4gZnVu
Y3Rpb246OiBjcmVhdGVfYm91bmRfbWV0aG9kKGZ1bmMsIG9iaikKLQotICAgUmV0dXJuIGEgbWV0
aG9kIG9iamVjdCB3cmFwcGluZyAqZnVuYyogYW5kIGJvdW5kIHRvICpvYmoqLiAgT24gYm90aCBQ
eXRob24gMgotICAgYW5kIDMsIHRoaXMgd2lsbCByZXR1cm4gYSA6ZnVuYzpgcHkzOnR5cGVzLk1l
dGhvZFR5cGVgIG9iamVjdC4gIFRoZSByZWFzb24KLSAgIHRoaXMgd3JhcHBlciBleGlzdHMgaXMg
dGhhdCBvbiBQeXRob24gMiwgdGhlIGBgTWV0aG9kVHlwZWBgIGNvbnN0cnVjdG9yCi0gICByZXF1
aXJlcyB0aGUgKm9iaioncyBjbGFzcyB0byBiZSBwYXNzZWQuCi0KLQotLi4gY2xhc3M6OiBJdGVy
YXRvcgotCi0gICBBIGNsYXNzIGZvciBtYWtpbmcgcG9ydGFibGUgaXRlcmF0b3JzLiBUaGUgaW50
ZW50aW9uIGlzIHRoYXQgaXQgYmUgc3ViY2xhc3NlZAotICAgYW5kIHN1YmNsYXNzZXMgcHJvdmlk
ZSBhIGBgX19uZXh0X19gYCBtZXRob2QuIEluIFB5dGhvbiAyLCA6Y2xhc3M6YEl0ZXJhdG9yYAot
ICAgaGFzIG9uZSBtZXRob2Q6IGBgbmV4dGBgLiBJdCBzaW1wbHkgZGVsZWdhdGVzIHRvIGBgX19u
ZXh0X19gYC4gQW4gYWx0ZXJuYXRlCi0gICB3YXkgdG8gZG8gdGhpcyB3b3VsZCBiZSB0byBzaW1w
bHkgYWxpYXMgYGBuZXh0YGAgdG8gYGBfX25leHRfX2BgLiBIb3dldmVyLAotICAgdGhpcyBpbnRl
cmFjdHMgYmFkbHkgd2l0aCBzdWJjbGFzc2VzIHRoYXQgb3ZlcnJpZGUKLSAgIGBgX19uZXh0X19g
YC4gOmNsYXNzOmBJdGVyYXRvcmAgaXMgZW1wdHkgb24gUHl0aG9uIDMuIChJbiBmYWN0LCBpdCBp
cyBqdXN0Ci0gICBhbGlhc2VkIHRvIDpjbGFzczpgcHkzOm9iamVjdGAuKQotCi0KLS4uIGZ1bmN0
aW9uOjogd3JhcHMod3JhcHBlZCwgYXNzaWduZWQ9ZnVuY3Rvb2xzLldSQVBQRVJfQVNTSUdOTUVO
VFMsIHVwZGF0ZWQ9ZnVuY3Rvb2xzLldSQVBQRVJfVVBEQVRFUykKLQotICAgVGhpcyBpcyBleGFj
dGx5IHRoZSA6ZnVuYzpgcHkzOmZ1bmN0b29scy53cmFwc2AgZGVjb3JhdG9yLCBidXQgaXQgc2V0
cyB0aGUKLSAgIGBgX193cmFwcGVkX19gYCBhdHRyaWJ1dGUgb24gd2hhdCBpdCBkZWNvcmF0ZXMg
YXMgOmZ1bmM6YHB5MzpmdW5jdG9vbHMud3JhcHNgCi0gICBkb2VzIG9uIFB5dGhvbiB2ZXJzaW9u
cyBhZnRlciAzLjIuCi0KLQotU3ludGF4IGNvbXBhdGliaWxpdHkKLT4+Pj4+Pj4+Pj4+Pj4+Pj4+
Pj4+Ci0KLVRoZXNlIGZ1bmN0aW9ucyBzbW9vdGggb3ZlciBvcGVyYXRpb25zIHdoaWNoIGhhdmUg
ZGlmZmVyZW50IHN5bnRheGVzIGJldHdlZW4KLVB5dGhvbiAyIGFuZCAzLgotCi0KLS4uIGZ1bmN0
aW9uOjogZXhlY18oY29kZSwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSkKLQotICAgRXhlY3V0
ZSAqY29kZSogaW4gdGhlIHNjb3BlIG9mICpnbG9iYWxzKiBhbmQgKmxvY2FscyouICAqY29kZSog
Y2FuIGJlIGEKLSAgIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0LiAgSWYgKmdsb2JhbHMqIG9yICps
b2NhbHMqIGFyZSBub3QgZ2l2ZW4sIHRoZXkgd2lsbAotICAgZGVmYXVsdCB0byB0aGUgc2NvcGUg
b2YgdGhlIGNhbGxlci4gIElmIGp1c3QgKmdsb2JhbHMqIGlzIGdpdmVuLCBpdCB3aWxsIGFsc28K
LSAgIGJlIHVzZWQgYXMgKmxvY2FscyouCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBQeXRob24g
MydzIDpmdW5jOmBweTM6ZXhlY2AgZG9lc24ndCB0YWtlIGtleXdvcmQgYXJndW1lbnRzLCBzbyBj
YWxsaW5nCi0gICAgICA6ZnVuYzpgZXhlY2Agd2l0aCB0aGVtIHNob3VsZCBiZSBhdm9pZGVkLgot
Ci0KLS4uIGZ1bmN0aW9uOjogcHJpbnRfKCphcmdzLCAqLCBmaWxlPXN5cy5zdGRvdXQsIGVuZD0i
XFxuIiwgc2VwPSIgIikKLQotICAgUHJpbnQgKmFyZ3MqIGludG8gKmZpbGUqLiAgRWFjaCBhcmd1
bWVudCB3aWxsIGJlIHNlcGFyYXRlZCB3aXRoICpzZXAqIGFuZAotICAgKmVuZCogd2lsbCBiZSB3
cml0dGVuIHRvIHRoZSBmaWxlIGFmdGVyIHRoZSBsYXN0IGFyZ3VtZW50IGlzIHByaW50ZWQuCi0K
LSAgIC4uIG5vdGU6OgotCi0gICAgICBJbiBQeXRob24gMiwgdGhpcyBmdW5jdGlvbiBpbWl0YXRl
cyBQeXRob24gMydzIDpmdW5jOmBweTM6cHJpbnRgIGJ5IG5vdAotICAgICAgaGF2aW5nIHNvZnRz
cGFjZSBzdXBwb3J0LiAgSWYgeW91IGRvbid0IGtub3cgd2hhdCB0aGF0IGlzLCB5b3UncmUgcHJv
YmFibHkKLSAgICAgIG9rLiA6KQotCi0KLS4uIGZ1bmN0aW9uOjogcmFpc2VfZnJvbShleGNfdmFs
dWUsIGV4Y192YWx1ZV9mcm9tKQotCi0gICBSYWlzZSBhbiBleGNlcHRpb24gZnJvbSBhIGNvbnRl
eHQuICBPbiBQeXRob24gMywgdGhpcyBpcyBlcXVpdmFsZW50IHRvCi0gICBgYHJhaXNlIGV4Y192
YWx1ZSBmcm9tIGV4Y192YWx1ZV9mcm9tYGAuICBPbiBQeXRob24gMiwgd2hpY2ggZG9lcyBub3Qg
c3VwcG9ydAotICAgZXhjZXB0aW9uIGNoYWluaW5nLCBpdCBpcyBlcXVpdmFsZW50IHRvIGBgcmFp
c2UgZXhjX3ZhbHVlYGAuCi0KLQotLi4gZnVuY3Rpb246OiByZXJhaXNlKGV4Y190eXBlLCBleGNf
dmFsdWUsIGV4Y190cmFjZWJhY2s9Tm9uZSkKLQotICAgUmVyYWlzZSBhbiBleGNlcHRpb24sIHBv
c3NpYmx5IHdpdGggYSBkaWZmZXJlbnQgdHJhY2ViYWNrLiAgSW4gdGhlIHNpbXBsZQotICAgY2Fz
ZSwgYGByZXJhaXNlKCpzeXMuZXhjX2luZm8oKSlgYCB3aXRoIGFuIGFjdGl2ZSBleGNlcHRpb24g
KGluIGFuIGV4Y2VwdAotICAgYmxvY2spIHJlcmFpc2VzIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiB3
aXRoIHRoZSBsYXN0IHRyYWNlYmFjay4gIEEgZGlmZmVyZW50Ci0gICB0cmFjZWJhY2sgY2FuIGJl
IHNwZWNpZmllZCB3aXRoIHRoZSAqZXhjX3RyYWNlYmFjayogcGFyYW1ldGVyLiAgTm90ZSB0aGF0
Ci0gICBzaW5jZSB0aGUgZXhjZXB0aW9uIHJlcmFpc2luZyBpcyBkb25lIHdpdGhpbiB0aGUgOmZ1
bmM6YHJlcmFpc2VgIGZ1bmN0aW9uLAotICAgUHl0aG9uIHdpbGwgYXR0YWNoIHRoZSBjYWxsIGZy
YW1lIG9mIDpmdW5jOmByZXJhaXNlYCB0byB3aGF0ZXZlciB0cmFjZWJhY2sgaXMKLSAgIHJhaXNl
ZC4KLQotCi0uLiBmdW5jdGlvbjo6IHdpdGhfbWV0YWNsYXNzKG1ldGFjbGFzcywgKmJhc2VzKQot
Ci0gICBDcmVhdGUgYSBuZXcgY2xhc3Mgd2l0aCBiYXNlIGNsYXNzZXMgKmJhc2VzKiBhbmQgbWV0
YWNsYXNzICptZXRhY2xhc3MqLiAgVGhpcwotICAgaXMgZGVzaWduZWQgdG8gYmUgdXNlZCBpbiBj
bGFzcyBkZWNsYXJhdGlvbnMgbGlrZSB0aGlzOiA6OgotCi0gICAgICBmcm9tIHNpeCBpbXBvcnQg
d2l0aF9tZXRhY2xhc3MKLQotICAgICAgY2xhc3MgTWV0YSh0eXBlKToKLSAgICAgICAgICBwYXNz
Ci0KLSAgICAgIGNsYXNzIEJhc2Uob2JqZWN0KToKLSAgICAgICAgICBwYXNzCi0KLSAgICAgIGNs
YXNzIE15Q2xhc3Mod2l0aF9tZXRhY2xhc3MoTWV0YSwgQmFzZSkpOgotICAgICAgICAgIHBhc3MK
LQotICAgQW5vdGhlciB3YXkgdG8gc2V0IGEgbWV0YWNsYXNzIG9uIGEgY2xhc3MgaXMgd2l0aCB0
aGUgOmZ1bmM6YGFkZF9tZXRhY2xhc3NgCi0gICBkZWNvcmF0b3IuCi0KLQotLi4gZnVuY3Rpb246
OiBhZGRfbWV0YWNsYXNzKG1ldGFjbGFzcykKLQotICAgQ2xhc3MgZGVjb3JhdG9yIHRoYXQgcmVw
bGFjZXMgYSBub3JtYWxseS1jb25zdHJ1Y3RlZCBjbGFzcyB3aXRoIGEKLSAgIG1ldGFjbGFzcy1j
b25zdHJ1Y3RlZCBvbmUuICBFeGFtcGxlIHVzYWdlOiA6OgotCi0gICAgICAgQGFkZF9tZXRhY2xh
c3MoTWV0YSkKLSAgICAgICBjbGFzcyBNeUNsYXNzKG9iamVjdCk6Ci0gICAgICAgICAgIHBhc3MK
LQotICAgVGhhdCBjb2RlIHByb2R1Y2VzIGEgY2xhc3MgZXF1aXZhbGVudCB0byA6OgotCi0gICAg
ICAgY2xhc3MgTXlDbGFzcyhvYmplY3QsIG1ldGFjbGFzcz1NZXRhKToKLSAgICAgICAgICAgcGFz
cwotCi0gICBvbiBQeXRob24gMyBvciA6OgotCi0gICAgICAgY2xhc3MgTXlDbGFzcyhvYmplY3Qp
OgotICAgICAgICAgICBfX21ldGFjbGFzc19fID0gTXlNZXRhCi0KLSAgIG9uIFB5dGhvbiAyLgot
Ci0gICBOb3RlIHRoYXQgY2xhc3MgZGVjb3JhdG9ycyByZXF1aXJlIFB5dGhvbiAyLjYuIEhvd2V2
ZXIsIHRoZSBlZmZlY3Qgb2YgdGhlCi0gICBkZWNvcmF0b3IgY2FuIGJlIGVtdWxhdGVkIG9uIFB5
dGhvbiAyLjUgbGlrZSBzbzo6Ci0KLSAgICAgICBjbGFzcyBNeUNsYXNzKG9iamVjdCk6Ci0gICAg
ICAgICAgIHBhc3MKLSAgICAgICBNeUNsYXNzID0gYWRkX21ldGFjbGFzcyhNZXRhKShNeUNsYXNz
KQotCi0KLUJpbmFyeSBhbmQgdGV4dCBkYXRhCi0+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+PgotCi1QeXRo
b24gMyBlbmZvcmNlcyB0aGUgZGlzdGluY3Rpb24gYmV0d2VlbiBieXRlIHN0cmluZ3MgYW5kIHRl
eHQgc3RyaW5ncyBmYXIgbW9yZQotcmlnb3Jpb3VzbHkgdGhhbiBQeXRob24gMiBkb2VzOyBiaW5h
cnkgZGF0YSBjYW5ub3QgYmUgYXV0b21hdGljYWxseSBjb2VyY2VkIHRvCi1vciBmcm9tIHRleHQg
ZGF0YS4gIHNpeCBwcm92aWRlcyBzZXZlcmFsIGZ1bmN0aW9ucyB0byBhc3Npc3QgaW4gY2xhc3Np
ZnlpbmcKLXN0cmluZyBkYXRhIGluIGFsbCBQeXRob24gdmVyc2lvbnMuCi0KLQotLi4gZnVuY3Rp
b246OiBiKGRhdGEpCi0KLSAgIEEgImZha2UiIGJ5dGVzIGxpdGVyYWwuICAqZGF0YSogc2hvdWxk
IGFsd2F5cyBiZSBhIG5vcm1hbCBzdHJpbmcgbGl0ZXJhbC4gIEluCi0gICBQeXRob24gMiwgOmZ1
bmM6YGJgIHJldHVybnMgYSA4LWJpdCBzdHJpbmcuICBJbiBQeXRob24gMywgKmRhdGEqIGlzIGVu
Y29kZWQKLSAgIHdpdGggdGhlIGxhdGluLTEgZW5jb2RpbmcgdG8gYnl0ZXMuCi0KLQotICAgLi4g
bm90ZTo6Ci0KLSAgICAgIFNpbmNlIGFsbCBQeXRob24gdmVyc2lvbnMgMi42IGFuZCBhZnRlciBz
dXBwb3J0IHRoZSBgYGJgYCBwcmVmaXgsCi0gICAgICA6ZnVuYzpgYmAsIGNvZGUgd2l0aG91dCAy
LjUgc3VwcG9ydCBkb2Vzbid0IG5lZWQgOmZ1bmM6YGJgLgotCi0KLS4uIGZ1bmN0aW9uOjogdSh0
ZXh0KQotCi0gICBBICJmYWtlIiB1bmljb2RlIGxpdGVyYWwuICAqdGV4dCogc2hvdWxkIGFsd2F5
cyBiZSBhIG5vcm1hbCBzdHJpbmcgbGl0ZXJhbC4KLSAgIEluIFB5dGhvbiAyLCA6ZnVuYzpgdWAg
cmV0dXJucyB1bmljb2RlLCBhbmQgaW4gUHl0aG9uIDMsIGEgc3RyaW5nLiAgQWxzbywgaW4KLSAg
IFB5dGhvbiAyLCB0aGUgc3RyaW5nIGlzIGRlY29kZWQgd2l0aCB0aGUgYGB1bmljb2RlLWVzY2Fw
ZWBgIGNvZGVjLCB3aGljaAotICAgYWxsb3dzIHVuaWNvZGUgZXNjYXBlcyB0byBiZSB1c2VkIGlu
IGl0LgotCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBJbiBQeXRob24gMy4zLCB0aGUgYGB1YGAg
cHJlZml4IGhhcyBiZWVuIHJlaW50cm9kdWNlZC4gQ29kZSB0aGF0IG9ubHkKLSAgICAgIHN1cHBv
cnRzIFB5dGhvbiAzIHZlcnNpb25zIGdyZWF0ZXIgdGhhbiAzLjMgdGh1cyBkb2VzIG5vdCBuZWVk
Ci0gICAgICA6ZnVuYzpgdWAuCi0KLSAgIC4uIG5vdGU6OgotCi0gICAgICBPbiBQeXRob24gMiwg
OmZ1bmM6YHVgIGRvZXNuJ3Qga25vdyB3aGF0IHRoZSBlbmNvZGluZyBvZiB0aGUgbGl0ZXJhbAot
ICAgICAgaXMuIEVhY2ggYnl0ZSBpcyBjb252ZXJ0ZWQgZGlyZWN0bHkgdG8gdGhlIHVuaWNvZGUg
Y29kZXBvaW50IG9mIHRoZSBzYW1lCi0gICAgICB2YWx1ZS4gQmVjYXVzZSBvZiB0aGlzLCBpdCdz
IG9ubHkgc2FmZSB0byB1c2UgOmZ1bmM6YHVgIHdpdGggc3RyaW5ncyBvZgotICAgICAgQVNDSUkg
ZGF0YS4KLQotCi0uLiBmdW5jdGlvbjo6IHVuaWNocihjKQotCi0gICBSZXR1cm4gdGhlIChVbmlj
b2RlKSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjb2RlcG9pbnQgKmMqLiAgVGhpcyBpcwotICAg
ZXF1aXZhbGVudCB0byA6ZnVuYzpgcHkyOnVuaWNocmAgb24gUHl0aG9uIDIgYW5kIDpmdW5jOmBw
eTM6Y2hyYCBvbiBQeXRob24gMy4KLQotCi0uLiBmdW5jdGlvbjo6IGludDJieXRlKGkpCi0KLSAg
IENvbnZlcnRzICppKiB0byBhIGJ5dGUuICAqaSogbXVzdCBiZSBpbiBgYHJhbmdlKDAsIDI1Nilg
YC4gIFRoaXMgaXMKLSAgIGVxdWl2YWxlbnQgdG8gOmZ1bmM6YHB5MjpjaHJgIGluIFB5dGhvbiAy
IGFuZCBgYGJ5dGVzKChpLCkpYGAgaW4gUHl0aG9uIDMuCi0KLQotLi4gZnVuY3Rpb246OiBieXRl
MmludChicykKLQotICAgQ29udmVydHMgdGhlIGZpcnN0IGJ5dGUgb2YgKmJzKiB0byBhbiBpbnRl
Z2VyLiAgVGhpcyBpcyBlcXVpdmFsZW50IHRvCi0gICBgYG9yZChic1swXSlgYCBvbiBQeXRob24g
MiBhbmQgYGBic1swXWBgIG9uIFB5dGhvbiAzLgotCi0KLS4uIGZ1bmN0aW9uOjogaW5kZXhieXRl
cyhidWYsIGkpCi0KLSAgIFJldHVybiB0aGUgYnl0ZSBhdCBpbmRleCAqaSogb2YgKmJ1ZiogYXMg
YW4gaW50ZWdlci4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bwotICAgaW5kZXhpbmcgYSBieXRlcyBv
YmplY3QgaW4gUHl0aG9uIDMuCi0KLQotLi4gZnVuY3Rpb246OiBpdGVyYnl0ZXMoYnVmKQotCi0g
ICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBieXRlcyBpbiAqYnVmKiBhcyBpbnRlZ2Vycy4gIFRo
aXMgaXMgZXF1aXZhbGVudCB0bwotICAgYSBieXRlcyBvYmplY3QgaXRlcmF0b3IgaW4gUHl0aG9u
IDMuCi0KLQotLi4gZGF0YTo6IFN0cmluZ0lPCi0KLSAgIFRoaXMgaXMgYW4gZmFrZSBmaWxlIG9i
amVjdCBmb3IgdGV4dHVhbCBkYXRhLiAgSXQncyBhbiBhbGlhcyBmb3IKLSAgIDpjbGFzczpgcHky
OlN0cmluZ0lPLlN0cmluZ0lPYCBpbiBQeXRob24gMiBhbmQgOmNsYXNzOmBweTM6aW8uU3RyaW5n
SU9gIGluCi0gICBQeXRob24gMy4KLQotCi0uLiBkYXRhOjogQnl0ZXNJTwotCi0gICBUaGlzIGlz
IGEgZmFrZSBmaWxlIG9iamVjdCBmb3IgYmluYXJ5IGRhdGEuICBJbiBQeXRob24gMiwgaXQncyBh
biBhbGlhcyBmb3IKLSAgIDpjbGFzczpgcHkyOlN0cmluZ0lPLlN0cmluZ0lPYCwgYnV0IGluIFB5
dGhvbiAzLCBpdCdzIGFuIGFsaWFzIGZvcgotICAgOmNsYXNzOmBweTM6aW8uQnl0ZXNJT2AuCi0K
LQotUmVuYW1lZCBtb2R1bGVzIGFuZCBhdHRyaWJ1dGVzIGNvbXBhdGliaWxpdHkKLT4+Pj4+Pj4+
Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Pj4+Ci0KLS4uIG1vZHVsZTo6IHNpeC5t
b3ZlcwotICAgOnN5bm9wc2lzOiBSZW5hbWVkIG1vZHVsZXMgYW5kIGF0dHJpYnV0ZXMgY29tcGF0
aWJpbGl0eQotCi1QeXRob24gMyByZW9yZ2FuaXplZCB0aGUgc3RhbmRhcmQgbGlicmFyeSBhbmQg
bW92ZWQgc2V2ZXJhbCBmdW5jdGlvbnMgdG8KLWRpZmZlcmVudCBtb2R1bGVzLiAgU2l4IHByb3Zp
ZGVzIGEgY29uc2lzdGVudCBpbnRlcmZhY2UgdG8gdGhlbSB0aHJvdWdoIHRoZSBmYWtlCi06bW9k
OmBzaXgubW92ZXNgIG1vZHVsZS4gIEZvciBleGFtcGxlLCB0byBsb2FkIHRoZSBtb2R1bGUgZm9y
IHBhcnNpbmcgSFRNTCBvbgotUHl0aG9uIDIgb3IgMywgd3JpdGU6OgotCi0gICBmcm9tIHNpeC5t
b3ZlcyBpbXBvcnQgaHRtbF9wYXJzZXIKLQotU2ltaWxhcmx5LCB0byBnZXQgdGhlIGZ1bmN0aW9u
IHRvIHJlbG9hZCBtb2R1bGVzLCB3aGljaCB3YXMgbW92ZWQgZnJvbSB0aGUKLWJ1aWx0aW4gbW9k
dWxlIHRvIHRoZSBgYGltcGBgIG1vZHVsZSwgdXNlOjoKLQotICAgZnJvbSBzaXgubW92ZXMgaW1w
b3J0IHJlbG9hZF9tb2R1bGUKLQotRm9yIHRoZSBtb3N0IHBhcnQsIDptb2Q6YHNpeC5tb3Zlc2Ag
YWxpYXNlcyBhcmUgdGhlIG5hbWVzIG9mIHRoZSBtb2R1bGVzIGluCi1QeXRob24gMy4gIFdoZW4g
dGhlIG5ldyBQeXRob24gMyBuYW1lIGlzIGEgcGFja2FnZSwgdGhlIGNvbXBvbmVudHMgb2YgdGhl
IG5hbWUKLWFyZSBzZXBhcmF0ZWQgYnkgdW5kZXJzY29yZXMuICBGb3IgZXhhbXBsZSwgYGBodG1s
LnBhcnNlcmBgIGJlY29tZXMKLWBgaHRtbF9wYXJzZXJgYC4gIEluIHNvbWUgY2FzZXMgd2hlcmUg
c2V2ZXJhbCBtb2R1bGVzIGhhdmUgYmVlbiBjb21iaW5lZCwgdGhlCi1QeXRob24gMiBuYW1lIGlz
IHJldGFpbmVkLiAgVGhpcyBpcyBzbyB0aGUgYXBwcm9wcmlhdGUgbW9kdWxlcyBjYW4gYmUgZm91
bmQgd2hlbgotcnVubmluZyBvbiBQeXRob24gMi4gIEZvciBleGFtcGxlLCBgYEJhc2VIVFRQU2Vy
dmVyYGAgd2hpY2ggaXMgaW4KLWBgaHR0cC5zZXJ2ZXJgYCBpbiBQeXRob24gMyBpcyBhbGlhc2Vk
IGFzIGBgQmFzZUhUVFBTZXJ2ZXJgYC4KLQotU29tZSBtb2R1bGVzIHdoaWNoIGhhZCB0d28gaW1w
bGVtZW50YXRpb25zIGhhdmUgYmVlbiBtZXJnZWQgaW4gUHl0aG9uIDMuICBGb3IKLWV4YW1wbGUs
IGBgY1BpY2tsZWBgIG5vIGxvbmdlciBleGlzdHMgaW4gUHl0aG9uIDM7IGl0IHdhcyBtZXJnZWQg
d2l0aAotYGBwaWNrbGVgYC4gIEluIHRoZXNlIGNhc2VzLCBmZXRjaGluZyB0aGUgZmFzdCB2ZXJz
aW9uIHdpbGwgbG9hZCB0aGUgZmFzdCBvbmUgb24KLVB5dGhvbiAyIGFuZCB0aGUgbWVyZ2VkIG1v
ZHVsZSBpbiBQeXRob24gMy4KLQotVGhlIDptb2Q6YHB5Mjp1cmxsaWJgLCA6bW9kOmBweTI6dXJs
bGliMmAsIGFuZCA6bW9kOmBweTI6dXJscGFyc2VgIG1vZHVsZXMgaGF2ZQotYmVlbiBjb21iaW5l
ZCBpbiB0aGUgOm1vZDpgcHkzOnVybGxpYmAgcGFja2FnZSBpbiBQeXRob24gMy4gIFRoZQotOm1v
ZDpgc2l4Lm1vdmVzLnVybGxpYmAgcGFja2FnZSBpcyBhIHZlcnNpb24taW5kZXBlbmRlbnQgbG9j
YXRpb24gZm9yIHRoaXMKLWZ1bmN0aW9uYWxpdHk7IGl0cyBzdHJ1Y3R1cmUgbWltaWNzIHRoZSBz
dHJ1Y3R1cmUgb2YgdGhlIFB5dGhvbiAzCi06bW9kOmBweTM6dXJsbGliYCBwYWNrYWdlLgotCi0u
LiBub3RlOjoKLQotICAgSW4gb3JkZXIgdG8gbWFrZSBpbXBvcnRzIG9mIHRoZSBmb3JtOjoKLQot
ICAgICBmcm9tIHNpeC5tb3Zlcy5jUGlja2xlIGltcG9ydCBsb2FkcwotCi0gICB3b3JrLCBzaXgg
cGxhY2VzIHNwZWNpYWwgcHJveHkgb2JqZWN0cyBpbiBpbiA6ZGF0YTpgcHkzOnN5cy5tb2R1bGVz
YC4gVGhlc2UKLSAgIHByb3hpZXMgbGF6aWx5IGxvYWQgdGhlIHVuZGVybHlpbmcgbW9kdWxlIHdo
ZW4gYW4gYXR0cmlidXRlIGlzIGZldGNoZWQuIFRoaXMKLSAgIHdpbGwgZmFpbCBpZiB0aGUgdW5k
ZXJseWluZyBtb2R1bGUgaXMgbm90IGF2YWlsYWJsZSBpbiB0aGUgUHl0aG9uCi0gICBpbnRlcnBy
ZXRlci4gRm9yIGV4YW1wbGUsIGBgc3lzLm1vZHVsZXNbInNpeC5tb3Zlcy53aW5yZWciXS5Mb2Fk
S2V5YGAgd291bGQKLSAgIGZhaWwgb24gYW55IG5vbi1XaW5kb3dzIHBsYXRmb3JtLiBVbmZvcnR1
bmF0ZWx5LCBzb21lIGFwcGxpY2F0aW9ucyB0cnkgdG8KLSAgIGxvYWQgYXR0cmlidXRlcyBvbiBl
dmVyeSBtb2R1bGUgaW4gOmRhdGE6YHB5MzpzeXMubW9kdWxlc2AuIHNpeCBtaXRpZ2F0ZXMKLSAg
IHRoaXMgcHJvYmxlbSBmb3Igc29tZSBhcHBsaWNhdGlvbnMgYnkgcHJldGVuZGluZyBhdHRyaWJ1
dGVzIG9uIHVuaW1wb3J0YWJsZQotICAgbW9kdWxlcyBkb24ndCBleGlzdC4gVGhpcyBoYWNrIGRv
ZXNuJ3Qgd29yayBpbiBldmVyeSBjYXNlLCB0aG91Z2guIElmIHlvdSBhcmUKLSAgIGVuY291bnRl
cmluZyBwcm9ibGVtcyB3aXRoIHRoZSBsYXp5IG1vZHVsZXMgYW5kIGRvbid0IHVzZSBhbnkgZnJv
bSBpbXBvcnRzCi0gICBkaXJlY3RseSBmcm9tIGBgc2l4Lm1vdmVzYGAgbW9kdWxlcywgeW91IGNh
biB3b3JrYXJvdW5kIHRoZSBpc3N1ZSBieSByZW1vdmluZwotICAgdGhlIHNpeCBwcm94eSBtb2R1
bGVzOjoKLQotICAgICBkID0gW25hbWUgZm9yIG5hbWUgaW4gc3lzLm1vZHVsZXMgaWYgbmFtZS5z
dGFydHN3aXRoKCJzaXgubW92ZXMuIildCi0gICAgIGZvciBuYW1lIGluIGQ6Ci0gICAgICAgICBk
ZWwgc3lzLm1vZHVsZXNbbmFtZV0KLQotU3VwcG9ydGVkIHJlbmFtZXM6Ci0KLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBOYW1lICAgICAgICAg
ICAgICAgICAgICAgICAgIHwgUHl0aG9uIDIgbmFtZSAgICAgICAgICAgICAgICAgICAgICAgfCBQ
eXRob24gMyBuYW1lICAgICAgICAgICAgICAgICAgICAgICB8Ci0rPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLXwgYGBidWlsdGluc2BgICAgICAgICAg
ICAgICAgICB8IDptb2Q6YHB5MjpfX2J1aWx0aW5fX2AgICAgICAgICAgICAgIHwgOm1vZDpgcHkz
OmJ1aWx0aW5zYCAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgY29uZmlncGFyc2VyYGAgICAgICAgICAgICAg
fCA6bW9kOmBweTI6Q29uZmlnUGFyc2VyYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzpjb25maWdw
YXJzZXJgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotfCBgYGNvcHlyZWdgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpg
cHkyOmNvcHlfcmVnYCAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6Y29weXJlZ2AgICAgICAg
ICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLXwgYGBjUGlja2xlYGAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpjUGlj
a2xlYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnBpY2tsZWAgICAgICAgICAgICAgICAg
ICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci18IGBgY1N0cmluZ0lPYGAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOmNTdHJpbmdJTy5T
dHJpbmdJT2AgICAgICB8IDpjbGFzczpgcHkzOmlvLlN0cmluZ0lPYCAgICAgICAgICAgIHwKLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGRi
bV9nbnVgYCAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjpnZGJtYCAgICAgICAgICAgICAg
ICAgICAgfCA6Y2xhc3M6YHB5MzpkYm0uZ251YCAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBfZHVtbXlfdGhy
ZWFkYGAgICAgICAgICAgICB8IDptb2Q6YHB5MjpkdW1teV90aHJlYWRgICAgICAgICAgICAgIHwg
Om1vZDpgcHkzOl9kdW1teV90aHJlYWRgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgZW1haWxfbWltZV9tdWx0aXBh
cnRgYCAgICAgfCA6bW9kOmBweTI6ZW1haWwuTUlNRU11bHRpcGFydGAgICAgICB8IDptb2Q6YHB5
MzplbWFpbC5taW1lLm11bHRpcGFydGAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGVtYWlsX21pbWVfbm9ubXVsdGlwYXJ0YGAg
IHwgOm1vZDpgcHkyOmVtYWlsLk1JTUVOb25NdWx0aXBhcnRgICAgfCA6bW9kOmBweTM6ZW1haWwu
bWltZS5ub25tdWx0aXBhcnRgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBlbWFpbF9taW1lX3RleHRgYCAgICAgICAgICB8IDptb2Q6
YHB5MjplbWFpbC5NSU1FVGV4dGAgICAgICAgICAgIHwgOm1vZDpgcHkzOmVtYWlsLm1pbWUudGV4
dGAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rCi18IGBgZW1haWxfbWltZV9iYXNlYGAgICAgICAgICAgfCA6bW9kOmBweTI6ZW1h
aWwuTUlNRUJhc2VgICAgICAgICAgICB8IDptb2Q6YHB5MzplbWFpbC5taW1lLmJhc2VgICAgICAg
ICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
KwotfCBgYGZpbHRlcmBgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjppdGVydG9vbHMu
aWZpbHRlcmAgICAgICAgfCA6ZnVuYzpgcHkzOmZpbHRlcmAgICAgICAgICAgICAgICAgICB8Ci0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBm
aWx0ZXJmYWxzZWBgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6aXRlcnRvb2xzLmlmaWx0ZXJm
YWxzZWAgIHwgOmZ1bmM6YHB5MzppdGVydG9vbHMuZmlsdGVyZmFsc2VgICAgfAotKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgaHR0cF9jb29r
aWVqYXJgYCAgICAgICAgICAgfCA6bW9kOmBweTI6Y29va2llbGliYCAgICAgICAgICAgICAgICB8
IDptb2Q6YHB5MzpodHRwLmNvb2tpZWphcmAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYGh0dHBfY29va2llc2BgICAg
ICAgICAgICAgIHwgOm1vZDpgcHkyOkNvb2tpZWAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBw
eTM6aHR0cC5jb29raWVzYCAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBodG1sX2VudGl0aWVzYGAgICAgICAgICAg
ICB8IDptb2Q6YHB5MjpodG1sZW50aXR5ZGVmc2AgICAgICAgICAgIHwgOm1vZDpgcHkzOmh0bWwu
ZW50aXRpZXNgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgaHRtbF9wYXJzZXJgYCAgICAgICAgICAgICAgfCA6bW9k
OmBweTI6SFRNTFBhcnNlcmAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpodG1sLnBhcnNlcmAg
ICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKwotfCBgYGh0dHBfY2xpZW50YGAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOmh0
dHBsaWJgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6aHR0cC5jbGllbnRgICAgICAgICAg
ICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSsKLXwgYGBCYXNlSFRUUFNlcnZlcmBgICAgICAgICAgICB8IDptb2Q6YHB5MjpCYXNlSFRUUFNl
cnZlcmAgICAgICAgICAgIHwgOm1vZDpgcHkzOmh0dHAuc2VydmVyYCAgICAgICAgICAgICAgfAot
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBg
Q0dJSFRUUFNlcnZlcmBgICAgICAgICAgICAgfCA6bW9kOmBweTI6Q0dJSFRUUFNlcnZlcmAgICAg
ICAgICAgICB8IDptb2Q6YHB5MzpodHRwLnNlcnZlcmAgICAgICAgICAgICAgIHwKLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYFNpbXBsZUhU
VFBTZXJ2ZXJgYCAgICAgICAgIHwgOm1vZDpgcHkyOlNpbXBsZUhUVFBTZXJ2ZXJgICAgICAgICAg
fCA6bW9kOmBweTM6aHR0cC5zZXJ2ZXJgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBpbnB1dGBgICAgICAgICAg
ICAgICAgICAgICB8IDpmdW5jOmBweTI6cmF3X2lucHV0YCAgICAgICAgICAgICAgIHwgOmZ1bmM6
YHB5MzppbnB1dGAgICAgICAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgaW50ZXJuYGAgICAgICAgICAgICAgICAg
ICAgfCA6ZnVuYzpgcHkyOmludGVybmAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTM6c3lz
LmludGVybmAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYG1hcGBgICAgICAgICAgICAgICAgICAgICAgIHwgOmZ1
bmM6YHB5MjppdGVydG9vbHMuaW1hcGAgICAgICAgICAgfCA6ZnVuYzpgcHkzOm1hcGAgICAgICAg
ICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSsKLXwgYGBxdWV1ZWBgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MjpR
dWV1ZWAgICAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnF1ZXVlYCAgICAgICAgICAgICAg
ICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rCi18IGBgcmFuZ2VgYCAgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOnhyYW5nZWAg
ICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTM6cmFuZ2VgICAgICAgICAgICAgICAgICAgIHwK
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBg
YHJlZHVjZWBgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6YHB5MjpyZWR1Y2VgICAgICAgICAg
ICAgICAgICAgfCA6ZnVuYzpgcHkzOmZ1bmN0b29scy5yZWR1Y2VgICAgICAgICB8Ci0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGByZWxvYWRf
bW9kdWxlYGAgICAgICAgICAgICB8IDpmdW5jOmBweTI6cmVsb2FkYCAgICAgICAgICAgICAgICAg
IHwgOmZ1bmM6YHB5MzppbXAucmVsb2FkYCAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgcmVwcmxpYmBgICAgICAg
ICAgICAgICAgICAgfCA6bW9kOmBweTI6cmVwcmAgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6
YHB5MzpyZXBybGliYCAgICAgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHNobGV4X3F1b3RlYGAgICAgICAgICAg
ICAgIHwgOm1vZDpgcHkyOnBpcGVzLnF1b3RlYCAgICAgICAgICAgICAgfCA6bW9kOmBweTM6c2hs
ZXgucXVvdGVgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGBzb2NrZXRzZXJ2ZXJgYCAgICAgICAgICAgICB8IDpt
b2Q6YHB5MjpTb2NrZXRTZXJ2ZXJgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnNvY2tldHNlcnZl
cmAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rCi18IGBgX3RocmVhZGBgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTI6
dGhyZWFkYCAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5MzpfdGhyZWFkYCAgICAgICAgICAg
ICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKwotfCBgYHRraW50ZXJgYCAgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOlRraW50ZXJg
ICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlcmAgICAgICAgICAgICAgICAgICB8
Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwg
YGB0a2ludGVyX2RpYWxvZ2BgICAgICAgICAgICB8IDptb2Q6YHB5MjpEaWFsb2dgICAgICAgICAg
ICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIuZGlhbG9nYCAgICAgICAgICAgfAotKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRl
cl9maWxlZGlhbG9nYGAgICAgICAgfCA6bW9kOmBweTI6RmlsZURpYWxvZ2AgICAgICAgICAgICAg
ICB8IDptb2Q6YHB5Mzp0a2ludGVyLkZpbGVEaWFsb2dgICAgICAgIHwKLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfc2Nyb2xs
ZWR0ZXh0YGAgICAgIHwgOm1vZDpgcHkyOlNjcm9sbGVkVGV4dGAgICAgICAgICAgICAgfCA6bW9k
OmBweTM6dGtpbnRlci5zY3JvbGxlZHRleHRgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX3NpbXBsZWRpYWxvZ2Bg
ICAgICB8IDptb2Q6YHB5MjpTaW1wbGVEaWFsb2dgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRr
aW50ZXIuc2ltcGxlZGlhbG9nYCAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl90dGtgYCAgICAgICAgICAgICAgfCA6
bW9kOmBweTI6dHRrYCAgICAgICAgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLnR0
a2AgICAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfdGl4YGAgICAgICAgICAgICAgIHwgOm1vZDpgcHky
OlRpeGAgICAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci50aXhgICAgICAg
ICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSsKLXwgYGB0a2ludGVyX2NvbnN0YW50c2BgICAgICAgICB8IDptb2Q6YHB5MjpUa2NvbnN0
YW50c2AgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIuY29uc3RhbnRzYCAgICAgICAg
fAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18
IGBgdGtpbnRlcl9kbmRgYCAgICAgICAgICAgICAgfCA6bW9kOmBweTI6VGtkbmRgICAgICAgICAg
ICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLmRuZGAgICAgICAgICAgICAgIHwKLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50
ZXJfY29sb3JjaG9vc2VyYGAgICAgIHwgOm1vZDpgcHkyOnRrQ29sb3JDaG9vc2VyYCAgICAgICAg
ICAgfCA6bW9kOmBweTM6dGtpbnRlci5jb2xvcmNob29zZXJgICAgICB8Ci0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX2NvbW1v
bmRpYWxvZ2BgICAgICB8IDptb2Q6YHB5Mjp0a0NvbW1vbkRpYWxvZ2AgICAgICAgICAgIHwgOm1v
ZDpgcHkzOnRraW50ZXIuY29tbW9uZGlhbG9nYCAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdGtpbnRlcl90a2ZpbGVkaWFsb2dg
YCAgICAgfCA6bW9kOmBweTI6dGtGaWxlRGlhbG9nYCAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0
a2ludGVyLmZpbGVkaWFsb2dgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHRraW50ZXJfZm9udGBgICAgICAgICAgICAgIHwg
Om1vZDpgcHkyOnRrRm9udGAgICAgICAgICAgICAgICAgICAgfCA6bW9kOmBweTM6dGtpbnRlci5m
b250YCAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLSsKLXwgYGB0a2ludGVyX21lc3NhZ2Vib3hgYCAgICAgICB8IDptb2Q6YHB5
Mjp0a01lc3NhZ2VCb3hgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnRraW50ZXIubWVzc2FnZWJv
eGAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0rCi18IGBgdGtpbnRlcl90a3NpbXBsZWRpYWxvZ2BgICAgfCA6bW9kOmBweTI6dGtTaW1w
bGVEaWFsb2dgICAgICAgICAgICB8IDptb2Q6YHB5Mzp0a2ludGVyLnNpbXBsZWRpYWxvZ2AgICAg
IHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwot
fCBgYHVybGxpYi5wYXJzZWBgICAgICAgICAgICAgIHwgU2VlIDptb2Q6YHNpeC5tb3Zlcy51cmxs
aWIucGFyc2VgICAgfCA6bW9kOmBweTM6dXJsbGliLnBhcnNlYCAgICAgICAgICAgICB8Ci0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB1cmxs
aWIuZXJyb3JgYCAgICAgICAgICAgICB8IFNlZSA6bW9kOmBzaXgubW92ZXMudXJsbGliLmVycm9y
YCAgIHwgOm1vZDpgcHkzOnVybGxpYi5lcnJvcmAgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgdXJsbGliLnJlcXVl
c3RgYCAgICAgICAgICAgfCBTZWUgOm1vZDpgc2l4Lm1vdmVzLnVybGxpYi5yZXF1ZXN0YCB8IDpt
b2Q6YHB5Mzp1cmxsaWIucmVxdWVzdGAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHVybGxpYi5yZXNwb25zZWBgICAg
ICAgICAgIHwgU2VlIDptb2Q6YHNpeC5tb3Zlcy51cmxsaWIucmVzcG9uc2VgfCA6bW9kOmBweTM6
dXJsbGliLnJlc3BvbnNlYCAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB1cmxsaWIucm9ib3RwYXJzZXJgYCAgICAgICB8
IDptb2Q6YHB5Mjpyb2JvdHBhcnNlcmAgICAgICAgICAgICAgIHwgOm1vZDpgcHkzOnVybGxpYi5y
b2JvdHBhcnNlcmAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0rCi18IGBgdXJsbGliX3JvYm90cGFyc2VyYGAgICAgICAgfCA6bW9kOmBw
eTI6cm9ib3RwYXJzZXJgICAgICAgICAgICAgICB8IDptb2Q6YHB5Mzp1cmxsaWIucm9ib3RwYXJz
ZXJgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tKwotfCBgYFVzZXJEaWN0YGAgICAgICAgICAgICAgICAgIHwgOmNsYXNzOmBweTI6VXNl
ckRpY3QuVXNlckRpY3RgICAgICAgfCA6Y2xhc3M6YHB5Mzpjb2xsZWN0aW9ucy5Vc2VyRGljdGAg
ICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsK
LXwgYGBVc2VyTGlzdGBgICAgICAgICAgICAgICAgICB8IDpjbGFzczpgcHkyOlVzZXJMaXN0LlVz
ZXJMaXN0YCAgICAgIHwgOmNsYXNzOmBweTM6Y29sbGVjdGlvbnMuVXNlckxpc3RgICAgfAotKy0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgVXNl
clN0cmluZ2BgICAgICAgICAgICAgICAgfCA6Y2xhc3M6YHB5MjpVc2VyU3RyaW5nLlVzZXJTdHJp
bmdgICB8IDpjbGFzczpgcHkzOmNvbGxlY3Rpb25zLlVzZXJTdHJpbmdgIHwKLSstLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotfCBgYHdpbnJlZ2BgICAg
ICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkyOl93aW5yZWdgICAgICAgICAgICAgICAgICAgfCA6
bW9kOmBweTM6d2lucmVnYCAgICAgICAgICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLXwgYGB4bWxycGNfY2xpZW50YGAgICAg
ICAgICAgICB8IDptb2Q6YHB5Mjp4bWxycGNsaWJgICAgICAgICAgICAgICAgIHwgOm1vZDpgcHkz
OnhtbHJwYy5jbGllbnRgICAgICAgICAgICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IGBgeG1scnBjX3NlcnZlcmBgICAgICAgICAgICAg
fCA6bW9kOmBweTI6U2ltcGxlWE1MUlBDU2VydmVyYCAgICAgICB8IDptb2Q6YHB5Mzp4bWxycGMu
c2VydmVyYCAgICAgICAgICAgIHwKLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tKwotfCBgYHhyYW5nZWBgICAgICAgICAgICAgICAgICAgIHwgOmZ1bmM6
YHB5Mjp4cmFuZ2VgICAgICAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkzOnJhbmdlYCAgICAgICAg
ICAgICAgICAgICB8Ci0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLSsKLXwgYGB6aXBgYCAgICAgICAgICAgICAgICAgICAgICB8IDpmdW5jOmBweTI6aXRl
cnRvb2xzLml6aXBgICAgICAgICAgIHwgOmZ1bmM6YHB5Mzp6aXBgICAgICAgICAgICAgICAgICAg
ICAgfAotKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0r
Ci18IGBgemlwX2xvbmdlc3RgYCAgICAgICAgICAgICAgfCA6ZnVuYzpgcHkyOml0ZXJ0b29scy5p
emlwX2xvbmdlc3RgICB8IDpmdW5jOmBweTM6aXRlcnRvb2xzLnppcF9sb25nZXN0YCAgIHwKLSst
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotCi11cmxs
aWIgcGFyc2UKLTw8PDw8PDw8PDw8PAotCi0uLiBtb2R1bGU6OiBzaXgubW92ZXMudXJsbGliLnBh
cnNlCi0gICA6c3lub3BzaXM6IFN0dWZmIGZyb20gOm1vZDpgcHkyOnVybHBhcnNlYCBhbmQgOm1v
ZDpgcHkyOnVybGxpYmAgaW4gUHl0aG9uIDIgYW5kIDptb2Q6YHB5Mzp1cmxsaWIucGFyc2VgIGlu
IFB5dGhvbiAzCi0KLUNvbnRhaW5zIGZ1bmN0aW9ucyBmcm9tIFB5dGhvbiAzJ3MgOm1vZDpgcHkz
OnVybGxpYi5wYXJzZWAgYW5kIFB5dGhvbiAyJ3M6Ci0KLTptb2Q6YHB5Mjp1cmxwYXJzZWA6Ci0K
LSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS5QYXJzZVJlc3VsdGAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJz
ZS5TcGxpdFJlc3VsdGAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51cmxwYXJzZWAKLSogOmZ1bmM6
YHB5Mjp1cmxwYXJzZS51cmx1bnBhcnNlYAotKiA6ZnVuYzpgcHkyOnVybHBhcnNlLnBhcnNlX3Fz
YAotKiA6ZnVuYzpgcHkyOnVybHBhcnNlLnBhcnNlX3FzbGAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJz
ZS51cmxqb2luYAotKiA6ZnVuYzpgcHkyOnVybHBhcnNlLnVybGRlZnJhZ2AKLSogOmZ1bmM6YHB5
Mjp1cmxwYXJzZS51cmxzcGxpdGAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51cmx1bnNwbGl0YAot
KiA6ZnVuYzpgcHkyOnVybHBhcnNlLnNwbGl0cXVlcnlgCi0qIDpmdW5jOmBweTI6dXJscGFyc2Uu
dXNlc19mcmFnbWVudGAKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51c2VzX25ldGxvY2AKLSogOmZ1
bmM6YHB5Mjp1cmxwYXJzZS51c2VzX3BhcmFtc2AKLSogOmZ1bmM6YHB5Mjp1cmxwYXJzZS51c2Vz
X3F1ZXJ5YAotKiA6ZnVuYzpgcHkyOnVybHBhcnNlLnVzZXNfcmVsYXRpdmVgCi0KLWFuZCA6bW9k
OmBweTI6dXJsbGliYDoKLQotKiA6ZnVuYzpgcHkyOnVybGxpYi5xdW90ZWAKLSogOmZ1bmM6YHB5
Mjp1cmxsaWIucXVvdGVfcGx1c2AKLSogOmZ1bmM6YHB5Mjp1cmxsaWIuc3BsaXR0YWdgCi0qIDpm
dW5jOmBweTI6dXJsbGliLnNwbGl0dXNlcmAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudW5xdW90ZWAK
LSogOmZ1bmM6YHB5Mjp1cmxsaWIudW5xdW90ZV9wbHVzYAotKiA6ZnVuYzpgcHkyOnVybGxpYi51
cmxlbmNvZGVgCi0KLQotdXJsbGliIGVycm9yCi08PDw8PDw8PDw8PDwKLQotLi4gbW9kdWxlOjog
c2l4Lm1vdmVzLnVybGxpYi5lcnJvcgotICAgOnN5bm9wc2lzOiBTdHVmZiBmcm9tIDptb2Q6YHB5
Mjp1cmxsaWJgIGFuZCA6bW9kOmBweTI6dXJsbGliMmAgaW4gUHl0aG9uIDIgYW5kIDptb2Q6YHB5
Mzp1cmxsaWIuZXJyb3JgIGluIFB5dGhvbiAzCi0KLUNvbnRhaW5zIGV4Y2VwdGlvbnMgZnJvbSBQ
eXRob24gMydzIDptb2Q6YHB5Mzp1cmxsaWIuZXJyb3JgIGFuZCBQeXRob24gMidzOgotCi06bW9k
OmBweTI6dXJsbGliYDoKLQotKiA6ZXhjOmBweTI6dXJsbGliLkNvbnRlbnRUb29TaG9ydEVycm9y
YAotCi1hbmQgOm1vZDpgcHkyOnVybGxpYjJgOgotCi0qIDpleGM6YHB5Mjp1cmxsaWIyLlVSTEVy
cm9yYAotKiA6ZXhjOmBweTI6dXJsbGliMi5IVFRQRXJyb3JgCi0KLQotdXJsbGliIHJlcXVlc3QK
LTw8PDw8PDw8PDw8PDw8Ci0KLS4uIG1vZHVsZTo6IHNpeC5tb3Zlcy51cmxsaWIucmVxdWVzdAot
ICAgOnN5bm9wc2lzOiBTdHVmZiBmcm9tIDptb2Q6YHB5Mjp1cmxsaWJgIGFuZCA6bW9kOmBweTI6
dXJsbGliMmAgaW4gUHl0aG9uIDIgYW5kIDptb2Q6YHB5Mzp1cmxsaWIucmVxdWVzdGAgaW4gUHl0
aG9uIDMKLQotQ29udGFpbnMgaXRlbXMgZnJvbSBQeXRob24gMydzIDptb2Q6YHB5Mzp1cmxsaWIu
cmVxdWVzdGAgYW5kIFB5dGhvbiAyJ3M6Ci0KLTptb2Q6YHB5Mjp1cmxsaWJgOgotCi0qIDpmdW5j
OmBweTI6dXJsbGliLnBhdGhuYW1lMnVybGAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudXJsMnBhdGhu
YW1lYAotKiA6ZnVuYzpgcHkyOnVybGxpYi5nZXRwcm94aWVzYAotKiA6ZnVuYzpgcHkyOnVybGxp
Yi51cmxyZXRyaWV2ZWAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIudXJsY2xlYW51cGAKLSogOmNsYXNz
OmBweTI6dXJsbGliLlVSTG9wZW5lcmAKLSogOmNsYXNzOmBweTI6dXJsbGliLkZhbmN5VVJMb3Bl
bmVyYAotKiA6ZnVuYzpgcHkyOnVybGxpYi5wcm94eV9ieXBhc3NgCi0KLWFuZCA6bW9kOmBweTI6
dXJsbGliMmA6Ci0KLSogOmZ1bmM6YHB5Mjp1cmxsaWIyLnVybG9wZW5gCi0qIDpmdW5jOmBweTI6
dXJsbGliMi5pbnN0YWxsX29wZW5lcmAKLSogOmZ1bmM6YHB5Mjp1cmxsaWIyLmJ1aWxkX29wZW5l
cmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5SZXF1ZXN0YAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIy
Lk9wZW5lckRpcmVjdG9yYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBEZWZhdWx0RXJyb3JI
YW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBSZWRpcmVjdEhhbmRsZXJgCi0qIDpj
bGFzczpgcHkyOnVybGxpYjIuSFRUUENvb2tpZVByb2Nlc3NvcmAKLSogOmNsYXNzOmBweTI6dXJs
bGliMi5Qcm94eUhhbmRsZXJgCi0qIDpjbGFzczpgcHkyOnVybGxpYjIuQmFzZUhhbmRsZXJgCi0q
IDpjbGFzczpgcHkyOnVybGxpYjIuSFRUUFBhc3N3b3JkTWdyYAotKiA6Y2xhc3M6YHB5Mjp1cmxs
aWIyLkhUVFBQYXNzd29yZE1ncldpdGhEZWZhdWx0UmVhbG1gCi0qIDpjbGFzczpgcHkyOnVybGxp
YjIuQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBC
YXNpY0F1dGhIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLlByb3h5QmFzaWNBdXRoSGFu
ZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5BYnN0cmFjdERpZ2VzdEF1dGhIYW5kbGVyYAot
KiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBEaWdlc3RBdXRoSGFuZGxlcmAKLSogOmNsYXNzOmBw
eTI6dXJsbGliMi5Qcm94eURpZ2VzdEF1dGhIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIy
LkhUVFBIYW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkhUVFBTSGFuZGxlcmAKLSogOmNs
YXNzOmBweTI6dXJsbGliMi5GaWxlSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5GVFBI
YW5kbGVyYAotKiA6Y2xhc3M6YHB5Mjp1cmxsaWIyLkNhY2hlRlRQSGFuZGxlcmAKLSogOmNsYXNz
OmBweTI6dXJsbGliMi5Vbmtub3duSGFuZGxlcmAKLSogOmNsYXNzOmBweTI6dXJsbGliMi5IVFRQ
RXJyb3JQcm9jZXNzb3JgCi0KLQotdXJsbGliIHJlc3BvbnNlCi08PDw8PDw8PDw8PDw8PDwKLQot
Li4gbW9kdWxlOjogc2l4Lm1vdmVzLnVybGxpYi5yZXNwb25zZQotICAgOnN5bm9wc2lzOiBTdHVm
ZiBmcm9tIDptb2Q6YHB5Mjp1cmxsaWJgIGluIFB5dGhvbiAyIGFuZCA6bW9kOmBweTM6dXJsbGli
LnJlc3BvbnNlYCBpbiBQeXRob24gMwotCi1Db250YWlucyBjbGFzc2VzIGZyb20gUHl0aG9uIDMn
cyA6bW9kOmBweTM6dXJsbGliLnJlc3BvbnNlYCBhbmQgUHl0aG9uIDInczoKLQotOm1vZDpgcHky
OnVybGxpYmA6Ci0KLSogOmNsYXNzOmBweTI6dXJsbGliLmFkZGJhc2VgCi0qIDpjbGFzczpgcHky
OnVybGxpYi5hZGRjbG9zZWhvb2tgCi0qIDpjbGFzczpgcHkyOnVybGxpYi5hZGRpbmZvYAotKiA6
Y2xhc3M6YHB5Mjp1cmxsaWIuYWRkaW5mb3VybGAKLQotCi1BZHZhbmNlZCAtIEN1c3RvbWl6aW5n
IHJlbmFtZXMKLTw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PDw8PAotCi0uLiBjdXJyZW50bW9k
dWxlOjogc2l4Ci0KLUl0IGlzIHBvc3NpYmxlIHRvIGFkZCBhZGRpdGlvbmFsIG5hbWVzIHRvIHRo
ZSA6bW9kOmBzaXgubW92ZXNgIG5hbWVzcGFjZS4KLQotCi0uLiBmdW5jdGlvbjo6IGFkZF9tb3Zl
KGl0ZW0pCi0KLSAgIEFkZCAqaXRlbSogdG8gdGhlIDptb2Q6YHNpeC5tb3Zlc2AgbWFwcGluZy4g
ICppdGVtKiBzaG91bGQgYmUgYQotICAgOmNsYXNzOmBNb3ZlZEF0dHJpYnV0ZWAgb3IgOmNsYXNz
OmBNb3ZlZE1vZHVsZWAgaW5zdGFuY2UuCi0KLQotLi4gZnVuY3Rpb246OiByZW1vdmVfbW92ZShu
YW1lKQotCi0gICBSZW1vdmUgdGhlIDptb2Q6YHNpeC5tb3Zlc2AgbWFwcGluZyBjYWxsZWQgKm5h
bWUqLiAgKm5hbWUqIHNob3VsZCBiZSBhCi0gICBzdHJpbmcuCi0KLQotSW5zdGFuY2VzIG9mIHRo
ZSBmb2xsb3dpbmcgY2xhc3NlcyBjYW4gYmUgcGFzc2VkIHRvIDpmdW5jOmBhZGRfbW92ZWAuICBO
ZWl0aGVyCi1oYXZlIGFueSBwdWJsaWMgbWVtYmVycy4KLQotCi0uLiBjbGFzczo6IE1vdmVkTW9k
dWxlKG5hbWUsIG9sZF9tb2QsIG5ld19tb2QpCi0KLSAgIENyZWF0ZSBhIG1hcHBpbmcgZm9yIDpt
b2Q6YHNpeC5tb3Zlc2AgY2FsbGVkICpuYW1lKiB0aGF0IHJlZmVyZW5jZXMgZGlmZmVyZW50Ci0g
ICBtb2R1bGVzIGluIFB5dGhvbiAyIGFuZCAzLiAgKm9sZF9tb2QqIGlzIHRoZSBuYW1lIG9mIHRo
ZSBQeXRob24gMiBtb2R1bGUuCi0gICAqbmV3X21vZCogaXMgdGhlIG5hbWUgb2YgdGhlIFB5dGhv
biAzIG1vZHVsZS4KLQotCi0uLiBjbGFzczo6IE1vdmVkQXR0cmlidXRlKG5hbWUsIG9sZF9tb2Qs
IG5ld19tb2QsIG9sZF9hdHRyPU5vbmUsIG5ld19hdHRyPU5vbmUpCi0KLSAgIENyZWF0ZSBhIG1h
cHBpbmcgZm9yIDptb2Q6YHNpeC5tb3Zlc2AgY2FsbGVkICpuYW1lKiB0aGF0IHJlZmVyZW5jZXMg
ZGlmZmVyZW50Ci0gICBhdHRyaWJ1dGVzIGluIFB5dGhvbiAyIGFuZCAzLiAgKm9sZF9tb2QqIGlz
IHRoZSBuYW1lIG9mIHRoZSBQeXRob24gMiBtb2R1bGUuCi0gICAqbmV3X21vZCogaXMgdGhlIG5h
bWUgb2YgdGhlIFB5dGhvbiAzIG1vZHVsZS4gIElmICpuZXdfYXR0ciogaXMgbm90IGdpdmVuLCBp
dAotICAgZGVmYXVsdHMgdG8gKm9sZF9hdHRyKi4gIElmIG5laXRoZXIgaXMgZ2l2ZW4sIHRoZXkg
Ym90aCBkZWZhdWx0IHRvICpuYW1lKi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3NpeC9kb2N1bWVudGF0aW9uL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBmMGQ3Yjc4ZmI1MTYwODVjYTBhNzNiMDQ1NDgwMDZlN2E1MjFlZjMxLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc2l4L2RvY3VtZW50YXRpb24vdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzCi0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9kb2N1bWVudGF0
aW9uL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvZG9jdW1lbnRhdGlvbi9pbmRleC5yc3QK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvc2l4L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9zaXgvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDYxOTg2NTNlZDBmZTJmYWVlOGFmZjY3YTRjYjNlZmQ5N2VhMzA3YjcuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zaXgvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NpeC9zaXgucHljCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0
aWxzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9zc2x1dGlscy9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTQ2YmU4NTFkNjRmYjA5N2MyODdiODZmYjUxYTE5Nzg0NmY0MmMzNS4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL19faW5pdF9fLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1pbXBvcnQgb3BlbnNzbAotaW1wb3J0IHByZWdlbmVy
YXRlZAotZnJvbSBiYXNlIGltcG9ydCBOb1NTTEVudmlyb25tZW50Ci1mcm9tIG9wZW5zc2wgaW1w
b3J0IE9wZW5TU0xFbnZpcm9ubWVudAotZnJvbSBwcmVnZW5lcmF0ZWQgaW1wb3J0IFByZWdlbmVy
YXRlZFNTTEVudmlyb25tZW50Ci0KLWVudmlyb25tZW50cyA9IHsibm9uZSI6IE5vU1NMRW52aXJv
bm1lbnQsCi0gICAgICAgICAgICAgICAgIm9wZW5zc2wiOiBPcGVuU1NMRW52aXJvbm1lbnQsCi0g
ICAgICAgICAgICAgICAgInByZWdlbmVyYXRlZCI6IFByZWdlbmVyYXRlZFNTTEVudmlyb25tZW50
fQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy9zc2x1dGlscy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9iYXNlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyMzdhZTVmMjNjY2YxZmE5OGNkMzk2YWY4ODY5YjI3NGZjOWUzNDY1Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvYmFzZS5weQorKysg
L2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLWNsYXNzIE5vU1NMRW52aXJvbm1lbnQob2JqZWN0
KToKLSAgICBzc2xfZW5hYmxlZCA9IEZhbHNlCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgKmFy
Z3MsICoqa3dhcmdzKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToK
LSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywgKipr
d2FyZ3MpOgotICAgICAgICBwYXNzCi0KLSAgICBkZWYgaG9zdF9jZXJ0X3BhdGgoc2VsZiwgaG9z
dCk6Ci0gICAgICAgIHJldHVybiBOb25lLCBOb25lCi0KLSAgICBkZWYgY2FfY2VydF9wYXRoKHNl
bGYpOgotICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9vcGVuc3NsLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy9v
cGVuc3NsLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWMyNDcxYWFlZTM5OWU1
N2QwNDI1YWIxZjM2M2U3MDE1ZDQ1YTFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvc3NsdXRpbHMvb3BlbnNzbC5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMiArMCww
IEBACi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgb3MKLWltcG9ydCByYW5kb20KLWltcG9ydCBz
aHV0aWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWZyb20gZGF0ZXRpbWUg
aW1wb3J0IGRhdGV0aW1lLCB0aW1lZGVsdGEKLQotIyBBbW91bnQgb2YgdGltZSBiZXlvbmQgdGhl
IHByZXNlbnQgdG8gY29uc2lkZXIgY2VydGlmaWNhdGVzICJleHBpcmVkLiIgVGhpcwotIyBhbGxv
d3MgY2VydGlmaWNhdGVzIHRvIGJlIHByb2FjdGl2ZWx5IHJlLWdlbmVyYXRlZCBpbiB0aGUgImJ1
ZmZlciIgcGVyaW9kCi0jIHByaW9yIHRvIHRoZWlyIGV4YWN0IGV4cGlyYXRpb24gdGltZS4KLUNF
UlRfRVhQSVJZX0JVRkZFUiA9IGRpY3QoaG91cnM9NikKLQotY2xhc3MgT3BlblNTTChvYmplY3Qp
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgYmFzZV9wYXRoLCBjb25m
X3BhdGgsIGhvc3RzLCBkdXJhdGlvbiwKLSAgICAgICAgICAgICAgICAgYmFzZV9jb25mX3BhdGg9
Tm9uZSk6Ci0gICAgICAgICIiIkNvbnRleHQgbWFuYWdlciBmb3IgaW50ZXJhY3Rpbmcgd2l0aCBP
cGVuU1NMLgotICAgICAgICBDcmVhdGVzIGEgY29uZmlnIGZpbGUgZm9yIHRoZSBkdXJhdGlvbiBv
ZiB0aGUgY29udGV4dC4KLQotICAgICAgICA6cGFyYW0gbG9nZ2VyOiBzdGRsaWIgbG9nZ2VyIG9y
IHB5dGhvbiBzdHJ1Y3R1cmVkIGxvZ2dlcgotICAgICAgICA6cGFyYW0gYmluYXJ5OiBwYXRoIHRv
IG9wZW5zc2wgYmluYXJ5Ci0gICAgICAgIDpwYXJhbSBiYXNlX3BhdGg6IHBhdGggdG8gZGlyZWN0
b3J5IGZvciBzdG9yaW5nIGNlcnRpZmljYXRlcwotICAgICAgICA6cGFyYW0gY29uZl9wYXRoOiBw
YXRoIGZvciBjb25maWd1cmF0aW9uIGZpbGUgc3RvcmluZyBjb25maWd1cmF0aW9uIGRhdGEKLSAg
ICAgICAgOnBhcmFtIGhvc3RzOiBsaXN0IG9mIGhvc3RzIHRvIGluY2x1ZGUgaW4gY29uZmlndXJh
dGlvbiAob3IgTm9uZSBpZiBub3QKLSAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0aW5nIGhv
c3QgY2VydGlmaWNhdGVzKQotICAgICAgICA6cGFyYW0gZHVyYXRpb246IENlcnRpZmljYXRlIGR1
cmF0aW9uIGluIGRheXMiIiIKLQotICAgICAgICBzZWxmLmJhc2VfcGF0aCA9IGJhc2VfcGF0aAot
ICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQotICAgICAgICBzZWxmLmNvbmZfcGF0aCA9IGNv
bmZfcGF0aAotICAgICAgICBzZWxmLmJhc2VfY29uZl9wYXRoID0gYmFzZV9jb25mX3BhdGgKLSAg
ICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5wcm9jID0gTm9uZQotICAg
ICAgICBzZWxmLmNtZCA9IFtdCi0gICAgICAgIHNlbGYuaG9zdHMgPSBob3N0cwotICAgICAgICBz
ZWxmLmR1cmF0aW9uID0gZHVyYXRpb24KLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAg
ICAgIHdpdGggb3BlbihzZWxmLmNvbmZfcGF0aCwgInciKSBhcyBmOgotICAgICAgICAgICAgZi53
cml0ZShnZXRfY29uZmlnKHNlbGYuYmFzZV9wYXRoLCBzZWxmLmhvc3RzLCBzZWxmLmR1cmF0aW9u
KSkKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncywg
Kiprd2FyZ3MpOgotICAgICAgICBvcy51bmxpbmsoc2VsZi5jb25mX3BhdGgpCi0KLSAgICBkZWYg
bG9nKHNlbGYsIGxpbmUpOgotICAgICAgICBpZiBoYXNhdHRyKHNlbGYubG9nZ2VyLCAicHJvY2Vz
c19vdXRwdXQiKToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KHNlbGYu
cHJvYy5waWQgaWYgc2VsZi5wcm9jIGlzIG5vdCBOb25lIGVsc2UgTm9uZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2Ui
KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9IiAiLmpv
aW4oc2VsZi5jbWQpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVi
dWcobGluZSkKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBjbWQsICphcmdzLCAqKmt3YXJncyk6
Ci0gICAgICAgICIiIlJ1biBhIGNvbW1hbmQgdXNpbmcgT3BlblNTTCBpbiB0aGUgY3VycmVudCBj
b250ZXh0LgotCi0gICAgICAgIDpwYXJhbSBjbWQ6IFRoZSBvcGVuc3NsIHN1YmNvbW1hbmQgdG8g
cnVuCi0gICAgICAgIDpwYXJhbSAqYXJnczogQWRkaXRpb25hbCBhcmd1bWVudHMgdG8gcGFzcyB0
byB0aGUgY29tbWFuZAotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5jbWQgPSBbc2VsZi5iaW5h
cnksIGNtZF0KLSAgICAgICAgaWYgY21kICE9ICJ4NTA5IjoKLSAgICAgICAgICAgIHNlbGYuY21k
ICs9IFsiLWNvbmZpZyIsIHNlbGYuY29uZl9wYXRoXQotICAgICAgICBzZWxmLmNtZCArPSBsaXN0
KGFyZ3MpCi0KLSAgICAgICAgIyBDb3B5IHRoZSBlbnZpcm9ubWVudCwgY29udmVydGluZyB0byBw
bGFpbiBzdHJpbmdzLiBXaW5kb3dzCi0gICAgICAgICMgU3RhcnRQcm9jZXNzIGlzIHBpY2t5IGFi
b3V0IGFsbCB0aGUga2V5cy92YWx1ZXMgYmVpbmcgcGxhaW4gc3RyaW5ncywKLSAgICAgICAgIyBi
dXQgYXQgbGVhc3QgaW4gTVNZUyBzaGVsbHMsIHRoZSBvcy5lbnZpcm9uIGRpY3Rpb25hcnkgY2Fu
IGJlIG1peGVkLgotICAgICAgICBlbnYgPSB7fQotICAgICAgICBmb3IgaywgdiBpbiBvcy5lbnZp
cm9uLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVudltr
LmVuY29kZSgidXRmOCIpXSA9IHYuZW5jb2RlKCJ1dGY4IikKLSAgICAgICAgICAgIGV4Y2VwdCBV
bmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0gICAgICAgIGlmIHNl
bGYuYmFzZV9jb25mX3BhdGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBlbnZbIk9QRU5TU0xf
Q09ORiJdID0gc2VsZi5iYXNlX2NvbmZfcGF0aC5lbmNvZGUoInV0ZjgiKQotCi0gICAgICAgIHNl
bGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJ
UEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnY9ZW52KQotICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHNlbGYucHJvYy5j
b21tdW5pY2F0ZSgpCi0gICAgICAgIHNlbGYubG9nKHN0ZG91dCkKLSAgICAgICAgaWYgc2VsZi5w
cm9jLnJldHVybmNvZGUgIT0gMDoKLSAgICAgICAgICAgIHJhaXNlIHN1YnByb2Nlc3MuQ2FsbGVk
UHJvY2Vzc0Vycm9yKHNlbGYucHJvYy5yZXR1cm5jb2RlLCBzZWxmLmNtZCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dD1zdGRvdXQpCi0KLSAg
ICAgICAgc2VsZi5jbWQgPSBbXQotICAgICAgICBzZWxmLnByb2MgPSBOb25lCi0gICAgICAgIHJl
dHVybiBzdGRvdXQKLQotCi1kZWYgbWFrZV9zdWJqZWN0KGNvbW1vbl9uYW1lLAotICAgICAgICAg
ICAgICAgICBjb3VudHJ5PU5vbmUsCi0gICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsCi0gICAg
ICAgICAgICAgICAgIGxvY2FsaXR5PU5vbmUsCi0gICAgICAgICAgICAgICAgIG9yZ2FuaXphdGlv
bj1Ob25lLAotICAgICAgICAgICAgICAgICBvcmdhbml6YXRpb25fdW5pdD1Ob25lKToKLSAgICBh
cmdzID0gWygiY291bnRyeSIsICJDIiksCi0gICAgICAgICAgICAoInN0YXRlIiwgIlNUIiksCi0g
ICAgICAgICAgICAoImxvY2FsaXR5IiwgIkwiKSwKLSAgICAgICAgICAgICgib3JnYW5pemF0aW9u
IiwgIk8iKSwKLSAgICAgICAgICAgICgib3JnYW5pemF0aW9uX3VuaXQiLCAiT1UiKSwKLSAgICAg
ICAgICAgICgiY29tbW9uX25hbWUiLCAiQ04iKV0KLQotICAgIHJ2ID0gW10KLQotICAgIGZvciB2
YXIsIGtleSBpbiBhcmdzOgotICAgICAgICB2YWx1ZSA9IGxvY2FscygpW3Zhcl0KLSAgICAgICAg
aWYgdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBydi5hcHBlbmQoIi8lcz0lcyIgJSAo
a2V5LCB2YWx1ZS5yZXBsYWNlKCIvIiwgIlxcLyIpKSkKLQotICAgIHJldHVybiAiIi5qb2luKHJ2
KQotCi1kZWYgbWFrZV9hbHRfbmFtZXMoaG9zdHMpOgotICAgIHJ2ID0gW10KLSAgICBmb3IgbmFt
ZSBpbiBob3N0czoKLSAgICAgICAgcnYuYXBwZW5kKCJETlM6JXMiICUgbmFtZSkKLSAgICByZXR1
cm4gIiwiLmpvaW4ocnYpCi0KLWRlZiBnZXRfY29uZmlnKHJvb3RfZGlyLCBob3N0cywgZHVyYXRp
b249MzApOgotICAgIGlmIGhvc3RzIGlzIE5vbmU6Ci0gICAgICAgIHNhbl9saW5lID0gIiIKLSAg
ICBlbHNlOgotICAgICAgICBzYW5fbGluZSA9ICJzdWJqZWN0QWx0TmFtZSA9ICVzIiAlIG1ha2Vf
YWx0X25hbWVzKGhvc3RzKQotCi0gICAgaWYgb3MucGF0aC5zZXAgPT0gIlxcIjoKLSAgICAgICAg
IyBUaGlzIHNlZW1zIHRvIGJlIG5lZWRlZCBmb3IgdGhlIFNoaW5pbmcgTGlnaHQgT3BlblNTTCBv
bgotICAgICAgICAjIFdpbmRvd3MsIGF0IGxlYXN0LgotICAgICAgICByb290X2RpciA9IHJvb3Rf
ZGlyLnJlcGxhY2UoIlxcIiwgIlxcXFwiKQotCi0gICAgcnYgPSAiIiJbIGNhIF0KLWRlZmF1bHRf
Y2EgPSBDQV9kZWZhdWx0Ci0KLVsgQ0FfZGVmYXVsdCBdCi1kaXIgPSAlKHJvb3RfZGlyKXMKLWNl
cnRzID0gJGRpcgotbmV3X2NlcnRzX2RpciA9ICRjZXJ0cwotY3JsX2RpciA9ICRkaXIlKHNlcClz
Y3JsCi1kYXRhYmFzZSA9ICRkaXIlKHNlcClzaW5kZXgudHh0Ci1wcml2YXRlX2tleSA9ICRkaXIl
KHNlcClzY2FrZXkucGVtCi1jZXJ0aWZpY2F0ZSA9ICRkaXIlKHNlcClzY2FjZXJ0LnBlbQotc2Vy
aWFsID0gJGRpciUoc2VwKXNzZXJpYWwKLWNybGRpciA9ICRkaXIlKHNlcClzY3JsCi1jcmxudW1i
ZXIgPSAkZGlyJShzZXApc2NybG51bWJlcgotY3JsID0gJGNybGRpciUoc2VwKXNjcmwucGVtCi1S
QU5ERklMRSA9ICRkaXIlKHNlcClzcHJpdmF0ZSUoc2VwKXMucmFuZAoteDUwOV9leHRlbnNpb25z
ID0gdXNyX2NlcnQKLW5hbWVfb3B0ICAgICAgICA9IGNhX2RlZmF1bHQKLWNlcnRfb3B0ICAgICAg
ICA9IGNhX2RlZmF1bHQKLWRlZmF1bHRfZGF5cyA9ICUoZHVyYXRpb24pZAotZGVmYXVsdF9jcmxf
ZGF5cyA9ICUoZHVyYXRpb24pZAotZGVmYXVsdF9tZCA9IHNoYTI1NgotcHJlc2VydmUgPSBubwot
cG9saWN5ID0gcG9saWN5X2FueXRoaW5nCi1jb3B5X2V4dGVuc2lvbnMgPSBjb3B5Ci0KLVsgcG9s
aWN5X2FueXRoaW5nIF0KLWNvdW50cnlOYW1lID0gb3B0aW9uYWwKLXN0YXRlT3JQcm92aW5jZU5h
bWUgPSBvcHRpb25hbAotbG9jYWxpdHlOYW1lID0gb3B0aW9uYWwKLW9yZ2FuaXphdGlvbk5hbWUg
PSBvcHRpb25hbAotb3JnYW5pemF0aW9uYWxVbml0TmFtZSA9IG9wdGlvbmFsCi1jb21tb25OYW1l
ID0gc3VwcGxpZWQKLWVtYWlsQWRkcmVzcyA9IG9wdGlvbmFsCi0KLVsgcmVxIF0KLWRlZmF1bHRf
Yml0cyA9IDIwNDgKLWRlZmF1bHRfa2V5ZmlsZSAgPSBwcml2a2V5LnBlbQotZGlzdGluZ3Vpc2hl
ZF9uYW1lID0gcmVxX2Rpc3Rpbmd1aXNoZWRfbmFtZQotYXR0cmlidXRlcyA9IHJlcV9hdHRyaWJ1
dGVzCi14NTA5X2V4dGVuc2lvbnMgPSB2M19jYQotCi0jIFBhc3N3b3JkcyBmb3IgcHJpdmF0ZSBr
ZXlzIGlmIG5vdCBwcmVzZW50IHRoZXkgd2lsbCBiZSBwcm9tcHRlZCBmb3IKLSMgaW5wdXRfcGFz
c3dvcmQgPSBzZWNyZXQKLSMgb3V0cHV0X3Bhc3N3b3JkID0gc2VjcmV0Ci1zdHJpbmdfbWFzayA9
IHV0Zjhvbmx5Ci1yZXFfZXh0ZW5zaW9ucyA9IHYzX3JlcQotCi1bIHJlcV9kaXN0aW5ndWlzaGVk
X25hbWUgXQotY291bnRyeU5hbWUgPSBDb3VudHJ5IE5hbWUgKDIgbGV0dGVyIGNvZGUpCi1jb3Vu
dHJ5TmFtZV9kZWZhdWx0ID0gQVUKLWNvdW50cnlOYW1lX21pbiA9IDIKLWNvdW50cnlOYW1lX21h
eCA9IDIKLXN0YXRlT3JQcm92aW5jZU5hbWUgPSBTdGF0ZSBvciBQcm92aW5jZSBOYW1lIChmdWxs
IG5hbWUpCi1zdGF0ZU9yUHJvdmluY2VOYW1lX2RlZmF1bHQgPQotbG9jYWxpdHlOYW1lID0gTG9j
YWxpdHkgTmFtZSAoZWcsIGNpdHkpCi0wLm9yZ2FuaXphdGlvbk5hbWUgPSBPcmdhbml6YXRpb24g
TmFtZQotMC5vcmdhbml6YXRpb25OYW1lX2RlZmF1bHQgPSBXZWIgUGxhdGZvcm0gVGVzdHMKLW9y
Z2FuaXphdGlvbmFsVW5pdE5hbWUgPSBPcmdhbml6YXRpb25hbCBVbml0IE5hbWUgKGVnLCBzZWN0
aW9uKQotI29yZ2FuaXphdGlvbmFsVW5pdE5hbWVfZGVmYXVsdCA9Ci1jb21tb25OYW1lID0gQ29t
bW9uIE5hbWUgKGUuZy4gc2VydmVyIEZRRE4gb3IgWU9VUiBuYW1lKQotY29tbW9uTmFtZV9tYXgg
PSA2NAotZW1haWxBZGRyZXNzID0gRW1haWwgQWRkcmVzcwotZW1haWxBZGRyZXNzX21heCA9IDY0
Ci0KLVsgcmVxX2F0dHJpYnV0ZXMgXQotCi1bIHVzcl9jZXJ0IF0KLWJhc2ljQ29uc3RyYWludHM9
Q0E6ZmFsc2UKLXN1YmplY3RLZXlJZGVudGlmaWVyPWhhc2gKLWF1dGhvcml0eUtleUlkZW50aWZp
ZXI9a2V5aWQsaXNzdWVyCi0KLVsgdjNfcmVxIF0KLWJhc2ljQ29uc3RyYWludHMgPSBDQTpGQUxT
RQota2V5VXNhZ2UgPSBub25SZXB1ZGlhdGlvbiwgZGlnaXRhbFNpZ25hdHVyZSwga2V5RW5jaXBo
ZXJtZW50Ci1leHRlbmRlZEtleVVzYWdlID0gc2VydmVyQXV0aAotJShzYW5fbGluZSlzCi0KLVsg
djNfY2EgXQotYmFzaWNDb25zdHJhaW50cyA9IENBOnRydWUKLXN1YmplY3RLZXlJZGVudGlmaWVy
PWhhc2gKLWF1dGhvcml0eUtleUlkZW50aWZpZXI9a2V5aWQ6YWx3YXlzLGlzc3VlcjphbHdheXMK
LWtleVVzYWdlID0ga2V5Q2VydFNpZ24KLSIiIiAlIHsicm9vdF9kaXIiOiByb290X2RpciwKLSAg
ICAgICAic2FuX2xpbmUiOiBzYW5fbGluZSwKLSAgICAgICAiZHVyYXRpb24iOiBkdXJhdGlvbiwK
LSAgICAgICAic2VwIjogb3MucGF0aC5zZXAucmVwbGFjZSgiXFwiLCAiXFxcXCIpfQotCi0gICAg
cmV0dXJuIHJ2Ci0KLWNsYXNzIE9wZW5TU0xFbnZpcm9ubWVudChvYmplY3QpOgotICAgIHNzbF9l
bmFibGVkID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgb3BlbnNzbF9i
aW5hcnk9Im9wZW5zc2wiLCBiYXNlX3BhdGg9Tm9uZSwKLSAgICAgICAgICAgICAgICAgcGFzc3dv
cmQ9IndlYi1wbGF0Zm9ybS10ZXN0cyIsIGZvcmNlX3JlZ2VuZXJhdGU9RmFsc2UsCi0gICAgICAg
ICAgICAgICAgIGR1cmF0aW9uPTMwLCBiYXNlX2NvbmZfcGF0aD1Ob25lKToKLSAgICAgICAgIiIi
U1NMIGVudmlyb25tZW50IHRoYXQgY3JlYXRlcyBhIGxvY2FsIENBIGFuZCBob3N0IGNlcnRpZmlj
YXRlIHVzaW5nIE9wZW5TU0wuCi0KLSAgICAgICAgQnkgZGVmYXVsdCB0aGlzIHdpbGwgbG9vayBp
biBiYXNlX3BhdGggZm9yIGV4aXN0aW5nIGNlcnRpZmljYXRlcyB0aGF0IGFyZSBzdGlsbAotICAg
ICAgICB2YWxpZCBhbmQgb25seSBjcmVhdGUgbmV3IGNlcnRpZmljYXRlcyBpZiB0aGVyZSBhcmVu
J3QgYW55LiBUaGlzIGJlaGF2aW91ciBjYW4KLSAgICAgICAgYmUgYWRqdXN0ZWQgdXNpbmcgdGhl
IGZvcmNlX3JlZ2VuZXJhdGUgb3B0aW9uLgotCi0gICAgICAgIDpwYXJhbSBsb2dnZXI6IGEgc3Rk
bGliIGxvZ2dpbmcgY29tcGF0aWJsZSBsb2dnZXIgb3IgbW96bG9nIHN0cnVjdHVyZWQgbG9nZ2Vy
Ci0gICAgICAgIDpwYXJhbSBvcGVuc3NsX2JpbmFyeTogUGF0aCB0byB0aGUgT3BlblNTTCBiaW5h
cnkKLSAgICAgICAgOnBhcmFtIGJhc2VfcGF0aDogUGF0aCBpbiB3aGljaCBjZXJ0aWZpY2F0ZXMg
d2lsbCBiZSBzdG9yZWQuIElmIE5vbmUsIGEgdGVtcG9yYXJ5Ci0gICAgICAgICAgICAgICAgICAg
ICAgICAgIGRpcmVjdG9yeSB3aWxsIGJlIHVzZWQgYW5kIHJlbW92ZWQgd2hlbiB0aGUgc2VydmVy
IHNodXRzIGRvd24KLSAgICAgICAgOnBhcmFtIHBhc3N3b3JkOiBQYXNzd29yZCB0byB1c2UKLSAg
ICAgICAgOnBhcmFtIGZvcmNlX3JlZ2VuZXJhdGU6IEFsd2F5cyBjcmVhdGUgYSBuZXcgY2VydGlm
aWNhdGUgZXZlbiBpZiBvbmUgYWxyZWFkeSBleGlzdHMuCi0gICAgICAgICIiIgotICAgICAgICBz
ZWxmLmxvZ2dlciA9IGxvZ2dlcgotCi0gICAgICAgIHNlbGYudGVtcG9yYXJ5ID0gRmFsc2UKLSAg
ICAgICAgaWYgYmFzZV9wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBiYXNlX3BhdGggPSB0ZW1w
ZmlsZS5ta2R0ZW1wKCkKLSAgICAgICAgICAgIHNlbGYudGVtcG9yYXJ5ID0gVHJ1ZQotCi0gICAg
ICAgIHNlbGYuYmFzZV9wYXRoID0gb3MucGF0aC5hYnNwYXRoKGJhc2VfcGF0aCkKLSAgICAgICAg
c2VsZi5wYXNzd29yZCA9IHBhc3N3b3JkCi0gICAgICAgIHNlbGYuZm9yY2VfcmVnZW5lcmF0ZSA9
IGZvcmNlX3JlZ2VuZXJhdGUKLSAgICAgICAgc2VsZi5kdXJhdGlvbiA9IGR1cmF0aW9uCi0gICAg
ICAgIHNlbGYuYmFzZV9jb25mX3BhdGggPSBiYXNlX2NvbmZfcGF0aAotCi0gICAgICAgIHNlbGYu
cGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5iaW5hcnkgPSBvcGVuc3NsX2JpbmFyeQotICAgICAg
ICBzZWxmLm9wZW5zc2wgPSBOb25lCi0KLSAgICAgICAgc2VsZi5fY2FfY2VydF9wYXRoID0gTm9u
ZQotICAgICAgICBzZWxmLl9jYV9rZXlfcGF0aCA9IE5vbmUKLSAgICAgICAgc2VsZi5ob3N0X2Nl
cnRpZmljYXRlcyA9IHt9Ci0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBpZiBu
b3Qgb3MucGF0aC5leGlzdHMoc2VsZi5iYXNlX3BhdGgpOgotICAgICAgICAgICAgb3MubWFrZWRp
cnMoc2VsZi5iYXNlX3BhdGgpCi0KLSAgICAgICAgcGF0aCA9IGZ1bmN0b29scy5wYXJ0aWFsKG9z
LnBhdGguam9pbiwgc2VsZi5iYXNlX3BhdGgpCi0KLSAgICAgICAgd2l0aCBvcGVuKHBhdGgoImlu
ZGV4LnR4dCIpLCAidyIpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICB3aXRoIG9wZW4ocGF0
aCgic2VyaWFsIiksICJ3IikgYXMgZjoKLSAgICAgICAgICAgIHNlcmlhbCA9ICIleCIgJSByYW5k
b20ucmFuZGludCgwLCAxMDAwMDAwKQotICAgICAgICAgICAgaWYgbGVuKHNlcmlhbCkgJSAyOgot
ICAgICAgICAgICAgICAgIHNlcmlhbCA9ICIwIiArIHNlcmlhbAotICAgICAgICAgICAgZi53cml0
ZShzZXJpYWwpCi0KLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aAotCi0gICAgICAgIHJldHVybiBz
ZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAg
aWYgc2VsZi50ZW1wb3Jhcnk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHNlbGYuYmFzZV9w
YXRoKQotCi0gICAgZGVmIF9jb25maWdfb3BlbnNzbChzZWxmLCBob3N0cyk6Ci0gICAgICAgIGNv
bmZfcGF0aCA9IHNlbGYucGF0aCgib3BlbnNzbC5jZmciKQotICAgICAgICByZXR1cm4gT3BlblNT
TChzZWxmLmxvZ2dlciwgc2VsZi5iaW5hcnksIHNlbGYuYmFzZV9wYXRoLCBjb25mX3BhdGgsIGhv
c3RzLAotICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmR1cmF0aW9uLCBzZWxmLmJhc2VfY29u
Zl9wYXRoKQotCi0gICAgZGVmIGNhX2NlcnRfcGF0aChzZWxmKToKLSAgICAgICAgIiIiR2V0IHRo
ZSBwYXRoIHRvIHRoZSBDQSBjZXJ0aWZpY2F0ZSBmaWxlLCBnZW5lcmF0aW5nIGEKLSAgICAgICAg
bmV3IG9uZSBpZiBuZWVkZWQiIiIKLSAgICAgICAgaWYgc2VsZi5fY2FfY2VydF9wYXRoIGlzIE5v
bmUgYW5kIG5vdCBzZWxmLmZvcmNlX3JlZ2VuZXJhdGU6Ci0gICAgICAgICAgICBzZWxmLl9sb2Fk
X2NhX2NlcnQoKQotICAgICAgICBpZiBzZWxmLl9jYV9jZXJ0X3BhdGggaXMgTm9uZToKLSAgICAg
ICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKCkKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NhX2NlcnRf
cGF0aAotCi0gICAgZGVmIF9sb2FkX2NhX2NlcnQoc2VsZik6Ci0gICAgICAgIGtleV9wYXRoID0g
c2VsZi5wYXRoKCJjYWtleS5wZW0iKQotICAgICAgICBjZXJ0X3BhdGggPSBzZWxmLnBhdGgoImNh
Y2VydC5wZW0iKQotCi0gICAgICAgIGlmIHNlbGYuY2hlY2tfa2V5X2NlcnQoa2V5X3BhdGgsIGNl
cnRfcGF0aCwgTm9uZSk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJVc2luZyBleGlz
dGluZyBDQSBjZXJ0IikKLSAgICAgICAgICAgIHNlbGYuX2NhX2tleV9wYXRoLCBzZWxmLl9jYV9j
ZXJ0X3BhdGggPSBrZXlfcGF0aCwgY2VydF9wYXRoCi0KLSAgICBkZWYgY2hlY2tfa2V5X2NlcnQo
c2VsZiwga2V5X3BhdGgsIGNlcnRfcGF0aCwgaG9zdHMpOgotICAgICAgICAiIiJDaGVjayB0aGF0
IGEga2V5IGFuZCBjZXJ0IGZpbGUgZXhpc3QgYW5kIGFyZSB2YWxpZCIiIgotICAgICAgICBpZiBu
b3Qgb3MucGF0aC5leGlzdHMoa2V5X3BhdGgpIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhjZXJ0X3Bh
dGgpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgd2l0aCBzZWxmLl9jb25m
aWdfb3BlbnNzbChob3N0cykgYXMgb3BlbnNzbDoKLSAgICAgICAgICAgIGVuZF9kYXRlX3N0ciA9
IG9wZW5zc2woIng1MDkiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLW5v
b3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1lbmRkYXRlIiwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi1pbiIsIGNlcnRfcGF0aCkuc3BsaXQo
Ij0iLCAxKVsxXS5zdHJpcCgpCi0gICAgICAgICAgICAjIE5vdCBzdXJlIGlmIHRoaXMgd29ya3Mg
aW4gb3RoZXIgbG9jYWxlcwotICAgICAgICAgICAgZW5kX2RhdGUgPSBkYXRldGltZS5zdHJwdGlt
ZShlbmRfZGF0ZV9zdHIsICIlYiAlZCAlSDolTTolUyAlWSAlWiIpCi0gICAgICAgICAgICB0aW1l
X2J1ZmZlciA9IHRpbWVkZWx0YSgqKkNFUlRfRVhQSVJZX0JVRkZFUikKLSAgICAgICAgICAgICMg
QmVjYXVzZSBgc3RycHRpbWVgIGRvZXMgbm90IGFjY291bnQgZm9yIHRpbWUgem9uZSBvZmZzZXRz
LCBpdCBpcwotICAgICAgICAgICAgIyBhbHdheXMgaW4gdGVybXMgb2YgVVRDLCBzbyB0aGUgY3Vy
cmVudCB0aW1lIHNob3VsZCBiZSBjYWxjdWxhdGVkCi0gICAgICAgICAgICAjIGFjY29yZGluZ2x5
LgotICAgICAgICAgICAgaWYgZW5kX2RhdGUgPCBkYXRldGltZS51dGNub3coKSArIHRpbWVfYnVm
ZmVyOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgICNUT0RPOiBjaGVj
ayB0aGUga2V5IGFjdHVhbGx5IHNpZ25lZCB0aGUgY2VydC4KLSAgICAgICAgcmV0dXJuIFRydWUK
LQotICAgIGRlZiBfZ2VuZXJhdGVfY2Eoc2VsZik6Ci0gICAgICAgIHBhdGggPSBzZWxmLnBhdGgK
LSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiR2VuZXJhdGluZyBuZXcgQ0EgaW4gJXMiICUgc2Vs
Zi5iYXNlX3BhdGgpCi0KLSAgICAgICAga2V5X3BhdGggPSBwYXRoKCJjYWtleS5wZW0iKQotICAg
ICAgICByZXFfcGF0aCA9IHBhdGgoImNhcmVxLnBlbSIpCi0gICAgICAgIGNlcnRfcGF0aCA9IHBh
dGgoImNhY2VydC5wZW0iKQotCi0gICAgICAgIHdpdGggc2VsZi5fY29uZmlnX29wZW5zc2woTm9u
ZSkgYXMgb3BlbnNzbDoKLSAgICAgICAgICAgIG9wZW5zc2woInJlcSIsCi0gICAgICAgICAgICAg
ICAgICAgICItYmF0Y2giLAotICAgICAgICAgICAgICAgICAgICAiLW5ldyIsCi0gICAgICAgICAg
ICAgICAgICAgICItbmV3a2V5IiwgInJzYToyMDQ4IiwKLSAgICAgICAgICAgICAgICAgICAgIi1r
ZXlvdXQiLCBrZXlfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgIi1vdXQiLCByZXFfcGF0aCwK
LSAgICAgICAgICAgICAgICAgICAgIi1zdWJqIiwgbWFrZV9zdWJqZWN0KCJ3ZWItcGxhdGZvcm0t
dGVzdHMiKSwKLSAgICAgICAgICAgICAgICAgICAgIi1wYXNzb3V0IiwgInBhc3M6JXMiICUgc2Vs
Zi5wYXNzd29yZCkKLQotICAgICAgICAgICAgb3BlbnNzbCgiY2EiLAotICAgICAgICAgICAgICAg
ICAgICAiLWJhdGNoIiwKLSAgICAgICAgICAgICAgICAgICAgIi1jcmVhdGVfc2VyaWFsIiwKLSAg
ICAgICAgICAgICAgICAgICAgIi1rZXlmaWxlIiwga2V5X3BhdGgsCi0gICAgICAgICAgICAgICAg
ICAgICItcGFzc2luIiwgInBhc3M6JXMiICUgc2VsZi5wYXNzd29yZCwKLSAgICAgICAgICAgICAg
ICAgICAgIi1zZWxmc2lnbiIsCi0gICAgICAgICAgICAgICAgICAgICItZXh0ZW5zaW9ucyIsICJ2
M19jYSIsCi0gICAgICAgICAgICAgICAgICAgICItaW4iLCByZXFfcGF0aCwKLSAgICAgICAgICAg
ICAgICAgICAgIi1vdXQiLCBjZXJ0X3BhdGgpCi0KLSAgICAgICAgb3MudW5saW5rKHJlcV9wYXRo
KQotCi0gICAgICAgIHNlbGYuX2NhX2tleV9wYXRoLCBzZWxmLl9jYV9jZXJ0X3BhdGggPSBrZXlf
cGF0aCwgY2VydF9wYXRoCi0KLSAgICBkZWYgaG9zdF9jZXJ0X3BhdGgoc2VsZiwgaG9zdHMpOgot
ICAgICAgICAiIiJHZXQgYSB0dXBsZSBvZiAocHJpdmF0ZSBrZXkgcGF0aCwgY2VydGlmaWNhdGUg
cGF0aCkgZm9yIGEgaG9zdCwKLSAgICAgICAgZ2VuZXJhdGluZyBuZXcgb25lcyBpZiBuZWNlc3Nh
cnkuCi0KLSAgICAgICAgaG9zdHMgbXVzdCBiZSBhIGxpc3Qgb2YgYWxsIGhvc3RzIHRvIGFwcGVh
ciBvbiB0aGUgY2VydGlmaWNhdGUsIHdpdGgKLSAgICAgICAgdGhlIHByaW1hcnkgaG9zdG5hbWUg
Zmlyc3QuIiIiCi0gICAgICAgIGhvc3RzID0gdHVwbGUoaG9zdHMpCi0gICAgICAgIGlmIGhvc3Rz
IG5vdCBpbiBzZWxmLmhvc3RfY2VydGlmaWNhdGVzOgotICAgICAgICAgICAgaWYgbm90IHNlbGYu
Zm9yY2VfcmVnZW5lcmF0ZToKLSAgICAgICAgICAgICAgICBrZXlfY2VydCA9IHNlbGYuX2xvYWRf
aG9zdF9jZXJ0KGhvc3RzKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBrZXlf
Y2VydCA9IE5vbmUKLSAgICAgICAgICAgIGlmIGtleV9jZXJ0IGlzIE5vbmU6Ci0gICAgICAgICAg
ICAgICAga2V5LCBjZXJ0ID0gc2VsZi5fZ2VuZXJhdGVfaG9zdF9jZXJ0KGhvc3RzKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBrZXksIGNlcnQgPSBrZXlfY2VydAotICAgICAg
ICAgICAgc2VsZi5ob3N0X2NlcnRpZmljYXRlc1tob3N0c10gPSBrZXksIGNlcnQKLQotICAgICAg
ICByZXR1cm4gc2VsZi5ob3N0X2NlcnRpZmljYXRlc1tob3N0c10KLQotICAgIGRlZiBfbG9hZF9o
b3N0X2NlcnQoc2VsZiwgaG9zdHMpOgotICAgICAgICBob3N0ID0gaG9zdHNbMF0KLSAgICAgICAg
a2V5X3BhdGggPSBzZWxmLnBhdGgoIiVzLmtleSIgJSBob3N0KQotICAgICAgICBjZXJ0X3BhdGgg
PSBzZWxmLnBhdGgoIiVzLnBlbSIgJSBob3N0KQotCi0gICAgICAgICMgVE9ETzogY2hlY2sgdGhh
dCB0aGlzIGNlcnQgd2FzIHNpZ25lZCBieSB0aGUgQ0EgY2VydAotICAgICAgICBpZiBzZWxmLmNo
ZWNrX2tleV9jZXJ0KGtleV9wYXRoLCBjZXJ0X3BhdGgsIGhvc3RzKToKLSAgICAgICAgICAgIHNl
bGYubG9nZ2VyLmluZm8oIlVzaW5nIGV4aXN0aW5nIGhvc3QgY2VydCIpCi0gICAgICAgICAgICBy
ZXR1cm4ga2V5X3BhdGgsIGNlcnRfcGF0aAotCi0gICAgZGVmIF9nZW5lcmF0ZV9ob3N0X2NlcnQo
c2VsZiwgaG9zdHMpOgotICAgICAgICBob3N0ID0gaG9zdHNbMF0KLSAgICAgICAgaWYgc2VsZi5f
Y2Ffa2V5X3BhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKCkKLSAg
ICAgICAgY2Ffa2V5X3BhdGggPSBzZWxmLl9jYV9rZXlfcGF0aAotCi0gICAgICAgIGFzc2VydCBv
cy5wYXRoLmV4aXN0cyhjYV9rZXlfcGF0aCkKLQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoCi0K
LSAgICAgICAgcmVxX3BhdGggPSBwYXRoKCJ3cHQucmVxIikKLSAgICAgICAgY2VydF9wYXRoID0g
cGF0aCgiJXMucGVtIiAlIGhvc3QpCi0gICAgICAgIGtleV9wYXRoID0gcGF0aCgiJXMua2V5IiAl
IGhvc3QpCi0KLSAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiR2VuZXJhdGluZyBuZXcgaG9zdCBj
ZXJ0IikKLQotICAgICAgICB3aXRoIHNlbGYuX2NvbmZpZ19vcGVuc3NsKGhvc3RzKSBhcyBvcGVu
c3NsOgotICAgICAgICAgICAgb3BlbnNzbCgicmVxIiwKLSAgICAgICAgICAgICAgICAgICAgIi1i
YXRjaCIsCi0gICAgICAgICAgICAgICAgICAgICItbmV3a2V5IiwgInJzYToyMDQ4IiwKLSAgICAg
ICAgICAgICAgICAgICAgIi1rZXlvdXQiLCBrZXlfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAg
Ii1pbiIsIGNhX2tleV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAiLW5vZGVzIiwKLSAgICAg
ICAgICAgICAgICAgICAgIi1vdXQiLCByZXFfcGF0aCkKLQotICAgICAgICAgICAgb3BlbnNzbCgi
Y2EiLAotICAgICAgICAgICAgICAgICAgICAiLWJhdGNoIiwKLSAgICAgICAgICAgICAgICAgICAg
Ii1pbiIsIHJlcV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAiLXBhc3NpbiIsICJwYXNzOiVz
IiAlIHNlbGYucGFzc3dvcmQsCi0gICAgICAgICAgICAgICAgICAgICItc3ViaiIsIG1ha2Vfc3Vi
amVjdChob3N0KSwKLSAgICAgICAgICAgICAgICAgICAgIi1vdXQiLCBjZXJ0X3BhdGgpCi0KLSAg
ICAgICAgb3MudW5saW5rKHJlcV9wYXRoKQotCi0gICAgICAgIHJldHVybiBrZXlfcGF0aCwgY2Vy
dF9wYXRoCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvcHJlZ2VuZXJhdGVkLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzQ4N2RmM2FkZDAzOTFjM2VmNzFiNjll
ZDlmMzc3MzRmMTQyODkxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
c3NsdXRpbHMvcHJlZ2VuZXJhdGVkLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAot
Y2xhc3MgUHJlZ2VuZXJhdGVkU1NMRW52aXJvbm1lbnQob2JqZWN0KToKLSAgICAiIiJTU0wgZW52
aXJvbm1lbnQgdG8gdXNlIHdpdGggZXhpc3Rpbmcga2V5L2NlcnRpZmljYXRlIGZpbGVzCi0gICAg
ZS5nLiB3aGVuIHJ1bm5pbmcgb24gYSBzZXJ2ZXIgd2l0aCBhIHB1YmxpYyBkb21haW4gbmFtZQot
ICAgICIiIgotICAgIHNzbF9lbmFibGVkID0gVHJ1ZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGxvZ2dlciwgaG9zdF9rZXlfcGF0aCwgaG9zdF9jZXJ0X3BhdGgsCi0gICAgICAgICAgICAgICAg
IGNhX2NlcnRfcGF0aD1Ob25lKToKLSAgICAgICAgc2VsZi5fY2FfY2VydF9wYXRoID0gY2FfY2Vy
dF9wYXRoCi0gICAgICAgIHNlbGYuX2hvc3Rfa2V5X3BhdGggPSBob3N0X2tleV9wYXRoCi0gICAg
ICAgIHNlbGYuX2hvc3RfY2VydF9wYXRoID0gaG9zdF9jZXJ0X3BhdGgKLQotICAgIGRlZiBfX2Vu
dGVyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0X18oc2Vs
ZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcGFzcwotCi0gICAgZGVmIGhvc3RfY2VydF9w
YXRoKHNlbGYsIGhvc3RzKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBrZXkgYW5kIGNlcnRpZmlj
YXRlIHBhdGhzIGZvciB0aGUgaG9zdCIiIgotICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9rZXlf
cGF0aCwgc2VsZi5faG9zdF9jZXJ0X3BhdGgKLQotICAgIGRlZiBjYV9jZXJ0X3BhdGgoc2VsZik6
Ci0gICAgICAgICIiIlJldHVybiB0aGUgY2VydGlmaWNhdGUgcGF0aCBvZiB0aGUgQ0EgdGhhdCBz
aWduZWQgdGhlCi0gICAgICAgIGhvc3QgY2VydGlmaWNhdGVzLCBvciBOb25lIGlmIHRoYXQgaXNu
J3Qga25vd24iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX2NhX2NlcnRfcGF0aApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1
dGlscy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg2YzAxNzlmODc0ZTkzMGZkZTg0MzQ4NTA5NjVkYWY5MDkyYmQyNTYuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9zc2x1dGlscy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvc3NsdXRpbHMvX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Nz
bHV0aWxzL2Jhc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3NzbHV0aWxzL29wZW5zc2wucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3NzbHV0aWxzL3ByZWdlbmVyYXRlZC5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvYXRvbWljd3JpdGVzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdG9taWN3cml0ZXMvYXRvbWljd3JpdGVzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA3ZTM3NjJhYTU2YzUzMzYzZjcxMzRhNjFmMGEyNTE3NzdhM2QyNTNj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRv
bWljd3JpdGVzL2F0b21pY3dyaXRlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL2F0b21pY3dyaXRlcy9fX2lu
aXRfXy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvZG9jcy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXRvbWljd3JpdGVzL2RvY3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGZiY2NiYjJkNGRiZDk4MzZhNmZiZmZiNjdkZjE4MTAzMzlmYmIwZTku
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9t
aWN3cml0ZXMvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL2RvY3MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21p
Y3dyaXRlcy9kb2NzL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9kb2NzL2luZGV4LnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXRvbWljd3JpdGVzL2RvY3MvbWFrZS5iYXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWlj
d3JpdGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkYTBmYzA3MzM1ZTY3NjRiZjkxYTZhODJl
MWMxNWE1ZmNjZTZhNzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyNSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9DT05UUklCVVRJTkcucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdG9taWN3cml0ZXMvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXRvbWljd3JpdGVzL01BTklGRVNU
LmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dyaXRlcy9SRUFE
TUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvYXBwdmV5b3IueW1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0
ZXMvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdG9taWN3cml0ZXMvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0b21pY3dy
aXRlcy90b3guaW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzLy5naXRodWIvdzNjLWltcG9ydC5s
b2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzLy5naXRodWIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGQ3YTcxOGQ4NjQ3MWNhY2I2OTViYTYzYTdiNjA3NGM5ODZhN2U3YjUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy8u
Z2l0aHViL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9hdHRycy8uZ2l0aHViL0NPREVfT0ZfQ09ORFVDVC5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJz
Ly5naXRodWIvQ09OVFJJQlVUSU5HLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvLmdpdGh1Yi9QVUxMX1JFUVVF
U1RfVEVNUExBVEUubWQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWZlMTYwMWQyNjRhMTZmODljMzQ4Y2U2NTQxYzVlNTk0
M2VhMTcyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvY2hhbmdlbG9nLmQvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwz
NyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzE3OC5jaGFuZ2UucnN0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8yOTAuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hh
bmdlbG9nLmQvMzAwLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMxMS5jaGFu
Z2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMjEuY2hhbmdlLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvY2hhbmdlbG9nLmQvMzIyLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxvZy5kLzMy
My5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMjYuY2hhbmdlLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvY2hhbmdlbG9nLmQvMzMxLmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2NoYW5nZWxv
Zy5kLzMzMi5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zMzQuY2hhbmdlLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzM2LmNoYW5nZS5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2No
YW5nZWxvZy5kLzMzOS5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8zNDMuY2hh
bmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzQ5LmNoYW5nZS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0
dHJzL2NoYW5nZWxvZy5kLzM1Ni5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC8z
NjMuY2hhbmdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvY2hhbmdlbG9nLmQvMzY5LmNoYW5nZS5yc3QKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2F0dHJzL2NoYW5nZWxvZy5kLzM3MC5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vs
b2cuZC85NS5jaGFuZ2UucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9jaGFuZ2Vsb2cuZC90b3duY3JpZXJfdGVt
cGxhdGUucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvX3N0YXRpYy93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYXR0cnMvZG9jcy9fc3RhdGljL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5NGMwMDE0MjJiYWVkZTFkMjhhMzEyMzhjYmM0ZWQ0YjI2YzA4
NWU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvZG9jcy9fc3RhdGljL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTgg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL19zdGF0aWMvYXR0cnNfbG9nby5wbmcK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2F0dHJzL2RvY3MvX3N0YXRpYy9hdHRyc19sb2dvLnN2ZwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NjM0ZWM5YmU5NzI4NjExN2M5ZGNl
ZDY2YzFhODE5ZGYwNGY5ZmI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDMzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9NYWtlZmlsZQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvZG9jcy9hcGkucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2JhY2t3YXJkLWNvbXBhdGliaWxp
dHkucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2NoYW5nZWxvZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3Mv
Y29uZi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9jb250cmlidXRpbmcucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9k
b2NzL2RvY3V0aWxzLmNvbmYKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvZXhhbXBsZXMucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy9kb2NzL2V4dGVuZGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3MvZ2xvc3NhcnkucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9hdHRycy9kb2NzL2hhc2hpbmcucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2hvdy1kb2VzLWl0
LXdvcmsucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9hdHRycy9kb2NzL2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9p
bml0LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9saWNlbnNlLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvZG9jcy9v
dmVydmlldy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL2RvY3Mvd2h5LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy9zcmMvYXR0ci93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNDEyZDEyMjRmNWQ3NTM4
YTE1NTgzZmNkMmUwZGZiYzFiYWFhN2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9zcmMvYXR0ci93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvc3JjL2F0dHIvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL19jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Ny
Yy9hdHRyL19jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL19mdW5jcy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
YXR0cnMvc3JjL2F0dHIvX21ha2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL2NvbnZlcnRlcnMu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9h
dHRyL2ZpbHRlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NyYy9hdHRyL3ZhbGlkYXRvcnMucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL19f
aW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIu
LmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy9fX2luaXRf
Xy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRv
IHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNDBjOGQ1M2FmMGZlYWI0YTYxMTg2YWE2MzI0OTdjNTZiNzJmYzdhNS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9h
dHRycy90ZXN0cy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvc3RyYXRlZ2llcy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvdGVzdHMvdGVzdF9hbm5vdGF0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMv
dGVzdF9jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfY29udmVydGVycy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvdGVzdHMvdGVzdF9kYXJrX21hZ2ljLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0
X2R1bmRlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfZmlsdGVycy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0
cnMvdGVzdHMvdGVzdF9mdW5jcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdGVzdHMvdGVzdF9pbml0X3N1YmNs
YXNzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy90ZXN0cy90ZXN0X21ha2UucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3Rz
L3Rlc3Rfc2xvdHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3Rlc3RzL3Rlc3RfdmFsaWRhdG9ycy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvYXR0cnMvdGVzdHMvdXRpbHMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2F0dHJzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA3Y2FiOTIzNjA1Y2YxZmIwNDMzMDE0MzllN2JkYjJmYmUwMTdkNzY3Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0
dHJzL0FVVEhPUlMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9DSEFOR0VMT0cucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy9M
SUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9hdHRycy9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvYXR0cnMvUkVBRE1FLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvYXR0cnMvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3B5cHJvamVjdC50b21sCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9hdHRycy9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2F0dHJzL3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9hdHRycy90b3gu
aW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS5lZ2ctaW5mby93M2MtaW1wb3J0
LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjNhYzAyYTExN2I2ODE0MTU2NDY4NmU1MDYyZDkz
NzZhOWMzYmExLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWlu
Zm8vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvY2VydGlmaS9jZXJ0aWZpLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9jZXJ0aWZpL2NlcnRpZmkuZWdnLWluZm8vbm90LXppcC1zYWZlCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2Nl
cnRpZmkuZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2Nl
cnRpZmkvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWU3ZGRhYjNjZDQyYWI4MmM2M2UyYzdj
NDdlZDk1MDYxYTI5N2Q2ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2NlcnRpZmkvY2VydGlmaS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxs
CkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9y
dGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBk
aXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhl
IFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQK
LQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQg
dG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9jZXJ0aWZpL19faW5pdF9f
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkvX19tYWluX18ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkvY2Vy
dGlmaS9jYWNlcnQucGVtCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL2NlcnRpZmkvY29yZS5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9jZXJ0aWZpL3NldHVwLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL3NldHVwLnB5Cm9sZCBtb2Rl
IDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvY2VydGlmaS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZDRhMWZiZjc2YmMyYmUzYjk3Y2E5NzY3YmEyOTg1YjUwYThjMGI3YS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2NlcnRpZmkv
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2NlcnRpZmkvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9NQU5JRkVTVC5pbgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvY2Vy
dGlmaS9QS0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvY2VydGlmaS9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9jZXJ0aWZpL3Nl
dHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvY2VydGlmaS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2Vu
dW0vZG9jL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vZG9jL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjg0N2YwOGQ4ODczODYzMjQ4MjI1ZTYw
YjQ5YjVhY2VjMjNiYjYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZW51bS9lbnVtL2RvYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL2RvYy9lbnVtLnBkZgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZW51bS9lbnVtL2RvYy9lbnVtLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2VudW0vdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmFjMTI4MmYxYmI1ZGM1ZWFkODAwNmM4OTI5NDJiZjU2N2E1NDQz
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Vu
dW0vZW51bS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZW51bS9lbnVtL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bS9SRUFETUUKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2VudW0vZW51bS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtL3Rlc3QucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Vu
dW0vZW51bTM0LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBlZGZjNTMxMTAyYThlMjVhOWZjMDU4MGNmNDMxMWMzMzhhNzI0YjYwLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtMzQu
ZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2VudW0vZW51bTM0LmVnZy1pbmZvL1BLRy1JTkZPCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL2Vu
dW0zNC5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS9lbnVtMzQuZWdnLWluZm8vZGVw
ZW5kZW5jeV9saW5rcy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vZW51bTM0LmVnZy1pbmZvL3RvcF9sZXZlbC50
eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZW51bS93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE3OTFjYTY3ODZlZmM0
NjFkYjE5ODNhZDQxYmJmYjMzZDdmMDQxNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vTUFOSUZFU1QuaW4KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Vu
dW0vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2VudW0vUkVBRE1FCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9lbnVtL3NldHVwLmNmZwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZW51bS9zZXR1cC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL190ZW1wbGF0
ZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvX3RlbXBsYXRlcy93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzMjUxMjk0YTBmNmVhNzk1
Y2E5MzVhZWQwN2YwY2IxZTZmYmQxMS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2RvY3MvX3RlbXBsYXRlcy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3Mv
ZG9jcy9fdGVtcGxhdGVzL3BhZ2UuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2Nz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDRjYzgwMDgxZDFmMjk2ZTUxZjQ4YTIxODIwOWIy
YjA4NjUyYzM4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvZnVuY3NpZ3MvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvZG9jcy9NYWtlZmlsZQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVu
Y3NpZ3MvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9kb2NzL2luZGV4LnJzdApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZjMWFlZGU3YjQ3Zjg4M2Q3ZmE2NWUzMWVmYjQxNDQ3MjdmOWRlOTEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZnVuY3NpZ3MvZnVuY3NpZ3MvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL2Z1bmNzaWdz
L29kaWN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9mdW5jc2lncy92ZXJzaW9uLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2Z1bmNzaWdzL3JlcXVpcmVtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvcmVxdWlyZW1lbnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlMjI1ZjdiMDZjMzkzYzc1NGVmODNiMmNiMjJkY2Q0NTk4YTMyNDA4Li4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvcmVxdWly
ZW1lbnRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9mdW5jc2lncy9yZXF1aXJlbWVudHMvZGV2ZWxvcG1lbnQudHh0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9m
dW5jc2lncy9yZXF1aXJlbWVudHMvcHJvZHVjdGlvbi50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVu
Y3NpZ3MvdGVzdHMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL19faW5pdF9fLnB5
CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLmU2OWRlMjli
YjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvdGVzdHMvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy9fX2luaXRfXy5w
eQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNl
YXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBm
aWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9mdW5jc2lncy90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZTM5MjFhMTg1MjJmNmUwNzY0ZjYzOGQyNDU3NTNkZGZkOTkxYTJlMy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3Rlc3Rz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9mdW5jc2lncy90ZXN0cy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvdGVzdHMvdGVz
dF9mb3JtYXRhbm5vdGF0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy90ZXN0X2Z1bmNzaWdz
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9mdW5jc2lncy90ZXN0cy90ZXN0X2luc3BlY3QucHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWVlYmIyNzMzNTBmZGYyNjE5Zjc0NWRh
ZjQ4MmQyM2M4MDY3NjdkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvZnVuY3NpZ3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL0NIQU5HRUxPRwotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvZnVuY3Np
Z3MvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvZnVuY3NpZ3MvTUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2Z1bmNzaWdzL01h
a2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9mdW5jc2lncy9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9mdW5jc2lncy9zZXR1cC5j
ZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2Z1bmNzaWdzL3NldHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291
cmNlL19zdGF0aWMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NjhlODU2YjZi
NDc2NDVkNmUxYmJjZTlmMDE1MTUwNGYzZWQ4MWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9fc3RhdGljL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9k
b2NzL3NvdXJjZS9fc3RhdGljL2gyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uU3RhdGVNYWNoaW5l
LmRvdC5wbmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL19zdGF0aWMvaDIuc3RyZWFtLkgyU3RyZWFt
U3RhdGVNYWNoaW5lLmRvdC5wbmcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWZiMmJkZTUyY2E5NWE1NjljZjc5ZWNlMmI3NjU4N2Zh
MzJlMDU5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvZG9jcy9zb3VyY2UvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzNyAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2FkdmFuY2VkLXVzYWdlLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZG9jcy9zb3VyY2UvYXBpLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvYXN5bmNp
by1leGFtcGxlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvYmFzaWMtdXNhZ2UucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9oMi9kb2NzL3NvdXJjZS9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9jb250cmlidXRv
cnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9jdXJpby1leGFtcGxlLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
ZG9jcy9zb3VyY2UvZXZlbnRsZXQtZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL2V4
YW1wbGVzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2UvaW5kZXgucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2Nz
L3NvdXJjZS9pbnN0YWxsYXRpb24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9sb3ctbGV2ZWwu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9uZWdvdGlhdGluZy1odHRwMi5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2RvY3Mvc291cmNlL3JlbGVhc2Utbm90ZXMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS9yZWxl
YXNlLXByb2Nlc3MucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90ZXN0aW1vbmlhbHMucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9kb2NzL3NvdXJjZS90b3JuYWRvLWV4YW1wbGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3Nv
dXJjZS90d2lzdGVkLWV4YW1wbGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3NvdXJjZS90d2lzdGVkLWhl
YWQtZXhhbXBsZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2RvY3Mvc291cmNlL3R3aXN0ZWQtcG9zdC1leGFtcGxl
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZG9jcy9zb3VyY2Uvd3NnaS1leGFtcGxlLnJzdApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9kb2NzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9kb2NzL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNGVhNTM3NzUyNGM2MmUyNGIzZTkxYWM4
YWRiNTUyMmJlZmRlNTQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZG9jcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZG9jcy9t
YWtlLmJhdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9hc3luY2lvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA3ZThhZTRhMjg3ZTUwZjVlNGY4NzNiZGJjMTIzNzFiZDEyOGUx
ZjdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvZXhhbXBsZXMvYXN5bmNpby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIw
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby9hc3luY2lvLXNlcnZl
ci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby9jZXJ0LmNydAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBs
ZXMvYXN5bmNpby9jZXJ0LmtleQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvYXN5bmNpby93c2dpLXNlcnZl
ci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9jdXJpby93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGIyOTA2YjA5MzE0Mjk2MjE1MDQwZTQ3YmY0NzUxOWJjMmY2ZGZkNWMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFt
cGxlcy9jdXJpby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3VyaW8vY3VyaW8tc2VydmVyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy9jdXJpby9sb2NhbGhvc3QuY3J0LnBlbQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvY3Vy
aW8vbG9jYWxob3N0LmtleQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVudGxldC93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZjgyMjQ0NTBiYjU4ODMyYzg0Y2EzOWE4
MWU0ZGMxNzk3OWU1ODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVudGxldC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZXZlbnRsZXQv
ZXZlbnRsZXQtc2VydmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVudGxldC9zZXJ2ZXIuY3J0
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9leGFtcGxlcy9ldmVudGxldC9zZXJ2ZXIua2V5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMv
ZnJhZ21lbnRzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
M2VlNmY5NGI0MjBhNjFjZGJkZTExYjljNjBlMzJiZThlZGUzZDk5Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvZnJhZ21lbnRz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X2h0dHBzX3NldHVwX2ZyYWdtZW50LnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9leGFtcGxlcy9mcmFnbWVudHMvY2xpZW50X3VwZ3JhZGVfZnJhZ21lbnQucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfaHR0cHNfc2V0dXBfZnJhZ21lbnQu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL2V4YW1wbGVzL2ZyYWdtZW50cy9zZXJ2ZXJfdXBncmFkZV9mcmFnbWVudC5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90b3JuYWRvL3Rvcm5hZG8tc2VydmVyLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi9leGFtcGxlcy90b3JuYWRvL3Rvcm5hZG8tc2VydmVyLnB5Cm9sZCBtb2RlIDEw
MDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFk
by93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFlZWRlOTgwMjllY2RiMDFkMTgyNzNi
MjdjNjk5NDE4MzAzZmU5ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3Rvcm5hZG8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3Rvcm5hZG8v
c2VydmVyLmNydAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdG9ybmFkby9zZXJ2ZXIua2V5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi9leGFtcGxlcy90b3JuYWRvL3Rvcm5hZG8tc2VydmVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2V4YW1wbGVzL3R3aXN0ZWQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0
ZWQvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViMGZmMmVj
MWVmNTU4ZjM3Yjc2MjAzNTEyOGU5YTFjODgyYjU2NmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90d2lzdGVkL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9l
eGFtcGxlcy90d2lzdGVkL2hlYWRfcmVxdWVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvZXhhbXBsZXMvdHdpc3Rl
ZC9wb3N0X3JlcXVlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvc2VydmVyLmNydAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvZXhhbXBsZXMvdHdpc3RlZC9zZXJ2ZXIuY3NyCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9leGFtcGxlcy90
d2lzdGVkL3NlcnZlci5rZXkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2V4YW1wbGVzL3R3aXN0ZWQvdHdpc3RlZC1zZXJ2
ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gy
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNWNhNGI3MGZi
Zjk2ZGZiMjA4MGE5M2M4MWMxYTJiNmE3YjRmZWVlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYv
bnVsbApAQCAtMSwyNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBp
bXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVz
dHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9u
IHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMv
d3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2Vi
S2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9oMi9jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gy
L2gyL2Vycm9ycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvaDIvZXZlbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9oMi9leGNlcHRp
b25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9oMi9oMi9mcmFtZV9idWZmZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3NldHRpbmdz
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi9oMi9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL2gyL3V0aWxpdGllcy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaDIvaDIvd2luZG93cy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oMi90ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBhYmVjZTVhNjIyZmFiNGEzNjM4MWFmMzU4ZjY5ZjlmODgxN2E3NTU4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC93M2Mt
aW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0
aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8g
Tk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVh
dGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1w
b3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciBy
ZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9y
IHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvdGVzdC9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC9jb3JvdXRpbmVfdGVzdHMucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2gyL3Rlc3QvaGVscGVycy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVzdC90ZXN0X2Jhc2ljX2xvZ2ljLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfY2xvc2VkX3N0cmVhbXMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVz
dF9jb21wbGV4X2xvZ2ljLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfY29uZmlnLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi90ZXN0L3Rlc3RfZXZlbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvdGVzdC90ZXN0X2Zsb3dfY29udHJvbF93aW5kb3cucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3Qv
dGVzdF9oMl91cGdyYWRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZF9yZXF1ZXN0LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi90ZXN0L3Rlc3RfaGVhZGVyX2luZGV4aW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rf
aW5mb3JtYXRpb25hbF9yZXNwb25zZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9pbnRlcmFjdGlu
Z19zdGFja3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9pbnZhbGlkX2NvbnRlbnRfbGVuZ3Rocy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdGVzdC90ZXN0X2ludmFsaWRfZnJhbWVfc2VxdWVuY2VzLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
Mi90ZXN0L3Rlc3RfaW52YWxpZF9oZWFkZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfcHJpb3Jp
dHkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9yZWxhdGVkX2V2ZW50cy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdGVz
dC90ZXN0X3JmYzc4MzgucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Rlc3QvdGVzdF9zZXR0aW5ncy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aDIvdGVzdC90ZXN0X3N0YXRlX21hY2hpbmVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3Rfc3RyZWFt
X3Jlc2V0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oMi90ZXN0L3Rlc3RfdXRpbGl0eV9mdW5jdGlvbnMucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaDIvdXRpbHMvYmFja3BvcnQuc2ggYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL2JhY2twb3J0
LnNoCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIv
dXRpbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjM4M2E3YTk5MWY5MDVhMDQzZWEzMWFiYzdlZTUz
MDkyNWMyMGI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvdXRpbHMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3V0aWxzL2JhY2twb3J0LnNoCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2gyL3Zpc3VhbGl6ZXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3Zpc3VhbGl6ZXIvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDNmZmYxYjMyOTJjNTJm
YTM1ZmMzYTNjZTBlZWEwYWZhNmI1NWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oMi92aXN1YWxpemVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi92aXN1YWxpemVyL05PVElD
RVMudmlzdWFsaXplcgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdmlzdWFsaXplci92aXN1YWxpemUucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaDIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGZkMmZjYWU0YTNkMzM3ZWE4MmQ4NWZhMTljMjBk
ZjA2NThmN2YxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaDIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2gyL0NPTlRSSUJVVE9SUy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL0hJU1RPUlkucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9oMi9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oMi9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvTWFrZWZpbGUK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2gyL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2gyL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvc2V0dXAu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2gyL3Rlc3RfcmVxdWlyZW1lbnRzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaDIvdG94LmluaQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHBhY2svaHBhY2suZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGEwN2M3NGFjMmI3N2VjNDRkMmI5YTE0Yjk3MDlhZTRkZjMzNzdhMWEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFj
ay5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2suZWdnLWluZm8vUEtHLUlORk8KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNr
L2hwYWNrLmVnZy1pbmZvL1NPVVJDRVMudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay5lZ2ctaW5mby9k
ZXBlbmRlbmN5X2xpbmtzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2suZWdnLWluZm8vdG9wX2xldmVs
LnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHBhY2svaHBhY2svdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDJiYzBiNGJlZDVkMTA4Zjg5MmQ1ZmRlNjBjYjY1NzNhOWFmYjAzYjkuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBh
Y2svaHBhY2svX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2NvbXBhdC5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHBhY2svaHBhY2svZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svaHBhY2svaHBhY2sucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2hwYWNrL2hwYWNrL2h1ZmZtYW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL2h1ZmZtYW5fY29u
c3RhbnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9ocGFjay9ocGFjay9odWZmbWFuX3RhYmxlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFj
ay9ocGFjay9zdHJ1Y3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL2hwYWNrL3RhYmxlLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2hwYWNrL3Rlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3Rlc3QvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZTQ5MTYyNTA0OWU0MmI4
NzgyYjVjOTQxNTIwMjI1Mjk3OGUwODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251
bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1w
b3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3Rz
IGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0
aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dw
dAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktp
dCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3Rlc3RfZW5jb2Rl
X2RlY29kZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdGVzdC90ZXN0X2hwYWNrLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90
ZXN0L3Rlc3RfaHBhY2tfaW50ZWdyYXRpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3Rlc3QvdGVzdF9odWZm
bWFuLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0L3Rlc3Rfc3RydWN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay90ZXN0
L3Rlc3RfdGFibGUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2hwYWNrL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3
ZjY0NDk5NTA1YWY3MGIwNDFjODFhMGYxYmUwODNjMDhhNWIxZmM3Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL0NPTlRS
SUJVVE9SUy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL0hJU1RPUlkucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9ocGFjay9MSUNFTlNF
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9ocGFjay9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svUEtHLUlORk8KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hw
YWNrL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2hwYWNrL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHBhY2svc2V0dXAu
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9kb2MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGFkNzAxYWJmOGY1ZjVlODIwMTliYmM2OWE0YmM1NDM5ZmZkZGQ0MWEuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2RvYy9NYWtlZmlsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2NoYW5nZXMucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9kb2MvY29uZi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGliLmZpbHRl
cnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9kb2MvaHRtbDVsaWIucnN0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9k
b2MvaHRtbDVsaWIudHJlZWFkYXB0ZXJzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL2h0bWw1bGli
LnRyZWVidWlsZGVycy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9odG1sNWxpYi50cmVld2Fsa2Vy
cy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9s
aWNlbnNlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZG9jL21ha2UuYmF0Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9k
b2MvbW9kdWxlcy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RvYy9tb3ZpbmdwYXJ0cy5yc3QKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHRtbDVsaWIvZmxha2U4LXJ1bi5zaCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvZmxha2U4
LXJ1bi5zaApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL190cmllL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi9fdHJpZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggYmEwMTA0YTc2ODg3YzkwN2M2ODFkYzJjNjhkY2QxM2ZjNTMzZjcxNy4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L190cmllL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9fdHJpZS9fX2luaXRfXy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvaHRtbDVsaWIvX3RyaWUvX19pbml0X18ucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxp
Yi9fdHJpZS9fYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3RyaWUvX2Jhc2UucHlj
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9fdHJpZS9kYXRyaWUucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2h0bWw1bGliL190cmllL2RhdHJpZS5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL190cmll
L3B5LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9fdHJpZS9weS5weWMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9fX2luaXRfXy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvZmlsdGVycy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUx
NTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0
OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvX19pbml0
X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL19faW5pdF9fLnB5CkBA
IC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNo
IHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDhlZjUyMTMyMjcxNjNiYTkyNTZlMDI5MWE4YjA4ZjJl
NDdkN2Y0MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRl
cnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvYWxwaGFiZXRp
Y2FsYXR0cmlidXRlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvZmlsdGVycy9iYXNlLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL2luamVjdF9tZXRhX2NoYXJzZXQucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL2ZpbHRlcnMvbGludC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvZmlsdGVycy9vcHRpb25hbHRhZ3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L2ZpbHRlcnMvc2FuaXRpemVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9maWx0ZXJzL3do
aXRlc3BhY2UucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2Fu
aXRpemVyLXRlc3RkYXRhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90
ZXN0cy9zYW5pdGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDA1NjUzZWQ2NTQ2ODVmYmQxZGViMWQ0NGVmNGUwOTdjNDhhMWIxZjkuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxp
Yi9odG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cKKysrIC9k
ZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2Vy
ZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2Ug
dGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0
IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVz
dHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4g
V2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4K
LQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUK
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3Rlc3RzL3Nhbml0aXplci10ZXN0ZGF0YS90ZXN0czEuZGF0CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkMjJkYTE4Y2Q1Y2YwMWJh
NjE0MGI5M2Q5N2Y2NTRlN2MyNjZjOTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zZXJpYWxpemVyLXRl
c3RkYXRhL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy9zZXJpYWxpemVyLXRlc3RkYXRhL2Nv
cmUudGVzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvc2VyaWFsaXplci10ZXN0ZGF0
YS9pbmplY3RtZXRhLnRlc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3NlcmlhbGl6
ZXItdGVzdGRhdGEvb3B0aW9uYWx0YWdzLnRlc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rl
c3RzL3NlcmlhbGl6ZXItdGVzdGRhdGEvb3B0aW9ucy50ZXN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1s
NWxpYi90ZXN0cy9zZXJpYWxpemVyLXRlc3RkYXRhL3doaXRlc3BhY2UudGVzdApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvaHRtbDVsaWIvdGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDcxZDdhMTQzOGJhZTYxMDk4YzEwZGYzOWU4MmE2NWZhOTMwNDljMTQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvX19pbml0X18ucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL2NvbmZ0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi90ZXN0cy9zYW5pdGl6ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3Rz
L3N1cHBvcnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfYWxwaGFiZXRp
Y2FsYXR0cmlidXRlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9lbmNv
ZGluZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9tZXRhLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X29wdGlvbmFsdGFnc19maWx0ZXIucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfcGFyc2VyMi5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvdGVzdHMvdGVzdF9zYW5pdGl6ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1
bGliL3Rlc3RzL3Rlc3Rfc2VyaWFsaXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdGVz
dHMvdGVzdF9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rlc3RfdHJl
ZWFkYXB0ZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X3RyZWV3YWxr
ZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90ZXN0X3doaXRlc3BhY2VfZmls
dGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90ZXN0cy90b2tlbml6ZXIucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL3Rlc3RzL3Rva2VuaXplcnRvdHJlZS5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVs
aWIvaHRtbDVsaWIvdGVzdHMvdHJlZV9jb25zdHJ1Y3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0
bWw1bGliL3Rlc3RzL3VzLWFzY2lpLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3Rlc3Rz
L3V0Zi04LWJvbS5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVh
ZGFwdGVycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWFkYXB0
ZXJzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDBmZjc4
ODUxMTRhOTcxZTQ0MTY5ZjM5ODRkMTY3OTcyY2RjMjAxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWFkYXB0
ZXJzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYWRhcHRlcnMvX19pbml0X18ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h0bWw1bGliL2h0bWw1bGliL3RyZWVhZGFwdGVycy9nZW5zaGkucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2h0bWw1bGliL3RyZWVhZGFwdGVycy9zYXgucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvdHJlZWJ1aWxkZXJzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1s
NWxpYi90cmVlYnVpbGRlcnMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDM5Y2RjNTExMDcxZDZiOGNlMDc2ODMzMzY5ZWJjM2VhNDlmNDQ5Y2MuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1s
NWxpYi90cmVlYnVpbGRlcnMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCAr
MCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRo
ZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4g
V2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHVi
OgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVu
IHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0
Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2
YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
TGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3RyZWVidWlsZGVycy9fX2lu
aXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL19faW5pdF9fLnB5
YwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1aWxkZXJzL2Jhc2UucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2h0bWw1bGliL3RyZWVidWlsZGVycy9iYXNlLnB5YwotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRt
bDVsaWIvdHJlZWJ1aWxkZXJzL2RvbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZWJ1
aWxkZXJzL2V0cmVlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvZXRy
ZWUucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVlYnVpbGRlcnMvZXRyZWVfbHhtbC5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMvdzNjLWltcG9ydC5s
b2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhOWQ2YzYwZGE1MWVjMjE0MmQ2NmI3
N2JhYmE0NGNiYjU4ZmUzNDguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvdHJlZXdhbGtlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L3RyZWV3YWxrZXJzL19faW5pdF9fLnB5YwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdh
bGtlcnMvYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMvZG9tLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi90cmVld2Fsa2Vycy9ldHJlZS5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRt
bDVsaWIvaHRtbDVsaWIvdHJlZXdhbGtlcnMvZXRyZWVfbHhtbC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvdHJlZXdhbGtlcnMvZ2Vuc2hpLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGli
L2h0bWw1bGliL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRkOGY1ZWNlYzNmODQ1ZjAw
ZDBlZjQyYmY1OTgxMjIzZmYyN2M2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxp
Yi9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX19pbml0X18ucHljCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9odG1sNWxpYi9odG1sNWxpYi9faWhhdGV4bWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGli
L19paGF0ZXhtbC5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL19pbnB1dHN0cmVhbS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX2lucHV0c3RyZWFtLnB5YwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvX3Rva2VuaXplci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvX3Rva2VuaXpl
ci5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h0bWw1bGliL2h0bWw1bGliL191dGlscy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
aHRtbDVsaWIvX3V0aWxzLnB5YwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvY29uc3RhbnRzLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9jb25zdGFudHMucHljCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9o
dG1sNWxpYi9odG1sNXBhcnNlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvaHRtbDVsaWIvaHRtbDVwYXJz
ZXIucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9odG1sNWxpYi9odG1sNWxpYi9zZXJpYWxpemVyLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9odG1sNWxpYi9zZXJpYWxpemVyLnB5YwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9w
YXJzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvcGFyc2UucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2Rl
IDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9yZXF1aXJlbWVudHMtaW5zdGFsbC5z
aCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLWluc3RhbGwuc2gKb2xkIG1vZGUgMTAwNjQ0
Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi91dGlscy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdXRpbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQzMWUwMDM5ZWY0MDAyNzNjNzFlMzJlMmJkN2JkNzZmNjdhNDIz
NWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi91dGlscy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdXRpbHMvZW50aXRpZXMucHkKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNGI4MzQzOTdjMGUyNTdiNjhhNmMz
MWM0NjgxN2E3ZmJkN2UwMmU4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL0FVVEhPUlMucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi9DSEFOR0VTLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvQ09OVFJJQlVUSU5HLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHRtbDVsaWIvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIvTUFOSUZFU1QuaW4KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL2RlYnVnLWluZm8ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0
bWw1bGliL2ZsYWtlOC1ydW4uc2gKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3BhcnNlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1s
NWxpYi9weXRlc3QuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9yZXF1aXJlbWVudHMtaW5zdGFsbC5zaAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHRtbDVsaWIvcmVxdWlyZW1lbnRzLW9wdGlvbmFsLnR4dAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHRtbDVsaWIv
cmVxdWlyZW1lbnRzLXRlc3QudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9odG1sNWxpYi9yZXF1aXJlbWVudHMudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9odG1sNWxpYi9zZXR1cC5jZmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h0bWw1bGliL3NldHVwLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
dG1sNWxpYi90b3guaW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9uL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZWUwODE4MTE0MDhlN2Q4N2MxMDMxOTQ0N2YwNTc4
NDg5MjZlZmZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHlwZXIvaHlwZXIvY29tbW9uL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb21tb24vX19pbml0X18u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NvbW1vbi9idWZzb2NrZXQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2NvbW1vbi9jb25uZWN0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb21tb24vZGVjb2Rl
ci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tbW9uL2V4Y2VwdGlvbnMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
L2h5cGVyL2NvbW1vbi9oZWFkZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb21tb24vdXRpbC5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9fX2luaXRfXy5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvaDIvX19pbml0X18ucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2gyL2NvbmZpZy5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVy
L2gyL2Nvbm5lY3Rpb24ucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9lcnJvcnMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gy
L2Vycm9ycy5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L2h5cGVyL2h5cGVyL2gyL2V2ZW50cy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXZlbnRz
LnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvaDIvZXhjZXB0aW9ucy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXhjZXB0aW9u
cy5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyL2h5cGVyL2gyL2ZyYW1lX2J1ZmZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZnJhbWVf
YnVmZmVyLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXIvaHlwZXIvaDIvc2V0dGluZ3MucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3NldHRp
bmdzLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHlwZXIvaHlwZXIvaDIvc3RyZWFtLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9zdHJlYW0ucHkK
b2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9oMi91dGlsaXRpZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3V0aWxpdGllcy5weQpv
bGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5
cGVyL2gyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkwZTI2OTRmZTM2NWIyMTBmNDdmYTMy
N2ZhZDRmYzJjYzg5MWNjNi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwK
QEAgLTEsMjcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0
ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRp
cmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUg
V1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAot
Ci1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0
byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
UHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvY29uZmlnLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9j
b25uZWN0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9oMi9lcnJvcnMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
L2h5cGVyL2gyL2V2ZW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvZXhjZXB0aW9ucy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvaHlwZXIvaHlwZXIvaDIvZnJhbWVfYnVmZmVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9o
Mi9zZXR0aW5ncy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvc3RyZWFtLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9oMi91dGlsaXRpZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2gyL3dpbmRvd3MucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaDIvd2luZG93cy5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIv
aHlwZXIvaDIvd2luZG93cy5weQpvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAxMS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvaHR0cDExL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4Y2I3Y2U3NWZkMjBiYmU2M2NmOWUyMDI4MThiODU0MTU1MGQ3YjgxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0
cDExL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMTEvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVy
L2h0dHAxMS9jb25uZWN0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMTEvcGFyc2VyLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMTEvcmVzcG9uc2UucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
aHlwZXIvaHlwZXIvaHR0cDIwL2Nvbm5lY3Rpb24ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAy
MC9jb25uZWN0aW9uLnB5CmluZGV4IDNjMzkyNzY3MWY1NjdkMGIzMzE0YThkNWM1ZDU2MTgwYWI2
YTI2OTMuLjEyMDc2Y2RhZjE0ZWFkMzcwZGU0ZTBlNmI1NzMwYTdmOWIyNTE3YzUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL2Nvbm5lY3Rpb24ucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9odHRwMjAvY29ubmVjdGlvbi5weQpAQCAtNSw5ICs1LDkgQEAgaHlwZXIvaHR0cDIw
L2Nvbm5lY3Rpb24KIAogT2JqZWN0cyB0aGF0IGJ1aWxkIGh5cGVyJ3MgY29ubmVjdGlvbi1sZXZl
bCBIVFRQLzIgYWJzdHJhY3Rpb24uCiAiIiIKLWZyb20gLi5oMiBpbXBvcnQgY29ubmVjdGlvbiBh
cyBoMkNvbm5lY3Rpb24KLWZyb20gLi5oMiBpbXBvcnQgZXZlbnRzIGFzIGgyRXZlbnRzCi1mcm9t
IC4uaDIgaW1wb3J0IHNldHRpbmdzIGFzIGgyU2V0dGluZ3MKK2ltcG9ydCBoMi5jb25uZWN0aW9u
CitpbXBvcnQgaDIuZXZlbnRzCitpbXBvcnQgaDIuc2V0dGluZ3MKIAogZnJvbSAuLmNvbXBhdCBp
bXBvcnQgc3NsCiBmcm9tIC4udGxzIGltcG9ydCB3cmFwX3NvY2tldCwgSDJfTlBOX1BST1RPQ09M
UywgSDJDX1BST1RPQ09MCkBAIC0xODUsNyArMTg1LDcgQEAgY2xhc3MgSFRUUDIwQ29ubmVjdGlv
bihvYmplY3QpOgogICAgICAgICB1c2VycyBzaG91bGQgYmUgc3Ryb25nbHkgZGlzY291cmFnZWQg
ZnJvbSBtZXNzaW5nIGFib3V0IHdpdGggY29ubmVjdGlvbgogICAgICAgICBvYmplY3RzIHRoZW1z
ZWx2ZXMuCiAgICAgICAgICIiIgotICAgICAgICBzZWxmLl9jb25uID0gX0xvY2tlZE9iamVjdCho
MkNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKCkpCisgICAgICAgIHNlbGYuX2Nvbm4gPSBfTG9ja2Vk
T2JqZWN0KGgyLmNvbm5lY3Rpb24uSDJDb25uZWN0aW9uKCkpCiAKICAgICAgICAgIyBTdHJlYW1z
IGFyZSBzdG9yZWQgaW4gYSBkaWN0aW9uYXJ5IGtleWVkIG9mZiB0aGVpciBzdHJlYW0gSURzLiBX
ZQogICAgICAgICAjIGFsc28gc2F2ZSB0aGUgbW9zdCByZWNlbnQgb25lIGZvciBlYXN5IGFjY2Vz
cyB3aXRob3V0IGhhdmluZyB0byB3YWxrCkBAIC0zODcsNyArMzg3LDcgQEAgY2xhc3MgSFRUUDIw
Q29ubmVjdGlvbihvYmplY3QpOgogICAgICAgICB3aXRoIHNlbGYuX2Nvbm4gYXMgY29ubjoKICAg
ICAgICAgICAgIGNvbm4uaW5pdGlhdGVfdXBncmFkZV9jb25uZWN0aW9uKCkKICAgICAgICAgICAg
IGNvbm4udXBkYXRlX3NldHRpbmdzKAotICAgICAgICAgICAgICAgIHtoMlNldHRpbmdzLkVOQUJM
RV9QVVNIOiBpbnQoc2VsZi5fZW5hYmxlX3B1c2gpfQorICAgICAgICAgICAgICAgIHtoMi5zZXR0
aW5ncy5TZXR0aW5nQ29kZXMuRU5BQkxFX1BVU0g6IGludChzZWxmLl9lbmFibGVfcHVzaCl9CiAg
ICAgICAgICAgICApCiAgICAgICAgIHNlbGYuX3NlbmRfb3V0c3RhbmRpbmdfZGF0YSgpCiAKQEAg
LTQwOCw3ICs0MDgsNyBAQCBjbGFzcyBIVFRQMjBDb25uZWN0aW9uKG9iamVjdCk6CiAgICAgICAg
IHdpdGggc2VsZi5fY29ubiBhcyBjb25uOgogICAgICAgICAgICAgY29ubi5pbml0aWF0ZV9jb25u
ZWN0aW9uKCkKICAgICAgICAgICAgIGNvbm4udXBkYXRlX3NldHRpbmdzKAotICAgICAgICAgICAg
ICAgIHtoMlNldHRpbmdzLkVOQUJMRV9QVVNIOiBpbnQoc2VsZi5fZW5hYmxlX3B1c2gpfQorICAg
ICAgICAgICAgICAgIHtoMi5zZXR0aW5ncy5TZXR0aW5nQ29kZXMuRU5BQkxFX1BVU0g6IGludChz
ZWxmLl9lbmFibGVfcHVzaCl9CiAgICAgICAgICAgICApCiAgICAgICAgIHNlbGYuX3NlbmRfb3V0
c3RhbmRpbmdfZGF0YSgpCiAKQEAgLTY3MywxMCArNjczLDEwIEBAIGNsYXNzIEhUVFAyMENvbm5l
Y3Rpb24ob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYucmVjZW50X3JlY3Zfc3RyZWFtcyB8PSBz
dHJlYW1faWRzCiAKICAgICAgICAgZm9yIGV2ZW50IGluIGV2ZW50czoKLSAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UoZXZlbnQsIGgyRXZlbnRzLkRhdGFSZWNlaXZlZCk6CisgICAgICAgICAgICBp
ZiBpc2luc3RhbmNlKGV2ZW50LCBoMi5ldmVudHMuRGF0YVJlY2VpdmVkKToKICAgICAgICAgICAg
ICAgICBzZWxmLl9hZGp1c3RfcmVjZWl2ZV93aW5kb3coZXZlbnQuZmxvd19jb250cm9sbGVkX2xl
bmd0aCkKICAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbXNbZXZlbnQuc3RyZWFtX2lkXS5yZWNl
aXZlX2RhdGEoZXZlbnQpCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGgyRXZl
bnRzLlB1c2hlZFN0cmVhbVJlY2VpdmVkKToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShl
dmVudCwgaDIuZXZlbnRzLlB1c2hlZFN0cmVhbVJlY2VpdmVkKToKICAgICAgICAgICAgICAgICBp
ZiBzZWxmLl9lbmFibGVfcHVzaDoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmV3X3N0cmVh
bShldmVudC5wdXNoZWRfc3RyZWFtX2lkLCBsb2NhbF9jbG9zZWQ9VHJ1ZSkKICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5zdHJlYW1zW2V2ZW50LnBhcmVudF9zdHJlYW1faWRdLnJlY2VpdmVfcHVz
aChldmVudCkKQEAgLTY4NiwxNyArNjg2LDE3IEBAIGNsYXNzIEhUVFAyMENvbm5lY3Rpb24ob2Jq
ZWN0KToKICAgICAgICAgICAgICAgICAgICAgIyBjbGllbnQgYWN0aW9uIHVuZGVmaW5lZCB3aGVu
IHRoZXkgZG8gaXQgYW55d2F5LiBTbyB3ZQogICAgICAgICAgICAgICAgICAgICAjIGp1c3QgcmVm
dXNlIHRoZSBzdHJlYW0gYW5kIGdvIGFib3V0IG91ciBidXNpbmVzcy4KICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5fc2VuZF9yc3RfZnJhbWUoZXZlbnQucHVzaGVkX3N0cmVhbV9pZCwgNykKLSAg
ICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgaDJFdmVudHMuUmVzcG9uc2VSZWNlaXZl
ZCk6CisgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGgyLmV2ZW50cy5SZXNwb25z
ZVJlY2VpdmVkKToKICAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbXNbZXZlbnQuc3RyZWFtX2lk
XS5yZWNlaXZlX3Jlc3BvbnNlKGV2ZW50KQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2
ZW50LCBoMkV2ZW50cy5UcmFpbGVyc1JlY2VpdmVkKToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0
YW5jZShldmVudCwgaDIuZXZlbnRzLlRyYWlsZXJzUmVjZWl2ZWQpOgogICAgICAgICAgICAgICAg
IHNlbGYuc3RyZWFtc1tldmVudC5zdHJlYW1faWRdLnJlY2VpdmVfdHJhaWxlcnMoZXZlbnQpCi0g
ICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGgyRXZlbnRzLlN0cmVhbUVuZGVkKToK
KyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgaDIuZXZlbnRzLlN0cmVhbUVuZGVk
KToKICAgICAgICAgICAgICAgICBzZWxmLnN0cmVhbXNbZXZlbnQuc3RyZWFtX2lkXS5yZWNlaXZl
X2VuZF9zdHJlYW0oZXZlbnQpCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGgy
RXZlbnRzLlN0cmVhbVJlc2V0KToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwg
aDIuZXZlbnRzLlN0cmVhbVJlc2V0KToKICAgICAgICAgICAgICAgICBpZiBldmVudC5zdHJlYW1f
aWQgbm90IGluIHNlbGYucmVzZXRfc3RyZWFtczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5y
ZXNldF9zdHJlYW1zLmFkZChldmVudC5zdHJlYW1faWQpCiAgICAgICAgICAgICAgICAgICAgIHNl
bGYuc3RyZWFtc1tldmVudC5zdHJlYW1faWRdLnJlY2VpdmVfcmVzZXQoZXZlbnQpCi0gICAgICAg
ICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGgyRXZlbnRzLkNvbm5lY3Rpb25UZXJtaW5hdGVk
KToKKyAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgaDIuZXZlbnRzLkNvbm5lY3Rp
b25UZXJtaW5hdGVkKToKICAgICAgICAgICAgICAgICAjIElmIHdlIGdldCBHb0F3YXkgd2l0aCBl
cnJvciBjb2RlIHplcm8sIHdlIGFyZSBkb2luZyBhCiAgICAgICAgICAgICAgICAgIyBncmFjZWZ1
bCBzaHV0ZG93biBhbmQgYWxsIGlzIHdlbGwuIE90aGVyd2lzZSwgdGhyb3cgYW4KICAgICAgICAg
ICAgICAgICAjIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIw
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMjAvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYWY4NjU1ZWM2MGQ3ZjE0ZGU4Y2UzYWNl
YzQwMjBkYzk0ZTQ0NjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMjAvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC9fX2lu
aXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvaHR0cDIwL2Nvbm5lY3Rpb24ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyL2h5cGVyL2h0dHAyMC9lcnJvcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC9leGNl
cHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMjAvcmVzcG9uc2UucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyL2h5cGVyL2h0dHAyMC9zdHJlYW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2h0dHAyMC91dGls
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRwMjAvd2luZG93LnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L2h5cGVyL2h5cGVyL3BhY2thZ2VzL2hwYWNrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9wYWNrYWdlcy9ocGFjay93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNWU1MDA1NDU3NjM0ZmJhMzA0NGE2OGQ2OGFmODE1MDgwYzRkYTUzYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVy
L3BhY2thZ2VzL2hwYWNrL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAs
MCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUg
VzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdl
YktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoK
LQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0
aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAot
Ci1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
UHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFs
dWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxp
c3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9fX2luaXRfXy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHBhY2svY29tcGF0LnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9wYWNrYWdlcy9ocGFjay9leGNlcHRpb25zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9ocGFjay9ocGFjay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHBhY2sv
aHBhY2tfY29tcGF0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9odWZmbWFu
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9ocGFjay9odWZmbWFuX2NvbnN0YW50cy5w
eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9oeXBlcmZyYW1lL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9oeXBlcmZyYW1lL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhN2YwYmZmMzk2NjU2YWEyNmI3
ZjY3NjQ2MmRmMjFlNzBlNmRjMzg0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvaHlwZXJmcmFtZS93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvcGFja2FnZXMvaHlwZXJmcmFtZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlw
ZXIvcGFja2FnZXMvaHlwZXJmcmFtZS9mbGFncy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2Fn
ZXMvaHlwZXJmcmFtZS9mcmFtZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNr
YWdlcy9yZmMzOTg2L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy9y
ZmMzOTg2L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZjgy
YzQ4YWMwZTA3OWRlMjRiNWZmYzc3OGQyOWNjODNmYjc1NjE1Li4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZj
Mzk4Ni93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni9MSUNFTlNFCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
ci9oeXBlci9wYWNrYWdlcy9yZmMzOTg2L19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9yZmMzOTg2L2FwaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4
Ni9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3BhY2thZ2VzL3JmYzM5ODYvZXhjZXB0aW9u
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvcmZjMzk4Ni9taXNjLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
eXBlci9oeXBlci9wYWNrYWdlcy9yZmMzOTg2L25vcm1hbGl6ZXJzLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9o
eXBlci9wYWNrYWdlcy9yZmMzOTg2L3BhcnNlcmVzdWx0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9w
YWNrYWdlcy9yZmMzOTg2L3VyaS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNr
YWdlcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFja2FnZXMvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc4Nzk0MWQyYWE0ZWQ3OTExMTgy
YzI4NTIxMzgxZjcwMzUwOGEwOWQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvcGFj
a2FnZXMvX19pbml0X18ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCA1OTllNjE5ZDNlZWZmNTQ4NTBiOTZmYTVhZTViNjRjNGQwZWUxMWI1Li4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIv
aHlwZXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L2h5cGVyL2h5cGVyL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jZXJ0
cy5wZW0KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L2h5cGVyL2h5cGVyL2NsaS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvY29tcGF0
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9jb250cmliLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlci9oeXBlci9odHRw
bGliX2NvbXBhdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXIvaHlwZXIvc3NsX2NvbXBhdC5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXIvaHlwZXIvdGxzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS5l
Z2ctaW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lLmVnZy1p
bmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDc2OWQ1
MjRmOGZjMzMwMTQzNGQxNDZkYjI2N2I1NWNlMjVhMmJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lLmVnZy1p
bmZvL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vUEtHLUlORk8KLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5
cGVyZnJhbWUvaHlwZXJmcmFtZS5lZ2ctaW5mby9TT1VSQ0VTLnR4dAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFt
ZS9oeXBlcmZyYW1lLmVnZy1pbmZvL2RlcGVuZGVuY3lfbGlua3MudHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZy
YW1lL2h5cGVyZnJhbWUuZWdnLWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9o
eXBlcmZyYW1lL2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlw
ZXJmcmFtZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWRm
NWI1ZjI4NGZlMmNjM2Q4NzBlNTg4YTkwMDMzNjdhNmEzMGQ1OC4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvaHlwZXJmcmFtZS93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5
cGVyZnJhbWUvZXhjZXB0aW9ucy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9oeXBlcmZyYW1lL2ZsYWdz
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL2h5cGVyZnJhbWUvZnJhbWUucHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvaHlwZXJmcmFtZS90ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3Qv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjZDY3YmY5Zjhj
ZGMwMGIzYWEyNzU3NmE0YWUyMjlmY2VlOWIzN2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUv
dGVzdC90ZXN0X2ZsYWdzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3Rlc3QvdGVzdF9mcmFtZXMucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJm
cmFtZS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY2YzQ0
MDlhNTAxOTBmYjBlMzAwY2I1NGY2MmM0NTFkYjRlNWYyOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVyZnJhbWUv
Q09OVFJJQlVUT1JTLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlwZXJmcmFtZS9ISVNUT1JZLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvaHlw
ZXJmcmFtZS9MSUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL01BTklGRVNULmluCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBl
cmZyYW1lL1BLRy1JTkZPCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L2h5cGVy
ZnJhbWUvc2V0dXAuY2ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9oeXBlcmZyYW1lL3NldHVwLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRv
b2xzL2RvY3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMy
ZGNlODg0YTgzZGY4YjEyMDYwNjQzNWUyZTkwY2FhMjgwYjE4MDMuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2NzL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9tb3JlLWl0ZXJ0b29scy9kb2NzL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9kb2Nz
L2FwaS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvY29uZi5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1p
dGVydG9vbHMvZG9jcy9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvbGljZW5z
ZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvbWFrZS5iYXQKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRl
cnRvb2xzL2RvY3MvdGVzdGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL2RvY3MvdmVyc2lv
bnMucnN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rl
c3RzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0
cy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJj
MjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL19faW5pdF9fLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkK
QEAgLTEgKzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFy
Y2ggdGhpcyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmls
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90ZXN0cy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzMDJhODE4YjU4
MDUzYzM4ZTAyYjQ2Y2FkMjc4ZmEwOGVmMzNkZWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy90
ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3Rlc3RzL3Rlc3RfbW9yZS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMvdGVzdHMvdGVzdF9yZWNpcGVzLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy9tb3JlX2l0ZXJ0b29scy93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTdkNzliNjhhNWU0YjU0OTVhZGMwNDBh
OGY0NGU5MjllNWFhMTVkMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL21vcmVfaXRlcnRvb2xzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0
b29scy9tb3JlX2l0ZXJ0b29scy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9y
ZV9pdGVydG9vbHMvbW9yZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvbW9yZV9pdGVydG9vbHMv
cmVjaXBlcy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0ZXJ0b29scy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvbW9yZS1pdGVydG9vbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg3NjczMWFlZDNlMTY2MGZkZTg2NzI5NTkxNjdlZWE5YmMxMzhiOTguLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9tb3JlLWl0
ZXJ0b29scy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMv
TUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUtaXRlcnRvb2xzL1JFQURNRS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L21vcmUt
aXRlcnRvb2xzL3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvbW9yZS1pdGVydG9vbHMvc2V0dXAucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L21vcmUtaXRlcnRvb2xzL3RveC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvX3N0
YXRpYy9pbWcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL19zdGF0aWMvaW1nL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjVjNjc5NWJhMWFm
ZTI4ZTUxNmVmYWYxMWQ3MDhjYjhhMTA5OWQ2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3MvX3N0YXRpYy9pbWcvdzNjLWltcG9y
dC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBk
aXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBt
b2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEg
cHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWIt
cGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13
M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3Zl
IHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdn
eS9kb2NzL19zdGF0aWMvaW1nL3BsdWcucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2Nz
L2V4YW1wbGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9leGFtcGxlcy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY4YjZhMThlMTY2Yzdk
NGVmYjViMmJiNjIxMTkxNmY1ZTAwODE5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2V4YW1wbGVzL3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9j
cy9leGFtcGxlcy9maXJzdGV4YW1wbGUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L2RvY3Mv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzViNTgxYjhjMmMyZmUyMmRjMmRlNjdhYzUwNjk0Mjk2
NDAzYjQ3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L2RvY3MvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9kb2NzL2FwaV9yZWZlcmVuY2UucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
bHVnZ3kvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvZG9jcy9pbmRleC5yc3QKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L3BsdWdneS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3BsdWdn
eS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQwZDVhMDkz
N2Q4MmU2ZTIzN2E1NmYxZjNiY2YyMTRkY2VjMmUyYi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVn
Z3kvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9wbHVnZ3kvY2FsbGVycy5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3Rp
bmcvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0YmRiYzEx
ZDk1NTI5ZWUxNmRlYWIwNWM3MTdmNGM4YzAzYjBhNjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rl
c3RpbmcvYmVuY2htYXJrLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy9jb25mdGVzdC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF9kZXRhaWxzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdGVzdGluZy90
ZXN0X2hlbHBlcnMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfaG9va3JlbGF5LnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9wbHVnZ3kvdGVzdGluZy90ZXN0X21ldGhvZF9vcmRlcmluZy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5
L3Rlc3RpbmcvdGVzdF9tdWx0aWNhbGwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS90ZXN0aW5nL3Rlc3RfcGx1
Z2lubWFuYWdlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3Rlc3RpbmcvdGVzdF90cmFjZXIucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcGx1Z2d5L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjMWU1OWMxYTI1Zjg0YTcxZmVj
ZGUyMTc0NWI2ODZkNDliYjM1YjUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3BsdWdneS9DSEFOR0VMT0cucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
bHVnZ3kvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvUkVB
RE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcGx1Z2d5L2FwcHZleW9yLnltbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcGx1Z2d5L3NldHVwLmNm
ZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcGx1Z2d5L3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9wbHVnZ3kvdG94LmluaQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9iZW5jaC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvYmVuY2gvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZmFkZjAyZjQ3YzZlMmMxZTMx
NDYxZWQ1ZjhjODNhNzhkZmVlMmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9iZW5jaC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvYmVuY2gvbG9jYWxwYXRoLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L2RvYy9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9k
b2MvX3RlbXBsYXRlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNTU5NWZiNWUyNDkzNzY2NTQ0NWQzYmY5ZTIwMTIzYTAxZjA3YTUxYS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9fdGVtcGxhdGVz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9kb2MvX3RlbXBsYXRlcy9sYXlvdXQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9k
b2MvYW5ub3VuY2UvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS93M2MtaW1w
b3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTMyMjA5YzZhMjllNjQ1ZTAz
MmUwZDRiMWYyN2U4MjY2NmNmOThmOC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDMzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3Jl
bGVhc2UtMC45LjAudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0wLjkuMi50eHQK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMC4wLnR4dAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fu
bm91bmNlL3JlbGVhc2UtMS4wLjEudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0x
LjAuMi50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMS4wLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4xLjEudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2Uv
cmVsZWFzZS0xLjIuMC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNlLTEuMi4xLnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4zLjAudHh0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mv
YW5ub3VuY2UvcmVsZWFzZS0xLjMuMS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5jZS9yZWxlYXNl
LTEuMy4yLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS4zLjMudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZS0xLjMuNC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9hbm5vdW5j
ZS9yZWxlYXNlLTEuNC4wLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2Fubm91bmNlL3JlbGVhc2UtMS40LjEu
dHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9kb2MvYW5ub3VuY2UvcmVsZWFzZXMudHh0CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L2RvYy9leGFtcGxlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvZXhhbXBsZS93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcxZGNmMmMyMGMzYzk2
YmQ0ZTlmOGFiODI3NDZiNzQ1ZDUwNzQwYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9leGFtcGxlL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvZXhhbXBsZS9n
ZW5odG1sLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9kb2MvZXhhbXBsZS9nZW5odG1sY3NzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9k
b2MvZXhhbXBsZS9nZW54bWwucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2ltZy93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvZG9jL2ltZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggM2U4OWE2NmU4MGQ2ZWUzYTU1ZGJiNWRkYzQwYThlZDM5MGMwMWRkOS4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2Rv
Yy9pbWcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L2RvYy9pbWcvcHlsaWIucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBiM2FmMDU1YmY4NGFlNzE0ODJhMGJiZDA0NDIxOGViNDk3NTI5ZDg5
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
ZG9jL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9kb2MvTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9jaGFuZ2Vsb2cudHh0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9kb2MvY29kZS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2MvZG93
bmxvYWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2ZhcS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9pbmRleC50eHQK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L2RvYy9pbnN0YWxsLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2lvLnR4dAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
ZG9jL2xpbmtzLmluYwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvZG9jL2xvZy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L2RvYy9taXNjLnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvZG9jL3BhdGgudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9kb2Mvc3R5bGUuY3NzCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS9kb2MveG1sLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29kZS93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvcHkvX2NvZGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDdiYTFhZDJjZWE2YmU4OGY1ZWRhMjFjYWRmMDEwYjU0NTQzYjc4MTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fY29k
ZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX2NvZGUvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL19hc3NlcnRp
b25uZXcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL19hc3NlcnRpb25vbGQucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L19jb2RlL19weTJ0cmFjZWJhY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19jb2RlL2Fzc2VydGlvbi5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX2NvZGUvY29kZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2NvZGUvc291cmNlLnB5CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19pby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2lv
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTQ0Mzk3MzYw
OThhNWU3NWU5NTkzOTFkMGYzZjUyOGQ3ZTM1ODQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2lvL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9faW8vX19pbml0
X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3B5L19pby9jYXB0dXJlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9faW8vc2FmZXJl
cHIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5L3B5L19pby90ZXJtaW5hbHdyaXRlci5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9weS9fbG9nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fbG9nL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzJiMjQyZWRkN2YzMzIzNmY3Mjhj
NzZkMzBlYmFiZmFmM2NkMzhhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvcHkvX2xvZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX2xvZy9fX2luaXRfXy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHkvcHkvX2xvZy9sb2cucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19sb2cvd2FybmluZy5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS9weS9fcGF0aC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZWMyZjkyM2Zh
ZGE5ZmEwYjJmYjU4ZGUzMTkzY2ViM2FkMjllOTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcGF0aC93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3BhdGgvX19p
bml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wYXRoL2NhY2hldXRpbC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Bh
dGgvY29tbW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcGF0aC9sb2NhbC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Bh
dGgvc3ZudXJsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcGF0aC9zdm53Yy5weQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9weS9fcHJvY2Vzcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Byb2Nlc3MvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhNTQ1NjcwZjJlOThm
ZDA5OGYwMjNhZTk2MWUyN2UwNDZmOGM0MWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fcHJvY2Vzcy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Byb2Nlc3Mv
X19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wcm9jZXNzL2NtZGV4ZWMucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L19wcm9jZXNzL2ZvcmtlZGZ1bmMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19wcm9jZXNzL2tpbGxwcm9jLnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9fX2luaXRfXy5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5pdF9fLnB5CmluZGV4IGE2ODM0Yjgy
ODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlh
ZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2th
Z2VzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5p
dF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24g
dG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBr
Zy0xLjQuZGlzdC1pbmZvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFj
a2FnZXMvYXBpcGtnLTEuNC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGY3NzZlZmM3ODFjOWU5MDZhMTBmMmZlY2Y1MWU0MmYzMWRmZjkwODMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9w
eS9fdmVuZG9yZWRfcGFja2FnZXMvYXBpcGtnLTEuNC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5k
b3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9ERVNDUklQVElPTi5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9JTlNUQUxMRVIK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9hcGlwa2ctMS40LmRpc3QtaW5mby9NRVRB
REFUQQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1pbmZv
L1JFQ09SRAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBrZy0xLjQuZGlzdC1p
bmZvL1dIRUVMCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvYXBpcGtnLTEuNC5kaXN0
LWluZm8vbWV0YWRhdGEuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2FwaXBr
Zy0xLjQuZGlzdC1pbmZvL3RvcF9sZXZlbC50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3Zl
bmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25maWctMS4wLjAuZGlzdC1pbmZv
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmRmZWFkZGUw
YzYyMmNmNWFmYzQzZDUzMWRjZDE3NTg0NDMzYmQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNv
bmZpZy0xLjAuMC5kaXN0LWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5kb3JlZF9wYWNrYWdlcy9pbmljb25m
aWctMS4wLjAuZGlzdC1pbmZvL0RFU0NSSVBUSU9OLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVk
X3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8vSU5TVEFMTEVSCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9w
eS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRpc3QtaW5mby9NRVRBREFUQQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8v
UkVDT1JECi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLTEuMC4wLmRp
c3QtaW5mby9XSEVFTAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL2luaWNvbmZpZy0x
LjAuMC5kaXN0LWluZm8vbWV0YWRhdGEuanNvbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2th
Z2VzL2luaWNvbmZpZy0xLjAuMC5kaXN0LWluZm8vdG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5
L192ZW5kb3JlZF9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNjI3NzJhNzlkMDMxNDMzNDA0MGQwN2VkMjQ1YTZhYzIxZWE4OGJlYi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L192ZW5k
b3JlZF9wYWNrYWdlcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAg
QEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFcz
QyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJL
aXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0J
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhl
IFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQot
RG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVBy
b3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVl
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0
IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3ZlbmRvcmVkX3BhY2thZ2VzL19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS9weS9fdmVuZG9yZWRfcGFja2FnZXMvYXBpcGtnLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9weS9fdmVu
ZG9yZWRfcGFja2FnZXMvaW5pY29uZmlnLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS9weS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZjQyYTMwY2QwMGRmYzE3YjY0ZjdiNzVmYjQyMTU4ZmI4YWY4ZTQ1MS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weS9weS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX19tZXRhaW5mby5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
cHkvX2J1aWx0aW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3B5L19lcnJvci5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvX3N0ZC5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHkvcHkvX3htbGdlbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvcHkvdGVzdC5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS90YXNrcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGFza3MvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlOGQyNDJmNTg0NzJlOWZkMGEw
OGYyNjU3MWJiMzQ3OTYwZGNhNWUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weS90YXNrcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGFza3MvX19pbml0X18ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3Rhc2tzL3ZlbmRvcmluZy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvY29kZS93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJjMzg0OTE5YWIxYmQ5Zjc3NTU3MDEzMDk2MmQ3
M2E4ODk4MTE0Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rlc3RpbmcvY29kZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9jb2RlL3Rlc3RfYXNzZXJ0aW9u
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUvdGVzdF9jb2RlLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L2NvZGUvdGVzdF9leGNpbmZvLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2NvZGUvdGVzdF9zb3VyY2Uu
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9pb18vdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3Rlc3RpbmcvaW9fL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA4N2MzNmMxZjg1ZGEyYmI0OTQ4YjAzNjNmZGU3NDRkZGRkMWU5NzFmLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9pb18v
dzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMg
aW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4K
LURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwg
Y3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRz
L2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkg
b3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3Rlc3RpbmcvaW9fL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2lvXy90ZXN0
X2NhcHR1cmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvaW9fL3Rlc3Rfc2FmZXJlcHIucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3Rlc3RpbmcvaW9fL3Rlc3RfdGVybWluYWx3cml0ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvdGVzdGluZy9sb2cvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL19faW5pdF9f
LnB5CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLmU2OWRl
MjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9sb2cvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy9fX2luaXRf
Xy5weQpAQCAtMSArMCwwIEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRv
IHNlYXJjaCB0aGlzIGRpcmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBv
ZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weS90ZXN0aW5nL2xvZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggNGMwY2E1MjgzMzhjMWU5OWE1ZTdlYjNkMjViZTEyYWE0OWY1ZjNkZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rpbmcv
bG9nL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRl
c3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRv
cnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3Rl
YWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dp
dGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2Ny
aXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9k
aWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS90ZXN0aW5nL2xvZy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9sb2cv
dGVzdF9sb2cucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvbG9nL3Rlc3Rfd2FybmluZy5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rp
bmcvcGF0aC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTY2
ZDdiMTc4MDJlMjkzMTI2ZmEyNDQ5YzNlYWI2ODU4ZGY5YzRiMi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkv
dGVzdGluZy9wYXRoL2NvbW1vbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wYXRoL2NvbmZ0ZXN0LnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvcmVwb3Rlc3QuZHVtcAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9w
YXRoL3N2bnRlc3RiYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdGVzdF9jYWNoZXV0aWwu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC90ZXN0X2xvY2FsLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L3BhdGgvdGVzdF9zdm5hdXRoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3BhdGgvdGVzdF9zdm51cmwu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5L3Rlc3RpbmcvcGF0aC90ZXN0X3N2bndjLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5L3Rlc3RpbmcvcHJvY2Vzcy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wcm9j
ZXNzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzFmODll
NGFjZmVlMzZhZTIzYTBkYjZjMzYzODFjNTNiNjI2MjJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9wcm9jZXNzL3czYy1pbXBv
cnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMg
ZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1Qg
bW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBh
IHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQt
dzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92
ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90
ZXN0aW5nL3Byb2Nlc3MvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcHJvY2Vzcy90ZXN0
X2NtZGV4ZWMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3RpbmcvcHJvY2Vzcy90ZXN0X2ZvcmtlZGZ1bmMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rlc3RpbmcvcHJvY2Vzcy90ZXN0X2tpbGxwcm9jLnB5CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5L3Rlc3Rpbmcvcm9vdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzMyZTU1NDUw
YmJhMjMzZTE2ZTBiZGYyODM1N2JiOGZlMThjNDM5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9yb290L3czYy1pbXBvcnQubG9n
CisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0
b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5
IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwg
cmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRm
b3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRl
c3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlz
IGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6
Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5n
L3Jvb3QvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5L3Rlc3Rpbmcvcm9vdC90ZXN0X2J1aWx0aW4ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rlc3Rpbmcvcm9vdC90ZXN0X2Vycm9yLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jv
b3QvdGVzdF9weV9pbXBvcnRzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3Jvb3QvdGVzdF9zdGQucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5L3Rlc3Rpbmcvcm9vdC90ZXN0X3htbGdlbi5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eS90ZXN0aW5nL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS90ZXN0aW5nL3czYy1pbXBvcnQubG9n
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWViOTQ0Zjc0MmM0MDZjNTBjOWNhYTNl
N2QzMjA4MjRjYjlmMDEyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHkvdGVzdGluZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdGVzdGluZy9jb25mdGVzdC5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxNTdkMjlhYjdmMjNlODgzY2Y3NWJhOWFlMjIz
OWVkZTgxNmE4ODUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHkvQVVUSE9SUwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvQ0hBTkdFTE9HCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9M
SUNFTlNFCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weS9NQU5JRkVTVC5pbgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvUkVBRE1FLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHkvYXBwdmV5b3IueW1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weS9jb25mdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvc2V0dXAuY2Zn
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weS9zZXR1cC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHkvdG94LmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvLmdpdGh1Yi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvdzNjLWlt
cG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiN2NmMjIyNTY0YjQyZmY0
ODE3MmRiNzBiMzM4MzA4NjEzOThhOGIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvLmdpdGh1Yi93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0Ly5naXRodWIvSVNT
VUVfVEVNUExBVEUubWQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC8uZ2l0aHViL1BVTExfUkVRVUVTVF9URU1QTEFU
RS5tZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDZlNDFmMDUwNGU0NzA2NDI4ZjhiYzI0MWQ1ZDJkMTBlZGJhMDEzOGIuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fX2lu
aXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotX19hbGxfXyA9IFsnX192ZXJz
aW9uX18nXQotCi10cnk6Ci0gICAgZnJvbSAuX3ZlcnNpb24gaW1wb3J0IHZlcnNpb24gYXMgX192
ZXJzaW9uX18KLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAjIGJyb2tlbiBpbnN0YWxsYXRpb24s
IHdlIGRvbid0IGV2ZW4gdHJ5Ci0gICAgIyB1bmtub3duIG9ubHkgd29ya3MgYmVjYXVzZSB3ZSBk
byBwb29yIG1hbnMgdmVyc2lvbiBjb21wYXJlCi0gICAgX192ZXJzaW9uX18gPSAndW5rbm93bicK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9fYXJnY29tcGxldGUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA2MjVhNzVmOWYxYjcwNTBkMzhmMzY1YzQxMzVkZDQ4YWE3MWIxZDYuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9f
YXJnY29tcGxldGUucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMDMgKzAsMCBAQAotCi0iIiJhbGxv
dyBiYXNoLWNvbXBsZXRpb24gZm9yIGFyZ3BhcnNlIHdpdGggYXJnY29tcGxldGUgaWYgaW5zdGFs
bGVkCi1uZWVkcyBhcmdjb21wbGV0ZT49MC41LjYgZm9yIHB5dGhvbiAzLjIvMy4zIChvbGRlciB2
ZXJzaW9ucyBmYWlsCi10byBmaW5kIHRoZSBtYWdpYyBzdHJpbmcsIHNvIF9BUkdDT01QTEVURSBl
bnYuIHZhciBpcyBuZXZlciBzZXQsIGFuZAotdGhpcyBkb2VzIG5vdCBuZWVkIHNwZWNpYWwgY29k
ZS4KLQotRnVuY3Rpb24gdHJ5X2FyZ2NvbXBsZXRlKHBhcnNlcikgc2hvdWxkIGJlIGNhbGxlZCBk
aXJlY3RseSBiZWZvcmUKLXRoZSBjYWxsIHRvIEFyZ3VtZW50UGFyc2VyLnBhcnNlX2FyZ3MoKS4K
LQotVGhlIGZpbGVzY29tcGxldGVyIGlzIHdoYXQgeW91IG5vcm1hbGx5IHdvdWxkIHVzZSBvbiB0
aGUgcG9zaXRpb25hbAotYXJndW1lbnRzIHNwZWNpZmljYXRpb24sIGluIG9yZGVyIHRvIGdldCAi
ZGlybmFtZS8iIGFmdGVyICJkaXJuPFRBQj4iCi1pbnN0ZWFkIG9mIHRoZSBkZWZhdWx0ICJkaXJu
YW1lICI6Ci0KLSAgIG9wdHBhcnNlci5hZGRfYXJndW1lbnQoQ29uZmlnLl9maWxlX29yX2Rpciwg
bmFyZ3M9JyonCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5jb21wbGV0ZXI9Zmls
ZXNjb21wbGV0ZXIKLQotT3RoZXIsIGFwcGxpY2F0aW9uIHNwZWNpZmljLCBjb21wbGV0ZXJzIHNo
b3VsZCBnbyBpbiB0aGUgZmlsZQotZG9pbmcgdGhlIGFkZF9hcmd1bWVudCBjYWxscyBhcyB0aGV5
IG5lZWQgdG8gYmUgc3BlY2lmaWVkIGFzIC5jb21wbGV0ZXIKLWF0dHJpYnV0ZXMgYXMgd2VsbC4g
KElmIGFyZ2NvbXBsZXRlIGlzIG5vdCBpbnN0YWxsZWQsIHRoZSBmdW5jdGlvbiB0aGUKLWF0dHJp
YnV0ZSBwb2ludHMgdG8gd2lsbCBub3QgYmUgdXNlZCkuCi0KLVNQRUVEVVAKLT09PT09PT0KLVRo
ZSBnZW5lcmljIGFyZ2NvbXBsZXRlIHNjcmlwdCBmb3IgYmFzaC1jb21wbGV0aW9uCi0oL2V0Yy9i
YXNoX2NvbXBsZXRpb24uZC9weXRob24tYXJnY29tcGxldGUuc2ggKQotdXNlcyBhIHB5dGhvbiBw
cm9ncmFtIHRvIGRldGVybWluZSBzdGFydHVwIHNjcmlwdCBnZW5lcmF0ZWQgYnkgcGlwLgotWW91
IGNhbiBzcGVlZCB1cCBjb21wbGV0aW9uIHNvbWV3aGF0IGJ5IGNoYW5naW5nIHRoaXMgc2NyaXB0
IHRvIGluY2x1ZGUKLSAgIyBQWVRIT05fQVJHQ09NUExFVEVfT0sKLXNvIHRoZSB0aGUgcHl0aG9u
LWFyZ2NvbXBsZXRlLWNoZWNrLWVhc3ktaW5zdGFsbC1zY3JpcHQgZG9lcyBub3QKLW5lZWQgdG8g
YmUgY2FsbGVkIHRvIGZpbmQgdGhlIGVudHJ5IHBvaW50IG9mIHRoZSBjb2RlIGFuZCBzZWUgaWYg
dGhhdCBpcwotbWFya2VkICB3aXRoIFBZVEhPTl9BUkdDT01QTEVURV9PSwotCi1JTlNUQUxML0RF
QlVHR0lORwotPT09PT09PT09PT09PT09PT0KLVRvIGluY2x1ZGUgdGhpcyBzdXBwb3J0IGluIGFu
b3RoZXIgYXBwbGljYXRpb24gdGhhdCBoYXMgc2V0dXAucHkgZ2VuZXJhdGVkCi1zY3JpcHRzOgot
LSBhZGQgdGhlIGxpbmU6Ci0gICAgIyBQWVRIT05fQVJHQ09NUExFVEVfT0sKLSAgbmVhciB0aGUg
dG9wIG9mIHRoZSBtYWluIHB5dGhvbiBlbnRyeSBwb2ludAotLSBpbmNsdWRlIGluIHRoZSBmaWxl
IGNhbGxpbmcgcGFyc2VfYXJncygpOgotICAgIGZyb20gX2FyZ2NvbXBsZXRlIGltcG9ydCB0cnlf
YXJnY29tcGxldGUsIGZpbGVzY29tcGxldGVyCi0gICAsIGNhbGwgdHJ5X2FyZ2NvbXBsZXRlIGp1
c3QgYmVmb3JlIHBhcnNlX2FyZ3MoKSwgYW5kIG9wdGlvbmFsbHkgYWRkCi0gICBmaWxlc2NvbXBs
ZXRlciB0byB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMnIGFkZF9hcmd1bWVudCgpCi1JZiB0aGlu
Z3MgZG8gbm90IHdvcmsgcmlnaHQgYXdheToKLS0gc3dpdGNoIG9uIGFyZ2NvbXBsZXRlIGRlYnVn
Z2luZyB3aXRoIChhbHNvIGhlbHBmdWwgd2hlbiBkb2luZyBjdXN0b20KLSAgY29tcGxldGVycyk6
Ci0gICAgZXhwb3J0IF9BUkNfREVCVUc9MQotLSBydW46Ci0gICAgcHl0aG9uLWFyZ2NvbXBsZXRl
LWNoZWNrLWVhc3ktaW5zdGFsbC1zY3JpcHQgJCh3aGljaCBhcHBuYW1lKQotICAgIGVjaG8gJD8K
LSAgd2lsbCBlY2hvIDAgaWYgdGhlIG1hZ2ljIGxpbmUgaGFzIGJlZW4gZm91bmQsIDEgaWYgbm90
Ci0tIHNvbWV0aW1lcyBpdCBoZWxwcyB0byBmaW5kIGVhcmx5IG9uIGVycm9ycyB1c2luZzoKLSAg
ICBfQVJHQ09NUExFVEU9MSBfQVJDX0RFQlVHPTEgYXBwbmFtZQotICB3aGljaCBzaG91bGQgdGhy
b3cgYSBLZXlFcnJvcjogJ0NPTVBMSU5FJyAod2hpY2ggaXMgcHJvcGVybHkgc2V0IGJ5IHRoZQot
ICBnbG9iYWwgYXJnY29tcGxldGUgc2NyaXB0KS4KLSIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9y
dCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHN5cwot
aW1wb3J0IG9zCi1mcm9tIGdsb2IgaW1wb3J0IGdsb2IKLQotCi1jbGFzcyBGYXN0RmlsZXNDb21w
bGV0ZXI6Ci0gICAgJ0Zhc3QgZmlsZSBjb21wbGV0ZXIgY2xhc3MnCi0KLSAgICBkZWYgX19pbml0
X18oc2VsZiwgZGlyZWN0b3JpZXM9VHJ1ZSk6Ci0gICAgICAgIHNlbGYuZGlyZWN0b3JpZXMgPSBk
aXJlY3RvcmllcwotCi0gICAgZGVmIF9fY2FsbF9fKHNlbGYsIHByZWZpeCwgKiprd2FyZ3MpOgot
ICAgICAgICAiIiJvbmx5IGNhbGxlZCBvbiBub24gb3B0aW9uIGNvbXBsZXRpb25zIiIiCi0gICAg
ICAgIGlmIG9zLnBhdGguc2VwIGluIHByZWZpeFsxOl06Ci0gICAgICAgICAgICBwcmVmaXhfZGly
ID0gbGVuKG9zLnBhdGguZGlybmFtZShwcmVmaXgpICsgb3MucGF0aC5zZXApCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBwcmVmaXhfZGlyID0gMAotICAgICAgICBjb21wbGV0aW9uID0gW10K
LSAgICAgICAgZ2xvYmJlZCA9IFtdCi0gICAgICAgIGlmICcqJyBub3QgaW4gcHJlZml4IGFuZCAn
Pycgbm90IGluIHByZWZpeDoKLSAgICAgICAgICAgICMgd2UgYXJlIG9uIHVuaXgsIG90aGVyd2lz
ZSBubyBiYXNoCi0gICAgICAgICAgICBpZiBub3QgcHJlZml4IG9yIHByZWZpeFstMV0gPT0gb3Mu
cGF0aC5zZXA6Ci0gICAgICAgICAgICAgICAgZ2xvYmJlZC5leHRlbmQoZ2xvYihwcmVmaXggKyAn
LionKSkKLSAgICAgICAgICAgIHByZWZpeCArPSAnKicKLSAgICAgICAgZ2xvYmJlZC5leHRlbmQo
Z2xvYihwcmVmaXgpKQotICAgICAgICBmb3IgeCBpbiBzb3J0ZWQoZ2xvYmJlZCk6Ci0gICAgICAg
ICAgICBpZiBvcy5wYXRoLmlzZGlyKHgpOgotICAgICAgICAgICAgICAgIHggKz0gJy8nCi0gICAg
ICAgICAgICAjIGFwcGVuZCBzdHJpcHBpbmcgdGhlIHByZWZpeCAobGlrZSBiYXNoLCBub3QgbGlr
ZSBjb21wZ2VuKQotICAgICAgICAgICAgY29tcGxldGlvbi5hcHBlbmQoeFtwcmVmaXhfZGlyOl0p
Ci0gICAgICAgIHJldHVybiBjb21wbGV0aW9uCi0KLQotaWYgb3MuZW52aXJvbi5nZXQoJ19BUkdD
T01QTEVURScpOgotICAgIHRyeToKLSAgICAgICAgaW1wb3J0IGFyZ2NvbXBsZXRlLmNvbXBsZXRl
cnMKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHN5cy5leGl0KC0xKQotICAgIGZp
bGVzY29tcGxldGVyID0gRmFzdEZpbGVzQ29tcGxldGVyKCkKLQotICAgIGRlZiB0cnlfYXJnY29t
cGxldGUocGFyc2VyKToKLSAgICAgICAgYXJnY29tcGxldGUuYXV0b2NvbXBsZXRlKHBhcnNlciwg
YWx3YXlzX2NvbXBsZXRlX29wdGlvbnM9RmFsc2UpCi1lbHNlOgotICAgIGRlZiB0cnlfYXJnY29t
cGxldGUocGFyc2VyKToKLSAgICAgICAgcGFzcwotICAgIGZpbGVzY29tcGxldGVyID0gTm9uZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L19weXRlc3QvX2NvZGUvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgxNWMxM2I0MmMyNWJkMzE0OTg4ZGJhYTdmZjlmNGUzZDFkMmU1YzIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9fY29kZS9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLSIiIiBw
eXRob24gaW5zcGVjdGlvbi9jb2RlIGdlbmVyYXRpb24gQVBJICIiIgotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotZnJvbSAu
Y29kZSBpbXBvcnQgQ29kZSAgIyBub3FhCi1mcm9tIC5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZv
ICAjIG5vcWEKLWZyb20gLmNvZGUgaW1wb3J0IEZyYW1lICAjIG5vcWEKLWZyb20gLmNvZGUgaW1w
b3J0IFRyYWNlYmFjayAgIyBub3FhCi1mcm9tIC5jb2RlIGltcG9ydCBnZXRyYXdjb2RlICAjIG5v
cWEKLWZyb20gLnNvdXJjZSBpbXBvcnQgU291cmNlICAjIG5vcWEKLWZyb20gLnNvdXJjZSBpbXBv
cnQgY29tcGlsZV8gYXMgY29tcGlsZSAgIyBub3FhCi1mcm9tIC5zb3VyY2UgaW1wb3J0IGdldGZz
bGluZW5vICAjIG5vcWEKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvX3B5
MnRyYWNlYmFjay5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvX3B5MnRyYWNlYmFjay5w
eQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFhY2YwYTQyOGQ4ODA2OTFmZTAzMGE4
MzViYzI1OGQwNzg1MDZmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL19weTJ0cmFjZWJhY2sucHkKKysrIC9k
ZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi0jIGNvcGllZCBmcm9tIHB5dGhvbi0yLjcuMydzIHRy
YWNlYmFjay5weQotIyBDSEFOR0VTOgotIyAtIHNvbWVfc3RyIGlzIHJlcGxhY2VkLCB0cnlpbmcg
dG8gY3JlYXRlIHVuaWNvZGUgc3RyaW5ncwotIwotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNv
bHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHR5cGVzCi0KLQot
ZGVmIGZvcm1hdF9leGNlcHRpb25fb25seShldHlwZSwgdmFsdWUpOgotICAgICIiIkZvcm1hdCB0
aGUgZXhjZXB0aW9uIHBhcnQgb2YgYSB0cmFjZWJhY2suCi0KLSAgICBUaGUgYXJndW1lbnRzIGFy
ZSB0aGUgZXhjZXB0aW9uIHR5cGUgYW5kIHZhbHVlIHN1Y2ggYXMgZ2l2ZW4gYnkKLSAgICBzeXMu
bGFzdF90eXBlIGFuZCBzeXMubGFzdF92YWx1ZS4gVGhlIHJldHVybiB2YWx1ZSBpcyBhIGxpc3Qg
b2YKLSAgICBzdHJpbmdzLCBlYWNoIGVuZGluZyBpbiBhIG5ld2xpbmUuCi0KLSAgICBOb3JtYWxs
eSwgdGhlIGxpc3QgY29udGFpbnMgYSBzaW5nbGUgc3RyaW5nOyBob3dldmVyLCBmb3IKLSAgICBT
eW50YXhFcnJvciBleGNlcHRpb25zLCBpdCBjb250YWlucyBzZXZlcmFsIGxpbmVzIHRoYXQgKHdo
ZW4KLSAgICBwcmludGVkKSBkaXNwbGF5IGRldGFpbGVkIGluZm9ybWF0aW9uIGFib3V0IHdoZXJl
IHRoZSBzeW50YXgKLSAgICBlcnJvciBvY2N1cnJlZC4KLQotICAgIFRoZSBtZXNzYWdlIGluZGlj
YXRpbmcgd2hpY2ggZXhjZXB0aW9uIG9jY3VycmVkIGlzIGFsd2F5cyB0aGUgbGFzdAotICAgIHN0
cmluZyBpbiB0aGUgbGlzdC4KLQotICAgICIiIgotCi0gICAgIyBBbiBpbnN0YW5jZSBzaG91bGQg
bm90IGhhdmUgYSBtZWFuaW5nZnVsIHZhbHVlIHBhcmFtZXRlciwgYnV0Ci0gICAgIyBzb21ldGlt
ZXMgZG9lcywgcGFydGljdWxhcmx5IGZvciBzdHJpbmcgZXhjZXB0aW9ucywgc3VjaCBhcwotICAg
ICMgPj4+IHJhaXNlIHN0cmluZzEsIHN0cmluZzIgICMgZGVwcmVjYXRlZAotICAgICMKLSAgICAj
IENsZWFyIHRoZXNlIG91dCBmaXJzdCBiZWNhdXNlIGlzc3VidHlwZShzdHJpbmcxLCBTeW50YXhF
cnJvcikKLSAgICAjIHdvdWxkIHRocm93IGFub3RoZXIgZXhjZXB0aW9uIGFuZCBtYXNrIHRoZSBv
cmlnaW5hbCBwcm9ibGVtLgotICAgIGlmIChpc2luc3RhbmNlKGV0eXBlLCBCYXNlRXhjZXB0aW9u
KSBvcgotICAgICAgICBpc2luc3RhbmNlKGV0eXBlLCB0eXBlcy5JbnN0YW5jZVR5cGUpIG9yCi0g
ICAgICAgICAgICBldHlwZSBpcyBOb25lIG9yIHR5cGUoZXR5cGUpIGlzIHN0cik6Ci0gICAgICAg
IHJldHVybiBbX2Zvcm1hdF9maW5hbF9leGNfbGluZShldHlwZSwgdmFsdWUpXQotCi0gICAgc3R5
cGUgPSBldHlwZS5fX25hbWVfXwotCi0gICAgaWYgbm90IGlzc3ViY2xhc3MoZXR5cGUsIFN5bnRh
eEVycm9yKToKLSAgICAgICAgcmV0dXJuIFtfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKHN0eXBlLCB2
YWx1ZSldCi0KLSAgICAjIEl0IHdhcyBhIHN5bnRheCBlcnJvcjsgc2hvdyBleGFjdGx5IHdoZXJl
IHRoZSBwcm9ibGVtIHdhcyBmb3VuZC4KLSAgICBsaW5lcyA9IFtdCi0gICAgdHJ5OgotICAgICAg
ICBtc2csIChmaWxlbmFtZSwgbGluZW5vLCBvZmZzZXQsIGJhZGxpbmUpID0gdmFsdWUuYXJncwot
ICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgIHBhc3MKLSAgICBlbHNlOgotICAgICAgICBm
aWxlbmFtZSA9IGZpbGVuYW1lIG9yICI8c3RyaW5nPiIKLSAgICAgICAgbGluZXMuYXBwZW5kKCcg
IEZpbGUgIiVzIiwgbGluZSAlZFxuJyAlIChmaWxlbmFtZSwgbGluZW5vKSkKLSAgICAgICAgaWYg
YmFkbGluZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYmFkbGluZSwg
Ynl0ZXMpOiAgIyBweXRob24gMiBvbmx5Ci0gICAgICAgICAgICAgICAgYmFkbGluZSA9IGJhZGxp
bmUuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykKLSAgICAgICAgICAgIGxpbmVzLmFwcGVuZCh1
JyAgICAlc1xuJyAlIGJhZGxpbmUuc3RyaXAoKSkKLSAgICAgICAgICAgIGlmIG9mZnNldCBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgICAgICBjYXJldHNwYWNlID0gYmFkbGluZS5yc3RyaXAoJ1xu
JylbOm9mZnNldF0ubHN0cmlwKCkKLSAgICAgICAgICAgICAgICAjIG5vbi1zcGFjZSB3aGl0ZXNw
YWNlIChsaWtlcyB0YWJzKSBtdXN0IGJlIGtlcHQgZm9yIGFsaWdubWVudAotICAgICAgICAgICAg
ICAgIGNhcmV0c3BhY2UgPSAoKGMuaXNzcGFjZSgpIGFuZCBjIG9yICcgJykgZm9yIGMgaW4gY2Fy
ZXRzcGFjZSkKLSAgICAgICAgICAgICAgICAjIG9ubHkgdGhyZWUgc3BhY2VzIHRvIGFjY291bnQg
Zm9yIG9mZnNldDEgPT0gcG9zIDAKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoJyAgICVz
XlxuJyAlICcnLmpvaW4oY2FyZXRzcGFjZSkpCi0gICAgICAgIHZhbHVlID0gbXNnCi0KLSAgICBs
aW5lcy5hcHBlbmQoX2Zvcm1hdF9maW5hbF9leGNfbGluZShzdHlwZSwgdmFsdWUpKQotICAgIHJl
dHVybiBsaW5lcwotCi0KLWRlZiBfZm9ybWF0X2ZpbmFsX2V4Y19saW5lKGV0eXBlLCB2YWx1ZSk6
Ci0gICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBhIHNpbmdsZSBsaW5lIC0tIG5vcm1hbCBjYXNlIGZv
ciBmb3JtYXRfZXhjZXB0aW9uX29ubHkiIiIKLSAgICB2YWx1ZXN0ciA9IF9zb21lX3N0cih2YWx1
ZSkKLSAgICBpZiB2YWx1ZSBpcyBOb25lIG9yIG5vdCB2YWx1ZXN0cjoKLSAgICAgICAgbGluZSA9
ICIlc1xuIiAlIGV0eXBlCi0gICAgZWxzZToKLSAgICAgICAgbGluZSA9ICIlczogJXNcbiIgJSAo
ZXR5cGUsIHZhbHVlc3RyKQotICAgIHJldHVybiBsaW5lCi0KLQotZGVmIF9zb21lX3N0cih2YWx1
ZSk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gdW5pY29kZSh2YWx1ZSkKLSAgICBleGNlcHQg
RXhjZXB0aW9uOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc3RyKHZhbHVlKQot
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgcGFzcwotICAgIHJldHVybiAn
PHVucHJpbnRhYmxlICVzIG9iamVjdD4nICUgdHlwZSh2YWx1ZSkuX19uYW1lX18KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvY29kZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRl
c3QvX2NvZGUvY29kZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZiMjMyYmQ0
MzBlOWI0ZjhhZDc2OWUzMDU3ZGRlZmVjMjgxYTY3ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL2NvZGUucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw5MDYgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IHN5cwotZnJv
bSBpbnNwZWN0IGltcG9ydCBDT19WQVJBUkdTLCBDT19WQVJLRVlXT1JEUwotaW1wb3J0IHJlCi1m
cm9tIHdlYWtyZWYgaW1wb3J0IHJlZgotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX1BZMiwg
X1BZMywgUFkzNSwgc2FmZV9zdHIKLQotaW1wb3J0IHB5Ci1idWlsdGluX3JlcHIgPSByZXByCi0K
LWlmIF9QWTM6Ci0gICAgZnJvbSB0cmFjZWJhY2sgaW1wb3J0IGZvcm1hdF9leGNlcHRpb25fb25s
eQotZWxzZToKLSAgICBmcm9tIC5fcHkydHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjZXB0aW9u
X29ubHkKLQotCi1jbGFzcyBDb2RlKG9iamVjdCk6Ci0gICAgIiIiIHdyYXBwZXIgYXJvdW5kIFB5
dGhvbiBjb2RlIG9iamVjdHMgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmF3Y29kZSk6
Ci0gICAgICAgIGlmIG5vdCBoYXNhdHRyKHJhd2NvZGUsICJjb19maWxlbmFtZSIpOgotICAgICAg
ICAgICAgcmF3Y29kZSA9IGdldHJhd2NvZGUocmF3Y29kZSkKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgc2VsZi5maWxlbmFtZSA9IHJhd2NvZGUuY29fZmlsZW5hbWUKLSAgICAgICAgICAgIHNl
bGYuZmlyc3RsaW5lbm8gPSByYXdjb2RlLmNvX2ZpcnN0bGluZW5vIC0gMQotICAgICAgICAgICAg
c2VsZi5uYW1lID0gcmF3Y29kZS5jb19uYW1lCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJv
cjoKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibm90IGEgY29kZSBvYmplY3Q6ICVyIiAl
IChyYXdjb2RlLCkpCi0gICAgICAgIHNlbGYucmF3ID0gcmF3Y29kZQotCi0gICAgZGVmIF9fZXFf
XyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHJldHVybiBzZWxmLnJhdyA9PSBvdGhlci5yYXcKLQot
ICAgIF9faGFzaF9fID0gTm9uZQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBvdGhlcik6Ci0gICAg
ICAgIHJldHVybiBub3Qgc2VsZiA9PSBvdGhlcgotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHBh
dGgoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gYSBwYXRoIG9iamVjdCBwb2ludGluZyB0byBz
b3VyY2UgY29kZSAobm90ZSB0aGF0IGl0Ci0gICAgICAgIG1pZ2h0IG5vdCBwb2ludCB0byBhbiBh
Y3R1YWxseSBleGlzdGluZyBmaWxlKS4gIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHAg
PSBweS5wYXRoLmxvY2FsKHNlbGYucmF3LmNvX2ZpbGVuYW1lKQotICAgICAgICAgICAgIyBtYXli
ZSBkb24ndCB0cnkgdGhpcyBjaGVja2luZwotICAgICAgICAgICAgaWYgbm90IHAuY2hlY2soKToK
LSAgICAgICAgICAgICAgICByYWlzZSBPU0Vycm9yKCJweS5wYXRoIGNoZWNrIGZhaWxlZC4iKQot
ICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICMgWFhYIG1heWJlIHRyeSBoYXJk
ZXIgbGlrZSB0aGUgd2VpcmQgbG9naWMKLSAgICAgICAgICAgICMgaW4gdGhlIHN0YW5kYXJkIGxp
YiBbbGluZWNhY2hlLnVwZGF0ZWNhY2hlXSBkb2VzPwotICAgICAgICAgICAgcCA9IHNlbGYucmF3
LmNvX2ZpbGVuYW1lCi0KLSAgICAgICAgcmV0dXJuIHAKLQotICAgIEBwcm9wZXJ0eQotICAgIGRl
ZiBmdWxsc291cmNlKHNlbGYpOgotICAgICAgICAiIiIgcmV0dXJuIGEgX3B5dGVzdC5fY29kZS5T
b3VyY2Ugb2JqZWN0IGZvciB0aGUgZnVsbCBzb3VyY2UgZmlsZSBvZiB0aGUgY29kZQotICAgICAg
ICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0Ll9jb2RlIGltcG9ydCBzb3VyY2UKLSAgICAgICAg
ZnVsbCwgXyA9IHNvdXJjZS5maW5kc291cmNlKHNlbGYucmF3KQotICAgICAgICByZXR1cm4gZnVs
bAotCi0gICAgZGVmIHNvdXJjZShzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBhIF9weXRlc3Qu
X2NvZGUuU291cmNlIG9iamVjdCBmb3IgdGhlIGNvZGUgb2JqZWN0J3Mgc291cmNlIG9ubHkKLSAg
ICAgICAgIiIiCi0gICAgICAgICMgcmV0dXJuIHNvdXJjZSBvbmx5IGZvciB0aGF0IHBhcnQgb2Yg
Y29kZQotICAgICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAgICAgICByZXR1cm4gX3B5dGVz
dC5fY29kZS5Tb3VyY2Uoc2VsZi5yYXcpCi0KLSAgICBkZWYgZ2V0YXJncyhzZWxmLCB2YXI9RmFs
c2UpOgotICAgICAgICAiIiIgcmV0dXJuIGEgdHVwbGUgd2l0aCB0aGUgYXJndW1lbnQgbmFtZXMg
Zm9yIHRoZSBjb2RlIG9iamVjdAotCi0gICAgICAgICAgICBpZiAndmFyJyBpcyBzZXQgVHJ1ZSBh
bHNvIHJldHVybiB0aGUgbmFtZXMgb2YgdGhlIHZhcmlhYmxlIGFuZAotICAgICAgICAgICAga2V5
d29yZCBhcmd1bWVudHMgd2hlbiBwcmVzZW50Ci0gICAgICAgICIiIgotICAgICAgICAjIGhhbmRm
dWxsIHNob3J0Y3V0IGZvciBnZXR0aW5nIGFyZ3MKLSAgICAgICAgcmF3ID0gc2VsZi5yYXcKLSAg
ICAgICAgYXJnY291bnQgPSByYXcuY29fYXJnY291bnQKLSAgICAgICAgaWYgdmFyOgotICAgICAg
ICAgICAgYXJnY291bnQgKz0gcmF3LmNvX2ZsYWdzICYgQ09fVkFSQVJHUwotICAgICAgICAgICAg
YXJnY291bnQgKz0gcmF3LmNvX2ZsYWdzICYgQ09fVkFSS0VZV09SRFMKLSAgICAgICAgcmV0dXJu
IHJhdy5jb192YXJuYW1lc1s6YXJnY291bnRdCi0KLQotY2xhc3MgRnJhbWUob2JqZWN0KToKLSAg
ICAiIiJXcmFwcGVyIGFyb3VuZCBhIFB5dGhvbiBmcmFtZSBob2xkaW5nIGZfbG9jYWxzIGFuZCBm
X2dsb2JhbHMKLSAgICBpbiB3aGljaCBleHByZXNzaW9ucyBjYW4gYmUgZXZhbHVhdGVkLiIiIgot
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGZyYW1lKToKLSAgICAgICAgc2VsZi5saW5lbm8gPSBm
cmFtZS5mX2xpbmVubyAtIDEKLSAgICAgICAgc2VsZi5mX2dsb2JhbHMgPSBmcmFtZS5mX2dsb2Jh
bHMKLSAgICAgICAgc2VsZi5mX2xvY2FscyA9IGZyYW1lLmZfbG9jYWxzCi0gICAgICAgIHNlbGYu
cmF3ID0gZnJhbWUKLSAgICAgICAgc2VsZi5jb2RlID0gQ29kZShmcmFtZS5mX2NvZGUpCi0KLSAg
ICBAcHJvcGVydHkKLSAgICBkZWYgc3RhdGVtZW50KHNlbGYpOgotICAgICAgICAiIiIgc3RhdGVt
ZW50IHRoaXMgZnJhbWUgaXMgYXQgIiIiCi0gICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0g
ICAgICAgIGlmIHNlbGYuY29kZS5mdWxsc291cmNlIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1
cm4gX3B5dGVzdC5fY29kZS5Tb3VyY2UoIiIpCi0gICAgICAgIHJldHVybiBzZWxmLmNvZGUuZnVs
bHNvdXJjZS5nZXRzdGF0ZW1lbnQoc2VsZi5saW5lbm8pCi0KLSAgICBkZWYgZXZhbChzZWxmLCBj
b2RlLCAqKnZhcnMpOgotICAgICAgICAiIiIgZXZhbHVhdGUgJ2NvZGUnIGluIHRoZSBmcmFtZQot
Ci0gICAgICAgICAgICAndmFycycgYXJlIG9wdGlvbmFsIGFkZGl0aW9uYWwgbG9jYWwgdmFyaWFi
bGVzCi0KLSAgICAgICAgICAgIHJldHVybnMgdGhlIHJlc3VsdCBvZiB0aGUgZXZhbHVhdGlvbgot
ICAgICAgICAiIiIKLSAgICAgICAgZl9sb2NhbHMgPSBzZWxmLmZfbG9jYWxzLmNvcHkoKQotICAg
ICAgICBmX2xvY2Fscy51cGRhdGUodmFycykKLSAgICAgICAgcmV0dXJuIGV2YWwoY29kZSwgc2Vs
Zi5mX2dsb2JhbHMsIGZfbG9jYWxzKQotCi0gICAgZGVmIGV4ZWNfKHNlbGYsIGNvZGUsICoqdmFy
cyk6Ci0gICAgICAgICIiIiBleGVjICdjb2RlJyBpbiB0aGUgZnJhbWUKLQotICAgICAgICAgICAg
J3ZhcnMnIGFyZSBvcHRpb25hOyBhZGRpdGlvbmFsIGxvY2FsIHZhcmlhYmxlcwotICAgICAgICAi
IiIKLSAgICAgICAgZl9sb2NhbHMgPSBzZWxmLmZfbG9jYWxzLmNvcHkoKQotICAgICAgICBmX2xv
Y2Fscy51cGRhdGUodmFycykKLSAgICAgICAgcHkuYnVpbHRpbi5leGVjXyhjb2RlLCBzZWxmLmZf
Z2xvYmFscywgZl9sb2NhbHMpCi0KLSAgICBkZWYgcmVwcihzZWxmLCBvYmplY3QpOgotICAgICAg
ICAiIiIgcmV0dXJuIGEgJ3NhZmUnIChub24tcmVjdXJzaXZlLCBvbmUtbGluZSkgc3RyaW5nIHJl
cHIgZm9yICdvYmplY3QnCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gcHkuaW8uc2FmZXJl
cHIob2JqZWN0KQotCi0gICAgZGVmIGlzX3RydWUoc2VsZiwgb2JqZWN0KToKLSAgICAgICAgcmV0
dXJuIG9iamVjdAotCi0gICAgZGVmIGdldGFyZ3Moc2VsZiwgdmFyPUZhbHNlKToKLSAgICAgICAg
IiIiIHJldHVybiBhIGxpc3Qgb2YgdHVwbGVzIChuYW1lLCB2YWx1ZSkgZm9yIGFsbCBhcmd1bWVu
dHMKLQotICAgICAgICAgICAgaWYgJ3ZhcicgaXMgc2V0IFRydWUgYWxzbyBpbmNsdWRlIHRoZSB2
YXJpYWJsZSBhbmQga2V5d29yZAotICAgICAgICAgICAgYXJndW1lbnRzIHdoZW4gcHJlc2VudAot
ICAgICAgICAiIiIKLSAgICAgICAgcmV0dmFsID0gW10KLSAgICAgICAgZm9yIGFyZyBpbiBzZWxm
LmNvZGUuZ2V0YXJncyh2YXIpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJl
dHZhbC5hcHBlbmQoKGFyZywgc2VsZi5mX2xvY2Fsc1thcmddKSkKLSAgICAgICAgICAgIGV4Y2Vw
dCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzICAgICAjIHRoaXMgY2FuIG9jY3VyIHdo
ZW4gdXNpbmcgUHN5Y28KLSAgICAgICAgcmV0dXJuIHJldHZhbAotCi0KLWNsYXNzIFRyYWNlYmFj
a0VudHJ5KG9iamVjdCk6Ci0gICAgIiIiIGEgc2luZ2xlIGVudHJ5IGluIGEgdHJhY2ViYWNrICIi
IgotCi0gICAgX3JlcHJfc3R5bGUgPSBOb25lCi0gICAgZXhwcmluZm8gPSBOb25lCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgcmF3ZW50cnksIGV4Y2luZm89Tm9uZSk6Ci0gICAgICAgIHNlbGYu
X2V4Y2luZm8gPSBleGNpbmZvCi0gICAgICAgIHNlbGYuX3Jhd2VudHJ5ID0gcmF3ZW50cnkKLSAg
ICAgICAgc2VsZi5saW5lbm8gPSByYXdlbnRyeS50Yl9saW5lbm8gLSAxCi0KLSAgICBkZWYgc2V0
X3JlcHJfc3R5bGUoc2VsZiwgbW9kZSk6Ci0gICAgICAgIGFzc2VydCBtb2RlIGluICgic2hvcnQi
LCAibG9uZyIpCi0gICAgICAgIHNlbGYuX3JlcHJfc3R5bGUgPSBtb2RlCi0KLSAgICBAcHJvcGVy
dHkKLSAgICBkZWYgZnJhbWUoc2VsZik6Ci0gICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0g
ICAgICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLkZyYW1lKHNlbGYuX3Jhd2VudHJ5LnRiX2ZyYW1l
KQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHJlbGxpbmUoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLmxpbmVubyAtIHNlbGYuZnJhbWUuY29kZS5maXJzdGxpbmVubwotCi0gICAgZGVmIF9f
cmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxUcmFjZWJhY2tFbnRyeSAlczolZD4iICUg
KHNlbGYuZnJhbWUuY29kZS5wYXRoLCBzZWxmLmxpbmVubyArIDEpCi0KLSAgICBAcHJvcGVydHkK
LSAgICBkZWYgc3RhdGVtZW50KHNlbGYpOgotICAgICAgICAiIiIgX3B5dGVzdC5fY29kZS5Tb3Vy
Y2Ugb2JqZWN0IGZvciB0aGUgY3VycmVudCBzdGF0ZW1lbnQgIiIiCi0gICAgICAgIHNvdXJjZSA9
IHNlbGYuZnJhbWUuY29kZS5mdWxsc291cmNlCi0gICAgICAgIHJldHVybiBzb3VyY2UuZ2V0c3Rh
dGVtZW50KHNlbGYubGluZW5vKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHBhdGgoc2VsZik6
Ci0gICAgICAgICIiIiBwYXRoIHRvIHRoZSBzb3VyY2UgY29kZSAiIiIKLSAgICAgICAgcmV0dXJu
IHNlbGYuZnJhbWUuY29kZS5wYXRoCi0KLSAgICBkZWYgZ2V0bG9jYWxzKHNlbGYpOgotICAgICAg
ICByZXR1cm4gc2VsZi5mcmFtZS5mX2xvY2FscwotICAgIGxvY2FscyA9IHByb3BlcnR5KGdldGxv
Y2FscywgTm9uZSwgTm9uZSwgImxvY2FscyBvZiB1bmRlcmxheWluZyBmcmFtZSIpCi0KLSAgICBk
ZWYgZ2V0Zmlyc3RsaW5lc291cmNlKHNlbGYpOgotICAgICAgICAjIG9uIEp5dGhvbiB0aGlzIGZp
cnN0bGluZW5vIGNhbiBiZSAtMSBhcHBhcmVudGx5Ci0gICAgICAgIHJldHVybiBtYXgoc2VsZi5m
cmFtZS5jb2RlLmZpcnN0bGluZW5vLCAwKQotCi0gICAgZGVmIGdldHNvdXJjZShzZWxmLCBhc3Rj
YWNoZT1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBmYWlsaW5nIHNvdXJjZSBjb2RlLiAiIiIK
LSAgICAgICAgIyB3ZSB1c2UgdGhlIHBhc3NlZCBpbiBhc3RjYWNoZSB0byBub3QgcmVwYXJzZSBh
c3R0cmVlcwotICAgICAgICAjIHdpdGhpbiBleGNlcHRpb24gaW5mbyBwcmludGluZwotICAgICAg
ICBmcm9tIF9weXRlc3QuX2NvZGUuc291cmNlIGltcG9ydCBnZXRzdGF0ZW1lbnRyYW5nZV9hc3QK
LSAgICAgICAgc291cmNlID0gc2VsZi5mcmFtZS5jb2RlLmZ1bGxzb3VyY2UKLSAgICAgICAgaWYg
c291cmNlIGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBrZXkgPSBh
c3Rub2RlID0gTm9uZQotICAgICAgICBpZiBhc3RjYWNoZSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGtleSA9IHNlbGYuZnJhbWUuY29kZS5wYXRoCi0gICAgICAgICAgICBpZiBrZXkgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgYXN0bm9kZSA9IGFzdGNhY2hlLmdldChrZXksIE5vbmUp
Ci0gICAgICAgIHN0YXJ0ID0gc2VsZi5nZXRmaXJzdGxpbmVzb3VyY2UoKQotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICBhc3Rub2RlLCBfLCBlbmQgPSBnZXRzdGF0ZW1lbnRyYW5nZV9hc3Qoc2Vs
Zi5saW5lbm8sIHNvdXJjZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBhc3Rub2RlPWFzdG5vZGUpCi0gICAgICAgIGV4Y2VwdCBTeW50YXhFcnJv
cjoKLSAgICAgICAgICAgIGVuZCA9IHNlbGYubGluZW5vICsgMQotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgaWYga2V5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGFzdGNhY2hlW2tl
eV0gPSBhc3Rub2RlCi0gICAgICAgIHJldHVybiBzb3VyY2Vbc3RhcnQ6ZW5kXQotCi0gICAgc291
cmNlID0gcHJvcGVydHkoZ2V0c291cmNlKQotCi0gICAgZGVmIGlzaGlkZGVuKHNlbGYpOgotICAg
ICAgICAiIiIgcmV0dXJuIFRydWUgaWYgdGhlIGN1cnJlbnQgZnJhbWUgaGFzIGEgdmFyIF9fdHJh
Y2ViYWNraGlkZV9fCi0gICAgICAgICAgICByZXNvbHZpbmcgdG8gVHJ1ZQotCi0gICAgICAgICAg
ICBJZiBfX3RyYWNlYmFja2hpZGVfXyBpcyBhIGNhbGxhYmxlLCBpdCBnZXRzIGNhbGxlZCB3aXRo
IHRoZQotICAgICAgICAgICAgRXhjZXB0aW9uSW5mbyBpbnN0YW5jZSBhbmQgY2FuIGRlY2lkZSB3
aGV0aGVyIHRvIGhpZGUgdGhlIHRyYWNlYmFjay4KLQotICAgICAgICAgICAgbW9zdGx5IGZvciBp
bnRlcm5hbCB1c2UKLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRiaCA9
IHNlbGYuZnJhbWUuZl9sb2NhbHNbJ19fdHJhY2ViYWNraGlkZV9fJ10KLSAgICAgICAgZXhjZXB0
IEtleUVycm9yOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHRiaCA9IHNlbGYu
ZnJhbWUuZl9nbG9iYWxzWydfX3RyYWNlYmFja2hpZGVfXyddCi0gICAgICAgICAgICBleGNlcHQg
S2V5RXJyb3I6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgaWYgY2Fs
bGFibGUodGJoKToKLSAgICAgICAgICAgIHJldHVybiB0YmgoTm9uZSBpZiBzZWxmLl9leGNpbmZv
IGlzIE5vbmUgZWxzZSBzZWxmLl9leGNpbmZvKCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICByZXR1cm4gdGJoCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgZm4gPSBzdHIoc2VsZi5wYXRoKQotICAgICAgICBleGNlcHQgcHkuZXJyb3IuRXJy
b3I6Ci0gICAgICAgICAgICBmbiA9ICc/Pz8nCi0gICAgICAgIG5hbWUgPSBzZWxmLmZyYW1lLmNv
ZGUubmFtZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBsaW5lID0gc3RyKHNlbGYuc3RhdGVt
ZW50KS5sc3RyaXAoKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAg
ICAgICByYWlzZQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIGxpbmUgPSAi
Pz8/IgotICAgICAgICByZXR1cm4gIiAgRmlsZSAlcjolZCBpbiAlc1xuICAlc1xuIiAlIChmbiwg
c2VsZi5saW5lbm8gKyAxLCBuYW1lLCBsaW5lKQotCi0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAg
ICAgIHJldHVybiBzZWxmLmZyYW1lLmNvZGUucmF3LmNvX25hbWUKLSAgICBuYW1lID0gcHJvcGVy
dHkobmFtZSwgTm9uZSwgTm9uZSwgImNvX25hbWUgb2YgdW5kZXJsYXlpbmcgY29kZSIpCi0KLQot
Y2xhc3MgVHJhY2ViYWNrKGxpc3QpOgotICAgICIiIiBUcmFjZWJhY2sgb2JqZWN0cyBlbmNhcHN1
bGF0ZSBhbmQgb2ZmZXIgaGlnaGVyIGxldmVsCi0gICAgICAgIGFjY2VzcyB0byBUcmFjZWJhY2sg
ZW50cmllcy4KLSAgICAiIiIKLSAgICBFbnRyeSA9IFRyYWNlYmFja0VudHJ5Ci0KLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdGIsIGV4Y2luZm89Tm9uZSk6Ci0gICAgICAgICIiIiBpbml0aWFsaXpl
IGZyb20gZ2l2ZW4gcHl0aG9uIHRyYWNlYmFjayBvYmplY3QgYW5kIEV4Y2VwdGlvbkluZm8gIiIi
Ci0gICAgICAgIHNlbGYuX2V4Y2luZm8gPSBleGNpbmZvCi0gICAgICAgIGlmIGhhc2F0dHIodGIs
ICd0Yl9uZXh0Jyk6Ci0gICAgICAgICAgICBkZWYgZihjdXIpOgotICAgICAgICAgICAgICAgIHdo
aWxlIGN1ciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgeWllbGQgc2VsZi5FbnRy
eShjdXIsIGV4Y2luZm89ZXhjaW5mbykKLSAgICAgICAgICAgICAgICAgICAgY3VyID0gY3VyLnRi
X25leHQKLSAgICAgICAgICAgIGxpc3QuX19pbml0X18oc2VsZiwgZih0YikpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBsaXN0Ll9faW5pdF9fKHNlbGYsIHRiKQotCi0gICAgZGVmIGN1dChz
ZWxmLCBwYXRoPU5vbmUsIGxpbmVubz1Ob25lLCBmaXJzdGxpbmVubz1Ob25lLCBleGNsdWRlcGF0
aD1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBhIFRyYWNlYmFjayBpbnN0YW5jZSB3cmFwcGlu
ZyBwYXJ0IG9mIHRoaXMgVHJhY2ViYWNrCi0KLSAgICAgICAgICAgIGJ5IHByb3ZkaW5nIGFueSBj
b21iaW5hdGlvbiBvZiBwYXRoLCBsaW5lbm8gYW5kIGZpcnN0bGluZW5vLCB0aGUKLSAgICAgICAg
ICAgIGZpcnN0IGZyYW1lIHRvIHN0YXJ0IHRoZSB0by1iZS1yZXR1cm5lZCB0cmFjZWJhY2sgaXMg
ZGV0ZXJtaW5lZAotCi0gICAgICAgICAgICB0aGlzIGFsbG93cyBjdXR0aW5nIHRoZSBmaXJzdCBw
YXJ0IG9mIGEgVHJhY2ViYWNrIGluc3RhbmNlIGUuZy4KLSAgICAgICAgICAgIGZvciBmb3JtYXR0
aW5nIHJlYXNvbnMgKHJlbW92aW5nIHNvbWUgdW5pbnRlcmVzdGluZyBiaXRzIHRoYXQgZGVhbAot
ICAgICAgICAgICAgd2l0aCBoYW5kbGluZyBvZiB0aGUgZXhjZXB0aW9uL3RyYWNlYmFjaykKLSAg
ICAgICAgIiIiCi0gICAgICAgIGZvciB4IGluIHNlbGY6Ci0gICAgICAgICAgICBjb2RlID0geC5m
cmFtZS5jb2RlCi0gICAgICAgICAgICBjb2RlcGF0aCA9IGNvZGUucGF0aAotICAgICAgICAgICAg
aWYgKChwYXRoIGlzIE5vbmUgb3IgY29kZXBhdGggPT0gcGF0aCkgYW5kCi0gICAgICAgICAgICAg
ICAgKGV4Y2x1ZGVwYXRoIGlzIE5vbmUgb3Igbm90IGhhc2F0dHIoY29kZXBhdGgsICdyZWx0bycp
IG9yCi0gICAgICAgICAgICAgICAgIG5vdCBjb2RlcGF0aC5yZWx0byhleGNsdWRlcGF0aCkpIGFu
ZAotICAgICAgICAgICAgICAgIChsaW5lbm8gaXMgTm9uZSBvciB4LmxpbmVubyA9PSBsaW5lbm8p
IGFuZAotICAgICAgICAgICAgICAgICAgICAoZmlyc3RsaW5lbm8gaXMgTm9uZSBvciB4LmZyYW1l
LmNvZGUuZmlyc3RsaW5lbm8gPT0gZmlyc3RsaW5lbm8pKToKLSAgICAgICAgICAgICAgICByZXR1
cm4gVHJhY2ViYWNrKHguX3Jhd2VudHJ5LCBzZWxmLl9leGNpbmZvKQotICAgICAgICByZXR1cm4g
c2VsZgotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgIHZhbCA9IHN1
cGVyKFRyYWNlYmFjaywgc2VsZikuX19nZXRpdGVtX18oa2V5KQotICAgICAgICBpZiBpc2luc3Rh
bmNlKGtleSwgdHlwZShzbGljZSgwKSkpOgotICAgICAgICAgICAgdmFsID0gc2VsZi5fX2NsYXNz
X18odmFsKQotICAgICAgICByZXR1cm4gdmFsCi0KLSAgICBkZWYgZmlsdGVyKHNlbGYsIGZuPWxh
bWJkYSB4OiBub3QgeC5pc2hpZGRlbigpKToKLSAgICAgICAgIiIiIHJldHVybiBhIFRyYWNlYmFj
ayBpbnN0YW5jZSB3aXRoIGNlcnRhaW4gaXRlbXMgcmVtb3ZlZAotCi0gICAgICAgICAgICBmbiBp
cyBhIGZ1bmN0aW9uIHRoYXQgZ2V0cyBhIHNpbmdsZSBhcmd1bWVudCwgYSBUcmFjZWJhY2tFbnRy
eQotICAgICAgICAgICAgaW5zdGFuY2UsIGFuZCBzaG91bGQgcmV0dXJuIFRydWUgd2hlbiB0aGUg
aXRlbSBzaG91bGQgYmUgYWRkZWQKLSAgICAgICAgICAgIHRvIHRoZSBUcmFjZWJhY2ssIEZhbHNl
IHdoZW4gbm90Ci0KLSAgICAgICAgICAgIGJ5IGRlZmF1bHQgdGhpcyByZW1vdmVzIGFsbCB0aGUg
VHJhY2ViYWNrRW50cmllcyB3aGljaCBhcmUgaGlkZGVuCi0gICAgICAgICAgICAoc2VlIGlzaGlk
ZGVuKCkgYWJvdmUpCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gVHJhY2ViYWNrKGZpbHRl
cihmbiwgc2VsZiksIHNlbGYuX2V4Y2luZm8pCi0KLSAgICBkZWYgZ2V0Y3Jhc2hlbnRyeShzZWxm
KToKLSAgICAgICAgIiIiIHJldHVybiBsYXN0IG5vbi1oaWRkZW4gdHJhY2ViYWNrIGVudHJ5IHRo
YXQgbGVhZAotICAgICAgICB0byB0aGUgZXhjZXB0aW9uIG9mIGEgdHJhY2ViYWNrLgotICAgICAg
ICAiIiIKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoLTEsIC1sZW4oc2VsZikgLSAxLCAtMSk6Ci0g
ICAgICAgICAgICBlbnRyeSA9IHNlbGZbaV0KLSAgICAgICAgICAgIGlmIG5vdCBlbnRyeS5pc2hp
ZGRlbigpOgotICAgICAgICAgICAgICAgIHJldHVybiBlbnRyeQotICAgICAgICByZXR1cm4gc2Vs
ZlstMV0KLQotICAgIGRlZiByZWN1cnNpb25pbmRleChzZWxmKToKLSAgICAgICAgIiIiIHJldHVy
biB0aGUgaW5kZXggb2YgdGhlIGZyYW1lL1RyYWNlYmFja0VudHJ5IHdoZXJlIHJlY3Vyc2lvbgot
ICAgICAgICAgICAgb3JpZ2luYXRlcyBpZiBhcHByb3ByaWF0ZSwgTm9uZSBpZiBubyByZWN1cnNp
b24gb2NjdXJyZWQKLSAgICAgICAgIiIiCi0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgZm9y
IGksIGVudHJ5IGluIGVudW1lcmF0ZShzZWxmKToKLSAgICAgICAgICAgICMgaWQgZm9yIHRoZSBj
b2RlLnJhdyBpcyBuZWVkZWQgdG8gd29yayBhcm91bmQKLSAgICAgICAgICAgICMgdGhlIHN0cmFu
Z2UgbWV0YXByb2dyYW1taW5nIGluIHRoZSBkZWNvcmF0b3IgbGliIGZyb20gcHlwaQotICAgICAg
ICAgICAgIyB3aGljaCBnZW5lcmF0ZXMgY29kZSBvYmplY3RzIHRoYXQgaGF2ZSBoYXNoL3ZhbHVl
IGVxdWFsaXR5Ci0gICAgICAgICAgICAjIFhYWCBuZWVkcyBhIHRlc3QKLSAgICAgICAgICAgIGtl
eSA9IGVudHJ5LmZyYW1lLmNvZGUucGF0aCwgaWQoZW50cnkuZnJhbWUuY29kZS5yYXcpLCBlbnRy
eS5saW5lbm8KLSAgICAgICAgICAgICMgcHJpbnQgImNoZWNraW5nIGZvciByZWN1cnNpb24gYXQi
LCBrZXkKLSAgICAgICAgICAgIHZhbHVlcyA9IGNhY2hlLnNldGRlZmF1bHQoa2V5LCBbXSkKLSAg
ICAgICAgICAgIGlmIHZhbHVlczoKLSAgICAgICAgICAgICAgICBmID0gZW50cnkuZnJhbWUKLSAg
ICAgICAgICAgICAgICBsb2MgPSBmLmZfbG9jYWxzCi0gICAgICAgICAgICAgICAgZm9yIG90aGVy
bG9jIGluIHZhbHVlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgZi5pc190cnVlKGYuZXZhbChj
b19lcXVhbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfX3JlY3Vy
c2lvbmNhY2hlX2xvY2Fsc18xPWxvYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBfX3JlY3Vyc2lvbmNhY2hlX2xvY2Fsc18yPW90aGVybG9jKSk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gaQotICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChlbnRyeS5m
cmFtZS5mX2xvY2FscykKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotCi1jb19lcXVhbCA9IGNvbXBp
bGUoJ19fcmVjdXJzaW9uY2FjaGVfbG9jYWxzXzEgPT0gX19yZWN1cnNpb25jYWNoZV9sb2NhbHNf
MicsCi0gICAgICAgICAgICAgICAgICAgJz8nLCAnZXZhbCcpCi0KLQotY2xhc3MgRXhjZXB0aW9u
SW5mbyhvYmplY3QpOgotICAgICIiIiB3cmFwcyBzeXMuZXhjX2luZm8oKSBvYmplY3RzIGFuZCBv
ZmZlcnMKLSAgICAgICAgaGVscCBmb3IgbmF2aWdhdGluZyB0aGUgdHJhY2ViYWNrLgotICAgICIi
IgotICAgIF9zdHJpcHRleHQgPSAnJwotICAgIF9hc3NlcnRfc3RhcnRfcmVwciA9ICJBc3NlcnRp
b25FcnJvcih1XCdhc3NlcnQgIiBpZiBfUFkyIGVsc2UgIkFzc2VydGlvbkVycm9yKFwnYXNzZXJ0
ICIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0dXA9Tm9uZSwgZXhwcmluZm89Tm9uZSk6Ci0g
ICAgICAgIGltcG9ydCBfcHl0ZXN0Ll9jb2RlCi0gICAgICAgIGlmIHR1cCBpcyBOb25lOgotICAg
ICAgICAgICAgdHVwID0gc3lzLmV4Y19pbmZvKCkKLSAgICAgICAgICAgIGlmIGV4cHJpbmZvIGlz
IE5vbmUgYW5kIGlzaW5zdGFuY2UodHVwWzFdLCBBc3NlcnRpb25FcnJvcik6Ci0gICAgICAgICAg
ICAgICAgZXhwcmluZm8gPSBnZXRhdHRyKHR1cFsxXSwgJ21zZycsIE5vbmUpCi0gICAgICAgICAg
ICAgICAgaWYgZXhwcmluZm8gaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZXhwcmluZm8g
PSBweS5pby5zYWZlcmVwcih0dXBbMV0pCi0gICAgICAgICAgICAgICAgaWYgZXhwcmluZm8gYW5k
IGV4cHJpbmZvLnN0YXJ0c3dpdGgoc2VsZi5fYXNzZXJ0X3N0YXJ0X3JlcHIpOgotICAgICAgICAg
ICAgICAgICAgICBzZWxmLl9zdHJpcHRleHQgPSAnQXNzZXJ0aW9uRXJyb3I6ICcKLSAgICAgICAg
c2VsZi5fZXhjaW5mbyA9IHR1cAotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIGNsYXNzCi0gICAg
ICAgIHNlbGYudHlwZSA9IHR1cFswXQotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIGluc3RhbmNl
Ci0gICAgICAgIHNlbGYudmFsdWUgPSB0dXBbMV0KLSAgICAgICAgIzogdGhlIGV4Y2VwdGlvbiBy
YXcgdHJhY2ViYWNrCi0gICAgICAgIHNlbGYudGIgPSB0dXBbMl0KLSAgICAgICAgIzogdGhlIGV4
Y2VwdGlvbiB0eXBlIG5hbWUKLSAgICAgICAgc2VsZi50eXBlbmFtZSA9IHNlbGYudHlwZS5fX25h
bWVfXwotICAgICAgICAjOiB0aGUgZXhjZXB0aW9uIHRyYWNlYmFjayAoX3B5dGVzdC5fY29kZS5U
cmFjZWJhY2sgaW5zdGFuY2UpCi0gICAgICAgIHNlbGYudHJhY2ViYWNrID0gX3B5dGVzdC5fY29k
ZS5UcmFjZWJhY2soc2VsZi50YiwgZXhjaW5mbz1yZWYoc2VsZikpCi0KLSAgICBkZWYgX19yZXBy
X18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPEV4Y2VwdGlvbkluZm8gJXMgdGJsZW49JWQ+IiAl
IChzZWxmLnR5cGVuYW1lLCBsZW4oc2VsZi50cmFjZWJhY2spKQotCi0gICAgZGVmIGV4Y29ubHko
c2VsZiwgdHJ5c2hvcnQ9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIHRoZSBleGNlcHRpb24g
YXMgYSBzdHJpbmcKLQotICAgICAgICAgICAgd2hlbiAndHJ5c2hvcnQnIHJlc29sdmVzIHRvIFRy
dWUsIGFuZCB0aGUgZXhjZXB0aW9uIGlzIGEKLSAgICAgICAgICAgIF9weXRlc3QuX2NvZGUuX0Fz
c2VydGlvbkVycm9yLCBvbmx5IHRoZSBhY3R1YWwgZXhjZXB0aW9uIHBhcnQgb2YKLSAgICAgICAg
ICAgIHRoZSBleGNlcHRpb24gcmVwcmVzZW50YXRpb24gaXMgcmV0dXJuZWQgKHNvICdBc3NlcnRp
b25FcnJvcjogJyBpcwotICAgICAgICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBiZWdpbm5pbmcpCi0g
ICAgICAgICIiIgotICAgICAgICBsaW5lcyA9IGZvcm1hdF9leGNlcHRpb25fb25seShzZWxmLnR5
cGUsIHNlbGYudmFsdWUpCi0gICAgICAgIHRleHQgPSAnJy5qb2luKGxpbmVzKQotICAgICAgICB0
ZXh0ID0gdGV4dC5yc3RyaXAoKQotICAgICAgICBpZiB0cnlzaG9ydDoKLSAgICAgICAgICAgIGlm
IHRleHQuc3RhcnRzd2l0aChzZWxmLl9zdHJpcHRleHQpOgotICAgICAgICAgICAgICAgIHRleHQg
PSB0ZXh0W2xlbihzZWxmLl9zdHJpcHRleHQpOl0KLSAgICAgICAgcmV0dXJuIHRleHQKLQotICAg
IGRlZiBlcnJpc2luc3RhbmNlKHNlbGYsIGV4Yyk6Ci0gICAgICAgICIiIiByZXR1cm4gVHJ1ZSBp
ZiB0aGUgZXhjZXB0aW9uIGlzIGFuIGluc3RhbmNlIG9mIGV4YyAiIiIKLSAgICAgICAgcmV0dXJu
IGlzaW5zdGFuY2Uoc2VsZi52YWx1ZSwgZXhjKQotCi0gICAgZGVmIF9nZXRyZXByY3Jhc2goc2Vs
Zik6Ci0gICAgICAgIGV4Y29ubHkgPSBzZWxmLmV4Y29ubHkodHJ5c2hvcnQ9VHJ1ZSkKLSAgICAg
ICAgZW50cnkgPSBzZWxmLnRyYWNlYmFjay5nZXRjcmFzaGVudHJ5KCkKLSAgICAgICAgcGF0aCwg
bGluZW5vID0gZW50cnkuZnJhbWUuY29kZS5yYXcuY29fZmlsZW5hbWUsIGVudHJ5LmxpbmVubwot
ICAgICAgICByZXR1cm4gUmVwckZpbGVMb2NhdGlvbihwYXRoLCBsaW5lbm8gKyAxLCBleGNvbmx5
KQotCi0gICAgZGVmIGdldHJlcHIoc2VsZiwgc2hvd2xvY2Fscz1GYWxzZSwgc3R5bGU9Imxvbmci
LAotICAgICAgICAgICAgICAgIGFic3BhdGg9RmFsc2UsIHRiZmlsdGVyPVRydWUsIGZ1bmNhcmdz
PUZhbHNlKToKLSAgICAgICAgIiIiIHJldHVybiBzdHIoKWFibGUgcmVwcmVzZW50YXRpb24gb2Yg
dGhpcyBleGNlcHRpb24gaW5mby4KLSAgICAgICAgICAgIHNob3dsb2NhbHM6IHNob3cgbG9jYWxz
IHBlciB0cmFjZWJhY2sgZW50cnkKLSAgICAgICAgICAgIHN0eWxlOiBsb25nfHNob3J0fG5vfG5h
dGl2ZSB0cmFjZWJhY2sgc3R5bGUKLSAgICAgICAgICAgIHRiZmlsdGVyOiBoaWRlIGVudHJpZXMg
KHdoZXJlIF9fdHJhY2ViYWNraGlkZV9fIGlzIHRydWUpCi0KLSAgICAgICAgICAgIGluIGNhc2Ug
b2Ygc3R5bGU9PW5hdGl2ZSwgdGJmaWx0ZXIgYW5kIHNob3dsb2NhbHMgaXMgaWdub3JlZC4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGlmIHN0eWxlID09ICduYXRpdmUnOgotICAgICAgICAgICAgcmV0
dXJuIFJlcHJFeGNlcHRpb25JbmZvKFJlcHJUcmFjZWJhY2tOYXRpdmUoCi0gICAgICAgICAgICAg
ICAgcHkuc3RkLnRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKAotICAgICAgICAgICAgICAgICAg
ICBzZWxmLnR5cGUsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYudmFsdWUsCi0gICAgICAgICAg
ICAgICAgICAgIHNlbGYudHJhY2ViYWNrWzBdLl9yYXdlbnRyeSwKLSAgICAgICAgICAgICAgICAp
KSwgc2VsZi5fZ2V0cmVwcmNyYXNoKCkpCi0KLSAgICAgICAgZm10ID0gRm9ybWF0dGVkRXhjaW5m
byhzaG93bG9jYWxzPXNob3dsb2NhbHMsIHN0eWxlPXN0eWxlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGFic3BhdGg9YWJzcGF0aCwgdGJmaWx0ZXI9dGJmaWx0ZXIsIGZ1bmNhcmdz
PWZ1bmNhcmdzKQotICAgICAgICByZXR1cm4gZm10LnJlcHJfZXhjaW5mbyhzZWxmKQotCi0gICAg
ZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGVudHJ5ID0gc2VsZi50cmFjZWJhY2tbLTFdCi0g
ICAgICAgIGxvYyA9IFJlcHJGaWxlTG9jYXRpb24oZW50cnkucGF0aCwgZW50cnkubGluZW5vICsg
MSwgc2VsZi5leGNvbmx5KCkpCi0gICAgICAgIHJldHVybiBzdHIobG9jKQotCi0gICAgZGVmIF9f
dW5pY29kZV9fKHNlbGYpOgotICAgICAgICBlbnRyeSA9IHNlbGYudHJhY2ViYWNrWy0xXQotICAg
ICAgICBsb2MgPSBSZXByRmlsZUxvY2F0aW9uKGVudHJ5LnBhdGgsIGVudHJ5LmxpbmVubyArIDEs
IHNlbGYuZXhjb25seSgpKQotICAgICAgICByZXR1cm4gdW5pY29kZShsb2MpCi0KLSAgICBkZWYg
bWF0Y2goc2VsZiwgcmVnZXhwKToKLSAgICAgICAgIiIiCi0gICAgICAgIE1hdGNoIHRoZSByZWd1
bGFyIGV4cHJlc3Npb24gJ3JlZ2V4cCcgb24gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZgot
ICAgICAgICB0aGUgZXhjZXB0aW9uLiBJZiBpdCBtYXRjaGVzIHRoZW4gVHJ1ZSBpcyByZXR1cm5l
ZCAoc28gdGhhdCBpdCBpcwotICAgICAgICBwb3NzaWJsZSB0byB3cml0ZSAnYXNzZXJ0IGV4Y2lu
Zm8ubWF0Y2goKScpLiBJZiBpdCBkb2Vzbid0IG1hdGNoIGFuCi0gICAgICAgIEFzc2VydGlvbkVy
cm9yIGlzIHJhaXNlZC4KLSAgICAgICAgIiIiCi0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0g
VHJ1ZQotICAgICAgICBpZiBub3QgcmUuc2VhcmNoKHJlZ2V4cCwgc3RyKHNlbGYudmFsdWUpKToK
LSAgICAgICAgICAgIGFzc2VydCAwLCAiUGF0dGVybiAnezAhc30nIG5vdCBmb3VuZCBpbiAnezEh
c30nIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgcmVnZXhwLCBzZWxmLnZhbHVlKQotICAgICAg
ICByZXR1cm4gVHJ1ZQotCi0KLWNsYXNzIEZvcm1hdHRlZEV4Y2luZm8ob2JqZWN0KToKLSAgICAi
IiIgcHJlc2VudGluZyBpbmZvcm1hdGlvbiBhYm91dCBmYWlsaW5nIEZ1bmN0aW9ucyBhbmQgR2Vu
ZXJhdG9ycy4gIiIiCi0gICAgIyBmb3IgdHJhY2ViYWNrIGVudHJpZXMKLSAgICBmbG93X21hcmtl
ciA9ICI+IgotICAgIGZhaWxfbWFya2VyID0gIkUiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwg
c2hvd2xvY2Fscz1GYWxzZSwgc3R5bGU9ImxvbmciLCBhYnNwYXRoPVRydWUsIHRiZmlsdGVyPVRy
dWUsIGZ1bmNhcmdzPUZhbHNlKToKLSAgICAgICAgc2VsZi5zaG93bG9jYWxzID0gc2hvd2xvY2Fs
cwotICAgICAgICBzZWxmLnN0eWxlID0gc3R5bGUKLSAgICAgICAgc2VsZi50YmZpbHRlciA9IHRi
ZmlsdGVyCi0gICAgICAgIHNlbGYuZnVuY2FyZ3MgPSBmdW5jYXJncwotICAgICAgICBzZWxmLmFi
c3BhdGggPSBhYnNwYXRoCi0gICAgICAgIHNlbGYuYXN0Y2FjaGUgPSB7fQotCi0gICAgZGVmIF9n
ZXRpbmRlbnQoc2VsZiwgc291cmNlKToKLSAgICAgICAgIyBmaWd1cmUgb3V0IGluZGVudCBmb3Ig
Z2l2ZW4gc291cmNlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHMgPSBzdHIoc291cmNlLmdl
dHN0YXRlbWVudChsZW4oc291cmNlKSAtIDEpKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRl
cnJ1cHQ6Ci0gICAgICAgICAgICByYWlzZQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzID0gc3RyKHNvdXJjZVstMV0pCi0gICAgICAg
ICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAg
ICAgICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAgICAgICAgIHJldHVybiAwCi0gICAg
ICAgIHJldHVybiA0ICsgKGxlbihzKSAtIGxlbihzLmxzdHJpcCgpKSkKLQotICAgIGRlZiBfZ2V0
ZW50cnlzb3VyY2Uoc2VsZiwgZW50cnkpOgotICAgICAgICBzb3VyY2UgPSBlbnRyeS5nZXRzb3Vy
Y2Uoc2VsZi5hc3RjYWNoZSkKLSAgICAgICAgaWYgc291cmNlIGlzIG5vdCBOb25lOgotICAgICAg
ICAgICAgc291cmNlID0gc291cmNlLmRlaW5kZW50KCkKLSAgICAgICAgcmV0dXJuIHNvdXJjZQot
Ci0gICAgZGVmIF9zYWZlcmVwcihzZWxmLCBvYmopOgotICAgICAgICByZXR1cm4gcHkuaW8uc2Fm
ZXJlcHIob2JqKQotCi0gICAgZGVmIHJlcHJfYXJncyhzZWxmLCBlbnRyeSk6Ci0gICAgICAgIGlm
IHNlbGYuZnVuY2FyZ3M6Ci0gICAgICAgICAgICBhcmdzID0gW10KLSAgICAgICAgICAgIGZvciBh
cmduYW1lLCBhcmd2YWx1ZSBpbiBlbnRyeS5mcmFtZS5nZXRhcmdzKHZhcj1UcnVlKToKLSAgICAg
ICAgICAgICAgICBhcmdzLmFwcGVuZCgoYXJnbmFtZSwgc2VsZi5fc2FmZXJlcHIoYXJndmFsdWUp
KSkKLSAgICAgICAgICAgIHJldHVybiBSZXByRnVuY0FyZ3MoYXJncykKLQotICAgIGRlZiBnZXRf
c291cmNlKHNlbGYsIHNvdXJjZSwgbGluZV9pbmRleD0tMSwgZXhjaW5mbz1Ob25lLCBzaG9ydD1G
YWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gZm9ybWF0dGVkIGFuZCBtYXJrZWQgdXAgc291cmNl
IGxpbmVzLiAiIiIKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLSAgICAgICAgbGluZXMg
PSBbXQotICAgICAgICBpZiBzb3VyY2UgaXMgTm9uZSBvciBsaW5lX2luZGV4ID49IGxlbihzb3Vy
Y2UubGluZXMpOgotICAgICAgICAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoIj8/
PyIpCi0gICAgICAgICAgICBsaW5lX2luZGV4ID0gMAotICAgICAgICBpZiBsaW5lX2luZGV4IDwg
MDoKLSAgICAgICAgICAgIGxpbmVfaW5kZXggKz0gbGVuKHNvdXJjZSkKLSAgICAgICAgc3BhY2Vf
cHJlZml4ID0gIiAgICAiCi0gICAgICAgIGlmIHNob3J0OgotICAgICAgICAgICAgbGluZXMuYXBw
ZW5kKHNwYWNlX3ByZWZpeCArIHNvdXJjZS5saW5lc1tsaW5lX2luZGV4XS5zdHJpcCgpKQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc291cmNlLmxpbmVzWzpsaW5lX2lu
ZGV4XToKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc3BhY2VfcHJlZml4ICsgbGluZSkK
LSAgICAgICAgICAgIGxpbmVzLmFwcGVuZChzZWxmLmZsb3dfbWFya2VyICsgIiAgICIgKyBzb3Vy
Y2UubGluZXNbbGluZV9pbmRleF0pCi0gICAgICAgICAgICBmb3IgbGluZSBpbiBzb3VyY2UubGlu
ZXNbbGluZV9pbmRleCArIDE6XToKLSAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoc3BhY2Vf
cHJlZml4ICsgbGluZSkKLSAgICAgICAgaWYgZXhjaW5mbyBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIGluZGVudCA9IDQgaWYgc2hvcnQgZWxzZSBzZWxmLl9nZXRpbmRlbnQoc291cmNlKQotICAg
ICAgICAgICAgbGluZXMuZXh0ZW5kKHNlbGYuZ2V0X2V4Y29ubHkoZXhjaW5mbywgaW5kZW50PWlu
ZGVudCwgbWFya2FsbD1UcnVlKSkKLSAgICAgICAgcmV0dXJuIGxpbmVzCi0KLSAgICBkZWYgZ2V0
X2V4Y29ubHkoc2VsZiwgZXhjaW5mbywgaW5kZW50PTQsIG1hcmthbGw9RmFsc2UpOgotICAgICAg
ICBsaW5lcyA9IFtdCi0gICAgICAgIGluZGVudCA9ICIgIiAqIGluZGVudAotICAgICAgICAjIGdl
dCB0aGUgcmVhbCBleGNlcHRpb24gaW5mb3JtYXRpb24gb3V0Ci0gICAgICAgIGV4bGluZXMgPSBl
eGNpbmZvLmV4Y29ubHkodHJ5c2hvcnQ9VHJ1ZSkuc3BsaXQoJ1xuJykKLSAgICAgICAgZmFpbGlu
ZGVudCA9IHNlbGYuZmFpbF9tYXJrZXIgKyBpbmRlbnRbMTpdCi0gICAgICAgIGZvciBsaW5lIGlu
IGV4bGluZXM6Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoZmFpbGluZGVudCArIGxpbmUpCi0g
ICAgICAgICAgICBpZiBub3QgbWFya2FsbDoKLSAgICAgICAgICAgICAgICBmYWlsaW5kZW50ID0g
aW5kZW50Ci0gICAgICAgIHJldHVybiBsaW5lcwotCi0gICAgZGVmIHJlcHJfbG9jYWxzKHNlbGYs
IGxvY2Fscyk6Ci0gICAgICAgIGlmIHNlbGYuc2hvd2xvY2FsczoKLSAgICAgICAgICAgIGxpbmVz
ID0gW10KLSAgICAgICAgICAgIGtleXMgPSBbbG9jIGZvciBsb2MgaW4gbG9jYWxzIGlmIGxvY1sw
XSAhPSAiQCJdCi0gICAgICAgICAgICBrZXlzLnNvcnQoKQotICAgICAgICAgICAgZm9yIG5hbWUg
aW4ga2V5czoKLSAgICAgICAgICAgICAgICB2YWx1ZSA9IGxvY2Fsc1tuYW1lXQotICAgICAgICAg
ICAgICAgIGlmIG5hbWUgPT0gJ19fYnVpbHRpbnNfXyc6Ci0gICAgICAgICAgICAgICAgICAgIGxp
bmVzLmFwcGVuZCgiX19idWlsdGluc19fID0gPGJ1aWx0aW5zPiIpCi0gICAgICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGZvcm1hdHRpbmcgY291bGQgYWxsIGJl
IGhhbmRsZWQgYnkgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgX3JlcHIoKSBmdW5jdGlvbiwg
d2hpY2ggaXMgb25seSByZXBybGliLlJlcHIgaW4KLSAgICAgICAgICAgICAgICAgICAgIyBkaXNn
dWlzZSwgc28gaXMgdmVyeSBjb25maWd1cmFibGUuCi0gICAgICAgICAgICAgICAgICAgIHN0cl9y
ZXByID0gc2VsZi5fc2FmZXJlcHIodmFsdWUpCi0gICAgICAgICAgICAgICAgICAgICMgaWYgbGVu
KHN0cl9yZXByKSA8IDcwIG9yIG5vdCBpc2luc3RhbmNlKHZhbHVlLAotICAgICAgICAgICAgICAg
ICAgICAjICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsaXN0LCB0dXBsZSwgZGljdCkpOgot
ICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiUtMTBzID0gJXMiICUgKG5hbWUsIHN0
cl9yZXByKSkKLSAgICAgICAgICAgICAgICAgICAgIyBlbHNlOgotICAgICAgICAgICAgICAgICAg
ICAjICAgIHNlbGYuX2xpbmUoIiUtMTBzID1cXCIgJSAobmFtZSwpKQotICAgICAgICAgICAgICAg
ICAgICAjICAgICMgWFhYCi0gICAgICAgICAgICAgICAgICAgICMgICAgcHkuc3RkLnBwcmludC5w
cHJpbnQodmFsdWUsIHN0cmVhbT1zZWxmLmV4Y2luZm93cml0ZXIpCi0gICAgICAgICAgICByZXR1
cm4gUmVwckxvY2FscyhsaW5lcykKLQotICAgIGRlZiByZXByX3RyYWNlYmFja19lbnRyeShzZWxm
LCBlbnRyeSwgZXhjaW5mbz1Ob25lKToKLSAgICAgICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLSAg
ICAgICAgc291cmNlID0gc2VsZi5fZ2V0ZW50cnlzb3VyY2UoZW50cnkpCi0gICAgICAgIGlmIHNv
dXJjZSBpcyBOb25lOgotICAgICAgICAgICAgc291cmNlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2Uo
Ij8/PyIpCi0gICAgICAgICAgICBsaW5lX2luZGV4ID0gMAotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgIyBlbnRyeS5nZXRmaXJzdGxpbmVzb3VyY2UoKSBjYW4gYmUgLTEsIHNob3VsZCBiZSAw
IG9uIGp5dGhvbgotICAgICAgICAgICAgbGluZV9pbmRleCA9IGVudHJ5LmxpbmVubyAtIG1heChl
bnRyeS5nZXRmaXJzdGxpbmVzb3VyY2UoKSwgMCkKLQotICAgICAgICBsaW5lcyA9IFtdCi0gICAg
ICAgIHN0eWxlID0gZW50cnkuX3JlcHJfc3R5bGUKLSAgICAgICAgaWYgc3R5bGUgaXMgTm9uZToK
LSAgICAgICAgICAgIHN0eWxlID0gc2VsZi5zdHlsZQotICAgICAgICBpZiBzdHlsZSBpbiAoInNo
b3J0IiwgImxvbmciKToKLSAgICAgICAgICAgIHNob3J0ID0gc3R5bGUgPT0gInNob3J0IgotICAg
ICAgICAgICAgcmVwcmFyZ3MgPSBzZWxmLnJlcHJfYXJncyhlbnRyeSkgaWYgbm90IHNob3J0IGVs
c2UgTm9uZQotICAgICAgICAgICAgcyA9IHNlbGYuZ2V0X3NvdXJjZShzb3VyY2UsIGxpbmVfaW5k
ZXgsIGV4Y2luZm8sIHNob3J0PXNob3J0KQotICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHMpCi0g
ICAgICAgICAgICBpZiBzaG9ydDoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gImluICVzIiAl
IChlbnRyeS5uYW1lKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtZXNzYWdl
ID0gZXhjaW5mbyBhbmQgZXhjaW5mby50eXBlbmFtZSBvciAiIgotICAgICAgICAgICAgcGF0aCA9
IHNlbGYuX21ha2VwYXRoKGVudHJ5LnBhdGgpCi0gICAgICAgICAgICBmaWxlbG9jcmVwciA9IFJl
cHJGaWxlTG9jYXRpb24ocGF0aCwgZW50cnkubGluZW5vICsgMSwgbWVzc2FnZSkKLSAgICAgICAg
ICAgIGxvY2Fsc3JlcHIgPSBOb25lCi0gICAgICAgICAgICBpZiBub3Qgc2hvcnQ6Ci0gICAgICAg
ICAgICAgICAgbG9jYWxzcmVwciA9IHNlbGYucmVwcl9sb2NhbHMoZW50cnkubG9jYWxzKQotICAg
ICAgICAgICAgcmV0dXJuIFJlcHJFbnRyeShsaW5lcywgcmVwcmFyZ3MsIGxvY2Fsc3JlcHIsIGZp
bGVsb2NyZXByLCBzdHlsZSkKLSAgICAgICAgaWYgZXhjaW5mbzoKLSAgICAgICAgICAgIGxpbmVz
LmV4dGVuZChzZWxmLmdldF9leGNvbmx5KGV4Y2luZm8sIGluZGVudD00KSkKLSAgICAgICAgcmV0
dXJuIFJlcHJFbnRyeShsaW5lcywgTm9uZSwgTm9uZSwgTm9uZSwgc3R5bGUpCi0KLSAgICBkZWYg
X21ha2VwYXRoKHNlbGYsIHBhdGgpOgotICAgICAgICBpZiBub3Qgc2VsZi5hYnNwYXRoOgotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG5wID0gcHkucGF0aC5sb2NhbCgpLmJlc3Ry
ZWxwYXRoKHBhdGgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAg
ICByZXR1cm4gcGF0aAotICAgICAgICAgICAgaWYgbGVuKG5wKSA8IGxlbihzdHIocGF0aCkpOgot
ICAgICAgICAgICAgICAgIHBhdGggPSBucAotICAgICAgICByZXR1cm4gcGF0aAotCi0gICAgZGVm
IHJlcHJfdHJhY2ViYWNrKHNlbGYsIGV4Y2luZm8pOgotICAgICAgICB0cmFjZWJhY2sgPSBleGNp
bmZvLnRyYWNlYmFjawotICAgICAgICBpZiBzZWxmLnRiZmlsdGVyOgotICAgICAgICAgICAgdHJh
Y2ViYWNrID0gdHJhY2ViYWNrLmZpbHRlcigpCi0KLSAgICAgICAgaWYgaXNfcmVjdXJzaW9uX2Vy
cm9yKGV4Y2luZm8pOgotICAgICAgICAgICAgdHJhY2ViYWNrLCBleHRyYWxpbmUgPSBzZWxmLl90
cnVuY2F0ZV9yZWN1cnNpdmVfdHJhY2ViYWNrKHRyYWNlYmFjaykKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGV4dHJhbGluZSA9IE5vbmUKLQotICAgICAgICBsYXN0ID0gdHJhY2ViYWNrWy0x
XQotICAgICAgICBlbnRyaWVzID0gW10KLSAgICAgICAgZm9yIGluZGV4LCBlbnRyeSBpbiBlbnVt
ZXJhdGUodHJhY2ViYWNrKToKLSAgICAgICAgICAgIGVpbmZvID0gKGxhc3QgPT0gZW50cnkpIGFu
ZCBleGNpbmZvIG9yIE5vbmUKLSAgICAgICAgICAgIHJlcHJlbnRyeSA9IHNlbGYucmVwcl90cmFj
ZWJhY2tfZW50cnkoZW50cnksIGVpbmZvKQotICAgICAgICAgICAgZW50cmllcy5hcHBlbmQocmVw
cmVudHJ5KQotICAgICAgICByZXR1cm4gUmVwclRyYWNlYmFjayhlbnRyaWVzLCBleHRyYWxpbmUs
IHN0eWxlPXNlbGYuc3R5bGUpCi0KLSAgICBkZWYgX3RydW5jYXRlX3JlY3Vyc2l2ZV90cmFjZWJh
Y2soc2VsZiwgdHJhY2ViYWNrKToKLSAgICAgICAgIiIiCi0gICAgICAgIFRydW5jYXRlIHRoZSBn
aXZlbiByZWN1cnNpdmUgdHJhY2ViYWNrIHRyeWluZyB0byBmaW5kIHRoZSBzdGFydGluZyBwb2lu
dAotICAgICAgICBvZiB0aGUgcmVjdXJzaW9uLgotCi0gICAgICAgIFRoZSBkZXRlY3Rpb24gaXMg
ZG9uZSBieSBnb2luZyB0aHJvdWdoIGVhY2ggdHJhY2ViYWNrIGVudHJ5IGFuZCBmaW5kaW5nIHRo
ZQotICAgICAgICBwb2ludCBpbiB3aGljaCB0aGUgbG9jYWxzIG9mIHRoZSBmcmFtZSBhcmUgZXF1
YWwgdG8gdGhlIGxvY2FscyBvZiBhIHByZXZpb3VzIGZyYW1lIChzZWUgYGByZWN1cnNpb25pbmRl
eCgpYGAuCi0KLSAgICAgICAgSGFuZGxlIHRoZSBzaXR1YXRpb24gd2hlcmUgdGhlIHJlY3Vyc2lv
biBwcm9jZXNzIG1pZ2h0IHJhaXNlIGFuIGV4Y2VwdGlvbiAoZm9yIGV4YW1wbGUKLSAgICAgICAg
Y29tcGFyaW5nIG51bXB5IGFycmF5cyB1c2luZyBlcXVhbGl0eSByYWlzZXMgYSBUeXBlRXJyb3Ip
LCBpbiB3aGljaCBjYXNlIHdlIGRvIG91ciBiZXN0IHRvCi0gICAgICAgIHdhcm4gdGhlIHVzZXIg
b2YgdGhlIGVycm9yIGFuZCBzaG93IGEgbGltaXRlZCB0cmFjZWJhY2suCi0gICAgICAgICIiIgot
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZWN1cnNpb25pbmRleCA9IHRyYWNlYmFjay5yZWN1
cnNpb25pbmRleCgpCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAg
IG1heF9mcmFtZXMgPSAxMAotICAgICAgICAgICAgZXh0cmFsaW5lID0gKAotICAgICAgICAgICAg
ICAgICchISEgUmVjdXJzaW9uIGVycm9yIGRldGVjdGVkLCBidXQgYW4gZXJyb3Igb2NjdXJyZWQg
bG9jYXRpbmcgdGhlIG9yaWdpbiBvZiByZWN1cnNpb24uXG4nCi0gICAgICAgICAgICAgICAgJyAg
VGhlIGZvbGxvd2luZyBleGNlcHRpb24gaGFwcGVuZWQgd2hlbiBjb21wYXJpbmcgbG9jYWxzIGlu
IHRoZSBzdGFjayBmcmFtZTpcbicKLSAgICAgICAgICAgICAgICAnICAgIHtleGNfdHlwZX06IHtl
eGNfbXNnfVxuJwotICAgICAgICAgICAgICAgICcgIERpc3BsYXlpbmcgZmlyc3QgYW5kIGxhc3Qg
e21heF9mcmFtZXN9IHN0YWNrIGZyYW1lcyBvdXQgb2Yge3RvdGFsfS4nCi0gICAgICAgICAgICAp
LmZvcm1hdChleGNfdHlwZT10eXBlKGUpLl9fbmFtZV9fLCBleGNfbXNnPXNhZmVfc3RyKGUpLCBt
YXhfZnJhbWVzPW1heF9mcmFtZXMsIHRvdGFsPWxlbih0cmFjZWJhY2spKQotICAgICAgICAgICAg
dHJhY2ViYWNrID0gdHJhY2ViYWNrWzptYXhfZnJhbWVzXSArIHRyYWNlYmFja1stbWF4X2ZyYW1l
czpdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiByZWN1cnNpb25pbmRleCBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgICAgICBleHRyYWxpbmUgPSAiISEhIFJlY3Vyc2lvbiBkZXRlY3Rl
ZCAoc2FtZSBsb2NhbHMgJiBwb3NpdGlvbikiCi0gICAgICAgICAgICAgICAgdHJhY2ViYWNrID0g
dHJhY2ViYWNrWzpyZWN1cnNpb25pbmRleCArIDFdCi0gICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgIGV4dHJhbGluZSA9IE5vbmUKLQotICAgICAgICByZXR1cm4gdHJhY2ViYWNrLCBl
eHRyYWxpbmUKLQotICAgIGRlZiByZXByX2V4Y2luZm8oc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAg
IGlmIF9QWTI6Ci0gICAgICAgICAgICByZXBydHJhY2ViYWNrID0gc2VsZi5yZXByX3RyYWNlYmFj
ayhleGNpbmZvKQotICAgICAgICAgICAgcmVwcmNyYXNoID0gZXhjaW5mby5fZ2V0cmVwcmNyYXNo
KCkKLQotICAgICAgICAgICAgcmV0dXJuIFJlcHJFeGNlcHRpb25JbmZvKHJlcHJ0cmFjZWJhY2ss
IHJlcHJjcmFzaCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcHJfY2hhaW4gPSBbXQot
ICAgICAgICAgICAgZSA9IGV4Y2luZm8udmFsdWUKLSAgICAgICAgICAgIGRlc2NyID0gTm9uZQot
ICAgICAgICAgICAgd2hpbGUgZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBpZiBleGNp
bmZvOgotICAgICAgICAgICAgICAgICAgICByZXBydHJhY2ViYWNrID0gc2VsZi5yZXByX3RyYWNl
YmFjayhleGNpbmZvKQotICAgICAgICAgICAgICAgICAgICByZXByY3Jhc2ggPSBleGNpbmZvLl9n
ZXRyZXByY3Jhc2goKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAg
ICMgZmFsbGJhY2sgdG8gbmF0aXZlIHJlcHIgaWYgdGhlIGV4Y2VwdGlvbiBkb2Vzbid0IGhhdmUg
YSB0cmFjZWJhY2s6Ci0gICAgICAgICAgICAgICAgICAgICMgRXhjZXB0aW9uSW5mbyBvYmplY3Rz
IHJlcXVpcmUgYSBmdWxsIHRyYWNlYmFjayB0byB3b3JrCi0gICAgICAgICAgICAgICAgICAgIHJl
cHJ0cmFjZWJhY2sgPSBSZXByVHJhY2ViYWNrTmF0aXZlKHB5LnN0ZC50cmFjZWJhY2suZm9ybWF0
X2V4Y2VwdGlvbih0eXBlKGUpLCBlLCBOb25lKSkKLSAgICAgICAgICAgICAgICAgICAgcmVwcmNy
YXNoID0gTm9uZQotCi0gICAgICAgICAgICAgICAgcmVwcl9jaGFpbiArPSBbKHJlcHJ0cmFjZWJh
Y2ssIHJlcHJjcmFzaCwgZGVzY3IpXQotICAgICAgICAgICAgICAgIGlmIGUuX19jYXVzZV9fIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBlID0gZS5fX2NhdXNlX18KLSAgICAgICAg
ICAgICAgICAgICAgZXhjaW5mbyA9IEV4Y2VwdGlvbkluZm8oKHR5cGUoZSksIGUsIGUuX190cmFj
ZWJhY2tfXykpIGlmIGUuX190cmFjZWJhY2tfXyBlbHNlIE5vbmUKLSAgICAgICAgICAgICAgICAg
ICAgZGVzY3IgPSAnVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSBvZiB0
aGUgZm9sbG93aW5nIGV4Y2VwdGlvbjonCi0gICAgICAgICAgICAgICAgZWxpZiAoZS5fX2NvbnRl
eHRfXyBpcyBub3QgTm9uZSBhbmQgbm90IGUuX19zdXBwcmVzc19jb250ZXh0X18pOgotICAgICAg
ICAgICAgICAgICAgICBlID0gZS5fX2NvbnRleHRfXwotICAgICAgICAgICAgICAgICAgICBleGNp
bmZvID0gRXhjZXB0aW9uSW5mbygodHlwZShlKSwgZSwgZS5fX3RyYWNlYmFja19fKSkgaWYgZS5f
X3RyYWNlYmFja19fIGVsc2UgTm9uZQotICAgICAgICAgICAgICAgICAgICBkZXNjciA9ICdEdXJp
bmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgYW5vdGhlciBleGNlcHRpb24gb2Nj
dXJyZWQ6JwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGUgPSBO
b25lCi0gICAgICAgICAgICByZXByX2NoYWluLnJldmVyc2UoKQotICAgICAgICAgICAgcmV0dXJu
IEV4Y2VwdGlvbkNoYWluUmVwcihyZXByX2NoYWluKQotCi0KLWNsYXNzIFRlcm1pbmFsUmVwcihv
YmplY3QpOgotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICBzID0gc2VsZi5fX3VuaWNv
ZGVfXygpCi0gICAgICAgIGlmIF9QWTI6Ci0gICAgICAgICAgICBzID0gcy5lbmNvZGUoJ3V0Zi04
JykKLSAgICAgICAgcmV0dXJuIHMKLQotICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKLSAgICAg
ICAgIyBGWUkgdGhpcyBpcyBjYWxsZWQgZnJvbSBweXRlc3QteGRpc3QncyBzZXJpYWxpemF0aW9u
IG9mIGV4Y2VwdGlvbgotICAgICAgICAjIGluZm9ybWF0aW9uLgotICAgICAgICBpbyA9IHB5Lmlv
LlRleHRJTygpCi0gICAgICAgIHR3ID0gcHkuaW8uVGVybWluYWxXcml0ZXIoZmlsZT1pbykKLSAg
ICAgICAgc2VsZi50b3Rlcm1pbmFsKHR3KQotICAgICAgICByZXR1cm4gaW8uZ2V0dmFsdWUoKS5z
dHJpcCgpCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiPCVzIGlu
c3RhbmNlIGF0ICUweD4iICUgKHNlbGYuX19jbGFzc19fLCBpZChzZWxmKSkKLQotCi1jbGFzcyBF
eGNlcHRpb25SZXByKFRlcm1pbmFsUmVwcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAg
ICAgICBzZWxmLnNlY3Rpb25zID0gW10KLQotICAgIGRlZiBhZGRzZWN0aW9uKHNlbGYsIG5hbWUs
IGNvbnRlbnQsIHNlcD0iLSIpOgotICAgICAgICBzZWxmLnNlY3Rpb25zLmFwcGVuZCgobmFtZSwg
Y29udGVudCwgc2VwKSkKLQotICAgIGRlZiB0b3Rlcm1pbmFsKHNlbGYsIHR3KToKLSAgICAgICAg
Zm9yIG5hbWUsIGNvbnRlbnQsIHNlcCBpbiBzZWxmLnNlY3Rpb25zOgotICAgICAgICAgICAgdHcu
c2VwKHNlcCwgbmFtZSkKLSAgICAgICAgICAgIHR3LmxpbmUoY29udGVudCkKLQotCi1jbGFzcyBF
eGNlcHRpb25DaGFpblJlcHIoRXhjZXB0aW9uUmVwcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGNoYWluKToKLSAgICAgICAgc3VwZXIoRXhjZXB0aW9uQ2hhaW5SZXByLCBzZWxmKS5fX2luaXRf
XygpCi0gICAgICAgIHNlbGYuY2hhaW4gPSBjaGFpbgotICAgICAgICAjIHJlcHJjcmFzaCBhbmQg
cmVwcnRyYWNlYmFjayBvZiB0aGUgb3V0ZXJtb3N0ICh0aGUgbmV3ZXN0KSBleGNlcHRpb24KLSAg
ICAgICAgIyBpbiB0aGUgY2hhaW4KLSAgICAgICAgc2VsZi5yZXBydHJhY2ViYWNrID0gY2hhaW5b
LTFdWzBdCi0gICAgICAgIHNlbGYucmVwcmNyYXNoID0gY2hhaW5bLTFdWzFdCi0KLSAgICBkZWYg
dG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgIGZvciBlbGVtZW50IGluIHNlbGYuY2hhaW46
Ci0gICAgICAgICAgICBlbGVtZW50WzBdLnRvdGVybWluYWwodHcpCi0gICAgICAgICAgICBpZiBl
bGVtZW50WzJdIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHR3LmxpbmUoIiIpCi0gICAg
ICAgICAgICAgICAgdHcubGluZShlbGVtZW50WzJdLCB5ZWxsb3c9VHJ1ZSkKLSAgICAgICAgc3Vw
ZXIoRXhjZXB0aW9uQ2hhaW5SZXByLCBzZWxmKS50b3Rlcm1pbmFsKHR3KQotCi0KLWNsYXNzIFJl
cHJFeGNlcHRpb25JbmZvKEV4Y2VwdGlvblJlcHIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZXBydHJhY2ViYWNrLCByZXByY3Jhc2gpOgotICAgICAgICBzdXBlcihSZXByRXhjZXB0aW9uSW5m
bywgc2VsZikuX19pbml0X18oKQotICAgICAgICBzZWxmLnJlcHJ0cmFjZWJhY2sgPSByZXBydHJh
Y2ViYWNrCi0gICAgICAgIHNlbGYucmVwcmNyYXNoID0gcmVwcmNyYXNoCi0KLSAgICBkZWYgdG90
ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgIHNlbGYucmVwcnRyYWNlYmFjay50b3Rlcm1pbmFs
KHR3KQotICAgICAgICBzdXBlcihSZXByRXhjZXB0aW9uSW5mbywgc2VsZikudG90ZXJtaW5hbCh0
dykKLQotCi1jbGFzcyBSZXByVHJhY2ViYWNrKFRlcm1pbmFsUmVwcik6Ci0gICAgZW50cnlzZXAg
PSAiXyAiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVwcmVudHJpZXMsIGV4dHJhbGluZSwg
c3R5bGUpOgotICAgICAgICBzZWxmLnJlcHJlbnRyaWVzID0gcmVwcmVudHJpZXMKLSAgICAgICAg
c2VsZi5leHRyYWxpbmUgPSBleHRyYWxpbmUKLSAgICAgICAgc2VsZi5zdHlsZSA9IHN0eWxlCi0K
LSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0gICAgICAgICMgdGhlIGVudHJpZXMgbWln
aHQgaGF2ZSBkaWZmZXJlbnQgc3R5bGVzCi0gICAgICAgIGZvciBpLCBlbnRyeSBpbiBlbnVtZXJh
dGUoc2VsZi5yZXByZW50cmllcyk6Ci0gICAgICAgICAgICBpZiBlbnRyeS5zdHlsZSA9PSAibG9u
ZyI6Ci0gICAgICAgICAgICAgICAgdHcubGluZSgiIikKLSAgICAgICAgICAgIGVudHJ5LnRvdGVy
bWluYWwodHcpCi0gICAgICAgICAgICBpZiBpIDwgbGVuKHNlbGYucmVwcmVudHJpZXMpIC0gMToK
LSAgICAgICAgICAgICAgICBuZXh0X2VudHJ5ID0gc2VsZi5yZXByZW50cmllc1tpICsgMV0KLSAg
ICAgICAgICAgICAgICBpZiBlbnRyeS5zdHlsZSA9PSAibG9uZyIgb3IgXAotICAgICAgICAgICAg
ICAgICAgIGVudHJ5LnN0eWxlID09ICJzaG9ydCIgYW5kIG5leHRfZW50cnkuc3R5bGUgPT0gImxv
bmciOgotICAgICAgICAgICAgICAgICAgICB0dy5zZXAoc2VsZi5lbnRyeXNlcCkKLQotICAgICAg
ICBpZiBzZWxmLmV4dHJhbGluZToKLSAgICAgICAgICAgIHR3LmxpbmUoc2VsZi5leHRyYWxpbmUp
Ci0KLQotY2xhc3MgUmVwclRyYWNlYmFja05hdGl2ZShSZXByVHJhY2ViYWNrKToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgdGJsaW5lcyk6Ci0gICAgICAgIHNlbGYuc3R5bGUgPSAibmF0aXZlIgot
ICAgICAgICBzZWxmLnJlcHJlbnRyaWVzID0gW1JlcHJFbnRyeU5hdGl2ZSh0YmxpbmVzKV0KLSAg
ICAgICAgc2VsZi5leHRyYWxpbmUgPSBOb25lCi0KLQotY2xhc3MgUmVwckVudHJ5TmF0aXZlKFRl
cm1pbmFsUmVwcik6Ci0gICAgc3R5bGUgPSAibmF0aXZlIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHRibGluZXMpOgotICAgICAgICBzZWxmLmxpbmVzID0gdGJsaW5lcwotCi0gICAgZGVmIHRv
dGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICB0dy53cml0ZSgiIi5qb2luKHNlbGYubGluZXMp
KQotCi0KLWNsYXNzIFJlcHJFbnRyeShUZXJtaW5hbFJlcHIpOgotICAgIGxvY2Fsc3NlcCA9ICJf
ICIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsaW5lcywgcmVwcmZ1bmNhcmdzLCByZXBybG9j
YWxzLCBmaWxlbG9jcmVwciwgc3R5bGUpOgotICAgICAgICBzZWxmLmxpbmVzID0gbGluZXMKLSAg
ICAgICAgc2VsZi5yZXByZnVuY2FyZ3MgPSByZXByZnVuY2FyZ3MKLSAgICAgICAgc2VsZi5yZXBy
bG9jYWxzID0gcmVwcmxvY2FscwotICAgICAgICBzZWxmLnJlcHJmaWxlbG9jID0gZmlsZWxvY3Jl
cHIKLSAgICAgICAgc2VsZi5zdHlsZSA9IHN0eWxlCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxm
LCB0dyk6Ci0gICAgICAgIGlmIHNlbGYuc3R5bGUgPT0gInNob3J0IjoKLSAgICAgICAgICAgIHNl
bGYucmVwcmZpbGVsb2MudG90ZXJtaW5hbCh0dykKLSAgICAgICAgICAgIGZvciBsaW5lIGluIHNl
bGYubGluZXM6Ci0gICAgICAgICAgICAgICAgcmVkID0gbGluZS5zdGFydHN3aXRoKCJFICAgIikK
LSAgICAgICAgICAgICAgICB0dy5saW5lKGxpbmUsIGJvbGQ9VHJ1ZSwgcmVkPXJlZCkKLSAgICAg
ICAgICAgICMgdHcubGluZSgiIikKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBzZWxm
LnJlcHJmdW5jYXJnczoKLSAgICAgICAgICAgIHNlbGYucmVwcmZ1bmNhcmdzLnRvdGVybWluYWwo
dHcpCi0gICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZXM6Ci0gICAgICAgICAgICByZWQgPSBs
aW5lLnN0YXJ0c3dpdGgoIkUgICAiKQotICAgICAgICAgICAgdHcubGluZShsaW5lLCBib2xkPVRy
dWUsIHJlZD1yZWQpCi0gICAgICAgIGlmIHNlbGYucmVwcmxvY2FsczoKLSAgICAgICAgICAgICMg
dHcuc2VwKHNlbGYubG9jYWxzc2VwLCAiTG9jYWxzIikKLSAgICAgICAgICAgIHR3LmxpbmUoIiIp
Ci0gICAgICAgICAgICBzZWxmLnJlcHJsb2NhbHMudG90ZXJtaW5hbCh0dykKLSAgICAgICAgaWYg
c2VsZi5yZXByZmlsZWxvYzoKLSAgICAgICAgICAgIGlmIHNlbGYubGluZXM6Ci0gICAgICAgICAg
ICAgICAgdHcubGluZSgiIikKLSAgICAgICAgICAgIHNlbGYucmVwcmZpbGVsb2MudG90ZXJtaW5h
bCh0dykKLQotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIiVzXG4lc1xu
JXMiICUgKCJcbiIuam9pbihzZWxmLmxpbmVzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLnJlcHJsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5yZXByZmlsZWxvYykKLQotCi1jbGFzcyBSZXByRmlsZUxvY2F0aW9uKFRlcm1pbmFsUmVwcik6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgsIGxpbmVubywgbWVzc2FnZSk6Ci0gICAgICAg
IHNlbGYucGF0aCA9IHN0cihwYXRoKQotICAgICAgICBzZWxmLmxpbmVubyA9IGxpbmVubwotICAg
ICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0
dyk6Ci0gICAgICAgICMgZmlsZW5hbWUgYW5kIGxpbmVubyBvdXRwdXQgZm9yIGVhY2ggZW50cnks
Ci0gICAgICAgICMgdXNpbmcgYW4gb3V0cHV0IGZvcm1hdCB0aGF0IG1vc3QgZWRpdG9ycyB1bnRl
cnN0YW5kCi0gICAgICAgIG1zZyA9IHNlbGYubWVzc2FnZQotICAgICAgICBpID0gbXNnLmZpbmQo
IlxuIikKLSAgICAgICAgaWYgaSAhPSAtMToKLSAgICAgICAgICAgIG1zZyA9IG1zZ1s6aV0KLSAg
ICAgICAgdHcud3JpdGUoc2VsZi5wYXRoLCBib2xkPVRydWUsIHJlZD1UcnVlKQotICAgICAgICB0
dy5saW5lKCI6JXM6ICVzIiAlIChzZWxmLmxpbmVubywgbXNnKSkKLQotCi1jbGFzcyBSZXByTG9j
YWxzKFRlcm1pbmFsUmVwcik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAg
ICAgc2VsZi5saW5lcyA9IGxpbmVzCi0KLSAgICBkZWYgdG90ZXJtaW5hbChzZWxmLCB0dyk6Ci0g
ICAgICAgIGZvciBsaW5lIGluIHNlbGYubGluZXM6Ci0gICAgICAgICAgICB0dy5saW5lKGxpbmUp
Ci0KLQotY2xhc3MgUmVwckZ1bmNBcmdzKFRlcm1pbmFsUmVwcik6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGFyZ3MpOgotICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0KLSAgICBkZWYgdG90ZXJt
aW5hbChzZWxmLCB0dyk6Ci0gICAgICAgIGlmIHNlbGYuYXJnczoKLSAgICAgICAgICAgIGxpbmVz
b2ZhciA9ICIiCi0gICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gc2VsZi5hcmdzOgotICAg
ICAgICAgICAgICAgIG5zID0gIiVzID0gJXMiICUgKHNhZmVfc3RyKG5hbWUpLCBzYWZlX3N0cih2
YWx1ZSkpCi0gICAgICAgICAgICAgICAgaWYgbGVuKG5zKSArIGxlbihsaW5lc29mYXIpICsgMiA+
IHR3LmZ1bGx3aWR0aDoKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluZXNvZmFyOgotICAgICAg
ICAgICAgICAgICAgICAgICAgdHcubGluZShsaW5lc29mYXIpCi0gICAgICAgICAgICAgICAgICAg
IGxpbmVzb2ZhciA9IG5zCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgaWYgbGluZXNvZmFyOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZXNvZmFyICs9ICIs
ICIgKyBucwotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgbGluZXNvZmFyID0gbnMKLSAgICAgICAgICAgIGlmIGxpbmVzb2ZhcjoKLSAgICAgICAgICAg
ICAgICB0dy5saW5lKGxpbmVzb2ZhcikKLSAgICAgICAgICAgIHR3LmxpbmUoIiIpCi0KLQotZGVm
IGdldHJhd2NvZGUob2JqLCB0cnljYWxsPVRydWUpOgotICAgICIiIiByZXR1cm4gY29kZSBvYmpl
Y3QgZm9yIGdpdmVuIGZ1bmN0aW9uLiAiIiIKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiBvYmou
X19jb2RlX18KLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIG9iaiA9IGdldGF0
dHIob2JqLCAnaW1fZnVuYycsIG9iaikKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosICdmdW5j
X2NvZGUnLCBvYmopCi0gICAgICAgIG9iaiA9IGdldGF0dHIob2JqLCAnZl9jb2RlJywgb2JqKQot
ICAgICAgICBvYmogPSBnZXRhdHRyKG9iaiwgJ19fY29kZV9fJywgb2JqKQotICAgICAgICBpZiB0
cnljYWxsIGFuZCBub3QgaGFzYXR0cihvYmosICdjb19maXJzdGxpbmVubycpOgotICAgICAgICAg
ICAgaWYgaGFzYXR0cihvYmosICdfX2NhbGxfXycpIGFuZCBub3QgcHkuc3RkLmluc3BlY3QuaXNj
bGFzcyhvYmopOgotICAgICAgICAgICAgICAgIHggPSBnZXRyYXdjb2RlKG9iai5fX2NhbGxfXywg
dHJ5Y2FsbD1GYWxzZSkKLSAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHgsICdjb19maXJzdGxp
bmVubycpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4geAotICAgICAgICByZXR1cm4gb2Jq
Ci0KLQotaWYgUFkzNTogICMgUmVjdXJzaW9uRXJyb3IgaW50cm9kdWNlZCBpbiAzLjUKLSAgICBk
ZWYgaXNfcmVjdXJzaW9uX2Vycm9yKGV4Y2luZm8pOgotICAgICAgICByZXR1cm4gZXhjaW5mby5l
cnJpc2luc3RhbmNlKFJlY3Vyc2lvbkVycm9yKSAgIyBub3FhCi1lbHNlOgotICAgIGRlZiBpc19y
ZWN1cnNpb25fZXJyb3IoZXhjaW5mbyk6Ci0gICAgICAgIGlmIG5vdCBleGNpbmZvLmVycmlzaW5z
dGFuY2UoUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICB0
cnk6Ci0gICAgICAgICAgICByZXR1cm4gIm1heGltdW0gcmVjdXJzaW9uIGRlcHRoIGV4Y2VlZGVk
IiBpbiBzdHIoZXhjaW5mby52YWx1ZSkKLSAgICAgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKLSAg
ICAgICAgICAgIHJldHVybiBGYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9f
Y29kZS9zb3VyY2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYzOGM1OThiNzQ5ZGIyODg2MWQyMDAwNmU3ZGZh
OGY5MGU1NTRiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQorKysgL2Rldi9udWxsCkBAIC0x
LDQxNSArMCwwIEBACi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2
aXNpb24sIGdlbmVyYXRvcnMsIHByaW50X2Z1bmN0aW9uCi0KLWZyb20gYmlzZWN0IGltcG9ydCBi
aXNlY3RfcmlnaHQKLWltcG9ydCBzeXMKLWltcG9ydCBzaXgKLWltcG9ydCBpbnNwZWN0Ci1pbXBv
cnQgdG9rZW5pemUKLWltcG9ydCBweQotY3B5X2NvbXBpbGUgPSBjb21waWxlCi0KLXRyeToKLSAg
ICBpbXBvcnQgX2FzdAotICAgIGZyb20gX2FzdCBpbXBvcnQgUHlDRl9PTkxZX0FTVCBhcyBfQVNU
X0ZMQUcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBfQVNUX0ZMQUcgPSAwCi0gICAgX2FzdCA9
IE5vbmUKLQotCi1jbGFzcyBTb3VyY2Uob2JqZWN0KToKLSAgICAiIiIgYSBpbW11dGFibGUgb2Jq
ZWN0IGhvbGRpbmcgYSBzb3VyY2UgY29kZSBmcmFnbWVudCwKLSAgICAgICAgcG9zc2libHkgZGVp
bmRlbnRpbmcgaXQuCi0gICAgIiIiCi0gICAgX2NvbXBpbGVjb3VudGVyID0gMAotCi0gICAgZGVm
IF9faW5pdF9fKHNlbGYsICpwYXJ0cywgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLmxpbmVzID0g
bGluZXMgPSBbXQotICAgICAgICBkZSA9IGt3YXJncy5nZXQoJ2RlaW5kZW50JywgVHJ1ZSkKLSAg
ICAgICAgcnN0cmlwID0ga3dhcmdzLmdldCgncnN0cmlwJywgVHJ1ZSkKLSAgICAgICAgZm9yIHBh
cnQgaW4gcGFydHM6Ci0gICAgICAgICAgICBpZiBub3QgcGFydDoKLSAgICAgICAgICAgICAgICBw
YXJ0bGluZXMgPSBbXQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwYXJ0LCBTb3VyY2UpOgot
ICAgICAgICAgICAgICAgIHBhcnRsaW5lcyA9IHBhcnQubGluZXMKLSAgICAgICAgICAgIGVsaWYg
aXNpbnN0YW5jZShwYXJ0LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICBwYXJ0bGlu
ZXMgPSBbeC5yc3RyaXAoIlxuIikgZm9yIHggaW4gcGFydF0KLSAgICAgICAgICAgIGVsaWYgaXNp
bnN0YW5jZShwYXJ0LCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgICAgICBwYXJ0bGlu
ZXMgPSBwYXJ0LnNwbGl0KCdcbicpCi0gICAgICAgICAgICAgICAgaWYgcnN0cmlwOgotICAgICAg
ICAgICAgICAgICAgICB3aGlsZSBwYXJ0bGluZXM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBp
ZiBwYXJ0bGluZXNbLTFdLnN0cmlwKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRsaW5lcy5wb3AoKQotICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICBwYXJ0bGluZXMgPSBnZXRzb3VyY2UocGFydCwgZGVpbmRl
bnQ9ZGUpLmxpbmVzCi0gICAgICAgICAgICBpZiBkZToKLSAgICAgICAgICAgICAgICBwYXJ0bGlu
ZXMgPSBkZWluZGVudChwYXJ0bGluZXMpCi0gICAgICAgICAgICBsaW5lcy5leHRlbmQocGFydGxp
bmVzKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6Ci0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLmxpbmVzID09IG90aGVyLmxpbmVzCi0gICAgICAgIGV4Y2VwdCBB
dHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob3RoZXIsIHN0cik6Ci0g
ICAgICAgICAgICAgICAgcmV0dXJuIHN0cihzZWxmKSA9PSBvdGhlcgotICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCi0KLSAgICBfX2hhc2hfXyA9IE5vbmUKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhz
ZWxmLCBrZXkpOgotICAgICAgICBpZiBpc2luc3RhbmNlKGtleSwgaW50KToKLSAgICAgICAgICAg
IHJldHVybiBzZWxmLmxpbmVzW2tleV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGtl
eS5zdGVwIG5vdCBpbiAoTm9uZSwgMSk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJv
cigiY2Fubm90IHNsaWNlIGEgU291cmNlIHdpdGggYSBzdGVwIikKLSAgICAgICAgICAgIG5ld3Nv
dXJjZSA9IFNvdXJjZSgpCi0gICAgICAgICAgICBuZXdzb3VyY2UubGluZXMgPSBzZWxmLmxpbmVz
W2tleS5zdGFydDprZXkuc3RvcF0KLSAgICAgICAgICAgIHJldHVybiBuZXdzb3VyY2UKLQotICAg
IGRlZiBfX2xlbl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gbGVuKHNlbGYubGluZXMpCi0KLSAg
ICBkZWYgc3RyaXAoc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gbmV3IHNvdXJjZSBvYmplY3Qg
d2l0aCB0cmFpbGluZwotICAgICAgICAgICAgYW5kIGxlYWRpbmcgYmxhbmsgbGluZXMgcmVtb3Zl
ZC4KLSAgICAgICAgIiIiCi0gICAgICAgIHN0YXJ0LCBlbmQgPSAwLCBsZW4oc2VsZikKLSAgICAg
ICAgd2hpbGUgc3RhcnQgPCBlbmQgYW5kIG5vdCBzZWxmLmxpbmVzW3N0YXJ0XS5zdHJpcCgpOgot
ICAgICAgICAgICAgc3RhcnQgKz0gMQotICAgICAgICB3aGlsZSBlbmQgPiBzdGFydCBhbmQgbm90
IHNlbGYubGluZXNbZW5kIC0gMV0uc3RyaXAoKToKLSAgICAgICAgICAgIGVuZCAtPSAxCi0gICAg
ICAgIHNvdXJjZSA9IFNvdXJjZSgpCi0gICAgICAgIHNvdXJjZS5saW5lc1s6XSA9IHNlbGYubGlu
ZXNbc3RhcnQ6ZW5kXQotICAgICAgICByZXR1cm4gc291cmNlCi0KLSAgICBkZWYgcHV0YXJvdW5k
KHNlbGYsIGJlZm9yZT0nJywgYWZ0ZXI9JycsIGluZGVudD0nICcgKiA0KToKLSAgICAgICAgIiIi
IHJldHVybiBhIGNvcHkgb2YgdGhlIHNvdXJjZSBvYmplY3Qgd2l0aAotICAgICAgICAgICAgJ2Jl
Zm9yZScgYW5kICdhZnRlcicgd3JhcHBlZCBhcm91bmQgaXQuCi0gICAgICAgICIiIgotICAgICAg
ICBiZWZvcmUgPSBTb3VyY2UoYmVmb3JlKQotICAgICAgICBhZnRlciA9IFNvdXJjZShhZnRlcikK
LSAgICAgICAgbmV3c291cmNlID0gU291cmNlKCkKLSAgICAgICAgbGluZXMgPSBbKGluZGVudCAr
IGxpbmUpIGZvciBsaW5lIGluIHNlbGYubGluZXNdCi0gICAgICAgIG5ld3NvdXJjZS5saW5lcyA9
IGJlZm9yZS5saW5lcyArIGxpbmVzICsgYWZ0ZXIubGluZXMKLSAgICAgICAgcmV0dXJuIG5ld3Nv
dXJjZQotCi0gICAgZGVmIGluZGVudChzZWxmLCBpbmRlbnQ9JyAnICogNCk6Ci0gICAgICAgICIi
IiByZXR1cm4gYSBjb3B5IG9mIHRoZSBzb3VyY2Ugb2JqZWN0IHdpdGgKLSAgICAgICAgICAgIGFs
bCBsaW5lcyBpbmRlbnRlZCBieSB0aGUgZ2l2ZW4gaW5kZW50LXN0cmluZy4KLSAgICAgICAgIiIi
Ci0gICAgICAgIG5ld3NvdXJjZSA9IFNvdXJjZSgpCi0gICAgICAgIG5ld3NvdXJjZS5saW5lcyA9
IFsoaW5kZW50ICsgbGluZSkgZm9yIGxpbmUgaW4gc2VsZi5saW5lc10KLSAgICAgICAgcmV0dXJu
IG5ld3NvdXJjZQotCi0gICAgZGVmIGdldHN0YXRlbWVudChzZWxmLCBsaW5lbm8sIGFzc2VydGlv
bj1GYWxzZSk6Ci0gICAgICAgICIiIiByZXR1cm4gU291cmNlIHN0YXRlbWVudCB3aGljaCBjb250
YWlucyB0aGUKLSAgICAgICAgICAgIGdpdmVuIGxpbmVudW1iZXIgKGNvdW50ZWQgZnJvbSAwKS4K
LSAgICAgICAgIiIiCi0gICAgICAgIHN0YXJ0LCBlbmQgPSBzZWxmLmdldHN0YXRlbWVudHJhbmdl
KGxpbmVubywgYXNzZXJ0aW9uKQotICAgICAgICByZXR1cm4gc2VsZltzdGFydDplbmRdCi0KLSAg
ICBkZWYgZ2V0c3RhdGVtZW50cmFuZ2Uoc2VsZiwgbGluZW5vLCBhc3NlcnRpb249RmFsc2UpOgot
ICAgICAgICAiIiIgcmV0dXJuIChzdGFydCwgZW5kKSB0dXBsZSB3aGljaCBzcGFucyB0aGUgbWlu
aW1hbAotICAgICAgICAgICAgc3RhdGVtZW50IHJlZ2lvbiB3aGljaCBjb250YWluaW5nIHRoZSBn
aXZlbiBsaW5lbm8uCi0gICAgICAgICIiIgotICAgICAgICBpZiBub3QgKDAgPD0gbGluZW5vIDwg
bGVuKHNlbGYpKToKLSAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoImxpbmVubyBvdXQgb2Yg
cmFuZ2UiKQotICAgICAgICBhc3QsIHN0YXJ0LCBlbmQgPSBnZXRzdGF0ZW1lbnRyYW5nZV9hc3Qo
bGluZW5vLCBzZWxmKQotICAgICAgICByZXR1cm4gc3RhcnQsIGVuZAotCi0gICAgZGVmIGRlaW5k
ZW50KHNlbGYsIG9mZnNldD1Ob25lKToKLSAgICAgICAgIiIiIHJldHVybiBhIG5ldyBzb3VyY2Ug
b2JqZWN0IGRlaW5kZW50ZWQgYnkgb2Zmc2V0LgotICAgICAgICAgICAgSWYgb2Zmc2V0IGlzIE5v
bmUgdGhlbiBndWVzcyBhbiBpbmRlbnRhdGlvbiBvZmZzZXQgZnJvbQotICAgICAgICAgICAgdGhl
IGZpcnN0IG5vbi1ibGFuayBsaW5lLiAgU3Vic2VxdWVudCBsaW5lcyB3aGljaCBoYXZlIGEKLSAg
ICAgICAgICAgIGxvd2VyIGluZGVudGF0aW9uIG9mZnNldCB3aWxsIGJlIGNvcGllZCB2ZXJiYXRp
bSBhcwotICAgICAgICAgICAgdGhleSBhcmUgYXNzdW1lZCB0byBiZSBwYXJ0IG9mIG11bHRpbGlu
ZXMuCi0gICAgICAgICIiIgotICAgICAgICAjIFhYWCBtYXliZSB1c2UgdGhlIHRva2VuaXplciB0
byBwcm9wZXJseSBoYW5kbGUgbXVsdGlsaW5lCi0gICAgICAgICMgICAgIHN0cmluZ3MgZXRjLnBw
PwotICAgICAgICBuZXdzb3VyY2UgPSBTb3VyY2UoKQotICAgICAgICBuZXdzb3VyY2UubGluZXNb
Ol0gPSBkZWluZGVudChzZWxmLmxpbmVzLCBvZmZzZXQpCi0gICAgICAgIHJldHVybiBuZXdzb3Vy
Y2UKLQotICAgIGRlZiBpc3BhcnNlYWJsZShzZWxmLCBkZWluZGVudD1UcnVlKToKLSAgICAgICAg
IiIiIHJldHVybiBUcnVlIGlmIHNvdXJjZSBpcyBwYXJzZWFibGUsIGhldXJpc3RpY2FsbHkKLSAg
ICAgICAgICAgIGRlaW5kZW50aW5nIGl0IGJ5IGRlZmF1bHQuCi0gICAgICAgICIiIgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBpbXBvcnQgcGFyc2VyCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRF
cnJvcjoKLSAgICAgICAgICAgIGRlZiBzeW50YXhfY2hlY2tlcih4KToKLSAgICAgICAgICAgICAg
ICByZXR1cm4gY29tcGlsZSh4LCAnYXNkJywgJ2V4ZWMnKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc3ludGF4X2NoZWNrZXIgPSBwYXJzZXIuc3VpdGUKLQotICAgICAgICBpZiBkZWluZGVu
dDoKLSAgICAgICAgICAgIHNvdXJjZSA9IHN0cihzZWxmLmRlaW5kZW50KCkpCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBzb3VyY2UgPSBzdHIoc2VsZikKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgIyBjb21waWxlKHNvdXJjZSsnXG4nLCAieCIsICJleGVjIikKLSAgICAgICAgICAgIHN5
bnRheF9jaGVja2VyKHNvdXJjZSArICdcbicpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVy
cnVwdDoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAg
ICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBU
cnVlCi0KLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICJcbiIuam9pbihz
ZWxmLmxpbmVzKQotCi0gICAgZGVmIGNvbXBpbGUoc2VsZiwgZmlsZW5hbWU9Tm9uZSwgbW9kZT0n
ZXhlYycsCi0gICAgICAgICAgICAgICAgZmxhZz1nZW5lcmF0b3JzLmNvbXBpbGVyX2ZsYWcsCi0g
ICAgICAgICAgICAgICAgZG9udF9pbmhlcml0PTAsIF9nZW5mcmFtZT1Ob25lKToKLSAgICAgICAg
IiIiIHJldHVybiBjb21waWxlZCBjb2RlIG9iamVjdC4gaWYgZmlsZW5hbWUgaXMgTm9uZQotICAg
ICAgICAgICAgaW52ZW50IGFuIGFydGlmaWNpYWwgZmlsZW5hbWUgd2hpY2ggZGlzcGxheXMKLSAg
ICAgICAgICAgIHRoZSBzb3VyY2UvbGluZSBwb3NpdGlvbiBvZiB0aGUgY2FsbGVyIGZyYW1lLgot
ICAgICAgICAiIiIKLSAgICAgICAgaWYgbm90IGZpbGVuYW1lIG9yIHB5LnBhdGgubG9jYWwoZmls
ZW5hbWUpLmNoZWNrKGZpbGU9MCk6Ci0gICAgICAgICAgICBpZiBfZ2VuZnJhbWUgaXMgTm9uZToK
LSAgICAgICAgICAgICAgICBfZ2VuZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpICAjIHRoZSBjYWxs
ZXIKLSAgICAgICAgICAgIGZuLCBsaW5lbm8gPSBfZ2VuZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1l
LCBfZ2VuZnJhbWUuZl9saW5lbm8KLSAgICAgICAgICAgIGJhc2UgPSAiPCVkLWNvZGVnZW4gIiAl
IHNlbGYuX2NvbXBpbGVjb3VudGVyCi0gICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fY29tcGls
ZWNvdW50ZXIgKz0gMQotICAgICAgICAgICAgaWYgbm90IGZpbGVuYW1lOgotICAgICAgICAgICAg
ICAgIGZpbGVuYW1lID0gYmFzZSArICclczolZD4nICUgKGZuLCBsaW5lbm8pCi0gICAgICAgICAg
ICBlbHNlOgotICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gYmFzZSArICclciAlczolZD4nICUg
KGZpbGVuYW1lLCBmbiwgbGluZW5vKQotICAgICAgICBzb3VyY2UgPSAiXG4iLmpvaW4oc2VsZi5s
aW5lcykgKyAnXG4nCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGNvID0gY3B5X2NvbXBpbGUo
c291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZykKLSAgICAgICAgZXhjZXB0IFN5bnRheEVycm9y
OgotICAgICAgICAgICAgZXggPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgIyByZS1y
ZXByZXNlbnQgc3ludGF4IGVycm9ycyBmcm9tIHBhcnNpbmcgcHl0aG9uIHN0cmluZ3MKLSAgICAg
ICAgICAgIG1zZ2xpbmVzID0gc2VsZi5saW5lc1s6ZXgubGluZW5vXQotICAgICAgICAgICAgaWYg
ZXgub2Zmc2V0OgotICAgICAgICAgICAgICAgIG1zZ2xpbmVzLmFwcGVuZCgiICIgKiBleC5vZmZz
ZXQgKyAnXicpCi0gICAgICAgICAgICBtc2dsaW5lcy5hcHBlbmQoIihjb2RlIHdhcyBjb21waWxl
ZCBwcm9iYWJseSBmcm9tIGhlcmU6ICVzKSIgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIG5ld2V4
ID0gU3ludGF4RXJyb3IoJ1xuJy5qb2luKG1zZ2xpbmVzKSkKLSAgICAgICAgICAgIG5ld2V4Lm9m
ZnNldCA9IGV4Lm9mZnNldAotICAgICAgICAgICAgbmV3ZXgubGluZW5vID0gZXgubGluZW5vCi0g
ICAgICAgICAgICBuZXdleC50ZXh0ID0gZXgudGV4dAotICAgICAgICAgICAgcmFpc2UgbmV3ZXgK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGlmIGZsYWcgJiBfQVNUX0ZMQUc6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGNvCi0gICAgICAgICAgICBsaW5lcyA9IFsoeCArICJcbiIpIGZvciB4
IGluIHNlbGYubGluZXNdCi0gICAgICAgICAgICBweS5zdGQubGluZWNhY2hlLmNhY2hlW2ZpbGVu
YW1lXSA9ICgxLCBOb25lLCBsaW5lcywgZmlsZW5hbWUpCi0gICAgICAgICAgICByZXR1cm4gY28K
LQotIwotIyBwdWJsaWMgQVBJIHNob3J0Y3V0IGZ1bmN0aW9ucwotIwotCi0KLWRlZiBjb21waWxl
Xyhzb3VyY2UsIGZpbGVuYW1lPU5vbmUsIG1vZGU9J2V4ZWMnLCBmbGFncz1nZW5lcmF0b3JzLmNv
bXBpbGVyX2ZsYWcsIGRvbnRfaW5oZXJpdD0wKToKLSAgICAiIiIgY29tcGlsZSB0aGUgZ2l2ZW4g
c291cmNlIHRvIGEgcmF3IGNvZGUgb2JqZWN0LAotICAgICAgICBhbmQgbWFpbnRhaW4gYW4gaW50
ZXJuYWwgY2FjaGUgd2hpY2ggYWxsb3dzIGxhdGVyCi0gICAgICAgIHJldHJpZXZhbCBvZiB0aGUg
c291cmNlIGNvZGUgZm9yIHRoZSBjb2RlIG9iamVjdAotICAgICAgICBhbmQgYW55IHJlY3Vyc2l2
ZWx5IGNyZWF0ZWQgY29kZSBvYmplY3RzLgotICAgICIiIgotICAgIGlmIF9hc3QgaXMgbm90IE5v
bmUgYW5kIGlzaW5zdGFuY2Uoc291cmNlLCBfYXN0LkFTVCk6Ci0gICAgICAgICMgWFhYIHNob3Vs
ZCBTb3VyY2Ugc3VwcG9ydCBoYXZpbmcgQVNUPwotICAgICAgICByZXR1cm4gY3B5X2NvbXBpbGUo
c291cmNlLCBmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIGRvbnRfaW5oZXJpdCkKLSAgICBfZ2VuZnJh
bWUgPSBzeXMuX2dldGZyYW1lKDEpICAjIHRoZSBjYWxsZXIKLSAgICBzID0gU291cmNlKHNvdXJj
ZSkKLSAgICBjbyA9IHMuY29tcGlsZShmaWxlbmFtZSwgbW9kZSwgZmxhZ3MsIF9nZW5mcmFtZT1f
Z2VuZnJhbWUpCi0gICAgcmV0dXJuIGNvCi0KLQotZGVmIGdldGZzbGluZW5vKG9iaik6Ci0gICAg
IiIiIFJldHVybiBzb3VyY2UgbG9jYXRpb24gKHBhdGgsIGxpbmVubykgZm9yIHRoZSBnaXZlbiBv
YmplY3QuCi0gICAgSWYgdGhlIHNvdXJjZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCByZXR1cm4gKCIi
LCAtMSkKLSAgICAiIiIKLSAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAgIHRyeToKLSAgICAg
ICAgY29kZSA9IF9weXRlc3QuX2NvZGUuQ29kZShvYmopCi0gICAgZXhjZXB0IFR5cGVFcnJvcjoK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm4gPSAocHkuc3RkLmluc3BlY3QuZ2V0c291cmNl
ZmlsZShvYmopIG9yCi0gICAgICAgICAgICAgICAgICBweS5zdGQuaW5zcGVjdC5nZXRmaWxlKG9i
aikpCi0gICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gIiIsIC0x
Ci0KLSAgICAgICAgZnNwYXRoID0gZm4gYW5kIHB5LnBhdGgubG9jYWwoZm4pIG9yIE5vbmUKLSAg
ICAgICAgbGluZW5vID0gLTEKLSAgICAgICAgaWYgZnNwYXRoOgotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIF8sIGxpbmVubyA9IGZpbmRzb3VyY2Uob2JqKQotICAgICAgICAgICAg
ZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAg
IGZzcGF0aCA9IGNvZGUucGF0aAotICAgICAgICBsaW5lbm8gPSBjb2RlLmZpcnN0bGluZW5vCi0g
ICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZW5vLCBpbnQpCi0gICAgcmV0dXJuIGZzcGF0aCwgbGlu
ZW5vCi0KLSMKLSMgaGVscGVyIGZ1bmN0aW9ucwotIwotCi0KLWRlZiBmaW5kc291cmNlKG9iaik6
Ci0gICAgdHJ5OgotICAgICAgICBzb3VyY2VsaW5lcywgbGluZW5vID0gcHkuc3RkLmluc3BlY3Qu
ZmluZHNvdXJjZShvYmopCi0gICAgZXhjZXB0IHB5LmJ1aWx0aW4uX3N5c2V4OgotICAgICAgICBy
YWlzZQotICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICByZXR1cm4gTm9uZSwgLTEKLSAgICBz
b3VyY2UgPSBTb3VyY2UoKQotICAgIHNvdXJjZS5saW5lcyA9IFtsaW5lLnJzdHJpcCgpIGZvciBs
aW5lIGluIHNvdXJjZWxpbmVzXQotICAgIHJldHVybiBzb3VyY2UsIGxpbmVubwotCi0KLWRlZiBn
ZXRzb3VyY2Uob2JqLCAqKmt3YXJncyk6Ci0gICAgaW1wb3J0IF9weXRlc3QuX2NvZGUKLSAgICBv
YmogPSBfcHl0ZXN0Ll9jb2RlLmdldHJhd2NvZGUob2JqKQotICAgIHRyeToKLSAgICAgICAgc3Ry
c3JjID0gaW5zcGVjdC5nZXRzb3VyY2Uob2JqKQotICAgIGV4Y2VwdCBJbmRlbnRhdGlvbkVycm9y
OgotICAgICAgICBzdHJzcmMgPSAiXCJCdWdneSBweXRob24gdmVyc2lvbiBjb25zaWRlciB1cGdy
YWRpbmcsIGNhbm5vdCBnZXQgc291cmNlXCIiCi0gICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc3Ryc3Jj
LCBzdHIpCi0gICAgcmV0dXJuIFNvdXJjZShzdHJzcmMsICoqa3dhcmdzKQotCi0KLWRlZiBkZWlu
ZGVudChsaW5lcywgb2Zmc2V0PU5vbmUpOgotICAgIGlmIG9mZnNldCBpcyBOb25lOgotICAgICAg
ICBmb3IgbGluZSBpbiBsaW5lczoKLSAgICAgICAgICAgIGxpbmUgPSBsaW5lLmV4cGFuZHRhYnMo
KQotICAgICAgICAgICAgcyA9IGxpbmUubHN0cmlwKCkKLSAgICAgICAgICAgIGlmIHM6Ci0gICAg
ICAgICAgICAgICAgb2Zmc2V0ID0gbGVuKGxpbmUpIC0gbGVuKHMpCi0gICAgICAgICAgICAgICAg
YnJlYWsKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG9mZnNldCA9IDAKLSAgICBpZiBvZmZz
ZXQgPT0gMDoKLSAgICAgICAgcmV0dXJuIGxpc3QobGluZXMpCi0gICAgbmV3bGluZXMgPSBbXQot
Ci0gICAgZGVmIHJlYWRsaW5lX2dlbmVyYXRvcihsaW5lcyk6Ci0gICAgICAgIGZvciBsaW5lIGlu
IGxpbmVzOgotICAgICAgICAgICAgeWllbGQgbGluZSArICdcbicKLSAgICAgICAgd2hpbGUgVHJ1
ZToKLSAgICAgICAgICAgIHlpZWxkICcnCi0KLSAgICBpdCA9IHJlYWRsaW5lX2dlbmVyYXRvcihs
aW5lcykKLQotICAgIHRyeToKLSAgICAgICAgZm9yIF8sIF8sIChzbGluZSwgXyksIChlbGluZSwg
XyksIF8gaW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKGxhbWJkYTogbmV4dChpdCkpOgotICAg
ICAgICAgICAgaWYgc2xpbmUgPiBsZW4obGluZXMpOgotICAgICAgICAgICAgICAgIGJyZWFrICAj
IEVuZCBvZiBpbnB1dCByZWFjaGVkCi0gICAgICAgICAgICBpZiBzbGluZSA+IGxlbihuZXdsaW5l
cyk6Ci0gICAgICAgICAgICAgICAgbGluZSA9IGxpbmVzW3NsaW5lIC0gMV0uZXhwYW5kdGFicygp
Ci0gICAgICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKSBhbmQgbGluZVs6b2Zmc2V0XS5pc3Nw
YWNlKCk6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBsaW5lW29mZnNldDpdICAjIERlaW5k
ZW50Ci0gICAgICAgICAgICAgICAgbmV3bGluZXMuYXBwZW5kKGxpbmUpCi0KLSAgICAgICAgICAg
IGZvciBpIGluIHJhbmdlKHNsaW5lLCBlbGluZSk6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCBk
ZWluZGVudCBjb250aW51aW5nIGxpbmVzIG9mCi0gICAgICAgICAgICAgICAgIyBtdWx0aWxpbmUg
dG9rZW5zIChpLmUuIG11bHRpbGluZSBzdHJpbmdzKQotICAgICAgICAgICAgICAgIG5ld2xpbmVz
LmFwcGVuZChsaW5lc1tpXSkKLSAgICBleGNlcHQgKEluZGVudGF0aW9uRXJyb3IsIHRva2VuaXpl
LlRva2VuRXJyb3IpOgotICAgICAgICBwYXNzCi0gICAgIyBBZGQgYW55IGxpbmVzIHdlIGRpZG4n
dCBzZWUuIEUuZy4gaWYgYW4gZXhjZXB0aW9uIHdhcyByYWlzZWQuCi0gICAgbmV3bGluZXMuZXh0
ZW5kKGxpbmVzW2xlbihuZXdsaW5lcyk6XSkKLSAgICByZXR1cm4gbmV3bGluZXMKLQotCi1kZWYg
Z2V0X3N0YXRlbWVudF9zdGFydGVuZDIobGluZW5vLCBub2RlKToKLSAgICBpbXBvcnQgYXN0Ci0g
ICAgIyBmbGF0dGVuIGFsbCBzdGF0ZW1lbnRzIGFuZCBleGNlcHQgaGFuZGxlcnMgaW50byBvbmUg
bGluZW5vLWxpc3QKLSAgICAjIEFTVCdzIGxpbmUgbnVtYmVycyBzdGFydCBpbmRleGluZyBhdCAx
Ci0gICAgdmFsdWVzID0gW10KLSAgICBmb3IgeCBpbiBhc3Qud2Fsayhub2RlKToKLSAgICAgICAg
aWYgaXNpbnN0YW5jZSh4LCBfYXN0LnN0bXQpIG9yIGlzaW5zdGFuY2UoeCwgX2FzdC5FeGNlcHRI
YW5kbGVyKToKLSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoeC5saW5lbm8gLSAxKQotICAgICAg
ICAgICAgZm9yIG5hbWUgaW4gImZpbmFsYm9keSIsICJvcmVsc2UiOgotICAgICAgICAgICAgICAg
IHZhbCA9IGdldGF0dHIoeCwgbmFtZSwgTm9uZSkKLSAgICAgICAgICAgICAgICBpZiB2YWw6Ci0g
ICAgICAgICAgICAgICAgICAgICMgdHJlYXQgdGhlIGZpbmFsbHkvb3JlbHNlIHBhcnQgYXMgaXRz
IG93biBzdGF0ZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmFwcGVuZCh2YWxbMF0u
bGluZW5vIC0gMSAtIDEpCi0gICAgdmFsdWVzLnNvcnQoKQotICAgIGluc2VydF9pbmRleCA9IGJp
c2VjdF9yaWdodCh2YWx1ZXMsIGxpbmVubykKLSAgICBzdGFydCA9IHZhbHVlc1tpbnNlcnRfaW5k
ZXggLSAxXQotICAgIGlmIGluc2VydF9pbmRleCA+PSBsZW4odmFsdWVzKToKLSAgICAgICAgZW5k
ID0gTm9uZQotICAgIGVsc2U6Ci0gICAgICAgIGVuZCA9IHZhbHVlc1tpbnNlcnRfaW5kZXhdCi0g
ICAgcmV0dXJuIHN0YXJ0LCBlbmQKLQotCi1kZWYgZ2V0c3RhdGVtZW50cmFuZ2VfYXN0KGxpbmVu
bywgc291cmNlLCBhc3NlcnRpb249RmFsc2UsIGFzdG5vZGU9Tm9uZSk6Ci0gICAgaWYgYXN0bm9k
ZSBpcyBOb25lOgotICAgICAgICBjb250ZW50ID0gc3RyKHNvdXJjZSkKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgYXN0bm9kZSA9IGNvbXBpbGUoY29udGVudCwgInNvdXJjZSIsICJleGVjIiwg
MTAyNCkgICMgMTAyNCBmb3IgQVNUCi0gICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAg
ICAgICAgc3RhcnQsIGVuZCA9IGdldHN0YXRlbWVudHJhbmdlX29sZChsaW5lbm8sIHNvdXJjZSwg
YXNzZXJ0aW9uKQotICAgICAgICAgICAgcmV0dXJuIE5vbmUsIHN0YXJ0LCBlbmQKLSAgICBzdGFy
dCwgZW5kID0gZ2V0X3N0YXRlbWVudF9zdGFydGVuZDIobGluZW5vLCBhc3Rub2RlKQotICAgICMg
d2UgbmVlZCB0byBjb3JyZWN0IHRoZSBlbmQ6Ci0gICAgIyAtIGFzdC1wYXJzaW5nIHN0cmlwcyBj
b21tZW50cwotICAgICMgLSB0aGVyZSBtaWdodCBiZSBlbXB0eSBsaW5lcwotICAgICMgLSB3ZSBt
aWdodCBoYXZlIGxlc3NlciBpbmRlbnRlZCBjb2RlIGJsb2NrcyBhdCB0aGUgZW5kCi0gICAgaWYg
ZW5kIGlzIE5vbmU6Ci0gICAgICAgIGVuZCA9IGxlbihzb3VyY2UubGluZXMpCi0KLSAgICBpZiBl
bmQgPiBzdGFydCArIDE6Ci0gICAgICAgICMgbWFrZSBzdXJlIHdlIGRvbid0IHNwYW4gZGlmZmVy
ZW50bHkgaW5kZW50ZWQgY29kZSBibG9ja3MKLSAgICAgICAgIyBieSB1c2luZyB0aGUgQmxvY2tG
aW5kZXIgaGVscGVyIHVzZWQgd2hpY2ggaW5zcGVjdC5nZXRzb3VyY2UoKSB1c2VzIGl0c2VsZgot
ICAgICAgICBibG9ja19maW5kZXIgPSBpbnNwZWN0LkJsb2NrRmluZGVyKCkKLSAgICAgICAgIyBp
ZiB3ZSBzdGFydCB3aXRoIGFuIGluZGVudGVkIGxpbmUsIHB1dCBibG9ja2ZpbmRlciB0byAic3Rh
cnRlZCIgbW9kZQotICAgICAgICBibG9ja19maW5kZXIuc3RhcnRlZCA9IHNvdXJjZS5saW5lc1tz
dGFydF1bMF0uaXNzcGFjZSgpCi0gICAgICAgIGl0ID0gKCh4ICsgIlxuIikgZm9yIHggaW4gc291
cmNlLmxpbmVzW3N0YXJ0OmVuZF0pCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciB0b2sg
aW4gdG9rZW5pemUuZ2VuZXJhdGVfdG9rZW5zKGxhbWJkYTogbmV4dChpdCkpOgotICAgICAgICAg
ICAgICAgIGJsb2NrX2ZpbmRlci50b2tlbmVhdGVyKCp0b2spCi0gICAgICAgIGV4Y2VwdCAoaW5z
cGVjdC5FbmRPZkJsb2NrLCBJbmRlbnRhdGlvbkVycm9yKToKLSAgICAgICAgICAgIGVuZCA9IGJs
b2NrX2ZpbmRlci5sYXN0ICsgc3RhcnQKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAg
ICAgICAgIHBhc3MKLQotICAgICMgdGhlIGVuZCBtaWdodCBzdGlsbCBwb2ludCB0byBhIGNvbW1l
bnQgb3IgZW1wdHkgbGluZSwgY29ycmVjdCBpdAotICAgIHdoaWxlIGVuZDoKLSAgICAgICAgbGlu
ZSA9IHNvdXJjZS5saW5lc1tlbmQgLSAxXS5sc3RyaXAoKQotICAgICAgICBpZiBsaW5lLnN0YXJ0
c3dpdGgoIiMiKSBvciBub3QgbGluZToKLSAgICAgICAgICAgIGVuZCAtPSAxCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICBicmVhawotICAgIHJldHVybiBhc3Rub2RlLCBzdGFydCwgZW5kCi0K
LQotZGVmIGdldHN0YXRlbWVudHJhbmdlX29sZChsaW5lbm8sIHNvdXJjZSwgYXNzZXJ0aW9uPUZh
bHNlKToKLSAgICAiIiIgcmV0dXJuIChzdGFydCwgZW5kKSB0dXBsZSB3aGljaCBzcGFucyB0aGUg
bWluaW1hbAotICAgICAgICBzdGF0ZW1lbnQgcmVnaW9uIHdoaWNoIGNvbnRhaW5pbmcgdGhlIGdp
dmVuIGxpbmVuby4KLSAgICAgICAgcmFpc2UgYW4gSW5kZXhFcnJvciBpZiBubyBzdWNoIHN0YXRl
bWVudHJhbmdlIGNhbiBiZSBmb3VuZC4KLSAgICAiIiIKLSAgICAjIFhYWCB0aGlzIGxvZ2ljIGlz
IG9ubHkgdXNlZCBvbiBweXRob24yLjQgYW5kIGJlbG93Ci0gICAgIyAxLiBmaW5kIHRoZSBzdGFy
dCBvZiB0aGUgc3RhdGVtZW50Ci0gICAgZnJvbSBjb2Rlb3AgaW1wb3J0IGNvbXBpbGVfY29tbWFu
ZAotICAgIGZvciBzdGFydCBpbiByYW5nZShsaW5lbm8sIC0xLCAtMSk6Ci0gICAgICAgIGlmIGFz
c2VydGlvbjoKLSAgICAgICAgICAgIGxpbmUgPSBzb3VyY2UubGluZXNbc3RhcnRdCi0gICAgICAg
ICAgICAjIHRoZSBmb2xsb3dpbmcgbGluZXMgYXJlIG5vdCBmdWxseSB0ZXN0ZWQsIGNoYW5nZSB3
aXRoIGNhcmUKLSAgICAgICAgICAgIGlmICdzdXBlcicgaW4gbGluZSBhbmQgJ3NlbGYnIGluIGxp
bmUgYW5kICdfX2luaXRfXycgaW4gbGluZToKLSAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVy
cm9yKCJsaWtlbHkgYSBzdWJjbGFzcyIpCi0gICAgICAgICAgICBpZiAiYXNzZXJ0IiBub3QgaW4g
bGluZSBhbmQgInJhaXNlIiBub3QgaW4gbGluZToKLSAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICB0cnlsaW5lcyA9IHNvdXJjZS5saW5lc1tzdGFydDpsaW5lbm8gKyAxXQotICAgICAg
ICAjIHF1aWNrIGhhY2sgdG8gcHJlcGFyZSBwYXJzaW5nIGFuIGluZGVudGVkIGxpbmUgd2l0aAot
ICAgICAgICAjIGNvbXBpbGVfY29tbWFuZCgpICh3aGljaCBlcnJvcnMgb24gInJldHVybiIgb3V0
c2lkZSBkZWZzKQotICAgICAgICB0cnlsaW5lcy5pbnNlcnQoMCwgJ2RlZiB4eHgoKTonKQotICAg
ICAgICB0cnlzb3VyY2UgPSAnXG4gJy5qb2luKHRyeWxpbmVzKQotICAgICAgICAjICAgICAgICAg
ICAgICBeIHNwYWNlIGhlcmUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY29tcGlsZV9jb21t
YW5kKHRyeXNvdXJjZSkKLSAgICAgICAgZXhjZXB0IChTeW50YXhFcnJvciwgT3ZlcmZsb3dFcnJv
ciwgVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICBjb250aW51ZQotCi0gICAgICAgICMgMi4gZmlu
ZCB0aGUgZW5kIG9mIHRoZSBzdGF0ZW1lbnQKLSAgICAgICAgZm9yIGVuZCBpbiByYW5nZShsaW5l
bm8gKyAxLCBsZW4oc291cmNlKSArIDEpOgotICAgICAgICAgICAgdHJ5c291cmNlID0gc291cmNl
W3N0YXJ0OmVuZF0KLSAgICAgICAgICAgIGlmIHRyeXNvdXJjZS5pc3BhcnNlYWJsZSgpOgotICAg
ICAgICAgICAgICAgIHJldHVybiBzdGFydCwgZW5kCi0gICAgcmFpc2UgU3ludGF4RXJyb3IoIm5v
IHZhbGlkIHNvdXJjZSByYW5nZSBhcm91bmQgbGluZSAlZCAiICUgKGxpbmVubywpKQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fY29kZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvX2NvZGUvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDgyMjMzNGYzZjhlZGE5NjZhMmQxOGRlZGE3MmU5ZDkwMmY4N2Q3MWIuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9fY29kZS93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvX2NvZGUvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L19jb2RlL19weTJ0cmFjZWJhY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19j
b2RlL2NvZGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L19jb2RlL3NvdXJjZS5weQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vX19pbml0X18ucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9fX2luaXRfXy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTQ4ZTk4Yzg1YWEyYmJkZThkZjVjMDczYmE5YjY0NWZjYzMyNTdiNi4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L2Fzc2VydGlvbi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0NiArMCwwIEBA
Ci0iIiIKLXN1cHBvcnQgZm9yIHByZXNlbnRpbmcgZGV0YWlsZWQgaW5mb3JtYXRpb24gaW4gZmFp
bGluZyBhc3NlcnRpb25zLgotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2lt
cG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgc3lzCi1pbXBvcnQgc2l4Ci0K
LWZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHV0aWwKLWZyb20gX3B5dGVzdC5hc3NlcnRp
b24gaW1wb3J0IHJld3JpdGUKLWZyb20gX3B5dGVzdC5hc3NlcnRpb24gaW1wb3J0IHRydW5jYXRl
Ci0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5n
ZXRncm91cCgiZGVidWdjb25maWciKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1hc3NlcnQnLAot
ICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwKLSAgICAgICAgICAgICAgICAgICAg
ZGVzdD0iYXNzZXJ0bW9kZSIsCi0gICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCJyZXdyaXRl
IiwgInBsYWluIiwpLAotICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSJyZXdyaXRlIiwKLSAg
ICAgICAgICAgICAgICAgICAgbWV0YXZhcj0iTU9ERSIsCi0gICAgICAgICAgICAgICAgICAgIGhl
bHA9IiIiQ29udHJvbCBhc3NlcnRpb24gZGVidWdnaW5nIHRvb2xzLiAgJ3BsYWluJwotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHBlcmZvcm1zIG5vIGFzc2VydGlvbiBkZWJ1Z2dpbmcuICAn
cmV3cml0ZScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGhlIGRlZmF1bHQpIHJld3Jp
dGVzIGFzc2VydCBzdGF0ZW1lbnRzIGluCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dCBtb2R1bGVzIG9uIGltcG9ydCB0byBwcm92aWRlIGFzc2VydAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGV4cHJlc3Npb24gaW5mb3JtYXRpb24uIiIiKQotCi0KLWRlZiByZWdpc3Rlcl9h
c3NlcnRfcmV3cml0ZSgqbmFtZXMpOgotICAgICIiIlJlZ2lzdGVyIG9uZSBvciBtb3JlIG1vZHVs
ZSBuYW1lcyB0byBiZSByZXdyaXR0ZW4gb24gaW1wb3J0LgotCi0gICAgVGhpcyBmdW5jdGlvbiB3
aWxsIG1ha2Ugc3VyZSB0aGF0IHRoaXMgbW9kdWxlIG9yIGFsbCBtb2R1bGVzIGluc2lkZQotICAg
IHRoZSBwYWNrYWdlIHdpbGwgZ2V0IHRoZWlyIGFzc2VydCBzdGF0ZW1lbnRzIHJld3JpdHRlbi4K
LSAgICBUaHVzIHlvdSBzaG91bGQgbWFrZSBzdXJlIHRvIGNhbGwgdGhpcyBiZWZvcmUgdGhlIG1v
ZHVsZSBpcwotICAgIGFjdHVhbGx5IGltcG9ydGVkLCB1c3VhbGx5IGluIHlvdXIgX19pbml0X18u
cHkgaWYgeW91IGFyZSBhIHBsdWdpbgotICAgIHVzaW5nIGEgcGFja2FnZS4KLQotICAgIDpyYWlz
ZSBUeXBlRXJyb3I6IGlmIHRoZSBnaXZlbiBtb2R1bGUgbmFtZXMgYXJlIG5vdCBzdHJpbmdzLgot
ICAgICIiIgotICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5j
ZShuYW1lLCBzdHIpOgotICAgICAgICAgICAgbXNnID0gJ2V4cGVjdGVkIG1vZHVsZSBuYW1lcyBh
cyAqYXJncywgZ290IHswfSBpbnN0ZWFkJwotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1z
Zy5mb3JtYXQocmVwcihuYW1lcykpKQotICAgIGZvciBob29rIGluIHN5cy5tZXRhX3BhdGg6Ci0g
ICAgICAgIGlmIGlzaW5zdGFuY2UoaG9vaywgcmV3cml0ZS5Bc3NlcnRpb25SZXdyaXRpbmdIb29r
KToKLSAgICAgICAgICAgIGltcG9ydGhvb2sgPSBob29rCi0gICAgICAgICAgICBicmVhawotICAg
IGVsc2U6Ci0gICAgICAgIGltcG9ydGhvb2sgPSBEdW1teVJld3JpdGVIb29rKCkKLSAgICBpbXBv
cnRob29rLm1hcmtfcmV3cml0ZSgqbmFtZXMpCi0KLQotY2xhc3MgRHVtbXlSZXdyaXRlSG9vayhv
YmplY3QpOgotICAgICIiIkEgbm8tb3AgaW1wb3J0IGhvb2sgZm9yIHdoZW4gcmV3cml0aW5nIGlz
IGRpc2FibGVkLiIiIgotCi0gICAgZGVmIG1hcmtfcmV3cml0ZShzZWxmLCAqbmFtZXMpOgotICAg
ICAgICBwYXNzCi0KLQotY2xhc3MgQXNzZXJ0aW9uU3RhdGU6Ci0gICAgIiIiU3RhdGUgZm9yIHRo
ZSBhc3NlcnRpb24gcGx1Z2luLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNvbmZpZywg
bW9kZSk6Ci0gICAgICAgIHNlbGYubW9kZSA9IG1vZGUKLSAgICAgICAgc2VsZi50cmFjZSA9IGNv
bmZpZy50cmFjZS5yb290LmdldCgiYXNzZXJ0aW9uIikKLSAgICAgICAgc2VsZi5ob29rID0gTm9u
ZQotCi0KLWRlZiBpbnN0YWxsX2ltcG9ydGhvb2soY29uZmlnKToKLSAgICAiIiJUcnkgdG8gaW5z
dGFsbCB0aGUgcmV3cml0ZSBob29rLCByYWlzZSBTeXN0ZW1FcnJvciBpZiBpdCBmYWlscy4iIiIK
LSAgICAjIEp5dGhvbiBoYXMgYW4gQVNUIGJ1ZyB0aGF0IG1ha2UgdGhlIGFzc2VydGlvbiByZXdy
aXRpbmcgaG9vayBtYWxmdW5jdGlvbi4KLSAgICBpZiAoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgo
J2phdmEnKSk6Ci0gICAgICAgIHJhaXNlIFN5c3RlbUVycm9yKCdyZXdyaXRlIG5vdCBzdXBwb3J0
ZWQnKQotCi0gICAgY29uZmlnLl9hc3NlcnRzdGF0ZSA9IEFzc2VydGlvblN0YXRlKGNvbmZpZywg
J3Jld3JpdGUnKQotICAgIGNvbmZpZy5fYXNzZXJ0c3RhdGUuaG9vayA9IGhvb2sgPSByZXdyaXRl
LkFzc2VydGlvblJld3JpdGluZ0hvb2soY29uZmlnKQotICAgIHN5cy5tZXRhX3BhdGguaW5zZXJ0
KDAsIGhvb2spCi0gICAgY29uZmlnLl9hc3NlcnRzdGF0ZS50cmFjZSgnaW5zdGFsbGVkIHJld3Jp
dGUgaW1wb3J0IGhvb2snKQotCi0gICAgZGVmIHVuZG8oKToKLSAgICAgICAgaG9vayA9IGNvbmZp
Zy5fYXNzZXJ0c3RhdGUuaG9vawotICAgICAgICBpZiBob29rIGlzIG5vdCBOb25lIGFuZCBob29r
IGluIHN5cy5tZXRhX3BhdGg6Ci0gICAgICAgICAgICBzeXMubWV0YV9wYXRoLnJlbW92ZShob29r
KQotCi0gICAgY29uZmlnLmFkZF9jbGVhbnVwKHVuZG8pCi0gICAgcmV0dXJuIGhvb2sKLQotCi1k
ZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lvbik6Ci0gICAgIyB0aGlzIGhvb2sgaXMgb25seSBj
YWxsZWQgd2hlbiB0ZXN0IG1vZHVsZXMgYXJlIGNvbGxlY3RlZAotICAgICMgc28gZm9yIGV4YW1w
bGUgbm90IGluIHRoZSBtYXN0ZXIgcHJvY2VzcyBvZiBweXRlc3QteGRpc3QKLSAgICAjICh3aGlj
aCBkb2VzIG5vdCBjb2xsZWN0IHRlc3QgbW9kdWxlcykKLSAgICBhc3NlcnRzdGF0ZSA9IGdldGF0
dHIoc2Vzc2lvbi5jb25maWcsICdfYXNzZXJ0c3RhdGUnLCBOb25lKQotICAgIGlmIGFzc2VydHN0
YXRlOgotICAgICAgICBpZiBhc3NlcnRzdGF0ZS5ob29rIGlzIG5vdCBOb25lOgotICAgICAgICAg
ICAgYXNzZXJ0c3RhdGUuaG9vay5zZXRfc2Vzc2lvbihzZXNzaW9uKQotCi0KLWRlZiBweXRlc3Rf
cnVudGVzdF9zZXR1cChpdGVtKToKLSAgICAiIiJTZXR1cCB0aGUgcHl0ZXN0X2Fzc2VydHJlcHJf
Y29tcGFyZSBob29rCi0KLSAgICBUaGUgbmV3aW50ZXJwcmV0IGFuZCByZXdyaXRlIG1vZHVsZXMg
d2lsbCB1c2UgdXRpbC5fcmVwcmNvbXBhcmUgaWYKLSAgICBpdCBleGlzdHMgdG8gdXNlIGN1c3Rv
bSByZXBvcnRpbmcgdmlhIHRoZQotICAgIHB5dGVzdF9hc3NlcnRyZXByX2NvbXBhcmUgaG9vay4g
IFRoaXMgc2V0cyB1cCB0aGlzIGN1c3RvbQotICAgIGNvbXBhcmlzb24gZm9yIHRoZSB0ZXN0Lgot
ICAgICIiIgotICAgIGRlZiBjYWxsYmlucmVwcihvcCwgbGVmdCwgcmlnaHQpOgotICAgICAgICAi
IiJDYWxsIHRoZSBweXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlIGhvb2sgYW5kIHByZXBhcmUgdGhl
IHJlc3VsdAotCi0gICAgICAgIFRoaXMgdXNlcyB0aGUgZmlyc3QgcmVzdWx0IGZyb20gdGhlIGhv
b2sgYW5kIHRoZW4gZW5zdXJlcyB0aGUKLSAgICAgICAgZm9sbG93aW5nOgotICAgICAgICAqIE92
ZXJseSB2ZXJib3NlIGV4cGxhbmF0aW9ucyBhcmUgdHJ1bmNhdGVkIHVubGVzcyBjb25maWd1cmVk
IG90aGVyd2lzZQotICAgICAgICAgIChlZy4gaWYgcnVubmluZyBpbiB2ZXJib3NlIG1vZGUpLgot
ICAgICAgICAqIEVtYmVkZGVkIG5ld2xpbmVzIGFyZSBlc2NhcGVkIHRvIGhlbHAgdXRpbC5mb3Jt
YXRfZXhwbGFuYXRpb24oKQotICAgICAgICAgIGxhdGVyLgotICAgICAgICAqIElmIHRoZSByZXdy
aXRlIG1vZGUgaXMgdXNlZCBlbWJlZGRlZCAlLWNoYXJhY3RlcnMgYXJlIHJlcGxhY2VkCi0gICAg
ICAgICAgdG8gcHJvdGVjdCBsYXRlciAlIGZvcm1hdHRpbmcuCi0KLSAgICAgICAgVGhlIHJlc3Vs
dCBjYW4gYmUgZm9ybWF0dGVkIGJ5IHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkgZm9yCi0gICAg
ICAgIHByZXR0eSBwcmludGluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIGhvb2tfcmVzdWx0ID0g
aXRlbS5paG9vay5weXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlKAotICAgICAgICAgICAgY29uZmln
PWl0ZW0uY29uZmlnLCBvcD1vcCwgbGVmdD1sZWZ0LCByaWdodD1yaWdodCkKLSAgICAgICAgZm9y
IG5ld19leHBsIGluIGhvb2tfcmVzdWx0OgotICAgICAgICAgICAgaWYgbmV3X2V4cGw6Ci0gICAg
ICAgICAgICAgICAgbmV3X2V4cGwgPSB0cnVuY2F0ZS50cnVuY2F0ZV9pZl9yZXF1aXJlZChuZXdf
ZXhwbCwgaXRlbSkKLSAgICAgICAgICAgICAgICBuZXdfZXhwbCA9IFtsaW5lLnJlcGxhY2UoIlxu
IiwgIlxcbiIpIGZvciBsaW5lIGluIG5ld19leHBsXQotICAgICAgICAgICAgICAgIHJlcyA9IHNp
eC50ZXh0X3R5cGUoIlxufiIpLmpvaW4obmV3X2V4cGwpCi0gICAgICAgICAgICAgICAgaWYgaXRl
bS5jb25maWcuZ2V0dmFsdWUoImFzc2VydG1vZGUiKSA9PSAicmV3cml0ZSI6Ci0gICAgICAgICAg
ICAgICAgICAgIHJlcyA9IHJlcy5yZXBsYWNlKCIlIiwgIiUlIikKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gcmVzCi0gICAgdXRpbC5fcmVwcmNvbXBhcmUgPSBjYWxsYmlucmVwcgotCi0KLWRlZiBw
eXRlc3RfcnVudGVzdF90ZWFyZG93bihpdGVtKToKLSAgICB1dGlsLl9yZXByY29tcGFyZSA9IE5v
bmUKLQotCi1kZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbik6Ci0gICAgYXNzZXJ0c3Rh
dGUgPSBnZXRhdHRyKHNlc3Npb24uY29uZmlnLCAnX2Fzc2VydHN0YXRlJywgTm9uZSkKLSAgICBp
ZiBhc3NlcnRzdGF0ZToKLSAgICAgICAgaWYgYXNzZXJ0c3RhdGUuaG9vayBpcyBub3QgTm9uZToK
LSAgICAgICAgICAgIGFzc2VydHN0YXRlLmhvb2suc2V0X3Nlc3Npb24oTm9uZSkKLQotCi0jIEV4
cG9zZSB0aGlzIHBsdWdpbidzIGltcGxlbWVudGF0aW9uIGZvciB0aGUgcHl0ZXN0X2Fzc2VydHJl
cHJfY29tcGFyZSBob29rCi1weXRlc3RfYXNzZXJ0cmVwcl9jb21wYXJlID0gdXRpbC5hc3NlcnRy
ZXByX2NvbXBhcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3Jl
d3JpdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi9yZXdyaXRlLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjQzNThmNDkwYmM5MWFmOWE1ZWM1MjY1MmI2ZThi
MmJlMGFjYzYxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3Jld3JpdGUucHkKKysrIC9kZXYvbnVsbApA
QCAtMSw5NDggKzAsMCBAQAotIiIiUmV3cml0ZSBhc3NlcnRpb24gQVNUIHRvIHByb2R1Y2Ugbmlj
ZSBlcnJvciBtZXNzYWdlcyIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBv
cnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1wb3J0IGFzdAotaW1wb3J0IF9hc3QKLWlt
cG9ydCBlcnJubwotaW1wb3J0IGl0ZXJ0b29scwotaW1wb3J0IGltcAotaW1wb3J0IG1hcnNoYWwK
LWltcG9ydCBvcwotaW1wb3J0IHJlCi1pbXBvcnQgc2l4Ci1pbXBvcnQgc3RydWN0Ci1pbXBvcnQg
c3lzCi1pbXBvcnQgdHlwZXMKLQotaW1wb3J0IHB5Ci1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uIGlt
cG9ydCB1dGlsCi0KLQotIyBweXRlc3QgY2FjaGVzIHJld3JpdHRlbiBweWNzIGluIF9fcHljYWNo
ZV9fLgotaWYgaGFzYXR0cihpbXAsICJnZXRfdGFnIik6Ci0gICAgUFlURVNUX1RBRyA9IGltcC5n
ZXRfdGFnKCkgKyAiLVBZVEVTVCIKLWVsc2U6Ci0gICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3Zl
cnNpb25faW5mbyIpOgotICAgICAgICBpbXBsID0gInB5cHkiCi0gICAgZWxpZiBzeXMucGxhdGZv
cm0gPT0gImphdmEiOgotICAgICAgICBpbXBsID0gImp5dGhvbiIKLSAgICBlbHNlOgotICAgICAg
ICBpbXBsID0gImNweXRob24iCi0gICAgdmVyID0gc3lzLnZlcnNpb25faW5mbwotICAgIFBZVEVT
VF9UQUcgPSAiJXMtJXMlcy1QWVRFU1QiICUgKGltcGwsIHZlclswXSwgdmVyWzFdKQotICAgIGRl
bCB2ZXIsIGltcGwKLQotUFlDX0VYVCA9ICIucHkiICsgKF9fZGVidWdfXyBhbmQgImMiIG9yICJv
IikKLVBZQ19UQUlMID0gIi4iICsgUFlURVNUX1RBRyArIFBZQ19FWFQKLQotQVNDSUlfSVNfREVG
QVVMVF9FTkNPRElORyA9IHN5cy52ZXJzaW9uX2luZm9bMF0gPCAzCi0KLWlmIHN5cy52ZXJzaW9u
X2luZm8gPj0gKDMsIDUpOgotICAgIGFzdF9DYWxsID0gYXN0LkNhbGwKLWVsc2U6Ci0gICAgZGVm
IGFzdF9DYWxsKGEsIGIsIGMpOgotICAgICAgICByZXR1cm4gYXN0LkNhbGwoYSwgYiwgYywgTm9u
ZSwgTm9uZSkKLQotCi1jbGFzcyBBc3NlcnRpb25SZXdyaXRpbmdIb29rKG9iamVjdCk6Ci0gICAg
IiIiUEVQMzAyIEltcG9ydCBob29rIHdoaWNoIHJld3JpdGVzIGFzc2VydHMuIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcK
LSAgICAgICAgc2VsZi5mbnBhdHMgPSBjb25maWcuZ2V0aW5pKCJweXRob25fZmlsZXMiKQotICAg
ICAgICBzZWxmLnNlc3Npb24gPSBOb25lCi0gICAgICAgIHNlbGYubW9kdWxlcyA9IHt9Ci0gICAg
ICAgIHNlbGYuX3Jld3JpdHRlbl9uYW1lcyA9IHNldCgpCi0gICAgICAgIHNlbGYuX3JlZ2lzdGVy
X3dpdGhfcGtnX3Jlc291cmNlcygpCi0gICAgICAgIHNlbGYuX211c3RfcmV3cml0ZSA9IHNldCgp
Ci0KLSAgICBkZWYgc2V0X3Nlc3Npb24oc2VsZiwgc2Vzc2lvbik6Ci0gICAgICAgIHNlbGYuc2Vz
c2lvbiA9IHNlc3Npb24KLQotICAgIGRlZiBmaW5kX21vZHVsZShzZWxmLCBuYW1lLCBwYXRoPU5v
bmUpOgotICAgICAgICBzdGF0ZSA9IHNlbGYuY29uZmlnLl9hc3NlcnRzdGF0ZQotICAgICAgICBz
dGF0ZS50cmFjZSgiZmluZF9tb2R1bGUgY2FsbGVkIGZvcjogJXMiICUgbmFtZSkKLSAgICAgICAg
bmFtZXMgPSBuYW1lLnJzcGxpdCgiLiIsIDEpCi0gICAgICAgIGxhc3RuYW1lID0gbmFtZXNbLTFd
Ci0gICAgICAgIHB0aCA9IE5vbmUKLSAgICAgICAgaWYgcGF0aCBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICMgU3RhcnRpbmcgd2l0aCBQeXRob24gMy4zLCBwYXRoIGlzIGEgX05hbWVzcGFjZVBh
dGgoKSwgd2hpY2gKLSAgICAgICAgICAgICMgY2F1c2VzIHByb2JsZW1zIGlmIG5vdCBjb252ZXJ0
ZWQgdG8gbGlzdC4KLSAgICAgICAgICAgIHBhdGggPSBsaXN0KHBhdGgpCi0gICAgICAgICAgICBp
ZiBsZW4ocGF0aCkgPT0gMToKLSAgICAgICAgICAgICAgICBwdGggPSBwYXRoWzBdCi0gICAgICAg
IGlmIHB0aCBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGZkLCBm
biwgZGVzYyA9IGltcC5maW5kX21vZHVsZShsYXN0bmFtZSwgcGF0aCkKLSAgICAgICAgICAgIGV4
Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAg
ICAgaWYgZmQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZmQuY2xvc2UoKQotICAgICAg
ICAgICAgdHAgPSBkZXNjWzJdCi0gICAgICAgICAgICBpZiB0cCA9PSBpbXAuUFlfQ09NUElMRUQ6
Ci0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihpbXAsICJzb3VyY2VfZnJvbV9jYWNoZSIpOgot
ICAgICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmbiA9IGlt
cC5zb3VyY2VfZnJvbV9jYWNoZShmbikKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IFZhbHVl
RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbiAzIGRvZXNuJ3QgbGlrZSBv
cnBoYW5lZCBidXQgc3RpbGwtaW1wb3J0YWJsZQotICAgICAgICAgICAgICAgICAgICAgICAgIyAu
cHljIGZpbGVzLgotICAgICAgICAgICAgICAgICAgICAgICAgZm4gPSBmbls6LTFdCi0gICAgICAg
ICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZm4gPSBmbls6LTFdCi0gICAgICAg
ICAgICBlbGlmIHRwICE9IGltcC5QWV9TT1VSQ0U6Ci0gICAgICAgICAgICAgICAgIyBEb24ndCBr
bm93IHdoYXQgdGhpcyBpcy4KLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgZm4gPSBvcy5wYXRoLmpvaW4ocHRoLCBuYW1lLnJwYXJ0aXRpb24o
Ii4iKVsyXSArICIucHkiKQotCi0gICAgICAgIGZuX3B5cGF0aCA9IHB5LnBhdGgubG9jYWwoZm4p
Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9zaG91bGRfcmV3cml0ZShuYW1lLCBmbl9weXBhdGgsIHN0
YXRlKToKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0KLSAgICAgICAgc2VsZi5fcmV3cml0dGVu
X25hbWVzLmFkZChuYW1lKQotCi0gICAgICAgICMgVGhlIHJlcXVlc3RlZCBtb2R1bGUgbG9va3Mg
bGlrZSBhIHRlc3QgZmlsZSwgc28gcmV3cml0ZSBpdC4gVGhpcyBpcwotICAgICAgICAjIHRoZSBt
b3N0IG1hZ2ljYWwgcGFydCBvZiB0aGUgcHJvY2VzczogbG9hZCB0aGUgc291cmNlLCByZXdyaXRl
IHRoZQotICAgICAgICAjIGFzc2VydHMsIGFuZCBsb2FkIHRoZSByZXdyaXR0ZW4gc291cmNlLiBX
ZSBhbHNvIGNhY2hlIHRoZSByZXdyaXR0ZW4KLSAgICAgICAgIyBtb2R1bGUgY29kZSBpbiBhIHNw
ZWNpYWwgcHljLiBXZSBtdXN0IGJlIGF3YXJlIG9mIHRoZSBwb3NzaWJpbGl0eSBvZgotICAgICAg
ICAjIGNvbmN1cnJlbnQgcHl0ZXN0IHByb2Nlc3NlcyByZXdyaXRpbmcgYW5kIGxvYWRpbmcgcHlj
cy4gVG8gYXZvaWQKLSAgICAgICAgIyB0cmlja3kgcmFjZSBjb25kaXRpb25zLCB3ZSBtYWludGFp
biB0aGUgZm9sbG93aW5nIGludmFyaWFudDogVGhlCi0gICAgICAgICMgY2FjaGVkIHB5YyBpcyBh
bHdheXMgYSBjb21wbGV0ZSwgdmFsaWQgcHljLiBPcGVyYXRpb25zIG9uIGl0IG11c3QgYmUKLSAg
ICAgICAgIyBhdG9taWMuIFBPU0lYJ3MgYXRvbWljIHJlbmFtZSBjb21lcyBpbiBoYW5keS4KLSAg
ICAgICAgd3JpdGUgPSBub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUKLSAgICAgICAgY2FjaGVf
ZGlyID0gb3MucGF0aC5qb2luKGZuX3B5cGF0aC5kaXJuYW1lLCAiX19weWNhY2hlX18iKQotICAg
ICAgICBpZiB3cml0ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBvcy5ta2Rp
cihjYWNoZV9kaXIpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAg
ICBlID0gc3lzLmV4Y19pbmZvKClbMV0uZXJybm8KLSAgICAgICAgICAgICAgICBpZiBlID09IGVy
cm5vLkVFWElTVDoKLSAgICAgICAgICAgICAgICAgICAgIyBFaXRoZXIgdGhlIF9fcHljYWNoZV9f
IGRpcmVjdG9yeSBhbHJlYWR5IGV4aXN0cyAodGhlCi0gICAgICAgICAgICAgICAgICAgICMgY29t
bW9uIGNhc2UpIG9yIGl0J3MgYmxvY2tlZCBieSBhIG5vbi1kaXIgbm9kZS4gSW4gdGhlCi0gICAg
ICAgICAgICAgICAgICAgICMgbGF0dGVyIGNhc2UsIHdlJ2xsIGlnbm9yZSBpdCBpbiBfd3JpdGVf
cHljLgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxpZiBlIGlu
IFtlcnJuby5FTk9FTlQsIGVycm5vLkVOT1RESVJdOgotICAgICAgICAgICAgICAgICAgICAjIE9u
ZSBvZiB0aGUgcGF0aCBjb21wb25lbnRzIHdhcyBub3QgYSBkaXJlY3RvcnksIGxpa2VseQotICAg
ICAgICAgICAgICAgICAgICAjIGJlY2F1c2Ugd2UncmUgaW4gYSB6aXAgZmlsZS4KLSAgICAgICAg
ICAgICAgICAgICAgd3JpdGUgPSBGYWxzZQotICAgICAgICAgICAgICAgIGVsaWYgZSBpbiBbZXJy
bm8uRUFDQ0VTLCBlcnJuby5FUk9GUywgZXJybm8uRVBFUk1dOgotICAgICAgICAgICAgICAgICAg
ICBzdGF0ZS50cmFjZSgicmVhZCBvbmx5IGRpcmVjdG9yeTogJXIiICUgZm5fcHlwYXRoLmRpcm5h
bWUpCi0gICAgICAgICAgICAgICAgICAgIHdyaXRlID0gRmFsc2UKLSAgICAgICAgICAgICAgICBl
bHNlOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICBjYWNoZV9uYW1lID0gZm5f
cHlwYXRoLmJhc2VuYW1lWzotM10gKyBQWUNfVEFJTAotICAgICAgICBweWMgPSBvcy5wYXRoLmpv
aW4oY2FjaGVfZGlyLCBjYWNoZV9uYW1lKQotICAgICAgICAjIE5vdGljZSB0aGF0IGV2ZW4gaWYg
d2UncmUgaW4gYSByZWFkLW9ubHkgZGlyZWN0b3J5LCBJJ20gZ29pbmcKLSAgICAgICAgIyB0byBj
aGVjayBmb3IgYSBjYWNoZWQgcHljLiBUaGlzIG1heSBub3QgYmUgb3B0aW1hbC4uLgotICAgICAg
ICBjbyA9IF9yZWFkX3B5Yyhmbl9weXBhdGgsIHB5Yywgc3RhdGUudHJhY2UpCi0gICAgICAgIGlm
IGNvIGlzIE5vbmU6Ci0gICAgICAgICAgICBzdGF0ZS50cmFjZSgicmV3cml0aW5nICVyIiAlIChm
biwpKQotICAgICAgICAgICAgc291cmNlX3N0YXQsIGNvID0gX3Jld3JpdGVfdGVzdChzZWxmLmNv
bmZpZywgZm5fcHlwYXRoKQotICAgICAgICAgICAgaWYgY28gaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICAjIFByb2JhYmx5IGEgU3ludGF4RXJyb3IgaW4gdGhlIHRlc3QuCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLSAgICAgICAgICAgIGlmIHdyaXRlOgotICAgICAgICAgICAgICAgIF9t
YWtlX3Jld3JpdHRlbl9weWMoc3RhdGUsIHNvdXJjZV9zdGF0LCBweWMsIGNvKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgc3RhdGUudHJhY2UoImZvdW5kIGNhY2hlZCByZXdyaXR0ZW4gcHlj
IGZvciAlciIgJSAoZm4sKSkKLSAgICAgICAgc2VsZi5tb2R1bGVzW25hbWVdID0gY28sIHB5Ywot
ICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9zaG91bGRfcmV3cml0ZShzZWxmLCBuYW1l
LCBmbl9weXBhdGgsIHN0YXRlKToKLSAgICAgICAgIyBhbHdheXMgcmV3cml0ZSBjb25mdGVzdCBm
aWxlcwotICAgICAgICBmbiA9IHN0cihmbl9weXBhdGgpCi0gICAgICAgIGlmIGZuX3B5cGF0aC5i
YXNlbmFtZSA9PSAnY29uZnRlc3QucHknOgotICAgICAgICAgICAgc3RhdGUudHJhY2UoInJld3Jp
dGluZyBjb25mdGVzdCBmaWxlOiAlciIgJSAoZm4sKSkKLSAgICAgICAgICAgIHJldHVybiBUcnVl
Ci0KLSAgICAgICAgaWYgc2VsZi5zZXNzaW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYg
c2VsZi5zZXNzaW9uLmlzaW5pdHBhdGgoZm4pOgotICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNl
KCJtYXRjaGVkIHRlc3QgZmlsZSAod2FzIHNwZWNpZmllZCBvbiBjbWRsaW5lKTogJXIiICUKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAoZm4sKSkKLSAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQotCi0gICAgICAgICMgbW9kdWxlcyBub3QgcGFzc2VkIGV4cGxpY2l0bHkgb24gdGhlIGNv
bW1hbmQgbGluZSBhcmUgb25seQotICAgICAgICAjIHJld3JpdHRlbiBpZiB0aGV5IG1hdGNoIHRo
ZSBuYW1pbmcgY29udmVudGlvbiBmb3IgdGVzdCBmaWxlcwotICAgICAgICBmb3IgcGF0IGluIHNl
bGYuZm5wYXRzOgotICAgICAgICAgICAgaWYgZm5fcHlwYXRoLmZubWF0Y2gocGF0KToKLSAgICAg
ICAgICAgICAgICBzdGF0ZS50cmFjZSgibWF0Y2hlZCB0ZXN0IGZpbGUgJXIiICUgKGZuLCkpCi0g
ICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKLQotICAgICAgICBmb3IgbWFya2VkIGluIHNlbGYu
X211c3RfcmV3cml0ZToKLSAgICAgICAgICAgIGlmIG5hbWUgPT0gbWFya2VkIG9yIG5hbWUuc3Rh
cnRzd2l0aChtYXJrZWQgKyAnLicpOgotICAgICAgICAgICAgICAgIHN0YXRlLnRyYWNlKCJtYXRj
aGVkIG1hcmtlZCBmaWxlICVyIChmcm9tICVyKSIgJSAobmFtZSwgbWFya2VkKSkKLSAgICAgICAg
ICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIG1h
cmtfcmV3cml0ZShzZWxmLCAqbmFtZXMpOgotICAgICAgICAiIiJNYXJrIGltcG9ydCBuYW1lcyBh
cyBuZWVkaW5nIHRvIGJlIHJld3JpdHRlbi4KLQotICAgICAgICBUaGUgbmFtZWQgbW9kdWxlIG9y
IHBhY2thZ2UgYXMgd2VsbCBhcyBhbnkgbmVzdGVkIG1vZHVsZXMgd2lsbAotICAgICAgICBiZSBy
ZXdyaXR0ZW4gb24gaW1wb3J0LgotICAgICAgICAiIiIKLSAgICAgICAgYWxyZWFkeV9pbXBvcnRl
ZCA9IHNldChuYW1lcykuaW50ZXJzZWN0aW9uKHNldChzeXMubW9kdWxlcykpCi0gICAgICAgIGlm
IGFscmVhZHlfaW1wb3J0ZWQ6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBhbHJlYWR5X2ltcG9y
dGVkOgotICAgICAgICAgICAgICAgIGlmIG5hbWUgbm90IGluIHNlbGYuX3Jld3JpdHRlbl9uYW1l
czoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fd2Fybl9hbHJlYWR5X2ltcG9ydGVkKG5hbWUp
Ci0gICAgICAgIHNlbGYuX211c3RfcmV3cml0ZS51cGRhdGUobmFtZXMpCi0KLSAgICBkZWYgX3dh
cm5fYWxyZWFkeV9pbXBvcnRlZChzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5jb25maWcud2Fy
bigKLSAgICAgICAgICAgICdQMScsCi0gICAgICAgICAgICAnTW9kdWxlIGFscmVhZHkgaW1wb3J0
ZWQgc28gY2Fubm90IGJlIHJld3JpdHRlbjogJXMnICUgbmFtZSkKLQotICAgIGRlZiBsb2FkX21v
ZHVsZShzZWxmLCBuYW1lKToKLSAgICAgICAgIyBJZiB0aGVyZSBpcyBhbiBleGlzdGluZyBtb2R1
bGUgb2JqZWN0IG5hbWVkICdmdWxsbmFtZScgaW4KLSAgICAgICAgIyBzeXMubW9kdWxlcywgdGhl
IGxvYWRlciBtdXN0IHVzZSB0aGF0IGV4aXN0aW5nIG1vZHVsZS4gKE90aGVyd2lzZSwKLSAgICAg
ICAgIyB0aGUgcmVsb2FkKCkgYnVpbHRpbiB3aWxsIG5vdCB3b3JrIGNvcnJlY3RseS4pCi0gICAg
ICAgIGlmIG5hbWUgaW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICByZXR1cm4gc3lzLm1vZHVs
ZXNbbmFtZV0KLQotICAgICAgICBjbywgcHljID0gc2VsZi5tb2R1bGVzLnBvcChuYW1lKQotICAg
ICAgICAjIEkgd2lzaCBJIGNvdWxkIGp1c3QgY2FsbCBpbXAubG9hZF9jb21waWxlZCBoZXJlLCBi
dXQgX19maWxlX18gaGFzIHRvCi0gICAgICAgICMgYmUgc2V0IHByb3Blcmx5LiBJbiBQeXRob24g
My4yKywgdGhpcyBhbGwgd291bGQgYmUgaGFuZGxlZCBjb3JyZWN0bHkKLSAgICAgICAgIyBieSBs
b2FkX2NvbXBpbGVkLgotICAgICAgICBtb2QgPSBzeXMubW9kdWxlc1tuYW1lXSA9IGltcC5uZXdf
bW9kdWxlKG5hbWUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG1vZC5fX2ZpbGVfXyA9IGNv
LmNvX2ZpbGVuYW1lCi0gICAgICAgICAgICAjIE5vcm1hbGx5LCB0aGlzIGF0dHJpYnV0ZSBpcyAz
LjIrLgotICAgICAgICAgICAgbW9kLl9fY2FjaGVkX18gPSBweWMKLSAgICAgICAgICAgIG1vZC5f
X2xvYWRlcl9fID0gc2VsZgotICAgICAgICAgICAgcHkuYnVpbHRpbi5leGVjXyhjbywgbW9kLl9f
ZGljdF9fKQotICAgICAgICBleGNlcHQ6ICAjIG5vcWEKLSAgICAgICAgICAgIGlmIG5hbWUgaW4g
c3lzLm1vZHVsZXM6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVdCi0gICAg
ICAgICAgICByYWlzZQotICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbbmFtZV0KLQotICAgIGRl
ZiBpc19wYWNrYWdlKHNlbGYsIG5hbWUpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmZCwg
Zm4sIGRlc2MgPSBpbXAuZmluZF9tb2R1bGUobmFtZSkKLSAgICAgICAgZXhjZXB0IEltcG9ydEVy
cm9yOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIGZkIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgZmQuY2xvc2UoKQotICAgICAgICB0cCA9IGRlc2NbMl0KLSAgICAgICAg
cmV0dXJuIHRwID09IGltcC5QS0dfRElSRUNUT1JZCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgX3JlZ2lzdGVyX3dpdGhfcGtnX3Jlc291cmNlcyhjbHMpOgotICAgICAgICAiIiIKLSAgICAg
ICAgRW5zdXJlIHBhY2thZ2UgcmVzb3VyY2VzIGNhbiBiZSBsb2FkZWQgZnJvbSB0aGlzIGxvYWRl
ci4gTWF5IGJlIGNhbGxlZAotICAgICAgICBtdWx0aXBsZSB0aW1lcywgYXMgdGhlIG9wZXJhdGlv
biBpcyBpZGVtcG90ZW50LgotICAgICAgICAiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
aW1wb3J0IHBrZ19yZXNvdXJjZXMKLSAgICAgICAgICAgICMgYWNjZXNzIGFuIGF0dHJpYnV0ZSBp
biBjYXNlIGEgZGVmZXJyZWQgaW1wb3J0ZXIgaXMgcHJlc2VudAotICAgICAgICAgICAgcGtnX3Jl
c291cmNlcy5fX25hbWVfXwotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAg
ICByZXR1cm4KLQotICAgICAgICAjIFNpbmNlIHB5dGVzdCB0ZXN0cyBhcmUgYWx3YXlzIGxvY2F0
ZWQgaW4gdGhlIGZpbGUgc3lzdGVtLCB0aGUKLSAgICAgICAgIyAgRGVmYXVsdFByb3ZpZGVyIGlz
IGFwcHJvcHJpYXRlLgotICAgICAgICBwa2dfcmVzb3VyY2VzLnJlZ2lzdGVyX2xvYWRlcl90eXBl
KGNscywgcGtnX3Jlc291cmNlcy5EZWZhdWx0UHJvdmlkZXIpCi0KLSAgICBkZWYgZ2V0X2RhdGEo
c2VsZiwgcGF0aG5hbWUpOgotICAgICAgICAiIiJPcHRpb25hbCBQRVAzMDIgZ2V0X2RhdGEgQVBJ
LgotICAgICAgICAiIiIKLSAgICAgICAgd2l0aCBvcGVuKHBhdGhuYW1lLCAncmInKSBhcyBmOgot
ICAgICAgICAgICAgcmV0dXJuIGYucmVhZCgpCi0KLQotZGVmIF93cml0ZV9weWMoc3RhdGUsIGNv
LCBzb3VyY2Vfc3RhdCwgcHljKToKLSAgICAjIFRlY2huaWNhbGx5LCB3ZSBkb24ndCBoYXZlIHRv
IGhhdmUgdGhlIHNhbWUgcHljIGZvcm1hdCBhcwotICAgICMgKEMpUHl0aG9uLCBzaW5jZSB0aGVz
ZSAicHljcyIgc2hvdWxkIG5ldmVyIGJlIHNlZW4gYnkgYnVpbHRpbgotICAgICMgaW1wb3J0LiBI
b3dldmVyLCB0aGVyZSdzIGxpdHRsZSByZWFzb24gZGV2aWF0ZSwgYW5kIEkgaG9wZQotICAgICMg
c29tZXRpbWUgdG8gYmUgYWJsZSB0byB1c2UgaW1wLmxvYWRfY29tcGlsZWQgdG8gbG9hZCB0aGVt
LiAoU2VlCi0gICAgIyB0aGUgY29tbWVudCBpbiBsb2FkX21vZHVsZSBhYm92ZS4pCi0gICAgdHJ5
OgotICAgICAgICBmcCA9IG9wZW4ocHljLCAid2IiKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAg
ICAgICBlcnIgPSBzeXMuZXhjX2luZm8oKVsxXS5lcnJubwotICAgICAgICBzdGF0ZS50cmFjZSgi
ZXJyb3Igd3JpdGluZyBweWMgZmlsZSBhdCAlczogZXJybm89JXMiICUgKHB5YywgZXJyKSkKLSAg
ICAgICAgIyB3ZSBpZ25vcmUgYW55IGZhaWx1cmUgdG8gd3JpdGUgdGhlIGNhY2hlIGZpbGUKLSAg
ICAgICAgIyB0aGVyZSBhcmUgbWFueSByZWFzb25zLCBwZXJtaXNzaW9uLWRlbmllZCwgX19weWNh
Y2hlX18gYmVpbmcgYQotICAgICAgICAjIGZpbGUgZXRjLgotICAgICAgICByZXR1cm4gRmFsc2UK
LSAgICB0cnk6Ci0gICAgICAgIGZwLndyaXRlKGltcC5nZXRfbWFnaWMoKSkKLSAgICAgICAgbXRp
bWUgPSBpbnQoc291cmNlX3N0YXQubXRpbWUpCi0gICAgICAgIHNpemUgPSBzb3VyY2Vfc3RhdC5z
aXplICYgMHhGRkZGRkZGRgotICAgICAgICBmcC53cml0ZShzdHJ1Y3QucGFjaygiPGxsIiwgbXRp
bWUsIHNpemUpKQotICAgICAgICBtYXJzaGFsLmR1bXAoY28sIGZwKQotICAgIGZpbmFsbHk6Ci0g
ICAgICAgIGZwLmNsb3NlKCkKLSAgICByZXR1cm4gVHJ1ZQotCi0KLVJOID0gIlxyXG4iLmVuY29k
ZSgidXRmLTgiKQotTiA9ICJcbiIuZW5jb2RlKCJ1dGYtOCIpCi0KLWNvb2tpZV9yZSA9IHJlLmNv
bXBpbGUociJeWyBcdFxmXSojLipjb2RpbmdbOj1dWyBcdF0qWy1cdy5dKyIpCi1CT01fVVRGOCA9
ICdceGVmXHhiYlx4YmYnCi0KLQotZGVmIF9yZXdyaXRlX3Rlc3QoY29uZmlnLCBmbik6Ci0gICAg
IiIiVHJ5IHRvIHJlYWQgYW5kIHJld3JpdGUgKmZuKiBhbmQgcmV0dXJuIHRoZSBjb2RlIG9iamVj
dC4iIiIKLSAgICBzdGF0ZSA9IGNvbmZpZy5fYXNzZXJ0c3RhdGUKLSAgICB0cnk6Ci0gICAgICAg
IHN0YXQgPSBmbi5zdGF0KCkKLSAgICAgICAgc291cmNlID0gZm4ucmVhZCgicmIiKQotICAgIGV4
Y2VwdCBFbnZpcm9ubWVudEVycm9yOgotICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgIGlm
IEFTQ0lJX0lTX0RFRkFVTFRfRU5DT0RJTkc6Ci0gICAgICAgICMgQVNDSUkgaXMgdGhlIGRlZmF1
bHQgZW5jb2RpbmcgaW4gUHl0aG9uIDIuIFdpdGhvdXQgYSBjb2RpbmcKLSAgICAgICAgIyBkZWNs
YXJhdGlvbiwgUHl0aG9uIDIgd2lsbCBjb21wbGFpbiBhYm91dCBhbnkgYnl0ZXMgaW4gdGhlIGZp
bGUKLSAgICAgICAgIyBvdXRzaWRlIHRoZSBBU0NJSSByYW5nZS4gU2FkbHksIHRoaXMgYmVoYXZp
b3IgZG9lcyBub3QgZXh0ZW5kIHRvCi0gICAgICAgICMgY29tcGlsZSgpIG9yIGFzdC5wYXJzZSgp
LCB3aGljaCBwcmVmZXIgdG8gaW50ZXJwcmV0IHRoZSBieXRlcyBhcwotICAgICAgICAjIGxhdGlu
LTEuIChBdCBsZWFzdCB0aGV5IHByb3Blcmx5IGhhbmRsZSBleHBsaWNpdCBjb2RpbmcgY29va2ll
cy4pIFRvCi0gICAgICAgICMgcHJlc2VydmUgdGhpcyBlcnJvciBiZWhhdmlvciwgd2UgY291bGQg
Zm9yY2UgYXN0LnBhcnNlKCkgdG8gdXNlIEFTQ0lJCi0gICAgICAgICMgYXMgdGhlIGVuY29kaW5n
IGJ5IGluc2VydGluZyBhIGNvZGluZyBjb29raWUuIFVuZm9ydHVuYXRlbHksIHRoYXQKLSAgICAg
ICAgIyBtZXNzZXMgdXAgbGluZSBudW1iZXJzLiBUaHVzLCB3ZSBoYXZlIHRvIGNoZWNrIG91cnNl
bHZlcyBpZiBhbnl0aGluZwotICAgICAgICAjIGlzIG91dHNpZGUgdGhlIEFTQ0lJIHJhbmdlIGlu
IHRoZSBjYXNlIG5vIGVuY29kaW5nIGlzIGV4cGxpY2l0bHkKLSAgICAgICAgIyBkZWNsYXJlZC4g
Rm9yIG1vcmUgY29udGV4dCwgc2VlIGlzc3VlICMyNjkuIFlheSBmb3IgUHl0aG9uIDMgd2hpY2gK
LSAgICAgICAgIyBnZXRzIHRoaXMgcmlnaHQuCi0gICAgICAgIGVuZDEgPSBzb3VyY2UuZmluZCgi
XG4iKQotICAgICAgICBlbmQyID0gc291cmNlLmZpbmQoIlxuIiwgZW5kMSArIDEpCi0gICAgICAg
IGlmIChub3Qgc291cmNlLnN0YXJ0c3dpdGgoQk9NX1VURjgpIGFuZAotICAgICAgICAgICAgY29v
a2llX3JlLm1hdGNoKHNvdXJjZVswOmVuZDFdKSBpcyBOb25lIGFuZAotICAgICAgICAgICAgICAg
IGNvb2tpZV9yZS5tYXRjaChzb3VyY2VbZW5kMSArIDE6ZW5kMl0pIGlzIE5vbmUpOgotICAgICAg
ICAgICAgaWYgaGFzYXR0cihzdGF0ZSwgIl9pbmRlY29kZSIpOgotICAgICAgICAgICAgICAgICMg
ZW5jb2RpbmdzIGltcG9ydGVkIHVzIGFnYWluLCBzbyBkb24ndCByZXdyaXRlLgotICAgICAgICAg
ICAgICAgIHJldHVybiBOb25lLCBOb25lCi0gICAgICAgICAgICBzdGF0ZS5faW5kZWNvZGUgPSBU
cnVlCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgICAgICBzb3VyY2UuZGVjb2RlKCJhc2NpaSIpCi0gICAgICAgICAgICAgICAgZXhjZXB0IFVu
aWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBMZXQgaXQgZmFpbCBpbiBy
ZWFsIGltcG9ydC4KLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUKLSAgICAg
ICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIHN0YXRlLl9pbmRlY29kZQotICAg
IHRyeToKLSAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShzb3VyY2UpCi0gICAgZXhjZXB0IFN5bnRh
eEVycm9yOgotICAgICAgICAjIExldCB0aGlzIHBvcCB1cCBhZ2FpbiBpbiB0aGUgcmVhbCBpbXBv
cnQuCi0gICAgICAgIHN0YXRlLnRyYWNlKCJmYWlsZWQgdG8gcGFyc2U6ICVyIiAlIChmbiwpKQot
ICAgICAgICByZXR1cm4gTm9uZSwgTm9uZQotICAgIHJld3JpdGVfYXNzZXJ0cyh0cmVlLCBmbiwg
Y29uZmlnKQotICAgIHRyeToKLSAgICAgICAgY28gPSBjb21waWxlKHRyZWUsIGZuLnN0cnBhdGgs
ICJleGVjIiwgZG9udF9pbmhlcml0PVRydWUpCi0gICAgZXhjZXB0IFN5bnRheEVycm9yOgotICAg
ICAgICAjIEl0J3MgcG9zc2libGUgdGhhdCB0aGlzIGVycm9yIGlzIGZyb20gc29tZSBidWcgaW4g
dGhlCi0gICAgICAgICMgYXNzZXJ0aW9uIHJld3JpdGluZywgYnV0IEkgZG9uJ3Qga25vdyBvZiBh
IGZhc3Qgd2F5IHRvIHRlbGwuCi0gICAgICAgIHN0YXRlLnRyYWNlKCJmYWlsZWQgdG8gY29tcGls
ZTogJXIiICUgKGZuLCkpCi0gICAgICAgIHJldHVybiBOb25lLCBOb25lCi0gICAgcmV0dXJuIHN0
YXQsIGNvCi0KLQotZGVmIF9tYWtlX3Jld3JpdHRlbl9weWMoc3RhdGUsIHNvdXJjZV9zdGF0LCBw
eWMsIGNvKToKLSAgICAiIiJUcnkgdG8gZHVtcCByZXdyaXR0ZW4gY29kZSB0byAqcHljKi4iIiIK
LSAgICBpZiBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgid2luIik6Ci0gICAgICAgICMgV2luZG93
cyBncmFudHMgZXhjbHVzaXZlIGFjY2VzcyB0byBvcGVuIGZpbGVzIGFuZCBkb2Vzbid0IGhhdmUg
YXRvbWljCi0gICAgICAgICMgcmVuYW1lLCBzbyBqdXN0IHdyaXRlIGludG8gdGhlIGZpbmFsIGZp
bGUuCi0gICAgICAgIF93cml0ZV9weWMoc3RhdGUsIGNvLCBzb3VyY2Vfc3RhdCwgcHljKQotICAg
IGVsc2U6Ci0gICAgICAgICMgV2hlbiBub3Qgb24gd2luZG93cywgYXNzdW1lIHJlbmFtZSBpcyBh
dG9taWMuIER1bXAgdGhlIGNvZGUgb2JqZWN0Ci0gICAgICAgICMgaW50byBhIGZpbGUgc3BlY2lm
aWMgdG8gdGhpcyBwcm9jZXNzIGFuZCBhdG9taWNhbGx5IHJlcGxhY2UgaXQuCi0gICAgICAgIHBy
b2NfcHljID0gcHljICsgIi4iICsgc3RyKG9zLmdldHBpZCgpKQotICAgICAgICBpZiBfd3JpdGVf
cHljKHN0YXRlLCBjbywgc291cmNlX3N0YXQsIHByb2NfcHljKToKLSAgICAgICAgICAgIG9zLnJl
bmFtZShwcm9jX3B5YywgcHljKQotCi0KLWRlZiBfcmVhZF9weWMoc291cmNlLCBweWMsIHRyYWNl
PWxhbWJkYSB4OiBOb25lKToKLSAgICAiIiJQb3NzaWJseSByZWFkIGEgcHl0ZXN0IHB5YyBjb250
YWluaW5nIHJld3JpdHRlbiBjb2RlLgotCi0gICAgUmV0dXJuIHJld3JpdHRlbiBjb2RlIGlmIHN1
Y2Nlc3NmdWwgb3IgTm9uZSBpZiBub3QuCi0gICAgIiIiCi0gICAgdHJ5OgotICAgICAgICBmcCA9
IG9wZW4ocHljLCAicmIiKQotICAgIGV4Y2VwdCBJT0Vycm9yOgotICAgICAgICByZXR1cm4gTm9u
ZQotICAgIHdpdGggZnA6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG10aW1lID0gaW50KHNv
dXJjZS5tdGltZSgpKQotICAgICAgICAgICAgc2l6ZSA9IHNvdXJjZS5zaXplKCkKLSAgICAgICAg
ICAgIGRhdGEgPSBmcC5yZWFkKDEyKQotICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBh
cyBlOgotICAgICAgICAgICAgdHJhY2UoJ19yZWFkX3B5Yyglcyk6IEVudmlyb25tZW50RXJyb3Ig
JXMnICUgKHNvdXJjZSwgZSkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAjIENo
ZWNrIGZvciBpbnZhbGlkIG9yIG91dCBvZiBkYXRlIHB5YyBmaWxlLgotICAgICAgICBpZiAobGVu
KGRhdGEpICE9IDEyIG9yIGRhdGFbOjRdICE9IGltcC5nZXRfbWFnaWMoKSBvcgotICAgICAgICAg
ICAgICAgIHN0cnVjdC51bnBhY2soIjxsbCIsIGRhdGFbNDpdKSAhPSAobXRpbWUsIHNpemUpKToK
LSAgICAgICAgICAgIHRyYWNlKCdfcmVhZF9weWMoJXMpOiBpbnZhbGlkIG9yIG91dCBvZiBkYXRl
IHB5YycgJSBzb3VyY2UpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBjbyA9IG1hcnNoYWwubG9hZChmcCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
biBhcyBlOgotICAgICAgICAgICAgdHJhY2UoJ19yZWFkX3B5Yyglcyk6IG1hcnNoYWwubG9hZCBl
cnJvciAlcycgJSAoc291cmNlLCBlKSkKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAg
IGlmIG5vdCBpc2luc3RhbmNlKGNvLCB0eXBlcy5Db2RlVHlwZSk6Ci0gICAgICAgICAgICB0cmFj
ZSgnX3JlYWRfcHljKCVzKTogbm90IGEgY29kZSBvYmplY3QnICUgc291cmNlKQotICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKLSAgICAgICAgcmV0dXJuIGNvCi0KLQotZGVmIHJld3JpdGVfYXNzZXJ0
cyhtb2QsIG1vZHVsZV9wYXRoPU5vbmUsIGNvbmZpZz1Ob25lKToKLSAgICAiIiJSZXdyaXRlIHRo
ZSBhc3NlcnQgc3RhdGVtZW50cyBpbiBtb2QuIiIiCi0gICAgQXNzZXJ0aW9uUmV3cml0ZXIobW9k
dWxlX3BhdGgsIGNvbmZpZykucnVuKG1vZCkKLQotCi1kZWYgX3NhZmVyZXByKG9iaik6Ci0gICAg
IiIiR2V0IGEgc2FmZSByZXByIG9mIGFuIG9iamVjdCBmb3IgYXNzZXJ0aW9uIGVycm9yIG1lc3Nh
Z2VzLgotCi0gICAgVGhlIGFzc2VydGlvbiBmb3JtYXR0aW5nICh1dGlsLmZvcm1hdF9leHBsYW5h
dGlvbigpKSByZXF1aXJlcwotICAgIG5ld2xpbmVzIHRvIGJlIGVzY2FwZWQgc2luY2UgdGhleSBh
cmUgYSBzcGVjaWFsIGNoYXJhY3RlciBmb3IgaXQuCi0gICAgTm9ybWFsbHkgYXNzZXJ0aW9uLnV0
aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkgZG9lcyB0aGlzIGJ1dCBmb3IgYQotICAgIGN1c3RvbSBy
ZXByIGl0IGlzIHBvc3NpYmxlIHRvIGNvbnRhaW4gb25lIG9mIHRoZSBzcGVjaWFsIGVzY2FwZQot
ICAgIHNlcXVlbmNlcywgZXNwZWNpYWxseSAnXG57JyBhbmQgJ1xufScgYXJlIGxpa2VseSB0byBi
ZSBwcmVzZW50IGluCi0gICAgSlNPTiByZXBycy4KLQotICAgICIiIgotICAgIHJlcHIgPSBweS5p
by5zYWZlcmVwcihvYmopCi0gICAgaWYgaXNpbnN0YW5jZShyZXByLCBzaXgudGV4dF90eXBlKToK
LSAgICAgICAgdCA9IHNpeC50ZXh0X3R5cGUKLSAgICBlbHNlOgotICAgICAgICB0ID0gc2l4LmJp
bmFyeV90eXBlCi0gICAgcmV0dXJuIHJlcHIucmVwbGFjZSh0KCJcbiIpLCB0KCJcXG4iKSkKLQot
Ci1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnV0aWwgaW1wb3J0IGZvcm1hdF9leHBsYW5hdGlvbiBh
cyBfZm9ybWF0X2V4cGxhbmF0aW9uICAjIG5vcWEKLQotCi1kZWYgX2Zvcm1hdF9hc3NlcnRtc2co
b2JqKToKLSAgICAiIiJGb3JtYXQgdGhlIGN1c3RvbSBhc3NlcnRpb24gbWVzc2FnZSBnaXZlbi4K
LQotICAgIEZvciBzdHJpbmdzIHRoaXMgc2ltcGx5IHJlcGxhY2VzIG5ld2xpbmVzIHdpdGggJ1xu
ficgc28gdGhhdAotICAgIHV0aWwuZm9ybWF0X2V4cGxhbmF0aW9uKCkgd2lsbCBwcmVzZXJ2ZSB0
aGVtIGluc3RlYWQgb2YgZXNjYXBpbmcKLSAgICBuZXdsaW5lcy4gIEZvciBvdGhlciBvYmplY3Rz
IHB5LmlvLnNhZmVyZXByKCkgaXMgdXNlZCBmaXJzdC4KLQotICAgICIiIgotICAgICMgcmVwcmxp
YiBhcHBlYXJzIHRvIGhhdmUgYSBidWcgd2hpY2ggbWVhbnMgdGhhdCBpZiBhIHN0cmluZwotICAg
ICMgY29udGFpbnMgYSBuZXdsaW5lIGl0IGdldHMgZXNjYXBlZCwgaG93ZXZlciBpZiBhbiBvYmpl
Y3QgaGFzIGEKLSAgICAjIC5fX3JlcHJfXygpIHdoaWNoIGNvbnRhaW5zIG5ld2xpbmVzIGl0IGRv
ZXMgbm90IGdldCBlc2NhcGVkLgotICAgICMgSG93ZXZlciBpbiBlaXRoZXIgY2FzZSB3ZSB3YW50
IHRvIHByZXNlcnZlIHRoZSBuZXdsaW5lLgotICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBzaXgudGV4
dF90eXBlKSBvciBpc2luc3RhbmNlKG9iaiwgc2l4LmJpbmFyeV90eXBlKToKLSAgICAgICAgcyA9
IG9iagotICAgICAgICBpc19yZXByID0gRmFsc2UKLSAgICBlbHNlOgotICAgICAgICBzID0gcHku
aW8uc2FmZXJlcHIob2JqKQotICAgICAgICBpc19yZXByID0gVHJ1ZQotICAgIGlmIGlzaW5zdGFu
Y2Uocywgc2l4LnRleHRfdHlwZSk6Ci0gICAgICAgIHQgPSBzaXgudGV4dF90eXBlCi0gICAgZWxz
ZToKLSAgICAgICAgdCA9IHNpeC5iaW5hcnlfdHlwZQotICAgIHMgPSBzLnJlcGxhY2UodCgiXG4i
KSwgdCgiXG5+IikpLnJlcGxhY2UodCgiJSIpLCB0KCIlJSIpKQotICAgIGlmIGlzX3JlcHI6Ci0g
ICAgICAgIHMgPSBzLnJlcGxhY2UodCgiXFxuIiksIHQoIlxufiIpKQotICAgIHJldHVybiBzCi0K
LQotZGVmIF9zaG91bGRfcmVwcl9nbG9iYWxfbmFtZShvYmopOgotICAgIHJldHVybiBub3QgaGFz
YXR0cihvYmosICJfX25hbWVfXyIpIGFuZCBub3QgY2FsbGFibGUob2JqKQotCi0KLWRlZiBfZm9y
bWF0X2Jvb2xvcChleHBsYW5hdGlvbnMsIGlzX29yKToKLSAgICBleHBsYW5hdGlvbiA9ICIoIiAr
IChpc19vciBhbmQgIiBvciAiIG9yICIgYW5kICIpLmpvaW4oZXhwbGFuYXRpb25zKSArICIpIgot
ICAgIGlmIGlzaW5zdGFuY2UoZXhwbGFuYXRpb24sIHNpeC50ZXh0X3R5cGUpOgotICAgICAgICB0
ID0gc2l4LnRleHRfdHlwZQotICAgIGVsc2U6Ci0gICAgICAgIHQgPSBzaXguYmluYXJ5X3R5cGUK
LSAgICByZXR1cm4gZXhwbGFuYXRpb24ucmVwbGFjZSh0KCclJyksIHQoJyUlJykpCi0KLQotZGVm
IF9jYWxsX3JlcHJjb21wYXJlKG9wcywgcmVzdWx0cywgZXhwbHMsIGVhY2hfb2JqKToKLSAgICBm
b3IgaSwgcmVzLCBleHBsIGluIHppcChyYW5nZShsZW4ob3BzKSksIHJlc3VsdHMsIGV4cGxzKToK
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZG9uZSA9IG5vdCByZXMKLSAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGRvbmUgPSBUcnVlCi0gICAgICAgIGlmIGRvbmU6Ci0g
ICAgICAgICAgICBicmVhawotICAgIGlmIHV0aWwuX3JlcHJjb21wYXJlIGlzIG5vdCBOb25lOgot
ICAgICAgICBjdXN0b20gPSB1dGlsLl9yZXByY29tcGFyZShvcHNbaV0sIGVhY2hfb2JqW2ldLCBl
YWNoX29ialtpICsgMV0pCi0gICAgICAgIGlmIGN1c3RvbSBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgIHJldHVybiBjdXN0b20KLSAgICByZXR1cm4gZXhwbAotCi0KLXVuYXJ5X21hcCA9IHsKLSAg
ICBhc3QuTm90OiAibm90ICVzIiwKLSAgICBhc3QuSW52ZXJ0OiAifiVzIiwKLSAgICBhc3QuVVN1
YjogIi0lcyIsCi0gICAgYXN0LlVBZGQ6ICIrJXMiCi19Ci0KLWJpbm9wX21hcCA9IHsKLSAgICBh
c3QuQml0T3I6ICJ8IiwKLSAgICBhc3QuQml0WG9yOiAiXiIsCi0gICAgYXN0LkJpdEFuZDogIiYi
LAotICAgIGFzdC5MU2hpZnQ6ICI8PCIsCi0gICAgYXN0LlJTaGlmdDogIj4+IiwKLSAgICBhc3Qu
QWRkOiAiKyIsCi0gICAgYXN0LlN1YjogIi0iLAotICAgIGFzdC5NdWx0OiAiKiIsCi0gICAgYXN0
LkRpdjogIi8iLAotICAgIGFzdC5GbG9vckRpdjogIi8vIiwKLSAgICBhc3QuTW9kOiAiJSUiLCAg
IyBlc2NhcGVkIGZvciBzdHJpbmcgZm9ybWF0dGluZwotICAgIGFzdC5FcTogIj09IiwKLSAgICBh
c3QuTm90RXE6ICIhPSIsCi0gICAgYXN0Lkx0OiAiPCIsCi0gICAgYXN0Lkx0RTogIjw9IiwKLSAg
ICBhc3QuR3Q6ICI+IiwKLSAgICBhc3QuR3RFOiAiPj0iLAotICAgIGFzdC5Qb3c6ICIqKiIsCi0g
ICAgYXN0LklzOiAiaXMiLAotICAgIGFzdC5Jc05vdDogImlzIG5vdCIsCi0gICAgYXN0LkluOiAi
aW4iLAotICAgIGFzdC5Ob3RJbjogIm5vdCBpbiIKLX0KLSMgUHl0aG9uIDMuNSsgY29tcGF0aWJp
bGl0eQotdHJ5OgotICAgIGJpbm9wX21hcFthc3QuTWF0TXVsdF0gPSAiQCIKLWV4Y2VwdCBBdHRy
aWJ1dGVFcnJvcjoKLSAgICBwYXNzCi0KLSMgUHl0aG9uIDMuNCsgY29tcGF0aWJpbGl0eQotaWYg
aGFzYXR0cihhc3QsICJOYW1lQ29uc3RhbnQiKToKLSAgICBfTmFtZUNvbnN0YW50ID0gYXN0Lk5h
bWVDb25zdGFudAotZWxzZToKLSAgICBkZWYgX05hbWVDb25zdGFudChjKToKLSAgICAgICAgcmV0
dXJuIGFzdC5OYW1lKHN0cihjKSwgYXN0LkxvYWQoKSkKLQotCi1kZWYgc2V0X2xvY2F0aW9uKG5v
ZGUsIGxpbmVubywgY29sX29mZnNldCk6Ci0gICAgIiIiU2V0IG5vZGUgbG9jYXRpb24gaW5mb3Jt
YXRpb24gcmVjdXJzaXZlbHkuIiIiCi0gICAgZGVmIF9maXgobm9kZSwgbGluZW5vLCBjb2xfb2Zm
c2V0KToKLSAgICAgICAgaWYgImxpbmVubyIgaW4gbm9kZS5fYXR0cmlidXRlczoKLSAgICAgICAg
ICAgIG5vZGUubGluZW5vID0gbGluZW5vCi0gICAgICAgIGlmICJjb2xfb2Zmc2V0IiBpbiBub2Rl
Ll9hdHRyaWJ1dGVzOgotICAgICAgICAgICAgbm9kZS5jb2xfb2Zmc2V0ID0gY29sX29mZnNldAot
ICAgICAgICBmb3IgY2hpbGQgaW4gYXN0Lml0ZXJfY2hpbGRfbm9kZXMobm9kZSk6Ci0gICAgICAg
ICAgICBfZml4KGNoaWxkLCBsaW5lbm8sIGNvbF9vZmZzZXQpCi0gICAgX2ZpeChub2RlLCBsaW5l
bm8sIGNvbF9vZmZzZXQpCi0gICAgcmV0dXJuIG5vZGUKLQotCi1jbGFzcyBBc3NlcnRpb25SZXdy
aXRlcihhc3QuTm9kZVZpc2l0b3IpOgotICAgICIiIkFzc2VydGlvbiByZXdyaXRpbmcgaW1wbGVt
ZW50YXRpb24uCi0KLSAgICBUaGUgbWFpbiBlbnRyeXBvaW50IGlzIHRvIGNhbGwgLnJ1bigpIHdp
dGggYW4gYXN0Lk1vZHVsZSBpbnN0YW5jZSwKLSAgICB0aGlzIHdpbGwgdGhlbiBmaW5kIGFsbCB0
aGUgYXNzZXJ0IHN0YXRlbWVudHMgYW5kIHJld3JpdGUgdGhlbSB0bwotICAgIHByb3ZpZGUgaW50
ZXJtZWRpYXRlIHZhbHVlcyBhbmQgYSBkZXRhaWxlZCBhc3NlcnRpb24gZXJyb3IuICBTZWUKLSAg
ICBodHRwOi8vcHliaXRlcy5ibG9nc3BvdC5iZS8yMDExLzA3L2JlaGluZC1zY2VuZXMtb2YtcHl0
ZXN0cy1uZXctYXNzZXJ0aW9uLmh0bWwKLSAgICBmb3IgYW4gb3ZlcnZpZXcgb2YgaG93IHRoaXMg
d29ya3MuCi0KLSAgICBUaGUgZW50cnkgcG9pbnQgaGVyZSBpcyAucnVuKCkgd2hpY2ggd2lsbCBp
dGVyYXRlIG92ZXIgYWxsIHRoZQotICAgIHN0YXRlbWVudHMgaW4gYW4gYXN0Lk1vZHVsZSBhbmQg
Zm9yIGVhY2ggYXN0LkFzc2VydCBzdGF0ZW1lbnQgaXQKLSAgICBmaW5kcyBjYWxsIC52aXNpdCgp
IHdpdGggaXQuICBUaGVuIC52aXNpdF9Bc3NlcnQoKSB0YWtlcyBvdmVyIGFuZAotICAgIGlzIHJl
c3BvbnNpYmxlIGZvciBjcmVhdGluZyBuZXcgYXN0IHN0YXRlbWVudHMgdG8gcmVwbGFjZSB0aGUK
LSAgICBvcmlnaW5hbCBhc3NlcnQgc3RhdGVtZW50OiBpdCByZXdyaXRlcyB0aGUgdGVzdCBvZiBh
biBhc3NlcnRpb24KLSAgICB0byBwcm92aWRlIGludGVybWVkaWF0ZSB2YWx1ZXMgYW5kIHJlcGxh
Y2UgaXQgd2l0aCBhbiBpZiBzdGF0ZW1lbnQKLSAgICB3aGljaCByYWlzZXMgYW4gYXNzZXJ0aW9u
IGVycm9yIHdpdGggYSBkZXRhaWxlZCBleHBsYW5hdGlvbiBpbgotICAgIGNhc2UgdGhlIGV4cHJl
c3Npb24gaXMgZmFsc2UuCi0KLSAgICBGb3IgdGhpcyAudmlzaXRfQXNzZXJ0KCkgdXNlcyB0aGUg
dmlzaXRvciBwYXR0ZXJuIHRvIHZpc2l0IGFsbCB0aGUKLSAgICBBU1Qgbm9kZXMgb2YgdGhlIGFz
dC5Bc3NlcnQudGVzdCBmaWVsZCwgZWFjaCB2aXNpdCBjYWxsIHJldHVybmluZwotICAgIGFuIEFT
VCBub2RlIGFuZCB0aGUgY29ycmVzcG9uZGluZyBleHBsYW5hdGlvbiBzdHJpbmcuICBEdXJpbmcg
dGhpcwotICAgIHN0YXRlIGlzIGtlcHQgaW4gc2V2ZXJhbCBpbnN0YW5jZSBhdHRyaWJ1dGVzOgot
Ci0gICAgOnN0YXRlbWVudHM6IEFsbCB0aGUgQVNUIHN0YXRlbWVudHMgd2hpY2ggd2lsbCByZXBs
YWNlIHRoZSBhc3NlcnQKLSAgICAgICBzdGF0ZW1lbnQuCi0KLSAgICA6dmFyaWFibGVzOiBUaGlz
IGlzIHBvcHVsYXRlZCBieSAudmFyaWFibGUoKSB3aXRoIGVhY2ggdmFyaWFibGUKLSAgICAgICB1
c2VkIGJ5IHRoZSBzdGF0ZW1lbnRzIHNvIHRoYXQgdGhleSBjYW4gYWxsIGJlIHNldCB0byBOb25l
IGF0Ci0gICAgICAgdGhlIGVuZCBvZiB0aGUgc3RhdGVtZW50cy4KLQotICAgIDp2YXJpYWJsZV9j
b3VudGVyOiBDb3VudGVyIHRvIGNyZWF0ZSBuZXcgdW5pcXVlIHZhcmlhYmxlcyBuZWVkZWQKLSAg
ICAgICBieSBzdGF0ZW1lbnRzLiAgVmFyaWFibGVzIGFyZSBjcmVhdGVkIHVzaW5nIC52YXJpYWJs
ZSgpIGFuZAotICAgICAgIGhhdmUgdGhlIGZvcm0gb2YgIkBweV9hc3NlcnQwIi4KLQotICAgIDpv
bl9mYWlsdXJlOiBUaGUgQVNUIHN0YXRlbWVudHMgd2hpY2ggd2lsbCBiZSBleGVjdXRlZCBpZiB0
aGUKLSAgICAgICBhc3NlcnRpb24gdGVzdCBmYWlscy4gIFRoaXMgaXMgdGhlIGNvZGUgd2hpY2gg
d2lsbCBjb25zdHJ1Y3QKLSAgICAgICB0aGUgZmFpbHVyZSBtZXNzYWdlIGFuZCByYWlzZXMgdGhl
IEFzc2VydGlvbkVycm9yLgotCi0gICAgOmV4cGxhbmF0aW9uX3NwZWNpZmllcnM6IEEgZGljdCBm
aWxsZWQgYnkgLmV4cGxhbmF0aW9uX3BhcmFtKCkKLSAgICAgICB3aXRoICUtZm9ybWF0dGluZyBw
bGFjZWhvbGRlcnMgYW5kIHRoZWlyIGNvcnJlc3BvbmRpbmcKLSAgICAgICBleHByZXNzaW9ucyB0
byB1c2UgaW4gdGhlIGJ1aWxkaW5nIG9mIGFuIGFzc2VydGlvbiBtZXNzYWdlLgotICAgICAgIFRo
aXMgaXMgdXNlZCBieSAucG9wX2Zvcm1hdF9jb250ZXh0KCkgdG8gYnVpbGQgYSBtZXNzYWdlLgot
Ci0gICAgOnN0YWNrOiBBIHN0YWNrIG9mIHRoZSBleHBsYW5hdGlvbl9zcGVjaWZpZXJzIGRpY3Rz
IG1haW50YWluZWQgYnkKLSAgICAgICAucHVzaF9mb3JtYXRfY29udGV4dCgpIGFuZCAucG9wX2Zv
cm1hdF9jb250ZXh0KCkgd2hpY2ggYWxsb3dzCi0gICAgICAgdG8gYnVpbGQgYW5vdGhlciAlLWZv
cm1hdHRlZCBzdHJpbmcgd2hpbGUgYWxyZWFkeSBidWlsZGluZyBvbmUuCi0KLSAgICBUaGlzIHN0
YXRlIGlzIHJlc2V0IG9uIGV2ZXJ5IG5ldyBhc3NlcnQgc3RhdGVtZW50IHZpc2l0ZWQgYW5kIHVz
ZWQKLSAgICBieSB0aGUgb3RoZXIgdmlzaXRvcnMuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBtb2R1bGVfcGF0aCwgY29uZmlnKToKLSAgICAgICAgc3VwZXIoQXNzZXJ0aW9u
UmV3cml0ZXIsIHNlbGYpLl9faW5pdF9fKCkKLSAgICAgICAgc2VsZi5tb2R1bGVfcGF0aCA9IG1v
ZHVsZV9wYXRoCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29uZmlnCi0KLSAgICBkZWYgcnVuKHNl
bGYsIG1vZCk6Ci0gICAgICAgICIiIkZpbmQgYWxsIGFzc2VydCBzdGF0ZW1lbnRzIGluICptb2Qq
IGFuZCByZXdyaXRlIHRoZW0uIiIiCi0gICAgICAgIGlmIG5vdCBtb2QuYm9keToKLSAgICAgICAg
ICAgICMgTm90aGluZyB0byBkby4KLSAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIEluc2Vy
dCBzb21lIHNwZWNpYWwgaW1wb3J0cyBhdCB0aGUgdG9wIG9mIHRoZSBtb2R1bGUgYnV0IGFmdGVy
IGFueQotICAgICAgICAjIGRvY3N0cmluZ3MgYW5kIF9fZnV0dXJlX18gaW1wb3J0cy4KLSAgICAg
ICAgYWxpYXNlcyA9IFthc3QuYWxpYXMocHkuYnVpbHRpbi5idWlsdGlucy5fX25hbWVfXywgIkBw
eV9idWlsdGlucyIpLAotICAgICAgICAgICAgICAgICAgIGFzdC5hbGlhcygiX3B5dGVzdC5hc3Nl
cnRpb24ucmV3cml0ZSIsICJAcHl0ZXN0X2FyIildCi0gICAgICAgIGRvYyA9IGdldGF0dHIobW9k
LCAiZG9jc3RyaW5nIiwgTm9uZSkKLSAgICAgICAgZXhwZWN0X2RvY3N0cmluZyA9IGRvYyBpcyBO
b25lCi0gICAgICAgIGlmIGRvYyBpcyBub3QgTm9uZSBhbmQgc2VsZi5pc19yZXdyaXRlX2Rpc2Fi
bGVkKGRvYyk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcG9zID0gMAotICAgICAgICBs
aW5lbm8gPSAxCi0gICAgICAgIGZvciBpdGVtIGluIG1vZC5ib2R5OgotICAgICAgICAgICAgaWYg
KGV4cGVjdF9kb2NzdHJpbmcgYW5kIGlzaW5zdGFuY2UoaXRlbSwgYXN0LkV4cHIpIGFuZAotICAg
ICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKGl0ZW0udmFsdWUsIGFzdC5TdHIpKToKLSAgICAg
ICAgICAgICAgICBkb2MgPSBpdGVtLnZhbHVlLnMKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmlz
X3Jld3JpdGVfZGlzYWJsZWQoZG9jKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgICAgICAgICAgZXhwZWN0X2RvY3N0cmluZyA9IEZhbHNlCi0gICAgICAgICAgICBlbGlmIChu
b3QgaXNpbnN0YW5jZShpdGVtLCBhc3QuSW1wb3J0RnJvbSkgb3IgaXRlbS5sZXZlbCA+IDAgb3IK
LSAgICAgICAgICAgICAgICAgIGl0ZW0ubW9kdWxlICE9ICJfX2Z1dHVyZV9fIik6Ci0gICAgICAg
ICAgICAgICAgbGluZW5vID0gaXRlbS5saW5lbm8KLSAgICAgICAgICAgICAgICBicmVhawotICAg
ICAgICAgICAgcG9zICs9IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxpbmVubyA9IGl0
ZW0ubGluZW5vCi0gICAgICAgIGltcG9ydHMgPSBbYXN0LkltcG9ydChbYWxpYXNdLCBsaW5lbm89
bGluZW5vLCBjb2xfb2Zmc2V0PTApCi0gICAgICAgICAgICAgICAgICAgZm9yIGFsaWFzIGluIGFs
aWFzZXNdCi0gICAgICAgIG1vZC5ib2R5W3Bvczpwb3NdID0gaW1wb3J0cwotICAgICAgICAjIENv
bGxlY3QgYXNzZXJ0cy4KLSAgICAgICAgbm9kZXMgPSBbbW9kXQotICAgICAgICB3aGlsZSBub2Rl
czoKLSAgICAgICAgICAgIG5vZGUgPSBub2Rlcy5wb3AoKQotICAgICAgICAgICAgZm9yIG5hbWUs
IGZpZWxkIGluIGFzdC5pdGVyX2ZpZWxkcyhub2RlKToKLSAgICAgICAgICAgICAgICBpZiBpc2lu
c3RhbmNlKGZpZWxkLCBsaXN0KToKLSAgICAgICAgICAgICAgICAgICAgbmV3ID0gW10KLSAgICAg
ICAgICAgICAgICAgICAgZm9yIGksIGNoaWxkIGluIGVudW1lcmF0ZShmaWVsZCk6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxkLCBhc3QuQXNzZXJ0KToKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAjIFRyYW5zZm9ybSBhc3NlcnQuCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbmV3LmV4dGVuZChzZWxmLnZpc2l0KGNoaWxkKSkKLSAgICAgICAgICAg
ICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LmFwcGVu
ZChjaGlsZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGNoaWxk
LCBhc3QuQVNUKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZXMuYXBwZW5k
KGNoaWxkKQotICAgICAgICAgICAgICAgICAgICBzZXRhdHRyKG5vZGUsIG5hbWUsIG5ldykKLSAg
ICAgICAgICAgICAgICBlbGlmIChpc2luc3RhbmNlKGZpZWxkLCBhc3QuQVNUKSBhbmQKLSAgICAg
ICAgICAgICAgICAgICAgICAjIERvbid0IHJlY3Vyc2UgaW50byBleHByZXNzaW9ucyBhcyB0aGV5
IGNhbid0IGNvbnRhaW4KLSAgICAgICAgICAgICAgICAgICAgICAjIGFzc2VydHMuCi0gICAgICAg
ICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZmllbGQsIGFzdC5leHByKSk6Ci0gICAgICAg
ICAgICAgICAgICAgIG5vZGVzLmFwcGVuZChmaWVsZCkKLQotICAgIGRlZiBpc19yZXdyaXRlX2Rp
c2FibGVkKHNlbGYsIGRvY3N0cmluZyk6Ci0gICAgICAgIHJldHVybiAiUFlURVNUX0RPTlRfUkVX
UklURSIgaW4gZG9jc3RyaW5nCi0KLSAgICBkZWYgdmFyaWFibGUoc2VsZik6Ci0gICAgICAgICIi
IkdldCBhIG5ldyB2YXJpYWJsZS4iIiIKLSAgICAgICAgIyBVc2UgYSBjaGFyYWN0ZXIgaW52YWxp
ZCBpbiBweXRob24gaWRlbnRpZmllcnMgdG8gYXZvaWQgY2xhc2hpbmcuCi0gICAgICAgIG5hbWUg
PSAiQHB5X2Fzc2VydCIgKyBzdHIobmV4dChzZWxmLnZhcmlhYmxlX2NvdW50ZXIpKQotICAgICAg
ICBzZWxmLnZhcmlhYmxlcy5hcHBlbmQobmFtZSkKLSAgICAgICAgcmV0dXJuIG5hbWUKLQotICAg
IGRlZiBhc3NpZ24oc2VsZiwgZXhwcik6Ci0gICAgICAgICIiIkdpdmUgKmV4cHIqIGEgbmFtZS4i
IiIKLSAgICAgICAgbmFtZSA9IHNlbGYudmFyaWFibGUoKQotICAgICAgICBzZWxmLnN0YXRlbWVu
dHMuYXBwZW5kKGFzdC5Bc3NpZ24oW2FzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKV0sIGV4cHIp
KQotICAgICAgICByZXR1cm4gYXN0Lk5hbWUobmFtZSwgYXN0LkxvYWQoKSkKLQotICAgIGRlZiBk
aXNwbGF5KHNlbGYsIGV4cHIpOgotICAgICAgICAiIiJDYWxsIHB5LmlvLnNhZmVyZXByIG9uIHRo
ZSBleHByZXNzaW9uLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5oZWxwZXIoInNhZmVyZXByIiwg
ZXhwcikKLQotICAgIGRlZiBoZWxwZXIoc2VsZiwgbmFtZSwgKmFyZ3MpOgotICAgICAgICAiIiJD
YWxsIGEgaGVscGVyIGluIHRoaXMgbW9kdWxlLiIiIgotICAgICAgICBweV9uYW1lID0gYXN0Lk5h
bWUoIkBweXRlc3RfYXIiLCBhc3QuTG9hZCgpKQotICAgICAgICBhdHRyID0gYXN0LkF0dHJpYnV0
ZShweV9uYW1lLCAiXyIgKyBuYW1lLCBhc3QuTG9hZCgpKQotICAgICAgICByZXR1cm4gYXN0X0Nh
bGwoYXR0ciwgbGlzdChhcmdzKSwgW10pCi0KLSAgICBkZWYgYnVpbHRpbihzZWxmLCBuYW1lKToK
LSAgICAgICAgIiIiUmV0dXJuIHRoZSBidWlsdGluIGNhbGxlZCAqbmFtZSouIiIiCi0gICAgICAg
IGJ1aWx0aW5fbmFtZSA9IGFzdC5OYW1lKCJAcHlfYnVpbHRpbnMiLCBhc3QuTG9hZCgpKQotICAg
ICAgICByZXR1cm4gYXN0LkF0dHJpYnV0ZShidWlsdGluX25hbWUsIG5hbWUsIGFzdC5Mb2FkKCkp
Ci0KLSAgICBkZWYgZXhwbGFuYXRpb25fcGFyYW0oc2VsZiwgZXhwcik6Ci0gICAgICAgICIiIlJl
dHVybiBhIG5ldyBuYW1lZCAlLWZvcm1hdHRpbmcgcGxhY2Vob2xkZXIgZm9yIGV4cHIuCi0KLSAg
ICAgICAgVGhpcyBjcmVhdGVzIGEgJS1mb3JtYXR0aW5nIHBsYWNlaG9sZGVyIGZvciBleHByIGlu
IHRoZQotICAgICAgICBjdXJyZW50IGZvcm1hdHRpbmcgY29udGV4dCwgZS5nLiBgYCUocHkwKXNg
YC4gIFRoZSBwbGFjZWhvbGRlcgotICAgICAgICBhbmQgZXhwciBhcmUgcGxhY2VkIGluIHRoZSBj
dXJyZW50IGZvcm1hdCBjb250ZXh0IHNvIHRoYXQgaXQKLSAgICAgICAgY2FuIGJlIHVzZWQgb24g
dGhlIG5leHQgY2FsbCB0byAucG9wX2Zvcm1hdF9jb250ZXh0KCkuCi0KLSAgICAgICAgIiIiCi0g
ICAgICAgIHNwZWNpZmllciA9ICJweSIgKyBzdHIobmV4dChzZWxmLnZhcmlhYmxlX2NvdW50ZXIp
KQotICAgICAgICBzZWxmLmV4cGxhbmF0aW9uX3NwZWNpZmllcnNbc3BlY2lmaWVyXSA9IGV4cHIK
LSAgICAgICAgcmV0dXJuICIlKCIgKyBzcGVjaWZpZXIgKyAiKXMiCi0KLSAgICBkZWYgcHVzaF9m
b3JtYXRfY29udGV4dChzZWxmKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IGZvcm1hdHRpbmcg
Y29udGV4dC4KLQotICAgICAgICBUaGUgZm9ybWF0IGNvbnRleHQgaXMgdXNlZCBmb3Igd2hlbiBh
biBleHBsYW5hdGlvbiB3YW50cyB0bwotICAgICAgICBoYXZlIGEgdmFyaWFibGUgdmFsdWUgZm9y
bWF0dGVkIGluIHRoZSBhc3NlcnRpb24gbWVzc2FnZS4gIEluCi0gICAgICAgIHRoaXMgY2FzZSB0
aGUgdmFsdWUgcmVxdWlyZWQgY2FuIGJlIGFkZGVkIHVzaW5nCi0gICAgICAgIC5leHBsYW5hdGlv
bl9wYXJhbSgpLiAgRmluYWxseSAucG9wX2Zvcm1hdF9jb250ZXh0KCkgaXMgdXNlZAotICAgICAg
ICB0byBmb3JtYXQgYSBzdHJpbmcgb2YgJS1mb3JtYXR0ZWQgdmFsdWVzIGFzIGFkZGVkIGJ5Ci0g
ICAgICAgIC5leHBsYW5hdGlvbl9wYXJhbSgpLgotCi0gICAgICAgICIiIgotICAgICAgICBzZWxm
LmV4cGxhbmF0aW9uX3NwZWNpZmllcnMgPSB7fQotICAgICAgICBzZWxmLnN0YWNrLmFwcGVuZChz
ZWxmLmV4cGxhbmF0aW9uX3NwZWNpZmllcnMpCi0KLSAgICBkZWYgcG9wX2Zvcm1hdF9jb250ZXh0
KHNlbGYsIGV4cGxfZXhwcik6Ci0gICAgICAgICIiIkZvcm1hdCB0aGUgJS1mb3JtYXR0ZWQgc3Ry
aW5nIHdpdGggY3VycmVudCBmb3JtYXQgY29udGV4dC4KLQotICAgICAgICBUaGUgZXhwbF9leHBy
IHNob3VsZCBiZSBhbiBhc3QuU3RyIGluc3RhbmNlIGNvbnN0cnVjdGVkIGZyb20KLSAgICAgICAg
dGhlICUtcGxhY2Vob2xkZXJzIGNyZWF0ZWQgYnkgLmV4cGxhbmF0aW9uX3BhcmFtKCkuICBUaGlz
IHdpbGwKLSAgICAgICAgYWRkIHRoZSByZXF1aXJlZCBjb2RlIHRvIGZvcm1hdCBzYWlkIHN0cmlu
ZyB0byAub25fZmFpbHVyZSBhbmQKLSAgICAgICAgcmV0dXJuIHRoZSBhc3QuTmFtZSBpbnN0YW5j
ZSBvZiB0aGUgZm9ybWF0dGVkIHN0cmluZy4KLQotICAgICAgICAiIiIKLSAgICAgICAgY3VycmVu
dCA9IHNlbGYuc3RhY2sucG9wKCkKLSAgICAgICAgaWYgc2VsZi5zdGFjazoKLSAgICAgICAgICAg
IHNlbGYuZXhwbGFuYXRpb25fc3BlY2lmaWVycyA9IHNlbGYuc3RhY2tbLTFdCi0gICAgICAgIGtl
eXMgPSBbYXN0LlN0cihrZXkpIGZvciBrZXkgaW4gY3VycmVudC5rZXlzKCldCi0gICAgICAgIGZv
cm1hdF9kaWN0ID0gYXN0LkRpY3Qoa2V5cywgbGlzdChjdXJyZW50LnZhbHVlcygpKSkKLSAgICAg
ICAgZm9ybSA9IGFzdC5CaW5PcChleHBsX2V4cHIsIGFzdC5Nb2QoKSwgZm9ybWF0X2RpY3QpCi0g
ICAgICAgIG5hbWUgPSAiQHB5X2Zvcm1hdCIgKyBzdHIobmV4dChzZWxmLnZhcmlhYmxlX2NvdW50
ZXIpKQotICAgICAgICBzZWxmLm9uX2ZhaWx1cmUuYXBwZW5kKGFzdC5Bc3NpZ24oW2FzdC5OYW1l
KG5hbWUsIGFzdC5TdG9yZSgpKV0sIGZvcm0pKQotICAgICAgICByZXR1cm4gYXN0Lk5hbWUobmFt
ZSwgYXN0LkxvYWQoKSkKLQotICAgIGRlZiBnZW5lcmljX3Zpc2l0KHNlbGYsIG5vZGUpOgotICAg
ICAgICAiIiJIYW5kbGUgZXhwcmVzc2lvbnMgd2UgZG9uJ3QgaGF2ZSBjdXN0b20gY29kZSBmb3Iu
IiIiCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIGFzdC5leHByKQotICAgICAgICBy
ZXMgPSBzZWxmLmFzc2lnbihub2RlKQotICAgICAgICByZXR1cm4gcmVzLCBzZWxmLmV4cGxhbmF0
aW9uX3BhcmFtKHNlbGYuZGlzcGxheShyZXMpKQotCi0gICAgZGVmIHZpc2l0X0Fzc2VydChzZWxm
LCBhc3NlcnRfKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBBU1Qgc3RhdGVtZW50cyB0byByZXBs
YWNlIHRoZSBhc3QuQXNzZXJ0IGluc3RhbmNlLgotCi0gICAgICAgIFRoaXMgcmV3cml0ZXMgdGhl
IHRlc3Qgb2YgYW4gYXNzZXJ0aW9uIHRvIHByb3ZpZGUKLSAgICAgICAgaW50ZXJtZWRpYXRlIHZh
bHVlcyBhbmQgcmVwbGFjZSBpdCB3aXRoIGFuIGlmIHN0YXRlbWVudCB3aGljaAotICAgICAgICBy
YWlzZXMgYW4gYXNzZXJ0aW9uIGVycm9yIHdpdGggYSBkZXRhaWxlZCBleHBsYW5hdGlvbiBpbiBj
YXNlCi0gICAgICAgIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlLgotCi0gICAgICAgICIiIgotICAg
ICAgICBpZiBpc2luc3RhbmNlKGFzc2VydF8udGVzdCwgYXN0LlR1cGxlKSBhbmQgc2VsZi5jb25m
aWcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBmc2xvY2F0aW9uID0gKHNlbGYubW9kdWxlX3Bh
dGgsIGFzc2VydF8ubGluZW5vKQotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybignUjEnLCAn
YXNzZXJ0aW9uIGlzIGFsd2F5cyB0cnVlLCBwZXJoYXBzICcKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3JlbW92ZSBwYXJlbnRoZXNlcz8nLCBmc2xvY2F0aW9uPWZzbG9jYXRpb24pCi0g
ICAgICAgIHNlbGYuc3RhdGVtZW50cyA9IFtdCi0gICAgICAgIHNlbGYudmFyaWFibGVzID0gW10K
LSAgICAgICAgc2VsZi52YXJpYWJsZV9jb3VudGVyID0gaXRlcnRvb2xzLmNvdW50KCkKLSAgICAg
ICAgc2VsZi5zdGFjayA9IFtdCi0gICAgICAgIHNlbGYub25fZmFpbHVyZSA9IFtdCi0gICAgICAg
IHNlbGYucHVzaF9mb3JtYXRfY29udGV4dCgpCi0gICAgICAgICMgUmV3cml0ZSBhc3NlcnQgaW50
byBhIGJ1bmNoIG9mIHN0YXRlbWVudHMuCi0gICAgICAgIHRvcF9jb25kaXRpb24sIGV4cGxhbmF0
aW9uID0gc2VsZi52aXNpdChhc3NlcnRfLnRlc3QpCi0gICAgICAgICMgQ3JlYXRlIGZhaWx1cmUg
bWVzc2FnZS4KLSAgICAgICAgYm9keSA9IHNlbGYub25fZmFpbHVyZQotICAgICAgICBuZWdhdGlv
biA9IGFzdC5VbmFyeU9wKGFzdC5Ob3QoKSwgdG9wX2NvbmRpdGlvbikKLSAgICAgICAgc2VsZi5z
dGF0ZW1lbnRzLmFwcGVuZChhc3QuSWYobmVnYXRpb24sIGJvZHksIFtdKSkKLSAgICAgICAgaWYg
YXNzZXJ0Xy5tc2c6Ci0gICAgICAgICAgICBhc3NlcnRtc2cgPSBzZWxmLmhlbHBlcignZm9ybWF0
X2Fzc2VydG1zZycsIGFzc2VydF8ubXNnKQotICAgICAgICAgICAgZXhwbGFuYXRpb24gPSAiXG4+
YXNzZXJ0ICIgKyBleHBsYW5hdGlvbgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0
bXNnID0gYXN0LlN0cigiIikKLSAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gImFzc2VydCAiICsg
ZXhwbGFuYXRpb24KLSAgICAgICAgdGVtcGxhdGUgPSBhc3QuQmluT3AoYXNzZXJ0bXNnLCBhc3Qu
QWRkKCksIGFzdC5TdHIoZXhwbGFuYXRpb24pKQotICAgICAgICBtc2cgPSBzZWxmLnBvcF9mb3Jt
YXRfY29udGV4dCh0ZW1wbGF0ZSkKLSAgICAgICAgZm10ID0gc2VsZi5oZWxwZXIoImZvcm1hdF9l
eHBsYW5hdGlvbiIsIG1zZykKLSAgICAgICAgZXJyX25hbWUgPSBhc3QuTmFtZSgiQXNzZXJ0aW9u
RXJyb3IiLCBhc3QuTG9hZCgpKQotICAgICAgICBleGMgPSBhc3RfQ2FsbChlcnJfbmFtZSwgW2Zt
dF0sIFtdKQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49IDM6Ci0gICAgICAgICAg
ICByYWlzZV8gPSBhc3QuUmFpc2UoZXhjLCBOb25lKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgcmFpc2VfID0gYXN0LlJhaXNlKGV4YywgTm9uZSwgTm9uZSkKLSAgICAgICAgYm9keS5hcHBl
bmQocmFpc2VfKQotICAgICAgICAjIENsZWFyIHRlbXBvcmFyeSB2YXJpYWJsZXMgYnkgc2V0dGlu
ZyB0aGVtIHRvIE5vbmUuCi0gICAgICAgIGlmIHNlbGYudmFyaWFibGVzOgotICAgICAgICAgICAg
dmFyaWFibGVzID0gW2FzdC5OYW1lKG5hbWUsIGFzdC5TdG9yZSgpKQotICAgICAgICAgICAgICAg
ICAgICAgICAgIGZvciBuYW1lIGluIHNlbGYudmFyaWFibGVzXQotICAgICAgICAgICAgY2xlYXIg
PSBhc3QuQXNzaWduKHZhcmlhYmxlcywgX05hbWVDb25zdGFudChOb25lKSkKLSAgICAgICAgICAg
IHNlbGYuc3RhdGVtZW50cy5hcHBlbmQoY2xlYXIpCi0gICAgICAgICMgRml4IGxpbmUgbnVtYmVy
cy4KLSAgICAgICAgZm9yIHN0bXQgaW4gc2VsZi5zdGF0ZW1lbnRzOgotICAgICAgICAgICAgc2V0
X2xvY2F0aW9uKHN0bXQsIGFzc2VydF8ubGluZW5vLCBhc3NlcnRfLmNvbF9vZmZzZXQpCi0gICAg
ICAgIHJldHVybiBzZWxmLnN0YXRlbWVudHMKLQotICAgIGRlZiB2aXNpdF9OYW1lKHNlbGYsIG5h
bWUpOgotICAgICAgICAjIERpc3BsYXkgdGhlIHJlcHIgb2YgdGhlIG5hbWUgaWYgaXQncyBhIGxv
Y2FsIHZhcmlhYmxlIG9yCi0gICAgICAgICMgX3Nob3VsZF9yZXByX2dsb2JhbF9uYW1lKCkgdGhp
bmtzIGl0J3MgYWNjZXB0YWJsZS4KLSAgICAgICAgbG9jcyA9IGFzdF9DYWxsKHNlbGYuYnVpbHRp
bigibG9jYWxzIiksIFtdLCBbXSkKLSAgICAgICAgaW5sb2NzID0gYXN0LkNvbXBhcmUoYXN0LlN0
cihuYW1lLmlkKSwgW2FzdC5JbigpXSwgW2xvY3NdKQotICAgICAgICBkb3JlcHIgPSBzZWxmLmhl
bHBlcigic2hvdWxkX3JlcHJfZ2xvYmFsX25hbWUiLCBuYW1lKQotICAgICAgICB0ZXN0ID0gYXN0
LkJvb2xPcChhc3QuT3IoKSwgW2lubG9jcywgZG9yZXByXSkKLSAgICAgICAgZXhwciA9IGFzdC5J
ZkV4cCh0ZXN0LCBzZWxmLmRpc3BsYXkobmFtZSksIGFzdC5TdHIobmFtZS5pZCkpCi0gICAgICAg
IHJldHVybiBuYW1lLCBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKGV4cHIpCi0KLSAgICBkZWYgdmlz
aXRfQm9vbE9wKHNlbGYsIGJvb2xvcCk6Ci0gICAgICAgIHJlc192YXIgPSBzZWxmLnZhcmlhYmxl
KCkKLSAgICAgICAgZXhwbF9saXN0ID0gc2VsZi5hc3NpZ24oYXN0Lkxpc3QoW10sIGFzdC5Mb2Fk
KCkpKQotICAgICAgICBhcHAgPSBhc3QuQXR0cmlidXRlKGV4cGxfbGlzdCwgImFwcGVuZCIsIGFz
dC5Mb2FkKCkpCi0gICAgICAgIGlzX29yID0gaW50KGlzaW5zdGFuY2UoYm9vbG9wLm9wLCBhc3Qu
T3IpKQotICAgICAgICBib2R5ID0gc2F2ZSA9IHNlbGYuc3RhdGVtZW50cwotICAgICAgICBmYWls
X3NhdmUgPSBzZWxmLm9uX2ZhaWx1cmUKLSAgICAgICAgbGV2ZWxzID0gbGVuKGJvb2xvcC52YWx1
ZXMpIC0gMQotICAgICAgICBzZWxmLnB1c2hfZm9ybWF0X2NvbnRleHQoKQotICAgICAgICAjIFBy
b2Nlc3MgZWFjaCBvcGVyYW5kLCBzaG9ydC1jaXJjdXRpbmcgaWYgbmVlZGVkLgotICAgICAgICBm
b3IgaSwgdiBpbiBlbnVtZXJhdGUoYm9vbG9wLnZhbHVlcyk6Ci0gICAgICAgICAgICBpZiBpOgot
ICAgICAgICAgICAgICAgIGZhaWxfaW5uZXIgPSBbXQotICAgICAgICAgICAgICAgICMgY29uZCBp
cyBzZXQgaW4gYSBwcmlvciBsb29wIGl0ZXJhdGlvbiBiZWxvdwotICAgICAgICAgICAgICAgIHNl
bGYub25fZmFpbHVyZS5hcHBlbmQoYXN0LklmKGNvbmQsIGZhaWxfaW5uZXIsIFtdKSkgICMgbm9x
YQotICAgICAgICAgICAgICAgIHNlbGYub25fZmFpbHVyZSA9IGZhaWxfaW5uZXIKLSAgICAgICAg
ICAgIHNlbGYucHVzaF9mb3JtYXRfY29udGV4dCgpCi0gICAgICAgICAgICByZXMsIGV4cGwgPSBz
ZWxmLnZpc2l0KHYpCi0gICAgICAgICAgICBib2R5LmFwcGVuZChhc3QuQXNzaWduKFthc3QuTmFt
ZShyZXNfdmFyLCBhc3QuU3RvcmUoKSldLCByZXMpKQotICAgICAgICAgICAgZXhwbF9mb3JtYXQg
PSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dChhc3QuU3RyKGV4cGwpKQotICAgICAgICAgICAgY2Fs
bCA9IGFzdF9DYWxsKGFwcCwgW2V4cGxfZm9ybWF0XSwgW10pCi0gICAgICAgICAgICBzZWxmLm9u
X2ZhaWx1cmUuYXBwZW5kKGFzdC5FeHByKGNhbGwpKQotICAgICAgICAgICAgaWYgaSA8IGxldmVs
czoKLSAgICAgICAgICAgICAgICBjb25kID0gcmVzCi0gICAgICAgICAgICAgICAgaWYgaXNfb3I6
Ci0gICAgICAgICAgICAgICAgICAgIGNvbmQgPSBhc3QuVW5hcnlPcChhc3QuTm90KCksIGNvbmQp
Ci0gICAgICAgICAgICAgICAgaW5uZXIgPSBbXQotICAgICAgICAgICAgICAgIHNlbGYuc3RhdGVt
ZW50cy5hcHBlbmQoYXN0LklmKGNvbmQsIGlubmVyLCBbXSkpCi0gICAgICAgICAgICAgICAgc2Vs
Zi5zdGF0ZW1lbnRzID0gYm9keSA9IGlubmVyCi0gICAgICAgIHNlbGYuc3RhdGVtZW50cyA9IHNh
dmUKLSAgICAgICAgc2VsZi5vbl9mYWlsdXJlID0gZmFpbF9zYXZlCi0gICAgICAgIGV4cGxfdGVt
cGxhdGUgPSBzZWxmLmhlbHBlcigiZm9ybWF0X2Jvb2xvcCIsIGV4cGxfbGlzdCwgYXN0Lk51bShp
c19vcikpCi0gICAgICAgIGV4cGwgPSBzZWxmLnBvcF9mb3JtYXRfY29udGV4dChleHBsX3RlbXBs
YXRlKQotICAgICAgICByZXR1cm4gYXN0Lk5hbWUocmVzX3ZhciwgYXN0LkxvYWQoKSksIHNlbGYu
ZXhwbGFuYXRpb25fcGFyYW0oZXhwbCkKLQotICAgIGRlZiB2aXNpdF9VbmFyeU9wKHNlbGYsIHVu
YXJ5KToKLSAgICAgICAgcGF0dGVybiA9IHVuYXJ5X21hcFt1bmFyeS5vcC5fX2NsYXNzX19dCi0g
ICAgICAgIG9wZXJhbmRfcmVzLCBvcGVyYW5kX2V4cGwgPSBzZWxmLnZpc2l0KHVuYXJ5Lm9wZXJh
bmQpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKGFzdC5VbmFyeU9wKHVuYXJ5Lm9wLCBvcGVy
YW5kX3JlcykpCi0gICAgICAgIHJldHVybiByZXMsIHBhdHRlcm4gJSAob3BlcmFuZF9leHBsLCkK
LQotICAgIGRlZiB2aXNpdF9CaW5PcChzZWxmLCBiaW5vcCk6Ci0gICAgICAgIHN5bWJvbCA9IGJp
bm9wX21hcFtiaW5vcC5vcC5fX2NsYXNzX19dCi0gICAgICAgIGxlZnRfZXhwciwgbGVmdF9leHBs
ID0gc2VsZi52aXNpdChiaW5vcC5sZWZ0KQotICAgICAgICByaWdodF9leHByLCByaWdodF9leHBs
ID0gc2VsZi52aXNpdChiaW5vcC5yaWdodCkKLSAgICAgICAgZXhwbGFuYXRpb24gPSAiKCVzICVz
ICVzKSIgJSAobGVmdF9leHBsLCBzeW1ib2wsIHJpZ2h0X2V4cGwpCi0gICAgICAgIHJlcyA9IHNl
bGYuYXNzaWduKGFzdC5CaW5PcChsZWZ0X2V4cHIsIGJpbm9wLm9wLCByaWdodF9leHByKSkKLSAg
ICAgICAgcmV0dXJuIHJlcywgZXhwbGFuYXRpb24KLQotICAgIGRlZiB2aXNpdF9DYWxsXzM1KHNl
bGYsIGNhbGwpOgotICAgICAgICAiIiIKLSAgICAgICAgdmlzaXQgYGFzdC5DYWxsYCBub2RlcyBv
biBQeXRob24zLjUgYW5kIGFmdGVyCi0gICAgICAgICIiIgotICAgICAgICBuZXdfZnVuYywgZnVu
Y19leHBsID0gc2VsZi52aXNpdChjYWxsLmZ1bmMpCi0gICAgICAgIGFyZ19leHBscyA9IFtdCi0g
ICAgICAgIG5ld19hcmdzID0gW10KLSAgICAgICAgbmV3X2t3YXJncyA9IFtdCi0gICAgICAgIGZv
ciBhcmcgaW4gY2FsbC5hcmdzOgotICAgICAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChh
cmcpCi0gICAgICAgICAgICBhcmdfZXhwbHMuYXBwZW5kKGV4cGwpCi0gICAgICAgICAgICBuZXdf
YXJncy5hcHBlbmQocmVzKQotICAgICAgICBmb3Iga2V5d29yZCBpbiBjYWxsLmtleXdvcmRzOgot
ICAgICAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChrZXl3b3JkLnZhbHVlKQotICAgICAg
ICAgICAgbmV3X2t3YXJncy5hcHBlbmQoYXN0LmtleXdvcmQoa2V5d29yZC5hcmcsIHJlcykpCi0g
ICAgICAgICAgICBpZiBrZXl3b3JkLmFyZzoKLSAgICAgICAgICAgICAgICBhcmdfZXhwbHMuYXBw
ZW5kKGtleXdvcmQuYXJnICsgIj0iICsgZXhwbCkKLSAgICAgICAgICAgIGVsc2U6ICAjICoqYXJn
cyBoYXZlIGBhcmdgIGtleXdvcmRzIHdpdGggYW4gLmFyZyBvZiBOb25lCi0gICAgICAgICAgICAg
ICAgYXJnX2V4cGxzLmFwcGVuZCgiKioiICsgZXhwbCkKLQotICAgICAgICBleHBsID0gIiVzKCVz
KSIgJSAoZnVuY19leHBsLCAnLCAnLmpvaW4oYXJnX2V4cGxzKSkKLSAgICAgICAgbmV3X2NhbGwg
PSBhc3QuQ2FsbChuZXdfZnVuYywgbmV3X2FyZ3MsIG5ld19rd2FyZ3MpCi0gICAgICAgIHJlcyA9
IHNlbGYuYXNzaWduKG5ld19jYWxsKQotICAgICAgICByZXNfZXhwbCA9IHNlbGYuZXhwbGFuYXRp
b25fcGFyYW0oc2VsZi5kaXNwbGF5KHJlcykpCi0gICAgICAgIG91dGVyX2V4cGwgPSAiJXNcbnsl
cyA9ICVzXG59IiAlIChyZXNfZXhwbCwgcmVzX2V4cGwsIGV4cGwpCi0gICAgICAgIHJldHVybiBy
ZXMsIG91dGVyX2V4cGwKLQotICAgIGRlZiB2aXNpdF9TdGFycmVkKHNlbGYsIHN0YXJyZWQpOgot
ICAgICAgICAjIEZyb20gUHl0aG9uIDMuNSwgYSBTdGFycmVkIG5vZGUgY2FuIGFwcGVhciBpbiBh
IGZ1bmN0aW9uIGNhbGwKLSAgICAgICAgcmVzLCBleHBsID0gc2VsZi52aXNpdChzdGFycmVkLnZh
bHVlKQotICAgICAgICByZXR1cm4gc3RhcnJlZCwgJyonICsgZXhwbAotCi0gICAgZGVmIHZpc2l0
X0NhbGxfbGVnYWN5KHNlbGYsIGNhbGwpOgotICAgICAgICAiIiIKLSAgICAgICAgdmlzaXQgYGFz
dC5DYWxsIG5vZGVzIG9uIDMuNCBhbmQgYmVsb3dgCi0gICAgICAgICIiIgotICAgICAgICBuZXdf
ZnVuYywgZnVuY19leHBsID0gc2VsZi52aXNpdChjYWxsLmZ1bmMpCi0gICAgICAgIGFyZ19leHBs
cyA9IFtdCi0gICAgICAgIG5ld19hcmdzID0gW10KLSAgICAgICAgbmV3X2t3YXJncyA9IFtdCi0g
ICAgICAgIG5ld19zdGFyID0gbmV3X2t3YXJnID0gTm9uZQotICAgICAgICBmb3IgYXJnIGluIGNh
bGwuYXJnczoKLSAgICAgICAgICAgIHJlcywgZXhwbCA9IHNlbGYudmlzaXQoYXJnKQotICAgICAg
ICAgICAgbmV3X2FyZ3MuYXBwZW5kKHJlcykKLSAgICAgICAgICAgIGFyZ19leHBscy5hcHBlbmQo
ZXhwbCkKLSAgICAgICAgZm9yIGtleXdvcmQgaW4gY2FsbC5rZXl3b3JkczoKLSAgICAgICAgICAg
IHJlcywgZXhwbCA9IHNlbGYudmlzaXQoa2V5d29yZC52YWx1ZSkKLSAgICAgICAgICAgIG5ld19r
d2FyZ3MuYXBwZW5kKGFzdC5rZXl3b3JkKGtleXdvcmQuYXJnLCByZXMpKQotICAgICAgICAgICAg
YXJnX2V4cGxzLmFwcGVuZChrZXl3b3JkLmFyZyArICI9IiArIGV4cGwpCi0gICAgICAgIGlmIGNh
bGwuc3RhcmFyZ3M6Ci0gICAgICAgICAgICBuZXdfc3RhciwgZXhwbCA9IHNlbGYudmlzaXQoY2Fs
bC5zdGFyYXJncykKLSAgICAgICAgICAgIGFyZ19leHBscy5hcHBlbmQoIioiICsgZXhwbCkKLSAg
ICAgICAgaWYgY2FsbC5rd2FyZ3M6Ci0gICAgICAgICAgICBuZXdfa3dhcmcsIGV4cGwgPSBzZWxm
LnZpc2l0KGNhbGwua3dhcmdzKQotICAgICAgICAgICAgYXJnX2V4cGxzLmFwcGVuZCgiKioiICsg
ZXhwbCkKLSAgICAgICAgZXhwbCA9ICIlcyglcykiICUgKGZ1bmNfZXhwbCwgJywgJy5qb2luKGFy
Z19leHBscykpCi0gICAgICAgIG5ld19jYWxsID0gYXN0LkNhbGwobmV3X2Z1bmMsIG5ld19hcmdz
LCBuZXdfa3dhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19zdGFyLCBuZXdf
a3dhcmcpCi0gICAgICAgIHJlcyA9IHNlbGYuYXNzaWduKG5ld19jYWxsKQotICAgICAgICByZXNf
ZXhwbCA9IHNlbGYuZXhwbGFuYXRpb25fcGFyYW0oc2VsZi5kaXNwbGF5KHJlcykpCi0gICAgICAg
IG91dGVyX2V4cGwgPSAiJXNcbnslcyA9ICVzXG59IiAlIChyZXNfZXhwbCwgcmVzX2V4cGwsIGV4
cGwpCi0gICAgICAgIHJldHVybiByZXMsIG91dGVyX2V4cGwKLQotICAgICMgYXN0LkNhbGwgc2ln
bmF0dXJlIGNoYW5nZWQgb24gMy41LAotICAgICMgY29uZGl0aW9uYWxseSBjaGFuZ2UgIHdoaWNo
IG1ldGhvZHMgaXMgbmFtZWQKLSAgICAjIHZpc2l0X0NhbGwgZGVwZW5kaW5nIG9uIFB5dGhvbiB2
ZXJzaW9uCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNSk6Ci0gICAgICAgIHZpc2l0
X0NhbGwgPSB2aXNpdF9DYWxsXzM1Ci0gICAgZWxzZToKLSAgICAgICAgdmlzaXRfQ2FsbCA9IHZp
c2l0X0NhbGxfbGVnYWN5Ci0KLSAgICBkZWYgdmlzaXRfQXR0cmlidXRlKHNlbGYsIGF0dHIpOgot
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhdHRyLmN0eCwgYXN0LkxvYWQpOgotICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuZ2VuZXJpY192aXNpdChhdHRyKQotICAgICAgICB2YWx1ZSwgdmFsdWVf
ZXhwbCA9IHNlbGYudmlzaXQoYXR0ci52YWx1ZSkKLSAgICAgICAgcmVzID0gc2VsZi5hc3NpZ24o
YXN0LkF0dHJpYnV0ZSh2YWx1ZSwgYXR0ci5hdHRyLCBhc3QuTG9hZCgpKSkKLSAgICAgICAgcmVz
X2V4cGwgPSBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYuZGlzcGxheShyZXMpKQotICAgICAg
ICBwYXQgPSAiJXNcbnslcyA9ICVzLiVzXG59IgotICAgICAgICBleHBsID0gcGF0ICUgKHJlc19l
eHBsLCByZXNfZXhwbCwgdmFsdWVfZXhwbCwgYXR0ci5hdHRyKQotICAgICAgICByZXR1cm4gcmVz
LCBleHBsCi0KLSAgICBkZWYgdmlzaXRfQ29tcGFyZShzZWxmLCBjb21wKToKLSAgICAgICAgc2Vs
Zi5wdXNoX2Zvcm1hdF9jb250ZXh0KCkKLSAgICAgICAgbGVmdF9yZXMsIGxlZnRfZXhwbCA9IHNl
bGYudmlzaXQoY29tcC5sZWZ0KQotICAgICAgICBpZiBpc2luc3RhbmNlKGNvbXAubGVmdCwgKF9h
c3QuQ29tcGFyZSwgX2FzdC5Cb29sT3ApKToKLSAgICAgICAgICAgIGxlZnRfZXhwbCA9ICIoezB9
KSIuZm9ybWF0KGxlZnRfZXhwbCkKLSAgICAgICAgcmVzX3ZhcmlhYmxlcyA9IFtzZWxmLnZhcmlh
YmxlKCkgZm9yIGkgaW4gcmFuZ2UobGVuKGNvbXAub3BzKSldCi0gICAgICAgIGxvYWRfbmFtZXMg
PSBbYXN0Lk5hbWUodiwgYXN0LkxvYWQoKSkgZm9yIHYgaW4gcmVzX3ZhcmlhYmxlc10KLSAgICAg
ICAgc3RvcmVfbmFtZXMgPSBbYXN0Lk5hbWUodiwgYXN0LlN0b3JlKCkpIGZvciB2IGluIHJlc192
YXJpYWJsZXNdCi0gICAgICAgIGl0ID0gemlwKHJhbmdlKGxlbihjb21wLm9wcykpLCBjb21wLm9w
cywgY29tcC5jb21wYXJhdG9ycykKLSAgICAgICAgZXhwbHMgPSBbXQotICAgICAgICBzeW1zID0g
W10KLSAgICAgICAgcmVzdWx0cyA9IFtsZWZ0X3Jlc10KLSAgICAgICAgZm9yIGksIG9wLCBuZXh0
X29wZXJhbmQgaW4gaXQ6Ci0gICAgICAgICAgICBuZXh0X3JlcywgbmV4dF9leHBsID0gc2VsZi52
aXNpdChuZXh0X29wZXJhbmQpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5leHRfb3BlcmFu
ZCwgKF9hc3QuQ29tcGFyZSwgX2FzdC5Cb29sT3ApKToKLSAgICAgICAgICAgICAgICBuZXh0X2V4
cGwgPSAiKHswfSkiLmZvcm1hdChuZXh0X2V4cGwpCi0gICAgICAgICAgICByZXN1bHRzLmFwcGVu
ZChuZXh0X3JlcykKLSAgICAgICAgICAgIHN5bSA9IGJpbm9wX21hcFtvcC5fX2NsYXNzX19dCi0g
ICAgICAgICAgICBzeW1zLmFwcGVuZChhc3QuU3RyKHN5bSkpCi0gICAgICAgICAgICBleHBsID0g
IiVzICVzICVzIiAlIChsZWZ0X2V4cGwsIHN5bSwgbmV4dF9leHBsKQotICAgICAgICAgICAgZXhw
bHMuYXBwZW5kKGFzdC5TdHIoZXhwbCkpCi0gICAgICAgICAgICByZXNfZXhwciA9IGFzdC5Db21w
YXJlKGxlZnRfcmVzLCBbb3BdLCBbbmV4dF9yZXNdKQotICAgICAgICAgICAgc2VsZi5zdGF0ZW1l
bnRzLmFwcGVuZChhc3QuQXNzaWduKFtzdG9yZV9uYW1lc1tpXV0sIHJlc19leHByKSkKLSAgICAg
ICAgICAgIGxlZnRfcmVzLCBsZWZ0X2V4cGwgPSBuZXh0X3JlcywgbmV4dF9leHBsCi0gICAgICAg
ICMgVXNlIHB5dGVzdC5hc3NlcnRpb24udXRpbC5fcmVwcmNvbXBhcmUgaWYgdGhhdCdzIGF2YWls
YWJsZS4KLSAgICAgICAgZXhwbF9jYWxsID0gc2VsZi5oZWxwZXIoImNhbGxfcmVwcmNvbXBhcmUi
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3QuVHVwbGUoc3ltcywgYXN0Lkxv
YWQoKSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzdC5UdXBsZShsb2FkX25h
bWVzLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXN0LlR1
cGxlKGV4cGxzLCBhc3QuTG9hZCgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
YXN0LlR1cGxlKHJlc3VsdHMsIGFzdC5Mb2FkKCkpKQotICAgICAgICBpZiBsZW4oY29tcC5vcHMp
ID4gMToKLSAgICAgICAgICAgIHJlcyA9IGFzdC5Cb29sT3AoYXN0LkFuZCgpLCBsb2FkX25hbWVz
KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmVzID0gbG9hZF9uYW1lc1swXQotICAgICAg
ICByZXR1cm4gcmVzLCBzZWxmLmV4cGxhbmF0aW9uX3BhcmFtKHNlbGYucG9wX2Zvcm1hdF9jb250
ZXh0KGV4cGxfY2FsbCkpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlv
bi90cnVuY2F0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3RydW5jYXRlLnB5
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWQxMmUyZTVhOTYwY2E2MGQ5OTg2OGUx
OTg5N2EyN2RkYTZkODMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3RydW5jYXRlLnB5CisrKyAvZGV2
L251bGwKQEAgLTEsMTAyICswLDAgQEAKLSIiIgotVXRpbGl0aWVzIGZvciB0cnVuY2F0aW5nIGFz
c2VydGlvbiBvdXRwdXQuCi0KLUN1cnJlbnQgZGVmYXVsdCBiZWhhdmlvdXIgaXMgdG8gdHJ1bmNh
dGUgYXNzZXJ0aW9uIGV4cGxhbmF0aW9ucyBhdAotfjggdGVybWluYWwgbGluZXMsIHVubGVzcyBy
dW5uaW5nIGluICItdnYiIG1vZGUgb3IgcnVubmluZyBvbiBDSS4KLSIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1w
b3J0IG9zCi0KLWltcG9ydCBzaXgKLQotCi1ERUZBVUxUX01BWF9MSU5FUyA9IDgKLURFRkFVTFRf
TUFYX0NIQVJTID0gOCAqIDgwCi1VU0FHRV9NU0cgPSAidXNlICctdnYnIHRvIHNob3ciCi0KLQot
ZGVmIHRydW5jYXRlX2lmX3JlcXVpcmVkKGV4cGxhbmF0aW9uLCBpdGVtLCBtYXhfbGVuZ3RoPU5v
bmUpOgotICAgICIiIgotICAgIFRydW5jYXRlIHRoaXMgYXNzZXJ0aW9uIGV4cGxhbmF0aW9uIGlm
IHRoZSBnaXZlbiB0ZXN0IGl0ZW0gaXMgZWxpZ2libGUuCi0gICAgIiIiCi0gICAgaWYgX3Nob3Vs
ZF90cnVuY2F0ZV9pdGVtKGl0ZW0pOgotICAgICAgICByZXR1cm4gX3RydW5jYXRlX2V4cGxhbmF0
aW9uKGV4cGxhbmF0aW9uKQotICAgIHJldHVybiBleHBsYW5hdGlvbgotCi0KLWRlZiBfc2hvdWxk
X3RydW5jYXRlX2l0ZW0oaXRlbSk6Ci0gICAgIiIiCi0gICAgV2hldGhlciBvciBub3QgdGhpcyB0
ZXN0IGl0ZW0gaXMgZWxpZ2libGUgZm9yIHRydW5jYXRpb24uCi0gICAgIiIiCi0gICAgdmVyYm9z
ZSA9IGl0ZW0uY29uZmlnLm9wdGlvbi52ZXJib3NlCi0gICAgcmV0dXJuIHZlcmJvc2UgPCAyIGFu
ZCBub3QgX3J1bm5pbmdfb25fY2koKQotCi0KLWRlZiBfcnVubmluZ19vbl9jaSgpOgotICAgICIi
IkNoZWNrIGlmIHdlJ3JlIGN1cnJlbnRseSBydW5uaW5nIG9uIGEgQ0kgc3lzdGVtLiIiIgotICAg
IGVudl92YXJzID0gWydDSScsICdCVUlMRF9OVU1CRVInXQotICAgIHJldHVybiBhbnkodmFyIGlu
IG9zLmVudmlyb24gZm9yIHZhciBpbiBlbnZfdmFycykKLQotCi1kZWYgX3RydW5jYXRlX2V4cGxh
bmF0aW9uKGlucHV0X2xpbmVzLCBtYXhfbGluZXM9Tm9uZSwgbWF4X2NoYXJzPU5vbmUpOgotICAg
ICIiIgotICAgIFRydW5jYXRlIGdpdmVuIGxpc3Qgb2Ygc3RyaW5ncyB0aGF0IG1ha2VzIHVwIHRo
ZSBhc3NlcnRpb24gZXhwbGFuYXRpb24uCi0KLSAgICBUcnVuY2F0ZXMgdG8gZWl0aGVyIDggbGlu
ZXMsIG9yIDY0MCBjaGFyYWN0ZXJzIC0gd2hpY2hldmVyIHRoZSBpbnB1dCByZWFjaGVzCi0gICAg
Zmlyc3QuIFRoZSByZW1haW5pbmcgbGluZXMgd2lsbCBiZSByZXBsYWNlZCBieSBhIHVzYWdlIG1l
c3NhZ2UuCi0gICAgIiIiCi0KLSAgICBpZiBtYXhfbGluZXMgaXMgTm9uZToKLSAgICAgICAgbWF4
X2xpbmVzID0gREVGQVVMVF9NQVhfTElORVMKLSAgICBpZiBtYXhfY2hhcnMgaXMgTm9uZToKLSAg
ICAgICAgbWF4X2NoYXJzID0gREVGQVVMVF9NQVhfQ0hBUlMKLQotICAgICMgQ2hlY2sgaWYgdHJ1
bmNhdGlvbiByZXF1aXJlZAotICAgIGlucHV0X2NoYXJfY291bnQgPSBsZW4oIiIuam9pbihpbnB1
dF9saW5lcykpCi0gICAgaWYgbGVuKGlucHV0X2xpbmVzKSA8PSBtYXhfbGluZXMgYW5kIGlucHV0
X2NoYXJfY291bnQgPD0gbWF4X2NoYXJzOgotICAgICAgICByZXR1cm4gaW5wdXRfbGluZXMKLQot
ICAgICMgVHJ1bmNhdGUgZmlyc3QgdG8gbWF4X2xpbmVzLCBhbmQgdGhlbiB0cnVuY2F0ZSB0byBt
YXhfY2hhcnMgaWYgbWF4X2NoYXJzCi0gICAgIyBpcyBleGNlZWRlZC4KLSAgICB0cnVuY2F0ZWRf
ZXhwbGFuYXRpb24gPSBpbnB1dF9saW5lc1s6bWF4X2xpbmVzXQotICAgIHRydW5jYXRlZF9leHBs
YW5hdGlvbiA9IF90cnVuY2F0ZV9ieV9jaGFyX2NvdW50KHRydW5jYXRlZF9leHBsYW5hdGlvbiwg
bWF4X2NoYXJzKQotCi0gICAgIyBBZGQgZWxsaXBzaXMgdG8gZmluYWwgbGluZQotICAgIHRydW5j
YXRlZF9leHBsYW5hdGlvblstMV0gPSB0cnVuY2F0ZWRfZXhwbGFuYXRpb25bLTFdICsgIi4uLiIK
LQotICAgICMgQXBwZW5kIHVzZWZ1bCBtZXNzYWdlIHRvIGV4cGxhbmF0aW9uCi0gICAgdHJ1bmNh
dGVkX2xpbmVfY291bnQgPSBsZW4oaW5wdXRfbGluZXMpIC0gbGVuKHRydW5jYXRlZF9leHBsYW5h
dGlvbikKLSAgICB0cnVuY2F0ZWRfbGluZV9jb3VudCArPSAxICAjIEFjY291bnQgZm9yIHRoZSBw
YXJ0LXRydW5jYXRlZCBmaW5hbCBsaW5lCi0gICAgbXNnID0gJy4uLkZ1bGwgb3V0cHV0IHRydW5j
YXRlZCcKLSAgICBpZiB0cnVuY2F0ZWRfbGluZV9jb3VudCA9PSAxOgotICAgICAgICBtc2cgKz0g
JyAoezB9IGxpbmUgaGlkZGVuKScuZm9ybWF0KHRydW5jYXRlZF9saW5lX2NvdW50KQotICAgIGVs
c2U6Ci0gICAgICAgIG1zZyArPSAnICh7MH0gbGluZXMgaGlkZGVuKScuZm9ybWF0KHRydW5jYXRl
ZF9saW5lX2NvdW50KQotICAgIG1zZyArPSAiLCB7MH0iIC5mb3JtYXQoVVNBR0VfTVNHKQotICAg
IHRydW5jYXRlZF9leHBsYW5hdGlvbi5leHRlbmQoWwotICAgICAgICBzaXgudGV4dF90eXBlKCIi
KSwKLSAgICAgICAgc2l4LnRleHRfdHlwZShtc2cpLAotICAgIF0pCi0gICAgcmV0dXJuIHRydW5j
YXRlZF9leHBsYW5hdGlvbgotCi0KLWRlZiBfdHJ1bmNhdGVfYnlfY2hhcl9jb3VudChpbnB1dF9s
aW5lcywgbWF4X2NoYXJzKToKLSAgICAjIENoZWNrIGlmIHRydW5jYXRpb24gcmVxdWlyZWQKLSAg
ICBpZiBsZW4oIiIuam9pbihpbnB1dF9saW5lcykpIDw9IG1heF9jaGFyczoKLSAgICAgICAgcmV0
dXJuIGlucHV0X2xpbmVzCi0KLSAgICAjIEZpbmQgcG9pbnQgYXQgd2hpY2ggaW5wdXQgbGVuZ3Ro
IGV4Y2VlZHMgdG90YWwgYWxsb3dlZCBsZW5ndGgKLSAgICBpdGVyYXRlZF9jaGFyX2NvdW50ID0g
MAotICAgIGZvciBpdGVyYXRlZF9pbmRleCwgaW5wdXRfbGluZSBpbiBlbnVtZXJhdGUoaW5wdXRf
bGluZXMpOgotICAgICAgICBpZiBpdGVyYXRlZF9jaGFyX2NvdW50ICsgbGVuKGlucHV0X2xpbmUp
ID4gbWF4X2NoYXJzOgotICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgaXRlcmF0ZWRfY2hhcl9j
b3VudCArPSBsZW4oaW5wdXRfbGluZSkKLQotICAgICMgQ3JlYXRlIHRydW5jYXRlZCBleHBsYW5h
dGlvbiB3aXRoIG1vZGlmaWVkIGZpbmFsIGxpbmUKLSAgICB0cnVuY2F0ZWRfcmVzdWx0ID0gaW5w
dXRfbGluZXNbOml0ZXJhdGVkX2luZGV4XQotICAgIGZpbmFsX2xpbmUgPSBpbnB1dF9saW5lc1tp
dGVyYXRlZF9pbmRleF0KLSAgICBpZiBmaW5hbF9saW5lOgotICAgICAgICBmaW5hbF9saW5lX3Ry
dW5jYXRlX3BvaW50ID0gbWF4X2NoYXJzIC0gaXRlcmF0ZWRfY2hhcl9jb3VudAotICAgICAgICBm
aW5hbF9saW5lID0gZmluYWxfbGluZVs6ZmluYWxfbGluZV90cnVuY2F0ZV9wb2ludF0KLSAgICB0
cnVuY2F0ZWRfcmVzdWx0LmFwcGVuZChmaW5hbF9saW5lKQotICAgIHJldHVybiB0cnVuY2F0ZWRf
cmVzdWx0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vdXRpbC5weQpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNTExZDk4ZWYxZmRmMTk2NDNkMmFjNmI4ODY0OGU4OGM2N2JkOWRiMC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzA4ICswLDAg
QEAKLSIiIlV0aWxpdGllcyBmb3IgYXNzZXJ0aW9uIGRlYnVnZ2luZyIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotaW1w
b3J0IHBwcmludAotCi1pbXBvcnQgX3B5dGVzdC5fY29kZQotaW1wb3J0IHB5Ci1pbXBvcnQgc2l4
Ci10cnk6Ci0gICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgU2VxdWVuY2UKLWV4Y2VwdCBJbXBv
cnRFcnJvcjoKLSAgICBTZXF1ZW5jZSA9IGxpc3QKLQotCi11ID0gc2l4LnRleHRfdHlwZQotCi0j
IFRoZSBfcmVwcmNvbXBhcmUgYXR0cmlidXRlIG9uIHRoZSB1dGlsIG1vZHVsZSBpcyB1c2VkIGJ5
IHRoZSBuZXcgYXNzZXJ0aW9uCi0jIGludGVycHJldGF0aW9uIGNvZGUgYW5kIGFzc2VydGlvbiBy
ZXdyaXRlciB0byBkZXRlY3QgdGhpcyBwbHVnaW4gd2FzCi0jIGxvYWRlZCBhbmQgaW4gdHVybiBj
YWxsIHRoZSBob29rcyBkZWZpbmVkIGhlcmUgYXMgcGFydCBvZiB0aGUKLSMgRGVidWdJbnRlcnBy
ZXRlci4KLV9yZXByY29tcGFyZSA9IE5vbmUKLQotCi0jIHRoZSByZS1lbmNvZGluZyBpcyBuZWVk
ZWQgZm9yIHB5dGhvbjIgcmVwcgotIyB3aXRoIG5vbi1hc2NpaSBjaGFyYWN0ZXJzIChzZWUgaXNz
dWUgODc3IGFuZCAxMzc5KQotZGVmIGVjdShzKToKLSAgICB0cnk6Ci0gICAgICAgIHJldHVybiB1
KHMsICd1dGYtOCcsICdyZXBsYWNlJykKLSAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICBy
ZXR1cm4gcwotCi0KLWRlZiBmb3JtYXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pOgotICAgICIi
IlRoaXMgZm9ybWF0cyBhbiBleHBsYW5hdGlvbgotCi0gICAgTm9ybWFsbHkgYWxsIGVtYmVkZGVk
IG5ld2xpbmVzIGFyZSBlc2NhcGVkLCBob3dldmVyIHRoZXJlIGFyZQotICAgIHRocmVlIGV4Y2Vw
dGlvbnM6IFxueywgXG59IGFuZCBcbn4uICBUaGUgZmlyc3QgdHdvIGFyZSBpbnRlbmRlZAotICAg
IGNvdmVyIG5lc3RlZCBleHBsYW5hdGlvbnMsIHNlZSBmdW5jdGlvbiBhbmQgYXR0cmlidXRlIGV4
cGxhbmF0aW9ucwotICAgIGZvciBleGFtcGxlcyAoLnZpc2l0X0NhbGwoKSwgdmlzaXRfQXR0cmli
dXRlKCkpLiAgVGhlIGxhc3Qgb25lIGlzCi0gICAgZm9yIHdoZW4gb25lIGV4cGxhbmF0aW9uIG5l
ZWRzIHRvIHNwYW4gbXVsdGlwbGUgbGluZXMsIGUuZy4gd2hlbgotICAgIGRpc3BsYXlpbmcgZGlm
ZnMuCi0gICAgIiIiCi0gICAgZXhwbGFuYXRpb24gPSBlY3UoZXhwbGFuYXRpb24pCi0gICAgbGlu
ZXMgPSBfc3BsaXRfZXhwbGFuYXRpb24oZXhwbGFuYXRpb24pCi0gICAgcmVzdWx0ID0gX2Zvcm1h
dF9saW5lcyhsaW5lcykKLSAgICByZXR1cm4gdSgnXG4nKS5qb2luKHJlc3VsdCkKLQotCi1kZWYg
X3NwbGl0X2V4cGxhbmF0aW9uKGV4cGxhbmF0aW9uKToKLSAgICAiIiJSZXR1cm4gYSBsaXN0IG9m
IGluZGl2aWR1YWwgbGluZXMgaW4gdGhlIGV4cGxhbmF0aW9uCi0KLSAgICBUaGlzIHdpbGwgcmV0
dXJuIGEgbGlzdCBvZiBsaW5lcyBzcGxpdCBvbiAnXG57JywgJ1xufScgYW5kICdcbn4nLgotICAg
IEFueSBvdGhlciBuZXdsaW5lcyB3aWxsIGJlIGVzY2FwZWQgYW5kIGFwcGVhciBpbiB0aGUgbGlu
ZSBhcyB0aGUKLSAgICBsaXRlcmFsICdcbicgY2hhcmFjdGVycy4KLSAgICAiIiIKLSAgICByYXdf
bGluZXMgPSAoZXhwbGFuYXRpb24gb3IgdSgnJykpLnNwbGl0KCdcbicpCi0gICAgbGluZXMgPSBb
cmF3X2xpbmVzWzBdXQotICAgIGZvciB2YWx1ZXMgaW4gcmF3X2xpbmVzWzE6XToKLSAgICAgICAg
aWYgdmFsdWVzIGFuZCB2YWx1ZXNbMF0gaW4gWyd7JywgJ30nLCAnficsICc+J106Ci0gICAgICAg
ICAgICBsaW5lcy5hcHBlbmQodmFsdWVzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbGlu
ZXNbLTFdICs9ICdcXG4nICsgdmFsdWVzCi0gICAgcmV0dXJuIGxpbmVzCi0KLQotZGVmIF9mb3Jt
YXRfbGluZXMobGluZXMpOgotICAgICIiIkZvcm1hdCB0aGUgaW5kaXZpZHVhbCBsaW5lcwotCi0g
ICAgVGhpcyB3aWxsIHJlcGxhY2UgdGhlICd7JywgJ30nIGFuZCAnficgY2hhcmFjdGVycyBvZiBv
dXIgbWluaQotICAgIGZvcm1hdHRpbmcgbGFuZ3VhZ2Ugd2l0aCB0aGUgcHJvcGVyICd3aGVyZSAu
Li4nLCAnYW5kIC4uLicgYW5kICcgKwotICAgIC4uLicgdGV4dCwgdGFraW5nIGNhcmUgb2YgaW5k
ZW50YXRpb24gYWxvbmcgdGhlIHdheS4KLQotICAgIFJldHVybiBhIGxpc3Qgb2YgZm9ybWF0dGVk
IGxpbmVzLgotICAgICIiIgotICAgIHJlc3VsdCA9IGxpbmVzWzoxXQotICAgIHN0YWNrID0gWzBd
Ci0gICAgc3RhY2tjbnQgPSBbMF0KLSAgICBmb3IgbGluZSBpbiBsaW5lc1sxOl06Ci0gICAgICAg
IGlmIGxpbmUuc3RhcnRzd2l0aCgneycpOgotICAgICAgICAgICAgaWYgc3RhY2tjbnRbLTFdOgot
ICAgICAgICAgICAgICAgIHMgPSB1KCdhbmQgICAnKQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBzID0gdSgnd2hlcmUgJykKLSAgICAgICAgICAgIHN0YWNrLmFwcGVuZChsZW4o
cmVzdWx0KSkKLSAgICAgICAgICAgIHN0YWNrY250Wy0xXSArPSAxCi0gICAgICAgICAgICBzdGFj
a2NudC5hcHBlbmQoMCkKLSAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodSgnICsnKSArIHUoJyAg
JykgKiAobGVuKHN0YWNrKSAtIDEpICsgcyArIGxpbmVbMTpdKQotICAgICAgICBlbGlmIGxpbmUu
c3RhcnRzd2l0aCgnfScpOgotICAgICAgICAgICAgc3RhY2sucG9wKCkKLSAgICAgICAgICAgIHN0
YWNrY250LnBvcCgpCi0gICAgICAgICAgICByZXN1bHRbc3RhY2tbLTFdXSArPSBsaW5lWzE6XQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgYXNzZXJ0IGxpbmVbMF0gaW4gWyd+JywgJz4nXQot
ICAgICAgICAgICAgc3RhY2tbLTFdICs9IDEKLSAgICAgICAgICAgIGluZGVudCA9IGxlbihzdGFj
aykgaWYgbGluZS5zdGFydHN3aXRoKCd+JykgZWxzZSBsZW4oc3RhY2spIC0gMQotICAgICAgICAg
ICAgcmVzdWx0LmFwcGVuZCh1KCcgICcpICogaW5kZW50ICsgbGluZVsxOl0pCi0gICAgYXNzZXJ0
IGxlbihzdGFjaykgPT0gMQotICAgIHJldHVybiByZXN1bHQKLQotCi0jIFByb3ZpZGUgYmFzZXN0
cmluZyBpbiBweXRob24zCi10cnk6Ci0gICAgYmFzZXN0cmluZyA9IGJhc2VzdHJpbmcKLWV4Y2Vw
dCBOYW1lRXJyb3I6Ci0gICAgYmFzZXN0cmluZyA9IHN0cgotCi0KLWRlZiBhc3NlcnRyZXByX2Nv
bXBhcmUoY29uZmlnLCBvcCwgbGVmdCwgcmlnaHQpOgotICAgICIiIlJldHVybiBzcGVjaWFsaXNl
ZCBleHBsYW5hdGlvbnMgZm9yIHNvbWUgb3BlcmF0b3JzL29wZXJhbmRzIiIiCi0gICAgd2lkdGgg
PSA4MCAtIDE1IC0gbGVuKG9wKSAtIDIgICMgMTUgY2hhcnMgaW5kZW50YXRpb24sIDEgc3BhY2Ug
YXJvdW5kIG9wCi0gICAgbGVmdF9yZXByID0gcHkuaW8uc2FmZXJlcHIobGVmdCwgbWF4c2l6ZT1p
bnQod2lkdGggLy8gMikpCi0gICAgcmlnaHRfcmVwciA9IHB5LmlvLnNhZmVyZXByKHJpZ2h0LCBt
YXhzaXplPXdpZHRoIC0gbGVuKGxlZnRfcmVwcikpCi0KLSAgICBzdW1tYXJ5ID0gdSgnJXMgJXMg
JXMnKSAlIChlY3UobGVmdF9yZXByKSwgb3AsIGVjdShyaWdodF9yZXByKSkKLQotICAgIGRlZiBp
c3NlcXVlbmNlKHgpOgotICAgICAgICByZXR1cm4gKGlzaW5zdGFuY2UoeCwgKGxpc3QsIHR1cGxl
LCBTZXF1ZW5jZSkpIGFuZCBub3QgaXNpbnN0YW5jZSh4LCBiYXNlc3RyaW5nKSkKLQotICAgIGRl
ZiBpc3RleHQoeCk6Ci0gICAgICAgIHJldHVybiBpc2luc3RhbmNlKHgsIGJhc2VzdHJpbmcpCi0K
LSAgICBkZWYgaXNkaWN0KHgpOgotICAgICAgICByZXR1cm4gaXNpbnN0YW5jZSh4LCBkaWN0KQot
Ci0gICAgZGVmIGlzc2V0KHgpOgotICAgICAgICByZXR1cm4gaXNpbnN0YW5jZSh4LCAoc2V0LCBm
cm96ZW5zZXQpKQotCi0gICAgZGVmIGlzaXRlcmFibGUob2JqKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgaXRlcihvYmopCi0gICAgICAgICAgICByZXR1cm4gbm90IGlzdGV4dChvYmopCi0g
ICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
IHZlcmJvc2UgPSBjb25maWcuZ2V0b3B0aW9uKCd2ZXJib3NlJykKLSAgICBleHBsYW5hdGlvbiA9
IE5vbmUKLSAgICB0cnk6Ci0gICAgICAgIGlmIG9wID09ICc9PSc6Ci0gICAgICAgICAgICBpZiBp
c3RleHQobGVmdCkgYW5kIGlzdGV4dChyaWdodCk6Ci0gICAgICAgICAgICAgICAgZXhwbGFuYXRp
b24gPSBfZGlmZl90ZXh0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICBpZiBpc3NlcXVlbmNlKGxlZnQpIGFuZCBpc3NlcXVlbmNlKHJpZ2h0
KToKLSAgICAgICAgICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBfY29tcGFyZV9lcV9zZXF1ZW5j
ZShsZWZ0LCByaWdodCwgdmVyYm9zZSkKLSAgICAgICAgICAgICAgICBlbGlmIGlzc2V0KGxlZnQp
IGFuZCBpc3NldChyaWdodCk6Ci0gICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9uID0gX2Nv
bXBhcmVfZXFfc2V0KGxlZnQsIHJpZ2h0LCB2ZXJib3NlKQotICAgICAgICAgICAgICAgIGVsaWYg
aXNkaWN0KGxlZnQpIGFuZCBpc2RpY3QocmlnaHQpOgotICAgICAgICAgICAgICAgICAgICBleHBs
YW5hdGlvbiA9IF9jb21wYXJlX2VxX2RpY3QobGVmdCwgcmlnaHQsIHZlcmJvc2UpCi0gICAgICAg
ICAgICAgICAgaWYgaXNpdGVyYWJsZShsZWZ0KSBhbmQgaXNpdGVyYWJsZShyaWdodCk6Ci0gICAg
ICAgICAgICAgICAgICAgIGV4cGwgPSBfY29tcGFyZV9lcV9pdGVyYWJsZShsZWZ0LCByaWdodCwg
dmVyYm9zZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgZXhwbGFuYXRpb24gaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBleHBsYW5hdGlvbi5leHRlbmQoZXhwbCkKLSAgICAg
ICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9u
ID0gZXhwbAotICAgICAgICBlbGlmIG9wID09ICdub3QgaW4nOgotICAgICAgICAgICAgaWYgaXN0
ZXh0KGxlZnQpIGFuZCBpc3RleHQocmlnaHQpOgotICAgICAgICAgICAgICAgIGV4cGxhbmF0aW9u
ID0gX25vdGluX3RleHQobGVmdCwgcmlnaHQsIHZlcmJvc2UpCi0gICAgZXhjZXB0IEV4Y2VwdGlv
bjoKLSAgICAgICAgZXhwbGFuYXRpb24gPSBbCi0gICAgICAgICAgICB1KCcocHl0ZXN0X2Fzc2Vy
dGlvbiBwbHVnaW46IHJlcHJlc2VudGF0aW9uIG9mIGRldGFpbHMgZmFpbGVkLiAgJwotICAgICAg
ICAgICAgICAnUHJvYmFibHkgYW4gb2JqZWN0IGhhcyBhIGZhdWx0eSBfX3JlcHJfXy4pJyksCi0g
ICAgICAgICAgICB1KF9weXRlc3QuX2NvZGUuRXhjZXB0aW9uSW5mbygpKV0KLQotICAgIGlmIG5v
dCBleHBsYW5hdGlvbjoKLSAgICAgICAgcmV0dXJuIE5vbmUKLQotICAgIHJldHVybiBbc3VtbWFy
eV0gKyBleHBsYW5hdGlvbgotCi0KLWRlZiBfZGlmZl90ZXh0KGxlZnQsIHJpZ2h0LCB2ZXJib3Nl
PUZhbHNlKToKLSAgICAiIiJSZXR1cm4gdGhlIGV4cGxhbmF0aW9uIGZvciB0aGUgZGlmZiBiZXR3
ZWVuIHRleHQgb3IgYnl0ZXMKLQotICAgIFVubGVzcyAtLXZlcmJvc2UgaXMgdXNlZCB0aGlzIHdp
bGwgc2tpcCBsZWFkaW5nIGFuZCB0cmFpbGluZwotICAgIGNoYXJhY3RlcnMgd2hpY2ggYXJlIGlk
ZW50aWNhbCB0byBrZWVwIHRoZSBkaWZmIG1pbmltYWwuCi0KLSAgICBJZiB0aGUgaW5wdXQgYXJl
IGJ5dGVzIHRoZXkgd2lsbCBiZSBzYWZlbHkgY29udmVydGVkIHRvIHRleHQuCi0gICAgIiIiCi0g
ICAgZnJvbSBkaWZmbGliIGltcG9ydCBuZGlmZgotICAgIGV4cGxhbmF0aW9uID0gW10KLSAgICBp
ZiBpc2luc3RhbmNlKGxlZnQsIHNpeC5iaW5hcnlfdHlwZSk6Ci0gICAgICAgIGxlZnQgPSB1KHJl
cHIobGVmdClbMTotMV0pLnJlcGxhY2UocidcbicsICdcbicpCi0gICAgaWYgaXNpbnN0YW5jZShy
aWdodCwgc2l4LmJpbmFyeV90eXBlKToKLSAgICAgICAgcmlnaHQgPSB1KHJlcHIocmlnaHQpWzE6
LTFdKS5yZXBsYWNlKHInXG4nLCAnXG4nKQotICAgIGlmIG5vdCB2ZXJib3NlOgotICAgICAgICBp
ID0gMCAgIyBqdXN0IGluIGNhc2UgbGVmdCBvciByaWdodCBoYXMgemVybyBsZW5ndGgKLSAgICAg
ICAgZm9yIGkgaW4gcmFuZ2UobWluKGxlbihsZWZ0KSwgbGVuKHJpZ2h0KSkpOgotICAgICAgICAg
ICAgaWYgbGVmdFtpXSAhPSByaWdodFtpXToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAg
ICBpZiBpID4gNDI6Ci0gICAgICAgICAgICBpIC09IDEwICAgICAgICAgICAgICAgICAjIFByb3Zp
ZGUgc29tZSBjb250ZXh0Ci0gICAgICAgICAgICBleHBsYW5hdGlvbiA9IFt1KCdTa2lwcGluZyAl
cyBpZGVudGljYWwgbGVhZGluZyAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGFy
YWN0ZXJzIGluIGRpZmYsIHVzZSAtdiB0byBzaG93JykgJSBpXQotICAgICAgICAgICAgbGVmdCA9
IGxlZnRbaTpdCi0gICAgICAgICAgICByaWdodCA9IHJpZ2h0W2k6XQotICAgICAgICBpZiBsZW4o
bGVmdCkgPT0gbGVuKHJpZ2h0KToKLSAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihsZWZ0
KSk6Ci0gICAgICAgICAgICAgICAgaWYgbGVmdFstaV0gIT0gcmlnaHRbLWldOgotICAgICAgICAg
ICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgaSA+IDQyOgotICAgICAgICAgICAgICAg
IGkgLT0gMTAgICAgICMgUHJvdmlkZSBzb21lIGNvbnRleHQKLSAgICAgICAgICAgICAgICBleHBs
YW5hdGlvbiArPSBbdSgnU2tpcHBpbmcgJXMgaWRlbnRpY2FsIHRyYWlsaW5nICcKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBpbiBkaWZmLCB1c2UgLXYgdG8g
c2hvdycpICUgaV0KLSAgICAgICAgICAgICAgICBsZWZ0ID0gbGVmdFs6LWldCi0gICAgICAgICAg
ICAgICAgcmlnaHQgPSByaWdodFs6LWldCi0gICAga2VlcGVuZHMgPSBUcnVlCi0gICAgZXhwbGFu
YXRpb24gKz0gW2xpbmUuc3RyaXAoJ1xuJykKLSAgICAgICAgICAgICAgICAgICAgZm9yIGxpbmUg
aW4gbmRpZmYobGVmdC5zcGxpdGxpbmVzKGtlZXBlbmRzKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcmlnaHQuc3BsaXRsaW5lcyhrZWVwZW5kcykpXQotICAgIHJldHVy
biBleHBsYW5hdGlvbgotCi0KLWRlZiBfY29tcGFyZV9lcV9pdGVyYWJsZShsZWZ0LCByaWdodCwg
dmVyYm9zZT1GYWxzZSk6Ci0gICAgaWYgbm90IHZlcmJvc2U6Ci0gICAgICAgIHJldHVybiBbdSgn
VXNlIC12IHRvIGdldCB0aGUgZnVsbCBkaWZmJyldCi0gICAgIyBkeW5hbWljIGltcG9ydCB0byBz
cGVlZHVwIHB5dGVzdAotICAgIGltcG9ydCBkaWZmbGliCi0KLSAgICB0cnk6Ci0gICAgICAgIGxl
ZnRfZm9ybWF0dGluZyA9IHBwcmludC5wZm9ybWF0KGxlZnQpLnNwbGl0bGluZXMoKQotICAgICAg
ICByaWdodF9mb3JtYXR0aW5nID0gcHByaW50LnBmb3JtYXQocmlnaHQpLnNwbGl0bGluZXMoKQot
ICAgICAgICBleHBsYW5hdGlvbiA9IFt1KCdGdWxsIGRpZmY6JyldCi0gICAgZXhjZXB0IEV4Y2Vw
dGlvbjoKLSAgICAgICAgIyBoYWNrOiBQcmV0dHlQcmludGVyLnBmb3JtYXQoKSBpbiBweXRob24g
MiBmYWlscyB3aGVuIGZvcm1hdHRpbmcgaXRlbXMgdGhhdCBjYW4ndCBiZSBzb3J0ZWQoKSwgaWUs
IGNhbGxpbmcKLSAgICAgICAgIyBzb3J0ZWQoKSBvbiBhIGxpc3Qgd291bGQgcmFpc2UuIFNlZSBp
c3N1ZSAjNzE4LgotICAgICAgICAjIEFzIGEgd29ya2Fyb3VuZCwgdGhlIGZ1bGwgZGlmZiBpcyBn
ZW5lcmF0ZWQgYnkgdXNpbmcgdGhlIHJlcHIoKSBzdHJpbmcgb2YgZWFjaCBpdGVtIG9mIGVhY2gg
Y29udGFpbmVyLgotICAgICAgICBsZWZ0X2Zvcm1hdHRpbmcgPSBzb3J0ZWQocmVwcih4KSBmb3Ig
eCBpbiBsZWZ0KQotICAgICAgICByaWdodF9mb3JtYXR0aW5nID0gc29ydGVkKHJlcHIoeCkgZm9y
IHggaW4gcmlnaHQpCi0gICAgICAgIGV4cGxhbmF0aW9uID0gW3UoJ0Z1bGwgZGlmZiAoZmFsbGJh
Y2sgdG8gY2FsbGluZyByZXByIG9uIGVhY2ggaXRlbSk6JyldCi0gICAgZXhwbGFuYXRpb24uZXh0
ZW5kKGxpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiBkaWZmbGliLm5kaWZmKGxlZnRfZm9ybWF0dGlu
ZywgcmlnaHRfZm9ybWF0dGluZykpCi0gICAgcmV0dXJuIGV4cGxhbmF0aW9uCi0KLQotZGVmIF9j
b21wYXJlX2VxX3NlcXVlbmNlKGxlZnQsIHJpZ2h0LCB2ZXJib3NlPUZhbHNlKToKLSAgICBleHBs
YW5hdGlvbiA9IFtdCi0gICAgZm9yIGkgaW4gcmFuZ2UobWluKGxlbihsZWZ0KSwgbGVuKHJpZ2h0
KSkpOgotICAgICAgICBpZiBsZWZ0W2ldICE9IHJpZ2h0W2ldOgotICAgICAgICAgICAgZXhwbGFu
YXRpb24gKz0gW3UoJ0F0IGluZGV4ICVzIGRpZmY6ICVyICE9ICVyJykKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAlIChpLCBsZWZ0W2ldLCByaWdodFtpXSldCi0gICAgICAgICAgICBicmVh
awotICAgIGlmIGxlbihsZWZ0KSA+IGxlbihyaWdodCk6Ci0gICAgICAgIGV4cGxhbmF0aW9uICs9
IFt1KCdMZWZ0IGNvbnRhaW5zIG1vcmUgaXRlbXMsIGZpcnN0IGV4dHJhIGl0ZW06ICVzJykKLSAg
ICAgICAgICAgICAgICAgICAgICAgICUgcHkuaW8uc2FmZXJlcHIobGVmdFtsZW4ocmlnaHQpXSwp
XQotICAgIGVsaWYgbGVuKGxlZnQpIDwgbGVuKHJpZ2h0KToKLSAgICAgICAgZXhwbGFuYXRpb24g
Kz0gWwotICAgICAgICAgICAgdSgnUmlnaHQgY29udGFpbnMgbW9yZSBpdGVtcywgZmlyc3QgZXh0
cmEgaXRlbTogJXMnKSAlCi0gICAgICAgICAgICBweS5pby5zYWZlcmVwcihyaWdodFtsZW4obGVm
dCldLCldCi0gICAgcmV0dXJuIGV4cGxhbmF0aW9uCi0KLQotZGVmIF9jb21wYXJlX2VxX3NldChs
ZWZ0LCByaWdodCwgdmVyYm9zZT1GYWxzZSk6Ci0gICAgZXhwbGFuYXRpb24gPSBbXQotICAgIGRp
ZmZfbGVmdCA9IGxlZnQgLSByaWdodAotICAgIGRpZmZfcmlnaHQgPSByaWdodCAtIGxlZnQKLSAg
ICBpZiBkaWZmX2xlZnQ6Ci0gICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZCh1KCdFeHRyYSBpdGVt
cyBpbiB0aGUgbGVmdCBzZXQ6JykpCi0gICAgICAgIGZvciBpdGVtIGluIGRpZmZfbGVmdDoKLSAg
ICAgICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZChweS5pby5zYWZlcmVwcihpdGVtKSkKLSAgICBp
ZiBkaWZmX3JpZ2h0OgotICAgICAgICBleHBsYW5hdGlvbi5hcHBlbmQodSgnRXh0cmEgaXRlbXMg
aW4gdGhlIHJpZ2h0IHNldDonKSkKLSAgICAgICAgZm9yIGl0ZW0gaW4gZGlmZl9yaWdodDoKLSAg
ICAgICAgICAgIGV4cGxhbmF0aW9uLmFwcGVuZChweS5pby5zYWZlcmVwcihpdGVtKSkKLSAgICBy
ZXR1cm4gZXhwbGFuYXRpb24KLQotCi1kZWYgX2NvbXBhcmVfZXFfZGljdChsZWZ0LCByaWdodCwg
dmVyYm9zZT1GYWxzZSk6Ci0gICAgZXhwbGFuYXRpb24gPSBbXQotICAgIGNvbW1vbiA9IHNldChs
ZWZ0KS5pbnRlcnNlY3Rpb24oc2V0KHJpZ2h0KSkKLSAgICBzYW1lID0gZGljdCgoaywgbGVmdFtr
XSkgZm9yIGsgaW4gY29tbW9uIGlmIGxlZnRba10gPT0gcmlnaHRba10pCi0gICAgaWYgc2FtZSBh
bmQgdmVyYm9zZSA8IDI6Ci0gICAgICAgIGV4cGxhbmF0aW9uICs9IFt1KCdPbWl0dGluZyAlcyBp
ZGVudGljYWwgaXRlbXMsIHVzZSAtdnYgdG8gc2hvdycpICUKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGxlbihzYW1lKV0KLSAgICBlbGlmIHNhbWU6Ci0gICAgICAgIGV4cGxhbmF0aW9uICs9IFt1
KCdDb21tb24gaXRlbXM6JyldCi0gICAgICAgIGV4cGxhbmF0aW9uICs9IHBwcmludC5wZm9ybWF0
KHNhbWUpLnNwbGl0bGluZXMoKQotICAgIGRpZmYgPSBzZXQoayBmb3IgayBpbiBjb21tb24gaWYg
bGVmdFtrXSAhPSByaWdodFtrXSkKLSAgICBpZiBkaWZmOgotICAgICAgICBleHBsYW5hdGlvbiAr
PSBbdSgnRGlmZmVyaW5nIGl0ZW1zOicpXQotICAgICAgICBmb3IgayBpbiBkaWZmOgotICAgICAg
ICAgICAgZXhwbGFuYXRpb24gKz0gW3B5LmlvLnNhZmVyZXByKHtrOiBsZWZ0W2tdfSkgKyAnICE9
ICcgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5LmlvLnNhZmVyZXByKHtrOiByaWdo
dFtrXX0pXQotICAgIGV4dHJhX2xlZnQgPSBzZXQobGVmdCkgLSBzZXQocmlnaHQpCi0gICAgaWYg
ZXh0cmFfbGVmdDoKLSAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHUoJ0xlZnQgY29udGFpbnMg
bW9yZSBpdGVtczonKSkKLSAgICAgICAgZXhwbGFuYXRpb24uZXh0ZW5kKHBwcmludC5wZm9ybWF0
KAotICAgICAgICAgICAgZGljdCgoaywgbGVmdFtrXSkgZm9yIGsgaW4gZXh0cmFfbGVmdCkpLnNw
bGl0bGluZXMoKSkKLSAgICBleHRyYV9yaWdodCA9IHNldChyaWdodCkgLSBzZXQobGVmdCkKLSAg
ICBpZiBleHRyYV9yaWdodDoKLSAgICAgICAgZXhwbGFuYXRpb24uYXBwZW5kKHUoJ1JpZ2h0IGNv
bnRhaW5zIG1vcmUgaXRlbXM6JykpCi0gICAgICAgIGV4cGxhbmF0aW9uLmV4dGVuZChwcHJpbnQu
cGZvcm1hdCgKLSAgICAgICAgICAgIGRpY3QoKGssIHJpZ2h0W2tdKSBmb3IgayBpbiBleHRyYV9y
aWdodCkpLnNwbGl0bGluZXMoKSkKLSAgICByZXR1cm4gZXhwbGFuYXRpb24KLQotCi1kZWYgX25v
dGluX3RleHQodGVybSwgdGV4dCwgdmVyYm9zZT1GYWxzZSk6Ci0gICAgaW5kZXggPSB0ZXh0LmZp
bmQodGVybSkKLSAgICBoZWFkID0gdGV4dFs6aW5kZXhdCi0gICAgdGFpbCA9IHRleHRbaW5kZXgg
KyBsZW4odGVybSk6XQotICAgIGNvcnJlY3RfdGV4dCA9IGhlYWQgKyB0YWlsCi0gICAgZGlmZiA9
IF9kaWZmX3RleHQoY29ycmVjdF90ZXh0LCB0ZXh0LCB2ZXJib3NlKQotICAgIG5ld2RpZmYgPSBb
dSgnJXMgaXMgY29udGFpbmVkIGhlcmU6JykgJSBweS5pby5zYWZlcmVwcih0ZXJtLCBtYXhzaXpl
PTQyKV0KLSAgICBmb3IgbGluZSBpbiBkaWZmOgotICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgo
dSgnU2tpcHBpbmcnKSk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBsaW5lLnN0
YXJ0c3dpdGgodSgnLSAnKSk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBsaW5l
LnN0YXJ0c3dpdGgodSgnKyAnKSk6Ci0gICAgICAgICAgICBuZXdkaWZmLmFwcGVuZCh1KCcgICcp
ICsgbGluZVsyOl0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuZXdkaWZmLmFwcGVuZChs
aW5lKQotICAgIHJldHVybiBuZXdkaWZmCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0
L2Fzc2VydGlvbi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9u
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTMwN2QzYWJj
NzIxNThmNDFkNjQ0MmNmZDU5MWUxYjA1ZjljYWNmLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvYXNzZXJ0aW9uL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0
L2Fzc2VydGlvbi9yZXdyaXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9hc3NlcnRpb24vdHJ1
bmNhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2Fzc2VydGlvbi91dGlsLnB5CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9f
cHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1
MzdjMTQ0NzJiMWNlOTE2OWNmZTc2MjkwMTU4ODRiMGU0ZTNlNGYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYWNoZXBy
b3ZpZGVyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjYwICswLDAgQEAKLSIiIgotbWVyZ2VkIGlt
cGxlbWVudGF0aW9uIG9mIHRoZSBjYWNoZSBwcm92aWRlcgotCi10aGUgbmFtZSBjYWNoZSB3YXMg
bm90IGNob3NlbiB0byBlbnN1cmUgcGx1Z2d5IGF1dG9tYXRpY2FsbHkKLWlnbm9yZXMgdGhlIGV4
dGVybmFsIHB5dGVzdC1jYWNoZQotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgcHkKLWltcG9ydCBweXRl
c3QKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWZyb20gb3MucGF0aCBpbXBvcnQgc2VwIGFzIF9z
ZXAsIGFsdHNlcCBhcyBfYWx0c2VwCi0KLQotY2xhc3MgQ2FjaGUob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAg
ICAgICAgc2VsZi5fY2FjaGVkaXIgPSBDYWNoZS5jYWNoZV9kaXJfZnJvbV9jb25maWcoY29uZmln
KQotICAgICAgICBzZWxmLnRyYWNlID0gY29uZmlnLnRyYWNlLnJvb3QuZ2V0KCJjYWNoZSIpCi0g
ICAgICAgIGlmIGNvbmZpZy5nZXR2YWx1ZSgiY2FjaGVjbGVhciIpOgotICAgICAgICAgICAgc2Vs
Zi50cmFjZSgiY2xlYXJpbmcgY2FjaGVkaXIiKQotICAgICAgICAgICAgaWYgc2VsZi5fY2FjaGVk
aXIuY2hlY2soKToKLSAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZWRpci5yZW1vdmUoKQotICAg
ICAgICAgICAgc2VsZi5fY2FjaGVkaXIubWtkaXIoKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAg
IGRlZiBjYWNoZV9kaXJfZnJvbV9jb25maWcoY29uZmlnKToKLSAgICAgICAgY2FjaGVfZGlyID0g
Y29uZmlnLmdldGluaSgiY2FjaGVfZGlyIikKLSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5l
eHBhbmR1c2VyKGNhY2hlX2RpcikKLSAgICAgICAgY2FjaGVfZGlyID0gb3MucGF0aC5leHBhbmR2
YXJzKGNhY2hlX2RpcikKLSAgICAgICAgaWYgb3MucGF0aC5pc2FicyhjYWNoZV9kaXIpOgotICAg
ICAgICAgICAgcmV0dXJuIHB5LnBhdGgubG9jYWwoY2FjaGVfZGlyKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcmV0dXJuIGNvbmZpZy5yb290ZGlyLmpvaW4oY2FjaGVfZGlyKQotCi0gICAg
ZGVmIG1ha2VkaXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIiByZXR1cm4gYSBkaXJlY3Rvcnkg
cGF0aCBvYmplY3Qgd2l0aCB0aGUgZ2l2ZW4gbmFtZS4gIElmIHRoZQotICAgICAgICBkaXJlY3Rv
cnkgZG9lcyBub3QgeWV0IGV4aXN0LCBpdCB3aWxsIGJlIGNyZWF0ZWQuICBZb3UgY2FuIHVzZSBp
dAotICAgICAgICB0byBtYW5hZ2UgZmlsZXMgbGlrZXMgZS4gZy4gc3RvcmUvcmV0cmlldmUgZGF0
YWJhc2UKLSAgICAgICAgZHVtcHMgYWNyb3NzIHRlc3Qgc2Vzc2lvbnMuCi0KLSAgICAgICAgOnBh
cmFtIG5hbWU6IG11c3QgYmUgYSBzdHJpbmcgbm90IGNvbnRhaW5pbmcgYSBgYC9gYCBzZXBhcmF0
b3IuCi0gICAgICAgICAgICAgTWFrZSBzdXJlIHRoZSBuYW1lIGNvbnRhaW5zIHlvdXIgcGx1Z2lu
IG9yIGFwcGxpY2F0aW9uCi0gICAgICAgICAgICAgaWRlbnRpZmllcnMgdG8gcHJldmVudCBjbGFz
aGVzIHdpdGggb3RoZXIgY2FjaGUgdXNlcnMuCi0gICAgICAgICIiIgotICAgICAgICBpZiBfc2Vw
IGluIG5hbWUgb3IgX2FsdHNlcCBpcyBub3QgTm9uZSBhbmQgX2FsdHNlcCBpbiBuYW1lOgotICAg
ICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibmFtZSBpcyBub3QgYWxsb3dlZCB0byBjb250YWlu
IHBhdGggc2VwYXJhdG9ycyIpCi0gICAgICAgIHJldHVybiBzZWxmLl9jYWNoZWRpci5lbnN1cmVf
ZGlyKCJkIiwgbmFtZSkKLQotICAgIGRlZiBfZ2V0dmFsdWVwYXRoKHNlbGYsIGtleSk6Ci0gICAg
ICAgIHJldHVybiBzZWxmLl9jYWNoZWRpci5qb2luKCd2JywgKmtleS5zcGxpdCgnLycpKQotCi0g
ICAgZGVmIGdldChzZWxmLCBrZXksIGRlZmF1bHQpOgotICAgICAgICAiIiIgcmV0dXJuIGNhY2hl
ZCB2YWx1ZSBmb3IgdGhlIGdpdmVuIGtleS4gIElmIG5vIHZhbHVlCi0gICAgICAgIHdhcyB5ZXQg
Y2FjaGVkIG9yIHRoZSB2YWx1ZSBjYW5ub3QgYmUgcmVhZCwgdGhlIHNwZWNpZmllZAotICAgICAg
ICBkZWZhdWx0IGlzIHJldHVybmVkLgotCi0gICAgICAgIDpwYXJhbSBrZXk6IG11c3QgYmUgYSBg
YC9gYCBzZXBhcmF0ZWQgdmFsdWUuIFVzdWFsbHkgdGhlIGZpcnN0Ci0gICAgICAgICAgICAgbmFt
ZSBpcyB0aGUgbmFtZSBvZiB5b3VyIHBsdWdpbiBvciB5b3VyIGFwcGxpY2F0aW9uLgotICAgICAg
ICA6cGFyYW0gZGVmYXVsdDogbXVzdCBiZSBwcm92aWRlZCBpbiBjYXNlIG9mIGEgY2FjaGUtbWlz
cyBvcgotICAgICAgICAgICAgIGludmFsaWQgY2FjaGUgdmFsdWVzLgotCi0gICAgICAgICIiIgot
ICAgICAgICBwYXRoID0gc2VsZi5fZ2V0dmFsdWVwYXRoKGtleSkKLSAgICAgICAgaWYgcGF0aC5j
aGVjaygpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpdGggcGF0aC5vcGVu
KCJyIikgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZChmKQotICAg
ICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi50cmFjZSgi
Y2FjaGUtaW52YWxpZCBhdCAlcyIgJSAocGF0aCwpKQotICAgICAgICByZXR1cm4gZGVmYXVsdAot
Ci0gICAgZGVmIHNldChzZWxmLCBrZXksIHZhbHVlKToKLSAgICAgICAgIiIiIHNhdmUgdmFsdWUg
Zm9yIHRoZSBnaXZlbiBrZXkuCi0KLSAgICAgICAgOnBhcmFtIGtleTogbXVzdCBiZSBhIGBgL2Bg
IHNlcGFyYXRlZCB2YWx1ZS4gVXN1YWxseSB0aGUgZmlyc3QKLSAgICAgICAgICAgICBuYW1lIGlz
IHRoZSBuYW1lIG9mIHlvdXIgcGx1Z2luIG9yIHlvdXIgYXBwbGljYXRpb24uCi0gICAgICAgIDpw
YXJhbSB2YWx1ZTogbXVzdCBiZSBvZiBhbnkgY29tYmluYXRpb24gb2YgYmFzaWMKLSAgICAgICAg
ICAgICAgIHB5dGhvbiB0eXBlcywgaW5jbHVkaW5nIG5lc3RlZCB0eXBlcwotICAgICAgICAgICAg
ICAgbGlrZSBlLiBnLiBsaXN0cyBvZiBkaWN0aW9uYXJpZXMuCi0gICAgICAgICIiIgotICAgICAg
ICBwYXRoID0gc2VsZi5fZ2V0dmFsdWVwYXRoKGtleSkKLSAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgcGF0aC5kaXJwYXRoKCkuZW5zdXJlX2RpcigpCi0gICAgICAgIGV4Y2VwdCAocHkuZXJyb3Iu
RUVYSVNULCBweS5lcnJvci5FQUNDRVMpOgotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybigK
LSAgICAgICAgICAgICAgICBjb2RlPSdJOScsIG1lc3NhZ2U9J2NvdWxkIG5vdCBjcmVhdGUgY2Fj
aGUgcGF0aCAlcycgJSAocGF0aCwpCi0gICAgICAgICAgICApCi0gICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZiA9IHBhdGgub3BlbigndycpCi0gICAgICAgIGV4
Y2VwdCBweS5lcnJvci5FTk9URElSOgotICAgICAgICAgICAgc2VsZi5jb25maWcud2FybigKLSAg
ICAgICAgICAgICAgICBjb2RlPSdJOScsIG1lc3NhZ2U9J2NhY2hlIGNvdWxkIG5vdCB3cml0ZSBw
YXRoICVzJyAlIChwYXRoLCkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aXRoIGY6Ci0g
ICAgICAgICAgICAgICAgc2VsZi50cmFjZSgiY2FjaGUtd3JpdGUgJXM6ICVyIiAlIChrZXksIHZh
bHVlLCkpCi0gICAgICAgICAgICAgICAganNvbi5kdW1wKHZhbHVlLCBmLCBpbmRlbnQ9Miwgc29y
dF9rZXlzPVRydWUpCi0KLQotY2xhc3MgTEZQbHVnaW46Ci0gICAgIiIiIFBsdWdpbiB3aGljaCBp
bXBsZW1lbnRzIHRoZSAtLWxmIChydW4gbGFzdC1mYWlsaW5nKSBvcHRpb24gIiIiCi0KLSAgICBk
ZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcK
LSAgICAgICAgYWN0aXZlX2tleXMgPSAnbGYnLCAnZmFpbGVkZmlyc3QnCi0gICAgICAgIHNlbGYu
YWN0aXZlID0gYW55KGNvbmZpZy5nZXR2YWx1ZShrZXkpIGZvciBrZXkgaW4gYWN0aXZlX2tleXMp
Ci0gICAgICAgIHNlbGYubGFzdGZhaWxlZCA9IGNvbmZpZy5jYWNoZS5nZXQoImNhY2hlL2xhc3Rm
YWlsZWQiLCB7fSkKLSAgICAgICAgc2VsZi5fcHJldmlvdXNseV9mYWlsZWRfY291bnQgPSBOb25l
Ci0KLSAgICBkZWYgcHl0ZXN0X3JlcG9ydF9jb2xsZWN0aW9uZmluaXNoKHNlbGYpOgotICAgICAg
ICBpZiBzZWxmLmFjdGl2ZToKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wcmV2aW91c2x5X2Zh
aWxlZF9jb3VudDoKLSAgICAgICAgICAgICAgICBtb2RlID0gInJ1biBhbGwgKG5vIHJlY29yZGVk
IGZhaWx1cmVzKSIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbm91biA9ICdm
YWlsdXJlJyBpZiBzZWxmLl9wcmV2aW91c2x5X2ZhaWxlZF9jb3VudCA9PSAxIGVsc2UgJ2ZhaWx1
cmVzJwotICAgICAgICAgICAgICAgIHN1ZmZpeCA9ICIgZmlyc3QiIGlmIHNlbGYuY29uZmlnLmdl
dHZhbHVlKCJmYWlsZWRmaXJzdCIpIGVsc2UgIiIKLSAgICAgICAgICAgICAgICBtb2RlID0gInJl
cnVuIHByZXZpb3VzIHtjb3VudH0ge25vdW59e3N1ZmZpeH0iLmZvcm1hdCgKLSAgICAgICAgICAg
ICAgICAgICAgY291bnQ9c2VsZi5fcHJldmlvdXNseV9mYWlsZWRfY291bnQsIHN1ZmZpeD1zdWZm
aXgsIG5vdW49bm91bgotICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgIHJldHVybiAicnVu
LWxhc3QtZmFpbHVyZTogJXMiICUgbW9kZQotCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3Jl
cG9ydChzZWxmLCByZXBvcnQpOgotICAgICAgICBpZiAocmVwb3J0LndoZW4gPT0gJ2NhbGwnIGFu
ZCByZXBvcnQucGFzc2VkKSBvciByZXBvcnQuc2tpcHBlZDoKLSAgICAgICAgICAgIHNlbGYubGFz
dGZhaWxlZC5wb3AocmVwb3J0Lm5vZGVpZCwgTm9uZSkKLSAgICAgICAgZWxpZiByZXBvcnQuZmFp
bGVkOgotICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVkW3JlcG9ydC5ub2RlaWRdID0gVHJ1ZQot
Ci0gICAgZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIHBh
c3NlZCA9IHJlcG9ydC5vdXRjb21lIGluICgncGFzc2VkJywgJ3NraXBwZWQnKQotICAgICAgICBp
ZiBwYXNzZWQ6Ci0gICAgICAgICAgICBpZiByZXBvcnQubm9kZWlkIGluIHNlbGYubGFzdGZhaWxl
ZDoKLSAgICAgICAgICAgICAgICBzZWxmLmxhc3RmYWlsZWQucG9wKHJlcG9ydC5ub2RlaWQpCi0g
ICAgICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVkLnVwZGF0ZSgKLSAgICAgICAgICAgICAgICAg
ICAgKGl0ZW0ubm9kZWlkLCBUcnVlKQotICAgICAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBy
ZXBvcnQucmVzdWx0KQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5sYXN0ZmFpbGVk
W3JlcG9ydC5ub2RlaWRdID0gVHJ1ZQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlm
eWl0ZW1zKHNlbGYsIHNlc3Npb24sIGNvbmZpZywgaXRlbXMpOgotICAgICAgICBpZiBzZWxmLmFj
dGl2ZSBhbmQgc2VsZi5sYXN0ZmFpbGVkOgotICAgICAgICAgICAgcHJldmlvdXNseV9mYWlsZWQg
PSBbXQotICAgICAgICAgICAgcHJldmlvdXNseV9wYXNzZWQgPSBbXQotICAgICAgICAgICAgZm9y
IGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICAgICAgaWYgaXRlbS5ub2RlaWQgaW4gc2VsZi5s
YXN0ZmFpbGVkOgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91c2x5X2ZhaWxlZC5hcHBlbmQo
aXRlbSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBwcmV2aW91
c2x5X3Bhc3NlZC5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgIHNlbGYuX3ByZXZpb3VzbHlfZmFp
bGVkX2NvdW50ID0gbGVuKHByZXZpb3VzbHlfZmFpbGVkKQotICAgICAgICAgICAgaWYgbm90IHBy
ZXZpb3VzbHlfZmFpbGVkOgotICAgICAgICAgICAgICAgICMgcnVubmluZyBhIHN1YnNldCBvZiBh
bGwgdGVzdHMgd2l0aCByZWNvcmRlZCBmYWlsdXJlcyBvdXRzaWRlCi0gICAgICAgICAgICAgICAg
IyBvZiB0aGUgc2V0IG9mIHRlc3RzIGN1cnJlbnRseSBleGVjdXRpbmcKLSAgICAgICAgICAgICAg
ICByZXR1cm4KLSAgICAgICAgICAgIGlmIHNlbGYuY29uZmlnLmdldHZhbHVlKCJsZiIpOgotICAg
ICAgICAgICAgICAgIGl0ZW1zWzpdID0gcHJldmlvdXNseV9mYWlsZWQKLSAgICAgICAgICAgICAg
ICBjb25maWcuaG9vay5weXRlc3RfZGVzZWxlY3RlZChpdGVtcz1wcmV2aW91c2x5X3Bhc3NlZCkK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaXRlbXNbOl0gPSBwcmV2aW91c2x5
X2ZhaWxlZCArIHByZXZpb3VzbHlfcGFzc2VkCi0KLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5p
c2goc2VsZiwgc2Vzc2lvbik6Ci0gICAgICAgIGNvbmZpZyA9IHNlbGYuY29uZmlnCi0gICAgICAg
IGlmIGNvbmZpZy5nZXR2YWx1ZSgiY2FjaGVzaG93Iikgb3IgaGFzYXR0cihjb25maWcsICJzbGF2
ZWlucHV0Iik6Ci0gICAgICAgICAgICByZXR1cm4KLQotICAgICAgICBzYXZlZF9sYXN0ZmFpbGVk
ID0gY29uZmlnLmNhY2hlLmdldCgiY2FjaGUvbGFzdGZhaWxlZCIsIHt9KQotICAgICAgICBpZiBz
YXZlZF9sYXN0ZmFpbGVkICE9IHNlbGYubGFzdGZhaWxlZDoKLSAgICAgICAgICAgIGNvbmZpZy5j
YWNoZS5zZXQoImNhY2hlL2xhc3RmYWlsZWQiLCBzZWxmLmxhc3RmYWlsZWQpCi0KLQotZGVmIHB5
dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2Vu
ZXJhbCIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAnLS1sZicsICctLWxhc3QtZmFp
bGVkJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0ibGYiLAotICAgICAgICBoZWxwPSJyZXJ1
biBvbmx5IHRoZSB0ZXN0cyB0aGF0IGZhaWxlZCAiCi0gICAgICAgICAgICAgImF0IHRoZSBsYXN0
IHJ1biAob3IgYWxsIGlmIG5vbmUgZmFpbGVkKSIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKAotICAg
ICAgICAnLS1mZicsICctLWZhaWxlZC1maXJzdCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsIGRlc3Q9
ImZhaWxlZGZpcnN0IiwKLSAgICAgICAgaGVscD0icnVuIGFsbCB0ZXN0cyBidXQgcnVuIHRoZSBs
YXN0IGZhaWx1cmVzIGZpcnN0LiAgIgotICAgICAgICAgICAgICJUaGlzIG1heSByZS1vcmRlciB0
ZXN0cyBhbmQgdGh1cyBsZWFkIHRvICIKLSAgICAgICAgICAgICAicmVwZWF0ZWQgZml4dHVyZSBz
ZXR1cC90ZWFyZG93biIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKAotICAgICAgICAnLS1jYWNoZS1z
aG93JywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0iY2FjaGVzaG93IiwKLSAgICAgICAgaGVs
cD0ic2hvdyBjYWNoZSBjb250ZW50cywgZG9uJ3QgcGVyZm9ybSBjb2xsZWN0aW9uIG9yIHRlc3Rz
IikKLSAgICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICctLWNhY2hlLWNsZWFyJywgYWN0aW9u
PSdzdG9yZV90cnVlJywgZGVzdD0iY2FjaGVjbGVhciIsCi0gICAgICAgIGhlbHA9InJlbW92ZSBh
bGwgY2FjaGUgY29udGVudHMgYXQgc3RhcnQgb2YgdGVzdCBydW4uIikKLSAgICBwYXJzZXIuYWRk
aW5pKAotICAgICAgICAiY2FjaGVfZGlyIiwgZGVmYXVsdD0nLmNhY2hlJywKLSAgICAgICAgaGVs
cD0iY2FjaGUgZGlyZWN0b3J5IHBhdGguIikKLQotCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihj
b25maWcpOgotICAgIGlmIGNvbmZpZy5vcHRpb24uY2FjaGVzaG93OgotICAgICAgICBmcm9tIF9w
eXRlc3QubWFpbiBpbXBvcnQgd3JhcF9zZXNzaW9uCi0gICAgICAgIHJldHVybiB3cmFwX3Nlc3Np
b24oY29uZmlnLCBjYWNoZXNob3cpCi0KLQotQHB5dGVzdC5ob29raW1wbCh0cnlmaXJzdD1UcnVl
KQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICBjb25maWcuY2FjaGUgPSBDYWNo
ZShjb25maWcpCi0gICAgY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoTEZQbHVnaW4oY29u
ZmlnKSwgImxmcGx1Z2luIikKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYWNoZShyZXF1ZXN0
KToKLSAgICAiIiIKLSAgICBSZXR1cm4gYSBjYWNoZSBvYmplY3QgdGhhdCBjYW4gcGVyc2lzdCBz
dGF0ZSBiZXR3ZWVuIHRlc3Rpbmcgc2Vzc2lvbnMuCi0KLSAgICBjYWNoZS5nZXQoa2V5LCBkZWZh
dWx0KQotICAgIGNhY2hlLnNldChrZXksIHZhbHVlKQotCi0gICAgS2V5cyBtdXN0IGJlIGEgYGAv
YGAgc2VwYXJhdGVkIHZhbHVlLCB3aGVyZSB0aGUgZmlyc3QgcGFydCBpcyB1c3VhbGx5IHRoZQot
ICAgIG5hbWUgb2YgeW91ciBwbHVnaW4gb3IgYXBwbGljYXRpb24gdG8gYXZvaWQgY2xhc2hlcyB3
aXRoIG90aGVyIGNhY2hlIHVzZXJzLgotCi0gICAgVmFsdWVzIGNhbiBiZSBhbnkgb2JqZWN0IGhh
bmRsZWQgYnkgdGhlIGpzb24gc3RkbGliIG1vZHVsZS4KLSAgICAiIiIKLSAgICByZXR1cm4gcmVx
dWVzdC5jb25maWcuY2FjaGUKLQotCi1kZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnKToK
LSAgICBpZiBjb25maWcub3B0aW9uLnZlcmJvc2U6Ci0gICAgICAgIHJlbHBhdGggPSBweS5wYXRo
LmxvY2FsKCkuYmVzdHJlbHBhdGgoY29uZmlnLmNhY2hlLl9jYWNoZWRpcikKLSAgICAgICAgcmV0
dXJuICJjYWNoZWRpcjogJXMiICUgcmVscGF0aAotCi0KLWRlZiBjYWNoZXNob3coY29uZmlnLCBz
ZXNzaW9uKToKLSAgICBmcm9tIHBwcmludCBpbXBvcnQgcHByaW50Ci0gICAgdHcgPSBweS5pby5U
ZXJtaW5hbFdyaXRlcigpCi0gICAgdHcubGluZSgiY2FjaGVkaXI6ICIgKyBzdHIoY29uZmlnLmNh
Y2hlLl9jYWNoZWRpcikpCi0gICAgaWYgbm90IGNvbmZpZy5jYWNoZS5fY2FjaGVkaXIuY2hlY2so
KToKLSAgICAgICAgdHcubGluZSgiY2FjaGUgaXMgZW1wdHkiKQotICAgICAgICByZXR1cm4gMAot
ICAgIGR1bW15ID0gb2JqZWN0KCkKLSAgICBiYXNlZGlyID0gY29uZmlnLmNhY2hlLl9jYWNoZWRp
cgotICAgIHZkaXIgPSBiYXNlZGlyLmpvaW4oInYiKQotICAgIHR3LnNlcCgiLSIsICJjYWNoZSB2
YWx1ZXMiKQotICAgIGZvciB2YWxwYXRoIGluIHNvcnRlZCh2ZGlyLnZpc2l0KGxhbWJkYSB4OiB4
LmlzZmlsZSgpKSk6Ci0gICAgICAgIGtleSA9IHZhbHBhdGgucmVsdG8odmRpcikucmVwbGFjZSh2
YWxwYXRoLnNlcCwgIi8iKQotICAgICAgICB2YWwgPSBjb25maWcuY2FjaGUuZ2V0KGtleSwgZHVt
bXkpCi0gICAgICAgIGlmIHZhbCBpcyBkdW1teToKLSAgICAgICAgICAgIHR3LmxpbmUoIiVzIGNv
bnRhaW5zIHVucmVhZGFibGUgY29udGVudCwgIgotICAgICAgICAgICAgICAgICAgICAid2lsbCBi
ZSBpZ25vcmVkIiAlIGtleSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHR3LmxpbmUoIiVz
IGNvbnRhaW5zOiIgJSBrZXkpCi0gICAgICAgICAgICBzdHJlYW0gPSBweS5pby5UZXh0SU8oKQot
ICAgICAgICAgICAgcHByaW50KHZhbCwgc3RyZWFtPXN0cmVhbSkKLSAgICAgICAgICAgIGZvciBs
aW5lIGluIHN0cmVhbS5nZXR2YWx1ZSgpLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICB0
dy5saW5lKCIgICIgKyBsaW5lKQotCi0gICAgZGRpciA9IGJhc2VkaXIuam9pbigiZCIpCi0gICAg
aWYgZGRpci5pc2RpcigpIGFuZCBkZGlyLmxpc3RkaXIoKToKLSAgICAgICAgdHcuc2VwKCItIiwg
ImNhY2hlIGRpcmVjdG9yaWVzIikKLSAgICAgICAgZm9yIHAgaW4gc29ydGVkKGJhc2VkaXIuam9p
bigiZCIpLnZpc2l0KCkpOgotICAgICAgICAgICAgIyBpZiBwLmNoZWNrKGRpcj0xKToKLSAgICAg
ICAgICAgICMgICAgcHJpbnQoIiVzLyIgJSBwLnJlbHRvKGJhc2VkaXIpKQotICAgICAgICAgICAg
aWYgcC5pc2ZpbGUoKToKLSAgICAgICAgICAgICAgICBrZXkgPSBwLnJlbHRvKGJhc2VkaXIpCi0g
ICAgICAgICAgICAgICAgdHcubGluZSgiJXMgaXMgYSBmaWxlIG9mIGxlbmd0aCAlZCIgJSAoCi0g
ICAgICAgICAgICAgICAgICAgICAgICBrZXksIHAuc2l6ZSgpKSkKLSAgICByZXR1cm4gMApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYXB0dXJlLnB5IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9jYXB0dXJlLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmViZTM4Yzhj
MDkwMjg2Yjc3YzczOWIzMmI2MjAzMDI5NGM3NTI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvY2FwdHVyZS5weQorKysg
L2Rldi9udWxsCkBAIC0xLDY4MyArMCwwIEBACi0iIiIKLXBlci10ZXN0IHN0ZG91dC9zdGRlcnIg
Y2FwdHVyaW5nIG1lY2hhbmlzbS4KLQotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29s
dXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBjb2xsZWN0aW9u
cwotaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IGlvCi1m
cm9tIGlvIGltcG9ydCBVbnN1cHBvcnRlZE9wZXJhdGlvbgotZnJvbSB0ZW1wZmlsZSBpbXBvcnQg
VGVtcG9yYXJ5RmlsZQotCi1pbXBvcnQgc2l4Ci1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3Qu
Y29tcGF0IGltcG9ydCBDYXB0dXJlSU8KLQotCi1wYXRjaHN5c2RpY3QgPSB7MDogJ3N0ZGluJywg
MTogJ3N0ZG91dCcsIDI6ICdzdGRlcnInfQotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9uKHBhcnNl
cik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImdlbmVyYWwiKQotICAgIGdyb3VwLl9h
ZGRvcHRpb24oCi0gICAgICAgICctLWNhcHR1cmUnLCBhY3Rpb249InN0b3JlIiwKLSAgICAgICAg
ZGVmYXVsdD0iZmQiIGlmIGhhc2F0dHIob3MsICJkdXAiKSBlbHNlICJzeXMiLAotICAgICAgICBt
ZXRhdmFyPSJtZXRob2QiLCBjaG9pY2VzPVsnZmQnLCAnc3lzJywgJ25vJ10sCi0gICAgICAgIGhl
bHA9InBlci10ZXN0IGNhcHR1cmluZyBtZXRob2Q6IG9uZSBvZiBmZHxzeXN8bm8uIikKLSAgICBn
cm91cC5fYWRkb3B0aW9uKAotICAgICAgICAnLXMnLCBhY3Rpb249InN0b3JlX2NvbnN0IiwgY29u
c3Q9Im5vIiwgZGVzdD0iY2FwdHVyZSIsCi0gICAgICAgIGhlbHA9InNob3J0Y3V0IGZvciAtLWNh
cHR1cmU9bm8uIikKLQotCi1AcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYg
cHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMoZWFybHlfY29uZmlnLCBwYXJzZXIsIGFyZ3Mp
OgotICAgIG5zID0gZWFybHlfY29uZmlnLmtub3duX2FyZ3NfbmFtZXNwYWNlCi0gICAgaWYgbnMu
Y2FwdHVyZSA9PSAiZmQiOgotICAgICAgICBfcHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmthcm91
bmQoc3lzLnN0ZG91dCkKLSAgICBfY29sb3JhbWFfd29ya2Fyb3VuZCgpCi0gICAgX3JlYWRsaW5l
X3dvcmthcm91bmQoKQotICAgIHBsdWdpbm1hbmFnZXIgPSBlYXJseV9jb25maWcucGx1Z2lubWFu
YWdlcgotICAgIGNhcG1hbiA9IENhcHR1cmVNYW5hZ2VyKG5zLmNhcHR1cmUpCi0gICAgcGx1Z2lu
bWFuYWdlci5yZWdpc3RlcihjYXBtYW4sICJjYXB0dXJlbWFuYWdlciIpCi0KLSAgICAjIG1ha2Ug
c3VyZSB0aGF0IGNhcHR1cmVtYW5hZ2VyIGlzIHByb3Blcmx5IHJlc2V0IGF0IGZpbmFsIHNodXRk
b3duCi0gICAgZWFybHlfY29uZmlnLmFkZF9jbGVhbnVwKGNhcG1hbi5zdG9wX2dsb2JhbF9jYXB0
dXJpbmcpCi0KLSAgICAjIG1ha2Ugc3VyZSBsb2dnaW5nIGRvZXMgbm90IHJhaXNlIGV4Y2VwdGlv
bnMgYXQgdGhlIGVuZAotICAgIGRlZiBzaWxlbmNlX2xvZ2dpbmdfYXRfc2h1dGRvd24oKToKLSAg
ICAgICAgaWYgImxvZ2dpbmciIGluIHN5cy5tb2R1bGVzOgotICAgICAgICAgICAgc3lzLm1vZHVs
ZXNbImxvZ2dpbmciXS5yYWlzZUV4Y2VwdGlvbnMgPSBGYWxzZQotICAgIGVhcmx5X2NvbmZpZy5h
ZGRfY2xlYW51cChzaWxlbmNlX2xvZ2dpbmdfYXRfc2h1dGRvd24pCi0KLSAgICAjIGZpbmFsbHkg
dHJpZ2dlciBjb25mdGVzdCBsb2FkaW5nIGJ1dCB3aGlsZSBjYXB0dXJpbmcgKGlzc3VlOTMpCi0g
ICAgY2FwbWFuLnN0YXJ0X2dsb2JhbF9jYXB0dXJpbmcoKQotICAgIG91dGNvbWUgPSB5aWVsZAot
ICAgIG91dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoKQotICAgIGlmIG91
dGNvbWUuZXhjaW5mbyBpcyBub3QgTm9uZToKLSAgICAgICAgc3lzLnN0ZG91dC53cml0ZShvdXQp
Ci0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQotCi0KLWNsYXNzIENhcHR1cmVNYW5hZ2Vy
OgotICAgICIiIgotICAgIENhcHR1cmUgcGx1Z2luLCBtYW5hZ2VzIHRoYXQgdGhlIGFwcHJvcHJp
YXRlIGNhcHR1cmUgbWV0aG9kIGlzIGVuYWJsZWQvZGlzYWJsZWQgZHVyaW5nIGNvbGxlY3Rpb24g
YW5kIGVhY2gKLSAgICB0ZXN0IHBoYXNlIChzZXR1cCwgY2FsbCwgdGVhcmRvd24pLiBBZnRlciBl
YWNoIG9mIHRob3NlIHBvaW50cywgdGhlIGNhcHR1cmVkIG91dHB1dCBpcyBvYnRhaW5lZCBhbmQK
LSAgICBhdHRhY2hlZCB0byB0aGUgY29sbGVjdGlvbi9ydW50ZXN0IHJlcG9ydC4KLQotICAgIFRo
ZXJlIGFyZSB0d28gbGV2ZWxzIG9mIGNhcHR1cmU6Ci0gICAgKiBnbG9iYWw6IHdoaWNoIGlzIGVu
YWJsZWQgYnkgZGVmYXVsdCBhbmQgY2FuIGJlIHN1cHByZXNzZWQgYnkgdGhlIGBgLXNgYCBvcHRp
b24uIFRoaXMgaXMgYWx3YXlzIGVuYWJsZWQvZGlzYWJsZWQKLSAgICAgIGR1cmluZyBjb2xsZWN0
aW9uIGFuZCBlYWNoIHRlc3QgcGhhc2UuCi0gICAgKiBmaXh0dXJlOiB3aGVuIGEgdGVzdCBmdW5j
dGlvbiBvciBvbmUgb2YgaXRzIGZpeHR1cmUgZGVwZW5kIG9uIHRoZSBgYGNhcHN5c2BgIG9yIGBg
Y2FwZmRgYCBmaXh0dXJlcy4gSW4gdGhpcwotICAgICAgY2FzZSBzcGVjaWFsIGhhbmRsaW5nIGlz
IG5lZWRlZCB0byBlbnN1cmUgdGhlIGZpeHR1cmVzIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBn
bG9iYWwgY2FwdHVyZS4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRob2Qp
OgotICAgICAgICBzZWxmLl9tZXRob2QgPSBtZXRob2QKLSAgICAgICAgc2VsZi5fZ2xvYmFsX2Nh
cHR1cmluZyA9IE5vbmUKLQotICAgIGRlZiBfZ2V0Y2FwdHVyZShzZWxmLCBtZXRob2QpOgotICAg
ICAgICBpZiBtZXRob2QgPT0gImZkIjoKLSAgICAgICAgICAgIHJldHVybiBNdWx0aUNhcHR1cmUo
b3V0PVRydWUsIGVycj1UcnVlLCBDYXB0dXJlPUZEQ2FwdHVyZSkKLSAgICAgICAgZWxpZiBtZXRo
b2QgPT0gInN5cyI6Ci0gICAgICAgICAgICByZXR1cm4gTXVsdGlDYXB0dXJlKG91dD1UcnVlLCBl
cnI9VHJ1ZSwgQ2FwdHVyZT1TeXNDYXB0dXJlKQotICAgICAgICBlbGlmIG1ldGhvZCA9PSAibm8i
OgotICAgICAgICAgICAgcmV0dXJuIE11bHRpQ2FwdHVyZShvdXQ9RmFsc2UsIGVycj1GYWxzZSwg
aW5fPUZhbHNlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
dW5rbm93biBjYXB0dXJpbmcgbWV0aG9kOiAlciIgJSBtZXRob2QpCi0KLSAgICBkZWYgc3RhcnRf
Z2xvYmFsX2NhcHR1cmluZyhzZWxmKToKLSAgICAgICAgYXNzZXJ0IHNlbGYuX2dsb2JhbF9jYXB0
dXJpbmcgaXMgTm9uZQotICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nID0gc2VsZi5fZ2V0
Y2FwdHVyZShzZWxmLl9tZXRob2QpCi0gICAgICAgIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcuc3Rh
cnRfY2FwdHVyaW5nKCkKLQotICAgIGRlZiBzdG9wX2dsb2JhbF9jYXB0dXJpbmcoc2VsZik6Ci0g
ICAgICAgIGlmIHNlbGYuX2dsb2JhbF9jYXB0dXJpbmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnBvcF9vdXRlcnJfdG9fb3JpZygpCi0gICAgICAgICAg
ICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnN0b3BfY2FwdHVyaW5nKCkKLSAgICAgICAgICAgIHNl
bGYuX2dsb2JhbF9jYXB0dXJpbmcgPSBOb25lCi0KLSAgICBkZWYgcmVzdW1lX2dsb2JhbF9jYXB0
dXJlKHNlbGYpOgotICAgICAgICBzZWxmLl9nbG9iYWxfY2FwdHVyaW5nLnJlc3VtZV9jYXB0dXJp
bmcoKQotCi0gICAgZGVmIHN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoc2VsZiwgaXRlbT1Ob25lLCBp
bl89RmFsc2UpOgotICAgICAgICBpZiBpdGVtIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2Vs
Zi5kZWFjdGl2YXRlX2ZpeHR1cmUoaXRlbSkKLSAgICAgICAgY2FwID0gZ2V0YXR0cihzZWxmLCAi
X2dsb2JhbF9jYXB0dXJpbmciLCBOb25lKQotICAgICAgICBpZiBjYXAgaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3V0ZXJyID0gY2FwLnJlYWRvdXRlcnIo
KQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBjYXAuc3VzcGVuZF9jYXB0
dXJpbmcoaW5fPWluXykKLSAgICAgICAgICAgIHJldHVybiBvdXRlcnIKLQotICAgIGRlZiBhY3Rp
dmF0ZV9maXh0dXJlKHNlbGYsIGl0ZW0pOgotICAgICAgICAiIiJJZiB0aGUgY3VycmVudCBpdGVt
IGlzIHVzaW5nIGBgY2Fwc3lzYGAgb3IgYGBjYXBmZGBgLCBhY3RpdmF0ZSB0aGVtIHNvIHRoZXkg
dGFrZSBwcmVjZWRlbmNlIG92ZXIKLSAgICAgICAgdGhlIGdsb2JhbCBjYXB0dXJlLgotICAgICAg
ICAiIiIKLSAgICAgICAgZml4dHVyZSA9IGdldGF0dHIoaXRlbSwgIl9jYXB0dXJlX2ZpeHR1cmUi
LCBOb25lKQotICAgICAgICBpZiBmaXh0dXJlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZml4
dHVyZS5fc3RhcnQoKQotCi0gICAgZGVmIGRlYWN0aXZhdGVfZml4dHVyZShzZWxmLCBpdGVtKToK
LSAgICAgICAgIiIiRGVhY3RpdmF0ZXMgdGhlIGBgY2Fwc3lzYGAgb3IgYGBjYXBmZGBgIGZpeHR1
cmUgb2YgdGhpcyBpdGVtLCBpZiBhbnkuIiIiCi0gICAgICAgIGZpeHR1cmUgPSBnZXRhdHRyKGl0
ZW0sICJfY2FwdHVyZV9maXh0dXJlIiwgTm9uZSkKLSAgICAgICAgaWYgZml4dHVyZSBpcyBub3Qg
Tm9uZToKLSAgICAgICAgICAgIGZpeHR1cmUuY2xvc2UoKQotCi0gICAgQHB5dGVzdC5ob29raW1w
bChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChz
ZWxmLCBjb2xsZWN0b3IpOgotICAgICAgICBpZiBpc2luc3RhbmNlKGNvbGxlY3RvciwgcHl0ZXN0
LkZpbGUpOgotICAgICAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAg
ICAgICAgb3V0Y29tZSA9IHlpZWxkCi0gICAgICAgICAgICBvdXQsIGVyciA9IHNlbGYuc3VzcGVu
ZF9nbG9iYWxfY2FwdHVyZSgpCi0gICAgICAgICAgICByZXAgPSBvdXRjb21lLmdldF9yZXN1bHQo
KQotICAgICAgICAgICAgaWYgb3V0OgotICAgICAgICAgICAgICAgIHJlcC5zZWN0aW9ucy5hcHBl
bmQoKCJDYXB0dXJlZCBzdGRvdXQiLCBvdXQpKQotICAgICAgICAgICAgaWYgZXJyOgotICAgICAg
ICAgICAgICAgIHJlcC5zZWN0aW9ucy5hcHBlbmQoKCJDYXB0dXJlZCBzdGRlcnIiLCBlcnIpKQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQKLQotICAgIEBweXRlc3QuaG9va2ltcGwo
aG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAoc2VsZiwgaXRl
bSk6Ci0gICAgICAgIHNlbGYucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgIyBubyBu
ZWVkIHRvIGFjdGl2YXRlIGEgY2FwdHVyZSBmaXh0dXJlIGJlY2F1c2UgdGhleSBhY3RpdmF0ZSB0
aGVtc2VsdmVzIGR1cmluZyBjcmVhdGlvbjsgdGhpcwotICAgICAgICAjIG9ubHkgbWFrZXMgc2Vu
c2Ugd2hlbiBhIGZpeHR1cmUgdXNlcyBhIGNhcHR1cmUgZml4dHVyZSwgb3RoZXJ3aXNlIHRoZSBj
YXB0dXJlIGZpeHR1cmUgd2lsbAotICAgICAgICAjIGJlIGFjdGl2YXRlZCBkdXJpbmcgcHl0ZXN0
X3J1bnRlc3RfY2FsbAotICAgICAgICB5aWVsZAotICAgICAgICBzZWxmLnN1c3BlbmRfY2FwdHVy
ZV9pdGVtKGl0ZW0sICJzZXR1cCIpCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVy
PVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2NhbGwoc2VsZiwgaXRlbSk6Ci0gICAgICAg
IHNlbGYucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAgIyBpdCBpcyBpbXBvcnRhbnQg
dG8gYWN0aXZhdGUgdGhpcyBmaXh0dXJlIGR1cmluZyB0aGUgY2FsbCBwaGFzZSBzbyBpdCBvdmVy
d3JpdGVzIHRoZSAiZ2xvYmFsIgotICAgICAgICAjIGNhcHR1cmUKLSAgICAgICAgc2VsZi5hY3Rp
dmF0ZV9maXh0dXJlKGl0ZW0pCi0gICAgICAgIHlpZWxkCi0gICAgICAgIHNlbGYuc3VzcGVuZF9j
YXB0dXJlX2l0ZW0oaXRlbSwgImNhbGwiKQotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3Jh
cHBlcj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdF90ZWFyZG93bihzZWxmLCBpdGVtKToK
LSAgICAgICAgc2VsZi5yZXN1bWVfZ2xvYmFsX2NhcHR1cmUoKQotICAgICAgICBzZWxmLmFjdGl2
YXRlX2ZpeHR1cmUoaXRlbSkKLSAgICAgICAgeWllbGQKLSAgICAgICAgc2VsZi5zdXNwZW5kX2Nh
cHR1cmVfaXRlbShpdGVtLCAidGVhcmRvd24iKQotCi0gICAgQHB5dGVzdC5ob29raW1wbCh0cnlm
aXJzdD1UcnVlKQotICAgIGRlZiBweXRlc3Rfa2V5Ym9hcmRfaW50ZXJydXB0KHNlbGYsIGV4Y2lu
Zm8pOgotICAgICAgICBzZWxmLnN0b3BfZ2xvYmFsX2NhcHR1cmluZygpCi0KLSAgICBAcHl0ZXN0
Lmhvb2tpbXBsKHRyeWZpcnN0PVRydWUpCi0gICAgZGVmIHB5dGVzdF9pbnRlcm5hbGVycm9yKHNl
bGYsIGV4Y2luZm8pOgotICAgICAgICBzZWxmLnN0b3BfZ2xvYmFsX2NhcHR1cmluZygpCi0KLSAg
ICBkZWYgc3VzcGVuZF9jYXB0dXJlX2l0ZW0oc2VsZiwgaXRlbSwgd2hlbiwgaW5fPUZhbHNlKToK
LSAgICAgICAgb3V0LCBlcnIgPSBzZWxmLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaXRlbSwgaW5f
PWluXykKLSAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZG91dCIsIG91
dCkKLSAgICAgICAgaXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgInN0ZGVyciIsIGVycikK
LQotCi1jYXB0dXJlX2ZpeHR1cmVzID0geydjYXBmZCcsICdjYXBmZGJpbmFyeScsICdjYXBzeXMn
LCAnY2Fwc3lzYmluYXJ5J30KLQotCi1kZWYgX2Vuc3VyZV9vbmx5X29uZV9jYXB0dXJlX2ZpeHR1
cmUocmVxdWVzdCwgbmFtZSk6Ci0gICAgZml4dHVyZXMgPSBzZXQocmVxdWVzdC5maXh0dXJlbmFt
ZXMpICYgY2FwdHVyZV9maXh0dXJlcyAtIHNldCgobmFtZSwpKQotICAgIGlmIGZpeHR1cmVzOgot
ICAgICAgICBmaXh0dXJlcyA9IHNvcnRlZChmaXh0dXJlcykKLSAgICAgICAgZml4dHVyZXMgPSBm
aXh0dXJlc1swXSBpZiBsZW4oZml4dHVyZXMpID09IDEgZWxzZSBmaXh0dXJlcwotICAgICAgICBy
YWlzZSByZXF1ZXN0LnJhaXNlZXJyb3IoCi0gICAgICAgICAgICAiY2Fubm90IHVzZSB7MH0gYW5k
IHsxfSBhdCB0aGUgc2FtZSB0aW1lIi5mb3JtYXQoCi0gICAgICAgICAgICAgICAgZml4dHVyZXMs
IG5hbWUsCi0gICAgICAgICAgICApLAotICAgICAgICApCi0KLQotQHB5dGVzdC5maXh0dXJlCi1k
ZWYgY2Fwc3lzKHJlcXVlc3QpOgotICAgICIiIkVuYWJsZSBjYXB0dXJpbmcgb2Ygd3JpdGVzIHRv
IHN5cy5zdGRvdXQvc3lzLnN0ZGVyciBhbmQgbWFrZQotICAgIGNhcHR1cmVkIG91dHB1dCBhdmFp
bGFibGUgdmlhIGBgY2Fwc3lzLnJlYWRvdXRlcnIoKWBgIG1ldGhvZCBjYWxscwotICAgIHdoaWNo
IHJldHVybiBhIGBgKG91dCwgZXJyKWBgIHR1cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxs
IGJlIGBgdGV4dGBgCi0gICAgb2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25l
X2NhcHR1cmVfZml4dHVyZShyZXF1ZXN0LCAnY2Fwc3lzJykKLSAgICB3aXRoIF9pbnN0YWxsX2Nh
cHR1cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIFN5c0NhcHR1cmUpIGFzIGZpeHR1cmU6Ci0g
ICAgICAgIHlpZWxkIGZpeHR1cmUKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBzeXNiaW5h
cnkocmVxdWVzdCk6Ci0gICAgIiIiRW5hYmxlIGNhcHR1cmluZyBvZiB3cml0ZXMgdG8gc3lzLnN0
ZG91dC9zeXMuc3RkZXJyIGFuZCBtYWtlCi0gICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2
aWEgYGBjYXBzeXMucmVhZG91dGVycigpYGAgbWV0aG9kIGNhbGxzCi0gICAgd2hpY2ggcmV0dXJu
IGEgYGAob3V0LCBlcnIpYGAgdHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUgYGBi
eXRlc2BgCi0gICAgb2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1
cmVfZml4dHVyZShyZXF1ZXN0LCAnY2Fwc3lzYmluYXJ5JykKLSAgICAjIEN1cnJlbnRseSwgdGhl
IGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIHB5dGhvbjMgc3BlY2lmaWMgYC5idWZmZXJgCi0gICAg
IyBwcm9wZXJ0eSBvZiBDYXB0dXJlSU8uCi0gICAgaWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCk6
Ci0gICAgICAgIHJhaXNlIHJlcXVlc3QucmFpc2VlcnJvcignY2Fwc3lzYmluYXJ5IGlzIG9ubHkg
c3VwcG9ydGVkIG9uIHB5dGhvbiAzJykKLSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVy
ZV9vbl9pdGVtKHJlcXVlc3QsIFN5c0NhcHR1cmVCaW5hcnkpIGFzIGZpeHR1cmU6Ci0gICAgICAg
IHlpZWxkIGZpeHR1cmUKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBmZChyZXF1ZXN0KToK
LSAgICAiIiJFbmFibGUgY2FwdHVyaW5nIG9mIHdyaXRlcyB0byBmaWxlIGRlc2NyaXB0b3JzIDEg
YW5kIDIgYW5kIG1ha2UKLSAgICBjYXB0dXJlZCBvdXRwdXQgYXZhaWxhYmxlIHZpYSBgYGNhcGZk
LnJlYWRvdXRlcnIoKWBgIG1ldGhvZCBjYWxscwotICAgIHdoaWNoIHJldHVybiBhIGBgKG91dCwg
ZXJyKWBgIHR1cGxlLiAgYGBvdXRgYCBhbmQgYGBlcnJgYCB3aWxsIGJlIGBgdGV4dGBgCi0gICAg
b2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1cmVfZml4dHVyZShy
ZXF1ZXN0LCAnY2FwZmQnKQotICAgIGlmIG5vdCBoYXNhdHRyKG9zLCAnZHVwJyk6Ci0gICAgICAg
IHB5dGVzdC5za2lwKCJjYXBmZCBmaXh0dXJlIG5lZWRzIG9zLmR1cCBmdW5jdGlvbiB3aGljaCBp
cyBub3QgYXZhaWxhYmxlIGluIHRoaXMgc3lzdGVtIikKLSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1
cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIEZEQ2FwdHVyZSkgYXMgZml4dHVyZToKLSAgICAg
ICAgeWllbGQgZml4dHVyZQotCi0KLUBweXRlc3QuZml4dHVyZQotZGVmIGNhcGZkYmluYXJ5KHJl
cXVlc3QpOgotICAgICIiIkVuYWJsZSBjYXB0dXJpbmcgb2Ygd3JpdGUgdG8gZmlsZSBkZXNjcmlw
dG9ycyAxIGFuZCAyIGFuZCBtYWtlCi0gICAgY2FwdHVyZWQgb3V0cHV0IGF2YWlsYWJsZSB2aWEg
YGBjYXBmZGJpbmFyeS5yZWFkb3V0ZXJyYGAgbWV0aG9kIGNhbGxzCi0gICAgd2hpY2ggcmV0dXJu
IGEgYGAob3V0LCBlcnIpYGAgdHVwbGUuICBgYG91dGBgIGFuZCBgYGVycmBgIHdpbGwgYmUKLSAg
ICBgYGJ5dGVzYGAgb2JqZWN0cy4KLSAgICAiIiIKLSAgICBfZW5zdXJlX29ubHlfb25lX2NhcHR1
cmVfZml4dHVyZShyZXF1ZXN0LCAnY2FwZmRiaW5hcnknKQotICAgIGlmIG5vdCBoYXNhdHRyKG9z
LCAnZHVwJyk6Ci0gICAgICAgIHB5dGVzdC5za2lwKCJjYXBmZGJpbmFyeSBmaXh0dXJlIG5lZWRz
IG9zLmR1cCBmdW5jdGlvbiB3aGljaCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgc3lzdGVtIikK
LSAgICB3aXRoIF9pbnN0YWxsX2NhcHR1cmVfZml4dHVyZV9vbl9pdGVtKHJlcXVlc3QsIEZEQ2Fw
dHVyZUJpbmFyeSkgYXMgZml4dHVyZToKLSAgICAgICAgeWllbGQgZml4dHVyZQotCi0KLUBjb250
ZXh0bGliLmNvbnRleHRtYW5hZ2VyCi1kZWYgX2luc3RhbGxfY2FwdHVyZV9maXh0dXJlX29uX2l0
ZW0ocmVxdWVzdCwgY2FwdHVyZV9jbGFzcyk6Ci0gICAgIiIiCi0gICAgQ29udGV4dCBtYW5hZ2Vy
IHdoaWNoIGNyZWF0ZXMgYSBgYENhcHR1cmVGaXh0dXJlYGAgaW5zdGFuY2UgYW5kICJpbnN0YWxs
cyIgaXQgb24KLSAgICB0aGUgaXRlbS9ub2RlIG9mIHRoZSBnaXZlbiByZXF1ZXN0LiBVc2VkIGJ5
IGBgY2Fwc3lzYGAgYW5kIGBgY2FwZmRgYC4KLQotICAgIFRoZSBDYXB0dXJlRml4dHVyZSBpcyBh
ZGRlZCBhcyBhdHRyaWJ1dGUgb2YgdGhlIGl0ZW0gYmVjYXVzZSBpdCBuZWVkcyB0byBhY2Nlc3Nl
ZAotICAgIGJ5IGBgQ2FwdHVyZU1hbmFnZXJgYCBkdXJpbmcgaXRzIGBgcHl0ZXN0X3J1bnRlc3Rf
KmBgIGhvb2tzLgotICAgICIiIgotICAgIHJlcXVlc3Qubm9kZS5fY2FwdHVyZV9maXh0dXJlID0g
Zml4dHVyZSA9IENhcHR1cmVGaXh0dXJlKGNhcHR1cmVfY2xhc3MsIHJlcXVlc3QpCi0gICAgY2Fw
bWFuYWdlciA9IHJlcXVlc3QuY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCdjYXB0dXJl
bWFuYWdlcicpCi0gICAgIyBuZWVkIHRvIGFjdGl2ZSB0aGlzIGZpeHR1cmUgcmlnaHQgYXdheSBp
biBjYXNlIGl0IGlzIGJlaW5nIHVzZWQgYnkgYW5vdGhlciBmaXh0dXJlIChzZXR1cCBwaGFzZSkK
LSAgICAjIGlmIHRoaXMgZml4dHVyZSBpcyBiZWluZyB1c2VkIG9ubHkgYnkgYSB0ZXN0IGZ1bmN0
aW9uIChjYWxsIHBoYXNlKSwgdGhlbiB3ZSB3b3VsZG4ndCBuZWVkIHRoaXMKLSAgICAjIGFjdGl2
YXRpb24sIGJ1dCBpdCBkb2Vzbid0IGh1cnQKLSAgICBjYXBtYW5hZ2VyLmFjdGl2YXRlX2ZpeHR1
cmUocmVxdWVzdC5ub2RlKQotICAgIHlpZWxkIGZpeHR1cmUKLSAgICBmaXh0dXJlLmNsb3NlKCkK
LSAgICBkZWwgcmVxdWVzdC5ub2RlLl9jYXB0dXJlX2ZpeHR1cmUKLQotCi1jbGFzcyBDYXB0dXJl
Rml4dHVyZToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwdHVyZWNsYXNzLCByZXF1ZXN0KToK
LSAgICAgICAgc2VsZi5jYXB0dXJlY2xhc3MgPSBjYXB0dXJlY2xhc3MKLSAgICAgICAgc2VsZi5y
ZXF1ZXN0ID0gcmVxdWVzdAotCi0gICAgZGVmIF9zdGFydChzZWxmKToKLSAgICAgICAgc2VsZi5f
Y2FwdHVyZSA9IE11bHRpQ2FwdHVyZShvdXQ9VHJ1ZSwgZXJyPVRydWUsIGluXz1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDYXB0dXJlPXNlbGYuY2FwdHVyZWNs
YXNzKQotICAgICAgICBzZWxmLl9jYXB0dXJlLnN0YXJ0X2NhcHR1cmluZygpCi0KLSAgICBkZWYg
Y2xvc2Uoc2VsZik6Ci0gICAgICAgIGNhcCA9IHNlbGYuX19kaWN0X18ucG9wKCJfY2FwdHVyZSIs
IE5vbmUpCi0gICAgICAgIGlmIGNhcCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX291
dGVyciA9IGNhcC5wb3Bfb3V0ZXJyX3RvX29yaWcoKQotICAgICAgICAgICAgY2FwLnN0b3BfY2Fw
dHVyaW5nKCkKLQotICAgIGRlZiByZWFkb3V0ZXJyKHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZi5fY2FwdHVyZS5yZWFkb3V0ZXJyKCkKLSAgICAgICAgZXhjZXB0
IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX291dGVycgotCi0gICAg
QGNvbnRleHRsaWIuY29udGV4dG1hbmFnZXIKLSAgICBkZWYgZGlzYWJsZWQoc2VsZik6Ci0gICAg
ICAgIHNlbGYuX2NhcHR1cmUuc3VzcGVuZF9jYXB0dXJpbmcoKQotICAgICAgICBjYXBtYW5hZ2Vy
ID0gc2VsZi5yZXF1ZXN0LmNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbignY2FwdHVyZW1h
bmFnZXInKQotICAgICAgICBjYXBtYW5hZ2VyLnN1c3BlbmRfZ2xvYmFsX2NhcHR1cmUoaXRlbT1O
b25lLCBpbl89RmFsc2UpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkCi0gICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICBjYXBtYW5hZ2VyLnJlc3VtZV9nbG9iYWxfY2FwdHVyZSgp
Ci0gICAgICAgICAgICBzZWxmLl9jYXB0dXJlLnJlc3VtZV9jYXB0dXJpbmcoKQotCi0KLWRlZiBz
YWZlX3RleHRfZHVwZmlsZShmLCBtb2RlLCBkZWZhdWx0X2VuY29kaW5nPSJVVEY4Iik6Ci0gICAg
IiIiIHJldHVybiBhIG9wZW4gdGV4dCBmaWxlIG9iamVjdCB0aGF0J3MgYSBkdXBsaWNhdGUgb2Yg
ZiBvbiB0aGUKLSAgICAgICAgRkQtbGV2ZWwgaWYgcG9zc2libGUuCi0gICAgIiIiCi0gICAgZW5j
b2RpbmcgPSBnZXRhdHRyKGYsICJlbmNvZGluZyIsIE5vbmUpCi0gICAgdHJ5OgotICAgICAgICBm
ZCA9IGYuZmlsZW5vKCkKLSAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAgICBpZiAiYiIgbm90
IGluIGdldGF0dHIoZiwgIm1vZGUiLCAiIikgYW5kIGhhc2F0dHIoZiwgImVuY29kaW5nIik6Ci0g
ICAgICAgICAgICAjIHdlIHNlZW0gdG8gaGF2ZSBhIHRleHQgc3RyZWFtLCBsZXQncyBqdXN0IHVz
ZSBpdAotICAgICAgICAgICAgcmV0dXJuIGYKLSAgICBlbHNlOgotICAgICAgICBuZXdmZCA9IG9z
LmR1cChmZCkKLSAgICAgICAgaWYgImIiIG5vdCBpbiBtb2RlOgotICAgICAgICAgICAgbW9kZSAr
PSAiYiIKLSAgICAgICAgZiA9IG9zLmZkb3BlbihuZXdmZCwgbW9kZSwgMCkgICMgbm8gYnVmZmVy
aW5nCi0gICAgcmV0dXJuIEVuY29kZWRGaWxlKGYsIGVuY29kaW5nIG9yIGRlZmF1bHRfZW5jb2Rp
bmcpCi0KLQotY2xhc3MgRW5jb2RlZEZpbGUob2JqZWN0KToKLSAgICBlcnJvcnMgPSAic3RyaWN0
IiAgIyBwb3NzaWJseSBuZWVkZWQgYnkgcHkzIGNvZGUgKGlzc3VlNTU1KQotCi0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIGJ1ZmZlciwgZW5jb2RpbmcpOgotICAgICAgICBzZWxmLmJ1ZmZlciA9IGJ1
ZmZlcgotICAgICAgICBzZWxmLmVuY29kaW5nID0gZW5jb2RpbmcKLQotICAgIGRlZiB3cml0ZShz
ZWxmLCBvYmopOgotICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgc2l4LnRleHRfdHlwZSk6Ci0g
ICAgICAgICAgICBvYmogPSBvYmouZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIikKLSAg
ICAgICAgc2VsZi5idWZmZXIud3JpdGUob2JqKQotCi0gICAgZGVmIHdyaXRlbGluZXMoc2VsZiwg
bGluZWxpc3QpOgotICAgICAgICBkYXRhID0gJycuam9pbihsaW5lbGlzdCkKLSAgICAgICAgc2Vs
Zi53cml0ZShkYXRhKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG5hbWUoc2VsZik6Ci0gICAg
ICAgICIiIkVuc3VyZSB0aGF0IGZpbGUubmFtZSBpcyBhIHN0cmluZy4iIiIKLSAgICAgICAgcmV0
dXJuIHJlcHIoc2VsZi5idWZmZXIpCi0KLSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6
Ci0gICAgICAgIHJldHVybiBnZXRhdHRyKG9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsICJi
dWZmZXIiKSwgbmFtZSkKLQotCi1DYXB0dXJlUmVzdWx0ID0gY29sbGVjdGlvbnMubmFtZWR0dXBs
ZSgiQ2FwdHVyZVJlc3VsdCIsIFsib3V0IiwgImVyciJdKQotCi0KLWNsYXNzIE11bHRpQ2FwdHVy
ZShvYmplY3QpOgotICAgIG91dCA9IGVyciA9IGluXyA9IE5vbmUKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBvdXQ9VHJ1ZSwgZXJyPVRydWUsIGluXz1UcnVlLCBDYXB0dXJlPU5vbmUpOgotICAg
ICAgICBpZiBpbl86Ci0gICAgICAgICAgICBzZWxmLmluXyA9IENhcHR1cmUoMCkKLSAgICAgICAg
aWYgb3V0OgotICAgICAgICAgICAgc2VsZi5vdXQgPSBDYXB0dXJlKDEpCi0gICAgICAgIGlmIGVy
cjoKLSAgICAgICAgICAgIHNlbGYuZXJyID0gQ2FwdHVyZSgyKQotCi0gICAgZGVmIHN0YXJ0X2Nh
cHR1cmluZyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5pbl86Ci0gICAgICAgICAgICBzZWxmLmlu
Xy5zdGFydCgpCi0gICAgICAgIGlmIHNlbGYub3V0OgotICAgICAgICAgICAgc2VsZi5vdXQuc3Rh
cnQoKQotICAgICAgICBpZiBzZWxmLmVycjoKLSAgICAgICAgICAgIHNlbGYuZXJyLnN0YXJ0KCkK
LQotICAgIGRlZiBwb3Bfb3V0ZXJyX3RvX29yaWcoc2VsZik6Ci0gICAgICAgICIiIiBwb3AgY3Vy
cmVudCBzbmFwc2hvdCBvdXQvZXJyIGNhcHR1cmUgYW5kIGZsdXNoIHRvIG9yaWcgc3RyZWFtcy4g
IiIiCi0gICAgICAgIG91dCwgZXJyID0gc2VsZi5yZWFkb3V0ZXJyKCkKLSAgICAgICAgaWYgb3V0
OgotICAgICAgICAgICAgc2VsZi5vdXQud3JpdGVvcmcob3V0KQotICAgICAgICBpZiBlcnI6Ci0g
ICAgICAgICAgICBzZWxmLmVyci53cml0ZW9yZyhlcnIpCi0gICAgICAgIHJldHVybiBvdXQsIGVy
cgotCi0gICAgZGVmIHN1c3BlbmRfY2FwdHVyaW5nKHNlbGYsIGluXz1GYWxzZSk6Ci0gICAgICAg
IGlmIHNlbGYub3V0OgotICAgICAgICAgICAgc2VsZi5vdXQuc3VzcGVuZCgpCi0gICAgICAgIGlm
IHNlbGYuZXJyOgotICAgICAgICAgICAgc2VsZi5lcnIuc3VzcGVuZCgpCi0gICAgICAgIGlmIGlu
XyBhbmQgc2VsZi5pbl86Ci0gICAgICAgICAgICBzZWxmLmluXy5zdXNwZW5kKCkKLSAgICAgICAg
ICAgIHNlbGYuX2luX3N1c3BlbmRlZCA9IFRydWUKLQotICAgIGRlZiByZXN1bWVfY2FwdHVyaW5n
KHNlbGYpOgotICAgICAgICBpZiBzZWxmLm91dDoKLSAgICAgICAgICAgIHNlbGYub3V0LnJlc3Vt
ZSgpCi0gICAgICAgIGlmIHNlbGYuZXJyOgotICAgICAgICAgICAgc2VsZi5lcnIucmVzdW1lKCkK
LSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiX2luX3N1c3BlbmRlZCIpOgotICAgICAgICAgICAg
c2VsZi5pbl8ucmVzdW1lKCkKLSAgICAgICAgICAgIGRlbCBzZWxmLl9pbl9zdXNwZW5kZWQKLQot
ICAgIGRlZiBzdG9wX2NhcHR1cmluZyhzZWxmKToKLSAgICAgICAgIiIiIHN0b3AgY2FwdHVyaW5n
IGFuZCByZXNldCBjYXB0dXJpbmcgc3RyZWFtcyAiIiIKLSAgICAgICAgaWYgaGFzYXR0cihzZWxm
LCAnX3Jlc2V0Jyk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ3YXMgYWxyZWFkeSBz
dG9wcGVkIikKLSAgICAgICAgc2VsZi5fcmVzZXQgPSBUcnVlCi0gICAgICAgIGlmIHNlbGYub3V0
OgotICAgICAgICAgICAgc2VsZi5vdXQuZG9uZSgpCi0gICAgICAgIGlmIHNlbGYuZXJyOgotICAg
ICAgICAgICAgc2VsZi5lcnIuZG9uZSgpCi0gICAgICAgIGlmIHNlbGYuaW5fOgotICAgICAgICAg
ICAgc2VsZi5pbl8uZG9uZSgpCi0KLSAgICBkZWYgcmVhZG91dGVycihzZWxmKToKLSAgICAgICAg
IiIiIHJldHVybiBzbmFwc2hvdCB1bmljb2RlIHZhbHVlIG9mIHN0ZG91dC9zdGRlcnIgY2FwdHVy
aW5ncy4gIiIiCi0gICAgICAgIHJldHVybiBDYXB0dXJlUmVzdWx0KHNlbGYub3V0LnNuYXAoKSBp
ZiBzZWxmLm91dCBpcyBub3QgTm9uZSBlbHNlICIiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLmVyci5zbmFwKCkgaWYgc2VsZi5lcnIgaXMgbm90IE5vbmUgZWxzZSAiIikKLQot
Ci1jbGFzcyBOb0NhcHR1cmU6Ci0gICAgX19pbml0X18gPSBzdGFydCA9IGRvbmUgPSBzdXNwZW5k
ID0gcmVzdW1lID0gbGFtYmRhICphcmdzOiBOb25lCi0KLQotY2xhc3MgRkRDYXB0dXJlQmluYXJ5
OgotICAgICIiIkNhcHR1cmUgSU8gdG8vZnJvbSBhIGdpdmVuIG9zLWxldmVsIGZpbGVkZXNjcmlw
dG9yLgotCi0gICAgc25hcCgpIHByb2R1Y2VzIGBieXRlc2AKLSAgICAiIiIKLQotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCB0YXJnZXRmZCwgdG1wZmlsZT1Ob25lKToKLSAgICAgICAgc2VsZi50YXJn
ZXRmZCA9IHRhcmdldGZkCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYudGFyZ2V0ZmRf
c2F2ZSA9IG9zLmR1cChzZWxmLnRhcmdldGZkKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAg
ICAgICAgICAgIHNlbGYuc3RhcnQgPSBsYW1iZGE6IE5vbmUKLSAgICAgICAgICAgIHNlbGYuZG9u
ZSA9IGxhbWJkYTogTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgdGFyZ2V0ZmQg
PT0gMDoKLSAgICAgICAgICAgICAgICBhc3NlcnQgbm90IHRtcGZpbGUsICJjYW5ub3Qgc2V0IHRt
cGZpbGUgd2l0aCBzdGRpbiIKLSAgICAgICAgICAgICAgICB0bXBmaWxlID0gb3Blbihvcy5kZXZu
dWxsLCAiciIpCi0gICAgICAgICAgICAgICAgc2VsZi5zeXNjYXB0dXJlID0gU3lzQ2FwdHVyZSh0
YXJnZXRmZCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaWYgdG1wZmlsZSBp
cyBOb25lOgotICAgICAgICAgICAgICAgICAgICBmID0gVGVtcG9yYXJ5RmlsZSgpCi0gICAgICAg
ICAgICAgICAgICAgIHdpdGggZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHRtcGZpbGUgPSBz
YWZlX3RleHRfZHVwZmlsZShmLCBtb2RlPSJ3YisiKQotICAgICAgICAgICAgICAgIGlmIHRhcmdl
dGZkIGluIHBhdGNoc3lzZGljdDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5zeXNjYXB0dXJl
ID0gU3lzQ2FwdHVyZSh0YXJnZXRmZCwgdG1wZmlsZSkKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICBzZWxmLnN5c2NhcHR1cmUgPSBOb0NhcHR1cmUoKQotICAgICAg
ICAgICAgc2VsZi50bXBmaWxlID0gdG1wZmlsZQotICAgICAgICAgICAgc2VsZi50bXBmaWxlX2Zk
ID0gdG1wZmlsZS5maWxlbm8oKQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gIjxGRENhcHR1cmUgJXMgb2xkZmQ9JXM+IiAlIChzZWxmLnRhcmdldGZkLCBzZWxmLnRh
cmdldGZkX3NhdmUpCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAgICAgICIiIiBTdGFydCBj
YXB0dXJpbmcgb24gdGFyZ2V0ZmQgdXNpbmcgbWVtb3JpemVkIHRtcGZpbGUuICIiIgotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBvcy5mc3RhdChzZWxmLnRhcmdldGZkX3NhdmUpCi0gICAgICAg
IGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgotICAgICAgICAgICAgcmFpc2UgVmFs
dWVFcnJvcigic2F2ZWQgZmlsZWRlc2NyaXB0b3Igbm90IHZhbGlkIGFueW1vcmUiKQotICAgICAg
ICBvcy5kdXAyKHNlbGYudG1wZmlsZV9mZCwgc2VsZi50YXJnZXRmZCkKLSAgICAgICAgc2VsZi5z
eXNjYXB0dXJlLnN0YXJ0KCkKLQotICAgIGRlZiBzbmFwKHNlbGYpOgotICAgICAgICBzZWxmLnRt
cGZpbGUuc2VlaygwKQotICAgICAgICByZXMgPSBzZWxmLnRtcGZpbGUucmVhZCgpCi0gICAgICAg
IHNlbGYudG1wZmlsZS5zZWVrKDApCi0gICAgICAgIHNlbGYudG1wZmlsZS50cnVuY2F0ZSgpCi0g
ICAgICAgIHJldHVybiByZXMKLQotICAgIGRlZiBkb25lKHNlbGYpOgotICAgICAgICAiIiIgc3Rv
cCBjYXB0dXJpbmcsIHJlc3RvcmUgc3RyZWFtcywgcmV0dXJuIG9yaWdpbmFsIGNhcHR1cmUgZmls
ZSwKLSAgICAgICAgc2Vla2VkIHRvIHBvc2l0aW9uIHplcm8uICIiIgotICAgICAgICB0YXJnZXRm
ZF9zYXZlID0gc2VsZi5fX2RpY3RfXy5wb3AoInRhcmdldGZkX3NhdmUiKQotICAgICAgICBvcy5k
dXAyKHRhcmdldGZkX3NhdmUsIHNlbGYudGFyZ2V0ZmQpCi0gICAgICAgIG9zLmNsb3NlKHRhcmdl
dGZkX3NhdmUpCi0gICAgICAgIHNlbGYuc3lzY2FwdHVyZS5kb25lKCkKLSAgICAgICAgc2VsZi50
bXBmaWxlLmNsb3NlKCkKLQotICAgIGRlZiBzdXNwZW5kKHNlbGYpOgotICAgICAgICBzZWxmLnN5
c2NhcHR1cmUuc3VzcGVuZCgpCi0gICAgICAgIG9zLmR1cDIoc2VsZi50YXJnZXRmZF9zYXZlLCBz
ZWxmLnRhcmdldGZkKQotCi0gICAgZGVmIHJlc3VtZShzZWxmKToKLSAgICAgICAgc2VsZi5zeXNj
YXB0dXJlLnJlc3VtZSgpCi0gICAgICAgIG9zLmR1cDIoc2VsZi50bXBmaWxlX2ZkLCBzZWxmLnRh
cmdldGZkKQotCi0gICAgZGVmIHdyaXRlb3JnKHNlbGYsIGRhdGEpOgotICAgICAgICAiIiIgd3Jp
dGUgdG8gb3JpZ2luYWwgZmlsZSBkZXNjcmlwdG9yLiAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5j
ZShkYXRhLCBzaXgudGV4dF90eXBlKToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhLmVuY29kZSgi
dXRmOCIpICAjIFhYWCB1c2UgZW5jb2Rpbmcgb2Ygb3JpZ2luYWwgc3RyZWFtCi0gICAgICAgIG9z
LndyaXRlKHNlbGYudGFyZ2V0ZmRfc2F2ZSwgZGF0YSkKLQotCi1jbGFzcyBGRENhcHR1cmUoRkRD
YXB0dXJlQmluYXJ5KToKLSAgICAiIiJDYXB0dXJlIElPIHRvL2Zyb20gYSBnaXZlbiBvcy1sZXZl
bCBmaWxlZGVzY3JpcHRvci4KLQotICAgIHNuYXAoKSBwcm9kdWNlcyB0ZXh0Ci0gICAgIiIiCi0g
ICAgZGVmIHNuYXAoc2VsZik6Ci0gICAgICAgIHJlcyA9IEZEQ2FwdHVyZUJpbmFyeS5zbmFwKHNl
bGYpCi0gICAgICAgIGVuYyA9IGdldGF0dHIoc2VsZi50bXBmaWxlLCAiZW5jb2RpbmciLCBOb25l
KQotICAgICAgICBpZiBlbmMgYW5kIGlzaW5zdGFuY2UocmVzLCBieXRlcyk6Ci0gICAgICAgICAg
ICByZXMgPSBzaXgudGV4dF90eXBlKHJlcywgZW5jLCAicmVwbGFjZSIpCi0gICAgICAgIHJldHVy
biByZXMKLQotCi1jbGFzcyBTeXNDYXB0dXJlOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmZCwg
dG1wZmlsZT1Ob25lKToKLSAgICAgICAgbmFtZSA9IHBhdGNoc3lzZGljdFtmZF0KLSAgICAgICAg
c2VsZi5fb2xkID0gZ2V0YXR0cihzeXMsIG5hbWUpCi0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUK
LSAgICAgICAgaWYgdG1wZmlsZSBpcyBOb25lOgotICAgICAgICAgICAgaWYgbmFtZSA9PSAic3Rk
aW4iOgotICAgICAgICAgICAgICAgIHRtcGZpbGUgPSBEb250UmVhZEZyb21JbnB1dCgpCi0gICAg
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHRtcGZpbGUgPSBDYXB0dXJlSU8oKQotICAg
ICAgICBzZWxmLnRtcGZpbGUgPSB0bXBmaWxlCi0KLSAgICBkZWYgc3RhcnQoc2VsZik6Ci0gICAg
ICAgIHNldGF0dHIoc3lzLCBzZWxmLm5hbWUsIHNlbGYudG1wZmlsZSkKLQotICAgIGRlZiBzbmFw
KHNlbGYpOgotICAgICAgICByZXMgPSBzZWxmLnRtcGZpbGUuZ2V0dmFsdWUoKQotICAgICAgICBz
ZWxmLnRtcGZpbGUuc2VlaygwKQotICAgICAgICBzZWxmLnRtcGZpbGUudHJ1bmNhdGUoKQotICAg
ICAgICByZXR1cm4gcmVzCi0KLSAgICBkZWYgZG9uZShzZWxmKToKLSAgICAgICAgc2V0YXR0cihz
eXMsIHNlbGYubmFtZSwgc2VsZi5fb2xkKQotICAgICAgICBkZWwgc2VsZi5fb2xkCi0gICAgICAg
IHNlbGYudG1wZmlsZS5jbG9zZSgpCi0KLSAgICBkZWYgc3VzcGVuZChzZWxmKToKLSAgICAgICAg
c2V0YXR0cihzeXMsIHNlbGYubmFtZSwgc2VsZi5fb2xkKQotCi0gICAgZGVmIHJlc3VtZShzZWxm
KToKLSAgICAgICAgc2V0YXR0cihzeXMsIHNlbGYubmFtZSwgc2VsZi50bXBmaWxlKQotCi0gICAg
ZGVmIHdyaXRlb3JnKHNlbGYsIGRhdGEpOgotICAgICAgICBzZWxmLl9vbGQud3JpdGUoZGF0YSkK
LSAgICAgICAgc2VsZi5fb2xkLmZsdXNoKCkKLQotCi1jbGFzcyBTeXNDYXB0dXJlQmluYXJ5KFN5
c0NhcHR1cmUpOgotICAgIGRlZiBzbmFwKHNlbGYpOgotICAgICAgICByZXMgPSBzZWxmLnRtcGZp
bGUuYnVmZmVyLmdldHZhbHVlKCkKLSAgICAgICAgc2VsZi50bXBmaWxlLnNlZWsoMCkKLSAgICAg
ICAgc2VsZi50bXBmaWxlLnRydW5jYXRlKCkKLSAgICAgICAgcmV0dXJuIHJlcwotCi0KLWNsYXNz
IERvbnRSZWFkRnJvbUlucHV0OgotICAgICIiIlRlbXBvcmFyeSBzdHViIGNsYXNzLiAgSWRlYWxs
eSB3aGVuIHN0ZGluIGlzIGFjY2Vzc2VkLCB0aGUKLSAgICBjYXB0dXJpbmcgc2hvdWxkIGJlIHR1
cm5lZCBvZmYsIHdpdGggcG9zc2libHkgYWxsIGRhdGEgY2FwdHVyZWQKLSAgICBzbyBmYXIgc2Vu
dCB0byB0aGUgc2NyZWVuLiAgVGhpcyBzaG91bGQgYmUgY29uZmlndXJhYmxlLCB0aG91Z2gsCi0g
ICAgYmVjYXVzZSBpbiBhdXRvbWF0ZWQgdGVzdCBydW5zIGl0IGlzIGJldHRlciB0byBjcmFzaCB0
aGFuCi0gICAgaGFuZyBpbmRlZmluaXRlbHkuCi0gICAgIiIiCi0KLSAgICBlbmNvZGluZyA9IE5v
bmUKLQotICAgIGRlZiByZWFkKHNlbGYsICphcmdzKToKLSAgICAgICAgcmFpc2UgSU9FcnJvcigi
cmVhZGluZyBmcm9tIHN0ZGluIHdoaWxlIG91dHB1dCBpcyBjYXB0dXJlZCIpCi0gICAgcmVhZGxp
bmUgPSByZWFkCi0gICAgcmVhZGxpbmVzID0gcmVhZAotICAgIF9faXRlcl9fID0gcmVhZAotCi0g
ICAgZGVmIGZpbGVubyhzZWxmKToKLSAgICAgICAgcmFpc2UgVW5zdXBwb3J0ZWRPcGVyYXRpb24o
InJlZGlyZWN0ZWQgc3RkaW4gaXMgcHNldWRvZmlsZSwgIgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiaGFzIG5vIGZpbGVubygpIikKLQotICAgIGRlZiBpc2F0dHkoc2VsZik6
Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBw
YXNzCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgYnVmZmVyKHNlbGYpOgotICAgICAgICBpZiBz
eXMudmVyc2lvbl9pbmZvID49ICgzLCAwKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigncmVkaXJlY3RlZCBz
dGRpbiBoYXMgbm8gYXR0cmlidXRlIGJ1ZmZlcicpCi0KLQotZGVmIF9jb2xvcmFtYV93b3JrYXJv
dW5kKCk6Ci0gICAgIiIiCi0gICAgRW5zdXJlIGNvbG9yYW1hIGlzIGltcG9ydGVkIHNvIHRoYXQg
aXQgYXR0YWNoZXMgdG8gdGhlIGNvcnJlY3Qgc3RkaW8KLSAgICBoYW5kbGVzIG9uIFdpbmRvd3Mu
Ci0KLSAgICBjb2xvcmFtYSB1c2VzIHRoZSB0ZXJtaW5hbCBvbiBpbXBvcnQgdGltZS4gU28gaWYg
c29tZXRoaW5nIGRvZXMgdGhlCi0gICAgZmlyc3QgaW1wb3J0IG9mIGNvbG9yYW1hIHdoaWxlIEkv
TyBjYXB0dXJlIGlzIGFjdGl2ZSwgY29sb3JhbWEgd2lsbAotICAgIGZhaWwgaW4gdmFyaW91cyB3
YXlzLgotICAgICIiIgotCi0gICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4z
MicpOgotICAgICAgICByZXR1cm4KLSAgICB0cnk6Ci0gICAgICAgIGltcG9ydCBjb2xvcmFtYSAg
IyBub3FhCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KLQotZGVmIF9y
ZWFkbGluZV93b3JrYXJvdW5kKCk6Ci0gICAgIiIiCi0gICAgRW5zdXJlIHJlYWRsaW5lIGlzIGlt
cG9ydGVkIHNvIHRoYXQgaXQgYXR0YWNoZXMgdG8gdGhlIGNvcnJlY3Qgc3RkaW8KLSAgICBoYW5k
bGVzIG9uIFdpbmRvd3MuCi0KLSAgICBQZGIgdXNlcyByZWFkbGluZSBzdXBwb3J0IHdoZXJlIGF2
YWlsYWJsZS0td2hlbiBub3QgcnVubmluZyBmcm9tIHRoZSBQeXRob24KLSAgICBwcm9tcHQsIHRo
ZSByZWFkbGluZSBtb2R1bGUgaXMgbm90IGltcG9ydGVkIHVudGlsIHJ1bm5pbmcgdGhlIHBkYiBS
RVBMLiAgSWYKLSAgICBydW5uaW5nIHB5dGVzdCB3aXRoIHRoZSAtLXBkYiBvcHRpb24gdGhpcyBt
ZWFucyB0aGUgcmVhZGxpbmUgbW9kdWxlIGlzIG5vdAotICAgIGltcG9ydGVkIHVudGlsIGFmdGVy
IEkvTyBjYXB0dXJlIGhhcyBiZWVuIHN0YXJ0ZWQuCi0KLSAgICBUaGlzIGlzIGEgcHJvYmxlbSBm
b3IgcHlyZWFkbGluZSwgd2hpY2ggaXMgb2Z0ZW4gdXNlZCB0byBpbXBsZW1lbnQgcmVhZGxpbmUK
LSAgICBzdXBwb3J0IG9uIFdpbmRvd3MsIGFzIGl0IGRvZXMgbm90IGF0dGFjaCB0byB0aGUgY29y
cmVjdCBoYW5kbGVzIGZvciBzdGRvdXQKLSAgICBhbmQvb3Igc3RkaW4gaWYgdGhleSBoYXZlIGJl
ZW4gcmVkaXJlY3RlZCBieSB0aGUgRkRDYXB0dXJlIG1lY2hhbmlzbS4gIFRoaXMKLSAgICB3b3Jr
YXJvdW5kIGVuc3VyZXMgdGhhdCByZWFkbGluZSBpcyBpbXBvcnRlZCBiZWZvcmUgSS9PIGNhcHR1
cmUgaXMgc2V0dXAgc28KLSAgICB0aGF0IGl0IGNhbiBhdHRhY2ggdG8gdGhlIGFjdHVhbCBzdGRp
bi9vdXQgZm9yIHRoZSBjb25zb2xlLgotCi0gICAgU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRl
c3QtZGV2L3B5dGVzdC9wdWxsLzEyODEKLSAgICAiIiIKLQotICAgIGlmIG5vdCBzeXMucGxhdGZv
cm0uc3RhcnRzd2l0aCgnd2luMzInKToKLSAgICAgICAgcmV0dXJuCi0gICAgdHJ5OgotICAgICAg
ICBpbXBvcnQgcmVhZGxpbmUgICMgbm9xYQotICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAg
ICAgcGFzcwotCi0KLWRlZiBfcHkzNl93aW5kb3dzY29uc29sZWlvX3dvcmthcm91bmQoc3RyZWFt
KToKLSAgICAiIiIKLSAgICBQeXRob24gMy42IGltcGxlbWVudGVkIHVuaWNvZGUgY29uc29sZSBo
YW5kbGluZyBmb3IgV2luZG93cy4gVGhpcyB3b3JrcwotICAgIGJ5IHJlYWRpbmcvd3JpdGluZyB0
byB0aGUgcmF3IGNvbnNvbGUgaGFuZGxlIHVzaW5nCi0gICAgYGB7UmVhZCxXcml0ZX1Db25zb2xl
V2BgLgotCi0gICAgVGhlIHByb2JsZW0gaXMgdGhhdCB3ZSBhcmUgZ29pbmcgdG8gYGBkdXAyYGAg
b3ZlciB0aGUgc3RkaW8gZmlsZQotICAgIGRlc2NyaXB0b3JzIHdoZW4gZG9pbmcgYGBGRENhcHR1
cmVgYCBhbmQgdGhpcyB3aWxsIGBgQ2xvc2VIYW5kbGVgYCB0aGUKLSAgICBoYW5kbGVzIHVzZWQg
YnkgUHl0aG9uIHRvIHdyaXRlIHRvIHRoZSBjb25zb2xlLiBUaG91Z2ggdGhlcmUgaXMgc3RpbGwg
c29tZQotICAgIHdlaXJkbmVzcyBhbmQgdGhlIGNvbnNvbGUgaGFuZGxlIHNlZW1zIHRvIG9ubHkg
YmUgY2xvc2VkIHJhbmRvbWx5IGFuZCBub3QKLSAgICBvbiB0aGUgZmlyc3QgY2FsbCB0byBgYENs
b3NlSGFuZGxlYGAsIG9yIG1heWJlIGl0IGdldHMgcmVvcGVuZWQgd2l0aCB0aGUKLSAgICBzYW1l
IGhhbmRsZSB2YWx1ZSB3aGVuIHdlIHN1c3BlbmQgY2FwdHVyaW5nLgotCi0gICAgVGhlIHdvcmth
cm91bmQgaW4gdGhpcyBjYXNlIHdpbGwgcmVvcGVuIHN0ZGlvIHdpdGggYSBkaWZmZXJlbnQgZmQg
d2hpY2gKLSAgICBhbHNvIG1lYW5zIGEgZGlmZmVyZW50IGhhbmRsZSBieSByZXBsaWNhdGluZyB0
aGUgbG9naWMgaW4KLSAgICAiUHlfbGlmZWN5Y2xlLmM6aW5pdHN0ZGlvL2NyZWF0ZV9zdGRpbyIu
Ci0KLSAgICA6cGFyYW0gc3RyZWFtOiBpbiBwcmFjdGljZSBgYHN5cy5zdGRvdXRgYCBvciBgYHN5
cy5zdGRlcnJgYCwgYnV0IGdpdmVuCi0gICAgICAgIGhlcmUgYXMgcGFyYW1ldGVyIGZvciB1bml0
dGVzdGluZyBwdXJwb3Nlcy4KLQotICAgIFNlZSBodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRl
di9weS9pc3N1ZXMvMTAzCi0gICAgIiIiCi0gICAgaWYgbm90IHN5cy5wbGF0Zm9ybS5zdGFydHN3
aXRoKCd3aW4zMicpIG9yIHN5cy52ZXJzaW9uX2luZm9bOjJdIDwgKDMsIDYpOgotICAgICAgICBy
ZXR1cm4KLQotICAgICMgYmFpbCBvdXQgaWYgYGBzdHJlYW1gYCBkb2Vzbid0IHNlZW0gbGlrZSBh
IHByb3BlciBgYGlvYGAgc3RyZWFtICgjMjY2NikKLSAgICBpZiBub3QgaGFzYXR0cihzdHJlYW0s
ICdidWZmZXInKToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBidWZmZXJlZCA9IGhhc2F0dHIoc3Ry
ZWFtLmJ1ZmZlciwgJ3JhdycpCi0gICAgcmF3X3N0ZG91dCA9IHN0cmVhbS5idWZmZXIucmF3IGlm
IGJ1ZmZlcmVkIGVsc2Ugc3RyZWFtLmJ1ZmZlcgotCi0gICAgaWYgbm90IGlzaW5zdGFuY2UocmF3
X3N0ZG91dCwgaW8uX1dpbmRvd3NDb25zb2xlSU8pOgotICAgICAgICByZXR1cm4KLQotICAgIGRl
ZiBfcmVvcGVuX3N0ZGlvKGYsIG1vZGUpOgotICAgICAgICBpZiBub3QgYnVmZmVyZWQgYW5kIG1v
ZGVbMF0gPT0gJ3cnOgotICAgICAgICAgICAgYnVmZmVyaW5nID0gMAotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgYnVmZmVyaW5nID0gLTEKLQotICAgICAgICByZXR1cm4gaW8uVGV4dElPV3Jh
cHBlcigKLSAgICAgICAgICAgIG9wZW4ob3MuZHVwKGYuZmlsZW5vKCkpLCBtb2RlLCBidWZmZXJp
bmcpLAotICAgICAgICAgICAgZi5lbmNvZGluZywKLSAgICAgICAgICAgIGYuZXJyb3JzLAotICAg
ICAgICAgICAgZi5uZXdsaW5lcywKLSAgICAgICAgICAgIGYubGluZV9idWZmZXJpbmcpCi0KLSAg
ICBzeXMuX19zdGRpbl9fID0gc3lzLnN0ZGluID0gX3Jlb3Blbl9zdGRpbyhzeXMuc3RkaW4sICdy
YicpCi0gICAgc3lzLl9fc3Rkb3V0X18gPSBzeXMuc3Rkb3V0ID0gX3Jlb3Blbl9zdGRpbyhzeXMu
c3Rkb3V0LCAnd2InKQotICAgIHN5cy5fX3N0ZGVycl9fID0gc3lzLnN0ZGVyciA9IF9yZW9wZW5f
c3RkaW8oc3lzLnN0ZGVyciwgJ3diJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
Y29tcGF0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jb21wYXQucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDc1NjBmYmVjMzk3NTU1NzQ3ZmMxNGEzYWFlMjM4Njg2Njg3OGMxODAu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9jb21wYXQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwzMjIgKzAsMCBAQAotIiIi
Ci1weXRob24gdmVyc2lvbiBjb21wYXRpYmlsaXR5IGNvZGUKLSIiIgotZnJvbSBfX2Z1dHVyZV9f
IGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBv
cnQgY29kZWNzCi1pbXBvcnQgZnVuY3Rvb2xzCi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0IHJlCi1p
bXBvcnQgc3lzCi0KLWltcG9ydCBweQotCi1pbXBvcnQgX3B5dGVzdAotZnJvbSBfcHl0ZXN0Lm91
dGNvbWVzIGltcG9ydCBURVNUX09VVENPTUUKLQotdHJ5OgotICAgIGltcG9ydCBlbnVtCi1leGNl
cHQgSW1wb3J0RXJyb3I6ICAjIHByYWdtYTogbm8gY292ZXIKLSAgICAjIE9ubHkgYXZhaWxhYmxl
IGluIFB5dGhvbiAzLjQrIG9yIGFzIGEgYmFja3BvcnQKLSAgICBlbnVtID0gTm9uZQotCi0KLV9Q
WTMgPSBzeXMudmVyc2lvbl9pbmZvID4gKDMsIDApCi1fUFkyID0gbm90IF9QWTMKLQotCi1pZiBf
UFkzOgotICAgIGZyb20gaW5zcGVjdCBpbXBvcnQgc2lnbmF0dXJlLCBQYXJhbWV0ZXIgYXMgUGFy
YW1ldGVyCi1lbHNlOgotICAgIGZyb20gZnVuY3NpZ3MgaW1wb3J0IHNpZ25hdHVyZSwgUGFyYW1l
dGVyIGFzIFBhcmFtZXRlcgotCi0KLU5vbmVUeXBlID0gdHlwZShOb25lKQotTk9UU0VUID0gb2Jq
ZWN0KCkKLQotUFkzNSA9IHN5cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCA1KQotUFkzNiA9IHN5
cy52ZXJzaW9uX2luZm9bOjJdID49ICgzLCA2KQotTU9EVUxFX05PVF9GT1VORF9FUlJPUiA9ICdN
b2R1bGVOb3RGb3VuZEVycm9yJyBpZiBQWTM2IGVsc2UgJ0ltcG9ydEVycm9yJwotCi0KLWRlZiBf
Zm9ybWF0X2FyZ3MoZnVuYyk6Ci0gICAgcmV0dXJuIHN0cihzaWduYXR1cmUoZnVuYykpCi0KLQot
aXNmdW5jdGlvbiA9IGluc3BlY3QuaXNmdW5jdGlvbgotaXNjbGFzcyA9IGluc3BlY3QuaXNjbGFz
cwotIyB1c2VkIHRvIHdvcmsgYXJvdW5kIGEgcHl0aG9uMiBleGNlcHRpb24gaW5mbyBsZWFrCi1l
eGNfY2xlYXIgPSBnZXRhdHRyKHN5cywgJ2V4Y19jbGVhcicsIGxhbWJkYTogTm9uZSkKLSMgVGhl
IHR5cGUgb2YgcmUuY29tcGlsZSBvYmplY3RzIGlzIG5vdCBleHBvc2VkIGluIFB5dGhvbi4KLVJF
R0VYX1RZUEUgPSB0eXBlKHJlLmNvbXBpbGUoJycpKQotCi0KLWRlZiBpc19nZW5lcmF0b3IoZnVu
Yyk6Ci0gICAgZ2VuZnVuYyA9IGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbihmdW5jKQotICAg
IHJldHVybiBnZW5mdW5jIGFuZCBub3QgaXNjb3JvdXRpbmVmdW5jdGlvbihmdW5jKQotCi0KLWRl
ZiBpc2Nvcm91dGluZWZ1bmN0aW9uKGZ1bmMpOgotICAgICIiIlJldHVybiBUcnVlIGlmIGZ1bmMg
aXMgYSBkZWNvcmF0ZWQgY29yb3V0aW5lIGZ1bmN0aW9uLgotCi0gICAgTm90ZTogY29waWVkIGFu
ZCBtb2RpZmllZCBmcm9tIFB5dGhvbiAzLjUncyBidWlsdGluIGNvdXJvdXRpbmVzLnB5IHRvIGF2
b2lkIGltcG9ydCBhc3luY2lvIGRpcmVjdGx5LAotICAgIHdoaWNoIGluIHR1cm5zIGFsc28gaW5p
dGlhbGl6ZXMgdGhlICJsb2dnaW5nIiBtb2R1bGUgYXMgc2lkZS1lZmZlY3QgKHNlZSBpc3N1ZSAj
OCkuCi0gICAgIiIiCi0gICAgcmV0dXJuIChnZXRhdHRyKGZ1bmMsICdfaXNfY29yb3V0aW5lJywg
RmFsc2UpIG9yCi0gICAgICAgICAgICAoaGFzYXR0cihpbnNwZWN0LCAnaXNjb3JvdXRpbmVmdW5j
dGlvbicpIGFuZCBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24oZnVuYykpKQotCi0KLWRlZiBn
ZXRsb2NhdGlvbihmdW5jdGlvbiwgY3VyZGlyKToKLSAgICBmbiA9IHB5LnBhdGgubG9jYWwoaW5z
cGVjdC5nZXRmaWxlKGZ1bmN0aW9uKSkKLSAgICBsaW5lbm8gPSBweS5idWlsdGluLl9nZXRjb2Rl
KGZ1bmN0aW9uKS5jb19maXJzdGxpbmVubwotICAgIGlmIGZuLnJlbHRvKGN1cmRpcik6Ci0gICAg
ICAgIGZuID0gZm4ucmVsdG8oY3VyZGlyKQotICAgIHJldHVybiAiJXM6JWQiICUgKGZuLCBsaW5l
bm8gKyAxKQotCi0KLWRlZiBudW1fbW9ja19wYXRjaF9hcmdzKGZ1bmN0aW9uKToKLSAgICAiIiIg
cmV0dXJuIG51bWJlciBvZiBhcmd1bWVudHMgdXNlZCB1cCBieSBtb2NrIGFyZ3VtZW50cyAoaWYg
YW55KSAiIiIKLSAgICBwYXRjaGluZ3MgPSBnZXRhdHRyKGZ1bmN0aW9uLCAicGF0Y2hpbmdzIiwg
Tm9uZSkKLSAgICBpZiBub3QgcGF0Y2hpbmdzOgotICAgICAgICByZXR1cm4gMAotICAgIG1vY2sg
PSBzeXMubW9kdWxlcy5nZXQoIm1vY2siLCBzeXMubW9kdWxlcy5nZXQoInVuaXR0ZXN0Lm1vY2si
LCBOb25lKSkKLSAgICBpZiBtb2NrIGlzIG5vdCBOb25lOgotICAgICAgICByZXR1cm4gbGVuKFtw
IGZvciBwIGluIHBhdGNoaW5ncwotICAgICAgICAgICAgICAgICAgICBpZiBub3QgcC5hdHRyaWJ1
dGVfbmFtZSBhbmQgcC5uZXcgaXMgbW9jay5ERUZBVUxUXSkKLSAgICByZXR1cm4gbGVuKHBhdGNo
aW5ncykKLQotCi1kZWYgZ2V0ZnVuY2FyZ25hbWVzKGZ1bmN0aW9uLCBpc19tZXRob2Q9RmFsc2Us
IGNscz1Ob25lKToKLSAgICAiIiJSZXR1cm5zIHRoZSBuYW1lcyBvZiBhIGZ1bmN0aW9uJ3MgbWFu
ZGF0b3J5IGFyZ3VtZW50cy4KLQotICAgIFRoaXMgc2hvdWxkIHJldHVybiB0aGUgbmFtZXMgb2Yg
YWxsIGZ1bmN0aW9uIGFyZ3VtZW50cyB0aGF0OgotICAgICAgICAqIEFyZW4ndCBib3VuZCB0byBh
biBpbnN0YW5jZSBvciB0eXBlIGFzIGluIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMuCi0gICAg
ICAgICogRG9uJ3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4KLSAgICAgICAgKiBBcmVuJ3QgYm91bmQg
d2l0aCBmdW5jdG9vbHMucGFydGlhbC4KLSAgICAgICAgKiBBcmVuJ3QgcmVwbGFjZWQgd2l0aCBt
b2Nrcy4KLQotICAgIFRoZSBpc19tZXRob2QgYW5kIGNscyBhcmd1bWVudHMgaW5kaWNhdGUgdGhh
dCB0aGUgZnVuY3Rpb24gc2hvdWxkCi0gICAgYmUgdHJlYXRlZCBhcyBhIGJvdW5kIG1ldGhvZCBl
dmVuIHRob3VnaCBpdCdzIG5vdCB1bmxlc3MsIG9ubHkgaW4KLSAgICB0aGUgY2FzZSBvZiBjbHMs
IHRoZSBmdW5jdGlvbiBpcyBhIHN0YXRpYyBtZXRob2QuCi0KLSAgICBAUm9ubnlQZmFubnNjaG1p
ZHQ6IFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIHJlZmFjdG9yZWQgd2hlbiB3ZQotICAgIHJldmlz
aXQgZml4dHVyZXMuIFRoZSBmaXh0dXJlIG1lY2hhbmlzbSBzaG91bGQgYXNrIHRoZSBub2RlIGZv
cgotICAgIHRoZSBmaXh0dXJlIG5hbWVzLCBhbmQgbm90IHRyeSB0byBvYnRhaW4gZGlyZWN0bHkg
ZnJvbSB0aGUKLSAgICBmdW5jdGlvbiBvYmplY3Qgd2VsbCBhZnRlciBjb2xsZWN0aW9uIGhhcyBv
Y2N1cnJlZC4KLQotICAgICIiIgotICAgICMgVGhlIHBhcmFtZXRlcnMgYXR0cmlidXRlIG9mIGEg
U2lnbmF0dXJlIG9iamVjdCBjb250YWlucyBhbgotICAgICMgb3JkZXJlZCBtYXBwaW5nIG9mIHBh
cmFtZXRlciBuYW1lcyB0byBQYXJhbWV0ZXIgaW5zdGFuY2VzLiAgVGhpcwotICAgICMgY3JlYXRl
cyBhIHR1cGxlIG9mIHRoZSBuYW1lcyBvZiB0aGUgcGFyYW1ldGVycyB0aGF0IGRvbid0IGhhdmUK
LSAgICAjIGRlZmF1bHRzLgotICAgIGFyZ19uYW1lcyA9IHR1cGxlKHAubmFtZSBmb3IgcCBpbiBz
aWduYXR1cmUoZnVuY3Rpb24pLnBhcmFtZXRlcnMudmFsdWVzKCkKLSAgICAgICAgICAgICAgICAg
ICAgICBpZiAocC5raW5kIGlzIFBhcmFtZXRlci5QT1NJVElPTkFMX09SX0tFWVdPUkQgb3IKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgcC5raW5kIGlzIFBhcmFtZXRlci5LRVlXT1JEX09OTFkp
IGFuZAotICAgICAgICAgICAgICAgICAgICAgIHAuZGVmYXVsdCBpcyBQYXJhbWV0ZXIuZW1wdHkp
Ci0gICAgIyBJZiB0aGlzIGZ1bmN0aW9uIHNob3VsZCBiZSB0cmVhdGVkIGFzIGEgYm91bmQgbWV0
aG9kIGV2ZW4gdGhvdWdoCi0gICAgIyBpdCdzIHBhc3NlZCBhcyBhbiB1bmJvdW5kIG1ldGhvZCBv
ciBmdW5jdGlvbiwgcmVtb3ZlIHRoZSBmaXJzdAotICAgICMgcGFyYW1ldGVyIG5hbWUuCi0gICAg
aWYgKGlzX21ldGhvZCBvcgotICAgICAgICAoY2xzIGFuZCBub3QgaXNpbnN0YW5jZShjbHMuX19k
aWN0X18uZ2V0KGZ1bmN0aW9uLl9fbmFtZV9fLCBOb25lKSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhdGljbWV0aG9kKSkpOgotICAgICAgICBhcmdfbmFtZXMgPSBhcmdfbmFt
ZXNbMTpdCi0gICAgIyBSZW1vdmUgYW55IG5hbWVzIHRoYXQgd2lsbCBiZSByZXBsYWNlZCB3aXRo
IG1vY2tzLgotICAgIGlmIGhhc2F0dHIoZnVuY3Rpb24sICJfX3dyYXBwZWRfXyIpOgotICAgICAg
ICBhcmdfbmFtZXMgPSBhcmdfbmFtZXNbbnVtX21vY2tfcGF0Y2hfYXJncyhmdW5jdGlvbik6XQot
ICAgIHJldHVybiBhcmdfbmFtZXMKLQotCi1pZiBfUFkzOgotICAgIFNUUklOR19UWVBFUyA9IGJ5
dGVzLCBzdHIKLSAgICBVTklDT0RFX1RZUEVTID0gc3RyLAotCi0gICAgaWYgUFkzNToKLSAgICAg
ICAgZGVmIF9ieXRlc190b19hc2NpaSh2YWwpOgotICAgICAgICAgICAgcmV0dXJuIHZhbC5kZWNv
ZGUoJ2FzY2lpJywgJ2JhY2tzbGFzaHJlcGxhY2UnKQotICAgIGVsc2U6Ci0gICAgICAgIGRlZiBf
Ynl0ZXNfdG9fYXNjaWkodmFsKToKLSAgICAgICAgICAgIGlmIHZhbDoKLSAgICAgICAgICAgICAg
ICAjIHNvdXJjZTogaHR0cDovL2dvby5nbC9iR3Nud0MKLSAgICAgICAgICAgICAgICBlbmNvZGVk
X2J5dGVzLCBfID0gY29kZWNzLmVzY2FwZV9lbmNvZGUodmFsKQotICAgICAgICAgICAgICAgIHJl
dHVybiBlbmNvZGVkX2J5dGVzLmRlY29kZSgnYXNjaWknKQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAjIGVtcHR5IGJ5dGVzIGNyYXNoZXMgY29kZWNzLmVzY2FwZV9lbmNvZGUg
KCMxMDg3KQotICAgICAgICAgICAgICAgIHJldHVybiAnJwotCi0gICAgZGVmIGFzY2lpX2VzY2Fw
ZWQodmFsKToKLSAgICAgICAgIiIiSWYgdmFsIGlzIHB1cmUgYXNjaWksIHJldHVybnMgaXQgYXMg
YSBzdHIoKS4gIE90aGVyd2lzZSwgZXNjYXBlcwotICAgICAgICBieXRlcyBvYmplY3RzIGludG8g
YSBzZXF1ZW5jZSBvZiBlc2NhcGVkIGJ5dGVzOgotCi0gICAgICAgIGInXHhjM1x4YjRceGM1XHhk
NicgLT4gdSdcXHhjM1xceGI0XFx4YzVcXHhkNicKLQotICAgICAgICBhbmQgZXNjYXBlcyB1bmlj
b2RlIG9iamVjdHMgaW50byBhIHNlcXVlbmNlIG9mIGVzY2FwZWQgdW5pY29kZQotICAgICAgICBp
ZHMsIGUuZy46Ci0KLSAgICAgICAgJzRcXG5WXFxVMDAwNDNlZmFcXHgwZU1YV0JcXHgxZVxcdTMw
MjhcXHUxNWZkXFx4Y2RcXFUwMDA3ZDk0NCcKLQotICAgICAgICBub3RlOgotICAgICAgICAgICB0
aGUgb2J2aW91cyAidi5kZWNvZGUoJ3VuaWNvZGUtZXNjYXBlJykiIHdpbGwgcmV0dXJuCi0gICAg
ICAgICAgIHZhbGlkIHV0Zi04IHVuaWNvZGUgaWYgaXQgZmluZHMgdGhlbSBpbiBieXRlcywgYnV0
IHdlCi0gICAgICAgICAgIHdhbnQgdG8gcmV0dXJuIGVzY2FwZWQgYnl0ZXMgZm9yIGFueSBieXRl
LCBldmVuIGlmIHRoZXkgbWF0Y2gKLSAgICAgICAgICAgYSB1dGYtOCBzdHJpbmcuCi0KLSAgICAg
ICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBieXRlcyk6Ci0gICAgICAgICAgICBy
ZXR1cm4gX2J5dGVzX3RvX2FzY2lpKHZhbCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJl
dHVybiB2YWwuZW5jb2RlKCd1bmljb2RlX2VzY2FwZScpLmRlY29kZSgnYXNjaWknKQotZWxzZToK
LSAgICBTVFJJTkdfVFlQRVMgPSBieXRlcywgc3RyLCB1bmljb2RlCi0gICAgVU5JQ09ERV9UWVBF
UyA9IHVuaWNvZGUsCi0KLSAgICBkZWYgYXNjaWlfZXNjYXBlZCh2YWwpOgotICAgICAgICAiIiJJ
biBweTIgYnl0ZXMgYW5kIHN0ciBhcmUgdGhlIHNhbWUgdHlwZSwgc28gcmV0dXJuIGlmIGl0J3Mg
YSBieXRlcwotICAgICAgICBvYmplY3QsIHJldHVybiBpdCB1bmNoYW5nZWQgaWYgaXQgaXMgYSBm
dWxsIGFzY2lpIHN0cmluZywKLSAgICAgICAgb3RoZXJ3aXNlIGVzY2FwZSBpdCBpbnRvIGl0cyBi
aW5hcnkgZm9ybS4KLQotICAgICAgICBJZiBpdCdzIGEgdW5pY29kZSBzdHJpbmcsIGNoYW5nZSB0
aGUgdW5pY29kZSBjaGFyYWN0ZXJzIGludG8KLSAgICAgICAgdW5pY29kZSBlc2NhcGVzLgotCi0g
ICAgICAgICIiIgotICAgICAgICBpZiBpc2luc3RhbmNlKHZhbCwgYnl0ZXMpOgotICAgICAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiB2YWwuZW5jb2RlKCdhc2NpaScpCi0gICAg
ICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAgICAgICAgIHJldHVy
biB2YWwuZW5jb2RlKCdzdHJpbmctZXNjYXBlJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHJldHVybiB2YWwuZW5jb2RlKCd1bmljb2RlLWVzY2FwZScpCi0KLQotZGVmIGdldF9yZWFsX2Z1
bmMob2JqKToKLSAgICAiIiIgZ2V0cyB0aGUgcmVhbCBmdW5jdGlvbiBvYmplY3Qgb2YgdGhlIChw
b3NzaWJseSkgd3JhcHBlZCBvYmplY3QgYnkKLSAgICBmdW5jdG9vbHMud3JhcHMgb3IgZnVuY3Rv
b2xzLnBhcnRpYWwuCi0gICAgIiIiCi0gICAgc3RhcnRfb2JqID0gb2JqCi0gICAgZm9yIGkgaW4g
cmFuZ2UoMTAwKToKLSAgICAgICAgbmV3X29iaiA9IGdldGF0dHIob2JqLCAnX193cmFwcGVkX18n
LCBOb25lKQotICAgICAgICBpZiBuZXdfb2JqIGlzIE5vbmU6Ci0gICAgICAgICAgICBicmVhawot
ICAgICAgICBvYmogPSBuZXdfb2JqCi0gICAgZWxzZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cigKLSAgICAgICAgICAgICgiY291bGQgbm90IGZpbmQgcmVhbCBmdW5jdGlvbiBvZiB7c3RhcnR9
IgotICAgICAgICAgICAgICJcbnN0b3BwZWQgYXQge2N1cnJlbnR9IikuZm9ybWF0KAotICAgICAg
ICAgICAgICAgIHN0YXJ0PXB5LmlvLnNhZmVyZXByKHN0YXJ0X29iaiksCi0gICAgICAgICAgICAg
ICAgY3VycmVudD1weS5pby5zYWZlcmVwcihvYmopKSkKLSAgICBpZiBpc2luc3RhbmNlKG9iaiwg
ZnVuY3Rvb2xzLnBhcnRpYWwpOgotICAgICAgICBvYmogPSBvYmouZnVuYwotICAgIHJldHVybiBv
YmoKLQotCi1kZWYgZ2V0ZnNsaW5lbm8ob2JqKToKLSAgICAjIHh4eCBsZXQgZGVjb3JhdG9ycyBl
dGMgc3BlY2lmeSBhIHNhbmUgb3JkZXJpbmcKLSAgICBvYmogPSBnZXRfcmVhbF9mdW5jKG9iaikK
LSAgICBpZiBoYXNhdHRyKG9iaiwgJ3BsYWNlX2FzJyk6Ci0gICAgICAgIG9iaiA9IG9iai5wbGFj
ZV9hcwotICAgIGZzbGluZW5vID0gX3B5dGVzdC5fY29kZS5nZXRmc2xpbmVubyhvYmopCi0gICAg
YXNzZXJ0IGlzaW5zdGFuY2UoZnNsaW5lbm9bMV0sIGludCksIG9iagotICAgIHJldHVybiBmc2xp
bmVubwotCi0KLWRlZiBnZXRpbWZ1bmMoZnVuYyk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4g
ZnVuYy5fX2Z1bmNfXwotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmV0dXJu
IGZ1bmMKLQotCi1kZWYgc2FmZV9nZXRhdHRyKG9iamVjdCwgbmFtZSwgZGVmYXVsdCk6Ci0gICAg
IiIiIExpa2UgZ2V0YXR0ciBidXQgcmV0dXJuIGRlZmF1bHQgdXBvbiBhbnkgRXhjZXB0aW9uIG9y
IGFueSBPdXRjb21lRXhjZXB0aW9uLgotCi0gICAgQXR0cmlidXRlIGFjY2VzcyBjYW4gcG90ZW50
aWFsbHkgZmFpbCBmb3IgJ2V2aWwnIFB5dGhvbiBvYmplY3RzLgotICAgIFNlZSBpc3N1ZSAjMjE0
LgotICAgIEl0IGNhdGNoZXMgT3V0Y29tZUV4Y2VwdGlvbiBiZWNhdXNlIG9mICMyNDkwIChpc3N1
ZSAjNTgwKSwgbmV3IG91dGNvbWVzIGFyZSBkZXJpdmVkIGZyb20gQmFzZUV4Y2VwdGlvbgotICAg
IGluc3RlYWQgb2YgRXhjZXB0aW9uIChmb3IgbW9yZSBkZXRhaWxzIGNoZWNrICMyNzA3KQotICAg
ICIiIgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqZWN0LCBuYW1lLCBkZWZh
dWx0KQotICAgIGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAgICAgIHJldHVybiBkZWZhdWx0Ci0K
LQotZGVmIF9pc191bml0dGVzdF91bmV4cGVjdGVkX3N1Y2Nlc3NfYV9mYWlsdXJlKCk6Ci0gICAg
IiIiUmV0dXJuIGlmIHRoZSB0ZXN0IHN1aXRlIHNob3VsZCBmYWlsIGlmIGEgQGV4cGVjdGVkRmFp
bHVyZSB1bml0dGVzdCB0ZXN0IFBBU1NFUy4KLQotICAgIEZyb20gaHR0cHM6Ly9kb2NzLnB5dGhv
bi5vcmcvMy9saWJyYXJ5L3VuaXR0ZXN0Lmh0bWw/aGlnaGxpZ2h0PXVuaXR0ZXN0I3VuaXR0ZXN0
LlRlc3RSZXN1bHQud2FzU3VjY2Vzc2Z1bDoKLSAgICAgICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMu
NDogUmV0dXJucyBGYWxzZSBpZiB0aGVyZSB3ZXJlIGFueQotICAgICAgICB1bmV4cGVjdGVkU3Vj
Y2Vzc2VzIGZyb20gdGVzdHMgbWFya2VkIHdpdGggdGhlIGV4cGVjdGVkRmFpbHVyZSgpIGRlY29y
YXRvci4KLSAgICAiIiIKLSAgICByZXR1cm4gc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNCkKLQot
Ci1pZiBfUFkzOgotICAgIGRlZiBzYWZlX3N0cih2KToKLSAgICAgICAgIiIicmV0dXJucyB2IGFz
IHN0cmluZyIiIgotICAgICAgICByZXR1cm4gc3RyKHYpCi1lbHNlOgotICAgIGRlZiBzYWZlX3N0
cih2KToKLSAgICAgICAgIiIicmV0dXJucyB2IGFzIHN0cmluZywgY29udmVydGluZyB0byBhc2Np
aSBpZiBuZWNlc3NhcnkiIiIKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHN0cih2
KQotICAgICAgICBleGNlcHQgVW5pY29kZUVycm9yOgotICAgICAgICAgICAgaWYgbm90IGlzaW5z
dGFuY2UodiwgdW5pY29kZSk6Ci0gICAgICAgICAgICAgICAgdiA9IHVuaWNvZGUodikKLSAgICAg
ICAgICAgIGVycm9ycyA9ICdyZXBsYWNlJwotICAgICAgICAgICAgcmV0dXJuIHYuZW5jb2RlKCd1
dGYtOCcsIGVycm9ycykKLQotCi1DT0xMRUNUX0ZBS0VNT0RVTEVfQVRUUklCVVRFUyA9ICgKLSAg
ICAnQ29sbGVjdG9yJywKLSAgICAnTW9kdWxlJywKLSAgICAnR2VuZXJhdG9yJywKLSAgICAnRnVu
Y3Rpb24nLAotICAgICdJbnN0YW5jZScsCi0gICAgJ1Nlc3Npb24nLAotICAgICdJdGVtJywKLSAg
ICAnQ2xhc3MnLAotICAgICdGaWxlJywKLSAgICAnX2ZpbGxmdW5jYXJncycsCi0pCi0KLQotZGVm
IF9zZXR1cF9jb2xsZWN0X2Zha2Vtb2R1bGUoKToKLSAgICBmcm9tIHR5cGVzIGltcG9ydCBNb2R1
bGVUeXBlCi0gICAgaW1wb3J0IHB5dGVzdAotICAgIHB5dGVzdC5jb2xsZWN0ID0gTW9kdWxlVHlw
ZSgncHl0ZXN0LmNvbGxlY3QnKQotICAgIHB5dGVzdC5jb2xsZWN0Ll9fYWxsX18gPSBbXSAgIyB1
c2VkIGZvciBzZXRucwotICAgIGZvciBhdHRyIGluIENPTExFQ1RfRkFLRU1PRFVMRV9BVFRSSUJV
VEVTOgotICAgICAgICBzZXRhdHRyKHB5dGVzdC5jb2xsZWN0LCBhdHRyLCBnZXRhdHRyKHB5dGVz
dCwgYXR0cikpCi0KLQotaWYgX1BZMjoKLSAgICAjIFdpdGhvdXQgdGhpcyB0aGUgdGVzdF9kdXBm
aWxlX29uX3RleHRpbyB3aWxsIGZhaWwsIG90aGVyd2lzZSBDYXB0dXJlSU8gY291bGQgZGlyZWN0
bHkgaW5oZXJpdCBmcm9tIFN0cmluZ0lPLgotICAgIGZyb20gcHkuaW8gaW1wb3J0IFRleHRJTwot
Ci0gICAgY2xhc3MgQ2FwdHVyZUlPKFRleHRJTyk6Ci0KLSAgICAgICAgQHByb3BlcnR5Ci0gICAg
ICAgIGRlZiBlbmNvZGluZyhzZWxmKToKLSAgICAgICAgICAgIHJldHVybiBnZXRhdHRyKHNlbGYs
ICdfZW5jb2RpbmcnLCAnVVRGLTgnKQotCi1lbHNlOgotICAgIGltcG9ydCBpbwotCi0gICAgY2xh
c3MgQ2FwdHVyZUlPKGlvLlRleHRJT1dyYXBwZXIpOgotICAgICAgICBkZWYgX19pbml0X18oc2Vs
Zik6Ci0gICAgICAgICAgICBzdXBlcihDYXB0dXJlSU8sIHNlbGYpLl9faW5pdF9fKAotICAgICAg
ICAgICAgICAgIGlvLkJ5dGVzSU8oKSwKLSAgICAgICAgICAgICAgICBlbmNvZGluZz0nVVRGLTgn
LCBuZXdsaW5lPScnLCB3cml0ZV90aHJvdWdoPVRydWUsCi0gICAgICAgICAgICApCi0KLSAgICAg
ICAgZGVmIGdldHZhbHVlKHNlbGYpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuYnVmZmVyLmdl
dHZhbHVlKCkuZGVjb2RlKCdVVEYtOCcpCi0KLQotY2xhc3MgRnVuY2FyZ25hbWVzQ29tcGF0QXR0
cihvYmplY3QpOgotICAgICIiIiBoZWxwZXIgY2xhc3Mgc28gdGhhdCBNZXRhZnVuYywgRnVuY3Rp
b24gYW5kIEZpeHR1cmVSZXF1ZXN0Ci0gICAgZG9uJ3QgbmVlZCB0byBlYWNoIGRlZmluZSB0aGUg
ImZ1bmNhcmduYW1lcyIgY29tcGF0aWJpbGl0eSBhdHRyaWJ1dGUuCi0gICAgIiIiCi0gICAgQHBy
b3BlcnR5Ci0gICAgZGVmIGZ1bmNhcmduYW1lcyhzZWxmKToKLSAgICAgICAgIiIiIGFsaWFzIGF0
dHJpYnV0ZSBmb3IgYGBmaXh0dXJlbmFtZXNgYCBmb3IgcHJlLTIuMyBjb21wYXRpYmlsaXR5IiIi
Ci0gICAgICAgIHJldHVybiBzZWxmLmZpeHR1cmVuYW1lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbmZpZy5weQpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk5YzgwNzlkNDE1OTg2YzE4YjFmM2ZmNjRkMjA3
NTQyZTVlNDMxYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0MDAg
KzAsMCBAQAotIiIiIGNvbW1hbmQgbGluZSBvcHRpb25zLCBpbmktZmlsZSBhbmQgY29uZnRlc3Qu
cHkgcHJvY2Vzc2luZy4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQgYXJncGFyc2UKLWltcG9ydCBzaGxl
eAotaW1wb3J0IHRyYWNlYmFjawotaW1wb3J0IHR5cGVzCi1pbXBvcnQgd2FybmluZ3MKLQotaW1w
b3J0IHNpeAotaW1wb3J0IHB5Ci0jIERPTid0IGltcG9ydCBweXRlc3QgaGVyZSBiZWNhdXNlIGl0
IGNhdXNlcyBpbXBvcnQgY3ljbGUgdHJvdWJsZXMKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1w
b3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBfcHl0ZXN0Lmhvb2tzcGVjICAjIHRoZSBleHRlbnNp
b24gcG9pbnQgZGVmaW5pdGlvbnMKLWltcG9ydCBfcHl0ZXN0LmFzc2VydGlvbgotZnJvbSBwbHVn
Z3kgaW1wb3J0IFBsdWdpbk1hbmFnZXIsIEhvb2tpbXBsTWFya2VyLCBIb29rc3BlY01hcmtlcgot
ZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgc2FmZV9zdHIKLQotaG9va2ltcGwgPSBIb29raW1w
bE1hcmtlcigicHl0ZXN0IikKLWhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoInB5dGVzdCIpCi0K
LSMgcHl0ZXN0IHN0YXJ0dXAKLSMKLQotCi1jbGFzcyBDb25mdGVzdEltcG9ydEZhaWx1cmUoRXhj
ZXB0aW9uKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCwgZXhjaW5mbyk6Ci0gICAgICAg
IEV4Y2VwdGlvbi5fX2luaXRfXyhzZWxmLCBwYXRoLCBleGNpbmZvKQotICAgICAgICBzZWxmLnBh
dGggPSBwYXRoCi0gICAgICAgIHNlbGYuZXhjaW5mbyA9IGV4Y2luZm8KLQotICAgIGRlZiBfX3N0
cl9fKHNlbGYpOgotICAgICAgICBldHlwZSwgZXZhbHVlLCBldGIgPSBzZWxmLmV4Y2luZm8KLSAg
ICAgICAgZm9ybWF0dGVkID0gdHJhY2ViYWNrLmZvcm1hdF90YihldGIpCi0gICAgICAgICMgVGhl
IGxldmVsIG9mIHRoZSB0cmFjZWJhY2tzIHdlIHdhbnQgdG8gcHJpbnQgaXMgaGFuZCBjcmFmdGVk
IDooCi0gICAgICAgIHJldHVybiByZXByKGV2YWx1ZSkgKyAnXG4nICsgJycuam9pbihmb3JtYXR0
ZWRbMjpdKQotCi0KLWRlZiBtYWluKGFyZ3M9Tm9uZSwgcGx1Z2lucz1Ob25lKToKLSAgICAiIiIg
cmV0dXJuIGV4aXQgY29kZSwgYWZ0ZXIgcGVyZm9ybWluZyBhbiBpbi1wcm9jZXNzIHRlc3QgcnVu
LgotCi0gICAgOmFyZyBhcmdzOiBsaXN0IG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0KLSAg
ICA6YXJnIHBsdWdpbnM6IGxpc3Qgb2YgcGx1Z2luIG9iamVjdHMgdG8gYmUgYXV0by1yZWdpc3Rl
cmVkIGR1cmluZwotICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb24uCi0gICAgIiIiCi0g
ICAgdHJ5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBjb25maWcgPSBfcHJlcGFyZWNvbmZp
ZyhhcmdzLCBwbHVnaW5zKQotICAgICAgICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlIGFz
IGU6Ci0gICAgICAgICAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKHN5cy5zdGRlcnIpCi0g
ICAgICAgICAgICBmb3IgbGluZSBpbiB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqZS5leGNp
bmZvKToKLSAgICAgICAgICAgICAgICB0dy5saW5lKGxpbmUucnN0cmlwKCksIHJlZD1UcnVlKQot
ICAgICAgICAgICAgdHcubGluZSgiRVJST1I6IGNvdWxkIG5vdCBsb2FkICVzXG4iICUgKGUucGF0
aCksIHJlZD1UcnVlKQotICAgICAgICAgICAgcmV0dXJuIDQKLSAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gY29uZmlnLmhvb2sucHl0ZXN0X2Nt
ZGxpbmVfbWFpbihjb25maWc9Y29uZmlnKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAg
ICAgICAgICBjb25maWcuX2Vuc3VyZV91bmNvbmZpZ3VyZSgpCi0gICAgZXhjZXB0IFVzYWdlRXJy
b3IgYXMgZToKLSAgICAgICAgZm9yIG1zZyBpbiBlLmFyZ3M6Ci0gICAgICAgICAgICBzeXMuc3Rk
ZXJyLndyaXRlKCJFUlJPUjogJXNcbiIgJSAobXNnLCkpCi0gICAgICAgIHJldHVybiA0Ci0KLQot
Y2xhc3MgY21kbGluZTogICMgY29tcGF0aWJpbGl0eSBuYW1lc3BhY2UKLSAgICBtYWluID0gc3Rh
dGljbWV0aG9kKG1haW4pCi0KLQotY2xhc3MgVXNhZ2VFcnJvcihFeGNlcHRpb24pOgotICAgICIi
IiBlcnJvciBpbiBweXRlc3QgdXNhZ2Ugb3IgaW52b2NhdGlvbiIiIgotCi0KLWNsYXNzIFByaW50
SGVscChFeGNlcHRpb24pOgotICAgICIiIlJhaXNlZCB3aGVuIHB5dGVzdCBzaG91bGQgcHJpbnQg
aXQncyBoZWxwIHRvIHNraXAgdGhlIHJlc3Qgb2YgdGhlCi0gICAgYXJndW1lbnQgcGFyc2luZyBh
bmQgdmFsaWRhdGlvbi4iIiIKLSAgICBwYXNzCi0KLQotZGVmIGZpbGVuYW1lX2FyZyhwYXRoLCBv
cHRuYW1lKToKLSAgICAiIiIgQXJncGFyc2UgdHlwZSB2YWxpZGF0b3IgZm9yIGZpbGVuYW1lIGFy
Z3VtZW50cy4KLQotICAgIDpwYXRoOiBwYXRoIG9mIGZpbGVuYW1lCi0gICAgOm9wdG5hbWU6IG5h
bWUgb2YgdGhlIG9wdGlvbgotICAgICIiIgotICAgIGlmIG9zLnBhdGguaXNkaXIocGF0aCk6Ci0g
ICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoInswfSBtdXN0IGJlIGEgZmlsZW5hbWUsIGdpdmVuOiB7
MX0iLmZvcm1hdChvcHRuYW1lLCBwYXRoKSkKLSAgICByZXR1cm4gcGF0aAotCi0KLWRlZiBkaXJl
Y3RvcnlfYXJnKHBhdGgsIG9wdG5hbWUpOgotICAgICIiIkFyZ3BhcnNlIHR5cGUgdmFsaWRhdG9y
IGZvciBkaXJlY3RvcnkgYXJndW1lbnRzLgotCi0gICAgOnBhdGg6IHBhdGggb2YgZGlyZWN0b3J5
Ci0gICAgOm9wdG5hbWU6IG5hbWUgb2YgdGhlIG9wdGlvbgotICAgICIiIgotICAgIGlmIG5vdCBv
cy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICByYWlzZSBVc2FnZUVycm9yKCJ7MH0gbXVzdCBi
ZSBhIGRpcmVjdG9yeSwgZ2l2ZW46IHsxfSIuZm9ybWF0KG9wdG5hbWUsIHBhdGgpKQotICAgIHJl
dHVybiBwYXRoCi0KLQotZGVmYXVsdF9wbHVnaW5zID0gKAotICAgICJtYXJrIG1haW4gdGVybWlu
YWwgcnVubmVyIHB5dGhvbiBmaXh0dXJlcyBkZWJ1Z2dpbmcgdW5pdHRlc3QgY2FwdHVyZSBza2lw
cGluZyAiCi0gICAgInRtcGRpciBtb25rZXlwYXRjaCByZWN3YXJuIHBhc3RlYmluIGhlbHBjb25m
aWcgbm9zZSBhc3NlcnRpb24gIgotICAgICJqdW5pdHhtbCByZXN1bHRsb2cgZG9jdGVzdCBjYWNo
ZXByb3ZpZGVyIGZyZWV6ZV9zdXBwb3J0ICIKLSAgICAic2V0dXBvbmx5IHNldHVwcGxhbiB3YXJu
aW5ncyBsb2dnaW5nIikuc3BsaXQoKQotCi0KLWJ1aWx0aW5fcGx1Z2lucyA9IHNldChkZWZhdWx0
X3BsdWdpbnMpCi1idWlsdGluX3BsdWdpbnMuYWRkKCJweXRlc3RlciIpCi0KLQotZGVmIGdldF9j
b25maWcoKToKLSAgICAjIHN1YnNlcXVlbnQgY2FsbHMgdG8gbWFpbiB3aWxsIGNyZWF0ZSBhIGZy
ZXNoIGluc3RhbmNlCi0gICAgcGx1Z2lubWFuYWdlciA9IFB5dGVzdFBsdWdpbk1hbmFnZXIoKQot
ICAgIGNvbmZpZyA9IENvbmZpZyhwbHVnaW5tYW5hZ2VyKQotICAgIGZvciBzcGVjIGluIGRlZmF1
bHRfcGx1Z2luczoKLSAgICAgICAgcGx1Z2lubWFuYWdlci5pbXBvcnRfcGx1Z2luKHNwZWMpCi0g
ICAgcmV0dXJuIGNvbmZpZwotCi0KLWRlZiBnZXRfcGx1Z2luX21hbmFnZXIoKToKLSAgICAiIiIK
LSAgICBPYnRhaW4gYSBuZXcgaW5zdGFuY2Ugb2YgdGhlCi0gICAgOnB5OmNsYXNzOmBfcHl0ZXN0
LmNvbmZpZy5QeXRlc3RQbHVnaW5NYW5hZ2VyYCwgd2l0aCBkZWZhdWx0IHBsdWdpbnMKLSAgICBh
bHJlYWR5IGxvYWRlZC4KLQotICAgIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYnkgaW50ZWdy
YXRpb24gd2l0aCBvdGhlciB0b29scywgbGlrZSBob29raW5nCi0gICAgaW50byBweXRlc3QgdG8g
cnVuIHRlc3RzIGludG8gYW4gSURFLgotICAgICIiIgotICAgIHJldHVybiBnZXRfY29uZmlnKCku
cGx1Z2lubWFuYWdlcgotCi0KLWRlZiBfcHJlcGFyZWNvbmZpZyhhcmdzPU5vbmUsIHBsdWdpbnM9
Tm9uZSk6Ci0gICAgd2FybmluZyA9IE5vbmUKLSAgICBpZiBhcmdzIGlzIE5vbmU6Ci0gICAgICAg
IGFyZ3MgPSBzeXMuYXJndlsxOl0KLSAgICBlbGlmIGlzaW5zdGFuY2UoYXJncywgcHkucGF0aC5s
b2NhbCk6Ci0gICAgICAgIGFyZ3MgPSBbc3RyKGFyZ3MpXQotICAgIGVsaWYgbm90IGlzaW5zdGFu
Y2UoYXJncywgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGFyZ3Ms
IHN0cik6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJub3QgYSBzdHJpbmcgb3IgYXJn
dW1lbnQgbGlzdDogJXIiICUgKGFyZ3MsKSkKLSAgICAgICAgYXJncyA9IHNobGV4LnNwbGl0KGFy
Z3MsIHBvc2l4PXN5cy5wbGF0Zm9ybSAhPSAid2luMzIiKQotICAgICAgICBmcm9tIF9weXRlc3Qg
aW1wb3J0IGRlcHJlY2F0ZWQKLSAgICAgICAgd2FybmluZyA9IGRlcHJlY2F0ZWQuTUFJTl9TVFJf
QVJHUwotICAgIGNvbmZpZyA9IGdldF9jb25maWcoKQotICAgIHBsdWdpbm1hbmFnZXIgPSBjb25m
aWcucGx1Z2lubWFuYWdlcgotICAgIHRyeToKLSAgICAgICAgaWYgcGx1Z2luczoKLSAgICAgICAg
ICAgIGZvciBwbHVnaW4gaW4gcGx1Z2luczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNl
KHBsdWdpbiwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHBsdWdpbm1h
bmFnZXIuY29uc2lkZXJfcGx1Z2luYXJnKHBsdWdpbikKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICBwbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHBsdWdpbikKLSAgICAg
ICAgaWYgd2FybmluZzoKLSAgICAgICAgICAgIGNvbmZpZy53YXJuKCdDMScsIHdhcm5pbmcpCi0g
ICAgICAgIHJldHVybiBwbHVnaW5tYW5hZ2VyLmhvb2sucHl0ZXN0X2NtZGxpbmVfcGFyc2UoCi0g
ICAgICAgICAgICBwbHVnaW5tYW5hZ2VyPXBsdWdpbm1hbmFnZXIsIGFyZ3M9YXJncykKLSAgICBl
eGNlcHQgQmFzZUV4Y2VwdGlvbjoKLSAgICAgICAgY29uZmlnLl9lbnN1cmVfdW5jb25maWd1cmUo
KQotICAgICAgICByYWlzZQotCi0KLWNsYXNzIFB5dGVzdFBsdWdpbk1hbmFnZXIoUGx1Z2luTWFu
YWdlcik6Ci0gICAgIiIiCi0gICAgT3ZlcndyaXRlcyA6cHk6Y2xhc3M6YHBsdWdneS5QbHVnaW5N
YW5hZ2VyIDxwbHVnZ3kuUGx1Z2luTWFuYWdlcj5gIHRvIGFkZCBweXRlc3Qtc3BlY2lmaWMKLSAg
ICBmdW5jdGlvbmFsaXR5OgotCi0gICAgKiBsb2FkaW5nIHBsdWdpbnMgZnJvbSB0aGUgY29tbWFu
ZCBsaW5lLCBgYFBZVEVTVF9QTFVHSU5gYCBlbnYgdmFyaWFibGUgYW5kCi0gICAgICBgYHB5dGVz
dF9wbHVnaW5zYGAgZ2xvYmFsIHZhcmlhYmxlcyBmb3VuZCBpbiBwbHVnaW5zIGJlaW5nIGxvYWRl
ZDsKLSAgICAqIGBgY29uZnRlc3QucHlgYCBsb2FkaW5nIGR1cmluZyBzdGFydC11cDsKLSAgICAi
IiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc3VwZXIoUHl0ZXN0UGx1Z2lu
TWFuYWdlciwgc2VsZikuX19pbml0X18oInB5dGVzdCIsIGltcGxwcmVmaXg9InB5dGVzdF8iKQot
ICAgICAgICBzZWxmLl9jb25mdGVzdF9wbHVnaW5zID0gc2V0KCkKLQotICAgICAgICAjIHN0YXRl
IHJlbGF0ZWQgdG8gbG9jYWwgY29uZnRlc3QgcGx1Z2lucwotICAgICAgICBzZWxmLl9wYXRoMmNv
bmZtb2RzID0ge30KLSAgICAgICAgc2VsZi5fY29uZnRlc3RwYXRoMm1vZCA9IHt9Ci0gICAgICAg
IHNlbGYuX2NvbmZjdXRkaXIgPSBOb25lCi0gICAgICAgIHNlbGYuX25vY29uZnRlc3QgPSBGYWxz
ZQotICAgICAgICBzZWxmLl9kdXBsaWNhdGVwYXRocyA9IHNldCgpCi0KLSAgICAgICAgc2VsZi5h
ZGRfaG9va3NwZWNzKF9weXRlc3QuaG9va3NwZWMpCi0gICAgICAgIHNlbGYucmVnaXN0ZXIoc2Vs
ZikKLSAgICAgICAgaWYgb3MuZW52aXJvbi5nZXQoJ1BZVEVTVF9ERUJVRycpOgotICAgICAgICAg
ICAgZXJyID0gc3lzLnN0ZGVycgotICAgICAgICAgICAgZW5jb2RpbmcgPSBnZXRhdHRyKGVyciwg
J2VuY29kaW5nJywgJ3V0ZjgnKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGVy
ciA9IHB5LmlvLmR1cGZpbGUoZXJyLCBlbmNvZGluZz1lbmNvZGluZykKLSAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgc2VsZi50
cmFjZS5yb290LnNldHdyaXRlcihlcnIud3JpdGUpCi0gICAgICAgICAgICBzZWxmLmVuYWJsZV90
cmFjaW5nKCkKLQotICAgICAgICAjIENvbmZpZy5fY29uc2lkZXJfaW1wb3J0aG9vayB3aWxsIHNl
dCBhIHJlYWwgb2JqZWN0IGlmIHJlcXVpcmVkLgotICAgICAgICBzZWxmLnJld3JpdGVfaG9vayA9
IF9weXRlc3QuYXNzZXJ0aW9uLkR1bW15UmV3cml0ZUhvb2soKQotCi0gICAgZGVmIGFkZGhvb2tz
KHNlbGYsIG1vZHVsZV9vcl9jbGFzcyk6Ci0gICAgICAgICIiIgotICAgICAgICAuLiBkZXByZWNh
dGVkOjogMi44Ci0KLSAgICAgICAgVXNlIDpweTptZXRoOmBwbHVnZ3kuUGx1Z2luTWFuYWdlci5h
ZGRfaG9va3NwZWNzIDxQbHVnaW5NYW5hZ2VyLmFkZF9ob29rc3BlY3M+YAotICAgICAgICBpbnN0
ZWFkLgotICAgICAgICAiIiIKLSAgICAgICAgd2FybmluZyA9IGRpY3QoY29kZT0iSTIiLAotICAg
ICAgICAgICAgICAgICAgICAgICBmc2xvY2F0aW9uPV9weXRlc3QuX2NvZGUuZ2V0ZnNsaW5lbm8o
c3lzLl9nZXRmcmFtZSgxKSksCi0gICAgICAgICAgICAgICAgICAgICAgIG5vZGVpZD1Ob25lLAot
ICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSJ1c2UgcGx1Z2lubWFuYWdlci5hZGRfaG9v
a3NwZWNzIGluc3RlYWQgb2YgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZXBy
ZWNhdGVkIGFkZGhvb2tzKCkgbWV0aG9kLiIpCi0gICAgICAgIHNlbGYuX3dhcm4od2FybmluZykK
LSAgICAgICAgcmV0dXJuIHNlbGYuYWRkX2hvb2tzcGVjcyhtb2R1bGVfb3JfY2xhc3MpCi0KLSAg
ICBkZWYgcGFyc2VfaG9va2ltcGxfb3B0cyhzZWxmLCBwbHVnaW4sIG5hbWUpOgotICAgICAgICAj
IHB5dGVzdCBob29rcyBhcmUgYWx3YXlzIHByZWZpeGVkIHdpdGggcHl0ZXN0XwotICAgICAgICAj
IHNvIHdlIGF2b2lkIGFjY2Vzc2luZyBwb3NzaWJseSBub24tcmVhZGFibGUgYXR0cmlidXRlcwot
ICAgICAgICAjIChzZWUgaXNzdWUgIzEwNzMpCi0gICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dp
dGgoInB5dGVzdF8iKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICAjIGlnbm9yZSBzb21l
IGhpc3RvcmljIHNwZWNpYWwgbmFtZXMgd2hpY2ggY2FuIG5vdCBiZSBob29rcyBhbnl3YXkKLSAg
ICAgICAgaWYgbmFtZSA9PSAicHl0ZXN0X3BsdWdpbnMiIG9yIG5hbWUuc3RhcnRzd2l0aCgicHl0
ZXN0X2Z1bmNhcmdfXyIpOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbWV0aG9kID0g
Z2V0YXR0cihwbHVnaW4sIG5hbWUpCi0gICAgICAgIG9wdHMgPSBzdXBlcihQeXRlc3RQbHVnaW5N
YW5hZ2VyLCBzZWxmKS5wYXJzZV9ob29raW1wbF9vcHRzKHBsdWdpbiwgbmFtZSkKLSAgICAgICAg
aWYgb3B0cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBuYW1lIGluICgidHJ5Zmlyc3Qi
LCAidHJ5bGFzdCIsICJvcHRpb25hbGhvb2siLCAiaG9va3dyYXBwZXIiKToKLSAgICAgICAgICAg
ICAgICBvcHRzLnNldGRlZmF1bHQobmFtZSwgaGFzYXR0cihtZXRob2QsIG5hbWUpKQotICAgICAg
ICByZXR1cm4gb3B0cwotCi0gICAgZGVmIHBhcnNlX2hvb2tzcGVjX29wdHMoc2VsZiwgbW9kdWxl
X29yX2NsYXNzLCBuYW1lKToKLSAgICAgICAgb3B0cyA9IHN1cGVyKFB5dGVzdFBsdWdpbk1hbmFn
ZXIsIHNlbGYpLnBhcnNlX2hvb2tzcGVjX29wdHMoCi0gICAgICAgICAgICBtb2R1bGVfb3JfY2xh
c3MsIG5hbWUpCi0gICAgICAgIGlmIG9wdHMgaXMgTm9uZToKLSAgICAgICAgICAgIG1ldGhvZCA9
IGdldGF0dHIobW9kdWxlX29yX2NsYXNzLCBuYW1lKQotICAgICAgICAgICAgaWYgbmFtZS5zdGFy
dHN3aXRoKCJweXRlc3RfIik6Ci0gICAgICAgICAgICAgICAgb3B0cyA9IHsiZmlyc3RyZXN1bHQi
OiBoYXNhdHRyKG1ldGhvZCwgImZpcnN0cmVzdWx0IiksCi0gICAgICAgICAgICAgICAgICAgICAg
ICAiaGlzdG9yaWMiOiBoYXNhdHRyKG1ldGhvZCwgImhpc3RvcmljIil9Ci0gICAgICAgIHJldHVy
biBvcHRzCi0KLSAgICBkZWYgcmVnaXN0ZXIoc2VsZiwgcGx1Z2luLCBuYW1lPU5vbmUpOgotICAg
ICAgICBpZiBuYW1lID09ICdweXRlc3RfY2F0Y2hsb2cnOgotICAgICAgICAgICAgc2VsZi5fd2Fy
bigncHl0ZXN0LWNhdGNobG9nIHBsdWdpbiBoYXMgYmVlbiBtZXJnZWQgaW50byB0aGUgY29yZSwg
JwotICAgICAgICAgICAgICAgICAgICAgICAncGxlYXNlIHJlbW92ZSBpdCBmcm9tIHlvdXIgcmVx
dWlyZW1lbnRzLicpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgcmV0ID0gc3VwZXIoUHl0
ZXN0UGx1Z2luTWFuYWdlciwgc2VsZikucmVnaXN0ZXIocGx1Z2luLCBuYW1lKQotICAgICAgICBp
ZiByZXQ6Ci0gICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0X3BsdWdpbl9yZWdpc3RlcmVkLmNh
bGxfaGlzdG9yaWMoCi0gICAgICAgICAgICAgICAga3dhcmdzPWRpY3QocGx1Z2luPXBsdWdpbiwg
bWFuYWdlcj1zZWxmKSkKLQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShwbHVnaW4sIHR5cGVz
Lk1vZHVsZVR5cGUpOgotICAgICAgICAgICAgICAgIHNlbGYuY29uc2lkZXJfbW9kdWxlKHBsdWdp
bikKLSAgICAgICAgcmV0dXJuIHJldAotCi0gICAgZGVmIGdldHBsdWdpbihzZWxmLCBuYW1lKToK
LSAgICAgICAgIyBzdXBwb3J0IGRlcHJlY2F0ZWQgbmFtaW5nIGJlY2F1c2UgcGx1Z2lucyAoeGRp
c3QgZS5nLikgdXNlIGl0Ci0gICAgICAgIHJldHVybiBzZWxmLmdldF9wbHVnaW4obmFtZSkKLQot
ICAgIGRlZiBoYXNwbHVnaW4oc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiBUcnVlIGlm
IHRoZSBwbHVnaW4gd2l0aCB0aGUgZ2l2ZW4gbmFtZSBpcyByZWdpc3RlcmVkLiIiIgotICAgICAg
ICByZXR1cm4gYm9vbChzZWxmLmdldF9wbHVnaW4obmFtZSkpCi0KLSAgICBkZWYgcHl0ZXN0X2Nv
bmZpZ3VyZShzZWxmLCBjb25maWcpOgotICAgICAgICAjIFhYWCBub3cgdGhhdCB0aGUgcGx1Z2lu
bWFuYWdlciBleHBvc2VzIGhvb2tpbXBsKHRyeWZpcnN0Li4uKQotICAgICAgICAjIHdlIHNob3Vs
ZCByZW1vdmUgdHJ5Zmlyc3QvdHJ5bGFzdCBhcyBtYXJrZXJzCi0gICAgICAgIGNvbmZpZy5hZGRp
bml2YWx1ZV9saW5lKCJtYXJrZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRyeWZpcnN0OiBtYXJrIGEgaG9vayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbiBzdWNoIHRoYXQg
dGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsdWdpbiBtYWNoaW5lcnkg
d2lsbCB0cnkgdG8gY2FsbCBpdCBmaXJzdC9hcyBlYXJseSBhcyBwb3NzaWJsZS4iKQotICAgICAg
ICBjb25maWcuYWRkaW5pdmFsdWVfbGluZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJ0cnlsYXN0OiBtYXJrIGEgaG9vayBpbXBsZW1lbnRhdGlvbiBmdW5jdGlv
biBzdWNoIHRoYXQgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsdWdp
biBtYWNoaW5lcnkgd2lsbCB0cnkgdG8gY2FsbCBpdCBsYXN0L2FzIGxhdGUgYXMgcG9zc2libGUu
IikKLQotICAgIGRlZiBfd2FybihzZWxmLCBtZXNzYWdlKToKLSAgICAgICAga3dhcmdzID0gbWVz
c2FnZSBpZiBpc2luc3RhbmNlKG1lc3NhZ2UsIGRpY3QpIGVsc2UgewotICAgICAgICAgICAgJ2Nv
ZGUnOiAnSTEnLAotICAgICAgICAgICAgJ21lc3NhZ2UnOiBtZXNzYWdlLAotICAgICAgICAgICAg
J2ZzbG9jYXRpb24nOiBOb25lLAotICAgICAgICAgICAgJ25vZGVpZCc6IE5vbmUsCi0gICAgICAg
IH0KLSAgICAgICAgc2VsZi5ob29rLnB5dGVzdF9sb2d3YXJuaW5nLmNhbGxfaGlzdG9yaWMoa3dh
cmdzPWt3YXJncykKLQotICAgICMKLSAgICAjIGludGVybmFsIEFQSSBmb3IgbG9jYWwgY29uZnRl
c3QgcGx1Z2luIGhhbmRsaW5nCi0gICAgIwotICAgIGRlZiBfc2V0X2luaXRpYWxfY29uZnRlc3Rz
KHNlbGYsIG5hbWVzcGFjZSk6Ci0gICAgICAgICIiIiBsb2FkIGluaXRpYWwgY29uZnRlc3QgZmls
ZXMgZ2l2ZW4gYSBwcmVwYXJzZWQgIm5hbWVzcGFjZSIuCi0gICAgICAgICAgICBBcyBjb25mdGVz
dCBmaWxlcyBtYXkgYWRkIHRoZWlyIG93biBjb21tYW5kIGxpbmUgb3B0aW9ucwotICAgICAgICAg
ICAgd2hpY2ggaGF2ZSBhcmd1bWVudHMgKCctLW15LW9wdCBzb21lcGF0aCcpIHdlIG1pZ2h0IGdl
dCBzb21lCi0gICAgICAgICAgICBmYWxzZSBwb3NpdGl2ZXMuICBBbGwgYnVpbHRpbiBhbmQgM3Jk
IHBhcnR5IHBsdWdpbnMgd2lsbCBoYXZlCi0gICAgICAgICAgICBiZWVuIGxvYWRlZCwgaG93ZXZl
ciwgc28gY29tbW9uIG9wdGlvbnMgd2lsbCBub3QgY29uZnVzZSBvdXIgbG9naWMKLSAgICAgICAg
ICAgIGhlcmUuCi0gICAgICAgICIiIgotICAgICAgICBjdXJyZW50ID0gcHkucGF0aC5sb2NhbCgp
Ci0gICAgICAgIHNlbGYuX2NvbmZjdXRkaXIgPSBjdXJyZW50LmpvaW4obmFtZXNwYWNlLmNvbmZj
dXRkaXIsIGFicz1UcnVlKSBcCi0gICAgICAgICAgICBpZiBuYW1lc3BhY2UuY29uZmN1dGRpciBl
bHNlIE5vbmUKLSAgICAgICAgc2VsZi5fbm9jb25mdGVzdCA9IG5hbWVzcGFjZS5ub2NvbmZ0ZXN0
Ci0gICAgICAgIHRlc3RwYXRocyA9IG5hbWVzcGFjZS5maWxlX29yX2RpcgotICAgICAgICBmb3Vu
ZGFuY2hvciA9IEZhbHNlCi0gICAgICAgIGZvciBwYXRoIGluIHRlc3RwYXRoczoKLSAgICAgICAg
ICAgIHBhdGggPSBzdHIocGF0aCkKLSAgICAgICAgICAgICMgcmVtb3ZlIG5vZGUtaWQgc3ludGF4
Ci0gICAgICAgICAgICBpID0gcGF0aC5maW5kKCI6OiIpCi0gICAgICAgICAgICBpZiBpICE9IC0x
OgotICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoWzppXQotICAgICAgICAgICAgYW5jaG9yID0g
Y3VycmVudC5qb2luKHBhdGgsIGFicz0xKQotICAgICAgICAgICAgaWYgZXhpc3RzKGFuY2hvcik6
ICAjIHdlIGZvdW5kIHNvbWUgZmlsZSBvYmplY3QKLSAgICAgICAgICAgICAgICBzZWxmLl90cnlf
bG9hZF9jb25mdGVzdChhbmNob3IpCi0gICAgICAgICAgICAgICAgZm91bmRhbmNob3IgPSBUcnVl
Ci0gICAgICAgIGlmIG5vdCBmb3VuZGFuY2hvcjoKLSAgICAgICAgICAgIHNlbGYuX3RyeV9sb2Fk
X2NvbmZ0ZXN0KGN1cnJlbnQpCi0KLSAgICBkZWYgX3RyeV9sb2FkX2NvbmZ0ZXN0KHNlbGYsIGFu
Y2hvcik6Ci0gICAgICAgIHNlbGYuX2dldGNvbmZ0ZXN0bW9kdWxlcyhhbmNob3IpCi0gICAgICAg
ICMgbGV0J3MgYWxzbyBjb25zaWRlciB0ZXN0KiBzdWJkaXJzCi0gICAgICAgIGlmIGFuY2hvci5j
aGVjayhkaXI9MSk6Ci0gICAgICAgICAgICBmb3IgeCBpbiBhbmNob3IubGlzdGRpcigidGVzdCoi
KToKLSAgICAgICAgICAgICAgICBpZiB4LmNoZWNrKGRpcj0xKToKLSAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHgpCi0KLSAgICBkZWYgX2dldGNvbmZ0ZXN0bW9k
dWxlcyhzZWxmLCBwYXRoKToKLSAgICAgICAgaWYgc2VsZi5fbm9jb25mdGVzdDoKLSAgICAgICAg
ICAgIHJldHVybiBbXQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcGF0
aDJjb25mbW9kc1twYXRoXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBp
ZiBwYXRoLmlzZmlsZSgpOgotICAgICAgICAgICAgICAgIGNsaXN0ID0gc2VsZi5fZ2V0Y29uZnRl
c3Rtb2R1bGVzKHBhdGguZGlycGF0aCgpKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICAjIFhYWCB0aGVzZSBkYXlzIHdlIG1heSByYXRoZXIgd2FudCB0byB1c2UgY29uZmlnLnJv
b3RkaXIKLSAgICAgICAgICAgICAgICAjIGFuZCBhbGxvdyB1c2VycyB0byBvcHQgaW50byBsb29r
aW5nIGludG8gdGhlIHJvb3RkaXIgcGFyZW50Ci0gICAgICAgICAgICAgICAgIyBkaXJlY3Rvcmll
cyBpbnN0ZWFkIG9mIHJlcXVpcmluZyB0byBzcGVjaWZ5IGNvbmZjdXRkaXIKLSAgICAgICAgICAg
ICAgICBjbGlzdCA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIHBhcmVudCBpbiBwYXRoLnBhcnRz
KCk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuX2NvbmZjdXRkaXIgYW5kIHNlbGYuX2Nv
bmZjdXRkaXIucmVsdG8ocGFyZW50KToKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
Ci0gICAgICAgICAgICAgICAgICAgIGNvbmZ0ZXN0cGF0aCA9IHBhcmVudC5qb2luKCJjb25mdGVz
dC5weSIpCi0gICAgICAgICAgICAgICAgICAgIGlmIGNvbmZ0ZXN0cGF0aC5pc2ZpbGUoKToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIG1vZCA9IHNlbGYuX2ltcG9ydGNvbmZ0ZXN0KGNvbmZ0ZXN0
cGF0aCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGNsaXN0LmFwcGVuZChtb2QpCi0KLSAgICAg
ICAgICAgIHNlbGYuX3BhdGgyY29uZm1vZHNbcGF0aF0gPSBjbGlzdAotICAgICAgICAgICAgcmV0
dXJuIGNsaXN0Ci0KLSAgICBkZWYgX3JnZXRfd2l0aF9jb25mbW9kKHNlbGYsIG5hbWUsIHBhdGgp
OgotICAgICAgICBtb2R1bGVzID0gc2VsZi5fZ2V0Y29uZnRlc3Rtb2R1bGVzKHBhdGgpCi0gICAg
ICAgIGZvciBtb2QgaW4gcmV2ZXJzZWQobW9kdWxlcyk6Ci0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgcmV0dXJuIG1vZCwgZ2V0YXR0cihtb2QsIG5hbWUpCi0gICAgICAgICAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAg
cmFpc2UgS2V5RXJyb3IobmFtZSkKLQotICAgIGRlZiBfaW1wb3J0Y29uZnRlc3Qoc2VsZiwgY29u
ZnRlc3RwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2NvbmZ0
ZXN0cGF0aDJtb2RbY29uZnRlc3RwYXRoXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAg
ICAgICAgICBwa2dwYXRoID0gY29uZnRlc3RwYXRoLnB5cGtncGF0aCgpCi0gICAgICAgICAgICBp
ZiBwa2dwYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgX2Vuc3VyZV9yZW1vdmVkX3N5c21v
ZHVsZShjb25mdGVzdHBhdGgucHVyZWJhc2VuYW1lKQotICAgICAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgICAgIG1vZCA9IGNvbmZ0ZXN0cGF0aC5weWltcG9ydCgpCi0gICAgICAgICAgICBleGNl
cHQgRXhjZXB0aW9uOgotICAgICAgICAgICAgICAgIHJhaXNlIENvbmZ0ZXN0SW1wb3J0RmFpbHVy
ZShjb25mdGVzdHBhdGgsIHN5cy5leGNfaW5mbygpKQotCi0gICAgICAgICAgICBzZWxmLl9jb25m
dGVzdF9wbHVnaW5zLmFkZChtb2QpCi0gICAgICAgICAgICBzZWxmLl9jb25mdGVzdHBhdGgybW9k
W2NvbmZ0ZXN0cGF0aF0gPSBtb2QKLSAgICAgICAgICAgIGRpcnBhdGggPSBjb25mdGVzdHBhdGgu
ZGlycGF0aCgpCi0gICAgICAgICAgICBpZiBkaXJwYXRoIGluIHNlbGYuX3BhdGgyY29uZm1vZHM6
Ci0gICAgICAgICAgICAgICAgZm9yIHBhdGgsIG1vZHMgaW4gc2VsZi5fcGF0aDJjb25mbW9kcy5p
dGVtcygpOgotICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBwYXRoLnJlbHRvKGRpcnBh
dGgpIG9yIHBhdGggPT0gZGlycGF0aDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCBt
b2Qgbm90IGluIG1vZHMKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHMuYXBwZW5kKG1vZCkK
LSAgICAgICAgICAgIHNlbGYudHJhY2UoImxvYWRlZCBjb25mdGVzdG1vZHVsZSAlciIgJSAobW9k
KSkKLSAgICAgICAgICAgIHNlbGYuY29uc2lkZXJfY29uZnRlc3QobW9kKQotICAgICAgICAgICAg
cmV0dXJuIG1vZAotCi0gICAgIwotICAgICMgQVBJIGZvciBib290c3RyYXBwaW5nIHBsdWdpbiBs
b2FkaW5nCi0gICAgIwotICAgICMKLQotICAgIGRlZiBjb25zaWRlcl9wcmVwYXJzZShzZWxmLCBh
cmdzKToKLSAgICAgICAgZm9yIG9wdDEsIG9wdDIgaW4gemlwKGFyZ3MsIGFyZ3NbMTpdKToKLSAg
ICAgICAgICAgIGlmIG9wdDEgPT0gIi1wIjoKLSAgICAgICAgICAgICAgICBzZWxmLmNvbnNpZGVy
X3BsdWdpbmFyZyhvcHQyKQotCi0gICAgZGVmIGNvbnNpZGVyX3BsdWdpbmFyZyhzZWxmLCBhcmcp
OgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgibm86Iik6Ci0gICAgICAgICAgICBuYW1lID0g
YXJnWzM6XQotICAgICAgICAgICAgc2VsZi5zZXRfYmxvY2tlZChuYW1lKQotICAgICAgICAgICAg
aWYgbm90IG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0XyIpOgotICAgICAgICAgICAgICAgIHNlbGYu
c2V0X2Jsb2NrZWQoInB5dGVzdF8iICsgbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IHNlbGYuaW1wb3J0X3BsdWdpbihhcmcpCi0KLSAgICBkZWYgY29uc2lkZXJfY29uZnRlc3Qoc2Vs
ZiwgY29uZnRlc3Rtb2R1bGUpOgotICAgICAgICBzZWxmLnJlZ2lzdGVyKGNvbmZ0ZXN0bW9kdWxl
LCBuYW1lPWNvbmZ0ZXN0bW9kdWxlLl9fZmlsZV9fKQotCi0gICAgZGVmIGNvbnNpZGVyX2Vudihz
ZWxmKToKLSAgICAgICAgc2VsZi5faW1wb3J0X3BsdWdpbl9zcGVjcyhvcy5lbnZpcm9uLmdldCgi
UFlURVNUX1BMVUdJTlMiKSkKLQotICAgIGRlZiBjb25zaWRlcl9tb2R1bGUoc2VsZiwgbW9kKToK
LSAgICAgICAgc2VsZi5faW1wb3J0X3BsdWdpbl9zcGVjcyhnZXRhdHRyKG1vZCwgJ3B5dGVzdF9w
bHVnaW5zJywgW10pKQotCi0gICAgZGVmIF9pbXBvcnRfcGx1Z2luX3NwZWNzKHNlbGYsIHNwZWMp
OgotICAgICAgICBwbHVnaW5zID0gX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdChzcGVjKQotICAg
ICAgICBmb3IgaW1wb3J0X3NwZWMgaW4gcGx1Z2luczoKLSAgICAgICAgICAgIHNlbGYuaW1wb3J0
X3BsdWdpbihpbXBvcnRfc3BlYykKLQotICAgIGRlZiBpbXBvcnRfcGx1Z2luKHNlbGYsIG1vZG5h
bWUpOgotICAgICAgICAjIG1vc3Qgb2Z0ZW4gbW9kbmFtZSByZWZlcnMgdG8gYnVpbHRpbiBtb2R1
bGVzLCBlLmcuICJweXRlc3RlciIsCi0gICAgICAgICMgInRlcm1pbmFsIiBvciAiY2FwdHVyZSIu
ICBUaG9zZSBwbHVnaW5zIGFyZSByZWdpc3RlcmVkIHVuZGVyIHRoZWlyCi0gICAgICAgICMgYmFz
ZW5hbWUgZm9yIGhpc3RvcmljIHB1cnBvc2VzIGJ1dCBtdXN0IGJlIGltcG9ydGVkIHdpdGggdGhl
Ci0gICAgICAgICMgX3B5dGVzdCBwcmVmaXguCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG1v
ZG5hbWUsIChzaXgudGV4dF90eXBlLCBzdHIpKSwgIm1vZHVsZSBuYW1lIGFzIHRleHQgcmVxdWly
ZWQsIGdvdCAlciIgJSBtb2RuYW1lCi0gICAgICAgIG1vZG5hbWUgPSBzdHIobW9kbmFtZSkKLSAg
ICAgICAgaWYgc2VsZi5pc19ibG9ja2VkKG1vZG5hbWUpIG9yIHNlbGYuZ2V0X3BsdWdpbihtb2Ru
YW1lKSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBtb2RuYW1l
IGluIGJ1aWx0aW5fcGx1Z2luczoKLSAgICAgICAgICAgIGltcG9ydHNwZWMgPSAiX3B5dGVzdC4i
ICsgbW9kbmFtZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaW1wb3J0c3BlYyA9IG1vZG5h
bWUKLSAgICAgICAgc2VsZi5yZXdyaXRlX2hvb2subWFya19yZXdyaXRlKGltcG9ydHNwZWMpCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIF9faW1wb3J0X18oaW1wb3J0c3BlYykKLSAgICAgICAg
ZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgICAgICAgICBuZXdfZXhjX3R5cGUgPSBJbXBv
cnRFcnJvcgotICAgICAgICAgICAgbmV3X2V4Y19tZXNzYWdlID0gJ0Vycm9yIGltcG9ydGluZyBw
bHVnaW4gIiVzIjogJXMnICUgKG1vZG5hbWUsIHNhZmVfc3RyKGUuYXJnc1swXSkpCi0gICAgICAg
ICAgICBuZXdfZXhjID0gbmV3X2V4Y190eXBlKG5ld19leGNfbWVzc2FnZSkKLQotICAgICAgICAg
ICAgc2l4LnJlcmFpc2UobmV3X2V4Y190eXBlLCBuZXdfZXhjLCBzeXMuZXhjX2luZm8oKVsyXSkK
LQotICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBpbXBvcnQgcHl0
ZXN0Ci0gICAgICAgICAgICBpZiBub3QgaGFzYXR0cihweXRlc3QsICdza2lwJykgb3Igbm90IGlz
aW5zdGFuY2UoZSwgcHl0ZXN0LnNraXAuRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICByYWlz
ZQotICAgICAgICAgICAgc2VsZi5fd2Fybigic2tpcHBlZCBwbHVnaW4gJXI6ICVzIiAlICgobW9k
bmFtZSwgZS5tc2cpKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG1vZCA9IHN5cy5tb2R1
bGVzW2ltcG9ydHNwZWNdCi0gICAgICAgICAgICBzZWxmLnJlZ2lzdGVyKG1vZCwgbW9kbmFtZSkK
LQotCi1kZWYgX2dldF9wbHVnaW5fc3BlY3NfYXNfbGlzdChzcGVjcyk6Ci0gICAgIiIiCi0gICAg
UGFyc2VzIGEgbGlzdCBvZiAicGx1Z2luIHNwZWNzIiBhbmQgcmV0dXJucyBhIGxpc3Qgb2YgcGx1
Z2luIG5hbWVzLgotCi0gICAgUGx1Z2luIHNwZWNzIGNhbiBiZSBnaXZlbiBhcyBhIGxpc3Qgb2Yg
c3RyaW5ncyBzZXBhcmF0ZWQgYnkgIiwiIG9yIGFscmVhZHkgYXMgYSBsaXN0L3R1cGxlIGluCi0g
ICAgd2hpY2ggY2FzZSBpdCBpcyByZXR1cm5lZCBhcyBhIGxpc3QuIFNwZWNzIGNhbiBhbHNvIGJl
IGBOb25lYCBpbiB3aGljaCBjYXNlIGFuCi0gICAgZW1wdHkgbGlzdCBpcyByZXR1cm5lZC4KLSAg
ICAiIiIKLSAgICBpZiBzcGVjcyBpcyBub3QgTm9uZToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShz
cGVjcywgc3RyKToKLSAgICAgICAgICAgIHNwZWNzID0gc3BlY3Muc3BsaXQoJywnKSBpZiBzcGVj
cyBlbHNlIFtdCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWNzLCAobGlzdCwgdHVwbGUp
KToKLSAgICAgICAgICAgIHJhaXNlIFVzYWdlRXJyb3IoIlBsdWdpbiBzcGVjcyBtdXN0IGJlIGEg
JywnLXNlcGFyYXRlZCBzdHJpbmcgb3IgYSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJsaXN0L3R1cGxlIG9mIHN0cmluZ3MgZm9yIHBsdWdpbiBuYW1lcy4gR2l2ZW46ICVyIiAlIHNw
ZWNzKQotICAgICAgICByZXR1cm4gbGlzdChzcGVjcykKLSAgICByZXR1cm4gW10KLQotCi1jbGFz
cyBQYXJzZXI6Ci0gICAgIiIiIFBhcnNlciBmb3IgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhbmQg
aW5pLWZpbGUgdmFsdWVzLgotCi0gICAgOml2YXIgZXh0cmFfaW5mbzogZGljdCBvZiBnZW5lcmlj
IHBhcmFtIC0+IHZhbHVlIHRvIGRpc3BsYXkgaW4gY2FzZQotICAgICAgICB0aGVyZSdzIGFuIGVy
cm9yIHByb2Nlc3NpbmcgdGhlIGNvbW1hbmQgbGluZSBhcmd1bWVudHMuCi0gICAgIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgdXNhZ2U9Tm9uZSwgcHJvY2Vzc29wdD1Ob25lKToKLSAgICAg
ICAgc2VsZi5fYW5vbnltb3VzID0gT3B0aW9uR3JvdXAoImN1c3RvbSBvcHRpb25zIiwgcGFyc2Vy
PXNlbGYpCi0gICAgICAgIHNlbGYuX2dyb3VwcyA9IFtdCi0gICAgICAgIHNlbGYuX3Byb2Nlc3Nv
cHQgPSBwcm9jZXNzb3B0Ci0gICAgICAgIHNlbGYuX3VzYWdlID0gdXNhZ2UKLSAgICAgICAgc2Vs
Zi5faW5pZGljdCA9IHt9Ci0gICAgICAgIHNlbGYuX2luaW5hbWVzID0gW10KLSAgICAgICAgc2Vs
Zi5leHRyYV9pbmZvID0ge30KLQotICAgIGRlZiBwcm9jZXNzb3B0aW9uKHNlbGYsIG9wdGlvbik6
Ci0gICAgICAgIGlmIHNlbGYuX3Byb2Nlc3NvcHQ6Ci0gICAgICAgICAgICBpZiBvcHRpb24uZGVz
dDoKLSAgICAgICAgICAgICAgICBzZWxmLl9wcm9jZXNzb3B0KG9wdGlvbikKLQotICAgIGRlZiBn
ZXRncm91cChzZWxmLCBuYW1lLCBkZXNjcmlwdGlvbj0iIiwgYWZ0ZXI9Tm9uZSk6Ci0gICAgICAg
ICIiIiBnZXQgKG9yIGNyZWF0ZSkgYSBuYW1lZCBvcHRpb24gR3JvdXAuCi0KLSAgICAgICAgOm5h
bWU6IG5hbWUgb2YgdGhlIG9wdGlvbiBncm91cC4KLSAgICAgICAgOmRlc2NyaXB0aW9uOiBsb25n
IGRlc2NyaXB0aW9uIGZvciAtLWhlbHAgb3V0cHV0LgotICAgICAgICA6YWZ0ZXI6IG5hbWUgb2Yg
b3RoZXIgZ3JvdXAsIHVzZWQgZm9yIG9yZGVyaW5nIC0taGVscCBvdXRwdXQuCi0KLSAgICAgICAg
VGhlIHJldHVybmVkIGdyb3VwIG9iamVjdCBoYXMgYW4gYGBhZGRvcHRpb25gYCBtZXRob2Qgd2l0
aCB0aGUgc2FtZQotICAgICAgICBzaWduYXR1cmUgYXMgOnB5OmZ1bmM6YHBhcnNlci5hZGRvcHRp
b24KLSAgICAgICAgPF9weXRlc3QuY29uZmlnLlBhcnNlci5hZGRvcHRpb24+YCBidXQgd2lsbCBi
ZSBzaG93biBpbiB0aGUKLSAgICAgICAgcmVzcGVjdGl2ZSBncm91cCBpbiB0aGUgb3V0cHV0IG9m
IGBgcHl0ZXN0LiAtLWhlbHBgYC4KLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBncm91cCBpbiBz
ZWxmLl9ncm91cHM6Ci0gICAgICAgICAgICBpZiBncm91cC5uYW1lID09IG5hbWU6Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGdyb3VwCi0gICAgICAgIGdyb3VwID0gT3B0aW9uR3JvdXAobmFtZSwg
ZGVzY3JpcHRpb24sIHBhcnNlcj1zZWxmKQotICAgICAgICBpID0gMAotICAgICAgICBmb3IgaSwg
Z3JwIGluIGVudW1lcmF0ZShzZWxmLl9ncm91cHMpOgotICAgICAgICAgICAgaWYgZ3JwLm5hbWUg
PT0gYWZ0ZXI6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgc2VsZi5fZ3JvdXBzLmlu
c2VydChpICsgMSwgZ3JvdXApCi0gICAgICAgIHJldHVybiBncm91cAotCi0gICAgZGVmIGFkZG9w
dGlvbihzZWxmLCAqb3B0cywgKiphdHRycyk6Ci0gICAgICAgICIiIiByZWdpc3RlciBhIGNvbW1h
bmQgbGluZSBvcHRpb24uCi0KLSAgICAgICAgOm9wdHM6IG9wdGlvbiBuYW1lcywgY2FuIGJlIHNo
b3J0IG9yIGxvbmcgb3B0aW9ucy4KLSAgICAgICAgOmF0dHJzOiBzYW1lIGF0dHJpYnV0ZXMgd2hp
Y2ggdGhlIGBgYWRkX29wdGlvbigpYGAgZnVuY3Rpb24gb2YgdGhlCi0gICAgICAgICAgIGBhcmdw
YXJzZSBsaWJyYXJ5Ci0gICAgICAgICAgIDxodHRwOi8vZG9jcy5weXRob24ub3JnLzIvbGlicmFy
eS9hcmdwYXJzZS5odG1sPmBfCi0gICAgICAgICAgIGFjY2VwdHMuCi0KLSAgICAgICAgQWZ0ZXIg
Y29tbWFuZCBsaW5lIHBhcnNpbmcgb3B0aW9ucyBhcmUgYXZhaWxhYmxlIG9uIHRoZSBweXRlc3Qg
Y29uZmlnCi0gICAgICAgIG9iamVjdCB2aWEgYGBjb25maWcub3B0aW9uLk5BTUVgYCB3aGVyZSBg
YE5BTUVgYCBpcyB1c3VhbGx5IHNldAotICAgICAgICBieSBwYXNzaW5nIGEgYGBkZXN0YGAgYXR0
cmlidXRlLCBmb3IgZXhhbXBsZQotICAgICAgICBgYGFkZG9wdGlvbigiLS1sb25nIiwgZGVzdD0i
TkFNRSIsIC4uLilgYC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX2Fub255bW91cy5hZGRv
cHRpb24oKm9wdHMsICoqYXR0cnMpCi0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgYXJncywgbmFtZXNw
YWNlPU5vbmUpOgotICAgICAgICBmcm9tIF9weXRlc3QuX2FyZ2NvbXBsZXRlIGltcG9ydCB0cnlf
YXJnY29tcGxldGUKLSAgICAgICAgc2VsZi5vcHRwYXJzZXIgPSBzZWxmLl9nZXRwYXJzZXIoKQot
ICAgICAgICB0cnlfYXJnY29tcGxldGUoc2VsZi5vcHRwYXJzZXIpCi0gICAgICAgIHJldHVybiBz
ZWxmLm9wdHBhcnNlci5wYXJzZV9hcmdzKFtzdHIoeCkgZm9yIHggaW4gYXJnc10sIG5hbWVzcGFj
ZT1uYW1lc3BhY2UpCi0KLSAgICBkZWYgX2dldHBhcnNlcihzZWxmKToKLSAgICAgICAgZnJvbSBf
cHl0ZXN0Ll9hcmdjb21wbGV0ZSBpbXBvcnQgZmlsZXNjb21wbGV0ZXIKLSAgICAgICAgb3B0cGFy
c2VyID0gTXlPcHRpb25QYXJzZXIoc2VsZiwgc2VsZi5leHRyYV9pbmZvKQotICAgICAgICBncm91
cHMgPSBzZWxmLl9ncm91cHMgKyBbc2VsZi5fYW5vbnltb3VzXQotICAgICAgICBmb3IgZ3JvdXAg
aW4gZ3JvdXBzOgotICAgICAgICAgICAgaWYgZ3JvdXAub3B0aW9uczoKLSAgICAgICAgICAgICAg
ICBkZXNjID0gZ3JvdXAuZGVzY3JpcHRpb24gb3IgZ3JvdXAubmFtZQotICAgICAgICAgICAgICAg
IGFyZ2dyb3VwID0gb3B0cGFyc2VyLmFkZF9hcmd1bWVudF9ncm91cChkZXNjKQotICAgICAgICAg
ICAgICAgIGZvciBvcHRpb24gaW4gZ3JvdXAub3B0aW9uczoKLSAgICAgICAgICAgICAgICAgICAg
biA9IG9wdGlvbi5uYW1lcygpCi0gICAgICAgICAgICAgICAgICAgIGEgPSBvcHRpb24uYXR0cnMo
KQotICAgICAgICAgICAgICAgICAgICBhcmdncm91cC5hZGRfYXJndW1lbnQoKm4sICoqYSkKLSAg
ICAgICAgIyBiYXNoIGxpa2UgYXV0b2NvbXBsZXRpb24gZm9yIGRpcnMgKGFwcGVuZGluZyAnLycp
Ci0gICAgICAgIG9wdHBhcnNlci5hZGRfYXJndW1lbnQoRklMRV9PUl9ESVIsIG5hcmdzPScqJyku
Y29tcGxldGVyID0gZmlsZXNjb21wbGV0ZXIKLSAgICAgICAgcmV0dXJuIG9wdHBhcnNlcgotCi0g
ICAgZGVmIHBhcnNlX3NldG9wdGlvbihzZWxmLCBhcmdzLCBvcHRpb24sIG5hbWVzcGFjZT1Ob25l
KToKLSAgICAgICAgcGFyc2Vkb3B0aW9uID0gc2VsZi5wYXJzZShhcmdzLCBuYW1lc3BhY2U9bmFt
ZXNwYWNlKQotICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gcGFyc2Vkb3B0aW9uLl9fZGljdF9f
Lml0ZW1zKCk6Ci0gICAgICAgICAgICBzZXRhdHRyKG9wdGlvbiwgbmFtZSwgdmFsdWUpCi0gICAg
ICAgIHJldHVybiBnZXRhdHRyKHBhcnNlZG9wdGlvbiwgRklMRV9PUl9ESVIpCi0KLSAgICBkZWYg
cGFyc2Vfa25vd25fYXJncyhzZWxmLCBhcmdzLCBuYW1lc3BhY2U9Tm9uZSk6Ci0gICAgICAgICIi
InBhcnNlcyBhbmQgcmV0dXJucyBhIG5hbWVzcGFjZSBvYmplY3Qgd2l0aCBrbm93biBhcmd1bWVu
dHMgYXQgdGhpcwotICAgICAgICBwb2ludC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBz
ZWxmLnBhcnNlX2tub3duX2FuZF91bmtub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlPW5hbWVzcGFj
ZSlbMF0KLQotICAgIGRlZiBwYXJzZV9rbm93bl9hbmRfdW5rbm93bl9hcmdzKHNlbGYsIGFyZ3Ms
IG5hbWVzcGFjZT1Ob25lKToKLSAgICAgICAgIiIicGFyc2VzIGFuZCByZXR1cm5zIGEgbmFtZXNw
YWNlIG9iamVjdCB3aXRoIGtub3duIGFyZ3VtZW50cywgYW5kCi0gICAgICAgIHRoZSByZW1haW5p
bmcgYXJndW1lbnRzIHVua25vd24gYXQgdGhpcyBwb2ludC4KLSAgICAgICAgIiIiCi0gICAgICAg
IG9wdHBhcnNlciA9IHNlbGYuX2dldHBhcnNlcigpCi0gICAgICAgIGFyZ3MgPSBbc3RyKHgpIGZv
ciB4IGluIGFyZ3NdCi0gICAgICAgIHJldHVybiBvcHRwYXJzZXIucGFyc2Vfa25vd25fYXJncyhh
cmdzLCBuYW1lc3BhY2U9bmFtZXNwYWNlKQotCi0gICAgZGVmIGFkZGluaShzZWxmLCBuYW1lLCBo
ZWxwLCB0eXBlPU5vbmUsIGRlZmF1bHQ9Tm9uZSk6Ci0gICAgICAgICIiIiByZWdpc3RlciBhbiBp
bmktZmlsZSBvcHRpb24uCi0KLSAgICAgICAgOm5hbWU6IG5hbWUgb2YgdGhlIGluaS12YXJpYWJs
ZQotICAgICAgICA6dHlwZTogdHlwZSBvZiB0aGUgdmFyaWFibGUsIGNhbiBiZSBgYHBhdGhsaXN0
YGAsIGBgYXJnc2BgLCBgYGxpbmVsaXN0YGAKLSAgICAgICAgICAgICAgIG9yIGBgYm9vbGBgLgot
ICAgICAgICA6ZGVmYXVsdDogZGVmYXVsdCB2YWx1ZSBpZiBubyBpbmktZmlsZSBvcHRpb24gZXhp
c3RzIGJ1dCBpcyBxdWVyaWVkLgotCi0gICAgICAgIFRoZSB2YWx1ZSBvZiBpbmktdmFyaWFibGVz
IGNhbiBiZSByZXRyaWV2ZWQgdmlhIGEgY2FsbCB0bwotICAgICAgICA6cHk6ZnVuYzpgY29uZmln
LmdldGluaShuYW1lKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldGluaT5gLgotICAgICAgICAi
IiIKLSAgICAgICAgYXNzZXJ0IHR5cGUgaW4gKE5vbmUsICJwYXRobGlzdCIsICJhcmdzIiwgImxp
bmVsaXN0IiwgImJvb2wiKQotICAgICAgICBzZWxmLl9pbmlkaWN0W25hbWVdID0gKGhlbHAsIHR5
cGUsIGRlZmF1bHQpCi0gICAgICAgIHNlbGYuX2luaW5hbWVzLmFwcGVuZChuYW1lKQotCi0KLWNs
YXNzIEFyZ3VtZW50RXJyb3IoRXhjZXB0aW9uKToKLSAgICAiIiIKLSAgICBSYWlzZWQgaWYgYW4g
QXJndW1lbnQgaW5zdGFuY2UgaXMgY3JlYXRlZCB3aXRoIGludmFsaWQgb3IKLSAgICBpbmNvbnNp
c3RlbnQgYXJndW1lbnRzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZywg
b3B0aW9uKToKLSAgICAgICAgc2VsZi5tc2cgPSBtc2cKLSAgICAgICAgc2VsZi5vcHRpb25faWQg
PSBzdHIob3B0aW9uKQotCi0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
b3B0aW9uX2lkOgotICAgICAgICAgICAgcmV0dXJuICJvcHRpb24gJXM6ICVzIiAlIChzZWxmLm9w
dGlvbl9pZCwgc2VsZi5tc2cpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2Vs
Zi5tc2cKLQotCi1jbGFzcyBBcmd1bWVudDoKLSAgICAiIiJjbGFzcyB0aGF0IG1pbWljcyB0aGUg
bmVjZXNzYXJ5IGJlaGF2aW91ciBvZiBvcHRwYXJzZS5PcHRpb24KLQotICAgIGl0cyBjdXJyZW50
bHkgYSBsZWFzdCBlZmZvcnQgaW1wbGVtZW50YXRpb24KLSAgICBhbmQgaWdub3JpbmcgY2hvaWNl
cyBhbmQgaW50ZWdlciBwcmVmaXhlcwotICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGli
cmFyeS9vcHRwYXJzZS5odG1sI29wdHBhcnNlLXN0YW5kYXJkLW9wdGlvbi10eXBlcwotICAgICIi
IgotICAgIF90eXBfbWFwID0gewotICAgICAgICAnaW50JzogaW50LAotICAgICAgICAnc3RyaW5n
Jzogc3RyLAotICAgICAgICAnZmxvYXQnOiBmbG9hdCwKLSAgICAgICAgJ2NvbXBsZXgnOiBjb21w
bGV4LAotICAgIH0KLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqbmFtZXMsICoqYXR0cnMpOgot
ICAgICAgICAiIiJzdG9yZSBwYXJtcyBpbiBwcml2YXRlIHZhcnMgZm9yIHVzZSBpbiBhZGRfYXJn
dW1lbnQiIiIKLSAgICAgICAgc2VsZi5fYXR0cnMgPSBhdHRycwotICAgICAgICBzZWxmLl9zaG9y
dF9vcHRzID0gW10KLSAgICAgICAgc2VsZi5fbG9uZ19vcHRzID0gW10KLSAgICAgICAgc2VsZi5k
ZXN0ID0gYXR0cnMuZ2V0KCdkZXN0JykKLSAgICAgICAgaWYgJyVkZWZhdWx0JyBpbiAoYXR0cnMu
Z2V0KCdoZWxwJykgb3IgJycpOgotICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAg
ICAgICAgICAncHl0ZXN0IG5vdyB1c2VzIGFyZ3BhcnNlLiAiJWRlZmF1bHQiIHNob3VsZCBiZScK
LSAgICAgICAgICAgICAgICAnIGNoYW5nZWQgdG8gIiUoZGVmYXVsdClzIiAnLAotICAgICAgICAg
ICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAgICAgICBzdGFja2xldmVsPTMp
Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHR5cCA9IGF0dHJzWyd0eXBlJ10KLSAgICAgICAg
ZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgIyB0aGlzIG1pZ2h0IHJhaXNlIGEga2V5ZXJyb3IgYXMgd2VsbCwgZG9uJ3Qgd2FudCB0
byBjYXRjaCB0aGF0Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHR5cCwgc2l4LnN0cmluZ190
eXBlcyk6Ci0gICAgICAgICAgICAgICAgaWYgdHlwID09ICdjaG9pY2UnOgotICAgICAgICAgICAg
ICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5cGUgYXJn
dW1lbnQgdG8gYWRkb3B0aW9uKCkgaXMgYSBzdHJpbmcgJXIuJwotICAgICAgICAgICAgICAgICAg
ICAgICAgJyBGb3IgcGFyc2VhcmcgdGhpcyBpcyBvcHRpb25hbCBhbmQgd2hlbiBzdXBwbGllZCcK
LSAgICAgICAgICAgICAgICAgICAgICAgICcgc2hvdWxkIGJlIGEgdHlwZS4nCi0gICAgICAgICAg
ICAgICAgICAgICAgICAnIChvcHRpb25zOiAlcyknICUgKHR5cCwgbmFtZXMpLAotICAgICAgICAg
ICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAg
ICAgc3RhY2tsZXZlbD0zKQotICAgICAgICAgICAgICAgICAgICAjIGFyZ3BhcnNlIGV4cGVjdHMg
YSB0eXBlIGhlcmUgdGFrZSBpdCBmcm9tCi0gICAgICAgICAgICAgICAgICAgICMgdGhlIHR5cGUg
b2YgdGhlIGZpcnN0IGVsZW1lbnQKLSAgICAgICAgICAgICAgICAgICAgYXR0cnNbJ3R5cGUnXSA9
IHR5cGUoYXR0cnNbJ2Nob2ljZXMnXVswXSkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgJ3R5
cGUgYXJndW1lbnQgdG8gYWRkb3B0aW9uKCkgaXMgYSBzdHJpbmcgJXIuJwotICAgICAgICAgICAg
ICAgICAgICAgICAgJyBGb3IgcGFyc2VhcmcgdGhpcyBzaG91bGQgYmUgYSB0eXBlLicKLSAgICAg
ICAgICAgICAgICAgICAgICAgICcgKG9wdGlvbnM6ICVzKScgJSAodHlwLCBuYW1lcyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICBzdGFja2xldmVsPTMpCi0gICAgICAgICAgICAgICAgICAgIGF0dHJzWyd0eXBlJ10g
PSBBcmd1bWVudC5fdHlwX21hcFt0eXBdCi0gICAgICAgICAgICAgICAgIyB1c2VkIGluIHRlc3Rf
cGFyc2VvcHQgLT4gdGVzdF9wYXJzZV9kZWZhdWx0Z2V0dGVyCi0gICAgICAgICAgICAgICAgc2Vs
Zi50eXBlID0gYXR0cnNbJ3R5cGUnXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBzZWxmLnR5cGUgPSB0eXAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgIyBhdHRyaWJ1dGUg
ZXhpc3RlbmNlIGlzIHRlc3RlZCBpbiBDb25maWcuX3Byb2Nlc3NvcHQKLSAgICAgICAgICAgIHNl
bGYuZGVmYXVsdCA9IGF0dHJzWydkZWZhdWx0J10KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgot
ICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLl9zZXRfb3B0X3N0cmluZ3MobmFtZXMpCi0g
ICAgICAgIGlmIG5vdCBzZWxmLmRlc3Q6Ci0gICAgICAgICAgICBpZiBzZWxmLl9sb25nX29wdHM6
Ci0gICAgICAgICAgICAgICAgc2VsZi5kZXN0ID0gc2VsZi5fbG9uZ19vcHRzWzBdWzI6XS5yZXBs
YWNlKCctJywgJ18nKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICAgICAgICAgIHNlbGYuZGVzdCA9IHNlbGYuX3Nob3J0X29wdHNbMF1bMTpdCi0g
ICAgICAgICAgICAgICAgZXhjZXB0IEluZGV4RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHJh
aXNlIEFyZ3VtZW50RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgICAnbmVlZCBhIGxvbmcg
b3Igc2hvcnQgb3B0aW9uJywgc2VsZikKLQotICAgIGRlZiBuYW1lcyhzZWxmKToKLSAgICAgICAg
cmV0dXJuIHNlbGYuX3Nob3J0X29wdHMgKyBzZWxmLl9sb25nX29wdHMKLQotICAgIGRlZiBhdHRy
cyhzZWxmKToKLSAgICAgICAgIyB1cGRhdGUgYW55IGF0dHJpYnV0ZXMgc2V0IGJ5IHByb2Nlc3Nv
cHQKLSAgICAgICAgYXR0cnMgPSAnZGVmYXVsdCBkZXN0IGhlbHAnLnNwbGl0KCkKLSAgICAgICAg
aWYgc2VsZi5kZXN0OgotICAgICAgICAgICAgYXR0cnMuYXBwZW5kKHNlbGYuZGVzdCkKLSAgICAg
ICAgZm9yIGF0dHIgaW4gYXR0cnM6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAg
c2VsZi5fYXR0cnNbYXR0cl0gPSBnZXRhdHRyKHNlbGYsIGF0dHIpCi0gICAgICAgICAgICBleGNl
cHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICBpZiBzZWxm
Ll9hdHRycy5nZXQoJ2hlbHAnKToKLSAgICAgICAgICAgIGEgPSBzZWxmLl9hdHRyc1snaGVscCdd
Ci0gICAgICAgICAgICBhID0gYS5yZXBsYWNlKCclZGVmYXVsdCcsICclKGRlZmF1bHQpcycpCi0g
ICAgICAgICAgICAjIGEgPSBhLnJlcGxhY2UoJyVwcm9nJywgJyUocHJvZylzJykKLSAgICAgICAg
ICAgIHNlbGYuX2F0dHJzWydoZWxwJ10gPSBhCi0gICAgICAgIHJldHVybiBzZWxmLl9hdHRycwot
Ci0gICAgZGVmIF9zZXRfb3B0X3N0cmluZ3Moc2VsZiwgb3B0cyk6Ci0gICAgICAgICIiImRpcmVj
dGx5IGZyb20gb3B0cGFyc2UKLQotICAgICAgICBtaWdodCBub3QgYmUgbmVjZXNzYXJ5IGFzIHRo
aXMgaXMgcGFzc2VkIHRvIGFyZ3BhcnNlIGxhdGVyIG9uIiIiCi0gICAgICAgIGZvciBvcHQgaW4g
b3B0czoKLSAgICAgICAgICAgIGlmIGxlbihvcHQpIDwgMjoKLSAgICAgICAgICAgICAgICByYWlz
ZSBBcmd1bWVudEVycm9yKAotICAgICAgICAgICAgICAgICAgICAiaW52YWxpZCBvcHRpb24gc3Ry
aW5nICVyOiAiCi0gICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGF0IGxlYXN0IHR3byBjaGFy
YWN0ZXJzIGxvbmciICUgb3B0LCBzZWxmKQotICAgICAgICAgICAgZWxpZiBsZW4ob3B0KSA9PSAy
OgotICAgICAgICAgICAgICAgIGlmIG5vdCAob3B0WzBdID09ICItIiBhbmQgb3B0WzFdICE9ICIt
Iik6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIEFyZ3VtZW50RXJyb3IoCi0gICAgICAgICAg
ICAgICAgICAgICAgICAiaW52YWxpZCBzaG9ydCBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAibXVzdCBiZSBvZiB0aGUgZm9ybSAteCwgKHggYW55IG5vbi1kYXNo
IGNoYXIpIiAlIG9wdCwKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYpCi0gICAgICAgICAg
ICAgICAgc2VsZi5fc2hvcnRfb3B0cy5hcHBlbmQob3B0KQotICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICBpZiBub3QgKG9wdFswOjJdID09ICItLSIgYW5kIG9wdFsyXSAhPSAiLSIp
OgotICAgICAgICAgICAgICAgICAgICByYWlzZSBBcmd1bWVudEVycm9yKAotICAgICAgICAgICAg
ICAgICAgICAgICAgImludmFsaWQgbG9uZyBvcHRpb24gc3RyaW5nICVyOiAiCi0gICAgICAgICAg
ICAgICAgICAgICAgICAibXVzdCBzdGFydCB3aXRoIC0tLCBmb2xsb3dlZCBieSBub24tZGFzaCIg
JSBvcHQsCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmKQotICAgICAgICAgICAgICAgIHNl
bGYuX2xvbmdfb3B0cy5hcHBlbmQob3B0KQotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAg
ICAgICBhcmdzID0gW10KLSAgICAgICAgaWYgc2VsZi5fc2hvcnRfb3B0czoKLSAgICAgICAgICAg
IGFyZ3MgKz0gWydfc2hvcnRfb3B0czogJyArIHJlcHIoc2VsZi5fc2hvcnRfb3B0cyldCi0gICAg
ICAgIGlmIHNlbGYuX2xvbmdfb3B0czoKLSAgICAgICAgICAgIGFyZ3MgKz0gWydfbG9uZ19vcHRz
OiAnICsgcmVwcihzZWxmLl9sb25nX29wdHMpXQotICAgICAgICBhcmdzICs9IFsnZGVzdDogJyAr
IHJlcHIoc2VsZi5kZXN0KV0KLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAndHlwZScpOgotICAg
ICAgICAgICAgYXJncyArPSBbJ3R5cGU6ICcgKyByZXByKHNlbGYudHlwZSldCi0gICAgICAgIGlm
IGhhc2F0dHIoc2VsZiwgJ2RlZmF1bHQnKToKLSAgICAgICAgICAgIGFyZ3MgKz0gWydkZWZhdWx0
OiAnICsgcmVwcihzZWxmLmRlZmF1bHQpXQotICAgICAgICByZXR1cm4gJ0FyZ3VtZW50KHswfSkn
LmZvcm1hdCgnLCAnLmpvaW4oYXJncykpCi0KLQotY2xhc3MgT3B0aW9uR3JvdXA6Ci0gICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIGRlc2NyaXB0aW9uPSIiLCBwYXJzZXI9Tm9uZSk6Ci0gICAg
ICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5kZXNjcmlwdGlvbiA9IGRlc2NyaXB0
aW9uCi0gICAgICAgIHNlbGYub3B0aW9ucyA9IFtdCi0gICAgICAgIHNlbGYucGFyc2VyID0gcGFy
c2VyCi0KLSAgICBkZWYgYWRkb3B0aW9uKHNlbGYsICpvcHRuYW1lcywgKiphdHRycyk6Ci0gICAg
ICAgICIiIiBhZGQgYW4gb3B0aW9uIHRvIHRoaXMgZ3JvdXAuCi0KLSAgICAgICAgaWYgYSBzaG9y
dGVuZWQgdmVyc2lvbiBvZiBhIGxvbmcgb3B0aW9uIGlzIHNwZWNpZmllZCBpdCB3aWxsCi0gICAg
ICAgIGJlIHN1cHByZXNzZWQgaW4gdGhlIGhlbHAuIGFkZG9wdGlvbignLS10d293b3JkcycsICct
LXR3by13b3JkcycpCi0gICAgICAgIHJlc3VsdHMgaW4gaGVscCBzaG93aW5nICctLXR3by13b3Jk
cycgb25seSwgYnV0IC0tdHdvd29yZHMgZ2V0cwotICAgICAgICBhY2NlcHRlZCAqKmFuZCoqIHRo
ZSBhdXRvbWF0aWMgZGVzdGluYXRpb24gaXMgaW4gYXJncy50d293b3JkcwotICAgICAgICAiIiIK
LSAgICAgICAgY29uZmxpY3QgPSBzZXQob3B0bmFtZXMpLmludGVyc2VjdGlvbigKLSAgICAgICAg
ICAgIG5hbWUgZm9yIG9wdCBpbiBzZWxmLm9wdGlvbnMgZm9yIG5hbWUgaW4gb3B0Lm5hbWVzKCkp
Ci0gICAgICAgIGlmIGNvbmZsaWN0OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigib3B0
aW9uIG5hbWVzICVzIGFscmVhZHkgYWRkZWQiICUgY29uZmxpY3QpCi0gICAgICAgIG9wdGlvbiA9
IEFyZ3VtZW50KCpvcHRuYW1lcywgKiphdHRycykKLSAgICAgICAgc2VsZi5fYWRkb3B0aW9uX2lu
c3RhbmNlKG9wdGlvbiwgc2hvcnR1cHBlcj1GYWxzZSkKLQotICAgIGRlZiBfYWRkb3B0aW9uKHNl
bGYsICpvcHRuYW1lcywgKiphdHRycyk6Ci0gICAgICAgIG9wdGlvbiA9IEFyZ3VtZW50KCpvcHRu
YW1lcywgKiphdHRycykKLSAgICAgICAgc2VsZi5fYWRkb3B0aW9uX2luc3RhbmNlKG9wdGlvbiwg
c2hvcnR1cHBlcj1UcnVlKQotCi0gICAgZGVmIF9hZGRvcHRpb25faW5zdGFuY2Uoc2VsZiwgb3B0
aW9uLCBzaG9ydHVwcGVyPUZhbHNlKToKLSAgICAgICAgaWYgbm90IHNob3J0dXBwZXI6Ci0gICAg
ICAgICAgICBmb3Igb3B0IGluIG9wdGlvbi5fc2hvcnRfb3B0czoKLSAgICAgICAgICAgICAgICBp
ZiBvcHRbMF0gPT0gJy0nIGFuZCBvcHRbMV0uaXNsb3dlcigpOgotICAgICAgICAgICAgICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJsb3dlcmNhc2Ugc2hvcnRvcHRpb25zIHJlc2VydmVkIikKLSAg
ICAgICAgaWYgc2VsZi5wYXJzZXI6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlci5wcm9jZXNzb3B0
aW9uKG9wdGlvbikKLSAgICAgICAgc2VsZi5vcHRpb25zLmFwcGVuZChvcHRpb24pCi0KLQotY2xh
c3MgTXlPcHRpb25QYXJzZXIoYXJncGFyc2UuQXJndW1lbnRQYXJzZXIpOgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBwYXJzZXIsIGV4dHJhX2luZm89Tm9uZSk6Ci0gICAgICAgIGlmIG5vdCBleHRy
YV9pbmZvOgotICAgICAgICAgICAgZXh0cmFfaW5mbyA9IHt9Ci0gICAgICAgIHNlbGYuX3BhcnNl
ciA9IHBhcnNlcgotICAgICAgICBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlci5fX2luaXRfXyhzZWxm
LCB1c2FnZT1wYXJzZXIuX3VzYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhZGRfaGVscD1GYWxzZSwgZm9ybWF0dGVyX2NsYXNzPURyb3BTaG9ydGVyTG9uZ0hl
bHBGb3JtYXR0ZXIpCi0gICAgICAgICMgZXh0cmFfaW5mbyBpcyBhIGRpY3Qgb2YgKHBhcmFtIC0+
IHZhbHVlKSB0byBkaXNwbGF5IGlmIHRoZXJlJ3MKLSAgICAgICAgIyBhbiB1c2FnZSBlcnJvciB0
byBwcm92aWRlIG1vcmUgY29udGV4dHVhbCBpbmZvcm1hdGlvbiB0byB0aGUgdXNlcgotICAgICAg
ICBzZWxmLmV4dHJhX2luZm8gPSBleHRyYV9pbmZvCi0KLSAgICBkZWYgcGFyc2VfYXJncyhzZWxm
LCBhcmdzPU5vbmUsIG5hbWVzcGFjZT1Ob25lKToKLSAgICAgICAgIiIiYWxsb3cgc3BsaXR0aW5n
IG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzIiIiCi0gICAgICAgIGFyZ3MsIGFyZ3YgPSBzZWxmLnBh
cnNlX2tub3duX2FyZ3MoYXJncywgbmFtZXNwYWNlKQotICAgICAgICBpZiBhcmd2OgotICAgICAg
ICAgICAgZm9yIGFyZyBpbiBhcmd2OgotICAgICAgICAgICAgICAgIGlmIGFyZyBhbmQgYXJnWzBd
ID09ICctJzoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSBbJ3VucmVjb2duaXplZCBhcmd1
bWVudHM6ICVzJyAlICgnICcuam9pbihhcmd2KSldCi0gICAgICAgICAgICAgICAgICAgIGZvciBr
LCB2IGluIHNvcnRlZChzZWxmLmV4dHJhX2luZm8uaXRlbXMoKSk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lcy5hcHBlbmQoJyAgJXM6ICVzJyAlIChrLCB2KSkKLSAgICAgICAgICAgICAg
ICAgICAgc2VsZi5lcnJvcignXG4nLmpvaW4obGluZXMpKQotICAgICAgICAgICAgZ2V0YXR0cihh
cmdzLCBGSUxFX09SX0RJUikuZXh0ZW5kKGFyZ3YpCi0gICAgICAgIHJldHVybiBhcmdzCi0KLQot
Y2xhc3MgRHJvcFNob3J0ZXJMb25nSGVscEZvcm1hdHRlcihhcmdwYXJzZS5IZWxwRm9ybWF0dGVy
KToKLSAgICAiIiJzaG9ydGVuIGhlbHAgZm9yIGxvbmcgb3B0aW9ucyB0aGF0IGRpZmZlciBvbmx5
IGluIGV4dHJhIGh5cGhlbnMKLQotICAgIC0gY29sbGFwc2UgKipsb25nKiogb3B0aW9ucyB0aGF0
IGFyZSB0aGUgc2FtZSBleGNlcHQgZm9yIGV4dHJhIGh5cGhlbnMKLSAgICAtIHNwZWNpYWwgYWN0
aW9uIGF0dHJpYnV0ZSBtYXBfbG9uZ19vcHRpb24gYWxsb3dzIHN1cnByZXNzaW5nIGFkZGl0aW9u
YWwKLSAgICAgIGxvbmcgb3B0aW9ucwotICAgIC0gc2hvcnRjdXQgaWYgdGhlcmUgYXJlIG9ubHkg
dHdvIG9wdGlvbnMgYW5kIG9uZSBvZiB0aGVtIGlzIGEgc2hvcnQgb25lCi0gICAgLSBjYWNoZSBy
ZXN1bHQgb24gYWN0aW9uIG9iamVjdCBhcyB0aGlzIGlzIGNhbGxlZCBhdCBsZWFzdCAyIHRpbWVz
Ci0gICAgIiIiCi0KLSAgICBkZWYgX2Zvcm1hdF9hY3Rpb25faW52b2NhdGlvbihzZWxmLCBhY3Rp
b24pOgotICAgICAgICBvcmdzdHIgPSBhcmdwYXJzZS5IZWxwRm9ybWF0dGVyLl9mb3JtYXRfYWN0
aW9uX2ludm9jYXRpb24oc2VsZiwgYWN0aW9uKQotICAgICAgICBpZiBvcmdzdHIgYW5kIG9yZ3N0
clswXSAhPSAnLSc6ICAjIG9ubHkgb3B0aW9uYWwgYXJndW1lbnRzCi0gICAgICAgICAgICByZXR1
cm4gb3Jnc3RyCi0gICAgICAgIHJlcyA9IGdldGF0dHIoYWN0aW9uLCAnX2Zvcm1hdHRlZF9hY3Rp
b25faW52b2NhdGlvbicsIE5vbmUpCi0gICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgIHJldHVy
biByZXMKLSAgICAgICAgb3B0aW9ucyA9IG9yZ3N0ci5zcGxpdCgnLCAnKQotICAgICAgICBpZiBs
ZW4ob3B0aW9ucykgPT0gMiBhbmQgKGxlbihvcHRpb25zWzBdKSA9PSAyIG9yIGxlbihvcHRpb25z
WzFdKSA9PSAyKToKLSAgICAgICAgICAgICMgYSBzaG9ydGN1dCBmb3IgJy1oLCAtLWhlbHAnIG9y
ICctLWFiYycsICctYScKLSAgICAgICAgICAgIGFjdGlvbi5fZm9ybWF0dGVkX2FjdGlvbl9pbnZv
Y2F0aW9uID0gb3Jnc3RyCi0gICAgICAgICAgICByZXR1cm4gb3Jnc3RyCi0gICAgICAgIHJldHVy
bl9saXN0ID0gW10KLSAgICAgICAgb3B0aW9uX21hcCA9IGdldGF0dHIoYWN0aW9uLCAnbWFwX2xv
bmdfb3B0aW9uJywge30pCi0gICAgICAgIGlmIG9wdGlvbl9tYXAgaXMgTm9uZToKLSAgICAgICAg
ICAgIG9wdGlvbl9tYXAgPSB7fQotICAgICAgICBzaG9ydF9sb25nID0ge30KLSAgICAgICAgZm9y
IG9wdGlvbiBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgbGVuKG9wdGlvbikgPT0gMiBvciBv
cHRpb25bMl0gPT0gJyAnOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBp
ZiBub3Qgb3B0aW9uLnN0YXJ0c3dpdGgoJy0tJyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgQXJn
dW1lbnRFcnJvcignbG9uZyBvcHRpb25hbCBhcmd1bWVudCB3aXRob3V0ICItLSI6IFslc10nCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChvcHRpb24pLCBzZWxmKQotICAg
ICAgICAgICAgeHhvcHRpb24gPSBvcHRpb25bMjpdCi0gICAgICAgICAgICBpZiB4eG9wdGlvbi5z
cGxpdCgpWzBdIG5vdCBpbiBvcHRpb25fbWFwOgotICAgICAgICAgICAgICAgIHNob3J0ZW5lZCA9
IHh4b3B0aW9uLnJlcGxhY2UoJy0nLCAnJykKLSAgICAgICAgICAgICAgICBpZiBzaG9ydGVuZWQg
bm90IGluIHNob3J0X2xvbmcgb3IgXAotICAgICAgICAgICAgICAgICAgIGxlbihzaG9ydF9sb25n
W3Nob3J0ZW5lZF0pIDwgbGVuKHh4b3B0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgc2hvcnRf
bG9uZ1tzaG9ydGVuZWRdID0geHhvcHRpb24KLSAgICAgICAgIyBub3cgc2hvcnRfbG9uZyBoYXMg
YmVlbiBmaWxsZWQgb3V0IHRvIHRoZSBsb25nZXN0IHdpdGggZGFzaGVzCi0gICAgICAgICMgKiph
bmQqKiB3ZSBrZWVwIHRoZSByaWdodCBvcHRpb24gb3JkZXJpbmcgZnJvbSBhZGRfYXJndW1lbnQK
LSAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25zOgotICAgICAgICAgICAgaWYgbGVuKG9wdGlv
bikgPT0gMiBvciBvcHRpb25bMl0gPT0gJyAnOgotICAgICAgICAgICAgICAgIHJldHVybl9saXN0
LmFwcGVuZChvcHRpb24pCi0gICAgICAgICAgICBpZiBvcHRpb25bMjpdID09IHNob3J0X2xvbmcu
Z2V0KG9wdGlvbi5yZXBsYWNlKCctJywgJycpKToKLSAgICAgICAgICAgICAgICByZXR1cm5fbGlz
dC5hcHBlbmQob3B0aW9uLnJlcGxhY2UoJyAnLCAnPScsIDEpKQotICAgICAgICBhY3Rpb24uX2Zv
cm1hdHRlZF9hY3Rpb25faW52b2NhdGlvbiA9ICcsICcuam9pbihyZXR1cm5fbGlzdCkKLSAgICAg
ICAgcmV0dXJuIGFjdGlvbi5fZm9ybWF0dGVkX2FjdGlvbl9pbnZvY2F0aW9uCi0KLQotZGVmIF9l
bnN1cmVfcmVtb3ZlZF9zeXNtb2R1bGUobW9kbmFtZSk6Ci0gICAgdHJ5OgotICAgICAgICBkZWwg
c3lzLm1vZHVsZXNbbW9kbmFtZV0KLSAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHBhc3MK
LQotCi1jbGFzcyBDbWRPcHRpb25zKG9iamVjdCk6Ci0gICAgIiIiIGhvbGRzIGNtZGxpbmUgb3B0
aW9ucyBhcyBhdHRyaWJ1dGVzLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlcz0o
KSk6Ci0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKHZhbHVlcykKLQotICAgIGRlZiBfX3Jl
cHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8Q21kT3B0aW9ucyAlcj4iICUgKHNlbGYuX19k
aWN0X18sKQotCi0gICAgZGVmIGNvcHkoc2VsZik6Ci0gICAgICAgIHJldHVybiBDbWRPcHRpb25z
KHNlbGYuX19kaWN0X18pCi0KLQotY2xhc3MgTm90c2V0OgotICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICI8Tk9UU0VUPiIKLQotCi1ub3RzZXQgPSBOb3RzZXQoKQotRklM
RV9PUl9ESVIgPSAnZmlsZV9vcl9kaXInCi0KLQotZGVmIF9pdGVyX3Jld3JpdGFibGVfbW9kdWxl
cyhwYWNrYWdlX2ZpbGVzKToKLSAgICBmb3IgZm4gaW4gcGFja2FnZV9maWxlczoKLSAgICAgICAg
aXNfc2ltcGxlX21vZHVsZSA9ICcvJyBub3QgaW4gZm4gYW5kIGZuLmVuZHN3aXRoKCcucHknKQot
ICAgICAgICBpc19wYWNrYWdlID0gZm4uY291bnQoJy8nKSA9PSAxIGFuZCBmbi5lbmRzd2l0aCgn
X19pbml0X18ucHknKQotICAgICAgICBpZiBpc19zaW1wbGVfbW9kdWxlOgotICAgICAgICAgICAg
bW9kdWxlX25hbWUsIF8gPSBvcy5wYXRoLnNwbGl0ZXh0KGZuKQotICAgICAgICAgICAgeWllbGQg
bW9kdWxlX25hbWUKLSAgICAgICAgZWxpZiBpc19wYWNrYWdlOgotICAgICAgICAgICAgcGFja2Fn
ZV9uYW1lID0gb3MucGF0aC5kaXJuYW1lKGZuKQotICAgICAgICAgICAgeWllbGQgcGFja2FnZV9u
YW1lCi0KLQotY2xhc3MgQ29uZmlnKG9iamVjdCk6Ci0gICAgIiIiIGFjY2VzcyB0byBjb25maWd1
cmF0aW9uIHZhbHVlcywgcGx1Z2lubWFuYWdlciBhbmQgcGx1Z2luIGhvb2tzLiAgIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcGx1Z2lubWFuYWdlcik6Ci0gICAgICAgICM6IGFjY2VzcyB0
byBjb21tYW5kIGxpbmUgb3B0aW9uIGFzIGF0dHJpYnV0ZXMuCi0gICAgICAgICM6IChkZXByZWNh
dGVkKSwgdXNlIDpweTpmdW5jOmBnZXRvcHRpb24oKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdl
dG9wdGlvbj5gIGluc3RlYWQKLSAgICAgICAgc2VsZi5vcHRpb24gPSBDbWRPcHRpb25zKCkKLSAg
ICAgICAgX2EgPSBGSUxFX09SX0RJUgotICAgICAgICBzZWxmLl9wYXJzZXIgPSBQYXJzZXIoCi0g
ICAgICAgICAgICB1c2FnZT0iJSUocHJvZylzIFtvcHRpb25zXSBbJXNdIFslc10gWy4uLl0iICUg
KF9hLCBfYSksCi0gICAgICAgICAgICBwcm9jZXNzb3B0PXNlbGYuX3Byb2Nlc3NvcHQsCi0gICAg
ICAgICkKLSAgICAgICAgIzogYSBwbHVnaW5tYW5hZ2VyIGluc3RhbmNlCi0gICAgICAgIHNlbGYu
cGx1Z2lubWFuYWdlciA9IHBsdWdpbm1hbmFnZXIKLSAgICAgICAgc2VsZi50cmFjZSA9IHNlbGYu
cGx1Z2lubWFuYWdlci50cmFjZS5yb290LmdldCgiY29uZmlnIikKLSAgICAgICAgc2VsZi5ob29r
ID0gc2VsZi5wbHVnaW5tYW5hZ2VyLmhvb2sKLSAgICAgICAgc2VsZi5faW5pY2FjaGUgPSB7fQot
ICAgICAgICBzZWxmLl9vdmVycmlkZV9pbmkgPSAoKQotICAgICAgICBzZWxmLl9vcHQyZGVzdCA9
IHt9Ci0gICAgICAgIHNlbGYuX2NsZWFudXAgPSBbXQotICAgICAgICBzZWxmLl93YXJuID0gc2Vs
Zi5wbHVnaW5tYW5hZ2VyLl93YXJuCi0gICAgICAgIHNlbGYucGx1Z2lubWFuYWdlci5yZWdpc3Rl
cihzZWxmLCAicHl0ZXN0Y29uZmlnIikKLSAgICAgICAgc2VsZi5fY29uZmlndXJlZCA9IEZhbHNl
Ci0KLSAgICAgICAgZGVmIGRvX3NldG5zKGRpYyk6Ci0gICAgICAgICAgICBpbXBvcnQgcHl0ZXN0
Ci0gICAgICAgICAgICBzZXRucyhweXRlc3QsIGRpYykKLQotICAgICAgICBzZWxmLmhvb2sucHl0
ZXN0X25hbWVzcGFjZS5jYWxsX2hpc3RvcmljKGRvX3NldG5zLCB7fSkKLSAgICAgICAgc2VsZi5o
b29rLnB5dGVzdF9hZGRvcHRpb24uY2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdChwYXJzZXI9c2Vs
Zi5fcGFyc2VyKSkKLQotICAgIGRlZiBhZGRfY2xlYW51cChzZWxmLCBmdW5jKToKLSAgICAgICAg
IiIiIEFkZCBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIHRoZSBjb25maWcgb2JqZWN0IGdl
dHMgb3V0IG9mCi0gICAgICAgIHVzZSAodXN1YWxseSBjb25pbmNpZGluZyB3aXRoIHB5dGVzdF91
bmNvbmZpZ3VyZSkuIiIiCi0gICAgICAgIHNlbGYuX2NsZWFudXAuYXBwZW5kKGZ1bmMpCi0KLSAg
ICBkZWYgX2RvX2NvbmZpZ3VyZShzZWxmKToKLSAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLl9jb25m
aWd1cmVkCi0gICAgICAgIHNlbGYuX2NvbmZpZ3VyZWQgPSBUcnVlCi0gICAgICAgIHNlbGYuaG9v
ay5weXRlc3RfY29uZmlndXJlLmNhbGxfaGlzdG9yaWMoa3dhcmdzPWRpY3QoY29uZmlnPXNlbGYp
KQotCi0gICAgZGVmIF9lbnN1cmVfdW5jb25maWd1cmUoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYu
X2NvbmZpZ3VyZWQ6Ci0gICAgICAgICAgICBzZWxmLl9jb25maWd1cmVkID0gRmFsc2UKLSAgICAg
ICAgICAgIHNlbGYuaG9vay5weXRlc3RfdW5jb25maWd1cmUoY29uZmlnPXNlbGYpCi0gICAgICAg
ICAgICBzZWxmLmhvb2sucHl0ZXN0X2NvbmZpZ3VyZS5fY2FsbF9oaXN0b3J5ID0gW10KLSAgICAg
ICAgd2hpbGUgc2VsZi5fY2xlYW51cDoKLSAgICAgICAgICAgIGZpbiA9IHNlbGYuX2NsZWFudXAu
cG9wKCkKLSAgICAgICAgICAgIGZpbigpCi0KLSAgICBkZWYgd2FybihzZWxmLCBjb2RlLCBtZXNz
YWdlLCBmc2xvY2F0aW9uPU5vbmUsIG5vZGVpZD1Ob25lKToKLSAgICAgICAgIiIiIGdlbmVyYXRl
IGEgd2FybmluZyBmb3IgdGhpcyB0ZXN0IHNlc3Npb24uICIiIgotICAgICAgICBzZWxmLmhvb2su
cHl0ZXN0X2xvZ3dhcm5pbmcuY2FsbF9oaXN0b3JpYyhrd2FyZ3M9ZGljdCgKLSAgICAgICAgICAg
IGNvZGU9Y29kZSwgbWVzc2FnZT1tZXNzYWdlLAotICAgICAgICAgICAgZnNsb2NhdGlvbj1mc2xv
Y2F0aW9uLCBub2RlaWQ9bm9kZWlkKSkKLQotICAgIGRlZiBnZXRfdGVybWluYWxfd3JpdGVyKHNl
bGYpOgotICAgICAgICByZXR1cm4gc2VsZi5wbHVnaW5tYW5hZ2VyLmdldF9wbHVnaW4oInRlcm1p
bmFscmVwb3J0ZXIiKS5fdHcKLQotICAgIGRlZiBweXRlc3RfY21kbGluZV9wYXJzZShzZWxmLCBw
bHVnaW5tYW5hZ2VyLCBhcmdzKToKLSAgICAgICAgIyBSRUYxIGFzc2VydCBzZWxmID09IHBsdWdp
bm1hbmFnZXIuY29uZmlnLCAoc2VsZiwgcGx1Z2lubWFuYWdlci5jb25maWcpCi0gICAgICAgIHNl
bGYucGFyc2UoYXJncykKLSAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgIGRlZiBub3RpZnlfZXhj
ZXB0aW9uKHNlbGYsIGV4Y2luZm8sIG9wdGlvbj1Ob25lKToKLSAgICAgICAgaWYgb3B0aW9uIGFu
ZCBvcHRpb24uZnVsbHRyYWNlOgotICAgICAgICAgICAgc3R5bGUgPSAibG9uZyIKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgIHN0eWxlID0gIm5hdGl2ZSIKLSAgICAgICAgZXhjcmVwciA9IGV4
Y2luZm8uZ2V0cmVwcihmdW5jYXJncz1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNob3dsb2NhbHM9Z2V0YXR0cihvcHRpb24sICdzaG93bG9jYWxzJywgRmFsc2UpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPXN0eWxlLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgcmVzID0gc2VsZi5ob29rLnB5dGVz
dF9pbnRlcm5hbGVycm9yKGV4Y3JlcHI9ZXhjcmVwciwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGV4Y2luZm89ZXhjaW5mbykKLSAgICAgICAgaWYgbm90IGFu
eShyZXMpOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc3RyKGV4Y3JlcHIpLnNwbGl0KCJcbiIp
OgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIklOVEVSTkFMRVJST1I+ICVzXG4i
ICUgbGluZSkKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLQotICAgIGRlZiBj
d2RfcmVsYXRpdmVfbm9kZWlkKHNlbGYsIG5vZGVpZCk6Ci0gICAgICAgICMgbm9kZWlkJ3MgYXJl
IHJlbGF0aXZlIHRvIHRoZSByb290cGF0aCwgY29tcHV0ZSByZWxhdGl2ZSB0byBjd2QKLSAgICAg
ICAgaWYgc2VsZi5pbnZvY2F0aW9uX2RpciAhPSBzZWxmLnJvb3RkaXI6Ci0gICAgICAgICAgICBm
dWxscGF0aCA9IHNlbGYucm9vdGRpci5qb2luKG5vZGVpZCkKLSAgICAgICAgICAgIG5vZGVpZCA9
IHNlbGYuaW52b2NhdGlvbl9kaXIuYmVzdHJlbHBhdGgoZnVsbHBhdGgpCi0gICAgICAgIHJldHVy
biBub2RlaWQKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tZGljdGFyZ3MoY2xzLCBv
cHRpb25fZGljdCwgYXJncyk6Ci0gICAgICAgICIiIiBjb25zdHJ1Y3RvciB1c2VhYmxlIGZvciBz
dWJwcm9jZXNzZXMuICIiIgotICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKCkKLSAgICAgICAg
Y29uZmlnLm9wdGlvbi5fX2RpY3RfXy51cGRhdGUob3B0aW9uX2RpY3QpCi0gICAgICAgIGNvbmZp
Zy5wYXJzZShhcmdzLCBhZGRvcHRzPUZhbHNlKQotICAgICAgICBmb3IgeCBpbiBjb25maWcub3B0
aW9uLnBsdWdpbnM6Ci0gICAgICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5jb25zaWRlcl9w
bHVnaW5hcmcoeCkKLSAgICAgICAgcmV0dXJuIGNvbmZpZwotCi0gICAgZGVmIF9wcm9jZXNzb3B0
KHNlbGYsIG9wdCk6Ci0gICAgICAgIGZvciBuYW1lIGluIG9wdC5fc2hvcnRfb3B0cyArIG9wdC5f
bG9uZ19vcHRzOgotICAgICAgICAgICAgc2VsZi5fb3B0MmRlc3RbbmFtZV0gPSBvcHQuZGVzdAot
Ci0gICAgICAgIGlmIGhhc2F0dHIob3B0LCAnZGVmYXVsdCcpIGFuZCBvcHQuZGVzdDoKLSAgICAg
ICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYub3B0aW9uLCBvcHQuZGVzdCk6Ci0gICAgICAgICAg
ICAgICAgc2V0YXR0cihzZWxmLm9wdGlvbiwgb3B0LmRlc3QsIG9wdC5kZWZhdWx0KQotCi0gICAg
QGhvb2tpbXBsKHRyeWxhc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X2xvYWRfaW5pdGlhbF9jb25m
dGVzdHMoc2VsZiwgZWFybHlfY29uZmlnKToKLSAgICAgICAgc2VsZi5wbHVnaW5tYW5hZ2VyLl9z
ZXRfaW5pdGlhbF9jb25mdGVzdHMoZWFybHlfY29uZmlnLmtub3duX2FyZ3NfbmFtZXNwYWNlKQot
Ci0gICAgZGVmIF9pbml0aW5pKHNlbGYsIGFyZ3MpOgotICAgICAgICBucywgdW5rbm93bl9hcmdz
ID0gc2VsZi5fcGFyc2VyLnBhcnNlX2tub3duX2FuZF91bmtub3duX2FyZ3MoYXJncywgbmFtZXNw
YWNlPXNlbGYub3B0aW9uLmNvcHkoKSkKLSAgICAgICAgciA9IGRldGVybWluZV9zZXR1cChucy5p
bmlmaWxlbmFtZSwgbnMuZmlsZV9vcl9kaXIgKyB1bmtub3duX2FyZ3MsIHdhcm5mdW5jPXNlbGYu
d2FybikKLSAgICAgICAgc2VsZi5yb290ZGlyLCBzZWxmLmluaWZpbGUsIHNlbGYuaW5pY2ZnID0g
cgotICAgICAgICBzZWxmLl9wYXJzZXIuZXh0cmFfaW5mb1sncm9vdGRpciddID0gc2VsZi5yb290
ZGlyCi0gICAgICAgIHNlbGYuX3BhcnNlci5leHRyYV9pbmZvWydpbmlmaWxlJ10gPSBzZWxmLmlu
aWZpbGUKLSAgICAgICAgc2VsZi5pbnZvY2F0aW9uX2RpciA9IHB5LnBhdGgubG9jYWwoKQotICAg
ICAgICBzZWxmLl9wYXJzZXIuYWRkaW5pKCdhZGRvcHRzJywgJ2V4dHJhIGNvbW1hbmQgbGluZSBv
cHRpb25zJywgJ2FyZ3MnKQotICAgICAgICBzZWxmLl9wYXJzZXIuYWRkaW5pKCdtaW52ZXJzaW9u
JywgJ21pbmltYWxseSByZXF1aXJlZCBweXRlc3QgdmVyc2lvbicpCi0gICAgICAgIHNlbGYuX292
ZXJyaWRlX2luaSA9IG5zLm92ZXJyaWRlX2luaSBvciAoKQotCi0gICAgZGVmIF9jb25zaWRlcl9p
bXBvcnRob29rKHNlbGYsIGFyZ3MpOgotICAgICAgICAiIiJJbnN0YWxsIHRoZSBQRVAgMzAyIGlt
cG9ydCBob29rIGlmIHVzaW5nIGFzc2VydGlvbiByZXdyaXRpbmcuCi0KLSAgICAgICAgTmVlZHMg
dG8gcGFyc2UgdGhlIC0tYXNzZXJ0PTxtb2RlPiBvcHRpb24gZnJvbSB0aGUgY29tbWFuZGxpbmUK
LSAgICAgICAgYW5kIGZpbmQgYWxsIHRoZSBpbnN0YWxsZWQgcGx1Z2lucyB0byBtYXJrIHRoZW0g
Zm9yIHJld3JpdGluZwotICAgICAgICBieSB0aGUgaW1wb3J0aG9vay4KLSAgICAgICAgIiIiCi0g
ICAgICAgIG5zLCB1bmtub3duX2FyZ3MgPSBzZWxmLl9wYXJzZXIucGFyc2Vfa25vd25fYW5kX3Vu
a25vd25fYXJncyhhcmdzKQotICAgICAgICBtb2RlID0gbnMuYXNzZXJ0bW9kZQotICAgICAgICBp
ZiBtb2RlID09ICdyZXdyaXRlJzoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBo
b29rID0gX3B5dGVzdC5hc3NlcnRpb24uaW5zdGFsbF9pbXBvcnRob29rKHNlbGYpCi0gICAgICAg
ICAgICBleGNlcHQgU3lzdGVtRXJyb3I6Ci0gICAgICAgICAgICAgICAgbW9kZSA9ICdwbGFpbicK
LSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbWFya19wbHVnaW5zX2Zv
cl9yZXdyaXRlKGhvb2spCi0gICAgICAgIHNlbGYuX3dhcm5fYWJvdXRfbWlzc2luZ19hc3NlcnRp
b24obW9kZSkKLQotICAgIGRlZiBfbWFya19wbHVnaW5zX2Zvcl9yZXdyaXRlKHNlbGYsIGhvb2sp
OgotICAgICAgICAiIiIKLSAgICAgICAgR2l2ZW4gYW4gaW1wb3J0aG9vaywgbWFyayBmb3IgcmV3
cml0ZSBhbnkgdG9wLWxldmVsCi0gICAgICAgIG1vZHVsZXMgb3IgcGFja2FnZXMgaW4gdGhlIGRp
c3RyaWJ1dGlvbiBwYWNrYWdlIGZvcgotICAgICAgICBhbGwgcHl0ZXN0IHBsdWdpbnMuCi0gICAg
ICAgICIiIgotICAgICAgICBpbXBvcnQgcGtnX3Jlc291cmNlcwotICAgICAgICBzZWxmLnBsdWdp
bm1hbmFnZXIucmV3cml0ZV9ob29rID0gaG9vawotCi0gICAgICAgICMgJ1JFQ09SRCcgYXZhaWxh
YmxlIGZvciBwbHVnaW5zIGluc3RhbGxlZCBub3JtYWxseSAocGlwIGluc3RhbGwpCi0gICAgICAg
ICMgJ1NPVVJDRVMudHh0JyBhdmFpbGFibGUgZm9yIHBsdWdpbnMgaW5zdGFsbGVkIGluIGRldiBt
b2RlIChwaXAgaW5zdGFsbCAtZSkKLSAgICAgICAgIyBmb3IgaW5zdGFsbGVkIHBsdWdpbnMgJ1NP
VVJDRVMudHh0JyByZXR1cm5zIGFuIGVtcHR5IGxpc3QsIGFuZCB2aWNlLXZlcnNhCi0gICAgICAg
ICMgc28gaXQgc2hvdWxkbid0IGJlIGFuIGlzc3VlCi0gICAgICAgIG1ldGFkYXRhX2ZpbGVzID0g
J1JFQ09SRCcsICdTT1VSQ0VTLnR4dCcKLQotICAgICAgICBwYWNrYWdlX2ZpbGVzID0gKAotICAg
ICAgICAgICAgZW50cnkuc3BsaXQoJywnKVswXQotICAgICAgICAgICAgZm9yIGVudHJ5cG9pbnQg
aW4gcGtnX3Jlc291cmNlcy5pdGVyX2VudHJ5X3BvaW50cygncHl0ZXN0MTEnKQotICAgICAgICAg
ICAgZm9yIG1ldGFkYXRhIGluIG1ldGFkYXRhX2ZpbGVzCi0gICAgICAgICAgICBmb3IgZW50cnkg
aW4gZW50cnlwb2ludC5kaXN0Ll9nZXRfbWV0YWRhdGEobWV0YWRhdGEpCi0gICAgICAgICkKLQot
ICAgICAgICBmb3IgbmFtZSBpbiBfaXRlcl9yZXdyaXRhYmxlX21vZHVsZXMocGFja2FnZV9maWxl
cyk6Ci0gICAgICAgICAgICBob29rLm1hcmtfcmV3cml0ZShuYW1lKQotCi0gICAgZGVmIF93YXJu
X2Fib3V0X21pc3NpbmdfYXNzZXJ0aW9uKHNlbGYsIG1vZGUpOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBhc3NlcnQgRmFsc2UKLSAgICAgICAgZXhjZXB0IEFzc2VydGlvbkVycm9yOgotICAg
ICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbW9kZSA9PSAncGxh
aW4nOgotICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIldBUk5JTkc6IEFTU0VSVElP
TlMgQVJFIE5PVCBFWEVDVVRFRCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
YW5kIEZBSUxJTkcgVEVTVFMgV0lMTCBQQVNTLiAgQXJlIHlvdSIKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICIgdXNpbmcgcHl0aG9uIC1PPyIpCi0gICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIldBUk5JTkc6IGFzc2VydGlvbnMgbm90
IGluIHRlc3QgbW9kdWxlcyBvciIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIg
cGx1Z2lucyB3aWxsIGJlIGlnbm9yZWQiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiIGJlY2F1c2UgYXNzZXJ0IHN0YXRlbWVudHMgYXJlIG5vdCBleGVjdXRlZCAiCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYnkgdGhlIHVuZGVybHlpbmcgUHl0aG9uIGludGVy
cHJldGVyICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoYXJlIHlvdSB1c2lu
ZyBweXRob24gLU8/KVxuIikKLQotICAgIGRlZiBfcHJlcGFyc2Uoc2VsZiwgYXJncywgYWRkb3B0
cz1UcnVlKToKLSAgICAgICAgaWYgYWRkb3B0czoKLSAgICAgICAgICAgIGFyZ3NbOl0gPSBzaGxl
eC5zcGxpdChvcy5lbnZpcm9uLmdldCgnUFlURVNUX0FERE9QVFMnLCAnJykpICsgYXJncwotICAg
ICAgICBzZWxmLl9pbml0aW5pKGFyZ3MpCi0gICAgICAgIGlmIGFkZG9wdHM6Ci0gICAgICAgICAg
ICBhcmdzWzpdID0gc2VsZi5nZXRpbmkoImFkZG9wdHMiKSArIGFyZ3MKLSAgICAgICAgc2VsZi5f
Y2hlY2t2ZXJzaW9uKCkKLSAgICAgICAgc2VsZi5fY29uc2lkZXJfaW1wb3J0aG9vayhhcmdzKQot
ICAgICAgICBzZWxmLnBsdWdpbm1hbmFnZXIuY29uc2lkZXJfcHJlcGFyc2UoYXJncykKLSAgICAg
ICAgc2VsZi5wbHVnaW5tYW5hZ2VyLmxvYWRfc2V0dXB0b29sc19lbnRyeXBvaW50cygncHl0ZXN0
MTEnKQotICAgICAgICBzZWxmLnBsdWdpbm1hbmFnZXIuY29uc2lkZXJfZW52KCkKLSAgICAgICAg
c2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZSA9IG5zID0gc2VsZi5fcGFyc2VyLnBhcnNlX2tub3du
X2FyZ3MoYXJncywgbmFtZXNwYWNlPXNlbGYub3B0aW9uLmNvcHkoKSkKLSAgICAgICAgaWYgc2Vs
Zi5rbm93bl9hcmdzX25hbWVzcGFjZS5jb25mY3V0ZGlyIGlzIE5vbmUgYW5kIHNlbGYuaW5pZmls
ZToKLSAgICAgICAgICAgIGNvbmZjdXRkaXIgPSBweS5wYXRoLmxvY2FsKHNlbGYuaW5pZmlsZSku
ZGlybmFtZQotICAgICAgICAgICAgc2VsZi5rbm93bl9hcmdzX25hbWVzcGFjZS5jb25mY3V0ZGly
ID0gY29uZmN1dGRpcgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmhvb2sucHl0ZXN0
X2xvYWRfaW5pdGlhbF9jb25mdGVzdHMoZWFybHlfY29uZmlnPXNlbGYsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncz1hcmdzLCBwYXJzZXI9
c2VsZi5fcGFyc2VyKQotICAgICAgICBleGNlcHQgQ29uZnRlc3RJbXBvcnRGYWlsdXJlOgotICAg
ICAgICAgICAgZSA9IHN5cy5leGNfaW5mbygpWzFdCi0gICAgICAgICAgICBpZiBucy5oZWxwIG9y
IG5zLnZlcnNpb246Ci0gICAgICAgICAgICAgICAgIyB3ZSBkb24ndCB3YW50IHRvIHByZXZlbnQg
LS1oZWxwLy0tdmVyc2lvbiB0byB3b3JrCi0gICAgICAgICAgICAgICAgIyBzbyBqdXN0IGxldCBp
cyBwYXNzIGFuZCBwcmludCBhIHdhcm5pbmcgYXQgdGhlIGVuZAotICAgICAgICAgICAgICAgIHNl
bGYuX3dhcm4oImNvdWxkIG5vdCBsb2FkIGluaXRpYWwgY29uZnRlc3RzICglcylcbiIgJSBlLnBh
dGgpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJhaXNlCi0KLSAgICBkZWYg
X2NoZWNrdmVyc2lvbihzZWxmKToKLSAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICBtaW52
ZXIgPSBzZWxmLmluaWNmZy5nZXQoJ21pbnZlcnNpb24nLCBOb25lKQotICAgICAgICBpZiBtaW52
ZXI6Ci0gICAgICAgICAgICB2ZXIgPSBtaW52ZXIuc3BsaXQoIi4iKQotICAgICAgICAgICAgbXl2
ZXIgPSBweXRlc3QuX192ZXJzaW9uX18uc3BsaXQoIi4iKQotICAgICAgICAgICAgaWYgbXl2ZXIg
PCB2ZXI6Ci0gICAgICAgICAgICAgICAgcmFpc2UgcHl0ZXN0LlVzYWdlRXJyb3IoCi0gICAgICAg
ICAgICAgICAgICAgICIlczolZDogcmVxdWlyZXMgcHl0ZXN0LSVzLCBhY3R1YWwgcHl0ZXN0LSVz
JyIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmluaWNmZy5jb25maWcucGF0aCwg
c2VsZi5pbmljZmcubGluZW9mKCdtaW52ZXJzaW9uJyksCi0gICAgICAgICAgICAgICAgICAgICAg
ICBtaW52ZXIsIHB5dGVzdC5fX3ZlcnNpb25fXykpCi0KLSAgICBkZWYgcGFyc2Uoc2VsZiwgYXJn
cywgYWRkb3B0cz1UcnVlKToKLSAgICAgICAgIyBwYXJzZSBnaXZlbiBjbWRsaW5lIGFyZ3VtZW50
cyBpbnRvIHRoaXMgY29uZmlnIG9iamVjdC4KLSAgICAgICAgYXNzZXJ0IG5vdCBoYXNhdHRyKHNl
bGYsICdhcmdzJyksICgKLSAgICAgICAgICAgICJjYW4gb25seSBwYXJzZSBjbWRsaW5lIGFyZ3Mg
YXQgbW9zdCBvbmNlIHBlciBDb25maWcgb2JqZWN0IikKLSAgICAgICAgc2VsZi5fb3JpZ2FyZ3Mg
PSBhcmdzCi0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfYWRkaG9va3MuY2FsbF9oaXN0b3JpYygK
LSAgICAgICAgICAgIGt3YXJncz1kaWN0KHBsdWdpbm1hbmFnZXI9c2VsZi5wbHVnaW5tYW5hZ2Vy
KSkKLSAgICAgICAgc2VsZi5fcHJlcGFyc2UoYXJncywgYWRkb3B0cz1hZGRvcHRzKQotICAgICAg
ICAjIFhYWCBkZXByZWNhdGVkIGhvb2s6Ci0gICAgICAgIHNlbGYuaG9vay5weXRlc3RfY21kbGlu
ZV9wcmVwYXJzZShjb25maWc9c2VsZiwgYXJncz1hcmdzKQotICAgICAgICBzZWxmLl9wYXJzZXIu
YWZ0ZXJfcHJlcGFyc2UgPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGFyZ3MgPSBz
ZWxmLl9wYXJzZXIucGFyc2Vfc2V0b3B0aW9uKGFyZ3MsIHNlbGYub3B0aW9uLCBuYW1lc3BhY2U9
c2VsZi5vcHRpb24pCi0gICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICBj
d2QgPSBvcy5nZXRjd2QoKQotICAgICAgICAgICAgICAgIGlmIGN3ZCA9PSBzZWxmLnJvb3RkaXI6
Ci0gICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBzZWxmLmdldGluaSgndGVzdHBhdGhzJykKLSAg
ICAgICAgICAgICAgICBpZiBub3QgYXJnczoKLSAgICAgICAgICAgICAgICAgICAgYXJncyA9IFtj
d2RdCi0gICAgICAgICAgICBzZWxmLmFyZ3MgPSBhcmdzCi0gICAgICAgIGV4Y2VwdCBQcmludEhl
bHA6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgYWRkaW5pdmFsdWVfbGluZShzZWxmLCBu
YW1lLCBsaW5lKToKLSAgICAgICAgIiIiIGFkZCBhIGxpbmUgdG8gYW4gaW5pLWZpbGUgb3B0aW9u
LiBUaGUgb3B0aW9uIG11c3QgaGF2ZSBiZWVuCi0gICAgICAgIGRlY2xhcmVkIGJ1dCBtaWdodCBu
b3QgeWV0IGJlIHNldCBpbiB3aGljaCBjYXNlIHRoZSBsaW5lIGJlY29tZXMgdGhlCi0gICAgICAg
IHRoZSBmaXJzdCBsaW5lIGluIGl0cyB2YWx1ZS4gIiIiCi0gICAgICAgIHggPSBzZWxmLmdldGlu
aShuYW1lKQotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh4LCBsaXN0KQotICAgICAgICB4LmFw
cGVuZChsaW5lKSAgIyBtb2RpZmllcyB0aGUgY2FjaGVkIGxpc3QgaW5saW5lCi0KLSAgICBkZWYg
Z2V0aW5pKHNlbGYsIG5hbWUpOgotICAgICAgICAiIiIgcmV0dXJuIGNvbmZpZ3VyYXRpb24gdmFs
dWUgZnJvbSBhbiA6cmVmOmBpbmkgZmlsZSA8aW5pZmlsZXM+YC4gSWYgdGhlCi0gICAgICAgIHNw
ZWNpZmllZCBuYW1lIGhhc24ndCBiZWVuIHJlZ2lzdGVyZWQgdGhyb3VnaCBhIHByaW9yCi0gICAg
ICAgIDpweTpmdW5jOmBwYXJzZXIuYWRkaW5pIDxfcHl0ZXN0LmNvbmZpZy5QYXJzZXIuYWRkaW5p
PmAKLSAgICAgICAgY2FsbCAodXN1YWxseSBmcm9tIGEgcGx1Z2luKSwgYSBWYWx1ZUVycm9yIGlz
IHJhaXNlZC4gIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9pbmlj
YWNoZVtuYW1lXQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBzZWxmLl9p
bmljYWNoZVtuYW1lXSA9IHZhbCA9IHNlbGYuX2dldGluaShuYW1lKQotICAgICAgICAgICAgcmV0
dXJuIHZhbAotCi0gICAgZGVmIF9nZXRpbmkoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIGRlc2NyaXB0aW9uLCB0eXBlLCBkZWZhdWx0ID0gc2VsZi5fcGFyc2VyLl9pbmlk
aWN0W25hbWVdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoInVua25vd24gY29uZmlndXJhdGlvbiB2YWx1ZTogJXIiICUgKG5hbWUsKSkKLSAg
ICAgICAgdmFsdWUgPSBzZWxmLl9nZXRfb3ZlcnJpZGVfaW5pX3ZhbHVlKG5hbWUpCi0gICAgICAg
IGlmIHZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdmFs
dWUgPSBzZWxmLmluaWNmZ1tuYW1lXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAg
ICAgICAgICAgICAgIGlmIGRlZmF1bHQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgICAg
IHJldHVybiBkZWZhdWx0Ci0gICAgICAgICAgICAgICAgaWYgdHlwZSBpcyBOb25lOgotICAgICAg
ICAgICAgICAgICAgICByZXR1cm4gJycKLSAgICAgICAgICAgICAgICByZXR1cm4gW10KLSAgICAg
ICAgaWYgdHlwZSA9PSAicGF0aGxpc3QiOgotICAgICAgICAgICAgZHAgPSBweS5wYXRoLmxvY2Fs
KHNlbGYuaW5pY2ZnLmNvbmZpZy5wYXRoKS5kaXJwYXRoKCkKLSAgICAgICAgICAgIHZhbHVlcyA9
IFtdCi0gICAgICAgICAgICBmb3IgcmVscGF0aCBpbiBzaGxleC5zcGxpdCh2YWx1ZSk6Ci0gICAg
ICAgICAgICAgICAgdmFsdWVzLmFwcGVuZChkcC5qb2luKHJlbHBhdGgsIGFicz1UcnVlKSkKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZXMKLSAgICAgICAgZWxpZiB0eXBlID09ICJhcmdzIjoKLSAg
ICAgICAgICAgIHJldHVybiBzaGxleC5zcGxpdCh2YWx1ZSkKLSAgICAgICAgZWxpZiB0eXBlID09
ICJsaW5lbGlzdCI6Ci0gICAgICAgICAgICByZXR1cm4gW3QgZm9yIHQgaW4gbWFwKGxhbWJkYSB4
OiB4LnN0cmlwKCksIHZhbHVlLnNwbGl0KCJcbiIpKSBpZiB0XQotICAgICAgICBlbGlmIHR5cGUg
PT0gImJvb2wiOgotICAgICAgICAgICAgcmV0dXJuIGJvb2woX3N0cnRvYm9vbCh2YWx1ZS5zdHJp
cCgpKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCB0eXBlIGlzIE5vbmUKLSAg
ICAgICAgICAgIHJldHVybiB2YWx1ZQotCi0gICAgZGVmIF9nZXRjb25mdGVzdF9wYXRobGlzdChz
ZWxmLCBuYW1lLCBwYXRoKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kLCByZWxyb290
cyA9IHNlbGYucGx1Z2lubWFuYWdlci5fcmdldF93aXRoX2NvbmZtb2QobmFtZSwgcGF0aCkKLSAg
ICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAg
bW9kcGF0aCA9IHB5LnBhdGgubG9jYWwobW9kLl9fZmlsZV9fKS5kaXJwYXRoKCkKLSAgICAgICAg
dmFsdWVzID0gW10KLSAgICAgICAgZm9yIHJlbHJvb3QgaW4gcmVscm9vdHM6Ci0gICAgICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShyZWxyb290LCBweS5wYXRoLmxvY2FsKToKLSAgICAgICAgICAg
ICAgICByZWxyb290ID0gcmVscm9vdC5yZXBsYWNlKCIvIiwgcHkucGF0aC5sb2NhbC5zZXApCi0g
ICAgICAgICAgICAgICAgcmVscm9vdCA9IG1vZHBhdGguam9pbihyZWxyb290LCBhYnM9VHJ1ZSkK
LSAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQocmVscm9vdCkKLSAgICAgICAgcmV0dXJuIHZhbHVl
cwotCi0gICAgZGVmIF9nZXRfb3ZlcnJpZGVfaW5pX3ZhbHVlKHNlbGYsIG5hbWUpOgotICAgICAg
ICB2YWx1ZSA9IE5vbmUKLSAgICAgICAgIyBvdmVycmlkZV9pbmkgaXMgYSBsaXN0IG9mIGxpc3Qs
IHRvIHN1cHBvcnQgYm90aCAtbyBmb28xPWJhcjEgZm9vMj1iYXIyIGFuZAotICAgICAgICAjIGFu
ZCAtbyBmb28xPWJhcjEgLW8gZm9vMj1iYXIyIG9wdGlvbnMKLSAgICAgICAgIyBhbHdheXMgdXNl
IHRoZSBsYXN0IGl0ZW0gaWYgbXVsdGlwbGUgdmFsdWUgc2V0IGZvciBzYW1lIGluaS1uYW1lLAot
ICAgICAgICAjIGUuZy4gLW8gZm9vPWJhcjEgLW8gZm9vPWJhcjIgd2lsbCBzZXQgZm9vIHRvIGJh
cjIKLSAgICAgICAgZm9yIGluaV9jb25maWdfbGlzdCBpbiBzZWxmLl9vdmVycmlkZV9pbmk6Ci0g
ICAgICAgICAgICBmb3IgaW5pX2NvbmZpZyBpbiBpbmlfY29uZmlnX2xpc3Q6Ci0gICAgICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAoa2V5LCB1c2VyX2luaV92YWx1ZSkgPSBp
bmlfY29uZmlnLnNwbGl0KCI9IiwgMSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJv
cjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJvcigiLW8vLS1vdmVycmlkZS1p
bmkgZXhwZWN0cyBvcHRpb249dmFsdWUgc3R5bGUuIikKLSAgICAgICAgICAgICAgICBpZiBrZXkg
PT0gbmFtZToKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSB1c2VyX2luaV92YWx1ZQotICAg
ICAgICByZXR1cm4gdmFsdWUKLQotICAgIGRlZiBnZXRvcHRpb24oc2VsZiwgbmFtZSwgZGVmYXVs
dD1ub3RzZXQsIHNraXA9RmFsc2UpOgotICAgICAgICAiIiIgcmV0dXJuIGNvbW1hbmQgbGluZSBv
cHRpb24gdmFsdWUuCi0KLSAgICAgICAgOmFyZyBuYW1lOiBuYW1lIG9mIHRoZSBvcHRpb24uICBZ
b3UgbWF5IGFsc28gc3BlY2lmeQotICAgICAgICAgICAgdGhlIGxpdGVyYWwgYGAtLU9QVGBgIG9w
dGlvbiBpbnN0ZWFkIG9mIHRoZSAiZGVzdCIgb3B0aW9uIG5hbWUuCi0gICAgICAgIDphcmcgZGVm
YXVsdDogZGVmYXVsdCB2YWx1ZSBpZiBubyBvcHRpb24gb2YgdGhhdCBuYW1lIGV4aXN0cy4KLSAg
ICAgICAgOmFyZyBza2lwOiBpZiBUcnVlIHJhaXNlIHB5dGVzdC5za2lwIGlmIG9wdGlvbiBkb2Vz
IG5vdCBleGlzdHMKLSAgICAgICAgICAgIG9yIGhhcyBhIE5vbmUgdmFsdWUuCi0gICAgICAgICIi
IgotICAgICAgICBuYW1lID0gc2VsZi5fb3B0MmRlc3QuZ2V0KG5hbWUsIG5hbWUpCi0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHZhbCA9IGdldGF0dHIoc2VsZi5vcHRpb24sIG5hbWUpCi0gICAg
ICAgICAgICBpZiB2YWwgaXMgTm9uZSBhbmQgc2tpcDoKLSAgICAgICAgICAgICAgICByYWlzZSBB
dHRyaWJ1dGVFcnJvcihuYW1lKQotICAgICAgICAgICAgcmV0dXJuIHZhbAotICAgICAgICBleGNl
cHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICBpZiBkZWZhdWx0IGlzIG5vdCBub3RzZXQ6
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKLSAgICAgICAgICAgIGlmIHNraXA6Ci0g
ICAgICAgICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgICAgICAgIHB5dGVzdC5za2lw
KCJubyAlciBvcHRpb24gZm91bmQiICUgKG5hbWUsKSkKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoIm5vIG9wdGlvbiBuYW1lZCAlciIgJSAobmFtZSwpKQotCi0gICAgZGVmIGdldHZhbHVl
KHNlbGYsIG5hbWUsIHBhdGg9Tm9uZSk6Ci0gICAgICAgICIiIiAoZGVwcmVjYXRlZCwgdXNlIGdl
dG9wdGlvbigpKSAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0b3B0aW9uKG5hbWUpCi0KLSAg
ICBkZWYgZ2V0dmFsdWVvcnNraXAoc2VsZiwgbmFtZSwgcGF0aD1Ob25lKToKLSAgICAgICAgIiIi
IChkZXByZWNhdGVkLCB1c2UgZ2V0b3B0aW9uKHNraXA9VHJ1ZSkpICIiIgotICAgICAgICByZXR1
cm4gc2VsZi5nZXRvcHRpb24obmFtZSwgc2tpcD1UcnVlKQotCi0KLWRlZiBleGlzdHMocGF0aCwg
aWdub3JlPUVudmlyb25tZW50RXJyb3IpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHBhdGgu
Y2hlY2soKQotICAgIGV4Y2VwdCBpZ25vcmU6Ci0gICAgICAgIHJldHVybiBGYWxzZQotCi0KLWRl
ZiBnZXRjZmcoYXJncywgd2FybmZ1bmM9Tm9uZSk6Ci0gICAgIiIiCi0gICAgU2VhcmNoIHRoZSBs
aXN0IG9mIGFyZ3VtZW50cyBmb3IgYSB2YWxpZCBpbmktZmlsZSBmb3IgcHl0ZXN0LAotICAgIGFu
ZCByZXR1cm4gYSB0dXBsZSBvZiAocm9vdGRpciwgaW5pZmlsZSwgY2ZnLWRpY3QpLgotCi0gICAg
bm90ZTogd2FybmZ1bmMgaXMgYW4gb3B0aW9uYWwgZnVuY3Rpb24gdXNlZCB0byB3YXJuCi0gICAg
ICAgIGFib3V0IGluaS1maWxlcyB0aGF0IHVzZSBkZXByZWNhdGVkIGZlYXR1cmVzLgotICAgICAg
ICBUaGlzIHBhcmFtZXRlciBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHB5dGVzdAotICAgICAgICBh
ZG9wdHMgc3RhbmRhcmQgZGVwcmVjYXRpb24gd2FybmluZ3MgKCMxODA0KS4KLSAgICAiIiIKLSAg
ICBmcm9tIF9weXRlc3QuZGVwcmVjYXRlZCBpbXBvcnQgU0VUVVBfQ0ZHX1BZVEVTVAotICAgIGlu
aWJhc2VuYW1lcyA9IFsicHl0ZXN0LmluaSIsICJ0b3guaW5pIiwgInNldHVwLmNmZyJdCi0gICAg
YXJncyA9IFt4IGZvciB4IGluIGFyZ3MgaWYgbm90IHN0cih4KS5zdGFydHN3aXRoKCItIildCi0g
ICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgIGFyZ3MgPSBbcHkucGF0aC5sb2NhbCgpXQotICAgIGZv
ciBhcmcgaW4gYXJnczoKLSAgICAgICAgYXJnID0gcHkucGF0aC5sb2NhbChhcmcpCi0gICAgICAg
IGZvciBiYXNlIGluIGFyZy5wYXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgZm9yIGlu
aWJhc2VuYW1lIGluIGluaWJhc2VuYW1lczoKLSAgICAgICAgICAgICAgICBwID0gYmFzZS5qb2lu
KGluaWJhc2VuYW1lKQotICAgICAgICAgICAgICAgIGlmIGV4aXN0cyhwKToKLSAgICAgICAgICAg
ICAgICAgICAgaW5pY29uZmlnID0gcHkuaW5pY29uZmlnLkluaUNvbmZpZyhwKQotICAgICAgICAg
ICAgICAgICAgICBpZiAncHl0ZXN0JyBpbiBpbmljb25maWcuc2VjdGlvbnM6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBpZiBpbmliYXNlbmFtZSA9PSAnc2V0dXAuY2ZnJyBhbmQgd2FybmZ1bmM6
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmZ1bmMoJ0MxJywgU0VUVVBfQ0ZHX1BZ
VEVTVCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBiYXNlLCBwLCBpbmljb25maWdb
J3B5dGVzdCddCi0gICAgICAgICAgICAgICAgICAgIGlmIGluaWJhc2VuYW1lID09ICdzZXR1cC5j
ZmcnIGFuZCAndG9vbDpweXRlc3QnIGluIGluaWNvbmZpZy5zZWN0aW9uczoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBiYXNlLCBwLCBpbmljb25maWdbJ3Rvb2w6cHl0ZXN0J10KLSAg
ICAgICAgICAgICAgICAgICAgZWxpZiBpbmliYXNlbmFtZSA9PSAicHl0ZXN0LmluaSI6Ci0gICAg
ICAgICAgICAgICAgICAgICAgICAjIGFsbG93ZWQgdG8gYmUgZW1wdHkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBiYXNlLCBwLCB7fQotICAgIHJldHVybiBOb25lLCBOb25lLCBOb25l
Ci0KLQotZGVmIGdldF9jb21tb25fYW5jZXN0b3IocGF0aHMpOgotICAgIGNvbW1vbl9hbmNlc3Rv
ciA9IE5vbmUKLSAgICBmb3IgcGF0aCBpbiBwYXRoczoKLSAgICAgICAgaWYgbm90IHBhdGguZXhp
c3RzKCk6Ci0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICBpZiBjb21tb25fYW5jZXN0b3Ig
aXMgTm9uZToKLSAgICAgICAgICAgIGNvbW1vbl9hbmNlc3RvciA9IHBhdGgKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGlmIHBhdGgucmVsdG8oY29tbW9uX2FuY2VzdG9yKSBvciBwYXRoID09
IGNvbW1vbl9hbmNlc3RvcjoKLSAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
ZWxpZiBjb21tb25fYW5jZXN0b3IucmVsdG8ocGF0aCk6Ci0gICAgICAgICAgICAgICAgY29tbW9u
X2FuY2VzdG9yID0gcGF0aAotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzaGFy
ZWQgPSBwYXRoLmNvbW1vbihjb21tb25fYW5jZXN0b3IpCi0gICAgICAgICAgICAgICAgaWYgc2hh
cmVkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBjb21tb25fYW5jZXN0b3IgPSBz
aGFyZWQKLSAgICBpZiBjb21tb25fYW5jZXN0b3IgaXMgTm9uZToKLSAgICAgICAgY29tbW9uX2Fu
Y2VzdG9yID0gcHkucGF0aC5sb2NhbCgpCi0gICAgZWxpZiBjb21tb25fYW5jZXN0b3IuaXNmaWxl
KCk6Ci0gICAgICAgIGNvbW1vbl9hbmNlc3RvciA9IGNvbW1vbl9hbmNlc3Rvci5kaXJwYXRoKCkK
LSAgICByZXR1cm4gY29tbW9uX2FuY2VzdG9yCi0KLQotZGVmIGdldF9kaXJzX2Zyb21fYXJncyhh
cmdzKToKLSAgICBkZWYgaXNfb3B0aW9uKHgpOgotICAgICAgICByZXR1cm4gc3RyKHgpLnN0YXJ0
c3dpdGgoJy0nKQotCi0gICAgZGVmIGdldF9maWxlX3BhcnRfZnJvbV9ub2RlX2lkKHgpOgotICAg
ICAgICByZXR1cm4gc3RyKHgpLnNwbGl0KCc6OicpWzBdCi0KLSAgICBkZWYgZ2V0X2Rpcl9mcm9t
X3BhdGgocGF0aCk6Ci0gICAgICAgIGlmIHBhdGguaXNkaXIoKToKLSAgICAgICAgICAgIHJldHVy
biBwYXRoCi0gICAgICAgIHJldHVybiBweS5wYXRoLmxvY2FsKHBhdGguZGlybmFtZSkKLQotICAg
ICMgVGhlc2UgbG9vayBsaWtlIHBhdGhzIGJ1dCBtYXkgbm90IGV4aXN0Ci0gICAgcG9zc2libGVf
cGF0aHMgPSAoCi0gICAgICAgIHB5LnBhdGgubG9jYWwoZ2V0X2ZpbGVfcGFydF9mcm9tX25vZGVf
aWQoYXJnKSkKLSAgICAgICAgZm9yIGFyZyBpbiBhcmdzCi0gICAgICAgIGlmIG5vdCBpc19vcHRp
b24oYXJnKQotICAgICkKLQotICAgIHJldHVybiBbCi0gICAgICAgIGdldF9kaXJfZnJvbV9wYXRo
KHBhdGgpCi0gICAgICAgIGZvciBwYXRoIGluIHBvc3NpYmxlX3BhdGhzCi0gICAgICAgIGlmIHBh
dGguZXhpc3RzKCkKLSAgICBdCi0KLQotZGVmIGRldGVybWluZV9zZXR1cChpbmlmaWxlLCBhcmdz
LCB3YXJuZnVuYz1Ob25lKToKLSAgICBkaXJzID0gZ2V0X2RpcnNfZnJvbV9hcmdzKGFyZ3MpCi0g
ICAgaWYgaW5pZmlsZToKLSAgICAgICAgaW5pY29uZmlnID0gcHkuaW5pY29uZmlnLkluaUNvbmZp
ZyhpbmlmaWxlKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpbmljZmcgPSBpbmljb25maWdb
InB5dGVzdCJdCi0gICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIGluaWNmZyA9
IE5vbmUKLSAgICAgICAgcm9vdGRpciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKLSAgICBl
bHNlOgotICAgICAgICBhbmNlc3RvciA9IGdldF9jb21tb25fYW5jZXN0b3IoZGlycykKLSAgICAg
ICAgcm9vdGRpciwgaW5pZmlsZSwgaW5pY2ZnID0gZ2V0Y2ZnKFthbmNlc3Rvcl0sIHdhcm5mdW5j
PXdhcm5mdW5jKQotICAgICAgICBpZiByb290ZGlyIGlzIE5vbmU6Ci0gICAgICAgICAgICBmb3Ig
cm9vdGRpciBpbiBhbmNlc3Rvci5wYXJ0cyhyZXZlcnNlPVRydWUpOgotICAgICAgICAgICAgICAg
IGlmIHJvb3RkaXIuam9pbigic2V0dXAucHkiKS5leGlzdHMoKToKLSAgICAgICAgICAgICAgICAg
ICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcm9vdGRpciwgaW5p
ZmlsZSwgaW5pY2ZnID0gZ2V0Y2ZnKGRpcnMsIHdhcm5mdW5jPXdhcm5mdW5jKQotICAgICAgICAg
ICAgICAgIGlmIHJvb3RkaXIgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcm9vdGRpciA9
IGdldF9jb21tb25fYW5jZXN0b3IoW3B5LnBhdGgubG9jYWwoKSwgYW5jZXN0b3JdKQotICAgICAg
ICAgICAgICAgICAgICBpc19mc19yb290ID0gb3MucGF0aC5zcGxpdGRyaXZlKHN0cihyb290ZGly
KSlbMV0gPT0gJy8nCi0gICAgICAgICAgICAgICAgICAgIGlmIGlzX2ZzX3Jvb3Q6Ci0gICAgICAg
ICAgICAgICAgICAgICAgICByb290ZGlyID0gYW5jZXN0b3IKLSAgICByZXR1cm4gcm9vdGRpciwg
aW5pZmlsZSwgaW5pY2ZnIG9yIHt9Ci0KLQotZGVmIHNldG5zKG9iaiwgZGljKToKLSAgICBpbXBv
cnQgcHl0ZXN0Ci0gICAgZm9yIG5hbWUsIHZhbHVlIGluIGRpYy5pdGVtcygpOgotICAgICAgICBp
ZiBpc2luc3RhbmNlKHZhbHVlLCBkaWN0KToKLSAgICAgICAgICAgIG1vZCA9IGdldGF0dHIob2Jq
LCBuYW1lLCBOb25lKQotICAgICAgICAgICAgaWYgbW9kIGlzIE5vbmU6Ci0gICAgICAgICAgICAg
ICAgbW9kbmFtZSA9ICJweXRlc3QuJXMiICUgbmFtZQotICAgICAgICAgICAgICAgIG1vZCA9IHR5
cGVzLk1vZHVsZVR5cGUobW9kbmFtZSkKLSAgICAgICAgICAgICAgICBzeXMubW9kdWxlc1ttb2Ru
YW1lXSA9IG1vZAotICAgICAgICAgICAgICAgIG1vZC5fX2FsbF9fID0gW10KLSAgICAgICAgICAg
ICAgICBzZXRhdHRyKG9iaiwgbmFtZSwgbW9kKQotICAgICAgICAgICAgb2JqLl9fYWxsX18uYXBw
ZW5kKG5hbWUpCi0gICAgICAgICAgICBzZXRucyhtb2QsIHZhbHVlKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlKQotICAgICAgICAgICAgb2JqLl9f
YWxsX18uYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICAjIGlmIG9iaiAhPSBweXRlc3Q6Ci0gICAg
ICAgICAgICAjICAgIHB5dGVzdC5fX2FsbF9fLmFwcGVuZChuYW1lKQotICAgICAgICAgICAgc2V0
YXR0cihweXRlc3QsIG5hbWUsIHZhbHVlKQotCi0KLWRlZiBjcmVhdGVfdGVybWluYWxfd3JpdGVy
KGNvbmZpZywgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAiIiJDcmVhdGUgYSBUZXJtaW5hbFdyaXRl
ciBpbnN0YW5jZSBjb25maWd1cmVkIGFjY29yZGluZyB0byB0aGUgb3B0aW9ucwotICAgIGluIHRo
ZSBjb25maWcgb2JqZWN0LiBFdmVyeSBjb2RlIHdoaWNoIHJlcXVpcmVzIGEgVGVybWluYWxXcml0
ZXIgb2JqZWN0Ci0gICAgYW5kIGhhcyBhY2Nlc3MgdG8gYSBjb25maWcgb2JqZWN0IHNob3VsZCB1
c2UgdGhpcyBmdW5jdGlvbi4KLSAgICAiIiIKLSAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVy
KCphcmdzLCAqKmt3YXJncykKLSAgICBpZiBjb25maWcub3B0aW9uLmNvbG9yID09ICd5ZXMnOgot
ICAgICAgICB0dy5oYXNtYXJrdXAgPSBUcnVlCi0gICAgaWYgY29uZmlnLm9wdGlvbi5jb2xvciA9
PSAnbm8nOgotICAgICAgICB0dy5oYXNtYXJrdXAgPSBGYWxzZQotICAgIHJldHVybiB0dwotCi0K
LWRlZiBfc3RydG9ib29sKHZhbCk6Ci0gICAgIiIiQ29udmVydCBhIHN0cmluZyByZXByZXNlbnRh
dGlvbiBvZiB0cnV0aCB0byB0cnVlICgxKSBvciBmYWxzZSAoMCkuCi0KLSAgICBUcnVlIHZhbHVl
cyBhcmUgJ3knLCAneWVzJywgJ3QnLCAndHJ1ZScsICdvbicsIGFuZCAnMSc7IGZhbHNlIHZhbHVl
cwotICAgIGFyZSAnbicsICdubycsICdmJywgJ2ZhbHNlJywgJ29mZicsIGFuZCAnMCcuICBSYWlz
ZXMgVmFsdWVFcnJvciBpZgotICAgICd2YWwnIGlzIGFueXRoaW5nIGVsc2UuCi0KLSAgICAuLiBu
b3RlOjogY29waWVkIGZyb20gZGlzdHV0aWxzLnV0aWwKLSAgICAiIiIKLSAgICB2YWwgPSB2YWwu
bG93ZXIoKQotICAgIGlmIHZhbCBpbiAoJ3knLCAneWVzJywgJ3QnLCAndHJ1ZScsICdvbicsICcx
Jyk6Ci0gICAgICAgIHJldHVybiAxCi0gICAgZWxpZiB2YWwgaW4gKCduJywgJ25vJywgJ2YnLCAn
ZmFsc2UnLCAnb2ZmJywgJzAnKToKLSAgICAgICAgcmV0dXJuIDAKLSAgICBlbHNlOgotICAgICAg
ICByYWlzZSBWYWx1ZUVycm9yKCJpbnZhbGlkIHRydXRoIHZhbHVlICVyIiAlICh2YWwsKSkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZGVidWdnaW5nLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9kZWJ1Z2dpbmcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZGNh
NzgwOTU2ZWMzOTc2MmQwNGNhYTE3ZjlkMGZiM2JkZWZmYzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kZWJ1Z2dpbmcu
cHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMjMgKzAsMCBAQAotIiIiIGludGVyYWN0aXZlIGRlYnVn
Z2luZyB3aXRoIFBEQiwgdGhlIFB5dGhvbiBEZWJ1Z2dlci4gIiIiCi1mcm9tIF9fZnV0dXJlX18g
aW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBvcnQg
cGRiCi1pbXBvcnQgc3lzCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBn
cm91cCA9IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigK
LSAgICAgICAgJy0tcGRiJywgZGVzdD0idXNlcGRiIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAg
ICAgICAgaGVscD0ic3RhcnQgdGhlIGludGVyYWN0aXZlIFB5dGhvbiBkZWJ1Z2dlciBvbiBlcnJv
cnMuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKAotICAgICAgICAnLS1wZGJjbHMnLCBkZXN0PSJ1
c2VwZGJfY2xzIiwgbWV0YXZhcj0ibW9kdWxlbmFtZTpjbGFzc25hbWUiLAotICAgICAgICBoZWxw
PSJzdGFydCBhIGN1c3RvbSBpbnRlcmFjdGl2ZSBQeXRob24gZGVidWdnZXIgb24gZXJyb3JzLiAi
Ci0gICAgICAgICAgICAgIkZvciBleGFtcGxlOiAtLXBkYmNscz1JUHl0aG9uLnRlcm1pbmFsLmRl
YnVnZ2VyOlRlcm1pbmFsUGRiIikKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgot
ICAgIGlmIGNvbmZpZy5nZXR2YWx1ZSgidXNlcGRiX2NscyIpOgotICAgICAgICBtb2RuYW1lLCBj
bGFzc25hbWUgPSBjb25maWcuZ2V0dmFsdWUoInVzZXBkYl9jbHMiKS5zcGxpdCgiOiIpCi0gICAg
ICAgIF9faW1wb3J0X18obW9kbmFtZSkKLSAgICAgICAgcGRiX2NscyA9IGdldGF0dHIoc3lzLm1v
ZHVsZXNbbW9kbmFtZV0sIGNsYXNzbmFtZSkKLSAgICBlbHNlOgotICAgICAgICBwZGJfY2xzID0g
cGRiLlBkYgotCi0gICAgaWYgY29uZmlnLmdldHZhbHVlKCJ1c2VwZGIiKToKLSAgICAgICAgY29u
ZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoUGRiSW52b2tlKCksICdwZGJpbnZva2UnKQotCi0g
ICAgb2xkID0gKHBkYi5zZXRfdHJhY2UsIHB5dGVzdFBEQi5fcGx1Z2lubWFuYWdlcikKLQotICAg
IGRlZiBmaW4oKToKLSAgICAgICAgcGRiLnNldF90cmFjZSwgcHl0ZXN0UERCLl9wbHVnaW5tYW5h
Z2VyID0gb2xkCi0gICAgICAgIHB5dGVzdFBEQi5fY29uZmlnID0gTm9uZQotICAgICAgICBweXRl
c3RQREIuX3BkYl9jbHMgPSBwZGIuUGRiCi0KLSAgICBwZGIuc2V0X3RyYWNlID0gcHl0ZXN0UERC
LnNldF90cmFjZQotICAgIHB5dGVzdFBEQi5fcGx1Z2lubWFuYWdlciA9IGNvbmZpZy5wbHVnaW5t
YW5hZ2VyCi0gICAgcHl0ZXN0UERCLl9jb25maWcgPSBjb25maWcKLSAgICBweXRlc3RQREIuX3Bk
Yl9jbHMgPSBwZGJfY2xzCi0gICAgY29uZmlnLl9jbGVhbnVwLmFwcGVuZChmaW4pCi0KLQotY2xh
c3MgcHl0ZXN0UERCOgotICAgICIiIiBQc2V1ZG8gUERCIHRoYXQgZGVmZXJzIHRvIHRoZSByZWFs
IHBkYi4gIiIiCi0gICAgX3BsdWdpbm1hbmFnZXIgPSBOb25lCi0gICAgX2NvbmZpZyA9IE5vbmUK
LSAgICBfcGRiX2NscyA9IHBkYi5QZGIKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBzZXRf
dHJhY2UoY2xzKToKLSAgICAgICAgIiIiIGludm9rZSBQREIgc2V0X3RyYWNlIGRlYnVnZ2luZywg
ZHJvcHBpbmcgYW55IElPIGNhcHR1cmluZy4gIiIiCi0gICAgICAgIGltcG9ydCBfcHl0ZXN0LmNv
bmZpZwotICAgICAgICBmcmFtZSA9IHN5cy5fZ2V0ZnJhbWUoKS5mX2JhY2sKLSAgICAgICAgaWYg
Y2xzLl9wbHVnaW5tYW5hZ2VyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY2FwbWFuID0gY2xz
Ll9wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbigiY2FwdHVyZW1hbmFnZXIiKQotICAgICAgICAgICAg
aWYgY2FwbWFuOgotICAgICAgICAgICAgICAgIGNhcG1hbi5zdXNwZW5kX2dsb2JhbF9jYXB0dXJl
KGluXz1UcnVlKQotICAgICAgICAgICAgdHcgPSBfcHl0ZXN0LmNvbmZpZy5jcmVhdGVfdGVybWlu
YWxfd3JpdGVyKGNscy5fY29uZmlnKQotICAgICAgICAgICAgdHcubGluZSgpCi0gICAgICAgICAg
ICB0dy5zZXAoIj4iLCAiUERCIHNldF90cmFjZSAoSU8tY2FwdHVyaW5nIHR1cm5lZCBvZmYpIikK
LSAgICAgICAgICAgIGNscy5fcGx1Z2lubWFuYWdlci5ob29rLnB5dGVzdF9lbnRlcl9wZGIoY29u
ZmlnPWNscy5fY29uZmlnKQotICAgICAgICBjbHMuX3BkYl9jbHMoKS5zZXRfdHJhY2UoZnJhbWUp
Ci0KLQotY2xhc3MgUGRiSW52b2tlOgotICAgIGRlZiBweXRlc3RfZXhjZXB0aW9uX2ludGVyYWN0
KHNlbGYsIG5vZGUsIGNhbGwsIHJlcG9ydCk6Ci0gICAgICAgIGNhcG1hbiA9IG5vZGUuY29uZmln
LnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCJjYXB0dXJlbWFuYWdlciIpCi0gICAgICAgIGlmIGNh
cG1hbjoKLSAgICAgICAgICAgIG91dCwgZXJyID0gY2FwbWFuLnN1c3BlbmRfZ2xvYmFsX2NhcHR1
cmUoaW5fPVRydWUpCi0gICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKG91dCkKLSAgICAgICAg
ICAgIHN5cy5zdGRvdXQud3JpdGUoZXJyKQotICAgICAgICBfZW50ZXJfcGRiKG5vZGUsIGNhbGwu
ZXhjaW5mbywgcmVwb3J0KQotCi0gICAgZGVmIHB5dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4
Y3JlcHIsIGV4Y2luZm8pOgotICAgICAgICBmb3IgbGluZSBpbiBzdHIoZXhjcmVwcikuc3BsaXQo
IlxuIik6Ci0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCJJTlRFUk5BTEVSUk9SPiAlc1xu
IiAlIGxpbmUpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKLSAgICAgICAgdGIgPSBf
cG9zdG1vcnRlbV90cmFjZWJhY2soZXhjaW5mbykKLSAgICAgICAgcG9zdF9tb3J0ZW0odGIpCi0K
LQotZGVmIF9lbnRlcl9wZGIobm9kZSwgZXhjaW5mbywgcmVwKToKLSAgICAjIFhYWCB3ZSByZS11
c2UgdGhlIFRlcm1pbmFsUmVwb3J0ZXIncyB0ZXJtaW5hbHdyaXRlcgotICAgICMgYmVjYXVzZSB0
aGlzIHNlZW1zIHRvIGF2b2lkIHNvbWUgZW5jb2RpbmcgcmVsYXRlZCB0cm91YmxlcwotICAgICMg
Zm9yIG5vdCBjb21wbGV0ZWx5IGNsZWFyIHJlYXNvbnMuCi0gICAgdHcgPSBub2RlLmNvbmZpZy5w
bHVnaW5tYW5hZ2VyLmdldHBsdWdpbigidGVybWluYWxyZXBvcnRlciIpLl90dwotICAgIHR3Lmxp
bmUoKQotICAgIHR3LnNlcCgiPiIsICJ0cmFjZWJhY2siKQotICAgIHJlcC50b3Rlcm1pbmFsKHR3
KQotICAgIHR3LnNlcCgiPiIsICJlbnRlcmluZyBQREIiKQotICAgIHRiID0gX3Bvc3Rtb3J0ZW1f
dHJhY2ViYWNrKGV4Y2luZm8pCi0gICAgcG9zdF9tb3J0ZW0odGIpCi0gICAgcmVwLl9wZGJzaG93
biA9IFRydWUKLSAgICByZXR1cm4gcmVwCi0KLQotZGVmIF9wb3N0bW9ydGVtX3RyYWNlYmFjayhl
eGNpbmZvKToKLSAgICAjIEEgZG9jdGVzdC5VbmV4cGVjdGVkRXhjZXB0aW9uIGlzIG5vdCB1c2Vm
dWwgZm9yIHBvc3RfbW9ydGVtLgotICAgICMgVXNlIHRoZSB1bmRlcmx5aW5nIGV4Y2VwdGlvbiBp
bnN0ZWFkOgotICAgIGZyb20gZG9jdGVzdCBpbXBvcnQgVW5leHBlY3RlZEV4Y2VwdGlvbgotICAg
IGlmIGlzaW5zdGFuY2UoZXhjaW5mby52YWx1ZSwgVW5leHBlY3RlZEV4Y2VwdGlvbik6Ci0gICAg
ICAgIHJldHVybiBleGNpbmZvLnZhbHVlLmV4Y19pbmZvWzJdCi0gICAgZWxzZToKLSAgICAgICAg
cmV0dXJuIGV4Y2luZm8uX2V4Y2luZm9bMl0KLQotCi1kZWYgX2ZpbmRfbGFzdF9ub25faGlkZGVu
X2ZyYW1lKHN0YWNrKToKLSAgICBpID0gbWF4KDAsIGxlbihzdGFjaykgLSAxKQotICAgIHdoaWxl
IGkgYW5kIHN0YWNrW2ldWzBdLmZfbG9jYWxzLmdldCgiX190cmFjZWJhY2toaWRlX18iLCBGYWxz
ZSk6Ci0gICAgICAgIGkgLT0gMQotICAgIHJldHVybiBpCi0KLQotZGVmIHBvc3RfbW9ydGVtKHQp
OgotICAgIGNsYXNzIFBkYihweXRlc3RQREIuX3BkYl9jbHMpOgotICAgICAgICBkZWYgZ2V0X3N0
YWNrKHNlbGYsIGYsIHQpOgotICAgICAgICAgICAgc3RhY2ssIGkgPSBwZGIuUGRiLmdldF9zdGFj
ayhzZWxmLCBmLCB0KQotICAgICAgICAgICAgaWYgZiBpcyBOb25lOgotICAgICAgICAgICAgICAg
IGkgPSBfZmluZF9sYXN0X25vbl9oaWRkZW5fZnJhbWUoc3RhY2spCi0gICAgICAgICAgICByZXR1
cm4gc3RhY2ssIGkKLSAgICBwID0gUGRiKCkKLSAgICBwLnJlc2V0KCkKLSAgICBwLmludGVyYWN0
aW9uKE5vbmUsIHQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2RlcHJlY2F0ZWQu
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2RlcHJlY2F0ZWQucHkKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDljMGZiZWNhN2JjOWU5NzQxNzBhOWVjZWFjMzI3Njc3ZjU2MWYxMjMuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
X3B5dGVzdC9kZXByZWNhdGVkLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotIiIi
Ci1UaGlzIG1vZHVsZSBjb250YWlucyBkZXByZWNhdGlvbiBtZXNzYWdlcyBhbmQgYml0cyBvZiBj
b2RlIHVzZWQgZWxzZXdoZXJlIGluIHRoZSBjb2RlYmFzZQotdGhhdCBpcyBwbGFubmVkIHRvIGJl
IHJlbW92ZWQgaW4gdGhlIG5leHQgcHl0ZXN0IHJlbGVhc2UuCi0KLUtlZXBpbmcgaXQgaW4gYSBj
ZW50cmFsIGxvY2F0aW9uIG1ha2VzIGl0IGVhc3kgdG8gdHJhY2sgd2hhdCBpcyBkZXByZWNhdGVk
IGFuZCBzaG91bGQKLWJlIHJlbW92ZWQgd2hlbiB0aGUgdGltZSBjb21lcy4KLSIiIgotZnJvbSBf
X2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlv
bgotCi0KLWNsYXNzIFJlbW92ZWRJblB5dGVzdDRXYXJuaW5nKERlcHJlY2F0aW9uV2FybmluZyk6
Ci0gICAgIiIid2FybmluZyBjbGFzcyBmb3IgZmVhdHVyZXMgcmVtb3ZlZCBpbiBweXRlc3QgNC4w
IiIiCi0KLQotTUFJTl9TVFJfQVJHUyA9ICdwYXNzaW5nIGEgc3RyaW5nIHRvIHB5dGVzdC5tYWlu
KCkgaXMgZGVwcmVjYXRlZCwgJyBcCi0gICAgJ3Bhc3MgYSBsaXN0IG9mIGFyZ3VtZW50cyBpbnN0
ZWFkLicKLQotWUlFTERfVEVTVFMgPSAneWllbGQgdGVzdHMgYXJlIGRlcHJlY2F0ZWQsIGFuZCBz
Y2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbiBweXRlc3QgNC4wJwotCi1GVU5DQVJHX1BSRUZJWCA9
ICgKLSAgICAne25hbWV9OiBkZWNsYXJpbmcgZml4dHVyZXMgdXNpbmcgInB5dGVzdF9mdW5jYXJn
X18iIHByZWZpeCBpcyBkZXByZWNhdGVkICcKLSAgICAnYW5kIHNjaGVkdWxlZCB0byBiZSByZW1v
dmVkIGluIHB5dGVzdCA0LjAuICAnCi0gICAgJ1BsZWFzZSByZW1vdmUgdGhlIHByZWZpeCBhbmQg
dXNlIHRoZSBAcHl0ZXN0LmZpeHR1cmUgZGVjb3JhdG9yIGluc3RlYWQuJykKLQotU0VUVVBfQ0ZH
X1BZVEVTVCA9ICdbcHl0ZXN0XSBzZWN0aW9uIGluIHNldHVwLmNmZyBmaWxlcyBpcyBkZXByZWNh
dGVkLCB1c2UgW3Rvb2w6cHl0ZXN0XSBpbnN0ZWFkLicKLQotR0VURlVOQ0FSR1ZBTFVFID0gInVz
ZSBvZiBnZXRmdW5jYXJndmFsdWUgaXMgZGVwcmVjYXRlZCwgdXNlIGdldGZpeHR1cmV2YWx1ZSIK
LQotUkVTVUxUX0xPRyA9ICgKLSAgICAnLS1yZXN1bHQtbG9nIGlzIGRlcHJlY2F0ZWQgYW5kIHNj
aGVkdWxlZCBmb3IgcmVtb3ZhbCBpbiBweXRlc3QgNC4wLlxuJwotICAgICdTZWUgaHR0cHM6Ly9k
b2NzLnB5dGVzdC5vcmcvZW4vbGF0ZXN0L3VzYWdlLmh0bWwjY3JlYXRpbmctcmVzdWx0bG9nLWZv
cm1hdC1maWxlcyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4nCi0pCi0KLU1BUktfSU5GT19BVFRSSUJV
VEUgPSBSZW1vdmVkSW5QeXRlc3Q0V2FybmluZygKLSAgICAiTWFya0luZm8gb2JqZWN0cyBhcmUg
ZGVwcmVjYXRlZCBhcyB0aGV5IGNvbnRhaW4gdGhlIG1lcmdlZCBtYXJrcyIKLSkKLQotTUFSS19Q
QVJBTUVURVJTRVRfVU5QQUNLSU5HID0gUmVtb3ZlZEluUHl0ZXN0NFdhcm5pbmcoCi0gICAgIkFw
cGx5aW5nIG1hcmtzIGRpcmVjdGx5IHRvIHBhcmFtZXRlcnMgaXMgZGVwcmVjYXRlZCwiCi0gICAg
IiBwbGVhc2UgdXNlIHB5dGVzdC5wYXJhbSguLi4sIG1hcmtzPS4uLikgaW5zdGVhZC5cbiIKLSAg
ICAiRm9yIG1vcmUgZGV0YWlscywgc2VlOiBodHRwczovL2RvY3MucHl0ZXN0Lm9yZy9lbi9sYXRl
c3QvcGFyYW1ldHJpemUuaHRtbCIKLSkKLQotQ09MTEVDVE9SX01BS0VJVEVNID0gUmVtb3ZlZElu
UHl0ZXN0NFdhcm5pbmcoCi0gICAgInB5Y29sbGVjdG9yIG1ha2VpdGVtIHdhcyByZW1vdmVkICIK
LSAgICAiYXMgaXQgaXMgYW4gYWNjaWRlbnRpYWxseSBsZWFrZWQgaW50ZXJuYWwgYXBpIgotKQot
Ci1NRVRBRlVOQ19BRERfQ0FMTCA9ICgKLSAgICAiTWV0YWZ1bmMuYWRkY2FsbCBpcyBkZXByZWNh
dGVkIGFuZCBzY2hlZHVsZWQgdG8gYmUgcmVtb3ZlZCBpbiBweXRlc3QgNC4wLlxuIgotICAgICJQ
bGVhc2UgdXNlIE1ldGFmdW5jLnBhcmFtZXRyaXplIGluc3RlYWQuIgotKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9kb2N0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kb2N0
ZXN0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYmE5MGU1NTFjNTA1YWVkOTkz
YTc5OTE5ZGQwMzk5OTg2MTBhNmQwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZG9jdGVzdC5weQorKysgL2Rldi9udWxs
CkBAIC0xLDM2OSArMCwwIEBACi0iIiIgZGlzY292ZXIgYW5kIHJ1biBkb2N0ZXN0cyBpbiBtb2R1
bGVzIGFuZCB0ZXN0IGZpbGVzLiIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9p
bXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgdHJhY2ViYWNrCi0KLWlt
cG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGltcG9ydCBFeGNlcHRpb25JbmZv
LCBSZXByRmlsZUxvY2F0aW9uLCBUZXJtaW5hbFJlcHIKLWZyb20gX3B5dGVzdC5maXh0dXJlcyBp
bXBvcnQgRml4dHVyZVJlcXVlc3QKLQotCi1ET0NURVNUX1JFUE9SVF9DSE9JQ0VfTk9ORSA9ICdu
b25lJwotRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX0NESUZGID0gJ2NkaWZmJwotRE9DVEVTVF9SRVBP
UlRfQ0hPSUNFX05ESUZGID0gJ25kaWZmJwotRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX1VESUZGID0g
J3VkaWZmJwotRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX09OTFlfRklSU1RfRkFJTFVSRSA9ICdvbmx5
X2ZpcnN0X2ZhaWx1cmUnCi0KLURPQ1RFU1RfUkVQT1JUX0NIT0lDRVMgPSAoCi0gICAgRE9DVEVT
VF9SRVBPUlRfQ0hPSUNFX05PTkUsCi0gICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX0NESUZGLAot
ICAgIERPQ1RFU1RfUkVQT1JUX0NIT0lDRV9ORElGRiwKLSAgICBET0NURVNUX1JFUE9SVF9DSE9J
Q0VfVURJRkYsCi0gICAgRE9DVEVTVF9SRVBPUlRfQ0hPSUNFX09OTFlfRklSU1RfRkFJTFVSRSwK
LSkKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIHBhcnNlci5hZGRpbmko
J2RvY3Rlc3Rfb3B0aW9uZmxhZ3MnLCAnb3B0aW9uIGZsYWdzIGZvciBkb2N0ZXN0cycsCi0gICAg
ICAgICAgICAgICAgICB0eXBlPSJhcmdzIiwgZGVmYXVsdD1bIkVMTElQU0lTIl0pCi0gICAgcGFy
c2VyLmFkZGluaSgiZG9jdGVzdF9lbmNvZGluZyIsICdlbmNvZGluZyB1c2VkIGZvciBkb2N0ZXN0
IGZpbGVzJywgZGVmYXVsdD0idXRmLTgiKQotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJj
b2xsZWN0IikKLSAgICBncm91cC5hZGRvcHRpb24oIi0tZG9jdGVzdC1tb2R1bGVzIiwKLSAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgaGVscD0icnVuIGRvY3Rlc3RzIGluIGFsbCAucHkgbW9kdWxlcyIsCi0g
ICAgICAgICAgICAgICAgICAgIGRlc3Q9ImRvY3Rlc3Rtb2R1bGVzIikKLSAgICBncm91cC5hZGRv
cHRpb24oIi0tZG9jdGVzdC1yZXBvcnQiLAotICAgICAgICAgICAgICAgICAgICB0eXBlPXN0ci5s
b3dlciwgZGVmYXVsdD0idWRpZmYiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJjaG9vc2Ug
YW5vdGhlciBvdXRwdXQgZm9ybWF0IGZvciBkaWZmcyBvbiBkb2N0ZXN0IGZhaWx1cmUiLAotICAg
ICAgICAgICAgICAgICAgICBjaG9pY2VzPURPQ1RFU1RfUkVQT1JUX0NIT0lDRVMsCi0gICAgICAg
ICAgICAgICAgICAgIGRlc3Q9ImRvY3Rlc3RyZXBvcnQiKQotICAgIGdyb3VwLmFkZG9wdGlvbigi
LS1kb2N0ZXN0LWdsb2IiLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRl
ZmF1bHQ9W10sIG1ldGF2YXI9InBhdCIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9ImRvY3Rl
c3RzIGZpbGUgbWF0Y2hpbmcgcGF0dGVybiwgZGVmYXVsdDogdGVzdCoudHh0IiwKLSAgICAgICAg
ICAgICAgICAgICAgZGVzdD0iZG9jdGVzdGdsb2IiKQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1k
b2N0ZXN0LWlnbm9yZS1pbXBvcnQtZXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgYWN0aW9u
PSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgICAgICAgaGVscD0i
aWdub3JlIGRvY3Rlc3QgSW1wb3J0RXJyb3JzIiwKLSAgICAgICAgICAgICAgICAgICAgZGVzdD0i
ZG9jdGVzdF9pZ25vcmVfaW1wb3J0X2Vycm9ycyIpCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0X2Zp
bGUocGF0aCwgcGFyZW50KToKLSAgICBjb25maWcgPSBwYXJlbnQuY29uZmlnCi0gICAgaWYgcGF0
aC5leHQgPT0gIi5weSI6Ci0gICAgICAgIGlmIGNvbmZpZy5vcHRpb24uZG9jdGVzdG1vZHVsZXMg
YW5kIG5vdCBfaXNfc2V0dXBfcHkoY29uZmlnLCBwYXRoLCBwYXJlbnQpOgotICAgICAgICAgICAg
cmV0dXJuIERvY3Rlc3RNb2R1bGUocGF0aCwgcGFyZW50KQotICAgIGVsaWYgX2lzX2RvY3Rlc3Qo
Y29uZmlnLCBwYXRoLCBwYXJlbnQpOgotICAgICAgICByZXR1cm4gRG9jdGVzdFRleHRmaWxlKHBh
dGgsIHBhcmVudCkKLQotCi1kZWYgX2lzX3NldHVwX3B5KGNvbmZpZywgcGF0aCwgcGFyZW50KToK
LSAgICBpZiBwYXRoLmJhc2VuYW1lICE9ICJzZXR1cC5weSI6Ci0gICAgICAgIHJldHVybiBGYWxz
ZQotICAgIGNvbnRlbnRzID0gcGF0aC5yZWFkKCkKLSAgICByZXR1cm4gJ3NldHVwdG9vbHMnIGlu
IGNvbnRlbnRzIG9yICdkaXN0dXRpbHMnIGluIGNvbnRlbnRzCi0KLQotZGVmIF9pc19kb2N0ZXN0
KGNvbmZpZywgcGF0aCwgcGFyZW50KToKLSAgICBpZiBwYXRoLmV4dCBpbiAoJy50eHQnLCAnLnJz
dCcpIGFuZCBwYXJlbnQuc2Vzc2lvbi5pc2luaXRwYXRoKHBhdGgpOgotICAgICAgICByZXR1cm4g
VHJ1ZQotICAgIGdsb2JzID0gY29uZmlnLmdldG9wdGlvbigiZG9jdGVzdGdsb2IiKSBvciBbJ3Rl
c3QqLnR4dCddCi0gICAgZm9yIGdsb2IgaW4gZ2xvYnM6Ci0gICAgICAgIGlmIHBhdGguY2hlY2so
Zm5tYXRjaD1nbG9iKToKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgcmV0dXJuIEZhbHNl
Ci0KLQotY2xhc3MgUmVwckZhaWxEb2N0ZXN0KFRlcm1pbmFsUmVwcik6Ci0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcmVwcmxvY2F0aW9uLCBsaW5lcyk6Ci0gICAgICAgIHNlbGYucmVwcmxvY2F0
aW9uID0gcmVwcmxvY2F0aW9uCi0gICAgICAgIHNlbGYubGluZXMgPSBsaW5lcwotCi0gICAgZGVm
IHRvdGVybWluYWwoc2VsZiwgdHcpOgotICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVzOgot
ICAgICAgICAgICAgdHcubGluZShsaW5lKQotICAgICAgICBzZWxmLnJlcHJsb2NhdGlvbi50b3Rl
cm1pbmFsKHR3KQotCi0KLWNsYXNzIERvY3Rlc3RJdGVtKHB5dGVzdC5JdGVtKToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50LCBydW5uZXI9Tm9uZSwgZHRlc3Q9Tm9uZSk6Ci0g
ICAgICAgIHN1cGVyKERvY3Rlc3RJdGVtLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQpCi0g
ICAgICAgIHNlbGYucnVubmVyID0gcnVubmVyCi0gICAgICAgIHNlbGYuZHRlc3QgPSBkdGVzdAot
ICAgICAgICBzZWxmLm9iaiA9IE5vbmUKLSAgICAgICAgc2VsZi5maXh0dXJlX3JlcXVlc3QgPSBO
b25lCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZHRlc3QgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmZpeHR1cmVfcmVxdWVzdCA9IF9zZXR1cF9maXh0dXJl
cyhzZWxmKQotICAgICAgICAgICAgZ2xvYnMgPSBkaWN0KGdldGZpeHR1cmU9c2VsZi5maXh0dXJl
X3JlcXVlc3QuZ2V0Zml4dHVyZXZhbHVlKQotICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGlu
IHNlbGYuZml4dHVyZV9yZXF1ZXN0LmdldGZpeHR1cmV2YWx1ZSgnZG9jdGVzdF9uYW1lc3BhY2Un
KS5pdGVtcygpOgotICAgICAgICAgICAgICAgIGdsb2JzW25hbWVdID0gdmFsdWUKLSAgICAgICAg
ICAgIHNlbGYuZHRlc3QuZ2xvYnMudXBkYXRlKGdsb2JzKQotCi0gICAgZGVmIHJ1bnRlc3Qoc2Vs
Zik6Ci0gICAgICAgIF9jaGVja19hbGxfc2tpcHBlZChzZWxmLmR0ZXN0KQotICAgICAgICBzZWxm
LnJ1bm5lci5ydW4oc2VsZi5kdGVzdCkKLQotICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhj
aW5mbyk6Ci0gICAgICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgICAgIGlmIGV4Y2luZm8uZXJyaXNp
bnN0YW5jZSgoZG9jdGVzdC5Eb2NUZXN0RmFpbHVyZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBkb2N0ZXN0LlVuZXhwZWN0ZWRFeGNlcHRpb24pKToKLSAgICAgICAgICAgIGRv
Y3Rlc3RmYWlsdXJlID0gZXhjaW5mby52YWx1ZQotICAgICAgICAgICAgZXhhbXBsZSA9IGRvY3Rl
c3RmYWlsdXJlLmV4YW1wbGUKLSAgICAgICAgICAgIHRlc3QgPSBkb2N0ZXN0ZmFpbHVyZS50ZXN0
Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IHRlc3QuZmlsZW5hbWUKLSAgICAgICAgICAgIGlmIHRl
c3QubGluZW5vIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbGluZW5vID0gTm9uZQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsaW5lbm8gPSB0ZXN0LmxpbmVubyArIGV4YW1w
bGUubGluZW5vICsgMQotICAgICAgICAgICAgbWVzc2FnZSA9IGV4Y2luZm8udHlwZS5fX25hbWVf
XwotICAgICAgICAgICAgcmVwcmxvY2F0aW9uID0gUmVwckZpbGVMb2NhdGlvbihmaWxlbmFtZSwg
bGluZW5vLCBtZXNzYWdlKQotICAgICAgICAgICAgY2hlY2tlciA9IF9nZXRfY2hlY2tlcigpCi0g
ICAgICAgICAgICByZXBvcnRfY2hvaWNlID0gX2dldF9yZXBvcnRfY2hvaWNlKHNlbGYuY29uZmln
LmdldG9wdGlvbigiZG9jdGVzdHJlcG9ydCIpKQotICAgICAgICAgICAgaWYgbGluZW5vIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgICAgIGxpbmVzID0gZG9jdGVzdGZhaWx1cmUudGVzdC5kb2Nz
dHJpbmcuc3BsaXRsaW5lcyhGYWxzZSkKLSAgICAgICAgICAgICAgICAjIGFkZCBsaW5lIG51bWJl
cnMgdG8gdGhlIGxlZnQgb2YgdGhlIGVycm9yIG1lc3NhZ2UKLSAgICAgICAgICAgICAgICBsaW5l
cyA9IFsiJTAzZCAlcyIgJSAoaSArIHRlc3QubGluZW5vICsgMSwgeCkKLSAgICAgICAgICAgICAg
ICAgICAgICAgICBmb3IgKGksIHgpIGluIGVudW1lcmF0ZShsaW5lcyldCi0gICAgICAgICAgICAg
ICAgIyB0cmltIGRvY3N0cmluZyBlcnJvciBsaW5lcyB0byAxMAotICAgICAgICAgICAgICAgIGxp
bmVzID0gbGluZXNbbWF4KGV4YW1wbGUubGluZW5vIC0gOSwgMCk6ZXhhbXBsZS5saW5lbm8gKyAx
XQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBsaW5lcyA9IFsnRVhBTVBMRSBM
T0NBVElPTiBVTktOT1dOLCBub3Qgc2hvd2luZyBhbGwgdGVzdHMgb2YgdGhhdCBleGFtcGxlJ10K
LSAgICAgICAgICAgICAgICBpbmRlbnQgPSAnPj4+JwotICAgICAgICAgICAgICAgIGZvciBsaW5l
IGluIGV4YW1wbGUuc291cmNlLnNwbGl0bGluZXMoKToKLSAgICAgICAgICAgICAgICAgICAgbGlu
ZXMuYXBwZW5kKCc/Pz8gJXMgJXMnICUgKGluZGVudCwgbGluZSkpCi0gICAgICAgICAgICAgICAg
ICAgIGluZGVudCA9ICcuLi4nCi0gICAgICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5zdGFuY2Uo
ZG9jdGVzdC5Eb2NUZXN0RmFpbHVyZSk6Ci0gICAgICAgICAgICAgICAgbGluZXMgKz0gY2hlY2tl
ci5vdXRwdXRfZGlmZmVyZW5jZShleGFtcGxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZG9jdGVzdGZhaWx1cmUuZ290LCByZXBvcnRfY2hvaWNl
KS5zcGxpdCgiXG4iKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpbm5lcl9l
eGNpbmZvID0gRXhjZXB0aW9uSW5mbyhleGNpbmZvLnZhbHVlLmV4Y19pbmZvKQotICAgICAgICAg
ICAgICAgIGxpbmVzICs9IFsiVU5FWFBFQ1RFRCBFWENFUFRJT046ICVzIiAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgIHJlcHIoaW5uZXJfZXhjaW5mby52YWx1ZSldCi0gICAgICAgICAgICAg
ICAgbGluZXMgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24oKmV4Y2luZm8udmFsdWUuZXhj
X2luZm8pCi0gICAgICAgICAgICByZXR1cm4gUmVwckZhaWxEb2N0ZXN0KHJlcHJsb2NhdGlvbiwg
bGluZXMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc3VwZXIoRG9jdGVzdEl0
ZW0sIHNlbGYpLnJlcHJfZmFpbHVyZShleGNpbmZvKQotCi0gICAgZGVmIHJlcG9ydGluZm8oc2Vs
Zik6Ci0gICAgICAgIHJldHVybiBzZWxmLmZzcGF0aCwgc2VsZi5kdGVzdC5saW5lbm8sICJbZG9j
dGVzdF0gJXMiICUgc2VsZi5uYW1lCi0KLQotZGVmIF9nZXRfZmxhZ19sb29rdXAoKToKLSAgICBp
bXBvcnQgZG9jdGVzdAotICAgIHJldHVybiBkaWN0KERPTlRfQUNDRVBUX1RSVUVfRk9SXzE9ZG9j
dGVzdC5ET05UX0FDQ0VQVF9UUlVFX0ZPUl8xLAotICAgICAgICAgICAgICAgIERPTlRfQUNDRVBU
X0JMQU5LTElORT1kb2N0ZXN0LkRPTlRfQUNDRVBUX0JMQU5LTElORSwKLSAgICAgICAgICAgICAg
ICBOT1JNQUxJWkVfV0hJVEVTUEFDRT1kb2N0ZXN0Lk5PUk1BTElaRV9XSElURVNQQUNFLAotICAg
ICAgICAgICAgICAgIEVMTElQU0lTPWRvY3Rlc3QuRUxMSVBTSVMsCi0gICAgICAgICAgICAgICAg
SUdOT1JFX0VYQ0VQVElPTl9ERVRBSUw9ZG9jdGVzdC5JR05PUkVfRVhDRVBUSU9OX0RFVEFJTCwK
LSAgICAgICAgICAgICAgICBDT01QQVJJU09OX0ZMQUdTPWRvY3Rlc3QuQ09NUEFSSVNPTl9GTEFH
UywKLSAgICAgICAgICAgICAgICBBTExPV19VTklDT0RFPV9nZXRfYWxsb3dfdW5pY29kZV9mbGFn
KCksCi0gICAgICAgICAgICAgICAgQUxMT1dfQllURVM9X2dldF9hbGxvd19ieXRlc19mbGFnKCks
Ci0gICAgICAgICAgICAgICAgKQotCi0KLWRlZiBnZXRfb3B0aW9uZmxhZ3MocGFyZW50KToKLSAg
ICBvcHRpb25mbGFnc19zdHIgPSBwYXJlbnQuY29uZmlnLmdldGluaSgiZG9jdGVzdF9vcHRpb25m
bGFncyIpCi0gICAgZmxhZ19sb29rdXBfdGFibGUgPSBfZ2V0X2ZsYWdfbG9va3VwKCkKLSAgICBm
bGFnX2FjYyA9IDAKLSAgICBmb3IgZmxhZyBpbiBvcHRpb25mbGFnc19zdHI6Ci0gICAgICAgIGZs
YWdfYWNjIHw9IGZsYWdfbG9va3VwX3RhYmxlW2ZsYWddCi0gICAgcmV0dXJuIGZsYWdfYWNjCi0K
LQotY2xhc3MgRG9jdGVzdFRleHRmaWxlKHB5dGVzdC5Nb2R1bGUpOgotICAgIG9iaiA9IE5vbmUK
LQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICBpbXBvcnQgZG9jdGVzdAotCi0gICAg
ICAgICMgaW5zcGlyZWQgYnkgZG9jdGVzdC50ZXN0ZmlsZTsgaWRlYWxseSB3ZSB3b3VsZCB1c2Ug
aXQgZGlyZWN0bHksCi0gICAgICAgICMgYnV0IGl0IGRvZXNuJ3Qgc3VwcG9ydCBwYXNzaW5nIGEg
Y3VzdG9tIGNoZWNrZXIKLSAgICAgICAgZW5jb2RpbmcgPSBzZWxmLmNvbmZpZy5nZXRpbmkoImRv
Y3Rlc3RfZW5jb2RpbmciKQotICAgICAgICB0ZXh0ID0gc2VsZi5mc3BhdGgucmVhZF90ZXh0KGVu
Y29kaW5nKQotICAgICAgICBmaWxlbmFtZSA9IHN0cihzZWxmLmZzcGF0aCkKLSAgICAgICAgbmFt
ZSA9IHNlbGYuZnNwYXRoLmJhc2VuYW1lCi0gICAgICAgIGdsb2JzID0geydfX25hbWVfXyc6ICdf
X21haW5fXyd9Ci0KLSAgICAgICAgb3B0aW9uZmxhZ3MgPSBnZXRfb3B0aW9uZmxhZ3Moc2VsZikK
LSAgICAgICAgcnVubmVyID0gZG9jdGVzdC5EZWJ1Z1J1bm5lcih2ZXJib3NlPTAsIG9wdGlvbmZs
YWdzPW9wdGlvbmZsYWdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNo
ZWNrZXI9X2dldF9jaGVja2VyKCkpCi0gICAgICAgIF9maXhfc3Bvb2ZfcHl0aG9uMihydW5uZXIs
IGVuY29kaW5nKQotCi0gICAgICAgIHBhcnNlciA9IGRvY3Rlc3QuRG9jVGVzdFBhcnNlcigpCi0g
ICAgICAgIHRlc3QgPSBwYXJzZXIuZ2V0X2RvY3Rlc3QodGV4dCwgZ2xvYnMsIG5hbWUsIGZpbGVu
YW1lLCAwKQotICAgICAgICBpZiB0ZXN0LmV4YW1wbGVzOgotICAgICAgICAgICAgeWllbGQgRG9j
dGVzdEl0ZW0odGVzdC5uYW1lLCBzZWxmLCBydW5uZXIsIHRlc3QpCi0KLQotZGVmIF9jaGVja19h
bGxfc2tpcHBlZCh0ZXN0KToKLSAgICAiIiJyYWlzZXMgcHl0ZXN0LnNraXAoKSBpZiBhbGwgZXhh
bXBsZXMgaW4gdGhlIGdpdmVuIERvY1Rlc3QgaGF2ZSB0aGUgU0tJUAotICAgIG9wdGlvbiBzZXQu
Ci0gICAgIiIiCi0gICAgaW1wb3J0IGRvY3Rlc3QKLSAgICBhbGxfc2tpcHBlZCA9IGFsbCh4Lm9w
dGlvbnMuZ2V0KGRvY3Rlc3QuU0tJUCwgRmFsc2UpIGZvciB4IGluIHRlc3QuZXhhbXBsZXMpCi0g
ICAgaWYgYWxsX3NraXBwZWQ6Ci0gICAgICAgIHB5dGVzdC5za2lwKCdhbGwgdGVzdHMgc2tpcHBl
ZCBieSArU0tJUCBvcHRpb24nKQotCi0KLWNsYXNzIERvY3Rlc3RNb2R1bGUocHl0ZXN0Lk1vZHVs
ZSk6Ci0gICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAgICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAg
ICAgIGlmIHNlbGYuZnNwYXRoLmJhc2VuYW1lID09ICJjb25mdGVzdC5weSI6Ci0gICAgICAgICAg
ICBtb2R1bGUgPSBzZWxmLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLl9pbXBvcnRjb25mdGVzdChzZWxm
LmZzcGF0aCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBtb2R1bGUgPSBzZWxmLmZzcGF0aC5weWltcG9ydCgpCi0gICAgICAgICAgICBleGNlcHQgSW1w
b3J0RXJyb3I6Ci0gICAgICAgICAgICAgICAgaWYgc2VsZi5jb25maWcuZ2V0dmFsdWUoJ2RvY3Rl
c3RfaWdub3JlX2ltcG9ydF9lcnJvcnMnKToKLSAgICAgICAgICAgICAgICAgICAgcHl0ZXN0LnNr
aXAoJ3VuYWJsZSB0byBpbXBvcnQgbW9kdWxlICVyJyAlIHNlbGYuZnNwYXRoKQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICMgdXNlcyBp
bnRlcm5hbCBkb2N0ZXN0IG1vZHVsZSBwYXJzaW5nIG1lY2hhbmlzbQotICAgICAgICBmaW5kZXIg
PSBkb2N0ZXN0LkRvY1Rlc3RGaW5kZXIoKQotICAgICAgICBvcHRpb25mbGFncyA9IGdldF9vcHRp
b25mbGFncyhzZWxmKQotICAgICAgICBydW5uZXIgPSBkb2N0ZXN0LkRlYnVnUnVubmVyKHZlcmJv
c2U9MCwgb3B0aW9uZmxhZ3M9b3B0aW9uZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgY2hlY2tlcj1fZ2V0X2NoZWNrZXIoKSkKLQotICAgICAgICBmb3IgdGVzdCBp
biBmaW5kZXIuZmluZChtb2R1bGUsIG1vZHVsZS5fX25hbWVfXyk6Ci0gICAgICAgICAgICBpZiB0
ZXN0LmV4YW1wbGVzOiAgIyBza2lwIGVtcHR5IGRvY3Rlc3RzCi0gICAgICAgICAgICAgICAgeWll
bGQgRG9jdGVzdEl0ZW0odGVzdC5uYW1lLCBzZWxmLCBydW5uZXIsIHRlc3QpCi0KLQotZGVmIF9z
ZXR1cF9maXh0dXJlcyhkb2N0ZXN0X2l0ZW0pOgotICAgICIiIgotICAgIFVzZWQgYnkgRG9jdGVz
dFRleHRmaWxlIGFuZCBEb2N0ZXN0SXRlbSB0byBzZXR1cCBmaXh0dXJlIGluZm9ybWF0aW9uLgot
ICAgICIiIgotICAgIGRlZiBmdW5jKCk6Ci0gICAgICAgIHBhc3MKLQotICAgIGRvY3Rlc3RfaXRl
bS5mdW5jYXJncyA9IHt9Ci0gICAgZm0gPSBkb2N0ZXN0X2l0ZW0uc2Vzc2lvbi5fZml4dHVyZW1h
bmFnZXIKLSAgICBkb2N0ZXN0X2l0ZW0uX2ZpeHR1cmVpbmZvID0gZm0uZ2V0Zml4dHVyZWluZm8o
bm9kZT1kb2N0ZXN0X2l0ZW0sIGZ1bmM9ZnVuYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xzPU5vbmUsIGZ1bmNhcmdzPUZhbHNlKQotICAgIGZp
eHR1cmVfcmVxdWVzdCA9IEZpeHR1cmVSZXF1ZXN0KGRvY3Rlc3RfaXRlbSkKLSAgICBmaXh0dXJl
X3JlcXVlc3QuX2ZpbGxmaXh0dXJlcygpCi0gICAgcmV0dXJuIGZpeHR1cmVfcmVxdWVzdAotCi0K
LWRlZiBfZ2V0X2NoZWNrZXIoKToKLSAgICAiIiIKLSAgICBSZXR1cm5zIGEgZG9jdGVzdC5PdXRw
dXRDaGVja2VyIHN1YmNsYXNzIHRoYXQgdGFrZXMgaW4gYWNjb3VudCB0aGUKLSAgICBBTExPV19V
TklDT0RFIG9wdGlvbiB0byBpZ25vcmUgdScnIHByZWZpeGVzIGluIHN0cmluZ3MgYW5kIEFMTE9X
X0JZVEVTCi0gICAgdG8gc3RyaXAgYicnIHByZWZpeGVzLgotICAgIFVzZWZ1bCB3aGVuIHRoZSBz
YW1lIGRvY3Rlc3Qgc2hvdWxkIHJ1biBpbiBQeXRob24gMiBhbmQgUHl0aG9uIDMuCi0KLSAgICBB
biBpbm5lciBjbGFzcyBpcyB1c2VkIHRvIGF2b2lkIGltcG9ydGluZyAiZG9jdGVzdCIgYXQgdGhl
IG1vZHVsZQotICAgIGxldmVsLgotICAgICIiIgotICAgIGlmIGhhc2F0dHIoX2dldF9jaGVja2Vy
LCAnTGl0ZXJhbHNPdXRwdXRDaGVja2VyJyk6Ci0gICAgICAgIHJldHVybiBfZ2V0X2NoZWNrZXIu
TGl0ZXJhbHNPdXRwdXRDaGVja2VyKCkKLQotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgaW1wb3J0
IHJlCi0KLSAgICBjbGFzcyBMaXRlcmFsc091dHB1dENoZWNrZXIoZG9jdGVzdC5PdXRwdXRDaGVj
a2VyKToKLSAgICAgICAgIiIiCi0gICAgICAgIENvcGllZCBmcm9tIGRvY3Rlc3Rfbm9zZV9wbHVn
aW4ucHkgZnJvbSB0aGUgbmx0ayBwcm9qZWN0OgotICAgICAgICAgICAgaHR0cHM6Ly9naXRodWIu
Y29tL25sdGsvbmx0awotCi0gICAgICAgIEZ1cnRoZXIgZXh0ZW5kZWQgdG8gYWxzbyBzdXBwb3J0
IGJ5dGUgbGl0ZXJhbHMuCi0gICAgICAgICIiIgotCi0gICAgICAgIF91bmljb2RlX2xpdGVyYWxf
cmUgPSByZS5jb21waWxlKHIiKFxXfF4pW3VVXShbclJdP1tcJ1wiXSkiLCByZS5VTklDT0RFKQot
ICAgICAgICBfYnl0ZXNfbGl0ZXJhbF9yZSA9IHJlLmNvbXBpbGUociIoXFd8XilbYkJdKFtyUl0/
W1wnXCJdKSIsIHJlLlVOSUNPREUpCi0KLSAgICAgICAgZGVmIGNoZWNrX291dHB1dChzZWxmLCB3
YW50LCBnb3QsIG9wdGlvbmZsYWdzKToKLSAgICAgICAgICAgIHJlcyA9IGRvY3Rlc3QuT3V0cHV0
Q2hlY2tlci5jaGVja19vdXRwdXQoc2VsZiwgd2FudCwgZ290LAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25mbGFncykKLSAgICAgICAg
ICAgIGlmIHJlczoKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgICAgICAgICBh
bGxvd191bmljb2RlID0gb3B0aW9uZmxhZ3MgJiBfZ2V0X2FsbG93X3VuaWNvZGVfZmxhZygpCi0g
ICAgICAgICAgICBhbGxvd19ieXRlcyA9IG9wdGlvbmZsYWdzICYgX2dldF9hbGxvd19ieXRlc19m
bGFnKCkKLSAgICAgICAgICAgIGlmIG5vdCBhbGxvd191bmljb2RlIGFuZCBub3QgYWxsb3dfYnl0
ZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAgICAgIGVsc2U6ICAj
IHByYWdtYTogbm8gY292ZXIKLSAgICAgICAgICAgICAgICBkZWYgcmVtb3ZlX3ByZWZpeGVzKHJl
Z2V4LCB0eHQpOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmUuc3ViKHJlZ2V4LCByJ1wx
XDInLCB0eHQpCi0KLSAgICAgICAgICAgICAgICBpZiBhbGxvd191bmljb2RlOgotICAgICAgICAg
ICAgICAgICAgICB3YW50ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX3VuaWNvZGVfbGl0ZXJhbF9y
ZSwgd2FudCkKLSAgICAgICAgICAgICAgICAgICAgZ290ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYu
X3VuaWNvZGVfbGl0ZXJhbF9yZSwgZ290KQotICAgICAgICAgICAgICAgIGlmIGFsbG93X2J5dGVz
OgotICAgICAgICAgICAgICAgICAgICB3YW50ID0gcmVtb3ZlX3ByZWZpeGVzKHNlbGYuX2J5dGVz
X2xpdGVyYWxfcmUsIHdhbnQpCi0gICAgICAgICAgICAgICAgICAgIGdvdCA9IHJlbW92ZV9wcmVm
aXhlcyhzZWxmLl9ieXRlc19saXRlcmFsX3JlLCBnb3QpCi0gICAgICAgICAgICAgICAgcmVzID0g
ZG9jdGVzdC5PdXRwdXRDaGVja2VyLmNoZWNrX291dHB1dChzZWxmLCB3YW50LCBnb3QsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25mbGFncykKLSAgICAgICAgICAgICAgICByZXR1cm4gcmVzCi0KLSAgICBfZ2V0X2NoZWNrZXIu
TGl0ZXJhbHNPdXRwdXRDaGVja2VyID0gTGl0ZXJhbHNPdXRwdXRDaGVja2VyCi0gICAgcmV0dXJu
IF9nZXRfY2hlY2tlci5MaXRlcmFsc091dHB1dENoZWNrZXIoKQotCi0KLWRlZiBfZ2V0X2FsbG93
X3VuaWNvZGVfZmxhZygpOgotICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQgcmV0dXJucyB0aGUg
QUxMT1dfVU5JQ09ERSBmbGFnLgotICAgICIiIgotICAgIGltcG9ydCBkb2N0ZXN0Ci0gICAgcmV0
dXJuIGRvY3Rlc3QucmVnaXN0ZXJfb3B0aW9uZmxhZygnQUxMT1dfVU5JQ09ERScpCi0KLQotZGVm
IF9nZXRfYWxsb3dfYnl0ZXNfZmxhZygpOgotICAgICIiIgotICAgIFJlZ2lzdGVycyBhbmQgcmV0
dXJucyB0aGUgQUxMT1dfQllURVMgZmxhZy4KLSAgICAiIiIKLSAgICBpbXBvcnQgZG9jdGVzdAot
ICAgIHJldHVybiBkb2N0ZXN0LnJlZ2lzdGVyX29wdGlvbmZsYWcoJ0FMTE9XX0JZVEVTJykKLQot
Ci1kZWYgX2dldF9yZXBvcnRfY2hvaWNlKGtleSk6Ci0gICAgIiIiCi0gICAgVGhpcyBmdW5jdGlv
biByZXR1cm5zIHRoZSBhY3R1YWwgYGRvY3Rlc3RgIG1vZHVsZSBmbGFnIHZhbHVlLCB3ZSB3YW50
IHRvIGRvIGl0IGFzIGxhdGUgYXMgcG9zc2libGUgdG8gYXZvaWQKLSAgICBpbXBvcnRpbmcgYGRv
Y3Rlc3RgIGFuZCBhbGwgaXRzIGRlcGVuZGVuY2llcyB3aGVuIHBhcnNpbmcgb3B0aW9ucywgYXMg
aXQgYWRkcyBvdmVyaGVhZCBhbmQgYnJlYWtzIHRlc3RzLgotICAgICIiIgotICAgIGltcG9ydCBk
b2N0ZXN0Ci0KLSAgICByZXR1cm4gewotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0VfVURJ
RkY6IGRvY3Rlc3QuUkVQT1JUX1VESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9JQ0Vf
Q0RJRkY6IGRvY3Rlc3QuUkVQT1JUX0NESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9DSE9J
Q0VfTkRJRkY6IGRvY3Rlc3QuUkVQT1JUX05ESUZGLAotICAgICAgICBET0NURVNUX1JFUE9SVF9D
SE9JQ0VfT05MWV9GSVJTVF9GQUlMVVJFOiBkb2N0ZXN0LlJFUE9SVF9PTkxZX0ZJUlNUX0ZBSUxV
UkUsCi0gICAgICAgIERPQ1RFU1RfUkVQT1JUX0NIT0lDRV9OT05FOiAwLAotICAgIH1ba2V5XQot
Ci0KLWRlZiBfZml4X3Nwb29mX3B5dGhvbjIocnVubmVyLCBlbmNvZGluZyk6Ci0gICAgIiIiCi0g
ICAgSW5zdGFsbHMgYSAiU3Bvb2ZPdXQiIGludG8gdGhlIGdpdmVuIERlYnVnUnVubmVyIHNvIGl0
IHByb3Blcmx5IGRlYWxzIHdpdGggdW5pY29kZSBvdXRwdXQuIFRoaXMKLSAgICBzaG91bGQgcGF0
Y2ggb25seSBkb2N0ZXN0cyBmb3IgdGV4dCBmaWxlcyBiZWNhdXNlIHRoZXkgZG9uJ3QgaGF2ZSBh
IHdheSB0byBkZWNsYXJlIHRoZWlyCi0gICAgZW5jb2RpbmcuIERvY3Rlc3RzIGluIGRvY3N0cmlu
Z3MgZnJvbSBQeXRob24gbW9kdWxlcyBkb24ndCBoYXZlIHRoZSBzYW1lIHByb2JsZW0gZ2l2ZW4g
dGhhdAotICAgIFB5dGhvbiBhbHJlYWR5IGRlY29kZWQgdGhlIHN0cmluZ3MuCi0KLSAgICBUaGlz
IGZpeGVzIHRoZSBwcm9ibGVtIHJlbGF0ZWQgaW4gaXNzdWUgIzI0MzQuCi0gICAgIiIiCi0gICAg
ZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgX1BZMgotICAgIGlmIG5vdCBfUFkyOgotICAgICAg
ICByZXR1cm4KLQotICAgIGZyb20gZG9jdGVzdCBpbXBvcnQgX1Nwb29mT3V0Ci0KLSAgICBjbGFz
cyBVbmljb2RlU3Bvb2YoX1Nwb29mT3V0KToKLQotICAgICAgICBkZWYgZ2V0dmFsdWUoc2VsZik6
Ci0gICAgICAgICAgICByZXN1bHQgPSBfU3Bvb2ZPdXQuZ2V0dmFsdWUoc2VsZikKLSAgICAgICAg
ICAgIGlmIGVuY29kaW5nOgotICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5kZWNvZGUo
ZW5jb2RpbmcpCi0gICAgICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICBydW5uZXIuX2Zha2Vv
dXQgPSBVbmljb2RlU3Bvb2YoKQotCi0KLUBweXRlc3QuZml4dHVyZShzY29wZT0nc2Vzc2lvbicp
Ci1kZWYgZG9jdGVzdF9uYW1lc3BhY2UoKToKLSAgICAiIiIKLSAgICBJbmplY3QgbmFtZXMgaW50
byB0aGUgZG9jdGVzdCBuYW1lc3BhY2UuCi0gICAgIiIiCi0gICAgcmV0dXJuIGRpY3QoKQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9maXh0dXJlcy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19w
eXRlc3QvZml4dHVyZXMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwOWZmYWRk
YmE3M2ZmODRiMjM5ZDRmNGFhMjllOTZkMDU2YzVkOGQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9maXh0dXJlcy5weQor
KysgL2Rldi9udWxsCkBAIC0xLDExNDcgKzAsMCBAQAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBh
YnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgZnVuY3Rv
b2xzCi1pbXBvcnQgaW5zcGVjdAotaW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGNv
bGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAotCi1pbXBvcnQgYXR0cgotaW1wb3J0IHB5Ci1m
cm9tIHB5Ll9jb2RlLmNvZGUgaW1wb3J0IEZvcm1hdHRlZEV4Y2luZm8KLQotaW1wb3J0IF9weXRl
c3QKLWZyb20gX3B5dGVzdCBpbXBvcnQgbm9kZXMKLWZyb20gX3B5dGVzdC5fY29kZS5jb2RlIGlt
cG9ydCBUZXJtaW5hbFJlcHIKLWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0ICgKLSAgICBOT1RT
RVQsIGV4Y19jbGVhciwgX2Zvcm1hdF9hcmdzLAotICAgIGdldGZzbGluZW5vLCBnZXRfcmVhbF9m
dW5jLAotICAgIGlzX2dlbmVyYXRvciwgaXNjbGFzcywgZ2V0aW1mdW5jLAotICAgIGdldGxvY2F0
aW9uLCBnZXRmdW5jYXJnbmFtZXMsCi0gICAgc2FmZV9nZXRhdHRyLAotICAgIEZ1bmNhcmduYW1l
c0NvbXBhdEF0dHIsCi0pCi1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwsIFRFU1Rf
T1VUQ09NRQotCi0KLWRlZiBweXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb24pOgotICAgIGltcG9y
dCBfcHl0ZXN0LnB5dGhvbgotCi0gICAgc2NvcGVuYW1lMmNsYXNzLnVwZGF0ZSh7Ci0gICAgICAg
ICdjbGFzcyc6IF9weXRlc3QucHl0aG9uLkNsYXNzLAotICAgICAgICAnbW9kdWxlJzogX3B5dGVz
dC5weXRob24uTW9kdWxlLAotICAgICAgICAnZnVuY3Rpb24nOiBfcHl0ZXN0Lm1haW4uSXRlbSwK
LSAgICAgICAgJ3Nlc3Npb24nOiBfcHl0ZXN0Lm1haW4uU2Vzc2lvbiwKLSAgICB9KQotICAgIHNl
c3Npb24uX2ZpeHR1cmVtYW5hZ2VyID0gRml4dHVyZU1hbmFnZXIoc2Vzc2lvbikKLQotCi1zY29w
ZW5hbWUyY2xhc3MgPSB7fQotCi0KLXNjb3BlMnByb3BzID0gZGljdChzZXNzaW9uPSgpKQotc2Nv
cGUycHJvcHNbIm1vZHVsZSJdID0gKCJmc3BhdGgiLCAibW9kdWxlIikKLXNjb3BlMnByb3BzWyJj
bGFzcyJdID0gc2NvcGUycHJvcHNbIm1vZHVsZSJdICsgKCJjbHMiLCkKLXNjb3BlMnByb3BzWyJp
bnN0YW5jZSJdID0gc2NvcGUycHJvcHNbImNsYXNzIl0gKyAoImluc3RhbmNlIiwgKQotc2NvcGUy
cHJvcHNbImZ1bmN0aW9uIl0gPSBzY29wZTJwcm9wc1siaW5zdGFuY2UiXSArICgiZnVuY3Rpb24i
LCAia2V5d29yZHMiKQotCi0KLWRlZiBzY29wZXByb3BlcnR5KG5hbWU9Tm9uZSwgZG9jPU5vbmUp
OgotICAgIGRlZiBkZWNvcmF0ZXNjb3BlKGZ1bmMpOgotICAgICAgICBzY29wZW5hbWUgPSBuYW1l
IG9yIGZ1bmMuX19uYW1lX18KLQotICAgICAgICBkZWYgcHJvdmlkZShzZWxmKToKLSAgICAgICAg
ICAgIGlmIGZ1bmMuX19uYW1lX18gaW4gc2NvcGUycHJvcHNbc2VsZi5zY29wZV06Ci0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZ1bmMoc2VsZikKLSAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVy
cm9yKCIlcyBub3QgYXZhaWxhYmxlIGluICVzLXNjb3BlZCBjb250ZXh0IiAlICgKLSAgICAgICAg
ICAgICAgICBzY29wZW5hbWUsIHNlbGYuc2NvcGUpKQotCi0gICAgICAgIHJldHVybiBwcm9wZXJ0
eShwcm92aWRlLCBOb25lLCBOb25lLCBmdW5jLl9fZG9jX18pCi0gICAgcmV0dXJuIGRlY29yYXRl
c2NvcGUKLQotCi1kZWYgZ2V0X3Njb3BlX25vZGUobm9kZSwgc2NvcGUpOgotICAgIGNscyA9IHNj
b3BlbmFtZTJjbGFzcy5nZXQoc2NvcGUpCi0gICAgaWYgY2xzIGlzIE5vbmU6Ci0gICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoInVua25vd24gc2NvcGUiKQotICAgIHJldHVybiBub2RlLmdldHBhcmVu
dChjbHMpCi0KLQotZGVmIGFkZF9mdW5jYXJnX3BzZXVkb19maXh0dXJlX2RlZihjb2xsZWN0b3Is
IG1ldGFmdW5jLCBmaXh0dXJlbWFuYWdlcik6Ci0gICAgIyB0aGlzIGZ1bmN0aW9uIHdpbGwgdHJh
bnNmb3JtIGFsbCBjb2xsZWN0ZWQgY2FsbHMgdG8gYSBmdW5jdGlvbnMKLSAgICAjIGlmIHRoZXkg
dXNlIGRpcmVjdCBmdW5jYXJncyAoaS5lLiBkaXJlY3QgcGFyYW1ldHJpemF0aW9uKQotICAgICMg
YmVjYXVzZSB3ZSB3YW50IGxhdGVyIHRlc3QgZXhlY3V0aW9uIHRvIGJlIGFibGUgdG8gcmVseSBv
bgotICAgICMgYW4gZXhpc3RpbmcgRml4dHVyZURlZiBzdHJ1Y3R1cmUgZm9yIGFsbCBhcmd1bWVu
dHMuCi0gICAgIyBYWFggd2UgY2FuIHByb2JhYmx5IGF2b2lkIHRoaXMgYWxnb3JpdGhtICBpZiB3
ZSBtb2RpZnkgQ2FsbFNwZWMyCi0gICAgIyB0byBkaXJlY3RseSBjYXJlIGZvciBjcmVhdGluZyB0
aGUgZml4dHVyZWRlZnMgd2l0aGluIGl0cyBtZXRob2RzLgotICAgIGlmIG5vdCBtZXRhZnVuYy5f
Y2FsbHNbMF0uZnVuY2FyZ3M6Ci0gICAgICAgIHJldHVybiAgIyB0aGlzIGZ1bmN0aW9uIGNhbGwg
ZG9lcyBub3QgaGF2ZSBkaXJlY3QgcGFyYW1ldHJpemF0aW9uCi0gICAgIyBjb2xsZWN0IGZ1bmNh
cmdzIG9mIGFsbCBjYWxsc3BlY3MgaW50byBhIGxpc3Qgb2YgdmFsdWVzCi0gICAgYXJnMnBhcmFt
cyA9IHt9Ci0gICAgYXJnMnNjb3BlID0ge30KLSAgICBmb3IgY2FsbHNwZWMgaW4gbWV0YWZ1bmMu
X2NhbGxzOgotICAgICAgICBmb3IgYXJnbmFtZSwgYXJndmFsdWUgaW4gY2FsbHNwZWMuZnVuY2Fy
Z3MuaXRlbXMoKToKLSAgICAgICAgICAgIGFzc2VydCBhcmduYW1lIG5vdCBpbiBjYWxsc3BlYy5w
YXJhbXMKLSAgICAgICAgICAgIGNhbGxzcGVjLnBhcmFtc1thcmduYW1lXSA9IGFyZ3ZhbHVlCi0g
ICAgICAgICAgICBhcmcycGFyYW1zX2xpc3QgPSBhcmcycGFyYW1zLnNldGRlZmF1bHQoYXJnbmFt
ZSwgW10pCi0gICAgICAgICAgICBjYWxsc3BlYy5pbmRpY2VzW2FyZ25hbWVdID0gbGVuKGFyZzJw
YXJhbXNfbGlzdCkKLSAgICAgICAgICAgIGFyZzJwYXJhbXNfbGlzdC5hcHBlbmQoYXJndmFsdWUp
Ci0gICAgICAgICAgICBpZiBhcmduYW1lIG5vdCBpbiBhcmcyc2NvcGU6Ci0gICAgICAgICAgICAg
ICAgc2NvcGVudW0gPSBjYWxsc3BlYy5fYXJnMnNjb3BlbnVtLmdldChhcmduYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NvcGVudW1f
ZnVuY3Rpb24pCi0gICAgICAgICAgICAgICAgYXJnMnNjb3BlW2FyZ25hbWVdID0gc2NvcGVzW3Nj
b3BlbnVtXQotICAgICAgICBjYWxsc3BlYy5mdW5jYXJncy5jbGVhcigpCi0KLSAgICAjIHJlZ2lz
dGVyIGFydGlmaWNpYWwgRml4dHVyZURlZidzIHNvIHRoYXQgbGF0ZXIgYXQgdGVzdCBleGVjdXRp
b24KLSAgICAjIHRpbWUgd2UgY2FuIHJlbHkgb24gYSBwcm9wZXIgRml4dHVyZURlZiB0byBleGlz
dCBmb3IgZml4dHVyZSBzZXR1cC4KLSAgICBhcmcyZml4dHVyZWRlZnMgPSBtZXRhZnVuYy5fYXJn
MmZpeHR1cmVkZWZzCi0gICAgZm9yIGFyZ25hbWUsIHZhbHVlbGlzdCBpbiBhcmcycGFyYW1zLml0
ZW1zKCk6Ci0gICAgICAgICMgaWYgd2UgaGF2ZSBhIHNjb3BlIHRoYXQgaXMgaGlnaGVyIHRoYW4g
ZnVuY3Rpb24gd2UgbmVlZAotICAgICAgICAjIHRvIG1ha2Ugc3VyZSB3ZSBvbmx5IGV2ZXIgY3Jl
YXRlIGFuIGFjY29yZGluZyBmaXh0dXJlZGVmIG9uCi0gICAgICAgICMgYSBwZXItc2NvcGUgYmFz
aXMuIFdlIHRodXMgc3RvcmUgYW5kIGNhY2hlIHRoZSBmaXh0dXJlZGVmIG9uIHRoZQotICAgICAg
ICAjIG5vZGUgcmVsYXRlZCB0byB0aGUgc2NvcGUuCi0gICAgICAgIHNjb3BlID0gYXJnMnNjb3Bl
W2FyZ25hbWVdCi0gICAgICAgIG5vZGUgPSBOb25lCi0gICAgICAgIGlmIHNjb3BlICE9ICJmdW5j
dGlvbiI6Ci0gICAgICAgICAgICBub2RlID0gZ2V0X3Njb3BlX25vZGUoY29sbGVjdG9yLCBzY29w
ZSkKLSAgICAgICAgICAgIGlmIG5vZGUgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBhc3NlcnQg
c2NvcGUgPT0gImNsYXNzIiBhbmQgaXNpbnN0YW5jZShjb2xsZWN0b3IsIF9weXRlc3QucHl0aG9u
Lk1vZHVsZSkKLSAgICAgICAgICAgICAgICAjIHVzZSBtb2R1bGUtbGV2ZWwgY29sbGVjdG9yIGZv
ciBjbGFzcy1zY29wZSAoZm9yIG5vdykKLSAgICAgICAgICAgICAgICBub2RlID0gY29sbGVjdG9y
Ci0gICAgICAgIGlmIG5vZGUgYW5kIGFyZ25hbWUgaW4gbm9kZS5fbmFtZTJwc2V1ZG9maXh0dXJl
ZGVmOgotICAgICAgICAgICAgYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdID0gW25vZGUuX25hbWUy
cHNldWRvZml4dHVyZWRlZlthcmduYW1lXV0KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZp
eHR1cmVkZWYgPSBGaXh0dXJlRGVmKGZpeHR1cmVtYW5hZ2VyLCAnJywgYXJnbmFtZSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF9kaXJlY3RfcGFyYW1fZml4dHVyZV9m
dW5jLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnMnNjb3BlW2FyZ25h
bWVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVsaXN0LCBGYWxz
ZSwgRmFsc2UpCi0gICAgICAgICAgICBhcmcyZml4dHVyZWRlZnNbYXJnbmFtZV0gPSBbZml4dHVy
ZWRlZl0KLSAgICAgICAgICAgIGlmIG5vZGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAg
bm9kZS5fbmFtZTJwc2V1ZG9maXh0dXJlZGVmW2FyZ25hbWVdID0gZml4dHVyZWRlZgotCi0KLWRl
ZiBnZXRmaXh0dXJlbWFya2VyKG9iaik6Ci0gICAgIiIiIHJldHVybiBmaXh0dXJlbWFya2VyIG9y
IE5vbmUgaWYgaXQgZG9lc24ndCBleGlzdCBvciByYWlzZWQKLSAgICBleGNlcHRpb25zLiIiIgot
ICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGdldGF0dHIob2JqLCAiX3B5dGVzdGZpeHR1cmVmdW5j
dGlvbiIsIE5vbmUpCi0gICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgIyBzb21lIG9i
amVjdHMgcmFpc2UgZXJyb3JzIGxpa2UgcmVxdWVzdCAoZnJvbSBmbGFzayBpbXBvcnQgcmVxdWVz
dCkKLSAgICAgICAgIyB3ZSBkb24ndCBleHBlY3QgdGhlbSB0byBiZSBmaXh0dXJlIGZ1bmN0aW9u
cwotICAgICAgICByZXR1cm4gTm9uZQotCi0KLWRlZiBnZXRfcGFyYW1ldHJpemVkX2ZpeHR1cmVf
a2V5cyhpdGVtLCBzY29wZW51bSk6Ci0gICAgIiIiIHJldHVybiBsaXN0IG9mIGtleXMgZm9yIGFs
bCBwYXJhbWV0cml6ZWQgYXJndW1lbnRzIHdoaWNoIG1hdGNoCi0gICAgdGhlIHNwZWNpZmllZCBz
Y29wZS4gIiIiCi0gICAgYXNzZXJ0IHNjb3BlbnVtIDwgc2NvcGVudW1fZnVuY3Rpb24gICMgZnVu
Y3Rpb24KLSAgICB0cnk6Ci0gICAgICAgIGNzID0gaXRlbS5jYWxsc3BlYwotICAgIGV4Y2VwdCBB
dHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcGFzcwotICAgIGVsc2U6Ci0gICAgICAgICMgY3MuaW5k
aWNlcy5pdGVtcygpIGlzIHJhbmRvbSBvcmRlciBvZiBhcmduYW1lcy4gIE5lZWQgdG8KLSAgICAg
ICAgIyBzb3J0IHRoaXMgc28gdGhhdCBkaWZmZXJlbnQgY2FsbHMgdG8KLSAgICAgICAgIyBnZXRf
cGFyYW1ldHJpemVkX2ZpeHR1cmVfa2V5cyB3aWxsIGJlIGRldGVybWluaXN0aWMuCi0gICAgICAg
IGZvciBhcmduYW1lLCBwYXJhbV9pbmRleCBpbiBzb3J0ZWQoY3MuaW5kaWNlcy5pdGVtcygpKToK
LSAgICAgICAgICAgIGlmIGNzLl9hcmcyc2NvcGVudW1bYXJnbmFtZV0gIT0gc2NvcGVudW06Ci0g
ICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIHNjb3BlbnVtID09IDA6ICAg
ICMgc2Vzc2lvbgotICAgICAgICAgICAgICAgIGtleSA9IChhcmduYW1lLCBwYXJhbV9pbmRleCkK
LSAgICAgICAgICAgIGVsaWYgc2NvcGVudW0gPT0gMTogICMgbW9kdWxlCi0gICAgICAgICAgICAg
ICAga2V5ID0gKGFyZ25hbWUsIHBhcmFtX2luZGV4LCBpdGVtLmZzcGF0aCkKLSAgICAgICAgICAg
IGVsaWYgc2NvcGVudW0gPT0gMjogICMgY2xhc3MKLSAgICAgICAgICAgICAgICBrZXkgPSAoYXJn
bmFtZSwgcGFyYW1faW5kZXgsIGl0ZW0uZnNwYXRoLCBpdGVtLmNscykKLSAgICAgICAgICAgIHlp
ZWxkIGtleQotCi0KLSMgYWxnb3JpdGhtIGZvciBzb3J0aW5nIG9uIGEgcGVyLXBhcmFtZXRyaXpl
ZCByZXNvdXJjZSBzZXR1cCBiYXNpcwotIyBpdCBpcyBjYWxsZWQgZm9yIHNjb3BlbnVtPT0wIChz
ZXNzaW9uKSBmaXJzdCBhbmQgcGVyZm9ybXMgc29ydGluZwotIyBkb3duIHRvIHRoZSBsb3dlciBz
Y29wZXMgc3VjaCBhcyB0byBtaW5pbWl6ZSBudW1iZXIgb2YgImhpZ2ggc2NvcGUiCi0jIHNldHVw
cyBhbmQgdGVhcmRvd25zCi0KLWRlZiByZW9yZGVyX2l0ZW1zKGl0ZW1zKToKLSAgICBhcmdrZXlz
X2NhY2hlID0ge30KLSAgICBmb3Igc2NvcGVudW0gaW4gcmFuZ2UoMCwgc2NvcGVudW1fZnVuY3Rp
b24pOgotICAgICAgICBhcmdrZXlzX2NhY2hlW3Njb3BlbnVtXSA9IGQgPSB7fQotICAgICAgICBm
b3IgaXRlbSBpbiBpdGVtczoKLSAgICAgICAgICAgIGtleXMgPSBPcmRlcmVkRGljdC5mcm9ta2V5
cyhnZXRfcGFyYW1ldHJpemVkX2ZpeHR1cmVfa2V5cyhpdGVtLCBzY29wZW51bSkpCi0gICAgICAg
ICAgICBpZiBrZXlzOgotICAgICAgICAgICAgICAgIGRbaXRlbV0gPSBrZXlzCi0gICAgcmV0dXJu
IHJlb3JkZXJfaXRlbXNfYXRzY29wZShpdGVtcywgc2V0KCksIGFyZ2tleXNfY2FjaGUsIDApCi0K
LQotZGVmIHJlb3JkZXJfaXRlbXNfYXRzY29wZShpdGVtcywgaWdub3JlLCBhcmdrZXlzX2NhY2hl
LCBzY29wZW51bSk6Ci0gICAgaWYgc2NvcGVudW0gPj0gc2NvcGVudW1fZnVuY3Rpb24gb3IgbGVu
KGl0ZW1zKSA8IDM6Ci0gICAgICAgIHJldHVybiBpdGVtcwotICAgIGl0ZW1zX2RvbmUgPSBbXQot
ICAgIHdoaWxlIDE6Ci0gICAgICAgIGl0ZW1zX2JlZm9yZSwgaXRlbXNfc2FtZSwgaXRlbXNfb3Ro
ZXIsIG5ld2lnbm9yZSA9IFwKLSAgICAgICAgICAgIHNsaWNlX2l0ZW1zKGl0ZW1zLCBpZ25vcmUs
IGFyZ2tleXNfY2FjaGVbc2NvcGVudW1dKQotICAgICAgICBpdGVtc19iZWZvcmUgPSByZW9yZGVy
X2l0ZW1zX2F0c2NvcGUoCi0gICAgICAgICAgICBpdGVtc19iZWZvcmUsIGlnbm9yZSwgYXJna2V5
c19jYWNoZSwgc2NvcGVudW0gKyAxKQotICAgICAgICBpZiBpdGVtc19zYW1lIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAjIG5vdGhpbmcgdG8gcmVvcmRlciBpbiB0aGlzIHNjb3BlCi0gICAgICAgICAg
ICBhc3NlcnQgaXRlbXNfb3RoZXIgaXMgTm9uZQotICAgICAgICAgICAgcmV0dXJuIGl0ZW1zX2Rv
bmUgKyBpdGVtc19iZWZvcmUKLSAgICAgICAgaXRlbXNfZG9uZS5leHRlbmQoaXRlbXNfYmVmb3Jl
KQotICAgICAgICBpdGVtcyA9IGl0ZW1zX3NhbWUgKyBpdGVtc19vdGhlcgotICAgICAgICBpZ25v
cmUgPSBuZXdpZ25vcmUKLQotCi1kZWYgc2xpY2VfaXRlbXMoaXRlbXMsIGlnbm9yZSwgc2NvcGVk
X2FyZ2tleXNfY2FjaGUpOgotICAgICMgd2UgcGljayB0aGUgZmlyc3QgaXRlbSB3aGljaCB1c2Vz
IGEgZml4dHVyZSBpbnN0YW5jZSBpbiB0aGUKLSAgICAjIHJlcXVlc3RlZCBzY29wZSBhbmQgd2hp
Y2ggd2UgaGF2ZW4ndCBzZWVuIHlldC4gIFdlIHNsaWNlIHRoZSBpbnB1dAotICAgICMgaXRlbXMg
bGlzdCBpbnRvIGEgbGlzdCBvZiBpdGVtc19ub21hdGNoLCBpdGVtc19zYW1lIGFuZAotICAgICMg
aXRlbXNfb3RoZXIKLSAgICBpZiBzY29wZWRfYXJna2V5c19jYWNoZTogICMgZG8gd2UgbmVlZCB0
byBkbyB3b3JrIGF0IGFsbD8KLSAgICAgICAgaXQgPSBpdGVyKGl0ZW1zKQotICAgICAgICAjIGZp
cnN0IGZpbmQgYSBzbGljaW5nIGtleQotICAgICAgICBmb3IgaSwgaXRlbSBpbiBlbnVtZXJhdGUo
aXQpOgotICAgICAgICAgICAgYXJna2V5cyA9IHNjb3BlZF9hcmdrZXlzX2NhY2hlLmdldChpdGVt
KQotICAgICAgICAgICAgaWYgYXJna2V5cyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICBu
ZXdhcmdrZXlzID0gT3JkZXJlZERpY3QuZnJvbWtleXMoayBmb3IgayBpbiBhcmdrZXlzIGlmIGsg
bm90IGluIGlnbm9yZSkKLSAgICAgICAgICAgICAgICBpZiBuZXdhcmdrZXlzOiAgIyBmb3VuZCBh
IHNsaWNpbmcga2V5Ci0gICAgICAgICAgICAgICAgICAgIHNsaWNpbmdfYXJna2V5LCBfID0gbmV3
YXJna2V5cy5wb3BpdGVtKCkKLSAgICAgICAgICAgICAgICAgICAgaXRlbXNfYmVmb3JlID0gaXRl
bXNbOmldCi0gICAgICAgICAgICAgICAgICAgIGl0ZW1zX3NhbWUgPSBbaXRlbV0KLSAgICAgICAg
ICAgICAgICAgICAgaXRlbXNfb3RoZXIgPSBbXQotICAgICAgICAgICAgICAgICAgICAjIG5vdyBz
bGljZSB0aGUgcmVtYWluZGVyIG9mIHRoZSBsaXN0Ci0gICAgICAgICAgICAgICAgICAgIGZvciBp
dGVtIGluIGl0OgotICAgICAgICAgICAgICAgICAgICAgICAgYXJna2V5cyA9IHNjb3BlZF9hcmdr
ZXlzX2NhY2hlLmdldChpdGVtKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXJna2V5cyBh
bmQgc2xpY2luZ19hcmdrZXkgaW4gYXJna2V5cyBhbmQgXAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzbGljaW5nX2FyZ2tleSBub3QgaW4gaWdub3JlOgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGl0ZW1zX3NhbWUuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZW1zX290aGVyLmFwcGVu
ZChpdGVtKQotICAgICAgICAgICAgICAgICAgICBuZXdpZ25vcmUgPSBpZ25vcmUuY29weSgpCi0g
ICAgICAgICAgICAgICAgICAgIG5ld2lnbm9yZS5hZGQoc2xpY2luZ19hcmdrZXkpCi0gICAgICAg
ICAgICAgICAgICAgIHJldHVybiAoaXRlbXNfYmVmb3JlLCBpdGVtc19zYW1lLCBpdGVtc19vdGhl
ciwgbmV3aWdub3JlKQotICAgIHJldHVybiBpdGVtcywgTm9uZSwgTm9uZSwgTm9uZQotCi0KLWRl
ZiBmaWxsZml4dHVyZXMoZnVuY3Rpb24pOgotICAgICIiIiBmaWxsIG1pc3NpbmcgZnVuY2FyZ3Mg
Zm9yIGEgdGVzdCBmdW5jdGlvbi4gIiIiCi0gICAgdHJ5OgotICAgICAgICByZXF1ZXN0ID0gZnVu
Y3Rpb24uX3JlcXVlc3QKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICMgWFhY
IHRoaXMgc3BlY2lhbCBjb2RlIHBhdGggaXMgb25seSBleHBlY3RlZCB0byBleGVjdXRlCi0gICAg
ICAgICMgd2l0aCB0aGUgb2Vqc2tpdCBwbHVnaW4uICBJdCB1c2VzIGNsYXNzZXMgd2l0aCBmdW5j
YXJncwotICAgICAgICAjIGFuZCB3ZSB0aHVzIGhhdmUgdG8gd29yayBhIGJpdCB0byBhbGxvdyB0
aGlzLgotICAgICAgICBmbSA9IGZ1bmN0aW9uLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0gICAg
ICAgIGZpID0gZm0uZ2V0Zml4dHVyZWluZm8oZnVuY3Rpb24ucGFyZW50LCBmdW5jdGlvbi5vYmos
IE5vbmUpCi0gICAgICAgIGZ1bmN0aW9uLl9maXh0dXJlaW5mbyA9IGZpCi0gICAgICAgIHJlcXVl
c3QgPSBmdW5jdGlvbi5fcmVxdWVzdCA9IEZpeHR1cmVSZXF1ZXN0KGZ1bmN0aW9uKQotICAgICAg
ICByZXF1ZXN0Ll9maWxsZml4dHVyZXMoKQotICAgICAgICAjIHBydW5lIG91dCBmdW5jYXJncyBm
b3IganN0ZXN0cwotICAgICAgICBuZXdmdW5jYXJncyA9IHt9Ci0gICAgICAgIGZvciBuYW1lIGlu
IGZpLmFyZ25hbWVzOgotICAgICAgICAgICAgbmV3ZnVuY2FyZ3NbbmFtZV0gPSBmdW5jdGlvbi5m
dW5jYXJnc1tuYW1lXQotICAgICAgICBmdW5jdGlvbi5mdW5jYXJncyA9IG5ld2Z1bmNhcmdzCi0g
ICAgZWxzZToKLSAgICAgICAgcmVxdWVzdC5fZmlsbGZpeHR1cmVzKCkKLQotCi1kZWYgZ2V0X2Rp
cmVjdF9wYXJhbV9maXh0dXJlX2Z1bmMocmVxdWVzdCk6Ci0gICAgcmV0dXJuIHJlcXVlc3QucGFy
YW0KLQotCi1jbGFzcyBGdW5jRml4dHVyZUluZm86Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGFy
Z25hbWVzLCBuYW1lc19jbG9zdXJlLCBuYW1lMmZpeHR1cmVkZWZzKToKLSAgICAgICAgc2VsZi5h
cmduYW1lcyA9IGFyZ25hbWVzCi0gICAgICAgIHNlbGYubmFtZXNfY2xvc3VyZSA9IG5hbWVzX2Ns
b3N1cmUKLSAgICAgICAgc2VsZi5uYW1lMmZpeHR1cmVkZWZzID0gbmFtZTJmaXh0dXJlZGVmcwot
Ci0KLWNsYXNzIEZpeHR1cmVSZXF1ZXN0KEZ1bmNhcmduYW1lc0NvbXBhdEF0dHIpOgotICAgICIi
IiBBIHJlcXVlc3QgZm9yIGEgZml4dHVyZSBmcm9tIGEgdGVzdCBvciBmaXh0dXJlIGZ1bmN0aW9u
LgotCi0gICAgQSByZXF1ZXN0IG9iamVjdCBnaXZlcyBhY2Nlc3MgdG8gdGhlIHJlcXVlc3Rpbmcg
dGVzdCBjb250ZXh0Ci0gICAgYW5kIGhhcyBhbiBvcHRpb25hbCBgYHBhcmFtYGAgYXR0cmlidXRl
IGluIGNhc2UKLSAgICB0aGUgZml4dHVyZSBpcyBwYXJhbWV0cml6ZWQgaW5kaXJlY3RseS4KLSAg
ICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBweWZ1bmNpdGVtKToKLSAgICAgICAgc2Vs
Zi5fcHlmdW5jaXRlbSA9IHB5ZnVuY2l0ZW0KLSAgICAgICAgIzogZml4dHVyZSBmb3Igd2hpY2gg
dGhpcyByZXF1ZXN0IGlzIGJlaW5nIHBlcmZvcm1lZAotICAgICAgICBzZWxmLmZpeHR1cmVuYW1l
ID0gTm9uZQotICAgICAgICAjOiBTY29wZSBzdHJpbmcsIG9uZSBvZiAiZnVuY3Rpb24iLCAiY2xh
c3MiLCAibW9kdWxlIiwgInNlc3Npb24iCi0gICAgICAgIHNlbGYuc2NvcGUgPSAiZnVuY3Rpb24i
Ci0gICAgICAgIHNlbGYuX2ZpeHR1cmVfdmFsdWVzID0ge30gICMgYXJnbmFtZSAtPiBmaXh0dXJl
IHZhbHVlCi0gICAgICAgIHNlbGYuX2ZpeHR1cmVfZGVmcyA9IHt9ICAjIGFyZ25hbWUgLT4gRml4
dHVyZURlZgotICAgICAgICBmaXh0dXJlaW5mbyA9IHB5ZnVuY2l0ZW0uX2ZpeHR1cmVpbmZvCi0g
ICAgICAgIHNlbGYuX2FyZzJmaXh0dXJlZGVmcyA9IGZpeHR1cmVpbmZvLm5hbWUyZml4dHVyZWRl
ZnMuY29weSgpCi0gICAgICAgIHNlbGYuX2FyZzJpbmRleCA9IHt9Ci0gICAgICAgIHNlbGYuX2Zp
eHR1cmVtYW5hZ2VyID0gcHlmdW5jaXRlbS5zZXNzaW9uLl9maXh0dXJlbWFuYWdlcgotCi0gICAg
QHByb3BlcnR5Ci0gICAgZGVmIGZpeHR1cmVuYW1lcyhzZWxmKToKLSAgICAgICAgIyBiYWNrd2Fy
ZCBpbmNvbXBhdGlibGUgbm90ZTogbm93IGEgcmVhZG9ubHkgcHJvcGVydHkKLSAgICAgICAgcmV0
dXJuIGxpc3Qoc2VsZi5fcHlmdW5jaXRlbS5fZml4dHVyZWluZm8ubmFtZXNfY2xvc3VyZSkKLQot
ICAgIEBwcm9wZXJ0eQotICAgIGRlZiBub2RlKHNlbGYpOgotICAgICAgICAiIiIgdW5kZXJseWlu
ZyBjb2xsZWN0aW9uIG5vZGUgKGRlcGVuZHMgb24gY3VycmVudCByZXF1ZXN0IHNjb3BlKSIiIgot
ICAgICAgICByZXR1cm4gc2VsZi5fZ2V0c2NvcGVpdGVtKHNlbGYuc2NvcGUpCi0KLSAgICBkZWYg
X2dldG5leHRmaXh0dXJlZGVmKHNlbGYsIGFyZ25hbWUpOgotICAgICAgICBmaXh0dXJlZGVmcyA9
IHNlbGYuX2FyZzJmaXh0dXJlZGVmcy5nZXQoYXJnbmFtZSwgTm9uZSkKLSAgICAgICAgaWYgZml4
dHVyZWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgICMgd2UgYXJyaXZlIGhlcmUgYmVjYXVzZSBv
ZiBhICBhIGR5bmFtaWMgY2FsbCB0bwotICAgICAgICAgICAgIyBnZXRmaXh0dXJldmFsdWUoYXJn
bmFtZSkgdXNhZ2Ugd2hpY2ggd2FzIG5hdHVyYWxseQotICAgICAgICAgICAgIyBub3Qga25vd24g
YXQgcGFyc2luZy9jb2xsZWN0aW9uIHRpbWUKLSAgICAgICAgICAgIHBhcmVudGlkID0gc2VsZi5f
cHlmdW5jaXRlbS5wYXJlbnQubm9kZWlkCi0gICAgICAgICAgICBmaXh0dXJlZGVmcyA9IHNlbGYu
X2ZpeHR1cmVtYW5hZ2VyLmdldGZpeHR1cmVkZWZzKGFyZ25hbWUsIHBhcmVudGlkKQotICAgICAg
ICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdID0gZml4dHVyZWRlZnMKLSAgICAg
ICAgIyBmaXh0dXJlZGVmcyBsaXN0IGlzIGltbXV0YWJsZSBzbyB3ZSBtYWludGFpbiBhIGRlY3Jl
YXNpbmcgaW5kZXgKLSAgICAgICAgaW5kZXggPSBzZWxmLl9hcmcyaW5kZXguZ2V0KGFyZ25hbWUs
IDApIC0gMQotICAgICAgICBpZiBmaXh0dXJlZGVmcyBpcyBOb25lIG9yICgtaW5kZXggPiBsZW4o
Zml4dHVyZWRlZnMpKToKLSAgICAgICAgICAgIHJhaXNlIEZpeHR1cmVMb29rdXBFcnJvcihhcmdu
YW1lLCBzZWxmKQotICAgICAgICBzZWxmLl9hcmcyaW5kZXhbYXJnbmFtZV0gPSBpbmRleAotICAg
ICAgICByZXR1cm4gZml4dHVyZWRlZnNbaW5kZXhdCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYg
Y29uZmlnKHNlbGYpOgotICAgICAgICAiIiIgdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0IGFzc29j
aWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5j
aXRlbS5jb25maWcKLQotICAgIEBzY29wZXByb3BlcnR5KCkKLSAgICBkZWYgZnVuY3Rpb24oc2Vs
Zik6Ci0gICAgICAgICIiIiB0ZXN0IGZ1bmN0aW9uIG9iamVjdCBpZiB0aGUgcmVxdWVzdCBoYXMg
YSBwZXItZnVuY3Rpb24gc2NvcGUuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRl
bS5vYmoKLQotICAgIEBzY29wZXByb3BlcnR5KCJjbGFzcyIpCi0gICAgZGVmIGNscyhzZWxmKToK
LSAgICAgICAgIiIiIGNsYXNzIChjYW4gYmUgTm9uZSkgd2hlcmUgdGhlIHRlc3QgZnVuY3Rpb24g
d2FzIGNvbGxlY3RlZC4gIiIiCi0gICAgICAgIGNsc2NvbCA9IHNlbGYuX3B5ZnVuY2l0ZW0uZ2V0
cGFyZW50KF9weXRlc3QucHl0aG9uLkNsYXNzKQotICAgICAgICBpZiBjbHNjb2w6Ci0gICAgICAg
ICAgICByZXR1cm4gY2xzY29sLm9iagotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGluc3RhbmNl
KHNlbGYpOgotICAgICAgICAiIiIgaW5zdGFuY2UgKGNhbiBiZSBOb25lKSBvbiB3aGljaCB0ZXN0
IGZ1bmN0aW9uIHdhcyBjb2xsZWN0ZWQuICIiIgotICAgICAgICAjIHVuaXR0ZXN0IHN1cHBvcnQg
aGFjaywgc2VlIF9weXRlc3QudW5pdHRlc3QuVGVzdENhc2VGdW5jdGlvbgotICAgICAgICB0cnk6
Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fcHlmdW5jaXRlbS5fdGVzdGNhc2UKLSAgICAgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgZnVuY3Rpb24gPSBnZXRhdHRyKHNl
bGYsICJmdW5jdGlvbiIsIE5vbmUpCi0gICAgICAgICAgICBpZiBmdW5jdGlvbiBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICAgICByZXR1cm4gcHkuYnVpbHRpbi5fZ2V0aW1zZWxmKGZ1bmN0aW9u
KQotCi0gICAgQHNjb3BlcHJvcGVydHkoKQotICAgIGRlZiBtb2R1bGUoc2VsZik6Ci0gICAgICAg
ICIiIiBweXRob24gbW9kdWxlIG9iamVjdCB3aGVyZSB0aGUgdGVzdCBmdW5jdGlvbiB3YXMgY29s
bGVjdGVkLiAiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0uZ2V0cGFyZW50KF9w
eXRlc3QucHl0aG9uLk1vZHVsZSkub2JqCi0KLSAgICBAc2NvcGVwcm9wZXJ0eSgpCi0gICAgZGVm
IGZzcGF0aChzZWxmKToKLSAgICAgICAgIiIiIHRoZSBmaWxlIHN5c3RlbSBwYXRoIG9mIHRoZSB0
ZXN0IG1vZHVsZSB3aGljaCBjb2xsZWN0ZWQgdGhpcyB0ZXN0LiAiIiIKLSAgICAgICAgcmV0dXJu
IHNlbGYuX3B5ZnVuY2l0ZW0uZnNwYXRoCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYga2V5d29y
ZHMoc2VsZik6Ci0gICAgICAgICIiIiBrZXl3b3Jkcy9tYXJrZXJzIGRpY3Rpb25hcnkgZm9yIHRo
ZSB1bmRlcmx5aW5nIG5vZGUuICIiIgotICAgICAgICByZXR1cm4gc2VsZi5ub2RlLmtleXdvcmRz
Ci0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgc2Vzc2lvbihzZWxmKToKLSAgICAgICAgIiIiIHB5
dGVzdCBzZXNzaW9uIG9iamVjdC4gIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9weWZ1bmNpdGVt
LnNlc3Npb24KLQotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVyKToKLSAgICAg
ICAgIiIiIGFkZCBmaW5hbGl6ZXIvdGVhcmRvd24gZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVy
IHRoZQotICAgICAgICBsYXN0IHRlc3Qgd2l0aGluIHRoZSByZXF1ZXN0aW5nIHRlc3QgY29udGV4
dCBmaW5pc2hlZAotICAgICAgICBleGVjdXRpb24uICIiIgotICAgICAgICAjIFhYWCB1c3VhbGx5
IHRoaXMgbWV0aG9kIGlzIHNoYWRvd2VkIGJ5IGZpeHR1cmVkZWYgc3BlY2lmaWMgb25lcwotICAg
ICAgICBzZWxmLl9hZGRmaW5hbGl6ZXIoZmluYWxpemVyLCBzY29wZT1zZWxmLnNjb3BlKQotCi0g
ICAgZGVmIF9hZGRmaW5hbGl6ZXIoc2VsZiwgZmluYWxpemVyLCBzY29wZSk6Ci0gICAgICAgIGNv
bGl0ZW0gPSBzZWxmLl9nZXRzY29wZWl0ZW0oc2NvcGUpCi0gICAgICAgIHNlbGYuX3B5ZnVuY2l0
ZW0uc2Vzc2lvbi5fc2V0dXBzdGF0ZS5hZGRmaW5hbGl6ZXIoCi0gICAgICAgICAgICBmaW5hbGl6
ZXI9ZmluYWxpemVyLCBjb2xpdGVtPWNvbGl0ZW0pCi0KLSAgICBkZWYgYXBwbHltYXJrZXIoc2Vs
ZiwgbWFya2VyKToKLSAgICAgICAgIiIiIEFwcGx5IGEgbWFya2VyIHRvIGEgc2luZ2xlIHRlc3Qg
ZnVuY3Rpb24gaW52b2NhdGlvbi4KLSAgICAgICAgVGhpcyBtZXRob2QgaXMgdXNlZnVsIGlmIHlv
dSBkb24ndCB3YW50IHRvIGhhdmUgYSBrZXl3b3JkL21hcmtlcgotICAgICAgICBvbiBhbGwgZnVu
Y3Rpb24gaW52b2NhdGlvbnMuCi0KLSAgICAgICAgOmFyZyBtYXJrZXI6IGEgOnB5OmNsYXNzOmBf
cHl0ZXN0Lm1hcmsuTWFya0RlY29yYXRvcmAgb2JqZWN0Ci0gICAgICAgICAgICBjcmVhdGVkIGJ5
IGEgY2FsbCB0byBgYHB5dGVzdC5tYXJrLk5BTUUoLi4uKWBgLgotICAgICAgICAiIiIKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5ub2RlLmtleXdvcmRzW21hcmtlci5tYXJrbmFtZV0g
PSBtYXJrZXIKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcihtYXJrZXIpCi0KLSAgICBkZWYgcmFpc2VlcnJvcihzZWxmLCBtc2cpOgot
ICAgICAgICAiIiIgcmFpc2UgYSBGaXh0dXJlTG9va3VwRXJyb3Igd2l0aCB0aGUgZ2l2ZW4gbWVz
c2FnZS4gIiIiCi0gICAgICAgIHJhaXNlIHNlbGYuX2ZpeHR1cmVtYW5hZ2VyLkZpeHR1cmVMb29r
dXBFcnJvcihOb25lLCBzZWxmLCBtc2cpCi0KLSAgICBkZWYgX2ZpbGxmaXh0dXJlcyhzZWxmKToK
LSAgICAgICAgaXRlbSA9IHNlbGYuX3B5ZnVuY2l0ZW0KLSAgICAgICAgZml4dHVyZW5hbWVzID0g
Z2V0YXR0cihpdGVtLCAiZml4dHVyZW5hbWVzIiwgc2VsZi5maXh0dXJlbmFtZXMpCi0gICAgICAg
IGZvciBhcmduYW1lIGluIGZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90
IGluIGl0ZW0uZnVuY2FyZ3M6Ci0gICAgICAgICAgICAgICAgaXRlbS5mdW5jYXJnc1thcmduYW1l
XSA9IHNlbGYuZ2V0Zml4dHVyZXZhbHVlKGFyZ25hbWUpCi0KLSAgICBkZWYgY2FjaGVkX3NldHVw
KHNlbGYsIHNldHVwLCB0ZWFyZG93bj1Ob25lLCBzY29wZT0ibW9kdWxlIiwgZXh0cmFrZXk9Tm9u
ZSk6Ci0gICAgICAgICIiIiAoZGVwcmVjYXRlZCkgUmV0dXJuIGEgdGVzdGluZyByZXNvdXJjZSBt
YW5hZ2VkIGJ5IGBgc2V0dXBgYCAmCi0gICAgICAgIGBgdGVhcmRvd25gYCBjYWxscy4gIGBgc2Nv
cGVgYCBhbmQgYGBleHRyYWtleWBgIGRldGVybWluZSB3aGVuIHRoZQotICAgICAgICBgYHRlYXJk
b3duYGAgZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgc28gdGhhdCBzdWJzZXF1ZW50IGNhbGxzIHRv
Ci0gICAgICAgIGBgc2V0dXBgYCB3b3VsZCByZWNyZWF0ZSB0aGUgcmVzb3VyY2UuICBXaXRoIHB5
dGVzdC0yLjMgeW91IG9mdGVuCi0gICAgICAgIGRvIG5vdCBuZWVkIGBgY2FjaGVkX3NldHVwKClg
YCBhcyB5b3UgY2FuIGRpcmVjdGx5IGRlY2xhcmUgYSBzY29wZQotICAgICAgICBvbiBhIGZpeHR1
cmUgZnVuY3Rpb24gYW5kIHJlZ2lzdGVyIGEgZmluYWxpemVyIHRocm91Z2gKLSAgICAgICAgYGBy
ZXF1ZXN0LmFkZGZpbmFsaXplcigpYGAuCi0KLSAgICAgICAgOmFyZyB0ZWFyZG93bjogZnVuY3Rp
b24gcmVjZWl2aW5nIGEgcHJldmlvdXNseSBzZXR1cCByZXNvdXJjZS4KLSAgICAgICAgOmFyZyBz
ZXR1cDogYSBuby1hcmd1bWVudCBmdW5jdGlvbiBjcmVhdGluZyBhIHJlc291cmNlLgotICAgICAg
ICA6YXJnIHNjb3BlOiBhIHN0cmluZyB2YWx1ZSBvdXQgb2YgYGBmdW5jdGlvbmBgLCBgYGNsYXNz
YGAsIGBgbW9kdWxlYGAKLSAgICAgICAgICAgIG9yIGBgc2Vzc2lvbmBgIGluZGljYXRpbmcgdGhl
IGNhY2hpbmcgbGlmZWN5Y2xlIG9mIHRoZSByZXNvdXJjZS4KLSAgICAgICAgOmFyZyBleHRyYWtl
eTogYWRkZWQgdG8gaW50ZXJuYWwgY2FjaGluZyBrZXkgb2YgKGZ1bmNhcmduYW1lLCBzY29wZSku
Ci0gICAgICAgICIiIgotICAgICAgICBpZiBub3QgaGFzYXR0cihzZWxmLmNvbmZpZywgJ19zZXR1
cGNhY2hlJyk6Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZy5fc2V0dXBjYWNoZSA9IHt9ICAjIFhY
WCB3ZWFrcmVmPwotICAgICAgICBjYWNoZWtleSA9IChzZWxmLmZpeHR1cmVuYW1lLCBzZWxmLl9n
ZXRzY29wZWl0ZW0oc2NvcGUpLCBleHRyYWtleSkKLSAgICAgICAgY2FjaGUgPSBzZWxmLmNvbmZp
Zy5fc2V0dXBjYWNoZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB2YWwgPSBjYWNoZVtjYWNo
ZWtleV0KLSAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgc2VsZi5fY2hlY2tf
c2NvcGUoc2VsZi5maXh0dXJlbmFtZSwgc2VsZi5zY29wZSwgc2NvcGUpCi0gICAgICAgICAgICB2
YWwgPSBzZXR1cCgpCi0gICAgICAgICAgICBjYWNoZVtjYWNoZWtleV0gPSB2YWwKLSAgICAgICAg
ICAgIGlmIHRlYXJkb3duIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGRlZiBmaW5hbGl6
ZXIoKToKLSAgICAgICAgICAgICAgICAgICAgZGVsIGNhY2hlW2NhY2hla2V5XQotICAgICAgICAg
ICAgICAgICAgICB0ZWFyZG93bih2YWwpCi0gICAgICAgICAgICAgICAgc2VsZi5fYWRkZmluYWxp
emVyKGZpbmFsaXplciwgc2NvcGU9c2NvcGUpCi0gICAgICAgIHJldHVybiB2YWwKLQotICAgIGRl
ZiBnZXRmaXh0dXJldmFsdWUoc2VsZiwgYXJnbmFtZSk6Ci0gICAgICAgICIiIiBEeW5hbWljYWxs
eSBydW4gYSBuYW1lZCBmaXh0dXJlIGZ1bmN0aW9uLgotCi0gICAgICAgIERlY2xhcmluZyBmaXh0
dXJlcyB2aWEgZnVuY3Rpb24gYXJndW1lbnQgaXMgcmVjb21tZW5kZWQgd2hlcmUgcG9zc2libGUu
Ci0gICAgICAgIEJ1dCBpZiB5b3UgY2FuIG9ubHkgZGVjaWRlIHdoZXRoZXIgdG8gdXNlIGFub3Ro
ZXIgZml4dHVyZSBhdCB0ZXN0Ci0gICAgICAgIHNldHVwIHRpbWUsIHlvdSBtYXkgdXNlIHRoaXMg
ZnVuY3Rpb24gdG8gcmV0cmlldmUgaXQgaW5zaWRlIGEgZml4dHVyZQotICAgICAgICBvciB0ZXN0
IGZ1bmN0aW9uIGJvZHkuCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X2Fj
dGl2ZV9maXh0dXJlZGVmKGFyZ25hbWUpLmNhY2hlZF9yZXN1bHRbMF0KLQotICAgIGRlZiBnZXRm
dW5jYXJndmFsdWUoc2VsZiwgYXJnbmFtZSk6Ci0gICAgICAgICIiIiBEZXByZWNhdGVkLCB1c2Ug
Z2V0Zml4dHVyZXZhbHVlLiAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBkZXByZWNh
dGVkCi0gICAgICAgIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICAgICBkZXByZWNhdGVkLkdFVEZV
TkNBUkdWQUxVRSwKLSAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKLSAgICAgICAgICAg
IHN0YWNrbGV2ZWw9MikKLSAgICAgICAgcmV0dXJuIHNlbGYuZ2V0Zml4dHVyZXZhbHVlKGFyZ25h
bWUpCi0KLSAgICBkZWYgX2dldF9hY3RpdmVfZml4dHVyZWRlZihzZWxmLCBhcmduYW1lKToKLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2ZpeHR1cmVfZGVmc1thcmduYW1l
XQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZml4dHVyZWRlZiA9IHNlbGYuX2dldG5leHRmaXh0dXJlZGVmKGFyZ25hbWUpCi0gICAg
ICAgICAgICBleGNlcHQgRml4dHVyZUxvb2t1cEVycm9yOgotICAgICAgICAgICAgICAgIGlmIGFy
Z25hbWUgPT0gInJlcXVlc3QiOgotICAgICAgICAgICAgICAgICAgICBjbGFzcyBQc2V1ZG9GaXh0
dXJlRGVmOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVkX3Jlc3VsdCA9IChzZWxmLCBb
MF0sIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzY29wZSA9ICJmdW5jdGlvbiIKLSAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIFBzZXVkb0ZpeHR1cmVEZWYKLSAgICAgICAgICAgICAg
ICByYWlzZQotICAgICAgICAjIHJlbW92ZSBpbmRlbnQgdG8gcHJldmVudCB0aGUgcHl0aG9uMyBl
eGNlcHRpb24KLSAgICAgICAgIyBmcm9tIGxlYWtpbmcgaW50byB0aGUgY2FsbAotICAgICAgICBy
ZXN1bHQgPSBzZWxmLl9nZXRmaXh0dXJldmFsdWUoZml4dHVyZWRlZikKLSAgICAgICAgc2VsZi5f
Zml4dHVyZV92YWx1ZXNbYXJnbmFtZV0gPSByZXN1bHQKLSAgICAgICAgc2VsZi5fZml4dHVyZV9k
ZWZzW2FyZ25hbWVdID0gZml4dHVyZWRlZgotICAgICAgICByZXR1cm4gZml4dHVyZWRlZgotCi0g
ICAgZGVmIF9nZXRfZml4dHVyZXN0YWNrKHNlbGYpOgotICAgICAgICBjdXJyZW50ID0gc2VsZgot
ICAgICAgICB2YWx1ZXMgPSBbXQotICAgICAgICB3aGlsZSAxOgotICAgICAgICAgICAgZml4dHVy
ZWRlZiA9IGdldGF0dHIoY3VycmVudCwgIl9maXh0dXJlZGVmIiwgTm9uZSkKLSAgICAgICAgICAg
IGlmIGZpeHR1cmVkZWYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICB2YWx1ZXMucmV2ZXJzZSgp
Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlcwotICAgICAgICAgICAgdmFsdWVzLmFwcGVu
ZChmaXh0dXJlZGVmKQotICAgICAgICAgICAgY3VycmVudCA9IGN1cnJlbnQuX3BhcmVudF9yZXF1
ZXN0Ci0KLSAgICBkZWYgX2dldGZpeHR1cmV2YWx1ZShzZWxmLCBmaXh0dXJlZGVmKToKLSAgICAg
ICAgIyBwcmVwYXJlIGEgc3VicmVxdWVzdCBvYmplY3QgYmVmb3JlIGNhbGxpbmcgZml4dHVyZSBm
dW5jdGlvbgotICAgICAgICAjIChsYXR0ZXIgbWFuYWdlZCBieSBmaXh0dXJlZGVmKQotICAgICAg
ICBhcmduYW1lID0gZml4dHVyZWRlZi5hcmduYW1lCi0gICAgICAgIGZ1bmNpdGVtID0gc2VsZi5f
cHlmdW5jaXRlbQotICAgICAgICBzY29wZSA9IGZpeHR1cmVkZWYuc2NvcGUKLSAgICAgICAgdHJ5
OgotICAgICAgICAgICAgcGFyYW0gPSBmdW5jaXRlbS5jYWxsc3BlYy5nZXRwYXJhbShhcmduYW1l
KQotICAgICAgICBleGNlcHQgKEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKToKLSAgICAgICAg
ICAgIHBhcmFtID0gTk9UU0VUCi0gICAgICAgICAgICBwYXJhbV9pbmRleCA9IDAKLSAgICAgICAg
ICAgIGlmIGZpeHR1cmVkZWYucGFyYW1zIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGZy
YW1lID0gaW5zcGVjdC5zdGFjaygpWzNdCi0gICAgICAgICAgICAgICAgZnJhbWVpbmZvID0gaW5z
cGVjdC5nZXRmcmFtZWluZm8oZnJhbWVbMF0pCi0gICAgICAgICAgICAgICAgc291cmNlX3BhdGgg
PSBmcmFtZWluZm8uZmlsZW5hbWUKLSAgICAgICAgICAgICAgICBzb3VyY2VfbGluZW5vID0gZnJh
bWVpbmZvLmxpbmVubwotICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoID0gcHkucGF0aC5sb2Nh
bChzb3VyY2VfcGF0aCkKLSAgICAgICAgICAgICAgICBpZiBzb3VyY2VfcGF0aC5yZWx0byhmdW5j
aXRlbS5jb25maWcucm9vdGRpcik6Ci0gICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoID0g
c291cmNlX3BhdGgucmVsdG8oZnVuY2l0ZW0uY29uZmlnLnJvb3RkaXIpCi0gICAgICAgICAgICAg
ICAgbXNnID0gKAotICAgICAgICAgICAgICAgICAgICAiVGhlIHJlcXVlc3RlZCBmaXh0dXJlIGhh
cyBubyBwYXJhbWV0ZXIgZGVmaW5lZCBmb3IgdGhlICIKLSAgICAgICAgICAgICAgICAgICAgImN1
cnJlbnQgdGVzdC5cblxuUmVxdWVzdGVkIGZpeHR1cmUgJ3swfScgZGVmaW5lZCBpbjpcbnsxfSIK
LSAgICAgICAgICAgICAgICAgICAgIlxuXG5SZXF1ZXN0ZWQgaGVyZTpcbnsyfTp7M30iLmZvcm1h
dCgKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuYXJnbmFtZSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgIGdldGxvY2F0aW9uKGZpeHR1cmVkZWYuZnVuYywgZnVuY2l0ZW0uY29u
ZmlnLnJvb3RkaXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlX3BhdGgsCi0gICAg
ICAgICAgICAgICAgICAgICAgICBzb3VyY2VfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAp
Ci0gICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgIGZhaWwobXNnKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgIyBpbmRpY2VzIG1pZ2h0IG5vdCBiZSBzZXQgaWYgb2xkLXN0eWxl
IG1ldGFmdW5jLmFkZGNhbGwoKSB3YXMgdXNlZAotICAgICAgICAgICAgcGFyYW1faW5kZXggPSBm
dW5jaXRlbS5jYWxsc3BlYy5pbmRpY2VzLmdldChhcmduYW1lLCAwKQotICAgICAgICAgICAgIyBp
ZiBhIHBhcmFtZXRyaXplIGludm9jYXRpb24gc2V0IGEgc2NvcGUgaXQgd2lsbCBvdmVycmlkZQot
ICAgICAgICAgICAgIyB0aGUgc3RhdGljIHNjb3BlIGRlZmluZWQgd2l0aCB0aGUgZml4dHVyZSBm
dW5jdGlvbgotICAgICAgICAgICAgcGFyYW1zY29wZW51bSA9IGZ1bmNpdGVtLmNhbGxzcGVjLl9h
cmcyc2NvcGVudW0uZ2V0KGFyZ25hbWUpCi0gICAgICAgICAgICBpZiBwYXJhbXNjb3BlbnVtIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHNjb3BlID0gc2NvcGVzW3BhcmFtc2NvcGVudW1d
Ci0KLSAgICAgICAgc3VicmVxdWVzdCA9IFN1YlJlcXVlc3Qoc2VsZiwgc2NvcGUsIHBhcmFtLCBw
YXJhbV9pbmRleCwgZml4dHVyZWRlZikKLQotICAgICAgICAjIGNoZWNrIGlmIGEgaGlnaGVyLWxl
dmVsIHNjb3BlZCBmaXh0dXJlIGFjY2Vzc2VzIGEgbG93ZXIgbGV2ZWwgb25lCi0gICAgICAgIHN1
YnJlcXVlc3QuX2NoZWNrX3Njb3BlKGFyZ25hbWUsIHNlbGYuc2NvcGUsIHNjb3BlKQotCi0gICAg
ICAgICMgY2xlYXIgc3lzLmV4Y19pbmZvIGJlZm9yZSBpbnZva2luZyB0aGUgZml4dHVyZSAocHl0
aG9uIGJ1Zz8pCi0gICAgICAgICMgaWYgaXRzIG5vdCBleHBsaWNpdGx5IGNsZWFyZWQgaXQgd2ls
bCBsZWFrIGludG8gdGhlIGNhbGwKLSAgICAgICAgZXhjX2NsZWFyKCkKLSAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgIyBjYWxsIHRoZSBmaXh0dXJlIGZ1bmN0aW9uCi0gICAgICAgICAgICB2YWwg
PSBmaXh0dXJlZGVmLmV4ZWN1dGUocmVxdWVzdD1zdWJyZXF1ZXN0KQotICAgICAgICBmaW5hbGx5
OgotICAgICAgICAgICAgIyBpZiBmaXh0dXJlIGZ1bmN0aW9uIGZhaWxlZCBpdCBtaWdodCBoYXZl
IHJlZ2lzdGVyZWQgZmluYWxpemVycwotICAgICAgICAgICAgc2VsZi5zZXNzaW9uLl9zZXR1cHN0
YXRlLmFkZGZpbmFsaXplcihmdW5jdG9vbHMucGFydGlhbChmaXh0dXJlZGVmLmZpbmlzaCwgcmVx
dWVzdD1zdWJyZXF1ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3VicmVxdWVzdC5ub2RlKQotICAgICAgICByZXR1cm4gdmFsCi0KLSAgICBk
ZWYgX2NoZWNrX3Njb3BlKHNlbGYsIGFyZ25hbWUsIGludm9raW5nX3Njb3BlLCByZXF1ZXN0ZWRf
c2NvcGUpOgotICAgICAgICBpZiBhcmduYW1lID09ICJyZXF1ZXN0IjoKLSAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBpZiBzY29wZW1pc21hdGNoKGludm9raW5nX3Njb3BlLCByZXF1ZXN0ZWRf
c2NvcGUpOgotICAgICAgICAgICAgIyB0cnkgdG8gcmVwb3J0IHNvbWV0aGluZyBoZWxwZnVsCi0g
ICAgICAgICAgICBsaW5lcyA9IHNlbGYuX2ZhY3Rvcnl0cmFjZWJhY2soKQotICAgICAgICAgICAg
ZmFpbCgiU2NvcGVNaXNtYXRjaDogWW91IHRyaWVkIHRvIGFjY2VzcyB0aGUgJXIgc2NvcGVkICIK
LSAgICAgICAgICAgICAgICAgImZpeHR1cmUgJXIgd2l0aCBhICVyIHNjb3BlZCByZXF1ZXN0IG9i
amVjdCwgIgotICAgICAgICAgICAgICAgICAiaW52b2x2ZWQgZmFjdG9yaWVzXG4lcyIgJSAoCi0g
ICAgICAgICAgICAgICAgICAgICAocmVxdWVzdGVkX3Njb3BlLCBhcmduYW1lLCBpbnZva2luZ19z
Y29wZSwgIlxuIi5qb2luKGxpbmVzKSkpLAotICAgICAgICAgICAgICAgICBweXRyYWNlPUZhbHNl
KQotCi0gICAgZGVmIF9mYWN0b3J5dHJhY2ViYWNrKHNlbGYpOgotICAgICAgICBsaW5lcyA9IFtd
Ci0gICAgICAgIGZvciBmaXh0dXJlZGVmIGluIHNlbGYuX2dldF9maXh0dXJlc3RhY2soKToKLSAg
ICAgICAgICAgIGZhY3RvcnkgPSBmaXh0dXJlZGVmLmZ1bmMKLSAgICAgICAgICAgIGZzLCBsaW5l
bm8gPSBnZXRmc2xpbmVubyhmYWN0b3J5KQotICAgICAgICAgICAgcCA9IHNlbGYuX3B5ZnVuY2l0
ZW0uc2Vzc2lvbi5mc3BhdGguYmVzdHJlbHBhdGgoZnMpCi0gICAgICAgICAgICBhcmdzID0gX2Zv
cm1hdF9hcmdzKGZhY3RvcnkpCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiVzOiVkOiAgZGVm
ICVzJXMiICUgKAotICAgICAgICAgICAgICAgIHAsIGxpbmVubywgZmFjdG9yeS5fX25hbWVfXywg
YXJncykpCi0gICAgICAgIHJldHVybiBsaW5lcwotCi0gICAgZGVmIF9nZXRzY29wZWl0ZW0oc2Vs
Ziwgc2NvcGUpOgotICAgICAgICBpZiBzY29wZSA9PSAiZnVuY3Rpb24iOgotICAgICAgICAgICAg
IyB0aGlzIG1pZ2h0IGFsc28gYmUgYSBub24tZnVuY3Rpb24gSXRlbSBkZXNwaXRlIGl0cyBhdHRy
aWJ1dGUgbmFtZQotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX3B5ZnVuY2l0ZW0KLSAgICAgICAg
bm9kZSA9IGdldF9zY29wZV9ub2RlKHNlbGYuX3B5ZnVuY2l0ZW0sIHNjb3BlKQotICAgICAgICBp
ZiBub2RlIGlzIE5vbmUgYW5kIHNjb3BlID09ICJjbGFzcyI6Ci0gICAgICAgICAgICAjIGZhbGxi
YWNrIHRvIGZ1bmN0aW9uIGl0ZW0gaXRzZWxmCi0gICAgICAgICAgICBub2RlID0gc2VsZi5fcHlm
dW5jaXRlbQotICAgICAgICBhc3NlcnQgbm9kZSwgJ0NvdWxkIG5vdCBvYnRhaW4gYSBub2RlIGZv
ciBzY29wZSAie30iIGZvciBmdW5jdGlvbiB7IXJ9Jy5mb3JtYXQoc2NvcGUsIHNlbGYuX3B5ZnVu
Y2l0ZW0pCi0gICAgICAgIHJldHVybiBub2RlCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0g
ICAgICAgIHJldHVybiAiPEZpeHR1cmVSZXF1ZXN0IGZvciAlcj4iICUgKHNlbGYubm9kZSkKLQot
Ci1jbGFzcyBTdWJSZXF1ZXN0KEZpeHR1cmVSZXF1ZXN0KToKLSAgICAiIiIgYSBzdWIgcmVxdWVz
dCBmb3IgaGFuZGxpbmcgZ2V0dGluZyBhIGZpeHR1cmUgZnJvbSBhCi0gICAgdGVzdCBmdW5jdGlv
bi9maXh0dXJlLiAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBzY29wZSwg
cGFyYW0sIHBhcmFtX2luZGV4LCBmaXh0dXJlZGVmKToKLSAgICAgICAgc2VsZi5fcGFyZW50X3Jl
cXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuZml4dHVyZW5hbWUgPSBmaXh0dXJlZGVmLmFy
Z25hbWUKLSAgICAgICAgaWYgcGFyYW0gaXMgbm90IE5PVFNFVDoKLSAgICAgICAgICAgIHNlbGYu
cGFyYW0gPSBwYXJhbQotICAgICAgICBzZWxmLnBhcmFtX2luZGV4ID0gcGFyYW1faW5kZXgKLSAg
ICAgICAgc2VsZi5zY29wZSA9IHNjb3BlCi0gICAgICAgIHNlbGYuX2ZpeHR1cmVkZWYgPSBmaXh0
dXJlZGVmCi0gICAgICAgIHNlbGYuX3B5ZnVuY2l0ZW0gPSByZXF1ZXN0Ll9weWZ1bmNpdGVtCi0g
ICAgICAgIHNlbGYuX2ZpeHR1cmVfdmFsdWVzID0gcmVxdWVzdC5fZml4dHVyZV92YWx1ZXMKLSAg
ICAgICAgc2VsZi5fZml4dHVyZV9kZWZzID0gcmVxdWVzdC5fZml4dHVyZV9kZWZzCi0gICAgICAg
IHNlbGYuX2FyZzJmaXh0dXJlZGVmcyA9IHJlcXVlc3QuX2FyZzJmaXh0dXJlZGVmcwotICAgICAg
ICBzZWxmLl9hcmcyaW5kZXggPSByZXF1ZXN0Ll9hcmcyaW5kZXgKLSAgICAgICAgc2VsZi5fZml4
dHVyZW1hbmFnZXIgPSByZXF1ZXN0Ll9maXh0dXJlbWFuYWdlcgotCi0gICAgZGVmIF9fcmVwcl9f
KHNlbGYpOgotICAgICAgICByZXR1cm4gIjxTdWJSZXF1ZXN0ICVyIGZvciAlcj4iICUgKHNlbGYu
Zml4dHVyZW5hbWUsIHNlbGYuX3B5ZnVuY2l0ZW0pCi0KLSAgICBkZWYgYWRkZmluYWxpemVyKHNl
bGYsIGZpbmFsaXplcik6Ci0gICAgICAgIHNlbGYuX2ZpeHR1cmVkZWYuYWRkZmluYWxpemVyKGZp
bmFsaXplcikKLQotCi1jbGFzcyBTY29wZU1pc21hdGNoRXJyb3IoRXhjZXB0aW9uKToKLSAgICAi
IiIgQSBmaXh0dXJlIGZ1bmN0aW9uIHRyaWVzIHRvIHVzZSBhIGRpZmZlcmVudCBmaXh0dXJlIGZ1
bmN0aW9uIHdoaWNoCi0gICAgd2hpY2ggaGFzIGEgbG93ZXIgc2NvcGUgKGUuZy4gYSBTZXNzaW9u
IG9uZSBjYWxscyBhIGZ1bmN0aW9uIG9uZSkKLSAgICAiIiIKLQotCi1zY29wZXMgPSAic2Vzc2lv
biBtb2R1bGUgY2xhc3MgZnVuY3Rpb24iLnNwbGl0KCkKLXNjb3BlbnVtX2Z1bmN0aW9uID0gc2Nv
cGVzLmluZGV4KCJmdW5jdGlvbiIpCi0KLQotZGVmIHNjb3BlbWlzbWF0Y2goY3VycmVudHNjb3Bl
LCBuZXdzY29wZSk6Ci0gICAgcmV0dXJuIHNjb3Blcy5pbmRleChuZXdzY29wZSkgPiBzY29wZXMu
aW5kZXgoY3VycmVudHNjb3BlKQotCi0KLWRlZiBzY29wZTJpbmRleChzY29wZSwgZGVzY3IsIHdo
ZXJlPU5vbmUpOgotICAgICIiIkxvb2sgdXAgdGhlIGluZGV4IG9mIGBgc2NvcGVgYCBhbmQgcmFp
c2UgYSBkZXNjcmlwdGl2ZSB2YWx1ZSBlcnJvcgotICAgIGlmIG5vdCBkZWZpbmVkLgotICAgICIi
IgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIHNjb3Blcy5pbmRleChzY29wZSkKLSAgICBleGNl
cHQgVmFsdWVFcnJvcjoKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAgICJ7
MH0gezF9aGFzIGFuIHVuc3VwcG9ydGVkIHNjb3BlIHZhbHVlICd7Mn0nIi5mb3JtYXQoCi0gICAg
ICAgICAgICAgICAgZGVzY3IsICdmcm9tIHswfSAnLmZvcm1hdCh3aGVyZSkgaWYgd2hlcmUgZWxz
ZSAnJywKLSAgICAgICAgICAgICAgICBzY29wZSkKLSAgICAgICAgKQotCi0KLWNsYXNzIEZpeHR1
cmVMb29rdXBFcnJvcihMb29rdXBFcnJvcik6Ci0gICAgIiIiIGNvdWxkIG5vdCByZXR1cm4gYSBy
ZXF1ZXN0ZWQgRml4dHVyZSAobWlzc2luZyBvciBpbnZhbGlkKS4gIiIiCi0KLSAgICBkZWYgX19p
bml0X18oc2VsZiwgYXJnbmFtZSwgcmVxdWVzdCwgbXNnPU5vbmUpOgotICAgICAgICBzZWxmLmFy
Z25hbWUgPSBhcmduYW1lCi0gICAgICAgIHNlbGYucmVxdWVzdCA9IHJlcXVlc3QKLSAgICAgICAg
c2VsZi5maXh0dXJlc3RhY2sgPSByZXF1ZXN0Ll9nZXRfZml4dHVyZXN0YWNrKCkKLSAgICAgICAg
c2VsZi5tc2cgPSBtc2cKLQotICAgIGRlZiBmb3JtYXRyZXByKHNlbGYpOgotICAgICAgICB0Ymxp
bmVzID0gW10KLSAgICAgICAgYWRkbGluZSA9IHRibGluZXMuYXBwZW5kCi0gICAgICAgIHN0YWNr
ID0gW3NlbGYucmVxdWVzdC5fcHlmdW5jaXRlbS5vYmpdCi0gICAgICAgIHN0YWNrLmV4dGVuZCht
YXAobGFtYmRhIHg6IHguZnVuYywgc2VsZi5maXh0dXJlc3RhY2spKQotICAgICAgICBtc2cgPSBz
ZWxmLm1zZwotICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAjIHRoZSBs
YXN0IGZpeHR1cmUgcmFpc2UgYW4gZXJyb3IsIGxldCdzIHByZXNlbnQKLSAgICAgICAgICAgICMg
aXQgYXQgdGhlIHJlcXVlc3Rpbmcgc2lkZQotICAgICAgICAgICAgc3RhY2sgPSBzdGFja1s6LTFd
Ci0gICAgICAgIGZvciBmdW5jdGlvbiBpbiBzdGFjazoKLSAgICAgICAgICAgIGZzcGF0aCwgbGlu
ZW5vID0gZ2V0ZnNsaW5lbm8oZnVuY3Rpb24pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgbGluZXMsIF8gPSBpbnNwZWN0LmdldHNvdXJjZWxpbmVzKGdldF9yZWFsX2Z1bmMoZnVu
Y3Rpb24pKQotICAgICAgICAgICAgZXhjZXB0IChJT0Vycm9yLCBJbmRleEVycm9yLCBUeXBlRXJy
b3IpOgotICAgICAgICAgICAgICAgIGVycm9yX21zZyA9ICJmaWxlICVzLCBsaW5lICVzOiBzb3Vy
Y2UgY29kZSBub3QgYXZhaWxhYmxlIgotICAgICAgICAgICAgICAgIGFkZGxpbmUoZXJyb3JfbXNn
ICUgKGZzcGF0aCwgbGluZW5vICsgMSkpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGFkZGxpbmUoImZpbGUgJXMsIGxpbmUgJXMiICUgKGZzcGF0aCwgbGluZW5vICsgMSkpCi0g
ICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzKToKLSAgICAgICAg
ICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgYWRk
bGluZSgiICAiICsgbGluZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGluZS5sc3RyaXAoKS5z
dGFydHN3aXRoKCdkZWYnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAg
ICAgaWYgbXNnIGlzIE5vbmU6Ci0gICAgICAgICAgICBmbSA9IHNlbGYucmVxdWVzdC5fZml4dHVy
ZW1hbmFnZXIKLSAgICAgICAgICAgIGF2YWlsYWJsZSA9IFtdCi0gICAgICAgICAgICBwYXJlbnRp
ZCA9IHNlbGYucmVxdWVzdC5fcHlmdW5jaXRlbS5wYXJlbnQubm9kZWlkCi0gICAgICAgICAgICBm
b3IgbmFtZSwgZml4dHVyZWRlZnMgaW4gZm0uX2FyZzJmaXh0dXJlZGVmcy5pdGVtcygpOgotICAg
ICAgICAgICAgICAgIGZhY2xpc3QgPSBsaXN0KGZtLl9tYXRjaGZhY3RvcmllcyhmaXh0dXJlZGVm
cywgcGFyZW50aWQpKQotICAgICAgICAgICAgICAgIGlmIGZhY2xpc3QgYW5kIG5hbWUgbm90IGlu
IGF2YWlsYWJsZToKLSAgICAgICAgICAgICAgICAgICAgYXZhaWxhYmxlLmFwcGVuZChuYW1lKQot
ICAgICAgICAgICAgbXNnID0gImZpeHR1cmUgJXIgbm90IGZvdW5kIiAlIChzZWxmLmFyZ25hbWUs
KQotICAgICAgICAgICAgbXNnICs9ICJcbiBhdmFpbGFibGUgZml4dHVyZXM6ICVzIiAlICgiLCAi
LmpvaW4oc29ydGVkKGF2YWlsYWJsZSkpLCkKLSAgICAgICAgICAgIG1zZyArPSAiXG4gdXNlICdw
eXRlc3QgLS1maXh0dXJlcyBbdGVzdHBhdGhdJyBmb3IgaGVscCBvbiB0aGVtLiIKLQotICAgICAg
ICByZXR1cm4gRml4dHVyZUxvb2t1cEVycm9yUmVwcihmc3BhdGgsIGxpbmVubywgdGJsaW5lcywg
bXNnLCBzZWxmLmFyZ25hbWUpCi0KLQotY2xhc3MgRml4dHVyZUxvb2t1cEVycm9yUmVwcihUZXJt
aW5hbFJlcHIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaWxlbmFtZSwgZmlyc3RsaW5lbm8s
IHRibGluZXMsIGVycm9yc3RyaW5nLCBhcmduYW1lKToKLSAgICAgICAgc2VsZi50YmxpbmVzID0g
dGJsaW5lcwotICAgICAgICBzZWxmLmVycm9yc3RyaW5nID0gZXJyb3JzdHJpbmcKLSAgICAgICAg
c2VsZi5maWxlbmFtZSA9IGZpbGVuYW1lCi0gICAgICAgIHNlbGYuZmlyc3RsaW5lbm8gPSBmaXJz
dGxpbmVubwotICAgICAgICBzZWxmLmFyZ25hbWUgPSBhcmduYW1lCi0KLSAgICBkZWYgdG90ZXJt
aW5hbChzZWxmLCB0dyk6Ci0gICAgICAgICMgdHcubGluZSgiRml4dHVyZUxvb2t1cEVycm9yOiAl
cyIgJShzZWxmLmFyZ25hbWUpLCByZWQ9VHJ1ZSkKLSAgICAgICAgZm9yIHRibGluZSBpbiBzZWxm
LnRibGluZXM6Ci0gICAgICAgICAgICB0dy5saW5lKHRibGluZS5yc3RyaXAoKSkKLSAgICAgICAg
bGluZXMgPSBzZWxmLmVycm9yc3RyaW5nLnNwbGl0KCJcbiIpCi0gICAgICAgIGlmIGxpbmVzOgot
ICAgICAgICAgICAgdHcubGluZSgnezB9ICAgICAgIHsxfScuZm9ybWF0KEZvcm1hdHRlZEV4Y2lu
Zm8uZmFpbF9tYXJrZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbGluZXNbMF0uc3RyaXAoKSksIHJlZD1UcnVlKQotICAgICAgICAgICAgZm9yIGxpbmUgaW4g
bGluZXNbMTpdOgotICAgICAgICAgICAgICAgIHR3LmxpbmUoJ3swfSAgICAgICB7MX0nLmZvcm1h
dChGb3JtYXR0ZWRFeGNpbmZvLmZsb3dfbWFya2VyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBsaW5lLnN0cmlwKCkpLCByZWQ9VHJ1ZSkKLSAgICAgICAg
dHcubGluZSgpCi0gICAgICAgIHR3LmxpbmUoIiVzOiVkIiAlIChzZWxmLmZpbGVuYW1lLCBzZWxm
LmZpcnN0bGluZW5vICsgMSkpCi0KLQotZGVmIGZhaWxfZml4dHVyZWZ1bmMoZml4dHVyZWZ1bmMs
IG1zZyk6Ci0gICAgZnMsIGxpbmVubyA9IGdldGZzbGluZW5vKGZpeHR1cmVmdW5jKQotICAgIGxv
Y2F0aW9uID0gIiVzOiVzIiAlIChmcywgbGluZW5vICsgMSkKLSAgICBzb3VyY2UgPSBfcHl0ZXN0
Ll9jb2RlLlNvdXJjZShmaXh0dXJlZnVuYykKLSAgICBmYWlsKG1zZyArICI6XG5cbiIgKyBzdHIo
c291cmNlLmluZGVudCgpKSArICJcbiIgKyBsb2NhdGlvbiwKLSAgICAgICAgIHB5dHJhY2U9RmFs
c2UpCi0KLQotZGVmIGNhbGxfZml4dHVyZV9mdW5jKGZpeHR1cmVmdW5jLCByZXF1ZXN0LCBrd2Fy
Z3MpOgotICAgIHlpZWxkY3R4ID0gaXNfZ2VuZXJhdG9yKGZpeHR1cmVmdW5jKQotICAgIGlmIHlp
ZWxkY3R4OgotICAgICAgICBpdCA9IGZpeHR1cmVmdW5jKCoqa3dhcmdzKQotICAgICAgICByZXMg
PSBuZXh0KGl0KQotCi0gICAgICAgIGRlZiB0ZWFyZG93bigpOgotICAgICAgICAgICAgdHJ5Ogot
ICAgICAgICAgICAgICAgIG5leHQoaXQpCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlv
bjoKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGZhaWxfZml4dHVyZWZ1bmMoZml4dHVyZWZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAieWllbGRfZml4dHVyZSBmdW5jdGlvbiBoYXMgbW9yZSB0aGFuIG9uZSAneWll
bGQnIikKLQotICAgICAgICByZXF1ZXN0LmFkZGZpbmFsaXplcih0ZWFyZG93bikKLSAgICBlbHNl
OgotICAgICAgICByZXMgPSBmaXh0dXJlZnVuYygqKmt3YXJncykKLSAgICByZXR1cm4gcmVzCi0K
LQotY2xhc3MgRml4dHVyZURlZjoKLSAgICAiIiIgQSBjb250YWluZXIgZm9yIGEgZmFjdG9yeSBk
ZWZpbml0aW9uLiAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmaXh0dXJlbWFuYWdlciwg
YmFzZWlkLCBhcmduYW1lLCBmdW5jLCBzY29wZSwgcGFyYW1zLAotICAgICAgICAgICAgICAgICB1
bml0dGVzdD1GYWxzZSwgaWRzPU5vbmUpOgotICAgICAgICBzZWxmLl9maXh0dXJlbWFuYWdlciA9
IGZpeHR1cmVtYW5hZ2VyCi0gICAgICAgIHNlbGYuYmFzZWlkID0gYmFzZWlkIG9yICcnCi0gICAg
ICAgIHNlbGYuaGFzX2xvY2F0aW9uID0gYmFzZWlkIGlzIG5vdCBOb25lCi0gICAgICAgIHNlbGYu
ZnVuYyA9IGZ1bmMKLSAgICAgICAgc2VsZi5hcmduYW1lID0gYXJnbmFtZQotICAgICAgICBzZWxm
LnNjb3BlID0gc2NvcGUKLSAgICAgICAgc2VsZi5zY29wZW51bSA9IHNjb3BlMmluZGV4KAotICAg
ICAgICAgICAgc2NvcGUgb3IgImZ1bmN0aW9uIiwKLSAgICAgICAgICAgIGRlc2NyPSdmaXh0dXJl
IHswfScuZm9ybWF0KGZ1bmMuX19uYW1lX18pLAotICAgICAgICAgICAgd2hlcmU9YmFzZWlkCi0g
ICAgICAgICkKLSAgICAgICAgc2VsZi5wYXJhbXMgPSBwYXJhbXMKLSAgICAgICAgc2VsZi5hcmdu
YW1lcyA9IGdldGZ1bmNhcmduYW1lcyhmdW5jLCBpc19tZXRob2Q9dW5pdHRlc3QpCi0gICAgICAg
IHNlbGYudW5pdHRlc3QgPSB1bml0dGVzdAotICAgICAgICBzZWxmLmlkcyA9IGlkcwotICAgICAg
ICBzZWxmLl9maW5hbGl6ZXJzID0gW10KLQotICAgIGRlZiBhZGRmaW5hbGl6ZXIoc2VsZiwgZmlu
YWxpemVyKToKLSAgICAgICAgc2VsZi5fZmluYWxpemVycy5hcHBlbmQoZmluYWxpemVyKQotCi0g
ICAgZGVmIGZpbmlzaChzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgZXhjZXB0aW9ucyA9IFtdCi0g
ICAgICAgIHRyeToKLSAgICAgICAgICAgIHdoaWxlIHNlbGYuX2ZpbmFsaXplcnM6Ci0gICAgICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmdW5jID0gc2VsZi5fZmluYWxpemVy
cy5wb3AoKQotICAgICAgICAgICAgICAgICAgICBmdW5jKCkKLSAgICAgICAgICAgICAgICBleGNl
cHQ6ICAjIG5vcWEKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9ucy5hcHBlbmQoc3lzLmV4
Y19pbmZvKCkpCi0gICAgICAgICAgICBpZiBleGNlcHRpb25zOgotICAgICAgICAgICAgICAgIGUg
PSBleGNlcHRpb25zWzBdCi0gICAgICAgICAgICAgICAgZGVsIGV4Y2VwdGlvbnMgICMgZW5zdXJl
IHdlIGRvbid0IGtlZXAgYWxsIGZyYW1lcyBhbGl2ZSBiZWNhdXNlIG9mIHRoZSB0cmFjZWJhY2sK
LSAgICAgICAgICAgICAgICBweS5idWlsdGluLl9yZXJhaXNlKCplKQotCi0gICAgICAgIGZpbmFs
bHk6Ci0gICAgICAgICAgICBob29rID0gc2VsZi5fZml4dHVyZW1hbmFnZXIuc2Vzc2lvbi5nZXRo
b29rcHJveHkocmVxdWVzdC5ub2RlLmZzcGF0aCkKLSAgICAgICAgICAgIGhvb2sucHl0ZXN0X2Zp
eHR1cmVfcG9zdF9maW5hbGl6ZXIoZml4dHVyZWRlZj1zZWxmLCByZXF1ZXN0PXJlcXVlc3QpCi0g
ICAgICAgICAgICAjIGV2ZW4gaWYgZmluYWxpemF0aW9uIGZhaWxzLCB3ZSBpbnZhbGlkYXRlCi0g
ICAgICAgICAgICAjIHRoZSBjYWNoZWQgZml4dHVyZSB2YWx1ZSBhbmQgcmVtb3ZlCi0gICAgICAg
ICAgICAjIGFsbCBmaW5hbGl6ZXJzIGJlY2F1c2UgdGhleSBtYXkgYmUgYm91bmQgbWV0aG9kcyB3
aGljaCB3aWxsCi0gICAgICAgICAgICAjIGtlZXAgaW5zdGFuY2VzIGFsaXZlCi0gICAgICAgICAg
ICBpZiBoYXNhdHRyKHNlbGYsICJjYWNoZWRfcmVzdWx0Iik6Ci0gICAgICAgICAgICAgICAgZGVs
IHNlbGYuY2FjaGVkX3Jlc3VsdAotICAgICAgICAgICAgc2VsZi5fZmluYWxpemVycyA9IFtdCi0K
LSAgICBkZWYgZXhlY3V0ZShzZWxmLCByZXF1ZXN0KToKLSAgICAgICAgIyBnZXQgcmVxdWlyZWQg
YXJndW1lbnRzIGFuZCByZWdpc3RlciBvdXIgb3duIGZpbmlzaCgpCi0gICAgICAgICMgd2l0aCB0
aGVpciBmaW5hbGl6YXRpb24KLSAgICAgICAgZm9yIGFyZ25hbWUgaW4gc2VsZi5hcmduYW1lczoK
LSAgICAgICAgICAgIGZpeHR1cmVkZWYgPSByZXF1ZXN0Ll9nZXRfYWN0aXZlX2ZpeHR1cmVkZWYo
YXJnbmFtZSkKLSAgICAgICAgICAgIGlmIGFyZ25hbWUgIT0gInJlcXVlc3QiOgotICAgICAgICAg
ICAgICAgIGZpeHR1cmVkZWYuYWRkZmluYWxpemVyKGZ1bmN0b29scy5wYXJ0aWFsKHNlbGYuZmlu
aXNoLCByZXF1ZXN0PXJlcXVlc3QpKQotCi0gICAgICAgIG15X2NhY2hlX2tleSA9IHJlcXVlc3Qu
cGFyYW1faW5kZXgKLSAgICAgICAgY2FjaGVkX3Jlc3VsdCA9IGdldGF0dHIoc2VsZiwgImNhY2hl
ZF9yZXN1bHQiLCBOb25lKQotICAgICAgICBpZiBjYWNoZWRfcmVzdWx0IGlzIG5vdCBOb25lOgot
ICAgICAgICAgICAgcmVzdWx0LCBjYWNoZV9rZXksIGVyciA9IGNhY2hlZF9yZXN1bHQKLSAgICAg
ICAgICAgIGlmIG15X2NhY2hlX2tleSA9PSBjYWNoZV9rZXk6Ci0gICAgICAgICAgICAgICAgaWYg
ZXJyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBweS5idWlsdGluLl9yZXJhaXNl
KCplcnIpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IHJlc3VsdAotICAgICAgICAgICAgIyB3ZSBoYXZlIGEgcHJldmlvdXMgYnV0IGRpZmZlcmVudGx5
IHBhcmFtZXRyaXplZCBmaXh0dXJlIGluc3RhbmNlCi0gICAgICAgICAgICAjIHNvIHdlIG5lZWQg
dG8gdGVhciBpdCBkb3duIGJlZm9yZSBjcmVhdGluZyBhIG5ldyBvbmUKLSAgICAgICAgICAgIHNl
bGYuZmluaXNoKHJlcXVlc3QpCi0gICAgICAgICAgICBhc3NlcnQgbm90IGhhc2F0dHIoc2VsZiwg
ImNhY2hlZF9yZXN1bHQiKQotCi0gICAgICAgIGhvb2sgPSBzZWxmLl9maXh0dXJlbWFuYWdlci5z
ZXNzaW9uLmdldGhvb2twcm94eShyZXF1ZXN0Lm5vZGUuZnNwYXRoKQotICAgICAgICByZXR1cm4g
aG9vay5weXRlc3RfZml4dHVyZV9zZXR1cChmaXh0dXJlZGVmPXNlbGYsIHJlcXVlc3Q9cmVxdWVz
dCkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICgiPEZpeHR1cmVE
ZWYgbmFtZT0lciBzY29wZT0lciBiYXNlaWQ9JXIgPiIgJQotICAgICAgICAgICAgICAgIChzZWxm
LmFyZ25hbWUsIHNlbGYuc2NvcGUsIHNlbGYuYmFzZWlkKSkKLQotCi1kZWYgcHl0ZXN0X2ZpeHR1
cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6Ci0gICAgIiIiIEV4ZWN1dGlvbiBvZiBmaXh0
dXJlIHNldHVwLiAiIiIKLSAgICBrd2FyZ3MgPSB7fQotICAgIGZvciBhcmduYW1lIGluIGZpeHR1
cmVkZWYuYXJnbmFtZXM6Ci0gICAgICAgIGZpeGRlZiA9IHJlcXVlc3QuX2dldF9hY3RpdmVfZml4
dHVyZWRlZihhcmduYW1lKQotICAgICAgICByZXN1bHQsIGFyZ19jYWNoZV9rZXksIGV4YyA9IGZp
eGRlZi5jYWNoZWRfcmVzdWx0Ci0gICAgICAgIHJlcXVlc3QuX2NoZWNrX3Njb3BlKGFyZ25hbWUs
IHJlcXVlc3Quc2NvcGUsIGZpeGRlZi5zY29wZSkKLSAgICAgICAga3dhcmdzW2FyZ25hbWVdID0g
cmVzdWx0Ci0KLSAgICBmaXh0dXJlZnVuYyA9IGZpeHR1cmVkZWYuZnVuYwotICAgIGlmIGZpeHR1
cmVkZWYudW5pdHRlc3Q6Ci0gICAgICAgIGlmIHJlcXVlc3QuaW5zdGFuY2UgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICAjIGJpbmQgdGhlIHVuYm91bmQgbWV0aG9kIHRvIHRoZSBUZXN0Q2FzZSBp
bnN0YW5jZQotICAgICAgICAgICAgZml4dHVyZWZ1bmMgPSBmaXh0dXJlZGVmLmZ1bmMuX19nZXRf
XyhyZXF1ZXN0Lmluc3RhbmNlKQotICAgIGVsc2U6Ci0gICAgICAgICMgdGhlIGZpeHR1cmUgZnVu
Y3Rpb24gbmVlZHMgdG8gYmUgYm91bmQgdG8gdGhlIGFjdHVhbAotICAgICAgICAjIHJlcXVlc3Qu
aW5zdGFuY2Ugc28gdGhhdCBjb2RlIHdvcmtpbmcgd2l0aCAiZml4dHVyZWRlZiIgYmVoYXZlcwot
ICAgICAgICAjIGFzIGV4cGVjdGVkLgotICAgICAgICBpZiByZXF1ZXN0Lmluc3RhbmNlIGlzIG5v
dCBOb25lOgotICAgICAgICAgICAgZml4dHVyZWZ1bmMgPSBnZXRpbWZ1bmMoZml4dHVyZWRlZi5m
dW5jKQotICAgICAgICAgICAgaWYgZml4dHVyZWZ1bmMgIT0gZml4dHVyZWRlZi5mdW5jOgotICAg
ICAgICAgICAgICAgIGZpeHR1cmVmdW5jID0gZml4dHVyZWZ1bmMuX19nZXRfXyhyZXF1ZXN0Lmlu
c3RhbmNlKQotICAgIG15X2NhY2hlX2tleSA9IHJlcXVlc3QucGFyYW1faW5kZXgKLSAgICB0cnk6
Ci0gICAgICAgIHJlc3VsdCA9IGNhbGxfZml4dHVyZV9mdW5jKGZpeHR1cmVmdW5jLCByZXF1ZXN0
LCBrd2FyZ3MpCi0gICAgZXhjZXB0IFRFU1RfT1VUQ09NRToKLSAgICAgICAgZml4dHVyZWRlZi5j
YWNoZWRfcmVzdWx0ID0gKE5vbmUsIG15X2NhY2hlX2tleSwgc3lzLmV4Y19pbmZvKCkpCi0gICAg
ICAgIHJhaXNlCi0gICAgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0ID0gKHJlc3VsdCwgbXlfY2Fj
aGVfa2V5LCBOb25lKQotICAgIHJldHVybiByZXN1bHQKLQotCi1kZWYgX2Vuc3VyZV9pbW11dGFi
bGVfaWRzKGlkcyk6Ci0gICAgaWYgaWRzIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybgotICAgIGlm
IGNhbGxhYmxlKGlkcyk6Ci0gICAgICAgIHJldHVybiBpZHMKLSAgICByZXR1cm4gdHVwbGUoaWRz
KQotCi0KLUBhdHRyLnMoZnJvemVuPVRydWUpCi1jbGFzcyBGaXh0dXJlRnVuY3Rpb25NYXJrZXIo
b2JqZWN0KToKLSAgICBzY29wZSA9IGF0dHIuaWIoKQotICAgIHBhcmFtcyA9IGF0dHIuaWIoY29u
dmVydD1hdHRyLmNvbnZlcnRlcnMub3B0aW9uYWwodHVwbGUpKQotICAgIGF1dG91c2UgPSBhdHRy
LmliKGRlZmF1bHQ9RmFsc2UpCi0gICAgaWRzID0gYXR0ci5pYihkZWZhdWx0PU5vbmUsIGNvbnZl
cnQ9X2Vuc3VyZV9pbW11dGFibGVfaWRzKQotICAgIG5hbWUgPSBhdHRyLmliKGRlZmF1bHQ9Tm9u
ZSkKLQotICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBmdW5jdGlvbik6Ci0gICAgICAgIGlmIGlzY2xh
c3MoZnVuY3Rpb24pOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKLSAgICAgICAgICAg
ICAgICAiY2xhc3MgZml4dHVyZXMgbm90IHN1cHBvcnRlZCAobWF5IGJlIGluIHRoZSBmdXR1cmUp
IikKLSAgICAgICAgZnVuY3Rpb24uX3B5dGVzdGZpeHR1cmVmdW5jdGlvbiA9IHNlbGYKLSAgICAg
ICAgcmV0dXJuIGZ1bmN0aW9uCi0KLQotZGVmIGZpeHR1cmUoc2NvcGU9ImZ1bmN0aW9uIiwgcGFy
YW1zPU5vbmUsIGF1dG91c2U9RmFsc2UsIGlkcz1Ob25lLCBuYW1lPU5vbmUpOgotICAgICIiIiAo
cmV0dXJuIGEpIGRlY29yYXRvciB0byBtYXJrIGEgZml4dHVyZSBmYWN0b3J5IGZ1bmN0aW9uLgot
Ci0gICAgVGhpcyBkZWNvcmF0b3IgY2FuIGJlIHVzZWQgKHdpdGggb3Igd2l0aG91dCBwYXJhbWV0
ZXJzKSB0byBkZWZpbmUgYQotICAgIGZpeHR1cmUgZnVuY3Rpb24uICBUaGUgbmFtZSBvZiB0aGUg
Zml4dHVyZSBmdW5jdGlvbiBjYW4gbGF0ZXIgYmUKLSAgICByZWZlcmVuY2VkIHRvIGNhdXNlIGl0
cyBpbnZvY2F0aW9uIGFoZWFkIG9mIHJ1bm5pbmcgdGVzdHM6IHRlc3QKLSAgICBtb2R1bGVzIG9y
IGNsYXNzZXMgY2FuIHVzZSB0aGUgcHl0ZXN0Lm1hcmsudXNlZml4dHVyZXMoZml4dHVyZW5hbWUp
Ci0gICAgbWFya2VyLiAgVGVzdCBmdW5jdGlvbnMgY2FuIGRpcmVjdGx5IHVzZSBmaXh0dXJlIG5h
bWVzIGFzIGlucHV0Ci0gICAgYXJndW1lbnRzIGluIHdoaWNoIGNhc2UgdGhlIGZpeHR1cmUgaW5z
dGFuY2UgcmV0dXJuZWQgZnJvbSB0aGUgZml4dHVyZQotICAgIGZ1bmN0aW9uIHdpbGwgYmUgaW5q
ZWN0ZWQuCi0KLSAgICA6YXJnIHNjb3BlOiB0aGUgc2NvcGUgZm9yIHdoaWNoIHRoaXMgZml4dHVy
ZSBpcyBzaGFyZWQsIG9uZSBvZgotICAgICAgICAgICAgICAgICJmdW5jdGlvbiIgKGRlZmF1bHQp
LCAiY2xhc3MiLCAibW9kdWxlIiBvciAic2Vzc2lvbiIuCi0KLSAgICA6YXJnIHBhcmFtczogYW4g
b3B0aW9uYWwgbGlzdCBvZiBwYXJhbWV0ZXJzIHdoaWNoIHdpbGwgY2F1c2UgbXVsdGlwbGUKLSAg
ICAgICAgICAgICAgICBpbnZvY2F0aW9ucyBvZiB0aGUgZml4dHVyZSBmdW5jdGlvbiBhbmQgYWxs
IG9mIHRoZSB0ZXN0cwotICAgICAgICAgICAgICAgIHVzaW5nIGl0LgotCi0gICAgOmFyZyBhdXRv
dXNlOiBpZiBUcnVlLCB0aGUgZml4dHVyZSBmdW5jIGlzIGFjdGl2YXRlZCBmb3IgYWxsIHRlc3Rz
IHRoYXQKLSAgICAgICAgICAgICAgICBjYW4gc2VlIGl0LiAgSWYgRmFsc2UgKHRoZSBkZWZhdWx0
KSB0aGVuIGFuIGV4cGxpY2l0Ci0gICAgICAgICAgICAgICAgcmVmZXJlbmNlIGlzIG5lZWRlZCB0
byBhY3RpdmF0ZSB0aGUgZml4dHVyZS4KLQotICAgIDphcmcgaWRzOiBsaXN0IG9mIHN0cmluZyBp
ZHMgZWFjaCBjb3JyZXNwb25kaW5nIHRvIHRoZSBwYXJhbXMKLSAgICAgICAgICAgICAgICBzbyB0
aGF0IHRoZXkgYXJlIHBhcnQgb2YgdGhlIHRlc3QgaWQuIElmIG5vIGlkcyBhcmUgcHJvdmlkZWQK
LSAgICAgICAgICAgICAgICB0aGV5IHdpbGwgYmUgZ2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgZnJv
bSB0aGUgcGFyYW1zLgotCi0gICAgOmFyZyBuYW1lOiB0aGUgbmFtZSBvZiB0aGUgZml4dHVyZS4g
VGhpcyBkZWZhdWx0cyB0byB0aGUgbmFtZSBvZiB0aGUKLSAgICAgICAgICAgICAgICBkZWNvcmF0
ZWQgZnVuY3Rpb24uIElmIGEgZml4dHVyZSBpcyB1c2VkIGluIHRoZSBzYW1lIG1vZHVsZSBpbgot
ICAgICAgICAgICAgICAgIHdoaWNoIGl0IGlzIGRlZmluZWQsIHRoZSBmdW5jdGlvbiBuYW1lIG9m
IHRoZSBmaXh0dXJlIHdpbGwgYmUKLSAgICAgICAgICAgICAgICBzaGFkb3dlZCBieSB0aGUgZnVu
Y3Rpb24gYXJnIHRoYXQgcmVxdWVzdHMgdGhlIGZpeHR1cmU7IG9uZSB3YXkKLSAgICAgICAgICAg
ICAgICB0byByZXNvbHZlIHRoaXMgaXMgdG8gbmFtZSB0aGUgZGVjb3JhdGVkIGZ1bmN0aW9uCi0g
ICAgICAgICAgICAgICAgYGBmaXh0dXJlXzxmaXh0dXJlbmFtZT5gYCBhbmQgdGhlbiB1c2UKLSAg
ICAgICAgICAgICAgICBgYEBweXRlc3QuZml4dHVyZShuYW1lPSc8Zml4dHVyZW5hbWU+JylgYC4K
LQotICAgIEZpeHR1cmVzIGNhbiBvcHRpb25hbGx5IHByb3ZpZGUgdGhlaXIgdmFsdWVzIHRvIHRl
c3QgZnVuY3Rpb25zIHVzaW5nIGEgYGB5aWVsZGBgIHN0YXRlbWVudCwKLSAgICBpbnN0ZWFkIG9m
IGBgcmV0dXJuYGAuIEluIHRoaXMgY2FzZSwgdGhlIGNvZGUgYmxvY2sgYWZ0ZXIgdGhlIGBgeWll
bGRgYCBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQKLSAgICBhcyB0ZWFyZG93biBjb2RlIHJlZ2FyZGxl
c3Mgb2YgdGhlIHRlc3Qgb3V0Y29tZS4gQSBmaXh0dXJlIGZ1bmN0aW9uIG11c3QgeWllbGQgZXhh
Y3RseSBvbmNlLgotICAgICIiIgotICAgIGlmIGNhbGxhYmxlKHNjb3BlKSBhbmQgcGFyYW1zIGlz
IE5vbmUgYW5kIGF1dG91c2UgaXMgRmFsc2U6Ci0gICAgICAgICMgZGlyZWN0IGRlY29yYXRpb24K
LSAgICAgICAgcmV0dXJuIEZpeHR1cmVGdW5jdGlvbk1hcmtlcigKLSAgICAgICAgICAgICJmdW5j
dGlvbiIsIHBhcmFtcywgYXV0b3VzZSwgbmFtZT1uYW1lKShzY29wZSkKLSAgICBpZiBwYXJhbXMg
aXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHBhcmFtcywgKGxpc3QsIHR1cGxlKSk6Ci0g
ICAgICAgIHBhcmFtcyA9IGxpc3QocGFyYW1zKQotICAgIHJldHVybiBGaXh0dXJlRnVuY3Rpb25N
YXJrZXIoc2NvcGUsIHBhcmFtcywgYXV0b3VzZSwgaWRzPWlkcywgbmFtZT1uYW1lKQotCi0KLWRl
ZiB5aWVsZF9maXh0dXJlKHNjb3BlPSJmdW5jdGlvbiIsIHBhcmFtcz1Ob25lLCBhdXRvdXNlPUZh
bHNlLCBpZHM9Tm9uZSwgbmFtZT1Ob25lKToKLSAgICAiIiIgKHJldHVybiBhKSBkZWNvcmF0b3Ig
dG8gbWFyayBhIHlpZWxkLWZpeHR1cmUgZmFjdG9yeSBmdW5jdGlvbi4KLQotICAgIC4uIGRlcHJl
Y2F0ZWQ6OiAzLjAKLSAgICAgICAgVXNlIDpweTpmdW5jOmBweXRlc3QuZml4dHVyZWAgZGlyZWN0
bHkgaW5zdGVhZC4KLSAgICAiIiIKLSAgICBpZiBjYWxsYWJsZShzY29wZSkgYW5kIHBhcmFtcyBp
cyBOb25lIGFuZCBub3QgYXV0b3VzZToKLSAgICAgICAgIyBkaXJlY3QgZGVjb3JhdGlvbgotICAg
ICAgICByZXR1cm4gRml4dHVyZUZ1bmN0aW9uTWFya2VyKAotICAgICAgICAgICAgImZ1bmN0aW9u
IiwgcGFyYW1zLCBhdXRvdXNlLCBpZHM9aWRzLCBuYW1lPW5hbWUpKHNjb3BlKQotICAgIGVsc2U6
Ci0gICAgICAgIHJldHVybiBGaXh0dXJlRnVuY3Rpb25NYXJrZXIoc2NvcGUsIHBhcmFtcywgYXV0
b3VzZSwgaWRzPWlkcywgbmFtZT1uYW1lKQotCi0KLWRlZmF1bHRmdW5jYXJncHJlZml4bWFya2Vy
ID0gZml4dHVyZSgpCi0KLQotQGZpeHR1cmUoc2NvcGU9InNlc3Npb24iKQotZGVmIHB5dGVzdGNv
bmZpZyhyZXF1ZXN0KToKLSAgICAiIiIgdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0IHdpdGggYWNj
ZXNzIHRvIGNvbW1hbmQgbGluZSBvcHRzLiIiIgotICAgIHJldHVybiByZXF1ZXN0LmNvbmZpZwot
Ci0KLWNsYXNzIEZpeHR1cmVNYW5hZ2VyOgotICAgICIiIgotICAgIHB5dGVzdCBmaXh0dXJlcyBk
ZWZpbml0aW9ucyBhbmQgaW5mb3JtYXRpb24gaXMgc3RvcmVkIGFuZCBtYW5hZ2VkCi0gICAgZnJv
bSB0aGlzIGNsYXNzLgotCi0gICAgRHVyaW5nIGNvbGxlY3Rpb24gZm0ucGFyc2VmYWN0b3JpZXMo
KSBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMgdG8gcGFyc2UKLSAgICBmaXh0dXJlIGZ1bmN0aW9u
IGRlZmluaXRpb25zIGludG8gRml4dHVyZURlZiBvYmplY3RzIGFuZCBpbnRlcm5hbAotICAgIGRh
dGEgc3RydWN0dXJlcy4KLQotICAgIER1cmluZyBjb2xsZWN0aW9uIG9mIHRlc3QgZnVuY3Rpb25z
LCBtZXRhZnVuYy1tZWNoYW5pY3MgaW5zdGFudGlhdGUKLSAgICBhIEZ1bmNGaXh0dXJlSW5mbyBv
YmplY3Qgd2hpY2ggaXMgY2FjaGVkIHBlciBub2RlL2Z1bmMtbmFtZS4KLSAgICBUaGlzIEZ1bmNG
aXh0dXJlSW5mbyBvYmplY3QgaXMgbGF0ZXIgcmV0cmlldmVkIGJ5IEZ1bmN0aW9uIG5vZGVzCi0g
ICAgd2hpY2ggdGhlbXNlbHZlcyBvZmZlciBhIGZpeHR1cmVuYW1lcyBhdHRyaWJ1dGUuCi0KLSAg
ICBUaGUgRnVuY0ZpeHR1cmVJbmZvIG9iamVjdCBob2xkcyBpbmZvcm1hdGlvbiBhYm91dCBmaXh0
dXJlcyBhbmQgRml4dHVyZURlZnMKLSAgICByZWxldmFudCBmb3IgYSBwYXJ0aWN1bGFyIGZ1bmN0
aW9uLiAgQW4gaW5pdGlhbCBsaXN0IG9mIGZpeHR1cmVzIGlzCi0gICAgYXNzZW1ibGVkIGxpa2Ug
dGhpczoKLQotICAgIC0gaW5pLWRlZmluZWQgdXNlZml4dHVyZXMKLSAgICAtIGF1dG91c2UtbWFy
a2VkIGZpeHR1cmVzIGFsb25nIHRoZSBjb2xsZWN0aW9uIGNoYWluIHVwIGZyb20gdGhlIGZ1bmN0
aW9uCi0gICAgLSB1c2VmaXh0dXJlcyBtYXJrZXJzIGF0IG1vZHVsZS9jbGFzcy9mdW5jdGlvbiBs
ZXZlbAotICAgIC0gdGVzdCBmdW5jdGlvbiBmdW5jYXJncwotCi0gICAgU3Vic2VxdWVudGx5IHRo
ZSBmdW5jZml4dHVyZWluZm8uZml4dHVyZW5hbWVzIGF0dHJpYnV0ZSBpcyBjb21wdXRlZAotICAg
IGFzIHRoZSBjbG9zdXJlIG9mIHRoZSBmaXh0dXJlcyBuZWVkZWQgdG8gc2V0dXAgdGhlIGluaXRp
YWwgZml4dHVyZXMsCi0gICAgaS4gZS4gZml4dHVyZXMgbmVlZGVkIGJ5IGZpeHR1cmUgZnVuY3Rp
b25zIHRoZW1zZWx2ZXMgYXJlIGFwcGVuZGVkCi0gICAgdG8gdGhlIGZpeHR1cmVuYW1lcyBsaXN0
LgotCi0gICAgVXBvbiB0aGUgdGVzdC1zZXR1cCBwaGFzZXMgYWxsIGZpeHR1cmVuYW1lcyBhcmUg
aW5zdGFudGlhdGVkLCByZXRyaWV2ZWQKLSAgICBieSBhIGxvb2t1cCBvZiB0aGVpciBGdW5jRml4
dHVyZUluZm8uCi0gICAgIiIiCi0KLSAgICBfYXJncHJlZml4ID0gInB5dGVzdF9mdW5jYXJnX18i
Ci0gICAgRml4dHVyZUxvb2t1cEVycm9yID0gRml4dHVyZUxvb2t1cEVycm9yCi0gICAgRml4dHVy
ZUxvb2t1cEVycm9yUmVwciA9IEZpeHR1cmVMb29rdXBFcnJvclJlcHIKLQotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBzZXNzaW9uKToKLSAgICAgICAgc2VsZi5zZXNzaW9uID0gc2Vzc2lvbgotICAg
ICAgICBzZWxmLmNvbmZpZyA9IHNlc3Npb24uY29uZmlnCi0gICAgICAgIHNlbGYuX2FyZzJmaXh0
dXJlZGVmcyA9IHt9Ci0gICAgICAgIHNlbGYuX2hvbGRlcm9ianNlZW4gPSBzZXQoKQotICAgICAg
ICBzZWxmLl9hcmcyZmluaXNoID0ge30KLSAgICAgICAgc2VsZi5fbm9kZWlkX2FuZF9hdXRvdXNl
bmFtZXMgPSBbKCIiLCBzZWxmLmNvbmZpZy5nZXRpbmkoInVzZWZpeHR1cmVzIikpXQotICAgICAg
ICBzZXNzaW9uLmNvbmZpZy5wbHVnaW5tYW5hZ2VyLnJlZ2lzdGVyKHNlbGYsICJmdW5jbWFuYWdl
IikKLQotICAgIGRlZiBnZXRmaXh0dXJlaW5mbyhzZWxmLCBub2RlLCBmdW5jLCBjbHMsIGZ1bmNh
cmdzPVRydWUpOgotICAgICAgICBpZiBmdW5jYXJncyBhbmQgbm90IGhhc2F0dHIobm9kZSwgIm5v
ZnVuY2FyZ3MiKToKLSAgICAgICAgICAgIGFyZ25hbWVzID0gZ2V0ZnVuY2FyZ25hbWVzKGZ1bmMs
IGNscz1jbHMpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBhcmduYW1lcyA9ICgpCi0gICAg
ICAgIHVzZWZpeHR1cmVzID0gZ2V0YXR0cihmdW5jLCAidXNlZml4dHVyZXMiLCBOb25lKQotICAg
ICAgICBpbml0aWFsbmFtZXMgPSBhcmduYW1lcwotICAgICAgICBpZiB1c2VmaXh0dXJlcyBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIGluaXRpYWxuYW1lcyA9IHVzZWZpeHR1cmVzLmFyZ3MgKyBp
bml0aWFsbmFtZXMKLSAgICAgICAgZm0gPSBub2RlLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0g
ICAgICAgIG5hbWVzX2Nsb3N1cmUsIGFyZzJmaXh0dXJlZGVmcyA9IGZtLmdldGZpeHR1cmVjbG9z
dXJlKGluaXRpYWxuYW1lcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgbm9kZSkKLSAgICAgICAgcmV0dXJuIEZ1bmNGaXh0dXJl
SW5mbyhhcmduYW1lcywgbmFtZXNfY2xvc3VyZSwgYXJnMmZpeHR1cmVkZWZzKQotCi0gICAgZGVm
IHB5dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZChzZWxmLCBwbHVnaW4pOgotICAgICAgICBub2RlaWQg
PSBOb25lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHAgPSBweS5wYXRoLmxvY2FsKHBsdWdp
bi5fX2ZpbGVfXykKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAg
cGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBjb25zdHJ1Y3QgdGhlIGJhc2Ugbm9k
ZWlkIHdoaWNoIGlzIGxhdGVyIHVzZWQgdG8gY2hlY2sKLSAgICAgICAgICAgICMgd2hhdCBmaXh0
dXJlcyBhcmUgdmlzaWJsZSBmb3IgcGFydGljdWxhciB0ZXN0cyAoYXMgZGVub3RlZAotICAgICAg
ICAgICAgIyBieSB0aGVpciB0ZXN0IGlkKQotICAgICAgICAgICAgaWYgcC5iYXNlbmFtZS5zdGFy
dHN3aXRoKCJjb25mdGVzdC5weSIpOgotICAgICAgICAgICAgICAgIG5vZGVpZCA9IHAuZGlycGF0
aCgpLnJlbHRvKHNlbGYuY29uZmlnLnJvb3RkaXIpCi0gICAgICAgICAgICAgICAgaWYgcC5zZXAg
IT0gbm9kZXMuU0VQOgotICAgICAgICAgICAgICAgICAgICBub2RlaWQgPSBub2RlaWQucmVwbGFj
ZShwLnNlcCwgbm9kZXMuU0VQKQotICAgICAgICBzZWxmLnBhcnNlZmFjdG9yaWVzKHBsdWdpbiwg
bm9kZWlkKQotCi0gICAgZGVmIF9nZXRhdXRvdXNlbmFtZXMoc2VsZiwgbm9kZWlkKToKLSAgICAg
ICAgIiIiIHJldHVybiBhIHR1cGxlIG9mIGZpeHR1cmUgbmFtZXMgdG8gYmUgdXNlZC4gIiIiCi0g
ICAgICAgIGF1dG91c2VuYW1lcyA9IFtdCi0gICAgICAgIGZvciBiYXNlaWQsIGJhc2VuYW1lcyBp
biBzZWxmLl9ub2RlaWRfYW5kX2F1dG91c2VuYW1lczoKLSAgICAgICAgICAgIGlmIG5vZGVpZC5z
dGFydHN3aXRoKGJhc2VpZCk6Ci0gICAgICAgICAgICAgICAgaWYgYmFzZWlkOgotICAgICAgICAg
ICAgICAgICAgICBpID0gbGVuKGJhc2VpZCkKLSAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIg
PSBub2RlaWRbaTppICsgMV0KLSAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgYW5kIG5l
eHRjaGFyIG5vdCBpbiAiOi8iOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgICAgICBhdXRvdXNlbmFtZXMuZXh0ZW5kKGJhc2VuYW1lcykKLSAgICAgICAgIyBt
YWtlIHN1cmUgYXV0b3VzZW5hbWVzIGFyZSBzb3J0ZWQgYnkgc2NvcGUsIHNjb3BlbnVtIDAgaXMg
c2Vzc2lvbgotICAgICAgICBhdXRvdXNlbmFtZXMuc29ydCgKLSAgICAgICAgICAgIGtleT1sYW1i
ZGEgeDogc2VsZi5fYXJnMmZpeHR1cmVkZWZzW3hdWy0xXS5zY29wZW51bSkKLSAgICAgICAgcmV0
dXJuIGF1dG91c2VuYW1lcwotCi0gICAgZGVmIGdldGZpeHR1cmVjbG9zdXJlKHNlbGYsIGZpeHR1
cmVuYW1lcywgcGFyZW50bm9kZSk6Ci0gICAgICAgICMgY29sbGVjdCB0aGUgY2xvc3VyZSBvZiBh
bGwgZml4dHVyZXMgLCBzdGFydGluZyB3aXRoIHRoZSBnaXZlbgotICAgICAgICAjIGZpeHR1cmVu
YW1lcyBhcyB0aGUgaW5pdGlhbCBzZXQuICBBcyB3ZSBoYXZlIHRvIHZpc2l0IGFsbAotICAgICAg
ICAjIGZhY3RvcnkgZGVmaW5pdGlvbnMgYW55d2F5LCB3ZSBhbHNvIHJldHVybiBhIGFyZzJmaXh0
dXJlZGVmcwotICAgICAgICAjIG1hcHBpbmcgc28gdGhhdCB0aGUgY2FsbGVyIGNhbiByZXVzZSBp
dCBhbmQgZG9lcyBub3QgaGF2ZQotICAgICAgICAjIHRvIHJlLWRpc2NvdmVyIGZpeHR1cmVkZWZz
IGFnYWluIGZvciBlYWNoIGZpeHR1cmVuYW1lCi0gICAgICAgICMgKGRpc2NvdmVyaW5nIG1hdGNo
aW5nIGZpeHR1cmVzIGZvciBhIGdpdmVuIG5hbWUvbm9kZSBpcyBleHBlbnNpdmUpCi0KLSAgICAg
ICAgcGFyZW50aWQgPSBwYXJlbnRub2RlLm5vZGVpZAotICAgICAgICBmaXh0dXJlbmFtZXNfY2xv
c3VyZSA9IHNlbGYuX2dldGF1dG91c2VuYW1lcyhwYXJlbnRpZCkKLQotICAgICAgICBkZWYgbWVy
Z2Uob3RoZXJsaXN0KToKLSAgICAgICAgICAgIGZvciBhcmcgaW4gb3RoZXJsaXN0OgotICAgICAg
ICAgICAgICAgIGlmIGFyZyBub3QgaW4gZml4dHVyZW5hbWVzX2Nsb3N1cmU6Ci0gICAgICAgICAg
ICAgICAgICAgIGZpeHR1cmVuYW1lc19jbG9zdXJlLmFwcGVuZChhcmcpCi0KLSAgICAgICAgbWVy
Z2UoZml4dHVyZW5hbWVzKQotICAgICAgICBhcmcyZml4dHVyZWRlZnMgPSB7fQotICAgICAgICBs
YXN0bGVuID0gLTEKLSAgICAgICAgd2hpbGUgbGFzdGxlbiAhPSBsZW4oZml4dHVyZW5hbWVzX2Ns
b3N1cmUpOgotICAgICAgICAgICAgbGFzdGxlbiA9IGxlbihmaXh0dXJlbmFtZXNfY2xvc3VyZSkK
LSAgICAgICAgICAgIGZvciBhcmduYW1lIGluIGZpeHR1cmVuYW1lc19jbG9zdXJlOgotICAgICAg
ICAgICAgICAgIGlmIGFyZ25hbWUgaW4gYXJnMmZpeHR1cmVkZWZzOgotICAgICAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGZpeHR1cmVkZWZzID0gc2VsZi5nZXRmaXh0
dXJlZGVmcyhhcmduYW1lLCBwYXJlbnRpZCkKLSAgICAgICAgICAgICAgICBpZiBmaXh0dXJlZGVm
czoKLSAgICAgICAgICAgICAgICAgICAgYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdID0gZml4dHVy
ZWRlZnMKLSAgICAgICAgICAgICAgICAgICAgbWVyZ2UoZml4dHVyZWRlZnNbLTFdLmFyZ25hbWVz
KQotICAgICAgICByZXR1cm4gZml4dHVyZW5hbWVzX2Nsb3N1cmUsIGFyZzJmaXh0dXJlZGVmcwot
Ci0gICAgZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhzZWxmLCBtZXRhZnVuYyk6Ci0gICAgICAg
IGZvciBhcmduYW1lIGluIG1ldGFmdW5jLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgIGZhY2xp
c3QgPSBtZXRhZnVuYy5fYXJnMmZpeHR1cmVkZWZzLmdldChhcmduYW1lKQotICAgICAgICAgICAg
aWYgZmFjbGlzdDoKLSAgICAgICAgICAgICAgICBmaXh0dXJlZGVmID0gZmFjbGlzdFstMV0KLSAg
ICAgICAgICAgICAgICBpZiBmaXh0dXJlZGVmLnBhcmFtcyBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICAgICAgcGFyYW1ldHJpemVfZnVuYyA9IGdldGF0dHIobWV0YWZ1bmMuZnVuY3Rpb24s
ICdwYXJhbWV0cml6ZScsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIGZ1bmNfcGFyYW1zID0g
Z2V0YXR0cihwYXJhbWV0cml6ZV9mdW5jLCAnYXJncycsIFtbTm9uZV1dKQotICAgICAgICAgICAg
ICAgICAgICBmdW5jX2t3YXJncyA9IGdldGF0dHIocGFyYW1ldHJpemVfZnVuYywgJ2t3YXJncycs
IHt9KQotICAgICAgICAgICAgICAgICAgICAjIHNraXAgZGlyZWN0bHkgcGFyYW1ldHJpemVkIGFy
Z3VtZW50cwotICAgICAgICAgICAgICAgICAgICBpZiAiYXJnbmFtZXMiIGluIGZ1bmNfa3dhcmdz
OgotICAgICAgICAgICAgICAgICAgICAgICAgYXJnbmFtZXMgPSBwYXJhbWV0cml6ZV9mdW5jLmt3
YXJnc1siYXJnbmFtZXMiXQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgICAgICAgICAgYXJnbmFtZXMgPSBmdW5jX3BhcmFtc1swXQotICAgICAgICAgICAgICAgICAg
ICBpZiBub3QgaXNpbnN0YW5jZShhcmduYW1lcywgKHR1cGxlLCBsaXN0KSk6Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBhcmduYW1lcyA9IFt4LnN0cmlwKCkgZm9yIHggaW4gYXJnbmFtZXMuc3Bs
aXQoIiwiKSBpZiB4LnN0cmlwKCldCi0gICAgICAgICAgICAgICAgICAgIGlmIGFyZ25hbWUgbm90
IGluIGZ1bmNfcGFyYW1zIGFuZCBhcmduYW1lIG5vdCBpbiBhcmduYW1lczoKLSAgICAgICAgICAg
ICAgICAgICAgICAgIG1ldGFmdW5jLnBhcmFtZXRyaXplKGFyZ25hbWUsIGZpeHR1cmVkZWYucGFy
YW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5kaXJl
Y3Q9VHJ1ZSwgc2NvcGU9Zml4dHVyZWRlZi5zY29wZSwKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGlkcz1maXh0dXJlZGVmLmlkcykKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgY29udGludWUgICMgd2lsbCByYWlzZSBGaXh0dXJlTG9va3Vw
RXJyb3IgYXQgc2V0dXAgdGltZQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0
ZW1zKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIyBzZXBhcmF0ZSBwYXJhbWV0cml6ZWQgc2V0dXBz
Ci0gICAgICAgIGl0ZW1zWzpdID0gcmVvcmRlcl9pdGVtcyhpdGVtcykKLQotICAgIGRlZiBwYXJz
ZWZhY3RvcmllcyhzZWxmLCBub2RlX29yX29iaiwgbm9kZWlkPU5PVFNFVCwgdW5pdHRlc3Q9RmFs
c2UpOgotICAgICAgICBpZiBub2RlaWQgaXMgbm90IE5PVFNFVDoKLSAgICAgICAgICAgIGhvbGRl
cm9iaiA9IG5vZGVfb3Jfb2JqCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBob2xkZXJvYmog
PSBub2RlX29yX29iai5vYmoKLSAgICAgICAgICAgIG5vZGVpZCA9IG5vZGVfb3Jfb2JqLm5vZGVp
ZAotICAgICAgICBpZiBob2xkZXJvYmogaW4gc2VsZi5faG9sZGVyb2Jqc2VlbjoKLSAgICAgICAg
ICAgIHJldHVybgotICAgICAgICBzZWxmLl9ob2xkZXJvYmpzZWVuLmFkZChob2xkZXJvYmopCi0g
ICAgICAgIGF1dG91c2VuYW1lcyA9IFtdCi0gICAgICAgIGZvciBuYW1lIGluIGRpcihob2xkZXJv
YmopOgotICAgICAgICAgICAgIyBUaGUgYXR0cmlidXRlIGNhbiBiZSBhbiBhcmJpdHJhcnkgZGVz
Y3JpcHRvciwgc28gdGhlIGF0dHJpYnV0ZQotICAgICAgICAgICAgIyBhY2Nlc3MgYmVsb3cgY2Fu
IHJhaXNlLiBzYWZlX2dldGF0dCgpIGlnbm9yZXMgc3VjaCBleGNlcHRpb25zLgotICAgICAgICAg
ICAgb2JqID0gc2FmZV9nZXRhdHRyKGhvbGRlcm9iaiwgbmFtZSwgTm9uZSkKLSAgICAgICAgICAg
ICMgZml4dHVyZSBmdW5jdGlvbnMgaGF2ZSBhIHB5dGVzdF9mdW5jYXJnX18gcHJlZml4IChwcmUt
Mi4zIHN0eWxlKQotICAgICAgICAgICAgIyBvciBhcmUgIkBweXRlc3QuZml4dHVyZSIgbWFya2Vk
Ci0gICAgICAgICAgICBtYXJrZXIgPSBnZXRmaXh0dXJlbWFya2VyKG9iaikKLSAgICAgICAgICAg
IGlmIG1hcmtlciBpcyBOb25lOgotICAgICAgICAgICAgICAgIGlmIG5vdCBuYW1lLnN0YXJ0c3dp
dGgoc2VsZi5fYXJncHJlZml4KToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAg
ICAgICAgICAgICBpZiBub3QgY2FsbGFibGUob2JqKToKLSAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgICAgICBtYXJrZXIgPSBkZWZhdWx0ZnVuY2FyZ3ByZWZpeG1hcmtl
cgotICAgICAgICAgICAgICAgIGZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVjYXRlZAotICAgICAg
ICAgICAgICAgIHNlbGYuY29uZmlnLndhcm4oJ0MxJywgZGVwcmVjYXRlZC5GVU5DQVJHX1BSRUZJ
WC5mb3JtYXQobmFtZT1uYW1lKSwgbm9kZWlkPW5vZGVpZCkKLSAgICAgICAgICAgICAgICBuYW1l
ID0gbmFtZVtsZW4oc2VsZi5fYXJncHJlZml4KTpdCi0gICAgICAgICAgICBlbGlmIG5vdCBpc2lu
c3RhbmNlKG1hcmtlciwgRml4dHVyZUZ1bmN0aW9uTWFya2VyKToKLSAgICAgICAgICAgICAgICAj
IG1hZ2ljIGdsb2JhbHMgIHdpdGggX19nZXRhdHRyX18gbWlnaHQgaGF2ZSBnb3QgdXMgYSB3cm9u
ZwotICAgICAgICAgICAgICAgICMgZml4dHVyZSBhdHRyaWJ1dGUKLSAgICAgICAgICAgICAgICBj
b250aW51ZQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiBtYXJrZXIubmFt
ZToKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9IG1hcmtlci5uYW1lCi0gICAgICAgICAgICAg
ICAgbXNnID0gJ2ZpeHR1cmVzIGNhbm5vdCBoYXZlICJweXRlc3RfZnVuY2FyZ19fIiBwcmVmaXgg
JyBcCi0gICAgICAgICAgICAgICAgICAgICAgJ2FuZCBiZSBkZWNvcmF0ZWQgd2l0aCBAcHl0ZXN0
LmZpeHR1cmU6XG4lcycgJSBuYW1lCi0gICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBuYW1lLnN0
YXJ0c3dpdGgoc2VsZi5fYXJncHJlZml4KSwgbXNnCi0KLSAgICAgICAgICAgIGZpeHR1cmVfZGVm
ID0gRml4dHVyZURlZihzZWxmLCBub2RlaWQsIG5hbWUsIG9iaiwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBtYXJrZXIuc2NvcGUsIG1hcmtlci5wYXJhbXMsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3Q9dW5pdHRlc3QsIGlkcz1tYXJr
ZXIuaWRzKQotCi0gICAgICAgICAgICBmYWNsaXN0ID0gc2VsZi5fYXJnMmZpeHR1cmVkZWZzLnNl
dGRlZmF1bHQobmFtZSwgW10pCi0gICAgICAgICAgICBpZiBmaXh0dXJlX2RlZi5oYXNfbG9jYXRp
b246Ci0gICAgICAgICAgICAgICAgZmFjbGlzdC5hcHBlbmQoZml4dHVyZV9kZWYpCi0gICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgZml4dHVyZWRlZnMgd2l0aCBubyBsb2NhdGlv
biBhcmUgYXQgdGhlIGZyb250Ci0gICAgICAgICAgICAgICAgIyBzbyB0aGlzIGluc2VydHMgdGhl
IGN1cnJlbnQgZml4dHVyZWRlZiBhZnRlciB0aGUKLSAgICAgICAgICAgICAgICAjIGV4aXN0aW5n
IGZpeHR1cmVkZWZzIGZyb20gZXh0ZXJuYWwgcGx1Z2lucyBidXQKLSAgICAgICAgICAgICAgICAj
IGJlZm9yZSB0aGUgZml4dHVyZWRlZnMgcHJvdmlkZWQgaW4gY29uZnRlc3RzLgotICAgICAgICAg
ICAgICAgIGkgPSBsZW4oW2YgZm9yIGYgaW4gZmFjbGlzdCBpZiBub3QgZi5oYXNfbG9jYXRpb25d
KQotICAgICAgICAgICAgICAgIGZhY2xpc3QuaW5zZXJ0KGksIGZpeHR1cmVfZGVmKQotICAgICAg
ICAgICAgaWYgbWFya2VyLmF1dG91c2U6Ci0gICAgICAgICAgICAgICAgYXV0b3VzZW5hbWVzLmFw
cGVuZChuYW1lKQotCi0gICAgICAgIGlmIGF1dG91c2VuYW1lczoKLSAgICAgICAgICAgIHNlbGYu
X25vZGVpZF9hbmRfYXV0b3VzZW5hbWVzLmFwcGVuZCgobm9kZWlkIG9yICcnLCBhdXRvdXNlbmFt
ZXMpKQotCi0gICAgZGVmIGdldGZpeHR1cmVkZWZzKHNlbGYsIGFyZ25hbWUsIG5vZGVpZCk6Ci0g
ICAgICAgICIiIgotICAgICAgICBHZXRzIGEgbGlzdCBvZiBmaXh0dXJlcyB3aGljaCBhcmUgYXBw
bGljYWJsZSB0byB0aGUgZ2l2ZW4gbm9kZSBpZC4KLQotICAgICAgICA6cGFyYW0gc3RyIGFyZ25h
bWU6IG5hbWUgb2YgdGhlIGZpeHR1cmUgdG8gc2VhcmNoIGZvcgotICAgICAgICA6cGFyYW0gc3Ry
IG5vZGVpZDogZnVsbCBub2RlIGlkIG9mIHRoZSByZXF1ZXN0aW5nIHRlc3QuCi0gICAgICAgIDpy
ZXR1cm46IGxpc3RbRml4dHVyZURlZl0KLSAgICAgICAgIiIiCi0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGZpeHR1cmVkZWZzID0gc2VsZi5fYXJnMmZpeHR1cmVkZWZzW2FyZ25hbWVdCi0gICAg
ICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICByZXR1cm4gdHVwbGUoc2VsZi5fbWF0Y2hmYWN0b3JpZXMoZml4dHVy
ZWRlZnMsIG5vZGVpZCkpCi0KLSAgICBkZWYgX21hdGNoZmFjdG9yaWVzKHNlbGYsIGZpeHR1cmVk
ZWZzLCBub2RlaWQpOgotICAgICAgICBmb3IgZml4dHVyZWRlZiBpbiBmaXh0dXJlZGVmczoKLSAg
ICAgICAgICAgIGlmIG5vZGVzLmlzY2hpbGRub2RlKGZpeHR1cmVkZWYuYmFzZWlkLCBub2RlaWQp
OgotICAgICAgICAgICAgICAgIHlpZWxkIGZpeHR1cmVkZWYKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvZnJlZXplX3N1cHBvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2ZyZWV6
ZV9zdXBwb3J0LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzE0N2E4ODI1MGEz
NTUzYzg1YzQ0YjE4MjgyM2U1NDJiOWY3NGJjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZnJlZXplX3N1cHBvcnQucHkK
KysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi0iIiIKLVByb3ZpZGVzIGEgZnVuY3Rpb24g
dG8gcmVwb3J0IGFsbCBpbnRlcm5hbCBtb2R1bGVzIGZvciB1c2luZyBmcmVlemluZyB0b29scwot
cHl0ZXN0Ci0iIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZp
c2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotCi1kZWYgZnJlZXplX2luY2x1ZGVzKCk6Ci0gICAgIiIi
Ci0gICAgUmV0dXJucyBhIGxpc3Qgb2YgbW9kdWxlIG5hbWVzIHVzZWQgYnkgcHkudGVzdCB0aGF0
IHNob3VsZCBiZQotICAgIGluY2x1ZGVkIGJ5IGN4X2ZyZWV6ZS4KLSAgICAiIiIKLSAgICBpbXBv
cnQgcHkKLSAgICBpbXBvcnQgX3B5dGVzdAotICAgIHJlc3VsdCA9IGxpc3QoX2l0ZXJfYWxsX21v
ZHVsZXMocHkpKQotICAgIHJlc3VsdCArPSBsaXN0KF9pdGVyX2FsbF9tb2R1bGVzKF9weXRlc3Qp
KQotICAgIHJldHVybiByZXN1bHQKLQotCi1kZWYgX2l0ZXJfYWxsX21vZHVsZXMocGFja2FnZSwg
cHJlZml4PScnKToKLSAgICAiIiIKLSAgICBJdGVyYXRlcyBvdmVyIHRoZSBuYW1lcyBvZiBhbGwg
bW9kdWxlcyB0aGF0IGNhbiBiZSBmb3VuZCBpbiB0aGUgZ2l2ZW4KLSAgICBwYWNrYWdlLCByZWN1
cnNpdmVseS4KLSAgICBFeGFtcGxlOgotICAgICAgICBfaXRlcl9hbGxfbW9kdWxlcyhfcHl0ZXN0
KSAtPgotICAgICAgICAgICAgWydfcHl0ZXN0LmFzc2VydGlvbi5uZXdpbnRlcnByZXQnLAotICAg
ICAgICAgICAgICdfcHl0ZXN0LmNhcHR1cmUnLAotICAgICAgICAgICAgICdfcHl0ZXN0LmNvcmUn
LAotICAgICAgICAgICAgIC4uLgotICAgICAgICAgICAgXQotICAgICIiIgotICAgIGltcG9ydCBv
cwotICAgIGltcG9ydCBwa2d1dGlsCi0gICAgaWYgdHlwZShwYWNrYWdlKSBpcyBub3Qgc3RyOgot
ICAgICAgICBwYXRoLCBwcmVmaXggPSBwYWNrYWdlLl9fcGF0aF9fWzBdLCBwYWNrYWdlLl9fbmFt
ZV9fICsgJy4nCi0gICAgZWxzZToKLSAgICAgICAgcGF0aCA9IHBhY2thZ2UKLSAgICBmb3IgXywg
bmFtZSwgaXNfcGFja2FnZSBpbiBwa2d1dGlsLml0ZXJfbW9kdWxlcyhbcGF0aF0pOgotICAgICAg
ICBpZiBpc19wYWNrYWdlOgotICAgICAgICAgICAgZm9yIG0gaW4gX2l0ZXJfYWxsX21vZHVsZXMo
b3MucGF0aC5qb2luKHBhdGgsIG5hbWUpLCBwcmVmaXg9bmFtZSArICcuJyk6Ci0gICAgICAgICAg
ICAgICAgeWllbGQgcHJlZml4ICsgbQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQg
cHJlZml4ICsgbmFtZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9oZWxwY29uZmln
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9oZWxwY29uZmlnLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBlNzQ0NjM3Zjg2NjBmMjcyYzQ4OGEyYWIwYzY4ZWU0ZTg1NzE4YmJiLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L19weXRlc3QvaGVscGNvbmZpZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE4NCArMCwwIEBACi0i
IiIgdmVyc2lvbiBpbmZvLCBoZWxwIG1lc3NhZ2VzLCB0cmFjaW5nIGNvbmZpZ3VyYXRpb24uICAi
IiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJp
bnRfZnVuY3Rpb24KLQotaW1wb3J0IHB5Ci1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QuY29u
ZmlnIGltcG9ydCBQcmludEhlbHAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotZnJvbSBhcmdwYXJz
ZSBpbXBvcnQgQWN0aW9uCi0KLQotY2xhc3MgSGVscEFjdGlvbihBY3Rpb24pOgotICAgICIiIlRo
aXMgaXMgYW4gYXJncGFyc2UgQWN0aW9uIHRoYXQgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gaW4K
LSAgICBvcmRlciB0byBza2lwIHRoZSByZXN0IG9mIHRoZSBhcmd1bWVudCBwYXJzaW5nIHdoZW4g
LS1oZWxwIGlzIHBhc3NlZC4KLSAgICBUaGlzIHByZXZlbnRzIGFyZ3BhcnNlIGZyb20gcXVpdHRp
bmcgZHVlIHRvIG1pc3NpbmcgcmVxdWlyZWQgYXJndW1lbnRzCi0gICAgd2hlbiBhbnkgYXJlIGRl
ZmluZWQsIGZvciBleGFtcGxlIGJ5IGBgcHl0ZXN0X2FkZG9wdGlvbmBgLgotICAgIFRoaXMgaXMg
c2ltaWxhciB0byB0aGUgd2F5IHRoYXQgdGhlIGJ1aWx0aW4gYXJncGFyc2UgLS1oZWxwIG9wdGlv
biBpcwotICAgIGltcGxlbWVudGVkIGJ5IHJhaXNpbmcgU3lzdGVtRXhpdC4KLSAgICAiIiIKLQot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLAotICAgICAgICAgICAgICAgICBvcHRpb25fc3RyaW5ncywK
LSAgICAgICAgICAgICAgICAgZGVzdD1Ob25lLAotICAgICAgICAgICAgICAgICBkZWZhdWx0PUZh
bHNlLAotICAgICAgICAgICAgICAgICBoZWxwPU5vbmUpOgotICAgICAgICBzdXBlcihIZWxwQWN0
aW9uLCBzZWxmKS5fX2luaXRfXygKLSAgICAgICAgICAgIG9wdGlvbl9zdHJpbmdzPW9wdGlvbl9z
dHJpbmdzLAotICAgICAgICAgICAgZGVzdD1kZXN0LAotICAgICAgICAgICAgY29uc3Q9VHJ1ZSwK
LSAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdCwKLSAgICAgICAgICAgIG5hcmdzPTAsCi0gICAg
ICAgICAgICBoZWxwPWhlbHApCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgcGFyc2VyLCBuYW1l
c3BhY2UsIHZhbHVlcywgb3B0aW9uX3N0cmluZz1Ob25lKToKLSAgICAgICAgc2V0YXR0cihuYW1l
c3BhY2UsIHNlbGYuZGVzdCwgc2VsZi5jb25zdCkKLQotICAgICAgICAjIFdlIHNob3VsZCBvbmx5
IHNraXAgdGhlIHJlc3Qgb2YgdGhlIHBhcnNpbmcgYWZ0ZXIgcHJlcGFyc2UgaXMgZG9uZQotICAg
ICAgICBpZiBnZXRhdHRyKHBhcnNlci5fcGFyc2VyLCAnYWZ0ZXJfcHJlcGFyc2UnLCBGYWxzZSk6
Ci0gICAgICAgICAgICByYWlzZSBQcmludEhlbHAKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihw
YXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCdkZWJ1Z2NvbmZpZycpCi0gICAg
Z3JvdXAuYWRkb3B0aW9uKCctLXZlcnNpb24nLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJkaXNwbGF5IHB5dGVzdCBsaWIgdmVyc2lvbiBhbmQgaW1wb3J0
IGluZm9ybWF0aW9uLiIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigiLWgiLCAiLS1oZWxwIiwgYWN0
aW9uPUhlbHBBY3Rpb24sIGRlc3Q9ImhlbHAiLAotICAgICAgICAgICAgICAgICAgICAgaGVscD0i
c2hvdyBoZWxwIG1lc3NhZ2UgYW5kIGNvbmZpZ3VyYXRpb24gaW5mbyIpCi0gICAgZ3JvdXAuX2Fk
ZG9wdGlvbignLXAnLCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InBsdWdpbnMiLCBkZWZhdWx0PVtd
LAotICAgICAgICAgICAgICAgICAgICAgbWV0YXZhcj0ibmFtZSIsCi0gICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJlYXJseS1sb2FkIGdpdmVuIHBsdWdpbiAobXVsdGktYWxsb3dlZCkuICIKLSAg
ICAgICAgICAgICAgICAgICAgICJUbyBhdm9pZCBsb2FkaW5nIG9mIHBsdWdpbnMsIHVzZSB0aGUg
YG5vOmAgcHJlZml4LCBlLmcuICIKLSAgICAgICAgICAgICAgICAgICAgICJgbm86ZG9jdGVzdGAu
IikKLSAgICBncm91cC5hZGRvcHRpb24oJy0tdHJhY2Vjb25maWcnLCAnLS10cmFjZS1jb25maWcn
LAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PUZhbHNl
LAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJ0cmFjZSBjb25zaWRlcmF0aW9ucyBvZiBjb25m
dGVzdC5weSBmaWxlcy4iKSwKLSAgICBncm91cC5hZGRvcHRpb24oJy0tZGVidWcnLAotICAgICAg
ICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJkZWJ1ZyIsIGRlZmF1bHQ9
RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9InN0b3JlIGludGVybmFsIHRyYWNpbmcg
ZGVidWcgaW5mb3JtYXRpb24gaW4gJ3B5dGVzdGRlYnVnLmxvZycuIikKLSAgICBncm91cC5fYWRk
b3B0aW9uKAotICAgICAgICAnLW8nLCAnLS1vdmVycmlkZS1pbmknLCBuYXJncz0nKicsIGRlc3Q9
Im92ZXJyaWRlX2luaSIsCi0gICAgICAgIGFjdGlvbj0iYXBwZW5kIiwKLSAgICAgICAgaGVscD0i
b3ZlcnJpZGUgY29uZmlnIG9wdGlvbiB3aXRoIG9wdGlvbj12YWx1ZSBzdHlsZSwgZS5nLiBgLW8g
eGZhaWxfc3RyaWN0PVRydWVgLiIpCi0KLQotQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1U
cnVlKQotZGVmIHB5dGVzdF9jbWRsaW5lX3BhcnNlKCk6Ci0gICAgb3V0Y29tZSA9IHlpZWxkCi0g
ICAgY29uZmlnID0gb3V0Y29tZS5nZXRfcmVzdWx0KCkKLSAgICBpZiBjb25maWcub3B0aW9uLmRl
YnVnOgotICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKCJweXRlc3RkZWJ1Zy5sb2ciKQot
ICAgICAgICBkZWJ1Z2ZpbGUgPSBvcGVuKHBhdGgsICd3JykKLSAgICAgICAgZGVidWdmaWxlLndy
aXRlKCJ2ZXJzaW9ucyBweXRlc3QtJXMsIHB5LSVzLCAiCi0gICAgICAgICAgICAgICAgICAgICAg
ICAicHl0aG9uLSVzXG5jd2Q9JXNcbmFyZ3M9JXNcblxuIiAlICgKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBweXRlc3QuX192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICIuIi5qb2luKG1hcChzdHIsIHN5cy52ZXJzaW9uX2luZm8pKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5nZXRjd2QoKSwgY29uZmlnLl9vcmlnYXJn
cykpCi0gICAgICAgIGNvbmZpZy50cmFjZS5yb290LnNldHdyaXRlcihkZWJ1Z2ZpbGUud3JpdGUp
Ci0gICAgICAgIHVuZG9fdHJhY2luZyA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmVuYWJsZV90cmFj
aW5nKCkKLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgid3JpdGluZyBweXRlc3RkZWJ1ZyBpbmZv
cm1hdGlvbiB0byAlc1xuIiAlIHBhdGgpCi0KLSAgICAgICAgZGVmIHVuc2V0X3RyYWNpbmcoKToK
LSAgICAgICAgICAgIGRlYnVnZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndy
aXRlKCJ3cm90ZSBweXRlc3RkZWJ1ZyBpbmZvcm1hdGlvbiB0byAlc1xuIiAlCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRlYnVnZmlsZS5uYW1lKQotICAgICAgICAgICAgY29uZmlnLnRy
YWNlLnJvb3Quc2V0d3JpdGVyKE5vbmUpCi0gICAgICAgICAgICB1bmRvX3RyYWNpbmcoKQotCi0g
ICAgICAgIGNvbmZpZy5hZGRfY2xlYW51cCh1bnNldF90cmFjaW5nKQotCi0KLWRlZiBweXRlc3Rf
Y21kbGluZV9tYWluKGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLm9wdGlvbi52ZXJzaW9uOgotICAg
ICAgICBwID0gcHkucGF0aC5sb2NhbChweXRlc3QuX19maWxlX18pCi0gICAgICAgIHN5cy5zdGRl
cnIud3JpdGUoIlRoaXMgaXMgcHl0ZXN0IHZlcnNpb24gJXMsIGltcG9ydGVkIGZyb20gJXNcbiIg
JQotICAgICAgICAgICAgICAgICAgICAgICAgIChweXRlc3QuX192ZXJzaW9uX18sIHApKQotICAg
ICAgICBwbHVnaW5pbmZvID0gZ2V0cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnKQotICAgICAgICBp
ZiBwbHVnaW5pbmZvOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gcGx1Z2luaW5mbzoKLSAgICAg
ICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGxpbmUgKyAiXG4iKQotICAgICAgICByZXR1cm4g
MAotICAgIGVsaWYgY29uZmlnLm9wdGlvbi5oZWxwOgotICAgICAgICBjb25maWcuX2RvX2NvbmZp
Z3VyZSgpCi0gICAgICAgIHNob3doZWxwKGNvbmZpZykKLSAgICAgICAgY29uZmlnLl9lbnN1cmVf
dW5jb25maWd1cmUoKQotICAgICAgICByZXR1cm4gMAotCi0KLWRlZiBzaG93aGVscChjb25maWcp
OgotICAgIHJlcG9ydGVyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0X3BsdWdpbigndGVybWlu
YWxyZXBvcnRlcicpCi0gICAgdHcgPSByZXBvcnRlci5fdHcKLSAgICB0dy53cml0ZShjb25maWcu
X3BhcnNlci5vcHRwYXJzZXIuZm9ybWF0X2hlbHAoKSkKLSAgICB0dy5saW5lKCkKLSAgICB0dy5s
aW5lKCkKLSAgICB0dy5saW5lKCJbcHl0ZXN0XSBpbmktb3B0aW9ucyBpbiB0aGUgZmlyc3QgIgot
ICAgICAgICAgICAgInB5dGVzdC5pbml8dG94LmluaXxzZXR1cC5jZmcgZmlsZSBmb3VuZDoiKQot
ICAgIHR3LmxpbmUoKQotCi0gICAgZm9yIG5hbWUgaW4gY29uZmlnLl9wYXJzZXIuX2luaW5hbWVz
OgotICAgICAgICBoZWxwLCB0eXBlLCBkZWZhdWx0ID0gY29uZmlnLl9wYXJzZXIuX2luaWRpY3Rb
bmFtZV0KLSAgICAgICAgaWYgdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgdHlwZSA9ICJzdHJp
bmciCi0gICAgICAgIHNwZWMgPSAiJXMgKCVzKSIgJSAobmFtZSwgdHlwZSkKLSAgICAgICAgbGlu
ZSA9ICIgICUtMjRzICVzIiAlIChzcGVjLCBoZWxwKQotICAgICAgICB0dy5saW5lKGxpbmVbOnR3
LmZ1bGx3aWR0aF0pCi0KLSAgICB0dy5saW5lKCkKLSAgICB0dy5saW5lKCJlbnZpcm9ubWVudCB2
YXJpYWJsZXM6IikKLSAgICB2YXJzID0gWwotICAgICAgICAoIlBZVEVTVF9BRERPUFRTIiwgImV4
dHJhIGNvbW1hbmQgbGluZSBvcHRpb25zIiksCi0gICAgICAgICgiUFlURVNUX1BMVUdJTlMiLCAi
Y29tbWEtc2VwYXJhdGVkIHBsdWdpbnMgdG8gbG9hZCBkdXJpbmcgc3RhcnR1cCIpLAotICAgICAg
ICAoIlBZVEVTVF9ERUJVRyIsICJzZXQgdG8gZW5hYmxlIGRlYnVnIHRyYWNpbmcgb2YgcHl0ZXN0
J3MgaW50ZXJuYWxzIikKLSAgICBdCi0gICAgZm9yIG5hbWUsIGhlbHAgaW4gdmFyczoKLSAgICAg
ICAgdHcubGluZSgiICAlLTI0cyAlcyIgJSAobmFtZSwgaGVscCkpCi0gICAgdHcubGluZSgpCi0g
ICAgdHcubGluZSgpCi0KLSAgICB0dy5saW5lKCJ0byBzZWUgYXZhaWxhYmxlIG1hcmtlcnMgdHlw
ZTogcHl0ZXN0IC0tbWFya2VycyIpCi0gICAgdHcubGluZSgidG8gc2VlIGF2YWlsYWJsZSBmaXh0
dXJlcyB0eXBlOiBweXRlc3QgLS1maXh0dXJlcyIpCi0gICAgdHcubGluZSgiKHNob3duIGFjY29y
ZGluZyB0byBzcGVjaWZpZWQgZmlsZV9vcl9kaXIgb3IgY3VycmVudCBkaXIgIgotICAgICAgICAg
ICAgImlmIG5vdCBzcGVjaWZpZWQpIikKLQotICAgIGZvciB3YXJuaW5ncmVwb3J0IGluIHJlcG9y
dGVyLnN0YXRzLmdldCgnd2FybmluZ3MnLCBbXSk6Ci0gICAgICAgIHR3LmxpbmUoIndhcm5pbmcg
OiAiICsgd2FybmluZ3JlcG9ydC5tZXNzYWdlLCByZWQ9VHJ1ZSkKLSAgICByZXR1cm4KLQotCi1j
b25mdGVzdF9vcHRpb25zID0gWwotICAgICgncHl0ZXN0X3BsdWdpbnMnLCAnbGlzdCBvZiBwbHVn
aW4gbmFtZXMgdG8gbG9hZCcpLAotXQotCi0KLWRlZiBnZXRwbHVnaW52ZXJzaW9uaW5mbyhjb25m
aWcpOgotICAgIGxpbmVzID0gW10KLSAgICBwbHVnaW5pbmZvID0gY29uZmlnLnBsdWdpbm1hbmFn
ZXIubGlzdF9wbHVnaW5fZGlzdGluZm8oKQotICAgIGlmIHBsdWdpbmluZm86Ci0gICAgICAgIGxp
bmVzLmFwcGVuZCgic2V0dXB0b29scyByZWdpc3RlcmVkIHBsdWdpbnM6IikKLSAgICAgICAgZm9y
IHBsdWdpbiwgZGlzdCBpbiBwbHVnaW5pbmZvOgotICAgICAgICAgICAgbG9jID0gZ2V0YXR0cihw
bHVnaW4sICdfX2ZpbGVfXycsIHJlcHIocGx1Z2luKSkKLSAgICAgICAgICAgIGNvbnRlbnQgPSAi
JXMtJXMgYXQgJXMiICUgKGRpc3QucHJvamVjdF9uYW1lLCBkaXN0LnZlcnNpb24sIGxvYykKLSAg
ICAgICAgICAgIGxpbmVzLmFwcGVuZCgiICAiICsgY29udGVudCkKLSAgICByZXR1cm4gbGluZXMK
LQotCi1kZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnKToKLSAgICBsaW5lcyA9IFtdCi0g
ICAgaWYgY29uZmlnLm9wdGlvbi5kZWJ1ZyBvciBjb25maWcub3B0aW9uLnRyYWNlY29uZmlnOgot
ICAgICAgICBsaW5lcy5hcHBlbmQoInVzaW5nOiBweXRlc3QtJXMgcHlsaWItJXMiICUKLSAgICAg
ICAgICAgICAgICAgICAgIChweXRlc3QuX192ZXJzaW9uX18sIHB5Ll9fdmVyc2lvbl9fKSkKLQot
ICAgICAgICB2ZXJpbmZvID0gZ2V0cGx1Z2ludmVyc2lvbmluZm8oY29uZmlnKQotICAgICAgICBp
ZiB2ZXJpbmZvOgotICAgICAgICAgICAgbGluZXMuZXh0ZW5kKHZlcmluZm8pCi0KLSAgICBpZiBj
b25maWcub3B0aW9uLnRyYWNlY29uZmlnOgotICAgICAgICBsaW5lcy5hcHBlbmQoImFjdGl2ZSBw
bHVnaW5zOiIpCi0gICAgICAgIGl0ZW1zID0gY29uZmlnLnBsdWdpbm1hbmFnZXIubGlzdF9uYW1l
X3BsdWdpbigpCi0gICAgICAgIGZvciBuYW1lLCBwbHVnaW4gaW4gaXRlbXM6Ci0gICAgICAgICAg
ICBpZiBoYXNhdHRyKHBsdWdpbiwgJ19fZmlsZV9fJyk6Ci0gICAgICAgICAgICAgICAgciA9IHBs
dWdpbi5fX2ZpbGVfXwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByID0gcmVw
cihwbHVnaW4pCi0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiAgICAlLTIwczogJXMiICUgKG5h
bWUsIHIpKQotICAgIHJldHVybiBsaW5lcwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9ob29rc3BlYy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvaG9va3NwZWMucHkKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0MGJmOTlkMzc1YWE2Yzc1ZWU3NDNmZTY5ZWNmNzk3MDIy
MzIyY2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvX3B5dGVzdC9ob29rc3BlYy5weQorKysgL2Rldi9udWxsCkBAIC0xLDQyMyArMCww
IEBACi0iIiIgaG9vayBzcGVjaWZpY2F0aW9ucyBmb3IgcHl0ZXN0IHBsdWdpbnMsIGludm9rZWQg
ZnJvbSBtYWluLnB5IGFuZCBidWlsdGluIHBsdWdpbnMuICAiIiIKLQotZnJvbSBwbHVnZ3kgaW1w
b3J0IEhvb2tzcGVjTWFya2VyCi0KLWhvb2tzcGVjID0gSG9va3NwZWNNYXJrZXIoInB5dGVzdCIp
Ci0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBJbml0aWFsaXphdGlvbiBob29rcyBjYWxsZWQgZm9y
IGV2ZXJ5IHBsdWdpbgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotQGhvb2tzcGVjKGhpc3Rvcmlj
PVRydWUpCi1kZWYgcHl0ZXN0X2FkZGhvb2tzKHBsdWdpbm1hbmFnZXIpOgotICAgICIiImNhbGxl
ZCBhdCBwbHVnaW4gcmVnaXN0cmF0aW9uIHRpbWUgdG8gYWxsb3cgYWRkaW5nIG5ldyBob29rcyB2
aWEgYSBjYWxsIHRvCi0gICAgcGx1Z2lubWFuYWdlci5hZGRfaG9va3NwZWNzKG1vZHVsZV9vcl9j
bGFzcywgcHJlZml4KS4iIiIKLQotCi1AaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRl
c3RfbmFtZXNwYWNlKCk6Ci0gICAgIiIiCi0gICAgREVQUkVDQVRFRDogdGhpcyBob29rIGNhdXNl
cyBkaXJlY3QgbW9ua2V5cGF0Y2hpbmcgb24gcHl0ZXN0LCBpdHMgdXNlIGlzIHN0cm9uZ2x5IGRp
c2NvdXJhZ2VkCi0gICAgcmV0dXJuIGRpY3Qgb2YgbmFtZS0+b2JqZWN0IHRvIGJlIG1hZGUgZ2xv
YmFsbHkgYXZhaWxhYmxlIGluCi0gICAgdGhlIHB5dGVzdCBuYW1lc3BhY2UuICBUaGlzIGhvb2sg
aXMgY2FsbGVkIGF0IHBsdWdpbiByZWdpc3RyYXRpb24KLSAgICB0aW1lLgotICAgICIiIgotCi0K
LUBob29rc3BlYyhoaXN0b3JpYz1UcnVlKQotZGVmIHB5dGVzdF9wbHVnaW5fcmVnaXN0ZXJlZChw
bHVnaW4sIG1hbmFnZXIpOgotICAgICIiIiBhIG5ldyBweXRlc3QgcGx1Z2luIGdvdCByZWdpc3Rl
cmVkLiAiIiIKLQotCi1AaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfYWRkb3B0
aW9uKHBhcnNlcik6Ci0gICAgIiIicmVnaXN0ZXIgYXJncGFyc2Utc3R5bGUgb3B0aW9ucyBhbmQg
aW5pLXN0eWxlIGNvbmZpZyB2YWx1ZXMsCi0gICAgY2FsbGVkIG9uY2UgYXQgdGhlIGJlZ2lubmlu
ZyBvZiBhIHRlc3QgcnVuLgotCi0gICAgLi4gbm90ZTo6Ci0KLSAgICAgICAgVGhpcyBmdW5jdGlv
biBzaG91bGQgYmUgaW1wbGVtZW50ZWQgb25seSBpbiBwbHVnaW5zIG9yIGBgY29uZnRlc3QucHlg
YAotICAgICAgICBmaWxlcyBzaXR1YXRlZCBhdCB0aGUgdGVzdHMgcm9vdCBkaXJlY3RvcnkgZHVl
IHRvIGhvdyBweXRlc3QKLSAgICAgICAgOnJlZjpgZGlzY292ZXJzIHBsdWdpbnMgZHVyaW5nIHN0
YXJ0dXAgPHBsdWdpbm9yZGVyPmAuCi0KLSAgICA6YXJnIHBhcnNlcjogVG8gYWRkIGNvbW1hbmQg
bGluZSBvcHRpb25zLCBjYWxsCi0gICAgICAgIDpweTpmdW5jOmBwYXJzZXIuYWRkb3B0aW9uKC4u
LikgPF9weXRlc3QuY29uZmlnLlBhcnNlci5hZGRvcHRpb24+YC4KLSAgICAgICAgVG8gYWRkIGlu
aS1maWxlIHZhbHVlcyBjYWxsIDpweTpmdW5jOmBwYXJzZXIuYWRkaW5pKC4uLikKLSAgICAgICAg
PF9weXRlc3QuY29uZmlnLlBhcnNlci5hZGRpbmk+YC4KLQotICAgIE9wdGlvbnMgY2FuIGxhdGVy
IGJlIGFjY2Vzc2VkIHRocm91Z2ggdGhlCi0gICAgOnB5OmNsYXNzOmBjb25maWcgPF9weXRlc3Qu
Y29uZmlnLkNvbmZpZz5gIG9iamVjdCwgcmVzcGVjdGl2ZWx5OgotCi0gICAgLSA6cHk6ZnVuYzpg
Y29uZmlnLmdldG9wdGlvbihuYW1lKSA8X3B5dGVzdC5jb25maWcuQ29uZmlnLmdldG9wdGlvbj5g
IHRvCi0gICAgICByZXRyaWV2ZSB0aGUgdmFsdWUgb2YgYSBjb21tYW5kIGxpbmUgb3B0aW9uLgot
Ci0gICAgLSA6cHk6ZnVuYzpgY29uZmlnLmdldGluaShuYW1lKSA8X3B5dGVzdC5jb25maWcuQ29u
ZmlnLmdldGluaT5gIHRvIHJldHJpZXZlCi0gICAgICBhIHZhbHVlIHJlYWQgZnJvbSBhbiBpbmkt
c3R5bGUgZmlsZS4KLQotICAgIFRoZSBjb25maWcgb2JqZWN0IGlzIHBhc3NlZCBhcm91bmQgb24g
bWFueSBpbnRlcm5hbCBvYmplY3RzIHZpYSB0aGUgYGAuY29uZmlnYGAKLSAgICBhdHRyaWJ1dGUg
b3IgY2FuIGJlIHJldHJpZXZlZCBhcyB0aGUgYGBweXRlc3Rjb25maWdgYCBmaXh0dXJlIG9yIGFj
Y2Vzc2VkCi0gICAgdmlhIChkZXByZWNhdGVkKSBgYHB5dGVzdC5jb25maWdgYC4KLSAgICAiIiIK
LQotCi1AaG9va3NwZWMoaGlzdG9yaWM9VHJ1ZSkKLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZp
Zyk6Ci0gICAgIiIiCi0gICAgQWxsb3dzIHBsdWdpbnMgYW5kIGNvbmZ0ZXN0IGZpbGVzIHRvIHBl
cmZvcm0gaW5pdGlhbCBjb25maWd1cmF0aW9uLgotCi0gICAgVGhpcyBob29rIGlzIGNhbGxlZCBm
b3IgZXZlcnkgcGx1Z2luIGFuZCBpbml0aWFsIGNvbmZ0ZXN0IGZpbGUKLSAgICBhZnRlciBjb21t
YW5kIGxpbmUgb3B0aW9ucyBoYXZlIGJlZW4gcGFyc2VkLgotCi0gICAgQWZ0ZXIgdGhhdCwgdGhl
IGhvb2sgaXMgY2FsbGVkIGZvciBvdGhlciBjb25mdGVzdCBmaWxlcyBhcyB0aGV5IGFyZQotICAg
IGltcG9ydGVkLgotCi0gICAgOmFyZyBjb25maWc6IHB5dGVzdCBjb25maWcgb2JqZWN0Ci0gICAg
OnR5cGUgY29uZmlnOiBfcHl0ZXN0LmNvbmZpZy5Db25maWcKLSAgICAiIiIKLQotIyAtLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0jIEJvb3RzdHJhcHBpbmcgaG9va3MgY2FsbGVkIGZvciBwbHVnaW5zIHJlZ2lz
dGVyZWQgZWFybHkgZW5vdWdoOgotIyBpbnRlcm5hbCBhbmQgM3JkIHBhcnR5IHBsdWdpbnMgYXMg
d2VsbCBhcyBkaXJlY3RseQotIyBkaXNjb3ZlcmFibGUgY29uZnRlc3QucHkgbG9jYWwgcGx1Z2lu
cy4KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQot
ZGVmIHB5dGVzdF9jbWRsaW5lX3BhcnNlKHBsdWdpbm1hbmFnZXIsIGFyZ3MpOgotICAgICIiInJl
dHVybiBpbml0aWFsaXplZCBjb25maWcgb2JqZWN0LCBwYXJzaW5nIHRoZSBzcGVjaWZpZWQgYXJn
cy4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0
cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X2NtZGxpbmVfcHJlcGFyc2UoY29uZmlnLCBhcmdz
KToKLSAgICAiIiIoZGVwcmVjYXRlZCkgbW9kaWZ5IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYmVm
b3JlIG9wdGlvbiBwYXJzaW5nLiAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkK
LWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6Ci0gICAgIiIiIGNhbGxlZCBmb3IgcGVy
Zm9ybWluZyB0aGUgbWFpbiBjb21tYW5kIGxpbmUgYWN0aW9uLiBUaGUgZGVmYXVsdAotICAgIGlt
cGxlbWVudGF0aW9uIHdpbGwgaW52b2tlIHRoZSBjb25maWd1cmUgaG9va3MgYW5kIHJ1bnRlc3Rf
bWFpbmxvb3AuCi0KLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVm
OmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVmIHB5dGVzdF9sb2FkX2luaXRpYWxfY29uZnRlc3Rz
KGVhcmx5X2NvbmZpZywgcGFyc2VyLCBhcmdzKToKLSAgICAiIiIgaW1wbGVtZW50cyB0aGUgbG9h
ZGluZyBvZiBpbml0aWFsIGNvbmZ0ZXN0IGZpbGVzIGFoZWFkCi0gICAgb2YgY29tbWFuZCBsaW5l
IG9wdGlvbiBwYXJzaW5nLiAiIiIKLQotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgY29sbGVjdGlv
biBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVl
KQotZGVmIHB5dGVzdF9jb2xsZWN0aW9uKHNlc3Npb24pOgotICAgICIiIiBwZXJmb3JtIHRoZSBj
b2xsZWN0aW9uIHByb3RvY29sIGZvciB0aGUgZ2l2ZW4gc2Vzc2lvbi4KLQotICAgIFN0b3BzIGF0
IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1k
ZWYgcHl0ZXN0X2NvbGxlY3Rpb25fbW9kaWZ5aXRlbXMoc2Vzc2lvbiwgY29uZmlnLCBpdGVtcyk6
Ci0gICAgIiIiIGNhbGxlZCBhZnRlciBjb2xsZWN0aW9uIGhhcyBiZWVuIHBlcmZvcm1lZCwgbWF5
IGZpbHRlciBvciByZS1vcmRlcgotICAgIHRoZSBpdGVtcyBpbi1wbGFjZS4iIiIKLQotCi1kZWYg
cHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNoKHNlc3Npb24pOgotICAgICIiIiBjYWxsZWQgYWZ0ZXIg
Y29sbGVjdGlvbiBoYXMgYmVlbiBwZXJmb3JtZWQgYW5kIG1vZGlmaWVkLiAiIiIKLQotCi1AaG9v
a3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aCwg
Y29uZmlnKToKLSAgICAiIiIgcmV0dXJuIFRydWUgdG8gcHJldmVudCBjb25zaWRlcmluZyB0aGlz
IHBhdGggZm9yIGNvbGxlY3Rpb24uCi0gICAgVGhpcyBob29rIGlzIGNvbnN1bHRlZCBmb3IgYWxs
IGZpbGVzIGFuZCBkaXJlY3RvcmllcyBwcmlvciB0byBjYWxsaW5nCi0gICAgbW9yZSBzcGVjaWZp
YyBob29rcy4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6
YGZpcnN0cmVzdWx0YAotICAgICIiIgotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQot
ZGVmIHB5dGVzdF9jb2xsZWN0X2RpcmVjdG9yeShwYXRoLCBwYXJlbnQpOgotICAgICIiIiBjYWxs
ZWQgYmVmb3JlIHRyYXZlcnNpbmcgYSBkaXJlY3RvcnkgZm9yIGNvbGxlY3Rpb24gZmlsZXMuCi0K
LSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVmOmBmaXJzdHJlc3Vs
dGAgIiIiCi0KLQotZGVmIHB5dGVzdF9jb2xsZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKLSAgICAi
IiIgcmV0dXJuIGNvbGxlY3Rpb24gTm9kZSBvciBOb25lIGZvciB0aGUgZ2l2ZW4gcGF0aC4gQW55
IG5ldyBub2RlCi0gICAgbmVlZHMgdG8gaGF2ZSB0aGUgc3BlY2lmaWVkIGBgcGFyZW50YGAgYXMg
YSBwYXJlbnQuIiIiCi0KLSMgbG9nZ2luZyBob29rcyBmb3IgY29sbGVjdGlvbgotCi0KLWRlZiBw
eXRlc3RfY29sbGVjdHN0YXJ0KGNvbGxlY3Rvcik6Ci0gICAgIiIiIGNvbGxlY3RvciBzdGFydHMg
Y29sbGVjdGluZy4gIiIiCi0KLQotZGVmIHB5dGVzdF9pdGVtY29sbGVjdGVkKGl0ZW0pOgotICAg
ICIiIiB3ZSBqdXN0IGNvbGxlY3RlZCBhIHRlc3QgaXRlbS4gIiIiCi0KLQotZGVmIHB5dGVzdF9j
b2xsZWN0cmVwb3J0KHJlcG9ydCk6Ci0gICAgIiIiIGNvbGxlY3RvciBmaW5pc2hlZCBjb2xsZWN0
aW5nLiAiIiIKLQotCi1kZWYgcHl0ZXN0X2Rlc2VsZWN0ZWQoaXRlbXMpOgotICAgICIiIiBjYWxs
ZWQgZm9yIHRlc3QgaXRlbXMgZGVzZWxlY3RlZCBieSBrZXl3b3JkLiAiIiIKLQotCi1AaG9va3Nw
ZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xs
ZWN0b3IpOgotICAgICIiIiBwZXJmb3JtIGBgY29sbGVjdG9yLmNvbGxlY3QoKWBgIGFuZCByZXR1
cm4gYSBDb2xsZWN0UmVwb3J0LgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0
LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUHl0
aG9uIHRlc3QgZnVuY3Rpb24gcmVsYXRlZCBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQot
QGhvb2tzcGVjKGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlbW9k
dWxlKHBhdGgsIHBhcmVudCk6Ci0gICAgIiIiIHJldHVybiBhIE1vZHVsZSBjb2xsZWN0b3Igb3Ig
Tm9uZSBmb3IgdGhlIGdpdmVuIHBhdGguCi0gICAgVGhpcyBob29rIHdpbGwgYmUgY2FsbGVkIGZv
ciBlYWNoIG1hdGNoaW5nIHRlc3QgbW9kdWxlIHBhdGguCi0gICAgVGhlIHB5dGVzdF9jb2xsZWN0
X2ZpbGUgaG9vayBuZWVkcyB0byBiZSB1c2VkIGlmIHlvdSB3YW50IHRvCi0gICAgY3JlYXRlIHRl
c3QgbW9kdWxlcyBmb3IgZmlsZXMgdGhhdCBkbyBub3QgbWF0Y2ggYXMgYSB0ZXN0IG1vZHVsZS4K
LQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVz
dWx0YCAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcHlj
b2xsZWN0X21ha2VpdGVtKGNvbGxlY3RvciwgbmFtZSwgb2JqKToKLSAgICAiIiIgcmV0dXJuIGN1
c3RvbSBpdGVtL2NvbGxlY3RvciBmb3IgYSBweXRob24gb2JqZWN0IGluIGEgbW9kdWxlLCBvciBO
b25lLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmly
c3RyZXN1bHRgICIiIgotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVz
dF9weWZ1bmNfY2FsbChweWZ1bmNpdGVtKToKLSAgICAiIiIgY2FsbCB1bmRlcmx5aW5nIHRlc3Qg
ZnVuY3Rpb24uCi0KLSAgICBTdG9wcyBhdCBmaXJzdCBub24tTm9uZSByZXN1bHQsIHNlZSA6cmVm
OmBmaXJzdHJlc3VsdGAgIiIiCi0KLQotZGVmIHB5dGVzdF9nZW5lcmF0ZV90ZXN0cyhtZXRhZnVu
Yyk6Ci0gICAgIiIiIGdlbmVyYXRlIChtdWx0aXBsZSkgcGFyYW1ldHJpemVkIGNhbGxzIHRvIGEg
dGVzdCBmdW5jdGlvbi4iIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBw
eXRlc3RfbWFrZV9wYXJhbWV0cml6ZV9pZChjb25maWcsIHZhbCwgYXJnbmFtZSk6Ci0gICAgIiIi
UmV0dXJuIGEgdXNlci1mcmllbmRseSBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIGdpdmVu
IGBgdmFsYGAgdGhhdCB3aWxsIGJlIHVzZWQKLSAgICBieSBAcHl0ZXN0Lm1hcmsucGFyYW1ldHJp
emUgY2FsbHMuIFJldHVybiBOb25lIGlmIHRoZSBob29rIGRvZXNuJ3Qga25vdyBhYm91dCBgYHZh
bGBgLgotICAgIFRoZSBwYXJhbWV0ZXIgbmFtZSBpcyBhdmFpbGFibGUgYXMgYGBhcmduYW1lYGAs
IGlmIHJlcXVpcmVkLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUg
OnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZ2VuZXJpYyBy
dW50ZXN0IHJlbGF0ZWQgaG9va3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhm
aXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0bG9vcChzZXNzaW9uKToKLSAgICAi
IiIgY2FsbGVkIGZvciBwZXJmb3JtaW5nIHRoZSBtYWluIHJ1bnRlc3QgbG9vcAotICAgIChhZnRl
ciBjb2xsZWN0aW9uIGZpbmlzaGVkKS4KLQotICAgIFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJl
c3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0ZXN0X2l0ZW1zdGFy
dChpdGVtLCBub2RlKToKLSAgICAiIiIgKGRlcHJlY2F0ZWQsIHVzZSBweXRlc3RfcnVudGVzdF9s
b2dzdGFydCkuICIiIgotCi0KLUBob29rc3BlYyhmaXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVz
dF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0sIG5leHRpdGVtKToKLSAgICAiIiIgaW1wbGVtZW50cyB0
aGUgcnVudGVzdF9zZXR1cC9jYWxsL3RlYXJkb3duIHByb3RvY29sIGZvcgotICAgIHRoZSBnaXZl
biB0ZXN0IGl0ZW0sIGluY2x1ZGluZyBjYXB0dXJpbmcgZXhjZXB0aW9ucyBhbmQgY2FsbGluZwot
ICAgIHJlcG9ydGluZyBob29rcy4KLQotICAgIDphcmcgaXRlbTogdGVzdCBpdGVtIGZvciB3aGlj
aCB0aGUgcnVudGVzdCBwcm90b2NvbCBpcyBwZXJmb3JtZWQuCi0KLSAgICA6YXJnIG5leHRpdGVt
OiB0aGUgc2NoZWR1bGVkLXRvLWJlLW5leHQgdGVzdCBpdGVtIChvciBOb25lIGlmIHRoaXMKLSAg
ICAgICAgICAgICAgICAgICBpcyB0aGUgZW5kIG15IGZyaWVuZCkuICBUaGlzIGFyZ3VtZW50IGlz
IHBhc3NlZCBvbiB0bwotICAgICAgICAgICAgICAgICAgIDpweTpmdW5jOmBweXRlc3RfcnVudGVz
dF90ZWFyZG93bmAuCi0KLSAgICA6cmV0dXJuIGJvb2xlYW46IFRydWUgaWYgbm8gZnVydGhlciBo
b29rIGltcGxlbWVudGF0aW9ucyBzaG91bGQgYmUgaW52b2tlZC4KLQotCi0gICAgU3RvcHMgYXQg
Zmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0KLWRl
ZiBweXRlc3RfcnVudGVzdF9sb2dzdGFydChub2RlaWQsIGxvY2F0aW9uKToKLSAgICAiIiIgc2ln
bmFsIHRoZSBzdGFydCBvZiBydW5uaW5nIGEgc2luZ2xlIHRlc3QgaXRlbS4gIiIiCi0KLQotZGVm
IHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICIiIiBjYWxsZWQgYmVmb3JlIGBgcHl0
ZXN0X3J1bnRlc3RfY2FsbChpdGVtKWBgLiAiIiIKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3RfY2Fs
bChpdGVtKToKLSAgICAiIiIgY2FsbGVkIHRvIGV4ZWN1dGUgdGhlIHRlc3QgYGBpdGVtYGAuICIi
IgotCi0KLWRlZiBweXRlc3RfcnVudGVzdF90ZWFyZG93bihpdGVtLCBuZXh0aXRlbSk6Ci0gICAg
IiIiIGNhbGxlZCBhZnRlciBgYHB5dGVzdF9ydW50ZXN0X2NhbGxgYC4KLQotICAgIDphcmcgbmV4
dGl0ZW06IHRoZSBzY2hlZHVsZWQtdG8tYmUtbmV4dCB0ZXN0IGl0ZW0gKE5vbmUgaWYgbm8gZnVy
dGhlcgotICAgICAgICAgICAgICAgICAgIHRlc3QgaXRlbSBpcyBzY2hlZHVsZWQpLiAgVGhpcyBh
cmd1bWVudCBjYW4gYmUgdXNlZCB0bwotICAgICAgICAgICAgICAgICAgIHBlcmZvcm0gZXhhY3Qg
dGVhcmRvd25zLCBpLmUuIGNhbGxpbmcganVzdCBlbm91Z2ggZmluYWxpemVycwotICAgICAgICAg
ICAgICAgICAgIHNvIHRoYXQgbmV4dGl0ZW0gb25seSBuZWVkcyB0byBjYWxsIHNldHVwLWZ1bmN0
aW9ucy4KLSAgICAiIiIKLQotCi1AaG9va3NwZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRl
c3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgotICAgICIiIiByZXR1cm4gYSA6cHk6
Y2xhc3M6YF9weXRlc3QucnVubmVyLlRlc3RSZXBvcnRgIG9iamVjdAotICAgIGZvciB0aGUgZ2l2
ZW4gOnB5OmNsYXNzOmBweXRlc3QuSXRlbSA8X3B5dGVzdC5tYWluLkl0ZW0+YCBhbmQKLSAgICA6
cHk6Y2xhc3M6YF9weXRlc3QucnVubmVyLkNhbGxJbmZvYC4KLQotICAgIFN0b3BzIGF0IGZpcnN0
IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAiIiIKLQotCi1kZWYgcHl0
ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHJlcG9ydCk6Ci0gICAgIiIiIHByb2Nlc3MgYSB0ZXN0IHNl
dHVwL2NhbGwvdGVhcmRvd24gcmVwb3J0IHJlbGF0aW5nIHRvCi0gICAgdGhlIHJlc3BlY3RpdmUg
cGhhc2Ugb2YgZXhlY3V0aW5nIGEgdGVzdC4gIiIiCi0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBG
aXh0dXJlIHJlbGF0ZWQgaG9va3MKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0KLUBob29rc3BlYyhm
aXJzdHJlc3VsdD1UcnVlKQotZGVmIHB5dGVzdF9maXh0dXJlX3NldHVwKGZpeHR1cmVkZWYsIHJl
cXVlc3QpOgotICAgICIiIiBwZXJmb3JtcyBmaXh0dXJlIHNldHVwIGV4ZWN1dGlvbi4KLQotICAg
IFN0b3BzIGF0IGZpcnN0IG5vbi1Ob25lIHJlc3VsdCwgc2VlIDpyZWY6YGZpcnN0cmVzdWx0YCAi
IiIKLQotCi1kZWYgcHl0ZXN0X2ZpeHR1cmVfcG9zdF9maW5hbGl6ZXIoZml4dHVyZWRlZiwgcmVx
dWVzdCk6Ci0gICAgIiIiIGNhbGxlZCBhZnRlciBmaXh0dXJlIHRlYXJkb3duLCBidXQgYmVmb3Jl
IHRoZSBjYWNoZSBpcyBjbGVhcmVkIHNvCi0gICAgdGhlIGZpeHR1cmUgcmVzdWx0IGNhY2hlIGBg
Zml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0YGAgY2FuCi0gICAgc3RpbGwgYmUgYWNjZXNzZWQuIiIi
Ci0KLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyB0ZXN0IHNlc3Npb24gcmVsYXRlZCBob29rcwotIyAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi0KLQotZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQoc2Vzc2lvbik6Ci0g
ICAgIiIiIGJlZm9yZSBzZXNzaW9uLm1haW4oKSBpcyBjYWxsZWQuICIiIgotCi0KLWRlZiBweXRl
c3Rfc2Vzc2lvbmZpbmlzaChzZXNzaW9uLCBleGl0c3RhdHVzKToKLSAgICAiIiIgd2hvbGUgdGVz
dCBydW4gZmluaXNoZXMuICIiIgotCi0KLWRlZiBweXRlc3RfdW5jb25maWd1cmUoY29uZmlnKToK
LSAgICAiIiIgY2FsbGVkIGJlZm9yZSB0ZXN0IHByb2Nlc3MgaXMgZXhpdGVkLiAgIiIiCi0KLQot
IyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi0jIGhvb2tzIGZvciBjdXN0b21pemluZyB0aGUgYXNzZXJ0IG1l
dGhvZHMKLSMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1kZWYgcHl0ZXN0X2Fzc2VydHJlcHJfY29tcGFy
ZShjb25maWcsIG9wLCBsZWZ0LCByaWdodCk6Ci0gICAgIiIicmV0dXJuIGV4cGxhbmF0aW9uIGZv
ciBjb21wYXJpc29ucyBpbiBmYWlsaW5nIGFzc2VydCBleHByZXNzaW9ucy4KLQotICAgIFJldHVy
biBOb25lIGZvciBubyBjdXN0b20gZXhwbGFuYXRpb24sIG90aGVyd2lzZSByZXR1cm4gYSBsaXN0
Ci0gICAgb2Ygc3RyaW5ncy4gIFRoZSBzdHJpbmdzIHdpbGwgYmUgam9pbmVkIGJ5IG5ld2xpbmVz
IGJ1dCBhbnkgbmV3bGluZXMKLSAgICAqaW4qIGEgc3RyaW5nIHdpbGwgYmUgZXNjYXBlZC4gIE5v
dGUgdGhhdCBhbGwgYnV0IHRoZSBmaXJzdCBsaW5lIHdpbGwKLSAgICBiZSBpbmRlbnRlZCBzbGln
aHRseSwgdGhlIGludGVudGlvbiBpcyBmb3IgdGhlIGZpcnN0IGxpbmUgdG8gYmUgYSBzdW1tYXJ5
LgotICAgICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaG9va3MgZm9yIGluZmx1ZW5jaW5n
IHJlcG9ydGluZyAoaW52b2tlZCBmcm9tIF9weXRlc3RfdGVybWluYWwpCi0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLQotCi1kZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoY29uZmlnLCBzdGFydGRpcik6Ci0g
ICAgIiIiIHJldHVybiBhIHN0cmluZyBvciBsaXN0IG9mIHN0cmluZ3MgdG8gYmUgZGlzcGxheWVk
IGFzIGhlYWRlciBpbmZvIGZvciB0ZXJtaW5hbCByZXBvcnRpbmcuCi0KLSAgICA6cGFyYW0gY29u
ZmlnOiB0aGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCi0gICAgOnBhcmFtIHN0YXJ0ZGlyOiBweS5w
YXRoIG9iamVjdCB3aXRoIHRoZSBzdGFydGluZyBkaXIKLQotICAgIC4uIG5vdGU6OgotCi0gICAg
ICAgIFRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGltcGxlbWVudGVkIG9ubHkgaW4gcGx1Z2lucyBv
ciBgYGNvbmZ0ZXN0LnB5YGAKLSAgICAgICAgZmlsZXMgc2l0dWF0ZWQgYXQgdGhlIHRlc3RzIHJv
b3QgZGlyZWN0b3J5IGR1ZSB0byBob3cgcHl0ZXN0Ci0gICAgICAgIDpyZWY6YGRpc2NvdmVycyBw
bHVnaW5zIGR1cmluZyBzdGFydHVwIDxwbHVnaW5vcmRlcj5gLgotICAgICIiIgotCi0KLWRlZiBw
eXRlc3RfcmVwb3J0X2NvbGxlY3Rpb25maW5pc2goY29uZmlnLCBzdGFydGRpciwgaXRlbXMpOgot
ICAgICIiIgotICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgotCi0gICAgcmV0dXJuIGEgc3RyaW5n
IG9yIGxpc3Qgb2Ygc3RyaW5ncyB0byBiZSBkaXNwbGF5ZWQgYWZ0ZXIgY29sbGVjdGlvbiBoYXMg
ZmluaXNoZWQgc3VjY2Vzc2Z1bGx5LgotCi0gICAgVGhpcyBzdHJpbmdzIHdpbGwgYmUgZGlzcGxh
eWVkIGFmdGVyIHRoZSBzdGFuZGFyZCAiY29sbGVjdGVkIFggaXRlbXMiIG1lc3NhZ2UuCi0KLSAg
ICA6cGFyYW0gY29uZmlnOiB0aGUgcHl0ZXN0IGNvbmZpZyBvYmplY3QuCi0gICAgOnBhcmFtIHN0
YXJ0ZGlyOiBweS5wYXRoIG9iamVjdCB3aXRoIHRoZSBzdGFydGluZyBkaXIKLSAgICA6cGFyYW0g
aXRlbXM6IGxpc3Qgb2YgcHl0ZXN0IGl0ZW1zIHRoYXQgYXJlIGdvaW5nIHRvIGJlIGV4ZWN1dGVk
OyB0aGlzIGxpc3Qgc2hvdWxkIG5vdCBiZSBtb2RpZmllZC4KLSAgICAiIiIKLQotCi1AaG9va3Nw
ZWMoZmlyc3RyZXN1bHQ9VHJ1ZSkKLWRlZiBweXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMocmVwb3J0
KToKLSAgICAiIiIgcmV0dXJuIHJlc3VsdC1jYXRlZ29yeSwgc2hvcnRsZXR0ZXIgYW5kIHZlcmJv
c2Ugd29yZCBmb3IgcmVwb3J0aW5nLgotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVz
dWx0LCBzZWUgOnJlZjpgZmlyc3RyZXN1bHRgICIiIgotCi0KLWRlZiBweXRlc3RfdGVybWluYWxf
c3VtbWFyeSh0ZXJtaW5hbHJlcG9ydGVyLCBleGl0c3RhdHVzKToKLSAgICAiIiIgYWRkIGFkZGl0
aW9uYWwgc2VjdGlvbiBpbiB0ZXJtaW5hbCBzdW1tYXJ5IHJlcG9ydGluZy4gICIiIgotCi0KLUBo
b29rc3BlYyhoaXN0b3JpYz1UcnVlKQotZGVmIHB5dGVzdF9sb2d3YXJuaW5nKG1lc3NhZ2UsIGNv
ZGUsIG5vZGVpZCwgZnNsb2NhdGlvbik6Ci0gICAgIiIiIHByb2Nlc3MgYSB3YXJuaW5nIHNwZWNp
ZmllZCBieSBhIG1lc3NhZ2UsIGEgY29kZSBzdHJpbmcsCi0gICAgYSBub2RlaWQgYW5kIGZzbG9j
YXRpb24gKGJvdGggb2Ygd2hpY2ggbWF5IGJlIE5vbmUKLSAgICBpZiB0aGUgd2FybmluZyBpcyBu
b3QgdGllZCB0byBhIHBhcnRpbGFyIG5vZGUvbG9jYXRpb24pLiIiIgotCi0jIC0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLSMgZG9jdGVzdCBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotQGhvb2tzcGVj
KGZpcnN0cmVzdWx0PVRydWUpCi1kZWYgcHl0ZXN0X2RvY3Rlc3RfcHJlcGFyZV9jb250ZW50KGNv
bnRlbnQpOgotICAgICIiIiByZXR1cm4gcHJvY2Vzc2VkIGNvbnRlbnQgZm9yIGEgZ2l2ZW4gZG9j
dGVzdAotCi0gICAgU3RvcHMgYXQgZmlyc3Qgbm9uLU5vbmUgcmVzdWx0LCBzZWUgOnJlZjpgZmly
c3RyZXN1bHRgICIiIgotCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgZXJyb3IgaGFuZGxpbmcgYW5k
IGludGVybmFsIGRlYnVnZ2luZyBob29rcwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotZGVmIHB5
dGVzdF9pbnRlcm5hbGVycm9yKGV4Y3JlcHIsIGV4Y2luZm8pOgotICAgICIiIiBjYWxsZWQgZm9y
IGludGVybmFsIGVycm9ycy4gIiIiCi0KLQotZGVmIHB5dGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQo
ZXhjaW5mbyk6Ci0gICAgIiIiIGNhbGxlZCBmb3Iga2V5Ym9hcmQgaW50ZXJydXB0LiAiIiIKLQot
Ci1kZWYgcHl0ZXN0X2V4Y2VwdGlvbl9pbnRlcmFjdChub2RlLCBjYWxsLCByZXBvcnQpOgotICAg
ICIiImNhbGxlZCB3aGVuIGFuIGV4Y2VwdGlvbiB3YXMgcmFpc2VkIHdoaWNoIGNhbiBwb3RlbnRp
YWxseSBiZQotICAgIGludGVyYWN0aXZlbHkgaGFuZGxlZC4KLQotICAgIFRoaXMgaG9vayBpcyBv
bmx5IGNhbGxlZCBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZAotICAgIHRoYXQgaXMgbm90IGFu
IGludGVybmFsIGV4Y2VwdGlvbiBsaWtlIGBgc2tpcC5FeGNlcHRpb25gYC4KLSAgICAiIiIKLQot
Ci1kZWYgcHl0ZXN0X2VudGVyX3BkYihjb25maWcpOgotICAgICIiIiBjYWxsZWQgdXBvbiBwZGIu
c2V0X3RyYWNlKCksIGNhbiBiZSB1c2VkIGJ5IHBsdWdpbnMgdG8gdGFrZSBzcGVjaWFsCi0gICAg
YWN0aW9uIGp1c3QgYmVmb3JlIHRoZSBweXRob24gZGVidWdnZXIgZW50ZXJzIGluIGludGVyYWN0
aXZlIG1vZGUuCi0KLSAgICA6YXJnIGNvbmZpZzogcHl0ZXN0IGNvbmZpZyBvYmplY3QKLSAgICA6
dHlwZSBjb25maWc6IF9weXRlc3QuY29uZmlnLkNvbmZpZwotICAgICIiIgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvX3B5dGVzdC9qdW5pdHhtbC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvanVu
aXR4bWwucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmYjQwZGMzNTQ4NzRmMDM2
NGRlMGM4M2FjOWZmNjYxYmNhNzc5ZjAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9qdW5pdHhtbC5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDQ1MyArMCwwIEBACi0iIiIKLSAgICByZXBvcnQgdGVzdCByZXN1bHRzIGluIEpV
bml0LVhNTCBmb3JtYXQsCi0gICAgZm9yIHVzZSB3aXRoIEplbmtpbnMgYW5kIGJ1aWxkIGludGVn
cmF0aW9uIHNlcnZlcnMuCi0KLQotQmFzZWQgb24gaW5pdGlhbCBjb2RlIGZyb20gUm9zcyBMYXds
ZXkuCi0KLU91dHB1dCBjb25mb3JtcyB0byBodHRwczovL2dpdGh1Yi5jb20vamVua2luc2NpL3h1
bml0LXBsdWdpbi9ibG9iL21hc3Rlci8KLXNyYy9tYWluL3Jlc291cmNlcy9vcmcvamVua2luc2Np
L3BsdWdpbnMveHVuaXQvdHlwZXMvbW9kZWwveHNkL2p1bml0LTEwLnhzZAotIiIiCi1mcm9tIF9f
ZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9u
Ci0KLWltcG9ydCBmdW5jdG9vbHMKLWltcG9ydCBweQotaW1wb3J0IG9zCi1pbXBvcnQgcmUKLWlt
cG9ydCBzeXMKLWltcG9ydCB0aW1lCi1pbXBvcnQgcHl0ZXN0Ci1mcm9tIF9weXRlc3QgaW1wb3J0
IG5vZGVzCi1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9ydCBmaWxlbmFtZV9hcmcKLQotIyBQeXRo
b24gMi5YIGFuZCAzLlggY29tcGF0aWJpbGl0eQotaWYgc3lzLnZlcnNpb25faW5mb1swXSA8IDM6
Ci0gICAgZnJvbSBjb2RlY3MgaW1wb3J0IG9wZW4KLWVsc2U6Ci0gICAgdW5pY2hyID0gY2hyCi0g
ICAgdW5pY29kZSA9IHN0cgotICAgIGxvbmcgPSBpbnQKLQotCi1jbGFzcyBKdW5pdChweS54bWwu
TmFtZXNwYWNlKToKLSAgICBwYXNzCi0KLQotIyBXZSBuZWVkIHRvIGdldCB0aGUgc3Vic2V0IG9m
IHRoZSBpbnZhbGlkIHVuaWNvZGUgcmFuZ2VzIGFjY29yZGluZyB0bwotIyBYTUwgMS4wIHdoaWNo
IGFyZSB2YWxpZCBpbiB0aGlzIHB5dGhvbiBidWlsZC4gIEhlbmNlIHdlIGNhbGN1bGF0ZQotIyB0
aGlzIGR5bmFtaWNhbGx5IGluc3RlYWQgb2YgaGFyZGNvZGluZyBpdC4gIFRoZSBzcGVjIHJhbmdl
IG9mIHZhbGlkCi0jIGNoYXJzIGlzOiBDaGFyIDo6PSAjeDkgfCAjeEEgfCAjeEQgfCBbI3gyMC0j
eEQ3RkZdIHwgWyN4RTAwMC0jeEZGRkRdCi0jICAgICAgICAgICAgICAgICAgICB8IFsjeDEwMDAw
LSN4MTBGRkZGXQotX2xlZ2FsX2NoYXJzID0gKDB4MDksIDB4MEEsIDB4MGQpCi1fbGVnYWxfcmFu
Z2VzID0gKAotICAgICgweDIwLCAweDdFKSwgKDB4ODAsIDB4RDdGRiksICgweEUwMDAsIDB4RkZG
RCksICgweDEwMDAwLCAweDEwRkZGRiksCi0pCi1fbGVnYWxfeG1sX3JlID0gWwotICAgIHVuaWNv
ZGUoIiVzLSVzIikgJSAodW5pY2hyKGxvdyksIHVuaWNocihoaWdoKSkKLSAgICBmb3IgKGxvdywg
aGlnaCkgaW4gX2xlZ2FsX3JhbmdlcyBpZiBsb3cgPCBzeXMubWF4dW5pY29kZQotXQotX2xlZ2Fs
X3htbF9yZSA9IFt1bmljaHIoeCkgZm9yIHggaW4gX2xlZ2FsX2NoYXJzXSArIF9sZWdhbF94bWxf
cmUKLWlsbGVnYWxfeG1sX3JlID0gcmUuY29tcGlsZSh1bmljb2RlKCdbXiVzXScpICUgdW5pY29k
ZSgnJykuam9pbihfbGVnYWxfeG1sX3JlKSkKLWRlbCBfbGVnYWxfY2hhcnMKLWRlbCBfbGVnYWxf
cmFuZ2VzCi1kZWwgX2xlZ2FsX3htbF9yZQotCi1fcHlfZXh0X3JlID0gcmUuY29tcGlsZShyIlwu
cHkkIikKLQotCi1kZWYgYmluX3htbF9lc2NhcGUoYXJnKToKLSAgICBkZWYgcmVwbChtYXRjaG9i
aik6Ci0gICAgICAgIGkgPSBvcmQobWF0Y2hvYmouZ3JvdXAoKSkKLSAgICAgICAgaWYgaSA8PSAw
eEZGOgotICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGUoJyN4JTAyWCcpICUgaQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGUoJyN4JTA0WCcpICUgaQotCi0gICAgcmV0
dXJuIHB5LnhtbC5yYXcoaWxsZWdhbF94bWxfcmUuc3ViKHJlcGwsIHB5LnhtbC5lc2NhcGUoYXJn
KSkpCi0KLQotY2xhc3MgX05vZGVSZXBvcnRlcihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBub2RlaWQsIHhtbCk6Ci0KLSAgICAgICAgc2VsZi5pZCA9IG5vZGVpZAotICAgICAgICBz
ZWxmLnhtbCA9IHhtbAotICAgICAgICBzZWxmLmFkZF9zdGF0cyA9IHNlbGYueG1sLmFkZF9zdGF0
cwotICAgICAgICBzZWxmLmR1cmF0aW9uID0gMAotICAgICAgICBzZWxmLnByb3BlcnRpZXMgPSBb
XQotICAgICAgICBzZWxmLm5vZGVzID0gW10KLSAgICAgICAgc2VsZi50ZXN0Y2FzZSA9IE5vbmUK
LSAgICAgICAgc2VsZi5hdHRycyA9IHt9Ci0KLSAgICBkZWYgYXBwZW5kKHNlbGYsIG5vZGUpOgot
ICAgICAgICBzZWxmLnhtbC5hZGRfc3RhdHModHlwZShub2RlKS5fX25hbWVfXykKLSAgICAgICAg
c2VsZi5ub2Rlcy5hcHBlbmQobm9kZSkKLQotICAgIGRlZiBhZGRfcHJvcGVydHkoc2VsZiwgbmFt
ZSwgdmFsdWUpOgotICAgICAgICBzZWxmLnByb3BlcnRpZXMuYXBwZW5kKChzdHIobmFtZSksIGJp
bl94bWxfZXNjYXBlKHZhbHVlKSkpCi0KLSAgICBkZWYgbWFrZV9wcm9wZXJ0aWVzX25vZGUoc2Vs
Zik6Ci0gICAgICAgICIiIlJldHVybiBhIEp1bml0IG5vZGUgY29udGFpbmluZyBjdXN0b20gcHJv
cGVydGllcywgaWYgYW55LgotICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5wcm9wZXJ0aWVz
OgotICAgICAgICAgICAgcmV0dXJuIEp1bml0LnByb3BlcnRpZXMoWwotICAgICAgICAgICAgICAg
IEp1bml0LnByb3BlcnR5KG5hbWU9bmFtZSwgdmFsdWU9dmFsdWUpCi0gICAgICAgICAgICAgICAg
Zm9yIG5hbWUsIHZhbHVlIGluIHNlbGYucHJvcGVydGllcwotICAgICAgICAgICAgXSkKLSAgICAg
ICAgcmV0dXJuICcnCi0KLSAgICBkZWYgcmVjb3JkX3Rlc3RyZXBvcnQoc2VsZiwgdGVzdHJlcG9y
dCk6Ci0gICAgICAgIGFzc2VydCBub3Qgc2VsZi50ZXN0Y2FzZQotICAgICAgICBuYW1lcyA9IG1h
bmdsZV90ZXN0X2FkZHJlc3ModGVzdHJlcG9ydC5ub2RlaWQpCi0gICAgICAgIGNsYXNzbmFtZXMg
PSBuYW1lc1s6LTFdCi0gICAgICAgIGlmIHNlbGYueG1sLnByZWZpeDoKLSAgICAgICAgICAgIGNs
YXNzbmFtZXMuaW5zZXJ0KDAsIHNlbGYueG1sLnByZWZpeCkKLSAgICAgICAgYXR0cnMgPSB7Ci0g
ICAgICAgICAgICAiY2xhc3NuYW1lIjogIi4iLmpvaW4oY2xhc3NuYW1lcyksCi0gICAgICAgICAg
ICAibmFtZSI6IGJpbl94bWxfZXNjYXBlKG5hbWVzWy0xXSksCi0gICAgICAgICAgICAiZmlsZSI6
IHRlc3RyZXBvcnQubG9jYXRpb25bMF0sCi0gICAgICAgIH0KLSAgICAgICAgaWYgdGVzdHJlcG9y
dC5sb2NhdGlvblsxXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGF0dHJzWyJsaW5lIl0gPSB0
ZXN0cmVwb3J0LmxvY2F0aW9uWzFdCi0gICAgICAgIGlmIGhhc2F0dHIodGVzdHJlcG9ydCwgInVy
bCIpOgotICAgICAgICAgICAgYXR0cnNbInVybCJdID0gdGVzdHJlcG9ydC51cmwKLSAgICAgICAg
c2VsZi5hdHRycyA9IGF0dHJzCi0KLSAgICBkZWYgdG9feG1sKHNlbGYpOgotICAgICAgICB0ZXN0
Y2FzZSA9IEp1bml0LnRlc3RjYXNlKHRpbWU9c2VsZi5kdXJhdGlvbiwgKipzZWxmLmF0dHJzKQot
ICAgICAgICB0ZXN0Y2FzZS5hcHBlbmQoc2VsZi5tYWtlX3Byb3BlcnRpZXNfbm9kZSgpKQotICAg
ICAgICBmb3Igbm9kZSBpbiBzZWxmLm5vZGVzOgotICAgICAgICAgICAgdGVzdGNhc2UuYXBwZW5k
KG5vZGUpCi0gICAgICAgIHJldHVybiB0ZXN0Y2FzZQotCi0gICAgZGVmIF9hZGRfc2ltcGxlKHNl
bGYsIGtpbmQsIG1lc3NhZ2UsIGRhdGE9Tm9uZSk6Ci0gICAgICAgIGRhdGEgPSBiaW5feG1sX2Vz
Y2FwZShkYXRhKQotICAgICAgICBub2RlID0ga2luZChkYXRhLCBtZXNzYWdlPW1lc3NhZ2UpCi0g
ICAgICAgIHNlbGYuYXBwZW5kKG5vZGUpCi0KLSAgICBkZWYgd3JpdGVfY2FwdHVyZWRfb3V0cHV0
KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGZvciBjYXBuYW1lIGluICgnb3V0JywgJ2VycicpOgot
ICAgICAgICAgICAgY29udGVudCA9IGdldGF0dHIocmVwb3J0LCAnY2Fwc3RkJyArIGNhcG5hbWUp
Ci0gICAgICAgICAgICBpZiBjb250ZW50OgotICAgICAgICAgICAgICAgIHRhZyA9IGdldGF0dHIo
SnVuaXQsICdzeXN0ZW0tJyArIGNhcG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5hcHBlbmQo
dGFnKGJpbl94bWxfZXNjYXBlKGNvbnRlbnQpKSkKLQotICAgIGRlZiBhcHBlbmRfcGFzcyhzZWxm
LCByZXBvcnQpOgotICAgICAgICBzZWxmLmFkZF9zdGF0cygncGFzc2VkJykKLQotICAgIGRlZiBh
cHBlbmRfZmFpbHVyZShzZWxmLCByZXBvcnQpOgotICAgICAgICAjIG1zZyA9IHN0cihyZXBvcnQu
bG9uZ3JlcHIucmVwcnRyYWNlYmFjay5leHRyYWxpbmUpCi0gICAgICAgIGlmIGhhc2F0dHIocmVw
b3J0LCAid2FzeGZhaWwiKToKLSAgICAgICAgICAgIHNlbGYuX2FkZF9zaW1wbGUoCi0gICAgICAg
ICAgICAgICAgSnVuaXQuc2tpcHBlZCwKLSAgICAgICAgICAgICAgICAieGZhaWwtbWFya2VkIHRl
c3QgcGFzc2VzIHVuZXhwZWN0ZWRseSIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBo
YXNhdHRyKHJlcG9ydC5sb25ncmVwciwgInJlcHJjcmFzaCIpOgotICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSByZXBvcnQubG9uZ3JlcHIucmVwcmNyYXNoLm1lc3NhZ2UKLSAgICAgICAgICAgIGVs
aWYgaXNpbnN0YW5jZShyZXBvcnQubG9uZ3JlcHIsICh1bmljb2RlLCBzdHIpKToKLSAgICAgICAg
ICAgICAgICBtZXNzYWdlID0gcmVwb3J0LmxvbmdyZXByCi0gICAgICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgICAgIG1lc3NhZ2UgPSBzdHIocmVwb3J0LmxvbmdyZXByKQotICAgICAgICAgICAg
bWVzc2FnZSA9IGJpbl94bWxfZXNjYXBlKG1lc3NhZ2UpCi0gICAgICAgICAgICBmYWlsID0gSnVu
aXQuZmFpbHVyZShtZXNzYWdlPW1lc3NhZ2UpCi0gICAgICAgICAgICBmYWlsLmFwcGVuZChiaW5f
eG1sX2VzY2FwZShyZXBvcnQubG9uZ3JlcHIpKQotICAgICAgICAgICAgc2VsZi5hcHBlbmQoZmFp
bCkKLQotICAgIGRlZiBhcHBlbmRfY29sbGVjdF9lcnJvcihzZWxmLCByZXBvcnQpOgotICAgICAg
ICAjIG1zZyA9IHN0cihyZXBvcnQubG9uZ3JlcHIucmVwcnRyYWNlYmFjay5leHRyYWxpbmUpCi0g
ICAgICAgIHNlbGYuYXBwZW5kKEp1bml0LmVycm9yKGJpbl94bWxfZXNjYXBlKHJlcG9ydC5sb25n
cmVwciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9ImNvbGxlY3Rp
b24gZmFpbHVyZSIpKQotCi0gICAgZGVmIGFwcGVuZF9jb2xsZWN0X3NraXBwZWQoc2VsZiwgcmVw
b3J0KToKLSAgICAgICAgc2VsZi5fYWRkX3NpbXBsZSgKLSAgICAgICAgICAgIEp1bml0LnNraXBw
ZWQsICJjb2xsZWN0aW9uIHNraXBwZWQiLCByZXBvcnQubG9uZ3JlcHIpCi0KLSAgICBkZWYgYXBw
ZW5kX2Vycm9yKHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIGdldGF0dHIocmVwb3J0LCAnd2hl
bicsIE5vbmUpID09ICd0ZWFyZG93bic6Ci0gICAgICAgICAgICBtc2cgPSAidGVzdCB0ZWFyZG93
biBmYWlsdXJlIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNnID0gInRlc3Qgc2V0dXAg
ZmFpbHVyZSIKLSAgICAgICAgc2VsZi5fYWRkX3NpbXBsZSgKLSAgICAgICAgICAgIEp1bml0LmVy
cm9yLCBtc2csIHJlcG9ydC5sb25ncmVwcikKLQotICAgIGRlZiBhcHBlbmRfc2tpcHBlZChzZWxm
LCByZXBvcnQpOgotICAgICAgICBpZiBoYXNhdHRyKHJlcG9ydCwgIndhc3hmYWlsIik6Ci0gICAg
ICAgICAgICBzZWxmLl9hZGRfc2ltcGxlKAotICAgICAgICAgICAgICAgIEp1bml0LnNraXBwZWQs
ICJleHBlY3RlZCB0ZXN0IGZhaWx1cmUiLCByZXBvcnQud2FzeGZhaWwKLSAgICAgICAgICAgICkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZpbGVuYW1lLCBsaW5lbm8sIHNraXByZWFzb24g
PSByZXBvcnQubG9uZ3JlcHIKLSAgICAgICAgICAgIGlmIHNraXByZWFzb24uc3RhcnRzd2l0aCgi
U2tpcHBlZDogIik6Ci0gICAgICAgICAgICAgICAgc2tpcHJlYXNvbiA9IGJpbl94bWxfZXNjYXBl
KHNraXByZWFzb25bOTpdKQotICAgICAgICAgICAgc2VsZi5hcHBlbmQoCi0gICAgICAgICAgICAg
ICAgSnVuaXQuc2tpcHBlZCgiJXM6JXM6ICVzIiAlIChmaWxlbmFtZSwgbGluZW5vLCBza2lwcmVh
c29uKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9InB5dGVzdC5za2lwIiwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9c2tpcHJlYXNvbikpCi0gICAg
ICAgIHNlbGYud3JpdGVfY2FwdHVyZWRfb3V0cHV0KHJlcG9ydCkKLQotICAgIGRlZiBmaW5hbGl6
ZShzZWxmKToKLSAgICAgICAgZGF0YSA9IHNlbGYudG9feG1sKCkudW5pY29kZShpbmRlbnQ9MCkK
LSAgICAgICAgc2VsZi5fX2RpY3RfXy5jbGVhcigpCi0gICAgICAgIHNlbGYudG9feG1sID0gbGFt
YmRhOiBweS54bWwucmF3KGRhdGEpCi0KLQotQHB5dGVzdC5maXh0dXJlCi1kZWYgcmVjb3JkX3ht
bF9wcm9wZXJ0eShyZXF1ZXN0KToKLSAgICAiIiJBZGQgZXh0cmEgeG1sIHByb3BlcnRpZXMgdG8g
dGhlIHRhZyBmb3IgdGhlIGNhbGxpbmcgdGVzdC4KLSAgICBUaGUgZml4dHVyZSBpcyBjYWxsYWJs
ZSB3aXRoIGBgKG5hbWUsIHZhbHVlKWBgLCB3aXRoIHZhbHVlIGJlaW5nIGF1dG9tYXRpY2FsbHkK
LSAgICB4bWwtZW5jb2RlZC4KLSAgICAiIiIKLSAgICByZXF1ZXN0Lm5vZGUud2FybigKLSAgICAg
ICAgY29kZT0nQzMnLAotICAgICAgICBtZXNzYWdlPSdyZWNvcmRfeG1sX3Byb3BlcnR5IGlzIGFu
IGV4cGVyaW1lbnRhbCBmZWF0dXJlJywKLSAgICApCi0gICAgeG1sID0gZ2V0YXR0cihyZXF1ZXN0
LmNvbmZpZywgIl94bWwiLCBOb25lKQotICAgIGlmIHhtbCBpcyBub3QgTm9uZToKLSAgICAgICAg
bm9kZV9yZXBvcnRlciA9IHhtbC5ub2RlX3JlcG9ydGVyKHJlcXVlc3Qubm9kZS5ub2RlaWQpCi0g
ICAgICAgIHJldHVybiBub2RlX3JlcG9ydGVyLmFkZF9wcm9wZXJ0eQotICAgIGVsc2U6Ci0gICAg
ICAgIGRlZiBhZGRfcHJvcGVydHlfbm9vcChuYW1lLCB2YWx1ZSk6Ci0gICAgICAgICAgICBwYXNz
Ci0KLSAgICAgICAgcmV0dXJuIGFkZF9wcm9wZXJ0eV9ub29wCi0KLQotZGVmIHB5dGVzdF9hZGRv
cHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgidGVybWluYWwgcmVw
b3J0aW5nIikKLSAgICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICctLWp1bml0eG1sJywgJy0t
anVuaXQteG1sJywKLSAgICAgICAgYWN0aW9uPSJzdG9yZSIsCi0gICAgICAgIGRlc3Q9InhtbHBh
dGgiLAotICAgICAgICBtZXRhdmFyPSJwYXRoIiwKLSAgICAgICAgdHlwZT1mdW5jdG9vbHMucGFy
dGlhbChmaWxlbmFtZV9hcmcsIG9wdG5hbWU9Ii0tanVuaXR4bWwiKSwKLSAgICAgICAgZGVmYXVs
dD1Ob25lLAotICAgICAgICBoZWxwPSJjcmVhdGUganVuaXQteG1sIHN0eWxlIHJlcG9ydCBmaWxl
IGF0IGdpdmVuIHBhdGguIikKLSAgICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICctLWp1bml0
cHJlZml4JywgJy0tanVuaXQtcHJlZml4JywKLSAgICAgICAgYWN0aW9uPSJzdG9yZSIsCi0gICAg
ICAgIG1ldGF2YXI9InN0ciIsCi0gICAgICAgIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0i
cHJlcGVuZCBwcmVmaXggdG8gY2xhc3NuYW1lcyBpbiBqdW5pdC14bWwgb3V0cHV0IikKLSAgICBw
YXJzZXIuYWRkaW5pKCJqdW5pdF9zdWl0ZV9uYW1lIiwgIlRlc3Qgc3VpdGUgbmFtZSBmb3IgSlVu
aXQgcmVwb3J0IiwgZGVmYXVsdD0icHl0ZXN0IikKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShj
b25maWcpOgotICAgIHhtbHBhdGggPSBjb25maWcub3B0aW9uLnhtbHBhdGgKLSAgICAjIHByZXZl
bnQgb3BlbmluZyB4bWxsb2cgb24gc2xhdmUgbm9kZXMgKHhkaXN0KQotICAgIGlmIHhtbHBhdGgg
YW5kIG5vdCBoYXNhdHRyKGNvbmZpZywgJ3NsYXZlaW5wdXQnKToKLSAgICAgICAgY29uZmlnLl94
bWwgPSBMb2dYTUwoeG1scGF0aCwgY29uZmlnLm9wdGlvbi5qdW5pdHByZWZpeCwgY29uZmlnLmdl
dGluaSgianVuaXRfc3VpdGVfbmFtZSIpKQotICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci5y
ZWdpc3Rlcihjb25maWcuX3htbCkKLQotCi1kZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZpZyk6
Ci0gICAgeG1sID0gZ2V0YXR0cihjb25maWcsICdfeG1sJywgTm9uZSkKLSAgICBpZiB4bWw6Ci0g
ICAgICAgIGRlbCBjb25maWcuX3htbAotICAgICAgICBjb25maWcucGx1Z2lubWFuYWdlci51bnJl
Z2lzdGVyKHhtbCkKLQotCi1kZWYgbWFuZ2xlX3Rlc3RfYWRkcmVzcyhhZGRyZXNzKToKLSAgICBw
YXRoLCBwb3NzaWJsZV9vcGVuX2JyYWNrZXQsIHBhcmFtcyA9IGFkZHJlc3MucGFydGl0aW9uKCdb
JykKLSAgICBuYW1lcyA9IHBhdGguc3BsaXQoIjo6IikKLSAgICB0cnk6Ci0gICAgICAgIG5hbWVz
LnJlbW92ZSgnKCknKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICBwYXNzCi0gICAg
IyBjb252ZXJ0IGZpbGUgcGF0aCB0byBkb3R0ZWQgcGF0aAotICAgIG5hbWVzWzBdID0gbmFtZXNb
MF0ucmVwbGFjZShub2Rlcy5TRVAsICcuJykKLSAgICBuYW1lc1swXSA9IF9weV9leHRfcmUuc3Vi
KCIiLCBuYW1lc1swXSkKLSAgICAjIHB1dCBhbnkgcGFyYW1zIGJhY2sKLSAgICBuYW1lc1stMV0g
Kz0gcG9zc2libGVfb3Blbl9icmFja2V0ICsgcGFyYW1zCi0gICAgcmV0dXJuIG5hbWVzCi0KLQot
Y2xhc3MgTG9nWE1MKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2ZpbGUsIHBy
ZWZpeCwgc3VpdGVfbmFtZT0icHl0ZXN0Iik6Ci0gICAgICAgIGxvZ2ZpbGUgPSBvcy5wYXRoLmV4
cGFuZHVzZXIob3MucGF0aC5leHBhbmR2YXJzKGxvZ2ZpbGUpKQotICAgICAgICBzZWxmLmxvZ2Zp
bGUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguYWJzcGF0aChsb2dmaWxlKSkKLSAgICAgICAg
c2VsZi5wcmVmaXggPSBwcmVmaXgKLSAgICAgICAgc2VsZi5zdWl0ZV9uYW1lID0gc3VpdGVfbmFt
ZQotICAgICAgICBzZWxmLnN0YXRzID0gZGljdC5mcm9ta2V5cyhbCi0gICAgICAgICAgICAnZXJy
b3InLAotICAgICAgICAgICAgJ3Bhc3NlZCcsCi0gICAgICAgICAgICAnZmFpbHVyZScsCi0gICAg
ICAgICAgICAnc2tpcHBlZCcsCi0gICAgICAgIF0sIDApCi0gICAgICAgIHNlbGYubm9kZV9yZXBv
cnRlcnMgPSB7fSAgIyBub2RlaWQgLT4gX05vZGVSZXBvcnRlcgotICAgICAgICBzZWxmLm5vZGVf
cmVwb3J0ZXJzX29yZGVyZWQgPSBbXQotICAgICAgICBzZWxmLmdsb2JhbF9wcm9wZXJ0aWVzID0g
W10KLSAgICAgICAgIyBMaXN0IG9mIHJlcG9ydHMgdGhhdCBmYWlsZWQgb24gY2FsbCBidXQgdGVh
cmRvd24gaXMgcGVuZGluZy4KLSAgICAgICAgc2VsZi5vcGVuX3JlcG9ydHMgPSBbXQotICAgICAg
ICBzZWxmLmNudF9kb3VibGVfZmFpbF90ZXN0cyA9IDAKLQotICAgIGRlZiBmaW5hbGl6ZShzZWxm
LCByZXBvcnQpOgotICAgICAgICBub2RlaWQgPSBnZXRhdHRyKHJlcG9ydCwgJ25vZGVpZCcsIHJl
cG9ydCkKLSAgICAgICAgIyBsb2NhbCBoYWNrIHRvIGhhbmRsZSB4ZGlzdCByZXBvcnQgb3JkZXIK
LSAgICAgICAgc2xhdmVub2RlID0gZ2V0YXR0cihyZXBvcnQsICdub2RlJywgTm9uZSkKLSAgICAg
ICAgcmVwb3J0ZXIgPSBzZWxmLm5vZGVfcmVwb3J0ZXJzLnBvcCgobm9kZWlkLCBzbGF2ZW5vZGUp
KQotICAgICAgICBpZiByZXBvcnRlciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJlcG9ydGVy
LmZpbmFsaXplKCkKLQotICAgIGRlZiBub2RlX3JlcG9ydGVyKHNlbGYsIHJlcG9ydCk6Ci0gICAg
ICAgIG5vZGVpZCA9IGdldGF0dHIocmVwb3J0LCAnbm9kZWlkJywgcmVwb3J0KQotICAgICAgICAj
IGxvY2FsIGhhY2sgdG8gaGFuZGxlIHhkaXN0IHJlcG9ydCBvcmRlcgotICAgICAgICBzbGF2ZW5v
ZGUgPSBnZXRhdHRyKHJlcG9ydCwgJ25vZGUnLCBOb25lKQotCi0gICAgICAgIGtleSA9IG5vZGVp
ZCwgc2xhdmVub2RlCi0KLSAgICAgICAgaWYga2V5IGluIHNlbGYubm9kZV9yZXBvcnRlcnM6Ci0g
ICAgICAgICAgICAjIFRPRE86IGJyZWFza3MgZm9yIC0tZGlzdD1lYWNoCi0gICAgICAgICAgICBy
ZXR1cm4gc2VsZi5ub2RlX3JlcG9ydGVyc1trZXldCi0KLSAgICAgICAgcmVwb3J0ZXIgPSBfTm9k
ZVJlcG9ydGVyKG5vZGVpZCwgc2VsZikKLQotICAgICAgICBzZWxmLm5vZGVfcmVwb3J0ZXJzW2tl
eV0gPSByZXBvcnRlcgotICAgICAgICBzZWxmLm5vZGVfcmVwb3J0ZXJzX29yZGVyZWQuYXBwZW5k
KHJlcG9ydGVyKQotCi0gICAgICAgIHJldHVybiByZXBvcnRlcgotCi0gICAgZGVmIGFkZF9zdGF0
cyhzZWxmLCBrZXkpOgotICAgICAgICBpZiBrZXkgaW4gc2VsZi5zdGF0czoKLSAgICAgICAgICAg
IHNlbGYuc3RhdHNba2V5XSArPSAxCi0KLSAgICBkZWYgX29wZW50ZXN0Y2FzZShzZWxmLCByZXBv
cnQpOgotICAgICAgICByZXBvcnRlciA9IHNlbGYubm9kZV9yZXBvcnRlcihyZXBvcnQpCi0gICAg
ICAgIHJlcG9ydGVyLnJlY29yZF90ZXN0cmVwb3J0KHJlcG9ydCkKLSAgICAgICAgcmV0dXJuIHJl
cG9ydGVyCi0KLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHNlbGYsIHJlcG9ydCk6
Ci0gICAgICAgICIiImhhbmRsZSBhIHNldHVwL2NhbGwvdGVhcmRvd24gcmVwb3J0LCBnZW5lcmF0
aW5nIHRoZSBhcHByb3ByaWF0ZQotICAgICAgICB4bWwgdGFncyBhcyBuZWNlc3NhcnkuCi0KLSAg
ICAgICAgbm90ZTogZHVlIHRvIHBsdWdpbnMgbGlrZSB4ZGlzdCwgdGhpcyBob29rIG1heSBiZSBj
YWxsZWQgaW4gaW50ZXJsYWNlZAotICAgICAgICBvcmRlciB3aXRoIHJlcG9ydHMgZnJvbSBvdGhl
ciBub2Rlcy4gZm9yIGV4YW1wbGU6Ci0KLSAgICAgICAgdXN1YWwgY2FsbCBvcmRlcjoKLSAgICAg
ICAgICAgIC0+IHNldHVwIG5vZGUxCi0gICAgICAgICAgICAtPiBjYWxsIG5vZGUxCi0gICAgICAg
ICAgICAtPiB0ZWFyZG93biBub2RlMQotICAgICAgICAgICAgLT4gc2V0dXAgbm9kZTIKLSAgICAg
ICAgICAgIC0+IGNhbGwgbm9kZTIKLSAgICAgICAgICAgIC0+IHRlYXJkb3duIG5vZGUyCi0KLSAg
ICAgICAgcG9zc2libGUgY2FsbCBvcmRlciBpbiB4ZGlzdDoKLSAgICAgICAgICAgIC0+IHNldHVw
IG5vZGUxCi0gICAgICAgICAgICAtPiBjYWxsIG5vZGUxCi0gICAgICAgICAgICAtPiBzZXR1cCBu
b2RlMgotICAgICAgICAgICAgLT4gY2FsbCBub2RlMgotICAgICAgICAgICAgLT4gdGVhcmRvd24g
bm9kZTIKLSAgICAgICAgICAgIC0+IHRlYXJkb3duIG5vZGUxCi0gICAgICAgICIiIgotICAgICAg
ICBjbG9zZV9yZXBvcnQgPSBOb25lCi0gICAgICAgIGlmIHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAg
ICAgICBpZiByZXBvcnQud2hlbiA9PSAiY2FsbCI6ICAjIGlnbm9yZSBzZXR1cC90ZWFyZG93bgot
ICAgICAgICAgICAgICAgIHJlcG9ydGVyID0gc2VsZi5fb3BlbnRlc3RjYXNlKHJlcG9ydCkKLSAg
ICAgICAgICAgICAgICByZXBvcnRlci5hcHBlbmRfcGFzcyhyZXBvcnQpCi0gICAgICAgIGVsaWYg
cmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAgIGlmIHJlcG9ydC53aGVuID09ICJ0ZWFyZG93biI6
Ci0gICAgICAgICAgICAgICAgIyBUaGUgZm9sbG93aW5nIHZhcnMgYXJlIG5lZWRlZCB3aGVuIHhk
aXN0IHBsdWdpbiBpcyB1c2VkCi0gICAgICAgICAgICAgICAgcmVwb3J0X3dpZCA9IGdldGF0dHIo
cmVwb3J0LCAid29ya2VyX2lkIiwgTm9uZSkKLSAgICAgICAgICAgICAgICByZXBvcnRfaWkgPSBn
ZXRhdHRyKHJlcG9ydCwgIml0ZW1faW5kZXgiLCBOb25lKQotICAgICAgICAgICAgICAgIGNsb3Nl
X3JlcG9ydCA9IG5leHQoCi0gICAgICAgICAgICAgICAgICAgIChyZXAgZm9yIHJlcCBpbiBzZWxm
Lm9wZW5fcmVwb3J0cwotICAgICAgICAgICAgICAgICAgICAgaWYgKHJlcC5ub2RlaWQgPT0gcmVw
b3J0Lm5vZGVpZCBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHJlcCwgIml0
ZW1faW5kZXgiLCBOb25lKSA9PSByZXBvcnRfaWkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgZ2V0YXR0cihyZXAsICJ3b3JrZXJfaWQiLCBOb25lKSA9PSByZXBvcnRfd2lkCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgKQotICAgICAgICAgICAgICAgICAgICAgKSwgTm9uZSkKLSAgICAg
ICAgICAgICAgICBpZiBjbG9zZV9yZXBvcnQ6Ci0gICAgICAgICAgICAgICAgICAgICMgV2UgbmVl
ZCB0byBvcGVuIG5ldyB0ZXN0Y2FzZSBpbiBjYXNlIHdlIGhhdmUgZmFpbHVyZSBpbgotICAgICAg
ICAgICAgICAgICAgICAjIGNhbGwgYW5kIGVycm9yIGluIHRlYXJkb3duIGluIG9yZGVyIHRvIGZv
bGxvdyBqdW5pdAotICAgICAgICAgICAgICAgICAgICAjIHNjaGVtYQotICAgICAgICAgICAgICAg
ICAgICBzZWxmLmZpbmFsaXplKGNsb3NlX3JlcG9ydCkKLSAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5jbnRfZG91YmxlX2ZhaWxfdGVzdHMgKz0gMQotICAgICAgICAgICAgcmVwb3J0ZXIgPSBzZWxm
Ll9vcGVudGVzdGNhc2UocmVwb3J0KQotICAgICAgICAgICAgaWYgcmVwb3J0LndoZW4gPT0gImNh
bGwiOgotICAgICAgICAgICAgICAgIHJlcG9ydGVyLmFwcGVuZF9mYWlsdXJlKHJlcG9ydCkKLSAg
ICAgICAgICAgICAgICBzZWxmLm9wZW5fcmVwb3J0cy5hcHBlbmQocmVwb3J0KQotICAgICAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgICAgICByZXBvcnRlci5hcHBlbmRfZXJyb3IocmVwb3J0KQot
ICAgICAgICBlbGlmIHJlcG9ydC5za2lwcGVkOgotICAgICAgICAgICAgcmVwb3J0ZXIgPSBzZWxm
Ll9vcGVudGVzdGNhc2UocmVwb3J0KQotICAgICAgICAgICAgcmVwb3J0ZXIuYXBwZW5kX3NraXBw
ZWQocmVwb3J0KQotICAgICAgICBzZWxmLnVwZGF0ZV90ZXN0Y2FzZV9kdXJhdGlvbihyZXBvcnQp
Ci0gICAgICAgIGlmIHJlcG9ydC53aGVuID09ICJ0ZWFyZG93biI6Ci0gICAgICAgICAgICByZXBv
cnRlciA9IHNlbGYuX29wZW50ZXN0Y2FzZShyZXBvcnQpCi0gICAgICAgICAgICByZXBvcnRlci53
cml0ZV9jYXB0dXJlZF9vdXRwdXQocmVwb3J0KQotICAgICAgICAgICAgc2VsZi5maW5hbGl6ZShy
ZXBvcnQpCi0gICAgICAgICAgICByZXBvcnRfd2lkID0gZ2V0YXR0cihyZXBvcnQsICJ3b3JrZXJf
aWQiLCBOb25lKQotICAgICAgICAgICAgcmVwb3J0X2lpID0gZ2V0YXR0cihyZXBvcnQsICJpdGVt
X2luZGV4IiwgTm9uZSkKLSAgICAgICAgICAgIGNsb3NlX3JlcG9ydCA9IG5leHQoCi0gICAgICAg
ICAgICAgICAgKHJlcCBmb3IgcmVwIGluIHNlbGYub3Blbl9yZXBvcnRzCi0gICAgICAgICAgICAg
ICAgIGlmIChyZXAubm9kZWlkID09IHJlcG9ydC5ub2RlaWQgYW5kCi0gICAgICAgICAgICAgICAg
ICAgICBnZXRhdHRyKHJlcCwgIml0ZW1faW5kZXgiLCBOb25lKSA9PSByZXBvcnRfaWkgYW5kCi0g
ICAgICAgICAgICAgICAgICAgICBnZXRhdHRyKHJlcCwgIndvcmtlcl9pZCIsIE5vbmUpID09IHJl
cG9ydF93aWQKLSAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgICAgICAgICAgKSwgTm9u
ZSkKLSAgICAgICAgICAgIGlmIGNsb3NlX3JlcG9ydDoKLSAgICAgICAgICAgICAgICBzZWxmLm9w
ZW5fcmVwb3J0cy5yZW1vdmUoY2xvc2VfcmVwb3J0KQotCi0gICAgZGVmIHVwZGF0ZV90ZXN0Y2Fz
ZV9kdXJhdGlvbihzZWxmLCByZXBvcnQpOgotICAgICAgICAiIiJhY2N1bXVsYXRlcyB0b3RhbCBk
dXJhdGlvbiBmb3Igbm9kZWlkIGZyb20gZ2l2ZW4gcmVwb3J0IGFuZCB1cGRhdGVzCi0gICAgICAg
IHRoZSBKdW5pdC50ZXN0Y2FzZSB3aXRoIHRoZSBuZXcgdG90YWwgaWYgYWxyZWFkeSBjcmVhdGVk
LgotICAgICAgICAiIiIKLSAgICAgICAgcmVwb3J0ZXIgPSBzZWxmLm5vZGVfcmVwb3J0ZXIocmVw
b3J0KQotICAgICAgICByZXBvcnRlci5kdXJhdGlvbiArPSBnZXRhdHRyKHJlcG9ydCwgJ2R1cmF0
aW9uJywgMC4wKQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6
Ci0gICAgICAgIGlmIG5vdCByZXBvcnQucGFzc2VkOgotICAgICAgICAgICAgcmVwb3J0ZXIgPSBz
ZWxmLl9vcGVudGVzdGNhc2UocmVwb3J0KQotICAgICAgICAgICAgaWYgcmVwb3J0LmZhaWxlZDoK
LSAgICAgICAgICAgICAgICByZXBvcnRlci5hcHBlbmRfY29sbGVjdF9lcnJvcihyZXBvcnQpCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlcG9ydGVyLmFwcGVuZF9jb2xsZWN0
X3NraXBwZWQocmVwb3J0KQotCi0gICAgZGVmIHB5dGVzdF9pbnRlcm5hbGVycm9yKHNlbGYsIGV4
Y3JlcHIpOgotICAgICAgICByZXBvcnRlciA9IHNlbGYubm9kZV9yZXBvcnRlcignaW50ZXJuYWwn
KQotICAgICAgICByZXBvcnRlci5hdHRycy51cGRhdGUoY2xhc3NuYW1lPSJweXRlc3QiLCBuYW1l
PSdpbnRlcm5hbCcpCi0gICAgICAgIHJlcG9ydGVyLl9hZGRfc2ltcGxlKEp1bml0LmVycm9yLCAn
aW50ZXJuYWwgZXJyb3InLCBleGNyZXByKQotCi0gICAgZGVmIHB5dGVzdF9zZXNzaW9uc3RhcnQo
c2VsZik6Ci0gICAgICAgIHNlbGYuc3VpdGVfc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCi0KLSAg
ICBkZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2VsZik6Ci0gICAgICAgIGRpcm5hbWUgPSBvcy5w
YXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKHNlbGYubG9nZmlsZSkpCi0gICAgICAgIGlmIG5v
dCBvcy5wYXRoLmlzZGlyKGRpcm5hbWUpOgotICAgICAgICAgICAgb3MubWFrZWRpcnMoZGlybmFt
ZSkKLSAgICAgICAgbG9nZmlsZSA9IG9wZW4oc2VsZi5sb2dmaWxlLCAndycsIGVuY29kaW5nPSd1
dGYtOCcpCi0gICAgICAgIHN1aXRlX3N0b3BfdGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIHN1
aXRlX3RpbWVfZGVsdGEgPSBzdWl0ZV9zdG9wX3RpbWUgLSBzZWxmLnN1aXRlX3N0YXJ0X3RpbWUK
LQotICAgICAgICBudW10ZXN0cyA9IChzZWxmLnN0YXRzWydwYXNzZWQnXSArIHNlbGYuc3RhdHNb
J2ZhaWx1cmUnXSArCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdHNbJ3NraXBwZWQnXSAr
IHNlbGYuc3RhdHNbJ2Vycm9yJ10gLQotICAgICAgICAgICAgICAgICAgICBzZWxmLmNudF9kb3Vi
bGVfZmFpbF90ZXN0cykKLSAgICAgICAgbG9nZmlsZS53cml0ZSgnPD94bWwgdmVyc2lvbj0iMS4w
IiBlbmNvZGluZz0idXRmLTgiPz4nKQotCi0gICAgICAgIGxvZ2ZpbGUud3JpdGUoSnVuaXQudGVz
dHN1aXRlKAotICAgICAgICAgICAgc2VsZi5fZ2V0X2dsb2JhbF9wcm9wZXJ0aWVzX25vZGUoKSwK
LSAgICAgICAgICAgIFt4LnRvX3htbCgpIGZvciB4IGluIHNlbGYubm9kZV9yZXBvcnRlcnNfb3Jk
ZXJlZF0sCi0gICAgICAgICAgICBuYW1lPXNlbGYuc3VpdGVfbmFtZSwKLSAgICAgICAgICAgIGVy
cm9ycz1zZWxmLnN0YXRzWydlcnJvciddLAotICAgICAgICAgICAgZmFpbHVyZXM9c2VsZi5zdGF0
c1snZmFpbHVyZSddLAotICAgICAgICAgICAgc2tpcHM9c2VsZi5zdGF0c1snc2tpcHBlZCddLAot
ICAgICAgICAgICAgdGVzdHM9bnVtdGVzdHMsCi0gICAgICAgICAgICB0aW1lPSIlLjNmIiAlIHN1
aXRlX3RpbWVfZGVsdGEsICkudW5pY29kZShpbmRlbnQ9MCkpCi0gICAgICAgIGxvZ2ZpbGUuY2xv
c2UoKQotCi0gICAgZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHNlbGYsIHRlcm1pbmFscmVw
b3J0ZXIpOgotICAgICAgICB0ZXJtaW5hbHJlcG9ydGVyLndyaXRlX3NlcCgiLSIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJnZW5lcmF0ZWQgeG1sIGZpbGU6ICVzIiAlIChz
ZWxmLmxvZ2ZpbGUpKQotCi0gICAgZGVmIGFkZF9nbG9iYWxfcHJvcGVydHkoc2VsZiwgbmFtZSwg
dmFsdWUpOgotICAgICAgICBzZWxmLmdsb2JhbF9wcm9wZXJ0aWVzLmFwcGVuZCgoc3RyKG5hbWUp
LCBiaW5feG1sX2VzY2FwZSh2YWx1ZSkpKQotCi0gICAgZGVmIF9nZXRfZ2xvYmFsX3Byb3BlcnRp
ZXNfbm9kZShzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGEgSnVuaXQgbm9kZSBjb250YWluaW5n
IGN1c3RvbSBwcm9wZXJ0aWVzLCBpZiBhbnkuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxm
Lmdsb2JhbF9wcm9wZXJ0aWVzOgotICAgICAgICAgICAgcmV0dXJuIEp1bml0LnByb3BlcnRpZXMo
Ci0gICAgICAgICAgICAgICAgWwotICAgICAgICAgICAgICAgICAgICBKdW5pdC5wcm9wZXJ0eShu
YW1lPW5hbWUsIHZhbHVlPXZhbHVlKQotICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFs
dWUgaW4gc2VsZi5nbG9iYWxfcHJvcGVydGllcwotICAgICAgICAgICAgICAgIF0KLSAgICAgICAg
ICAgICkKLSAgICAgICAgcmV0dXJuICcnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0
L2xvZ2dpbmcucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2xvZ2dpbmcucHkKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGVkNGRiMjVhZDQ0MzFlZmIxNzRmY2E1ZjhhZDQ4MWJkMzk5ZTRj
Y2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9sb2dnaW5nLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzM3ICswLDAgQEAK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRf
ZnVuY3Rpb24KLQotaW1wb3J0IGxvZ2dpbmcKLWZyb20gY29udGV4dGxpYiBpbXBvcnQgY2xvc2lu
ZywgY29udGV4dG1hbmFnZXIKLWltcG9ydCBzeXMKLWltcG9ydCBzaXgKLQotaW1wb3J0IHB5dGVz
dAotaW1wb3J0IHB5Ci0KLQotREVGQVVMVF9MT0dfRk9STUFUID0gJyUoZmlsZW5hbWUpLTI1cyAl
KGxpbmVubyk0ZCAlKGxldmVsbmFtZSktOHMgJShtZXNzYWdlKXMnCi1ERUZBVUxUX0xPR19EQVRF
X0ZPUk1BVCA9ICclSDolTTolUycKLQotCi1kZWYgZ2V0X29wdGlvbl9pbmkoY29uZmlnLCAqbmFt
ZXMpOgotICAgIGZvciBuYW1lIGluIG5hbWVzOgotICAgICAgICByZXQgPSBjb25maWcuZ2V0b3B0
aW9uKG5hbWUpICAjICdkZWZhdWx0JyBhcmcgd29uJ3Qgd29yayBhcyBleHBlY3RlZAotICAgICAg
ICBpZiByZXQgaXMgTm9uZToKLSAgICAgICAgICAgIHJldCA9IGNvbmZpZy5nZXRpbmkobmFtZSkK
LSAgICAgICAgaWYgcmV0OgotICAgICAgICAgICAgcmV0dXJuIHJldAotCi0KLWRlZiBweXRlc3Rf
YWRkb3B0aW9uKHBhcnNlcik6Ci0gICAgIiIiQWRkIG9wdGlvbnMgdG8gY29udHJvbCBsb2cgY2Fw
dHVyaW5nLiIiIgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCdsb2dnaW5nJykKLQotICAg
IGRlZiBhZGRfb3B0aW9uX2luaShvcHRpb24sIGRlc3QsIGRlZmF1bHQ9Tm9uZSwgdHlwZT1Ob25l
LCAqKmt3YXJncyk6Ci0gICAgICAgIHBhcnNlci5hZGRpbmkoZGVzdCwgZGVmYXVsdD1kZWZhdWx0
LCB0eXBlPXR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGVmYXVsdCB2YWx1ZSBm
b3IgJyArIG9wdGlvbikKLSAgICAgICAgZ3JvdXAuYWRkb3B0aW9uKG9wdGlvbiwgZGVzdD1kZXN0
LCAqKmt3YXJncykKLQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1uby1wcmludC1s
b2dzJywKLSAgICAgICAgZGVzdD0nbG9nX3ByaW50JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGNv
bnN0PUZhbHNlLCBkZWZhdWx0PVRydWUsCi0gICAgICAgIHR5cGU9J2Jvb2wnLAotICAgICAgICBo
ZWxwPSdkaXNhYmxlIHByaW50aW5nIGNhdWdodCBsb2dzIG9uIGZhaWxlZCB0ZXN0cy4nKQotICAg
IGFkZF9vcHRpb25faW5pKAotICAgICAgICAnLS1sb2ctbGV2ZWwnLAotICAgICAgICBkZXN0PSds
b2dfbGV2ZWwnLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9J2xvZ2dpbmcgbGV2ZWwgdXNl
ZCBieSB0aGUgbG9nZ2luZyBtb2R1bGUnKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAn
LS1sb2ctZm9ybWF0JywKLSAgICAgICAgZGVzdD0nbG9nX2Zvcm1hdCcsIGRlZmF1bHQ9REVGQVVM
VF9MT0dfRk9STUFULAotICAgICAgICBoZWxwPSdsb2cgZm9ybWF0IGFzIHVzZWQgYnkgdGhlIGxv
Z2dpbmcgbW9kdWxlLicpCi0gICAgYWRkX29wdGlvbl9pbmkoCi0gICAgICAgICctLWxvZy1kYXRl
LWZvcm1hdCcsCi0gICAgICAgIGRlc3Q9J2xvZ19kYXRlX2Zvcm1hdCcsIGRlZmF1bHQ9REVGQVVM
VF9MT0dfREFURV9GT1JNQVQsCi0gICAgICAgIGhlbHA9J2xvZyBkYXRlIGZvcm1hdCBhcyB1c2Vk
IGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAn
LS1sb2ctY2xpLWxldmVsJywKLSAgICAgICAgZGVzdD0nbG9nX2NsaV9sZXZlbCcsIGRlZmF1bHQ9
Tm9uZSwKLSAgICAgICAgaGVscD0nY2xpIGxvZ2dpbmcgbGV2ZWwuJykKLSAgICBhZGRfb3B0aW9u
X2luaSgKLSAgICAgICAgJy0tbG9nLWNsaS1mb3JtYXQnLAotICAgICAgICBkZXN0PSdsb2dfY2xp
X2Zvcm1hdCcsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0nbG9nIGZvcm1hdCBhcyB1c2Vk
IGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAn
LS1sb2ctY2xpLWRhdGUtZm9ybWF0JywKLSAgICAgICAgZGVzdD0nbG9nX2NsaV9kYXRlX2Zvcm1h
dCcsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0nbG9nIGRhdGUgZm9ybWF0IGFzIHVzZWQg
YnkgdGhlIGxvZ2dpbmcgbW9kdWxlLicpCi0gICAgYWRkX29wdGlvbl9pbmkoCi0gICAgICAgICct
LWxvZy1maWxlJywKLSAgICAgICAgZGVzdD0nbG9nX2ZpbGUnLCBkZWZhdWx0PU5vbmUsCi0gICAg
ICAgIGhlbHA9J3BhdGggdG8gYSBmaWxlIHdoZW4gbG9nZ2luZyB3aWxsIGJlIHdyaXR0ZW4gdG8u
JykKLSAgICBhZGRfb3B0aW9uX2luaSgKLSAgICAgICAgJy0tbG9nLWZpbGUtbGV2ZWwnLAotICAg
ICAgICBkZXN0PSdsb2dfZmlsZV9sZXZlbCcsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgaGVscD0n
bG9nIGZpbGUgbG9nZ2luZyBsZXZlbC4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAn
LS1sb2ctZmlsZS1mb3JtYXQnLAotICAgICAgICBkZXN0PSdsb2dfZmlsZV9mb3JtYXQnLCBkZWZh
dWx0PURFRkFVTFRfTE9HX0ZPUk1BVCwKLSAgICAgICAgaGVscD0nbG9nIGZvcm1hdCBhcyB1c2Vk
IGJ5IHRoZSBsb2dnaW5nIG1vZHVsZS4nKQotICAgIGFkZF9vcHRpb25faW5pKAotICAgICAgICAn
LS1sb2ctZmlsZS1kYXRlLWZvcm1hdCcsCi0gICAgICAgIGRlc3Q9J2xvZ19maWxlX2RhdGVfZm9y
bWF0JywgZGVmYXVsdD1ERUZBVUxUX0xPR19EQVRFX0ZPUk1BVCwKLSAgICAgICAgaGVscD0nbG9n
IGRhdGUgZm9ybWF0IGFzIHVzZWQgYnkgdGhlIGxvZ2dpbmcgbW9kdWxlLicpCi0KLQotQGNvbnRl
eHRtYW5hZ2VyCi1kZWYgbG9nZ2luZ191c2luZ19oYW5kbGVyKGhhbmRsZXIsIGxvZ2dlcj1Ob25l
KToKLSAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCBzYWZlbHkgcmVnaXN0ZXJzIGEgZ2l2ZW4g
aGFuZGxlci4iIiIKLSAgICBsb2dnZXIgPSBsb2dnZXIgb3IgbG9nZ2luZy5nZXRMb2dnZXIobG9n
Z2VyKQotCi0gICAgaWYgaGFuZGxlciBpbiBsb2dnZXIuaGFuZGxlcnM6ICAjIHJlZW50cmFuY3kK
LSAgICAgICAgIyBBZGRpbmcgdGhlIHNhbWUgaGFuZGxlciB0d2ljZSB3b3VsZCBjb25mdXNlIGxv
Z2dpbmcgc3lzdGVtLgotICAgICAgICAjIEp1c3QgZG9uJ3QgZG8gdGhhdC4KLSAgICAgICAgeWll
bGQKLSAgICBlbHNlOgotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICB5aWVsZAotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAg
bG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKLQotCi1AY29udGV4dG1hbmFnZXIKLWRlZiBj
YXRjaGluZ19sb2dzKGhhbmRsZXIsIGZvcm1hdHRlcj1Ob25lLAotICAgICAgICAgICAgICAgICAg
bGV2ZWw9bG9nZ2luZy5OT1RTRVQsIGxvZ2dlcj1Ob25lKToKLSAgICAiIiJDb250ZXh0IG1hbmFn
ZXIgdGhhdCBwcmVwYXJlcyB0aGUgd2hvbGUgbG9nZ2luZyBtYWNoaW5lcnkgcHJvcGVybHkuIiIi
Ci0gICAgbG9nZ2VyID0gbG9nZ2VyIG9yIGxvZ2dpbmcuZ2V0TG9nZ2VyKGxvZ2dlcikKLQotICAg
IGlmIGZvcm1hdHRlciBpcyBub3QgTm9uZToKLSAgICAgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIo
Zm9ybWF0dGVyKQotICAgIGhhbmRsZXIuc2V0TGV2ZWwobGV2ZWwpCi0KLSAgICB3aXRoIGxvZ2dp
bmdfdXNpbmdfaGFuZGxlcihoYW5kbGVyLCBsb2dnZXIpOgotICAgICAgICBvcmlnX2xldmVsID0g
bG9nZ2VyLmxldmVsCi0gICAgICAgIGxvZ2dlci5zZXRMZXZlbChtaW4ob3JpZ19sZXZlbCwgbGV2
ZWwpKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB5aWVsZCBoYW5kbGVyCi0gICAgICAgIGZp
bmFsbHk6Ci0gICAgICAgICAgICBsb2dnZXIuc2V0TGV2ZWwob3JpZ19sZXZlbCkKLQotCi1jbGFz
cyBMb2dDYXB0dXJlSGFuZGxlcihsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgotICAgICIiIkEgbG9n
Z2luZyBoYW5kbGVyIHRoYXQgc3RvcmVzIGxvZyByZWNvcmRzIGFuZCB0aGUgbG9nIHRleHQuIiIi
Ci0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgICIiIkNyZWF0ZXMgYSBuZXcgbG9n
IGhhbmRsZXIuIiIiCi0gICAgICAgIGxvZ2dpbmcuU3RyZWFtSGFuZGxlci5fX2luaXRfXyhzZWxm
LCBweS5pby5UZXh0SU8oKSkKLSAgICAgICAgc2VsZi5yZWNvcmRzID0gW10KLQotICAgIGRlZiBl
bWl0KHNlbGYsIHJlY29yZCk6Ci0gICAgICAgICIiIktlZXAgdGhlIGxvZyByZWNvcmRzIGluIGEg
bGlzdCBpbiBhZGRpdGlvbiB0byB0aGUgbG9nIHRleHQuIiIiCi0gICAgICAgIHNlbGYucmVjb3Jk
cy5hcHBlbmQocmVjb3JkKQotICAgICAgICBsb2dnaW5nLlN0cmVhbUhhbmRsZXIuZW1pdChzZWxm
LCByZWNvcmQpCi0KLQotY2xhc3MgTG9nQ2FwdHVyZUZpeHR1cmUob2JqZWN0KToKLSAgICAiIiJQ
cm92aWRlcyBhY2Nlc3MgYW5kIGNvbnRyb2wgb2YgbG9nIGNhcHR1cmluZy4iIiIKLQotICAgIGRl
ZiBfX2luaXRfXyhzZWxmLCBpdGVtKToKLSAgICAgICAgIiIiQ3JlYXRlcyBhIG5ldyBmdW5jYXJn
LiIiIgotICAgICAgICBzZWxmLl9pdGVtID0gaXRlbQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVm
IGhhbmRsZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9pdGVtLmNhdGNoX2xvZ19oYW5k
bGVyCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgdGV4dChzZWxmKToKLSAgICAgICAgIiIiUmV0
dXJucyB0aGUgbG9nIHRleHQuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLmhhbmRsZXIuc3RyZWFt
LmdldHZhbHVlKCkKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiByZWNvcmRzKHNlbGYpOgotICAg
ICAgICAiIiJSZXR1cm5zIHRoZSBsaXN0IG9mIGxvZyByZWNvcmRzLiIiIgotICAgICAgICByZXR1
cm4gc2VsZi5oYW5kbGVyLnJlY29yZHMKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiByZWNvcmRf
dHVwbGVzKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm5zIGEgbGlzdCBvZiBhIHN0cmlwZWQgZG93
biB2ZXJzaW9uIG9mIGxvZyByZWNvcmRzIGludGVuZGVkCi0gICAgICAgIGZvciB1c2UgaW4gYXNz
ZXJ0aW9uIGNvbXBhcmlzb24uCi0KLSAgICAgICAgVGhlIGZvcm1hdCBvZiB0aGUgdHVwbGUgaXM6
Ci0KLSAgICAgICAgICAgIChsb2dnZXJfbmFtZSwgbG9nX2xldmVsLCBtZXNzYWdlKQotICAgICAg
ICAiIiIKLSAgICAgICAgcmV0dXJuIFsoci5uYW1lLCByLmxldmVsbm8sIHIuZ2V0TWVzc2FnZSgp
KSBmb3IgciBpbiBzZWxmLnJlY29yZHNdCi0KLSAgICBkZWYgY2xlYXIoc2VsZik6Ci0gICAgICAg
ICIiIlJlc2V0IHRoZSBsaXN0IG9mIGxvZyByZWNvcmRzLiIiIgotICAgICAgICBzZWxmLmhhbmRs
ZXIucmVjb3JkcyA9IFtdCi0KLSAgICBkZWYgc2V0X2xldmVsKHNlbGYsIGxldmVsLCBsb2dnZXI9
Tm9uZSk6Ci0gICAgICAgICIiIlNldHMgdGhlIGxldmVsIGZvciBjYXB0dXJpbmcgb2YgbG9ncy4K
LQotICAgICAgICBCeSBkZWZhdWx0LCB0aGUgbGV2ZWwgaXMgc2V0IG9uIHRoZSBoYW5kbGVyIHVz
ZWQgdG8gY2FwdHVyZQotICAgICAgICBsb2dzLiBTcGVjaWZ5IGEgbG9nZ2VyIG5hbWUgdG8gaW5z
dGVhZCBzZXQgdGhlIGxldmVsIG9mIGFueQotICAgICAgICBsb2dnZXIuCi0gICAgICAgICIiIgot
ICAgICAgICBpZiBsb2dnZXIgaXMgTm9uZToKLSAgICAgICAgICAgIGxvZ2dlciA9IHNlbGYuaGFu
ZGxlcgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dn
ZXIobG9nZ2VyKQotICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCi0KLSAgICBAY29udGV4
dG1hbmFnZXIKLSAgICBkZWYgYXRfbGV2ZWwoc2VsZiwgbGV2ZWwsIGxvZ2dlcj1Ob25lKToKLSAg
ICAgICAgIiIiQ29udGV4dCBtYW5hZ2VyIHRoYXQgc2V0cyB0aGUgbGV2ZWwgZm9yIGNhcHR1cmlu
ZyBvZiBsb2dzLgotCi0gICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBsZXZlbCBpcyBzZXQgb24gdGhl
IGhhbmRsZXIgdXNlZCB0byBjYXB0dXJlCi0gICAgICAgIGxvZ3MuIFNwZWNpZnkgYSBsb2dnZXIg
bmFtZSB0byBpbnN0ZWFkIHNldCB0aGUgbGV2ZWwgb2YgYW55Ci0gICAgICAgIGxvZ2dlci4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGlmIGxvZ2dlciBpcyBOb25lOgotICAgICAgICAgICAgbG9nZ2Vy
ID0gc2VsZi5oYW5kbGVyCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIgPSBsb2dn
aW5nLmdldExvZ2dlcihsb2dnZXIpCi0KLSAgICAgICAgb3JpZ19sZXZlbCA9IGxvZ2dlci5sZXZl
bAotICAgICAgICBsb2dnZXIuc2V0TGV2ZWwobGV2ZWwpCi0gICAgICAgIHRyeToKLSAgICAgICAg
ICAgIHlpZWxkCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBsb2dnZXIuc2V0TGV2ZWwo
b3JpZ19sZXZlbCkKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBjYXBsb2cocmVxdWVzdCk6Ci0g
ICAgIiIiQWNjZXNzIGFuZCBjb250cm9sIGxvZyBjYXB0dXJpbmcuCi0KLSAgICBDYXB0dXJlZCBs
b2dzIGFyZSBhdmFpbGFibGUgdGhyb3VnaCB0aGUgZm9sbG93aW5nIG1ldGhvZHM6OgotCi0gICAg
KiBjYXBsb2cudGV4dCgpICAgICAgICAgIC0+IHN0cmluZyBjb250YWluaW5nIGZvcm1hdHRlZCBs
b2cgb3V0cHV0Ci0gICAgKiBjYXBsb2cucmVjb3JkcygpICAgICAgIC0+IGxpc3Qgb2YgbG9nZ2lu
Zy5Mb2dSZWNvcmQgaW5zdGFuY2VzCi0gICAgKiBjYXBsb2cucmVjb3JkX3R1cGxlcygpIC0+IGxp
c3Qgb2YgKGxvZ2dlcl9uYW1lLCBsZXZlbCwgbWVzc2FnZSkgdHVwbGVzCi0gICAgIiIiCi0gICAg
cmV0dXJuIExvZ0NhcHR1cmVGaXh0dXJlKHJlcXVlc3Qubm9kZSkKLQotCi1kZWYgZ2V0X2FjdHVh
bF9sb2dfbGV2ZWwoY29uZmlnLCAqc2V0dGluZ19uYW1lcyk6Ci0gICAgIiIiUmV0dXJuIHRoZSBh
Y3R1YWwgbG9nZ2luZyBsZXZlbC4iIiIKLQotICAgIGZvciBzZXR0aW5nX25hbWUgaW4gc2V0dGlu
Z19uYW1lczoKLSAgICAgICAgbG9nX2xldmVsID0gY29uZmlnLmdldG9wdGlvbihzZXR0aW5nX25h
bWUpCi0gICAgICAgIGlmIGxvZ19sZXZlbCBpcyBOb25lOgotICAgICAgICAgICAgbG9nX2xldmVs
ID0gY29uZmlnLmdldGluaShzZXR0aW5nX25hbWUpCi0gICAgICAgIGlmIGxvZ19sZXZlbDoKLSAg
ICAgICAgICAgIGJyZWFrCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuCi0KLSAgICBpZiBpc2lu
c3RhbmNlKGxvZ19sZXZlbCwgc2l4LnN0cmluZ190eXBlcyk6Ci0gICAgICAgIGxvZ19sZXZlbCA9
IGxvZ19sZXZlbC51cHBlcigpCi0gICAgdHJ5OgotICAgICAgICByZXR1cm4gaW50KGdldGF0dHIo
bG9nZ2luZywgbG9nX2xldmVsLCBsb2dfbGV2ZWwpKQotICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgot
ICAgICAgICAjIFB5dGhvbiBsb2dnaW5nIGRvZXMgbm90IHJlY29nbmlzZSB0aGlzIGFzIGEgbG9n
Z2luZyBsZXZlbAotICAgICAgICByYWlzZSBweXRlc3QuVXNhZ2VFcnJvcigKLSAgICAgICAgICAg
ICInezB9JyBpcyBub3QgcmVjb2duaXplZCBhcyBhIGxvZ2dpbmcgbGV2ZWwgbmFtZSBmb3IgIgot
ICAgICAgICAgICAgIid7MX0nLiBQbGVhc2UgY29uc2lkZXIgcGFzc2luZyB0aGUgIgotICAgICAg
ICAgICAgImxvZ2dpbmcgbGV2ZWwgbnVtIGluc3RlYWQuIi5mb3JtYXQoCi0gICAgICAgICAgICAg
ICAgbG9nX2xldmVsLAotICAgICAgICAgICAgICAgIHNldHRpbmdfbmFtZSkpCi0KLQotZGVmIHB5
dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICBjb25maWcucGx1Z2lubWFuYWdlci5yZWdpc3Rl
cihMb2dnaW5nUGx1Z2luKGNvbmZpZyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgJ2xvZ2dpbmctcGx1Z2luJykKLQotCi1jbGFzcyBMb2dnaW5nUGx1Z2luKG9iamVjdCk6Ci0g
ICAgIiIiQXR0YWNoZXMgdG8gdGhlIGxvZ2dpbmcgbW9kdWxlIGFuZCBjYXB0dXJlcyBsb2cgbWVz
c2FnZXMgZm9yIGVhY2ggdGVzdC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBj
b25maWcpOgotICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IHBsdWdpbiB0byBjYXB0dXJlIGxvZyBt
ZXNzYWdlcy4KLQotICAgICAgICBUaGUgZm9ybWF0dGVyIGNhbiBiZSBzYWZlbHkgc2hhcmVkIGFj
cm9zcyBhbGwgaGFuZGxlcnMgc28KLSAgICAgICAgY3JlYXRlIGEgc2luZ2xlIG9uZSBmb3IgdGhl
IGVudGlyZSB0ZXN0IHNlc3Npb24gaGVyZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYubG9n
X2NsaV9sZXZlbCA9IGdldF9hY3R1YWxfbG9nX2xldmVsKAotICAgICAgICAgICAgY29uZmlnLCAn
bG9nX2NsaV9sZXZlbCcsICdsb2dfbGV2ZWwnKSBvciBsb2dnaW5nLldBUk5JTkcKLQotICAgICAg
ICBzZWxmLnByaW50X2xvZ3MgPSBnZXRfb3B0aW9uX2luaShjb25maWcsICdsb2dfcHJpbnQnKQot
ICAgICAgICBzZWxmLmZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAotICAgICAgICAgICAg
Z2V0X29wdGlvbl9pbmkoY29uZmlnLCAnbG9nX2Zvcm1hdCcpLAotICAgICAgICAgICAgZ2V0X29w
dGlvbl9pbmkoY29uZmlnLCAnbG9nX2RhdGVfZm9ybWF0JykpCi0KLSAgICAgICAgbG9nX2NsaV9o
YW5kbGVyID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCi0gICAgICAgIGxvZ19j
bGlfZm9ybWF0ID0gZ2V0X29wdGlvbl9pbmkoCi0gICAgICAgICAgICBjb25maWcsICdsb2dfY2xp
X2Zvcm1hdCcsICdsb2dfZm9ybWF0JykKLSAgICAgICAgbG9nX2NsaV9kYXRlX2Zvcm1hdCA9IGdl
dF9vcHRpb25faW5pKAotICAgICAgICAgICAgY29uZmlnLCAnbG9nX2NsaV9kYXRlX2Zvcm1hdCcs
ICdsb2dfZGF0ZV9mb3JtYXQnKQotICAgICAgICBsb2dfY2xpX2Zvcm1hdHRlciA9IGxvZ2dpbmcu
Rm9ybWF0dGVyKAotICAgICAgICAgICAgbG9nX2NsaV9mb3JtYXQsCi0gICAgICAgICAgICBkYXRl
Zm10PWxvZ19jbGlfZGF0ZV9mb3JtYXQpCi0gICAgICAgIHNlbGYubG9nX2NsaV9oYW5kbGVyID0g
bG9nX2NsaV9oYW5kbGVyICAjIG5lZWRlZCBmb3IgYSBzaW5nbGUgdW5pdHRlc3QKLSAgICAgICAg
c2VsZi5saXZlX2xvZ3MgPSBjYXRjaGluZ19sb2dzKGxvZ19jbGlfaGFuZGxlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcj1sb2dfY2xpX2Zvcm1hdHRl
ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldmVsPXNlbGYubG9n
X2NsaV9sZXZlbCkKLQotICAgICAgICBsb2dfZmlsZSA9IGdldF9vcHRpb25faW5pKGNvbmZpZywg
J2xvZ19maWxlJykKLSAgICAgICAgaWYgbG9nX2ZpbGU6Ci0gICAgICAgICAgICBzZWxmLmxvZ19m
aWxlX2xldmVsID0gZ2V0X2FjdHVhbF9sb2dfbGV2ZWwoCi0gICAgICAgICAgICAgICAgY29uZmln
LCAnbG9nX2ZpbGVfbGV2ZWwnKSBvciBsb2dnaW5nLldBUk5JTkcKLQotICAgICAgICAgICAgbG9n
X2ZpbGVfZm9ybWF0ID0gZ2V0X29wdGlvbl9pbmkoCi0gICAgICAgICAgICAgICAgY29uZmlnLCAn
bG9nX2ZpbGVfZm9ybWF0JywgJ2xvZ19mb3JtYXQnKQotICAgICAgICAgICAgbG9nX2ZpbGVfZGF0
ZV9mb3JtYXQgPSBnZXRfb3B0aW9uX2luaSgKLSAgICAgICAgICAgICAgICBjb25maWcsICdsb2df
ZmlsZV9kYXRlX2Zvcm1hdCcsICdsb2dfZGF0ZV9mb3JtYXQnKQotICAgICAgICAgICAgc2VsZi5s
b2dfZmlsZV9oYW5kbGVyID0gbG9nZ2luZy5GaWxlSGFuZGxlcigKLSAgICAgICAgICAgICAgICBs
b2dfZmlsZSwKLSAgICAgICAgICAgICAgICAjIEVhY2ggcHl0ZXN0IHJ1bnRlc3RzIHNlc3Npb24g
d2lsbCB3cml0ZSB0byBhIGNsZWFuIGxvZ2ZpbGUKLSAgICAgICAgICAgICAgICBtb2RlPSd3JykK
LSAgICAgICAgICAgIGxvZ19maWxlX2Zvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0dGVyKAotICAg
ICAgICAgICAgICAgIGxvZ19maWxlX2Zvcm1hdCwKLSAgICAgICAgICAgICAgICBkYXRlZm10PWxv
Z19maWxlX2RhdGVfZm9ybWF0KQotICAgICAgICAgICAgc2VsZi5sb2dfZmlsZV9oYW5kbGVyLnNl
dEZvcm1hdHRlcihsb2dfZmlsZV9mb3JtYXR0ZXIpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBzZWxmLmxvZ19maWxlX2hhbmRsZXIgPSBOb25lCi0KLSAgICBAY29udGV4dG1hbmFnZXIKLSAg
ICBkZWYgX3J1bnRlc3RfZm9yKHNlbGYsIGl0ZW0sIHdoZW4pOgotICAgICAgICAiIiJJbXBsZW1l
bnRzIHRoZSBpbnRlcm5hbHMgb2YgcHl0ZXN0X3J1bnRlc3RfeHh4KCkgaG9vay4iIiIKLSAgICAg
ICAgd2l0aCBjYXRjaGluZ19sb2dzKExvZ0NhcHR1cmVIYW5kbGVyKCksCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICBmb3JtYXR0ZXI9c2VsZi5mb3JtYXR0ZXIpIGFzIGxvZ19oYW5kbGVyOgot
ICAgICAgICAgICAgaXRlbS5jYXRjaF9sb2dfaGFuZGxlciA9IGxvZ19oYW5kbGVyCi0gICAgICAg
ICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgeWllbGQgICMgcnVuIHRlc3QKLSAgICAgICAgICAg
IGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgZGVsIGl0ZW0uY2F0Y2hfbG9nX2hhbmRsZXIKLQot
ICAgICAgICAgICAgaWYgc2VsZi5wcmludF9sb2dzOgotICAgICAgICAgICAgICAgICMgQWRkIGEg
Y2FwdHVyZWQgbG9nIHNlY3Rpb24gdG8gdGhlIHJlcG9ydC4KLSAgICAgICAgICAgICAgICBsb2cg
PSBsb2dfaGFuZGxlci5zdHJlYW0uZ2V0dmFsdWUoKS5zdHJpcCgpCi0gICAgICAgICAgICAgICAg
aXRlbS5hZGRfcmVwb3J0X3NlY3Rpb24od2hlbiwgJ2xvZycsIGxvZykKLQotICAgIEBweXRlc3Qu
aG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3Rfc2V0dXAo
c2VsZiwgaXRlbSk6Ci0gICAgICAgIHdpdGggc2VsZi5fcnVudGVzdF9mb3IoaXRlbSwgJ3NldHVw
Jyk6Ci0gICAgICAgICAgICB5aWVsZAotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBl
cj1UcnVlKQotICAgIGRlZiBweXRlc3RfcnVudGVzdF9jYWxsKHNlbGYsIGl0ZW0pOgotICAgICAg
ICB3aXRoIHNlbGYuX3J1bnRlc3RfZm9yKGl0ZW0sICdjYWxsJyk6Ci0gICAgICAgICAgICB5aWVs
ZAotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAgIGRlZiBweXRl
c3RfcnVudGVzdF90ZWFyZG93bihzZWxmLCBpdGVtKToKLSAgICAgICAgd2l0aCBzZWxmLl9ydW50
ZXN0X2ZvcihpdGVtLCAndGVhcmRvd24nKToKLSAgICAgICAgICAgIHlpZWxkCi0KLSAgICBAcHl0
ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0bG9v
cChzZWxmLCBzZXNzaW9uKToKLSAgICAgICAgIiIiUnVucyBhbGwgY29sbGVjdGVkIHRlc3QgaXRl
bXMuIiIiCi0gICAgICAgIHdpdGggc2VsZi5saXZlX2xvZ3M6Ci0gICAgICAgICAgICBpZiBzZWxm
LmxvZ19maWxlX2hhbmRsZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgd2l0aCBjbG9z
aW5nKHNlbGYubG9nX2ZpbGVfaGFuZGxlcik6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggY2F0
Y2hpbmdfbG9ncyhzZWxmLmxvZ19maWxlX2hhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBsZXZlbD1zZWxmLmxvZ19maWxlX2xldmVsKToKLSAgICAgICAgICAg
ICAgICAgICAgICAgIHlpZWxkICAjIHJ1biBhbGwgdGhlIHRlc3RzCi0gICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgIHlpZWxkICAjIHJ1biBhbGwgdGhlIHRlc3RzCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L21haW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L21haW4u
cHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NTU0MDk4ZGFjMjk5ZjZkOWM3MWQy
YmYxOTM5ZjhhZWE0MzMxMTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tYWluLnB5CisrKyAvZGV2L251bGwKQEAgLTEs
ODIxICswLDAgQEAKLSIiIiBjb3JlIGltcGxlbWVudGF0aW9uIG9mIHRlc3RpbmcgcHJvY2Vzczog
aW5pdCwgc2Vzc2lvbiwgcnVudGVzdCBsb29wLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGZ1bmN0
b29scwotaW1wb3J0IG9zCi1pbXBvcnQgc2l4Ci1pbXBvcnQgc3lzCi0KLWltcG9ydCBfcHl0ZXN0
Ci1mcm9tIF9weXRlc3QgaW1wb3J0IG5vZGVzCi1pbXBvcnQgX3B5dGVzdC5fY29kZQotaW1wb3J0
IHB5Ci10cnk6Ci0gICAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTXV0YWJsZU1hcHBpbmcgYXMg
TWFwcGluZ01peGluCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgZnJvbSBVc2VyRGljdCBpbXBv
cnQgRGljdE1peGluIGFzIE1hcHBpbmdNaXhpbgotCi1mcm9tIF9weXRlc3QuY29uZmlnIGltcG9y
dCBkaXJlY3RvcnlfYXJnLCBVc2FnZUVycm9yLCBob29raW1wbAotZnJvbSBfcHl0ZXN0Lm91dGNv
bWVzIGltcG9ydCBleGl0Ci1mcm9tIF9weXRlc3QucnVubmVyIGltcG9ydCBjb2xsZWN0X29uZV9u
b2RlCi0KLXRyYWNlYmFja2N1dGRpciA9IHB5LnBhdGgubG9jYWwoX3B5dGVzdC5fX2ZpbGVfXyku
ZGlycGF0aCgpCi0KLSMgZXhpdGNvZGVzIGZvciB0aGUgY29tbWFuZCBsaW5lCi1FWElUX09LID0g
MAotRVhJVF9URVNUU0ZBSUxFRCA9IDEKLUVYSVRfSU5URVJSVVBURUQgPSAyCi1FWElUX0lOVEVS
TkFMRVJST1IgPSAzCi1FWElUX1VTQUdFRVJST1IgPSA0Ci1FWElUX05PVEVTVFNDT0xMRUNURUQg
PSA1Ci0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBwYXJzZXIuYWRkaW5p
KCJub3JlY3Vyc2VkaXJzIiwgImRpcmVjdG9yeSBwYXR0ZXJucyB0byBhdm9pZCBmb3IgcmVjdXJz
aW9uIiwKLSAgICAgICAgICAgICAgICAgIHR5cGU9ImFyZ3MiLCBkZWZhdWx0PVsnLionLCAnYnVp
bGQnLCAnZGlzdCcsICdDVlMnLCAnX2RhcmNzJywgJ3thcmNofScsICcqLmVnZycsICd2ZW52J10p
Ci0gICAgcGFyc2VyLmFkZGluaSgidGVzdHBhdGhzIiwgImRpcmVjdG9yaWVzIHRvIHNlYXJjaCBm
b3IgdGVzdHMgd2hlbiBubyBmaWxlcyBvciBkaXJlY3RvcmllcyBhcmUgZ2l2ZW4gaW4gdGhlICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tbWFuZCBsaW5lLiIsCi0gICAgICAg
ICAgICAgICAgICB0eXBlPSJhcmdzIiwgZGVmYXVsdD1bXSkKLSAgICAjIHBhcnNlci5hZGRpbmko
ImRpcnBhdHRlcm5zIiwKLSAgICAjICAgICJwYXR0ZXJucyBzcGVjaWZ5aW5nIHBvc3NpYmxlIGxv
Y2F0aW9ucyBvZiB0ZXN0IGZpbGVzIiwKLSAgICAjICAgIHR5cGU9ImxpbmVsaXN0IiwgZGVmYXVs
dD1bIioqL3Rlc3RfKi50eHQiLAotICAgICMgICAgICAgICAgICAiKiovdGVzdF8qLnB5IiwgIioq
LypfdGVzdC5weSJdCi0gICAgIyApCi0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImdlbmVy
YWwiLCAicnVubmluZyBhbmQgc2VsZWN0aW9uIG9wdGlvbnMiKQotICAgIGdyb3VwLl9hZGRvcHRp
b24oJy14JywgJy0tZXhpdGZpcnN0JywgYWN0aW9uPSJzdG9yZV9jb25zdCIsCi0gICAgICAgICAg
ICAgICAgICAgICBkZXN0PSJtYXhmYWlsIiwgY29uc3Q9MSwKLSAgICAgICAgICAgICAgICAgICAg
IGhlbHA9ImV4aXQgaW5zdGFudGx5IG9uIGZpcnN0IGVycm9yIG9yIGZhaWxlZCB0ZXN0LiIpLAot
ICAgIGdyb3VwLl9hZGRvcHRpb24oJy0tbWF4ZmFpbCcsIG1ldGF2YXI9Im51bSIsCi0gICAgICAg
ICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgdHlwZT1pbnQsIGRlc3Q9Im1heGZhaWwiLCBk
ZWZhdWx0PTAsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJleGl0IGFmdGVyIGZpcnN0IG51
bSBmYWlsdXJlcyBvciBlcnJvcnMuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKCctLXN0cmljdCcs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJtYXJrcyBu
b3QgcmVnaXN0ZXJlZCBpbiBjb25maWd1cmF0aW9uIGZpbGUgcmFpc2UgZXJyb3JzLiIpCi0gICAg
Z3JvdXAuX2FkZG9wdGlvbigiLWMiLCBtZXRhdmFyPSJmaWxlIiwgdHlwZT1zdHIsIGRlc3Q9Imlu
aWZpbGVuYW1lIiwKLSAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImxvYWQgY29uZmlndXJhdGlv
biBmcm9tIGBmaWxlYCBpbnN0ZWFkIG9mIHRyeWluZyB0byBsb2NhdGUgb25lIG9mIHRoZSBpbXBs
aWNpdCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJjb25maWd1cmF0aW9uIGZpbGVzLiIp
Ci0gICAgZ3JvdXAuX2FkZG9wdGlvbigiLS1jb250aW51ZS1vbi1jb2xsZWN0aW9uLWVycm9ycyIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNl
LCBkZXN0PSJjb250aW51ZV9vbl9jb2xsZWN0aW9uX2Vycm9ycyIsCi0gICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJGb3JjZSB0ZXN0IGV4ZWN1dGlvbiBldmVuIGlmIGNvbGxlY3Rpb24gZXJyb3Jz
IG9jY3VyLiIpCi0KLSAgICBncm91cCA9IHBhcnNlci5nZXRncm91cCgiY29sbGVjdCIsICJjb2xs
ZWN0aW9uIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0tY29sbGVjdG9ubHknLCAnLS1jb2xsZWN0
LW9ubHknLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJv
bmx5IGNvbGxlY3QgdGVzdHMsIGRvbid0IGV4ZWN1dGUgdGhlbS4iKSwKLSAgICBncm91cC5hZGRv
cHRpb24oJy0tcHlhcmdzJywgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAgICAgICAgICAg
ICAgaGVscD0idHJ5IHRvIGludGVycHJldCBhbGwgYXJndW1lbnRzIGFzIHB5dGhvbiBwYWNrYWdl
cy4iKQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1pZ25vcmUiLCBhY3Rpb249ImFwcGVuZCIsIG1l
dGF2YXI9InBhdGgiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJpZ25vcmUgcGF0aCBkdXJp
bmcgY29sbGVjdGlvbiAobXVsdGktYWxsb3dlZCkuIikKLSAgICAjIHdoZW4gY2hhbmdpbmcgdGhp
cyB0byAtLWNvbmYtY3V0LWRpciwgY29uZmlnLnB5IENvbmZ0ZXN0LnNldGluaXRpYWwKLSAgICAj
IG5lZWRzIHVwZ3JhZGluZyBhcyB3ZWxsCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLWNvbmZjdXRk
aXInLCBkZXN0PSJjb25mY3V0ZGlyIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICBtZXRhdmFyPSJkaXIiLCB0eXBlPWZ1bmN0b29scy5wYXJ0aWFsKGRpcmVjdG9yeV9hcmcsIG9w
dG5hbWU9Ii0tY29uZmN1dGRpciIpLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IGxv
YWQgY29uZnRlc3QucHkncyByZWxhdGl2ZSB0byBzcGVjaWZpZWQgZGlyLiIpCi0gICAgZ3JvdXAu
YWRkb3B0aW9uKCctLW5vY29uZnRlc3QnLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAg
ICAgICAgICAgICBkZXN0PSJub2NvbmZ0ZXN0IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAg
ICAgICAgICAgaGVscD0iRG9uJ3QgbG9hZCBhbnkgY29uZnRlc3QucHkgZmlsZXMuIikKLSAgICBn
cm91cC5hZGRvcHRpb24oJy0ta2VlcGR1cGxpY2F0ZXMnLCAnLS1rZWVwLWR1cGxpY2F0ZXMnLCBh
Y3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICBkZXN0PSJrZWVwZHVwbGlj
YXRlcyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9IktlZXAgZHVw
bGljYXRlIHRlc3RzLiIpCi0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLWNvbGxlY3QtaW4tdmlydHVh
bGVudicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgIGRlc3Q9J2Nv
bGxlY3RfaW5fdmlydHVhbGVudicsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAg
IGhlbHA9IkRvbid0IGlnbm9yZSB0ZXN0cyBpbiBhIGxvY2FsIHZpcnR1YWxlbnYgZGlyZWN0b3J5
IikKLQotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJkZWJ1Z2NvbmZpZyIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInRlc3Qgc2Vzc2lvbiBkZWJ1Z2dpbmcgYW5kIGNvbmZpZ3Vy
YXRpb24iKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1iYXNldGVtcCcsIGRlc3Q9ImJhc2V0ZW1w
IiwgZGVmYXVsdD1Ob25lLCBtZXRhdmFyPSJkaXIiLAotICAgICAgICAgICAgICAgICAgICBoZWxw
PSJiYXNlIHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIHRoaXMgdGVzdCBydW4uIikKLQotCi1kZWYg
cHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIF9faW1wb3J0X18oJ3B5dGVzdCcpLmNvbmZp
ZyA9IGNvbmZpZyAgIyBjb21wYXRpYmlsdGl5Ci0KLQotZGVmIHdyYXBfc2Vzc2lvbihjb25maWcs
IGRvaXQpOgotICAgICIiIlNrZWxldG9uIGNvbW1hbmQgbGluZSBwcm9ncmFtIiIiCi0gICAgc2Vz
c2lvbiA9IFNlc3Npb24oY29uZmlnKQotICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9IEVYSVRfT0sK
LSAgICBpbml0c3RhdGUgPSAwCi0gICAgdHJ5OgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBj
b25maWcuX2RvX2NvbmZpZ3VyZSgpCi0gICAgICAgICAgICBpbml0c3RhdGUgPSAxCi0gICAgICAg
ICAgICBjb25maWcuaG9vay5weXRlc3Rfc2Vzc2lvbnN0YXJ0KHNlc3Npb249c2Vzc2lvbikKLSAg
ICAgICAgICAgIGluaXRzdGF0ZSA9IDIKLSAgICAgICAgICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9
IGRvaXQoY29uZmlnLCBzZXNzaW9uKSBvciAwCi0gICAgICAgIGV4Y2VwdCBVc2FnZUVycm9yOgot
ICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0IEZhaWxlZDoKLSAgICAgICAgICAgIHNl
c3Npb24uZXhpdHN0YXR1cyA9IEVYSVRfVEVTVFNGQUlMRUQKLSAgICAgICAgZXhjZXB0IEtleWJv
YXJkSW50ZXJydXB0OgotICAgICAgICAgICAgZXhjaW5mbyA9IF9weXRlc3QuX2NvZGUuRXhjZXB0
aW9uSW5mbygpCi0gICAgICAgICAgICBpZiBpbml0c3RhdGUgPCAyIGFuZCBpc2luc3RhbmNlKGV4
Y2luZm8udmFsdWUsIGV4aXQuRXhjZXB0aW9uKToKLSAgICAgICAgICAgICAgICBzeXMuc3RkZXJy
LndyaXRlKCd7MH06IHsxfVxuJy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIGV4Y2luZm8u
dHlwZW5hbWUsIGV4Y2luZm8udmFsdWUubXNnKSkKLSAgICAgICAgICAgIGNvbmZpZy5ob29rLnB5
dGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQoZXhjaW5mbz1leGNpbmZvKQotICAgICAgICAgICAgc2Vz
c2lvbi5leGl0c3RhdHVzID0gRVhJVF9JTlRFUlJVUFRFRAotICAgICAgICBleGNlcHQ6ICAjIG5v
cWEKLSAgICAgICAgICAgIGV4Y2luZm8gPSBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQot
ICAgICAgICAgICAgY29uZmlnLm5vdGlmeV9leGNlcHRpb24oZXhjaW5mbywgY29uZmlnLm9wdGlv
bikKLSAgICAgICAgICAgIHNlc3Npb24uZXhpdHN0YXR1cyA9IEVYSVRfSU5URVJOQUxFUlJPUgot
ICAgICAgICAgICAgaWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKFN5c3RlbUV4aXQpOgotICAgICAg
ICAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIm1haW5sb29wOiBjYXVnaHQgU3B1cmlvdXMgU3lz
dGVtRXhpdCFcbiIpCi0KLSAgICBmaW5hbGx5OgotICAgICAgICBleGNpbmZvID0gTm9uZSAgIyBF
eHBsaWNpdGx5IGJyZWFrIHJlZmVyZW5jZSBjeWNsZS4KLSAgICAgICAgc2Vzc2lvbi5zdGFydGRp
ci5jaGRpcigpCi0gICAgICAgIGlmIGluaXRzdGF0ZSA+PSAyOgotICAgICAgICAgICAgY29uZmln
Lmhvb2sucHl0ZXN0X3Nlc3Npb25maW5pc2goCi0gICAgICAgICAgICAgICAgc2Vzc2lvbj1zZXNz
aW9uLAotICAgICAgICAgICAgICAgIGV4aXRzdGF0dXM9c2Vzc2lvbi5leGl0c3RhdHVzKQotICAg
ICAgICBjb25maWcuX2Vuc3VyZV91bmNvbmZpZ3VyZSgpCi0gICAgcmV0dXJuIHNlc3Npb24uZXhp
dHN0YXR1cwotCi0KLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6Ci0gICAgcmV0dXJu
IHdyYXBfc2Vzc2lvbihjb25maWcsIF9tYWluKQotCi0KLWRlZiBfbWFpbihjb25maWcsIHNlc3Np
b24pOgotICAgICIiIiBkZWZhdWx0IGNvbW1hbmQgbGluZSBwcm90b2NvbCBmb3IgaW5pdGlhbGl6
YXRpb24sIHNlc3Npb24sCi0gICAgcnVubmluZyB0ZXN0cyBhbmQgcmVwb3J0aW5nLiAiIiIKLSAg
ICBjb25maWcuaG9vay5weXRlc3RfY29sbGVjdGlvbihzZXNzaW9uPXNlc3Npb24pCi0gICAgY29u
ZmlnLmhvb2sucHl0ZXN0X3J1bnRlc3Rsb29wKHNlc3Npb249c2Vzc2lvbikKLQotICAgIGlmIHNl
c3Npb24udGVzdHNmYWlsZWQ6Ci0gICAgICAgIHJldHVybiBFWElUX1RFU1RTRkFJTEVECi0gICAg
ZWxpZiBzZXNzaW9uLnRlc3RzY29sbGVjdGVkID09IDA6Ci0gICAgICAgIHJldHVybiBFWElUX05P
VEVTVFNDT0xMRUNURUQKLQotCi1kZWYgcHl0ZXN0X2NvbGxlY3Rpb24oc2Vzc2lvbik6Ci0gICAg
cmV0dXJuIHNlc3Npb24ucGVyZm9ybV9jb2xsZWN0KCkKLQotCi1kZWYgcHl0ZXN0X3J1bnRlc3Rs
b29wKHNlc3Npb24pOgotICAgIGlmIChzZXNzaW9uLnRlc3RzZmFpbGVkIGFuZAotICAgICAgICAg
ICAgbm90IHNlc3Npb24uY29uZmlnLm9wdGlvbi5jb250aW51ZV9vbl9jb2xsZWN0aW9uX2Vycm9y
cyk6Ci0gICAgICAgIHJhaXNlIHNlc3Npb24uSW50ZXJydXB0ZWQoCi0gICAgICAgICAgICAiJWQg
ZXJyb3JzIGR1cmluZyBjb2xsZWN0aW9uIiAlIHNlc3Npb24udGVzdHNmYWlsZWQpCi0KLSAgICBp
ZiBzZXNzaW9uLmNvbmZpZy5vcHRpb24uY29sbGVjdG9ubHk6Ci0gICAgICAgIHJldHVybiBUcnVl
Ci0KLSAgICBmb3IgaSwgaXRlbSBpbiBlbnVtZXJhdGUoc2Vzc2lvbi5pdGVtcyk6Ci0gICAgICAg
IG5leHRpdGVtID0gc2Vzc2lvbi5pdGVtc1tpICsgMV0gaWYgaSArIDEgPCBsZW4oc2Vzc2lvbi5p
dGVtcykgZWxzZSBOb25lCi0gICAgICAgIGl0ZW0uY29uZmlnLmhvb2sucHl0ZXN0X3J1bnRlc3Rf
cHJvdG9jb2woaXRlbT1pdGVtLCBuZXh0aXRlbT1uZXh0aXRlbSkKLSAgICAgICAgaWYgc2Vzc2lv
bi5zaG91bGRmYWlsOgotICAgICAgICAgICAgcmFpc2Ugc2Vzc2lvbi5GYWlsZWQoc2Vzc2lvbi5z
aG91bGRmYWlsKQotICAgICAgICBpZiBzZXNzaW9uLnNob3VsZHN0b3A6Ci0gICAgICAgICAgICBy
YWlzZSBzZXNzaW9uLkludGVycnVwdGVkKHNlc3Npb24uc2hvdWxkc3RvcCkKLSAgICByZXR1cm4g
VHJ1ZQotCi0KLWRlZiBfaW5fdmVudihwYXRoKToKLSAgICAiIiJBdHRlbXB0cyB0byBkZXRlY3Qg
aWYgYGBwYXRoYGAgaXMgdGhlIHJvb3Qgb2YgYSBWaXJ0dWFsIEVudmlyb25tZW50IGJ5Ci0gICAg
Y2hlY2tpbmcgZm9yIHRoZSBleGlzdGVuY2Ugb2YgdGhlIGFwcHJvcHJpYXRlIGFjdGl2YXRlIHNj
cmlwdCIiIgotICAgIGJpbmRpciA9IHBhdGguam9pbignU2NyaXB0cycgaWYgc3lzLnBsYXRmb3Jt
LnN0YXJ0c3dpdGgoJ3dpbicpIGVsc2UgJ2JpbicpCi0gICAgaWYgbm90IGJpbmRpci5leGlzdHMo
KToKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgYWN0aXZhdGVzID0gKCdhY3RpdmF0ZScsICdh
Y3RpdmF0ZS5jc2gnLCAnYWN0aXZhdGUuZmlzaCcsCi0gICAgICAgICAgICAgICAgICdBY3RpdmF0
ZScsICdBY3RpdmF0ZS5iYXQnLCAnQWN0aXZhdGUucHMxJykKLSAgICByZXR1cm4gYW55KFtmbmFt
ZS5iYXNlbmFtZSBpbiBhY3RpdmF0ZXMgZm9yIGZuYW1lIGluIGJpbmRpci5saXN0ZGlyKCldKQot
Ci0KLWRlZiBweXRlc3RfaWdub3JlX2NvbGxlY3QocGF0aCwgY29uZmlnKToKLSAgICBpZ25vcmVf
cGF0aHMgPSBjb25maWcuX2dldGNvbmZ0ZXN0X3BhdGhsaXN0KCJjb2xsZWN0X2lnbm9yZSIsIHBh
dGg9cGF0aC5kaXJwYXRoKCkpCi0gICAgaWdub3JlX3BhdGhzID0gaWdub3JlX3BhdGhzIG9yIFtd
Ci0gICAgZXhjbHVkZW9wdCA9IGNvbmZpZy5nZXRvcHRpb24oImlnbm9yZSIpCi0gICAgaWYgZXhj
bHVkZW9wdDoKLSAgICAgICAgaWdub3JlX3BhdGhzLmV4dGVuZChbcHkucGF0aC5sb2NhbCh4KSBm
b3IgeCBpbiBleGNsdWRlb3B0XSkKLQotICAgIGlmIHB5LnBhdGgubG9jYWwocGF0aCkgaW4gaWdu
b3JlX3BhdGhzOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgYWxsb3dfaW5fdmVudiA9IGNv
bmZpZy5nZXRvcHRpb24oImNvbGxlY3RfaW5fdmlydHVhbGVudiIpCi0gICAgaWYgX2luX3ZlbnYo
cGF0aCkgYW5kIG5vdCBhbGxvd19pbl92ZW52OgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAg
IyBTa2lwIGR1cGxpY2F0ZSBwYXRocy4KLSAgICBrZWVwZHVwbGljYXRlcyA9IGNvbmZpZy5nZXRv
cHRpb24oImtlZXBkdXBsaWNhdGVzIikKLSAgICBkdXBsaWNhdGVfcGF0aHMgPSBjb25maWcucGx1
Z2lubWFuYWdlci5fZHVwbGljYXRlcGF0aHMKLSAgICBpZiBub3Qga2VlcGR1cGxpY2F0ZXM6Ci0g
ICAgICAgIGlmIHBhdGggaW4gZHVwbGljYXRlX3BhdGhzOgotICAgICAgICAgICAgcmV0dXJuIFRy
dWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGR1cGxpY2F0ZV9wYXRocy5hZGQocGF0aCkK
LQotICAgIHJldHVybiBGYWxzZQotCi0KLWNsYXNzIEZTSG9va1Byb3h5OgotICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBmc3BhdGgsIHBtLCByZW1vdmVfbW9kcyk6Ci0gICAgICAgIHNlbGYuZnNwYXRo
ID0gZnNwYXRoCi0gICAgICAgIHNlbGYucG0gPSBwbQotICAgICAgICBzZWxmLnJlbW92ZV9tb2Rz
ID0gcmVtb3ZlX21vZHMKLQotICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKLSAgICAg
ICAgeCA9IHNlbGYucG0uc3Vic2V0X2hvb2tfY2FsbGVyKG5hbWUsIHJlbW92ZV9wbHVnaW5zPXNl
bGYucmVtb3ZlX21vZHMpCi0gICAgICAgIHNlbGYuX19kaWN0X19bbmFtZV0gPSB4Ci0gICAgICAg
IHJldHVybiB4Ci0KLQotY2xhc3MgX0NvbXBhdFByb3BlcnR5KG9iamVjdCk6Ci0gICAgZGVmIF9f
aW5pdF9fKHNlbGYsIG5hbWUpOgotICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCi0KLSAgICBkZWYg
X19nZXRfXyhzZWxmLCBvYmosIG93bmVyKToKLSAgICAgICAgaWYgb2JqIGlzIE5vbmU6Ci0gICAg
ICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgICAgICMgVE9ETzogcmVlbmFibGUgaW4gdGhlIGZl
YXR1cmVzIGJyYW5jaAotICAgICAgICAjIHdhcm5pbmdzLndhcm4oCi0gICAgICAgICMgICAgICJ1
c2FnZSBvZiB7b3duZXIhcn0ue25hbWV9IGlzIGRlcHJlY2F0ZWQsIHBsZWFzZSB1c2UgcHl0ZXN0
LntuYW1lfSBpbnN0ZWFkIi5mb3JtYXQoCi0gICAgICAgICMgICAgICAgICBuYW1lPXNlbGYubmFt
ZSwgb3duZXI9dHlwZShvd25lcikuX19uYW1lX18pLAotICAgICAgICAjICAgICBQZW5kaW5nRGVw
cmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHJldHVybiBnZXRhdHRyKF9f
aW1wb3J0X18oJ3B5dGVzdCcpLCBzZWxmLm5hbWUpCi0KLQotY2xhc3MgTm9kZUtleXdvcmRzKE1h
cHBpbmdNaXhpbik6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vZGUpOgotICAgICAgICBzZWxm
Lm5vZGUgPSBub2RlCi0gICAgICAgIHNlbGYucGFyZW50ID0gbm9kZS5wYXJlbnQKLSAgICAgICAg
c2VsZi5fbWFya2VycyA9IHtub2RlLm5hbWU6IFRydWV9Ci0KLSAgICBkZWYgX19nZXRpdGVtX18o
c2VsZiwga2V5KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX21hcmtl
cnNba2V5XQotICAgICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBzZWxmLnBh
cmVudCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlCi0gICAgICAgICAgICByZXR1cm4g
c2VsZi5wYXJlbnQua2V5d29yZHNba2V5XQotCi0gICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtl
eSwgdmFsdWUpOgotICAgICAgICBzZWxmLl9tYXJrZXJzW2tleV0gPSB2YWx1ZQotCi0gICAgZGVm
IF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5v
dCBkZWxldGUga2V5IGluIGtleXdvcmRzIGRpY3QiKQotCi0gICAgZGVmIF9faXRlcl9fKHNlbGYp
OgotICAgICAgICBzZWVuID0gc2V0KHNlbGYuX21hcmtlcnMpCi0gICAgICAgIGlmIHNlbGYucGFy
ZW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2Vlbi51cGRhdGUoc2VsZi5wYXJlbnQua2V5
d29yZHMpCi0gICAgICAgIHJldHVybiBpdGVyKHNlZW4pCi0KLSAgICBkZWYgX19sZW5fXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLl9faXRlcl9fKCkpCi0KLSAgICBkZWYga2V5cyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuIGxpc3Qoc2VsZikKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICI8Tm9kZUtleXdvcmRzIGZvciBub2RlICVzPiIgJSAoc2VsZi5u
b2RlLCApCi0KLQotY2xhc3MgTm9kZShvYmplY3QpOgotICAgICIiIiBiYXNlIGNsYXNzIGZvciBD
b2xsZWN0b3IgYW5kIEl0ZW0gdGhlIHRlc3QgY29sbGVjdGlvbiB0cmVlLgotICAgIENvbGxlY3Rv
ciBzdWJjbGFzc2VzIGhhdmUgY2hpbGRyZW4sIEl0ZW1zIGFyZSB0ZXJtaW5hbCBub2Rlcy4iIiIK
LQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBwYXJlbnQ9Tm9uZSwgY29uZmlnPU5vbmUs
IHNlc3Npb249Tm9uZSk6Ci0gICAgICAgICM6IGEgdW5pcXVlIG5hbWUgd2l0aGluIHRoZSBzY29w
ZSBvZiB0aGUgcGFyZW50IG5vZGUKLSAgICAgICAgc2VsZi5uYW1lID0gbmFtZQotCi0gICAgICAg
ICM6IHRoZSBwYXJlbnQgY29sbGVjdG9yIG5vZGUuCi0gICAgICAgIHNlbGYucGFyZW50ID0gcGFy
ZW50Ci0KLSAgICAgICAgIzogdGhlIHB5dGVzdCBjb25maWcgb2JqZWN0Ci0gICAgICAgIHNlbGYu
Y29uZmlnID0gY29uZmlnIG9yIHBhcmVudC5jb25maWcKLQotICAgICAgICAjOiB0aGUgc2Vzc2lv
biB0aGlzIG5vZGUgaXMgcGFydCBvZgotICAgICAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9uIG9y
IHBhcmVudC5zZXNzaW9uCi0KLSAgICAgICAgIzogZmlsZXN5c3RlbSBwYXRoIHdoZXJlIHRoaXMg
bm9kZSB3YXMgY29sbGVjdGVkIGZyb20gKGNhbiBiZSBOb25lKQotICAgICAgICBzZWxmLmZzcGF0
aCA9IGdldGF0dHIocGFyZW50LCAnZnNwYXRoJywgTm9uZSkKLQotICAgICAgICAjOiBrZXl3b3Jk
cy9tYXJrZXJzIGNvbGxlY3RlZCBmcm9tIGFsbCBzY29wZXMKLSAgICAgICAgc2VsZi5rZXl3b3Jk
cyA9IE5vZGVLZXl3b3JkcyhzZWxmKQotCi0gICAgICAgICM6IGFsbG93IGFkZGluZyBvZiBleHRy
YSBrZXl3b3JkcyB0byB1c2UgZm9yIG1hdGNoaW5nCi0gICAgICAgIHNlbGYuZXh0cmFfa2V5d29y
ZF9tYXRjaGVzID0gc2V0KCkKLQotICAgICAgICAjIHVzZWQgZm9yIHN0b3JpbmcgYXJ0aWZpY2lh
bCBmaXh0dXJlZGVmcyBmb3IgZGlyZWN0IHBhcmFtZXRyaXphdGlvbgotICAgICAgICBzZWxmLl9u
YW1lMnBzZXVkb2ZpeHR1cmVkZWYgPSB7fQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGlob29r
KHNlbGYpOgotICAgICAgICAiIiIgZnNwYXRoIHNlbnNpdGl2ZSBob29rIHByb3h5IHVzZWQgdG8g
Y2FsbCBweXRlc3QgaG9va3MiIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuc2Vzc2lvbi5nZXRob29r
cHJveHkoc2VsZi5mc3BhdGgpCi0KLSAgICBNb2R1bGUgPSBfQ29tcGF0UHJvcGVydHkoIk1vZHVs
ZSIpCi0gICAgQ2xhc3MgPSBfQ29tcGF0UHJvcGVydHkoIkNsYXNzIikKLSAgICBJbnN0YW5jZSA9
IF9Db21wYXRQcm9wZXJ0eSgiSW5zdGFuY2UiKQotICAgIEZ1bmN0aW9uID0gX0NvbXBhdFByb3Bl
cnR5KCJGdW5jdGlvbiIpCi0gICAgRmlsZSA9IF9Db21wYXRQcm9wZXJ0eSgiRmlsZSIpCi0gICAg
SXRlbSA9IF9Db21wYXRQcm9wZXJ0eSgiSXRlbSIpCi0KLSAgICBkZWYgX2dldGN1c3RvbWNsYXNz
KHNlbGYsIG5hbWUpOgotICAgICAgICBtYXliZV9jb21wYXRwcm9wID0gZ2V0YXR0cih0eXBlKHNl
bGYpLCBuYW1lKQotICAgICAgICBpZiBpc2luc3RhbmNlKG1heWJlX2NvbXBhdHByb3AsIF9Db21w
YXRQcm9wZXJ0eSk6Ci0gICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihfX2ltcG9ydF9fKCdweXRl
c3QnKSwgbmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNscyA9IGdldGF0dHIoc2Vs
ZiwgbmFtZSkKLSAgICAgICAgICAgICMgVE9ETzogcmVlbmFibGUgaW4gdGhlIGZlYXR1cmVzIGJy
YW5jaAotICAgICAgICAgICAgIyB3YXJuaW5ncy53YXJuKCJ1c2Ugb2Ygbm9kZS4lcyBpcyBkZXBy
ZWNhdGVkLCAiCi0gICAgICAgICAgICAjICAgICJ1c2UgcHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRl
bSguLi4pIHRvIGNyZWF0ZSBjdXN0b20gIgotICAgICAgICAgICAgIyAgICAiY29sbGVjdGlvbiBu
b2RlcyIgJSBuYW1lLCBjYXRlZ29yeT1EZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIHJldHVy
biBjbHMKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8JXMgJXI+
IiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBnZXRhdHRyKHNlbGYsICduYW1lJywgTm9uZSkpCi0KLSAgICBkZWYgd2FybihzZWxmLCBjb2Rl
LCBtZXNzYWdlKToKLSAgICAgICAgIiIiIGdlbmVyYXRlIGEgd2FybmluZyB3aXRoIHRoZSBnaXZl
biBjb2RlIGFuZCBtZXNzYWdlIGZvciB0aGlzCi0gICAgICAgIGl0ZW0uICIiIgotICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZShjb2RlLCBzdHIpCi0gICAgICAgIGZzbG9jYXRpb24gPSBnZXRhdHRy
KHNlbGYsICJsb2NhdGlvbiIsIE5vbmUpCi0gICAgICAgIGlmIGZzbG9jYXRpb24gaXMgTm9uZToK
LSAgICAgICAgICAgIGZzbG9jYXRpb24gPSBnZXRhdHRyKHNlbGYsICJmc3BhdGgiLCBOb25lKQot
ICAgICAgICBzZWxmLmlob29rLnB5dGVzdF9sb2d3YXJuaW5nLmNhbGxfaGlzdG9yaWMoa3dhcmdz
PWRpY3QoCi0gICAgICAgICAgICBjb2RlPWNvZGUsIG1lc3NhZ2U9bWVzc2FnZSwKLSAgICAgICAg
ICAgIG5vZGVpZD1zZWxmLm5vZGVpZCwgZnNsb2NhdGlvbj1mc2xvY2F0aW9uKSkKLQotICAgICMg
bWV0aG9kcyBmb3Igb3JkZXJpbmcgbm9kZXMKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbm9kZWlk
KHNlbGYpOgotICAgICAgICAiIiIgYSA6Oi1zZXBhcmF0ZWQgc3RyaW5nIGRlbm90aW5nIGl0cyBj
b2xsZWN0aW9uIHRyZWUgYWRkcmVzcy4gIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHJl
dHVybiBzZWxmLl9ub2RlaWQKLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAg
ICAgICAgc2VsZi5fbm9kZWlkID0geCA9IHNlbGYuX21ha2VpZCgpCi0gICAgICAgICAgICByZXR1
cm4geAotCi0gICAgZGVmIF9tYWtlaWQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLnBhcmVu
dC5ub2RlaWQgKyAiOjoiICsgc2VsZi5uYW1lCi0KLSAgICBkZWYgX19oYXNoX18oc2VsZik6Ci0g
ICAgICAgIHJldHVybiBoYXNoKHNlbGYubm9kZWlkKQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgot
ICAgICAgICBwYXNzCi0KLSAgICBkZWYgdGVhcmRvd24oc2VsZik6Ci0gICAgICAgIHBhc3MKLQot
ICAgIGRlZiBsaXN0Y2hhaW4oc2VsZik6Ci0gICAgICAgICIiIiByZXR1cm4gbGlzdCBvZiBhbGwg
cGFyZW50IGNvbGxlY3RvcnMgdXAgdG8gc2VsZiwKLSAgICAgICAgICAgIHN0YXJ0aW5nIGZyb20g
cm9vdCBvZiBjb2xsZWN0aW9uIHRyZWUuICIiIgotICAgICAgICBjaGFpbiA9IFtdCi0gICAgICAg
IGl0ZW0gPSBzZWxmCi0gICAgICAgIHdoaWxlIGl0ZW0gaXMgbm90IE5vbmU6Ci0gICAgICAgICAg
ICBjaGFpbi5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgIGl0ZW0gPSBpdGVtLnBhcmVudAotICAg
ICAgICBjaGFpbi5yZXZlcnNlKCkKLSAgICAgICAgcmV0dXJuIGNoYWluCi0KLSAgICBkZWYgYWRk
X21hcmtlcihzZWxmLCBtYXJrZXIpOgotICAgICAgICAiIiIgZHluYW1pY2FsbHkgYWRkIGEgbWFy
a2VyIG9iamVjdCB0byB0aGUgbm9kZS4KLQotICAgICAgICBgYG1hcmtlcmBgIGNhbiBiZSBhIHN0
cmluZyBvciBweXRlc3QubWFyay4qIGluc3RhbmNlLgotICAgICAgICAiIiIKLSAgICAgICAgZnJv
bSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1hcmtEZWNvcmF0b3IsIE1BUktfR0VOCi0gICAgICAgIGlm
IGlzaW5zdGFuY2UobWFya2VyLCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgIG1hcmtl
ciA9IGdldGF0dHIoTUFSS19HRU4sIG1hcmtlcikKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5j
ZShtYXJrZXIsIE1hcmtEZWNvcmF0b3IpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
aXMgbm90IGEgc3RyaW5nIG9yIHB5dGVzdC5tYXJrLiogTWFya2VyIikKLSAgICAgICAgc2VsZi5r
ZXl3b3Jkc1ttYXJrZXIubmFtZV0gPSBtYXJrZXIKLQotICAgIGRlZiBnZXRfbWFya2VyKHNlbGYs
IG5hbWUpOgotICAgICAgICAiIiIgZ2V0IGEgbWFya2VyIG9iamVjdCBmcm9tIHRoaXMgbm9kZSBv
ciBOb25lIGlmCi0gICAgICAgIHRoZSBub2RlIGRvZXNuJ3QgaGF2ZSBhIG1hcmtlciB3aXRoIHRo
YXQgbmFtZS4gIiIiCi0gICAgICAgIHZhbCA9IHNlbGYua2V5d29yZHMuZ2V0KG5hbWUsIE5vbmUp
Ci0gICAgICAgIGlmIHZhbCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZyb20gX3B5dGVzdC5t
YXJrIGltcG9ydCBNYXJrSW5mbywgTWFya0RlY29yYXRvcgotICAgICAgICAgICAgaWYgaXNpbnN0
YW5jZSh2YWwsIChNYXJrRGVjb3JhdG9yLCBNYXJrSW5mbykpOgotICAgICAgICAgICAgICAgIHJl
dHVybiB2YWwKLQotICAgIGRlZiBsaXN0ZXh0cmFrZXl3b3JkcyhzZWxmKToKLSAgICAgICAgIiIi
IFJldHVybiBhIHNldCBvZiBhbGwgZXh0cmEga2V5d29yZHMgaW4gc2VsZiBhbmQgYW55IHBhcmVu
dHMuIiIiCi0gICAgICAgIGV4dHJhX2tleXdvcmRzID0gc2V0KCkKLSAgICAgICAgaXRlbSA9IHNl
bGYKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5saXN0Y2hhaW4oKToKLSAgICAgICAgICAgIGV4
dHJhX2tleXdvcmRzLnVwZGF0ZShpdGVtLmV4dHJhX2tleXdvcmRfbWF0Y2hlcykKLSAgICAgICAg
cmV0dXJuIGV4dHJhX2tleXdvcmRzCi0KLSAgICBkZWYgbGlzdG5hbWVzKHNlbGYpOgotICAgICAg
ICByZXR1cm4gW3gubmFtZSBmb3IgeCBpbiBzZWxmLmxpc3RjaGFpbigpXQotCi0gICAgZGVmIGFk
ZGZpbmFsaXplcihzZWxmLCBmaW4pOgotICAgICAgICAiIiIgcmVnaXN0ZXIgYSBmdW5jdGlvbiB0
byBiZSBjYWxsZWQgd2hlbiB0aGlzIG5vZGUgaXMgZmluYWxpemVkLgotCi0gICAgICAgIFRoaXMg
bWV0aG9kIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHRoaXMgbm9kZSBpcyBhY3RpdmUKLSAgICAg
ICAgaW4gYSBzZXR1cCBjaGFpbiwgZm9yIGV4YW1wbGUgZHVyaW5nIHNlbGYuc2V0dXAoKS4KLSAg
ICAgICAgIiIiCi0gICAgICAgIHNlbGYuc2Vzc2lvbi5fc2V0dXBzdGF0ZS5hZGRmaW5hbGl6ZXIo
ZmluLCBzZWxmKQotCi0gICAgZGVmIGdldHBhcmVudChzZWxmLCBjbHMpOgotICAgICAgICAiIiIg
Z2V0IHRoZSBuZXh0IHBhcmVudCBub2RlIChpbmNsdWRpbmcgb3Vyc2VsZikKLSAgICAgICAgd2hp
Y2ggaXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGdpdmVuIGNsYXNzIiIiCi0gICAgICAgIGN1cnJlbnQg
PSBzZWxmCi0gICAgICAgIHdoaWxlIGN1cnJlbnQgYW5kIG5vdCBpc2luc3RhbmNlKGN1cnJlbnQs
IGNscyk6Ci0gICAgICAgICAgICBjdXJyZW50ID0gY3VycmVudC5wYXJlbnQKLSAgICAgICAgcmV0
dXJuIGN1cnJlbnQKLQotICAgIGRlZiBfcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbyk6Ci0g
ICAgICAgIHBhc3MKLQotICAgIGRlZiBfcmVwcl9mYWlsdXJlX3B5KHNlbGYsIGV4Y2luZm8sIHN0
eWxlPU5vbmUpOgotICAgICAgICBmbSA9IHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIKLSAg
ICAgICAgaWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKGZtLkZpeHR1cmVMb29rdXBFcnJvcik6Ci0g
ICAgICAgICAgICByZXR1cm4gZXhjaW5mby52YWx1ZS5mb3JtYXRyZXByKCkKLSAgICAgICAgdGJm
aWx0ZXIgPSBUcnVlCi0gICAgICAgIGlmIHNlbGYuY29uZmlnLm9wdGlvbi5mdWxsdHJhY2U6Ci0g
ICAgICAgICAgICBzdHlsZSA9ICJsb25nIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGIg
PSBfcHl0ZXN0Ll9jb2RlLlRyYWNlYmFjayhbZXhjaW5mby50cmFjZWJhY2tbLTFdXSkKLSAgICAg
ICAgICAgIHNlbGYuX3BydW5ldHJhY2ViYWNrKGV4Y2luZm8pCi0gICAgICAgICAgICBpZiBsZW4o
ZXhjaW5mby50cmFjZWJhY2spID09IDA6Ci0gICAgICAgICAgICAgICAgZXhjaW5mby50cmFjZWJh
Y2sgPSB0YgotICAgICAgICAgICAgdGJmaWx0ZXIgPSBGYWxzZSAgIyBwcnVuZXRyYWNlYmFjayBh
bHJlYWR5IGRvZXMgaXQKLSAgICAgICAgICAgIGlmIHN0eWxlID09ICJhdXRvIjoKLSAgICAgICAg
ICAgICAgICBzdHlsZSA9ICJsb25nIgotICAgICAgICAjIFhYWCBzaG91bGQgZXhjaW5mby5nZXRy
ZXByIHJlY29yZCBhbGwgZGF0YSBhbmQgdG90ZXJtaW5hbCgpIHByb2Nlc3MgaXQ/Ci0gICAgICAg
IGlmIHN0eWxlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udGJz
dHlsZSA9PSAic2hvcnQiOgotICAgICAgICAgICAgICAgIHN0eWxlID0gInNob3J0IgotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzdHlsZSA9ICJsb25nIgotCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIG9zLmdldGN3ZCgpCi0gICAgICAgICAgICBhYnNwYXRoID0gRmFsc2UK
LSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBhYnNwYXRoID0gVHJ1ZQotCi0g
ICAgICAgIHJldHVybiBleGNpbmZvLmdldHJlcHIoZnVuY2FyZ3M9VHJ1ZSwgYWJzcGF0aD1hYnNw
YXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3dsb2NhbHM9c2VsZi5jb25m
aWcub3B0aW9uLnNob3dsb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3R5
bGU9c3R5bGUsIHRiZmlsdGVyPXRiZmlsdGVyKQotCi0gICAgcmVwcl9mYWlsdXJlID0gX3JlcHJf
ZmFpbHVyZV9weQotCi0KLWNsYXNzIENvbGxlY3RvcihOb2RlKToKLSAgICAiIiIgQ29sbGVjdG9y
IGluc3RhbmNlcyBjcmVhdGUgY2hpbGRyZW4gdGhyb3VnaCBjb2xsZWN0KCkKLSAgICAgICAgYW5k
IHRodXMgaXRlcmF0aXZlbHkgYnVpbGQgYSB0cmVlLgotICAgICIiIgotCi0gICAgY2xhc3MgQ29s
bGVjdEVycm9yKEV4Y2VwdGlvbik6Ci0gICAgICAgICIiIiBhbiBlcnJvciBkdXJpbmcgY29sbGVj
dGlvbiwgY29udGFpbnMgYSBjdXN0b20gbWVzc2FnZS4gIiIiCi0KLSAgICBkZWYgY29sbGVjdChz
ZWxmKToKLSAgICAgICAgIiIiIHJldHVybnMgYSBsaXN0IG9mIGNoaWxkcmVuIChpdGVtcyBhbmQg
Y29sbGVjdG9ycykKLSAgICAgICAgICAgIGZvciB0aGlzIGNvbGxlY3Rpb24gbm9kZS4KLSAgICAg
ICAgIiIiCi0gICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoImFic3RyYWN0IikKLQot
ICAgIGRlZiByZXByX2ZhaWx1cmUoc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgICIiIiByZXByZXNl
bnQgYSBjb2xsZWN0aW9uIGZhaWx1cmUuICIiIgotICAgICAgICBpZiBleGNpbmZvLmVycmlzaW5z
dGFuY2Uoc2VsZi5Db2xsZWN0RXJyb3IpOgotICAgICAgICAgICAgZXhjID0gZXhjaW5mby52YWx1
ZQotICAgICAgICAgICAgcmV0dXJuIHN0cihleGMuYXJnc1swXSkKLSAgICAgICAgcmV0dXJuIHNl
bGYuX3JlcHJfZmFpbHVyZV9weShleGNpbmZvLCBzdHlsZT0ic2hvcnQiKQotCi0gICAgZGVmIF9w
cnVuZXRyYWNlYmFjayhzZWxmLCBleGNpbmZvKToKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAn
ZnNwYXRoJyk6Ci0gICAgICAgICAgICB0cmFjZWJhY2sgPSBleGNpbmZvLnRyYWNlYmFjawotICAg
ICAgICAgICAgbnRyYWNlYmFjayA9IHRyYWNlYmFjay5jdXQocGF0aD1zZWxmLmZzcGF0aCkKLSAg
ICAgICAgICAgIGlmIG50cmFjZWJhY2sgPT0gdHJhY2ViYWNrOgotICAgICAgICAgICAgICAgIG50
cmFjZWJhY2sgPSBudHJhY2ViYWNrLmN1dChleGNsdWRlcGF0aD10cmFjZWJhY2tjdXRkaXIpCi0g
ICAgICAgICAgICBleGNpbmZvLnRyYWNlYmFjayA9IG50cmFjZWJhY2suZmlsdGVyKCkKLQotCi1j
bGFzcyBGU0NvbGxlY3RvcihDb2xsZWN0b3IpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmc3Bh
dGgsIHBhcmVudD1Ob25lLCBjb25maWc9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKLSAgICAgICAgZnNw
YXRoID0gcHkucGF0aC5sb2NhbChmc3BhdGgpICAjIHh4eCBvbmx5IGZvciB0ZXN0X3Jlc3VsdGxv
Zy5weT8KLSAgICAgICAgbmFtZSA9IGZzcGF0aC5iYXNlbmFtZQotICAgICAgICBpZiBwYXJlbnQg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZWwgPSBmc3BhdGgucmVsdG8ocGFyZW50LmZzcGF0
aCkKLSAgICAgICAgICAgIGlmIHJlbDoKLSAgICAgICAgICAgICAgICBuYW1lID0gcmVsCi0gICAg
ICAgICAgICBuYW1lID0gbmFtZS5yZXBsYWNlKG9zLnNlcCwgbm9kZXMuU0VQKQotICAgICAgICBz
dXBlcihGU0NvbGxlY3Rvciwgc2VsZikuX19pbml0X18obmFtZSwgcGFyZW50LCBjb25maWcsIHNl
c3Npb24pCi0gICAgICAgIHNlbGYuZnNwYXRoID0gZnNwYXRoCi0KLSAgICBkZWYgX2NoZWNrX2lu
aXRpYWxwYXRoc19mb3JfcmVscGF0aChzZWxmKToKLSAgICAgICAgZm9yIGluaXRpYWxwYXRoIGlu
IHNlbGYuc2Vzc2lvbi5faW5pdGlhbHBhdGhzOgotICAgICAgICAgICAgaWYgc2VsZi5mc3BhdGgu
Y29tbW9uKGluaXRpYWxwYXRoKSA9PSBpbml0aWFscGF0aDoKLSAgICAgICAgICAgICAgICByZXR1
cm4gc2VsZi5mc3BhdGgucmVsdG8oaW5pdGlhbHBhdGguZGlybmFtZSkKLQotICAgIGRlZiBfbWFr
ZWlkKHNlbGYpOgotICAgICAgICByZWxwYXRoID0gc2VsZi5mc3BhdGgucmVsdG8oc2VsZi5jb25m
aWcucm9vdGRpcikKLQotICAgICAgICBpZiBub3QgcmVscGF0aDoKLSAgICAgICAgICAgIHJlbHBh
dGggPSBzZWxmLl9jaGVja19pbml0aWFscGF0aHNfZm9yX3JlbHBhdGgoKQotICAgICAgICBpZiBv
cy5zZXAgIT0gbm9kZXMuU0VQOgotICAgICAgICAgICAgcmVscGF0aCA9IHJlbHBhdGgucmVwbGFj
ZShvcy5zZXAsIG5vZGVzLlNFUCkKLSAgICAgICAgcmV0dXJuIHJlbHBhdGgKLQotCi1jbGFzcyBG
aWxlKEZTQ29sbGVjdG9yKToKLSAgICAiIiIgYmFzZSBjbGFzcyBmb3IgY29sbGVjdGluZyB0ZXN0
cyBmcm9tIGEgZmlsZS4gIiIiCi0KLQotY2xhc3MgSXRlbShOb2RlKToKLSAgICAiIiIgYSBiYXNp
YyB0ZXN0IGludm9jYXRpb24gaXRlbS4gTm90ZSB0aGF0IGZvciBhIHNpbmdsZSBmdW5jdGlvbgot
ICAgIHRoZXJlIG1pZ2h0IGJlIG11bHRpcGxlIHRlc3QgaW52b2NhdGlvbiBpdGVtcy4KLSAgICAi
IiIKLSAgICBuZXh0aXRlbSA9IE5vbmUKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCBw
YXJlbnQ9Tm9uZSwgY29uZmlnPU5vbmUsIHNlc3Npb249Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEl0
ZW0sIHNlbGYpLl9faW5pdF9fKG5hbWUsIHBhcmVudCwgY29uZmlnLCBzZXNzaW9uKQotICAgICAg
ICBzZWxmLl9yZXBvcnRfc2VjdGlvbnMgPSBbXQotCi0gICAgZGVmIGFkZF9yZXBvcnRfc2VjdGlv
bihzZWxmLCB3aGVuLCBrZXksIGNvbnRlbnQpOgotICAgICAgICAiIiIKLSAgICAgICAgQWRkcyBh
IG5ldyByZXBvcnQgc2VjdGlvbiwgc2ltaWxhciB0byB3aGF0J3MgZG9uZSBpbnRlcm5hbGx5IHRv
IGFkZCBzdGRvdXQgYW5kCi0gICAgICAgIHN0ZGVyciBjYXB0dXJlZCBvdXRwdXQ6OgotCi0gICAg
ICAgICAgICBpdGVtLmFkZF9yZXBvcnRfc2VjdGlvbigiY2FsbCIsICJzdGRvdXQiLCAicmVwb3J0
IHNlY3Rpb24gY29udGVudHMiKQotCi0gICAgICAgIDpwYXJhbSBzdHIgd2hlbjoKLSAgICAgICAg
ICAgIE9uZSBvZiB0aGUgcG9zc2libGUgY2FwdHVyZSBzdGF0ZXMsIGBgInNldHVwImBgLCBgYCJj
YWxsImBgLCBgYCJ0ZWFyZG93biJgYC4KLSAgICAgICAgOnBhcmFtIHN0ciBrZXk6Ci0gICAgICAg
ICAgICBOYW1lIG9mIHRoZSBzZWN0aW9uLCBjYW4gYmUgY3VzdG9taXplZCBhdCB3aWxsLiBQeXRl
c3QgdXNlcyBgYCJzdGRvdXQiYGAgYW5kCi0gICAgICAgICAgICBgYCJzdGRlcnIiYGAgaW50ZXJu
YWxseS4KLQotICAgICAgICA6cGFyYW0gc3RyIGNvbnRlbnQ6Ci0gICAgICAgICAgICBUaGUgZnVs
bCBjb250ZW50cyBhcyBhIHN0cmluZy4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGNvbnRlbnQ6
Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfc2VjdGlvbnMuYXBwZW5kKCh3aGVuLCBrZXksIGNv
bnRlbnQpKQotCi0gICAgZGVmIHJlcG9ydGluZm8oc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxm
LmZzcGF0aCwgTm9uZSwgIiIKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBsb2NhdGlvbihzZWxm
KToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xvY2F0aW9uCi0gICAg
ICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIGxvY2F0aW9uID0gc2VsZi5y
ZXBvcnRpbmZvKCkKLSAgICAgICAgICAgICMgYmVzdHJlbHBhdGggaXMgYSBxdWl0ZSBzbG93IGZ1
bmN0aW9uCi0gICAgICAgICAgICBjYWNoZSA9IHNlbGYuY29uZmlnLl9fZGljdF9fLnNldGRlZmF1
bHQoIl9iZXN0cmVscGF0aGNhY2hlIiwge30pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICAgICAgZnNwYXRoID0gY2FjaGVbbG9jYXRpb25bMF1dCi0gICAgICAgICAgICBleGNlcHQgS2V5
RXJyb3I6Ci0gICAgICAgICAgICAgICAgZnNwYXRoID0gc2VsZi5zZXNzaW9uLmZzcGF0aC5iZXN0
cmVscGF0aChsb2NhdGlvblswXSkKLSAgICAgICAgICAgICAgICBjYWNoZVtsb2NhdGlvblswXV0g
PSBmc3BhdGgKLSAgICAgICAgICAgIGxvY2F0aW9uID0gKGZzcGF0aCwgbG9jYXRpb25bMV0sIHN0
cihsb2NhdGlvblsyXSkpCi0gICAgICAgICAgICBzZWxmLl9sb2NhdGlvbiA9IGxvY2F0aW9uCi0g
ICAgICAgICAgICByZXR1cm4gbG9jYXRpb24KLQotCi1jbGFzcyBOb01hdGNoKEV4Y2VwdGlvbik6
Ci0gICAgIiIiIHJhaXNlZCBpZiBtYXRjaGluZyBjYW5ub3QgbG9jYXRlIGEgbWF0Y2hpbmcgbmFt
ZXMuICIiIgotCi0KLWNsYXNzIEludGVycnVwdGVkKEtleWJvYXJkSW50ZXJydXB0KToKLSAgICAi
IiIgc2lnbmFscyBhbiBpbnRlcnJ1cHRlZCB0ZXN0IHJ1bi4gIiIiCi0gICAgX19tb2R1bGVfXyA9
ICdidWlsdGlucycgICMgZm9yIHB5MwotCi0KLWNsYXNzIEZhaWxlZChFeGNlcHRpb24pOgotICAg
ICIiIiBzaWduYWxzIGFuIHN0b3AgYXMgZmFpbGVkIHRlc3QgcnVuLiAiIiIKLQotCi1jbGFzcyBT
ZXNzaW9uKEZTQ29sbGVjdG9yKToKLSAgICBJbnRlcnJ1cHRlZCA9IEludGVycnVwdGVkCi0gICAg
RmFpbGVkID0gRmFpbGVkCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29uZmlnKToKLSAgICAg
ICAgRlNDb2xsZWN0b3IuX19pbml0X18oc2VsZiwgY29uZmlnLnJvb3RkaXIsIHBhcmVudD1Ob25l
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9Y29uZmlnLCBzZXNzaW9uPXNl
bGYpCi0gICAgICAgIHNlbGYudGVzdHNmYWlsZWQgPSAwCi0gICAgICAgIHNlbGYudGVzdHNjb2xs
ZWN0ZWQgPSAwCi0gICAgICAgIHNlbGYuc2hvdWxkc3RvcCA9IEZhbHNlCi0gICAgICAgIHNlbGYu
c2hvdWxkZmFpbCA9IEZhbHNlCi0gICAgICAgIHNlbGYudHJhY2UgPSBjb25maWcudHJhY2Uucm9v
dC5nZXQoImNvbGxlY3Rpb24iKQotICAgICAgICBzZWxmLl9ub3JlY3Vyc2VwYXR0ZXJucyA9IGNv
bmZpZy5nZXRpbmkoIm5vcmVjdXJzZWRpcnMiKQotICAgICAgICBzZWxmLnN0YXJ0ZGlyID0gcHku
cGF0aC5sb2NhbCgpCi0gICAgICAgIHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIo
c2VsZiwgbmFtZT0ic2Vzc2lvbiIpCi0KLSAgICBkZWYgX21ha2VpZChzZWxmKToKLSAgICAgICAg
cmV0dXJuICIiCi0KLSAgICBAaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0
X2NvbGxlY3RzdGFydChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5zaG91bGRmYWlsOgotICAgICAg
ICAgICAgcmFpc2Ugc2VsZi5GYWlsZWQoc2VsZi5zaG91bGRmYWlsKQotICAgICAgICBpZiBzZWxm
LnNob3VsZHN0b3A6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkludGVycnVwdGVkKHNlbGYuc2hv
dWxkc3RvcCkKLQotICAgIEBob29raW1wbCh0cnlmaXJzdD1UcnVlKQotICAgIGRlZiBweXRlc3Rf
cnVudGVzdF9sb2dyZXBvcnQoc2VsZiwgcmVwb3J0KToKLSAgICAgICAgaWYgcmVwb3J0LmZhaWxl
ZCBhbmQgbm90IGhhc2F0dHIocmVwb3J0LCAnd2FzeGZhaWwnKToKLSAgICAgICAgICAgIHNlbGYu
dGVzdHNmYWlsZWQgKz0gMQotICAgICAgICAgICAgbWF4ZmFpbCA9IHNlbGYuY29uZmlnLmdldHZh
bHVlKCJtYXhmYWlsIikKLSAgICAgICAgICAgIGlmIG1heGZhaWwgYW5kIHNlbGYudGVzdHNmYWls
ZWQgPj0gbWF4ZmFpbDoKLSAgICAgICAgICAgICAgICBzZWxmLnNob3VsZGZhaWwgPSAic3RvcHBp
bmcgYWZ0ZXIgJWQgZmFpbHVyZXMiICUgKAotICAgICAgICAgICAgICAgICAgICBzZWxmLnRlc3Rz
ZmFpbGVkKQotICAgIHB5dGVzdF9jb2xsZWN0cmVwb3J0ID0gcHl0ZXN0X3J1bnRlc3RfbG9ncmVw
b3J0Ci0KLSAgICBkZWYgaXNpbml0cGF0aChzZWxmLCBwYXRoKToKLSAgICAgICAgcmV0dXJuIHBh
dGggaW4gc2VsZi5faW5pdGlhbHBhdGhzCi0KLSAgICBkZWYgZ2V0aG9va3Byb3h5KHNlbGYsIGZz
cGF0aCk6Ci0gICAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSB0aGUgY29tbW9uIGNhc2Ugb2YgcnVu
bmluZwotICAgICAgICAjIGhvb2tzIHdpdGggYWxsIGNvbmZ0ZXN0LnB5IGZpbGVzYWxsIGNvbmZ0
ZXN0LnB5Ci0gICAgICAgIHBtID0gc2VsZi5jb25maWcucGx1Z2lubWFuYWdlcgotICAgICAgICBt
eV9jb25mdGVzdG1vZHVsZXMgPSBwbS5fZ2V0Y29uZnRlc3Rtb2R1bGVzKGZzcGF0aCkKLSAgICAg
ICAgcmVtb3ZlX21vZHMgPSBwbS5fY29uZnRlc3RfcGx1Z2lucy5kaWZmZXJlbmNlKG15X2NvbmZ0
ZXN0bW9kdWxlcykKLSAgICAgICAgaWYgcmVtb3ZlX21vZHM6Ci0gICAgICAgICAgICAjIG9uZSBv
ciBtb3JlIGNvbmZ0ZXN0cyBhcmUgbm90IGluIHVzZSBhdCB0aGlzIGZzcGF0aAotICAgICAgICAg
ICAgcHJveHkgPSBGU0hvb2tQcm94eShmc3BhdGgsIHBtLCByZW1vdmVfbW9kcykKLSAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICMgYWxsIHBsdWdpcyBhcmUgYWN0aXZlIGZvciB0aGlzIGZzcGF0
aAotICAgICAgICAgICAgcHJveHkgPSBzZWxmLmNvbmZpZy5ob29rCi0gICAgICAgIHJldHVybiBw
cm94eQotCi0gICAgZGVmIHBlcmZvcm1fY29sbGVjdChzZWxmLCBhcmdzPU5vbmUsIGdlbml0ZW1z
PVRydWUpOgotICAgICAgICBob29rID0gc2VsZi5jb25maWcuaG9vawotICAgICAgICB0cnk6Ci0g
ICAgICAgICAgICBpdGVtcyA9IHNlbGYuX3BlcmZvcm1fY29sbGVjdChhcmdzLCBnZW5pdGVtcykK
LSAgICAgICAgICAgIHNlbGYuY29uZmlnLnBsdWdpbm1hbmFnZXIuY2hlY2tfcGVuZGluZygpCi0g
ICAgICAgICAgICBob29rLnB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlc3Npb249c2Vs
ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZmln
PXNlbGYuY29uZmlnLCBpdGVtcz1pdGVtcykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAg
IGhvb2sucHl0ZXN0X2NvbGxlY3Rpb25fZmluaXNoKHNlc3Npb249c2VsZikKLSAgICAgICAgc2Vs
Zi50ZXN0c2NvbGxlY3RlZCA9IGxlbihpdGVtcykKLSAgICAgICAgcmV0dXJuIGl0ZW1zCi0KLSAg
ICBkZWYgX3BlcmZvcm1fY29sbGVjdChzZWxmLCBhcmdzLCBnZW5pdGVtcyk6Ci0gICAgICAgIGlm
IGFyZ3MgaXMgTm9uZToKLSAgICAgICAgICAgIGFyZ3MgPSBzZWxmLmNvbmZpZy5hcmdzCi0gICAg
ICAgIHNlbGYudHJhY2UoInBlcmZvcm1fY29sbGVjdCIsIHNlbGYsIGFyZ3MpCi0gICAgICAgIHNl
bGYudHJhY2Uucm9vdC5pbmRlbnQgKz0gMQotICAgICAgICBzZWxmLl9ub3Rmb3VuZCA9IFtdCi0g
ICAgICAgIHNlbGYuX2luaXRpYWxwYXRocyA9IHNldCgpCi0gICAgICAgIHNlbGYuX2luaXRpYWxw
YXJ0cyA9IFtdCi0gICAgICAgIHNlbGYuaXRlbXMgPSBpdGVtcyA9IFtdCi0gICAgICAgIGZvciBh
cmcgaW4gYXJnczoKLSAgICAgICAgICAgIHBhcnRzID0gc2VsZi5fcGFyc2VhcmcoYXJnKQotICAg
ICAgICAgICAgc2VsZi5faW5pdGlhbHBhcnRzLmFwcGVuZChwYXJ0cykKLSAgICAgICAgICAgIHNl
bGYuX2luaXRpYWxwYXRocy5hZGQocGFydHNbMF0pCi0gICAgICAgIHJlcCA9IGNvbGxlY3Rfb25l
X25vZGUoc2VsZikKLSAgICAgICAgc2VsZi5paG9vay5weXRlc3RfY29sbGVjdHJlcG9ydChyZXBv
cnQ9cmVwKQotICAgICAgICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50IC09IDEKLSAgICAgICAgaWYg
c2VsZi5fbm90Zm91bmQ6Ci0gICAgICAgICAgICBlcnJvcnMgPSBbXQotICAgICAgICAgICAgZm9y
IGFyZywgZXhjIGluIHNlbGYuX25vdGZvdW5kOgotICAgICAgICAgICAgICAgIGxpbmUgPSAiKG5v
IG5hbWUgJXIgaW4gYW55IG9mICVyKSIgJSAoYXJnLCBleGMuYXJnc1swXSkKLSAgICAgICAgICAg
ICAgICBlcnJvcnMuYXBwZW5kKCJub3QgZm91bmQ6ICVzXG4lcyIgJSAoYXJnLCBsaW5lKSkKLSAg
ICAgICAgICAgICAgICAjIFhYWDogdGVzdCB0aGlzCi0gICAgICAgICAgICByYWlzZSBVc2FnZUVy
cm9yKCplcnJvcnMpCi0gICAgICAgIGlmIG5vdCBnZW5pdGVtczoKLSAgICAgICAgICAgIHJldHVy
biByZXAucmVzdWx0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiByZXAucGFzc2VkOgot
ICAgICAgICAgICAgICAgIGZvciBub2RlIGluIHJlcC5yZXN1bHQ6Ci0gICAgICAgICAgICAgICAg
ICAgIHNlbGYuaXRlbXMuZXh0ZW5kKHNlbGYuZ2VuaXRlbXMobm9kZSkpCi0gICAgICAgICAgICBy
ZXR1cm4gaXRlbXMKLQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICBmb3IgcGFydHMg
aW4gc2VsZi5faW5pdGlhbHBhcnRzOgotICAgICAgICAgICAgYXJnID0gIjo6Ii5qb2luKG1hcChz
dHIsIHBhcnRzKSkKLSAgICAgICAgICAgIHNlbGYudHJhY2UoInByb2Nlc3NpbmcgYXJndW1lbnQi
LCBhcmcpCi0gICAgICAgICAgICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50ICs9IDEKLSAgICAgICAg
ICAgIHRyeToKLSAgICAgICAgICAgICAgICBmb3IgeCBpbiBzZWxmLl9jb2xsZWN0KGFyZyk6Ci0g
ICAgICAgICAgICAgICAgICAgIHlpZWxkIHgKLSAgICAgICAgICAgIGV4Y2VwdCBOb01hdGNoOgot
ICAgICAgICAgICAgICAgICMgd2UgYXJlIGluc2lkZSBhIG1ha2VfcmVwb3J0IGhvb2sgc28KLSAg
ICAgICAgICAgICAgICAjIHdlIGNhbm5vdCBkaXJlY3RseSBwYXNzIHRocm91Z2ggdGhlIGV4Y2Vw
dGlvbgotICAgICAgICAgICAgICAgIHNlbGYuX25vdGZvdW5kLmFwcGVuZCgoYXJnLCBzeXMuZXhj
X2luZm8oKVsxXSkpCi0KLSAgICAgICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgLT0gMQot
Ci0gICAgZGVmIF9jb2xsZWN0KHNlbGYsIGFyZyk6Ci0gICAgICAgIG5hbWVzID0gc2VsZi5fcGFy
c2VhcmcoYXJnKQotICAgICAgICBwYXRoID0gbmFtZXMucG9wKDApCi0gICAgICAgIGlmIHBhdGgu
Y2hlY2soZGlyPTEpOgotICAgICAgICAgICAgYXNzZXJ0IG5vdCBuYW1lcywgImludmFsaWQgYXJn
ICVyIiAlIChhcmcsKQotICAgICAgICAgICAgZm9yIHBhdGggaW4gcGF0aC52aXNpdChmaWw9bGFt
YmRhIHg6IHguY2hlY2soZmlsZT0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVjPXNlbGYuX3JlY3Vyc2UsIGJmPVRydWUsIHNvcnQ9VHJ1ZSk6Ci0gICAgICAgICAgICAg
ICAgZm9yIHggaW4gc2VsZi5fY29sbGVjdGZpbGUocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAg
IHlpZWxkIHgKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGFzc2VydCBwYXRoLmNoZWNrKGZp
bGU9MSkKLSAgICAgICAgICAgIGZvciB4IGluIHNlbGYubWF0Y2hub2RlcyhzZWxmLl9jb2xsZWN0
ZmlsZShwYXRoKSwgbmFtZXMpOgotICAgICAgICAgICAgICAgIHlpZWxkIHgKLQotICAgIGRlZiBf
Y29sbGVjdGZpbGUoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlob29rID0gc2VsZi5nZXRob29rcHJv
eHkocGF0aCkKLSAgICAgICAgaWYgbm90IHNlbGYuaXNpbml0cGF0aChwYXRoKToKLSAgICAgICAg
ICAgIGlmIGlob29rLnB5dGVzdF9pZ25vcmVfY29sbGVjdChwYXRoPXBhdGgsIGNvbmZpZz1zZWxm
LmNvbmZpZyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICgpCi0gICAgICAgIHJldHVybiBpaG9v
ay5weXRlc3RfY29sbGVjdF9maWxlKHBhdGg9cGF0aCwgcGFyZW50PXNlbGYpCi0KLSAgICBkZWYg
X3JlY3Vyc2Uoc2VsZiwgcGF0aCk6Ci0gICAgICAgIGlob29rID0gc2VsZi5nZXRob29rcHJveHko
cGF0aC5kaXJwYXRoKCkpCi0gICAgICAgIGlmIGlob29rLnB5dGVzdF9pZ25vcmVfY29sbGVjdChw
YXRoPXBhdGgsIGNvbmZpZz1zZWxmLmNvbmZpZyk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAg
ICAgZm9yIHBhdCBpbiBzZWxmLl9ub3JlY3Vyc2VwYXR0ZXJuczoKLSAgICAgICAgICAgIGlmIHBh
dGguY2hlY2soZm5tYXRjaD1wYXQpOgotICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAg
ICAgICBpaG9vayA9IHNlbGYuZ2V0aG9va3Byb3h5KHBhdGgpCi0gICAgICAgIGlob29rLnB5dGVz
dF9jb2xsZWN0X2RpcmVjdG9yeShwYXRoPXBhdGgsIHBhcmVudD1zZWxmKQotICAgICAgICByZXR1
cm4gVHJ1ZQotCi0gICAgZGVmIF90cnljb252ZXJ0cHlhcmcoc2VsZiwgeCk6Ci0gICAgICAgICIi
IkNvbnZlcnQgYSBkb3R0ZWQgbW9kdWxlIG5hbWUgdG8gcGF0aC4KLQotICAgICAgICAiIiIKLSAg
ICAgICAgaW1wb3J0IHBrZ3V0aWwKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbG9hZGVyID0g
cGtndXRpbC5maW5kX2xvYWRlcih4KQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAg
ICAgICAgICByZXR1cm4geAotICAgICAgICBpZiBsb2FkZXIgaXMgTm9uZToKLSAgICAgICAgICAg
IHJldHVybiB4Ci0gICAgICAgICMgVGhpcyBtZXRob2QgaXMgc29tZXRpbWVzIGludm9rZWQgd2hl
biBBc3NlcnRpb25SZXdyaXRpbmdIb29rLCB3aGljaAotICAgICAgICAjIGRvZXMgbm90IGRlZmlu
ZSBhIGdldF9maWxlbmFtZSBtZXRob2QsIGlzIGFscmVhZHkgaW4gcGxhY2U6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHBhdGggPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKHgpCi0gICAgICAgIGV4
Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICMgUmV0cmlldmUgcGF0aCBmcm9tIEFz
c2VydGlvblJld3JpdGluZ0hvb2s6Ci0gICAgICAgICAgICBwYXRoID0gbG9hZGVyLm1vZHVsZXNb
eF1bMF0uY29fZmlsZW5hbWUKLSAgICAgICAgaWYgbG9hZGVyLmlzX3BhY2thZ2UoeCk6Ci0gICAg
ICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCi0gICAgICAgIHJldHVybiBwYXRo
Ci0KLSAgICBkZWYgX3BhcnNlYXJnKHNlbGYsIGFyZyk6Ci0gICAgICAgICIiIiByZXR1cm4gKGZz
cGF0aCwgbmFtZXMpIHR1cGxlIGFmdGVyIGNoZWNraW5nIHRoZSBmaWxlIGV4aXN0cy4gIiIiCi0g
ICAgICAgIHBhcnRzID0gc3RyKGFyZykuc3BsaXQoIjo6IikKLSAgICAgICAgaWYgc2VsZi5jb25m
aWcub3B0aW9uLnB5YXJnczoKLSAgICAgICAgICAgIHBhcnRzWzBdID0gc2VsZi5fdHJ5Y29udmVy
dHB5YXJnKHBhcnRzWzBdKQotICAgICAgICByZWxwYXRoID0gcGFydHNbMF0ucmVwbGFjZSgiLyIs
IG9zLnNlcCkKLSAgICAgICAgcGF0aCA9IHNlbGYuY29uZmlnLmludm9jYXRpb25fZGlyLmpvaW4o
cmVscGF0aCwgYWJzPVRydWUpCi0gICAgICAgIGlmIG5vdCBwYXRoLmNoZWNrKCk6Ci0gICAgICAg
ICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24ucHlhcmdzOgotICAgICAgICAgICAgICAgIHJhaXNl
IFVzYWdlRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICJmaWxlIG9yIHBhY2thZ2Ugbm90IGZv
dW5kOiAiICsgYXJnICsKLSAgICAgICAgICAgICAgICAgICAgIiAobWlzc2luZyBfX2luaXRfXy5w
eT8pIikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVXNhZ2VFcnJv
cigiZmlsZSBub3QgZm91bmQ6ICIgKyBhcmcpCi0gICAgICAgIHBhcnRzWzBdID0gcGF0aAotICAg
ICAgICByZXR1cm4gcGFydHMKLQotICAgIGRlZiBtYXRjaG5vZGVzKHNlbGYsIG1hdGNoaW5nLCBu
YW1lcyk6Ci0gICAgICAgIHNlbGYudHJhY2UoIm1hdGNobm9kZXMiLCBtYXRjaGluZywgbmFtZXMp
Ci0gICAgICAgIHNlbGYudHJhY2Uucm9vdC5pbmRlbnQgKz0gMQotICAgICAgICBub2RlcyA9IHNl
bGYuX21hdGNobm9kZXMobWF0Y2hpbmcsIG5hbWVzKQotICAgICAgICBudW0gPSBsZW4obm9kZXMp
Ci0gICAgICAgIHNlbGYudHJhY2UoIm1hdGNobm9kZXMgZmluaXNoZWQgLT4gIiwgbnVtLCAibm9k
ZXMiKQotICAgICAgICBzZWxmLnRyYWNlLnJvb3QuaW5kZW50IC09IDEKLSAgICAgICAgaWYgbnVt
ID09IDA6Ci0gICAgICAgICAgICByYWlzZSBOb01hdGNoKG1hdGNoaW5nLCBuYW1lc1s6MV0pCi0g
ICAgICAgIHJldHVybiBub2RlcwotCi0gICAgZGVmIF9tYXRjaG5vZGVzKHNlbGYsIG1hdGNoaW5n
LCBuYW1lcyk6Ci0gICAgICAgIGlmIG5vdCBtYXRjaGluZyBvciBub3QgbmFtZXM6Ci0gICAgICAg
ICAgICByZXR1cm4gbWF0Y2hpbmcKLSAgICAgICAgbmFtZSA9IG5hbWVzWzBdCi0gICAgICAgIGFz
c2VydCBuYW1lCi0gICAgICAgIG5leHRuYW1lcyA9IG5hbWVzWzE6XQotICAgICAgICByZXN1bHRu
b2RlcyA9IFtdCi0gICAgICAgIGZvciBub2RlIGluIG1hdGNoaW5nOgotICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShub2RlLCBJdGVtKToKLSAgICAgICAgICAgICAgICBpZiBub3QgbmFtZXM6Ci0g
ICAgICAgICAgICAgICAgICAgIHJlc3VsdG5vZGVzLmFwcGVuZChub2RlKQotICAgICAgICAgICAg
ICAgIGNvbnRpbnVlCi0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShub2RlLCBDb2xsZWN0
b3IpCi0gICAgICAgICAgICByZXAgPSBjb2xsZWN0X29uZV9ub2RlKG5vZGUpCi0gICAgICAgICAg
ICBpZiByZXAucGFzc2VkOgotICAgICAgICAgICAgICAgIGhhc19tYXRjaGVkID0gRmFsc2UKLSAg
ICAgICAgICAgICAgICBmb3IgeCBpbiByZXAucmVzdWx0OgotICAgICAgICAgICAgICAgICAgICAj
IFRPRE86IHJlbW92ZSBwYXJhbWV0cml6ZWQgd29ya2Fyb3VuZCBvbmNlIGNvbGxlY3Rpb24gc3Ry
dWN0dXJlIGNvbnRhaW5zIHBhcmFtZXRyaXphdGlvbgotICAgICAgICAgICAgICAgICAgICBpZiB4
Lm5hbWUgPT0gbmFtZSBvciB4Lm5hbWUuc3BsaXQoIlsiKVswXSA9PSBuYW1lOgotICAgICAgICAg
ICAgICAgICAgICAgICAgcmVzdWx0bm9kZXMuZXh0ZW5kKHNlbGYubWF0Y2hub2RlcyhbeF0sIG5l
eHRuYW1lcykpCi0gICAgICAgICAgICAgICAgICAgICAgICBoYXNfbWF0Y2hlZCA9IFRydWUKLSAg
ICAgICAgICAgICAgICAjIFhYWCBhY2NlcHQgSURzIHRoYXQgZG9uJ3QgaGF2ZSAiKCkiIGZvciBj
bGFzcyBpbnN0YW5jZXMKLSAgICAgICAgICAgICAgICBpZiBub3QgaGFzX21hdGNoZWQgYW5kIGxl
bihyZXAucmVzdWx0KSA9PSAxIGFuZCB4Lm5hbWUgPT0gIigpIjoKLSAgICAgICAgICAgICAgICAg
ICAgbmV4dG5hbWVzLmluc2VydCgwLCBuYW1lKQotICAgICAgICAgICAgICAgICAgICByZXN1bHRu
b2Rlcy5leHRlbmQoc2VsZi5tYXRjaG5vZGVzKFt4XSwgbmV4dG5hbWVzKSkKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgIyByZXBvcnQgY29sbGVjdGlvbiBmYWlsdXJlcyBoZXJl
IHRvIGF2b2lkIGZhaWxpbmcgdG8gcnVuIHNvbWUgdGVzdAotICAgICAgICAgICAgICAgICMgc3Bl
Y2lmaWVkIGluIHRoZSBjb21tYW5kIGxpbmUgYmVjYXVzZSB0aGUgbW9kdWxlIGNvdWxkIG5vdCBi
ZQotICAgICAgICAgICAgICAgICMgaW1wb3J0ZWQgKCMxMzQpCi0gICAgICAgICAgICAgICAgbm9k
ZS5paG9vay5weXRlc3RfY29sbGVjdHJlcG9ydChyZXBvcnQ9cmVwKQotICAgICAgICByZXR1cm4g
cmVzdWx0bm9kZXMKLQotICAgIGRlZiBnZW5pdGVtcyhzZWxmLCBub2RlKToKLSAgICAgICAgc2Vs
Zi50cmFjZSgiZ2VuaXRlbXMiLCBub2RlKQotICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIEl0
ZW0pOgotICAgICAgICAgICAgbm9kZS5paG9vay5weXRlc3RfaXRlbWNvbGxlY3RlZChpdGVtPW5v
ZGUpCi0gICAgICAgICAgICB5aWVsZCBub2RlCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBh
c3NlcnQgaXNpbnN0YW5jZShub2RlLCBDb2xsZWN0b3IpCi0gICAgICAgICAgICByZXAgPSBjb2xs
ZWN0X29uZV9ub2RlKG5vZGUpCi0gICAgICAgICAgICBpZiByZXAucGFzc2VkOgotICAgICAgICAg
ICAgICAgIGZvciBzdWJub2RlIGluIHJlcC5yZXN1bHQ6Ci0gICAgICAgICAgICAgICAgICAgIGZv
ciB4IGluIHNlbGYuZ2VuaXRlbXMoc3Vibm9kZSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICB5
aWVsZCB4Ci0gICAgICAgICAgICBub2RlLmlob29rLnB5dGVzdF9jb2xsZWN0cmVwb3J0KHJlcG9y
dD1yZXApCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L21hcmsucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L21hcmsucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMWYw
MWIxYTJlMzRkYjM1Y2IyNjFhM2ZiNDkwZjFjNDY1N2Q0ZDEuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tYXJrLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNDk2ICswLDAgQEAKLSIiIiBnZW5lcmljIG1lY2hhbmlzbSBmb3Ig
bWFya2luZyBhbmQgc2VsZWN0aW5nIHB5dGhvbiBmdW5jdGlvbnMuICIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1p
bXBvcnQgaW5zcGVjdAotaW1wb3J0IHdhcm5pbmdzCi1pbXBvcnQgYXR0cgotZnJvbSBjb2xsZWN0
aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSBvcGVyYXRvciBpbXBvcnQgYXR0cmdldHRlcgot
ZnJvbSBzaXgubW92ZXMgaW1wb3J0IG1hcAotZnJvbSAuZGVwcmVjYXRlZCBpbXBvcnQgTUFSS19Q
QVJBTUVURVJTRVRfVU5QQUNLSU5HCi1mcm9tIC5jb21wYXQgaW1wb3J0IE5PVFNFVCwgZ2V0ZnNs
aW5lbm8KLQotCi1kZWYgYWxpYXMobmFtZSwgd2FybmluZz1Ob25lKToKLSAgICBnZXR0ZXIgPSBh
dHRyZ2V0dGVyKG5hbWUpCi0KLSAgICBkZWYgd2FybmVkKHNlbGYpOgotICAgICAgICB3YXJuaW5n
cy53YXJuKHdhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgcmV0dXJuIGdldHRlcihzZWxm
KQotCi0gICAgcmV0dXJuIHByb3BlcnR5KGdldHRlciBpZiB3YXJuaW5nIGlzIE5vbmUgZWxzZSB3
YXJuZWQsIGRvYz0nYWxpYXMgZm9yICcgKyBuYW1lKQotCi0KLWNsYXNzIFBhcmFtZXRlclNldChu
YW1lZHR1cGxlKCdQYXJhbWV0ZXJTZXQnLCAndmFsdWVzLCBtYXJrcywgaWQnKSk6Ci0gICAgQGNs
YXNzbWV0aG9kCi0gICAgZGVmIHBhcmFtKGNscywgKnZhbHVlcywgKiprdyk6Ci0gICAgICAgIG1h
cmtzID0ga3cucG9wKCdtYXJrcycsICgpKQotICAgICAgICBpZiBpc2luc3RhbmNlKG1hcmtzLCBN
YXJrRGVjb3JhdG9yKToKLSAgICAgICAgICAgIG1hcmtzID0gbWFya3MsCi0gICAgICAgIGVsc2U6
Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShtYXJrcywgKHR1cGxlLCBsaXN0LCBzZXQp
KQotCi0gICAgICAgIGRlZiBwYXJhbV9leHRyYWN0X2lkKGlkPU5vbmUpOgotICAgICAgICAgICAg
cmV0dXJuIGlkCi0KLSAgICAgICAgaWQgPSBwYXJhbV9leHRyYWN0X2lkKCoqa3cpCi0gICAgICAg
IHJldHVybiBjbHModmFsdWVzLCBtYXJrcywgaWQpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBk
ZWYgZXh0cmFjdF9mcm9tKGNscywgcGFyYW1ldGVyc2V0LCBsZWdhY3lfZm9yY2VfdHVwbGU9RmFs
c2UpOgotICAgICAgICAiIiIKLSAgICAgICAgOnBhcmFtIHBhcmFtZXRlcnNldDoKLSAgICAgICAg
ICAgIGEgbGVnYWN5IHN0eWxlIHBhcmFtZXRlcnNldCB0aGF0IG1heSBvciBtYXkgbm90IGJlIGEg
dHVwbGUsCi0gICAgICAgICAgICBhbmQgbWF5IG9yIG1heSBub3QgYmUgd3JhcHBlZCBpbnRvIGEg
bWVzcyBvZiBtYXJrIG9iamVjdHMKLQotICAgICAgICA6cGFyYW0gbGVnYWN5X2ZvcmNlX3R1cGxl
OgotICAgICAgICAgICAgZW5mb3JjZSB0dXBsZSB3cmFwcGluZyBzbyBzaW5nbGUgYXJndW1lbnQg
dHVwbGUgdmFsdWVzCi0gICAgICAgICAgICBkb24ndCBnZXQgZGVjb21wb3NlZCBhbmQgYnJlYWsg
dGVzdHMKLQotICAgICAgICAiIiIKLQotICAgICAgICBpZiBpc2luc3RhbmNlKHBhcmFtZXRlcnNl
dCwgY2xzKToKLSAgICAgICAgICAgIHJldHVybiBwYXJhbWV0ZXJzZXQKLSAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2UocGFyYW1ldGVyc2V0LCBNYXJrRGVjb3JhdG9yKSBhbmQgbGVnYWN5X2ZvcmNl
X3R1cGxlOgotICAgICAgICAgICAgcmV0dXJuIGNscy5wYXJhbShwYXJhbWV0ZXJzZXQpCi0KLSAg
ICAgICAgbmV3bWFya3MgPSBbXQotICAgICAgICBhcmd2YWwgPSBwYXJhbWV0ZXJzZXQKLSAgICAg
ICAgd2hpbGUgaXNpbnN0YW5jZShhcmd2YWwsIE1hcmtEZWNvcmF0b3IpOgotICAgICAgICAgICAg
bmV3bWFya3MuYXBwZW5kKE1hcmtEZWNvcmF0b3IoTWFyaygKLSAgICAgICAgICAgICAgICBhcmd2
YWwubWFya25hbWUsIGFyZ3ZhbC5hcmdzWzotMV0sIGFyZ3ZhbC5rd2FyZ3MpKSkKLSAgICAgICAg
ICAgIGFyZ3ZhbCA9IGFyZ3ZhbC5hcmdzWy0xXQotICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFu
Y2UoYXJndmFsLCBQYXJhbWV0ZXJTZXQpCi0gICAgICAgIGlmIGxlZ2FjeV9mb3JjZV90dXBsZToK
LSAgICAgICAgICAgIGFyZ3ZhbCA9IGFyZ3ZhbCwKLQotICAgICAgICBpZiBuZXdtYXJrczoKLSAg
ICAgICAgICAgIHdhcm5pbmdzLndhcm4oTUFSS19QQVJBTUVURVJTRVRfVU5QQUNLSU5HKQotCi0g
ICAgICAgIHJldHVybiBjbHMoYXJndmFsLCBtYXJrcz1uZXdtYXJrcywgaWQ9Tm9uZSkKLQotICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBfZm9yX3BhcmFtZXRlcml6ZShjbHMsIGFyZ25hbWVzLCBh
cmd2YWx1ZXMsIGZ1bmN0aW9uKToKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJnbmFtZXMs
ICh0dXBsZSwgbGlzdCkpOgotICAgICAgICAgICAgYXJnbmFtZXMgPSBbeC5zdHJpcCgpIGZvciB4
IGluIGFyZ25hbWVzLnNwbGl0KCIsIikgaWYgeC5zdHJpcCgpXQotICAgICAgICAgICAgZm9yY2Vf
dHVwbGUgPSBsZW4oYXJnbmFtZXMpID09IDEKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGZv
cmNlX3R1cGxlID0gRmFsc2UKLSAgICAgICAgcGFyYW1ldGVycyA9IFsKLSAgICAgICAgICAgIFBh
cmFtZXRlclNldC5leHRyYWN0X2Zyb20oeCwgbGVnYWN5X2ZvcmNlX3R1cGxlPWZvcmNlX3R1cGxl
KQotICAgICAgICAgICAgZm9yIHggaW4gYXJndmFsdWVzXQotICAgICAgICBkZWwgYXJndmFsdWVz
Ci0KLSAgICAgICAgaWYgbm90IHBhcmFtZXRlcnM6Ci0gICAgICAgICAgICBmcywgbGluZW5vID0g
Z2V0ZnNsaW5lbm8oZnVuY3Rpb24pCi0gICAgICAgICAgICByZWFzb24gPSAiZ290IGVtcHR5IHBh
cmFtZXRlciBzZXQgJXIsIGZ1bmN0aW9uICVzIGF0ICVzOiVkIiAlICgKLSAgICAgICAgICAgICAg
ICBhcmduYW1lcywgZnVuY3Rpb24uX19uYW1lX18sIGZzLCBsaW5lbm8pCi0gICAgICAgICAgICBt
YXJrID0gTUFSS19HRU4uc2tpcChyZWFzb249cmVhc29uKQotICAgICAgICAgICAgcGFyYW1ldGVy
cy5hcHBlbmQoUGFyYW1ldGVyU2V0KAotICAgICAgICAgICAgICAgIHZhbHVlcz0oTk9UU0VULCkg
KiBsZW4oYXJnbmFtZXMpLAotICAgICAgICAgICAgICAgIG1hcmtzPVttYXJrXSwKLSAgICAgICAg
ICAgICAgICBpZD1Ob25lLAotICAgICAgICAgICAgKSkKLSAgICAgICAgcmV0dXJuIGFyZ25hbWVz
LCBwYXJhbWV0ZXJzCi0KLQotY2xhc3MgTWFya2VyRXJyb3IoRXhjZXB0aW9uKToKLQotICAgICIi
IkVycm9yIGluIHVzZSBvZiBhIHB5dGVzdCBtYXJrZXIvYXR0cmlidXRlLiIiIgotCi0KLWRlZiBw
YXJhbSgqdmFsdWVzLCAqKmt3KToKLSAgICByZXR1cm4gUGFyYW1ldGVyU2V0LnBhcmFtKCp2YWx1
ZXMsICoqa3cpCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9
IHBhcnNlci5nZXRncm91cCgiZ2VuZXJhbCIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbigKLSAgICAg
ICAgJy1rJywKLSAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImtleXdvcmQiLCBkZWZhdWx0
PScnLCBtZXRhdmFyPSJFWFBSRVNTSU9OIiwKLSAgICAgICAgaGVscD0ib25seSBydW4gdGVzdHMg
d2hpY2ggbWF0Y2ggdGhlIGdpdmVuIHN1YnN0cmluZyBleHByZXNzaW9uLiAiCi0gICAgICAgICAg
ICAgIkFuIGV4cHJlc3Npb24gaXMgYSBweXRob24gZXZhbHVhdGFibGUgZXhwcmVzc2lvbiAiCi0g
ICAgICAgICAgICAgIndoZXJlIGFsbCBuYW1lcyBhcmUgc3Vic3RyaW5nLW1hdGNoZWQgYWdhaW5z
dCB0ZXN0IG5hbWVzICIKLSAgICAgICAgICAgICAiYW5kIHRoZWlyIHBhcmVudCBjbGFzc2VzLiBF
eGFtcGxlOiAtayAndGVzdF9tZXRob2Qgb3IgdGVzdF8iCi0gICAgICAgICAgICAgIm90aGVyJyBt
YXRjaGVzIGFsbCB0ZXN0IGZ1bmN0aW9ucyBhbmQgY2xhc3NlcyB3aG9zZSBuYW1lICIKLSAgICAg
ICAgICAgICAiY29udGFpbnMgJ3Rlc3RfbWV0aG9kJyBvciAndGVzdF9vdGhlcicsIHdoaWxlIC1r
ICdub3QgdGVzdF9tZXRob2QnICIKLSAgICAgICAgICAgICAibWF0Y2hlcyB0aG9zZSB0aGF0IGRv
bid0IGNvbnRhaW4gJ3Rlc3RfbWV0aG9kJyBpbiB0aGVpciBuYW1lcy4gIgotICAgICAgICAgICAg
ICJBZGRpdGlvbmFsbHkga2V5d29yZHMgYXJlIG1hdGNoZWQgdG8gY2xhc3NlcyBhbmQgZnVuY3Rp
b25zICIKLSAgICAgICAgICAgICAiY29udGFpbmluZyBleHRyYSBuYW1lcyBpbiB0aGVpciAnZXh0
cmFfa2V5d29yZF9tYXRjaGVzJyBzZXQsICIKLSAgICAgICAgICAgICAiYXMgd2VsbCBhcyBmdW5j
dGlvbnMgd2hpY2ggaGF2ZSBuYW1lcyBhc3NpZ25lZCBkaXJlY3RseSB0byB0aGVtLiIKLSAgICAp
Ci0KLSAgICBncm91cC5fYWRkb3B0aW9uKAotICAgICAgICAiLW0iLAotICAgICAgICBhY3Rpb249
InN0b3JlIiwgZGVzdD0ibWFya2V4cHIiLCBkZWZhdWx0PSIiLCBtZXRhdmFyPSJNQVJLRVhQUiIs
Ci0gICAgICAgIGhlbHA9Im9ubHkgcnVuIHRlc3RzIG1hdGNoaW5nIGdpdmVuIG1hcmsgZXhwcmVz
c2lvbi4gICIKLSAgICAgICAgICAgICAiZXhhbXBsZTogLW0gJ21hcmsxIGFuZCBub3QgbWFyazIn
LiIKLSAgICApCi0KLSAgICBncm91cC5hZGRvcHRpb24oCi0gICAgICAgICItLW1hcmtlcnMiLCBh
Y3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICBoZWxwPSJzaG93IG1hcmtlcnMgKGJ1aWx0aW4s
IHBsdWdpbiBhbmQgcGVyLXByb2plY3Qgb25lcykuIgotICAgICkKLQotICAgIHBhcnNlci5hZGRp
bmkoIm1hcmtlcnMiLCAibWFya2VycyBmb3IgdGVzdCBmdW5jdGlvbnMiLCAnbGluZWxpc3QnKQot
Ci0KLWRlZiBweXRlc3RfY21kbGluZV9tYWluKGNvbmZpZyk6Ci0gICAgaW1wb3J0IF9weXRlc3Qu
Y29uZmlnCi0gICAgaWYgY29uZmlnLm9wdGlvbi5tYXJrZXJzOgotICAgICAgICBjb25maWcuX2Rv
X2NvbmZpZ3VyZSgpCi0gICAgICAgIHR3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFs
X3dyaXRlcihjb25maWcpCi0gICAgICAgIGZvciBsaW5lIGluIGNvbmZpZy5nZXRpbmkoIm1hcmtl
cnMiKToKLSAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgiOiIsIDEpCi0gICAgICAgICAg
ICBuYW1lID0gcGFydHNbMF0KLSAgICAgICAgICAgIHJlc3QgPSBwYXJ0c1sxXSBpZiBsZW4ocGFy
dHMpID09IDIgZWxzZSAnJwotICAgICAgICAgICAgdHcud3JpdGUoIkBweXRlc3QubWFyay4lczoi
ICUgbmFtZSwgYm9sZD1UcnVlKQotICAgICAgICAgICAgdHcubGluZShyZXN0KQotICAgICAgICAg
ICAgdHcubGluZSgpCi0gICAgICAgIGNvbmZpZy5fZW5zdXJlX3VuY29uZmlndXJlKCkKLSAgICAg
ICAgcmV0dXJuIDAKLQotCi1weXRlc3RfY21kbGluZV9tYWluLnRyeWZpcnN0ID0gVHJ1ZQotCi0K
LWRlZiBweXRlc3RfY29sbGVjdGlvbl9tb2RpZnlpdGVtcyhpdGVtcywgY29uZmlnKToKLSAgICBr
ZXl3b3JkZXhwciA9IGNvbmZpZy5vcHRpb24ua2V5d29yZC5sc3RyaXAoKQotICAgIG1hdGNoZXhw
ciA9IGNvbmZpZy5vcHRpb24ubWFya2V4cHIKLSAgICBpZiBub3Qga2V5d29yZGV4cHIgYW5kIG5v
dCBtYXRjaGV4cHI6Ci0gICAgICAgIHJldHVybgotICAgICMgcHl0ZXN0IHVzZWQgdG8gYWxsb3cg
Ii0iIGZvciBuZWdhdGluZwotICAgICMgYnV0IHRvZGF5IHdlIGp1c3QgYWxsb3cgIi0iIGF0IHRo
ZSBiZWdpbm5pbmcsIHVzZSAibm90IiBpbnN0ZWFkCi0gICAgIyB3ZSBwcm9iYWJseSByZW1vdmUg
Ii0iIGFsdG9nZXRoZXIgc29vbgotICAgIGlmIGtleXdvcmRleHByLnN0YXJ0c3dpdGgoIi0iKToK
LSAgICAgICAga2V5d29yZGV4cHIgPSAibm90ICIgKyBrZXl3b3JkZXhwclsxOl0KLSAgICBzZWxl
Y3R1bnRpbCA9IEZhbHNlCi0gICAgaWYga2V5d29yZGV4cHJbLTE6XSA9PSAiOiI6Ci0gICAgICAg
IHNlbGVjdHVudGlsID0gVHJ1ZQotICAgICAgICBrZXl3b3JkZXhwciA9IGtleXdvcmRleHByWzot
MV0KLQotICAgIHJlbWFpbmluZyA9IFtdCi0gICAgZGVzZWxlY3RlZCA9IFtdCi0gICAgZm9yIGNv
bGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgIGlmIGtleXdvcmRleHByIGFuZCBub3QgbWF0Y2hrZXl3
b3JkKGNvbGl0ZW0sIGtleXdvcmRleHByKToKLSAgICAgICAgICAgIGRlc2VsZWN0ZWQuYXBwZW5k
KGNvbGl0ZW0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxlY3R1bnRpbDoKLSAg
ICAgICAgICAgICAgICBrZXl3b3JkZXhwciA9IE5vbmUKLSAgICAgICAgICAgIGlmIG1hdGNoZXhw
cjoKLSAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2htYXJrKGNvbGl0ZW0sIG1hdGNoZXhwcik6
Ci0gICAgICAgICAgICAgICAgICAgIGRlc2VsZWN0ZWQuYXBwZW5kKGNvbGl0ZW0pCi0gICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICByZW1haW5pbmcuYXBwZW5kKGNvbGl0
ZW0pCi0KLSAgICBpZiBkZXNlbGVjdGVkOgotICAgICAgICBjb25maWcuaG9vay5weXRlc3RfZGVz
ZWxlY3RlZChpdGVtcz1kZXNlbGVjdGVkKQotICAgICAgICBpdGVtc1s6XSA9IHJlbWFpbmluZwot
Ci0KLUBhdHRyLnMKLWNsYXNzIE1hcmtNYXBwaW5nKG9iamVjdCk6Ci0gICAgIiIiUHJvdmlkZXMg
YSBsb2NhbCBtYXBwaW5nIGZvciBtYXJrZXJzIHdoZXJlIGl0ZW0gYWNjZXNzCi0gICAgcmVzb2x2
ZXMgdG8gVHJ1ZSBpZiB0aGUgbWFya2VyIGlzIHByZXNlbnQuICIiIgotCi0gICAgb3duX21hcmtf
bmFtZXMgPSBhdHRyLmliKCkKLQotICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX2tleXdv
cmRzKGNscywga2V5d29yZHMpOgotICAgICAgICBtYXJrX25hbWVzID0gc2V0KCkKLSAgICAgICAg
Zm9yIGtleSwgdmFsdWUgaW4ga2V5d29yZHMuaXRlbXMoKToKLSAgICAgICAgICAgIGlmIGlzaW5z
dGFuY2UodmFsdWUsIE1hcmtJbmZvKSBvciBpc2luc3RhbmNlKHZhbHVlLCBNYXJrRGVjb3JhdG9y
KToKLSAgICAgICAgICAgICAgICBtYXJrX25hbWVzLmFkZChrZXkpCi0gICAgICAgIHJldHVybiBj
bHMobWFya19uYW1lcykKLQotICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKLSAgICAg
ICAgcmV0dXJuIG5hbWUgaW4gc2VsZi5vd25fbWFya19uYW1lcwotCi0KLWNsYXNzIEtleXdvcmRN
YXBwaW5nKG9iamVjdCk6Ci0gICAgIiIiUHJvdmlkZXMgYSBsb2NhbCBtYXBwaW5nIGZvciBrZXl3
b3Jkcy4KLSAgICBHaXZlbiBhIGxpc3Qgb2YgbmFtZXMsIG1hcCBhbnkgc3Vic3RyaW5nIG9mIG9u
ZSBvZiB0aGVzZSBuYW1lcyB0byBUcnVlLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIG5hbWVzKToKLSAgICAgICAgc2VsZi5fbmFtZXMgPSBuYW1lcwotCi0gICAgZGVmIF9fZ2V0
aXRlbV9fKHNlbGYsIHN1Ym5hbWUpOgotICAgICAgICBmb3IgbmFtZSBpbiBzZWxmLl9uYW1lczoK
LSAgICAgICAgICAgIGlmIHN1Ym5hbWUgaW4gbmFtZToKLSAgICAgICAgICAgICAgICByZXR1cm4g
VHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotCi1kZWYgbWF0Y2htYXJrKGNvbGl0ZW0sIG1h
cmtleHByKToKLSAgICAiIiJUcmllcyB0byBtYXRjaCBvbiBhbnkgbWFya2VyIG5hbWVzLCBhdHRh
Y2hlZCB0byB0aGUgZ2l2ZW4gY29saXRlbS4iIiIKLSAgICByZXR1cm4gZXZhbChtYXJrZXhwciwg
e30sIE1hcmtNYXBwaW5nLmZyb21fa2V5d29yZHMoY29saXRlbS5rZXl3b3JkcykpCi0KLQotZGVm
IG1hdGNoa2V5d29yZChjb2xpdGVtLCBrZXl3b3JkZXhwcik6Ci0gICAgIiIiVHJpZXMgdG8gbWF0
Y2ggZ2l2ZW4ga2V5d29yZCBleHByZXNzaW9uIHRvIGdpdmVuIGNvbGxlY3RvciBpdGVtLgotCi0g
ICAgV2lsbCBtYXRjaCBvbiB0aGUgbmFtZSBvZiBjb2xpdGVtLCBpbmNsdWRpbmcgdGhlIG5hbWVz
IG9mIGl0cyBwYXJlbnRzLgotICAgIE9ubHkgbWF0Y2hlcyBuYW1lcyBvZiBpdGVtcyB3aGljaCBh
cmUgZWl0aGVyIGEgOmNsYXNzOmBDbGFzc2Agb3IgYQotICAgIDpjbGFzczpgRnVuY3Rpb25gLgot
ICAgIEFkZGl0aW9uYWxseSwgbWF0Y2hlcyBvbiBuYW1lcyBpbiB0aGUgJ2V4dHJhX2tleXdvcmRf
bWF0Y2hlcycgc2V0IG9mCi0gICAgYW55IGl0ZW0sIGFzIHdlbGwgYXMgbmFtZXMgZGlyZWN0bHkg
YXNzaWduZWQgdG8gdGVzdCBmdW5jdGlvbnMuCi0gICAgIiIiCi0gICAgbWFwcGVkX25hbWVzID0g
c2V0KCkKLQotICAgICMgQWRkIHRoZSBuYW1lcyBvZiB0aGUgY3VycmVudCBpdGVtIGFuZCBhbnkg
cGFyZW50IGl0ZW1zCi0gICAgaW1wb3J0IHB5dGVzdAotICAgIGZvciBpdGVtIGluIGNvbGl0ZW0u
bGlzdGNoYWluKCk6Ci0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGl0ZW0sIHB5dGVzdC5JbnN0
YW5jZSk6Ci0gICAgICAgICAgICBtYXBwZWRfbmFtZXMuYWRkKGl0ZW0ubmFtZSkKLQotICAgICMg
QWRkIHRoZSBuYW1lcyBhZGRlZCBhcyBleHRyYSBrZXl3b3JkcyB0byBjdXJyZW50IG9yIHBhcmVu
dCBpdGVtcwotICAgIGZvciBuYW1lIGluIGNvbGl0ZW0ubGlzdGV4dHJha2V5d29yZHMoKToKLSAg
ICAgICAgbWFwcGVkX25hbWVzLmFkZChuYW1lKQotCi0gICAgIyBBZGQgdGhlIG5hbWVzIGF0dGFj
aGVkIHRvIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHRocm91Z2ggZGlyZWN0IGFzc2lnbm1lbnQKLSAg
ICBpZiBoYXNhdHRyKGNvbGl0ZW0sICdmdW5jdGlvbicpOgotICAgICAgICBmb3IgbmFtZSBpbiBj
b2xpdGVtLmZ1bmN0aW9uLl9fZGljdF9fOgotICAgICAgICAgICAgbWFwcGVkX25hbWVzLmFkZChu
YW1lKQotCi0gICAgbWFwcGluZyA9IEtleXdvcmRNYXBwaW5nKG1hcHBlZF9uYW1lcykKLSAgICBp
ZiAiICIgbm90IGluIGtleXdvcmRleHByOgotICAgICAgICAjIHNwZWNpYWwgY2FzZSB0byBhbGxv
dyBmb3Igc2ltcGxlICItayBwYXNzIiBhbmQgIi1rIDEuMyIKLSAgICAgICAgcmV0dXJuIG1hcHBp
bmdba2V5d29yZGV4cHJdCi0gICAgZWxpZiBrZXl3b3JkZXhwci5zdGFydHN3aXRoKCJub3QgIikg
YW5kICIgIiBub3QgaW4ga2V5d29yZGV4cHJbNDpdOgotICAgICAgICByZXR1cm4gbm90IG1hcHBp
bmdba2V5d29yZGV4cHJbNDpdXQotICAgIHJldHVybiBldmFsKGtleXdvcmRleHByLCB7fSwgbWFw
cGluZykKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIGNvbmZpZy5fb2xk
X21hcmtfY29uZmlnID0gTUFSS19HRU4uX2NvbmZpZwotICAgIGlmIGNvbmZpZy5vcHRpb24uc3Ry
aWN0OgotICAgICAgICBNQVJLX0dFTi5fY29uZmlnID0gY29uZmlnCi0KLQotZGVmIHB5dGVzdF91
bmNvbmZpZ3VyZShjb25maWcpOgotICAgIE1BUktfR0VOLl9jb25maWcgPSBnZXRhdHRyKGNvbmZp
ZywgJ19vbGRfbWFya19jb25maWcnLCBOb25lKQotCi0KLWNsYXNzIE1hcmtHZW5lcmF0b3I6Ci0g
ICAgIiIiIEZhY3RvcnkgZm9yIDpjbGFzczpgTWFya0RlY29yYXRvcmAgb2JqZWN0cyAtIGV4cG9z
ZWQgYXMKLSAgICBhIGBgcHl0ZXN0Lm1hcmtgYCBzaW5nbGV0b24gaW5zdGFuY2UuICBFeGFtcGxl
OjoKLQotICAgICAgICAgaW1wb3J0IHB5dGVzdAotICAgICAgICAgQHB5dGVzdC5tYXJrLnNsb3d0
ZXN0Ci0gICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgICAgICAgcGFzcwotCi0g
ICAgd2lsbCBzZXQgYSAnc2xvd3Rlc3QnIDpjbGFzczpgTWFya0luZm9gIG9iamVjdAotICAgIG9u
IHRoZSBgYHRlc3RfZnVuY3Rpb25gYCBvYmplY3QuICIiIgotICAgIF9jb25maWcgPSBOb25lCi0K
LSAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6Ci0gICAgICAgIGlmIG5hbWVbMF0gPT0g
Il8iOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIk1hcmtlciBuYW1lIG11c3Qg
Tk9UIHN0YXJ0IHdpdGggdW5kZXJzY29yZSIpCi0gICAgICAgIGlmIHNlbGYuX2NvbmZpZyBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrKG5hbWUpCi0gICAgICAgIHJldHVybiBN
YXJrRGVjb3JhdG9yKE1hcmsobmFtZSwgKCksIHt9KSkKLQotICAgIGRlZiBfY2hlY2soc2VsZiwg
bmFtZSk6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5fbWFya2Vy
czoKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9y
OgotICAgICAgICAgICAgcGFzcwotICAgICAgICBzZWxmLl9tYXJrZXJzID0gdmFsdWVzID0gc2V0
KCkKLSAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fY29uZmlnLmdldGluaSgibWFya2VycyIpOgot
ICAgICAgICAgICAgbWFya2VyID0gbGluZS5zcGxpdCgiOiIsIDEpWzBdCi0gICAgICAgICAgICBt
YXJrZXIgPSBtYXJrZXIucnN0cmlwKCkKLSAgICAgICAgICAgIHggPSBtYXJrZXIuc3BsaXQoIigi
LCAxKVswXQotICAgICAgICAgICAgdmFsdWVzLmFkZCh4KQotICAgICAgICBpZiBuYW1lIG5vdCBp
biBzZWxmLl9tYXJrZXJzOgotICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIiVyIG5v
dCBhIHJlZ2lzdGVyZWQgbWFya2VyIiAlIChuYW1lLCkpCi0KLQotZGVmIGlzdGVzdGZ1bmMoZnVu
Yyk6Ci0gICAgcmV0dXJuIGhhc2F0dHIoZnVuYywgIl9fY2FsbF9fIikgYW5kIFwKLSAgICAgICAg
Z2V0YXR0cihmdW5jLCAiX19uYW1lX18iLCAiPGxhbWJkYT4iKSAhPSAiPGxhbWJkYT4iCi0KLQot
QGF0dHIucyhmcm96ZW49VHJ1ZSkKLWNsYXNzIE1hcmsob2JqZWN0KToKLSAgICBuYW1lID0gYXR0
ci5pYigpCi0gICAgYXJncyA9IGF0dHIuaWIoKQotICAgIGt3YXJncyA9IGF0dHIuaWIoKQotCi0g
ICAgZGVmIGNvbWJpbmVkX3dpdGgoc2VsZiwgb3RoZXIpOgotICAgICAgICBhc3NlcnQgc2VsZi5u
YW1lID09IG90aGVyLm5hbWUKLSAgICAgICAgcmV0dXJuIE1hcmsoCi0gICAgICAgICAgICBzZWxm
Lm5hbWUsIHNlbGYuYXJncyArIG90aGVyLmFyZ3MsCi0gICAgICAgICAgICBkaWN0KHNlbGYua3dh
cmdzLCAqKm90aGVyLmt3YXJncykpCi0KLQotQGF0dHIucwotY2xhc3MgTWFya0RlY29yYXRvcihv
YmplY3QpOgotICAgICIiIiBBIGRlY29yYXRvciBmb3IgdGVzdCBmdW5jdGlvbnMgYW5kIHRlc3Qg
Y2xhc3Nlcy4gIFdoZW4gYXBwbGllZAotICAgIGl0IHdpbGwgY3JlYXRlIDpjbGFzczpgTWFya0lu
Zm9gIG9iamVjdHMgd2hpY2ggbWF5IGJlCi0gICAgOnJlZjpgcmV0cmlldmVkIGJ5IGhvb2tzIGFz
IGl0ZW0ga2V5d29yZHMgPGV4Y29udHJvbHNraXA+YC4KLSAgICBNYXJrRGVjb3JhdG9yIGluc3Rh
bmNlcyBhcmUgb2Z0ZW4gY3JlYXRlZCBsaWtlIHRoaXM6OgotCi0gICAgICAgIG1hcmsxID0gcHl0
ZXN0Lm1hcmsuTkFNRSAgICAgICAgICAgICAgIyBzaW1wbGUgTWFya0RlY29yYXRvcgotICAgICAg
ICBtYXJrMiA9IHB5dGVzdC5tYXJrLk5BTUUobmFtZTE9dmFsdWUpICMgcGFyYW1ldHJpemVkIE1h
cmtEZWNvcmF0b3IKLQotICAgIGFuZCBjYW4gdGhlbiBiZSBhcHBsaWVkIGFzIGRlY29yYXRvcnMg
dG8gdGVzdCBmdW5jdGlvbnM6OgotCi0gICAgICAgIEBtYXJrMgotICAgICAgICBkZWYgdGVzdF9m
dW5jdGlvbigpOgotICAgICAgICAgICAgcGFzcwotCi0gICAgV2hlbiBhIE1hcmtEZWNvcmF0b3Ig
aW5zdGFuY2UgaXMgY2FsbGVkIGl0IGRvZXMgdGhlIGZvbGxvd2luZzoKLSAgICAgIDEuIElmIGNh
bGxlZCB3aXRoIGEgc2luZ2xlIGNsYXNzIGFzIGl0cyBvbmx5IHBvc2l0aW9uYWwgYXJndW1lbnQg
YW5kIG5vCi0gICAgICAgICBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpdCBhdHRhY2hl
cyBpdHNlbGYgdG8gdGhlIGNsYXNzIHNvIGl0Ci0gICAgICAgICBnZXRzIGFwcGxpZWQgYXV0b21h
dGljYWxseSB0byBhbGwgdGVzdCBjYXNlcyBmb3VuZCBpbiB0aGF0IGNsYXNzLgotICAgICAgMi4g
SWYgY2FsbGVkIHdpdGggYSBzaW5nbGUgZnVuY3Rpb24gYXMgaXRzIG9ubHkgcG9zaXRpb25hbCBh
cmd1bWVudCBhbmQKLSAgICAgICAgIG5vIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGl0
IGF0dGFjaGVzIGEgTWFya0luZm8gb2JqZWN0IHRvIHRoZQotICAgICAgICAgZnVuY3Rpb24sIGNv
bnRhaW5pbmcgYWxsIHRoZSBhcmd1bWVudHMgYWxyZWFkeSBzdG9yZWQgaW50ZXJuYWxseSBpbgot
ICAgICAgICAgdGhlIE1hcmtEZWNvcmF0b3IuCi0gICAgICAzLiBXaGVuIGNhbGxlZCBpbiBhbnkg
b3RoZXIgY2FzZSwgaXQgcGVyZm9ybXMgYSAnZmFrZSBjb25zdHJ1Y3Rpb24nIGNhbGwsCi0gICAg
ICAgICBpLmUuIGl0IHJldHVybnMgYSBuZXcgTWFya0RlY29yYXRvciBpbnN0YW5jZSB3aXRoIHRo
ZSBvcmlnaW5hbAotICAgICAgICAgTWFya0RlY29yYXRvcidzIGNvbnRlbnQgdXBkYXRlZCB3aXRo
IHRoZSBhcmd1bWVudHMgcGFzc2VkIHRvIHRoaXMKLSAgICAgICAgIGNhbGwuCi0KLSAgICBOb3Rl
OiBUaGUgcnVsZXMgYWJvdmUgcHJldmVudCBNYXJrRGVjb3JhdG9yIG9iamVjdHMgZnJvbSBzdG9y
aW5nIG9ubHkgYQotICAgIHNpbmdsZSBmdW5jdGlvbiBvciBjbGFzcyByZWZlcmVuY2UgYXMgdGhl
aXIgcG9zaXRpb25hbCBhcmd1bWVudCB3aXRoIG5vCi0gICAgYWRkaXRpb25hbCBrZXl3b3JkIG9y
IHBvc2l0aW9uYWwgYXJndW1lbnRzLgotCi0gICAgIiIiCi0KLSAgICBtYXJrID0gYXR0ci5pYih2
YWxpZGF0b3I9YXR0ci52YWxpZGF0b3JzLmluc3RhbmNlX29mKE1hcmspKQotCi0gICAgbmFtZSA9
IGFsaWFzKCdtYXJrLm5hbWUnKQotICAgIGFyZ3MgPSBhbGlhcygnbWFyay5hcmdzJykKLSAgICBr
d2FyZ3MgPSBhbGlhcygnbWFyay5rd2FyZ3MnKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIG1h
cmtuYW1lKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5uYW1lICAjIGZvciBiYWNrd2FyZC1j
b21wYXQgKDIuNC4xIGhhZCB0aGlzIGF0dHIpCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVy
KToKLSAgICAgICAgcmV0dXJuIHNlbGYubWFyayA9PSBvdGhlci5tYXJrIGlmIGlzaW5zdGFuY2Uo
b3RoZXIsIE1hcmtEZWNvcmF0b3IpIGVsc2UgRmFsc2UKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxm
KToKLSAgICAgICAgcmV0dXJuICI8TWFya0RlY29yYXRvciAlcj4iICUgKHNlbGYubWFyaywpCi0K
LSAgICBkZWYgd2l0aF9hcmdzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIiBy
ZXR1cm4gYSBNYXJrRGVjb3JhdG9yIHdpdGggZXh0cmEgYXJndW1lbnRzIGFkZGVkCi0KLSAgICAg
ICAgdW5saWtlIGNhbGwgdGhpcyBjYW4gYmUgdXNlZCBldmVuIGlmIHRoZSBzb2xlIGFyZ3VtZW50
IGlzIGEgY2FsbGFibGUvY2xhc3MKLQotICAgICAgICA6cmV0dXJuOiBNYXJrRGVjb3JhdG9yCi0g
ICAgICAgICIiIgotCi0gICAgICAgIG1hcmsgPSBNYXJrKHNlbGYubmFtZSwgYXJncywga3dhcmdz
KQotICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5tYXJrLmNvbWJpbmVkX3dpdGgo
bWFyaykpCi0KLSAgICBkZWYgX19jYWxsX18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAg
ICAgIiIiIGlmIHBhc3NlZCBhIHNpbmdsZSBjYWxsYWJsZSBhcmd1bWVudDogZGVjb3JhdGUgaXQg
d2l0aCBtYXJrIGluZm8uCi0gICAgICAgICAgICBvdGhlcndpc2UgYWRkICphcmdzLyoqa3dhcmdz
IGluLXBsYWNlIHRvIG1hcmsgaW5mb3JtYXRpb24uICIiIgotICAgICAgICBpZiBhcmdzIGFuZCBu
b3Qga3dhcmdzOgotICAgICAgICAgICAgZnVuYyA9IGFyZ3NbMF0KLSAgICAgICAgICAgIGlzX2Ns
YXNzID0gaW5zcGVjdC5pc2NsYXNzKGZ1bmMpCi0gICAgICAgICAgICBpZiBsZW4oYXJncykgPT0g
MSBhbmQgKGlzdGVzdGZ1bmMoZnVuYykgb3IgaXNfY2xhc3MpOgotICAgICAgICAgICAgICAgIGlm
IGlzX2NsYXNzOgotICAgICAgICAgICAgICAgICAgICBzdG9yZV9tYXJrKGZ1bmMsIHNlbGYubWFy
aykKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzdG9yZV9sZWdh
Y3lfbWFya2luZm8oZnVuYywgc2VsZi5tYXJrKQotICAgICAgICAgICAgICAgICAgICBzdG9yZV9t
YXJrKGZ1bmMsIHNlbGYubWFyaykKLSAgICAgICAgICAgICAgICByZXR1cm4gZnVuYwotICAgICAg
ICByZXR1cm4gc2VsZi53aXRoX2FyZ3MoKmFyZ3MsICoqa3dhcmdzKQotCi0KLWRlZiBnZXRfdW5w
YWNrZWRfbWFya3Mob2JqKToKLSAgICAiIiIKLSAgICBvYnRhaW4gdGhlIHVucGFja2VkIG1hcmtz
IHRoYXQgYXJlIHN0b3JlZCBvbiBhIG9iamVjdAotICAgICIiIgotICAgIG1hcmtfbGlzdCA9IGdl
dGF0dHIob2JqLCAncHl0ZXN0bWFyaycsIFtdKQotCi0gICAgaWYgbm90IGlzaW5zdGFuY2UobWFy
a19saXN0LCBsaXN0KToKLSAgICAgICAgbWFya19saXN0ID0gW21hcmtfbGlzdF0KLSAgICByZXR1
cm4gWwotICAgICAgICBnZXRhdHRyKG1hcmssICdtYXJrJywgbWFyaykgICMgdW5wYWNrIE1hcmtE
ZWNvcmF0b3IKLSAgICAgICAgZm9yIG1hcmsgaW4gbWFya19saXN0Ci0gICAgXQotCi0KLWRlZiBz
dG9yZV9tYXJrKG9iaiwgbWFyayk6Ci0gICAgIiIic3RvcmUgYSBNYXJrIG9uIGEgb2JqZWN0Ci0g
ICAgdGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGUgTWFyayBkZWNsYXJhdGlvbnMvZGVjb3Jh
dG9ycyBjb3JyZWN0bHkKLSAgICAiIiIKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShtYXJrLCBNYXJr
KSwgbWFyawotICAgICMgYWx3YXlzIHJlYXNzaWduIG5hbWUgdG8gYXZvaWQgdXBkYXRpbmcgcHl0
ZXN0bWFyawotICAgICMgaW4gYSByZWZlcmVuY2UgdGhhdCB3YXMgb25seSBib3Jyb3dlZAotICAg
IG9iai5weXRlc3RtYXJrID0gZ2V0X3VucGFja2VkX21hcmtzKG9iaikgKyBbbWFya10KLQotCi1k
ZWYgc3RvcmVfbGVnYWN5X21hcmtpbmZvKGZ1bmMsIG1hcmspOgotICAgICIiImNyZWF0ZSB0aGUg
bGVnYWN5IE1hcmtJbmZvIG9iamVjdHMgYW5kIHB1dCB0aGVtIG9udG8gdGhlIGZ1bmN0aW9uCi0g
ICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2UobWFyaywgTWFyayk6Ci0gICAgICAgIHJhaXNl
IFR5cGVFcnJvcigiZ290IHttYXJrIXJ9IGluc3RlYWQgb2YgYSBNYXJrIi5mb3JtYXQobWFyaz1t
YXJrKSkKLSAgICBob2xkZXIgPSBnZXRhdHRyKGZ1bmMsIG1hcmsubmFtZSwgTm9uZSkKLSAgICBp
ZiBob2xkZXIgaXMgTm9uZToKLSAgICAgICAgaG9sZGVyID0gTWFya0luZm8obWFyaykKLSAgICAg
ICAgc2V0YXR0cihmdW5jLCBtYXJrLm5hbWUsIGhvbGRlcikKLSAgICBlbHNlOgotICAgICAgICBo
b2xkZXIuYWRkX21hcmsobWFyaykKLQotCi1jbGFzcyBNYXJrSW5mbyhvYmplY3QpOgotICAgICIi
IiBNYXJraW5nIG9iamVjdCBjcmVhdGVkIGJ5IDpjbGFzczpgTWFya0RlY29yYXRvcmAgaW5zdGFu
Y2VzLiAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXJrKToKLSAgICAgICAgYXNzZXJ0
IGlzaW5zdGFuY2UobWFyaywgTWFyayksIHJlcHIobWFyaykKLSAgICAgICAgc2VsZi5jb21iaW5l
ZCA9IG1hcmsKLSAgICAgICAgc2VsZi5fbWFya3MgPSBbbWFya10KLQotICAgIG5hbWUgPSBhbGlh
cygnY29tYmluZWQubmFtZScpCi0gICAgYXJncyA9IGFsaWFzKCdjb21iaW5lZC5hcmdzJykKLSAg
ICBrd2FyZ3MgPSBhbGlhcygnY29tYmluZWQua3dhcmdzJykKLQotICAgIGRlZiBfX3JlcHJfXyhz
ZWxmKToKLSAgICAgICAgcmV0dXJuICI8TWFya0luZm8gezAhcn0+Ii5mb3JtYXQoc2VsZi5jb21i
aW5lZCkKLQotICAgIGRlZiBhZGRfbWFyayhzZWxmLCBtYXJrKToKLSAgICAgICAgIiIiIGFkZCBh
IE1hcmtJbmZvIHdpdGggdGhlIGdpdmVuIGFyZ3MgYW5kIGt3YXJncy4gIiIiCi0gICAgICAgIHNl
bGYuX21hcmtzLmFwcGVuZChtYXJrKQotICAgICAgICBzZWxmLmNvbWJpbmVkID0gc2VsZi5jb21i
aW5lZC5jb21iaW5lZF93aXRoKG1hcmspCi0KLSAgICBkZWYgX19pdGVyX18oc2VsZik6Ci0gICAg
ICAgICIiIiB5aWVsZCBNYXJrSW5mbyBvYmplY3RzIGVhY2ggcmVsYXRpbmcgdG8gYSBtYXJraW5n
LWNhbGwuICIiIgotICAgICAgICByZXR1cm4gbWFwKE1hcmtJbmZvLCBzZWxmLl9tYXJrcykKLQot
Ci1NQVJLX0dFTiA9IE1hcmtHZW5lcmF0b3IoKQotCi0KLWRlZiBfbWFya2VkKGZ1bmMsIG1hcmsp
OgotICAgICIiIiBSZXR1cm5zIFRydWUgaWYgOmZ1bmM6IGlzIGFscmVhZHkgbWFya2VkIHdpdGgg
Om1hcms6LCBGYWxzZSBvdGhlcndpc2UuCi0gICAgVGhpcyBjYW4gaGFwcGVuIGlmIG1hcmtlciBp
cyBhcHBsaWVkIHRvIGNsYXNzIGFuZCB0aGUgdGVzdCBmaWxlIGlzCi0gICAgaW52b2tlZCBtb3Jl
IHRoYW4gb25jZS4KLSAgICAiIiIKLSAgICB0cnk6Ci0gICAgICAgIGZ1bmNfbWFyayA9IGdldGF0
dHIoZnVuYywgbWFyay5uYW1lKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAg
cmV0dXJuIEZhbHNlCi0gICAgcmV0dXJuIG1hcmsuYXJncyA9PSBmdW5jX21hcmsuYXJncyBhbmQg
bWFyay5rd2FyZ3MgPT0gZnVuY19tYXJrLmt3YXJncwotCi0KLWRlZiB0cmFuc2Zlcl9tYXJrZXJz
KGZ1bmNvYmosIGNscywgbW9kKToKLSAgICAiIiIKLSAgICB0aGlzIGZ1bmN0aW9uIHRyYW5zZmVy
cyBjbGFzcyBsZXZlbCBtYXJrZXJzIGFuZCBtb2R1bGUgbGV2ZWwgbWFya2VycwotICAgIGludG8g
ZnVuY3Rpb24gbGV2ZWwgbWFya2luZm8gb2JqZWN0cwotCi0gICAgdGhpcyBpcyB0aGUgbWFpbiBy
ZWFzb24gd2h5IG1hcmtzIGFyZSBzbyBicm9rZW4KLSAgICB0aGUgcmVzb2x1dGlvbiB3aWxsIGlu
dm9sdmUgcGhhc2luZyBvdXQgZnVuY3Rpb24gbGV2ZWwgTWFya0luZm8gb2JqZWN0cwotCi0gICAg
IiIiCi0gICAgZm9yIG9iaiBpbiAoY2xzLCBtb2QpOgotICAgICAgICBmb3IgbWFyayBpbiBnZXRf
dW5wYWNrZWRfbWFya3Mob2JqKToKLSAgICAgICAgICAgIGlmIG5vdCBfbWFya2VkKGZ1bmNvYmos
IG1hcmspOgotICAgICAgICAgICAgICAgIHN0b3JlX2xlZ2FjeV9tYXJraW5mbyhmdW5jb2JqLCBt
YXJrKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9tb25rZXlwYXRjaC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvbW9ua2V5cGF0Y2gucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQwYWU1NjBmMDcwMmIxMzYwYTMwOWQ5MTQ3MzAyOTAzYjExNzRlNmMuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9tb25rZXlwYXRjaC5weQorKysgL2Rldi9udWxsCkBAIC0xLDI1OCArMCwwIEBACi0iIiIgbW9u
a2V5cGF0Y2hpbmcgYW5kIG1vY2tpbmcgZnVuY3Rpb25hbGl0eS4gICIiIgotZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1p
bXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCByZQotaW1wb3J0IHNpeAotZnJvbSBfcHl0ZXN0
LmZpeHR1cmVzIGltcG9ydCBmaXh0dXJlCi0KLVJFX0lNUE9SVF9FUlJPUl9OQU1FID0gcmUuY29t
cGlsZSgiXk5vIG1vZHVsZSBuYW1lZCAoLiopJCIpCi0KLQotQGZpeHR1cmUKLWRlZiBtb25rZXlw
YXRjaCgpOgotICAgICIiIlRoZSByZXR1cm5lZCBgYG1vbmtleXBhdGNoYGAgZml4dHVyZSBwcm92
aWRlcyB0aGVzZQotICAgIGhlbHBlciBtZXRob2RzIHRvIG1vZGlmeSBvYmplY3RzLCBkaWN0aW9u
YXJpZXMgb3Igb3MuZW52aXJvbjo6Ci0KLSAgICAgICAgbW9ua2V5cGF0Y2guc2V0YXR0cihvYmos
IG5hbWUsIHZhbHVlLCByYWlzaW5nPVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLmRlbGF0dHIo
b2JqLCBuYW1lLCByYWlzaW5nPVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGl0ZW0obWFw
cGluZywgbmFtZSwgdmFsdWUpCi0gICAgICAgIG1vbmtleXBhdGNoLmRlbGl0ZW0ob2JqLCBuYW1l
LCByYWlzaW5nPVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLnNldGVudihuYW1lLCB2YWx1ZSwg
cHJlcGVuZD1GYWxzZSkKLSAgICAgICAgbW9ua2V5cGF0Y2guZGVsZW52KG5hbWUsIHZhbHVlLCBy
YWlzaW5nPVRydWUpCi0gICAgICAgIG1vbmtleXBhdGNoLnN5c3BhdGhfcHJlcGVuZChwYXRoKQot
ICAgICAgICBtb25rZXlwYXRjaC5jaGRpcihwYXRoKQotCi0gICAgQWxsIG1vZGlmaWNhdGlvbnMg
d2lsbCBiZSB1bmRvbmUgYWZ0ZXIgdGhlIHJlcXVlc3RpbmcKLSAgICB0ZXN0IGZ1bmN0aW9uIG9y
IGZpeHR1cmUgaGFzIGZpbmlzaGVkLiBUaGUgYGByYWlzaW5nYGAKLSAgICBwYXJhbWV0ZXIgZGV0
ZXJtaW5lcyBpZiBhIEtleUVycm9yIG9yIEF0dHJpYnV0ZUVycm9yCi0gICAgd2lsbCBiZSByYWlz
ZWQgaWYgdGhlIHNldC9kZWxldGlvbiBvcGVyYXRpb24gaGFzIG5vIHRhcmdldC4KLSAgICAiIiIK
LSAgICBtcGF0Y2ggPSBNb25rZXlQYXRjaCgpCi0gICAgeWllbGQgbXBhdGNoCi0gICAgbXBhdGNo
LnVuZG8oKQotCi0KLWRlZiByZXNvbHZlKG5hbWUpOgotICAgICMgc2ltcGxpZmllZCBmcm9tIHpv
cGUuZG90dGVkbmFtZQotICAgIHBhcnRzID0gbmFtZS5zcGxpdCgnLicpCi0KLSAgICB1c2VkID0g
cGFydHMucG9wKDApCi0gICAgZm91bmQgPSBfX2ltcG9ydF9fKHVzZWQpCi0gICAgZm9yIHBhcnQg
aW4gcGFydHM6Ci0gICAgICAgIHVzZWQgKz0gJy4nICsgcGFydAotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBmb3VuZCA9IGdldGF0dHIoZm91bmQsIHBhcnQpCi0gICAgICAgIGV4Y2VwdCBBdHRy
aWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAg
IGNvbnRpbnVlCi0gICAgICAgICMgd2UgdXNlIGV4cGxpY2l0IHVuLW5lc3Rpbmcgb2YgdGhlIGhh
bmRsaW5nIGJsb2NrIGluIG9yZGVyCi0gICAgICAgICMgdG8gYXZvaWQgbmVzdGVkIGV4Y2VwdGlv
bnMgb24gcHl0aG9uIDMKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgX19pbXBvcnRfXyh1c2Vk
KQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3IgYXMgZXg6Ci0gICAgICAgICAgICAjIHN0ciBp
cyB1c2VkIGZvciBweTIgdnMgcHkzCi0gICAgICAgICAgICBleHBlY3RlZCA9IHN0cihleCkuc3Bs
aXQoKVstMV0KLSAgICAgICAgICAgIGlmIGV4cGVjdGVkID09IHVzZWQ6Ci0gICAgICAgICAgICAg
ICAgcmFpc2UKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW1wb3J0
RXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICdpbXBvcnQgZXJyb3IgaW4gJXM6ICVzJyAlICh1
c2VkLCBleCkKLSAgICAgICAgICAgICAgICApCi0gICAgICAgIGZvdW5kID0gYW5ub3RhdGVkX2dl
dGF0dHIoZm91bmQsIHBhcnQsIHVzZWQpCi0gICAgcmV0dXJuIGZvdW5kCi0KLQotZGVmIGFubm90
YXRlZF9nZXRhdHRyKG9iaiwgbmFtZSwgYW5uKToKLSAgICB0cnk6Ci0gICAgICAgIG9iaiA9IGdl
dGF0dHIob2JqLCBuYW1lKQotICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgcmFp
c2UgQXR0cmlidXRlRXJyb3IoCi0gICAgICAgICAgICAnJXIgb2JqZWN0IGF0ICVzIGhhcyBubyBh
dHRyaWJ1dGUgJXInICUgKAotICAgICAgICAgICAgICAgIHR5cGUob2JqKS5fX25hbWVfXywgYW5u
LCBuYW1lCi0gICAgICAgICAgICApCi0gICAgICAgICkKLSAgICByZXR1cm4gb2JqCi0KLQotZGVm
IGRlcml2ZV9pbXBvcnRwYXRoKGltcG9ydF9wYXRoLCByYWlzaW5nKToKLSAgICBpZiBub3QgaXNp
bnN0YW5jZShpbXBvcnRfcGF0aCwgc2l4LnN0cmluZ190eXBlcykgb3IgIi4iIG5vdCBpbiBpbXBv
cnRfcGF0aDoKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtdXN0IGJlIGFic29sdXRlIGltcG9y
dCBwYXRoIHN0cmluZywgbm90ICVyIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAoaW1wb3J0
X3BhdGgsKSkKLSAgICBtb2R1bGUsIGF0dHIgPSBpbXBvcnRfcGF0aC5yc3BsaXQoJy4nLCAxKQot
ICAgIHRhcmdldCA9IHJlc29sdmUobW9kdWxlKQotICAgIGlmIHJhaXNpbmc6Ci0gICAgICAgIGFu
bm90YXRlZF9nZXRhdHRyKHRhcmdldCwgYXR0ciwgYW5uPW1vZHVsZSkKLSAgICByZXR1cm4gYXR0
ciwgdGFyZ2V0Ci0KLQotY2xhc3MgTm90c2V0OgotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAg
ICAgICAgcmV0dXJuICI8bm90c2V0PiIKLQotCi1ub3RzZXQgPSBOb3RzZXQoKQotCi0KLWNsYXNz
IE1vbmtleVBhdGNoOgotICAgICIiIiBPYmplY3QgcmV0dXJuZWQgYnkgdGhlIGBgbW9ua2V5cGF0
Y2hgYCBmaXh0dXJlIGtlZXBpbmcgYSByZWNvcmQgb2Ygc2V0YXR0ci9pdGVtL2Vudi9zeXNwYXRo
IGNoYW5nZXMuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNl
bGYuX3NldGF0dHIgPSBbXQotICAgICAgICBzZWxmLl9zZXRpdGVtID0gW10KLSAgICAgICAgc2Vs
Zi5fY3dkID0gTm9uZQotICAgICAgICBzZWxmLl9zYXZlc3lzcGF0aCA9IE5vbmUKLQotICAgIGRl
ZiBzZXRhdHRyKHNlbGYsIHRhcmdldCwgbmFtZSwgdmFsdWU9bm90c2V0LCByYWlzaW5nPVRydWUp
OgotICAgICAgICAiIiIgU2V0IGF0dHJpYnV0ZSB2YWx1ZSBvbiB0YXJnZXQsIG1lbW9yaXppbmcg
dGhlIG9sZCB2YWx1ZS4KLSAgICAgICAgQnkgZGVmYXVsdCByYWlzZSBBdHRyaWJ1dGVFcnJvciBp
ZiB0aGUgYXR0cmlidXRlIGRpZCBub3QgZXhpc3QuCi0KLSAgICAgICAgRm9yIGNvbnZlbmllbmNl
IHlvdSBjYW4gc3BlY2lmeSBhIHN0cmluZyBhcyBgYHRhcmdldGBgIHdoaWNoCi0gICAgICAgIHdp
bGwgYmUgaW50ZXJwcmV0ZWQgYXMgYSBkb3R0ZWQgaW1wb3J0IHBhdGgsIHdpdGggdGhlIGxhc3Qg
cGFydAotICAgICAgICBiZWluZyB0aGUgYXR0cmlidXRlIG5hbWUuICBFeGFtcGxlOgotICAgICAg
ICBgYG1vbmtleXBhdGNoLnNldGF0dHIoIm9zLmdldGN3ZCIsIGxhbWJkYSB4OiAiLyIpYGAKLSAg
ICAgICAgd291bGQgc2V0IHRoZSBgYGdldGN3ZGBgIGZ1bmN0aW9uIG9mIHRoZSBgYG9zYGAgbW9k
dWxlLgotCi0gICAgICAgIFRoZSBgYHJhaXNpbmdgYCB2YWx1ZSBkZXRlcm1pbmVzIGlmIHRoZSBz
ZXRhdHRyIHNob3VsZCBmYWlsCi0gICAgICAgIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGFscmVh
ZHkgcHJlc2VudCAoZGVmYXVsdHMgdG8gVHJ1ZQotICAgICAgICB3aGljaCBtZWFucyBpdCB3aWxs
IHJhaXNlKS4KLSAgICAgICAgIiIiCi0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQot
ICAgICAgICBpbXBvcnQgaW5zcGVjdAotCi0gICAgICAgIGlmIHZhbHVlIGlzIG5vdHNldDoKLSAg
ICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHRhcmdldCwgc2l4LnN0cmluZ190eXBlcyk6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ1c2Ugc2V0YXR0cih0YXJnZXQsIG5hbWUs
IHZhbHVlKSBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZXRhdHRyKHRh
cmdldCwgdmFsdWUpIHdpdGggdGFyZ2V0IGJlaW5nIGEgZG90dGVkICIKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImltcG9ydCBzdHJpbmciKQotICAgICAgICAgICAgdmFsdWUgPSBu
YW1lCi0gICAgICAgICAgICBuYW1lLCB0YXJnZXQgPSBkZXJpdmVfaW1wb3J0cGF0aCh0YXJnZXQs
IHJhaXNpbmcpCi0KLSAgICAgICAgb2xkdmFsID0gZ2V0YXR0cih0YXJnZXQsIG5hbWUsIG5vdHNl
dCkKLSAgICAgICAgaWYgcmFpc2luZyBhbmQgb2xkdmFsIGlzIG5vdHNldDoKLSAgICAgICAgICAg
IHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlciBoYXMgbm8gYXR0cmlidXRlICVyIiAlICh0YXJnZXQs
IG5hbWUpKQotCi0gICAgICAgICMgYXZvaWQgY2xhc3MgZGVzY3JpcHRvcnMgbGlrZSBzdGF0aWNt
ZXRob2QvY2xhc3NtZXRob2QKLSAgICAgICAgaWYgaW5zcGVjdC5pc2NsYXNzKHRhcmdldCk6Ci0g
ICAgICAgICAgICBvbGR2YWwgPSB0YXJnZXQuX19kaWN0X18uZ2V0KG5hbWUsIG5vdHNldCkKLSAg
ICAgICAgc2VsZi5fc2V0YXR0ci5hcHBlbmQoKHRhcmdldCwgbmFtZSwgb2xkdmFsKSkKLSAgICAg
ICAgc2V0YXR0cih0YXJnZXQsIG5hbWUsIHZhbHVlKQotCi0gICAgZGVmIGRlbGF0dHIoc2VsZiwg
dGFyZ2V0LCBuYW1lPW5vdHNldCwgcmFpc2luZz1UcnVlKToKLSAgICAgICAgIiIiIERlbGV0ZSBh
dHRyaWJ1dGUgYGBuYW1lYGAgZnJvbSBgYHRhcmdldGBgLCBieSBkZWZhdWx0IHJhaXNlCi0gICAg
ICAgIEF0dHJpYnV0ZUVycm9yIGl0IHRoZSBhdHRyaWJ1dGUgZGlkIG5vdCBwcmV2aW91c2x5IGV4
aXN0LgotCi0gICAgICAgIElmIG5vIGBgbmFtZWBgIGlzIHNwZWNpZmllZCBhbmQgYGB0YXJnZXRg
YCBpcyBhIHN0cmluZwotICAgICAgICBpdCB3aWxsIGJlIGludGVycHJldGVkIGFzIGEgZG90dGVk
IGltcG9ydCBwYXRoIHdpdGggdGhlCi0gICAgICAgIGxhc3QgcGFydCBiZWluZyB0aGUgYXR0cmli
dXRlIG5hbWUuCi0KLSAgICAgICAgSWYgYGByYWlzaW5nYGAgaXMgc2V0IHRvIEZhbHNlLCBubyBl
eGNlcHRpb24gd2lsbCBiZSByYWlzZWQgaWYgdGhlCi0gICAgICAgIGF0dHJpYnV0ZSBpcyBtaXNz
aW5nLgotICAgICAgICAiIiIKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAg
ICAgIGlmIG5hbWUgaXMgbm90c2V0OgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodGFy
Z2V0LCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3Io
InVzZSBkZWxhdHRyKHRhcmdldCwgbmFtZSkgb3IgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZGVsYXR0cih0YXJnZXQpIHdpdGggdGFyZ2V0IGJlaW5nIGEgZG90dGVkICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBzdHJpbmciKQotICAgICAgICAg
ICAgbmFtZSwgdGFyZ2V0ID0gZGVyaXZlX2ltcG9ydHBhdGgodGFyZ2V0LCByYWlzaW5nKQotCi0g
ICAgICAgIGlmIG5vdCBoYXNhdHRyKHRhcmdldCwgbmFtZSk6Ci0gICAgICAgICAgICBpZiByYWlz
aW5nOgotICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKG5hbWUpCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9zZXRhdHRyLmFwcGVuZCgodGFyZ2V0LCBuYW1lLCBn
ZXRhdHRyKHRhcmdldCwgbmFtZSwgbm90c2V0KSkpCi0gICAgICAgICAgICBkZWxhdHRyKHRhcmdl
dCwgbmFtZSkKLQotICAgIGRlZiBzZXRpdGVtKHNlbGYsIGRpYywgbmFtZSwgdmFsdWUpOgotICAg
ICAgICAiIiIgU2V0IGRpY3Rpb25hcnkgZW50cnkgYGBuYW1lYGAgdG8gdmFsdWUuICIiIgotICAg
ICAgICBzZWxmLl9zZXRpdGVtLmFwcGVuZCgoZGljLCBuYW1lLCBkaWMuZ2V0KG5hbWUsIG5vdHNl
dCkpKQotICAgICAgICBkaWNbbmFtZV0gPSB2YWx1ZQotCi0gICAgZGVmIGRlbGl0ZW0oc2VsZiwg
ZGljLCBuYW1lLCByYWlzaW5nPVRydWUpOgotICAgICAgICAiIiIgRGVsZXRlIGBgbmFtZWBgIGZy
b20gZGljdC4gUmFpc2UgS2V5RXJyb3IgaWYgaXQgZG9lc24ndCBleGlzdC4KLQotICAgICAgICBJ
ZiBgYHJhaXNpbmdgYCBpcyBzZXQgdG8gRmFsc2UsIG5vIGV4Y2VwdGlvbiB3aWxsIGJlIHJhaXNl
ZCBpZiB0aGUKLSAgICAgICAga2V5IGlzIG1pc3NpbmcuCi0gICAgICAgICIiIgotICAgICAgICBp
ZiBuYW1lIG5vdCBpbiBkaWM6Ci0gICAgICAgICAgICBpZiByYWlzaW5nOgotICAgICAgICAgICAg
ICAgIHJhaXNlIEtleUVycm9yKG5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxm
Ll9zZXRpdGVtLmFwcGVuZCgoZGljLCBuYW1lLCBkaWMuZ2V0KG5hbWUsIG5vdHNldCkpKQotICAg
ICAgICAgICAgZGVsIGRpY1tuYW1lXQotCi0gICAgZGVmIHNldGVudihzZWxmLCBuYW1lLCB2YWx1
ZSwgcHJlcGVuZD1Ob25lKToKLSAgICAgICAgIiIiIFNldCBlbnZpcm9ubWVudCB2YXJpYWJsZSBg
YG5hbWVgYCB0byBgYHZhbHVlYGAuICBJZiBgYHByZXBlbmRgYAotICAgICAgICBpcyBhIGNoYXJh
Y3RlciwgcmVhZCB0aGUgY3VycmVudCBlbnZpcm9ubWVudCB2YXJpYWJsZSB2YWx1ZQotICAgICAg
ICBhbmQgcHJlcGVuZCB0aGUgYGB2YWx1ZWBgIGFkam9pbmVkIHdpdGggdGhlIGBgcHJlcGVuZGBg
IGNoYXJhY3Rlci4iIiIKLSAgICAgICAgdmFsdWUgPSBzdHIodmFsdWUpCi0gICAgICAgIGlmIHBy
ZXBlbmQgYW5kIG5hbWUgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIHZhbHVlID0gdmFsdWUg
KyBwcmVwZW5kICsgb3MuZW52aXJvbltuYW1lXQotICAgICAgICBzZWxmLnNldGl0ZW0ob3MuZW52
aXJvbiwgbmFtZSwgdmFsdWUpCi0KLSAgICBkZWYgZGVsZW52KHNlbGYsIG5hbWUsIHJhaXNpbmc9
VHJ1ZSk6Ci0gICAgICAgICIiIiBEZWxldGUgYGBuYW1lYGAgZnJvbSB0aGUgZW52aXJvbm1lbnQu
IFJhaXNlIEtleUVycm9yIGl0IGRvZXMgbm90Ci0gICAgICAgIGV4aXN0LgotCi0gICAgICAgIElm
IGBgcmFpc2luZ2BgIGlzIHNldCB0byBGYWxzZSwgbm8gZXhjZXB0aW9uIHdpbGwgYmUgcmFpc2Vk
IGlmIHRoZQotICAgICAgICBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBtaXNzaW5nLgotICAgICAg
ICAiIiIKLSAgICAgICAgc2VsZi5kZWxpdGVtKG9zLmVudmlyb24sIG5hbWUsIHJhaXNpbmc9cmFp
c2luZykKLQotICAgIGRlZiBzeXNwYXRoX3ByZXBlbmQoc2VsZiwgcGF0aCk6Ci0gICAgICAgICIi
IiBQcmVwZW5kIGBgcGF0aGBgIHRvIGBgc3lzLnBhdGhgYCBsaXN0IG9mIGltcG9ydCBsb2NhdGlv
bnMuICIiIgotICAgICAgICBpZiBzZWxmLl9zYXZlc3lzcGF0aCBpcyBOb25lOgotICAgICAgICAg
ICAgc2VsZi5fc2F2ZXN5c3BhdGggPSBzeXMucGF0aFs6XQotICAgICAgICBzeXMucGF0aC5pbnNl
cnQoMCwgc3RyKHBhdGgpKQotCi0gICAgZGVmIGNoZGlyKHNlbGYsIHBhdGgpOgotICAgICAgICAi
IiIgQ2hhbmdlIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IHRvIHRoZSBzcGVjaWZpZWQg
cGF0aC4KLSAgICAgICAgUGF0aCBjYW4gYmUgYSBzdHJpbmcgb3IgYSBweS5wYXRoLmxvY2FsIG9i
amVjdC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX2N3ZCBpcyBOb25lOgotICAgICAg
ICAgICAgc2VsZi5fY3dkID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgaWYgaGFzYXR0cihwYXRoLCAi
Y2hkaXIiKToKLSAgICAgICAgICAgIHBhdGguY2hkaXIoKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgb3MuY2hkaXIocGF0aCkKLQotICAgIGRlZiB1bmRvKHNlbGYpOgotICAgICAgICAiIiIg
VW5kbyBwcmV2aW91cyBjaGFuZ2VzLiAgVGhpcyBjYWxsIGNvbnN1bWVzIHRoZQotICAgICAgICB1
bmRvIHN0YWNrLiBDYWxsaW5nIGl0IGEgc2Vjb25kIHRpbWUgaGFzIG5vIGVmZmVjdCB1bmxlc3MK
LSAgICAgICAgeW91IGRvIG1vcmUgbW9ua2V5cGF0Y2hpbmcgYWZ0ZXIgdGhlIHVuZG8gY2FsbC4K
LQotICAgICAgICBUaGVyZSBpcyBnZW5lcmFsbHkgbm8gbmVlZCB0byBjYWxsIGB1bmRvKClgLCBz
aW5jZSBpdCBpcwotICAgICAgICBjYWxsZWQgYXV0b21hdGljYWxseSBkdXJpbmcgdGVhci1kb3du
LgotCi0gICAgICAgIE5vdGUgdGhhdCB0aGUgc2FtZSBgbW9ua2V5cGF0Y2hgIGZpeHR1cmUgaXMg
dXNlZCBhY3Jvc3MgYQotICAgICAgICBzaW5nbGUgdGVzdCBmdW5jdGlvbiBpbnZvY2F0aW9uLiBJ
ZiBgbW9ua2V5cGF0Y2hgIGlzIHVzZWQgYm90aCBieQotICAgICAgICB0aGUgdGVzdCBmdW5jdGlv
biBpdHNlbGYgYW5kIG9uZSBvZiB0aGUgdGVzdCBmaXh0dXJlcywKLSAgICAgICAgY2FsbGluZyBg
dW5kbygpYCB3aWxsIHVuZG8gYWxsIG9mIHRoZSBjaGFuZ2VzIG1hZGUgaW4KLSAgICAgICAgYm90
aCBmdW5jdGlvbnMuCi0gICAgICAgICIiIgotICAgICAgICBmb3Igb2JqLCBuYW1lLCB2YWx1ZSBp
biByZXZlcnNlZChzZWxmLl9zZXRhdHRyKToKLSAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBu
b3RzZXQ6Ci0gICAgICAgICAgICAgICAgc2V0YXR0cihvYmosIG5hbWUsIHZhbHVlKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZWxhdHRyKG9iaiwgbmFtZSkKLSAgICAgICAg
c2VsZi5fc2V0YXR0cls6XSA9IFtdCi0gICAgICAgIGZvciBkaWN0aW9uYXJ5LCBuYW1lLCB2YWx1
ZSBpbiByZXZlcnNlZChzZWxmLl9zZXRpdGVtKToKLSAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5v
dHNldDoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGRlbCBkaWN0
aW9uYXJ5W25hbWVdCi0gICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAg
ICAgICAgICAgICBwYXNzICAjIHdhcyBhbHJlYWR5IGRlbGV0ZWQsIHNvIHdlIGhhdmUgdGhlIGRl
c2lyZWQgc3RhdGUKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGljdGlvbmFy
eVtuYW1lXSA9IHZhbHVlCi0gICAgICAgIHNlbGYuX3NldGl0ZW1bOl0gPSBbXQotICAgICAgICBp
ZiBzZWxmLl9zYXZlc3lzcGF0aCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHN5cy5wYXRoWzpd
ID0gc2VsZi5fc2F2ZXN5c3BhdGgKLSAgICAgICAgICAgIHNlbGYuX3NhdmVzeXNwYXRoID0gTm9u
ZQotCi0gICAgICAgIGlmIHNlbGYuX2N3ZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIG9zLmNo
ZGlyKHNlbGYuX2N3ZCkKLSAgICAgICAgICAgIHNlbGYuX2N3ZCA9IE5vbmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3Qvbm9kZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vZGVz
LnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZDNhZjJjZTY3Yzg5NThmOTUzMzUy
OTQ0NGViMmJmMmIxYjc3OTk4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvbm9kZXMucHkKKysrIC9kZXYvbnVsbApAQCAt
MSwzNyArMCwwIEBACi1TRVAgPSAiLyIKLQotCi1kZWYgX3NwbGl0bm9kZShub2RlaWQpOgotICAg
ICIiIlNwbGl0IGEgbm9kZWlkIGludG8gY29uc3RpdHVlbnQgJ3BhcnRzJy4KLQotICAgIE5vZGUg
SURzIGFyZSBzdHJpbmdzLCBhbmQgY2FuIGJlIHRoaW5ncyBsaWtlOgotICAgICAgICAnJwotICAg
ICAgICAndGVzdGluZy9jb2RlJwotICAgICAgICAndGVzdGluZy9jb2RlL3Rlc3RfZXhjaW5mby5w
eScKLSAgICAgICAgJ3Rlc3RpbmcvY29kZS90ZXN0X2V4Y2luZm8ucHk6OlRlc3RGb3JtYXR0ZWRF
eGNpbmZvOjooKScKLQotICAgIFJldHVybiB2YWx1ZXMgYXJlIGxpc3RzIGUuZy4KLSAgICAgICAg
W10KLSAgICAgICAgWyd0ZXN0aW5nJywgJ2NvZGUnXQotICAgICAgICBbJ3Rlc3RpbmcnLCAnY29k
ZScsICd0ZXN0X2V4Y2luZm8ucHknXQotICAgICAgICBbJ3Rlc3RpbmcnLCAnY29kZScsICd0ZXN0
X2V4Y2luZm8ucHknLCAnVGVzdEZvcm1hdHRlZEV4Y2luZm8nLCAnKCknXQotICAgICIiIgotICAg
IGlmIG5vZGVpZCA9PSAnJzoKLSAgICAgICAgIyBJZiB0aGVyZSBpcyBubyByb290IG5vZGUgYXQg
YWxsLCByZXR1cm4gYW4gZW1wdHkgbGlzdCBzbyB0aGUgY2FsbGVyJ3MgbG9naWMgY2FuIHJlbWFp
biBzYW5lCi0gICAgICAgIHJldHVybiBbXQotICAgIHBhcnRzID0gbm9kZWlkLnNwbGl0KFNFUCkK
LSAgICAjIFJlcGxhY2Ugc2luZ2xlIGxhc3QgZWxlbWVudCAndGVzdF9mb28ucHk6OkJhcjo6KCkn
IHdpdGggbXVsdGlwbGUgZWxlbWVudHMgJ3Rlc3RfZm9vLnB5JywgJ0JhcicsICcoKScKLSAgICBw
YXJ0c1stMTpdID0gcGFydHNbLTFdLnNwbGl0KCI6OiIpCi0gICAgcmV0dXJuIHBhcnRzCi0KLQot
ZGVmIGlzY2hpbGRub2RlKGJhc2VpZCwgbm9kZWlkKToKLSAgICAiIiJSZXR1cm4gVHJ1ZSBpZiB0
aGUgbm9kZWlkIGlzIGEgY2hpbGQgbm9kZSBvZiB0aGUgYmFzZWlkLgotCi0gICAgRS5nLiAnZm9v
L2Jhcjo6QmF6OjooKScgaXMgYSBjaGlsZCBvZiAnZm9vJywgJ2Zvby9iYXInIGFuZCAnZm9vL2Jh
cjo6QmF6JywgYnV0IG5vdCBvZiAnZm9vL2Jsb3JwJwotICAgICIiIgotICAgIGJhc2VfcGFydHMg
PSBfc3BsaXRub2RlKGJhc2VpZCkKLSAgICBub2RlX3BhcnRzID0gX3NwbGl0bm9kZShub2RlaWQp
Ci0gICAgaWYgbGVuKG5vZGVfcGFydHMpIDwgbGVuKGJhc2VfcGFydHMpOgotICAgICAgICByZXR1
cm4gRmFsc2UKLSAgICByZXR1cm4gbm9kZV9wYXJ0c1s6bGVuKGJhc2VfcGFydHMpXSA9PSBiYXNl
X3BhcnRzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vc2UucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9fcHl0ZXN0L25vc2UucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MTU0
MmVhZGYzNzdkMWQzYWRkZmFhZmVhNWQ2NGE4ODMyOThhMDMuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9ub3NlLnB5Cisr
KyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotIiIiIHJ1biB0ZXN0IHN1aXRlcyB3cml0dGVu
IGZvciBub3NlLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBk
aXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IHN5cwotCi1mcm9tIF9weXRlc3QgaW1w
b3J0IHVuaXR0ZXN0LCBydW5uZXIsIHB5dGhvbgotZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQg
aG9va2ltcGwKLQotCi1kZWYgZ2V0X3NraXBfZXhjZXB0aW9ucygpOgotICAgIHNraXBfY2xhc3Nl
cyA9IHNldCgpCi0gICAgZm9yIG1vZHVsZV9uYW1lIGluICgndW5pdHRlc3QnLCAndW5pdHRlc3Qy
JywgJ25vc2UnKToKLSAgICAgICAgbW9kID0gc3lzLm1vZHVsZXMuZ2V0KG1vZHVsZV9uYW1lKQot
ICAgICAgICBpZiBoYXNhdHRyKG1vZCwgJ1NraXBUZXN0Jyk6Ci0gICAgICAgICAgICBza2lwX2Ns
YXNzZXMuYWRkKG1vZC5Ta2lwVGVzdCkKLSAgICByZXR1cm4gdHVwbGUoc2tpcF9jbGFzc2VzKQot
Ci0KLWRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgotICAgIGlmIGNh
bGwuZXhjaW5mbyBhbmQgY2FsbC5leGNpbmZvLmVycmlzaW5zdGFuY2UoZ2V0X3NraXBfZXhjZXB0
aW9ucygpKToKLSAgICAgICAgIyBsZXQncyBzdWJzdGl0dXRlIHRoZSBleGNpbmZvIHdpdGggYSBw
eXRlc3Quc2tpcCBvbmUKLSAgICAgICAgY2FsbDIgPSBjYWxsLl9fY2xhc3NfXygKLSAgICAgICAg
ICAgIGxhbWJkYTogcnVubmVyLnNraXAoc3RyKGNhbGwuZXhjaW5mby52YWx1ZSkpLCBjYWxsLndo
ZW4pCi0gICAgICAgIGNhbGwuZXhjaW5mbyA9IGNhbGwyLmV4Y2luZm8KLQotCi1AaG9va2ltcGwo
dHJ5bGFzdD1UcnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgIGlmIGlz
X3BvdGVudGlhbF9ub3NldGVzdChpdGVtKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtLnBh
cmVudCwgcHl0aG9uLkdlbmVyYXRvcik6Ci0gICAgICAgICAgICBnZW4gPSBpdGVtLnBhcmVudAot
ICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoZ2VuLCAnX25vc2VnZW5zZXR1cCcpOgotICAgICAg
ICAgICAgICAgIGNhbGxfb3B0aW9uYWwoZ2VuLm9iaiwgJ3NldHVwJykKLSAgICAgICAgICAgICAg
ICBpZiBpc2luc3RhbmNlKGdlbi5wYXJlbnQsIHB5dGhvbi5JbnN0YW5jZSk6Ci0gICAgICAgICAg
ICAgICAgICAgIGNhbGxfb3B0aW9uYWwoZ2VuLnBhcmVudC5vYmosICdzZXR1cCcpCi0gICAgICAg
ICAgICAgICAgZ2VuLl9ub3NlZ2Vuc2V0dXAgPSBUcnVlCi0gICAgICAgIGlmIG5vdCBjYWxsX29w
dGlvbmFsKGl0ZW0ub2JqLCAnc2V0dXAnKToKLSAgICAgICAgICAgICMgY2FsbCBtb2R1bGUgbGV2
ZWwgc2V0dXAgaWYgdGhlcmUgaXMgbm8gb2JqZWN0IGxldmVsIG9uZQotICAgICAgICAgICAgY2Fs
bF9vcHRpb25hbChpdGVtLnBhcmVudC5vYmosICdzZXR1cCcpCi0gICAgICAgICMgWFhYIHRoaXMg
aW1wbGllcyB3ZSBvbmx5IGNhbGwgdGVhcmRvd24gd2hlbiBzZXR1cCB3b3JrZWQKLSAgICAgICAg
aXRlbS5zZXNzaW9uLl9zZXR1cHN0YXRlLmFkZGZpbmFsaXplcigobGFtYmRhOiB0ZWFyZG93bl9u
b3NlKGl0ZW0pKSwgaXRlbSkKLQotCi1kZWYgdGVhcmRvd25fbm9zZShpdGVtKToKLSAgICBpZiBp
c19wb3RlbnRpYWxfbm9zZXRlc3QoaXRlbSk6Ci0gICAgICAgIGlmIG5vdCBjYWxsX29wdGlvbmFs
KGl0ZW0ub2JqLCAndGVhcmRvd24nKToKLSAgICAgICAgICAgIGNhbGxfb3B0aW9uYWwoaXRlbS5w
YXJlbnQub2JqLCAndGVhcmRvd24nKQotICAgICAgICAjIGlmIGhhc2F0dHIoaXRlbS5wYXJlbnQs
ICdfbm9zZWdlbnNldHVwJyk6Ci0gICAgICAgICMgICAgI2NhbGxfb3B0aW9uYWwoaXRlbS5fbm9z
ZWdlbnNldHVwLCAndGVhcmRvd24nKQotICAgICAgICAjICAgIGRlbCBpdGVtLnBhcmVudC5fbm9z
ZWdlbnNldHVwCi0KLQotZGVmIHB5dGVzdF9tYWtlX2NvbGxlY3RfcmVwb3J0KGNvbGxlY3Rvcik6
Ci0gICAgaWYgaXNpbnN0YW5jZShjb2xsZWN0b3IsIHB5dGhvbi5HZW5lcmF0b3IpOgotICAgICAg
ICBjYWxsX29wdGlvbmFsKGNvbGxlY3Rvci5vYmosICdzZXR1cCcpCi0KLQotZGVmIGlzX3BvdGVu
dGlhbF9ub3NldGVzdChpdGVtKToKLSAgICAjIGV4dHJhIGNoZWNrIG5lZWRlZCBzaW5jZSB3ZSBk
byBub3QgZG8gbm9zZSBzdHlsZSBzZXR1cC90ZWFyZG93bgotICAgICMgb24gZGlyZWN0IHVuaXR0
ZXN0IHN0eWxlIGNsYXNzZXMKLSAgICByZXR1cm4gaXNpbnN0YW5jZShpdGVtLCBweXRob24uRnVu
Y3Rpb24pIGFuZCBcCi0gICAgICAgIG5vdCBpc2luc3RhbmNlKGl0ZW0sIHVuaXR0ZXN0LlRlc3RD
YXNlRnVuY3Rpb24pCi0KLQotZGVmIGNhbGxfb3B0aW9uYWwob2JqLCBuYW1lKToKLSAgICBtZXRo
b2QgPSBnZXRhdHRyKG9iaiwgbmFtZSwgTm9uZSkKLSAgICBpc2ZpeHR1cmUgPSBoYXNhdHRyKG1l
dGhvZCwgIl9weXRlc3RmaXh0dXJlZnVuY3Rpb24iKQotICAgIGlmIG1ldGhvZCBpcyBub3QgTm9u
ZSBhbmQgbm90IGlzZml4dHVyZSBhbmQgY2FsbGFibGUobWV0aG9kKToKLSAgICAgICAgIyBJZiB0
aGVyZSdzIGFueSBwcm9ibGVtcyBhbGxvdyB0aGUgZXhjZXB0aW9uIHRvIHJhaXNlIHJhdGhlciB0
aGFuCi0gICAgICAgICMgc2lsZW50bHkgaWdub3JpbmcgdGhlbQotICAgICAgICBtZXRob2QoKQot
ICAgICAgICByZXR1cm4gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9vdXRj
b21lcy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvb3V0Y29tZXMucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDdmMGMxOGZhNmMxYjQ4NzgzYTNhOWQzYTY0NWQzZTI0NGQ2NzNjMTQu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9vdXRjb21lcy5weQorKysgL2Rldi9udWxsCkBAIC0xLDE0NyArMCwwIEBACi0i
IiIKLWV4Y2VwdGlvbiBjbGFzc2VzIGFuZCBjb25zdGFudHMgaGFuZGxpbmcgdGVzdCBvdXRjb21l
cwotYXMgd2VsbCBhcyBmdW5jdGlvbnMgY3JlYXRpbmcgdGhlbQotIiIiCi1mcm9tIF9fZnV0dXJl
X18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi1pbXBv
cnQgcHkKLWltcG9ydCBzeXMKLQotCi1jbGFzcyBPdXRjb21lRXhjZXB0aW9uKEJhc2VFeGNlcHRp
b24pOgotICAgICIiIiBPdXRjb21lRXhjZXB0aW9uIGFuZCBpdHMgc3ViY2xhc3MgaW5zdGFuY2Vz
IGluZGljYXRlIGFuZAotICAgICAgICBjb250YWluIGluZm8gYWJvdXQgdGVzdCBhbmQgY29sbGVj
dGlvbiBvdXRjb21lcy4KLSAgICAiIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbXNnPU5vbmUs
IHB5dHJhY2U9VHJ1ZSk6Ci0gICAgICAgIEJhc2VFeGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNn
KQotICAgICAgICBzZWxmLm1zZyA9IG1zZwotICAgICAgICBzZWxmLnB5dHJhY2UgPSBweXRyYWNl
Ci0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYubXNnOgotICAgICAg
ICAgICAgdmFsID0gc2VsZi5tc2cKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsLCBieXRl
cyk6Ci0gICAgICAgICAgICAgICAgdmFsID0gcHkuX2J1aWx0aW4uX3RvdGV4dCh2YWwsIGVycm9y
cz0ncmVwbGFjZScpCi0gICAgICAgICAgICByZXR1cm4gdmFsCi0gICAgICAgIHJldHVybiAiPCVz
IGluc3RhbmNlPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sKQotICAgIF9fc3RyX18gPSBf
X3JlcHJfXwotCi0KLVRFU1RfT1VUQ09NRSA9IChPdXRjb21lRXhjZXB0aW9uLCBFeGNlcHRpb24p
Ci0KLQotY2xhc3MgU2tpcHBlZChPdXRjb21lRXhjZXB0aW9uKToKLSAgICAjIFhYWCBoYWNraXNo
OiBvbiAzayB3ZSBmYWtlIHRvIGxpdmUgaW4gdGhlIGJ1aWx0aW5zCi0gICAgIyBpbiBvcmRlciB0
byBoYXZlIFNraXBwZWQgZXhjZXB0aW9uIHByaW50aW5nIHNob3J0ZXIvbmljZXIKLSAgICBfX21v
ZHVsZV9fID0gJ2J1aWx0aW5zJwotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1zZz1Ob25lLCBw
eXRyYWNlPVRydWUsIGFsbG93X21vZHVsZV9sZXZlbD1GYWxzZSk6Ci0gICAgICAgIE91dGNvbWVF
eGNlcHRpb24uX19pbml0X18oc2VsZiwgbXNnPW1zZywgcHl0cmFjZT1weXRyYWNlKQotICAgICAg
ICBzZWxmLmFsbG93X21vZHVsZV9sZXZlbCA9IGFsbG93X21vZHVsZV9sZXZlbAotCi0KLWNsYXNz
IEZhaWxlZChPdXRjb21lRXhjZXB0aW9uKToKLSAgICAiIiIgcmFpc2VkIGZyb20gYW4gZXhwbGlj
aXQgY2FsbCB0byBweXRlc3QuZmFpbCgpICIiIgotICAgIF9fbW9kdWxlX18gPSAnYnVpbHRpbnMn
Ci0KLQotY2xhc3MgRXhpdChLZXlib2FyZEludGVycnVwdCk6Ci0gICAgIiIiIHJhaXNlZCBmb3Ig
aW1tZWRpYXRlIHByb2dyYW0gZXhpdHMgKG5vIHRyYWNlYmFja3Mvc3VtbWFyaWVzKSIiIgotICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtc2c9InVua25vd24gcmVhc29uIik6Ci0gICAgICAgIHNlbGYu
bXNnID0gbXNnCi0gICAgICAgIEtleWJvYXJkSW50ZXJydXB0Ll9faW5pdF9fKHNlbGYsIG1zZykK
LQotIyBleHBvc2VkIGhlbHBlciBtZXRob2RzCi0KLQotZGVmIGV4aXQobXNnKToKLSAgICAiIiIg
ZXhpdCB0ZXN0aW5nIHByb2Nlc3MgYXMgaWYgS2V5Ym9hcmRJbnRlcnJ1cHQgd2FzIHRyaWdnZXJl
ZC4gIiIiCi0gICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgcmFpc2UgRXhpdChtc2cp
Ci0KLQotZXhpdC5FeGNlcHRpb24gPSBFeGl0Ci0KLQotZGVmIHNraXAobXNnPSIiLCAqKmt3YXJn
cyk6Ci0gICAgIiIiIHNraXAgYW4gZXhlY3V0aW5nIHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gbWVzc2Fn
ZS4gIE5vdGU6IGl0J3MgdXN1YWxseQotICAgIGJldHRlciB0byB1c2UgdGhlIHB5dGVzdC5tYXJr
LnNraXBpZiBtYXJrZXIgdG8gZGVjbGFyZSBhIHRlc3QgdG8gYmUKLSAgICBza2lwcGVkIHVuZGVy
IGNlcnRhaW4gY29uZGl0aW9ucyBsaWtlIG1pc21hdGNoaW5nIHBsYXRmb3JtcyBvcgotICAgIGRl
cGVuZGVuY2llcy4gIFNlZSB0aGUgcHl0ZXN0X3NraXBwaW5nIHBsdWdpbiBmb3IgZGV0YWlscy4K
LQotICAgIDprd2FyZyBib29sIGFsbG93X21vZHVsZV9sZXZlbDogYWxsb3dzIHRoaXMgZnVuY3Rp
b24gdG8gYmUgY2FsbGVkIGF0Ci0gICAgICAgIG1vZHVsZSBsZXZlbCwgc2tpcHBpbmcgdGhlIHJl
c3Qgb2YgdGhlIG1vZHVsZS4gRGVmYXVsdCB0byBGYWxzZS4KLSAgICAiIiIKLSAgICBfX3RyYWNl
YmFja2hpZGVfXyA9IFRydWUKLSAgICBhbGxvd19tb2R1bGVfbGV2ZWwgPSBrd2FyZ3MucG9wKCdh
bGxvd19tb2R1bGVfbGV2ZWwnLCBGYWxzZSkKLSAgICBpZiBrd2FyZ3M6Ci0gICAgICAgIGtleXMg
PSBbayBmb3IgayBpbiBrd2FyZ3Mua2V5cygpXQotICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3Vu
ZXhwZWN0ZWQga2V5d29yZCBhcmd1bWVudHM6IHswfScuZm9ybWF0KGtleXMpKQotICAgIHJhaXNl
IFNraXBwZWQobXNnPW1zZywgYWxsb3dfbW9kdWxlX2xldmVsPWFsbG93X21vZHVsZV9sZXZlbCkK
LQotCi1za2lwLkV4Y2VwdGlvbiA9IFNraXBwZWQKLQotCi1kZWYgZmFpbChtc2c9IiIsIHB5dHJh
Y2U9VHJ1ZSk6Ci0gICAgIiIiIGV4cGxpY2l0bHkgZmFpbCBhbiBjdXJyZW50bHktZXhlY3V0aW5n
IHRlc3Qgd2l0aCB0aGUgZ2l2ZW4gTWVzc2FnZS4KLQotICAgIDphcmcgcHl0cmFjZTogaWYgZmFs
c2UgdGhlIG1zZyByZXByZXNlbnRzIHRoZSBmdWxsIGZhaWx1cmUgaW5mb3JtYXRpb24KLSAgICAg
ICAgICAgICAgICAgIGFuZCBubyBweXRob24gdHJhY2ViYWNrIHdpbGwgYmUgcmVwb3J0ZWQuCi0g
ICAgIiIiCi0gICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAgcmFpc2UgRmFpbGVkKG1z
Zz1tc2csIHB5dHJhY2U9cHl0cmFjZSkKLQotCi1mYWlsLkV4Y2VwdGlvbiA9IEZhaWxlZAotCi0K
LWNsYXNzIFhGYWlsZWQoZmFpbC5FeGNlcHRpb24pOgotICAgICIiIiByYWlzZWQgZnJvbSBhbiBl
eHBsaWNpdCBjYWxsIHRvIHB5dGVzdC54ZmFpbCgpICIiIgotCi0KLWRlZiB4ZmFpbChyZWFzb249
IiIpOgotICAgICIiIiB4ZmFpbCBhbiBleGVjdXRpbmcgdGVzdCBvciBzZXR1cCBmdW5jdGlvbnMg
d2l0aCB0aGUgZ2l2ZW4gcmVhc29uLiIiIgotICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQot
ICAgIHJhaXNlIFhGYWlsZWQocmVhc29uKQotCi0KLXhmYWlsLkV4Y2VwdGlvbiA9IFhGYWlsZWQK
LQotCi1kZWYgaW1wb3J0b3Jza2lwKG1vZG5hbWUsIG1pbnZlcnNpb249Tm9uZSk6Ci0gICAgIiIi
IHJldHVybiBpbXBvcnRlZCBtb2R1bGUgaWYgaXQgaGFzIGF0IGxlYXN0ICJtaW52ZXJzaW9uIiBh
cyBpdHMKLSAgICBfX3ZlcnNpb25fXyBhdHRyaWJ1dGUuICBJZiBubyBtaW52ZXJzaW9uIGlzIHNw
ZWNpZmllZCB0aGUgYSBza2lwCi0gICAgaXMgb25seSB0cmlnZ2VyZWQgaWYgdGhlIG1vZHVsZSBj
YW4gbm90IGJlIGltcG9ydGVkLgotICAgICIiIgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIF9f
dHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgIGNvbXBpbGUobW9kbmFtZSwgJycsICdldmFsJykg
ICMgdG8gY2F0Y2ggc3ludGF4ZXJyb3JzCi0gICAgc2hvdWxkX3NraXAgPSBGYWxzZQotCi0gICAg
d2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAjIG1ha2Ugc3VyZSB0byBp
Z25vcmUgSW1wb3J0V2FybmluZ3MgdGhhdCBtaWdodCBoYXBwZW4gYmVjYXVzZQotICAgICAgICAj
IG9mIGV4aXN0aW5nIGRpcmVjdG9yaWVzIHdpdGggdGhlIHNhbWUgbmFtZSB3ZSdyZSB0cnlpbmcg
dG8KLSAgICAgICAgIyBpbXBvcnQgYnV0IHdpdGhvdXQgYSBfX2luaXRfXy5weSBmaWxlCi0gICAg
ICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJykKLSAgICAgICAgdHJ5OgotICAgICAg
ICAgICAgX19pbXBvcnRfXyhtb2RuYW1lKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0g
ICAgICAgICAgICAjIERvIG5vdCByYWlzZSBjaGFpbmVkIGV4Y2VwdGlvbiBoZXJlKCMxNDg1KQot
ICAgICAgICAgICAgc2hvdWxkX3NraXAgPSBUcnVlCi0gICAgaWYgc2hvdWxkX3NraXA6Ci0gICAg
ICAgIHJhaXNlIFNraXBwZWQoImNvdWxkIG5vdCBpbXBvcnQgJXIiICUgKG1vZG5hbWUsKSwgYWxs
b3dfbW9kdWxlX2xldmVsPVRydWUpCi0gICAgbW9kID0gc3lzLm1vZHVsZXNbbW9kbmFtZV0KLSAg
ICBpZiBtaW52ZXJzaW9uIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBtb2QKLSAgICB2ZXJhdHRy
ID0gZ2V0YXR0cihtb2QsICdfX3ZlcnNpb25fXycsIE5vbmUpCi0gICAgaWYgbWludmVyc2lvbiBp
cyBub3QgTm9uZToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZnJvbSBwa2dfcmVzb3VyY2Vz
IGltcG9ydCBwYXJzZV92ZXJzaW9uIGFzIHB2Ci0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoK
LSAgICAgICAgICAgIHJhaXNlIFNraXBwZWQoIndlIGhhdmUgYSByZXF1aXJlZCB2ZXJzaW9uIGZv
ciAlciBidXQgY2FuIG5vdCBpbXBvcnQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAicGtn
X3Jlc291cmNlcyB0byBwYXJzZSB2ZXJzaW9uIHN0cmluZ3MuIiAlIChtb2RuYW1lLCksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgIGFsbG93X21vZHVsZV9sZXZlbD1UcnVlKQotICAgICAgICBp
ZiB2ZXJhdHRyIGlzIE5vbmUgb3IgcHYodmVyYXR0cikgPCBwdihtaW52ZXJzaW9uKToKLSAgICAg
ICAgICAgIHJhaXNlIFNraXBwZWQoIm1vZHVsZSAlciBoYXMgX192ZXJzaW9uX18gJXIsIHJlcXVp
cmVkIGlzOiAlciIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIG1vZG5hbWUsIHZlcmF0
dHIsIG1pbnZlcnNpb24pLCBhbGxvd19tb2R1bGVfbGV2ZWw9VHJ1ZSkKLSAgICByZXR1cm4gbW9k
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Bhc3RlYmluLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9wYXN0ZWJpbi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjU4
OGIwMjFiMTI0MjJmNTUwN2M5YmRmYTUxMWY2MWYzZDAyODFmOS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Bhc3RlYmlu
LnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLSIiIiBzdWJtaXQgZmFpbHVyZSBv
ciB0ZXN0IHNlc3Npb24gaW5mb3JtYXRpb24gdG8gYSBwYXN0ZWJpbiBzZXJ2aWNlLiAiIiIKLWZy
b20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVu
Y3Rpb24KLQotaW1wb3J0IHB5dGVzdAotaW1wb3J0IHNpeAotaW1wb3J0IHN5cwotaW1wb3J0IHRl
bXBmaWxlCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBh
cnNlci5nZXRncm91cCgidGVybWluYWwgcmVwb3J0aW5nIikKLSAgICBncm91cC5fYWRkb3B0aW9u
KCctLXBhc3RlYmluJywgbWV0YXZhcj0ibW9kZSIsCi0gICAgICAgICAgICAgICAgICAgICBhY3Rp
b249J3N0b3JlJywgZGVzdD0icGFzdGViaW4iLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAg
ICAgICAgICBjaG9pY2VzPVsnZmFpbGVkJywgJ2FsbCddLAotICAgICAgICAgICAgICAgICAgICAg
aGVscD0ic2VuZCBmYWlsZWR8YWxsIGluZm8gdG8gYnBhc3RlLm5ldCBwYXN0ZWJpbiBzZXJ2aWNl
LiIpCi0KLQotQHB5dGVzdC5ob29raW1wbCh0cnlsYXN0PVRydWUpCi1kZWYgcHl0ZXN0X2NvbmZp
Z3VyZShjb25maWcpOgotICAgIGlmIGNvbmZpZy5vcHRpb24ucGFzdGViaW4gPT0gImFsbCI6Ci0g
ICAgICAgIHRyID0gY29uZmlnLnBsdWdpbm1hbmFnZXIuZ2V0cGx1Z2luKCd0ZXJtaW5hbHJlcG9y
dGVyJykKLSAgICAgICAgIyBpZiBubyB0ZXJtaW5hbCByZXBvcnRlciBwbHVnaW4gaXMgcHJlc2Vu
dCwgbm90aGluZyB3ZSBjYW4gZG8gaGVyZTsKLSAgICAgICAgIyB0aGlzIGNhbiBoYXBwZW4gd2hl
biB0aGlzIGZ1bmN0aW9uIGV4ZWN1dGVzIGluIGEgc2xhdmUgbm9kZQotICAgICAgICAjIHdoZW4g
dXNpbmcgcHl0ZXN0LXhkaXN0LCBmb3IgZXhhbXBsZQotICAgICAgICBpZiB0ciBpcyBub3QgTm9u
ZToKLSAgICAgICAgICAgICMgcGFzdGViaW4gZmlsZSB3aWxsIGJlIHV0Zi04IGVuY29kZWQgYmlu
YXJ5IGZpbGUKLSAgICAgICAgICAgIGNvbmZpZy5fcGFzdGViaW5maWxlID0gdGVtcGZpbGUuVGVt
cG9yYXJ5RmlsZSgndytiJykKLSAgICAgICAgICAgIG9sZHdyaXRlID0gdHIuX3R3LndyaXRlCi0K
LSAgICAgICAgICAgIGRlZiB0ZWVfd3JpdGUocywgKiprd2FyZ3MpOgotICAgICAgICAgICAgICAg
IG9sZHdyaXRlKHMsICoqa3dhcmdzKQotICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uocywg
c2l4LnRleHRfdHlwZSk6Ci0gICAgICAgICAgICAgICAgICAgIHMgPSBzLmVuY29kZSgndXRmLTgn
KQotICAgICAgICAgICAgICAgIGNvbmZpZy5fcGFzdGViaW5maWxlLndyaXRlKHMpCi0KLSAgICAg
ICAgICAgIHRyLl90dy53cml0ZSA9IHRlZV93cml0ZQotCi0KLWRlZiBweXRlc3RfdW5jb25maWd1
cmUoY29uZmlnKToKLSAgICBpZiBoYXNhdHRyKGNvbmZpZywgJ19wYXN0ZWJpbmZpbGUnKToKLSAg
ICAgICAgIyBnZXQgdGVybWluYWwgY29udGVudHMgYW5kIGRlbGV0ZSBmaWxlCi0gICAgICAgIGNv
bmZpZy5fcGFzdGViaW5maWxlLnNlZWsoMCkKLSAgICAgICAgc2Vzc2lvbmxvZyA9IGNvbmZpZy5f
cGFzdGViaW5maWxlLnJlYWQoKQotICAgICAgICBjb25maWcuX3Bhc3RlYmluZmlsZS5jbG9zZSgp
Ci0gICAgICAgIGRlbCBjb25maWcuX3Bhc3RlYmluZmlsZQotICAgICAgICAjIHVuZG8gb3VyIHBh
dGNoaW5nIGluIHRoZSB0ZXJtaW5hbCByZXBvcnRlcgotICAgICAgICB0ciA9IGNvbmZpZy5wbHVn
aW5tYW5hZ2VyLmdldHBsdWdpbigndGVybWluYWxyZXBvcnRlcicpCi0gICAgICAgIGRlbCB0ci5f
dHcuX19kaWN0X19bJ3dyaXRlJ10KLSAgICAgICAgIyB3cml0ZSBzdW1tYXJ5Ci0gICAgICAgIHRy
LndyaXRlX3NlcCgiPSIsICJTZW5kaW5nIGluZm9ybWF0aW9uIHRvIFBhc3RlIFNlcnZpY2UiKQot
ICAgICAgICBwYXN0ZWJpbnVybCA9IGNyZWF0ZV9uZXdfcGFzdGUoc2Vzc2lvbmxvZykKLSAgICAg
ICAgdHIud3JpdGVfbGluZSgicGFzdGViaW4gc2Vzc2lvbi1sb2c6ICVzXG4iICUgcGFzdGViaW51
cmwpCi0KLQotZGVmIGNyZWF0ZV9uZXdfcGFzdGUoY29udGVudHMpOgotICAgICIiIgotICAgIENy
ZWF0ZXMgYSBuZXcgcGFzdGUgdXNpbmcgYnBhc3RlLm5ldCBzZXJ2aWNlLgotCi0gICAgOmNvbnRl
bnRzOiBwYXN0ZSBjb250ZW50cyBhcyB1dGYtOCBlbmNvZGVkIGJ5dGVzCi0gICAgOnJldHVybnM6
IHVybCB0byB0aGUgcGFzdGVkIGNvbnRlbnRzCi0gICAgIiIiCi0gICAgaW1wb3J0IHJlCi0gICAg
aWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCAwKToKLSAgICAgICAgZnJvbSB1cmxsaWIgaW1wb3J0
IHVybG9wZW4sIHVybGVuY29kZQotICAgIGVsc2U6Ci0gICAgICAgIGZyb20gdXJsbGliLnJlcXVl
c3QgaW1wb3J0IHVybG9wZW4KLSAgICAgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybGVu
Y29kZQotCi0gICAgcGFyYW1zID0gewotICAgICAgICAnY29kZSc6IGNvbnRlbnRzLAotICAgICAg
ICAnbGV4ZXInOiAncHl0aG9uMycgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9PSAzIGVsc2UgJ3B5
dGhvbicsCi0gICAgICAgICdleHBpcnknOiAnMXdlZWsnLAotICAgIH0KLSAgICB1cmwgPSAnaHR0
cHM6Ly9icGFzdGUubmV0JwotICAgIHJlc3BvbnNlID0gdXJsb3Blbih1cmwsIGRhdGE9dXJsZW5j
b2RlKHBhcmFtcykuZW5jb2RlKCdhc2NpaScpKS5yZWFkKCkKLSAgICBtID0gcmUuc2VhcmNoKHIn
aHJlZj0iL3Jhdy8oXHcrKSInLCByZXNwb25zZS5kZWNvZGUoJ3V0Zi04JykpCi0gICAgaWYgbToK
LSAgICAgICAgcmV0dXJuICclcy9zaG93LyVzJyAlICh1cmwsIG0uZ3JvdXAoMSkpCi0gICAgZWxz
ZToKLSAgICAgICAgcmV0dXJuICdiYWQgcmVzcG9uc2U6ICcgKyByZXNwb25zZQotCi0KLWRlZiBw
eXRlc3RfdGVybWluYWxfc3VtbWFyeSh0ZXJtaW5hbHJlcG9ydGVyKToKLSAgICBpbXBvcnQgX3B5
dGVzdC5jb25maWcKLSAgICBpZiB0ZXJtaW5hbHJlcG9ydGVyLmNvbmZpZy5vcHRpb24ucGFzdGVi
aW4gIT0gImZhaWxlZCI6Ci0gICAgICAgIHJldHVybgotICAgIHRyID0gdGVybWluYWxyZXBvcnRl
cgotICAgIGlmICdmYWlsZWQnIGluIHRyLnN0YXRzOgotICAgICAgICB0ZXJtaW5hbHJlcG9ydGVy
LndyaXRlX3NlcCgiPSIsICJTZW5kaW5nIGluZm9ybWF0aW9uIHRvIFBhc3RlIFNlcnZpY2UiKQot
ICAgICAgICBmb3IgcmVwIGluIHRlcm1pbmFscmVwb3J0ZXIuc3RhdHMuZ2V0KCdmYWlsZWQnKToK
LSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtc2cgPSByZXAubG9uZ3JlcHIucmVw
cnRyYWNlYmFjay5yZXByZW50cmllc1stMV0ucmVwcmZpbGVsb2MKLSAgICAgICAgICAgIGV4Y2Vw
dCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgICAgICBtc2cgPSB0ci5fZ2V0ZmFpbHVyZWhl
YWRsaW5lKHJlcCkKLSAgICAgICAgICAgIHR3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1p
bmFsX3dyaXRlcih0ZXJtaW5hbHJlcG9ydGVyLmNvbmZpZywgc3RyaW5naW89VHJ1ZSkKLSAgICAg
ICAgICAgIHJlcC50b3Rlcm1pbmFsKHR3KQotICAgICAgICAgICAgcyA9IHR3LnN0cmluZ2lvLmdl
dHZhbHVlKCkKLSAgICAgICAgICAgIGFzc2VydCBsZW4ocykKLSAgICAgICAgICAgIHBhc3RlYmlu
dXJsID0gY3JlYXRlX25ld19wYXN0ZShzKQotICAgICAgICAgICAgdHIud3JpdGVfbGluZSgiJXMg
LS0+ICVzIiAlIChtc2csIHBhc3RlYmludXJsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19w
eXRlc3QvcHl0ZXN0ZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3B5dGVzdGVyLnB5CmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmRkNTk5NGYxYmJmYjRkZDZiNDI5ZDg2ZWY3NDhj
YmQ1NzhkNTdhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvcHl0ZXN0ZXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTg3
ICswLDAgQEAKLSIiIiAoZGlzYWJsZWQgYnkgZGVmYXVsdCkgc3VwcG9ydCBmb3IgdGVzdGluZyBw
eXRlc3QgYW5kIHB5dGVzdCBwbHVnaW5zLiAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJz
b2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IGNvZGVjcwot
aW1wb3J0IGdjCi1pbXBvcnQgb3MKLWltcG9ydCBwbGF0Zm9ybQotaW1wb3J0IHJlCi1pbXBvcnQg
c3VicHJvY2VzcwotaW1wb3J0IHNpeAotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLWltcG9ydCB0
cmFjZWJhY2sKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAotCi1mcm9tIHdlYWtyZWYgaW1w
b3J0IFdlYWtLZXlEaWN0aW9uYXJ5Ci0KLWZyb20gX3B5dGVzdC5jYXB0dXJlIGltcG9ydCBNdWx0
aUNhcHR1cmUsIFN5c0NhcHR1cmUKLWZyb20gX3B5dGVzdC5fY29kZSBpbXBvcnQgU291cmNlCi1p
bXBvcnQgcHkKLWltcG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBTZXNzaW9u
LCBFWElUX09LCi1mcm9tIF9weXRlc3QuYXNzZXJ0aW9uLnJld3JpdGUgaW1wb3J0IEFzc2VydGlv
blJld3JpdGluZ0hvb2sKLQotCi1QWVRFU1RfRlVMTFBBVEggPSBvcy5wYXRoLmFic3BhdGgocHl0
ZXN0Ll9fZmlsZV9fLnJzdHJpcCgib2MiKSkucmVwbGFjZSgiJHB5LmNsYXNzIiwgIi5weSIpCi0K
LQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICAjIGdyb3VwID0gcGFyc2VyLmdl
dGdyb3VwKCJweXRlc3RlciIsICJweXRlc3RlciAoc2VsZi10ZXN0cykgb3B0aW9ucyIpCi0gICAg
cGFyc2VyLmFkZG9wdGlvbignLS1sc29mJywKLSAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsIGRlc3Q9Imxzb2YiLCBkZWZhdWx0PUZhbHNlLAotICAgICAgICAgICAgICAg
ICAgICAgaGVscD0oInJ1biBGRCBjaGVja3MgaWYgbHNvZiBpcyBhdmFpbGFibGUiKSkKLQotICAg
IHBhcnNlci5hZGRvcHRpb24oJy0tcnVucHl0ZXN0JywgZGVmYXVsdD0iaW5wcm9jZXNzIiwgZGVz
dD0icnVucHl0ZXN0IiwKLSAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCJpbnByb2Nlc3Mi
LCAic3VicHJvY2VzcyIsICksCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSgicnVuIHB5dGVz
dCBzdWIgcnVucyBpbiB0ZXN0cyB1c2luZyBhbiAnaW5wcm9jZXNzJyAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAib3IgJ3N1YnByb2Nlc3MnIChweXRob24gLW0gbWFpbikgbWV0aG9kIikp
Ci0KLQotZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICBpZiBjb25maWcuZ2V0dmFs
dWUoImxzb2YiKToKLSAgICAgICAgY2hlY2tlciA9IExzb2ZGZExlYWtDaGVja2VyKCkKLSAgICAg
ICAgaWYgY2hlY2tlci5tYXRjaGluZ19wbGF0Zm9ybSgpOgotICAgICAgICAgICAgY29uZmlnLnBs
dWdpbm1hbmFnZXIucmVnaXN0ZXIoY2hlY2tlcikKLQotCi1jbGFzcyBMc29mRmRMZWFrQ2hlY2tl
cihvYmplY3QpOgotICAgIGRlZiBnZXRfb3Blbl9maWxlcyhzZWxmKToKLSAgICAgICAgb3V0ID0g
c2VsZi5fZXhlY19sc29mKCkKLSAgICAgICAgb3Blbl9maWxlcyA9IHNlbGYuX3BhcnNlX2xzb2Zf
b3V0cHV0KG91dCkKLSAgICAgICAgcmV0dXJuIG9wZW5fZmlsZXMKLQotICAgIGRlZiBfZXhlY19s
c29mKHNlbGYpOgotICAgICAgICBwaWQgPSBvcy5nZXRwaWQoKQotICAgICAgICByZXR1cm4gcHku
cHJvY2Vzcy5jbWRleGVjKCJsc29mIC1GZm4wIC1wICVkIiAlIHBpZCkKLQotICAgIGRlZiBfcGFy
c2VfbHNvZl9vdXRwdXQoc2VsZiwgb3V0KToKLSAgICAgICAgZGVmIGlzb3BlbihsaW5lKToKLSAg
ICAgICAgICAgIHJldHVybiBsaW5lLnN0YXJ0c3dpdGgoJ2YnKSBhbmQgKCJkZWxldGVkIiBub3Qg
aW4gbGluZSBhbmQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdtZW0nIG5vdCBpbiBsaW5lIGFuZCAidHh0IiBub3QgaW4gbGluZSBhbmQgJ2N3ZCcgbm90IGlu
IGxpbmUpCi0KLSAgICAgICAgb3Blbl9maWxlcyA9IFtdCi0KLSAgICAgICAgZm9yIGxpbmUgaW4g
b3V0LnNwbGl0KCJcbiIpOgotICAgICAgICAgICAgaWYgaXNvcGVuKGxpbmUpOgotICAgICAgICAg
ICAgICAgIGZpZWxkcyA9IGxpbmUuc3BsaXQoJ1wwJykKLSAgICAgICAgICAgICAgICBmZCA9IGZp
ZWxkc1swXVsxOl0KLSAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZpZWxkc1sxXVsxOl0KLSAg
ICAgICAgICAgICAgICBpZiBmaWxlbmFtZS5zdGFydHN3aXRoKCcvJyk6Ci0gICAgICAgICAgICAg
ICAgICAgIG9wZW5fZmlsZXMuYXBwZW5kKChmZCwgZmlsZW5hbWUpKQotCi0gICAgICAgIHJldHVy
biBvcGVuX2ZpbGVzCi0KLSAgICBkZWYgbWF0Y2hpbmdfcGxhdGZvcm0oc2VsZik6Ci0gICAgICAg
IHRyeToKLSAgICAgICAgICAgIHB5LnByb2Nlc3MuY21kZXhlYygibHNvZiAtdiIpCi0gICAgICAg
IGV4Y2VwdCAocHkucHJvY2Vzcy5jbWRleGVjLkVycm9yLCBVbmljb2RlRGVjb2RlRXJyb3IpOgot
ICAgICAgICAgICAgIyBjbWRleGVjIG1heSByYWlzZSBVbmljb2RlRGVjb2RlRXJyb3Igb24gV2lu
ZG93cyBzeXN0ZW1zCi0gICAgICAgICAgICAjIHdpdGggbG9jYWxlIG90aGVyIHRoYW4gZW5nbGlz
aDoKLSAgICAgICAgICAgICMgaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5dGVzdC1kZXYvcHkvaXNz
dWVzLzY2Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHJldHVybiBUcnVlCi0KLSAgICBAcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUs
IHRyeWZpcnN0PVRydWUpCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKHNlbGYsIGl0
ZW0pOgotICAgICAgICBsaW5lczEgPSBzZWxmLmdldF9vcGVuX2ZpbGVzKCkKLSAgICAgICAgeWll
bGQKLSAgICAgICAgaWYgaGFzYXR0cihzeXMsICJweXB5X3ZlcnNpb25faW5mbyIpOgotICAgICAg
ICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgIGxpbmVzMiA9IHNlbGYuZ2V0X29wZW5fZmlsZXMo
KQotCi0gICAgICAgIG5ld19mZHMgPSBzZXQoW3RbMF0gZm9yIHQgaW4gbGluZXMyXSkgLSBzZXQo
W3RbMF0gZm9yIHQgaW4gbGluZXMxXSkKLSAgICAgICAgbGVha2VkX2ZpbGVzID0gW3QgZm9yIHQg
aW4gbGluZXMyIGlmIHRbMF0gaW4gbmV3X2Zkc10KLSAgICAgICAgaWYgbGVha2VkX2ZpbGVzOgot
ICAgICAgICAgICAgZXJyb3IgPSBbXQotICAgICAgICAgICAgZXJyb3IuYXBwZW5kKCIqKioqKiAl
cyBGRCBsZWFrYWdlIGRldGVjdGVkIiAlIGxlbihsZWFrZWRfZmlsZXMpKQotICAgICAgICAgICAg
ZXJyb3IuZXh0ZW5kKFtzdHIoZikgZm9yIGYgaW4gbGVha2VkX2ZpbGVzXSkKLSAgICAgICAgICAg
IGVycm9yLmFwcGVuZCgiKioqIEJlZm9yZToiKQotICAgICAgICAgICAgZXJyb3IuZXh0ZW5kKFtz
dHIoZikgZm9yIGYgaW4gbGluZXMxXSkKLSAgICAgICAgICAgIGVycm9yLmFwcGVuZCgiKioqIEFm
dGVyOiIpCi0gICAgICAgICAgICBlcnJvci5leHRlbmQoW3N0cihmKSBmb3IgZiBpbiBsaW5lczJd
KQotICAgICAgICAgICAgZXJyb3IuYXBwZW5kKGVycm9yWzBdKQotICAgICAgICAgICAgZXJyb3Iu
YXBwZW5kKCIqKiogZnVuY3Rpb24gJXM6JXM6ICVzICIgJSBpdGVtLmxvY2F0aW9uKQotICAgICAg
ICAgICAgZXJyb3IuYXBwZW5kKCJTZWUgaXNzdWUgIzIzNjYiKQotICAgICAgICAgICAgaXRlbS53
YXJuKCcnLCAiXG4iLmpvaW4oZXJyb3IpKQotCi0KLSMgWFhYIGNvcGllZCBmcm9tIGV4ZWNuZXQn
cyBjb25mdGVzdC5weSAtIG5lZWRzIHRvIGJlIG1lcmdlZAotd2lucHltYXAgPSB7Ci0gICAgJ3B5
dGhvbjIuNyc6IHInQzpcUHl0aG9uMjdccHl0aG9uLmV4ZScsCi0gICAgJ3B5dGhvbjMuNCc6IHIn
QzpcUHl0aG9uMzRccHl0aG9uLmV4ZScsCi0gICAgJ3B5dGhvbjMuNSc6IHInQzpcUHl0aG9uMzVc
cHl0aG9uLmV4ZScsCi0gICAgJ3B5dGhvbjMuNic6IHInQzpcUHl0aG9uMzZccHl0aG9uLmV4ZScs
Ci19Ci0KLQotZGVmIGdldGV4ZWN1dGFibGUobmFtZSwgY2FjaGU9e30pOgotICAgIHRyeToKLSAg
ICAgICAgcmV0dXJuIGNhY2hlW25hbWVdCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBl
eGVjdXRhYmxlID0gcHkucGF0aC5sb2NhbC5zeXNmaW5kKG5hbWUpCi0gICAgICAgIGlmIGV4ZWN1
dGFibGU6Ci0gICAgICAgICAgICBpbXBvcnQgc3VicHJvY2VzcwotICAgICAgICAgICAgcG9wZW4g
PSBzdWJwcm9jZXNzLlBvcGVuKFtzdHIoZXhlY3V0YWJsZSksICItLXZlcnNpb24iXSwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwg
c3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIG91dCwgZXJyID0gcG9wZW4uY29t
bXVuaWNhdGUoKQotICAgICAgICAgICAgaWYgbmFtZSA9PSAianl0aG9uIjoKLSAgICAgICAgICAg
ICAgICBpZiBub3QgZXJyIG9yICIyLjUiIG5vdCBpbiBlcnI6Ci0gICAgICAgICAgICAgICAgICAg
IGV4ZWN1dGFibGUgPSBOb25lCi0gICAgICAgICAgICAgICAgaWYgIjIuNS4yIiBpbiBlcnI6Ci0g
ICAgICAgICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBOb25lICAjIGh0dHA6Ly9idWdzLmp5dGhv
bi5vcmcvaXNzdWUxNzkwCi0gICAgICAgICAgICBlbGlmIHBvcGVuLnJldHVybmNvZGUgIT0gMDoK
LSAgICAgICAgICAgICAgICAjIEhhbmRsZSBweWVudidzIDEyNy4KLSAgICAgICAgICAgICAgICBl
eGVjdXRhYmxlID0gTm9uZQotICAgICAgICBjYWNoZVtuYW1lXSA9IGV4ZWN1dGFibGUKLSAgICAg
ICAgcmV0dXJuIGV4ZWN1dGFibGUKLQotCi1AcHl0ZXN0LmZpeHR1cmUocGFyYW1zPVsncHl0aG9u
Mi43JywgJ3B5dGhvbjMuNCcsICdweXB5JywgJ3B5cHkzJ10pCi1kZWYgYW55cHl0aG9uKHJlcXVl
c3QpOgotICAgIG5hbWUgPSByZXF1ZXN0LnBhcmFtCi0gICAgZXhlY3V0YWJsZSA9IGdldGV4ZWN1
dGFibGUobmFtZSkKLSAgICBpZiBleGVjdXRhYmxlIGlzIE5vbmU6Ci0gICAgICAgIGlmIHN5cy5w
bGF0Zm9ybSA9PSAid2luMzIiOgotICAgICAgICAgICAgZXhlY3V0YWJsZSA9IHdpbnB5bWFwLmdl
dChuYW1lLCBOb25lKQotICAgICAgICAgICAgaWYgZXhlY3V0YWJsZToKLSAgICAgICAgICAgICAg
ICBleGVjdXRhYmxlID0gcHkucGF0aC5sb2NhbChleGVjdXRhYmxlKQotICAgICAgICAgICAgICAg
IGlmIGV4ZWN1dGFibGUuY2hlY2soKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4ZWN1
dGFibGUKLSAgICAgICAgcHl0ZXN0LnNraXAoIm5vIHN1aXRhYmxlICVzIGZvdW5kIiAlIChuYW1l
LCkpCi0gICAgcmV0dXJuIGV4ZWN1dGFibGUKLQotIyB1c2VkIGF0IGxlYXN0IGJ5IHB5dGVzdC14
ZGlzdCBwbHVnaW4KLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRlZiBfcHl0ZXN0KHJlcXVlc3QpOgot
ICAgICIiIiBSZXR1cm4gYSBoZWxwZXIgd2hpY2ggb2ZmZXJzIGEgZ2V0aG9va3JlY29yZGVyKGhv
b2spCi0gICAgbWV0aG9kIHdoaWNoIHJldHVybnMgYSBIb29rUmVjb3JkZXIgaW5zdGFuY2Ugd2hp
Y2ggaGVscHMKLSAgICB0byBtYWtlIGFzc2VydGlvbnMgYWJvdXQgY2FsbGVkIGhvb2tzLgotICAg
ICIiIgotICAgIHJldHVybiBQeXRlc3RBcmcocmVxdWVzdCkKLQotCi1jbGFzcyBQeXRlc3RBcmc6
Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHJlcXVlc3QpOgotICAgICAgICBzZWxmLnJlcXVlc3Qg
PSByZXF1ZXN0Ci0KLSAgICBkZWYgZ2V0aG9va3JlY29yZGVyKHNlbGYsIGhvb2spOgotICAgICAg
ICBob29rcmVjb3JkZXIgPSBIb29rUmVjb3JkZXIoaG9vay5fcG0pCi0gICAgICAgIHNlbGYucmVx
dWVzdC5hZGRmaW5hbGl6ZXIoaG9va3JlY29yZGVyLmZpbmlzaF9yZWNvcmRpbmcpCi0gICAgICAg
IHJldHVybiBob29rcmVjb3JkZXIKLQotCi1kZWYgZ2V0X3B1YmxpY19uYW1lcyh2YWx1ZXMpOgot
ICAgICIiIk9ubHkgcmV0dXJuIG5hbWVzIGZyb20gaXRlcmF0b3IgdmFsdWVzIHdpdGhvdXQgYSBs
ZWFkaW5nIHVuZGVyc2NvcmUuIiIiCi0gICAgcmV0dXJuIFt4IGZvciB4IGluIHZhbHVlcyBpZiB4
WzBdICE9ICJfIl0KLQotCi1jbGFzcyBQYXJzZWRDYWxsOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lLCBrd2FyZ3MpOgotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShrd2FyZ3MpCi0g
ICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAg
ICAgIGQgPSBzZWxmLl9fZGljdF9fLmNvcHkoKQotICAgICAgICBkZWwgZFsnX25hbWUnXQotICAg
ICAgICByZXR1cm4gIjxQYXJzZWRDYWxsICVyKCoqJXIpPiIgJSAoc2VsZi5fbmFtZSwgZCkKLQot
Ci1jbGFzcyBIb29rUmVjb3JkZXI6Ci0gICAgIiIiUmVjb3JkIGFsbCBob29rcyBjYWxsZWQgaW4g
YSBwbHVnaW4gbWFuYWdlci4KLQotICAgIFRoaXMgd3JhcHMgYWxsIHRoZSBob29rIGNhbGxzIGlu
IHRoZSBwbHVnaW4gbWFuYWdlciwgcmVjb3JkaW5nCi0gICAgZWFjaCBjYWxsIGJlZm9yZSBwcm9w
YWdhdGluZyB0aGUgbm9ybWFsIGNhbGxzLgotCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgcGx1Z2lubWFuYWdlcik6Ci0gICAgICAgIHNlbGYuX3BsdWdpbm1hbmFnZXIgPSBwbHVn
aW5tYW5hZ2VyCi0gICAgICAgIHNlbGYuY2FsbHMgPSBbXQotCi0gICAgICAgIGRlZiBiZWZvcmUo
aG9va19uYW1lLCBob29rX2ltcGxzLCBrd2FyZ3MpOgotICAgICAgICAgICAgc2VsZi5jYWxscy5h
cHBlbmQoUGFyc2VkQ2FsbChob29rX25hbWUsIGt3YXJncykpCi0KLSAgICAgICAgZGVmIGFmdGVy
KG91dGNvbWUsIGhvb2tfbmFtZSwgaG9va19pbXBscywga3dhcmdzKToKLSAgICAgICAgICAgIHBh
c3MKLQotICAgICAgICBzZWxmLl91bmRvX3dyYXBwaW5nID0gcGx1Z2lubWFuYWdlci5hZGRfaG9v
a2NhbGxfbW9uaXRvcmluZyhiZWZvcmUsIGFmdGVyKQotCi0gICAgZGVmIGZpbmlzaF9yZWNvcmRp
bmcoc2VsZik6Ci0gICAgICAgIHNlbGYuX3VuZG9fd3JhcHBpbmcoKQotCi0gICAgZGVmIGdldGNh
bGxzKHNlbGYsIG5hbWVzKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgc3RyKToKLSAg
ICAgICAgICAgIG5hbWVzID0gbmFtZXMuc3BsaXQoKQotICAgICAgICByZXR1cm4gW2NhbGwgZm9y
IGNhbGwgaW4gc2VsZi5jYWxscyBpZiBjYWxsLl9uYW1lIGluIG5hbWVzXQotCi0gICAgZGVmIGFz
c2VydF9jb250YWlucyhzZWxmLCBlbnRyaWVzKToKLSAgICAgICAgX190cmFjZWJhY2toaWRlX18g
PSBUcnVlCi0gICAgICAgIGkgPSAwCi0gICAgICAgIGVudHJpZXMgPSBsaXN0KGVudHJpZXMpCi0g
ICAgICAgIGJhY2tsb2NhbHMgPSBzeXMuX2dldGZyYW1lKDEpLmZfbG9jYWxzCi0gICAgICAgIHdo
aWxlIGVudHJpZXM6Ci0gICAgICAgICAgICBuYW1lLCBjaGVjayA9IGVudHJpZXMucG9wKDApCi0g
ICAgICAgICAgICBmb3IgaW5kLCBjYWxsIGluIGVudW1lcmF0ZShzZWxmLmNhbGxzW2k6XSk6Ci0g
ICAgICAgICAgICAgICAgaWYgY2FsbC5fbmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgICAg
ICBwcmludCgiTkFNRU1BVENIIiwgbmFtZSwgY2FsbCkKLSAgICAgICAgICAgICAgICAgICAgaWYg
ZXZhbChjaGVjaywgYmFja2xvY2FscywgY2FsbC5fX2RpY3RfXyk6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBwcmludCgiQ0hFQ0tFUk1BVENIIiwgcmVwcihjaGVjayksICItPiIsIGNhbGwpCi0g
ICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCgi
Tk9DSEVDS0VSTUFUQ0giLCByZXByKGNoZWNrKSwgIi0iLCBjYWxsKQotICAgICAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgaSArPSBpbmQgKyAxCi0gICAg
ICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgcHJpbnQoIk5PTkFNRU1BVENI
IiwgbmFtZSwgIndpdGgiLCBjYWxsKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAg
ICBweXRlc3QuZmFpbCgiY291bGQgbm90IGZpbmQgJXIgY2hlY2sgJXIiICUgKG5hbWUsIGNoZWNr
KSkKLQotICAgIGRlZiBwb3BjYWxsKHNlbGYsIG5hbWUpOgotICAgICAgICBfX3RyYWNlYmFja2hp
ZGVfXyA9IFRydWUKLSAgICAgICAgZm9yIGksIGNhbGwgaW4gZW51bWVyYXRlKHNlbGYuY2FsbHMp
OgotICAgICAgICAgICAgaWYgY2FsbC5fbmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIGRl
bCBzZWxmLmNhbGxzW2ldCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNhbGwKLSAgICAgICAgbGlu
ZXMgPSBbImNvdWxkIG5vdCBmaW5kIGNhbGwgJXIsIGluOiIgJSAobmFtZSwpXQotICAgICAgICBs
aW5lcy5leHRlbmQoWyIgICVzIiAlIHN0cih4KSBmb3IgeCBpbiBzZWxmLmNhbGxzXSkKLSAgICAg
ICAgcHl0ZXN0LmZhaWwoIlxuIi5qb2luKGxpbmVzKSkKLQotICAgIGRlZiBnZXRjYWxsKHNlbGYs
IG5hbWUpOgotICAgICAgICB2YWx1ZXMgPSBzZWxmLmdldGNhbGxzKG5hbWUpCi0gICAgICAgIGFz
c2VydCBsZW4odmFsdWVzKSA9PSAxLCAobmFtZSwgdmFsdWVzKQotICAgICAgICByZXR1cm4gdmFs
dWVzWzBdCi0KLSAgICAjIGZ1bmN0aW9uYWxpdHkgZm9yIHRlc3QgcmVwb3J0cwotCi0gICAgZGVm
IGdldHJlcG9ydHMoc2VsZiwKLSAgICAgICAgICAgICAgICAgICBuYW1lcz0icHl0ZXN0X3J1bnRl
c3RfbG9ncmVwb3J0IHB5dGVzdF9jb2xsZWN0cmVwb3J0Iik6Ci0gICAgICAgIHJldHVybiBbeC5y
ZXBvcnQgZm9yIHggaW4gc2VsZi5nZXRjYWxscyhuYW1lcyldCi0KLSAgICBkZWYgbWF0Y2hyZXBv
cnQoc2VsZiwgaW5hbWVwYXJ0PSIiLAotICAgICAgICAgICAgICAgICAgICBuYW1lcz0icHl0ZXN0
X3J1bnRlc3RfbG9ncmVwb3J0IHB5dGVzdF9jb2xsZWN0cmVwb3J0Iiwgd2hlbj1Ob25lKToKLSAg
ICAgICAgIiIiIHJldHVybiBhIHRlc3RyZXBvcnQgd2hvc2UgZG90dGVkIGltcG9ydCBwYXRoIG1h
dGNoZXMgIiIiCi0gICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIGZvciByZXAgaW4gc2VsZi5n
ZXRyZXBvcnRzKG5hbWVzPW5hbWVzKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAg
ICBpZiBub3Qgd2hlbiBhbmQgcmVwLndoZW4gIT0gImNhbGwiIGFuZCByZXAucGFzc2VkOgotICAg
ICAgICAgICAgICAgICAgICAjIHNldHVwL3RlYXJkb3duIHBhc3NpbmcgcmVwb3J0cyAtIGxldCdz
IGlnbm9yZSB0aG9zZQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAg
ZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAg
IGlmIHdoZW4gYW5kIGdldGF0dHIocmVwLCAnd2hlbicsIE5vbmUpICE9IHdoZW46Ci0gICAgICAg
ICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIGlmIG5vdCBpbmFtZXBhcnQgb3IgaW5hbWVw
YXJ0IGluIHJlcC5ub2RlaWQuc3BsaXQoIjo6Iik6Ci0gICAgICAgICAgICAgICAgdmFsdWVzLmFw
cGVuZChyZXApCi0gICAgICAgIGlmIG5vdCB2YWx1ZXM6Ci0gICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKCJjb3VsZCBub3QgZmluZCB0ZXN0IHJlcG9ydCBtYXRjaGluZyAlcjogIgotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAibm8gdGVzdCByZXBvcnRzIGF0IGFsbCEiICUgKGluYW1l
cGFydCwpKQotICAgICAgICBpZiBsZW4odmFsdWVzKSA+IDE6Ci0gICAgICAgICAgICByYWlzZSBW
YWx1ZUVycm9yKAotICAgICAgICAgICAgICAgICJmb3VuZCAyIG9yIG1vcmUgdGVzdHJlcG9ydHMg
bWF0Y2hpbmcgJXI6ICVzIiAlIChpbmFtZXBhcnQsIHZhbHVlcykpCi0gICAgICAgIHJldHVybiB2
YWx1ZXNbMF0KLQotICAgIGRlZiBnZXRmYWlsdXJlcyhzZWxmLAotICAgICAgICAgICAgICAgICAg
ICBuYW1lcz0ncHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0IHB5dGVzdF9jb2xsZWN0cmVwb3J0Jyk6
Ci0gICAgICAgIHJldHVybiBbcmVwIGZvciByZXAgaW4gc2VsZi5nZXRyZXBvcnRzKG5hbWVzKSBp
ZiByZXAuZmFpbGVkXQotCi0gICAgZGVmIGdldGZhaWxlZGNvbGxlY3Rpb25zKHNlbGYpOgotICAg
ICAgICByZXR1cm4gc2VsZi5nZXRmYWlsdXJlcygncHl0ZXN0X2NvbGxlY3RyZXBvcnQnKQotCi0g
ICAgZGVmIGxpc3RvdXRjb21lcyhzZWxmKToKLSAgICAgICAgcGFzc2VkID0gW10KLSAgICAgICAg
c2tpcHBlZCA9IFtdCi0gICAgICAgIGZhaWxlZCA9IFtdCi0gICAgICAgIGZvciByZXAgaW4gc2Vs
Zi5nZXRyZXBvcnRzKAotICAgICAgICAgICAgICAgICJweXRlc3RfY29sbGVjdHJlcG9ydCBweXRl
c3RfcnVudGVzdF9sb2dyZXBvcnQiKToKLSAgICAgICAgICAgIGlmIHJlcC5wYXNzZWQ6Ci0gICAg
ICAgICAgICAgICAgaWYgZ2V0YXR0cihyZXAsICJ3aGVuIiwgTm9uZSkgPT0gImNhbGwiOgotICAg
ICAgICAgICAgICAgICAgICBwYXNzZWQuYXBwZW5kKHJlcCkKLSAgICAgICAgICAgIGVsaWYgcmVw
LnNraXBwZWQ6Ci0gICAgICAgICAgICAgICAgc2tpcHBlZC5hcHBlbmQocmVwKQotICAgICAgICAg
ICAgZWxpZiByZXAuZmFpbGVkOgotICAgICAgICAgICAgICAgIGZhaWxlZC5hcHBlbmQocmVwKQot
ICAgICAgICByZXR1cm4gcGFzc2VkLCBza2lwcGVkLCBmYWlsZWQKLQotICAgIGRlZiBjb3VudG91
dGNvbWVzKHNlbGYpOgotICAgICAgICByZXR1cm4gW2xlbih4KSBmb3IgeCBpbiBzZWxmLmxpc3Rv
dXRjb21lcygpXQotCi0gICAgZGVmIGFzc2VydG91dGNvbWUoc2VsZiwgcGFzc2VkPTAsIHNraXBw
ZWQ9MCwgZmFpbGVkPTApOgotICAgICAgICByZWFscGFzc2VkLCByZWFsc2tpcHBlZCwgcmVhbGZh
aWxlZCA9IHNlbGYubGlzdG91dGNvbWVzKCkKLSAgICAgICAgYXNzZXJ0IHBhc3NlZCA9PSBsZW4o
cmVhbHBhc3NlZCkKLSAgICAgICAgYXNzZXJ0IHNraXBwZWQgPT0gbGVuKHJlYWxza2lwcGVkKQot
ICAgICAgICBhc3NlcnQgZmFpbGVkID09IGxlbihyZWFsZmFpbGVkKQotCi0gICAgZGVmIGNsZWFy
KHNlbGYpOgotICAgICAgICBzZWxmLmNhbGxzWzpdID0gW10KLQotCi1AcHl0ZXN0LmZpeHR1cmUK
LWRlZiBsaW5lY29tcChyZXF1ZXN0KToKLSAgICByZXR1cm4gTGluZUNvbXAoKQotCi0KLUBweXRl
c3QuZml4dHVyZShuYW1lPSdMaW5lTWF0Y2hlcicpCi1kZWYgTGluZU1hdGNoZXJfZml4dHVyZShy
ZXF1ZXN0KToKLSAgICByZXR1cm4gTGluZU1hdGNoZXIKLQotCi1AcHl0ZXN0LmZpeHR1cmUKLWRl
ZiB0ZXN0ZGlyKHJlcXVlc3QsIHRtcGRpcl9mYWN0b3J5KToKLSAgICByZXR1cm4gVGVzdGRpcihy
ZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSkKLQotCi1yZXhfb3V0Y29tZSA9IHJlLmNvbXBpbGUociIo
XGQrKSAoW1x3LV0rKSIpCi0KLQotY2xhc3MgUnVuUmVzdWx0OgotICAgICIiIlRoZSByZXN1bHQg
b2YgcnVubmluZyBhIGNvbW1hbmQuCi0KLSAgICBBdHRyaWJ1dGVzOgotCi0gICAgOnJldDogVGhl
IHJldHVybiB2YWx1ZS4KLSAgICA6b3V0bGluZXM6IExpc3Qgb2YgbGluZXMgY2FwdHVyZWQgZnJv
bSBzdGRvdXQuCi0gICAgOmVycmxpbmVzOiBMaXN0IG9mIGxpbmVzIGNhcHR1cmVzIGZyb20gc3Rk
ZXJyLgotICAgIDpzdGRvdXQ6IDpweTpjbGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZG91dCwgdXNl
IGBgc3Rkb3V0LnN0cigpYGAgdG8KLSAgICAgICByZWNvbnN0cnVjdCBzdGRvdXQgb3IgdGhlIGNv
bW1vbmx5IHVzZWQKLSAgICAgICBgYHN0ZG91dC5mbm1hdGNoX2xpbmVzKClgYCBtZXRob2QuCi0g
ICAgOnN0ZGVycnI6IDpweTpjbGFzczpgTGluZU1hdGNoZXJgIG9mIHN0ZGVyci4KLSAgICA6ZHVy
YXRpb246IER1cmF0aW9uIGluIHNlY29uZHMuCi0KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCByZXQsIG91dGxpbmVzLCBlcnJsaW5lcywgZHVyYXRpb24pOgotICAgICAgICBzZWxm
LnJldCA9IHJldAotICAgICAgICBzZWxmLm91dGxpbmVzID0gb3V0bGluZXMKLSAgICAgICAgc2Vs
Zi5lcnJsaW5lcyA9IGVycmxpbmVzCi0gICAgICAgIHNlbGYuc3Rkb3V0ID0gTGluZU1hdGNoZXIo
b3V0bGluZXMpCi0gICAgICAgIHNlbGYuc3RkZXJyID0gTGluZU1hdGNoZXIoZXJybGluZXMpCi0g
ICAgICAgIHNlbGYuZHVyYXRpb24gPSBkdXJhdGlvbgotCi0gICAgZGVmIHBhcnNlb3V0Y29tZXMo
c2VsZik6Ci0gICAgICAgICIiIiBSZXR1cm4gYSBkaWN0aW9uYXJ5IG9mIG91dGNvbWVzdHJpbmct
Pm51bSBmcm9tIHBhcnNpbmcKLSAgICAgICAgdGhlIHRlcm1pbmFsIG91dHB1dCB0aGF0IHRoZSB0
ZXN0IHByb2Nlc3MgcHJvZHVjZWQuIiIiCi0gICAgICAgIGZvciBsaW5lIGluIHJldmVyc2VkKHNl
bGYub3V0bGluZXMpOgotICAgICAgICAgICAgaWYgJ3NlY29uZHMnIGluIGxpbmU6Ci0gICAgICAg
ICAgICAgICAgb3V0Y29tZXMgPSByZXhfb3V0Y29tZS5maW5kYWxsKGxpbmUpCi0gICAgICAgICAg
ICAgICAgaWYgb3V0Y29tZXM6Ci0gICAgICAgICAgICAgICAgICAgIGQgPSB7fQotICAgICAgICAg
ICAgICAgICAgICBmb3IgbnVtLCBjYXQgaW4gb3V0Y29tZXM6Ci0gICAgICAgICAgICAgICAgICAg
ICAgICBkW2NhdF0gPSBpbnQobnVtKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZAotICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJQeXRlc3QgdGVybWluYWwgcmVwb3J0IG5vdCBmb3VuZCIp
Ci0KLSAgICBkZWYgYXNzZXJ0X291dGNvbWVzKHNlbGYsIHBhc3NlZD0wLCBza2lwcGVkPTAsIGZh
aWxlZD0wLCBlcnJvcj0wKToKLSAgICAgICAgIiIiIGFzc2VydCB0aGF0IHRoZSBzcGVjaWZpZWQg
b3V0Y29tZXMgYXBwZWFyIHdpdGggdGhlIHJlc3BlY3RpdmUKLSAgICAgICAgbnVtYmVycyAoMCBt
ZWFucyBpdCBkaWRuJ3Qgb2NjdXIpIGluIHRoZSB0ZXh0IG91dHB1dCBmcm9tIGEgdGVzdCBydW4u
IiIiCi0gICAgICAgIGQgPSBzZWxmLnBhcnNlb3V0Y29tZXMoKQotICAgICAgICBvYnRhaW5lZCA9
IHsKLSAgICAgICAgICAgICdwYXNzZWQnOiBkLmdldCgncGFzc2VkJywgMCksCi0gICAgICAgICAg
ICAnc2tpcHBlZCc6IGQuZ2V0KCdza2lwcGVkJywgMCksCi0gICAgICAgICAgICAnZmFpbGVkJzog
ZC5nZXQoJ2ZhaWxlZCcsIDApLAotICAgICAgICAgICAgJ2Vycm9yJzogZC5nZXQoJ2Vycm9yJywg
MCksCi0gICAgICAgIH0KLSAgICAgICAgYXNzZXJ0IG9idGFpbmVkID09IGRpY3QocGFzc2VkPXBh
c3NlZCwgc2tpcHBlZD1za2lwcGVkLCBmYWlsZWQ9ZmFpbGVkLCBlcnJvcj1lcnJvcikKLQotCi1j
bGFzcyBUZXN0ZGlyOgotICAgICIiIlRlbXBvcmFyeSB0ZXN0IGRpcmVjdG9yeSB3aXRoIHRvb2xz
IHRvIHRlc3QvcnVuIHB5dGVzdCBpdHNlbGYuCi0KLSAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSBg
YHRtcGRpcmBgIGZpeHR1cmUgYnV0IHByb3ZpZGVzIGEgbnVtYmVyIG9mCi0gICAgbWV0aG9kcyB3
aGljaCBhaWQgd2l0aCB0ZXN0aW5nIHB5dGVzdCBpdHNlbGYuICBVbmxlc3MKLSAgICA6cHk6bWV0
aDpgY2hkaXJgIGlzIHVzZWQgYWxsIG1ldGhvZHMgd2lsbCB1c2UgOnB5OmF0dHI6YHRtcGRpcmAg
YXMKLSAgICBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgotCi0gICAgQXR0cmlidXRlczoKLQot
ICAgIDp0bXBkaXI6IFRoZSA6cHk6Y2xhc3M6YHB5LnBhdGgubG9jYWxgIGluc3RhbmNlIG9mIHRo
ZSB0ZW1wb3JhcnkKLSAgICAgICBkaXJlY3RvcnkuCi0KLSAgICA6cGx1Z2luczogQSBsaXN0IG9m
IHBsdWdpbnMgdG8gdXNlIHdpdGggOnB5Om1ldGg6YHBhcnNlY29uZmlnYCBhbmQKLSAgICAgICA6
cHk6bWV0aDpgcnVucHl0ZXN0YC4gIEluaXRpYWxseSB0aGlzIGlzIGFuIGVtcHR5IGxpc3QgYnV0
Ci0gICAgICAgcGx1Z2lucyBjYW4gYmUgYWRkZWQgdG8gdGhlIGxpc3QuICBUaGUgdHlwZSBvZiBp
dGVtcyB0byBhZGQgdG8KLSAgICAgICB0aGUgbGlzdCBkZXBlbmQgb24gdGhlIG1ldGhvZCB3aGlj
aCB1c2VzIHRoZW0gc28gcmVmZXIgdG8gdGhlbQotICAgICAgIGZvciBkZXRhaWxzLgotCi0gICAg
IiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdCwgdG1wZGlyX2ZhY3RvcnkpOgot
ICAgICAgICBzZWxmLnJlcXVlc3QgPSByZXF1ZXN0Ci0gICAgICAgIHNlbGYuX21vZF9jb2xsZWN0
aW9ucyA9IFdlYWtLZXlEaWN0aW9uYXJ5KCkKLSAgICAgICAgbmFtZSA9IHJlcXVlc3QuZnVuY3Rp
b24uX19uYW1lX18KLSAgICAgICAgc2VsZi50bXBkaXIgPSB0bXBkaXJfZmFjdG9yeS5ta3RlbXAo
bmFtZSwgbnVtYmVyZWQ9VHJ1ZSkKLSAgICAgICAgc2VsZi5wbHVnaW5zID0gW10KLSAgICAgICAg
c2VsZi5fc2F2ZXN5c3BhdGggPSAobGlzdChzeXMucGF0aCksIGxpc3Qoc3lzLm1ldGFfcGF0aCkp
Ci0gICAgICAgIHNlbGYuX3NhdmVtb2R1bGVrZXlzID0gc2V0KHN5cy5tb2R1bGVzKQotICAgICAg
ICBzZWxmLmNoZGlyKCkgICMgYWx3YXlzIGNoZGlyCi0gICAgICAgIHNlbGYucmVxdWVzdC5hZGRm
aW5hbGl6ZXIoc2VsZi5maW5hbGl6ZSkKLSAgICAgICAgbWV0aG9kID0gc2VsZi5yZXF1ZXN0LmNv
bmZpZy5nZXRvcHRpb24oIi0tcnVucHl0ZXN0IikKLSAgICAgICAgaWYgbWV0aG9kID09ICJpbnBy
b2Nlc3MiOgotICAgICAgICAgICAgc2VsZi5fcnVucHl0ZXN0X21ldGhvZCA9IHNlbGYucnVucHl0
ZXN0X2lucHJvY2VzcwotICAgICAgICBlbGlmIG1ldGhvZCA9PSAic3VicHJvY2VzcyI6Ci0gICAg
ICAgICAgICBzZWxmLl9ydW5weXRlc3RfbWV0aG9kID0gc2VsZi5ydW5weXRlc3Rfc3VicHJvY2Vz
cwotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxUZXN0ZGlyICVy
PiIgJSAoc2VsZi50bXBkaXIsKQotCi0gICAgZGVmIGZpbmFsaXplKHNlbGYpOgotICAgICAgICAi
IiJDbGVhbiB1cCBnbG9iYWwgc3RhdGUgYXJ0aWZhY3RzLgotCi0gICAgICAgIFNvbWUgbWV0aG9k
cyBtb2RpZnkgdGhlIGdsb2JhbCBpbnRlcnByZXRlciBzdGF0ZSBhbmQgdGhpcwotICAgICAgICB0
cmllcyB0byBjbGVhbiB0aGlzIHVwLiAgSXQgZG9lcyBub3QgcmVtb3ZlIHRoZSB0ZW1wb3JhcnkK
LSAgICAgICAgZGlyZWN0b3J5IGhvd2V2ZXIgc28gaXQgY2FuIGJlIGxvb2tlZCBhdCBhZnRlciB0
aGUgdGVzdCBydW4KLSAgICAgICAgaGFzIGZpbmlzaGVkLgotCi0gICAgICAgICIiIgotICAgICAg
ICBzeXMucGF0aFs6XSwgc3lzLm1ldGFfcGF0aFs6XSA9IHNlbGYuX3NhdmVzeXNwYXRoCi0gICAg
ICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19vbGRkaXInKToKLSAgICAgICAgICAgIHNlbGYuX29sZGRp
ci5jaGRpcigpCi0gICAgICAgIHNlbGYuZGVsZXRlX2xvYWRlZF9tb2R1bGVzKCkKLQotICAgIGRl
ZiBkZWxldGVfbG9hZGVkX21vZHVsZXMoc2VsZik6Ci0gICAgICAgICIiIkRlbGV0ZSBtb2R1bGVz
IHRoYXQgaGF2ZSBiZWVuIGxvYWRlZCBkdXJpbmcgYSB0ZXN0LgotCi0gICAgICAgIFRoaXMgYWxs
b3dzIHRoZSBpbnRlcnByZXRlciB0byBjYXRjaCBtb2R1bGUgY2hhbmdlcyBpbiBjYXNlCi0gICAg
ICAgIHRoZSBtb2R1bGUgaXMgcmUtaW1wb3J0ZWQuCi0gICAgICAgICIiIgotICAgICAgICBmb3Ig
bmFtZSBpbiBzZXQoc3lzLm1vZHVsZXMpLmRpZmZlcmVuY2Uoc2VsZi5fc2F2ZW1vZHVsZWtleXMp
OgotICAgICAgICAgICAgIyBzb21lIHpvcGUgbW9kdWxlcyB1c2VkIGJ5IHR3aXN0ZWQtcmVsYXRl
ZCB0ZXN0cyBrZWVwcyBpbnRlcm5hbAotICAgICAgICAgICAgIyBzdGF0ZSBhbmQgY2FuJ3QgYmUg
ZGVsZXRlZDsgd2UgaGFkIHNvbWUgdHJvdWJsZSBpbiB0aGUgcGFzdAotICAgICAgICAgICAgIyB3
aXRoIHpvcGUuaW50ZXJmYWNlIGZvciBleGFtcGxlCi0gICAgICAgICAgICBpZiBub3QgbmFtZS5z
dGFydHN3aXRoKCJ6b3BlIik6Ci0gICAgICAgICAgICAgICAgZGVsIHN5cy5tb2R1bGVzW25hbWVd
Ci0KLSAgICBkZWYgbWFrZV9ob29rX3JlY29yZGVyKHNlbGYsIHBsdWdpbm1hbmFnZXIpOgotICAg
ICAgICAiIiJDcmVhdGUgYSBuZXcgOnB5OmNsYXNzOmBIb29rUmVjb3JkZXJgIGZvciBhIFBsdWdp
bk1hbmFnZXIuIiIiCi0gICAgICAgIGFzc2VydCBub3QgaGFzYXR0cihwbHVnaW5tYW5hZ2VyLCAi
cmVwcmVjIikKLSAgICAgICAgcGx1Z2lubWFuYWdlci5yZXByZWMgPSByZXByZWMgPSBIb29rUmVj
b3JkZXIocGx1Z2lubWFuYWdlcikKLSAgICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihy
ZXByZWMuZmluaXNoX3JlY29yZGluZykKLSAgICAgICAgcmV0dXJuIHJlcHJlYwotCi0gICAgZGVm
IGNoZGlyKHNlbGYpOgotICAgICAgICAiIiJDZCBpbnRvIHRoZSB0ZW1wb3JhcnkgZGlyZWN0b3J5
LgotCi0gICAgICAgIFRoaXMgaXMgZG9uZSBhdXRvbWF0aWNhbGx5IHVwb24gaW5zdGFudGlhdGlv
bi4KLQotICAgICAgICAiIiIKLSAgICAgICAgb2xkID0gc2VsZi50bXBkaXIuY2hkaXIoKQotICAg
ICAgICBpZiBub3QgaGFzYXR0cihzZWxmLCAnX29sZGRpcicpOgotICAgICAgICAgICAgc2VsZi5f
b2xkZGlyID0gb2xkCi0KLSAgICBkZWYgX21ha2VmaWxlKHNlbGYsIGV4dCwgYXJncywga3dhcmdz
LCBlbmNvZGluZz0ndXRmLTgnKToKLSAgICAgICAgaXRlbXMgPSBsaXN0KGt3YXJncy5pdGVtcygp
KQotCi0gICAgICAgIGRlZiB0b190ZXh0KHMpOgotICAgICAgICAgICAgcmV0dXJuIHMuZGVjb2Rl
KGVuY29kaW5nKSBpZiBpc2luc3RhbmNlKHMsIGJ5dGVzKSBlbHNlIHNpeC50ZXh0X3R5cGUocykK
LQotICAgICAgICBpZiBhcmdzOgotICAgICAgICAgICAgc291cmNlID0gdSJcbiIuam9pbih0b190
ZXh0KHgpIGZvciB4IGluIGFyZ3MpCi0gICAgICAgICAgICBiYXNlbmFtZSA9IHNlbGYucmVxdWVz
dC5mdW5jdGlvbi5fX25hbWVfXwotICAgICAgICAgICAgaXRlbXMuaW5zZXJ0KDAsIChiYXNlbmFt
ZSwgc291cmNlKSkKLQotICAgICAgICByZXQgPSBOb25lCi0gICAgICAgIGZvciBiYXNlbmFtZSwg
dmFsdWUgaW4gaXRlbXM6Ci0gICAgICAgICAgICBwID0gc2VsZi50bXBkaXIuam9pbihiYXNlbmFt
ZSkubmV3KGV4dD1leHQpCi0gICAgICAgICAgICBwLmRpcnBhdGgoKS5lbnN1cmVfZGlyKCkKLSAg
ICAgICAgICAgIHNvdXJjZSA9IFNvdXJjZSh2YWx1ZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHUi
XG4iLmpvaW4odG9fdGV4dChsaW5lKSBmb3IgbGluZSBpbiBzb3VyY2UubGluZXMpCi0gICAgICAg
ICAgICBwLndyaXRlKHNvdXJjZS5zdHJpcCgpLmVuY29kZShlbmNvZGluZyksICJ3YiIpCi0gICAg
ICAgICAgICBpZiByZXQgaXMgTm9uZToKLSAgICAgICAgICAgICAgICByZXQgPSBwCi0gICAgICAg
IHJldHVybiByZXQKLQotICAgIGRlZiBtYWtlZmlsZShzZWxmLCBleHQsICphcmdzLCAqKmt3YXJn
cyk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG5ldyBmaWxlIGluIHRoZSB0ZXN0ZGlyLgotCi0gICAg
ICAgIGV4dDogVGhlIGV4dGVuc2lvbiB0aGUgZmlsZSBzaG91bGQgdXNlLCBpbmNsdWRpbmcgdGhl
IGRvdC4KLSAgICAgICAgICAgRS5nLiAiLnB5Ii4KLQotICAgICAgICBhcmdzOiBBbGwgYXJncyB3
aWxsIGJlIHRyZWF0ZWQgYXMgc3RyaW5ncyBhbmQgam9pbmVkIHVzaW5nCi0gICAgICAgICAgIG5l
d2xpbmVzLiAgVGhlIHJlc3VsdCB3aWxsIGJlIHdyaXR0ZW4gYXMgY29udGVudHMgdG8gdGhlCi0g
ICAgICAgICAgIGZpbGUuICBUaGUgbmFtZSBvZiB0aGUgZmlsZSB3aWxsIGJlIGJhc2VkIG9uIHRo
ZSB0ZXN0Ci0gICAgICAgICAgIGZ1bmN0aW9uIHJlcXVlc3RpbmcgdGhpcyBmaXh0dXJlLgotICAg
ICAgICAgICBFLmcuICJ0ZXN0ZGlyLm1ha2VmaWxlKCcudHh0JywgJ2xpbmUxJywgJ2xpbmUyJyki
Ci0KLSAgICAgICAga3dhcmdzOiBFYWNoIGtleXdvcmQgaXMgdGhlIG5hbWUgb2YgYSBmaWxlLCB3
aGlsZSB0aGUgdmFsdWUgb2YKLSAgICAgICAgICAgaXQgd2lsbCBiZSB3cml0dGVuIGFzIGNvbnRl
bnRzIG9mIHRoZSBmaWxlLgotICAgICAgICAgICBFLmcuICJ0ZXN0ZGlyLm1ha2VmaWxlKCcuaW5p
JywgcHl0ZXN0PSdbcHl0ZXN0XVxuYWRkb3B0cz0tcnNcbicpIgotCi0gICAgICAgICIiIgotICAg
ICAgICByZXR1cm4gc2VsZi5fbWFrZWZpbGUoZXh0LCBhcmdzLCBrd2FyZ3MpCi0KLSAgICBkZWYg
bWFrZWNvbmZ0ZXN0KHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgICIiIldyaXRlIGEgY29udGVzdC5w
eSBmaWxlIHdpdGggJ3NvdXJjZScgYXMgY29udGVudHMuIiIiCi0gICAgICAgIHJldHVybiBzZWxm
Lm1ha2VweWZpbGUoY29uZnRlc3Q9c291cmNlKQotCi0gICAgZGVmIG1ha2Vpbmkoc2VsZiwgc291
cmNlKToKLSAgICAgICAgIiIiV3JpdGUgYSB0b3guaW5pIGZpbGUgd2l0aCAnc291cmNlJyBhcyBj
b250ZW50cy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYubWFrZWZpbGUoJy5pbmknLCB0b3g9c291
cmNlKQotCi0gICAgZGVmIGdldGluaWNmZyhzZWxmLCBzb3VyY2UpOgotICAgICAgICAiIiJSZXR1
cm4gdGhlIHB5dGVzdCBzZWN0aW9uIGZyb20gdGhlIHRveC5pbmkgY29uZmlnIGZpbGUuIiIiCi0g
ICAgICAgIHAgPSBzZWxmLm1ha2Vpbmkoc291cmNlKQotICAgICAgICByZXR1cm4gcHkuaW5pY29u
ZmlnLkluaUNvbmZpZyhwKVsncHl0ZXN0J10KLQotICAgIGRlZiBtYWtlcHlmaWxlKHNlbGYsICph
cmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlNob3J0Y3V0IGZvciAubWFrZWZpbGUoKSB3aXRo
IGEgLnB5IGV4dGVuc2lvbi4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX21ha2VmaWxlKCcucHkn
LCBhcmdzLCBrd2FyZ3MpCi0KLSAgICBkZWYgbWFrZXR4dGZpbGUoc2VsZiwgKmFyZ3MsICoqa3dh
cmdzKToKLSAgICAgICAgIiIiU2hvcnRjdXQgZm9yIC5tYWtlZmlsZSgpIHdpdGggYSAudHh0IGV4
dGVuc2lvbi4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYuX21ha2VmaWxlKCcudHh0JywgYXJncywg
a3dhcmdzKQotCi0gICAgZGVmIHN5c3BhdGhpbnNlcnQoc2VsZiwgcGF0aD1Ob25lKToKLSAgICAg
ICAgIiIiUHJlcGVuZCBhIGRpcmVjdG9yeSB0byBzeXMucGF0aCwgZGVmYXVsdHMgdG8gOnB5OmF0
dHI6YHRtcGRpcmAuCi0KLSAgICAgICAgVGhpcyBpcyB1bmRvbmUgYXV0b21hdGljYWxseSBhZnRl
ciB0aGUgdGVzdC4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAg
ICAgICAgIHBhdGggPSBzZWxmLnRtcGRpcgotICAgICAgICBzeXMucGF0aC5pbnNlcnQoMCwgc3Ry
KHBhdGgpKQotICAgICAgICAjIGEgY2FsbCB0byBzeXNwYXRoaW5zZXJ0KCkgdXN1YWxseSBtZWFu
cyB0aGF0IHRoZSBjYWxsZXIKLSAgICAgICAgIyB3YW50cyB0byBpbXBvcnQgc29tZSBkeW5hbWlj
YWxseSBjcmVhdGVkIGZpbGVzLgotICAgICAgICAjIHdpdGggcHl0aG9uMyB3ZSB0aHVzIGludmFs
aWRhdGUgaW1wb3J0IGNhY2hlcy4KLSAgICAgICAgc2VsZi5fcG9zc2libHlfaW52YWxpZGF0ZV9p
bXBvcnRfY2FjaGVzKCkKLQotICAgIGRlZiBfcG9zc2libHlfaW52YWxpZGF0ZV9pbXBvcnRfY2Fj
aGVzKHNlbGYpOgotICAgICAgICAjIGludmFsaWRhdGUgY2FjaGVzIGlmIHdlIGNhbiAocHkzMyBh
bmQgYWJvdmUpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKLSAg
ICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgaWYgaGFzYXR0cihpbXBvcnRsaWIsICJpbnZhbGlkYXRlX2NhY2hlcyIp
OgotICAgICAgICAgICAgICAgIGltcG9ydGxpYi5pbnZhbGlkYXRlX2NhY2hlcygpCi0KLSAgICBk
ZWYgbWtkaXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgICIiIkNyZWF0ZSBhIG5ldyAoc3ViKWRpcmVj
dG9yeS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudG1wZGlyLm1rZGlyKG5hbWUpCi0KLSAgICBk
ZWYgbWtweWRpcihzZWxmLCBuYW1lKToKLSAgICAgICAgIiIiQ3JlYXRlIGEgbmV3IHB5dGhvbiBw
YWNrYWdlLgotCi0gICAgICAgIFRoaXMgY3JlYXRlcyBhIChzdWIpZGlyZWN0b3J5IHdpdGggYW4g
ZW1wdHkgYGBfX2luaXRfXy5weWBgCi0gICAgICAgIGZpbGUgc28gdGhhdCBpcyByZWNvZ25pc2Vk
IGFzIGEgcHl0aG9uIHBhY2thZ2UuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHAgPSBzZWxmLm1r
ZGlyKG5hbWUpCi0gICAgICAgIHAuZW5zdXJlKCJfX2luaXRfXy5weSIpCi0gICAgICAgIHJldHVy
biBwCi0KLSAgICBTZXNzaW9uID0gU2Vzc2lvbgotCi0gICAgZGVmIGdldG5vZGUoc2VsZiwgY29u
ZmlnLCBhcmcpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGNvbGxlY3Rpb24gbm9kZSBvZiBhIGZp
bGUuCi0KLSAgICAgICAgOnBhcmFtIGNvbmZpZzogOnB5OmNsYXNzOmBfcHl0ZXN0LmNvbmZpZy5D
b25maWdgIGluc3RhbmNlLCBzZWUKLSAgICAgICAgICAgOnB5Om1ldGg6YHBhcnNlY29uZmlnYCBh
bmQgOnB5Om1ldGg6YHBhcnNlY29uZmlndXJlYCB0bwotICAgICAgICAgICBjcmVhdGUgdGhlIGNv
bmZpZ3VyYXRpb24uCi0KLSAgICAgICAgOnBhcmFtIGFyZzogQSA6cHk6Y2xhc3M6YHB5LnBhdGgu
bG9jYWxgIGluc3RhbmNlIG9mIHRoZSBmaWxlLgotCi0gICAgICAgICIiIgotICAgICAgICBzZXNz
aW9uID0gU2Vzc2lvbihjb25maWcpCi0gICAgICAgIGFzc2VydCAnOjonIG5vdCBpbiBzdHIoYXJn
KQotICAgICAgICBwID0gcHkucGF0aC5sb2NhbChhcmcpCi0gICAgICAgIGNvbmZpZy5ob29rLnB5
dGVzdF9zZXNzaW9uc3RhcnQoc2Vzc2lvbj1zZXNzaW9uKQotICAgICAgICByZXMgPSBzZXNzaW9u
LnBlcmZvcm1fY29sbGVjdChbc3RyKHApXSwgZ2VuaXRlbXM9RmFsc2UpWzBdCi0gICAgICAgIGNv
bmZpZy5ob29rLnB5dGVzdF9zZXNzaW9uZmluaXNoKHNlc3Npb249c2Vzc2lvbiwgZXhpdHN0YXR1
cz1FWElUX09LKQotICAgICAgICByZXR1cm4gcmVzCi0KLSAgICBkZWYgZ2V0cGF0aG5vZGUoc2Vs
ZiwgcGF0aCk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgY29sbGVjdGlvbiBub2RlIG9mIGEgZmls
ZS4KLQotICAgICAgICBUaGlzIGlzIGxpa2UgOnB5Om1ldGg6YGdldG5vZGVgIGJ1dCB1c2VzCi0g
ICAgICAgIDpweTptZXRoOmBwYXJzZWNvbmZpZ3VyZWAgdG8gY3JlYXRlIHRoZSAoY29uZmlndXJl
ZCkgcHl0ZXN0Ci0gICAgICAgIENvbmZpZyBpbnN0YW5jZS4KLQotICAgICAgICA6cGFyYW0gcGF0
aDogQSA6cHk6Y2xhc3M6YHB5LnBhdGgubG9jYWxgIGluc3RhbmNlIG9mIHRoZSBmaWxlLgotCi0g
ICAgICAgICIiIgotICAgICAgICBjb25maWcgPSBzZWxmLnBhcnNlY29uZmlndXJlKHBhdGgpCi0g
ICAgICAgIHNlc3Npb24gPSBTZXNzaW9uKGNvbmZpZykKLSAgICAgICAgeCA9IHNlc3Npb24uZnNw
YXRoLmJlc3RyZWxwYXRoKHBhdGgpCi0gICAgICAgIGNvbmZpZy5ob29rLnB5dGVzdF9zZXNzaW9u
c3RhcnQoc2Vzc2lvbj1zZXNzaW9uKQotICAgICAgICByZXMgPSBzZXNzaW9uLnBlcmZvcm1fY29s
bGVjdChbeF0sIGdlbml0ZW1zPUZhbHNlKVswXQotICAgICAgICBjb25maWcuaG9vay5weXRlc3Rf
c2Vzc2lvbmZpbmlzaChzZXNzaW9uPXNlc3Npb24sIGV4aXRzdGF0dXM9RVhJVF9PSykKLSAgICAg
ICAgcmV0dXJuIHJlcwotCi0gICAgZGVmIGdlbml0ZW1zKHNlbGYsIGNvbGl0ZW1zKToKLSAgICAg
ICAgIiIiR2VuZXJhdGUgYWxsIHRlc3QgaXRlbXMgZnJvbSBhIGNvbGxlY3Rpb24gbm9kZS4KLQot
ICAgICAgICBUaGlzIHJlY3Vyc2VzIGludG8gdGhlIGNvbGxlY3Rpb24gbm9kZSBhbmQgcmV0dXJu
cyBhIGxpc3Qgb2YKLSAgICAgICAgYWxsIHRoZSB0ZXN0IGl0ZW1zIGNvbnRhaW5lZCB3aXRoaW4u
Ci0KLSAgICAgICAgIiIiCi0gICAgICAgIHNlc3Npb24gPSBjb2xpdGVtc1swXS5zZXNzaW9uCi0g
ICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgIGZvciBjb2xpdGVtIGluIGNvbGl0ZW1zOgotICAg
ICAgICAgICAgcmVzdWx0LmV4dGVuZChzZXNzaW9uLmdlbml0ZW1zKGNvbGl0ZW0pKQotICAgICAg
ICByZXR1cm4gcmVzdWx0Ci0KLSAgICBkZWYgcnVuaXRlbShzZWxmLCBzb3VyY2UpOgotICAgICAg
ICAiIiJSdW4gdGhlICJ0ZXN0X2Z1bmMiIEl0ZW0uCi0KLSAgICAgICAgVGhlIGNhbGxpbmcgdGVz
dCBpbnN0YW5jZSAodGhlIGNsYXNzIHdoaWNoIGNvbnRhaW5zIHRoZSB0ZXN0Ci0gICAgICAgIG1l
dGhvZCkgbXVzdCBwcm92aWRlIGEgYGAuZ2V0cnVubmVyKClgYCBtZXRob2Qgd2hpY2ggc2hvdWxk
Ci0gICAgICAgIHJldHVybiBhIHJ1bm5lciB3aGljaCBjYW4gcnVuIHRoZSB0ZXN0IHByb3RvY29s
IGZvciBhIHNpbmdsZQotICAgICAgICBpdGVtLCBsaWtlIGUuZy4gOnB5OmZ1bmM6YF9weXRlc3Qu
cnVubmVyLnJ1bnRlc3Rwcm90b2NvbGAuCi0KLSAgICAgICAgIiIiCi0gICAgICAgICMgdXNlZCBm
cm9tIHJ1bm5lciBmdW5jdGlvbmFsIHRlc3RzCi0gICAgICAgIGl0ZW0gPSBzZWxmLmdldGl0ZW0o
c291cmNlKQotICAgICAgICAjIHRoZSB0ZXN0IGNsYXNzIHdoZXJlIHdlIGFyZSBjYWxsZWQgZnJv
bSB3YW50cyB0byBwcm92aWRlIHRoZSBydW5uZXIKLSAgICAgICAgdGVzdGNsYXNzaW5zdGFuY2Ug
PSBzZWxmLnJlcXVlc3QuaW5zdGFuY2UKLSAgICAgICAgcnVubmVyID0gdGVzdGNsYXNzaW5zdGFu
Y2UuZ2V0cnVubmVyKCkKLSAgICAgICAgcmV0dXJuIHJ1bm5lcihpdGVtKQotCi0gICAgZGVmIGlu
bGluZV9ydW5zb3VyY2Uoc2VsZiwgc291cmNlLCAqY21kbGluZWFyZ3MpOgotICAgICAgICAiIiJS
dW4gYSB0ZXN0IG1vZHVsZSBpbiBwcm9jZXNzIHVzaW5nIGBgcHl0ZXN0Lm1haW4oKWBgLgotCi0g
ICAgICAgIFRoaXMgcnVuIHdyaXRlcyAic291cmNlIiBpbnRvIGEgdGVtcG9yYXJ5IGZpbGUgYW5k
IHJ1bnMKLSAgICAgICAgYGBweXRlc3QubWFpbigpYGAgb24gaXQsIHJldHVybmluZyBhIDpweTpj
bGFzczpgSG9va1JlY29yZGVyYAotICAgICAgICBpbnN0YW5jZSBmb3IgdGhlIHJlc3VsdC4KLQot
ICAgICAgICA6cGFyYW0gc291cmNlOiBUaGUgc291cmNlIGNvZGUgb2YgdGhlIHRlc3QgbW9kdWxl
LgotCi0gICAgICAgIDpwYXJhbSBjbWRsaW5lYXJnczogQW55IGV4dHJhIGNvbW1hbmQgbGluZSBh
cmd1bWVudHMgdG8gdXNlLgotCi0gICAgICAgIDpyZXR1cm46IDpweTpjbGFzczpgSG9va1JlY29y
ZGVyYCBpbnN0YW5jZSBvZiB0aGUgcmVzdWx0LgotCi0gICAgICAgICIiIgotICAgICAgICBwID0g
c2VsZi5tYWtlcHlmaWxlKHNvdXJjZSkKLSAgICAgICAgdmFsdWVzID0gbGlzdChjbWRsaW5lYXJn
cykgKyBbcF0KLSAgICAgICAgcmV0dXJuIHNlbGYuaW5saW5lX3J1bigqdmFsdWVzKQotCi0gICAg
ZGVmIGlubGluZV9nZW5pdGVtcyhzZWxmLCAqYXJncyk6Ci0gICAgICAgICIiIlJ1biBgYHB5dGVz
dC5tYWluKFsnLS1jb2xsZWN0b25seSddKWBgIGluLXByb2Nlc3MuCi0KLSAgICAgICAgUmV0dXJu
cyBhIHR1cGxlIG9mIHRoZSBjb2xsZWN0ZWQgaXRlbXMgYW5kIGEKLSAgICAgICAgOnB5OmNsYXNz
OmBIb29rUmVjb3JkZXJgIGluc3RhbmNlLgotCi0gICAgICAgIFRoaXMgcnVucyB0aGUgOnB5OmZ1
bmM6YHB5dGVzdC5tYWluYCBmdW5jdGlvbiB0byBydW4gYWxsIG9mCi0gICAgICAgIHB5dGVzdCBp
bnNpZGUgdGhlIHRlc3QgcHJvY2VzcyBpdHNlbGYgbGlrZQotICAgICAgICA6cHk6bWV0aDpgaW5s
aW5lX3J1bmAuICBIb3dldmVyIHRoZSByZXR1cm4gdmFsdWUgaXMgYSB0dXBsZSBvZgotICAgICAg
ICB0aGUgY29sbGVjdGlvbiBpdGVtcyBhbmQgYSA6cHk6Y2xhc3M6YEhvb2tSZWNvcmRlcmAgaW5z
dGFuY2UuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHJlYyA9IHNlbGYuaW5saW5lX3J1bigiLS1j
b2xsZWN0LW9ubHkiLCAqYXJncykKLSAgICAgICAgaXRlbXMgPSBbeC5pdGVtIGZvciB4IGluIHJl
Yy5nZXRjYWxscygicHl0ZXN0X2l0ZW1jb2xsZWN0ZWQiKV0KLSAgICAgICAgcmV0dXJuIGl0ZW1z
LCByZWMKLQotICAgIGRlZiBpbmxpbmVfcnVuKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAg
ICAgICIiIlJ1biBgYHB5dGVzdC5tYWluKClgYCBpbi1wcm9jZXNzLCByZXR1cm5pbmcgYSBIb29r
UmVjb3JkZXIuCi0KLSAgICAgICAgVGhpcyBydW5zIHRoZSA6cHk6ZnVuYzpgcHl0ZXN0Lm1haW5g
IGZ1bmN0aW9uIHRvIHJ1biBhbGwgb2YKLSAgICAgICAgcHl0ZXN0IGluc2lkZSB0aGUgdGVzdCBw
cm9jZXNzIGl0c2VsZi4gIFRoaXMgbWVhbnMgaXQgY2FuCi0gICAgICAgIHJldHVybiBhIDpweTpj
bGFzczpgSG9va1JlY29yZGVyYCBpbnN0YW5jZSB3aGljaCBnaXZlcyBtb3JlCi0gICAgICAgIGRl
dGFpbGVkIHJlc3VsdHMgZnJvbSB0aGVuIHJ1biB0aGVuIGNhbiBiZSBkb25lIGJ5IG1hdGNoaW5n
Ci0gICAgICAgIHN0ZG91dC9zdGRlcnIgZnJvbSA6cHk6bWV0aDpgcnVucHl0ZXN0YC4KLQotICAg
ICAgICA6cGFyYW0gYXJnczogQW55IGNvbW1hbmQgbGluZSBhcmd1bWVudHMgdG8gcGFzcyB0bwot
ICAgICAgICAgICA6cHk6ZnVuYzpgcHl0ZXN0Lm1haW5gLgotCi0gICAgICAgIDpwYXJhbSBwbHVn
aW46IChrZXl3b3JkLW9ubHkpIEV4dHJhIHBsdWdpbiBpbnN0YW5jZXMgdGhlCi0gICAgICAgICAg
IGBgcHl0ZXN0Lm1haW4oKWBgIGluc3RhbmNlIHNob3VsZCB1c2UuCi0KLSAgICAgICAgOnJldHVy
bjogQSA6cHk6Y2xhc3M6YEhvb2tSZWNvcmRlcmAgaW5zdGFuY2UuCi0gICAgICAgICIiIgotICAg
ICAgICAjIFdoZW4gcnVubmluZyBweS50ZXN0IGlubGluZSBhbnkgcGx1Z2lucyBhY3RpdmUgaW4g
dGhlIG1haW4KLSAgICAgICAgIyB0ZXN0IHByb2Nlc3MgYXJlIGFscmVhZHkgaW1wb3J0ZWQuICBT
byB0aGlzIGRpc2FibGVzIHRoZQotICAgICAgICAjIHdhcm5pbmcgd2hpY2ggd2lsbCB0cmlnZ2Vy
IHRvIHNheSB0aGV5IGNhbiBubyBsb25nZXIgYmUKLSAgICAgICAgIyByZXdyaXR0ZW4sIHdoaWNo
IGlzIGZpbmUgYXMgdGhleSBhcmUgYWxyZWFkeSByZXdyaXR0ZW4uCi0gICAgICAgIG9yaWdfd2Fy
biA9IEFzc2VydGlvblJld3JpdGluZ0hvb2suX3dhcm5fYWxyZWFkeV9pbXBvcnRlZAotCi0gICAg
ICAgIGRlZiByZXZlcnQoKToKLSAgICAgICAgICAgIEFzc2VydGlvblJld3JpdGluZ0hvb2suX3dh
cm5fYWxyZWFkeV9pbXBvcnRlZCA9IG9yaWdfd2FybgotCi0gICAgICAgIHNlbGYucmVxdWVzdC5h
ZGRmaW5hbGl6ZXIocmV2ZXJ0KQotICAgICAgICBBc3NlcnRpb25SZXdyaXRpbmdIb29rLl93YXJu
X2FscmVhZHlfaW1wb3J0ZWQgPSBsYW1iZGEgKmE6IE5vbmUKLQotICAgICAgICByZWMgPSBbXQot
Ci0gICAgICAgIGNsYXNzIENvbGxlY3Q6Ci0gICAgICAgICAgICBkZWYgcHl0ZXN0X2NvbmZpZ3Vy
ZSh4LCBjb25maWcpOgotICAgICAgICAgICAgICAgIHJlYy5hcHBlbmQoc2VsZi5tYWtlX2hvb2tf
cmVjb3JkZXIoY29uZmlnLnBsdWdpbm1hbmFnZXIpKQotCi0gICAgICAgIHBsdWdpbnMgPSBrd2Fy
Z3MuZ2V0KCJwbHVnaW5zIikgb3IgW10KLSAgICAgICAgcGx1Z2lucy5hcHBlbmQoQ29sbGVjdCgp
KQotICAgICAgICByZXQgPSBweXRlc3QubWFpbihsaXN0KGFyZ3MpLCBwbHVnaW5zPXBsdWdpbnMp
Ci0gICAgICAgIHNlbGYuZGVsZXRlX2xvYWRlZF9tb2R1bGVzKCkKLSAgICAgICAgaWYgbGVuKHJl
YykgPT0gMToKLSAgICAgICAgICAgIHJlcHJlYyA9IHJlYy5wb3AoKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgY2xhc3MgcmVwcmVjOgotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAg
cmVwcmVjLnJldCA9IHJldAotCi0gICAgICAgICMgdHlwaWNhbGx5IHdlIHJlcmFpc2Uga2V5Ym9h
cmQgaW50ZXJydXB0cyBmcm9tIHRoZSBjaGlsZCBydW4KLSAgICAgICAgIyBiZWNhdXNlIGl0J3Mg
b3VyIHVzZXIgcmVxdWVzdGluZyBpbnRlcnJ1cHRpb24gb2YgdGhlIHRlc3RpbmcKLSAgICAgICAg
aWYgcmV0ID09IDIgYW5kIG5vdCBrd2FyZ3MuZ2V0KCJub19yZXJhaXNlX2N0cmxjIik6Ci0gICAg
ICAgICAgICBjYWxscyA9IHJlcHJlYy5nZXRjYWxscygicHl0ZXN0X2tleWJvYXJkX2ludGVycnVw
dCIpCi0gICAgICAgICAgICBpZiBjYWxscyBhbmQgY2FsbHNbLTFdLmV4Y2luZm8udHlwZSA9PSBL
ZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgICAgICByYWlzZSBLZXlib2FyZEludGVycnVw
dCgpCi0gICAgICAgIHJldHVybiByZXByZWMKLQotICAgIGRlZiBydW5weXRlc3RfaW5wcm9jZXNz
KHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIiBSZXR1cm4gcmVzdWx0IG9mIHJ1
bm5pbmcgcHl0ZXN0IGluLXByb2Nlc3MsIHByb3ZpZGluZyBhIHNpbWlsYXIKLSAgICAgICAgaW50
ZXJmYWNlIHRvIHdoYXQgc2VsZi5ydW5weXRlc3QoKSBwcm92aWRlcy4gIiIiCi0gICAgICAgIGlm
IGt3YXJncy5nZXQoInN5c3BhdGhpbnNlcnQiKToKLSAgICAgICAgICAgIHNlbGYuc3lzcGF0aGlu
c2VydCgpCi0gICAgICAgIG5vdyA9IHRpbWUudGltZSgpCi0gICAgICAgIGNhcHR1cmUgPSBNdWx0
aUNhcHR1cmUoQ2FwdHVyZT1TeXNDYXB0dXJlKQotICAgICAgICBjYXB0dXJlLnN0YXJ0X2NhcHR1
cmluZygpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBy
ZXByZWMgPSBzZWxmLmlubGluZV9ydW4oKmFyZ3MsICoqa3dhcmdzKQotICAgICAgICAgICAgZXhj
ZXB0IFN5c3RlbUV4aXQgYXMgZToKLQotICAgICAgICAgICAgICAgIGNsYXNzIHJlcHJlYzoKLSAg
ICAgICAgICAgICAgICAgICAgcmV0ID0gZS5hcmdzWzBdCi0KLSAgICAgICAgICAgIGV4Y2VwdCBF
eGNlcHRpb246Ci0gICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0KLSAgICAg
ICAgICAgICAgICBjbGFzcyByZXByZWM6Ci0gICAgICAgICAgICAgICAgICAgIHJldCA9IDMKLSAg
ICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG91dCwgZXJyID0gY2FwdHVyZS5yZWFkb3V0ZXJy
KCkKLSAgICAgICAgICAgIGNhcHR1cmUuc3RvcF9jYXB0dXJpbmcoKQotICAgICAgICAgICAgc3lz
LnN0ZG91dC53cml0ZShvdXQpCi0gICAgICAgICAgICBzeXMuc3RkZXJyLndyaXRlKGVycikKLQot
ICAgICAgICByZXMgPSBSdW5SZXN1bHQocmVwcmVjLnJldCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIG91dC5zcGxpdCgiXG4iKSwgZXJyLnNwbGl0KCJcbiIpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgdGltZS50aW1lKCkgLSBub3cpCi0gICAgICAgIHJlcy5yZXByZWMgPSByZXByZWMKLSAg
ICAgICAgcmV0dXJuIHJlcwotCi0gICAgZGVmIHJ1bnB5dGVzdChzZWxmLCAqYXJncywgKiprd2Fy
Z3MpOgotICAgICAgICAiIiIgUnVuIHB5dGVzdCBpbmxpbmUgb3IgaW4gYSBzdWJwcm9jZXNzLCBk
ZXBlbmRpbmcgb24gdGhlIGNvbW1hbmQgbGluZQotICAgICAgICBvcHRpb24gIi0tcnVucHl0ZXN0
IiBhbmQgcmV0dXJuIGEgOnB5OmNsYXNzOmBSdW5SZXN1bHRgLgotCi0gICAgICAgICIiIgotICAg
ICAgICBhcmdzID0gc2VsZi5fZW5zdXJlX2Jhc2V0ZW1wKGFyZ3MpCi0gICAgICAgIHJldHVybiBz
ZWxmLl9ydW5weXRlc3RfbWV0aG9kKCphcmdzLCAqKmt3YXJncykKLQotICAgIGRlZiBfZW5zdXJl
X2Jhc2V0ZW1wKHNlbGYsIGFyZ3MpOgotICAgICAgICBhcmdzID0gW3N0cih4KSBmb3IgeCBpbiBh
cmdzXQotICAgICAgICBmb3IgeCBpbiBhcmdzOgotICAgICAgICAgICAgaWYgc3RyKHgpLnN0YXJ0
c3dpdGgoJy0tYmFzZXRlbXAnKToKLSAgICAgICAgICAgICAgICAjIHByaW50KCJiYXNlZHRlbXAg
ZXhpc3RzOiAlcyIgJShhcmdzLCkpCi0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGFyZ3MuYXBwZW5kKCItLWJhc2V0ZW1wPSVzIiAlIHNlbGYudG1wZGly
LmRpcnBhdGgoJ2Jhc2V0ZW1wJykpCi0gICAgICAgICAgICAjIHByaW50KCJhZGRlZCBiYXNldGVt
cDogJXMiICUoYXJncywpKQotICAgICAgICByZXR1cm4gYXJncwotCi0gICAgZGVmIHBhcnNlY29u
ZmlnKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHB5dGVzdCBDb25maWcg
aW5zdGFuY2UgZnJvbSBnaXZlbiBjb21tYW5kbGluZSBhcmdzLgotCi0gICAgICAgIFRoaXMgaW52
b2tlcyB0aGUgcHl0ZXN0IGJvb3RzdHJhcHBpbmcgY29kZSBpbiBfcHl0ZXN0LmNvbmZpZwotICAg
ICAgICB0byBjcmVhdGUgYSBuZXcgOnB5OmNsYXNzOmBfcHl0ZXN0LmNvcmUuUGx1Z2luTWFuYWdl
cmAgYW5kCi0gICAgICAgIGNhbGwgdGhlIHB5dGVzdF9jbWRsaW5lX3BhcnNlIGhvb2sgdG8gY3Jl
YXRlIG5ldwotICAgICAgICA6cHk6Y2xhc3M6YF9weXRlc3QuY29uZmlnLkNvbmZpZ2AgaW5zdGFu
Y2UuCi0KLSAgICAgICAgSWYgOnB5OmF0dHI6YHBsdWdpbnNgIGhhcyBiZWVuIHBvcHVsYXRlZCB0
aGV5IHNob3VsZCBiZSBwbHVnaW4KLSAgICAgICAgbW9kdWxlcyB3aGljaCB3aWxsIGJlIHJlZ2lz
dGVyZWQgd2l0aCB0aGUgUGx1Z2luTWFuYWdlci4KLQotICAgICAgICAiIiIKLSAgICAgICAgYXJn
cyA9IHNlbGYuX2Vuc3VyZV9iYXNldGVtcChhcmdzKQotCi0gICAgICAgIGltcG9ydCBfcHl0ZXN0
LmNvbmZpZwotICAgICAgICBjb25maWcgPSBfcHl0ZXN0LmNvbmZpZy5fcHJlcGFyZWNvbmZpZyhh
cmdzLCBzZWxmLnBsdWdpbnMpCi0gICAgICAgICMgd2UgZG9uJ3Qga25vdyB3aGF0IHRoZSB0ZXN0
IHdpbGwgZG8gd2l0aCB0aGlzIGhhbGYtc2V0dXAgY29uZmlnCi0gICAgICAgICMgb2JqZWN0IGFu
ZCB0aHVzIHdlIG1ha2Ugc3VyZSBpdCBnZXRzIHVuY29uZmlndXJlZCBwcm9wZXJseSBpbiBhbnkK
LSAgICAgICAgIyBjYXNlIChvdGhlcndpc2UgY2FwdHVyaW5nIGNvdWxkIHN0aWxsIGJlIGFjdGl2
ZSwgZm9yIGV4YW1wbGUpCi0gICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIoY29uZmln
Ll9lbnN1cmVfdW5jb25maWd1cmUpCi0gICAgICAgIHJldHVybiBjb25maWcKLQotICAgIGRlZiBw
YXJzZWNvbmZpZ3VyZShzZWxmLCAqYXJncyk6Ci0gICAgICAgICIiIlJldHVybiBhIG5ldyBweXRl
c3QgY29uZmlndXJlZCBDb25maWcgaW5zdGFuY2UuCi0KLSAgICAgICAgVGhpcyByZXR1cm5zIGEg
bmV3IDpweTpjbGFzczpgX3B5dGVzdC5jb25maWcuQ29uZmlnYCBpbnN0YW5jZQotICAgICAgICBs
aWtlIDpweTptZXRoOmBwYXJzZWNvbmZpZ2AsIGJ1dCBhbHNvIGNhbGxzIHRoZQotICAgICAgICBw
eXRlc3RfY29uZmlndXJlIGhvb2suCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGNvbmZpZyA9IHNl
bGYucGFyc2Vjb25maWcoKmFyZ3MpCi0gICAgICAgIGNvbmZpZy5fZG9fY29uZmlndXJlKCkKLSAg
ICAgICAgc2VsZi5yZXF1ZXN0LmFkZGZpbmFsaXplcihjb25maWcuX2Vuc3VyZV91bmNvbmZpZ3Vy
ZSkKLSAgICAgICAgcmV0dXJuIGNvbmZpZwotCi0gICAgZGVmIGdldGl0ZW0oc2VsZiwgc291cmNl
LCBmdW5jbmFtZT0idGVzdF9mdW5jIik6Ci0gICAgICAgICIiIlJldHVybiB0aGUgdGVzdCBpdGVt
IGZvciBhIHRlc3QgZnVuY3Rpb24uCi0KLSAgICAgICAgVGhpcyB3cml0ZXMgdGhlIHNvdXJjZSB0
byBhIHB5dGhvbiBmaWxlIGFuZCBydW5zIHB5dGVzdCdzCi0gICAgICAgIGNvbGxlY3Rpb24gb24g
dGhlIHJlc3VsdGluZyBtb2R1bGUsIHJldHVybmluZyB0aGUgdGVzdCBpdGVtCi0gICAgICAgIGZv
ciB0aGUgcmVxdWVzdGVkIGZ1bmN0aW9uIG5hbWUuCi0KLSAgICAgICAgOnBhcmFtIHNvdXJjZTog
VGhlIG1vZHVsZSBzb3VyY2UuCi0KLSAgICAgICAgOnBhcmFtIGZ1bmNuYW1lOiBUaGUgbmFtZSBv
ZiB0aGUgdGVzdCBmdW5jdGlvbiBmb3Igd2hpY2ggdGhlCi0gICAgICAgICAgIEl0ZW0gbXVzdCBi
ZSByZXR1cm5lZC4KLQotICAgICAgICAiIiIKLSAgICAgICAgaXRlbXMgPSBzZWxmLmdldGl0ZW1z
KHNvdXJjZSkKLSAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICBpZiBpdGVt
Lm5hbWUgPT0gZnVuY25hbWU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0KLSAgICAgICAg
YXNzZXJ0IDAsICIlciBpdGVtIG5vdCBmb3VuZCBpbiBtb2R1bGU6XG4lc1xuaXRlbXM6ICVzIiAl
ICgKLSAgICAgICAgICAgICAgICAgIGZ1bmNuYW1lLCBzb3VyY2UsIGl0ZW1zKQotCi0gICAgZGVm
IGdldGl0ZW1zKHNlbGYsIHNvdXJjZSk6Ci0gICAgICAgICIiIlJldHVybiBhbGwgdGVzdCBpdGVt
cyBjb2xsZWN0ZWQgZnJvbSB0aGUgbW9kdWxlLgotCi0gICAgICAgIFRoaXMgd3JpdGVzIHRoZSBz
b3VyY2UgdG8gYSBweXRob24gZmlsZSBhbmQgcnVucyBweXRlc3QncwotICAgICAgICBjb2xsZWN0
aW9uIG9uIHRoZSByZXN1bHRpbmcgbW9kdWxlLCByZXR1cm5pbmcgYWxsIHRlc3QgaXRlbXMKLSAg
ICAgICAgY29udGFpbmVkIHdpdGhpbi4KLQotICAgICAgICAiIiIKLSAgICAgICAgbW9kY29sID0g
c2VsZi5nZXRtb2R1bGVjb2woc291cmNlKQotICAgICAgICByZXR1cm4gc2VsZi5nZW5pdGVtcyhb
bW9kY29sXSkKLQotICAgIGRlZiBnZXRtb2R1bGVjb2woc2VsZiwgc291cmNlLCBjb25maWdhcmdz
PSgpLCB3aXRoaW5pdD1GYWxzZSk6Ci0gICAgICAgICIiIlJldHVybiB0aGUgbW9kdWxlIGNvbGxl
Y3Rpb24gbm9kZSBmb3IgYGBzb3VyY2VgYC4KLQotICAgICAgICBUaGlzIHdyaXRlcyBgYHNvdXJj
ZWBgIHRvIGEgZmlsZSB1c2luZyA6cHk6bWV0aDpgbWFrZXB5ZmlsZWAKLSAgICAgICAgYW5kIHRo
ZW4gcnVucyB0aGUgcHl0ZXN0IGNvbGxlY3Rpb24gb24gaXQsIHJldHVybmluZyB0aGUKLSAgICAg
ICAgY29sbGVjdGlvbiBub2RlIGZvciB0aGUgdGVzdCBtb2R1bGUuCi0KLSAgICAgICAgOnBhcmFt
IHNvdXJjZTogVGhlIHNvdXJjZSBjb2RlIG9mIHRoZSBtb2R1bGUgdG8gY29sbGVjdC4KLQotICAg
ICAgICA6cGFyYW0gY29uZmlnYXJnczogQW55IGV4dHJhIGFyZ3VtZW50cyB0byBwYXNzIHRvCi0g
ICAgICAgICAgIDpweTptZXRoOmBwYXJzZWNvbmZpZ3VyZWAuCi0KLSAgICAgICAgOnBhcmFtIHdp
dGhpbml0OiBXaGV0aGVyIHRvIGFsc28gd3JpdGUgYSBgYF9faW5pdF9fLnB5YGAgZmlsZQotICAg
ICAgICAgICB0byB0aGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBlbnN1cmUgaXQgaXMgYSBwYWNr
YWdlLgotCi0gICAgICAgICIiIgotICAgICAgICBrdyA9IHtzZWxmLnJlcXVlc3QuZnVuY3Rpb24u
X19uYW1lX186IFNvdXJjZShzb3VyY2UpLnN0cmlwKCl9Ci0gICAgICAgIHBhdGggPSBzZWxmLm1h
a2VweWZpbGUoKiprdykKLSAgICAgICAgaWYgd2l0aGluaXQ6Ci0gICAgICAgICAgICBzZWxmLm1h
a2VweWZpbGUoX19pbml0X189IiMiKQotICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZyA9IHNl
bGYucGFyc2Vjb25maWd1cmUocGF0aCwgKmNvbmZpZ2FyZ3MpCi0gICAgICAgIG5vZGUgPSBzZWxm
LmdldG5vZGUoY29uZmlnLCBwYXRoKQotCi0gICAgICAgIHJldHVybiBub2RlCi0KLSAgICBkZWYg
Y29sbGVjdF9ieV9uYW1lKHNlbGYsIG1vZGNvbCwgbmFtZSk6Ci0gICAgICAgICIiIlJldHVybiB0
aGUgY29sbGVjdGlvbiBub2RlIGZvciBuYW1lIGZyb20gdGhlIG1vZHVsZSBjb2xsZWN0aW9uLgot
Ci0gICAgICAgIFRoaXMgd2lsbCBzZWFyY2ggYSBtb2R1bGUgY29sbGVjdGlvbiBub2RlIGZvciBh
IGNvbGxlY3Rpb24KLSAgICAgICAgbm9kZSBtYXRjaGluZyB0aGUgZ2l2ZW4gbmFtZS4KLQotICAg
ICAgICA6cGFyYW0gbW9kY29sOiBBIG1vZHVsZSBjb2xsZWN0aW9uIG5vZGUsIHNlZQotICAgICAg
ICAgICA6cHk6bWV0aDpgZ2V0bW9kdWxlY29sYC4KLQotICAgICAgICA6cGFyYW0gbmFtZTogVGhl
IG5hbWUgb2YgdGhlIG5vZGUgdG8gcmV0dXJuLgotCi0gICAgICAgICIiIgotICAgICAgICBpZiBt
b2Rjb2wgbm90IGluIHNlbGYuX21vZF9jb2xsZWN0aW9uczoKLSAgICAgICAgICAgIHNlbGYuX21v
ZF9jb2xsZWN0aW9uc1ttb2Rjb2xdID0gbGlzdChtb2Rjb2wuY29sbGVjdCgpKQotICAgICAgICBm
b3IgY29saXRlbSBpbiBzZWxmLl9tb2RfY29sbGVjdGlvbnNbbW9kY29sXToKLSAgICAgICAgICAg
IGlmIGNvbGl0ZW0ubmFtZSA9PSBuYW1lOgotICAgICAgICAgICAgICAgIHJldHVybiBjb2xpdGVt
Ci0KLSAgICBkZWYgcG9wZW4oc2VsZiwgY21kYXJncywgc3Rkb3V0LCBzdGRlcnIsICoqa3cpOgot
ICAgICAgICAiIiJJbnZva2Ugc3VicHJvY2Vzcy5Qb3Blbi4KLQotICAgICAgICBUaGlzIGNhbGxz
IHN1YnByb2Nlc3MuUG9wZW4gbWFraW5nIHN1cmUgdGhlIGN1cnJlbnQgd29ya2luZwotICAgICAg
ICBkaXJlY3RvcnkgaXMgdGhlIFBZVEhPTlBBVEguCi0KLSAgICAgICAgWW91IHByb2JhYmx5IHdh
bnQgdG8gdXNlIDpweTptZXRoOmBydW5gIGluc3RlYWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAg
IGVudiA9IG9zLmVudmlyb24uY29weSgpCi0gICAgICAgIGVudlsnUFlUSE9OUEFUSCddID0gb3Mu
cGF0aHNlcC5qb2luKGZpbHRlcihOb25lLCBbCi0gICAgICAgICAgICBzdHIob3MuZ2V0Y3dkKCkp
LCBlbnYuZ2V0KCdQWVRIT05QQVRIJywgJycpXSkpCi0gICAgICAgIGt3WydlbnYnXSA9IGVudgot
Ci0gICAgICAgIHBvcGVuID0gc3VicHJvY2Vzcy5Qb3BlbihjbWRhcmdzLCBzdGRpbj1zdWJwcm9j
ZXNzLlBJUEUsIHN0ZG91dD1zdGRvdXQsIHN0ZGVycj1zdGRlcnIsICoqa3cpCi0gICAgICAgIHBv
cGVuLnN0ZGluLmNsb3NlKCkKLQotICAgICAgICByZXR1cm4gcG9wZW4KLQotICAgIGRlZiBydW4o
c2VsZiwgKmNtZGFyZ3MpOgotICAgICAgICAiIiJSdW4gYSBjb21tYW5kIHdpdGggYXJndW1lbnRz
LgotCi0gICAgICAgIFJ1biBhIHByb2Nlc3MgdXNpbmcgc3VicHJvY2Vzcy5Qb3BlbiBzYXZpbmcg
dGhlIHN0ZG91dCBhbmQKLSAgICAgICAgc3RkZXJyLgotCi0gICAgICAgIFJldHVybnMgYSA6cHk6
Y2xhc3M6YFJ1blJlc3VsdGAuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLl9y
dW4oKmNtZGFyZ3MpCi0KLSAgICBkZWYgX3J1bihzZWxmLCAqY21kYXJncyk6Ci0gICAgICAgIGNt
ZGFyZ3MgPSBbc3RyKHgpIGZvciB4IGluIGNtZGFyZ3NdCi0gICAgICAgIHAxID0gc2VsZi50bXBk
aXIuam9pbigic3Rkb3V0IikKLSAgICAgICAgcDIgPSBzZWxmLnRtcGRpci5qb2luKCJzdGRlcnIi
KQotICAgICAgICBwcmludCgicnVubmluZzoiLCAnICcuam9pbihjbWRhcmdzKSkKLSAgICAgICAg
cHJpbnQoIiAgICAgaW46Iiwgc3RyKHB5LnBhdGgubG9jYWwoKSkpCi0gICAgICAgIGYxID0gY29k
ZWNzLm9wZW4oc3RyKHAxKSwgInciLCBlbmNvZGluZz0idXRmOCIpCi0gICAgICAgIGYyID0gY29k
ZWNzLm9wZW4oc3RyKHAyKSwgInciLCBlbmNvZGluZz0idXRmOCIpCi0gICAgICAgIHRyeToKLSAg
ICAgICAgICAgIG5vdyA9IHRpbWUudGltZSgpCi0gICAgICAgICAgICBwb3BlbiA9IHNlbGYucG9w
ZW4oY21kYXJncywgc3Rkb3V0PWYxLCBzdGRlcnI9ZjIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2xvc2VfZmRzPShzeXMucGxhdGZvcm0gIT0gIndpbjMyIikpCi0gICAgICAgICAg
ICByZXQgPSBwb3Blbi53YWl0KCkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYxLmNs
b3NlKCkKLSAgICAgICAgICAgIGYyLmNsb3NlKCkKLSAgICAgICAgZjEgPSBjb2RlY3Mub3Blbihz
dHIocDEpLCAiciIsIGVuY29kaW5nPSJ1dGY4IikKLSAgICAgICAgZjIgPSBjb2RlY3Mub3Blbihz
dHIocDIpLCAiciIsIGVuY29kaW5nPSJ1dGY4IikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAg
b3V0ID0gZjEucmVhZCgpLnNwbGl0bGluZXMoKQotICAgICAgICAgICAgZXJyID0gZjIucmVhZCgp
LnNwbGl0bGluZXMoKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZjEuY2xvc2UoKQot
ICAgICAgICAgICAgZjIuY2xvc2UoKQotICAgICAgICBzZWxmLl9kdW1wX2xpbmVzKG91dCwgc3lz
LnN0ZG91dCkKLSAgICAgICAgc2VsZi5fZHVtcF9saW5lcyhlcnIsIHN5cy5zdGRlcnIpCi0gICAg
ICAgIHJldHVybiBSdW5SZXN1bHQocmV0LCBvdXQsIGVyciwgdGltZS50aW1lKCkgLSBub3cpCi0K
LSAgICBkZWYgX2R1bXBfbGluZXMoc2VsZiwgbGluZXMsIGZwKToKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXM6Ci0gICAgICAgICAgICAgICAgcHJpbnQobGluZSwg
ZmlsZT1mcCkKLSAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKLSAgICAgICAgICAg
IHByaW50KCJjb3VsZG4ndCBwcmludCB0byAlcyBiZWNhdXNlIG9mIGVuY29kaW5nIiAlIChmcCwp
KQotCi0gICAgZGVmIF9nZXRweXRlc3RhcmdzKHNlbGYpOgotICAgICAgICAjIHdlIGNhbm5vdCB1
c2UgIihzeXMuZXhlY3V0YWJsZSxzY3JpcHQpIgotICAgICAgICAjIGJlY2F1c2Ugb24gd2luZG93
cyB0aGUgc2NyaXB0IGlzIGUuZy4gYSBweXRlc3QuZXhlCi0gICAgICAgIHJldHVybiAoc3lzLmV4
ZWN1dGFibGUsIFBZVEVTVF9GVUxMUEFUSCkgIyBub3FhCi0KLSAgICBkZWYgcnVucHl0aG9uKHNl
bGYsIHNjcmlwdCk6Ci0gICAgICAgICIiIlJ1biBhIHB5dGhvbiBzY3JpcHQgdXNpbmcgc3lzLmV4
ZWN1dGFibGUgYXMgaW50ZXJwcmV0ZXIuCi0KLSAgICAgICAgUmV0dXJucyBhIDpweTpjbGFzczpg
UnVuUmVzdWx0YC4KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnJ1bihzeXMuZXhl
Y3V0YWJsZSwgc2NyaXB0KQotCi0gICAgZGVmIHJ1bnB5dGhvbl9jKHNlbGYsIGNvbW1hbmQpOgot
ICAgICAgICAiIiJSdW4gcHl0aG9uIC1jICJjb21tYW5kIiwgcmV0dXJuIGEgOnB5OmNsYXNzOmBS
dW5SZXN1bHRgLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5ydW4oc3lzLmV4ZWN1dGFibGUsICIt
YyIsIGNvbW1hbmQpCi0KLSAgICBkZWYgcnVucHl0ZXN0X3N1YnByb2Nlc3Moc2VsZiwgKmFyZ3Ms
ICoqa3dhcmdzKToKLSAgICAgICAgIiIiUnVuIHB5dGVzdCBhcyBhIHN1YnByb2Nlc3Mgd2l0aCBn
aXZlbiBhcmd1bWVudHMuCi0KLSAgICAgICAgQW55IHBsdWdpbnMgYWRkZWQgdG8gdGhlIDpweTph
dHRyOmBwbHVnaW5zYCBsaXN0IHdpbGwgYWRkZWQKLSAgICAgICAgdXNpbmcgdGhlIGBgLXBgYCBj
b21tYW5kIGxpbmUgb3B0aW9uLiAgQWRkdGlvbmFsbHkKLSAgICAgICAgYGAtLWJhc2V0ZW1wYGAg
aXMgdXNlZCBwdXQgYW55IHRlbXBvcmFyeSBmaWxlcyBhbmQgZGlyZWN0b3JpZXMKLSAgICAgICAg
aW4gYSBudW1iZXJlZCBkaXJlY3RvcnkgcHJlZml4ZWQgd2l0aCAicnVucHl0ZXN0LSIgc28gdGhl
eSBkbwotICAgICAgICBub3QgY29uZmxpY3Qgd2l0aCB0aGUgbm9ybWFsIG51bWJlcmQgcHl0ZXN0
IGxvY2F0aW9uIGZvcgotICAgICAgICB0ZW1wb3JhcnkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgot
Ci0gICAgICAgIFJldHVybnMgYSA6cHk6Y2xhc3M6YFJ1blJlc3VsdGAuCi0KLSAgICAgICAgIiIi
Ci0gICAgICAgIHAgPSBweS5wYXRoLmxvY2FsLm1ha2VfbnVtYmVyZWRfZGlyKHByZWZpeD0icnVu
cHl0ZXN0LSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtl
ZXA9Tm9uZSwgcm9vdGRpcj1zZWxmLnRtcGRpcikKLSAgICAgICAgYXJncyA9ICgnLS1iYXNldGVt
cD0lcycgJSBwLCApICsgYXJncwotICAgICAgICAjIGZvciB4IGluIGFyZ3M6Ci0gICAgICAgICMg
ICAgaWYgJy0tY29uZmN1dGRpcicgaW4gc3RyKHgpOgotICAgICAgICAjICAgICAgICBicmVhawot
ICAgICAgICAjIGVsc2U6Ci0gICAgICAgICMgICAgcGFzcwotICAgICAgICAjICAgIGFyZ3MgPSAo
Jy0tY29uZmN1dGRpcj0uJywpICsgYXJncwotICAgICAgICBwbHVnaW5zID0gW3ggZm9yIHggaW4g
c2VsZi5wbHVnaW5zIGlmIGlzaW5zdGFuY2UoeCwgc3RyKV0KLSAgICAgICAgaWYgcGx1Z2luczoK
LSAgICAgICAgICAgIGFyZ3MgPSAoJy1wJywgcGx1Z2luc1swXSkgKyBhcmdzCi0gICAgICAgIGFy
Z3MgPSBzZWxmLl9nZXRweXRlc3RhcmdzKCkgKyBhcmdzCi0gICAgICAgIHJldHVybiBzZWxmLnJ1
bigqYXJncykKLQotICAgIGRlZiBzcGF3bl9weXRlc3Qoc2VsZiwgc3RyaW5nLCBleHBlY3RfdGlt
ZW91dD0xMC4wKToKLSAgICAgICAgIiIiUnVuIHB5dGVzdCB1c2luZyBwZXhwZWN0LgotCi0gICAg
ICAgIFRoaXMgbWFrZXMgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IHB5dGVzdCBhbmQgc2V0cyB1cCB0
aGUKLSAgICAgICAgdGVtcG9yYXJ5IGRpcmVjdG9yeSBsb2NhdGlvbnMuCi0KLSAgICAgICAgVGhl
IHBleHBlY3QgY2hpbGQgaXMgcmV0dXJuZWQuCi0KLSAgICAgICAgIiIiCi0gICAgICAgIGJhc2V0
ZW1wID0gc2VsZi50bXBkaXIubWtkaXIoInRlbXAtcGV4cGVjdCIpCi0gICAgICAgIGludm9rZSA9
ICIgIi5qb2luKG1hcChzdHIsIHNlbGYuX2dldHB5dGVzdGFyZ3MoKSkpCi0gICAgICAgIGNtZCA9
ICIlcyAtLWJhc2V0ZW1wPSVzICVzIiAlIChpbnZva2UsIGJhc2V0ZW1wLCBzdHJpbmcpCi0gICAg
ICAgIHJldHVybiBzZWxmLnNwYXduKGNtZCwgZXhwZWN0X3RpbWVvdXQ9ZXhwZWN0X3RpbWVvdXQp
Ci0KLSAgICBkZWYgc3Bhd24oc2VsZiwgY21kLCBleHBlY3RfdGltZW91dD0xMC4wKToKLSAgICAg
ICAgIiIiUnVuIGEgY29tbWFuZCB1c2luZyBwZXhwZWN0LgotCi0gICAgICAgIFRoZSBwZXhwZWN0
IGNoaWxkIGlzIHJldHVybmVkLgotICAgICAgICAiIiIKLSAgICAgICAgcGV4cGVjdCA9IHB5dGVz
dC5pbXBvcnRvcnNraXAoInBleHBlY3QiLCAiMy4wIikKLSAgICAgICAgaWYgaGFzYXR0cihzeXMs
ICdweXB5X3ZlcnNpb25faW5mbycpIGFuZCAnNjQnIGluIHBsYXRmb3JtLm1hY2hpbmUoKToKLSAg
ICAgICAgICAgIHB5dGVzdC5za2lwKCJweXB5LTY0IGJpdCBub3Qgc3VwcG9ydGVkIikKLSAgICAg
ICAgaWYgc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoImZyZWVic2QiKToKLSAgICAgICAgICAgIHB5
dGVzdC54ZmFpbCgicGV4cGVjdCBkb2VzIG5vdCB3b3JrIHJlbGlhYmx5IG9uIGZyZWVic2QiKQot
ICAgICAgICBsb2dmaWxlID0gc2VsZi50bXBkaXIuam9pbigic3Bhd24ub3V0Iikub3Blbigid2Ii
KQotICAgICAgICBjaGlsZCA9IHBleHBlY3Quc3Bhd24oY21kLCBsb2dmaWxlPWxvZ2ZpbGUpCi0g
ICAgICAgIHNlbGYucmVxdWVzdC5hZGRmaW5hbGl6ZXIobG9nZmlsZS5jbG9zZSkKLSAgICAgICAg
Y2hpbGQudGltZW91dCA9IGV4cGVjdF90aW1lb3V0Ci0gICAgICAgIHJldHVybiBjaGlsZAotCi0K
LWRlZiBnZXRkZWNvZGVkKG91dCk6Ci0gICAgdHJ5OgotICAgICAgICByZXR1cm4gb3V0LmRlY29k
ZSgidXRmLTgiKQotICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgIHJldHVy
biAiSU5URVJOQUwgbm90LXV0ZjgtZGVjb2RlYWJsZSwgdHJ1bmNhdGVkIHN0cmluZzpcbiVzIiAl
ICgKLSAgICAgICAgICAgIHB5LmlvLnNhZmVyZXByKG91dCksKQotCi0KLWNsYXNzIExpbmVDb21w
OgotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5zdHJpbmdpbyA9IHB5Lmlv
LlRleHRJTygpCi0KLSAgICBkZWYgYXNzZXJ0X2NvbnRhaW5zX2xpbmVzKHNlbGYsIGxpbmVzMik6
Ci0gICAgICAgICIiIiBhc3NlcnQgdGhhdCBsaW5lczIgYXJlIGNvbnRhaW5lZCAobGluZWFybHkp
IGluIGxpbmVzMS4KLSAgICAgICAgICAgIHJldHVybiBhIGxpc3Qgb2YgZXh0cmFsaW5lcyBmb3Vu
ZC4KLSAgICAgICAgIiIiCi0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAg
ICB2YWwgPSBzZWxmLnN0cmluZ2lvLmdldHZhbHVlKCkKLSAgICAgICAgc2VsZi5zdHJpbmdpby50
cnVuY2F0ZSgwKQotICAgICAgICBzZWxmLnN0cmluZ2lvLnNlZWsoMCkKLSAgICAgICAgbGluZXMx
ID0gdmFsLnNwbGl0KCJcbiIpCi0gICAgICAgIHJldHVybiBMaW5lTWF0Y2hlcihsaW5lczEpLmZu
bWF0Y2hfbGluZXMobGluZXMyKQotCi0KLWNsYXNzIExpbmVNYXRjaGVyOgotICAgICIiIkZsZXhp
YmxlIG1hdGNoaW5nIG9mIHRleHQuCi0KLSAgICBUaGlzIGlzIGEgY29udmVuaWVuY2UgY2xhc3Mg
dG8gdGVzdCBsYXJnZSB0ZXh0cyBsaWtlIHRoZSBvdXRwdXQgb2YKLSAgICBjb21tYW5kcy4KLQot
ICAgIFRoZSBjb25zdHJ1Y3RvciB0YWtlcyBhIGxpc3Qgb2YgbGluZXMgd2l0aG91dCB0aGVpciB0
cmFpbGluZwotICAgIG5ld2xpbmVzLCBpLmUuIGBgdGV4dC5zcGxpdGxpbmVzKClgYC4KLQotICAg
ICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpbmVzKToKLSAgICAgICAgc2VsZi5saW5l
cyA9IGxpbmVzCi0gICAgICAgIHNlbGYuX2xvZ19vdXRwdXQgPSBbXQotCi0gICAgZGVmIHN0cihz
ZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgb3JpZ2luYWwgdGV4dC4iIiIKLSAg
ICAgICAgcmV0dXJuICJcbiIuam9pbihzZWxmLmxpbmVzKQotCi0gICAgZGVmIF9nZXRsaW5lcyhz
ZWxmLCBsaW5lczIpOgotICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmVzMiwgc3RyKToKLSAgICAg
ICAgICAgIGxpbmVzMiA9IFNvdXJjZShsaW5lczIpCi0gICAgICAgIGlmIGlzaW5zdGFuY2UobGlu
ZXMyLCBTb3VyY2UpOgotICAgICAgICAgICAgbGluZXMyID0gbGluZXMyLnN0cmlwKCkubGluZXMK
LSAgICAgICAgcmV0dXJuIGxpbmVzMgotCi0gICAgZGVmIGZubWF0Y2hfbGluZXNfcmFuZG9tKHNl
bGYsIGxpbmVzMik6Ci0gICAgICAgICIiIkNoZWNrIGxpbmVzIGV4aXN0IGluIHRoZSBvdXRwdXQg
dXNpbmcgYGBmbm1hdGNoLmZubWF0Y2hgYCwgaW4gYW55IG9yZGVyLgotCi0gICAgICAgIFRoZSBh
cmd1bWVudCBpcyBhIGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2ZSB0byBvY2N1ciBpbiB0aGUKLSAg
ICAgICAgb3V0cHV0LCBpbiBhbnkgb3JkZXIuCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9t
YXRjaF9saW5lc19yYW5kb20obGluZXMyLCBmbm1hdGNoKQotCi0gICAgZGVmIHJlX21hdGNoX2xp
bmVzX3JhbmRvbShzZWxmLCBsaW5lczIpOgotICAgICAgICAiIiJDaGVjayBsaW5lcyBleGlzdCBp
biB0aGUgb3V0cHV0IHVzaW5nIGBgcmUubWF0Y2hgYCwgaW4gYW55IG9yZGVyLgotCi0gICAgICAg
IFRoZSBhcmd1bWVudCBpcyBhIGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2ZSB0byBvY2N1ciBpbiB0
aGUKLSAgICAgICAgb3V0cHV0LCBpbiBhbnkgb3JkZXIuCi0KLSAgICAgICAgIiIiCi0gICAgICAg
IHNlbGYuX21hdGNoX2xpbmVzX3JhbmRvbShsaW5lczIsIGxhbWJkYSBuYW1lLCBwYXQ6IHJlLm1h
dGNoKHBhdCwgbmFtZSkpCi0KLSAgICBkZWYgX21hdGNoX2xpbmVzX3JhbmRvbShzZWxmLCBsaW5l
czIsIG1hdGNoX2Z1bmMpOgotICAgICAgICAiIiJDaGVjayBsaW5lcyBleGlzdCBpbiB0aGUgb3V0
cHV0LgotCi0gICAgICAgIFRoZSBhcmd1bWVudCBpcyBhIGxpc3Qgb2YgbGluZXMgd2hpY2ggaGF2
ZSB0byBvY2N1ciBpbiB0aGUKLSAgICAgICAgb3V0cHV0LCBpbiBhbnkgb3JkZXIuICBFYWNoIGxp
bmUgY2FuIGNvbnRhaW4gZ2xvYiB3aGlsZGNhcmRzLgotCi0gICAgICAgICIiIgotICAgICAgICBs
aW5lczIgPSBzZWxmLl9nZXRsaW5lcyhsaW5lczIpCi0gICAgICAgIGZvciBsaW5lIGluIGxpbmVz
MjoKLSAgICAgICAgICAgIGZvciB4IGluIHNlbGYubGluZXM6Ci0gICAgICAgICAgICAgICAgaWYg
bGluZSA9PSB4IG9yIG1hdGNoX2Z1bmMoeCwgbGluZSk6Ci0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX2xvZygibWF0Y2hlZDogIiwgcmVwcihsaW5lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nKCJsaW5lICVy
IG5vdCBmb3VuZCBpbiBvdXRwdXQiICUgbGluZSkKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1
ZUVycm9yKHNlbGYuX2xvZ190ZXh0KQotCi0gICAgZGVmIGdldF9saW5lc19hZnRlcihzZWxmLCBm
bmxpbmUpOgotICAgICAgICAiIiJSZXR1cm4gYWxsIGxpbmVzIGZvbGxvd2luZyB0aGUgZ2l2ZW4g
bGluZSBpbiB0aGUgdGV4dC4KLQotICAgICAgICBUaGUgZ2l2ZW4gbGluZSBjYW4gY29udGFpbiBn
bG9iIHdpbGRjYXJkcy4KLSAgICAgICAgIiIiCi0gICAgICAgIGZvciBpLCBsaW5lIGluIGVudW1l
cmF0ZShzZWxmLmxpbmVzKToKLSAgICAgICAgICAgIGlmIGZubGluZSA9PSBsaW5lIG9yIGZubWF0
Y2gobGluZSwgZm5saW5lKToKLSAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5saW5lc1tpICsg
MTpdCi0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImxpbmUgJXIgbm90IGZvdW5kIGluIG91dHB1
dCIgJSBmbmxpbmUpCi0KLSAgICBkZWYgX2xvZyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIHNlbGYu
X2xvZ19vdXRwdXQuYXBwZW5kKCcgJy5qb2luKChzdHIoeCkgZm9yIHggaW4gYXJncykpKQotCi0g
ICAgQHByb3BlcnR5Ci0gICAgZGVmIF9sb2dfdGV4dChzZWxmKToKLSAgICAgICAgcmV0dXJuICdc
bicuam9pbihzZWxmLl9sb2dfb3V0cHV0KQotCi0gICAgZGVmIGZubWF0Y2hfbGluZXMoc2VsZiwg
bGluZXMyKToKLSAgICAgICAgIiIiU2VhcmNoIGNhcHR1cmVkIHRleHQgZm9yIG1hdGNoaW5nIGxp
bmVzIHVzaW5nIGBgZm5tYXRjaC5mbm1hdGNoYGAuCi0KLSAgICAgICAgVGhlIGFyZ3VtZW50IGlz
IGEgbGlzdCBvZiBsaW5lcyB3aGljaCBoYXZlIHRvIG1hdGNoIGFuZCBjYW4KLSAgICAgICAgdXNl
IGdsb2Igd2lsZGNhcmRzLiAgSWYgdGhleSBkbyBub3QgbWF0Y2ggYSBweXRlc3QuZmFpbCgpIGlz
Ci0gICAgICAgIGNhbGxlZC4gIFRoZSBtYXRjaGVzIGFuZCBub24tbWF0Y2hlcyBhcmUgYWxzbyBw
cmludGVkIG9uCi0gICAgICAgIHN0ZG91dC4KLQotICAgICAgICAiIiIKLSAgICAgICAgc2VsZi5f
bWF0Y2hfbGluZXMobGluZXMyLCBmbm1hdGNoLCAnZm5tYXRjaCcpCi0KLSAgICBkZWYgcmVfbWF0
Y2hfbGluZXMoc2VsZiwgbGluZXMyKToKLSAgICAgICAgIiIiU2VhcmNoIGNhcHR1cmVkIHRleHQg
Zm9yIG1hdGNoaW5nIGxpbmVzIHVzaW5nIGBgcmUubWF0Y2hgYC4KLQotICAgICAgICBUaGUgYXJn
dW1lbnQgaXMgYSBsaXN0IG9mIGxpbmVzIHdoaWNoIGhhdmUgdG8gbWF0Y2ggdXNpbmcgYGByZS5t
YXRjaGBgLgotICAgICAgICBJZiB0aGV5IGRvIG5vdCBtYXRjaCBhIHB5dGVzdC5mYWlsKCkgaXMg
Y2FsbGVkLgotCi0gICAgICAgIFRoZSBtYXRjaGVzIGFuZCBub24tbWF0Y2hlcyBhcmUgYWxzbyBw
cmludGVkIG9uCi0gICAgICAgIHN0ZG91dC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX21h
dGNoX2xpbmVzKGxpbmVzMiwgbGFtYmRhIG5hbWUsIHBhdDogcmUubWF0Y2gocGF0LCBuYW1lKSwg
J3JlLm1hdGNoJykKLQotICAgIGRlZiBfbWF0Y2hfbGluZXMoc2VsZiwgbGluZXMyLCBtYXRjaF9m
dW5jLCBtYXRjaF9uaWNrbmFtZSk6Ci0gICAgICAgICIiIlVuZGVybHlpbmcgaW1wbGVtZW50YXRp
b24gb2YgYGBmbm1hdGNoX2xpbmVzYGAgYW5kIGBgcmVfbWF0Y2hfbGluZXNgYC4KLQotICAgICAg
ICA6cGFyYW0gbGlzdFtzdHJdIGxpbmVzMjogbGlzdCBvZiBzdHJpbmcgcGF0dGVybnMgdG8gbWF0
Y2guIFRoZSBhY3R1YWwgZm9ybWF0IGRlcGVuZHMgb24KLSAgICAgICAgICAgIGBgbWF0Y2hfZnVu
Y2BgLgotICAgICAgICA6cGFyYW0gbWF0Y2hfZnVuYzogYSBjYWxsYWJsZSBgYG1hdGNoX2Z1bmMo
bGluZSwgcGF0dGVybilgYCB3aGVyZSBsaW5lIGlzIHRoZSBjYXB0dXJlZAotICAgICAgICAgICAg
bGluZSBmcm9tIHN0ZG91dC9zdGRlcnIgYW5kIHBhdHRlcm4gaXMgdGhlIG1hdGNoaW5nIHBhdHRl
cm4uCi0KLSAgICAgICAgOnBhcmFtIHN0ciBtYXRjaF9uaWNrbmFtZTogdGhlIG5pY2tuYW1lIGZv
ciB0aGUgbWF0Y2ggZnVuY3Rpb24gdGhhdCB3aWxsIGJlIGxvZ2dlZAotICAgICAgICAgICAgdG8g
c3Rkb3V0IHdoZW4gYSBtYXRjaCBvY2N1cnMuCi0gICAgICAgICIiIgotICAgICAgICBsaW5lczIg
PSBzZWxmLl9nZXRsaW5lcyhsaW5lczIpCi0gICAgICAgIGxpbmVzMSA9IHNlbGYubGluZXNbOl0K
LSAgICAgICAgbmV4dGxpbmUgPSBOb25lCi0gICAgICAgIGV4dHJhbGluZXMgPSBbXQotICAgICAg
ICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICAgICAgZm9yIGxpbmUgaW4gbGluZXMyOgot
ICAgICAgICAgICAgbm9tYXRjaHByaW50ZWQgPSBGYWxzZQotICAgICAgICAgICAgd2hpbGUgbGlu
ZXMxOgotICAgICAgICAgICAgICAgIG5leHRsaW5lID0gbGluZXMxLnBvcCgwKQotICAgICAgICAg
ICAgICAgIGlmIGxpbmUgPT0gbmV4dGxpbmU6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX2xv
ZygiZXhhY3QgbWF0Y2g6IiwgcmVwcihsaW5lKSkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsK
LSAgICAgICAgICAgICAgICBlbGlmIG1hdGNoX2Z1bmMobmV4dGxpbmUsIGxpbmUpOgotICAgICAg
ICAgICAgICAgICAgICBzZWxmLl9sb2coIiVzOiIgJSBtYXRjaF9uaWNrbmFtZSwgcmVwcihsaW5l
KSkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fbG9nKCIgICB3aXRoOiIsIHJlcHIobmV4dGxp
bmUpKQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgICAgIGlmIG5vdCBub21hdGNocHJpbnRlZDoKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuX2xvZygibm9tYXRjaDoiLCByZXByKGxpbmUpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgbm9tYXRjaHByaW50ZWQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgIHNl
bGYuX2xvZygiICAgIGFuZDoiLCByZXByKG5leHRsaW5lKSkKLSAgICAgICAgICAgICAgICBleHRy
YWxpbmVzLmFwcGVuZChuZXh0bGluZSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAg
ICAgc2VsZi5fbG9nKCJyZW1haW5zIHVubWF0Y2hlZDogJXIiICUgKGxpbmUsKSkKLSAgICAgICAg
ICAgICAgICBweXRlc3QuZmFpbChzZWxmLl9sb2dfdGV4dCkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L19weXRlc3QvcHl0aG9uLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRob24ucHkKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1MDE3MWE5ZTljOTA5MDlkYTNjZTI3YmE1OTYz
OGE1ZmM5YjE2NDUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRob24ucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxMTc1
ICswLDAgQEAKLSIiIiBQeXRob24gdGVzdCBkaXNjb3ZlcnksIHNldHVwIGFuZCBydW4gb2YgdGVz
dCBmdW5jdGlvbnMuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQs
IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgZm5tYXRjaAotaW1wb3J0IGluc3Bl
Y3QKLWltcG9ydCBzeXMKLWltcG9ydCBvcwotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgd2Fy
bmluZ3MKLWZyb20gdGV4dHdyYXAgaW1wb3J0IGRlZGVudAotZnJvbSBpdGVydG9vbHMgaW1wb3J0
IGNvdW50Ci0KLQotaW1wb3J0IHB5Ci1pbXBvcnQgc2l4Ci1mcm9tIF9weXRlc3QubWFyayBpbXBv
cnQgTWFya2VyRXJyb3IKLWZyb20gX3B5dGVzdC5jb25maWcgaW1wb3J0IGhvb2tpbXBsCi0KLWlt
cG9ydCBfcHl0ZXN0Ci1pbXBvcnQgcGx1Z2d5Ci1mcm9tIF9weXRlc3QgaW1wb3J0IGZpeHR1cmVz
Ci1mcm9tIF9weXRlc3QgaW1wb3J0IG1haW4KLWZyb20gX3B5dGVzdCBpbXBvcnQgZGVwcmVjYXRl
ZAotZnJvbSBfcHl0ZXN0LmNvbXBhdCBpbXBvcnQgKAotICAgIGlzY2xhc3MsIGlzZnVuY3Rpb24s
IGlzX2dlbmVyYXRvciwgYXNjaWlfZXNjYXBlZCwKLSAgICBSRUdFWF9UWVBFLCBTVFJJTkdfVFlQ
RVMsIE5vbmVUeXBlLCBOT1RTRVQsCi0gICAgZ2V0X3JlYWxfZnVuYywgZ2V0ZnNsaW5lbm8sIHNh
ZmVfZ2V0YXR0ciwKLSAgICBzYWZlX3N0ciwgZ2V0bG9jYXRpb24sIGVudW0sCi0pCi1mcm9tIF9w
eXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwKLWZyb20gX3B5dGVzdC5tYXJrIGltcG9ydCB0cmFu
c2Zlcl9tYXJrZXJzCi0KLWN1dGRpcjEgPSBweS5wYXRoLmxvY2FsKHBsdWdneS5fX2ZpbGVfXy5y
c3RyaXAoIm9jIikpCi1jdXRkaXIyID0gcHkucGF0aC5sb2NhbChfcHl0ZXN0Ll9fZmlsZV9fKS5k
aXJwYXRoKCkKLWN1dGRpcjMgPSBweS5wYXRoLmxvY2FsKHB5Ll9fZmlsZV9fKS5kaXJwYXRoKCkK
LQotCi1kZWYgZmlsdGVyX3RyYWNlYmFjayhlbnRyeSk6Ci0gICAgIiIiUmV0dXJuIFRydWUgaWYg
YSBUcmFjZWJhY2tFbnRyeSBpbnN0YW5jZSBzaG91bGQgYmUgcmVtb3ZlZCBmcm9tIHRyYWNlYmFj
a3M6Ci0gICAgKiBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZSAobm8gY29kZSB0byBzaG93IHVw
IGZvciBpdCk7Ci0gICAgKiBpbnRlcm5hbCB0cmFjZWJhY2sgZnJvbSBweXRlc3Qgb3IgaXRzIGlu
dGVybmFsIGxpYnJhcmllcywgcHkgYW5kIHBsdWdneS4KLSAgICAiIiIKLSAgICAjIGVudHJ5LnBh
dGggbWlnaHQgc29tZXRpbWVzIHJldHVybiBhIHN0ciBvYmplY3Qgd2hlbiB0aGUgZW50cnkKLSAg
ICAjIHBvaW50cyB0byBkeW5hbWljYWxseSBnZW5lcmF0ZWQgY29kZQotICAgICMgc2VlIGh0dHBz
Oi8vYml0YnVja2V0Lm9yZy9weXRlc3QtZGV2L3B5L2lzc3Vlcy83MQotICAgIHJhd19maWxlbmFt
ZSA9IGVudHJ5LmZyYW1lLmNvZGUucmF3LmNvX2ZpbGVuYW1lCi0gICAgaXNfZ2VuZXJhdGVkID0g
JzwnIGluIHJhd19maWxlbmFtZSBhbmQgJz4nIGluIHJhd19maWxlbmFtZQotICAgIGlmIGlzX2dl
bmVyYXRlZDoKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgIyBlbnRyeS5wYXRoIG1pZ2h0IHBv
aW50IHRvIGFuIGluZXhpc3RpbmcgZmlsZSwgaW4gd2hpY2ggY2FzZSBpdCB3aWxsCi0gICAgIyBh
bHNzbyByZXR1cm4gYSBzdHIgb2JqZWN0LiBzZWUgIzExMzMKLSAgICBwID0gcHkucGF0aC5sb2Nh
bChlbnRyeS5wYXRoKQotICAgIHJldHVybiBwICE9IGN1dGRpcjEgYW5kIG5vdCBwLnJlbHRvKGN1
dGRpcjIpIGFuZCBub3QgcC5yZWx0byhjdXRkaXIzKQotCi0KLWRlZiBweW9ial9wcm9wZXJ0eShu
YW1lKToKLSAgICBkZWYgZ2V0KHNlbGYpOgotICAgICAgICBub2RlID0gc2VsZi5nZXRwYXJlbnQo
Z2V0YXR0cihfX2ltcG9ydF9fKCdweXRlc3QnKSwgbmFtZSkpCi0gICAgICAgIGlmIG5vZGUgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gbm9kZS5vYmoKLSAgICBkb2MgPSAicHl0aG9u
ICVzIG9iamVjdCB0aGlzIG5vZGUgd2FzIGNvbGxlY3RlZCBmcm9tIChjYW4gYmUgTm9uZSkuIiAl
ICgKLSAgICAgICAgICBuYW1lLmxvd2VyKCksKQotICAgIHJldHVybiBwcm9wZXJ0eShnZXQsIE5v
bmUsIE5vbmUsIGRvYykKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdy
b3VwID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0t
Zml4dHVyZXMnLCAnLS1mdW5jYXJncycsCi0gICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsIGRlc3Q9InNob3dmaXh0dXJlcyIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAg
ICAgICAgICAgIGhlbHA9InNob3cgYXZhaWxhYmxlIGZpeHR1cmVzLCBzb3J0ZWQgYnkgcGx1Z2lu
IGFwcGVhcmFuY2UiKQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAgJy0tZml4dHVyZXMt
cGVyLXRlc3QnLAotICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICBkZXN0PSJz
aG93X2ZpeHR1cmVzX3Blcl90ZXN0IiwKLSAgICAgICAgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAg
aGVscD0ic2hvdyBmaXh0dXJlcyBwZXIgdGVzdCIsCi0gICAgKQotICAgIHBhcnNlci5hZGRpbmko
InVzZWZpeHR1cmVzIiwgdHlwZT0iYXJncyIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICAgICAg
ICBoZWxwPSJsaXN0IG9mIGRlZmF1bHQgZml4dHVyZXMgdG8gYmUgdXNlZCB3aXRoIHRoaXMgcHJv
amVjdCIpCi0gICAgcGFyc2VyLmFkZGluaSgicHl0aG9uX2ZpbGVzIiwgdHlwZT0iYXJncyIsCi0g
ICAgICAgICAgICAgICAgICBkZWZhdWx0PVsndGVzdF8qLnB5JywgJypfdGVzdC5weSddLAotICAg
ICAgICAgICAgICAgICAgaGVscD0iZ2xvYi1zdHlsZSBmaWxlIHBhdHRlcm5zIGZvciBQeXRob24g
dGVzdCBtb2R1bGUgZGlzY292ZXJ5IikKLSAgICBwYXJzZXIuYWRkaW5pKCJweXRob25fY2xhc3Nl
cyIsIHR5cGU9ImFyZ3MiLCBkZWZhdWx0PVsiVGVzdCIsIF0sCi0gICAgICAgICAgICAgICAgICBo
ZWxwPSJwcmVmaXhlcyBvciBnbG9iIG5hbWVzIGZvciBQeXRob24gdGVzdCBjbGFzcyBkaXNjb3Zl
cnkiKQotICAgIHBhcnNlci5hZGRpbmkoInB5dGhvbl9mdW5jdGlvbnMiLCB0eXBlPSJhcmdzIiwg
ZGVmYXVsdD1bInRlc3QiLCBdLAotICAgICAgICAgICAgICAgICAgaGVscD0icHJlZml4ZXMgb3Ig
Z2xvYiBuYW1lcyBmb3IgUHl0aG9uIHRlc3QgZnVuY3Rpb24gYW5kICIKLSAgICAgICAgICAgICAg
ICAgICJtZXRob2QgZGlzY292ZXJ5IikKLQotICAgIGdyb3VwLmFkZG9wdGlvbigiLS1pbXBvcnQt
bW9kZSIsIGRlZmF1bHQ9InByZXBlbmQiLAotICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsi
cHJlcGVuZCIsICJhcHBlbmQiXSwgZGVzdD0iaW1wb3J0bW9kZSIsCi0gICAgICAgICAgICAgICAg
ICAgIGhlbHA9InByZXBlbmQvYXBwZW5kIHRvIHN5cy5wYXRoIHdoZW4gaW1wb3J0aW5nIHRlc3Qg
bW9kdWxlcywgIgotICAgICAgICAgICAgICAgICAgICAiZGVmYXVsdCBpcyB0byBwcmVwZW5kLiIp
Ci0KLQotZGVmIHB5dGVzdF9jbWRsaW5lX21haW4oY29uZmlnKToKLSAgICBpZiBjb25maWcub3B0
aW9uLnNob3dmaXh0dXJlczoKLSAgICAgICAgc2hvd2ZpeHR1cmVzKGNvbmZpZykKLSAgICAgICAg
cmV0dXJuIDAKLSAgICBpZiBjb25maWcub3B0aW9uLnNob3dfZml4dHVyZXNfcGVyX3Rlc3Q6Ci0g
ICAgICAgIHNob3dfZml4dHVyZXNfcGVyX3Rlc3QoY29uZmlnKQotICAgICAgICByZXR1cm4gMAot
Ci0KLWRlZiBweXRlc3RfZ2VuZXJhdGVfdGVzdHMobWV0YWZ1bmMpOgotICAgICMgdGhvc2UgYWx0
ZXJuYXRpdmUgc3BlbGxpbmdzIGFyZSBjb21tb24gLSByYWlzZSBhIHNwZWNpZmljIGVycm9yIHRv
IGFsZXJ0Ci0gICAgIyB0aGUgdXNlcgotICAgIGFsdF9zcGVsbGluZ3MgPSBbJ3BhcmFtZXRlcml6
ZScsICdwYXJhbWV0cmlzZScsICdwYXJhbWV0ZXJpc2UnXQotICAgIGZvciBhdHRyIGluIGFsdF9z
cGVsbGluZ3M6Ci0gICAgICAgIGlmIGhhc2F0dHIobWV0YWZ1bmMuZnVuY3Rpb24sIGF0dHIpOgot
ICAgICAgICAgICAgbXNnID0gInswfSBoYXMgJ3sxfScsIHNwZWxsaW5nIHNob3VsZCBiZSAncGFy
YW1ldHJpemUnIgotICAgICAgICAgICAgcmFpc2UgTWFya2VyRXJyb3IobXNnLmZvcm1hdChtZXRh
ZnVuYy5mdW5jdGlvbi5fX25hbWVfXywgYXR0cikpCi0gICAgdHJ5OgotICAgICAgICBtYXJrZXJz
ID0gbWV0YWZ1bmMuZnVuY3Rpb24ucGFyYW1ldHJpemUKLSAgICBleGNlcHQgQXR0cmlidXRlRXJy
b3I6Ci0gICAgICAgIHJldHVybgotICAgIGZvciBtYXJrZXIgaW4gbWFya2VyczoKLSAgICAgICAg
bWV0YWZ1bmMucGFyYW1ldHJpemUoKm1hcmtlci5hcmdzLCAqKm1hcmtlci5rd2FyZ3MpCi0KLQot
ZGVmIHB5dGVzdF9jb25maWd1cmUoY29uZmlnKToKLSAgICBjb25maWcuYWRkaW5pdmFsdWVfbGlu
ZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcmFtZXRyaXplKGFy
Z25hbWVzLCBhcmd2YWx1ZXMpOiBjYWxsIGEgdGVzdCBmdW5jdGlvbiBtdWx0aXBsZSAiCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVzIHBhc3NpbmcgaW4gZGlmZmVyZW50IGFyZ3Vt
ZW50cyBpbiB0dXJuLiBhcmd2YWx1ZXMgZ2VuZXJhbGx5ICIKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAibmVlZHMgdG8gYmUgYSBsaXN0IG9mIHZhbHVlcyBpZiBhcmduYW1lcyBzcGVjaWZp
ZXMgb25seSBvbmUgbmFtZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9yIGEgbGlz
dCBvZiB0dXBsZXMgb2YgdmFsdWVzIGlmIGFyZ25hbWVzIHNwZWNpZmllcyBtdWx0aXBsZSBuYW1l
cy4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJFeGFtcGxlOiBAcGFyYW1ldHJpemUo
J2FyZzEnLCBbMSwyXSkgd291bGQgbGVhZCB0byB0d28gY2FsbHMgb2YgdGhlICIKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAiZGVjb3JhdGVkIHRlc3QgZnVuY3Rpb24sIG9uZSB3aXRoIGFy
ZzE9MSBhbmQgYW5vdGhlciB3aXRoIGFyZzE9Mi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvcGFyYW1ldHJpemUuaHRtbCBmb3IgbW9y
ZSBpbmZvIGFuZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4YW1wbGVzLiIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICApCi0gICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUo
Im1hcmtlcnMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1c2VmaXh0dXJlcyhmaXh0
dXJlbmFtZTEsIGZpeHR1cmVuYW1lMiwgLi4uKTogbWFyayB0ZXN0cyBhcyBuZWVkaW5nICIKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiYWxsIG9mIHRoZSBzcGVjaWZpZWQgZml4dHVyZXMu
IHNlZSBodHRwOi8vcHl0ZXN0Lm9yZy9sYXRlc3QvZml4dHVyZS5odG1sI3VzZWZpeHR1cmVzICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICApCi0KLQotQGhvb2tpbXBsKHRyeWxhc3Q9VHJ1
ZSkKLWRlZiBweXRlc3RfcHlmdW5jX2NhbGwocHlmdW5jaXRlbSk6Ci0gICAgdGVzdGZ1bmN0aW9u
ID0gcHlmdW5jaXRlbS5vYmoKLSAgICBpZiBweWZ1bmNpdGVtLl9pc3lpZWxkZWRmdW5jdGlvbigp
OgotICAgICAgICB0ZXN0ZnVuY3Rpb24oKnB5ZnVuY2l0ZW0uX2FyZ3MpCi0gICAgZWxzZToKLSAg
ICAgICAgZnVuY2FyZ3MgPSBweWZ1bmNpdGVtLmZ1bmNhcmdzCi0gICAgICAgIHRlc3RhcmdzID0g
e30KLSAgICAgICAgZm9yIGFyZyBpbiBweWZ1bmNpdGVtLl9maXh0dXJlaW5mby5hcmduYW1lczoK
LSAgICAgICAgICAgIHRlc3RhcmdzW2FyZ10gPSBmdW5jYXJnc1thcmddCi0gICAgICAgIHRlc3Rm
dW5jdGlvbigqKnRlc3RhcmdzKQotICAgIHJldHVybiBUcnVlCi0KLQotZGVmIHB5dGVzdF9jb2xs
ZWN0X2ZpbGUocGF0aCwgcGFyZW50KToKLSAgICBleHQgPSBwYXRoLmV4dAotICAgIGlmIGV4dCA9
PSAiLnB5IjoKLSAgICAgICAgaWYgbm90IHBhcmVudC5zZXNzaW9uLmlzaW5pdHBhdGgocGF0aCk6
Ci0gICAgICAgICAgICBmb3IgcGF0IGluIHBhcmVudC5jb25maWcuZ2V0aW5pKCdweXRob25fZmls
ZXMnKToKLSAgICAgICAgICAgICAgICBpZiBwYXRoLmZubWF0Y2gocGF0KToKLSAgICAgICAgICAg
ICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJu
Ci0gICAgICAgIGlob29rID0gcGFyZW50LnNlc3Npb24uZ2V0aG9va3Byb3h5KHBhdGgpCi0gICAg
ICAgIHJldHVybiBpaG9vay5weXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aD1wYXRoLCBw
YXJlbnQ9cGFyZW50KQotCi0KLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2Vtb2R1bGUocGF0aCwg
cGFyZW50KToKLSAgICByZXR1cm4gTW9kdWxlKHBhdGgsIHBhcmVudCkKLQotCi1AaG9va2ltcGwo
aG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfcHljb2xsZWN0X21ha2VpdGVtKGNvbGxlY3Rv
ciwgbmFtZSwgb2JqKToKLSAgICBvdXRjb21lID0geWllbGQKLSAgICByZXMgPSBvdXRjb21lLmdl
dF9yZXN1bHQoKQotICAgIGlmIHJlcyBpcyBub3QgTm9uZToKLSAgICAgICAgcmV0dXJuCi0gICAg
IyBub3RoaW5nIHdhcyBjb2xsZWN0ZWQgZWxzZXdoZXJlLCBsZXQncyBkbyBpdCBoZXJlCi0gICAg
aWYgaXNjbGFzcyhvYmopOgotICAgICAgICBpZiBjb2xsZWN0b3IuaXN0ZXN0Y2xhc3Mob2JqLCBu
YW1lKToKLSAgICAgICAgICAgIENsYXNzID0gY29sbGVjdG9yLl9nZXRjdXN0b21jbGFzcygiQ2xh
c3MiKQotICAgICAgICAgICAgb3V0Y29tZS5mb3JjZV9yZXN1bHQoQ2xhc3MobmFtZSwgcGFyZW50
PWNvbGxlY3RvcikpCi0gICAgZWxpZiBjb2xsZWN0b3IuaXN0ZXN0ZnVuY3Rpb24ob2JqLCBuYW1l
KToKLSAgICAgICAgIyBtb2NrIHNlZW1zIHRvIHN0b3JlIHVuYm91bmQgbWV0aG9kcyAoaXNzdWU0
NzMpLCBub3JtYWxpemUgaXQKLSAgICAgICAgb2JqID0gZ2V0YXR0cihvYmosICJfX2Z1bmNfXyIs
IG9iaikKLSAgICAgICAgIyBXZSBuZWVkIHRvIHRyeSBhbmQgdW53cmFwIHRoZSBmdW5jdGlvbiBp
ZiBpdCdzIGEgZnVuY3Rvb2xzLnBhcnRpYWwKLSAgICAgICAgIyBvciBhIGZ1bnRvb2xzLndyYXBw
ZWQuCi0gICAgICAgICMgV2UgbXVzbid0IGlmIGl0J3MgYmVlbiB3cmFwcGVkIHdpdGggbW9jay5w
YXRjaCAocHl0aG9uIDIgb25seSkKLSAgICAgICAgaWYgbm90IChpc2Z1bmN0aW9uKG9iaikgb3Ig
aXNmdW5jdGlvbihnZXRfcmVhbF9mdW5jKG9iaikpKToKLSAgICAgICAgICAgIGNvbGxlY3Rvci53
YXJuKGNvZGU9IkMyIiwgbWVzc2FnZT0iY2Fubm90IGNvbGxlY3QgJXIgYmVjYXVzZSBpdCBpcyBu
b3QgYSBmdW5jdGlvbi4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAlIG5hbWUsICkKLSAg
ICAgICAgZWxpZiBnZXRhdHRyKG9iaiwgIl9fdGVzdF9fIiwgVHJ1ZSk6Ci0gICAgICAgICAgICBp
ZiBpc19nZW5lcmF0b3Iob2JqKToKLSAgICAgICAgICAgICAgICByZXMgPSBHZW5lcmF0b3IobmFt
ZSwgcGFyZW50PWNvbGxlY3RvcikKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
cmVzID0gbGlzdChjb2xsZWN0b3IuX2dlbmZ1bmN0aW9ucyhuYW1lLCBvYmopKQotICAgICAgICAg
ICAgb3V0Y29tZS5mb3JjZV9yZXN1bHQocmVzKQotCi0KLWRlZiBweXRlc3RfbWFrZV9wYXJhbWV0
cml6ZV9pZChjb25maWcsIHZhbCwgYXJnbmFtZT1Ob25lKToKLSAgICByZXR1cm4gTm9uZQotCi0K
LWNsYXNzIFB5b2JqQ29udGV4dChvYmplY3QpOgotICAgIG1vZHVsZSA9IHB5b2JqX3Byb3BlcnR5
KCJNb2R1bGUiKQotICAgIGNscyA9IHB5b2JqX3Byb3BlcnR5KCJDbGFzcyIpCi0gICAgaW5zdGFu
Y2UgPSBweW9ial9wcm9wZXJ0eSgiSW5zdGFuY2UiKQotCi0KLWNsYXNzIFB5b2JqTWl4aW4oUHlv
YmpDb250ZXh0KToKLSAgICBkZWYgb2JqKCk6Ci0gICAgICAgIGRlZiBmZ2V0KHNlbGYpOgotICAg
ICAgICAgICAgb2JqID0gZ2V0YXR0cihzZWxmLCAnX29iaicsIE5vbmUpCi0gICAgICAgICAgICBp
ZiBvYmogaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9vYmogPSBvYmogPSBzZWxmLl9n
ZXRvYmooKQotICAgICAgICAgICAgcmV0dXJuIG9iagotCi0gICAgICAgIGRlZiBmc2V0KHNlbGYs
IHZhbHVlKToKLSAgICAgICAgICAgIHNlbGYuX29iaiA9IHZhbHVlCi0KLSAgICAgICAgcmV0dXJu
IHByb3BlcnR5KGZnZXQsIGZzZXQsIE5vbmUsICJ1bmRlcmx5aW5nIHB5dGhvbiBvYmplY3QiKQot
Ci0gICAgb2JqID0gb2JqKCkKLQotICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAgICByZXR1
cm4gZ2V0YXR0cihzZWxmLnBhcmVudC5vYmosIHNlbGYubmFtZSkKLQotICAgIGRlZiBnZXRtb2Rw
YXRoKHNlbGYsIHN0b3BhdG1vZHVsZT1UcnVlLCBpbmNsdWRlbW9kdWxlPUZhbHNlKToKLSAgICAg
ICAgIiIiIHJldHVybiBweXRob24gcGF0aCByZWxhdGl2ZSB0byB0aGUgY29udGFpbmluZyBtb2R1
bGUuICIiIgotICAgICAgICBjaGFpbiA9IHNlbGYubGlzdGNoYWluKCkKLSAgICAgICAgY2hhaW4u
cmV2ZXJzZSgpCi0gICAgICAgIHBhcnRzID0gW10KLSAgICAgICAgZm9yIG5vZGUgaW4gY2hhaW46
Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIEluc3RhbmNlKToKLSAgICAgICAgICAg
ICAgICBjb250aW51ZQotICAgICAgICAgICAgbmFtZSA9IG5vZGUubmFtZQotICAgICAgICAgICAg
aWYgaXNpbnN0YW5jZShub2RlLCBNb2R1bGUpOgotICAgICAgICAgICAgICAgIG5hbWUgPSBvcy5w
YXRoLnNwbGl0ZXh0KG5hbWUpWzBdCi0gICAgICAgICAgICAgICAgaWYgc3RvcGF0bW9kdWxlOgot
ICAgICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlbW9kdWxlOgotICAgICAgICAgICAgICAgICAg
ICAgICAgcGFydHMuYXBwZW5kKG5hbWUpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAg
ICAgICAgICBwYXJ0cy5hcHBlbmQobmFtZSkKLSAgICAgICAgcGFydHMucmV2ZXJzZSgpCi0gICAg
ICAgIHMgPSAiLiIuam9pbihwYXJ0cykKLSAgICAgICAgcmV0dXJuIHMucmVwbGFjZSgiLlsiLCAi
WyIpCi0KLSAgICBkZWYgX2dldGZzbGluZW5vKHNlbGYpOgotICAgICAgICByZXR1cm4gZ2V0ZnNs
aW5lbm8oc2VsZi5vYmopCi0KLSAgICBkZWYgcmVwb3J0aW5mbyhzZWxmKToKLSAgICAgICAgIyBY
WFggY2FjaGluZz8KLSAgICAgICAgb2JqID0gc2VsZi5vYmoKLSAgICAgICAgY29tcGF0X2NvX2Zp
cnN0bGluZW5vID0gZ2V0YXR0cihvYmosICdjb21wYXRfY29fZmlyc3RsaW5lbm8nLCBOb25lKQot
ICAgICAgICBpZiBpc2luc3RhbmNlKGNvbXBhdF9jb19maXJzdGxpbmVubywgaW50KToKLSAgICAg
ICAgICAgICMgbm9zZSBjb21wYXRpYmlsaXR5Ci0gICAgICAgICAgICBmc3BhdGggPSBzeXMubW9k
dWxlc1tvYmouX19tb2R1bGVfX10uX19maWxlX18KLSAgICAgICAgICAgIGlmIGZzcGF0aC5lbmRz
d2l0aCgiLnB5YyIpOgotICAgICAgICAgICAgICAgIGZzcGF0aCA9IGZzcGF0aFs6LTFdCi0gICAg
ICAgICAgICBsaW5lbm8gPSBjb21wYXRfY29fZmlyc3RsaW5lbm8KLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIGZzcGF0aCwgbGluZW5vID0gZ2V0ZnNsaW5lbm8ob2JqKQotICAgICAgICBtb2Rw
YXRoID0gc2VsZi5nZXRtb2RwYXRoKCkKLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UobGluZW5v
LCBpbnQpCi0gICAgICAgIHJldHVybiBmc3BhdGgsIGxpbmVubywgbW9kcGF0aAotCi0KLWNsYXNz
IFB5Q29sbGVjdG9yKFB5b2JqTWl4aW4sIG1haW4uQ29sbGVjdG9yKToKLQotICAgIGRlZiBmdW5j
bmFtZWZpbHRlcihzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX21hdGNoZXNfcHJl
Zml4X29yX2dsb2Jfb3B0aW9uKCdweXRob25fZnVuY3Rpb25zJywgbmFtZSkKLQotICAgIGRlZiBp
c25vc2V0ZXN0KHNlbGYsIG9iaik6Ci0gICAgICAgICIiIiBMb29rIGZvciB0aGUgX190ZXN0X18g
YXR0cmlidXRlLCB3aGljaCBpcyBhcHBsaWVkIGJ5IHRoZQotICAgICAgICBAbm9zZS50b29scy5p
c3Rlc3QgZGVjb3JhdG9yCi0gICAgICAgICIiIgotICAgICAgICAjIFdlIGV4cGxpY2l0bHkgY2hl
Y2sgZm9yICJpcyBUcnVlIiBoZXJlIHRvIG5vdCBtaXN0YWtlbmx5IHRyZWF0Ci0gICAgICAgICMg
Y2xhc3NlcyB3aXRoIGEgY3VzdG9tIF9fZ2V0YXR0cl9fIHJldHVybmluZyBzb21ldGhpbmcgdHJ1
dGh5IChsaWtlIGEKLSAgICAgICAgIyBmdW5jdGlvbikgYXMgdGVzdCBjbGFzc2VzLgotICAgICAg
ICByZXR1cm4gc2FmZV9nZXRhdHRyKG9iaiwgJ19fdGVzdF9fJywgRmFsc2UpIGlzIFRydWUKLQot
ICAgIGRlZiBjbGFzc25hbWVmaWx0ZXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHJldHVybiBzZWxm
Ll9tYXRjaGVzX3ByZWZpeF9vcl9nbG9iX29wdGlvbigncHl0aG9uX2NsYXNzZXMnLCBuYW1lKQot
Ci0gICAgZGVmIGlzdGVzdGZ1bmN0aW9uKHNlbGYsIG9iaiwgbmFtZSk6Ci0gICAgICAgIGlmIHNl
bGYuZnVuY25hbWVmaWx0ZXIobmFtZSkgb3Igc2VsZi5pc25vc2V0ZXN0KG9iaik6Ci0gICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKG9iaiwgc3RhdGljbWV0aG9kKToKLSAgICAgICAgICAgICAgICAj
IHN0YXRpYyBtZXRob2RzIG5lZWQgdG8gYmUgdW53cmFwcGVkCi0gICAgICAgICAgICAgICAgb2Jq
ID0gc2FmZV9nZXRhdHRyKG9iaiwgJ19fZnVuY19fJywgRmFsc2UpCi0gICAgICAgICAgICAgICAg
aWYgb2JqIGlzIEZhbHNlOgotICAgICAgICAgICAgICAgICAgICAjIFB5dGhvbiAyLjYgd3JhcHMg
aW4gYSBkaWZmZXJlbnQgd2F5IHRoYXQgd2Ugd29uJ3QgdHJ5IHRvIGhhbmRsZQotICAgICAgICAg
ICAgICAgICAgICBtc2cgPSAiY2Fubm90IGNvbGxlY3Qgc3RhdGljIG1ldGhvZCAlciBiZWNhdXNl
ICIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAiaXQgaXMgbm90IGEgZnVuY3Rpb24gKGFs
d2F5cyB0aGUgY2FzZSBpbiBQeXRob24gMi42KSIKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53
YXJuKAotICAgICAgICAgICAgICAgICAgICAgICAgY29kZT0iQzIiLCBtZXNzYWdlPW1zZyAlIG5h
bWUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICAgICAgcmV0dXJu
ICgKLSAgICAgICAgICAgICAgICBzYWZlX2dldGF0dHIob2JqLCAiX19jYWxsX18iLCBGYWxzZSkg
YW5kIGZpeHR1cmVzLmdldGZpeHR1cmVtYXJrZXIob2JqKSBpcyBOb25lCi0gICAgICAgICAgICAp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBpc3Rl
c3RjbGFzcyhzZWxmLCBvYmosIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5jbGFzc25hbWVm
aWx0ZXIobmFtZSkgb3Igc2VsZi5pc25vc2V0ZXN0KG9iaikKLQotICAgIGRlZiBfbWF0Y2hlc19w
cmVmaXhfb3JfZ2xvYl9vcHRpb24oc2VsZiwgb3B0aW9uX25hbWUsIG5hbWUpOgotICAgICAgICAi
IiIKLSAgICAgICAgY2hlY2tzIGlmIHRoZSBnaXZlbiBuYW1lIG1hdGNoZXMgdGhlIHByZWZpeCBv
ciBnbG9iLXBhdHRlcm4gZGVmaW5lZAotICAgICAgICBpbiBpbmkgY29uZmlndXJhdGlvbi4KLSAg
ICAgICAgIiIiCi0gICAgICAgIGZvciBvcHRpb24gaW4gc2VsZi5jb25maWcuZ2V0aW5pKG9wdGlv
bl9uYW1lKToKLSAgICAgICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aChvcHRpb24pOgotICAgICAg
ICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgICAgICAjIGNoZWNrIHRoYXQgbmFtZSBsb29r
cyBsaWtlIGEgZ2xvYi1zdHJpbmcgYmVmb3JlIGNhbGxpbmcgZm5tYXRjaAotICAgICAgICAgICAg
IyBiZWNhdXNlIHRoaXMgaXMgY2FsbGVkIGZvciBldmVyeSBuYW1lIGluIGVhY2ggY29sbGVjdGVk
IG1vZHVsZSwKLSAgICAgICAgICAgICMgYW5kIGZubWF0Y2ggaXMgc29tZXdoYXQgZXhwZW5zaXZl
IHRvIGNhbGwKLSAgICAgICAgICAgIGVsaWYgKCcqJyBpbiBvcHRpb24gb3IgJz8nIGluIG9wdGlv
biBvciAnWycgaW4gb3B0aW9uKSBhbmQgXAotICAgICAgICAgICAgICAgICAgICBmbm1hdGNoLmZu
bWF0Y2gobmFtZSwgb3B0aW9uKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAg
ICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBjb2xsZWN0KHNlbGYpOgotICAgICAgICBpZiBub3Qg
Z2V0YXR0cihzZWxmLm9iaiwgIl9fdGVzdF9fIiwgVHJ1ZSk6Ci0gICAgICAgICAgICByZXR1cm4g
W10KLQotICAgICAgICAjIE5CLiB3ZSBhdm9pZCByYW5kb20gZ2V0YXR0cnMgYW5kIHBlZWsgaW4g
dGhlIF9fZGljdF9fIGluc3RlYWQKLSAgICAgICAgIyAoWFhYIG9yaWdpbmFsbHkgaW50cm9kdWNl
ZCBmcm9tIGEgUHlQeSBuZWVkLCBzdGlsbCB0cnVlPykKLSAgICAgICAgZGljdHMgPSBbZ2V0YXR0
cihzZWxmLm9iaiwgJ19fZGljdF9fJywge30pXQotICAgICAgICBmb3IgYmFzZWNscyBpbiBpbnNw
ZWN0LmdldG1ybyhzZWxmLm9iai5fX2NsYXNzX18pOgotICAgICAgICAgICAgZGljdHMuYXBwZW5k
KGJhc2VjbHMuX19kaWN0X18pCi0gICAgICAgIHNlZW4gPSB7fQotICAgICAgICB2YWx1ZXMgPSBb
XQotICAgICAgICBmb3IgZGljIGluIGRpY3RzOgotICAgICAgICAgICAgZm9yIG5hbWUsIG9iaiBp
biBsaXN0KGRpYy5pdGVtcygpKToKLSAgICAgICAgICAgICAgICBpZiBuYW1lIGluIHNlZW46Ci0g
ICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAgICAgc2VlbltuYW1lXSA9
IFRydWUKLSAgICAgICAgICAgICAgICByZXMgPSBzZWxmLl9tYWtlaXRlbShuYW1lLCBvYmopCi0g
ICAgICAgICAgICAgICAgaWYgcmVzIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocmVzLCBsaXN0KToKLSAgICAg
ICAgICAgICAgICAgICAgcmVzID0gW3Jlc10KLSAgICAgICAgICAgICAgICB2YWx1ZXMuZXh0ZW5k
KHJlcykKLSAgICAgICAgdmFsdWVzLnNvcnQoa2V5PWxhbWJkYSBpdGVtOiBpdGVtLnJlcG9ydGlu
Zm8oKVs6Ml0pCi0gICAgICAgIHJldHVybiB2YWx1ZXMKLQotICAgIGRlZiBtYWtlaXRlbShzZWxm
LCBuYW1lLCBvYmopOgotICAgICAgICB3YXJuaW5ncy53YXJuKGRlcHJlY2F0ZWQuQ09MTEVDVE9S
X01BS0VJVEVNLCBzdGFja2xldmVsPTIpCi0gICAgICAgIHNlbGYuX21ha2VpdGVtKG5hbWUsIG9i
aikKLQotICAgIGRlZiBfbWFrZWl0ZW0oc2VsZiwgbmFtZSwgb2JqKToKLSAgICAgICAgIyBhc3Nl
cnQgc2VsZi5paG9vay5mc3BhdGggPT0gc2VsZi5mc3BhdGgsIHNlbGYKLSAgICAgICAgcmV0dXJu
IHNlbGYuaWhvb2sucHl0ZXN0X3B5Y29sbGVjdF9tYWtlaXRlbSgKLSAgICAgICAgICAgIGNvbGxl
Y3Rvcj1zZWxmLCBuYW1lPW5hbWUsIG9iaj1vYmopCi0KLSAgICBkZWYgX2dlbmZ1bmN0aW9ucyhz
ZWxmLCBuYW1lLCBmdW5jb2JqKToKLSAgICAgICAgbW9kdWxlID0gc2VsZi5nZXRwYXJlbnQoTW9k
dWxlKS5vYmoKLSAgICAgICAgY2xzY29sID0gc2VsZi5nZXRwYXJlbnQoQ2xhc3MpCi0gICAgICAg
IGNscyA9IGNsc2NvbCBhbmQgY2xzY29sLm9iaiBvciBOb25lCi0gICAgICAgIHRyYW5zZmVyX21h
cmtlcnMoZnVuY29iaiwgY2xzLCBtb2R1bGUpCi0gICAgICAgIGZtID0gc2VsZi5zZXNzaW9uLl9m
aXh0dXJlbWFuYWdlcgotICAgICAgICBmaXh0dXJlaW5mbyA9IGZtLmdldGZpeHR1cmVpbmZvKHNl
bGYsIGZ1bmNvYmosIGNscykKLSAgICAgICAgbWV0YWZ1bmMgPSBNZXRhZnVuYyhmdW5jb2JqLCBm
aXh0dXJlaW5mbywgc2VsZi5jb25maWcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xz
PWNscywgbW9kdWxlPW1vZHVsZSkKLSAgICAgICAgbWV0aG9kcyA9IFtdCi0gICAgICAgIGlmIGhh
c2F0dHIobW9kdWxlLCAicHl0ZXN0X2dlbmVyYXRlX3Rlc3RzIik6Ci0gICAgICAgICAgICBtZXRo
b2RzLmFwcGVuZChtb2R1bGUucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKQotICAgICAgICBpZiBoYXNh
dHRyKGNscywgInB5dGVzdF9nZW5lcmF0ZV90ZXN0cyIpOgotICAgICAgICAgICAgbWV0aG9kcy5h
cHBlbmQoY2xzKCkucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKQotICAgICAgICBpZiBtZXRob2RzOgot
ICAgICAgICAgICAgc2VsZi5paG9vay5weXRlc3RfZ2VuZXJhdGVfdGVzdHMuY2FsbF9leHRyYSht
ZXRob2RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkaWN0KG1ldGFmdW5jPW1ldGFmdW5jKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHNlbGYuaWhvb2sucHl0ZXN0X2dlbmVyYXRlX3Rlc3RzKG1ldGFmdW5jPW1ldGFmdW5jKQot
Ci0gICAgICAgIEZ1bmN0aW9uID0gc2VsZi5fZ2V0Y3VzdG9tY2xhc3MoIkZ1bmN0aW9uIikKLSAg
ICAgICAgaWYgbm90IG1ldGFmdW5jLl9jYWxsczoKLSAgICAgICAgICAgIHlpZWxkIEZ1bmN0aW9u
KG5hbWUsIHBhcmVudD1zZWxmLCBmaXh0dXJlaW5mbz1maXh0dXJlaW5mbykKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICMgYWRkIGZ1bmNhcmdzKCkgYXMgZml4dHVyZWRlZnMgdG8gZml4dHVy
ZWluZm8uYXJnMmZpeHR1cmVkZWZzCi0gICAgICAgICAgICBmaXh0dXJlcy5hZGRfZnVuY2FyZ19w
c2V1ZG9fZml4dHVyZV9kZWYoc2VsZiwgbWV0YWZ1bmMsIGZtKQotCi0gICAgICAgICAgICBmb3Ig
Y2FsbHNwZWMgaW4gbWV0YWZ1bmMuX2NhbGxzOgotICAgICAgICAgICAgICAgIHN1Ym5hbWUgPSAi
JXNbJXNdIiAlIChuYW1lLCBjYWxsc3BlYy5pZCkKLSAgICAgICAgICAgICAgICB5aWVsZCBGdW5j
dGlvbihuYW1lPXN1Ym5hbWUsIHBhcmVudD1zZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNhbGxzcGVjPWNhbGxzcGVjLCBjYWxsb2JqPWZ1bmNvYmosCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZml4dHVyZWluZm89Zml4dHVyZWluZm8sCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga2V5d29yZHM9e2NhbGxzcGVjLmlkOiBUcnVlfSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBvcmlnaW5hbG5hbWU9bmFtZSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICApCi0KLQotY2xhc3MgTW9kdWxlKG1haW4uRmlsZSwgUHlDb2xsZWN0
b3IpOgotICAgICIiIiBDb2xsZWN0b3IgZm9yIHRlc3QgY2xhc3NlcyBhbmQgZnVuY3Rpb25zLiAi
IiIKLQotICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5faW1wb3J0
dGVzdG1vZHVsZSgpCi0KLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgc2VsZi5zZXNz
aW9uLl9maXh0dXJlbWFuYWdlci5wYXJzZWZhY3RvcmllcyhzZWxmKQotICAgICAgICByZXR1cm4g
c3VwZXIoTW9kdWxlLCBzZWxmKS5jb2xsZWN0KCkKLQotICAgIGRlZiBfaW1wb3J0dGVzdG1vZHVs
ZShzZWxmKToKLSAgICAgICAgIyB3ZSBhc3N1bWUgd2UgYXJlIG9ubHkgY2FsbGVkIG9uY2UgcGVy
IG1vZHVsZQotICAgICAgICBpbXBvcnRtb2RlID0gc2VsZi5jb25maWcuZ2V0b3B0aW9uKCItLWlt
cG9ydC1tb2RlIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbW9kID0gc2VsZi5mc3BhdGgu
cHlpbXBvcnQoZW5zdXJlc3lzcGF0aD1pbXBvcnRtb2RlKQotICAgICAgICBleGNlcHQgU3ludGF4
RXJyb3I6Ci0gICAgICAgICAgICByYWlzZSBzZWxmLkNvbGxlY3RFcnJvcigKLSAgICAgICAgICAg
ICAgICBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKS5nZXRyZXByKHN0eWxlPSJzaG9ydCIp
KQotICAgICAgICBleGNlcHQgc2VsZi5mc3BhdGguSW1wb3J0TWlzbWF0Y2hFcnJvcjoKLSAgICAg
ICAgICAgIGUgPSBzeXMuZXhjX2luZm8oKVsxXQotICAgICAgICAgICAgcmFpc2Ugc2VsZi5Db2xs
ZWN0RXJyb3IoCi0gICAgICAgICAgICAgICAgImltcG9ydCBmaWxlIG1pc21hdGNoOlxuIgotICAg
ICAgICAgICAgICAgICJpbXBvcnRlZCBtb2R1bGUgJXIgaGFzIHRoaXMgX19maWxlX18gYXR0cmli
dXRlOlxuIgotICAgICAgICAgICAgICAgICIgICVzXG4iCi0gICAgICAgICAgICAgICAgIndoaWNo
IGlzIG5vdCB0aGUgc2FtZSBhcyB0aGUgdGVzdCBmaWxlIHdlIHdhbnQgdG8gY29sbGVjdDpcbiIK
LSAgICAgICAgICAgICAgICAiICAlc1xuIgotICAgICAgICAgICAgICAgICJISU5UOiByZW1vdmUg
X19weWNhY2hlX18gLyAucHljIGZpbGVzIGFuZC9vciB1c2UgYSAiCi0gICAgICAgICAgICAgICAg
InVuaXF1ZSBiYXNlbmFtZSBmb3IgeW91ciB0ZXN0IGZpbGUgbW9kdWxlcyIKLSAgICAgICAgICAg
ICAgICAlIGUuYXJncwotICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6
Ci0gICAgICAgICAgICBmcm9tIF9weXRlc3QuX2NvZGUuY29kZSBpbXBvcnQgRXhjZXB0aW9uSW5m
bwotICAgICAgICAgICAgZXhjX2luZm8gPSBFeGNlcHRpb25JbmZvKCkKLSAgICAgICAgICAgIGlm
IHNlbGYuY29uZmlnLmdldG9wdGlvbigndmVyYm9zZScpIDwgMjoKLSAgICAgICAgICAgICAgICBl
eGNfaW5mby50cmFjZWJhY2sgPSBleGNfaW5mby50cmFjZWJhY2suZmlsdGVyKGZpbHRlcl90cmFj
ZWJhY2spCi0gICAgICAgICAgICBleGNfcmVwciA9IGV4Y19pbmZvLmdldHJlcHIoc3R5bGU9J3No
b3J0JykgaWYgZXhjX2luZm8udHJhY2ViYWNrIGVsc2UgZXhjX2luZm8uZXhjb25seSgpCi0gICAg
ICAgICAgICBmb3JtYXR0ZWRfdGIgPSBzYWZlX3N0cihleGNfcmVwcikKLSAgICAgICAgICAgIHJh
aXNlIHNlbGYuQ29sbGVjdEVycm9yKAotICAgICAgICAgICAgICAgICJJbXBvcnRFcnJvciB3aGls
ZSBpbXBvcnRpbmcgdGVzdCBtb2R1bGUgJ3tmc3BhdGh9Jy5cbiIKLSAgICAgICAgICAgICAgICAi
SGludDogbWFrZSBzdXJlIHlvdXIgdGVzdCBtb2R1bGVzL3BhY2thZ2VzIGhhdmUgdmFsaWQgUHl0
aG9uIG5hbWVzLlxuIgotICAgICAgICAgICAgICAgICJUcmFjZWJhY2s6XG4iCi0gICAgICAgICAg
ICAgICAgInt0cmFjZWJhY2t9Ii5mb3JtYXQoZnNwYXRoPXNlbGYuZnNwYXRoLCB0cmFjZWJhY2s9
Zm9ybWF0dGVkX3RiKQotICAgICAgICAgICAgKQotICAgICAgICBleGNlcHQgX3B5dGVzdC5ydW5u
ZXIuU2tpcHBlZCBhcyBlOgotICAgICAgICAgICAgaWYgZS5hbGxvd19tb2R1bGVfbGV2ZWw6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIHJhaXNlIHNlbGYuQ29sbGVjdEVycm9y
KAotICAgICAgICAgICAgICAgICJVc2luZyBweXRlc3Quc2tpcCBvdXRzaWRlIG9mIGEgdGVzdCBp
cyBub3QgYWxsb3dlZC4gIgotICAgICAgICAgICAgICAgICJUbyBkZWNvcmF0ZSBhIHRlc3QgZnVu
Y3Rpb24sIHVzZSB0aGUgQHB5dGVzdC5tYXJrLnNraXAgIgotICAgICAgICAgICAgICAgICJvciBA
cHl0ZXN0Lm1hcmsuc2tpcGlmIGRlY29yYXRvcnMgaW5zdGVhZCwgYW5kIHRvIHNraXAgYSAiCi0g
ICAgICAgICAgICAgICAgIm1vZHVsZSB1c2UgYHB5dGVzdG1hcmsgPSBweXRlc3QubWFyay57c2tp
cCxza2lwaWZ9LiIKLSAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5jb25maWcucGx1Z2lubWFu
YWdlci5jb25zaWRlcl9tb2R1bGUobW9kKQotICAgICAgICByZXR1cm4gbW9kCi0KLSAgICBkZWYg
c2V0dXAoc2VsZik6Ci0gICAgICAgIHNldHVwX21vZHVsZSA9IF9nZXRfeHVuaXRfc2V0dXBfdGVh
cmRvd24oc2VsZi5vYmosICJzZXRVcE1vZHVsZSIpCi0gICAgICAgIGlmIHNldHVwX21vZHVsZSBp
cyBOb25lOgotICAgICAgICAgICAgc2V0dXBfbW9kdWxlID0gX2dldF94dW5pdF9zZXR1cF90ZWFy
ZG93bihzZWxmLm9iaiwgInNldHVwX21vZHVsZSIpCi0gICAgICAgIGlmIHNldHVwX21vZHVsZSBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIHNldHVwX21vZHVsZSgpCi0KLSAgICAgICAgdGVhcmRv
d25fbW9kdWxlID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihzZWxmLm9iaiwgJ3RlYXJEb3du
TW9kdWxlJykKLSAgICAgICAgaWYgdGVhcmRvd25fbW9kdWxlIGlzIE5vbmU6Ci0gICAgICAgICAg
ICB0ZWFyZG93bl9tb2R1bGUgPSBfZ2V0X3h1bml0X3NldHVwX3RlYXJkb3duKHNlbGYub2JqLCAn
dGVhcmRvd25fbW9kdWxlJykKLSAgICAgICAgaWYgdGVhcmRvd25fbW9kdWxlIGlzIG5vdCBOb25l
OgotICAgICAgICAgICAgc2VsZi5hZGRmaW5hbGl6ZXIodGVhcmRvd25fbW9kdWxlKQotCi0KLWRl
ZiBfZ2V0X3h1bml0X3NldHVwX3RlYXJkb3duKGhvbGRlciwgYXR0cl9uYW1lLCBwYXJhbV9vYmo9
Tm9uZSk6Ci0gICAgIiIiCi0gICAgUmV0dXJuIGEgY2FsbGFibGUgdG8gcGVyZm9ybSB4dW5pdC1z
dHlsZSBzZXR1cCBvciB0ZWFyZG93biBpZgotICAgIHRoZSBmdW5jdGlvbiBleGlzdHMgaW4gdGhl
IGBgaG9sZGVyYGAgb2JqZWN0LgotICAgIFRoZSBgYHBhcmFtX29iamBgIHBhcmFtZXRlciBpcyB0
aGUgcGFyYW1ldGVyIHdoaWNoIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBmdW5jdGlvbgotICAgIHdo
ZW4gdGhlIGNhbGxhYmxlIGlzIGNhbGxlZCB3aXRob3V0IGFyZ3VtZW50cywgZGVmYXVsdHMgdG8g
dGhlIGBgaG9sZGVyYGAgb2JqZWN0LgotICAgIFJldHVybiBgYE5vbmVgYCBpZiBhIHN1aXRhYmxl
IGNhbGxhYmxlIGlzIG5vdCBmb3VuZC4KLSAgICAiIiIKLSAgICBwYXJhbV9vYmogPSBwYXJhbV9v
YmogaWYgcGFyYW1fb2JqIGlzIG5vdCBOb25lIGVsc2UgaG9sZGVyCi0gICAgcmVzdWx0ID0gX2dl
dF94dW5pdF9mdW5jKGhvbGRlciwgYXR0cl9uYW1lKQotICAgIGlmIHJlc3VsdCBpcyBub3QgTm9u
ZToKLSAgICAgICAgYXJnX2NvdW50ID0gcmVzdWx0Ll9fY29kZV9fLmNvX2FyZ2NvdW50Ci0gICAg
ICAgIGlmIGluc3BlY3QuaXNtZXRob2QocmVzdWx0KToKLSAgICAgICAgICAgIGFyZ19jb3VudCAt
PSAxCi0gICAgICAgIGlmIGFyZ19jb3VudDoKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGE6IHJl
c3VsdChwYXJhbV9vYmopCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcmVzdWx0
Ci0KLQotZGVmIF9nZXRfeHVuaXRfZnVuYyhvYmosIG5hbWUpOgotICAgICIiIlJldHVybiB0aGUg
YXR0cmlidXRlIGZyb20gdGhlIGdpdmVuIG9iamVjdCB0byBiZSB1c2VkIGFzIGEgc2V0dXAvdGVh
cmRvd24KLSAgICB4dW5pdC1zdHlsZSBmdW5jdGlvbiwgYnV0IG9ubHkgaWYgbm90IG1hcmtlZCBh
cyBhIGZpeHR1cmUgdG8KLSAgICBhdm9pZCBjYWxsaW5nIGl0IHR3aWNlLgotICAgICIiIgotICAg
IG1ldGggPSBnZXRhdHRyKG9iaiwgbmFtZSwgTm9uZSkKLSAgICBpZiBmaXh0dXJlcy5nZXRmaXh0
dXJlbWFya2VyKG1ldGgpIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiBtZXRoCi0KLQotY2xhc3Mg
Q2xhc3MoUHlDb2xsZWN0b3IpOgotICAgICIiIiBDb2xsZWN0b3IgZm9yIHRlc3QgbWV0aG9kcy4g
IiIiCi0KLSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgaWYgbm90IHNhZmVfZ2V0YXR0
cihzZWxmLm9iaiwgIl9fdGVzdF9fIiwgVHJ1ZSk6Ci0gICAgICAgICAgICByZXR1cm4gW10KLSAg
ICAgICAgaWYgaGFzaW5pdChzZWxmLm9iaik6Ci0gICAgICAgICAgICBzZWxmLndhcm4oIkMxIiwg
ImNhbm5vdCBjb2xsZWN0IHRlc3QgY2xhc3MgJXIgYmVjYXVzZSBpdCBoYXMgYSAiCi0gICAgICAg
ICAgICAgICAgICAgICAgIl9faW5pdF9fIGNvbnN0cnVjdG9yIiAlIHNlbGYub2JqLl9fbmFtZV9f
KQotICAgICAgICAgICAgcmV0dXJuIFtdCi0gICAgICAgIGVsaWYgaGFzbmV3KHNlbGYub2JqKToK
LSAgICAgICAgICAgIHNlbGYud2FybigiQzEiLCAiY2Fubm90IGNvbGxlY3QgdGVzdCBjbGFzcyAl
ciBiZWNhdXNlIGl0IGhhcyBhICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uZXdf
XyBjb25zdHJ1Y3RvciIgJSBzZWxmLm9iai5fX25hbWVfXykKLSAgICAgICAgICAgIHJldHVybiBb
XQotICAgICAgICByZXR1cm4gW3NlbGYuX2dldGN1c3RvbWNsYXNzKCJJbnN0YW5jZSIpKG5hbWU9
IigpIiwgcGFyZW50PXNlbGYpXQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBzZXR1
cF9jbGFzcyA9IF9nZXRfeHVuaXRfZnVuYyhzZWxmLm9iaiwgJ3NldHVwX2NsYXNzJykKLSAgICAg
ICAgaWYgc2V0dXBfY2xhc3MgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZXR1cF9jbGFzcyA9
IGdldGF0dHIoc2V0dXBfY2xhc3MsICdpbV9mdW5jJywgc2V0dXBfY2xhc3MpCi0gICAgICAgICAg
ICBzZXR1cF9jbGFzcyA9IGdldGF0dHIoc2V0dXBfY2xhc3MsICdfX2Z1bmNfXycsIHNldHVwX2Ns
YXNzKQotICAgICAgICAgICAgc2V0dXBfY2xhc3Moc2VsZi5vYmopCi0KLSAgICAgICAgZmluX2Ns
YXNzID0gZ2V0YXR0cihzZWxmLm9iaiwgJ3RlYXJkb3duX2NsYXNzJywgTm9uZSkKLSAgICAgICAg
aWYgZmluX2NsYXNzIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgZmluX2NsYXNzID0gZ2V0YXR0
cihmaW5fY2xhc3MsICdpbV9mdW5jJywgZmluX2NsYXNzKQotICAgICAgICAgICAgZmluX2NsYXNz
ID0gZ2V0YXR0cihmaW5fY2xhc3MsICdfX2Z1bmNfXycsIGZpbl9jbGFzcykKLSAgICAgICAgICAg
IHNlbGYuYWRkZmluYWxpemVyKGxhbWJkYTogZmluX2NsYXNzKHNlbGYub2JqKSkKLQotCi1jbGFz
cyBJbnN0YW5jZShQeUNvbGxlY3Rvcik6Ci0gICAgZGVmIF9nZXRvYmooc2VsZik6Ci0gICAgICAg
IHJldHVybiBzZWxmLnBhcmVudC5vYmooKQotCi0gICAgZGVmIGNvbGxlY3Qoc2VsZik6Ci0gICAg
ICAgIHNlbGYuc2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIucGFyc2VmYWN0b3JpZXMoc2VsZikKLSAg
ICAgICAgcmV0dXJuIHN1cGVyKEluc3RhbmNlLCBzZWxmKS5jb2xsZWN0KCkKLQotICAgIGRlZiBu
ZXdpbnN0YW5jZShzZWxmKToKLSAgICAgICAgc2VsZi5vYmogPSBzZWxmLl9nZXRvYmooKQotICAg
ICAgICByZXR1cm4gc2VsZi5vYmoKLQotCi1jbGFzcyBGdW5jdGlvbk1peGluKFB5b2JqTWl4aW4p
OgotICAgICIiIiBtaXhpbiBmb3IgdGhlIGNvZGUgY29tbW9uIHRvIEZ1bmN0aW9uIGFuZCBHZW5l
cmF0b3IuCi0gICAgIiIiCi0KLSAgICBkZWYgc2V0dXAoc2VsZik6Ci0gICAgICAgICIiIiBwZXJm
b3JtIHNldHVwIGZvciB0aGlzIHRlc3QgZnVuY3Rpb24uICIiIgotICAgICAgICBpZiBoYXNhdHRy
KHNlbGYsICdfcHJlc2VydmVkcGFyZW50Jyk6Ci0gICAgICAgICAgICBvYmogPSBzZWxmLl9wcmVz
ZXJ2ZWRwYXJlbnQKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYucGFyZW50LCBJbnN0YW5j
ZSk6Ci0gICAgICAgICAgICBvYmogPSBzZWxmLnBhcmVudC5uZXdpbnN0YW5jZSgpCi0gICAgICAg
ICAgICBzZWxmLm9iaiA9IHNlbGYuX2dldG9iaigpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICBvYmogPSBzZWxmLnBhcmVudC5vYmoKLSAgICAgICAgaWYgaW5zcGVjdC5pc21ldGhvZChzZWxm
Lm9iaik6Ci0gICAgICAgICAgICBzZXR1cF9uYW1lID0gJ3NldHVwX21ldGhvZCcKLSAgICAgICAg
ICAgIHRlYXJkb3duX25hbWUgPSAndGVhcmRvd25fbWV0aG9kJwotICAgICAgICBlbHNlOgotICAg
ICAgICAgICAgc2V0dXBfbmFtZSA9ICdzZXR1cF9mdW5jdGlvbicKLSAgICAgICAgICAgIHRlYXJk
b3duX25hbWUgPSAndGVhcmRvd25fZnVuY3Rpb24nCi0gICAgICAgIHNldHVwX2Z1bmNfb3JfbWV0
aG9kID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihvYmosIHNldHVwX25hbWUsIHBhcmFtX29i
aj1zZWxmLm9iaikKLSAgICAgICAgaWYgc2V0dXBfZnVuY19vcl9tZXRob2QgaXMgbm90IE5vbmU6
Ci0gICAgICAgICAgICBzZXR1cF9mdW5jX29yX21ldGhvZCgpCi0gICAgICAgIHRlYXJkb3duX2Z1
bmNfb3JfbWV0aG9kID0gX2dldF94dW5pdF9zZXR1cF90ZWFyZG93bihvYmosIHRlYXJkb3duX25h
bWUsIHBhcmFtX29iaj1zZWxmLm9iaikKLSAgICAgICAgaWYgdGVhcmRvd25fZnVuY19vcl9tZXRo
b2QgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmFkZGZpbmFsaXplcih0ZWFyZG93bl9m
dW5jX29yX21ldGhvZCkKLQotICAgIGRlZiBfcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbyk6
Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19vYmonKSBhbmQgbm90IHNlbGYuY29uZmlnLm9w
dGlvbi5mdWxsdHJhY2U6Ci0gICAgICAgICAgICBjb2RlID0gX3B5dGVzdC5fY29kZS5Db2RlKGdl
dF9yZWFsX2Z1bmMoc2VsZi5vYmopKQotICAgICAgICAgICAgcGF0aCwgZmlyc3RsaW5lbm8gPSBj
b2RlLnBhdGgsIGNvZGUuZmlyc3RsaW5lbm8KLSAgICAgICAgICAgIHRyYWNlYmFjayA9IGV4Y2lu
Zm8udHJhY2ViYWNrCi0gICAgICAgICAgICBudHJhY2ViYWNrID0gdHJhY2ViYWNrLmN1dChwYXRo
PXBhdGgsIGZpcnN0bGluZW5vPWZpcnN0bGluZW5vKQotICAgICAgICAgICAgaWYgbnRyYWNlYmFj
ayA9PSB0cmFjZWJhY2s6Ci0gICAgICAgICAgICAgICAgbnRyYWNlYmFjayA9IG50cmFjZWJhY2su
Y3V0KHBhdGg9cGF0aCkKLSAgICAgICAgICAgICAgICBpZiBudHJhY2ViYWNrID09IHRyYWNlYmFj
azoKLSAgICAgICAgICAgICAgICAgICAgIyBudHJhY2ViYWNrID0gbnRyYWNlYmFjay5jdXQoZXhj
bHVkZXBhdGg9Y3V0ZGlyMikKLSAgICAgICAgICAgICAgICAgICAgbnRyYWNlYmFjayA9IG50cmFj
ZWJhY2suZmlsdGVyKGZpbHRlcl90cmFjZWJhY2spCi0gICAgICAgICAgICAgICAgICAgIGlmIG5v
dCBudHJhY2ViYWNrOgotICAgICAgICAgICAgICAgICAgICAgICAgbnRyYWNlYmFjayA9IHRyYWNl
YmFjawotCi0gICAgICAgICAgICBleGNpbmZvLnRyYWNlYmFjayA9IG50cmFjZWJhY2suZmlsdGVy
KCkKLSAgICAgICAgICAgICMgaXNzdWUzNjQ6IG1hcmsgYWxsIGJ1dCBmaXJzdCBhbmQgbGFzdCBm
cmFtZXMgdG8KLSAgICAgICAgICAgICMgb25seSBzaG93IGEgc2luZ2xlLWxpbmUgbWVzc2FnZSBm
b3IgZWFjaCBmcmFtZQotICAgICAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUg
PT0gImF1dG8iOgotICAgICAgICAgICAgICAgIGlmIGxlbihleGNpbmZvLnRyYWNlYmFjaykgPiAy
OgotICAgICAgICAgICAgICAgICAgICBmb3IgZW50cnkgaW4gZXhjaW5mby50cmFjZWJhY2tbMTot
MV06Ci0gICAgICAgICAgICAgICAgICAgICAgICBlbnRyeS5zZXRfcmVwcl9zdHlsZSgnc2hvcnQn
KQotCi0gICAgZGVmIF9yZXByX2ZhaWx1cmVfcHkoc2VsZiwgZXhjaW5mbywgc3R5bGU9Imxvbmci
KToKLSAgICAgICAgaWYgZXhjaW5mby5lcnJpc2luc3RhbmNlKGZhaWwuRXhjZXB0aW9uKToKLSAg
ICAgICAgICAgIGlmIG5vdCBleGNpbmZvLnZhbHVlLnB5dHJhY2U6Ci0gICAgICAgICAgICAgICAg
cmV0dXJuIHB5Ll9idWlsdGluLl90b3RleHQoZXhjaW5mby52YWx1ZSkKLSAgICAgICAgcmV0dXJu
IHN1cGVyKEZ1bmN0aW9uTWl4aW4sIHNlbGYpLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3R5bGU9c3R5bGUpCi0KLSAgICBkZWYgcmVwcl9mYWlsdXJlKHNlbGYsIGV4Y2luZm8sIG91dGVy
cj1Ob25lKToKLSAgICAgICAgYXNzZXJ0IG91dGVyciBpcyBOb25lLCAiWFhYIG91dGVyciB1c2Fn
ZSBpcyBkZXByZWNhdGVkIgotICAgICAgICBzdHlsZSA9IHNlbGYuY29uZmlnLm9wdGlvbi50YnN0
eWxlCi0gICAgICAgIGlmIHN0eWxlID09ICJhdXRvIjoKLSAgICAgICAgICAgIHN0eWxlID0gImxv
bmciCi0gICAgICAgIHJldHVybiBzZWxmLl9yZXByX2ZhaWx1cmVfcHkoZXhjaW5mbywgc3R5bGU9
c3R5bGUpCi0KLQotY2xhc3MgR2VuZXJhdG9yKEZ1bmN0aW9uTWl4aW4sIFB5Q29sbGVjdG9yKToK
LSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgIyB0ZXN0IGdlbmVyYXRvcnMgYXJlIHNl
ZW4gYXMgY29sbGVjdG9ycyBidXQgdGhleSBhbHNvCi0gICAgICAgICMgaW52b2tlIHNldHVwL3Rl
YXJkb3duIG9uIHBvcHVsYXIgcmVxdWVzdAotICAgICAgICAjIChpbmR1Y2VkIGJ5IHRoZSBjb21t
b24gInRlc3RfKiIgbmFtaW5nIHNoYXJlZCB3aXRoIG5vcm1hbCB0ZXN0cykKLSAgICAgICAgZnJv
bSBfcHl0ZXN0IGltcG9ydCBkZXByZWNhdGVkCi0gICAgICAgIHNlbGYuc2Vzc2lvbi5fc2V0dXBz
dGF0ZS5wcmVwYXJlKHNlbGYpCi0gICAgICAgICMgc2VlIEZ1bmN0aW9uTWl4aW4uc2V0dXAgYW5k
IHRlc3Rfc2V0dXBzdGF0ZV9pc19wcmVzZXJ2ZWRfMTM0Ci0gICAgICAgIHNlbGYuX3ByZXNlcnZl
ZHBhcmVudCA9IHNlbGYucGFyZW50Lm9iagotICAgICAgICB2YWx1ZXMgPSBbXQotICAgICAgICBz
ZWVuID0ge30KLSAgICAgICAgZm9yIGksIHggaW4gZW51bWVyYXRlKHNlbGYub2JqKCkpOgotICAg
ICAgICAgICAgbmFtZSwgY2FsbCwgYXJncyA9IHNlbGYuZ2V0Y2FsbGFyZ3MoeCkKLSAgICAgICAg
ICAgIGlmIG5vdCBjYWxsYWJsZShjYWxsKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJy
b3IoIiVyIHlpZWxkZWQgbm9uIGNhbGxhYmxlIHRlc3QgJXIiICUgKHNlbGYub2JqLCBjYWxsLCkp
Ci0gICAgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICJb
JWRdIiAlIGkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbmFtZSA9ICJbJyVz
J10iICUgbmFtZQotICAgICAgICAgICAgaWYgbmFtZSBpbiBzZWVuOgotICAgICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIiVyIGdlbmVyYXRlZCB0ZXN0cyB3aXRoIG5vbi11bmlxdWUgbmFt
ZSAlciIgJSAoc2VsZiwgbmFtZSkpCi0gICAgICAgICAgICBzZWVuW25hbWVdID0gVHJ1ZQotICAg
ICAgICAgICAgdmFsdWVzLmFwcGVuZChzZWxmLkZ1bmN0aW9uKG5hbWUsIHNlbGYsIGFyZ3M9YXJn
cywgY2FsbG9iaj1jYWxsKSkKLSAgICAgICAgc2VsZi53YXJuKCdDMScsIGRlcHJlY2F0ZWQuWUlF
TERfVEVTVFMpCi0gICAgICAgIHJldHVybiB2YWx1ZXMKLQotICAgIGRlZiBnZXRjYWxsYXJncyhz
ZWxmLCBvYmopOgotICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvYmosICh0dXBsZSwgbGlzdCkp
OgotICAgICAgICAgICAgb2JqID0gKG9iaiwpCi0gICAgICAgICMgZXhwbGljaXQgbmFtaW5nCi0g
ICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqWzBdLCBzaXguc3RyaW5nX3R5cGVzKToKLSAgICAgICAg
ICAgIG5hbWUgPSBvYmpbMF0KLSAgICAgICAgICAgIG9iaiA9IG9ialsxOl0KLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIG5hbWUgPSBOb25lCi0gICAgICAgIGNhbGwsIGFyZ3MgPSBvYmpbMF0s
IG9ialsxOl0KLSAgICAgICAgcmV0dXJuIG5hbWUsIGNhbGwsIGFyZ3MKLQotCi1kZWYgaGFzaW5p
dChvYmopOgotICAgIGluaXQgPSBnZXRhdHRyKG9iaiwgJ19faW5pdF9fJywgTm9uZSkKLSAgICBp
ZiBpbml0OgotICAgICAgICByZXR1cm4gaW5pdCAhPSBvYmplY3QuX19pbml0X18KLQotCi1kZWYg
aGFzbmV3KG9iaik6Ci0gICAgbmV3ID0gZ2V0YXR0cihvYmosICdfX25ld19fJywgTm9uZSkKLSAg
ICBpZiBuZXc6Ci0gICAgICAgIHJldHVybiBuZXcgIT0gb2JqZWN0Ll9fbmV3X18KLQotCi1jbGFz
cyBDYWxsU3BlYzIob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWV0YWZ1bmMpOgot
ICAgICAgICBzZWxmLm1ldGFmdW5jID0gbWV0YWZ1bmMKLSAgICAgICAgc2VsZi5mdW5jYXJncyA9
IHt9Ci0gICAgICAgIHNlbGYuX2lkbGlzdCA9IFtdCi0gICAgICAgIHNlbGYucGFyYW1zID0ge30K
LSAgICAgICAgc2VsZi5fZ2xvYmFsaWQgPSBOT1RTRVQKLSAgICAgICAgc2VsZi5fZ2xvYmFsaWRf
YXJncyA9IHNldCgpCi0gICAgICAgIHNlbGYuX2dsb2JhbHBhcmFtID0gTk9UU0VUCi0gICAgICAg
IHNlbGYuX2FyZzJzY29wZW51bSA9IHt9ICAjIHVzZWQgZm9yIHNvcnRpbmcgcGFyYW1ldHJpemVk
IHJlc291cmNlcwotICAgICAgICBzZWxmLm1hcmtzID0gW10KLSAgICAgICAgc2VsZi5pbmRpY2Vz
ID0ge30KLQotICAgIGRlZiBjb3B5KHNlbGYsIG1ldGFmdW5jKToKLSAgICAgICAgY3MgPSBDYWxs
U3BlYzIoc2VsZi5tZXRhZnVuYykKLSAgICAgICAgY3MuZnVuY2FyZ3MudXBkYXRlKHNlbGYuZnVu
Y2FyZ3MpCi0gICAgICAgIGNzLnBhcmFtcy51cGRhdGUoc2VsZi5wYXJhbXMpCi0gICAgICAgIGNz
Lm1hcmtzLmV4dGVuZChzZWxmLm1hcmtzKQotICAgICAgICBjcy5pbmRpY2VzLnVwZGF0ZShzZWxm
LmluZGljZXMpCi0gICAgICAgIGNzLl9hcmcyc2NvcGVudW0udXBkYXRlKHNlbGYuX2FyZzJzY29w
ZW51bSkKLSAgICAgICAgY3MuX2lkbGlzdCA9IGxpc3Qoc2VsZi5faWRsaXN0KQotICAgICAgICBj
cy5fZ2xvYmFsaWQgPSBzZWxmLl9nbG9iYWxpZAotICAgICAgICBjcy5fZ2xvYmFsaWRfYXJncyA9
IHNlbGYuX2dsb2JhbGlkX2FyZ3MKLSAgICAgICAgY3MuX2dsb2JhbHBhcmFtID0gc2VsZi5fZ2xv
YmFscGFyYW0KLSAgICAgICAgcmV0dXJuIGNzCi0KLSAgICBkZWYgX2NoZWNrYXJnbm90Y29udGFp
bmVkKHNlbGYsIGFyZyk6Ci0gICAgICAgIGlmIGFyZyBpbiBzZWxmLnBhcmFtcyBvciBhcmcgaW4g
c2VsZi5mdW5jYXJnczoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSAl
ciIgJSAoYXJnLCkpCi0KLSAgICBkZWYgZ2V0cGFyYW0oc2VsZiwgbmFtZSk6Ci0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnBhcmFtc1tuYW1lXQotICAgICAgICBleGNlcHQg
S2V5RXJyb3I6Ci0gICAgICAgICAgICBpZiBzZWxmLl9nbG9iYWxwYXJhbSBpcyBOT1RTRVQ6Ci0g
ICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihuYW1lKQotICAgICAgICAgICAgcmV0dXJu
IHNlbGYuX2dsb2JhbHBhcmFtCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgaWQoc2VsZik6Ci0g
ICAgICAgIHJldHVybiAiLSIuam9pbihtYXAoc3RyLCBmaWx0ZXIoTm9uZSwgc2VsZi5faWRsaXN0
KSkpCi0KLSAgICBkZWYgc2V0bXVsdGkyKHNlbGYsIHZhbHR5cGVzLCBhcmduYW1lcywgdmFsc2V0
LCBpZCwgbWFya3MsIHNjb3BlbnVtLAotICAgICAgICAgICAgICAgICAgcGFyYW1faW5kZXgpOgot
ICAgICAgICBmb3IgYXJnLCB2YWwgaW4gemlwKGFyZ25hbWVzLCB2YWxzZXQpOgotICAgICAgICAg
ICAgc2VsZi5fY2hlY2thcmdub3Rjb250YWluZWQoYXJnKQotICAgICAgICAgICAgdmFsdHlwZV9m
b3JfYXJnID0gdmFsdHlwZXNbYXJnXQotICAgICAgICAgICAgZ2V0YXR0cihzZWxmLCB2YWx0eXBl
X2Zvcl9hcmcpW2FyZ10gPSB2YWwKLSAgICAgICAgICAgIHNlbGYuaW5kaWNlc1thcmddID0gcGFy
YW1faW5kZXgKLSAgICAgICAgICAgIHNlbGYuX2FyZzJzY29wZW51bVthcmddID0gc2NvcGVudW0K
LSAgICAgICAgc2VsZi5faWRsaXN0LmFwcGVuZChpZCkKLSAgICAgICAgc2VsZi5tYXJrcy5leHRl
bmQobWFya3MpCi0KLSAgICBkZWYgc2V0YWxsKHNlbGYsIGZ1bmNhcmdzLCBpZCwgcGFyYW0pOgot
ICAgICAgICBmb3IgeCBpbiBmdW5jYXJnczoKLSAgICAgICAgICAgIHNlbGYuX2NoZWNrYXJnbm90
Y29udGFpbmVkKHgpCi0gICAgICAgIHNlbGYuZnVuY2FyZ3MudXBkYXRlKGZ1bmNhcmdzKQotICAg
ICAgICBpZiBpZCBpcyBub3QgTk9UU0VUOgotICAgICAgICAgICAgc2VsZi5faWRsaXN0LmFwcGVu
ZChpZCkKLSAgICAgICAgaWYgcGFyYW0gaXMgbm90IE5PVFNFVDoKLSAgICAgICAgICAgIGFzc2Vy
dCBzZWxmLl9nbG9iYWxwYXJhbSBpcyBOT1RTRVQKLSAgICAgICAgICAgIHNlbGYuX2dsb2JhbHBh
cmFtID0gcGFyYW0KLSAgICAgICAgZm9yIGFyZyBpbiBmdW5jYXJnczoKLSAgICAgICAgICAgIHNl
bGYuX2FyZzJzY29wZW51bVthcmddID0gZml4dHVyZXMuc2NvcGVudW1fZnVuY3Rpb24KLQotCi1j
bGFzcyBNZXRhZnVuYyhmaXh0dXJlcy5GdW5jYXJnbmFtZXNDb21wYXRBdHRyKToKLSAgICAiIiIK
LSAgICBNZXRhZnVuYyBvYmplY3RzIGFyZSBwYXNzZWQgdG8gdGhlIGBgcHl0ZXN0X2dlbmVyYXRl
X3Rlc3RzYGAgaG9vay4KLSAgICBUaGV5IGhlbHAgdG8gaW5zcGVjdCBhIHRlc3QgZnVuY3Rpb24g
YW5kIHRvIGdlbmVyYXRlIHRlc3RzIGFjY29yZGluZyB0bwotICAgIHRlc3QgY29uZmlndXJhdGlv
biBvciB2YWx1ZXMgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyBvciBtb2R1bGUgd2hlcmUgYQotICAg
IHRlc3QgZnVuY3Rpb24gaXMgZGVmaW5lZC4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBmdW5jdGlvbiwgZml4dHVyZWluZm8sIGNvbmZpZywgY2xzPU5vbmUsIG1vZHVsZT1Ob25l
KToKLSAgICAgICAgIzogYWNjZXNzIHRvIHRoZSA6Y2xhc3M6YF9weXRlc3QuY29uZmlnLkNvbmZp
Z2Agb2JqZWN0IGZvciB0aGUgdGVzdCBzZXNzaW9uCi0gICAgICAgIHNlbGYuY29uZmlnID0gY29u
ZmlnCi0KLSAgICAgICAgIzogdGhlIG1vZHVsZSBvYmplY3Qgd2hlcmUgdGhlIHRlc3QgZnVuY3Rp
b24gaXMgZGVmaW5lZCBpbi4KLSAgICAgICAgc2VsZi5tb2R1bGUgPSBtb2R1bGUKLQotICAgICAg
ICAjOiB1bmRlcmx5aW5nIHB5dGhvbiB0ZXN0IGZ1bmN0aW9uCi0gICAgICAgIHNlbGYuZnVuY3Rp
b24gPSBmdW5jdGlvbgotCi0gICAgICAgICM6IHNldCBvZiBmaXh0dXJlIG5hbWVzIHJlcXVpcmVk
IGJ5IHRoZSB0ZXN0IGZ1bmN0aW9uCi0gICAgICAgIHNlbGYuZml4dHVyZW5hbWVzID0gZml4dHVy
ZWluZm8ubmFtZXNfY2xvc3VyZQotCi0gICAgICAgICM6IGNsYXNzIG9iamVjdCB3aGVyZSB0aGUg
dGVzdCBmdW5jdGlvbiBpcyBkZWZpbmVkIGluIG9yIGBgTm9uZWBgLgotICAgICAgICBzZWxmLmNs
cyA9IGNscwotCi0gICAgICAgIHNlbGYuX2NhbGxzID0gW10KLSAgICAgICAgc2VsZi5faWRzID0g
c2V0KCkKLSAgICAgICAgc2VsZi5fYXJnMmZpeHR1cmVkZWZzID0gZml4dHVyZWluZm8ubmFtZTJm
aXh0dXJlZGVmcwotCi0gICAgZGVmIHBhcmFtZXRyaXplKHNlbGYsIGFyZ25hbWVzLCBhcmd2YWx1
ZXMsIGluZGlyZWN0PUZhbHNlLCBpZHM9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgc2NvcGU9
Tm9uZSk6Ci0gICAgICAgICIiIiBBZGQgbmV3IGludm9jYXRpb25zIHRvIHRoZSB1bmRlcmx5aW5n
IHRlc3QgZnVuY3Rpb24gdXNpbmcgdGhlIGxpc3QKLSAgICAgICAgb2YgYXJndmFsdWVzIGZvciB0
aGUgZ2l2ZW4gYXJnbmFtZXMuICBQYXJhbWV0cml6YXRpb24gaXMgcGVyZm9ybWVkCi0gICAgICAg
IGR1cmluZyB0aGUgY29sbGVjdGlvbiBwaGFzZS4gIElmIHlvdSBuZWVkIHRvIHNldHVwIGV4cGVu
c2l2ZSByZXNvdXJjZXMKLSAgICAgICAgc2VlIGFib3V0IHNldHRpbmcgaW5kaXJlY3QgdG8gZG8g
aXQgcmF0aGVyIGF0IHRlc3Qgc2V0dXAgdGltZS4KLQotICAgICAgICA6YXJnIGFyZ25hbWVzOiBh
IGNvbW1hLXNlcGFyYXRlZCBzdHJpbmcgZGVub3Rpbmcgb25lIG9yIG1vcmUgYXJndW1lbnQKLSAg
ICAgICAgICAgICAgICAgICAgICAgbmFtZXMsIG9yIGEgbGlzdC90dXBsZSBvZiBhcmd1bWVudCBz
dHJpbmdzLgotCi0gICAgICAgIDphcmcgYXJndmFsdWVzOiBUaGUgbGlzdCBvZiBhcmd2YWx1ZXMg
ZGV0ZXJtaW5lcyBob3cgb2Z0ZW4gYQotICAgICAgICAgICAgdGVzdCBpcyBpbnZva2VkIHdpdGgg
ZGlmZmVyZW50IGFyZ3VtZW50IHZhbHVlcy4gIElmIG9ubHkgb25lCi0gICAgICAgICAgICBhcmdu
YW1lIHdhcyBzcGVjaWZpZWQgYXJndmFsdWVzIGlzIGEgbGlzdCBvZiB2YWx1ZXMuICBJZiBOCi0g
ICAgICAgICAgICBhcmduYW1lcyB3ZXJlIHNwZWNpZmllZCwgYXJndmFsdWVzIG11c3QgYmUgYSBs
aXN0IG9mIE4tdHVwbGVzLAotICAgICAgICAgICAgd2hlcmUgZWFjaCB0dXBsZS1lbGVtZW50IHNw
ZWNpZmllcyBhIHZhbHVlIGZvciBpdHMgcmVzcGVjdGl2ZQotICAgICAgICAgICAgYXJnbmFtZS4K
LQotICAgICAgICA6YXJnIGluZGlyZWN0OiBUaGUgbGlzdCBvZiBhcmduYW1lcyBvciBib29sZWFu
LiBBIGxpc3Qgb2YgYXJndW1lbnRzJwotICAgICAgICAgICAgbmFtZXMgKHN1YnNldCBvZiBhcmdu
YW1lcykuIElmIFRydWUgdGhlIGxpc3QgY29udGFpbnMgYWxsIG5hbWVzIGZyb20KLSAgICAgICAg
ICAgIHRoZSBhcmduYW1lcy4gRWFjaCBhcmd2YWx1ZSBjb3JyZXNwb25kaW5nIHRvIGFuIGFyZ25h
bWUgaW4gdGhpcyBsaXN0IHdpbGwKLSAgICAgICAgICAgIGJlIHBhc3NlZCBhcyByZXF1ZXN0LnBh
cmFtIHRvIGl0cyByZXNwZWN0aXZlIGFyZ25hbWUgZml4dHVyZQotICAgICAgICAgICAgZnVuY3Rp
b24gc28gdGhhdCBpdCBjYW4gcGVyZm9ybSBtb3JlIGV4cGVuc2l2ZSBzZXR1cHMgZHVyaW5nIHRo
ZQotICAgICAgICAgICAgc2V0dXAgcGhhc2Ugb2YgYSB0ZXN0IHJhdGhlciB0aGFuIGF0IGNvbGxl
Y3Rpb24gdGltZS4KLQotICAgICAgICA6YXJnIGlkczogbGlzdCBvZiBzdHJpbmcgaWRzLCBvciBh
IGNhbGxhYmxlLgotICAgICAgICAgICAgSWYgc3RyaW5ncywgZWFjaCBpcyBjb3JyZXNwb25kaW5n
IHRvIHRoZSBhcmd2YWx1ZXMgc28gdGhhdCB0aGV5IGFyZQotICAgICAgICAgICAgcGFydCBvZiB0
aGUgdGVzdCBpZC4gSWYgTm9uZSBpcyBnaXZlbiBhcyBpZCBvZiBzcGVjaWZpYyB0ZXN0LCB0aGUK
LSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGlkIGZvciB0aGF0IGFyZ3VtZW50
IHdpbGwgYmUgdXNlZC4KLSAgICAgICAgICAgIElmIGNhbGxhYmxlLCBpdCBzaG91bGQgdGFrZSBv
bmUgYXJndW1lbnQgKGEgc2luZ2xlIGFyZ3ZhbHVlKSBhbmQgcmV0dXJuCi0gICAgICAgICAgICBh
IHN0cmluZyBvciByZXR1cm4gTm9uZS4gSWYgTm9uZSwgdGhlIGF1dG9tYXRpY2FsbHkgZ2VuZXJh
dGVkIGlkIGZvciB0aGF0Ci0gICAgICAgICAgICBhcmd1bWVudCB3aWxsIGJlIHVzZWQuCi0gICAg
ICAgICAgICBJZiBubyBpZHMgYXJlIHByb3ZpZGVkIHRoZXkgd2lsbCBiZSBnZW5lcmF0ZWQgYXV0
b21hdGljYWxseSBmcm9tCi0gICAgICAgICAgICB0aGUgYXJndmFsdWVzLgotCi0gICAgICAgIDph
cmcgc2NvcGU6IGlmIHNwZWNpZmllZCBpdCBkZW5vdGVzIHRoZSBzY29wZSBvZiB0aGUgcGFyYW1l
dGVycy4KLSAgICAgICAgICAgIFRoZSBzY29wZSBpcyB1c2VkIGZvciBncm91cGluZyB0ZXN0cyBi
eSBwYXJhbWV0ZXIgaW5zdGFuY2VzLgotICAgICAgICAgICAgSXQgd2lsbCBhbHNvIG92ZXJyaWRl
IGFueSBmaXh0dXJlLWZ1bmN0aW9uIGRlZmluZWQgc2NvcGUsIGFsbG93aW5nCi0gICAgICAgICAg
ICB0byBzZXQgYSBkeW5hbWljIHNjb3BlIHVzaW5nIHRlc3QgY29udGV4dCBvciBjb25maWd1cmF0
aW9uLgotICAgICAgICAiIiIKLSAgICAgICAgZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGltcG9ydCBz
Y29wZTJpbmRleAotICAgICAgICBmcm9tIF9weXRlc3QubWFyayBpbXBvcnQgUGFyYW1ldGVyU2V0
Ci0gICAgICAgIGZyb20gcHkuaW8gaW1wb3J0IHNhZmVyZXByCi0gICAgICAgIGFyZ25hbWVzLCBw
YXJhbWV0ZXJzID0gUGFyYW1ldGVyU2V0Ll9mb3JfcGFyYW1ldGVyaXplKAotICAgICAgICAgICAg
YXJnbmFtZXMsIGFyZ3ZhbHVlcywgc2VsZi5mdW5jdGlvbikKLSAgICAgICAgZGVsIGFyZ3ZhbHVl
cwotCi0gICAgICAgIGlmIHNjb3BlIGlzIE5vbmU6Ci0gICAgICAgICAgICBzY29wZSA9IF9maW5k
X3BhcmFtZXRyaXplZF9zY29wZShhcmduYW1lcywgc2VsZi5fYXJnMmZpeHR1cmVkZWZzLCBpbmRp
cmVjdCkKLQotICAgICAgICBzY29wZW51bSA9IHNjb3BlMmluZGV4KHNjb3BlLCBkZXNjcj0nY2Fs
bCB0byB7MH0nLmZvcm1hdChzZWxmLnBhcmFtZXRyaXplKSkKLSAgICAgICAgdmFsdHlwZXMgPSB7
fQotICAgICAgICBmb3IgYXJnIGluIGFyZ25hbWVzOgotICAgICAgICAgICAgaWYgYXJnIG5vdCBp
biBzZWxmLmZpeHR1cmVuYW1lczoKLSAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGluZGly
ZWN0LCAodHVwbGUsIGxpc3QpKToKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICdmaXh0dXJl
JyBpZiBhcmcgaW4gaW5kaXJlY3QgZWxzZSAnYXJndW1lbnQnCi0gICAgICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgbmFtZSA9ICdmaXh0dXJlJyBpZiBpbmRpcmVjdCBlbHNl
ICdhcmd1bWVudCcKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAg
ICAgICAgICAgICAiJXIgdXNlcyBubyAlcyAlciIgJSAoCi0gICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLmZ1bmN0aW9uLCBuYW1lLCBhcmcpKQotCi0gICAgICAgIGlmIGluZGlyZWN0IGlzIFRy
dWU6Ci0gICAgICAgICAgICB2YWx0eXBlcyA9IGRpY3QuZnJvbWtleXMoYXJnbmFtZXMsICJwYXJh
bXMiKQotICAgICAgICBlbGlmIGluZGlyZWN0IGlzIEZhbHNlOgotICAgICAgICAgICAgdmFsdHlw
ZXMgPSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAiZnVuY2FyZ3MiKQotICAgICAgICBlbGlmIGlz
aW5zdGFuY2UoaW5kaXJlY3QsICh0dXBsZSwgbGlzdCkpOgotICAgICAgICAgICAgdmFsdHlwZXMg
PSBkaWN0LmZyb21rZXlzKGFyZ25hbWVzLCAiZnVuY2FyZ3MiKQotICAgICAgICAgICAgZm9yIGFy
ZyBpbiBpbmRpcmVjdDoKLSAgICAgICAgICAgICAgICBpZiBhcmcgbm90IGluIGFyZ25hbWVzOgot
ICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJpbmRpcmVjdCBnaXZlbiB0byAl
cjogZml4dHVyZSAlciBkb2Vzbid0IGV4aXN0IiAlICgKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLmZ1bmN0aW9uLCBhcmcpKQotICAgICAgICAgICAgICAgIHZhbHR5
cGVzW2FyZ10gPSAicGFyYW1zIgotICAgICAgICBpZGZuID0gTm9uZQotICAgICAgICBpZiBjYWxs
YWJsZShpZHMpOgotICAgICAgICAgICAgaWRmbiA9IGlkcwotICAgICAgICAgICAgaWRzID0gTm9u
ZQotICAgICAgICBpZiBpZHM6Ci0gICAgICAgICAgICBpZiBsZW4oaWRzKSAhPSBsZW4ocGFyYW1l
dGVycyk6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignJWQgdGVzdHMgc3BlY2lm
aWVkIHdpdGggJWQgaWRzJyAlICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxl
bihwYXJhbWV0ZXJzKSwgbGVuKGlkcykpKQotICAgICAgICAgICAgZm9yIGlkX3ZhbHVlIGluIGlk
czoKLSAgICAgICAgICAgICAgICBpZiBpZF92YWx1ZSBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5z
dGFuY2UoaWRfdmFsdWUsIHNpeC5zdHJpbmdfdHlwZXMpOgotICAgICAgICAgICAgICAgICAgICBt
c2cgPSAnaWRzIG11c3QgYmUgbGlzdCBvZiBzdHJpbmdzLCBmb3VuZDogJXMgKHR5cGU6ICVzKScK
LSAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcihtc2cgJSAoc2FmZXJlcHIoaWRf
dmFsdWUpLCB0eXBlKGlkX3ZhbHVlKS5fX25hbWVfXykpCi0gICAgICAgIGlkcyA9IGlkbWFrZXIo
YXJnbmFtZXMsIHBhcmFtZXRlcnMsIGlkZm4sIGlkcywgc2VsZi5jb25maWcpCi0gICAgICAgIG5l
d2NhbGxzID0gW10KLSAgICAgICAgZm9yIGNhbGxzcGVjIGluIHNlbGYuX2NhbGxzIG9yIFtDYWxs
U3BlYzIoc2VsZildOgotICAgICAgICAgICAgZWxlbWVudHMgPSB6aXAoaWRzLCBwYXJhbWV0ZXJz
LCBjb3VudCgpKQotICAgICAgICAgICAgZm9yIGFfaWQsIHBhcmFtLCBwYXJhbV9pbmRleCBpbiBl
bGVtZW50czoKLSAgICAgICAgICAgICAgICBpZiBsZW4ocGFyYW0udmFsdWVzKSAhPSBsZW4oYXJn
bmFtZXMpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKAotICAgICAgICAg
ICAgICAgICAgICAgICAgJ0luICJwYXJhbWV0cml6ZSIgdGhlIG51bWJlciBvZiB2YWx1ZXMgKHsw
fSkgbXVzdCBiZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAnZXF1YWwgdG8gdGhlIG51bWJl
ciBvZiBuYW1lcyAoezF9KScuZm9ybWF0KAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBh
cmFtLnZhbHVlcywgYXJnbmFtZXMpKQotICAgICAgICAgICAgICAgIG5ld2NhbGxzcGVjID0gY2Fs
bHNwZWMuY29weShzZWxmKQotICAgICAgICAgICAgICAgIG5ld2NhbGxzcGVjLnNldG11bHRpMih2
YWx0eXBlcywgYXJnbmFtZXMsIHBhcmFtLnZhbHVlcywgYV9pZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcGFyYW0ubWFya3MsIHNjb3BlbnVtLCBwYXJhbV9pbmRleCkK
LSAgICAgICAgICAgICAgICBuZXdjYWxscy5hcHBlbmQobmV3Y2FsbHNwZWMpCi0gICAgICAgIHNl
bGYuX2NhbGxzID0gbmV3Y2FsbHMKLQotICAgIGRlZiBhZGRjYWxsKHNlbGYsIGZ1bmNhcmdzPU5v
bmUsIGlkPU5PVFNFVCwgcGFyYW09Tk9UU0VUKToKLSAgICAgICAgIiIiIEFkZCBhIG5ldyBjYWxs
IHRvIHRoZSB1bmRlcmx5aW5nIHRlc3QgZnVuY3Rpb24gZHVyaW5nIHRoZSBjb2xsZWN0aW9uIHBo
YXNlIG9mIGEgdGVzdCBydW4uCi0KLSAgICAgICAgLi4gZGVwcmVjYXRlZDo6IDMuMwotCi0gICAg
ICAgICAgICBVc2UgOm1ldGg6YHBhcmFtZXRyaXplYCBpbnN0ZWFkLgotCi0gICAgICAgIE5vdGUg
dGhhdCByZXF1ZXN0LmFkZGNhbGwoKSBpcyBjYWxsZWQgZHVyaW5nIHRoZSB0ZXN0IGNvbGxlY3Rp
b24gcGhhc2UgcHJpb3IgYW5kCi0gICAgICAgIGluZGVwZW5kZW50bHkgdG8gYWN0dWFsIHRlc3Qg
ZXhlY3V0aW9uLiAgWW91IHNob3VsZCBvbmx5IHVzZSBhZGRjYWxsKCkKLSAgICAgICAgaWYgeW91
IG5lZWQgdG8gc3BlY2lmeSBtdWx0aXBsZSBhcmd1bWVudHMgb2YgYSB0ZXN0IGZ1bmN0aW9uLgot
Ci0gICAgICAgIDphcmcgZnVuY2FyZ3M6IGFyZ3VtZW50IGtleXdvcmQgZGljdGlvbmFyeSB1c2Vk
IHdoZW4gaW52b2tpbmcKLSAgICAgICAgICAgIHRoZSB0ZXN0IGZ1bmN0aW9uLgotCi0gICAgICAg
IDphcmcgaWQ6IHVzZWQgZm9yIHJlcG9ydGluZyBhbmQgaWRlbnRpZmljYXRpb24gcHVycG9zZXMu
ICBJZiB5b3UKLSAgICAgICAgICAgIGRvbid0IHN1cHBseSBhbiBgaWRgIGFuIGF1dG9tYXRpYyB1
bmlxdWUgaWQgd2lsbCBiZSBnZW5lcmF0ZWQuCi0KLSAgICAgICAgOmFyZyBwYXJhbTogYSBwYXJh
bWV0ZXIgd2hpY2ggd2lsbCBiZSBleHBvc2VkIHRvIGEgbGF0ZXIgZml4dHVyZSBmdW5jdGlvbgot
ICAgICAgICAgICAgaW52b2NhdGlvbiB0aHJvdWdoIHRoZSBgYHJlcXVlc3QucGFyYW1gYCBhdHRy
aWJ1dGUuCi0gICAgICAgICIiIgotICAgICAgICBpZiBzZWxmLmNvbmZpZzoKLSAgICAgICAgICAg
IHNlbGYuY29uZmlnLndhcm4oJ0MxJywgbWVzc2FnZT1kZXByZWNhdGVkLk1FVEFGVU5DX0FERF9D
QUxMLCBmc2xvY2F0aW9uPU5vbmUpCi0gICAgICAgIGFzc2VydCBmdW5jYXJncyBpcyBOb25lIG9y
IGlzaW5zdGFuY2UoZnVuY2FyZ3MsIGRpY3QpCi0gICAgICAgIGlmIGZ1bmNhcmdzIGlzIG5vdCBO
b25lOgotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZnVuY2FyZ3M6Ci0gICAgICAgICAgICAgICAg
aWYgbmFtZSBub3QgaW4gc2VsZi5maXh0dXJlbmFtZXM6Ci0gICAgICAgICAgICAgICAgICAgIGZh
aWwoImZ1bmNhcmcgJXIgbm90IHVzZWQgaW4gdGhpcyBmdW5jdGlvbi4iICUgbmFtZSkKLSAgICAg
ICAgZWxzZToKLSAgICAgICAgICAgIGZ1bmNhcmdzID0ge30KLSAgICAgICAgaWYgaWQgaXMgTm9u
ZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImlkPU5vbmUgbm90IGFsbG93ZWQiKQot
ICAgICAgICBpZiBpZCBpcyBOT1RTRVQ6Ci0gICAgICAgICAgICBpZCA9IGxlbihzZWxmLl9jYWxs
cykKLSAgICAgICAgaWQgPSBzdHIoaWQpCi0gICAgICAgIGlmIGlkIGluIHNlbGYuX2lkczoKLSAg
ICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImR1cGxpY2F0ZSBpZCAlciIgJSBpZCkKLSAgICAg
ICAgc2VsZi5faWRzLmFkZChpZCkKLQotICAgICAgICBjcyA9IENhbGxTcGVjMihzZWxmKQotICAg
ICAgICBjcy5zZXRhbGwoZnVuY2FyZ3MsIGlkLCBwYXJhbSkKLSAgICAgICAgc2VsZi5fY2FsbHMu
YXBwZW5kKGNzKQotCi0KLWRlZiBfZmluZF9wYXJhbWV0cml6ZWRfc2NvcGUoYXJnbmFtZXMsIGFy
ZzJmaXh0dXJlZGVmcywgaW5kaXJlY3QpOgotICAgICIiIkZpbmQgdGhlIG1vc3QgYXBwcm9wcmlh
dGUgc2NvcGUgZm9yIGEgcGFyYW1ldHJpemVkIGNhbGwgYmFzZWQgb24gaXRzIGFyZ3VtZW50cy4K
LQotICAgIFdoZW4gdGhlcmUncyBhdCBsZWFzdCBvbmUgZGlyZWN0IGFyZ3VtZW50LCBhbHdheXMg
dXNlICJmdW5jdGlvbiIgc2NvcGUuCi0KLSAgICBXaGVuIGEgdGVzdCBmdW5jdGlvbiBpcyBwYXJh
bWV0cml6ZWQgYW5kIGFsbCBpdHMgYXJndW1lbnRzIGFyZSBpbmRpcmVjdAotICAgIChlLmcuIGZp
eHR1cmVzKSwgcmV0dXJuIHRoZSBtb3N0IG5hcnJvdyBzY29wZSBiYXNlZCBvbiB0aGUgZml4dHVy
ZXMgdXNlZC4KLQotICAgIFJlbGF0ZWQgdG8gaXNzdWUgIzE4MzIsIGJhc2VkIG9uIGNvZGUgcG9z
dGVkIGJ5IEBLaW5nZHJlYWQuCi0gICAgIiIiCi0gICAgZnJvbSBfcHl0ZXN0LmZpeHR1cmVzIGlt
cG9ydCBzY29wZXMKLSAgICBpbmRpcmVjdF9hc19saXN0ID0gaXNpbnN0YW5jZShpbmRpcmVjdCwg
KGxpc3QsIHR1cGxlKSkKLSAgICBhbGxfYXJndW1lbnRzX2FyZV9maXh0dXJlcyA9IGluZGlyZWN0
IGlzIFRydWUgb3IgXAotICAgICAgICBpbmRpcmVjdF9hc19saXN0IGFuZCBsZW4oaW5kaXJlY3Qp
ID09IGFyZ25hbWVzCi0gICAgaWYgYWxsX2FyZ3VtZW50c19hcmVfZml4dHVyZXM6Ci0gICAgICAg
IGZpeHR1cmVkZWZzID0gYXJnMmZpeHR1cmVkZWZzIG9yIHt9Ci0gICAgICAgIHVzZWRfc2NvcGVz
ID0gW2ZpeHR1cmVkZWZbMF0uc2NvcGUgZm9yIG5hbWUsIGZpeHR1cmVkZWYgaW4gZml4dHVyZWRl
ZnMuaXRlbXMoKV0KLSAgICAgICAgaWYgdXNlZF9zY29wZXM6Ci0gICAgICAgICAgICAjIFRha2Vz
IHRoZSBtb3N0IG5hcnJvdyBzY29wZSBmcm9tIHVzZWQgZml4dHVyZXMKLSAgICAgICAgICAgIGZv
ciBzY29wZSBpbiByZXZlcnNlZChzY29wZXMpOgotICAgICAgICAgICAgICAgIGlmIHNjb3BlIGlu
IHVzZWRfc2NvcGVzOgotICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2NvcGUKLQotICAgIHJl
dHVybiAnZnVuY3Rpb24nCi0KLQotZGVmIF9pZHZhbCh2YWwsIGFyZ25hbWUsIGlkeCwgaWRmbiwg
Y29uZmlnPU5vbmUpOgotICAgIGlmIGlkZm46Ci0gICAgICAgIHMgPSBOb25lCi0gICAgICAgIHRy
eToKLSAgICAgICAgICAgIHMgPSBpZGZuKHZhbCkKLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoK
LSAgICAgICAgICAgICMgU2VlIGlzc3VlIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5
dGVzdC9pc3N1ZXMvMjE2OQotICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgICAg
ICBtc2cgPSAiUmFpc2VkIHdoaWxlIHRyeWluZyB0byBkZXRlcm1pbmUgaWQgb2YgcGFyYW1ldGVy
ICVzIGF0IHBvc2l0aW9uICVkLiIgJSAoYXJnbmFtZSwgaWR4KQotICAgICAgICAgICAgbXNnICs9
ICdcblVwZGF0ZSB5b3VyIGNvZGUgYXMgdGhpcyB3aWxsIHJhaXNlIGFuIGVycm9yIGluIHB5dGVz
dC00LjAuJwotICAgICAgICAgICAgd2FybmluZ3Mud2Fybihtc2csIERlcHJlY2F0aW9uV2Fybmlu
ZykKLSAgICAgICAgaWYgczoKLSAgICAgICAgICAgIHJldHVybiBhc2NpaV9lc2NhcGVkKHMpCi0K
LSAgICBpZiBjb25maWc6Ci0gICAgICAgIGhvb2tfaWQgPSBjb25maWcuaG9vay5weXRlc3RfbWFr
ZV9wYXJhbWV0cml6ZV9pZCgKLSAgICAgICAgICAgIGNvbmZpZz1jb25maWcsIHZhbD12YWwsIGFy
Z25hbWU9YXJnbmFtZSkKLSAgICAgICAgaWYgaG9va19pZDoKLSAgICAgICAgICAgIHJldHVybiBo
b29rX2lkCi0KLSAgICBpZiBpc2luc3RhbmNlKHZhbCwgU1RSSU5HX1RZUEVTKToKLSAgICAgICAg
cmV0dXJuIGFzY2lpX2VzY2FwZWQodmFsKQotICAgIGVsaWYgaXNpbnN0YW5jZSh2YWwsIChmbG9h
dCwgaW50LCBib29sLCBOb25lVHlwZSkpOgotICAgICAgICByZXR1cm4gc3RyKHZhbCkKLSAgICBl
bGlmIGlzaW5zdGFuY2UodmFsLCBSRUdFWF9UWVBFKToKLSAgICAgICAgcmV0dXJuIGFzY2lpX2Vz
Y2FwZWQodmFsLnBhdHRlcm4pCi0gICAgZWxpZiBlbnVtIGlzIG5vdCBOb25lIGFuZCBpc2luc3Rh
bmNlKHZhbCwgZW51bS5FbnVtKToKLSAgICAgICAgcmV0dXJuIHN0cih2YWwpCi0gICAgZWxpZiBp
c2NsYXNzKHZhbCkgYW5kIGhhc2F0dHIodmFsLCAnX19uYW1lX18nKToKLSAgICAgICAgcmV0dXJu
IHZhbC5fX25hbWVfXwotICAgIHJldHVybiBzdHIoYXJnbmFtZSkgKyBzdHIoaWR4KQotCi0KLWRl
ZiBfaWR2YWxzZXQoaWR4LCBwYXJhbWV0ZXJzZXQsIGFyZ25hbWVzLCBpZGZuLCBpZHMsIGNvbmZp
Zz1Ob25lKToKLSAgICBpZiBwYXJhbWV0ZXJzZXQuaWQgaXMgbm90IE5vbmU6Ci0gICAgICAgIHJl
dHVybiBwYXJhbWV0ZXJzZXQuaWQKLSAgICBpZiBpZHMgaXMgTm9uZSBvciAoaWR4ID49IGxlbihp
ZHMpIG9yIGlkc1tpZHhdIGlzIE5vbmUpOgotICAgICAgICB0aGlzX2lkID0gW19pZHZhbCh2YWws
IGFyZ25hbWUsIGlkeCwgaWRmbiwgY29uZmlnKQotICAgICAgICAgICAgICAgICAgIGZvciB2YWws
IGFyZ25hbWUgaW4gemlwKHBhcmFtZXRlcnNldC52YWx1ZXMsIGFyZ25hbWVzKV0KLSAgICAgICAg
cmV0dXJuICItIi5qb2luKHRoaXNfaWQpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGFzY2lp
X2VzY2FwZWQoaWRzW2lkeF0pCi0KLQotZGVmIGlkbWFrZXIoYXJnbmFtZXMsIHBhcmFtZXRlcnNl
dHMsIGlkZm49Tm9uZSwgaWRzPU5vbmUsIGNvbmZpZz1Ob25lKToKLSAgICBpZHMgPSBbX2lkdmFs
c2V0KHZhbGluZGV4LCBwYXJhbWV0ZXJzZXQsIGFyZ25hbWVzLCBpZGZuLCBpZHMsIGNvbmZpZykK
LSAgICAgICAgICAgZm9yIHZhbGluZGV4LCBwYXJhbWV0ZXJzZXQgaW4gZW51bWVyYXRlKHBhcmFt
ZXRlcnNldHMpXQotICAgIGlmIGxlbihzZXQoaWRzKSkgIT0gbGVuKGlkcyk6Ci0gICAgICAgICMg
VGhlIGlkcyBhcmUgbm90IHVuaXF1ZQotICAgICAgICBkdXBsaWNhdGVzID0gW3Rlc3RpZCBmb3Ig
dGVzdGlkIGluIGlkcyBpZiBpZHMuY291bnQodGVzdGlkKSA+IDFdCi0gICAgICAgIGNvdW50ZXJz
ID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGFtYmRhOiAwKQotICAgICAgICBmb3IgaW5kZXgs
IHRlc3RpZCBpbiBlbnVtZXJhdGUoaWRzKToKLSAgICAgICAgICAgIGlmIHRlc3RpZCBpbiBkdXBs
aWNhdGVzOgotICAgICAgICAgICAgICAgIGlkc1tpbmRleF0gPSB0ZXN0aWQgKyBzdHIoY291bnRl
cnNbdGVzdGlkXSkKLSAgICAgICAgICAgICAgICBjb3VudGVyc1t0ZXN0aWRdICs9IDEKLSAgICBy
ZXR1cm4gaWRzCi0KLQotZGVmIHNob3dfZml4dHVyZXNfcGVyX3Rlc3QoY29uZmlnKToKLSAgICBm
cm9tIF9weXRlc3QubWFpbiBpbXBvcnQgd3JhcF9zZXNzaW9uCi0gICAgcmV0dXJuIHdyYXBfc2Vz
c2lvbihjb25maWcsIF9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0KQotCi0KLWRlZiBfc2hvd19maXh0
dXJlc19wZXJfdGVzdChjb25maWcsIHNlc3Npb24pOgotICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZp
ZwotICAgIHNlc3Npb24ucGVyZm9ybV9jb2xsZWN0KCkKLSAgICBjdXJkaXIgPSBweS5wYXRoLmxv
Y2FsKCkKLSAgICB0dyA9IF9weXRlc3QuY29uZmlnLmNyZWF0ZV90ZXJtaW5hbF93cml0ZXIoY29u
ZmlnKQotICAgIHZlcmJvc2UgPSBjb25maWcuZ2V0dmFsdWUoInZlcmJvc2UiKQotCi0gICAgZGVm
IGdldF9iZXN0X3JlbHBhdGgoZnVuYyk6Ci0gICAgICAgIGxvYyA9IGdldGxvY2F0aW9uKGZ1bmMs
IGN1cmRpcikKLSAgICAgICAgcmV0dXJuIGN1cmRpci5iZXN0cmVscGF0aChsb2MpCi0KLSAgICBk
ZWYgd3JpdGVfZml4dHVyZShmaXh0dXJlX2RlZik6Ci0gICAgICAgIGFyZ25hbWUgPSBmaXh0dXJl
X2RlZi5hcmduYW1lCi0gICAgICAgIGlmIHZlcmJvc2UgPD0gMCBhbmQgYXJnbmFtZS5zdGFydHN3
aXRoKCJfIik6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgdmVyYm9zZSA+IDA6Ci0g
ICAgICAgICAgICBiZXN0cmVsID0gZ2V0X2Jlc3RfcmVscGF0aChmaXh0dXJlX2RlZi5mdW5jKQot
ICAgICAgICAgICAgZnVuY2FyZ3NwZWMgPSAiezB9IC0tIHsxfSIuZm9ybWF0KGFyZ25hbWUsIGJl
c3RyZWwpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmdW5jYXJnc3BlYyA9IGFyZ25hbWUK
LSAgICAgICAgdHcubGluZShmdW5jYXJnc3BlYywgZ3JlZW49VHJ1ZSkKLSAgICAgICAgZml4dHVy
ZV9kb2MgPSBmaXh0dXJlX2RlZi5mdW5jLl9fZG9jX18KLSAgICAgICAgaWYgZml4dHVyZV9kb2M6
Ci0gICAgICAgICAgICB3cml0ZV9kb2NzdHJpbmcodHcsIGZpeHR1cmVfZG9jKQotICAgICAgICBl
bHNlOgotICAgICAgICAgICAgdHcubGluZSgnICAgIG5vIGRvY3N0cmluZyBhdmFpbGFibGUnLCBy
ZWQ9VHJ1ZSkKLQotICAgIGRlZiB3cml0ZV9pdGVtKGl0ZW0pOgotICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICBpbmZvID0gaXRlbS5fZml4dHVyZWluZm8KLSAgICAgICAgZXhjZXB0IEF0dHJpYnV0
ZUVycm9yOgotICAgICAgICAgICAgIyBkb2N0ZXN0cyBpdGVtcyBoYXZlIG5vIF9maXh0dXJlaW5m
byBhdHRyaWJ1dGUKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBpZiBub3QgaW5mby5uYW1l
MmZpeHR1cmVkZWZzOgotICAgICAgICAgICAgIyB0aGlzIHRlc3QgaXRlbSBkb2VzIG5vdCB1c2Ug
YW55IGZpeHR1cmVzCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHcubGluZSgpCi0gICAg
ICAgIHR3LnNlcCgnLScsICdmaXh0dXJlcyB1c2VkIGJ5IHswfScuZm9ybWF0KGl0ZW0ubmFtZSkp
Ci0gICAgICAgIHR3LnNlcCgnLScsICcoezB9KScuZm9ybWF0KGdldF9iZXN0X3JlbHBhdGgoaXRl
bS5mdW5jdGlvbikpKQotICAgICAgICAjIGRpY3Qga2V5IG5vdCB1c2VkIGluIGxvb3AgYnV0IG5l
ZWRlZCBmb3Igc29ydGluZwotICAgICAgICBmb3IgXywgZml4dHVyZWRlZnMgaW4gc29ydGVkKGlu
Zm8ubmFtZTJmaXh0dXJlZGVmcy5pdGVtcygpKToKLSAgICAgICAgICAgIGFzc2VydCBmaXh0dXJl
ZGVmcyBpcyBub3QgTm9uZQotICAgICAgICAgICAgaWYgbm90IGZpeHR1cmVkZWZzOgotICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICAjIGxhc3QgaXRlbSBpcyBleHBlY3RlZCB0
byBiZSB0aGUgb25lIHVzZWQgYnkgdGhlIHRlc3QgaXRlbQotICAgICAgICAgICAgd3JpdGVfZml4
dHVyZShmaXh0dXJlZGVmc1stMV0pCi0KLSAgICBmb3Igc2Vzc2lvbl9pdGVtIGluIHNlc3Npb24u
aXRlbXM6Ci0gICAgICAgIHdyaXRlX2l0ZW0oc2Vzc2lvbl9pdGVtKQotCi0KLWRlZiBzaG93Zml4
dHVyZXMoY29uZmlnKToKLSAgICBmcm9tIF9weXRlc3QubWFpbiBpbXBvcnQgd3JhcF9zZXNzaW9u
Ci0gICAgcmV0dXJuIHdyYXBfc2Vzc2lvbihjb25maWcsIF9zaG93Zml4dHVyZXNfbWFpbikKLQot
Ci1kZWYgX3Nob3dmaXh0dXJlc19tYWluKGNvbmZpZywgc2Vzc2lvbik6Ci0gICAgaW1wb3J0IF9w
eXRlc3QuY29uZmlnCi0gICAgc2Vzc2lvbi5wZXJmb3JtX2NvbGxlY3QoKQotICAgIGN1cmRpciA9
IHB5LnBhdGgubG9jYWwoKQotICAgIHR3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFs
X3dyaXRlcihjb25maWcpCi0gICAgdmVyYm9zZSA9IGNvbmZpZy5nZXR2YWx1ZSgidmVyYm9zZSIp
Ci0KLSAgICBmbSA9IHNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyCi0KLSAgICBhdmFpbGFibGUgPSBb
XQotICAgIHNlZW4gPSBzZXQoKQotCi0gICAgZm9yIGFyZ25hbWUsIGZpeHR1cmVkZWZzIGluIGZt
Ll9hcmcyZml4dHVyZWRlZnMuaXRlbXMoKToKLSAgICAgICAgYXNzZXJ0IGZpeHR1cmVkZWZzIGlz
IG5vdCBOb25lCi0gICAgICAgIGlmIG5vdCBmaXh0dXJlZGVmczoKLSAgICAgICAgICAgIGNvbnRp
bnVlCi0gICAgICAgIGZvciBmaXh0dXJlZGVmIGluIGZpeHR1cmVkZWZzOgotICAgICAgICAgICAg
bG9jID0gZ2V0bG9jYXRpb24oZml4dHVyZWRlZi5mdW5jLCBjdXJkaXIpCi0gICAgICAgICAgICBp
ZiAoZml4dHVyZWRlZi5hcmduYW1lLCBsb2MpIGluIHNlZW46Ci0gICAgICAgICAgICAgICAgY29u
dGludWUKLSAgICAgICAgICAgIHNlZW4uYWRkKChmaXh0dXJlZGVmLmFyZ25hbWUsIGxvYykpCi0g
ICAgICAgICAgICBhdmFpbGFibGUuYXBwZW5kKChsZW4oZml4dHVyZWRlZi5iYXNlaWQpLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4dHVyZWRlZi5mdW5jLl9fbW9kdWxlX18sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjdXJkaXIuYmVzdHJlbHBhdGgobG9jKSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpeHR1cmVkZWYuYXJnbmFtZSwgZml4dHVyZWRl
ZikpCi0KLSAgICBhdmFpbGFibGUuc29ydCgpCi0gICAgY3VycmVudG1vZHVsZSA9IE5vbmUKLSAg
ICBmb3IgYmFzZWlkLCBtb2R1bGUsIGJlc3RyZWwsIGFyZ25hbWUsIGZpeHR1cmVkZWYgaW4gYXZh
aWxhYmxlOgotICAgICAgICBpZiBjdXJyZW50bW9kdWxlICE9IG1vZHVsZToKLSAgICAgICAgICAg
IGlmIG5vdCBtb2R1bGUuc3RhcnRzd2l0aCgiX3B5dGVzdC4iKToKLSAgICAgICAgICAgICAgICB0
dy5saW5lKCkKLSAgICAgICAgICAgICAgICB0dy5zZXAoIi0iLCAiZml4dHVyZXMgZGVmaW5lZCBm
cm9tICVzIiAlIChtb2R1bGUsKSkKLSAgICAgICAgICAgICAgICBjdXJyZW50bW9kdWxlID0gbW9k
dWxlCi0gICAgICAgIGlmIHZlcmJvc2UgPD0gMCBhbmQgYXJnbmFtZVswXSA9PSAiXyI6Ci0gICAg
ICAgICAgICBjb250aW51ZQotICAgICAgICBpZiB2ZXJib3NlID4gMDoKLSAgICAgICAgICAgIGZ1
bmNhcmdzcGVjID0gIiVzIC0tICVzIiAlIChhcmduYW1lLCBiZXN0cmVsLCkKLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIGZ1bmNhcmdzcGVjID0gYXJnbmFtZQotICAgICAgICB0dy5saW5lKGZ1
bmNhcmdzcGVjLCBncmVlbj1UcnVlKQotICAgICAgICBsb2MgPSBnZXRsb2NhdGlvbihmaXh0dXJl
ZGVmLmZ1bmMsIGN1cmRpcikKLSAgICAgICAgZG9jID0gZml4dHVyZWRlZi5mdW5jLl9fZG9jX18g
b3IgIiIKLSAgICAgICAgaWYgZG9jOgotICAgICAgICAgICAgd3JpdGVfZG9jc3RyaW5nKHR3LCBk
b2MpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0dy5saW5lKCIgICAgJXM6IG5vIGRvY3N0
cmluZyBhdmFpbGFibGUiICUgKGxvYywpLAotICAgICAgICAgICAgICAgICAgICByZWQ9VHJ1ZSkK
LQotCi1kZWYgd3JpdGVfZG9jc3RyaW5nKHR3LCBkb2MpOgotICAgIElOREVOVCA9ICIgICAgIgot
ICAgIGRvYyA9IGRvYy5yc3RyaXAoKQotICAgIGlmICJcbiIgaW4gZG9jOgotICAgICAgICBmaXJz
dGxpbmUsIHJlc3QgPSBkb2Muc3BsaXQoIlxuIiwgMSkKLSAgICBlbHNlOgotICAgICAgICBmaXJz
dGxpbmUsIHJlc3QgPSBkb2MsICIiCi0KLSAgICBpZiBmaXJzdGxpbmUuc3RyaXAoKToKLSAgICAg
ICAgdHcubGluZShJTkRFTlQgKyBmaXJzdGxpbmUuc3RyaXAoKSkKLQotICAgIGlmIHJlc3Q6Ci0g
ICAgICAgIGZvciBsaW5lIGluIGRlZGVudChyZXN0KS5zcGxpdCgiXG4iKToKLSAgICAgICAgICAg
IHR3LndyaXRlKElOREVOVCArIGxpbmUgKyAiXG4iKQotCi0KLWNsYXNzIEZ1bmN0aW9uKEZ1bmN0
aW9uTWl4aW4sIG1haW4uSXRlbSwgZml4dHVyZXMuRnVuY2FyZ25hbWVzQ29tcGF0QXR0cik6Ci0g
ICAgIiIiIGEgRnVuY3Rpb24gSXRlbSBpcyByZXNwb25zaWJsZSBmb3Igc2V0dGluZyB1cCBhbmQg
ZXhlY3V0aW5nIGEKLSAgICBQeXRob24gdGVzdCBmdW5jdGlvbi4KLSAgICAiIiIKLSAgICBfZ2Vu
aWQgPSBOb25lCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgcGFyZW50LCBhcmdzPU5v
bmUsIGNvbmZpZz1Ob25lLAotICAgICAgICAgICAgICAgICBjYWxsc3BlYz1Ob25lLCBjYWxsb2Jq
PU5PVFNFVCwga2V5d29yZHM9Tm9uZSwgc2Vzc2lvbj1Ob25lLAotICAgICAgICAgICAgICAgICBm
aXh0dXJlaW5mbz1Ob25lLCBvcmlnaW5hbG5hbWU9Tm9uZSk6Ci0gICAgICAgIHN1cGVyKEZ1bmN0
aW9uLCBzZWxmKS5fX2luaXRfXyhuYW1lLCBwYXJlbnQsIGNvbmZpZz1jb25maWcsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlc3Npb24pCi0gICAgICAg
IHNlbGYuX2FyZ3MgPSBhcmdzCi0gICAgICAgIGlmIGNhbGxvYmogaXMgbm90IE5PVFNFVDoKLSAg
ICAgICAgICAgIHNlbGYub2JqID0gY2FsbG9iagotCi0gICAgICAgIHNlbGYua2V5d29yZHMudXBk
YXRlKHNlbGYub2JqLl9fZGljdF9fKQotICAgICAgICBpZiBjYWxsc3BlYzoKLSAgICAgICAgICAg
IHNlbGYuY2FsbHNwZWMgPSBjYWxsc3BlYwotICAgICAgICAgICAgIyB0aGlzIGlzIHRvdGFsIGhv
c3RpbGUgYW5kIGEgbWVzcwotICAgICAgICAgICAgIyBrZXl3b3JkcyBhcmUgYnJva2VuIGJ5IGRl
c2lnbiBieSBub3cKLSAgICAgICAgICAgICMgdGhpcyB3aWxsIGJlIHJlZGVlbWVkIGxhdGVyCi0g
ICAgICAgICAgICBmb3IgbWFyayBpbiBjYWxsc3BlYy5tYXJrczoKLSAgICAgICAgICAgICAgICAj
IGZlZWwgZnJlZSB0byBjcnksIHRoaXMgd2FzIGJyb2tlbiBmb3IgeWVhcnMgYmVmb3JlCi0gICAg
ICAgICAgICAgICAgIyBhbmQga2V5d29yZHMgY2FudCBmaXggaXQgcGVyIGRlc2lnbgotICAgICAg
ICAgICAgICAgIHNlbGYua2V5d29yZHNbbWFyay5uYW1lXSA9IG1hcmsKLSAgICAgICAgaWYga2V5
d29yZHM6Ci0gICAgICAgICAgICBzZWxmLmtleXdvcmRzLnVwZGF0ZShrZXl3b3JkcykKLQotICAg
ICAgICBpZiBmaXh0dXJlaW5mbyBpcyBOb25lOgotICAgICAgICAgICAgZml4dHVyZWluZm8gPSBz
ZWxmLnNlc3Npb24uX2ZpeHR1cmVtYW5hZ2VyLmdldGZpeHR1cmVpbmZvKAotICAgICAgICAgICAg
ICAgIHNlbGYucGFyZW50LCBzZWxmLm9iaiwgc2VsZi5jbHMsCi0gICAgICAgICAgICAgICAgZnVu
Y2FyZ3M9bm90IHNlbGYuX2lzeWllbGRlZGZ1bmN0aW9uKCkpCi0gICAgICAgIHNlbGYuX2ZpeHR1
cmVpbmZvID0gZml4dHVyZWluZm8KLSAgICAgICAgc2VsZi5maXh0dXJlbmFtZXMgPSBmaXh0dXJl
aW5mby5uYW1lc19jbG9zdXJlCi0gICAgICAgIHNlbGYuX2luaXRyZXF1ZXN0KCkKLQotICAgICAg
ICAjOiBvcmlnaW5hbCBmdW5jdGlvbiBuYW1lLCB3aXRob3V0IGFueSBkZWNvcmF0aW9ucyAoZm9y
IGV4YW1wbGUKLSAgICAgICAgIzogcGFyYW1ldHJpemF0aW9uIGFkZHMgYSBgYCJbLi4uXSJgYCBz
dWZmaXggdG8gZnVuY3Rpb24gbmFtZXMpLgotICAgICAgICAjOgotICAgICAgICAjOiAuLiB2ZXJz
aW9uYWRkZWQ6OiAzLjAKLSAgICAgICAgc2VsZi5vcmlnaW5hbG5hbWUgPSBvcmlnaW5hbG5hbWUK
LQotICAgIGRlZiBfaW5pdHJlcXVlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYuZnVuY2FyZ3MgPSB7
fQotICAgICAgICBpZiBzZWxmLl9pc3lpZWxkZWRmdW5jdGlvbigpOgotICAgICAgICAgICAgYXNz
ZXJ0IG5vdCBoYXNhdHRyKHNlbGYsICJjYWxsc3BlYyIpLCAoCi0gICAgICAgICAgICAgICAgInlp
ZWxkZWQgZnVuY3Rpb25zIChkZXByZWNhdGVkKSBjYW5ub3QgaGF2ZSBmdW5jYXJncyIpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICJjYWxsc3BlYyIpOgotICAg
ICAgICAgICAgICAgIGNhbGxzcGVjID0gc2VsZi5jYWxsc3BlYwotICAgICAgICAgICAgICAgIGFz
c2VydCBub3QgY2FsbHNwZWMuZnVuY2FyZ3MKLSAgICAgICAgICAgICAgICBzZWxmLl9nZW5pZCA9
IGNhbGxzcGVjLmlkCi0gICAgICAgICAgICAgICAgaWYgaGFzYXR0cihjYWxsc3BlYywgInBhcmFt
Iik6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYucGFyYW0gPSBjYWxsc3BlYy5wYXJhbQotICAg
ICAgICBzZWxmLl9yZXF1ZXN0ID0gZml4dHVyZXMuRml4dHVyZVJlcXVlc3Qoc2VsZikKLQotICAg
IEBwcm9wZXJ0eQotICAgIGRlZiBmdW5jdGlvbihzZWxmKToKLSAgICAgICAgInVuZGVybHlpbmcg
cHl0aG9uICdmdW5jdGlvbicgb2JqZWN0IgotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLm9i
aiwgJ2ltX2Z1bmMnLCBzZWxmLm9iaikKLQotICAgIGRlZiBfZ2V0b2JqKHNlbGYpOgotICAgICAg
ICBuYW1lID0gc2VsZi5uYW1lCi0gICAgICAgIGkgPSBuYW1lLmZpbmQoIlsiKSAgIyBwYXJhbWV0
cml6YXRpb24KLSAgICAgICAgaWYgaSAhPSAtMToKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lWzpp
XQotICAgICAgICByZXR1cm4gZ2V0YXR0cihzZWxmLnBhcmVudC5vYmosIG5hbWUpCi0KLSAgICBA
cHJvcGVydHkKLSAgICBkZWYgX3B5ZnVuY2l0ZW0oc2VsZik6Ci0gICAgICAgICIoY29tcGF0b25s
eSkgZm9yIGNvZGUgZXhwZWN0aW5nIHB5dGVzdC0yLjIgc3R5bGUgcmVxdWVzdCBvYmplY3RzIgot
ICAgICAgICByZXR1cm4gc2VsZgotCi0gICAgZGVmIF9pc3lpZWxkZWRmdW5jdGlvbihzZWxmKToK
LSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZiwgIl9hcmdzIiwgTm9uZSkgaXMgbm90IE5vbmUK
LQotICAgIGRlZiBydW50ZXN0KHNlbGYpOgotICAgICAgICAiIiIgZXhlY3V0ZSB0aGUgdW5kZXJs
eWluZyB0ZXN0IGZ1bmN0aW9uLiAiIiIKLSAgICAgICAgc2VsZi5paG9vay5weXRlc3RfcHlmdW5j
X2NhbGwocHlmdW5jaXRlbT1zZWxmKQotCi0gICAgZGVmIHNldHVwKHNlbGYpOgotICAgICAgICBz
dXBlcihGdW5jdGlvbiwgc2VsZikuc2V0dXAoKQotICAgICAgICBmaXh0dXJlcy5maWxsZml4dHVy
ZXMoc2VsZikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcHl0aG9uX2FwaS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvcHl0aG9uX2FwaS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggODE5NjAyOTViMzgxYmQwZTk5MjNmN2ZiM2QwMWFlMTExMjE0MmY5ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3B5dGhvbl9hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MTkgKzAsMCBAQAotaW1wb3J0
IG1hdGgKLWltcG9ydCBzeXMKLQotaW1wb3J0IHB5Ci1mcm9tIHNpeC5tb3ZlcyBpbXBvcnQgemlw
Ci0KLWZyb20gX3B5dGVzdC5jb21wYXQgaW1wb3J0IGlzY2xhc3MKLWZyb20gX3B5dGVzdC5vdXRj
b21lcyBpbXBvcnQgZmFpbAotaW1wb3J0IF9weXRlc3QuX2NvZGUKLQotCi1kZWYgX2NtcF9yYWlz
ZXNfdHlwZV9lcnJvcihzZWxmLCBvdGhlcik6Ci0gICAgIiIiX19jbXBfXyBpbXBsZW1lbnRhdGlv
biB3aGljaCByYWlzZXMgVHlwZUVycm9yLiBVc2VkCi0gICAgYnkgQXBwcm94IGJhc2UgY2xhc3Nl
cyB0byBpbXBsZW1lbnQgb25seSA9PSBhbmQgIT0gYW5kIHJhaXNlIGEKLSAgICBUeXBlRXJyb3Ig
Zm9yIG90aGVyIGNvbXBhcmlzb25zLgotCi0gICAgTmVlZGVkIGluIFB5dGhvbiAyIG9ubHksIFB5
dGhvbiAzIGFsbCBpdCB0YWtlcyBpcyBub3QgaW1wbGVtZW50aW5nIHRoZQotICAgIG90aGVyIG9w
ZXJhdG9ycyBhdCBhbGwuCi0gICAgIiIiCi0gICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0g
ICAgcmFpc2UgVHlwZUVycm9yKCdDb21wYXJpc29uIG9wZXJhdG9ycyBvdGhlciB0aGFuID09IGFu
ZCAhPSBub3Qgc3VwcG9ydGVkIGJ5IGFwcHJveCBvYmplY3RzJykKLQotCi0jIGJ1aWx0aW4gcHl0
ZXN0LmFwcHJveCBoZWxwZXIKLQotCi1jbGFzcyBBcHByb3hCYXNlKG9iamVjdCk6Ci0gICAgIiIi
Ci0gICAgUHJvdmlkZSBzaGFyZWQgdXRpbGl0aWVzIGZvciBtYWtpbmcgYXBwcm94aW1hdGUgY29t
cGFyaXNvbnMgYmV0d2VlbiBudW1iZXJzCi0gICAgb3Igc2VxdWVuY2VzIG9mIG51bWJlcnMuCi0g
ICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgZXhwZWN0ZWQsIHJlbD1Ob25lLCBhYnM9
Tm9uZSwgbmFuX29rPUZhbHNlKToKLSAgICAgICAgc2VsZi5leHBlY3RlZCA9IGV4cGVjdGVkCi0g
ICAgICAgIHNlbGYuYWJzID0gYWJzCi0gICAgICAgIHNlbGYucmVsID0gcmVsCi0gICAgICAgIHNl
bGYubmFuX29rID0gbmFuX29rCi0KLSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKToK
LSAgICAgICAgcmV0dXJuIGFsbCgKLSAgICAgICAgICAgIGEgPT0gc2VsZi5fYXBwcm94X3NjYWxh
cih4KQotICAgICAgICAgICAgZm9yIGEsIHggaW4gc2VsZi5feWllbGRfY29tcGFyaXNvbnMoYWN0
dWFsKSkKLQotICAgIF9faGFzaF9fID0gTm9uZQotCi0gICAgZGVmIF9fbmVfXyhzZWxmLCBhY3R1
YWwpOgotICAgICAgICByZXR1cm4gbm90IChhY3R1YWwgPT0gc2VsZikKLQotICAgIGlmIHN5cy52
ZXJzaW9uX2luZm9bMF0gPT0gMjoKLSAgICAgICAgX19jbXBfXyA9IF9jbXBfcmFpc2VzX3R5cGVf
ZXJyb3IKLQotICAgIGRlZiBfYXBwcm94X3NjYWxhcihzZWxmLCB4KToKLSAgICAgICAgcmV0dXJu
IEFwcHJveFNjYWxhcih4LCByZWw9c2VsZi5yZWwsIGFicz1zZWxmLmFicywgbmFuX29rPXNlbGYu
bmFuX29rKQotCi0gICAgZGVmIF95aWVsZF9jb21wYXJpc29ucyhzZWxmLCBhY3R1YWwpOgotICAg
ICAgICAiIiIKLSAgICAgICAgWWllbGQgYWxsIHRoZSBwYWlycyBvZiBudW1iZXJzIHRvIGJlIGNv
bXBhcmVkLiAgVGhpcyBpcyB1c2VkIHRvCi0gICAgICAgIGltcGxlbWVudCB0aGUgYF9fZXFfX2Ag
bWV0aG9kLgotICAgICAgICAiIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgot
Ci0KLWNsYXNzIEFwcHJveE51bXB5KEFwcHJveEJhc2UpOgotICAgICIiIgotICAgIFBlcmZvcm0g
YXBwcm94aW1hdGUgY29tcGFyaXNvbnMgZm9yIG51bXB5IGFycmF5cy4KLSAgICAiIiIKLQotICAg
ICMgVGVsbCBudW1weSB0byB1c2Ugb3VyIGBfX2VxX19gIG9wZXJhdG9yIGluc3RlYWQgb2YgaXRz
LgotICAgIF9fYXJyYXlfcHJpb3JpdHlfXyA9IDEwMAotCi0gICAgZGVmIF9fcmVwcl9fKHNlbGYp
OgotICAgICAgICAjIEl0IG1pZ2h0IGJlIG5pY2UgdG8gcmV3cml0ZSB0aGlzIGZ1bmN0aW9uIHRv
IGFjY291bnQgZm9yIHRoZQotICAgICAgICAjIHNoYXBlIG9mIHRoZSBhcnJheS4uLgotICAgICAg
ICByZXR1cm4gImFwcHJveCh7MCFyfSkiLmZvcm1hdChsaXN0KAotICAgICAgICAgICAgc2VsZi5f
YXBwcm94X3NjYWxhcih4KSBmb3IgeCBpbiBzZWxmLmV4cGVjdGVkKSkKLQotICAgIGlmIHN5cy52
ZXJzaW9uX2luZm9bMF0gPT0gMjoKLSAgICAgICAgX19jbXBfXyA9IF9jbXBfcmFpc2VzX3R5cGVf
ZXJyb3IKLQotICAgIGRlZiBfX2VxX18oc2VsZiwgYWN0dWFsKToKLSAgICAgICAgaW1wb3J0IG51
bXB5IGFzIG5wCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYWN0dWFsID0gbnAuYXNhcnJh
eShhY3R1YWwpCi0gICAgICAgIGV4Y2VwdDogICMgbm9xYQotICAgICAgICAgICAgcmFpc2UgVHlw
ZUVycm9yKCJjYW5ub3QgY29tcGFyZSAnezB9JyB0byBudW1weS5uZGFycmF5Ii5mb3JtYXQoYWN0
dWFsKSkKLQotICAgICAgICBpZiBhY3R1YWwuc2hhcGUgIT0gc2VsZi5leHBlY3RlZC5zaGFwZToK
LSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIHJldHVybiBBcHByb3hCYXNlLl9f
ZXFfXyhzZWxmLCBhY3R1YWwpCi0KLSAgICBkZWYgX3lpZWxkX2NvbXBhcmlzb25zKHNlbGYsIGFj
dHVhbCk6Ci0gICAgICAgIGltcG9ydCBudW1weSBhcyBucAotCi0gICAgICAgICMgV2UgY2FuIGJl
IHN1cmUgdGhhdCBgYWN0dWFsYCBpcyBhIG51bXB5IGFycmF5LCBiZWNhdXNlIGl0J3MKLSAgICAg
ICAgIyBjYXN0ZWQgaW4gYF9fZXFfX2AgYmVmb3JlIGJlaW5nIHBhc3NlZCB0byBgQXBwcm94QmFz
ZS5fX2VxX19gLAotICAgICAgICAjIHdoaWNoIGlzIHRoZSBvbmx5IG1ldGhvZCB0aGF0IGNhbGxz
IHRoaXMgb25lLgotICAgICAgICBmb3IgaSBpbiBucC5uZGluZGV4KHNlbGYuZXhwZWN0ZWQuc2hh
cGUpOgotICAgICAgICAgICAgeWllbGQgYWN0dWFsW2ldLCBzZWxmLmV4cGVjdGVkW2ldCi0KLQot
Y2xhc3MgQXBwcm94TWFwcGluZyhBcHByb3hCYXNlKToKLSAgICAiIiIKLSAgICBQZXJmb3JtIGFw
cHJveGltYXRlIGNvbXBhcmlzb25zIGZvciBtYXBwaW5ncyB3aGVyZSB0aGUgdmFsdWVzIGFyZSBu
dW1iZXJzCi0gICAgKHRoZSBrZXlzIGNhbiBiZSBhbnl0aGluZykuCi0gICAgIiIiCi0KLSAgICBk
ZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAiYXBwcm94KHswIXJ9KSIuZm9ybWF0
KGRpY3QoCi0gICAgICAgICAgICAoaywgc2VsZi5fYXBwcm94X3NjYWxhcih2KSkKLSAgICAgICAg
ICAgIGZvciBrLCB2IGluIHNlbGYuZXhwZWN0ZWQuaXRlbXMoKSkpCi0KLSAgICBkZWYgX19lcV9f
KHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgIGlmIHNldChhY3R1YWwua2V5cygpKSAhPSBzZXQoc2Vs
Zi5leHBlY3RlZC5rZXlzKCkpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICAgICAg
cmV0dXJuIEFwcHJveEJhc2UuX19lcV9fKHNlbGYsIGFjdHVhbCkKLQotICAgIGRlZiBfeWllbGRf
Y29tcGFyaXNvbnMoc2VsZiwgYWN0dWFsKToKLSAgICAgICAgZm9yIGsgaW4gc2VsZi5leHBlY3Rl
ZC5rZXlzKCk6Ci0gICAgICAgICAgICB5aWVsZCBhY3R1YWxba10sIHNlbGYuZXhwZWN0ZWRba10K
LQotCi1jbGFzcyBBcHByb3hTZXF1ZW5jZShBcHByb3hCYXNlKToKLSAgICAiIiIKLSAgICBQZXJm
b3JtIGFwcHJveGltYXRlIGNvbXBhcmlzb25zIGZvciBzZXF1ZW5jZXMgb2YgbnVtYmVycy4KLSAg
ICAiIiIKLQotICAgICMgVGVsbCBudW1weSB0byB1c2Ugb3VyIGBfX2VxX19gIG9wZXJhdG9yIGlu
c3RlYWQgb2YgaXRzLgotICAgIF9fYXJyYXlfcHJpb3JpdHlfXyA9IDEwMAotCi0gICAgZGVmIF9f
cmVwcl9fKHNlbGYpOgotICAgICAgICBzZXFfdHlwZSA9IHR5cGUoc2VsZi5leHBlY3RlZCkKLSAg
ICAgICAgaWYgc2VxX3R5cGUgbm90IGluICh0dXBsZSwgbGlzdCwgc2V0KToKLSAgICAgICAgICAg
IHNlcV90eXBlID0gbGlzdAotICAgICAgICByZXR1cm4gImFwcHJveCh7MCFyfSkiLmZvcm1hdChz
ZXFfdHlwZSgKLSAgICAgICAgICAgIHNlbGYuX2FwcHJveF9zY2FsYXIoeCkgZm9yIHggaW4gc2Vs
Zi5leHBlY3RlZCkpCi0KLSAgICBkZWYgX19lcV9fKHNlbGYsIGFjdHVhbCk6Ci0gICAgICAgIGlm
IGxlbihhY3R1YWwpICE9IGxlbihzZWxmLmV4cGVjdGVkKToKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotICAgICAgICByZXR1cm4gQXBwcm94QmFzZS5fX2VxX18oc2VsZiwgYWN0dWFsKQotCi0g
ICAgZGVmIF95aWVsZF9jb21wYXJpc29ucyhzZWxmLCBhY3R1YWwpOgotICAgICAgICByZXR1cm4g
emlwKGFjdHVhbCwgc2VsZi5leHBlY3RlZCkKLQotCi1jbGFzcyBBcHByb3hTY2FsYXIoQXBwcm94
QmFzZSk6Ci0gICAgIiIiCi0gICAgUGVyZm9ybSBhcHByb3hpbWF0ZSBjb21wYXJpc29ucyBmb3Ig
c2luZ2xlIG51bWJlcnMgb25seS4KLSAgICAiIiIKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToK
LSAgICAgICAgIiIiCi0gICAgICAgIFJldHVybiBhIHN0cmluZyBjb21tdW5pY2F0aW5nIGJvdGgg
dGhlIGV4cGVjdGVkIHZhbHVlIGFuZCB0aGUgdG9sZXJhbmNlCi0gICAgICAgIGZvciB0aGUgY29t
cGFyaXNvbiBiZWluZyBtYWRlLCBlLmcuICcxLjAgKy0gMWUtNicuICBVc2UgdGhlIHVuaWNvZGUK
LSAgICAgICAgcGx1cy9taW51cyBzeW1ib2wgaWYgdGhpcyBpcyBweXRob24zIChpdCdzIHRvbyBo
YXJkIHRvIGdldCByaWdodCBmb3IKLSAgICAgICAgcHl0aG9uMikuCi0gICAgICAgICIiIgotICAg
ICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZXhwZWN0ZWQsIGNvbXBsZXgpOgotICAgICAgICAgICAg
cmV0dXJuIHN0cihzZWxmLmV4cGVjdGVkKQotCi0gICAgICAgICMgSW5maW5pdGllcyBhcmVuJ3Qg
Y29tcGFyZWQgdXNpbmcgdG9sZXJhbmNlcywgc28gZG9uJ3Qgc2hvdyBhCi0gICAgICAgICMgdG9s
ZXJhbmNlLgotICAgICAgICBpZiBtYXRoLmlzaW5mKHNlbGYuZXhwZWN0ZWQpOgotICAgICAgICAg
ICAgcmV0dXJuIHN0cihzZWxmLmV4cGVjdGVkKQotCi0gICAgICAgICMgSWYgYSBzZW5zaWJsZSB0
b2xlcmFuY2UgY2FuJ3QgYmUgY2FsY3VsYXRlZCwgc2VsZi50b2xlcmFuY2Ugd2lsbAotICAgICAg
ICAjIHJhaXNlIGEgVmFsdWVFcnJvci4gIEluIHRoaXMgY2FzZSwgZGlzcGxheSAnPz8/Jy4KLSAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgdmV0dGVkX3RvbGVyYW5jZSA9ICd7Oi4xZX0nLmZvcm1h
dChzZWxmLnRvbGVyYW5jZSkKLSAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6Ci0gICAgICAgICAg
ICB2ZXR0ZWRfdG9sZXJhbmNlID0gJz8/PycKLQotICAgICAgICBpZiBzeXMudmVyc2lvbl9pbmZv
WzBdID09IDI6Ci0gICAgICAgICAgICByZXR1cm4gJ3swfSArLSB7MX0nLmZvcm1hdChzZWxmLmV4
cGVjdGVkLCB2ZXR0ZWRfdG9sZXJhbmNlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0
dXJuIHUnezB9IFx1MDBiMSB7MX0nLmZvcm1hdChzZWxmLmV4cGVjdGVkLCB2ZXR0ZWRfdG9sZXJh
bmNlKQotCi0gICAgZGVmIF9fZXFfXyhzZWxmLCBhY3R1YWwpOgotICAgICAgICAiIiIKLSAgICAg
ICAgUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIHZhbHVlIGlzIGVxdWFsIHRvIHRoZSBleHBlY3Rl
ZCB2YWx1ZSB3aXRoaW4KLSAgICAgICAgdGhlIHByZS1zcGVjaWZpZWQgdG9sZXJhbmNlLgotICAg
ICAgICAiIiIKLQotICAgICAgICAjIFNob3J0LWNpcmN1aXQgZXhhY3QgZXF1YWxpdHkuCi0gICAg
ICAgIGlmIGFjdHVhbCA9PSBzZWxmLmV4cGVjdGVkOgotICAgICAgICAgICAgcmV0dXJuIFRydWUK
LQotICAgICAgICAjIEFsbG93IHRoZSB1c2VyIHRvIGNvbnRyb2wgd2hldGhlciBOYU5zIGFyZSBj
b25zaWRlcmVkIGVxdWFsIHRvIGVhY2gKLSAgICAgICAgIyBvdGhlciBvciBub3QuICBUaGUgYWJz
KCkgY2FsbHMgYXJlIGZvciBjb21wYXRpYmlsaXR5IHdpdGggY29tcGxleAotICAgICAgICAjIG51
bWJlcnMuCi0gICAgICAgIGlmIG1hdGguaXNuYW4oYWJzKHNlbGYuZXhwZWN0ZWQpKToKLSAgICAg
ICAgICAgIHJldHVybiBzZWxmLm5hbl9vayBhbmQgbWF0aC5pc25hbihhYnMoYWN0dWFsKSkKLQot
ICAgICAgICAjIEluZmluaXR5IHNob3VsZG4ndCBiZSBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIGFu
eXRoaW5nIGJ1dCBpdHNlbGYsIGJ1dAotICAgICAgICAjIGlmIHRoZXJlJ3MgYSByZWxhdGl2ZSB0
b2xlcmFuY2UsIGl0IHdpbGwgYmUgaW5maW5pdGUgYW5kIGluZmluaXR5Ci0gICAgICAgICMgd2ls
bCBzZWVtIGFwcHJveGltYXRlbHkgZXF1YWwgdG8gZXZlcnl0aGluZy4gIFRoZSBlcXVhbC10by1p
dHNlbGYKLSAgICAgICAgIyBjYXNlIHdvdWxkIGhhdmUgYmVlbiBzaG9ydCBjaXJjdWl0ZWQgYWJv
dmUsIHNvIGhlcmUgd2UgY2FuIGp1c3QKLSAgICAgICAgIyByZXR1cm4gZmFsc2UgaWYgdGhlIGV4
cGVjdGVkIHZhbHVlIGlzIGluZmluaXRlLiAgVGhlIGFicygpIGNhbGwgaXMKLSAgICAgICAgIyBm
b3IgY29tcGF0aWJpbGl0eSB3aXRoIGNvbXBsZXggbnVtYmVycy4KLSAgICAgICAgaWYgbWF0aC5p
c2luZihhYnMoc2VsZi5leHBlY3RlZCkpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAg
ICAgICAgIyBSZXR1cm4gdHJ1ZSBpZiB0aGUgdHdvIG51bWJlcnMgYXJlIHdpdGhpbiB0aGUgdG9s
ZXJhbmNlLgotICAgICAgICByZXR1cm4gYWJzKHNlbGYuZXhwZWN0ZWQgLSBhY3R1YWwpIDw9IHNl
bGYudG9sZXJhbmNlCi0KLSAgICBfX2hhc2hfXyA9IE5vbmUKLQotICAgIEBwcm9wZXJ0eQotICAg
IGRlZiB0b2xlcmFuY2Uoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZXR1cm4gdGhlIHRv
bGVyYW5jZSBmb3IgdGhlIGNvbXBhcmlzb24uICBUaGlzIGNvdWxkIGJlIGVpdGhlciBhbgotICAg
ICAgICBhYnNvbHV0ZSB0b2xlcmFuY2Ugb3IgYSByZWxhdGl2ZSB0b2xlcmFuY2UsIGRlcGVuZGlu
ZyBvbiB3aGF0IHRoZSB1c2VyCi0gICAgICAgIHNwZWNpZmllZCBvciB3aGljaCB3b3VsZCBiZSBs
YXJnZXIuCi0gICAgICAgICIiIgotICAgICAgICBkZWYgc2V0X2RlZmF1bHQoeCwgZGVmYXVsdCk6
Ci0gICAgICAgICAgICByZXR1cm4geCBpZiB4IGlzIG5vdCBOb25lIGVsc2UgZGVmYXVsdAotCi0g
ICAgICAgICMgRmlndXJlIG91dCB3aGF0IHRoZSBhYnNvbHV0ZSB0b2xlcmFuY2Ugc2hvdWxkIGJl
LiAgYGBzZWxmLmFic2BgIGlzCi0gICAgICAgICMgZWl0aGVyIE5vbmUgb3IgYSB2YWx1ZSBzcGVj
aWZpZWQgYnkgdGhlIHVzZXIuCi0gICAgICAgIGFic29sdXRlX3RvbGVyYW5jZSA9IHNldF9kZWZh
dWx0KHNlbGYuYWJzLCAxZS0xMikKLQotICAgICAgICBpZiBhYnNvbHV0ZV90b2xlcmFuY2UgPCAw
OgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYWJzb2x1dGUgdG9sZXJhbmNlIGNhbid0
IGJlIG5lZ2F0aXZlOiB7fSIuZm9ybWF0KGFic29sdXRlX3RvbGVyYW5jZSkpCi0gICAgICAgIGlm
IG1hdGguaXNuYW4oYWJzb2x1dGVfdG9sZXJhbmNlKToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVl
RXJyb3IoImFic29sdXRlIHRvbGVyYW5jZSBjYW4ndCBiZSBOYU4uIikKLQotICAgICAgICAjIElm
IHRoZSB1c2VyIHNwZWNpZmllZCBhbiBhYnNvbHV0ZSB0b2xlcmFuY2UgYnV0IG5vdCBhIHJlbGF0
aXZlIG9uZSwKLSAgICAgICAgIyBqdXN0IHJldHVybiB0aGUgYWJzb2x1dGUgdG9sZXJhbmNlLgot
ICAgICAgICBpZiBzZWxmLnJlbCBpcyBOb25lOgotICAgICAgICAgICAgaWYgc2VsZi5hYnMgaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGFic29sdXRlX3RvbGVyYW5jZQotCi0g
ICAgICAgICMgRmlndXJlIG91dCB3aGF0IHRoZSByZWxhdGl2ZSB0b2xlcmFuY2Ugc2hvdWxkIGJl
LiAgYGBzZWxmLnJlbGBgIGlzCi0gICAgICAgICMgZWl0aGVyIE5vbmUgb3IgYSB2YWx1ZSBzcGVj
aWZpZWQgYnkgdGhlIHVzZXIuICBUaGlzIGlzIGRvbmUgYWZ0ZXIKLSAgICAgICAgIyB3ZSd2ZSBt
YWRlIHN1cmUgdGhlIHVzZXIgZGlkbid0IGFzayBmb3IgYW4gYWJzb2x1dGUgdG9sZXJhbmNlIG9u
bHksCi0gICAgICAgICMgYmVjYXVzZSB3ZSBkb24ndCB3YW50IHRvIHJhaXNlIGVycm9ycyBhYm91
dCB0aGUgcmVsYXRpdmUgdG9sZXJhbmNlIGlmCi0gICAgICAgICMgd2UgYXJlbid0IGV2ZW4gZ29p
bmcgdG8gdXNlIGl0LgotICAgICAgICByZWxhdGl2ZV90b2xlcmFuY2UgPSBzZXRfZGVmYXVsdChz
ZWxmLnJlbCwgMWUtNikgKiBhYnMoc2VsZi5leHBlY3RlZCkKLQotICAgICAgICBpZiByZWxhdGl2
ZV90b2xlcmFuY2UgPCAwOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVsYXRpdmUg
dG9sZXJhbmNlIGNhbid0IGJlIG5lZ2F0aXZlOiB7fSIuZm9ybWF0KGFic29sdXRlX3RvbGVyYW5j
ZSkpCi0gICAgICAgIGlmIG1hdGguaXNuYW4ocmVsYXRpdmVfdG9sZXJhbmNlKToKLSAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlbGF0aXZlIHRvbGVyYW5jZSBjYW4ndCBiZSBOYU4uIikK
LQotICAgICAgICAjIFJldHVybiB0aGUgbGFyZ2VyIG9mIHRoZSByZWxhdGl2ZSBhbmQgYWJzb2x1
dGUgdG9sZXJhbmNlcy4KLSAgICAgICAgcmV0dXJuIG1heChyZWxhdGl2ZV90b2xlcmFuY2UsIGFi
c29sdXRlX3RvbGVyYW5jZSkKLQotCi1kZWYgYXBwcm94KGV4cGVjdGVkLCByZWw9Tm9uZSwgYWJz
PU5vbmUsIG5hbl9vaz1GYWxzZSk6Ci0gICAgIiIiCi0gICAgQXNzZXJ0IHRoYXQgdHdvIG51bWJl
cnMgKG9yIHR3byBzZXRzIG9mIG51bWJlcnMpIGFyZSBlcXVhbCB0byBlYWNoIG90aGVyCi0gICAg
d2l0aGluIHNvbWUgdG9sZXJhbmNlLgotCi0gICAgRHVlIHRvIHRoZSBgaW50cmljYWNpZXMgb2Yg
ZmxvYXRpbmctcG9pbnQgYXJpdGhtZXRpY2BfXywgbnVtYmVycyB0aGF0IHdlCi0gICAgd291bGQg
aW50dWl0aXZlbHkgZXhwZWN0IHRvIGJlIGVxdWFsIGFyZSBub3QgYWx3YXlzIHNvOjoKLQotICAg
ICAgICA+Pj4gMC4xICsgMC4yID09IDAuMwotICAgICAgICBGYWxzZQotCi0gICAgX18gaHR0cHM6
Ly9kb2NzLnB5dGhvbi5vcmcvMy90dXRvcmlhbC9mbG9hdGluZ3BvaW50Lmh0bWwKLQotICAgIFRo
aXMgcHJvYmxlbSBpcyBjb21tb25seSBlbmNvdW50ZXJlZCB3aGVuIHdyaXRpbmcgdGVzdHMsIGUu
Zy4gd2hlbiBtYWtpbmcKLSAgICBzdXJlIHRoYXQgZmxvYXRpbmctcG9pbnQgdmFsdWVzIGFyZSB3
aGF0IHlvdSBleHBlY3QgdGhlbSB0byBiZS4gIE9uZSB3YXkgdG8KLSAgICBkZWFsIHdpdGggdGhp
cyBwcm9ibGVtIGlzIHRvIGFzc2VydCB0aGF0IHR3byBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFy
ZQotICAgIGVxdWFsIHRvIHdpdGhpbiBzb21lIGFwcHJvcHJpYXRlIHRvbGVyYW5jZTo6Ci0KLSAg
ICAgICAgPj4+IGFicygoMC4xICsgMC4yKSAtIDAuMykgPCAxZS02Ci0gICAgICAgIFRydWUKLQot
ICAgIEhvd2V2ZXIsIGNvbXBhcmlzb25zIGxpa2UgdGhpcyBhcmUgdGVkaW91cyB0byB3cml0ZSBh
bmQgZGlmZmljdWx0IHRvCi0gICAgdW5kZXJzdGFuZC4gIEZ1cnRoZXJtb3JlLCBhYnNvbHV0ZSBj
b21wYXJpc29ucyBsaWtlIHRoZSBvbmUgYWJvdmUgYXJlCi0gICAgdXN1YWxseSBkaXNjb3VyYWdl
ZCBiZWNhdXNlIHRoZXJlJ3Mgbm8gdG9sZXJhbmNlIHRoYXQgd29ya3Mgd2VsbCBmb3IgYWxsCi0g
ICAgc2l0dWF0aW9ucy4gIGBgMWUtNmBgIGlzIGdvb2QgZm9yIG51bWJlcnMgYXJvdW5kIGBgMWBg
LCBidXQgdG9vIHNtYWxsIGZvcgotICAgIHZlcnkgYmlnIG51bWJlcnMgYW5kIHRvbyBiaWcgZm9y
IHZlcnkgc21hbGwgb25lcy4gIEl0J3MgYmV0dGVyIHRvIGV4cHJlc3MKLSAgICB0aGUgdG9sZXJh
bmNlIGFzIGEgZnJhY3Rpb24gb2YgdGhlIGV4cGVjdGVkIHZhbHVlLCBidXQgcmVsYXRpdmUgY29t
cGFyaXNvbnMKLSAgICBsaWtlIHRoYXQgYXJlIGV2ZW4gbW9yZSBkaWZmaWN1bHQgdG8gd3JpdGUg
Y29ycmVjdGx5IGFuZCBjb25jaXNlbHkuCi0KLSAgICBUaGUgYGBhcHByb3hgYCBjbGFzcyBwZXJm
b3JtcyBmbG9hdGluZy1wb2ludCBjb21wYXJpc29ucyB1c2luZyBhIHN5bnRheAotICAgIHRoYXQn
cyBhcyBpbnR1aXRpdmUgYXMgcG9zc2libGU6OgotCi0gICAgICAgID4+PiBmcm9tIHB5dGVzdCBp
bXBvcnQgYXBwcm94Ci0gICAgICAgID4+PiAwLjEgKyAwLjIgPT0gYXBwcm94KDAuMykKLSAgICAg
ICAgVHJ1ZQotCi0gICAgVGhlIHNhbWUgc3ludGF4IGFsc28gd29ya3MgZm9yIHNlcXVlbmNlcyBv
ZiBudW1iZXJzOjoKLQotICAgICAgICA+Pj4gKDAuMSArIDAuMiwgMC4yICsgMC40KSA9PSBhcHBy
b3goKDAuMywgMC42KSkKLSAgICAgICAgVHJ1ZQotCi0gICAgRGljdGlvbmFyeSAqdmFsdWVzKjo6
Ci0KLSAgICAgICAgPj4+IHsnYSc6IDAuMSArIDAuMiwgJ2InOiAwLjIgKyAwLjR9ID09IGFwcHJv
eCh7J2EnOiAwLjMsICdiJzogMC42fSkKLSAgICAgICAgVHJ1ZQotCi0gICAgQW5kIGBgbnVtcHlg
YCBhcnJheXM6OgotCi0gICAgICAgID4+PiBpbXBvcnQgbnVtcHkgYXMgbnAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBkb2N0ZXN0OiAr
U0tJUAotICAgICAgICA+Pj4gbnAuYXJyYXkoWzAuMSwgMC4yXSkgKyBucC5hcnJheShbMC4yLCAw
LjRdKSA9PSBhcHByb3gobnAuYXJyYXkoWzAuMywgMC42XSkpICMgZG9jdGVzdDogK1NLSVAKLSAg
ICAgICAgVHJ1ZQotCi0gICAgQnkgZGVmYXVsdCwgYGBhcHByb3hgYCBjb25zaWRlcnMgbnVtYmVy
cyB3aXRoaW4gYSByZWxhdGl2ZSB0b2xlcmFuY2Ugb2YKLSAgICBgYDFlLTZgYCAoaS5lLiBvbmUg
cGFydCBpbiBhIG1pbGxpb24pIG9mIGl0cyBleHBlY3RlZCB2YWx1ZSB0byBiZSBlcXVhbC4KLSAg
ICBUaGlzIHRyZWF0bWVudCB3b3VsZCBsZWFkIHRvIHN1cnByaXNpbmcgcmVzdWx0cyBpZiB0aGUg
ZXhwZWN0ZWQgdmFsdWUgd2FzCi0gICAgYGAwLjBgYCwgYmVjYXVzZSBub3RoaW5nIGJ1dCBgYDAu
MGBgIGl0c2VsZiBpcyByZWxhdGl2ZWx5IGNsb3NlIHRvIGBgMC4wYGAuCi0gICAgVG8gaGFuZGxl
IHRoaXMgY2FzZSBsZXNzIHN1cnByaXNpbmdseSwgYGBhcHByb3hgYCBhbHNvIGNvbnNpZGVycyBu
dW1iZXJzCi0gICAgd2l0aGluIGFuIGFic29sdXRlIHRvbGVyYW5jZSBvZiBgYDFlLTEyYGAgb2Yg
aXRzIGV4cGVjdGVkIHZhbHVlIHRvIGJlCi0gICAgZXF1YWwuICBJbmZpbml0eSBhbmQgTmFOIGFy
ZSBzcGVjaWFsIGNhc2VzLiAgSW5maW5pdHkgaXMgb25seSBjb25zaWRlcmVkCi0gICAgZXF1YWwg
dG8gaXRzZWxmLCByZWdhcmRsZXNzIG9mIHRoZSByZWxhdGl2ZSB0b2xlcmFuY2UuICBOYU4gaXMg
bm90Ci0gICAgY29uc2lkZXJlZCBlcXVhbCB0byBhbnl0aGluZyBieSBkZWZhdWx0LCBidXQgeW91
IGNhbiBtYWtlIGl0IGJlIGVxdWFsIHRvCi0gICAgaXRzZWxmIGJ5IHNldHRpbmcgdGhlIGBgbmFu
X29rYGAgYXJndW1lbnQgdG8gVHJ1ZS4gIChUaGlzIGlzIG1lYW50IHRvCi0gICAgZmFjaWxpdGF0
ZSBjb21wYXJpbmcgYXJyYXlzIHRoYXQgdXNlIE5hTiB0byBtZWFuICJubyBkYXRhIi4pCi0KLSAg
ICBCb3RoIHRoZSByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgdG9sZXJhbmNlcyBjYW4gYmUgY2hhbmdl
ZCBieSBwYXNzaW5nCi0gICAgYXJndW1lbnRzIHRvIHRoZSBgYGFwcHJveGBgIGNvbnN0cnVjdG9y
OjoKLQotICAgICAgICA+Pj4gMS4wMDAxID09IGFwcHJveCgxKQotICAgICAgICBGYWxzZQotICAg
ICAgICA+Pj4gMS4wMDAxID09IGFwcHJveCgxLCByZWw9MWUtMykKLSAgICAgICAgVHJ1ZQotICAg
ICAgICA+Pj4gMS4wMDAxID09IGFwcHJveCgxLCBhYnM9MWUtMykKLSAgICAgICAgVHJ1ZQotCi0g
ICAgSWYgeW91IHNwZWNpZnkgYGBhYnNgYCBidXQgbm90IGBgcmVsYGAsIHRoZSBjb21wYXJpc29u
IHdpbGwgbm90IGNvbnNpZGVyCi0gICAgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZSBhdCBhbGwuICBJ
biBvdGhlciB3b3JkcywgdHdvIG51bWJlcnMgdGhhdCBhcmUgd2l0aGluCi0gICAgdGhlIGRlZmF1
bHQgcmVsYXRpdmUgdG9sZXJhbmNlIG9mIGBgMWUtNmBgIHdpbGwgc3RpbGwgYmUgY29uc2lkZXJl
ZCB1bmVxdWFsCi0gICAgaWYgdGhleSBleGNlZWQgdGhlIHNwZWNpZmllZCBhYnNvbHV0ZSB0b2xl
cmFuY2UuICBJZiB5b3Ugc3BlY2lmeSBib3RoCi0gICAgYGBhYnNgYCBhbmQgYGByZWxgYCwgdGhl
IG51bWJlcnMgd2lsbCBiZSBjb25zaWRlcmVkIGVxdWFsIGlmIGVpdGhlcgotICAgIHRvbGVyYW5j
ZSBpcyBtZXQ6OgotCi0gICAgICAgID4+PiAxICsgMWUtOCA9PSBhcHByb3goMSkKLSAgICAgICAg
VHJ1ZQotICAgICAgICA+Pj4gMSArIDFlLTggPT0gYXBwcm94KDEsIGFicz0xZS0xMikKLSAgICAg
ICAgRmFsc2UKLSAgICAgICAgPj4+IDEgKyAxZS04ID09IGFwcHJveCgxLCByZWw9MWUtNiwgYWJz
PTFlLTEyKQotICAgICAgICBUcnVlCi0KLSAgICBJZiB5b3UncmUgdGhpbmtpbmcgYWJvdXQgdXNp
bmcgYGBhcHByb3hgYCwgdGhlbiB5b3UgbWlnaHQgd2FudCB0byBrbm93IGhvdwotICAgIGl0IGNv
bXBhcmVzIHRvIG90aGVyIGdvb2Qgd2F5cyBvZiBjb21wYXJpbmcgZmxvYXRpbmctcG9pbnQgbnVt
YmVycy4gIEFsbCBvZgotICAgIHRoZXNlIGFsZ29yaXRobXMgYXJlIGJhc2VkIG9uIHJlbGF0aXZl
IGFuZCBhYnNvbHV0ZSB0b2xlcmFuY2VzIGFuZCBzaG91bGQKLSAgICBhZ3JlZSBmb3IgdGhlIG1v
c3QgcGFydCwgYnV0IHRoZXkgZG8gaGF2ZSBtZWFuaW5nZnVsIGRpZmZlcmVuY2VzOgotCi0gICAg
LSBgYG1hdGguaXNjbG9zZShhLCBiLCByZWxfdG9sPTFlLTksIGFic190b2w9MC4wKWBgOiAgVHJ1
ZSBpZiB0aGUgcmVsYXRpdmUKLSAgICAgIHRvbGVyYW5jZSBpcyBtZXQgdy5yLnQuIGVpdGhlciBg
YGFgYCBvciBgYGJgYCBvciBpZiB0aGUgYWJzb2x1dGUKLSAgICAgIHRvbGVyYW5jZSBpcyBtZXQu
ICBCZWNhdXNlIHRoZSByZWxhdGl2ZSB0b2xlcmFuY2UgaXMgY2FsY3VsYXRlZCB3LnIudC4KLSAg
ICAgIGJvdGggYGBhYGAgYW5kIGBgYmBgLCB0aGlzIHRlc3QgaXMgc3ltbWV0cmljIChpLmUuICBu
ZWl0aGVyIGBgYWBgIG5vcgotICAgICAgYGBiYGAgaXMgYSAicmVmZXJlbmNlIHZhbHVlIikuICBZ
b3UgaGF2ZSB0byBzcGVjaWZ5IGFuIGFic29sdXRlIHRvbGVyYW5jZQotICAgICAgaWYgeW91IHdh
bnQgdG8gY29tcGFyZSB0byBgYDAuMGBgIGJlY2F1c2UgdGhlcmUgaXMgbm8gdG9sZXJhbmNlIGJ5
Ci0gICAgICBkZWZhdWx0LiAgT25seSBhdmFpbGFibGUgaW4gcHl0aG9uPj0zLjUuICBgTW9yZSBp
bmZvcm1hdGlvbi4uLmBfXwotCi0gICAgICBfXyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zL2xp
YnJhcnkvbWF0aC5odG1sI21hdGguaXNjbG9zZQotCi0gICAgLSBgYG51bXB5LmlzY2xvc2UoYSwg
YiwgcnRvbD0xZS01LCBhdG9sPTFlLTgpYGA6IFRydWUgaWYgdGhlIGRpZmZlcmVuY2UKLSAgICAg
IGJldHdlZW4gYGBhYGAgYW5kIGBgYmBgIGlzIGxlc3MgdGhhdCB0aGUgc3VtIG9mIHRoZSByZWxh
dGl2ZSB0b2xlcmFuY2UKLSAgICAgIHcuci50LiBgYGJgYCBhbmQgdGhlIGFic29sdXRlIHRvbGVy
YW5jZS4gIEJlY2F1c2UgdGhlIHJlbGF0aXZlIHRvbGVyYW5jZQotICAgICAgaXMgb25seSBjYWxj
dWxhdGVkIHcuci50LiBgYGJgYCwgdGhpcyB0ZXN0IGlzIGFzeW1tZXRyaWMgYW5kIHlvdSBjYW4K
LSAgICAgIHRoaW5rIG9mIGBgYmBgIGFzIHRoZSByZWZlcmVuY2UgdmFsdWUuICBTdXBwb3J0IGZv
ciBjb21wYXJpbmcgc2VxdWVuY2VzCi0gICAgICBpcyBwcm92aWRlZCBieSBgYG51bXB5LmFsbGNs
b3NlYGAuICBgTW9yZSBpbmZvcm1hdGlvbi4uLmBfXwotCi0gICAgICBfXyBodHRwOi8vZG9jcy5z
Y2lweS5vcmcvZG9jL251bXB5LTEuMTAuMC9yZWZlcmVuY2UvZ2VuZXJhdGVkL251bXB5LmlzY2xv
c2UuaHRtbAotCi0gICAgLSBgYHVuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydEFsbW9zdEVxdWFsKGEs
IGIpYGA6IFRydWUgaWYgYGBhYGAgYW5kIGBgYmBgCi0gICAgICBhcmUgd2l0aGluIGFuIGFic29s
dXRlIHRvbGVyYW5jZSBvZiBgYDFlLTdgYC4gIE5vIHJlbGF0aXZlIHRvbGVyYW5jZSBpcwotICAg
ICAgY29uc2lkZXJlZCBhbmQgdGhlIGFic29sdXRlIHRvbGVyYW5jZSBjYW5ub3QgYmUgY2hhbmdl
ZCwgc28gdGhpcyBmdW5jdGlvbgotICAgICAgaXMgbm90IGFwcHJvcHJpYXRlIGZvciB2ZXJ5IGxh
cmdlIG9yIHZlcnkgc21hbGwgbnVtYmVycy4gIEFsc28sIGl0J3Mgb25seQotICAgICAgYXZhaWxh
YmxlIGluIHN1YmNsYXNzZXMgb2YgYGB1bml0dGVzdC5UZXN0Q2FzZWBgIGFuZCBpdCdzIHVnbHkg
YmVjYXVzZSBpdAotICAgICAgZG9lc24ndCBmb2xsb3cgUEVQOC4gIGBNb3JlIGluZm9ybWF0aW9u
Li4uYF9fCi0KLSAgICAgIF9fIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS91bml0
dGVzdC5odG1sI3VuaXR0ZXN0LlRlc3RDYXNlLmFzc2VydEFsbW9zdEVxdWFsCi0KLSAgICAtIGBg
YSA9PSBweXRlc3QuYXBwcm94KGIsIHJlbD0xZS02LCBhYnM9MWUtMTIpYGA6IFRydWUgaWYgdGhl
IHJlbGF0aXZlCi0gICAgICB0b2xlcmFuY2UgaXMgbWV0IHcuci50LiBgYGJgYCBvciBpZiB0aGUg
YWJzb2x1dGUgdG9sZXJhbmNlIGlzIG1ldC4KLSAgICAgIEJlY2F1c2UgdGhlIHJlbGF0aXZlIHRv
bGVyYW5jZSBpcyBvbmx5IGNhbGN1bGF0ZWQgdy5yLnQuIGBgYmBgLCB0aGlzIHRlc3QKLSAgICAg
IGlzIGFzeW1tZXRyaWMgYW5kIHlvdSBjYW4gdGhpbmsgb2YgYGBiYGAgYXMgdGhlIHJlZmVyZW5j
ZSB2YWx1ZS4gIEluIHRoZQotICAgICAgc3BlY2lhbCBjYXNlIHRoYXQgeW91IGV4cGxpY2l0bHkg
c3BlY2lmeSBhbiBhYnNvbHV0ZSB0b2xlcmFuY2UgYnV0IG5vdCBhCi0gICAgICByZWxhdGl2ZSB0
b2xlcmFuY2UsIG9ubHkgdGhlIGFic29sdXRlIHRvbGVyYW5jZSBpcyBjb25zaWRlcmVkLgotCi0g
ICAgLi4gd2FybmluZzo6Ci0KLSAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotCi0gICAg
ICAgSW4gb3JkZXIgdG8gYXZvaWQgaW5jb25zaXN0ZW50IGJlaGF2aW9yLCBgYFR5cGVFcnJvcmBg
IGlzCi0gICAgICAgcmFpc2VkIGZvciBgYD5gYCwgYGA+PWBgLCBgYDxgYCBhbmQgYGA8PWBgIGNv
bXBhcmlzb25zLgotICAgICAgIFRoZSBleGFtcGxlIGJlbG93IGlsbHVzdHJhdGVzIHRoZSBwcm9i
bGVtOjoKLQotICAgICAgICAgICBhc3NlcnQgYXBwcm94KDAuMSkgPiAwLjEgKyAxZS0xMCAgIyBj
YWxscyBhcHByb3goMC4xKS5fX2d0X18oMC4xICsgMWUtMTApCi0gICAgICAgICAgIGFzc2VydCAw
LjEgKyAxZS0xMCA+IGFwcHJveCgwLjEpICAjIGNhbGxzIGFwcHJveCgwLjEpLl9fbHRfXygwLjEg
KyAxZS0xMCkKLQotICAgICAgIEluIHRoZSBzZWNvbmQgZXhhbXBsZSBvbmUgZXhwZWN0cyBgYGFw
cHJveCgwLjEpLl9fbGVfXygwLjEgKyAxZS0xMClgYAotICAgICAgIHRvIGJlIGNhbGxlZC4gQnV0
IGluc3RlYWQsIGBgYXBwcm94KDAuMSkuX19sdF9fKDAuMSArIDFlLTEwKWBgIGlzIHVzZWQgdG8K
LSAgICAgICBjb21wYXJpc29uLiBUaGlzIGlzIGJlY2F1c2UgdGhlIGNhbGwgaGllcmFyY2h5IG9m
IHJpY2ggY29tcGFyaXNvbnMKLSAgICAgICBmb2xsb3dzIGEgZml4ZWQgYmVoYXZpb3IuIGBNb3Jl
IGluZm9ybWF0aW9uLi4uYF9fCi0KLSAgICAgICBfXyBodHRwczovL2RvY3MucHl0aG9uLm9yZy8z
L3JlZmVyZW5jZS9kYXRhbW9kZWwuaHRtbCNvYmplY3QuX19nZV9fCi0gICAgIiIiCi0KLSAgICBm
cm9tIGNvbGxlY3Rpb25zIGltcG9ydCBNYXBwaW5nLCBTZXF1ZW5jZQotICAgIGZyb20gX3B5dGVz
dC5jb21wYXQgaW1wb3J0IFNUUklOR19UWVBFUyBhcyBTdHJpbmcKLQotICAgICMgRGVsZWdhdGUg
dGhlIGNvbXBhcmlzb24gdG8gYSBjbGFzcyB0aGF0IGtub3dzIGhvdyB0byBkZWFsIHdpdGggdGhl
IHR5cGUKLSAgICAjIG9mIHRoZSBleHBlY3RlZCB2YWx1ZSAoZS5nLiBpbnQsIGZsb2F0LCBsaXN0
LCBkaWN0LCBudW1weS5hcnJheSwgZXRjKS4KLSAgICAjCi0gICAgIyBUaGlzIGFyY2hpdGVjdHVy
ZSBpcyByZWFsbHkgZHJpdmVuIGJ5IHRoZSBuZWVkIHRvIHN1cHBvcnQgbnVtcHkgYXJyYXlzLgot
ICAgICMgVGhlIG9ubHkgd2F5IHRvIG92ZXJyaWRlIGA9PWAgZm9yIGFycmF5cyB3aXRob3V0IHJl
cXVpcmluZyB0aGF0IGFwcHJveCBiZQotICAgICMgdGhlIGxlZnQgb3BlcmFuZCBpcyB0byBpbmhl
cml0IHRoZSBhcHByb3ggb2JqZWN0IGZyb20gYG51bXB5Lm5kYXJyYXlgLgotICAgICMgQnV0IHRo
YXQgY2FuJ3QgYmUgYSBnZW5lcmFsIHNvbHV0aW9uLCBiZWNhdXNlIGl0IHJlcXVpcmVzICgxKSBu
dW1weSB0byBiZQotICAgICMgaW5zdGFsbGVkIGFuZCAoMikgdGhlIGV4cGVjdGVkIHZhbHVlIHRv
IGJlIGEgbnVtcHkgYXJyYXkuICBTbyB0aGUgZ2VuZXJhbAotICAgICMgc29sdXRpb24gaXMgdG8g
ZGVsZWdhdGUgZWFjaCB0eXBlIG9mIGV4cGVjdGVkIHZhbHVlIHRvIGEgZGlmZmVyZW50IGNsYXNz
LgotICAgICMKLSAgICAjIFRoaXMgaGFzIHRoZSBhZHZhbnRhZ2UgdGhhdCBpdCBtYWRlIGl0IGVh
c3kgdG8gc3VwcG9ydCBtYXBwaW5nIHR5cGVzCi0gICAgIyAoaS5lLiBkaWN0KS4gIFRoZSBvbGQg
Y29kZSBhY2NlcHRlZCBtYXBwaW5nIHR5cGVzLCBidXQgd291bGQgb25seSBjb21wYXJlCi0gICAg
IyB0aGVpciBrZXlzLCB3aGljaCBpcyBwcm9iYWJseSBub3Qgd2hhdCBtb3N0IHBlb3BsZSB3b3Vs
ZCBleHBlY3QuCi0KLSAgICBpZiBfaXNfbnVtcHlfYXJyYXkoZXhwZWN0ZWQpOgotICAgICAgICBj
bHMgPSBBcHByb3hOdW1weQotICAgIGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgTWFwcGluZyk6
Ci0gICAgICAgIGNscyA9IEFwcHJveE1hcHBpbmcKLSAgICBlbGlmIGlzaW5zdGFuY2UoZXhwZWN0
ZWQsIFNlcXVlbmNlKSBhbmQgbm90IGlzaW5zdGFuY2UoZXhwZWN0ZWQsIFN0cmluZyk6Ci0gICAg
ICAgIGNscyA9IEFwcHJveFNlcXVlbmNlCi0gICAgZWxzZToKLSAgICAgICAgY2xzID0gQXBwcm94
U2NhbGFyCi0KLSAgICByZXR1cm4gY2xzKGV4cGVjdGVkLCByZWwsIGFicywgbmFuX29rKQotCi0K
LWRlZiBfaXNfbnVtcHlfYXJyYXkob2JqKToKLSAgICAiIiIKLSAgICBSZXR1cm4gdHJ1ZSBpZiB0
aGUgZ2l2ZW4gb2JqZWN0IGlzIGEgbnVtcHkgYXJyYXkuICBNYWtlIGEgc3BlY2lhbCBlZmZvcnQg
dG8KLSAgICBhdm9pZCBpbXBvcnRpbmcgbnVtcHkgdW5sZXNzIGl0J3MgcmVhbGx5IG5lY2Vzc2Fy
eS4KLSAgICAiIiIKLSAgICBpbXBvcnQgaW5zcGVjdAotCi0gICAgZm9yIGNscyBpbiBpbnNwZWN0
LmdldG1ybyh0eXBlKG9iaikpOgotICAgICAgICBpZiBjbHMuX19tb2R1bGVfXyA9PSAnbnVtcHkn
OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGltcG9ydCBudW1weSBhcyBucAot
ICAgICAgICAgICAgICAgIHJldHVybiBpc2luc3RhbmNlKG9iaiwgbnAubmRhcnJheSkKLSAgICAg
ICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICBy
ZXR1cm4gRmFsc2UKLQotCi0jIGJ1aWx0aW4gcHl0ZXN0LnJhaXNlcyBoZWxwZXIKLQotZGVmIHJh
aXNlcyhleHBlY3RlZF9leGNlcHRpb24sICphcmdzLCAqKmt3YXJncyk6Ci0gICAgIiIiCi0gICAg
QXNzZXJ0IHRoYXQgYSBjb2RlIGJsb2NrL2Z1bmN0aW9uIGNhbGwgcmFpc2VzIGBgZXhwZWN0ZWRf
ZXhjZXB0aW9uYGAKLSAgICBhbmQgcmFpc2UgYSBmYWlsdXJlIGV4Y2VwdGlvbiBvdGhlcndpc2Uu
Ci0KLSAgICBUaGlzIGhlbHBlciBwcm9kdWNlcyBhIGBgRXhjZXB0aW9uSW5mbygpYGAgb2JqZWN0
IChzZWUgYmVsb3cpLgotCi0gICAgWW91IG1heSB1c2UgdGhpcyBmdW5jdGlvbiBhcyBhIGNvbnRl
eHQgbWFuYWdlcjo6Ci0KLSAgICAgICAgPj4+IHdpdGggcmFpc2VzKFplcm9EaXZpc2lvbkVycm9y
KToKLSAgICAgICAgLi4uICAgIDEvMAotCi0gICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAyLjEwCi0K
LSAgICBJbiB0aGUgY29udGV4dCBtYW5hZ2VyIGZvcm0geW91IG1heSB1c2UgdGhlIGtleXdvcmQg
YXJndW1lbnQKLSAgICBgYG1lc3NhZ2VgYCB0byBzcGVjaWZ5IGEgY3VzdG9tIGZhaWx1cmUgbWVz
c2FnZTo6Ci0KLSAgICAgICAgPj4+IHdpdGggcmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBtZXNz
YWdlPSJFeHBlY3RpbmcgWmVyb0RpdmlzaW9uRXJyb3IiKToKLSAgICAgICAgLi4uICAgIHBhc3MK
LSAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICAgICAgICAgIC4u
LgotICAgICAgICBGYWlsZWQ6IEV4cGVjdGluZyBaZXJvRGl2aXNpb25FcnJvcgotCi0gICAgLi4g
bm90ZTo6Ci0KLSAgICAgICBXaGVuIHVzaW5nIGBgcHl0ZXN0LnJhaXNlc2BgIGFzIGEgY29udGV4
dCBtYW5hZ2VyLCBpdCdzIHdvcnRod2hpbGUgdG8KLSAgICAgICBub3RlIHRoYXQgbm9ybWFsIGNv
bnRleHQgbWFuYWdlciBydWxlcyBhcHBseSBhbmQgdGhhdCB0aGUgZXhjZXB0aW9uCi0gICAgICAg
cmFpc2VkICptdXN0KiBiZSB0aGUgZmluYWwgbGluZSBpbiB0aGUgc2NvcGUgb2YgdGhlIGNvbnRl
eHQgbWFuYWdlci4KLSAgICAgICBMaW5lcyBvZiBjb2RlIGFmdGVyIHRoYXQsIHdpdGhpbiB0aGUg
c2NvcGUgb2YgdGhlIGNvbnRleHQgbWFuYWdlciB3aWxsCi0gICAgICAgbm90IGJlIGV4ZWN1dGVk
LiBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgICAgPj4+IHZhbHVlID0gMTUKLSAgICAgICAgICAg
Pj4+IHdpdGggcmFpc2VzKFZhbHVlRXJyb3IpIGFzIGV4Y19pbmZvOgotICAgICAgICAgICAuLi4g
ICAgIGlmIHZhbHVlID4gMTA6Ci0gICAgICAgICAgIC4uLiAgICAgICAgIHJhaXNlIFZhbHVlRXJy
b3IoInZhbHVlIG11c3QgYmUgPD0gMTAiKQotICAgICAgICAgICAuLi4gICAgIGFzc2VydCBleGNf
aW5mby50eXBlID09IFZhbHVlRXJyb3IgICMgdGhpcyB3aWxsIG5vdCBleGVjdXRlCi0KLSAgICAg
ICBJbnN0ZWFkLCB0aGUgZm9sbG93aW5nIGFwcHJvYWNoIG11c3QgYmUgdGFrZW4gKG5vdGUgdGhl
IGRpZmZlcmVuY2UgaW4KLSAgICAgICBzY29wZSk6OgotCi0gICAgICAgICAgID4+PiB3aXRoIHJh
aXNlcyhWYWx1ZUVycm9yKSBhcyBleGNfaW5mbzoKLSAgICAgICAgICAgLi4uICAgICBpZiB2YWx1
ZSA+IDEwOgotICAgICAgICAgICAuLi4gICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ2YWx1ZSBt
dXN0IGJlIDw9IDEwIikKLSAgICAgICAgICAgLi4uCi0gICAgICAgICAgID4+PiBhc3NlcnQgZXhj
X2luZm8udHlwZSA9PSBWYWx1ZUVycm9yCi0KLQotICAgIFNpbmNlIHZlcnNpb24gYGAzLjFgYCB5
b3UgY2FuIHVzZSB0aGUga2V5d29yZCBhcmd1bWVudCBgYG1hdGNoYGAgdG8gYXNzZXJ0IHRoYXQg
dGhlCi0gICAgZXhjZXB0aW9uIG1hdGNoZXMgYSB0ZXh0IG9yIHJlZ2V4OjoKLQotICAgICAgICA+
Pj4gd2l0aCByYWlzZXMoVmFsdWVFcnJvciwgbWF0Y2g9J211c3QgYmUgMCBvciBOb25lJyk6Ci0g
ICAgICAgIC4uLiAgICAgcmFpc2UgVmFsdWVFcnJvcigidmFsdWUgbXVzdCBiZSAwIG9yIE5vbmUi
KQotCi0gICAgICAgID4+PiB3aXRoIHJhaXNlcyhWYWx1ZUVycm9yLCBtYXRjaD1yJ211c3QgYmUg
XGQrJCcpOgotICAgICAgICAuLi4gICAgIHJhaXNlIFZhbHVlRXJyb3IoInZhbHVlIG11c3QgYmUg
NDIiKQotCi0gICAgKipMZWdhY3kgZm9ybXMqKgotCi0gICAgVGhlIGZvcm1zIGJlbG93IGFyZSBm
dWxseSBzdXBwb3J0ZWQgYnV0IGFyZSBkaXNjb3VyYWdlZCBmb3IgbmV3IGNvZGUgYmVjYXVzZSB0
aGUKLSAgICBjb250ZXh0IG1hbmFnZXIgZm9ybSBpcyByZWdhcmRlZCBhcyBtb3JlIHJlYWRhYmxl
IGFuZCBsZXNzIGVycm9yLXByb25lLgotCi0gICAgSXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBh
IGNhbGxhYmxlIGJ5IHBhc3NpbmcgYSB0by1iZS1jYWxsZWQgbGFtYmRhOjoKLQotICAgICAgICA+
Pj4gcmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBsYW1iZGE6IDEvMCkKLSAgICAgICAgPEV4Y2Vw
dGlvbkluZm8gLi4uPgotCi0gICAgb3IgeW91IGNhbiBzcGVjaWZ5IGFuIGFyYml0cmFyeSBjYWxs
YWJsZSB3aXRoIGFyZ3VtZW50czo6Ci0KLSAgICAgICAgPj4+IGRlZiBmKHgpOiByZXR1cm4gMS94
Ci0gICAgICAgIC4uLgotICAgICAgICA+Pj4gcmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCBmLCAw
KQotICAgICAgICA8RXhjZXB0aW9uSW5mbyAuLi4+Ci0gICAgICAgID4+PiByYWlzZXMoWmVyb0Rp
dmlzaW9uRXJyb3IsIGYsIHg9MCkKLSAgICAgICAgPEV4Y2VwdGlvbkluZm8gLi4uPgotCi0gICAg
SXQgaXMgYWxzbyBwb3NzaWJsZSB0byBwYXNzIGEgc3RyaW5nIHRvIGJlIGV2YWx1YXRlZCBhdCBy
dW50aW1lOjoKLQotICAgICAgICA+Pj4gcmFpc2VzKFplcm9EaXZpc2lvbkVycm9yLCAiZigwKSIp
Ci0gICAgICAgIDxFeGNlcHRpb25JbmZvIC4uLj4KLQotICAgIFRoZSBzdHJpbmcgd2lsbCBiZSBl
dmFsdWF0ZWQgdXNpbmcgdGhlIHNhbWUgYGBsb2NhbHMoKWBgIGFuZCBgYGdsb2JhbHMoKWBgCi0g
ICAgYXQgdGhlIG1vbWVudCBvZiB0aGUgYGByYWlzZXNgYCBjYWxsLgotCi0gICAgLi4gYXV0b2Ns
YXNzOjogX3B5dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvCi0gICAgICAgIDptZW1iZXJzOgotCi0g
ICAgLi4gbm90ZTo6Ci0gICAgICAgIFNpbWlsYXIgdG8gY2F1Z2h0IGV4Y2VwdGlvbiBvYmplY3Rz
IGluIFB5dGhvbiwgZXhwbGljaXRseSBjbGVhcmluZwotICAgICAgICBsb2NhbCByZWZlcmVuY2Vz
IHRvIHJldHVybmVkIGBgRXhjZXB0aW9uSW5mb2BgIG9iamVjdHMgY2FuCi0gICAgICAgIGhlbHAg
dGhlIFB5dGhvbiBpbnRlcnByZXRlciBzcGVlZCB1cCBpdHMgZ2FyYmFnZSBjb2xsZWN0aW9uLgot
Ci0gICAgICAgIENsZWFyaW5nIHRob3NlIHJlZmVyZW5jZXMgYnJlYWtzIGEgcmVmZXJlbmNlIGN5
Y2xlCi0gICAgICAgIChgYEV4Y2VwdGlvbkluZm9gYCAtLT4gY2F1Z2h0IGV4Y2VwdGlvbiAtLT4g
ZnJhbWUgc3RhY2sgcmFpc2luZwotICAgICAgICB0aGUgZXhjZXB0aW9uIC0tPiBjdXJyZW50IGZy
YW1lIHN0YWNrIC0tPiBsb2NhbCB2YXJpYWJsZXMgLS0+Ci0gICAgICAgIGBgRXhjZXB0aW9uSW5m
b2BgKSB3aGljaCBtYWtlcyBQeXRob24ga2VlcCBhbGwgb2JqZWN0cyByZWZlcmVuY2VkCi0gICAg
ICAgIGZyb20gdGhhdCBjeWNsZSAoaW5jbHVkaW5nIGFsbCBsb2NhbCB2YXJpYWJsZXMgaW4gdGhl
IGN1cnJlbnQKLSAgICAgICAgZnJhbWUpIGFsaXZlIHVudGlsIHRoZSBuZXh0IGN5Y2xpYyBnYXJi
YWdlIGNvbGxlY3Rpb24gcnVuLiBTZWUgdGhlCi0gICAgICAgIG9mZmljaWFsIFB5dGhvbiBgYHRy
eWBgIHN0YXRlbWVudCBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGRldGFpbGVkCi0gICAgICAgIGlu
Zm9ybWF0aW9uLgotCi0gICAgIiIiCi0gICAgX190cmFjZWJhY2toaWRlX18gPSBUcnVlCi0gICAg
bXNnID0gKCJleGNlcHRpb25zIG11c3QgYmUgb2xkLXN0eWxlIGNsYXNzZXMgb3IiCi0gICAgICAg
ICAgICIgZGVyaXZlZCBmcm9tIEJhc2VFeGNlcHRpb24sIG5vdCAlcyIpCi0gICAgaWYgaXNpbnN0
YW5jZShleHBlY3RlZF9leGNlcHRpb24sIHR1cGxlKToKLSAgICAgICAgZm9yIGV4YyBpbiBleHBl
Y3RlZF9leGNlcHRpb246Ci0gICAgICAgICAgICBpZiBub3QgaXNjbGFzcyhleGMpOgotICAgICAg
ICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihtc2cgJSB0eXBlKGV4YykpCi0gICAgZWxpZiBub3Qg
aXNjbGFzcyhleHBlY3RlZF9leGNlcHRpb24pOgotICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNn
ICUgdHlwZShleHBlY3RlZF9leGNlcHRpb24pKQotCi0gICAgbWVzc2FnZSA9ICJESUQgTk9UIFJB
SVNFIHswfSIuZm9ybWF0KGV4cGVjdGVkX2V4Y2VwdGlvbikKLSAgICBtYXRjaF9leHByID0gTm9u
ZQotCi0gICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgIGlmICJtZXNzYWdlIiBpbiBrd2FyZ3M6Ci0g
ICAgICAgICAgICBtZXNzYWdlID0ga3dhcmdzLnBvcCgibWVzc2FnZSIpCi0gICAgICAgIGlmICJt
YXRjaCIgaW4ga3dhcmdzOgotICAgICAgICAgICAgbWF0Y2hfZXhwciA9IGt3YXJncy5wb3AoIm1h
dGNoIikKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gIiBtYXRjaGluZyAnezB9JyIuZm9ybWF0KG1h
dGNoX2V4cHIpCi0gICAgICAgIHJldHVybiBSYWlzZXNDb250ZXh0KGV4cGVjdGVkX2V4Y2VwdGlv
biwgbWVzc2FnZSwgbWF0Y2hfZXhwcikKLSAgICBlbGlmIGlzaW5zdGFuY2UoYXJnc1swXSwgc3Ry
KToKLSAgICAgICAgY29kZSwgPSBhcmdzCi0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGNvZGUs
IHN0cikKLSAgICAgICAgZnJhbWUgPSBzeXMuX2dldGZyYW1lKDEpCi0gICAgICAgIGxvYyA9IGZy
YW1lLmZfbG9jYWxzLmNvcHkoKQotICAgICAgICBsb2MudXBkYXRlKGt3YXJncykKLSAgICAgICAg
IyBwcmludCAicmFpc2VzIGZyYW1lIHNjb3BlOiAlciIgJSBmcmFtZS5mX2xvY2FscwotICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICBjb2RlID0gX3B5dGVzdC5fY29kZS5Tb3VyY2UoY29kZSkuY29t
cGlsZSgpCi0gICAgICAgICAgICBweS5idWlsdGluLmV4ZWNfKGNvZGUsIGZyYW1lLmZfZ2xvYmFs
cywgbG9jKQotICAgICAgICAgICAgIyBYWFggZGlkbidUIG1lYW4gZl9nbG9iYWxzID09IGZfbG9j
YWxzIHNvbWV0aGluZyBzcGVjaWFsPwotICAgICAgICAgICAgIyAgICAgdGhpcyBpcyBkZXN0cm95
ZWQgaGVyZSAuLi4KLSAgICAgICAgZXhjZXB0IGV4cGVjdGVkX2V4Y2VwdGlvbjoKLSAgICAgICAg
ICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQotICAgIGVsc2U6Ci0gICAg
ICAgIGZ1bmMgPSBhcmdzWzBdCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZ1bmMoKmFyZ3Nb
MTpdLCAqKmt3YXJncykKLSAgICAgICAgZXhjZXB0IGV4cGVjdGVkX2V4Y2VwdGlvbjoKLSAgICAg
ICAgICAgIHJldHVybiBfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8oKQotICAgIGZhaWwobWVz
c2FnZSkKLQotCi1yYWlzZXMuRXhjZXB0aW9uID0gZmFpbC5FeGNlcHRpb24KLQotCi1jbGFzcyBS
YWlzZXNDb250ZXh0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4cGVjdGVkX2V4
Y2VwdGlvbiwgbWVzc2FnZSwgbWF0Y2hfZXhwcik6Ci0gICAgICAgIHNlbGYuZXhwZWN0ZWRfZXhj
ZXB0aW9uID0gZXhwZWN0ZWRfZXhjZXB0aW9uCi0gICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3Nh
Z2UKLSAgICAgICAgc2VsZi5tYXRjaF9leHByID0gbWF0Y2hfZXhwcgotICAgICAgICBzZWxmLmV4
Y2luZm8gPSBOb25lCi0KLSAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgotICAgICAgICBzZWxmLmV4
Y2luZm8gPSBvYmplY3QuX19uZXdfXyhfcHl0ZXN0Ll9jb2RlLkV4Y2VwdGlvbkluZm8pCi0gICAg
ICAgIHJldHVybiBzZWxmLmV4Y2luZm8KLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqdHApOgot
ICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICAgICAgaWYgdHBbMF0gaXMgTm9u
ZToKLSAgICAgICAgICAgIGZhaWwoc2VsZi5tZXNzYWdlKQotICAgICAgICBzZWxmLmV4Y2luZm8u
X19pbml0X18odHApCi0gICAgICAgIHN1cHByZXNzX2V4Y2VwdGlvbiA9IGlzc3ViY2xhc3Moc2Vs
Zi5leGNpbmZvLnR5cGUsIHNlbGYuZXhwZWN0ZWRfZXhjZXB0aW9uKQotICAgICAgICBpZiBzeXMu
dmVyc2lvbl9pbmZvWzBdID09IDIgYW5kIHN1cHByZXNzX2V4Y2VwdGlvbjoKLSAgICAgICAgICAg
IHN5cy5leGNfY2xlYXIoKQotICAgICAgICBpZiBzZWxmLm1hdGNoX2V4cHI6Ci0gICAgICAgICAg
ICBzZWxmLmV4Y2luZm8ubWF0Y2goc2VsZi5tYXRjaF9leHByKQotICAgICAgICByZXR1cm4gc3Vw
cHJlc3NfZXhjZXB0aW9uCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3JlY3dhcm4u
cHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3JlY3dhcm4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRmY2ViMTBhN2YzNDA0M2Y0MGRjNDM5NjA4OTFjYWRjMmZlNDFhMjguLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9yZWN3YXJuLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjM2ICswLDAgQEAKLSIiIiByZWNv
cmRpbmcgd2FybmluZ3MgZHVyaW5nIHRlc3QgZnVuY3Rpb24gZXhlY3V0aW9uLiAiIiIKLWZyb20g
X19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rp
b24KLQotaW1wb3J0IGluc3BlY3QKLQotaW1wb3J0IF9weXRlc3QuX2NvZGUKLWltcG9ydCBweQot
aW1wb3J0IHN5cwotaW1wb3J0IHdhcm5pbmdzCi0KLWltcG9ydCByZQotCi1mcm9tIF9weXRlc3Qu
Zml4dHVyZXMgaW1wb3J0IHlpZWxkX2ZpeHR1cmUKLWZyb20gX3B5dGVzdC5vdXRjb21lcyBpbXBv
cnQgZmFpbAotCi0KLUB5aWVsZF9maXh0dXJlCi1kZWYgcmVjd2FybigpOgotICAgICIiIlJldHVy
biBhIFdhcm5pbmdzUmVjb3JkZXIgaW5zdGFuY2UgdGhhdCBwcm92aWRlcyB0aGVzZSBtZXRob2Rz
OgotCi0gICAgKiBgYHBvcChjYXRlZ29yeT1Ob25lKWBgOiByZXR1cm4gbGFzdCB3YXJuaW5nIG1h
dGNoaW5nIHRoZSBjYXRlZ29yeS4KLSAgICAqIGBgY2xlYXIoKWBgOiBjbGVhciBsaXN0IG9mIHdh
cm5pbmdzCi0KLSAgICBTZWUgaHR0cDovL2RvY3MucHl0aG9uLm9yZy9saWJyYXJ5L3dhcm5pbmdz
Lmh0bWwgZm9yIGluZm9ybWF0aW9uCi0gICAgb24gd2FybmluZyBjYXRlZ29yaWVzLgotICAgICIi
IgotICAgIHdyZWMgPSBXYXJuaW5nc1JlY29yZGVyKCkKLSAgICB3aXRoIHdyZWM6Ci0gICAgICAg
IHdhcm5pbmdzLnNpbXBsZWZpbHRlcignZGVmYXVsdCcpCi0gICAgICAgIHlpZWxkIHdyZWMKLQot
Ci1kZWYgZGVwcmVjYXRlZF9jYWxsKGZ1bmM9Tm9uZSwgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAi
IiJjb250ZXh0IG1hbmFnZXIgdGhhdCBjYW4gYmUgdXNlZCB0byBlbnN1cmUgYSBibG9jayBvZiBj
b2RlIHRyaWdnZXJzIGEKLSAgICBgYERlcHJlY2F0aW9uV2FybmluZ2BgIG9yIGBgUGVuZGluZ0Rl
cHJlY2F0aW9uV2FybmluZ2BgOjoKLQotICAgICAgICA+Pj4gaW1wb3J0IHdhcm5pbmdzCi0gICAg
ICAgID4+PiBkZWYgYXBpX2NhbGxfdjIoKToKLSAgICAgICAgLi4uICAgICB3YXJuaW5ncy53YXJu
KCd1c2UgdjMgb2YgdGhpcyBhcGknLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgIC4uLiAg
ICAgcmV0dXJuIDIwMAotCi0gICAgICAgID4+PiB3aXRoIGRlcHJlY2F0ZWRfY2FsbCgpOgotICAg
ICAgICAuLi4gICAgYXNzZXJ0IGFwaV9jYWxsX3YyKCkgPT0gMjAwCi0KLSAgICBgYGRlcHJlY2F0
ZWRfY2FsbGBgIGNhbiBhbHNvIGJlIHVzZWQgYnkgcGFzc2luZyBhIGZ1bmN0aW9uIGFuZCBgYCph
cmdzYGAgYW5kIGBgKmt3YXJnc2BgLAotICAgIGluIHdoaWNoIGNhc2UgaXQgd2lsbCBlbnN1cmUg
Y2FsbGluZyBgYGZ1bmMoKmFyZ3MsICoqa3dhcmdzKWBgIHByb2R1Y2VzIG9uZSBvZiB0aGUgd2Fy
bmluZ3MKLSAgICB0eXBlcyBhYm92ZS4KLSAgICAiIiIKLSAgICBpZiBub3QgZnVuYzoKLSAgICAg
ICAgcmV0dXJuIF9EZXByZWNhdGVkQ2FsbENvbnRleHQoKQotICAgIGVsc2U6Ci0gICAgICAgIF9f
dHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICB3aXRoIF9EZXByZWNhdGVkQ2FsbENvbnRl
eHQoKToKLSAgICAgICAgICAgIHJldHVybiBmdW5jKCphcmdzLCAqKmt3YXJncykKLQotCi1jbGFz
cyBfRGVwcmVjYXRlZENhbGxDb250ZXh0KG9iamVjdCk6Ci0gICAgIiIiSW1wbGVtZW50cyB0aGUg
bG9naWMgdG8gY2FwdHVyZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBhcyBhIGNvbnRleHQgbWFuYWdl
ci4iIiIKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2NhcHR1cmVk
X2NhdGVnb3JpZXMgPSBbXQotICAgICAgICBzZWxmLl9vbGRfd2FybiA9IHdhcm5pbmdzLndhcm4K
LSAgICAgICAgc2VsZi5fb2xkX3dhcm5fZXhwbGljaXQgPSB3YXJuaW5ncy53YXJuX2V4cGxpY2l0
Ci0gICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQgPSBzZWxmLl93YXJuX2V4cGxpY2l0Ci0g
ICAgICAgIHdhcm5pbmdzLndhcm4gPSBzZWxmLl93YXJuCi0KLSAgICBkZWYgX3dhcm5fZXhwbGlj
aXQoc2VsZiwgbWVzc2FnZSwgY2F0ZWdvcnksICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIHNl
bGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMuYXBwZW5kKGNhdGVnb3J5KQotCi0gICAgZGVmIF93YXJu
KHNlbGYsIG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAg
IGlmIGlzaW5zdGFuY2UobWVzc2FnZSwgV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLl9jYXB0
dXJlZF9jYXRlZ29yaWVzLmFwcGVuZChtZXNzYWdlLl9fY2xhc3NfXykKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIHNlbGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMuYXBwZW5kKGNhdGVnb3J5KQot
Ci0gICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsLCBleGNfdGIpOgotICAg
ICAgICB3YXJuaW5ncy53YXJuX2V4cGxpY2l0ID0gc2VsZi5fb2xkX3dhcm5fZXhwbGljaXQKLSAg
ICAgICAgd2FybmluZ3Mud2FybiA9IHNlbGYuX29sZF93YXJuCi0KLSAgICAgICAgaWYgZXhjX3R5
cGUgaXMgTm9uZToKLSAgICAgICAgICAgIGRlcHJlY2F0aW9uX2NhdGVnb3JpZXMgPSAoRGVwcmVj
YXRpb25XYXJuaW5nLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgaWYg
bm90IGFueShpc3N1YmNsYXNzKGMsIGRlcHJlY2F0aW9uX2NhdGVnb3JpZXMpIGZvciBjIGluIHNl
bGYuX2NhcHR1cmVkX2NhdGVnb3JpZXMpOgotICAgICAgICAgICAgICAgIF9fdHJhY2ViYWNraGlk
ZV9fID0gVHJ1ZQotICAgICAgICAgICAgICAgIG1zZyA9ICJEaWQgbm90IHByb2R1Y2UgRGVwcmVj
YXRpb25XYXJuaW5nIG9yIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmciCi0gICAgICAgICAgICAg
ICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IobXNnKQotCi0KLWRlZiB3YXJucyhleHBlY3RlZF93YXJu
aW5nLCAqYXJncywgKiprd2FyZ3MpOgotICAgICIiIkFzc2VydCB0aGF0IGNvZGUgcmFpc2VzIGEg
cGFydGljdWxhciBjbGFzcyBvZiB3YXJuaW5nLgotCi0gICAgU3BlY2lmaWNhbGx5LCB0aGUgaW5w
dXQgQGV4cGVjdGVkX3dhcm5pbmcgY2FuIGJlIGEgd2FybmluZyBjbGFzcyBvcgotICAgIHR1cGxl
IG9mIHdhcm5pbmcgY2xhc3NlcywgYW5kIHRoZSBjb2RlIG11c3QgcmV0dXJuIHRoYXQgd2Fybmlu
ZwotICAgIChpZiBhIHNpbmdsZSBjbGFzcykgb3Igb25lIG9mIHRob3NlIHdhcm5pbmdzIChpZiBh
IHR1cGxlKS4KLQotICAgIFRoaXMgaGVscGVyIHByb2R1Y2VzIGEgbGlzdCBvZiBgYHdhcm5pbmdz
Lldhcm5pbmdNZXNzYWdlYGAgb2JqZWN0cywKLSAgICBvbmUgZm9yIGVhY2ggd2FybmluZyByYWlz
ZWQuCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFzIGEgY29udGV4dCBtYW5hZ2Vy
LCBvciBhbnkgb2YgdGhlIG90aGVyIHdheXMKLSAgICBgYHB5dGVzdC5yYWlzZXNgYCBjYW4gYmUg
dXNlZDo6Ci0KLSAgICAgICAgPj4+IHdpdGggd2FybnMoUnVudGltZVdhcm5pbmcpOgotICAgICAg
ICAuLi4gICAgd2FybmluZ3Mud2FybigibXkgd2FybmluZyIsIFJ1bnRpbWVXYXJuaW5nKQotCi0g
ICAgSW4gdGhlIGNvbnRleHQgbWFuYWdlciBmb3JtIHlvdSBtYXkgdXNlIHRoZSBrZXl3b3JkIGFy
Z3VtZW50IGBgbWF0Y2hgYCB0byBhc3NlcnQKLSAgICB0aGF0IHRoZSBleGNlcHRpb24gbWF0Y2hl
cyBhIHRleHQgb3IgcmVnZXg6OgotCi0gICAgICAgID4+PiB3aXRoIHdhcm5zKFVzZXJXYXJuaW5n
LCBtYXRjaD0nbXVzdCBiZSAwIG9yIE5vbmUnKToKLSAgICAgICAgLi4uICAgICB3YXJuaW5ncy53
YXJuKCJ2YWx1ZSBtdXN0IGJlIDAgb3IgTm9uZSIsIFVzZXJXYXJuaW5nKQotCi0gICAgICAgID4+
PiB3aXRoIHdhcm5zKFVzZXJXYXJuaW5nLCBtYXRjaD1yJ211c3QgYmUgXGQrJCcpOgotICAgICAg
ICAuLi4gICAgIHdhcm5pbmdzLndhcm4oInZhbHVlIG11c3QgYmUgNDIiLCBVc2VyV2FybmluZykK
LQotICAgICAgICA+Pj4gd2l0aCB3YXJucyhVc2VyV2FybmluZywgbWF0Y2g9cidtdXN0IGJlIFxk
KyQnKToKLSAgICAgICAgLi4uICAgICB3YXJuaW5ncy53YXJuKCJ0aGlzIGlzIG5vdCBoZXJlIiwg
VXNlcldhcm5pbmcpCi0gICAgICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToK
LSAgICAgICAgICAuLi4KLSAgICAgICAgRmFpbGVkOiBESUQgTk9UIFdBUk4uIE5vIHdhcm5pbmdz
IG9mIHR5cGUgLi4uVXNlcldhcm5pbmcuLi4gd2FzIGVtaXR0ZWQuLi4KLQotICAgICIiIgotICAg
IG1hdGNoX2V4cHIgPSBOb25lCi0gICAgaWYgbm90IGFyZ3M6Ci0gICAgICAgIGlmICJtYXRjaCIg
aW4ga3dhcmdzOgotICAgICAgICAgICAgbWF0Y2hfZXhwciA9IGt3YXJncy5wb3AoIm1hdGNoIikK
LSAgICAgICAgcmV0dXJuIFdhcm5pbmdzQ2hlY2tlcihleHBlY3RlZF93YXJuaW5nLCBtYXRjaF9l
eHByPW1hdGNoX2V4cHIpCi0gICAgZWxpZiBpc2luc3RhbmNlKGFyZ3NbMF0sIHN0cik6Ci0gICAg
ICAgIGNvZGUsID0gYXJncwotICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb2RlLCBzdHIpCi0g
ICAgICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQotICAgICAgICBsb2MgPSBmcmFtZS5mX2xv
Y2Fscy5jb3B5KCkKLSAgICAgICAgbG9jLnVwZGF0ZShrd2FyZ3MpCi0KLSAgICAgICAgd2l0aCBX
YXJuaW5nc0NoZWNrZXIoZXhwZWN0ZWRfd2FybmluZywgbWF0Y2hfZXhwcj1tYXRjaF9leHByKToK
LSAgICAgICAgICAgIGNvZGUgPSBfcHl0ZXN0Ll9jb2RlLlNvdXJjZShjb2RlKS5jb21waWxlKCkK
LSAgICAgICAgICAgIHB5LmJ1aWx0aW4uZXhlY18oY29kZSwgZnJhbWUuZl9nbG9iYWxzLCBsb2Mp
Ci0gICAgZWxzZToKLSAgICAgICAgZnVuYyA9IGFyZ3NbMF0KLSAgICAgICAgd2l0aCBXYXJuaW5n
c0NoZWNrZXIoZXhwZWN0ZWRfd2FybmluZywgbWF0Y2hfZXhwcj1tYXRjaF9leHByKToKLSAgICAg
ICAgICAgIHJldHVybiBmdW5jKCphcmdzWzE6XSwgKiprd2FyZ3MpCi0KLQotY2xhc3MgV2Fybmlu
Z3NSZWNvcmRlcih3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyk6Ci0gICAgIiIiQSBjb250ZXh0IG1h
bmFnZXIgdG8gcmVjb3JkIHJhaXNlZCB3YXJuaW5ncy4KLQotICAgIEFkYXB0ZWQgZnJvbSBgd2Fy
bmluZ3MuY2F0Y2hfd2FybmluZ3NgLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYp
OgotICAgICAgICBzdXBlcihXYXJuaW5nc1JlY29yZGVyLCBzZWxmKS5fX2luaXRfXyhyZWNvcmQ9
VHJ1ZSkKLSAgICAgICAgc2VsZi5fZW50ZXJlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuX2xpc3Qg
PSBbXQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGxpc3Qoc2VsZik6Ci0gICAgICAgICIiIlRo
ZSBsaXN0IG9mIHJlY29yZGVkIHdhcm5pbmdzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbGlz
dAotCi0gICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOgotICAgICAgICAiIiJHZXQgYSByZWNv
cmRlZCB3YXJuaW5nIGJ5IGluZGV4LiIiIgotICAgICAgICByZXR1cm4gc2VsZi5fbGlzdFtpXQot
Ci0gICAgZGVmIF9faXRlcl9fKHNlbGYpOgotICAgICAgICAiIiJJdGVyYXRlIHRocm91Z2ggdGhl
IHJlY29yZGVkIHdhcm5pbmdzLiIiIgotICAgICAgICByZXR1cm4gaXRlcihzZWxmLl9saXN0KQot
Ci0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgICIiIlRoZSBudW1iZXIgb2YgcmVjb3Jk
ZWQgd2FybmluZ3MuIiIiCi0gICAgICAgIHJldHVybiBsZW4oc2VsZi5fbGlzdCkKLQotICAgIGRl
ZiBwb3Aoc2VsZiwgY2xzPVdhcm5pbmcpOgotICAgICAgICAiIiJQb3AgdGhlIGZpcnN0IHJlY29y
ZGVkIHdhcm5pbmcsIHJhaXNlIGV4Y2VwdGlvbiBpZiBub3QgZXhpc3RzLiIiIgotICAgICAgICBm
b3IgaSwgdyBpbiBlbnVtZXJhdGUoc2VsZi5fbGlzdCk6Ci0gICAgICAgICAgICBpZiBpc3N1YmNs
YXNzKHcuY2F0ZWdvcnksIGNscyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2xpc3Qu
cG9wKGkpCi0gICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICByYWlzZSBB
c3NlcnRpb25FcnJvcigiJXIgbm90IGZvdW5kIGluIHdhcm5pbmcgbGlzdCIgJSBjbHMpCi0KLSAg
ICBkZWYgY2xlYXIoc2VsZik6Ci0gICAgICAgICIiIkNsZWFyIHRoZSBsaXN0IG9mIHJlY29yZGVk
IHdhcm5pbmdzLiIiIgotICAgICAgICBzZWxmLl9saXN0WzpdID0gW10KLQotICAgIGRlZiBfX2Vu
dGVyX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2VudGVyZWQ6Ci0gICAgICAgICAgICBfX3Ry
YWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiQ2Fu
bm90IGVudGVyICVyIHR3aWNlIiAlIHNlbGYpCi0gICAgICAgIHNlbGYuX2xpc3QgPSBzdXBlcihX
YXJuaW5nc1JlY29yZGVyLCBzZWxmKS5fX2VudGVyX18oKQotICAgICAgICB3YXJuaW5ncy5zaW1w
bGVmaWx0ZXIoJ2Fsd2F5cycpCi0gICAgICAgIHJldHVybiBzZWxmCi0KLSAgICBkZWYgX19leGl0
X18oc2VsZiwgKmV4Y19pbmZvKToKLSAgICAgICAgaWYgbm90IHNlbGYuX2VudGVyZWQ6Ci0gICAg
ICAgICAgICBfX3RyYWNlYmFja2hpZGVfXyA9IFRydWUKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRp
bWVFcnJvcigiQ2Fubm90IGV4aXQgJXIgd2l0aG91dCBlbnRlcmluZyBmaXJzdCIgJSBzZWxmKQot
ICAgICAgICBzdXBlcihXYXJuaW5nc1JlY29yZGVyLCBzZWxmKS5fX2V4aXRfXygqZXhjX2luZm8p
Ci0KLQotY2xhc3MgV2FybmluZ3NDaGVja2VyKFdhcm5pbmdzUmVjb3JkZXIpOgotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBleHBlY3RlZF93YXJuaW5nPU5vbmUsIG1hdGNoX2V4cHI9Tm9uZSk6Ci0g
ICAgICAgIHN1cGVyKFdhcm5pbmdzQ2hlY2tlciwgc2VsZikuX19pbml0X18oKQotCi0gICAgICAg
IG1zZyA9ICgiZXhjZXB0aW9ucyBtdXN0IGJlIG9sZC1zdHlsZSBjbGFzc2VzIG9yICIKLSAgICAg
ICAgICAgICAgICJkZXJpdmVkIGZyb20gV2FybmluZywgbm90ICVzIikKLSAgICAgICAgaWYgaXNp
bnN0YW5jZShleHBlY3RlZF93YXJuaW5nLCB0dXBsZSk6Ci0gICAgICAgICAgICBmb3IgZXhjIGlu
IGV4cGVjdGVkX3dhcm5pbmc6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGluc3BlY3QuaXNjbGFz
cyhleGMpOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IobXNnICUgdHlwZShl
eGMpKQotICAgICAgICBlbGlmIGluc3BlY3QuaXNjbGFzcyhleHBlY3RlZF93YXJuaW5nKToKLSAg
ICAgICAgICAgIGV4cGVjdGVkX3dhcm5pbmcgPSAoZXhwZWN0ZWRfd2FybmluZywpCi0gICAgICAg
IGVsaWYgZXhwZWN0ZWRfd2FybmluZyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHJhaXNlIFR5
cGVFcnJvcihtc2cgJSB0eXBlKGV4cGVjdGVkX3dhcm5pbmcpKQotCi0gICAgICAgIHNlbGYuZXhw
ZWN0ZWRfd2FybmluZyA9IGV4cGVjdGVkX3dhcm5pbmcKLSAgICAgICAgc2VsZi5tYXRjaF9leHBy
ID0gbWF0Y2hfZXhwcgotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICpleGNfaW5mbyk6Ci0gICAg
ICAgIHN1cGVyKFdhcm5pbmdzQ2hlY2tlciwgc2VsZikuX19leGl0X18oKmV4Y19pbmZvKQotCi0g
ICAgICAgICMgb25seSBjaGVjayBpZiB3ZSdyZSBub3QgY3VycmVudGx5IGhhbmRsaW5nIGFuIGV4
Y2VwdGlvbgotICAgICAgICBpZiBhbGwoYSBpcyBOb25lIGZvciBhIGluIGV4Y19pbmZvKToKLSAg
ICAgICAgICAgIGlmIHNlbGYuZXhwZWN0ZWRfd2FybmluZyBpcyBub3QgTm9uZToKLSAgICAgICAg
ICAgICAgICBpZiBub3QgYW55KGlzc3ViY2xhc3Moci5jYXRlZ29yeSwgc2VsZi5leHBlY3RlZF93
YXJuaW5nKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gc2VsZik6Ci0gICAg
ICAgICAgICAgICAgICAgIF9fdHJhY2ViYWNraGlkZV9fID0gVHJ1ZQotICAgICAgICAgICAgICAg
ICAgICBmYWlsKCJESUQgTk9UIFdBUk4uIE5vIHdhcm5pbmdzIG9mIHR5cGUgezB9IHdhcyBlbWl0
dGVkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBsaXN0IG9mIGVtaXR0ZWQgd2Fy
bmluZ3MgaXM6IHsxfS4iLmZvcm1hdCgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5leHBlY3RlZF93YXJuaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZWFjaC5t
ZXNzYWdlIGZvciBlYWNoIGluIHNlbGZdKSkKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYubWF0
Y2hfZXhwciBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZm9yIHIgaW4gc2VsZjoK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3Moci5jYXRlZ29yeSwgc2VsZi5l
eHBlY3RlZF93YXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiByZS5jb21w
aWxlKHNlbGYubWF0Y2hfZXhwcikuc2VhcmNoKHN0cihyLm1lc3NhZ2UpKToKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGZhaWwoIkRJRCBOT1QgV0FSTi4gTm8gd2FybmluZ3Mgb2Yg
dHlwZSB7MH0gbWF0Y2hpbmciCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgKCd7MX0n
KSB3YXMgZW1pdHRlZC4gVGhlIGxpc3Qgb2YgZW1pdHRlZCB3YXJuaW5ncyIKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIiBpczogezJ9LiIuZm9ybWF0KHNlbGYuZXhwZWN0ZWRfd2Fybmlu
Zywgc2VsZi5tYXRjaF9leHByLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgW2VhY2gubWVzc2FnZSBmb3IgZWFjaCBpbiBzZWxmXSkpCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3Jlc3VsdGxvZy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
cmVzdWx0bG9nLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjljMmQxZjY1MzYw
ZjM4ZDBkNjQxMjNkNjQ2NTdjMDcyNmEyNjY3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcmVzdWx0bG9nLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLSIiIiBsb2cgbWFjaGluZS1wYXJzZWFibGUgdGVz
dCBzZXNzaW9uIHJlc3VsdCBpbmZvcm1hdGlvbiBpbiBhIHBsYWluCi10ZXh0IGZpbGUuCi0iIiIK
LWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRf
ZnVuY3Rpb24KLQotaW1wb3J0IHB5Ci1pbXBvcnQgb3MKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlv
bihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJ0ZXJtaW5hbCByZXBvcnRp
bmciLCAicmVzdWx0bG9nIHBsdWdpbiBvcHRpb25zIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0t
cmVzdWx0bG9nJywgJy0tcmVzdWx0LWxvZycsIGFjdGlvbj0ic3RvcmUiLAotICAgICAgICAgICAg
ICAgICAgICBtZXRhdmFyPSJwYXRoIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAg
ICBoZWxwPSJERVBSRUNBVEVEIHBhdGggZm9yIG1hY2hpbmUtcmVhZGFibGUgcmVzdWx0IGxvZy4i
KQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgcmVzdWx0bG9nID0gY29u
ZmlnLm9wdGlvbi5yZXN1bHRsb2cKLSAgICAjIHByZXZlbnQgb3BlbmluZyByZXN1bHRsb2cgb24g
c2xhdmUgbm9kZXMgKHhkaXN0KQotICAgIGlmIHJlc3VsdGxvZyBhbmQgbm90IGhhc2F0dHIoY29u
ZmlnLCAnc2xhdmVpbnB1dCcpOgotICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKG9z
LnBhdGguYWJzcGF0aChyZXN1bHRsb2cpKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2Rpcihk
aXJuYW1lKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRpcm5hbWUpCi0gICAgICAgIGxvZ2Zp
bGUgPSBvcGVuKHJlc3VsdGxvZywgJ3cnLCAxKSAgIyBsaW5lIGJ1ZmZlcmVkCi0gICAgICAgIGNv
bmZpZy5fcmVzdWx0bG9nID0gUmVzdWx0TG9nKGNvbmZpZywgbG9nZmlsZSkKLSAgICAgICAgY29u
ZmlnLnBsdWdpbm1hbmFnZXIucmVnaXN0ZXIoY29uZmlnLl9yZXN1bHRsb2cpCi0KLSAgICAgICAg
ZnJvbSBfcHl0ZXN0LmRlcHJlY2F0ZWQgaW1wb3J0IFJFU1VMVF9MT0cKLSAgICAgICAgY29uZmln
Lndhcm4oJ0MxJywgUkVTVUxUX0xPRykKLQotCi1kZWYgcHl0ZXN0X3VuY29uZmlndXJlKGNvbmZp
Zyk6Ci0gICAgcmVzdWx0bG9nID0gZ2V0YXR0cihjb25maWcsICdfcmVzdWx0bG9nJywgTm9uZSkK
LSAgICBpZiByZXN1bHRsb2c6Ci0gICAgICAgIHJlc3VsdGxvZy5sb2dmaWxlLmNsb3NlKCkKLSAg
ICAgICAgZGVsIGNvbmZpZy5fcmVzdWx0bG9nCi0gICAgICAgIGNvbmZpZy5wbHVnaW5tYW5hZ2Vy
LnVucmVnaXN0ZXIocmVzdWx0bG9nKQotCi0KLWRlZiBnZW5lcmljX3BhdGgoaXRlbSk6Ci0gICAg
Y2hhaW4gPSBpdGVtLmxpc3RjaGFpbigpCi0gICAgZ3BhdGggPSBbY2hhaW5bMF0ubmFtZV0KLSAg
ICBmc3BhdGggPSBjaGFpblswXS5mc3BhdGgKLSAgICBmc3BhcnQgPSBGYWxzZQotICAgIGZvciBu
b2RlIGluIGNoYWluWzE6XToKLSAgICAgICAgbmV3ZnNwYXRoID0gbm9kZS5mc3BhdGgKLSAgICAg
ICAgaWYgbmV3ZnNwYXRoID09IGZzcGF0aDoKLSAgICAgICAgICAgIGlmIGZzcGFydDoKLSAgICAg
ICAgICAgICAgICBncGF0aC5hcHBlbmQoJzonKQotICAgICAgICAgICAgICAgIGZzcGFydCA9IEZh
bHNlCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGdwYXRoLmFwcGVuZCgnLicp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBncGF0aC5hcHBlbmQoJy8nKQotICAgICAgICAg
ICAgZnNwYXJ0ID0gVHJ1ZQotICAgICAgICBuYW1lID0gbm9kZS5uYW1lCi0gICAgICAgIGlmIG5h
bWVbMF0gaW4gJyhbJzoKLSAgICAgICAgICAgIGdwYXRoLnBvcCgpCi0gICAgICAgIGdwYXRoLmFw
cGVuZChuYW1lKQotICAgICAgICBmc3BhdGggPSBuZXdmc3BhdGgKLSAgICByZXR1cm4gJycuam9p
bihncGF0aCkKLQotCi1jbGFzcyBSZXN1bHRMb2cob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY29uZmlnLCBsb2dmaWxlKToKLSAgICAgICAgc2VsZi5jb25maWcgPSBjb25maWcKLSAg
ICAgICAgc2VsZi5sb2dmaWxlID0gbG9nZmlsZSAgIyBwcmVmZXJhYmx5IGxpbmUgYnVmZmVyZWQK
LQotICAgIGRlZiB3cml0ZV9sb2dfZW50cnkoc2VsZiwgdGVzdHBhdGgsIGxldHRlcmNvZGUsIGxv
bmdyZXByKToKLSAgICAgICAgcHJpbnQoIiVzICVzIiAlIChsZXR0ZXJjb2RlLCB0ZXN0cGF0aCks
IGZpbGU9c2VsZi5sb2dmaWxlKQotICAgICAgICBmb3IgbGluZSBpbiBsb25ncmVwci5zcGxpdGxp
bmVzKCk6Ci0gICAgICAgICAgICBwcmludCgiICVzIiAlIGxpbmUsIGZpbGU9c2VsZi5sb2dmaWxl
KQotCi0gICAgZGVmIGxvZ19vdXRjb21lKHNlbGYsIHJlcG9ydCwgbGV0dGVyY29kZSwgbG9uZ3Jl
cHIpOgotICAgICAgICB0ZXN0cGF0aCA9IGdldGF0dHIocmVwb3J0LCAnbm9kZWlkJywgTm9uZSkK
LSAgICAgICAgaWYgdGVzdHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHRlc3RwYXRoID0gcmVw
b3J0LmZzcGF0aAotICAgICAgICBzZWxmLndyaXRlX2xvZ19lbnRyeSh0ZXN0cGF0aCwgbGV0dGVy
Y29kZSwgbG9uZ3JlcHIpCi0KLSAgICBkZWYgcHl0ZXN0X3J1bnRlc3RfbG9ncmVwb3J0KHNlbGYs
IHJlcG9ydCk6Ci0gICAgICAgIGlmIHJlcG9ydC53aGVuICE9ICJjYWxsIiBhbmQgcmVwb3J0LnBh
c3NlZDoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICByZXMgPSBzZWxmLmNvbmZpZy5ob29r
LnB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQ9cmVwb3J0KQotICAgICAgICBjb2RlID0g
cmVzWzFdCi0gICAgICAgIGlmIGNvZGUgPT0gJ3gnOgotICAgICAgICAgICAgbG9uZ3JlcHIgPSBz
dHIocmVwb3J0LmxvbmdyZXByKQotICAgICAgICBlbGlmIGNvZGUgPT0gJ1gnOgotICAgICAgICAg
ICAgbG9uZ3JlcHIgPSAnJwotICAgICAgICBlbGlmIHJlcG9ydC5wYXNzZWQ6Ci0gICAgICAgICAg
ICBsb25ncmVwciA9ICIiCi0gICAgICAgIGVsaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAg
IGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwcikKLSAgICAgICAgZWxpZiByZXBvcnQuc2tp
cHBlZDoKLSAgICAgICAgICAgIGxvbmdyZXByID0gc3RyKHJlcG9ydC5sb25ncmVwclsyXSkKLSAg
ICAgICAgc2VsZi5sb2dfb3V0Y29tZShyZXBvcnQsIGNvZGUsIGxvbmdyZXByKQotCi0gICAgZGVm
IHB5dGVzdF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0gICAgICAgIGlmIG5vdCByZXBv
cnQucGFzc2VkOgotICAgICAgICAgICAgaWYgcmVwb3J0LmZhaWxlZDoKLSAgICAgICAgICAgICAg
ICBjb2RlID0gIkYiCi0gICAgICAgICAgICAgICAgbG9uZ3JlcHIgPSBzdHIocmVwb3J0Lmxvbmdy
ZXByKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBhc3NlcnQgcmVwb3J0LnNr
aXBwZWQKLSAgICAgICAgICAgICAgICBjb2RlID0gIlMiCi0gICAgICAgICAgICAgICAgbG9uZ3Jl
cHIgPSAiJXM6JWQ6ICVzIiAlIHJlcG9ydC5sb25ncmVwcgotICAgICAgICAgICAgc2VsZi5sb2df
b3V0Y29tZShyZXBvcnQsIGNvZGUsIGxvbmdyZXByKQotCi0gICAgZGVmIHB5dGVzdF9pbnRlcm5h
bGVycm9yKHNlbGYsIGV4Y3JlcHIpOgotICAgICAgICByZXByY3Jhc2ggPSBnZXRhdHRyKGV4Y3Jl
cHIsICdyZXByY3Jhc2gnLCBOb25lKQotICAgICAgICBwYXRoID0gZ2V0YXR0cihyZXByY3Jhc2gs
ICJwYXRoIiwgTm9uZSkKLSAgICAgICAgaWYgcGF0aCBpcyBOb25lOgotICAgICAgICAgICAgcGF0
aCA9ICJjd2Q6JXMiICUgcHkucGF0aC5sb2NhbCgpCi0gICAgICAgIHNlbGYud3JpdGVfbG9nX2Vu
dHJ5KHBhdGgsICchJywgc3RyKGV4Y3JlcHIpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC9ydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3J1bm5lci5weQpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggZTA3ZWQyYTI0OGIzMjIzOWUwNTczNjIzNDA3MThiNDUyMTdk
N2NmMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9fcHl0ZXN0L3J1bm5lci5weQorKysgL2Rldi9udWxsCkBAIC0xLDUwNiArMCwwIEBA
Ci0iIiIgYmFzaWMgY29sbGVjdCBhbmQgcnVudGVzdCBwcm90b2NvbCBpbXBsZW1lbnRhdGlvbnMg
IiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHBy
aW50X2Z1bmN0aW9uCi0KLWltcG9ydCBiZGIKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotZnJvbSB0
aW1lIGltcG9ydCB0aW1lCi0KLWltcG9ydCBweQotZnJvbSBfcHl0ZXN0Ll9jb2RlLmNvZGUgaW1w
b3J0IFRlcm1pbmFsUmVwciwgRXhjZXB0aW9uSW5mbwotZnJvbSBfcHl0ZXN0Lm91dGNvbWVzIGlt
cG9ydCBza2lwLCBTa2lwcGVkLCBURVNUX09VVENPTUUKLQotIwotIyBweXRlc3QgcGx1Z2luIGhv
b2tzCi0KLQotZGVmIHB5dGVzdF9hZGRvcHRpb24ocGFyc2VyKToKLSAgICBncm91cCA9IHBhcnNl
ci5nZXRncm91cCgidGVybWluYWwgcmVwb3J0aW5nIiwgInJlcG9ydGluZyIsIGFmdGVyPSJnZW5l
cmFsIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0tZHVyYXRpb25zJywKLSAgICAgICAgICAgICAg
ICAgICAgYWN0aW9uPSJzdG9yZSIsIHR5cGU9aW50LCBkZWZhdWx0PU5vbmUsIG1ldGF2YXI9Ik4i
LAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJzaG93IE4gc2xvd2VzdCBzZXR1cC90ZXN0IGR1
cmF0aW9ucyAoTj0wIGZvciBhbGwpLiIpLAotCi0KLWRlZiBweXRlc3RfdGVybWluYWxfc3VtbWFy
eSh0ZXJtaW5hbHJlcG9ydGVyKToKLSAgICBkdXJhdGlvbnMgPSB0ZXJtaW5hbHJlcG9ydGVyLmNv
bmZpZy5vcHRpb24uZHVyYXRpb25zCi0gICAgaWYgZHVyYXRpb25zIGlzIE5vbmU6Ci0gICAgICAg
IHJldHVybgotICAgIHRyID0gdGVybWluYWxyZXBvcnRlcgotICAgIGRsaXN0ID0gW10KLSAgICBm
b3IgcmVwbGlzdCBpbiB0ci5zdGF0cy52YWx1ZXMoKToKLSAgICAgICAgZm9yIHJlcCBpbiByZXBs
aXN0OgotICAgICAgICAgICAgaWYgaGFzYXR0cihyZXAsICdkdXJhdGlvbicpOgotICAgICAgICAg
ICAgICAgIGRsaXN0LmFwcGVuZChyZXApCi0gICAgaWYgbm90IGRsaXN0OgotICAgICAgICByZXR1
cm4KLSAgICBkbGlzdC5zb3J0KGtleT1sYW1iZGEgeDogeC5kdXJhdGlvbikKLSAgICBkbGlzdC5y
ZXZlcnNlKCkKLSAgICBpZiBub3QgZHVyYXRpb25zOgotICAgICAgICB0ci53cml0ZV9zZXAoIj0i
LCAic2xvd2VzdCB0ZXN0IGR1cmF0aW9ucyIpCi0gICAgZWxzZToKLSAgICAgICAgdHIud3JpdGVf
c2VwKCI9IiwgInNsb3dlc3QgJXMgdGVzdCBkdXJhdGlvbnMiICUgZHVyYXRpb25zKQotICAgICAg
ICBkbGlzdCA9IGRsaXN0WzpkdXJhdGlvbnNdCi0KLSAgICBmb3IgcmVwIGluIGRsaXN0OgotICAg
ICAgICBub2RlaWQgPSByZXAubm9kZWlkLnJlcGxhY2UoIjo6KCk6OiIsICI6OiIpCi0gICAgICAg
IHRyLndyaXRlX2xpbmUoIiUwMi4yZnMgJS04cyAlcyIgJQotICAgICAgICAgICAgICAgICAgICAg
IChyZXAuZHVyYXRpb24sIHJlcC53aGVuLCBub2RlaWQpKQotCi0KLWRlZiBweXRlc3Rfc2Vzc2lv
bnN0YXJ0KHNlc3Npb24pOgotICAgIHNlc3Npb24uX3NldHVwc3RhdGUgPSBTZXR1cFN0YXRlKCkK
LQotCi1kZWYgcHl0ZXN0X3Nlc3Npb25maW5pc2goc2Vzc2lvbik6Ci0gICAgc2Vzc2lvbi5fc2V0
dXBzdGF0ZS50ZWFyZG93bl9hbGwoKQotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9wcm90b2NvbChp
dGVtLCBuZXh0aXRlbSk6Ci0gICAgaXRlbS5paG9vay5weXRlc3RfcnVudGVzdF9sb2dzdGFydCgK
LSAgICAgICAgbm9kZWlkPWl0ZW0ubm9kZWlkLCBsb2NhdGlvbj1pdGVtLmxvY2F0aW9uLAotICAg
ICkKLSAgICBydW50ZXN0cHJvdG9jb2woaXRlbSwgbmV4dGl0ZW09bmV4dGl0ZW0pCi0gICAgcmV0
dXJuIFRydWUKLQotCi1kZWYgcnVudGVzdHByb3RvY29sKGl0ZW0sIGxvZz1UcnVlLCBuZXh0aXRl
bT1Ob25lKToKLSAgICBoYXNyZXF1ZXN0ID0gaGFzYXR0cihpdGVtLCAiX3JlcXVlc3QiKQotICAg
IGlmIGhhc3JlcXVlc3QgYW5kIG5vdCBpdGVtLl9yZXF1ZXN0OgotICAgICAgICBpdGVtLl9pbml0
cmVxdWVzdCgpCi0gICAgcmVwID0gY2FsbF9hbmRfcmVwb3J0KGl0ZW0sICJzZXR1cCIsIGxvZykK
LSAgICByZXBvcnRzID0gW3JlcF0KLSAgICBpZiByZXAucGFzc2VkOgotICAgICAgICBpZiBpdGVt
LmNvbmZpZy5vcHRpb24uc2V0dXBzaG93OgotICAgICAgICAgICAgc2hvd190ZXN0X2l0ZW0oaXRl
bSkKLSAgICAgICAgaWYgbm90IGl0ZW0uY29uZmlnLm9wdGlvbi5zZXR1cG9ubHk6Ci0gICAgICAg
ICAgICByZXBvcnRzLmFwcGVuZChjYWxsX2FuZF9yZXBvcnQoaXRlbSwgImNhbGwiLCBsb2cpKQot
ICAgIHJlcG9ydHMuYXBwZW5kKGNhbGxfYW5kX3JlcG9ydChpdGVtLCAidGVhcmRvd24iLCBsb2cs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5leHRpdGVtPW5leHRpdGVtKSkK
LSAgICAjIGFmdGVyIGFsbCB0ZWFyZG93biBob29rcyBoYXZlIGJlZW4gY2FsbGVkCi0gICAgIyB3
YW50IGZ1bmNhcmdzIGFuZCByZXF1ZXN0IGluZm8gdG8gZ28gYXdheQotICAgIGlmIGhhc3JlcXVl
c3Q6Ci0gICAgICAgIGl0ZW0uX3JlcXVlc3QgPSBGYWxzZQotICAgICAgICBpdGVtLmZ1bmNhcmdz
ID0gTm9uZQotICAgIHJldHVybiByZXBvcnRzCi0KLQotZGVmIHNob3dfdGVzdF9pdGVtKGl0ZW0p
OgotICAgICIiIlNob3cgdGVzdCBmdW5jdGlvbiwgcGFyYW1ldGVycyBhbmQgdGhlIGZpeHR1cmVz
IG9mIHRoZSB0ZXN0IGl0ZW0uIiIiCi0gICAgdHcgPSBpdGVtLmNvbmZpZy5nZXRfdGVybWluYWxf
d3JpdGVyKCkKLSAgICB0dy5saW5lKCkKLSAgICB0dy53cml0ZSgnICcgKiA4KQotICAgIHR3Lndy
aXRlKGl0ZW0uX25vZGVpZCkKLSAgICB1c2VkX2ZpeHR1cmVzID0gc29ydGVkKGl0ZW0uX2ZpeHR1
cmVpbmZvLm5hbWUyZml4dHVyZWRlZnMua2V5cygpKQotICAgIGlmIHVzZWRfZml4dHVyZXM6Ci0g
ICAgICAgIHR3LndyaXRlKCcgKGZpeHR1cmVzIHVzZWQ6IHswfSknLmZvcm1hdCgnLCAnLmpvaW4o
dXNlZF9maXh0dXJlcykpKQotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9zZXR1cChpdGVtKToKLSAg
ICBfdXBkYXRlX2N1cnJlbnRfdGVzdF92YXIoaXRlbSwgJ3NldHVwJykKLSAgICBpdGVtLnNlc3Np
b24uX3NldHVwc3RhdGUucHJlcGFyZShpdGVtKQotCi0KLWRlZiBweXRlc3RfcnVudGVzdF9jYWxs
KGl0ZW0pOgotICAgIF91cGRhdGVfY3VycmVudF90ZXN0X3ZhcihpdGVtLCAnY2FsbCcpCi0gICAg
dHJ5OgotICAgICAgICBpdGVtLnJ1bnRlc3QoKQotICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAg
ICAgICMgU3RvcmUgdHJhY2UgaW5mbyB0byBhbGxvdyBwb3N0bW9ydGVtIGRlYnVnZ2luZwotICAg
ICAgICB0eXBlLCB2YWx1ZSwgdGIgPSBzeXMuZXhjX2luZm8oKQotICAgICAgICB0YiA9IHRiLnRi
X25leHQgICMgU2tpcCAqdGhpcyogZnJhbWUKLSAgICAgICAgc3lzLmxhc3RfdHlwZSA9IHR5cGUK
LSAgICAgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgICAgICBzeXMubGFzdF90cmFjZWJh
Y2sgPSB0YgotICAgICAgICBkZWwgdGIgICMgR2V0IHJpZCBvZiBpdCBpbiB0aGlzIG5hbWVzcGFj
ZQotICAgICAgICByYWlzZQotCi0KLWRlZiBweXRlc3RfcnVudGVzdF90ZWFyZG93bihpdGVtLCBu
ZXh0aXRlbSk6Ci0gICAgX3VwZGF0ZV9jdXJyZW50X3Rlc3RfdmFyKGl0ZW0sICd0ZWFyZG93bicp
Ci0gICAgaXRlbS5zZXNzaW9uLl9zZXR1cHN0YXRlLnRlYXJkb3duX2V4YWN0KGl0ZW0sIG5leHRp
dGVtKQotICAgIF91cGRhdGVfY3VycmVudF90ZXN0X3ZhcihpdGVtLCBOb25lKQotCi0KLWRlZiBf
dXBkYXRlX2N1cnJlbnRfdGVzdF92YXIoaXRlbSwgd2hlbik6Ci0gICAgIiIiCi0gICAgVXBkYXRl
IFBZVEVTVF9DVVJSRU5UX1RFU1QgdG8gcmVmbGVjdCB0aGUgY3VycmVudCBpdGVtIGFuZCBzdGFn
ZS4KLQotICAgIElmIGBgd2hlbmBgIGlzIE5vbmUsIGRlbGV0ZSBQWVRFU1RfQ1VSUkVOVF9URVNU
IGZyb20gdGhlIGVudmlyb25tZW50LgotICAgICIiIgotICAgIHZhcl9uYW1lID0gJ1BZVEVTVF9D
VVJSRU5UX1RFU1QnCi0gICAgaWYgd2hlbjoKLSAgICAgICAgdmFsdWUgPSAnezB9ICh7MX0pJy5m
b3JtYXQoaXRlbS5ub2RlaWQsIHdoZW4pCi0gICAgICAgICMgZG9uJ3QgYWxsb3cgbnVsbCBieXRl
cyBvbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMgKHNlZSAjMjY0NCwgIzI5NTcpCi0gICAgICAgIHZh
bHVlID0gdmFsdWUucmVwbGFjZSgnXHgwMCcsICcobnVsbCknKQotICAgICAgICBvcy5lbnZpcm9u
W3Zhcl9uYW1lXSA9IHZhbHVlCi0gICAgZWxzZToKLSAgICAgICAgb3MuZW52aXJvbi5wb3AodmFy
X25hbWUpCi0KLQotZGVmIHB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQpOgotICAgIGlm
IHJlcG9ydC53aGVuIGluICgic2V0dXAiLCAidGVhcmRvd24iKToKLSAgICAgICAgaWYgcmVwb3J0
LmZhaWxlZDoKLSAgICAgICAgICAgICMgICAgICBjYXRlZ29yeSwgc2hvcnRsZXR0ZXIsIHZlcmJv
c2Utd29yZAotICAgICAgICAgICAgcmV0dXJuICJlcnJvciIsICJFIiwgIkVSUk9SIgotICAgICAg
ICBlbGlmIHJlcG9ydC5za2lwcGVkOgotICAgICAgICAgICAgcmV0dXJuICJza2lwcGVkIiwgInMi
LCAiU0tJUFBFRCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAiIiwgIiIsICIi
Ci0KLQotIwotIyBJbXBsZW1lbnRhdGlvbgotCi1kZWYgY2FsbF9hbmRfcmVwb3J0KGl0ZW0sIHdo
ZW4sIGxvZz1UcnVlLCAqKmt3ZHMpOgotICAgIGNhbGwgPSBjYWxsX3J1bnRlc3RfaG9vayhpdGVt
LCB3aGVuLCAqKmt3ZHMpCi0gICAgaG9vayA9IGl0ZW0uaWhvb2sKLSAgICByZXBvcnQgPSBob29r
LnB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbT1pdGVtLCBjYWxsPWNhbGwpCi0gICAgaWYg
bG9nOgotICAgICAgICBob29rLnB5dGVzdF9ydW50ZXN0X2xvZ3JlcG9ydChyZXBvcnQ9cmVwb3J0
KQotICAgIGlmIGNoZWNrX2ludGVyYWN0aXZlX2V4Y2VwdGlvbihjYWxsLCByZXBvcnQpOgotICAg
ICAgICBob29rLnB5dGVzdF9leGNlcHRpb25faW50ZXJhY3Qobm9kZT1pdGVtLCBjYWxsPWNhbGws
IHJlcG9ydD1yZXBvcnQpCi0gICAgcmV0dXJuIHJlcG9ydAotCi0KLWRlZiBjaGVja19pbnRlcmFj
dGl2ZV9leGNlcHRpb24oY2FsbCwgcmVwb3J0KToKLSAgICByZXR1cm4gY2FsbC5leGNpbmZvIGFu
ZCBub3QgKAotICAgICAgICBoYXNhdHRyKHJlcG9ydCwgIndhc3hmYWlsIikgb3IKLSAgICAgICAg
Y2FsbC5leGNpbmZvLmVycmlzaW5zdGFuY2Uoc2tpcC5FeGNlcHRpb24pIG9yCi0gICAgICAgIGNh
bGwuZXhjaW5mby5lcnJpc2luc3RhbmNlKGJkYi5CZGJRdWl0KSkKLQotCi1kZWYgY2FsbF9ydW50
ZXN0X2hvb2soaXRlbSwgd2hlbiwgKiprd2RzKToKLSAgICBob29rbmFtZSA9ICJweXRlc3RfcnVu
dGVzdF8iICsgd2hlbgotICAgIGlob29rID0gZ2V0YXR0cihpdGVtLmlob29rLCBob29rbmFtZSkK
LSAgICByZXR1cm4gQ2FsbEluZm8obGFtYmRhOiBpaG9vayhpdGVtPWl0ZW0sICoqa3dkcyksIHdo
ZW49d2hlbikKLQotCi1jbGFzcyBDYWxsSW5mbzoKLSAgICAiIiIgUmVzdWx0L0V4Y2VwdGlvbiBp
bmZvIGEgZnVuY3Rpb24gaW52b2NhdGlvbi4gIiIiCi0gICAgIzogTm9uZSBvciBFeGNlcHRpb25J
bmZvIG9iamVjdC4KLSAgICBleGNpbmZvID0gTm9uZQotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IGZ1bmMsIHdoZW4pOgotICAgICAgICAjOiBjb250ZXh0IG9mIGludm9jYXRpb246IG9uZSBvZiAi
c2V0dXAiLCAiY2FsbCIsCi0gICAgICAgICM6ICJ0ZWFyZG93biIsICJtZW1vY29sbGVjdCIKLSAg
ICAgICAgc2VsZi53aGVuID0gd2hlbgotICAgICAgICBzZWxmLnN0YXJ0ID0gdGltZSgpCi0gICAg
ICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gZnVuYygpCi0gICAgICAgIGV4Y2Vw
dCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHNlbGYuc3RvcCA9IHRpbWUoKQotICAg
ICAgICAgICAgcmFpc2UKLSAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAgICAgICBzZWxm
LmV4Y2luZm8gPSBFeGNlcHRpb25JbmZvKCkKLSAgICAgICAgc2VsZi5zdG9wID0gdGltZSgpCi0K
LSAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuZXhjaW5mbzoKLSAgICAg
ICAgICAgIHN0YXR1cyA9ICJleGNlcHRpb246ICVzIiAlIHN0cihzZWxmLmV4Y2luZm8udmFsdWUp
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzdGF0dXMgPSAicmVzdWx0OiAlciIgJSAoc2Vs
Zi5yZXN1bHQsKQotICAgICAgICByZXR1cm4gIjxDYWxsSW5mbyB3aGVuPSVyICVzPiIgJSAoc2Vs
Zi53aGVuLCBzdGF0dXMpCi0KLQotZGVmIGdldHNsYXZlaW5mb2xpbmUobm9kZSk6Ci0gICAgdHJ5
OgotICAgICAgICByZXR1cm4gbm9kZS5fc2xhdmVpbmZvY2FjaGUKLSAgICBleGNlcHQgQXR0cmli
dXRlRXJyb3I6Ci0gICAgICAgIGQgPSBub2RlLnNsYXZlaW5mbwotICAgICAgICB2ZXIgPSAiJXMu
JXMuJXMiICUgZFsndmVyc2lvbl9pbmZvJ11bOjNdCi0gICAgICAgIG5vZGUuX3NsYXZlaW5mb2Nh
Y2hlID0gcyA9ICJbJXNdICVzIC0tIFB5dGhvbiAlcyAlcyIgJSAoCi0gICAgICAgICAgICBkWydp
ZCddLCBkWydzeXNwbGF0Zm9ybSddLCB2ZXIsIGRbJ2V4ZWN1dGFibGUnXSkKLSAgICAgICAgcmV0
dXJuIHMKLQotCi1jbGFzcyBCYXNlUmVwb3J0KG9iamVjdCk6Ci0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgKiprdyk6Ci0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGt3KQotCi0gICAgZGVm
IHRvdGVybWluYWwoc2VsZiwgb3V0KToKLSAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnbm9kZScp
OgotICAgICAgICAgICAgb3V0LmxpbmUoZ2V0c2xhdmVpbmZvbGluZShzZWxmLm5vZGUpKQotCi0g
ICAgICAgIGxvbmdyZXByID0gc2VsZi5sb25ncmVwcgotICAgICAgICBpZiBsb25ncmVwciBpcyBO
b25lOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgaWYgaGFzYXR0cihsb25ncmVwciwg
J3RvdGVybWluYWwnKToKLSAgICAgICAgICAgIGxvbmdyZXByLnRvdGVybWluYWwob3V0KQotICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dC5saW5lKGxv
bmdyZXByKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKLSAgICAgICAg
ICAgICAgICBvdXQubGluZSgiPHVucHJpbnRhYmxlIGxvbmdyZXByPiIpCi0KLSAgICBkZWYgZ2V0
X3NlY3Rpb25zKHNlbGYsIHByZWZpeCk6Ci0gICAgICAgIGZvciBuYW1lLCBjb250ZW50IGluIHNl
bGYuc2VjdGlvbnM6Ci0gICAgICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgocHJlZml4KToKLSAg
ICAgICAgICAgICAgICB5aWVsZCBwcmVmaXgsIGNvbnRlbnQKLQotICAgIEBwcm9wZXJ0eQotICAg
IGRlZiBsb25ncmVwcnRleHQoc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBSZWFkLW9ubHkg
cHJvcGVydHkgdGhhdCByZXR1cm5zIHRoZSBmdWxsIHN0cmluZyByZXByZXNlbnRhdGlvbgotICAg
ICAgICBvZiBgYGxvbmdyZXByYGAuCi0KLSAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy4wCi0g
ICAgICAgICIiIgotICAgICAgICB0dyA9IHB5LmlvLlRlcm1pbmFsV3JpdGVyKHN0cmluZ2lvPVRy
dWUpCi0gICAgICAgIHR3Lmhhc21hcmt1cCA9IEZhbHNlCi0gICAgICAgIHNlbGYudG90ZXJtaW5h
bCh0dykKLSAgICAgICAgZXhjID0gdHcuc3RyaW5naW8uZ2V0dmFsdWUoKQotICAgICAgICByZXR1
cm4gZXhjLnN0cmlwKCkKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBjYXBzdGRvdXQoc2VsZik6
Ci0gICAgICAgICIiIlJldHVybiBjYXB0dXJlZCB0ZXh0IGZyb20gc3Rkb3V0LCBpZiBjYXB0dXJp
bmcgaXMgZW5hYmxlZAotCi0gICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMAotICAgICAgICAi
IiIKLSAgICAgICAgcmV0dXJuICcnLmpvaW4oY29udGVudCBmb3IgKHByZWZpeCwgY29udGVudCkg
aW4gc2VsZi5nZXRfc2VjdGlvbnMoJ0NhcHR1cmVkIHN0ZG91dCcpKQotCi0gICAgQHByb3BlcnR5
Ci0gICAgZGVmIGNhcHN0ZGVycihzZWxmKToKLSAgICAgICAgIiIiUmV0dXJuIGNhcHR1cmVkIHRl
eHQgZnJvbSBzdGRlcnIsIGlmIGNhcHR1cmluZyBpcyBlbmFibGVkCi0KLSAgICAgICAgLi4gdmVy
c2lvbmFkZGVkOjogMy4wCi0gICAgICAgICIiIgotICAgICAgICByZXR1cm4gJycuam9pbihjb250
ZW50IGZvciAocHJlZml4LCBjb250ZW50KSBpbiBzZWxmLmdldF9zZWN0aW9ucygnQ2FwdHVyZWQg
c3RkZXJyJykpCi0KLSAgICBwYXNzZWQgPSBwcm9wZXJ0eShsYW1iZGEgeDogeC5vdXRjb21lID09
ICJwYXNzZWQiKQotICAgIGZhaWxlZCA9IHByb3BlcnR5KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0g
ImZhaWxlZCIpCi0gICAgc2tpcHBlZCA9IHByb3BlcnR5KGxhbWJkYSB4OiB4Lm91dGNvbWUgPT0g
InNraXBwZWQiKQotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIGZzcGF0aChzZWxmKToKLSAgICAg
ICAgcmV0dXJuIHNlbGYubm9kZWlkLnNwbGl0KCI6OiIpWzBdCi0KLQotZGVmIHB5dGVzdF9ydW50
ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6Ci0gICAgd2hlbiA9IGNhbGwud2hlbgotICAgIGR1
cmF0aW9uID0gY2FsbC5zdG9wIC0gY2FsbC5zdGFydAotICAgIGtleXdvcmRzID0gZGljdChbKHgs
IDEpIGZvciB4IGluIGl0ZW0ua2V5d29yZHNdKQotICAgIGV4Y2luZm8gPSBjYWxsLmV4Y2luZm8K
LSAgICBzZWN0aW9ucyA9IFtdCi0gICAgaWYgbm90IGNhbGwuZXhjaW5mbzoKLSAgICAgICAgb3V0
Y29tZSA9ICJwYXNzZWQiCi0gICAgICAgIGxvbmdyZXByID0gTm9uZQotICAgIGVsc2U6Ci0gICAg
ICAgIGlmIG5vdCBpc2luc3RhbmNlKGV4Y2luZm8sIEV4Y2VwdGlvbkluZm8pOgotICAgICAgICAg
ICAgb3V0Y29tZSA9ICJmYWlsZWQiCi0gICAgICAgICAgICBsb25ncmVwciA9IGV4Y2luZm8KLSAg
ICAgICAgZWxpZiBleGNpbmZvLmVycmlzaW5zdGFuY2Uoc2tpcC5FeGNlcHRpb24pOgotICAgICAg
ICAgICAgb3V0Y29tZSA9ICJza2lwcGVkIgotICAgICAgICAgICAgciA9IGV4Y2luZm8uX2dldHJl
cHJjcmFzaCgpCi0gICAgICAgICAgICBsb25ncmVwciA9IChzdHIoci5wYXRoKSwgci5saW5lbm8s
IHIubWVzc2FnZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIG91dGNvbWUgPSAiZmFpbGVk
IgotICAgICAgICAgICAgaWYgY2FsbC53aGVuID09ICJjYWxsIjoKLSAgICAgICAgICAgICAgICBs
b25ncmVwciA9IGl0ZW0ucmVwcl9mYWlsdXJlKGV4Y2luZm8pCi0gICAgICAgICAgICBlbHNlOiAg
IyBleGNlcHRpb24gaW4gc2V0dXAgb3IgdGVhcmRvd24KLSAgICAgICAgICAgICAgICBsb25ncmVw
ciA9IGl0ZW0uX3JlcHJfZmFpbHVyZV9weShleGNpbmZvLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxlPWl0ZW0uY29uZmlnLm9wdGlvbi50YnN0
eWxlKQotICAgIGZvciByd2hlbiwga2V5LCBjb250ZW50IGluIGl0ZW0uX3JlcG9ydF9zZWN0aW9u
czoKLSAgICAgICAgc2VjdGlvbnMuYXBwZW5kKCgiQ2FwdHVyZWQgJXMgJXMiICUgKGtleSwgcndo
ZW4pLCBjb250ZW50KSkKLSAgICByZXR1cm4gVGVzdFJlcG9ydChpdGVtLm5vZGVpZCwgaXRlbS5s
b2NhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICBrZXl3b3Jkcywgb3V0Y29tZSwgbG9uZ3Jl
cHIsIHdoZW4sCi0gICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbnMsIGR1cmF0aW9uKQotCi0K
LWNsYXNzIFRlc3RSZXBvcnQoQmFzZVJlcG9ydCk6Ci0gICAgIiIiIEJhc2ljIHRlc3QgcmVwb3J0
IG9iamVjdCAoYWxzbyB1c2VkIGZvciBzZXR1cCBhbmQgdGVhcmRvd24gY2FsbHMgaWYKLSAgICB0
aGV5IGZhaWwpLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5vZGVpZCwgbG9j
YXRpb24sIGtleXdvcmRzLCBvdXRjb21lLAotICAgICAgICAgICAgICAgICBsb25ncmVwciwgd2hl
biwgc2VjdGlvbnM9KCksIGR1cmF0aW9uPTAsICoqZXh0cmEpOgotICAgICAgICAjOiBub3JtYWxp
emVkIGNvbGxlY3Rpb24gbm9kZSBpZAotICAgICAgICBzZWxmLm5vZGVpZCA9IG5vZGVpZAotCi0g
ICAgICAgICM6IGEgKGZpbGVzeXN0ZW1wYXRoLCBsaW5lbm8sIGRvbWFpbmluZm8pIHR1cGxlIGlu
ZGljYXRpbmcgdGhlCi0gICAgICAgICM6IGFjdHVhbCBsb2NhdGlvbiBvZiBhIHRlc3QgaXRlbSAt
IGl0IG1pZ2h0IGJlIGRpZmZlcmVudCBmcm9tIHRoZQotICAgICAgICAjOiBjb2xsZWN0ZWQgb25l
IGUuZy4gaWYgYSBtZXRob2QgaXMgaW5oZXJpdGVkIGZyb20gYSBkaWZmZXJlbnQgbW9kdWxlLgot
ICAgICAgICBzZWxmLmxvY2F0aW9uID0gbG9jYXRpb24KLQotICAgICAgICAjOiBhIG5hbWUgLT4g
dmFsdWUgZGljdGlvbmFyeSBjb250YWluaW5nIGFsbCBrZXl3b3JkcyBhbmQKLSAgICAgICAgIzog
bWFya2VycyBhc3NvY2lhdGVkIHdpdGggYSB0ZXN0IGludm9jYXRpb24uCi0gICAgICAgIHNlbGYu
a2V5d29yZHMgPSBrZXl3b3JkcwotCi0gICAgICAgICM6IHRlc3Qgb3V0Y29tZSwgYWx3YXlzIG9u
ZSBvZiAicGFzc2VkIiwgImZhaWxlZCIsICJza2lwcGVkIi4KLSAgICAgICAgc2VsZi5vdXRjb21l
ID0gb3V0Y29tZQotCi0gICAgICAgICM6IE5vbmUgb3IgYSBmYWlsdXJlIHJlcHJlc2VudGF0aW9u
LgotICAgICAgICBzZWxmLmxvbmdyZXByID0gbG9uZ3JlcHIKLQotICAgICAgICAjOiBvbmUgb2Yg
J3NldHVwJywgJ2NhbGwnLCAndGVhcmRvd24nIHRvIGluZGljYXRlIHJ1bnRlc3QgcGhhc2UuCi0g
ICAgICAgIHNlbGYud2hlbiA9IHdoZW4KLQotICAgICAgICAjOiBsaXN0IG9mIHBhaXJzIGBgKHN0
ciwgc3RyKWBgIG9mIGV4dHJhIGluZm9ybWF0aW9uIHdoaWNoIG5lZWRzIHRvCi0gICAgICAgICM6
IG1hcnNoYWxsYWJsZS4gVXNlZCBieSBweXRlc3QgdG8gYWRkIGNhcHR1cmVkIHRleHQKLSAgICAg
ICAgIzogZnJvbSBgYHN0ZG91dGBgIGFuZCBgYHN0ZGVycmBgLCBidXQgbWF5IGJlIHVzZWQgYnkg
b3RoZXIgcGx1Z2lucwotICAgICAgICAjOiB0byBhZGQgYXJiaXRyYXJ5IGluZm9ybWF0aW9uIHRv
IHJlcG9ydHMuCi0gICAgICAgIHNlbGYuc2VjdGlvbnMgPSBsaXN0KHNlY3Rpb25zKQotCi0gICAg
ICAgICM6IHRpbWUgaXQgdG9vayB0byBydW4ganVzdCB0aGUgdGVzdAotICAgICAgICBzZWxmLmR1
cmF0aW9uID0gZHVyYXRpb24KLQotICAgICAgICBzZWxmLl9fZGljdF9fLnVwZGF0ZShleHRyYSkK
LQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuICI8VGVzdFJlcG9ydCAl
ciB3aGVuPSVyIG91dGNvbWU9JXI+IiAlICgKLSAgICAgICAgICAgIHNlbGYubm9kZWlkLCBzZWxm
LndoZW4sIHNlbGYub3V0Y29tZSkKLQotCi1jbGFzcyBUZWFyZG93bkVycm9yUmVwb3J0KEJhc2VS
ZXBvcnQpOgotICAgIG91dGNvbWUgPSAiZmFpbGVkIgotICAgIHdoZW4gPSAidGVhcmRvd24iCi0K
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9uZ3JlcHIsICoqZXh0cmEpOgotICAgICAgICBzZWxm
LmxvbmdyZXByID0gbG9uZ3JlcHIKLSAgICAgICAgc2VsZi5zZWN0aW9ucyA9IFtdCi0gICAgICAg
IHNlbGYuX19kaWN0X18udXBkYXRlKGV4dHJhKQotCi0KLWRlZiBweXRlc3RfbWFrZV9jb2xsZWN0
X3JlcG9ydChjb2xsZWN0b3IpOgotICAgIGNhbGwgPSBDYWxsSW5mbygKLSAgICAgICAgbGFtYmRh
OiBsaXN0KGNvbGxlY3Rvci5jb2xsZWN0KCkpLAotICAgICAgICAnY29sbGVjdCcpCi0gICAgbG9u
Z3JlcHIgPSBOb25lCi0gICAgaWYgbm90IGNhbGwuZXhjaW5mbzoKLSAgICAgICAgb3V0Y29tZSA9
ICJwYXNzZWQiCi0gICAgZWxzZToKLSAgICAgICAgZnJvbSBfcHl0ZXN0IGltcG9ydCBub3NlCi0g
ICAgICAgIHNraXBfZXhjZXB0aW9ucyA9IChTa2lwcGVkLCkgKyBub3NlLmdldF9za2lwX2V4Y2Vw
dGlvbnMoKQotICAgICAgICBpZiBjYWxsLmV4Y2luZm8uZXJyaXNpbnN0YW5jZShza2lwX2V4Y2Vw
dGlvbnMpOgotICAgICAgICAgICAgb3V0Y29tZSA9ICJza2lwcGVkIgotICAgICAgICAgICAgciA9
IGNvbGxlY3Rvci5fcmVwcl9mYWlsdXJlX3B5KGNhbGwuZXhjaW5mbywgImxpbmUiKS5yZXByY3Jh
c2gKLSAgICAgICAgICAgIGxvbmdyZXByID0gKHN0cihyLnBhdGgpLCByLmxpbmVubywgci5tZXNz
YWdlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgb3V0Y29tZSA9ICJmYWlsZWQiCi0gICAg
ICAgICAgICBlcnJvcmluZm8gPSBjb2xsZWN0b3IucmVwcl9mYWlsdXJlKGNhbGwuZXhjaW5mbykK
LSAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGVycm9yaW5mbywgInRvdGVybWluYWwiKToKLSAg
ICAgICAgICAgICAgICBlcnJvcmluZm8gPSBDb2xsZWN0RXJyb3JSZXByKGVycm9yaW5mbykKLSAg
ICAgICAgICAgIGxvbmdyZXByID0gZXJyb3JpbmZvCi0gICAgcmVwID0gQ29sbGVjdFJlcG9ydChj
b2xsZWN0b3Iubm9kZWlkLCBvdXRjb21lLCBsb25ncmVwciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGdldGF0dHIoY2FsbCwgJ3Jlc3VsdCcsIE5vbmUpKQotICAgIHJlcC5jYWxsID0gY2FsbCAg
IyBzZWUgY29sbGVjdF9vbmVfbm9kZQotICAgIHJldHVybiByZXAKLQotCi1jbGFzcyBDb2xsZWN0
UmVwb3J0KEJhc2VSZXBvcnQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2RlaWQsIG91dGNv
bWUsIGxvbmdyZXByLCByZXN1bHQsCi0gICAgICAgICAgICAgICAgIHNlY3Rpb25zPSgpLCAqKmV4
dHJhKToKLSAgICAgICAgc2VsZi5ub2RlaWQgPSBub2RlaWQKLSAgICAgICAgc2VsZi5vdXRjb21l
ID0gb3V0Y29tZQotICAgICAgICBzZWxmLmxvbmdyZXByID0gbG9uZ3JlcHIKLSAgICAgICAgc2Vs
Zi5yZXN1bHQgPSByZXN1bHQgb3IgW10KLSAgICAgICAgc2VsZi5zZWN0aW9ucyA9IGxpc3Qoc2Vj
dGlvbnMpCi0gICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGV4dHJhKQotCi0gICAgQHByb3Bl
cnR5Ci0gICAgZGVmIGxvY2F0aW9uKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuZnNwYXRo
LCBOb25lLCBzZWxmLmZzcGF0aCkKLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAg
cmV0dXJuICI8Q29sbGVjdFJlcG9ydCAlciBsZW5yZXN1bHQ9JXMgb3V0Y29tZT0lcj4iICUgKAot
ICAgICAgICAgICAgc2VsZi5ub2RlaWQsIGxlbihzZWxmLnJlc3VsdCksIHNlbGYub3V0Y29tZSkK
LQotCi1jbGFzcyBDb2xsZWN0RXJyb3JSZXByKFRlcm1pbmFsUmVwcik6Ci0gICAgZGVmIF9faW5p
dF9fKHNlbGYsIG1zZyk6Ci0gICAgICAgIHNlbGYubG9uZ3JlcHIgPSBtc2cKLQotICAgIGRlZiB0
b3Rlcm1pbmFsKHNlbGYsIG91dCk6Ci0gICAgICAgIG91dC5saW5lKHNlbGYubG9uZ3JlcHIsIHJl
ZD1UcnVlKQotCi0KLWNsYXNzIFNldHVwU3RhdGUob2JqZWN0KToKLSAgICAiIiIgc2hhcmVkIHN0
YXRlIGZvciBzZXR0aW5nIHVwL3RlYXJpbmcgZG93biB0ZXN0IGl0ZW1zIG9yIGNvbGxlY3RvcnMu
ICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLnN0YWNrID0gW10K
LSAgICAgICAgc2VsZi5fZmluYWxpemVycyA9IHt9Ci0KLSAgICBkZWYgYWRkZmluYWxpemVyKHNl
bGYsIGZpbmFsaXplciwgY29saXRlbSk6Ci0gICAgICAgICIiIiBhdHRhY2ggYSBmaW5hbGl6ZXIg
dG8gdGhlIGdpdmVuIGNvbGl0ZW0uCi0gICAgICAgIGlmIGNvbGl0ZW0gaXMgTm9uZSwgdGhpcyB3
aWxsIGFkZCBhIGZpbmFsaXplciB0aGF0Ci0gICAgICAgIGlzIGNhbGxlZCBhdCB0aGUgZW5kIG9m
IHRlYXJkb3duX2FsbCgpLgotICAgICAgICAiIiIKLSAgICAgICAgYXNzZXJ0IGNvbGl0ZW0gYW5k
IG5vdCBpc2luc3RhbmNlKGNvbGl0ZW0sIHR1cGxlKQotICAgICAgICBhc3NlcnQgY2FsbGFibGUo
ZmluYWxpemVyKQotICAgICAgICAjIGFzc2VydCBjb2xpdGVtIGluIHNlbGYuc3RhY2sgICMgc29t
ZSB1bml0IHRlc3RzIGRvbid0IHNldHVwIHN0YWNrIDovCi0gICAgICAgIHNlbGYuX2ZpbmFsaXpl
cnMuc2V0ZGVmYXVsdChjb2xpdGVtLCBbXSkuYXBwZW5kKGZpbmFsaXplcikKLQotICAgIGRlZiBf
cG9wX2FuZF90ZWFyZG93bihzZWxmKToKLSAgICAgICAgY29saXRlbSA9IHNlbGYuc3RhY2sucG9w
KCkKLSAgICAgICAgc2VsZi5fdGVhcmRvd25fd2l0aF9maW5hbGl6YXRpb24oY29saXRlbSkKLQot
ICAgIGRlZiBfY2FsbGZpbmFsaXplcnMoc2VsZiwgY29saXRlbSk6Ci0gICAgICAgIGZpbmFsaXpl
cnMgPSBzZWxmLl9maW5hbGl6ZXJzLnBvcChjb2xpdGVtLCBOb25lKQotICAgICAgICBleGMgPSBO
b25lCi0gICAgICAgIHdoaWxlIGZpbmFsaXplcnM6Ci0gICAgICAgICAgICBmaW4gPSBmaW5hbGl6
ZXJzLnBvcCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZmluKCkKLSAgICAg
ICAgICAgIGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAgICAgICAgICAgICAgIyBYWFggT25seSBm
aXJzdCBleGNlcHRpb24gd2lsbCBiZSBzZWVuIGJ5IHVzZXIsCi0gICAgICAgICAgICAgICAgIyAg
ICAgaWRlYWxseSBhbGwgc2hvdWxkIGJlIHJlcG9ydGVkLgotICAgICAgICAgICAgICAgIGlmIGV4
YyBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBleGMgPSBzeXMuZXhjX2luZm8oKQotICAg
ICAgICBpZiBleGM6Ci0gICAgICAgICAgICBweS5idWlsdGluLl9yZXJhaXNlKCpleGMpCi0KLSAg
ICBkZWYgX3RlYXJkb3duX3dpdGhfZmluYWxpemF0aW9uKHNlbGYsIGNvbGl0ZW0pOgotICAgICAg
ICBzZWxmLl9jYWxsZmluYWxpemVycyhjb2xpdGVtKQotICAgICAgICBpZiBoYXNhdHRyKGNvbGl0
ZW0sICJ0ZWFyZG93biIpOgotICAgICAgICAgICAgY29saXRlbS50ZWFyZG93bigpCi0gICAgICAg
IGZvciBjb2xpdGVtIGluIHNlbGYuX2ZpbmFsaXplcnM6Ci0gICAgICAgICAgICBhc3NlcnQgY29s
aXRlbSBpcyBOb25lIG9yIGNvbGl0ZW0gaW4gc2VsZi5zdGFjayBcCi0gICAgICAgICAgICAgICAg
b3IgaXNpbnN0YW5jZShjb2xpdGVtLCB0dXBsZSkKLQotICAgIGRlZiB0ZWFyZG93bl9hbGwoc2Vs
Zik6Ci0gICAgICAgIHdoaWxlIHNlbGYuc3RhY2s6Ci0gICAgICAgICAgICBzZWxmLl9wb3BfYW5k
X3RlYXJkb3duKCkKLSAgICAgICAgZm9yIGtleSBpbiBsaXN0KHNlbGYuX2ZpbmFsaXplcnMpOgot
ICAgICAgICAgICAgc2VsZi5fdGVhcmRvd25fd2l0aF9maW5hbGl6YXRpb24oa2V5KQotICAgICAg
ICBhc3NlcnQgbm90IHNlbGYuX2ZpbmFsaXplcnMKLQotICAgIGRlZiB0ZWFyZG93bl9leGFjdChz
ZWxmLCBpdGVtLCBuZXh0aXRlbSk6Ci0gICAgICAgIG5lZWRlZF9jb2xsZWN0b3JzID0gbmV4dGl0
ZW0gYW5kIG5leHRpdGVtLmxpc3RjaGFpbigpIG9yIFtdCi0gICAgICAgIHNlbGYuX3RlYXJkb3du
X3Rvd2FyZHMobmVlZGVkX2NvbGxlY3RvcnMpCi0KLSAgICBkZWYgX3RlYXJkb3duX3Rvd2FyZHMo
c2VsZiwgbmVlZGVkX2NvbGxlY3RvcnMpOgotICAgICAgICB3aGlsZSBzZWxmLnN0YWNrOgotICAg
ICAgICAgICAgaWYgc2VsZi5zdGFjayA9PSBuZWVkZWRfY29sbGVjdG9yc1s6bGVuKHNlbGYuc3Rh
Y2spXToKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgc2VsZi5fcG9wX2FuZF90
ZWFyZG93bigpCi0KLSAgICBkZWYgcHJlcGFyZShzZWxmLCBjb2xpdGVtKToKLSAgICAgICAgIiIi
IHNldHVwIG9iamVjdHMgYWxvbmcgdGhlIGNvbGxlY3RvciBjaGFpbiB0byB0aGUgdGVzdC1tZXRo
b2QKLSAgICAgICAgICAgIGFuZCB0ZWFyZG93biBwcmV2aW91c2x5IHNldHVwIG9iamVjdHMuIiIi
Ci0gICAgICAgIG5lZWRlZF9jb2xsZWN0b3JzID0gY29saXRlbS5saXN0Y2hhaW4oKQotICAgICAg
ICBzZWxmLl90ZWFyZG93bl90b3dhcmRzKG5lZWRlZF9jb2xsZWN0b3JzKQotCi0gICAgICAgICMg
Y2hlY2sgaWYgdGhlIGxhc3QgY29sbGVjdGlvbiBub2RlIGhhcyByYWlzZWQgYW4gZXJyb3IKLSAg
ICAgICAgZm9yIGNvbCBpbiBzZWxmLnN0YWNrOgotICAgICAgICAgICAgaWYgaGFzYXR0cihjb2ws
ICdfcHJlcGFyZV9leGMnKToKLSAgICAgICAgICAgICAgICBweS5idWlsdGluLl9yZXJhaXNlKCpj
b2wuX3ByZXBhcmVfZXhjKQotICAgICAgICBmb3IgY29sIGluIG5lZWRlZF9jb2xsZWN0b3JzW2xl
bihzZWxmLnN0YWNrKTpdOgotICAgICAgICAgICAgc2VsZi5zdGFjay5hcHBlbmQoY29sKQotICAg
ICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNvbC5zZXR1cCgpCi0gICAgICAgICAgICBl
eGNlcHQgVEVTVF9PVVRDT01FOgotICAgICAgICAgICAgICAgIGNvbC5fcHJlcGFyZV9leGMgPSBz
eXMuZXhjX2luZm8oKQotICAgICAgICAgICAgICAgIHJhaXNlCi0KLQotZGVmIGNvbGxlY3Rfb25l
X25vZGUoY29sbGVjdG9yKToKLSAgICBpaG9vayA9IGNvbGxlY3Rvci5paG9vawotICAgIGlob29r
LnB5dGVzdF9jb2xsZWN0c3RhcnQoY29sbGVjdG9yPWNvbGxlY3RvcikKLSAgICByZXAgPSBpaG9v
ay5weXRlc3RfbWFrZV9jb2xsZWN0X3JlcG9ydChjb2xsZWN0b3I9Y29sbGVjdG9yKQotICAgIGNh
bGwgPSByZXAuX19kaWN0X18ucG9wKCJjYWxsIiwgTm9uZSkKLSAgICBpZiBjYWxsIGFuZCBjaGVj
a19pbnRlcmFjdGl2ZV9leGNlcHRpb24oY2FsbCwgcmVwKToKLSAgICAgICAgaWhvb2sucHl0ZXN0
X2V4Y2VwdGlvbl9pbnRlcmFjdChub2RlPWNvbGxlY3RvciwgY2FsbD1jYWxsLCByZXBvcnQ9cmVw
KQotICAgIHJldHVybiByZXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvc2V0dXBv
bmx5LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9zZXR1cG9ubHkucHkKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGExYzc0NTdkN2U1MDZjMDdiN2MxNzVlYjhjOTQ3MGViNjFiNWZkN2Eu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9zZXR1cG9ubHkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3NCArMCwwIEBACi1m
cm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1
bmN0aW9uCi0KLWltcG9ydCBweXRlc3QKLWltcG9ydCBzeXMKLQotCi1kZWYgcHl0ZXN0X2FkZG9w
dGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJkZWJ1Z2NvbmZpZyIp
Ci0gICAgZ3JvdXAuYWRkb3B0aW9uKCctLXNldHVwb25seScsICctLXNldHVwLW9ubHknLCBhY3Rp
b249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICBoZWxwPSJvbmx5IHNldHVwIGZp
eHR1cmVzLCBkbyBub3QgZXhlY3V0ZSB0ZXN0cy4iKQotICAgIGdyb3VwLmFkZG9wdGlvbignLS1z
ZXR1cHNob3cnLCAnLS1zZXR1cC1zaG93JywgYWN0aW9uPSJzdG9yZV90cnVlIiwKLSAgICAgICAg
ICAgICAgICAgICAgaGVscD0ic2hvdyBzZXR1cCBvZiBmaXh0dXJlcyB3aGlsZSBleGVjdXRpbmcg
dGVzdHMuIikKLQotCi1AcHl0ZXN0Lmhvb2tpbXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0
ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6Ci0gICAgeWllbGQKLSAgICBj
b25maWcgPSByZXF1ZXN0LmNvbmZpZwotICAgIGlmIGNvbmZpZy5vcHRpb24uc2V0dXBzaG93Ogot
ICAgICAgICBpZiBoYXNhdHRyKHJlcXVlc3QsICdwYXJhbScpOgotICAgICAgICAgICAgIyBTYXZl
IHRoZSBmaXh0dXJlIHBhcmFtZXRlciBzbyAuX3Nob3dfZml4dHVyZV9hY3Rpb24oKSBjYW4KLSAg
ICAgICAgICAgICMgZGlzcGxheSBpdCBub3cgYW5kIGR1cmluZyB0aGUgdGVhcmRvd24gKGluIC5m
aW5pc2goKSkuCi0gICAgICAgICAgICBpZiBmaXh0dXJlZGVmLmlkczoKLSAgICAgICAgICAgICAg
ICBpZiBjYWxsYWJsZShmaXh0dXJlZGVmLmlkcyk6Ci0gICAgICAgICAgICAgICAgICAgIGZpeHR1
cmVkZWYuY2FjaGVkX3BhcmFtID0gZml4dHVyZWRlZi5pZHMocmVxdWVzdC5wYXJhbSkKLSAgICAg
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBmaXh0dXJlZGVmLmNhY2hlZF9w
YXJhbSA9IGZpeHR1cmVkZWYuaWRzWwotICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5w
YXJhbV9pbmRleF0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZml4dHVyZWRl
Zi5jYWNoZWRfcGFyYW0gPSByZXF1ZXN0LnBhcmFtCi0gICAgICAgIF9zaG93X2ZpeHR1cmVfYWN0
aW9uKGZpeHR1cmVkZWYsICdTRVRVUCcpCi0KLQotZGVmIHB5dGVzdF9maXh0dXJlX3Bvc3RfZmlu
YWxpemVyKGZpeHR1cmVkZWYpOgotICAgIGlmIGhhc2F0dHIoZml4dHVyZWRlZiwgImNhY2hlZF9y
ZXN1bHQiKToKLSAgICAgICAgY29uZmlnID0gZml4dHVyZWRlZi5fZml4dHVyZW1hbmFnZXIuY29u
ZmlnCi0gICAgICAgIGlmIGNvbmZpZy5vcHRpb24uc2V0dXBzaG93OgotICAgICAgICAgICAgX3No
b3dfZml4dHVyZV9hY3Rpb24oZml4dHVyZWRlZiwgJ1RFQVJET1dOJykKLSAgICAgICAgICAgIGlm
IGhhc2F0dHIoZml4dHVyZWRlZiwgImNhY2hlZF9wYXJhbSIpOgotICAgICAgICAgICAgICAgIGRl
bCBmaXh0dXJlZGVmLmNhY2hlZF9wYXJhbQotCi0KLWRlZiBfc2hvd19maXh0dXJlX2FjdGlvbihm
aXh0dXJlZGVmLCBtc2cpOgotICAgIGNvbmZpZyA9IGZpeHR1cmVkZWYuX2ZpeHR1cmVtYW5hZ2Vy
LmNvbmZpZwotICAgIGNhcG1hbiA9IGNvbmZpZy5wbHVnaW5tYW5hZ2VyLmdldHBsdWdpbignY2Fw
dHVyZW1hbmFnZXInKQotICAgIGlmIGNhcG1hbjoKLSAgICAgICAgb3V0LCBlcnIgPSBjYXBtYW4u
c3VzcGVuZF9nbG9iYWxfY2FwdHVyZSgpCi0KLSAgICB0dyA9IGNvbmZpZy5nZXRfdGVybWluYWxf
d3JpdGVyKCkKLSAgICB0dy5saW5lKCkKLSAgICB0dy53cml0ZSgnICcgKiAyICogZml4dHVyZWRl
Zi5zY29wZW51bSkKLSAgICB0dy53cml0ZSgne3N0ZXB9IHtzY29wZX0ge2ZpeHR1cmV9Jy5mb3Jt
YXQoCi0gICAgICAgIHN0ZXA9bXNnLmxqdXN0KDgpLCAgIyBhbGlnbiB0aGUgb3V0cHV0IHRvIFRF
QVJET1dOCi0gICAgICAgIHNjb3BlPWZpeHR1cmVkZWYuc2NvcGVbMF0udXBwZXIoKSwKLSAgICAg
ICAgZml4dHVyZT1maXh0dXJlZGVmLmFyZ25hbWUpKQotCi0gICAgaWYgbXNnID09ICdTRVRVUCc6
Ci0gICAgICAgIGRlcHMgPSBzb3J0ZWQoYXJnIGZvciBhcmcgaW4gZml4dHVyZWRlZi5hcmduYW1l
cyBpZiBhcmcgIT0gJ3JlcXVlc3QnKQotICAgICAgICBpZiBkZXBzOgotICAgICAgICAgICAgdHcu
d3JpdGUoJyAoZml4dHVyZXMgdXNlZDogezB9KScuZm9ybWF0KCcsICcuam9pbihkZXBzKSkpCi0K
LSAgICBpZiBoYXNhdHRyKGZpeHR1cmVkZWYsICdjYWNoZWRfcGFyYW0nKToKLSAgICAgICAgdHcu
d3JpdGUoJ1t7MH1dJy5mb3JtYXQoZml4dHVyZWRlZi5jYWNoZWRfcGFyYW0pKQotCi0gICAgaWYg
Y2FwbWFuOgotICAgICAgICBjYXBtYW4ucmVzdW1lX2dsb2JhbF9jYXB0dXJlKCkKLSAgICAgICAg
c3lzLnN0ZG91dC53cml0ZShvdXQpCi0gICAgICAgIHN5cy5zdGRlcnIud3JpdGUoZXJyKQotCi0K
LUBweXRlc3QuaG9va2ltcGwodHJ5Zmlyc3Q9VHJ1ZSkKLWRlZiBweXRlc3RfY21kbGluZV9tYWlu
KGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLm9wdGlvbi5zZXR1cG9ubHk6Ci0gICAgICAgIGNvbmZp
Zy5vcHRpb24uc2V0dXBzaG93ID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9zZXR1cHBsYW4ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3NldHVwcGxhbi5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTExYmQ0MDY5OGI3NzJiMDZhMzcyOTdjZmMzNGUwYTc4
YmQxMTY0OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L3NldHVwcGxhbi5weQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICsw
LDAgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwg
cHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IHB5dGVzdAotCi0KLWRlZiBweXRlc3RfYWRkb3B0aW9u
KHBhcnNlcik6Ci0gICAgZ3JvdXAgPSBwYXJzZXIuZ2V0Z3JvdXAoImRlYnVnY29uZmlnIikKLSAg
ICBncm91cC5hZGRvcHRpb24oJy0tc2V0dXBwbGFuJywgJy0tc2V0dXAtcGxhbicsIGFjdGlvbj0i
c3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9InNob3cgd2hhdCBmaXh0dXJl
cyBhbmQgdGVzdHMgd291bGQgYmUgZXhlY3V0ZWQgYnV0ICIKLSAgICAgICAgICAgICAgICAgICAg
ImRvbid0IGV4ZWN1dGUgYW55dGhpbmcuIikKLQotCi1AcHl0ZXN0Lmhvb2tpbXBsKHRyeWZpcnN0
PVRydWUpCi1kZWYgcHl0ZXN0X2ZpeHR1cmVfc2V0dXAoZml4dHVyZWRlZiwgcmVxdWVzdCk6Ci0g
ICAgIyBXaWxsIHJldHVybiBhIGR1bW15IGZpeHR1cmUgaWYgdGhlIHNldHVwb25seSBvcHRpb24g
aXMgcHJvdmlkZWQuCi0gICAgaWYgcmVxdWVzdC5jb25maWcub3B0aW9uLnNldHVwcGxhbjoKLSAg
ICAgICAgZml4dHVyZWRlZi5jYWNoZWRfcmVzdWx0ID0gKE5vbmUsIE5vbmUsIE5vbmUpCi0gICAg
ICAgIHJldHVybiBmaXh0dXJlZGVmLmNhY2hlZF9yZXN1bHQKLQotCi1AcHl0ZXN0Lmhvb2tpbXBs
KHRyeWZpcnN0PVRydWUpCi1kZWYgcHl0ZXN0X2NtZGxpbmVfbWFpbihjb25maWcpOgotICAgIGlm
IGNvbmZpZy5vcHRpb24uc2V0dXBwbGFuOgotICAgICAgICBjb25maWcub3B0aW9uLnNldHVwb25s
eSA9IFRydWUKLSAgICAgICAgY29uZmlnLm9wdGlvbi5zZXR1cHNob3cgPSBUcnVlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3NraXBwaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9za2lwcGluZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTFlNWI0MzgwMGI1
NGY4YzhhMjkwNTQwYjEzZGEzYTAyODIwZDdmNS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3NraXBwaW5nLnB5CisrKyAv
ZGV2L251bGwKQEAgLTEsMzk3ICswLDAgQEAKLSIiIiBzdXBwb3J0IGZvciBza2lwL3hmYWlsIGZ1
bmN0aW9ucyBhbmQgbWFya2Vycy4gIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRl
X2ltcG9ydCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBvcwotaW1wb3J0IHNp
eAotaW1wb3J0IHN5cwotaW1wb3J0IHRyYWNlYmFjawotCi1mcm9tIF9weXRlc3QuY29uZmlnIGlt
cG9ydCBob29raW1wbAotZnJvbSBfcHl0ZXN0Lm1hcmsgaW1wb3J0IE1hcmtJbmZvLCBNYXJrRGVj
b3JhdG9yCi1mcm9tIF9weXRlc3Qub3V0Y29tZXMgaW1wb3J0IGZhaWwsIHNraXAsIHhmYWlsLCBU
RVNUX09VVENPTUUKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3Vw
ID0gcGFyc2VyLmdldGdyb3VwKCJnZW5lcmFsIikKLSAgICBncm91cC5hZGRvcHRpb24oJy0tcnVu
eGZhaWwnLAotICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJy
dW54ZmFpbCIsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgIGhlbHA9InJ1biB0
ZXN0cyBldmVuIGlmIHRoZXkgYXJlIG1hcmtlZCB4ZmFpbCIpCi0KLSAgICBwYXJzZXIuYWRkaW5p
KCJ4ZmFpbF9zdHJpY3QiLCAiZGVmYXVsdCBmb3IgdGhlIHN0cmljdCBwYXJhbWV0ZXIgb2YgeGZh
aWwgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtYXJrZXJzIHdoZW4gbm90
IGdpdmVuIGV4cGxpY2l0bHkgKGRlZmF1bHQ6ICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiRmFsc2UpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZh
dWx0PUZhbHNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9ImJvb2wi
KQotCi0KLWRlZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgaWYgY29uZmlnLm9wdGlv
bi5ydW54ZmFpbDoKLSAgICAgICAgIyB5YXkgYSBoYWNrCi0gICAgICAgIGltcG9ydCBweXRlc3QK
LSAgICAgICAgb2xkID0gcHl0ZXN0LnhmYWlsCi0gICAgICAgIGNvbmZpZy5fY2xlYW51cC5hcHBl
bmQobGFtYmRhOiBzZXRhdHRyKHB5dGVzdCwgInhmYWlsIiwgb2xkKSkKLQotICAgICAgICBkZWYg
bm9wKCphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgICAgICBwYXNzCi0KLSAgICAgICAgbm9wLkV4
Y2VwdGlvbiA9IHhmYWlsLkV4Y2VwdGlvbgotICAgICAgICBzZXRhdHRyKHB5dGVzdCwgInhmYWls
Iiwgbm9wKQotCi0gICAgY29uZmlnLmFkZGluaXZhbHVlX2xpbmUoIm1hcmtlcnMiLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJza2lwKHJlYXNvbj1Ob25lKTogc2tpcCB0aGUgZ2l2ZW4g
dGVzdCBmdW5jdGlvbiB3aXRoIGFuIG9wdGlvbmFsIHJlYXNvbi4gIgotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJFeGFtcGxlOiBza2lwKHJlYXNvbj1cIm5vIHdheSBvZiBjdXJyZW50bHkg
dGVzdGluZyB0aGlzXCIpIHNraXBzIHRoZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRlc3QuIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICBjb25maWcuYWRkaW5p
dmFsdWVfbGluZSgibWFya2VycyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInNraXBp
Zihjb25kaXRpb24pOiBza2lwIHRoZSBnaXZlbiB0ZXN0IGZ1bmN0aW9uIGlmIGV2YWwoY29uZGl0
aW9uKSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlc3VsdHMgaW4gYSBUcnVlIHZh
bHVlLiAgRXZhbHVhdGlvbiBoYXBwZW5zIHdpdGhpbiB0aGUgIgotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJtb2R1bGUgZ2xvYmFsIGNvbnRleHQuIEV4YW1wbGU6IHNraXBpZignc3lzLnBs
YXRmb3JtID09IFwid2luMzJcIicpICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2tp
cHMgdGhlIHRlc3QgaWYgd2UgYXJlIG9uIHRoZSB3aW4zMiBwbGF0Zm9ybS4gc2VlICIKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL3B5dGVzdC5vcmcvbGF0ZXN0L3NraXBwaW5n
Lmh0bWwiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotICAgIGNvbmZpZy5hZGRpbml2
YWx1ZV9saW5lKCJtYXJrZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAieGZhaWwo
Y29uZGl0aW9uLCByZWFzb249Tm9uZSwgcnVuPVRydWUsIHJhaXNlcz1Ob25lLCBzdHJpY3Q9RmFs
c2UpOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1hcmsgdGhlIHRlc3QgZnVuY3Rp
b24gYXMgYW4gZXhwZWN0ZWQgZmFpbHVyZSBpZiBldmFsKGNvbmRpdGlvbikgIgotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJoYXMgYSBUcnVlIHZhbHVlLiBPcHRpb25hbGx5IHNwZWNpZnkg
YSByZWFzb24gZm9yIGJldHRlciByZXBvcnRpbmcgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJhbmQgcnVuPUZhbHNlIGlmIHlvdSBkb24ndCBldmVuIHdhbnQgdG8gZXhlY3V0ZSB0aGUg
dGVzdCBmdW5jdGlvbi4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJZiBvbmx5IHNw
ZWNpZmljIGV4Y2VwdGlvbihzKSBhcmUgZXhwZWN0ZWQsIHlvdSBjYW4gbGlzdCB0aGVtIGluICIK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmFpc2VzLCBhbmQgaWYgdGhlIHRlc3QgZmFp
bHMgaW4gb3RoZXIgd2F5cywgaXQgd2lsbCBiZSByZXBvcnRlZCBhcyAiCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImEgdHJ1ZSBmYWlsdXJlLiBTZWUgaHR0cDovL3B5dGVzdC5vcmcvbGF0
ZXN0L3NraXBwaW5nLmh0bWwiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKQotCi0KLWNs
YXNzIE1hcmtFdmFsdWF0b3Iob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbSwg
bmFtZSk6Ci0gICAgICAgIHNlbGYuaXRlbSA9IGl0ZW0KLSAgICAgICAgc2VsZi5fbWFya3MgPSBO
b25lCi0gICAgICAgIHNlbGYuX21hcmsgPSBOb25lCi0gICAgICAgIHNlbGYuX21hcmtfbmFtZSA9
IG5hbWUKLQotICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKLSAgICAgICAgc2VsZi5fbWFya3MgPSBz
ZWxmLl9nZXRfbWFya3MoKQotICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9tYXJrcykKLSAgICBf
X25vbnplcm9fXyA9IF9fYm9vbF9fCi0KLSAgICBkZWYgd2FzdmFsaWQoc2VsZik6Ci0gICAgICAg
IHJldHVybiBub3QgaGFzYXR0cihzZWxmLCAnZXhjJykKLQotICAgIGRlZiBfZ2V0X21hcmtzKHNl
bGYpOgotCi0gICAgICAgIGtleXdvcmQgPSBzZWxmLml0ZW0ua2V5d29yZHMuZ2V0KHNlbGYuX21h
cmtfbmFtZSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShrZXl3b3JkLCBNYXJrRGVjb3JhdG9yKToK
LSAgICAgICAgICAgIHJldHVybiBba2V5d29yZC5tYXJrXQotICAgICAgICBlbGlmIGlzaW5zdGFu
Y2Uoa2V5d29yZCwgTWFya0luZm8pOgotICAgICAgICAgICAgcmV0dXJuIFt4LmNvbWJpbmVkIGZv
ciB4IGluIGtleXdvcmRdCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gW10KLQot
ICAgIGRlZiBpbnZhbGlkcmFpc2Uoc2VsZiwgZXhjKToKLSAgICAgICAgcmFpc2VzID0gc2VsZi5n
ZXQoJ3JhaXNlcycpCi0gICAgICAgIGlmIG5vdCByYWlzZXM6Ci0gICAgICAgICAgICByZXR1cm4K
LSAgICAgICAgcmV0dXJuIG5vdCBpc2luc3RhbmNlKGV4YywgcmFpc2VzKQotCi0gICAgZGVmIGlz
dHJ1ZShzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2lzdHJ1
ZSgpCi0gICAgICAgIGV4Y2VwdCBURVNUX09VVENPTUU6Ci0gICAgICAgICAgICBzZWxmLmV4YyA9
IHN5cy5leGNfaW5mbygpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZXhjWzFdLCBT
eW50YXhFcnJvcik6Ci0gICAgICAgICAgICAgICAgbXNnID0gWyIgIiAqIChzZWxmLmV4Y1sxXS5v
ZmZzZXQgKyA0KSArICJeIiwgXQotICAgICAgICAgICAgICAgIG1zZy5hcHBlbmQoIlN5bnRheEVy
cm9yOiBpbnZhbGlkIHN5bnRheCIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IG1zZyA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkoKnNlbGYuZXhjWzoyXSkKLSAg
ICAgICAgICAgIGZhaWwoIkVycm9yIGV2YWx1YXRpbmcgJXIgZXhwcmVzc2lvblxuIgotICAgICAg
ICAgICAgICAgICAiICAgICVzXG4iCi0gICAgICAgICAgICAgICAgICIlcyIKLSAgICAgICAgICAg
ICAgICAgJSAoc2VsZi5fbWFya19uYW1lLCBzZWxmLmV4cHIsICJcbiIuam9pbihtc2cpKSwKLSAg
ICAgICAgICAgICAgICAgcHl0cmFjZT1GYWxzZSkKLQotICAgIGRlZiBfZ2V0Z2xvYmFscyhzZWxm
KToKLSAgICAgICAgZCA9IHsnb3MnOiBvcywgJ3N5cyc6IHN5cywgJ2NvbmZpZyc6IHNlbGYuaXRl
bS5jb25maWd9Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZi5pdGVtLCAnb2JqJyk6Ci0gICAgICAg
ICAgICBkLnVwZGF0ZShzZWxmLml0ZW0ub2JqLl9fZ2xvYmFsc19fKQotICAgICAgICByZXR1cm4g
ZAotCi0gICAgZGVmIF9pc3RydWUoc2VsZik6Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ3Jl
c3VsdCcpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0Ci0gICAgICAgIHNlbGYuX21h
cmtzID0gc2VsZi5fZ2V0X21hcmtzKCkKLQotICAgICAgICBpZiBzZWxmLl9tYXJrczoKLSAgICAg
ICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UKLSAgICAgICAgICAgIGZvciBtYXJrIGluIHNlbGYu
X21hcmtzOgotICAgICAgICAgICAgICAgIHNlbGYuX21hcmsgPSBtYXJrCi0gICAgICAgICAgICAg
ICAgaWYgJ2NvbmRpdGlvbicgaW4gbWFyay5rd2FyZ3M6Ci0gICAgICAgICAgICAgICAgICAgIGFy
Z3MgPSAobWFyay5rd2FyZ3NbJ2NvbmRpdGlvbiddLCkKLSAgICAgICAgICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgICAgICAgICBhcmdzID0gbWFyay5hcmdzCi0KLSAgICAgICAgICAgICAgICBm
b3IgZXhwciBpbiBhcmdzOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmV4cHIgPSBleHByCi0g
ICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXhwciwgc2l4LnN0cmluZ190eXBlcyk6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBkID0gc2VsZi5fZ2V0Z2xvYmFscygpCi0gICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHQgPSBjYWNoZWRfZXZhbChzZWxmLml0ZW0uY29uZmlnLCBl
eHByLCBkKQotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgInJlYXNvbiIgbm90IGluIG1hcmsua3dhcmdzOgotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICMgWFhYIGJldHRlciBiZSBjaGVja2VkIGF0IGNvbGxlY3Rpb24gdGltZQotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJ5b3UgbmVlZCB0byBzcGVjaWZ5IHJlYXNvbj1T
VFJJTkcgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndoZW4gdXNpbmcg
Ym9vbGVhbnMgYXMgY29uZGl0aW9ucy4iCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZmFp
bChtc2cpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBib29sKGV4cHIpCi0gICAg
ICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYu
cmVzdWx0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWFzb24gPSBtYXJr
Lmt3YXJncy5nZXQoJ3JlYXNvbicsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgICAgICBzZWxm
LmV4cHIgPSBleHByCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHQK
LQotICAgICAgICAgICAgICAgIGlmIG5vdCBhcmdzOgotICAgICAgICAgICAgICAgICAgICBzZWxm
LnJlc3VsdCA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWFzb24gPSBtYXJrLmt3
YXJncy5nZXQoJ3JlYXNvbicsIE5vbmUpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxm
LnJlc3VsdAotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAgIGRlZiBnZXQoc2VsZiwgYXR0ciwg
ZGVmYXVsdD1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5fbWFyayBpcyBOb25lOgotICAgICAgICAg
ICAgcmV0dXJuIGRlZmF1bHQKLSAgICAgICAgcmV0dXJuIHNlbGYuX21hcmsua3dhcmdzLmdldChh
dHRyLCBkZWZhdWx0KQotCi0gICAgZGVmIGdldGV4cGxhbmF0aW9uKHNlbGYpOgotICAgICAgICBl
eHBsID0gZ2V0YXR0cihzZWxmLCAncmVhc29uJywgTm9uZSkgb3Igc2VsZi5nZXQoJ3JlYXNvbics
IE5vbmUpCi0gICAgICAgIGlmIG5vdCBleHBsOgotICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIo
c2VsZiwgJ2V4cHInKToKLSAgICAgICAgICAgICAgICByZXR1cm4gIiIKLSAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICJjb25kaXRpb246ICIgKyBzdHIoc2VsZi5leHBy
KQotICAgICAgICByZXR1cm4gZXhwbAotCi0KLUBob29raW1wbCh0cnlmaXJzdD1UcnVlKQotZGVm
IHB5dGVzdF9ydW50ZXN0X3NldHVwKGl0ZW0pOgotICAgICMgQ2hlY2sgaWYgc2tpcCBvciBza2lw
aWYgYXJlIHNwZWNpZmllZCBhcyBweXRlc3QgbWFya3MKLSAgICBpdGVtLl9za2lwcGVkX2J5X21h
cmsgPSBGYWxzZQotICAgIHNraXBpZl9pbmZvID0gaXRlbS5rZXl3b3Jkcy5nZXQoJ3NraXBpZicp
Ci0gICAgaWYgaXNpbnN0YW5jZShza2lwaWZfaW5mbywgKE1hcmtJbmZvLCBNYXJrRGVjb3JhdG9y
KSk6Ci0gICAgICAgIGV2YWxfc2tpcGlmID0gTWFya0V2YWx1YXRvcihpdGVtLCAnc2tpcGlmJykK
LSAgICAgICAgaWYgZXZhbF9za2lwaWYuaXN0cnVlKCk6Ci0gICAgICAgICAgICBpdGVtLl9za2lw
cGVkX2J5X21hcmsgPSBUcnVlCi0gICAgICAgICAgICBza2lwKGV2YWxfc2tpcGlmLmdldGV4cGxh
bmF0aW9uKCkpCi0KLSAgICBza2lwX2luZm8gPSBpdGVtLmtleXdvcmRzLmdldCgnc2tpcCcpCi0g
ICAgaWYgaXNpbnN0YW5jZShza2lwX2luZm8sIChNYXJrSW5mbywgTWFya0RlY29yYXRvcikpOgot
ICAgICAgICBpdGVtLl9za2lwcGVkX2J5X21hcmsgPSBUcnVlCi0gICAgICAgIGlmICdyZWFzb24n
IGluIHNraXBfaW5mby5rd2FyZ3M6Ci0gICAgICAgICAgICBza2lwKHNraXBfaW5mby5rd2FyZ3Nb
J3JlYXNvbiddKQotICAgICAgICBlbGlmIHNraXBfaW5mby5hcmdzOgotICAgICAgICAgICAgc2tp
cChza2lwX2luZm8uYXJnc1swXSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNraXAoInVu
Y29uZGl0aW9uYWwgc2tpcCIpCi0KLSAgICBpdGVtLl9ldmFseGZhaWwgPSBNYXJrRXZhbHVhdG9y
KGl0ZW0sICd4ZmFpbCcpCi0gICAgY2hlY2tfeGZhaWxfbm9fcnVuKGl0ZW0pCi0KLQotQGhvb2tp
bXBsKGhvb2t3cmFwcGVyPVRydWUpCi1kZWYgcHl0ZXN0X3B5ZnVuY19jYWxsKHB5ZnVuY2l0ZW0p
OgotICAgIGNoZWNrX3hmYWlsX25vX3J1bihweWZ1bmNpdGVtKQotICAgIG91dGNvbWUgPSB5aWVs
ZAotICAgIHBhc3NlZCA9IG91dGNvbWUuZXhjaW5mbyBpcyBOb25lCi0gICAgaWYgcGFzc2VkOgot
ICAgICAgICBjaGVja19zdHJpY3RfeGZhaWwocHlmdW5jaXRlbSkKLQotCi1kZWYgY2hlY2tfeGZh
aWxfbm9fcnVuKGl0ZW0pOgotICAgICIiImNoZWNrIHhmYWlsKHJ1bj1GYWxzZSkiIiIKLSAgICBp
ZiBub3QgaXRlbS5jb25maWcub3B0aW9uLnJ1bnhmYWlsOgotICAgICAgICBldmFseGZhaWwgPSBp
dGVtLl9ldmFseGZhaWwKLSAgICAgICAgaWYgZXZhbHhmYWlsLmlzdHJ1ZSgpOgotICAgICAgICAg
ICAgaWYgbm90IGV2YWx4ZmFpbC5nZXQoJ3J1bicsIFRydWUpOgotICAgICAgICAgICAgICAgIHhm
YWlsKCJbTk9UUlVOXSAiICsgZXZhbHhmYWlsLmdldGV4cGxhbmF0aW9uKCkpCi0KLQotZGVmIGNo
ZWNrX3N0cmljdF94ZmFpbChweWZ1bmNpdGVtKToKLSAgICAiIiJjaGVjayB4ZmFpbChzdHJpY3Q9
VHJ1ZSkgZm9yIHRoZSBnaXZlbiBQQVNTSU5HIHRlc3QiIiIKLSAgICBldmFseGZhaWwgPSBweWZ1
bmNpdGVtLl9ldmFseGZhaWwKLSAgICBpZiBldmFseGZhaWwuaXN0cnVlKCk6Ci0gICAgICAgIHN0
cmljdF9kZWZhdWx0ID0gcHlmdW5jaXRlbS5jb25maWcuZ2V0aW5pKCd4ZmFpbF9zdHJpY3QnKQot
ICAgICAgICBpc19zdHJpY3RfeGZhaWwgPSBldmFseGZhaWwuZ2V0KCdzdHJpY3QnLCBzdHJpY3Rf
ZGVmYXVsdCkKLSAgICAgICAgaWYgaXNfc3RyaWN0X3hmYWlsOgotICAgICAgICAgICAgZGVsIHB5
ZnVuY2l0ZW0uX2V2YWx4ZmFpbAotICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBldmFseGZhaWwu
Z2V0ZXhwbGFuYXRpb24oKQotICAgICAgICAgICAgZmFpbCgnW1hQQVNTKHN0cmljdCldICcgKyBl
eHBsYW5hdGlvbiwgcHl0cmFjZT1GYWxzZSkKLQotCi1AaG9va2ltcGwoaG9va3dyYXBwZXI9VHJ1
ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9tYWtlcmVwb3J0KGl0ZW0sIGNhbGwpOgotICAgIG91dGNv
bWUgPSB5aWVsZAotICAgIHJlcCA9IG91dGNvbWUuZ2V0X3Jlc3VsdCgpCi0gICAgZXZhbHhmYWls
ID0gZ2V0YXR0cihpdGVtLCAnX2V2YWx4ZmFpbCcsIE5vbmUpCi0gICAgIyB1bml0dHRlc3Qgc3Bl
Y2lhbCBjYXNlLCBzZWUgc2V0dGluZyBvZiBfdW5leHBlY3RlZHN1Y2Nlc3MKLSAgICBpZiBoYXNh
dHRyKGl0ZW0sICdfdW5leHBlY3RlZHN1Y2Nlc3MnKSBhbmQgcmVwLndoZW4gPT0gImNhbGwiOgot
ICAgICAgICBmcm9tIF9weXRlc3QuY29tcGF0IGltcG9ydCBfaXNfdW5pdHRlc3RfdW5leHBlY3Rl
ZF9zdWNjZXNzX2FfZmFpbHVyZQotICAgICAgICBpZiBpdGVtLl91bmV4cGVjdGVkc3VjY2VzczoK
LSAgICAgICAgICAgIHJlcC5sb25ncmVwciA9ICJVbmV4cGVjdGVkIHN1Y2Nlc3M6IHswfSIuZm9y
bWF0KGl0ZW0uX3VuZXhwZWN0ZWRzdWNjZXNzKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
cmVwLmxvbmdyZXByID0gIlVuZXhwZWN0ZWQgc3VjY2VzcyIKLSAgICAgICAgaWYgX2lzX3VuaXR0
ZXN0X3VuZXhwZWN0ZWRfc3VjY2Vzc19hX2ZhaWx1cmUoKToKLSAgICAgICAgICAgIHJlcC5vdXRj
b21lID0gImZhaWxlZCIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcC5vdXRjb21lID0g
InBhc3NlZCIKLSAgICAgICAgICAgIHJlcC53YXN4ZmFpbCA9IHJlcC5sb25ncmVwcgotICAgIGVs
aWYgaXRlbS5jb25maWcub3B0aW9uLnJ1bnhmYWlsOgotICAgICAgICBwYXNzICAgIyBkb24ndCBp
bnRlcmVmZXJlCi0gICAgZWxpZiBjYWxsLmV4Y2luZm8gYW5kIGNhbGwuZXhjaW5mby5lcnJpc2lu
c3RhbmNlKHhmYWlsLkV4Y2VwdGlvbik6Ci0gICAgICAgIHJlcC53YXN4ZmFpbCA9ICJyZWFzb246
ICIgKyBjYWxsLmV4Y2luZm8udmFsdWUubXNnCi0gICAgICAgIHJlcC5vdXRjb21lID0gInNraXBw
ZWQiCi0gICAgZWxpZiBldmFseGZhaWwgYW5kIG5vdCByZXAuc2tpcHBlZCBhbmQgZXZhbHhmYWls
Lndhc3ZhbGlkKCkgYW5kIFwKLSAgICAgICAgICAgIGV2YWx4ZmFpbC5pc3RydWUoKToKLSAgICAg
ICAgaWYgY2FsbC5leGNpbmZvOgotICAgICAgICAgICAgaWYgZXZhbHhmYWlsLmludmFsaWRyYWlz
ZShjYWxsLmV4Y2luZm8udmFsdWUpOgotICAgICAgICAgICAgICAgIHJlcC5vdXRjb21lID0gImZh
aWxlZCIKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmVwLm91dGNvbWUgPSAi
c2tpcHBlZCIKLSAgICAgICAgICAgICAgICByZXAud2FzeGZhaWwgPSBldmFseGZhaWwuZ2V0ZXhw
bGFuYXRpb24oKQotICAgICAgICBlbGlmIGNhbGwud2hlbiA9PSAiY2FsbCI6Ci0gICAgICAgICAg
ICBzdHJpY3RfZGVmYXVsdCA9IGl0ZW0uY29uZmlnLmdldGluaSgneGZhaWxfc3RyaWN0JykKLSAg
ICAgICAgICAgIGlzX3N0cmljdF94ZmFpbCA9IGV2YWx4ZmFpbC5nZXQoJ3N0cmljdCcsIHN0cmlj
dF9kZWZhdWx0KQotICAgICAgICAgICAgZXhwbGFuYXRpb24gPSBldmFseGZhaWwuZ2V0ZXhwbGFu
YXRpb24oKQotICAgICAgICAgICAgaWYgaXNfc3RyaWN0X3hmYWlsOgotICAgICAgICAgICAgICAg
IHJlcC5vdXRjb21lID0gImZhaWxlZCIKLSAgICAgICAgICAgICAgICByZXAubG9uZ3JlcHIgPSAi
W1hQQVNTKHN0cmljdCldIHswfSIuZm9ybWF0KGV4cGxhbmF0aW9uKQotICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICByZXAub3V0Y29tZSA9ICJwYXNzZWQiCi0gICAgICAgICAgICAg
ICAgcmVwLndhc3hmYWlsID0gZXhwbGFuYXRpb24KLSAgICBlbGlmIGl0ZW0uX3NraXBwZWRfYnlf
bWFyayBhbmQgcmVwLnNraXBwZWQgYW5kIHR5cGUocmVwLmxvbmdyZXByKSBpcyB0dXBsZToKLSAg
ICAgICAgIyBza2lwcGVkIGJ5IG1hcmsuc2tpcGlmOyBjaGFuZ2UgdGhlIGxvY2F0aW9uIG9mIHRo
ZSBmYWlsdXJlCi0gICAgICAgICMgdG8gcG9pbnQgdG8gdGhlIGl0ZW0gZGVmaW5pdGlvbiwgb3Ro
ZXJ3aXNlIGl0IHdpbGwgZGlzcGxheQotICAgICAgICAjIHRoZSBsb2NhdGlvbiBvZiB3aGVyZSB0
aGUgc2tpcCBleGNlcHRpb24gd2FzIHJhaXNlZCB3aXRoaW4gcHl0ZXN0Ci0gICAgICAgIGZpbGVu
YW1lLCBsaW5lLCByZWFzb24gPSByZXAubG9uZ3JlcHIKLSAgICAgICAgZmlsZW5hbWUsIGxpbmUg
PSBpdGVtLmxvY2F0aW9uWzoyXQotICAgICAgICByZXAubG9uZ3JlcHIgPSBmaWxlbmFtZSwgbGlu
ZSwgcmVhc29uCi0KLSMgY2FsbGVkIGJ5IHRlcm1pbmFscmVwb3J0ZXIgcHJvZ3Jlc3MgcmVwb3J0
aW5nCi0KLQotZGVmIHB5dGVzdF9yZXBvcnRfdGVzdHN0YXR1cyhyZXBvcnQpOgotICAgIGlmIGhh
c2F0dHIocmVwb3J0LCAid2FzeGZhaWwiKToKLSAgICAgICAgaWYgcmVwb3J0LnNraXBwZWQ6Ci0g
ICAgICAgICAgICByZXR1cm4gInhmYWlsZWQiLCAieCIsICJ4ZmFpbCIKLSAgICAgICAgZWxpZiBy
ZXBvcnQucGFzc2VkOgotICAgICAgICAgICAgcmV0dXJuICJ4cGFzc2VkIiwgIlgiLCAoIlhQQVNT
Iiwgeyd5ZWxsb3cnOiBUcnVlfSkKLQotIyBjYWxsZWQgYnkgdGhlIHRlcm1pbmFscmVwb3J0ZXIg
aW5zdGFuY2UvcGx1Z2luCi0KLQotZGVmIHB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRlcm1pbmFs
cmVwb3J0ZXIpOgotICAgIHRyID0gdGVybWluYWxyZXBvcnRlcgotICAgIGlmIG5vdCB0ci5yZXBv
cnRjaGFyczoKLSAgICAgICAgIyBmb3IgbmFtZSBpbiAieGZhaWxlZCBza2lwcGVkIGZhaWxlZCB4
cGFzc2VkIjoKLSAgICAgICAgIyAgICBpZiBub3QgdHIuc3RhdHMuZ2V0KG5hbWUsIDApOgotICAg
ICAgICAjICAgICAgICB0ci53cml0ZV9saW5lKCJISU5UOiB1c2UgJy1yJyBvcHRpb24gdG8gc2Vl
IGV4dHJhICIKLSAgICAgICAgIyAgICAgICAgICAgICAgInN1bW1hcnkgaW5mbyBhYm91dCB0ZXN0
cyIpCi0gICAgICAgICMgICAgICAgIGJyZWFrCi0gICAgICAgIHJldHVybgotCi0gICAgbGluZXMg
PSBbXQotICAgIGZvciBjaGFyIGluIHRyLnJlcG9ydGNoYXJzOgotICAgICAgICBpZiBjaGFyID09
ICJ4IjoKLSAgICAgICAgICAgIHNob3dfeGZhaWxlZCh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcykK
LSAgICAgICAgZWxpZiBjaGFyID09ICJYIjoKLSAgICAgICAgICAgIHNob3dfeHBhc3NlZCh0ZXJt
aW5hbHJlcG9ydGVyLCBsaW5lcykKLSAgICAgICAgZWxpZiBjaGFyIGluICJmRiI6Ci0gICAgICAg
ICAgICBzaG93X3NpbXBsZSh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcywgJ2ZhaWxlZCcsICJGQUlM
ICVzIikKLSAgICAgICAgZWxpZiBjaGFyIGluICJzUyI6Ci0gICAgICAgICAgICBzaG93X3NraXBw
ZWQodGVybWluYWxyZXBvcnRlciwgbGluZXMpCi0gICAgICAgIGVsaWYgY2hhciA9PSAiRSI6Ci0g
ICAgICAgICAgICBzaG93X3NpbXBsZSh0ZXJtaW5hbHJlcG9ydGVyLCBsaW5lcywgJ2Vycm9yJywg
IkVSUk9SICVzIikKLSAgICAgICAgZWxpZiBjaGFyID09ICdwJzoKLSAgICAgICAgICAgIHNob3df
c2ltcGxlKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzLCAncGFzc2VkJywgIlBBU1NFRCAlcyIpCi0K
LSAgICBpZiBsaW5lczoKLSAgICAgICAgdHIuX3R3LnNlcCgiPSIsICJzaG9ydCB0ZXN0IHN1bW1h
cnkgaW5mbyIpCi0gICAgICAgIGZvciBsaW5lIGluIGxpbmVzOgotICAgICAgICAgICAgdHIuX3R3
LmxpbmUobGluZSkKLQotCi1kZWYgc2hvd19zaW1wbGUodGVybWluYWxyZXBvcnRlciwgbGluZXMs
IHN0YXQsIGZvcm1hdCk6Ci0gICAgZmFpbGVkID0gdGVybWluYWxyZXBvcnRlci5zdGF0cy5nZXQo
c3RhdCkKLSAgICBpZiBmYWlsZWQ6Ci0gICAgICAgIGZvciByZXAgaW4gZmFpbGVkOgotICAgICAg
ICAgICAgcG9zID0gdGVybWluYWxyZXBvcnRlci5jb25maWcuY3dkX3JlbGF0aXZlX25vZGVpZChy
ZXAubm9kZWlkKQotICAgICAgICAgICAgbGluZXMuYXBwZW5kKGZvcm1hdCAlIChwb3MsKSkKLQot
Ci1kZWYgc2hvd194ZmFpbGVkKHRlcm1pbmFscmVwb3J0ZXIsIGxpbmVzKToKLSAgICB4ZmFpbGVk
ID0gdGVybWluYWxyZXBvcnRlci5zdGF0cy5nZXQoInhmYWlsZWQiKQotICAgIGlmIHhmYWlsZWQ6
Ci0gICAgICAgIGZvciByZXAgaW4geGZhaWxlZDoKLSAgICAgICAgICAgIHBvcyA9IHRlcm1pbmFs
cmVwb3J0ZXIuY29uZmlnLmN3ZF9yZWxhdGl2ZV9ub2RlaWQocmVwLm5vZGVpZCkKLSAgICAgICAg
ICAgIHJlYXNvbiA9IHJlcC53YXN4ZmFpbAotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJYRkFJ
TCAlcyIgJSAocG9zLCkpCi0gICAgICAgICAgICBpZiByZWFzb246Ci0gICAgICAgICAgICAgICAg
bGluZXMuYXBwZW5kKCIgICIgKyBzdHIocmVhc29uKSkKLQotCi1kZWYgc2hvd194cGFzc2VkKHRl
cm1pbmFscmVwb3J0ZXIsIGxpbmVzKToKLSAgICB4cGFzc2VkID0gdGVybWluYWxyZXBvcnRlci5z
dGF0cy5nZXQoInhwYXNzZWQiKQotICAgIGlmIHhwYXNzZWQ6Ci0gICAgICAgIGZvciByZXAgaW4g
eHBhc3NlZDoKLSAgICAgICAgICAgIHBvcyA9IHRlcm1pbmFscmVwb3J0ZXIuY29uZmlnLmN3ZF9y
ZWxhdGl2ZV9ub2RlaWQocmVwLm5vZGVpZCkKLSAgICAgICAgICAgIHJlYXNvbiA9IHJlcC53YXN4
ZmFpbAotICAgICAgICAgICAgbGluZXMuYXBwZW5kKCJYUEFTUyAlcyAlcyIgJSAocG9zLCByZWFz
b24pKQotCi0KLWRlZiBjYWNoZWRfZXZhbChjb25maWcsIGV4cHIsIGQpOgotICAgIGlmIG5vdCBo
YXNhdHRyKGNvbmZpZywgJ19ldmFsY2FjaGUnKToKLSAgICAgICAgY29uZmlnLl9ldmFsY2FjaGUg
PSB7fQotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGNvbmZpZy5fZXZhbGNhY2hlW2V4cHJdCi0g
ICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBpbXBvcnQgX3B5dGVzdC5fY29kZQotICAgICAg
ICBleHByY29kZSA9IF9weXRlc3QuX2NvZGUuY29tcGlsZShleHByLCBtb2RlPSJldmFsIikKLSAg
ICAgICAgY29uZmlnLl9ldmFsY2FjaGVbZXhwcl0gPSB4ID0gZXZhbChleHByY29kZSwgZCkKLSAg
ICAgICAgcmV0dXJuIHgKLQotCi1kZWYgZm9sZGVkX3NraXBzKHNraXBwZWQpOgotICAgIGQgPSB7
fQotICAgIGZvciBldmVudCBpbiBza2lwcGVkOgotICAgICAgICBrZXkgPSBldmVudC5sb25ncmVw
cgotICAgICAgICBhc3NlcnQgbGVuKGtleSkgPT0gMywgKGV2ZW50LCBrZXkpCi0gICAgICAgIGtl
eXdvcmRzID0gZ2V0YXR0cihldmVudCwgJ2tleXdvcmRzJywge30pCi0gICAgICAgICMgZm9sZGlu
ZyByZXBvcnRzIHdpdGggZ2xvYmFsIHB5dGVzdG1hcmsgdmFyaWFibGUKLSAgICAgICAgIyB0aGlz
IGlzIHdvcmthcm91bmQsIGJlY2F1c2UgZm9yIG5vdyB3ZSBjYW5ub3QgaWRlbnRpZnkgdGhlIHNj
b3BlIG9mIGEgc2tpcCBtYXJrZXIKLSAgICAgICAgIyBUT0RPOiByZXZpc2l0IGFmdGVyIG1hcmtz
IHNjb3BlIHdvdWxkIGJlIGZpeGVkCi0gICAgICAgIHdoZW4gPSBnZXRhdHRyKGV2ZW50LCAnd2hl
bicsIE5vbmUpCi0gICAgICAgIGlmIHdoZW4gPT0gJ3NldHVwJyBhbmQgJ3NraXAnIGluIGtleXdv
cmRzIGFuZCAncHl0ZXN0bWFyaycgbm90IGluIGtleXdvcmRzOgotICAgICAgICAgICAga2V5ID0g
KGtleVswXSwgTm9uZSwga2V5WzJdLCApCi0gICAgICAgIGQuc2V0ZGVmYXVsdChrZXksIFtdKS5h
cHBlbmQoZXZlbnQpCi0gICAgdmFsdWVzID0gW10KLSAgICBmb3Iga2V5LCBldmVudHMgaW4gZC5p
dGVtcygpOgotICAgICAgICB2YWx1ZXMuYXBwZW5kKChsZW4oZXZlbnRzKSwpICsga2V5KQotICAg
IHJldHVybiB2YWx1ZXMKLQotCi1kZWYgc2hvd19za2lwcGVkKHRlcm1pbmFscmVwb3J0ZXIsIGxp
bmVzKToKLSAgICB0ciA9IHRlcm1pbmFscmVwb3J0ZXIKLSAgICBza2lwcGVkID0gdHIuc3RhdHMu
Z2V0KCdza2lwcGVkJywgW10pCi0gICAgaWYgc2tpcHBlZDoKLSAgICAgICAgIyBpZiBub3QgdHIu
aGFzb3B0KCdza2lwcGVkJyk6Ci0gICAgICAgICMgICAgdHIud3JpdGVfbGluZSgKLSAgICAgICAg
IyAgICAgICAgIiVkIHNraXBwZWQgdGVzdHMsIHNwZWNpZnkgLXJzIGZvciBtb3JlIGluZm8iICUK
LSAgICAgICAgIyAgICAgICAgbGVuKHNraXBwZWQpKQotICAgICAgICAjICAgIHJldHVybgotICAg
ICAgICBmc2tpcHMgPSBmb2xkZWRfc2tpcHMoc2tpcHBlZCkKLSAgICAgICAgaWYgZnNraXBzOgot
ICAgICAgICAgICAgIyB0ci53cml0ZV9zZXAoIl8iLCAic2tpcHBlZCB0ZXN0IHN1bW1hcnkiKQot
ICAgICAgICAgICAgZm9yIG51bSwgZnNwYXRoLCBsaW5lbm8sIHJlYXNvbiBpbiBmc2tpcHM6Ci0g
ICAgICAgICAgICAgICAgaWYgcmVhc29uLnN0YXJ0c3dpdGgoIlNraXBwZWQ6ICIpOgotICAgICAg
ICAgICAgICAgICAgICByZWFzb24gPSByZWFzb25bOTpdCi0gICAgICAgICAgICAgICAgaWYgbGlu
ZW5vIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoCi0gICAg
ICAgICAgICAgICAgICAgICAgICAiU0tJUCBbJWRdICVzOiVkOiAlcyIgJQotICAgICAgICAgICAg
ICAgICAgICAgICAgKG51bSwgZnNwYXRoLCBsaW5lbm8gKyAxLCByZWFzb24pKQotICAgICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZCgKLSAgICAgICAg
ICAgICAgICAgICAgICAgICJTS0lQIFslZF0gJXM6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAg
ICAgICAobnVtLCBmc3BhdGgsIHJlYXNvbikpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3Rlcm1pbmFsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90ZXJtaW5hbC5weQpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiYTVlODQ1ZTUxOTBhZjQ2YmRmNDRhMDM1MmY5Y2Q0
MDc2OWI2MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9fcHl0ZXN0L3Rlcm1pbmFsLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNzAzICsw
LDAgQEAKLSIiIiB0ZXJtaW5hbCByZXBvcnRpbmcgb2YgdGhlIGZ1bGwgdGVzdGluZyBwcm9jZXNz
LgotCi1UaGlzIGlzIGEgZ29vZCBzb3VyY2UgZm9yIGxvb2tpbmcgYXQgdGhlIHZhcmlvdXMgcmVw
b3J0aW5nIGhvb2tzLgotIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9y
dCwgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCi0KLWltcG9ydCBpdGVydG9vbHMKLWltcG9ydCBw
bGF0Zm9ybQotaW1wb3J0IHN5cwotaW1wb3J0IHRpbWUKLQotaW1wb3J0IHBsdWdneQotaW1wb3J0
IHB5Ci1pbXBvcnQgc2l4Ci0KLWltcG9ydCBweXRlc3QKLWZyb20gX3B5dGVzdCBpbXBvcnQgbm9k
ZXMKLWZyb20gX3B5dGVzdC5tYWluIGltcG9ydCBFWElUX09LLCBFWElUX1RFU1RTRkFJTEVELCBF
WElUX0lOVEVSUlVQVEVELCBcCi0gICAgRVhJVF9VU0FHRUVSUk9SLCBFWElUX05PVEVTVFNDT0xM
RUNURUQKLQotCi1kZWYgcHl0ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFy
c2VyLmdldGdyb3VwKCJ0ZXJtaW5hbCByZXBvcnRpbmciLCAicmVwb3J0aW5nIiwgYWZ0ZXI9Imdl
bmVyYWwiKQotICAgIGdyb3VwLl9hZGRvcHRpb24oJy12JywgJy0tdmVyYm9zZScsIGFjdGlvbj0i
Y291bnQiLAotICAgICAgICAgICAgICAgICAgICAgZGVzdD0idmVyYm9zZSIsIGRlZmF1bHQ9MCwg
aGVscD0iaW5jcmVhc2UgdmVyYm9zaXR5LiIpLAotICAgIGdyb3VwLl9hZGRvcHRpb24oJy1xJywg
Jy0tcXVpZXQnLCBhY3Rpb249ImNvdW50IiwKLSAgICAgICAgICAgICAgICAgICAgIGRlc3Q9InF1
aWV0IiwgZGVmYXVsdD0wLCBoZWxwPSJkZWNyZWFzZSB2ZXJib3NpdHkuIiksCi0gICAgZ3JvdXAu
X2FkZG9wdGlvbignLXInLAotICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRl
c3Q9InJlcG9ydGNoYXJzIiwgZGVmYXVsdD0nJywgbWV0YXZhcj0iY2hhcnMiLAotICAgICAgICAg
ICAgICAgICAgICAgaGVscD0ic2hvdyBleHRyYSB0ZXN0IHN1bW1hcnkgaW5mbyBhcyBzcGVjaWZp
ZWQgYnkgY2hhcnMgKGYpYWlsZWQsICIKLSAgICAgICAgICAgICAgICAgICAgICIoRSllcnJvciwg
KHMpc2tpcHBlZCwgKHgpZmFpbGVkLCAoWClwYXNzZWQsICIKLSAgICAgICAgICAgICAgICAgICAg
ICIocClwYXNzZWQsIChQKXBhc3NlZCB3aXRoIG91dHB1dCwgKGEpYWxsIGV4Y2VwdCBwUC4gIgot
ICAgICAgICAgICAgICAgICAgICAgIldhcm5pbmdzIGFyZSBkaXNwbGF5ZWQgYXQgYWxsIHRpbWVz
IGV4Y2VwdCB3aGVuICIKLSAgICAgICAgICAgICAgICAgICAgICItLWRpc2FibGUtd2FybmluZ3Mg
aXMgc2V0IikKLSAgICBncm91cC5fYWRkb3B0aW9uKCctLWRpc2FibGUtd2FybmluZ3MnLCAnLS1k
aXNhYmxlLXB5dGVzdC13YXJuaW5ncycsIGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAg
ICAgICBkZXN0PSdkaXNhYmxlX3dhcm5pbmdzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKLSAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9J2Rpc2FibGUgd2FybmluZ3Mgc3VtbWFyeScpCi0gICAgZ3Jv
dXAuX2FkZG9wdGlvbignLWwnLCAnLS1zaG93bG9jYWxzJywKLSAgICAgICAgICAgICAgICAgICAg
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InNob3dsb2NhbHMiLCBkZWZhdWx0PUZhbHNlLAot
ICAgICAgICAgICAgICAgICAgICAgaGVscD0ic2hvdyBsb2NhbHMgaW4gdHJhY2ViYWNrcyAoZGlz
YWJsZWQgYnkgZGVmYXVsdCkuIikKLSAgICBncm91cC5fYWRkb3B0aW9uKCctLXRiJywgbWV0YXZh
cj0ic3R5bGUiLAotICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InRi
c3R5bGUiLCBkZWZhdWx0PSdhdXRvJywKLSAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9Wydh
dXRvJywgJ2xvbmcnLCAnc2hvcnQnLCAnbm8nLCAnbGluZScsICduYXRpdmUnXSwKLSAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9InRyYWNlYmFjayBwcmludCBtb2RlIChhdXRvL2xvbmcvc2hvcnQv
bGluZS9uYXRpdmUvbm8pLiIpCi0gICAgZ3JvdXAuX2FkZG9wdGlvbignLS1mdWxsdHJhY2UnLCAn
LS1mdWxsLXRyYWNlJywKLSAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmVfdHJ1ZSIs
IGRlZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICBoZWxwPSJkb24ndCBjdXQgYW55
IHRyYWNlYmFja3MgKGRlZmF1bHQgaXMgdG8gY3V0KS4iKQotICAgIGdyb3VwLl9hZGRvcHRpb24o
Jy0tY29sb3InLCBtZXRhdmFyPSJjb2xvciIsCi0gICAgICAgICAgICAgICAgICAgICBhY3Rpb249
InN0b3JlIiwgZGVzdD0iY29sb3IiLCBkZWZhdWx0PSdhdXRvJywKLSAgICAgICAgICAgICAgICAg
ICAgIGNob2ljZXM9Wyd5ZXMnLCAnbm8nLCAnYXV0byddLAotICAgICAgICAgICAgICAgICAgICAg
aGVscD0iY29sb3IgdGVybWluYWwgb3V0cHV0ICh5ZXMvbm8vYXV0bykuIikKLQotICAgIHBhcnNl
ci5hZGRpbmkoImNvbnNvbGVfb3V0cHV0X3N0eWxlIiwKLSAgICAgICAgICAgICAgICAgIGhlbHA9
ImNvbnNvbGUgb3V0cHV0OiBjbGFzc2ljIG9yIHdpdGggYWRkaXRpb25hbCBwcm9ncmVzcyBpbmZv
cm1hdGlvbiAoY2xhc3NpY3xwcm9ncmVzcykuIiwKLSAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9
J3Byb2dyZXNzJykKLQotCi1kZWYgcHl0ZXN0X2NvbmZpZ3VyZShjb25maWcpOgotICAgIGNvbmZp
Zy5vcHRpb24udmVyYm9zZSAtPSBjb25maWcub3B0aW9uLnF1aWV0Ci0gICAgcmVwb3J0ZXIgPSBU
ZXJtaW5hbFJlcG9ydGVyKGNvbmZpZywgc3lzLnN0ZG91dCkKLSAgICBjb25maWcucGx1Z2lubWFu
YWdlci5yZWdpc3RlcihyZXBvcnRlciwgJ3Rlcm1pbmFscmVwb3J0ZXInKQotICAgIGlmIGNvbmZp
Zy5vcHRpb24uZGVidWcgb3IgY29uZmlnLm9wdGlvbi50cmFjZWNvbmZpZzoKLSAgICAgICAgZGVm
IG15d3JpdGVyKHRhZ3MsIGFyZ3MpOgotICAgICAgICAgICAgbXNnID0gIiAiLmpvaW4obWFwKHN0
ciwgYXJncykpCi0gICAgICAgICAgICByZXBvcnRlci53cml0ZV9saW5lKCJbdHJhY2Vjb25maWdd
ICIgKyBtc2cpCi0gICAgICAgIGNvbmZpZy50cmFjZS5yb290LnNldHByb2Nlc3NvcigicHl0ZXN0
OmNvbmZpZyIsIG15d3JpdGVyKQotCi0KLWRlZiBnZXRyZXBvcnRvcHQoY29uZmlnKToKLSAgICBy
ZXBvcnRvcHRzID0gIiIKLSAgICByZXBvcnRjaGFycyA9IGNvbmZpZy5vcHRpb24ucmVwb3J0Y2hh
cnMKLSAgICBpZiBub3QgY29uZmlnLm9wdGlvbi5kaXNhYmxlX3dhcm5pbmdzIGFuZCAndycgbm90
IGluIHJlcG9ydGNoYXJzOgotICAgICAgICByZXBvcnRjaGFycyArPSAndycKLSAgICBlbGlmIGNv
bmZpZy5vcHRpb24uZGlzYWJsZV93YXJuaW5ncyBhbmQgJ3cnIGluIHJlcG9ydGNoYXJzOgotICAg
ICAgICByZXBvcnRjaGFycyA9IHJlcG9ydGNoYXJzLnJlcGxhY2UoJ3cnLCAnJykKLSAgICBpZiBy
ZXBvcnRjaGFyczoKLSAgICAgICAgZm9yIGNoYXIgaW4gcmVwb3J0Y2hhcnM6Ci0gICAgICAgICAg
ICBpZiBjaGFyIG5vdCBpbiByZXBvcnRvcHRzIGFuZCBjaGFyICE9ICdhJzoKLSAgICAgICAgICAg
ICAgICByZXBvcnRvcHRzICs9IGNoYXIKLSAgICAgICAgICAgIGVsaWYgY2hhciA9PSAnYSc6Ci0g
ICAgICAgICAgICAgICAgcmVwb3J0b3B0cyA9ICdmRXN4WHcnCi0gICAgcmV0dXJuIHJlcG9ydG9w
dHMKLQotCi1kZWYgcHl0ZXN0X3JlcG9ydF90ZXN0c3RhdHVzKHJlcG9ydCk6Ci0gICAgaWYgcmVw
b3J0LnBhc3NlZDoKLSAgICAgICAgbGV0dGVyID0gIi4iCi0gICAgZWxpZiByZXBvcnQuc2tpcHBl
ZDoKLSAgICAgICAgbGV0dGVyID0gInMiCi0gICAgZWxpZiByZXBvcnQuZmFpbGVkOgotICAgICAg
ICBsZXR0ZXIgPSAiRiIKLSAgICAgICAgaWYgcmVwb3J0LndoZW4gIT0gImNhbGwiOgotICAgICAg
ICAgICAgbGV0dGVyID0gImYiCi0gICAgcmV0dXJuIHJlcG9ydC5vdXRjb21lLCBsZXR0ZXIsIHJl
cG9ydC5vdXRjb21lLnVwcGVyKCkKLQotCi1jbGFzcyBXYXJuaW5nUmVwb3J0OgotICAgICIiIgot
ICAgIFNpbXBsZSBzdHJ1Y3R1cmUgdG8gaG9sZCB3YXJuaW5ncyBpbmZvcm1hdGlvbiBjYXB0dXJl
ZCBieSBgYHB5dGVzdF9sb2d3YXJuaW5nYGAuCi0gICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18o
c2VsZiwgY29kZSwgbWVzc2FnZSwgbm9kZWlkPU5vbmUsIGZzbG9jYXRpb249Tm9uZSk6Ci0gICAg
ICAgICIiIgotICAgICAgICA6cGFyYW0gY29kZTogdW51c2VkCi0gICAgICAgIDpwYXJhbSBzdHIg
bWVzc2FnZTogdXNlciBmcmllbmRseSBtZXNzYWdlIGFib3V0IHRoZSB3YXJuaW5nCi0gICAgICAg
IDpwYXJhbSBzdHJ8Tm9uZSBub2RlaWQ6IG5vZGUgaWQgdGhhdCBnZW5lcmF0ZWQgdGhlIHdhcm5p
bmcgKHNlZSBgYGdldF9sb2NhdGlvbmBgKS4KLSAgICAgICAgOnBhcmFtIHR1cGxlfHB5LnBhdGgu
bG9jYWwgZnNsb2NhdGlvbjoKLSAgICAgICAgICAgIGZpbGUgc3lzdGVtIGxvY2F0aW9uIG9mIHRo
ZSBzb3VyY2Ugb2YgdGhlIHdhcm5pbmcgKHNlZSBgYGdldF9sb2NhdGlvbmBgKS4KLSAgICAgICAg
IiIiCi0gICAgICAgIHNlbGYuY29kZSA9IGNvZGUKLSAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVz
c2FnZQotICAgICAgICBzZWxmLm5vZGVpZCA9IG5vZGVpZAotICAgICAgICBzZWxmLmZzbG9jYXRp
b24gPSBmc2xvY2F0aW9uCi0KLSAgICBkZWYgZ2V0X2xvY2F0aW9uKHNlbGYsIGNvbmZpZyk6Ci0g
ICAgICAgICIiIgotICAgICAgICBSZXR1cm5zIHRoZSBtb3JlIHVzZXItZnJpZW5kbHkgaW5mb3Jt
YXRpb24gYWJvdXQgdGhlIGxvY2F0aW9uCi0gICAgICAgIG9mIGEgd2FybmluZywgb3IgTm9uZS4K
LSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYubm9kZWlkOgotICAgICAgICAgICAgcmV0dXJu
IHNlbGYubm9kZWlkCi0gICAgICAgIGlmIHNlbGYuZnNsb2NhdGlvbjoKLSAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2Uoc2VsZi5mc2xvY2F0aW9uLCB0dXBsZSkgYW5kIGxlbihzZWxmLmZzbG9jYXRp
b24pID49IDI6Ci0gICAgICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVudW0gPSBzZWxmLmZzbG9j
YXRpb25bOjJdCi0gICAgICAgICAgICAgICAgcmVscGF0aCA9IHB5LnBhdGgubG9jYWwoZmlsZW5h
bWUpLnJlbHRvKGNvbmZpZy5pbnZvY2F0aW9uX2RpcikKLSAgICAgICAgICAgICAgICByZXR1cm4g
JyVzOiVzJyAlIChyZWxwYXRoLCBsaW5lbnVtKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgICAgICByZXR1cm4gc3RyKHNlbGYuZnNsb2NhdGlvbikKLSAgICAgICAgcmV0dXJuIE5vbmUK
LQotCi1jbGFzcyBUZXJtaW5hbFJlcG9ydGVyOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb25m
aWcsIGZpbGU9Tm9uZSk6Ci0gICAgICAgIGltcG9ydCBfcHl0ZXN0LmNvbmZpZwotICAgICAgICBz
ZWxmLmNvbmZpZyA9IGNvbmZpZwotICAgICAgICBzZWxmLnZlcmJvc2l0eSA9IHNlbGYuY29uZmln
Lm9wdGlvbi52ZXJib3NlCi0gICAgICAgIHNlbGYuc2hvd2hlYWRlciA9IHNlbGYudmVyYm9zaXR5
ID49IDAKLSAgICAgICAgc2VsZi5zaG93ZnNwYXRoID0gc2VsZi52ZXJib3NpdHkgPj0gMAotICAg
ICAgICBzZWxmLnNob3dsb25ndGVzdGluZm8gPSBzZWxmLnZlcmJvc2l0eSA+IDAKLSAgICAgICAg
c2VsZi5fbnVtY29sbGVjdGVkID0gMAotICAgICAgICBzZWxmLl9zZXNzaW9uID0gTm9uZQotCi0g
ICAgICAgIHNlbGYuc3RhdHMgPSB7fQotICAgICAgICBzZWxmLnN0YXJ0ZGlyID0gcHkucGF0aC5s
b2NhbCgpCi0gICAgICAgIGlmIGZpbGUgaXMgTm9uZToKLSAgICAgICAgICAgIGZpbGUgPSBzeXMu
c3Rkb3V0Ci0gICAgICAgIHNlbGYuX3R3ID0gX3B5dGVzdC5jb25maWcuY3JlYXRlX3Rlcm1pbmFs
X3dyaXRlcihjb25maWcsIGZpbGUpCi0gICAgICAgICMgc2VsZi53cml0ZXIgd2lsbCBiZSBkZXBy
ZWNhdGVkIGluIHB5dGVzdC0zLjQKLSAgICAgICAgc2VsZi53cml0ZXIgPSBzZWxmLl90dwotICAg
ICAgICBzZWxmLl9zY3JlZW5fd2lkdGggPSBzZWxmLl90dy5mdWxsd2lkdGgKLSAgICAgICAgc2Vs
Zi5jdXJyZW50ZnNwYXRoID0gTm9uZQotICAgICAgICBzZWxmLnJlcG9ydGNoYXJzID0gZ2V0cmVw
b3J0b3B0KGNvbmZpZykKLSAgICAgICAgc2VsZi5oYXNtYXJrdXAgPSBzZWxmLl90dy5oYXNtYXJr
dXAKLSAgICAgICAgc2VsZi5pc2F0dHkgPSBmaWxlLmlzYXR0eSgpCi0gICAgICAgIHNlbGYuX3By
b2dyZXNzX2l0ZW1zX3JlcG9ydGVkID0gMAotICAgICAgICBzZWxmLl9zaG93X3Byb2dyZXNzX2lu
Zm8gPSBzZWxmLmNvbmZpZy5nZXRpbmkoJ2NvbnNvbGVfb3V0cHV0X3N0eWxlJykgPT0gJ3Byb2dy
ZXNzJwotCi0gICAgZGVmIGhhc29wdChzZWxmLCBjaGFyKToKLSAgICAgICAgY2hhciA9IHsneGZh
aWxlZCc6ICd4JywgJ3NraXBwZWQnOiAncyd9LmdldChjaGFyLCBjaGFyKQotICAgICAgICByZXR1
cm4gY2hhciBpbiBzZWxmLnJlcG9ydGNoYXJzCi0KLSAgICBkZWYgd3JpdGVfZnNwYXRoX3Jlc3Vs
dChzZWxmLCBub2RlaWQsIHJlcyk6Ci0gICAgICAgIGZzcGF0aCA9IHNlbGYuY29uZmlnLnJvb3Rk
aXIuam9pbihub2RlaWQuc3BsaXQoIjo6IilbMF0pCi0gICAgICAgIGlmIGZzcGF0aCAhPSBzZWxm
LmN1cnJlbnRmc3BhdGg6Ci0gICAgICAgICAgICBpZiBzZWxmLmN1cnJlbnRmc3BhdGggaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25f
ZmlsbGluZ19zcGFjZSgpCi0gICAgICAgICAgICBzZWxmLmN1cnJlbnRmc3BhdGggPSBmc3BhdGgK
LSAgICAgICAgICAgIGZzcGF0aCA9IHNlbGYuc3RhcnRkaXIuYmVzdHJlbHBhdGgoZnNwYXRoKQot
ICAgICAgICAgICAgc2VsZi5fdHcubGluZSgpCi0gICAgICAgICAgICBzZWxmLl90dy53cml0ZShm
c3BhdGggKyAiICIpCi0gICAgICAgIHNlbGYuX3R3LndyaXRlKHJlcykKLQotICAgIGRlZiB3cml0
ZV9lbnN1cmVfcHJlZml4KHNlbGYsIHByZWZpeCwgZXh0cmE9IiIsICoqa3dhcmdzKToKLSAgICAg
ICAgaWYgc2VsZi5jdXJyZW50ZnNwYXRoICE9IHByZWZpeDoKLSAgICAgICAgICAgIHNlbGYuX3R3
LmxpbmUoKQotICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRoID0gcHJlZml4Ci0gICAgICAg
ICAgICBzZWxmLl90dy53cml0ZShwcmVmaXgpCi0gICAgICAgIGlmIGV4dHJhOgotICAgICAgICAg
ICAgc2VsZi5fdHcud3JpdGUoZXh0cmEsICoqa3dhcmdzKQotICAgICAgICAgICAgc2VsZi5jdXJy
ZW50ZnNwYXRoID0gLTIKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlX3Byb2dyZXNzX2luZm9ybWF0
aW9uX2ZpbGxpbmdfc3BhY2UoKQotCi0gICAgZGVmIGVuc3VyZV9uZXdsaW5lKHNlbGYpOgotICAg
ICAgICBpZiBzZWxmLmN1cnJlbnRmc3BhdGg6Ci0gICAgICAgICAgICBzZWxmLl90dy5saW5lKCkK
LSAgICAgICAgICAgIHNlbGYuY3VycmVudGZzcGF0aCA9IE5vbmUKLQotICAgIGRlZiB3cml0ZShz
ZWxmLCBjb250ZW50LCAqKm1hcmt1cCk6Ci0gICAgICAgIHNlbGYuX3R3LndyaXRlKGNvbnRlbnQs
ICoqbWFya3VwKQotCi0gICAgZGVmIHdyaXRlX2xpbmUoc2VsZiwgbGluZSwgKiptYXJrdXApOgot
ICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShsaW5lLCBzaXgudGV4dF90eXBlKToKLSAgICAgICAg
ICAgIGxpbmUgPSBzaXgudGV4dF90eXBlKGxpbmUsIGVycm9ycz0icmVwbGFjZSIpCi0gICAgICAg
IHNlbGYuZW5zdXJlX25ld2xpbmUoKQotICAgICAgICBzZWxmLl90dy5saW5lKGxpbmUsICoqbWFy
a3VwKQotCi0gICAgZGVmIHJld3JpdGUoc2VsZiwgbGluZSwgKiptYXJrdXApOgotICAgICAgICAi
IiIKLSAgICAgICAgUmV3aW5kcyB0aGUgdGVybWluYWwgY3Vyc29yIHRvIHRoZSBiZWdpbm5pbmcg
YW5kIHdyaXRlcyB0aGUgZ2l2ZW4gbGluZS4KLQotICAgICAgICA6a3dhcmcgZXJhc2U6IGlmIFRy
dWUsIHdpbGwgYWxzbyBhZGQgc3BhY2VzIHVudGlsIHRoZSBmdWxsIHRlcm1pbmFsIHdpZHRoIHRv
IGVuc3VyZQotICAgICAgICAgICAgcHJldmlvdXMgbGluZXMgYXJlIHByb3Blcmx5IGVyYXNlZC4K
LQotICAgICAgICBUaGUgcmVzdCBvZiB0aGUga2V5d29yZCBhcmd1bWVudHMgYXJlIG1hcmt1cCBp
bnN0cnVjdGlvbnMuCi0gICAgICAgICIiIgotICAgICAgICBlcmFzZSA9IG1hcmt1cC5wb3AoJ2Vy
YXNlJywgRmFsc2UpCi0gICAgICAgIGlmIGVyYXNlOgotICAgICAgICAgICAgZmlsbF9jb3VudCA9
IHNlbGYuX3R3LmZ1bGx3aWR0aCAtIGxlbihsaW5lKSAtIDEKLSAgICAgICAgICAgIGZpbGwgPSAn
ICcgKiBmaWxsX2NvdW50Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmaWxsID0gJycKLSAg
ICAgICAgbGluZSA9IHN0cihsaW5lKQotICAgICAgICBzZWxmLl90dy53cml0ZSgiXHIiICsgbGlu
ZSArIGZpbGwsICoqbWFya3VwKQotCi0gICAgZGVmIHdyaXRlX3NlcChzZWxmLCBzZXAsIHRpdGxl
PU5vbmUsICoqbWFya3VwKToKLSAgICAgICAgc2VsZi5lbnN1cmVfbmV3bGluZSgpCi0gICAgICAg
IHNlbGYuX3R3LnNlcChzZXAsIHRpdGxlLCAqKm1hcmt1cCkKLQotICAgIGRlZiBzZWN0aW9uKHNl
bGYsIHRpdGxlLCBzZXA9Ij0iLCAqKmt3KToKLSAgICAgICAgc2VsZi5fdHcuc2VwKHNlcCwgdGl0
bGUsICoqa3cpCi0KLSAgICBkZWYgbGluZShzZWxmLCBtc2csICoqa3cpOgotICAgICAgICBzZWxm
Ll90dy5saW5lKG1zZywgKiprdykKLQotICAgIGRlZiBweXRlc3RfaW50ZXJuYWxlcnJvcihzZWxm
LCBleGNyZXByKToKLSAgICAgICAgZm9yIGxpbmUgaW4gc2l4LnRleHRfdHlwZShleGNyZXByKS5z
cGxpdCgiXG4iKToKLSAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZSgiSU5URVJOQUxFUlJPUj4g
IiArIGxpbmUpCi0gICAgICAgIHJldHVybiAxCi0KLSAgICBkZWYgcHl0ZXN0X2xvZ3dhcm5pbmco
c2VsZiwgY29kZSwgZnNsb2NhdGlvbiwgbWVzc2FnZSwgbm9kZWlkKToKLSAgICAgICAgd2Fybmlu
Z3MgPSBzZWxmLnN0YXRzLnNldGRlZmF1bHQoIndhcm5pbmdzIiwgW10pCi0gICAgICAgIHdhcm5p
bmcgPSBXYXJuaW5nUmVwb3J0KGNvZGU9Y29kZSwgZnNsb2NhdGlvbj1mc2xvY2F0aW9uLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPW1lc3NhZ2UsIG5vZGVpZD1ub2Rl
aWQpCi0gICAgICAgIHdhcm5pbmdzLmFwcGVuZCh3YXJuaW5nKQotCi0gICAgZGVmIHB5dGVzdF9w
bHVnaW5fcmVnaXN0ZXJlZChzZWxmLCBwbHVnaW4pOgotICAgICAgICBpZiBzZWxmLmNvbmZpZy5v
cHRpb24udHJhY2Vjb25maWc6Ci0gICAgICAgICAgICBtc2cgPSAiUExVR0lOIHJlZ2lzdGVyZWQ6
ICVzIiAlIChwbHVnaW4sKQotICAgICAgICAgICAgIyBYWFggdGhpcyBldmVudCBtYXkgaGFwcGVu
IGR1cmluZyBzZXR1cC90ZWFyZG93biB0aW1lCi0gICAgICAgICAgICAjICAgICB3aGljaCB1bmZv
cnR1bmF0ZWx5IGNhcHR1cmVzIG91ciBvdXRwdXQgaGVyZQotICAgICAgICAgICAgIyAgICAgd2hp
Y2ggZ2FyYmxlcyBvdXIgb3V0cHV0IGlmIHdlIHVzZSBzZWxmLndyaXRlX2xpbmUKLSAgICAgICAg
ICAgIHNlbGYud3JpdGVfbGluZShtc2cpCi0KLSAgICBkZWYgcHl0ZXN0X2Rlc2VsZWN0ZWQoc2Vs
ZiwgaXRlbXMpOgotICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQoJ2Rlc2VsZWN0ZWQnLCBb
XSkuZXh0ZW5kKGl0ZW1zKQotCi0gICAgZGVmIHB5dGVzdF9ydW50ZXN0X2xvZ3N0YXJ0KHNlbGYs
IG5vZGVpZCwgbG9jYXRpb24pOgotICAgICAgICAjIGVuc3VyZSB0aGF0IHRoZSBwYXRoIGlzIHBy
aW50ZWQgYmVmb3JlIHRoZQotICAgICAgICAjIDFzdCB0ZXN0IG9mIGEgbW9kdWxlIHN0YXJ0cyBy
dW5uaW5nCi0gICAgICAgIGlmIHNlbGYuc2hvd2xvbmd0ZXN0aW5mbzoKLSAgICAgICAgICAgIGxp
bmUgPSBzZWxmLl9sb2NhdGlvbmxpbmUobm9kZWlkLCAqbG9jYXRpb24pCi0gICAgICAgICAgICBz
ZWxmLndyaXRlX2Vuc3VyZV9wcmVmaXgobGluZSwgIiIpCi0gICAgICAgIGVsaWYgc2VsZi5zaG93
ZnNwYXRoOgotICAgICAgICAgICAgZnNpZCA9IG5vZGVpZC5zcGxpdCgiOjoiKVswXQotICAgICAg
ICAgICAgc2VsZi53cml0ZV9mc3BhdGhfcmVzdWx0KGZzaWQsICIiKQotCi0gICAgZGVmIHB5dGVz
dF9ydW50ZXN0X2xvZ3JlcG9ydChzZWxmLCByZXBvcnQpOgotICAgICAgICByZXAgPSByZXBvcnQK
LSAgICAgICAgcmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVwb3J0X3Rlc3RzdGF0dXMo
cmVwb3J0PXJlcCkKLSAgICAgICAgY2F0LCBsZXR0ZXIsIHdvcmQgPSByZXMKLSAgICAgICAgaWYg
aXNpbnN0YW5jZSh3b3JkLCB0dXBsZSk6Ci0gICAgICAgICAgICB3b3JkLCBtYXJrdXAgPSB3b3Jk
Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBtYXJrdXAgPSBOb25lCi0gICAgICAgIHNlbGYu
c3RhdHMuc2V0ZGVmYXVsdChjYXQsIFtdKS5hcHBlbmQocmVwKQotICAgICAgICBzZWxmLl90ZXN0
c19yYW4gPSBUcnVlCi0gICAgICAgIGlmIG5vdCBsZXR0ZXIgYW5kIG5vdCB3b3JkOgotICAgICAg
ICAgICAgIyBwcm9iYWJseSBwYXNzZWQgc2V0dXAvdGVhcmRvd24KLSAgICAgICAgICAgIHJldHVy
bgotICAgICAgICBydW5uaW5nX3hkaXN0ID0gaGFzYXR0cihyZXAsICdub2RlJykKLSAgICAgICAg
c2VsZi5fcHJvZ3Jlc3NfaXRlbXNfcmVwb3J0ZWQgKz0gMQotICAgICAgICBpZiBzZWxmLnZlcmJv
c2l0eSA8PSAwOgotICAgICAgICAgICAgaWYgbm90IHJ1bm5pbmdfeGRpc3QgYW5kIHNlbGYuc2hv
d2ZzcGF0aDoKLSAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2ZzcGF0aF9yZXN1bHQocmVwLm5v
ZGVpZCwgbGV0dGVyKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLl90
dy53cml0ZShsZXR0ZXIpCi0gICAgICAgICAgICBzZWxmLl93cml0ZV9wcm9ncmVzc19pZl9wYXN0
X2VkZ2UoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgbWFya3VwIGlzIE5vbmU6Ci0g
ICAgICAgICAgICAgICAgaWYgcmVwLnBhc3NlZDoKLSAgICAgICAgICAgICAgICAgICAgbWFya3Vw
ID0geydncmVlbic6IFRydWV9Ci0gICAgICAgICAgICAgICAgZWxpZiByZXAuZmFpbGVkOgotICAg
ICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7J3JlZCc6IFRydWV9Ci0gICAgICAgICAgICAgICAg
ZWxpZiByZXAuc2tpcHBlZDoKLSAgICAgICAgICAgICAgICAgICAgbWFya3VwID0geyd5ZWxsb3cn
OiBUcnVlfQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG1hcmt1
cCA9IHt9Ci0gICAgICAgICAgICBsaW5lID0gc2VsZi5fbG9jYXRpb25saW5lKHJlcC5ub2RlaWQs
ICpyZXAubG9jYXRpb24pCi0gICAgICAgICAgICBpZiBub3QgcnVubmluZ194ZGlzdDoKLSAgICAg
ICAgICAgICAgICBzZWxmLndyaXRlX2Vuc3VyZV9wcmVmaXgobGluZSwgd29yZCwgKiptYXJrdXAp
Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuZW5zdXJlX25ld2xpbmUo
KQotICAgICAgICAgICAgICAgIHNlbGYuX3R3LndyaXRlKCJbJXNdIiAlIHJlcC5ub2RlLmdhdGV3
YXkuaWQpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5fc2hvd19wcm9ncmVzc19pbmZvOgotICAg
ICAgICAgICAgICAgICAgICBzZWxmLl90dy53cml0ZShzZWxmLl9nZXRfcHJvZ3Jlc3NfaW5mb3Jt
YXRpb25fbWVzc2FnZSgpICsgIiAiLCBjeWFuPVRydWUpCi0gICAgICAgICAgICAgICAgZWxzZToK
LSAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHcud3JpdGUoJyAnKQotICAgICAgICAgICAgICAg
IHNlbGYuX3R3LndyaXRlKHdvcmQsICoqbWFya3VwKQotICAgICAgICAgICAgICAgIHNlbGYuX3R3
LndyaXRlKCIgIiArIGxpbmUpCi0gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50ZnNwYXRoID0g
LTIKLQotICAgIGRlZiBfd3JpdGVfcHJvZ3Jlc3NfaWZfcGFzdF9lZGdlKHNlbGYpOgotICAgICAg
ICBpZiBub3Qgc2VsZi5fc2hvd19wcm9ncmVzc19pbmZvOgotICAgICAgICAgICAgcmV0dXJuCi0g
ICAgICAgIGxhc3RfaXRlbSA9IHNlbGYuX3Byb2dyZXNzX2l0ZW1zX3JlcG9ydGVkID09IHNlbGYu
X3Nlc3Npb24udGVzdHNjb2xsZWN0ZWQKLSAgICAgICAgaWYgbGFzdF9pdGVtOgotICAgICAgICAg
ICAgc2VsZi5fd3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19zcGFjZSgpCi0gICAg
ICAgICAgICByZXR1cm4KLQotICAgICAgICBwYXN0X2VkZ2UgPSBzZWxmLl90dy5jaGFyc19vbl9j
dXJyZW50X2xpbmUgKyBzZWxmLl9QUk9HUkVTU19MRU5HVEggKyAxID49IHNlbGYuX3NjcmVlbl93
aWR0aAotICAgICAgICBpZiBwYXN0X2VkZ2U6Ci0gICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRf
cHJvZ3Jlc3NfaW5mb3JtYXRpb25fbWVzc2FnZSgpCi0gICAgICAgICAgICBzZWxmLl90dy53cml0
ZShtc2cgKyAnXG4nLCBjeWFuPVRydWUpCi0KLSAgICBfUFJPR1JFU1NfTEVOR1RIID0gbGVuKCcg
WzEwMCVdJykKLQotICAgIGRlZiBfZ2V0X3Byb2dyZXNzX2luZm9ybWF0aW9uX21lc3NhZ2Uoc2Vs
Zik6Ci0gICAgICAgIGNvbGxlY3RlZCA9IHNlbGYuX3Nlc3Npb24udGVzdHNjb2xsZWN0ZWQKLSAg
ICAgICAgaWYgY29sbGVjdGVkOgotICAgICAgICAgICAgcHJvZ3Jlc3MgPSBzZWxmLl9wcm9ncmVz
c19pdGVtc19yZXBvcnRlZCAqIDEwMCAvLyBjb2xsZWN0ZWQKLSAgICAgICAgICAgIHJldHVybiAn
IFt7OjNkfSVdJy5mb3JtYXQocHJvZ3Jlc3MpCi0gICAgICAgIHJldHVybiAnIFsxMDAlXScKLQot
ICAgIGRlZiBfd3JpdGVfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fZmlsbGluZ19zcGFjZShzZWxmKToK
LSAgICAgICAgaWYgbm90IHNlbGYuX3Nob3dfcHJvZ3Jlc3NfaW5mbzoKLSAgICAgICAgICAgIHJl
dHVybgotICAgICAgICBtc2cgPSBzZWxmLl9nZXRfcHJvZ3Jlc3NfaW5mb3JtYXRpb25fbWVzc2Fn
ZSgpCi0gICAgICAgIGZpbGwgPSAnICcgKiAoc2VsZi5fdHcuZnVsbHdpZHRoIC0gc2VsZi5fdHcu
Y2hhcnNfb25fY3VycmVudF9saW5lIC0gbGVuKG1zZykgLSAxKQotICAgICAgICBzZWxmLndyaXRl
KGZpbGwgKyBtc2csIGN5YW49VHJ1ZSkKLQotICAgIGRlZiBweXRlc3RfY29sbGVjdGlvbihzZWxm
KToKLSAgICAgICAgaWYgbm90IHNlbGYuaXNhdHR5IGFuZCBzZWxmLmNvbmZpZy5vcHRpb24udmVy
Ym9zZSA+PSAxOgotICAgICAgICAgICAgc2VsZi53cml0ZSgiY29sbGVjdGluZyAuLi4gIiwgYm9s
ZD1UcnVlKQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0cmVwb3J0KHNlbGYsIHJlcG9ydCk6Ci0g
ICAgICAgIGlmIHJlcG9ydC5mYWlsZWQ6Ci0gICAgICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1
bHQoImVycm9yIiwgW10pLmFwcGVuZChyZXBvcnQpCi0gICAgICAgIGVsaWYgcmVwb3J0LnNraXBw
ZWQ6Ci0gICAgICAgICAgICBzZWxmLnN0YXRzLnNldGRlZmF1bHQoInNraXBwZWQiLCBbXSkuYXBw
ZW5kKHJlcG9ydCkKLSAgICAgICAgaXRlbXMgPSBbeCBmb3IgeCBpbiByZXBvcnQucmVzdWx0IGlm
IGlzaW5zdGFuY2UoeCwgcHl0ZXN0Lkl0ZW0pXQotICAgICAgICBzZWxmLl9udW1jb2xsZWN0ZWQg
Kz0gbGVuKGl0ZW1zKQotICAgICAgICBpZiBzZWxmLmlzYXR0eToKLSAgICAgICAgICAgICMgc2Vs
Zi53cml0ZV9mc3BhdGhfcmVzdWx0KHJlcG9ydC5ub2RlaWQsICdFJykKLSAgICAgICAgICAgIHNl
bGYucmVwb3J0X2NvbGxlY3QoKQotCi0gICAgZGVmIHJlcG9ydF9jb2xsZWN0KHNlbGYsIGZpbmFs
PUZhbHNlKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnZlcmJvc2UgPCAwOgotICAg
ICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgZXJyb3JzID0gbGVuKHNlbGYuc3RhdHMuZ2V0KCdl
cnJvcicsIFtdKSkKLSAgICAgICAgc2tpcHBlZCA9IGxlbihzZWxmLnN0YXRzLmdldCgnc2tpcHBl
ZCcsIFtdKSkKLSAgICAgICAgaWYgZmluYWw6Ci0gICAgICAgICAgICBsaW5lID0gImNvbGxlY3Rl
ZCAiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsaW5lID0gImNvbGxlY3RpbmcgIgotICAg
ICAgICBsaW5lICs9IHN0cihzZWxmLl9udW1jb2xsZWN0ZWQpICsgIiBpdGVtIiArICgnJyBpZiBz
ZWxmLl9udW1jb2xsZWN0ZWQgPT0gMSBlbHNlICdzJykKLSAgICAgICAgaWYgZXJyb3JzOgotICAg
ICAgICAgICAgbGluZSArPSAiIC8gJWQgZXJyb3JzIiAlIGVycm9ycwotICAgICAgICBpZiBza2lw
cGVkOgotICAgICAgICAgICAgbGluZSArPSAiIC8gJWQgc2tpcHBlZCIgJSBza2lwcGVkCi0gICAg
ICAgIGlmIHNlbGYuaXNhdHR5OgotICAgICAgICAgICAgc2VsZi5yZXdyaXRlKGxpbmUsIGJvbGQ9
VHJ1ZSwgZXJhc2U9VHJ1ZSkKLSAgICAgICAgICAgIGlmIGZpbmFsOgotICAgICAgICAgICAgICAg
IHNlbGYud3JpdGUoJ1xuJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYud3JpdGVf
bGluZShsaW5lKQotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX21vZGlmeWl0ZW1zKHNlbGYp
OgotICAgICAgICBzZWxmLnJlcG9ydF9jb2xsZWN0KFRydWUpCi0KLSAgICBAcHl0ZXN0Lmhvb2tp
bXBsKHRyeWxhc3Q9VHJ1ZSkKLSAgICBkZWYgcHl0ZXN0X3Nlc3Npb25zdGFydChzZWxmLCBzZXNz
aW9uKToKLSAgICAgICAgc2VsZi5fc2Vzc2lvbiA9IHNlc3Npb24KLSAgICAgICAgc2VsZi5fc2Vz
c2lvbnN0YXJ0dGltZSA9IHRpbWUudGltZSgpCi0gICAgICAgIGlmIG5vdCBzZWxmLnNob3doZWFk
ZXI6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2VsZi53cml0ZV9zZXAoIj0iLCAidGVz
dCBzZXNzaW9uIHN0YXJ0cyIsIGJvbGQ9VHJ1ZSkKLSAgICAgICAgdmVyaW5mbyA9IHBsYXRmb3Jt
LnB5dGhvbl92ZXJzaW9uKCkKLSAgICAgICAgbXNnID0gInBsYXRmb3JtICVzIC0tIFB5dGhvbiAl
cyIgJSAoc3lzLnBsYXRmb3JtLCB2ZXJpbmZvKQotICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ3B5
cHlfdmVyc2lvbl9pbmZvJyk6Ci0gICAgICAgICAgICB2ZXJpbmZvID0gIi4iLmpvaW4obWFwKHN0
ciwgc3lzLnB5cHlfdmVyc2lvbl9pbmZvWzozXSkpCi0gICAgICAgICAgICBtc2cgKz0gIltweXB5
LSVzLSVzXSIgJSAodmVyaW5mbywgc3lzLnB5cHlfdmVyc2lvbl9pbmZvWzNdKQotICAgICAgICBt
c2cgKz0gIiwgcHl0ZXN0LSVzLCBweS0lcywgcGx1Z2d5LSVzIiAlICgKLSAgICAgICAgICAgICAg
IHB5dGVzdC5fX3ZlcnNpb25fXywgcHkuX192ZXJzaW9uX18sIHBsdWdneS5fX3ZlcnNpb25fXykK
LSAgICAgICAgaWYgc2VsZi52ZXJib3NpdHkgPiAwIG9yIHNlbGYuY29uZmlnLm9wdGlvbi5kZWJ1
ZyBvciBcCi0gICAgICAgICAgIGdldGF0dHIoc2VsZi5jb25maWcub3B0aW9uLCAncGFzdGViaW4n
LCBOb25lKToKLSAgICAgICAgICAgIG1zZyArPSAiIC0tICIgKyBzdHIoc3lzLmV4ZWN1dGFibGUp
Ci0gICAgICAgIHNlbGYud3JpdGVfbGluZShtc2cpCi0gICAgICAgIGxpbmVzID0gc2VsZi5jb25m
aWcuaG9vay5weXRlc3RfcmVwb3J0X2hlYWRlcigKLSAgICAgICAgICAgIGNvbmZpZz1zZWxmLmNv
bmZpZywgc3RhcnRkaXI9c2VsZi5zdGFydGRpcikKLSAgICAgICAgc2VsZi5fd3JpdGVfcmVwb3J0
X2xpbmVzX2Zyb21faG9va3MobGluZXMpCi0KLSAgICBkZWYgX3dyaXRlX3JlcG9ydF9saW5lc19m
cm9tX2hvb2tzKHNlbGYsIGxpbmVzKToKLSAgICAgICAgbGluZXMucmV2ZXJzZSgpCi0gICAgICAg
IGZvciBsaW5lIGluIGZsYXR0ZW4obGluZXMpOgotICAgICAgICAgICAgc2VsZi53cml0ZV9saW5l
KGxpbmUpCi0KLSAgICBkZWYgcHl0ZXN0X3JlcG9ydF9oZWFkZXIoc2VsZiwgY29uZmlnKToKLSAg
ICAgICAgaW5pZmlsZSA9ICIiCi0gICAgICAgIGlmIGNvbmZpZy5pbmlmaWxlOgotICAgICAgICAg
ICAgaW5pZmlsZSA9ICIgIiArIGNvbmZpZy5yb290ZGlyLmJlc3RyZWxwYXRoKGNvbmZpZy5pbmlm
aWxlKQotICAgICAgICBsaW5lcyA9IFsicm9vdGRpcjogJXMsIGluaWZpbGU6JXMiICUgKGNvbmZp
Zy5yb290ZGlyLCBpbmlmaWxlKV0KLQotICAgICAgICBwbHVnaW5pbmZvID0gY29uZmlnLnBsdWdp
bm1hbmFnZXIubGlzdF9wbHVnaW5fZGlzdGluZm8oKQotICAgICAgICBpZiBwbHVnaW5pbmZvOgot
Ci0gICAgICAgICAgICBsaW5lcy5hcHBlbmQoCi0gICAgICAgICAgICAgICAgInBsdWdpbnM6ICVz
IiAlICIsICIuam9pbihfcGx1Z2luX25hbWV2ZXJzaW9ucyhwbHVnaW5pbmZvKSkpCi0gICAgICAg
IHJldHVybiBsaW5lcwotCi0gICAgZGVmIHB5dGVzdF9jb2xsZWN0aW9uX2ZpbmlzaChzZWxmLCBz
ZXNzaW9uKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLmNvbGxlY3Rvbmx5OgotICAg
ICAgICAgICAgc2VsZi5fcHJpbnRjb2xsZWN0ZWRpdGVtcyhzZXNzaW9uLml0ZW1zKQotICAgICAg
ICAgICAgaWYgc2VsZi5zdGF0cy5nZXQoJ2ZhaWxlZCcpOgotICAgICAgICAgICAgICAgIHNlbGYu
X3R3LnNlcCgiISIsICJjb2xsZWN0aW9uIGZhaWx1cmVzIikKLSAgICAgICAgICAgICAgICBmb3Ig
cmVwIGluIHNlbGYuc3RhdHMuZ2V0KCdmYWlsZWQnKToKLSAgICAgICAgICAgICAgICAgICAgcmVw
LnRvdGVybWluYWwoc2VsZi5fdHcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAg
ICAgIHJldHVybiAwCi0gICAgICAgIGxpbmVzID0gc2VsZi5jb25maWcuaG9vay5weXRlc3RfcmVw
b3J0X2NvbGxlY3Rpb25maW5pc2goCi0gICAgICAgICAgICBjb25maWc9c2VsZi5jb25maWcsIHN0
YXJ0ZGlyPXNlbGYuc3RhcnRkaXIsIGl0ZW1zPXNlc3Npb24uaXRlbXMpCi0gICAgICAgIHNlbGYu
X3dyaXRlX3JlcG9ydF9saW5lc19mcm9tX2hvb2tzKGxpbmVzKQotCi0gICAgZGVmIF9wcmludGNv
bGxlY3RlZGl0ZW1zKHNlbGYsIGl0ZW1zKToKLSAgICAgICAgIyB0byBwcmludCBvdXQgaXRlbXMg
YW5kIHRoZWlyIHBhcmVudCBjb2xsZWN0b3JzCi0gICAgICAgICMgd2UgdGFrZSBjYXJlIHRvIGxl
YXZlIG91dCBJbnN0YW5jZXMgYWthICgpCi0gICAgICAgICMgYmVjYXVzZSBsYXRlciB2ZXJzaW9u
cyBhcmUgZ29pbmcgdG8gZ2V0IHJpZCBvZiB0aGVtIGFueXdheQotICAgICAgICBpZiBzZWxmLmNv
bmZpZy5vcHRpb24udmVyYm9zZSA8IDA6Ci0gICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRp
b24udmVyYm9zZSA8IC0xOgotICAgICAgICAgICAgICAgIGNvdW50cyA9IHt9Ci0gICAgICAgICAg
ICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIG5hbWUgPSBpdGVt
Lm5vZGVpZC5zcGxpdCgnOjonLCAxKVswXQotICAgICAgICAgICAgICAgICAgICBjb3VudHNbbmFt
ZV0gPSBjb3VudHMuZ2V0KG5hbWUsIDApICsgMQotICAgICAgICAgICAgICAgIGZvciBuYW1lLCBj
b3VudCBpbiBzb3J0ZWQoY291bnRzLml0ZW1zKCkpOgotICAgICAgICAgICAgICAgICAgICBzZWxm
Ll90dy5saW5lKCIlczogJWQiICUgKG5hbWUsIGNvdW50KSkKLSAgICAgICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6Ci0gICAgICAgICAgICAgICAgICAgIG5v
ZGVpZCA9IGl0ZW0ubm9kZWlkCi0gICAgICAgICAgICAgICAgICAgIG5vZGVpZCA9IG5vZGVpZC5y
ZXBsYWNlKCI6OigpOjoiLCAiOjoiKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5l
KG5vZGVpZCkKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzdGFjayA9IFtdCi0gICAgICAg
IGluZGVudCA9ICIiCi0gICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgotICAgICAgICAgICAgbmVl
ZGVkX2NvbGxlY3RvcnMgPSBpdGVtLmxpc3RjaGFpbigpWzE6XSAgIyBzdHJpcCByb290IG5vZGUK
LSAgICAgICAgICAgIHdoaWxlIHN0YWNrOgotICAgICAgICAgICAgICAgIGlmIHN0YWNrID09IG5l
ZWRlZF9jb2xsZWN0b3JzWzpsZW4oc3RhY2spXToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsK
LSAgICAgICAgICAgICAgICBzdGFjay5wb3AoKQotICAgICAgICAgICAgZm9yIGNvbCBpbiBuZWVk
ZWRfY29sbGVjdG9yc1tsZW4oc3RhY2spOl06Ci0gICAgICAgICAgICAgICAgc3RhY2suYXBwZW5k
KGNvbCkKLSAgICAgICAgICAgICAgICAjIGlmIGNvbC5uYW1lID09ICIoKSI6Ci0gICAgICAgICAg
ICAgICAgIyAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGluZGVudCA9IChsZW4oc3RhY2sp
IC0gMSkgKiAiICAiCi0gICAgICAgICAgICAgICAgc2VsZi5fdHcubGluZSgiJXMlcyIgJSAoaW5k
ZW50LCBjb2wpKQotCi0gICAgQHB5dGVzdC5ob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotICAg
IGRlZiBweXRlc3Rfc2Vzc2lvbmZpbmlzaChzZWxmLCBleGl0c3RhdHVzKToKLSAgICAgICAgb3V0
Y29tZSA9IHlpZWxkCi0gICAgICAgIG91dGNvbWUuZ2V0X3Jlc3VsdCgpCi0gICAgICAgIHNlbGYu
X3R3LmxpbmUoIiIpCi0gICAgICAgIHN1bW1hcnlfZXhpdF9jb2RlcyA9ICgKLSAgICAgICAgICAg
IEVYSVRfT0ssIEVYSVRfVEVTVFNGQUlMRUQsIEVYSVRfSU5URVJSVVBURUQsIEVYSVRfVVNBR0VF
UlJPUiwKLSAgICAgICAgICAgIEVYSVRfTk9URVNUU0NPTExFQ1RFRCkKLSAgICAgICAgaWYgZXhp
dHN0YXR1cyBpbiBzdW1tYXJ5X2V4aXRfY29kZXM6Ci0gICAgICAgICAgICBzZWxmLmNvbmZpZy5o
b29rLnB5dGVzdF90ZXJtaW5hbF9zdW1tYXJ5KHRlcm1pbmFscmVwb3J0ZXI9c2VsZiwKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdHN0YXR1
cz1leGl0c3RhdHVzKQotICAgICAgICAgICAgc2VsZi5zdW1tYXJ5X2Vycm9ycygpCi0gICAgICAg
ICAgICBzZWxmLnN1bW1hcnlfZmFpbHVyZXMoKQotICAgICAgICAgICAgc2VsZi5zdW1tYXJ5X3dh
cm5pbmdzKCkKLSAgICAgICAgICAgIHNlbGYuc3VtbWFyeV9wYXNzZXMoKQotICAgICAgICBpZiBl
eGl0c3RhdHVzID09IEVYSVRfSU5URVJSVVBURUQ6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRf
a2V5Ym9hcmRpbnRlcnJ1cHQoKQotICAgICAgICAgICAgZGVsIHNlbGYuX2tleWJvYXJkaW50ZXJy
dXB0X21lbW8KLSAgICAgICAgc2VsZi5zdW1tYXJ5X2Rlc2VsZWN0ZWQoKQotICAgICAgICBzZWxm
LnN1bW1hcnlfc3RhdHMoKQotCi0gICAgZGVmIHB5dGVzdF9rZXlib2FyZF9pbnRlcnJ1cHQoc2Vs
ZiwgZXhjaW5mbyk6Ci0gICAgICAgIHNlbGYuX2tleWJvYXJkaW50ZXJydXB0X21lbW8gPSBleGNp
bmZvLmdldHJlcHIoZnVuY2FyZ3M9VHJ1ZSkKLQotICAgIGRlZiBweXRlc3RfdW5jb25maWd1cmUo
c2VsZik6Ci0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgJ19rZXlib2FyZGludGVycnVwdF9tZW1v
Jyk6Ci0gICAgICAgICAgICBzZWxmLl9yZXBvcnRfa2V5Ym9hcmRpbnRlcnJ1cHQoKQotCi0gICAg
ZGVmIF9yZXBvcnRfa2V5Ym9hcmRpbnRlcnJ1cHQoc2VsZik6Ci0gICAgICAgIGV4Y3JlcHIgPSBz
ZWxmLl9rZXlib2FyZGludGVycnVwdF9tZW1vCi0gICAgICAgIG1zZyA9IGV4Y3JlcHIucmVwcmNy
YXNoLm1lc3NhZ2UKLSAgICAgICAgc2VsZi53cml0ZV9zZXAoIiEiLCBtc2cpCi0gICAgICAgIGlm
ICJLZXlib2FyZEludGVycnVwdCIgaW4gbXNnOgotICAgICAgICAgICAgaWYgc2VsZi5jb25maWcu
b3B0aW9uLmZ1bGx0cmFjZToKLSAgICAgICAgICAgICAgICBleGNyZXByLnRvdGVybWluYWwoc2Vs
Zi5fdHcpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUo
InRvIHNob3cgYSBmdWxsIHRyYWNlYmFjayBvbiBLZXlib2FyZEludGVycnVwdCB1c2UgLS1mdWxs
dHJhY2UiLCB5ZWxsb3c9VHJ1ZSkKLSAgICAgICAgICAgICAgICBleGNyZXByLnJlcHJjcmFzaC50
b3Rlcm1pbmFsKHNlbGYuX3R3KQotCi0gICAgZGVmIF9sb2NhdGlvbmxpbmUoc2VsZiwgbm9kZWlk
LCBmc3BhdGgsIGxpbmVubywgZG9tYWluKToKLSAgICAgICAgZGVmIG1rcmVsKG5vZGVpZCk6Ci0g
ICAgICAgICAgICBsaW5lID0gc2VsZi5jb25maWcuY3dkX3JlbGF0aXZlX25vZGVpZChub2RlaWQp
Ci0gICAgICAgICAgICBpZiBkb21haW4gYW5kIGxpbmUuZW5kc3dpdGgoZG9tYWluKToKLSAgICAg
ICAgICAgICAgICBsaW5lID0gbGluZVs6LWxlbihkb21haW4pXQotICAgICAgICAgICAgICAgIHZh
bHVlcyA9IGRvbWFpbi5zcGxpdCgiWyIpCi0gICAgICAgICAgICAgICAgdmFsdWVzWzBdID0gdmFs
dWVzWzBdLnJlcGxhY2UoJy4nLCAnOjonKSAgIyBkb24ndCByZXBsYWNlICcuJyBpbiBwYXJhbXMK
LSAgICAgICAgICAgICAgICBsaW5lICs9ICJbIi5qb2luKHZhbHVlcykKLSAgICAgICAgICAgIHJl
dHVybiBsaW5lCi0gICAgICAgICMgY29sbGVjdF9mc3BhdGggY29tZXMgZnJvbSB0ZXN0aWQgd2hp
Y2ggaGFzIGEgIi8iLW5vcm1hbGl6ZWQgcGF0aAotCi0gICAgICAgIGlmIGZzcGF0aDoKLSAgICAg
ICAgICAgIHJlcyA9IG1rcmVsKG5vZGVpZCkucmVwbGFjZSgiOjooKSIsICIiKSAgIyBwYXJlbnMt
bm9ybWFsaXphdGlvbgotICAgICAgICAgICAgaWYgbm9kZWlkLnNwbGl0KCI6OiIpWzBdICE9IGZz
cGF0aC5yZXBsYWNlKCJcXCIsIG5vZGVzLlNFUCk6Ci0gICAgICAgICAgICAgICAgcmVzICs9ICIg
PC0gIiArIHNlbGYuc3RhcnRkaXIuYmVzdHJlbHBhdGgoZnNwYXRoKQotICAgICAgICBlbHNlOgot
ICAgICAgICAgICAgcmVzID0gIltsb2NhdGlvbl0iCi0gICAgICAgIHJldHVybiByZXMgKyAiICIK
LQotICAgIGRlZiBfZ2V0ZmFpbHVyZWhlYWRsaW5lKHNlbGYsIHJlcCk6Ci0gICAgICAgIGlmIGhh
c2F0dHIocmVwLCAnbG9jYXRpb24nKToKLSAgICAgICAgICAgIGZzcGF0aCwgbGluZW5vLCBkb21h
aW4gPSByZXAubG9jYXRpb24KLSAgICAgICAgICAgIHJldHVybiBkb21haW4KLSAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgIHJldHVybiAidGVzdCBzZXNzaW9uIiAgIyBYWFg/Ci0KLSAgICBkZWYg
X2dldGNyYXNobGluZShzZWxmLCByZXApOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1
cm4gc3RyKHJlcC5sb25ncmVwci5yZXByY3Jhc2gpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVF
cnJvcjoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHJlcC5s
b25ncmVwcilbOjUwXQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAg
ICAgICAgICAgIHJldHVybiAiIgotCi0gICAgIwotICAgICMgc3VtbWFyaWVzIGZvciBzZXNzaW9u
ZmluaXNoCi0gICAgIwotICAgIGRlZiBnZXRyZXBvcnRzKHNlbGYsIG5hbWUpOgotICAgICAgICB2
YWx1ZXMgPSBbXQotICAgICAgICBmb3IgeCBpbiBzZWxmLnN0YXRzLmdldChuYW1lLCBbXSk6Ci0g
ICAgICAgICAgICBpZiBub3QgaGFzYXR0cih4LCAnX3BkYnNob3duJyk6Ci0gICAgICAgICAgICAg
ICAgdmFsdWVzLmFwcGVuZCh4KQotICAgICAgICByZXR1cm4gdmFsdWVzCi0KLSAgICBkZWYgc3Vt
bWFyeV93YXJuaW5ncyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5oYXNvcHQoInciKToKLSAgICAg
ICAgICAgIGFsbF93YXJuaW5ncyA9IHNlbGYuc3RhdHMuZ2V0KCJ3YXJuaW5ncyIpCi0gICAgICAg
ICAgICBpZiBub3QgYWxsX3dhcm5pbmdzOgotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAg
ICAgICAgICBncm91cGVkID0gaXRlcnRvb2xzLmdyb3VwYnkoYWxsX3dhcm5pbmdzLCBrZXk9bGFt
YmRhIHdyOiB3ci5nZXRfbG9jYXRpb24oc2VsZi5jb25maWcpKQotCi0gICAgICAgICAgICBzZWxm
LndyaXRlX3NlcCgiPSIsICJ3YXJuaW5ncyBzdW1tYXJ5IiwgeWVsbG93PVRydWUsIGJvbGQ9RmFs
c2UpCi0gICAgICAgICAgICBmb3IgbG9jYXRpb24sIHdhcm5pbmdfcmVjb3JkcyBpbiBncm91cGVk
OgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoc3RyKGxvY2F0aW9uKSBvciAnPHVuZGV0
ZXJtaW5lZCBsb2NhdGlvbj4nKQotICAgICAgICAgICAgICAgIGZvciB3IGluIHdhcm5pbmdfcmVj
b3JkczoKLSAgICAgICAgICAgICAgICAgICAgbGluZXMgPSB3Lm1lc3NhZ2Uuc3BsaXRsaW5lcygp
Ci0gICAgICAgICAgICAgICAgICAgIGluZGVudGVkID0gJ1xuJy5qb2luKCcgICcgKyB4IGZvciB4
IGluIGxpbmVzKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl90dy5saW5lKGluZGVudGVkKQot
ICAgICAgICAgICAgICAgIHNlbGYuX3R3LmxpbmUoKQotICAgICAgICAgICAgc2VsZi5fdHcubGlu
ZSgnLS0gRG9jczogaHR0cDovL2RvYy5weXRlc3Qub3JnL2VuL2xhdGVzdC93YXJuaW5ncy5odG1s
JykKLQotICAgIGRlZiBzdW1tYXJ5X3Bhc3NlcyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25m
aWcub3B0aW9uLnRic3R5bGUgIT0gIm5vIjoKLSAgICAgICAgICAgIGlmIHNlbGYuaGFzb3B0KCJQ
Iik6Ci0gICAgICAgICAgICAgICAgcmVwb3J0cyA9IHNlbGYuZ2V0cmVwb3J0cygncGFzc2VkJykK
LSAgICAgICAgICAgICAgICBpZiBub3QgcmVwb3J0czoKLSAgICAgICAgICAgICAgICAgICAgcmV0
dXJuCi0gICAgICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIj0iLCAiUEFTU0VTIikKLSAgICAg
ICAgICAgICAgICBmb3IgcmVwIGluIHJlcG9ydHM6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9
IHNlbGYuX2dldGZhaWx1cmVoZWFkbGluZShyZXApCi0gICAgICAgICAgICAgICAgICAgIHNlbGYu
d3JpdGVfc2VwKCJfIiwgbXNnKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vdXRyZXBfc3Vt
bWFyeShyZXApCi0KLSAgICBkZWYgcHJpbnRfdGVhcmRvd25fc2VjdGlvbnMoc2VsZiwgcmVwKToK
LSAgICAgICAgZm9yIHNlY25hbWUsIGNvbnRlbnQgaW4gcmVwLnNlY3Rpb25zOgotICAgICAgICAg
ICAgaWYgJ3RlYXJkb3duJyBpbiBzZWNuYW1lOgotICAgICAgICAgICAgICAgIHNlbGYuX3R3LnNl
cCgnLScsIHNlY25hbWUpCi0gICAgICAgICAgICAgICAgaWYgY29udGVudFstMTpdID09ICJcbiI6
Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb250ZW50WzotMV0KLSAgICAgICAgICAg
ICAgICBzZWxmLl90dy5saW5lKGNvbnRlbnQpCi0KLSAgICBkZWYgc3VtbWFyeV9mYWlsdXJlcyhz
ZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgIT0gIm5vIjoKLSAg
ICAgICAgICAgIHJlcG9ydHMgPSBzZWxmLmdldHJlcG9ydHMoJ2ZhaWxlZCcpCi0gICAgICAgICAg
ICBpZiBub3QgcmVwb3J0czoKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIHNl
bGYud3JpdGVfc2VwKCI9IiwgIkZBSUxVUkVTIikKLSAgICAgICAgICAgIGZvciByZXAgaW4gcmVw
b3J0czoKLSAgICAgICAgICAgICAgICBpZiBzZWxmLmNvbmZpZy5vcHRpb24udGJzdHlsZSA9PSAi
bGluZSI6Ci0gICAgICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLl9nZXRjcmFzaGxpbmUocmVw
KQotICAgICAgICAgICAgICAgICAgICBzZWxmLndyaXRlX2xpbmUobGluZSkKLSAgICAgICAgICAg
ICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRmYWlsdXJlaGVh
ZGxpbmUocmVwKQotICAgICAgICAgICAgICAgICAgICBtYXJrdXAgPSB7J3JlZCc6IFRydWUsICdi
b2xkJzogVHJ1ZX0KLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9zZXAoIl8iLCBtc2cs
ICoqbWFya3VwKQotICAgICAgICAgICAgICAgICAgICBzZWxmLl9vdXRyZXBfc3VtbWFyeShyZXAp
Ci0gICAgICAgICAgICAgICAgICAgIGZvciByZXBvcnQgaW4gc2VsZi5nZXRyZXBvcnRzKCcnKToK
LSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHJlcG9ydC5ub2RlaWQgPT0gcmVwLm5vZGVpZCBh
bmQgcmVwb3J0LndoZW4gPT0gJ3RlYXJkb3duJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLnByaW50X3RlYXJkb3duX3NlY3Rpb25zKHJlcG9ydCkKLQotICAgIGRlZiBzdW1tYXJ5
X2Vycm9ycyhzZWxmKToKLSAgICAgICAgaWYgc2VsZi5jb25maWcub3B0aW9uLnRic3R5bGUgIT0g
Im5vIjoKLSAgICAgICAgICAgIHJlcG9ydHMgPSBzZWxmLmdldHJlcG9ydHMoJ2Vycm9yJykKLSAg
ICAgICAgICAgIGlmIG5vdCByZXBvcnRzOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAg
ICAgICAgc2VsZi53cml0ZV9zZXAoIj0iLCAiRVJST1JTIikKLSAgICAgICAgICAgIGZvciByZXAg
aW4gc2VsZi5zdGF0c1snZXJyb3InXToKLSAgICAgICAgICAgICAgICBtc2cgPSBzZWxmLl9nZXRm
YWlsdXJlaGVhZGxpbmUocmVwKQotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHJlcCwg
J3doZW4nKToKLSAgICAgICAgICAgICAgICAgICAgIyBjb2xsZWN0Ci0gICAgICAgICAgICAgICAg
ICAgIG1zZyA9ICJFUlJPUiBjb2xsZWN0aW5nICIgKyBtc2cKLSAgICAgICAgICAgICAgICBlbGlm
IHJlcC53aGVuID09ICJzZXR1cCI6Ci0gICAgICAgICAgICAgICAgICAgIG1zZyA9ICJFUlJPUiBh
dCBzZXR1cCBvZiAiICsgbXNnCi0gICAgICAgICAgICAgICAgZWxpZiByZXAud2hlbiA9PSAidGVh
cmRvd24iOgotICAgICAgICAgICAgICAgICAgICBtc2cgPSAiRVJST1IgYXQgdGVhcmRvd24gb2Yg
IiArIG1zZwotICAgICAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCJfIiwgbXNnKQotICAgICAg
ICAgICAgICAgIHNlbGYuX291dHJlcF9zdW1tYXJ5KHJlcCkKLQotICAgIGRlZiBfb3V0cmVwX3N1
bW1hcnkoc2VsZiwgcmVwKToKLSAgICAgICAgcmVwLnRvdGVybWluYWwoc2VsZi5fdHcpCi0gICAg
ICAgIGZvciBzZWNuYW1lLCBjb250ZW50IGluIHJlcC5zZWN0aW9uczoKLSAgICAgICAgICAgIHNl
bGYuX3R3LnNlcCgiLSIsIHNlY25hbWUpCi0gICAgICAgICAgICBpZiBjb250ZW50Wy0xOl0gPT0g
IlxuIjoKLSAgICAgICAgICAgICAgICBjb250ZW50ID0gY29udGVudFs6LTFdCi0gICAgICAgICAg
ICBzZWxmLl90dy5saW5lKGNvbnRlbnQpCi0KLSAgICBkZWYgc3VtbWFyeV9zdGF0cyhzZWxmKToK
LSAgICAgICAgc2Vzc2lvbl9kdXJhdGlvbiA9IHRpbWUudGltZSgpIC0gc2VsZi5fc2Vzc2lvbnN0
YXJ0dGltZQotICAgICAgICAobGluZSwgY29sb3IpID0gYnVpbGRfc3VtbWFyeV9zdGF0c19saW5l
KHNlbGYuc3RhdHMpCi0gICAgICAgIG1zZyA9ICIlcyBpbiAlLjJmIHNlY29uZHMiICUgKGxpbmUs
IHNlc3Npb25fZHVyYXRpb24pCi0gICAgICAgIG1hcmt1cCA9IHtjb2xvcjogVHJ1ZSwgJ2JvbGQn
OiBUcnVlfQotCi0gICAgICAgIGlmIHNlbGYudmVyYm9zaXR5ID49IDA6Ci0gICAgICAgICAgICBz
ZWxmLndyaXRlX3NlcCgiPSIsIG1zZywgKiptYXJrdXApCi0gICAgICAgIGlmIHNlbGYudmVyYm9z
aXR5ID09IC0xOgotICAgICAgICAgICAgc2VsZi53cml0ZV9saW5lKG1zZywgKiptYXJrdXApCi0K
LSAgICBkZWYgc3VtbWFyeV9kZXNlbGVjdGVkKHNlbGYpOgotICAgICAgICBpZiAnZGVzZWxlY3Rl
ZCcgaW4gc2VsZi5zdGF0czoKLSAgICAgICAgICAgIHNlbGYud3JpdGVfc2VwKCI9IiwgIiVkIHRl
c3RzIGRlc2VsZWN0ZWQiICUgKAotICAgICAgICAgICAgICAgIGxlbihzZWxmLnN0YXRzWydkZXNl
bGVjdGVkJ10pKSwgYm9sZD1UcnVlKQotCi0KLWRlZiByZXByX3B5dGhvbnZlcnNpb24odj1Ob25l
KToKLSAgICBpZiB2IGlzIE5vbmU6Ci0gICAgICAgIHYgPSBzeXMudmVyc2lvbl9pbmZvCi0gICAg
dHJ5OgotICAgICAgICByZXR1cm4gIiVzLiVzLiVzLSVzLSVzIiAlIHYKLSAgICBleGNlcHQgKFR5
cGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgIHJldHVybiBzdHIodikKLQotCi1kZWYgZmxh
dHRlbih2YWx1ZXMpOgotICAgIGZvciB4IGluIHZhbHVlczoKLSAgICAgICAgaWYgaXNpbnN0YW5j
ZSh4LCAobGlzdCwgdHVwbGUpKToKLSAgICAgICAgICAgIGZvciB5IGluIGZsYXR0ZW4oeCk6Ci0g
ICAgICAgICAgICAgICAgeWllbGQgeQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgeWllbGQg
eAotCi0KLWRlZiBidWlsZF9zdW1tYXJ5X3N0YXRzX2xpbmUoc3RhdHMpOgotICAgIGtleXMgPSAo
ImZhaWxlZCBwYXNzZWQgc2tpcHBlZCBkZXNlbGVjdGVkICIKLSAgICAgICAgICAgICJ4ZmFpbGVk
IHhwYXNzZWQgd2FybmluZ3MgZXJyb3IiKS5zcGxpdCgpCi0gICAgdW5rbm93bl9rZXlfc2VlbiA9
IEZhbHNlCi0gICAgZm9yIGtleSBpbiBzdGF0cy5rZXlzKCk6Ci0gICAgICAgIGlmIGtleSBub3Qg
aW4ga2V5czoKLSAgICAgICAgICAgIGlmIGtleTogICMgc2V0dXAvdGVhcmRvd24gcmVwb3J0cyBo
YXZlIGFuIGVtcHR5IGtleSwgaWdub3JlIHRoZW0KLSAgICAgICAgICAgICAgICBrZXlzLmFwcGVu
ZChrZXkpCi0gICAgICAgICAgICAgICAgdW5rbm93bl9rZXlfc2VlbiA9IFRydWUKLSAgICBwYXJ0
cyA9IFtdCi0gICAgZm9yIGtleSBpbiBrZXlzOgotICAgICAgICB2YWwgPSBzdGF0cy5nZXQoa2V5
LCBOb25lKQotICAgICAgICBpZiB2YWw6Ci0gICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIiVkICVz
IiAlIChsZW4odmFsKSwga2V5KSkKLQotICAgIGlmIHBhcnRzOgotICAgICAgICBsaW5lID0gIiwg
Ii5qb2luKHBhcnRzKQotICAgIGVsc2U6Ci0gICAgICAgIGxpbmUgPSAibm8gdGVzdHMgcmFuIgot
Ci0gICAgaWYgJ2ZhaWxlZCcgaW4gc3RhdHMgb3IgJ2Vycm9yJyBpbiBzdGF0czoKLSAgICAgICAg
Y29sb3IgPSAncmVkJwotICAgIGVsaWYgJ3dhcm5pbmdzJyBpbiBzdGF0cyBvciB1bmtub3duX2tl
eV9zZWVuOgotICAgICAgICBjb2xvciA9ICd5ZWxsb3cnCi0gICAgZWxpZiAncGFzc2VkJyBpbiBz
dGF0czoKLSAgICAgICAgY29sb3IgPSAnZ3JlZW4nCi0gICAgZWxzZToKLSAgICAgICAgY29sb3Ig
PSAneWVsbG93JwotCi0gICAgcmV0dXJuIChsaW5lLCBjb2xvcikKLQotCi1kZWYgX3BsdWdpbl9u
YW1ldmVyc2lvbnMocGx1Z2luaW5mbyk6Ci0gICAgdmFsdWVzID0gW10KLSAgICBmb3IgcGx1Z2lu
LCBkaXN0IGluIHBsdWdpbmluZm86Ci0gICAgICAgICMgZ2V0cyB1cyBuYW1lIGFuZCB2ZXJzaW9u
IQotICAgICAgICBuYW1lID0gJ3tkaXN0LnByb2plY3RfbmFtZX0te2Rpc3QudmVyc2lvbn0nLmZv
cm1hdChkaXN0PWRpc3QpCi0gICAgICAgICMgcXVlc3Rpb25hYmxlIGNvbnZlbmllbmNlLCBidXQg
aXQga2VlcHMgdGhpbmdzIHNob3J0Ci0gICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgicHl0ZXN0
LSIpOgotICAgICAgICAgICAgbmFtZSA9IG5hbWVbNzpdCi0gICAgICAgICMgd2UgZGVjaWRlZCB0
byBwcmludCBweXRob24gcGFja2FnZSBuYW1lcwotICAgICAgICAjIHRoZXkgY2FuIGhhdmUgbW9y
ZSB0aGFuIG9uZSBwbHVnaW4KLSAgICAgICAgaWYgbmFtZSBub3QgaW4gdmFsdWVzOgotICAgICAg
ICAgICAgdmFsdWVzLmFwcGVuZChuYW1lKQotICAgIHJldHVybiB2YWx1ZXMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvdG1wZGlyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90bXBk
aXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMWIwMzIyMzdhZmJmNDY4Y2Mw
ZTM0OWQyYjI2MmI5MjgzZTk3ODMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90bXBkaXIucHkKKysrIC9kZXYvbnVsbApA
QCAtMSwxMjYgKzAsMCBAQAotIiIiIHN1cHBvcnQgZm9yIHByb3ZpZGluZyB0ZW1wb3JhcnkgZGly
ZWN0b3JpZXMgdG8gdGVzdCBmdW5jdGlvbnMuICAiIiIKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQg
YWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KLQotaW1wb3J0IHJlCi0K
LWltcG9ydCBweXRlc3QKLWltcG9ydCBweQotZnJvbSBfcHl0ZXN0Lm1vbmtleXBhdGNoIGltcG9y
dCBNb25rZXlQYXRjaAotCi0KLWNsYXNzIFRlbXBkaXJGYWN0b3J5OgotICAgICIiIkZhY3Rvcnkg
Zm9yIHRlbXBvcmFyeSBkaXJlY3RvcmllcyB1bmRlciB0aGUgY29tbW9uIGJhc2UgdGVtcCBkaXJl
Y3RvcnkuCi0KLSAgICBUaGUgYmFzZSBkaXJlY3RvcnkgY2FuIGJlIGNvbmZpZ3VyZWQgdXNpbmcg
dGhlIGBgLS1iYXNldGVtcGBgIG9wdGlvbi4KLSAgICAiIiIKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBjb25maWcpOgotICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwotICAgICAgICBzZWxm
LnRyYWNlID0gY29uZmlnLnRyYWNlLmdldCgidG1wZGlyIikKLQotICAgIGRlZiBlbnN1cmV0ZW1w
KHNlbGYsIHN0cmluZywgZGlyPTEpOgotICAgICAgICAiIiIgKGRlcHJlY2F0ZWQpIHJldHVybiB0
ZW1wb3JhcnkgZGlyZWN0b3J5IHBhdGggd2l0aAotICAgICAgICAgICAgdGhlIGdpdmVuIHN0cmlu
ZyBhcyB0aGUgdHJhaWxpbmcgcGFydC4gIEl0IGlzIHVzdWFsbHkKLSAgICAgICAgICAgIGJldHRl
ciB0byB1c2UgdGhlICd0bXBkaXInIGZ1bmN0aW9uIGFyZ3VtZW50IHdoaWNoCi0gICAgICAgICAg
ICBwcm92aWRlcyBhbiBlbXB0eSB1bmlxdWUtcGVyLXRlc3QtaW52b2NhdGlvbiBkaXJlY3RvcnkK
LSAgICAgICAgICAgIGFuZCBpcyBndWFyYW50ZWVkIHRvIGJlIGVtcHR5LgotICAgICAgICAiIiIK
LSAgICAgICAgIyBweS5sb2cuX2FwaXdhcm4oIj4xLjEiLCAidXNlIHRtcGRpciBmdW5jdGlvbiBh
cmd1bWVudCIpCi0gICAgICAgIHJldHVybiBzZWxmLmdldGJhc2V0ZW1wKCkuZW5zdXJlKHN0cmlu
ZywgZGlyPWRpcikKLQotICAgIGRlZiBta3RlbXAoc2VsZiwgYmFzZW5hbWUsIG51bWJlcmVkPVRy
dWUpOgotICAgICAgICAiIiJDcmVhdGUgYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIGJhc2UgdGVtcG9y
YXJ5IGRpcmVjdG9yeSBhbmQgcmV0dXJuIGl0LgotICAgICAgICBJZiBgYG51bWJlcmVkYGAsIGVu
c3VyZSB0aGUgZGlyZWN0b3J5IGlzIHVuaXF1ZSBieSBhZGRpbmcgYSBudW1iZXIKLSAgICAgICAg
cHJlZml4IGdyZWF0ZXIgdGhhbiBhbnkgZXhpc3Rpbmcgb25lLgotICAgICAgICAiIiIKLSAgICAg
ICAgYmFzZXRlbXAgPSBzZWxmLmdldGJhc2V0ZW1wKCkKLSAgICAgICAgaWYgbm90IG51bWJlcmVk
OgotICAgICAgICAgICAgcCA9IGJhc2V0ZW1wLm1rZGlyKGJhc2VuYW1lKQotICAgICAgICBlbHNl
OgotICAgICAgICAgICAgcCA9IHB5LnBhdGgubG9jYWwubWFrZV9udW1iZXJlZF9kaXIocHJlZml4
PWJhc2VuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga2VlcD0wLCByb290ZGlyPWJhc2V0ZW1wLCBsb2NrX3RpbWVvdXQ9Tm9uZSkKLSAgICAgICAg
c2VsZi50cmFjZSgibWt0ZW1wIiwgcCkKLSAgICAgICAgcmV0dXJuIHAKLQotICAgIGRlZiBnZXRi
YXNldGVtcChzZWxmKToKLSAgICAgICAgIiIiIHJldHVybiBiYXNlIHRlbXBvcmFyeSBkaXJlY3Rv
cnkuICIiIgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fYmFzZXRlbXAK
LSAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgYmFzZXRlbXAgPSBz
ZWxmLmNvbmZpZy5vcHRpb24uYmFzZXRlbXAKLSAgICAgICAgICAgIGlmIGJhc2V0ZW1wOgotICAg
ICAgICAgICAgICAgIGJhc2V0ZW1wID0gcHkucGF0aC5sb2NhbChiYXNldGVtcCkKLSAgICAgICAg
ICAgICAgICBpZiBiYXNldGVtcC5jaGVjaygpOgotICAgICAgICAgICAgICAgICAgICBiYXNldGVt
cC5yZW1vdmUoKQotICAgICAgICAgICAgICAgIGJhc2V0ZW1wLm1rZGlyKCkKLSAgICAgICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICAgICAgdGVtcHJvb3QgPSBweS5wYXRoLmxvY2FsLmdldF90ZW1w
cm9vdCgpCi0gICAgICAgICAgICAgICAgdXNlciA9IGdldF91c2VyKCkKLSAgICAgICAgICAgICAg
ICBpZiB1c2VyOgotICAgICAgICAgICAgICAgICAgICAjIHVzZSBhIHN1Yi1kaXJlY3RvcnkgaW4g
dGhlIHRlbXByb290IHRvIHNwZWVkLXVwCi0gICAgICAgICAgICAgICAgICAgICMgbWFrZV9udW1i
ZXJlZF9kaXIoKSBjYWxsCi0gICAgICAgICAgICAgICAgICAgIHJvb3RkaXIgPSB0ZW1wcm9vdC5q
b2luKCdweXRlc3Qtb2YtJXMnICUgdXNlcikKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICByb290ZGlyID0gdGVtcHJvb3QKLSAgICAgICAgICAgICAgICByb290ZGly
LmVuc3VyZShkaXI9MSkKLSAgICAgICAgICAgICAgICBiYXNldGVtcCA9IHB5LnBhdGgubG9jYWwu
bWFrZV9udW1iZXJlZF9kaXIocHJlZml4PSdweXRlc3QtJywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdGRpcj1yb290ZGlyKQot
ICAgICAgICAgICAgc2VsZi5fYmFzZXRlbXAgPSB0ID0gYmFzZXRlbXAucmVhbHBhdGgoKQotICAg
ICAgICAgICAgc2VsZi50cmFjZSgibmV3IGJhc2V0ZW1wIiwgdCkKLSAgICAgICAgICAgIHJldHVy
biB0Ci0KLSAgICBkZWYgZmluaXNoKHNlbGYpOgotICAgICAgICBzZWxmLnRyYWNlKCJmaW5pc2gi
KQotCi0KLWRlZiBnZXRfdXNlcigpOgotICAgICIiIlJldHVybiB0aGUgY3VycmVudCB1c2VyIG5h
bWUsIG9yIE5vbmUgaWYgZ2V0dXNlcigpIGRvZXMgbm90IHdvcmsKLSAgICBpbiB0aGUgY3VycmVu
dCBlbnZpcm9ubWVudCAoc2VlICMxMDEwKS4KLSAgICAiIiIKLSAgICBpbXBvcnQgZ2V0cGFzcwot
ICAgIHRyeToKLSAgICAgICAgcmV0dXJuIGdldHBhc3MuZ2V0dXNlcigpCi0gICAgZXhjZXB0IChJ
bXBvcnRFcnJvciwgS2V5RXJyb3IpOgotICAgICAgICByZXR1cm4gTm9uZQotCi0KLSMgYmFja3dh
cmQgY29tcGF0aWJpbGl0eQotVGVtcGRpckhhbmRsZXIgPSBUZW1wZGlyRmFjdG9yeQotCi0KLWRl
ZiBweXRlc3RfY29uZmlndXJlKGNvbmZpZyk6Ci0gICAgIiIiQ3JlYXRlIGEgVGVtcGRpckZhY3Rv
cnkgYW5kIGF0dGFjaCBpdCB0byB0aGUgY29uZmlnIG9iamVjdC4KLQotICAgIFRoaXMgaXMgdG8g
Y29tcGx5IHdpdGggZXhpc3RpbmcgcGx1Z2lucyB3aGljaCBleHBlY3QgdGhlIGhhbmRsZXIgdG8g
YmUKLSAgICBhdmFpbGFibGUgYXQgcHl0ZXN0X2NvbmZpZ3VyZSB0aW1lLCBidXQgaWRlYWxseSBz
aG91bGQgYmUgbW92ZWQgZW50aXJlbHkKLSAgICB0byB0aGUgdG1wZGlyX2ZhY3Rvcnkgc2Vzc2lv
biBmaXh0dXJlLgotICAgICIiIgotICAgIG1wID0gTW9ua2V5UGF0Y2goKQotICAgIHQgPSBUZW1w
ZGlyRmFjdG9yeShjb25maWcpCi0gICAgY29uZmlnLl9jbGVhbnVwLmV4dGVuZChbbXAudW5kbywg
dC5maW5pc2hdKQotICAgIG1wLnNldGF0dHIoY29uZmlnLCAnX3RtcGRpcmhhbmRsZXInLCB0LCBy
YWlzaW5nPUZhbHNlKQotICAgIG1wLnNldGF0dHIocHl0ZXN0LCAnZW5zdXJldGVtcCcsIHQuZW5z
dXJldGVtcCwgcmFpc2luZz1GYWxzZSkKLQotCi1AcHl0ZXN0LmZpeHR1cmUoc2NvcGU9J3Nlc3Np
b24nKQotZGVmIHRtcGRpcl9mYWN0b3J5KHJlcXVlc3QpOgotICAgICIiIlJldHVybiBhIFRlbXBk
aXJGYWN0b3J5IGluc3RhbmNlIGZvciB0aGUgdGVzdCBzZXNzaW9uLgotICAgICIiIgotICAgIHJl
dHVybiByZXF1ZXN0LmNvbmZpZy5fdG1wZGlyaGFuZGxlcgotCi0KLUBweXRlc3QuZml4dHVyZQot
ZGVmIHRtcGRpcihyZXF1ZXN0LCB0bXBkaXJfZmFjdG9yeSk6Ci0gICAgIiIiUmV0dXJuIGEgdGVt
cG9yYXJ5IGRpcmVjdG9yeSBwYXRoIG9iamVjdAotICAgIHdoaWNoIGlzIHVuaXF1ZSB0byBlYWNo
IHRlc3QgZnVuY3Rpb24gaW52b2NhdGlvbiwKLSAgICBjcmVhdGVkIGFzIGEgc3ViIGRpcmVjdG9y
eSBvZiB0aGUgYmFzZSB0ZW1wb3JhcnkKLSAgICBkaXJlY3RvcnkuICBUaGUgcmV0dXJuZWQgb2Jq
ZWN0IGlzIGEgYHB5LnBhdGgubG9jYWxgXwotICAgIHBhdGggb2JqZWN0LgotICAgICIiIgotICAg
IG5hbWUgPSByZXF1ZXN0Lm5vZGUubmFtZQotICAgIG5hbWUgPSByZS5zdWIociJbXFddIiwgIl8i
LCBuYW1lKQotICAgIE1BWFZBTCA9IDMwCi0gICAgaWYgbGVuKG5hbWUpID4gTUFYVkFMOgotICAg
ICAgICBuYW1lID0gbmFtZVs6TUFYVkFMXQotICAgIHggPSB0bXBkaXJfZmFjdG9yeS5ta3RlbXAo
bmFtZSwgbnVtYmVyZWQ9VHJ1ZSkKLSAgICByZXR1cm4geApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC91bml0dGVzdC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvdW5pdHRlc3QucHkK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZGIzOTQ5NWUzOTcwMzQ0YjRhNmQ4Zjky
YTg2ODA4N2I1ZmVmMjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC91bml0dGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0x
LDIzNyArMCwwIEBACi0iIiIgZGlzY292ZXJ5IGFuZCBydW5uaW5nIG9mIHN0ZC1saWJyYXJ5ICJ1
bml0dGVzdCIgc3R5bGUgdGVzdHMuICIiIgotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0
ZV9pbXBvcnQsIGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgotCi1pbXBvcnQgc3lzCi1pbXBvcnQg
dHJhY2ViYWNrCi0KLSMgZm9yIHRyYW5zZmVycmluZyBtYXJrZXJzCi1pbXBvcnQgX3B5dGVzdC5f
Y29kZQotZnJvbSBfcHl0ZXN0LmNvbmZpZyBpbXBvcnQgaG9va2ltcGwKLWZyb20gX3B5dGVzdC5v
dXRjb21lcyBpbXBvcnQgZmFpbCwgc2tpcCwgeGZhaWwKLWZyb20gX3B5dGVzdC5weXRob24gaW1w
b3J0IHRyYW5zZmVyX21hcmtlcnMsIENsYXNzLCBNb2R1bGUsIEZ1bmN0aW9uCi0KLQotZGVmIHB5
dGVzdF9weWNvbGxlY3RfbWFrZWl0ZW0oY29sbGVjdG9yLCBuYW1lLCBvYmopOgotICAgICMgaGFz
IHVuaXR0ZXN0IGJlZW4gaW1wb3J0ZWQgYW5kIGlzIG9iaiBhIHN1YmNsYXNzIG9mIGl0cyBUZXN0
Q2FzZT8KLSAgICB0cnk6Ci0gICAgICAgIGlmIG5vdCBpc3N1YmNsYXNzKG9iaiwgc3lzLm1vZHVs
ZXNbInVuaXR0ZXN0Il0uVGVzdENhc2UpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgcmV0dXJuCi0gICAgIyB5ZXMsIHNvIGxldCdzIGNvbGxlY3Qg
aXQKLSAgICByZXR1cm4gVW5pdFRlc3RDYXNlKG5hbWUsIHBhcmVudD1jb2xsZWN0b3IpCi0KLQot
Y2xhc3MgVW5pdFRlc3RDYXNlKENsYXNzKToKLSAgICAjIG1hcmtlciBmb3IgZml4dHVyZW1hbmdl
ci5nZXRmaXh0dXJlaW5mbygpCi0gICAgIyB0byBkZWNsYXJlIHRoYXQgb3VyIGNoaWxkcmVuIGRv
IG5vdCBzdXBwb3J0IGZ1bmNhcmdzCi0gICAgbm9mdW5jYXJncyA9IFRydWUKLQotICAgIGRlZiBz
ZXR1cChzZWxmKToKLSAgICAgICAgY2xzID0gc2VsZi5vYmoKLSAgICAgICAgaWYgZ2V0YXR0cihj
bHMsICdfX3VuaXR0ZXN0X3NraXBfXycsIEZhbHNlKToKLSAgICAgICAgICAgIHJldHVybiAgIyBz
a2lwcGVkCi0gICAgICAgIHNldHVwID0gZ2V0YXR0cihjbHMsICdzZXRVcENsYXNzJywgTm9uZSkK
LSAgICAgICAgaWYgc2V0dXAgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZXR1cCgpCi0gICAg
ICAgIHRlYXJkb3duID0gZ2V0YXR0cihjbHMsICd0ZWFyRG93bkNsYXNzJywgTm9uZSkKLSAgICAg
ICAgaWYgdGVhcmRvd24gaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLmFkZGZpbmFsaXpl
cih0ZWFyZG93bikKLSAgICAgICAgc3VwZXIoVW5pdFRlc3RDYXNlLCBzZWxmKS5zZXR1cCgpCi0K
LSAgICBkZWYgY29sbGVjdChzZWxmKToKLSAgICAgICAgZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVz
dExvYWRlcgotICAgICAgICBjbHMgPSBzZWxmLm9iagotICAgICAgICBpZiBub3QgZ2V0YXR0cihj
bHMsICJfX3Rlc3RfXyIsIFRydWUpOgotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYu
c2Vzc2lvbi5fZml4dHVyZW1hbmFnZXIucGFyc2VmYWN0b3JpZXMoc2VsZiwgdW5pdHRlc3Q9VHJ1
ZSkKLSAgICAgICAgbG9hZGVyID0gVGVzdExvYWRlcigpCi0gICAgICAgIG1vZHVsZSA9IHNlbGYu
Z2V0cGFyZW50KE1vZHVsZSkub2JqCi0gICAgICAgIGZvdW5kc29tZXRoaW5nID0gRmFsc2UKLSAg
ICAgICAgZm9yIG5hbWUgaW4gbG9hZGVyLmdldFRlc3RDYXNlTmFtZXMoc2VsZi5vYmopOgotICAg
ICAgICAgICAgeCA9IGdldGF0dHIoc2VsZi5vYmosIG5hbWUpCi0gICAgICAgICAgICBpZiBub3Qg
Z2V0YXR0cih4LCAnX190ZXN0X18nLCBUcnVlKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQot
ICAgICAgICAgICAgZnVuY29iaiA9IGdldGF0dHIoeCwgJ2ltX2Z1bmMnLCB4KQotICAgICAgICAg
ICAgdHJhbnNmZXJfbWFya2VycyhmdW5jb2JqLCBjbHMsIG1vZHVsZSkKLSAgICAgICAgICAgIHlp
ZWxkIFRlc3RDYXNlRnVuY3Rpb24obmFtZSwgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBmb3Vu
ZHNvbWV0aGluZyA9IFRydWUKLQotICAgICAgICBpZiBub3QgZm91bmRzb21ldGhpbmc6Ci0gICAg
ICAgICAgICBydW50ZXN0ID0gZ2V0YXR0cihzZWxmLm9iaiwgJ3J1blRlc3QnLCBOb25lKQotICAg
ICAgICAgICAgaWYgcnVudGVzdCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB1dCA9IHN5
cy5tb2R1bGVzLmdldCgidHdpc3RlZC50cmlhbC51bml0dGVzdCIsIE5vbmUpCi0gICAgICAgICAg
ICAgICAgaWYgdXQgaXMgTm9uZSBvciBydW50ZXN0ICE9IHV0LlRlc3RDYXNlLnJ1blRlc3Q6Ci0g
ICAgICAgICAgICAgICAgICAgIHlpZWxkIFRlc3RDYXNlRnVuY3Rpb24oJ3J1blRlc3QnLCBwYXJl
bnQ9c2VsZikKLQotCi1jbGFzcyBUZXN0Q2FzZUZ1bmN0aW9uKEZ1bmN0aW9uKToKLSAgICBfZXhj
aW5mbyA9IE5vbmUKLQotICAgIGRlZiBzZXR1cChzZWxmKToKLSAgICAgICAgc2VsZi5fdGVzdGNh
c2UgPSBzZWxmLnBhcmVudC5vYmooc2VsZi5uYW1lKQotICAgICAgICBzZWxmLl9maXhfdW5pdHRl
c3Rfc2tpcF9kZWNvcmF0b3IoKQotICAgICAgICBzZWxmLl9vYmogPSBnZXRhdHRyKHNlbGYuX3Rl
c3RjYXNlLCBzZWxmLm5hbWUpCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZi5fdGVzdGNhc2UsICdz
ZXR1cF9tZXRob2QnKToKLSAgICAgICAgICAgIHNlbGYuX3Rlc3RjYXNlLnNldHVwX21ldGhvZChz
ZWxmLl9vYmopCi0gICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgIl9yZXF1ZXN0Iik6Ci0gICAgICAg
ICAgICBzZWxmLl9yZXF1ZXN0Ll9maWxsZml4dHVyZXMoKQotCi0gICAgZGVmIF9maXhfdW5pdHRl
c3Rfc2tpcF9kZWNvcmF0b3Ioc2VsZik6Ci0gICAgICAgICIiIgotICAgICAgICBUaGUgQHVuaXR0
ZXN0LnNraXAgZGVjb3JhdG9yIGNhbGxzIGZ1bmN0b29scy53cmFwcyhzZWxmLl90ZXN0Y2FzZSkK
LSAgICAgICAgVGhlIGNhbGwgdG8gZnVuY3Rvb2xzLndyYXBzKCkgZmFpbHMgdW5sZXNzIHNlbGYu
X3Rlc3RjYXNlCi0gICAgICAgIGhhcyBhIF9fbmFtZV9fIGF0dHJpYnV0ZS4gVGhpcyBpcyB1c3Vh
bGx5IGF1dG9tYXRpY2FsbHkgc3VwcGxpZWQKLSAgICAgICAgaWYgdGhlIHRlc3QgaXMgYSBmdW5j
dGlvbiBvciBtZXRob2QsIGJ1dCB3ZSBuZWVkIHRvIGFkZCBtYW51YWxseQotICAgICAgICBoZXJl
LgotCi0gICAgICAgIFNlZSBpc3N1ZSAjMTE2OQotICAgICAgICAiIiIKLSAgICAgICAgaWYgc3lz
LnZlcnNpb25faW5mb1swXSA9PSAyOgotICAgICAgICAgICAgc2V0YXR0cihzZWxmLl90ZXN0Y2Fz
ZSwgIl9fbmFtZV9fIiwgc2VsZi5uYW1lKQotCi0gICAgZGVmIHRlYXJkb3duKHNlbGYpOgotICAg
ICAgICBpZiBoYXNhdHRyKHNlbGYuX3Rlc3RjYXNlLCAndGVhcmRvd25fbWV0aG9kJyk6Ci0gICAg
ICAgICAgICBzZWxmLl90ZXN0Y2FzZS50ZWFyZG93bl9tZXRob2Qoc2VsZi5fb2JqKQotICAgICAg
ICAjIEFsbG93IGdhcmJhZ2UgY29sbGVjdGlvbiBvbiBUZXN0Q2FzZSBpbnN0YW5jZSBhdHRyaWJ1
dGVzLgotICAgICAgICBzZWxmLl90ZXN0Y2FzZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fb2JqID0g
Tm9uZQotCi0gICAgZGVmIHN0YXJ0VGVzdChzZWxmLCB0ZXN0Y2FzZSk6Ci0gICAgICAgIHBhc3MK
LQotICAgIGRlZiBfYWRkZXhjaW5mbyhzZWxmLCByYXdleGNpbmZvKToKLSAgICAgICAgIyB1bndy
YXAgcG90ZW50aWFsIGV4Y2VwdGlvbiBpbmZvIChzZWUgdHdpc3RlZCB0cmlhbCBzdXBwb3J0IGJl
bG93KQotICAgICAgICByYXdleGNpbmZvID0gZ2V0YXR0cihyYXdleGNpbmZvLCAnX3Jhd2V4Y2lu
Zm8nLCByYXdleGNpbmZvKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleGNpbmZvID0gX3B5
dGVzdC5fY29kZS5FeGNlcHRpb25JbmZvKHJhd2V4Y2luZm8pCi0gICAgICAgIGV4Y2VwdCBUeXBl
RXJyb3I6Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgICAgICAgICB2YWx1ZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbigqcmF3ZXhjaW5m
bykKLSAgICAgICAgICAgICAgICAgICAgdmFsdWVzLmluc2VydCgwLCAiTk9URTogSW5jb21wYXRp
YmxlIEV4Y2VwdGlvbiBSZXByZXNlbnRhdGlvbiwgIgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJkaXNwbGF5aW5nIG5hdGl2ZWx5OlxuXG4iKQotICAgICAgICAgICAgICAgICAg
ICBmYWlsKCIiLmpvaW4odmFsdWVzKSwgcHl0cmFjZT1GYWxzZSkKLSAgICAgICAgICAgICAgICBl
eGNlcHQgKGZhaWwuRXhjZXB0aW9uLCBLZXlib2FyZEludGVycnVwdCk6Ci0gICAgICAgICAgICAg
ICAgICAgIHJhaXNlCi0gICAgICAgICAgICAgICAgZXhjZXB0OiAgIyBub3FhCi0gICAgICAgICAg
ICAgICAgICAgIGZhaWwoIkVSUk9SOiBVbmtub3duIEluY29tcGF0aWJsZSBFeGNlcHRpb24gIgot
ICAgICAgICAgICAgICAgICAgICAgICAgICJyZXByZXNlbnRhdGlvbjpcbiVyIiAlIChyYXdleGNp
bmZvLCksIHB5dHJhY2U9RmFsc2UpCi0gICAgICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1
cHQ6Ci0gICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgICAgIGV4Y2VwdCBmYWlsLkV4Y2Vw
dGlvbjoKLSAgICAgICAgICAgICAgICBleGNpbmZvID0gX3B5dGVzdC5fY29kZS5FeGNlcHRpb25J
bmZvKCkKLSAgICAgICAgc2VsZi5fX2RpY3RfXy5zZXRkZWZhdWx0KCdfZXhjaW5mbycsIFtdKS5h
cHBlbmQoZXhjaW5mbykKLQotICAgIGRlZiBhZGRFcnJvcihzZWxmLCB0ZXN0Y2FzZSwgcmF3ZXhj
aW5mbyk6Ci0gICAgICAgIHNlbGYuX2FkZGV4Y2luZm8ocmF3ZXhjaW5mbykKLQotICAgIGRlZiBh
ZGRGYWlsdXJlKHNlbGYsIHRlc3RjYXNlLCByYXdleGNpbmZvKToKLSAgICAgICAgc2VsZi5fYWRk
ZXhjaW5mbyhyYXdleGNpbmZvKQotCi0gICAgZGVmIGFkZFNraXAoc2VsZiwgdGVzdGNhc2UsIHJl
YXNvbik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNraXAocmVhc29uKQotICAgICAgICBl
eGNlcHQgc2tpcC5FeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLl9za2lwcGVkX2J5X21hcmsg
PSBUcnVlCi0gICAgICAgICAgICBzZWxmLl9hZGRleGNpbmZvKHN5cy5leGNfaW5mbygpKQotCi0g
ICAgZGVmIGFkZEV4cGVjdGVkRmFpbHVyZShzZWxmLCB0ZXN0Y2FzZSwgcmF3ZXhjaW5mbywgcmVh
c29uPSIiKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgeGZhaWwoc3RyKHJlYXNvbikpCi0g
ICAgICAgIGV4Y2VwdCB4ZmFpbC5FeGNlcHRpb246Ci0gICAgICAgICAgICBzZWxmLl9hZGRleGNp
bmZvKHN5cy5leGNfaW5mbygpKQotCi0gICAgZGVmIGFkZFVuZXhwZWN0ZWRTdWNjZXNzKHNlbGYs
IHRlc3RjYXNlLCByZWFzb249IiIpOgotICAgICAgICBzZWxmLl91bmV4cGVjdGVkc3VjY2VzcyA9
IHJlYXNvbgotCi0gICAgZGVmIGFkZFN1Y2Nlc3Moc2VsZiwgdGVzdGNhc2UpOgotICAgICAgICBw
YXNzCi0KLSAgICBkZWYgc3RvcFRlc3Qoc2VsZiwgdGVzdGNhc2UpOgotICAgICAgICBwYXNzCi0K
LSAgICBkZWYgX2hhbmRsZV9za2lwKHNlbGYpOgotICAgICAgICAjIGltcGxlbWVudHMgdGhlIHNr
aXBwaW5nIG1hY2hpbmVyeSAoc2VlICMyMTM3KQotICAgICAgICAjIGFuYWxvZyB0byBweXRob25z
IExpYi91bml0dGVzdC9jYXNlLnB5OnJ1bgotICAgICAgICB0ZXN0TWV0aG9kID0gZ2V0YXR0cihz
ZWxmLl90ZXN0Y2FzZSwgc2VsZi5fdGVzdGNhc2UuX3Rlc3RNZXRob2ROYW1lKQotICAgICAgICBp
ZiAoZ2V0YXR0cihzZWxmLl90ZXN0Y2FzZS5fX2NsYXNzX18sICJfX3VuaXR0ZXN0X3NraXBfXyIs
IEZhbHNlKSBvcgotICAgICAgICAgICAgICAgIGdldGF0dHIodGVzdE1ldGhvZCwgIl9fdW5pdHRl
c3Rfc2tpcF9fIiwgRmFsc2UpKToKLSAgICAgICAgICAgICMgSWYgdGhlIGNsYXNzIG9yIG1ldGhv
ZCB3YXMgc2tpcHBlZC4KLSAgICAgICAgICAgIHNraXBfd2h5ID0gKGdldGF0dHIoc2VsZi5fdGVz
dGNhc2UuX19jbGFzc19fLCAnX191bml0dGVzdF9za2lwX3doeV9fJywgJycpIG9yCi0gICAgICAg
ICAgICAgICAgICAgICAgICBnZXRhdHRyKHRlc3RNZXRob2QsICdfX3VuaXR0ZXN0X3NraXBfd2h5
X18nLCAnJykpCi0gICAgICAgICAgICB0cnk6ICAjIFBZMywgdW5pdHRlc3QyIG9uIFBZMgotICAg
ICAgICAgICAgICAgIHNlbGYuX3Rlc3RjYXNlLl9hZGRTa2lwKHNlbGYsIHNlbGYuX3Rlc3RjYXNl
LCBza2lwX3doeSkKLSAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6ICAjIFBZMgotICAgICAg
ICAgICAgICAgIGlmIHN5cy52ZXJzaW9uX2luZm9bMF0gIT0gMjoKLSAgICAgICAgICAgICAgICAg
ICAgcmFpc2UKLSAgICAgICAgICAgICAgICBzZWxmLl90ZXN0Y2FzZS5fYWRkU2tpcChzZWxmLCBz
a2lwX3doeSkKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQot
Ci0gICAgZGVmIHJ1bnRlc3Qoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuY29uZmlnLnBsdWdpbm1h
bmFnZXIuZ2V0X3BsdWdpbigicGRiaW52b2tlIikgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYu
X3Rlc3RjYXNlKHJlc3VsdD1zZWxmKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBkaXNh
YmxlcyB0ZWFyRG93biBhbmQgY2xlYW51cHMgZm9yIHBvc3QgbW9ydGVtIGRlYnVnZ2luZyAoc2Vl
ICMxODkwKQotICAgICAgICAgICAgaWYgc2VsZi5faGFuZGxlX3NraXAoKToKLSAgICAgICAgICAg
ICAgICByZXR1cm4KLSAgICAgICAgICAgIHNlbGYuX3Rlc3RjYXNlLmRlYnVnKCkKLQotICAgIGRl
ZiBfcHJ1bmV0cmFjZWJhY2soc2VsZiwgZXhjaW5mbyk6Ci0gICAgICAgIEZ1bmN0aW9uLl9wcnVu
ZXRyYWNlYmFjayhzZWxmLCBleGNpbmZvKQotICAgICAgICB0cmFjZWJhY2sgPSBleGNpbmZvLnRy
YWNlYmFjay5maWx0ZXIoCi0gICAgICAgICAgICBsYW1iZGEgeDogbm90IHguZnJhbWUuZl9nbG9i
YWxzLmdldCgnX191bml0dGVzdCcpKQotICAgICAgICBpZiB0cmFjZWJhY2s6Ci0gICAgICAgICAg
ICBleGNpbmZvLnRyYWNlYmFjayA9IHRyYWNlYmFjawotCi0KLUBob29raW1wbCh0cnlmaXJzdD1U
cnVlKQotZGVmIHB5dGVzdF9ydW50ZXN0X21ha2VyZXBvcnQoaXRlbSwgY2FsbCk6Ci0gICAgaWYg
aXNpbnN0YW5jZShpdGVtLCBUZXN0Q2FzZUZ1bmN0aW9uKToKLSAgICAgICAgaWYgaXRlbS5fZXhj
aW5mbzoKLSAgICAgICAgICAgIGNhbGwuZXhjaW5mbyA9IGl0ZW0uX2V4Y2luZm8ucG9wKDApCi0g
ICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgZGVsIGNhbGwucmVzdWx0Ci0gICAgICAg
ICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgcGFzcwotCi0jIHR3
aXN0ZWQgdHJpYWwgc3VwcG9ydAotCi0KLUBob29raW1wbChob29rd3JhcHBlcj1UcnVlKQotZGVm
IHB5dGVzdF9ydW50ZXN0X3Byb3RvY29sKGl0ZW0pOgotICAgIGlmIGlzaW5zdGFuY2UoaXRlbSwg
VGVzdENhc2VGdW5jdGlvbikgYW5kIFwKLSAgICAgICAndHdpc3RlZC50cmlhbC51bml0dGVzdCcg
aW4gc3lzLm1vZHVsZXM6Ci0gICAgICAgIHV0ID0gc3lzLm1vZHVsZXNbJ3R3aXN0ZWQucHl0aG9u
LmZhaWx1cmUnXQotICAgICAgICBGYWlsdXJlX19pbml0X18gPSB1dC5GYWlsdXJlLl9faW5pdF9f
Ci0gICAgICAgIGNoZWNrX3Rlc3RjYXNlX2ltcGxlbWVudHNfdHJpYWxfcmVwb3J0ZXIoKQotCi0g
ICAgICAgIGRlZiBleGNzdG9yZShzZWxmLCBleGNfdmFsdWU9Tm9uZSwgZXhjX3R5cGU9Tm9uZSwg
ZXhjX3RiPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICBjYXB0dXJlVmFycz1Ob25lKToKLSAg
ICAgICAgICAgIGlmIGV4Y192YWx1ZSBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX3Jh
d2V4Y2luZm8gPSBzeXMuZXhjX2luZm8oKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICBpZiBleGNfdHlwZSBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICBleGNfdHlwZSA9
IHR5cGUoZXhjX3ZhbHVlKQotICAgICAgICAgICAgICAgIHNlbGYuX3Jhd2V4Y2luZm8gPSAoZXhj
X3R5cGUsIGV4Y192YWx1ZSwgZXhjX3RiKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
ICAgIEZhaWx1cmVfX2luaXRfXyhzZWxmLCBleGNfdmFsdWUsIGV4Y190eXBlLCBleGNfdGIsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhcHR1cmVWYXJzPWNhcHR1cmVWYXJzKQot
ICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICBGYWlsdXJlX19p
bml0X18oc2VsZiwgZXhjX3ZhbHVlLCBleGNfdHlwZSwgZXhjX3RiKQotCi0gICAgICAgIHV0LkZh
aWx1cmUuX19pbml0X18gPSBleGNzdG9yZQotICAgICAgICB5aWVsZAotICAgICAgICB1dC5GYWls
dXJlLl9faW5pdF9fID0gRmFpbHVyZV9faW5pdF9fCi0gICAgZWxzZToKLSAgICAgICAgeWllbGQK
LQotCi1kZWYgY2hlY2tfdGVzdGNhc2VfaW1wbGVtZW50c190cmlhbF9yZXBvcnRlcihkb25lPVtd
KToKLSAgICBpZiBkb25lOgotICAgICAgICByZXR1cm4KLSAgICBmcm9tIHpvcGUuaW50ZXJmYWNl
IGltcG9ydCBjbGFzc0ltcGxlbWVudHMKLSAgICBmcm9tIHR3aXN0ZWQudHJpYWwuaXRyaWFsIGlt
cG9ydCBJUmVwb3J0ZXIKLSAgICBjbGFzc0ltcGxlbWVudHMoVGVzdENhc2VGdW5jdGlvbiwgSVJl
cG9ydGVyKQotICAgIGRvbmUuYXBwZW5kKDEpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODgwZWZjMGM5MTBmZDA3NjJlZjYwMTNmNDhl
ZmQzMzQ2M2Y0Mzk4ZS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsNTEgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9fX2luaXRfXy5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9jYWNoZXByb3ZpZGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9jYXB0dXJlLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvX3B5dGVzdC9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2NvbmZpZy5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZGVidWdnaW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC9kZXByZWNhdGVkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9kb2N0ZXN0LnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvX3B5dGVzdC9maXh0dXJlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvZnJlZXplX3N1
cHBvcnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L2hlbHBjb25maWcucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9fcHl0ZXN0L2hvb2tzcGVjLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9qdW5pdHhtbC5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L19weXRlc3QvbG9nZ2luZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbWFp
bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvbWFyay5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qv
bW9ua2V5cGF0Y2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L25vZGVzLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvX3B5dGVzdC9ub3NlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9vdXRjb21lcy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L19weXRlc3QvcGFzdGViaW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3B5dGVz
dGVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9weXRob24ucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3B5dGhvbl9hcGkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3JlY3dhcm4ucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9fcHl0ZXN0L3Jlc3VsdGxvZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3QvcnVubmVy
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC9zZXR1cG9ubHkucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9fcHl0
ZXN0L3NldHVwcGxhbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvc2tpcHBpbmcucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9fcHl0ZXN0L3Rlcm1pbmFsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC90bXBkaXIu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9fcHl0ZXN0L3VuaXR0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVz
dC93YXJuaW5ncy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5dGVzdC93YXJuaW5ncy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L19weXRlc3Qvd2FybmluZ3MucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDNjMmIxOTE0ZmI2OTE2NGIzODBmMWY1Mjk0ZjU3NDllZDNlNDkyOWQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvX3B5
dGVzdC93YXJuaW5ncy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLWZyb20gX19m
dXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24K
LQotaW1wb3J0IHdhcm5pbmdzCi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2Vy
Ci0KLWltcG9ydCBweXRlc3QKLQotZnJvbSBfcHl0ZXN0IGltcG9ydCBjb21wYXQKLQotCi1kZWYg
X3NldG9wdGlvbih3bW9kLCBhcmcpOgotICAgICIiIgotICAgIENvcHkgb2YgdGhlIHdhcm5pbmcu
X3NldG9wdGlvbiBmdW5jdGlvbiBidXQgZG9lcyBub3QgZXNjYXBlIGFyZ3VtZW50cy4KLSAgICAi
IiIKLSAgICBwYXJ0cyA9IGFyZy5zcGxpdCgnOicpCi0gICAgaWYgbGVuKHBhcnRzKSA+IDU6Ci0g
ICAgICAgIHJhaXNlIHdtb2QuX09wdGlvbkVycm9yKCJ0b28gbWFueSBmaWVsZHMgKG1heCA1KTog
JXIiICUgKGFyZywpKQotICAgIHdoaWxlIGxlbihwYXJ0cykgPCA1OgotICAgICAgICBwYXJ0cy5h
cHBlbmQoJycpCi0gICAgYWN0aW9uLCBtZXNzYWdlLCBjYXRlZ29yeSwgbW9kdWxlLCBsaW5lbm8g
PSBbcy5zdHJpcCgpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIHMgaW4gcGFydHNdCi0gICAgYWN0aW9uID0gd21vZC5fZ2V0YWN0aW9uKGFjdGlv
bikKLSAgICBjYXRlZ29yeSA9IHdtb2QuX2dldGNhdGVnb3J5KGNhdGVnb3J5KQotICAgIGlmIGxp
bmVubzoKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgbGluZW5vID0gaW50KGxpbmVubykKLSAg
ICAgICAgICAgIGlmIGxpbmVubyA8IDA6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJv
cgotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IpOgotICAgICAgICAg
ICAgcmFpc2Ugd21vZC5fT3B0aW9uRXJyb3IoImludmFsaWQgbGluZW5vICVyIiAlIChsaW5lbm8s
KSkKLSAgICBlbHNlOgotICAgICAgICBsaW5lbm8gPSAwCi0gICAgd21vZC5maWx0ZXJ3YXJuaW5n
cyhhY3Rpb24sIG1lc3NhZ2UsIGNhdGVnb3J5LCBtb2R1bGUsIGxpbmVubykKLQotCi1kZWYgcHl0
ZXN0X2FkZG9wdGlvbihwYXJzZXIpOgotICAgIGdyb3VwID0gcGFyc2VyLmdldGdyb3VwKCJweXRl
c3Qtd2FybmluZ3MiKQotICAgIGdyb3VwLmFkZG9wdGlvbigKLSAgICAgICAgJy1XJywgJy0tcHl0
aG9ud2FybmluZ3MnLCBhY3Rpb249J2FwcGVuZCcsCi0gICAgICAgIGhlbHA9InNldCB3aGljaCB3
YXJuaW5ncyB0byByZXBvcnQsIHNlZSAtVyBvcHRpb24gb2YgcHl0aG9uIGl0c2VsZi4iKQotICAg
IHBhcnNlci5hZGRpbmkoImZpbHRlcndhcm5pbmdzIiwgdHlwZT0ibGluZWxpc3QiLAotICAgICAg
ICAgICAgICAgICAgaGVscD0iRWFjaCBsaW5lIHNwZWNpZmllcyBhIHBhdHRlcm4gZm9yICIKLSAg
ICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncy4gIgotICAgICAgICAgICAg
ICAgICAgIlByb2Nlc3NlZCBhZnRlciAtVyBhbmQgLS1weXRob253YXJuaW5ncy4iKQotCi0KLUBj
b250ZXh0bWFuYWdlcgotZGVmIGNhdGNoX3dhcm5pbmdzX2Zvcl9pdGVtKGl0ZW0pOgotICAgICIi
IgotICAgIGNhdGNoZXMgdGhlIHdhcm5pbmdzIGdlbmVyYXRlZCBkdXJpbmcgc2V0dXAvY2FsbC90
ZWFyZG93biBleGVjdXRpb24KLSAgICBvZiB0aGUgZ2l2ZW4gaXRlbSBhbmQgYWZ0ZXIgaXQgaXMg
ZG9uZSBwb3N0cyB0aGVtIGFzIHdhcm5pbmdzIHRvIHRoaXMKLSAgICBpdGVtLgotICAgICIiIgot
ICAgIGFyZ3MgPSBpdGVtLmNvbmZpZy5nZXRvcHRpb24oJ3B5dGhvbndhcm5pbmdzJykgb3IgW10K
LSAgICBpbmlmaWx0ZXJzID0gaXRlbS5jb25maWcuZ2V0aW5pKCJmaWx0ZXJ3YXJuaW5ncyIpCi0g
ICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhyZWNvcmQ9VHJ1ZSkgYXMgbG9nOgotICAg
ICAgICBmb3IgYXJnIGluIGFyZ3M6Ci0gICAgICAgICAgICB3YXJuaW5ncy5fc2V0b3B0aW9uKGFy
ZykKLQotICAgICAgICBmb3IgYXJnIGluIGluaWZpbHRlcnM6Ci0gICAgICAgICAgICBfc2V0b3B0
aW9uKHdhcm5pbmdzLCBhcmcpCi0KLSAgICAgICAgbWFyayA9IGl0ZW0uZ2V0X21hcmtlcignZmls
dGVyd2FybmluZ3MnKQotICAgICAgICBpZiBtYXJrOgotICAgICAgICAgICAgZm9yIGFyZyBpbiBt
YXJrLmFyZ3M6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3MuX3NldG9wdGlvbihhcmcpCi0KLSAg
ICAgICAgeWllbGQKLQotICAgICAgICBmb3Igd2FybmluZyBpbiBsb2c6Ci0gICAgICAgICAgICB3
YXJuX21zZyA9IHdhcm5pbmcubWVzc2FnZQotICAgICAgICAgICAgdW5pY29kZV93YXJuaW5nID0g
RmFsc2UKLQotICAgICAgICAgICAgaWYgY29tcGF0Ll9QWTIgYW5kIGFueShpc2luc3RhbmNlKG0s
IGNvbXBhdC5VTklDT0RFX1RZUEVTKSBmb3IgbSBpbiB3YXJuX21zZy5hcmdzKToKLSAgICAgICAg
ICAgICAgICBuZXdfYXJncyA9IFtdCi0gICAgICAgICAgICAgICAgZm9yIG0gaW4gd2Fybl9tc2cu
YXJnczoKLSAgICAgICAgICAgICAgICAgICAgbmV3X2FyZ3MuYXBwZW5kKGNvbXBhdC5hc2NpaV9l
c2NhcGVkKG0pIGlmIGlzaW5zdGFuY2UobSwgY29tcGF0LlVOSUNPREVfVFlQRVMpIGVsc2UgbSkK
LSAgICAgICAgICAgICAgICB1bmljb2RlX3dhcm5pbmcgPSBsaXN0KHdhcm5fbXNnLmFyZ3MpICE9
IG5ld19hcmdzCi0gICAgICAgICAgICAgICAgd2Fybl9tc2cuYXJncyA9IG5ld19hcmdzCi0KLSAg
ICAgICAgICAgIG1zZyA9IHdhcm5pbmdzLmZvcm1hdHdhcm5pbmcoCi0gICAgICAgICAgICAgICAg
d2Fybl9tc2csIHdhcm5pbmcuY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgd2FybmluZy5maWxl
bmFtZSwgd2FybmluZy5saW5lbm8sIHdhcm5pbmcubGluZSkKLSAgICAgICAgICAgIGl0ZW0ud2Fy
bigidW51c2VkIiwgbXNnKQotCi0gICAgICAgICAgICBpZiB1bmljb2RlX3dhcm5pbmc6Ci0gICAg
ICAgICAgICAgICAgd2FybmluZ3Mud2FybigKLSAgICAgICAgICAgICAgICAgICAgIldhcm5pbmcg
aXMgdXNpbmcgdW5pY29kZSBub24gY29udmVydGlibGUgdG8gYXNjaWksICIKLSAgICAgICAgICAg
ICAgICAgICAgImNvbnZlcnRpbmcgdG8gYSBzYWZlIHJlcHJlc2VudGF0aW9uOlxuICAlcyIgJSBt
c2csCi0gICAgICAgICAgICAgICAgICAgIFVuaWNvZGVXYXJuaW5nKQotCi0KLUBweXRlc3QuaG9v
a2ltcGwoaG9va3dyYXBwZXI9VHJ1ZSkKLWRlZiBweXRlc3RfcnVudGVzdF9wcm90b2NvbChpdGVt
KToKLSAgICB3aXRoIGNhdGNoX3dhcm5pbmdzX2Zvcl9pdGVtKGl0ZW0pOgotICAgICAgICB5aWVs
ZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9iZW5jaC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
Mjc3MjdhNzc3NDNhYjIyM2NlZGYxZGFhY2E5YjU1OWNiNjhiZDhhMS4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9iZW5jaC93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2JlbmNoL2JlbmNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvYmVuY2gvYmVuY2hfYXJnY29tcGxldGUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9iZW5jaC9lbXB0eS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL21hbnlw
YXJhbS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2JlbmNoL3NraXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2NoYW5nZWxvZy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxvZy93M2Mt
aW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM5OTE2YWE1ZWUwOTc1
ZTQ5ZDZlOWE2YThkYzA2OWNkNmQ5YTgxNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vsb2cvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9jaGFuZ2Vs
b2cvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2NoYW5nZWxvZy9fdGVtcGxhdGUucnN0CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBhNDM2NjA0YjRhNTM0Y2RlOWE4YWVhY2M5OGM5Yjg5NzBlZThmYThh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190ZW1wbGF0ZXMvZ2xvYmFs
dG9jLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RlbXBsYXRlcy9sYXlvdXQuaHRtbAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9fdGVtcGxhdGVzL2xpbmtzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vX3RlbXBsYXRlcy9zaWRlYmFyaW50cm8uaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL190aGVtZXMvZmxhc2svc3RhdGljL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL190aGVtZXMvZmxhc2svc3RhdGljL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAyODQ3NGY5NzBlYWU1ODk3MTViODRjZjcyNTBiZmE0MzAxOWFhMjkz
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3N0YXRpYy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9u
dWxsCkBAIC0xLDE3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGlt
cG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0
cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24g
dGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJL
aXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9fdGhlbWVz
L2ZsYXNrL3N0YXRpYy9mbGFza3kuY3NzX3QKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9fdGhlbWVzL2ZsYXNrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVt
ZXMvZmxhc2svdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAz
NjI2YWJhMzZmNmE5NWYxMDc5NjkxNzFhNTM1OTkyYWNhOTJlODYuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL190aGVtZXMv
Zmxhc2svdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUg
dGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3Np
dG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5z
dGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8v
Z2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9T
Y3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBt
b2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxl
czoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFzay9sYXlvdXQuaHRtbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9fdGhlbWVzL2ZsYXNrL3JlbGF0aW9ucy5odG1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL190aGVtZXMvZmxhc2svdGhlbWUuY29uZgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL190aGVtZXMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1l
cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1NjU0OGQw
ZGE3OTUyNGU4YWFiN2YzYjk3MzUxODZmOGI5MGIyMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9fdGhlbWVzL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9S
RUFETUUKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vX3RoZW1lcy9mbGFza190aGVtZV9zdXBwb3J0LnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vYW5ub3VuY2UvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDQ2NGM4YmNkNGRjNjczNGIxNTdlZjFkMzgzMGYwOTM5YWVlNWM1
ZDQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2Fubm91bmNlL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
ODcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fubm91bmNlL2luZGV4LnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4wLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4xLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMC4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuMC4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuMS4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4x
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4yLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMS4zLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMi4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTIuMi4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTIuMi4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
Mi40LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy4wLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy4xLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuMy4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTIuMy4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTIuMy40LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTIuMy41LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNC4wLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNC4xLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNC4yLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNS4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTIuNS4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTIuNS4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4w
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4xLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4yLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuNi4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTIuNy4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTIuNy4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIu
Ny4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC4yLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC4zLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOC40LnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTIuOC41LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTIuOC42LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTIuOC43LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4wLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4xLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTIuOS4yLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuMC4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTMuMC4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC4z
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC40LnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC41LnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMC42LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTMuMC43LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuMS4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
MS4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4yLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMS4zLnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9hbm5vdW5jZS9yZWxlYXNlLTMuMi4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5j
ZS9yZWxlYXNlLTMuMi4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNl
LTMuMi4zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi40LnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMi41LnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4wLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2Rv
Yy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuMy4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5v
dW5jZS9yZWxlYXNlLTMuMy4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxl
YXNlLTMuNC4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4x
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNC4yLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4wLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMuNS4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9h
bm5vdW5jZS9yZWxlYXNlLTMuNi4wLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9y
ZWxlYXNlLTMuNi4xLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9yZWxlYXNlLTMu
Ni4yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hbm5vdW5jZS9zcHJpbnQyMDE2LnJzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0
bW9kdWxlX2NvbmZpZy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxl
L2Fzc2VydGlvbi9nbG9iYWxfdGVzdG1vZHVsZV9jb25maWcvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MmIyYjZiYzg2N2E1MzVhOWI1MmFjZDgyYTMxNWNi
NTJhMzlhZWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvYXNzZXJ0aW9uL2dsb2JhbF90ZXN0bW9kdWxlX2Nv
bmZpZy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0
ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0
b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0
ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9n
aXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Nj
cmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1v
ZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVz
OgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi9nbG9iYWxfdGVzdG1vZHVs
ZV9jb25maWcvY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRp
b24vZ2xvYmFsX3Rlc3Rtb2R1bGVfY29uZmlnL3Rlc3RfaGVsbG9fd29ybGQucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Fzc2VydGlvbi93M2MtaW1wb3J0LmxvZwpkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMyMmFiOTM3OGZiZDRiNTQwZTk4MzdlY2MwNDdj
NjZmODAwNzA3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9hc3NlcnRpb24vZmFpbHVyZV9kZW1vLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvYXNzZXJ0aW9uL3Rlc3RfZmFpbHVyZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhh
bXBsZS9hc3NlcnRpb24vdGVzdF9zZXR1cF9mbG93X2V4YW1wbGUucHkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjEvX19pbml0X18ucHkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIxL19faW5pdF9fLnB5CmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTJkNjAwNTQ4OWViZWU2MmNkZTAyMDY2ZjE5
YzU1MjFlNjIwNDUxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1YjEvX19pbml0X18u
cHkKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi0jCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIxL3Rlc3RfcXVpY2sucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIxL3Rlc3RfcXVpY2sucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NzY1Nzg2N2UwMjFkYmU4YzY0MjY3ZTVlYjQ3Nzg0
MmQ2NzNjM2EuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMS90ZXN0X3F1aWNrLnB5
CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0KLWRlZiB0ZXN0X3F1aWNrKHNldHVwKToK
LSAgICBwYXNzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlz
ZXR1cC9zdWIxL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29z
dGx5c2V0dXAvc3ViMS93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMTM3ZjY2YTE4YmE3MjA5MDQ4Mjg0OWVmZjQ4Y2Q3MmMzNGM3NzgzZS4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhh
bXBsZS9jb3N0bHlzZXR1cC9zdWIxL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0
dXAvc3ViMS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNl
dHVwL3N1YjEvdGVzdF9xdWljay5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvY29zdGx5c2V0dXAvc3ViMi9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9l
eGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvX19pbml0X18ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc5MmQ2MDA1NDg5ZWJlZTYyY2RlMDIwNjZmMTljNTUyMWU2MjA0NTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMi9fX2luaXRfXy5weQorKysgL2Rldi9udWxsCkBA
IC0xICswLDAgQEAKLSMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nv
c3RseXNldHVwL3N1YjIvdGVzdF90d28ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9j
b3N0bHlzZXR1cC9zdWIyL3Rlc3RfdHdvLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCA2ZWQ2ZWU0ZDg5OGZmNmVmYTc2ZTZhMWQ0OTBjNGNkMWIwZThjMDQyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFt
cGxlL2Nvc3RseXNldHVwL3N1YjIvdGVzdF90d28ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2ICsw
LDAgQEAKLWRlZiB0ZXN0X3NvbWV0aGluZyhzZXR1cCk6Ci0gICAgYXNzZXJ0IHNldHVwLnRpbWVj
b3N0bHkgPT0gMQotCi1kZWYgdGVzdF9zb21ldGhpbmdfbW9yZShzZXR1cCk6Ci0gICAgYXNzZXJ0
IHNldHVwLnRpbWVjb3N0bHkgPT0gMQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViMi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYmE2NDIwZWM4M2Q4Nzc4YmI1MGJiZWEwYTcwZjUyZWZiOTlmNzI2
Yi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWIyL3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4
YW1wbGUvY29zdGx5c2V0dXAvc3ViMi9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9l
eGFtcGxlL2Nvc3RseXNldHVwL3N1YjIvdGVzdF90d28ucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9hL3czYy1pbXBvcnQubG9nIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2EvdzNjLWltcG9ydC5sb2cK
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhMDU4MTVjZGQwNzQ4ZjRjOWNjN2YzNWEw
Mjk2Y2E4OWY3NTZjYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3ViX2EvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYS9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9hL3Rlc3RfcXVpY2sucHkKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9iL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvc3Vi
X2IvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYTM5NzA2
NTZmYjA3OTUyY2Q3OGQzNmEyYTM5YmY0Y2YzNzFhZWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5
c2V0dXAvc3ViX2IvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0bHlzZXR1cC9zdWJfYi9f
X2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3RseXNldHVwL3N1Yl9i
L3Rlc3RfdHdvLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9jb3N0
bHlzZXR1cC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nvc3Rs
eXNldHVwL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzM0
NWY3YzhkNTAwYTVlMzczNzc0YTQzNjc4MDE2Y2E5OTMwMWUyLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL2Nv
c3RseXNldHVwL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29zdGx5c2V0dXAvY29uZnRlc3Qu
cHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi9fX2lu
aXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi9fX2luaXRfXy5w
eQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5
YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhp
cyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZv
ciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi9leGFtcGxlL25vbnB5dGhvbi93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggYjE2ZjQwZDBkZjllZTA4N2QzNTE1MTYxOGQ3ZjZjNDUyNzE4Mjgx
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9u
b25weXRob24vX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRo
b24vY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9ub25weXRob24vdGVz
dF9zaW1wbGUueW1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weTJw
eTMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9weTJweTMvdzNj
LWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmOGE4Yzk0ZjRlNWFm
NmI1OTdkOGVlYzg1NTEzMDNmYmY1MWM2YjIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL3czYy1p
bXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRo
aXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBO
T1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0
ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20v
d2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBv
cnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJl
bW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL2V4YW1wbGUvcHkycHkzL2NvbmZ0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2V4YW1wbGUvcHkycHkzL3Rlc3RfcHkyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1w
bGUvcHkycHkzL3Rlc3RfcHkzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhh
bXBsZS93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWJkYWFkMWQyNTA2ZDVmNzIw
NmZhZTNmNTAzYzc0YjIwODZmOGE1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3czYy1pbXBvcnQubG9nCisr
KyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5
IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRo
ZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVx
dWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3Jt
LXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3Rz
IGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZp
bGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1O
b25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L2V4YW1wbGUvYXR0aWMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvY29uZnRlc3Qu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhhbXBsZS9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vZXhhbXBsZS9tYXJrZXJzLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL211
bHRpcHl0aG9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvbm9ucHl0aG9uLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3BhcmFtZXRyaXplLnJzdAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi9leGFtcGxlL3B5dGhvbmNvbGxlY3Rpb24ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
ZXhhbXBsZS9weXRob25jb2xsZWN0aW9uLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxl
L3JlcG9ydGluZ2RlbW8ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2V4YW1wbGUvc2ltcGxlLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9leGFtcGxlL3NwZWNpYWwucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2V4YW1wbGUveGZhaWxfZGVtby5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL2ltZy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZjkzMDJiNzdiZWQ2ODc3MDk5
MjI5NzBiNTFjN2YxMTcxNDgxODcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcv
Y3JhbWVyMi5wbmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL2ZyZWlidXJnMi5qcGcKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vaW1nL2dheW5vcjMucG5nCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9r
ZWxlc2hldi5wbmcKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vaW1nL3B1bGxyZXF1ZXN0LnBuZwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9pbWcvcHlsaWIucG5nCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ltZy9w
eXRlc3QxLnBuZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9pbWcvcHl0ZXN0MWZhdmkuaWNvCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL2ltZy90aGV1bmkucG5nCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9k
b2MvZW4vcHJvcG9zYWxzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Byb3Bv
c2Fscy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM3MzVl
ZmZlOTk0ZDhlMTc4OWM3N2IyMWY0MTc5MmIxODNjOWEwOS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcHJvcG9zYWxzL3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL3Byb3Bvc2Fscy9wYXJhbWV0cml6ZV93aXRoX2ZpeHR1cmVzLnJzdApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvYXR0aWMucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3Rlc3QvYXR0aWMucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
Njk0NDY2MWNiNWNlNzE1MGFkOWRmZmU3ZTUzOWRkZjE4ZDhhMDgwLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2F0
dGljLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQVRUSUMgZG9jdW1lbnRhdGlvbgotPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotWFhYIFJFVklF
VyBhbmQgcmVtb3ZlIHRoZSBiZWxvdyAgWFhYCi0KLUN1c3RvbWl6aW5nIHRoZSB0ZXN0aW5nIHBy
b2Nlc3MKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotd3JpdGluZyBjb25mdGVz
dC5weSBmaWxlcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotWW91IG1h
eSBwdXQgY29uZnRlc3QucHkgZmlsZXMgY29udGFpbmluZyBwcm9qZWN0LXNwZWNpZmljCi1jb25m
aWd1cmF0aW9uIGluIHlvdXIgcHJvamVjdCdzIHJvb3QgZGlyZWN0b3J5LCBpdCdzIHVzdWFsbHkK
LWJlc3QgdG8gcHV0IGl0IGp1c3QgaW50byB0aGUgc2FtZSBkaXJlY3RvcnkgbGV2ZWwgYXMgeW91
cgotdG9wbW9zdCBgYF9faW5pdF9fLnB5YGAuICBJbiBmYWN0LCBgYHB5dGVzdGBgIHBlcmZvcm1z
Ci1hbiAidXB3YXJkcyIgc2VhcmNoIHN0YXJ0aW5nIGZyb20gdGhlIGRpcmVjdG9yeSB0aGF0IHlv
dSBzcGVjaWZ5Ci10byBiZSB0ZXN0ZWQgYW5kIHdpbGwgbG9va3VwIGNvbmZpZ3VyYXRpb24gdmFs
dWVzIHJpZ2h0LXRvLWxlZnQuCi1Zb3UgbWF5IGhhdmUgb3B0aW9ucyB0aGF0IHJlc2lkZSBlLmcu
IGluIHlvdXIgaG9tZSBkaXJlY3RvcnkKLWJ1dCBub3RlIHRoYXQgcHJvamVjdCBzcGVjaWZpYyBz
ZXR0aW5ncyB3aWxsIGJlIGNvbnNpZGVyZWQKLWZpcnN0LiAgVGhlcmUgaXMgYSBmbGFnIHRoYXQg
aGVscHMgeW91IGRlYnVnZ2luZyB5b3VyCi1jb25mdGVzdC5weSBjb25maWd1cmF0aW9uczo6Ci0K
LSAgICBweXRlc3QgLS10cmFjZS1jb25maWcKLQotCi1jdXN0b21pemluZyB0aGUgY29sbGVjdGlu
ZyBhbmQgcnVubmluZyBwcm9jZXNzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi1UbyBpbnRyb2R1Y2UgZGlmZmVyZW50IHRlc3QgaXRlbXMgeW91IGNh
biBjcmVhdGUKLW9uZSBvciBtb3JlIGBgY29uZnRlc3QucHlgYCBmaWxlcyBpbiB5b3VyIHByb2pl
Y3QuCi1XaGVuIHRoZSBjb2xsZWN0aW9uIHByb2Nlc3MgdHJhdmVyc2VzIGRpcmVjdG9yaWVzCi1h
bmQgbW9kdWxlcyB0aGUgZGVmYXVsdCBjb2xsZWN0b3JzIHdpbGwgcHJvZHVjZQotY3VzdG9tIENv
bGxlY3RvcnMgYW5kIEl0ZW1zIGlmIHRoZXkgYXJlIGZvdW5kCi1pbiBhIGxvY2FsIGBgY29uZnRl
c3QucHlgYCBmaWxlLgotCi0KLUN1c3RvbWl6aW5nIHRoZSBjb2xsZWN0aW9uIHByb2Nlc3MgaW4g
YSBtb2R1bGUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotSWYgeW91IGhhdmUgYSBtb2R1bGUgd2hlcmUgeW91IHdhbnQgdG8gdGFrZSByZXNwb25zaWJp
bGl0eSBmb3IKLWNvbGxlY3RpbmcgeW91ciBvd24gdGVzdCBJdGVtcyBhbmQgcG9zc2libHkgZXZl
biBmb3IgZXhlY3V0aW5nCi1hIHRlc3QgdGhlbiB5b3UgY2FuIHByb3ZpZGUgYGdlbmVyYXRpdmUg
dGVzdHNgXyB0aGF0IHlpZWxkCi1jYWxsYWJsZXMgYW5kIHBvc3NpYmx5IGFyZ3VtZW50cyBhcyBh
IHR1cGxlLiAgIFRoaXMgaXMgZXNwZWNpYWxseQotdXNlZnVsIGZvciBjYWxsaW5nIGFwcGxpY2F0
aW9uIHRlc3QgbWFjaGluZXJ5IHdpdGggZGlmZmVyZW50Ci1wYXJhbWV0ZXIgc2V0cyBidXQgY291
bnRpbmcgZWFjaCBvZiB0aGUgY2FsbHMgYXMgYSBzZXBhcmF0ZQotdGVzdHMuCi0KLS4uIF9gZ2Vu
ZXJhdGl2ZSB0ZXN0c2A6IGZlYXR1cmVzLmh0bWwjZ2VuZXJhdGl2ZS10ZXN0cwotCi1UaGUgb3Ro
ZXIgZXh0ZW5zaW9uIHBvc3NpYmlsaXR5IGlzIGFib3V0Ci1zcGVjaWZ5aW5nIGEgY3VzdG9tIHRl
c3QgYGBJdGVtYGAgY2xhc3Mgd2hpY2gKLWlzIHJlc3BvbnNpYmxlIGZvciBzZXR0aW5nIHVwIGFu
ZCBleGVjdXRpbmcgYW4gdW5kZXJseWluZwotdGVzdC4gIE9yIHlvdSBjYW4gZXh0ZW5kIHRoZSBj
b2xsZWN0aW9uIHByb2Nlc3MgZm9yIGEgd2hvbGUKLWRpcmVjdG9yeSB0cmVlIGJ5IHB1dHRpbmcg
SXRlbXMgaW4gYSBgYGNvbmZ0ZXN0LnB5YGAgY29uZmlndXJhdGlvbiBmaWxlLgotVGhlIGNvbGxl
Y3Rpb24gcHJvY2VzcyBkeW5hbWljYWxseSBjb25zdWx0cyB0aGUgKmNoYWluIG9mIGNvbmZ0ZXN0
LnB5KgotbW9kdWxlcyB0byBkZXRlcm1pbmUgY29sbGVjdG9ycyBhbmQgaXRlbXMgYXQgYGBEaXJl
Y3RvcnlgYCwgYGBNb2R1bGVgYCwKLWBgQ2xhc3NgYCwgYGBGdW5jdGlvbmBgIG9yIGBgR2VuZXJh
dG9yYGAgbGV2ZWwgcmVzcGVjdGl2ZWx5LgotCi1DdXN0b21pemluZyBleGVjdXRpb24gb2YgSXRl
bXMgYW5kIEZ1bmN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQotCi0tIGBgcHl0ZXN0LkZ1bmN0aW9uYGAgdGVzdCBpdGVtcyBjb250cm9s
IGV4ZWN1dGlvbgotICBvZiBhIHRlc3QgZnVuY3Rpb24gdGhyb3VnaCBpdHMgYGBmdW5jdGlvbi5y
dW50ZXN0KClgYCBtZXRob2QuCi0gIFRoaXMgbWV0aG9kIGlzIHJlc3BvbnNpYmxlIGZvciBwZXJm
b3JtaW5nIHNldHVwIGFuZCB0ZWFyZG93bgotICAoIlRlc3QgRml4dHVyZXMiKSBmb3IgYSB0ZXN0
IEZ1bmN0aW9uLgotCi0tIGBgRnVuY3Rpb24uZXhlY3V0ZSh0YXJnZXQsICphcmdzKWBgIG1ldGhv
ZHMgYXJlIGludm9rZWQgYnkKLSAgdGhlIGRlZmF1bHQgYGBGdW5jdGlvbi5ydW4oKWBgIHRvIGFj
dHVhbGx5IGV4ZWN1dGUgYSBweXRob24KLSAgZnVuY3Rpb24gd2l0aCB0aGUgZ2l2ZW4gKHVzdWFs
bHkgZW1wdHkgc2V0IG9mKSBhcmd1bWVudHMuCi0KLS4uIF9gcHktZGV2IG1haWxpbmcgbGlzdGA6
IGh0dHA6Ly9jb2Rlc3BlYWsubmV0L21haWxtYW4vbGlzdGluZm8vcHktZGV2Ci0KLQotLi4gX2B0
ZXN0IGdlbmVyYXRvcnNgOiBmdW5jYXJncy5odG1sI3Rlc3QtZ2VuZXJhdG9ycwotCi0uLiBfYGdl
bmVyYXRpdmUgdGVzdHNgOgotCi1nZW5lcmF0aXZlIHRlc3RzOiB5aWVsZGluZyBwYXJhbWV0cml6
ZWQgdGVzdHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLQotRGVwcmVjYXRlZCBzaW5jZSAxLjAgaW4gZmF2b3VyIG9mIGB0ZXN0IGdlbmVyYXRv
cnNgXy4KLQotKkdlbmVyYXRpdmUgdGVzdHMqIGFyZSB0ZXN0IG1ldGhvZHMgdGhhdCBhcmUgKmdl
bmVyYXRvciBmdW5jdGlvbnMqIHdoaWNoCi1gYHlpZWxkYGAgY2FsbGFibGVzIGFuZCB0aGVpciBh
cmd1bWVudHMuICBUaGlzIGlzIHVzZWZ1bCBmb3IgcnVubmluZyBhCi10ZXN0IGZ1bmN0aW9uIG11
bHRpcGxlIHRpbWVzIGFnYWluc3QgZGlmZmVyZW50IHBhcmFtZXRlcnMuICBFeGFtcGxlOjoKLQot
ICAgIGRlZiB0ZXN0X2dlbmVyYXRpdmUoKToKLSAgICAgICAgZm9yIHggaW4gKDQyLDE3LDQ5KToK
LSAgICAgICAgICAgIHlpZWxkIGNoZWNrLCB4Ci0KLSAgICBkZWYgY2hlY2soYXJnKToKLSAgICAg
ICAgYXNzZXJ0IGFyZyAlIDcgPT0gMCAgICMgc2Vjb25kIGdlbmVyYXRlZCB0ZXN0cyBmYWlscyEK
LQotTm90ZSB0aGF0IGBgdGVzdF9nZW5lcmF0aXZlKClgYCB3aWxsIGNhdXNlIHRocmVlIHRlc3Rz
Ci10byBnZXQgcnVuLCBub3RhYmx5IGBgY2hlY2soNDIpYGAsIGBgY2hlY2soMTcpYGAgYW5kIGBg
Y2hlY2soNDkpYGAKLW9mIHdoaWNoIHRoZSBtaWRkbGUgb25lIHdpbGwgb2J2aW91c2x5IGZhaWwu
Ci0KLVRvIG1ha2UgaXQgZWFzaWVyIHRvIGRpc3Rpbmd1aXNoIHRoZSBnZW5lcmF0ZWQgdGVzdHMg
aXQgaXMgcG9zc2libGUgdG8gc3BlY2lmeSBhbiBleHBsaWNpdCBuYW1lIGZvciB0aGVtLCBsaWtl
IGZvciBleGFtcGxlOjoKLQotICAgIGRlZiB0ZXN0X2dlbmVyYXRpdmUoKToKLSAgICAgICAgZm9y
IHggaW4gKDQyLDE3LDQ5KToKLSAgICAgICAgICAgIHlpZWxkICJjYXNlICVkIiAlIHgsIGNoZWNr
LCB4Ci0KLQotZGlzYWJsaW5nIGEgdGVzdCBjbGFzcwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1JZiB5b3Ugd2FudCB0byBkaXNhYmxlIGEgY29tcGxldGUgdGVzdCBjbGFzcyB5b3UKLWNhbiBz
ZXQgdGhlIGNsYXNzLWxldmVsIGF0dHJpYnV0ZSBgYGRpc2FibGVkYGAuCi1Gb3IgZXhhbXBsZSwg
aW4gb3JkZXIgdG8gYXZvaWQgcnVubmluZyBzb21lIHRlc3RzIG9uIFdpbjMyOjoKLQotICAgIGNs
YXNzIFRlc3RQb3NpeE9ubHkob2JqZWN0KToKLSAgICAgICAgZGlzYWJsZWQgPSBzeXMucGxhdGZv
cm0gPT0gJ3dpbjMyJwotCi0gICAgICAgIGRlZiB0ZXN0X3h4eChzZWxmKToKLSAgICAgICAgICAg
IC4uLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvY29uZmlnLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9jb25maWcuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggY2JhNWE0NmY5ODJlYWEyYTc3OGNmODY1YjA1MDNkMzBjOGFhYjhkYy4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vdGVzdC9jb25maWcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLTxodG1s
PgotICAgIDxoZWFkPgotICAgICAgICA8bWV0YSBodHRwLWVxdWl2PSJyZWZyZXNoIiBjb250ZW50
PSIgMSA7IFVSTD1jdXN0b21pemUuaHRtbCIgLz4KLSAgICA8L2hlYWQ+Ci0KLSAgICA8Ym9keT4K
LTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBnYUpzSG9zdCA9ICgoImh0dHBz
OiIgPT0gZG9jdW1lbnQubG9jYXRpb24ucHJvdG9jb2wpID8gImh0dHBzOi8vc3NsLiIgOiAiaHR0
cDovL3d3dy4iKTsKLWRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCIlM0NzY3JpcHQgc3JjPSciICsg
Z2FKc0hvc3QgKyAiZ29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnIHR5cGU9J3RleHQvamF2YXNj
cmlwdCclM0UlM0Mvc2NyaXB0JTNFIikpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQv
amF2YXNjcmlwdCI+Ci10cnkgewotdmFyIHBhZ2VUcmFja2VyID0gX2dhdC5fZ2V0VHJhY2tlcigi
VUEtNzU5NzI3NC0zIik7Ci1wYWdlVHJhY2tlci5fdHJhY2tQYWdldmlldygpOwotfSBjYXRjaChl
cnIpIHt9PC9zY3JpcHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0gICAgCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9kaXN0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9k
aXN0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUzMjg1NTBhODVjYjEwNTIx
YWMyMTZiMjU5MWYyNjg5ZTQ2NGU5MTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvZGlzdC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsMTggKzAsMCBAQAotPGh0bWw+Ci0gICAgPGhlYWQ+Ci0gICAgICAgIDxtZXRh
IGh0dHAtZXF1aXY9InJlZnJlc2giIGNvbnRlbnQ9IiAxIDsgVVJMPXBsdWdpbi94ZGlzdC5odG1s
IiAvPgotICAgIDwvaGVhZD4KLQotICAgIDxib2R5PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFz
Y3JpcHQiPgotdmFyIGdhSnNIb3N0ID0gKCgiaHR0cHM6IiA9PSBkb2N1bWVudC5sb2NhdGlvbi5w
cm90b2NvbCkgPyAiaHR0cHM6Ly9zc2wuIiA6ICJodHRwOi8vd3d3LiIpOwotZG9jdW1lbnQud3Jp
dGUodW5lc2NhcGUoIiUzQ3NjcmlwdCBzcmM9JyIgKyBnYUpzSG9zdCArICJnb29nbGUtYW5hbHl0
aWNzLmNvbS9nYS5qcycgdHlwZT0ndGV4dC9qYXZhc2NyaXB0JyUzRSUzQy9zY3JpcHQlM0UiKSk7
Ci08L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXRyeSB7Ci12YXIg
cGFnZVRyYWNrZXIgPSBfZ2F0Ll9nZXRUcmFja2VyKCJVQS03NTk3Mjc0LTMiKTsKLXBhZ2VUcmFj
a2VyLl90cmFja1BhZ2V2aWV3KCk7Ci19IGNhdGNoKGVycikge308L3NjcmlwdD4KLTwvYm9keT4K
LTwvaHRtbD4KLSAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2V4dGVu
ZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvZXh0ZW5kLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IGNiYTVhNDZmOTgyZWFhMmE3NzhjZjg2NWIwNTAzZDMwYzhhYWI4
ZGMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3Rlc3QvZXh0ZW5kLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCww
IEBACi08aHRtbD4KLSAgICA8aGVhZD4KLSAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVz
aCIgY29udGVudD0iIDEgOyBVUkw9Y3VzdG9taXplLmh0bWwiIC8+Ci0gICAgPC9oZWFkPgotCi0g
ICAgPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci12YXIgZ2FKc0hvc3Qg
PSAoKCJodHRwczoiID09IGRvY3VtZW50LmxvY2F0aW9uLnByb3RvY29sKSA/ICJodHRwczovL3Nz
bC4iIDogImh0dHA6Ly93d3cuIik7Ci1kb2N1bWVudC53cml0ZSh1bmVzY2FwZSgiJTNDc2NyaXB0
IHNyYz0nIiArIGdhSnNIb3N0ICsgImdvb2dsZS1hbmFseXRpY3MuY29tL2dhLmpzJyB0eXBlPSd0
ZXh0L2phdmFzY3JpcHQnJTNFJTNDL3NjcmlwdCUzRSIpKTsKLTwvc2NyaXB0PgotPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdHJ5IHsKLXZhciBwYWdlVHJhY2tlciA9IF9nYXQuX2dl
dFRyYWNrZXIoIlVBLTc1OTcyNzQtMyIpOwotcGFnZVRyYWNrZXIuX3RyYWNrUGFnZXZpZXcoKTsK
LX0gY2F0Y2goZXJyKSB7fTwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgotICAgIApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvaW5kZXgucnN0IGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9j
L2VuL3Rlc3QvaW5kZXgucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTNiNWE1
NGRhMDhjNjcyYzNhZjk3MmU0N2JmN2Q0NmU4ODYxYjVkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2luZGV4LnJz
dAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotcHl0ZXN0IGRvY3VtZW50YXRpb24gaW5kZXgKLT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLWZlYXR1cmVzXzogb3ZlcnZpZXcgYW5k
IGRpc2N1c3Npb24gb2YgZmVhdHVyZXMuCi0KLXF1aWNrc3RhcnRfOiBnZXR0aW5nIHN0YXJ0ZWQg
d2l0aCB3cml0aW5nIGEgc2ltcGxlIHRlc3QuCi0KLWB0YWxrcywgdHV0b3JpYWxzLCBleGFtcGxl
c2BfOiB0dXRvcmlhbCBleGFtcGxlcywgc2xpZGVzCi0KLWZ1bmNhcmdzXzogcG93ZXJmdWwgcGFy
YW1ldHJpemVkIHRlc3QgZnVuY3Rpb24gc2V0dXAKLQotYHBsdWdpbnNgXzogbGlzdCBvZiBhdmFp
bGFibGUgcGx1Z2lucyB3aXRoIHVzYWdlIGV4YW1wbGVzIGFuZCBmZWF0dXJlIGRldGFpbHMuCi0K
LWN1c3RvbWl6ZV86IGNvbmZpZ3VyYXRpb24sIGN1c3RvbWl6YXRpb24sIGV4dGVuc2lvbnMKLQot
Y2hhbmdlbG9nXzogaGlzdG9yeSBvZiBjaGFuZ2VzIGNvdmVyaW5nIGxhc3QgcmVsZWFzZXMKLQot
KipDb250aW51b3VzIEludGVncmF0aW9uIG9mIHB5dGVzdCdzIG93biB0ZXN0cyBhbmQgcGx1Z2lu
cyB3aXRoIEh1ZHNvbioqOgotCi0gICAgYGh0dHA6Ly9odWRzb24udGVzdHJ1bi5vcmcvdmlldy9w
eXRlc3RgXwotCi0uLiBfYGh0dHA6Ly9odWRzb24udGVzdHJ1bi5vcmcvdmlldy9weXRlc3RgOiBo
dHRwOi8vaHVkc29uLnRlc3RydW4ub3JnL3ZpZXcvcHl0ZXN0LwotCi0KLS4uIF9jaGFuZ2Vsb2c6
IC4uL2NoYW5nZWxvZy5odG1sCi0uLiBfYHBsdWdpbnNgOiBwbHVnaW4vaW5kZXguaHRtbAotLi4g
X2B0YWxrcywgdHV0b3JpYWxzLCBleGFtcGxlc2A6IHRhbGtzLmh0bWwKLS4uIF9xdWlja3N0YXJ0
OiBxdWlja3N0YXJ0Lmh0bWwKLS4uIF9mZWF0dXJlczogZmVhdHVyZXMuaHRtbAotLi4gX2Z1bmNh
cmdzOiBmdW5jYXJncy5odG1sCi0uLiBfY3VzdG9taXplOiBjdXN0b21pemUuaHRtbAotCi0KZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L21pc3Npb24ucnN0IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3Rlc3QvbWlzc2lvbi5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDUxYzI1MmRjMGQ4NmE0YzQxNzUzZDY1NjE5ODMyMWFhOGQ5ZTMyNGQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3Qv
bWlzc2lvbi5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi0KLU1pc3Npb24KLT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi1gYHB5dGVzdGBgIHN0cml2ZXMg
dG8gbWFrZSB0ZXN0aW5nIGEgZnVuIGFuZCBuby1ib2lsZXJwbGF0ZSBlZmZvcnQuCi0KLVRoZSB0
b29sIGlzIGRpc3RyaWJ1dGVkIGFzIGEgYHB5dGVzdGAgcGFja2FnZS4gIEl0cyBwcm9qZWN0IGlu
ZGVwZW5kZW50Ci1gYHB5dGVzdGBgIGNvbW1hbmQgbGluZSB0b29sIGhlbHBzIHlvdSB0bzoKLQot
KiByYXBpZGx5IGNvbGxlY3QgYW5kIHJ1biB0ZXN0cwotKiBydW4gdW5pdC0gb3IgZG9jdGVzdHMs
IGZ1bmN0aW9uYWwgb3IgaW50ZWdyYXRpb24gdGVzdHMKLSogZGlzdHJpYnV0ZSB0ZXN0cyB0byBt
dWx0aXBsZSBlbnZpcm9ubWVudHMKLSogdXNlIGxvY2FsIG9yIGdsb2JhbCBwbHVnaW5zIGZvciBj
dXN0b20gdGVzdCB0eXBlcyBhbmQgc2V0dXAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi90ZXN0L3BsdWdpbi9jb3YucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2Nv
di5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0MWM3ZWY5NDc5MzRlYTU2YWFm
NTAyMjhkMzEyOTc1NzRiNWE1N2UuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2Nvdi5yc3QKKysrIC9k
ZXYvbnVsbApAQCAtMSwyMzAgKzAsMCBAQAotCi1wcm9kdWNlIGNvZGUgY292ZXJhZ2UgcmVwb3J0
cyB1c2luZyB0aGUgJ2NvdmVyYWdlJyBwYWNrYWdlLCBpbmNsdWRpbmcgc3VwcG9ydCBmb3IgZGlz
dHJpYnV0ZWQgdGVzdGluZy4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxvY2FsOgotCi1UaGlzIHBsdWdpbiBwcm9k
dWNlcyBjb3ZlcmFnZSByZXBvcnRzLiAgSXQgc3VwcG9ydHMgY2VudHJhbGlzZWQgdGVzdGluZyBh
bmQgZGlzdHJpYnV0ZWQgdGVzdGluZyBpbgotYm90aCBsb2FkIGFuZCBlYWNoIG1vZGVzLiAgSXQg
YWxzbyBzdXBwb3J0cyBjb3ZlcmFnZSBvZiBzdWJwcm9jZXNzZXMuCi0KLUFsbCBmZWF0dXJlcyBv
ZmZlcmVkIGJ5IHRoZSBjb3ZlcmFnZSBwYWNrYWdlIHNob3VsZCBiZSBhdmFpbGFibGUsIGVpdGhl
ciB0aHJvdWdoIHB5dGVzdC1jb3Ygb3IKLXRocm91Z2ggY292ZXJhZ2UncyBjb25maWcgZmlsZS4K
LQotCi1JbnN0YWxsYXRpb24KLS0tLS0tLS0tLS0tLQotCi1UaGUgYHB5dGVzdC1jb3ZgXyBwYWNr
YWdlIG1heSBiZSBpbnN0YWxsZWQgd2l0aCBwaXAgb3IgZWFzeV9pbnN0YWxsOjoKLQotICAgIHBp
cCBpbnN0YWxsIHB5dGVzdC1jb3YKLSAgICBlYXN5X2luc3RhbGwgcHl0ZXN0LWNvdgotCi0uLiBf
YHB5dGVzdC1jb3ZgOiBodHRwOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHl0ZXN0LWNvdi8KLQot
Ci1Vbmluc3RhbGxhdGlvbgotLS0tLS0tLS0tLS0tLS0KLQotVW5pbnN0YWxsaW5nIHBhY2thZ2Vz
IGlzIHN1cHBvcnRlZCBieSBwaXA6OgotCi0gICAgcGlwIHVuaW5zdGFsbCBweXRlc3QtY292Ci0K
LUhvd2V2ZXIgZWFzeV9pbnN0YWxsIGRvZXMgbm90IHByb3ZpZGUgYW4gdW5pbnN0YWxsIGZhY2ls
aXR5LgotCi0uLiBJTVBPUlRBTlQ6OgotCi0gICAgRW5zdXJlIHRoYXQgeW91IG1hbnVhbGx5IGRl
bGV0ZSB0aGUgaW5pdF9jb3ZtYWluLnB0aCBmaWxlIGluIHlvdXIKLSAgICBzaXRlLXBhY2thZ2Vz
IGRpcmVjdG9yeS4KLQotICAgIFRoaXMgZmlsZSBzdGFydHMgY292ZXJhZ2UgY29sbGVjdGlvbiBv
ZiBzdWJwcm9jZXNzZXMgaWYgYXBwcm9wcmlhdGUgZHVyaW5nCi0gICAgc2l0ZSBpbml0aWFsaXph
dGlvbiBhdCBweXRob24gc3RhcnR1cC4KLQotCi1Vc2FnZQotLS0tLS0KLQotQ2VudHJhbGlzZWQg
VGVzdGluZwotfn5+fn5+fn5+fn5+fn5+fn5+fgotCi1DZW50cmFsaXNlZCB0ZXN0aW5nIHdpbGwg
cmVwb3J0IG9uIHRoZSBjb21iaW5lZCBjb3ZlcmFnZSBvZiB0aGUgbWFpbiBwcm9jZXNzIGFuZCBh
bGwgb2YgaXQncwotc3VicHJvY2Vzc2VzLgotCi1SdW5uaW5nIGNlbnRyYWxpc2VkIHRlc3Rpbmc6
OgotCi0gICAgcHl0ZXN0IC0tY292IG15cHJvaiB0ZXN0cy8KLQotU2hvd3MgYSB0ZXJtaW5hbCBy
ZXBvcnQ6OgotCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gY292ZXJhZ2U6IHBsYXRmb3JtIGxp
bnV4MiwgcHl0aG9uIDIuNi40LWZpbmFsLTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgTmFt
ZSAgICAgICAgICAgICAgICAgU3RtdHMgICBNaXNzICBDb3ZlcgotICAgIC0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBteXByb2ovX19pbml0X18gICAgICAgICAg
MiAgICAgIDAgICAxMDAlCi0gICAgbXlwcm9qL215cHJvaiAgICAgICAgICAyNTcgICAgIDEzICAg
IDk0JQotICAgIG15cHJvai9mZWF0dXJlNDI4NiAgICAgIDk0ICAgICAgNyAgICA5MiUKLSAgICAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgVE9UQUwgICAgICAg
ICAgICAgICAgICAzNTMgICAgIDIwICAgIDk0JQotCi0KLURpc3RyaWJ1dGVkIFRlc3Rpbmc6IExv
YWQKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotRGlzdHJpYnV0ZWQgdGVzdGluZyB3aXRo
IGRpc3QgbW9kZSBzZXQgdG8gbG9hZCB3aWxsIHJlcG9ydCBvbiB0aGUgY29tYmluZWQgY292ZXJh
Z2Ugb2YgYWxsIHNsYXZlcy4KLVRoZSBzbGF2ZXMgbWF5IGJlIHNwcmVhZCBvdXQgb3ZlciBhbnkg
bnVtYmVyIG9mIGhvc3RzIGFuZCBlYWNoIHNsYXZlIG1heSBiZSBsb2NhdGVkIGFueXdoZXJlIG9u
IHRoZQotZmlsZSBzeXN0ZW0uICBFYWNoIHNsYXZlIHdpbGwgaGF2ZSBpdCdzIHN1YnByb2Nlc3Nl
cyBtZWFzdXJlZC4KLQotUnVubmluZyBkaXN0cmlidXRlZCB0ZXN0aW5nIHdpdGggZGlzdCBtb2Rl
IHNldCB0byBsb2FkOjoKLQotICAgIHB5dGVzdCAtLWNvdiBteXByb2ogLW4gMiB0ZXN0cy8KLQot
U2hvd3MgYSB0ZXJtaW5hbCByZXBvcnQ6OgotCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gY292
ZXJhZ2U6IHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNi40LWZpbmFsLTAgLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0gICAgTmFtZSAgICAgICAgICAgICAgICAgU3RtdHMgICBNaXNzICBDb3Zlcgot
ICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBteXByb2ov
X19pbml0X18gICAgICAgICAgMiAgICAgIDAgICAxMDAlCi0gICAgbXlwcm9qL215cHJvaiAgICAg
ICAgICAyNTcgICAgIDEzICAgIDk0JQotICAgIG15cHJvai9mZWF0dXJlNDI4NiAgICAgIDk0ICAg
ICAgNyAgICA5MiUKLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci0gICAgVE9UQUwgICAgICAgICAgICAgICAgICAzNTMgICAgIDIwICAgIDk0JQotCi0KLUFnYWlu
IGJ1dCBzcHJlYWQgb3ZlciBkaWZmZXJlbnQgaG9zdHMgYW5kIGRpZmZlcmVudCBkaXJlY3Rvcmll
czo6Ci0KLSAgICBweXRlc3QgLS1jb3YgbXlwcm9qIC0tZGlzdCBsb2FkCi0gICAgICAgICAgICAt
LXR4IHNzaD1tZW1lZG91Z2hAaG9zdDEvL2NoZGlyPXRlc3RlbnYxCi0gICAgICAgICAgICAtLXR4
IHNzaD1tZW1lZG91Z2hAaG9zdDIvL2NoZGlyPS90bXAvdGVzdGVudjIvL3B5dGhvbj0vdG1wL2Vu
djEvYmluL3B5dGhvbgotICAgICAgICAgICAgLS1yc3luY2RpciBteXByb2ogLS1yc3luY2RpciB0
ZXN0cyAtLXJzeW5jIGV4YW1wbGVzCi0gICAgICAgICAgICB0ZXN0cy8KLQotU2hvd3MgYSB0ZXJt
aW5hbCByZXBvcnQ6OgotCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gY292ZXJhZ2U6IHBsYXRm
b3JtIGxpbnV4MiwgcHl0aG9uIDIuNi40LWZpbmFsLTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0g
ICAgTmFtZSAgICAgICAgICAgICAgICAgU3RtdHMgICBNaXNzICBDb3ZlcgotICAgIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBteXByb2ovX19pbml0X18gICAg
ICAgICAgMiAgICAgIDAgICAxMDAlCi0gICAgbXlwcm9qL215cHJvaiAgICAgICAgICAyNTcgICAg
IDEzICAgIDk0JQotICAgIG15cHJvai9mZWF0dXJlNDI4NiAgICAgIDk0ICAgICAgNyAgICA5MiUK
LSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgVE9UQUwg
ICAgICAgICAgICAgICAgICAzNTMgICAgIDIwICAgIDk0JQotCi0KLURpc3RyaWJ1dGVkIFRlc3Rp
bmc6IEVhY2gKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotRGlzdHJpYnV0ZWQgdGVzdGlu
ZyB3aXRoIGRpc3QgbW9kZSBzZXQgdG8gZWFjaCB3aWxsIHJlcG9ydCBvbiB0aGUgY29tYmluZWQg
Y292ZXJhZ2Ugb2YgYWxsIHNsYXZlcy4KLVNpbmNlIGVhY2ggc2xhdmUgaXMgcnVubmluZyBhbGwg
dGVzdHMgdGhpcyBhbGxvd3MgZ2VuZXJhdGluZyBhIGNvbWJpbmVkIGNvdmVyYWdlIHJlcG9ydCBm
b3IgbXVsdGlwbGUKLWVudmlyb25tZW50cy4KLQotUnVubmluZyBkaXN0cmlidXRlZCB0ZXN0aW5n
IHdpdGggZGlzdCBtb2RlIHNldCB0byBlYWNoOjoKLQotICAgIHB5dGVzdCAtLWNvdiBteXByb2og
LS1kaXN0IGVhY2gKLSAgICAgICAgICAgIC0tdHggcG9wZW4vL2NoZGlyPS90bXAvdGVzdGVudjMv
L3B5dGhvbj0vdXNyL2xvY2FsL3B5dGhvbjI3L2Jpbi9weXRob24KLSAgICAgICAgICAgIC0tdHgg
c3NoPW1lbWVkb3VnaEBob3N0Mi8vY2hkaXI9L3RtcC90ZXN0ZW52NC8vcHl0aG9uPS90bXAvZW52
Mi9iaW4vcHl0aG9uCi0gICAgICAgICAgICAtLXJzeW5jZGlyIG15cHJvaiAtLXJzeW5jZGlyIHRl
c3RzIC0tcnN5bmMgZXhhbXBsZXMKLSAgICAgICAgICAgIHRlc3RzLwotCi1TaG93cyBhIHRlcm1p
bmFsIHJlcG9ydDo6Ci0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tIGNvdmVyYWdlIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIGxpbnV4MiwgcHl0aG9uIDIuNi41
LWZpbmFsLTAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXRmb3JtIGxpbnV4Miwg
cHl0aG9uIDIuNy4wLWZpbmFsLTAKLSAgICBOYW1lICAgICAgICAgICAgICAgICBTdG10cyAgIE1p
c3MgIENvdmVyCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
ICAgIG15cHJvai9fX2luaXRfXyAgICAgICAgICAyICAgICAgMCAgIDEwMCUKLSAgICBteXByb2ov
bXlwcm9qICAgICAgICAgIDI1NyAgICAgMTMgICAgOTQlCi0gICAgbXlwcm9qL2ZlYXR1cmU0Mjg2
ICAgICAgOTQgICAgICA3ICAgIDkyJQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KLSAgICBUT1RBTCAgICAgICAgICAgICAgICAgIDM1MyAgICAgMjAgICAgOTQl
Ci0KLQotUmVwb3J0aW5nCi0tLS0tLS0tLS0KLQotSXQgaXMgcG9zc2libGUgdG8gZ2VuZXJhdGUg
YW55IGNvbWJpbmF0aW9uIG9mIHRoZSByZXBvcnRzIGZvciBhIHNpbmdsZSB0ZXN0IHJ1bi4KLQot
VGhlIGF2YWlsYWJsZSByZXBvcnRzIGFyZSB0ZXJtaW5hbCAod2l0aCBvciB3aXRob3V0IG1pc3Np
bmcgbGluZSBudW1iZXJzIHNob3duKSwgSFRNTCwgWE1MIGFuZAotYW5ub3RhdGVkIHNvdXJjZSBj
b2RlLgotCi1UaGUgdGVybWluYWwgcmVwb3J0IHdpdGhvdXQgbGluZSBudW1iZXJzIChkZWZhdWx0
KTo6Ci0KLSAgICBweXRlc3QgLS1jb3YtcmVwb3J0IHRlcm0gLS1jb3YgbXlwcm9qIHRlc3RzLwot
Ci0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gY292ZXJhZ2U6IHBsYXRmb3JtIGxpbnV4MiwgcHl0
aG9uIDIuNi40LWZpbmFsLTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgTmFtZSAgICAgICAg
ICAgICAgICAgU3RtdHMgICBNaXNzICBDb3ZlcgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICBteXByb2ovX19pbml0X18gICAgICAgICAgMiAgICAgIDAg
ICAxMDAlCi0gICAgbXlwcm9qL215cHJvaiAgICAgICAgICAyNTcgICAgIDEzICAgIDk0JQotICAg
IG15cHJvai9mZWF0dXJlNDI4NiAgICAgIDk0ICAgICAgNyAgICA5MiUKLSAgICAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAgVE9UQUwgICAgICAgICAgICAgICAg
ICAzNTMgICAgIDIwICAgIDk0JQotCi0KLVRoZSB0ZXJtaW5hbCByZXBvcnQgd2l0aCBsaW5lIG51
bWJlcnM6OgotCi0gICAgcHl0ZXN0IC0tY292LXJlcG9ydCB0ZXJtLW1pc3NpbmcgLS1jb3YgbXlw
cm9qIHRlc3RzLwotCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0gY292ZXJhZ2U6IHBsYXRmb3Jt
IGxpbnV4MiwgcHl0aG9uIDIuNi40LWZpbmFsLTAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gICAg
TmFtZSAgICAgICAgICAgICAgICAgU3RtdHMgICBNaXNzICBDb3ZlciAgIE1pc3NpbmcKLSAgICAt
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIG15
cHJvai9fX2luaXRfXyAgICAgICAgICAyICAgICAgMCAgIDEwMCUKLSAgICBteXByb2ovbXlwcm9q
ICAgICAgICAgIDI1NyAgICAgMTMgICAgOTQlICAgMjQtMjYsIDk5LCAxNDksIDIzMy0yMzYsIDI5
Ny0yOTgsIDM2OS0zNzAKLSAgICBteXByb2ovZmVhdHVyZTQyODYgICAgICA5NCAgICAgIDcgICAg
OTIlICAgMTgzLTE4OCwgMTk3Ci0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLSAgICBUT1RBTCAgICAgICAgICAgICAgICAgIDM1MyAgICAgMjAg
ICAgOTQlCi0KLQotVGhlIHJlbWFpbmluZyB0aHJlZSByZXBvcnRzIG91dHB1dCB0byBmaWxlcyB3
aXRob3V0IHNob3dpbmcgYW55dGhpbmcgb24gdGhlIHRlcm1pbmFsICh1c2VmdWwgZm9yCi13aGVu
IHRoZSBvdXRwdXQgaXMgZ29pbmcgdG8gYSBjb250aW51b3VzIGludGVncmF0aW9uIHNlcnZlcik6
OgotCi0gICAgcHl0ZXN0IC0tY292LXJlcG9ydCBodG1sIC0tY292LXJlcG9ydCB4bWwgLS1jb3Yt
cmVwb3J0IGFubm90YXRlIC0tY292IG15cHJvaiB0ZXN0cy8KLQotCi1Db3ZlcmFnZSBEYXRhIEZp
bGUKLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1UaGUgZGF0YSBmaWxlIGlzIGVyYXNlZCBhdCB0aGUg
YmVnaW5uaW5nIG9mIHRlc3RpbmcgdG8gZW5zdXJlIGNsZWFuIGRhdGEgZm9yIGVhY2ggdGVzdCBy
dW4uCi0KLVRoZSBkYXRhIGZpbGUgaXMgbGVmdCBhdCB0aGUgZW5kIG9mIHRlc3Rpbmcgc28gdGhh
dCBpdCBpcyBwb3NzaWJsZSB0byB1c2Ugbm9ybWFsIGNvdmVyYWdlIHRvb2xzIHRvCi1leGFtaW5l
IGl0LgotCi0KLUxpbWl0YXRpb25zCi0tLS0tLS0tLS0tLQotCi1Gb3IgZGlzdHJpYnV0ZWQgdGVz
dGluZyB0aGUgc2xhdmVzIG11c3QgaGF2ZSB0aGUgcHl0ZXN0LWNvdiBwYWNrYWdlIGluc3RhbGxl
ZC4gIFRoaXMgaXMgbmVlZGVkIHNpbmNlCi10aGUgcGx1Z2luIG11c3QgYmUgcmVnaXN0ZXJlZCB0
aHJvdWdoIHNldHVwdG9vbHMgLyBkaXN0cmlidXRlIGZvciBweXRlc3QgdG8gc3RhcnQgdGhlIHBs
dWdpbiBvbiB0aGUKLXNsYXZlLgotCi1Gb3Igc3VicHJvY2VzcyBtZWFzdXJlbWVudCBlbnZpcm9u
bWVudCB2YXJpYWJsZXMgbXVzdCBtYWtlIGl0IGZyb20gdGhlIG1haW4gcHJvY2VzcyB0byB0aGUK
LXN1YnByb2Nlc3MuICBUaGUgcHl0aG9uIHVzZWQgYnkgdGhlIHN1YnByb2Nlc3MgbXVzdCBoYXZl
IHB5dGVzdC1jb3YgaW5zdGFsbGVkLiAgVGhlIHN1YnByb2Nlc3MgbXVzdAotZG8gbm9ybWFsIHNp
dGUgaW5pdGlhbGl6YXRpb24gc28gdGhhdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNhbiBi
ZSBkZXRlY3RlZCBhbmQgY292ZXJhZ2UKLXN0YXJ0ZWQuCi0KLQotQWNrbm93bGVkZ21lbnRzCi0t
LS0tLS0tLS0tLS0tLS0tCi0KLUhvbGdlciBLcmVrZWwgZm9yIHB5dGVzdCB3aXRoIGl0cyBkaXN0
cmlidXRlZCB0ZXN0aW5nIHN1cHBvcnQuCi0KLU5lZCBCYXRjaGVsZGVyIGZvciBjb3ZlcmFnZSBh
bmQgaXRzIGFiaWxpdHkgdG8gY29tYmluZSB0aGUgY292ZXJhZ2UgcmVzdWx0cyBvZiBwYXJhbGxl
bCBydW5zLgotCi1XaGlsc3QgdGhpcyBwbHVnaW4gaGFzIGJlZW4gYnVpbHQgZnJlc2ggZnJvbSB0
aGUgZ3JvdW5kIHVwIHRvIHN1cHBvcnQgZGlzdHJpYnV0ZWQgdGVzdGluZyBpdCBoYXMKLWJlZW4g
aW5mbHVlbmNlZCBieSB0aGUgd29yayBkb25lIG9uIHB5dGVzdC1jb3ZlcmFnZSAoUm9zcyBMYXds
ZXksIEphbWVzIE1pbGxzLCBIb2xnZXIgS3Jla2VsKSBhbmQKLW5vc2UtY292ZXIgKEphc29uIFBl
bGxlcmluKSB3aGljaCBhcmUgb3RoZXIgY292ZXJhZ2UgcGx1Z2lucyBmb3IgcHl0ZXN0IGFuZCBu
b3NlIHJlc3BlY3RpdmVseS4KLQotTm8gZG91YnQgb3RoZXJzIGhhdmUgY29udHJpYnV0ZWQgdG8g
dGhlc2UgdG9vbHMgYXMgd2VsbC4KLQotY29tbWFuZCBsaW5lIG9wdGlvbnMKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi0KLQotYGAtLWNvdj1wYXRoYGAKLSAgICBtZWFzdXJlIGNvdmVyYWdlIGZvciBm
aWxlc3lzdGVtIHBhdGggKG11bHRpLWFsbG93ZWQpCi1gYC0tY292LXJlcG9ydD10eXBlYGAKLSAg
ICB0eXBlIG9mIHJlcG9ydCB0byBnZW5lcmF0ZTogdGVybSwgdGVybS1taXNzaW5nLCBhbm5vdGF0
ZSwgaHRtbCwgeG1sIChtdWx0aS1hbGxvd2VkKQotYGAtLWNvdi1jb25maWc9cGF0aGBgCi0gICAg
Y29uZmlnIGZpbGUgZm9yIGNvdmVyYWdlLCBkZWZhdWx0OiAuY292ZXJhZ2VyYwotCi0uLiBpbmNs
dWRlOjogbGlua3MudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVn
aW4vY292ZXJhZ2UucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2NvdmVyYWdl
LnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzExMzlkMDA4YmEwMjBhN2Y3YjY5
NmEyM2M4NDJjM2Y1MzNkZGM1Mi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vY292ZXJhZ2UucnN0Cisr
KyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotCi1Xcml0ZSBhbmQgcmVwb3J0IGNvdmVyYWdl
IGRhdGEgd2l0aCB0aGUgJ2NvdmVyYWdlJyBwYWNrYWdlLgotPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotCi0uLiBjb250ZW50czo6
Ci0gIDpsb2NhbDoKLQotTm90ZTogT3JpZ2luYWwgY29kZSBieSBSb3NzIExhd2xleS4gCi0KLUlu
c3RhbGwKLS0tLS0tLS0tLS0tLS0tCi0KLVVzZSBwaXAgdG8gKHVuKWluc3RhbGw6OgotCi0gICAg
cGlwIGluc3RhbGwgcHl0ZXN0LWNvdmVyYWdlIAotICAgIHBpcCB1bmluc3RhbGwgcHl0ZXN0LWNv
dmVyYWdlIAotCi1vciBhbHRlcm5hdGl2ZWx5IHVzZSBlYXN5X2luc3RhbGwgdG8gaW5zdGFsbDo6
Ci0KLSAgICBlYXN5X2luc3RhbGwgcHl0ZXN0LWNvdmVyYWdlIAotCi0KLVVzYWdlIAotLS0tLS0t
LS0tLS0tLQotCi1UbyBnZXQgZnVsbCB0ZXN0IGNvdmVyYWdlIHJlcG9ydHMgZm9yIGEgcGFydGlj
dWxhciBwYWNrYWdlIHR5cGU6OgotCi0gICAgcHl0ZXN0IC0tY292ZXItcmVwb3J0PXJlcG9ydAot
Ci1jb21tYW5kIGxpbmUgb3B0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotCi1gYC0tY292
ZXI9Q09WRVJQQUNLQUdFU2BgCi0gICAgKG11bHRpIGFsbG93ZWQpIG9ubHkgaW5jbHVkZSBpbmZv
IGZyb20gc3BlY2lmaWVkIHBhY2thZ2UuCi1gYC0tY292ZXItcmVwb3J0PVJFUE9SVF9UWVBFYGAK
LSAgICBodG1sOiBEaXJlY3RvcnkgZm9yIGh0bWwgb3V0cHV0LgotICAgICAgICAgICAgICAgICAg
ICByZXBvcnQ6IE91dHB1dCBhIHRleHQgcmVwb3J0LgotICAgICAgICAgICAgICAgICAgICBhbm5v
dGF0ZTogQW5ub3RhdGUgeW91ciBzb3VyY2UgY29kZSBmb3Igd2hpY2ggbGluZXMgd2VyZSBleGVj
dXRlZCBhbmQgd2hpY2ggd2VyZSBub3QuCi0gICAgICAgICAgICAgICAgICAgIHhtbDogT3V0cHV0
IGFuIHhtbCByZXBvcnQgY29tcGF0aWJsZSB3aXRoIHRoZSBjb2JlcnR1cmEgcGx1Z2luIGZvciBo
dWRzb24uCi1gYC0tY292ZXItZGlyZWN0b3J5PURJUkVDVE9SWWBgCi0gICAgRGlyZWN0b3J5IGZv
ciB0aGUgcmVwb3J0cyAoaHRtbCAvIGFubm90YXRlIHJlc3VsdHMpIGRlZmF1bHRzIHRvIC4vY292
ZXJhZ2UKLWBgLS1jb3Zlci14bWwtZmlsZT1YTUxfRklMRWBgCi0gICAgRmlsZSBmb3IgdGhlIHht
bCByZXBvcnQgZGVmYXVsdHMgdG8gLi9jb3ZlcmFnZS54bWwKLWBgLS1jb3Zlci1zaG93LW1pc3Np
bmdgYAotICAgIFNob3cgbWlzc2luZyBmaWxlcwotYGAtLWNvdmVyLWlnbm9yZS1lcnJvcnM9SUdO
T1JFX0VSUk9SU2BgCi0gICAgSWdub3JlIGVycm9ycyBvZiBmaW5kaW5nIHNvdXJjZSBmaWxlcyBm
b3IgY29kZS4KLQotLi4gaW5jbHVkZTo6IGxpbmtzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2RqYW5nby5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVz
dC9wbHVnaW4vZGphbmdvLnJzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDYxNDk3
YjM4NWVkZTU4NDlmYzRiZTI2YzM5ZTY1OGVjNzFiMTM5ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4v
ZGphbmdvLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcHl0ZXN0X2RqYW5nbyBw
bHVnaW4gKEVYVEVSTkFMKQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0KLXB5dGVzdF9kamFuZ28gaXMgYSBwbHVnaW4gZm9yIGBgcHl0ZXN0YGAgdGhhdCBwcm92
aWRlcyBhIHNldCBvZiB1c2VmdWwgdG9vbHMgZm9yIHRlc3RpbmcgRGphbmdvIGFwcGxpY2F0aW9u
cywgY2hlY2tvdXQgQmVuIEZpcnNobWFuJ3MgYHB5dGVzdF9kamFuZ28gZ2l0aHViIHBhZ2VgXy4K
LQotLi4gX2BweXRlc3RfZGphbmdvIGdpdGh1YiBwYWdlYDogaHR0cDovL2dpdGh1Yi5jb20vYmZp
cnNoL3B5dGVzdF9kamFuZ28vdHJlZS9tYXN0ZXIKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL3Rlc3QvcGx1Z2luL2ZpZ2xlYWYucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3Qv
cGx1Z2luL2ZpZ2xlYWYucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzE2MDNh
ZGU5ZmMzZGYxN2I4MjIxODJkOGYzNTc5YjJiNmM4Nzg3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9m
aWdsZWFmLnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLQotcmVwb3J0IHRlc3Qg
Y292ZXJhZ2UgdXNpbmcgdGhlICdmaWdsZWFmJyBwYWNrYWdlLgotPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxv
Y2FsOgotCi1JbnN0YWxsCi0tLS0tLS0tLS0tLS0tLS0KLQotVG8gaW5zdGFsbCB0aGUgcGx1Z2lu
IGlzc3VlOjoKLQotICAgIGVhc3lfaW5zdGFsbCBweXRlc3QtZmlnbGVhZiAgIyBvcgotICAgIHBp
cCBpbnN0YWxsIHB5dGVzdC1maWdsZWFmICAgCi0KLWFuZCBpZiB5b3UgYXJlIHVzaW5nIHBpcCB5
b3UgY2FuIGFsc28gdW5pbnN0YWxsOjoKLQotICAgIHBpcCB1bmluc3RhbGwgcHl0ZXN0LWZpZ2xl
YWYKLQotCi1Vc2FnZQotLS0tLS0tLS0tLS0tLS0tCi0KLUFmdGVyIGluc3RhbGxhdGlvbiB5b3Ug
Y2FuIHNpbXBseSB0eXBlOjoKLQotICAgIHB5dGVzdCAtLWZpZ2xlYWYgWy4uLl0KLQotdG8gZW5h
YmxlIGZpZ2xlYWYgY292ZXJhZ2UgaW4geW91ciB0ZXN0IHJ1bi4gIEEgZGVmYXVsdCAiLmZpZ2xl
YWYiIGRhdGEgZmlsZQotYW5kICJodG1sIiBkaXJlY3Rvcnkgd2lsbCBiZSBjcmVhdGVkLiAgWW91
IGNhbiB1c2UgY29tbWFuZCBsaW5lIG9wdGlvbnMKLXRvIGNvbnRyb2wgd2hlcmUgZGF0YSBhbmQg
aHRtbCBmaWxlcyBhcmUgY3JlYXRlZC4KLQotY29tbWFuZCBsaW5lIG9wdGlvbnMKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi0KLQotYGAtLWZpZ2xlYWZgYAotICAgIHRyYWNlIHB5dGhvbiBjb3ZlcmFn
ZSB3aXRoIGZpZ2xlYWYgYW5kIHdyaXRlIEhUTUwgZm9yIGZpbGVzIGJlbG93IHRoZSBjdXJyZW50
IHdvcmtpbmcgZGlyCi1gYC0tZmlnLWRhdGE9ZGlyYGAKLSAgICBzZXQgdHJhY2luZyBmaWxlLCBk
ZWZhdWx0OiAiLmZpZ2xlYWYiLgotYGAtLWZpZy1odG1sPWRpcmBgCi0gICAgc2V0IGh0bWwgcmVw
b3J0aW5nIGRpciwgZGVmYXVsdCAiaHRtbCIuCi0KLS4uIGluY2x1ZGU6OiBsaW5rcy50eHQKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9oZWxwY29uZmlnLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9oZWxwY29uZmlnLnJzdApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMzI2Yjc1YzQ1NTJlMTQyYWE5ZGZhNTViYWYxNjY3MDQ2ZDcx
MTM2MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vaGVscGNvbmZpZy5yc3QKKysrIC9kZXYvbnVsbApA
QCAtMSwzNiArMCwwIEBACi0KLXByb3ZpZGUgdmVyc2lvbiBpbmZvLCBjb25mdGVzdC9lbnZpcm9u
bWVudCBjb25maWcgbmFtZXMuCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxvY2FsOgotCi0KLQot
Y29tbWFuZCBsaW5lIG9wdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotYGAtLXZlcnNp
b25gYAotICAgIGRpc3BsYXkgcHkgbGliIHZlcnNpb24gYW5kIGltcG9ydCBpbmZvcm1hdGlvbi4K
LWBgLXAgbmFtZWBgCi0gICAgZWFybHktbG9hZCBnaXZlbiBwbHVnaW4gKG11bHRpLWFsbG93ZWQp
LgotYGAtLXRyYWNlLWNvbmZpZ2BgCi0gICAgdHJhY2UgY29uc2lkZXJhdGlvbnMgb2YgY29uZnRl
c3QucHkgZmlsZXMuCi1gYC0tZGVidWdgYAotICAgIGdlbmVyYXRlIGFuZCBzaG93IGludGVybmFs
IGRlYnVnZ2luZyBpbmZvcm1hdGlvbi4KLWBgLS1oZWxwLWNvbmZpZ2BgCi0gICAgc2hvdyBhdmFp
bGFibGUgY29uZnRlc3QucHkgYW5kIEVOVi12YXJpYWJsZSBuYW1lcy4KLQotU3RhcnQgaW1wcm92
aW5nIHRoaXMgcGx1Z2luIGluIDMwIHNlY29uZHMKLT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0KLQotMS4gRG93bmxvYWQgYHB5dGVzdF9oZWxwY29uZmlnLnB5YF8g
cGx1Z2luIHNvdXJjZSBjb2RlCi0yLiBwdXQgaXQgc29tZXdoZXJlIGFzIGBgcHl0ZXN0X2hlbHBj
b25maWcucHlgYCBpbnRvIHlvdXIgaW1wb3J0IHBhdGgKLTMuIGEgc3Vic2VxdWVudCBgYHB5dGVz
dGBgIHJ1biB3aWxsIHVzZSB5b3VyIGxvY2FsIHZlcnNpb24KLQotQ2hlY2tvdXQgY3VzdG9taXpl
Xywgb3RoZXIgcGx1Z2luc18gb3IgYGdldCBpbiBjb250YWN0YF8uCi0KLS4uIGluY2x1ZGU6OiBs
aW5rcy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9pbmRl
eC5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vaW5kZXgucnN0CmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NTNhNGRjZTY4MWM4ZjZiYmVjMWY3MTc1OWUxMmJlOTU5
MDE2ZTJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9pbmRleC5yc3QKKysrIC9kZXYvbnVsbApAQCAt
MSw2OCArMCwwIEBACi0KLWFkdmFuY2VkIHB5dGhvbiB0ZXN0aW5nCi09PT09PT09PT09PT09PT09
PT09PT09PQotCi1za2lwcGluZ18gYWR2YW5jZWQgc2tpcHBpbmcgZm9yIHB5dGhvbiB0ZXN0IGZ1
bmN0aW9ucywgY2xhc3NlcyBvciBtb2R1bGVzLgotCi1tYXJrXyBnZW5lcmljIG1lY2hhbmlzbSBm
b3IgbWFya2luZyBweXRob24gZnVuY3Rpb25zLgotCi1wZGJfIGludGVyYWN0aXZlIGRlYnVnZ2lu
ZyB3aXRoIHRoZSBQeXRob24gRGVidWdnZXIuCi0KLWZpZ2xlYWZfIChleHRlcm5hbCkgcmVwb3J0
IHRlc3QgY292ZXJhZ2UgdXNpbmcgdGhlICdmaWdsZWFmJyBwYWNrYWdlLgotCi1tb25rZXlwYXRj
aF8gc2FmZWx5IHBhdGNoIG9iamVjdCBhdHRyaWJ1dGVzLCBkaWN0cyBhbmQgZW52aXJvbm1lbnQg
dmFyaWFibGVzLgotCi1jb3ZlcmFnZV8gKGV4dGVybmFsKSBXcml0ZSBhbmQgcmVwb3J0IGNvdmVy
YWdlIGRhdGEgd2l0aCB0aGUgJ2NvdmVyYWdlJyBwYWNrYWdlLgotCi1jb3ZfIChleHRlcm5hbCkg
cHJvZHVjZSBjb2RlIGNvdmVyYWdlIHJlcG9ydHMgdXNpbmcgdGhlICdjb3ZlcmFnZScgcGFja2Fn
ZSwgaW5jbHVkaW5nIHN1cHBvcnQgZm9yIGRpc3RyaWJ1dGVkIHRlc3RpbmcuCi0KLWNhcHR1cmVf
IGNvbmZpZ3VyYWJsZSBwZXItdGVzdCBzdGRvdXQvc3RkZXJyIGNhcHR1cmluZyBtZWNoYW5pc21z
LgotCi1jYXB0dXJlbG9nXyAoZXh0ZXJuYWwpIGNhcHR1cmUgb3V0cHV0IG9mIGxvZ2dpbmcgbW9k
dWxlLgotCi1yZWN3YXJuXyBoZWxwZXJzIGZvciBhc3NlcnRpbmcgZGVwcmVjYXRpb24gYW5kIG90
aGVyIHdhcm5pbmdzLgotCi10bXBkaXJfIHByb3ZpZGUgdGVtcG9yYXJ5IGRpcmVjdG9yaWVzIHRv
IHRlc3QgZnVuY3Rpb25zLgotCi0KLWRpc3RyaWJ1dGVkIHRlc3RpbmcsIENJIGFuZCBkZXBsb3lt
ZW50Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi14ZGlzdF8gKGV4
dGVybmFsKSBsb29wIG9uIGZhaWxpbmcgdGVzdHMsIGRpc3RyaWJ1dGUgdGVzdCBydW5zIHRvIENQ
VXMgYW5kIGhvc3RzLgotCi1wYXN0ZWJpbl8gc3VibWl0IGZhaWx1cmUgb3IgdGVzdCBzZXNzaW9u
IGluZm9ybWF0aW9uIHRvIGEgcGFzdGViaW4gc2VydmljZS4KLQotanVuaXR4bWxfIGxvZ2dpbmcg
b2YgdGVzdCByZXN1bHRzIGluIEpVbml0LVhNTCBmb3JtYXQsIGZvciB1c2Ugd2l0aCBIdWRzb24K
LQotcmVzdWx0bG9nXyBub24teG1sIG1hY2hpbmUtcmVhZGFibGUgbG9nZ2luZyBvZiB0ZXN0IHJl
c3VsdHMuCi0KLWdlbnNjcmlwdF8gZ2VuZXJhdGUgc3RhbmRhbG9uZSB0ZXN0IHNjcmlwdCB0byBi
ZSBkaXN0cmlidXRlZCBhbG9uZyB3aXRoIGFuIGFwcGxpY2F0aW9uLgotCi0KLXRlc3RpbmcgZG9t
YWlucyBhbmQgY29udmVudGlvbnMgY29kZWNoZWNrZXJzCi09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotCi1vZWpza2l0XyAoZXh0ZXJuYWwpIHJ1biBqYXZhc2Ny
aXB0IHRlc3RzIGluIHJlYWwgbGlmZSBicm93c2VycwotCi1kamFuZ29fIChleHRlcm5hbCkgZm9y
IHRlc3RpbmcgZGphbmdvIGFwcGxpY2F0aW9ucwotCi11bml0dGVzdF8gYXV0b21hdGljYWxseSBk
aXNjb3ZlciBhbmQgcnVuIHRyYWRpdGlvbmFsICJ1bml0dGVzdC5weSIgc3R5bGUgdGVzdHMuCi0K
LW5vc2VfIG5vc2UtY29tcGF0aWJpbGl0eSBwbHVnaW46IGFsbG93IHRvIHJ1biBub3NlIHRlc3Qg
c3VpdGVzIG5hdGl2ZWx5LgotCi1kb2N0ZXN0XyBjb2xsZWN0IGFuZCBleGVjdXRlIGRvY3Rlc3Rz
IGZyb20gbW9kdWxlcyBhbmQgdGVzdCBmaWxlcy4KLQotcmVzdGRvY18gcGVyZm9ybSBSZVNUIHN5
bnRheCwgbG9jYWwgYW5kIHJlbW90ZSByZWZlcmVuY2UgdGVzdHMgb24gLnJzdC8udHh0IGZpbGVz
LgotCi0KLWludGVybmFsLCBkZWJ1Z2dpbmcsIGhlbHAgZnVuY3Rpb25hbGl0eQotPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLWhlbHBjb25maWdfIHByb3ZpZGUgdmVy
c2lvbiBpbmZvLCBjb25mdGVzdC9lbnZpcm9ubWVudCBjb25maWcgbmFtZXMuCi0KLXRlcm1pbmFs
XyBJbXBsZW1lbnRzIHRlcm1pbmFsIHJlcG9ydGluZyBvZiB0aGUgZnVsbCB0ZXN0aW5nIHByb2Nl
c3MuCi0KLWhvb2tsb2dfIGxvZyBpbnZvY2F0aW9ucyBvZiBleHRlbnNpb24gaG9va3MgdG8gYSBm
aWxlLgotCi0KLS4uIGluY2x1ZGU6OiBsaW5rcy50eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L2RvYy9lbi90ZXN0L3BsdWdpbi9saW5rcy5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9w
bHVnaW4vbGlua3MucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGVjMmI0ODQ4
YTY5ZTVlYjgwNTY4NTg5Y2MzZjk5ZTJkZGQyZTM0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9saW5r
cy5yc3QKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi0uLiBfYGhlbHBjb25maWdgOiBo
ZWxwY29uZmlnLmh0bWwKLS4uIF9gcHl0ZXN0X3JlY3dhcm4ucHlgOiBodHRwOi8vYml0YnVja2V0
Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfcmVjd2Fybi5w
eQotLi4gX2B1bml0dGVzdGA6IHVuaXR0ZXN0Lmh0bWwKLS4uIF9gcHl0ZXN0X21vbmtleXBhdGNo
LnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19w
bHVnaW4vcHl0ZXN0X21vbmtleXBhdGNoLnB5Ci0uLiBfYHBhc3RlYmluYDogcGFzdGViaW4uaHRt
bAotLi4gX2Bza2lwcGluZ2A6IHNraXBwaW5nLmh0bWwKLS4uIF9gcGx1Z2luc2A6IGluZGV4Lmh0
bWwKLS4uIF9gbWFya2A6IG1hcmsuaHRtbAotLi4gX2B0bXBkaXJgOiB0bXBkaXIuaHRtbAotLi4g
X2BweXRlc3RfZG9jdGVzdC5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5r
L3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9kb2N0ZXN0LnB5Ci0uLiBfYGNhcHR1cmVgOiBj
YXB0dXJlLmh0bWwKLS4uIF9gcHl0ZXN0X25vc2UucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9o
cGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3Rfbm9zZS5weQotLi4gX2Bw
eXRlc3RfcmVzdGRvYy5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jh
dy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9yZXN0ZG9jLnB5Ci0uLiBfYHJlc3Rkb2NgOiByZXN0
ZG9jLmh0bWwKLS4uIF9geGRpc3RgOiB4ZGlzdC5odG1sCi0uLiBfYHB5dGVzdF9wYXN0ZWJpbi5w
eWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1
Z2luL3B5dGVzdF9wYXN0ZWJpbi5weQotLi4gX2BweXRlc3RfdG1wZGlyLnB5YDogaHR0cDovL2Jp
dGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X3Rt
cGRpci5weQotLi4gX2B0ZXJtaW5hbGA6IHRlcm1pbmFsLmh0bWwKLS4uIF9gcHl0ZXN0X2hvb2ts
b2cucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkv
X3BsdWdpbi9weXRlc3RfaG9va2xvZy5weQotLi4gX2BjYXB0dXJlbG9nYDogY2FwdHVyZWxvZy5o
dG1sCi0uLiBfYGp1bml0eG1sYDoganVuaXR4bWwuaHRtbAotLi4gX2BweXRlc3Rfc2tpcHBpbmcu
cHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3Bs
dWdpbi9weXRlc3Rfc2tpcHBpbmcucHkKLS4uIF9gY2hlY2tvdXQgdGhlIHB5dGVzdCBkZXZlbG9w
bWVudCB2ZXJzaW9uYDogLi4vLi4vaW5zdGFsbC5odG1sI2NoZWNrb3V0Ci0uLiBfYHB5dGVzdF9o
ZWxwY29uZmlnLnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEu
My40L3B5L19wbHVnaW4vcHl0ZXN0X2hlbHBjb25maWcucHkKLS4uIF9gb2Vqc2tpdGA6IG9lanNr
aXQuaHRtbAotLi4gX2Bkb2N0ZXN0YDogZG9jdGVzdC5odG1sCi0uLiBfYHB5dGVzdF9tYXJrLnB5
YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVn
aW4vcHl0ZXN0X21hcmsucHkKLS4uIF9gZ2V0IGluIGNvbnRhY3RgOiAuLi8uLi9jb250YWN0Lmh0
bWwKLS4uIF9gcHl0ZXN0X2NhcHR1cmUucHlgOiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9w
eS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdpbi9weXRlc3RfY2FwdHVyZS5weQotLi4gX2BmaWds
ZWFmYDogZmlnbGVhZi5odG1sCi0uLiBfYGN1c3RvbWl6ZWA6IC4uL2N1c3RvbWl6ZS5odG1sCi0u
LiBfYGhvb2tsb2dgOiBob29rbG9nLmh0bWwKLS4uIF9gcHl0ZXN0X3Rlcm1pbmFsLnB5YDogaHR0
cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3LzEuMy40L3B5L19wbHVnaW4vcHl0
ZXN0X3Rlcm1pbmFsLnB5Ci0uLiBfYHJlY3dhcm5gOiByZWN3YXJuLmh0bWwKLS4uIF9gcHl0ZXN0
X3BkYi5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQyL3B5LXRydW5rL3Jhdy8xLjMuNC9w
eS9fcGx1Z2luL3B5dGVzdF9wZGIucHkKLS4uIF9gbW9ua2V5cGF0Y2hgOiBtb25rZXlwYXRjaC5o
dG1sCi0uLiBfYGNvdmVyYWdlYDogY292ZXJhZ2UuaHRtbAotLi4gX2ByZXN1bHRsb2dgOiByZXN1
bHRsb2cuaHRtbAotLi4gX2Bjb3ZgOiBjb3YuaHRtbAotLi4gX2BweXRlc3RfanVuaXR4bWwucHlg
OiBodHRwOi8vYml0YnVja2V0Lm9yZy9ocGs0Mi9weS10cnVuay9yYXcvMS4zLjQvcHkvX3BsdWdp
bi9weXRlc3RfanVuaXR4bWwucHkKLS4uIF9gZGphbmdvYDogZGphbmdvLmh0bWwKLS4uIF9gcHl0
ZXN0X3VuaXR0ZXN0LnB5YDogaHR0cDovL2JpdGJ1Y2tldC5vcmcvaHBrNDIvcHktdHJ1bmsvcmF3
LzEuMy40L3B5L19wbHVnaW4vcHl0ZXN0X3VuaXR0ZXN0LnB5Ci0uLiBfYG5vc2VgOiBub3NlLmh0
bWwKLS4uIF9gcHl0ZXN0X3Jlc3VsdGxvZy5weWA6IGh0dHA6Ly9iaXRidWNrZXQub3JnL2hwazQy
L3B5LXRydW5rL3Jhdy8xLjMuNC9weS9fcGx1Z2luL3B5dGVzdF9yZXN1bHRsb2cucHkKLS4uIF9g
cGRiYDogcGRiLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdp
bi9ub3NlLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9ub3NlLnJzdApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWVlYWU1ZmY2OTdmMDVhMjI2NTFmOTZmMGE5YmUw
Y2UyMTA0ZTU5MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vbm9zZS5yc3QKKysrIC9kZXYvbnVsbApA
QCAtMSw1NiArMCwwIEBACi0KLW5vc2UtY29tcGF0aWJpbGl0eSBwbHVnaW46IGFsbG93IHRvIHJ1
biBub3NlIHRlc3Qgc3VpdGVzIG5hdGl2ZWx5LgotPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLQotLi4gY29udGVudHM6
OgotICA6bG9jYWw6Ci0KLVRoaXMgaXMgYW4gZXhwZXJpbWVudGFsIHBsdWdpbiBmb3IgYWxsb3dp
bmcgdG8gcnVuIHRlc3RzIHdyaXR0ZW4KLWluICdub3NldGVzdHMnIHN0eWxlIHdpdGggYGBweXRl
c3RgYC4KLQotVXNhZ2UKLS0tLS0tLS0tLS0tLS0KLQotdHlwZTo6Ci0KLSAgICBweXRlc3QgICMg
aW5zdGVhZCBvZiAnbm9zZXRlc3RzJwotCi1hbmQgeW91IHNob3VsZCBiZSBhYmxlIHRvIHJ1biBu
b3NlIHN0eWxlIHRlc3RzIGFuZCBhdCB0aGUgc2FtZQotdGltZSBjYW4gbWFrZSBmdWxsIHVzZSBv
ZiBweXRlc3QncyBjYXBhYmlsaXRpZXMuCi0KLVN1cHBvcnRlZCBub3NlIElkaW9tcwotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotCi0qIHNldHVwIGFuZCB0ZWFyZG93biBhdCBtb2R1bGUvY2xhc3Mv
bWV0aG9kIGxldmVsCi0qIFNraXBUZXN0IGV4Y2VwdGlvbnMgYW5kIG1hcmtlcnMKLSogc2V0dXAv
dGVhcmRvd24gZGVjb3JhdG9ycwotKiB5aWVsZC1iYXNlZCB0ZXN0cyBhbmQgdGhlaXIgc2V0dXAK
LSogZ2VuZXJhbCB1c2FnZSBvZiBub3NlIHV0aWxpdGllcwotCi1VbnN1cHBvcnRlZCBpZGlvbXMg
LyBpc3N1ZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotLSBub3NlLXN0
eWxlIGRvY3Rlc3RzIGFyZSBub3QgY29sbGVjdGVkIGFuZCBleGVjdXRlZCBjb3JyZWN0bHksCi0g
IGFsc28gZml4dHVyZXMgZG9uJ3Qgd29yay4KLQotLSBubyBub3NlLWNvbmZpZ3VyYXRpb24gaXMg
cmVjb2duaXplZAotCi1JZiB5b3UgZmluZCBvdGhlciBpc3N1ZXMgb3IgaGF2ZSBzdWdnZXN0aW9u
cyBwbGVhc2UgcnVuOjoKLQotICAgIHB5dGVzdCAtLXBhc3RlYmluPWFsbAotCi1hbmQgc2VuZCB0
aGUgcmVzdWx0aW5nIFVSTCB0byBhIGBgcHl0ZXN0YGAgY29udGFjdCBjaGFubmVsLAotYXQgYmVz
dCB0byB0aGUgbWFpbGluZyBsaXN0LgotCi1TdGFydCBpbXByb3ZpbmcgdGhpcyBwbHVnaW4gaW4g
MzAgc2Vjb25kcwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQot
Ci0xLiBEb3dubG9hZCBgcHl0ZXN0X25vc2UucHlgXyBwbHVnaW4gc291cmNlIGNvZGUKLTIuIHB1
dCBpdCBzb21ld2hlcmUgYXMgYGBweXRlc3Rfbm9zZS5weWBgIGludG8geW91ciBpbXBvcnQgcGF0
aAotMy4gYSBzdWJzZXF1ZW50IGBgcHl0ZXN0YGAgcnVuIHdpbGwgdXNlIHlvdXIgbG9jYWwgdmVy
c2lvbgotCi1DaGVja291dCBjdXN0b21pemVfLCBvdGhlciBwbHVnaW5zXyBvciBgZ2V0IGluIGNv
bnRhY3RgXy4KLQotLi4gaW5jbHVkZTo6IGxpbmtzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3Rlc3QvcGx1Z2luL29lanNraXQucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rl
c3QvcGx1Z2luL29lanNraXQucnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0OTk1
YWExN2M3MmQ1Y2UwYjc5MTU0YTYyYzk3ZjBhMjEwZDIzYWRlLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdp
bi9vZWpza2l0LnJzdAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXB5dGVzdF9vZWpz
a2l0IHBsdWdpbiAoRVhURVJOQUwpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLQotVGhlIGBvZWpza2l0YF8gb2ZmZXJzIGEgYGBweXRlc3RgYCBwbHVnaW4gZm9y
IHJ1bm5pbmcgSmF2YXNjcmlwdCB0ZXN0cyBpbiBsaXZlIGJyb3dzZXJzLiAgIFJ1bm5pbmcgaW5z
aWRlIHRoZSBicm93c2VycyBjb21lcyB3aXRoIHNvbWUgc3BlZWQgY29zdCwgb24gdGhlIG90aGVy
IGhhbmQgaXQgbWVhbnMgZm9yIGV4YW1wbGUgdGhlIGNvZGUgaXMgdGVzdGVkIGFnYWluc3QgdGhl
IHJlYWwtd29yZCBET00gaW1wbGVtZW50YXRpb25zLgotVGhlIGFwcHJvYWNoIGVuYWJsZXMgdG8g
d3JpdGUgaW50ZWdyYXRpb24gdGVzdHMgc3VjaCB0aGF0IHRoZSBKYXZhU2NyaXB0IGNvZGUgaXMg
dGVzdGVkIGFnYWluc3Qgc2VydmVyLXNpZGUgUHl0aG9uIGNvZGUgbW9ja2VkIGFzIG5lY2Vzc2Fy
eS4gQW55IHNlcnZlci1zaWRlIGZyYW1ld29yayB0aGF0IGNhbiBhbHJlYWR5IGJlIGV4cG9zZWQg
dGhyb3VnaCBXU0dJIChvciBmb3Igd2hpY2ggYSBzdWJzZXQgb2YgV1NHSSBjYW4gYmUgd3JpdHRl
biB0byBhY2NvbW1vZGF0ZSB0aGUganNraXQgb3duIG5lZWRzKSBjYW4gcGxheSBhbG9uZy4KLQot
Rm9yIG1vcmUgaW5mbyBhbmQgZG93bmxvYWQgcGxlYXNlIHZpc2l0IHRoZSBgb2Vqc2tpdCBQeVBJ
YF8gcGFnZS4KLQotLi4gX2BvZWpza2l0YDoKLS4uIF9gb2Vqc2tpdCBQeVBJYDogaHR0cDovL3B5
cGkucHl0aG9uLm9yZy9weXBpL29lanNraXQKLQotLi4gc291cmNlIGxpbmsgJ2h0dHA6Ly9iaXRi
dWNrZXQub3JnL3BlZHJvbmlzL2pzLWluZnJhc3RydWN0dXJlL3NyYy90aXAvcHl0ZXN0X2pzdGVz
dHMucHknLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3Rlcm1p
bmFsLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi90ZXJtaW5hbC5yc3QKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwN2Q0ZjcyMTgzYTlhMjc2NzYzMzZjZDk4NGU2
Zjc1ZWZhMzBhNzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3Rlcm1pbmFsLnJzdAorKysgL2Rldi9u
dWxsCkBAIC0xLDM4ICswLDAgQEAKLQotSW1wbGVtZW50cyB0ZXJtaW5hbCByZXBvcnRpbmcgb2Yg
dGhlIGZ1bGwgdGVzdGluZyBwcm9jZXNzLgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxvY2Fs
OgotCi1UaGlzIGlzIGEgZ29vZCBzb3VyY2UgZm9yIGxvb2tpbmcgYXQgdGhlIHZhcmlvdXMgcmVw
b3J0aW5nIGhvb2tzLgotCi1jb21tYW5kIGxpbmUgb3B0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLQotCi1gYC12LCAtLXZlcmJvc2VgYAotICAgIGluY3JlYXNlIHZlcmJvc2l0eS4KLWBgLXIg
Y2hhcnNgYAotICAgIHNob3cgZXh0cmEgdGVzdCBzdW1tYXJ5IGluZm8gYXMgc3BlY2lmaWVkIGJ5
IGNoYXJzIChmKWFpbGVkLCAocylza2lwcGVkLCAoeClmYWlsZWQsIChYKXBhc3NlZC4KLWBgLWws
IC0tc2hvd2xvY2Fsc2BgCi0gICAgc2hvdyBsb2NhbHMgaW4gdHJhY2ViYWNrcyAoZGlzYWJsZWQg
YnkgZGVmYXVsdCkuCi1gYC0tdGI9c3R5bGVgYAotICAgIHRyYWNlYmFjayBwcmludCBtb2RlIChs
b25nL3Nob3J0L2xpbmUvbm8pLgotYGAtLWZ1bGwtdHJhY2VgYAotICAgIGRvbid0IGN1dCBhbnkg
dHJhY2ViYWNrcyAoZGVmYXVsdCBpcyB0byBjdXQpLgotYGAtLWZpeHR1cmVzYGAKLSAgICBzaG93
IGF2YWlsYWJsZSBmdW5jdGlvbiBhcmd1bWVudHMsIHNvcnRlZCBieSBwbHVnaW4KLQotU3RhcnQg
aW1wcm92aW5nIHRoaXMgcGx1Z2luIGluIDMwIHNlY29uZHMKLT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0KLQotMS4gRG93bmxvYWQgYHB5dGVzdF90ZXJtaW5hbC5w
eWBfIHBsdWdpbiBzb3VyY2UgY29kZQotMi4gcHV0IGl0IHNvbWV3aGVyZSBhcyBgYHB5dGVzdF90
ZXJtaW5hbC5weWBgIGludG8geW91ciBpbXBvcnQgcGF0aAotMy4gYSBzdWJzZXF1ZW50IGBgcHl0
ZXN0YGAgcnVuIHdpbGwgdXNlIHlvdXIgbG9jYWwgdmVyc2lvbgotCi1DaGVja291dCBjdXN0b21p
emVfLCBvdGhlciBwbHVnaW5zXyBvciBgZ2V0IGluIGNvbnRhY3RgXy4KLQotLi4gaW5jbHVkZTo6
IGxpbmtzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOTA2NzE3ZDRkM2Y2MmNjOTdiMTUz
MTUxNTFiMDdmODRkZDE4ZGQ0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi90ZXN0L3BsdWdpbi9jb3YucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2Nv
dmVyYWdlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9kamFuZ28ucnN0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL2ZpZ2xlYWYucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL3Rlc3QvcGx1Z2luL2hlbHBjb25maWcucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rl
c3QvcGx1Z2luL2luZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi9saW5r
cy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vbm9zZS5yc3QKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9kb2MvZW4vdGVzdC9wbHVnaW4vb2Vqc2tpdC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
dGVzdC9wbHVnaW4vdGVybWluYWwucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2lu
L3hkaXN0LnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3hk
aXN0LnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3BsdWdpbi94ZGlzdC5yc3QKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwNmQyNDBhZWUxM2M3ZGQzMTljOTMzMTNjZjNlOGVm
NGUyNjUyMTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvcGx1Z2luL3hkaXN0LnJzdAorKysgL2Rldi9udWxsCkBA
IC0xLDE3MiArMCwwIEBACi0KLWxvb3Agb24gZmFpbGluZyB0ZXN0cywgZGlzdHJpYnV0ZSB0ZXN0
IHJ1bnMgdG8gQ1BVcyBhbmQgaG9zdHMuCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0KLS4uIGNvbnRlbnRzOjoKLSAgOmxv
Y2FsOgotCi1UaGUgYHB5dGVzdC14ZGlzdGBfIHBsdWdpbiBleHRlbmRzIGBgcHl0ZXN0YGAgd2l0
aCBzb21lIHVuaXF1ZQotdGVzdCBleGVjdXRpb24gbW9kZXM6Ci0KLSogTG9vcG9uZmFpbDogcnVu
IHlvdXIgdGVzdHMgcmVwZWF0ZWRseSBpbiBhIHN1YnByb2Nlc3MuICBBZnRlciBlYWNoIHJ1bgot
ICBgYHB5dGVzdGBgIHdhaXRzIHVudGlsIGEgZmlsZSBpbiB5b3VyIHByb2plY3QgY2hhbmdlcyBh
bmQgdGhlbiByZS1ydW5zIHRoZQotICBwcmV2aW91c2x5IGZhaWxpbmcgdGVzdHMuICBUaGlzIGlz
IHJlcGVhdGVkIHVudGlsIGFsbCB0ZXN0cyBwYXNzIGFmdGVyIHdoaWNoCi0gIGFnYWluIGEgZnVs
bCBydW4gaXMgcGVyZm9ybWVkLgotCi0qIExvYWQtYmFsYW5jaW5nOiBpZiB5b3UgaGF2ZSBtdWx0
aXBsZSBDUFVzIG9yIGhvc3RzIHlvdSBjYW4gdXNlCi0gIHRob3NlIGZvciBhIGNvbWJpbmVkIHRl
c3QgcnVuLiAgVGhpcyBhbGxvd3MgdG8gc3BlZWQgdXAKLSAgZGV2ZWxvcG1lbnQgb3IgdG8gdXNl
IHNwZWNpYWwgcmVzb3VyY2VzIG9mIHJlbW90ZSBtYWNoaW5lcy4KLQotKiBNdWx0aS1QbGF0Zm9y
bSBjb3ZlcmFnZTogeW91IGNhbiBzcGVjaWZ5IGRpZmZlcmVudCBQeXRob24gaW50ZXJwcmV0ZXJz
Ci0gIG9yIGRpZmZlcmVudCBwbGF0Zm9ybXMgYW5kIHJ1biB0ZXN0cyBpbiBwYXJhbGxlbCBvbiBh
bGwgb2YgdGhlbS4KLQotQmVmb3JlIHJ1bm5pbmcgdGVzdHMgcmVtb3RlbHksIGBgcHl0ZXN0YGAg
ZWZmaWNpZW50bHkgc3luY2hyb25pemVzIHlvdXIKLXByb2dyYW0gc291cmNlIGNvZGUgdG8gdGhl
IHJlbW90ZSBwbGFjZS4gIEFsbCB0ZXN0IHJlc3VsdHMKLWFyZSByZXBvcnRlZCBiYWNrIGFuZCBk
aXNwbGF5ZWQgdG8geW91ciBsb2NhbCB0ZXN0IHNlc3Npb24uCi1Zb3UgbWF5IHNwZWNpZnkgZGlm
ZmVyZW50IFB5dGhvbiB2ZXJzaW9ucyBhbmQgaW50ZXJwcmV0ZXJzLgotCi0uLiBfYHB5dGVzdC14
ZGlzdGA6IGh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXRlc3QteGRpc3QKLQotVXNhZ2Ug
ZXhhbXBsZXMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1TcGVlZCB1cCB0ZXN0IHJ1bnMgYnkg
c2VuZGluZyB0ZXN0cyB0byBtdWx0aXBsZSBDUFVzCi0rKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotCi1UbyBzZW5kIHRlc3RzIHRvIG11
bHRpcGxlIENQVXMsIHR5cGU6OgotCi0gICAgcHl0ZXN0IC1uIE5VTQotCi1Fc3BlY2lhbGx5IGZv
ciBsb25nZXIgcnVubmluZyB0ZXN0cyBvciB0ZXN0cyByZXF1aXJpbmcKLWEgbG90IG9mIElPIHRo
aXMgY2FuIGxlYWQgdG8gY29uc2lkZXJhYmxlIHNwZWVkIHVwcy4KLQotCi1SdW5uaW5nIHRlc3Rz
IGluIGEgUHl0aG9uIHN1YnByb2Nlc3MKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrCi0KLVRvIGluc3RhbnRpYXRlIGEgcHl0aG9uMi40
IHN1YiBwcm9jZXNzIGFuZCBzZW5kIHRlc3RzIHRvIGl0LCB5b3UgbWF5IHR5cGU6OgotCi0gICAg
cHl0ZXN0IC1kIC0tdHggcG9wZW4vL3B5dGhvbj1weXRob24yLjQKLQotVGhpcyB3aWxsIHN0YXJ0
IGEgc3VicHJvY2VzcyB3aGljaCBpcyBydW4gd2l0aCB0aGUgInB5dGhvbjIuNCIKLVB5dGhvbiBp
bnRlcnByZXRlciwgZm91bmQgaW4geW91ciBzeXN0ZW0gYmluYXJ5IGxvb2t1cCBwYXRoLgotCi1J
ZiB5b3UgcHJlZml4IHRoZSAtLXR4IG9wdGlvbiB2YWx1ZSBsaWtlIHRoaXM6OgotCi0gICAgLS10
eCAzKnBvcGVuLy9weXRob249cHl0aG9uMi40Ci0KLXRoZW4gdGhyZWUgc3VicHJvY2Vzc2VzIHdv
dWxkIGJlIGNyZWF0ZWQgYW5kIHRlc3RzCi13aWxsIGJlIGxvYWQtYmFsYW5jZWQgYWNyb3NzIHRo
ZXNlIHRocmVlIHByb2Nlc3Nlcy4KLQotCi1TZW5kaW5nIHRlc3RzIHRvIHJlbW90ZSBTU0ggYWNj
b3VudHMKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrCi0KLVN1cHBvc2UgeW91IGhhdmUgYSBwYWNrYWdlIGBgbXlwa2dgYCB3aGljaCBj
b250YWlucyBzb21lCi10ZXN0cyB0aGF0IHlvdSBjYW4gc3VjY2Vzc2Z1bGx5IHJ1biBsb2NhbGx5
LiBBbmQgeW91Ci1oYXZlIGEgc3NoLXJlYWNoYWJsZSBtYWNoaW5lIGBgbXlob3N0YGAuICBUaGVu
Ci15b3UgY2FuIGFkLWhvYyBkaXN0cmlidXRlIHlvdXIgdGVzdHMgYnkgdHlwaW5nOjoKLQotICAg
IHB5dGVzdCAtZCAtLXR4IHNzaD1teWhvc3Rwb3BlbiAtLXJzeW5jZGlyIG15cGtnIG15cGtnCi0K
LVRoaXMgd2lsbCBzeW5jaHJvbml6ZSB5b3VyIGBgbXlwa2dgYCBwYWNrYWdlIGRpcmVjdG9yeQot
dG8gYSByZW1vdGUgc3NoIGFjY291bnQgYW5kIHRoZW4gbG9jYWxseSBjb2xsZWN0IHRlc3RzCi1h
bmQgc2VuZCB0aGVtIHRvIHJlbW90ZSBwbGFjZXMgZm9yIGV4ZWN1dGlvbi4KLQotWW91IGNhbiBz
cGVjaWZ5IG11bHRpcGxlIGBgLS1yc3luY2RpcmBgIGRpcmVjdG9yaWVzCi10byBiZSBzZW50IHRv
IHRoZSByZW1vdGUgc2lkZS4KLQotKipOT1RFOioqIEZvciBgYHB5dGVzdGBgIHRvIGNvbGxlY3Qg
YW5kIHNlbmQgdGVzdHMgY29ycmVjdGx5Ci15b3Ugbm90IG9ubHkgbmVlZCB0byBtYWtlIHN1cmUg
YWxsIGNvZGUgYW5kIHRlc3RzCi1kaXJlY3RvcmllcyBhcmUgcnN5bmNlZCwgYnV0IHRoYXQgYW55
IHRlc3QgKHN1YikgZGlyZWN0b3J5Ci1hbHNvIGhhcyBhbiBgYF9faW5pdF9fLnB5YGAgZmlsZSBi
ZWNhdXNlIGludGVybmFsbHkKLWBgcHl0ZXN0YGAgcmVmZXJlbmNlcyB0ZXN0cyB1c2luZyB0aGVp
ciBmdWxseSBxdWFsaWZpZWQgcHl0aG9uCi1tb2R1bGUgcGF0aC4gICoqWW91IHdpbGwgb3RoZXJ3
aXNlIGdldCBzdHJhbmdlIGVycm9ycyoqCi1kdXJpbmcgc2V0dXAgb2YgdGhlIHJlbW90ZSBzaWRl
LgotCi1TZW5kaW5nIHRlc3RzIHRvIHJlbW90ZSBTb2NrZXQgU2VydmVycwotKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotRG93bmxv
YWQgdGhlIHNpbmdsZS1tb2R1bGUgYHNvY2tldHNlcnZlci5weWBfIFB5dGhvbiBwcm9ncmFtCi1h
bmQgcnVuIGl0IGxpa2UgdGhpczo6Ci0KLSAgICBweXRob24gc29ja2V0c2VydmVyLnB5Ci0KLUl0
IHdpbGwgdGVsbCB5b3UgdGhhdCBpdCBzdGFydHMgbGlzdGVuaW5nIG9uIHRoZSBkZWZhdWx0Ci1w
b3J0LiAgWW91IGNhbiBub3cgb24geW91ciBob21lIG1hY2hpbmUgc3BlY2lmeSB0aGlzCi1uZXcg
c29ja2V0IGhvc3Qgd2l0aCBzb21ldGhpbmcgbGlrZSB0aGlzOjoKLQotICAgIHB5dGVzdCAtZCAt
LXR4IHNvY2tldD0xOTIuMTY4LjEuMTAyOjg4ODggLS1yc3luY2RpciBteXBrZyBteXBrZwotCi0K
LS4uIF9gYXRvbmNlYDoKLQotUnVubmluZyB0ZXN0cyBvbiBtYW55IHBsYXRmb3JtcyBhdCBvbmNl
Ci0rKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKwotCi1UaGUgYmFzaWMgY29tbWFuZCB0byBydW4gdGVzdHMgb24gbXVsdGlwbGUgcGxhdGZv
cm1zIGlzOjoKLQotICAgIHB5dGVzdCAtLWRpc3Q9ZWFjaCAtLXR4PXNwZWMxIC0tdHg9c3BlYzIK
LQotSWYgeW91IHNwZWNpZnkgYSB3aW5kb3dzIGhvc3QsIGFuIE9TWCBob3N0IGFuZCBhIExpbnV4
Ci1lbnZpcm9ubWVudCB0aGlzIGNvbW1hbmQgd2lsbCBzZW5kIGVhY2ggdGVzdHMgdG8gYWxsCi1w
bGF0Zm9ybXMgLSBhbmQgcmVwb3J0IGJhY2sgZmFpbHVyZXMgZnJvbSBhbGwgcGxhdGZvcm1zCi1h
dCBvbmNlLiAgIFRoZSBzcGVjaWZpY2F0aW9ucyBzdHJpbmdzIHVzZSB0aGUgYHhzcGVjIHN5bnRh
eGBfLgotCi0uLiBfYHhzcGVjIHN5bnRheGA6IGh0dHA6Ly9jb2Rlc3BlYWsubmV0L2V4ZWNuZXQv
dHJ1bmsvYmFzaWNzLmh0bWwjeHNwZWMKLQotLi4gX2Bzb2NrZXRzZXJ2ZXIucHlgOiBodHRwOi8v
Y29kZXNwZWFrLm5ldC9zdm4vcHkvZGlzdC9weS9leGVjbmV0L3NjcmlwdC9zb2NrZXRzZXJ2ZXIu
cHkKLQotLi4gX2BleGVjbmV0YDogaHR0cDovL2NvZGVzcGVhay5uZXQvZXhlY25ldAotCi1TcGVj
aWZ5aW5nIHRlc3QgZXhlYyBlbnZpcm9ubWVudHMgaW4gYSBjb25mdGVzdC5weQotKysrKysrKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLQotSW5z
dGVhZCBvZiBzcGVjaWZ5aW5nIGNvbW1hbmQgbGluZSBvcHRpb25zLCB5b3UgY2FuCi1wdXQgb3B0
aW9ucyB2YWx1ZXMgaW4gYSBgYGNvbmZ0ZXN0LnB5YGAgZmlsZSBsaWtlIHRoaXM6OgotCi0gICAg
b3B0aW9uX3R4ID0gWydzc2g9bXlob3N0Ly9weXRob249cHl0aG9uMi43JywgJ3BvcGVuLy9weXRo
b249cHl0aG9uMi43J10KLSAgICBvcHRpb25fZGlzdCA9IFRydWUKLQotQW55IGNvbW1hbmRsaW5l
IGBgLS10eGBgIHNwZWNpZmljYXRpb25zICB3aWxsIGFkZCB0byB0aGUgbGlzdCBvZgotYXZhaWxh
YmxlIGV4ZWN1dGlvbiBlbnZpcm9ubWVudHMuCi0KLVNwZWNpZnlpbmcgInJzeW5jIiBkaXJzIGlu
IGEgY29uZnRlc3QucHkKLSsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr
KysrKysrKysrKysrKysrKysrCi0KLUluIHlvdXIgYGBteXBrZy9jb25mdGVzdC5weWBgIHlvdSBt
YXkgc3BlY2lmeSBkaXJlY3RvcmllcyB0byBzeW5jaHJvbmlzZQotb3IgdG8gZXhjbHVkZTo6Ci0K
LSAgICByc3luY2RpcnMgPSBbJy4nLCAnLi4vcGx1Z2lucyddCi0gICAgcnN5bmNpZ25vcmUgPSBb
J19jYWNoZSddCi0KLVRoZXNlIGRpcmVjdG9yeSBzcGVjaWZpY2F0aW9ucyBhcmUgcmVsYXRpdmUg
dG8gdGhlIGRpcmVjdG9yeQotd2hlcmUgdGhlIGBgY29uZnRlc3QucHlgYCBpcyBmb3VuZC4KLQot
Y29tbWFuZCBsaW5lIG9wdGlvbnMKLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLQotYGAtZiwgLS1s
b29wb25mYWlsYGAKLSAgICBydW4gdGVzdHMgaW4gc3VicHJvY2Vzcywgd2FpdCBmb3IgbW9kaWZp
ZWQgZmlsZXMgYW5kIHJlLXJ1biBmYWlsaW5nIHRlc3Qgc2V0IHVudGlsIGFsbCBwYXNzLgotYGAt
biBudW1wcm9jZXNzZXNgYAotICAgIHNob3J0Y3V0IGZvciAnLS1kaXN0PWxvYWQgLS10eD1OVU0q
cG9wZW4nCi1gYC0tYm94ZWRgYAotICAgIGJveCBlYWNoIHRlc3QgcnVuIGluIGEgc2VwYXJhdGUg
cHJvY2VzcyAodW5peCkKLWBgLS1kaXN0PWRpc3Rtb2RlYGAKLSAgICBzZXQgbW9kZSBmb3IgZGlz
dHJpYnV0aW5nIHRlc3RzIHRvIGV4ZWMgZW52aXJvbm1lbnRzLgotCi0gICAgZWFjaDogc2VuZCBl
YWNoIHRlc3QgdG8gZWFjaCBhdmFpbGFibGUgZW52aXJvbm1lbnQuCi0KLSAgICBsb2FkOiBzZW5k
IGVhY2ggdGVzdCB0byBvbmUgYXZhaWxhYmxlIGVudmlyb25tZW50IHNvIGl0IGlzIHJ1biBvbmx5
IG9uY2UuCi0KLSAgICAoZGVmYXVsdCkgbm86IHJ1biB0ZXN0cyBpbnByb2Nlc3MsIGRvbid0IGRp
c3RyaWJ1dGUuCi1gYC0tdHg9eHNwZWNgYAotICAgIGFkZCBhIHRlc3QgZXhlY3V0aW9uIGVudmly
b25tZW50LiBzb21lIGV4YW1wbGVzOiAtLXR4IHBvcGVuLy9weXRob249cHl0aG9uMi43IC0tdHgg
c29ja2V0PTE5Mi4xNjguMS4xMDI6ODg4OCAtLXR4IHNzaD11c2VyQGNvZGVzcGVhay5uZXQvL2No
ZGlyPXRlc3RjYWNoZQotYGAtZGBgCi0gICAgbG9hZC1iYWxhbmNlIHRlc3RzLiAgc2hvcnRjdXQg
Zm9yICctLWRpc3Q9bG9hZCcKLWBgLS1yc3luY2Rpcj1kaXIxYGAKLSAgICBhZGQgZGlyZWN0b3J5
IGZvciByc3luY2luZyB0byByZW1vdGUgdHggbm9kZXMuCi0KLS4uIGluY2x1ZGU6OiBsaW5rcy50
eHQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3Rlc3QuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi90ZXN0L3Rlc3QuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggN2QwMGY3MThhNjc3MjRjZjBhZjkwNTQ4NGMxOGNjNmI1ZWIyNTAzYi4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVz
dC90ZXN0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi08aHRtbD4KLSAgICA8
aGVhZD4KLSAgICAgICAgPG1ldGEgaHR0cC1lcXVpdj0icmVmcmVzaCIgY29udGVudD0iIDEgOyBV
Ukw9aW5kZXguaHRtbCIgLz4KLSAgICA8L2hlYWQ+Ci0KLSAgICA8Ym9keT4KLTxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBnYUpzSG9zdCA9ICgoImh0dHBzOiIgPT0gZG9jdW1l
bnQubG9jYXRpb24ucHJvdG9jb2wpID8gImh0dHBzOi8vc3NsLiIgOiAiaHR0cDovL3d3dy4iKTsK
LWRvY3VtZW50LndyaXRlKHVuZXNjYXBlKCIlM0NzY3JpcHQgc3JjPSciICsgZ2FKc0hvc3QgKyAi
Z29vZ2xlLWFuYWx5dGljcy5jb20vZ2EuanMnIHR5cGU9J3RleHQvamF2YXNjcmlwdCclM0UlM0Mv
c2NyaXB0JTNFIikpOwotPC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+
Ci10cnkgewotdmFyIHBhZ2VUcmFja2VyID0gX2dhdC5fZ2V0VHJhY2tlcigiVUEtNzU5NzI3NC0z
Iik7Ci1wYWdlVHJhY2tlci5fdHJhY2tQYWdldmlldygpOwotfSBjYXRjaChlcnIpIHt9PC9zY3Jp
cHQ+Ci08L2JvZHk+Ci08L2h0bWw+Ci0gICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vdGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YWI5M2Y1ZjdjZmEwZTI3MGI2
Y2Q1NTJiN2ExNjlhNzM3Yjk5MmY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rl
c3QvYXR0aWMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvY29uZmlnLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4vdGVzdC9kaXN0Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdGVzdC9l
eHRlbmQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi90ZXN0L2luZGV4LnJzdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L2RvYy9lbi90ZXN0L21pc3Npb24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Rlc3QvdGVz
dC5odG1sCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC9kb2MvZW4vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU3ZjFmNTdhNDg3ZjNkMmQ3OThjZjBkNGVmYjNmNzg0MTY2ZWFmZTkuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2Vu
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvZG9jL2VuL01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Fkb3B0LnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9hc3NlcnQucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2Jh
Y2t3YXJkcy1jb21wYXRpYmlsaXR5LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9iYXNoLWNvbXBs
ZXRpb24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2J1aWx0aW4ucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2NhY2hlLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9jYXB0dXJlLnJzdAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L2RvYy9lbi9jaGFuZ2Vsb2cucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2NvbmYucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9kb2MvZW4vY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY29u
dGFjdC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY29udGVudHMucnN0Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZG9jL2VuL2NvbnRyaWJ1dGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vY3VzdG9taXplLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9kZXZlbG9wbWVudF9ndWlkZS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vZG9jdGVzdC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZXhpc3Rpbmd0ZXN0c3Vp
dGUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2ZhcS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4v
Zml4dHVyZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZnVuY2FyZ19jb21wYXJlLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9mdW5jYXJncy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vZ2V0dGlu
Zy1zdGFydGVkLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9nb29kcHJhY3RpY2VzLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi9oaXN0b3JpY2FsLW5vdGVzLnJzdAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9l
bi9pbmRleC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vbGljZW5zZS5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vbGlua3MuaW5jCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL2xvZ2dpbmcucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvZG9jL2VuL21hcmsucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL21vbmtleXBhdGNo
LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9uYW1pbmcyMC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vbm9zZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcGFyYW1ldHJpemUucnN0Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvZG9jL2VuL3BsdWdpbnMucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3Byb2plY3RzLnJz
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9weXRlc3QuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3B5
dGhvbnBhdGgucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3JlY3dhcm4ucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvZG9jL2VuL3JlZmVyZW5jZS5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vcmVxdWlyZW1lbnRz
LnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi9za2lwcGluZy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2Mv
ZW4vdGFsa3MucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3RtcGRpci5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9kb2MvZW4vdW5pdHRlc3QucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZG9jL2VuL3VzYWdlLnJzdAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L2RvYy9lbi93YXJuaW5ncy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9kb2MvZW4vd3JpdGlu
Z19wbHVnaW5zLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2RvYy9lbi94dW5pdF9zZXR1cC5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9kb2MvZW4veWllbGRmaXh0dXJlLnJzdApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
ZXh0cmEvc2V0dXAtcHkudGVzdC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L2V4dHJhL3Nl
dHVwLXB5LnRlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDVkYzhiODM2MDE3YzIwNTZmMDg5NDk2NmQ4MGJlY2FhYWVkMzFkOTQuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvc2V0dXAt
cHkudGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L2V4dHJhL3NldHVwLXB5LnRlc3Qvc2V0dXAucHkKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L2V4dHJhL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlMTVkM2ZlYjE2
MDBjZGEyYTM0OWY5MzlmY2MzNTg4ZWJmZmU2N2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvZXh0cmEvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9leHRyYS9n
ZXRfaXNzdWVzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zY3JpcHRzL3czYy1pbXBvcnQu
bG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggNjExNDYzZWNkZTQ1NGFjNDRhZjcwODk2MTliNTM5Y2I3NmRjZWE5OC4u
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVz
dC9zY3JpcHRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAot
VGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJl
cG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4K
LUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRw
czovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9v
bHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBO
T1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVy
dGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2Yg
ZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc2NyaXB0cy9jYWxsLXRveC5iYXQKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
Y3JpcHRzL2luc3RhbGwtcHlweS5iYXQKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L19jb2RlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUv
dzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYjYwY2IzNzY0
N2ZjZTIzZDEyYWQ1ODgxYTA2MzMxZDQyMjhiMWIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC9zcmMvX3B5dGVzdC9fY29kZS9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0
ZXN0L19jb2RlL19weTJ0cmFjZWJhY2sucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9fY29k
ZS9jb2RlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2NvZGUvc291cmNlLnB5CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1ZGIzYmEyZWUxOWI1OTk0NmJjYmEwZDczY2VhODAz
ZDJiZmY5NGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9uL3czYy1pbXBvcnQubG9nCisrKyAvZGV2
L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUg
aW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRl
c3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBv
biB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3Rz
L3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdl
YktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0K
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3Qv
YXNzZXJ0aW9uL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvYXNzZXJ0aW9u
L3Jld3JpdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdHJ1bmNhdGUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9hc3NlcnRpb24vdXRpbC5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY2FjaGVwcm92aWRlci5weSBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L2NhY2hlcHJvdmlkZXIucHkKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEw
MDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZmJlMTFkYTUyNzkyOWE5ZDNmOGM1NDE4MWJj
N2VjMmU3MzcxNTUzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhp
cmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy93M2MtaW1wb3J0LmxvZworKysgL2Rl
di9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJl
IGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0
ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qg
b24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0
cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBX
ZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgot
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0
L2NvbmZpZy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NvbmZpZy9hcmdw
YXJzaW5nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvY29uZmlnL2V4Y2VwdGlvbnMucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb25maWcvZmluZHBhdGhzLnB5CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJk
X3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9tYXJrL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL19weXRlc3QvbWFyay93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMzYxMGMwMTg2MDRkMGU0OGE5OTg5NjI1NDcyYjRhNTkxNzAyYzBlZC4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9tYXJrL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBA
QAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzND
IHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktp
dC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUg
VG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1E
byBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJv
cGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVz
IHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qg
b2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbWFyay9fX2luaXRfXy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvZXZhbHVhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMv
X3B5dGVzdC9tYXJrL2xlZ2FjeS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L21hcmsvc3Ry
dWN0dXJlcy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggOWIzMmI5NTNhOGMzYjBmNzUyYWY4NWE3MTM0OGM3NzRhMzJi
OGZhMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDQ5
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvX2FyZ2NvbXBsZXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3Jj
L19weXRlc3QvY2FjaGVwcm92aWRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2NhcHR1
cmUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9jb21wYXQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9z
cmMvX3B5dGVzdC9kZWJ1Z2dpbmcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9kZXByZWNh
dGVkLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZG9jdGVzdC5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3NyYy9fcHl0ZXN0L2ZpeHR1cmVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvZnJlZXpl
X3N1cHBvcnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9oZWxwY29uZmlnLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3Qvc3JjL19weXRlc3QvaG9va3NwZWMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVz
dC9qdW5pdHhtbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L2xvZ2dpbmcucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9zcmMvX3B5dGVzdC9tYWluLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL19weXRlc3QvbW9u
a2V5cGF0Y2gucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9ub2Rlcy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3NyYy9fcHl0ZXN0L25vc2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9vdXRjb21l
cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3Bhc3RlYmluLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvcHl0ZXN0ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRob24u
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC9weXRob25fYXBpLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvcmVjd2Fybi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3Jlc3VsdGxv
Zy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3J1bm5lci5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L3NldHVwb25seS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NldHVwcGxh
bi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3NyYy9fcHl0ZXN0L3NraXBwaW5nLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
c3JjL19weXRlc3QvdGVybWluYWwucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC90bXBkaXIu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC9zcmMvX3B5dGVzdC91bml0dGVzdC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Ny
Yy9fcHl0ZXN0L3dhcm5pbmdzLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvdzNjLWlt
cG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9zcmMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGFhNzFkM2JhOGFkODI5MDMzMTA3MGU2ZWViZGEyODc5MzE0MTU2YjMu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3Qvc3JjL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3Qvc3JjL3B5dGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGFza3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy93M2MtaW1wb3J0LmxvZwpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFlMDg1M2QzMmQ4MDA2NmRmOTQ2YzAyMzQx
YTFhNjhiMTQ1ZmQ0Ny4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90YXNrcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0x
LDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZy
b20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3Rs
eSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBn
aXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhl
biBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVp
bXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3Bl
cnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGFza3MvZ2VuZXJhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90YXNrcy9yZWxlYXNlLm1p
bm9yLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rhc2tzL3JlbGVhc2UucGF0Y2gucnN0Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGFza3MvcmVxdWlyZW1lbnRzLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9jb2RlL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2IwZmZkNTgxZmNhM2E5YmQy
NzA4Y2JiYmY4NDM3NzNkZmMyZjM3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvY29kZS93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
Y29kZS90ZXN0X2NvZGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2NvZGUvdGVzdF9leGNpbmZv
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy9jb2RlL3Rlc3Rfc291cmNlX211bHRpbGluZV9ibG9jay5weQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOTM3MmRiMWZmOTg1OTE1MDA5Nzk3OTRmNzJiMGM5N2U1MWExYzBi
MS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5
dGVzdC90ZXN0aW5nL2ZyZWV6ZS90ZXN0cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3Rlc3Rz
L3Rlc3RfZG9jdGVzdC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS90ZXN0cy90ZXN0
X3RyaXZpYWwucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMDg1YjY1YjdmZDQ2NzM2YTMwZjczOTU2Njhh
MGFmYmM2ZmRiMTUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9mcmVlemUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2ZyZWV6ZS9j
cmVhdGVfZXhlY3V0YWJsZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3J1bnRlc3Rz
X3NjcmlwdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZnJlZXplL3RveF9ydW4ucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy93M2MtaW1wb3J0LmxvZyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3Rlc3RpbmcvbG9nZ2luZy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMWYyNzgwNjg3MWFkNTFhYjE1YWJlMDZiM2M5MDE1NmJiMjQ5YjkxZC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL2xvZ2dpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCww
IEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBX
M0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2Vi
S2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgot
CWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRo
ZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0K
LURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Q
cm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlz
dCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2xvZ2dpbmcvdGVzdF9maXh0dXJlLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGly
ZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfZm9ybWF0dGVyLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9w
eXRlc3QvdGVzdGluZy9sb2dnaW5nL3Rlc3RfcmVwb3J0aW5nLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rp
bmcvcHl0aG9uL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBi
YzM3OWE1OTY0YzhjYzI5N2FkMTE4ODBkMGFiZTczMDE2NmMzNTkxLi4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9u
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9w
YXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vYXBwcm94LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy9weXRob24vY29sbGVjdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL2ZpeHR1cmUu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3Ro
aXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3B5dGhvbi9pbnRlZ3JhdGlvbi5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvcHl0aG9uL21ldGFmdW5jLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRo
b24vcmFpc2VzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy9weXRob24vc2V0dXBfb25seS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L3Rlc3RpbmcvcHl0aG9uL3NldHVwX3BsYW4ucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90
ZXN0aW5nL3B5dGhvbi9zaG93X2ZpeHR1cmVzX3Blcl90ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy9weXRob24vdGVzdF9kZXByZWNhdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTc3N2E5MmMzN2M5NjM3NDZmN2I0
ODRkY2VlZmRiYjkxNmI5YTdjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVs
bApAQCAtMSw1MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBv
cnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMg
ZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRo
ZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0
IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL2FjY2VwdGFu
Y2VfdGVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvZGVwcmVjYXRlZF90ZXN0LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdGVzdGluZy90ZXN0X2FyZ2NvbXBsZXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGlu
Zy90ZXN0X2Fzc2VydGlvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9hc3NlcnRyZXdy
aXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NhY2hlcHJvdmlkZXIucHkKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC90ZXN0aW5nL3Rlc3RfY2FwdHVyZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVz
dF9jb2xsZWN0aW9uLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X2NvbXBhdC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rl
c3RfY29uZnRlc3QucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfZG9jdGVzdC5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9lbnRyeV9wb2ludHMucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0
aW5nL3Rlc3RfaGVscGNvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9qdW5pdHht
bC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tYXJrLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVz
dGluZy90ZXN0X21vZGltcG9ydC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9tb25rZXlw
YXRjaC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9ub2Rlcy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0
L3Rlc3RpbmcvdGVzdF9ub3NlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3BhcnNlb3B0
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3Bhc3RlYmluLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3Qv
dGVzdGluZy90ZXN0X3BkYi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9wbHVnaW5tYW5h
Z2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3B5dGVzdGVyLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRl
c3QvdGVzdGluZy90ZXN0X3JlY3dhcm4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfcmVz
dWx0bG9nLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdGVzdGluZy90ZXN0X3J1bm5lci5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3Rlc3RpbmcvdGVzdF9ydW5uZXJfeHVuaXQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rl
c3Rfc2Vzc2lvbi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF9za2lwcGluZy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvcHl0ZXN0L3Rlc3RpbmcvdGVzdF90ZXJtaW5hbC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3Rlc3Rpbmcv
dGVzdF90bXBkaXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3RfdW5pdHRlc3QucHkKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3Bh
cnR5L3B5dGVzdC90ZXN0aW5nL3Rlc3Rfd2FybmluZ3MucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0
ZXN0L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMGQxNmI5YjZkN2Q5MzI1NTc4NDliYjE1Y2IzZmNmZWY3
NGE5OGUuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9weXRlc3QvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1U
aGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVw
b3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0Lgot
SW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBz
Oi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29s
cy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5P
VCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0
aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBm
aWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3RoaXJkX3BhcnR5L3B5dGVzdC9BVVRIT1JTCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvQ0hBTkdFTE9HLnJzdAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvcHl0ZXN0L0NPTlRSSUJVVElORy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9IT1dUT1JFTEVBU0Uu
cnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS9weXRlc3QvTElDRU5TRQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L1JFQURNRS5yc3QKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5
L3B5dGVzdC9hcHB2ZXlvci55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3B5dGVzdC9weXByb2plY3QudG9tbAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkv
cHl0ZXN0L3NldHVwLmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvcHl0ZXN0L3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9weXRlc3QvdG94
LmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9jdW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L2RvY3VtZW50YXRpb24vdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IGMxMGQ2ZjA5OGU5ZGViNWNkYTAyZjJiYmMxYmFkOGNjOWUyMWU3YzAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvZG9j
dW1lbnRhdGlvbi93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAK
LVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyBy
ZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQu
Ci1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0
cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRv
b2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8g
Tk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3Bl
cnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyBy
ZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9m
IGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1
bWVudGF0aW9uL2NvbmYucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9kb2N1bWVudGF0aW9uL2luZGV4LnJzdApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy90aGlyZF9wYXJ0eS9zaXgvc2l4LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgv
c2l4LmVnZy1pbmZvL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAxMTMxOTUzMWYxZTFmNzQ4NzJjNDgxMjEyOTM5ZDMyZGY3MjE0MWQ4Li4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby93
M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0cyBp
biB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5Lgot
RG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBj
cmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMv
aW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBv
ciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWly
aW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVu
ZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L3NpeC5lZ2ctaW5mby9QS0ctSU5GTwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby9TT1VS
Q0VTLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvdGhpcmRfcGFydHkvc2l4L3NpeC5lZ2ctaW5mby9kZXBlbmRlbmN5X2xpbmtzLnR4dAotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFy
dHkvc2l4L3NpeC5lZ2ctaW5mby90b3BfbGV2ZWwudHh0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC93
M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBmMGU4YTNlMjgyMjY0ZmViZGI4ZWYxNDc3NDY2ODc0YmFiMjdkMTFlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0
eS9zaXgvQ0hBTkdFUwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3NpeC9NQU5JRkVTVC5pbgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvc2l4L1BLRy1JTkZPCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvUkVBRE1FLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvc2l4L3NldHVw
LmNmZwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L3NldHVwLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4LnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS9zaXgvc2l4
LnB5YwotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
dGhpcmRfcGFydHkvc2l4L3Rlc3Rfc2l4LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5n
cy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmU4MmQyZDVkNDgwOTUzNzI5YjI5ZWIzNjQxMmM0
Mjg2YzE1NDRlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRf
cGFydHkvd2ViZW5jb2RpbmdzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjAg
KzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0
aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGlu
IFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1
YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1
biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9y
dAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkg
dmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3MvUEtHLUlORk8KLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVu
Y29kaW5ncy9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvc2V0dXAuY2ZnCi0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93
ZWJlbmNvZGluZ3Mvc2V0dXAucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVu
Y29kaW5ncy5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVu
Y29kaW5ncy5lZ2ctaW5mby93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggZGZhNjdjYTNjYzA4YTFiM2I0OWQ4M2YzYTY2ZTcwMzVhZjdmOTc3Yy4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93
ZWJlbmNvZGluZ3MuZWdnLWluZm8vdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwy
MCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9t
IHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkg
aW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0
aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4g
cnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1w
b3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0
eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MuZWdnLWlu
Zm8vUEtHLUlORk8KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MuZWdnLWluZm8vU09V
UkNFUy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MuZWdnLWluZm8vZGVwZW5k
ZW5jeV9saW5rcy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MuZWdnLWluZm8v
dG9wX2xldmVsLnR4dApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2Rpbmdz
L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy90aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzL3czYy1pbXBv
cnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0N2ZmMGRlNjkxMjQzNjY2M2Ni
ZmQyMTdlYWZiMzFjOWU5ZTNlNzQzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29kaW5ncy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2Rp
bmdzL3dlYmVuY29kaW5ncy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdGhpcmRfcGFydHkvd2ViZW5jb2RpbmdzL3dlYmVuY29k
aW5ncy9fX2luaXRfXy5weWMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MvbGFiZWxz
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy90
aGlyZF9wYXJ0eS93ZWJlbmNvZGluZ3Mvd2ViZW5jb2RpbmdzL2xhYmVscy5weWMKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dl
YmVuY29kaW5ncy93ZWJlbmNvZGluZ3MvbWtsYWJlbHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93
ZWJlbmNvZGluZ3MvdGVzdHMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3RoaXJkX3BhcnR5L3dlYmVuY29kaW5ncy93ZWJlbmNvZGluZ3MveF91
c2VyX2RlZmluZWQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94LmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94LmluaQppbmRleCAzZWIxMmMzNTdiYTA1YTEyODM1
MjEyNTY2MzU1N2QxZTJiMTdmMzE0Li5lODY3M2RiMGE2OWFlNDY5NWU3YjFmYTE1MmM1MzNhYTFi
MGY5OGQxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3RveC5pbmkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy90b3guaW5pCkBAIC0xLDI2ICsxLDU2IEBACiBbdG94XQotZW52
bGlzdCA9IHB5MjcscHkzNixweXB5CitlbnZsaXN0ID0gcHkyNyxweTM1LHB5MzYscHkzNyxweXB5
LHtweTI3LHB5MzUscHkzNixweTM3fS1mbGFrZTgse3B5MzUscHkzNixweTM3fS1teXB5CiBza2lw
c2Rpc3Q9VHJ1ZQogCiBbdGVzdGVudl0KLSMgZmxha2U4IHZlcnNpb25zIHNob3VsZCBiZSBrZXB0
IGluIHN5bmMgYWNyb3NzIHRvb2xzL3RveC5pbmksIHRvb2xzL3dwdC90b3guaW5pLCBhbmQgdG9v
bHMvd3B0cnVubmVyL3RveC5pbmkKIGRlcHMgPQotICBmbGFrZTg9PTMuNS4wCi0gIHB5Y29kZXN0
eWxlPT0yLjMuMQotICBweWZsYWtlcz09MS42LjAKLSAgcGVwOC1uYW1pbmc9PTAuNC4xCiAgIHB5
dGVzdAogICBweXRlc3QtY292CiAgIG1vY2sKICAgaHlwb3RoZXNpcwotICBweXRlc3QtY2F0Y2hs
b2cKKyAgcmVxdWVzdHMKKyAgdGFza2NsdXN0ZXIKKyAgcHl5YW1sCisgIGpzb24tZQorICBqc29u
c2NoZW1hCiAKLWNvbW1hbmRzID0KLSAgcHl0ZXN0IC0tY292IHtwb3NhcmdzfQotICBmbGFrZTgg
LS1hcHBlbmQtY29uZmlnPWZsYWtlOC5pbmkKK2NvbW1hbmRzID0gcHl0ZXN0IHtwb3NhcmdzfQog
CiBwYXNzZW52ID0KICAgSFlQT1RIRVNJU19QUk9GSUxFCisgIFBZX0NPTE9SUworICBUQVNLQ0xV
U1RFUl9ST09UX1VSTAorCitbdGVzdGVudjpweTI3LWZsYWtlOF0KK2RlcHMgPSAtcnJlcXVpcmVt
ZW50c19mbGFrZTgudHh0Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGlu
aWRpcn0vcHkyNy1mbGFrZTguaW5pIHtwb3NhcmdzfQorCitbdGVzdGVudjpweTM1LWZsYWtlOF0K
K2RlcHMgPSAtcnJlcXVpcmVtZW50c19mbGFrZTgudHh0Citjb21tYW5kcyA9IGZsYWtlOCAtLWFw
cGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzNi1mbGFrZTguaW5pIHtwb3NhcmdzfQorCitbdGVz
dGVudjpweTM2LWZsYWtlOF0KK2RlcHMgPSAtcnJlcXVpcmVtZW50c19mbGFrZTgudHh0Citjb21t
YW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRpcn0vcHkzNi1mbGFrZTguaW5p
IHtwb3NhcmdzfQorCitbdGVzdGVudjpweTM3LWZsYWtlOF0KK2RlcHMgPSAtcnJlcXVpcmVtZW50
c19mbGFrZTgudHh0Citjb21tYW5kcyA9IGZsYWtlOCAtLWFwcGVuZC1jb25maWc9e3RveGluaWRp
cn0vcHkzNi1mbGFrZTguaW5pIHtwb3NhcmdzfQogCi1bZmxha2U4XQotZXhjbHVkZSA9IC50b3gs
aHRtbDVsaWIsdGhpcmRfcGFydHkscHl3ZWJzb2NrZXQsc2l4LF92ZW52LHdlYmVuY29kaW5ncyx3
cHRzZXJ2ZS9kb2NzLHdwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC8sd3B0LHdwdHJ1
bm5lcgorW3Rlc3RlbnY6cHkzNS1teXB5XQorZGVwcyA9IC1ycmVxdWlyZW1lbnRzX215cHkudHh0
CitjaGFuZ2VkaXIgPSB7dG94aW5pZGlyfS8uLgorY29tbWFuZHMgPQorICBteXB5IC0tY29uZmln
LWZpbGU9e3RveGluaWRpcn0vbXlweS5pbmkgLS1uby1pbmNyZW1lbnRhbCAtLXB5MiAtcCB0b29s
cy5tYW5pZmVzdCAtcCB0b29scy5saW50IC1wIHRvb2xzLmdpdGlnbm9yZQorCitbdGVzdGVudjpw
eTM2LW15cHldCitkZXBzID0gLXJyZXF1aXJlbWVudHNfbXlweS50eHQKK2NoYW5nZWRpciA9IHt0
b3hpbmlkaXJ9Ly4uCitjb21tYW5kcyA9CisgIG15cHkgLS1jb25maWctZmlsZT17dG94aW5pZGly
fS9teXB5LmluaSAtLW5vLWluY3JlbWVudGFsIC0tcHkyIC1wIHRvb2xzLm1hbmlmZXN0IC1wIHRv
b2xzLmxpbnQgLXAgdG9vbHMuZ2l0aWdub3JlCisKK1t0ZXN0ZW52OnB5MzctbXlweV0KK2RlcHMg
PSAtcnJlcXVpcmVtZW50c19teXB5LnR4dAorY2hhbmdlZGlyID0ge3RveGluaWRpcn0vLi4KK2Nv
bW1hbmRzID0KKyAgbXlweSAtLWNvbmZpZy1maWxlPXt0b3hpbmlkaXJ9L215cHkuaW5pIC0tbm8t
aW5jcmVtZW50YWwgLS1weTIgLXAgdG9vbHMubWFuaWZlc3QgLXAgdG9vbHMubGludCAtcCB0b29s
cy5naXRpZ25vcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCBmN2EyZjMyNzRjODEzOTgwNTYxYTcxZmJkNTlmNzQwMGVjNmZhYjY0
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL01FVEEueW1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9fX2luaXRfXy5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvX19pbml0X18ucHlj
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9hcHB2
ZXlvci55bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL2NvbmZ0ZXN0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy9mbGFrZTguaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy9sb2NhbHBhdGhzLnB5YwotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvcHl0ZXN0LmluaQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvdG94LmluaQpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
ZWJkcml2ZXIvUkVBRE1FLm1kIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvUkVBRE1FLm1kCmluZGV4IDcyZGUzYjJhZThiNmEyNTQz
NGJiZmVmMDBlNDllMGEwNDYzZmYyNDcuLjI3OTVmZjFmY2YzOWY3ZGE5OGExOGViMzQ4NDEwOWIw
YmY3MTM3YWUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL1JFQURNRS5tZAorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci9SRUFETUUubWQKQEAg
LTksNyArOSw3IEBAIGltcGxlbWVudGF0aW9uIGNvbXBsaWFuY2UgdG8gdGhlIHNwZWNpZmljYXRp
b24gaW4gbWluZCwKIHNvIHRoYXQgZGlmZmVyZW50IHJlbW90ZSBlbmQgZHJpdmVycwogY2FuIGRl
dGVybWluZSB3aGV0aGVyIHRoZXkgbWVldCB0aGUgcmVjb2duaXNlZCBzdGFuZGFyZC4KIFRoZSBj
bGllbnQgaXMgdXNlZCBmb3IgdGhlIFdlYkRyaXZlciBzcGVjaWZpY2F0aW9uIHRlc3RzCi1pbiB0
aGUgW1dlYiBQbGF0Zm9ybSBUZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQpLgoraW4gW3dlYi1wbGF0Zm9ybS10ZXN0c10oaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQpLgogCiAjIyBJbnN0YWxsYXRpb24KIApAQCAtMjQsMTEgKzI0
LDExIEBAIHdoaWNoIGlzIHVzZWZ1bCBpZiB5b3Ugd2FudCB0byBjb250cmlidXRlIHBhdGNoZXMg
YmFjazoKIAogICAgICUgY2QgL3BhdGgvdG8vd2RjbGllbnQKICAgICAlIHB5dGhvbgotICAgIFB5
dGhvbiAyLjcuMTIrIChkZWZhdWx0LCBBdWcgIDQgMjAxNiwgMjA6MDQ6MzQpIAorICAgIFB5dGhv
biAyLjcuMTIrIChkZWZhdWx0LCBBdWcgIDQgMjAxNiwgMjA6MDQ6MzQpCiAgICAgW0dDQyA2LjEu
MSAyMDE2MDcyNF0gb24gbGludXgyCiAgICAgVHlwZSAiaGVscCIsICJjb3B5cmlnaHQiLCAiY3Jl
ZGl0cyIgb3IgImxpY2Vuc2UiIGZvciBtb3JlIGluZm9ybWF0aW9uLgogICAgID4+PiBpbXBvcnQg
d2ViZHJpdmVyCi0gICAgPj4+IAorICAgID4+PgogCiBJZiB5b3UgYXJlIHdyaXRpbmcgV2ViRHJp
dmVyIHNwZWNpZmljYXRpb24gdGVzdHMgZm9yCiBbV1BUXShodHRwczovL2dpdGh1Yi5jb20vd2Vi
LXBsYXRmb3JtLXRlc3RzL3dwdCksCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVy
L3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTVkYmM3MzJl
ZmQ3OGM0Nzc2Y2JkNDZlN2VjNjM0YzFiZWViOTk1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAg
LTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQg
ZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVj
dGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BU
IGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1U
aGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byBy
ZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJv
cGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvUkVBRE1FLm1kCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvc2V0dXAucHkKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d2ViZHJpdmVyL3dlYmRyaXZlci9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9fX2luaXRfXy5w
eQppbmRleCAyMTdiZmM2NTI3MjI4YzE0MGIxNGRmZDc4M2M4ZWMzNWE0OThlMWIzLi5kODYwYjll
YTI1MzNmMDMyY2EyMjdhZTYzZDhmMjAyMmI2ZDg5N2M3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2
ZXIvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL19faW5pdF9fLnB5CkBAIC0xLDYgKzEs
NiBAQAogIyBmbGFrZTg6IG5vcWEKIAotZnJvbSBjbGllbnQgaW1wb3J0ICgKK2Zyb20gLmNsaWVu
dCBpbXBvcnQgKAogICAgIENvb2tpZXMsCiAgICAgRWxlbWVudCwKICAgICBGaW5kLApAQCAtOCw3
ICs4LDcgQEAgZnJvbSBjbGllbnQgaW1wb3J0ICgKICAgICBTZXNzaW9uLAogICAgIFRpbWVvdXRz
LAogICAgIFdpbmRvdykKLWZyb20gZXJyb3IgaW1wb3J0ICgKK2Zyb20gLmVycm9yIGltcG9ydCAo
CiAgICAgRWxlbWVudE5vdFNlbGVjdGFibGVFeGNlcHRpb24sCiAgICAgRWxlbWVudE5vdFZpc2li
bGVFeGNlcHRpb24sCiAgICAgSW52YWxpZEFyZ3VtZW50RXhjZXB0aW9uLApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2
ZXIvd2ViZHJpdmVyL2NsaWVudC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKaW5kZXggYThj
OWEwNjFjY2Y1MGIxYjg3MDI4Mzg3MWUyZTRlYTU1YmM0ZThjYy4uMGM1YmJmZjU2Mjk4NjhmZGM0
OGExYTQxY2Y4ODJmYWJlNTYxN2MxYiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL2NsaWVudC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dlYmRyaXZlci93ZWJkcml2ZXIvY2xpZW50LnB5CkBAIC0xLDEwICsxLDkgQEAKLWltcG9ydCB1
cmxwYXJzZQotCi1pbXBvcnQgZXJyb3IKLWltcG9ydCBwcm90b2NvbAotaW1wb3J0IHRyYW5zcG9y
dAorZnJvbSAuIGltcG9ydCBlcnJvcgorZnJvbSAuIGltcG9ydCBwcm90b2NvbAorZnJvbSAuIGlt
cG9ydCB0cmFuc3BvcnQKIAogZnJvbSBzaXggaW1wb3J0IHN0cmluZ190eXBlcworZnJvbSBzaXgu
bW92ZXMudXJsbGliIGltcG9ydCBwYXJzZSBhcyB1cmxwYXJzZQogCiAKIGRlZiBjb21tYW5kKGZ1
bmMpOgpAQCAtMjE4LDcgKzIxNywxMiBAQCBjbGFzcyBBY3Rpb25zKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgICAgICAgICBgYEFjdGlvblNlcXVlbmNlLmRpY3RgYC4KICAgICAgICAgIiIiCiAg
ICAgICAgIGJvZHkgPSB7ImFjdGlvbnMiOiBbXSBpZiBhY3Rpb25zIGlzIE5vbmUgZWxzZSBhY3Rp
b25zfQotICAgICAgICByZXR1cm4gc2VsZi5zZXNzaW9uLnNlbmRfc2Vzc2lvbl9jb21tYW5kKCJQ
T1NUIiwgImFjdGlvbnMiLCBib2R5KQorICAgICAgICBhY3Rpb25zID0gc2VsZi5zZXNzaW9uLnNl
bmRfc2Vzc2lvbl9jb21tYW5kKCJQT1NUIiwgImFjdGlvbnMiLCBib2R5KQorICAgICAgICAiIiJX
ZWJEcml2ZXIgd2luZG93IHNob3VsZCBiZSBzZXQgdG8gdGhlIHRvcCBsZXZlbCB3aW5kb3cgd2hl
biB3cHRydW5uZXIKKyAgICAgICAgcHJvY2Vzc2VzIHRoZSBuZXh0IGV2ZW50LgorICAgICAgICAi
IiIKKyAgICAgICAgc2VsZi5zZXNzaW9uLnN3aXRjaF9mcmFtZShOb25lKQorICAgICAgICByZXR1
cm4gYWN0aW9ucwogCiAgICAgQGNvbW1hbmQKICAgICBkZWYgcmVsZWFzZShzZWxmKToKQEAgLTMw
OCw4ICszMTIsMTEgQEAgY2xhc3MgRmluZChvYmplY3QpOgogICAgICAgICBzZWxmLnNlc3Npb24g
PSBzZXNzaW9uCiAKICAgICBAY29tbWFuZAotICAgIGRlZiBjc3Moc2VsZiwgc2VsZWN0b3IsIGFs
bD1UcnVlKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2ZpbmRfZWxlbWVudCgiY3NzIHNlbGVjdG9y
Iiwgc2VsZWN0b3IsIGFsbCkKKyAgICBkZWYgY3NzKHNlbGYsIGVsZW1lbnRfc2VsZWN0b3IsIGFs
bD1UcnVlLCBmcmFtZT0id2luZG93Iik6CisgICAgICAgIGlmIChmcmFtZSAhPSAid2luZG93Iik6
CisgICAgICAgICAgICBzZWxmLnNlc3Npb24uc3dpdGNoX2ZyYW1lKGZyYW1lKQorICAgICAgICBl
bGVtZW50cyA9IHNlbGYuX2ZpbmRfZWxlbWVudCgiY3NzIHNlbGVjdG9yIiwgZWxlbWVudF9zZWxl
Y3RvciwgYWxsKQorICAgICAgICByZXR1cm4gZWxlbWVudHMKIAogICAgIGRlZiBfZmluZF9lbGVt
ZW50KHNlbGYsIHN0cmF0ZWd5LCBzZWxlY3RvciwgYWxsKToKICAgICAgICAgcm91dGUgPSAiZWxl
bWVudHMiIGlmIGFsbCBlbHNlICJlbGVtZW50IgpAQCAtMzU2LDcgKzM2Myw3IEBAIGNsYXNzIFVz
ZXJQcm9tcHQob2JqZWN0KToKICAgICBAdGV4dC5zZXR0ZXIKICAgICBAY29tbWFuZAogICAgIGRl
ZiB0ZXh0KHNlbGYsIHZhbHVlKToKLSAgICAgICAgYm9keSA9IHsidmFsdWUiOiBsaXN0KHZhbHVl
KX0KKyAgICAgICAgYm9keSA9IHsidGV4dCI6IHZhbHVlfQogICAgICAgICBzZWxmLnNlc3Npb24u
c2VuZF9zZXNzaW9uX2NvbW1hbmQoIlBPU1QiLCAiYWxlcnQvdGV4dCIsIGJvZHk9Ym9keSkKIAog
CkBAIC0zNzYsNyArMzgzLDYgQEAgY2xhc3MgU2Vzc2lvbihvYmplY3QpOgogICAgICAgICBzZWxm
LnRpbWVvdXRzID0gTm9uZQogICAgICAgICBzZWxmLndpbmRvdyA9IE5vbmUKICAgICAgICAgc2Vs
Zi5maW5kID0gTm9uZQotICAgICAgICBzZWxmLl9lbGVtZW50X2NhY2hlID0ge30KICAgICAgICAg
c2VsZi5leHRlbnNpb24gPSBOb25lCiAgICAgICAgIHNlbGYuZXh0ZW5zaW9uX2NscyA9IGV4dGVu
c2lvbgogCkBAIC00MDQsMTAgKzQxMCwxNyBAQCBjbGFzcyBTZXNzaW9uKG9iamVjdCk6CiAgICAg
ICAgIHNlbGYuZW5kKCkKIAogICAgIGRlZiBzdGFydChzZWxmKToKKyAgICAgICAgIiIiU3RhcnQg
YSBuZXcgV2ViRHJpdmVyIHNlc3Npb24uCisKKyAgICAgICAgOnJldHVybjogRGljdGlvbmFyeSB3
aXRoIGBjYXBhYmlsaXRpZXNgIGFuZCBgc2Vzc2lvbklkYC4KKworICAgICAgICA6cmFpc2VzIGVy
cm9yLldlYkRyaXZlckV4Y2VwdGlvbjogSWYgdGhlIHJlbW90ZSBlbmQgcmV0dXJucworICAgICAg
ICAgICAgYW4gZXJyb3IuCisgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLnNlc3Npb25faWQg
aXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBib2R5ID0ge30KKyAg
ICAgICAgYm9keSA9IHsiY2FwYWJpbGl0aWVzIjoge319CiAKICAgICAgICAgaWYgc2VsZi5yZXF1
ZXN0ZWRfY2FwYWJpbGl0aWVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgYm9keVsiY2FwYWJp
bGl0aWVzIl0gPSBzZWxmLnJlcXVlc3RlZF9jYXBhYmlsaXRpZXMKQEAgLTQyMiwxMyArNDM1LDEz
IEBAIGNsYXNzIFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgcmV0dXJuIHZhbHVlCiAKICAgICBk
ZWYgZW5kKHNlbGYpOgotICAgICAgICAiIiJUcmllcyB0byBjbG9zZSB0aGUgYWN0aXZlIHNlc3Np
b24uIiIiCisgICAgICAgICIiIlRyeSB0byBjbG9zZSB0aGUgYWN0aXZlIHNlc3Npb24uIiIiCiAg
ICAgICAgIGlmIHNlbGYuc2Vzc2lvbl9pZCBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAK
ICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5zZW5kX2NvbW1hbmQoIkRFTEVURSIsICJz
ZXNzaW9uLyVzIiAlIHNlbGYuc2Vzc2lvbl9pZCkKLSAgICAgICAgZXhjZXB0IGVycm9yLlNlc3Np
b25Ob3RDcmVhdGVkRXhjZXB0aW9uOgorICAgICAgICBleGNlcHQgZXJyb3IuSW52YWxpZFNlc3Np
b25JZEV4Y2VwdGlvbjoKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZmluYWxseToKICAgICAg
ICAgICAgIHNlbGYuc2Vzc2lvbl9pZCA9IE5vbmUKQEAgLTQ0NiwxMCArNDU5LDEwIEBAIGNsYXNz
IFNlc3Npb24ob2JqZWN0KToKICAgICAgICAgICAgIHRoZSBgdmFsdWVgIGZpZWxkIHJldHVybmVk
IGFmdGVyIHBhcnNpbmcgdGhlIHJlc3BvbnNlCiAgICAgICAgICAgICBib2R5IGFzIEpTT04uCiAK
LSAgICAgICAgOnJhaXNlcyBWYWx1ZUVycm9yOiBJZiB0aGUgcmVzcG9uc2UgYm9keSBkb2VzIG5v
dCBjb250YWluIGEKLSAgICAgICAgICAgIGB2YWx1ZWAga2V5LgogICAgICAgICA6cmFpc2VzIGVy
cm9yLldlYkRyaXZlckV4Y2VwdGlvbjogSWYgdGhlIHJlbW90ZSBlbmQgcmV0dXJucwogICAgICAg
ICAgICAgYW4gZXJyb3IuCisgICAgICAgIDpyYWlzZXMgVmFsdWVFcnJvcjogSWYgdGhlIHJlc3Bv
bnNlIGJvZHkgZG9lcyBub3QgY29udGFpbiBhCisgICAgICAgICAgICBgdmFsdWVgIGtleS4KICAg
ICAgICAgIiIiCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi50cmFuc3BvcnQuc2VuZCgKICAgICAg
ICAgICAgIG1ldGhvZCwgdXJsLCBib2R5LApAQCAtNDU5LDcgKzQ3Miw3IEBAIGNsYXNzIFNlc3Np
b24ob2JqZWN0KToKICAgICAgICAgaWYgcmVzcG9uc2Uuc3RhdHVzICE9IDIwMDoKICAgICAgICAg
ICAgIGVyciA9IGVycm9yLmZyb21fcmVzcG9uc2UocmVzcG9uc2UpCiAKLSAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UoZXJyLCBlcnJvci5TZXNzaW9uTm90Q3JlYXRlZEV4Y2VwdGlvbik6CisgICAg
ICAgICAgICBpZiBpc2luc3RhbmNlKGVyciwgZXJyb3IuSW52YWxpZFNlc3Npb25JZEV4Y2VwdGlv
bik6CiAgICAgICAgICAgICAgICAgIyBUaGUgZHJpdmVyIGNvdWxkIGhhdmUgYWxyZWFkeSBiZWVu
IGRlbGV0ZWQgdGhlIHNlc3Npb24uCiAgICAgICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0g
Tm9uZQogCkBAIC00OTUsMTQgKzUwOCw5IEBAIGNsYXNzIFNlc3Npb24ob2JqZWN0KToKICAgICAg
ICAgOnJldHVybjogYE5vbmVgIGlmIHRoZSBIVFRQIHJlc3BvbnNlIGJvZHkgd2FzIGVtcHR5LCBv
dGhlcndpc2UKICAgICAgICAgICAgIHRoZSByZXN1bHQgb2YgcGFyc2luZyB0aGUgYm9keSBhcyBK
U09OLgogCi0gICAgICAgIDpyYWlzZXMgZXJyb3IuU2Vzc2lvbk5vdENyZWF0ZWRFeGNlcHRpb246
IElmIHRoZXJlIGlzIG5vIGFjdGl2ZQotICAgICAgICAgICAgc2Vzc2lvbi4KICAgICAgICAgOnJh
aXNlcyBlcnJvci5XZWJEcml2ZXJFeGNlcHRpb246IElmIHRoZSByZW1vdGUgZW5kIHJldHVybnMK
ICAgICAgICAgICAgIGFuIGVycm9yLgogICAgICAgICAiIiIKLSAgICAgICAgaWYgc2VsZi5zZXNz
aW9uX2lkIGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBlcnJvci5TZXNzaW9uTm90Q3JlYXRl
ZEV4Y2VwdGlvbigpCi0KICAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbigic2Vzc2lvbi8l
cy8iICUgc2VsZi5zZXNzaW9uX2lkLCB1cmkpCiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfY29t
bWFuZChtZXRob2QsIHVybCwgYm9keSkKIApAQCAtNTY1LDcgKzU3Myw3IEBAIGNsYXNzIFNlc3Np
b24ob2JqZWN0KToKICAgICBAY29tbWFuZAogICAgIGRlZiBjbG9zZShzZWxmKToKICAgICAgICAg
aGFuZGxlcyA9IHNlbGYuc2VuZF9zZXNzaW9uX2NvbW1hbmQoIkRFTEVURSIsICJ3aW5kb3ciKQot
ICAgICAgICBpZiBsZW4oaGFuZGxlcykgPT0gMDoKKyAgICAgICAgaWYgaGFuZGxlcyBpcyBub3Qg
Tm9uZSBhbmQgbGVuKGhhbmRsZXMpID09IDA6CiAgICAgICAgICAgICAjIFdpdGggbm8gbW9yZSBv
cGVuIHRvcC1sZXZlbCBicm93c2luZyBjb250ZXh0cywgdGhlIHNlc3Npb24gaXMgY2xvc2VkLgog
ICAgICAgICAgICAgc2VsZi5zZXNzaW9uX2lkID0gTm9uZQogCkBAIC02NjcsMTAgKzY3NSw2IEBA
IGNsYXNzIEVsZW1lbnQob2JqZWN0KToKICAgICAgICAgc2VsZi5pZCA9IGlkCiAgICAgICAgIHNl
bGYuc2Vzc2lvbiA9IHNlc3Npb24KIAotICAgICAgICBpZiBpZCBpbiBzZWxmLnNlc3Npb24uX2Vs
ZW1lbnRfY2FjaGU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFbGVtZW50IGFscmVh
ZHkgaW4gY2FjaGU6ICVzIiAlIGlkKQotICAgICAgICBzZWxmLnNlc3Npb24uX2VsZW1lbnRfY2Fj
aGVbc2VsZi5pZF0gPSBzZWxmCi0KICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgIHJl
dHVybiAiPCVzICVzPiIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuaWQpCiAKQEAg
LTY4MSw4ICs2ODUsNiBAQCBjbGFzcyBFbGVtZW50KG9iamVjdCk6CiAgICAgQGNsYXNzbWV0aG9k
CiAgICAgZGVmIGZyb21fanNvbihjbHMsIGpzb24sIHNlc3Npb24pOgogICAgICAgICB1dWlkID0g
anNvbltFbGVtZW50LmlkZW50aWZpZXJdCi0gICAgICAgIGlmIHV1aWQgaW4gc2Vzc2lvbi5fZWxl
bWVudF9jYWNoZToKLSAgICAgICAgICAgIHJldHVybiBzZXNzaW9uLl9lbGVtZW50X2NhY2hlW3V1
aWRdCiAgICAgICAgIHJldHVybiBjbHModXVpZCwgc2Vzc2lvbikKIAogICAgIGRlZiBzZW5kX2Vs
ZW1lbnRfY29tbWFuZChzZWxmLCBtZXRob2QsIHVyaSwgYm9keT1Ob25lKToKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJp
dmVyL3dlYmRyaXZlci9lcnJvci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9lcnJvci5weQppbmRleCBiMjMz
N2ZmM2IzOGY1NzgyOGM3MmQ3NmU0OWVmODg5M2QzMGI1NzhjLi4wNjQ3ZTdlYjYxZjgzNGIxZGUw
ZWIwNzI5NmU4NzZjZTM4YWE4YTQ3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvZXJyb3IucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
ZWJkcml2ZXIvd2ViZHJpdmVyL2Vycm9yLnB5CkBAIC0xLDEzICsxLDE2IEBACiBpbXBvcnQgY29s
bGVjdGlvbnMKIGltcG9ydCBqc29uCiAKK2Zyb20gc2l4IGltcG9ydCBpdGVydmFsdWVzCiAKIGNs
YXNzIFdlYkRyaXZlckV4Y2VwdGlvbihFeGNlcHRpb24pOgogICAgIGh0dHBfc3RhdHVzID0gTm9u
ZQogICAgIHN0YXR1c19jb2RlID0gTm9uZQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3Nh
Z2U9Tm9uZSwgc3RhY2t0cmFjZT1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaHR0cF9z
dGF0dXM9Tm9uZSwgc3RhdHVzX2NvZGU9Tm9uZSwgbWVzc2FnZT1Ob25lLCBzdGFja3RyYWNlPU5v
bmUpOgogICAgICAgICBzdXBlcihXZWJEcml2ZXJFeGNlcHRpb24sIHNlbGYpCisgICAgICAgIHNl
bGYuaHR0cF9zdGF0dXMgPSBodHRwX3N0YXR1cworICAgICAgICBzZWxmLnN0YXR1c19jb2RlID0g
c3RhdHVzX2NvZGUKICAgICAgICAgc2VsZi5tZXNzYWdlID0gbWVzc2FnZQogICAgICAgICBzZWxm
LnN0YWNrdHJhY2UgPSBzdGFja3RyYWNlCiAKQEAgLTExMyw3ICsxMTYsNyBAQCBjbGFzcyBOb1N1
Y2hXaW5kb3dFeGNlcHRpb24oV2ViRHJpdmVyRXhjZXB0aW9uKToKIAogCiBjbGFzcyBTY3JpcHRU
aW1lb3V0RXhjZXB0aW9uKFdlYkRyaXZlckV4Y2VwdGlvbik6Ci0gICAgaHR0cF9zdGF0dXMgPSA0
MDgKKyAgICBodHRwX3N0YXR1cyA9IDUwMAogICAgIHN0YXR1c19jb2RlID0gInNjcmlwdCB0aW1l
b3V0IgogCiAKQEAgLTEyOCw3ICsxMzEsNyBAQCBjbGFzcyBTdGFsZUVsZW1lbnRSZWZlcmVuY2VF
eGNlcHRpb24oV2ViRHJpdmVyRXhjZXB0aW9uKToKIAogCiBjbGFzcyBUaW1lb3V0RXhjZXB0aW9u
KFdlYkRyaXZlckV4Y2VwdGlvbik6Ci0gICAgaHR0cF9zdGF0dXMgPSA0MDgKKyAgICBodHRwX3N0
YXR1cyA9IDUwMAogICAgIHN0YXR1c19jb2RlID0gInRpbWVvdXQiCiAKIApAQCAtMTcxLDYgKzE3
NCw4IEBAIGRlZiBmcm9tX3Jlc3BvbnNlKHJlc3BvbnNlKToKICAgICAiIiIKICAgICBpZiByZXNw
b25zZS5zdGF0dXMgPT0gMjAwOgogICAgICAgICByYWlzZSBVbmtub3duRXJyb3JFeGNlcHRpb24o
CisgICAgICAgICAgICByZXNwb25zZS5zdGF0dXMsCisgICAgICAgICAgICBOb25lLAogICAgICAg
ICAgICAgIlJlc3BvbnNlIGlzIG5vdCBhbiBlcnJvcjpcbiIKICAgICAgICAgICAgICIlcyIgJSBq
c29uLmR1bXBzKHJlc3BvbnNlLmJvZHkpKQogCkBAIC0xNzgsNiArMTgzLDggQEAgZGVmIGZyb21f
cmVzcG9uc2UocmVzcG9uc2UpOgogICAgICAgICB2YWx1ZSA9IHJlc3BvbnNlLmJvZHlbInZhbHVl
Il0KICAgICBlbHNlOgogICAgICAgICByYWlzZSBVbmtub3duRXJyb3JFeGNlcHRpb24oCisgICAg
ICAgICAgICByZXNwb25zZS5zdGF0dXMsCisgICAgICAgICAgICBOb25lLAogICAgICAgICAgICAg
IkV4cGVjdGVkICd2YWx1ZScga2V5IGluIHJlc3BvbnNlIGJvZHk6XG4iCiAgICAgICAgICAgICAi
JXMiICUganNvbi5kdW1wcyhyZXNwb25zZS5ib2R5KSkKIApAQCAtMTg3LDcgKzE5NCw3IEBAIGRl
ZiBmcm9tX3Jlc3BvbnNlKHJlc3BvbnNlKToKICAgICBzdGFjayA9IHZhbHVlWyJzdGFja3RyYWNl
Il0gb3IgTm9uZQogCiAgICAgY2xzID0gZ2V0KGNvZGUpCi0gICAgcmV0dXJuIGNscyhtZXNzYWdl
LCBzdGFja3RyYWNlPXN0YWNrKQorICAgIHJldHVybiBjbHMocmVzcG9uc2Uuc3RhdHVzLCBjb2Rl
LCBtZXNzYWdlLCBzdGFja3RyYWNlPXN0YWNrKQogCiAKIGRlZiBnZXQoZXJyb3JfY29kZSk6CkBA
IC0xOTksNiArMjA2LDYgQEAgZGVmIGdldChlcnJvcl9jb2RlKToKIAogCiBfZXJyb3JzID0gY29s
bGVjdGlvbnMuZGVmYXVsdGRpY3QoKQotZm9yIGl0ZW0gaW4gbG9jYWxzKCkudmFsdWVzKCk6Citm
b3IgaXRlbSBpbiBsaXN0KGl0ZXJ2YWx1ZXMobG9jYWxzKCkpKToKICAgICBpZiB0eXBlKGl0ZW0p
ID09IHR5cGUgYW5kIGlzc3ViY2xhc3MoaXRlbSwgV2ViRHJpdmVyRXhjZXB0aW9uKToKICAgICAg
ICAgX2Vycm9yc1tpdGVtLnN0YXR1c19jb2RlXSA9IGl0ZW0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRy
aXZlci90cmFuc3BvcnQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvdHJhbnNwb3J0LnB5CmluZGV4IDYxOWIz
ZmFlZTU0NDY0NmMyZWQ5N2RkZTA4MTVjYjU4NWFiNGFjMjguLjMyYmEzMWEyYWU5YTk5NmE1YzU3
ZmQwNDA2MTI5M2YzMTdlNWJmMDQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci90cmFuc3BvcnQu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93ZWJkcml2ZXIvd2ViZHJpdmVyL3RyYW5zcG9ydC5weQpAQCAtMSw4ICsxLDkgQEAKLWltcG9y
dCBodHRwbGliCiBpbXBvcnQganNvbgotaW1wb3J0IHVybHBhcnNlCitpbXBvcnQgc2VsZWN0Citm
cm9tIHNpeC5tb3Zlcy51cmxsaWIgaW1wb3J0IHBhcnNlIGFzIHVybHBhcnNlCitmcm9tIHNpeC5t
b3ZlcyBpbXBvcnQgaHR0cF9jbGllbnQgYXMgaHR0cGxpYgogCi1pbXBvcnQgZXJyb3IKK2Zyb20g
LiBpbXBvcnQgZXJyb3IKIAogZnJvbSBzaXggaW1wb3J0IHRleHRfdHlwZQogCkBAIC0xNSw5ICsx
NiwxMCBAQCBjbGFzcyBSZXNwb25zZShvYmplY3QpOgogICAgIGJvZHkgaGFzIGJlZW4gcmVhZCBh
bmQgcGFyc2VkIGFzIGFwcHJvcHJpYXRlLgogICAgICIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHN0YXR1cywgYm9keSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN0YXR1cywgYm9keSwg
aGVhZGVycyk6CiAgICAgICAgIHNlbGYuc3RhdHVzID0gc3RhdHVzCiAgICAgICAgIHNlbGYuYm9k
eSA9IGJvZHkKKyAgICAgICAgc2VsZi5oZWFkZXJzID0gaGVhZGVycwogCiAgICAgZGVmIF9fcmVw
cl9fKHNlbGYpOgogICAgICAgICBjbHNfbmFtZSA9IHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCkBA
IC0zOCwxMSArNDAsMTIgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICBkZWYgZnJvbV9o
dHRwKGNscywgaHR0cF9yZXNwb25zZSwgZGVjb2Rlcj1qc29uLkpTT05EZWNvZGVyLCAqKmt3YXJn
cyk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGJvZHkgPSBqc29uLmxvYWQoaHR0cF9yZXNw
b25zZSwgY2xzPWRlY29kZXIsICoqa3dhcmdzKQorICAgICAgICAgICAgaGVhZGVycyA9IGRpY3Qo
aHR0cF9yZXNwb25zZS5nZXRoZWFkZXJzKCkpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgog
ICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRmFpbGVkIHRvIGRlY29kZSByZXNwb25zZSBi
b2R5IGFzIEpTT046XG4iICsKICAgICAgICAgICAgICAgICBodHRwX3Jlc3BvbnNlLnJlYWQoKSkK
IAotICAgICAgICByZXR1cm4gY2xzKGh0dHBfcmVzcG9uc2Uuc3RhdHVzLCBib2R5KQorICAgICAg
ICByZXR1cm4gY2xzKGh0dHBfcmVzcG9uc2Uuc3RhdHVzLCBib2R5LCBoZWFkZXJzKQogCiAKIGNs
YXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0KToKQEAgLTgzLDkgKzg2LDM1IEBAIGNsYXNzIEhU
VFBXaXJlUHJvdG9jb2wob2JqZWN0KToKICAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAg
ICBzZWxmLnVybF9wcmVmaXggPSB1cmxfcHJlZml4CiAKKyAgICAgICAgc2VsZi5fY29ubiA9IE5v
bmUKICAgICAgICAgc2VsZi5fdGltZW91dCA9IHRpbWVvdXQKIAorICAgIGRlZiBfX2RlbF9fKHNl
bGYpOgorICAgICAgICBzZWxmLmNsb3NlKCkKKworICAgIGRlZiBjbG9zZShzZWxmKToKKyAgICAg
ICAgIiIiQ2xvc2VzIHRoZSBjdXJyZW50IEhUVFAgY29ubmVjdGlvbiwgaWYgdGhlcmUgaXMgb25l
LiIiIgorICAgICAgICBpZiBzZWxmLl9jb25uOgorICAgICAgICAgICAgc2VsZi5fY29ubi5jbG9z
ZSgpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgY29ubmVjdGlvbihzZWxmKToKKyAgICAgICAg
IiIiR2V0cyB0aGUgY3VycmVudCBIVFRQIGNvbm5lY3Rpb24sIG9yIGxhemlseSBjcmVhdGVzIG9u
ZS4iIiIKKyAgICAgICAgaWYgbm90IHNlbGYuX2Nvbm46CisgICAgICAgICAgICBjb25uX2t3YXJn
cyA9IHt9CisgICAgICAgICAgICBpZiBzZWxmLl90aW1lb3V0IGlzIG5vdCBOb25lOgorICAgICAg
ICAgICAgICAgIGNvbm5fa3dhcmdzWyJ0aW1lb3V0Il0gPSBzZWxmLl90aW1lb3V0CisKKyAgICAg
ICAgICAgIHNlbGYuX2Nvbm4gPSBodHRwbGliLkhUVFBDb25uZWN0aW9uKAorICAgICAgICAgICAg
ICAgIHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBzdHJpY3Q9VHJ1ZSwgKipjb25uX2t3YXJncykKKwor
ICAgICAgICByZXR1cm4gc2VsZi5fY29ubgorCiAgICAgZGVmIHVybChzZWxmLCBzdWZmaXgpOgor
ICAgICAgICAiIiIKKyAgICAgICAgRnJvbSB0aGUgcmVsYXRpdmUgcGF0aCB0byBhIGNvbW1hbmQg
ZW5kLXBvaW50LAorICAgICAgICBjcmFmdCBhIGZ1bGwgVVJMIHN1aXRhYmxlIHRvIGJlIHVzZWQg
aW4gYSByZXF1ZXN0IHRvIHRoZSBIVFRQRC4KKyAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiB1
cmxwYXJzZS51cmxqb2luKHNlbGYudXJsX3ByZWZpeCwgc3VmZml4KQogCiAgICAgZGVmIHNlbmQo
c2VsZiwKQEAgLTExMSw2ICsxNDAsOCBAQCBjbGFzcyBIVFRQV2lyZVByb3RvY29sKG9iamVjdCk6
CiAgICAgICAgIGVsZW1lbnQgcmVmZXJlbmNlcyB0byBgYHdlYmRyaXZlci5FbGVtZW50YGAgaXMg
cHJvdmlkZWQuCiAgICAgICAgIFVzZSBgYHdlYmRyaXZlci5wcm90b2NvbC5EZWNvZGVyYGAgdG8g
YWNoaWV2ZSB0aGlzIGJlaGF2aW91ci4KIAorICAgICAgICBUaGUgY2xpZW50IHdpbGwgYXR0ZW1w
dCB0byB1c2UgcGVyc2lzdGVudCBIVFRQIGNvbm5lY3Rpb25zLgorCiAgICAgICAgIDpwYXJhbSBt
ZXRob2Q6IGBHRVRgLCBgUE9TVGAsIG9yIGBERUxFVEVgLgogICAgICAgICA6cGFyYW0gdXJpOiBS
ZWxhdGl2ZSBlbmRwb2ludCBvZiB0aGUgcmVxdWVzdHMgVVJMIHBhdGguCiAgICAgICAgIDpwYXJh
bSBib2R5OiBCb2R5IG9mIHRoZSByZXF1ZXN0LiAgRGVmYXVsdHMgdG8gYW4gZW1wdHkKQEAgLTE0
MSwyNiArMTcyLDIzIEBAIGNsYXNzIEhUVFBXaXJlUHJvdG9jb2wob2JqZWN0KToKICAgICAgICAg
ICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJGYWlsZWQgdG8gZW5jb2RlIHJlcXVlc3QgYm9keSBh
cyBKU09OOlxuIgogICAgICAgICAgICAgICAgICAgICAiJXMiICUganNvbi5kdW1wcyhib2R5LCBp
bmRlbnQ9MikpCiAKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF5bG9hZCwgdGV4dF90eXBl
KToKLSAgICAgICAgICAgICAgICBwYXlsb2FkID0gYm9keS5lbmNvZGUoInV0Zi04IikKKyAgICAg
ICAgcmVzcG9uc2UgPSBzZWxmLl9yZXF1ZXN0KG1ldGhvZCwgdXJpLCBwYXlsb2FkLCBoZWFkZXJz
KQorICAgICAgICByZXR1cm4gUmVzcG9uc2UuZnJvbV9odHRwKHJlc3BvbnNlLCBkZWNvZGVyPWRl
Y29kZXIsICoqY29kZWNfa3dhcmdzKQorCisgICAgZGVmIF9yZXF1ZXN0KHNlbGYsIG1ldGhvZCwg
dXJpLCBwYXlsb2FkLCBoZWFkZXJzPU5vbmUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHBheWxv
YWQsIHRleHRfdHlwZSk6CisgICAgICAgICAgICBwYXlsb2FkID0gcGF5bG9hZC5lbmNvZGUoInV0
Zi04IikKIAogICAgICAgICBpZiBoZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICBoZWFkZXJz
ID0ge30KLSAgICAgICAgaGVhZGVycy51cGRhdGUoeydDb25uZWN0aW9uJzogJ2tlZXAtYWxpdmUn
fSkKKyAgICAgICAgaGVhZGVycy51cGRhdGUoeyJDb25uZWN0aW9uIjogImtlZXAtYWxpdmUifSkK
IAogICAgICAgICB1cmwgPSBzZWxmLnVybCh1cmkpCiAKLSAgICAgICAgY29ubl9rd2FyZ3MgPSB7
fQotICAgICAgICBpZiBzZWxmLl90aW1lb3V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgY29u
bl9rd2FyZ3NbInRpbWVvdXQiXSA9IHNlbGYuX3RpbWVvdXQKLQotICAgICAgICBjb25uID0gaHR0
cGxpYi5IVFRQQ29ubmVjdGlvbigKLSAgICAgICAgICAgIHNlbGYuaG9zdCwgc2VsZi5wb3J0LCBz
dHJpY3Q9VHJ1ZSwgKipjb25uX2t3YXJncykKLSAgICAgICAgY29ubi5yZXF1ZXN0KG1ldGhvZCwg
dXJsLCBwYXlsb2FkLCBoZWFkZXJzKQorICAgICAgICBpZiBzZWxmLl9oYXNfdW5yZWFkX2RhdGEo
KToKKyAgICAgICAgICAgIHNlbGYuY2xvc2UoKQorICAgICAgICBzZWxmLmNvbm5lY3Rpb24ucmVx
dWVzdChtZXRob2QsIHVybCwgcGF5bG9hZCwgaGVhZGVycykKKyAgICAgICAgcmV0dXJuIHNlbGYu
Y29ubmVjdGlvbi5nZXRyZXNwb25zZSgpCiAKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmVz
cG9uc2UgPSBjb25uLmdldHJlc3BvbnNlKCkKLSAgICAgICAgICAgIHJldHVybiBSZXNwb25zZS5m
cm9tX2h0dHAoCi0gICAgICAgICAgICAgICAgcmVzcG9uc2UsIGRlY29kZXI9ZGVjb2RlciwgKipj
b2RlY19rd2FyZ3MpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjb25uLmNsb3NlKCkK
KyAgICBkZWYgX2hhc191bnJlYWRfZGF0YShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYuX2Nv
bm4gYW5kIHNlbGYuX2Nvbm4uc29jayBhbmQgc2VsZWN0LnNlbGVjdChbc2VsZi5fY29ubi5zb2Nr
XSwgW10sIFtdLCAwKVswXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJkcml2ZXIvd2ViZHJpdmVyL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93ZWJk
cml2ZXIvd2ViZHJpdmVyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBlYmUzODUxM2YxZmMwNjZkNzg5Y2Y4ZDYzNDk3NTkxOTE0ZmI0MGJkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRy
aXZlci9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd2ViZHJpdmVyL3dlYmRyaXZlci9jbGllbnQucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIv
ZXJyb3IucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvcHJvdG9jb2wucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dlYmRyaXZlci93ZWJkcml2ZXIvdHJhbnNw
b3J0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVh
NTZiZWYwZTE1NDNmZDkwMWM3ZTZmMmY4YmMyMDIuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3
NWFkOGMyZTQ4YzUzOTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5CkBAIC0x
ICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRo
aXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0L2Jyb3dzZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC9icm93c2VyLnB5CmluZGV4IDk4MzRlNWQ1M2YzYWI3NTIyZjYxYjEy
ZDE0YWEyNzNhZDg5YWQ0MzguLmE5NGQ1NTA5Y2M4YmExYmZjYzRjYmNlYWZkOWY1MTFhNGY5ODA0
YWIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L2Jyb3dzZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvYnJvd3Nlci5weQpAQCAtMSwzNyArMSw2OSBAQAot
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmUKIGlt
cG9ydCBzaHV0aWwKIGltcG9ydCBzdGF0CitpbXBvcnQgZXJybm8KIGltcG9ydCBzdWJwcm9jZXNz
CiBpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCB1cmxwYXJzZQogZnJvbSBhYmMgaW1wb3J0IEFCQ01l
dGEsIGFic3RyYWN0bWV0aG9kCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZWRl
bHRhCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCiAKLWZyb20g
dXRpbHMgaW1wb3J0IGNhbGwsIGdldCwgdW50YXIsIHVuemlwCitpbXBvcnQgcmVxdWVzdHMKIAot
bG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCitmcm9tIHV0aWxzIGltcG9ydCBj
YWxsLCBnZXQsIHVudGFyLCB1bnppcAogCiB1bmFtZSA9IHBsYXRmb3JtLnVuYW1lKCkKIAorIyB0
aGUgcm9vdFVybCBmb3IgdGhlIGZpcmVmb3gtY2kgZGVwbG95bWVudCBvZiBUYXNrY2x1c3Rlcgor
IyAoYWZ0ZXIgTm92ZW1iZXIgOSwgaHR0cHM6Ly9maXJlZm94LWNpLXRjLnNlcnZpY2VzLm1vemls
bGEuY29tLykKK0ZJUkVGT1hfQ0lfUk9PVF9VUkwgPSAnaHR0cHM6Ly90YXNrY2x1c3Rlci5uZXQn
CisKKworZGVmIF9nZXRfZmlsZXZlcnNpb24oYmluYXJ5LCBsb2dnZXI9Tm9uZSk6CisgICAgY29t
bWFuZCA9ICIoR2V0LUl0ZW0gJyVzJykuVmVyc2lvbkluZm8uRmlsZVZlcnNpb24iICUgYmluYXJ5
LnJlcGxhY2UoIiciLCAiJyciKQorICAgIHRyeToKKyAgICAgICAgcmV0dXJuIGNhbGwoInBvd2Vy
c2hlbGwuZXhlIiwgY29tbWFuZCkuc3RyaXAoKQorICAgIGV4Y2VwdCAoc3VicHJvY2Vzcy5DYWxs
ZWRQcm9jZXNzRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICBpZiBsb2dnZXIgaXMgbm90IE5vbmU6
CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGNhbGwgJXMgaW4gUG93ZXJT
aGVsbCIgJSBjb21tYW5kKQorICAgICAgICByZXR1cm4gTm9uZQorCisKK2RlZiBoYW5kbGVfcmVt
b3ZlX3JlYWRvbmx5KGZ1bmMsIHBhdGgsIGV4Yyk6CisgICAgZXhjdmFsdWUgPSBleGNbMV0KKyAg
ICBpZiBmdW5jIGluIChvcy5ybWRpciwgb3MucmVtb3ZlKSBhbmQgZXhjdmFsdWUuZXJybm8gPT0g
ZXJybm8uRUFDQ0VTOgorICAgICAgICBvcy5jaG1vZChwYXRoLCBzdGF0LlNfSVJXWFUgfCBzdGF0
LlNfSVJXWEcgfCBzdGF0LlNfSVJXWE8pICAjIDA3NzcKKyAgICAgICAgZnVuYyhwYXRoKQorICAg
IGVsc2U6CisgICAgICAgIHJhaXNlCisKIAogY2xhc3MgQnJvd3NlcihvYmplY3QpOgogICAgIF9f
bWV0YWNsYXNzX18gPSBBQkNNZXRhCiAKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyKToK
KyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgICAgICIi
IkRvd25sb2FkIGEgcGFja2FnZSBvciBpbnN0YWxsZXIgZm9yIHRoZSBicm93c2VyIiIiCisgICAg
ICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorCiAgICAgQGFic3RyYWN0bWV0aG9kCiAgICAgZGVm
IGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lKToKICAgICAgICAgIiIiSW5zdGFsbCB0aGUgYnJvd3Nl
ci4iIiIKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKICAgICBAYWJzdHJhY3RtZXRo
b2QKLSAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lKToKKyAgICBkZWYg
aW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJf
YmluYXJ5PU5vbmUpOgogICAgICAgICAiIiJJbnN0YWxsIHRoZSBXZWJEcml2ZXIgaW1wbGVtZW50
YXRpb24gZm9yIHRoaXMgYnJvd3Nlci4iIiIKICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVk
CiAKICAgICBAYWJzdHJhY3RtZXRob2QKLSAgICBkZWYgZmluZF9iaW5hcnkoc2VsZik6CisgICAg
ZGVmIGZpbmRfYmluYXJ5KHNlbGYsIHZlbnZfcGF0aD1Ob25lLCBjaGFubmVsPU5vbmUpOgogICAg
ICAgICAiIiJGaW5kIHRoZSBiaW5hcnkgb2YgdGhlIGJyb3dzZXIuCiAKICAgICAgICAgSWYgdGhl
IFdlYkRyaXZlciBmb3IgdGhlIGJyb3dzZXIgaXMgYWJsZSB0byBmaW5kIHRoZSBiaW5hcnkgaXRz
ZWxmLCB0aGlzCkBAIC00MSwxMiArNzMsMTIgQEAgY2xhc3MgQnJvd3NlcihvYmplY3QpOgogICAg
ICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogICAgIEBhYnN0cmFjdG1ldGhvZAotICAgIGRl
ZiBmaW5kX3dlYmRyaXZlcihzZWxmKToKKyAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZiwgY2hh
bm5lbD1Ob25lKToKICAgICAgICAgIiIiRmluZCB0aGUgYmluYXJ5IG9mIHRoZSBXZWJEcml2ZXIu
IiIiCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAgICAgQGFic3RyYWN0bWV0aG9k
Ci0gICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUpOgorICAgIGRlZiB2ZXJzaW9uKHNl
bGYsIGJpbmFyeT1Ob25lLCB3ZWJkcml2ZXJfYmluYXJ5PU5vbmUpOgogICAgICAgICAiIiJSZXRy
aWV2ZSB0aGUgcmVsZWFzZSB2ZXJzaW9uIG9mIHRoZSBpbnN0YWxsZWQgYnJvd3Nlci4iIiIKICAg
ICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKQEAgLTY0LDk3ICs5NiwxNjAgQEAgY2xhc3Mg
RmlyZWZveChCcm93c2VyKToKIAogICAgIHByb2R1Y3QgPSAiZmlyZWZveCIKICAgICBiaW5hcnkg
PSAiYnJvd3NlcnMvZmlyZWZveC9maXJlZm94IgotICAgIHBsYXRmb3JtX2luaSA9ICJicm93c2Vy
cy9maXJlZm94L3BsYXRmb3JtLmluaSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRz
X2ZpcmVmb3gudHh0IgogCi0gICAgZGVmIHBsYXRmb3JtX3N0cmluZ19nZWNrb2RyaXZlcihzZWxm
KToKLSAgICAgICAgcGxhdGZvcm0gPSB7Ci0gICAgICAgICAgICAiTGludXgiOiAibGludXgiLAot
ICAgICAgICAgICAgIldpbmRvd3MiOiAid2luIiwKLSAgICAgICAgICAgICJEYXJ3aW4iOiAibWFj
b3MiCi0gICAgICAgIH0uZ2V0KHVuYW1lWzBdKQorICAgIHBsYXRmb3JtID0geworICAgICAgICAi
TGludXgiOiAibGludXgiLAorICAgICAgICAiV2luZG93cyI6ICJ3aW4iLAorICAgICAgICAiRGFy
d2luIjogIm1hY29zIgorICAgIH0uZ2V0KHVuYW1lWzBdKQogCi0gICAgICAgIGlmIHBsYXRmb3Jt
IGlzIE5vbmU6CisgICAgYXBwbGljYXRpb25fbmFtZSA9IHsKKyAgICAgICAgInN0YWJsZSI6ICJG
aXJlZm94LmFwcCIsCisgICAgICAgICJiZXRhIjogIkZpcmVmb3guYXBwIiwKKyAgICAgICAgIm5p
Z2h0bHkiOiAiRmlyZWZveCBOaWdodGx5LmFwcCIKKyAgICB9CisKKyAgICBkZWYgcGxhdGZvcm1f
c3RyaW5nX2dlY2tvZHJpdmVyKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnBsYXRmb3JtIGlzIE5v
bmU6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmFibGUgdG8gY29uc3RydWN0IGEg
dmFsaWQgR2Vja29kcml2ZXIgcGFja2FnZSBuYW1lIGZvciBjdXJyZW50IHBsYXRmb3JtIikKIAot
ICAgICAgICBpZiBwbGF0Zm9ybSBpbiAoImxpbnV4IiwgIndpbiIpOgorICAgICAgICBpZiBzZWxm
LnBsYXRmb3JtIGluICgibGludXgiLCAid2luIik6CiAgICAgICAgICAgICBiaXRzID0gIjY0IiBp
ZiB1bmFtZVs0XSA9PSAieDg2XzY0IiBlbHNlICIzMiIKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIGJpdHMgPSAiIgogCi0gICAgICAgIHJldHVybiAiJXMlcyIgJSAocGxhdGZvcm0sIGJpdHMp
CisgICAgICAgIHJldHVybiAiJXMlcyIgJSAoc2VsZi5wbGF0Zm9ybSwgYml0cykKIAotICAgIGRl
ZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSk6Ci0gICAgICAgICIiIkluc3RhbGwgRmlyZWZveC4i
IiIKKyAgICBkZWYgX2dldF9kZXN0KHNlbGYsIGRlc3QsIGNoYW5uZWwpOgorICAgICAgICBpZiBk
ZXN0IGlzIE5vbmU6CisgICAgICAgICAgICAjIG9zLmdldGN3ZCgpIGRvZXNuJ3QgaW5jbHVkZSB0
aGUgdmVudiBwYXRoCisgICAgICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKG9zLmdldGN3ZCgp
LCAiX3ZlbnYiKQogCi0gICAgICAgIGZyb20gbW96ZG93bmxvYWQgaW1wb3J0IEZhY3RvcnlTY3Jh
cGVyCi0gICAgICAgIGltcG9ydCBtb3ppbnN0YWxsCisgICAgICAgIGRlc3QgPSBvcy5wYXRoLmpv
aW4oZGVzdCwgImJyb3dzZXJzIiwgY2hhbm5lbCkKIAotICAgICAgICBwbGF0Zm9ybSA9IHsKLSAg
ICAgICAgICAgICJMaW51eCI6ICJsaW51eCIsCi0gICAgICAgICAgICAiV2luZG93cyI6ICJ3aW4i
LAotICAgICAgICAgICAgIkRhcndpbiI6ICJtYWMiCi0gICAgICAgIH0uZ2V0KHVuYW1lWzBdKQor
ICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVzdCk6CisgICAgICAgICAgICBvcy5tYWtl
ZGlycyhkZXN0KQogCi0gICAgICAgIGlmIHBsYXRmb3JtIGlzIE5vbmU6Ci0gICAgICAgICAgICBy
YWlzZSBWYWx1ZUVycm9yKCJVbmFibGUgdG8gY29uc3RydWN0IGEgdmFsaWQgRmlyZWZveCBwYWNr
YWdlIG5hbWUgZm9yIGN1cnJlbnQgcGxhdGZvcm0iKQorICAgICAgICByZXR1cm4gZGVzdAorCisg
ICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAg
ICAgICBwcm9kdWN0ID0geworICAgICAgICAgICAgIm5pZ2h0bHkiOiAiZmlyZWZveC1uaWdodGx5
LWxhdGVzdC1zc2wiLAorICAgICAgICAgICAgImJldGEiOiAiZmlyZWZveC1iZXRhLWxhdGVzdC1z
c2wiLAorICAgICAgICAgICAgInN0YWJsZSI6ICJmaXJlZm94LWxhdGVzdC1zc2wiCisgICAgICAg
IH0KKworICAgICAgICBvc19idWlsZHMgPSB7CisgICAgICAgICAgICAoImxpbnV4IiwgIng4NiIp
OiAibGludXgiLAorICAgICAgICAgICAgKCJsaW51eCIsICJ4ODZfNjQiKTogImxpbnV4NjQiLAor
ICAgICAgICAgICAgKCJ3aW4iLCAieDg2Iik6ICJ3aW4iLAorICAgICAgICAgICAgKCJ3aW4iLCAi
QU1ENjQiKTogIndpbjY0IiwKKyAgICAgICAgICAgICgibWFjb3MiLCAieDg2XzY0Iik6ICJvc3gi
LAorICAgICAgICB9CisgICAgICAgIG9zX2tleSA9IChzZWxmLnBsYXRmb3JtLCB1bmFtZVs0XSkK
IAogICAgICAgICBpZiBkZXN0IGlzIE5vbmU6Ci0gICAgICAgICAgICAjIG9zLmdldGN3ZCgpIGRv
ZXNuJ3QgaW5jbHVkZSB0aGUgdmVudiBwYXRoCi0gICAgICAgICAgICBkZXN0ID0gb3MucGF0aC5q
b2luKG9zLmdldGN3ZCgpLCAiX3ZlbnYiKQorICAgICAgICAgICAgZGVzdCA9IHNlbGYuX2dldF9k
ZXN0KE5vbmUsIGNoYW5uZWwpCisKKyAgICAgICAgaWYgY2hhbm5lbCBub3QgaW4gcHJvZHVjdDoK
KyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXNlZCByZWxlYXNlIGNoYW5u
ZWw6ICVzIiAlIGNoYW5uZWwpCisKKyAgICAgICAgaWYgb3Nfa2V5IG5vdCBpbiBvc19idWlsZHM6
CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbnN1cHBvcnRlZCBwbGF0Zm9ybTogJXMg
JXMiICUgb3Nfa2V5KQorCisgICAgICAgIHVybCA9ICJodHRwczovL2Rvd25sb2FkLm1vemlsbGEu
b3JnLz9wcm9kdWN0PSVzJm9zPSVzJmxhbmc9ZW4tVVMiICUgKHByb2R1Y3RbY2hhbm5lbF0sCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIG9zX2J1aWxkc1tvc19rZXldKQorICAgICAgICBzZWxmLmxvZ2dl
ci5pbmZvKCJEb3dubG9hZGluZyBGaXJlZm94IGZyb20gJXMiICUgdXJsKQorICAgICAgICByZXNw
ID0gcmVxdWVzdHMuZ2V0KHVybCkKKworICAgICAgICBmaWxlbmFtZSA9IE5vbmUKKworICAgICAg
ICBjb250ZW50X2Rpc3Bvc2l0aW9uID0gcmVzcC5oZWFkZXJzLmdldCgnY29udGVudC1kaXNwb3Np
dGlvbicpCisgICAgICAgIGlmIGNvbnRlbnRfZGlzcG9zaXRpb246CisgICAgICAgICAgICBmaWxl
bmFtZXMgPSByZS5maW5kYWxsKCJmaWxlbmFtZT0oLispIiwgY29udGVudF9kaXNwb3NpdGlvbikK
KyAgICAgICAgICAgIGlmIGZpbGVuYW1lczoKKyAgICAgICAgICAgICAgICBmaWxlbmFtZSA9IGZp
bGVuYW1lc1swXQorCisgICAgICAgIGlmIG5vdCBmaWxlbmFtZToKKyAgICAgICAgICAgIGZpbGVu
YW1lID0gdXJscGFyc2UudXJsc3BsaXQocmVzcC51cmwpLnBhdGgucnNwbGl0KCIvIiwgMSlbMV0K
IAotICAgICAgICBkZXN0ID0gb3MucGF0aC5qb2luKGRlc3QsICJicm93c2VycyIpCisgICAgICAg
IGlmIG5vdCBmaWxlbmFtZToKKyAgICAgICAgICAgIGZpbGVuYW1lID0gImZpcmVmb3gudGFyLmJ6
MiIKIAotICAgICAgICBmaWxlbmFtZSA9IEZhY3RvcnlTY3JhcGVyKCJkYWlseSIsIGJyYW5jaD0i
bW96aWxsYS1jZW50cmFsIiwgZGVzdGluYXRpb249ZGVzdCkuZG93bmxvYWQoKQorICAgICAgICBp
bnN0YWxsZXJfcGF0aCA9IG9zLnBhdGguam9pbihkZXN0LCBmaWxlbmFtZSkKKworICAgICAgICB3
aXRoIG9wZW4oaW5zdGFsbGVyX3BhdGgsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRl
KHJlc3AuY29udGVudCkKKworICAgICAgICByZXR1cm4gaW5zdGFsbGVyX3BhdGgKKworICAgIGRl
ZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgICAgICAi
IiJJbnN0YWxsIEZpcmVmb3guIiIiCisgICAgICAgIGltcG9ydCBtb3ppbnN0YWxsCisKKyAgICAg
ICAgZGVzdCA9IHNlbGYuX2dldF9kZXN0KGRlc3QsIGNoYW5uZWwpCisKKyAgICAgICAgZmlsZW5h
bWUgPSBvcy5wYXRoLmJhc2VuYW1lKGRlc3QpCisKKyAgICAgICAgaW5zdGFsbGVyX3BhdGggPSBz
ZWxmLmRvd25sb2FkKGRlc3QsIGNoYW5uZWwpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAg
bW96aW5zdGFsbC5pbnN0YWxsKGZpbGVuYW1lLCBkZXN0KQorICAgICAgICAgICAgbW96aW5zdGFs
bC5pbnN0YWxsKGluc3RhbGxlcl9wYXRoLCBkZXN0KQogICAgICAgICBleGNlcHQgbW96aW5zdGFs
bC5tb3ppbnN0YWxsLkluc3RhbGxFcnJvcjoKLSAgICAgICAgICAgIGlmIHBsYXRmb3JtID09ICJt
YWMiIGFuZCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZGVzdCwgIkZpcmVmb3ggTmlnaHRs
eS5hcHAiKSk6CisgICAgICAgICAgICBpZiBzZWxmLnBsYXRmb3JtID09ICJtYWNvcyIgYW5kIG9z
LnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihkZXN0LCBzZWxmLmFwcGxpY2F0aW9uX25hbWUuZ2V0
KGNoYW5uZWwsICJGaXJlZm94IE5pZ2h0bHkuYXBwIikpKToKICAgICAgICAgICAgICAgICAjIG1v
emluc3RhbGwgd2lsbCBmYWlsIGlmIG5pZ2h0bHkgaXMgYWxyZWFkeSBpbnN0YWxsZWQgaW4gdGhl
IHZlbnYgYmVjYXVzZQogICAgICAgICAgICAgICAgICMgbWFjIGluc3RhbGxhdGlvbiB1c2VzIHNo
dXRpbC5jb3B5X3RyZWUKLSAgICAgICAgICAgICAgICBtb3ppbnN0YWxsLnVuaW5zdGFsbChvcy5w
YXRoLmpvaW4oZGVzdCwgIkZpcmVmb3ggTmlnaHRseS5hcHAiKSkKKyAgICAgICAgICAgICAgICBt
b3ppbnN0YWxsLnVuaW5zdGFsbChvcy5wYXRoLmpvaW4oZGVzdCwgc2VsZi5hcHBsaWNhdGlvbl9u
YW1lLmdldChjaGFubmVsLCAiRmlyZWZveCBOaWdodGx5LmFwcCIpKSkKICAgICAgICAgICAgICAg
ICBtb3ppbnN0YWxsLmluc3RhbGwoZmlsZW5hbWUsIGRlc3QpCiAgICAgICAgICAgICBlbHNlOgog
ICAgICAgICAgICAgICAgIHJhaXNlCiAKLSAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQorICAg
ICAgICBvcy5yZW1vdmUoaW5zdGFsbGVyX3BhdGgpCiAgICAgICAgIHJldHVybiBzZWxmLmZpbmRf
YmluYXJ5X3BhdGgoZGVzdCkKIAotICAgIGRlZiBmaW5kX2JpbmFyeV9wYXRoKHNlbGYsIHBhdGg9
Tm9uZSk6CisgICAgZGVmIGZpbmRfYmluYXJ5X3BhdGgoc2VsZiwgcGF0aD1Ob25lLCBjaGFubmVs
PSJuaWdodGx5Iik6CiAgICAgICAgICIiIkxvb2tzIGZvciB0aGUgZmlyZWZveCBiaW5hcnkgaW4g
dGhlIHZpcnR1YWwgZW52aXJvbm1lbnQiIiIKIAotICAgICAgICBwbGF0Zm9ybSA9IHsKLSAgICAg
ICAgICAgICJMaW51eCI6ICJsaW51eCIsCi0gICAgICAgICAgICAiV2luZG93cyI6ICJ3aW4iLAot
ICAgICAgICAgICAgIkRhcndpbiI6ICJtYWMiCi0gICAgICAgIH0uZ2V0KHVuYW1lWzBdKQotCiAg
ICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgICNvcy5nZXRjd2QoKSBkb2Vzbid0
IGluY2x1ZGUgdGhlIHZlbnYgcGF0aAotICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihv
cy5nZXRjd2QoKSwgIl92ZW52IiwgImJyb3dzZXJzIikKKyAgICAgICAgICAgICMgb3MuZ2V0Y3dk
KCkgZG9lc24ndCBpbmNsdWRlIHRoZSB2ZW52IHBhdGgKKyAgICAgICAgICAgIHBhdGggPSBvcy5w
YXRoLmpvaW4ob3MuZ2V0Y3dkKCksICJfdmVudiIsICJicm93c2VycyIsIGNoYW5uZWwpCiAKICAg
ICAgICAgYmluYXJ5ID0gTm9uZQogCi0gICAgICAgIGlmIHBsYXRmb3JtID09ICJsaW51eCI6Cisg
ICAgICAgIGlmIHNlbGYucGxhdGZvcm0gPT0gImxpbnV4IjoKICAgICAgICAgICAgIGJpbmFyeSA9
IGZpbmRfZXhlY3V0YWJsZSgiZmlyZWZveCIsIG9zLnBhdGguam9pbihwYXRoLCAiZmlyZWZveCIp
KQotICAgICAgICBlbGlmIHBsYXRmb3JtID09ICJ3aW4iOgorICAgICAgICBlbGlmIHNlbGYucGxh
dGZvcm0gPT0gIndpbiI6CiAgICAgICAgICAgICBpbXBvcnQgbW96aW5zdGFsbAotICAgICAgICAg
ICAgYmluYXJ5ID0gbW96aW5zdGFsbC5nZXRfYmluYXJ5KHBhdGgsICJmaXJlZm94IikKLSAgICAg
ICAgZWxpZiBwbGF0Zm9ybSA9PSAibWFjIjoKLSAgICAgICAgICAgIGJpbmFyeSA9IGZpbmRfZXhl
Y3V0YWJsZSgiZmlyZWZveCIsIG9zLnBhdGguam9pbihwYXRoLCAiRmlyZWZveCBOaWdodGx5LmFw
cCIsICJDb250ZW50cyIsICJNYWNPUyIpKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAg
ICAgIGJpbmFyeSA9IG1vemluc3RhbGwuZ2V0X2JpbmFyeShwYXRoLCAiZmlyZWZveCIpCisgICAg
ICAgICAgICBleGNlcHQgbW96aW5zdGFsbC5JbnZhbGlkQmluYXJ5OgorICAgICAgICAgICAgICAg
ICMgaWdub3JlIHRoZSBjYXNlIHdoZXJlIHdlIGZhaWwgdG8gZ2V0IGEgYmluYXJ5CisgICAgICAg
ICAgICAgICAgcGFzcworICAgICAgICBlbGlmIHNlbGYucGxhdGZvcm0gPT0gIm1hY29zIjoKKyAg
ICAgICAgICAgIGJpbmFyeSA9IGZpbmRfZXhlY3V0YWJsZSgiZmlyZWZveCIsIG9zLnBhdGguam9p
bihwYXRoLCBzZWxmLmFwcGxpY2F0aW9uX25hbWUuZ2V0KGNoYW5uZWwsICJGaXJlZm94IE5pZ2h0
bHkuYXBwIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIkNvbnRlbnRzIiwgIk1hY09TIikpCiAKICAgICAgICAgcmV0dXJuIGJp
bmFyeQogCi0gICAgZGVmIGZpbmRfYmluYXJ5KHNlbGYsIHZlbnZfcGF0aD1Ob25lKToKKyAgICBk
ZWYgZmluZF9iaW5hcnkoc2VsZiwgdmVudl9wYXRoPU5vbmUsIGNoYW5uZWw9Im5pZ2h0bHkiKToK
ICAgICAgICAgaWYgdmVudl9wYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICB2ZW52X3BhdGggPSBv
cy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksICJfdmVudiIpCiAKLSAgICAgICAgYmluYXJ5ID0gc2Vs
Zi5maW5kX2JpbmFyeV9wYXRoKG9zLnBhdGguam9pbih2ZW52X3BhdGgsICJicm93c2VycyIpKQor
ICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHZlbnZfcGF0aCwgImJyb3dzZXJzIiwgY2hhbm5l
bCkKKyAgICAgICAgYmluYXJ5ID0gc2VsZi5maW5kX2JpbmFyeV9wYXRoKHBhdGgsIGNoYW5uZWwp
CisKKyAgICAgICAgaWYgbm90IGJpbmFyeSBhbmQgc2VsZi5wbGF0Zm9ybSA9PSAid2luIjoKKyAg
ICAgICAgICAgIHdpbnBhdGhzID0gW29zLnBhdGguZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQ
cm9ncmFtIEZpbGVzXFxNb3ppbGxhIEZpcmVmb3giKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
IG9zLnBhdGguZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzICh4ODYpXFxN
b3ppbGxhIEZpcmVmb3giKV0KKyAgICAgICAgICAgIGZvciB3aW5wYXRoIGluIHdpbnBhdGhzOgor
ICAgICAgICAgICAgICAgIGJpbmFyeSA9IHNlbGYuZmluZF9iaW5hcnlfcGF0aCh3aW5wYXRoLCBj
aGFubmVsKQorICAgICAgICAgICAgICAgIGlmIGJpbmFyeSBpcyBub3QgTm9uZToKKyAgICAgICAg
ICAgICAgICAgICAgYnJlYWsKIAotICAgICAgICBpZiBub3QgYmluYXJ5IGFuZCB1bmFtZVswXSA9
PSAiRGFyd2luIjoKLSAgICAgICAgICAgIG1hY3BhdGhzID0gWyIvQXBwbGljYXRpb25zL0ZpcmVm
b3hOaWdodGx5LmFwcC9Db250ZW50cy9NYWNPUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBv
cy5wYXRoLmV4cGFuZHVzZXIoIn4vQXBwbGljYXRpb25zL0ZpcmVmb3hOaWdodGx5LmFwcC9Db250
ZW50cy9NYWNPUyIpLAorICAgICAgICBpZiBub3QgYmluYXJ5IGFuZCBzZWxmLnBsYXRmb3JtID09
ICJtYWNvcyI6CisgICAgICAgICAgICBtYWNwYXRocyA9IFsiL0FwcGxpY2F0aW9ucy9GaXJlZm94
IE5pZ2h0bHkuYXBwL0NvbnRlbnRzL01hY09TIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9z
LnBhdGguZXhwYW5kdXNlcigifi9BcHBsaWNhdGlvbnMvRmlyZWZveCBOaWdodGx5LmFwcC9Db250
ZW50cy9NYWNPUyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIi9BcHBsaWNhdGlvbnMvRmly
ZWZveCBEZXZlbG9wZXIgRWRpdGlvbi5hcHAvQ29udGVudHMvTWFjT1MiLAogICAgICAgICAgICAg
ICAgICAgICAgICAgb3MucGF0aC5leHBhbmR1c2VyKCJ+L0FwcGxpY2F0aW9ucy9GaXJlZm94IERl
dmVsb3BlciBFZGl0aW9uLmFwcC9Db250ZW50cy9NYWNPUyIpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgIi9BcHBsaWNhdGlvbnMvRmlyZWZveC5hcHAvQ29udGVudHMvTWFjT1MiLApAQCAtMTcw
LDExICsyNjUsMTEgQEAgY2xhc3MgRmlyZWZveChCcm93c2VyKToKICAgICAgICAgcGF0aCA9IGZp
bmRfZXhlY3V0YWJsZSgiY2VydHV0aWwiKQogICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAg
ICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBpZiBvcy5wYXRoLnNwbGl0ZHJpdmUocGF0aClb
MV0uc3BsaXQob3MucGF0aC5zZXApID09IFsiIiwgIldpbmRvd3MiLCAic3lzdGVtMzIiLCAiY2Vy
dHV0aWwuZXhlIl06CisgICAgICAgIGlmIG9zLnBhdGguc3BsaXRkcml2ZShvcy5wYXRoLm5vcm1j
YXNlKHBhdGgpKVsxXS5zcGxpdChvcy5wYXRoLnNlcCkgPT0gWyIiLCAid2luZG93cyIsICJzeXN0
ZW0zMiIsICJjZXJ0dXRpbC5leGUiXToKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAg
IHJldHVybiBwYXRoCiAKLSAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZik6CisgICAgZGVmIGZp
bmRfd2ViZHJpdmVyKHNlbGYsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJldHVybiBmaW5kX2V4
ZWN1dGFibGUoImdlY2tvZHJpdmVyIikKIAogICAgIGRlZiBnZXRfdmVyc2lvbl9hbmRfY2hhbm5l
bChzZWxmLCBiaW5hcnkpOgpAQCAtMTkwLDI2ICsyODUsNDcgQEAgY2xhc3MgRmlyZWZveChCcm93
c2VyKToKICAgICAgICAgaWYgY2hhbm5lbCA9PSAic3RhYmxlIjoKICAgICAgICAgICAgIHJlcG8g
PSAiaHR0cHM6Ly9oZy5tb3ppbGxhLm9yZy9yZWxlYXNlcy9tb3ppbGxhLXJlbGVhc2UiCiAgICAg
ICAgICAgICB0YWcgPSAiRklSRUZPWF8lc19SRUxFQVNFIiAlIHZlcnNpb24ucmVwbGFjZSgiLiIs
ICJfIikKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJlcG8gPSAiaHR0cHM6Ly9oZy5tb3pp
bGxhLm9yZy9tb3ppbGxhLWNlbnRyYWwiCi0gICAgICAgICAgICBpZiBjaGFubmVsID09ICJiZXRh
IjoKLSAgICAgICAgICAgICAgICB0YWcgPSAiRklSRUZPWF8lc19CRVRBIiAlIHZlcnNpb24uc3Bs
aXQoIi4iLCAxKVswXQorICAgICAgICBlbGlmIGNoYW5uZWwgPT0gImJldGEiOgorICAgICAgICAg
ICAgcmVwbyA9ICJodHRwczovL2hnLm1vemlsbGEub3JnL3JlbGVhc2VzL21vemlsbGEtYmV0YSIK
KyAgICAgICAgICAgIG1ham9yX3ZlcnNpb24gPSB2ZXJzaW9uLnNwbGl0KCIuIiwgMSlbMF0KKyAg
ICAgICAgICAgICMgRm9yIGJldGEgd2UgaGF2ZSBhIGRpZmZlcmVudCBmb3JtYXQgZm9yIGJldGFz
IHRoYXQgYXJlIG5vdyBpbiBzdGFibGUgcmVsZWFzZXMKKyAgICAgICAgICAgICMgdnMgdGhvc2Ug
dGhhdCBhcmUgbm90CisgICAgICAgICAgICB0YWdzID0gZ2V0KCJodHRwczovL2hnLm1vemlsbGEu
b3JnL3JlbGVhc2VzL21vemlsbGEtYmV0YS9qc29uLXRhZ3MiKS5qc29uKClbInRhZ3MiXQorICAg
ICAgICAgICAgdGFncyA9IHtpdGVtWyJ0YWciXSBmb3IgaXRlbSBpbiB0YWdzfQorICAgICAgICAg
ICAgZW5kX3RhZyA9ICJGSVJFRk9YX0JFVEFfJXNfRU5EIiAlIG1ham9yX3ZlcnNpb24KKyAgICAg
ICAgICAgIGlmIGVuZF90YWcgaW4gdGFnczoKKyAgICAgICAgICAgICAgICB0YWcgPSBlbmRfdGFn
CiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgQWx3YXlzIHVzZSB0aXAgYXMg
dGhlIHRhZyBmb3IgbmlnaHRseTsgdGhpcyBpc24ndCBxdWl0ZSByaWdodAotICAgICAgICAgICAg
ICAgICMgYnV0IHRvIGRvIGJldHRlciB3ZSBuZWVkIHRoZSBhY3R1YWwgYnVpbGQgcmV2aXNpb24s
IHdoaWNoIHdlCi0gICAgICAgICAgICAgICAgIyBjYW4gZ2V0IGlmIHdlIGhhdmUgYW4gYXBwbGlj
YXRpb24uaW5pIGZpbGUKICAgICAgICAgICAgICAgICB0YWcgPSAidGlwIgorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmVwbyA9ICJodHRwczovL2hnLm1vemlsbGEub3JnL21vemlsbGEtY2Vu
dHJhbCIKKyAgICAgICAgICAgICMgQWx3YXlzIHVzZSB0aXAgYXMgdGhlIHRhZyBmb3IgbmlnaHRs
eTsgdGhpcyBpc24ndCBxdWl0ZSByaWdodAorICAgICAgICAgICAgIyBidXQgdG8gZG8gYmV0dGVy
IHdlIG5lZWQgdGhlIGFjdHVhbCBidWlsZCByZXZpc2lvbiwgd2hpY2ggd2UKKyAgICAgICAgICAg
ICMgY2FuIGdldCBpZiB3ZSBoYXZlIGFuIGFwcGxpY2F0aW9uLmluaSBmaWxlCisgICAgICAgICAg
ICB0YWcgPSAidGlwIgogCiAgICAgICAgIHJldHVybiAiJXMvYXJjaGl2ZS8lcy56aXAvdGVzdGlu
Zy9wcm9maWxlcy8iICUgKHJlcG8sIHRhZykKIAotICAgIGRlZiBpbnN0YWxsX3ByZWZzKHNlbGYs
IGJpbmFyeSwgZGVzdD1Ob25lKToKLSAgICAgICAgdmVyc2lvbiwgY2hhbm5lbCA9IHNlbGYuZ2V0
X3ZlcnNpb25fYW5kX2NoYW5uZWwoYmluYXJ5KQorICAgIGRlZiBpbnN0YWxsX3ByZWZzKHNlbGYs
IGJpbmFyeSwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgICAgICBpZiBiaW5hcnk6Cisg
ICAgICAgICAgICB2ZXJzaW9uLCBjaGFubmVsXyA9IHNlbGYuZ2V0X3ZlcnNpb25fYW5kX2NoYW5u
ZWwoYmluYXJ5KQorICAgICAgICAgICAgaWYgY2hhbm5lbCBpcyBub3QgTm9uZSBhbmQgY2hhbm5l
bCAhPSBjaGFubmVsXzoKKyAgICAgICAgICAgICAgICAjIEJldGEgZG9lc24ndCBhbHdheXMgc2Vl
bSB0byBoYXZlIHRoZSBiIGluIHRoZSB2ZXJzaW9uIHN0cmluZywgc28gYWxsb3cgdGhlCisgICAg
ICAgICAgICAgICAgIyBtYW51YWxseSBzdXBwbGllZCB2YWx1ZSB0byBvdmVycmlkZSB0aGUgb25l
IGZyb20gdGhlIGJpbmFyeQorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIlN1
cHBsaWVkIGNoYW5uZWwgZG9lc24ndCBtYXRjaCBiaW5hcnksIHVzaW5nIHN1cHBsaWVkIGNoYW5u
ZWwiKQorICAgICAgICAgICAgZWxpZiBjaGFubmVsIGlzIE5vbmU6CisgICAgICAgICAgICAgICAg
Y2hhbm5lbCA9IGNoYW5uZWxfCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB2ZXJzaW9uID0g
Tm9uZQorCiAgICAgICAgIGlmIGRlc3QgaXMgTm9uZToKLSAgICAgICAgICAgIGRlc3QgPSBvcy5w
d2QKKyAgICAgICAgICAgIGRlc3QgPSBvcy5jdXJkaXIKIAotICAgICAgICBkZXN0ID0gb3MucGF0
aC5qb2luKGRlc3QsICJwcm9maWxlcyIsIGNoYW5uZWwsIHZlcnNpb24pCisgICAgICAgIGRlc3Qg
PSBvcy5wYXRoLmpvaW4oZGVzdCwgInByb2ZpbGVzIiwgY2hhbm5lbCkKKyAgICAgICAgaWYgdmVy
c2lvbjoKKyAgICAgICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oZGVzdCwgdmVyc2lvbikKICAg
ICAgICAgaGF2ZV9jYWNoZSA9IEZhbHNlCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGRlc3Qp
OgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkZXN0KSBhbmQgbGVuKG9zLmxpc3RkaXIoZGVz
dCkpID4gMDoKICAgICAgICAgICAgIGlmIGNoYW5uZWwgIT0gIm5pZ2h0bHkiOgogICAgICAgICAg
ICAgICAgIGhhdmVfY2FjaGUgPSBUcnVlCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjI1LDcgKzM0
MSw3IEBAIGNsYXNzIEZpcmVmb3goQnJvd3Nlcik6CiAKICAgICAgICAgICAgIHVybCA9IHNlbGYu
Z2V0X3Byb2ZpbGVfYnVuZGxlX3VybCh2ZXJzaW9uLCBjaGFubmVsKQogCi0gICAgICAgICAgICBw
cmludCgiSW5zdGFsbGluZyB0ZXN0IHByZWZzIGZyb20gJXMiICUgdXJsKQorICAgICAgICAgICAg
c2VsZi5sb2dnZXIuaW5mbygiSW5zdGFsbGluZyB0ZXN0IHByZWZzIGZyb20gJXMiICUgdXJsKQog
ICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIGV4dHJhY3RfZGlyID0gdGVtcGZpbGUu
bWtkdGVtcCgpCiAgICAgICAgICAgICAgICAgdW56aXAoZ2V0KHVybCkucmF3LCBkZXN0PWV4dHJh
Y3RfZGlyKQpAQCAtMjM3LDcgKzM1Myw3IEBAIGNsYXNzIEZpcmVmb3goQnJvd3Nlcik6CiAgICAg
ICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoZXh0cmFjdF9k
aXIpCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwcmludCgiVXNpbmcgY2FjaGVkIHRlc3Qg
cHJlZnMgZnJvbSAlcyIgJSBkZXN0KQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiVXNp
bmcgY2FjaGVkIHRlc3QgcHJlZnMgZnJvbSAlcyIgJSBkZXN0KQogCiAgICAgICAgIHJldHVybiBk
ZXN0CiAKQEAgLTI0Niw3ICszNjIsNyBAQCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogICAgICAg
ICAjIFRoaXMgaXMgdXNlZCByYXRoZXIgdGhhbiBhbiBBUEkgY2FsbCB0byBhdm9pZCByYXRlIGxp
bWl0cwogICAgICAgICB0YWdzID0gY2FsbCgiZ2l0IiwgImxzLXJlbW90ZSIsICItLXRhZ3MiLCAi
LS1yZWZzIiwKICAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vZ2l0aHViLmNvbS9tb3ppbGxh
L2dlY2tvZHJpdmVyLmdpdCIpCi0gICAgICAgIHJlbGVhc2VfcmUgPSByZS5jb21waWxlKCIuKnJl
ZnMvdGFncy92KFxkKylcLihcZCspXC4oXGQrKSIpCisgICAgICAgIHJlbGVhc2VfcmUgPSByZS5j
b21waWxlKHIiLipyZWZzL3RhZ3MvdihcZCspXC4oXGQrKVwuKFxkKykiKQogICAgICAgICBsYXRl
c3RfcmVsZWFzZSA9IDAKICAgICAgICAgZm9yIGl0ZW0gaW4gdGFncy5zcGxpdCgiXG4iKToKICAg
ICAgICAgICAgIG0gPSByZWxlYXNlX3JlLm1hdGNoKGl0ZW0pCkBAIC0yNTcsMTQgKzM3MywyMSBA
QCBjbGFzcyBGaXJlZm94KEJyb3dzZXIpOgogICAgICAgICBhc3NlcnQgbGF0ZXN0X3JlbGVhc2Ug
IT0gMAogICAgICAgICByZXR1cm4gInYlcy4lcy4lcyIgJSB0dXBsZShzdHIoaXRlbSkgZm9yIGl0
ZW0gaW4gbGF0ZXN0X3JlbGVhc2UpCiAKLSAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwg
ZGVzdD1Ob25lKToKKyAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lLCBj
aGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUpOgogICAgICAgICAiIiJJbnN0YWxsIGxh
dGVzdCBHZWNrb2RyaXZlci4iIiIKICAgICAgICAgaWYgZGVzdCBpcyBOb25lOgogICAgICAgICAg
ICAgZGVzdCA9IG9zLmdldGN3ZCgpCiAKKyAgICAgICAgaWYgY2hhbm5lbCA9PSAibmlnaHRseSI6
CisgICAgICAgICAgICBwYXRoID0gc2VsZi5pbnN0YWxsX2dlY2tvZHJpdmVyX25pZ2h0bHkoZGVz
dCkKKyAgICAgICAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmV0
dXJuIHBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIu
d2FybmluZygiTmlnaHRseSB3ZWJkcml2ZXIgbm90IGZvdW5kOyBmYWxsaW5nIGJhY2sgdG8gcmVs
ZWFzZSIpCisKICAgICAgICAgdmVyc2lvbiA9IHNlbGYuX2xhdGVzdF9nZWNrb2RyaXZlcl92ZXJz
aW9uKCkKICAgICAgICAgZm9ybWF0ID0gInppcCIgaWYgdW5hbWVbMF0gPT0gIldpbmRvd3MiIGVs
c2UgInRhci5neiIKLSAgICAgICAgbG9nZ2VyLmRlYnVnKCJMYXRlc3QgZ2Vja29kcml2ZXIgcmVs
ZWFzZSAlcyIgJSB2ZXJzaW9uKQorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTGF0ZXN0IGdl
Y2tvZHJpdmVyIHJlbGVhc2UgJXMiICUgdmVyc2lvbikKICAgICAgICAgdXJsID0gKCJodHRwczov
L2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrb2RyaXZlci9yZWxlYXNlcy9kb3dubG9hZC8lcy9nZWNr
b2RyaXZlci0lcy0lcy4lcyIgJQogICAgICAgICAgICAgICAgKHZlcnNpb24sIHZlcnNpb24sIHNl
bGYucGxhdGZvcm1fc3RyaW5nX2dlY2tvZHJpdmVyKCksIGZvcm1hdCkpCiAgICAgICAgIGlmIGZv
cm1hdCA9PSAiemlwIjoKQEAgLTI3Myw5ICszOTYsMzggQEAgY2xhc3MgRmlyZWZveChCcm93c2Vy
KToKICAgICAgICAgICAgIHVudGFyKGdldCh1cmwpLnJhdywgZGVzdD1kZXN0KQogICAgICAgICBy
ZXR1cm4gZmluZF9leGVjdXRhYmxlKG9zLnBhdGguam9pbihkZXN0LCAiZ2Vja29kcml2ZXIiKSkK
IAotICAgIGRlZiB2ZXJzaW9uKHNlbGYsIGJpbmFyeT1Ob25lKToKKyAgICBkZWYgaW5zdGFsbF9n
ZWNrb2RyaXZlcl9uaWdodGx5KHNlbGYsIGRlc3QpOgorICAgICAgICBpbXBvcnQgdGFyZmlsZQor
ICAgICAgICBpbXBvcnQgbW96ZG93bmxvYWQKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiQXR0
ZW1wdGluZyB0byBpbnN0YWxsIHdlYmRyaXZlciBmcm9tIG5pZ2h0bHkiKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBzID0gbW96ZG93bmxvYWQuRGFpbHlTY3JhcGVyKGJyYW5jaD0ibW96aWxs
YS1jZW50cmFsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0
ZW5zaW9uPSJjb21tb24udGVzdHMudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVzdGluYXRpb249ZGVzdCkKKyAgICAgICAgICAgIHBhY2thZ2VfcGF0
aCA9IHMuZG93bmxvYWQoKQorICAgICAgICBleGNlcHQgbW96ZG93bmxvYWQuZXJyb3JzLk5vdEZv
dW5kRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICB0cnk6CisgICAgICAgICAg
ICBleGVfc3VmZml4ID0gIi5leGUiIGlmIHVuYW1lWzBdID09ICJXaW5kb3dzIiBlbHNlICIiCisg
ICAgICAgICAgICB3aXRoIHRhcmZpbGUub3BlbihwYWNrYWdlX3BhdGgsICJyIikgYXMgZjoKKyAg
ICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG1lbWJlciA9IGYuZ2V0bWVt
YmVyKCJiaW4lc2dlY2tvZHJpdmVyJXMiICUgKG9zLnBhdGguc2VwLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGVfc3Vm
Zml4KSkKKyAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAg
ICAgIHJldHVybgorICAgICAgICAgICAgICAgICMgUmVtb3ZlIGJpbi8gZnJvbSB0aGUgcGF0aC4K
KyAgICAgICAgICAgICAgICBtZW1iZXIubmFtZSA9IG9zLnBhdGguYmFzZW5hbWUobWVtYmVyLm5h
bWUpCisgICAgICAgICAgICAgICAgZi5leHRyYWN0YWxsKG1lbWJlcnM9W21lbWJlcl0sIHBhdGg9
ZGVzdCkKKyAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGRlc3QsIG1lbWJlci5u
YW1lKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiRXh0cmFjdGVkIGdlY2tvZHJpdmVy
IHRvICVzIiAlIHBhdGgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy51bmxpbmso
cGFja2FnZV9wYXRoKQorCisgICAgICAgIHJldHVybiBwYXRoCisKKyAgICBkZWYgdmVyc2lvbihz
ZWxmLCBiaW5hcnk9Tm9uZSwgd2ViZHJpdmVyX2JpbmFyeT1Ob25lKToKICAgICAgICAgIiIiUmV0
cmlldmUgdGhlIHJlbGVhc2UgdmVyc2lvbiBvZiB0aGUgaW5zdGFsbGVkIGJyb3dzZXIuIiIiCi0g
ICAgICAgIGJpbmFyeSA9IGJpbmFyeSBvciBzZWxmLmZpbmRfYmluYXJ5KCkKICAgICAgICAgdmVy
c2lvbl9zdHJpbmcgPSBjYWxsKGJpbmFyeSwgIi0tdmVyc2lvbiIpLnN0cmlwKCkKICAgICAgICAg
bSA9IHJlLm1hdGNoKHIiTW96aWxsYSBGaXJlZm94ICguKikiLCB2ZXJzaW9uX3N0cmluZykKICAg
ICAgICAgaWYgbm90IG06CkBAIC0yODMsMjUgKzQzNSw1OSBAQCBjbGFzcyBGaXJlZm94KEJyb3dz
ZXIpOgogICAgICAgICByZXR1cm4gbS5ncm91cCgxKQogCiAKLWNsYXNzIEZlbm5lYyhCcm93c2Vy
KToKLSAgICAiIiJGZW5uZWMtc3BlY2lmaWMgaW50ZXJmYWNlLiIiIgorY2xhc3MgRmlyZWZveEFu
ZHJvaWQoQnJvd3Nlcik6CisgICAgIiIiQW5kcm9pZC1zcGVjaWZpYyBGaXJlZm94IGludGVyZmFj
ZS4iIiIKIAotICAgIHByb2R1Y3QgPSAiZmVubmVjIgorICAgIHByb2R1Y3QgPSAiZmlyZWZveF9h
bmRyb2lkIgogICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZmlyZWZveC50eHQiCiAK
LSAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUpOgotICAgICAgICByYWlzZSBOb3RJbXBs
ZW1lbnRlZEVycm9yCisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1O
b25lKToKKyAgICAgICAgaWYgZGVzdCBpcyBOb25lOgorICAgICAgICAgICAgZGVzdCA9IG9zLnB3
ZAorCisgICAgICAgIGlmIEZJUkVGT1hfQ0lfUk9PVF9VUkwgPT0gJ2h0dHBzOi8vdGFza2NsdXN0
ZXIubmV0JzoKKyAgICAgICAgICAgICMgTk9URTogdGhpcyBjb25kaXRpb24gY2FuIGJlIHJlbW92
ZWQgYWZ0ZXIgTm92ZW1iZXIgOSwgMjAxOQorICAgICAgICAgICAgVENfUVVFVUVfQkFTRSA9ICJo
dHRwczovL3F1ZXVlLnRhc2tjbHVzdGVyLm5ldC92MS8iCisgICAgICAgICAgICBUQ19JTkRFWF9C
QVNFID0gImh0dHBzOi8vaW5kZXgudGFza2NsdXN0ZXIubmV0L3YxLyIKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIFRDX1FVRVVFX0JBU0UgPSBGSVJFRk9YX0NJX1JPT1RfVVJMICsgIi9hcGkv
cXVldWUvdjEvIgorICAgICAgICAgICAgVENfSU5ERVhfQkFTRSA9IEZJUkVGT1hfQ0lfUk9PVF9V
UkwgKyAiL2FwaS9pbmRleC92MS8iCisKKworICAgICAgICByZXNwID0gcmVxdWVzdHMuZ2V0KFRD
X0lOREVYX0JBU0UgKworICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0YXNrL2dlY2tvLnYy
Lm1vemlsbGEtY2VudHJhbC5sYXRlc3QubW9iaWxlLmFuZHJvaWQteDg2XzY0LW9wdCIpCisgICAg
ICAgIHJlc3AucmFpc2VfZm9yX3N0YXR1cygpCisgICAgICAgIGluZGV4ID0gcmVzcC5qc29uKCkK
KyAgICAgICAgdGFza19pZCA9IGluZGV4WyJ0YXNrSWQiXQorCisgICAgICAgIHJlc3AgPSByZXF1
ZXN0cy5nZXQoVENfUVVFVUVfQkFTRSArICJ0YXNrLyVzL2FydGlmYWN0cy8lcyIgJQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICh0YXNrX2lkLCAicHVibGljL2J1aWxkL2dlY2tvdmlldy1h
bmRyb2lkVGVzdC5hcGsiKSkKKyAgICAgICAgcmVzcC5yYWlzZV9mb3Jfc3RhdHVzKCkKIAotICAg
IGRlZiBmaW5kX2JpbmFyeShzZWxmLCB2ZW52X3BhdGg9Tm9uZSk6CisgICAgICAgIGFwa19wYXRo
ID0gb3MucGF0aC5qb2luKGRlc3QsICJnZWNrb3ZpZXctYW5kcm9pZFRlc3QuYXBrIikKKworICAg
ICAgICB3aXRoIG9wZW4oYXBrX3BhdGgsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRl
KHJlc3AuY29udGVudCkKKworICAgICAgICByZXR1cm4gYXBrX3BhdGgKKworICAgIGRlZiBpbnN0
YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
ZG93bmxvYWQoZGVzdCwgY2hhbm5lbCkKKworICAgIGRlZiBpbnN0YWxsX3ByZWZzKHNlbGYsIGJp
bmFyeSwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgICAgICBmeF9icm93c2VyID0gRmly
ZWZveChzZWxmLmxvZ2dlcikKKyAgICAgICAgcmV0dXJuIGZ4X2Jyb3dzZXIuaW5zdGFsbF9wcmVm
cyhiaW5hcnksIGRlc3QsIGNoYW5uZWwpCisKKyAgICBkZWYgZmluZF9iaW5hcnkoc2VsZiwgdmVu
dl9wYXRoPU5vbmUsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKIAotICAgIGRlZiBmaW5kX3dlYmRyaXZlcihzZWxmKToKKyAgICBkZWYgZmluZF93ZWJk
cml2ZXIoc2VsZiwgY2hhbm5lbD1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcgogCi0gICAgZGVmIGluc3RhbGxfd2ViZHJpdmVyKHNlbGYsIGRlc3Q9Tm9uZSk6CisgICAg
ZGVmIGluc3RhbGxfd2ViZHJpdmVyKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCBicm93
c2VyX2JpbmFyeT1Ob25lKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0g
ICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUpOgorICAgIGRlZiB2ZXJzaW9uKHNlbGYs
IGJpbmFyeT1Ob25lLCB3ZWJkcml2ZXJfYmluYXJ5PU5vbmUpOgogICAgICAgICByZXR1cm4gTm9u
ZQogCiAKQEAgLTMxNCwxNyArNTAwLDEwIEBAIGNsYXNzIENocm9tZShCcm93c2VyKToKICAgICBw
cm9kdWN0ID0gImNocm9tZSIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2Nocm9t
ZS50eHQiCiAKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgYmluYXJ5KHNlbGYpOgotICAgICAgICBp
ZiB1bmFtZVswXSA9PSAiTGludXgiOgotICAgICAgICAgICAgcmV0dXJuICIvdXNyL2Jpbi9nb29n
bGUtY2hyb21lIgotICAgICAgICBpZiB1bmFtZVswXSA9PSAiRGFyd2luIjoKLSAgICAgICAgICAg
IHJldHVybiAiL0FwcGxpY2F0aW9ucy9Hb29nbGUgQ2hyb21lLmFwcC9Db250ZW50cy9NYWNPUy9H
b29nbGUgQ2hyb21lIgotICAgICAgICAjIFRPRE8gV2luZG93cz8KLSAgICAgICAgbG9nZ2VyLndh
cm4oIlVuYWJsZSB0byBmaW5kIHRoZSBicm93c2VyIGJpbmFyeS4iKQotICAgICAgICByZXR1cm4g
Tm9uZQorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6Cisg
ICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBpbnN0YWxsKHNlbGYs
IGRlc3Q9Tm9uZSk6CisgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5v
bmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgcGxhdGZv
cm1fc3RyaW5nKHNlbGYpOgpAQCAtMzQ2LDY1ICs1MjUsMjQ5IEBAIGNsYXNzIENocm9tZShCcm93
c2VyKToKIAogICAgICAgICByZXR1cm4gIiVzJXMiICUgKHBsYXRmb3JtLCBiaXRzKQogCi0gICAg
ZGVmIGZpbmRfYmluYXJ5KHNlbGYpOgotICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CisgICAgZGVmIGNocm9taXVtX3BsYXRmb3JtX3N0cmluZyhzZWxmKToKKyAgICAgICAgcGxhdGZv
cm0gPSB7CisgICAgICAgICAgICAiTGludXgiOiAiTGludXgiLAorICAgICAgICAgICAgIldpbmRv
d3MiOiAiV2luIiwKKyAgICAgICAgICAgICJEYXJ3aW4iOiAiTWFjIgorICAgICAgICB9LmdldCh1
bmFtZVswXSkKKworICAgICAgICBpZiBwbGF0Zm9ybSBpcyBOb25lOgorICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiVW5hYmxlIHRvIGNvbnN0cnVjdCBhIHZhbGlkIENocm9taXVtIHBhY2th
Z2UgbmFtZSBmb3IgY3VycmVudCBwbGF0Zm9ybSIpCisKKyAgICAgICAgaWYgKHBsYXRmb3JtID09
ICJMaW51eCIgb3IgcGxhdGZvcm0gPT0gIldpbiIpIGFuZCB1bmFtZVs0XSA9PSAieDg2XzY0IjoK
KyAgICAgICAgICAgIHBsYXRmb3JtICs9ICJfeDY0IgorCisgICAgICAgIHJldHVybiBwbGF0Zm9y
bQogCi0gICAgZGVmIGZpbmRfd2ViZHJpdmVyKHNlbGYpOgorICAgIGRlZiBmaW5kX2JpbmFyeShz
ZWxmLCB2ZW52X3BhdGg9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgaWYgdW5hbWVbMF0g
PT0gIkxpbnV4IjoKKyAgICAgICAgICAgIG5hbWUgPSAiZ29vZ2xlLWNocm9tZSIKKyAgICAgICAg
ICAgIGlmIGNoYW5uZWwgPT0gInN0YWJsZSI6CisgICAgICAgICAgICAgICAgbmFtZSArPSAiLXN0
YWJsZSIKKyAgICAgICAgICAgIGVsaWYgY2hhbm5lbCA9PSAiYmV0YSI6CisgICAgICAgICAgICAg
ICAgbmFtZSArPSAiLWJldGEiCisgICAgICAgICAgICBlbGlmIGNoYW5uZWwgPT0gImRldiI6Cisg
ICAgICAgICAgICAgICAgbmFtZSArPSAiLXVuc3RhYmxlIgorICAgICAgICAgICAgIyBObyBDYW5h
cnkgb24gTGludXguCisgICAgICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKG5hbWUpCisg
ICAgICAgIGlmIHVuYW1lWzBdID09ICJEYXJ3aW4iOgorICAgICAgICAgICAgaWYgY2hhbm5lbCA9
PSAiY2FuYXJ5IjoKKyAgICAgICAgICAgICAgICByZXR1cm4gIi9BcHBsaWNhdGlvbnMvR29vZ2xl
IENocm9tZSBDYW5hcnkuYXBwL0NvbnRlbnRzL01hY09TL0dvb2dsZSBDaHJvbWUgQ2FuYXJ5Igor
ICAgICAgICAgICAgIyBBbGwgb3RoZXIgY2hhbm5lbHMgc2hhcmUgdGhlIHNhbWUgcGF0aCBvbiBt
YWNPUy4KKyAgICAgICAgICAgIHJldHVybiAiL0FwcGxpY2F0aW9ucy9Hb29nbGUgQ2hyb21lLmFw
cC9Db250ZW50cy9NYWNPUy9Hb29nbGUgQ2hyb21lIgorICAgICAgICBpZiB1bmFtZVswXSA9PSAi
V2luZG93cyI6CisgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5leHBhbmR2YXJzKHIiJFNZU1RF
TURSSVZFXFByb2dyYW0gRmlsZXMgKHg4NilcR29vZ2xlXENocm9tZVxBcHBsaWNhdGlvblxjaHJv
bWUuZXhlIikKKyAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiVW5hYmxlIHRvIGZpbmQgdGhl
IGJyb3dzZXIgYmluYXJ5LiIpCisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgZmluZF93
ZWJkcml2ZXIoc2VsZiwgY2hhbm5lbD1Ob25lKToKICAgICAgICAgcmV0dXJuIGZpbmRfZXhlY3V0
YWJsZSgiY2hyb21lZHJpdmVyIikKIAotICAgIGRlZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmLCBk
ZXN0PU5vbmUpOgorICAgIGRlZiBfb2ZmaWNpYWxfY2hyb21lZHJpdmVyX3VybChzZWxmLCBjaHJv
bWVfdmVyc2lvbik6CisgICAgICAgICMgaHR0cDovL2Nocm9tZWRyaXZlci5jaHJvbWl1bS5vcmcv
ZG93bmxvYWRzL3ZlcnNpb24tc2VsZWN0aW9uCisgICAgICAgIHBhcnRzID0gY2hyb21lX3ZlcnNp
b24uc3BsaXQoIi4iKQorICAgICAgICBhc3NlcnQgbGVuKHBhcnRzKSA9PSA0CisgICAgICAgIGxh
dGVzdF91cmwgPSAiaHR0cHM6Ly9jaHJvbWVkcml2ZXIuc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9M
QVRFU1RfUkVMRUFTRV8lcy4lcy4lcyIgJSB0dXBsZShwYXJ0c1s6LTFdKQorICAgICAgICB0cnk6
CisgICAgICAgICAgICBsYXRlc3QgPSBnZXQobGF0ZXN0X3VybCkudGV4dC5zdHJpcCgpCisgICAg
ICAgIGV4Y2VwdCByZXF1ZXN0cy5SZXF1ZXN0RXhjZXB0aW9uOgorICAgICAgICAgICAgbGF0ZXN0
X3VybCA9ICJodHRwczovL2Nocm9tZWRyaXZlci5zdG9yYWdlLmdvb2dsZWFwaXMuY29tL0xBVEVT
VF9SRUxFQVNFXyVzIiAlIHBhcnRzWzBdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAg
ICAgbGF0ZXN0ID0gZ2V0KGxhdGVzdF91cmwpLnRleHQuc3RyaXAoKQorICAgICAgICAgICAgZXhj
ZXB0IHJlcXVlc3RzLlJlcXVlc3RFeGNlcHRpb246CisgICAgICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgcmV0dXJuICJodHRwczovL2Nocm9tZWRyaXZlci5zdG9yYWdlLmdvb2dsZWFw
aXMuY29tLyVzL2Nocm9tZWRyaXZlcl8lcy56aXAiICUgKAorICAgICAgICAgICAgbGF0ZXN0LCBz
ZWxmLnBsYXRmb3JtX3N0cmluZygpKQorCisgICAgZGVmIF9jaHJvbWl1bV9jaHJvbWVkcml2ZXJf
dXJsKHNlbGYsIGNocm9tZV92ZXJzaW9uKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBU
cnkgdG8gZmluZCB0aGUgQ2hyb21pdW0gYnVpbGQgd2l0aCB0aGUgc2FtZSByZXZpc2lvbi4KKyAg
ICAgICAgICAgIG9tYWhhID0gZ2V0KCJodHRwczovL29tYWhhcHJveHkuYXBwc3BvdC5jb20vZGVw
cy5qc29uP3ZlcnNpb249IiArIGNocm9tZV92ZXJzaW9uKS5qc29uKCkKKyAgICAgICAgICAgIHJl
dmlzaW9uID0gb21haGFbJ2Nocm9taXVtX2Jhc2VfcG9zaXRpb24nXQorICAgICAgICAgICAgdXJs
ID0gImh0dHBzOi8vc3RvcmFnZS5nb29nbGVhcGlzLmNvbS9jaHJvbWl1bS1icm93c2VyLXNuYXBz
aG90cy8lcy8lcy9jaHJvbWVkcml2ZXJfJXMuemlwIiAlICgKKyAgICAgICAgICAgICAgICBzZWxm
LmNocm9taXVtX3BsYXRmb3JtX3N0cmluZygpLCByZXZpc2lvbiwgc2VsZi5wbGF0Zm9ybV9zdHJp
bmcoKSkKKyAgICAgICAgICAgICMgQ2hlY2sgdGhlIHN0YXR1cyB3aXRob3V0IGRvd25sb2FkaW5n
IHRoZSBjb250ZW50ICh0aGlzIGlzIGEgc3RyZWFtaW5nIHJlcXVlc3QpLgorICAgICAgICAgICAg
Z2V0KHVybCkKKyAgICAgICAgZXhjZXB0IHJlcXVlc3RzLlJlcXVlc3RFeGNlcHRpb246CisgICAg
ICAgICAgICAjIEZhbGwgYmFjayB0byB0aGUgdGlwLW9mLXRyZWUgQ2hyb21pdW0gYnVpbGQuCisg
ICAgICAgICAgICByZXZpc2lvbl91cmwgPSAiaHR0cHM6Ly9zdG9yYWdlLmdvb2dsZWFwaXMuY29t
L2Nocm9taXVtLWJyb3dzZXItc25hcHNob3RzLyVzL0xBU1RfQ0hBTkdFIiAlICgKKyAgICAgICAg
ICAgICAgICBzZWxmLmNocm9taXVtX3BsYXRmb3JtX3N0cmluZygpKQorICAgICAgICAgICAgcmV2
aXNpb24gPSBnZXQocmV2aXNpb25fdXJsKS50ZXh0LnN0cmlwKCkKKyAgICAgICAgICAgIHVybCA9
ICJodHRwczovL3N0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vY2hyb21pdW0tYnJvd3Nlci1zbmFwc2hv
dHMvJXMvJXMvY2hyb21lZHJpdmVyXyVzLnppcCIgJSAoCisgICAgICAgICAgICAgICAgc2VsZi5j
aHJvbWl1bV9wbGF0Zm9ybV9zdHJpbmcoKSwgcmV2aXNpb24sIHNlbGYucGxhdGZvcm1fc3RyaW5n
KCkpCisgICAgICAgIHJldHVybiB1cmwKKworICAgIGRlZiBfbGF0ZXN0X2Nocm9tZWRyaXZlcl91
cmwoc2VsZiwgY2hyb21lX3ZlcnNpb24pOgorICAgICAgICAjIFJlbW92ZSBjaGFubmVsIHN1ZmZp
eGVzIChlLmcuICIgZGV2IikuCisgICAgICAgIGNocm9tZV92ZXJzaW9uID0gY2hyb21lX3ZlcnNp
b24uc3BsaXQoJyAnKVswXQorICAgICAgICByZXR1cm4gKHNlbGYuX29mZmljaWFsX2Nocm9tZWRy
aXZlcl91cmwoY2hyb21lX3ZlcnNpb24pIG9yCisgICAgICAgICAgICAgICAgc2VsZi5fY2hyb21p
dW1fY2hyb21lZHJpdmVyX3VybChjaHJvbWVfdmVyc2lvbikpCisKKyAgICBkZWYgaW5zdGFsbF93
ZWJkcml2ZXJfYnlfdmVyc2lvbihzZWxmLCB2ZXJzaW9uLCBkZXN0PU5vbmUpOgorICAgICAgICBh
c3NlcnQgdmVyc2lvbiwgIkNhbm5vdCBpbnN0YWxsIENocm9tZURyaXZlciB3aXRob3V0IENocm9t
ZSB2ZXJzaW9uIgogICAgICAgICBpZiBkZXN0IGlzIE5vbmU6CiAgICAgICAgICAgICBkZXN0ID0g
b3MucHdkCi0gICAgICAgIGxhdGVzdCA9IGdldCgiaHR0cDovL2Nocm9tZWRyaXZlci5zdG9yYWdl
Lmdvb2dsZWFwaXMuY29tL0xBVEVTVF9SRUxFQVNFIikudGV4dC5zdHJpcCgpCi0gICAgICAgIHVy
bCA9ICJodHRwOi8vY2hyb21lZHJpdmVyLnN0b3JhZ2UuZ29vZ2xlYXBpcy5jb20vJXMvY2hyb21l
ZHJpdmVyXyVzLnppcCIgJSAobGF0ZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYucGxhdGZvcm1fc3RyaW5nKCkpCisgICAgICAgIHVybCA9IHNlbGYuX2xhdGVzdF9jaHJvbWVk
cml2ZXJfdXJsKHZlcnNpb24pCisgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkRvd25sb2FkaW5n
IENocm9tZURyaXZlciBmcm9tICVzIiAlIHVybCkKICAgICAgICAgdW56aXAoZ2V0KHVybCkucmF3
LCBkZXN0KQorICAgICAgICBjaHJvbWVkcml2ZXJfZGlyID0gb3MucGF0aC5qb2luKAorICAgICAg
ICAgICAgZGVzdCwgJ2Nocm9tZWRyaXZlcl8lcycgJSBzZWxmLnBsYXRmb3JtX3N0cmluZygpKQor
ICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4oY2hyb21lZHJpdmVyX2Rpciwg
ImNocm9tZWRyaXZlciIpKToKKyAgICAgICAgICAgIHNodXRpbC5tb3ZlKG9zLnBhdGguam9pbihj
aHJvbWVkcml2ZXJfZGlyLCAiY2hyb21lZHJpdmVyIiksIGRlc3QpCisgICAgICAgICAgICBzaHV0
aWwucm10cmVlKGNocm9tZWRyaXZlcl9kaXIpCisgICAgICAgIHJldHVybiBmaW5kX2V4ZWN1dGFi
bGUoImNocm9tZWRyaXZlciIsIGRlc3QpCisKKyAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2Vs
ZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUpOgorICAgICAg
ICBpZiBicm93c2VyX2JpbmFyeSBpcyBOb25lOgorICAgICAgICAgICAgYnJvd3Nlcl9iaW5hcnkg
PSBzZWxmLmZpbmRfYmluYXJ5KGNoYW5uZWwpCisgICAgICAgIHJldHVybiBzZWxmLmluc3RhbGxf
d2ViZHJpdmVyX2J5X3ZlcnNpb24oCisgICAgICAgICAgICBzZWxmLnZlcnNpb24oYnJvd3Nlcl9i
aW5hcnkpLCBkZXN0KQorCisgICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUsIHdlYmRy
aXZlcl9iaW5hcnk9Tm9uZSk6CisgICAgICAgIGlmIG5vdCBiaW5hcnk6CisgICAgICAgICAgICBz
ZWxmLmxvZ2dlci53YXJuaW5nKCJObyBicm93c2VyIGJpbmFyeSBwcm92aWRlZC4iKQorICAgICAg
ICAgICAgcmV0dXJuIE5vbmUKIAotICAgICAgICBwYXRoID0gZmluZF9leGVjdXRhYmxlKCJjaHJv
bWVkcml2ZXIiLCBkZXN0KQotICAgICAgICBzdCA9IG9zLnN0YXQocGF0aCkKLSAgICAgICAgb3Mu
Y2htb2QocGF0aCwgc3Quc3RfbW9kZSB8IHN0YXQuU19JRVhFQykKLSAgICAgICAgcmV0dXJuIHBh
dGgKKyAgICAgICAgaWYgdW5hbWVbMF0gPT0gIldpbmRvd3MiOgorICAgICAgICAgICAgcmV0dXJu
IF9nZXRfZmlsZXZlcnNpb24oYmluYXJ5LCBzZWxmLmxvZ2dlcikKIAotICAgIGRlZiB2ZXJzaW9u
KHNlbGYsIGJpbmFyeT1Ob25lKToKLSAgICAgICAgYmluYXJ5ID0gYmluYXJ5IG9yIHNlbGYuYmlu
YXJ5Ci0gICAgICAgIGlmIHVuYW1lWzBdICE9ICJXaW5kb3dzIjoKLSAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICB2ZXJzaW9uX3N0cmluZyA9IGNhbGwoYmluYXJ5LCAiLS12ZXJzaW9u
Iikuc3RyaXAoKQotICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vy
cm9yOgotICAgICAgICAgICAgICAgIGxvZ2dlci53YXJuKCJGYWlsZWQgdG8gY2FsbCAlcyIsIGJp
bmFyeSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICAgICAgbSA9IHJlLm1h
dGNoKHIiR29vZ2xlIENocm9tZSAoLiopIiwgdmVyc2lvbl9zdHJpbmcpCi0gICAgICAgICAgICBp
ZiBub3QgbToKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybigiRmFpbGVkIHRvIGV4dHJhY3Qg
dmVyc2lvbiBmcm9tOiBzJSIsIHZlcnNpb25fc3RyaW5nKQotICAgICAgICAgICAgICAgIHJldHVy
biBOb25lCi0gICAgICAgICAgICByZXR1cm4gbS5ncm91cCgxKQotICAgICAgICBsb2dnZXIud2Fy
bigiVW5hYmxlIHRvIGV4dHJhY3QgdmVyc2lvbiBmcm9tIGJpbmFyeSBvbiBXaW5kb3dzLiIpCi0g
ICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHZlcnNpb25fc3Ry
aW5nID0gY2FsbChiaW5hcnksICItLXZlcnNpb24iKS5zdHJpcCgpCisgICAgICAgIGV4Y2VwdCBz
dWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndh
cm5pbmcoIkZhaWxlZCB0byBjYWxsICVzIiAlIGJpbmFyeSkKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisgICAgICAgIG0gPSByZS5tYXRjaChyIig/Okdvb2dsZSBDaHJvbWV8Q2hyb21pdW0pICgu
KikiLCB2ZXJzaW9uX3N0cmluZykKKyAgICAgICAgaWYgbm90IG06CisgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gZXh0cmFjdCB2ZXJzaW9uIGZyb206ICVzIiAlIHZl
cnNpb25fc3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIG0u
Z3JvdXAoMSkKIAogCi1jbGFzcyBDaHJvbWVBbmRyb2lkKEJyb3dzZXIpOgotICAgICIiIkNocm9t
ZS1zcGVjaWZpYyBpbnRlcmZhY2UgZm9yIEFuZHJvaWQuCitjbGFzcyBDaHJvbWVBbmRyb2lkQmFz
ZShCcm93c2VyKToKKyAgICAiIiJBIGJhc2UgY2xhc3MgZm9yIENocm9tZUFuZHJvaWQgYW5kIEFu
ZHJvaWRXZWJWaWV3LgogCisgICAgT24gQW5kcm9pZCwgV2ViVmlldyBpcyBiYXNlZCBvbiBDaHJv
bWl1bSBvcGVuIHNvdXJjZSBwcm9qZWN0LCBhbmQgb24gc29tZQorICAgIHZlcnNpb25zIG9mIEFu
ZHJvaWQgd2Ugc2hhcmUgdGhlIGxpYnJhcnkgd2l0aCBDaHJvbWUuIFRoZXJlZm9yZSwgd2UgaGF2
ZQorICAgIGEgdmVyeSBzaW1pbGFyIFdQVCBydW5uZXIgaW1wbGVtZW50YXRpb24uCiAgICAgSW5j
bHVkZXMgd2ViZHJpdmVyIGluc3RhbGxhdGlvbi4KICAgICAiIiIKKyAgICBfX21ldGFjbGFzc19f
ID0gQUJDTWV0YSAgIyBUaGlzIGlzIGFuIGFic3RyYWN0IGNsYXNzLgorCisgICAgZGVmIF9faW5p
dF9fKHNlbGYsIGxvZ2dlcik6CisgICAgICAgIHN1cGVyKENocm9tZUFuZHJvaWRCYXNlLCBzZWxm
KS5fX2luaXRfXyhsb2dnZXIpCisgICAgICAgIHNlbGYuZGV2aWNlX3NlcmlhbCA9IE5vbmUKKwor
ICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9
Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgor
CisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGZpbmRfYmluYXJ5KHNlbGYsIHZlbnZfcGF0
aD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CisKKyAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZiwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAg
cmV0dXJuIGZpbmRfZXhlY3V0YWJsZSgiY2hyb21lZHJpdmVyIikKKworICAgIGRlZiBpbnN0YWxs
X3dlYmRyaXZlcihzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgYnJvd3Nlcl9iaW5hcnk9
Tm9uZSk6CisgICAgICAgIGlmIGJyb3dzZXJfYmluYXJ5IGlzIE5vbmU6CisgICAgICAgICAgICBi
cm93c2VyX2JpbmFyeSA9IHNlbGYuZmluZF9iaW5hcnkoY2hhbm5lbCkKKyAgICAgICAgY2hyb21l
ID0gQ2hyb21lKHNlbGYubG9nZ2VyKQorICAgICAgICByZXR1cm4gY2hyb21lLmluc3RhbGxfd2Vi
ZHJpdmVyX2J5X3ZlcnNpb24oCisgICAgICAgICAgICBzZWxmLnZlcnNpb24oYnJvd3Nlcl9iaW5h
cnkpLCBkZXN0KQorCisgICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUsIHdlYmRyaXZl
cl9iaW5hcnk9Tm9uZSk6CisgICAgICAgIGlmIG5vdCBiaW5hcnk6CisgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCJObyBwYWNrYWdlIG5hbWUgcHJvdmlkZWQuIikKKyAgICAgICAgICAg
IHJldHVybiBOb25lCisKKyAgICAgICAgY29tbWFuZCA9IFsnYWRiJ10KKyAgICAgICAgaWYgc2Vs
Zi5kZXZpY2Vfc2VyaWFsOgorICAgICAgICAgICAgY29tbWFuZC5leHRlbmQoWyctcycsIHNlbGYu
ZGV2aWNlX3NlcmlhbF0pCisgICAgICAgIGNvbW1hbmQuZXh0ZW5kKFsnc2hlbGwnLCAnZHVtcHN5
cycsICdwYWNrYWdlJywgYmluYXJ5XSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3V0cHV0
ID0gY2FsbCgqY29tbWFuZCkKKyAgICAgICAgZXhjZXB0IChzdWJwcm9jZXNzLkNhbGxlZFByb2Nl
c3NFcnJvciwgT1NFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWls
ZWQgdG8gY2FsbCAlcyIgJSAiICIuam9pbihjb21tYW5kKSkKKyAgICAgICAgICAgIHJldHVybiBO
b25lCisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHIndmVyc2lvbk5hbWU9KC4qKScsIG91dHB1
dCkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIud2Fybmlu
ZygiRmFpbGVkIHRvIGZpbmQgdmVyc2lvbk5hbWUiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICAgICAgcmV0dXJuIG1hdGNoLmdyb3VwKDEpCisKKworY2xhc3MgQ2hyb21lQW5kcm9pZChD
aHJvbWVBbmRyb2lkQmFzZSk6CisgICAgIiIiQ2hyb21lLXNwZWNpZmljIGludGVyZmFjZSBmb3Ig
QW5kcm9pZC4KKyAgICAiIiIKIAogICAgIHByb2R1Y3QgPSAiY2hyb21lX2FuZHJvaWQiCiAgICAg
cmVxdWlyZW1lbnRzID0gInJlcXVpcmVtZW50c19jaHJvbWVfYW5kcm9pZC50eHQiCiAKLSAgICBk
ZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUpOgorICAgIGRlZiBmaW5kX2JpbmFyeShzZWxmLCB2
ZW52X3BhdGg9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgaWYgY2hhbm5lbCBpbiAoImJl
dGEiLCAiZGV2IiwgImNhbmFyeSIpOgorICAgICAgICAgICAgcmV0dXJuICJjb20uY2hyb21lLiIg
KyBjaGFubmVsCisgICAgICAgIHJldHVybiAiY29tLmFuZHJvaWQuY2hyb21lIgorCisKK2NsYXNz
IEFuZHJvaWRXZWJ2aWV3KENocm9tZUFuZHJvaWRCYXNlKToKKyAgICAiIiJXZWJ2aWV3LXNwZWNp
ZmljIGludGVyZmFjZSBmb3IgQW5kcm9pZC4KKworICAgIERlc2lnbiBkb2M6CisgICAgaHR0cHM6
Ly9kb2NzLmdvb2dsZS5jb20vZG9jdW1lbnQvZC8xOWNHejMxbHpDQmRwYnRTQzkyc3ZYbGhsaG42
OGhyc1Z3U0I3Y2ZadDU0by92aWV3CisgICAgIiIiCisKKyAgICBwcm9kdWN0ID0gImFuZHJvaWRf
d2VidmlldyIKKyAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX2FuZHJvaWRfd2Vidmll
dy50eHQiCisKKyAgICBkZWYgZmluZF9iaW5hcnkoc2VsZiwgdmVudl9wYXRoPU5vbmUsIGNoYW5u
ZWw9Tm9uZSk6CisgICAgICAgICMgSnVzdCBnZXQgdGhlIGN1cnJlbnQgcGFja2FnZSBuYW1lIG9m
IHRoZSBXZWJWaWV3IHByb3ZpZGVyLgorICAgICAgICAjIEZvciBXZWJWaWV3LCBpdCBpcyBub3Qg
dHJpdmlhbCB0byBjaGFuZ2UgdGhlIFdlYlZpZXcgcHJvdmlkZXIsIHNvCisgICAgICAgICMgd2Ug
d2lsbCBqdXN0IGdyYWIgd2hhdGV2ZXIgaXMgYXZhaWxhYmxlLgorICAgICAgICAjIGh0dHBzOi8v
Y2hyb21pdW0uZ29vZ2xlc291cmNlLmNvbS9jaHJvbWl1bS9zcmMvKy9IRUFEL2FuZHJvaWRfd2Vi
dmlldy9kb2NzL2NoYW5uZWxzLm1kCisgICAgICAgIGNvbW1hbmQgPSBbJ2FkYiddCisgICAgICAg
IGlmIHNlbGYuZGV2aWNlX3NlcmlhbDoKKyAgICAgICAgICAgIGNvbW1hbmQuZXh0ZW5kKFsnLXMn
LCBzZWxmLmRldmljZV9zZXJpYWxdKQorICAgICAgICBjb21tYW5kLmV4dGVuZChbJ3NoZWxsJywg
J2R1bXBzeXMnLCAnd2Vidmlld3VwZGF0ZSddKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBv
dXRwdXQgPSBjYWxsKCpjb21tYW5kKQorICAgICAgICBleGNlcHQgKHN1YnByb2Nlc3MuQ2FsbGVk
UHJvY2Vzc0Vycm9yLCBPU0Vycm9yKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmco
IkZhaWxlZCB0byBjYWxsICVzIiAlICIgIi5qb2luKGNvbW1hbmQpKQorICAgICAgICAgICAgcmV0
dXJuIE5vbmUKKyAgICAgICAgbSA9IHJlLnNlYXJjaChyJ15ccypDdXJyZW50IFdlYlZpZXcgcGFj
a2FnZSBcKG5hbWUsIHZlcnNpb25cKTogXCgoLiopLCAoWzAtOS5dKilcKSQnLAorICAgICAgICAg
ICAgICAgICAgICAgIG91dHB1dCwgcmUuTSkKKyAgICAgICAgaWYgbSBpcyBOb25lOgorICAgICAg
ICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiVW5hYmxlIHRvIGZpbmQgY3VycmVudCBXZWJWaWV3
IHBhY2thZ2UgaW4gZHVtcHN5cyBvdXRwdXQiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRmluYWwgcGFja2FnZSBuYW1lOiAiICsgbS5ncm91
cCgxKSkKKyAgICAgICAgcmV0dXJuIG0uZ3JvdXAoMSkKKworCitjbGFzcyBDaHJvbWVpT1MoQnJv
d3Nlcik6CisgICAgIiIiQ2hyb21lLXNwZWNpZmljIGludGVyZmFjZSBmb3IgaU9TLgorICAgICIi
IgorCisgICAgcHJvZHVjdCA9ICJjaHJvbWVfaW9zIgorICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1
aXJlbWVudHNfY2hyb21lX2lvcy50eHQiCisKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAK
LSAgICBkZWYgZmluZF9iaW5hcnkoc2VsZik6CisgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1O
b25lLCBjaGFubmVsPU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAK
LSAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBmaW5kX2V4ZWN1
dGFibGUoImNocm9tZWRyaXZlciIpCisgICAgZGVmIGZpbmRfYmluYXJ5KHNlbGYsIHZlbnZfcGF0
aD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9y
CiAKLSAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lKToKLSAgICAgICAg
Y2hyb21lID0gQ2hyb21lKCkKLSAgICAgICAgcmV0dXJuIGNocm9tZS5pbnN0YWxsX3dlYmRyaXZl
cihkZXN0KQorICAgIGRlZiBmaW5kX3dlYmRyaXZlcihzZWxmLCBjaGFubmVsPU5vbmUpOgorICAg
ICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYgdmVyc2lvbihzZWxmLCBi
aW5hcnkpOgorICAgIGRlZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSwgYnJvd3Nlcl9iaW5hcnk9Tm9uZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKKworICAgIGRlZiB2ZXJzaW9uKHNlbGYsIGJpbmFyeT1Ob25lLCB3ZWJkcml2ZXJf
YmluYXJ5PU5vbmUpOgogICAgICAgICByZXR1cm4gTm9uZQogCiAKQEAgLTQyMiwxMCArNzg1LDEz
IEBAIGNsYXNzIE9wZXJhKEJyb3dzZXIpOgogICAgICAgICBpZiB1bmFtZVswXSA9PSAiTGludXgi
OgogICAgICAgICAgICAgcmV0dXJuICIvdXNyL2Jpbi9vcGVyYSIKICAgICAgICAgIyBUT0RPIFdp
bmRvd3MsIE1hYz8KLSAgICAgICAgbG9nZ2VyLndhcm4oIlVuYWJsZSB0byBmaW5kIHRoZSBicm93
c2VyIGJpbmFyeS4iKQorICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJVbmFibGUgdG8gZmlu
ZCB0aGUgYnJvd3NlciBiaW5hcnkuIikKICAgICAgICAgcmV0dXJuIE5vbmUKIAotICAgIGRlZiBp
bnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9u
ZSwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisg
ICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgcGxhdGZvcm1fc3RyaW5nKHNlbGYp
OgpAQCAtNDQ3LDEzICs4MTMsMTMgQEAgY2xhc3MgT3BlcmEoQnJvd3Nlcik6CiAKICAgICAgICAg
cmV0dXJuICIlcyVzIiAlIChwbGF0Zm9ybSwgYml0cykKIAotICAgIGRlZiBmaW5kX2JpbmFyeShz
ZWxmKToKKyAgICBkZWYgZmluZF9iaW5hcnkoc2VsZiwgdmVudl9wYXRoPU5vbmUsIGNoYW5uZWw9
Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBmaW5k
X3dlYmRyaXZlcihzZWxmKToKKyAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZiwgY2hhbm5lbD1O
b25lKToKICAgICAgICAgcmV0dXJuIGZpbmRfZXhlY3V0YWJsZSgib3BlcmFkcml2ZXIiKQogCi0g
ICAgZGVmIGluc3RhbGxfd2ViZHJpdmVyKHNlbGYsIGRlc3Q9Tm9uZSk6CisgICAgZGVmIGluc3Rh
bGxfd2ViZHJpdmVyKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCBicm93c2VyX2JpbmFy
eT1Ob25lKToKICAgICAgICAgaWYgZGVzdCBpcyBOb25lOgogICAgICAgICAgICAgZGVzdCA9IG9z
LnB3ZAogICAgICAgICBsYXRlc3QgPSBnZXQoImh0dHBzOi8vYXBpLmdpdGh1Yi5jb20vcmVwb3Mv
b3BlcmFzb2Z0d2FyZS9vcGVyYWNocm9taXVtZHJpdmVyL3JlbGVhc2VzL2xhdGVzdCIpLmpzb24o
KVsidGFnX25hbWUiXQpAQCAtNDcwLDE1ICs4MzYsMTIxIEBAIGNsYXNzIE9wZXJhKEJyb3dzZXIp
OgogICAgICAgICBvcy5jaG1vZChwYXRoLCBzdC5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQogICAg
ICAgICByZXR1cm4gcGF0aAogCi0gICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5KToKKyAgICBk
ZWYgdmVyc2lvbihzZWxmLCBiaW5hcnk9Tm9uZSwgd2ViZHJpdmVyX2JpbmFyeT1Ob25lKToKICAg
ICAgICAgIiIiUmV0cmlldmUgdGhlIHJlbGVhc2UgdmVyc2lvbiBvZiB0aGUgaW5zdGFsbGVkIGJy
b3dzZXIuIiIiCiAgICAgICAgIGJpbmFyeSA9IGJpbmFyeSBvciBzZWxmLmJpbmFyeQogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBjYWxsKGJpbmFyeSwgIi0tdmVyc2lvbiIpCiAg
ICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAg
IGxvZ2dlci53YXJuKCJGYWlsZWQgdG8gY2FsbCAlcyIsIGJpbmFyeSkKKyAgICAgICAgICAgIHNl
bGYubG9nZ2VyLndhcm5pbmcoIkZhaWxlZCB0byBjYWxsICVzIiAlIGJpbmFyeSkKKyAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgIG0gPSByZS5zZWFyY2gociJbMC05XC5dKyggW2Etel0r
KT8kIiwgb3V0cHV0LnN0cmlwKCkpCisgICAgICAgIGlmIG06CisgICAgICAgICAgICByZXR1cm4g
bS5ncm91cCgwKQorCisKK2NsYXNzIEVkZ2VDaHJvbWl1bShCcm93c2VyKToKKyAgICAiIiJNaWNy
b3NvZnRFZGdlLXNwZWNpZmljIGludGVyZmFjZS4iIiIKKyAgICBwbGF0Zm9ybSA9IHsKKyAgICAg
ICAgIkxpbnV4IjogImxpbnV4IiwKKyAgICAgICAgIldpbmRvd3MiOiAid2luIiwKKyAgICAgICAg
IkRhcndpbiI6ICJtYWNvcyIKKyAgICB9LmdldCh1bmFtZVswXSkKKyAgICBwcm9kdWN0ID0gImVk
Z2VjaHJvbWl1bSIKKyAgICBlZGdlZHJpdmVyX25hbWUgPSAibXNlZGdlZHJpdmVyIgorICAgIHJl
cXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfZWRnZV9jaHJvbWl1bS50eHQiCisKKyAgICBkZWYg
ZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNo
YW5uZWw9Tm9uZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIGRl
ZiBmaW5kX2JpbmFyeShzZWxmLCB2ZW52X3BhdGg9Tm9uZSwgY2hhbm5lbD1Ob25lKToKKyAgICAg
ICAgYmluYXJ5ID0gTm9uZQorICAgICAgICBpZiBzZWxmLnBsYXRmb3JtID09ICJ3aW4iOgorICAg
ICAgICAgICAgYmluYXJ5bmFtZSA9ICJtc2VkZ2UiCisgICAgICAgICAgICBiaW5hcnkgPSBmaW5k
X2V4ZWN1dGFibGUoYmluYXJ5bmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBiaW5hcnk6CisgICAg
ICAgICAgICAgICAgIyBVc2UgcGF0aHMgZnJvbSBkaWZmZXJlbnQgRWRnZSBjaGFubmVscyBzdGFy
dGluZyB3aXRoIFJlbGVhc2VcQmV0YVxEZXZcQ2FuYXJ5CisgICAgICAgICAgICAgICAgd2lucGF0
aHMgPSBbb3MucGF0aC5leHBhbmR1c2VyKCJ+XFxBcHBEYXRhXFxMb2NhbFxcTWljcm9zb2Z0XFxF
ZGdlXFxBcHBsaWNhdGlvbiIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGgu
ZXhwYW5kdmFycygiJFNZU1RFTURSSVZFXFxQcm9ncmFtIEZpbGVzXFxNaWNyb3NvZnRcXEVkZ2Ug
QmV0YVxcQXBwbGljYXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmV4cGFuZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlc1xcTWljcm9zb2Z0XFxFZGdl
IERldlxcQXBwbGljYXRpb24iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRo
LmV4cGFuZHZhcnMoIiRTWVNURU1EUklWRVxcUHJvZ3JhbSBGaWxlcyAoeDg2KVxcTWljcm9zb2Z0
XFxFZGdlIEJldGFcXEFwcGxpY2F0aW9uIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
b3MucGF0aC5leHBhbmR2YXJzKCIkU1lTVEVNRFJJVkVcXFByb2dyYW0gRmlsZXMgKHg4NilcXE1p
Y3Jvc29mdFxcRWRnZSBEZXZcXEFwcGxpY2F0aW9uIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgb3MucGF0aC5leHBhbmR1c2VyKCJ+XFxBcHBEYXRhXExvY2FsXFxNaWNyb3NvZnRcXEVk
Z2UgU3hTXFxBcHBsaWNhdGlvbiIpXQorICAgICAgICAgICAgICAgIHJldHVybiBmaW5kX2V4ZWN1
dGFibGUoYmluYXJ5bmFtZSwgb3MucGF0aHNlcC5qb2luKHdpbnBhdGhzKSkKKyAgICAgICAgaWYg
c2VsZi5wbGF0Zm9ybSA9PSAibWFjb3MiOgorICAgICAgICAgICAgYmluYXJ5bmFtZSA9ICJNaWNy
b3NvZnQgRWRnZSBDYW5hcnkiCisgICAgICAgICAgICBiaW5hcnkgPSBmaW5kX2V4ZWN1dGFibGUo
YmluYXJ5bmFtZSkKKyAgICAgICAgICAgIGlmIG5vdCBiaW5hcnk6CisgICAgICAgICAgICAgICAg
bWFjcGF0aHMgPSBbIi9BcHBsaWNhdGlvbnMvTWljcm9zb2Z0IEVkZ2UuYXBwL0NvbnRlbnRzL01h
Y09TIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmV4cGFuZHVzZXIoIn4v
QXBwbGljYXRpb25zL01pY3Jvc29mdCBFZGdlLmFwcC9Db250ZW50cy9NYWNPUyIpLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICIvQXBwbGljYXRpb25zL01pY3Jvc29mdCBFZGdlIENhbmFy
eS5hcHAvQ29udGVudHMvTWFjT1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBh
dGguZXhwYW5kdXNlcigifi9BcHBsaWNhdGlvbnMvTWljcm9zb2Z0IEVkZ2UgQ2FuYXJ5LmFwcC9D
b250ZW50cy9NYWNPUyIpXQorICAgICAgICAgICAgICAgIHJldHVybiBmaW5kX2V4ZWN1dGFibGUo
Ik1pY3Jvc29mdCBFZGdlIENhbmFyeSIsIG9zLnBhdGhzZXAuam9pbihtYWNwYXRocykpCisgICAg
ICAgIHJldHVybiBiaW5hcnkKKworICAgIGRlZiBmaW5kX3dlYmRyaXZlcihzZWxmLCBjaGFubmVs
PU5vbmUpOgorICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKCJtc2VkZ2Vkcml2ZXIiKQor
CisgICAgZGVmIGluc3RhbGxfd2ViZHJpdmVyKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25l
LCBicm93c2VyX2JpbmFyeT1Ob25lKToKKyAgICAgICAgaWYgc2VsZi5wbGF0Zm9ybSAhPSAid2lu
IiBhbmQgc2VsZi5wbGF0Zm9ybSAhPSAibWFjb3MiOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVF
cnJvcigiT25seSBXaW5kb3dzIGFuZCBNYWMgcGxhdGZvcm1zIGFyZSBjdXJyZW50bHkgc3VwcG9y
dGVkIikKKworICAgICAgICBpZiBkZXN0IGlzIE5vbmU6CisgICAgICAgICAgICBkZXN0ID0gb3Mu
cHdkCisKKyAgICAgICAgaWYgY2hhbm5lbCBpcyBOb25lOgorICAgICAgICAgICAgdmVyc2lvbl91
cmwgPSAiaHR0cHM6Ly9tc2VkZ2Vkcml2ZXIuYXp1cmVlZGdlLm5ldC9MQVRFU1RfREVWIgorICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgdmVyc2lvbl91cmwgPSAiaHR0cHM6Ly9tc2VkZ2Vkcml2
ZXIuYXp1cmVlZGdlLm5ldC9MQVRFU1RfJXMiICUgY2hhbm5lbC51cHBlcigpCisgICAgICAgIHZl
cnNpb24gPSBnZXQodmVyc2lvbl91cmwpLnRleHQuc3RyaXAoKQorCisgICAgICAgIGlmIHNlbGYu
cGxhdGZvcm0gPT0gIm1hY29zIjoKKyAgICAgICAgICAgIGJpdHMgPSAibWFjNjQiCisgICAgICAg
ICAgICBlZGdlZHJpdmVyX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVzdCwgc2VsZi5lZGdlZHJpdmVy
X25hbWUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiaXRzID0gIndpbjY0IiBpZiB1bmFt
ZVs0XSA9PSAieDg2XzY0IiBlbHNlICJ3aW4zMiIKKyAgICAgICAgICAgIGVkZ2Vkcml2ZXJfcGF0
aCA9IG9zLnBhdGguam9pbihkZXN0LCAiJXMuZXhlIiAlIHNlbGYuZWRnZWRyaXZlcl9uYW1lKQor
ICAgICAgICB1cmwgPSAiaHR0cHM6Ly9tc2VkZ2Vkcml2ZXIuYXp1cmVlZGdlLm5ldC8lcy9lZGdl
ZHJpdmVyXyVzLnppcCIgJSAodmVyc2lvbiwgYml0cykKKworICAgICAgICAjIGNsZWFudXAgZXhp
c3RpbmcgRWRnZSBkcml2ZXIgZmlsZXMgdG8gYXZvaWQgYWNjZXNzX2RlbmllZCBlcnJvcnMgd2hl
biB1bnppcHBpbmcKKyAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoZWRnZWRyaXZlcl9wYXRoKToK
KyAgICAgICAgICAgICMgcmVtb3ZlIHJlYWQtb25seSBhdHRyaWJ1dGUKKyAgICAgICAgICAgIG9z
LmNobW9kKGVkZ2Vkcml2ZXJfcGF0aCwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSV1hHIHwgc3Rh
dC5TX0lSV1hPKSAgIyAwNzc3CisgICAgICAgICAgICBwcmludCgiRGVsZXRlICVzIGZpbGUiICUg
ZWRnZWRyaXZlcl9wYXRoKQorICAgICAgICAgICAgb3MucmVtb3ZlKGVkZ2Vkcml2ZXJfcGF0aCkK
KyAgICAgICAgZHJpdmVyX25vdGVzX3BhdGggPSBvcy5wYXRoLmpvaW4oZGVzdCwgIkRyaXZlcl9u
b3RlcyIpCisgICAgICAgIGlmIG9zLnBhdGguaXNkaXIoZHJpdmVyX25vdGVzX3BhdGgpOgorICAg
ICAgICAgICAgcHJpbnQoIkRlbGV0ZSAlcyBmb2xkZXIiICUgZHJpdmVyX25vdGVzX3BhdGgpCisg
ICAgICAgICAgICBzaHV0aWwucm10cmVlKGRyaXZlcl9ub3Rlc19wYXRoLCBpZ25vcmVfZXJyb3Jz
PUZhbHNlLCBvbmVycm9yPWhhbmRsZV9yZW1vdmVfcmVhZG9ubHkpCisKKyAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiRG93bmxvYWRpbmcgTVNFZGdlRHJpdmVyIGZyb20gJXMiICUgdXJsKQorICAg
ICAgICB1bnppcChnZXQodXJsKS5yYXcsIGRlc3QpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxl
KGVkZ2Vkcml2ZXJfcGF0aCk6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJTdWNjZXNz
ZnVsbHkgZG93bmxvYWRlZCBNU0VkZ2VEcml2ZXIgdG8gJXMiICUgZWRnZWRyaXZlcl9wYXRoKQor
ICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKHNlbGYuZWRnZWRyaXZlcl9uYW1lLCBkZXN0
KQorCisgICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUsIHdlYmRyaXZlcl9iaW5hcnk9
Tm9uZSk6CisgICAgICAgIGlmIGJpbmFyeSBpcyBOb25lOgorICAgICAgICAgICAgYmluYXJ5ID0g
c2VsZi5maW5kX2JpbmFyeSgpCisgICAgICAgIGlmIHNlbGYucGxhdGZvcm0gIT0gIndpbiI6Cisg
ICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdmVyc2lvbl9zdHJpbmcgPSBjYWxsKGJp
bmFyeSwgIi0tdmVyc2lvbiIpLnN0cmlwKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNz
LkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5n
KCJGYWlsZWQgdG8gY2FsbCAlcyIgJSBiaW5hcnkpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgICAgIG0gPSByZS5tYXRjaChyIk1pY3Jvc29mdCBFZGdlICguKikgIiwgdmVy
c2lvbl9zdHJpbmcpCisgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gZXh0cmFjdCB2ZXJzaW9uIGZyb206ICVzIiAlIHZl
cnNpb25fc3RyaW5nKQorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgICAgICBy
ZXR1cm4gbS5ncm91cCgxKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgYmluYXJ5IGlz
IG5vdCBOb25lOgorICAgICAgICAgICAgICAgIHJldHVybiBfZ2V0X2ZpbGV2ZXJzaW9uKGJpbmFy
eSwgc2VsZi5sb2dnZXIpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWlsZWQg
dG8gZmluZCBFZGdlIGJpbmFyeS4iKQogICAgICAgICAgICAgcmV0dXJuIE5vbmUKLSAgICAgICAg
cmV0dXJuIHJlLnNlYXJjaChyIlswLTlcLl0rKCBbYS16XSspPyQiLCBvdXRwdXQuc3RyaXAoKSku
Z3JvdXAoMCkKIAogCiBjbGFzcyBFZGdlKEJyb3dzZXIpOgpAQCAtNDg3LDIwICs5NTksMzIgQEAg
Y2xhc3MgRWRnZShCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImVkZ2UiCiAgICAgcmVxdWlyZW1l
bnRzID0gInJlcXVpcmVtZW50c19lZGdlLnR4dCIKIAotICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRl
c3Q9Tm9uZSk6CisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25l
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgZGVmIGZpbmRfYmlu
YXJ5KHNlbGYpOgorICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25l
KToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCi0gICAgZGVmIGZpbmRfd2Vi
ZHJpdmVyKHNlbGYpOgorICAgIGRlZiBmaW5kX2JpbmFyeShzZWxmLCB2ZW52X3BhdGg9Tm9uZSwg
Y2hhbm5lbD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAg
ZGVmIGZpbmRfd2ViZHJpdmVyKHNlbGYsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJldHVybiBm
aW5kX2V4ZWN1dGFibGUoIk1pY3Jvc29mdFdlYkRyaXZlciIpCiAKLSAgICBkZWYgaW5zdGFsbF93
ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lKToKKyAgICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2Vs
ZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5PU5vbmUpOgogICAgICAg
ICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYgdmVyc2lvbihzZWxmLCBiaW5h
cnkpOgotICAgICAgICByZXR1cm4gTm9uZQorICAgIGRlZiB2ZXJzaW9uKHNlbGYsIGJpbmFyeT1O
b25lLCB3ZWJkcml2ZXJfYmluYXJ5PU5vbmUpOgorICAgICAgICBjb21tYW5kID0gIihHZXQtQXBw
eFBhY2thZ2UgTWljcm9zb2Z0Lk1pY3Jvc29mdEVkZ2UpLlZlcnNpb24iCisgICAgICAgIHRyeToK
KyAgICAgICAgICAgIHJldHVybiBjYWxsKCJwb3dlcnNoZWxsLmV4ZSIsIGNvbW1hbmQpLnN0cmlw
KCkKKyAgICAgICAgZXhjZXB0IChzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvciwgT1NFcnJv
cik6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gY2FsbCAlcyBp
biBQb3dlclNoZWxsIiAlIGNvbW1hbmQpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorCisKK2Ns
YXNzIEVkZ2VXZWJEcml2ZXIoRWRnZSk6CisgICAgcHJvZHVjdCA9ICJlZGdlX3dlYmRyaXZlciIK
IAogCiBjbGFzcyBJbnRlcm5ldEV4cGxvcmVyKEJyb3dzZXIpOgpAQCAtNTA5LDE5ICs5OTMsMjIg
QEAgY2xhc3MgSW50ZXJuZXRFeHBsb3JlcihCcm93c2VyKToKICAgICBwcm9kdWN0ID0gImllIgog
ICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVudHNfaWUudHh0IgogCi0gICAgZGVmIGluc3Rh
bGwoc2VsZiwgZGVzdD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBj
aGFubmVsPU5vbmUpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBk
ZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNl
IE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBmaW5kX2JpbmFyeShzZWxmKToKKyAgICBk
ZWYgZmluZF9iaW5hcnkoc2VsZiwgdmVudl9wYXRoPU5vbmUsIGNoYW5uZWw9Tm9uZSk6CiAgICAg
ICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBmaW5kX3dlYmRyaXZlcihz
ZWxmKToKKyAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZiwgY2hhbm5lbD1Ob25lKToKICAgICAg
ICAgcmV0dXJuIGZpbmRfZXhlY3V0YWJsZSgiSUVEcml2ZXJTZXJ2ZXIuZXhlIikKIAotICAgIGRl
ZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmLCBkZXN0PU5vbmUpOgorICAgIGRlZiBpbnN0YWxsX3dl
YmRyaXZlcihzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgYnJvd3Nlcl9iaW5hcnk9Tm9u
ZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiB2ZXJzaW9u
KHNlbGYsIGJpbmFyeSk6CisgICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUsIHdlYmRy
aXZlcl9iaW5hcnk9Tm9uZSk6CiAgICAgICAgIHJldHVybiBOb25lCiAKIApAQCAtNTM0LDIwICsx
MDIxLDQyIEBAIGNsYXNzIFNhZmFyaShCcm93c2VyKToKICAgICBwcm9kdWN0ID0gInNhZmFyaSIK
ICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1lbnRzX3NhZmFyaS50eHQiCiAKLSAgICBkZWYg
aW5zdGFsbChzZWxmLCBkZXN0PU5vbmUpOgorICAgIGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAot
ICAgIGRlZiBmaW5kX2JpbmFyeShzZWxmKToKKyAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5v
bmUsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAot
ICAgIGRlZiBmaW5kX3dlYmRyaXZlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIGZpbmRfZXhlY3V0
YWJsZSgic2FmYXJpZHJpdmVyIikKKyAgICBkZWYgZmluZF9iaW5hcnkoc2VsZiwgdmVudl9wYXRo
PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IK
IAotICAgIGRlZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmKToKKyAgICBkZWYgZmluZF93ZWJkcml2
ZXIoc2VsZiwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgcGF0aCA9IE5vbmUKKyAgICAgICAgaWYg
Y2hhbm5lbCA9PSAicHJldmlldyI6CisgICAgICAgICAgICBwYXRoID0gIi9BcHBsaWNhdGlvbnMv
U2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldy5hcHAvQ29udGVudHMvTWFjT1MiCisgICAgICAgIHJl
dHVybiBmaW5kX2V4ZWN1dGFibGUoInNhZmFyaWRyaXZlciIsIHBhdGgpCisKKyAgICBkZWYgaW5z
dGFsbF93ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmlu
YXJ5PU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYg
dmVyc2lvbihzZWxmLCBiaW5hcnkpOgotICAgICAgICByZXR1cm4gTm9uZQorICAgIGRlZiB2ZXJz
aW9uKHNlbGYsIGJpbmFyeT1Ob25lLCB3ZWJkcml2ZXJfYmluYXJ5PU5vbmUpOgorICAgICAgICBp
ZiB3ZWJkcml2ZXJfYmluYXJ5IGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJu
aW5nKCJDYW5ub3QgZmluZCBTYWZhcmkgdmVyc2lvbiB3aXRob3V0IHNhZmFyaWRyaXZlciIpCisg
ICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIFVzZSBgc2FmYXJpZHJpdmVyIC0tdmVy
c2lvbmAgdG8gZ2V0IHRoZSB2ZXJzaW9uLiBFeGFtcGxlIG91dHB1dDoKKyAgICAgICAgIyAiSW5j
bHVkZWQgd2l0aCBTYWZhcmkgMTIuMSAoMTQ2MDcuMS4xMSkiCisgICAgICAgICMgIkluY2x1ZGVk
IHdpdGggU2FmYXJpIFRlY2hub2xvZ3kgUHJldmlldyAoUmVsZWFzZSA2NywgMTM2MDcuMS45LjAu
MSkiCisgICAgICAgICMgVGhlIGAtLXZlcnNpb25gIGZsYWcgd2FzIGFkZGVkIGluIFNUUCA2Nywg
c28gYWxsb3cgdGhlIGNhbGwgdG8gZmFpbC4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdmVy
c2lvbl9zdHJpbmcgPSBjYWxsKHdlYmRyaXZlcl9iaW5hcnksICItLXZlcnNpb24iKS5zdHJpcCgp
CisgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkZhaWxlZCB0byBjYWxsICVzIC0tdmVyc2lvbiIgJSB3
ZWJkcml2ZXJfYmluYXJ5KQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgbSA9IHJl
Lm1hdGNoKHIiSW5jbHVkZWQgd2l0aCBTYWZhcmkgKC4qKSIsIHZlcnNpb25fc3RyaW5nKQorICAg
ICAgICBpZiBub3QgbToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkZhaWxlZCB0
byBleHRyYWN0IHZlcnNpb24gZnJvbTogJXMiICUgdmVyc2lvbl9zdHJpbmcpCisgICAgICAgICAg
ICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gbS5ncm91cCgxKQogCiAKIGNsYXNzIFNlcnZv
KEJyb3dzZXIpOgpAQCAtNTc0LDMzICsxMDgzLDYwIEBAIGNsYXNzIFNlcnZvKEJyb3dzZXIpOgog
CiAgICAgICAgIHJldHVybiAocGxhdGZvcm0sIGV4dGVuc2lvbiwgZGVjb21wcmVzcykKIAotICAg
IGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSk6CisgICAgZGVmIF9nZXQoc2VsZiwgY2hhbm5l
bD0ibmlnaHRseSIpOgorICAgICAgICBpZiBjaGFubmVsICE9ICJuaWdodGx5IjoKKyAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoIk9ubHkgbmlnaHRseSB2ZXJzaW9ucyBvZiBTZXJ2byBhcmUg
YXZhaWxhYmxlIikKKworICAgICAgICBwbGF0Zm9ybSwgZXh0ZW5zaW9uLCBfID0gc2VsZi5wbGF0
Zm9ybV9jb21wb25lbnRzKCkKKyAgICAgICAgdXJsID0gImh0dHBzOi8vZG93bmxvYWQuc2Vydm8u
b3JnL25pZ2h0bHkvJXMvc2Vydm8tbGF0ZXN0JXMiICUgKHBsYXRmb3JtLCBleHRlbnNpb24pCisg
ICAgICAgIHJldHVybiBnZXQodXJsKQorCisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9u
ZSwgY2hhbm5lbD0ibmlnaHRseSIpOgorICAgICAgICBpZiBkZXN0IGlzIE5vbmU6CisgICAgICAg
ICAgICBkZXN0ID0gb3MucHdkCisKKyAgICAgICAgcmVzcCA9IHNlbGYuX2dldChkZXN0LCBjaGFu
bmVsKQorICAgICAgICBfLCBleHRlbnNpb24sIF8gPSBzZWxmLnBsYXRmb3JtX2NvbXBvbmVudHMo
KQorCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGVzdCwgInNlcnZvLWxhdGVzdCVz
IiAlIChleHRlbnNpb24sKSksICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUocmVzcC5j
b250ZW50KQorCisgICAgZGVmIGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPSJuaWdo
dGx5Iik6CiAgICAgICAgICIiIkluc3RhbGwgbGF0ZXN0IEJyb3dzZXIgRW5naW5lLiIiIgogICAg
ICAgICBpZiBkZXN0IGlzIE5vbmU6CiAgICAgICAgICAgICBkZXN0ID0gb3MucHdkCiAKLSAgICAg
ICAgcGxhdGZvcm0sIGV4dGVuc2lvbiwgZGVjb21wcmVzcyA9IHNlbGYucGxhdGZvcm1fY29tcG9u
ZW50cygpCi0gICAgICAgIHVybCA9ICJodHRwczovL2Rvd25sb2FkLnNlcnZvLm9yZy9uaWdodGx5
LyVzL3NlcnZvLWxhdGVzdCVzIiAlIChwbGF0Zm9ybSwgZXh0ZW5zaW9uKQorICAgICAgICBfLCBf
LCBkZWNvbXByZXNzID0gc2VsZi5wbGF0Zm9ybV9jb21wb25lbnRzKCkKIAotICAgICAgICBkZWNv
bXByZXNzKGdldCh1cmwpLnJhdywgZGVzdD1kZXN0KQorICAgICAgICByZXNwID0gc2VsZi5fZ2V0
KGRlc3QsIGNoYW5uZWwpCisgICAgICAgIGRlY29tcHJlc3MocmVzcC5yYXcsIGRlc3Q9ZGVzdCkK
ICAgICAgICAgcGF0aCA9IGZpbmRfZXhlY3V0YWJsZSgic2Vydm8iLCBvcy5wYXRoLmpvaW4oZGVz
dCwgInNlcnZvIikpCiAgICAgICAgIHN0ID0gb3Muc3RhdChwYXRoKQogICAgICAgICBvcy5jaG1v
ZChwYXRoLCBzdC5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQogICAgICAgICByZXR1cm4gcGF0aAog
Ci0gICAgZGVmIGZpbmRfYmluYXJ5KHNlbGYpOgotICAgICAgICByZXR1cm4gZmluZF9leGVjdXRh
YmxlKCJzZXJ2byIpCisgICAgZGVmIGZpbmRfYmluYXJ5KHNlbGYsIHZlbnZfcGF0aD1Ob25lLCBj
aGFubmVsPU5vbmUpOgorICAgICAgICBwYXRoID0gZmluZF9leGVjdXRhYmxlKCJzZXJ2byIsIG9z
LnBhdGguam9pbih2ZW52X3BhdGgsICJzZXJ2byIpKQorICAgICAgICBpZiBwYXRoIGlzIE5vbmU6
CisgICAgICAgICAgICBwYXRoID0gZmluZF9leGVjdXRhYmxlKCJzZXJ2byIpCisgICAgICAgIHJl
dHVybiBwYXRoCiAKLSAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZik6CisgICAgZGVmIGZpbmRf
d2ViZHJpdmVyKHNlbGYsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJldHVybiBOb25lCiAKLSAg
ICBkZWYgaW5zdGFsbF93ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lKToKKyAgICBkZWYgaW5zdGFs
bF93ZWJkcml2ZXIoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUsIGJyb3dzZXJfYmluYXJ5
PU5vbmUpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYgdmVy
c2lvbihzZWxmLCBiaW5hcnkpOgorICAgIGRlZiB2ZXJzaW9uKHNlbGYsIGJpbmFyeT1Ob25lLCB3
ZWJkcml2ZXJfYmluYXJ5PU5vbmUpOgogICAgICAgICAiIiJSZXRyaWV2ZSB0aGUgcmVsZWFzZSB2
ZXJzaW9uIG9mIHRoZSBpbnN0YWxsZWQgYnJvd3Nlci4iIiIKICAgICAgICAgb3V0cHV0ID0gY2Fs
bChiaW5hcnksICItLXZlcnNpb24iKQotICAgICAgICByZXR1cm4gcmUuc2VhcmNoKHIiWzAtOVwu
XSsoIFthLXpdKyk/JCIsIG91dHB1dC5zdHJpcCgpKS5ncm91cCgwKQorICAgICAgICBtID0gcmUu
c2VhcmNoKHIiU2Vydm8gKFswLTlcLl0rLVthLWYwLTldKyk/KC1kaXJ0eSk/JCIsIG91dHB1dC5z
dHJpcCgpKQorICAgICAgICBpZiBtOgorICAgICAgICAgICAgcmV0dXJuIG0uZ3JvdXAoMCkKKwor
CitjbGFzcyBTZXJ2b1dlYkRyaXZlcihTZXJ2byk6CisgICAgcHJvZHVjdCA9ICJzZXJ2b2RyaXZl
ciIKIAogCiBjbGFzcyBTYXVjZShCcm93c2VyKToKQEAgLTYwOSwxOSArMTE0NSwyMiBAQCBjbGFz
cyBTYXVjZShCcm93c2VyKToKICAgICBwcm9kdWN0ID0gInNhdWNlIgogICAgIHJlcXVpcmVtZW50
cyA9ICJyZXF1aXJlbWVudHNfc2F1Y2UudHh0IgogCi0gICAgZGVmIGluc3RhbGwoc2VsZiwgZGVz
dD1Ob25lKToKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUp
OgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgaW5zdGFsbChz
ZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKIAotICAgIGRlZiBmaW5kX2JpbmFyeShzZWxmKToKKyAgICBkZWYgZmluZF9iaW5h
cnkoc2VsZiwgdmVuZXZfcGF0aD1Ob25lLCBjaGFubmVsPU5vbmUpOgogICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yCiAKLSAgICBkZWYgZmluZF93ZWJkcml2ZXIoc2VsZik6CisgICAg
ZGVmIGZpbmRfd2ViZHJpdmVyKHNlbGYsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmLCBkZXN0
PU5vbmUpOgorICAgIGRlZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmLCBkZXN0PU5vbmUsIGNoYW5u
ZWw9Tm9uZSwgYnJvd3Nlcl9iaW5hcnk9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVu
dGVkRXJyb3IKIAotICAgIGRlZiB2ZXJzaW9uKHNlbGYsIGJpbmFyeSk6CisgICAgZGVmIHZlcnNp
b24oc2VsZiwgYmluYXJ5PU5vbmUsIHdlYmRyaXZlcl9iaW5hcnk9Tm9uZSk6CiAgICAgICAgIHJl
dHVybiBOb25lCiAKIApAQCAtNjMxLDE3ICsxMTcwLDkzIEBAIGNsYXNzIFdlYktpdChCcm93c2Vy
KToKICAgICBwcm9kdWN0ID0gIndlYmtpdCIKICAgICByZXF1aXJlbWVudHMgPSAicmVxdWlyZW1l
bnRzX3dlYmtpdC50eHQiCiAKLSAgICBkZWYgaW5zdGFsbChzZWxmLCBkZXN0PU5vbmUpOgorICAg
IGRlZiBkb3dubG9hZChzZWxmLCBkZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiBmaW5kX2JpbmFyeShzZWxmLCBwYXRo
PU5vbmUpOgorICAgIGRlZiBpbnN0YWxsKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lKToK
KyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVmIGZpbmRfYmluYXJ5
KHNlbGYsIHZlbnZfcGF0aD1Ob25lLCBjaGFubmVsPU5vbmUpOgogICAgICAgICByZXR1cm4gTm9u
ZQogCi0gICAgZGVmIGZpbmRfd2ViZHJpdmVyKHNlbGYpOgorICAgIGRlZiBmaW5kX3dlYmRyaXZl
cihzZWxmLCBjaGFubmVsPU5vbmUpOgogICAgICAgICByZXR1cm4gTm9uZQogCi0gICAgZGVmIGlu
c3RhbGxfd2ViZHJpdmVyKHNlbGYpOgorICAgIGRlZiBpbnN0YWxsX3dlYmRyaXZlcihzZWxmLCBk
ZXN0PU5vbmUsIGNoYW5uZWw9Tm9uZSwgYnJvd3Nlcl9iaW5hcnk9Tm9uZSk6CiAgICAgICAgIHJh
aXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAotICAgIGRlZiB2ZXJzaW9uKHNlbGYsIGJpbmFyeSk6
CisgICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUsIHdlYmRyaXZlcl9iaW5hcnk9Tm9u
ZSk6CisgICAgICAgIHJldHVybiBOb25lCisKKworY2xhc3MgV2ViS2l0R1RLTWluaUJyb3dzZXIo
V2ViS2l0KToKKworICAgIGRlZiBmaW5kX2JpbmFyeShzZWxmLCB2ZW52X3BhdGg9Tm9uZSwgY2hh
bm5lbD1Ob25lKToKKyAgICAgICAgbGliZXhlY3BhdGhzID0gWyIvdXNyL2xpYmV4ZWMvd2Via2l0
Mmd0ay00LjAiXSAgIyBGZWRvcmEgcGF0aAorICAgICAgICB0cmlwbGV0ID0gIng4Nl82NC1saW51
eC1nbnUiCisgICAgICAgICMgVHJ5IHRvIHVzZSBHQ0MgdG8gZGV0ZWN0IHRoaXMgbWFjaGluZSB0
cmlwbGV0CisgICAgICAgIGdjYyA9IGZpbmRfZXhlY3V0YWJsZSgiZ2NjIikKKyAgICAgICAgaWYg
Z2NjOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHRyaXBsZXQgPSBjYWxsKGdj
YywgIi1kdW1wbWFjaGluZSIpLnN0cmlwKCkKKyAgICAgICAgICAgIGV4Y2VwdCBzdWJwcm9jZXNz
LkNhbGxlZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICMgQWRk
IERlYmlhbi9VYnVudHUgcGF0aAorICAgICAgICBsaWJleGVjcGF0aHMuYXBwZW5kKCIvdXNyL2xp
Yi8lcy93ZWJraXQyZ3RrLTQuMCIgJSB0cmlwbGV0KQorICAgICAgICBpZiBjaGFubmVsID09ICJu
aWdodGx5IjoKKyAgICAgICAgICAgIGxpYmV4ZWNwYXRocy5hcHBlbmQoIi9vcHQvd2Via2l0Z3Rr
L25pZ2h0bHkiKQorICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKCJNaW5pQnJvd3NlciIs
IG9zLnBhdGhzZXAuam9pbihsaWJleGVjcGF0aHMpKQorCisgICAgZGVmIGZpbmRfd2ViZHJpdmVy
KHNlbGYsIGNoYW5uZWw9Tm9uZSk6CisgICAgICAgIHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10K
KyAgICAgICAgaWYgY2hhbm5lbCA9PSAibmlnaHRseSI6CisgICAgICAgICAgICBwYXRoID0gIiVz
OiVzIiAlIChwYXRoLCAiL29wdC93ZWJraXRndGsvbmlnaHRseSIpCisgICAgICAgIHJldHVybiBm
aW5kX2V4ZWN1dGFibGUoIldlYktpdFdlYkRyaXZlciIsIHBhdGgpCisKKyAgICBkZWYgdmVyc2lv
bihzZWxmLCBiaW5hcnk9Tm9uZSwgd2ViZHJpdmVyX2JpbmFyeT1Ob25lKToKKyAgICAgICAgaWYg
YmluYXJ5IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICB0cnk6ICAj
IFdlYktpdEdUSyBNaW5pQnJvd3NlciBiZWZvcmUgMi4yNi4wIGRvZXNuJ3Qgc3VwcG9ydCAtLXZl
cnNpb24KKyAgICAgICAgICAgIG91dHB1dCA9IGNhbGwoYmluYXJ5LCAiLS12ZXJzaW9uIikuc3Ry
aXAoKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CisgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAjIEV4YW1wbGUgb3V0cHV0OiAiV2ViS2l0R1RL
IDIuMjYuMSIKKyAgICAgICAgaWYgb3V0cHV0OgorICAgICAgICAgICAgbSA9IHJlLm1hdGNoKHIi
V2ViS2l0R1RLICguKykiLCBvdXRwdXQpCisgICAgICAgICAgICBpZiBub3QgbToKKyAgICAgICAg
ICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJGYWlsZWQgdG8gZXh0cmFjdCB2ZXJzaW9uIGZy
b206ICVzIiAlIG91dHB1dCkKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAg
ICAgcmV0dXJuIG0uZ3JvdXAoMSkKKyAgICAgICAgcmV0dXJuIE5vbmUKKworCitjbGFzcyBFcGlw
aGFueShCcm93c2VyKToKKyAgICAiIiJFcGlwaGFueS1zcGVjaWZpYyBpbnRlcmZhY2UuIiIiCisK
KyAgICBwcm9kdWN0ID0gImVwaXBoYW55IgorICAgIHJlcXVpcmVtZW50cyA9ICJyZXF1aXJlbWVu
dHNfZXBpcGhhbnkudHh0IgorCisgICAgZGVmIGRvd25sb2FkKHNlbGYsIGRlc3Q9Tm9uZSwgY2hh
bm5lbD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisgICAgZGVm
IGluc3RhbGwoc2VsZiwgZGVzdD1Ob25lLCBjaGFubmVsPU5vbmUpOgorICAgICAgICByYWlzZSBO
b3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYgZmluZF9iaW5hcnkoc2VsZiwgdmVudl9wYXRo
PU5vbmUsIGNoYW5uZWw9Tm9uZSk6CisgICAgICAgIHJldHVybiBmaW5kX2V4ZWN1dGFibGUoImVw
aXBoYW55IikKKworICAgIGRlZiBmaW5kX3dlYmRyaXZlcihzZWxmLCBjaGFubmVsPU5vbmUpOgor
ICAgICAgICByZXR1cm4gZmluZF9leGVjdXRhYmxlKCJXZWJLaXRXZWJEcml2ZXIiKQorCisgICAg
ZGVmIGluc3RhbGxfd2ViZHJpdmVyKHNlbGYsIGRlc3Q9Tm9uZSwgY2hhbm5lbD1Ob25lLCBicm93
c2VyX2JpbmFyeT1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisg
ICAgZGVmIHZlcnNpb24oc2VsZiwgYmluYXJ5PU5vbmUsIHdlYmRyaXZlcl9iaW5hcnk9Tm9uZSk6
CisgICAgICAgIGlmIGJpbmFyeSBpcyBOb25lOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAg
ICAgICAgb3V0cHV0ID0gY2FsbChiaW5hcnksICItLXZlcnNpb24iKQorICAgICAgICBpZiBvdXRw
dXQ6CisgICAgICAgICAgICAjIFN0YWJsZSByZWxlYXNlIG91dHB1dCBsb29rcyBsaWtlOiAiV2Vi
IDMuMzAuMiIKKyAgICAgICAgICAgICMgVGVjaCBQcmV2aWV3IG91dHB1dCBsb29rcyBsaWtlICJX
ZWIgMy4zMS4zLTg4LWc5N2RiNGY0MGYiCisgICAgICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0
KClbMV0KICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2NvbW1hbmRzLmpzb24gYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9jb21tYW5k
cy5qc29uCmluZGV4IDBlYTZiMjUyNzZmZjQ4MTM0MGI1NGI0YzcyMzQwYTM3OTA0MDM4MzcuLjYw
ZmUxNjIxYWYwZGVjZDBmYWE0MzRmMjZkY2JhOTk1MTU0MTczZTcgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2NvbW1hbmRz
Lmpzb24KKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvY29tbWFuZHMuanNvbgpAQCAtMSwxNSArMSw5MyBAQAogewotICAgICJydW4iOiB7
InBhdGgiOiAicnVuLnB5IiwgInNjcmlwdCI6ICJydW4iLCAicGFyc2VyIjogImNyZWF0ZV9wYXJz
ZXIiLCAiaGVscCI6ICJSdW4gdGVzdHMgaW4gYSBicm93c2VyIiwKLSAgICAgICAgICAgICJ2aXJ0
dWFsZW52IjogdHJ1ZSwgImluc3RhbGwiOiBbInJlcXVlc3RzIl0sICJyZXF1aXJlbWVudHMiOiBb
Ii4uL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0Il19LAotICAgICJ1cGRhdGUtZXhwZWN0YXRp
b25zIjogeyJwYXRoIjogInVwZGF0ZS5weSIsICJzY3JpcHQiOiAidXBkYXRlX2V4cGVjdGF0aW9u
cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBhcnNlciI6ICJjcmVhdGVfcGFyc2Vy
X3VwZGF0ZSIsICJoZWxwIjogIlVwZGF0ZSBleHBlY3RhdGlvbnMgZmlsZXMgZnJvbSByYXcgbG9n
cy4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2aXJ0dWFsZW52IjogdHJ1ZSwgImlu
c3RhbGwiOiBbInJlcXVlc3RzIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlcXVp
cmVtZW50cyI6IFsiLi4vd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQiXX0sCi0gICAgImZpbGVz
LWNoYW5nZWQiOiB7InBhdGgiOiAidGVzdGZpbGVzLnB5IiwgInNjcmlwdCI6ICJydW5fY2hhbmdl
ZF9maWxlcyIsICJwYXJzZXIiOiAiZ2V0X3BhcnNlciIsCi0gICAgICAgICAgICAgICAgICAgICAg
ImhlbHAiOiAiR2V0IGEgbGlzdCBvZiBmaWxlcyB0aGF0IGhhdmUgY2hhbmdlZCIsICJ2aXJ0dWFs
ZW52IjogZmFsc2V9LAotICAgICJ0ZXN0cy1hZmZlY3RlZCI6IHsicGF0aCI6ICJ0ZXN0ZmlsZXMu
cHkiLCAic2NyaXB0IjogInJ1bl90ZXN0c19hZmZlY3RlZCIsICJwYXJzZXIiOiAiZ2V0X3BhcnNl
cl9hZmZlY3RlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICJoZWxwIjogIkdldCBhIGxpc3Qg
b2YgdGVzdHMgYWZmZWN0ZWQgYnkgY2hhbmdlcyIsICJ2aXJ0dWFsZW52IjogZmFsc2V9LAotICAg
ICJpbnN0YWxsIjogeyJwYXRoIjogImluc3RhbGwucHkiLCAic2NyaXB0IjogInJ1biIsICJwYXJz
ZXIiOiAiZ2V0X3BhcnNlciIsICJoZWxwIjogIkluc3RhbGwgYnJvd3NlciBjb21wb25lbnRzIiwK
LSAgICAgICAgICAgICAgICAiaW5zdGFsbCI6IFsibW96ZG93bmxvYWQiLCAibW96aW5zdGFsbCJd
fSwKLSAgICAiYnJhbmNoLXBvaW50IjogeyJwYXRoIjogInRlc3RmaWxlcy5weSIsICJzY3JpcHQi
OiAiZGlzcGxheV9icmFuY2hfcG9pbnQiLCAicGFyc2VyIjogbnVsbCwgImhlbHAiOiAiUHJpbnQg
YnJhbmNoIHBvaW50IGZyb20gbWFzdGVyIiwgInZpcnR1YWxlbnYiOiBmYWxzZX0KKyAgInJ1biI6
IHsKKyAgICAicGF0aCI6ICJydW4ucHkiLAorICAgICJzY3JpcHQiOiAicnVuIiwKKyAgICAicGFy
c2VyIjogImNyZWF0ZV9wYXJzZXIiLAorICAgICJoZWxwIjogIlJ1biB0ZXN0cyBpbiBhIGJyb3dz
ZXIiLAorICAgICJ2aXJ0dWFsZW52IjogdHJ1ZSwKKyAgICAiaW5zdGFsbCI6IFsKKyAgICAgICJy
ZXF1ZXN0cyIsCisgICAgICAienN0YW5kYXJkIgorICAgIF0sCisgICAgInJlcXVpcmVtZW50cyI6
IFsKKyAgICAgICIuLi93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dCIKKyAgICBdCisgIH0sCisg
ICJjcmVhdGUiOiB7CisgICAgInBhdGgiOiAiY3JlYXRlLnB5IiwKKyAgICAic2NyaXB0IjogInJ1
biIsCisgICAgInBhcnNlciI6ICJnZXRfcGFyc2VyIiwKKyAgICAiaGVscCI6ICJDcmVhdGUgYSBu
ZXcgd3B0IHRlc3QiCisgIH0sCisgICJ1cGRhdGUtZXhwZWN0YXRpb25zIjogeworICAgICJwYXRo
IjogInVwZGF0ZS5weSIsCisgICAgInNjcmlwdCI6ICJ1cGRhdGVfZXhwZWN0YXRpb25zIiwKKyAg
ICAicGFyc2VyIjogImNyZWF0ZV9wYXJzZXJfdXBkYXRlIiwKKyAgICAiaGVscCI6ICJVcGRhdGUg
ZXhwZWN0YXRpb25zIGZpbGVzIGZyb20gcmF3IGxvZ3MuIiwKKyAgICAidmlydHVhbGVudiI6IHRy
dWUsCisgICAgImluc3RhbGwiOiBbCisgICAgICAicmVxdWVzdHMiCisgICAgXSwKKyAgICAicmVx
dWlyZW1lbnRzIjogWworICAgICAgIi4uL3dwdHJ1bm5lci9yZXF1aXJlbWVudHMudHh0IgorICAg
IF0KKyAgfSwKKyAgImZpbGVzLWNoYW5nZWQiOiB7CisgICAgInBhdGgiOiAidGVzdGZpbGVzLnB5
IiwKKyAgICAic2NyaXB0IjogInJ1bl9jaGFuZ2VkX2ZpbGVzIiwKKyAgICAicGFyc2VyIjogImdl
dF9wYXJzZXIiLAorICAgICJoZWxwIjogIkdldCBhIGxpc3Qgb2YgZmlsZXMgdGhhdCBoYXZlIGNo
YW5nZWQiLAorICAgICJ2aXJ0dWFsZW52IjogZmFsc2UKKyAgfSwKKyAgInRlc3RzLWFmZmVjdGVk
IjogeworICAgICJwYXRoIjogInRlc3RmaWxlcy5weSIsCisgICAgInNjcmlwdCI6ICJydW5fdGVz
dHNfYWZmZWN0ZWQiLAorICAgICJwYXJzZXIiOiAiZ2V0X3BhcnNlcl9hZmZlY3RlZCIsCisgICAg
ImhlbHAiOiAiR2V0IGEgbGlzdCBvZiB0ZXN0cyBhZmZlY3RlZCBieSBjaGFuZ2VzIiwKKyAgICAi
dmlydHVhbGVudiI6IGZhbHNlCisgIH0sCisgICJpbnN0YWxsIjogeworICAgICJwYXRoIjogImlu
c3RhbGwucHkiLAorICAgICJzY3JpcHQiOiAicnVuIiwKKyAgICAicGFyc2VyIjogImdldF9wYXJz
ZXIiLAorICAgICJoZWxwIjogIkluc3RhbGwgYnJvd3NlciBjb21wb25lbnRzIiwKKyAgICAiaW5z
dGFsbCI6IFsKKyAgICAgICJtb3pkb3dubG9hZCIsCisgICAgICAibW96aW5zdGFsbCIKKyAgICBd
CisgIH0sCisgICJicmFuY2gtcG9pbnQiOiB7CisgICAgInBhdGgiOiAidGVzdGZpbGVzLnB5IiwK
KyAgICAic2NyaXB0IjogImRpc3BsYXlfYnJhbmNoX3BvaW50IiwKKyAgICAicGFyc2VyIjogbnVs
bCwKKyAgICAiaGVscCI6ICJQcmludCBicmFuY2ggcG9pbnQgZnJvbSBtYXN0ZXIiLAorICAgICJ2
aXJ0dWFsZW52IjogZmFsc2UKKyAgfSwKKyAgInJldi1saXN0IjogeworICAgICJwYXRoIjogInJl
dmxpc3QucHkiLAorICAgICJzY3JpcHQiOiAicnVuX3Jldl9saXN0IiwKKyAgICAicGFyc2VyIjog
ImdldF9wYXJzZXIiLAorICAgICJoZWxwIjogIkxpc3QgdGFnZ2VkIHJldmlzaW9ucyBhdCByZWd1
bGFyIGludGVydmFscyIsCisgICAgInZpcnR1YWxlbnYiOiBmYWxzZQorICB9LAorICAiaW5zdGFs
bC1hbmRyb2lkLWVtdWxhdG9yIjogeworICAgICJwYXRoIjogImFuZHJvaWQucHkiLAorICAgICJz
Y3JpcHQiOiAicnVuX2luc3RhbGwiLAorICAgICJwYXJzZXIiOiAiZ2V0X3BhcnNlcl9pbnN0YWxs
IiwKKyAgICAiaGVscCI6ICJTZXR1cCB0aGUgeDg2IGFuZHJvaWQgZW11bGF0b3IiLAorICAgICJ2
aXJ0dWFsZW52IjogdHJ1ZSwKKyAgICAiaW5zdGFsbCI6IFsKKyAgICAgICJyZXF1ZXN0cyIKKyAg
ICBdCisgIH0sCisgICJzdGFydC1hbmRyb2lkLWVtdWxhdG9yIjogeworICAgICJwYXRoIjogImFu
ZHJvaWQucHkiLAorICAgICJzY3JpcHQiOiAicnVuX3N0YXJ0IiwKKyAgICAicGFyc2VyIjogImdl
dF9wYXJzZXJfc3RhcnQiLAorICAgICJoZWxwIjogIlN0YXJ0IHRoZSB4ODYgYW5kcm9pZCBlbXVs
YXRvciIsCisgICAgInZpcnR1YWxlbnYiOiB0cnVlLAorICAgICJpbnN0YWxsIjogWworICAgICAg
InJlcXVlc3RzIgorICAgIF0KKyAgfQogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L2luc3RhbGwucHkK
aW5kZXggZDc3OTY1MWM5OTBlMmI3YmE3OThmMDg2ZTgwZjZkYzhiZWFjNTI1ZC4uMjQ5MTVmMGM5
OGQwYmUzYTg2NGEzYTUxNWJhMGUxNjJkYzM3ZGE4YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvaW5zdGFsbC5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9p
bnN0YWxsLnB5CkBAIC0yLDIwICsyLDY4IEBAIGltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGJyb3dz
ZXIKIGltcG9ydCBzeXMKIAorCitsYXRlc3RfY2hhbm5lbHMgPSB7CisgICAgJ2ZpcmVmb3gnOiAn
bmlnaHRseScsCisgICAgJ2Nocm9tZSc6ICdkZXYnLAorICAgICdjaHJvbWVfYW5kcm9pZCc6ICdk
ZXYnLAorICAgICdlZGdlY2hyb21pdW0nOiAnZGV2JywKKyAgICAnc2FmYXJpJzogJ3ByZXZpZXcn
LAorICAgICdzZXJ2byc6ICduaWdodGx5JworfQorCitjaGFubmVsX2J5X25hbWUgPSB7CisgICAg
J3N0YWJsZSc6ICdzdGFibGUnLAorICAgICdyZWxlYXNlJzogJ3N0YWJsZScsCisgICAgJ2JldGEn
OiAnYmV0YScsCisgICAgJ25pZ2h0bHknOiBsYXRlc3RfY2hhbm5lbHMsCisgICAgJ2Rldic6IGxh
dGVzdF9jaGFubmVscywKKyAgICAncHJldmlldyc6IGxhdGVzdF9jaGFubmVscywKKyAgICAnZXhw
ZXJpbWVudGFsJzogbGF0ZXN0X2NoYW5uZWxzLAorICAgICdjYW5hcnknOiAnY2FuYXJ5JywKK30K
KworCiBkZWYgZ2V0X3BhcnNlcigpOgotICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFy
c2VyKCkKLSAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdicm93c2VyJywgY2hvaWNlcz1bJ2ZpcmVm
b3gnLCAnY2hyb21lJ10sCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoZGVz
Y3JpcHRpb249IiIiSW5zdGFsbCBhIGdpdmVuIGJyb3dzZXIgb3Igd2ViZHJpdmVyIGZyb250ZW5k
LgorCisgICAgRm9yIGNvbnZlbmllbmNlIHRoZSByZWxlYXNlIGNoYW5uZWwgb2YgdGhlIGJyb3dz
ZXIgYWNjZXB0cyB2YXJpb3VzIHNwZWxsaW5ncywKKyAgICBidXQgd2UgYWN0dWFsbHkgc3VwcG9y
dCBhdCBtb3N0IHRocmVlIHZhcmlhbnRzOyB3aGF0ZXZlciB0aGUgbGF0ZXN0IGRldmVsb3BtZW50
CisgICAgcmVsZWFzZSBpcyAoZS5nLiBGaXJlZm94IG5pZ2h0bHkgb3IgQ2hyb21lIGRldiksIHRo
ZSBsYXRlc3QgYmV0YSByZWxlYXNlLCBhbmQKKyAgICB0aGUgbW9zdCByZWNlbnQgc3RhYmxlIHJl
bGVhc2UuIiIiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2Jyb3dzZXInLCBjaG9pY2VzPVsn
ZmlyZWZveCcsICdjaHJvbWUnLCAnc2Vydm8nXSwKICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J25hbWUgb2Ygd2ViIGJyb3dzZXIgcHJvZHVjdCcpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgnY29tcG9uZW50JywgY2hvaWNlcz1bJ2Jyb3dzZXInLCAnd2ViZHJpdmVyJ10sCiAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSduYW1lIG9mIGNvbXBvbmVudCcpCisgICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgnLS1jaGFubmVsJywgY2hvaWNlcz1jaGFubmVsX2J5X25hbWUua2V5cygpLAor
ICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0ibmlnaHRseSIsIGhlbHA9J05hbWUgb2Yg
YnJvd3NlciByZWxlYXNlIGNoYW5uZWwuICcKKyAgICAgICAgICAgICAgICAgICAgICAgICcic3Rh
YmxlIiBhbmQgInJlbGVhc2UiIGFyZSBzeW5vbnltcyBmb3IgdGhlIGxhdGVzdCBicm93c2VyIHN0
YWJsZSByZWxlYXNlLCcKKyAgICAgICAgICAgICAgICAgICAgICAgICcibmlnaHRseSIsICJkZXYi
LCAiZXhwZXJpbWVudGFsIiwgYW5kICJwcmV2aWV3IiBhcmUgYWxsIHN5bm9ueW1zIGZvciAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAndGhlIGxhdGVzdCBhdmFpbGFibGUgZGV2ZWxvcG1lbnQg
cmVsZWFzZS4gRm9yIFdlYkRyaXZlciBpbnN0YWxscywgJworICAgICAgICAgICAgICAgICAgICAg
ICAgJ3dlIGF0dGVtcHQgdG8gc2VsZWN0IGFuIGFwcHJvcHJpYXRlLCBjb21wYXRpYmxlLCB2ZXJz
aW9uIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgICAgJ2xhdGVzdCBicm93c2VyIHJl
bGVhc2Ugb24gdGhlIHNlbGVjdGVkIGNoYW5uZWwuJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50
KCctLWRvd25sb2FkLW9ubHknLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0iRG93bmxvYWQgdGhlIHNlbGVjdGVkIGNvbXBvbmVudCBidXQgZG9uJ3Qg
aW5zdGFsbCBpdCIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWQnLCAnLS1kZXN0aW5hdGlv
bicsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdmaWxlc3lzdGVtIGRpcmVjdG9yeSB0
byBwbGFjZSB0aGUgY29tcG9uZW50JykKICAgICByZXR1cm4gcGFyc2VyCiAKIAorZGVmIGdldF9j
aGFubmVsKGJyb3dzZXIsIGNoYW5uZWwpOgorICAgIGNoYW5uZWwgPSBjaGFubmVsX2J5X25hbWVb
Y2hhbm5lbF0KKyAgICBpZiBpc2luc3RhbmNlKGNoYW5uZWwsIGRpY3QpOgorICAgICAgICBjaGFu
bmVsID0gY2hhbm5lbC5nZXQoYnJvd3NlcikKKyAgICByZXR1cm4gY2hhbm5lbAorCisKIGRlZiBy
dW4odmVudiwgKiprd2FyZ3MpOgogICAgIGJyb3dzZXIgPSBrd2FyZ3NbImJyb3dzZXIiXQogICAg
IGRlc3RpbmF0aW9uID0ga3dhcmdzWyJkZXN0aW5hdGlvbiJdCisgICAgY2hhbm5lbCA9IGdldF9j
aGFubmVsKGJyb3dzZXIsIGt3YXJnc1siY2hhbm5lbCJdKQorCisgICAgaWYgY2hhbm5lbCAhPSBr
d2FyZ3NbImNoYW5uZWwiXToKKyAgICAgICAgcHJpbnQoIkludGVycHJldGluZyBjaGFubmVsICcl
cycgYXMgJyVzJyIgJSAoa3dhcmdzWyJjaGFubmVsIl0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWwpKQogCiAgICAgaWYgZGVzdGlu
YXRpb24gaXMgTm9uZToKICAgICAgICAgaWYgdmVudjoKQEAgLTI3LDE1ICs3NSwyMiBAQCBkZWYg
cnVuKHZlbnYsICoqa3dhcmdzKToKICAgICAgICAgICAgIHJhaXNlIGFyZ3BhcnNlLkFyZ3VtZW50
RXJyb3IoTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5v
IC0tZGVzdGluYXRpb24gYXJndW1lbnQsIGFuZCBubyBkZWZhdWx0IGZvciB0aGUgZW52aXJvbm1l
bnQiKQogCi0gICAgaW5zdGFsbChicm93c2VyLCBrd2FyZ3NbImNvbXBvbmVudCJdLCBkZXN0aW5h
dGlvbikKKyAgICBpbnN0YWxsKGJyb3dzZXIsIGt3YXJnc1siY29tcG9uZW50Il0sIGRlc3RpbmF0
aW9uLCBjaGFubmVsLAorICAgICAgICAgICAgZG93bmxvYWRfb25seT1rd2FyZ3NbImRvd25sb2Fk
X29ubHkiXSkKKworCitkZWYgaW5zdGFsbChuYW1lLCBjb21wb25lbnQsIGRlc3RpbmF0aW9uLCBj
aGFubmVsPSJuaWdodGx5IiwgbG9nZ2VyPU5vbmUsIGRvd25sb2FkX29ubHk9RmFsc2UpOgorICAg
IGlmIGxvZ2dlciBpcyBOb25lOgorICAgICAgICBpbXBvcnQgbG9nZ2luZworICAgICAgICBsb2dn
ZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiaW5zdGFsbCIpCiAKKyAgICBwcmVmaXggPSAiZG93bmxv
YWQiIGlmIGRvd25sb2FkX29ubHkgZWxzZSAiaW5zdGFsbCIKKyAgICBzdWZmaXggPSAiX3dlYmRy
aXZlciIgaWYgY29tcG9uZW50ID09ICd3ZWJkcml2ZXInIGVsc2UgIiIKIAotZGVmIGluc3RhbGwo
bmFtZSwgY29tcG9uZW50LCBkZXN0aW5hdGlvbik6Ci0gICAgaWYgY29tcG9uZW50ID09ICd3ZWJk
cml2ZXInOgotICAgICAgICBtZXRob2QgPSAnaW5zdGFsbF93ZWJkcml2ZXInCi0gICAgZWxzZToK
LSAgICAgICAgbWV0aG9kID0gJ2luc3RhbGwnCisgICAgbWV0aG9kID0gcHJlZml4ICsgc3VmZml4
CiAKICAgICBzdWJjbGFzcyA9IGdldGF0dHIoYnJvd3NlciwgbmFtZS50aXRsZSgpKQogICAgIHN5
cy5zdGRvdXQud3JpdGUoJ05vdyBpbnN0YWxsaW5nICVzICVzLi4uXG4nICUgKG5hbWUsIGNvbXBv
bmVudCkpCi0gICAgZ2V0YXR0cihzdWJjbGFzcygpLCBtZXRob2QpKGRlc3Q9ZGVzdGluYXRpb24p
CisgICAgcGF0aCA9IGdldGF0dHIoc3ViY2xhc3MobG9nZ2VyKSwgbWV0aG9kKShkZXN0PWRlc3Rp
bmF0aW9uLCBjaGFubmVsPWNoYW5uZWwpCisgICAgaWYgcGF0aDoKKyAgICAgICAgc3lzLnN0ZG91
dC53cml0ZSgnQmluYXJ5ICVzIGFzICVzXG4nICUgKCJkb3dubG9hZGVkIiBpZiBkb3dubG9hZF9v
bmx5IGVsc2UgImluc3RhbGxlZCIsIHBhdGgsKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L21hcmtkb3duLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvbWFya2Rv
d24ucHkKaW5kZXggOGI1ZmY4MDc5ZGYwODU2MWVkNGYwMTRkZWE4N2E1OGMzNTg2OTJjZC4uNDMw
MjBjZGFmZTZlMzM2MTAyYWNmNDk4NmJmM2FjMWE2YjI1ZGUwZCAxMDA2NDQKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvbWFya2Rvd24u
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvbWFya2Rvd24ucHkKQEAgLTEsMyArMSw1IEBACitmcm9tIGZ1bmN0b29scyBpbXBvcnQg
cmVkdWNlCisKIGRlZiBmb3JtYXRfY29tbWVudF90aXRsZShwcm9kdWN0KToKICAgICAiIiJQcm9k
dWNlIGEgTWFya2Rvd24tZm9ybWF0dGVkIHN0cmluZyBiYXNlZCBvbiBhIGdpdmVuICJwcm9kdWN0
Ii0tYSBzdHJpbmcKICAgICBjb250YWluaW5nIGEgYnJvd3NlciBpZGVudGlmaWVyIG9wdGlvbmFs
bHkgZm9sbG93ZWQgYnkgYSBjb2xvbiBhbmQgYQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcGF0aHMgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9wYXRocwppbmRleCAw
ZWYxM2M5NmUzOGM0NmExYmYwNjM2NzkyYTk5MzMxMjZkMWNhZDA2Li4zNTg2N2M0Y2NiZmU5NWM0
ZTcxYThkNzFjZTkwYTdiMzc4OTUxZmQ1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9wYXRocworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9wYXRocwpAQCAtMSw0
ICsxLDUgQEAKIHRvb2xzL2NpLwordG9vbHMvZG9ja2VyLwogdG9vbHMvbGludC8KIHRvb2xzL21h
bmlmZXN0LwogdG9vbHMvc2VydmUvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJlbWVudHMudHh0IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcmVxdWlyZW1l
bnRzLnR4dAppbmRleCA0NmM0YjEzYTNiZjNiMDQ1ZmM0NzcyNzJmOWI1NTVlZjkwOTcxZTczLi41
NjYwODNjYjZiZTg5YTAzZTQ4Y2M1YzFhMGE4OGZjNWNlNTNhODUzIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9yZXF1aXJl
bWVudHMudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L3JlcXVpcmVtZW50cy50eHQKQEAgLTEgKzEgQEAKLXJlcXVlc3RzPT0yLjE5
LjEKK3JlcXVlc3RzPT0yLjIyLjAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3J1bi5weQppbmRleCBmMDcyY2Y3
ZjAyMTE5ZWQxNTgxYmZjYTE1YzBhOTRlOTJiZWZkNGMyLi40YzFmMmM5OTEyOGRlODkzN2RjYTAx
NDc5YjFiNGM0MzE5NDE0ZjhiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9ydW4ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvcnVuLnB5CkBAIC0zLDExICsz
LDEyIEBAIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgc3lzCiBmcm9tIGRpc3R1
dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQg
aW5wdXQKIAogd3B0X3Jvb3QgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKG9zLnBhdGgu
ZGlybmFtZShfX2ZpbGVfXyksIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKIHN5cy5wYXRoLmluc2Vy
dCgwLCBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKHdwdF9yb290LCAidG9vbHMiKSkpCiAK
LWZyb20gLiBpbXBvcnQgYnJvd3NlciwgdXRpbHMsIHZpcnR1YWxlbnYKK2Zyb20gLiBpbXBvcnQg
YnJvd3NlciwgaW5zdGFsbCwgdGVzdGZpbGVzLCB1dGlscywgdmlydHVhbGVudgogZnJvbSAuLnNl
cnZlIGltcG9ydCBzZXJ2ZQogCiBsb2dnZXIgPSBOb25lCkBAIC00NCwxNyArNDUsMzIgQEAgZGVm
IGNyZWF0ZV9wYXJzZXIoKToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihh
ZGRfaGVscD1GYWxzZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCJwcm9kdWN0IiwgYWN0aW9u
PSJzdG9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJCcm93c2VyIHRvIHJ1biB0
ZXN0cyBpbiIpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1hZmZlY3RlZCIsIGFjdGlvbj0i
c3RvcmUiLCBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4g
YWZmZWN0ZWQgdGVzdHMgc2luY2UgcmV2aXNoIikKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCIt
LXllcyIsICIteSIsIGRlc3Q9InByb21wdCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZWZhdWx0
PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEb24ndCBwcm9tcHQgYmVmb3Jl
IGluc3RhbGxpbmcgY29tcG9uZW50cyIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pbnN0
YWxsLWJyb3dzZXIiLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgaGVscD0iSW5zdGFsbCB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IHZlcnNpb24gb2YgdGhlIGJy
b3dzZXIiKQorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iSW5zdGFsbCB0aGUgYnJvd3Nl
ciBmcm9tIHRoZSByZWxlYXNlIGNoYW5uZWwgc3BlY2lmaWVkIGJ5IC0tY2hhbm5lbCAiCisgICAg
ICAgICAgICAgICAgICAgICAgICAiKG9yIHRoZSBuaWdodGx5IGNoYW5uZWwgYnkgZGVmYXVsdCku
IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWNoYW5uZWwiLCBhY3Rpb249InN0b3JlIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9aW5zdGFsbC5jaGFubmVsX2J5X25hbWUu
a2V5cygpLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLCBoZWxwPSdOYW1l
IG9mIGJyb3dzZXIgcmVsZWFzZSBjaGFubmVsLiAnCisgICAgICAgICAgICAgICAgICAgICAgICAn
InN0YWJsZSIgYW5kICJyZWxlYXNlIiBhcmUgc3lub255bXMgZm9yIHRoZSBsYXRlc3QgYnJvd3Nl
ciBzdGFibGUgJworICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGVhc2UsICJuaWdodGx5Iiwg
ImRldiIsICJleHBlcmltZW50YWwiLCBhbmQgInByZXZpZXciIGFyZSBhbGwgJworICAgICAgICAg
ICAgICAgICAgICAgICAgJ3N5bm9ueW1zIGZvciB0aGUgbGF0ZXN0IGF2YWlsYWJsZSBkZXZlbG9w
bWVudCByZWxlYXNlLiAoRm9yIFdlYkRyaXZlciAnCisgICAgICAgICAgICAgICAgICAgICAgICAn
aW5zdGFsbHMsIHdlIGF0dGVtcHQgdG8gc2VsZWN0IGFuIGFwcHJvcHJpYXRlLCBjb21wYXRpYmxl
IHZlcnNpb24gZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICAgICd0aGUgbGF0ZXN0IGJyb3dz
ZXIgcmVsZWFzZSBvbiB0aGUgc2VsZWN0ZWQgY2hhbm5lbC4pICcKKyAgICAgICAgICAgICAgICAg
ICAgICAgICdUaGlzIGZsYWcgb3ZlcnJpZGVzIC0tYnJvd3Nlci1jaGFubmVsLicpCiAgICAgcGFy
c2VyLl9hZGRfY29udGFpbmVyX2FjdGlvbnMod3B0Y29tbWFuZGxpbmUuY3JlYXRlX3BhcnNlcigp
KQogICAgIHJldHVybiBwYXJzZXIKIAogCi1kZWYgZXhpdChtc2cpOgotICAgIGxvZ2dlci5lcnJv
cihtc2cpCi0gICAgc3lzLmV4aXQoMSkKK2RlZiBleGl0KG1zZz1Ob25lKToKKyAgICBpZiBtc2c6
CisgICAgICAgIGxvZ2dlci5jcml0aWNhbChtc2cpCisgICAgICAgIHN5cy5leGl0KDEpCisgICAg
ZWxzZToKKyAgICAgICAgc3lzLmV4aXQoMCkKIAogCiBkZWYgYXJnc19nZW5lcmFsKGt3YXJncyk6
CkBAIC05MCw5ICsxMDYsOSBAQCBvdGhlcndpc2UgaW5zdGFsbCBPcGVuU1NMIGFuZCBlbnN1cmUg
dGhhdCBpdCdzIG9uIHlvdXIgJFBBVEguIiIiKQogCiAKIGRlZiBjaGVja19lbnZpcm9uKHByb2R1
Y3QpOgotICAgIGlmIHByb2R1Y3Qgbm90IGluICgiZmlyZWZveCIsICJzZXJ2byIpOgorICAgIGlm
IHByb2R1Y3Qgbm90IGluICgiYW5kcm9pZF93ZWJ2aWV3IiwgImNocm9tZSIsICJjaHJvbWVfYW5k
cm9pZCIsICJmaXJlZm94IiwgImZpcmVmb3hfYW5kcm9pZCIsICJzZXJ2byIpOgogICAgICAgICBj
b25maWdfYnVpbGRlciA9IHNlcnZlLmJ1aWxkX2NvbmZpZyhvcy5wYXRoLmpvaW4od3B0X3Jvb3Qs
ICJjb25maWcuanNvbiIpKQotICAgICAgICAjIE92dmVyaWRlIHRoZSBwb3J0cyB0byBhdm9pZCBs
b29raW5nIGZvciBmcmVlIHBvcnRzCisgICAgICAgICMgT3ZlcnJpZGUgdGhlIHBvcnRzIHRvIGF2
b2lkIGxvb2tpbmcgZm9yIGZyZWUgcG9ydHMKICAgICAgICAgY29uZmlnX2J1aWxkZXIuc3NsID0g
eyJ0eXBlIjogIm5vbmUifQogICAgICAgICBjb25maWdfYnVpbGRlci5wb3J0cyA9IHsiaHR0cCI6
IFs4MDAwXX0KIApAQCAtMTA1LDEwICsxMjEsMTUgQEAgZGVmIGNoZWNrX2Vudmlyb24ocHJvZHVj
dCk6CiAKICAgICAgICAgbWlzc2luZ19ob3N0cyA9IHNldChleHBlY3RlZF9ob3N0cykKICAgICAg
ICAgaWYgaXNfd2luZG93czoKLSAgICAgICAgICAgIGhvc3RzX3BhdGggPSAiQzpcV2luZG93c1xT
eXN0ZW0zMlxkcml2ZXJzXGV0Y1xob3N0cyIKKyAgICAgICAgICAgIGhvc3RzX3BhdGggPSByIiVz
XFN5c3RlbTMyXGRyaXZlcnNcZXRjXGhvc3RzIiAlIG9zLmVudmlyb24uZ2V0KCJTeXN0ZW1Sb290
IiwgciJDOlxXaW5kb3dzIikKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGhvc3RzX3BhdGgg
PSAiL2V0Yy9ob3N0cyIKIAorICAgICAgICBpZiBvcy5wYXRoLmFic3BhdGgob3MuY3VyZGlyKSA9
PSB3cHRfcm9vdDoKKyAgICAgICAgICAgIHdwdF9wYXRoID0gIndwdCIKKyAgICAgICAgZWxzZToK
KyAgICAgICAgICAgIHdwdF9wYXRoID0gb3MucGF0aC5qb2luKHdwdF9yb290LCAid3B0IikKKwog
ICAgICAgICB3aXRoIG9wZW4oaG9zdHNfcGF0aCwgInIiKSBhcyBmOgogICAgICAgICAgICAgZm9y
IGxpbmUgaW4gZjoKICAgICAgICAgICAgICAgICBsaW5lID0gbGluZS5zcGxpdCgiIyIsIDEpWzBd
LnN0cmlwKCkKQEAgLTEyMCwxMyArMTQxLDE0IEBAIGRlZiBjaGVja19lbnZpcm9uKHByb2R1Y3Qp
OgogICAgICAgICAgICAgICAgIGlmIGlzX3dpbmRvd3M6CiAgICAgICAgICAgICAgICAgICAgIG1l
c3NhZ2UgPSAiIiJNaXNzaW5nIGhvc3RzIGZpbGUgY29uZmlndXJhdGlvbi4gUnVuCiAKLXB5dGhv
biB3cHQgbWFrZS1ob3N0cy1maWxlIHwgT3V0LUZpbGUgJVN5c3RlbVJvb3QlXFN5c3RlbTMyXGRy
aXZlcnNcZXRjXGhvc3RzIC1FbmNvZGluZyBhc2NpaSAtQXBwZW5kCitweXRob24gJXMgbWFrZS1o
b3N0cy1maWxlIHwgT3V0LUZpbGUgJXMgLUVuY29kaW5nIGFzY2lpIC1BcHBlbmQKIAotaW4gUG93
ZXJTaGVsbCB3aXRoIEFkbWluaXN0cmF0b3IgcHJpdmlsZWdlcy4iIiIgJSBob3N0c19wYXRoCitp
biBQb3dlclNoZWxsIHdpdGggQWRtaW5pc3RyYXRvciBwcml2aWxlZ2VzLiIiIiAlICh3cHRfcGF0
aCwgaG9zdHNfcGF0aCkKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAg
ICBtZXNzYWdlID0gIiIiTWlzc2luZyBob3N0cyBmaWxlIGNvbmZpZ3VyYXRpb24uIFJ1bgogCi0u
L3dwdCBtYWtlLWhvc3RzLWZpbGUgfCBzdWRvIHRlZSAtYSAlcyIiIiAlIGhvc3RzX3BhdGgKKyVz
IG1ha2UtaG9zdHMtZmlsZSB8IHN1ZG8gdGVlIC1hICVzIiIiICUgKCIuL3dwdCIgaWYgd3B0X3Bh
dGggPT0gIndwdCIgZWxzZSB3cHRfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhvc3RzX3BhdGgpCiAgICAgICAgICAgICAgICAgcmFpc2UgV3B0cnVuRXJy
b3IobWVzc2FnZSkKIAogCkBAIC0xMzUsNyArMTU3LDcgQEAgY2xhc3MgQnJvd3NlclNldHVwKG9i
amVjdCk6CiAgICAgYnJvd3Nlcl9jbHMgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwg
dmVudiwgcHJvbXB0PVRydWUsIHN1Yl9wcm9kdWN0PU5vbmUpOgotICAgICAgICBzZWxmLmJyb3dz
ZXIgPSBzZWxmLmJyb3dzZXJfY2xzKCkKKyAgICAgICAgc2VsZi5icm93c2VyID0gc2VsZi5icm93
c2VyX2Nscyhsb2dnZXIpCiAgICAgICAgIHNlbGYudmVudiA9IHZlbnYKICAgICAgICAgc2VsZi5w
cm9tcHQgPSBwcm9tcHQKICAgICAgICAgc2VsZi5zdWJfcHJvZHVjdCA9IHN1Yl9wcm9kdWN0CkBA
IC0xNDQsMTggKzE2NiwxOSBAQCBjbGFzcyBCcm93c2VyU2V0dXAob2JqZWN0KToKICAgICAgICAg
aWYgbm90IHNlbGYucHJvbXB0OgogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgd2hp
bGUgVHJ1ZToKLSAgICAgICAgICAgIHJlc3AgPSByYXdfaW5wdXQoIkRvd25sb2FkIGFuZCBpbnN0
YWxsICVzIFtZL25dPyAiICUgY29tcG9uZW50KS5zdHJpcCgpLmxvd2VyKCkKKyAgICAgICAgICAg
IHJlc3AgPSBpbnB1dCgiRG93bmxvYWQgYW5kIGluc3RhbGwgJXMgW1kvbl0/ICIgJSBjb21wb25l
bnQpLnN0cmlwKCkubG93ZXIoKQogICAgICAgICAgICAgaWYgbm90IHJlc3Agb3IgcmVzcCA9PSAi
eSI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgICAgIGVsaWYgcmVzcCA9
PSAibiI6CiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICBkZWYgaW5zdGFsbChz
ZWxmLCB2ZW52KToKKyAgICBkZWYgaW5zdGFsbChzZWxmLCBjaGFubmVsPU5vbmUpOgogICAgICAg
ICBpZiBzZWxmLnByb21wdF9pbnN0YWxsKHNlbGYubmFtZSk6Ci0gICAgICAgICAgICByZXR1cm4g
c2VsZi5icm93c2VyLmluc3RhbGwodmVudi5wYXRoKQorICAgICAgICAgICAgcmV0dXJuIHNlbGYu
YnJvd3Nlci5pbnN0YWxsKHNlbGYudmVudi5wYXRoLCBjaGFubmVsKQogCiAgICAgZGVmIGluc3Rh
bGxfcmVxdWlyZW1lbnRzKHNlbGYpOgotICAgICAgICBzZWxmLnZlbnYuaW5zdGFsbF9yZXF1aXJl
bWVudHMob3MucGF0aC5qb2luKHdwdF9yb290LCAidG9vbHMiLCAid3B0cnVubmVyIiwgc2VsZi5i
cm93c2VyLnJlcXVpcmVtZW50cykpCisgICAgICAgIGlmIG5vdCBzZWxmLnZlbnYuc2tpcF92aXJ0
dWFsZW52X3NldHVwOgorICAgICAgICAgICAgc2VsZi52ZW52Lmluc3RhbGxfcmVxdWlyZW1lbnRz
KG9zLnBhdGguam9pbih3cHRfcm9vdCwgInRvb2xzIiwgIndwdHJ1bm5lciIsIHNlbGYuYnJvd3Nl
ci5yZXF1aXJlbWVudHMpKQogCiAgICAgZGVmIHNldHVwKHNlbGYsIGt3YXJncyk6CiAgICAgICAg
IHNlbGYuc2V0dXBfa3dhcmdzKGt3YXJncykKQEAgLTE2Nyw3ICsxOTAsMTIgQEAgY2xhc3MgRmly
ZWZveChCcm93c2VyU2V0dXApOgogCiAgICAgZGVmIHNldHVwX2t3YXJncyhzZWxmLCBrd2FyZ3Mp
OgogICAgICAgICBpZiBrd2FyZ3NbImJpbmFyeSJdIGlzIE5vbmU6Ci0gICAgICAgICAgICBiaW5h
cnkgPSBzZWxmLmJyb3dzZXIuZmluZF9iaW5hcnkoc2VsZi52ZW52LnBhdGgpCisgICAgICAgICAg
ICBpZiBrd2FyZ3NbImJyb3dzZXJfY2hhbm5lbCJdIGlzIE5vbmU6CisgICAgICAgICAgICAgICAg
a3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSA9ICJuaWdodGx5IgorICAgICAgICAgICAgICAgIGxv
Z2dlci5pbmZvKCJObyBicm93c2VyIGNoYW5uZWwgc3BlY2lmaWVkLiBSdW5uaW5nIG5pZ2h0bHkg
aW5zdGVhZC4iKQorCisgICAgICAgICAgICBiaW5hcnkgPSBzZWxmLmJyb3dzZXIuZmluZF9iaW5h
cnkoc2VsZi52ZW52LnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAga3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSkKICAgICAgICAgICAgIGlmIGJpbmFy
eSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHJhaXNlIFdwdHJ1bkVycm9yKCIiIkZpcmVmb3gg
YmluYXJ5IG5vdCBmb3VuZCBvbiAkUEFUSC4KIApAQCAtMTgyLDcgKzIxMCw3IEBAIEluc3RhbGwg
RmlyZWZveCBvciB1c2UgLS1iaW5hcnkgdG8gc2V0IHRoZSBiaW5hcnkgcGF0aCIiIikKICAgICAg
ICAgICAgICAgICBsb2dnZXIuaW5mbygiIiJDYW4ndCBmaW5kIGNlcnR1dGlsLCBjZXJ0aWZpY2F0
ZXMgd2lsbCBub3QgYmUgY2hlY2tlZC4KIENvbnNpZGVyIGluc3RhbGxpbmcgY2VydHV0aWwgdmlh
IHlvdXIgT1MgcGFja2FnZSBtYW5hZ2VyIG9yIGRpcmVjdGx5LiIiIikKICAgICAgICAgICAgIGVs
c2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlVzaW5nIGNlcnR1dGlsICVzIiAlIGNlcnR1dGls
KQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJVc2luZyBjZXJ0dXRpbCAlcyIgJSBjZXJ0
dXRpbCkKIAogICAgICAgICAgICAga3dhcmdzWyJjZXJ0dXRpbF9iaW5hcnkiXSA9IGNlcnR1dGls
CiAKQEAgLTE5MywyOCArMjIxLDk0IEBAIENvbnNpZGVyIGluc3RhbGxpbmcgY2VydHV0aWwgdmlh
IHlvdXIgT1MgcGFja2FnZSBtYW5hZ2VyIG9yIGRpcmVjdGx5LiIiIikKICAgICAgICAgICAgICAg
ICBpbnN0YWxsID0gc2VsZi5wcm9tcHRfaW5zdGFsbCgiZ2Vja29kcml2ZXIiKQogCiAgICAgICAg
ICAgICAgICAgaWYgaW5zdGFsbDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkRvd25sb2Fk
aW5nIGdlY2tvZHJpdmVyIikKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkRvd25s
b2FkaW5nIGdlY2tvZHJpdmVyIikKICAgICAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2JpbmFy
eSA9IHNlbGYuYnJvd3Nlci5pbnN0YWxsX3dlYmRyaXZlcihkZXN0PXNlbGYudmVudi5iaW5fcGF0
aCkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcHJpbnQoIlVzaW5nIHdlYmRy
aXZlciBiaW5hcnkgJXMiICUgd2ViZHJpdmVyX2JpbmFyeSkKKyAgICAgICAgICAgICAgICBsb2dn
ZXIuaW5mbygiVXNpbmcgd2ViZHJpdmVyIGJpbmFyeSAlcyIgJSB3ZWJkcml2ZXJfYmluYXJ5KQog
CiAgICAgICAgICAgICBpZiB3ZWJkcml2ZXJfYmluYXJ5OgogICAgICAgICAgICAgICAgIGt3YXJn
c1sid2ViZHJpdmVyX2JpbmFyeSJdID0gd2ViZHJpdmVyX2JpbmFyeQogICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICBwcmludCgiVW5hYmxlIHRvIGZpbmQgb3IgaW5zdGFsbCBnZWNr
b2RyaXZlciwgc2tpcHBpbmcgd2RzcGVjIHRlc3RzIikKKyAgICAgICAgICAgICAgICBsb2dnZXIu
aW5mbygiVW5hYmxlIHRvIGZpbmQgb3IgaW5zdGFsbCBnZWNrb2RyaXZlciwgc2tpcHBpbmcgd2Rz
cGVjIHRlc3RzIikKICAgICAgICAgICAgICAgICBrd2FyZ3NbInRlc3RfdHlwZXMiXS5yZW1vdmUo
Indkc3BlYyIpCiAKICAgICAgICAgaWYga3dhcmdzWyJwcmVmc19yb290Il0gaXMgTm9uZToKLSAg
ICAgICAgICAgIHByZWZzX3Jvb3QgPSBzZWxmLmJyb3dzZXIuaW5zdGFsbF9wcmVmcyhrd2FyZ3Nb
ImJpbmFyeSJdLCBzZWxmLnZlbnYucGF0aCkKKyAgICAgICAgICAgIHByZWZzX3Jvb3QgPSBzZWxm
LmJyb3dzZXIuaW5zdGFsbF9wcmVmcyhrd2FyZ3NbImJpbmFyeSJdLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudmVudi5wYXRoLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWw9
a3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSkKICAgICAgICAgICAgIGt3YXJnc1sicHJlZnNfcm9v
dCJdID0gcHJlZnNfcm9vdAogCisgICAgICAgIGlmIGt3YXJnc1siaGVhZGxlc3MiXSBpcyBOb25l
OgorICAgICAgICAgICAga3dhcmdzWyJoZWFkbGVzcyJdID0gVHJ1ZQorICAgICAgICAgICAgbG9n
Z2VyLmluZm8oIlJ1bm5pbmcgaW4gaGVhZGxlc3MgbW9kZSwgcGFzcyAtLW5vLWhlYWRsZXNzIHRv
IGRpc2FibGUiKQorCisgICAgICAgICMgVHVybiBvZmYgRmlyZWZveCBXZWJSVEMgSUNFIGxvZ2dp
bmcgb24gV1BUICh0dXJuZWQgb24gYnkgbW96cnVubmVyKQorICAgICAgICBvcy51bnNldGVudign
Ul9MT0dfTEVWRUwnKQorICAgICAgICBvcy51bnNldGVudignUl9MT0dfREVTVElOQVRJT04nKQor
ICAgICAgICBvcy51bnNldGVudignUl9MT0dfVkVSQk9TRScpCisKKyAgICAgICAgIyBBbGxvdyBX
ZWJSVEMgdGVzdHMgdG8gY2FsbCBnZXRVc2VyTWVkaWEuCisgICAgICAgIGt3YXJnc1siZXh0cmFf
cHJlZnMiXS5hcHBlbmQoIm1lZGlhLm5hdmlnYXRvci5zdHJlYW1zLmZha2U9dHJ1ZSIpCisKKwor
Y2xhc3MgRmlyZWZveEFuZHJvaWQoQnJvd3NlclNldHVwKToKKyAgICBuYW1lID0gImZpcmVmb3hf
YW5kcm9pZCIKKyAgICBicm93c2VyX2NscyA9IGJyb3dzZXIuRmlyZWZveEFuZHJvaWQKIAotY2xh
c3MgRmVubmVjKEJyb3dzZXJTZXR1cCk6Ci0gICAgbmFtZSA9ICJmZW5uZWMiCi0gICAgYnJvd3Nl
cl9jbHMgPSBicm93c2VyLkZlbm5lYworICAgIGRlZiBpbnN0YWxsKHNlbGYsIGNoYW5uZWwpOgor
ICAgICAgICAjIFRoZSBpbnN0YWxsIG5lZWRzIHRvIGhhcHBlbiBpbiBzZXR1cCBzbyB0aGF0IHdl
IGhhdmUgYWNjZXNzIHRvIGFsbCB0aGUga3dhcmdzCisgICAgICAgIHNlbGYuX2luc3RhbGxfYnJv
d3NlciA9IFRydWUKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBzZXR1cF9rd2FyZ3Mo
c2VsZiwga3dhcmdzKToKLSAgICAgICAgcGFzcworICAgICAgICBmcm9tIC4gaW1wb3J0IGFuZHJv
aWQKKyAgICAgICAgaW1wb3J0IG1vemRldmljZQorCisgICAgICAgICMgV2UgZG9uJ3Qgc3VwcG9y
dCBtdWx0aXBsZSBjaGFubmVscyBmb3IgYW5kcm9pZCB5ZXQKKyAgICAgICAgaWYga3dhcmdzWyJi
cm93c2VyX2NoYW5uZWwiXSBpcyBOb25lOgorICAgICAgICAgICAga3dhcmdzWyJicm93c2VyX2No
YW5uZWwiXSA9ICJuaWdodGx5IgorCisgICAgICAgIGlmIGt3YXJnc1sicHJlZnNfcm9vdCJdIGlz
IE5vbmU6CisgICAgICAgICAgICBwcmVmc19yb290ID0gc2VsZi5icm93c2VyLmluc3RhbGxfcHJl
ZnMoa3dhcmdzWyJiaW5hcnkiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLnZlbnYucGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFubmVsPWt3YXJnc1siYnJvd3Nlcl9jaGFu
bmVsIl0pCisgICAgICAgICAgICBrd2FyZ3NbInByZWZzX3Jvb3QiXSA9IHByZWZzX3Jvb3QKKwor
ICAgICAgICBpZiBrd2FyZ3NbInBhY2thZ2VfbmFtZSJdIGlzIE5vbmU6CisgICAgICAgICAgICBr
d2FyZ3NbInBhY2thZ2VfbmFtZSJdID0gIm9yZy5tb3ppbGxhLmdlY2tvdmlldy50ZXN0IgorICAg
ICAgICBhcHAgPSBrd2FyZ3NbInBhY2thZ2VfbmFtZSJdCisKKyAgICAgICAgaWYga3dhcmdzWyJk
ZXZpY2Vfc2VyaWFsIl0gaXMgTm9uZToKKyAgICAgICAgICAgIGt3YXJnc1siZGV2aWNlX3Nlcmlh
bCJdID0gImVtdWxhdG9yLTU1NTQiCisKKyAgICAgICAgIyBXZSdyZSBydW5uaW5nIG9uIGFuIGVt
dWxhdG9yIHNvIGVuc3VyZSB0aGF0J3Mgc2V0IHVwCisgICAgICAgIGlmIGt3YXJnc1siZGV2aWNl
X3NlcmlhbCJdLnN0YXJ0c3dpdGgoImVtdWxhdG9yLSIpOgorICAgICAgICAgICAgZW11bGF0b3Ig
PSBhbmRyb2lkLmluc3RhbGwobG9nZ2VyLCByZWluc3RhbGw9RmFsc2UsIG5vX3Byb21wdD1ub3Qg
c2VsZi5wcm9tcHQpCisgICAgICAgICAgICBhbmRyb2lkLnN0YXJ0KGxvZ2dlciwgZW11bGF0b3I9
ZW11bGF0b3IsIHJlaW5zdGFsbD1GYWxzZSkKKworICAgICAgICBpbnN0YWxsID0gRmFsc2UKKyAg
ICAgICAgaWYgaGFzYXR0cihzZWxmLCAiX2luc3RhbGxfYnJvd3NlciIpOgorICAgICAgICAgICAg
aWYgc2VsZi5wcm9tcHRfaW5zdGFsbCgiZ2Vja292aWV3LXRlc3QiKToKKyAgICAgICAgICAgICAg
ICBpbnN0YWxsID0gVHJ1ZQorICAgICAgICAgICAgICAgIGFwa19wYXRoID0gc2VsZi5icm93c2Vy
Lmluc3RhbGwoc2VsZi52ZW52LnBhdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjaGFubmVsPWt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0pCisKKyAg
ICAgICAgaWYgIkFEQl9QQVRIIiBub3QgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgICAgIGFkYl9w
YXRoID0gb3MucGF0aC5qb2luKGFuZHJvaWQuZ2V0X3Nka19wYXRoKE5vbmUpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsYXRmb3JtLXRvb2xzIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJhZGIiKQorICAgICAgICAgICAgb3MuZW52aXJvblsi
QURCX1BBVEgiXSA9IGFkYl9wYXRoCisgICAgICAgIGFkYl9wYXRoID0gb3MuZW52aXJvblsiQURC
X1BBVEgiXQorCisgICAgICAgIGRldmljZSA9IG1vemRldmljZS5BREJEZXZpY2UoYWRiPWFkYl9w
YXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZT1rd2FyZ3Nb
ImRldmljZV9zZXJpYWwiXSkKKworICAgICAgICBpZiBpbnN0YWxsOgorICAgICAgICAgICAgZGV2
aWNlLnVuaW5zdGFsbF9hcHAoYXBwKQorICAgICAgICAgICAgZGV2aWNlLmluc3RhbGxfYXBwKGFw
a19wYXRoKQorICAgICAgICBlbGlmIG5vdCBkZXZpY2UuaXNfYXBwX2luc3RhbGxlZChhcHApOgor
ICAgICAgICAgICAgcmFpc2UgV3B0cnVuRXJyb3IoImFwcCAlcyBub3QgaW5zdGFsbGVkIG9uIGRl
dmljZSAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGFwcCwga3dhcmdzWyJk
ZXZpY2Vfc2VyaWFsIl0pKQogCiAKIGNsYXNzIENocm9tZShCcm93c2VyU2V0dXApOgpAQCAtMjIy
LDYgKzMxNiwxMyBAQCBjbGFzcyBDaHJvbWUoQnJvd3NlclNldHVwKToKICAgICBicm93c2VyX2Ns
cyA9IGJyb3dzZXIuQ2hyb21lCiAKICAgICBkZWYgc2V0dXBfa3dhcmdzKHNlbGYsIGt3YXJncyk6
CisgICAgICAgIGJyb3dzZXJfY2hhbm5lbCA9IGt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0KKyAg
ICAgICAgaWYga3dhcmdzWyJiaW5hcnkiXSBpcyBOb25lOgorICAgICAgICAgICAgYmluYXJ5ID0g
c2VsZi5icm93c2VyLmZpbmRfYmluYXJ5KGNoYW5uZWw9YnJvd3Nlcl9jaGFubmVsKQorICAgICAg
ICAgICAgaWYgYmluYXJ5OgorICAgICAgICAgICAgICAgIGt3YXJnc1siYmluYXJ5Il0gPSBiaW5h
cnkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgV3B0cnVuRXJyb3Io
IlVuYWJsZSB0byBsb2NhdGUgQ2hyb21lIGJpbmFyeSIpCiAgICAgICAgIGlmIGt3YXJnc1sid2Vi
ZHJpdmVyX2JpbmFyeSJdIGlzIE5vbmU6CiAgICAgICAgICAgICB3ZWJkcml2ZXJfYmluYXJ5ID0g
c2VsZi5icm93c2VyLmZpbmRfd2ViZHJpdmVyKCkKIApAQCAtMjI5LDE1ICszMzAsMjcgQEAgY2xh
c3MgQ2hyb21lKEJyb3dzZXJTZXR1cCk6CiAgICAgICAgICAgICAgICAgaW5zdGFsbCA9IHNlbGYu
cHJvbXB0X2luc3RhbGwoImNocm9tZWRyaXZlciIpCiAKICAgICAgICAgICAgICAgICBpZiBpbnN0
YWxsOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiRG93bmxvYWRpbmcgY2hyb21lZHJpdmVy
IikKLSAgICAgICAgICAgICAgICAgICAgd2ViZHJpdmVyX2JpbmFyeSA9IHNlbGYuYnJvd3Nlci5p
bnN0YWxsX3dlYmRyaXZlcihkZXN0PXNlbGYudmVudi5iaW5fcGF0aCkKKyAgICAgICAgICAgICAg
ICAgICAgbG9nZ2VyLmluZm8oIkRvd25sb2FkaW5nIGNocm9tZWRyaXZlciIpCisgICAgICAgICAg
ICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnkgPSBzZWxmLmJyb3dzZXIuaW5zdGFsbF93ZWJkcml2
ZXIoCisgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PXNlbGYudmVudi5iaW5fcGF0aCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfYmluYXJ5PWt3YXJnc1siYmluYXJ5Il0sCisg
ICAgICAgICAgICAgICAgICAgICkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAg
cHJpbnQoIlVzaW5nIHdlYmRyaXZlciBiaW5hcnkgJXMiICUgd2ViZHJpdmVyX2JpbmFyeSkKKyAg
ICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVXNpbmcgd2ViZHJpdmVyIGJpbmFyeSAlcyIgJSB3
ZWJkcml2ZXJfYmluYXJ5KQogCiAgICAgICAgICAgICBpZiB3ZWJkcml2ZXJfYmluYXJ5OgogICAg
ICAgICAgICAgICAgIGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdID0gd2ViZHJpdmVyX2JpbmFy
eQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBXcHRydW5FcnJvcigi
VW5hYmxlIHRvIGxvY2F0ZSBvciBpbnN0YWxsIGNocm9tZWRyaXZlciBiaW5hcnkiKQorICAgICAg
ICBpZiBicm93c2VyX2NoYW5uZWwgaW4gKCJkZXYiLCAiY2FuYXJ5Iik6CisgICAgICAgICAgICBs
b2dnZXIuaW5mbygiQXV0b21hdGljYWxseSB0dXJuaW5nIG9uIGV4cGVyaW1lbnRhbCBmZWF0dXJl
cyBmb3IgQ2hyb21lIERldi9DYW5hcnkiKQorICAgICAgICAgICAga3dhcmdzWyJiaW5hcnlfYXJn
cyJdLmFwcGVuZCgiLS1lbmFibGUtZXhwZXJpbWVudGFsLXdlYi1wbGF0Zm9ybS1mZWF0dXJlcyIp
CisgICAgICAgICAgICAjIEhBQ0soSGV4Y2xlcyk6IHdvcmsgYXJvdW5kIGh0dHBzOi8vZ2l0aHVi
LmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNjQ0OAorICAgICAgICAgICAga3dh
cmdzWyJ3ZWJkcml2ZXJfYXJncyJdLmFwcGVuZCgiLS1kaXNhYmxlLWJ1aWxkLWNoZWNrIikKKyAg
ICAgICAgaWYgb3MuZ2V0ZW52KCJUQVNLQ0xVU1RFUl9ST09UX1VSTCIpOgorICAgICAgICAgICAg
IyBXZSBhcmUgb24gVGFza2NsdXN0ZXIsIHdoZXJlIG91ciBEb2NrZXIgY29udGFpbmVyIGRvZXMg
bm90IGhhdmUKKyAgICAgICAgICAgICMgZW5vdWdoIGNhcGFiaWxpdGllcyB0byBydW4gQ2hyb21l
IHdpdGggc2FuZGJveGluZy4gKGdoLTIwMTMzKQorICAgICAgICAgICAga3dhcmdzWyJiaW5hcnlf
YXJncyJdLmFwcGVuZCgiLS1uby1zYW5kYm94IikKIAogCiBjbGFzcyBDaHJvbWVBbmRyb2lkKEJy
b3dzZXJTZXR1cCk6CkBAIC0yNDUsNiArMzU4LDU0IEBAIGNsYXNzIENocm9tZUFuZHJvaWQoQnJv
d3NlclNldHVwKToKICAgICBicm93c2VyX2NscyA9IGJyb3dzZXIuQ2hyb21lQW5kcm9pZAogCiAg
ICAgZGVmIHNldHVwX2t3YXJncyhzZWxmLCBrd2FyZ3MpOgorICAgICAgICBpZiBrd2FyZ3MuZ2V0
KCJkZXZpY2Vfc2VyaWFsIik6CisgICAgICAgICAgICBzZWxmLmJyb3dzZXIuZGV2aWNlX3Nlcmlh
bCA9IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdCisgICAgICAgIGJyb3dzZXJfY2hhbm5lbCA9IGt3
YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0KKyAgICAgICAgaWYga3dhcmdzWyJwYWNrYWdlX25hbWUi
XSBpcyBOb25lOgorICAgICAgICAgICAga3dhcmdzWyJwYWNrYWdlX25hbWUiXSA9IHNlbGYuYnJv
d3Nlci5maW5kX2JpbmFyeSgKKyAgICAgICAgICAgICAgICBjaGFubmVsPWJyb3dzZXJfY2hhbm5l
bCkKKyAgICAgICAgaWYga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0gaXMgTm9uZToKKyAgICAg
ICAgICAgIHdlYmRyaXZlcl9iaW5hcnkgPSBzZWxmLmJyb3dzZXIuZmluZF93ZWJkcml2ZXIoKQor
CisgICAgICAgICAgICBpZiB3ZWJkcml2ZXJfYmluYXJ5IGlzIE5vbmU6CisgICAgICAgICAgICAg
ICAgaW5zdGFsbCA9IHNlbGYucHJvbXB0X2luc3RhbGwoImNocm9tZWRyaXZlciIpCisKKyAgICAg
ICAgICAgICAgICBpZiBpbnN0YWxsOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygi
RG93bmxvYWRpbmcgY2hyb21lZHJpdmVyIikKKyAgICAgICAgICAgICAgICAgICAgd2ViZHJpdmVy
X2JpbmFyeSA9IHNlbGYuYnJvd3Nlci5pbnN0YWxsX3dlYmRyaXZlcigKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGRlc3Q9c2VsZi52ZW52LmJpbl9wYXRoLAorICAgICAgICAgICAgICAgICAgICAg
ICAgYnJvd3Nlcl9iaW5hcnk9a3dhcmdzWyJwYWNrYWdlX25hbWUiXSwKKyAgICAgICAgICAgICAg
ICAgICAgKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygi
VXNpbmcgd2ViZHJpdmVyIGJpbmFyeSAlcyIgJSB3ZWJkcml2ZXJfYmluYXJ5KQorCisgICAgICAg
ICAgICBpZiB3ZWJkcml2ZXJfYmluYXJ5OgorICAgICAgICAgICAgICAgIGt3YXJnc1sid2ViZHJp
dmVyX2JpbmFyeSJdID0gd2ViZHJpdmVyX2JpbmFyeQorICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICByYWlzZSBXcHRydW5FcnJvcigiVW5hYmxlIHRvIGxvY2F0ZSBvciBpbnN0YWxs
IGNocm9tZWRyaXZlciBiaW5hcnkiKQorICAgICAgICBpZiBicm93c2VyX2NoYW5uZWwgaW4gKCJk
ZXYiLCAiY2FuYXJ5Iik6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiQXV0b21hdGljYWxseSB0
dXJuaW5nIG9uIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyBmb3IgQ2hyb21lIERldi9DYW5hcnkiKQor
ICAgICAgICAgICAga3dhcmdzWyJiaW5hcnlfYXJncyJdLmFwcGVuZCgiLS1lbmFibGUtZXhwZXJp
bWVudGFsLXdlYi1wbGF0Zm9ybS1mZWF0dXJlcyIpCisgICAgICAgICAgICAjIEhBQ0soSGV4Y2xl
cyk6IHdvcmsgYXJvdW5kIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0
L2lzc3Vlcy8xNjQ0OAorICAgICAgICAgICAga3dhcmdzWyJ3ZWJkcml2ZXJfYXJncyJdLmFwcGVu
ZCgiLS1kaXNhYmxlLWJ1aWxkLWNoZWNrIikKKworCitjbGFzcyBDaHJvbWVpT1MoQnJvd3NlclNl
dHVwKToKKyAgICBuYW1lID0gImNocm9tZV9pb3MiCisgICAgYnJvd3Nlcl9jbHMgPSBicm93c2Vy
LkNocm9tZWlPUworCisgICAgZGVmIHNldHVwX2t3YXJncyhzZWxmLCBrd2FyZ3MpOgorICAgICAg
ICBpZiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSBpcyBOb25lOgorICAgICAgICAgICAgcmFp
c2UgV3B0cnVuRXJyb3IoIlVuYWJsZSB0byBsb2NhdGUgb3IgaW5zdGFsbCBjaHJvbWVkcml2ZXIg
YmluYXJ5IikKKworCitjbGFzcyBBbmRyb2lkV2VidmlldyhCcm93c2VyU2V0dXApOgorICAgIG5h
bWUgPSAiYW5kcm9pZF93ZWJ2aWV3IgorICAgIGJyb3dzZXJfY2xzID0gYnJvd3Nlci5BbmRyb2lk
V2VidmlldworCisgICAgZGVmIHNldHVwX2t3YXJncyhzZWxmLCBrd2FyZ3MpOgorICAgICAgICBp
ZiBrd2FyZ3MuZ2V0KCJkZXZpY2Vfc2VyaWFsIik6CisgICAgICAgICAgICBzZWxmLmJyb3dzZXIu
ZGV2aWNlX3NlcmlhbCA9IGt3YXJnc1siZGV2aWNlX3NlcmlhbCJdCiAgICAgICAgIGlmIGt3YXJn
c1sid2ViZHJpdmVyX2JpbmFyeSJdIGlzIE5vbmU6CiAgICAgICAgICAgICB3ZWJkcml2ZXJfYmlu
YXJ5ID0gc2VsZi5icm93c2VyLmZpbmRfd2ViZHJpdmVyKCkKIApAQCAtMjUyLDEwICs0MTMsMTAg
QEAgY2xhc3MgQ2hyb21lQW5kcm9pZChCcm93c2VyU2V0dXApOgogICAgICAgICAgICAgICAgIGlu
c3RhbGwgPSBzZWxmLnByb21wdF9pbnN0YWxsKCJjaHJvbWVkcml2ZXIiKQogCiAgICAgICAgICAg
ICAgICAgaWYgaW5zdGFsbDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIkRvd25sb2FkaW5n
IGNocm9tZWRyaXZlciIpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJEb3dubG9h
ZGluZyBjaHJvbWVkcml2ZXIiKQogICAgICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYmluYXJ5
ID0gc2VsZi5icm93c2VyLmluc3RhbGxfd2ViZHJpdmVyKGRlc3Q9c2VsZi52ZW52LmJpbl9wYXRo
KQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCgiVXNpbmcgd2ViZHJp
dmVyIGJpbmFyeSAlcyIgJSB3ZWJkcml2ZXJfYmluYXJ5KQorICAgICAgICAgICAgICAgIGxvZ2dl
ci5pbmZvKCJVc2luZyB3ZWJkcml2ZXIgYmluYXJ5ICVzIiAlIHdlYmRyaXZlcl9iaW5hcnkpCiAK
ICAgICAgICAgICAgIGlmIHdlYmRyaXZlcl9iaW5hcnk6CiAgICAgICAgICAgICAgICAga3dhcmdz
WyJ3ZWJkcml2ZXJfYmluYXJ5Il0gPSB3ZWJkcml2ZXJfYmluYXJ5CkBAIC0yNzUsMTAgKzQzNiwx
MCBAQCBjbGFzcyBPcGVyYShCcm93c2VyU2V0dXApOgogICAgICAgICAgICAgICAgIGluc3RhbGwg
PSBzZWxmLnByb21wdF9pbnN0YWxsKCJvcGVyYWRyaXZlciIpCiAKICAgICAgICAgICAgICAgICBp
ZiBpbnN0YWxsOgotICAgICAgICAgICAgICAgICAgICBwcmludCgiRG93bmxvYWRpbmcgb3BlcmFk
cml2ZXIiKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiRG93bmxvYWRpbmcgb3Bl
cmFkcml2ZXIiKQogICAgICAgICAgICAgICAgICAgICB3ZWJkcml2ZXJfYmluYXJ5ID0gc2VsZi5i
cm93c2VyLmluc3RhbGxfd2ViZHJpdmVyKGRlc3Q9c2VsZi52ZW52LmJpbl9wYXRoKQogICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwcmludCgiVXNpbmcgd2ViZHJpdmVyIGJpbmFy
eSAlcyIgJSB3ZWJkcml2ZXJfYmluYXJ5KQorICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJV
c2luZyB3ZWJkcml2ZXIgYmluYXJ5ICVzIiAlIHdlYmRyaXZlcl9iaW5hcnkpCiAKICAgICAgICAg
ICAgIGlmIHdlYmRyaXZlcl9iaW5hcnk6CiAgICAgICAgICAgICAgICAga3dhcmdzWyJ3ZWJkcml2
ZXJfYmluYXJ5Il0gPSB3ZWJkcml2ZXJfYmluYXJ5CkBAIC0yODYsMTEgKzQ0Nyw0NSBAQCBjbGFz
cyBPcGVyYShCcm93c2VyU2V0dXApOgogICAgICAgICAgICAgICAgIHJhaXNlIFdwdHJ1bkVycm9y
KCJVbmFibGUgdG8gbG9jYXRlIG9yIGluc3RhbGwgb3BlcmFkcml2ZXIgYmluYXJ5IikKIAogCitj
bGFzcyBFZGdlQ2hyb21pdW0oQnJvd3NlclNldHVwKToKKyAgICBuYW1lID0gIk1pY3Jvc29mdEVk
Z2UiCisgICAgYnJvd3Nlcl9jbHMgPSBicm93c2VyLkVkZ2VDaHJvbWl1bQorCisgICAgZGVmIHNl
dHVwX2t3YXJncyhzZWxmLCBrd2FyZ3MpOgorICAgICAgICBicm93c2VyX2NoYW5uZWwgPSBrd2Fy
Z3NbImJyb3dzZXJfY2hhbm5lbCJdCisgICAgICAgIGlmIGt3YXJnc1siYmluYXJ5Il0gaXMgTm9u
ZToKKyAgICAgICAgICAgIGJpbmFyeSA9IHNlbGYuYnJvd3Nlci5maW5kX2JpbmFyeShjaGFubmVs
PWJyb3dzZXJfY2hhbm5lbCkKKyAgICAgICAgICAgIGlmIGJpbmFyeToKKyAgICAgICAgICAgICAg
ICBrd2FyZ3NbImJpbmFyeSJdID0gYmluYXJ5CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIHJhaXNlIFdwdHJ1bkVycm9yKCJVbmFibGUgdG8gbG9jYXRlIEVkZ2UgYmluYXJ5IikK
KyAgICAgICAgaWYga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0gaXMgTm9uZToKKyAgICAgICAg
ICAgIHdlYmRyaXZlcl9iaW5hcnkgPSBzZWxmLmJyb3dzZXIuZmluZF93ZWJkcml2ZXIoKQorCisg
ICAgICAgICAgICAjIEluc3RhbGwgYnJvd3NlciBpZiBub25lIGFyZSBmb3VuZCBvciBpZiBpdCdz
IGZvdW5kIGluIHZlbnYgcGF0aAorICAgICAgICAgICAgaWYgd2ViZHJpdmVyX2JpbmFyeSBpcyBO
b25lIG9yIHdlYmRyaXZlcl9iaW5hcnkgaW4gc2VsZi52ZW52LmJpbl9wYXRoOgorICAgICAgICAg
ICAgICAgIGluc3RhbGwgPSBzZWxmLnByb21wdF9pbnN0YWxsKCJtc2VkZ2Vkcml2ZXIiKQorCisg
ICAgICAgICAgICAgICAgaWYgaW5zdGFsbDoKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmlu
Zm8oIkRvd25sb2FkaW5nIG1zZWRnZWRyaXZlciIpCisgICAgICAgICAgICAgICAgICAgIHdlYmRy
aXZlcl9iaW5hcnkgPSBzZWxmLmJyb3dzZXIuaW5zdGFsbF93ZWJkcml2ZXIoZGVzdD1zZWxmLnZl
bnYuYmluX3BhdGgsIGNoYW5uZWw9YnJvd3Nlcl9jaGFubmVsKQorICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiVXNpbmcgd2ViZHJpdmVyIGJpbmFyeSAlcyIg
JSB3ZWJkcml2ZXJfYmluYXJ5KQorCisgICAgICAgICAgICBpZiB3ZWJkcml2ZXJfYmluYXJ5Ogor
ICAgICAgICAgICAgICAgIGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdID0gd2ViZHJpdmVyX2Jp
bmFyeQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBXcHRydW5FcnJv
cigiVW5hYmxlIHRvIGxvY2F0ZSBvciBpbnN0YWxsIG1zZWRnZWRyaXZlciBiaW5hcnkiKQorICAg
ICAgICBpZiBicm93c2VyX2NoYW5uZWwgaW4gKCJkZXYiLCAiY2FuYXJ5Iik6CisgICAgICAgICAg
ICBsb2dnZXIuaW5mbygiQXV0b21hdGljYWxseSB0dXJuaW5nIG9uIGV4cGVyaW1lbnRhbCBmZWF0
dXJlcyBmb3IgRWRnZSBEZXYvQ2FuYXJ5IikKKyAgICAgICAgICAgIGt3YXJnc1siYmluYXJ5X2Fy
Z3MiXS5hcHBlbmQoIi0tZW5hYmxlLWV4cGVyaW1lbnRhbC13ZWItcGxhdGZvcm0tZmVhdHVyZXMi
KQorCisKIGNsYXNzIEVkZ2UoQnJvd3NlclNldHVwKToKICAgICBuYW1lID0gImVkZ2UiCiAgICAg
YnJvd3Nlcl9jbHMgPSBicm93c2VyLkVkZ2UKIAotICAgIGRlZiBpbnN0YWxsKHNlbGYsIHZlbnYp
OgorICAgIGRlZiBpbnN0YWxsKHNlbGYsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5v
dEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBzZXR1cF9rd2FyZ3Moc2VsZiwga3dhcmdzKToK
QEAgLTMwNywxMSArNTAyLDE2IEBAIGh0dHBzOi8vZGV2ZWxvcGVyLm1pY3Jvc29mdC5jb20vZW4t
dXMvbWljcm9zb2Z0LWVkZ2UvdG9vbHMvd2ViZHJpdmVyLwogICAgICAgICAgICAga3dhcmdzWyJ3
ZWJkcml2ZXJfYmluYXJ5Il0gPSB3ZWJkcml2ZXJfYmluYXJ5CiAKIAorY2xhc3MgRWRnZVdlYkRy
aXZlcihFZGdlKToKKyAgICBuYW1lID0gImVkZ2Vfd2ViZHJpdmVyIgorICAgIGJyb3dzZXJfY2xz
ID0gYnJvd3Nlci5FZGdlV2ViRHJpdmVyCisKKwogY2xhc3MgSW50ZXJuZXRFeHBsb3JlcihCcm93
c2VyU2V0dXApOgogICAgIG5hbWUgPSAiaWUiCiAgICAgYnJvd3Nlcl9jbHMgPSBicm93c2VyLklu
dGVybmV0RXhwbG9yZXIKIAotICAgIGRlZiBpbnN0YWxsKHNlbGYsIHZlbnYpOgorICAgIGRlZiBp
bnN0YWxsKHNlbGYsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKIAogICAgIGRlZiBzZXR1cF9rd2FyZ3Moc2VsZiwga3dhcmdzKToKQEAgLTMzMiwxMiAr
NTMyLDEyIEBAIGNsYXNzIFNhZmFyaShCcm93c2VyU2V0dXApOgogICAgIG5hbWUgPSAic2FmYXJp
IgogICAgIGJyb3dzZXJfY2xzID0gYnJvd3Nlci5TYWZhcmkKIAotICAgIGRlZiBpbnN0YWxsKHNl
bGYsIHZlbnYpOgorICAgIGRlZiBpbnN0YWxsKHNlbGYsIGNoYW5uZWw9Tm9uZSk6CiAgICAgICAg
IHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKIAogICAgIGRlZiBzZXR1cF9rd2FyZ3Moc2VsZiwg
a3dhcmdzKToKICAgICAgICAgaWYga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0gaXMgTm9uZToK
LSAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5hcnkgPSBzZWxmLmJyb3dzZXIuZmluZF93ZWJkcml2
ZXIoKQorICAgICAgICAgICAgd2ViZHJpdmVyX2JpbmFyeSA9IHNlbGYuYnJvd3Nlci5maW5kX3dl
YmRyaXZlcihjaGFubmVsPWt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0pCiAKICAgICAgICAgICAg
IGlmIHdlYmRyaXZlcl9iaW5hcnkgaXMgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBXcHRy
dW5FcnJvcigiVW5hYmxlIHRvIGxvY2F0ZSBzYWZhcmlkcml2ZXIgYmluYXJ5IikKQEAgLTM0OSw3
ICs1NDksNyBAQCBjbGFzcyBTYXVjZShCcm93c2VyU2V0dXApOgogICAgIG5hbWUgPSAic2F1Y2Ui
CiAgICAgYnJvd3Nlcl9jbHMgPSBicm93c2VyLlNhdWNlCiAKLSAgICBkZWYgaW5zdGFsbChzZWxm
LCB2ZW52KToKKyAgICBkZWYgaW5zdGFsbChzZWxmLCBjaGFubmVsPU5vbmUpOgogICAgICAgICBy
YWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgc2V0dXBfa3dhcmdzKHNlbGYsIGt3
YXJncyk6CkBAIC0zNjIsNTkgKzU2MiwxMzAgQEAgY2xhc3MgU2Vydm8oQnJvd3NlclNldHVwKToK
ICAgICBuYW1lID0gInNlcnZvIgogICAgIGJyb3dzZXJfY2xzID0gYnJvd3Nlci5TZXJ2bwogCi0g
ICAgZGVmIGluc3RhbGwoc2VsZiwgdmVudik6CisgICAgZGVmIGluc3RhbGwoc2VsZiwgY2hhbm5l
bD1Ob25lKToKICAgICAgICAgaWYgc2VsZi5wcm9tcHRfaW5zdGFsbChzZWxmLm5hbWUpOgotICAg
ICAgICAgICAgcmV0dXJuIHNlbGYuYnJvd3Nlci5pbnN0YWxsKHZlbnYucGF0aCkKKyAgICAgICAg
ICAgIHJldHVybiBzZWxmLmJyb3dzZXIuaW5zdGFsbChzZWxmLnZlbnYucGF0aCkKIAogICAgIGRl
ZiBzZXR1cF9rd2FyZ3Moc2VsZiwga3dhcmdzKToKICAgICAgICAgaWYga3dhcmdzWyJiaW5hcnki
XSBpcyBOb25lOgotICAgICAgICAgICAgYmluYXJ5ID0gc2VsZi5icm93c2VyLmZpbmRfYmluYXJ5
KCkKKyAgICAgICAgICAgIGJpbmFyeSA9IHNlbGYuYnJvd3Nlci5maW5kX2JpbmFyeShzZWxmLnZl
bnYucGF0aCwgTm9uZSkKIAogICAgICAgICAgICAgaWYgYmluYXJ5IGlzIE5vbmU6Ci0gICAgICAg
ICAgICAgICAgcmFpc2UgV3B0cnVuRXJyb3IoIlVuYWJsZSB0byBmaW5kIHNlcnZvIGJpbmFyeSBv
biB0aGUgUEFUSCIpCisgICAgICAgICAgICAgICAgcmFpc2UgV3B0cnVuRXJyb3IoIlVuYWJsZSB0
byBmaW5kIHNlcnZvIGJpbmFyeSBpbiBQQVRIIikKICAgICAgICAgICAgIGt3YXJnc1siYmluYXJ5
Il0gPSBiaW5hcnkKIAogCitjbGFzcyBTZXJ2b1dlYkRyaXZlcihTZXJ2byk6CisgICAgbmFtZSA9
ICJzZXJ2b2RyaXZlciIKKyAgICBicm93c2VyX2NscyA9IGJyb3dzZXIuU2Vydm9XZWJEcml2ZXIK
KworCiBjbGFzcyBXZWJLaXQoQnJvd3NlclNldHVwKToKICAgICBuYW1lID0gIndlYmtpdCIKICAg
ICBicm93c2VyX2NscyA9IGJyb3dzZXIuV2ViS2l0CiAKLSAgICBkZWYgaW5zdGFsbChzZWxmLCB2
ZW52KToKKyAgICBkZWYgaW5zdGFsbChzZWxmLCBjaGFubmVsPU5vbmUpOgogICAgICAgICByYWlz
ZSBOb3RJbXBsZW1lbnRlZEVycm9yCiAKICAgICBkZWYgc2V0dXBfa3dhcmdzKHNlbGYsIGt3YXJn
cyk6CiAgICAgICAgIHBhc3MKIAogCitjbGFzcyBXZWJLaXRHVEtNaW5pQnJvd3NlcihCcm93c2Vy
U2V0dXApOgorICAgIG5hbWUgPSAid2Via2l0Z3RrX21pbmlicm93c2VyIgorICAgIGJyb3dzZXJf
Y2xzID0gYnJvd3Nlci5XZWJLaXRHVEtNaW5pQnJvd3NlcgorCisgICAgZGVmIGluc3RhbGwoc2Vs
ZiwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisg
ICAgZGVmIHNldHVwX2t3YXJncyhzZWxmLCBrd2FyZ3MpOgorICAgICAgICBpZiBrd2FyZ3NbImJp
bmFyeSJdIGlzIE5vbmU6CisgICAgICAgICAgICBiaW5hcnkgPSBzZWxmLmJyb3dzZXIuZmluZF9i
aW5hcnkoY2hhbm5lbD1rd2FyZ3NbImJyb3dzZXJfY2hhbm5lbCJdKQorCisgICAgICAgICAgICBp
ZiBiaW5hcnkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBXcHRydW5FcnJvcigiVW5h
YmxlIHRvIGZpbmQgTWluaUJyb3dzZXIgYmluYXJ5IikKKyAgICAgICAgICAgIGt3YXJnc1siYmlu
YXJ5Il0gPSBiaW5hcnkKKworICAgICAgICBpZiBrd2FyZ3NbIndlYmRyaXZlcl9iaW5hcnkiXSBp
cyBOb25lOgorICAgICAgICAgICAgd2ViZHJpdmVyX2JpbmFyeSA9IHNlbGYuYnJvd3Nlci5maW5k
X3dlYmRyaXZlcihjaGFubmVsPWt3YXJnc1siYnJvd3Nlcl9jaGFubmVsIl0pCisKKyAgICAgICAg
ICAgIGlmIHdlYmRyaXZlcl9iaW5hcnkgaXMgTm9uZToKKyAgICAgICAgICAgICAgICByYWlzZSBX
cHRydW5FcnJvcigiVW5hYmxlIHRvIGZpbmQgV2ViS2l0V2ViRHJpdmVyIGluIFBBVEgiKQorICAg
ICAgICAgICAga3dhcmdzWyJ3ZWJkcml2ZXJfYmluYXJ5Il0gPSB3ZWJkcml2ZXJfYmluYXJ5CisK
KworY2xhc3MgRXBpcGhhbnkoQnJvd3NlclNldHVwKToKKyAgICBuYW1lID0gImVwaXBoYW55Igor
ICAgIGJyb3dzZXJfY2xzID0gYnJvd3Nlci5FcGlwaGFueQorCisgICAgZGVmIGluc3RhbGwoc2Vs
ZiwgY2hhbm5lbD1Ob25lKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisg
ICAgZGVmIHNldHVwX2t3YXJncyhzZWxmLCBrd2FyZ3MpOgorICAgICAgICBpZiBrd2FyZ3NbImJp
bmFyeSJdIGlzIE5vbmU6CisgICAgICAgICAgICBiaW5hcnkgPSBzZWxmLmJyb3dzZXIuZmluZF9i
aW5hcnkoKQorCisgICAgICAgICAgICBpZiBiaW5hcnkgaXMgTm9uZToKKyAgICAgICAgICAgICAg
ICByYWlzZSBXcHRydW5FcnJvcigiVW5hYmxlIHRvIGZpbmQgZXBpcGhhbnkgaW4gUEFUSCIpCisg
ICAgICAgICAgICBrd2FyZ3NbImJpbmFyeSJdID0gYmluYXJ5CisKKyAgICAgICAgaWYga3dhcmdz
WyJ3ZWJkcml2ZXJfYmluYXJ5Il0gaXMgTm9uZToKKyAgICAgICAgICAgIHdlYmRyaXZlcl9iaW5h
cnkgPSBzZWxmLmJyb3dzZXIuZmluZF93ZWJkcml2ZXIoKQorCisgICAgICAgICAgICBpZiB3ZWJk
cml2ZXJfYmluYXJ5IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgV3B0cnVuRXJyb3Io
IlVuYWJsZSB0byBmaW5kIFdlYktpdFdlYkRyaXZlciBpbiBQQVRIIikKKyAgICAgICAgICAgIGt3
YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdID0gd2ViZHJpdmVyX2JpbmFyeQorCisKIHByb2R1Y3Rf
c2V0dXAgPSB7Ci0gICAgImZlbm5lYyI6IEZlbm5lYywKKyAgICAiYW5kcm9pZF93ZWJ2aWV3Ijog
QW5kcm9pZFdlYnZpZXcsCiAgICAgImZpcmVmb3giOiBGaXJlZm94LAorICAgICJmaXJlZm94X2Fu
ZHJvaWQiOiBGaXJlZm94QW5kcm9pZCwKICAgICAiY2hyb21lIjogQ2hyb21lLAogICAgICJjaHJv
bWVfYW5kcm9pZCI6IENocm9tZUFuZHJvaWQsCisgICAgImNocm9tZV9pb3MiOiBDaHJvbWVpT1Ms
CisgICAgImVkZ2VjaHJvbWl1bSI6IEVkZ2VDaHJvbWl1bSwKICAgICAiZWRnZSI6IEVkZ2UsCisg
ICAgImVkZ2Vfd2ViZHJpdmVyIjogRWRnZVdlYkRyaXZlciwKICAgICAiaWUiOiBJbnRlcm5ldEV4
cGxvcmVyLAogICAgICJzYWZhcmkiOiBTYWZhcmksCiAgICAgInNlcnZvIjogU2Vydm8sCisgICAg
InNlcnZvZHJpdmVyIjogU2Vydm9XZWJEcml2ZXIsCiAgICAgInNhdWNlIjogU2F1Y2UsCiAgICAg
Im9wZXJhIjogT3BlcmEsCiAgICAgIndlYmtpdCI6IFdlYktpdCwKKyAgICAid2Via2l0Z3RrX21p
bmlicm93c2VyIjogV2ViS2l0R1RLTWluaUJyb3dzZXIsCisgICAgImVwaXBoYW55IjogRXBpcGhh
bnksCiB9CiAKIAotZGVmIHNldHVwX3dwdHJ1bm5lcih2ZW52LCBwcm9tcHQ9VHJ1ZSwgaW5zdGFs
bD1GYWxzZSwgKiprd2FyZ3MpOgotICAgIGZyb20gd3B0cnVubmVyIGltcG9ydCB3cHRydW5uZXIs
IHdwdGNvbW1hbmRsaW5lCitkZWYgc2V0dXBfbG9nZ2luZyhrd2FyZ3MsIGRlZmF1bHRfY29uZmln
PU5vbmUsIGZvcm1hdHRlcl9kZWZhdWx0cz1Ob25lKToKKyAgICBpbXBvcnQgbW96bG9nCisgICAg
ZnJvbSB3cHRydW5uZXIgaW1wb3J0IHdwdHJ1bm5lcgogCiAgICAgZ2xvYmFsIGxvZ2dlcgogCisg
ICAgIyBVc2UgdGhlIGdyb3VwZWQgZm9ybWF0dGVyIGJ5IGRlZmF1bHQgd2hlcmUgbW96bG9nIDMu
OSsgaXMgaW5zdGFsbGVkCisgICAgaWYgZGVmYXVsdF9jb25maWcgaXMgTm9uZToKKyAgICAgICAg
aWYgaGFzYXR0cihtb3psb2cuZm9ybWF0dGVycywgIkdyb3VwaW5nRm9ybWF0dGVyIik6CisgICAg
ICAgICAgICBkZWZhdWx0X2Zvcm1hdHRlciA9ICJncm91cGVkIgorICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgZGVmYXVsdF9mb3JtYXR0ZXIgPSAibWFjaCIKKyAgICAgICAgZGVmYXVsdF9jb25m
aWcgPSB7ZGVmYXVsdF9mb3JtYXR0ZXI6IHN5cy5zdGRvdXR9CisgICAgd3B0cnVubmVyLnNldHVw
X2xvZ2dpbmcoa3dhcmdzLCBkZWZhdWx0X2NvbmZpZywgZm9ybWF0dGVyX2RlZmF1bHRzPWZvcm1h
dHRlcl9kZWZhdWx0cykKKyAgICBsb2dnZXIgPSB3cHRydW5uZXIubG9nZ2VyCisgICAgcmV0dXJu
IGxvZ2dlcgorCisKK2RlZiBzZXR1cF93cHRydW5uZXIodmVudiwgcHJvbXB0PVRydWUsIGluc3Rh
bGxfYnJvd3Nlcj1GYWxzZSwgKiprd2FyZ3MpOgorICAgIGZyb20gd3B0cnVubmVyIGltcG9ydCB3
cHRjb21tYW5kbGluZQorCiAgICAga3dhcmdzID0gdXRpbHMuS3dhcmdzKGt3YXJncy5pdGVyaXRl
bXMoKSkKIAogICAgIHByb2R1Y3RfcGFydHMgPSBrd2FyZ3NbInByb2R1Y3QiXS5zcGxpdCgiOiIp
Ci0gICAga3dhcmdzWyJwcm9kdWN0Il0gPSBwcm9kdWN0X3BhcnRzWzBdCisgICAga3dhcmdzWyJw
cm9kdWN0Il0gPSBwcm9kdWN0X3BhcnRzWzBdLnJlcGxhY2UoIi0iLCAiXyIpCiAgICAgc3ViX3By
b2R1Y3QgPSBwcm9kdWN0X3BhcnRzWzE6XQogCi0gICAgd3B0cnVubmVyLnNldHVwX2xvZ2dpbmco
a3dhcmdzLCB7Im1hY2giOiBzeXMuc3Rkb3V0fSkKLSAgICBsb2dnZXIgPSB3cHRydW5uZXIubG9n
Z2VyCi0KICAgICBjaGVja19lbnZpcm9uKGt3YXJnc1sicHJvZHVjdCJdKQogICAgIGFyZ3NfZ2Vu
ZXJhbChrd2FyZ3MpCiAKQEAgLTQyNCw5ICs2OTUsNDQgQEAgZGVmIHNldHVwX3dwdHJ1bm5lcih2
ZW52LCBwcm9tcHQ9VHJ1ZSwgaW5zdGFsbD1GYWxzZSwgKiprd2FyZ3MpOgogICAgIHNldHVwX2Ns
cyA9IHByb2R1Y3Rfc2V0dXBba3dhcmdzWyJwcm9kdWN0Il1dKHZlbnYsIHByb21wdCwgc3ViX3By
b2R1Y3QpCiAgICAgc2V0dXBfY2xzLmluc3RhbGxfcmVxdWlyZW1lbnRzKCkKIAotICAgIGlmIGlu
c3RhbGw6CisgICAgYWZmZWN0ZWRfcmV2aXNoID0ga3dhcmdzLnBvcCgiYWZmZWN0ZWQiLCBOb25l
KQorICAgIGlmIGFmZmVjdGVkX3JldmlzaCBpcyBub3QgTm9uZToKKyAgICAgICAgIyBUT0RPOiBD
b25zb2xpZGF0ZSB3aXRoIGAuL3dwdCB0ZXN0cy1hZmZlY3RlZCAtLWlnbm9yZS1ydWxlc2A6Cisg
ICAgICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVz
LzE0NTYwCisgICAgICAgIGZpbGVzX2NoYW5nZWQsIF8gPSB0ZXN0ZmlsZXMuZmlsZXNfY2hhbmdl
ZCgKKyAgICAgICAgICAgIGFmZmVjdGVkX3JldmlzaCwKKyAgICAgICAgICAgIGlnbm9yZV9ydWxl
cz1bInJlc291cmNlcy90ZXN0aGFybmVzcyoiXSwKKyAgICAgICAgICAgIGluY2x1ZGVfdW5jb21t
aXR0ZWQ9VHJ1ZSwgaW5jbHVkZV9uZXc9VHJ1ZSkKKyAgICAgICAgIyBUT0RPOiBQZXJoYXBzIHVz
ZSB3cHRydW5uZXIudGVzdGxvYWRlci5NYW5pZmVzdExvYWRlciBoZXJlCisgICAgICAgICMgYW5k
IHJlbW92ZSB0aGUgbWFuaWZlc3QtcmVsYXRlZCBjb2RlIGZyb20gdGVzdGZpbGVzLgorICAgICAg
ICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xNDQy
MQorICAgICAgICB0ZXN0c19jaGFuZ2VkLCB0ZXN0c19hZmZlY3RlZCA9IHRlc3RmaWxlcy5hZmZl
Y3RlZF90ZXN0ZmlsZXMoCisgICAgICAgICAgICBmaWxlc19jaGFuZ2VkLCBtYW5pZmVzdF9wYXRo
PWt3YXJncy5nZXQoIm1hbmlmZXN0X3BhdGgiKSwgbWFuaWZlc3RfdXBkYXRlPWt3YXJnc1sibWFu
aWZlc3RfdXBkYXRlIl0pCisgICAgICAgIHRlc3RfbGlzdCA9IHRlc3RzX2NoYW5nZWQgfCB0ZXN0
c19hZmZlY3RlZAorICAgICAgICBsb2dnZXIuaW5mbygiSWRlbnRpZmllZCAlcyBhZmZlY3RlZCB0
ZXN0cyIgJSBsZW4odGVzdF9saXN0KSkKKyAgICAgICAgdGVzdF9saXN0ID0gW29zLnBhdGgucmVs
cGF0aChpdGVtLCB3cHRfcm9vdCkgZm9yIGl0ZW0gaW4gdGVzdF9saXN0XQorICAgICAgICBrd2Fy
Z3NbInRlc3RfbGlzdCJdICs9IHRlc3RfbGlzdAorICAgICAgICBrd2FyZ3NbImRlZmF1bHRfZXhj
bHVkZSJdID0gVHJ1ZQorCisgICAgaWYgaW5zdGFsbF9icm93c2VyIGFuZCBub3Qga3dhcmdzWyJj
aGFubmVsIl06CisgICAgICAgIGxvZ2dlci5pbmZvKCItLWluc3RhbGwtYnJvd3NlciBpcyBnaXZl
biBidXQgLS1jaGFubmVsIGlzIG5vdCBzZXQsIGRlZmF1bHQgdG8gbmlnaHRseSBjaGFubmVsIikK
KyAgICAgICAga3dhcmdzWyJjaGFubmVsIl0gPSAibmlnaHRseSIKKworICAgIGlmIGt3YXJnc1si
Y2hhbm5lbCJdOgorICAgICAgICBjaGFubmVsID0gaW5zdGFsbC5nZXRfY2hhbm5lbChrd2FyZ3Nb
InByb2R1Y3QiXSwga3dhcmdzWyJjaGFubmVsIl0pCisgICAgICAgIGlmIGNoYW5uZWwgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICBpZiBjaGFubmVsICE9IGt3YXJnc1siY2hhbm5lbCJdOgorICAg
ICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJJbnRlcnByZXRpbmcgY2hhbm5lbCAnJXMnIGFzICcl
cyciICUgKGt3YXJnc1siY2hhbm5lbCJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5uZWwpKQorICAgICAgICAg
ICAga3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSA9IGNoYW5uZWwKKyAgICAgICAgZWxzZToKKyAg
ICAgICAgICAgIGxvZ2dlci5pbmZvKCJWYWxpZCBjaGFubmVscyBmb3IgJXMgbm90IGtub3duOyB1
c2luZyBhcmd1bWVudCB1bm1vZGlmaWVkIiAlIGt3YXJnc1sicHJvZHVjdCJdKQorICAgICAgICAg
ICAga3dhcmdzWyJicm93c2VyX2NoYW5uZWwiXSA9IGt3YXJnc1siY2hhbm5lbCJdCisgICAgICAg
IGRlbCBrd2FyZ3NbImNoYW5uZWwiXQorCisgICAgaWYgaW5zdGFsbF9icm93c2VyOgogICAgICAg
ICBsb2dnZXIuaW5mbygiSW5zdGFsbGluZyBicm93c2VyIikKLSAgICAgICAga3dhcmdzWyJiaW5h
cnkiXSA9IHNldHVwX2Nscy5pbnN0YWxsKHZlbnYpCisgICAgICAgIGt3YXJnc1siYmluYXJ5Il0g
PSBzZXR1cF9jbHMuaW5zdGFsbChjaGFubmVsPWNoYW5uZWwpCiAKICAgICBzZXR1cF9jbHMuc2V0
dXAoa3dhcmdzKQogCkBAIC00MzQsMjAgKzc0MCwzMCBAQCBkZWYgc2V0dXBfd3B0cnVubmVyKHZl
bnYsIHByb21wdD1UcnVlLCBpbnN0YWxsPUZhbHNlLCAqKmt3YXJncyk6CiAKICAgICB3cHRydW5u
ZXJfcGF0aCA9IG9zLnBhdGguam9pbih3cHRfcm9vdCwgInRvb2xzIiwgIndwdHJ1bm5lciIpCiAK
LSAgICB2ZW52Lmluc3RhbGxfcmVxdWlyZW1lbnRzKG9zLnBhdGguam9pbih3cHRydW5uZXJfcGF0
aCwgInJlcXVpcmVtZW50cy50eHQiKSkKKyAgICBpZiBub3QgdmVudi5za2lwX3ZpcnR1YWxlbnZf
c2V0dXA6CisgICAgICAgIHZlbnYuaW5zdGFsbF9yZXF1aXJlbWVudHMob3MucGF0aC5qb2luKHdw
dHJ1bm5lcl9wYXRoLCAicmVxdWlyZW1lbnRzLnR4dCIpKQorCisgICAgIyBPbmx5IHVwZGF0ZSBi
cm93c2VyX3ZlcnNpb24gaWYgaXQgd2FzIG5vdCBnaXZlbiBhcyBhIGNvbW1hbmQgbGluZQorICAg
ICMgYXJndW1lbnQsIHNvIHRoYXQgaXQgY2FuIGJlIG92ZXJyaWRkZW4gb24gdGhlIGNvbW1hbmQg
bGluZS4KKyAgICBpZiBub3Qga3dhcmdzWyJicm93c2VyX3ZlcnNpb24iXToKKyAgICAgICAga3dh
cmdzWyJicm93c2VyX3ZlcnNpb24iXSA9IHNldHVwX2Nscy5icm93c2VyLnZlcnNpb24oCisgICAg
ICAgICAgICBiaW5hcnk9a3dhcmdzLmdldCgiYmluYXJ5Iikgb3Iga3dhcmdzLmdldCgicGFja2Fn
ZV9uYW1lIiksCisgICAgICAgICAgICB3ZWJkcml2ZXJfYmluYXJ5PWt3YXJncy5nZXQoIndlYmRy
aXZlcl9iaW5hcnkiKSwKKyAgICAgICAgKQogCi0gICAga3dhcmdzWydicm93c2VyX3ZlcnNpb24n
XSA9IHNldHVwX2Nscy5icm93c2VyLnZlcnNpb24oa3dhcmdzLmdldCgiYmluYXJ5IikpCiAgICAg
cmV0dXJuIGt3YXJncwogCiAKIGRlZiBydW4odmVudiwgKiprd2FyZ3MpOgotICAgICNSZW1vdmUg
YXJndW1lbnRzIHRoYXQgYXJlbid0IHBhc3NlZCB0byB3cHRydW5uZXIKKyAgICBzZXR1cF9sb2dn
aW5nKGt3YXJncykKKworICAgICMgUmVtb3ZlIGFyZ3VtZW50cyB0aGF0IGFyZW4ndCBwYXNzZWQg
dG8gd3B0cnVubmVyCiAgICAgcHJvbXB0ID0ga3dhcmdzLnBvcCgicHJvbXB0IiwgVHJ1ZSkKICAg
ICBpbnN0YWxsX2Jyb3dzZXIgPSBrd2FyZ3MucG9wKCJpbnN0YWxsX2Jyb3dzZXIiLCBGYWxzZSkK
IAogICAgIGt3YXJncyA9IHNldHVwX3dwdHJ1bm5lcih2ZW52LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBwcm9tcHQ9cHJvbXB0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bnN0YWxsPWluc3RhbGxfYnJvd3NlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5z
dGFsbF9icm93c2VyPWluc3RhbGxfYnJvd3NlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKiprd2FyZ3MpCiAKICAgICBydiA9IHJ1bl9zaW5nbGUodmVudiwgKiprd2FyZ3MpID4gMApA
QCAtNDc3LDcgKzc5Myw3IEBAIGRlZiBtYWluKCk6CiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5f
XyI6CiAgICAgaW1wb3J0IHBkYgotICAgIGZyb20gdG9vbHMgaW1wb3J0IGxvY2FscGF0aHMgICMg
bm9xYTogZmxha2U4CisgICAgZnJvbSB0b29scyBpbXBvcnQgbG9jYWxwYXRocyAgIyBub3FhOiBG
NDAxCiAgICAgdHJ5OgogICAgICAgICBtYWluKCkKICAgICBleGNlcHQgRXhjZXB0aW9uOgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvdGVzdGZpbGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdGVzdGZpbGVzLnB5CmluZGV4IDM1YTRiOTdkN2ZmYWEyNGY2MzBk
NzBjNjg3N2M3MTlkMTU1YzJlYzcuLmNmMTJhNTljOGU2OGE3MGY3ODI1NjNhODFjMTUxMTI0Mjk2
MmVkZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0L3Rlc3RmaWxlcy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0ZmlsZXMucHkKQEAgLTUsMTAgKzUs
MzcgQEAgaW1wb3J0IHJlCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogCitpbXBvcnQg
c2l4CiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSBzaXggaW1wb3J0
IGl0ZXJpdGVtcwogCi1mcm9tIC4ubWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCB1cGRhdGUKK3Ry
eToKKyAgICBmcm9tIC4ubWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0CitleGNlcHQgVmFsdWVFcnJv
cjoKKyAgICAjIGlmIHdlJ3JlIG5vdCB3aXRoaW4gdGhlIHRvb2xzIHBhY2thZ2UsIHRoZSBhYm92
ZSBpcyBhbiBpbXBvcnQgZnJvbSBhYm92ZQorICAgICMgdGhlIHRvcC1sZXZlbCB3aGljaCByYWlz
ZXMgVmFsdWVFcnJvciwgc28gcmVpbXBvcnQgaXQgd2l0aCBhbiBhYnNvbHV0ZQorICAgICMgcmVm
ZXJlbmNlCisgICAgIworICAgICMgbm90ZSB3ZSBuZWVkIGJvdGggYmVjYXVzZSBkZXBlbmRpbmcg
b24gY2FsbGVyIHdlIG1heS9tYXkgbm90IGhhdmUgdGhlCisgICAgIyBwYXRocyBzZXQgdXAgY29y
cmVjdGx5IHRvIGhhbmRsZSBib3RoIGFuZCBNWVBZIGhhcyBubyBrbm93bGVkZ2Ugb2Ygb3VyCisg
ICAgIyBzeXMucGF0aCBtYWdpYworICAgIGZyb20gbWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0ICAj
IHR5cGU6IGlnbm9yZQorCitNWVBZID0gRmFsc2UKK2lmIE1ZUFk6CisgICAgIyBNWVBZIGlzIHNl
dCB0byBUcnVlIHdoZW4gcnVuIHVuZGVyIE15cHkuCisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEFu
eQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBDYWxsYWJsZQorICAgIGZyb20gdHlwaW5nIGltcG9y
dCBEaWN0CisgICAgZnJvbSB0eXBpbmcgaW1wb3J0IEl0ZXJhYmxlCisgICAgZnJvbSB0eXBpbmcg
aW1wb3J0IExpc3QKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgT3B0aW9uYWwKKyAgICBmcm9tIHR5
cGluZyBpbXBvcnQgUGF0dGVybgorICAgIGZyb20gdHlwaW5nIGltcG9ydCBTZXF1ZW5jZQorICAg
IGZyb20gdHlwaW5nIGltcG9ydCBTZXQKKyAgICBmcm9tIHR5cGluZyBpbXBvcnQgVGV4dAorICAg
IGZyb20gdHlwaW5nIGltcG9ydCBUdXBsZQorICAgIGZyb20gdHlwaW5nIGltcG9ydCBVbmlvbgog
CiBoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogd3B0X3Jvb3QgPSBvcy5wYXRoLmFi
c3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFyZGlyKSkKQEAgLTE3LDM0
ICs0NCwzOCBAQCBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCiAKIAogZGVmIGdldF9naXRf
Y21kKHJlcG9fcGF0aCk6CisgICAgIyB0eXBlOiAoYnl0ZXMpIC0+IENhbGxhYmxlWy4uLiwgVGV4
dF0KICAgICAiIiJDcmVhdGUgYSBmdW5jdGlvbiBmb3IgaW52b2tpbmcgZ2l0IGNvbW1hbmRzIGFz
IGEgc3VicHJvY2Vzcy4iIiIKICAgICBkZWYgZ2l0KGNtZCwgKmFyZ3MpOgotICAgICAgICBmdWxs
X2NtZCA9IFsiZ2l0IiwgY21kXSArIGxpc3QoaXRlbS5kZWNvZGUoInV0ZjgiKSBpZiBpc2luc3Rh
bmNlKGl0ZW0sIGJ5dGVzKSBlbHNlIGl0ZW0gZm9yIGl0ZW0gaW4gYXJncykKKyAgICAgICAgIyB0
eXBlOiAoVGV4dCwgKlVuaW9uW2J5dGVzLCBUZXh0XSkgLT4gVGV4dAorICAgICAgICBmdWxsX2Nt
ZCA9IFt1ImdpdCIsIGNtZF0gKyBsaXN0KGl0ZW0uZGVjb2RlKCJ1dGY4IikgaWYgaXNpbnN0YW5j
ZShpdGVtLCBieXRlcykgZWxzZSBpdGVtIGZvciBpdGVtIGluIGFyZ3MpICAjIHR5cGU6IExpc3Rb
VGV4dF0KICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCIgIi5qb2luKGZ1
bGxfY21kKSkKLSAgICAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChmdWxs
X2NtZCwgY3dkPXJlcG9fcGF0aCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0
ZjgiKS5zdHJpcCgpCisgICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQo
ZnVsbF9jbWQsIGN3ZD1yZXBvX3BhdGgpLmRlY29kZSgidXRmOCIpLnN0cmlwKCkKICAgICAgICAg
ZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICBs
b2dnZXIuZXJyb3IoIkdpdCBjb21tYW5kIGV4aXRlZCB3aXRoIHN0YXR1cyAlaSIgJSBlLnJldHVy
bmNvZGUpCi0gICAgICAgICAgICBsb2dnZXIuZXJyb3IoZS5vdXRwdXQpCisgICAgICAgICAgICBs
b2dnZXIuY3JpdGljYWwoIkdpdCBjb21tYW5kIGV4aXRlZCB3aXRoIHN0YXR1cyAlaSIgJSBlLnJl
dHVybmNvZGUpCisgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoZS5vdXRwdXQpCiAgICAgICAg
ICAgICBzeXMuZXhpdCgxKQogICAgIHJldHVybiBnaXQKIAogCiBkZWYgZGlzcGxheV9icmFuY2hf
cG9pbnQoKToKKyAgICAjIHR5cGU6ICgpIC0+IE5vbmUKICAgICBwcmludChicmFuY2hfcG9pbnQo
KSkKIAogCiBkZWYgYnJhbmNoX3BvaW50KCk6CisgICAgIyB0eXBlOiAoKSAtPiBPcHRpb25hbFtU
ZXh0XQogICAgIGdpdCA9IGdldF9naXRfY21kKHdwdF9yb290KQotICAgIGlmIChvcy5lbnZpcm9u
LmdldCgiVFJBVklTX1BVTExfUkVRVUVTVCIsICJmYWxzZSIpID09ICJmYWxzZSIgYW5kCi0gICAg
ICAgIG9zLmVudmlyb24uZ2V0KCJUUkFWSVNfQlJBTkNIIikgPT0gIm1hc3RlciIpOgorICAgIGlm
IChvcy5lbnZpcm9uLmdldCgiR0lUSFVCX1BVTExfUkVRVUVTVCIsICJmYWxzZSIpID09ICJmYWxz
ZSIgYW5kCisgICAgICAgIG9zLmVudmlyb24uZ2V0KCJHSVRIVUJfQlJBTkNIIikgPT0gIm1hc3Rl
ciIpOgogICAgICAgICAjIEZvciBidWlsZHMgb24gdGhlIG1hc3RlciBicmFuY2gganVzdCByZXR1
cm4gdGhlIEhFQUQgY29tbWl0CiAgICAgICAgIHJldHVybiBnaXQoInJldi1wYXJzZSIsICJIRUFE
IikKLSAgICBlbGlmIG9zLmVudmlyb24uZ2V0KCJUUkFWSVNfUFVMTF9SRVFVRVNUIiwgImZhbHNl
IikgIT0gImZhbHNlIjoKLSAgICAgICAgIyBUaGlzIGlzIGEgUFIsIHNvIHRoZSBiYXNlIGJyYW5j
aCBpcyBpbiBUUkFWSVNfQlJBTkNICi0gICAgICAgIHRyYXZpc19icmFuY2ggPSBvcy5lbnZpcm9u
LmdldCgiVFJBVklTX0JSQU5DSCIpCi0gICAgICAgIGFzc2VydCB0cmF2aXNfYnJhbmNoLCAiVFJB
VklTX0JSQU5DSCBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBkZWZpbmVkIgotICAgICAgICBicmFu
Y2hfcG9pbnQgPSBnaXQoIm1lcmdlLWJhc2UiLCAiSEVBRCIsIHRyYXZpc19icmFuY2gpCisgICAg
ZWxpZiBvcy5lbnZpcm9uLmdldCgiR0lUSFVCX1BVTExfUkVRVUVTVCIsICJmYWxzZSIpICE9ICJm
YWxzZSI6CisgICAgICAgICMgVGhpcyBpcyBhIFBSLCBzbyB0aGUgYmFzZSBicmFuY2ggaXMgaW4g
R0lUSFVCX0JSQU5DSAorICAgICAgICBiYXNlX2JyYW5jaCA9IG9zLmVudmlyb24uZ2V0KCJHSVRI
VUJfQlJBTkNIIikKKyAgICAgICAgYXNzZXJ0IGJhc2VfYnJhbmNoLCAiR0lUSFVCX0JSQU5DSCBl
bnZpcm9ubWVudCB2YXJpYWJsZSBpcyBkZWZpbmVkIgorICAgICAgICBicmFuY2hfcG9pbnQgPSBn
aXQoIm1lcmdlLWJhc2UiLCAiSEVBRCIsIGJhc2VfYnJhbmNoKSAgIyB0eXBlOiBPcHRpb25hbFtU
ZXh0XQogICAgIGVsc2U6CiAgICAgICAgICMgT3RoZXJ3aXNlIHdlIGFyZW4ndCBvbiBhIFBSLCBz
byB3ZSB0cnkgdG8gZmluZCBjb21taXRzIHRoYXQgYXJlIG9ubHkgaW4gdGhlCiAgICAgICAgICMg
Y3VycmVudCBicmFuY2ggYy5mLgpAQCAtNTksNyArOTAsNyBAQCBkZWYgYnJhbmNoX3BvaW50KCk6
CiAKICAgICAgICAgIyBnZXQgYWxsIGNvbW1pdHMgb24gSEVBRCBidXQgbm90IHJlYWNoYWJsZSBm
cm9tIGFueXRoaW5nIGluIG5vdF9oZWFkcwogICAgICAgICBjb21taXRzID0gZ2l0KCJyZXYtbGlz
dCIsICItLXRvcG8tb3JkZXIiLCAiLS1wYXJlbnRzIiwgIkhFQUQiLCAqbm90X2hlYWRzKQotICAg
ICAgICBjb21taXRfcGFyZW50cyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgY29tbWl0X3BhcmVu
dHMgPSBPcmRlcmVkRGljdCgpICAjIHR5cGU6IERpY3RbVGV4dCwgTGlzdFtUZXh0XV0KICAgICAg
ICAgaWYgY29tbWl0czoKICAgICAgICAgICAgIGZvciBsaW5lIGluIGNvbW1pdHMuc3BsaXQoIlxu
Iik6CiAgICAgICAgICAgICAgICAgbGluZV9jb21taXRzID0gbGluZS5zcGxpdCgiICIpCkBAIC0x
MDMsNiArMTM0LDcgQEAgZGVmIGJyYW5jaF9wb2ludCgpOgogCiAKIGRlZiBjb21waWxlX2lnbm9y
ZV9ydWxlKHJ1bGUpOgorICAgICMgdHlwZTogKHN0cikgLT4gUGF0dGVybltzdHJdCiAgICAgcnVs
ZSA9IHJ1bGUucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQogICAgIHBhcnRzID0gcnVsZS5zcGxp
dCgiLyIpCiAgICAgcmVfcGFydHMgPSBbXQpAQCAtMTE3LDEwICsxNDksMTEgQEAgZGVmIGNvbXBp
bGVfaWdub3JlX3J1bGUocnVsZSk6CiAKIAogZGVmIHJlcG9fZmlsZXNfY2hhbmdlZChyZXZpc2gs
IGluY2x1ZGVfdW5jb21taXR0ZWQ9RmFsc2UsIGluY2x1ZGVfbmV3PUZhbHNlKToKKyAgICAjIHR5
cGU6IChzdHIsIGJvb2wsIGJvb2wpIC0+IFNldFtUZXh0XQogICAgIGdpdCA9IGdldF9naXRfY21k
KHdwdF9yb290KQotICAgIGZpbGVzID0gZ2l0KCJkaWZmIiwgIi0tbmFtZS1vbmx5IiwgIi16Iiwg
cmV2aXNoKS5zcGxpdCgiXDAiKQotICAgIGFzc2VydCBub3QgZmlsZXNbLTFdCi0gICAgZmlsZXMg
PSBzZXQoZmlsZXNbOi0xXSkKKyAgICBmaWxlc19saXN0ID0gZ2l0KCJkaWZmIiwgIi0tbmFtZS1v
bmx5IiwgIi16IiwgcmV2aXNoKS5zcGxpdCgiXDAiKQorICAgIGFzc2VydCBub3QgZmlsZXNfbGlz
dFstMV0KKyAgICBmaWxlcyA9IHNldChmaWxlc19saXN0WzotMV0pCiAKICAgICBpZiBpbmNsdWRl
X3VuY29tbWl0dGVkOgogICAgICAgICBlbnRyaWVzID0gZ2l0KCJzdGF0dXMiLCAiLXoiKS5zcGxp
dCgiXDAiKQpAQCAtMTQyLDE2ICsxNzUsMTcgQEAgZGVmIHJlcG9fZmlsZXNfY2hhbmdlZChyZXZp
c2gsIGluY2x1ZGVfdW5jb21taXR0ZWQ9RmFsc2UsIGluY2x1ZGVfbmV3PUZhbHNlKToKIAogCiBk
ZWYgZXhjbHVkZV9pZ25vcmVkKGZpbGVzLCBpZ25vcmVfcnVsZXMpOgorICAgICMgdHlwZTogKEl0
ZXJhYmxlW1RleHRdLCBPcHRpb25hbFtTZXF1ZW5jZVtzdHJdXSkgLT4gVHVwbGVbTGlzdFtUZXh0
XSwgTGlzdFtUZXh0XV0KICAgICBpZiBpZ25vcmVfcnVsZXMgaXMgTm9uZToKICAgICAgICAgaWdu
b3JlX3J1bGVzID0gW10KLSAgICBpZ25vcmVfcnVsZXMgPSBbY29tcGlsZV9pZ25vcmVfcnVsZShp
dGVtKSBmb3IgaXRlbSBpbiBpZ25vcmVfcnVsZXNdCisgICAgY29tcGlsZWRfaWdub3JlX3J1bGVz
ID0gW2NvbXBpbGVfaWdub3JlX3J1bGUoaXRlbSkgZm9yIGl0ZW0gaW4gaWdub3JlX3J1bGVzXQog
CiAgICAgY2hhbmdlZCA9IFtdCiAgICAgaWdub3JlZCA9IFtdCiAgICAgZm9yIGl0ZW0gaW4gc29y
dGVkKGZpbGVzKToKICAgICAgICAgZnVsbHBhdGggPSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsIGl0
ZW0pCiAgICAgICAgIHJ1bGVfcGF0aCA9IGl0ZW0ucmVwbGFjZShvcy5wYXRoLnNlcCwgIi8iKQot
ICAgICAgICBmb3IgcnVsZSBpbiBpZ25vcmVfcnVsZXM6CisgICAgICAgIGZvciBydWxlIGluIGNv
bXBpbGVkX2lnbm9yZV9ydWxlczoKICAgICAgICAgICAgIGlmIHJ1bGUubWF0Y2gocnVsZV9wYXRo
KToKICAgICAgICAgICAgICAgICBpZ25vcmVkLmFwcGVuZChmdWxscGF0aCkKICAgICAgICAgICAg
ICAgICBicmVhawpAQCAtMTYxLDEwICsxOTUsMTggQEAgZGVmIGV4Y2x1ZGVfaWdub3JlZChmaWxl
cywgaWdub3JlX3J1bGVzKToKICAgICByZXR1cm4gY2hhbmdlZCwgaWdub3JlZAogCiAKLWRlZiBm
aWxlc19jaGFuZ2VkKHJldmlzaCwgaWdub3JlX3J1bGVzPU5vbmUsIGluY2x1ZGVfdW5jb21taXR0
ZWQ9RmFsc2UsIGluY2x1ZGVfbmV3PUZhbHNlKToKLSAgICAiIiJHZXQgYW5kIHJldHVybiBmaWxl
cyBjaGFuZ2VkIHNpbmNlIGN1cnJlbnQgYnJhbmNoIGRpdmVyZ2VkIGZyb20gbWFzdGVyLAotICAg
IGV4Y2x1ZGluZyB0aG9zZSB0aGF0IGFyZSBsb2NhdGVkIHdpdGhpbiBhbnkgcGF0aCBtYXRjaGVk
IGJ5Ci0gICAgYGlnbm9yZV9ydWxlc2AuIiIiCitkZWYgZmlsZXNfY2hhbmdlZChyZXZpc2gsICAj
IHR5cGU6IHN0cgorICAgICAgICAgICAgICAgICAgaWdub3JlX3J1bGVzPU5vbmUsICAjIHR5cGU6
IE9wdGlvbmFsW1NlcXVlbmNlW3N0cl1dCisgICAgICAgICAgICAgICAgICBpbmNsdWRlX3VuY29t
bWl0dGVkPUZhbHNlLCAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICBpbmNsdWRlX25l
dz1GYWxzZSAgIyB0eXBlOiBib29sCisgICAgICAgICAgICAgICAgICApOgorICAgICMgdHlwZTog
KC4uLikgLT4gVHVwbGVbTGlzdFtUZXh0XSwgTGlzdFtUZXh0XV0KKyAgICAiIiJGaW5kIGZpbGVz
IGNoYW5nZWQgaW4gY2VydGFpbiByZXZpc2lvbnMuCisKKyAgICBUaGUgZnVuY3Rpb24gcGFzc2Vz
IGByZXZpc2hgIGRpcmVjdGx5IHRvIGBnaXQgZGlmZmAsIHNvIGByZXZpc2hgIGNhbiBoYXZlIGEK
KyAgICB2YXJpZXR5IG9mIGZvcm1zOyBzZWUgYGdpdCBkaWZmIC0taGVscGAgZm9yIGRldGFpbHMu
IEZpbGVzIGluIHRoZSBkaWZmIHRoYXQKKyAgICBhcmUgbWF0Y2hlZCBieSBgaWdub3JlX3J1bGVz
YCBhcmUgZXhjbHVkZWQuCisgICAgIiIiCiAgICAgZmlsZXMgPSByZXBvX2ZpbGVzX2NoYW5nZWQo
cmV2aXNoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfdW5jb21taXR0
ZWQ9aW5jbHVkZV91bmNvbW1pdHRlZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
bmNsdWRlX25ldz1pbmNsdWRlX25ldykKQEAgLTE3NSw0MSArMjE3LDM1IEBAIGRlZiBmaWxlc19j
aGFuZ2VkKHJldmlzaCwgaWdub3JlX3J1bGVzPU5vbmUsIGluY2x1ZGVfdW5jb21taXR0ZWQ9RmFs
c2UsIGluY2x1ZGVfCiAKIAogZGVmIF9pbl9yZXBvX3Jvb3QoZnVsbF9wYXRoKToKKyAgICAjIHR5
cGU6IChVbmlvbltieXRlcywgVGV4dF0pIC0+IGJvb2wKICAgICByZWxfcGF0aCA9IG9zLnBhdGgu
cmVscGF0aChmdWxsX3BhdGgsIHdwdF9yb290KQogICAgIHBhdGhfY29tcG9uZW50cyA9IHJlbF9w
YXRoLnNwbGl0KG9zLnNlcCkKICAgICByZXR1cm4gbGVuKHBhdGhfY29tcG9uZW50cykgPCAyCiAK
IAotZGVmIF9pbml0X21hbmlmZXN0X2NhY2hlKCk6Ci0gICAgYyA9IHt9Ci0KLSAgICBkZWYgbG9h
ZChtYW5pZmVzdF9wYXRoPU5vbmUpOgotICAgICAgICBpZiBtYW5pZmVzdF9wYXRoIGlzIE5vbmU6
Ci0gICAgICAgICAgICBtYW5pZmVzdF9wYXRoID0gb3MucGF0aC5qb2luKHdwdF9yb290LCAiTUFO
SUZFU1QuanNvbiIpCi0gICAgICAgIGlmIGMuZ2V0KG1hbmlmZXN0X3BhdGgpOgotICAgICAgICAg
ICAgcmV0dXJuIGNbbWFuaWZlc3RfcGF0aF0KLSAgICAgICAgIyBjYWNoZSBhdCBtb3N0IG9uZSBw
YXRoOm1hbmlmZXN0Ci0gICAgICAgIGMuY2xlYXIoKQotICAgICAgICB3cHRfbWFuaWZlc3QgPSBt
YW5pZmVzdC5sb2FkKHdwdF9yb290LCBtYW5pZmVzdF9wYXRoKQotICAgICAgICBpZiB3cHRfbWFu
aWZlc3QgaXMgTm9uZToKLSAgICAgICAgICAgIHdwdF9tYW5pZmVzdCA9IG1hbmlmZXN0Lk1hbmlm
ZXN0KCkKLSAgICAgICAgdXBkYXRlLnVwZGF0ZSh3cHRfcm9vdCwgd3B0X21hbmlmZXN0KQotICAg
ICAgICBjW21hbmlmZXN0X3BhdGhdID0gd3B0X21hbmlmZXN0Ci0gICAgICAgIHJldHVybiBjW21h
bmlmZXN0X3BhdGhdCi0gICAgcmV0dXJuIGxvYWQKLQotCi1sb2FkX21hbmlmZXN0ID0gX2luaXRf
bWFuaWZlc3RfY2FjaGUoKQorZGVmIGxvYWRfbWFuaWZlc3QobWFuaWZlc3RfcGF0aD1Ob25lLCBt
YW5pZmVzdF91cGRhdGU9VHJ1ZSk6CisgICAgIyB0eXBlOiAoT3B0aW9uYWxbc3RyXSwgYm9vbCkg
LT4gbWFuaWZlc3QuTWFuaWZlc3QKKyAgICBpZiBtYW5pZmVzdF9wYXRoIGlzIE5vbmU6CisgICAg
ICAgIG1hbmlmZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsICJNQU5JRkVTVC5qc29u
IikKKyAgICByZXR1cm4gbWFuaWZlc3QubG9hZF9hbmRfdXBkYXRlKHdwdF9yb290LCBtYW5pZmVz
dF9wYXRoLCAiLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGU9
bWFuaWZlc3RfdXBkYXRlKQogCiAKLWRlZiBhZmZlY3RlZF90ZXN0ZmlsZXMoZmlsZXNfY2hhbmdl
ZCwgc2tpcF90ZXN0cywgbWFuaWZlc3RfcGF0aD1Ob25lKToKK2RlZiBhZmZlY3RlZF90ZXN0Zmls
ZXMoZmlsZXNfY2hhbmdlZCwgICMgdHlwZTogSXRlcmFibGVbVGV4dF0KKyAgICAgICAgICAgICAg
ICAgICAgICAgc2tpcF9kaXJzPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFsW1NldFtzdHJdXQorICAg
ICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF9wYXRoPU5vbmUsICAjIHR5cGU6IE9wdGlvbmFs
W3N0cl0KKyAgICAgICAgICAgICAgICAgICAgICAgbWFuaWZlc3RfdXBkYXRlPVRydWUgICMgdHlw
ZTogYm9vbAorICAgICAgICAgICAgICAgICAgICAgICApOgorICAgICMgdHlwZTogKC4uLikgLT4g
VHVwbGVbU2V0W1RleHRdLCBTZXRbc3RyXV0KICAgICAiIiJEZXRlcm1pbmUgYW5kIHJldHVybiBs
aXN0IG9mIHRlc3QgZmlsZXMgdGhhdCByZWZlcmVuY2UgY2hhbmdlZCBmaWxlcy4iIiIKKyAgICBp
ZiBza2lwX2RpcnMgaXMgTm9uZToKKyAgICAgICAgc2tpcF9kaXJzID0geyJjb25mb3JtYW5jZS1j
aGVja2VycyIsICJkb2NzIiwgInRvb2xzIn0KICAgICBhZmZlY3RlZF90ZXN0ZmlsZXMgPSBzZXQo
KQogICAgICMgRXhjbHVkZSBmaWxlcyB0aGF0IGFyZSBpbiB0aGUgcmVwbyByb290LCBiZWNhdXNl
CiAgICAgIyB0aGV5IGFyZSBub3QgcGFydCBvZiBhbnkgdGVzdC4KICAgICBmaWxlc19jaGFuZ2Vk
ID0gW2YgZm9yIGYgaW4gZmlsZXNfY2hhbmdlZCBpZiBub3QgX2luX3JlcG9fcm9vdChmKV0KICAg
ICBub250ZXN0c19jaGFuZ2VkID0gc2V0KGZpbGVzX2NoYW5nZWQpCi0gICAgd3B0X21hbmlmZXN0
ID0gbG9hZF9tYW5pZmVzdChtYW5pZmVzdF9wYXRoKQorICAgIHdwdF9tYW5pZmVzdCA9IGxvYWRf
bWFuaWZlc3QobWFuaWZlc3RfcGF0aCwgbWFuaWZlc3RfdXBkYXRlKQogCiAgICAgdGVzdF90eXBl
cyA9IFsidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJ3ZHNwZWMiXQogICAgIHN1cHBvcnRfZmls
ZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBwYXRoKQpAQCAtMjE5LDE3ICsyNTUsMjIgQEAg
ZGVmIGFmZmVjdGVkX3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCBza2lwX3Rlc3RzLCBtYW5pZmVz
dF9wYXRoPU5vbmUpOgogICAgIHRlc3RfZmlsZXMgPSB7b3MucGF0aC5qb2luKHdwdF9yb290LCBw
YXRoKQogICAgICAgICAgICAgICAgICAgZm9yIF8sIHBhdGgsIF8gaW4gd3B0X21hbmlmZXN0Lml0
ZXJ0eXBlcygqdGVzdF90eXBlcyl9CiAKKyAgICBpbnRlcmZhY2VfZGlyID0gb3MucGF0aC5qb2lu
KHdwdF9yb290LCAnaW50ZXJmYWNlcycpCisgICAgaW50ZXJmYWNlc19maWxlcyA9IHtvcy5wYXRo
LmpvaW4od3B0X3Jvb3QsICdpbnRlcmZhY2VzJywgZmlsZW5hbWUpCisgICAgICAgICAgICAgICAg
ICAgICAgICBmb3IgZmlsZW5hbWUgaW4gb3MubGlzdGRpcihpbnRlcmZhY2VfZGlyKX0KKworICAg
IGludGVyZmFjZXNfY2hhbmdlZCA9IGludGVyZmFjZXNfZmlsZXMuaW50ZXJzZWN0aW9uKG5vbnRl
c3RzX2NoYW5nZWQpCiAgICAgbm9udGVzdHNfY2hhbmdlZCA9IG5vbnRlc3RzX2NoYW5nZWQuaW50
ZXJzZWN0aW9uKHN1cHBvcnRfZmlsZXMpCiAKLSAgICB0ZXN0c19jaGFuZ2VkID0gc2V0KGl0ZW0g
Zm9yIGl0ZW0gaW4gZmlsZXNfY2hhbmdlZCBpZiBpdGVtIGluIHRlc3RfZmlsZXMpCisgICAgdGVz
dHNfY2hhbmdlZCA9IHtpdGVtIGZvciBpdGVtIGluIGZpbGVzX2NoYW5nZWQgaWYgaXRlbSBpbiB0
ZXN0X2ZpbGVzfQogCiAgICAgbm9udGVzdF9jaGFuZ2VkX3BhdGhzID0gc2V0KCkKLSAgICByZXdy
aXRlcyA9IHsiL3Jlc291cmNlcy93ZWJpZGwyL2xpYi93ZWJpZGwyLmpzIjogIi9yZXNvdXJjZXMv
V2ViSURMUGFyc2VyLmpzIn0KKyAgICByZXdyaXRlcyA9IHsiL3Jlc291cmNlcy93ZWJpZGwyL2xp
Yi93ZWJpZGwyLmpzIjogIi9yZXNvdXJjZXMvV2ViSURMUGFyc2VyLmpzIn0gICMgdHlwZTogRGlj
dFtUZXh0LCBUZXh0XQogICAgIGZvciBmdWxsX3BhdGggaW4gbm9udGVzdHNfY2hhbmdlZDoKICAg
ICAgICAgcmVsX3BhdGggPSBvcy5wYXRoLnJlbHBhdGgoZnVsbF9wYXRoLCB3cHRfcm9vdCkKICAg
ICAgICAgcGF0aF9jb21wb25lbnRzID0gcmVsX3BhdGguc3BsaXQob3Muc2VwKQogICAgICAgICB0
b3BfbGV2ZWxfc3ViZGlyID0gcGF0aF9jb21wb25lbnRzWzBdCi0gICAgICAgIGlmIHRvcF9sZXZl
bF9zdWJkaXIgaW4gc2tpcF90ZXN0czoKKyAgICAgICAgaWYgdG9wX2xldmVsX3N1YmRpciBpbiBz
a2lwX2RpcnM6CiAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICByZXBvX3BhdGggPSAiLyIg
KyBvcy5wYXRoLnJlbHBhdGgoZnVsbF9wYXRoLCB3cHRfcm9vdCkucmVwbGFjZShvcy5wYXRoLnNl
cCwgIi8iKQogICAgICAgICBpZiByZXBvX3BhdGggaW4gcmV3cml0ZXM6CkBAIC0yMzcsNyArMjc4
LDExIEBAIGRlZiBhZmZlY3RlZF90ZXN0ZmlsZXMoZmlsZXNfY2hhbmdlZCwgc2tpcF90ZXN0cywg
bWFuaWZlc3RfcGF0aD1Ob25lKToKICAgICAgICAgICAgIGZ1bGxfcGF0aCA9IG9zLnBhdGguam9p
bih3cHRfcm9vdCwgcmVwb19wYXRoWzE6XS5yZXBsYWNlKCIvIiwgb3MucGF0aC5zZXApKQogICAg
ICAgICBub250ZXN0X2NoYW5nZWRfcGF0aHMuYWRkKChmdWxsX3BhdGgsIHJlcG9fcGF0aCkpCiAK
KyAgICBpbnRlcmZhY2VfbmFtZSA9IGxhbWJkYSB4OiBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGgu
YmFzZW5hbWUoeCkpWzBdCisgICAgaW50ZXJmYWNlc19jaGFuZ2VkX25hbWVzID0gbWFwKGludGVy
ZmFjZV9uYW1lLCBpbnRlcmZhY2VzX2NoYW5nZWQpCisKICAgICBkZWYgYWZmZWN0ZWRfYnlfd2Rz
cGVjKHRlc3QpOgorICAgICAgICAjIHR5cGU6IChzdHIpIC0+IGJvb2wKICAgICAgICAgYWZmZWN0
ZWQgPSBGYWxzZQogICAgICAgICBpZiB0ZXN0IGluIHdkc3BlY190ZXN0X2ZpbGVzOgogICAgICAg
ICAgICAgZm9yIHN1cHBvcnRfZnVsbF9wYXRoLCBfIGluIG5vbnRlc3RfY2hhbmdlZF9wYXRoczoK
QEAgLTI1MiwxMSArMjk3LDIxIEBAIGRlZiBhZmZlY3RlZF90ZXN0ZmlsZXMoZmlsZXNfY2hhbmdl
ZCwgc2tpcF90ZXN0cywgbWFuaWZlc3RfcGF0aD1Ob25lKToKICAgICAgICAgICAgICAgICAgICAg
YnJlYWsKICAgICAgICAgcmV0dXJuIGFmZmVjdGVkCiAKKyAgICBkZWYgYWZmZWN0ZWRfYnlfaW50
ZXJmYWNlcyhmaWxlX2NvbnRlbnRzKToKKyAgICAgICAgIyB0eXBlOiAoVW5pb25bYnl0ZXMsIFRl
eHRdKSAtPiBib29sCisgICAgICAgIGlmIGxlbihpbnRlcmZhY2VzX2NoYW5nZWRfbmFtZXMpID4g
MDoKKyAgICAgICAgICAgIGlmICdpZGxoYXJuZXNzLmpzJyBpbiBmaWxlX2NvbnRlbnRzOgorICAg
ICAgICAgICAgICAgIGZvciBpbnRlcmZhY2UgaW4gaW50ZXJmYWNlc19jaGFuZ2VkX25hbWVzOgor
ICAgICAgICAgICAgICAgICAgICByZWdleCA9ICdbXCciXScgKyBpbnRlcmZhY2UgKyAnKFxcLmlk
bCk/W1wnIl0nCisgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChyZWdleCwgZmlsZV9j
b250ZW50cyk6CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBy
ZXR1cm4gRmFsc2UKKwogICAgIGZvciByb290LCBkaXJzLCBmbmFtZXMgaW4gb3Mud2Fsayh3cHRf
cm9vdCk6CiAgICAgICAgICMgV2FsayB0b3BfbGV2ZWxfc3ViZGlyIGxvb2tpbmcgZm9yIHRlc3Qg
ZmlsZXMgY29udGFpbmluZyBlaXRoZXIgdGhlCiAgICAgICAgICMgcmVsYXRpdmUgZmlsZXBhdGgg
b3IgYWJzb2x1dGUgZmlsZXBhdGggdG8gdGhlIGNoYW5nZWQgZmlsZXMuCiAgICAgICAgIGlmIHJv
b3QgPT0gd3B0X3Jvb3Q6Ci0gICAgICAgICAgICBmb3IgZGlyX25hbWUgaW4gc2tpcF90ZXN0czoK
KyAgICAgICAgICAgIGZvciBkaXJfbmFtZSBpbiBza2lwX2RpcnM6CiAgICAgICAgICAgICAgICAg
ZGlycy5yZW1vdmUoZGlyX25hbWUpCiAgICAgICAgIGZvciBmbmFtZSBpbiBmbmFtZXM6CiAgICAg
ICAgICAgICB0ZXN0X2Z1bGxfcGF0aCA9IG9zLnBhdGguam9pbihyb290LCBmbmFtZSkKQEAgLTI2
OCwxNiArMzIzLDE2IEBAIGRlZiBhZmZlY3RlZF90ZXN0ZmlsZXMoZmlsZXNfY2hhbmdlZCwgc2tp
cF90ZXN0cywgbWFuaWZlc3RfcGF0aD1Ob25lKToKICAgICAgICAgICAgICAgICBjb250aW51ZQog
CiAgICAgICAgICAgICB3aXRoIG9wZW4odGVzdF9mdWxsX3BhdGgsICJyYiIpIGFzIGZoOgotICAg
ICAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBmaC5yZWFkKCkKLSAgICAgICAgICAgICAgICBp
ZiBmaWxlX2NvbnRlbnRzLnN0YXJ0c3dpdGgoIlx4ZmVceGZmIik6Ci0gICAgICAgICAgICAgICAg
ICAgIGZpbGVfY29udGVudHMgPSBmaWxlX2NvbnRlbnRzLmRlY29kZSgidXRmLTE2YmUiLCAicmVw
bGFjZSIpCi0gICAgICAgICAgICAgICAgZWxpZiBmaWxlX2NvbnRlbnRzLnN0YXJ0c3dpdGgoIlx4
ZmZceGZlIik6Ci0gICAgICAgICAgICAgICAgICAgIGZpbGVfY29udGVudHMgPSBmaWxlX2NvbnRl
bnRzLmRlY29kZSgidXRmLTE2bGUiLCAicmVwbGFjZSIpCisgICAgICAgICAgICAgICAgcmF3X2Zp
bGVfY29udGVudHMgPSBmaC5yZWFkKCkgICMgdHlwZTogYnl0ZXMKKyAgICAgICAgICAgICAgICBp
ZiByYXdfZmlsZV9jb250ZW50cy5zdGFydHN3aXRoKCJceGZlXHhmZiIpOgorICAgICAgICAgICAg
ICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGYtMTZi
ZSIsICJyZXBsYWNlIikgICMgdHlwZTogVGV4dAorICAgICAgICAgICAgICAgIGVsaWYgcmF3X2Zp
bGVfY29udGVudHMuc3RhcnRzd2l0aCgiXHhmZlx4ZmUiKToKKyAgICAgICAgICAgICAgICAgICAg
ZmlsZV9jb250ZW50cyA9IHJhd19maWxlX2NvbnRlbnRzLmRlY29kZSgidXRmLTE2bGUiLCAicmVw
bGFjZSIpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZmlsZV9j
b250ZW50cyA9IGZpbGVfY29udGVudHMuZGVjb2RlKCJ1dGY4IiwgInJlcGxhY2UiKQorICAgICAg
ICAgICAgICAgICAgICBmaWxlX2NvbnRlbnRzID0gcmF3X2ZpbGVfY29udGVudHMuZGVjb2RlKCJ1
dGY4IiwgInJlcGxhY2UiKQogICAgICAgICAgICAgICAgIGZvciBmdWxsX3BhdGgsIHJlcG9fcGF0
aCBpbiBub250ZXN0X2NoYW5nZWRfcGF0aHM6CiAgICAgICAgICAgICAgICAgICAgIHJlbF9wYXRo
ID0gb3MucGF0aC5yZWxwYXRoKGZ1bGxfcGF0aCwgcm9vdCkucmVwbGFjZShvcy5wYXRoLnNlcCwg
Ii8iKQotICAgICAgICAgICAgICAgICAgICBpZiByZWxfcGF0aCBpbiBmaWxlX2NvbnRlbnRzIG9y
IHJlcG9fcGF0aCBpbiBmaWxlX2NvbnRlbnRzOgorICAgICAgICAgICAgICAgICAgICBpZiByZWxf
cGF0aCBpbiBmaWxlX2NvbnRlbnRzIG9yIHJlcG9fcGF0aCBpbiBmaWxlX2NvbnRlbnRzIG9yIGFm
ZmVjdGVkX2J5X2ludGVyZmFjZXMoZmlsZV9jb250ZW50cyk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICBhZmZlY3RlZF90ZXN0ZmlsZXMuYWRkKHRlc3RfZnVsbF9wYXRoKQogICAgICAgICAgICAg
ICAgICAgICAgICAgY29udGludWUKIApAQCAtMjg1LDExICszNDAsMTQgQEAgZGVmIGFmZmVjdGVk
X3Rlc3RmaWxlcyhmaWxlc19jaGFuZ2VkLCBza2lwX3Rlc3RzLCBtYW5pZmVzdF9wYXRoPU5vbmUp
OgogCiAKIGRlZiBnZXRfcGFyc2VyKCk6CisgICAgIyB0eXBlOiAoKSAtPiBhcmdwYXJzZS5Bcmd1
bWVudFBhcnNlcgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICBw
YXJzZXIuYWRkX2FyZ3VtZW50KCJyZXZpc2giLCBkZWZhdWx0PU5vbmUsIGhlbHA9IkNvbW1pdHMg
dG8gY29uc2lkZXIuIERlZmF1bHRzIHRvIHRoZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAi
Y29tbWl0cyBvbiB0aGUgY3VycmVudCBicmFuY2giLCBuYXJncz0iPyIpCi0gICAgcGFyc2VyLmFk
ZF9hcmd1bWVudCgiLS1pZ25vcmUtcnVsZXMiLCBuYXJncz0iKiIsIHR5cGU9c2V0LAotICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZXQoWyJyZXNvdXJjZXMvdGVzdGhhcm5lc3MqIl0p
LAorICAgICMgVE9ETzogQ29uc29saWRhdGUgd2l0aCBgLi93cHQgcnVuIC0tYWZmZWN0ZWRgOgor
ICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzE0
NTYwCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25vcmUtcnVsZXMiLCBuYXJncz0iKiIs
IHR5cGU9c2V0LCAgIyB0eXBlOiBpZ25vcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHQ9eyJyZXNvdXJjZXMvdGVzdGhhcm5lc3MqIn0sCiAgICAgICAgICAgICAgICAgICAgICAgICBo
ZWxwPSJSdWxlcyBmb3IgcGF0aHMgdG8gZXhjbHVkZSBmcm9tIGxpc3RzIG9mIGNoYW5nZXMuIFJ1
bGVzIGFyZSBwYXRocyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAicmVsYXRpdmUgdG8gdGhl
IHRlc3Qgcm9vdCwgd2l0aCAqIGJlZm9yZSBhIHNlcGFyYXRvciBvciB0aGUgZW5kIG1hdGNoaW5n
ICIKICAgICAgICAgICAgICAgICAgICAgICAgICJhbnl0aGluZyBvdGhlciB0aGFuIGEgcGF0aCBz
ZXBhcmF0b3IgYW5kICoqIGluIHRoYXQgcG9zaXRpb24gbWF0Y2hpbmcgIgpAQCAtMzA3LDYgKzM2
NSw3IEBAIGRlZiBnZXRfcGFyc2VyKCk6CiAKIAogZGVmIGdldF9wYXJzZXJfYWZmZWN0ZWQoKToK
KyAgICAjIHR5cGU6ICgpIC0+IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyCiAgICAgcGFyc2VyID0g
Z2V0X3BhcnNlcigpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1tZXRhZGF0YSIsCiAgICAg
ICAgICAgICAgICAgICAgICAgICBkZXN0PSJtZXRhZGF0YV9yb290IiwKQEAgLTMxNywxMyArMzc2
LDE4IEBAIGRlZiBnZXRfcGFyc2VyX2FmZmVjdGVkKCk6CiAKIAogZGVmIGdldF9yZXZpc2goKipr
d2FyZ3MpOgotICAgIHJldmlzaCA9IGt3YXJnc1sicmV2aXNoIl0KLSAgICBpZiBrd2FyZ3NbInJl
dmlzaCJdIGlzIE5vbmU6CisgICAgIyB0eXBlOiAoKipBbnkpIC0+IGJ5dGVzCisgICAgcmV2aXNo
ID0ga3dhcmdzLmdldCgicmV2aXNoIikKKyAgICBpZiByZXZpc2ggaXMgTm9uZToKICAgICAgICAg
cmV2aXNoID0gIiVzLi5IRUFEIiAlIGJyYW5jaF9wb2ludCgpCisgICAgaWYgaXNpbnN0YW5jZShy
ZXZpc2gsIHNpeC50ZXh0X3R5cGUpOgorICAgICAgICByZXZpc2ggPSByZXZpc2guZW5jb2RlKCJ1
dGY4IikKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShyZXZpc2gsIHNpeC5iaW5hcnlfdHlwZSkKICAg
ICByZXR1cm4gcmV2aXNoCiAKIAogZGVmIHJ1bl9jaGFuZ2VkX2ZpbGVzKCoqa3dhcmdzKToKKyAg
ICAjIHR5cGU6ICgqKkFueSkgLT4gTm9uZQogICAgIHJldmlzaCA9IGdldF9yZXZpc2goKiprd2Fy
Z3MpCiAgICAgY2hhbmdlZCwgXyA9IGZpbGVzX2NoYW5nZWQocmV2aXNoLCBrd2FyZ3NbImlnbm9y
ZV9ydWxlcyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfdW5jb21t
aXR0ZWQ9a3dhcmdzWyJtb2RpZmllZCJdLApAQCAtMzMyLDEwICszOTYsMTEgQEAgZGVmIHJ1bl9j
aGFuZ2VkX2ZpbGVzKCoqa3dhcmdzKToKICAgICBzZXBhcmF0b3IgPSAiXDAiIGlmIGt3YXJnc1si
bnVsbCJdIGVsc2UgIlxuIgogCiAgICAgZm9yIGl0ZW0gaW4gc29ydGVkKGNoYW5nZWQpOgotICAg
ICAgICBzeXMuc3Rkb3V0LndyaXRlKG9zLnBhdGgucmVscGF0aChpdGVtLCB3cHRfcm9vdCkgKyBz
ZXBhcmF0b3IpCisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUob3MucGF0aC5yZWxwYXRoKGl0ZW0u
ZW5jb2RlKCJ1dGY4IiksIHdwdF9yb290KSArIHNlcGFyYXRvcikKIAogCiBkZWYgcnVuX3Rlc3Rz
X2FmZmVjdGVkKCoqa3dhcmdzKToKKyAgICAjIHR5cGU6ICgqKkFueSkgLT4gTm9uZQogICAgIHJl
dmlzaCA9IGdldF9yZXZpc2goKiprd2FyZ3MpCiAgICAgY2hhbmdlZCwgXyA9IGZpbGVzX2NoYW5n
ZWQocmV2aXNoLCBrd2FyZ3NbImlnbm9yZV9ydWxlcyJdLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGluY2x1ZGVfdW5jb21taXR0ZWQ9a3dhcmdzWyJtb2RpZmllZCJdLApAQCAtMzQz
LDcgKzQwOCw3IEBAIGRlZiBydW5fdGVzdHNfYWZmZWN0ZWQoKiprd2FyZ3MpOgogICAgIG1hbmlm
ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4oa3dhcmdzWyJtZXRhZGF0YV9yb290Il0sICJNQU5JRkVT
VC5qc29uIikKICAgICB0ZXN0c19jaGFuZ2VkLCBkZXBlbmRlbnRzID0gYWZmZWN0ZWRfdGVzdGZp
bGVzKAogICAgICAgICBjaGFuZ2VkLAotICAgICAgICBzZXQoWyJjb25mb3JtYW5jZS1jaGVja2Vy
cyIsICJkb2NzIiwgInRvb2xzIl0pLAorICAgICAgICB7ImNvbmZvcm1hbmNlLWNoZWNrZXJzIiwg
ImRvY3MiLCAidG9vbHMifSwKICAgICAgICAgbWFuaWZlc3RfcGF0aD1tYW5pZmVzdF9wYXRoCiAg
ICAgKQogCkBAIC0zNjEsNiArNDI2LDYgQEAgZGVmIHJ1bl90ZXN0c19hZmZlY3RlZCgqKmt3YXJn
cyk6CiAgICAgICAgIGlmIGt3YXJnc1sic2hvd190eXBlIl06CiAgICAgICAgICAgICBpdGVtX3R5
cGVzID0ge2kuaXRlbV90eXBlIGZvciBpIGluIHdwdF9tYW5pZmVzdC5pdGVycGF0aChyZXN1bHRz
WyJwYXRoIl0pfQogICAgICAgICAgICAgaWYgbGVuKGl0ZW1fdHlwZXMpICE9IDE6Ci0gICAgICAg
ICAgICAgICAgaXRlbV90eXBlcyA9IFsiICIuam9pbihpdGVtX3R5cGVzKV0KKyAgICAgICAgICAg
ICAgICBpdGVtX3R5cGVzID0geyIgIi5qb2luKGl0ZW1fdHlwZXMpfQogICAgICAgICAgICAgcmVz
dWx0c1siaXRlbV90eXBlIl0gPSBpdGVtX3R5cGVzLnBvcCgpCiAgICAgICAgIHN5cy5zdGRvdXQu
d3JpdGUobWVzc2FnZS5mb3JtYXQoKipyZXN1bHRzKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL3Rlc3Rfd3B0
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvdGVzdHMvdGVzdF93cHQucHkKaW5kZXggMTZkMjg2ZDM4MmM3MTc5YWQzNjgwN2I0NzYzOGQ4
MmI0YjQ2ZjI4Ni4uNjU2OTU4MGU5ZmY0NzE3ODRlMzA3YjdlODQ1NTU5MzVkZWM5OTU4NiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvdGVzdHMvdGVzdF93cHQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKQEAgLTMwLDI3ICsz
MCw1NCBAQCBkZWYgaXNfcG9ydF84MDAwX2luX3VzZSgpOgogICAgIHJldHVybiBGYWxzZQogCiAK
LUBweXRlc3QuZml4dHVyZShzY29wZT0ibW9kdWxlIikKK2RlZiBnZXRfcGVyc2lzdGVudF9tYW5p
ZmVzdF9wYXRoKCk6CisgICAgZGlyZWN0b3J5ID0gKCJ+L21ldGEiIGlmIG9zLmVudmlyb24uZ2V0
KCdUUkFWSVMnKSA9PSAidHJ1ZSIKKyAgICAgICAgICAgICAgICAgZWxzZSB3cHQubG9jYWxwYXRo
cy5yZXBvX3Jvb3QpCisgICAgcmV0dXJuIG9zLnBhdGguam9pbihkaXJlY3RvcnksICJNQU5JRkVT
VC5qc29uIikKKworCitAcHl0ZXN0LmZpeHR1cmUoc2NvcGU9Im1vZHVsZSIsIGF1dG91c2U9VHJ1
ZSkKK2RlZiBpbml0X21hbmlmZXN0KCk6CisgICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4
aXQpIGFzIGV4Y2luZm86CisgICAgICAgIHdwdC5tYWluKGFyZ3Y9WyJtYW5pZmVzdCIsICItLW5v
LWRvd25sb2FkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIi0tcGF0aCIsIGdldF9wZXJzaXN0
ZW50X21hbmlmZXN0X3BhdGgoKV0pCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUuY29kZSA9PSAw
CisKKworQHB5dGVzdC5maXh0dXJlCiBkZWYgbWFuaWZlc3RfZGlyKCk6Ci0gICAgZGVmIHVwZGF0
ZV9tYW5pZmVzdCgpOgotICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMg
ZXhjaW5mbzoKLSAgICAgICAgICAgIHdwdC5tYWluKGFyZ3Y9WyJtYW5pZmVzdCIsICItLW5vLWRv
d25sb2FkIiwgIi0tcGF0aCIsIG9zLnBhdGguam9pbihwYXRoLCAiTUFOSUZFU1QuanNvbiIpXSkK
LSAgICAgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUuY29kZSA9PSAwCi0KLSAgICBpZiBvcy5lbnZp
cm9uLmdldCgnVFJBVklTJykgPT0gInRydWUiOgotICAgICAgICBwYXRoID0gIn4vbWV0YSIKLSAg
ICAgICAgdXBkYXRlX21hbmlmZXN0KCkKKyAgICB0cnk6CisgICAgICAgIHBhdGggPSB0ZW1wZmls
ZS5ta2R0ZW1wKCkKKyAgICAgICAgc2h1dGlsLmNvcHlmaWxlKGdldF9wZXJzaXN0ZW50X21hbmlm
ZXN0X3BhdGgoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihwYXRoLCAi
TUFOSUZFU1QuanNvbiIpKQogICAgICAgICB5aWVsZCBwYXRoCi0gICAgZWxzZToKLSAgICAgICAg
dHJ5OgotICAgICAgICAgICAgcGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoKQotICAgICAgICAgICAg
b2xkX3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0aHMucmVwb19yb290LCAiTUFOSUZF
U1QuanNvbiIpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4od3B0
LmxvY2FscGF0aHMucmVwb19yb290LCAiTUFOSUZFU1QuanNvbiIpKToKLSAgICAgICAgICAgICAg
ICBzaHV0aWwuY29weWZpbGUob2xkX3BhdGgsIG9zLnBhdGguam9pbihwYXRoLCAiTUFOSUZFU1Qu
anNvbiIpKQotICAgICAgICAgICAgdXBkYXRlX21hbmlmZXN0KCkKLSAgICAgICAgICAgIHlpZWxk
IHBhdGgKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUocGF0aCkK
KyAgICBmaW5hbGx5OgorICAgICAgICBzaHV0aWwucm10cmVlKHBhdGgpCisKKworQHB5dGVzdC5m
aXh0dXJlCitkZWYgdGVtcF90ZXN0KCk6CisgICAgb3MubWFrZWRpcnMoIi4uLy4uLy50b29scy10
ZXN0cyIpCisgICAgdGVzdF9jb3VudCA9IHsidmFsdWUiOiAwfQorCisgICAgZGVmIG1ha2VfdGVz
dChib2R5KToKKyAgICAgICAgdGVzdF9jb3VudFsidmFsdWUiXSArPSAxCisgICAgICAgIHRlc3Rf
bmFtZSA9ICIudG9vbHMtdGVzdHMvJXMuaHRtbCIgJSB0ZXN0X2NvdW50WyJ2YWx1ZSJdCisgICAg
ICAgIHRlc3RfcGF0aCA9ICIuLi8uLi8lcyIgJSB0ZXN0X25hbWUKKworICAgICAgICB3aXRoIG9w
ZW4odGVzdF9wYXRoLCAidyIpIGFzIGhhbmRsZToKKyAgICAgICAgICAgIGhhbmRsZS53cml0ZSgi
IiIKKyAgICAgICAgICAgIDwhRE9DVFlQRSBodG1sPgorICAgICAgICAgICAgPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorICAgICAgICAgICAgPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorICAgICAg
ICAgICAgPHNjcmlwdD4lczwvc2NyaXB0PgorICAgICAgICAgICAgIiIiICUgYm9keSkKKworICAg
ICAgICByZXR1cm4gdGVzdF9uYW1lCisKKyAgICB5aWVsZCBtYWtlX3Rlc3QKKworICAgIHNodXRp
bC5ybXRyZWUoIi4uLy4uLy50b29scy10ZXN0cyIpCiAKIAogZGVmIHRlc3RfbWlzc2luZygpOgpA
QCAtNzMsNyArMTAwLDggQEAgZGVmIHRlc3RfbGlzdF90ZXN0cyhtYW5pZmVzdF9kaXIpOgogCiAg
ICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CiAgICAgICAgIHdw
dC5tYWluKGFyZ3Y9WyJydW4iLCAiLS1tZXRhZGF0YSIsIG1hbmlmZXN0X2RpciwgIi0tbGlzdC10
ZXN0cyIsCi0gICAgICAgICAgICAgICAgICAgICAgICItLXllcyIsICJjaHJvbWUiLCAiL2RvbS9u
b2Rlcy9FbGVtZW50LXRhZ05hbWUuaHRtbCJdKQorICAgICAgICAgICAgICAgICAgICAgICAiLS1j
aGFubmVsIiwgImRldiIsICItLXllcyIsICJjaHJvbWUiLAorICAgICAgICAgICAgICAgICAgICAg
ICAiL2RvbS9ub2Rlcy9FbGVtZW50LXRhZ05hbWUuaHRtbCJdKQogICAgIGFzc2VydCBleGNpbmZv
LnZhbHVlLmNvZGUgPT0gMAogCiAKQEAgLTEzMCw1MSArMTU4LDYgQEAgZGVmIHRlc3RfbGlzdF90
ZXN0c19pbnZhbGlkX21hbmlmZXN0KG1hbmlmZXN0X2Rpcik6CiAKIEBweXRlc3QubWFyay5zbG93
CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdvcmsKLUBweXRlc3QubWFyay54ZmFpbChzeXMucGxh
dGZvcm0gPT0gIndpbjMyIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249IlRlc3RzIGN1cnJl
bnRseSBkb24ndCB3b3JrIG9uIFdpbmRvd3MgZm9yIHBhdGggcmVhc29ucyIpCi1kZWYgdGVzdF9y
dW5fZmlyZWZveChtYW5pZmVzdF9kaXIpOgotICAgICMgVE9ETzogSXQgc2VlbXMgbGlrZSB0aGVy
ZSdzIGEgYnVnIGluIGFyZ3BhcnNlIHRoYXQgbWFrZXMgdGhpcyBhcmd1bWVudCBvcmRlciByZXF1
aXJlZAotICAgICMgc2hvdWxkIHRyeSB0byB3b3JrIGFyb3VuZCB0aGF0Ci0gICAgaWYgaXNfcG9y
dF84MDAwX2luX3VzZSgpOgotICAgICAgICBweXRlc3Quc2tpcCgicG9ydCA4MDAwIGFscmVhZHkg
aW4gdXNlIikKLQotICAgIG9zLmVudmlyb25bIk1PWl9IRUFETEVTUyJdID0gIjEiCi0gICAgdHJ5
OgotICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gImRhcndpbiI6Ci0gICAgICAgICAgICBmeF9w
YXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJy
b3dzZXJzIiwgIkZpcmVmb3ggTmlnaHRseS5hcHAiKQotICAgICAgICBlbHNlOgotICAgICAgICAg
ICAgZnhfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsICJfdmVu
diIsICJicm93c2VycyIsICJmaXJlZm94IikKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZnhf
cGF0aCk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKGZ4X3BhdGgpCi0gICAgICAgIHdpdGgg
cHl0ZXN0LnJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBleGNpbmZvOgotICAgICAgICAgICAgd3B0Lm1h
aW4oYXJndj1bInJ1biIsICItLW5vLXBhdXNlIiwgIi0taW5zdGFsbC1icm93c2VyIiwgIi0teWVz
IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICItLW1ldGFkYXRhIiwgbWFuaWZlc3RfZGly
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgImZpcmVmb3giLCAiL2RvbS9ub2Rlcy9FbGVt
ZW50LXRhZ05hbWUuaHRtbCJdKQotICAgICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoZnhfcGF0
aCkKLSAgICAgICAgc2h1dGlsLnJtdHJlZShmeF9wYXRoKQotICAgICAgICBhc3NlcnQgZXhjaW5m
by52YWx1ZS5jb2RlID09IDAKLSAgICBmaW5hbGx5OgotICAgICAgICBkZWwgb3MuZW52aXJvblsi
TU9aX0hFQURMRVNTIl0KLQotCi1AcHl0ZXN0Lm1hcmsuc2xvdwotQHB5dGVzdC5tYXJrLnhmYWls
KHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iVGVz
dHMgY3VycmVudGx5IGRvbid0IHdvcmsgb24gV2luZG93cyBmb3IgcGF0aCByZWFzb25zIikKLWRl
ZiB0ZXN0X3J1bl9jaHJvbWUobWFuaWZlc3RfZGlyKToKLSAgICBpZiBpc19wb3J0XzgwMDBfaW5f
dXNlKCk6Ci0gICAgICAgIHB5dGVzdC5za2lwKCJwb3J0IDgwMDAgYWxyZWFkeSBpbiB1c2UiKQot
Ci0gICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86Ci0gICAgICAg
IHdwdC5tYWluKGFyZ3Y9WyJydW4iLCAiLS15ZXMiLCAiLS1uby1wYXVzZSIsICItLWJpbmFyeS1h
cmciLCAiaGVhZGxlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAiLS1tZXRhZGF0YSIsIG1h
bmlmZXN0X2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgImNocm9tZSIsICIvZG9tL25vZGVz
L0VsZW1lbnQtdGFnTmFtZS5odG1sIl0pCi0gICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUuY29kZSA9
PSAwCi0KLQotQHB5dGVzdC5tYXJrLnNsb3cKLUBweXRlc3QubWFyay5yZW1vdGVfbmV0d29yawot
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAotICAgICAgICAgICAg
ICAgICAgIHJlYXNvbj0iVGVzdHMgY3VycmVudGx5IGRvbid0IHdvcmsgb24gV2luZG93cyBmb3Ig
cGF0aCByZWFzb25zIikKIGRlZiB0ZXN0X3J1bl96ZXJvX3Rlc3RzKCk6CiAgICAgIiIiQSB0ZXN0
IGV4ZWN1dGlvbiBkZXNjcmliaW5nIHplcm8gdGVzdHMgc2hvdWxkIGJlIHJlcG9ydGVkIGFzIGFu
IGVycm9yCiAgICAgZXZlbiBpbiB0aGUgcHJlc2VuY2Ugb2YgdGhlIGAtLW5vLWZhaWwtb24tdW5l
eHBlY3RlZGAgb3B0aW9uLiIiIgpAQCAtMTgzLDE5ICsxNjYsMTggQEAgZGVmIHRlc3RfcnVuX3pl
cm9fdGVzdHMoKToKIAogICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBleGNp
bmZvOgogICAgICAgICB3cHQubWFpbihhcmd2PVsicnVuIiwgIi0teWVzIiwgIi0tbm8tcGF1c2Ui
LCAiLS1iaW5hcnktYXJnIiwgImhlYWRsZXNzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgImNo
cm9tZSIsICIvbm9uLWV4aXN0ZW50LWRpci9ub24tZXhpc3RlbnQtZmlsZS5odG1sIl0pCisgICAg
ICAgICAgICAgICAgICAgICAgICItLWNoYW5uZWwiLCAiZGV2IiwgImNocm9tZSIsCisgICAgICAg
ICAgICAgICAgICAgICAgICIvbm9uLWV4aXN0ZW50LWRpci9ub24tZXhpc3RlbnQtZmlsZS5odG1s
Il0pCiAgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUuY29kZSAhPSAwCiAKICAgICB3aXRoIHB5dGVz
dC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5mbzoKICAgICAgICAgd3B0Lm1haW4oYXJndj1b
InJ1biIsICItLXllcyIsICItLW5vLXBhdXNlIiwgIi0tYmluYXJ5LWFyZyIsICJoZWFkbGVzcyIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICItLW5vLWZhaWwtb24tdW5leHBlY3RlZCIsCisgICAg
ICAgICAgICAgICAgICAgICAgICItLW5vLWZhaWwtb24tdW5leHBlY3RlZCIsICItLWNoYW5uZWwi
LCAiZGV2IiwKICAgICAgICAgICAgICAgICAgICAgICAgImNocm9tZSIsICIvbm9uLWV4aXN0ZW50
LWRpci9ub24tZXhpc3RlbnQtZmlsZS5odG1sIl0pCiAgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUu
Y29kZSAhPSAwCiAKIEBweXRlc3QubWFyay5zbG93CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25ldHdv
cmsKLUBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKLSAgICAgICAg
ICAgICAgICAgICByZWFzb249IlRlc3RzIGN1cnJlbnRseSBkb24ndCB3b3JrIG9uIFdpbmRvd3Mg
Zm9yIHBhdGggcmVhc29ucyIpCiBkZWYgdGVzdF9ydW5fZmFpbGluZ190ZXN0KCk6CiAgICAgIiIi
RmFpbGluZyB0ZXN0cyBzaG91bGQgYmUgcmVwb3J0ZWQgd2l0aCBhIG5vbi16ZXJvIGV4aXQgc3Rh
dHVzIHVubGVzcyB0aGUKICAgICBgLS1uby1mYWlsLW9uLXVuZXhwZWN0ZWRgIG9wdGlvbiBoYXMg
YmVlbiBzcGVjaWZpZWQuIiIiCkBAIC0yMDcsMjIgKzE4OSw1MyBAQCBkZWYgdGVzdF9ydW5fZmFp
bGluZ190ZXN0KCk6CiAKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhj
aW5mbzoKICAgICAgICAgd3B0Lm1haW4oYXJndj1bInJ1biIsICItLXllcyIsICItLW5vLXBhdXNl
IiwgIi0tYmluYXJ5LWFyZyIsICJoZWFkbGVzcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICJj
aHJvbWUiLCBmYWlsaW5nX3Rlc3RdKQorICAgICAgICAgICAgICAgICAgICAgICAiLS1jaGFubmVs
IiwgImRldiIsICJjaHJvbWUiLCBmYWlsaW5nX3Rlc3RdKQogICAgIGFzc2VydCBleGNpbmZvLnZh
bHVlLmNvZGUgIT0gMAogCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4
Y2luZm86CiAgICAgICAgIHdwdC5tYWluKGFyZ3Y9WyJydW4iLCAiLS15ZXMiLCAiLS1uby1wYXVz
ZSIsICItLWJpbmFyeS1hcmciLCAiaGVhZGxlc3MiLAotICAgICAgICAgICAgICAgICAgICAgICAi
LS1uby1mYWlsLW9uLXVuZXhwZWN0ZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAiLS1uby1m
YWlsLW9uLXVuZXhwZWN0ZWQiLCAiLS1jaGFubmVsIiwgImRldiIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICJjaHJvbWUiLCBmYWlsaW5nX3Rlc3RdKQogICAgIGFzc2VydCBleGNpbmZvLnZhbHVl
LmNvZGUgPT0gMAogCiAKIEBweXRlc3QubWFyay5zbG93CiBAcHl0ZXN0Lm1hcmsucmVtb3RlX25l
dHdvcmsKLUBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKLSAgICAg
ICAgICAgICAgICAgICByZWFzb249IlRlc3RzIGN1cnJlbnRseSBkb24ndCB3b3JrIG9uIFdpbmRv
d3MgZm9yIHBhdGggcmVhc29ucyIpCitkZWYgdGVzdF9ydW5fdmVyaWZ5X3Vuc3RhYmxlKHRlbXBf
dGVzdCk6CisgICAgIiIiVW5zdGFibGUgdGVzdHMgc2hvdWxkIGJlIHJlcG9ydGVkIHdpdGggYSBu
b24temVybyBleGl0IHN0YXR1cy4gU3RhYmxlCisgICAgdGVzdHMgc2hvdWxkIGJlIHJlcG9ydGVk
IHdpdGggYSB6ZXJvIGV4aXQgc3RhdHVzLiIiIgorICAgIGlmIGlzX3BvcnRfODAwMF9pbl91c2Uo
KToKKyAgICAgICAgcHl0ZXN0LnNraXAoInBvcnQgODAwMCBhbHJlYWR5IGluIHVzZSIpCisgICAg
dW5zdGFibGVfdGVzdCA9IHRlbXBfdGVzdCgiIiIKKyAgICAgICAgdGVzdChmdW5jdGlvbigpIHsK
KyAgICAgICAgICAgIGlmIChsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgnd3B0LXVuc3RhYmxlLXRlc3Qt
ZmxhZycpKSB7CisgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigpOworICAgICAgICAgICAg
fQorCisgICAgICAgICAgICBsb2NhbFN0b3JhZ2Uuc2V0SXRlbSgnd3B0LXVuc3RhYmxlLXRlc3Qt
ZmxhZycsICd4Jyk7CisgICAgICAgIH0sICdteSB0ZXN0Jyk7CisgICAgIiIiKQorCisgICAgd2l0
aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4Y2luZm86CisgICAgICAgIHdwdC5tYWlu
KGFyZ3Y9WyJydW4iLCAiLS15ZXMiLCAiLS12ZXJpZnkiLCAiLS1iaW5hcnktYXJnIiwgImhlYWRs
ZXNzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIi0tY2hhbm5lbCIsICJkZXYiLCAiY2hyb21l
IiwgdW5zdGFibGVfdGVzdF0pCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUuY29kZSAhPSAwCisK
KyAgICBzdGFibGVfdGVzdCA9IHRlbXBfdGVzdCgidGVzdChmdW5jdGlvbigpIHt9LCAnbXkgdGVz
dCcpOyIpCisKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5mbzoK
KyAgICAgICAgd3B0Lm1haW4oYXJndj1bInJ1biIsICItLXllcyIsICItLXZlcmlmeSIsICItLWJp
bmFyeS1hcmciLCAiaGVhZGxlc3MiLAorICAgICAgICAgICAgICAgICAgICAgICAiLS1jaGFubmVs
IiwgImRldiIsICJjaHJvbWUiLCBzdGFibGVfdGVzdF0pCisgICAgYXNzZXJ0IGV4Y2luZm8udmFs
dWUuY29kZSA9PSAwCisKKworQHB5dGVzdC5tYXJrLnNsb3cKK0BweXRlc3QubWFyay5yZW1vdGVf
bmV0d29yawogZGVmIHRlc3RfaW5zdGFsbF9jaHJvbWVkcml2ZXIoKToKLSAgICBjaHJvbWVkcml2
ZXJfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsICJfdmVudiIs
ICJiaW4iLCAiY2hyb21lZHJpdmVyIikKKyAgICBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoK
KyAgICAgICAgY2hyb21lZHJpdmVyX3BhdGggPSBvcy5wYXRoLmpvaW4od3B0LmxvY2FscGF0aHMu
cmVwb19yb290LCAiX3ZlbnYiLCAiU2NyaXB0cyIsICJjaHJvbWVkcml2ZXIuZXhlIikKKyAgICBl
bHNlOgorICAgICAgICBjaHJvbWVkcml2ZXJfcGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxw
YXRocy5yZXBvX3Jvb3QsICJfdmVudiIsICJiaW4iLCAiY2hyb21lZHJpdmVyIikKICAgICBpZiBv
cy5wYXRoLmV4aXN0cyhjaHJvbWVkcml2ZXJfcGF0aCk6CiAgICAgICAgIG9zLnVubGluayhjaHJv
bWVkcml2ZXJfcGF0aCkKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhj
aW5mbzoKQEAgLTIzNSw1NyArMjQ4LDU0IEBAIGRlZiB0ZXN0X2luc3RhbGxfY2hyb21lZHJpdmVy
KCk6CiBAcHl0ZXN0Lm1hcmsuc2xvdwogQHB5dGVzdC5tYXJrLnJlbW90ZV9uZXR3b3JrCiBAcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJUZXN0cyBjdXJyZW50bHkgZG9uJ3Qgd29yayBvbiBXaW5kb3dzIGZvciBwYXRo
IHJlYXNvbnMiKQorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29t
L3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzE3MDc0IikKIGRlZiB0ZXN0X2luc3RhbGxf
ZmlyZWZveCgpOgotCiAgICAgaWYgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgotICAgICAgICBm
eF9wYXRoID0gb3MucGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52Iiwg
ImJyb3dzZXJzIiwgIkZpcmVmb3ggTmlnaHRseS5hcHAiKQorICAgICAgICBmeF9wYXRoID0gb3Mu
cGF0aC5qb2luKHdwdC5sb2NhbHBhdGhzLnJlcG9fcm9vdCwgIl92ZW52IiwgImJyb3dzZXJzIiwg
Im5pZ2h0bHkiLCAiRmlyZWZveCBOaWdodGx5LmFwcCIpCiAgICAgZWxzZToKLSAgICAgICAgZnhf
cGF0aCA9IG9zLnBhdGguam9pbih3cHQubG9jYWxwYXRocy5yZXBvX3Jvb3QsICJfdmVudiIsICJi
cm93c2VycyIsICJmaXJlZm94IikKKyAgICAgICAgZnhfcGF0aCA9IG9zLnBhdGguam9pbih3cHQu
bG9jYWxwYXRocy5yZXBvX3Jvb3QsICJfdmVudiIsICJicm93c2VycyIsICJuaWdodGx5IiwgImZp
cmVmb3giKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKGZ4X3BhdGgpOgogICAgICAgICBzaHV0aWwu
cm10cmVlKGZ4X3BhdGgpCiAgICAgd2l0aCBweXRlc3QucmFpc2VzKFN5c3RlbUV4aXQpIGFzIGV4
Y2luZm86Ci0gICAgICAgIHdwdC5tYWluKGFyZ3Y9WyJpbnN0YWxsIiwgImZpcmVmb3giLCAiYnJv
d3NlciJdKQorICAgICAgICB3cHQubWFpbihhcmd2PVsiaW5zdGFsbCIsICJmaXJlZm94IiwgImJy
b3dzZXIiLCAiLS1jaGFubmVsPW5pZ2h0bHkiXSkKICAgICBhc3NlcnQgZXhjaW5mby52YWx1ZS5j
b2RlID09IDAKICAgICBhc3NlcnQgb3MucGF0aC5leGlzdHMoZnhfcGF0aCkKICAgICBzaHV0aWwu
cm10cmVlKGZ4X3BhdGgpCiAKIAotQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9PSAi
d2luMzIiLAotICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iVGVzdHMgY3VycmVudGx5IGRvbid0
IHdvcmsgb24gV2luZG93cyBmb3IgcGF0aCByZWFzb25zIikKIGRlZiB0ZXN0X2ZpbGVzX2NoYW5n
ZWQoY2Fwc3lzKToKICAgICBjb21taXQgPSAiOTA0N2FjMWQ5ZjUxYjFlOWZhYTRmOWZhZDljNDdk
MTA5NjA5YWIwOSIKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5m
bzoKICAgICAgICAgd3B0Lm1haW4oYXJndj1bImZpbGVzLWNoYW5nZWQiLCAiJXN+Li4lcyIgJSAo
Y29tbWl0LCBjb21taXQpXSkKICAgICBhc3NlcnQgZXhjaW5mby52YWx1ZS5jb2RlID09IDAKICAg
ICBvdXQsIGVyciA9IGNhcHN5cy5yZWFkb3V0ZXJyKCkKLSAgICBhc3NlcnQgb3V0ID09ICIiImh0
bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL2FwcGNhY2hlLXdvcmtlci5odG1s
CisgICAgZXhwZWN0ZWQgPSAiIiJodG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vy
cy9hcHBjYWNoZS13b3JrZXIuaHRtbAogaHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dv
cmtlcnMvcmVzb3VyY2VzL2FwcGNhY2hlLWRlZGljYXRlZC13b3JrZXItbm90LWluLWNhY2hlLmpz
CiBodG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9yZXNvdXJjZXMvYXBwY2Fj
aGUtc2hhcmVkLXdvcmtlci1ub3QtaW4tY2FjaGUuanMKIGh0bWwvYnJvd3NlcnMvb2ZmbGluZS9h
cHBjYWNoZS93b3JrZXJzL3Jlc291cmNlcy9hcHBjYWNoZS13b3JrZXItZGF0YS5weQogaHRtbC9i
cm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvcmVzb3VyY2VzL2FwcGNhY2hlLXdvcmtl
ci1pbXBvcnQucHkKIGh0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL3Jlc291
cmNlcy9hcHBjYWNoZS13b3JrZXIubWFuaWZlc3QKIGh0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBj
YWNoZS93b3JrZXJzL3Jlc291cmNlcy9hcHBjYWNoZS13b3JrZXIucHkKLSIiIgorIiIiLnJlcGxh
Y2UoIi8iLCBvcy5wYXRoLnNlcCkKKyAgICBhc3NlcnQgb3V0ID09IGV4cGVjdGVkCiAgICAgYXNz
ZXJ0IGVyciA9PSAiIgogCiAKLUBweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndp
bjMyIiwKLSAgICAgICAgICAgICAgICAgICByZWFzb249IlRlc3RzIGN1cnJlbnRseSBkb24ndCB3
b3JrIG9uIFdpbmRvd3MgZm9yIHBhdGggcmVhc29ucyIpCiBkZWYgdGVzdF9maWxlc19jaGFuZ2Vk
X251bGwoY2Fwc3lzKToKICAgICBjb21taXQgPSAiOTA0N2FjMWQ5ZjUxYjFlOWZhYTRmOWZhZDlj
NDdkMTA5NjA5YWIwOSIKICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoU3lzdGVtRXhpdCkgYXMgZXhj
aW5mbzoKICAgICAgICAgd3B0Lm1haW4oYXJndj1bImZpbGVzLWNoYW5nZWQiLCAiLS1udWxsIiwg
IiVzfi4uJXMiICUgKGNvbW1pdCwgY29tbWl0KV0pCiAgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUu
Y29kZSA9PSAwCiAgICAgb3V0LCBlcnIgPSBjYXBzeXMucmVhZG91dGVycigpCi0gICAgYXNzZXJ0
IG91dCA9PSAiXDAiLmpvaW4oWyJodG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vy
cy9hcHBjYWNoZS13b3JrZXIuaHRtbCIsCisgICAgZXhwZWN0ZWQgPSAiXDAiLmpvaW4oWyJodG1s
L2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9hcHBjYWNoZS13b3JrZXIuaHRtbCIs
CiAgICAgICAgICJodG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9yZXNvdXJj
ZXMvYXBwY2FjaGUtZGVkaWNhdGVkLXdvcmtlci1ub3QtaW4tY2FjaGUuanMiLAogICAgICAgICAi
aHRtbC9icm93c2Vycy9vZmZsaW5lL2FwcGNhY2hlL3dvcmtlcnMvcmVzb3VyY2VzL2FwcGNhY2hl
LXNoYXJlZC13b3JrZXItbm90LWluLWNhY2hlLmpzIiwKICAgICAgICAgImh0bWwvYnJvd3NlcnMv
b2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL3Jlc291cmNlcy9hcHBjYWNoZS13b3JrZXItZGF0YS5w
eSIsCiAgICAgICAgICJodG1sL2Jyb3dzZXJzL29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9yZXNv
dXJjZXMvYXBwY2FjaGUtd29ya2VyLWltcG9ydC5weSIsCiAgICAgICAgICJodG1sL2Jyb3dzZXJz
L29mZmxpbmUvYXBwY2FjaGUvd29ya2Vycy9yZXNvdXJjZXMvYXBwY2FjaGUtd29ya2VyLm1hbmlm
ZXN0IiwKICAgICAgICAgImh0bWwvYnJvd3NlcnMvb2ZmbGluZS9hcHBjYWNoZS93b3JrZXJzL3Jl
c291cmNlcy9hcHBjYWNoZS13b3JrZXIucHkiLAotICAgICAgICAiIl0pCisgICAgICAgICIiXSku
cmVwbGFjZSgiLyIsIG9zLnBhdGguc2VwKQorICAgIGFzc2VydCBvdXQgPT0gZXhwZWN0ZWQKICAg
ICBhc3NlcnQgZXJyID09ICIiCiAKIApAQCAtMzAxLDggKzMxMSw4IEBAIGRlZiB0ZXN0X2ZpbGVz
X2NoYW5nZWRfaWdub3JlKCk6CiAKIGRlZiB0ZXN0X2ZpbGVzX2NoYW5nZWRfaWdub3JlX3J1bGVz
KCk6CiAgICAgZnJvbSB0b29scy53cHQudGVzdGZpbGVzIGltcG9ydCBjb21waWxlX2lnbm9yZV9y
dWxlCi0gICAgYXNzZXJ0IGNvbXBpbGVfaWdub3JlX3J1bGUoImZvbypiYXIqL2JheiIpLnBhdHRl
cm4gPT0gIl5mb29cKmJhclteL10qL2JheiQiCi0gICAgYXNzZXJ0IGNvbXBpbGVfaWdub3JlX3J1
bGUoImZvbyoqYmFyKiovYmF6IikucGF0dGVybiA9PSAiXmZvb1wqXCpiYXIuKi9iYXokIgorICAg
IGFzc2VydCBjb21waWxlX2lnbm9yZV9ydWxlKCJmb28qYmFyKi9iYXoiKS5wYXR0ZXJuID09IHIi
XmZvb1wqYmFyW14vXSovYmF6JCIKKyAgICBhc3NlcnQgY29tcGlsZV9pZ25vcmVfcnVsZSgiZm9v
KipiYXIqKi9iYXoiKS5wYXR0ZXJuID09IHIiXmZvb1wqXCpiYXIuKi9iYXokIgogICAgIGFzc2Vy
dCBjb21waWxlX2lnbm9yZV9ydWxlKCJmb29iYXIvYmF6LyoiKS5wYXR0ZXJuID09ICJeZm9vYmFy
L2Jhei9bXi9dKiQiCiAgICAgYXNzZXJ0IGNvbXBpbGVfaWdub3JlX3J1bGUoImZvb2Jhci9iYXov
KioiKS5wYXR0ZXJuID09ICJeZm9vYmFyL2Jhei8uKiQiCiAKQEAgLTMxMCw2ICszMjAsOCBAQCBk
ZWYgdGVzdF9maWxlc19jaGFuZ2VkX2lnbm9yZV9ydWxlcygpOgogQHB5dGVzdC5tYXJrLnNsb3cg
ICMgdGhpcyB1cGRhdGVzIHRoZSBtYW5pZmVzdAogQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0
Zm9ybSA9PSAid2luMzIiLAogICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iVGVzdHMgY3VycmVu
dGx5IGRvbid0IHdvcmsgb24gV2luZG93cyBmb3IgcGF0aCByZWFzb25zIikKK0BweXRlc3QubWFy
ay5za2lwaWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgIHJl
YXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzEy
OTM0IikKIGRlZiB0ZXN0X3Rlc3RzX2FmZmVjdGVkKGNhcHN5cywgbWFuaWZlc3RfZGlyKToKICAg
ICAjIFRoaXMgZG9lc24ndCByZWFsbHkgd29yayBwcm9wZXJseSBmb3IgcmFuZG9tIGNvbW1pdHMg
YmVjYXVzZSB3ZSB0ZXN0IHRoZSBmaWxlcyBpbgogICAgICMgdGhlIGN1cnJlbnQgd29ya2luZyBk
aXJlY3RvcnkgZm9yIHJlZmVyZW5jZXMgdG8gdGhlIGNoYW5nZWQgZmlsZXMsIG5vdCB0aGUgb25l
cyBhdApAQCAtMzI2LDI1ICszMzgsNDEgQEAgZGVmIHRlc3RfdGVzdHNfYWZmZWN0ZWQoY2Fwc3lz
LCBtYW5pZmVzdF9kaXIpOgogQHB5dGVzdC5tYXJrLnNsb3cgICMgdGhpcyB1cGRhdGVzIHRoZSBt
YW5pZmVzdAogQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLAogICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0iVGVzdHMgY3VycmVudGx5IGRvbid0IHdvcmsgb24gV2lu
ZG93cyBmb3IgcGF0aCByZWFzb25zIikKK0BweXRlc3QubWFyay5za2lwaWYoc3lzLnBsYXRmb3Jt
ID09ICJ3aW4zMiIsCisgICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIu
Y29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzEyOTM0IikKK2RlZiB0ZXN0X3Rlc3Rz
X2FmZmVjdGVkX2lkbGhhcm5lc3MoY2Fwc3lzLCBtYW5pZmVzdF9kaXIpOgorICAgIGNvbW1pdCA9
ICI0N2NlYThjMzhiODhjMGRkZDM4NTRlNGVkZWMwYzViNmYyNjk3ZTYyIgorICAgIHdpdGggcHl0
ZXN0LnJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBleGNpbmZvOgorICAgICAgICB3cHQubWFpbihhcmd2
PVsidGVzdHMtYWZmZWN0ZWQiLCAiLS1tZXRhZGF0YSIsIG1hbmlmZXN0X2RpciwgIiVzfi4uJXMi
ICUgKGNvbW1pdCwgY29tbWl0KV0pCisgICAgYXNzZXJ0IGV4Y2luZm8udmFsdWUuY29kZSA9PSAw
CisgICAgb3V0LCBlcnIgPSBjYXBzeXMucmVhZG91dGVycigpCisgICAgYXNzZXJ0ICJ3ZWJydGMt
aWRlbnRpdHkvaWRsaGFybmVzcy5odHRwcy53aW5kb3cuanNcbndlYnJ0Yy1zdGF0cy9pZGxoYXJu
ZXNzLndpbmRvdy5qc1xud2VicnRjL2lkbGhhcm5lc3MuaHR0cHMud2luZG93LmpzXG4iID09IG91
dAorCisKK0BweXRlc3QubWFyay5zbG93ICAjIHRoaXMgdXBkYXRlcyB0aGUgbWFuaWZlc3QKK0Bw
eXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwKKyAgICAgICAgICAgICAg
ICAgICByZWFzb249IlRlc3RzIGN1cnJlbnRseSBkb24ndCB3b3JrIG9uIFdpbmRvd3MgZm9yIHBh
dGggcmVhc29ucyIpCitAcHl0ZXN0Lm1hcmsuc2tpcGlmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIi
LAorICAgICAgICAgICAgICAgICAgICByZWFzb249Imh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy8xMjkzNCIpCiBkZWYgdGVzdF90ZXN0c19hZmZlY3RlZF9u
dWxsKGNhcHN5cywgbWFuaWZlc3RfZGlyKToKICAgICAjIFRoaXMgZG9lc24ndCByZWFsbHkgd29y
ayBwcm9wZXJseSBmb3IgcmFuZG9tIGNvbW1pdHMgYmVjYXVzZSB3ZSB0ZXN0IHRoZSBmaWxlcyBp
bgogICAgICMgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZm9yIHJlZmVyZW5jZXMgdG8g
dGhlIGNoYW5nZWQgZmlsZXMsIG5vdCB0aGUgb25lcyBhdAogICAgICMgdGhhdCBzcGVjaWZpYyBj
b21taXQuIEJ1dCB3ZSBjYW4gYXQgbGVhc3QgdGVzdCBpdCByZXR1cm5zIHNvbWV0aGluZyBzZW5z
aWJsZS4KICAgICAjIFRoZSB0ZXN0IHdpbGwgZmFpbCBpZiB0aGUgZmlsZSB3ZSBhc3NlcnQgaXMg
cmVuYW1lZCwgc28gd2UgY2hvb3NlIGEgc3RhYmxlIG9uZS4KLSAgICBjb21taXQgPSAiOWJmMWRh
YTNkOGI0NDI1ZjIzNTRjM2NhOTJjNGNmMDM5OGQzMjlkZCIKKyAgICBjb21taXQgPSAiMjYxNGUz
MzE2ZjFkM2QxYTc0NGVkM2FmMDg4ZDE5NTE2NTUyYTVkZSIKICAgICB3aXRoIHB5dGVzdC5yYWlz
ZXMoU3lzdGVtRXhpdCkgYXMgZXhjaW5mbzoKICAgICAgICAgd3B0Lm1haW4oYXJndj1bInRlc3Rz
LWFmZmVjdGVkIiwgIi0tbnVsbCIsICItLW1ldGFkYXRhIiwgbWFuaWZlc3RfZGlyLCAiJXN+Li4l
cyIgJSAoY29tbWl0LCBjb21taXQpXSkKICAgICBhc3NlcnQgZXhjaW5mby52YWx1ZS5jb2RlID09
IDAKICAgICBvdXQsIGVyciA9IGNhcHN5cy5yZWFkb3V0ZXJyKCkKIAogICAgIHRlc3RzID0gb3V0
LnNwbGl0KCJcMCIpCi0gICAgYXNzZXJ0ICJkb20vaW50ZXJmYWNlcy5odG1sIiBpbiB0ZXN0cwot
ICAgIGFzc2VydCAiaHRtbC9kb20vaW50ZXJmYWNlcy5odHRwcy5odG1sIiBpbiB0ZXN0cworICAg
IGFzc2VydCAiZG9tL2lkbGhhcm5lc3MuYW55LmpzIiBpbiB0ZXN0cworICAgIGFzc2VydCAieGhy
L2lkbGhhcm5lc3MuYW55LmpzIiBpbiB0ZXN0cwogCiAKIEBweXRlc3QubWFyay5zbG93Ci1AcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsCi0gICAgICAgICAgICAgICAg
ICAgcmVhc29uPSJUZXN0cyBjdXJyZW50bHkgZG9uJ3Qgd29yayBvbiBXaW5kb3dzIGZvciBwYXRo
IHJlYXNvbnMiKQorQHB5dGVzdC5tYXJrLnNraXBpZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwK
KyAgICAgICAgICAgICAgICAgICAgcmVhc29uPSJubyBvcy5zZXRzaWQva2lsbHBnIHRvIGVhc2ls
eSBjbGVhbnVwIHRoZSBwcm9jZXNzIHRyZWUiKQogZGVmIHRlc3Rfc2VydmUoKToKICAgICBpZiBp
c19wb3J0XzgwMDBfaW5fdXNlKCk6CiAgICAgICAgIHB5dGVzdC5za2lwKCJwb3J0IDgwMDAgYWxy
ZWFkeSBpbiB1c2UiKQpAQCAtMzYxLDkgKzM4OSw5IEBAIGRlZiB0ZXN0X3NlcnZlKCk6CiAgICAg
ICAgICAgICAgICAgYXNzZXJ0IEZhbHNlLCAic2VydmVyIGRpZCBub3Qgc3RhcnQgcmVzcG9uZGlu
ZyB3aXRoaW4gNjBzIgogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHJlc3AgPSB1
cmxsaWIyLnVybG9wZW4oImh0dHA6Ly93ZWItcGxhdGZvcm0udGVzdDo4MDAwIikKLSAgICAgICAg
ICAgICAgICBwcmludCByZXNwCisgICAgICAgICAgICAgICAgcHJpbnQocmVzcCkKICAgICAgICAg
ICAgIGV4Y2VwdCB1cmxsaWIyLlVSTEVycm9yOgotICAgICAgICAgICAgICAgIHByaW50ICJVUkxF
cnJvciIKKyAgICAgICAgICAgICAgICBwcmludCgiVVJMRXJyb3IiKQogICAgICAgICAgICAgICAg
IHRpbWUuc2xlZXAoMSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXNzZXJ0
IHJlc3AuY29kZSA9PSAyMDAKQEAgLTM3Myw2ICs0MDEsNSBAQCBkZWYgdGVzdF9zZXJ2ZSgpOgog
CiAjIFRoZSBmb2xsb3dpbmcgY29tbWFuZHMgYXJlIHNsb3cgcnVubmluZyBhbmQgdXNlZCBpbXBs
aWNpdGx5IGluIG90aGVyIENJCiAjIGpvYnMsIHNvIHdlIHNraXAgdGhlbSBoZXJlOgotIyB3cHQg
Y2hlY2stc3RhYmlsaXR5CiAjIHdwdCBtYW5pZmVzdAogIyB3cHQgbGludApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdGVz
dHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDUzOGI3M2QwYmEwMDkwMmUzNzgxNjkwN2ExODAwY2FkMjA3ZTg3Mi4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0cy93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Rlc3RzL2xhdGVzdF9t
b3ppbGxhX2NlbnRyYWwudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdGVzdHMvdGVzdF93cHQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90b3gu
aW5pCmluZGV4IGU0ODZiYjIyMWQ3MjkwMGIxMDNmYTU2ZmJmMTgxNzVhZmM1NTYwYzguLjZhMDQ0
NDczYTZiNzQ5ODEzNDU2ODNhYmI5NjA1ODhkZTY1MzViZmIgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3RveC5pbmkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dG94LmluaQpAQCAtMSw1ICsxLDUgQEAKIFt0b3hdCi1lbnZsaXN0ID0gcHkyNyxweTI3LWZsYWtl
OAorZW52bGlzdCA9IHB5MjcKIHNraXBzZGlzdD1UcnVlCiAKIFt0ZXN0ZW52XQpAQCAtNywyMCAr
NywxMyBAQCBkZXBzID0KICAgcHl0ZXN0CiAgIHB5dGVzdC1jb3YKICAgaHlwb3RoZXNpcworICBt
b2NrCiAgIC1ye3RveGluaWRpcn0vLi4vd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQKICAgLXJ7
dG94aW5pZGlyfS8uLi93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2Nocm9tZS50eHQKICAgLXJ7dG94
aW5pZGlyfS8uLi93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CiAKIGNvbW1hbmRz
ID0KLSAgcHl0ZXN0IC0tY292IHtwb3NhcmdzfQorICBweXRlc3Qge3Bvc2FyZ3N9CiAKLVt0ZXN0
ZW52OnB5MjctZmxha2U4XQotIyBmbGFrZTggdmVyc2lvbnMgc2hvdWxkIGJlIGtlcHQgaW4gc3lu
YyBhY3Jvc3MgdG9vbHMvdG94LmluaSwgdG9vbHMvd3B0L3RveC5pbmksIGFuZCB0b29scy93cHRy
dW5uZXIvdG94LmluaQotZGVwcyA9Ci0gICAgIGZsYWtlOD09My41LjAKLSAgICAgcHljb2Rlc3R5
bGU9PTIuMy4xCi0gICAgIHB5Zmxha2VzPT0xLjYuMAotICAgICBwZXA4LW5hbWluZz09MC40LjEK
LQotY29tbWFuZHMgPQotICAgICBmbGFrZTggLS1hcHBlbmQtY29uZmlnPS4uL2ZsYWtlOC5pbmkg
e3Bvc2FyZ3N9CitwYXNzZW52ID0KKyAgVEFTS0NMVVNURVJfUk9PVF9VUkwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3V0
aWxzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHQvdXRpbHMucHkKaW5kZXggZThlZGMwYmU0OTM3MzE1ODExMmI2MmNmYTgwNjRhNzMyMTI5
Yjk3MS4uMmQ0Mjc3MTNlNGU4MjQ4NDViNmQ3ODcxYjYxY2Q2ZjExZWMyNTFmNiAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQv
dXRpbHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvdXRpbHMucHkKQEAgLTEsMTEgKzEsMTUgQEAKIGltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3MKIGltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGFyZmlsZQog
aW1wb3J0IHppcGZpbGUKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAordHJ5OgorICAgIGZyb20g
dHlwaW5nIGltcG9ydCBBbnksIENhbGxhYmxlCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgcGFz
cworCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogCkBAIC0xMywxMCAr
MTcsMTEgQEAgY2xhc3MgS3dhcmdzKGRpY3QpOgogICAgIGRlZiBzZXRfaWZfbm9uZShzZWxmLAog
ICAgICAgICAgICAgICAgICAgICBuYW1lLCAgICAgICAgICAgICMgdHlwZTogc3RyCiAgICAgICAg
ICAgICAgICAgICAgIHZhbHVlLCAgICAgICAgICAgIyB0eXBlOiBBbnkKLSAgICAgICAgICAgICAg
ICAgICAgZXJyX2ZuPU5vbmUsICAgICAjIHR5cGU6IChLd2FyZ3MsIHN0cikgLT4gQW55CisgICAg
ICAgICAgICAgICAgICAgIGVycl9mbj1Ob25lLCAgICAgIyB0eXBlOiBDYWxsYWJsZVtbS3dhcmdz
LCBzdHJdLCBBbnldCiAgICAgICAgICAgICAgICAgICAgIGRlc2M9Tm9uZSwgICAgICAgIyB0eXBl
OiBzdHIKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFfY29uZD1Ob25lICAjIHR5cGU6IChLd2Fy
Z3MpIC0+IGJvb2wKKyAgICAgICAgICAgICAgICAgICAgZXh0cmFfY29uZD1Ob25lICAjIHR5cGU6
IENhbGxhYmxlW1tLd2FyZ3NdLCBBbnldCiAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAg
ICMgdHlwZTogKC4uLikgLT4gQW55CiAgICAgICAgIGlmIGRlc2MgaXMgTm9uZToKICAgICAgICAg
ICAgIGRlc2MgPSBuYW1lCiAKQEAgLTM5LDcgKzQ0LDcgQEAgZGVmIGNhbGwoKmFyZ3MpOgogCiAg
ICAgUmV0dXJucyBhIGJ5dGVzdHJpbmcgb2YgdGhlIHN1YnByb2Nlc3Mgb3V0cHV0IGlmIG5vIGVy
cm9yLgogICAgICIiIgotICAgIGxvZ2dlci5kZWJ1ZygiJXMiICUgIiAiLmpvaW4oYXJncykpCisg
ICAgbG9nZ2VyLmRlYnVnKCIgIi5qb2luKGFyZ3MpKQogICAgIHRyeToKICAgICAgICAgcmV0dXJu
IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGFyZ3MpCiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2Fs
bGVkUHJvY2Vzc0Vycm9yIGFzIGU6CkBAIC00OSwyMCArNTQsNiBAQCBkZWYgY2FsbCgqYXJncyk6
CiAgICAgICAgIHJhaXNlCiAKIAotZGVmIGdldF9naXRfY21kKHJlcG9fcGF0aCk6Ci0gICAgIiIi
Q3JlYXRlIGEgZnVuY3Rpb24gZm9yIGludm9raW5nIGdpdCBjb21tYW5kcyBhcyBhIHN1YnByb2Nl
c3MuIiIiCi0gICAgZGVmIGdpdChjbWQsICphcmdzKToKLSAgICAgICAgZnVsbF9jbWQgPSBbImdp
dCIsIGNtZF0gKyBsaXN0KGFyZ3MpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGxvZ2dlci5k
ZWJ1ZygiICIuam9pbihmdWxsX2NtZCkpCi0gICAgICAgICAgICByZXR1cm4gc3VicHJvY2Vzcy5j
aGVja19vdXRwdXQoZnVsbF9jbWQsIGN3ZD1yZXBvX3BhdGgsIHN0ZGVycj1zdWJwcm9jZXNzLlNU
RE9VVCkuc3RyaXAoKQotICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJy
b3IgYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiR2l0IGNvbW1hbmQgZXhpdGVkIHdp
dGggc3RhdHVzICVpIiAlIGUucmV0dXJuY29kZSkKLSAgICAgICAgICAgIGxvZ2dlci5lcnJvcihl
Lm91dHB1dCkKLSAgICAgICAgICAgIHN5cy5leGl0KDEpCi0gICAgcmV0dXJuIGdpdAotCi0KIGRl
ZiBzZWVrYWJsZShmaWxlb2JqKToKICAgICAiIiJBdHRlbXB0IHRvIHVzZSBmaWxlLnNlZWsgb24g
Z2l2ZW4gZmlsZSwgd2l0aCBmYWxsYmFja3MuIiIiCiAgICAgdHJ5OgpAQCAtOTQsMjEgKzg1LDYg
QEAgZGVmIHVuemlwKGZpbGVvYmosIGRlc3Q9Tm9uZSwgbGltaXQ9Tm9uZSk6CiAgICAgICAgICAg
ICBvcy5jaG1vZChvcy5wYXRoLmpvaW4oZGVzdCwgaW5mby5maWxlbmFtZSksIHBlcm0pCiAKIAot
Y2xhc3MgcHdkKG9iamVjdCk6Ci0gICAgIiIiQ3JlYXRlIGNvbnRleHQgZm9yIHRlbXBvcmFyaWx5
IGNoYW5naW5nIHByZXNlbnQgd29ya2luZyBkaXJlY3RvcnkuIiIiCi0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGRpcik6Ci0gICAgICAgIHNlbGYuZGlyID0gZGlyCi0gICAgICAgIHNlbGYub2xkX2Rp
ciA9IE5vbmUKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYub2xkX2Rp
ciA9IG9zLnBhdGguYWJzcGF0aChvcy5jdXJkaXIpCi0gICAgICAgIG9zLmNoZGlyKHNlbGYuZGly
KQotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIG9z
LmNoZGlyKHNlbGYub2xkX2RpcikKLSAgICAgICAgc2VsZi5vbGRfZGlyID0gTm9uZQotCi0KIGRl
ZiBnZXQodXJsKToKICAgICAiIiJJc3N1ZSBHRVQgcmVxdWVzdCB0byBhIGdpdmVuIFVSTCBhbmQg
cmV0dXJuIHRoZSByZXNwb25zZS4iIiIKICAgICBpbXBvcnQgcmVxdWVzdHMKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3Zp
cnR1YWxlbnYucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC92aXJ0dWFsZW52LnB5CmluZGV4IGI4NDU0Yzk3OWMyYzRiYTIwOTk1YmE4ODA1
Y2ViYjYxOGZkOGJhZWQuLjQwMGRlYmM4OGU0NjkxMGQyNjQxZTcyOGZjNGFkYjg2YTg4NTY4ZTAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3ZpcnR1YWxlbnYucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQpAQCAtNCwyNCArNCw0NSBA
QCBpbXBvcnQgc3lzCiBpbXBvcnQgbG9nZ2luZwogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0
IGZpbmRfZXhlY3V0YWJsZQogCisjIFRoZSBgcGtnX3Jlc291cmNlc2AgbW9kdWxlIGlzIHByb3Zp
ZGVkIGJ5IGBzZXR1cHRvb2xzYCwgd2hpY2ggaXMgaXRzZWxmIGEKKyMgZGVwZW5kZW5jeSBvZiBg
dmlydHVhbGVudmAuIFRvbGVyYXRlIGl0cyBhYnNlbmNlIHNvIHRoYXQgdGhpcyBtb2R1bGUgbWF5
IGJlCisjIGV2YWx1YXRlZCB3aGVuIHRoYXQgbW9kdWxlIGlzIG5vdCBhdmFpbGFibGUuIEJlY2F1
c2UgdXNlcnMgbWF5IG5vdCByZWNvZ25pemUKKyMgdGhlIGBwa2dfcmVzb3VyY2VzYCBtb2R1bGUg
YnkgbmFtZSwgcmFpc2UgYSBtb3JlIGRlc2NyaXB0aXZlIGVycm9yIGlmIGl0IGlzCisjIHJlZmVy
ZW5jZWQgZHVyaW5nIGV4ZWN1dGlvbi4KK3RyeToKKyAgICBpbXBvcnQgcGtnX3Jlc291cmNlcyBh
cyBfcGtnX3Jlc291cmNlcworICAgIGdldF9wa2dfcmVzb3VyY2VzID0gbGFtYmRhOiBfcGtnX3Jl
c291cmNlcworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGRlZiBnZXRfcGtnX3Jlc291cmNlcygp
OgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgUHl0aG9uIG1vZHVsZSBgdmlydHVhbGVu
dmAgaXMgbm90IGluc3RhbGxlZC4iKQorCiBmcm9tIHRvb2xzLndwdC51dGlscyBpbXBvcnQgY2Fs
bAogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIAogY2xhc3MgVmlydHVh
bGVudihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgcGF0aCwgc2tpcF92aXJ0dWFsZW52X3NldHVwKToKICAgICAgICAgc2VsZi5w
YXRoID0gcGF0aAotICAgICAgICBzZWxmLnZpcnR1YWxlbnYgPSBmaW5kX2V4ZWN1dGFibGUoInZp
cnR1YWxlbnYiKQotICAgICAgICBpZiBub3Qgc2VsZi52aXJ0dWFsZW52OgotICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigidmlydHVhbGVudiBtdXN0IGJlIGluc3RhbGxlZCBhbmQgb24gdGhl
IFBBVEgiKQorICAgICAgICBzZWxmLnNraXBfdmlydHVhbGVudl9zZXR1cCA9IHNraXBfdmlydHVh
bGVudl9zZXR1cAorICAgICAgICBpZiBub3Qgc2tpcF92aXJ0dWFsZW52X3NldHVwOgorICAgICAg
ICAgICAgc2VsZi52aXJ0dWFsZW52ID0gZmluZF9leGVjdXRhYmxlKCJ2aXJ0dWFsZW52IikKKyAg
ICAgICAgICAgIGlmIG5vdCBzZWxmLnZpcnR1YWxlbnY6CisgICAgICAgICAgICAgICAgcmFpc2Ug
VmFsdWVFcnJvcigidmlydHVhbGVudiBtdXN0IGJlIGluc3RhbGxlZCBhbmQgb24gdGhlIFBBVEgi
KQorICAgICAgICAgICAgc2VsZi5fd29ya2luZ19zZXQgPSBOb25lCiAKICAgICBAcHJvcGVydHkK
ICAgICBkZWYgZXhpc3RzKHNlbGYpOgogICAgICAgICByZXR1cm4gb3MucGF0aC5pc2RpcihzZWxm
LnBhdGgpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgYnJva2VuX2xpbmsoc2VsZik6CisgICAg
ICAgIHB5dGhvbl9saW5rID0gb3MucGF0aC5qb2luKHNlbGYucGF0aCwgIi5QeXRob24iKQorICAg
ICAgICByZXR1cm4gb3MucGF0aC5sZXhpc3RzKHB5dGhvbl9saW5rKSBhbmQgbm90IG9zLnBhdGgu
ZXhpc3RzKHB5dGhvbl9saW5rKQorCiAgICAgZGVmIGNyZWF0ZShzZWxmKToKICAgICAgICAgaWYg
b3MucGF0aC5leGlzdHMoc2VsZi5wYXRoKToKICAgICAgICAgICAgIHNodXRpbC5ybXRyZWUoc2Vs
Zi5wYXRoKQorICAgICAgICAgICAgc2VsZi5fd29ya2luZ19zZXQgPSBOb25lCiAgICAgICAgIGNh
bGwoc2VsZi52aXJ0dWFsZW52LCBzZWxmLnBhdGgsICItcCIsIHN5cy5leGVjdXRhYmxlKQogCiAg
ICAgQHByb3BlcnR5CkBAIC0zNywxNyArNTgsNjkgQEAgY2xhc3MgVmlydHVhbGVudihvYmplY3Qp
OgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicGlwIG5vdCBmb3VuZCIpCiAgICAgICAg
IHJldHVybiBwYXRoCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbGliX3BhdGgoc2VsZik6Cisg
ICAgICAgIGJhc2UgPSBzZWxmLnBhdGgKKworICAgICAgICAjIHRoaXMgYmxvY2sgaXMgbGl0ZXJh
bGx5IHRha2VuIGZyb20gdmlydHVhbGVudiAxNi40LjMKKyAgICAgICAgSVNfUFlQWSA9IGhhc2F0
dHIoc3lzLCAicHlweV92ZXJzaW9uX2luZm8iKQorICAgICAgICBJU19KWVRIT04gPSBzeXMucGxh
dGZvcm0uc3RhcnRzd2l0aCgiamF2YSIpCisgICAgICAgIGlmIElTX0pZVEhPTjoKKyAgICAgICAg
ICAgIHNpdGVfcGFja2FnZXMgPSBvcy5wYXRoLmpvaW4oYmFzZSwgIkxpYiIsICJzaXRlLXBhY2th
Z2VzIikKKyAgICAgICAgZWxpZiBJU19QWVBZOgorICAgICAgICAgICAgc2l0ZV9wYWNrYWdlcyA9
IG9zLnBhdGguam9pbihiYXNlLCAic2l0ZS1wYWNrYWdlcyIpCisgICAgICAgIGVsc2U6CisgICAg
ICAgICAgICBJU19XSU4gPSBzeXMucGxhdGZvcm0gPT0gIndpbjMyIgorICAgICAgICAgICAgaWYg
SVNfV0lOOgorICAgICAgICAgICAgICAgIHNpdGVfcGFja2FnZXMgPSBvcy5wYXRoLmpvaW4oYmFz
ZSwgIkxpYiIsICJzaXRlLXBhY2thZ2VzIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgc2l0ZV9wYWNrYWdlcyA9IG9zLnBhdGguam9pbihiYXNlLCAibGliIiwgInB5dGhvbnt9
Ii5mb3JtYXQoc3lzLnZlcnNpb25bOjNdKSwgInNpdGUtcGFja2FnZXMiKQorCisgICAgICAgIHJl
dHVybiBzaXRlX3BhY2thZ2VzCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgd29ya2luZ19zZXQo
c2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLmV4aXN0czoKKyAgICAgICAgICAgIHJhaXNlIFZh
bHVlRXJyb3IoInRyeWluZyB0byByZWFkIHdvcmtpbmdfc2V0IHdoZW4gdmVudiBkb2Vzbid0IGV4
aXN0IikKKworICAgICAgICBpZiBzZWxmLl93b3JraW5nX3NldCBpcyBOb25lOgorICAgICAgICAg
ICAgc2VsZi5fd29ya2luZ19zZXQgPSBnZXRfcGtnX3Jlc291cmNlcygpLldvcmtpbmdTZXQoKHNl
bGYubGliX3BhdGgsKSkKKworICAgICAgICByZXR1cm4gc2VsZi5fd29ya2luZ19zZXQKKwogICAg
IGRlZiBhY3RpdmF0ZShzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmJp
bl9wYXRoLCAiYWN0aXZhdGVfdGhpcy5weSIpCi0gICAgICAgIGV4ZWNmaWxlKHBhdGgsIHsiX19m
aWxlX18iOiBwYXRofSkKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgpIGFzIGY6CisgICAgICAgICAg
ICBleGVjKGYucmVhZCgpLCB7Il9fZmlsZV9fIjogcGF0aH0pCiAKICAgICBkZWYgc3RhcnQoc2Vs
Zik6Ci0gICAgICAgIGlmIG5vdCBzZWxmLmV4aXN0czoKKyAgICAgICAgaWYgbm90IHNlbGYuZXhp
c3RzIG9yIHNlbGYuYnJva2VuX2xpbms6CiAgICAgICAgICAgICBzZWxmLmNyZWF0ZSgpCiAgICAg
ICAgIHNlbGYuYWN0aXZhdGUoKQogCiAgICAgZGVmIGluc3RhbGwoc2VsZiwgKnJlcXVpcmVtZW50
cyk6Ci0gICAgICAgIGNhbGwoc2VsZi5waXBfcGF0aCwgImluc3RhbGwiLCAqcmVxdWlyZW1lbnRz
KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLndvcmtpbmdfc2V0LnJlcXVpcmUoKnJl
cXVpcmVtZW50cykKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgIHBhc3MK
KyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgICMgYC0tcHJlZmVy
LWJpbmFyeWAgZ3VhcmRzIGFnYWluc3QgcmFjZSBjb25kaXRpb25zIHdoZW4gaW5zdGFsbGF0aW9u
CisgICAgICAgICMgb2NjdXJzIHdoaWxlIHBhY2thZ2VzIGFyZSBpbiB0aGUgcHJvY2VzcyBvZiBi
ZWluZyBwdWJsaXNoZWQuCisgICAgICAgIGNhbGwoc2VsZi5waXBfcGF0aCwgImluc3RhbGwiLCAi
LS1wcmVmZXItYmluYXJ5IiwgKnJlcXVpcmVtZW50cykKIAogICAgIGRlZiBpbnN0YWxsX3JlcXVp
cmVtZW50cyhzZWxmLCByZXF1aXJlbWVudHNfcGF0aCk6Ci0gICAgICAgIGNhbGwoc2VsZi5waXBf
cGF0aCwgImluc3RhbGwiLCAiLXIiLCByZXF1aXJlbWVudHNfcGF0aCkKKyAgICAgICAgd2l0aCBv
cGVuKHJlcXVpcmVtZW50c19wYXRoKSBhcyBmOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgICAgIHNlbGYud29ya2luZ19zZXQucmVxdWlyZShmLnJlYWQoKSkKKyAgICAgICAgICAgIGV4
Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToK
KyAgICAgICAgICAgICAgICByZXR1cm4KKworICAgICAgICAjIGAtLXByZWZlci1iaW5hcnlgIGd1
YXJkcyBhZ2FpbnN0IHJhY2UgY29uZGl0aW9ucyB3aGVuIGluc3RhbGxhdGlvbgorICAgICAgICAj
IG9jY3VycyB3aGlsZSBwYWNrYWdlcyBhcmUgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgcHVibGlz
aGVkLgorICAgICAgICBjYWxsKAorICAgICAgICAgICAgc2VsZi5waXBfcGF0aCwgImluc3RhbGwi
LCAiLS1wcmVmZXItYmluYXJ5IiwgIi1yIiwgcmVxdWlyZW1lbnRzX3BhdGgKKyAgICAgICAgKQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggNTYzYzFkNWU2ZTk5NTM2NDUzODIxYWU4YzMxZmUyNjczOTE0MTM3NS4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC93M2MtaW1wb3J0LmxvZwor
KysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9y
eSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0
aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJl
cXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9y
bS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0
cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBm
aWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVm
aXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgot
Tm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L19faW5pdF9fLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvX19pbml0X18u
cHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHQvYnJvd3Nlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0L2NvbW1hbmRzLmpzb24KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9pbnN0YWxsLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvbWFya2Rvd24ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC9wYXRocwotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3JlcXVp
cmVtZW50cy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdC9ydW4ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdC90ZXN0ZmlsZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdC90ZXN0ZmlsZXMucHljCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvdG94LmluaQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3VwZGF0ZS5w
eQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
L3V0aWxzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHQvdXRpbHMucHljCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvdmlydHVhbGVudi5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0L3ZpcnR1YWxlbnYucHljCi0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHQvd3B0LnB5
YwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHQvd3B0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHQvd3B0LnB5CmluZGV4IGY0ZWVjY2UyMmNmOTE1MDQ5ZjQ4MTA0OTkw
M2E3YzUzYTJhOGVmZjcuLjkzMzAxZGQ4NmI0ZmZlMjAyOTAyYTQ5MjIwNGViYTY1MzdmYjUwZDUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0L3dwdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdC93cHQucHkKQEAgLTQsNyArNCw3IEBAIGltcG9ydCBsb2dnaW5n
CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKIAotZnJvbSB0b29scyBpbXBvcnQgbG9jYWxwYXRocyAg
IyBub3FhOiBmbGFrZTgKK2Zyb20gdG9vbHMgaW1wb3J0IGxvY2FscGF0aHMgICMgbm9xYTogRjQw
MQogCiBmcm9tIHNpeCBpbXBvcnQgaXRlcml0ZW1zCiBmcm9tIC4gaW1wb3J0IHZpcnR1YWxlbnYK
QEAgLTQzLDYgKzQzLDkgQEAgZGVmIGxvYWRfY29tbWFuZHMoKToKIGRlZiBwYXJzZV9hcmdzKGFy
Z3YsIGNvbW1hbmRzKToKICAgICBwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcigpCiAg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS12ZW52IiwgYWN0aW9uPSJzdG9yZSIsIGhlbHA9IlBh
dGggdG8gYW4gZXhpc3RpbmcgdmlydHVhbGVudiB0byB1c2UiKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tc2tpcC12ZW52LXNldHVwIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgIGRlc3Q9InNraXBfdmVudl9zZXR1cCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSJXaGV0aGVyIHRvIHVzZSB0aGUgdmlydHVhbGVudiBhcy1pcy4gTXVzdCBz
ZXQgLS12ZW52IGFzIHdlbGwiKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZGVidWciLCBh
Y3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSJSdW4gdGhlIGRlYnVnZ2VyIGluIGNhc2Ugb2YgYW4g
ZXhjZXB0aW9uIikKICAgICBzdWJwYXJzZXJzID0gcGFyc2VyLmFkZF9zdWJwYXJzZXJzKGRlc3Q9
ImNvbW1hbmQiKQogICAgIGZvciBjb21tYW5kLCBwcm9wcyBpbiBpdGVyaXRlbXMoY29tbWFuZHMp
OgpAQCAtNzcsMTUgKzgwLDQ3IEBAIGRlZiBpbXBvcnRfY29tbWFuZChwcm9nLCBjb21tYW5kLCBw
cm9wcyk6CiAgICAgcmV0dXJuIHNjcmlwdCwgcGFyc2VyCiAKIAotZGVmIHNldHVwX3ZpcnR1YWxl
bnYocGF0aCwgcHJvcHMpOgorZGVmIGNyZWF0ZV9jb21wbGV0ZV9wYXJzZXIoKToKKyAgICAiIiJF
YWdlcmx5IGxvYWQgYWxsIHN1YnBhcnNlcnMuIFRoaXMgaW52b2x2ZXMgbW9yZSB3b3JrIHRoYW4g
aXMgcmVxdWlyZWQKKyAgICBmb3IgdHlwaWNhbCBjb21tYW5kLWxpbmUgdXNhZ2UuIEl0IGlzIG1h
aW50YWluZWQgZm9yIHRoZSBwdXJwb3NlcyBvZgorICAgIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlv
biBhcyBpbXBsZW1lbnRlZCBpbiBXUFQncyB0b3AtbGV2ZWwgYC9kb2NzYAorICAgIGRpcmVjdG9y
eS4iIiIKKworICAgIGNvbW1hbmRzID0gbG9hZF9jb21tYW5kcygpCisgICAgcGFyc2VyID0gYXJn
cGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHN1YnBhcnNlcnMgPSBwYXJzZXIuYWRkX3N1YnBh
cnNlcnMoKQorCisgICAgZm9yIGNvbW1hbmQgaW4gY29tbWFuZHM6CisgICAgICAgIHByb3BzID0g
Y29tbWFuZHNbY29tbWFuZF0KKworICAgICAgICBpZiBwcm9wc1sidmlydHVhbGVudiJdOgorICAg
ICAgICAgICAgc2V0dXBfdmlydHVhbGVudihOb25lLCBGYWxzZSwgcHJvcHMpCisKKyAgICAgICAg
c3VicGFyc2VyID0gaW1wb3J0X2NvbW1hbmQoJ3dwdCcsIGNvbW1hbmQsIHByb3BzKVsxXQorICAg
ICAgICBpZiBub3Qgc3VicGFyc2VyOgorICAgICAgICAgICAgY29udGludWUKKworICAgICAgICBz
dWJwYXJzZXJzLmFkZF9wYXJzZXIoY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGhlbHA9cHJvcHNbImhlbHAiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFk
ZF9oZWxwPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50cz1bc3Vi
cGFyc2VyXSkKKworICAgIHJldHVybiBwYXJzZXIKKworCitkZWYgc2V0dXBfdmlydHVhbGVudihw
YXRoLCBza2lwX3ZlbnZfc2V0dXAsIHByb3BzKToKKyAgICBpZiBza2lwX3ZlbnZfc2V0dXAgYW5k
IHBhdGggaXMgTm9uZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTXVzdCBzZXQgLS12ZW52
IHdoZW4gLS1za2lwLXZlbnYtc2V0dXAgaXMgdXNlZCIpCisgICAgc2hvdWxkX3NraXBfc2V0dXAg
PSBwYXRoIGlzIG5vdCBOb25lIGFuZCBza2lwX3ZlbnZfc2V0dXAKICAgICBpZiBwYXRoIGlzIE5v
bmU6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4od3B0X3Jvb3QsICJfdmVudiIpCi0gICAg
dmVudiA9IHZpcnR1YWxlbnYuVmlydHVhbGVudihwYXRoKQotICAgIHZlbnYuc3RhcnQoKQotICAg
IGZvciBuYW1lIGluIHByb3BzWyJpbnN0YWxsIl06Ci0gICAgICAgIHZlbnYuaW5zdGFsbChuYW1l
KQotICAgIGZvciBwYXRoIGluIHByb3BzWyJyZXF1aXJlbWVudHMiXToKLSAgICAgICAgdmVudi5p
bnN0YWxsX3JlcXVpcmVtZW50cyhwYXRoKQorICAgIHZlbnYgPSB2aXJ0dWFsZW52LlZpcnR1YWxl
bnYocGF0aCwgc2hvdWxkX3NraXBfc2V0dXApCisgICAgaWYgbm90IHNob3VsZF9za2lwX3NldHVw
OgorICAgICAgICB2ZW52LnN0YXJ0KCkKKyAgICAgICAgZm9yIG5hbWUgaW4gcHJvcHNbImluc3Rh
bGwiXToKKyAgICAgICAgICAgIHZlbnYuaW5zdGFsbChuYW1lKQorICAgICAgICBmb3IgcGF0aCBp
biBwcm9wc1sicmVxdWlyZW1lbnRzIl06CisgICAgICAgICAgICB2ZW52Lmluc3RhbGxfcmVxdWly
ZW1lbnRzKHBhdGgpCiAgICAgcmV0dXJuIHZlbnYKIAogCkBAIC0xMDEsMTQgKzEzNiwxMSBAQCBk
ZWYgbWFpbihwcm9nPU5vbmUsIGFyZ3Y9Tm9uZSk6CiAKICAgICBtYWluX2FyZ3MsIGNvbW1hbmRf
YXJncyA9IHBhcnNlX2FyZ3MoYXJndiwgY29tbWFuZHMpCiAKLSAgICBpZiBub3QobGVuKGFyZ3Yp
IGFuZCBhcmd2WzBdIGluIGNvbW1hbmRzKToKLSAgICAgICAgc3lzLmV4aXQoMSkKLQogICAgIGNv
bW1hbmQgPSBtYWluX2FyZ3MuY29tbWFuZAogICAgIHByb3BzID0gY29tbWFuZHNbY29tbWFuZF0K
ICAgICB2ZW52ID0gTm9uZQogICAgIGlmIHByb3BzWyJ2aXJ0dWFsZW52Il06Ci0gICAgICAgIHZl
bnYgPSBzZXR1cF92aXJ0dWFsZW52KG1haW5fYXJncy52ZW52LCBwcm9wcykKKyAgICAgICAgdmVu
diA9IHNldHVwX3ZpcnR1YWxlbnYobWFpbl9hcmdzLnZlbnYsIG1haW5fYXJncy5za2lwX3ZlbnZf
c2V0dXAsIHByb3BzKQogICAgIHNjcmlwdCwgcGFyc2VyID0gaW1wb3J0X2NvbW1hbmQocHJvZywg
Y29tbWFuZCwgcHJvcHMpCiAgICAgaWYgcGFyc2VyOgogICAgICAgICBpZiBwcm9wc1sicGFyc2Vf
a25vd24iXToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL1JFQURNRS5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9SRUFETUUucnN0CmluZGV4
IDc2ZTQ5NmRjZGJiNjk3YTJkNjY2MmE2ZGZmYjYwM2IxN2FjZTA1M2YuLjBhZGYwYTk0YjE1ZDIy
NGFiNzk3MGU4MWFlN2Y0MzJkZjM0YmIzZDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL1JFQURNRS5yc3QKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvUkVBRE1FLnJzdApAQCAtMywyMzQgKzMsMTIgQEAgd3B0cnVubmVyOiBBIHdlYi1wbGF0
Zm9ybS10ZXN0cyBoYXJuZXNzCiAKIHdwdHJ1bm5lciBpcyBhIGhhcm5lc3MgZm9yIHJ1bm5pbmcg
dGhlIFczQyBgd2ViLXBsYXRmb3JtLXRlc3RzIHRlc3RzdWl0ZWBfLgogCi0uLiBjb250ZW50czo6
CisuLiB0b2N0cmVlOjoKKyAgIDptYXhkZXB0aDogMgogCi1JbnN0YWxsYXRpb24KLX5+fn5+fn5+
fn5+fgotCi13cHRydW5uZXIgaXMgZXhwZWN0ZWQgdG8gYmUgaW5zdGFsbGVkIGludG8gYSB2aXJ0
dWFsZW52IHVzaW5nIHBpcC4gRm9yCi1kZXZlbG9wbWVudCwgaXQgY2FuIGJlIGluc3RhbGxlZCB1
c2luZyB0aGUgYC1lYCBvcHRpb246OgotCi0gIHBpcCBpbnN0YWxsIC1lIC4vCi0KLVJ1bm5pbmcg
dGhlIFRlc3RzCi1+fn5+fn5+fn5+fn5+fn5+fgotCi1BZnRlciBpbnN0YWxsYXRpb24sIHRoZSBj
b21tYW5kIGBgd3B0cnVubmVyYGAgc2hvdWxkIGJlIGF2YWlsYWJsZSB0byBydW4KLXRoZSB0ZXN0
cy4KLQotVGhlIGBgd3B0cnVubmVyYGAgY29tbWFuZCAgdGFrZXMgbXVsdGlwbGUgb3B0aW9ucywg
b2Ygd2hpY2ggdGhlCi1mb2xsb3dpbmcgYXJlIG1vc3Qgc2lnbmlmaWNhbnQ6Ci0KLWBgLS1wcm9k
dWN0YGAgKGRlZmF1bHRzIHRvIGBmaXJlZm94YCkKLSAgVGhlIHByb2R1Y3QgdG8gdGVzdCBhZ2Fp
bnN0OiBgY2hyb21lYCwgYGZpcmVmb3hgLCBvciBgc2Vydm9gLgotCi1gYC0tYmluYXJ5YGAgKHJl
cXVpcmVkIGlmIHByb2R1Y3QgaXMgYGZpcmVmb3hgIG9yIGBzZXJ2b2ApCi0gIFRoZSBwYXRoIHRv
IGEgYmluYXJ5IGZpbGUgZm9yIHRoZSBwcm9kdWN0IChicm93c2VyKSB0byB0ZXN0IGFnYWluc3Qu
Ci0KLWBgLS13ZWJkcml2ZXItYmluYXJ5YGAgKHJlcXVpcmVkIGlmIHByb2R1Y3QgaXMgYGNocm9t
ZWApCi0gIFRoZSBwYXRoIHRvIGEgYGRyaXZlcmAgYmluYXJ5OyBlLmcuLCBhIGBjaHJvbWVkcml2
ZXJgIGJpbmFyeS4KLQotYGAtLWNlcnR1dGlsLWJpbmFyeWBgIChyZXF1aXJlZCBpZiBwcm9kdWN0
IGlzIGBmaXJlZm94YCBbI11fKQotICBUaGUgcGF0aCB0byBhIGBjZXJ0dXRpbGAgYmluYXJ5IChm
b3IgdGVzdHMgdGhhdCBtdXN0IGJlIHJ1biBvdmVyIGh0dHBzKS4KLQotYGAtLW1ldGFkYXRhYGAg
KHJlcXVpcmVkKQotICBUaGUgcGF0aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIHRlc3QgbWV0
YWRhdGEuIFsjXV8KLQotYGAtLXRlc3RzYGAgKHJlcXVpcmVkKQotICBUaGUgcGF0aCB0byBhIGRp
cmVjdG9yeSBjb250YWluaW5nIGEgd2ViLXBsYXRmb3JtLXRlc3RzIGNoZWNrb3V0LgotCi1gYC0t
cHJlZnMtcm9vdGBgIChyZXF1aXJlZCBvbmx5IHdoZW4gdGVzdGluZyBhIEZpcmVmb3ggYmluYXJ5
KQotICBUaGUgcGF0aCB0byBhIGRpcmVjdG9yeSBjb250YWluaW5nIEZpcmVmb3ggdGVzdC1oYXJu
ZXNzIHByZWZlcmVuY2VzLiBbI11fCi0KLWBgLS1jb25maWdgYCAoc2hvdWxkIGRlZmF1bHQgdG8g
YHdwdHJ1bm5lci5kZWZhdWx0LmluaWApCi0gIFRoZSBwYXRoIHRvIHRoZSBjb25maWcgKGluaSkg
ZmlsZS4KLQotLi4gWyNdIFRoZSBgYC0tY2VydHV0aWwtYmluYXJ5YGAgb3B0aW9uIGlzIHJlcXVp
cmVkIHdoZW4gdGhlIHByb2R1Y3QgaXMKLSAgIGBgZmlyZWZveGBgIHVubGVzcyBgYC0tc3NsLXR5
cGU9bm9uZWBgIGlzIHNwZWNpZmllZC4KLQotLi4gWyNdIFRoZSBgYC0tbWV0YWRhdGFgYCBwYXRo
IGlzIHRvIGEgZGlyZWN0b3J5IHRoYXQgY29udGFpbnM6Ci0KLSAgKiBhIGBgTUFOSUZFU1QuanNv
bmBgIGZpbGUgKGluc3RydWN0aW9ucyBvbiBnZW5lcmF0aW5nIHRoaXMgZmlsZSBhcmUKLSAgICBh
dmFpbGFibGUgaW4gdGhlIGBkZXRhaWxlZCBkb2N1bWVudGF0aW9uCi0gICAgPGh0dHA6Ly93cHRy
dW5uZXIucmVhZHRoZWRvY3Mub3JnL2VuL2xhdGVzdC91c2FnZS5odG1sI2luc3RhbGxpbmctd3B0
cnVubmVyPmBfKTsKLSAgICBhbmQKLSAgKiAob3B0aW9uYWxseSkgYW55IGV4cGVjdGF0aW9uIGZp
bGVzIChzZWUgYmVsb3cpCi0KLS4uIFsjXSBFeGFtcGxlIGBgLS1wcmVmcy1yb290YGAgdmFsdWU6
IGBgfi9tb3ppbGxhLWNlbnRyYWwvdGVzdGluZy9wcm9maWxlc2BgLgotCi1UaGVyZSBhcmUgYWxz
byBhIHZhcmlldHkgb2Ygb3RoZXIgb3B0aW9ucyBhdmFpbGFibGU7IHVzZSBgYC0taGVscGBgIHRv
Ci1saXN0IHRoZW0uCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUV4YW1wbGU6
IEhvdyB0byBzdGFydCB3cHRydW5uZXIKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
LQotVG8gdGVzdCBhIEZpcmVmb3ggTmlnaHRseSBidWlsZCBpbiBhbiBPUyBYIGVudmlyb25tZW50
LCB5b3UgbWlnaHQgc3RhcnQKLXdwdHJ1bm5lciB1c2luZyBzb21ldGhpbmcgc2ltaWxhciB0byB0
aGUgZm9sbG93aW5nIGV4YW1wbGU6OgotCi0gIHdwdHJ1bm5lciAtLW1ldGFkYXRhPX4vd2ViLXBs
YXRmb3JtLXRlc3RzLyAtLXRlc3RzPX4vd2ViLXBsYXRmb3JtLXRlc3RzLyBcCi0gICAgLS1iaW5h
cnk9fi9tb3ppbGxhLWNlbnRyYWwvb2JqLXg4Nl82NC1hcHBsZS1kYXJ3aW4xNC4zLjAvZGlzdC9O
aWdodGx5LmFwcC9Db250ZW50cy9NYWNPUy9maXJlZm94IFwKLSAgICAtLWNlcnR1dGlsLWJpbmFy
eT1+L21vemlsbGEtY2VudHJhbC9vYmoteDg2XzY0LWFwcGxlLWRhcndpbjE0LjMuMC9zZWN1cml0
eS9uc3MvY21kL2NlcnR1dGlsL2NlcnR1dGlsIFwKLSAgICAtLXByZWZzLXJvb3Q9fi9tb3ppbGxh
LWNlbnRyYWwvdGVzdGluZy9wcm9maWxlcwotCi1BbmQgdG8gdGVzdCBhIENocm9taXVtIGJ1aWxk
IGluIGFuIE9TIFggZW52aXJvbm1lbnQsIHlvdSBtaWdodCBzdGFydAotd3B0cnVubmVyIHVzaW5n
IHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTo6Ci0KLSAgd3B0cnVu
bmVyIC0tbWV0YWRhdGE9fi93ZWItcGxhdGZvcm0tdGVzdHMvIC0tdGVzdHM9fi93ZWItcGxhdGZv
cm0tdGVzdHMvIFwKLSAgICAtLWJpbmFyeT1+L2Nocm9taXVtL3NyYy9vdXQvUmVsZWFzZS9DaHJv
bWl1bS5hcHAvQ29udGVudHMvTWFjT1MvQ2hyb21pdW0gXAotICAgIC0td2ViZHJpdmVyLWJpbmFy
eT0vdXNyL2xvY2FsL2Jpbi9jaHJvbWVkcml2ZXIgLS1wcm9kdWN0PWNocm9tZQotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1FeGFtcGxlOiBIb3cgdG8gcnVuIGEgc3Vi
c2V0IG9mIHRlc3RzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRv
IHJlc3RyaWN0IGEgdGVzdCBydW4ganVzdCB0byB0ZXN0cyBpbiBhIHBhcnRpY3VsYXIgd2ViLXBs
YXRmb3JtLXRlc3RzCi1zdWJkaXJlY3RvcnksIHNwZWNpZnkgdGhlIGRpcmVjdG9yeSBuYW1lIGlu
IHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBhZnRlcgotdGhlIG9wdGlvbnM7IGZvciBleGFtcGxl
LCBydW4ganVzdCB0aGUgdGVzdHMgaW4gdGhlIGBkb21gIHN1YmRpcmVjdG9yeTo6Ci0KLSAgd3B0
cnVubmVyIC0tbWV0YWRhdGE9fi93ZWItcGxhdGZvcm0tdGVzdHMvIC0tdGVzdHM9fi93ZWItcGxh
dGZvcm0tdGVzdHMvIFwKLSAgICAtLWJpbmFyeT0vcGF0aC90by9maXJlZm94IC0tY2VydHV0aWwt
YmluYXJ5PS9wYXRoL3RvL2NlcnR1dGlsIFwKLSAgICAtLXByZWZzLXJvb3Q9L3BhdGgvdG8vdGVz
dGluZy9wcm9maWxlcyBcCi0gICAgZG9tCi0KLU91dHB1dAotfn5+fn5+Ci0KLUJ5IGRlZmF1bHQg
d3B0cnVubmVyIGp1c3QgZHVtcHMgaXRzIGVudGlyZSBvdXRwdXQgYXMgcmF3IEpTT04gbWVzc2Fn
ZXMKLXRvIHN0ZG91dC4gVGhpcyBpcyBjb252ZW5pZW50IGZvciBwaXBpbmcgaW50byBvdGhlciB0
b29scywgYnV0IG5vdCBpZGVhbAotZm9yIGh1bWFucyByZWFkaW5nIHRoZSBvdXRwdXQuCi0KLUFz
IGFuIGFsdGVybmF0aXZlLCB5b3UgY2FuIHVzZSB0aGUgYGAtLWxvZy1tYWNoYGAgb3B0aW9uLCB3
aGljaCBwcm92aWRlcwotb3V0cHV0IGluIGEgcmVhc29uYWJsZSBmb3JtYXQgZm9yIGh1bWFucy4g
VGhlIG9wdGlvbiByZXF1aXJlcyBhIHZhbHVlOgotZWl0aGVyIHRoZSBwYXRoIGZvciBhIGZpbGUg
dG8gd3JpdGUgdGhlIGBtYWNoYC1mb3JtYXR0ZWQgb3V0cHV0IHRvLCBvcgotImAtYCIgKGEgaHlw
aGVuKSB0byB3cml0ZSB0aGUgYG1hY2hgLWZvcm1hdHRlZCBvdXRwdXQgdG8gc3Rkb3V0LgotCi1X
aGVuIHVzaW5nIGBgLS1sb2ctbWFjaGBgLCBvdXRwdXQgb2YgdGhlIGZ1bGwgcmF3IEpTT04gbG9n
IGlzIHN0aWxsCi1hdmFpbGFibGUsIGZyb20gdGhlIGBgLS1sb2ctcmF3YGAgb3B0aW9uLiBTbyB0
byBvdXRwdXQgdGhlIGZ1bGwgcmF3IEpTT04KLWxvZyB0byBhIGZpbGUgYW5kIGEgaHVtYW4tcmVh
ZGFibGUgc3VtbWFyeSB0byBzdGRvdXQsIHlvdSBtaWdodCBzdGFydAotd3B0cnVubmVyIHVzaW5n
IHNvbWV0aGluZyBzaW1pbGFyIHRvIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTo6Ci0KLSAgd3B0cnVu
bmVyIC0tbWV0YWRhdGE9fi93ZWItcGxhdGZvcm0tdGVzdHMvIC0tdGVzdHM9fi93ZWItcGxhdGZv
cm0tdGVzdHMvIFwKLSAgICAtLWJpbmFyeT0vcGF0aC90by9maXJlZm94IC0tY2VydHV0aWwtYmlu
YXJ5PS9wYXRoL3RvL2NlcnR1dGlsIFwKLSAgICAtLXByZWZzLXJvb3Q9L3BhdGgvdG8vdGVzdGlu
Zy9wcm9maWxlcyBcCi0gICAgLS1sb2ctcmF3PW91dHB1dC5sb2cgLS1sb2ctbWFjaD0tCi0KLUV4
cGVjdGF0aW9uIERhdGEKLX5+fn5+fn5+fn5+fn5+fn4KLQotd3B0cnVubmVyIGlzIGRlc2lnbmVk
IHRvIGJlIHVzZWQgaW4gYW4gZW52aXJvbm1lbnQgd2hlcmUgaXQgaXMgbm90Ci1qdXN0IG5lY2Vz
c2FyeSB0byBrbm93IHdoaWNoIHRlc3RzIHBhc3NlZCwgYnV0IHRvIGNvbXBhcmUgdGhlIHJlc3Vs
dHMKLWJldHdlZW4gcnVucy4gRm9yIHRoaXMgcmVhc29uIGl0IGlzIHBvc3NpYmxlIHRvIHN0b3Jl
IHRoZSByZXN1bHRzIG9mIGEKLXByZXZpb3VzIHJ1biBpbiBhIHNldCBvZiBpbmktbGlrZSAiZXhw
ZWN0YXRpb24gZmlsZXMiLiBUaGlzIGZvcm1hdCBpcwotZG9jdW1lbnRlZCBiZWxvdy4gVG8gZ2Vu
ZXJhdGUgdGhlIGV4cGVjdGF0aW9uIGZpbGVzIHVzZSBgd3B0cnVubmVyYCB3aXRoCi10aGUgYC0t
bG9nLXJhdz0vcGF0aC90by9sb2cvZmlsZWAgb3B0aW9uLiBUaGlzIGNhbiB0aGVuIGJlIHVzZWQg
YXMKLWlucHV0IHRvIHRoZSBgd3B0dXBkYXRlYCB0b29sLgotCi1FeHBlY3RhdGlvbiBGaWxlIEZv
cm1hdAotfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLQotTWV0YWRhdGEgYWJvdXQgdGVzdHMsIG5v
dGFibHkgaW5jbHVkaW5nIHRoZWlyIGV4cGVjdGVkIHJlc3VsdHMsIGlzCi1zdG9yZWQgaW4gYSBt
b2RpZmllZCBpbmktbGlrZSBmb3JtYXQgdGhhdCBpcyBkZXNpZ25lZCB0byBiZSBodW1hbgotZWRp
dGFibGUsIGJ1dCBhbHNvIHRvIGJlIG1hY2hpbmUgdXBkYXRhYmxlLgotCi1FYWNoIHRlc3QgZmls
ZSB0aGF0IHJlcXVpcmVzIG1ldGFkYXRhIHRvIGJlIHNwZWNpZmllZCAoYmVjYXVzZSBpdCBoYXMK
LWEgbm9uLWRlZmF1bHQgZXhwZWN0YXRpb24gb3IgYmVjYXVzZSBpdCBpcyBkaXNhYmxlZCwgZm9y
IGV4YW1wbGUpIGhhcwotYSBjb3JyZXNwb25kaW5nIGV4cGVjdGF0aW9uIGZpbGUgaW4gdGhlIGBt
ZXRhZGF0YWAgZGlyZWN0b3J5LiBGb3IKLWV4YW1wbGUgYSB0ZXN0IGZpbGUgYGh0bWwvdGVzdDEu
aHRtbGAgY29udGFpbmluZyBhIGZhaWxpbmcgdGVzdCB3b3VsZAotaGF2ZSBhbiBleHBlY3RhdGlv
biBmaWxlIGNhbGxlZCBgaHRtbC90ZXN0MS5odG1sLmluaWAgaW4gdGhlCi1gbWV0YWRhdGFgIGRp
cmVjdG9yeS4KLQotQW4gZXhhbXBsZSBvZiBhbiBleHBlY3RhdGlvbiBmaWxlIGlzOjoKLQotICBl
eGFtcGxlX2RlZmF1bHRfa2V5OiBleGFtcGxlX3ZhbHVlCi0KLSAgW2ZpbGVuYW1lLmh0bWxdCi0g
ICAgW3N1YnRlc3QxXQotICAgICAgZXhwZWN0ZWQ6IEZBSUwKLQotICAgIFtzdWJ0ZXN0Ml0KLSAg
ICAgIGV4cGVjdGVkOgotICAgICAgICBpZiBwbGF0Zm9ybSA9PSAnd2luJzogVElNRU9VVAotICAg
ICAgICBpZiBwbGF0Zm9ybSA9PSAnb3N4JzogRVJST1IKLSAgICAgICAgRkFJTAotCi0gIFtmaWxl
bmFtZS5odG1sP3F1ZXJ5PXNvbWV0aGluZ10KLSAgICBkaXNhYmxlZDogYnVnMTIzNDUKLQotVGhl
IGZpbGUgY29uc2lzdHMgb2YgdHdvIGVsZW1lbnRzLCBrZXktdmFsdWUgcGFpcnMgYW5kCi1zZWN0
aW9ucy4KLQotU2VjdGlvbnMgYXJlIGRlbGltaXRlZCBieSBoZWFkaW5ncyBlbmNsb3NlZCBpbiBz
cXVhcmUgYnJhY2tldHMuIEFueQotY2xvc2luZyBzcXVhcmUgYnJhY2tldCBpbiB0aGUgaGVhZGlu
ZyBpdHNlbGYgbXkgYmUgZXNjYXBlZCB3aXRoIGEKLWJhY2tzbGFzaC4gRWFjaCBzZWN0aW9uIG1h
eSB0aGVuIGNvbnRhaW4gYW55IG51bWJlciBvZiBrZXktdmFsdWUgcGFpcnMKLWZvbGxvd2VkIGJ5
IGFueSBudW1iZXIgb2Ygc3Vic2VjdGlvbnMuIFNvIHRoYXQgaXQgaXMgY2xlYXIgd2hpY2ggZGF0
YQotYmVsb25ncyB0byBlYWNoIHNlY3Rpb24gd2l0aG91dCB0aGUgdXNlIG9mIGVuZC1zZWN0aW9u
IG1hcmtlcnMsIHRoZQotZGF0YSBmb3IgZWFjaCBzZWN0aW9uIChpLmUuIHRoZSBrZXktdmFsdWUg
cGFpcnMgYW5kIHN1YnNlY3Rpb25zKSBtdXN0Ci1iZSBpbmRlbnRlZCB1c2luZyBzcGFjZXMuIElu
ZGVudGF0aW9uIG5lZWQgb25seSBiZSBjb25zaXN0ZW50LCBidXQKLXVzaW5nIHR3byBzcGFjZXMg
cGVyIGxldmVsIGlzIHJlY29tbWVuZGVkLgotCi1JbiBhIHRlc3QgZXhwZWN0YXRpb24gZmlsZSwg
ZWFjaCByZXNvdXJjZSBwcm92aWRlZCBieSB0aGUgZmlsZSBoYXMgYQotc2luZ2xlIHNlY3Rpb24s
IHdpdGggdGhlIHNlY3Rpb24gaGVhZGluZyBiZWluZyB0aGUgcGFydCBhZnRlciB0aGUgbGFzdAot
YC9gIGluIHRoZSB0ZXN0IHVybC4gVGVzdHMgdGhhdCBoYXZlIHN1YnNlY3Rpb25zIG1heSBoYXZl
IHN1YnNlY3Rpb25zCi1mb3IgdGhvc2Ugc3VidGVzdHMgaW4gd2hpY2ggdGhlIGhlYWRpbmcgaXMg
dGhlIG5hbWUgb2YgdGhlIHN1YnRlc3QuCi0KLVNpbXBsZSBrZXktdmFsdWUgcGFpcnMgYXJlIG9m
IHRoZSBmb3JtOjoKLQotICBrZXk6IHZhbHVlCi0KLU5vdGUgdGhhdCB1bmxpa2UgaW5pIGZpbGVz
LCBvbmx5IGA6YCBpcyBhIHZhbGlkIHNlcGFyYXRvcjsgYD1gIHdpbGwKLW5vdCB3b3JrIGFzIGV4
cGVjdGVkLiBLZXktdmFsdWUgcGFpcnMgbWF5IGFsc28gaGF2ZSBjb25kaXRpb25hbAotdmFsdWVz
IG9mIHRoZSBmb3JtOjoKLQotICBrZXk6Ci0gICAgaWYgY29uZGl0aW9uMTogdmFsdWUxCi0gICAg
aWYgY29uZGl0aW9uMjogdmFsdWUyCi0gICAgZGVmYXVsdAotCi1JbiB0aGlzIGNhc2UgZWFjaCBj
b25kaXRpb25hbCBpcyBldmFsdWF0ZWQgaW4gdHVybiBhbmQgdGhlIHZhbHVlIGlzCi10aGF0IG9u
IHRoZSByaWdodCBoYW5kIHNpZGUgb2YgdGhlIGZpcnN0IG1hdGNoaW5nIGNvbmRpdGlvbmFsLiBJ
biB0aGUKLWNhc2UgdGhhdCBubyBjb25kaXRpb24gbWF0Y2hlcywgdGhlIHVuY29uZGl0aW9uYWwg
ZGVmYXVsdCBpcyB1c2VkLiBJZgotbm8gY29uZGl0aW9uIG1hdGNoZXMgYW5kIG5vIGRlZmF1bHQg
aXMgcHJvdmlkZWQgaXQgaXMgZXF1aXZhbGVudCB0bwotdGhlIGtleSBub3QgYmVpbmcgcHJlc2Vu
dC4gQ29uZGl0aW9uYWxzIHVzZSBhIHNpbXBsZSBweXRob24tbGlrZSBleHByZXNzaW9uCi1sYW5n
dWFnZSBlLmcuOjoKLQotICBpZiBkZWJ1ZyBhbmQgKHBsYXRmb3JtID09ICJsaW51eCIgb3IgcGxh
dGZvcm0gPT0gIm9zeCIpOiBGQUlMCi0KLUZvciB0ZXN0IGV4cGVjdGF0aW9ucyB0aGUgYXZhaWxh
YmxlIHZhcmlhYmxlcyBhcmUgdGhvc2UgaW4gdGhlCi1gcnVuX2luZm9gIHdoaWNoIGZvciBkZXNr
dG9wIGFyZSBgdmVyc2lvbmAsIGBvc2AsIGBiaXRzYCwgYHByb2Nlc3NvcmAsCi1gZGVidWdgIGFu
ZCBgcHJvZHVjdGAuCi0KLUtleS12YWx1ZSBwYWlycyBzcGVjaWZpZWQgYXQgdGhlIHRvcCBsZXZl
bCBvZiB0aGUgZmlsZSBiZWZvcmUgYW55Ci1zZWN0aW9ucyBhcmUgc3BlY2lhbCBhcyB0aGV5IHBy
b3ZpZGUgZGVmYXVsdHMgZm9yIHRoZSByZXN0IG9mIHRoZSBmaWxlCi1lLmcuOjoKLQotICBrZXkx
OiB2YWx1ZTEKLQotICBbc2VjdGlvbiAxXQotICAgIGtleTI6IHZhbHVlMgotCi0gIFtzZWN0aW9u
IDJdCi0gICAga2V5MTogdmFsdWUzCi0KLUluIHRoaXMgY2FzZSwgaW5zaWRlIHNlY3Rpb24gMSwg
YGtleTFgIHdvdWxkIGhhdmUgdGhlIHZhbHVlIGB2YWx1ZTFgCi1hbmQgYGtleTJgIHRoZSB2YWx1
ZSBgdmFsdWUyYCB3aGVyZWFzIGluIHNlY3Rpb24gMiBga2V5MWAgd291bGQgaGF2ZQotdGhlIHZh
bHVlIGB2YWx1ZTNgIGFuZCBga2V5MmAgd291bGQgYmUgdW5kZWZpbmVkLgotCi1UaGUgd2ViLXBs
YXRmb3JtLXRlc3QgaGFybmVzcyBrbm93cyBhYm91dCBzZXZlcmFsIGtleXM6Ci0KLWBleHBlY3Rl
ZGAKLSAgTXVzdCBldmFsdWF0ZSB0byBhIHBvc3NpYmxlIHRlc3Qgc3RhdHVzIGluZGljYXRpbmcg
dGhlIGV4cGVjdGVkCi0gIHJlc3VsdCBvZiB0aGUgdGVzdC4gVGhlIGltcGxpY2l0IGRlZmF1bHQg
aXMgUEFTUyBvciBPSyB3aGVuIHRoZQotICBmaWVsZCBpc24ndCBwcmVzZW50LgotCi1gZGlzYWJs
ZWRgCi0gIEFueSB2YWx1ZSBpbmRpY2F0ZXMgdGhhdCB0aGUgdGVzdCBpcyBkaXNhYmxlZC4KLQot
YHJlZnR5cGVgCi0gIFRoZSB0eXBlIG9mIGNvbXBhcmlzb24gZm9yIHJlZnRlc3RzOyBlaXRoZXIg
YD09YCBvciBgIT1gLgotCi1gcmVmdXJsYAotICBUaGUgcmVmZXJlbmNlIHVybCBmb3IgcmVmdGVz
dHMuCisgICBkb2NzL3VzYWdlCisgICBkb2NzL2V4cGVjdGF0aW9uCisgICBkb2NzL2Rlc2lnbgor
ICAgZG9jcy9pbnRlcm5hbHMKIAogLi4gX2B3ZWItcGxhdGZvcm0tdGVzdHMgdGVzdHN1aXRlYDog
aHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L2RvY3MvTWFrZWZpbGUgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCBkMDJiNmM1ZTdjNGYyNjcwMzFiZDM5MDEzYzM4ODRhYjU4NTMzOGY4Li4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvTWFrZWZpbGUK
KysrIC9kZXYvbnVsbApAQCAtMSwxNzcgKzAsMCBAQAotIyBNYWtlZmlsZSBmb3IgU3BoaW54IGRv
Y3VtZW50YXRpb24KLSMKLQotIyBZb3UgY2FuIHNldCB0aGVzZSB2YXJpYWJsZXMgZnJvbSB0aGUg
Y29tbWFuZCBsaW5lLgotU1BISU5YT1BUUyAgICA9Ci1TUEhJTlhCVUlMRCAgID0gc3BoaW54LWJ1
aWxkCi1QQVBFUiAgICAgICAgID0KLUJVSUxERElSICAgICAgPSBfYnVpbGQKLQotIyBVc2VyLWZy
aWVuZGx5IGNoZWNrIGZvciBzcGhpbngtYnVpbGQKLWlmZXEgKCQoc2hlbGwgd2hpY2ggJChTUEhJ
TlhCVUlMRCkgPi9kZXYvbnVsbCAyPiYxOyBlY2hvICQkPyksIDEpCi0kKGVycm9yIFRoZSAnJChT
UEhJTlhCVUlMRCknIGNvbW1hbmQgd2FzIG5vdCBmb3VuZC4gTWFrZSBzdXJlIHlvdSBoYXZlIFNw
aGlueCBpbnN0YWxsZWQsIHRoZW4gc2V0IHRoZSBTUEhJTlhCVUlMRCBlbnZpcm9ubWVudCB2YXJp
YWJsZSB0byBwb2ludCB0byB0aGUgZnVsbCBwYXRoIG9mIHRoZSAnJChTUEhJTlhCVUlMRCknIGV4
ZWN1dGFibGUuIEFsdGVybmF0aXZlbHkgeW91IGNhbiBhZGQgdGhlIGRpcmVjdG9yeSB3aXRoIHRo
ZSBleGVjdXRhYmxlIHRvIHlvdXIgUEFUSC4gSWYgeW91IGRvbid0IGhhdmUgU3BoaW54IGluc3Rh
bGxlZCwgZ3JhYiBpdCBmcm9tIGh0dHA6Ly9zcGhpbngtZG9jLm9yZy8pCi1lbmRpZgotCi0jIElu
dGVybmFsIHZhcmlhYmxlcy4KLVBBUEVST1BUX2E0ICAgICA9IC1EIGxhdGV4X3BhcGVyX3NpemU9
YTQKLVBBUEVST1BUX2xldHRlciA9IC1EIGxhdGV4X3BhcGVyX3NpemU9bGV0dGVyCi1BTExTUEhJ
TlhPUFRTICAgPSAtZCAkKEJVSUxERElSKS9kb2N0cmVlcyAkKFBBUEVST1BUXyQoUEFQRVIpKSAk
KFNQSElOWE9QVFMpIC4KLSMgdGhlIGkxOG4gYnVpbGRlciBjYW5ub3Qgc2hhcmUgdGhlIGVudmly
b25tZW50IGFuZCBkb2N0cmVlcyB3aXRoIHRoZSBvdGhlcnMKLUkxOE5TUEhJTlhPUFRTICA9ICQo
UEFQRVJPUFRfJChQQVBFUikpICQoU1BISU5YT1BUUykgLgotCi0uUEhPTlk6IGhlbHAgY2xlYW4g
aHRtbCBkaXJodG1sIHNpbmdsZWh0bWwgcGlja2xlIGpzb24gaHRtbGhlbHAgcXRoZWxwIGRldmhl
bHAgZXB1YiBsYXRleCBsYXRleHBkZiB0ZXh0IG1hbiBjaGFuZ2VzIGxpbmtjaGVjayBkb2N0ZXN0
IGdldHRleHQKLQotaGVscDoKLQlAZWNobyAiUGxlYXNlIHVzZSBcYG1ha2UgPHRhcmdldD4nIHdo
ZXJlIDx0YXJnZXQ+IGlzIG9uZSBvZiIKLQlAZWNobyAiICBodG1sICAgICAgIHRvIG1ha2Ugc3Rh
bmRhbG9uZSBIVE1MIGZpbGVzIgotCUBlY2hvICIgIGRpcmh0bWwgICAgdG8gbWFrZSBIVE1MIGZp
bGVzIG5hbWVkIGluZGV4Lmh0bWwgaW4gZGlyZWN0b3JpZXMiCi0JQGVjaG8gIiAgc2luZ2xlaHRt
bCB0byBtYWtlIGEgc2luZ2xlIGxhcmdlIEhUTUwgZmlsZSIKLQlAZWNobyAiICBwaWNrbGUgICAg
IHRvIG1ha2UgcGlja2xlIGZpbGVzIgotCUBlY2hvICIgIGpzb24gICAgICAgdG8gbWFrZSBKU09O
IGZpbGVzIgotCUBlY2hvICIgIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVzIGFuZCBhIEhU
TUwgaGVscCBwcm9qZWN0IgotCUBlY2hvICIgIHF0aGVscCAgICAgdG8gbWFrZSBIVE1MIGZpbGVz
IGFuZCBhIHF0aGVscCBwcm9qZWN0IgotCUBlY2hvICIgIGRldmhlbHAgICAgdG8gbWFrZSBIVE1M
IGZpbGVzIGFuZCBhIERldmhlbHAgcHJvamVjdCIKLQlAZWNobyAiICBlcHViICAgICAgIHRvIG1h
a2UgYW4gZXB1YiIKLQlAZWNobyAiICBsYXRleCAgICAgIHRvIG1ha2UgTGFUZVggZmlsZXMsIHlv
dSBjYW4gc2V0IFBBUEVSPWE0IG9yIFBBUEVSPWxldHRlciIKLQlAZWNobyAiICBsYXRleHBkZiAg
IHRvIG1ha2UgTGFUZVggZmlsZXMgYW5kIHJ1biB0aGVtIHRocm91Z2ggcGRmbGF0ZXgiCi0JQGVj
aG8gIiAgbGF0ZXhwZGZqYSB0byBtYWtlIExhVGVYIGZpbGVzIGFuZCBydW4gdGhlbSB0aHJvdWdo
IHBsYXRleC9kdmlwZGZteCIKLQlAZWNobyAiICB0ZXh0ICAgICAgIHRvIG1ha2UgdGV4dCBmaWxl
cyIKLQlAZWNobyAiICBtYW4gICAgICAgIHRvIG1ha2UgbWFudWFsIHBhZ2VzIgotCUBlY2hvICIg
IHRleGluZm8gICAgdG8gbWFrZSBUZXhpbmZvIGZpbGVzIgotCUBlY2hvICIgIGluZm8gICAgICAg
dG8gbWFrZSBUZXhpbmZvIGZpbGVzIGFuZCBydW4gdGhlbSB0aHJvdWdoIG1ha2VpbmZvIgotCUBl
Y2hvICIgIGdldHRleHQgICAgdG8gbWFrZSBQTyBtZXNzYWdlIGNhdGFsb2dzIgotCUBlY2hvICIg
IGNoYW5nZXMgICAgdG8gbWFrZSBhbiBvdmVydmlldyBvZiBhbGwgY2hhbmdlZC9hZGRlZC9kZXBy
ZWNhdGVkIGl0ZW1zIgotCUBlY2hvICIgIHhtbCAgICAgICAgdG8gbWFrZSBEb2N1dGlscy1uYXRp
dmUgWE1MIGZpbGVzIgotCUBlY2hvICIgIHBzZXVkb3htbCAgdG8gbWFrZSBwc2V1ZG94bWwtWE1M
IGZpbGVzIGZvciBkaXNwbGF5IHB1cnBvc2VzIgotCUBlY2hvICIgIGxpbmtjaGVjayAgdG8gY2hl
Y2sgYWxsIGV4dGVybmFsIGxpbmtzIGZvciBpbnRlZ3JpdHkiCi0JQGVjaG8gIiAgZG9jdGVzdCAg
ICB0byBydW4gYWxsIGRvY3Rlc3RzIGVtYmVkZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIChpZiBl
bmFibGVkKSIKLQotY2xlYW46Ci0Jcm0gLXJmICQoQlVJTERESVIpLyoKLQotaHRtbDoKLQkkKFNQ
SElOWEJVSUxEKSAtYiBodG1sICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvaHRtbAotCUBl
Y2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJChCVUlM
RERJUikvaHRtbC4iCi0KLWRpcmh0bWw6Ci0JJChTUEhJTlhCVUlMRCkgLWIgZGlyaHRtbCAkKEFM
TFNQSElOWE9QVFMpICQoQlVJTERESVIpL2Rpcmh0bWwKLQlAZWNobwotCUBlY2hvICJCdWlsZCBm
aW5pc2hlZC4gVGhlIEhUTUwgcGFnZXMgYXJlIGluICQoQlVJTERESVIpL2Rpcmh0bWwuIgotCi1z
aW5nbGVodG1sOgotCSQoU1BISU5YQlVJTEQpIC1iIHNpbmdsZWh0bWwgJChBTExTUEhJTlhPUFRT
KSAkKEJVSUxERElSKS9zaW5nbGVodG1sCi0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQu
IFRoZSBIVE1MIHBhZ2UgaXMgaW4gJChCVUlMRERJUikvc2luZ2xlaHRtbC4iCi0KLXBpY2tsZToK
LQkkKFNQSElOWEJVSUxEKSAtYiBwaWNrbGUgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9w
aWNrbGUKLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcHJvY2Vz
cyB0aGUgcGlja2xlIGZpbGVzLiIKLQotanNvbjoKLQkkKFNQSElOWEJVSUxEKSAtYiBqc29uICQo
QUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvanNvbgotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZp
bmlzaGVkOyBub3cgeW91IGNhbiBwcm9jZXNzIHRoZSBKU09OIGZpbGVzLiIKLQotaHRtbGhlbHA6
Ci0JJChTUEhJTlhCVUlMRCkgLWIgaHRtbGhlbHAgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElS
KS9odG1saGVscAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBy
dW4gSFRNTCBIZWxwIFdvcmtzaG9wIHdpdGggdGhlIiBcCi0JICAgICAgIi5oaHAgcHJvamVjdCBm
aWxlIGluICQoQlVJTERESVIpL2h0bWxoZWxwLiIKLQotcXRoZWxwOgotCSQoU1BISU5YQlVJTEQp
IC1iIHF0aGVscCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3F0aGVscAotCUBlY2hvCi0J
QGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyBub3cgeW91IGNhbiBydW4gInFjb2xsZWN0aW9uZ2VuZXJh
dG9yIiB3aXRoIHRoZSIgXAotCSAgICAgICIucWhjcCBwcm9qZWN0IGZpbGUgaW4gJChCVUlMRERJ
UikvcXRoZWxwLCBsaWtlIHRoaXM6IgotCUBlY2hvICIjIHFjb2xsZWN0aW9uZ2VuZXJhdG9yICQo
QlVJTERESVIpL3F0aGVscC93cHRydW5uZXIucWhjcCIKLQlAZWNobyAiVG8gdmlldyB0aGUgaGVs
cCBmaWxlOiIKLQlAZWNobyAiIyBhc3Npc3RhbnQgLWNvbGxlY3Rpb25GaWxlICQoQlVJTERESVIp
L3F0aGVscC93cHRydW5uZXIucWhjIgotCi1kZXZoZWxwOgotCSQoU1BISU5YQlVJTEQpIC1iIGRl
dmhlbHAgJChBTExTUEhJTlhPUFRTKSAkKEJVSUxERElSKS9kZXZoZWxwCi0JQGVjaG8KLQlAZWNo
byAiQnVpbGQgZmluaXNoZWQuIgotCUBlY2hvICJUbyB2aWV3IHRoZSBoZWxwIGZpbGU6IgotCUBl
Y2hvICIjIG1rZGlyIC1wICQkSE9NRS8ubG9jYWwvc2hhcmUvZGV2aGVscC93cHRydW5uZXIiCi0J
QGVjaG8gIiMgbG4gLXMgJChCVUlMRERJUikvZGV2aGVscCAkJEhPTUUvLmxvY2FsL3NoYXJlL2Rl
dmhlbHAvd3B0cnVubmVyIgotCUBlY2hvICIjIGRldmhlbHAiCi0KLWVwdWI6Ci0JJChTUEhJTlhC
VUlMRCkgLWIgZXB1YiAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2VwdWIKLQlAZWNobwot
CUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIGVwdWIgZmlsZSBpcyBpbiAkKEJVSUxERElSKS9l
cHViLiIKLQotbGF0ZXg6Ci0JJChTUEhJTlhCVUlMRCkgLWIgbGF0ZXggJChBTExTUEhJTlhPUFRT
KSAkKEJVSUxERElSKS9sYXRleAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkOyB0aGUg
TGFUZVggZmlsZXMgYXJlIGluICQoQlVJTERESVIpL2xhdGV4LiIKLQlAZWNobyAiUnVuIFxgbWFr
ZScgaW4gdGhhdCBkaXJlY3RvcnkgdG8gcnVuIHRoZXNlIHRocm91Z2ggKHBkZilsYXRleCIgXAot
CSAgICAgICIodXNlIFxgbWFrZSBsYXRleHBkZicgaGVyZSB0byBkbyB0aGF0IGF1dG9tYXRpY2Fs
bHkpLiIKLQotbGF0ZXhwZGY6Ci0JJChTUEhJTlhCVUlMRCkgLWIgbGF0ZXggJChBTExTUEhJTlhP
UFRTKSAkKEJVSUxERElSKS9sYXRleAotCUBlY2hvICJSdW5uaW5nIExhVGVYIGZpbGVzIHRocm91
Z2ggcGRmbGF0ZXguLi4iCi0JJChNQUtFKSAtQyAkKEJVSUxERElSKS9sYXRleCBhbGwtcGRmCi0J
QGVjaG8gInBkZmxhdGV4IGZpbmlzaGVkOyB0aGUgUERGIGZpbGVzIGFyZSBpbiAkKEJVSUxERElS
KS9sYXRleC4iCi0KLWxhdGV4cGRmamE6Ci0JJChTUEhJTlhCVUlMRCkgLWIgbGF0ZXggJChBTExT
UEhJTlhPUFRTKSAkKEJVSUxERElSKS9sYXRleAotCUBlY2hvICJSdW5uaW5nIExhVGVYIGZpbGVz
IHRocm91Z2ggcGxhdGV4IGFuZCBkdmlwZGZteC4uLiIKLQkkKE1BS0UpIC1DICQoQlVJTERESVIp
L2xhdGV4IGFsbC1wZGYtamEKLQlAZWNobyAicGRmbGF0ZXggZmluaXNoZWQ7IHRoZSBQREYgZmls
ZXMgYXJlIGluICQoQlVJTERESVIpL2xhdGV4LiIKLQotdGV4dDoKLQkkKFNQSElOWEJVSUxEKSAt
YiB0ZXh0ICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvdGV4dAotCUBlY2hvCi0JQGVjaG8g
IkJ1aWxkIGZpbmlzaGVkLiBUaGUgdGV4dCBmaWxlcyBhcmUgaW4gJChCVUlMRERJUikvdGV4dC4i
Ci0KLW1hbjoKLQkkKFNQSElOWEJVSUxEKSAtYiBtYW4gJChBTExTUEhJTlhPUFRTKSAkKEJVSUxE
RElSKS9tYW4KLQlAZWNobwotCUBlY2hvICJCdWlsZCBmaW5pc2hlZC4gVGhlIG1hbnVhbCBwYWdl
cyBhcmUgaW4gJChCVUlMRERJUikvbWFuLiIKLQotdGV4aW5mbzoKLQkkKFNQSElOWEJVSUxEKSAt
YiB0ZXhpbmZvICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvdGV4aW5mbwotCUBlY2hvCi0J
QGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgVGV4aW5mbyBmaWxlcyBhcmUgaW4gJChCVUlMRERJ
UikvdGV4aW5mby4iCi0JQGVjaG8gIlJ1biBcYG1ha2UnIGluIHRoYXQgZGlyZWN0b3J5IHRvIHJ1
biB0aGVzZSB0aHJvdWdoIG1ha2VpbmZvIiBcCi0JICAgICAgIih1c2UgXGBtYWtlIGluZm8nIGhl
cmUgdG8gZG8gdGhhdCBhdXRvbWF0aWNhbGx5KS4iCi0KLWluZm86Ci0JJChTUEhJTlhCVUlMRCkg
LWIgdGV4aW5mbyAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL3RleGluZm8KLQlAZWNobyAi
UnVubmluZyBUZXhpbmZvIGZpbGVzIHRocm91Z2ggbWFrZWluZm8uLi4iCi0JbWFrZSAtQyAkKEJV
SUxERElSKS90ZXhpbmZvIGluZm8KLQlAZWNobyAibWFrZWluZm8gZmluaXNoZWQ7IHRoZSBJbmZv
IGZpbGVzIGFyZSBpbiAkKEJVSUxERElSKS90ZXhpbmZvLiIKLQotZ2V0dGV4dDoKLQkkKFNQSElO
WEJVSUxEKSAtYiBnZXR0ZXh0ICQoSTE4TlNQSElOWE9QVFMpICQoQlVJTERESVIpL2xvY2FsZQot
CUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgbWVzc2FnZSBjYXRhbG9ncyBhcmUg
aW4gJChCVUlMRERJUikvbG9jYWxlLiIKLQotY2hhbmdlczoKLQkkKFNQSElOWEJVSUxEKSAtYiBj
aGFuZ2VzICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvY2hhbmdlcwotCUBlY2hvCi0JQGVj
aG8gIlRoZSBvdmVydmlldyBmaWxlIGlzIGluICQoQlVJTERESVIpL2NoYW5nZXMuIgotCi1saW5r
Y2hlY2s6Ci0JJChTUEhJTlhCVUlMRCkgLWIgbGlua2NoZWNrICQoQUxMU1BISU5YT1BUUykgJChC
VUlMRERJUikvbGlua2NoZWNrCi0JQGVjaG8KLQlAZWNobyAiTGluayBjaGVjayBjb21wbGV0ZTsg
bG9vayBmb3IgYW55IGVycm9ycyBpbiB0aGUgYWJvdmUgb3V0cHV0ICIgXAotCSAgICAgICJvciBp
biAkKEJVSUxERElSKS9saW5rY2hlY2svb3V0cHV0LnR4dC4iCi0KLWRvY3Rlc3Q6Ci0JJChTUEhJ
TlhCVUlMRCkgLWIgZG9jdGVzdCAkKEFMTFNQSElOWE9QVFMpICQoQlVJTERESVIpL2RvY3Rlc3QK
LQlAZWNobyAiVGVzdGluZyBvZiBkb2N0ZXN0cyBpbiB0aGUgc291cmNlcyBmaW5pc2hlZCwgbG9v
ayBhdCB0aGUgIiBcCi0JICAgICAgInJlc3VsdHMgaW4gJChCVUlMRERJUikvZG9jdGVzdC9vdXRw
dXQudHh0LiIKLQoteG1sOgotCSQoU1BISU5YQlVJTEQpIC1iIHhtbCAkKEFMTFNQSElOWE9QVFMp
ICQoQlVJTERESVIpL3htbAotCUBlY2hvCi0JQGVjaG8gIkJ1aWxkIGZpbmlzaGVkLiBUaGUgWE1M
IGZpbGVzIGFyZSBpbiAkKEJVSUxERElSKS94bWwuIgotCi1wc2V1ZG94bWw6Ci0JJChTUEhJTlhC
VUlMRCkgLWIgcHNldWRveG1sICQoQUxMU1BISU5YT1BUUykgJChCVUlMRERJUikvcHNldWRveG1s
Ci0JQGVjaG8KLQlAZWNobyAiQnVpbGQgZmluaXNoZWQuIFRoZSBwc2V1ZG8tWE1MIGZpbGVzIGFy
ZSBpbiAkKEJVSUxERElSKS9wc2V1ZG94bWwuIgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy9jb25mLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvZG9jcy9jb25mLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmQ0ZmQ1
YWI5NTFiNDQ2MzYyODk1OTcxOTJiY2YzYjg4NjliODljLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvY29uZi5weQorKysgL2Rldi9udWxsCkBA
IC0xLDI2NyArMCwwIEBACi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotIwotIyB3cHRydW5uZXIg
ZG9jdW1lbnRhdGlvbiBidWlsZCBjb25maWd1cmF0aW9uIGZpbGUsIGNyZWF0ZWQgYnkKLSMgc3Bo
aW54LXF1aWNrc3RhcnQgb24gTW9uIE1heSAxOSAxODoxNDoyMCAyMDE0LgotIwotIyBUaGlzIGZp
bGUgaXMgZXhlY2ZpbGUoKWQgd2l0aCB0aGUgY3VycmVudCBkaXJlY3Rvcnkgc2V0IHRvIGl0cwot
IyBjb250YWluaW5nIGRpci4KLSMKLSMgTm90ZSB0aGF0IG5vdCBhbGwgcG9zc2libGUgY29uZmln
dXJhdGlvbiB2YWx1ZXMgYXJlIHByZXNlbnQgaW4gdGhpcwotIyBhdXRvZ2VuZXJhdGVkIGZpbGUu
Ci0jCi0jIEFsbCBjb25maWd1cmF0aW9uIHZhbHVlcyBoYXZlIGEgZGVmYXVsdDsgdmFsdWVzIHRo
YXQgYXJlIGNvbW1lbnRlZCBvdXQKLSMgc2VydmUgdG8gc2hvdyB0aGUgZGVmYXVsdC4KLQotI2lt
cG9ydCBzeXMKLSNpbXBvcnQgb3MKLQotIyBJZiBleHRlbnNpb25zIChvciBtb2R1bGVzIHRvIGRv
Y3VtZW50IHdpdGggYXV0b2RvYykgYXJlIGluIGFub3RoZXIgZGlyZWN0b3J5LAotIyBhZGQgdGhl
c2UgZGlyZWN0b3JpZXMgdG8gc3lzLnBhdGggaGVyZS4gSWYgdGhlIGRpcmVjdG9yeSBpcyByZWxh
dGl2ZSB0byB0aGUKLSMgZG9jdW1lbnRhdGlvbiByb290LCB1c2Ugb3MucGF0aC5hYnNwYXRoIHRv
IG1ha2UgaXQgYWJzb2x1dGUsIGxpa2Ugc2hvd24gaGVyZS4KLSNzeXMucGF0aC5pbnNlcnQoMCwg
b3MucGF0aC5hYnNwYXRoKCcuJykpCi0KLSMgLS0gR2VuZXJhbCBjb25maWd1cmF0aW9uIC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0jIElmIHlvdXIg
ZG9jdW1lbnRhdGlvbiBuZWVkcyBhIG1pbmltYWwgU3BoaW54IHZlcnNpb24sIHN0YXRlIGl0IGhl
cmUuCi0jbmVlZHNfc3BoaW54ID0gJzEuMCcKLQotIyBBZGQgYW55IFNwaGlueCBleHRlbnNpb24g
bW9kdWxlIG5hbWVzIGhlcmUsIGFzIHN0cmluZ3MuIFRoZXkgY2FuIGJlCi0jIGV4dGVuc2lvbnMg
Y29taW5nIHdpdGggU3BoaW54IChuYW1lZCAnc3BoaW54LmV4dC4qJykgb3IgeW91ciBjdXN0b20K
LSMgb25lcy4KLWV4dGVuc2lvbnMgPSBbCi0gICAgJ3NwaGlueC5leHQuYXV0b2RvYycsCi0gICAg
J3NwaGlueC5leHQuaW50ZXJzcGhpbngnLAotICAgICdzcGhpbnguZXh0LnZpZXdjb2RlJywKLV0K
LQotIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiB0ZW1wbGF0ZXMgaGVyZSwgcmVsYXRpdmUg
dG8gdGhpcyBkaXJlY3RvcnkuCi10ZW1wbGF0ZXNfcGF0aCA9IFsnX3RlbXBsYXRlcyddCi0KLSMg
VGhlIHN1ZmZpeCBvZiBzb3VyY2UgZmlsZW5hbWVzLgotc291cmNlX3N1ZmZpeCA9ICcucnN0Jwot
Ci0jIFRoZSBlbmNvZGluZyBvZiBzb3VyY2UgZmlsZXMuCi0jc291cmNlX2VuY29kaW5nID0gJ3V0
Zi04LXNpZycKLQotIyBUaGUgbWFzdGVyIHRvY3RyZWUgZG9jdW1lbnQuCi1tYXN0ZXJfZG9jID0g
J2luZGV4JwotCi0jIEdlbmVyYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHByb2plY3QuCi1wcm9q
ZWN0ID0gdSd3cHRydW5uZXInCi1jb3B5cmlnaHQgPSB1JycKLQotIyBUaGUgdmVyc2lvbiBpbmZv
IGZvciB0aGUgcHJvamVjdCB5b3UncmUgZG9jdW1lbnRpbmcsIGFjdHMgYXMgcmVwbGFjZW1lbnQg
Zm9yCi0jIHx2ZXJzaW9ufCBhbmQgfHJlbGVhc2V8LCBhbHNvIHVzZWQgaW4gdmFyaW91cyBvdGhl
ciBwbGFjZXMgdGhyb3VnaG91dCB0aGUKLSMgYnVpbHQgZG9jdW1lbnRzLgotIwotIyBUaGUgc2hv
cnQgWC5ZIHZlcnNpb24uCi12ZXJzaW9uID0gJzAuMycKLSMgVGhlIGZ1bGwgdmVyc2lvbiwgaW5j
bHVkaW5nIGFscGhhL2JldGEvcmMgdGFncy4KLXJlbGVhc2UgPSAnMC4zJwotCi0jIFRoZSBsYW5n
dWFnZSBmb3IgY29udGVudCBhdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueC4gUmVmZXIgdG8gZG9jdW1l
bnRhdGlvbgotIyBmb3IgYSBsaXN0IG9mIHN1cHBvcnRlZCBsYW5ndWFnZXMuCi0jbGFuZ3VhZ2Ug
PSBOb25lCi0KLSMgVGhlcmUgYXJlIHR3byBvcHRpb25zIGZvciByZXBsYWNpbmcgfHRvZGF5fDog
ZWl0aGVyLCB5b3Ugc2V0IHRvZGF5IHRvIHNvbWUKLSMgbm9uLWZhbHNlIHZhbHVlLCB0aGVuIGl0
IGlzIHVzZWQ6Ci0jdG9kYXkgPSAnJwotIyBFbHNlLCB0b2RheV9mbXQgaXMgdXNlZCBhcyB0aGUg
Zm9ybWF0IGZvciBhIHN0cmZ0aW1lIGNhbGwuCi0jdG9kYXlfZm10ID0gJyVCICVkLCAlWScKLQot
IyBMaXN0IG9mIHBhdHRlcm5zLCByZWxhdGl2ZSB0byBzb3VyY2UgZGlyZWN0b3J5LCB0aGF0IG1h
dGNoIGZpbGVzIGFuZAotIyBkaXJlY3RvcmllcyB0byBpZ25vcmUgd2hlbiBsb29raW5nIGZvciBz
b3VyY2UgZmlsZXMuCi1leGNsdWRlX3BhdHRlcm5zID0gWydfYnVpbGQnXQotCi0jIFRoZSByZVNU
IGRlZmF1bHQgcm9sZSAodXNlZCBmb3IgdGhpcyBtYXJrdXA6IGB0ZXh0YCkgdG8gdXNlIGZvciBh
bGwKLSMgZG9jdW1lbnRzLgotI2RlZmF1bHRfcm9sZSA9IE5vbmUKLQotIyBJZiB0cnVlLCAnKCkn
IHdpbGwgYmUgYXBwZW5kZWQgdG8gOmZ1bmM6IGV0Yy4gY3Jvc3MtcmVmZXJlbmNlIHRleHQuCi0j
YWRkX2Z1bmN0aW9uX3BhcmVudGhlc2VzID0gVHJ1ZQotCi0jIElmIHRydWUsIHRoZSBjdXJyZW50
IG1vZHVsZSBuYW1lIHdpbGwgYmUgcHJlcGVuZGVkIHRvIGFsbCBkZXNjcmlwdGlvbgotIyB1bml0
IHRpdGxlcyAoc3VjaCBhcyAuLiBmdW5jdGlvbjo6KS4KLSNhZGRfbW9kdWxlX25hbWVzID0gVHJ1
ZQotCi0jIElmIHRydWUsIHNlY3Rpb25hdXRob3IgYW5kIG1vZHVsZWF1dGhvciBkaXJlY3RpdmVz
IHdpbGwgYmUgc2hvd24gaW4gdGhlCi0jIG91dHB1dC4gVGhleSBhcmUgaWdub3JlZCBieSBkZWZh
dWx0LgotI3Nob3dfYXV0aG9ycyA9IEZhbHNlCi0KLSMgVGhlIG5hbWUgb2YgdGhlIFB5Z21lbnRz
IChzeW50YXggaGlnaGxpZ2h0aW5nKSBzdHlsZSB0byB1c2UuCi1weWdtZW50c19zdHlsZSA9ICdz
cGhpbngnCi0KLSMgQSBsaXN0IG9mIGlnbm9yZWQgcHJlZml4ZXMgZm9yIG1vZHVsZSBpbmRleCBz
b3J0aW5nLgotI21vZGluZGV4X2NvbW1vbl9wcmVmaXggPSBbXQotCi0jIElmIHRydWUsIGtlZXAg
d2FybmluZ3MgYXMgInN5c3RlbSBtZXNzYWdlIiBwYXJhZ3JhcGhzIGluIHRoZSBidWlsdCBkb2N1
bWVudHMuCi0ja2VlcF93YXJuaW5ncyA9IEZhbHNlCi0KLQotIyAtLSBPcHRpb25zIGZvciBIVE1M
IG91dHB1dCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0K
LSMgVGhlIHRoZW1lIHRvIHVzZSBmb3IgSFRNTCBhbmQgSFRNTCBIZWxwIHBhZ2VzLiAgU2VlIHRo
ZSBkb2N1bWVudGF0aW9uIGZvcgotIyBhIGxpc3Qgb2YgYnVpbHRpbiB0aGVtZXMuCi1odG1sX3Ro
ZW1lID0gJ2RlZmF1bHQnCi0KLSMgVGhlbWUgb3B0aW9ucyBhcmUgdGhlbWUtc3BlY2lmaWMgYW5k
IGN1c3RvbWl6ZSB0aGUgbG9vayBhbmQgZmVlbCBvZiBhIHRoZW1lCi0jIGZ1cnRoZXIuICBGb3Ig
YSBsaXN0IG9mIG9wdGlvbnMgYXZhaWxhYmxlIGZvciBlYWNoIHRoZW1lLCBzZWUgdGhlCi0jIGRv
Y3VtZW50YXRpb24uCi0jaHRtbF90aGVtZV9vcHRpb25zID0ge30KLQotIyBBZGQgYW55IHBhdGhz
IHRoYXQgY29udGFpbiBjdXN0b20gdGhlbWVzIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0
b3J5LgotI2h0bWxfdGhlbWVfcGF0aCA9IFtdCi0KLSMgVGhlIG5hbWUgZm9yIHRoaXMgc2V0IG9m
IFNwaGlueCBkb2N1bWVudHMuICBJZiBOb25lLCBpdCBkZWZhdWx0cyB0bwotIyAiPHByb2plY3Q+
IHY8cmVsZWFzZT4gZG9jdW1lbnRhdGlvbiIuCi0jaHRtbF90aXRsZSA9IE5vbmUKLQotIyBBIHNo
b3J0ZXIgdGl0bGUgZm9yIHRoZSBuYXZpZ2F0aW9uIGJhci4gIERlZmF1bHQgaXMgdGhlIHNhbWUg
YXMgaHRtbF90aXRsZS4KLSNodG1sX3Nob3J0X3RpdGxlID0gTm9uZQotCi0jIFRoZSBuYW1lIG9m
IGFuIGltYWdlIGZpbGUgKHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0b3J5KSB0byBwbGFjZSBhdCB0
aGUgdG9wCi0jIG9mIHRoZSBzaWRlYmFyLgotI2h0bWxfbG9nbyA9IE5vbmUKLQotIyBUaGUgbmFt
ZSBvZiBhbiBpbWFnZSBmaWxlICh3aXRoaW4gdGhlIHN0YXRpYyBwYXRoKSB0byB1c2UgYXMgZmF2
aWNvbiBvZiB0aGUKLSMgZG9jcy4gIFRoaXMgZmlsZSBzaG91bGQgYmUgYSBXaW5kb3dzIGljb24g
ZmlsZSAoLmljbykgYmVpbmcgMTZ4MTYgb3IgMzJ4MzIKLSMgcGl4ZWxzIGxhcmdlLgotI2h0bWxf
ZmF2aWNvbiA9IE5vbmUKLQotIyBBZGQgYW55IHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gc3Rh
dGljIGZpbGVzIChzdWNoIGFzIHN0eWxlIHNoZWV0cykgaGVyZSwKLSMgcmVsYXRpdmUgdG8gdGhp
cyBkaXJlY3RvcnkuIFRoZXkgYXJlIGNvcGllZCBhZnRlciB0aGUgYnVpbHRpbiBzdGF0aWMgZmls
ZXMsCi0jIHNvIGEgZmlsZSBuYW1lZCAiZGVmYXVsdC5jc3MiIHdpbGwgb3ZlcndyaXRlIHRoZSBi
dWlsdGluICJkZWZhdWx0LmNzcyIuCi1odG1sX3N0YXRpY19wYXRoID0gWydfc3RhdGljJ10KLQot
IyBBZGQgYW55IGV4dHJhIHBhdGhzIHRoYXQgY29udGFpbiBjdXN0b20gZmlsZXMgKHN1Y2ggYXMg
cm9ib3RzLnR4dCBvcgotIyAuaHRhY2Nlc3MpIGhlcmUsIHJlbGF0aXZlIHRvIHRoaXMgZGlyZWN0
b3J5LiBUaGVzZSBmaWxlcyBhcmUgY29waWVkCi0jIGRpcmVjdGx5IHRvIHRoZSByb290IG9mIHRo
ZSBkb2N1bWVudGF0aW9uLgotI2h0bWxfZXh0cmFfcGF0aCA9IFtdCi0KLSMgSWYgbm90ICcnLCBh
ICdMYXN0IHVwZGF0ZWQgb246JyB0aW1lc3RhbXAgaXMgaW5zZXJ0ZWQgYXQgZXZlcnkgcGFnZSBi
b3R0b20sCi0jIHVzaW5nIHRoZSBnaXZlbiBzdHJmdGltZSBmb3JtYXQuCi0jaHRtbF9sYXN0X3Vw
ZGF0ZWRfZm10ID0gJyViICVkLCAlWScKLQotIyBJZiB0cnVlLCBTbWFydHlQYW50cyB3aWxsIGJl
IHVzZWQgdG8gY29udmVydCBxdW90ZXMgYW5kIGRhc2hlcyB0bwotIyB0eXBvZ3JhcGhpY2FsbHkg
Y29ycmVjdCBlbnRpdGllcy4KLSNodG1sX3VzZV9zbWFydHlwYW50cyA9IFRydWUKLQotIyBDdXN0
b20gc2lkZWJhciB0ZW1wbGF0ZXMsIG1hcHMgZG9jdW1lbnQgbmFtZXMgdG8gdGVtcGxhdGUgbmFt
ZXMuCi0jaHRtbF9zaWRlYmFycyA9IHt9Ci0KLSMgQWRkaXRpb25hbCB0ZW1wbGF0ZXMgdGhhdCBz
aG91bGQgYmUgcmVuZGVyZWQgdG8gcGFnZXMsIG1hcHMgcGFnZSBuYW1lcyB0bwotIyB0ZW1wbGF0
ZSBuYW1lcy4KLSNodG1sX2FkZGl0aW9uYWxfcGFnZXMgPSB7fQotCi0jIElmIGZhbHNlLCBubyBt
b2R1bGUgaW5kZXggaXMgZ2VuZXJhdGVkLgotI2h0bWxfZG9tYWluX2luZGljZXMgPSBUcnVlCi0K
LSMgSWYgZmFsc2UsIG5vIGluZGV4IGlzIGdlbmVyYXRlZC4KLSNodG1sX3VzZV9pbmRleCA9IFRy
dWUKLQotIyBJZiB0cnVlLCB0aGUgaW5kZXggaXMgc3BsaXQgaW50byBpbmRpdmlkdWFsIHBhZ2Vz
IGZvciBlYWNoIGxldHRlci4KLSNodG1sX3NwbGl0X2luZGV4ID0gRmFsc2UKLQotIyBJZiB0cnVl
LCBsaW5rcyB0byB0aGUgcmVTVCBzb3VyY2VzIGFyZSBhZGRlZCB0byB0aGUgcGFnZXMuCi0jaHRt
bF9zaG93X3NvdXJjZWxpbmsgPSBUcnVlCi0KLSMgSWYgdHJ1ZSwgIkNyZWF0ZWQgdXNpbmcgU3Bo
aW54IiBpcyBzaG93biBpbiB0aGUgSFRNTCBmb290ZXIuIERlZmF1bHQgaXMgVHJ1ZS4KLSNodG1s
X3Nob3dfc3BoaW54ID0gVHJ1ZQotCi0jIElmIHRydWUsICIoQykgQ29weXJpZ2h0IC4uLiIgaXMg
c2hvd24gaW4gdGhlIEhUTUwgZm9vdGVyLiBEZWZhdWx0IGlzIFRydWUuCi0jaHRtbF9zaG93X2Nv
cHlyaWdodCA9IFRydWUKLQotIyBJZiB0cnVlLCBhbiBPcGVuU2VhcmNoIGRlc2NyaXB0aW9uIGZp
bGUgd2lsbCBiZSBvdXRwdXQsIGFuZCBhbGwgcGFnZXMgd2lsbAotIyBjb250YWluIGEgPGxpbms+
IHRhZyByZWZlcnJpbmcgdG8gaXQuICBUaGUgdmFsdWUgb2YgdGhpcyBvcHRpb24gbXVzdCBiZSB0
aGUKLSMgYmFzZSBVUkwgZnJvbSB3aGljaCB0aGUgZmluaXNoZWQgSFRNTCBpcyBzZXJ2ZWQuCi0j
aHRtbF91c2Vfb3BlbnNlYXJjaCA9ICcnCi0KLSMgVGhpcyBpcyB0aGUgZmlsZSBuYW1lIHN1ZmZp
eCBmb3IgSFRNTCBmaWxlcyAoZS5nLiAiLnhodG1sIikuCi0jaHRtbF9maWxlX3N1ZmZpeCA9IE5v
bmUKLQotIyBPdXRwdXQgZmlsZSBiYXNlIG5hbWUgZm9yIEhUTUwgaGVscCBidWlsZGVyLgotaHRt
bGhlbHBfYmFzZW5hbWUgPSAnd3B0cnVubmVyZG9jJwotCi0KLSMgLS0gT3B0aW9ucyBmb3IgTGFU
ZVggb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQot
Ci1sYXRleF9lbGVtZW50cyA9IHsKLSAgICAjIFRoZSBwYXBlciBzaXplICgnbGV0dGVycGFwZXIn
IG9yICdhNHBhcGVyJykuCi0gICAgIydwYXBlcnNpemUnOiAnbGV0dGVycGFwZXInLAotCi0gICAg
IyBUaGUgZm9udCBzaXplICgnMTBwdCcsICcxMXB0JyBvciAnMTJwdCcpLgotICAgICMncG9pbnRz
aXplJzogJzEwcHQnLAotCi0gICAgIyBBZGRpdGlvbmFsIHN0dWZmIGZvciB0aGUgTGFUZVggcHJl
YW1ibGUuCi0gICAgIydwcmVhbWJsZSc6ICcnLAotfQotCi0jIEdyb3VwaW5nIHRoZSBkb2N1bWVu
dCB0cmVlIGludG8gTGFUZVggZmlsZXMuIExpc3Qgb2YgdHVwbGVzCi0jIChzb3VyY2Ugc3RhcnQg
ZmlsZSwgdGFyZ2V0IG5hbWUsIHRpdGxlLAotIyAgYXV0aG9yLCBkb2N1bWVudGNsYXNzIFtob3d0
bywgbWFudWFsLCBvciBvd24gY2xhc3NdKS4KLWxhdGV4X2RvY3VtZW50cyA9IFsKLSAgICAoJ2lu
ZGV4JywgJ3dwdHJ1bm5lci50ZXgnLCB1J3dwdHJ1bm5lciBEb2N1bWVudGF0aW9uJywKLSAgICAg
dSdKYW1lcyBHcmFoYW0nLCAnbWFudWFsJyksCi1dCi0KLSMgVGhlIG5hbWUgb2YgYW4gaW1hZ2Ug
ZmlsZSAocmVsYXRpdmUgdG8gdGhpcyBkaXJlY3RvcnkpIHRvIHBsYWNlIGF0IHRoZSB0b3Agb2YK
LSMgdGhlIHRpdGxlIHBhZ2UuCi0jbGF0ZXhfbG9nbyA9IE5vbmUKLQotIyBGb3IgIm1hbnVhbCIg
ZG9jdW1lbnRzLCBpZiB0aGlzIGlzIHRydWUsIHRoZW4gdG9wbGV2ZWwgaGVhZGluZ3MgYXJlIHBh
cnRzLAotIyBub3QgY2hhcHRlcnMuCi0jbGF0ZXhfdXNlX3BhcnRzID0gRmFsc2UKLQotIyBJZiB0
cnVlLCBzaG93IHBhZ2UgcmVmZXJlbmNlcyBhZnRlciBpbnRlcm5hbCBsaW5rcy4KLSNsYXRleF9z
aG93X3BhZ2VyZWZzID0gRmFsc2UKLQotIyBJZiB0cnVlLCBzaG93IFVSTCBhZGRyZXNzZXMgYWZ0
ZXIgZXh0ZXJuYWwgbGlua3MuCi0jbGF0ZXhfc2hvd191cmxzID0gRmFsc2UKLQotIyBEb2N1bWVu
dHMgdG8gYXBwZW5kIGFzIGFuIGFwcGVuZGl4IHRvIGFsbCBtYW51YWxzLgotI2xhdGV4X2FwcGVu
ZGljZXMgPSBbXQotCi0jIElmIGZhbHNlLCBubyBtb2R1bGUgaW5kZXggaXMgZ2VuZXJhdGVkLgot
I2xhdGV4X2RvbWFpbl9pbmRpY2VzID0gVHJ1ZQotCi0KLSMgLS0gT3B0aW9ucyBmb3IgbWFudWFs
IHBhZ2Ugb3V0cHV0IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0j
IE9uZSBlbnRyeSBwZXIgbWFudWFsIHBhZ2UuIExpc3Qgb2YgdHVwbGVzCi0jIChzb3VyY2Ugc3Rh
cnQgZmlsZSwgbmFtZSwgZGVzY3JpcHRpb24sIGF1dGhvcnMsIG1hbnVhbCBzZWN0aW9uKS4KLW1h
bl9wYWdlcyA9IFsKLSAgICAoJ2luZGV4JywgJ3dwdHJ1bm5lcicsIHUnd3B0cnVubmVyIERvY3Vt
ZW50YXRpb24nLAotICAgICBbdSdKYW1lcyBHcmFoYW0nXSwgMSkKLV0KLQotIyBJZiB0cnVlLCBz
aG93IFVSTCBhZGRyZXNzZXMgYWZ0ZXIgZXh0ZXJuYWwgbGlua3MuCi0jbWFuX3Nob3dfdXJscyA9
IEZhbHNlCi0KLQotIyAtLSBPcHRpb25zIGZvciBUZXhpbmZvIG91dHB1dCAtLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSMgR3JvdXBpbmcgdGhlIGRvY3VtZW50
IHRyZWUgaW50byBUZXhpbmZvIGZpbGVzLiBMaXN0IG9mIHR1cGxlcwotIyAoc291cmNlIHN0YXJ0
IGZpbGUsIHRhcmdldCBuYW1lLCB0aXRsZSwgYXV0aG9yLAotIyAgZGlyIG1lbnUgZW50cnksIGRl
c2NyaXB0aW9uLCBjYXRlZ29yeSkKLXRleGluZm9fZG9jdW1lbnRzID0gWwotICAgICgnaW5kZXgn
LCAnd3B0cnVubmVyJywgdSd3cHRydW5uZXIgRG9jdW1lbnRhdGlvbicsCi0gICAgIHUnSmFtZXMg
R3JhaGFtJywgJ3dwdHJ1bm5lcicsICdPbmUgbGluZSBkZXNjcmlwdGlvbiBvZiBwcm9qZWN0Lics
Ci0gICAgICdNaXNjZWxsYW5lb3VzJyksCi1dCi0KLSMgRG9jdW1lbnRzIHRvIGFwcGVuZCBhcyBh
biBhcHBlbmRpeCB0byBhbGwgbWFudWFscy4KLSN0ZXhpbmZvX2FwcGVuZGljZXMgPSBbXQotCi0j
IElmIGZhbHNlLCBubyBtb2R1bGUgaW5kZXggaXMgZ2VuZXJhdGVkLgotI3RleGluZm9fZG9tYWlu
X2luZGljZXMgPSBUcnVlCi0KLSMgSG93IHRvIGRpc3BsYXkgVVJMIGFkZHJlc3NlczogJ2Zvb3Ru
b3RlJywgJ25vJywgb3IgJ2lubGluZScuCi0jdGV4aW5mb19zaG93X3VybHMgPSAnZm9vdG5vdGUn
Ci0KLSMgSWYgdHJ1ZSwgZG8gbm90IGdlbmVyYXRlIGEgQGRldGFpbG1lbnUgaW4gdGhlICJUb3Ai
IG5vZGUncyBtZW51LgotI3RleGluZm9fbm9fZGV0YWlsbWVudSA9IEZhbHNlCi0KLQotIyBFeGFt
cGxlIGNvbmZpZ3VyYXRpb24gZm9yIGludGVyc3BoaW54OiByZWZlciB0byB0aGUgUHl0aG9uIHN0
YW5kYXJkIGxpYnJhcnkuCi1pbnRlcnNwaGlueF9tYXBwaW5nID0geydweXRob24nOiAoJ2h0dHA6
Ly9kb2NzLnB5dGhvbi5vcmcvJywgTm9uZSksCi0gICAgICAgICAgICAgICAgICAgICAgICdtb3ps
b2cnOiAoJ2h0dHBzOi8vZmlyZWZveC1zb3VyY2UtZG9jcy5tb3ppbGxhLm9yZy8nLCBOb25lKX0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL2RvY3MvZGVzaWduLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvZGVzaWduLnJzdAppbmRl
eCBiZjEwOGEwMDg3ZGEwYzZlYzEyMzE2OWM3MTU4NmY2Y2UzYmZiYTcyLi4zMGY4MjcxMWE1OWQ3
NjBkNzBhZDY5NjVjNWY1MTdlZmM0MmY2YjBjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL2Rlc2lnbi5y
c3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvZG9jcy9kZXNpZ24ucnN0CkBAIC0xNSw3ICsxNSw3IEBAIHJlcXVpcmVtZW50
czoKICAgIG9mIGFuIGBgaWZyYW1lYGAgdGVzdCBjb250YWluZXIuCiAKICAqIEl0IG11c3QgYmUg
cG9zc2libGUgdG8gZGVhbCB3aXRoIGFsbCBraW5kcyBvZiBiZWhhdmlvdXIgb2YgdGhlCi0gICBi
cm93c2VyIHJ1bmRlciB0ZXN0LCBmb3IgZXhhbXBsZSwgY3Jhc2hpbmcsIGhhbmdpbmcsIGV0Yy4K
KyAgIGJyb3dzZXIgdW5kZXIgdGVzdCwgZm9yIGV4YW1wbGUsIGNyYXNoaW5nLCBoYW5naW5nLCBl
dGMuCiAKICAqIEl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBhZGQgc3VwcG9ydCBmb3IgbmV3IHBs
YXRmb3JtcyBhbmQgYnJvd3NlcnMKICAgIHdpdGggbWluaW1hbCBjb2RlIGNoYW5nZXMuCkBAIC00
Myw2NCArNDMsNjYgQEAgVGhlIG92ZXJhbGwgYXJjaGl0ZWN0dXJlIG9mIHdwdHJ1bm5lciBpcyBz
aG93biBpbiB0aGUgZGlhZ3JhbSBiZWxvdzoKIAogLi4gaW1hZ2U6OiBhcmNoaXRlY3R1cmUuc3Zn
CiAKLVRoZSBtYWluIGVudHJ5IHBvaW50IHRvIHRoZSBjb2RlIGlzIDpweTpmdW5jOmBydW5fdGVz
dHNgIGluCisuLiBjdXJyZW50bW9kdWxlOjogd3B0cnVubmVyCisKK1RoZSBtYWluIGVudHJ5IHBv
aW50IHRvIHRoZSBjb2RlIGlzIDpweTpmdW5jOmB+d3B0cnVubmVyLnJ1bl90ZXN0c2AgaW4KIGBg
d3B0cnVubmVyLnB5YGAuIFRoaXMgaXMgcmVzcG9uc2libGUgZm9yIHNldHRpbmcgdXAgdGhlIHRl
c3QKIGVudmlyb25tZW50LCBsb2FkaW5nIHRoZSBsaXN0IG9mIHRlc3RzIHRvIGJlIGV4ZWN1dGVk
LCBhbmQgaW52b2tpbmcKIHRoZSByZW1haW5kZXIgb2YgdGhlIGNvZGUgdG8gYWN0dWFsbHkgZXhl
Y3V0ZSBzb21lIHRlc3RzLgogCiBUaGUgdGVzdCBlbnZpcm9ubWVudCBpcyBlbmNhcHN1bGF0ZWQg
aW4gdGhlCi06cHk6Y2xhc3M6YFRlc3RFbnZpcm9ubWVudGAgY2xhc3MuIFRoaXMgZGVmZXJzIHRv
IGNvZGUgaW4KKzpweTpjbGFzczpgfmVudmlyb25tZW50LlRlc3RFbnZpcm9ubWVudGAgY2xhc3Mu
IFRoaXMgZGVmZXJzIHRvIGNvZGUgaW4KIGBgd2ViLXBsYXRmb3JtLXRlc3RzYGAgd2hpY2ggYWN0
dWFsbHkgc3RhcnRzIHRoZSByZXF1aXJlZCBzZXJ2ZXJzIHRvCiBydW4gdGhlIHRlc3RzLgogCiBU
aGUgc2V0IG9mIHRlc3RzIHRvIHJ1biBpcyBkZWZpbmVkIGJ5IHRoZQotOnB5OmNsYXNzOmBUZXN0
TG9hZGVyYC4gVGhpcyBpcyBjb25zdHJ1Y3RlZCB3aXRoIGEKLTpweTpjbGFzczpgVGVzdEZpbHRl
cmAgKG5vdCBzaG93biksIHdoaWNoIHRha2VzIGFueSBmaWx0ZXIgYXJndW1lbnRzCis6cHk6Y2xh
c3M6YH50ZXN0bG9hZGVyLlRlc3RMb2FkZXJgLiBUaGlzIGlzIGNvbnN0cnVjdGVkIHdpdGggYQor
OnB5OmNsYXNzOmB+dGVzdGxvYWRlci5UZXN0RmlsdGVyYCAobm90IHNob3duKSwgd2hpY2ggdGFr
ZXMgYW55IGZpbHRlciBhcmd1bWVudHMKIGZyb20gdGhlIGNvbW1hbmQgbGluZSB0byByZXN0cmlj
dCB0aGUgc2V0IG9mIHRlc3RzIHRoYXQgd2lsbCBiZQotcnVuLiBUaGUgOnB5OmNsYXNzOmBUZXN0
TG9hZGVyYCByZWFkcyBib3RoIHRoZSBgYHdlYi1wbGF0Zm9ybS10ZXN0c2BgCitydW4uIFRoZSA6
cHk6Y2xhc3M6YH50ZXN0bG9hZGVyLlRlc3RMb2FkZXJgIHJlYWRzIGJvdGggdGhlIGBgd2ViLXBs
YXRmb3JtLXRlc3RzYGAKIEpTT04gbWFuaWZlc3QgYW5kIHRoZSBleHBlY3RhdGlvbiBkYXRhIHN0
b3JlZCBpbiBpbmkgZmlsZXMgYW5kCiBwcm9kdWNlcyBhIDpweTpjbGFzczpgbXVsdGlwcm9jZXNz
aW5nLlF1ZXVlYCBvZiB0ZXN0cyB0byBydW4sIGFuZAogdGhlaXIgZXhwZWN0ZWQgcmVzdWx0cy4K
IAogQWN0dWFsbHkgcnVubmluZyB0aGUgdGVzdHMgaGFwcGVucyB0aHJvdWdoIHRoZQotOnB5OmNs
YXNzOmBNYW5hZ2VyR3JvdXBgIG9iamVjdC4gVGhpcyB0YWtlcyB0aGUgOnB5OmNsYXNzOmBRdWV1
ZWAgb2YKLXRlc3RzIHRvIGJlIHJ1biBhbmQgc3RhcnRzIGEgOnB5OmNsYXNzOmB0ZXN0cnVubmVy
LlRlc3RSdW5uZXJNYW5hZ2VyYCBmb3IgZWFjaAorOnB5OmNsYXNzOmB+dGVzdHJ1bm5lci5NYW5h
Z2VyR3JvdXBgIG9iamVjdC4gVGhpcyB0YWtlcyB0aGUgOnB5OmNsYXNzOmB+bXVsdGlwcm9jZXNz
aW5nLlF1ZXVlYCBvZgordGVzdHMgdG8gYmUgcnVuIGFuZCBzdGFydHMgYSA6cHk6Y2xhc3M6YH50
ZXN0cnVubmVyLlRlc3RSdW5uZXJNYW5hZ2VyYCBmb3IgZWFjaAogaW5zdGFuY2Ugb2YgdGhlIGJy
b3dzZXIgdW5kZXIgdGVzdCB0aGF0IHdpbGwgYmUgc3RhcnRlZC4gVGhlc2UKLTpweTpjbGFzczpg
VGVzdFJ1bm5lck1hbmFnZXJgIGluc3RhbmNlcyBhcmUgZWFjaCBzdGFydGVkIGluIHRoZWlyIG93
bgorOnB5OmNsYXNzOmB+dGVzdHJ1bm5lci5UZXN0UnVubmVyTWFuYWdlcmAgaW5zdGFuY2VzIGFy
ZSBlYWNoIHN0YXJ0ZWQgaW4gdGhlaXIgb3duCiB0aHJlYWQuCiAKLUEgOnB5OmNsYXNzOmBUZXN0
UnVubmVyTWFuYWdlcmAgY29vcmRpbmF0ZXMgc3RhcnRpbmcgdGhlIHByb2R1Y3QgdW5kZXIKK0Eg
OnB5OmNsYXNzOmB+dGVzdHJ1bm5lci5UZXN0UnVubmVyTWFuYWdlcmAgY29vcmRpbmF0ZXMgc3Rh
cnRpbmcgdGhlIHByb2R1Y3QgdW5kZXIKIHRlc3QsIGFuZCBvdXRwdXR0aW5nIHJlc3VsdHMgZnJv
bSB0aGUgdGVzdC4gSW4gdGhlIGNhc2UgdGhhdCB0aGUgdGVzdAogaGFzIHRpbWVkIG91dCBvciB0
aGUgYnJvd3NlciBoYXMgY3Jhc2hlZCwgaXQgaGFzIHRvIHJlc3RhcnQgdGhlCiBicm93c2VyIHRv
IGVuc3VyZSB0aGUgdGVzdCBydW4gY2FuIGNvbnRpbnVlLiBUaGUgZnVuY3Rpb25hbGl0eSBmb3IK
IGluaXRpYWxpc2luZyB0aGUgYnJvd3NlciB1bmRlciB0ZXN0LCBhbmQgcHJvYmluZyBpdHMgc3Rh
dGUKIChlLmcuIHdoZXRoZXIgdGhlIHByb2Nlc3MgaXMgc3RpbGwgYWxpdmUpIGlzIGltcGxlbWVu
dGVkIHRocm91Z2ggYQotOnB5OmNsYXNzOmBCcm93c2VyYCBvYmplY3QuIEFuIGltcGxlbWVudGF0
aW9uIG9mIHRoaXMgY2xhc3MgbXVzdCBiZQorOnB5OmNsYXNzOmB+YnJvd3NlcnMuYmFzZS5Ccm93
c2VyYCBvYmplY3QuIEFuIGltcGxlbWVudGF0aW9uIG9mIHRoaXMgY2xhc3MgbXVzdCBiZQogcHJv
dmlkZWQgZm9yIGVhY2ggcHJvZHVjdCB0aGF0IGlzIHN1cHBvcnRlZC4KIAogVGhlIGZ1bmN0aW9u
YWxpdHkgZm9yIGFjdHVhbGx5IHJ1bm5pbmcgdGhlIHRlc3RzIGlzIHByb3ZpZGVkIGJ5IGEKLTpw
eTpjbGFzczpgVGVzdFJ1bm5lcmAgb2JqZWN0LiA6cHk6Y2xhc3M6YFRlc3RSdW5uZXJgIGluc3Rh
bmNlcyBhcmUKKzpweTpjbGFzczpgfnRlc3RydW5uZXIuVGVzdFJ1bm5lcmAgb2JqZWN0LiA6cHk6
Y2xhc3M6YH50ZXN0cnVubmVyLlRlc3RSdW5uZXJgIGluc3RhbmNlcyBhcmUKIHJ1biBpbiB0aGVp
ciBvd24gY2hpbGQgcHJvY2VzcyBjcmVhdGVkIHdpdGggdGhlCiA6cHk6bW9kOmBtdWx0aXByb2Nl
c3NpbmdgIG1vZHVsZS4gVGhpcyBhbGxvd3MgdGhlbSB0byBydW4gY29uY3VycmVudGx5CiBhbmQg
dG8gYmUga2lsbGVkIGFuZCByZXN0YXJ0ZWQgYXMgcmVxdWlyZWQuIENvbW11bmljYXRpb24gYmV0
d2VlbiB0aGUKLTpweTpjbGFzczpgVGVzdFJ1bm5lck1hbmFnZXJgIGFuZCB0aGUgOnB5OmNsYXNz
OmBUZXN0UnVubmVyYCBpcworOnB5OmNsYXNzOmB+dGVzdHJ1bm5lci5UZXN0UnVubmVyTWFuYWdl
cmAgYW5kIHRoZSA6cHk6Y2xhc3M6YH50ZXN0cnVubmVyLlRlc3RSdW5uZXJgIGlzCiBwcm92aWRl
ZCBieSBhIHBhaXIgb2YgcXVldWVzLCBvbmUgZm9yIHNlbmRpbmcgbWVzc2FnZXMgaW4gZWFjaAog
ZGlyZWN0aW9uLiBJbiBwYXJ0aWN1bGFyIHRlc3QgcmVzdWx0cyBhcmUgc2VudCBmcm9tIHRoZQot
OnB5OmNsYXNzOmBUZXN0UnVubmVyYCB0byB0aGUgOnB5OmNsYXNzOmBUZXN0UnVubmVyTWFuYWdl
cmAgdXNpbmcgb25lCis6cHk6Y2xhc3M6YH50ZXN0cnVubmVyLlRlc3RSdW5uZXJgIHRvIHRoZSA6
cHk6Y2xhc3M6YH50ZXN0cnVubmVyLlRlc3RSdW5uZXJNYW5hZ2VyYCB1c2luZyBvbmUKIG9mIHRo
ZXNlIHF1ZXVlcy4KIAotVGhlIDpweTpjbGFzczpgVGVzdFJ1bm5lcmAgb2JqZWN0IGlzIGdlbmVy
aWMgaW4gdGhhdCB0aGUgc2FtZQotOnB5OmNsYXNzOmBUZXN0UnVubmVyYCBpcyB1c2VkIHJlZ2Fy
ZGxlc3Mgb2YgdGhlIHByb2R1Y3QgdW5kZXIKK1RoZSA6cHk6Y2xhc3M6YH50ZXN0cnVubmVyLlRl
c3RSdW5uZXJgIG9iamVjdCBpcyBnZW5lcmljIGluIHRoYXQgdGhlIHNhbWUKKzpweTpjbGFzczpg
fnRlc3RydW5uZXIuVGVzdFJ1bm5lcmAgaXMgdXNlZCByZWdhcmRsZXNzIG9mIHRoZSBwcm9kdWN0
IHVuZGVyCiB0ZXN0LiBIb3dldmVyIHRoZSBkZXRhaWxzIG9mIGhvdyB0byBydW4gdGhlIHRlc3Qg
bWF5IHZhcnkgZ3JlYXRseSB3aXRoCiB0aGUgcHJvZHVjdCBzaW5jZSBkaWZmZXJlbnQgcHJvZHVj
dHMgc3VwcG9ydCBkaWZmZXJlbnQgcmVtb3RlIGNvbnRyb2wKIHByb3RvY29scyAob3Igbm9uZSBh
dCBhbGwpLiBUaGVzZSBwcm90b2NvbC1zcGVjaWZpYyBwYXJ0cyBhcmUgcGxhY2VkCi1pbiB0aGUg
OnB5OmNsYXNzOmBFeGVjdXRvcmAgb2JqZWN0LiBUaGVyZSBpcyB0eXBpY2FsbHkgYSBkaWZmZXJl
bnQKLTpweTpjbGFzczpgRXhlY3V0b3JgIGNsYXNzIGZvciBlYWNoIGNvbWJpbmF0aW9uIG9mIGNv
bnRyb2wgcHJvdG9jb2wKLWFuZCB0ZXN0IHR5cGUuIFRoZSA6cHk6Y2xhc3M6YFRlc3RSdW5uZXJg
IGlzIHJlc3BvbnNpYmxlIGZvciBwdWxsaW5nCi1lYWNoIHRlc3Qgb2ZmIHRoZSA6cHk6Y2xhc3M6
YFF1ZXVlYCBvZiB0ZXN0cyBhbmQgcGFzc2luZyBpdCBkb3duIHRvCi10aGUgOnB5OmNsYXNzOmBF
eGVjdXRvcmAuCitpbiB0aGUgOnB5OmNsYXNzOmB+ZXhlY3V0b3JzLmJhc2UuVGVzdEV4ZWN1dG9y
YCBvYmplY3QuIFRoZXJlIGlzIHR5cGljYWxseSBhIGRpZmZlcmVudAorOnB5OmNsYXNzOmB+ZXhl
Y3V0b3JzLmJhc2UuVGVzdEV4ZWN1dG9yYCBjbGFzcyBmb3IgZWFjaCBjb21iaW5hdGlvbiBvZiBj
b250cm9sIHByb3RvY29sCithbmQgdGVzdCB0eXBlLiBUaGUgOnB5OmNsYXNzOmB+dGVzdHJ1bm5l
ci5UZXN0UnVubmVyYCBpcyByZXNwb25zaWJsZSBmb3IgcHVsbGluZworZWFjaCB0ZXN0IG9mZiB0
aGUgOnB5OmNsYXNzOmBtdWx0aXByb2Nlc3NpbmcuUXVldWVgIG9mIHRlc3RzIGFuZCBwYXNzaW5n
IGl0IGRvd24gdG8KK3RoZSA6cHk6Y2xhc3M6YH5leGVjdXRvcnMuYmFzZS5UZXN0RXhlY3V0b3Jg
LgogCiBUaGUgZXhlY3V0b3Igb2Z0ZW4gcmVxdWlyZXMgYWNjZXNzIHRvIGRldGFpbHMgb2YgdGhl
IHBhcnRpY3VsYXIKIGJyb3dzZXIgaW5zdGFuY2UgdGhhdCBpdCBpcyB0ZXN0aW5nIHNvIHRoYXQg
aXQga25vd3MgZS5nLiB3aGljaCBwb3J0CiB0byBjb25uZWN0IHRvIHRvIHNlbmQgY29tbWFuZHMg
dG8gdGhlIGJyb3dzZXIuIFRoZXNlIGRldGFpbHMgYXJlCi1lbmNhcHN1bGF0ZWQgaW4gdGhlIDpw
eTpjbGFzczpgRXhlY3V0b3JCcm93c2VyYCBjbGFzcy4KK2VuY2Fwc3VsYXRlZCBpbiB0aGUgOnB5
OmNsYXNzOmB+YnJvd3NlcnMuYmFzZS5FeGVjdXRvckJyb3dzZXJgIGNsYXNzLgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvZG9jcy9leHBlY3RhdGlvbi5yc3QgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL2V4cGVjdGF0aW9uLnJzdAppbmRl
eCA2YTBjNzc2ODRhM2I4M2FiYTg4NDM2ZTg0YjM5OWZkOGZiNjRlMzI1Li43NzkzOGFiZTAzZDU1
Y2UxNDU3MWVjMWI0YzJiNDNkMGVkNGE0MDliIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL2V4cGVjdGF0
aW9uLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9kb2NzL2V4cGVjdGF0aW9uLnJzdApAQCAtOTgsNiArOTgsMjUgQEAg
d3B0dXBkYXRlIHRha2VzIHNldmVyYWwgdXNlZnVsIG9wdGlvbnM6CiAgIE92ZXJ3cml0ZSBhbGwg
dGhlIGV4cGVjdGF0aW9uIGRhdGEgZm9yIGFueSB0ZXN0cyB0aGF0IGhhdmUgYSByZXN1bHQKICAg
aW4gdGhlIHBhc3NlZCBsb2cgZmlsZXMsIG5vdCBqdXN0IGRhdGEgZm9yIHRoZSBzYW1lIHBsYXRm
b3JtLgogCitgYC0tZGlzYWJsZS1pbnRlcm1pdHRlbnRgYAorICBXaGVuIHVwZGF0aW5nIHRlc3Qg
cmVzdWx0cywgZGlzYWJsZSB0ZXN0cyB0aGF0IGhhdmUgaW5jb25zaXN0ZW50CisgIHJlc3VsdHMg
YWNyb3NzIG1hbnkgcnVucy4gVGhpcyBjYW4gcHJlY2VkZSBhIG1lc3NhZ2UgcHJvdmlkaW5nIGEK
KyAgcmVhc29uIHdoeSB0aGF0IHRlc3QgaXMgZGlzYWJsZS4gSWYgbm8gbWVzc2FnZSBpcyBwcm92
aWRlZCwKKyAgYGB1bnN0YWJsZWBgIGlzIHRoZSBkZWZhdWx0IHRleHQuCisKK2BgLS11cGRhdGUt
aW50ZXJtaXR0ZW50YGAKKyAgV2hlbiB0aGlzIG9wdGlvbiBpcyB1c2VkLCB0aGUgYGBleHBlY3Rl
ZGBgIGtleSAoc2VlIGJlbG93KSBzdG9yZXMKKyAgZXhwZWN0ZWQgaW50ZXJtaXR0ZW50IHN0YXR1
c2VzIGluIGFkZGl0aW9uIHRvIHRoZSBwcmltYXJ5IGV4cGVjdGVkCisgIHN0YXR1cy4gSWYgdGhl
cmUgaXMgbW9yZSB0aGFuIG9uZSBzdGF0dXMsIGl0IGFwcGVhcnMgYXMgYSBsaXN0LiBUaGUKKyAg
ZGVmYXVsdCBiZWhhdmlvdXIgb2YgdGhpcyBvcHRpb24gaXMgdG8gcmV0YWluIGFueSBleGlzdGlu
ZyBpbnRlcm1pdHRlbnQKKyAgc3RhdHVzZXMgaW4gdGhlIGxpc3QgdW5sZXNzIGBgLS1yZW1vdmUt
aW50ZXJtaXR0ZW50YGAgaXMgc3BlY2lmaWVkLgorCitgYC0tcmVtb3ZlLWludGVybWl0dGVudGBg
CisgIFRoaXMgb3B0aW9uIGlzIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBgYC0tdXBkYXRlLWlu
dGVybWl0dGVudGBgLgorICBXaGVuIHRoZSBgYGV4cGVjdGVkYGAgc3RhdHVzZXMgYXJlIHVwZGF0
ZWQsIGFueSBvYnNvbGV0ZSBpbnRlcm1pdHRlbnQKKyAgc3RhdHVzZXMgdGhhdCBkaWQgbm90IG9j
Y3VyIGluIHRoZSBzcGVjaWZpZWQgbG9nZmlsZXMgYXJlIHJlbW92ZWQgZnJvbQorICB0aGUgbGlz
dC4KKwogRXhhbXBsZXMKIH5+fn5+fn5+CiAKQEAgLTE0MSw2ICsxNjAsMjQgQEAgQSBzaW1wbGUg
ZXhhbXBsZSBvZiBhIG1hbmlmZXN0IGZpbGUgaXM6OgogICBbYW5vdGhlcl9zZWN0aW9uXQogICAg
IGFub3RoZXJfa2V5OiBhbm90aGVyX3ZhbHVlCiAKK1RoZSB3ZWItcGxhdGZvcm0tdGVzdCBoYXJu
ZXNzIGtub3dzIGFib3V0IHNldmVyYWwga2V5czoKKworYGV4cGVjdGVkYAorICBNdXN0IGV2YWx1
YXRlIHRvIGEgcG9zc2libGUgdGVzdCBzdGF0dXMgaW5kaWNhdGluZyB0aGUgZXhwZWN0ZWQKKyAg
cmVzdWx0IG9mIHRoZSB0ZXN0LiBUaGUgaW1wbGljaXQgZGVmYXVsdCBpcyBQQVNTIG9yIE9LIHdo
ZW4gdGhlCisgIGZpZWxkIGlzbid0IHByZXNlbnQuIFdoZW4gYGV4cGVjdGVkYCBpcyBhIGxpc3Qs
IHRoZSBmaXJzdCBzdGF0dXMKKyAgaXMgdGhlIHByaW1hcnkgZXhwZWN0ZWQgc3RhdHVzIGFuZCB0
aGUgdHJhaWxpbmcgc3RhdHVzZXMgbGlzdGVkIGFyZQorICBleHBlY3RlZCBpbnRlcm1pdHRlbnQg
c3RhdHVzZXMuCisKK2BkaXNhYmxlZGAKKyAgQW55IHZhbHVlIGluZGljYXRlcyB0aGF0IHRoZSB0
ZXN0IGlzIGRpc2FibGVkLgorCitgcmVmdHlwZWAKKyAgVGhlIHR5cGUgb2YgY29tcGFyaXNvbiBm
b3IgcmVmdGVzdHM7IGVpdGhlciBgPT1gIG9yIGAhPWAuCisKK2ByZWZ1cmxgCisgIFRoZSByZWZl
cmVuY2UgdXJsIGZvciByZWZ0ZXN0cy4KKwogQ29uZGl0aW9uYWwgVmFsdWVzCiB+fn5+fn5+fn5+
fn5+fn5+fn4KIApAQCAtMTkwLDE0ICsyMjcsOCBAQCBXaGVuIHVzZWQgZm9yIGV4cGVjdGF0aW9u
IGRhdGEsIG1hbmlmZXN0cyBoYXZlIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgogICogQSBzdWJzZWN0
aW9uIHBlciBzdWJ0ZXN0LCB3aXRoIHRoZSBoZWFkaW5nIGJlaW5nIHRoZSB0aXRsZSBvZiB0aGUK
ICAgIHN1YnRlc3QuCiAKLSAqIEEga2V5IGBgdHlwZWBgIGluZGljYXRpbmcgdGhlIHRlc3QgdHlw
ZS4gVGhpcyB0YWtlcyB0aGUgdmFsdWVzCi0gICBgYHRlc3RoYXJuZXNzYGAgYW5kIGBgcmVmdGVz
dGBgLgotCi0gKiBGb3IgcmVmdGVzdHMsIGtleXMgYGByZWZ0eXBlYGAgaW5kaWNhdGluZyB0aGUg
cmVmZXJlbmNlIHR5cGUKLSAgIChgYD09YGAgb3IgYGAhPWBgKSBhbmQgYGByZWZ1cmxgYCBpbmRp
Y2F0aW5nIHRoZSBVUkwgb2YgdGhlCi0gICByZWZlcmVuY2UuCi0KLSAqIEEga2V5IGBgZXhwZWN0
ZWRgYCBnaXZpbmcgdGhlIGV4cGVjdGF0aW9uIHZhbHVlIG9mIGVhY2ggKHN1Yil0ZXN0LgorICog
QSBrZXkgYGBleHBlY3RlZGBgIGdpdmluZyB0aGUgZXhwZWN0YXRpb24gdmFsdWUgb3IgdmFsdWVz
IG9mIGVhY2ggCisgICAoc3ViKXRlc3QuCiAKICAqIEEga2V5IGBgZGlzYWJsZWRgYCB3aGljaCBj
YW4gYmUgc2V0IHRvIGFueSB2YWx1ZSB0byBpbmRpY2F0ZSB0aGF0CiAgICB0aGUgKHN1Yil0ZXN0
IGlzIGRpc2FibGVkIGFuZCBzaG91bGQgZWl0aGVyIG5vdCBiZSBydW4gKGZvciB0ZXN0cykKQEAg
LTIwNyw2ICsyMzgsMTkgQEAgV2hlbiB1c2VkIGZvciBleHBlY3RhdGlvbiBkYXRhLCBtYW5pZmVz
dHMgaGF2ZSB0aGUgZm9sbG93aW5nIGZvcm1hdDoKICAgIHRoZSBydW5uZXIgc2hvdWxkIHJlc3Rh
cnQgdGhlIGJyb3dzZXIgYWZ0ZXIgcnVubmluZyB0aGlzIHRlc3QgKGUuZy4gdG8KICAgIGNsZWFy
IG91dCB1bndhbnRlZCBzdGF0ZSkuCiAKKyAqIEEga2V5IGBgZnV6enlgYCB0aGF0IGlzIHVzZWQg
Zm9yIHJlZnRlc3RzLiBUaGlzIGlzIGludGVycHJldGVkIGFzIGEKKyAgIGxpc3QgY29udGFpbmlu
ZyBlbnRyaWVzIGxpa2UgYGA8bWV0YSBuYW1lPWZ1enp5PmBgIGNvbnRlbnQgdmFsdWUsCisgICB3
aGljaCBjb25zaXN0cyBvZiBhbiBvcHRpb25hbCByZWZlcmVuY2UgaWRlbnRpZmllciBmb2xsb3dl
ZCBieSBhCisgICBjb2xvbiwgdGhlbiBhIHJhbmdlIGluZGljYXRpbmcgdGhlIG1heGltdW0gcGVy
bWl0dGVkIHBpeGVsCisgICBkaWZmZXJlbmNlIHBlciBjaGFubmVsLCB0aGVuIHNlbWljb2xvbiwg
dGhlbiBhIHJhbmdlIGluZGljYXRpbmcgdGhlCisgICBtYXhpbXVtIHBlcm1pdHRlZCB0b3RhbCBu
dW1iZXIgb2YgZGlmZmVyaW5nIHBpeGVscy4gVGhlIHJlZmVyZW5jZQorICAgaWRlbnRpZmllciBp
cyBlaXRoZXIgYSBzaW5nbGUgcmVsYXRpdmUgVVJMLCByZXNvbHZlZCBhZ2FpbnN0IHRoZQorICAg
YmFzZSB0ZXN0IFVSTCwgaW4gd2hpY2ggY2FzZSB0aGUgZnV6emluZXNzIGFwcGxpZXMgdG8gYW55
CisgICBjb21wYXJpc29uIHdpdGggdGhhdCBVUkwsIG9yIHRha2VzIHRoZSBmb3JtIGxocyB1cmws
IGNvbXBhcmlzb24sCisgICByaHMgdXJsLCBpbiB3aGljaCBjYXNlIHRoZSBmdXp6aW5lc3Mgb25s
eSBhcHBsaWVzIGZvciBhbnkKKyAgIGNvbXBhcmlzb24gaW52b2x2aW5nIHRoYXQgc3BlY2lmYyBw
YWlyIG9mIFVSTHMuIFNvbWUgaWxsdXN0cmF0aXZlCisgICBleGFtcGxlcyBhcmUgZ2l2ZW4gYmVs
b3cuCisKICAqIFZhcmlhYmxlcyBgYGRlYnVnYGAsIGBgb3NgYCwgYGB2ZXJzaW9uYGAsIGBgcHJv
Y2Vzc29yYGAgYW5kCiAgICBgYGJpdHNgYCB0aGF0IGRlc2NyaWJlIHRoZSBjb25maWd1cmF0aW9u
IG9mIHRoZSBicm93c2VyIHVuZGVyCiAgICB0ZXN0LiBgYGRlYnVnYGAgaXMgYSBib29sZWFuIGlu
ZGljYXRpbmcgd2hldGhlciBhIGJ1aWxkIGlzIGEgZGVidWcKQEAgLTIzMCw2ICsyNzQsOSBAQCBB
biBzaW1wbGUgZXhhbXBsZSBtYW5pZmVzdCBtaWdodCBsb29rIGxpa2U6OgogICAgIFtUZXN0IHNv
bWV0aGluZyB1bnN1cHBvcnRlZF0KICAgICAgICBleHBlY3RlZDogRkFJTAogCisgICAgW1Rlc3Qg
d2l0aCBpbnRlcm1pdHRlbnQgc3RhdHVzZXNdCisgICAgICAgZXhwZWN0ZWQ6IFtQQVNTLCBUSU1F
T1VUXQorCiAgIFt0ZXN0Lmh0bWw/dmFyaWFudD1icm9rZW5dCiAgICAgZXhwZWN0ZWQ6IEVSUk9S
CiAKQEAgLTI0MCw5ICsyODcsMjQgQEAgQSBtb3JlIGNvbXBsZXggbWFuaWZlc3Qgd2l0aCBjb25k
aXRpb25hbCBwcm9wZXJ0aWVzIG1pZ2h0IGJlOjoKIAogICBbY2FudmFzX3Rlc3QuaHRtbF0KICAg
ICBleHBlY3RlZDoKLSAgICAgIGlmIG9zID09ICJvc3giOiBGQUlMCisgICAgICBpZiBvcyA9PSAi
bWFjIjogRkFJTAogICAgICAgaWYgb3MgPT0gIndpbmRvd3MiIGFuZCB2ZXJzaW9uID09ICJYUCI6
IEZBSUwKICAgICAgIFBBU1MKIAogTm90ZSB0aGF0IGBgUEFTU2BgIGluIHRoZSBhYm92ZSB3b3Jr
cywgYnV0IGlzIHVubmVjZXNzYXJ5OyBgYFBBU1NgYAogKG9yIGBgT0tgYCkgaXMgYWx3YXlzIHRo
ZSBkZWZhdWx0IGV4cGVjdGF0aW9uIGZvciAoc3ViKXRlc3RzLgorCitBIG1hbmlmZXN0IHdpdGgg
ZnV6enkgcmVmdGVzdCB2YWx1ZXMgbWlnaHQgYmU6OgorCisgIFtyZWZ0ZXN0Lmh0bWxdCisgICAg
ZnV6enk6IFsxMDsyMDAsIHJlZjEuaHRtbDoyMDsyMDAtMzAwLCBzdWJ0ZXN0MS5odG1sPT1yZWYy
Lmh0bWw6MTAtMTU7MjBdCisKK0luIHRoaXMgY2FzZSB0aGUgZGVmYXVsdCBmdXp6aW5lc3MgZm9y
IGFueSBjb21wYXJpc29uIHdvdWxkIGJlIHRvCityZXF1aXJlIGEgbWF4aW11bSBkaWZmZXJlbmNl
IHBlciBjaGFubmVsIG9mIGxlc3MgdGhhbiBvciBlcXVhbCB0byAxMAorYW5kIGxlc3MgdGhhbiBv
ciBlcXVhbCB0byAyMDAgdG90YWwgcGl4ZWxzIGRpZmZlcmVudC4gRm9yIGFueQorY29tcGFyaXNv
biBpbnZvbHZpbmcgcmVmMS5odG1sIG9uIHRoZSByaWdodCBoYW5kIHNpZGUsIHRoZSBsaW1pdHMK
K3dvdWxkIGluc3RlYWQgYmUgYSBkaWZmZXJlbmNlIHBlciBjaGFubmVsIG5vdCBtb3JlIHRoYW4g
MjAgYW5kIGEgdG90YWwKK2RpZmZlcmVuY2UgY291bnQgb2Ygbm90IGxlc3MgdGhhbiAyMDAgYW5k
IG5vdCBtb3JlIHRoYW4gMzAwLiBGb3IgdGhlCitzcGVjaWZpYyBjb21wYXJpc29uIHN1YnRlc3Qx
Lmh0bWwgPT0gcmVmMi5odG1sIChib3RoIHJlc29sdmVkIGFnYWluc3QKK3RoZSB0ZXN0IFVSTCkg
dGhlc2UgbGltaXRzIHdvdWxkIGluc3RlYWQgYmUgMTAgdG8gMTUgYW5kIDAgdG8gMjAsCityZXNw
ZWN0aXZlbHkuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL2luZGV4LnJzdCBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvaW5kZXgu
cnN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTQ3ZDNlMzFjM2JjNDRiMTIxNmU0
NmJiYzAzYTA0YzM4MGNiM2FkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL2RvY3MvaW5kZXgucnN0CisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBA
QAotLi4gd3B0cnVubmVyIGRvY3VtZW50YXRpb24gbWFzdGVyIGZpbGUsIGNyZWF0ZWQgYnkKLSAg
IHNwaGlueC1xdWlja3N0YXJ0IG9uIE1vbiBNYXkgMTkgMTg6MTQ6MjAgMjAxNC4KLSAgIFlvdSBj
YW4gYWRhcHQgdGhpcyBmaWxlIGNvbXBsZXRlbHkgdG8geW91ciBsaWtpbmcsIGJ1dCBpdCBzaG91
bGQgYXQgbGVhc3QKLSAgIGNvbnRhaW4gdGhlIHJvb3QgYHRvY3RyZWVgIGRpcmVjdGl2ZS4KLQot
V2VsY29tZSB0byB3cHRydW5uZXIncyBkb2N1bWVudGF0aW9uIQotPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotCi1Db250ZW50czoKLQotLi4gdG9jdHJlZTo6Ci0gICA6bWF4
ZGVwdGg6IDIKLQotICAgdXNhZ2UKLSAgIGV4cGVjdGF0aW9uCi0gICBkZXNpZ24KLQotSW5kaWNl
cyBhbmQgdGFibGVzCi09PT09PT09PT09PT09PT09PT0KLQotKiA6cmVmOmBnZW5pbmRleGAKLSog
OnJlZjpgbW9kaW5kZXhgCi0qIDpyZWY6YHNlYXJjaGAKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy9t
YWtlLmJhdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL2RvY3MvbWFrZS5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDk1OWMxNjE1YTI4OWRiMGIxYTkwYTA5MGQ4OTRmYTRiNTRiNGZhM2YuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy9tYWtlLmJhdAorKysgL2Rl
di9udWxsCkBAIC0xLDI0MiArMCwwIEBACi1ARUNITyBPRkYNCi0NCi1SRU0gQ29tbWFuZCBmaWxl
IGZvciBTcGhpbnggZG9jdW1lbnRhdGlvbg0KLQ0KLWlmICIlU1BISU5YQlVJTEQlIiA9PSAiIiAo
DQotCXNldCBTUEhJTlhCVUlMRD1zcGhpbngtYnVpbGQNCi0pDQotc2V0IEJVSUxERElSPV9idWls
ZA0KLXNldCBBTExTUEhJTlhPUFRTPS1kICVCVUlMRERJUiUvZG9jdHJlZXMgJVNQSElOWE9QVFMl
IC4NCi1zZXQgSTE4TlNQSElOWE9QVFM9JVNQSElOWE9QVFMlIC4NCi1pZiBOT1QgIiVQQVBFUiUi
ID09ICIiICgNCi0Jc2V0IEFMTFNQSElOWE9QVFM9LUQgbGF0ZXhfcGFwZXJfc2l6ZT0lUEFQRVIl
ICVBTExTUEhJTlhPUFRTJQ0KLQlzZXQgSTE4TlNQSElOWE9QVFM9LUQgbGF0ZXhfcGFwZXJfc2l6
ZT0lUEFQRVIlICVJMThOU1BISU5YT1BUUyUNCi0pDQotDQotaWYgIiUxIiA9PSAiIiBnb3RvIGhl
bHANCi0NCi1pZiAiJTEiID09ICJoZWxwIiAoDQotCTpoZWxwDQotCWVjaG8uUGxlYXNlIHVzZSBg
bWFrZSBePHRhcmdldF4+YCB3aGVyZSBePHRhcmdldF4+IGlzIG9uZSBvZg0KLQllY2hvLiAgaHRt
bCAgICAgICB0byBtYWtlIHN0YW5kYWxvbmUgSFRNTCBmaWxlcw0KLQllY2hvLiAgZGlyaHRtbCAg
ICB0byBtYWtlIEhUTUwgZmlsZXMgbmFtZWQgaW5kZXguaHRtbCBpbiBkaXJlY3Rvcmllcw0KLQll
Y2hvLiAgc2luZ2xlaHRtbCB0byBtYWtlIGEgc2luZ2xlIGxhcmdlIEhUTUwgZmlsZQ0KLQllY2hv
LiAgcGlja2xlICAgICB0byBtYWtlIHBpY2tsZSBmaWxlcw0KLQllY2hvLiAganNvbiAgICAgICB0
byBtYWtlIEpTT04gZmlsZXMNCi0JZWNoby4gIGh0bWxoZWxwICAgdG8gbWFrZSBIVE1MIGZpbGVz
IGFuZCBhIEhUTUwgaGVscCBwcm9qZWN0DQotCWVjaG8uICBxdGhlbHAgICAgIHRvIG1ha2UgSFRN
TCBmaWxlcyBhbmQgYSBxdGhlbHAgcHJvamVjdA0KLQllY2hvLiAgZGV2aGVscCAgICB0byBtYWtl
IEhUTUwgZmlsZXMgYW5kIGEgRGV2aGVscCBwcm9qZWN0DQotCWVjaG8uICBlcHViICAgICAgIHRv
IG1ha2UgYW4gZXB1Yg0KLQllY2hvLiAgbGF0ZXggICAgICB0byBtYWtlIExhVGVYIGZpbGVzLCB5
b3UgY2FuIHNldCBQQVBFUj1hNCBvciBQQVBFUj1sZXR0ZXINCi0JZWNoby4gIHRleHQgICAgICAg
dG8gbWFrZSB0ZXh0IGZpbGVzDQotCWVjaG8uICBtYW4gICAgICAgIHRvIG1ha2UgbWFudWFsIHBh
Z2VzDQotCWVjaG8uICB0ZXhpbmZvICAgIHRvIG1ha2UgVGV4aW5mbyBmaWxlcw0KLQllY2hvLiAg
Z2V0dGV4dCAgICB0byBtYWtlIFBPIG1lc3NhZ2UgY2F0YWxvZ3MNCi0JZWNoby4gIGNoYW5nZXMg
ICAgdG8gbWFrZSBhbiBvdmVydmlldyBvdmVyIGFsbCBjaGFuZ2VkL2FkZGVkL2RlcHJlY2F0ZWQg
aXRlbXMNCi0JZWNoby4gIHhtbCAgICAgICAgdG8gbWFrZSBEb2N1dGlscy1uYXRpdmUgWE1MIGZp
bGVzDQotCWVjaG8uICBwc2V1ZG94bWwgIHRvIG1ha2UgcHNldWRveG1sLVhNTCBmaWxlcyBmb3Ig
ZGlzcGxheSBwdXJwb3Nlcw0KLQllY2hvLiAgbGlua2NoZWNrICB0byBjaGVjayBhbGwgZXh0ZXJu
YWwgbGlua3MgZm9yIGludGVncml0eQ0KLQllY2hvLiAgZG9jdGVzdCAgICB0byBydW4gYWxsIGRv
Y3Rlc3RzIGVtYmVkZGVkIGluIHRoZSBkb2N1bWVudGF0aW9uIGlmIGVuYWJsZWQNCi0JZ290byBl
bmQNCi0pDQotDQotaWYgIiUxIiA9PSAiY2xlYW4iICgNCi0JZm9yIC9kICUlaSBpbiAoJUJVSUxE
RElSJVwqKSBkbyBybWRpciAvcSAvcyAlJWkNCi0JZGVsIC9xIC9zICVCVUlMRERJUiVcKg0KLQln
b3RvIGVuZA0KLSkNCi0NCi0NCi0lU1BISU5YQlVJTEQlIDI+IG51bA0KLWlmIGVycm9ybGV2ZWwg
OTAwOSAoDQotCWVjaG8uDQotCWVjaG8uVGhlICdzcGhpbngtYnVpbGQnIGNvbW1hbmQgd2FzIG5v
dCBmb3VuZC4gTWFrZSBzdXJlIHlvdSBoYXZlIFNwaGlueA0KLQllY2hvLmluc3RhbGxlZCwgdGhl
biBzZXQgdGhlIFNQSElOWEJVSUxEIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHBvaW50DQotCWVj
aG8udG8gdGhlIGZ1bGwgcGF0aCBvZiB0aGUgJ3NwaGlueC1idWlsZCcgZXhlY3V0YWJsZS4gQWx0
ZXJuYXRpdmVseSB5b3UNCi0JZWNoby5tYXkgYWRkIHRoZSBTcGhpbnggZGlyZWN0b3J5IHRvIFBB
VEguDQotCWVjaG8uDQotCWVjaG8uSWYgeW91IGRvbid0IGhhdmUgU3BoaW54IGluc3RhbGxlZCwg
Z3JhYiBpdCBmcm9tDQotCWVjaG8uaHR0cDovL3NwaGlueC1kb2Mub3JnLw0KLQlleGl0IC9iIDEN
Ci0pDQotDQotaWYgIiUxIiA9PSAiaHRtbCIgKA0KLQklU1BISU5YQlVJTEQlIC1iIGh0bWwgJUFM
TFNQSElOWE9QVFMlICVCVUlMRERJUiUvaHRtbA0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAx
DQotCWVjaG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQuIFRoZSBIVE1MIHBhZ2VzIGFyZSBpbiAl
QlVJTERESVIlL2h0bWwuDQotCWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gImRpcmh0bWwi
ICgNCi0JJVNQSElOWEJVSUxEJSAtYiBkaXJodG1sICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIl
L2Rpcmh0bWwNCi0JaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1
aWxkIGZpbmlzaGVkLiBUaGUgSFRNTCBwYWdlcyBhcmUgaW4gJUJVSUxERElSJS9kaXJodG1sLg0K
LQlnb3RvIGVuZA0KLSkNCi0NCi1pZiAiJTEiID09ICJzaW5nbGVodG1sIiAoDQotCSVTUEhJTlhC
VUlMRCUgLWIgc2luZ2xlaHRtbCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9zaW5nbGVodG1s
DQotCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4NCi0JZWNoby5CdWlsZCBmaW5p
c2hlZC4gVGhlIEhUTUwgcGFnZXMgYXJlIGluICVCVUlMRERJUiUvc2luZ2xlaHRtbC4NCi0JZ290
byBlbmQNCi0pDQotDQotaWYgIiUxIiA9PSAicGlja2xlIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIg
cGlja2xlICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL3BpY2tsZQ0KLQlpZiBlcnJvcmxldmVs
IDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2Fu
IHByb2Nlc3MgdGhlIHBpY2tsZSBmaWxlcy4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9
PSAianNvbiIgKA0KLQklU1BISU5YQlVJTEQlIC1iIGpzb24gJUFMTFNQSElOWE9QVFMlICVCVUlM
RERJUiUvanNvbg0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8u
QnVpbGQgZmluaXNoZWQ7IG5vdyB5b3UgY2FuIHByb2Nlc3MgdGhlIEpTT04gZmlsZXMuDQotCWdv
dG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gImh0bWxoZWxwIiAoDQotCSVTUEhJTlhCVUlMRCUg
LWIgaHRtbGhlbHAgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvaHRtbGhlbHANCi0JaWYgZXJy
b3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlzaGVkOyBub3cg
eW91IGNhbiBydW4gSFRNTCBIZWxwIFdvcmtzaG9wIHdpdGggdGhlIF4NCi0uaGhwIHByb2plY3Qg
ZmlsZSBpbiAlQlVJTERESVIlL2h0bWxoZWxwLg0KLQlnb3RvIGVuZA0KLSkNCi0NCi1pZiAiJTEi
ID09ICJxdGhlbHAiICgNCi0JJVNQSElOWEJVSUxEJSAtYiBxdGhlbHAgJUFMTFNQSElOWE9QVFMl
ICVCVUlMRERJUiUvcXRoZWxwDQotCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4N
Ci0JZWNoby5CdWlsZCBmaW5pc2hlZDsgbm93IHlvdSBjYW4gcnVuICJxY29sbGVjdGlvbmdlbmVy
YXRvciIgd2l0aCB0aGUgXg0KLS5xaGNwIHByb2plY3QgZmlsZSBpbiAlQlVJTERESVIlL3F0aGVs
cCwgbGlrZSB0aGlzOg0KLQllY2hvLl4+IHFjb2xsZWN0aW9uZ2VuZXJhdG9yICVCVUlMRERJUiVc
cXRoZWxwXHdwdHJ1bm5lci5xaGNwDQotCWVjaG8uVG8gdmlldyB0aGUgaGVscCBmaWxlOg0KLQll
Y2hvLl4+IGFzc2lzdGFudCAtY29sbGVjdGlvbkZpbGUgJUJVSUxERElSJVxxdGhlbHBcd3B0cnVu
bmVyLmdoYw0KLQlnb3RvIGVuZA0KLSkNCi0NCi1pZiAiJTEiID09ICJkZXZoZWxwIiAoDQotCSVT
UEhJTlhCVUlMRCUgLWIgZGV2aGVscCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9kZXZoZWxw
DQotCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4NCi0JZWNoby5CdWlsZCBmaW5p
c2hlZC4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9PSAiZXB1YiIgKA0KLQklU1BISU5Y
QlVJTEQlIC1iIGVwdWIgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvZXB1Yg0KLQlpZiBlcnJv
cmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8uQnVpbGQgZmluaXNoZWQuIFRoZSBl
cHViIGZpbGUgaXMgaW4gJUJVSUxERElSJS9lcHViLg0KLQlnb3RvIGVuZA0KLSkNCi0NCi1pZiAi
JTEiID09ICJsYXRleCIgKA0KLQklU1BISU5YQlVJTEQlIC1iIGxhdGV4ICVBTExTUEhJTlhPUFRT
JSAlQlVJTERESVIlL2xhdGV4DQotCWlmIGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4N
Ci0JZWNoby5CdWlsZCBmaW5pc2hlZDsgdGhlIExhVGVYIGZpbGVzIGFyZSBpbiAlQlVJTERESVIl
L2xhdGV4Lg0KLQlnb3RvIGVuZA0KLSkNCi0NCi1pZiAiJTEiID09ICJsYXRleHBkZiIgKA0KLQkl
U1BISU5YQlVJTEQlIC1iIGxhdGV4ICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2xhdGV4DQot
CWNkICVCVUlMRERJUiUvbGF0ZXgNCi0JbWFrZSBhbGwtcGRmDQotCWNkICVCVUlMRERJUiUvLi4N
Ci0JZWNoby4NCi0JZWNoby5CdWlsZCBmaW5pc2hlZDsgdGhlIFBERiBmaWxlcyBhcmUgaW4gJUJV
SUxERElSJS9sYXRleC4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9PSAibGF0ZXhwZGZq
YSIgKA0KLQklU1BISU5YQlVJTEQlIC1iIGxhdGV4ICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIl
L2xhdGV4DQotCWNkICVCVUlMRERJUiUvbGF0ZXgNCi0JbWFrZSBhbGwtcGRmLWphDQotCWNkICVC
VUlMRERJUiUvLi4NCi0JZWNoby4NCi0JZWNoby5CdWlsZCBmaW5pc2hlZDsgdGhlIFBERiBmaWxl
cyBhcmUgaW4gJUJVSUxERElSJS9sYXRleC4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9
PSAidGV4dCIgKA0KLQklU1BISU5YQlVJTEQlIC1iIHRleHQgJUFMTFNQSElOWE9QVFMlICVCVUlM
RERJUiUvdGV4dA0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8u
QnVpbGQgZmluaXNoZWQuIFRoZSB0ZXh0IGZpbGVzIGFyZSBpbiAlQlVJTERESVIlL3RleHQuDQot
CWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gIm1hbiIgKA0KLQklU1BISU5YQlVJTEQlIC1i
IG1hbiAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9tYW4NCi0JaWYgZXJyb3JsZXZlbCAxIGV4
aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZpbmlzaGVkLiBUaGUgbWFudWFsIHBhZ2Vz
IGFyZSBpbiAlQlVJTERESVIlL21hbi4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9PSAi
dGV4aW5mbyIgKA0KLQklU1BISU5YQlVJTEQlIC1iIHRleGluZm8gJUFMTFNQSElOWE9QVFMlICVC
VUlMRERJUiUvdGV4aW5mbw0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQot
CWVjaG8uQnVpbGQgZmluaXNoZWQuIFRoZSBUZXhpbmZvIGZpbGVzIGFyZSBpbiAlQlVJTERESVIl
L3RleGluZm8uDQotCWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gImdldHRleHQiICgNCi0J
JVNQSElOWEJVSUxEJSAtYiBnZXR0ZXh0ICVJMThOU1BISU5YT1BUUyUgJUJVSUxERElSJS9sb2Nh
bGUNCi0JaWYgZXJyb3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLkJ1aWxkIGZp
bmlzaGVkLiBUaGUgbWVzc2FnZSBjYXRhbG9ncyBhcmUgaW4gJUJVSUxERElSJS9sb2NhbGUuDQot
CWdvdG8gZW5kDQotKQ0KLQ0KLWlmICIlMSIgPT0gImNoYW5nZXMiICgNCi0JJVNQSElOWEJVSUxE
JSAtYiBjaGFuZ2VzICVBTExTUEhJTlhPUFRTJSAlQlVJTERESVIlL2NoYW5nZXMNCi0JaWYgZXJy
b3JsZXZlbCAxIGV4aXQgL2IgMQ0KLQllY2hvLg0KLQllY2hvLlRoZSBvdmVydmlldyBmaWxlIGlz
IGluICVCVUlMRERJUiUvY2hhbmdlcy4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUxIiA9PSAi
bGlua2NoZWNrIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIgbGlua2NoZWNrICVBTExTUEhJTlhPUFRT
JSAlQlVJTERESVIlL2xpbmtjaGVjaw0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVj
aG8uDQotCWVjaG8uTGluayBjaGVjayBjb21wbGV0ZTsgbG9vayBmb3IgYW55IGVycm9ycyBpbiB0
aGUgYWJvdmUgb3V0cHV0IF4NCi1vciBpbiAlQlVJTERESVIlL2xpbmtjaGVjay9vdXRwdXQudHh0
Lg0KLQlnb3RvIGVuZA0KLSkNCi0NCi1pZiAiJTEiID09ICJkb2N0ZXN0IiAoDQotCSVTUEhJTlhC
VUlMRCUgLWIgZG9jdGVzdCAlQUxMU1BISU5YT1BUUyUgJUJVSUxERElSJS9kb2N0ZXN0DQotCWlm
IGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4NCi0JZWNoby5UZXN0aW5nIG9mIGRvY3Rl
c3RzIGluIHRoZSBzb3VyY2VzIGZpbmlzaGVkLCBsb29rIGF0IHRoZSBeDQotcmVzdWx0cyBpbiAl
QlVJTERESVIlL2RvY3Rlc3Qvb3V0cHV0LnR4dC4NCi0JZ290byBlbmQNCi0pDQotDQotaWYgIiUx
IiA9PSAieG1sIiAoDQotCSVTUEhJTlhCVUlMRCUgLWIgeG1sICVBTExTUEhJTlhPUFRTJSAlQlVJ
TERESVIlL3htbA0KLQlpZiBlcnJvcmxldmVsIDEgZXhpdCAvYiAxDQotCWVjaG8uDQotCWVjaG8u
QnVpbGQgZmluaXNoZWQuIFRoZSBYTUwgZmlsZXMgYXJlIGluICVCVUlMRERJUiUveG1sLg0KLQln
b3RvIGVuZA0KLSkNCi0NCi1pZiAiJTEiID09ICJwc2V1ZG94bWwiICgNCi0JJVNQSElOWEJVSUxE
JSAtYiBwc2V1ZG94bWwgJUFMTFNQSElOWE9QVFMlICVCVUlMRERJUiUvcHNldWRveG1sDQotCWlm
IGVycm9ybGV2ZWwgMSBleGl0IC9iIDENCi0JZWNoby4NCi0JZWNoby5CdWlsZCBmaW5pc2hlZC4g
VGhlIHBzZXVkby1YTUwgZmlsZXMgYXJlIGluICVCVUlMRERJUiUvcHNldWRveG1sLg0KLQlnb3Rv
IGVuZA0KLSkNCi0NCi06ZW5kDQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy91c2FnZS5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9k
b2NzL3VzYWdlLnJzdAppbmRleCA1OTk3ZjQyNTRmMWVlYWFiNDg3ODBhYWJmYTNkMjMzZmVmN2Y2
NjdmLi44NWZkOTdiZjZjMTJhMWZjM2EyZGJiZDI0ZWMyYzMyNjU5ZGI5MTE0IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9kb2NzL3VzYWdlLnJzdAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL3VzYWdlLnJzdApAQCAtMTY0LDIwICsx
NjQsMjQgQEAgbWV0YWRhdGEgZmlsZXMgaW4gYSBzdWJkaXJlY3Rvcnkgb2YgdGhlIGN1cnJlbnQg
ZGlyZWN0b3J5IG5hbWVkIGBgbWV0YWBgLgogT3V0cHV0CiAtLS0tLS0KIAotd3B0cnVubmVyIHVz
ZXMgdGhlIDpweTptb2Q6YG1vemxvZ2AgcGFja2FnZSBmb3Igb3V0cHV0LiBUaGlzCi1zdHJ1Y3R1
cmVzIGV2ZW50cyBzdWNoIGFzIHRlc3QgcmVzdWx0cyBvciBsb2cgbWVzc2FnZXMgYXMgSlNPTiBv
YmplY3RzCi10aGF0IGNhbiB0aGVuIGJlIGZlZCB0byBvdGhlciB0b29scyBmb3IgaW50ZXJwcmV0
YXRpb24uIE1vcmUgZGV0YWlscwotYWJvdXQgdGhlIG1lc3NhZ2UgZm9ybWF0IGFyZSBnaXZlbiBp
biB0aGUKLTpweTptb2Q6YG1vemxvZ2AgZG9jdW1lbnRhdGlvbi4KK3dwdHJ1bm5lciB1c2VzIGB0
aGUgbW96bG9nIHBhY2thZ2UKKzxodHRwczovL2ZpcmVmb3gtc291cmNlLWRvY3MubW96aWxsYS5v
cmcvbW96YmFzZS9tb3psb2cuaHRtbD5gXykgZm9yCitvdXRwdXQuIFRoaXMgc3RydWN0dXJlcyBl
dmVudHMgc3VjaCBhcyB0ZXN0IHJlc3VsdHMgb3IgbG9nIG1lc3NhZ2VzIGFzCitKU09OIG9iamVj
dHMgdGhhdCBjYW4gdGhlbiBiZSBmZWQgdG8gb3RoZXIgdG9vbHMgZm9yCitpbnRlcnByZXRhdGlv
bi4gTW9yZSBkZXRhaWxzIGFib3V0IHRoZSBtZXNzYWdlIGZvcm1hdCBhcmUgZ2l2ZW4gaW4KK2B0
aGUgbW96bG9nIGRvY3VtZW50YXRpb24KKzxodHRwczovL2ZpcmVmb3gtc291cmNlLWRvY3MubW96
aWxsYS5vcmcvbW96YmFzZS9tb3psb2cuaHRtbD5gXy4KIAogQnkgZGVmYXVsdCB0aGUgcmF3IEpT
T04gbWVzc2FnZXMgYXJlIGR1bXBlZCB0byBzdGRvdXQuIFRoaXMgaXMKIGNvbnZlbmllbnQgZm9y
IHBpcGluZyBpbnRvIG90aGVyIHRvb2xzLCBidXQgbm90IGlkZWFsIGZvciBodW1hbnMKLXJlYWRp
bmcgdGhlIG91dHB1dC4gOnB5Om1vZDpgbW96bG9nYCBjb21lcyB3aXRoIHNldmVyYWwgb3RoZXIK
LWZvcm1hdHRlcnMsIHdoaWNoIGFyZSBhY2Nlc3NpYmxlIHRocm91Z2ggY29tbWFuZCBsaW5lIG9w
dGlvbnMuIFRoZQotZ2VuZXJhbCBmb3JtYXQgb2YgdGhlc2Ugb3B0aW9ucyBpcyBgYC0tbG9nLW5h
bWU9ZGVzdGBgLCB3aGVyZSBgYG5hbWVgYAotaXMgdGhlIG5hbWUgb2YgdGhlIGZvcm1hdCBhbmQg
YGBkZXN0YGAgaXMgYSBwYXRoIHRvIGEgZGVzdGluYXRpb24KLWZpbGUsIG9yIGBgLWBgIGZvciBz
dGRvdXQuIFRoZSByYXcgSlNPTiBkYXRhIGlzIHdyaXR0ZW4gYnkgdGhlIGBgcmF3YGAKLWZvcm1h
dHRlciBzbywgdGhlIGRlZmF1bHQgc2V0dXAgY29ycmVzcG9uZHMgdG8gYGAtLWxvZy1yYXc9LWBg
LgorcmVhZGluZyB0aGUgb3V0cHV0LiBgbW96bG9nCis8aHR0cHM6Ly9maXJlZm94LXNvdXJjZS1k
b2NzLm1vemlsbGEub3JnL21vemJhc2UvbW96bG9nLmh0bWw+YF8gY29tZXMKK3dpdGggc2V2ZXJh
bCBvdGhlciBmb3JtYXR0ZXJzLCB3aGljaCBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIGNvbW1hbmQK
K2xpbmUgb3B0aW9ucy4gVGhlIGdlbmVyYWwgZm9ybWF0IG9mIHRoZXNlIG9wdGlvbnMgaXMKK2Bg
LS1sb2ctbmFtZT1kZXN0YGAsIHdoZXJlIGBgbmFtZWBgIGlzIHRoZSBuYW1lIG9mIHRoZSBmb3Jt
YXQgYW5kCitgYGRlc3RgYCBpcyBhIHBhdGggdG8gYSBkZXN0aW5hdGlvbiBmaWxlLCBvciBgYC1g
YCBmb3Igc3Rkb3V0LiBUaGUgcmF3CitKU09OIGRhdGEgaXMgd3JpdHRlbiBieSB0aGUgYGByYXdg
YCBmb3JtYXR0ZXIgc28sIHRoZSBkZWZhdWx0IHNldHVwCitjb3JyZXNwb25kcyB0byBgYC0tbG9n
LXJhdz0tYGAuCiAKIEEgcmVhc29uYWJsZSBvdXRwdXQgZm9ybWF0IGZvciBodW1hbnMgaXMgcHJv
dmlkZWQgYXMgYGBtYWNoYGAuIFNvIGluCiBvcmRlciB0byBvdXRwdXQgdGhlIGZ1bGwgcmF3IGxv
ZyB0byBhIGZpbGUgYW5kIGEgaHVtYW4tcmVhZGFibGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyYTRmMWQxOWNmYWRjMGZkN2Y0ZmE4ZmI3OGQ1YzcwYjI2M2I2NzM0Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL2RvY3MvdzNjLWlt
cG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhp
cyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5P
VCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRl
IGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93
ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9y
dC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVt
b3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2Nz
L01ha2VmaWxlCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvZG9jcy9hcmNoaXRlY3R1cmUuc3ZnCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy9jb25mLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvZG9jcy9kZXNpZ24ucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvZG9jcy9leHBlY3RhdGlvbi5yc3QKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL2lu
ZGV4LnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL2RvY3MvbWFrZS5iYXQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9kb2NzL3VzYWdlLnJzdApkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50cy50eHQKaW5kZXggZmNiNTky
MmQxMGQ1MzcxODk5N2QwZDVkY2EyZTNmOTJlMDg2MmM4Yi4uM2NkMDE0NDZlMjViY2ViNGRhZGVm
NDgyNTkxMTdiZDA1N2VhNmY0OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dAorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9yZXF1aXJlbWVudHMudHh0CkBAIC0xLDUgKzEsOCBAQAotaHRtbDVsaWIgPT0gMS4wLjEK
LW1vemluZm8gPT0gMC4xMAotbW96bG9nPT0zLjgKLW1vemRlYnVnID09IDAuMQotdXJsbGliM1tz
ZWN1cmVdID09IDEuMjIKK2h0bWw1bGliPT0xLjAuMQorbW96aW5mbz09MS4xLjAKK21vemxvZz09
NS4wCittb3pkZWJ1Zz09MC4xLjEKK3BpbGxvdz09Ni4yLjEKK3VybGxpYjNbc2VjdXJlXT09MS4y
NS43CityZXF1ZXN0cz09Mi4yMi4wCitzaXg9PTEuMTMuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWly
ZW1lbnRzX2Nocm9tZS50eHQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dAppbmRleCAyMmEw
NzUzMjY1N2RhZGI3OWM0MDRmY2I2MWEyNmUxYTEyN2I4Y2MyLi40NzBhYWY5YTkzOTk2ZDAyMzFl
MTNlMDVjYzM1NTU3YTM2ZDI1ZGU5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21l
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lLnR4dApAQCAtMSwyICsxIEBACi1tb3pw
cm9jZXNzID09IDAuMjYKLXNlbGVuaXVtPT0zLjE0LjAKK21venByb2Nlc3M9PTEuMC4wCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lX2FuZHJvaWQudHh0IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1l
bnRzX2Nocm9tZV9hbmRyb2lkLnR4dAppbmRleCAyMmEwNzUzMjY1N2RhZGI3OWM0MDRmY2I2MWEy
NmUxYTEyN2I4Y2MyLi40NzBhYWY5YTkzOTk2ZDAyMzFlMTNlMDVjYzM1NTU3YTM2ZDI1ZGU5IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfY2hyb21lX2FuZHJvaWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Jl
cXVpcmVtZW50c19jaHJvbWVfYW5kcm9pZC50eHQKQEAgLTEsMiArMSBAQAotbW96cHJvY2VzcyA9
PSAwLjI2Ci1zZWxlbml1bT09My4xNC4wCittb3pwcm9jZXNzPT0xLjAuMApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvcmVxdWlyZW1lbnRzX2VkZ2UudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2VkZ2UudHh0CmluZGV4
IDIyYTA3NTMyNjU3ZGFkYjc5YzQwNGZjYjYxYTI2ZTFhMTI3YjhjYzIuLjFiZjZlZjMyYWQ0NzNh
NzE2Y2M5NjlkMDZmMTQ3ZTVlODI3YWRlMzUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19l
ZGdlLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfZWRnZS50eHQKQEAgLTEsMiArMSwyIEBACi1t
b3pwcm9jZXNzID09IDAuMjYKLXNlbGVuaXVtPT0zLjE0LjAKK21venByb2Nlc3M9PTEuMC4wCitz
ZWxlbml1bT09My4xNDEuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvcmVxdWlyZW1lbnRzX2ZpcmVmb3gudHh0CmluZGV4IGYxZTZhODU4NWNhYTYzYjViZDRi
OWIyNTk0ZjcxNzBmYTQ5ZjA0ZWQuLjRjYmI3YTVlYzAyOTNlZmYxZWYxOThhMjFlY2RjOTBmZWNm
NDE0MTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19maXJlZm94LnR4dAorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9y
ZXF1aXJlbWVudHNfZmlyZWZveC50eHQKQEAgLTEsOSArMSwxMSBAQAotbWFyaW9uZXR0ZV9kcml2
ZXI9PTIuNi4wCi1tb3pwcm9maWxlPT0xLjEuMAotbW96cHJvY2VzcyA9PSAwLjI2Ci1tb3pjcmFz
aCA9PSAxLjAKLW1venJ1bm5lciA9PSA3LjAuMAotbW96bGVhayA9PSAwLjEKLW1vemluc3RhbGw9
PTEuMTYuMAotbW96ZG93bmxvYWQ9PTEuMjQKLQorbWFyaW9uZXR0ZV9kcml2ZXI9PTMuMC4wCitt
b3pjcmFzaD09MS4xLjAKK21vemRvd25sb2FkPT0xLjI2LjAKK21vemluc3RhbGw9PTIuMC4wCitt
b3psZWFrPT0wLjIKK21vem5ldHdvcms9PTAuMjcKK21venByb2Nlc3M9PTEuMC4wCittb3pwcm9m
aWxlPT0yLjQuMAorbW96cnVubmVyPT03LjcuMAorbW96dmVyc2lvbj09Mi4yLjAKK3BzdXRpbD09
NS42LjcKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19pZS50eHQgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVu
dHNfaWUudHh0CmluZGV4IDIyYTA3NTMyNjU3ZGFkYjc5YzQwNGZjYjYxYTI2ZTFhMTI3YjhjYzIu
LjFiZjZlZjMyYWQ0NzNhNzE2Y2M5NjlkMDZmMTQ3ZTVlODI3YWRlMzUgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3JlcXVpcmVtZW50c19pZS50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2llLnR4dApAQCAtMSwy
ICsxLDIgQEAKLW1venByb2Nlc3MgPT0gMC4yNgotc2VsZW5pdW09PTMuMTQuMAorbW96cHJvY2Vz
cz09MS4wLjAKK3NlbGVuaXVtPT0zLjE0MS4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNf
b3BlcmEudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX29wZXJhLnR4dAppbmRleCAyMmEwNzUzMjY1N2Rh
ZGI3OWM0MDRmY2I2MWEyNmUxYTEyN2I4Y2MyLi4xYmY2ZWYzMmFkNDczYTcxNmNjOTY5ZDA2ZjE0
N2U1ZTgyN2FkZTM1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfb3BlcmEudHh0CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3JlcXVpcmVtZW50c19vcGVyYS50eHQKQEAgLTEsMiArMSwyIEBACi1tb3pwcm9jZXNzID09
IDAuMjYKLXNlbGVuaXVtPT0zLjE0LjAKK21venByb2Nlc3M9PTEuMC4wCitzZWxlbml1bT09My4x
NDEuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhZmFyaS50eHQgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJl
bWVudHNfc2FmYXJpLnR4dAppbmRleCA1YTFkMjZiOGI5YmNjZDVjYmJlNjM3YzdkMTE1ODA4YjRm
ZDg1ZjQ5Li40NzBhYWY5YTkzOTk2ZDAyMzFlMTNlMDVjYzM1NTU3YTM2ZDI1ZGU5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci9yZXF1aXJlbWVudHNfc2FmYXJpLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2Fm
YXJpLnR4dApAQCAtMSwyICsxIEBACi1tb3pwcm9jZXNzID09IDAuMjYKLXNlbGVuaXVtPT0zLjEz
LjAKK21venByb2Nlc3M9PTEuMC4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2Uu
dHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NhdWNlLnR4dAppbmRleCA3N2E3NDIyMjQzM2E2OTNjODQ1
OGY0YTA1ODU3YzdlZDZkYjg1NjAxLi4zMmI1ZjY0ZDE0ZmQwM2RmNGVlYWNiNTc4MzkyMTBhMjZh
MjgzZmE3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2UudHh0CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Jl
cXVpcmVtZW50c19zYXVjZS50eHQKQEAgLTEsMyArMSwzIEBACi1tb3pwcm9jZXNzID09IDAuMjYK
LXNlbGVuaXVtPT0zLjE0LjAKLXJlcXVlc3RzPT0yLjE5LjEKK21venByb2Nlc3M9PTEuMC4wCitz
ZWxlbml1bT09My4xNDEuMAorcmVxdWVzdHM9PTIuMjIuMApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWly
ZW1lbnRzX3NlcnZvLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19zZXJ2by50eHQKaW5kZXggOTExNWI3
YWM0ZThmNmE2ZTQ3MDNhN2I2MWQyNzE1MDc1ZTJmNjA1My4uNDcwYWFmOWE5Mzk5NmQwMjMxZTEz
ZTA1Y2MzNTU1N2EzNmQyNWRlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX3NlcnZvLnR4
dAorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2Vydm8udHh0CkBAIC0xICsxIEBACi1tb3pwcm9jZXNz
ID09IDAuMjYKK21venByb2Nlc3M9PTEuMC4wCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNf
d2Via2l0LnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQudHh0CmluZGV4IDI1Y2M1ODQ2ZWU3
MjA0OTIzMjE3Mzk2MTkxOTk2ZTE1ZmQyM2RjMTMuLjQ3MGFhZjlhOTM5OTZkMDIzMWUxM2UwNWNj
MzU1NTdhMzZkMjVkZTkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQudHh0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQudHh0CkBAIC0xLDIgKzEgQEAKLW1venByb2Nlc3Mg
PT0gMC4yNgotc2VsZW5pdW0gPT0gMy45LjAKK21venByb2Nlc3M9PTEuMC4wCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci9zZXR1cC5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3NldHVwLnB5CmluZGV4IDYzZDNlZGRlMjQ0ZDBiOWU4OGFiYmRh
YThjNTc5YTRhODgwNzIzNmEuLmFiOTZiZDEwMzU3Y2Q2YjMwMjIzNjRkNDcxZTVjZWJmMGNiNjUy
ZGQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3NldHVwLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3NldHVwLnB5CkBAIC0yLDYgKzIs
OCBAQAogIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlz
dHJpYnV0ZWQgd2l0aCB0aGlzIGZpbGUsCiAjIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8v
bW96aWxsYS5vcmcvTVBMLzIuMC8uCiAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVu
Y3Rpb24KKwogaW1wb3J0IGdsb2IKIGltcG9ydCBvcwogaW1wb3J0IHN5cwpAQCAtNTUsMTcgKzU3
LDE2IEBAIHNldHVwKG5hbWU9UEFDS0FHRV9OQU1FLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJwcmVmcy8qIl19LAogICAgICAgaW5jbHVkZV9wYWNrYWdlX2RhdGE9VHJ1ZSwK
ICAgICAgIGRhdGFfZmlsZXM9WygicmVxdWlyZW1lbnRzIiwgcmVxdWlyZW1lbnRzX2ZpbGVzKV0s
Ci0gICAgICBpbnN0YWxsX3JlcXVpcmVzPWRlcHMKICAgICAgICkKIAogaWYgImluc3RhbGwiIGlu
IHN5cy5hcmd2OgogICAgIHBhdGggPSBvcy5wYXRoLnJlbHBhdGgob3MucGF0aC5qb2luKHN5cy5w
cmVmaXgsICJyZXF1aXJlbWVudHMiKSwgb3MuY3VyZGlyKQotICAgIHByaW50IHRleHR3cmFwLmZp
bGwoIiIiSW4gb3JkZXIgdG8gdXNlIHdpdGggb25lIG9mIHRoZSBidWlsdC1pbiBicm93c2VyCisg
ICAgcHJpbnQodGV4dHdyYXAuZmlsbCgiIiJJbiBvcmRlciB0byB1c2Ugd2l0aCBvbmUgb2YgdGhl
IGJ1aWx0LWluIGJyb3dzZXIKIHByb2R1Y3RzLCB5b3Ugd2lsbCBuZWVkIHRvIGluc3RhbGwgdGhl
IGV4dHJhIGRlcGVuZGVuY2llcy4gVGhlc2UgYXJlIHByb3ZpZGVkCiBhcyByZXF1aXJlbWVudHNf
W25hbWVdLnR4dCBpbiB0aGUgJXMgZGlyZWN0b3J5IGFuZCBjYW4gYmUgaW5zdGFsbGVkIHVzaW5n
Ci1lLmcuIiIiICUgcGF0aCwgODApCitlLmcuIiIiICUgcGF0aCwgODApKQogCi0gICAgcHJpbnQg
IiIiCisgICAgcHJpbnQoIiIiCiAKIHBpcCBpbnN0YWxsIC1yICVzL3JlcXVpcmVtZW50c19maXJl
Zm94LnR4dAotIiIiICUgcGF0aAorIiIiICUgcGF0aCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0
YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLmh0bWwuaW5pIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWwuaHRtbC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDgxYWVmMDQ5Y2QxMjJmNzMzMmM2NmY1YTA4Nzk0N2U1MTJhNTlkMGUuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWwuaHRtbC5pbmkKKysrIC9kZXYvbnVsbApAQCAtMSwz
ICswLDAgQEAKLVtyZWZ0ZXN0X2FuZF9mYWlsLmh0bWxdCi0gIHR5cGU6IHJlZnRlc3QKLSAgZXhw
ZWN0ZWQ6IEZBSUwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X2N5Y2xlX2ZhaWwuaHRtbC5pbmkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9j
eWNsZV9mYWlsLmh0bWwuaW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzJiMzNm
Nzc2NGJkZTZlMmFlYTdiYzJjY2Q4YmYzNzM5YmFiYWQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X2N5Y2xlX2ZhaWwuaHRtbC5pbmkKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVtyZWZ0
ZXN0X2N5Y2xlX2ZhaWwuaHRtbF0KLSAgdHlwZTogcmVmdGVzdAotICBleHBlY3RlZDogRkFJTApk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5o
dG1sLmluaSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwuaHRt
bC5pbmkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzZGMzMzYyZmFjNDFiYmU4ZGVk
NDQ1ODllODk4ZWY1ODljYjFhODkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5o
dG1sLmluaQorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotW3JlZnRlc3RfbWF0Y2hfZmFp
bC5odG1sXQotICB0eXBlOiByZWZ0ZXN0Ci0gIGV4cGVjdGVkOiBGQUlMCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLmh0bWwuaW5pIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2hfZmFpbC5odG1sLmluaQpk
ZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTA1NTMzN2UyZDY1Y2I4ZjIxZDJjZWFjNjJl
MzVjZTdiYjk5YTk3Ni4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLmh0bWwu
aW5pCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1bcmVmdGVzdF9taXNtYXRjaF9mYWls
Lmh0bWxdCi0gIHR5cGU6IHJlZnRlc3QKLSAgZXhwZWN0ZWQ6IEZBSUwKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWwuaW5pIGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfcmVmX3RpbWVvdXQuaHRtbC5pbmkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MzYyNDFhZDI5Y2QxNjJmOTYxMDc2YzJiYThlYjk2
MGY3Njk4YzMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfcmVmX3RpbWVvdXQuaHRtbC5pbmkKKysr
IC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVtyZWZ0ZXN0X3JlZl90aW1lb3V0Lmh0bWxdCi0g
IHR5cGU6IHJlZnRlc3QKLSAgZXhwZWN0ZWQ6IFRJTUVPVVQKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
bWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbC5pbmkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFk
YXRhL3JlZnRlc3QvcmVmdGVzdF90aW1lb3V0Lmh0bWwuaW5pCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwZDFiOWJhZGU5NWQ3YjEwMWM4ZGJmNTE1NDdmZmJhZWMyMjYwYzI3Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbC5pbmkKKysrIC9kZXYvbnVsbApAQCAtMSwz
ICswLDAgQEAKLVtyZWZ0ZXN0X3RpbWVvdXQuaHRtbF0KLSAgdHlwZTogcmVmdGVzdAotICBleHBl
Y3RlZDogVElNRU9VVApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3czYy1p
bXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZWU0ZmJiNzYzOTZlYjI2NDFiM2E0MGZmMWFmYTQ3
ZmFhZTNkOGYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDIyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3czYy93ZWItcGxhdGZvcm0tdGVzdHMKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X2FuZF9mYWlsLmh0bWwuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3lj
bGVfZmFpbC5odG1sLmluaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNo
X2ZhaWwuaHRtbC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRj
aF9mYWlsLmh0bWwuaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfcmVmX3Rp
bWVvdXQuaHRtbC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3JlZnRlc3QvcmVmdGVzdF90aW1lb3V0
Lmh0bWwuaW5pCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVm
b3gvc3ViZGlyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9m
aXJlZm94L3N1YmRpci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNjUyZGMwOWRlNTVjM2IwZDI5OGUyOTIzYWE5NTM3MWQxNTg3OTE5OC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3Ro
YXJuZXNzL2ZpcmVmb3gvc3ViZGlyL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MTcgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9maXJlZm94
L3N1YmRpci90ZXN0X3ByZWZfcmVzZXQuaHRtbC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0
YWRhdGEvdGVzdGhhcm5lc3MvZmlyZWZveC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRh
dGEvdGVzdGhhcm5lc3MvZmlyZWZveC93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggN2IxYmIxODMyYTkxODcxOWI3NTA3ZDUzMDA1OGZiYjhkZjM3MjQ5OC4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFk
YXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVm
b3gvX19kaXJfXy5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvdGVz
dF9wcmVmX3NldC5odG1sLmluaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFy
bmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNz
L3N1YmRpci93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWZi
ZDg5ZWZlZmE5NGNkOTJhYmUyMjVmYWEzZDkyYjQ0MDgyMjU2Mi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNz
L3N1YmRpci93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3Mvc3ViZGlyL19fZGlyX18uaW5pCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy9zdWJkaXIvdGVzdGhhcm5lc3NfMS5odG1sLmlu
aQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy93M2MtaW1wb3J0Lmxv
ZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3MvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNGVhMjUzOTcyNWQ3MzUwZjc2ODU0ZjBkYmVjMDJkMGYz
YzFjMzEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC9tZXRhZGF0YS90ZXN0aGFybmVzcy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBA
IC0xLDE5ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVk
IGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJl
Y3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQ
VCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQot
VGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8g
cmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVBy
b3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3MvdGVz
dGhhcm5lc3NfMC5odG1sLmluaQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvbWV0YWRhdGEvdGVzdGhhcm5lc3MvdGVzdGhh
cm5lc3NfZXJyb3IuaHRtbC5pbmkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L21ldGFkYXRhL3Rlc3RoYXJuZXNzL3Rlc3Ro
YXJuZXNzX3RpbWVvdXQuaHRtbC5pbmkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdC5weQppbmRleCA5OTYwZGNkMWUyODEyMGUxYzliYjNhMGNjZGY0MGQ4ZWM5YTk5
OTA0Li44ZjMyM2EzMzg2Yzk5N2NiY2ZhMDEzZTY1ODUwODY0NzFkZGZhMjA4IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3QucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0LnB5CkBAIC0xLDMgKzEsNCBAQAor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IENvbmZpZ1BhcnNl
cgogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgb3MKQEAgLTE1Myw3ICsxNTQsNyBAQCBkZWYgbWFp
bigpOgogICAgICAgICBpZiBhcmdzLnBkYjoKICAgICAgICAgICAgIGltcG9ydCBwZGIKICAgICAg
ICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgICAgIHByaW50IHRyYWNlYmFjay5mb3Jt
YXRfZXhjKCkKKyAgICAgICAgICAgIHByaW50KHRyYWNlYmFjay5mb3JtYXRfZXhjKCkpCiAgICAg
ICAgICAgICBwZGIucG9zdF9tb3J0ZW0oKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmFp
c2UKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi1leHBlY3RlZC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLWV4cGVjdGVkLmh0bWwKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMTQ1ZDYwYjU1YjM1MDI2MzlkMTVmMTBkNGQ2M2E2
YjBmNzliN2QuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw0ICswLDAgQEAKLTxsaW5rIHJlbD1tYXRjaCBocmVmPWdyZWVuLmh0bWw+Ci08c3R5
bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dy
ZWVuLXJlZi1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLXJl
Zi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODE2N2JiNThk
NTcxZTc1ZjU0OTA4MTY2YzU0MmFjYTg0NzMxYWVjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi1yZWYt
ZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJv
b3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi1yZWYu
aHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9ncmVlbi1yZWYuaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMGUxNDVkNjBiNTViMzUwMjYzOWQxNWYxMGQ0ZDYzYTZiMGY3
OWI3ZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4tcmVmLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0
ICswLDAgQEAKLTxsaW5rIHJlbD1tYXRjaCBocmVmPWdyZWVuLmh0bWw+Ci08c3R5bGU+Ci06cm9v
dCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMzgxNjdiYjU4ZDU3MWU3NWY1NDkwODE2NmM1NDJhY2E4NDczMWFlYy4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvZ3JlZW4uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0
eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWQuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMmI2NzdlMDA2MzRiY2QxNmMzMmJhOGQwMjljY2FiMDQwZjAxNjc4
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAK
LTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOnJlZH0KLTwvc3R5bGU+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0
L3JlZnRlc3QuaHR0cHMtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9y
ZWZ0ZXN0Lmh0dHBzLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDM4MTY3YmI1OGQ1NzFlNzVmNTQ5MDgxNjZjNTQyYWNhODQ3MzFhZWMuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0
L3JlZnRlc3QuaHR0cHMtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBA
QAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5v
IG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0Lmh0dHBzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVz
dC5odHRwcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTQ1ZjEwZjM1ZWI0
NzJlYzEzY2M1ZGQyNDdmZjhkZjVjMjY1Mzg1Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0Lmh0dHBz
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLTxsaW5rIHJlbD1tYXRjaCBocmVm
PWdyZWVuLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpyZWR9Ci08L3N0
eWxlPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT09ICJodHRwczoi
KSB7Ci0gICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuYmFja2dyb3VuZENvbG9yID0g
ImdyZWVuIjsKLX0KLTwvc2NyaXB0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbC1leHBlY3Rl
ZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGZiOWFhMTUxNzZlNjE5MWRl
ZDVlY2NmNDQyZmNmZDZjZGNmNTY2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9mYWlsLWV4
cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5SZWZ0ZXN0
IGNoYWluIHRoYXQgc2hvdWxkIGZhaWw8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVk
Lmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+
ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWwuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVz
dC9yZWZ0ZXN0X2FuZF9mYWlsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5
NjAxOTUzNTYyMzhmMDM1NDMyMDdlOWU2YTM1OTkzNjFkYWViOTEuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfYW5kX2ZhaWwuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPHRpdGxl
PlJlZnRlc3QgY2hhaW4gdGhhdCBzaG91bGQgZmFpbDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2gg
aHJlZj1yZWZ0ZXN0X2FuZF9mYWlsXzAtcmVmLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dy
b3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1y
ZWYtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2FuZF9m
YWlsXzAtcmVmLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJi
Njc3ZTAwNjM0YmNkMTZjMzJiYThkMDI5Y2NhYjA0MGYwMTY3ODAuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfYW5kX2ZhaWxfMC1yZWYtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6cmVkfQotPC9zdHlsZT4K
XCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbF8wLXJlZi5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9y
ZWZ0ZXN0L3JlZnRlc3RfYW5kX2ZhaWxfMC1yZWYuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDRmYjlhYTE1MTc2ZTYxOTFkZWQ1ZWNjZjQ0MmZjZmQ2Y2RjZjU2Ni4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvcmVmdGVzdF9hbmRfZmFpbF8wLXJlZi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCBjaGFpbiB0aGF0IHNob3VsZCBmYWlsPC90aXRsZT4K
LTxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZC5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91
bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZS1leHBlY3RlZC5o
dG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMThiZmQ4ODQ0N2I0ODIxMmFmMjll
NTQ4NjFiYjZkNTA5YTVlMWIxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlLWV4cGVjdGVk
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5PUiBtYXRjaCB0aGF0
IHNob3VsZCBwYXNzPC90aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZnRlc3RfY3ljbGVf
MS1yZWYuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9z
dHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfY3ljbGUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE4
NGEzYjY3NDFlZTQxZmU2MTg3YTliZGM3NjZkNzQ5MjA2YzgzYS4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVm
dGVzdF9jeWNsZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVm
dGVzdCB3aXRoIGN5Y2xlLCBhbGwgbWF0Y2g8L3RpdGxlPgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9
cmVmdGVzdF9jeWNsZV8wLXJlZi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29s
b3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAtcmVmLWV4cGVjdGVk
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8wLXJlZi1leHBl
Y3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWJlMGI2NDFkZWY2YmQ3
M2EwY2NhNzJmMTdkMzMwNDY0MWI0OGVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAt
cmVmLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5S
ZWZ0ZXN0IHdpdGggY3ljbGUsIGFsbCBtYXRjaDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJl
Zj1yZWZ0ZXN0X2N5Y2xlLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpn
cmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMC1yZWYuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAtcmVmLmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDExOGJmZDg4NDQ3YjQ4MjEyYWYyOWU1NDg2MWJiNmQ1MDlhNWUx
YjEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVz
dC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMC1yZWYuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDUgKzAsMCBAQAotPHRpdGxlPk9SIG1hdGNoIHRoYXQgc2hvdWxkIHBhc3M8L3RpdGxl
PgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVmdGVzdF9jeWNsZV8xLXJlZi5odG1sPgotPHN0eWxl
PgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUg
YXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X2N5Y2xlXzEtcmVmLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdF9jeWNsZV8xLXJlZi1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCA0YTg0YTNiNjc0MWVlNDFmZTYxODdhOWJkYzc2NmQ3NDkyMDZjODNhLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
cmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzEtcmVmLWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApA
QCAtMSw1ICswLDAgQEAKLTx0aXRsZT5SZWZ0ZXN0IHdpdGggY3ljbGUsIGFsbCBtYXRjaDwvdGl0
bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlXzAtcmVmLmh0bWw+Ci08c3R5
bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGlu
ZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfY3ljbGVfMS1yZWYuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X2N5Y2xlXzEtcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YmUwYjY0
MWRlZjZiZDczYTBjY2E3MmYxN2QzMzA0NjQxYjQ4ZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rf
Y3ljbGVfMS1yZWYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPHRpdGxlPlJl
ZnRlc3Qgd2l0aCBjeWNsZSwgYWxsIG1hdGNoPC90aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVm
PXJlZnRlc3RfY3ljbGUuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdy
ZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLWV4cGVjdGVkLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLWV4cGVjdGVkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ZTU0OGM0NjIyNTU2MzhhMzJjNDc0
YTE3Nzc1OWZmNmQ3Y2NlYWYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC1leHBl
Y3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCB3
aXRoIGN5Y2xlLCBmYWlsczwvdGl0bGU+Ci08bGluayByZWw9bWlzbWF0Y2ggaHJlZj1yZWZ0ZXN0
X2N5Y2xlX2ZhaWwuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVu
fQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLmh0bWwgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rl
c3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE3NWU3NmM0Y2M5YmI3NjVmOGZjOGRmYzM0NDU1YWQyZWI5YmM0MDUuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEs
NSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBmYWlsczwvdGl0bGU+Ci08bGlu
ayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlX2ZhaWxfMC1yZWYuaHRtbD4KLTxzdHlsZT4K
LTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0
IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVz
dF9jeWNsZV9mYWlsXzAtcmVmLWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRl
c3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLWV4cGVjdGVkLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDE3NWU3NmM0Y2M5YmI3NjVmOGZjOGRmYzM0NDU1YWQyZWI5YmM0MDUu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbF8wLXJlZi1leHBlY3RlZC5odG1sCisr
KyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBm
YWlsczwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlX2ZhaWxfMC1y
ZWYuaHRtbD4KLTxzdHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHls
ZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV9mYWlsXzAtcmVmLmh0bWwKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGM4ZTU0OGM0NjIyNTU2MzhhMzJjNDc0YTE3Nzc1OWZmNmQ3Y2NlYWYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfZmFpbF8wLXJlZi5odG1sCisrKyAvZGV2L251
bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+UmVmdGVzdCB3aXRoIGN5Y2xlLCBmYWlsczwvdGl0
bGU+Ci08bGluayByZWw9bWlzbWF0Y2ggaHJlZj1yZWZ0ZXN0X2N5Y2xlX2ZhaWwuaHRtbD4KLTxz
dHlsZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOmdyZWVufQotPC9zdHlsZT4KXCBObyBuZXds
aW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdF9tYXRjaC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfbWF0Y2gtZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MzgxNjdiYjU4ZDU3MWU3NWY1NDkwODE2NmM1NDJhY2E4NDczMWFlYy4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdF9tYXRjaC1leHBlY3RlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBA
Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8g
bmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfbWF0Y2guaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X21hdGNoLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzM2NjNmMxZWNkZjIw
MDBlNGIxMTg1NjU2NjE3NjFiODc2YTcyOTkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2gu
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotPHRpdGxlPnJlbD1tYXRjaCB0aGF0
IHNob3VsZCBwYXNzPC90aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPWdyZWVuLmh0bWw+Ci08
c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3
bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0
L3JlZnRlc3RfbWF0Y2hfZmFpbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAyYjY3N2UwMDYzNGJjZDE2YzMyYmE4ZDAyOWNjYWIwNDBmMDE2NzgwLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRh
dGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoX2ZhaWwtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6cmVkfQot
PC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaF9mYWlsLmh0bWwgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaF9mYWlsLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGE5MjcyZWY3NGRhODczMzdhMDIyM2ZjYjAwZjA1M2NlYmE1ZmI1MmIuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNSAr
MCwwIEBACi08dGl0bGU+cmVsPW1hdGNoIHRoYXQgc2hvdWxkIGZhaWw8L3RpdGxlPgotPGxpbmsg
cmVsPW1hdGNoIGhyZWY9cmVkLmh0bWw+Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xv
cjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2gtZXhwZWN0ZWQuaHRt
bCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoLWV4cGVjdGVkLmh0
bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNjc3ZTAwNjM0YmNkMTZjMzJiYThk
MDI5Y2NhYjA0MGYwMTY3ODAuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2gtZXhwZWN0
ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2Jh
Y2tncm91bmQtY29sb3I6cmVkfQotPC9zdHlsZT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxl
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2guaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWY1ZmEwNzUwZDgzYjY3NTljMzBlYTQzNGZjNTA5
MjU1MjQ2Y2Y4My4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaC5odG1sCisrKyAvZGV2
L251bGwKQEAgLTEsNSArMCwwIEBACi08dGl0bGU+cmVsPW1pc21hdGNoIHRoYXQgc2hvdWxkIHBh
c3M8L3RpdGxlPgotPGxpbmsgcmVsPW1pc21hdGNoIGhyZWY9cmVkLmh0bWw+Ci08c3R5bGU+Ci06
cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBl
bmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rf
bWlzbWF0Y2hfZmFpbC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3Jl
ZnRlc3RfbWlzbWF0Y2hfZmFpbC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzODE2N2JiNThkNTcxZTc1ZjU0OTA4MTY2YzU0MmFjYTg0NzMxYWVjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
cmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoX2ZhaWwtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59
Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoX2ZhaWwuaHRtbCBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoX2ZhaWwuaHRtbApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggOGQxNjBjNGZjMjAwY2E5NzYzMWIxODUwNTg0N2Q1MWZkNzYyYWJh
OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLmh0bWwKKysrIC9kZXYvbnVs
bApAQCAtMSw1ICswLDAgQEAKLTx0aXRsZT5yZWw9bWlzbWF0Y2ggdGhhdCBzaG91bGQgZmFpbDwv
dGl0bGU+Ci08bGluayByZWw9bWlzbWF0Y2ggaHJlZj1ncmVlbi5odG1sPgotPHN0eWxlPgotOnJv
b3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5k
IG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X29y
XzAtZXhwZWN0ZWQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X29yXzAt
ZXhwZWN0ZWQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2NzdlMDA2MzRi
Y2QxNmMzMmJhOGQwMjljY2FiMDQwZjAxNjc4MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8w
LWV4cGVjdGVkLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLTxzdHlsZT4KLTpy
b290IHtiYWNrZ3JvdW5kLWNvbG9yOnJlZH0KLTwvc3R5bGU+ClwgTm8gbmV3bGluZSBhdCBlbmQg
b2YgZmlsZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfb3Jf
MC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfb3JfMC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTUxZGUyMTY0NDEwM2E5M2Y1OWQ0YzU2NTQyOGNj
MmQxNjA2ZTU0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X29yXzAuaHRtbAorKysgL2Rldi9udWxs
CkBAIC0xLDYgKzAsMCBAQAotPHRpdGxlPk9SIG1hdGNoIHRoYXQgc2hvdWxkIHBhc3M8L3RpdGxl
PgotPGxpbmsgcmVsPW1hdGNoIGhyZWY9cmVkLmh0bWw+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1n
cmVlbi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0
eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVz
dGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0LWV4cGVjdGVkLmh0bWwgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC1leHBlY3RlZC5odG1sCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNGNiYjcxZTBjM2M0Mjg2YzAwZDRjMDFlY2U2YWIx
YTFiZWM2MWI4Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3JlZl90aW1lb3V0LWV4cGVjdGVkLmh0
bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTxodG1sIGNsYXNzPSJyZWZ0ZXN0LXdh
aXQiPgotPHRpdGxlPnJlbD1tYXRjaCB0aGF0IHNob3VsZCB0aW1lIG91dCBpbiB0aGUgcmVmPC90
aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPXJlZnRlc3RfcmVmX3RpbWVvdXQtcmVmLmh0bWw+
Ci08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+CmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC5odG1s
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfcmVmX3RpbWVvdXQuaHRtbApkZWxl
dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFmNjhmNWNiNWZhMDRjZDM2NWE3MTkxZWVjZWFm
YTM1Y2MzY2U0YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0g
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi08aHRtbD4KLTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBz
aG91bGQgdGltZSBvdXQgaW4gdGhlIHJlZjwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1y
ZWZ0ZXN0X3JlZl90aW1lb3V0LXJlZi5odG1sPgotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQt
Y29sb3I6Z3JlZW59Ci08L3N0eWxlPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfdGltZW91dC1leHBlY3RlZC5odG1sIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0
ZXN0L3JlZnRlc3RfdGltZW91dC1leHBlY3RlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAzODE2N2JiNThkNTcxZTc1ZjU0OTA4MTY2YzU0MmFjYTg0NzMxYWVjLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
cmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQtZXhwZWN0ZWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDMgKzAsMCBAQAotPHN0eWxlPgotOnJvb3Qge2JhY2tncm91bmQtY29sb3I6Z3JlZW59Ci08L3N0
eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVz
dGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbCBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
YjEwZTY3NmJmMDA1MmU3YmNiZTJlOTIxNGE2OTBiM2NlNjY1ZGE4OC4uMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3Qv
cmVmdGVzdF90aW1lb3V0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLTxodG1s
IGNsYXNzPSJyZWZ0ZXN0LXdhaXQiPgotPHRpdGxlPnJlbD1tYXRjaCB0aGF0IHNob3VsZCB0aW1l
b3V0PC90aXRsZT4KLTxsaW5rIHJlbD1tYXRjaCBocmVmPWdyZWVuLmh0bWw+Ci08c3R5bGU+Ci06
cm9vdCB7YmFja2dyb3VuZC1jb2xvcjpncmVlbn0KLTwvc3R5bGU+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF93YWl0XzAtZXhwZWN0ZWQuaHRtbCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rl
c3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3dhaXRfMC1leHBlY3RlZC5odG1sCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjY3N2UwMDYzNGJjZDE2YzMyYmE4ZDAyOWNjYWIwNDBm
MDE2NzgwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3dhaXRfMC1leHBlY3RlZC5odG1sCisrKyAv
ZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi08c3R5bGU+Ci06cm9vdCB7YmFja2dyb3VuZC1jb2xv
cjpyZWR9Ci08L3N0eWxlPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X3dhaXRfMC5odG1sIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90
ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3Rfd2FpdF8wLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDRmOTI3MTVjNjFlN2Q5MjJhOTQ5NWU5NzM3Yzk5NmU3YzA2YzM3ZDQuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3Rfd2FpdF8wLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCww
IEBACi08aHRtbCBjbGFzcz0icmVmdGVzdC13YWl0Ij4KLTx0aXRsZT5yZWw9bWF0Y2ggdGhhdCBz
aG91bGQgZmFpbDwvdGl0bGU+Ci08bGluayByZWw9bWF0Y2ggaHJlZj1yZWQuaHRtbD4KLTxzdHls
ZT4KLTpyb290IHtiYWNrZ3JvdW5kLWNvbG9yOnJlZH0KLTwvc3R5bGU+Ci08c2NyaXB0Pgotc2V0
VGltZW91dChmdW5jdGlvbigpIHsKLSAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLmJh
Y2tncm91bmRDb2xvciA9ICJncmVlbiI7Ci0gIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGFz
c05hbWUgPSAiIjsKLX0sIDIwMDApOwotPC9zY3JpcHQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3JlZnRlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDll
ZDEwMDgxNDFlY2ViZjVkMzdhYjA0MjI4MWQyNTRlYjA2Y2ZjNGIuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3cz
Yy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotVGhlIHRlc3RzIGlu
IHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1E
byBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNy
ZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5j
b20vdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cwotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9p
bXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9y
IHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJp
bmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5k
b3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
dGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L2dyZWVuLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3JlZnRlc3QvZ3JlZW4tcmVmLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvZ3JlZW4tcmVmLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvZ3JlZW4uaHRt
bAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
cmVmdGVzdC9yZWZ0ZXN0Lmh0dHBzLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvcmVmdGVzdC5odHRwcy5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3RfYW5kX2ZhaWwtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X2FuZF9mYWlsLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9hbmRf
ZmFpbF8wLXJlZi1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3RfYW5kX2ZhaWxfMC1yZWYuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0
X2N5Y2xlLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9j
eWNsZS5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMC1yZWYt
ZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlXzAt
cmVmLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9jeWNsZV8xLXJlZi1l
eHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfY3ljbGVfMS1y
ZWYuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2ZhaWwtZXhw
ZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2ZhaWwu
aHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2ZhaWxfMC1yZWYt
ZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X2N5Y2xlX2Zh
aWxfMC1yZWYuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21hdGNoLWV4
cGVjdGVkLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9tYXRjaC5odG1s
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC1leHBlY3RlZC5o
dG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWF0Y2hfZmFpbC5odG1sCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRlc3RfbWlzbWF0Y2gtZXhwZWN0ZWQuaHRtbAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0ZXN0X21pc21hdGNoLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLWV4cGVjdGVkLmh0bWwKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9taXNtYXRjaF9mYWlsLmh0bWwKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90
ZXN0L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLWV4cGVjdGVkLmh0bWwKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0
L3Rlc3RkYXRhL3JlZnRlc3QvcmVmdGVzdF9vcl8wLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Jl
ZnRlc3QvcmVmdGVzdF9yZWZfdGltZW91dC1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0
YS9yZWZ0ZXN0L3JlZnRlc3RfcmVmX3RpbWVvdXQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X3RpbWVvdXQtZXhwZWN0ZWQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVm
dGVzdC9yZWZ0ZXN0X3RpbWVvdXQuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvcmVmdGVzdC9yZWZ0
ZXN0X3dhaXRfMC1leHBlY3RlZC5odG1sCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS9yZWZ0ZXN0L3JlZnRl
c3Rfd2FpdF8wLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3Mv
ZmlyZWZveC9zdWJkaXIvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJu
ZXNzL2ZpcmVmb3gvc3ViZGlyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAyNmNmNWM3MWM2OThmYTUzZmQzYmI4OGE3ZGQwMzljN2M3ZmFmMmFiLi4wMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEv
dGVzdGhhcm5lc3MvZmlyZWZveC9zdWJkaXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNzL2Zp
cmVmb3gvc3ViZGlyL3Rlc3RfcHJlZl9pbmhlcml0Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rl
c3RoYXJuZXNzL2ZpcmVmb3gvc3ViZGlyL3Rlc3RfcHJlZl9yZXNldC5odG1sCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvdzNjLWltcG9ydC5sb2cgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNzL2ZpcmVmb3gvdzNjLWltcG9ydC5sb2cKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiMzYwNmVkYjNiZTIxMjkwMjhkODU5ZjBhODQ0NjFh
OWFmNTAwZjguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvdGVzdC90ZXN0ZGF0YS90ZXN0aGFybmVzcy9maXJlZm94L3czYy1pbXBvcnQubG9nCisrKyAv
ZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdl
cmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNl
IHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVz
dCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRl
c3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGlu
IFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUu
Ci0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25l
Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0ZGF0YS90ZXN0
aGFybmVzcy9maXJlZm94L3Rlc3RfcHJlZl9kaXIuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVz
dGhhcm5lc3MvZmlyZWZveC90ZXN0X3ByZWZfc2V0Lmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdGRhdGEvdGVzdGhhcm5lc3Mvc3ViZGlyL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
ZGF0YS90ZXN0aGFybmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDg4N2Y4NWVhNzliNWQ4MDA4YjM4NmJjNmQ2YzljZGM3YTBmMWVmNTQuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC90ZXN0
ZGF0YS90ZXN0aGFybmVzcy9zdWJkaXIvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwxNyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNzL3N1YmRp
ci90ZXN0aGFybmVzc18xLmh0bWwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhh
cm5lc3MvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3RoYXJuZXNzL3czYy1p
bXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTE4YWRhYjQwM2Y2YjA5
YTRjYmFkNDA5ZWQ4MzJmZTE0N2YyOGFiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5lc3MvdzNjLWltcG9ydC5s
b2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJl
Y3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2Rp
ZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVs
bCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxh
dGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2Mt
dGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRo
aXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3Ig
cHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3Rk
YXRhL3Rlc3RoYXJuZXNzL3Rlc3RoYXJuZXNzLmh0dHBzLmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRh
L3Rlc3RoYXJuZXNzL3Rlc3RoYXJuZXNzXzAuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhh
cm5lc3MvdGVzdGhhcm5lc3NfZXJyb3IuaHRtbAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdGRhdGEvdGVzdGhhcm5l
c3MvdGVzdGhhcm5lc3NfbG9uZ190aW1lb3V0Lmh0bWwKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90ZXN0L3Rlc3RkYXRhL3Rlc3Ro
YXJuZXNzL3Rlc3RoYXJuZXNzX3RpbWVvdXQuaHRtbApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC93M2Mt
aW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3Rlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGZiMDExYjZiMDRmZGU5NTUyNWUzZjk5NzNjYjdjNzk2NWI1MTQ2MDMuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdGVzdC93M2MtaW1w
b3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlz
IGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9U
IG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUg
YSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dl
Yi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0
LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1v
dmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZl
bmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHBy
ZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3Qv
dGVzdC5jZmcuZXhhbXBsZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3Rlc3QvdGVzdC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdG94Lmlu
aSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3RveC5pbmkKaW5kZXggZmE3OTg1ZWM4MGQ2NjQzYzQ2OGIzYTYxMmU1MWJlZTg0NGNi
MWIxMi4uYWQzNTAyZTAyYTllODEwMTY5NDBjOGYzOWY1NjU0MGY1YWIxZjI2ZCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvdG94LmluaQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci90b3guaW5pCkBAIC0yLDcgKzIsOCBAQAogeGZhaWxfc3Ry
aWN0PXRydWUKIAogW3RveF0KLWVudmxpc3QgPSB7cHkyN30te2Jhc2UsY2hyb21lLGVkZ2UsZmly
ZWZveCxpZSxvcGVyYSxzYWZhcmksc2F1Y2Usc2Vydm99LHB5MjctZmxha2U4CitlbnZsaXN0ID0g
cHkyNy17YmFzZSxjaHJvbWUsZWRnZSxmaXJlZm94LGllLG9wZXJhLHNhZmFyaSxzYXVjZSxzZXJ2
byx3ZWJraXQsd2Via2l0Z3RrX21pbmlicm93c2VyLGVwaXBoYW55fSxweTM2LWJhc2UKK3NraXBf
bWlzc2luZ19pbnRlcnByZXRlcnMgPSB0cnVlCiAKIFt0ZXN0ZW52XQogZGVwcyA9CkBAIC0xOSwx
OCArMjAsMTMgQEAgZGVwcyA9CiAgICAgIHNhZmFyaTogLXJ7dG94aW5pZGlyfS9yZXF1aXJlbWVu
dHNfc2FmYXJpLnR4dAogICAgICBzYXVjZTogLXJ7dG94aW5pZGlyfS9yZXF1aXJlbWVudHNfc2F1
Y2UudHh0CiAgICAgIHNlcnZvOiAtcnt0b3hpbmlkaXJ9L3JlcXVpcmVtZW50c19zZXJ2by50eHQK
KyAgICAgd2Via2l0OiAtcnt0b3hpbmlkaXJ9L3JlcXVpcmVtZW50c193ZWJraXQudHh0CisgICAg
IHdlYmtpdGd0a19taW5pYnJvd3NlcjogLXJ7dG94aW5pZGlyfS9yZXF1aXJlbWVudHNfd2Via2l0
LnR4dAorICAgICBlcGlwaGFueTogLXJ7dG94aW5pZGlyfS9yZXF1aXJlbWVudHNfZXBpcGhhbnku
dHh0CiAKLWNvbW1hbmRzID0gcHl0ZXN0IHtwb3NhcmdzOi0tY292fQorY29tbWFuZHMgPSBweXRl
c3Qge3Bvc2FyZ3N9CiAKIHNldGVudiA9IENVUlJFTlRfVE9YX0VOViA9IHtlbnZuYW1lfQogCi1b
dGVzdGVudjpweTI3LWZsYWtlOF0KLSMgZmxha2U4IHZlcnNpb25zIHNob3VsZCBiZSBrZXB0IGlu
IHN5bmMgYWNyb3NzIHRvb2xzL3RveC5pbmksIHRvb2xzL3dwdC90b3guaW5pLCBhbmQgdG9vbHMv
d3B0cnVubmVyL3RveC5pbmkKLWRlcHMgPQotICAgICBmbGFrZTg9PTMuNS4wCi0gICAgIHB5Y29k
ZXN0eWxlPT0yLjMuMQotICAgICBweWZsYWtlcz09MS42LjAKLSAgICAgcGVwOC1uYW1pbmc9PTAu
NC4xCi0KLWNvbW1hbmRzID0KLSAgICAgZmxha2U4IC0tYXBwZW5kLWNvbmZpZz0uLi9mbGFrZTgu
aW5pCitwYXNzZW52ID0KKyAgVEFTS0NMVVNURVJfUk9PVF9VUkwKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3cz
Yy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDQzNDVjY2U3OGQ0MDRhODUyMDI3Njc3MGQyYjRhZGFkOGZhMjdiMDQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9MSUNFTlNFCi0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
TUFOSUZFU1QuaW4KLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci9SRUFETUUucnN0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzLnR4dAotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3Jl
cXVpcmVtZW50c19jaHJvbWUudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvcmVxdWlyZW1lbnRzX2Nocm9tZV9hbmRyb2lkLnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50c19lZGdlLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c19maXJlZm94LnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3JlcXVpcmVtZW50c19pZS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfb3BlcmEudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvcmVxdWlyZW1lbnRzX3NhZmFyaS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci9yZXF1aXJlbWVudHNfc2F1Y2UudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvcmVxdWlyZW1lbnRzX3NlcnZvLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3JlcXVpcmVtZW50c193ZWJraXQudHh0Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvc2V0dXAucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci90b3guaW5pCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyLmRlZmF1bHQuaW5pCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvX19pbml0X18u
cHkKaW5kZXggYTY4MzRiODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4uZTY5ZGUy
OWJiMmQxZDY0MzRiOGIyOWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9fX2luaXRfXy5weQpAQCAtMSArMCww
IEBACi0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRp
cmVjdG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJv
d3NlcnMvX19pbml0X18ucHkKaW5kZXggZDg2ODJlMTZhNTUxZTVlY2I0MDlhNWYyZDNkZjQ0NGQx
Y2FiNGI3Yy4uOTU3ZDJhNjg5YWNkYTQ4MDFjZGRjMzUxZTFjMmNkNGMwNmE4ZDdlMyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL19faW5pdF9fLnB5CisrKyBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9fX2luaXRfXy5weQpAQCAtMTUsMjIgKzE1LDI4IEBAIGEgZGljdGlvbmFyeSB3
aXRoIHRoZSBmaWVsZHMKICJleGVjdXRvcl9rd2FyZ3MiOiBTdHJpbmcgbmFtaW5nIGEgZnVuY3Rp
b24gdGhhdCB0YWtlcyBodHRwIHNlcnZlciB1cmwgYW5kCiAgICAgICAgICAgICAgICAgICAgdGlt
ZW91dCBtdWx0aXBsaWVyIGFuZCByZXR1cm5zIGt3YXJncyB0byB1c2Ugd2hlbiBjcmVhdGluZwog
ICAgICAgICAgICAgICAgICAgIHRoZSBleGVjdXRvciBjbGFzcy4KLSJlbnZfb3B0aW9ucyI6IFN0
cmluZyBuYW1pbmcgYSBmdW50aW9uIG9mIG5vIGFyZ3VtZW50cyB0aGF0IHJldHVybnMgdGhlCisi
ZW52X29wdGlvbnMiOiBTdHJpbmcgbmFtaW5nIGEgZnVuY3Rpb24gb2Ygbm8gYXJndW1lbnRzIHRo
YXQgcmV0dXJucyB0aGUKICAgICAgICAgICAgICAgIGFyZ3VtZW50cyBwYXNzZWQgdG8gdGhlIFRl
c3RFbnZpcm9ubWVudC4KIAogQWxsIGNsYXNzZXMgYW5kIGZ1bmN0aW9ucyBuYW1lZCBpbiB0aGUg
YWJvdmUgZGljdCBtdXN0IGJlIGltcG9ydGVkIGludG8gdGhlCiBtb2R1bGUgZ2xvYmFsIHNjb3Bl
LgogIiIiCiAKLXByb2R1Y3RfbGlzdCA9IFsiY2hyb21lIiwKK3Byb2R1Y3RfbGlzdCA9IFsiYW5k
cm9pZF93ZWJ2aWV3IiwKKyAgICAgICAgICAgICAgICAiY2hyb21lIiwKICAgICAgICAgICAgICAg
ICAiY2hyb21lX2FuZHJvaWQiLAorICAgICAgICAgICAgICAgICJjaHJvbWVfaW9zIiwKKyAgICAg
ICAgICAgICAgICAiZWRnZWNocm9taXVtIiwKICAgICAgICAgICAgICAgICAiZWRnZSIsCi0gICAg
ICAgICAgICAgICAgImZlbm5lYyIsCisgICAgICAgICAgICAgICAgImVkZ2Vfd2ViZHJpdmVyIiwK
ICAgICAgICAgICAgICAgICAiZmlyZWZveCIsCisgICAgICAgICAgICAgICAgImZpcmVmb3hfYW5k
cm9pZCIsCiAgICAgICAgICAgICAgICAgImllIiwKICAgICAgICAgICAgICAgICAic2FmYXJpIiwK
ICAgICAgICAgICAgICAgICAic2F1Y2UiLAogICAgICAgICAgICAgICAgICJzZXJ2byIsCiAgICAg
ICAgICAgICAgICAgInNlcnZvZHJpdmVyIiwKICAgICAgICAgICAgICAgICAib3BlcmEiLAotICAg
ICAgICAgICAgICAgICJ3ZWJraXQiXQorICAgICAgICAgICAgICAgICJ3ZWJraXQiLAorICAgICAg
ICAgICAgICAgICJ3ZWJraXRndGtfbWluaWJyb3dzZXIiLAorICAgICAgICAgICAgICAgICJlcGlw
aGFueSJdCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvYmFzZS5weSBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9iYXNlLnB5CmluZGV4IGRjMDNlZjcxMWI2MDE0ZTdmM2Q4YTQ1ZWY3
YzkwOTg4OTBiYjA1MDUuLjY1NTM0NDU4MTk3M2MxNWI2NTc3MjlmZWI3MzZkZDIwNzNkNzlhMzAg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9iYXNlLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9icm93c2Vycy9iYXNlLnB5CkBAIC0yLDEyICsyLDMyIEBAIGltcG9ydCBvcwogaW1wb3J0
IHBsYXRmb3JtCiBpbXBvcnQgc29ja2V0CiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJh
Y3RtZXRob2QKK2Zyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKIAogZnJvbSAuLndwdGNvbW1hbmRs
aW5lIGltcG9ydCByZXF1aXJlX2FyZyAgIyBub3FhOiBGNDAxCiAKIGhlcmUgPSBvcy5wYXRoLnNw
bGl0KF9fZmlsZV9fKVswXQogCiAKK2RlZiBpbmhlcml0KHN1cGVyX21vZHVsZSwgY2hpbGRfZ2xv
YmFscywgcHJvZHVjdF9uYW1lKToKKyAgICBzdXBlcl93cHRydW5uZXIgPSBzdXBlcl9tb2R1bGUu
X193cHRydW5uZXJfXworICAgIGNoaWxkX2dsb2JhbHNbIl9fd3B0cnVubmVyX18iXSA9IGNoaWxk
X3dwdHJ1bm5lciA9IGRlZXBjb3B5KHN1cGVyX3dwdHJ1bm5lcikKKworICAgIGNoaWxkX3dwdHJ1
bm5lclsicHJvZHVjdCJdID0gcHJvZHVjdF9uYW1lCisKKyAgICBmb3IgayBpbiAoImNoZWNrX2Fy
Z3MiLCAiYnJvd3NlciIsICJicm93c2VyX2t3YXJncyIsICJleGVjdXRvcl9rd2FyZ3MiLAorICAg
ICAgICAgICAgICAiZW52X2V4dHJhcyIsICJlbnZfb3B0aW9ucyIsICJ0aW1lb3V0X211bHRpcGxp
ZXIiKToKKyAgICAgICAgYXR0ciA9IHN1cGVyX3dwdHJ1bm5lcltrXQorICAgICAgICBjaGlsZF9n
bG9iYWxzW2F0dHJdID0gZ2V0YXR0cihzdXBlcl9tb2R1bGUsIGF0dHIpCisKKyAgICBmb3IgdiBp
biBzdXBlcl9tb2R1bGUuX193cHRydW5uZXJfX1siZXhlY3V0b3IiXS52YWx1ZXMoKToKKyAgICAg
ICAgY2hpbGRfZ2xvYmFsc1t2XSA9IGdldGF0dHIoc3VwZXJfbW9kdWxlLCB2KQorCisgICAgaWYg
InJ1bl9pbmZvX2V4dHJhcyIgaW4gc3VwZXJfd3B0cnVubmVyOgorICAgICAgICBhdHRyID0gc3Vw
ZXJfd3B0cnVubmVyWyJydW5faW5mb19leHRyYXMiXQorICAgICAgICBjaGlsZF9nbG9iYWxzW2F0
dHJdID0gZ2V0YXR0cihzdXBlcl9tb2R1bGUsIGF0dHIpCisKKwogZGVmIGNtZF9hcmcobmFtZSwg
dmFsdWU9Tm9uZSk6CiAgICAgcHJlZml4ID0gIi0iIGlmIHBsYXRmb3JtLnN5c3RlbSgpID09ICJX
aW5kb3dzIiBlbHNlICItLSIKICAgICBydiA9IHByZWZpeCArIG5hbWUKQEAgLTE2LDI3ICszNiw0
OCBAQCBkZWYgY21kX2FyZyhuYW1lLCB2YWx1ZT1Ob25lKToKICAgICByZXR1cm4gcnYKIAogCi1k
ZWYgZ2V0X2ZyZWVfcG9ydChzdGFydF9wb3J0LCBleGNsdWRlPU5vbmUpOgotICAgICIiIkdldCB0
aGUgZmlyc3QgcG9ydCBudW1iZXIgYWZ0ZXIgc3RhcnRfcG9ydCAoaW5jbHVzaXZlKSB0aGF0IGlz
Ci0gICAgbm90IGN1cnJlbnRseSBib3VuZC4KK2RlZiBtYXliZV9hZGRfYXJncyhyZXF1aXJlZF9h
cmdzLCBjdXJyZW50X2FyZ3MpOgorICAgIGZvciByZXF1aXJlZF9hcmcgaW4gcmVxdWlyZWRfYXJn
czoKKyAgICAgICAgIyBJZiB0aGUgYXJnIGlzIGluIHRoZSBmb3JtIG9mICJ2YXJpYWJsZT12YWx1
ZSIsIG9ubHkgYWRkIGl0IGlmCisgICAgICAgICMgbm8gYXJnIHdpdGggYW5vdGhlciB2YWx1ZSBm
b3IgInZhcmlhYmxlIiBpcyBhbHJlYWR5IHRoZXJlLgorICAgICAgICBpZiAiPSIgaW4gcmVxdWly
ZWRfYXJnOgorICAgICAgICAgICAgcmVxdWlyZWRfYXJnX3ByZWZpeCA9ICIlcz0iICUgcmVxdWly
ZWRfYXJnLnNwbGl0KCI9IilbMF0KKyAgICAgICAgICAgIGlmIG5vdCBhbnkoaXRlbS5zdGFydHN3
aXRoKHJlcXVpcmVkX2FyZ19wcmVmaXgpIGZvciBpdGVtIGluIGN1cnJlbnRfYXJncyk6CisgICAg
ICAgICAgICAgICAgY3VycmVudF9hcmdzLmFwcGVuZChyZXF1aXJlZF9hcmcpCisgICAgICAgIGVs
c2U6CisgICAgICAgICAgICBpZiByZXF1aXJlZF9hcmcgbm90IGluIGN1cnJlbnRfYXJnczoKKyAg
ICAgICAgICAgICAgICBjdXJyZW50X2FyZ3MuYXBwZW5kKHJlcXVpcmVkX2FyZykKKyAgICByZXR1
cm4gY3VycmVudF9hcmdzCisKKworZGVmIGNlcnRpZmljYXRlX2RvbWFpbl9saXN0KGxpc3Rfb2Zf
ZG9tYWlucywgY2VydGlmaWNhdGVfZmlsZSk6CisgICAgIiIiQnVpbGQgYSBsaXN0IG9mIGRvbWFp
bnMgd2hlcmUgY2VydGlmaWNhdGVfZmlsZSBzaG91bGQgYmUgdXNlZCIiIgorICAgIGNlcnRfbGlz
dCA9IFtdCisgICAgZm9yIGRvbWFpbiBpbiBsaXN0X29mX2RvbWFpbnM6CisgICAgICAgIGNlcnRf
bGlzdC5hcHBlbmQoeyJob3N0IjogZG9tYWluLCAiY2VydGlmaWNhdGVGaWxlIjogY2VydGlmaWNh
dGVfZmlsZX0pCisgICAgcmV0dXJuIGNlcnRfbGlzdAorCiAKLSAgICA6cGFyYW0gc3RhcnRfcG9y
dDogSW50ZWdlciBwb3J0IG51bWJlciBhdCB3aGljaCB0byBzdGFydCB0ZXN0aW5nLgotICAgIDpw
YXJhbSBleGNsdWRlOiBTZXQgb2YgcG9ydCBudW1iZXJzIHRvIHNraXAiIiIKLSAgICBwb3J0ID0g
c3RhcnRfcG9ydAorZGVmIGdldF9mcmVlX3BvcnQoKToKKyAgICAiIiJHZXQgYSByYW5kb20gdW5i
b3VuZCBwb3J0IiIiCiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgaWYgZXhjbHVkZSBhbmQgcG9y
dCBpbiBleGNsdWRlOgotICAgICAgICAgICAgcG9ydCArPSAxCi0gICAgICAgICAgICBjb250aW51
ZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAg
IHMuYmluZCgoIjEyNy4wLjAuMSIsIHBvcnQpKQorICAgICAgICAgICAgcy5iaW5kKCgiMTI3LjAu
MC4xIiwgMCkpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICBwb3J0
ICs9IDEKKyAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBy
ZXR1cm4gcG9ydAorICAgICAgICAgICAgcmV0dXJuIHMuZ2V0c29ja25hbWUoKVsxXQogICAgICAg
ICBmaW5hbGx5OgogICAgICAgICAgICAgcy5jbG9zZSgpCiAKKworZGVmIGdldF90aW1lb3V0X211
bHRpcGxpZXIodGVzdF90eXBlLCBydW5faW5mb19kYXRhLCAqKmt3YXJncyk6CisgICAgaWYga3dh
cmdzWyJ0aW1lb3V0X211bHRpcGxpZXIiXSBpcyBub3QgTm9uZToKKyAgICAgICAgcmV0dXJuIGt3
YXJnc1sidGltZW91dF9tdWx0aXBsaWVyIl0KKyAgICByZXR1cm4gMQorCisKIGRlZiBicm93c2Vy
X2NvbW1hbmQoYmluYXJ5LCBhcmdzLCBkZWJ1Z19pbmZvKToKICAgICBpZiBkZWJ1Z19pbmZvOgog
ICAgICAgICBpZiBkZWJ1Z19pbmZvLnJlcXVpcmVzRXNjYXBlZEFyZ3M6CkBAIC01NSwyMSArOTYs
MjEgQEAgY2xhc3MgQnJvd3NlckVycm9yKEV4Y2VwdGlvbik6CiAKIAogY2xhc3MgQnJvd3Nlcihv
YmplY3QpOgorICAgICIiIkFic3RyYWN0IGNsYXNzIHNlcnZpbmcgYXMgdGhlIGJhc2lzIGZvciBC
cm93c2VyIGltcGxlbWVudGF0aW9ucy4KKworICAgIFRoZSBCcm93c2VyIGlzIHVzZWQgaW4gdGhl
IFRlc3RSdW5uZXJNYW5hZ2VyIHRvIHN0YXJ0IGFuZCBzdG9wIHRoZSBicm93c2VyCisgICAgcHJv
Y2VzcywgYW5kIHRvIGNoZWNrIHRoZSBzdGF0ZSBvZiB0aGF0IHByb2Nlc3MuIFRoaXMgY2xhc3Mg
YWxzbyBhY3RzIGFzIGEKKyAgICBjb250ZXh0IG1hbmFnZXIsIGVuYWJsaW5nIGl0IHRvIGRvIGJy
b3dzZXItc3BlY2lmaWMgc2V0dXAgYXQgdGhlIHN0YXJ0IG9mCisgICAgdGhlIHRlc3RydW4gYW5k
IGNsZWFudXAgYWZ0ZXIgdGhlIHJ1biBpcyBjb21wbGV0ZS4KKworICAgIDpwYXJhbSBsb2dnZXI6
IFN0cnVjdHVyZWQgbG9nZ2VyIHRvIHVzZSBmb3Igb3V0cHV0LgorICAgICIiIgogICAgIF9fbWV0
YWNsYXNzX18gPSBBQkNNZXRhCiAKICAgICBwcm9jZXNzX2NscyA9IE5vbmUKICAgICBpbml0X3Rp
bWVvdXQgPSAzMAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlcik6Ci0gICAgICAgICIi
IkFic3RyYWN0IGNsYXNzIHNlcnZpbmcgYXMgdGhlIGJhc2lzIGZvciBCcm93c2VyIGltcGxlbWVu
dGF0aW9ucy4KLQotICAgICAgICBUaGUgQnJvd3NlciBpcyB1c2VkIGluIHRoZSBUZXN0UnVubmVy
TWFuYWdlciB0byBzdGFydCBhbmQgc3RvcCB0aGUgYnJvd3NlcgotICAgICAgICBwcm9jZXNzLCBh
bmQgdG8gY2hlY2sgdGhlIHN0YXRlIG9mIHRoYXQgcHJvY2Vzcy4gVGhpcyBjbGFzcyBhbHNvIGFj
dHMgYXMgYQotICAgICAgICBjb250ZXh0IG1hbmFnZXIsIGVuYWJsaW5nIGl0IHRvIGRvIGJyb3dz
ZXItc3BlY2lmaWMgc2V0dXAgYXQgdGhlIHN0YXJ0IG9mCi0gICAgICAgIHRoZSB0ZXN0cnVuIGFu
ZCBjbGVhbnVwIGFmdGVyIHRoZSBydW4gaXMgY29tcGxldGUuCi0KLSAgICAgICAgOnBhcmFtIGxv
Z2dlcjogU3RydWN0dXJlZCBsb2dnZXIgdG8gdXNlIGZvciBvdXRwdXQuCi0gICAgICAgICIiIgog
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogCiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToK
QEAgLTExOSwxNSArMTYwLDExIEBAIGNsYXNzIEJyb3dzZXIob2JqZWN0KToKICAgICAgICAgd2l0
aCB3aGljaCBpdCBzaG91bGQgYmUgaW5zdGFudGlhdGVkIiIiCiAgICAgICAgIHJldHVybiBFeGVj
dXRvckJyb3dzZXIsIHt9CiAKLSAgICBkZWYgY2hlY2tfZm9yX2NyYXNoZXMoc2VsZik6Ci0gICAg
ICAgICIiIkNoZWNrIGZvciBjcmFzaGVzIHRoYXQgZGlkbid0IGNhdXNlIHRoZSBicm93c2VyIHBy
b2Nlc3MgdG8gdGVybWluYXRlIiIiCisgICAgZGVmIGNoZWNrX2NyYXNoKHNlbGYsIHByb2Nlc3Ms
IHRlc3QpOgorICAgICAgICAiIiJDaGVjayBpZiBhIGNyYXNoIG9jY3VyZWQgYW5kIG91dHB1dCBh
bnkgdXNlZnVsIGluZm9ybWF0aW9uIHRvIHRoZQorICAgICAgICBsb2cuIFJldHVybnMgYSBib29s
ZWFuIGluZGljYXRpbmcgd2hldGhlciBhIGNyYXNoIG9jY3VyZWQuIiIiCiAgICAgICAgIHJldHVy
biBGYWxzZQogCi0gICAgZGVmIGxvZ19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToKLSAgICAg
ICAgIiIiUmV0dXJuIGEgbGlzdCBvZiBkaWN0aW9uYXJpZXMgY29udGFpbmluZyBpbmZvcm1hdGlv
biBhYm91dCBjcmFzaGVzIHRoYXQgaGFwcGVuZAotICAgICAgICBpbiB0aGUgYnJvd3Nlciwgb3Ig
YW4gZW1wdHkgbGlzdCBpZiBubyBjcmFzaGVzIG9jY3VycmVkIiIiCi0gICAgICAgIHNlbGYubG9n
Z2VyLmNyYXNoKHByb2Nlc3MsIHRlc3QpCi0KIAogY2xhc3MgTnVsbEJyb3dzZXIoQnJvd3Nlcik6
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgKiprd2FyZ3MpOgpAQCAtMTUzLDE0ICsx
OTAsMTQgQEAgY2xhc3MgTnVsbEJyb3dzZXIoQnJvd3Nlcik6CiAKIAogY2xhc3MgRXhlY3V0b3JC
cm93c2VyKG9iamVjdCk6CisgICAgIiIiVmlldyBvZiB0aGUgQnJvd3NlciB1c2VkIGJ5IHRoZSBF
eGVjdXRvciBvYmplY3QuCisgICAgVGhpcyBpcyBuZWVkZWQgYmVjYXVzZSB0aGUgRXhlY3V0b3Ig
cnVucyBpbiBhIGNoaWxkIHByb2Nlc3MgYW5kCisgICAgd2UgY2FuJ3Qgc2hpcCBCcm93c2VyIGlu
c3RhbmNlcyBiZXR3ZWVuIHByb2Nlc3NlcyBvbiBXaW5kb3dzLgorCisgICAgVHlwaWNhbGx5IHRo
aXMgd2lsbCBoYXZlIGEgZmV3IHByb2R1Y3Qtc3BlY2lmaWMgcHJvcGVydGllcyBzZXQsCisgICAg
YnV0IGluIHNvbWUgY2FzZXMgaXQgbWF5IGhhdmUgbW9yZSBlbGFib3JhdGUgbWV0aG9kcyBmb3Ig
c2V0dGluZworICAgIHVwIHRoZSBicm93c2VyIGZyb20gdGhlIHJ1bm5lciBwcm9jZXNzLgorICAg
ICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIlZpZXcg
b2YgdGhlIEJyb3dzZXIgdXNlZCBieSB0aGUgRXhlY3V0b3Igb2JqZWN0LgotICAgICAgICBUaGlz
IGlzIG5lZWRlZCBiZWNhdXNlIHRoZSBFeGVjdXRvciBydW5zIGluIGEgY2hpbGQgcHJvY2VzcyBh
bmQKLSAgICAgICAgd2UgY2FuJ3Qgc2hpcCBCcm93c2VyIGluc3RhbmNlcyBiZXR3ZWVuIHByb2Nl
c3NlcyBvbiBXaW5kb3dzLgotCi0gICAgICAgIFR5cGljYWxseSB0aGlzIHdpbGwgaGF2ZSBhIGZl
dyBwcm9kdWN0LXNwZWNpZmljIHByb3BlcnRpZXMgc2V0LAotICAgICAgICBidXQgaW4gc29tZSBj
YXNlcyBpdCBtYXkgaGF2ZSBtb3JlIGVsYWJvcmF0ZSBtZXRob2RzIGZvciBzZXR0aW5nCi0gICAg
ICAgIHVwIHRoZSBicm93c2VyIGZyb20gdGhlIHJ1bm5lciBwcm9jZXNzLgotICAgICAgICAiIiIK
ICAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZXJpdGVtcygpOgogICAgICAgICAgICAgc2V0
YXR0cihzZWxmLCBrLCB2KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9t
ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJvbWUucHkKaW5kZXggOGIwYmE0NTg1YTk0
MzU5OGI0YzkwOGYyZTJkYTU2YjBiNjE1MDVhNi4uODA2MTRjNWU1NTFjMzVkZDFjZjJiYmQxMjQ5
NWQ0MGUwMjM5MTM3MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lLnB5CkBAIC0xLDIxICsxLDIzIEBA
CiBmcm9tIC5iYXNlIGltcG9ydCBCcm93c2VyLCBFeGVjdXRvckJyb3dzZXIsIHJlcXVpcmVfYXJn
Citmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91dF9tdWx0aXBsaWVyICAgIyBub3FhOiBGNDAx
CiBmcm9tIC4ud2ViZHJpdmVyX3NlcnZlciBpbXBvcnQgQ2hyb21lRHJpdmVyU2VydmVyCiBmcm9t
IC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2Fy
Z3MKLWZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JzZWxlbml1bSBpbXBvcnQgKFNlbGVuaXVtVGVz
dGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEK
K2Zyb20gLi5leGVjdXRvcnMuZXhlY3V0b3J3ZWJkcml2ZXIgaW1wb3J0IChXZWJEcml2ZXJUZXN0
aGFybmVzc0V4ZWN1dG9yLCAgIyBub3FhOiBGNDAxCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgV2ViRHJpdmVyUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAx
CiBmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yY2hyb21lIGltcG9ydCBDaHJvbWVEcml2ZXJXZHNw
ZWNFeGVjdXRvciAgIyBub3FhOiBGNDAxCiAKIAogX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6
ICJjaHJvbWUiLAogICAgICAgICAgICAgICAgICAiY2hlY2tfYXJncyI6ICJjaGVja19hcmdzIiwK
ICAgICAgICAgICAgICAgICAgImJyb3dzZXIiOiAiQ2hyb21lQnJvd3NlciIsCi0gICAgICAgICAg
ICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5lc3MiOiAiU2VsZW5pdW1UZXN0aGFybmVzc0V4
ZWN1dG9yIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIlNlbGVu
aXVtUmVmVGVzdEV4ZWN1dG9yIiwKKyAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0
aGFybmVzcyI6ICJXZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJyZWZ0ZXN0IjogIldlYkRyaXZlclJlZlRlc3RFeGVjdXRvciIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2RzcGVjIjogIkNocm9tZURyaXZlcldkc3Bl
Y0V4ZWN1dG9yIn0sCiAgICAgICAgICAgICAgICAgICJicm93c2VyX2t3YXJncyI6ICJicm93c2Vy
X2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvcl9rd2FyZ3MiOiAiZXhlY3V0b3Jf
a3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImVudl9leHRyYXMiOiAiZW52X2V4dHJhcyIsCi0g
ICAgICAgICAgICAgICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0aW9ucyJ9CisgICAgICAgICAg
ICAgICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0aW9ucyIsCisgICAgICAgICAgICAgICAgICJ0
aW1lb3V0X211bHRpcGxpZXIiOiAiZ2V0X3RpbWVvdXRfbXVsdGlwbGllciIsfQogCiAKIGRlZiBj
aGVja19hcmdzKCoqa3dhcmdzKToKQEAgLTMwLDI5ICszMiw1OCBAQCBkZWYgYnJvd3Nlcl9rd2Fy
Z3ModGVzdF90eXBlLCBydW5faW5mb19kYXRhLCBjb25maWcsICoqa3dhcmdzKToKIAogZGVmIGV4
ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1
bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKToKLSAgICBmcm9tIHNl
bGVuaXVtLndlYmRyaXZlciBpbXBvcnQgRGVzaXJlZENhcGFiaWxpdGllcwotCiAgICAgZXhlY3V0
b3Jfa3dhcmdzID0gYmFzZV9leGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmln
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX21hbmFn
ZXIsIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKiprd2FyZ3MpCiAgICAgZXhlY3V0b3Jfa3dhcmdzWyJjbG9zZV9hZnRlcl9kb25lIl0g
PSBUcnVlCi0gICAgY2FwYWJpbGl0aWVzID0gZGljdChEZXNpcmVkQ2FwYWJpbGl0aWVzLkNIUk9N
RS5pdGVtcygpKQotICAgIGNhcGFiaWxpdGllcy5zZXRkZWZhdWx0KCJnb29nOmNocm9tZU9wdGlv
bnMiLCB7fSlbInByZWZzIl0gPSB7Ci0gICAgICAgICJwcm9maWxlIjogewotICAgICAgICAgICAg
ImRlZmF1bHRfY29udGVudF9zZXR0aW5nX3ZhbHVlcyI6IHsKLSAgICAgICAgICAgICAgICAicG9w
dXBzIjogMQotICAgICAgICAgICAgfQorICAgIGV4ZWN1dG9yX2t3YXJnc1sic3VwcG9ydHNfZWFn
ZXJfcGFnZWxvYWQiXSA9IEZhbHNlCisKKyAgICBjYXBhYmlsaXRpZXMgPSB7CisgICAgICAgICJn
b29nOmNocm9tZU9wdGlvbnMiOiB7CisgICAgICAgICAgICAicHJlZnMiOiB7CisgICAgICAgICAg
ICAgICAgInByb2ZpbGUiOiB7CisgICAgICAgICAgICAgICAgICAgICJkZWZhdWx0X2NvbnRlbnRf
c2V0dGluZ192YWx1ZXMiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAicG9wdXBzIjogMQor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfSwK
KyAgICAgICAgICAgICJ1c2VBdXRvbWF0aW9uRXh0ZW5zaW9uIjogRmFsc2UsCisgICAgICAgICAg
ICAiZXhjbHVkZVN3aXRjaGVzIjogWyJlbmFibGUtYXV0b21hdGlvbiJdLAorICAgICAgICAgICAg
InczYyI6IFRydWUKICAgICAgICAgfQogICAgIH0KLSAgICBmb3IgKGt3YXJnLCBjYXBhYmlsaXR5
KSBpbiBbKCJiaW5hcnkiLCAiYmluYXJ5IiksICgiYmluYXJ5X2FyZ3MiLCAiYXJncyIpXToKLSAg
ICAgICAgaWYga3dhcmdzW2t3YXJnXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNhcGFiaWxp
dGllc1siZ29vZzpjaHJvbWVPcHRpb25zIl1bY2FwYWJpbGl0eV0gPSBrd2FyZ3Nba3dhcmddCisK
ICAgICBpZiB0ZXN0X3R5cGUgPT0gInRlc3RoYXJuZXNzIjoKLSAgICAgICAgY2FwYWJpbGl0aWVz
WyJnb29nOmNocm9tZU9wdGlvbnMiXVsidXNlQXV0b21hdGlvbkV4dGVuc2lvbiJdID0gRmFsc2UK
LSAgICAgICAgY2FwYWJpbGl0aWVzWyJnb29nOmNocm9tZU9wdGlvbnMiXVsiZXhjbHVkZVN3aXRj
aGVzIl0gPSBbImVuYWJsZS1hdXRvbWF0aW9uIl0KLSAgICBpZiB0ZXN0X3R5cGUgPT0gIndkc3Bl
YyI6Ci0gICAgICAgIGNhcGFiaWxpdGllc1siZ29vZzpjaHJvbWVPcHRpb25zIl1bInczYyJdID0g
VHJ1ZQorICAgICAgICBjYXBhYmlsaXRpZXNbInBhZ2VMb2FkU3RyYXRlZ3kiXSA9ICJub25lIgor
CisgICAgY2hyb21lX29wdGlvbnMgPSBjYXBhYmlsaXRpZXNbImdvb2c6Y2hyb21lT3B0aW9ucyJd
CisgICAgaWYga3dhcmdzWyJiaW5hcnkiXSBpcyBub3QgTm9uZToKKyAgICAgICAgY2hyb21lX29w
dGlvbnNbImJpbmFyeSJdID0ga3dhcmdzWyJiaW5hcnkiXQorCisgICAgIyBIZXJlIHdlIHNldCBh
IGZldyBDaHJvbWUgZmxhZ3MgdGhhdCBhcmUgYWx3YXlzIHBhc3NlZC4KKyAgICAjIENocm9tZURy
aXZlcidzICJhY2NlcHRJbnNlY3VyZUNlcnRzIiBjYXBhYmlsaXR5IG9ubHkgY29udHJvbHMgdGhl
IGN1cnJlbnQKKyAgICAjIGJyb3dzaW5nIGNvbnRleHQsIHdoZXJlYXMgdGhlIENMSSBmbGFnIHdv
cmtzIGZvciB3b3JrZXJzLCB0b28uCisgICAgY2hyb21lX29wdGlvbnNbImFyZ3MiXSA9IFsiLS1p
Z25vcmUtY2VydGlmaWNhdGUtZXJyb3JzIl0KKyAgICAjIEFsbG93IGF1ZGlvIGF1dG9wbGF5IHdp
dGhvdXQgYSB1c2VyIGdlc3R1cmUuCisgICAgY2hyb21lX29wdGlvbnNbImFyZ3MiXS5hcHBlbmQo
Ii0tYXV0b3BsYXktcG9saWN5PW5vLXVzZXItZ2VzdHVyZS1yZXF1aXJlZCIpCisgICAgIyBBbGxv
dyBXZWJSVEMgdGVzdHMgdG8gY2FsbCBnZXRVc2VyTWVkaWEuCisgICAgY2hyb21lX29wdGlvbnNb
ImFyZ3MiXS5hcHBlbmQoIi0tdXNlLWZha2UtdWktZm9yLW1lZGlhLXN0cmVhbSIpCisgICAgY2hy
b21lX29wdGlvbnNbImFyZ3MiXS5hcHBlbmQoIi0tdXNlLWZha2UtZGV2aWNlLWZvci1tZWRpYS1z
dHJlYW0iKQorICAgICMgU2hvcnRlbiBkZWxheSBmb3IgUmVwb3J0aW5nIDxodHRwczovL3czYy5n
aXRodWIuaW8vcmVwb3J0aW5nLz4uCisgICAgY2hyb21lX29wdGlvbnNbImFyZ3MiXS5hcHBlbmQo
Ii0tc2hvcnQtcmVwb3J0aW5nLWRlbGF5IikKKyAgICAjIFBvaW50IGFsbCAudGVzdCBkb21haW5z
IHRvIGxvY2FsaG9zdCBmb3IgQ2hyb21lCisgICAgY2hyb21lX29wdGlvbnNbImFyZ3MiXS5hcHBl
bmQoIi0taG9zdC1yZXNvbHZlci1ydWxlcz1NQVAgbm9uZXhpc3RlbnQuKi50ZXN0IH5OT1RGT1VO
RCwgTUFQICoudGVzdCAxMjcuMC4wLjEiKQorCisgICAgIyBDb3B5IG92ZXIgYW55IG90aGVyIGZs
YWdzIHRoYXQgd2VyZSBwYXNzZWQgaW4gdmlhIC0tYmluYXJ5X2FyZ3MKKyAgICBpZiBrd2FyZ3Nb
ImJpbmFyeV9hcmdzIl0gaXMgbm90IE5vbmU6CisgICAgICAgIGNocm9tZV9vcHRpb25zWyJhcmdz
Il0uZXh0ZW5kKGt3YXJnc1siYmluYXJ5X2FyZ3MiXSkKKworICAgICMgUGFzcyB0aGUgLS1oZWFk
bGVzcyBmbGFnIHRvIENocm9tZSBpZiBXUFQncyBvd24gLS1oZWFkbGVzcyBmbGFnIHdhcyBzZXQK
KyAgICBpZiBrd2FyZ3NbImhlYWRsZXNzIl0gYW5kICItLWhlYWRsZXNzIiBub3QgaW4gY2hyb21l
X29wdGlvbnNbImFyZ3MiXToKKyAgICAgICAgY2hyb21lX29wdGlvbnNbImFyZ3MiXS5hcHBlbmQo
Ii0taGVhZGxlc3MiKQorCiAgICAgZXhlY3V0b3Jfa3dhcmdzWyJjYXBhYmlsaXRpZXMiXSA9IGNh
cGFiaWxpdGllcworCiAgICAgcmV0dXJuIGV4ZWN1dG9yX2t3YXJncwogCiAKQEAgLTYxLDcgKzky
LDcgQEAgZGVmIGVudl9leHRyYXMoKiprd2FyZ3MpOgogCiAKIGRlZiBlbnZfb3B0aW9ucygpOgot
ICAgIHJldHVybiB7fQorICAgIHJldHVybiB7InNlcnZlcl9ob3N0IjogIjEyNy4wLjAuMSJ9CiAK
IAogY2xhc3MgQ2hyb21lQnJvd3NlcihCcm93c2VyKToKQEAgLTkyLDcgKzEyMyw3IEBAIGNsYXNz
IENocm9tZUJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgICMgVE9ETyhhdG8pOiBUaGlzIG9ubHkg
aW5kaWNhdGVzIHRoZSBkcml2ZXIgaXMgYWxpdmUsCiAgICAgICAgICMgYW5kIGRvZXNuJ3Qgc2F5
IGFueXRoaW5nIGFib3V0IHdoZXRoZXIgYSBicm93c2VyIHNlc3Npb24KICAgICAgICAgIyBpcyBh
Y3RpdmUuCi0gICAgICAgIHJldHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZSgpCisgICAgICAgIHJl
dHVybiBzZWxmLnNlcnZlci5pc19hbGl2ZQogCiAgICAgZGVmIGNsZWFudXAoc2VsZik6CiAgICAg
ICAgIHNlbGYuc3RvcCgpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21l
X2FuZHJvaWQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvY2hyb21lX2FuZHJvaWQucHkKaW5k
ZXggYzk2Y2Y1NjM0ZjNkNzZhNzliNGNmZDIwNDI5ZjY2MjJlNDk2ZDZhMC4uYjRlZGMwNTBkMGM3
MDljZmE0NjdhNDNiNmU2YTQxMjAwYWEwNGM3MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jy
b3dzZXJzL2Nocm9tZV9hbmRyb2lkLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9jaHJv
bWVfYW5kcm9pZC5weQpAQCAtMSw2NCArMSw2MyBAQAogaW1wb3J0IHN1YnByb2Nlc3MKIAogZnJv
bSAuYmFzZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2FyZworZnJv
bSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQwMQorZnJv
bSAuY2hyb21lIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgY2hyb21lX2V4ZWN1dG9yX2t3YXJn
cwogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IENocm9tZURyaXZlclNlcnZlcgotZnJv
bSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dh
cmdzCi1mcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yc2VsZW5pdW0gaW1wb3J0IChTZWxlbml1bVRl
c3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNlbGVuaXVtUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAx
Citmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVz
dGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQw
MQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcmNocm9tZSBpbXBvcnQgQ2hyb21lRHJpdmVyV2Rz
cGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQogCiAKIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3Qi
OiAiY2hyb21lX2FuZHJvaWQiLAogICAgICAgICAgICAgICAgICAiY2hlY2tfYXJncyI6ICJjaGVj
a19hcmdzIiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXIiOiAiQ2hyb21lQW5kcm9pZEJyb3dz
ZXIiLAotICAgICAgICAgICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIlNlbGVu
aXVtVGVzdGhhcm5lc3NFeGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
cmVmdGVzdCI6ICJTZWxlbml1bVJlZlRlc3RFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICJl
eGVjdXRvciI6IHsidGVzdGhhcm5lc3MiOiAiV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmdGVzdCI6ICJXZWJEcml2ZXJSZWZU
ZXN0RXhlY3V0b3IiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJD
aHJvbWVEcml2ZXJXZHNwZWNFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9r
d2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dh
cmdzIjogImV4ZWN1dG9yX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjog
ImVudl9leHRyYXMiLAotICAgICAgICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlv
bnMifQorICAgICAgICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMiLAorICAg
ICAgICAgICAgICAgICAidGltZW91dF9tdWx0aXBsaWVyIjogImdldF90aW1lb3V0X211bHRpcGxp
ZXIifQogCiBfd3B0c2VydmVfcG9ydHMgPSBzZXQoKQogCiAKIGRlZiBjaGVja19hcmdzKCoqa3dh
cmdzKToKKyAgICByZXF1aXJlX2FyZyhrd2FyZ3MsICJwYWNrYWdlX25hbWUiKQogICAgIHJlcXVp
cmVfYXJnKGt3YXJncywgIndlYmRyaXZlcl9iaW5hcnkiKQogCiAKIGRlZiBicm93c2VyX2t3YXJn
cyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgotICAgIHJldHVy
biB7ImJpbmFyeSI6IGt3YXJnc1siYmluYXJ5Il0sCisgICAgcmV0dXJuIHsicGFja2FnZV9uYW1l
Ijoga3dhcmdzWyJwYWNrYWdlX25hbWUiXSwKKyAgICAgICAgICAgICJkZXZpY2Vfc2VyaWFsIjog
a3dhcmdzWyJkZXZpY2Vfc2VyaWFsIl0sCiAgICAgICAgICAgICAid2ViZHJpdmVyX2JpbmFyeSI6
IGt3YXJnc1sid2ViZHJpdmVyX2JpbmFyeSJdLAogICAgICAgICAgICAgIndlYmRyaXZlcl9hcmdz
Ijoga3dhcmdzLmdldCgid2ViZHJpdmVyX2FyZ3MiKX0KIAogCiBkZWYgZXhlY3V0b3Jfa3dhcmdz
KHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwK
ICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgIGZyb20gc2VsZW5pdW0ud2ViZHJp
dmVyIGltcG9ydCBEZXNpcmVkQ2FwYWJpbGl0aWVzCi0KLSAgICAjIFVzZSBleHRlbmQoKSB0byBt
b2RpZnkgdGhlIGdsb2JhbCBsaXN0IGluIHBsYWNlLgorICAgICMgVXNlIHVwZGF0ZSgpIHRvIG1v
ZGlmeSB0aGUgZ2xvYmFsIGxpc3QgaW4gcGxhY2UuCiAgICAgX3dwdHNlcnZlX3BvcnRzLnVwZGF0
ZShzZXQoCiAgICAgICAgIHNlcnZlcl9jb25maWdbJ3BvcnRzJ11bJ2h0dHAnXSArIHNlcnZlcl9j
b25maWdbJ3BvcnRzJ11bJ2h0dHBzJ10gKwogICAgICAgICBzZXJ2ZXJfY29uZmlnWydwb3J0cydd
Wyd3cyddICsgc2VydmVyX2NvbmZpZ1sncG9ydHMnXVsnd3NzJ10KICAgICApKQogCi0gICAgZXhl
Y3V0b3Jfa3dhcmdzID0gYmFzZV9leGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29u
ZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQotICAgIGV4ZWN1dG9yX2t3YXJnc1siY2xv
c2VfYWZ0ZXJfZG9uZSJdID0gVHJ1ZQotICAgIGNhcGFiaWxpdGllcyA9IGRpY3QoRGVzaXJlZENh
cGFiaWxpdGllcy5DSFJPTUUuaXRlbXMoKSkKLSAgICBjYXBhYmlsaXRpZXNbImNocm9tZU9wdGlv
bnMiXSA9IHt9Ci0gICAgIyByZXF1aXJlZCB0byBzdGFydCBvbiBtb2JpbGUKLSAgICBjYXBhYmls
aXRpZXNbImNocm9tZU9wdGlvbnMiXVsiYW5kcm9pZFBhY2thZ2UiXSA9ICJjb20uZ29vZ2xlLmFu
ZHJvaWQuYXBwcy5jaHJvbWUiCi0KLSAgICBmb3IgKGt3YXJnLCBjYXBhYmlsaXR5KSBpbiBbKCJi
aW5hcnkiLCAiYmluYXJ5IiksICgiYmluYXJ5X2FyZ3MiLCAiYXJncyIpXToKLSAgICAgICAgaWYg
a3dhcmdzW2t3YXJnXSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGNhcGFiaWxpdGllc1siY2hy
b21lT3B0aW9ucyJdW2NhcGFiaWxpdHldID0ga3dhcmdzW2t3YXJnXQotICAgIGlmIHRlc3RfdHlw
ZSA9PSAidGVzdGhhcm5lc3MiOgotICAgICAgICBjYXBhYmlsaXRpZXNbInVzZUF1dG9tYXRpb25F
eHRlbnNpb24iXSA9IEZhbHNlCi0gICAgICAgIGNhcGFiaWxpdGllc1siZXhjbHVkZVN3aXRjaGVz
Il0gPSBbImVuYWJsZS1hdXRvbWF0aW9uIl0KLSAgICBpZiB0ZXN0X3R5cGUgPT0gIndkc3BlYyI6
Ci0gICAgICAgIGNhcGFiaWxpdGllc1siY2hyb21lT3B0aW9ucyJdWyJ3M2MiXSA9IFRydWUKLSAg
ICBleGVjdXRvcl9rd2FyZ3NbImNhcGFiaWxpdGllcyJdID0gY2FwYWJpbGl0aWVzCisgICAgZXhl
Y3V0b3Jfa3dhcmdzID0gY2hyb21lX2V4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9j
b25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNo
ZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpCisgICAgIyBSZW1vdmUgdW5zdXBwb3J0ZWQgb3B0aW9u
cyBvbiBtb2JpbGUuCisgICAgZGVsIGV4ZWN1dG9yX2t3YXJnc1siY2FwYWJpbGl0aWVzIl1bImdv
b2c6Y2hyb21lT3B0aW9ucyJdWyJwcmVmcyJdCisgICAgZGVsIGV4ZWN1dG9yX2t3YXJnc1siY2Fw
YWJpbGl0aWVzIl1bImdvb2c6Y2hyb21lT3B0aW9ucyJdWyJ1c2VBdXRvbWF0aW9uRXh0ZW5zaW9u
Il0KKworICAgIGFzc2VydCBrd2FyZ3NbInBhY2thZ2VfbmFtZSJdLCAibWlzc2luZyAtLXBhY2th
Z2UtbmFtZSIKKyAgICBleGVjdXRvcl9rd2FyZ3NbImNhcGFiaWxpdGllcyJdWyJnb29nOmNocm9t
ZU9wdGlvbnMiXVsiYW5kcm9pZFBhY2thZ2UiXSA9IFwKKyAgICAgICAga3dhcmdzWyJwYWNrYWdl
X25hbWUiXQorICAgIGlmIGt3YXJncy5nZXQoImRldmljZV9zZXJpYWwiKToKKyAgICAgICAgZXhl
Y3V0b3Jfa3dhcmdzWyJjYXBhYmlsaXRpZXMiXVsiZ29vZzpjaHJvbWVPcHRpb25zIl1bImFuZHJv
aWREZXZpY2VTZXJpYWwiXSA9IFwKKyAgICAgICAgICAgIGt3YXJnc1siZGV2aWNlX3NlcmlhbCJd
CisKICAgICByZXR1cm4gZXhlY3V0b3Jfa3dhcmdzCiAKIApAQCAtNjcsNyArNjYsOCBAQCBkZWYg
ZW52X2V4dHJhcygqKmt3YXJncyk6CiAKIAogZGVmIGVudl9vcHRpb25zKCk6Ci0gICAgcmV0dXJu
IHt9CisgICAgIyBhbGxvdyB0aGUgdXNlIG9mIGhvc3QtcmVzb2x2ZXItcnVsZXMgaW4gbGlldSBv
ZiBtb2RpZnlpbmcgL2V0Yy9ob3N0cyBmaWxlCisgICAgcmV0dXJuIHsic2VydmVyX2hvc3QiOiAi
MTI3LjAuMC4xIn0KIAogCiBjbGFzcyBDaHJvbWVBbmRyb2lkQnJvd3NlcihCcm93c2VyKToKQEAg
LTc1LDI0ICs3NSwyOSBAQCBjbGFzcyBDaHJvbWVBbmRyb2lkQnJvd3NlcihCcm93c2VyKToKICAg
ICBgYHdwdHJ1bm5lci53ZWJkcml2ZXIuQ2hyb21lRHJpdmVyU2VydmVyYGAuCiAgICAgIiIiCiAK
LSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBiaW5hcnksIHdlYmRyaXZlcl9iaW5hcnk9
ImNocm9tZWRyaXZlciIsCi0gICAgICAgICAgICAgICAgIHdlYmRyaXZlcl9hcmdzPU5vbmUpOgot
ICAgICAgICAiIiJDcmVhdGVzIGEgbmV3IHJlcHJlc2VudGF0aW9uIG9mIENocm9tZS4gIFRoZSBg
YmluYXJ5YCBhcmd1bWVudCBnaXZlcwotICAgICAgICB0aGUgYnJvd3NlciBiaW5hcnkgdG8gdXNl
IGZvciB0ZXN0aW5nLiIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHBhY2thZ2Vf
bmFtZSwgd2ViZHJpdmVyX2JpbmFyeT0iY2hyb21lZHJpdmVyIiwKKyAgICAgICAgICAgICAgICAg
ZGV2aWNlX3NlcmlhbD1Ob25lLCB3ZWJkcml2ZXJfYXJncz1Ob25lKToKICAgICAgICAgQnJvd3Nl
ci5fX2luaXRfXyhzZWxmLCBsb2dnZXIpCi0gICAgICAgIHNlbGYuYmluYXJ5ID0gYmluYXJ5Cisg
ICAgICAgIHNlbGYucGFja2FnZV9uYW1lID0gcGFja2FnZV9uYW1lCisgICAgICAgIHNlbGYuZGV2
aWNlX3NlcmlhbCA9IGRldmljZV9zZXJpYWwKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBDaHJvbWVE
cml2ZXJTZXJ2ZXIoc2VsZi5sb2dnZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJpbmFyeT13ZWJkcml2ZXJfYmluYXJ5LAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBhcmdzPXdlYmRyaXZlcl9hcmdzKQorICAgICAgICBzZWxmLnNl
dHVwX2FkYl9yZXZlcnNlKCkKIAogICAgIGRlZiBfYWRiX3J1bihzZWxmLCBhcmdzKToKLSAgICAg
ICAgc2VsZi5sb2dnZXIuaW5mbygnYWRiICcgKyAnICcuam9pbihhcmdzKSkKLSAgICAgICAgc3Vi
cHJvY2Vzcy5jaGVja19jYWxsKFsnYWRiJ10gKyBhcmdzKQotCi0gICAgZGVmIHNldHVwKHNlbGYp
OgorICAgICAgICBjbWQgPSBbJ2FkYiddCisgICAgICAgIGlmIHNlbGYuZGV2aWNlX3NlcmlhbDoK
KyAgICAgICAgICAgIGNtZC5leHRlbmQoWyctcycsIHNlbGYuZGV2aWNlX3NlcmlhbF0pCisgICAg
ICAgIGNtZC5leHRlbmQoYXJncykKKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnICcuam9pbihj
bWQpKQorICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kKQorCisgICAgZGVmIHNldHVw
X2FkYl9yZXZlcnNlKHNlbGYpOgogICAgICAgICBzZWxmLl9hZGJfcnVuKFsnd2FpdC1mb3ItZGV2
aWNlJ10pCiAgICAgICAgIHNlbGYuX2FkYl9ydW4oWydmb3J3YXJkJywgJy0tcmVtb3ZlLWFsbCdd
KQogICAgICAgICBzZWxmLl9hZGJfcnVuKFsncmV2ZXJzZScsICctLXJlbW92ZS1hbGwnXSkKKyAg
ICAgICAgIyAiYWRiIHJldmVyc2UiIGZvcndhcmRzIG5ldHdvcmsgY29ubmVjdGlvbiBmcm9tIGRl
dmljZSB0byBob3N0LgogICAgICAgICBmb3IgcG9ydCBpbiBfd3B0c2VydmVfcG9ydHM6CiAgICAg
ICAgICAgICBzZWxmLl9hZGJfcnVuKFsncmV2ZXJzZScsICd0Y3A6JWQnICUgcG9ydCwgJ3RjcDol
ZCcgJSBwb3J0XSkKIApAQCAtMTA5LDcgKzExNCw3IEBAIGNsYXNzIENocm9tZUFuZHJvaWRCcm93
c2VyKEJyb3dzZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0
aGUgZHJpdmVyIGlzIGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBh
Ym91dCB3aGV0aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAg
ICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQorICAgICAgICByZXR1cm4gc2VsZi5z
ZXJ2ZXIuaXNfYWxpdmUKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0
b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2VkZ2UucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvZWRnZS5weQppbmRleCBhZDJiYjUxM2E2YTgwMWIyOWE3OTFhNmQ2NWI3
YjczMGI4NmU5YTY0Li5kOWQwYWYxMTVjYzllOWM2NGU5MjdiMTVjZGQyOTFmMzE0YjA3YWU1IDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZWRnZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvZWRnZS5weQpAQCAtMSwzICsxLDYgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBv
cnQgcHJpbnRfZnVuY3Rpb24KK2ltcG9ydCB0aW1lCitpbXBvcnQgc3VicHJvY2VzcwogZnJvbSAu
YmFzZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2FyZwogZnJvbSAu
LndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IEVkZ2VEcml2ZXJTZXJ2ZXIKIGZyb20gLi5leGVjdXRv
cnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwpAQCAtMTQs
NyArMTcsMTAgQEAgX193cHRydW5uZXJfXyA9IHsicHJvZHVjdCI6ICJlZGdlIiwKICAgICAgICAg
ICAgICAgICAgImJyb3dzZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAg
ICAgICAgImV4ZWN1dG9yX2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAg
ICAgICAiZW52X2V4dHJhcyI6ICJlbnZfZXh0cmFzIiwKLSAgICAgICAgICAgICAgICAgImVudl9v
cHRpb25zIjogImVudl9vcHRpb25zIn0KKyAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjog
ImVudl9vcHRpb25zIiwKKyAgICAgICAgICAgICAgICAgInJ1bl9pbmZvX2V4dHJhcyI6ICJydW5f
aW5mb19leHRyYXMiLAorICAgICAgICAgICAgICAgICAidGltZW91dF9tdWx0aXBsaWVyIjogImdl
dF90aW1lb3V0X211bHRpcGxpZXIifQorCiAKIGRlZiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRl
c3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpOgogICAgIGlmIGt3YXJnc1sidGltZW91
dF9tdWx0aXBsaWVyIl0gaXMgbm90IE5vbmU6CkBAIC0yMyw5ICsyOSwxMSBAQCBkZWYgZ2V0X3Rp
bWVvdXRfbXVsdGlwbGllcih0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsICoqa3dhcmdzKToKICAg
ICAgICAgcmV0dXJuIDEwCiAgICAgcmV0dXJuIDEKIAorCiBkZWYgY2hlY2tfYXJncygqKmt3YXJn
cyk6CiAgICAgcmVxdWlyZV9hcmcoa3dhcmdzLCAid2ViZHJpdmVyX2JpbmFyeSIpCiAKKwogZGVm
IGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJn
cyk6CiAgICAgcmV0dXJuIHsid2ViZHJpdmVyX2JpbmFyeSI6IGt3YXJnc1sid2ViZHJpdmVyX2Jp
bmFyeSJdLAogICAgICAgICAgICAgIndlYmRyaXZlcl9hcmdzIjoga3dhcmdzLmdldCgid2ViZHJp
dmVyX2FyZ3MiKSwKQEAgLTMzLDYgKzQxLDcgQEAgZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlw
ZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19kYXRhLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipr
d2FyZ3MpfQogCisKIGRlZiBleGVjdXRvcl9rd2FyZ3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmln
LCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAqKmt3
YXJncyk6CiAgICAgZXhlY3V0b3Jfa3dhcmdzID0gYmFzZV9leGVjdXRvcl9rd2FyZ3ModGVzdF90
eXBlLCBzZXJ2ZXJfY29uZmlnLApAQCAtNDIsMTQgKzUxLDE5IEBAIGRlZiBleGVjdXRvcl9rd2Fy
Z3ModGVzdF90eXBlLCBzZXJ2ZXJfY29uZmlnLCBjYWNoZV9tYW5hZ2VyLCBydW5faW5mb19kYXRh
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJ1bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAgICAgZXhl
Y3V0b3Jfa3dhcmdzWyJjYXBhYmlsaXRpZXMiXSA9IHt9CisgICAgaWYgdGVzdF90eXBlID09ICJ0
ZXN0aGFybmVzcyI6CisgICAgICAgIGV4ZWN1dG9yX2t3YXJnc1siY2FwYWJpbGl0aWVzIl1bInBh
Z2VMb2FkU3RyYXRlZ3kiXSA9ICJlYWdlciIKICAgICByZXR1cm4gZXhlY3V0b3Jfa3dhcmdzCiAK
KwogZGVmIGVudl9leHRyYXMoKiprd2FyZ3MpOgogICAgIHJldHVybiBbXQogCisKIGRlZiBlbnZf
b3B0aW9ucygpOgogICAgIHJldHVybiB7InN1cHBvcnRzX2RlYnVnZ2VyIjogRmFsc2V9CiAKKwog
Y2xhc3MgRWRnZUJyb3dzZXIoQnJvd3Nlcik6CiAgICAgdXNlZF9wb3J0cyA9IHNldCgpCiAgICAg
aW5pdF90aW1lb3V0ID0gNjAKQEAgLTY2LDExICs4MCwyNiBAQCBjbGFzcyBFZGdlQnJvd3NlcihC
cm93c2VyKToKIAogCiAgICAgZGVmIHN0YXJ0KHNlbGYsICoqa3dhcmdzKToKLSAgICAgICAgcHJp
bnQgc2VsZi5zZXJ2ZXIudXJsCisgICAgICAgIHByaW50KHNlbGYuc2VydmVyLnVybCkKICAgICAg
ICAgc2VsZi5zZXJ2ZXIuc3RhcnQoKQogCiAgICAgZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2Up
OgogICAgICAgICBzZWxmLnNlcnZlci5zdG9wKGZvcmNlPWZvcmNlKQorICAgICAgICAjIFdhaXQg
Zm9yIEVkZ2UgYnJvd3NlciBwcm9jZXNzIHRvIGV4aXQgaWYgZHJpdmVyIHByb2Nlc3MgaXMgZm91
bmQKKyAgICAgICAgZWRnZV9wcm9jX25hbWUgPSAnTWljcm9zb2Z0RWRnZS5leGUnCisgICAgICAg
IGZvciBpIGluIHJhbmdlKDAsNSk6CisgICAgICAgICAgICBwcm9jcyA9IHN1YnByb2Nlc3MuY2hl
Y2tfb3V0cHV0KFsndGFza2xpc3QnLCAnL2ZpJywgJ0ltYWdlTmFtZSBlcSAnICsgZWRnZV9wcm9j
X25hbWVdKQorICAgICAgICAgICAgaWYgJ01pY3Jvc29mdFdlYkRyaXZlci5leGUnIG5vdCBpbiBw
cm9jczoKKyAgICAgICAgICAgICAgICAjIEVkZ2UgZHJpdmVyIHByb2Nlc3MgYWxyZWFkeSBleGl0
ZWQsIGRvbid0IHdhaXQgZm9yIGJyb3dzZXIgcHJvY2VzcyB0byBleGl0CisgICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgIGVsaWYgZWRnZV9wcm9jX25hbWUgaW4gcHJvY3M6CisgICAg
ICAgICAgICAgICAgdGltZS5zbGVlcCgwLjUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgICAgIGJyZWFrCisKKyAgICAgICAgaWYgZWRnZV9wcm9jX25hbWUgaW4gcHJvY3M6CisgICAg
ICAgICAgICAjIGNsb3NlIEVkZ2UgcHJvY2VzcyBpZiBpdCBpcyBzdGlsbCBydW5uaW5nCisgICAg
ICAgICAgICBzdWJwcm9jZXNzLmNhbGwoWyd0YXNra2lsbC5leGUnLCAnL2YnLCAnL2ltJywgJ21p
Y3Jvc29mdGVkZ2UqJ10pCiAKICAgICBkZWYgcGlkKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5zZXJ2ZXIucGlkCkBAIC03OSwxMCArMTA4LDI0IEBAIGNsYXNzIEVkZ2VCcm93c2VyKEJyb3dz
ZXIpOgogICAgICAgICAjIFRPRE8oYXRvKTogVGhpcyBvbmx5IGluZGljYXRlcyB0aGUgc2VydmVy
IGlzIGFsaXZlLAogICAgICAgICAjIGFuZCBkb2Vzbid0IHNheSBhbnl0aGluZyBhYm91dCB3aGV0
aGVyIGEgYnJvd3NlciBzZXNzaW9uCiAgICAgICAgICMgaXMgYWN0aXZlLgotICAgICAgICByZXR1
cm4gc2VsZi5zZXJ2ZXIuaXNfYWxpdmUoKQorICAgICAgICByZXR1cm4gc2VsZi5zZXJ2ZXIuaXNf
YWxpdmUKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0b3AoKQogCiAg
ICAgZGVmIGV4ZWN1dG9yX2Jyb3dzZXIoc2VsZik6CiAgICAgICAgIHJldHVybiBFeGVjdXRvckJy
b3dzZXIsIHsid2ViZHJpdmVyX3VybCI6IHNlbGYuc2VydmVyLnVybH0KKworCitkZWYgcnVuX2lu
Zm9fZXh0cmFzKCoqa3dhcmdzKToKKyAgICBvc1JlbGVhc2VDb21tYW5kID0gciIoR2V0LUl0ZW1Q
cm9wZXJ0eSAnSEtMTTpcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgTlRcQ3VycmVudFZlcnNp
b24nKS5SZWxlYXNlSWQiCisgICAgb3NCdWlsZENvbW1hbmQgPSByIihHZXQtSXRlbVByb3BlcnR5
ICdIS0xNOlxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBOVFxDdXJyZW50VmVyc2lvbicpLkJ1
aWxkTGFiRXgiCisgICAgdHJ5OgorICAgICAgICBvc19yZWxlYXNlID0gc3VicHJvY2Vzcy5jaGVj
a19vdXRwdXQoWyJwb3dlcnNoZWxsLmV4ZSIsIG9zUmVsZWFzZUNvbW1hbmRdKS5zdHJpcCgpCisg
ICAgICAgIG9zX2J1aWxkID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoWyJwb3dlcnNoZWxsLmV4
ZSIsIG9zQnVpbGRDb21tYW5kXSkuc3RyaXAoKQorICAgIGV4Y2VwdCAoc3VicHJvY2Vzcy5DYWxs
ZWRQcm9jZXNzRXJyb3IsIE9TRXJyb3IpOgorICAgICAgICByZXR1cm4ge30KKworICAgIHJ2ID0g
eyJvc19idWlsZCI6IG9zX2J1aWxkLAorICAgICAgICAgICJvc19yZWxlYXNlIjogb3NfcmVsZWFz
ZX0KKyAgICByZXR1cm4gcnYKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9mZW5u
ZWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvZmVubmVjLnB5CmRlbGV0ZWQgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCBkYjI3MWFjYzUwZWEwOGU2MWVmZDA5ODQ4YTlmZjc4YjUzYjhlZDFlLi4w
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9mZW5uZWMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwyNTQgKzAsMCBAQAotaW1w
b3J0IG9zCi1pbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9y
dCB0cmFjZWJhY2sKLQotaW1wb3J0IG1vem5ldHdvcmsKLWZyb20gbW96cHJvY2VzcyBpbXBvcnQg
UHJvY2Vzc0hhbmRsZXIKLWZyb20gbW96cHJvZmlsZSBpbXBvcnQgRmlyZWZveFByb2ZpbGUKLWZy
b20gbW96cnVubmVyIGltcG9ydCBGZW5uZWNFbXVsYXRvclJ1bm5lcgotCi1mcm9tIHNlcnZlLnNl
cnZlIGltcG9ydCBtYWtlX2hvc3RzX2ZpbGUKLQotZnJvbSAuYmFzZSBpbXBvcnQgKGdldF9mcmVl
X3BvcnQsCi0gICAgICAgICAgICAgICAgICAgY21kX2FyZywKLSAgICAgICAgICAgICAgICAgICBi
cm93c2VyX2NvbW1hbmQpCi1mcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9ybWFyaW9uZXR0ZSBpbXBv
cnQgTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IgICMgbm9xYTogRjQwMQotZnJvbSAuZmly
ZWZveCBpbXBvcnQgKGdldF90aW1lb3V0X211bHRpcGxpZXIsIHVwZGF0ZV9wcm9wZXJ0aWVzLCBl
eGVjdXRvcl9rd2FyZ3MsIEZpcmVmb3hCcm93c2VyKSAgIyBub3FhOiBGNDAxCi0KLQotX193cHRy
dW5uZXJfXyA9IHsicHJvZHVjdCI6ICJmZW5uZWMiLAotICAgICAgICAgICAgICAgICAiY2hlY2tf
YXJncyI6ICJjaGVja19hcmdzIiwKLSAgICAgICAgICAgICAgICAgImJyb3dzZXIiOiAiRmVubmVj
QnJvd3NlciIsCi0gICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5lc3MiOiAi
TWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IifSwKLSAgICAgICAgICAgICAgICAgImJyb3dz
ZXJfa3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKLSAgICAgICAgICAgICAgICAgImV4ZWN1dG9y
X2t3YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAotICAgICAgICAgICAgICAgICAiZW52X2V4dHJh
cyI6ICJlbnZfZXh0cmFzIiwKLSAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9v
cHRpb25zIiwKLSAgICAgICAgICAgICAgICAgInJ1bl9pbmZvX2V4dHJhcyI6ICJydW5faW5mb19l
eHRyYXMiLAotICAgICAgICAgICAgICAgICAidXBkYXRlX3Byb3BlcnRpZXMiOiAidXBkYXRlX3By
b3BlcnRpZXMifQotCi1jbGFzcyBGZW5uZWNQcm9maWxlKEZpcmVmb3hQcm9maWxlKToKLSAgICAj
IFdQVC1zcGVjaWZpYyBwcmVmcyBhcmUgc2V0IGluIEZlbm5lY0Jyb3dzZXIuc3RhcnQoKQotICAg
IEZpcmVmb3hQcm9maWxlLnByZWZlcmVuY2VzLnVwZGF0ZSh7Ci0gICAgICAgICMgTWFrZSBzdXJl
IFNoaWVsZCBkb2Vzbid0IGhpdCB0aGUgbmV0d29yay4KLSAgICAgICAgImFwcC5ub3JtYW5keS5h
cGlfdXJsIjogIiIsCi0gICAgICAgICMgSW5jcmVhc2UgdGhlIEFQWiBjb250ZW50IHJlc3BvbnNl
IHRpbWVvdXQgaW4gdGVzdHMgdG8gMSBtaW51dGUuCi0gICAgICAgICJhcHouY29udGVudF9yZXNw
b25zZV90aW1lb3V0IjogNjAwMDAsCi0gICAgICAgICMgRW5hYmxlIG91dHB1dCBvZiBkdW1wKCkK
LSAgICAgICAgImJyb3dzZXIuZG9tLndpbmRvdy5kdW1wLmVuYWJsZWQiOiBUcnVlLAotICAgICAg
ICAjIERpc2FibGUgc2FmZWJyb3dzaW5nIGNvbXBvbmVudHMKLSAgICAgICAgImJyb3dzZXIuc2Fm
ZWJyb3dzaW5nLmJsb2NrZWRVUklzLmVuYWJsZWQiOiBGYWxzZSwKLSAgICAgICAgImJyb3dzZXIu
c2FmZWJyb3dzaW5nLmRvd25sb2Fkcy5lbmFibGVkIjogRmFsc2UsCi0gICAgICAgICJicm93c2Vy
LnNhZmVicm93c2luZy5wYXNzd29yZHMuZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAiYnJvd3Nl
ci5zYWZlYnJvd3NpbmcubWFsd2FyZS5lbmFibGVkIjogRmFsc2UsCi0gICAgICAgICJicm93c2Vy
LnNhZmVicm93c2luZy5waGlzaGluZy5lbmFibGVkIjogRmFsc2UsCi0gICAgICAgICMgRG8gbm90
IHJlc3RvcmUgdGhlIGxhc3Qgb3BlbiBzZXQgb2YgdGFicyBpZiB0aGUgYnJvd3NlciBoYXMgY3Jh
c2hlZAotICAgICAgICAiYnJvd3Nlci5zZXNzaW9uc3RvcmUucmVzdW1lX2Zyb21fY3Jhc2giOiBG
YWxzZSwKLSAgICAgICAgIyBEaXNhYmxlIEFuZHJvaWQgc25pcHBldHMKLSAgICAgICAgImJyb3dz
ZXIuc25pcHBldHMuZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAiYnJvd3Nlci5zbmlwcGV0cy5z
eW5jUHJvbW8uZW5hYmxlZCI6IEZhbHNlLAotICAgICAgICAiYnJvd3Nlci5zbmlwcGV0cy5maXJz
dHJ1bkhvbWVwYWdlLmVuYWJsZWQiOiBGYWxzZSwKLSAgICAgICAgIyBEbyBub3QgYWxsb3cgYmFj
a2dyb3VuZCB0YWJzIHRvIGJlIHpvbWJpZmllZCwgb3RoZXJ3aXNlIGZvciB0ZXN0cyB0aGF0Ci0g
ICAgICAgICMgb3BlbiBhZGRpdGlvbmFsIHRhYnMsIHRoZSB0ZXN0IGhhcm5lc3MgdGFiIGl0c2Vs
ZiBtaWdodCBnZXQgdW5sb2FkZWQKLSAgICAgICAgImJyb3dzZXIudGFicy5kaXNhYmxlQmFja2dy
b3VuZFpvbWJpZmljYXRpb24iOiBUcnVlLAotICAgICAgICAjIERpc2FibGUgZTEwcyBieSBkZWZh
dWx0Ci0gICAgICAgICJicm93c2VyLnRhYnMucmVtb3RlLmF1dG9zdGFydCI6IEZhbHNlLAotICAg
ICAgICAjIERvbid0IHdhcm4gd2hlbiBleGl0aW5nIHRoZSBicm93c2VyCi0gICAgICAgICJicm93
c2VyLndhcm5PblF1aXQiOiBGYWxzZSwKLSAgICAgICAgIyBEb24ndCBzZW5kIEZpcmVmb3ggaGVh
bHRoIHJlcG9ydHMgdG8gdGhlIHByb2R1Y3Rpb24gc2VydmVyCi0gICAgICAgICJkYXRhcmVwb3J0
aW5nLmhlYWx0aHJlcG9ydC5hYm91dC5yZXBvcnRVcmwiOiAiaHR0cDovLyUoc2VydmVyKXMvZHVt
bXkvYWJvdXRoZWFsdGhyZXBvcnQvIiwKLSAgICAgICAgIyBBdXRvbWF0aWNhbGx5IHVubG9hZCBi
ZWZvcmV1bmxvYWQgYWxlcnRzCi0gICAgICAgICJkb20uZGlzYWJsZV9iZWZvcmV1bmxvYWQiOiBU
cnVlLAotICAgICAgICAjIERpc2FibGUgdGhlIFByb2Nlc3NIYW5nTW9uaXRvcgotICAgICAgICAi
ZG9tLmlwYy5yZXBvcnRQcm9jZXNzSGFuZ3MiOiBGYWxzZSwKLSAgICAgICAgIyBObyBzbG93IHNj
cmlwdCBkaWFsb2dzCi0gICAgICAgICJkb20ubWF4X2Nocm9tZV9zY3JpcHRfcnVuX3RpbWUiOiAw
LAotICAgICAgICAiZG9tLm1heF9zY3JpcHRfcnVuX3RpbWUiOiAwLAotICAgICAgICAjIE1ha2Ug
c3VyZSBvcGVuaW5nIGFib3V0OmFkZG9ucyB3b24idCBoaXQgdGhlIG5ldHdvcmsKLSAgICAgICAg
ImV4dGVuc2lvbnMud2Vic2VydmljZS5kaXNjb3ZlclVSTCI6ICJodHRwOi8vJShzZXJ2ZXIpcy9k
dW1teS9kaXNjb3ZlcnlVUkwiLAotICAgICAgICAjIE5vIGhhbmcgbW9uaXRvcgotICAgICAgICAi
aGFuZ21vbml0b3IudGltZW91dCI6IDAsCi0KLSAgICAgICAgImphdmFzY3JpcHQub3B0aW9ucy5z
aG93SW5Db25zb2xlIjogVHJ1ZSwKLSAgICAgICAgIyBFbnN1cmUgYmxvY2tsaXN0IHVwZGF0ZXMg
ZG9uJ3QgaGl0IHRoZSBuZXR3b3JrCi0gICAgICAgICJzZXJ2aWNlcy5zZXR0aW5ncy5zZXJ2ZXIi
OiAiaHR0cDovLyUoc2VydmVyKXMvZHVtbXkvYmxvY2tsaXN0LyIsCi0gICAgICAgICMgRGlzYWJs
ZSBwYXNzd29yZCBjYXB0dXJlLCBzbyB0aGF0IHRlc3RzIHRoYXQgaW5jbHVkZSBmb3JtcyBhcmVu
InQKLSAgICAgICAgIyBpbmZsdWVuY2VkIGJ5IHRoZSBwcmVzZW5jZSBvZiB0aGUgcGVyc2lzdGVu
dCBkb29yaGFuZ2VyIG5vdGlmaWNhdGlvbgotICAgICAgICAic2lnbm9uLnJlbWVtYmVyU2lnbm9u
cyI6IEZhbHNlLAotICAgIH0pCi0KLQotZGVmIGNoZWNrX2FyZ3MoKiprd2FyZ3MpOgotICAgIHBh
c3MKLQotZGVmIGJyb3dzZXJfa3dhcmdzKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmln
LCAqKmt3YXJncyk6Ci0gICAgcmV0dXJuIHsicGFja2FnZV9uYW1lIjoga3dhcmdzWyJwYWNrYWdl
X25hbWUiXSwKLSAgICAgICAgICAgICJkZXZpY2Vfc2VyaWFsIjoga3dhcmdzWyJkZXZpY2Vfc2Vy
aWFsIl0sCi0gICAgICAgICAgICAicHJlZnNfcm9vdCI6IGt3YXJnc1sicHJlZnNfcm9vdCJdLAot
ICAgICAgICAgICAgImV4dHJhX3ByZWZzIjoga3dhcmdzWyJleHRyYV9wcmVmcyJdLAotICAgICAg
ICAgICAgInRlc3RfdHlwZSI6IHRlc3RfdHlwZSwKLSAgICAgICAgICAgICJkZWJ1Z19pbmZvIjog
a3dhcmdzWyJkZWJ1Z19pbmZvIl0sCi0gICAgICAgICAgICAic3ltYm9sc19wYXRoIjoga3dhcmdz
WyJzeW1ib2xzX3BhdGgiXSwKLSAgICAgICAgICAgICJzdGFja3dhbGtfYmluYXJ5Ijoga3dhcmdz
WyJzdGFja3dhbGtfYmluYXJ5Il0sCi0gICAgICAgICAgICAiY2VydHV0aWxfYmluYXJ5Ijoga3dh
cmdzWyJjZXJ0dXRpbF9iaW5hcnkiXSwKLSAgICAgICAgICAgICJjYV9jZXJ0aWZpY2F0ZV9wYXRo
Ijoga3dhcmdzWyJzc2xfZW52Il0uY2FfY2VydF9wYXRoKCksCi0gICAgICAgICAgICAic3RhY2tm
aXhfZGlyIjoga3dhcmdzWyJzdGFja2ZpeF9kaXIiXSwKLSAgICAgICAgICAgICJiaW5hcnlfYXJn
cyI6IGt3YXJnc1siYmluYXJ5X2FyZ3MiXSwKLSAgICAgICAgICAgICJ0aW1lb3V0X211bHRpcGxp
ZXIiOiBnZXRfdGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX2RhdGEsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAq
Kmt3YXJncyksCi0gICAgICAgICAgICAibGVha19jaGVjayI6IGt3YXJnc1sibGVha19jaGVjayJd
LAotICAgICAgICAgICAgInN0eWxvX3RocmVhZHMiOiBrd2FyZ3NbInN0eWxvX3RocmVhZHMiXSwK
LSAgICAgICAgICAgICJjaGFvc19tb2RlX2ZsYWdzIjoga3dhcmdzWyJjaGFvc19tb2RlX2ZsYWdz
Il0sCi0gICAgICAgICAgICAiY29uZmlnIjogY29uZmlnfQotCi0KLWRlZiBlbnZfZXh0cmFzKCoq
a3dhcmdzKToKLSAgICByZXR1cm4gW10KLQotCi1kZWYgcnVuX2luZm9fZXh0cmFzKCoqa3dhcmdz
KToKLSAgICByZXR1cm4geyJlMTBzIjogRmFsc2UsCi0gICAgICAgICAgICAiaGVhZGxlc3MiOiBG
YWxzZX0KLQotCi1kZWYgZW52X29wdGlvbnMoKToKLSAgICAjIFRoZSBzZXJ2ZXIgaG9zdCBpcyBz
ZXQgdG8gcHVibGljIGxvY2FsaG9zdCBJUCBzbyB0aGF0IHJlc291cmNlcyBjYW4gYmUgYWNjZXNz
ZWQKLSAgICAjIGZyb20gQW5kcm9pZCBlbXVsYXRvcgotICAgIHJldHVybiB7InNlcnZlcl9ob3N0
IjogbW96bmV0d29yay5nZXRfaXAoKSwKLSAgICAgICAgICAgICJiaW5kX2FkZHJlc3MiOiBGYWxz
ZSwKLSAgICAgICAgICAgICJzdXBwb3J0c19kZWJ1Z2dlciI6IFRydWV9Ci0KLQotZGVmIHdyaXRl
X2hvc3RzX2ZpbGUoY29uZmlnLCBkZXZpY2UpOgotICAgIG5ld19ob3N0cyA9IG1ha2VfaG9zdHNf
ZmlsZShjb25maWcsIG1vem5ldHdvcmsuZ2V0X2lwKCkpCi0gICAgY3VycmVudF9ob3N0cyA9IGRl
dmljZS5nZXRfZmlsZSgiL2V0Yy9ob3N0cyIpCi0gICAgaWYgbmV3X2hvc3RzID09IGN1cnJlbnRf
aG9zdHM6Ci0gICAgICAgIHJldHVybgotICAgIGhvc3RzX2ZkLCBob3N0c19wYXRoID0gdGVtcGZp
bGUubWtzdGVtcCgpCi0gICAgdHJ5OgotICAgICAgICB3aXRoIG9zLmZkb3Blbihob3N0c19mZCwg
InciKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShuZXdfaG9zdHMpCi0gICAgICAgIGRldmlj
ZS5yZW1vdW50KCkKLSAgICAgICAgZGV2aWNlLnB1c2goaG9zdHNfcGF0aCwgIi9ldGMvaG9zdHMi
KQotICAgIGZpbmFsbHk6Ci0gICAgICAgIG9zLnJlbW92ZShob3N0c19wYXRoKQotCi0KLWNsYXNz
IEZlbm5lY0Jyb3dzZXIoRmlyZWZveEJyb3dzZXIpOgotICAgIHVzZWRfcG9ydHMgPSBzZXQoKQot
ICAgIGluaXRfdGltZW91dCA9IDMwMAotICAgIHNodXRkb3duX3RpbWVvdXQgPSA2MAotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJlZnNfcm9vdCwgdGVzdF90eXBlLCBwYWNrYWdl
X25hbWU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZGV2aWNlX3NlcmlhbD0iZW11bGF0b3ItNTQ0
NCIsICoqa3dhcmdzKToKLSAgICAgICAgRmlyZWZveEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBOb25lLCBwcmVmc19yb290LCB0ZXN0X3R5cGUsICoqa3dhcmdzKQotICAgICAgICBzZWxm
Ll9wYWNrYWdlX25hbWUgPSBwYWNrYWdlX25hbWUKLSAgICAgICAgc2VsZi5kZXZpY2Vfc2VyaWFs
ID0gZGV2aWNlX3NlcmlhbAotCi0gICAgQHByb3BlcnR5Ci0gICAgZGVmIHBhY2thZ2VfbmFtZShz
ZWxmKToKLSAgICAgICAgIiIiCi0gICAgICAgIE5hbWUgb2YgYXBwIHRvIHJ1biBvbiBlbXVsYXRv
ci4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIHNlbGYuX3BhY2thZ2VfbmFtZSBpcyBOb25lOgot
ICAgICAgICAgICAgc2VsZi5fcGFja2FnZV9uYW1lID0gIm9yZy5tb3ppbGxhLmZlbm5lYyIKLSAg
ICAgICAgICAgIHVzZXIgPSBvcy5nZXRlbnYoIlVTRVIiKQotICAgICAgICAgICAgaWYgdXNlcjoK
LSAgICAgICAgICAgICAgICBzZWxmLl9wYWNrYWdlX25hbWUgKz0gIl8iICsgdXNlcgotICAgICAg
ICByZXR1cm4gc2VsZi5fcGFja2FnZV9uYW1lCi0KLSAgICBkZWYgc3RhcnQoc2VsZiwgKiprd2Fy
Z3MpOgotICAgICAgICBpZiBzZWxmLm1hcmlvbmV0dGVfcG9ydCBpcyBOb25lOgotICAgICAgICAg
ICAgc2VsZi5tYXJpb25ldHRlX3BvcnQgPSBnZXRfZnJlZV9wb3J0KDI4MjgsIGV4Y2x1ZGU9c2Vs
Zi51c2VkX3BvcnRzKQotICAgICAgICAgICAgc2VsZi51c2VkX3BvcnRzLmFkZChzZWxmLm1hcmlv
bmV0dGVfcG9ydCkKLQotICAgICAgICBlbnYgPSB7fQotICAgICAgICBlbnZbIk1PWl9DUkFTSFJF
UE9SVEVSIl0gPSAiMSIKLSAgICAgICAgZW52WyJNT1pfQ1JBU0hSRVBPUlRFUl9TSFVURE9XTiJd
ID0gIjEiCi0gICAgICAgIGVudlsiTU9aX0RJU0FCTEVfTk9OTE9DQUxfQ09OTkVDVElPTlMiXSA9
ICIxIgotICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3RocmVh
ZHMpCi0gICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgIGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFncykK
LQotICAgICAgICBwcmVmZXJlbmNlcyA9IHNlbGYubG9hZF9wcmVmcygpCi0KLSAgICAgICAgc2Vs
Zi5wcm9maWxlID0gRmVubmVjUHJvZmlsZShwcmVmZXJlbmNlcz1wcmVmZXJlbmNlcykKLSAgICAg
ICAgc2VsZi5wcm9maWxlLnNldF9wcmVmZXJlbmNlcyh7Im1hcmlvbmV0dGUucG9ydCI6IHNlbGYu
bWFyaW9uZXR0ZV9wb3J0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZG9tLmRpc2FibGVfb3Blbl9kdXJpbmdfbG9hZCI6IEZhbHNlLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9tLnNlbmRfYWZ0ZXJfcGFpbnRf
dG9fY29udGVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJuZXR3b3JrLnByZWxvYWQiOiBUcnVlfSkKLQotICAgICAgICBpZiBzZWxmLmxlYWtfY2hlY2sg
YW5kIGt3YXJncy5nZXQoImNoZWNrX2xlYWtzIiwgVHJ1ZSk6Ci0gICAgICAgICAgICBzZWxmLmxl
YWtfcmVwb3J0X2ZpbGUgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcm9maWxlLnByb2ZpbGUsICJydW50
ZXN0c19sZWFrcy5sb2ciKQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoc2VsZi5sZWFr
X3JlcG9ydF9maWxlKToKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5sZWFrX3JlcG9y
dF9maWxlKQotICAgICAgICAgICAgZW52WyJYUENPTV9NRU1fQkxPQVRfTE9HIl0gPSBzZWxmLmxl
YWtfcmVwb3J0X2ZpbGUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYubGVha19yZXBv
cnRfZmlsZSA9IE5vbmUKLQotICAgICAgICBpZiBzZWxmLmNhX2NlcnRpZmljYXRlX3BhdGggaXMg
bm90IE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnNldHVwX3NzbCgpCi0KLSAgICAgICAgZGVidWdf
YXJncywgY21kID0gYnJvd3Nlcl9jb21tYW5kKHNlbGYucGFja2FnZV9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5iaW5hcnlfYXJncyBpZiBzZWxm
LmJpbmFyeV9hcmdzIGVsc2UgW10gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW2NtZF9hcmcoIm1hcmlvbmV0dGUiKSwgImFib3V0OmJsYW5rIl0sCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRlYnVnX2luZm8pCi0KLSAg
ICAgICAgc2VsZi5ydW5uZXIgPSBGZW5uZWNFbXVsYXRvclJ1bm5lcihhcHA9c2VsZi5wYWNrYWdl
X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZmls
ZT1zZWxmLnByb2ZpbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY21kYXJncz1jbWRbMTpdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGVudj1lbnYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlcmlhbD1zZWxmLmRldmljZV9zZXJpYWwsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUT0RPIC0gY2hvb3NlIGFwcHJv
cHJpYXRlIGxvZyBkaXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBsb2dkaXI9b3MuZ2V0Y3dkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvY2Vzc19jbGFzcz1Qcm9jZXNzSGFuZGxlciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBwcm9jZXNzX2FyZ3M9eyJwcm9jZXNzT3V0cHV0TGlu
ZSI6IFtzZWxmLm9uX291dHB1dF19KQotCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTdGFy
dGluZyBGZW5uZWMiKQotICAgICAgICAjIGNvbm5lY3QgdG8gYSBydW5uaW5nIGVtdWxhdG9yCi0g
ICAgICAgIHNlbGYucnVubmVyLmRldmljZS5jb25uZWN0KCkKLQotICAgICAgICB3cml0ZV9ob3N0
c19maWxlKHNlbGYuY29uZmlnLCBzZWxmLnJ1bm5lci5kZXZpY2UuZGV2aWNlKQotCi0gICAgICAg
IHNlbGYucnVubmVyLnN0YXJ0KGRlYnVnX2FyZ3M9ZGVidWdfYXJncywgaW50ZXJhY3RpdmU9c2Vs
Zi5kZWJ1Z19pbmZvIGFuZCBzZWxmLmRlYnVnX2luZm8uaW50ZXJhY3RpdmUpCi0KLSAgICAgICAg
IyBnZWNrb19sb2cgY29tZXMgZnJvbSBsb2djYXQgd2hlbiBydW5uaW5nIHdpdGggZGV2aWNlL2Vt
dWxhdG9yCi0gICAgICAgIGxvZ2NhdF9hcmdzID0gewotICAgICAgICAgICAgImZpbHRlcnNwZWMi
OiAiR2Vja28iLAotICAgICAgICAgICAgInNlcmlhbCI6IHNlbGYucnVubmVyLmRldmljZS5hcHBf
Y3R4LmRldmljZV9zZXJpYWwKLSAgICAgICAgfQotICAgICAgICAjIFRPRE8gc2V0dGluZyBsb2dj
YXRfYXJnc1sibG9nZmlsZSJdIHlpZWxkcyBhbiBhbG1vc3QgZW1wdHkgZmlsZQotICAgICAgICAj
IGV2ZW4gd2l0aG91dCBmaWx0ZXJzcGVjCi0gICAgICAgIGxvZ2NhdF9hcmdzWyJzdHJlYW0iXSA9
IHN5cy5zdGRvdXQKLSAgICAgICAgc2VsZi5ydW5uZXIuZGV2aWNlLnN0YXJ0X2xvZ2NhdCgqKmxv
Z2NhdF9hcmdzKQotCi0gICAgICAgIHNlbGYucnVubmVyLmRldmljZS5kZXZpY2UuZm9yd2FyZCgK
LSAgICAgICAgICAgIGxvY2FsPSJ0Y3A6e30iLmZvcm1hdChzZWxmLm1hcmlvbmV0dGVfcG9ydCks
Ci0gICAgICAgICAgICByZW1vdGU9InRjcDp7fSIuZm9ybWF0KHNlbGYubWFyaW9uZXR0ZV9wb3J0
KSkKLQotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiRmVubmVjIFN0YXJ0ZWQiKQotCi0gICAg
ZGVmIHN0b3Aoc2VsZiwgZm9yY2U9RmFsc2UpOgotICAgICAgICBpZiBzZWxmLnJ1bm5lciBpcyBu
b3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnJ1bm5l
ci5kZXZpY2UuY29ubmVjdGVkOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5lci5kZXZp
Y2UuZGV2aWNlLnJlbW92ZV9mb3J3YXJkcygKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0Y3A6
e30iLmZvcm1hdChzZWxmLm1hcmlvbmV0dGVfcG9ydCkpCi0gICAgICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uOgotICAgICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9leGNlcHRpb24oKnN5cy5l
eGNfaW5mbygpKQotICAgICAgICAgICAgIyBXZSBhc3N1bWUgdGhhdCBzdG9wcGluZyB0aGUgcnVu
bmVyIHByb21wdHMgdGhlCi0gICAgICAgICAgICAjIGJyb3dzZXIgdG8gc2h1dCBkb3duLiBUaGlz
IGFsbG93cyB0aGUgbGVhayBsb2cgdG8gYmUgd3JpdHRlbgotICAgICAgICAgICAgZm9yIGNsZWFu
LCBzdG9wX2YgaW4gWyhUcnVlLCBsYW1iZGE6IHNlbGYucnVubmVyLndhaXQoc2VsZi5zaHV0ZG93
bl90aW1lb3V0KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEZhbHNlLCBs
YW1iZGE6IHNlbGYucnVubmVyLnN0b3Aoc2lnbmFsLlNJR1RFUk0pKSwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAoRmFsc2UsIGxhbWJkYTogc2VsZi5ydW5uZXIuc3RvcChzaWdu
YWwuU0lHS0lMTCkpXToKLSAgICAgICAgICAgICAgICBpZiBub3QgZm9yY2Ugb3Igbm90IGNsZWFu
OgotICAgICAgICAgICAgICAgICAgICByZXRjb2RlID0gc3RvcF9mKCkKLSAgICAgICAgICAgICAg
ICAgICAgaWYgcmV0Y29kZSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYubG9nZ2VyLmluZm8oIkJyb3dzZXIgZXhpdGVkIHdpdGggcmV0dXJuIGNvZGUgJXMiICUgcmV0
Y29kZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgIHNlbGYubG9nZ2Vy
LmRlYnVnKCJzdG9wcGVkIikKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9maXJl
Zm94LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKaW5kZXggMDRmMmNlODRh
NDE2MTlhMjNlMjlkNTQzNjQzMGIxMWZhMmI2ZDdjNS4uNWUzZTQxZWI1NWZjODI1NjdiYTk1NDNj
MjgzZTM0NjM1YmQ4YjExMiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVm
b3gucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2ZpcmVmb3gucHkKQEAgLTcsNiArNyw3
IEBAIGltcG9ydCBzeXMKIAogaW1wb3J0IG1vemluZm8KIGltcG9ydCBtb3psZWFrCitpbXBvcnQg
bW96dmVyc2lvbgogZnJvbSBtb3pwcm9jZXNzIGltcG9ydCBQcm9jZXNzSGFuZGxlcgogZnJvbSBt
b3pwcm9maWxlIGltcG9ydCBGaXJlZm94UHJvZmlsZSwgUHJlZmVyZW5jZXMKIGZyb20gbW96cnVu
bmVyIGltcG9ydCBGaXJlZm94UnVubmVyCkBAIC0zOCw3ICszOSw4IEBAIF9fd3B0cnVubmVyX18g
PSB7InByb2R1Y3QiOiAiZmlyZWZveCIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjog
ImVudl9leHRyYXMiLAogICAgICAgICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlv
bnMiLAogICAgICAgICAgICAgICAgICAicnVuX2luZm9fZXh0cmFzIjogInJ1bl9pbmZvX2V4dHJh
cyIsCi0gICAgICAgICAgICAgICAgICJ1cGRhdGVfcHJvcGVydGllcyI6ICJ1cGRhdGVfcHJvcGVy
dGllcyJ9CisgICAgICAgICAgICAgICAgICJ1cGRhdGVfcHJvcGVydGllcyI6ICJ1cGRhdGVfcHJv
cGVydGllcyIsCisgICAgICAgICAgICAgICAgICJ0aW1lb3V0X211bHRpcGxpZXIiOiAiZ2V0X3Rp
bWVvdXRfbXVsdGlwbGllciJ9CiAKIAogZGVmIGdldF90aW1lb3V0X211bHRpcGxpZXIodGVzdF90
eXBlLCBydW5faW5mb19kYXRhLCAqKmt3YXJncyk6CkBAIC01Niw2ICs1OCw5IEBAIGRlZiBnZXRf
dGltZW91dF9tdWx0aXBsaWVyKHRlc3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpOgog
ICAgICAgICAgICAgcmV0dXJuIDMKICAgICBlbGlmIHJ1bl9pbmZvX2RhdGFbIm9zIl0gPT0gImFu
ZHJvaWQiOgogICAgICAgICByZXR1cm4gNAorICAgICMgaHR0cHM6Ly9idWd6aWxsYS5tb3ppbGxh
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUzODcyNQorICAgIGVsaWYgcnVuX2luZm9fZGF0YVsib3Mi
XSA9PSAid2luIiBhbmQgcnVuX2luZm9fZGF0YVsicHJvY2Vzc29yIl0gPT0gImFhcmNoNjQiOgor
ICAgICAgICByZXR1cm4gNAogICAgIHJldHVybiAxCiAKIApAQCAtNzQsMTYgKzc5LDE5IEBAIGRl
ZiBicm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2Fy
Z3MpOgogICAgICAgICAgICAgImNlcnR1dGlsX2JpbmFyeSI6IGt3YXJnc1siY2VydHV0aWxfYmlu
YXJ5Il0sCiAgICAgICAgICAgICAiY2FfY2VydGlmaWNhdGVfcGF0aCI6IGNvbmZpZy5zc2xfY29u
ZmlnWyJjYV9jZXJ0X3BhdGgiXSwKICAgICAgICAgICAgICJlMTBzIjoga3dhcmdzWyJnZWNrb19l
MTBzIl0sCisgICAgICAgICAgICAiZW5hYmxlX3dlYnJlbmRlciI6IGt3YXJnc1siZW5hYmxlX3dl
YnJlbmRlciJdLAogICAgICAgICAgICAgInN0YWNrZml4X2RpciI6IGt3YXJnc1sic3RhY2tmaXhf
ZGlyIl0sCiAgICAgICAgICAgICAiYmluYXJ5X2FyZ3MiOiBrd2FyZ3NbImJpbmFyeV9hcmdzIl0s
CiAgICAgICAgICAgICAidGltZW91dF9tdWx0aXBsaWVyIjogZ2V0X3RpbWVvdXRfbXVsdGlwbGll
cih0ZXN0X3R5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5faW5mb19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpLAotICAgICAgICAgICAgImxl
YWtfY2hlY2siOiBrd2FyZ3NbImxlYWtfY2hlY2siXSwKKyAgICAgICAgICAgICJsZWFrX2NoZWNr
IjogcnVuX2luZm9fZGF0YVsiZGVidWciXSBhbmQgKGt3YXJnc1sibGVha19jaGVjayJdIGlzIG5v
dCBGYWxzZSksCiAgICAgICAgICAgICAiYXNhbiI6IHJ1bl9pbmZvX2RhdGEuZ2V0KCJhc2FuIiks
CiAgICAgICAgICAgICAic3R5bG9fdGhyZWFkcyI6IGt3YXJnc1sic3R5bG9fdGhyZWFkcyJdLAog
ICAgICAgICAgICAgImNoYW9zX21vZGVfZmxhZ3MiOiBrd2FyZ3NbImNoYW9zX21vZGVfZmxhZ3Mi
XSwKLSAgICAgICAgICAgICJjb25maWciOiBjb25maWd9CisgICAgICAgICAgICAiY29uZmlnIjog
Y29uZmlnLAorICAgICAgICAgICAgImJyb3dzZXJfY2hhbm5lbCI6IGt3YXJnc1siYnJvd3Nlcl9j
aGFubmVsIl0sCisgICAgICAgICAgICAiaGVhZGxlc3MiOiBrd2FyZ3NbImhlYWRsZXNzIl19CiAK
IAogZGVmIGV4ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21h
bmFnZXIsIHJ1bl9pbmZvX2RhdGEsCkBAIC05Nyw2ICsxMDUsOCBAQCBkZWYgZXhlY3V0b3Jfa3dh
cmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2FjaGVfbWFuYWdlciwgcnVuX2luZm9fZGF0
YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAqKmt3YXJncykKICAgICBleGVjdXRvcl9rd2FyZ3NbImUxMHMiXSA9IHJ1
bl9pbmZvX2RhdGFbImUxMHMiXQogICAgIGNhcGFiaWxpdGllcyA9IHt9CisgICAgaWYgdGVzdF90
eXBlID09ICJ0ZXN0aGFybmVzcyI6CisgICAgICAgIGNhcGFiaWxpdGllc1sicGFnZUxvYWRTdHJh
dGVneSJdID0gImVhZ2VyIgogICAgIGlmIHRlc3RfdHlwZSA9PSAicmVmdGVzdCI6CiAgICAgICAg
IGV4ZWN1dG9yX2t3YXJnc1sicmVmdGVzdF9pbnRlcm5hbCJdID0ga3dhcmdzWyJyZWZ0ZXN0X2lu
dGVybmFsIl0KICAgICAgICAgZXhlY3V0b3Jfa3dhcmdzWyJyZWZ0ZXN0X3NjcmVlbnNob3QiXSA9
IGt3YXJnc1sicmVmdGVzdF9zY3JlZW5zaG90Il0KQEAgLTEwNiw5ICsxMTYsMTYgQEAgZGVmIGV4
ZWN1dG9yX2t3YXJncyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1
bl9pbmZvX2RhdGEsCiAgICAgICAgICAgICBvcHRpb25zWyJiaW5hcnkiXSA9IGt3YXJnc1siYmlu
YXJ5Il0KICAgICAgICAgaWYga3dhcmdzWyJiaW5hcnlfYXJncyJdOgogICAgICAgICAgICAgb3B0
aW9uc1siYXJncyJdID0ga3dhcmdzWyJiaW5hcnlfYXJncyJdCisgICAgICAgIGlmIGt3YXJnc1si
aGVhZGxlc3MiXToKKyAgICAgICAgICAgIGlmICJhcmdzIiBub3QgaW4gb3B0aW9uczoKKyAgICAg
ICAgICAgICAgICBvcHRpb25zWyJhcmdzIl0gPSBbXQorICAgICAgICAgICAgaWYgIi0taGVhZGxl
c3MiIG5vdCBpbiBvcHRpb25zWyJhcmdzIl06CisgICAgICAgICAgICAgICAgb3B0aW9uc1siYXJn
cyJdLmFwcGVuZCgiLS1oZWFkbGVzcyIpCiAgICAgICAgIG9wdGlvbnNbInByZWZzIl0gPSB7CiAg
ICAgICAgICAgICAibmV0d29yay5kbnMubG9jYWxEb21haW5zIjogIiwiLmpvaW4oc2VydmVyX2Nv
bmZpZy5kb21haW5zX3NldCkKICAgICAgICAgfQorICAgICAgICBmb3IgcHJlZiwgdmFsdWUgaW4g
a3dhcmdzWyJleHRyYV9wcmVmcyJdOgorICAgICAgICAgICAgb3B0aW9uc1sicHJlZnMiXS51cGRh
dGUoe3ByZWY6IFByZWZlcmVuY2VzLmNhc3QodmFsdWUpfSkKICAgICAgICAgY2FwYWJpbGl0aWVz
WyJtb3o6ZmlyZWZveE9wdGlvbnMiXSA9IG9wdGlvbnMKICAgICBpZiBrd2FyZ3NbImNlcnR1dGls
X2JpbmFyeSJdIGlzIE5vbmU6CiAgICAgICAgIGNhcGFiaWxpdGllc1siYWNjZXB0SW5zZWN1cmVD
ZXJ0cyJdID0gVHJ1ZQpAQCAtMTMwLDMyICsxNDcsNjkgQEAgZGVmIGVudl9vcHRpb25zKCk6CiAg
ICAgIwogICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvcHVs
bC85NDgwCiAgICAgcmV0dXJuIHsic2VydmVyX2hvc3QiOiAiMTI3LjAuMC4xIiwKLSAgICAgICAg
ICAgICJiaW5kX2FkZHJlc3MiOiBGYWxzZSwKICAgICAgICAgICAgICJzdXBwb3J0c19kZWJ1Z2dl
ciI6IFRydWV9CiAKIAogZGVmIHJ1bl9pbmZvX2V4dHJhcygqKmt3YXJncyk6Ci0gICAgcmV0dXJu
IHsiZTEwcyI6IGt3YXJnc1siZ2Vja29fZTEwcyJdLAotICAgICAgICAgICAgIndhc20iOiBrd2Fy
Z3MuZ2V0KCJ3YXNtIiwgVHJ1ZSksCi0gICAgICAgICAgICAidmVyaWZ5Ijoga3dhcmdzWyJ2ZXJp
ZnkiXSwKLSAgICAgICAgICAgICJoZWFkbGVzcyI6ICJNT1pfSEVBRExFU1MiIGluIG9zLmVudmly
b259CisKKyAgICBkZWYgZ2V0X2Jvb2xfcHJlZl9pZl9leGlzdHMocHJlZik6CisgICAgICAgIGZv
ciBrZXksIHZhbHVlIGluIGt3YXJncy5nZXQoJ2V4dHJhX3ByZWZzJywgW10pOgorICAgICAgICAg
ICAgaWYgcHJlZiA9PSBrZXk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHZhbHVlLmxvd2VyKCkg
aW4gKCd0cnVlJywgJzEnKQorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgZGVmIGdldF9ib29s
X3ByZWYocHJlZik6CisgICAgICAgIHByZWZfdmFsdWUgPSBnZXRfYm9vbF9wcmVmX2lmX2V4aXN0
cyhwcmVmKQorICAgICAgICByZXR1cm4gcHJlZl92YWx1ZSBpZiBwcmVmX3ZhbHVlIGlzIG5vdCBO
b25lIGVsc2UgRmFsc2UKKworICAgIHJ2ID0geyJlMTBzIjoga3dhcmdzWyJnZWNrb19lMTBzIl0s
CisgICAgICAgICAgIndhc20iOiBrd2FyZ3MuZ2V0KCJ3YXNtIiwgVHJ1ZSksCisgICAgICAgICAg
InZlcmlmeSI6IGt3YXJnc1sidmVyaWZ5Il0sCisgICAgICAgICAgImhlYWRsZXNzIjoga3dhcmdz
LmdldCgiaGVhZGxlc3MiLCBGYWxzZSkgb3IgIk1PWl9IRUFETEVTUyIgaW4gb3MuZW52aXJvbiwK
KyAgICAgICAgICAiZmlzc2lvbiI6IGdldF9ib29sX3ByZWYoImZpc3Npb24uYXV0b3N0YXJ0Iil9
CisKKyAgICAjIFRoZSB2YWx1ZSBvZiBgc3ctZTEwc2AgZGVmYXVsdHMgdG8gd2hldGhlciB0aGUg
InBhcmVudF9pbnRlcmNlcHQiCisgICAgIyBpbXBsZW1lbnRhdGlvbiBpcyBlbmFibGVkIGZvciB0
aGUgY3VycmVudCBidWlsZC4gVGhpcyB2YWx1ZSwgaG93ZXZlciwKKyAgICAjIGNhbiBiZSBvdmVy
cmlkZGVuIGJ5IGV4cGxpY2l0bHkgc2V0dGluZyB0aGUgcHJlZiB3aXRoIHRoZSBgLS1zZXRwcmVm
YCBDTEkKKyAgICAjIGZsYWcsIHdoaWNoIGlzIGNoZWNrZWQgaGVyZS4gSWYgbm90IHN1cHBsaWVk
LCB0aGUgZGVmYXVsdCB2YWx1ZSBvZgorICAgICMgYHN3LWUxMHNgIHdpbGwgYmUgZmlsbGVkIGlu
IGluIGBSdW5JbmZvYCdzIGNvbnN0cnVjdG9yLgorICAgICMKKyAgICAjIFdlIGNhbid0IGNhcHR1
cmUgdGhlIGRlZmF1bHQgdmFsdWUgcmlnaHQgbm93IGJlY2F1c2UgKGN1cnJlbnRseSksIGl0Cisg
ICAgIyBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgYG5pZ2h0bHlfYnVpbGRgLCB3aGljaCBpc24n
dCBrbm93biB1bnRpbAorICAgICMgYFJ1bkluZm9gJ3MgY29uc3RydWN0b3IuCisgICAgc3dfZTEw
c19vdmVycmlkZSA9IGdldF9ib29sX3ByZWZfaWZfZXhpc3RzKCJkb20uc2VydmljZVdvcmtlcnMu
cGFyZW50X2ludGVyY2VwdCIpCisgICAgaWYgc3dfZTEwc19vdmVycmlkZSBpcyBub3QgTm9uZToK
KyAgICAgICAgcnZbInN3LWUxMHMiXSA9IHN3X2UxMHNfb3ZlcnJpZGUKKworICAgIHJ2LnVwZGF0
ZShydW5faW5mb19icm93c2VyX3ZlcnNpb24oa3dhcmdzWyJiaW5hcnkiXSkpCisgICAgcmV0dXJu
IHJ2CisKKworZGVmIHJ1bl9pbmZvX2Jyb3dzZXJfdmVyc2lvbihiaW5hcnkpOgorICAgIHRyeToK
KyAgICAgICAgdmVyc2lvbl9pbmZvID0gbW96dmVyc2lvbi5nZXRfdmVyc2lvbihiaW5hcnkpCisg
ICAgZXhjZXB0IG1venZlcnNpb24uZXJyb3JzLlZlcnNpb25FcnJvcjoKKyAgICAgICAgdmVyc2lv
bl9pbmZvID0gTm9uZQorICAgIGlmIHZlcnNpb25faW5mbzoKKyAgICAgICAgcmV0dXJuIHsiYnJv
d3Nlcl9idWlsZF9pZCI6IHZlcnNpb25faW5mby5nZXQoImFwcGxpY2F0aW9uX2J1aWxkaWQiLCBO
b25lKSwKKyAgICAgICAgICAgICAgICAiYnJvd3Nlcl9jaGFuZ2VzZXQiOiB2ZXJzaW9uX2luZm8u
Z2V0KCJhcHBsaWNhdGlvbl9jaGFuZ2VzZXQiLCBOb25lKX0KKyAgICByZXR1cm4ge30KIAogCiBk
ZWYgdXBkYXRlX3Byb3BlcnRpZXMoKToKLSAgICByZXR1cm4gKFsiZGVidWciLCAid2VicmVuZGVy
IiwgImUxMHMiLCAib3MiLCAidmVyc2lvbiIsICJwcm9jZXNzb3IiLCAiYml0cyJdLAotICAgICAg
ICAgICAgeyJkZWJ1ZyIsICJlMTBzIiwgIndlYnJlbmRlciJ9KQorICAgIHJldHVybiAoWyJvcyIs
ICJkZWJ1ZyIsICJ3ZWJyZW5kZXIiLCAiZmlzc2lvbiIsICJlMTBzIiwgInN3LWUxMHMiLCAicHJv
Y2Vzc29yIl0sCisgICAgICAgICAgICB7Im9zIjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiBb
ImJpdHMiXX0pCiAKIAogY2xhc3MgRmlyZWZveEJyb3dzZXIoQnJvd3Nlcik6Ci0gICAgdXNlZF9w
b3J0cyA9IHNldCgpCiAgICAgaW5pdF90aW1lb3V0ID0gNzAKICAgICBzaHV0ZG93bl90aW1lb3V0
ID0gNzAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgcHJlZnNfcm9v
dCwgdGVzdF90eXBlLCBleHRyYV9wcmVmcz1Ob25lLCBkZWJ1Z19pbmZvPU5vbmUsCiAgICAgICAg
ICAgICAgICAgIHN5bWJvbHNfcGF0aD1Ob25lLCBzdGFja3dhbGtfYmluYXJ5PU5vbmUsIGNlcnR1
dGlsX2JpbmFyeT1Ob25lLAotICAgICAgICAgICAgICAgICBjYV9jZXJ0aWZpY2F0ZV9wYXRoPU5v
bmUsIGUxMHM9RmFsc2UsIHN0YWNrZml4X2Rpcj1Ob25lLAorICAgICAgICAgICAgICAgICBjYV9j
ZXJ0aWZpY2F0ZV9wYXRoPU5vbmUsIGUxMHM9RmFsc2UsIGVuYWJsZV93ZWJyZW5kZXI9RmFsc2Us
IHN0YWNrZml4X2Rpcj1Ob25lLAogICAgICAgICAgICAgICAgICBiaW5hcnlfYXJncz1Ob25lLCB0
aW1lb3V0X211bHRpcGxpZXI9Tm9uZSwgbGVha19jaGVjaz1GYWxzZSwgYXNhbj1GYWxzZSwKLSAg
ICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBjaGFvc19tb2RlX2ZsYWdzPU5vbmUsIGNv
bmZpZz1Ob25lKToKKyAgICAgICAgICAgICAgICAgc3R5bG9fdGhyZWFkcz0xLCBjaGFvc19tb2Rl
X2ZsYWdzPU5vbmUsIGNvbmZpZz1Ob25lLCBicm93c2VyX2NoYW5uZWw9Im5pZ2h0bHkiLCBoZWFk
bGVzcz1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9n
Z2VyKQogICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQogICAgICAgICBzZWxmLnByZWZzX3Jv
b3QgPSBwcmVmc19yb290CkBAIC0xNzAsNiArMjI0LDcgQEAgY2xhc3MgRmlyZWZveEJyb3dzZXIo
QnJvd3Nlcik6CiAgICAgICAgIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aCA9IGNhX2NlcnRpZmlj
YXRlX3BhdGgKICAgICAgICAgc2VsZi5jZXJ0dXRpbF9iaW5hcnkgPSBjZXJ0dXRpbF9iaW5hcnkK
ICAgICAgICAgc2VsZi5lMTBzID0gZTEwcworICAgICAgICBzZWxmLmVuYWJsZV93ZWJyZW5kZXIg
PSBlbmFibGVfd2VicmVuZGVyCiAgICAgICAgIHNlbGYuYmluYXJ5X2FyZ3MgPSBiaW5hcnlfYXJn
cwogICAgICAgICBzZWxmLmNvbmZpZyA9IGNvbmZpZwogICAgICAgICBpZiBzdGFja2ZpeF9kaXI6
CkBAIC0xODMsNTAgKzIzOCw3MCBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKIAog
ICAgICAgICBzZWxmLmFzYW4gPSBhc2FuCiAgICAgICAgIHNlbGYubHNhbl9hbGxvd2VkID0gTm9u
ZQorICAgICAgICBzZWxmLmxzYW5fbWF4X3N0YWNrX2RlcHRoID0gTm9uZQorICAgICAgICBzZWxm
Lm1vemxlYWtfYWxsb3dlZCA9IE5vbmUKKyAgICAgICAgc2VsZi5tb3psZWFrX3RocmVzaG9sZHMg
PSBOb25lCiAgICAgICAgIHNlbGYubGVha19jaGVjayA9IGxlYWtfY2hlY2sKICAgICAgICAgc2Vs
Zi5sZWFrX3JlcG9ydF9maWxlID0gTm9uZQogICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IE5v
bmUKICAgICAgICAgc2VsZi5zdHlsb190aHJlYWRzID0gc3R5bG9fdGhyZWFkcwogICAgICAgICBz
ZWxmLmNoYW9zX21vZGVfZmxhZ3MgPSBjaGFvc19tb2RlX2ZsYWdzCisgICAgICAgIHNlbGYuYnJv
d3Nlcl9jaGFubmVsID0gYnJvd3Nlcl9jaGFubmVsCisgICAgICAgIHNlbGYuaGVhZGxlc3MgPSBo
ZWFkbGVzcwogCiAgICAgZGVmIHNldHRpbmdzKHNlbGYsIHRlc3QpOgotICAgICAgICBzZWxmLmxz
YW5fYWxsb3dlZCA9IHRlc3QubHNhbl9hbGxvd2VkCiAgICAgICAgIHJldHVybiB7ImNoZWNrX2xl
YWtzIjogc2VsZi5sZWFrX2NoZWNrIGFuZCBub3QgdGVzdC5sZWFrcywKLSAgICAgICAgICAgICAg
ICAibHNhbl9hbGxvd2VkIjogdGVzdC5sc2FuX2FsbG93ZWR9CisgICAgICAgICAgICAgICAgImxz
YW5fYWxsb3dlZCI6IHRlc3QubHNhbl9hbGxvd2VkLAorICAgICAgICAgICAgICAgICJsc2FuX21h
eF9zdGFja19kZXB0aCI6IHRlc3QubHNhbl9tYXhfc3RhY2tfZGVwdGgsCisgICAgICAgICAgICAg
ICAgIm1vemxlYWtfYWxsb3dlZCI6IHNlbGYubGVha19jaGVjayBhbmQgdGVzdC5tb3psZWFrX2Fs
bG93ZWQsCisgICAgICAgICAgICAgICAgIm1vemxlYWtfdGhyZXNob2xkcyI6IHNlbGYubGVha19j
aGVjayBhbmQgdGVzdC5tb3psZWFrX3RocmVzaG9sZH0KIAogICAgIGRlZiBzdGFydChzZWxmLCBn
cm91cF9tZXRhZGF0YT1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGlmIGdyb3VwX21ldGFkYXRh
IGlzIE5vbmU6CiAgICAgICAgICAgICBncm91cF9tZXRhZGF0YSA9IHt9CiAKKyAgICAgICAgc2Vs
Zi5ncm91cF9tZXRhZGF0YSA9IGdyb3VwX21ldGFkYXRhCisgICAgICAgIHNlbGYubHNhbl9hbGxv
d2VkID0ga3dhcmdzLmdldCgibHNhbl9hbGxvd2VkIikKKyAgICAgICAgc2VsZi5sc2FuX21heF9z
dGFja19kZXB0aCA9IGt3YXJncy5nZXQoImxzYW5fbWF4X3N0YWNrX2RlcHRoIikKKyAgICAgICAg
c2VsZi5tb3psZWFrX2FsbG93ZWQgPSBrd2FyZ3MuZ2V0KCJtb3psZWFrX2FsbG93ZWQiKQorICAg
ICAgICBzZWxmLm1vemxlYWtfdGhyZXNob2xkcyA9IGt3YXJncy5nZXQoIm1vemxlYWtfdGhyZXNo
b2xkcyIpCisKICAgICAgICAgaWYgc2VsZi5tYXJpb25ldHRlX3BvcnQgaXMgTm9uZToKLSAgICAg
ICAgICAgIHNlbGYubWFyaW9uZXR0ZV9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgyODI4LCBleGNsdWRl
PXNlbGYudXNlZF9wb3J0cykKLSAgICAgICAgICAgIHNlbGYudXNlZF9wb3J0cy5hZGQoc2VsZi5t
YXJpb25ldHRlX3BvcnQpCisgICAgICAgICAgICBzZWxmLm1hcmlvbmV0dGVfcG9ydCA9IGdldF9m
cmVlX3BvcnQoKQogCiAgICAgICAgIGlmIHNlbGYuYXNhbjoKLSAgICAgICAgICAgIHByaW50ICJT
ZXR0aW5nIHVwIExTQU4iCiAgICAgICAgICAgICBzZWxmLmxzYW5faGFuZGxlciA9IG1vemxlYWsu
TFNBTkxlYWtzKHNlbGYubG9nZ2VyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzY29wZT1ncm91cF9tZXRhZGF0YS5nZXQoInNjb3BlIiwgIi8iKSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb3dl
ZD1zZWxmLmxzYW5fYWxsb3dlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYWxsb3dlZD1zZWxmLmxzYW5fYWxsb3dlZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4TnVtUmVjb3JkZWRGcmFtZXM9
c2VsZi5sc2FuX21heF9zdGFja19kZXB0aCkKIAogICAgICAgICBlbnYgPSB0ZXN0X2Vudmlyb25t
ZW50KHhyZVBhdGg9b3MucGF0aC5kaXJuYW1lKHNlbGYuYmluYXJ5KSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWJ1Z2dlcj1zZWxmLmRlYnVnX2luZm8gaXMgbm90IE5vbmUsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nPXNlbGYubG9nZ2VyLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGxzYW5QYXRoPXNlbGYucHJlZnNfcm9vdCkKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1c2VMU2FuPVRydWUsIGxvZz1zZWxmLmxvZ2dlcikKIAog
ICAgICAgICBlbnZbIlNUWUxPX1RIUkVBRFMiXSA9IHN0cihzZWxmLnN0eWxvX3RocmVhZHMpCiAg
ICAgICAgIGlmIHNlbGYuY2hhb3NfbW9kZV9mbGFncyBpcyBub3QgTm9uZToKICAgICAgICAgICAg
IGVudlsiTU9aX0NIQU9TTU9ERSJdID0gc3RyKHNlbGYuY2hhb3NfbW9kZV9mbGFncykKKyAgICAg
ICAgaWYgc2VsZi5oZWFkbGVzczoKKyAgICAgICAgICAgIGVudlsiTU9aX0hFQURMRVNTIl0gPSAi
MSIKKyAgICAgICAgaWYgc2VsZi5lbmFibGVfd2VicmVuZGVyOgorICAgICAgICAgICAgZW52WyJN
T1pfV0VCUkVOREVSIl0gPSAiMSIKKyAgICAgICAgICAgIGVudlsiTU9aX0FDQ0VMRVJBVEVEIl0g
PSAiMSIKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVudlsiTU9aX1dFQlJFTkRFUiJdID0g
IjAiCiAKICAgICAgICAgcHJlZmVyZW5jZXMgPSBzZWxmLmxvYWRfcHJlZnMoKQogCiAgICAgICAg
IHNlbGYucHJvZmlsZSA9IEZpcmVmb3hQcm9maWxlKHByZWZlcmVuY2VzPXByZWZlcmVuY2VzKQot
ICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZlcmVuY2VzKHsibWFyaW9uZXR0ZS5wb3J0Ijog
c2VsZi5tYXJpb25ldHRlX3BvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJkb20uZGlzYWJsZV9vcGVuX2R1cmluZ19sb2FkIjogRmFsc2UsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJuZXR3b3JrLmRucy5sb2NhbERvbWFpbnMiOiAiLCIu
am9pbihzZWxmLmNvbmZpZy5kb21haW5zX3NldCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJuZXR3b3JrLnByb3h5LnR5cGUiOiAwLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAicGxhY2VzLmhpc3RvcnkuZW5hYmxlZCI6IEZhbHNlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZG9tLnNlbmRfYWZ0ZXJfcGFpbnRf
dG9fY29udGVudCI6IFRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJuZXR3b3JrLnByZWxvYWQiOiBUcnVlfSkKKyAgICAgICAgc2VsZi5wcm9maWxlLnNldF9wcmVm
ZXJlbmNlcyh7CisgICAgICAgICAgICAibWFyaW9uZXR0ZS5wb3J0Ijogc2VsZi5tYXJpb25ldHRl
X3BvcnQsCisgICAgICAgICAgICAibmV0d29yay5kbnMubG9jYWxEb21haW5zIjogIiwiLmpvaW4o
c2VsZi5jb25maWcuZG9tYWluc19zZXQpLAorICAgICAgICAgICAgImRvbS5maWxlLmNyZWF0ZUlu
Q2hpbGQiOiBUcnVlLAorICAgICAgICAgICAgIyBUT0RPOiBSZW1vdmUgcHJlZmVyZW5jZXMgb25j
ZSBGaXJlZm94IDY0IGlzIHN0YWJsZSAoQnVnIDkwNTQwNCkKKyAgICAgICAgICAgICJuZXR3b3Jr
LnByb3h5LnR5cGUiOiAwLAorICAgICAgICAgICAgInBsYWNlcy5oaXN0b3J5LmVuYWJsZWQiOiBG
YWxzZSwKKyAgICAgICAgICAgICJuZXR3b3JrLnByZWxvYWQiOiBUcnVlLAorICAgICAgICB9KQog
ICAgICAgICBpZiBzZWxmLmUxMHM6CiAgICAgICAgICAgICBzZWxmLnByb2ZpbGUuc2V0X3ByZWZl
cmVuY2VzKHsiYnJvd3Nlci50YWJzLnJlbW90ZS5hdXRvc3RhcnQiOiBUcnVlfSkKIApAQCAtMjQ5
LDkgKzMyNCwxMSBAQCBjbGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAgaWYg
c2VsZi5jYV9jZXJ0aWZpY2F0ZV9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc2VsZi5z
ZXR1cF9zc2woKQogCisgICAgICAgIGFyZ3MgPSBzZWxmLmJpbmFyeV9hcmdzWzpdIGlmIHNlbGYu
YmluYXJ5X2FyZ3MgZWxzZSBbXQorICAgICAgICBhcmdzICs9IFtjbWRfYXJnKCJtYXJpb25ldHRl
IiksICJhYm91dDpibGFuayJdCisKICAgICAgICAgZGVidWdfYXJncywgY21kID0gYnJvd3Nlcl9j
b21tYW5kKHNlbGYuYmluYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5iaW5hcnlfYXJncyBpZiBzZWxmLmJpbmFyeV9hcmdzIGVsc2UgW10gKwotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2NtZF9hcmcoIm1hcmlvbmV0
dGUiKSwgImFib3V0OmJsYW5rIl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5kZWJ1Z19pbmZvKQogCiAgICAgICAgIHNlbGYucnVubmVyID0gRmlyZWZveFJ1bm5lcihw
cm9maWxlPXNlbGYucHJvZmlsZSwKQEAgLTI3NSw3ICszNTIsMTAgQEAgY2xhc3MgRmlyZWZveEJy
b3dzZXIoQnJvd3Nlcik6CiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHByb2ZpbGVzKToKICAg
ICAgICAgICAgIHdpdGggb3Blbihwcm9maWxlcywgJ3InKSBhcyBmaDoKICAgICAgICAgICAgICAg
ICBmb3IgbmFtZSBpbiBqc29uLmxvYWQoZmgpWyd3ZWItcGxhdGZvcm0tdGVzdHMnXToKLSAgICAg
ICAgICAgICAgICAgICAgcHJlZl9wYXRocy5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucHJlZnNf
cm9vdCwgbmFtZSwgJ3VzZXIuanMnKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5icm93
c2VyX2NoYW5uZWwgaW4gKE5vbmUsICduaWdodGx5Jyk6CisgICAgICAgICAgICAgICAgICAgICAg
ICBwcmVmX3BhdGhzLmFwcGVuZChvcy5wYXRoLmpvaW4oc2VsZi5wcmVmc19yb290LCBuYW1lLCAn
dXNlci5qcycpKQorICAgICAgICAgICAgICAgICAgICBlbGlmIG5hbWUgIT0gJ3VuaXR0ZXN0LWZl
YXR1cmVzJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHByZWZfcGF0aHMuYXBwZW5kKG9zLnBh
dGguam9pbihzZWxmLnByZWZzX3Jvb3QsIG5hbWUsICd1c2VyLmpzJykpCiAgICAgICAgIGVsc2U6
CiAgICAgICAgICAgICAjIE9sZCBwcmVmZXJlbmNlIGZpbGVzIHVzZWQgYmVmb3JlIHRoZSBjcmVh
dGlvbiBvZiBwcm9maWxlcy5qc29uIChyZW1vdmUgd2hlbiBubyBsb25nZXIgc3VwcG9ydGVkKQog
ICAgICAgICAgICAgbGVnYWN5X3ByZWZfcGF0aHMgPSAoCkBAIC0zMTcsMjEgKzM5NywxOCBAQCBj
bGFzcyBGaXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWco
InN0b3BwZWQiKQogCiAgICAgZGVmIHByb2Nlc3NfbGVha3Moc2VsZik6Ci0gICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCJQUk9DRVNTIExFQUtTICVzIiAlIHNlbGYubGVha19yZXBvcnRfZmlsZSkK
KyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiUFJPQ0VTUyBMRUFLUyAlcyIgJSBzZWxmLmxlYWtf
cmVwb3J0X2ZpbGUpCiAgICAgICAgIGlmIHNlbGYubHNhbl9oYW5kbGVyOgogICAgICAgICAgICAg
c2VsZi5sc2FuX2hhbmRsZXIucHJvY2VzcygpCiAgICAgICAgIGlmIHNlbGYubGVha19yZXBvcnRf
ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIG1vemxlYWsucHJvY2Vzc19sZWFrX2xvZygK
ICAgICAgICAgICAgICAgICBzZWxmLmxlYWtfcmVwb3J0X2ZpbGUsCi0gICAgICAgICAgICAgICAg
bGVha190aHJlc2hvbGRzPXsKLSAgICAgICAgICAgICAgICAgICAgImRlZmF1bHQiOiAwLAotICAg
ICAgICAgICAgICAgICAgICAidGFiIjogMTAwMDAsICAjIFNlZSBkZXBlbmRlbmNpZXMgb2YgYnVn
IDEwNTEyMzAuCi0gICAgICAgICAgICAgICAgICAgICMgR01QIHJhcmVseSBnZXRzIGEgbG9nLCBi
dXQgd2hlbiBpdCBkb2VzLCBpdCBsZWFrcyBhIGxpdHRsZS4KLSAgICAgICAgICAgICAgICAgICAg
ImdlY2tvbWVkaWFwbHVnaW4iOiAyMDAwMCwKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAg
ICAgICAgIGlnbm9yZV9taXNzaW5nX2xlYWtzPVsiZ2Vja29tZWRpYXBsdWdpbiJdLAorICAgICAg
ICAgICAgICAgIGxlYWtfdGhyZXNob2xkcz1zZWxmLm1vemxlYWtfdGhyZXNob2xkcywKKyAgICAg
ICAgICAgICAgICBpZ25vcmVfbWlzc2luZ19sZWFrcz1bImdtcGx1Z2luIl0sCiAgICAgICAgICAg
ICAgICAgbG9nPXNlbGYubG9nZ2VyLAotICAgICAgICAgICAgICAgIHN0YWNrX2ZpeGVyPXNlbGYu
c3RhY2tfZml4ZXIKKyAgICAgICAgICAgICAgICBzdGFja19maXhlcj1zZWxmLnN0YWNrX2ZpeGVy
LAorICAgICAgICAgICAgICAgIHNjb3BlPXNlbGYuZ3JvdXBfbWV0YWRhdGEuZ2V0KCJzY29wZSIp
LAorICAgICAgICAgICAgICAgIGFsbG93ZWQ9c2VsZi5tb3psZWFrX2FsbG93ZWQKICAgICAgICAg
ICAgICkKIAogICAgIGRlZiBwaWQoc2VsZik6CkBAIC0zNzAsMjMgKzQ0NywxNSBAQCBjbGFzcyBG
aXJlZm94QnJvd3NlcihCcm93c2VyKToKICAgICAgICAgYXNzZXJ0IHNlbGYubWFyaW9uZXR0ZV9w
b3J0IGlzIG5vdCBOb25lCiAgICAgICAgIHJldHVybiBFeGVjdXRvckJyb3dzZXIsIHsibWFyaW9u
ZXR0ZV9wb3J0Ijogc2VsZi5tYXJpb25ldHRlX3BvcnR9CiAKLSAgICBkZWYgY2hlY2tfZm9yX2Ny
YXNoZXMoc2VsZik6Ci0gICAgICAgIGR1bXBfZGlyID0gb3MucGF0aC5qb2luKHNlbGYucHJvZmls
ZS5wcm9maWxlLCAibWluaWR1bXBzIikKLQotICAgICAgICByZXR1cm4gYm9vbChtb3pjcmFzaC5j
aGVja19mb3JfY3Jhc2hlcyhkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5
PXNlbGYuc3RhY2t3YWxrX2JpbmFyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcXVpZXQ9VHJ1ZSkpCi0KLSAgICBkZWYgbG9nX2NyYXNoKHNlbGYsIHBy
b2Nlc3MsIHRlc3QpOgorICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCBwcm9jZXNzLCB0ZXN0KToK
ICAgICAgICAgZHVtcF9kaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi5wcm9maWxlLnByb2ZpbGUsICJt
aW5pZHVtcHMiKQogCi0gICAgICAgIG1vemNyYXNoLmxvZ19jcmFzaGVzKHNlbGYubG9nZ2VyLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkdW1wX2RpciwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxrX2JpbmFyeSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vzcz1wcm9jZXNzLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB0ZXN0PXRlc3QpCisgICAgICAgIHJldHVybiBib29sKG1vemNy
YXNoLmxvZ19jcmFzaGVzKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBkdW1wX2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3ltYm9sc19wYXRoPXNlbGYuc3ltYm9sc19wYXRoLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFja3dhbGtfYmluYXJ5PXNlbGYuc3RhY2t3YWxr
X2JpbmFyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2Vz
cz1wcm9jZXNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
PXRlc3QpKQogCiAgICAgZGVmIHNldHVwX3NzbChzZWxmKToKICAgICAgICAgIiIiQ3JlYXRlIGEg
Y2VydGlmaWNhdGUgZGF0YWJhc2UgdG8gdXNlIGluIHRoZSB0ZXN0IHByb2ZpbGUuIFRoaXMgaXMg
Y29uZmlndXJlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2llLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL2llLnB5CmluZGV4IGEwNzMwZjhiYTI5ZWE4YjY1YjU2NzA5YTRm
OTZhYzU4OTQwNzhkOTQuLjYzNWU4MjdjMjk1YjViMTE5MjgyMmY1MWQ5M2E0YjA5ZTM3NjQxOTIg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9pZS5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvYnJvd3NlcnMvaWUucHkKQEAgLTEsMjAgKzEsMTggQEAKIGZyb20gLmJhc2UgaW1wb3J0IEJy
b3dzZXIsIEV4ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9hcmcKK2Zyb20gLmJhc2UgaW1wb3J0IGdl
dF90aW1lb3V0X211bHRpcGxpZXIgICAjIG5vcWE6IEY0MDEKIGZyb20gLi53ZWJkcml2ZXJfc2Vy
dmVyIGltcG9ydCBJbnRlcm5ldEV4cGxvcmVyRHJpdmVyU2VydmVyCiBmcm9tIC4uZXhlY3V0b3Jz
IGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKLWZyb20gLi5l
eGVjdXRvcnMuZXhlY3V0b3JzZWxlbml1bSBpbXBvcnQgKFNlbGVuaXVtVGVzdGhhcm5lc3NFeGVj
dXRvciwgICMgbm9xYTogRjQwMQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVj
dXRvcnMuZXhlY3V0b3JpbnRlcm5ldGV4cGxvcmVyIGltcG9ydCBJbnRlcm5ldEV4cGxvcmVyRHJp
dmVyV2RzcGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQogCiBfX3dwdHJ1bm5lcl9fID0geyJwcm9k
dWN0IjogImllIiwKICAgICAgICAgICAgICAgICAgImNoZWNrX2FyZ3MiOiAiY2hlY2tfYXJncyIs
CiAgICAgICAgICAgICAgICAgICJicm93c2VyIjogIkludGVybmV0RXhwbG9yZXJCcm93c2VyIiwK
LSAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ0ZXN0aGFybmVzcyI6ICJTZWxlbml1bVRl
c3RoYXJuZXNzRXhlY3V0b3IiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJlZnRl
c3QiOiAiU2VsZW5pdW1SZWZUZXN0RXhlY3V0b3IiLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIndkc3BlYyI6ICJJbnRlcm5ldEV4cGxvcmVyRHJpdmVyV2RzcGVjRXhlY3V0b3IifSwK
KyAgICAgICAgICAgICAgICAgImV4ZWN1dG9yIjogeyJ3ZHNwZWMiOiAiSW50ZXJuZXRFeHBsb3Jl
ckRyaXZlcldkc3BlY0V4ZWN1dG9yIn0sCiAgICAgICAgICAgICAgICAgICJicm93c2VyX2t3YXJn
cyI6ICJicm93c2VyX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvcl9rd2FyZ3Mi
OiAiZXhlY3V0b3Jfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImVudl9leHRyYXMiOiAiZW52
X2V4dHJhcyIsCi0gICAgICAgICAgICAgICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0aW9ucyJ9
CisgICAgICAgICAgICAgICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0aW9ucyIsCisgICAgICAg
ICAgICAgICAgICJ0aW1lb3V0X211bHRpcGxpZXIiOiAiZ2V0X3RpbWVvdXRfbXVsdGlwbGllciJ9
CiAKIAogZGVmIGNoZWNrX2FyZ3MoKiprd2FyZ3MpOgpAQCAtNjYsNyArNjQsNyBAQCBjbGFzcyBJ
bnRlcm5ldEV4cGxvcmVyQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRo
aXMgb25seSBpbmRpY2F0ZXMgdGhlIHNlcnZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9l
c24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAg
ICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKKyAg
ICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCiAKICAgICBkZWYgY2xlYW51cChzZWxm
KToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9vcGVyYS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9vcGVyYS5weQppbmRleCBjNWFlYWFh
Zjk2N2VmZGJiM2U3ODk3ZjcxODRkNzQzMGZlMDFmZTBjLi41NWMwNTA5ZWVkOTJhMmFiZTI3Y2Q2
MmNlNDBkNzQ5ZGRhY2I2YTgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvb3Bl
cmEucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5CkBAIC0xLDQgKzEsNSBA
QAogZnJvbSAuYmFzZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2Fy
ZworZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQw
MQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IE9wZXJhRHJpdmVyU2VydmVyCiBmcm9t
IC4uZXhlY3V0b3JzIGltcG9ydCBleGVjdXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2Fy
Z3MKIGZyb20gLi5leGVjdXRvcnMuZXhlY3V0b3JzZWxlbml1bSBpbXBvcnQgKFNlbGVuaXVtVGVz
dGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQpAQCAtMTUsNyArMTYsOCBAQCBfX3dwdHJ1
bm5lcl9fID0geyJwcm9kdWN0IjogIm9wZXJhIiwKICAgICAgICAgICAgICAgICAgImJyb3dzZXJf
a3dhcmdzIjogImJyb3dzZXJfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImV4ZWN1dG9yX2t3
YXJncyI6ICJleGVjdXRvcl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZW52X2V4dHJhcyI6
ICJlbnZfZXh0cmFzIiwKLSAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRp
b25zIn0KKyAgICAgICAgICAgICAgICAgImVudl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKKyAg
ICAgICAgICAgICAgICAgInRpbWVvdXRfbXVsdGlwbGllciI6ICJnZXRfdGltZW91dF9tdWx0aXBs
aWVyIn0KIAogCiBkZWYgY2hlY2tfYXJncygqKmt3YXJncyk6CkBAIC05MSw3ICs5Myw3IEBAIGNs
YXNzIE9wZXJhQnJvd3NlcihCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25s
eSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBz
YXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlz
IGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKKyAgICAgICAg
cmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAg
ICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYWZh
cmkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2FmYXJpLnB5CmluZGV4IDY3MDA5OGVhMjIy
MTZiMzU1OGVjMmQ1MGZjNmYxOTBiMGIyZGZlOTcuLmY0ZmQzMzEzZjlmYmJjMWJmMTdmODcwZDM5
NTA2OTQ2Yjk1MzhiNjcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYWZhcmku
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFyaS5weQpAQCAtMSwyMSArMSwyMyBA
QAogZnJvbSAuYmFzZSBpbXBvcnQgQnJvd3NlciwgRXhlY3V0b3JCcm93c2VyLCByZXF1aXJlX2Fy
ZworZnJvbSAuYmFzZSBpbXBvcnQgZ2V0X3RpbWVvdXRfbXVsdGlwbGllciAgICMgbm9xYTogRjQw
MQogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IFNhZmFyaURyaXZlclNlcnZlcgogZnJv
bSAuLmV4ZWN1dG9ycyBpbXBvcnQgZXhlY3V0b3Jfa3dhcmdzIGFzIGJhc2VfZXhlY3V0b3Jfa3dh
cmdzCi1mcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yc2VsZW5pdW0gaW1wb3J0IChTZWxlbml1bVRl
c3RoYXJuZXNzRXhlY3V0b3IsICAjIG5vcWE6IEY0MDEKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFNlbGVuaXVtUmVmVGVzdEV4ZWN1dG9yKSAgIyBub3FhOiBGNDAx
Citmcm9tIC4uZXhlY3V0b3JzLmV4ZWN1dG9yd2ViZHJpdmVyIGltcG9ydCAoV2ViRHJpdmVyVGVz
dGhhcm5lc3NFeGVjdXRvciwgICMgbm9xYTogRjQwMQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFdlYkRyaXZlclJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQw
MQogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcnNhZmFyaSBpbXBvcnQgU2FmYXJpRHJpdmVyV2Rz
cGVjRXhlY3V0b3IgICMgbm9xYTogRjQwMQogCiAKIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3Qi
OiAic2FmYXJpIiwKICAgICAgICAgICAgICAgICAgImNoZWNrX2FyZ3MiOiAiY2hlY2tfYXJncyIs
CiAgICAgICAgICAgICAgICAgICJicm93c2VyIjogIlNhZmFyaUJyb3dzZXIiLAotICAgICAgICAg
ICAgICAgICAiZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIlNlbGVuaXVtVGVzdGhhcm5lc3NF
eGVjdXRvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmdGVzdCI6ICJTZWxl
bml1bVJlZlRlc3RFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVz
dGhhcm5lc3MiOiAiV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAicmVmdGVzdCI6ICJXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IiLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJTYWZhcmlEcml2ZXJXZHNw
ZWNFeGVjdXRvciJ9LAogICAgICAgICAgICAgICAgICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nl
cl9rd2FyZ3MiLAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9y
X2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMiLAot
ICAgICAgICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMifQorICAgICAgICAg
ICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMiLAorICAgICAgICAgICAgICAgICAi
dGltZW91dF9tdWx0aXBsaWVyIjogImdldF90aW1lb3V0X211bHRpcGxpZXIifQogCiAKIGRlZiBj
aGVja19hcmdzKCoqa3dhcmdzKToKQEAgLTMzLDYgKzM1LDggQEAgZGVmIGV4ZWN1dG9yX2t3YXJn
cyh0ZXN0X3R5cGUsIHNlcnZlcl9jb25maWcsIGNhY2hlX21hbmFnZXIsIHJ1bl9pbmZvX2RhdGEs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FjaGVfbWFuYWdl
ciwgcnVuX2luZm9fZGF0YSwgKiprd2FyZ3MpCiAgICAgZXhlY3V0b3Jfa3dhcmdzWyJjbG9zZV9h
ZnRlcl9kb25lIl0gPSBUcnVlCiAgICAgZXhlY3V0b3Jfa3dhcmdzWyJjYXBhYmlsaXRpZXMiXSA9
IHt9CisgICAgaWYgdGVzdF90eXBlID09ICJ0ZXN0aGFybmVzcyI6CisgICAgICAgIGV4ZWN1dG9y
X2t3YXJnc1siY2FwYWJpbGl0aWVzIl1bInBhZ2VMb2FkU3RyYXRlZ3kiXSA9ICJlYWdlciIKICAg
ICBpZiBrd2FyZ3NbImJpbmFyeSJdIGlzIG5vdCBOb25lOgogICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJTYWZhcmkgZG9lc24ndCBzdXBwb3J0IHNldHRpbmcgZXhlY3V0YWJsZSBsb2NhdGlvbiIp
CiAKQEAgLTc1LDcgKzc5LDcgQEAgY2xhc3MgU2FmYXJpQnJvd3NlcihCcm93c2VyKToKICAgICAg
ICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhlIGRyaXZlciBpcyBhbGl2ZSwK
ICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJvdXQgd2hldGhlciBhIGJyb3dz
ZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAgICAgcmV0dXJuIHNlbGYuc2Vy
dmVyLmlzX2FsaXZlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlCiAKICAg
ICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9wKCkKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVj
ZS5weQppbmRleCA5YWE0ODRhY2NkNDdkMGQ0Y2Q4NjRiMTk0OTExNzRhNzc1NDIxZDdhLi4zMzAx
Yzc1YjIxMDA0YTU1NGY5MWQ0NzY3Yjg1NjBmYzQwMjE0NDEyIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvYnJvd3NlcnMvc2F1Y2UucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNl
LnB5CkBAIC0xNCw2ICsxNCw3IEBAIGZyb20gY1N0cmluZ0lPIGltcG9ydCBTdHJpbmdJTyBhcyBD
U3RyaW5nSU8KIGltcG9ydCByZXF1ZXN0cwogCiBmcm9tIC5iYXNlIGltcG9ydCBCcm93c2VyLCBF
eGVjdXRvckJyb3dzZXIsIHJlcXVpcmVfYXJnCitmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91
dF9tdWx0aXBsaWVyICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVj
dXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhl
Y3V0b3JzZWxlbml1bSBpbXBvcnQgKFNlbGVuaXVtVGVzdGhhcm5lc3NFeGVjdXRvciwgICMgbm9x
YTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2VsZW5p
dW1SZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKQEAgLTMyLDcgKzMzLDggQEAgX193cHRy
dW5uZXJfXyA9IHsicHJvZHVjdCI6ICJzYXVjZSIsCiAgICAgICAgICAgICAgICAgICJicm93c2Vy
X2t3YXJncyI6ICJicm93c2VyX2t3YXJncyIsCiAgICAgICAgICAgICAgICAgICJleGVjdXRvcl9r
d2FyZ3MiOiAiZXhlY3V0b3Jfa3dhcmdzIiwKICAgICAgICAgICAgICAgICAgImVudl9leHRyYXMi
OiAiZW52X2V4dHJhcyIsCi0gICAgICAgICAgICAgICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0
aW9ucyJ9CisgICAgICAgICAgICAgICAgICJlbnZfb3B0aW9ucyI6ICJlbnZfb3B0aW9ucyIsCisg
ICAgICAgICAgICAgICAgICJ0aW1lb3V0X211bHRpcGxpZXIiOiAiZ2V0X3RpbWVvdXRfbXVsdGlw
bGllciJ9CiAKIAogZGVmIGdldF9jYXBhYmlsaXRpZXMoKiprd2FyZ3MpOgpAQCAtMTMzLDYgKzEz
NSw4IEBAIGNsYXNzIFNhdWNlQ29ubmVjdCgpOgogICAgICAgICBzZWxmLnNhdWNlX2tleSA9IGt3
YXJnc1sic2F1Y2Vfa2V5Il0KICAgICAgICAgc2VsZi5zYXVjZV90dW5uZWxfaWQgPSBrd2FyZ3Nb
InNhdWNlX3R1bm5lbF9pZCJdCiAgICAgICAgIHNlbGYuc2F1Y2VfY29ubmVjdF9iaW5hcnkgPSBr
d2FyZ3MuZ2V0KCJzYXVjZV9jb25uZWN0X2JpbmFyeSIpCisgICAgICAgIHNlbGYuc2F1Y2VfY29u
bmVjdF9hcmdzID0ga3dhcmdzLmdldCgic2F1Y2VfY29ubmVjdF9hcmdzIikKKyAgICAgICAgc2Vs
Zi5zYXVjZV9pbml0X3RpbWVvdXQgPSBrd2FyZ3MuZ2V0KCJzYXVjZV9pbml0X3RpbWVvdXQiKQog
ICAgICAgICBzZWxmLnNjX3Byb2Nlc3MgPSBOb25lCiAgICAgICAgIHNlbGYudGVtcF9kaXIgPSBO
b25lCiAgICAgICAgIHNlbGYuZW52X2NvbmZpZyA9IE5vbmUKQEAgLTE3MCwxNCArMTc0LDExIEBA
IGNsYXNzIFNhdWNlQ29ubmVjdCgpOgogICAgICAgICAgICAgIi0tcmVhZHlmaWxlPS4vc2F1Y2Vf
aXNfcmVhZHkiLAogICAgICAgICAgICAgIi0tdHVubmVsLWRvbWFpbnMiLAogICAgICAgICAgICAg
IiwiLmpvaW4oc2VsZi5lbnZfY29uZmlnLmRvbWFpbnNfc2V0KQotICAgICAgICBdKQotCi0gICAg
ICAgICMgVGltZW91dCBjb25maWcgdmFycwotICAgICAgICBtYXhfd2FpdCA9IDMwCisgICAgICAg
IF0gKyBzZWxmLnNhdWNlX2Nvbm5lY3RfYXJncykKIAogICAgICAgICB0b3Rfd2FpdCA9IDAKICAg
ICAgICAgd2hpbGUgbm90IG9zLnBhdGguZXhpc3RzKCcuL3NhdWNlX2lzX3JlYWR5JykgYW5kIHNl
bGYuc2NfcHJvY2Vzcy5wb2xsKCkgaXMgTm9uZToKLSAgICAgICAgICAgIGlmIHRvdF93YWl0ID49
IG1heF93YWl0OgorICAgICAgICAgICAgaWYgdG90X3dhaXQgPj0gc2VsZi5zYXVjZV9pbml0X3Rp
bWVvdXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5xdWl0KCkKIAogICAgICAgICAgICAgICAgIHJh
aXNlIFNhdWNlRXhjZXB0aW9uKCJTYXVjZSBDb25uZWN0IFByb3h5IHdhcyBub3QgcmVhZHkgYWZ0
ZXIgJWQgc2Vjb25kcyIgJSB0b3Rfd2FpdCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9zYXVjZV9zZXR1cC9lZGdlLXByZXJ1bi5iYXQgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMv
c2F1Y2Vfc2V0dXAvZWRnZS1wcmVydW4uYmF0Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3
NTUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZV9zZXR1cC9zYWZhcmkt
cHJlcnVuLnNoIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhdWNlX3NldHVwL3NhZmFyaS1wcmVy
dW4uc2gKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL2Jyb3dzZXJzL3NhdWNlX3NldHVwL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2Jyb3dzZXJzL3NhdWNlX3NldHVwL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA1MTUyZTEyNmI0ZTIxNGZkMGVlYjI2NmJiZWRjNzM3NzBiM2VlZmVlLi4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9zYXVjZV9zZXR1cC93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDE4
ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20g
dGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBp
biBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRo
dWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBy
dW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBv
cnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5
IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
Ci1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZV9zZXR1cC9lZGdl
LXByZXJ1bi5iYXQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvc2F1Y2Vfc2V0dXAvc2FmYXJpLXBy
ZXJ1bi5zaApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5IGIvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvLnB5CmluZGV4IDFhMzU3YTNjZWQ5M2VkZjhmNjViMjFk
ZGU4ZjA0YjA4ODQ5YTQ2NjkuLmQzZWQ0YjNmYjFkNDY0ZWNiMDEyYTY4MzIzZGRlN2M5NDJkYjE0
ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2by5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvYnJvd3NlcnMvc2Vydm8ucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgb3MKIAog
ZnJvbSAuYmFzZSBpbXBvcnQgTnVsbEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3NlciwgcmVxdWlyZV9h
cmcKK2Zyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIgICAjIG5vcWE6IEY0
MDEKIGZyb20gLi5leGVjdXRvcnMgaW1wb3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1
dG9yX2t3YXJncwogZnJvbSAuLmV4ZWN1dG9ycy5leGVjdXRvcnNlcnZvIGltcG9ydCBTZXJ2b1Rl
c3RoYXJuZXNzRXhlY3V0b3IsIFNlcnZvUmVmVGVzdEV4ZWN1dG9yLCBTZXJ2b1dkc3BlY0V4ZWN1
dG9yICAjIG5vcWE6IEY0MDEKIApAQCAtMTksNiArMjAsNyBAQCBfX3dwdHJ1bm5lcl9fID0gewog
ICAgICJleGVjdXRvcl9rd2FyZ3MiOiAiZXhlY3V0b3Jfa3dhcmdzIiwKICAgICAiZW52X2V4dHJh
cyI6ICJlbnZfZXh0cmFzIiwKICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMiLAorICAg
ICJ0aW1lb3V0X211bHRpcGxpZXIiOiAiZ2V0X3RpbWVvdXRfbXVsdGlwbGllciIsCiAgICAgInVw
ZGF0ZV9wcm9wZXJ0aWVzIjogInVwZGF0ZV9wcm9wZXJ0aWVzIiwKIH0KIApAQCAtNTksNyArNjEs
NyBAQCBkZWYgZW52X29wdGlvbnMoKToKIAogCiBkZWYgdXBkYXRlX3Byb3BlcnRpZXMoKToKLSAg
ICByZXR1cm4gWyJkZWJ1ZyIsICJvcyIsICJ2ZXJzaW9uIiwgInByb2Nlc3NvciIsICJiaXRzIl0s
IE5vbmUKKyAgICByZXR1cm4gWyJkZWJ1ZyIsICJvcyIsICJwcm9jZXNzb3IiXSwgeyJvcyI6IFsi
dmVyc2lvbiJdLCAicHJvY2Vzc29yIjogWyJiaXRzIl19CiAKIAogY2xhc3MgU2Vydm9Ccm93c2Vy
KE51bGxCcm93c2VyKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2Ry
aXZlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2RyaXZlci5weQppbmRleCA2NDg2
YTc4OGI4YzhmYmY0ZmM1MmRkNDM2ODI2NTU3MTk3NWNhYmI0Li4yOTUzZGUxODE3NGVmNzVkNTA1
ZGIwYjhkNTE4ZmUzMzM5ZjcwNjVlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMv
c2Vydm9kcml2ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NlcnZvZHJpdmVyLnB5
CkBAIC00LDkgKzQsMTAgQEAgaW1wb3J0IHRlbXBmaWxlCiAKIGZyb20gbW96cHJvY2VzcyBpbXBv
cnQgUHJvY2Vzc0hhbmRsZXIKIAotZnJvbSBzZXJ2ZS5zZXJ2ZSBpbXBvcnQgbWFrZV9ob3N0c19m
aWxlCitmcm9tIHRvb2xzLnNlcnZlLnNlcnZlIGltcG9ydCBtYWtlX2hvc3RzX2ZpbGUKIAogZnJv
bSAuYmFzZSBpbXBvcnQgQnJvd3NlciwgcmVxdWlyZV9hcmcsIGdldF9mcmVlX3BvcnQsIGJyb3dz
ZXJfY29tbWFuZCwgRXhlY3V0b3JCcm93c2VyCitmcm9tIC5iYXNlIGltcG9ydCBnZXRfdGltZW91
dF9tdWx0aXBsaWVyICAgIyBub3FhOiBGNDAxCiBmcm9tIC4uZXhlY3V0b3JzIGltcG9ydCBleGVj
dXRvcl9rd2FyZ3MgYXMgYmFzZV9leGVjdXRvcl9rd2FyZ3MKIGZyb20gLi5leGVjdXRvcnMuZXhl
Y3V0b3JzZXJ2b2RyaXZlciBpbXBvcnQgKFNlcnZvV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRv
ciwgICMgbm9xYTogRjQwMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKQEAgLTI1
LDYgKzI2LDcgQEAgX193cHRydW5uZXJfXyA9IHsKICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4
ZWN1dG9yX2t3YXJncyIsCiAgICAgImVudl9leHRyYXMiOiAiZW52X2V4dHJhcyIsCiAgICAgImVu
dl9vcHRpb25zIjogImVudl9vcHRpb25zIiwKKyAgICAidGltZW91dF9tdWx0aXBsaWVyIjogImdl
dF90aW1lb3V0X211bHRpcGxpZXIiLAogICAgICJ1cGRhdGVfcHJvcGVydGllcyI6ICJ1cGRhdGVf
cHJvcGVydGllcyIsCiB9CiAKQEAgLTQwLDYgKzQyLDcgQEAgZGVmIGJyb3dzZXJfa3dhcmdzKHRl
c3RfdHlwZSwgcnVuX2luZm9fZGF0YSwgY29uZmlnLCAqKmt3YXJncyk6CiAgICAgICAgICJkZWJ1
Z19pbmZvIjoga3dhcmdzWyJkZWJ1Z19pbmZvIl0sCiAgICAgICAgICJzZXJ2ZXJfY29uZmlnIjog
Y29uZmlnLAogICAgICAgICAidXNlcl9zdHlsZXNoZWV0cyI6IGt3YXJncy5nZXQoInVzZXJfc3R5
bGVzaGVldHMiKSwKKyAgICAgICAgImhlYWRsZXNzIjoga3dhcmdzLmdldCgiaGVhZGxlc3MiKSwK
ICAgICB9CiAKIApAQCAtNjAsNyArNjMsNyBAQCBkZWYgZW52X29wdGlvbnMoKToKIAogCiBkZWYg
dXBkYXRlX3Byb3BlcnRpZXMoKToKLSAgICByZXR1cm4gWyJkZWJ1ZyIsICJvcyIsICJ2ZXJzaW9u
IiwgInByb2Nlc3NvciIsICJiaXRzIl0sIE5vbmUKKyAgICByZXR1cm4gKFsiZGVidWciLCAib3Mi
LCAicHJvY2Vzc29yIl0sIHsib3MiOiBbInZlcnNpb24iXSwgInByb2Nlc3NvciI6IFsiYml0cyJd
fSkKIAogCiBkZWYgd3JpdGVfaG9zdHNfZmlsZShjb25maWcpOgpAQCAtNjksMTMgKzcyLDExIEBA
IGRlZiB3cml0ZV9ob3N0c19maWxlKGNvbmZpZyk6CiAgICAgICAgIGYud3JpdGUobWFrZV9ob3N0
c19maWxlKGNvbmZpZywgIjEyNy4wLjAuMSIpKQogICAgIHJldHVybiBob3N0c19wYXRoCiAKLQog
Y2xhc3MgU2Vydm9XZWJEcml2ZXJCcm93c2VyKEJyb3dzZXIpOgotICAgIHVzZWRfcG9ydHMgPSBz
ZXQoKQogICAgIGluaXRfdGltZW91dCA9IDMwMCAgIyBMYXJnZSB0aW1lb3V0IGZvciBjYXNlcyB3
aGVyZSB3ZSdyZSBib290aW5nIGFuIEFuZHJvaWQgZW11bGF0b3IKIAogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgZGVidWdfaW5mbz1Ob25lLCB3ZWJkcml2ZXJfaG9zdD0i
MTI3LjAuMC4xIiwKLSAgICAgICAgICAgICAgICAgc2VydmVyX2NvbmZpZz1Ob25lLCBiaW5hcnlf
YXJncz1Ob25lLCB1c2VyX3N0eWxlc2hlZXRzPU5vbmUpOgorICAgICAgICAgICAgICAgICBzZXJ2
ZXJfY29uZmlnPU5vbmUsIGJpbmFyeV9hcmdzPU5vbmUsIHVzZXJfc3R5bGVzaGVldHM9Tm9uZSwg
aGVhZGxlc3M9Tm9uZSk6CiAgICAgICAgIEJyb3dzZXIuX19pbml0X18oc2VsZiwgbG9nZ2VyKQog
ICAgICAgICBzZWxmLmJpbmFyeSA9IGJpbmFyeQogICAgICAgICBzZWxmLmJpbmFyeV9hcmdzID0g
YmluYXJ5X2FyZ3Mgb3IgW10KQEAgLTg3LDEwICs4OCwxMSBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZl
ckJyb3dzZXIoQnJvd3Nlcik6CiAgICAgICAgIHNlbGYuc2VydmVyX3BvcnRzID0gc2VydmVyX2Nv
bmZpZy5wb3J0cyBpZiBzZXJ2ZXJfY29uZmlnIGVsc2Uge30KICAgICAgICAgc2VsZi5jb21tYW5k
ID0gTm9uZQogICAgICAgICBzZWxmLnVzZXJfc3R5bGVzaGVldHMgPSB1c2VyX3N0eWxlc2hlZXRz
IGlmIHVzZXJfc3R5bGVzaGVldHMgZWxzZSBbXQorICAgICAgICBzZWxmLmhlYWRsZXNzID0gaGVh
ZGxlc3MgaWYgaGVhZGxlc3MgZWxzZSBGYWxzZQorICAgICAgICBzZWxmLmNhX2NlcnRpZmljYXRl
X3BhdGggPSBzZXJ2ZXJfY29uZmlnLnNzbF9jb25maWdbImNhX2NlcnRfcGF0aCJdCiAKICAgICBk
ZWYgc3RhcnQoc2VsZiwgKiprd2FyZ3MpOgotICAgICAgICBzZWxmLndlYmRyaXZlcl9wb3J0ID0g
Z2V0X2ZyZWVfcG9ydCg0NDQ0LCBleGNsdWRlPXNlbGYudXNlZF9wb3J0cykKLSAgICAgICAgc2Vs
Zi51c2VkX3BvcnRzLmFkZChzZWxmLndlYmRyaXZlcl9wb3J0KQorICAgICAgICBzZWxmLndlYmRy
aXZlcl9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCiAKICAgICAgICAgZW52ID0gb3MuZW52aXJvbi5j
b3B5KCkKICAgICAgICAgZW52WyJIT1NUX0ZJTEUiXSA9IHNlbGYuaG9zdHNfcGF0aApAQCAtMTA2
LDEyICsxMDgsMTggQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJCcm93c2VyKEJyb3dzZXIpOgogICAg
ICAgICAgICAgc2VsZi5iaW5hcnksCiAgICAgICAgICAgICBzZWxmLmJpbmFyeV9hcmdzICsgWwog
ICAgICAgICAgICAgICAgICItLWhhcmQtZmFpbCIsCi0gICAgICAgICAgICAgICAgIi0td2ViZHJp
dmVyIiwgc3RyKHNlbGYud2ViZHJpdmVyX3BvcnQpLAorICAgICAgICAgICAgICAgICItLXdlYmRy
aXZlcj0lcyIgJSBzZWxmLndlYmRyaXZlcl9wb3J0LAogICAgICAgICAgICAgICAgICJhYm91dDpi
bGFuayIsCiAgICAgICAgICAgICBdLAogICAgICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvCiAgICAg
ICAgICkKIAorICAgICAgICBpZiBzZWxmLmhlYWRsZXNzOgorICAgICAgICAgICAgY29tbWFuZCAr
PSBbIi0taGVhZGxlc3MiXQorCisgICAgICAgIGlmIHNlbGYuY2FfY2VydGlmaWNhdGVfcGF0aDoK
KyAgICAgICAgICAgIGNvbW1hbmQgKz0gWyItLWNlcnRpZmljYXRlLXBhdGgiLCBzZWxmLmNhX2Nl
cnRpZmljYXRlX3BhdGhdCisKICAgICAgICAgZm9yIHN0eWxlc2hlZXQgaW4gc2VsZi51c2VyX3N0
eWxlc2hlZXRzOgogICAgICAgICAgICAgY29tbWFuZCArPSBbIi0tdXNlci1zdHlsZXNoZWV0Iiwg
c3R5bGVzaGVldF0KIApAQCAtMTU1LDkgKzE2Myw3IEBAIGNsYXNzIFNlcnZvV2ViRHJpdmVyQnJv
d3NlcihCcm93c2VyKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFu
ZD0iICIuam9pbihzZWxmLmNvbW1hbmQpKQogCiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgotICAg
ICAgICBpZiBzZWxmLnJ1bm5lcjoKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnJ1bm5lci5pc19y
dW5uaW5nKCkKLSAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHJldHVybiBzZWxmLnByb2Mu
cG9sbCgpIGlzIE5vbmUKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBzZWxmLnN0
b3AoKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA5YzI3YjE5MDEzYmUxMTBkZTgwYTQ1MjAxZDE2OTc1MGNlNThkNDY4Li4wMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVRo
ZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBv
c2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1J
bnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xz
L1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9U
IG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRp
ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZp
bGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Nocm9tZS5weQotL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9icm93c2Vycy9jaHJvbWVfYW5kcm9pZC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vy
cy9lZGdlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2Zlbm5lYy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9icm93c2Vycy9maXJlZm94LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL2llLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2Jyb3dzZXJzL29wZXJhLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3NhZmFy
aS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zYXVjZS5weQotL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy9zZXJ2by5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93c2Vycy9zZXJ2b2RyaXZlci5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9icm93c2Vycy93ZWJraXQucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9i
cm93c2Vycy93ZWJraXQucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvYnJvd3NlcnMvd2Via2l0LnB5CmluZGV4
IDk0ODJmMmY3NzQzMzI0NzYxNTBkM2UxYmJiNDUyZDU1NDVlMmVmNjkuLmFhMjg2MjEzOTQ1MGY2
ODJlNjA1MWM1ZjYxN2FiOGNhZjE5NjA3ODQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9icm93
c2Vycy93ZWJraXQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Jyb3dzZXJzL3dlYmtpdC5weQpAQCAt
MSw3ICsxLDggQEAKIGZyb20gLmJhc2UgaW1wb3J0IEJyb3dzZXIsIEV4ZWN1dG9yQnJvd3Nlciwg
cmVxdWlyZV9hcmcKK2Zyb20gLmJhc2UgaW1wb3J0IGdldF90aW1lb3V0X211bHRpcGxpZXIsIGNl
cnRpZmljYXRlX2RvbWFpbl9saXN0ICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRvcnMgaW1w
b3J0IGV4ZWN1dG9yX2t3YXJncyBhcyBiYXNlX2V4ZWN1dG9yX2t3YXJncwotZnJvbSAuLmV4ZWN1
dG9ycy5leGVjdXRvcnNlbGVuaXVtIGltcG9ydCAoU2VsZW5pdW1UZXN0aGFybmVzc0V4ZWN1dG9y
LCAgIyBub3FhOiBGNDAxCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBTZWxlbml1bVJlZlRlc3RFeGVjdXRvcikgICMgbm9xYTogRjQwMQorZnJvbSAuLmV4ZWN1dG9y
cy5leGVjdXRvcndlYmRyaXZlciBpbXBvcnQgKFdlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3Is
ICAjIG5vcWE6IEY0MDEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IpICAjIG5vcWE6IEY0MDEKIGZyb20gLi5leGVjdXRv
cnMuZXhlY3V0b3J3ZWJraXQgaW1wb3J0IFdlYktpdERyaXZlcldkc3BlY0V4ZWN1dG9yICAjIG5v
cWE6IEY0MDEKIGZyb20gLi53ZWJkcml2ZXJfc2VydmVyIGltcG9ydCBXZWJLaXREcml2ZXJTZXJ2
ZXIKIApAQCAtMTAsMTIgKzExLDE0IEBAIF9fd3B0cnVubmVyX18gPSB7InByb2R1Y3QiOiAid2Vi
a2l0IiwKICAgICAgICAgICAgICAgICAgImNoZWNrX2FyZ3MiOiAiY2hlY2tfYXJncyIsCiAgICAg
ICAgICAgICAgICAgICJicm93c2VyIjogIldlYktpdEJyb3dzZXIiLAogICAgICAgICAgICAgICAg
ICAiYnJvd3Nlcl9rd2FyZ3MiOiAiYnJvd3Nlcl9rd2FyZ3MiLAotICAgICAgICAgICAgICAgICAi
ZXhlY3V0b3IiOiB7InRlc3RoYXJuZXNzIjogIlNlbGVuaXVtVGVzdGhhcm5lc3NFeGVjdXRvciIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmdGVzdCI6ICJTZWxlbml1bVJlZlRl
c3RFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICJleGVjdXRvciI6IHsidGVzdGhhcm5lc3Mi
OiAiV2ViRHJpdmVyVGVzdGhhcm5lc3NFeGVjdXRvciIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAicmVmdGVzdCI6ICJXZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IiLAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIndkc3BlYyI6ICJXZWJLaXREcml2ZXJXZHNwZWNFeGVjdXRv
ciJ9LAogICAgICAgICAgICAgICAgICAiZXhlY3V0b3Jfa3dhcmdzIjogImV4ZWN1dG9yX2t3YXJn
cyIsCiAgICAgICAgICAgICAgICAgICJlbnZfZXh0cmFzIjogImVudl9leHRyYXMiLAotICAgICAg
ICAgICAgICAgICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMifQorICAgICAgICAgICAgICAg
ICAiZW52X29wdGlvbnMiOiAiZW52X29wdGlvbnMiLAorICAgICAgICAgICAgICAgICAicnVuX2lu
Zm9fZXh0cmFzIjogInJ1bl9pbmZvX2V4dHJhcyIsCisgICAgICAgICAgICAgICAgICJ0aW1lb3V0
X211bHRpcGxpZXIiOiAiZ2V0X3RpbWVvdXRfbXVsdGlwbGllciJ9CiAKIAogZGVmIGNoZWNrX2Fy
Z3MoKiprd2FyZ3MpOgpAQCAtMzEsMTkgKzM0LDIwIEBAIGRlZiBicm93c2VyX2t3YXJncyh0ZXN0
X3R5cGUsIHJ1bl9pbmZvX2RhdGEsIGNvbmZpZywgKiprd2FyZ3MpOgogCiAKIGRlZiBjYXBhYmls
aXRpZXNfZm9yX3BvcnQoc2VydmVyX2NvbmZpZywgKiprd2FyZ3MpOgotICAgIGZyb20gc2VsZW5p
dW0ud2ViZHJpdmVyIGltcG9ydCBEZXNpcmVkQ2FwYWJpbGl0aWVzCi0KLSAgICBpZiBrd2FyZ3Nb
IndlYmtpdF9wb3J0Il0gPT0gImd0ayI6Ci0gICAgICAgIGNhcGFiaWxpdGllcyA9IGRpY3QoRGVz
aXJlZENhcGFiaWxpdGllcy5XRUJLSVRHVEsuY29weSgpKQotICAgICAgICBjYXBhYmlsaXRpZXNb
IndlYmtpdGd0azpicm93c2VyT3B0aW9ucyJdID0gewotICAgICAgICAgICAgImJpbmFyeSI6IGt3
YXJnc1siYmluYXJ5Il0sCi0gICAgICAgICAgICAiYXJncyI6IGt3YXJncy5nZXQoImJpbmFyeV9h
cmdzIiwgW10pLAotICAgICAgICAgICAgImNlcnRpZmljYXRlcyI6IFsKLSAgICAgICAgICAgICAg
ICB7Imhvc3QiOiBzZXJ2ZXJfY29uZmlnWyJicm93c2VyX2hvc3QiXSwKLSAgICAgICAgICAgICAg
ICAgImNlcnRpZmljYXRlRmlsZSI6IGt3YXJnc1siaG9zdF9jZXJ0X3BhdGgiXX0KLSAgICAgICAg
ICAgIF0KLSAgICAgICAgfQotICAgICAgICByZXR1cm4gY2FwYWJpbGl0aWVzCisgICAgcG9ydF9u
YW1lID0ga3dhcmdzWyJ3ZWJraXRfcG9ydCJdCisgICAgaWYgcG9ydF9uYW1lIGluIFsiZ3RrIiwg
IndwZSJdOgorICAgICAgICBwb3J0X2tleV9tYXAgPSB7Imd0ayI6ICJ3ZWJraXRndGsifQorICAg
ICAgICBicm93c2VyX29wdGlvbnNfcG9ydCA9IHBvcnRfa2V5X21hcC5nZXQocG9ydF9uYW1lLCBw
b3J0X25hbWUpCisgICAgICAgIGJyb3dzZXJfb3B0aW9uc19rZXkgPSAiJXM6YnJvd3Nlck9wdGlv
bnMiICUgYnJvd3Nlcl9vcHRpb25zX3BvcnQKKworICAgICAgICByZXR1cm4geworICAgICAgICAg
ICAgImJyb3dzZXJOYW1lIjogIk1pbmlCcm93c2VyIiwKKyAgICAgICAgICAgICJicm93c2VyVmVy
c2lvbiI6ICIyLjIwIiwKKyAgICAgICAgICAgICJwbGF0Zm9ybU5hbWUiOiAiQU5ZIiwKKyAgICAg
ICAgICAgIGJyb3dzZXJfb3B0aW9uc19rZXk6IHsKKyAgICAgICAgICAgICAgICAiYmluYXJ5Ijog
a3dhcmdzWyJiaW5hcnkiXSwKKyAgICAgICAgICAgICAgICAiYXJncyI6IGt3YXJncy5nZXQoImJp
bmFyeV9hcmdzIiwgW10pLAorICAgICAgICAgICAgICAgICJjZXJ0aWZpY2F0ZXMiOiBjZXJ0aWZp
Y2F0ZV9kb21haW5fbGlzdChzZXJ2ZXJfY29uZmlnLmRvbWFpbnNfc2V0LCBrd2FyZ3NbImhvc3Rf
Y2VydF9wYXRoIl0pfX0KIAogICAgIHJldHVybiB7fQogCkBAIC02Niw2ICs3MCwxMCBAQCBkZWYg
ZW52X29wdGlvbnMoKToKICAgICByZXR1cm4ge30KIAogCitkZWYgcnVuX2luZm9fZXh0cmFzKCoq
a3dhcmdzKToKKyAgICByZXR1cm4geyJ3ZWJraXRfcG9ydCI6IGt3YXJnc1sid2Via2l0X3BvcnQi
XX0KKworCiBjbGFzcyBXZWJLaXRCcm93c2VyKEJyb3dzZXIpOgogICAgICIiIkdlbmVyaWMgV2Vi
S2l0IGJyb3dzZXIgaXMgYmFja2VkIGJ5IFdlYktpdCdzIFdlYkRyaXZlciBpbXBsZW1lbnRhdGlv
biwKICAgICB3aGljaCBpcyBzdXBwbGllZCB0aHJvdWdoIGBgd3B0cnVubmVyLndlYmRyaXZlci5X
ZWJLaXREcml2ZXJTZXJ2ZXJgYC4KQEAgLTkxLDcgKzk5LDcgQEAgY2xhc3MgV2ViS2l0QnJvd3Nl
cihCcm93c2VyKToKICAgICAgICAgIyBUT0RPKGF0byk6IFRoaXMgb25seSBpbmRpY2F0ZXMgdGhl
IGRyaXZlciBpcyBhbGl2ZSwKICAgICAgICAgIyBhbmQgZG9lc24ndCBzYXkgYW55dGhpbmcgYWJv
dXQgd2hldGhlciBhIGJyb3dzZXIgc2Vzc2lvbgogICAgICAgICAjIGlzIGFjdGl2ZS4KLSAgICAg
ICAgcmV0dXJuIHNlbGYuc2VydmVyLmlzX2FsaXZlKCkKKyAgICAgICAgcmV0dXJuIHNlbGYuc2Vy
dmVyLmlzX2FsaXZlCiAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgc2VsZi5zdG9w
KCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9jb25maWcucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvY29u
ZmlnLnB5CmluZGV4IDViZDNmNDY3ZjNlZGE1ZjU2NGNhNWM1MTU0MGYyM2IyNTIxYTJhNTguLmU3
ZjlkN2I4Y2M5ODdiZmRmZWNkYTY1NDhhY2Y4MmQxYmUzYTI4ZDQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9jb25maWcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2NvbmZpZy5weQpAQCAtMSw0ICsx
LDQgQEAKLWltcG9ydCBDb25maWdQYXJzZXIKK2Zyb20gc2l4Lm1vdmVzLmNvbmZpZ3BhcnNlciBp
bXBvcnQgU2FmZUNvbmZpZ1BhcnNlcgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIGNvbGxl
Y3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdApAQCAtMjAsNyArMjAsNyBAQCBjbGFzcyBDb25maWdE
aWN0KGRpY3QpOgogZGVmIHJlYWQoY29uZmlnX3BhdGgpOgogICAgIGNvbmZpZ19wYXRoID0gb3Mu
cGF0aC5hYnNwYXRoKGNvbmZpZ19wYXRoKQogICAgIGNvbmZpZ19yb290ID0gb3MucGF0aC5zcGxp
dChjb25maWdfcGF0aClbMF0KLSAgICBwYXJzZXIgPSBDb25maWdQYXJzZXIuU2FmZUNvbmZpZ1Bh
cnNlcigpCisgICAgcGFyc2VyID0gU2FmZUNvbmZpZ1BhcnNlcigpCiAgICAgc3VjY2VzcyA9IHBh
cnNlci5yZWFkKGNvbmZpZ19wYXRoKQogICAgIGFzc2VydCBjb25maWdfcGF0aCBpbiBzdWNjZXNz
LCBzdWNjZXNzCiAKQEAgLTMwLDcgKzMwLDcgQEAgZGVmIHJlYWQoY29uZmlnX3BhdGgpOgogICAg
IGZvciBzZWN0aW9uIGluIHBhcnNlci5zZWN0aW9ucygpOgogICAgICAgICBydltzZWN0aW9uXSA9
IENvbmZpZ0RpY3QoY29uZmlnX3Jvb3QpCiAgICAgICAgIGZvciBrZXkgaW4gcGFyc2VyLm9wdGlv
bnMoc2VjdGlvbik6Ci0gICAgICAgICAgICBydltzZWN0aW9uXVtrZXldID0gcGFyc2VyLmdldChz
ZWN0aW9uLCBrZXksIEZhbHNlLCBzdWJucykKKyAgICAgICAgICAgIHJ2W3NlY3Rpb25dW2tleV0g
PSBwYXJzZXIuZ2V0KHNlY3Rpb24sIGtleSwgcmF3PUZhbHNlLCB2YXJzPXN1Ym5zKQogCiAgICAg
cmV0dXJuIHJ2CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9lbnZpcm9ubWVudC5weQppbmRleCBiYTg5ZmI5ZmU3NjNhNzUyMDgzZjFiM2Vi
NjZhODFhNjgzNzNiNmE0Li5lNzlhZTM3NTA2NDdmODhiYmE0NDcwMzE4MWMyMDgyMjk4MDBmNjU4
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52aXJvbm1lbnQucHkKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2Vudmlyb25tZW50LnB5CkBAIC04LDEyICs4LDE2IEBAIGltcG9ydCB0aW1lCiAKIGZyb20g
bW96bG9nIGltcG9ydCBnZXRfZGVmYXVsdF9sb2dnZXIsIGhhbmRsZXJzLCBwcm94eQogCi1mcm9t
IHdwdGxvZ2dpbmcgaW1wb3J0IExvZ0xldmVsUmV3cml0ZXIKLWZyb20gd3B0c2VydmUuaGFuZGxl
cnMgaW1wb3J0IFN0cmluZ0hhbmRsZXIKK2Zyb20gLndwdGxvZ2dpbmcgaW1wb3J0IExvZ0xldmVs
UmV3cml0ZXIKIAogaGVyZSA9IG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdCiByZXBvX3Jvb3Qg
PSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGhlcmUsIG9zLnBhcmRpciwgb3MucGFyZGly
LCBvcy5wYXJkaXIpKQogCitzeXMucGF0aC5pbnNlcnQoMCwgcmVwb19yb290KQorZnJvbSB0b29s
cyBpbXBvcnQgbG9jYWxwYXRocyAgIyBub3FhOiBGNDAxCisKK2Zyb20gd3B0c2VydmUuaGFuZGxl
cnMgaW1wb3J0IFN0cmluZ0hhbmRsZXIKKwogc2VydmUgPSBOb25lCiAKIApAQCAtNDYsMTMgKzUw
LDE0IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudEVycm9yKEV4Y2VwdGlvbik6CiAKIAogY2xhc3Mg
VGVzdEVudmlyb25tZW50KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0
aHMsIHBhdXNlX2FmdGVyX3Rlc3QsIGRlYnVnX2luZm8sIG9wdGlvbnMsIHNzbF9jb25maWcsIGVu
dl9leHRyYXMpOgotICAgICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdGhhdCBvd25zIHRoZSB0ZXN0
IGVudmlyb25tZW50IGkuZS4gdGhlIGh0dHAgYW5kCi0gICAgICAgIHdlYnNvY2tldHMgc2VydmVy
cyIiIgorICAgICIiIkNvbnRleHQgbWFuYWdlciB0aGF0IG93bnMgdGhlIHRlc3QgZW52aXJvbm1l
bnQgaS5lLiB0aGUgaHR0cCBhbmQKKyAgICB3ZWJzb2NrZXRzIHNlcnZlcnMiIiIKKyAgICBkZWYg
X19pbml0X18oc2VsZiwgdGVzdF9wYXRocywgdGVzdGhhcm5lc3NfdGltZW91dF9tdWx0aXBsZXIs
IHBhdXNlX2FmdGVyX3Rlc3QsIGRlYnVnX2luZm8sIG9wdGlvbnMsIHNzbF9jb25maWcsIGVudl9l
eHRyYXMpOgogICAgICAgICBzZWxmLnRlc3RfcGF0aHMgPSB0ZXN0X3BhdGhzCiAgICAgICAgIHNl
bGYuc2VydmVyID0gTm9uZQogICAgICAgICBzZWxmLmNvbmZpZ19jdHggPSBOb25lCiAgICAgICAg
IHNlbGYuY29uZmlnID0gTm9uZQorICAgICAgICBzZWxmLnRlc3RoYXJuZXNzX3RpbWVvdXRfbXVs
dGlwbGVyID0gdGVzdGhhcm5lc3NfdGltZW91dF9tdWx0aXBsZXIKICAgICAgICAgc2VsZi5wYXVz
ZV9hZnRlcl90ZXN0ID0gcGF1c2VfYWZ0ZXJfdGVzdAogICAgICAgICBzZWxmLnRlc3Rfc2VydmVy
X3BvcnQgPSBvcHRpb25zLnBvcCgidGVzdF9zZXJ2ZXJfcG9ydCIsIFRydWUpCiAgICAgICAgIHNl
bGYuZGVidWdfaW5mbyA9IGRlYnVnX2luZm8KQEAgLTE2OSw3ICsxNzQsMTAgQEAgY2xhc3MgVGVz
dEVudmlyb25tZW50KG9iamVjdCk6CiAgICAgICAgIGZvciBwYXRoLCBmb3JtYXRfYXJncywgY29u
dGVudF90eXBlLCByb3V0ZSBpbiBbCiAgICAgICAgICAgICAgICAgKCJ0ZXN0aGFybmVzc19ydW5u
ZXIuaHRtbCIsIHt9LCAidGV4dC9odG1sIiwgIi90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpLAog
ICAgICAgICAgICAgICAgIChzZWxmLm9wdGlvbnMuZ2V0KCJ0ZXN0aGFybmVzc3JlcG9ydCIsICJ0
ZXN0aGFybmVzc3JlcG9ydC5qcyIpLAotICAgICAgICAgICAgICAgICB7Im91dHB1dCI6IHNlbGYu
cGF1c2VfYWZ0ZXJfdGVzdH0sICJ0ZXh0L2phdmFzY3JpcHQ7Y2hhcnNldD11dGY4IiwKKyAgICAg
ICAgICAgICAgICAgeyJvdXRwdXQiOiBzZWxmLnBhdXNlX2FmdGVyX3Rlc3QsCisgICAgICAgICAg
ICAgICAgICAidGltZW91dF9tdWx0aXBsaWVyIjogc2VsZi50ZXN0aGFybmVzc190aW1lb3V0X211
bHRpcGxlciwKKyAgICAgICAgICAgICAgICAgICJleHBsaWNpdF90aW1lb3V0IjogInRydWUiIGlm
IHNlbGYuZGVidWdfaW5mbyBpcyBub3QgTm9uZSBlbHNlICJmYWxzZSJ9LAorICAgICAgICAgICAg
ICAgICAidGV4dC9qYXZhc2NyaXB0O2NoYXJzZXQ9dXRmOCIsCiAgICAgICAgICAgICAgICAgICIv
cmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVwb3J0LmpzIildOgogICAgICAgICAgICAgcGF0aCA9IG9z
LnBhdGgubm9ybXBhdGgob3MucGF0aC5qb2luKGhlcmUsIHBhdGgpKQogICAgICAgICAgICAgIyBO
b3RlIHRoYXQgLmhlYWRlcnMuIGZpbGVzIGRvbid0IGFwcGx5IHRvIHN0YXRpYyByb3V0ZXMsIHNv
IHdlIG5lZWQgdG8KQEAgLTE5OCwxMSArMjA2LDE0IEBAIGNsYXNzIFRlc3RFbnZpcm9ubWVudChv
YmplY3QpOgogCiAgICAgZGVmIGVuc3VyZV9zdGFydGVkKHNlbGYpOgogICAgICAgICAjIFBhdXNl
IGZvciBhIHdoaWxlIHRvIGVuc3VyZSB0aGF0IHRoZSBzZXJ2ZXIgaGFzIGEgY2hhbmNlIHRvIHN0
YXJ0Ci0gICAgICAgIGZvciBfIGluIHhyYW5nZSg2MCk6CisgICAgICAgIHRvdGFsX3NsZWVwX3Nl
Y3MgPSAzMAorICAgICAgICBlYWNoX3NsZWVwX3NlY3MgPSAwLjUKKyAgICAgICAgZW5kX3RpbWUg
PSB0aW1lLnRpbWUoKSArIHRvdGFsX3NsZWVwX3NlY3MKKyAgICAgICAgd2hpbGUgdGltZS50aW1l
KCkgPCBlbmRfdGltZToKICAgICAgICAgICAgIGZhaWxlZCA9IHNlbGYudGVzdF9zZXJ2ZXJzKCkK
ICAgICAgICAgICAgIGlmIG5vdCBmYWlsZWQ6CiAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAg
ICAgICAgICB0aW1lLnNsZWVwKDAuNSkKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoZWFjaF9zbGVl
cF9zZWNzKQogICAgICAgICByYWlzZSBFbnZpcm9ubWVudEVycm9yKCJTZXJ2ZXJzIGZhaWxlZCB0
byBzdGFydDogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLCAiLmpvaW4o
IiVzOiVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gZmFpbGVkKSkKIApAQCAtMjEzLDYgKzIyNCw3IEBA
IGNsYXNzIFRlc3RFbnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICAgICAgZm9yIHBvcnQsIHNl
cnZlciBpbiBzZXJ2ZXJzOgogICAgICAgICAgICAgICAgIGlmIHNlbGYudGVzdF9zZXJ2ZXJfcG9y
dDoKICAgICAgICAgICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICAgICAg
ICAgICAgICBzLnNldHRpbWVvdXQoMC4xKQogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAg
ICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKGhvc3QsIHBvcnQpKQogICAgICAgICAgICAg
ICAgICAgICBleGNlcHQgc29ja2V0LmVycm9yOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4
ZWN1dG9ycy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvX19pbml0X18ucHkK
aW5kZXggYTU4MDczMGRiODJkODMyNTE3MjEyYTE3ODhiODk0NDE5YTMwMGYzOC4uYmY4MjlkOTNl
OTY4ZDRhNmJjY2ZhNjc5OGZiOTc0YmY5OGZmN2Q2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9fX2luaXRfXy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL19faW5p
dF9fLnB5CkBAIC0xLDUgKzEsNSBAQAogIyBmbGFrZTg6IG5vcWEgKG5vdCBpZGVhbCwgYnV0IG5p
Y2VyIHRoYW4gYWRkaW5nIG5vcWE6IEY0MDEgdG8gZXZlcnkgbGluZSEpCi1mcm9tIGJhc2UgaW1w
b3J0IChleGVjdXRvcl9rd2FyZ3MsCi0gICAgICAgICAgICAgICAgICB0ZXN0aGFybmVzc19yZXN1
bHRfY29udmVydGVyLAotICAgICAgICAgICAgICAgICAgcmVmdGVzdF9yZXN1bHRfY29udmVydGVy
LAotICAgICAgICAgICAgICAgICAgVGVzdEV4ZWN1dG9yKQorZnJvbSAuYmFzZSBpbXBvcnQgKGV4
ZWN1dG9yX2t3YXJncywKKyAgICAgICAgICAgICAgICAgICB0ZXN0aGFybmVzc19yZXN1bHRfY29u
dmVydGVyLAorICAgICAgICAgICAgICAgICAgIHJlZnRlc3RfcmVzdWx0X2NvbnZlcnRlciwKKyAg
ICAgICAgICAgICAgICAgICBUZXN0RXhlY3V0b3IpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
ZXhlY3V0b3JzL2Jhc2UucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2Jhc2UucHkKaW5kZXgg
MWRjOTYyY2ZiMDgzNWRjNGE1YjlhNmQ3ZDc2MDQwOWE3ZGYxMjIwNC4uNzEzZDg1MDAxMTM1ZDBj
ZGYyM2M3YTA2NTgzYmQwM2Q0MzU1ZDU4ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvYmFzZS5weQpAQCAtMSwy
MSArMSwyMSBAQAoraW1wb3J0IGJhc2U2NAogaW1wb3J0IGhhc2hsaWIKLWltcG9ydCBodHRwbGli
Citmcm9tIHNpeC5tb3Zlcy5odHRwX2NsaWVudCBpbXBvcnQgSFRUUENvbm5lY3Rpb24KK2ltcG9y
dCBpbworaW1wb3J0IGpzb24KIGltcG9ydCBvcwogaW1wb3J0IHRocmVhZGluZwogaW1wb3J0IHRy
YWNlYmFjawogaW1wb3J0IHNvY2tldAotaW1wb3J0IHVybHBhcnNlCitpbXBvcnQgc3lzCitmcm9t
IHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1wb3J0IHVybGpvaW4sIHVybHNwbGl0LCB1cmx1bnNw
bGl0CiBmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIAogZnJvbSAuLnRl
c3RydW5uZXIgaW1wb3J0IFN0b3AKLWZyb20gcHJvdG9jb2wgaW1wb3J0IFByb3RvY29sLCBCYXNl
UHJvdG9jb2xQYXJ0Citmcm9tIC5wcm90b2NvbCBpbXBvcnQgUHJvdG9jb2wsIEJhc2VQcm90b2Nv
bFBhcnQKIAogaGVyZSA9IG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdCiAKLSMgRXh0cmEgdGlt
ZW91dCB0byB1c2UgYWZ0ZXIgaW50ZXJuYWwgdGVzdCB0aW1lb3V0IGF0IHdoaWNoIHRoZSBoYXJu
ZXNzCi0jIHNob3VsZCBmb3JjZSBhIHRpbWVvdXQKLWV4dHJhX3RpbWVvdXQgPSA1ICAjIHNlY29u
ZHMKLQogCiBkZWYgZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwgc2VydmVyX2NvbmZpZywgY2Fj
aGVfbWFuYWdlciwgcnVuX2luZm9fZGF0YSwKICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3Mp
OgpAQCAtNDYsMjEgKzQ2LDIzIEBAIGRlZiBzdHJpcF9zZXJ2ZXIodXJsKToKIAogICAgIGUuZy4g
aHR0cDovL2V4YW1wbGUub3JnOjgwMDAvdGVzdHM/aWQ9MSMyIGJlY29tZXMgL3Rlc3RzP2lkPTEj
MiIiIgogCi0gICAgdXJsX3BhcnRzID0gbGlzdCh1cmxwYXJzZS51cmxzcGxpdCh1cmwpKQorICAg
IHVybF9wYXJ0cyA9IGxpc3QodXJsc3BsaXQodXJsKSkKICAgICB1cmxfcGFydHNbMF0gPSAiIgog
ICAgIHVybF9wYXJ0c1sxXSA9ICIiCi0gICAgcmV0dXJuIHVybHBhcnNlLnVybHVuc3BsaXQodXJs
X3BhcnRzKQorICAgIHJldHVybiB1cmx1bnNwbGl0KHVybF9wYXJ0cykKIAogCiBjbGFzcyBUZXN0
aGFybmVzc1Jlc3VsdENvbnZlcnRlcihvYmplY3QpOgogICAgIGhhcm5lc3NfY29kZXMgPSB7MDog
Ik9LIiwKICAgICAgICAgICAgICAgICAgICAgIDE6ICJFUlJPUiIsCi0gICAgICAgICAgICAgICAg
ICAgICAyOiAiVElNRU9VVCJ9CisgICAgICAgICAgICAgICAgICAgICAyOiAiVElNRU9VVCIsCisg
ICAgICAgICAgICAgICAgICAgICAzOiAiUFJFQ09ORElUSU9OX0ZBSUxFRCJ9CiAKICAgICB0ZXN0
X2NvZGVzID0gezA6ICJQQVNTIiwKICAgICAgICAgICAgICAgICAgIDE6ICJGQUlMIiwKICAgICAg
ICAgICAgICAgICAgIDI6ICJUSU1FT1VUIiwKLSAgICAgICAgICAgICAgICAgIDM6ICJOT1RSVU4i
fQorICAgICAgICAgICAgICAgICAgMzogIk5PVFJVTiIsCisgICAgICAgICAgICAgICAgICA0OiAi
UFJFQ09ORElUSU9OX0ZBSUxFRCJ9CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgdGVzdCwgcmVz
dWx0LCBleHRyYT1Ob25lKToKICAgICAgICAgIiIiQ29udmVydCBhIEpTT04gcmVzdWx0IGludG8g
YSAoVGVzdFJlc3VsdCwgW1N1YnRlc3RSZXN1bHRdKSB0dXBsZSIiIgpAQCAtNzYsMTEgKzc4LDM0
IEBAIGNsYXNzIFRlc3RoYXJuZXNzUmVzdWx0Q29udmVydGVyKG9iamVjdCk6CiB0ZXN0aGFybmVz
c19yZXN1bHRfY29udmVydGVyID0gVGVzdGhhcm5lc3NSZXN1bHRDb252ZXJ0ZXIoKQogCiAKK2Rl
ZiBoYXNoX3NjcmVlbnNob3QoZGF0YSk6CisgICAgIiIiQ29tcHV0ZXMgdGhlIHNoYTEgY2hlY2tz
dW0gb2YgYSBiYXNlNjQtZW5jb2RlZCBzY3JlZW5zaG90LiIiIgorICAgIHJldHVybiBoYXNobGli
LnNoYTEoYmFzZTY0LmI2NGRlY29kZShkYXRhKSkuaGV4ZGlnZXN0KCkKKworCitkZWYgX2Vuc3Vy
ZV9oYXNoX2luX3JlZnRlc3Rfc2NyZWVuc2hvdHMoZXh0cmEpOgorICAgICIiIk1ha2Ugc3VyZSBy
ZWZ0ZXN0X3NjcmVlbnNob3RzIGhhdmUgaGFzaGVzLgorCisgICAgTWFyaW9uZXR0ZSBpbnRlcm5h
bCByZWZ0ZXN0IHJ1bm5lciBkb2VzIG5vdCBwcm9kdWNlIGhhc2hlcy4KKyAgICAiIiIKKyAgICBs
b2dfZGF0YSA9IGV4dHJhLmdldCgicmVmdGVzdF9zY3JlZW5zaG90cyIpCisgICAgaWYgbm90IGxv
Z19kYXRhOgorICAgICAgICByZXR1cm4KKyAgICBmb3IgaXRlbSBpbiBsb2dfZGF0YToKKyAgICAg
ICAgaWYgdHlwZShpdGVtKSAhPSBkaWN0OgorICAgICAgICAgICAgIyBTa2lwIHJlbGF0aW9uIHN0
cmluZ3MuCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBpZiAiaGFzaCIgbm90IGluIGl0
ZW06CisgICAgICAgICAgICBpdGVtWyJoYXNoIl0gPSBoYXNoX3NjcmVlbnNob3QoaXRlbVsic2Ny
ZWVuc2hvdCJdKQorCisKIGRlZiByZWZ0ZXN0X3Jlc3VsdF9jb252ZXJ0ZXIoc2VsZiwgdGVzdCwg
cmVzdWx0KToKKyAgICBleHRyYSA9IHJlc3VsdC5nZXQoImV4dHJhIiwge30pCisgICAgX2Vuc3Vy
ZV9oYXNoX2luX3JlZnRlc3Rfc2NyZWVuc2hvdHMoZXh0cmEpCiAgICAgcmV0dXJuICh0ZXN0LnJl
c3VsdF9jbHMoCiAgICAgICAgIHJlc3VsdFsic3RhdHVzIl0sCiAgICAgICAgIHJlc3VsdFsibWVz
c2FnZSJdLAotICAgICAgICBleHRyYT1yZXN1bHQuZ2V0KCJleHRyYSIsIHt9KSwKKyAgICAgICAg
ZXh0cmE9ZXh0cmEsCiAgICAgICAgIHN0YWNrPXJlc3VsdC5nZXQoInN0YWNrIikpLCBbXSkKIAog
CkBAIC0xMDIsMjcgKzEyNyw4NiBAQCBjbGFzcyBFeGVjdXRvckV4Y2VwdGlvbihFeGNlcHRpb24p
OgogICAgICAgICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCiAKIAorY2xhc3MgVGltZWRSdW5uZXIo
b2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBmdW5jLCBwcm90b2NvbCwg
dXJsLCB0aW1lb3V0LCBleHRyYV90aW1lb3V0KToKKyAgICAgICAgc2VsZi5mdW5jID0gZnVuYwor
ICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKKyAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3Rv
Y29sCisgICAgICAgIHNlbGYudXJsID0gdXJsCisgICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVv
dXQKKyAgICAgICAgc2VsZi5leHRyYV90aW1lb3V0ID0gZXh0cmFfdGltZW91dAorICAgICAgICBz
ZWxmLnJlc3VsdF9mbGFnID0gdGhyZWFkaW5nLkV2ZW50KCkKKworICAgIGRlZiBydW4oc2VsZik6
CisgICAgICAgIGlmIHNlbGYuc2V0X3RpbWVvdXQoKSBpcyBTdG9wOgorICAgICAgICAgICAgcmV0
dXJuIFN0b3AKKworICAgICAgICBpZiBzZWxmLmJlZm9yZV9ydW4oKSBpcyBTdG9wOgorICAgICAg
ICAgICAgcmV0dXJuIFN0b3AKKworICAgICAgICBleGVjdXRvciA9IHRocmVhZGluZy5UaHJlYWQo
dGFyZ2V0PXNlbGYucnVuX2Z1bmMpCisgICAgICAgIGV4ZWN1dG9yLnN0YXJ0KCkKKworICAgICAg
ICAjIEFkZCB0d2ljZSB0aGUgdGltZW91dCBtdWx0aXBsaWVyIHNpbmNlIHRoZSBjYWxsZWQgZnVu
Y3Rpb24gaXMgZXhwZWN0ZWQgdG8KKyAgICAgICAgIyB3YWl0IGF0IGxlYXN0IHNlbGYudGltZW91
dCArIHNlbGYuZXh0cmFfdGltZW91dCBhbmQgdGhpcyBnaXZlcyBzb21lIGxlZXdheQorICAgICAg
ICBmaW5pc2hlZCA9IHNlbGYucmVzdWx0X2ZsYWcud2FpdChzZWxmLnRpbWVvdXQgKyAyICogc2Vs
Zi5leHRyYV90aW1lb3V0KQorICAgICAgICBpZiBzZWxmLnJlc3VsdCBpcyBOb25lOgorICAgICAg
ICAgICAgaWYgZmluaXNoZWQ6CisgICAgICAgICAgICAgICAgIyBmbGFnIGlzIFRydWUgdW5sZXNz
IHdlIHRpbWVvdXQ7IHRoaXMgKnNob3VsZG4ndCogaGFwcGVuLCBidXQKKyAgICAgICAgICAgICAg
ICAjIGl0IGNhbiBpZiBzZWxmLnJ1bl9mdW5jIGZhaWxzIHRvIHNldCBzZWxmLnJlc3VsdCBkdWUg
dG8gcmFpc2luZworICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJO
QUwtRVJST1IiLCAiJXMucnVuX2Z1bmMgZGlkbid0IHNldCBhIHJlc3VsdCIgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXykKKyAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJFeGVjdXRvciBoaXQg
ZXh0ZXJuYWwgdGltZW91dCAodGhpcyBtYXkgaW5kaWNhdGUgYSBoYW5nKVxuIgorICAgICAgICAg
ICAgICAgICMgZ2V0IGEgdHJhY2ViYWNrIGZvciB0aGUgY3VycmVudCBzdGFjayBvZiB0aGUgZXhl
Y3V0b3IgdGhyZWFkCisgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiIi5qb2luKHRyYWNlYmFj
ay5mb3JtYXRfc3RhY2soc3lzLl9jdXJyZW50X2ZyYW1lcygpW2V4ZWN1dG9yLmlkZW50XSkpCisg
ICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxzZSwgKCJFWFRFUk5BTC1USU1FT1VUIiwg
bWVzc2FnZSkKKyAgICAgICAgZWxpZiBzZWxmLnJlc3VsdFsxXSBpcyBOb25lOgorICAgICAgICAg
ICAgIyBXZSBkaWRuJ3QgZ2V0IGFueSBkYXRhIGJhY2sgZnJvbSB0aGUgdGVzdCwgc28gY2hlY2sg
aWYgdGhlCisgICAgICAgICAgICAjIGJyb3dzZXIgaXMgc3RpbGwgcmVzcG9uc2l2ZQorICAgICAg
ICAgICAgaWYgc2VsZi5wcm90b2NvbC5pc19hbGl2ZToKKyAgICAgICAgICAgICAgICBzZWxmLnJl
c3VsdCA9IEZhbHNlLCAoIklOVEVSTkFMLUVSUk9SIiwgTm9uZSkKKyAgICAgICAgICAgIGVsc2U6
CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiQnJvd3NlciBub3QgcmVzcG9uZGlu
Zywgc2V0dGluZyBzdGF0dXMgdG8gQ1JBU0giKQorICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0
ID0gRmFsc2UsICgiQ1JBU0giLCBOb25lKQorCisgICAgICAgIHJldHVybiBzZWxmLnJlc3VsdAor
CisgICAgZGVmIHNldF90aW1lb3V0KHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRl
ZEVycm9yCisKKyAgICBkZWYgYmVmb3JlX3J1bihzZWxmKToKKyAgICAgICAgcGFzcworCisgICAg
ZGVmIHJ1bl9mdW5jKHNlbGYpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisK
KwogY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CisgICAgIiIiQWJzdHJhY3QgQmFzZSBjbGFz
cyBmb3Igb2JqZWN0IHRoYXQgYWN0dWFsbHkgZXhlY3V0ZXMgdGhlIHRlc3RzIGluIGEKKyAgICBz
cGVjaWZpYyBicm93c2VyLiBUeXBpY2FsbHkgdGhlcmUgd2lsbCBiZSBhIGRpZmZlcmVudCBUZXN0
RXhlY3V0b3IKKyAgICBzdWJjbGFzcyBmb3IgZWFjaCB0ZXN0IHR5cGUgYW5kIG1ldGhvZCBvZiBl
eGVjdXRpbmcgdGVzdHMuCisKKyAgICA6cGFyYW0gYnJvd3NlcjogRXhlY3V0b3JCcm93c2VyIGlu
c3RhbmNlIHByb3ZpZGluZyBwcm9wZXJ0aWVzIG9mIHRoZQorICAgICAgICAgICAgICAgICAgICBi
cm93c2VyIHRoYXQgd2lsbCBiZSB0ZXN0ZWQuCisgICAgOnBhcmFtIHNlcnZlcl9jb25maWc6IERp
Y3Rpb25hcnkgb2Ygd3B0c2VydmUgc2VydmVyIGNvbmZpZ3VyYXRpb24gb2YgdGhlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgIGZvcm0gc3RvcmVkIGluIFRlc3RFbnZpcm9ubWVudC5jb25maWcK
KyAgICA6cGFyYW0gdGltZW91dF9tdWx0aXBsaWVyOiBNdWx0aXBsaWVyIHJlbGF0aXZlIHRvIGJh
c2UgdGltZW91dCB0byB1c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNl
dHRpbmcgdGVzdCB0aW1lb3V0LgorICAgICIiIgogICAgIF9fbWV0YWNsYXNzX18gPSBBQkNNZXRh
CiAKICAgICB0ZXN0X3R5cGUgPSBOb25lCiAgICAgY29udmVydF9yZXN1bHQgPSBOb25lCiAgICAg
c3VwcG9ydHNfdGVzdGRyaXZlciA9IEZhbHNlCiAgICAgc3VwcG9ydHNfanNzaGVsbCA9IEZhbHNl
CisgICAgIyBFeHRyYSB0aW1lb3V0IHRvIHVzZSBhZnRlciBpbnRlcm5hbCB0ZXN0IHRpbWVvdXQg
YXQgd2hpY2ggdGhlIGhhcm5lc3MKKyAgICAjIHNob3VsZCBmb3JjZSBhIHRpbWVvdXQKKyAgICBl
eHRyYV90aW1lb3V0ID0gNSAgIyBzZWNvbmRzCisKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBi
cm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAgICAgICAgICAg
ICAgICAgZGVidWdfaW5mbz1Ob25lLCAqKmt3YXJncyk6Ci0gICAgICAgICIiIkFic3RyYWN0IEJh
c2UgY2xhc3MgZm9yIG9iamVjdCB0aGF0IGFjdHVhbGx5IGV4ZWN1dGVzIHRoZSB0ZXN0cyBpbiBh
Ci0gICAgICAgIHNwZWNpZmljIGJyb3dzZXIuIFR5cGljYWxseSB0aGVyZSB3aWxsIGJlIGEgZGlm
ZmVyZW50IFRlc3RFeGVjdXRvcgotICAgICAgICBzdWJjbGFzcyBmb3IgZWFjaCB0ZXN0IHR5cGUg
YW5kIG1ldGhvZCBvZiBleGVjdXRpbmcgdGVzdHMuCi0KLSAgICAgICAgOnBhcmFtIGJyb3dzZXI6
IEV4ZWN1dG9yQnJvd3NlciBpbnN0YW5jZSBwcm92aWRpbmcgcHJvcGVydGllcyBvZiB0aGUKLSAg
ICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXIgdGhhdCB3aWxsIGJlIHRlc3RlZC4KLSAgICAg
ICAgOnBhcmFtIHNlcnZlcl9jb25maWc6IERpY3Rpb25hcnkgb2Ygd3B0c2VydmUgc2VydmVyIGNv
bmZpZ3VyYXRpb24gb2YgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JtIHN0
b3JlZCBpbiBUZXN0RW52aXJvbm1lbnQuY29uZmlnCi0gICAgICAgIDpwYXJhbSB0aW1lb3V0X211
bHRpcGxpZXI6IE11bHRpcGxpZXIgcmVsYXRpdmUgdG8gYmFzZSB0aW1lb3V0IHRvIHVzZQotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHNldHRpbmcgdGVzdCB0aW1lb3V0
LgotICAgICAgICAiIiIKICAgICAgICAgc2VsZi5ydW5uZXIgPSBOb25lCiAgICAgICAgIHNlbGYu
YnJvd3NlciA9IGJyb3dzZXIKICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnID0gc2VydmVyX2Nv
bmZpZwpAQCAtMTUyLDYgKzIzNiwxMSBAQCBjbGFzcyBUZXN0RXhlY3V0b3Iob2JqZWN0KToKICAg
ICAgICAgaWYgc2VsZi5wcm90b2NvbCBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYucHJv
dG9jb2wudGVhcmRvd24oKQogCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICAiIiJSZS1p
bml0aWFsaXplIGludGVybmFsIHN0YXRlIHRvIGZhY2lsaXRhdGUgcmVwZWF0ZWQgdGVzdCBleGVj
dXRpb24KKyAgICAgICAgYXMgaW1wbGVtZW50ZWQgYnkgdGhlIGAtLXJlcnVuYCBjb21tYW5kLWxp
bmUgYXJndW1lbnQuIiIiCisgICAgICAgIHBhc3MKKwogICAgIGRlZiBydW5fdGVzdChzZWxmLCB0
ZXN0KToKICAgICAgICAgIiIiUnVuIGEgcGFydGljdWxhciB0ZXN0LgogCkBAIC0xODEsNyArMjcw
LDcgQEAgY2xhc3MgVGVzdEV4ZWN1dG9yKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5zZXJ2ZXJfY29uZmlnWyJwb3J0cyJdW3Byb3RvY29sXVswXSkKIAogICAg
IGRlZiB0ZXN0X3VybChzZWxmLCB0ZXN0KToKLSAgICAgICAgcmV0dXJuIHVybHBhcnNlLnVybGpv
aW4oc2VsZi5zZXJ2ZXJfdXJsKHRlc3QuZW52aXJvbm1lbnRbInByb3RvY29sIl0pLCB0ZXN0LnVy
bCkKKyAgICAgICAgcmV0dXJuIHVybGpvaW4oc2VsZi5zZXJ2ZXJfdXJsKHRlc3QuZW52aXJvbm1l
bnRbInByb3RvY29sIl0pLCB0ZXN0LnVybCkKIAogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRl
ZiBkb190ZXN0KHNlbGYsIHRlc3QpOgpAQCAtMjU2LDkgKzM0NSw4IEBAIGNsYXNzIFJlZlRlc3RJ
bXBsZW1lbnRhdGlvbihvYmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZSwgZGF0
YQogCiAgICAgICAgICAgICBzY3JlZW5zaG90ID0gZGF0YQotICAgICAgICAgICAgaGFzaF92YWx1
ZSA9IGhhc2hsaWIuc2hhMShzY3JlZW5zaG90KS5oZXhkaWdlc3QoKQotCi0gICAgICAgICAgICBz
ZWxmLnNjcmVlbnNob3RfY2FjaGVba2V5XSA9IChoYXNoX3ZhbHVlLCBOb25lKQorICAgICAgICAg
ICAgaGFzaF92YWx1ZSA9IGhhc2hfc2NyZWVuc2hvdChkYXRhKQorICAgICAgICAgICAgc2VsZi5z
Y3JlZW5zaG90X2NhY2hlW2tleV0gPSAoaGFzaF92YWx1ZSwgc2NyZWVuc2hvdCkKIAogICAgICAg
ICAgICAgcnYgPSAoaGFzaF92YWx1ZSwgc2NyZWVuc2hvdCkKICAgICAgICAgZWxzZToKQEAgLTI2
NywxMSArMzU1LDQ0IEBAIGNsYXNzIFJlZlRlc3RJbXBsZW1lbnRhdGlvbihvYmplY3QpOgogICAg
ICAgICBzZWxmLm1lc3NhZ2UuYXBwZW5kKCIlcyAlcyIgJSAodGVzdC51cmwsIHJ2WzBdKSkKICAg
ICAgICAgcmV0dXJuIFRydWUsIHJ2CiAKLSAgICBkZWYgaXNfcGFzcyhzZWxmLCBsaHNfaGFzaCwg
cmhzX2hhc2gsIHJlbGF0aW9uKToKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHNlbGYu
c2NyZWVuc2hvdF9jYWNoZS5jbGVhcigpCisKKyAgICBkZWYgaXNfcGFzcyhzZWxmLCBoYXNoZXMs
IHNjcmVlbnNob3RzLCByZWxhdGlvbiwgZnV6enkpOgogICAgICAgICBhc3NlcnQgcmVsYXRpb24g
aW4gKCI9PSIsICIhPSIpCi0gICAgICAgIHNlbGYubWVzc2FnZS5hcHBlbmQoIlRlc3RpbmcgJXMg
JXMgJXMiICUgKGxoc19oYXNoLCByZWxhdGlvbiwgcmhzX2hhc2gpKQotICAgICAgICByZXR1cm4g
KChyZWxhdGlvbiA9PSAiPT0iIGFuZCBsaHNfaGFzaCA9PSByaHNfaGFzaCkgb3IKLSAgICAgICAg
ICAgICAgICAocmVsYXRpb24gPT0gIiE9IiBhbmQgbGhzX2hhc2ggIT0gcmhzX2hhc2gpKQorICAg
ICAgICBpZiBub3QgZnV6enkgb3IgZnV6enkgPT0gKCgwLDApLCAoMCwwKSk6CisgICAgICAgICAg
ICBlcXVhbCA9IGhhc2hlc1swXSA9PSBoYXNoZXNbMV0KKyAgICAgICAgICAgICMgc29tZXRpbWVz
IGltYWdlcyBjYW4gaGF2ZSBkaWZmZXJlbnQgaGFzaGVzLCBidXQgcGl4ZWxzIGNhbiBiZSBpZGVu
dGljYWwuCisgICAgICAgICAgICBpZiBub3QgZXF1YWw6CisgICAgICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiSW1hZ2UgaGFzaGVzIGRpZG4ndCBtYXRjaCwgY2hlY2tpbmcgcGl4ZWwgZGlm
ZmVyZW5jZXMiKQorICAgICAgICAgICAgICAgIG1heF9wZXJfY2hhbm5lbCwgcGl4ZWxzX2RpZmZl
cmVudCA9IHNlbGYuZ2V0X2RpZmZlcmVuY2VzKHNjcmVlbnNob3RzKQorICAgICAgICAgICAgICAg
IGVxdWFsID0gcGl4ZWxzX2RpZmZlcmVudCA9PSAwIGFuZCBtYXhfcGVyX2NoYW5uZWwgPT0gMAor
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgbWF4X3Blcl9jaGFubmVsLCBwaXhlbHNfZGlmZmVy
ZW50ID0gc2VsZi5nZXRfZGlmZmVyZW5jZXMoc2NyZWVuc2hvdHMpCisgICAgICAgICAgICBhbGxv
d2VkX3Blcl9jaGFubmVsLCBhbGxvd2VkX2RpZmZlcmVudCA9IGZ1enp5CisgICAgICAgICAgICBz
ZWxmLmxvZ2dlci5pbmZvKCJBbGxvd2VkICVzIHBpeGVscyBkaWZmZXJlbnQsIG1heGltdW0gZGlm
ZmVyZW5jZSBwZXIgY2hhbm5lbCAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
Ii0iLmpvaW4oc3RyKGl0ZW0pIGZvciBpdGVtIGluIGFsbG93ZWRfZGlmZmVyZW50KSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICItIi5qb2luKHN0cihpdGVtKSBmb3IgaXRlbSBpbiBh
bGxvd2VkX3Blcl9jaGFubmVsKSkpCisgICAgICAgICAgICBlcXVhbCA9ICgocGl4ZWxzX2RpZmZl
cmVudCA9PSAwIGFuZCBhbGxvd2VkX2RpZmZlcmVudFswXSA9PSAwKSBvcgorICAgICAgICAgICAg
ICAgICAgICAgKG1heF9wZXJfY2hhbm5lbCA9PSAwIGFuZCBhbGxvd2VkX3Blcl9jaGFubmVsWzBd
ID09IDApIG9yCisgICAgICAgICAgICAgICAgICAgICAoYWxsb3dlZF9wZXJfY2hhbm5lbFswXSA8
PSBtYXhfcGVyX2NoYW5uZWwgPD0gYWxsb3dlZF9wZXJfY2hhbm5lbFsxXSBhbmQKKyAgICAgICAg
ICAgICAgICAgICAgICBhbGxvd2VkX2RpZmZlcmVudFswXSA8PSBwaXhlbHNfZGlmZmVyZW50IDw9
IGFsbG93ZWRfZGlmZmVyZW50WzFdKSkKKyAgICAgICAgcmV0dXJuIGVxdWFsIGlmIHJlbGF0aW9u
ID09ICI9PSIgZWxzZSBub3QgZXF1YWwKKworICAgIGRlZiBnZXRfZGlmZmVyZW5jZXMoc2VsZiwg
c2NyZWVuc2hvdHMpOgorICAgICAgICBmcm9tIFBJTCBpbXBvcnQgSW1hZ2UsIEltYWdlQ2hvcHMs
IEltYWdlU3RhdAorCisgICAgICAgIGxocyA9IEltYWdlLm9wZW4oaW8uQnl0ZXNJTyhiYXNlNjQu
YjY0ZGVjb2RlKHNjcmVlbnNob3RzWzBdKSkpLmNvbnZlcnQoIlJHQiIpCisgICAgICAgIHJocyA9
IEltYWdlLm9wZW4oaW8uQnl0ZXNJTyhiYXNlNjQuYjY0ZGVjb2RlKHNjcmVlbnNob3RzWzFdKSkp
LmNvbnZlcnQoIlJHQiIpCisgICAgICAgIGRpZmYgPSBJbWFnZUNob3BzLmRpZmZlcmVuY2UobGhz
LCByaHMpCisgICAgICAgIG1pbmltYWxfZGlmZiA9IGRpZmYuY3JvcChkaWZmLmdldGJib3goKSkK
KyAgICAgICAgbWFzayA9IG1pbmltYWxfZGlmZi5jb252ZXJ0KCJMIiwgZGl0aGVyPU5vbmUpCisg
ICAgICAgIHN0YXQgPSBJbWFnZVN0YXQuU3RhdChtaW5pbWFsX2RpZmYsIG1hc2spCisgICAgICAg
IHBlcl9jaGFubmVsID0gbWF4KGl0ZW1bMV0gZm9yIGl0ZW0gaW4gc3RhdC5leHRyZW1hKQorICAg
ICAgICBjb3VudCA9IHN0YXQuY291bnRbMF0KKyAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiRm91
bmQgJXMgcGl4ZWxzIGRpZmZlcmVudCwgbWF4aW11bSBkaWZmZXJlbmNlIHBlciBjaGFubmVsICVz
IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgKGNvdW50LCBwZXJfY2hhbm5lbCkpCisgICAg
ICAgIHJldHVybiBwZXJfY2hhbm5lbCwgY291bnQKIAogICAgIGRlZiBydW5fdGVzdChzZWxmLCB0
ZXN0KToKICAgICAgICAgdmlld3BvcnRfc2l6ZSA9IHRlc3Qudmlld3BvcnRfc2l6ZQpAQCAtMjg3
LDYgKzQwOCw3IEBAIGNsYXNzIFJlZlRlc3RJbXBsZW1lbnRhdGlvbihvYmplY3QpOgogICAgICAg
ICAgICAgc2NyZWVuc2hvdHMgPSBbTm9uZSwgTm9uZV0KIAogICAgICAgICAgICAgbm9kZXMsIHJl
bGF0aW9uID0gc3RhY2sucG9wKCkKKyAgICAgICAgICAgIGZ1enp5ID0gc2VsZi5nZXRfZnV6enko
dGVzdCwgbm9kZXMsIHJlbGF0aW9uKQogCiAgICAgICAgICAgICBmb3IgaSwgbm9kZSBpbiBlbnVt
ZXJhdGUobm9kZXMpOgogICAgICAgICAgICAgICAgIHN1Y2Nlc3MsIGRhdGEgPSBzZWxmLmdldF9o
YXNoKG5vZGUsIHZpZXdwb3J0X3NpemUsIGRwaSkKQEAgLTI5NSw3ICs0MTcsOCBAQCBjbGFzcyBS
ZWZUZXN0SW1wbGVtZW50YXRpb24ob2JqZWN0KToKIAogICAgICAgICAgICAgICAgIGhhc2hlc1tp
XSwgc2NyZWVuc2hvdHNbaV0gPSBkYXRhCiAKLSAgICAgICAgICAgIGlmIHNlbGYuaXNfcGFzcyho
YXNoZXNbMF0sIGhhc2hlc1sxXSwgcmVsYXRpb24pOgorICAgICAgICAgICAgaWYgc2VsZi5pc19w
YXNzKGhhc2hlcywgc2NyZWVuc2hvdHMsIHJlbGF0aW9uLCBmdXp6eSk6CisgICAgICAgICAgICAg
ICAgZnV6enkgPSBzZWxmLmdldF9mdXp6eSh0ZXN0LCBub2RlcywgcmVsYXRpb24pCiAgICAgICAg
ICAgICAgICAgaWYgbm9kZXNbMV0ucmVmZXJlbmNlczoKICAgICAgICAgICAgICAgICAgICAgc3Rh
Y2suZXh0ZW5kKGxpc3QoKChub2Rlc1sxXSwgaXRlbVswXSksIGl0ZW1bMV0pIGZvciBpdGVtIGlu
IHJldmVyc2VkKG5vZGVzWzFdLnJlZmVyZW5jZXMpKSkKICAgICAgICAgICAgICAgICBlbHNlOgpA
QCAtMzEwLDEzICs0MzMsMzUgQEAgY2xhc3MgUmVmVGVzdEltcGxlbWVudGF0aW9uKG9iamVjdCk6
CiAgICAgICAgICAgICAgICAgaWYgc3VjY2VzczoKICAgICAgICAgICAgICAgICAgICAgc2NyZWVu
c2hvdHNbaV0gPSBzY3JlZW5zaG90CiAKLSAgICAgICAgbG9nX2RhdGEgPSBbeyJ1cmwiOiBub2Rl
c1swXS51cmwsICJzY3JlZW5zaG90Ijogc2NyZWVuc2hvdHNbMF19LCByZWxhdGlvbiwKLSAgICAg
ICAgICAgICAgICAgICAgeyJ1cmwiOiBub2Rlc1sxXS51cmwsICJzY3JlZW5zaG90Ijogc2NyZWVu
c2hvdHNbMV19XQorICAgICAgICBsb2dfZGF0YSA9IFsKKyAgICAgICAgICAgIHsidXJsIjogbm9k
ZXNbMF0udXJsLCAic2NyZWVuc2hvdCI6IHNjcmVlbnNob3RzWzBdLCAiaGFzaCI6IGhhc2hlc1sw
XX0sCisgICAgICAgICAgICByZWxhdGlvbiwKKyAgICAgICAgICAgIHsidXJsIjogbm9kZXNbMV0u
dXJsLCAic2NyZWVuc2hvdCI6IHNjcmVlbnNob3RzWzFdLCAiaGFzaCI6IGhhc2hlc1sxXX0sCisg
ICAgICAgIF0KIAogICAgICAgICByZXR1cm4geyJzdGF0dXMiOiAiRkFJTCIsCiAgICAgICAgICAg
ICAgICAgIm1lc3NhZ2UiOiAiXG4iLmpvaW4oc2VsZi5tZXNzYWdlKSwKICAgICAgICAgICAgICAg
ICAiZXh0cmEiOiB7InJlZnRlc3Rfc2NyZWVuc2hvdHMiOiBsb2dfZGF0YX19CiAKKyAgICBkZWYg
Z2V0X2Z1enp5KHNlbGYsIHJvb3RfdGVzdCwgdGVzdF9ub2RlcywgcmVsYXRpb24pOgorICAgICAg
ICBmdWxsX2tleSA9IHR1cGxlKFtpdGVtLnVybCBmb3IgaXRlbSBpbiB0ZXN0X25vZGVzXSArIFty
ZWxhdGlvbl0pCisgICAgICAgIHJlZl9vbmx5X2tleSA9IHRlc3Rfbm9kZXNbMV0udXJsCisKKyAg
ICAgICAgZnV6enlfb3ZlcnJpZGUgPSByb290X3Rlc3QuZnV6enlfb3ZlcnJpZGUKKyAgICAgICAg
ZnV6enkgPSB0ZXN0X25vZGVzWzBdLmZ1enp5CisKKyAgICAgICAgc291cmNlcyA9IFtmdXp6eV9v
dmVycmlkZSwgZnV6enldCisgICAgICAgIGtleXMgPSBbZnVsbF9rZXksIHJlZl9vbmx5X2tleSwg
Tm9uZV0KKyAgICAgICAgdmFsdWUgPSBOb25lCisgICAgICAgIGZvciBzb3VyY2UgaW4gc291cmNl
czoKKyAgICAgICAgICAgIGZvciBrZXkgaW4ga2V5czoKKyAgICAgICAgICAgICAgICBpZiBrZXkg
aW4gc291cmNlOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHNvdXJjZVtrZXldCisgICAg
ICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiB2YWx1ZToKKyAgICAgICAgICAg
ICAgICBicmVhaworICAgICAgICByZXR1cm4gdmFsdWUKKwogICAgIGRlZiByZXRha2Vfc2NyZWVu
c2hvdChzZWxmLCBub2RlLCB2aWV3cG9ydF9zaXplLCBkcGkpOgogICAgICAgICBzdWNjZXNzLCBk
YXRhID0gc2VsZi5leGVjdXRvci5zY3JlZW5zaG90KG5vZGUsIHZpZXdwb3J0X3NpemUsIGRwaSkK
ICAgICAgICAgaWYgbm90IHN1Y2Nlc3M6CkBAIC0zNTIsNyArNDk3LDcgQEAgY2xhc3MgV2RzcGVj
RXhlY3V0b3IoVGVzdEV4ZWN1dG9yKToKICAgICAgICAgcGFzcwogCiAgICAgZGVmIGRvX3Rlc3Qo
c2VsZiwgdGVzdCk6Ci0gICAgICAgIHRpbWVvdXQgPSB0ZXN0LnRpbWVvdXQgKiBzZWxmLnRpbWVv
dXRfbXVsdGlwbGllciArIGV4dHJhX3RpbWVvdXQKKyAgICAgICAgdGltZW91dCA9IHRlc3QudGlt
ZW91dCAqIHNlbGYudGltZW91dF9tdWx0aXBsaWVyICsgc2VsZi5leHRyYV90aW1lb3V0CiAKICAg
ICAgICAgc3VjY2VzcywgZGF0YSA9IFdkc3BlY1J1bihzZWxmLmRvX3dkc3BlYywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLnNlc3Npb25fY29uZmlnLApA
QCAtNDE2LDcgKzU2MSw3IEBAIGNsYXNzIFdkc3BlY1J1bihvYmplY3QpOgogCiAKIGNsYXNzIENv
bm5lY3Rpb25sZXNzQmFzZVByb3RvY29sUGFydChCYXNlUHJvdG9jb2xQYXJ0KToKLSAgICBkZWYg
ZXhlY3V0ZV9zY3JpcHQoc2VsZiwgc2NyaXB0LCBhc3luYz1GYWxzZSk6CisgICAgZGVmIGV4ZWN1
dGVfc2NyaXB0KHNlbGYsIHNjcmlwdCwgYXN5bmNocm9ub3VzPUZhbHNlKToKICAgICAgICAgcGFz
cwogCiAgICAgZGVmIHNldF90aW1lb3V0KHNlbGYsIHRpbWVvdXQpOgpAQCAtNDg0LDcgKzYyOSw3
IEBAIGNsYXNzIFdlYkRyaXZlclByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgQW4gSFRUUCBy
ZXF1ZXN0IHRvIGFuIGludmFsaWQgcGF0aCB0aGF0IHJlc3VsdHMgaW4gYSA0MDQgaXMKICAgICAg
ICAgcHJvb2YgZW5vdWdoIHRvIHVzIHRoYXQgdGhlIHNlcnZlciBpcyBhbGl2ZSBhbmQga2lja2lu
Zy4KICAgICAgICAgIiIiCi0gICAgICAgIGNvbm4gPSBodHRwbGliLkhUVFBDb25uZWN0aW9uKHNl
bGYuc2VydmVyLmhvc3QsIHNlbGYuc2VydmVyLnBvcnQpCisgICAgICAgIGNvbm4gPSBIVFRQQ29u
bmVjdGlvbihzZWxmLnNlcnZlci5ob3N0LCBzZWxmLnNlcnZlci5wb3J0KQogICAgICAgICBjb25u
LnJlcXVlc3QoIkhFQUQiLCBzZWxmLnNlcnZlci5iYXNlX3BhdGggKyAiaW52YWxpZCIpCiAgICAg
ICAgIHJlcyA9IGNvbm4uZ2V0cmVzcG9uc2UoKQogICAgICAgICByZXR1cm4gcmVzLnN0YXR1cyA9
PSA0MDQKQEAgLTUwOCw3ICs2NTMsMTYgQEAgY2xhc3MgQ2FsbGJhY2tIYW5kbGVyKG9iamVjdCk6
CiAKICAgICAgICAgc2VsZi5hY3Rpb25zID0gewogICAgICAgICAgICAgImNsaWNrIjogQ2xpY2tB
Y3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9jb2wpLAotICAgICAgICAgICAgInNlbmRfa2V5
cyI6IFNlbmRLZXlzQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKQorICAgICAgICAg
ICAgInNlbmRfa2V5cyI6IFNlbmRLZXlzQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29s
KSwKKyAgICAgICAgICAgICJhY3Rpb25fc2VxdWVuY2UiOiBBY3Rpb25TZXF1ZW5jZUFjdGlvbihz
ZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCisgICAgICAgICAgICAiZ2VuZXJhdGVfdGVzdF9y
ZXBvcnQiOiBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9j
b2wpLAorICAgICAgICAgICAgImFkZF92aXJ0dWFsX2F1dGhlbnRpY2F0b3IiOiBBZGRWaXJ0dWFs
QXV0aGVudGljYXRvckFjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCisgICAgICAg
ICAgICAicmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciI6IFJlbW92ZVZpcnR1YWxBdXRoZW50
aWNhdG9yQWN0aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKKyAgICAgICAgICAgICJh
ZGRfY3JlZGVudGlhbCI6IEFkZENyZWRlbnRpYWxBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJv
dG9jb2wpLAorICAgICAgICAgICAgImdldF9jcmVkZW50aWFscyI6IEdldENyZWRlbnRpYWxzQWN0
aW9uKHNlbGYubG9nZ2VyLCBzZWxmLnByb3RvY29sKSwKKyAgICAgICAgICAgICJyZW1vdmVfY3Jl
ZGVudGlhbCI6IFJlbW92ZUNyZWRlbnRpYWxBY3Rpb24oc2VsZi5sb2dnZXIsIHNlbGYucHJvdG9j
b2wpLAorICAgICAgICAgICAgInJlbW92ZV9hbGxfY3JlZGVudGlhbHMiOiBSZW1vdmVBbGxDcmVk
ZW50aWFsc0FjdGlvbihzZWxmLmxvZ2dlciwgc2VsZi5wcm90b2NvbCksCisgICAgICAgICAgICAi
c2V0X3VzZXJfdmVyaWZpZWQiOiBTZXRVc2VyVmVyaWZpZWRBY3Rpb24oc2VsZi5sb2dnZXIsIHNl
bGYucHJvdG9jb2wpLAogICAgICAgICB9CiAKICAgICBkZWYgX19jYWxsX18oc2VsZiwgcmVzdWx0
KToKQEAgLTUyMSwzMCArNjc1LDI3IEBAIGNsYXNzIENhbGxiYWNrSGFuZGxlcihvYmplY3QpOgog
ICAgICAgICByZXR1cm4gY2FsbGJhY2sodXJsLCBwYXlsb2FkKQogCiAgICAgZGVmIHByb2Nlc3Nf
Y29tcGxldGUoc2VsZiwgdXJsLCBwYXlsb2FkKToKLSAgICAgICAgcnYgPSBbdXJsXSArIHBheWxv
YWQKKyAgICAgICAgcnYgPSBbc3RyaXBfc2VydmVyKHVybCldICsgcGF5bG9hZAogICAgICAgICBy
ZXR1cm4gVHJ1ZSwgcnYKIAogICAgIGRlZiBwcm9jZXNzX2FjdGlvbihzZWxmLCB1cmwsIHBheWxv
YWQpOgotICAgICAgICBwYXJlbnQgPSBzZWxmLnByb3RvY29sLmJhc2UuY3VycmVudF93aW5kb3cK
KyAgICAgICAgYWN0aW9uID0gcGF5bG9hZFsiYWN0aW9uIl0KKyAgICAgICAgc2VsZi5sb2dnZXIu
ZGVidWcoIkdvdCBhY3Rpb246ICVzIiAlIGFjdGlvbikKICAgICAgICAgdHJ5OgotICAgICAgICAg
ICAgc2VsZi5wcm90b2NvbC5iYXNlLnNldF93aW5kb3coc2VsZi50ZXN0X3dpbmRvdykKLSAgICAg
ICAgICAgIGFjdGlvbiA9IHBheWxvYWRbImFjdGlvbiJdCi0gICAgICAgICAgICBzZWxmLmxvZ2dl
ci5kZWJ1ZygiR290IGFjdGlvbjogJXMiICUgYWN0aW9uKQotICAgICAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgICAgIGFjdGlvbl9oYW5kbGVyID0gc2VsZi5hY3Rpb25zW2FjdGlvbl0KLSAgICAg
ICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJVbmtub3duIGFjdGlvbiAlcyIgJSBhY3Rpb24pCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICAgICAgYWN0aW9uX2hhbmRsZXIocGF5bG9hZCkKLSAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb246Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiQWN0aW9uICVzIGZh
aWxlZCIgJSBhY3Rpb24pCi0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFj
ZWJhY2suZm9ybWF0X2V4YygpKQotICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbWVzc2FnZSgi
Y29tcGxldGUiLCAiZmFpbHVyZSIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLmRlYnVnKCJBY3Rpb24gJXMgY29tcGxldGVkIiAlIGFjdGlvbikKLSAgICAg
ICAgICAgICAgICBzZWxmLl9zZW5kX21lc3NhZ2UoImNvbXBsZXRlIiwgInN1Y2Nlc3MiKQotICAg
ICAgICBmaW5hbGx5OgotICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5iYXNlLnNldF93aW5kb3co
cGFyZW50KQorICAgICAgICAgICAgYWN0aW9uX2hhbmRsZXIgPSBzZWxmLmFjdGlvbnNbYWN0aW9u
XQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9y
KCJVbmtub3duIGFjdGlvbiAlcyIgJSBhY3Rpb24pCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IHJlc3VsdCA9IGFjdGlvbl9oYW5kbGVyKHBheWxvYWQpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRp
b246CisgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCJBY3Rpb24gJXMgZmFpbGVkIiAl
IGFjdGlvbikKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcodHJhY2ViYWNrLmZvcm1h
dF9leGMoKSkKKyAgICAgICAgICAgIHNlbGYuX3NlbmRfbWVzc2FnZSgiY29tcGxldGUiLCAiZXJy
b3IiKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLmRlYnVnKCJBY3Rpb24gJXMgY29tcGxldGVkIHdpdGggcmVzdWx0ICVzIiAlIChhY3Rp
b24sIHJlc3VsdCkpCisgICAgICAgICAgICByZXR1cm5fbWVzc2FnZSA9IHsicmVzdWx0IjogcmVz
dWx0fQorICAgICAgICAgICAgc2VsZi5fc2VuZF9tZXNzYWdlKCJjb21wbGV0ZSIsICJzdWNjZXNz
IiwganNvbi5kdW1wcyhyZXR1cm5fbWVzc2FnZSkpCiAKICAgICAgICAgcmV0dXJuIEZhbHNlLCBO
b25lCiAKQEAgLTU1OSwxMyArNzEwLDkgQEAgY2xhc3MgQ2xpY2tBY3Rpb24ob2JqZWN0KToKIAog
ICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKICAgICAgICAgc2VsZWN0b3IgPSBwYXls
b2FkWyJzZWxlY3RvciJdCi0gICAgICAgIGVsZW1lbnRzID0gc2VsZi5wcm90b2NvbC5zZWxlY3Qu
ZWxlbWVudHNfYnlfc2VsZWN0b3Ioc2VsZWN0b3IpCi0gICAgICAgIGlmIGxlbihlbGVtZW50cykg
PT0gMDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNlbGVjdG9yIG1hdGNoZXMgbm8g
ZWxlbWVudHMiKQotICAgICAgICBlbGlmIGxlbihlbGVtZW50cykgPiAxOgotICAgICAgICAgICAg
cmFpc2UgVmFsdWVFcnJvcigiU2VsZWN0b3IgbWF0Y2hlcyBtdWx0aXBsZSBlbGVtZW50cyIpCisg
ICAgICAgIGVsZW1lbnQgPSBzZWxmLnByb3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVjdG9y
KHNlbGVjdG9yKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiQ2xpY2tpbmcgZWxlbWVudDog
JXMiICUgc2VsZWN0b3IpCi0gICAgICAgIHNlbGYucHJvdG9jb2wuY2xpY2suZWxlbWVudChlbGVt
ZW50c1swXSkKKyAgICAgICAgc2VsZi5wcm90b2NvbC5jbGljay5lbGVtZW50KGVsZW1lbnQpCiAK
IAogY2xhc3MgU2VuZEtleXNBY3Rpb24ob2JqZWN0KToKQEAgLTU3NiwxMCArNzIzLDExNCBAQCBj
bGFzcyBTZW5kS2V5c0FjdGlvbihvYmplY3QpOgogICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXls
b2FkKToKICAgICAgICAgc2VsZWN0b3IgPSBwYXlsb2FkWyJzZWxlY3RvciJdCiAgICAgICAgIGtl
eXMgPSBwYXlsb2FkWyJrZXlzIl0KLSAgICAgICAgZWxlbWVudHMgPSBzZWxmLnByb3RvY29sLnNl
bGVjdC5lbGVtZW50c19ieV9zZWxlY3RvcihzZWxlY3RvcikKLSAgICAgICAgaWYgbGVuKGVsZW1l
bnRzKSA9PSAwOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiU2VsZWN0b3IgbWF0Y2hl
cyBubyBlbGVtZW50cyIpCi0gICAgICAgIGVsaWYgbGVuKGVsZW1lbnRzKSA+IDE6Ci0gICAgICAg
ICAgICByYWlzZSBWYWx1ZUVycm9yKCJTZWxlY3RvciBtYXRjaGVzIG11bHRpcGxlIGVsZW1lbnRz
IikKKyAgICAgICAgZWxlbWVudCA9IHNlbGYucHJvdG9jb2wuc2VsZWN0LmVsZW1lbnRfYnlfc2Vs
ZWN0b3Ioc2VsZWN0b3IpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJTZW5kaW5nIGtleXMg
dG8gZWxlbWVudDogJXMiICUgc2VsZWN0b3IpCi0gICAgICAgIHNlbGYucHJvdG9jb2wuc2VuZF9r
ZXlzLnNlbmRfa2V5cyhlbGVtZW50c1swXSwga2V5cykKKyAgICAgICAgc2VsZi5wcm90b2NvbC5z
ZW5kX2tleXMuc2VuZF9rZXlzKGVsZW1lbnQsIGtleXMpCisKKworY2xhc3MgQWN0aW9uU2VxdWVu
Y2VBY3Rpb24ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2Nv
bCk6CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wg
PSBwcm90b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICAj
IFRPRE86IHNvbWUgc29ydCBvZiBzaGFsbG93IGVycm9yIGNoZWNraW5nCisgICAgICAgIGFjdGlv
bnMgPSBwYXlsb2FkWyJhY3Rpb25zIl0KKyAgICAgICAgZm9yIGFjdGlvblNlcXVlbmNlIGluIGFj
dGlvbnM6CisgICAgICAgICAgICBpZiBhY3Rpb25TZXF1ZW5jZVsidHlwZSJdID09ICJwb2ludGVy
IjoKKyAgICAgICAgICAgICAgICBmb3IgYWN0aW9uIGluIGFjdGlvblNlcXVlbmNlWyJhY3Rpb25z
Il06CisgICAgICAgICAgICAgICAgICAgIGlmIChhY3Rpb25bInR5cGUiXSA9PSAicG9pbnRlck1v
dmUiIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShhY3Rpb25bIm9yaWdp
biJdLCBkaWN0KSk6CisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb25bIm9yaWdpbiJdID0g
c2VsZi5nZXRfZWxlbWVudChhY3Rpb25bIm9yaWdpbiJdWyJzZWxlY3RvciJdLCBhY3Rpb25bImZy
YW1lIl1bImZyYW1lIl0pCisgICAgICAgIHNlbGYucHJvdG9jb2wuYWN0aW9uX3NlcXVlbmNlLnNl
bmRfYWN0aW9ucyh7ImFjdGlvbnMiOiBhY3Rpb25zfSkKKworICAgIGRlZiBnZXRfZWxlbWVudChz
ZWxmLCBlbGVtZW50X3NlbGVjdG9yLCBmcmFtZSk6CisgICAgICAgIGVsZW1lbnQgPSBzZWxmLnBy
b3RvY29sLnNlbGVjdC5lbGVtZW50X2J5X3NlbGVjdG9yKGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1l
KQorICAgICAgICByZXR1cm4gZWxlbWVudAorCitjbGFzcyBHZW5lcmF0ZVRlc3RSZXBvcnRBY3Rp
b24ob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6Cisg
ICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90
b2NvbAorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBtZXNzYWdl
ID0gcGF5bG9hZFsibWVzc2FnZSJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJHZW5lcmF0
aW5nIHRlc3QgcmVwb3J0OiAlcyIgJSBtZXNzYWdlKQorICAgICAgICBzZWxmLnByb3RvY29sLmdl
bmVyYXRlX3Rlc3RfcmVwb3J0LmdlbmVyYXRlX3Rlc3RfcmVwb3J0KG1lc3NhZ2UpCisKK2NsYXNz
IEFkZFZpcnR1YWxBdXRoZW50aWNhdG9yQWN0aW9uKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgor
ICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxm
LCBwYXlsb2FkKToKKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyB2aXJ0dWFsIGF1
dGhlbnRpY2F0b3IiKQorICAgICAgICBjb25maWcgPSBwYXlsb2FkWyJjb25maWciXQorICAgICAg
ICBhdXRoZW50aWNhdG9yX2lkID0gc2VsZi5wcm90b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iu
YWRkX3ZpcnR1YWxfYXV0aGVudGljYXRvcihjb25maWcpCisgICAgICAgIHNlbGYubG9nZ2VyLmRl
YnVnKCJBdXRoZW50aWNhdG9yIGNyZWF0ZWQgd2l0aCBJRCAlcyIgJSBhdXRoZW50aWNhdG9yX2lk
KQorICAgICAgICByZXR1cm4gYXV0aGVudGljYXRvcl9pZAorCitjbGFzcyBSZW1vdmVWaXJ0dWFs
QXV0aGVudGljYXRvckFjdGlvbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dn
ZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAgICAgc2Vs
Zi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5bG9hZCk6
CisgICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9yX2lkIl0K
KyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIHZpcnR1YWwgYXV0aGVudGljYXRv
ciAlcyIgJSBhdXRoZW50aWNhdG9yX2lkKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90b2NvbC52
aXJ0dWFsX2F1dGhlbnRpY2F0b3IucmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvcihhdXRoZW50
aWNhdG9yX2lkKQorCisKK2NsYXNzIEFkZENyZWRlbnRpYWxBY3Rpb24ob2JqZWN0KToKKyAgICBk
ZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBwcm90b2NvbCk6CisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCisgICAgICAgIHNlbGYucHJvdG9jb2wgPSBwcm90b2NvbAorCisgICAgZGVmIF9f
Y2FsbF9fKHNlbGYsIHBheWxvYWQpOgorICAgICAgICBhdXRoZW50aWNhdG9yX2lkID0gcGF5bG9h
ZFsiYXV0aGVudGljYXRvcl9pZCJdCisgICAgICAgIGNyZWRlbnRpYWwgPSBwYXlsb2FkWyJjcmVk
ZW50aWFsIl0KKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkFkZGluZyBjcmVkZW50aWFsIHRv
IHZpcnR1YWwgYXV0aGVudGljYXRvciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAg
cmV0dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLmFkZF9jcmVkZW50aWFs
KGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWwpCisKK2NsYXNzIEdldENyZWRlbnRpYWxzQWN0
aW9uKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgor
ICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJv
dG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVu
dGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICBzZWxmLmxv
Z2dlci5kZWJ1ZygiR2V0dGluZyBjcmVkZW50aWFscyBmcm9tIHZpcnR1YWwgYXV0aGVudGljYXRv
ciAlcyAiICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wu
dmlydHVhbF9hdXRoZW50aWNhdG9yLmdldF9jcmVkZW50aWFscyhhdXRoZW50aWNhdG9yX2lkKQor
CitjbGFzcyBSZW1vdmVDcmVkZW50aWFsQWN0aW9uKG9iamVjdCk6CisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgor
ICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfX2NhbGxfXyhzZWxm
LCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRvcl9pZCA9IHBheWxvYWRbImF1dGhlbnRp
Y2F0b3JfaWQiXQorICAgICAgICBjcmVkZW50aWFsX2lkID0gcGF5bG9hZFsiY3JlZGVudGlhbF9p
ZCJdCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSZW1vdmluZyBjcmVkZW50aWFsICVzIGZy
b20gYXV0aGVudGljYXRvciAlcyIgJSAoY3JlZGVudGlhbF9pZCwgYXV0aGVudGljYXRvcl9pZCkp
CisgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLnZpcnR1YWxfYXV0aGVudGljYXRvci5yZW1v
dmVfY3JlZGVudGlhbChhdXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsX2lkKQorCitjbGFzcyBS
ZW1vdmVBbGxDcmVkZW50aWFsc0FjdGlvbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBsb2dnZXIsIHByb3RvY29sKToKKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKKyAgICAg
ICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCisKKyAgICBkZWYgX19jYWxsX18oc2VsZiwgcGF5
bG9hZCk6CisgICAgICAgIGF1dGhlbnRpY2F0b3JfaWQgPSBwYXlsb2FkWyJhdXRoZW50aWNhdG9y
X2lkIl0KKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlJlbW92aW5nIGFsbCBjcmVkZW50aWFs
cyBmcm9tIGF1dGhlbnRpY2F0b3IgJXMiICUgYXV0aGVudGljYXRvcl9pZCkKKyAgICAgICAgcmV0
dXJuIHNlbGYucHJvdG9jb2wudmlydHVhbF9hdXRoZW50aWNhdG9yLnJlbW92ZV9hbGxfY3JlZGVu
dGlhbHMoYXV0aGVudGljYXRvcl9pZCkKKworY2xhc3MgU2V0VXNlclZlcmlmaWVkQWN0aW9uKG9i
amVjdCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dlciwgcHJvdG9jb2wpOgorICAgICAg
ICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgorICAgICAgICBzZWxmLnByb3RvY29sID0gcHJvdG9jb2wK
KworICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBwYXlsb2FkKToKKyAgICAgICAgYXV0aGVudGljYXRv
cl9pZCA9IHBheWxvYWRbImF1dGhlbnRpY2F0b3JfaWQiXQorICAgICAgICB1diA9IHBheWxvYWRb
InV2Il0KKyAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoCisgICAgICAgICAgICAiU2V0dGluZyB1
c2VyIHZlcmlmaWVkIGZsYWcgb24gYXV0aGVudGljYXRvciAlcyB0byAlcyIgJSAoYXV0aGVudGlj
YXRvcl9pZCwgdXZbImlzVXNlclZlcmlmaWVkIl0pKQorICAgICAgICByZXR1cm4gc2VsZi5wcm90
b2NvbC52aXJ0dWFsX2F1dGhlbnRpY2F0b3Iuc2V0X3VzZXJfdmVyaWZpZWQoYXV0aGVudGljYXRv
cl9pZCwgdXYpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9ybWFy
aW9uZXR0ZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5
CmluZGV4IDcwMDU0YjU3Mjk0ZjhhZTUwY2VkYTEwZjk1ZWZlYmJlYmVjMzQ1MzguLmIxNjVlOGNk
OTNkNTM0MDYyZjMwM2FhM2UwNDVjYmI5ODUwZWQyNWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9leGVjdXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVj
dXRvcnMvZXhlY3V0b3JtYXJpb25ldHRlLnB5CkBAIC0xLDcgKzEsNyBAQAogaW1wb3J0IGpzb24K
IGltcG9ydCBvcwotaW1wb3J0IHNvY2tldAogaW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUK
IGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCB1cmxwYXJzZQogaW1wb3J0IHV1aWQKQEAgLTE2LDEx
ICsxNiwxMiBAQCBmcm9tIC5iYXNlIGltcG9ydCAoQ2FsbGJhY2tIYW5kbGVyLAogICAgICAgICAg
ICAgICAgICAgIFJlZlRlc3RFeGVjdXRvciwKICAgICAgICAgICAgICAgICAgICBSZWZUZXN0SW1w
bGVtZW50YXRpb24sCiAgICAgICAgICAgICAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvciwKKyAg
ICAgICAgICAgICAgICAgICBUaW1lZFJ1bm5lciwKICAgICAgICAgICAgICAgICAgICBXZHNwZWNF
eGVjdXRvciwKICAgICAgICAgICAgICAgICAgICBXZWJEcml2ZXJQcm90b2NvbCwKLSAgICAgICAg
ICAgICAgICAgICBleHRyYV90aW1lb3V0LAogICAgICAgICAgICAgICAgICAgIHN0cmlwX3NlcnZl
cikKLWZyb20gLnByb3RvY29sIGltcG9ydCAoQXNzZXJ0c1Byb3RvY29sUGFydCwKK2Zyb20gLnBy
b3RvY29sIGltcG9ydCAoQWN0aW9uU2VxdWVuY2VQcm90b2NvbFBhcnQsCisgICAgICAgICAgICAg
ICAgICAgICAgIEFzc2VydHNQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIEJh
c2VQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RoYXJuZXNzUHJvdG9j
b2xQYXJ0LAogICAgICAgICAgICAgICAgICAgICAgICBQcmVmc1Byb3RvY29sUGFydCwKQEAgLTU1
LDggKzU2LDggQEAgY2xhc3MgTWFyaW9uZXR0ZUJhc2VQcm90b2NvbFBhcnQoQmFzZVByb3RvY29s
UGFydCk6CiAgICAgZGVmIHNldHVwKHNlbGYpOgogICAgICAgICBzZWxmLm1hcmlvbmV0dGUgPSBz
ZWxmLnBhcmVudC5tYXJpb25ldHRlCiAKLSAgICBkZWYgZXhlY3V0ZV9zY3JpcHQoc2VsZiwgc2Ny
aXB0LCBhc3luYz1GYWxzZSk6Ci0gICAgICAgIG1ldGhvZCA9IHNlbGYubWFyaW9uZXR0ZS5leGVj
dXRlX2FzeW5jX3NjcmlwdCBpZiBhc3luYyBlbHNlIHNlbGYubWFyaW9uZXR0ZS5leGVjdXRlX3Nj
cmlwdAorICAgIGRlZiBleGVjdXRlX3NjcmlwdChzZWxmLCBzY3JpcHQsIGFzeW5jaHJvbm91cz1G
YWxzZSk6CisgICAgICAgIG1ldGhvZCA9IHNlbGYubWFyaW9uZXR0ZS5leGVjdXRlX2FzeW5jX3Nj
cmlwdCBpZiBhc3luY2hyb25vdXMgZWxzZSBzZWxmLm1hcmlvbmV0dGUuZXhlY3V0ZV9zY3JpcHQK
ICAgICAgICAgcmV0dXJuIG1ldGhvZChzY3JpcHQsIG5ld19zYW5kYm94PUZhbHNlLCBzYW5kYm94
PU5vbmUpCiAKICAgICBkZWYgc2V0X3RpbWVvdXQoc2VsZiwgdGltZW91dCk6CkBAIC04NSw3ICs4
Niw3IEBAIGNsYXNzIE1hcmlvbmV0dGVCYXNlUHJvdG9jb2xQYXJ0KEJhc2VQcm90b2NvbFBhcnQp
OgogICAgICAgICBpZiBzb2NrZXRfdGltZW91dDoKICAgICAgICAgICAgIHRyeToKICAgICAgICAg
ICAgICAgICBzZWxmLm1hcmlvbmV0dGUudGltZW91dC5zY3JpcHQgPSBzb2NrZXRfdGltZW91dCAv
IDIKLSAgICAgICAgICAgIGV4Y2VwdCAoc29ja2V0LmVycm9yLCBJT0Vycm9yKToKKyAgICAgICAg
ICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJT
b2NrZXQgY2xvc2VkIikKICAgICAgICAgICAgICAgICByZXR1cm4KIApAQCAtOTgsNyArOTksMTEg
QEAgY2xhc3MgTWFyaW9uZXR0ZUJhc2VQcm90b2NvbFBhcnQoQmFzZVByb3RvY29sUGFydCk6CiAg
ICAgICAgICAgICBleGNlcHQgZXJyb3JzLlNjcmlwdFRpbWVvdXRFeGNlcHRpb246CiAgICAgICAg
ICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNjcmlwdCB0aW1lZCBvdXQiKQogICAgICAgICAg
ICAgICAgIHBhc3MKLSAgICAgICAgICAgIGV4Y2VwdCAoc29ja2V0LnRpbWVvdXQsIElPRXJyb3Ip
OgorICAgICAgICAgICAgZXhjZXB0IGVycm9ycy5KYXZhc2NyaXB0RXhjZXB0aW9uIGFzIGU6Cisg
ICAgICAgICAgICAgICAgIyBUaGlzIGNhbiBoYXBwZW4gaWYgd2UgbmF2aWdhdGUsIGJ1dCBqdXN0
IGtlZXAgZ29pbmcKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZyhlLm1lc3NhZ2Up
CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAg
ICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlNvY2tldCBjbG9zZWQiKQogICAgICAgICAg
ICAgICAgIGJyZWFrCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CkBAIC0xMTAs
MTcgKzExNSwxOSBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQoVGVz
dGhhcm5lc3NQcm90b2NvbFBhcnQpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQpOgog
ICAgICAgICBzdXBlcihNYXJpb25ldHRlVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQsIHNlbGYpLl9f
aW5pdF9fKHBhcmVudCkKICAgICAgICAgc2VsZi5ydW5uZXJfaGFuZGxlID0gTm9uZQorICAgICAg
ICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGhlcmUsICJydW5uZXIuanMiKSkgYXMgZjoKKyAgICAg
ICAgICAgIHNlbGYucnVubmVyX3NjcmlwdCA9IGYucmVhZCgpCiAKICAgICBkZWYgc2V0dXAoc2Vs
Zik6CiAgICAgICAgIHNlbGYubWFyaW9uZXR0ZSA9IHNlbGYucGFyZW50Lm1hcmlvbmV0dGUKIAog
ICAgIGRlZiBsb2FkX3J1bm5lcihzZWxmLCB1cmxfcHJvdG9jb2wpOgogICAgICAgICAjIENoZWNr
IGlmIHdlIHByZXZpb3VzbHkgaGFkIGEgdGVzdCB3aW5kb3cgb3BlbiwgYW5kIGlmIHdlIGRpZCBt
YWtlIHN1cmUgaXQncyBjbG9zZWQKLSAgICAgICAgc2VsZi5wYXJlbnQuYmFzZS5leGVjdXRlX3Nj
cmlwdCgiaWYgKHdpbmRvdy53aW4pIHt3aW5kb3cud2luLmNsb3NlKCl9IikKKyAgICAgICAgaWYg
c2VsZi5ydW5uZXJfaGFuZGxlOgorICAgICAgICAgICAgc2VsZi5fY2xvc2Vfd2luZG93cygpCiAg
ICAgICAgIHVybCA9IHVybHBhcnNlLnVybGpvaW4oc2VsZi5wYXJlbnQuZXhlY3V0b3Iuc2VydmVy
X3VybCh1cmxfcHJvdG9jb2wpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvdGVz
dGhhcm5lc3NfcnVubmVyLmh0bWwiKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiTG9hZGlu
ZyAlcyIgJSB1cmwpCi0gICAgICAgIHNlbGYucnVubmVyX2hhbmRsZSA9IHNlbGYubWFyaW9uZXR0
ZS5jdXJyZW50X3dpbmRvd19oYW5kbGUKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5k
aXNtaXNzX2FsZXJ0KGxhbWJkYTogc2VsZi5tYXJpb25ldHRlLm5hdmlnYXRlKHVybCkpCiAgICAg
ICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKQEAgLTEyOCwxMiArMTM1LDEzIEBAIGNsYXNzIE1h
cmlvbmV0dGVUZXN0aGFybmVzc1Byb3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6
CiAgICAgICAgICAgICAgICAgIkxvYWRpbmcgaW5pdGlhbCBwYWdlICVzIGZhaWxlZC4gRW5zdXJl
IHRoYXQgdGhlICIKICAgICAgICAgICAgICAgICAidGhlcmUgYXJlIG5vIG90aGVyIHByb2dyYW1z
IGJvdW5kIHRvIHRoaXMgcG9ydCBhbmQgIgogICAgICAgICAgICAgICAgICJ0aGF0IHlvdXIgZmly
ZXdhbGwgcnVsZXMgb3IgbmV0d29yayBzZXR1cCBkb2VzIG5vdCAiCi0gICAgICAgICAgICAgICAg
InByZXZlbnQgYWNjZXNzLlxlJXMiICUgKHVybCwgdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkpKQor
ICAgICAgICAgICAgICAgIHIicHJldmVudCBhY2Nlc3MuXGUlcyIgJSAodXJsLCB0cmFjZWJhY2su
Zm9ybWF0X2V4YyhlKSkpCiAgICAgICAgICAgICByYWlzZQotICAgICAgICBzZWxmLnBhcmVudC5i
YXNlLmV4ZWN1dGVfc2NyaXB0KAotICAgICAgICAgICAgImRvY3VtZW50LnRpdGxlID0gJyVzJyIg
JSB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lLnJlcGxhY2UoIiciLCAnIicpKQorICAg
ICAgICBzZWxmLnJ1bm5lcl9oYW5kbGUgPSBzZWxmLm1hcmlvbmV0dGUuY3VycmVudF93aW5kb3df
aGFuZGxlCisgICAgICAgIGZvcm1hdF9tYXAgPSB7InRpdGxlIjogdGhyZWFkaW5nLmN1cnJlbnRf
dGhyZWFkKCkubmFtZS5yZXBsYWNlKCInIiwgJyInKX0KKyAgICAgICAgc2VsZi5wYXJlbnQuYmFz
ZS5leGVjdXRlX3NjcmlwdChzZWxmLnJ1bm5lcl9zY3JpcHQgJSBmb3JtYXRfbWFwKQogCi0gICAg
ZGVmIGNsb3NlX29sZF93aW5kb3dzKHNlbGYsIHVybF9wcm90b2NvbCk6CisgICAgZGVmIF9jbG9z
ZV93aW5kb3dzKHNlbGYpOgogICAgICAgICBoYW5kbGVzID0gc2VsZi5tYXJpb25ldHRlLndpbmRv
d19oYW5kbGVzCiAgICAgICAgIHJ1bm5lcl9oYW5kbGUgPSBOb25lCiAgICAgICAgIHRyeToKQEAg
LTE0NiwxOCArMTU0LDIyIEBAIGNsYXNzIE1hcmlvbmV0dGVUZXN0aGFybmVzc1Byb3RvY29sUGFy
dChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAgICAgICAgICAgICAjIGJ1dCBpdCBob3BlZnVs
bHkgZG9lc24ndCBtYXR0ZXIgdG9vIG11Y2ggaWYgdGhhdCBhc3N1bXB0aW9uIGlzCiAgICAgICAg
ICAgICAjIHdyb25nIHNpbmNlIHdlIHJlbG9hZCB0aGUgcnVubmVyIGluIHRoYXQgdGFiIGFueXdh
eS4KICAgICAgICAgICAgIHJ1bm5lcl9oYW5kbGUgPSBoYW5kbGVzLnBvcCgwKQorICAgICAgICAg
ICAgc2VsZi5sb2dnZXIuaW5mbygiQ2hhbmdpbmcgaGFybmVzc193aW5kb3cgdG8gJXMiICUgcnVu
bmVyX2hhbmRsZSkKIAogICAgICAgICBmb3IgaGFuZGxlIGluIGhhbmRsZXM6CiAgICAgICAgICAg
ICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5kaXNtaXNzX2FsZXJ0KGxhbWJkYTogc2VsZi5t
YXJpb25ldHRlLnN3aXRjaF90b193aW5kb3coaGFuZGxlKSkKKyAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dlci5pbmZvKCJDbG9zaW5nIHdpbmRvdyAlcyIgJSBoYW5kbGUpCiAgICAgICAgICAgICAg
ICAgc2VsZi5tYXJpb25ldHRlLnN3aXRjaF90b193aW5kb3coaGFuZGxlKQotICAgICAgICAgICAg
ICAgIHNlbGYubWFyaW9uZXR0ZS5jbG9zZSgpCisgICAgICAgICAgICAgICAgc2VsZi5kaXNtaXNz
X2FsZXJ0KGxhbWJkYTogc2VsZi5tYXJpb25ldHRlLmNsb3NlKCkpCiAgICAgICAgICAgICBleGNl
cHQgZXJyb3JzLk5vU3VjaFdpbmRvd0V4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICAjIFdlIG1p
Z2h0IGhhdmUgcmFjZWQgd2l0aCB0aGUgcHJldmlvdXMgdGVzdCB0byBjbG9zZSB0aGlzCiAgICAg
ICAgICAgICAgICAgIyB3aW5kb3csIHNraXAgaXQuCiAgICAgICAgICAgICAgICAgcGFzcwotCiAg
ICAgICAgIHNlbGYubWFyaW9uZXR0ZS5zd2l0Y2hfdG9fd2luZG93KHJ1bm5lcl9oYW5kbGUpCisg
ICAgICAgIHJldHVybiBydW5uZXJfaGFuZGxlCisKKyAgICBkZWYgY2xvc2Vfb2xkX3dpbmRvd3Mo
c2VsZiwgdXJsX3Byb3RvY29sKToKKyAgICAgICAgcnVubmVyX2hhbmRsZSA9IHNlbGYuX2Nsb3Nl
X3dpbmRvd3MoKQogICAgICAgICBpZiBydW5uZXJfaGFuZGxlICE9IHNlbGYucnVubmVyX2hhbmRs
ZToKICAgICAgICAgICAgIHNlbGYubG9hZF9ydW5uZXIodXJsX3Byb3RvY29sKQogICAgICAgICBy
ZXR1cm4gc2VsZi5ydW5uZXJfaGFuZGxlCkBAIC0xNzUsMjkgKzE4Nyw0MyBAQCBjbGFzcyBNYXJp
b25ldHRlVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQoVGVzdGhhcm5lc3NQcm90b2NvbFBhcnQpOgog
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBicmVhawogCi0gICAgZGVmIGdldF90
ZXN0X3dpbmRvdyhzZWxmLCB3aW5kb3dfaWQsIHBhcmVudCk6CisgICAgZGVmIGdldF90ZXN0X3dp
bmRvdyhzZWxmLCB3aW5kb3dfaWQsIHBhcmVudCwgdGltZW91dD01KToKKyAgICAgICAgIiIiRmlu
ZCB0aGUgdGVzdCB3aW5kb3cgYW1vbmdzdCBhbGwgdGhlIG9wZW4gd2luZG93cy4KKyAgICAgICAg
VGhpcyBpcyBhc3N1bWVkIHRvIGJlIGVpdGhlciB0aGUgbmFtZWQgd2luZG93IG9yIHRoZSBvbmUg
YWZ0ZXIgdGhlIHBhcmVudCBpbiB0aGUgbGlzdCBvZgorICAgICAgICB3aW5kb3cgaGFuZGxlcwor
CisgICAgICAgIDpwYXJhbSB3aW5kb3dfaWQ6IFRoZSBET00gbmFtZSBvZiB0aGUgV2luZG93Cisg
ICAgICAgIDpwYXJhbSBwYXJlbnQ6IFRoZSBoYW5kbGUgb2YgdGhlIHJ1bm5lciB3aW5kb3cKKyAg
ICAgICAgOnBhcmFtIHRpbWVvdXQ6IFRoZSB0aW1lIGluIHNlY29uZHMgdG8gd2FpdCBmb3IgdGhl
IHdpbmRvdyB0byBhcHBlYXIuIFRoaXMgaXMgYmVjYXVzZSBpbgorICAgICAgICAgICAgICAgICAg
ICAgICAgc29tZSBpbXBsZW1lbnRhdGlvbnMgdGhlcmUncyBhIHJhY2UgYmV0d2VlbiBjYWxsaW5n
IHdpbmRvdy5vcGVuIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdyBiZWlu
ZyBhZGRlZCB0byB0aGUgbGlzdCBvZiBXZWJEcml2ZXIgYWNjZXNzaWJsZSB3aW5kb3dzLiIiIgog
ICAgICAgICB0ZXN0X3dpbmRvdyA9IE5vbmUKLSAgICAgICAgaWYgd2luZG93X2lkOgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgVHJ5IHRoaXMsIGl0J3MgaW4gTGV2ZWwgMSBi
dXQgbm90aGluZyBzdXBwb3J0cyBpdCB5ZXQKLSAgICAgICAgICAgICAgICB3aW5fcyA9IHNlbGYu
cGFyZW50LmJhc2UuZXhlY3V0ZV9zY3JpcHQoInJldHVybiB3aW5kb3dbJyVzJ107IiAlIHNlbGYu
d2luZG93X2lkKQotICAgICAgICAgICAgICAgIHdpbl9vYmogPSBqc29uLmxvYWRzKHdpbl9zKQot
ICAgICAgICAgICAgICAgIHRlc3Rfd2luZG93ID0gd2luX29ialsid2luZG93LWZjYzYtMTFlNS1i
NGY4LTMzMGE4OGFiOWQ3ZiJdCi0gICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgotICAgICAg
ICAgICAgICAgIHBhc3MKKyAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKSArIHRpbWVvdXQK
KyAgICAgICAgd2hpbGUgdGltZS50aW1lKCkgPCBlbmRfdGltZToKKyAgICAgICAgICAgIGlmIHdp
bmRvd19pZDoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgVHJ5
IHRoaXMsIGl0J3MgaW4gTGV2ZWwgMSBidXQgbm90aGluZyBzdXBwb3J0cyBpdCB5ZXQKKyAgICAg
ICAgICAgICAgICAgICAgd2luX3MgPSBzZWxmLnBhcmVudC5iYXNlLmV4ZWN1dGVfc2NyaXB0KCJy
ZXR1cm4gd2luZG93WyclcyddOyIgJSBzZWxmLndpbmRvd19pZCkKKyAgICAgICAgICAgICAgICAg
ICAgd2luX29iaiA9IGpzb24ubG9hZHMod2luX3MpCisgICAgICAgICAgICAgICAgICAgIHRlc3Rf
d2luZG93ID0gd2luX29ialsid2luZG93LWZjYzYtMTFlNS1iNGY4LTMzMGE4OGFiOWQ3ZiJdCisg
ICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgcGFz
cwogCi0gICAgICAgIGlmIHRlc3Rfd2luZG93IGlzIE5vbmU6Ci0gICAgICAgICAgICBhZnRlciA9
IHNlbGYubWFyaW9uZXR0ZS53aW5kb3dfaGFuZGxlcwotICAgICAgICAgICAgaWYgbGVuKGFmdGVy
KSA9PSAyOgotICAgICAgICAgICAgICAgIHRlc3Rfd2luZG93ID0gbmV4dChpdGVyKHNldChhZnRl
cikgLSBzZXQoW3BhcmVudF0pKSkKLSAgICAgICAgICAgIGVsaWYgYWZ0ZXJbMF0gPT0gcGFyZW50
IGFuZCBsZW4oYWZ0ZXIpID4gMjoKLSAgICAgICAgICAgICAgICAjIEhvcGUgdGhlIGZpcnN0IG9u
ZSBoZXJlIGlzIHRoZSB0ZXN0IHdpbmRvdwotICAgICAgICAgICAgICAgIHRlc3Rfd2luZG93ID0g
YWZ0ZXJbMV0KLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0
aW9uKCJ1bmFibGUgdG8gZmluZCB0ZXN0IHdpbmRvdyIpCisgICAgICAgICAgICBpZiB0ZXN0X3dp
bmRvdyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGhhbmRsZXMgPSBzZWxmLm1hcmlvbmV0dGUu
d2luZG93X2hhbmRsZXMKKyAgICAgICAgICAgICAgICBpZiBsZW4oaGFuZGxlcykgPT0gMjoKKyAg
ICAgICAgICAgICAgICAgICAgdGVzdF93aW5kb3cgPSBuZXh0KGl0ZXIoc2V0KGhhbmRsZXMpIC0g
e3BhcmVudH0pKQorICAgICAgICAgICAgICAgIGVsaWYgbGVuKGhhbmRsZXMpID4gMiBhbmQgaGFu
ZGxlc1swXSA9PSBwYXJlbnQ6CisgICAgICAgICAgICAgICAgICAgICMgSG9wZSB0aGUgZmlyc3Qg
b25lIGhlcmUgaXMgdGhlIHRlc3Qgd2luZG93CisgICAgICAgICAgICAgICAgICAgIHRlc3Rfd2lu
ZG93ID0gaGFuZGxlc1sxXQogCi0gICAgICAgIGFzc2VydCB0ZXN0X3dpbmRvdyAhPSBwYXJlbnQK
LSAgICAgICAgcmV0dXJuIHRlc3Rfd2luZG93CisgICAgICAgICAgICBpZiB0ZXN0X3dpbmRvdyBp
cyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBhc3NlcnQgdGVzdF93aW5kb3cgIT0gcGFyZW50
CisgICAgICAgICAgICAgICAgcmV0dXJuIHRlc3Rfd2luZG93CisKKyAgICAgICAgICAgIHRpbWUu
c2xlZXAoMC4xKQorCisgICAgICAgIHJhaXNlIEV4Y2VwdGlvbigidW5hYmxlIHRvIGZpbmQgdGVz
dCB3aW5kb3ciKQogCiAKIGNsYXNzIE1hcmlvbmV0dGVQcmVmc1Byb3RvY29sUGFydChQcmVmc1By
b3RvY29sUGFydCk6CkBAIC0yMzEsNiArMjU3LDI1IEBAIGNsYXNzIE1hcmlvbmV0dGVQcmVmc1By
b3RvY29sUGFydChQcmVmc1Byb3RvY29sUGFydCk6CiAgICAgICAgICAgICAgICAgY2FzZSBwcmVm
SW50ZXJmYWNlLlBSRUZfSU5UOgogICAgICAgICAgICAgICAgICAgICBwcmVmSW50ZXJmYWNlLnNl
dEludFByZWYocHJlZiwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICBjYXNlIHByZWZJbnRlcmZhY2UuUFJFRl9JTlZBTElEOgorICAgICAgICAgICAg
ICAgICAgICAvLyBQcmVmIGRvZXNuJ3Qgc2VlbSB0byBiZSBkZWZpbmVkIGFscmVhZHk7IGd1ZXNz
IGF0IHRoZQorICAgICAgICAgICAgICAgICAgICAvLyByaWdodCB3YXkgdG8gc2V0IGl0IGJhc2Vk
IG9uIHRoZSB0eXBlIG9mIHZhbHVlIHdlIGhhdmUuCisgICAgICAgICAgICAgICAgICAgIHN3aXRj
aCAodHlwZW9mIHZhbHVlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJib29sZWFu
IjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVmSW50ZXJmYWNlLnNldEJvb2xQcmVm
KHByZWYsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGNhc2UgInN0cmluZyI6CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHJlZkludGVyZmFjZS5zZXRDaGFyUHJlZihwcmVmLCB2YWx1ZSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJu
dW1iZXIiOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWZJbnRlcmZhY2Uuc2V0SW50
UHJlZihwcmVmLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHRocm93IG5ldyBFcnJvcigiVW5rbm93biBwcmVmIHZhbHVlIHR5cGU6ICIgKyAodHlwZW9m
IHZhbHVlKSk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgdGhyb3cg
bmV3IEVycm9yKCJVbmtub3duIHByZWYgdHlwZSAiICsgdHlwZSk7CiAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAiIiIgJSAobmFtZSwgdmFsdWUpCiAgICAgICAgIHdpdGggc2VsZi5tYXJpb25l
dHRlLnVzaW5nX2NvbnRleHQoc2VsZi5tYXJpb25ldHRlLkNPTlRFWFRfQ0hST01FKToKQEAgLTI4
MSwxMCArMzI2LDEwIEBAIGNsYXNzIE1hcmlvbmV0dGVTdG9yYWdlUHJvdG9jb2xQYXJ0KFN0b3Jh
Z2VQcm90b2NvbFBhcnQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAubmV3VVJJ
KHVybCk7CiAgICAgICAgICAgICBsZXQgc3NtID0gQ29tcG9uZW50cy5jbGFzc2VzWyJAbW96aWxs
YS5vcmcvc2NyaXB0c2VjdXJpdHltYW5hZ2VyOzEiXQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAuZ2V0U2VydmljZShDaS5uc0lTY3JpcHRTZWN1cml0eU1hbmFnZXIpOwotICAgICAg
ICAgICAgbGV0IHByaW5jaXBhbCA9IHNzbS5jcmVhdGVDb2RlYmFzZVByaW5jaXBhbCh1cmksIHt9
KTsKKyAgICAgICAgICAgIGxldCBwcmluY2lwYWwgPSBzc20uY3JlYXRlQ29udGVudFByaW5jaXBh
bCh1cmksIHt9KTsKICAgICAgICAgICAgIGxldCBxbXMgPSBDb21wb25lbnRzLmNsYXNzZXNbIkBt
b3ppbGxhLm9yZy9kb20vcXVvdGEtbWFuYWdlci1zZXJ2aWNlOzEiXQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAuZ2V0U2VydmljZShDb21wb25lbnRzLmludGVyZmFjZXMubnNJUXVv
dGFNYW5hZ2VyU2VydmljZSk7Ci0gICAgICAgICAgICBxbXMuY2xlYXJTdG9yYWdlc0ZvclByaW5j
aXBhbChwcmluY2lwYWwsICJkZWZhdWx0IiwgdHJ1ZSk7CisgICAgICAgICAgICBxbXMuY2xlYXJT
dG9yYWdlc0ZvclByaW5jaXBhbChwcmluY2lwYWwsICJkZWZhdWx0IiwgbnVsbCwgdHJ1ZSk7CiAg
ICAgICAgICAgICAiIiIgJSB1cmwKICAgICAgICAgd2l0aCBzZWxmLm1hcmlvbmV0dGUudXNpbmdf
Y29udGV4dChzZWxmLm1hcmlvbmV0dGUuQ09OVEVYVF9DSFJPTUUpOgogICAgICAgICAgICAgc2Vs
Zi5tYXJpb25ldHRlLmV4ZWN1dGVfc2NyaXB0KHNjcmlwdCkKQEAgLTMxNiw3ICszNjEsNyBAQCBj
bGFzcyBNYXJpb25ldHRlQXNzZXJ0c1Byb3RvY29sUGFydChBc3NlcnRzUHJvdG9jb2xQYXJ0KToK
ICAgICAgICAgICAgIGV4Y2VwdCBlcnJvcnMuTm9TdWNoV2luZG93RXhjZXB0aW9uOgogICAgICAg
ICAgICAgICAgICMgSWYgdGhlIHdpbmRvdyB3YXMgYWxyZWFkeSBjbG9zZWQKICAgICAgICAgICAg
ICAgICBzZWxmLnBhcmVudC5sb2dnZXIud2FybmluZygiRmFpbGVkIHRvIGdldCBhc3NlcnRpb24g
Y291bnQ7IHdpbmRvdyB3YXMgY2xvc2VkIikKLSAgICAgICAgICAgIGV4Y2VwdCAoZXJyb3JzLk1h
cmlvbmV0dGVFeGNlcHRpb24sIHNvY2tldC5lcnJvcik6CisgICAgICAgICAgICBleGNlcHQgKGVy
cm9ycy5NYXJpb25ldHRlRXhjZXB0aW9uLCBJT0Vycm9yKToKICAgICAgICAgICAgICAgICAjIFRo
aXMgdXN1YWxseSBoYXBwZW5zIGlmIHRoZSBwcm9jZXNzIGNyYXNoZWQKICAgICAgICAgICAgICAg
ICBwYXNzCiAKQEAgLTM0MSw2ICszODYsOSBAQCBjbGFzcyBNYXJpb25ldHRlU2VsZWN0b3JQcm90
b2NvbFBhcnQoU2VsZWN0b3JQcm90b2NvbFBhcnQpOgogICAgIGRlZiBlbGVtZW50c19ieV9zZWxl
Y3RvcihzZWxmLCBzZWxlY3Rvcik6CiAgICAgICAgIHJldHVybiBzZWxmLm1hcmlvbmV0dGUuZmlu
ZF9lbGVtZW50cygiY3NzIHNlbGVjdG9yIiwgc2VsZWN0b3IpCiAKKyAgICBkZWYgZWxlbWVudHNf
Ynlfc2VsZWN0b3JfYW5kX2ZyYW1lKHNlbGYsIGVsZW1lbnRfc2VsZWN0b3IsIGZyYW1lKToKKyAg
ICAgICAgcmV0dXJuIHNlbGYubWFyaW9uZXR0ZS5maW5kX2VsZW1lbnRzKCJjc3Mgc2VsZWN0b3Ii
LCBlbGVtZW50X3NlbGVjdG9yKQorCiAKIGNsYXNzIE1hcmlvbmV0dGVDbGlja1Byb3RvY29sUGFy
dChDbGlja1Byb3RvY29sUGFydCk6CiAgICAgZGVmIHNldHVwKHNlbGYpOgpAQCAtMzU4LDYgKzQw
NiwxNiBAQCBjbGFzcyBNYXJpb25ldHRlU2VuZEtleXNQcm90b2NvbFBhcnQoU2VuZEtleXNQcm90
b2NvbFBhcnQpOgogICAgICAgICByZXR1cm4gZWxlbWVudC5zZW5kX2tleXMoa2V5cykKIAogCitj
bGFzcyBNYXJpb25ldHRlQWN0aW9uU2VxdWVuY2VQcm90b2NvbFBhcnQoQWN0aW9uU2VxdWVuY2VQ
cm90b2NvbFBhcnQpOgorICAgIGRlZiBzZXR1cChzZWxmKToKKyAgICAgICAgc2VsZi5tYXJpb25l
dHRlID0gc2VsZi5wYXJlbnQubWFyaW9uZXR0ZQorCisgICAgZGVmIHNlbmRfYWN0aW9ucyhzZWxm
LCBhY3Rpb25zKToKKyAgICAgICAgYWN0aW9ucyA9IHNlbGYubWFyaW9uZXR0ZS5fdG9fanNvbihh
Y3Rpb25zKQorICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKGFjdGlvbnMpCisgICAgICAgIHNlbGYu
bWFyaW9uZXR0ZS5fc2VuZF9tZXNzYWdlKCJXZWJEcml2ZXI6UGVyZm9ybUFjdGlvbnMiLCBhY3Rp
b25zKQorCisKIGNsYXNzIE1hcmlvbmV0dGVUZXN0RHJpdmVyUHJvdG9jb2xQYXJ0KFRlc3REcml2
ZXJQcm90b2NvbFBhcnQpOgogICAgIGRlZiBzZXR1cChzZWxmKToKICAgICAgICAgc2VsZi5tYXJp
b25ldHRlID0gc2VsZi5wYXJlbnQubWFyaW9uZXR0ZQpAQCAtMzgxLDcgKzQzOSw3IEBAIGNsYXNz
IE1hcmlvbmV0dGVDb3ZlcmFnZVByb3RvY29sUGFydChDb3ZlcmFnZVByb3RvY29sUGFydCk6CiAg
ICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBzY3JpcHQgPSAiIiIKLSAgICAgICAgICAgIENo
cm9tZVV0aWxzLmltcG9ydCgiY2hyb21lOi8vbWFyaW9uZXR0ZS9jb250ZW50L1BlclRlc3RDb3Zl
cmFnZVV0aWxzLmpzbSIpOworICAgICAgICAgICAgY29uc3Qge1BlclRlc3RDb3ZlcmFnZVV0aWxz
fSA9IENocm9tZVV0aWxzLmltcG9ydCgiY2hyb21lOi8vbWFyaW9uZXR0ZS9jb250ZW50L1BlclRl
c3RDb3ZlcmFnZVV0aWxzLmpzbSIpOwogICAgICAgICAgICAgcmV0dXJuIFBlclRlc3RDb3ZlcmFn
ZVV0aWxzLmVuYWJsZWQ7CiAgICAgICAgICAgICAiIiIKICAgICAgICAgd2l0aCBzZWxmLm1hcmlv
bmV0dGUudXNpbmdfY29udGV4dChzZWxmLm1hcmlvbmV0dGUuQ09OVEVYVF9DSFJPTUUpOgpAQCAt
MzkxLDcgKzQ0OSw3IEBAIGNsYXNzIE1hcmlvbmV0dGVDb3ZlcmFnZVByb3RvY29sUGFydChDb3Zl
cmFnZVByb3RvY29sUGFydCk6CiAgICAgICAgIHNjcmlwdCA9ICIiIgogICAgICAgICAgICAgdmFy
IGNhbGxiYWNrID0gYXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKIAotICAgICAgICAg
ICAgQ2hyb21lVXRpbHMuaW1wb3J0KCJjaHJvbWU6Ly9tYXJpb25ldHRlL2NvbnRlbnQvUGVyVGVz
dENvdmVyYWdlVXRpbHMuanNtIik7CisgICAgICAgICAgICBjb25zdCB7UGVyVGVzdENvdmVyYWdl
VXRpbHN9ID0gQ2hyb21lVXRpbHMuaW1wb3J0KCJjaHJvbWU6Ly9tYXJpb25ldHRlL2NvbnRlbnQv
UGVyVGVzdENvdmVyYWdlVXRpbHMuanNtIik7CiAgICAgICAgICAgICBQZXJUZXN0Q292ZXJhZ2VV
dGlscy5iZWZvcmVUZXN0KCkudGhlbihjYWxsYmFjaywgY2FsbGJhY2spOwogICAgICAgICAgICAg
IiIiCiAgICAgICAgIHdpdGggc2VsZi5tYXJpb25ldHRlLnVzaW5nX2NvbnRleHQoc2VsZi5tYXJp
b25ldHRlLkNPTlRFWFRfQ0hST01FKToKQEAgLTM5OSw3ICs0NTcsNyBAQCBjbGFzcyBNYXJpb25l
dHRlQ292ZXJhZ2VQcm90b2NvbFBhcnQoQ292ZXJhZ2VQcm90b2NvbFBhcnQpOgogICAgICAgICAg
ICAgICAgIGVycm9yID0gc2VsZi5tYXJpb25ldHRlLmV4ZWN1dGVfYXN5bmNfc2NyaXB0KHNjcmlw
dCkKICAgICAgICAgICAgICAgICBpZiBlcnJvciBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAg
ICAgICAgcmFpc2UgRXhjZXB0aW9uKCdGYWlsdXJlIHdoaWxlIHJlc2V0dGluZyBjb3VudGVyczog
JXMnICUganNvbi5kdW1wcyhlcnJvcikpCi0gICAgICAgICAgICBleGNlcHQgKGVycm9ycy5NYXJp
b25ldHRlRXhjZXB0aW9uLCBzb2NrZXQuZXJyb3IpOgorICAgICAgICAgICAgZXhjZXB0IChlcnJv
cnMuTWFyaW9uZXR0ZUV4Y2VwdGlvbiwgSU9FcnJvcik6CiAgICAgICAgICAgICAgICAgIyBUaGlz
IHVzdWFsbHkgaGFwcGVucyBpZiB0aGUgcHJvY2VzcyBjcmFzaGVkCiAgICAgICAgICAgICAgICAg
cGFzcwogCkBAIC00MTEsNyArNDY5LDcgQEAgY2xhc3MgTWFyaW9uZXR0ZUNvdmVyYWdlUHJvdG9j
b2xQYXJ0KENvdmVyYWdlUHJvdG9jb2xQYXJ0KToKICAgICAgICAgc2NyaXB0ID0gIiIiCiAgICAg
ICAgICAgICB2YXIgY2FsbGJhY2sgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0aCAtIDFdOwog
Ci0gICAgICAgICAgICBDaHJvbWVVdGlscy5pbXBvcnQoImNocm9tZTovL21hcmlvbmV0dGUvY29u
dGVudC9QZXJUZXN0Q292ZXJhZ2VVdGlscy5qc20iKTsKKyAgICAgICAgICAgIGNvbnN0IHtQZXJU
ZXN0Q292ZXJhZ2VVdGlsc30gPSBDaHJvbWVVdGlscy5pbXBvcnQoImNocm9tZTovL21hcmlvbmV0
dGUvY29udGVudC9QZXJUZXN0Q292ZXJhZ2VVdGlscy5qc20iKTsKICAgICAgICAgICAgIFBlclRl
c3RDb3ZlcmFnZVV0aWxzLmFmdGVyVGVzdCgpLnRoZW4oY2FsbGJhY2ssIGNhbGxiYWNrKTsKICAg
ICAgICAgICAgICIiIgogICAgICAgICB3aXRoIHNlbGYubWFyaW9uZXR0ZS51c2luZ19jb250ZXh0
KHNlbGYubWFyaW9uZXR0ZS5DT05URVhUX0NIUk9NRSk6CkBAIC00MTksNyArNDc3LDcgQEAgY2xh
c3MgTWFyaW9uZXR0ZUNvdmVyYWdlUHJvdG9jb2xQYXJ0KENvdmVyYWdlUHJvdG9jb2xQYXJ0KToK
ICAgICAgICAgICAgICAgICBlcnJvciA9IHNlbGYubWFyaW9uZXR0ZS5leGVjdXRlX2FzeW5jX3Nj
cmlwdChzY3JpcHQpCiAgICAgICAgICAgICAgICAgaWYgZXJyb3IgaXMgbm90IE5vbmU6CiAgICAg
ICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignRmFpbHVyZSB3aGlsZSBkdW1waW5nIGNv
dW50ZXJzOiAlcycgJSBqc29uLmR1bXBzKGVycm9yKSkKLSAgICAgICAgICAgIGV4Y2VwdCAoZXJy
b3JzLk1hcmlvbmV0dGVFeGNlcHRpb24sIHNvY2tldC5lcnJvcik6CisgICAgICAgICAgICBleGNl
cHQgKGVycm9ycy5NYXJpb25ldHRlRXhjZXB0aW9uLCBJT0Vycm9yKToKICAgICAgICAgICAgICAg
ICAjIFRoaXMgdXN1YWxseSBoYXBwZW5zIGlmIHRoZSBwcm9jZXNzIGNyYXNoZWQKICAgICAgICAg
ICAgICAgICBwYXNzCiAKQEAgLTQzMiw2ICs0OTAsNyBAQCBjbGFzcyBNYXJpb25ldHRlUHJvdG9j
b2woUHJvdG9jb2wpOgogICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVNlbGVjdG9yUHJvdG9j
b2xQYXJ0LAogICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZUNsaWNrUHJvdG9jb2xQYXJ0LAog
ICAgICAgICAgICAgICAgICAgTWFyaW9uZXR0ZVNlbmRLZXlzUHJvdG9jb2xQYXJ0LAorICAgICAg
ICAgICAgICAgICAgTWFyaW9uZXR0ZUFjdGlvblNlcXVlbmNlUHJvdG9jb2xQYXJ0LAogICAgICAg
ICAgICAgICAgICAgTWFyaW9uZXR0ZVRlc3REcml2ZXJQcm90b2NvbFBhcnQsCiAgICAgICAgICAg
ICAgICAgICBNYXJpb25ldHRlQXNzZXJ0c1Byb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAg
IE1hcmlvbmV0dGVDb3ZlcmFnZVByb3RvY29sUGFydF0KQEAgLTQ3MSwxNSArNTMwLDE2IEBAIGNs
YXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6CiAgICAgICAgIHNlbGYubG9nZ2VyLmRl
YnVnKCJNYXJpb25ldHRlIHNlc3Npb24gc3RhcnRlZCIpCiAKICAgICBkZWYgYWZ0ZXJfY29ubmVj
dChzZWxmKToKLSAgICAgICAgc2VsZi50ZXN0aGFybmVzcy5sb2FkX3J1bm5lcihzZWxmLmV4ZWN1
dG9yLmxhc3RfZW52aXJvbm1lbnRbInByb3RvY29sIl0pCisgICAgICAgIHBhc3MKIAogICAgIGRl
ZiB0ZWFyZG93bihzZWxmKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5tYXJpb25l
dHRlLl9yZXF1ZXN0X2luX2FwcF9zaHV0ZG93bigpCi0gICAgICAgICAgICBzZWxmLm1hcmlvbmV0
dGUuZGVsZXRlX3Nlc3Npb24oc2VuZF9yZXF1ZXN0PUZhbHNlKQotICAgICAgICBleGNlcHQgRXhj
ZXB0aW9uOgotICAgICAgICAgICAgIyBUaGlzIGlzIHR5cGljYWxseSBiZWNhdXNlIHRoZSBzZXNz
aW9uIG5ldmVyIHN0YXJ0ZWQKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgaWYgc2VsZi5tYXJp
b25ldHRlIGFuZCBzZWxmLm1hcmlvbmV0dGUuc2Vzc2lvbl9pZDoKKyAgICAgICAgICAgIHRyeToK
KyAgICAgICAgICAgICAgICBzZWxmLm1hcmlvbmV0dGUuX3JlcXVlc3RfaW5fYXBwX3NodXRkb3du
KCkKKyAgICAgICAgICAgICAgICBzZWxmLm1hcmlvbmV0dGUuZGVsZXRlX3Nlc3Npb24oc2VuZF9y
ZXF1ZXN0PUZhbHNlKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAg
ICAgICAjIFRoaXMgaXMgdHlwaWNhbGx5IGJlY2F1c2UgdGhlIHNlc3Npb24gbmV2ZXIgc3RhcnRl
ZAorICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgaWYgc2VsZi5tYXJpb25ldHRlIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgZGVsIHNlbGYubWFyaW9uZXR0ZQogICAgICAgICBzdXBlcihN
YXJpb25ldHRlUHJvdG9jb2wsIHNlbGYpLnRlYXJkb3duKCkKQEAgLTUwNiwyNyArNTY2LDE0IEBA
IGNsYXNzIE1hcmlvbmV0dGVQcm90b2NvbChQcm90b2NvbCk6CiAgICAgICAgICAgICBzZWxmLnBy
ZWZzLnNldChuYW1lLCB2YWx1ZSkKIAogCi1jbGFzcyBFeGVjdXRlQXN5bmNTY3JpcHRSdW4ob2Jq
ZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBmdW5jLCBwcm90b2NvbCwgdXJs
LCB0aW1lb3V0KToKLSAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKLSAgICAgICAgc2VsZi5y
ZXN1bHQgPSAoTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0g
ICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKLSAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAg
c2VsZi50aW1lb3V0ID0gdGltZW91dAotICAgICAgICBzZWxmLnJlc3VsdF9mbGFnID0gdGhyZWFk
aW5nLkV2ZW50KCkKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIGluZGV4ID0gc2VsZi51
cmwucmZpbmQoIi9zdG9yYWdlLyIpCi0gICAgICAgIGlmIGluZGV4ICE9IC0xOgotICAgICAgICAg
ICAgIyBDbGVhciBzdG9yYWdlCi0gICAgICAgICAgICBzZWxmLnByb3RvY29sLnN0b3JhZ2UuY2xl
YXJfb3JpZ2luKHNlbGYudXJsKQorY2xhc3MgRXhlY3V0ZUFzeW5jU2NyaXB0UnVuKFRpbWVkUnVu
bmVyKToKIAorICAgIGRlZiBzZXRfdGltZW91dChzZWxmKToKICAgICAgICAgdGltZW91dCA9IHNl
bGYudGltZW91dAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIHRpbWVvdXQgaXMgbm90
IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5iYXNlLnNldF90aW1lb3V0KHRp
bWVvdXQgKyBleHRyYV90aW1lb3V0KQorICAgICAgICAgICAgICAgIHNlbGYucHJvdG9jb2wuYmFz
ZS5zZXRfdGltZW91dCh0aW1lb3V0ICsgc2VsZi5leHRyYV90aW1lb3V0KQogICAgICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgICAgICAjIFdlIGp1c3Qgd2FudCBpdCB0byBuZXZlciB0aW1lIG91
dCwgcmVhbGx5LCBidXQgbWFyaW9uZXR0ZSBkb2Vzbid0CiAgICAgICAgICAgICAgICAgIyBtYWtl
IHRoYXQgcG9zc2libGUuIEl0IGFsc28gc2VlbXMgdG8gdGltZSBvdXQgaW1tZWRpYXRlbHkgaWYg
dGhlCkBAIC01MzYsNTcgKzU4Myw0MCBAQCBjbGFzcyBFeGVjdXRlQXN5bmNTY3JpcHRSdW4ob2Jq
ZWN0KToKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJMb3N0IG1hcmlvbmV0dGUgY29u
bmVjdGlvbiBiZWZvcmUgc3RhcnRpbmcgdGVzdCIpCiAgICAgICAgICAgICByZXR1cm4gU3RvcAog
Ci0gICAgICAgIGlmIHRpbWVvdXQgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YWl0X3RpbWVv
dXQgPSB0aW1lb3V0ICsgMiAqIGV4dHJhX3RpbWVvdXQKLSAgICAgICAgZWxzZToKLSAgICAgICAg
ICAgIHdhaXRfdGltZW91dCA9IE5vbmUKLQotICAgICAgICB0aW1lciA9IHRocmVhZGluZy5UaW1l
cih3YWl0X3RpbWVvdXQsIHNlbGYuX3RpbWVvdXQpCi0gICAgICAgIHRpbWVyLnN0YXJ0KCkKLQot
ICAgICAgICBzZWxmLl9ydW4oKQotCi0gICAgICAgIHNlbGYucmVzdWx0X2ZsYWcud2FpdCgpCi0g
ICAgICAgIHRpbWVyLmNhbmNlbCgpCi0KLSAgICAgICAgaWYgc2VsZi5yZXN1bHQgPT0gKE5vbmUs
IE5vbmUpOgotICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIlRpbWVkIG91dCB3YWl0aW5n
IGZvciBhIHJlc3VsdCIpCi0gICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkVYVEVS
TkFMLVRJTUVPVVQiLCBOb25lKQotICAgICAgICBlbGlmIHNlbGYucmVzdWx0WzFdIGlzIE5vbmU6
Ci0gICAgICAgICAgICAjIFdlIGRpZG4ndCBnZXQgYW55IGRhdGEgYmFjayBmcm9tIHRoZSB0ZXN0
LCBzbyBjaGVjayBpZiB0aGUKLSAgICAgICAgICAgICMgYnJvd3NlciBpcyBzdGlsbCByZXNwb25z
aXZlCi0gICAgICAgICAgICBpZiBzZWxmLnByb3RvY29sLmlzX2FsaXZlOgotICAgICAgICAgICAg
ICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBOb25lKQotICAgICAg
ICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkNSQVNI
IiwgTm9uZSkKLSAgICAgICAgcmV0dXJuIHNlbGYucmVzdWx0CisgICAgZGVmIGJlZm9yZV9ydW4o
c2VsZik6CisgICAgICAgIGluZGV4ID0gc2VsZi51cmwucmZpbmQoIi9zdG9yYWdlLyIpCisgICAg
ICAgIGlmIGluZGV4ICE9IC0xOgorICAgICAgICAgICAgIyBDbGVhciBzdG9yYWdlCisgICAgICAg
ICAgICBzZWxmLnByb3RvY29sLnN0b3JhZ2UuY2xlYXJfb3JpZ2luKHNlbGYudXJsKQogCi0gICAg
ZGVmIF9ydW4oc2VsZik6CisgICAgZGVmIHJ1bl9mdW5jKHNlbGYpOgogICAgICAgICB0cnk6CiAg
ICAgICAgICAgICBzZWxmLnJlc3VsdCA9IFRydWUsIHNlbGYuZnVuYyhzZWxmLnByb3RvY29sLCBz
ZWxmLnVybCwgc2VsZi50aW1lb3V0KQogICAgICAgICBleGNlcHQgZXJyb3JzLlNjcmlwdFRpbWVv
dXRFeGNlcHRpb246CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiR290IGEgbWFyaW9u
ZXR0ZSB0aW1lb3V0IikKICAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gRmFsc2UsICgiRVhURVJO
QUwtVElNRU9VVCIsIE5vbmUpCi0gICAgICAgIGV4Y2VwdCAoc29ja2V0LnRpbWVvdXQsIElPRXJy
b3IpOgorICAgICAgICBleGNlcHQgSU9FcnJvcjoKICAgICAgICAgICAgICMgVGhpcyBjYW4gaGFw
cGVuIG9uIGEgY3Jhc2gKICAgICAgICAgICAgICMgQWxzbywgc2hvdWxkIGNoZWNrIGFmdGVyIHRo
ZSB0ZXN0IGlmIHRoZSBmaXJlZm94IHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZwogICAgICAgICAg
ICAgIyBhbmQgb3RoZXJ3aXNlIGlnbm9yZSBhbnkgb3RoZXIgcmVzdWx0IGFuZCBzZXQgaXQgdG8g
Y3Jhc2gKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIklPRXJyb3Igb24gY29tbWFuZCwg
c2V0dGluZyBzdGF0dXMgdG8gQ1JBU0giKQorICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxz
ZSwgKCJDUkFTSCIsIE5vbmUpCisgICAgICAgIGV4Y2VwdCBlcnJvcnMuTm9TdWNoV2luZG93RXhj
ZXB0aW9uOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiTm9TdWNoV2luZG93RXhjZXB0
aW9uIG9uIGNvbW1hbmQsIHNldHRpbmcgc3RhdHVzIHRvIENSQVNIIikKICAgICAgICAgICAgIHNl
bGYucmVzdWx0ID0gRmFsc2UsICgiQ1JBU0giLCBOb25lKQogICAgICAgICBleGNlcHQgRXhjZXB0
aW9uIGFzIGU6Ci0gICAgICAgICAgICBtZXNzYWdlID0gZ2V0YXR0cihlLCAibWVzc2FnZSIsICIi
KQotICAgICAgICAgICAgaWYgbWVzc2FnZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJc
biIKLSAgICAgICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKLSAgICAg
ICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcobWVzc2FnZSkKLSAgICAgICAgICAgIHNlbGYucmVz
dWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBOb25lKQotCisgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKGUsIGVycm9ycy5KYXZhc2NyaXB0RXhjZXB0aW9uKSBhbmQgZS5tZXNzYWdlLnN0
YXJ0c3dpdGgoIkRvY3VtZW50IHdhcyB1bmxvYWRlZCIpOgorICAgICAgICAgICAgICAgIG1lc3Nh
Z2UgPSAiRG9jdW1lbnQgdW5sb2FkZWQ7IG1heWJlIHRlc3QgbmF2aWdhdGVkIHRoZSB0b3AtbGV2
ZWwtYnJvd3NpbmcgY29udGV4dD8iCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IG1lc3NhZ2UgPSBnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpCisgICAgICAgICAgICAgICAgaWYg
bWVzc2FnZToKKyAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSArPSAiXG4iCisgICAgICAgICAg
ICAgICAgbWVzc2FnZSArPSB0cmFjZWJhY2suZm9ybWF0X2V4YyhlKQorICAgICAgICAgICAgICAg
IHNlbGYubG9nZ2VyLndhcm5pbmcodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKKyAgICAgICAgICAg
IHNlbGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBtZXNzYWdlKQogICAgICAg
ICBmaW5hbGx5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHRfZmxhZy5zZXQoKQogCi0gICAgZGVm
IF90aW1lb3V0KHNlbGYpOgotICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkVYVEVSTkFM
LVRJTUVPVVQiLCBOb25lKQotICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCi0KIAogY2xh
c3MgTWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAg
ICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKQEAgLTU5OCw5ICs2MjgsMTQgQEAgY2xhc3Mg
TWFyaW9uZXR0ZVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAg
ICAgIFRlc3RoYXJuZXNzRXhlY3V0b3IuX19pbml0X18oc2VsZiwgYnJvd3Nlciwgc2VydmVyX2Nv
bmZpZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRp
cGxpZXI9dGltZW91dF9tdWx0aXBsaWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGRlYnVnX2luZm89ZGVidWdfaW5mbykKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IE1h
cmlvbmV0dGVQcm90b2NvbChzZWxmLCBicm93c2VyLCBjYXBhYmlsaXRpZXMsIHRpbWVvdXRfbXVs
dGlwbGllciwga3dhcmdzWyJlMTBzIl0sIGNjb3YpCi0gICAgICAgIHNlbGYuc2NyaXB0ID0gb3Bl
bihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3RoYXJuZXNzX3dlYmRyaXZlci5qcyIpKS5yZWFkKCkK
LSAgICAgICAgc2VsZi5zY3JpcHRfcmVzdW1lID0gb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInRl
c3RoYXJuZXNzX3dlYmRyaXZlcl9yZXN1bWUuanMiKSkucmVhZCgpCisgICAgICAgIHNlbGYucHJv
dG9jb2wgPSBNYXJpb25ldHRlUHJvdG9jb2woc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicm93c2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGNhcGFiaWxpdGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB0aW1lb3V0X211bHRpcGxpZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJlMTBzIl0sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2NvdikKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBh
dGguam9pbihoZXJlLCAidGVzdGhhcm5lc3Nfd2ViZHJpdmVyX3Jlc3VtZS5qcyIpKSBhcyBmOgor
ICAgICAgICAgICAgc2VsZi5zY3JpcHRfcmVzdW1lID0gZi5yZWFkKCkKICAgICAgICAgc2VsZi5j
bG9zZV9hZnRlcl9kb25lID0gY2xvc2VfYWZ0ZXJfZG9uZQogICAgICAgICBzZWxmLndpbmRvd19p
ZCA9IHN0cih1dWlkLnV1aWQ0KCkpCiAgICAgICAgIHNlbGYuZGVidWcgPSBkZWJ1ZwpAQCAtNjEw
LDYgKzY0NSwxMCBAQCBjbGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFy
bmVzc0V4ZWN1dG9yKToKICAgICAgICAgaWYgbWFyaW9uZXR0ZSBpcyBOb25lOgogICAgICAgICAg
ICAgZG9fZGVsYXllZF9pbXBvcnRzKCkKIAorICAgIGRlZiBzZXR1cChzZWxmLCBydW5uZXIpOgor
ICAgICAgICBzdXBlcihNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvciwgc2VsZikuc2V0dXAo
cnVubmVyKQorICAgICAgICBzZWxmLnByb3RvY29sLnRlc3RoYXJuZXNzLmxvYWRfcnVubmVyKHNl
bGYubGFzdF9lbnZpcm9ubWVudFsicHJvdG9jb2wiXSkKKwogICAgIGRlZiBpc19hbGl2ZShzZWxm
KToKICAgICAgICAgcmV0dXJuIHNlbGYucHJvdG9jb2wuaXNfYWxpdmUKIApAQCAtNjI3LDcgKzY2
Niw4IEBAIGNsYXNzIE1hcmlvbmV0dGVUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJuZXNzRXhl
Y3V0b3IpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNl
bGYuZG9fdGVzdGhhcm5lc3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5wcm90b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzZWxmLnRlc3RfdXJsKHRlc3QpLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQpLnJ1bigpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCiAg
ICAgICAgICMgVGhlIGZvcm1hdCBvZiBkYXRhIGRlcGVuZHMgb24gd2hldGhlciB0aGUgdGVzdCBy
YW4gdG8gY29tcGxldGlvbiBvciBub3QKICAgICAgICAgIyBGb3IgYXNzZXJ0cyB3ZSBvbmx5IGNh
cmUgYWJvdXQgdGhlIGZhY3QgdGhhdCBpZiBpdCBkaWRuJ3QgY29tcGxldGUsIHRoZQogICAgICAg
ICAjIHN0YXR1cyBpcyBpbiB0aGUgZmlyc3QgZmllbGQuCkBAIC02NDcsMzMgKzY4NywyMiBAQCBj
bGFzcyBNYXJpb25ldHRlVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToK
ICAgICAgICAgcmV0dXJuICh0ZXN0LnJlc3VsdF9jbHMoZXh0cmE9ZXh0cmEsICpkYXRhKSwgW10p
CiAKICAgICBkZWYgZG9fdGVzdGhhcm5lc3Moc2VsZiwgcHJvdG9jb2wsIHVybCwgdGltZW91dCk6
Ci0gICAgICAgIHByb3RvY29sLmJhc2UuZXhlY3V0ZV9zY3JpcHQoImlmICh3aW5kb3cud2luKSB7
d2luZG93Lndpbi5jbG9zZSgpfSIpCiAgICAgICAgIHBhcmVudF93aW5kb3cgPSBwcm90b2NvbC50
ZXN0aGFybmVzcy5jbG9zZV9vbGRfd2luZG93cyhwcm90b2NvbCkKIAotICAgICAgICBpZiB0aW1l
b3V0IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgdGltZW91dF9tcyA9IHN0cih0aW1lb3V0ICog
MTAwMCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRpbWVvdXRfbXMgPSAibnVsbCIKLQog
ICAgICAgICBpZiBzZWxmLnByb3RvY29sLmNvdmVyYWdlLmlzX2VuYWJsZWQ6CiAgICAgICAgICAg
ICBzZWxmLnByb3RvY29sLmNvdmVyYWdlLnJlc2V0KCkKIAotICAgICAgICBmb3JtYXRfbWFwID0g
eyJhYnNfdXJsIjogdXJsLAotICAgICAgICAgICAgICAgICAgICAgICJ1cmwiOiBzdHJpcF9zZXJ2
ZXIodXJsKSwKLSAgICAgICAgICAgICAgICAgICAgICAid2luZG93X2lkIjogc2VsZi53aW5kb3df
aWQsCi0gICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXRfbXVsdGlwbGllciI6IHNlbGYudGlt
ZW91dF9tdWx0aXBsaWVyLAotICAgICAgICAgICAgICAgICAgICAgICJ0aW1lb3V0IjogdGltZW91
dF9tcywKLSAgICAgICAgICAgICAgICAgICAgICAiZXhwbGljaXRfdGltZW91dCI6IHRpbWVvdXQg
aXMgTm9uZX0KLQotICAgICAgICBzY3JpcHQgPSBzZWxmLnNjcmlwdCAlIGZvcm1hdF9tYXAKLQot
ICAgICAgICBydiA9IHByb3RvY29sLmJhc2UuZXhlY3V0ZV9zY3JpcHQoc2NyaXB0KQotICAgICAg
ICB0ZXN0X3dpbmRvdyA9IHByb3RvY29sLnRlc3RoYXJuZXNzLmdldF90ZXN0X3dpbmRvdyhzZWxm
LndpbmRvd19pZCwgcGFyZW50X3dpbmRvdykKKyAgICAgICAgZm9ybWF0X21hcCA9IHsidXJsIjog
c3RyaXBfc2VydmVyKHVybCl9CiAKKyAgICAgICAgcHJvdG9jb2wuYmFzZS5leGVjdXRlX3Njcmlw
dCgid2luZG93Lm9wZW4odW5kZWZpbmVkLCAnJXMnLCAnbm9vcGVuZXInKSIgJSBzZWxmLndpbmRv
d19pZCkKKyAgICAgICAgdGVzdF93aW5kb3cgPSBwcm90b2NvbC50ZXN0aGFybmVzcy5nZXRfdGVz
dF93aW5kb3coc2VsZi53aW5kb3dfaWQsIHBhcmVudF93aW5kb3csCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQ9MTAqc2Vs
Zi50aW1lb3V0X211bHRpcGxpZXIpCisgICAgICAgIHNlbGYucHJvdG9jb2wuYmFzZS5zZXRfd2lu
ZG93KHRlc3Rfd2luZG93KQogICAgICAgICBoYW5kbGVyID0gQ2FsbGJhY2tIYW5kbGVyKHNlbGYu
bG9nZ2VyLCBwcm90b2NvbCwgdGVzdF93aW5kb3cpCisgICAgICAgIHByb3RvY29sLm1hcmlvbmV0
dGUubmF2aWdhdGUodXJsKQogICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgcmVzdWx0
ID0gcHJvdG9jb2wuYmFzZS5leGVjdXRlX3NjcmlwdCgKLSAgICAgICAgICAgICAgICBzZWxmLnNj
cmlwdF9yZXN1bWUgJSBmb3JtYXRfbWFwLCBhc3luYz1UcnVlKQorICAgICAgICAgICAgICAgIHNl
bGYuc2NyaXB0X3Jlc3VtZSAlIGZvcm1hdF9tYXAsIGFzeW5jaHJvbm91cz1UcnVlKQogICAgICAg
ICAgICAgaWYgcmVzdWx0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgIyBUaGlzIGNhbiBoYXBw
ZW4gaWYgd2UgZ2V0IGFuIGNvbnRlbnQgcHJvY2VzcyBjcmFzaAogICAgICAgICAgICAgICAgIHJl
dHVybiBOb25lCkBAIC03MTcsNyArNzQ2LDcgQEAgY2xhc3MgTWFyaW9uZXR0ZVJlZlRlc3RFeGVj
dXRvcihSZWZUZXN0RXhlY3V0b3IpOgogCiAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4o
aGVyZSwgInJlZnRlc3QuanMiKSkgYXMgZjoKICAgICAgICAgICAgIHNlbGYuc2NyaXB0ID0gZi5y
ZWFkKCkKLSAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAicmVmdGVzdC13YWl0
X21hcmlvbmV0dGUuanMiKSkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbiho
ZXJlLCAicmVmdGVzdC13YWl0X3dlYmRyaXZlci5qcyIpKSBhcyBmOgogICAgICAgICAgICAgc2Vs
Zi53YWl0X3NjcmlwdCA9IGYucmVhZCgpCiAKICAgICBkZWYgc2V0dXAoc2VsZiwgcnVubmVyKToK
QEAgLTcyNywxMiArNzU2LDE4IEBAIGNsYXNzIE1hcmlvbmV0dGVSZWZUZXN0RXhlY3V0b3IoUmVm
VGVzdEV4ZWN1dG9yKToKICAgICBkZWYgdGVhcmRvd24oc2VsZik6CiAgICAgICAgIHRyeToKICAg
ICAgICAgICAgIHNlbGYuaW1wbGVtZW50YXRpb24udGVhcmRvd24oKQotICAgICAgICAgICAgaGFu
ZGxlID0gc2VsZi5wcm90b2NvbC5tYXJpb25ldHRlLndpbmRvd19oYW5kbGVzWzBdCi0gICAgICAg
ICAgICBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUuc3dpdGNoX3RvX3dpbmRvdyhoYW5kbGUpCisg
ICAgICAgICAgICBpZiBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUgYW5kIHNlbGYucHJvdG9jb2wu
bWFyaW9uZXR0ZS5zZXNzaW9uX2lkOgorICAgICAgICAgICAgICAgIGhhbmRsZXMgPSBzZWxmLnBy
b3RvY29sLm1hcmlvbmV0dGUud2luZG93X2hhbmRsZXMKKyAgICAgICAgICAgICAgICBpZiBoYW5k
bGVzOgorICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3RvY29sLm1hcmlvbmV0dGUuc3dpdGNo
X3RvX3dpbmRvdyhoYW5kbGVzWzBdKQogICAgICAgICAgICAgc3VwZXIoc2VsZi5fX2NsYXNzX18s
IHNlbGYpLnRlYXJkb3duKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAg
ICAgICAgIyBJZ25vcmUgZXJyb3JzIGR1cmluZyB0ZWFyZG93bgotICAgICAgICAgICAgc2VsZi5s
b2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4YyhlKSkKKyAgICAgICAgICAgIHNlbGYu
bG9nZ2VyLndhcm5pbmcoIkV4Y2VwdGlvbiBkdXJpbmcgcmVmdGVzdCB0ZWFyZG93bjpcbiVzIiAl
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlYmFjay5mb3JtYXRfZXhjKGUp
KQorCisgICAgZGVmIHJlc2V0KHNlbGYpOgorICAgICAgICBzZWxmLmltcGxlbWVudGF0aW9uLnJl
c2V0KCoqc2VsZi5pbXBsZW1lbnRhdGlvbl9rd2FyZ3MpCiAKICAgICBkZWYgaXNfYWxpdmUoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlzX2FsaXZlCkBAIC03NzAsNyArODA1
LDcgQEAgY2xhc3MgTWFyaW9uZXR0ZVJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0b3IpOgog
ICAgICAgICByZXR1cm4gc2VsZi5jb252ZXJ0X3Jlc3VsdCh0ZXN0LCByZXN1bHQpCiAKICAgICBk
ZWYgc2NyZWVuc2hvdChzZWxmLCB0ZXN0LCB2aWV3cG9ydF9zaXplLCBkcGkpOgotICAgICAgICAj
IGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd3B0cnVubmVyL2lzc3Vlcy8xNjYKKyAgICAgICAgIyBo
dHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1ZXMvNzEzNQogICAg
ICAgICBhc3NlcnQgdmlld3BvcnRfc2l6ZSBpcyBOb25lCiAgICAgICAgIGFzc2VydCBkcGkgaXMg
Tm9uZQogCkBAIC03ODIsMTIgKzgxNywxMyBAQCBjbGFzcyBNYXJpb25ldHRlUmVmVGVzdEV4ZWN1
dG9yKFJlZlRlc3RFeGVjdXRvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2NyZWVuc2hvdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfdXJsLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQpLnJ1
bigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigp
CiAKICAgICBkZWYgX3NjcmVlbnNob3Qoc2VsZiwgcHJvdG9jb2wsIHVybCwgdGltZW91dCk6CiAg
ICAgICAgIHByb3RvY29sLm1hcmlvbmV0dGUubmF2aWdhdGUodXJsKQogCi0gICAgICAgIHByb3Rv
Y29sLmJhc2UuZXhlY3V0ZV9zY3JpcHQoc2VsZi53YWl0X3NjcmlwdCwgYXN5bmM9VHJ1ZSkKKyAg
ICAgICAgcHJvdG9jb2wuYmFzZS5leGVjdXRlX3NjcmlwdChzZWxmLndhaXRfc2NyaXB0LCBhc3lu
Y2hyb25vdXM9VHJ1ZSkKIAogICAgICAgICBzY3JlZW5zaG90ID0gcHJvdG9jb2wubWFyaW9uZXR0
ZS5zY3JlZW5zaG90KGZ1bGw9RmFsc2UpCiAgICAgICAgICMgc3RyaXAgb2ZmIHRoZSBkYXRhOmlt
Zy9wbmcsIHBhcnQgb2YgdGhlIHVybApAQCAtNzk3LDcgKzgzMyw3IEBAIGNsYXNzIE1hcmlvbmV0
dGVSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAgICAgcmV0dXJuIHNjcmVl
bnNob3QKIAogCi1jbGFzcyBJbnRlcm5hbFJlZlRlc3RJbXBsZW1lbnRhdGlvbihvYmplY3QpOgor
Y2xhc3MgSW50ZXJuYWxSZWZUZXN0SW1wbGVtZW50YXRpb24oUmVmVGVzdEltcGxlbWVudGF0aW9u
KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgZXhlY3V0b3IpOgogICAgICAgICBzZWxmLnRpbWVv
dXRfbXVsdGlwbGllciA9IGV4ZWN1dG9yLnRpbWVvdXRfbXVsdGlwbGllcgogICAgICAgICBzZWxm
LmV4ZWN1dG9yID0gZXhlY3V0b3IKQEAgLTgxNSwyNiArODUxLDQxIEBAIGNsYXNzIEludGVybmFs
UmVmVGVzdEltcGxlbWVudGF0aW9uKG9iamVjdCk6CiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJv
dG9jb2wubWFyaW9uZXR0ZS5zZXRfY29udGV4dChzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlv
bmV0dGUuQ09OVEVYVF9DSFJPTUUpCiAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFy
aW9uZXR0ZS5fc2VuZF9tZXNzYWdlKCJyZWZ0ZXN0OnNldHVwIiwgZGF0YSkKIAorICAgIGRlZiBy
ZXNldChzZWxmLCBzY3JlZW5zaG90PU5vbmUpOgorICAgICAgICAjIHRoaXMgaXMgb2J2aW91cyB3
cm9uZzsgaXQgc2hvdWxkbid0IGJlIGEgbm8tb3AKKyAgICAgICAgIyBzZWUgaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzE1NjA0CisgICAgICAgIHBhc3MK
KwogICAgIGRlZiBydW5fdGVzdChzZWxmLCB0ZXN0KToKLSAgICAgICAgcmVmZXJlbmNlcyA9IHNl
bGYuZ2V0X3JlZmVyZW5jZXModGVzdCkKKyAgICAgICAgcmVmZXJlbmNlcyA9IHNlbGYuZ2V0X3Jl
ZmVyZW5jZXModGVzdCwgdGVzdCkKICAgICAgICAgdGltZW91dCA9ICh0ZXN0LnRpbWVvdXQgKiAx
MDAwKSAqIHNlbGYudGltZW91dF9tdWx0aXBsaWVyCiAgICAgICAgIHJ2ID0gc2VsZi5leGVjdXRv
ci5wcm90b2NvbC5tYXJpb25ldHRlLl9zZW5kX21lc3NhZ2UoInJlZnRlc3Q6cnVuIiwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7
InRlc3QiOiBzZWxmLmV4ZWN1dG9yLnRlc3RfdXJsKHRlc3QpLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVmZXJlbmNlcyI6
IHJlZmVyZW5jZXMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6IHRlc3QuZXhwZWN0ZWQoKSwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRp
bWVvdXQiOiB0aW1lb3V0fSlbInZhbHVlIl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRpbWVvdXQiOiB0aW1lb3V0LAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAid2lkdGgiOiA4MDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiOiA2MDB9KVsidmFsdWUiXQogICAgICAgICBy
ZXR1cm4gcnYKIAotICAgIGRlZiBnZXRfcmVmZXJlbmNlcyhzZWxmLCBub2RlKToKKyAgICBkZWYg
Z2V0X3JlZmVyZW5jZXMoc2VsZiwgcm9vdF90ZXN0LCBub2RlKToKICAgICAgICAgcnYgPSBbXQog
ICAgICAgICBmb3IgaXRlbSwgcmVsYXRpb24gaW4gbm9kZS5yZWZlcmVuY2VzOgotICAgICAgICAg
ICAgcnYuYXBwZW5kKFtzZWxmLmV4ZWN1dG9yLnRlc3RfdXJsKGl0ZW0pLCBzZWxmLmdldF9yZWZl
cmVuY2VzKGl0ZW0pLCByZWxhdGlvbl0pCisgICAgICAgICAgICBydi5hcHBlbmQoW3NlbGYuZXhl
Y3V0b3IudGVzdF91cmwoaXRlbSksIHNlbGYuZ2V0X3JlZmVyZW5jZXMocm9vdF90ZXN0LCBpdGVt
KSwgcmVsYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgIHsiZnV6enkiOiBzZWxmLmdldF9m
dXp6eShyb290X3Rlc3QsIFtub2RlLCBpdGVtXSwgcmVsYXRpb24pfV0pCiAgICAgICAgIHJldHVy
biBydgogCiAgICAgZGVmIHRlYXJkb3duKHNlbGYpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlvbmV0dGUuX3NlbmRfbWVzc2FnZSgicmVmdGVz
dDp0ZWFyZG93biIsIHt9KQotICAgICAgICAgICAgc2VsZi5leGVjdXRvci5wcm90b2NvbC5tYXJp
b25ldHRlLnNldF9jb250ZXh0KHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5DT05U
RVhUX0NPTlRFTlQpCisgICAgICAgICAgICBpZiBzZWxmLmV4ZWN1dG9yLnByb3RvY29sLm1hcmlv
bmV0dGUgYW5kIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5zZXNzaW9uX2lkOgor
ICAgICAgICAgICAgICAgIHNlbGYuZXhlY3V0b3IucHJvdG9jb2wubWFyaW9uZXR0ZS5fc2VuZF9t
ZXNzYWdlKCJyZWZ0ZXN0OnRlYXJkb3duIiwge30pCisgICAgICAgICAgICAgICAgc2VsZi5leGVj
dXRvci5wcm90b2NvbC5tYXJpb25ldHRlLnNldF9jb250ZXh0KHNlbGYuZXhlY3V0b3IucHJvdG9j
b2wubWFyaW9uZXR0ZS5DT05URVhUX0NPTlRFTlQpCisgICAgICAgICAgICAgICAgIyB0aGUgcmVm
dGVzdCBydW5uZXIgb3BlbnMvY2xvc2VzIGEgd2luZG93IHdpdGggZm9jdXMsIHNvIGFzCisgICAg
ICAgICAgICAgICAgIyB3aXRoIGFmdGVyIGNsb3NpbmcgYSB3aW5kb3cgd2UgbmVlZCB0byBnaXZl
IGEgbmV3IHdpbmRvdworICAgICAgICAgICAgICAgICMgZm9jdXMKKyAgICAgICAgICAgICAgICBo
YW5kbGVzID0gc2VsZi5leGVjdXRvci5wcm90b2NvbC5tYXJpb25ldHRlLndpbmRvd19oYW5kbGVz
CisgICAgICAgICAgICAgICAgaWYgaGFuZGxlczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5l
eGVjdXRvci5wcm90b2NvbC5tYXJpb25ldHRlLnN3aXRjaF90b193aW5kb3coaGFuZGxlc1swXSkK
ICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgogICAgICAgICAgICAgIyBJZ25vcmUgZXJy
b3JzIGR1cmluZyB0ZWFyZG93bgogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFj
ZWJhY2suZm9ybWF0X2V4YyhlKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
ZXhlY3V0b3JzZWxlbml1bS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZWxl
bml1bS5weQppbmRleCBkOWI2Nzk2OGRkZjY2ZTA0NGZjZTViOTc2YjhlOGQ2NjRjMDc2ODg5Li5k
Njc0NTAxODI3OWU3NGFmZmNlMTQ5M2RhM2NiYjliMDFmODI4ZmIwIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5pdW0ucHkKKysrIGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9leGVjdXRvcnNlbGVuaXVtLnB5CkBAIC0yLDYgKzIsNyBAQCBpbXBvcnQganNv
bgogaW1wb3J0IG9zCiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgdGhyZWFkaW5nCitpbXBvcnQgdGlt
ZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHVybHBhcnNlCiBpbXBvcnQgdXVpZApAQCAtMTAs
NyArMTEsNyBAQCBmcm9tIC5iYXNlIGltcG9ydCAoQ2FsbGJhY2tIYW5kbGVyLAogICAgICAgICAg
ICAgICAgICAgIFJlZlRlc3RFeGVjdXRvciwKICAgICAgICAgICAgICAgICAgICBSZWZUZXN0SW1w
bGVtZW50YXRpb24sCiAgICAgICAgICAgICAgICAgICAgVGVzdGhhcm5lc3NFeGVjdXRvciwKLSAg
ICAgICAgICAgICAgICAgICBleHRyYV90aW1lb3V0LAorICAgICAgICAgICAgICAgICAgIFRpbWVk
UnVubmVyLAogICAgICAgICAgICAgICAgICAgIHN0cmlwX3NlcnZlcikKIGZyb20gLnByb3RvY29s
IGltcG9ydCAoQmFzZVByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgVGVzdGhh
cm5lc3NQcm90b2NvbFBhcnQsCkBAIC0xOCw2ICsxOSw3IEBAIGZyb20gLnByb3RvY29sIGltcG9y
dCAoQmFzZVByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgICAgICAgU2VsZWN0b3JQcm90
b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAgICAgIENsaWNrUHJvdG9jb2xQYXJ0LAogICAg
ICAgICAgICAgICAgICAgICAgICBTZW5kS2V5c1Byb3RvY29sUGFydCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgQWN0aW9uU2VxdWVuY2VQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICAg
ICAgIFRlc3REcml2ZXJQcm90b2NvbFBhcnQpCiBmcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3Rv
cAogCkBAIC0yNiwyMyArMjgsMjYgQEAgaGVyZSA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0
KF9fZmlsZV9fKVswXSkKIHdlYmRyaXZlciA9IE5vbmUKIGV4Y2VwdGlvbnMgPSBOb25lCiBSZW1v
dGVDb25uZWN0aW9uID0gTm9uZQorQ29tbWFuZCA9IE5vbmUKIAogCiBkZWYgZG9fZGVsYXllZF9p
bXBvcnRzKCk6CiAgICAgZ2xvYmFsIHdlYmRyaXZlcgogICAgIGdsb2JhbCBleGNlcHRpb25zCiAg
ICAgZ2xvYmFsIFJlbW90ZUNvbm5lY3Rpb24KKyAgICBnbG9iYWwgQ29tbWFuZAogICAgIGZyb20g
c2VsZW5pdW0gaW1wb3J0IHdlYmRyaXZlcgogICAgIGZyb20gc2VsZW5pdW0uY29tbW9uIGltcG9y
dCBleGNlcHRpb25zCiAgICAgZnJvbSBzZWxlbml1bS53ZWJkcml2ZXIucmVtb3RlLnJlbW90ZV9j
b25uZWN0aW9uIGltcG9ydCBSZW1vdGVDb25uZWN0aW9uCisgICAgZnJvbSBzZWxlbml1bS53ZWJk
cml2ZXIucmVtb3RlLmNvbW1hbmQgaW1wb3J0IENvbW1hbmQKIAogCiBjbGFzcyBTZWxlbml1bUJh
c2VQcm90b2NvbFBhcnQoQmFzZVByb3RvY29sUGFydCk6CiAgICAgZGVmIHNldHVwKHNlbGYpOgog
ICAgICAgICBzZWxmLndlYmRyaXZlciA9IHNlbGYucGFyZW50LndlYmRyaXZlcgogCi0gICAgZGVm
IGV4ZWN1dGVfc2NyaXB0KHNlbGYsIHNjcmlwdCwgYXN5bmM9RmFsc2UpOgotICAgICAgICBtZXRo
b2QgPSBzZWxmLndlYmRyaXZlci5leGVjdXRlX2FzeW5jX3NjcmlwdCBpZiBhc3luYyBlbHNlIHNl
bGYud2ViZHJpdmVyLmV4ZWN1dGVfc2NyaXB0CisgICAgZGVmIGV4ZWN1dGVfc2NyaXB0KHNlbGYs
IHNjcmlwdCwgYXN5bmNocm9ub3VzPUZhbHNlKToKKyAgICAgICAgbWV0aG9kID0gc2VsZi53ZWJk
cml2ZXIuZXhlY3V0ZV9hc3luY19zY3JpcHQgaWYgYXN5bmNocm9ub3VzIGVsc2Ugc2VsZi53ZWJk
cml2ZXIuZXhlY3V0ZV9zY3JpcHQKICAgICAgICAgcmV0dXJuIG1ldGhvZChzY3JpcHQpCiAKICAg
ICBkZWYgc2V0X3RpbWVvdXQoc2VsZiwgdGltZW91dCk6CkBAIC03Miw1MCArNzcsNjkgQEAgY2xh
c3MgU2VsZW5pdW1CYXNlUHJvdG9jb2xQYXJ0KEJhc2VQcm90b2NvbFBhcnQpOgogY2xhc3MgU2Vs
ZW5pdW1UZXN0aGFybmVzc1Byb3RvY29sUGFydChUZXN0aGFybmVzc1Byb3RvY29sUGFydCk6CiAg
ICAgZGVmIHNldHVwKHNlbGYpOgogICAgICAgICBzZWxmLndlYmRyaXZlciA9IHNlbGYucGFyZW50
LndlYmRyaXZlcgorICAgICAgICBzZWxmLnJ1bm5lcl9oYW5kbGUgPSBOb25lCisgICAgICAgIHdp
dGggb3Blbihvcy5wYXRoLmpvaW4oaGVyZSwgInJ1bm5lci5qcyIpKSBhcyBmOgorICAgICAgICAg
ICAgc2VsZi5ydW5uZXJfc2NyaXB0ID0gZi5yZWFkKCkKIAogICAgIGRlZiBsb2FkX3J1bm5lcihz
ZWxmLCB1cmxfcHJvdG9jb2wpOgorICAgICAgICBpZiBzZWxmLnJ1bm5lcl9oYW5kbGU6CisgICAg
ICAgICAgICBzZWxmLndlYmRyaXZlci5zd2l0Y2hfdG9fd2luZG93KHNlbGYucnVubmVyX2hhbmRs
ZSkKICAgICAgICAgdXJsID0gdXJscGFyc2UudXJsam9pbihzZWxmLnBhcmVudC5leGVjdXRvci5z
ZXJ2ZXJfdXJsKHVybF9wcm90b2NvbCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ii90ZXN0aGFybmVzc19ydW5uZXIuaHRtbCIpCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJM
b2FkaW5nICVzIiAlIHVybCkKICAgICAgICAgc2VsZi53ZWJkcml2ZXIuZ2V0KHVybCkKLSAgICAg
ICAgc2VsZi53ZWJkcml2ZXIuZXhlY3V0ZV9zY3JpcHQoImRvY3VtZW50LnRpdGxlID0gJyVzJyIg
JQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJlYWRpbmcuY3VycmVu
dF90aHJlYWQoKS5uYW1lLnJlcGxhY2UoIiciLCAnIicpKQorICAgICAgICBzZWxmLnJ1bm5lcl9o
YW5kbGUgPSBzZWxmLndlYmRyaXZlci5jdXJyZW50X3dpbmRvd19oYW5kbGUKKyAgICAgICAgZm9y
bWF0X21hcCA9IHsidGl0bGUiOiB0aHJlYWRpbmcuY3VycmVudF90aHJlYWQoKS5uYW1lLnJlcGxh
Y2UoIiciLCAnIicpfQorICAgICAgICBzZWxmLnBhcmVudC5iYXNlLmV4ZWN1dGVfc2NyaXB0KHNl
bGYucnVubmVyX3NjcmlwdCAlIGZvcm1hdF9tYXApCiAKICAgICBkZWYgY2xvc2Vfb2xkX3dpbmRv
d3Moc2VsZik6Ci0gICAgICAgIGV4Y2x1ZGUgPSBzZWxmLndlYmRyaXZlci5jdXJyZW50X3dpbmRv
d19oYW5kbGUKLSAgICAgICAgaGFuZGxlcyA9IFtpdGVtIGZvciBpdGVtIGluIHNlbGYud2ViZHJp
dmVyLndpbmRvd19oYW5kbGVzIGlmIGl0ZW0gIT0gZXhjbHVkZV0KKyAgICAgICAgaGFuZGxlcyA9
IFtpdGVtIGZvciBpdGVtIGluIHNlbGYud2ViZHJpdmVyLndpbmRvd19oYW5kbGVzIGlmIGl0ZW0g
IT0gc2VsZi5ydW5uZXJfaGFuZGxlXQogICAgICAgICBmb3IgaGFuZGxlIGluIGhhbmRsZXM6CiAg
ICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIuc3dpdGNoX3Rv
X3dpbmRvdyhoYW5kbGUpCiAgICAgICAgICAgICAgICAgc2VsZi53ZWJkcml2ZXIuY2xvc2UoKQog
ICAgICAgICAgICAgZXhjZXB0IGV4Y2VwdGlvbnMuTm9TdWNoV2luZG93RXhjZXB0aW9uOgogICAg
ICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgc2VsZi53ZWJkcml2ZXIuc3dpdGNoX3RvX3dpbmRv
dyhleGNsdWRlKQotICAgICAgICByZXR1cm4gZXhjbHVkZQotCi0gICAgZGVmIGdldF90ZXN0X3dp
bmRvdyhzZWxmLCB3aW5kb3dfaWQsIHBhcmVudCk6CisgICAgICAgIHNlbGYud2ViZHJpdmVyLnN3
aXRjaF90b193aW5kb3coc2VsZi5ydW5uZXJfaGFuZGxlKQorICAgICAgICByZXR1cm4gc2VsZi5y
dW5uZXJfaGFuZGxlCisKKyAgICBkZWYgZ2V0X3Rlc3Rfd2luZG93KHNlbGYsIHdpbmRvd19pZCwg
cGFyZW50LCB0aW1lb3V0PTUpOgorICAgICAgICAiIiJGaW5kIHRoZSB0ZXN0IHdpbmRvdyBhbW9u
Z3N0IGFsbCB0aGUgb3BlbiB3aW5kb3dzLgorICAgICAgICBUaGlzIGlzIGFzc3VtZWQgdG8gYmUg
ZWl0aGVyIHRoZSBuYW1lZCB3aW5kb3cgb3IgdGhlIG9uZSBhZnRlciB0aGUgcGFyZW50IGluIHRo
ZSBsaXN0IG9mCisgICAgICAgIHdpbmRvdyBoYW5kbGVzCisKKyAgICAgICAgOnBhcmFtIHdpbmRv
d19pZDogVGhlIERPTSBuYW1lIG9mIHRoZSBXaW5kb3cKKyAgICAgICAgOnBhcmFtIHBhcmVudDog
VGhlIGhhbmRsZSBvZiB0aGUgcnVubmVyIHdpbmRvdworICAgICAgICA6cGFyYW0gdGltZW91dDog
VGhlIHRpbWUgaW4gc2Vjb25kcyB0byB3YWl0IGZvciB0aGUgd2luZG93IHRvIGFwcGVhci4gVGhp
cyBpcyBiZWNhdXNlIGluCisgICAgICAgICAgICAgICAgICAgICAgICBzb21lIGltcGxlbWVudGF0
aW9ucyB0aGVyZSdzIGEgcmFjZSBiZXR3ZWVuIGNhbGxpbmcgd2luZG93Lm9wZW4gYW5kIHRoZQor
ICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93IGJlaW5nIGFkZGVkIHRvIHRoZSBsaXN0IG9m
IFdlYkRyaXZlciBhY2Nlc3NpYmxlIHdpbmRvd3MuIiIiCiAgICAgICAgIHRlc3Rfd2luZG93ID0g
Tm9uZQotICAgICAgICBpZiB3aW5kb3dfaWQ6CisgICAgICAgIGVuZF90aW1lID0gdGltZS50aW1l
KCkgKyB0aW1lb3V0CisgICAgICAgIHdoaWxlIHRpbWUudGltZSgpIDwgZW5kX3RpbWU6CiAgICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgIyBUcnkgdGhpcywgaXQncyBpbiBMZXZlbCAx
IGJ1dCBub3RoaW5nIHN1cHBvcnRzIGl0IHlldAotICAgICAgICAgICAgICAgIHdpbl9zID0gc2Vs
Zi53ZWJkcml2ZXIuZXhlY3V0ZV9zY3JpcHQoInJldHVybiB3aW5kb3dbJyVzJ107IiAlIHNlbGYu
d2luZG93X2lkKQorICAgICAgICAgICAgICAgICMgVHJ5IHVzaW5nIHRoZSBKU09OIHNlcmlhbGl6
YXRpb24gb2YgdGhlIFdpbmRvd1Byb3h5IG9iamVjdCwKKyAgICAgICAgICAgICAgICAjIGl0J3Mg
aW4gTGV2ZWwgMSBidXQgbm90aGluZyBzdXBwb3J0cyBpdCB5ZXQKKyAgICAgICAgICAgICAgICB3
aW5fcyA9IHNlbGYud2ViZHJpdmVyLmV4ZWN1dGVfc2NyaXB0KCJyZXR1cm4gd2luZG93Wyclcydd
OyIgJSB3aW5kb3dfaWQpCiAgICAgICAgICAgICAgICAgd2luX29iaiA9IGpzb24ubG9hZHMod2lu
X3MpCiAgICAgICAgICAgICAgICAgdGVzdF93aW5kb3cgPSB3aW5fb2JqWyJ3aW5kb3ctZmNjNi0x
MWU1LWI0ZjgtMzMwYTg4YWI5ZDdmIl0KICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAg
ICAgICAgICAgICAgICAgcGFzcwogCi0gICAgICAgIGlmIHRlc3Rfd2luZG93IGlzIE5vbmU6Ci0g
ICAgICAgICAgICBhZnRlciA9IHNlbGYud2ViZHJpdmVyLndpbmRvd19oYW5kbGVzCi0gICAgICAg
ICAgICBpZiBsZW4oYWZ0ZXIpID09IDI6Ci0gICAgICAgICAgICAgICAgdGVzdF93aW5kb3cgPSBu
ZXh0KGl0ZXIoc2V0KGFmdGVyKSAtIHNldChbcGFyZW50XSkpKQotICAgICAgICAgICAgZWxpZiBh
ZnRlclswXSA9PSBwYXJlbnQgYW5kIGxlbihhZnRlcikgPiAyOgotICAgICAgICAgICAgICAgICMg
SG9wZSB0aGUgZmlyc3Qgb25lIGhlcmUgaXMgdGhlIHRlc3Qgd2luZG93Ci0gICAgICAgICAgICAg
ICAgdGVzdF93aW5kb3cgPSBhZnRlclsxXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAg
ICAgICByYWlzZSBFeGNlcHRpb24oInVuYWJsZSB0byBmaW5kIHRlc3Qgd2luZG93IikKKyAgICAg
ICAgICAgIGlmIHRlc3Rfd2luZG93IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYWZ0ZXIgPSBz
ZWxmLndlYmRyaXZlci53aW5kb3dfaGFuZGxlcworICAgICAgICAgICAgICAgIGlmIGxlbihhZnRl
cikgPT0gMjoKKyAgICAgICAgICAgICAgICAgICAgdGVzdF93aW5kb3cgPSBuZXh0KGl0ZXIoc2V0
KGFmdGVyKSAtIHtwYXJlbnR9KSkKKyAgICAgICAgICAgICAgICBlbGlmIGFmdGVyWzBdID09IHBh
cmVudCBhbmQgbGVuKGFmdGVyKSA+IDI6CisgICAgICAgICAgICAgICAgICAgICMgSG9wZSB0aGUg
Zmlyc3Qgb25lIGhlcmUgaXMgdGhlIHRlc3Qgd2luZG93CisgICAgICAgICAgICAgICAgICAgIHRl
c3Rfd2luZG93ID0gYWZ0ZXJbMV0KKworICAgICAgICAgICAgaWYgdGVzdF93aW5kb3cgaXMgbm90
IE5vbmU6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHRlc3Rfd2luZG93ICE9IHBhcmVudAorICAg
ICAgICAgICAgICAgIHJldHVybiB0ZXN0X3dpbmRvdworCisgICAgICAgICAgICB0aW1lLnNsZWVw
KDAuMSkKIAotICAgICAgICBhc3NlcnQgdGVzdF93aW5kb3cgIT0gcGFyZW50Ci0gICAgICAgIHJl
dHVybiB0ZXN0X3dpbmRvdworICAgICAgICByYWlzZSBFeGNlcHRpb24oInVuYWJsZSB0byBmaW5k
IHRlc3Qgd2luZG93IikKIAogCiBjbGFzcyBTZWxlbml1bVNlbGVjdG9yUHJvdG9jb2xQYXJ0KFNl
bGVjdG9yUHJvdG9jb2xQYXJ0KToKQEAgLTEyNSw2ICsxNDksOSBAQCBjbGFzcyBTZWxlbml1bVNl
bGVjdG9yUHJvdG9jb2xQYXJ0KFNlbGVjdG9yUHJvdG9jb2xQYXJ0KToKICAgICBkZWYgZWxlbWVu
dHNfYnlfc2VsZWN0b3Ioc2VsZiwgc2VsZWN0b3IpOgogICAgICAgICByZXR1cm4gc2VsZi53ZWJk
cml2ZXIuZmluZF9lbGVtZW50c19ieV9jc3Nfc2VsZWN0b3Ioc2VsZWN0b3IpCiAKKyAgICBkZWYg
ZWxlbWVudHNfYnlfc2VsZWN0b3JfYW5kX2ZyYW1lKHNlbGYsIGVsZW1lbnRfc2VsZWN0b3IsIGZy
YW1lKToKKyAgICAgICAgcmV0dXJuIHNlbGYud2ViZHJpdmVyLmZpbmRfZWxlbWVudHNfYnlfY3Nz
X3NlbGVjdG9yKGVsZW1lbnRfc2VsZWN0b3IpCisKIAogY2xhc3MgU2VsZW5pdW1DbGlja1Byb3Rv
Y29sUGFydChDbGlja1Byb3RvY29sUGFydCk6CiAgICAgZGVmIHNldHVwKHNlbGYpOgpAQCAtMTMz
LDYgKzE2MCw3IEBAIGNsYXNzIFNlbGVuaXVtQ2xpY2tQcm90b2NvbFBhcnQoQ2xpY2tQcm90b2Nv
bFBhcnQpOgogICAgIGRlZiBlbGVtZW50KHNlbGYsIGVsZW1lbnQpOgogICAgICAgICByZXR1cm4g
ZWxlbWVudC5jbGljaygpCiAKKwogY2xhc3MgU2VsZW5pdW1TZW5kS2V5c1Byb3RvY29sUGFydChT
ZW5kS2V5c1Byb3RvY29sUGFydCk6CiAgICAgZGVmIHNldHVwKHNlbGYpOgogICAgICAgICBzZWxm
LndlYmRyaXZlciA9IHNlbGYucGFyZW50LndlYmRyaXZlcgpAQCAtMTQxLDYgKzE2OSwxNCBAQCBj
bGFzcyBTZWxlbml1bVNlbmRLZXlzUHJvdG9jb2xQYXJ0KFNlbmRLZXlzUHJvdG9jb2xQYXJ0KToK
ICAgICAgICAgcmV0dXJuIGVsZW1lbnQuc2VuZF9rZXlzKGtleXMpCiAKIAorY2xhc3MgU2VsZW5p
dW1BY3Rpb25TZXF1ZW5jZVByb3RvY29sUGFydChBY3Rpb25TZXF1ZW5jZVByb3RvY29sUGFydCk6
CisgICAgZGVmIHNldHVwKHNlbGYpOgorICAgICAgICBzZWxmLndlYmRyaXZlciA9IHNlbGYucGFy
ZW50LndlYmRyaXZlcgorCisgICAgZGVmIHNlbmRfYWN0aW9ucyhzZWxmLCBhY3Rpb25zKToKKyAg
ICAgICAgc2VsZi53ZWJkcml2ZXIuZXhlY3V0ZShDb21tYW5kLlczQ19BQ1RJT05TLCB7ImFjdGlv
bnMiOiBhY3Rpb25zfSkKKworCiBjbGFzcyBTZWxlbml1bVRlc3REcml2ZXJQcm90b2NvbFBhcnQo
VGVzdERyaXZlclByb3RvY29sUGFydCk6CiAgICAgZGVmIHNldHVwKHNlbGYpOgogICAgICAgICBz
ZWxmLndlYmRyaXZlciA9IHNlbGYucGFyZW50LndlYmRyaXZlcgpAQCAtMTYxLDcgKzE5Nyw4IEBA
IGNsYXNzIFNlbGVuaXVtUHJvdG9jb2woUHJvdG9jb2wpOgogICAgICAgICAgICAgICAgICAgU2Vs
ZW5pdW1TZWxlY3RvclByb3RvY29sUGFydCwKICAgICAgICAgICAgICAgICAgIFNlbGVuaXVtQ2xp
Y2tQcm90b2NvbFBhcnQsCiAgICAgICAgICAgICAgICAgICBTZWxlbml1bVNlbmRLZXlzUHJvdG9j
b2xQYXJ0LAotICAgICAgICAgICAgICAgICAgU2VsZW5pdW1UZXN0RHJpdmVyUHJvdG9jb2xQYXJ0
XQorICAgICAgICAgICAgICAgICAgU2VsZW5pdW1UZXN0RHJpdmVyUHJvdG9jb2xQYXJ0LAorICAg
ICAgICAgICAgICAgICAgU2VsZW5pdW1BY3Rpb25TZXF1ZW5jZVByb3RvY29sUGFydF0KIAogICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBleGVjdXRvciwgYnJvd3NlciwgY2FwYWJpbGl0aWVzLCAqKmt3
YXJncyk6CiAgICAgICAgIGRvX2RlbGF5ZWRfaW1wb3J0cygpCkBAIC0xNzksOSArMjE2LDYgQEAg
Y2xhc3MgU2VsZW5pdW1Qcm90b2NvbChQcm90b2NvbCk6CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVz
b2x2ZV9pcD1GYWxzZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkZXNpcmVkX2NhcGFiaWxpdGllcz1zZWxmLmNhcGFiaWxpdGllcykKIAotICAgIGRlZiBhZnRl
cl9jb25lY3Qoc2VsZik6Ci0gICAgICAgIHBhc3MKLQogICAgIGRlZiB0ZWFyZG93bihzZWxmKToK
ICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkhhbmdpbmcgdXAgb24gU2VsZW5pdW0gc2Vzc2lv
biIpCiAgICAgICAgIHRyeToKQEAgLTIwMywzNSArMjM3LDE3IEBAIGNsYXNzIFNlbGVuaXVtUHJv
dG9jb2woUHJvdG9jb2wpOgogICAgICAgICBzZWxmLnRlc3RoYXJuZXNzLmxvYWRfcnVubmVyKHNl
bGYuZXhlY3V0b3IubGFzdF9lbnZpcm9ubWVudFsicHJvdG9jb2wiXSkKIAogCi1jbGFzcyBTZWxl
bml1bVJ1bihvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCBwcm90b2NvbCwg
dXJsLCB0aW1lb3V0KToKLSAgICAgICAgc2VsZi5mdW5jID0gZnVuYwotICAgICAgICBzZWxmLnJl
c3VsdCA9IE5vbmUKLSAgICAgICAgc2VsZi5wcm90b2NvbCA9IHByb3RvY29sCi0gICAgICAgIHNl
bGYudXJsID0gdXJsCi0gICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKLSAgICAgICAgc2Vs
Zi5yZXN1bHRfZmxhZyA9IHRocmVhZGluZy5FdmVudCgpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgor
Y2xhc3MgU2VsZW5pdW1SdW4oVGltZWRSdW5uZXIpOgorICAgIGRlZiBzZXRfdGltZW91dChzZWxm
KToKICAgICAgICAgdGltZW91dCA9IHNlbGYudGltZW91dAogCiAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgIHNlbGYucHJvdG9jb2wuYmFzZS5zZXRfdGltZW91dCgodGltZW91dCArIGV4dHJhX3Rp
bWVvdXQpKQorICAgICAgICAgICAgc2VsZi5wcm90b2NvbC5iYXNlLnNldF90aW1lb3V0KHRpbWVv
dXQgKyBzZWxmLmV4dHJhX3RpbWVvdXQpCiAgICAgICAgIGV4Y2VwdCBleGNlcHRpb25zLkVycm9y
SW5SZXNwb25zZUV4Y2VwdGlvbjoKICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJMb3N0
IFdlYkRyaXZlciBjb25uZWN0aW9uIikKICAgICAgICAgICAgIHJldHVybiBTdG9wCiAKLSAgICAg
ICAgZXhlY3V0b3IgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZWxmLl9ydW4pCi0gICAgICAg
IGV4ZWN1dG9yLnN0YXJ0KCkKLQotICAgICAgICBmbGFnID0gc2VsZi5yZXN1bHRfZmxhZy53YWl0
KHRpbWVvdXQgKyAyICogZXh0cmFfdGltZW91dCkKLSAgICAgICAgaWYgc2VsZi5yZXN1bHQgaXMg
Tm9uZToKLSAgICAgICAgICAgIGFzc2VydCBub3QgZmxhZwotICAgICAgICAgICAgc2VsZi5yZXN1
bHQgPSBGYWxzZSwgKCJFWFRFUk5BTC1USU1FT1VUIiwgTm9uZSkKLQotICAgICAgICByZXR1cm4g
c2VsZi5yZXN1bHQKLQotICAgIGRlZiBfcnVuKHNlbGYpOgorICAgIGRlZiBydW5fZnVuYyhzZWxm
KToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBUcnVlLCBzZWxmLmZ1
bmMoc2VsZi5wcm90b2NvbCwgc2VsZi51cmwsIHNlbGYudGltZW91dCkKICAgICAgICAgZXhjZXB0
IGV4Y2VwdGlvbnMuVGltZW91dEV4Y2VwdGlvbjoKQEAgLTIzOSwxMSArMjU1LDExIEBAIGNsYXNz
IFNlbGVuaXVtUnVuKG9iamVjdCk6CiAgICAgICAgIGV4Y2VwdCAoc29ja2V0LnRpbWVvdXQsIGV4
Y2VwdGlvbnMuRXJyb3JJblJlc3BvbnNlRXhjZXB0aW9uKToKICAgICAgICAgICAgIHNlbGYucmVz
dWx0ID0gRmFsc2UsICgiQ1JBU0giLCBOb25lKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFz
IGU6Ci0gICAgICAgICAgICBtZXNzYWdlID0gZ2V0YXR0cihlLCAibWVzc2FnZSIsICIiKQorICAg
ICAgICAgICAgbWVzc2FnZSA9IHN0cihnZXRhdHRyKGUsICJtZXNzYWdlIiwgIiIpKQogICAgICAg
ICAgICAgaWYgbWVzc2FnZToKICAgICAgICAgICAgICAgICBtZXNzYWdlICs9ICJcbiIKICAgICAg
ICAgICAgIG1lc3NhZ2UgKz0gdHJhY2ViYWNrLmZvcm1hdF9leGMoZSkKLSAgICAgICAgICAgIHNl
bGYucmVzdWx0ID0gRmFsc2UsICgiSU5URVJOQUwtRVJST1IiLCBlKQorICAgICAgICAgICAgc2Vs
Zi5yZXN1bHQgPSBGYWxzZSwgKCJJTlRFUk5BTC1FUlJPUiIsIG1lc3NhZ2UpCiAgICAgICAgIGZp
bmFsbHk6CiAgICAgICAgICAgICBzZWxmLnJlc3VsdF9mbGFnLnNldCgpCiAKQEAgLTI1OSw4ICsy
NzUsNiBAQCBjbGFzcyBTZWxlbml1bVRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVj
dXRvcik6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dF9tdWx0
aXBsaWVyPXRpbWVvdXRfbXVsdGlwbGllciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBkZWJ1Z19pbmZvPWRlYnVnX2luZm8pCiAgICAgICAgIHNlbGYucHJvdG9jb2wgPSBT
ZWxlbml1bVByb3RvY29sKHNlbGYsIGJyb3dzZXIsIGNhcGFiaWxpdGllcykKLSAgICAgICAgd2l0
aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAidGVzdGhhcm5lc3Nfd2ViZHJpdmVyLmpzIikpIGFz
IGY6Ci0gICAgICAgICAgICBzZWxmLnNjcmlwdCA9IGYucmVhZCgpCiAgICAgICAgIHdpdGggb3Bl
bihvcy5wYXRoLmpvaW4oaGVyZSwgInRlc3RoYXJuZXNzX3dlYmRyaXZlcl9yZXN1bWUuanMiKSkg
YXMgZjoKICAgICAgICAgICAgIHNlbGYuc2NyaXB0X3Jlc3VtZSA9IGYucmVhZCgpCiAgICAgICAg
IHNlbGYuY2xvc2VfYWZ0ZXJfZG9uZSA9IGNsb3NlX2FmdGVyX2RvbmUKQEAgLTI3NiwxMCArMjkw
LDEyIEBAIGNsYXNzIFNlbGVuaXVtVGVzdGhhcm5lc3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1
dG9yKToKICAgICBkZWYgZG9fdGVzdChzZWxmLCB0ZXN0KToKICAgICAgICAgdXJsID0gc2VsZi50
ZXN0X3VybCh0ZXN0KQogCi0gICAgICAgIHN1Y2Nlc3MsIGRhdGEgPSBTZWxlbml1bVJ1bihzZWxm
LmRvX3Rlc3RoYXJuZXNzLAorICAgICAgICBzdWNjZXNzLCBkYXRhID0gU2VsZW5pdW1SdW4oc2Vs
Zi5sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmRvX3Rl
c3RoYXJuZXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm90
b2NvbCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QudGltZW91dCAqIHNlbGYudGltZW91dF9t
dWx0aXBsaWVyKS5ydW4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxpZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzZWxmLmV4dHJhX3RpbWVvdXQpLnJ1bigpCiAKICAgICAgICAgaWYg
c3VjY2VzczoKICAgICAgICAgICAgIHJldHVybiBzZWxmLmNvbnZlcnRfcmVzdWx0KHRlc3QsIGRh
dGEpCkBAIC0yODcsMjEgKzMwMywxOSBAQCBjbGFzcyBTZWxlbml1bVRlc3RoYXJuZXNzRXhlY3V0
b3IoVGVzdGhhcm5lc3NFeGVjdXRvcik6CiAgICAgICAgIHJldHVybiAodGVzdC5yZXN1bHRfY2xz
KCpkYXRhKSwgW10pCiAKICAgICBkZWYgZG9fdGVzdGhhcm5lc3Moc2VsZiwgcHJvdG9jb2wsIHVy
bCwgdGltZW91dCk6Ci0gICAgICAgIGZvcm1hdF9tYXAgPSB7ImFic191cmwiOiB1cmwsCi0gICAg
ICAgICAgICAgICAgICAgICAgInVybCI6IHN0cmlwX3NlcnZlcih1cmwpLAotICAgICAgICAgICAg
ICAgICAgICAgICJ3aW5kb3dfaWQiOiBzZWxmLndpbmRvd19pZCwKLSAgICAgICAgICAgICAgICAg
ICAgICAidGltZW91dF9tdWx0aXBsaWVyIjogc2VsZi50aW1lb3V0X211bHRpcGxpZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgInRpbWVvdXQiOiB0aW1lb3V0ICogMTAwMH0KKyAgICAgICAgZm9y
bWF0X21hcCA9IHsidXJsIjogc3RyaXBfc2VydmVyKHVybCl9CiAKICAgICAgICAgcGFyZW50X3dp
bmRvdyA9IHByb3RvY29sLnRlc3RoYXJuZXNzLmNsb3NlX29sZF93aW5kb3dzKCkKICAgICAgICAg
IyBOb3cgc3RhcnQgdGhlIHRlc3QgaGFybmVzcwotICAgICAgICBwcm90b2NvbC5iYXNlLmV4ZWN1
dGVfc2NyaXB0KHNlbGYuc2NyaXB0ICUgZm9ybWF0X21hcCkKLSAgICAgICAgdGVzdF93aW5kb3cg
PSBwcm90b2NvbC50ZXN0aGFybmVzcy5nZXRfdGVzdF93aW5kb3cod2ViZHJpdmVyLCBwYXJlbnRf
d2luZG93KQotCisgICAgICAgIHByb3RvY29sLmJhc2UuZXhlY3V0ZV9zY3JpcHQoIndpbmRvdy5v
cGVuKCdhYm91dDpibGFuaycsICclcycsICdub29wZW5lcicpIiAlIHNlbGYud2luZG93X2lkKQor
ICAgICAgICB0ZXN0X3dpbmRvdyA9IHByb3RvY29sLnRlc3RoYXJuZXNzLmdldF90ZXN0X3dpbmRv
dyhzZWxmLndpbmRvd19pZCwgcGFyZW50X3dpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZW91dD01KnNlbGYudGltZW91
dF9tdWx0aXBsaWVyKQorICAgICAgICBzZWxmLnByb3RvY29sLmJhc2Uuc2V0X3dpbmRvdyh0ZXN0
X3dpbmRvdykKKyAgICAgICAgcHJvdG9jb2wud2ViZHJpdmVyLmdldCh1cmwpCiAgICAgICAgIGhh
bmRsZXIgPSBDYWxsYmFja0hhbmRsZXIoc2VsZi5sb2dnZXIsIHByb3RvY29sLCB0ZXN0X3dpbmRv
dykKICAgICAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgICAgIHJlc3VsdCA9IHByb3RvY29sLmJh
c2UuZXhlY3V0ZV9zY3JpcHQoCi0gICAgICAgICAgICAgICAgc2VsZi5zY3JpcHRfcmVzdW1lICUg
Zm9ybWF0X21hcCwgYXN5bmM9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLnNjcmlwdF9yZXN1
bWUgJSBmb3JtYXRfbWFwLCBhc3luY2hyb25vdXM9VHJ1ZSkKICAgICAgICAgICAgIGRvbmUsIHJ2
ID0gaGFuZGxlcihyZXN1bHQpCiAgICAgICAgICAgICBpZiBkb25lOgogICAgICAgICAgICAgICAg
IGJyZWFrCkBAIC0zMjUsMzIgKzMzOSw0MCBAQCBjbGFzcyBTZWxlbml1bVJlZlRlc3RFeGVjdXRv
cihSZWZUZXN0RXhlY3V0b3IpOgogICAgICAgICBzZWxmLmNsb3NlX2FmdGVyX2RvbmUgPSBjbG9z
ZV9hZnRlcl9kb25lCiAgICAgICAgIHNlbGYuaGFzX3dpbmRvdyA9IEZhbHNlCiAKLSAgICAgICAg
d2l0aCBvcGVuKG9zLnBhdGguam9pbihoZXJlLCAicmVmdGVzdC5qcyIpKSBhcyBmOgotICAgICAg
ICAgICAgc2VsZi5zY3JpcHQgPSBmLnJlYWQoKQogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5q
b2luKGhlcmUsICJyZWZ0ZXN0LXdhaXRfd2ViZHJpdmVyLmpzIikpIGFzIGY6CiAgICAgICAgICAg
ICBzZWxmLndhaXRfc2NyaXB0ID0gZi5yZWFkKCkKIAorICAgIGRlZiByZXNldChzZWxmKToKKyAg
ICAgICAgc2VsZi5pbXBsZW1lbnRhdGlvbi5yZXNldCgpCisKICAgICBkZWYgaXNfYWxpdmUoc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCkKIAogICAgIGRlZiBk
b190ZXN0KHNlbGYsIHRlc3QpOgogICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJUZXN0IHJlcXVp
cmVzIE9TLWxldmVsIHdpbmRvdyBmb2N1cyIpCiAKLSAgICAgICAgc2VsZi5wcm90b2NvbC53ZWJk
cml2ZXIuc2V0X3dpbmRvd19zaXplKDYwMCwgNjAwKQorICAgICAgICB3aWR0aF9vZmZzZXQsIGhl
aWdodF9vZmZzZXQgPSBzZWxmLnByb3RvY29sLndlYmRyaXZlci5leGVjdXRlX3NjcmlwdCgKKyAg
ICAgICAgICAgICIiInJldHVybiBbd2luZG93Lm91dGVyV2lkdGggLSB3aW5kb3cuaW5uZXJXaWR0
aCwKKyAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm91dGVySGVpZ2h0IC0gd2luZG93Lmlu
bmVySGVpZ2h0XTsiIiIKKyAgICAgICAgKQorICAgICAgICBzZWxmLnByb3RvY29sLndlYmRyaXZl
ci5zZXRfd2luZG93X3NpemUoMCwgMCkKKyAgICAgICAgc2VsZi5wcm90b2NvbC53ZWJkcml2ZXIu
c2V0X3dpbmRvd19wb3NpdGlvbig4MDAgKyB3aWR0aF9vZmZzZXQsIDYwMCArIGhlaWdodF9vZmZz
ZXQpCiAKICAgICAgICAgcmVzdWx0ID0gc2VsZi5pbXBsZW1lbnRhdGlvbi5ydW5fdGVzdCh0ZXN0
KQogCiAgICAgICAgIHJldHVybiBzZWxmLmNvbnZlcnRfcmVzdWx0KHRlc3QsIHJlc3VsdCkKIAog
ICAgIGRlZiBzY3JlZW5zaG90KHNlbGYsIHRlc3QsIHZpZXdwb3J0X3NpemUsIGRwaSk6Ci0gICAg
ICAgICMgaHR0cHM6Ly9naXRodWIuY29tL3czYy93cHRydW5uZXIvaXNzdWVzLzE2NgorICAgICAg
ICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0L2lzc3Vlcy83MTM1
CiAgICAgICAgIGFzc2VydCB2aWV3cG9ydF9zaXplIGlzIE5vbmUKICAgICAgICAgYXNzZXJ0IGRw
aSBpcyBOb25lCiAKLSAgICAgICAgcmV0dXJuIFNlbGVuaXVtUnVuKHNlbGYuX3NjcmVlbnNob3Qs
CisgICAgICAgIHJldHVybiBTZWxlbml1bVJ1bihzZWxmLmxvZ2dlciwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3NjcmVlbnNob3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLnByb3RvY29sLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X3Vy
bCh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QudGltZW91dCkucnVuKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QudGltZW91dCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuZXh0cmFfdGltZW91dCkucnVuKCkKIAogICAgIGRlZiBfc2NyZWVu
c2hvdChzZWxmLCBwcm90b2NvbCwgdXJsLCB0aW1lb3V0KToKICAgICAgICAgd2ViZHJpdmVyID0g
cHJvdG9jb2wud2ViZHJpdmVyCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4
ZWN1dG9yc2Vydm8ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkK
aW5kZXggY2FhOTcxNDU1NjBlYzFjMWQwZTc4ZDM4Y2RkN2E4NTdjMzk3MmQ0MC4uMzY1YTFhMDg2
NTNiMDE3NWZjNGRmNDA1MGViOWQ5YWFmOGIxZDM0YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
ZXhlY3V0b3JzZXJ2by5weQpAQCAtMSwzICsxLDQgQEAKK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQg
cHJpbnRfZnVuY3Rpb24KIGltcG9ydCBiYXNlNjQKIGltcG9ydCBqc29uCiBpbXBvcnQgb3MKQEAg
LTgsNyArOSw3IEBAIGltcG9ydCB1dWlkCiAKIGZyb20gbW96cHJvY2VzcyBpbXBvcnQgUHJvY2Vz
c0hhbmRsZXIKIAotZnJvbSBzZXJ2ZS5zZXJ2ZSBpbXBvcnQgbWFrZV9ob3N0c19maWxlCitmcm9t
IHRvb2xzLnNlcnZlLnNlcnZlIGltcG9ydCBtYWtlX2hvc3RzX2ZpbGUKIAogZnJvbSAuYmFzZSBp
bXBvcnQgKENvbm5lY3Rpb25sZXNzUHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAgUmVmVGVz
dEltcGxlbWVudGF0aW9uLApAQCAtMjMsNyArMjQsNiBAQCBmcm9tIC4ud2ViZHJpdmVyX3NlcnZl
ciBpbXBvcnQgU2Vydm9Ecml2ZXJTZXJ2ZXIKIHB5dGVzdHJ1bm5lciA9IE5vbmUKIHdlYmRyaXZl
ciA9IE5vbmUKIAotZXh0cmFfdGltZW91dCA9IDUgICMgc2Vjb25kcwogCiBkZWYgd3JpdGVfaG9z
dHNfZmlsZShjb25maWcpOgogICAgIGhvc3RzX2ZkLCBob3N0c19wYXRoID0gdGVtcGZpbGUubWtz
dGVtcCgpCkBAIC0xMjIsNyArMTIyLDcgQEAgY2xhc3MgU2Vydm9UZXN0aGFybmVzc0V4ZWN1dG9y
KFByb2Nlc3NUZXN0RXhlY3V0b3IpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnByb2Mud2Fp
dCgpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcm9j
LmtpbGwoKQotICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CisgICAgICAgIGV4Y2Vw
dDogICMgbm9xYQogICAgICAgICAgICAgc2VsZi5wcm9jLmtpbGwoKQogICAgICAgICAgICAgcmFp
c2UKIApAQCAtMTM2LDcgKzEzNiw3IEBAIGNsYXNzIFNlcnZvVGVzdGhhcm5lc3NFeGVjdXRvcihQ
cm9jZXNzVGVzdEV4ZWN1dG9yKToKICAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZsYWcuc2V0KCkK
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIHNlbGYuaW50ZXJhY3RpdmU6Ci0gICAgICAg
ICAgICAgICAgcHJpbnQgbGluZQorICAgICAgICAgICAgICAgIHByaW50KGxpbmUpCiAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KHNl
bGYucHJvYy5waWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
bGluZSwKQEAgLTE4MCw2ICsxODAsOSBAQCBjbGFzcyBTZXJ2b1JlZlRlc3RFeGVjdXRvcihQcm9j
ZXNzVGVzdEV4ZWN1dG9yKToKICAgICAgICAgc2VsZi50ZW1wZGlyID0gdGVtcGZpbGUubWtkdGVt
cCgpCiAgICAgICAgIHNlbGYuaG9zdHNfcGF0aCA9IHdyaXRlX2hvc3RzX2ZpbGUoc2VydmVyX2Nv
bmZpZykKIAorICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgc2VsZi5pbXBsZW1lbnRhdGlv
bi5yZXNldCgpCisKICAgICBkZWYgdGVhcmRvd24oc2VsZik6CiAgICAgICAgIHRyeToKICAgICAg
ICAgICAgIG9zLnVubGluayhzZWxmLmhvc3RzX3BhdGgpCkBAIC0yNjcsNyArMjcwLDcgQEAgY2xh
c3MgU2Vydm9SZWZUZXN0RXhlY3V0b3IoUHJvY2Vzc1Rlc3RFeGVjdXRvcik6CiAgICAgZGVmIG9u
X291dHB1dChzZWxmLCBsaW5lKToKICAgICAgICAgbGluZSA9IGxpbmUuZGVjb2RlKCJ1dGY4Iiwg
InJlcGxhY2UiKQogICAgICAgICBpZiBzZWxmLmludGVyYWN0aXZlOgotICAgICAgICAgICAgcHJp
bnQgbGluZQorICAgICAgICAgICAgcHJpbnQobGluZSkKICAgICAgICAgZWxzZToKICAgICAgICAg
ICAgIHNlbGYubG9nZ2VyLnByb2Nlc3Nfb3V0cHV0KHNlbGYucHJvYy5waWQsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1
dG9ycy9leGVjdXRvcnNlcnZvZHJpdmVyLnB5CmluZGV4IGQwMTVlNzdiOGM3MmI0ZjdkMWRjYzMy
ZjZkMWM1NjEzZjkwYjk1OWIuLmJkMzc3ZDBkNTk1MGNhOGQ0NjlmMTMyMGNkYzA3MmM4ZGZmMTBi
YjIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JzZXJ2b2RyaXZl
ci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9kcml2ZXIucHkK
QEAgLTEsOCArMSw2IEBACiBpbXBvcnQganNvbgogaW1wb3J0IG9zCiBpbXBvcnQgc29ja2V0Ci1p
bXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdGltZQogaW1wb3J0IHRyYWNlYmFjawogCiBmcm9tIC5i
YXNlIGltcG9ydCAoUHJvdG9jb2wsCkBAIC0xMCw2ICs4LDcgQEAgZnJvbSAuYmFzZSBpbXBvcnQg
KFByb3RvY29sLAogICAgICAgICAgICAgICAgICAgIFJlZlRlc3RFeGVjdXRvciwKICAgICAgICAg
ICAgICAgICAgICBSZWZUZXN0SW1wbGVtZW50YXRpb24sCiAgICAgICAgICAgICAgICAgICAgVGVz
dGhhcm5lc3NFeGVjdXRvciwKKyAgICAgICAgICAgICAgICAgICBUaW1lZFJ1bm5lciwKICAgICAg
ICAgICAgICAgICAgICBzdHJpcF9zZXJ2ZXIpCiBmcm9tIC4udGVzdHJ1bm5lciBpbXBvcnQgU3Rv
cAogZnJvbSAuLndlYmRyaXZlcl9zZXJ2ZXIgaW1wb3J0IHdhaXRfZm9yX3NlcnZpY2UKQEAgLTE5
LDggKzE4LDYgQEAgU2Vydm9Db21tYW5kRXh0ZW5zaW9ucyA9IE5vbmUKIAogaGVyZSA9IG9zLnBh
dGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSkKIAotZXh0cmFfdGltZW91dCA9IDUK
LQogCiBkZWYgZG9fZGVsYXllZF9pbXBvcnRzKCk6CiAgICAgZ2xvYmFsIHdlYmRyaXZlcgpAQCAt
NjcsNyArNjQsNyBAQCBkZWYgcGFyc2VfcHJlZl92YWx1ZSh2YWx1ZSk6CiAKIAogY2xhc3MgU2Vy
dm9CYXNlUHJvdG9jb2xQYXJ0KEJhc2VQcm90b2NvbFBhcnQpOgotICAgIGRlZiBleGVjdXRlX3Nj
cmlwdChzZWxmLCBzY3JpcHQsIGFzeW5jPUZhbHNlKToKKyAgICBkZWYgZXhlY3V0ZV9zY3JpcHQo
c2VsZiwgc2NyaXB0LCBhc3luY2hyb25vdXM9RmFsc2UpOgogICAgICAgICBwYXNzCiAKICAgICBk
ZWYgc2V0X3RpbWVvdXQoc2VsZiwgdGltZW91dCk6CkBAIC0xMzEsMjkgKzEyOCwxMyBAQCBjbGFz
cyBTZXJ2b1dlYkRyaXZlclByb3RvY29sKFByb3RvY29sKToKICAgICAgICAgICAgICAgICBicmVh
awogCiAKLWNsYXNzIFNlcnZvV2ViRHJpdmVyUnVuKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIGZ1bmMsIHNlc3Npb24sIHVybCwgdGltZW91dCwgY3VycmVudF90aW1lb3V0PU5vbmUp
OgotICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCi0gICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQot
ICAgICAgICBzZWxmLnNlc3Npb24gPSBzZXNzaW9uCi0gICAgICAgIHNlbGYudXJsID0gdXJsCi0g
ICAgICAgIHNlbGYudGltZW91dCA9IHRpbWVvdXQKLSAgICAgICAgc2VsZi5yZXN1bHRfZmxhZyA9
IHRocmVhZGluZy5FdmVudCgpCi0KLSAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBleGVjdXRv
ciA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXNlbGYuX3J1bikKLSAgICAgICAgZXhlY3V0b3Iu
c3RhcnQoKQotCi0gICAgICAgIGZsYWcgPSBzZWxmLnJlc3VsdF9mbGFnLndhaXQoc2VsZi50aW1l
b3V0ICsgZXh0cmFfdGltZW91dCkKLSAgICAgICAgaWYgc2VsZi5yZXN1bHQgaXMgTm9uZToKLSAg
ICAgICAgICAgIGFzc2VydCBub3QgZmxhZwotICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBGYWxz
ZSwgKCJFWFRFUk5BTC1USU1FT1VUIiwgTm9uZSkKLQotICAgICAgICByZXR1cm4gc2VsZi5yZXN1
bHQKK2NsYXNzIFNlcnZvV2ViRHJpdmVyUnVuKFRpbWVkUnVubmVyKToKKyAgICBkZWYgc2V0X3Rp
bWVvdXQoc2VsZik6CisgICAgICAgIHBhc3MKIAotICAgIGRlZiBfcnVuKHNlbGYpOgorICAgIGRl
ZiBydW5fZnVuYyhzZWxmKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5yZXN1bHQg
PSBUcnVlLCBzZWxmLmZ1bmMoc2VsZi5zZXNzaW9uLCBzZWxmLnVybCwgc2VsZi50aW1lb3V0KQor
ICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBUcnVlLCBzZWxmLmZ1bmMoc2VsZi5wcm90b2NvbC5z
ZXNzaW9uLCBzZWxmLnVybCwgc2VsZi50aW1lb3V0KQogICAgICAgICBleGNlcHQgd2ViZHJpdmVy
LlRpbWVvdXRFeGNlcHRpb246CiAgICAgICAgICAgICBzZWxmLnJlc3VsdCA9IEZhbHNlLCAoIkVY
VEVSTkFMLVRJTUVPVVQiLCBOb25lKQogICAgICAgICBleGNlcHQgKHNvY2tldC50aW1lb3V0LCBJ
T0Vycm9yKToKQEAgLTE2OCwxNSArMTQ5LDkgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJSdW4ob2Jq
ZWN0KToKICAgICAgICAgICAgIHNlbGYucmVzdWx0X2ZsYWcuc2V0KCkKIAogCi1kZWYgdGltZW91
dF9mdW5jKHRpbWVvdXQpOgotICAgIGlmIHRpbWVvdXQ6Ci0gICAgICAgIHQwID0gdGltZS50aW1l
KCkKLSAgICAgICAgcmV0dXJuIGxhbWJkYTogdGltZS50aW1lKCkgLSB0MCA+IHRpbWVvdXQgKyBl
eHRyYV90aW1lb3V0Ci0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGxhbWJkYTogRmFsc2UKLQot
CiBjbGFzcyBTZXJ2b1dlYkRyaXZlclRlc3RoYXJuZXNzRXhlY3V0b3IoVGVzdGhhcm5lc3NFeGVj
dXRvcik6CisgICAgc3VwcG9ydHNfdGVzdGRyaXZlciA9IFRydWUKKwogICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBicm93c2VyLCBzZXJ2ZXJfY29uZmlnLCB0aW1lb3V0X211bHRpcGxpZXI9MSwKICAg
ICAgICAgICAgICAgICAgY2xvc2VfYWZ0ZXJfZG9uZT1UcnVlLCBjYXBhYmlsaXRpZXM9Tm9uZSwg
ZGVidWdfaW5mbz1Ob25lLAogICAgICAgICAgICAgICAgICAqKmt3YXJncyk6CkBAIC0xOTYsNyAr
MTcxLDcgQEAgY2xhc3MgU2Vydm9XZWJEcml2ZXJUZXN0aGFybmVzc0V4ZWN1dG9yKFRlc3RoYXJu
ZXNzRXhlY3V0b3IpOgogICAgIGRlZiBkb190ZXN0KHNlbGYsIHRlc3QpOgogICAgICAgICB1cmwg
PSBzZWxmLnRlc3RfdXJsKHRlc3QpCiAKLSAgICAgICAgdGltZW91dCA9IHRlc3QudGltZW91dCAq
IHNlbGYudGltZW91dF9tdWx0aXBsaWVyICsgZXh0cmFfdGltZW91dAorICAgICAgICB0aW1lb3V0
ID0gdGVzdC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxpZXIgKyBzZWxmLmV4dHJhX3Rp
bWVvdXQKIAogICAgICAgICBpZiB0aW1lb3V0ICE9IHNlbGYudGltZW91dDoKICAgICAgICAgICAg
IHRyeToKQEAgLTIwNiwxMCArMTgxLDEyIEBAIGNsYXNzIFNlcnZvV2ViRHJpdmVyVGVzdGhhcm5l
c3NFeGVjdXRvcihUZXN0aGFybmVzc0V4ZWN1dG9yKToKICAgICAgICAgICAgICAgICBzZWxmLmxv
Z2dlci5lcnJvcigiTG9zdCB3ZWJkcml2ZXIgY29ubmVjdGlvbiIpCiAgICAgICAgICAgICAgICAg
cmV0dXJuIFN0b3AKIAotICAgICAgICBzdWNjZXNzLCBkYXRhID0gU2Vydm9XZWJEcml2ZXJSdW4o
c2VsZi5kb190ZXN0aGFybmVzcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYucHJvdG9jb2wuc2Vzc2lvbiwKKyAgICAgICAgc3VjY2VzcywgZGF0YSA9IFNl
cnZvV2ViRHJpdmVyUnVuKHNlbGYubG9nZ2VyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc2VsZi5kb190ZXN0aGFybmVzcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHNlbGYucHJvdG9jb2wsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB1cmwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0KS5ydW4oKQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGltZW91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYuZXh0cmFfdGltZW91dCkucnVuKCkKIAogICAgICAgICBpZiBzdWNjZXNz
OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29udmVydF9yZXN1bHQodGVzdCwgZGF0YSkKQEAg
LTI1OCw2ICsyMzUsOSBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZU
ZXN0RXhlY3V0b3IpOgogICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGhlcmUsICJyZWZ0
ZXN0LXdhaXRfd2ViZHJpdmVyLmpzIikpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLndhaXRfc2Ny
aXB0ID0gZi5yZWFkKCkKIAorICAgIGRlZiByZXNldChzZWxmKToKKyAgICAgICAgc2VsZi5pbXBs
ZW1lbnRhdGlvbi5yZXNldCgpCisKICAgICBkZWYgaXNfYWxpdmUoc2VsZik6CiAgICAgICAgIHJl
dHVybiBzZWxmLnByb3RvY29sLmlzX2FsaXZlKCkKIApAQCAtMjc3LDExICsyNTcsMTEgQEAgY2xh
c3MgU2Vydm9XZWJEcml2ZXJSZWZUZXN0RXhlY3V0b3IoUmVmVGVzdEV4ZWN1dG9yKToKICAgICAg
ICAgICAgIHJldHVybiB0ZXN0LnJlc3VsdF9jbHMoIklOVEVSTkFMLUVSUk9SIiwgbWVzc2FnZSks
IFtdCiAKICAgICBkZWYgc2NyZWVuc2hvdChzZWxmLCB0ZXN0LCB2aWV3cG9ydF9zaXplLCBkcGkp
OgotICAgICAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS93M2Mvd3B0cnVubmVyL2lzc3Vlcy8xNjYK
KyAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdC9pc3N1
ZXMvNzEzNQogICAgICAgICBhc3NlcnQgdmlld3BvcnRfc2l6ZSBpcyBOb25lCiAgICAgICAgIGFz
c2VydCBkcGkgaXMgTm9uZQogCi0gICAgICAgIHRpbWVvdXQgPSAodGVzdC50aW1lb3V0ICogc2Vs
Zi50aW1lb3V0X211bHRpcGxpZXIgKyBleHRyYV90aW1lb3V0CisgICAgICAgIHRpbWVvdXQgPSAo
dGVzdC50aW1lb3V0ICogc2VsZi50aW1lb3V0X211bHRpcGxpZXIgKyBzZWxmLmV4dHJhX3RpbWVv
dXQKICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmRlYnVnX2luZm8gaXMgTm9uZSBlbHNlIE5v
bmUpCiAKICAgICAgICAgaWYgc2VsZi50aW1lb3V0ICE9IHRpbWVvdXQ6CkBAIC0yOTIsMTAgKzI3
MiwxMiBAQCBjbGFzcyBTZXJ2b1dlYkRyaXZlclJlZlRlc3RFeGVjdXRvcihSZWZUZXN0RXhlY3V0
b3IpOgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJMb3N0IHdlYmRyaXZlciBj
b25uZWN0aW9uIikKICAgICAgICAgICAgICAgICByZXR1cm4gU3RvcAogCi0gICAgICAgIHJldHVy
biBTZXJ2b1dlYkRyaXZlclJ1bihzZWxmLl9zY3JlZW5zaG90LAorICAgICAgICByZXR1cm4gU2Vy
dm9XZWJEcml2ZXJSdW4oc2VsZi5sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzZWxmLl9zY3JlZW5zaG90LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5wcm90b2NvbC5zZXNzaW9uLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi50ZXN0X3VybCh0ZXN0KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRp
bWVvdXQpLnJ1bigpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1lb3V0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRyYV90aW1lb3V0KS5ydW4o
KQogCiAgICAgZGVmIF9zY3JlZW5zaG90KHNlbGYsIHNlc3Npb24sIHVybCwgdGltZW91dCk6CiAg
ICAgICAgIHNlc3Npb24udXJsID0gdXJsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL3Byb3RvY29sLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQppbmRl
eCA3MWZjM2M5YThmNjUxOTEzZTUzMjY2ZjE4MWVmMjE2MWFjOTFjOTdlLi4wNzU4MzEyZDY1Zjkw
MDQzYjFjYmIyZjUzNmQzZDMxYzcxODEyYWQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhl
Y3V0b3JzL3Byb3RvY29sLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHJvdG9jb2wu
cHkKQEAgLTEsNCArMSw1IEBACiBpbXBvcnQgdHJhY2ViYWNrCisKIGZyb20gYWJjIGltcG9ydCBB
QkNNZXRhLCBhYnN0cmFjdG1ldGhvZAogCiAKQEAgLTU2LDExICs1Nyw4IEBAIGNsYXNzIFByb3Rv
Y29sKG9iamVjdCk6CiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBpZiBt
c2cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZyhtc2cp
Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcih0cmFjZWJhY2suZm9ybWF0X2V4YygpKQot
ICAgICAgICAgICAgc2VsZi5leGVjdXRvci5ydW5uZXIuc2VuZF9tZXNzYWdlKCJpbml0X2ZhaWxl
ZCIpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYu
ZXhlY3V0b3IucnVubmVyLnNlbmRfbWVzc2FnZSgiaW5pdF9zdWNjZWVkZWQiKQorICAgICAgICAg
ICAgc2VsZi5sb2dnZXIud2FybmluZyh0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICAg
ICAgcmFpc2UKIAogICAgIEBhYnN0cmFjdG1ldGhvZAogICAgIGRlZiBjb25uZWN0KHNlbGYpOgpA
QCAtMTExLDExICsxMDksMTEgQEAgY2xhc3MgQmFzZVByb3RvY29sUGFydChQcm90b2NvbFBhcnQp
OgogICAgIG5hbWUgPSAiYmFzZSIKIAogICAgIEBhYnN0cmFjdG1ldGhvZAotICAgIGRlZiBleGVj
dXRlX3NjcmlwdChzZWxmLCBzY3JpcHQsIGFzeW5jPUZhbHNlKToKKyAgICBkZWYgZXhlY3V0ZV9z
Y3JpcHQoc2VsZiwgc2NyaXB0LCBhc3luY2hyb25vdXM9RmFsc2UpOgogICAgICAgICAiIiJFeGVj
dXRlIGphdmFzY3JpcHQgaW4gdGhlIGN1cnJlbnQgV2luZG93LgogCiAgICAgICAgIDpwYXJhbSBz
dHIgc2NyaXB0OiBUaGUganMgc291cmNlIHRvIGV4ZWN1dGUuIFRoaXMgaXMgaW1wbGljaXRseSB3
cmFwcGVkIGluIGEgZnVuY3Rpb24uCi0gICAgICAgIDpwYXJhbSBib29sIGFzeW5jOiBXaGV0aGVy
IHRoZSBzY3JpcHQgaXMgYXN5bmNocm9ub3VzIGluIHRoZSB3ZWJkcml2ZXIKKyAgICAgICAgOnBh
cmFtIGJvb2wgYXN5bmNocm9ub3VzOiBXaGV0aGVyIHRoZSBzY3JpcHQgaXMgYXN5bmNocm9ub3Vz
IGluIHRoZSB3ZWJkcml2ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbnNlIGkuZS4g
d2hldGhlciB0aGUgcmV0dXJuIHZhbHVlIGlzIHRoZSByZXN1bHQgb2YKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZSBpbml0aWFsIGZ1bmN0aW9uIGNhbGwgb3IgaWYgaXQgd2FpdHMgZm9y
IHNvbWUgY2FsbGJhY2suCiAgICAgICAgIDpyZXR1cm5zOiBUaGUgcmVzdWx0IG9mIHRoZSBzY3Jp
cHQgZXhlY3V0aW9uLgpAQCAtMjM3LDYgKzIzNSwxNyBAQCBjbGFzcyBTZWxlY3RvclByb3RvY29s
UGFydChQcm90b2NvbFBhcnQpOgogCiAgICAgbmFtZSA9ICJzZWxlY3QiCiAKKyAgICBkZWYgZWxl
bWVudF9ieV9zZWxlY3RvcihzZWxmLCBlbGVtZW50X3NlbGVjdG9yLCBmcmFtZT0id2luZG93Iik6
CisgICAgICAgIGVsZW1lbnRzID0gc2VsZi5lbGVtZW50c19ieV9zZWxlY3Rvcl9hbmRfZnJhbWUo
ZWxlbWVudF9zZWxlY3RvciwgZnJhbWUpCisgICAgICAgIGZyYW1lX25hbWUgPSAid2luZG93Igor
ICAgICAgICBpZiAoZnJhbWUgIT0gIndpbmRvdyIpOgorICAgICAgICAgICAgZnJhbWVfbmFtZSA9
IGZyYW1lLmlkCisgICAgICAgIGlmIGxlbihlbGVtZW50cykgPT0gMDoKKyAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIlNlbGVjdG9yICclcycgaW4gZnJhbWUgJyVzJyBtYXRjaGVzIG5vIGVs
ZW1lbnRzIiAlIChlbGVtZW50X3NlbGVjdG9yLCBmcmFtZV9uYW1lKSkKKyAgICAgICAgZWxpZiBs
ZW4oZWxlbWVudHMpID4gMToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlNlbGVjdG9y
ICclcycgaW4gZnJhbWUgJyVzJyBtYXRjaGVzIG11bHRpcGxlIGVsZW1lbnRzIiAlIChlbGVtZW50
X3NlbGVjdG9yLCBmcmFtZV9uYW1lKSkKKyAgICAgICAgcmV0dXJuIGVsZW1lbnRzWzBdCisKICAg
ICBAYWJzdHJhY3RtZXRob2QKICAgICBkZWYgZWxlbWVudHNfYnlfc2VsZWN0b3Ioc2VsZiwgc2Vs
ZWN0b3IpOgogICAgICAgICAiIiJTZWxlY3QgZWxlbWVudHMgbWF0Y2hpbmcgYSBDU1Mgc2VsZWN0
b3IKQEAgLTI0NSw2ICsyNTQsMTMgQEAgY2xhc3MgU2VsZWN0b3JQcm90b2NvbFBhcnQoUHJvdG9j
b2xQYXJ0KToKICAgICAgICAgOnJldHVybnM6IEEgbGlzdCBvZiBwcm90b2NvbC1zcGVjaWZpYyBo
YW5kbGVzIHRvIGVsZW1lbnRzIiIiCiAgICAgICAgIHBhc3MKIAorICAgIEBhYnN0cmFjdG1ldGhv
ZAorICAgIGRlZiBlbGVtZW50c19ieV9zZWxlY3Rvcl9hbmRfZnJhbWUoc2VsZiwgZWxlbWVudF9z
ZWxlY3RvciwgZnJhbWUpOgorICAgICAgICAiIiJTZWxlY3QgZWxlbWVudHMgbWF0Y2hpbmcgYSBD
U1Mgc2VsZWN0b3IKKyAgICAgICAgOnBhcmFtIHN0ciBzZWxlY3RvcjogVGhlIENTUyBzZWxlY3Rv
cgorICAgICAgICA6cmV0dXJuczogQSBsaXN0IG9mIHByb3RvY29sLXNwZWNpZmljIGhhbmRsZXMg
dG8gZWxlbWVudHMiIiIKKyAgICAgICAgcGFzcworCiAKIGNsYXNzIENsaWNrUHJvdG9jb2xQYXJ0
KFByb3RvY29sUGFydCk6CiAgICAgIiIiUHJvdG9jb2wgcGFydCBmb3IgcGVyZm9ybWluZyB0cnVz
dGVkIGNsaWNrcyIiIgpAQCAtMjU5LDYgKzI3NSw3IEBAIGNsYXNzIENsaWNrUHJvdG9jb2xQYXJ0
KFByb3RvY29sUGFydCk6CiAgICAgICAgIDpwYXJhbSBlbGVtZW50OiBBIHByb3RvY29sLXNwZWNp
ZmljIGhhbmRsZSB0byBhbiBlbGVtZW50LiIiIgogICAgICAgICBwYXNzCiAKKwogY2xhc3MgU2Vu
ZEtleXNQcm90b2NvbFBhcnQoUHJvdG9jb2xQYXJ0KToKICAgICAiIiJQcm90b2NvbCBwYXJ0IGZv
ciBwZXJmb3JtaW5nIHRydXN0ZWQgY2xpY2tzIiIiCiAgICAgX19tZXRhY2xhc3NfXyA9IEFCQ01l
dGEKQEAgLTI3NCw2ICsyOTEsMzQgQEAgY2xhc3MgU2VuZEtleXNQcm90b2NvbFBhcnQoUHJvdG9j
b2xQYXJ0KToKICAgICAgICAgcGFzcwogCiAKK2NsYXNzIEdlbmVyYXRlVGVzdFJlcG9ydFByb3Rv
Y29sUGFydChQcm90b2NvbFBhcnQpOgorICAgICIiIlByb3RvY29sIHBhcnQgZm9yIGdlbmVyYXRp
bmcgdGVzdCByZXBvcnRzIiIiCisgICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKKworICAgIG5h
bWUgPSAiZ2VuZXJhdGVfdGVzdF9yZXBvcnQiCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBk
ZWYgZ2VuZXJhdGVfdGVzdF9yZXBvcnQoc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICIiIkdlbmVy
YXRlIGEgdGVzdCByZXBvcnQuCisKKyAgICAgICAgOnBhcmFtIG1lc3NhZ2U6IFRoZSBtZXNzYWdl
IHRvIGJlIGNvbnRhaW5lZCBpbiB0aGUgcmVwb3J0LiIiIgorICAgICAgICBwYXNzCisKKworY2xh
c3MgQWN0aW9uU2VxdWVuY2VQcm90b2NvbFBhcnQoUHJvdG9jb2xQYXJ0KToKKyAgICAiIiJQcm90
b2NvbCBwYXJ0IGZvciBwZXJmb3JtaW5nIHRydXN0ZWQgY2xpY2tzIiIiCisgICAgX19tZXRhY2xh
c3NfXyA9IEFCQ01ldGEKKworICAgIG5hbWUgPSAiYWN0aW9uX3NlcXVlbmNlIgorCisgICAgQGFi
c3RyYWN0bWV0aG9kCisgICAgZGVmIHNlbmRfYWN0aW9ucyhzZWxmLCBhY3Rpb25zKToKKyAgICAg
ICAgIiIiU2VuZCBhIHNlcXVlbmNlIG9mIGFjdGlvbnMgdG8gdGhlIHdpbmRvdy4KKworICAgICAg
ICA6cGFyYW0gYWN0aW9uczogQSBwcm90b2NvbC1zcGVjaWZpYyBoYW5kbGUgdG8gYW4gYXJyYXkg
b2YgYWN0aW9ucy4iIiIKKyAgICAgICAgcGFzcworCisKIGNsYXNzIFRlc3REcml2ZXJQcm90b2Nv
bFBhcnQoUHJvdG9jb2xQYXJ0KToKICAgICAiIiJQcm90b2NvbCBwYXJ0IHRoYXQgaW1wbGVtZW50
cyB0aGUgYmFzaWMgZnVuY3Rpb25hbGl0eSByZXF1aXJlZCBmb3IKICAgICBhbGwgdGVzdGRyaXZl
ci1iYXNlZCB0ZXN0cy4iIiIKQEAgLTMyMCwzICszNjUsNjIgQEAgY2xhc3MgQ292ZXJhZ2VQcm90
b2NvbFBhcnQoUHJvdG9jb2xQYXJ0KToKICAgICBkZWYgZHVtcChzZWxmKToKICAgICAgICAgIiIi
RHVtcCBjb3ZlcmFnZSBjb3VudGVycyIiIgogICAgICAgICBwYXNzCisKK2NsYXNzIFZpcnR1YWxB
dXRoZW50aWNhdG9yUHJvdG9jb2xQYXJ0KFByb3RvY29sUGFydCk6CisgICAgIiIiUHJvdG9jb2wg
cGFydCBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyB2aXJ0dWFsIGF1dGhlbnRpY2F0b3Jz
IiIiCisgICAgX19tZXRhY2xhc3NfXyA9IEFCQ01ldGEKKworICAgIG5hbWUgPSAidmlydHVhbF9h
dXRoZW50aWNhdG9yIgorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIGFkZF92aXJ0dWFs
X2F1dGhlbnRpY2F0b3Ioc2VsZiwgY29uZmlnKToKKyAgICAgICAgIiIiQWRkIGEgdmlydHVhbCBh
dXRoZW50aWNhdG9yCisKKyAgICAgICAgOnBhcmFtIGNvbmZpZzogVGhlIEF1dGhlbnRpY2F0b3Ig
Q29uZmlndXJhdGlvbiIiIgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAg
ICBkZWYgcmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvcihzZWxmLCBhdXRoZW50aWNhdG9yX2lk
KToKKyAgICAgICAgIiIiUmVtb3ZlIGEgdmlydHVhbCBhdXRoZW50aWNhdG9yCisKKyAgICAgICAg
OnBhcmFtIHN0ciBhdXRoZW50aWNhdG9yX2lkOiBUaGUgSUQgb2YgdGhlIGF1dGhlbnRpY2F0b3Ig
dG8gcmVtb3ZlIiIiCisgICAgICAgIHBhc3MKKworICAgIEBhYnN0cmFjdG1ldGhvZAorICAgIGRl
ZiBhZGRfY3JlZGVudGlhbChzZWxmLCBhdXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsKToKKyAg
ICAgICAgIiIiSW5qZWN0IGEgY3JlZGVudGlhbCBvbnRvIGFuIGF1dGhlbnRpY2F0b3IKKworICAg
ICAgICA6cGFyYW0gc3RyIGF1dGhlbnRpY2F0b3JfaWQ6IFRoZSBJRCBvZiB0aGUgYXV0aGVudGlj
YXRvciB0byBhZGQgdGhlIGNyZWRlbnRpYWwgdG8KKyAgICAgICAgOnBhcmFtIGNyZWRlbnRpYWw6
IFRoZSBjcmVkZW50aWFsIHRvIGluamVjdCIiIgorICAgICAgICBwYXNzCisKKyAgICBAYWJzdHJh
Y3RtZXRob2QKKyAgICBkZWYgZ2V0X2NyZWRlbnRpYWxzKHNlbGYsIGF1dGhlbnRpY2F0b3JfaWQp
OgorICAgICAgICAiIiJHZXQgdGhlIGNyZWRlbnRpYWxzIHN0b3JlZCBpbiBhbiBhdXRoZW50aWNh
dG9yCisKKyAgICAgICAgOnBhcmFtIHN0ciBhdXRoZW50aWNhdG9yX2lkOiBUaGUgSUQgb2YgdGhl
IGF1dGhlbnRpY2F0b3IKKyAgICAgICAgOnJldHVybnM6IEFuIGFycmF5IHdpdGggdGhlIGNyZWRl
bnRpYWxzIHN0b3JlZCBvbiB0aGUgYXV0aGVudGljYXRvciIiIgorICAgICAgICBwYXNzCisKKyAg
ICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgcmVtb3ZlX2NyZWRlbnRpYWwoc2VsZiwgYXV0aGVu
dGljYXRvcl9pZCwgY3JlZGVudGlhbF9pZCk6CisgICAgICAgICIiIlJlbW92ZSBhIGNyZWRlbnRp
YWwgc3RvcmVkIGluIGFuIGF1dGhlbnRpY2F0b3IKKworICAgICAgICA6cGFyYW0gc3RyIGF1dGhl
bnRpY2F0b3JfaWQ6IFRoZSBJRCBvZiB0aGUgYXV0aGVudGljYXRvcgorICAgICAgICA6cGFyYW0g
c3RyIGNyZWRlbnRpYWxfaWQ6IFRoZSBJRCBvZiB0aGUgY3JlZGVudGlhbCIiIgorICAgICAgICBw
YXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgcmVtb3ZlX2FsbF9jcmVkZW50aWFs
cyhzZWxmLCBhdXRoZW50aWNhdG9yX2lkKToKKyAgICAgICAgIiIiUmVtb3ZlIGFsbCB0aGUgY3Jl
ZGVudGlhbHMgc3RvcmVkIGluIGFuIGF1dGhlbnRpY2F0b3IKKworICAgICAgICA6cGFyYW0gc3Ry
IGF1dGhlbnRpY2F0b3JfaWQ6IFRoZSBJRCBvZiB0aGUgYXV0aGVudGljYXRvciIiIgorICAgICAg
ICBwYXNzCisKKyAgICBAYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgc2V0X3VzZXJfdmVyaWZpZWQo
c2VsZiwgYXV0aGVudGljYXRvcl9pZCwgdXYpOgorICAgICAgICAiIiJTZXRzIHRoZSB1c2VyIHZl
cmlmaWVkIGZsYWcgb24gYW4gYXV0aGVudGljYXRvcgorCisgICAgICAgIDpwYXJhbSBzdHIgYXV0
aGVudGljYXRvcl9pZDogVGhlIElEIG9mIHRoZSBhdXRoZW50aWNhdG9yCisgICAgICAgIDpwYXJh
bSBib29sIHV2OiB0aGUgdXNlciB2ZXJpZmllZCBmbGFnIiIiCisgICAgICAgIHBhc3MKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0ZXN0cnVubmVyL3czYy1pbXBvcnQubG9n
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvdzNjLWltcG9ydC5sb2cKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5MWRmMGEyM2M1OWM0ZTAyMzM2MWU1MDdkMTQ2
MDRjY2I1YzFiMTguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9weXRlc3RydW5uZXIvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL3B5dGVzdHJ1bm5lci9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcHl0
ZXN0cnVubmVyL3J1bm5lci5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9y
ZWZ0ZXN0LXdhaXRfbWFyaW9uZXR0ZS5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcmVmdGVz
dC13YWl0X21hcmlvbmV0dGUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxZjg5
NGY4NzYwYmM2MjNjODk1M2UwZWI3ZjBjM2UwMWQ1ZjcyZTQuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9yZWZ0ZXN0
LXdhaXRfbWFyaW9uZXR0ZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXZhciBj
YWxsYmFjayA9IGFyZ3VtZW50c1thcmd1bWVudHMubGVuZ3RoIC0gMV07Ci0KLWZ1bmN0aW9uIHRl
c3QoeCkgewotICBpZiAoIXJvb3QuY2xhc3NMaXN0LmNvbnRhaW5zKCJyZWZ0ZXN0LXdhaXQiKSkg
ewotICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLSAgICBjYWxsYmFjaygpOwotICB9Ci19Ci0K
LXZhciByb290ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50OwotdmFyIG9ic2VydmVyID0gbmV3
IE11dGF0aW9uT2JzZXJ2ZXIodGVzdCk7Ci0KLW9ic2VydmVyLm9ic2VydmUocm9vdCwge2F0dHJp
YnV0ZXM6IHRydWV9KTsKLQotaWYgKGRvY3VtZW50LnJlYWR5U3RhdGUgIT0gImNvbXBsZXRlIikg
ewotICBvbmxvYWQgPSB0ZXN0Ci19IGVsc2UgewotICB0ZXN0KCk7Ci19CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL3JlZnRlc3Qtd2FpdF93ZWJkcml2ZXIuanMgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvZXhlY3V0b3JzL3JlZnRlc3Qtd2FpdF93ZWJkcml2ZXIuanMKaW5kZXggYzFjYzY0OWUz
MjNmOTc0MjM5NmI3M2UzMDFmZjMwNjI3MWIxNjBkMy4uZjg2ZWRhY2RlZjI1MjU3ZTRlZGE5MzA0
YjIwOTM4MWEwMWQ3ZjMxMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9yZWZ0
ZXN0LXdhaXRfd2ViZHJpdmVyLmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcmVmdGVz
dC13YWl0X3dlYmRyaXZlci5qcwpAQCAtMSwyMSArMSwyMCBAQAogdmFyIGNhbGxiYWNrID0gYXJn
dW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKK3ZhciBvYnNlcnZlciA9IG51bGw7Cit2YXIg
cm9vdCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDsKIAotZnVuY3Rpb24gcm9vdF93YWl0KCkg
ewotICBpZiAoIXJvb3QuY2xhc3NMaXN0LmNvbnRhaW5zKCJyZWZ0ZXN0LXdhaXQiKSkgewotICAg
IG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKLQotICAgIGlmIChEb2N1bWVudC5wcm90b3R5cGUuaGFz
T3duUHJvcGVydHkoImZvbnRzIikpIHsKLSAgICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4o
cmVhZHlfZm9yX3NjcmVlbnNob3QpOwotICAgIH0gZWxzZSB7Ci0gICAgICAvLyBUaGlzIG1pZ2h0
IHRha2UgdGhlIHNjcmVlbnNob3QgdG9vIGVhcmx5LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUK
LSAgICAgIC8vIGxvYWQgZXZlbnQgaXMgYmxvY2tlZCBvbiBmb250cyBiZWluZyBsb2FkZWQuIFNl
ZToKLSAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS93M2MvY3Nzd2ctZHJhZnRzL2lzc3Vlcy8x
MDg4Ci0gICAgICByZWFkeV9mb3Jfc2NyZWVuc2hvdCgpOwotICAgIH0KK2Z1bmN0aW9uIHdhaXRf
bG9hZCgpIHsKKyAgaWYgKERvY3VtZW50LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSgiZm9udHMi
KSkgeworICAgIGRvY3VtZW50LmZvbnRzLnJlYWR5LnRoZW4od2FpdF9wYWludHMpOworICB9IGVs
c2UgeworICAgIC8vIFRoaXMgbWlnaHQgdGFrZSB0aGUgc2NyZWVuc2hvdCB0b28gZWFybHksIGRl
cGVuZGluZyBvbiB3aGV0aGVyIHRoZQorICAgIC8vIGxvYWQgZXZlbnQgaXMgYmxvY2tlZCBvbiBm
b250cyBiZWluZyBsb2FkZWQuIFNlZToKKyAgICAvLyBodHRwczovL2dpdGh1Yi5jb20vdzNjL2Nz
c3dnLWRyYWZ0cy9pc3N1ZXMvMTA4OAorICAgIHdhaXRfcGFpbnRzKCk7CiAgIH0KIH0KIAotZnVu
Y3Rpb24gcmVhZHlfZm9yX3NjcmVlbnNob3QoKSB7CisKK2Z1bmN0aW9uIHdhaXRfcGFpbnRzKCkg
ewogICAvLyBBcyBvZiAyMDE3LTA0LTA1LCB0aGUgQ2hyb21pdW0gd2ViIGJyb3dzZXIgZXhoaWJp
dHMgYSByZW5kZXJpbmcgYnVnCiAgIC8vIChodHRwczovL2J1Z3MuY2hyb21pdW0ub3JnL3AvY2hy
b21pdW0vaXNzdWVzL2RldGFpbD9pZD03MDg3NTcpIHRoYXQKICAgLy8gcHJvZHVjZXMgaW5zdGFi
aWxpdHkgZHVyaW5nIHNjcmVlbiBjYXB0dXJlLiBUaGUgZm9sbG93aW5nIHVzZSBvZgpAQCAtMjcs
MTggKzI2LDI5IEBAIGZ1bmN0aW9uIHJlYWR5X2Zvcl9zY3JlZW5zaG90KCkgewogCiAgIHJlcXVl
c3RBbmltYXRpb25GcmFtZShmdW5jdGlvbigpIHsKICAgICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
ZnVuY3Rpb24oKSB7Ci0gICAgICBjYWxsYmFjaygpOworICAgICAgc2NyZWVuc2hvdF9pZl9yZWFk
eSgpOwogICAgIH0pOwogICB9KTsKIH0KIAotdmFyIHJvb3QgPSBkb2N1bWVudC5kb2N1bWVudEVs
ZW1lbnQ7Ci12YXIgb2JzZXJ2ZXIgPSBuZXcgTXV0YXRpb25PYnNlcnZlcihyb290X3dhaXQpOwor
ZnVuY3Rpb24gc2NyZWVuc2hvdF9pZl9yZWFkeSgpIHsKKyAgaWYgKHJvb3QuY2xhc3NMaXN0LmNv
bnRhaW5zKCJyZWZ0ZXN0LXdhaXQiKSAmJgorICAgICAgb2JzZXJ2ZXIgPT09IG51bGwpIHsKKyAg
ICBvYnNlcnZlciA9IG5ldyBNdXRhdGlvbk9ic2VydmVyKHdhaXRfcGFpbnRzKTsKKyAgICBvYnNl
cnZlci5vYnNlcnZlKHJvb3QsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CisgICAgdmFyIGV2ZW50ID0g
bmV3IEV2ZW50KCJUZXN0UmVuZGVyZWQiLCB7YnViYmxlczogdHJ1ZX0pOworICAgIHJvb3QuZGlz
cGF0Y2hFdmVudChldmVudCk7CisgICAgcmV0dXJuOworICB9CisgIGlmIChvYnNlcnZlciAhPT0g
bnVsbCkgeworICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTsKKyAgfQorICBjYWxsYmFjaygpOwor
fQogCi1vYnNlcnZlci5vYnNlcnZlKHJvb3QsIHthdHRyaWJ1dGVzOiB0cnVlfSk7CiAKIGlmIChk
b2N1bWVudC5yZWFkeVN0YXRlICE9ICJjb21wbGV0ZSIpIHsKLSAgICBvbmxvYWQgPSByb290X3dh
aXQ7CisgIGFkZEV2ZW50TGlzdGVuZXIoJ2xvYWQnLCB3YWl0X2xvYWQpOwogfSBlbHNlIHsKLSAg
ICByb290X3dhaXQoKTsKKyAgd2FpdF9sb2FkKCk7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvZXhlY3V0b3JzL3JlZnRlc3QuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3JlZnRlc3Qu
anMKaW5kZXggNWJkNWM2MDljYmQ1ZTc5OTc4N2M5M2JhYzY3M2ZiOGUzOTJhN2MzMC4uMWJhOThj
Njg2ZjA5YzM4NGI3MTRiZGMzNmYyMTQ1NThhODJjZjNhZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL2V4ZWN1dG9ycy9yZWZ0ZXN0LmpzCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvcmVm
dGVzdC5qcwpAQCAtMSArMSBAQAotdmFyIHdpbiA9IHdpbmRvdy5vcGVuKCJhYm91dDpibGFuayIs
ICJ0ZXN0IiwgIndpZHRoPTYwMCxoZWlnaHQ9NjAwIik7Cit2YXIgd2luID0gd2luZG93Lm9wZW4o
ImFib3V0OmJsYW5rIiwgInRlc3QiLCAibGVmdD0wLHRvcD0wLHdpZHRoPTgwMCxoZWlnaHQ9NjAw
Iik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3RoYXJuZXNzX3dlYmRy
aXZlci5qcyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdGhhcm5lc3Nfd2ViZHJpdmVyLmpz
CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjAwMDUwZmE3ZWQ2ZGFmODljZTZhZjdh
MGU2MTBkMGU1ZGRjNDJiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdGhhcm5lc3Nfd2ViZHJpdmVyLmpzCisr
KyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotd2luZG93LnRpbWVvdXRfbXVsdGlwbGllciA9
ICUodGltZW91dF9tdWx0aXBsaWVyKWQ7Ci0KLXdpbmRvdy5tZXNzYWdlX3F1ZXVlID0gW107Ci0K
LXdpbmRvdy5zZXRNZXNzYWdlTGlzdGVuZXIgPSBmdW5jdGlvbihmdW5jKSB7Ci0gIHdpbmRvdy5j
dXJyZW50X2xpc3RlbmVyID0gZnVuYzsKLSAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoCi0gICAg
Im1lc3NhZ2UiLAotICAgIGZ1bmMsCi0gICAgZmFsc2UKLSAgKTsKLX07Ci0KLXdpbmRvdy5zZXRN
ZXNzYWdlTGlzdGVuZXIoZnVuY3Rpb24oZXZlbnQpIHsKLSAgd2luZG93Lm1lc3NhZ2VfcXVldWUu
cHVzaChldmVudCk7Ci19KTsKLQotd2luZG93LndpbiA9IHdpbmRvdy5vcGVuKCIlKGFic191cmwp
cyIsICIlKHdpbmRvd19pZClzIik7Ci0KLWlmICglKHRpbWVvdXQpcyAhPSBudWxsKSB7Ci0gIHdp
bmRvdy50aW1lciA9IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgd2luZG93Lndpbi50aW1l
b3V0KCk7Ci0gICAgd2luZG93Lndpbi5jbG9zZSgpOwotICB9LCAlKHRpbWVvdXQpcyk7Ci19CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3RoYXJuZXNzX3dlYmRyaXZlcl9y
ZXN1bWUuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3RoYXJuZXNzX3dlYmRyaXZlcl9y
ZXN1bWUuanMKaW5kZXggN2EyZGY5OGVkNGU3M2JmNDYxOGIxNjlhYTI5N2YwYzA3NWZmOGExOS4u
MzZkMDg2Yzk3NDdhNTZjYTcxMjJjODk5Y2ZjYjQ2ZDAwZGQ2MGIxNSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL2V4ZWN1dG9ycy90ZXN0aGFybmVzc193ZWJkcml2ZXJfcmVzdW1lLmpzCisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdGVzdGhhcm5lc3Nfd2ViZHJpdmVyX3Jlc3VtZS5qcwpA
QCAtMSw0NiArMSw1IEBACi12YXIgY2FsbGJhY2sgPSBhcmd1bWVudHNbYXJndW1lbnRzLmxlbmd0
aCAtIDFdOwotCi1mdW5jdGlvbiBwcm9jZXNzX2V2ZW50KGV2ZW50KSB7Ci0gIHZhciBkYXRhID0g
ZXZlbnQuZGF0YTsKLQotICB2YXIgcGF5bG9hZCA9IHVuZGVmaW5lZDsKLQotICBzd2l0Y2goZGF0
YS50eXBlKSB7Ci0gIGNhc2UgImNvbXBsZXRlIjoKLSAgICB2YXIgdGVzdHMgPSBldmVudC5kYXRh
LnRlc3RzOwotICAgIHZhciBzdGF0dXMgPSBldmVudC5kYXRhLnN0YXR1czsKLQotICAgIHZhciBz
dWJ0ZXN0X3Jlc3VsdHMgPSB0ZXN0cy5tYXAoZnVuY3Rpb24oeCkgewotICAgICAgcmV0dXJuIFt4
Lm5hbWUsIHguc3RhdHVzLCB4Lm1lc3NhZ2UsIHguc3RhY2tdOwotICAgIH0pOwotICAgIHBheWxv
YWQgPSBbc3RhdHVzLnN0YXR1cywKLSAgICAgICAgICAgICAgIHN0YXR1cy5tZXNzYWdlLAotICAg
ICAgICAgICAgICAgc3RhdHVzLnN0YWNrLAotICAgICAgICAgICAgICAgc3VidGVzdF9yZXN1bHRz
XTsKLSAgICBjbGVhclRpbWVvdXQod2luZG93LnRpbWVyKTsKLSAgICBicmVhazsKLQotICBjYXNl
ICJhY3Rpb24iOgotICAgIHdpbmRvdy5zZXRNZXNzYWdlTGlzdGVuZXIoZnVuY3Rpb24oZXZlbnQp
IHsKLSAgICAgIHdpbmRvdy5tZXNzYWdlX3F1ZXVlLnB1c2goZXZlbnQpOwotICAgIH0pOwotICAg
IHBheWxvYWQgPSBkYXRhOwotICAgIGJyZWFrOwotICBkZWZhdWx0OgotICAgIHJldHVybjsKLSAg
fQotCi0gIGNhbGxiYWNrKFsiJSh1cmwpcyIsIGRhdGEudHlwZSwgcGF5bG9hZF0pOwotfQotCi13
aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIsIHdpbmRvdy5jdXJyZW50X2xpc3Rl
bmVyKTsKLWlmICh3aW5kb3cubWVzc2FnZV9xdWV1ZS5sZW5ndGgpIHsKLSAgdmFyIG5leHQgPSB3
aW5kb3cubWVzc2FnZV9xdWV1ZS5zaGlmdCgpOwotICBwcm9jZXNzX2V2ZW50KG5leHQpOwotfSBl
bHNlIHsKLSAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoCi0gICAgIm1lc3NhZ2UiLCBmdW5jdGlv
biBmKGV2ZW50KSB7Ci0gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcigibWVzc2FnZSIs
IGYpOwotICAgICAgcHJvY2Vzc19ldmVudChldmVudCk7Ci0gICAgfSwgZmFsc2UpOwotfQorLy8g
V2UgaGF2ZSB0byBzZXQgdGhlIHVybCBoZXJlIHRvIGVuc3VyZSB3ZSBnZXQgdGhlIHNhbWUgZXNj
YXBpbmcgYXMgaW4gdGhlIGhhcm5lc3MKKy8vIGFuZCBhbHNvIHRvIGhhbmRsZSB0aGUgY2FzZSB3
aGVyZSB0aGUgdGVzdCBjaGFuZ2VzIHRoZSBmcmFnbWVudAord2luZG93Ll9fd3B0cnVubmVyX3Vy
bCA9ICIlKHVybClzIjsKK3dpbmRvdy5fX3dwdHJ1bm5lcl90ZXN0ZHJpdmVyX2NhbGxiYWNrID0g
YXJndW1lbnRzW2FyZ3VtZW50cy5sZW5ndGggLSAxXTsKK3dpbmRvdy5fX3dwdHJ1bm5lcl9wcm9j
ZXNzX25leHRfZXZlbnQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdzNj
LWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3czYy1pbXBvcnQubG9nCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjdmNDM5NmQ3ZWE3MWYzMGI1Zjg4OWE2OTg0ZjA2
MzhmNDZjMmYzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwzNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL19faW5pdF9fLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9y
cy9leGVjdXRvcmNocm9tZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMvZXhlY3V0b3JlZGdl
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9leGVjdXRvcmludGVybmV0ZXhwbG9yZXIucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9ybWFyaW9uZXR0ZS5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci9leGVjdXRvcnMvZXhlY3V0b3JvcGVyYS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9leGVjdXRvcnMv
ZXhlY3V0b3JzYWZhcmkucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2VsZW5p
dW0ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm8ucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvZXhlY3V0b3JzL2V4ZWN1dG9yc2Vydm9kcml2ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhl
Y3V0b3JzL2V4ZWN1dG9yd2Via2l0LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm9jZXNz
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy9wcm90b2NvbC5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9l
eGVjdXRvcnMvcmVmdGVzdC13YWl0X21hcmlvbmV0dGUuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0
b3JzL3JlZnRlc3Qtd2FpdF93ZWJkcml2ZXIuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Jl
ZnRlc3QuanMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3RoYXJuZXNzX3NlcnZvZHJpdmVy
LmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL2V4ZWN1dG9ycy90ZXN0aGFybmVzc193ZWJkcml2ZXIuanMKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvZXhlY3V0b3JzL3Rlc3RoYXJuZXNzX3dlYmRyaXZlcl9yZXN1bWUuanMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci9mb250LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2ZvbnQucHkKaW5k
ZXggYTM3MGY1ZjVhM2I2MWNiYjQwYzQ3YWJjNzg2YWJlMzg2NzljZDk5NC4uNjY0N2E4NTgwYmU3
YWI0MDUwYmJkMzc1OTNiMmU2NTk1YmMzYWM3MiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zv
bnQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL2ZvbnQucHkKQEAgLTkyLDggKzkyLDE0IEBAIGNsYXNz
IEZvbnRJbnN0YWxsZXIob2JqZWN0KToKIAogICAgICAgICBnZGkzMiA9IGN0eXBlcy5XaW5ETEwo
J2dkaTMyJykKICAgICAgICAgaWYgZ2RpMzIuQWRkRm9udFJlc291cmNlVyhmb250X3BhdGgpOgot
ICAgICAgICAgICAgcmV0dXJuIGJvb2woY3R5cGVzLndpbmRsbC51c2VyMzIuU2VuZE1lc3NhZ2VX
KGh3bmRfYnJvYWRjYXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHdtX2ZvbnRjaGFuZ2UpKQorICAgICAgICAgICAgZnJvbSBjdHlw
ZXMgaW1wb3J0IHdpbnR5cGVzCisgICAgICAgICAgICB3cGFyYW0gPSAwCisgICAgICAgICAgICBs
cGFyYW0gPSAwCisgICAgICAgICAgICBTZW5kTm90aWZ5TWVzc2FnZVcgPSBjdHlwZXMud2luZGxs
LnVzZXIzMi5TZW5kTm90aWZ5TWVzc2FnZVcKKyAgICAgICAgICAgIFNlbmROb3RpZnlNZXNzYWdl
Vy5hcmd0eXBlcyA9IFt3aW50eXBlcy5IQU5ETEUsIHdpbnR5cGVzLlVJTlQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2ludHlwZXMuV1BBUkFNLCB3aW50eXBl
cy5MUEFSQU1dCisgICAgICAgICAgICByZXR1cm4gYm9vbChTZW5kTm90aWZ5TWVzc2FnZVcoaHdu
ZF9icm9hZGNhc3QsIHdtX2ZvbnRjaGFuZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgd3BhcmFtLCBscGFyYW0pKQogCiAgICAgZGVmIHJlbW92ZV9saW51eF9m
b250KHNlbGYsIGZvbnRfbmFtZSwgXyk6CiAgICAgICAgIGlmIHNlbGYuY3JlYXRlZF9kaXI6CkBA
IC0xMjAsNSArMTI2LDExIEBAIGNsYXNzIEZvbnRJbnN0YWxsZXIob2JqZWN0KToKIAogICAgICAg
ICBnZGkzMiA9IGN0eXBlcy5XaW5ETEwoJ2dkaTMyJykKICAgICAgICAgaWYgZ2RpMzIuUmVtb3Zl
Rm9udFJlc291cmNlVyhmb250X3BhdGgpOgotICAgICAgICAgICAgcmV0dXJuIGJvb2woY3R5cGVz
LndpbmRsbC51c2VyMzIuU2VuZE1lc3NhZ2VXKGh3bmRfYnJvYWRjYXN0LAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdtX2ZvbnRjaGFu
Z2UpKQorICAgICAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHdpbnR5cGVzCisgICAgICAgICAg
ICB3cGFyYW0gPSAwCisgICAgICAgICAgICBscGFyYW0gPSAwCisgICAgICAgICAgICBTZW5kTm90
aWZ5TWVzc2FnZVcgPSBjdHlwZXMud2luZGxsLnVzZXIzMi5TZW5kTm90aWZ5TWVzc2FnZVcKKyAg
ICAgICAgICAgIFNlbmROb3RpZnlNZXNzYWdlVy5hcmd0eXBlcyA9IFt3aW50eXBlcy5IQU5ETEUs
IHdpbnR5cGVzLlVJTlQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd2ludHlwZXMuV1BBUkFNLCB3aW50eXBlcy5MUEFSQU1dCisgICAgICAgICAgICByZXR1cm4g
Ym9vbChTZW5kTm90aWZ5TWVzc2FnZVcoaHduZF9icm9hZGNhc3QsIHdtX2ZvbnRjaGFuZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3BhcmFtLCBscGFyYW0p
KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL2Zvcm1hdHRlcnMucHkgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
Zm9ybWF0dGVycy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWVhMDlkYmU1NTM3
MTNjNzk5YjQwYzFlNDBkOThmOGVlMmQ0ZDgxYS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9ybWF0dGVycy5weQorKysgL2Rldi9u
dWxsCkBAIC0xLDc4ICswLDAgQEAKLWltcG9ydCBqc29uCi0KLWZyb20gbW96bG9nLnN0cnVjdHVy
ZWQuZm9ybWF0dGVycy5iYXNlIGltcG9ydCBCYXNlRm9ybWF0dGVyCi0KLQotY2xhc3MgV3B0cmVw
b3J0Rm9ybWF0dGVyKEJhc2VGb3JtYXR0ZXIpOgotICAgICIiIkZvcm1hdHRlciB0aGF0IHByb2R1
Y2VzIHJlc3VsdHMgaW4gdGhlIGZvcm1hdCB0aGF0IHdwcmVwb3J0IGV4cGVjdHMuIiIiCi0KLSAg
ICBkZWYgX19pbml0X18oc2VsZik6Ci0gICAgICAgIHNlbGYucmF3X3Jlc3VsdHMgPSB7fQotICAg
ICAgICBzZWxmLnJlc3VsdHMgPSB7fQotCi0gICAgZGVmIHN1aXRlX3N0YXJ0KHNlbGYsIGRhdGEp
OgotICAgICAgICBpZiAncnVuX2luZm8nIGluIGRhdGE6Ci0gICAgICAgICAgICBzZWxmLnJlc3Vs
dHNbJ3J1bl9pbmZvJ10gPSBkYXRhWydydW5faW5mbyddCi0gICAgICAgIHNlbGYucmVzdWx0c1sn
dGltZV9zdGFydCddID0gZGF0YVsndGltZSddCi0KLSAgICBkZWYgc3VpdGVfZW5kKHNlbGYsIGRh
dGEpOgotICAgICAgICBzZWxmLnJlc3VsdHNbJ3RpbWVfZW5kJ10gPSBkYXRhWyd0aW1lJ10KLSAg
ICAgICAgc2VsZi5yZXN1bHRzWyJyZXN1bHRzIl0gPSBbXQotICAgICAgICBmb3IgdGVzdF9uYW1l
IGluIHNlbGYucmF3X3Jlc3VsdHM6Ci0gICAgICAgICAgICByZXN1bHQgPSB7InRlc3QiOiB0ZXN0
X25hbWV9Ci0gICAgICAgICAgICByZXN1bHQudXBkYXRlKHNlbGYucmF3X3Jlc3VsdHNbdGVzdF9u
YW1lXSkKLSAgICAgICAgICAgIHNlbGYucmVzdWx0c1sicmVzdWx0cyJdLmFwcGVuZChyZXN1bHQp
Ci0gICAgICAgIHJldHVybiBqc29uLmR1bXBzKHNlbGYucmVzdWx0cykKLQotICAgIGRlZiBmaW5k
X29yX2NyZWF0ZV90ZXN0KHNlbGYsIGRhdGEpOgotICAgICAgICB0ZXN0X25hbWUgPSBkYXRhWyJ0
ZXN0Il0KLSAgICAgICAgaWYgdGVzdF9uYW1lIG5vdCBpbiBzZWxmLnJhd19yZXN1bHRzOgotICAg
ICAgICAgICAgc2VsZi5yYXdfcmVzdWx0c1t0ZXN0X25hbWVdID0gewotICAgICAgICAgICAgICAg
ICJzdWJ0ZXN0cyI6IFtdLAotICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiIiwKLSAgICAgICAg
ICAgICAgICAibWVzc2FnZSI6IE5vbmUKLSAgICAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHNl
bGYucmF3X3Jlc3VsdHNbdGVzdF9uYW1lXQotCi0gICAgZGVmIHRlc3Rfc3RhcnQoc2VsZiwgZGF0
YSk6Ci0gICAgICAgIHRlc3QgPSBzZWxmLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKLSAgICAg
ICAgdGVzdFsic3RhcnRfdGltZSJdID0gZGF0YVsidGltZSJdCi0KLSAgICBkZWYgY3JlYXRlX3N1
YnRlc3Qoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHRlc3QgPSBzZWxmLmZpbmRfb3JfY3JlYXRlX3Rl
c3QoZGF0YSkKLSAgICAgICAgc3VidGVzdF9uYW1lID0gZGF0YVsic3VidGVzdCJdCi0KLSAgICAg
ICAgc3VidGVzdCA9IHsKLSAgICAgICAgICAgICJuYW1lIjogc3VidGVzdF9uYW1lLAotICAgICAg
ICAgICAgInN0YXR1cyI6ICIiLAotICAgICAgICAgICAgIm1lc3NhZ2UiOiBOb25lCi0gICAgICAg
IH0KLSAgICAgICAgdGVzdFsic3VidGVzdHMiXS5hcHBlbmQoc3VidGVzdCkKLQotICAgICAgICBy
ZXR1cm4gc3VidGVzdAotCi0gICAgZGVmIHRlc3Rfc3RhdHVzKHNlbGYsIGRhdGEpOgotICAgICAg
ICBzdWJ0ZXN0ID0gc2VsZi5jcmVhdGVfc3VidGVzdChkYXRhKQotICAgICAgICBzdWJ0ZXN0WyJz
dGF0dXMiXSA9IGRhdGFbInN0YXR1cyJdCi0gICAgICAgIGlmICJleHBlY3RlZCIgaW4gZGF0YToK
LSAgICAgICAgICAgIHN1YnRlc3RbImV4cGVjdGVkIl0gPSBkYXRhWyJleHBlY3RlZCJdCi0gICAg
ICAgIGlmICJtZXNzYWdlIiBpbiBkYXRhOgotICAgICAgICAgICAgc3VidGVzdFsibWVzc2FnZSJd
ID0gZGF0YVsibWVzc2FnZSJdCi0KLSAgICBkZWYgdGVzdF9lbmQoc2VsZiwgZGF0YSk6Ci0gICAg
ICAgIHRlc3QgPSBzZWxmLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKLSAgICAgICAgc3RhcnRf
dGltZSA9IHRlc3QucG9wKCJzdGFydF90aW1lIikKLSAgICAgICAgdGVzdFsiZHVyYXRpb24iXSA9
IGRhdGFbInRpbWUiXSAtIHN0YXJ0X3RpbWUKLSAgICAgICAgdGVzdFsic3RhdHVzIl0gPSBkYXRh
WyJzdGF0dXMiXQotICAgICAgICBpZiAiZXhwZWN0ZWQiIGluIGRhdGE6Ci0gICAgICAgICAgICB0
ZXN0WyJleHBlY3RlZCJdID0gZGF0YVsiZXhwZWN0ZWQiXQotICAgICAgICBpZiAibWVzc2FnZSIg
aW4gZGF0YToKLSAgICAgICAgICAgIHRlc3RbIm1lc3NhZ2UiXSA9IGRhdGFbIm1lc3NhZ2UiXQot
Ci0gICAgZGVmIGFzc2VydGlvbl9jb3VudChzZWxmLCBkYXRhKToKLSAgICAgICAgdGVzdCA9IHNl
bGYuZmluZF9vcl9jcmVhdGVfdGVzdChkYXRhKQotICAgICAgICB0ZXN0WyJhc3NlcnRzIl0gPSB7
Ci0gICAgICAgICAgICAiY291bnQiOiBkYXRhWyJjb3VudCJdLAotICAgICAgICAgICAgIm1pbiI6
IGRhdGFbIm1pbl9leHBlY3RlZCJdLAotICAgICAgICAgICAgIm1heCI6IGRhdGFbIm1heF9leHBl
Y3RlZCJdCi0gICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdGV4cGVj
dGVkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKaW5kZXggODMxZjUzNzhi
MzY4MjNkYjAxMzY3ZDU3ZWY0MGI2MWFhNzBjNmZjZS4uZWFlODViMWY2NjYxYTY3ZGZmNTllZjc4
YTllZDYyN2UzZTM2MDNkOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0
ZWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0ZXhwZWN0ZWQucHkKQEAgLTEsMTAgKzEs
MTEgQEAKIGltcG9ydCBvcwotaW1wb3J0IHVybHBhcnNlCitmcm9tIHNpeC5tb3Zlcy51cmxsaWIu
cGFyc2UgaW1wb3J0IHVybGpvaW4KK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiAKLWZy
b20gd3B0bWFuaWZlc3QuYmFja2VuZHMgaW1wb3J0IHN0YXRpYwotZnJvbSB3cHRtYW5pZmVzdC5i
YWNrZW5kcy5zdGF0aWMgaW1wb3J0IE1hbmlmZXN0SXRlbQorZnJvbSAud3B0bWFuaWZlc3QuYmFj
a2VuZHMgaW1wb3J0IHN0YXRpYworZnJvbSAud3B0bWFuaWZlc3QuYmFja2VuZHMuYmFzZSBpbXBv
cnQgTWFuaWZlc3RJdGVtCiAKLWltcG9ydCBleHBlY3RlZAorZnJvbSAuIGltcG9ydCBleHBlY3Rl
ZAogCiAiIiJNYW5pZmVzdCBzdHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSBleHBlY3RlZCByZXN1bHRz
IG9mIGEgdGVzdC4KIApAQCAtNDEsNiArNDIsMTcgQEAgZGVmIGludF9wcm9wKG5hbWUsIG5vZGUp
OgogICAgICAgICByZXR1cm4gTm9uZQogCiAKK2RlZiBsaXN0X3Byb3AobmFtZSwgbm9kZSk6Cisg
ICAgIiIiTGlzdCBwcm9wZXJ0eSIiIgorICAgIHRyeToKKyAgICAgICAgbGlzdF9wcm9wID0gbm9k
ZS5nZXQobmFtZSkKKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaXN0X3Byb3AsIGJhc2VzdHJpbmcp
OgorICAgICAgICAgICAgcmV0dXJuIFtsaXN0X3Byb3BdCisgICAgICAgIHJldHVybiBsaXN0KGxp
c3RfcHJvcCkKKyAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgIHJldHVybiBbXQorCisKIGRl
ZiB0YWdzKG5vZGUpOgogICAgICIiIlNldCBvZiB0YWdzIHRoYXQgaGF2ZSBiZWVuIGFwcGxpZWQg
dG8gdGhlIHRlc3QiIiIKICAgICB0cnk6CkBAIC01NSw4ICs2Nyw5IEBAIGRlZiB0YWdzKG5vZGUp
OgogZGVmIHByZWZzKG5vZGUpOgogICAgIGRlZiB2YWx1ZShpbmlfdmFsdWUpOgogICAgICAgICBp
ZiBpc2luc3RhbmNlKGluaV92YWx1ZSwgKHN0ciwgdW5pY29kZSkpOgotICAgICAgICAgICAgcmV0
dXJuIHR1cGxlKGluaV92YWx1ZS5zcGxpdCgiOiIsIDEpKQorICAgICAgICAgICAgcmV0dXJuIHR1
cGxlKHByZWZfcGllY2Uuc3RyaXAoKSBmb3IgcHJlZl9waWVjZSBpbiBpbmlfdmFsdWUuc3BsaXQo
JzonLCAxKSkKICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdGhpcyBzaG91bGQgYmUgdGhp
bmdzIGxpa2UgQFJlc2V0LCB3aGljaCBhcmUgYXBwYXJlbnRseSB0eXBlICdvYmplY3QnCiAgICAg
ICAgICAgICByZXR1cm4gKGluaV92YWx1ZSwgTm9uZSkKIAogICAgIHRyeToKQEAgLTcwLDkgKzgz
LDkgQEAgZGVmIHByZWZzKG5vZGUpOgogICAgIHJldHVybiBydgogCiAKLWRlZiBsc2FuX2FsbG93
ZWQobm9kZSk6CitkZWYgc2V0X3Byb3AobmFtZSwgbm9kZSk6CiAgICAgdHJ5OgotICAgICAgICBu
b2RlX2l0ZW1zID0gbm9kZS5nZXQoImxzYW4tYWxsb3dlZCIpCisgICAgICAgIG5vZGVfaXRlbXMg
PSBub2RlLmdldChuYW1lKQogICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGVfaXRlbXMsIChzdHIs
IHVuaWNvZGUpKToKICAgICAgICAgICAgIHJ2ID0ge25vZGVfaXRlbXN9CiAgICAgICAgIGVsc2U6
CkBAIC04Miw4ICs5NSwxMjEgQEAgZGVmIGxzYW5fYWxsb3dlZChub2RlKToKICAgICByZXR1cm4g
cnYKIAogCitkZWYgbGVha190aHJlc2hvbGQobm9kZSk6CisgICAgcnYgPSB7fQorICAgIHRyeToK
KyAgICAgICAgbm9kZV9pdGVtcyA9IG5vZGUuZ2V0KCJsZWFrLXRocmVzaG9sZCIpCisgICAgICAg
IGlmIGlzaW5zdGFuY2Uobm9kZV9pdGVtcywgKHN0ciwgdW5pY29kZSkpOgorICAgICAgICAgICAg
bm9kZV9pdGVtcyA9IFtub2RlX2l0ZW1zXQorICAgICAgICBmb3IgaXRlbSBpbiBub2RlX2l0ZW1z
OgorICAgICAgICAgICAgcHJvY2VzcywgdmFsdWUgPSBpdGVtLnJzcGxpdCgiOiIsIDEpCisgICAg
ICAgICAgICBydltwcm9jZXNzLnN0cmlwKCldID0gaW50KHZhbHVlLnN0cmlwKCkpCisgICAgZXhj
ZXB0IEtleUVycm9yOgorICAgICAgICBwYXNzCisgICAgcmV0dXJuIHJ2CisKKworZGVmIGZ1enp5
X3Byb3Aobm9kZSk6CisgICAgIiIiRnV6enkgcmVmdGVzdCBtYXRjaAorCisgICAgVGhpcyBjYW4g
ZWl0aGVyIGJlIGEgbGlzdCBvZiBzdHJpbmdzIG9yIGEgc2luZ2xlIHN0cmluZy4gV2hlbiBhIGxp
c3QgaXMKKyAgICBzdXBwbGllZCwgdGhlIGZvcm1hdCBvZiBlYWNoIGl0ZW0gbWF0Y2hlcyB0aGUg
ZGVzY3JpcHRpb24gYmVsb3cuCisKKyAgICBUaGUgZ2VuZXJhbCBmb3JtYXQgaXMKKyAgICBmdXp6
eSA9IFtrZXkgIjoiXSA8cHJvcD4gIjsiIDxwcm9wPgorICAgIGtleSA9IDx0ZXN0IG5hbWU+IFty
ZWZ0eXBlIDxyZWZlcmVuY2UgbmFtZT5dCisgICAgcmVmdHlwZSA9ICI9PSIgfCAiIT0iCisgICAg
cHJvcCA9IFtwcm9wTmFtZSAiPSIgXSByYW5nZQorICAgIHByb3BOYW1lID0gIm1heERpZmZlcmVu
Y2VzIiB8ICJ0b3RhbFBpeGVscyIKKyAgICByYW5nZSA9IDxkaWdpdHM+IFsiLSIgPGRpZ2l0cz5d
CisKKyAgICBTbyBmb3IgZXhhbXBsZToKKyAgICAgIG1heERpZmZlcmVuY2VzPTEwO3RvdGFsUGl4
ZWxzPTEwLTIwCisKKyAgICAgIHNwZWNpZmllcyB0aGF0IGZvciBhbnkgdGVzdC9yZWYgcGFpciBm
b3Igd2hpY2ggbm8gb3RoZXIgcnVsZSBpcyBzdXBwbGllZCwKKyAgICAgIHRoZXJlIG11c3QgYmUg
YSBtYXhpbXVtIHBpeGVsIGRpZmZlcmVuY2Ugb2YgZXhhY3RseSAxMCwgYW5kIGJldHdlbiAxMCBh
bmQKKyAgICAgIDIwIHRvdGFsIHBpeGVscyBkaWZmZXJlbnQuCisKKyAgICAgIHRlc3QuaHRtbD09
cmVmLmh0bToxMDsyMAorCisgICAgICBzcGVjaWZpZXMgdGhhdCBmb3IgYSBlcXVhbGl0eSBjb21w
YXJpc29uIGJldHdlZW4gdGVzdC5odG1sIGFuZCByZWYuaHRtLAorICAgICAgcmVzb2x2ZWQgcmVs
YXRpdmUgdG8gdGhlIHRlc3QgcGF0aCwgdGhlcmUgY2FuIGJlIGEgbWF4aW11bSBkaWZmZXJlbmNl
CisgICAgICBvZiAxMCBpbiB0aGUgcGl4ZWwgdmFsdWUgZm9yIGFueSBjaGFubmVsIGFuZCAyMCBw
aXhlbHMgdG90YWwgZGlmZmVyZW5jZS4KKworICAgICAgcmVmLmh0bWw6MTA7MjAKKworICAgICAg
aXMganVzdCBsaWtlIHRoZSBhYm92ZSBidXQgYXBwbGllcyB0byBhbnkgY29tcGFyaXNvbiBpbnZv
bHZpbmcgcmVmLmh0bWwKKyAgICAgIG9uIHRoZSByaWdodCBoYW5kIHNpZGUuCisKKyAgICBUaGUg
cmV0dXJuIGZvcm1hdCBpcyBbKGtleSwgKG1heERpZmZlcmVuY2VSYW5nZSwgdG90YWxQaXhlbHNS
YW5nZSkpXSwgd2hlcmUKKyAgICB0aGUga2V5IGlzIGVpdGhlciBOb25lIHdoZXJlIG5vIHNwZWNp
ZmljIHJlZmVyZW5jZSBpcyBzcGVjaWZpZWQsIHRoZSByZWZlcmVuY2UKKyAgICBuYW1lIHdoZXJl
IHRoZXJlIGlzIG9ubHkgb25lIGNvbXBvbmVudCBvciBhIHR1cGxlICh0ZXN0LCByZWYsIHJlZnR5
cGUpIHdoZW4gdGhlCisgICAgZXhhY3QgY29tcGFyaXNvbiBpcyBzcGVjaWZpZWQuIG1heERpZmZl
cmVuY2VSYW5nZSBhbmQgdG90YWxQaXhlbHNSYW5nZSBhcmUgdHVwbGVzCisgICAgb2YgaW50ZWdl
cnMgaW5kaWNhdGluZyB0aGUgaW5jbHVzaXZlIHJhbmdlIG9mIGFsbG93ZWQgdmFsdWVzLgorIiIi
CisgICAgcnYgPSBbXQorICAgIGFyZ3MgPSBbIm1heERpZmZlcmVuY2UiLCAidG90YWxQaXhlbHMi
XQorICAgIHRyeToKKyAgICAgICAgdmFsdWUgPSBub2RlLmdldCgiZnV6enkiKQorICAgIGV4Y2Vw
dCBLZXlFcnJvcjoKKyAgICAgICAgcmV0dXJuIHJ2CisgICAgaWYgbm90IGlzaW5zdGFuY2UodmFs
dWUsIGxpc3QpOgorICAgICAgICB2YWx1ZSA9IFt2YWx1ZV0KKyAgICBmb3IgaXRlbSBpbiB2YWx1
ZToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaXRlbSwgKHN0ciwgdW5pY29kZSkpOgorICAg
ICAgICAgICAgcnYuYXBwZW5kKGl0ZW0pCisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBw
YXJ0cyA9IGl0ZW0ucnNwbGl0KCI6IiwgMSkKKyAgICAgICAgaWYgbGVuKHBhcnRzKSA9PSAxOgor
ICAgICAgICAgICAga2V5ID0gTm9uZQorICAgICAgICAgICAgZnV6enlfdmFsdWVzID0gcGFydHNb
MF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGtleSwgZnV6enlfdmFsdWVzID0gcGFydHMK
KyAgICAgICAgICAgIGZvciByZWZ0eXBlIGluIFsiPT0iLCAiIT0iXToKKyAgICAgICAgICAgICAg
ICBpZiByZWZ0eXBlIGluIGtleToKKyAgICAgICAgICAgICAgICAgICAga2V5ID0ga2V5LnNwbGl0
KHJlZnR5cGUpCisgICAgICAgICAgICAgICAgICAgIGtleS5hcHBlbmQocmVmdHlwZSkKKyAgICAg
ICAgICAgICAgICAgICAga2V5ID0gdHVwbGUoa2V5KQorICAgICAgICByYW5nZXMgPSBmdXp6eV92
YWx1ZXMuc3BsaXQoIjsiKQorICAgICAgICBpZiBsZW4ocmFuZ2VzKSAhPSAyOgorICAgICAgICAg
ICAgcmFpc2UgVmFsdWVFcnJvcigiTWFsZm9ybWVkIGZ1enp5IHZhbHVlICVzIiAlIGl0ZW0pCisg
ICAgICAgIGFyZ192YWx1ZXMgPSB7Tm9uZTogZGVxdWUoKX0KKyAgICAgICAgZm9yIHJhbmdlX3N0
cl92YWx1ZSBpbiByYW5nZXM6CisgICAgICAgICAgICBpZiAiPSIgaW4gcmFuZ2Vfc3RyX3ZhbHVl
OgorICAgICAgICAgICAgICAgIG5hbWUsIHJhbmdlX3N0cl92YWx1ZSA9IFtwYXJ0LnN0cmlwKCkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHBhcnQgaW4gcmFu
Z2Vfc3RyX3ZhbHVlLnNwbGl0KCI9IiwgMSldCisgICAgICAgICAgICAgICAgaWYgbmFtZSBub3Qg
aW4gYXJnczoKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXMgaXMgbm90
IGEgdmFsaWQgZnV6enkgcHJvcGVydHkiICUgbmFtZSkKKyAgICAgICAgICAgICAgICBpZiBhcmdf
dmFsdWVzLmdldChuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigi
R290IG11bHRpcGxlIHZhbHVlcyBmb3IgYXJndW1lbnQgJXMiICUgbmFtZSkKKyAgICAgICAgICAg
IGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9IE5vbmUKKyAgICAgICAgICAgIGlmICItIiBp
biByYW5nZV9zdHJfdmFsdWU6CisgICAgICAgICAgICAgICAgcmFuZ2VfbWluLCByYW5nZV9tYXgg
PSByYW5nZV9zdHJfdmFsdWUuc3BsaXQoIi0iKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByYW5nZV9taW4gPSByYW5nZV9zdHJfdmFsdWUKKyAgICAgICAgICAgICAgICByYW5n
ZV9tYXggPSByYW5nZV9zdHJfdmFsdWUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAg
ICByYW5nZV92YWx1ZSA9IHR1cGxlKGludChpdGVtLnN0cmlwKCkpIGZvciBpdGVtIGluIChyYW5n
ZV9taW4sIHJhbmdlX21heCkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJGdXp6eSB2YWx1ZSAlcyBtdXN0IGJlIGEgcmFu
Z2Ugb2YgaW50ZWdlcnMiICUgcmFuZ2Vfc3RyX3ZhbHVlKQorICAgICAgICAgICAgaWYgbmFtZSBp
cyBOb25lOgorICAgICAgICAgICAgICAgIGFyZ192YWx1ZXNbTm9uZV0uYXBwZW5kKHJhbmdlX3Zh
bHVlKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBhcmdfdmFsdWVzW25hbWVd
ID0gcmFuZ2VfdmFsdWUKKyAgICAgICAgcmFuZ2VfdmFsdWVzID0gW10KKyAgICAgICAgZm9yIGFy
Z19uYW1lIGluIGFyZ3M6CisgICAgICAgICAgICBpZiBhcmdfdmFsdWVzLmdldChhcmdfbmFtZSk6
CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhcmdfdmFsdWVzLnBvcChhcmdfbmFtZSkKKyAgICAg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBhcmdfdmFsdWVzW05vbmVdLnBv
cGxlZnQoKQorICAgICAgICAgICAgcmFuZ2VfdmFsdWVzLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAg
cnYuYXBwZW5kKChrZXksIHR1cGxlKHJhbmdlX3ZhbHVlcykpKQorICAgIHJldHVybiBydgorCisK
IGNsYXNzIEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKLSAgICBkZWYgX19pbml0X18o
c2VsZiwgbmFtZSwgdGVzdF9wYXRoLCB1cmxfYmFzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5vZGUsIHRlc3RfcGF0aCwgdXJsX2Jhc2UpOgogICAgICAgICAiIiJPYmplY3QgcmVwcmVzZW50
aW5nIGFsbCB0aGUgdGVzdHMgaW4gYSBwYXJ0aWN1bGFyIG1hbmlmZXN0CiAKICAgICAgICAgOnBh
cmFtIG5hbWU6IE5hbWUgb2YgdGhlIEFTVCBOb2RlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIG9iamVj
dC4KQEAgLTkyLDEzICsyMTgsMTQgQEAgY2xhc3MgRXhwZWN0ZWRNYW5pZmVzdChNYW5pZmVzdEl0
ZW0pOgogICAgICAgICA6cGFyYW0gdGVzdF9wYXRoOiBQYXRoIG9mIHRoZSB0ZXN0IGZpbGUgYXNz
b2NpYXRlZCB3aXRoIHRoaXMgbWFuaWZlc3QuCiAgICAgICAgIDpwYXJhbSB1cmxfYmFzZTogQmFz
ZSB1cmwgZm9yIHNlcnZpbmcgdGhlIHRlc3RzIGluIHRoaXMgbWFuaWZlc3QKICAgICAgICAgIiIi
CisgICAgICAgIG5hbWUgPSBub2RlLmRhdGEKICAgICAgICAgaWYgbmFtZSBpcyBub3QgTm9uZToK
ICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkV4cGVjdGVkTWFuaWZlc3Qgc2hvdWxkIHJl
cHJlc2VudCB0aGUgcm9vdCBub2RlIikKICAgICAgICAgaWYgdGVzdF9wYXRoIGlzIE5vbmU6CiAg
ICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJFeHBlY3RlZE1hbmlmZXN0IHJlcXVpcmVzIGEg
dGVzdCBwYXRoIikKICAgICAgICAgaWYgdXJsX2Jhc2UgaXMgTm9uZToKICAgICAgICAgICAgIHJh
aXNlIFZhbHVlRXJyb3IoIkV4cGVjdGVkTWFuaWZlc3QgcmVxdWlyZXMgYSBiYXNlIHVybCIpCi0g
ICAgICAgIE1hbmlmZXN0SXRlbS5fX2luaXRfXyhzZWxmLCBuYW1lKQorICAgICAgICBNYW5pZmVz
dEl0ZW0uX19pbml0X18oc2VsZiwgbm9kZSkKICAgICAgICAgc2VsZi5jaGlsZF9tYXAgPSB7fQog
ICAgICAgICBzZWxmLnRlc3RfcGF0aCA9IHRlc3RfcGF0aAogICAgICAgICBzZWxmLnVybF9iYXNl
ID0gdXJsX2Jhc2UKQEAgLTEyMSw4ICsyNDgsOCBAQCBjbGFzcyBFeHBlY3RlZE1hbmlmZXN0KE1h
bmlmZXN0SXRlbSk6CiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgdXJsKHNlbGYpOgotICAgICAg
ICByZXR1cm4gdXJscGFyc2UudXJsam9pbihzZWxmLnVybF9iYXNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiLyIuam9pbihzZWxmLnRlc3RfcGF0aC5zcGxpdChvcy5wYXRoLnNl
cCkpKQorICAgICAgICByZXR1cm4gdXJsam9pbihzZWxmLnVybF9iYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAiLyIuam9pbihzZWxmLnRlc3RfcGF0aC5zcGxpdChvcy5wYXRoLnNlcCkpKQog
CiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGRpc2FibGVkKHNlbGYpOgpAQCAtMTU0LDcgKzI4MSwz
MSBAQCBjbGFzcyBFeHBlY3RlZE1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAKICAgICBAcHJvcGVy
dHkKICAgICBkZWYgbHNhbl9hbGxvd2VkKHNlbGYpOgotICAgICAgICByZXR1cm4gbHNhbl9hbGxv
d2VkKHNlbGYpCisgICAgICAgIHJldHVybiBzZXRfcHJvcCgibHNhbi1hbGxvd2VkIiwgc2VsZikK
KworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsZWFrX2FsbG93ZWQoc2VsZik6CisgICAgICAgIHJl
dHVybiBzZXRfcHJvcCgibGVhay1hbGxvd2VkIiwgc2VsZikKKworICAgIEBwcm9wZXJ0eQorICAg
IGRlZiBsZWFrX3RocmVzaG9sZChzZWxmKToKKyAgICAgICAgcmV0dXJuIGxlYWtfdGhyZXNob2xk
KHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbHNhbl9tYXhfc3RhY2tfZGVwdGgoc2Vs
Zik6CisgICAgICAgIHJldHVybiBpbnRfcHJvcCgibHNhbi1tYXgtc3RhY2stZGVwdGgiLCBzZWxm
KQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGZ1enp5KHNlbGYpOgorICAgICAgICByZXR1cm4g
ZnV6enlfcHJvcChzZWxmKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGV4cGVjdGVkKHNlbGYp
OgorICAgICAgICByZXR1cm4gbGlzdF9wcm9wKCJleHBlY3RlZCIsIHNlbGYpWzBdCisKKyAgICBA
cHJvcGVydHkKKyAgICBkZWYga25vd25faW50ZXJtaXR0ZW50KHNlbGYpOgorICAgICAgICByZXR1
cm4gbGlzdF9wcm9wKCJleHBlY3RlZCIsIHNlbGYpWzE6XQogCiAKIGNsYXNzIERpcmVjdG9yeU1h
bmlmZXN0KE1hbmlmZXN0SXRlbSk6CkBAIC0xODgsMTYgKzMzOSwzMiBAQCBjbGFzcyBEaXJlY3Rv
cnlNYW5pZmVzdChNYW5pZmVzdEl0ZW0pOgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGxzYW5f
YWxsb3dlZChzZWxmKToKLSAgICAgICAgcmV0dXJuIGxzYW5fYWxsb3dlZChzZWxmKQorICAgICAg
ICByZXR1cm4gc2V0X3Byb3AoImxzYW4tYWxsb3dlZCIsIHNlbGYpCisKKyAgICBAcHJvcGVydHkK
KyAgICBkZWYgbGVha19hbGxvd2VkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2V0X3Byb3AoImxl
YWstYWxsb3dlZCIsIHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgbGVha190aHJlc2hv
bGQoc2VsZik6CisgICAgICAgIHJldHVybiBsZWFrX3RocmVzaG9sZChzZWxmKQorCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGxzYW5fbWF4X3N0YWNrX2RlcHRoKHNlbGYpOgorICAgICAgICByZXR1
cm4gaW50X3Byb3AoImxzYW4tbWF4LXN0YWNrLWRlcHRoIiwgc2VsZikKKworICAgIEBwcm9wZXJ0
eQorICAgIGRlZiBmdXp6eShzZWxmKToKKyAgICAgICAgcmV0dXJuIGZ1enp5X3Byb3Aoc2VsZikK
IAogCiBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbm9kZSwgKiprd2FyZ3MpOgogICAgICAg
ICAiIiJUcmVlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIGEgcGFydGljdWxhciB0ZXN0IGluIGEgbWFu
aWZlc3QKIAogICAgICAgICA6cGFyYW0gbmFtZTogbmFtZSBvZiB0aGUgdGVzdCIiIgotICAgICAg
ICBhc3NlcnQgbmFtZSBpcyBub3QgTm9uZQotICAgICAgICBNYW5pZmVzdEl0ZW0uX19pbml0X18o
c2VsZiwgbmFtZSkKKyAgICAgICAgYXNzZXJ0IG5vZGUuZGF0YSBpcyBub3QgTm9uZQorICAgICAg
ICBNYW5pZmVzdEl0ZW0uX19pbml0X18oc2VsZiwgbm9kZSwgKiprd2FyZ3MpCiAgICAgICAgIHNl
bGYudXBkYXRlZF9leHBlY3RlZCA9IFtdCiAgICAgICAgIHNlbGYubmV3X2V4cGVjdGVkID0gW10K
ICAgICAgICAgc2VsZi5zdWJ0ZXN0cyA9IHt9CkBAIC0yMDYsNyArMzczLDcgQEAgY2xhc3MgVGVz
dE5vZGUoTWFuaWZlc3RJdGVtKToKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19lbXB0eShz
ZWxmKToKLSAgICAgICAgcmVxdWlyZWRfa2V5cyA9IHNldChbInR5cGUiXSkKKyAgICAgICAgcmVx
dWlyZWRfa2V5cyA9IHsidHlwZSJ9CiAgICAgICAgIGlmIHNldChzZWxmLl9kYXRhLmtleXMoKSkg
IT0gcmVxdWlyZWRfa2V5czoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1
cm4gYWxsKGNoaWxkLmlzX2VtcHR5IGZvciBjaGlsZCBpbiBzZWxmLmNoaWxkcmVuKQpAQCAtMjE3
LDcgKzM4NCw3IEBAIGNsYXNzIFRlc3ROb2RlKE1hbmlmZXN0SXRlbSk6CiAKICAgICBAcHJvcGVy
dHkKICAgICBkZWYgaWQoc2VsZik6Ci0gICAgICAgIHJldHVybiB1cmxwYXJzZS51cmxqb2luKHNl
bGYucGFyZW50LnVybCwgc2VsZi5uYW1lKQorICAgICAgICByZXR1cm4gdXJsam9pbihzZWxmLnBh
cmVudC51cmwsIHNlbGYubmFtZSkKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBkaXNhYmxlZChz
ZWxmKToKQEAgLTI0OSw3ICs0MTYsMzEgQEAgY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToK
IAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBsc2FuX2FsbG93ZWQoc2VsZik6Ci0gICAgICAgIHJl
dHVybiBsc2FuX2FsbG93ZWQoc2VsZikKKyAgICAgICAgcmV0dXJuIHNldF9wcm9wKCJsc2FuLWFs
bG93ZWQiLCBzZWxmKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIGxlYWtfYWxsb3dlZChzZWxm
KToKKyAgICAgICAgcmV0dXJuIHNldF9wcm9wKCJsZWFrLWFsbG93ZWQiLCBzZWxmKQorCisgICAg
QHByb3BlcnR5CisgICAgZGVmIGxlYWtfdGhyZXNob2xkKHNlbGYpOgorICAgICAgICByZXR1cm4g
bGVha190aHJlc2hvbGQoc2VsZikKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBsc2FuX21heF9z
dGFja19kZXB0aChzZWxmKToKKyAgICAgICAgcmV0dXJuIGludF9wcm9wKCJsc2FuLW1heC1zdGFj
ay1kZXB0aCIsIHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZnV6enkoc2VsZik6Cisg
ICAgICAgIHJldHVybiBmdXp6eV9wcm9wKHNlbGYpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYg
ZXhwZWN0ZWQoc2VsZik6CisgICAgICAgIHJldHVybiBsaXN0X3Byb3AoImV4cGVjdGVkIiwgc2Vs
ZilbMF0KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBrbm93bl9pbnRlcm1pdHRlbnQoc2VsZik6
CisgICAgICAgIHJldHVybiBsaXN0X3Byb3AoImV4cGVjdGVkIiwgc2VsZilbMTpdCiAKICAgICBk
ZWYgYXBwZW5kKHNlbGYsIG5vZGUpOgogICAgICAgICAiIiJBZGQgYSBzdWJ0ZXN0IHRvIHRoZSBj
dXJyZW50IHRlc3QKQEAgLTI2OCwxMiArNDU5LDYgQEAgY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJ
dGVtKToKIAogCiBjbGFzcyBTdWJ0ZXN0Tm9kZShUZXN0Tm9kZSk6Ci0gICAgZGVmIF9faW5pdF9f
KHNlbGYsIG5hbWUpOgotICAgICAgICAiIiJUcmVlIG5vZGUgYXNzb2NpYXRlZCB3aXRoIGEgcGFy
dGljdWxhciBzdWJ0ZXN0IGluIGEgbWFuaWZlc3QKLQotICAgICAgICA6cGFyYW0gbmFtZTogbmFt
ZSBvZiB0aGUgc3VidGVzdCIiIgotICAgICAgICBUZXN0Tm9kZS5fX2luaXRfXyhzZWxmLCBuYW1l
KQotCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgogICAgICAgICBpZiBz
ZWxmLl9kYXRhOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci9tYW5pZmVzdGluY2x1ZGUucHkKaW5kZXggYTY4ZmRlYjM5YmM2ZjYzZDM4
NzU0NDk1MmExZWUyOGVhNmEyZjE4ZC4uZDMwMjgzMWE1N2FiYmFhZGQ3NWZlNDllMDk0NDgyZGMx
NDIyM2VhMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0aW5jbHVkZS5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5CkBAIC02LDExICs2LDExIEBAIGJlIGlu
Y2x1ZGVkIG9yIGV4Y2x1ZGVkLgogIiIiCiBpbXBvcnQgZ2xvYgogaW1wb3J0IG9zCi1pbXBvcnQg
dXJscGFyc2UKK2Zyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJscGFyc2UsIHVy
bHNwbGl0CiAKLWZyb20gd3B0bWFuaWZlc3Qubm9kZSBpbXBvcnQgRGF0YU5vZGUKLWZyb20gd3B0
bWFuaWZlc3QuYmFja2VuZHMgaW1wb3J0IGNvbmRpdGlvbmFsCi1mcm9tIHdwdG1hbmlmZXN0LmJh
Y2tlbmRzLmNvbmRpdGlvbmFsIGltcG9ydCBNYW5pZmVzdEl0ZW0KK2Zyb20gLndwdG1hbmlmZXN0
Lm5vZGUgaW1wb3J0IERhdGFOb2RlCitmcm9tIC53cHRtYW5pZmVzdC5iYWNrZW5kcyBpbXBvcnQg
Y29uZGl0aW9uYWwKK2Zyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzLmNvbmRpdGlvbmFsIGltcG9y
dCBNYW5pZmVzdEl0ZW0KIAogCiBjbGFzcyBJbmNsdWRlTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToK
QEAgLTY4LDcgKzY4LDcgQEAgY2xhc3MgSW5jbHVkZU1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6CiAK
ICAgICBkZWYgX2dldF9jb21wb25lbnRzKHNlbGYsIHVybCk6CiAgICAgICAgIHJ2ID0gW10KLSAg
ICAgICAgdXJsX3BhcnRzID0gdXJscGFyc2UudXJsc3BsaXQodXJsKQorICAgICAgICB1cmxfcGFy
dHMgPSB1cmxzcGxpdCh1cmwpCiAgICAgICAgIHZhcmlhbnQgPSAiIgogICAgICAgICBpZiB1cmxf
cGFydHMucXVlcnk6CiAgICAgICAgICAgICB2YXJpYW50ICs9ICI/IiArIHVybF9wYXJ0cy5xdWVy
eQpAQCAtMTAzLDcgKzEwMyw3IEBAIGNsYXNzIEluY2x1ZGVNYW5pZmVzdChNYW5pZmVzdEl0ZW0p
OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAg
ICAgICAgICB1cmwgPSB0ZXN0LnVybAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgcXVlcnkg
b3IgZnJhZ21lbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyc2VkID0gdXJscGFy
c2UudXJscGFyc2UodXJsKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnNlZCA9IHVy
bHBhcnNlKHVybCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHF1ZXJ5IGFuZCBx
dWVyeSAhPSBwYXJzZWQucXVlcnkpIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IChmcmFnbWVudCBhbmQgZnJhZ21lbnQgIT0gcGFyc2VkLmZyYWdtZW50KSk6CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
bWFuaWZlc3R1cGRhdGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3R1cGRhdGUucHkKaW5kZXgg
MWY4YmE3N2U4ZjllMGRlMzJmYTQ5N2Q1NmVjYzk5OWVhNzIyZjQ1Mi4uYWY5YWYxOGQ5MDcxNWQ0
M2JiY2QyYWU0N2NlNzYyNzViYjBlMTU3NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlm
ZXN0dXBkYXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9tYW5pZmVzdHVwZGF0ZS5weQpAQCAtMSwx
NSArMSwyMCBAQAotaW1wb3J0IGl0ZXJ0b29scworZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmlu
dF9mdW5jdGlvbgogaW1wb3J0IG9zCi1pbXBvcnQgdXJscGFyc2UKLWZyb20gY29sbGVjdGlvbnMg
aW1wb3J0IG5hbWVkdHVwbGUsIGRlZmF1bHRkaWN0Ci0KLWZyb20gd3B0bWFuaWZlc3Qubm9kZSBp
bXBvcnQgKERhdGFOb2RlLCBDb25kaXRpb25hbE5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQmluYXJ5T3BlcmF0b3JOb2RlLCBWYXJpYWJs
ZU5vZGUsIFN0cmluZ05vZGUsIE51bWJlck5vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBVbmFyeUV4cHJlc3Npb25Ob2RlLCBVbmFyeU9wZXJhdG9yTm9kZSwgS2V5VmFsdWVOb2Rl
KQotZnJvbSB3cHRtYW5pZmVzdC5iYWNrZW5kcyBpbXBvcnQgY29uZGl0aW9uYWwKLWZyb20gd3B0
bWFuaWZlc3QuYmFja2VuZHMuY29uZGl0aW9uYWwgaW1wb3J0IE1hbmlmZXN0SXRlbQotCi1pbXBv
cnQgZXhwZWN0ZWQKK2Zyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsam9pbiwg
dXJsc3BsaXQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUsIGRlZmF1bHRkaWN0
LCBkZXF1ZQorZnJvbSBtYXRoIGltcG9ydCBjZWlsCitmcm9tIHNpeCBpbXBvcnQgaXRlcmtleXMs
IGl0ZXJ2YWx1ZXMsIGl0ZXJpdGVtcworCitmcm9tIC53cHRtYW5pZmVzdCBpbXBvcnQgc2VyaWFs
aXplCitmcm9tIC53cHRtYW5pZmVzdC5ub2RlIGltcG9ydCAoRGF0YU5vZGUsIENvbmRpdGlvbmFs
Tm9kZSwgQmluYXJ5RXhwcmVzc2lvbk5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBCaW5hcnlPcGVyYXRvck5vZGUsIE51bWJlck5vZGUsIFN0cmluZ05vZGUsIFZhcmlhYmxlTm9k
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZhbHVlTm9kZSwgVW5hcnlFeHByZXNz
aW9uTm9kZSwgVW5hcnlPcGVyYXRvck5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBMaXN0Tm9kZSkKK2Zyb20gLndwdG1hbmlmZXN0LmJhY2tlbmRzIGltcG9ydCBjb25kaXRpb25h
bAorZnJvbSAud3B0bWFuaWZlc3QuYmFja2VuZHMuY29uZGl0aW9uYWwgaW1wb3J0IE1hbmlmZXN0
SXRlbQorCitmcm9tIC4gaW1wb3J0IGV4cGVjdGVkCitmcm9tIC4gaW1wb3J0IGV4cGVjdGVkdHJl
ZQogCiAiIiJNYW5pZmVzdCBzdHJ1Y3R1cmUgdXNlZCB0byB1cGRhdGUgdGhlIGV4cGVjdGVkIHJl
c3VsdHMgb2YgYSB0ZXN0CiAKQEAgLTI1LDcgKzMwLDcgQEAgYXQgcnVudGltZS4KIFdoZW4gYSBy
ZXN1bHQgZm9yIGEgdGVzdCBpcyB0byBiZSB1cGRhdGVkIHNldF9yZXN1bHQgb24gdGhlCiBbU3Vi
XVRlc3ROb2RlIGlzIGNhbGxlZCB0byBzdG9yZSB0aGUgbmV3IHJlc3VsdCwgYWxvbmdzaWRlIHRo
ZQogZXhpc3RpbmcgY29uZGl0aW9uYWwgdGhhdCByZXN1bHQncyBydW4gaW5mbyBtYXRjaGVkLCBp
ZiBhbnkuIE9uY2UgYWxsCi1uZXcgcmVzdWx0cyBhcmUga25vd24sIGNvYWxlc2NlX2V4cGVjdGVk
IGlzIGNhbGxlZCB0byBjb21wdXRlIHRoZSBuZXcKK25ldyByZXN1bHRzIGFyZSBrbm93biwgdXBk
YXRlIGlzIGNhbGxlZCB0byBjb21wdXRlIHRoZSBuZXcKIHNldCBvZiByZXN1bHRzIGFuZCBjb25k
aXRpb25hbHMuIFRoZSBBU1Qgb2YgdGhlIHVuZGVybHlpbmcgcGFyc2VkIG1hbmlmZXN0CiBpcyB1
cGRhdGVkIHdpdGggdGhlIGNoYW5nZXMsIGFuZCB0aGUgcmVzdWx0IGlzIHNlcmlhbGlzZWQgdG8g
YSBmaWxlLgogIiIiCkBAIC01NSwxOSArNjAsNTAgQEAgZGVmIGRhdGFfY2xzX2dldHRlcihvdXRw
dXRfbm9kZSwgdmlzaXRlZF9ub2RlKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgogCiAKK2Ns
YXNzIFVwZGF0ZVByb3BlcnRpZXMob2JqZWN0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWFu
aWZlc3QsICoqa3dhcmdzKToKKyAgICAgICAgc2VsZi5fbWFuaWZlc3QgPSBtYW5pZmVzdAorICAg
ICAgICBzZWxmLl9jbGFzc2VzID0ga3dhcmdzCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwg
bmFtZSk6CisgICAgICAgIGlmIG5hbWUgaW4gc2VsZi5fY2xhc3NlczoKKyAgICAgICAgICAgIHJ2
ID0gc2VsZi5fY2xhc3Nlc1tuYW1lXShzZWxmLl9tYW5pZmVzdCkKKyAgICAgICAgICAgIHNldGF0
dHIoc2VsZiwgbmFtZSwgcnYpCisgICAgICAgICAgICByZXR1cm4gcnYKKyAgICAgICAgcmFpc2Ug
QXR0cmlidXRlRXJyb3IKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgbmFtZSk6CisgICAg
ICAgIHJldHVybiBuYW1lIGluIHNlbGYuX2NsYXNzZXMKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxm
KToKKyAgICAgICAgZm9yIG5hbWUgaW4gaXRlcmtleXMoc2VsZi5fY2xhc3Nlcyk6CisgICAgICAg
ICAgICB5aWVsZCBnZXRhdHRyKHNlbGYsIG5hbWUpCisKKwogY2xhc3MgRXhwZWN0ZWRNYW5pZmVz
dChNYW5pZmVzdEl0ZW0pOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2RlLCB0ZXN0X3BhdGg9
Tm9uZSwgdXJsX2Jhc2U9Tm9uZSwgcHJvcGVydHlfb3JkZXI9Tm9uZSwKLSAgICAgICAgICAgICAg
ICAgYm9vbGVhbl9wcm9wZXJ0aWVzPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2Rl
LCB0ZXN0X3BhdGgsIHVybF9iYXNlLCBydW5faW5mb19wcm9wZXJ0aWVzLAorICAgICAgICAgICAg
ICAgICB1cGRhdGVfaW50ZXJtaXR0ZW50PUZhbHNlLCByZW1vdmVfaW50ZXJtaXR0ZW50PUZhbHNl
KToKICAgICAgICAgIiIiT2JqZWN0IHJlcHJlc2VudGluZyBhbGwgdGhlIHRlc3RzIGluIGEgcGFy
dGljdWxhciBtYW5pZmVzdAogCiAgICAgICAgIDpwYXJhbSBub2RlOiBBU1QgTm9kZSBhc3NvY2lh
dGVkIHdpdGggdGhpcyBvYmplY3QuIElmIHRoaXMgaXMgTm9uZSwKICAgICAgICAgICAgICAgICAg
ICAgIGEgbmV3IEFTVCBpcyBjcmVhdGVkIHRvIGFzc29jaWF0ZSB3aXRoIHRoaXMgbWFuaWZlc3Qu
CiAgICAgICAgIDpwYXJhbSB0ZXN0X3BhdGg6IFBhdGggb2YgdGhlIHRlc3QgZmlsZSBhc3NvY2lh
dGVkIHdpdGggdGhpcyBtYW5pZmVzdC4KICAgICAgICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIHVy
bCBmb3Igc2VydmluZyB0aGUgdGVzdHMgaW4gdGhpcyBtYW5pZmVzdC4KLSAgICAgICAgOnBhcmFt
IHByb3BlcnR5X29yZGVyOiBMaXN0IG9mIHByb3BlcnRpZXMgdG8gdXNlIGluIGV4cGVjdGF0aW9u
IG1ldGFkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSBtb3N0IHRvIGxl
YXN0IHNpZ25pZmljYW50LgotICAgICAgICA6cGFyYW0gYm9vbGVhbl9wcm9wZXJ0aWVzOiBTZXQg
b2YgcHJvcGVydGllcyBpbiBwcm9wZXJ0eV9vcmRlciB0aGF0IHNob3VsZAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBiZSB0cmVhdGVkIGFzIGJvb2xlYW4uCisgICAgICAgIDpw
YXJhbSBydW5faW5mb19wcm9wZXJ0aWVzOiBUdXBsZSBvZiAoW3Byb3BlcnR5IG5hbWVdLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtwcm9wZXJ0eV9uYW1l
OiBbZGVwZW5kZW50IHByb3BlcnR5XX0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBUaGUgZmlyc3QgcGFydCBsaXN0cyBydW5faW5mbyBwcm9wZXJ0aWVzCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGFyZSBhbHdheXMgdXNlZCBpbiB0aGUgdXBk
YXRlLCB0aGUgc2Vjb25kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBz
IHByb3BlcnR5IG5hbWVzIHRvIGFkZGl0aW9uYWwgcHJvcGVydGllcyB0aGF0CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjYW4gYmUgY29uc2lkZXJlZCBpZiB3ZSBhbHJlYWR5
IGhhdmUgYSBjb25kaXRpb24gb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRoZSBrZXkgcHJvcGVydHkgZS5nLiB7ImZvbyI6IFsiYmFyIl19IG1lYW5zIHRoYXQKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdlIGNvbnNpZGVyIG1ha2luZyBjb25kaXRp
b25zIG9uIGJhciBvbmx5IGFmdGVyIHdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhbHJlYWR5IG1hZGUgb25lIG9uIGZvby4KKyAgICAgICAgOnBhcmFtIHVwZGF0ZV9pbnRl
cm1pdHRlbnQ6IFdoZW4gVHJ1ZSwgaW50ZXJtaXR0ZW50IHN0YXR1c2VzIHdpbGwgYmUgcmVjb3Jk
ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzIGBleHBlY3RlZGAgaW4g
dGhlIHRlc3QgbWV0YWRhdGEuCisgICAgICAgIDpwYXJhbTogcmVtb3ZlX2ludGVybWl0dGVudDog
V2hlbiBUcnVlLCBvbGQgaW50ZXJtaXR0ZW50IHN0YXR1c2VzIHdpbGwgYmUgcmVtb3ZlZAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm8gbG9uZ2VyIGludGVybWl0dGVu
dC4gVGhpcyBpcyBvbmx5IHJlbGV2YW50IGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBgdXBkYXRlX2ludGVybWl0dGVudGAgaXMgYWxzbyBUcnVlLCBiZWNhdXNlIGlmIEZh
bHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIG1ldGFkYXRhIHdp
bGwgc2ltcGx5IHVwZGF0ZSBvbmUgYGV4cGVjdGVkYHN0YXR1cy4KICAgICAgICAgIiIiCiAgICAg
ICAgIGlmIG5vZGUgaXMgTm9uZToKICAgICAgICAgICAgIG5vZGUgPSBEYXRhTm9kZShOb25lKQpA
QCAtNzYsMTcgKzExMiwzMCBAQCBjbGFzcyBFeHBlY3RlZE1hbmlmZXN0KE1hbmlmZXN0SXRlbSk6
CiAgICAgICAgIHNlbGYudGVzdF9wYXRoID0gdGVzdF9wYXRoCiAgICAgICAgIHNlbGYudXJsX2Jh
c2UgPSB1cmxfYmFzZQogICAgICAgICBhc3NlcnQgc2VsZi51cmxfYmFzZSBpcyBub3QgTm9uZQot
ICAgICAgICBzZWxmLm1vZGlmaWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5ib29sZWFuX3Byb3Bl
cnRpZXMgPSBib29sZWFuX3Byb3BlcnRpZXMKLSAgICAgICAgc2VsZi5wcm9wZXJ0eV9vcmRlciA9
IHByb3BlcnR5X29yZGVyCi0gICAgICAgIHNlbGYudXBkYXRlX3Byb3BlcnRpZXMgPSB7Ci0gICAg
ICAgICAgICAibHNhbiI6IExzYW5VcGRhdGUoc2VsZiksCi0gICAgICAgIH0KKyAgICAgICAgc2Vs
Zi5fbW9kaWZpZWQgPSBGYWxzZQorICAgICAgICBzZWxmLnJ1bl9pbmZvX3Byb3BlcnRpZXMgPSBy
dW5faW5mb19wcm9wZXJ0aWVzCisgICAgICAgIHNlbGYudXBkYXRlX2ludGVybWl0dGVudCA9IHVw
ZGF0ZV9pbnRlcm1pdHRlbnQKKyAgICAgICAgc2VsZi5yZW1vdmVfaW50ZXJtaXR0ZW50ID0gcmVt
b3ZlX2ludGVybWl0dGVudAorICAgICAgICBzZWxmLnVwZGF0ZV9wcm9wZXJ0aWVzID0gVXBkYXRl
UHJvcGVydGllcyhzZWxmLCAqKnsKKyAgICAgICAgICAgICJsc2FuIjogTHNhblVwZGF0ZSwKKyAg
ICAgICAgICAgICJsZWFrX29iamVjdCI6IExlYWtPYmplY3RVcGRhdGUsCisgICAgICAgICAgICAi
bGVha190aHJlc2hvbGQiOiBMZWFrVGhyZXNob2xkVXBkYXRlLAorICAgICAgICB9KQorCisgICAg
QHByb3BlcnR5CisgICAgZGVmIG1vZGlmaWVkKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9tb2Rp
ZmllZDoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBhbnkoaXRlbS5t
b2RpZmllZCBmb3IgaXRlbSBpbiBzZWxmLmNoaWxkcmVuKQorCisgICAgQG1vZGlmaWVkLnNldHRl
cgorICAgIGRlZiBtb2RpZmllZChzZWxmLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX21vZGlmaWVk
ID0gdmFsdWUKIAogICAgIGRlZiBhcHBlbmQoc2VsZiwgY2hpbGQpOgogICAgICAgICBNYW5pZmVz
dEl0ZW0uYXBwZW5kKHNlbGYsIGNoaWxkKQogICAgICAgICBpZiBjaGlsZC5pZCBpbiBzZWxmLmNo
aWxkX21hcDoKLSAgICAgICAgICAgIHByaW50ICJXYXJuaW5nOiBEdXBsaWNhdGUgaGVhZGluZyAl
cyIgJSBjaGlsZC5pZAorICAgICAgICAgICAgcHJpbnQoIldhcm5pbmc6IER1cGxpY2F0ZSBoZWFk
aW5nICVzIiAlIGNoaWxkLmlkKQogICAgICAgICBzZWxmLmNoaWxkX21hcFtjaGlsZC5pZF0gPSBj
aGlsZAogCiAgICAgZGVmIF9yZW1vdmVfY2hpbGQoc2VsZiwgY2hpbGQpOgpAQCAtMTEwLDggKzE1
OSw4IEBAIGNsYXNzIEV4cGVjdGVkTWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKIAogICAgIEBwcm9w
ZXJ0eQogICAgIGRlZiB1cmwoc2VsZik6Ci0gICAgICAgIHJldHVybiB1cmxwYXJzZS51cmxqb2lu
KHNlbGYudXJsX2Jhc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2lu
KHNlbGYudGVzdF9wYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkpCisgICAgICAgIHJldHVybiB1cmxq
b2luKHNlbGYudXJsX2Jhc2UsCisgICAgICAgICAgICAgICAgICAgICAgICIvIi5qb2luKHNlbGYu
dGVzdF9wYXRoLnNwbGl0KG9zLnBhdGguc2VwKSkpCiAKICAgICBkZWYgc2V0X2xzYW4oc2VsZiwg
cnVuX2luZm8sIHJlc3VsdCk6CiAgICAgICAgICIiIlNldCB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0
IGluIGEgcGFydGljdWxhciBydW4KQEAgLTExOSwxMiArMTY4LDI4IEBAIGNsYXNzIEV4cGVjdGVk
TWFuaWZlc3QoTWFuaWZlc3RJdGVtKToKICAgICAgICAgOnBhcmFtIHJ1bl9pbmZvOiBEaWN0aW9u
YXJ5IG9mIHJ1bl9pbmZvIHBhcmFtZXRlcnMgY29ycmVzcG9uZGluZwogICAgICAgICAgICAgICAg
ICAgICAgICAgIHRvIHRoaXMgcnVuCiAgICAgICAgIDpwYXJhbSByZXN1bHQ6IExzYW4gdmlvbGF0
aW9ucyBkZXRlY3RlZCIiIgorICAgICAgICBzZWxmLnVwZGF0ZV9wcm9wZXJ0aWVzLmxzYW4uc2V0
KHJ1bl9pbmZvLCByZXN1bHQpCisKKyAgICBkZWYgc2V0X2xlYWtfb2JqZWN0KHNlbGYsIHJ1bl9p
bmZvLCByZXN1bHQpOgorICAgICAgICAiIiJTZXQgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdCBpbiBh
IHBhcnRpY3VsYXIgcnVuCisKKyAgICAgICAgOnBhcmFtIHJ1bl9pbmZvOiBEaWN0aW9uYXJ5IG9m
IHJ1bl9pbmZvIHBhcmFtZXRlcnMgY29ycmVzcG9uZGluZworICAgICAgICAgICAgICAgICAgICAg
ICAgIHRvIHRoaXMgcnVuCisgICAgICAgIDpwYXJhbSByZXN1bHQ6IExlYWtlZCBvYmplY3RzIGRl
bGV0ZWMiIiIKKyAgICAgICAgc2VsZi51cGRhdGVfcHJvcGVydGllcy5sZWFrX29iamVjdC5zZXQo
cnVuX2luZm8sIHJlc3VsdCkKKworICAgIGRlZiBzZXRfbGVha190aHJlc2hvbGQoc2VsZiwgcnVu
X2luZm8sIHJlc3VsdCk6CisgICAgICAgICIiIlNldCB0aGUgcmVzdWx0IG9mIHRoZSB0ZXN0IGlu
IGEgcGFydGljdWxhciBydW4KIAotICAgICAgICBzZWxmLnVwZGF0ZV9wcm9wZXJ0aWVzWyJsc2Fu
Il0uc2V0KHJ1bl9pbmZvLCByZXN1bHQpCisgICAgICAgIDpwYXJhbSBydW5faW5mbzogRGljdGlv
bmFyeSBvZiBydW5faW5mbyBwYXJhbWV0ZXJzIGNvcnJlc3BvbmRpbmcKKyAgICAgICAgICAgICAg
ICAgICAgICAgICB0byB0aGlzIHJ1bgorICAgICAgICA6cGFyYW0gcmVzdWx0OiBUb3RhbCBudW1i
ZXIgb2YgYnl0ZXMgbGVha2VkIiIiCisgICAgICAgIHNlbGYudXBkYXRlX3Byb3BlcnRpZXMubGVh
a190aHJlc2hvbGQuc2V0KHJ1bl9pbmZvLCByZXN1bHQpCiAKLSAgICBkZWYgY29hbGVzY2VfcHJv
cGVydGllcyhzZWxmLCBzdGFiaWxpdHkpOgotICAgICAgICBmb3IgcHJvcF91cGRhdGUgaW4gc2Vs
Zi51cGRhdGVfcHJvcGVydGllcy5pdGVydmFsdWVzKCk6Ci0gICAgICAgICAgICBwcm9wX3VwZGF0
ZS5jb2FsZXNjZShzdGFiaWxpdHkpCisgICAgZGVmIHVwZGF0ZShzZWxmLCBmdWxsX3VwZGF0ZSwg
ZGlzYWJsZV9pbnRlcm1pdHRlbnQpOgorICAgICAgICBmb3IgcHJvcF91cGRhdGUgaW4gc2VsZi51
cGRhdGVfcHJvcGVydGllczoKKyAgICAgICAgICAgIHByb3BfdXBkYXRlLnVwZGF0ZShmdWxsX3Vw
ZGF0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2ludGVybWl0dGVu
dCkKIAogCiBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgpAQCAtMTM3LDExICsyMDIsMTQg
QEAgY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToKICAgICAgICAgc2VsZi5zdWJ0ZXN0cyA9
IHt9CiAgICAgICAgIHNlbGYuX2Zyb21fZmlsZSA9IFRydWUKICAgICAgICAgc2VsZi5uZXdfZGlz
YWJsZWQgPSBGYWxzZQotICAgICAgICBzZWxmLnVwZGF0ZV9wcm9wZXJ0aWVzID0gewotICAgICAg
ICAgICAgImV4cGVjdGVkIjogRXhwZWN0ZWRVcGRhdGUoc2VsZiksCi0gICAgICAgICAgICAibWF4
LWFzc2VydHMiOiBNYXhBc3NlcnRzVXBkYXRlKHNlbGYpLAotICAgICAgICAgICAgIm1pbi1hc3Nl
cnRzIjogTWluQXNzZXJ0c1VwZGF0ZShzZWxmKQotICAgICAgICB9CisgICAgICAgIHNlbGYuaGFz
X3Jlc3VsdCA9IEZhbHNlCisgICAgICAgIHNlbGYubW9kaWZpZWQgPSBGYWxzZQorICAgICAgICBz
ZWxmLnVwZGF0ZV9wcm9wZXJ0aWVzID0gVXBkYXRlUHJvcGVydGllcygKKyAgICAgICAgICAgIHNl
bGYsCisgICAgICAgICAgICBleHBlY3RlZD1FeHBlY3RlZFVwZGF0ZSwKKyAgICAgICAgICAgIG1h
eF9hc3NlcnRzPU1heEFzc2VydHNVcGRhdGUsCisgICAgICAgICAgICBtaW5fYXNzZXJ0cz1NaW5B
c3NlcnRzVXBkYXRlCisgICAgICAgICkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBjcmVh
dGUoY2xzLCB0ZXN0X2lkKToKQEAgLTE0OSw5ICsyMTcsNyBAQCBjbGFzcyBUZXN0Tm9kZShNYW5p
ZmVzdEl0ZW0pOgogCiAgICAgICAgIDpwYXJhbSB0ZXN0X3R5cGU6IFRoZSB0eXBlIG9mIHRoZSB0
ZXN0CiAgICAgICAgIDpwYXJhbSB0ZXN0X2lkOiBUaGUgaWQgb2YgdGhlIHRlc3QiIiIKLQotICAg
ICAgICB1cmwgPSB0ZXN0X2lkCi0gICAgICAgIG5hbWUgPSB1cmwucnNwbGl0KCIvIiwgMSlbMV0K
KyAgICAgICAgbmFtZSA9IHRlc3RfaWRbbGVuKHVybHNwbGl0KHRlc3RfaWQpLnBhdGgucnNwbGl0
KCIvIiwgMSlbMF0pICsgMTpdCiAgICAgICAgIG5vZGUgPSBEYXRhTm9kZShuYW1lKQogICAgICAg
ICBzZWxmID0gY2xzKG5vZGUpCiAKQEAgLTE2MCw3ICsyMjYsNyBAQCBjbGFzcyBUZXN0Tm9kZShN
YW5pZmVzdEl0ZW0pOgogCiAgICAgQHByb3BlcnR5CiAgICAgZGVmIGlzX2VtcHR5KHNlbGYpOgot
ICAgICAgICBpZ25vcmVfa2V5cyA9IHNldChbInR5cGUiXSkKKyAgICAgICAgaWdub3JlX2tleXMg
PSB7InR5cGUifQogICAgICAgICBpZiBzZXQoc2VsZi5fZGF0YS5rZXlzKCkpIC0gaWdub3JlX2tl
eXM6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgcmV0dXJuIGFsbChjaGlsZC5p
c19lbXB0eSBmb3IgY2hpbGQgaW4gc2VsZi5jaGlsZHJlbikKQEAgLTE3Myw3ICsyMzksNyBAQCBj
bGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0ZW0pOgogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpZChz
ZWxmKToKICAgICAgICAgIiIiVGhlIGlkIG9mIHRoZSB0ZXN0IHJlcHJlc2VudGVkIGJ5IHRoaXMg
VGVzdE5vZGUiIiIKLSAgICAgICAgcmV0dXJuIHVybHBhcnNlLnVybGpvaW4oc2VsZi5wYXJlbnQu
dXJsLCBzZWxmLm5hbWUpCisgICAgICAgIHJldHVybiB1cmxqb2luKHNlbGYucGFyZW50LnVybCwg
c2VsZi5uYW1lKQogCiAgICAgZGVmIGRpc2FibGVkKHNlbGYsIHJ1bl9pbmZvKToKICAgICAgICAg
IiIiQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdGhpcyB0ZXN0IGlzIGRpc2FibGVkIHdoZW4g
cnVuIGluIGFuCkBAIC0xODksMzggKzI1NSwxNCBAQCBjbGFzcyBUZXN0Tm9kZShNYW5pZmVzdEl0
ZW0pOgogICAgICAgICA6cGFyYW0gcnVuX2luZm86IERpY3Rpb25hcnkgb2YgcnVuX2luZm8gcGFy
YW1ldGVycyBjb3JyZXNwb25kaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhpcyBy
dW4KICAgICAgICAgOnBhcmFtIHJlc3VsdDogU3RhdHVzIG9mIHRoZSB0ZXN0IGluIHRoaXMgcnVu
IiIiCi0KLSAgICAgICAgc2VsZi51cGRhdGVfcHJvcGVydGllc1siZXhwZWN0ZWQiXS5zZXQocnVu
X2luZm8sIHJlc3VsdCkKKyAgICAgICAgc2VsZi51cGRhdGVfcHJvcGVydGllcy5leHBlY3RlZC5z
ZXQocnVuX2luZm8sIHJlc3VsdCkKIAogICAgIGRlZiBzZXRfYXNzZXJ0cyhzZWxmLCBydW5faW5m
bywgY291bnQpOgogICAgICAgICAiIiJTZXQgdGhlIGFzc2VydCBjb3VudCBvZiBhIHRlc3QKIAog
ICAgICAgICAiIiIKLSAgICAgICAgc2VsZi51cGRhdGVfcHJvcGVydGllc1sibWluLWFzc2VydHMi
XS5zZXQocnVuX2luZm8sIGNvdW50KQotICAgICAgICBzZWxmLnVwZGF0ZV9wcm9wZXJ0aWVzWyJt
YXgtYXNzZXJ0cyJdLnNldChydW5faW5mbywgY291bnQpCi0KLSAgICBkZWYgX2FkZF9rZXlfdmFs
dWUoc2VsZiwgbm9kZSwgdmFsdWVzKToKLSAgICAgICAgTWFuaWZlc3RJdGVtLl9hZGRfa2V5X3Zh
bHVlKHNlbGYsIG5vZGUsIHZhbHVlcykKLSAgICAgICAgaWYgbm9kZS5kYXRhIGluIHNlbGYudXBk
YXRlX3Byb3BlcnRpZXM6Ci0gICAgICAgICAgICBuZXdfdXBkYXRlZCA9IFtdCi0gICAgICAgICAg
ICBzZWxmLnVwZGF0ZV9wcm9wZXJ0aWVzW25vZGUuZGF0YV0udXBkYXRlZCA9IG5ld191cGRhdGVk
Ci0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gdmFsdWVzOgotICAgICAgICAgICAgICAgIG5ld191
cGRhdGVkLmFwcGVuZCgodmFsdWUsIFtdKSkKLQotICAgIGRlZiBjbGVhcihzZWxmLCBrZXkpOgot
ICAgICAgICAiIiJDbGVhciBhbGwgdGhlIGV4cGVjdGVkIGRhdGEgZm9yIHRoaXMgdGVzdCBhbmQg
YWxsIG9mIGl0cyBzdWJ0ZXN0cyIiIgotCi0gICAgICAgIHNlbGYudXBkYXRlZCA9IFtdCi0gICAg
ICAgIGlmIGtleSBpbiBzZWxmLl9kYXRhOgotICAgICAgICAgICAgZm9yIGNoaWxkIGluIHNlbGYu
bm9kZS5jaGlsZHJlbjoKLSAgICAgICAgICAgICAgICBpZiAoaXNpbnN0YW5jZShjaGlsZCwgS2V5
VmFsdWVOb2RlKSBhbmQKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQuZGF0YSA9PSBrZXkpOgot
ICAgICAgICAgICAgICAgICAgICBjaGlsZC5yZW1vdmUoKQotICAgICAgICAgICAgICAgICAgICBk
ZWwgc2VsZi5fZGF0YVtrZXldCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAg
Zm9yIHN1YnRlc3QgaW4gc2VsZi5zdWJ0ZXN0cy5pdGVydmFsdWVzKCk6Ci0gICAgICAgICAgICBz
dWJ0ZXN0LmNsZWFyKGtleSkKKyAgICAgICAgc2VsZi51cGRhdGVfcHJvcGVydGllcy5taW5fYXNz
ZXJ0cy5zZXQocnVuX2luZm8sIGNvdW50KQorICAgICAgICBzZWxmLnVwZGF0ZV9wcm9wZXJ0aWVz
Lm1heF9hc3NlcnRzLnNldChydW5faW5mbywgY291bnQpCiAKICAgICBkZWYgYXBwZW5kKHNlbGYs
IG5vZGUpOgogICAgICAgICBjaGlsZCA9IE1hbmlmZXN0SXRlbS5hcHBlbmQoc2VsZiwgbm9kZSkK
QEAgLTI0MCw5ICsyODIsMTAgQEAgY2xhc3MgVGVzdE5vZGUoTWFuaWZlc3RJdGVtKToKICAgICAg
ICAgICAgIHNlbGYuYXBwZW5kKHN1YnRlc3QpCiAgICAgICAgICAgICByZXR1cm4gc3VidGVzdAog
Ci0gICAgZGVmIGNvYWxlc2NlX3Byb3BlcnRpZXMoc2VsZiwgc3RhYmlsaXR5KToKLSAgICAgICAg
Zm9yIHByb3BfdXBkYXRlIGluIHNlbGYudXBkYXRlX3Byb3BlcnRpZXMuaXRlcnZhbHVlcygpOgot
ICAgICAgICAgICAgcHJvcF91cGRhdGUuY29hbGVzY2Uoc3RhYmlsaXR5KQorICAgIGRlZiB1cGRh
dGUoc2VsZiwgZnVsbF91cGRhdGUsIGRpc2FibGVfaW50ZXJtaXR0ZW50KToKKyAgICAgICAgZm9y
IHByb3BfdXBkYXRlIGluIHNlbGYudXBkYXRlX3Byb3BlcnRpZXM6CisgICAgICAgICAgICBwcm9w
X3VwZGF0ZS51cGRhdGUoZnVsbF91cGRhdGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZGlzYWJsZV9pbnRlcm1pdHRlbnQpCiAKIAogY2xhc3MgU3VidGVzdE5vZGUoVGVzdE5vZGUp
OgpAQCAtMjYzLDQxICszMDYsODYgQEAgY2xhc3MgU3VidGVzdE5vZGUoVGVzdE5vZGUpOgogICAg
ICAgICByZXR1cm4gVHJ1ZQogCiAKK2RlZiBidWlsZF9jb25kaXRpb25hbF90cmVlKF8sIHJ1bl9p
bmZvX3Byb3BlcnRpZXMsIHJlc3VsdHMpOgorICAgIHByb3BlcnRpZXMsIGRlcGVuZGVudF9wcm9w
cyA9IHJ1bl9pbmZvX3Byb3BlcnRpZXMKKyAgICByZXR1cm4gZXhwZWN0ZWR0cmVlLmJ1aWxkX3Ry
ZWUocHJvcGVydGllcywgZGVwZW5kZW50X3Byb3BzLCByZXN1bHRzKQorCisKK2RlZiBidWlsZF91
bmNvbmRpdGlvbmFsX3RyZWUoXywgcnVuX2luZm9fcHJvcGVydGllcywgcmVzdWx0cyk6CisgICAg
cm9vdCA9IGV4cGVjdGVkdHJlZS5Ob2RlKE5vbmUsIE5vbmUpCisgICAgZm9yIHJ1bl9pbmZvLCB2
YWx1ZXMgaW4gaXRlcml0ZW1zKHJlc3VsdHMpOgorICAgICAgICBmb3IgdmFsdWUsIGNvdW50IGlu
IGl0ZXJpdGVtcyh2YWx1ZXMpOgorICAgICAgICAgICAgcm9vdC5yZXN1bHRfdmFsdWVzW3ZhbHVl
XSArPSBjb3VudAorICAgICAgICByb290LnJ1bl9pbmZvLmFkZChydW5faW5mbykKKyAgICByZXR1
cm4gcm9vdAorCisKIGNsYXNzIFByb3BlcnR5VXBkYXRlKG9iamVjdCk6CiAgICAgcHJvcGVydHlf
bmFtZSA9IE5vbmUKICAgICBjbHNfZGVmYXVsdF92YWx1ZSA9IE5vbmUKICAgICB2YWx1ZV90eXBl
ID0gTm9uZQorICAgIHByb3BlcnR5X2J1aWxkZXIgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18o
c2VsZiwgbm9kZSk6CiAgICAgICAgIHNlbGYubm9kZSA9IG5vZGUKLSAgICAgICAgc2VsZi51cGRh
dGVkID0gW10KLSAgICAgICAgc2VsZi5uZXcgPSBbXQogICAgICAgICBzZWxmLmRlZmF1bHRfdmFs
dWUgPSBzZWxmLmNsc19kZWZhdWx0X3ZhbHVlCi0KLSAgICBkZWYgc2V0KHNlbGYsIHJ1bl9pbmZv
LCBpbl92YWx1ZSk6Ci0gICAgICAgIHNlbGYuY2hlY2tfZGVmYXVsdChpbl92YWx1ZSkKLSAgICAg
ICAgdmFsdWUgPSBzZWxmLmdldF92YWx1ZShpbl92YWx1ZSkKLQotICAgICAgICAjIEFkZCB0aGlz
IHJlc3VsdCB0byB0aGUgbGlzdCBvZiByZXN1bHRzIHNhdGlzZnlpbmcKLSAgICAgICAgIyBhbnkg
Y29uZGl0aW9uIGluIHRoZSBsaXN0IG9mIHVwZGF0ZWQgcmVzdWx0cyBpdCBtYXRjaGVzCi0gICAg
ICAgIGZvciAoY29uZCwgdmFsdWVzKSBpbiBzZWxmLnVwZGF0ZWQ6Ci0gICAgICAgICAgICBpZiBj
b25kKHJ1bl9pbmZvKToKLSAgICAgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKFZhbHVlKHJ1bl9p
bmZvLCB2YWx1ZSkpCi0gICAgICAgICAgICAgICAgaWYgdmFsdWUgIT0gY29uZC52YWx1ZV9hcyhz
ZWxmLnZhbHVlX3R5cGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLm5vZGUucm9vdC5tb2Rp
ZmllZCA9IFRydWUKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgIyBXZSBkaWRuJ3QgZmluZCBhIHByZXZpb3VzIHZhbHVlIGZvciB0aGlzCi0gICAgICAg
ICAgICBzZWxmLm5ldy5hcHBlbmQoVmFsdWUocnVuX2luZm8sIHZhbHVlKSkKLSAgICAgICAgICAg
IHNlbGYubm9kZS5yb290Lm1vZGlmaWVkID0gVHJ1ZQorICAgICAgICBzZWxmLmhhc19yZXN1bHQg
PSBGYWxzZQorICAgICAgICBzZWxmLnJlc3VsdHMgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1
bHRkaWN0KGludCkpCisgICAgICAgIHNlbGYudXBkYXRlX2ludGVybWl0dGVudCA9IHNlbGYubm9k
ZS5yb290LnVwZGF0ZV9pbnRlcm1pdHRlbnQKKyAgICAgICAgc2VsZi5yZW1vdmVfaW50ZXJtaXR0
ZW50ID0gc2VsZi5ub2RlLnJvb3QucmVtb3ZlX2ludGVybWl0dGVudAorCisgICAgZGVmIHJ1bl9p
bmZvX2J5X2NvbmRpdGlvbihzZWxmLCBydW5faW5mb19pbmRleCwgY29uZGl0aW9ucyk6CisgICAg
ICAgIHJ1bl9pbmZvX2J5X2NvbmRpdGlvbiA9IGRlZmF1bHRkaWN0KGxpc3QpCisgICAgICAgICMg
QSBjb25kaXRpb24gbWlnaHQgbWF0Y2ggMCBvciBtb3JlIHJ1bl9pbmZvIHZhbHVlcworICAgICAg
ICBydW5faW5mb3MgPSBydW5faW5mb19pbmRleC5rZXlzKCkKKyAgICAgICAgZm9yIGNvbmQgaW4g
Y29uZGl0aW9uczoKKyAgICAgICAgICAgIGZvciBydW5faW5mbyBpbiBydW5faW5mb3M6CisgICAg
ICAgICAgICAgICAgaWYgY29uZChydW5faW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvX2J5X2NvbmRpdGlvbltjb25kXS5hcHBlbmQocnVuX2luZm8pCisKKyAgICAgICAgcmV0dXJu
IHJ1bl9pbmZvX2J5X2NvbmRpdGlvbgorCisgICAgZGVmIHNldChzZWxmLCBydW5faW5mbywgdmFs
dWUpOgorICAgICAgICBzZWxmLmhhc19yZXN1bHQgPSBUcnVlCisgICAgICAgIHNlbGYubm9kZS5o
YXNfcmVzdWx0ID0gVHJ1ZQorICAgICAgICBzZWxmLmNoZWNrX2RlZmF1bHQodmFsdWUpCisgICAg
ICAgIHZhbHVlID0gc2VsZi5mcm9tX3Jlc3VsdF92YWx1ZSh2YWx1ZSkKKyAgICAgICAgc2VsZi5y
ZXN1bHRzW3J1bl9pbmZvXVt2YWx1ZV0gKz0gMQogCiAgICAgZGVmIGNoZWNrX2RlZmF1bHQoc2Vs
ZiwgcmVzdWx0KToKICAgICAgICAgcmV0dXJuCiAKLSAgICBkZWYgZ2V0X3ZhbHVlKHNlbGYsIGlu
X3ZhbHVlKToKLSAgICAgICAgcmV0dXJuIGluX3ZhbHVlCisgICAgZGVmIGZyb21fcmVzdWx0X3Zh
bHVlKHNlbGYsIHZhbHVlKToKKyAgICAgICAgIiIiQ29udmVydCBhIHZhbHVlIGZyb20gYSB0ZXN0
IHJlc3VsdCBpbnRvIHRoZSBpbnRlcm5hbCBmb3JtYXQiIiIKKyAgICAgICAgcmV0dXJuIHZhbHVl
CiAKLSAgICBkZWYgY29hbGVzY2Uoc2VsZiwgc3RhYmlsaXR5PU5vbmUpOgorICAgIGRlZiBmcm9t
X2luaV92YWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgICIiIkNvbnZlcnQgYSB2YWx1ZSBmcm9t
IGFuIGluaSBmaWxlIGludG8gdGhlIGludGVybmFsIGZvcm1hdCIiIgorICAgICAgICBpZiBzZWxm
LnZhbHVlX3R5cGU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi52YWx1ZV90eXBlKHZhbHVlKQor
ICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIGRlZiB0b19pbmlfdmFsdWUoc2VsZiwgdmFsdWUp
OgorICAgICAgICAiIiJDb252ZXJ0IGEgdmFsdWUgZnJvbSB0aGUgaW50ZXJuYWwgZm9ybWF0IHRv
IHRoZSBpbmkgZmlsZSBmb3JtYXQiIiIKKyAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkKKworICAg
IGRlZiB1cGRhdGVkX3ZhbHVlKHNlbGYsIGN1cnJlbnQsIG5ldyk6CisgICAgICAgICIiIkdpdmVu
IGEgc2luZ2xlIGN1cnJlbnQgdmFsdWUgYW5kIGEgc2V0IG9mIG9ic2VydmVkIG5ldyB2YWx1ZXMs
CisgICAgICAgIGNvbXB1dGUgYW4gdXBkYXRlZCB2YWx1ZSBmb3IgdGhlIHByb3BlcnR5IiIiCisg
ICAgICAgIHJldHVybiBuZXcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiB1bmNvbmRpdGlvbmFs
X3ZhbHVlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICB1bmNvbmRpdGlvbmFsX3Zh
bHVlID0gc2VsZi5mcm9tX2luaV92YWx1ZSgKKyAgICAgICAgICAgICAgICBzZWxmLm5vZGUuZ2V0
KHNlbGYucHJvcGVydHlfbmFtZSkpCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAg
ICAgIHVuY29uZGl0aW9uYWxfdmFsdWUgPSBzZWxmLmRlZmF1bHRfdmFsdWUKKyAgICAgICAgcmV0
dXJuIHVuY29uZGl0aW9uYWxfdmFsdWUKKworICAgIGRlZiB1cGRhdGUoc2VsZiwKKyAgICAgICAg
ICAgICAgIGZ1bGxfdXBkYXRlPUZhbHNlLAorICAgICAgICAgICAgICAgZGlzYWJsZV9pbnRlcm1p
dHRlbnQ9Tm9uZSk6CiAgICAgICAgICIiIlVwZGF0ZSB0aGUgdW5kZXJseWluZyBtYW5pZmVzdCBB
U1QgZm9yIHRoaXMgdGVzdCBiYXNlZCBvbiBhbGwgdGhlCiAgICAgICAgIGFkZGVkIHJlc3VsdHMu
CiAKQEAgLTMwOCw5NiArMzk2LDI3MyBAQCBjbGFzcyBQcm9wZXJ0eVVwZGF0ZShvYmplY3QpOgog
CiAgICAgICAgIENvbmRpdGlvbmFscyBub3QgbWF0Y2hlZCBieSBhbnkgYWRkZWQgcmVzdWx0IGFy
ZSBub3QgY2hhbmdlZC4KIAotICAgICAgICBXaGVuIGBzdGFiaWxpdHlgIGlzIG5vdCBOb25lLCBk
aXNhYmxlIGFueSB0ZXN0IHRoYXQgc2hvd3MgbXVsdGlwbGUKKyAgICAgICAgV2hlbiBgZGlzYWJs
ZV9pbnRlcm1pdHRlbnRgIGlzIG5vdCBOb25lLCBkaXNhYmxlIGFueSB0ZXN0IHRoYXQgc2hvd3Mg
bXVsdGlwbGUKICAgICAgICAgdW5leHBlY3RlZCByZXN1bHRzIGZvciB0aGUgc2FtZSBzZXQgb2Yg
cGFyYW1ldGVycy4KICAgICAgICAgIiIiCisgICAgICAgIGlmIG5vdCBzZWxmLmhhc19yZXN1bHQ6
CisgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB1bmNvbmRp
dGlvbmFsX3ZhbHVlID0gc2VsZi5ub2RlLmdldChzZWxmLnByb3BlcnR5X25hbWUpCi0gICAgICAg
ICAgICBpZiBzZWxmLnZhbHVlX3R5cGU6Ci0gICAgICAgICAgICAgICAgdW5jb25kaXRpb25hbF92
YWx1ZSA9IHNlbGYudmFsdWVfdHlwZSh1bmNvbmRpdGlvbmFsX3ZhbHVlKQotICAgICAgICBleGNl
cHQgS2V5RXJyb3I6Ci0gICAgICAgICAgICB1bmNvbmRpdGlvbmFsX3ZhbHVlID0gc2VsZi5kZWZh
dWx0X3ZhbHVlCisgICAgICAgIHByb3BlcnR5X3RyZWUgPSBzZWxmLnByb3BlcnR5X2J1aWxkZXIo
c2VsZi5ub2RlLnJvb3QucnVuX2luZm9fcHJvcGVydGllcywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdHMpCiAKLSAgICAgICAgZm9yIGNv
bmRpdGlvbmFsX3ZhbHVlLCByZXN1bHRzIGluIHNlbGYudXBkYXRlZDoKLSAgICAgICAgICAgIGlm
IG5vdCByZXN1bHRzOgotICAgICAgICAgICAgICAgICMgVGhlIGNvbmRpdGlvbmFsIGRpZG4ndCBt
YXRjaCBhbnl0aGluZyBpbiB0aGVzZSBydW5zIHNvIGxlYXZlIGl0IGFsb25lCi0gICAgICAgICAg
ICAgICAgcGFzcwotICAgICAgICAgICAgZWxpZiBhbGwocmVzdWx0c1swXS52YWx1ZSA9PSByZXN1
bHQudmFsdWUgZm9yIHJlc3VsdCBpbiByZXN1bHRzKToKLSAgICAgICAgICAgICAgICAjIEFsbCB0
aGUgbmV3IHZhbHVlcyBmb3IgdGhpcyBjb25kaXRpb25hbCBtYXRjaGVkLCBzbyB1cGRhdGUgdGhl
IG5vZGUKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHRzWzBdCi0gICAgICAgICAgICAg
ICAgaWYgKHJlc3VsdC52YWx1ZSA9PSB1bmNvbmRpdGlvbmFsX3ZhbHVlIGFuZAotICAgICAgICAg
ICAgICAgICAgICBjb25kaXRpb25hbF92YWx1ZS5jb25kaXRpb25fbm9kZSBpcyBub3QgTm9uZSk6
Ci0gICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucHJvcGVydHlfbmFtZSBpbiBzZWxmLm5vZGU6
Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5vZGUucmVtb3ZlX3ZhbHVlKHNlbGYucHJv
cGVydHlfbmFtZSwgY29uZGl0aW9uYWxfdmFsdWUpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgICAgICAgICAgY29uZGl0aW9uYWxfdmFsdWUudmFsdWUgPSBzZWxmLnVwZGF0ZV92
YWx1ZShjb25kaXRpb25hbF92YWx1ZS52YWx1ZV9hcyhzZWxmLnZhbHVlX3R5cGUpLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3VsdC52YWx1ZSkKLSAgICAgICAgICAgIGVsaWYgY29uZGl0aW9uYWxfdmFsdWUuY29uZGl0
aW9uX25vZGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgIyBCbG93IGF3YXkgdGhlIGV4
aXN0aW5nIGNvbmRpdGlvbiBhbmQgcmVidWlsZCBmcm9tIHNjcmF0Y2gKLSAgICAgICAgICAgICAg
ICAjIFRoaXMgaXNuJ3Qgc3VyZSB0byB3b3JrIGlmIHdlIGhhdmUgYSBjb25kaXRpb25hbCBsYXRl
ciB0aGF0IG1hdGNoZXMKLSAgICAgICAgICAgICAgICAjIHRoZXNlIHZhbHVlcyB0b28sIGJ1dCB3
ZSBjYW4gaG9wZSwgdmVyaWZ5IHRoYXQgd2UgZ2V0IHRoZSByZXN1bHRzCi0gICAgICAgICAgICAg
ICAgIyB3ZSBleHBlY3QsIGFuZCBpZiBub3QgbGV0IGEgaHVtYW4gc29ydCBpdCBvdXQKLSAgICAg
ICAgICAgICAgICBzZWxmLm5vZGUucmVtb3ZlX3ZhbHVlKHNlbGYucHJvcGVydHlfbmFtZSwgY29u
ZGl0aW9uYWxfdmFsdWUpCi0gICAgICAgICAgICAgICAgc2VsZi5uZXcuZXh0ZW5kKHJlc3VsdHMp
Ci0gICAgICAgICAgICBlbGlmIGNvbmRpdGlvbmFsX3ZhbHVlLmNvbmRpdGlvbl9ub2RlIGlzIE5v
bmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5uZXcuZXh0ZW5kKHJlc3VsdCBmb3IgcmVzdWx0IGlu
IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgcmVzdWx0LnZhbHVl
ICE9IHVuY29uZGl0aW9uYWxfdmFsdWUpCi0KLSAgICAgICAgIyBJdCBpcyBhbiBpbnZhcmlhbnQg
dGhhdCBub3RoaW5nIGluIG5ldyBtYXRjaGVzIGFuIGV4aXN0aW5nCi0gICAgICAgICMgY29uZGl0
aW9uIGV4Y2VwdCBmb3IgdGhlIGRlZmF1bHQgY29uZGl0aW9uCi0gICAgICAgIGlmIHNlbGYubmV3
OgotICAgICAgICAgICAgdXBkYXRlX2RlZmF1bHQsIG5ld19kZWZhdWx0X3ZhbHVlID0gc2VsZi51
cGRhdGVfZGVmYXVsdCgpCi0gICAgICAgICAgICBpZiB1cGRhdGVfZGVmYXVsdDoKLSAgICAgICAg
ICAgICAgICBpZiBuZXdfZGVmYXVsdF92YWx1ZSAhPSBzZWxmLmRlZmF1bHRfdmFsdWU6Ci0gICAg
ICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQoc2VsZi5wcm9wZXJ0eV9uYW1lLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX3ZhbHVlKHVuY29uZGl0aW9u
YWxfdmFsdWUsIG5ld19kZWZhdWx0X3ZhbHVlKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25kaXRpb249Tm9uZSkKKyAgICAgICAgY29uZGl0aW9ucywgZXJyb3JzID0gc2Vs
Zi51cGRhdGVfY29uZGl0aW9ucyhwcm9wZXJ0eV90cmVlLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxfdXBkYXRlKQorCisgICAgICAgIGZv
ciBlIGluIGVycm9yczoKKyAgICAgICAgICAgIGlmIGRpc2FibGVfaW50ZXJtaXR0ZW50OgorICAg
ICAgICAgICAgICAgIGNvbmRpdGlvbiA9IGUuY29uZC5jaGlsZHJlblswXSBpZiBlLmNvbmQgZWxz
ZSBOb25lCisgICAgICAgICAgICAgICAgbXNnID0gZGlzYWJsZV9pbnRlcm1pdHRlbnQgaWYgaXNp
bnN0YW5jZShkaXNhYmxlX2ludGVybWl0dGVudCwgKHN0ciwgdW5pY29kZSkpIGVsc2UgInVuc3Rh
YmxlIgorICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQoImRpc2FibGVkIiwgbXNnLCBjb25k
aXRpb24pCisgICAgICAgICAgICAgICAgc2VsZi5ub2RlLm5ld19kaXNhYmxlZCA9IFRydWUKICAg
ICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbXNnID0gIkNvbmZsaWN0aW5nIG1ldGFk
YXRhIHZhbHVlcyBmb3IgJXMiICUgKAorICAgICAgICAgICAgICAgICAgICBzZWxmLm5vZGUucm9v
dC50ZXN0X3BhdGgpCisgICAgICAgICAgICAgICAgaWYgZS5jb25kOgorICAgICAgICAgICAgICAg
ICAgICBtc2cgKz0gIjogJXMiICUgc2VyaWFsaXplKGUuY29uZCkuc3RyaXAoKQorICAgICAgICAg
ICAgICAgIHByaW50KG1zZykKKworICAgICAgICAjIElmIGFsbCB0aGUgdmFsdWVzIG1hdGNoIHJl
bW92ZSBhbGwgY29uZGl0aW9uYWxzCisgICAgICAgICMgVGhpcyBoYW5kbGVzIHRoZSBjYXNlIHdo
ZXJlIHdlIHVwZGF0ZSBhIG51bWJlciBvZiBleGlzdGluZyBjb25kaXRpb25zIGFuZCB0aGV5Cisg
ICAgICAgICMgYWxsIGVuZCB1cCBsb29raW5nIGxpa2UgdGhlIHBvc3QtdXBkYXRlIGRlZmF1bHQu
CisgICAgICAgIG5ld19kZWZhdWx0ID0gc2VsZi5kZWZhdWx0X3ZhbHVlCisgICAgICAgIGlmIGNv
bmRpdGlvbnMgYW5kIGNvbmRpdGlvbnNbLTFdWzBdIGlzIE5vbmU6CisgICAgICAgICAgICBuZXdf
ZGVmYXVsdCA9IGNvbmRpdGlvbnNbLTFdWzFdCisgICAgICAgIGlmIGFsbChjb25kaXRpb25bMV0g
PT0gbmV3X2RlZmF1bHQgZm9yIGNvbmRpdGlvbiBpbiBjb25kaXRpb25zKToKKyAgICAgICAgICAg
IGNvbmRpdGlvbnMgPSBbKE5vbmUsIG5ld19kZWZhdWx0KV0KKworICAgICAgICAjIERvbid0IHNl
dCB0aGUgZGVmYXVsdCB0byB0aGUgY2xhc3MgZGVmYXVsdAorICAgICAgICBpZiAoY29uZGl0aW9u
cyBhbmQKKyAgICAgICAgICAgIGNvbmRpdGlvbnNbLTFdWzBdIGlzIE5vbmUgYW5kCisgICAgICAg
ICAgICBjb25kaXRpb25zWy0xXVsxXSA9PSBzZWxmLmRlZmF1bHRfdmFsdWUpOgorICAgICAgICAg
ICAgc2VsZi5ub2RlLm1vZGlmaWVkID0gVHJ1ZQorICAgICAgICAgICAgY29uZGl0aW9ucyA9IGNv
bmRpdGlvbnNbOi0xXQorCisgICAgICAgIGlmIHNlbGYubm9kZS5tb2RpZmllZDoKKyAgICAgICAg
ICAgIHNlbGYubm9kZS5jbGVhcihzZWxmLnByb3BlcnR5X25hbWUpCisKKyAgICAgICAgICAgIGZv
ciBjb25kaXRpb24sIHZhbHVlIGluIGNvbmRpdGlvbnM6CisgICAgICAgICAgICAgICAgc2VsZi5u
b2RlLnNldChzZWxmLnByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBzZWxmLnRvX2luaV92YWx1ZSh2YWx1ZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBjb25kaXRpb24pCisKKyAgICBkZWYgdXBkYXRlX2NvbmRpdGlvbnMoc2VsZiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgcHJvcGVydHlfdHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnVsbF91cGRhdGUpOgorICAgICAgICAjIFRoaXMgaXMgY29tcGxpY2F0ZWQgYmVjYXVzZSB0
aGUgZXhwZWN0ZWQgYmVoYXZpb3VyIGlzIGNvbXBsZXgKKyAgICAgICAgIyBUaGUgY29tcGxleGl0
eSBhcmlzZXMgZnJvbSB0aGUgZmFjdCB0aGF0IHRoZXJlIGFyZSB0d28gd2F5cyBvZiBydW5uaW5n
CisgICAgICAgICMgdGhlIHRvb2wsIHdpdGggYSBmdWxsIHNldCBvZiBydW5zIChmdWxsX3VwZGF0
ZT1UcnVlKSBvciB3aXRoIHBhcnRpYWwgbWV0YWRhdGEKKyAgICAgICAgIyAoZnVsbF91cGRhdGU9
RmFsc2UpLiBJbiB0aGUgY2FzZSBvZiBhIGZ1bGwgdXBkYXRlIHRoaW5ncyBhcmUgcmVsYXRpdmVs
eSBzaW1wbGU6CisgICAgICAgICMgKiBBbGwgZXhpc3RpbmcgY29uZGl0aW9uYWxzIGFyZSBpZ25v
cmVkLCB3aXRoIHRoZSBleGNlcHRpb24gb2YgY29uZGl0aW9uYWxzIHRoYXQKKyAgICAgICAgIyAg
IGRlcGVuZCBvbiB2YXJpYWJsZXMgbm90IHVzZWQgYnkgdGhlIHVwZGF0ZXIsIHdoaWNoIGFyZSBy
ZXRhaW5lZCBhcy1pcworICAgICAgICAjICogQWxsIGNyZWF0ZWQgY29uZGl0aW9uYWxzIGFyZSBp
bmRlcGVuZGVudCBvZiBlYWNoIG90aGVyIChpLmUuIG9yZGVyIGlzbid0CisgICAgICAgICMgICBp
bXBvcnRhbnQgaW4gdGhlIGNyZWF0ZWQgY29uZGl0aW9uYWxzKQorICAgICAgICAjIEluIHRoZSBj
YXNlIHdoZXJlIHdlIGRvbid0IGhhdmUgYSBmdWxsIHNldCBvZiBydW5zLCB0aGUgZXhwZWN0ZWQg
YmVoYXZpb3VyCisgICAgICAgICMgaXMgbXVjaCBsZXNzIGNsZWFyLiBUaGlzIGlzIG9mIGNvdXJz
ZSB0aGUgY29tbW9uIGNhc2UgZm9yIHdoZW4gYSBkZXZlbG9wZXIKKyAgICAgICAgIyBydW5zIHRo
ZSB0ZXN0IG9uIHRoZWlyIG93biBtYWNoaW5lLiBJbiB0aGlzIGNhc2UgdGhlIGFzc3VtcHRpb25z
IGFib3ZlIGFyZSB1bnRydWUKKyAgICAgICAgIyAqIFRoZSBleGlzdGluZyBjb25kaXRpb25zIG1h
eSBiZSByZXF1aXJlZCB0byBoYW5kbGUgb3RoZXIgcGxhdGZvcm1zCisgICAgICAgICMgKiBUaGUg
b3JkZXIgb2YgdGhlIGNvbmRpdGlvbnMgbWF5IGJlIGltcG9ydGFudCwgc2luY2Ugd2UgZG9uJ3Qg
a25vdyBpZiB0aGV5IG92ZXJsYXAKKyAgICAgICAgIyAgIGUuZy4gYGlmIG9zID09IGxpbnV4IGFu
ZCB2ZXJzaW9uID09IDE4LjA0YCBvdmVybGFwcyB3aXRoIGBpZiAob3MgIT0gd2luKWAuCisgICAg
ICAgICMgU28gaW4gdGhlIGNhc2Ugd2UgaGF2ZSBhIGZ1bGwgc2V0IG9mIHJ1bnMsIHRoZSBwcm9j
ZXNzIGlzIHByZXR0eSBzaW1wbGU6CisgICAgICAgICMgKiBHZW5lcmF0ZSB0aGUgY29uZGl0aW9u
YWxzIGZvciB0aGUgcHJvcGVydHlfdHJlZQorICAgICAgICAjICogUGljayB0aGUgbW9zdCBjb21t
b24gdmFsdWUgYXMgdGhlIGRlZmF1bHQgYW5kIGFkZCBvbmx5IHRob3NlIGNvbmRpdGlvbnMKKyAg
ICAgICAgIyAgIG5vdCBtYXRjaGluZyB0aGUgZGVmYXVsdAorICAgICAgICAjIEluIHRoZSBjYXNl
IHdoZXJlIHdlIGhhdmUgYSBwYXJ0aWFsIHNldCBvZiBydW5zLCB0aGluZ3MgYXJlIG1vcmUgY29t
cGxleAorICAgICAgICAjIGFuZCBtb3JlIGJlc3QtZWZmb3J0CisgICAgICAgICMgKiBGb3IgZWFj
aCBleGlzdGluZyBjb25kaXRpb25hbCwgc2VlIGlmIGl0IG1hdGNoZXMgYW55IG9mIHRoZSBydW4g
aW5mbyB3ZQorICAgICAgICAjICAgaGF2ZS4gSW4gY2FzZXMgd2hlcmUgaXQgZG9lcyBtYXRjaCwg
cmVjb3JkIHRoZSBuZXcgcmVzdWx0cworICAgICAgICAjICogV2hlcmUgYWxsIHRoZSBuZXcgcmVz
dWx0cyBtYXRjaCwgdXBkYXRlIHRoZSByaWdodCBoYW5kIHNpZGUgb2YgdGhhdAorICAgICAgICAj
ICAgY29uZGl0aW9uYWwsIG90aGVyd2lzZSByZW1vdmUgaXQKKyAgICAgICAgIyAqIElmIHRoaXMg
bGVhdmVzIG5vdGhpbmcgZXhpc3RpbmcsIHRoZW4gcHJvY2VlZCBhcyB3aXRoIHRoZSBmdWxsIHVw
ZGF0ZQorICAgICAgICAjICogT3RoZXJ3aXNlIGFkZCBjb25kaXRpb25hbHMgZm9yIHRoZSBydW5f
aW5mbyB0aGF0IGRvZXNuJ3QgbWF0Y2ggYW55CisgICAgICAgICMgICByZW1haW5pbmcgY29uZGl0
aW9ucworICAgICAgICBwcmV2X2RlZmF1bHQgPSBOb25lCisKKyAgICAgICAgY3VycmVudF9jb25k
aXRpb25zID0gc2VsZi5ub2RlLmdldF9jb25kaXRpb25zKHNlbGYucHJvcGVydHlfbmFtZSkKKwor
ICAgICAgICAjIElnbm9yZSB0aGUgY3VycmVudCBkZWZhdWx0IHZhbHVlCisgICAgICAgIGlmIGN1
cnJlbnRfY29uZGl0aW9ucyBhbmQgY3VycmVudF9jb25kaXRpb25zWy0xXS5jb25kaXRpb25fbm9k
ZSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5ub2RlLm1vZGlmaWVkID0gVHJ1ZQorICAgICAg
ICAgICAgcHJldl9kZWZhdWx0ID0gY3VycmVudF9jb25kaXRpb25zWy0xXS52YWx1ZQorICAgICAg
ICAgICAgY3VycmVudF9jb25kaXRpb25zID0gY3VycmVudF9jb25kaXRpb25zWzotMV0KKworICAg
ICAgICAjIElmIHRoZXJlIGFyZW4ndCBhbnkgY3VycmVudCBjb25kaXRpb25zLCBvciB0aGVyZSBp
cyBqdXN0IGEgZGVmYXVsdAorICAgICAgICAjIHZhbHVlIGZvciBhbGwgcnVuX2luZm8sIHByb2Nl
ZWQgYXMgZm9yIGEgZnVsbCB1cGRhdGUKKyAgICAgICAgaWYgbm90IGN1cnJlbnRfY29uZGl0aW9u
czoKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl91cGRhdGVfY29uZGl0aW9uc19mdWxsKHByb3Bl
cnR5X3RyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBwcmV2X2RlZmF1bHQ9cHJldl9kZWZhdWx0KQorCisgICAgICAgIGNvbmRpdGlvbnMgPSBbXQor
ICAgICAgICBlcnJvcnMgPSBbXQorCisgICAgICAgIHJ1bl9pbmZvX2luZGV4ID0ge3J1bl9pbmZv
OiBub2RlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBub2RlIGluIHByb3BlcnR5X3Ry
ZWUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHJ1bl9pbmZvIGluIG5vZGUucnVuX2lu
Zm99CisKKyAgICAgICAgbm9kZV9ieV9ydW5faW5mbyA9IHtydW5faW5mbzogbm9kZQorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAocnVuX2luZm8sIG5vZGUpIGluIGl0ZXJpdGVtcyhy
dW5faW5mb19pbmRleCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub2RlLnJlc3Vs
dF92YWx1ZXN9CisKKyAgICAgICAgcnVuX2luZm9fYnlfY29uZGl0aW9uID0gc2VsZi5ydW5faW5m
b19ieV9jb25kaXRpb24ocnVuX2luZm9faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfY29uZGl0aW9ucykKKwor
ICAgICAgICBydW5faW5mb193aXRoX2NvbmRpdGlvbiA9IHNldCgpCisKKyAgICAgICAgaWYgZnVs
bF91cGRhdGU6CisgICAgICAgICAgICAjIEV2ZW4gZm9yIGEgZnVsbCB1cGRhdGUgd2UgbmVlZCB0
byBrZWVwIGhhbmQtd3JpdHRlbiBjb25kaXRpb25zIG5vdAorICAgICAgICAgICAgIyB1c2luZyB0
aGUgcHJvcGVydGllcyB3ZSd2ZSBzcGVjaWZpZWQgYW5kIG5vdCBtYXRjaGluZyBhbnkgcnVuX2lu
Zm8KKyAgICAgICAgICAgIHRvcF9sZXZlbF9wcm9wcywgZGVwZW5kZW50X3Byb3BzID0gc2VsZi5u
b2RlLnJvb3QucnVuX2luZm9fcHJvcGVydGllcworICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRp
ZXMgPSBzZXQodG9wX2xldmVsX3Byb3BzKQorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlcnZh
bHVlcyhkZXBlbmRlbnRfcHJvcHMpOgorICAgICAgICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVz
IHw9IHNldChkZXBlbmRlbnRfcHJvcHMpCisgICAgICAgICAgICBmb3IgY29uZGl0aW9uIGluIGN1
cnJlbnRfY29uZGl0aW9uczoKKyAgICAgICAgICAgICAgICBpZiAoKG5vdCBjb25kaXRpb24udmFy
aWFibGVzLmlzc3Vic2V0KHVwZGF0ZV9wcm9wZXJ0aWVzKSBhbmQKKyAgICAgICAgICAgICAgICAg
ICAgIG5vdCBydW5faW5mb19ieV9jb25kaXRpb25bY29uZGl0aW9uXSkpOgorICAgICAgICAgICAg
ICAgICAgICBjb25kaXRpb25zLmFwcGVuZCgoY29uZGl0aW9uLmNvbmRpdGlvbl9ub2RlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcm9tX2luaV92YWx1ZShj
b25kaXRpb24udmFsdWUpKSkKKworICAgICAgICAgICAgbmV3X2NvbmRpdGlvbnMsIGVycm9ycyA9
IHNlbGYuX3VwZGF0ZV9jb25kaXRpb25zX2Z1bGwocHJvcGVydHlfdHJlZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy
ZXZfZGVmYXVsdD1wcmV2X2RlZmF1bHQpCisgICAgICAgICAgICBjb25kaXRpb25zLmV4dGVuZChu
ZXdfY29uZGl0aW9ucykKKyAgICAgICAgICAgIHJldHVybiBjb25kaXRpb25zLCBlcnJvcnMKKwor
ICAgICAgICAjIFJldGFpbiBleGlzdGluZyBjb25kaXRpb25zIGlmIHRoZXkgbWF0Y2ggdGhlIHVw
ZGF0ZWQgdmFsdWVzCisgICAgICAgIGZvciBjb25kaXRpb24gaW4gY3VycmVudF9jb25kaXRpb25z
OgorICAgICAgICAgICAgIyBBbGwgcnVuX2luZm8gdGhhdCBpc24ndCBoYW5kbGVkIGJ5IHNvbWUg
cHJldmlvdXMgY29uZGl0aW9uCisgICAgICAgICAgICBhbGxfcnVuX2luZm9zX2NvbmRpdGlvbiA9
IHJ1bl9pbmZvX2J5X2NvbmRpdGlvbltjb25kaXRpb25dCisgICAgICAgICAgICBydW5faW5mb3Mg
PSB7aXRlbSBmb3IgaXRlbSBpbiBhbGxfcnVuX2luZm9zX2NvbmRpdGlvbgorICAgICAgICAgICAg
ICAgICAgICAgICAgIGlmIGl0ZW0gbm90IGluIHJ1bl9pbmZvX3dpdGhfY29uZGl0aW9ufQorCisg
ICAgICAgICAgICBpZiBub3QgcnVuX2luZm9zOgorICAgICAgICAgICAgICAgICMgUmV0YWluIGV4
aXN0aW5nIGNvbmRpdGlvbnMgdGhhdCBkb24ndCBtYXRjaCBhbnl0aGluZyBpbiB0aGUgdXBkYXRl
CisgICAgICAgICAgICAgICAgY29uZGl0aW9ucy5hcHBlbmQoKGNvbmRpdGlvbi5jb25kaXRpb25f
bm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mcm9tX2luaV92
YWx1ZShjb25kaXRpb24udmFsdWUpKSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAg
ICAgICAgICAjIFNldCBvZiBub2RlcyBpbiB0aGUgdXBkYXRlZCB0cmVlIHRoYXQgbWF0Y2ggdGhl
IHNhbWUgcnVuX2luZm8gdmFsdWVzIGFzIHRoZQorICAgICAgICAgICAgIyBjdXJyZW50IGV4aXN0
aW5nIG5vZGUKKyAgICAgICAgICAgIG5vZGVzID0gW25vZGVfYnlfcnVuX2luZm9bcnVuX2luZm9d
IGZvciBydW5faW5mbyBpbiBydW5faW5mb3MKKyAgICAgICAgICAgICAgICAgICAgIGlmIHJ1bl9p
bmZvIGluIG5vZGVfYnlfcnVuX2luZm9dCisgICAgICAgICAgICAjIElmIGFsbCB0aGUgdmFsdWVz
IGFyZSB0aGUgc2FtZSwgdXBkYXRlIHRoZSB2YWx1ZQorICAgICAgICAgICAgaWYgbm9kZXMgYW5k
IGFsbChzZXQobm9kZS5yZXN1bHRfdmFsdWVzLmtleXMoKSkgPT0gc2V0KG5vZGVzWzBdLnJlc3Vs
dF92YWx1ZXMua2V5cygpKSBmb3Igbm9kZSBpbiBub2Rlcyk6CisgICAgICAgICAgICAgICAgY3Vy
cmVudF92YWx1ZSA9IHNlbGYuZnJvbV9pbmlfdmFsdWUoY29uZGl0aW9uLnZhbHVlKQogICAgICAg
ICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hZGRfbmV3KHVuY29uZGl0
aW9uYWxfdmFsdWUsIHN0YWJpbGl0eSkKLSAgICAgICAgICAgICAgICBleGNlcHQgVXBkYXRlRXJy
b3IgYXMgZToKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiVzIGZvciAlcywgY2Fubm90IHVw
ZGF0ZSAlcyIgJSAoZSwgc2VsZi5ub2RlLnJvb3QudGVzdF9wYXRoLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnByb3BlcnR5
X25hbWUpKQotCi0gICAgICAgICMgUmVtb3ZlIGNhc2VzIHdoZXJlIHRoZSB2YWx1ZSBtYXRjaGVz
IHRoZSBkZWZhdWx0Ci0gICAgICAgIGlmIChzZWxmLnByb3BlcnR5X25hbWUgaW4gc2VsZi5ub2Rl
Ll9kYXRhIGFuZAotICAgICAgICAgICAgbGVuKHNlbGYubm9kZS5fZGF0YVtzZWxmLnByb3BlcnR5
X25hbWVdKSA+IDAgYW5kCi0gICAgICAgICAgICBzZWxmLm5vZGUuX2RhdGFbc2VsZi5wcm9wZXJ0
eV9uYW1lXVstMV0uY29uZGl0aW9uX25vZGUgaXMgTm9uZSBhbmQKLSAgICAgICAgICAgIHNlbGYu
bm9kZS5fZGF0YVtzZWxmLnByb3BlcnR5X25hbWVdWy0xXS52YWx1ZV9hcyhzZWxmLnZhbHVlX3R5
cGUpID09IHNlbGYuZGVmYXVsdF92YWx1ZSk6Ci0KLSAgICAgICAgICAgIHNlbGYubm9kZS5yZW1v
dmVfdmFsdWUoc2VsZi5wcm9wZXJ0eV9uYW1lLCBzZWxmLm5vZGUuX2RhdGFbc2VsZi5wcm9wZXJ0
eV9uYW1lXVstMV0pCi0KLSAgICAgICAgIyBSZW1vdmUgZW1wdHkgcHJvcGVydGllcwotICAgICAg
ICBpZiAoc2VsZi5wcm9wZXJ0eV9uYW1lIGluIHNlbGYubm9kZS5fZGF0YSBhbmQgbGVuKHNlbGYu
bm9kZS5fZGF0YVtzZWxmLnByb3BlcnR5X25hbWVdKSA9PSAwKToKLSAgICAgICAgICAgIGZvciBj
aGlsZCBpbiBzZWxmLm5vZGUuY2hpbGRyZW46Ci0gICAgICAgICAgICAgICAgaWYgKGlzaW5zdGFu
Y2UoY2hpbGQsIEtleVZhbHVlTm9kZSkgYW5kIGNoaWxkLmRhdGEgPT0gc2VsZi5wcm9wZXJ0eV9u
YW1lKToKLSAgICAgICAgICAgICAgICAgICAgY2hpbGQucmVtb3ZlKCkKLSAgICAgICAgICAgICAg
ICAgICAgYnJlYWsKLQotICAgIGRlZiB1cGRhdGVfZGVmYXVsdChzZWxmKToKLSAgICAgICAgIiIi
R2V0IHRoZSB1cGRhdGVkIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBwcm9wZXJ0eSAoaS5lLiB0aGUg
b25lIGNob3NlbiB3aGVuIG5vIGNvbmRpdGlvbnMgbWF0Y2gpLgotCi0gICAgICAgIDpyZXR1cm5z
OiAodXBkYXRlLCBuZXdfZGVmYXVsdF92YWx1ZSkgd2hlcmUgdXBkYXRlZCBpcyBhIGJvb2wgaW5k
aWNhdGluZyB3aGV0aGVyIHRoZSBwcm9wZXJ0eQotICAgICAgICAgICAgICAgICAgc2hvdWxkIGJl
IHVwZGF0ZWQsIGFuZCBuZXdfZGVmYXVsdF92YWx1ZSBpcyB0aGUgdmFsdWUgdG8gc2V0IGlmIGl0
IHNob3VsZC4iIiIKLSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICAg
ICAgICAgICAgICBuZXdfdmFsdWUgPSBzZWxmLnVwZGF0ZWRfdmFsdWUoY3VycmVudF92YWx1ZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVz
WzBdLnJlc3VsdF92YWx1ZXMpCisgICAgICAgICAgICAgICAgZXhjZXB0IENvbmRpdGlvbkVycm9y
IGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGVycm9ycy5hcHBlbmQoZSkKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICBpZiBuZXdfdmFsdWUgIT0gY3VycmVu
dF92YWx1ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLm1vZGlmaWVkID0gVHJ1ZQor
ICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBwZW5kKChjb25kaXRpb24uY29uZGl0aW9uX25v
ZGUsIG5ld192YWx1ZSkpCisgICAgICAgICAgICAgICAgcnVuX2luZm9fd2l0aF9jb25kaXRpb24g
fD0gc2V0KHJ1bl9pbmZvcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIyBE
b24ndCBhcHBlbmQgdGhpcyBjb25kaXRpb24KKyAgICAgICAgICAgICAgICBzZWxmLm5vZGUubW9k
aWZpZWQgPSBUcnVlCisKKyAgICAgICAgbmV3X2NvbmRpdGlvbnMsIG5ld19lcnJvcnMgPSBzZWxm
LmJ1aWxkX3RyZWVfY29uZGl0aW9ucyhwcm9wZXJ0eV90cmVlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX3dp
dGhfY29uZGl0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByZXZfZGVmYXVsdCkKKyAgICAgICAgaWYgbmV3X2NvbmRp
dGlvbnM6CisgICAgICAgICAgICBzZWxmLm5vZGUubW9kaWZpZWQgPSBUcnVlCisKKyAgICAgICAg
Y29uZGl0aW9ucy5leHRlbmQobmV3X2NvbmRpdGlvbnMpCisgICAgICAgIGVycm9ycy5leHRlbmQo
bmV3X2Vycm9ycykKKworICAgICAgICByZXR1cm4gY29uZGl0aW9ucywgZXJyb3JzCisKKyAgICBk
ZWYgX3VwZGF0ZV9jb25kaXRpb25zX2Z1bGwoc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcHJvcGVydHlfdHJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJldl9kZWZhdWx0PU5vbmUpOgorICAgICAgICBzZWxmLm5vZGUubW9kaWZpZWQgPSBUcnVlCisg
ICAgICAgIGNvbmRpdGlvbnMsIGVycm9ycyA9IHNlbGYuYnVpbGRfdHJlZV9jb25kaXRpb25zKHBy
b3BlcnR5X3RyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHNldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBwcmV2X2RlZmF1bHQpCisKKyAgICAgICAgcmV0dXJuIGNvbmRp
dGlvbnMsIGVycm9ycworCisgICAgZGVmIGJ1aWxkX3RyZWVfY29uZGl0aW9ucyhzZWxmLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfdHJlZSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJ1bl9pbmZvX3dpdGhfY29uZGl0aW9uLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcHJldl9kZWZhdWx0PU5vbmUpOgorICAgICAgICBjb25kaXRpb25zID0g
W10KKyAgICAgICAgZXJyb3JzID0gW10KKworICAgICAgICB2YWx1ZV9jb3VudCA9IGRlZmF1bHRk
aWN0KGludCkKKworICAgICAgICBkZWYgdG9fY291bnRfdmFsdWUodik6CisgICAgICAgICAgICBp
ZiB2IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgcmV0dXJuIHYKKyAgICAgICAgICAgICMgTmVl
ZCB0byBjb3VudCB0aGUgdmFsdWVzIGluIGEgaGFzaGFibGUgdHlwZQorICAgICAgICAgICAgY291
bnRfdmFsdWUgPSBzZWxmLnRvX2luaV92YWx1ZSh2KQorICAgICAgICAgICAgaWYgaXNpbnN0YW5j
ZShjb3VudF92YWx1ZSwgbGlzdCk6CisgICAgICAgICAgICAgICAgY291bnRfdmFsdWUgPSB0dXBs
ZShjb3VudF92YWx1ZSkKKyAgICAgICAgICAgIHJldHVybiBjb3VudF92YWx1ZQorCisKKyAgICAg
ICAgcXVldWUgPSBkZXF1ZShbKHByb3BlcnR5X3RyZWUsIFtdKV0pCisgICAgICAgIHdoaWxlIHF1
ZXVlOgorICAgICAgICAgICAgbm9kZSwgcGFyZW50cyA9IHF1ZXVlLnBvcGxlZnQoKQorICAgICAg
ICAgICAgcGFyZW50c19hbmRfc2VsZiA9IHBhcmVudHMgKyBbbm9kZV0KKyAgICAgICAgICAgIGlm
IG5vZGUucmVzdWx0X3ZhbHVlcyBhbmQgYW55KHJ1bl9pbmZvIG5vdCBpbiBydW5faW5mb193aXRo
X2NvbmRpdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9y
IHJ1bl9pbmZvIGluIG5vZGUucnVuX2luZm8pOgorICAgICAgICAgICAgICAgIHByb3Bfc2V0ID0g
WyhpdGVtLnByb3AsIGl0ZW0udmFsdWUpIGZvciBpdGVtIGluIHBhcmVudHNfYW5kX3NlbGYgaWYg
aXRlbS5wcm9wXQorICAgICAgICAgICAgICAgIHZhbHVlID0gbm9kZS5yZXN1bHRfdmFsdWVzCisg
ICAgICAgICAgICAgICAgZXJyb3IgPSBOb25lCisgICAgICAgICAgICAgICAgaWYgcGFyZW50czoK
KyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBzZWxmLnVwZGF0ZWRfdmFsdWUoTm9uZSwgdmFsdWUpCisgICAgICAgICAgICAgICAgICAgIGV4
Y2VwdCBDb25kaXRpb25FcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgICAgIGV4cHIgPSBtYWtl
X2V4cHIocHJvcF9zZXQsIHZhbHVlKQorICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBD
b25kaXRpb25FcnJvcihleHByKQorICAgICAgICAgICAgICAgICAgICBleHByID0gbWFrZV9leHBy
KHByb3Bfc2V0LCB2YWx1ZSkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICAjIFRoZSByb290IG5vZGUgbmVlZHMgc3BlY2lhbCBoYW5kbGluZworICAgICAgICAgICAg
ICAgICAgICBleHByID0gTm9uZQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAg
ICAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYudXBkYXRlZF92YWx1ZShzZWxmLnVuY29uZGl0aW9u
YWxfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IENvbmRpdGlvbkVycm9yOgor
ICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBDb25kaXRpb25FcnJvcihleHByKQorICAg
ICAgICAgICAgICAgICAgICAgICAgIyBJZiB3ZSBnb3QgYW4gZXJyb3IgZm9yIHRoZSByb290IG5v
ZGUsIHJlLWFkZCB0aGUgcHJldmlvdXMKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZGVmYXVs
dCB2YWx1ZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcHJldl9kZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbmRpdGlvbnMuYXBwZW5kKChOb25lLCBwcmV2X2RlZmF1
bHQpKQorICAgICAgICAgICAgICAgIGlmIGVycm9yIGlzIE5vbmU6CisgICAgICAgICAgICAgICAg
ICAgIGNvdW50X3ZhbHVlID0gdG9fY291bnRfdmFsdWUodmFsdWUpCisgICAgICAgICAgICAgICAg
ICAgIHZhbHVlX2NvdW50W2NvdW50X3ZhbHVlXSArPSBsZW4obm9kZS5ydW5faW5mbykKKworICAg
ICAgICAgICAgICAgIGlmIGVycm9yIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGNvbmRp
dGlvbnMuYXBwZW5kKChleHByLCB2YWx1ZSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAg
ICAgICAgICAgICAgICAgZXJyb3JzLmFwcGVuZChlcnJvcikKIAotICAgIGRlZiBhZGRfbmV3KHNl
bGYsIHVuY29uZGl0aW9uYWxfdmFsdWUsIHN0YWJpbGl0eSk6Ci0gICAgICAgICIiIkFkZCBuZXcg
Y29uZGl0aW9uYWwgdmFsdWVzIGZvciB0aGUgcHJvcGVydHkuCisgICAgICAgICAgICBmb3IgY2hp
bGQgaW4gbm9kZS5jaGlsZHJlbjoKKyAgICAgICAgICAgICAgICBxdWV1ZS5hcHBlbmQoKGNoaWxk
LCBwYXJlbnRzX2FuZF9zZWxmKSkKIAotICAgICAgICBTdWJjbGFzc2VzIG5lZWQgbm90IGltcGxl
bWVudCB0aGlzIGlmIHRoZXkgb25seSBldmVyIHVwZGF0ZSB0aGUgZGVmYXVsdCB2YWx1ZS4iIiIK
LSAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorICAgICAgICBjb25kaXRpb25zID0g
Y29uZGl0aW9uc1s6Oi0xXQogCi0gICAgZGVmIHVwZGF0ZV92YWx1ZShzZWxmLCBvbGRfdmFsdWUs
IG5ld192YWx1ZSk6Ci0gICAgICAgICIiIkdldCBhIHZhbHVlIHRvIHNldCBvbiB0aGUgcHJvcGVy
dHksIGdpdmVuIGl0cyBwcmV2aW91cyB2YWx1ZSBhbmQgdGhlIG5ldyB2YWx1ZSBmcm9tIGxvZ3Mu
CisgICAgICAgICMgSWYgd2UgaGF2ZW4ndCBzZXQgYSBkZWZhdWx0IGNvbmRpdGlvbiwgYWRkIG9u
ZSBhbmQgcmVtb3ZlIGFsbCB0aGUgY29uZGl0aW9ucworICAgICAgICAjIHdpdGggdGhlIHNhbWUg
dmFsdWUKKyAgICAgICAgaWYgdmFsdWVfY291bnQgYW5kIChub3QgY29uZGl0aW9ucyBvciBjb25k
aXRpb25zWy0xXVswXSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICAjIFNvcnQgaW4gb3JkZXIg
b2Ygb2NjdXJlbmNlLCBwcmlvcml0aXNpbmcgdmFsdWVzIHRoYXQgbWF0Y2ggdGhlIGNsYXNzIGRl
ZmF1bHQKKyAgICAgICAgICAgICMgb3IgdGhlIHByZXZpb3VzIGRlZmF1bHQKKyAgICAgICAgICAg
IGNsc19kZWZhdWx0ID0gdG9fY291bnRfdmFsdWUoc2VsZi5kZWZhdWx0X3ZhbHVlKQorICAgICAg
ICAgICAgcHJldl9kZWZhdWx0ID0gdG9fY291bnRfdmFsdWUocHJldl9kZWZhdWx0KQorICAgICAg
ICAgICAgY29tbW9uZXN0X3ZhbHVlID0gbWF4KHZhbHVlX2NvdW50LCBrZXk9bGFtYmRhIHg6KHZh
bHVlX2NvdW50LmdldCh4KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB4ID09IGNsc19kZWZhdWx0LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHggPT0gcHJldl9k
ZWZhdWx0KSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoY29tbW9uZXN0X3ZhbHVlLCB0dXBs
ZSk6CisgICAgICAgICAgICAgICAgY29tbW9uZXN0X3ZhbHVlID0gbGlzdChjb21tb25lc3RfdmFs
dWUpCisgICAgICAgICAgICBjb21tb25lc3RfdmFsdWUgPSBzZWxmLmZyb21faW5pX3ZhbHVlKGNv
bW1vbmVzdF92YWx1ZSkKKyAgICAgICAgICAgIGNvbmRpdGlvbnMgPSBbaXRlbSBmb3IgaXRlbSBp
biBjb25kaXRpb25zIGlmIGl0ZW1bMV0gIT0gY29tbW9uZXN0X3ZhbHVlXQorICAgICAgICAgICAg
Y29uZGl0aW9ucy5hcHBlbmQoKE5vbmUsIGNvbW1vbmVzdF92YWx1ZSkpCiAKLSAgICAgICAgQnkg
ZGVmYXVsdCB0aGlzIGp1c3QgcmV0dXJucyB0aGUgbmV3IHZhbHVlLCBidXQgb3ZlcnJpZGluZyBp
cyB1c2VmdWwgaW4gY2FzZXMKLSAgICAgICAgd2hlcmUgd2Ugd2FudCB0aGUgbmV3IHZhbHVlIHRv
IGJlIHNvbWUgZnVuY3Rpb24gb2YgYm90aCBvbGQgYW5kIG5ldyBlLmcuIG1heChvbGRfdmFsdWUs
IG5ld192YWx1ZSkiIiIKLSAgICAgICAgcmV0dXJuIG5ld192YWx1ZQorICAgICAgICByZXR1cm4g
Y29uZGl0aW9ucywgZXJyb3JzCiAKIAogY2xhc3MgRXhwZWN0ZWRVcGRhdGUoUHJvcGVydHlVcGRh
dGUpOgogICAgIHByb3BlcnR5X25hbWUgPSAiZXhwZWN0ZWQiCisgICAgcHJvcGVydHlfYnVpbGRl
ciA9IGJ1aWxkX2NvbmRpdGlvbmFsX3RyZWUKIAogICAgIGRlZiBjaGVja19kZWZhdWx0KHNlbGYs
IHJlc3VsdCk6CiAgICAgICAgIGlmIHNlbGYuZGVmYXVsdF92YWx1ZSBpcyBub3QgTm9uZToKQEAg
LTQwNSwxMDcgKzY3MCwxMjMgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGUoUHJvcGVydHlVcGRhdGUp
OgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5kZWZhdWx0X3ZhbHVlID0gcmVzdWx0
LmRlZmF1bHRfZXhwZWN0ZWQKIAotICAgIGRlZiBnZXRfdmFsdWUoc2VsZiwgaW5fdmFsdWUpOgot
ICAgICAgICByZXR1cm4gaW5fdmFsdWUuc3RhdHVzCi0KLSAgICBkZWYgdXBkYXRlX2RlZmF1bHQo
c2VsZik6Ci0gICAgICAgIHVwZGF0ZV9kZWZhdWx0ID0gYWxsKHNlbGYubmV3WzBdLnZhbHVlID09
IHJlc3VsdC52YWx1ZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgcmVzdWx0IGlu
IHNlbGYubmV3KSBhbmQgbm90IHNlbGYudXBkYXRlZAotICAgICAgICBuZXdfdmFsdWUgPSBzZWxm
Lm5ld1swXS52YWx1ZQotICAgICAgICByZXR1cm4gdXBkYXRlX2RlZmF1bHQsIG5ld192YWx1ZQor
ICAgIGRlZiBmcm9tX3Jlc3VsdF92YWx1ZShzZWxmLCByZXN1bHQpOgorICAgICAgICAjIFdoZW4g
d2UgYXJlIHVwZGF0aW5nIGludGVybWl0dGVudHMsIHdlIG5lZWQgdG8ga2VlcCBhIHJlY29yZCBv
ZiBhbnkgZXhpc3RpbmcKKyAgICAgICAgIyBpbnRlcm1pdHRlbnRzIHRvIHBhc3Mgb24gd2hlbiBi
dWlsZGluZyB0aGUgcHJvcGVydHkgdHJlZSBhbmQgbWF0Y2hpbmcgc3RhdHVzZXMgYW5kCisgICAg
ICAgICMgaW50ZXJtaXR0ZW50cyB0byB0aGUgY29ycmVjdCBydW4gaW5mbyAtICB0aGlzIGlzIHNv
IHdlIGNhbiBhZGQgdGhlbSBiYWNrIGludG8gdGhlCisgICAgICAgICMgbWV0YWRhdGEgYWxpZ25l
ZCB3aXRoIHRoZSByaWdodCBjb25kaXRpb25zLCB1bmxlc3Mgc3BlY2lmaWVkIG5vdCB0byB3aXRo
CisgICAgICAgICMgc2VsZi5yZW1vdmVfaW50ZXJtaXR0ZW50LgorICAgICAgICAjIFRoZSAoc3Rh
dHVzLCBrbm93bl9pbnRlcm1pdHRlbnQpIHR1cGxlIGlzIGNvdW50ZWQgd2hlbiB0aGUgcHJvcGVy
dHkgdHJlZSBpcyBidWlsdCwgYnV0CisgICAgICAgICMgdGhlIGNvdW50IHZhbHVlIG9ubHkgYXBw
bGllcyB0byB0aGUgZmlyc3QgaXRlbSBpbiB0aGUgdHVwbGUsIHRoZSBzdGF0dXMgZnJvbSB0aGF0
IHJ1biwKKyAgICAgICAgIyB3aGVuIHBhc3NlZCB0byBgdXBkYXRlZF92YWx1ZWAuCisgICAgICAg
IGlmIChub3Qgc2VsZi51cGRhdGVfaW50ZXJtaXR0ZW50IG9yCisgICAgICAgICAgICBzZWxmLnJl
bW92ZV9pbnRlcm1pdHRlbnQgb3IKKyAgICAgICAgICAgIG5vdCByZXN1bHQua25vd25faW50ZXJt
aXR0ZW50KToKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQuc3RhdHVzCisgICAgICAgIHJldHVy
biByZXN1bHQuc3RhdHVzICsgcmVzdWx0Lmtub3duX2ludGVybWl0dGVudAorCisgICAgZGVmIHRv
X2luaV92YWx1ZShzZWxmLCB2YWx1ZSk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIChs
aXN0LCB0dXBsZSkpOgorICAgICAgICAgICAgcmV0dXJuIFtzdHIoaXRlbSkgZm9yIGl0ZW0gaW4g
dmFsdWVdCisgICAgICAgIHJldHVybiBzdHIodmFsdWUpCisKKyAgICBkZWYgdXBkYXRlZF92YWx1
ZShzZWxmLCBjdXJyZW50LCBuZXcpOgorICAgICAgICBpZiBsZW4obmV3KSA+IDEgYW5kIG5vdCBz
ZWxmLnVwZGF0ZV9pbnRlcm1pdHRlbnQgYW5kIG5vdCBpc2luc3RhbmNlKGN1cnJlbnQsIGxpc3Qp
OgorICAgICAgICAgICAgcmFpc2UgQ29uZGl0aW9uRXJyb3IKIAotICAgIGRlZiBhZGRfbmV3KHNl
bGYsIHVuY29uZGl0aW9uYWxfdmFsdWUsIHN0YWJpbGl0eSk6Ci0gICAgICAgIHRyeToKLSAgICAg
ICAgICAgIGNvbmRpdGlvbmFscyA9IGdyb3VwX2NvbmRpdGlvbmFscygKLSAgICAgICAgICAgICAg
ICBzZWxmLm5ldywKLSAgICAgICAgICAgICAgICBwcm9wZXJ0eV9vcmRlcj1zZWxmLm5vZGUucm9v
dC5wcm9wZXJ0eV9vcmRlciwKLSAgICAgICAgICAgICAgICBib29sZWFuX3Byb3BlcnRpZXM9c2Vs
Zi5ub2RlLnJvb3QuYm9vbGVhbl9wcm9wZXJ0aWVzKQotICAgICAgICBleGNlcHQgQ29uZGl0aW9u
RXJyb3IgYXMgZToKLSAgICAgICAgICAgIGlmIHN0YWJpbGl0eSBpcyBub3QgTm9uZToKLSAgICAg
ICAgICAgICAgICBzZWxmLm5vZGUuc2V0KCJkaXNhYmxlZCIsIHN0YWJpbGl0eSBvciAidW5zdGFi
bGUiLCBlLmNvbmQuY2hpbGRyZW5bMF0pCi0gICAgICAgICAgICAgICAgc2VsZi5ub2RlLm5ld19k
aXNhYmxlZCA9IFRydWUKKyAgICAgICAgY291bnRzID0ge30KKyAgICAgICAgZm9yIHN0YXR1cywg
Y291bnQgaW4gaXRlcml0ZW1zKG5ldyk6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHN0YXR1
cywgdHVwbGUpOgorICAgICAgICAgICAgICAgIGNvdW50c1tzdGF0dXNbMF1dID0gY291bnQKKyAg
ICAgICAgICAgICAgICBjb3VudHMudXBkYXRlKHtpbnRlcm1pdHRlbnQ6IDAgZm9yIGludGVybWl0
dGVudCBpbiBzdGF0dXNbMTpdIGlmIGludGVybWl0dGVudCBub3QgaW4gY291bnRzfSkKICAgICAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVXBkYXRlRXJyb3IoIkNvbmZsaWN0
aW5nIG1ldGFkYXRhIHZhbHVlcyIpCi0gICAgICAgIGZvciBjb25kaXRpb25hbF9ub2RlLCB2YWx1
ZSBpbiBjb25kaXRpb25hbHM6Ci0gICAgICAgICAgICBpZiB2YWx1ZSAhPSB1bmNvbmRpdGlvbmFs
X3ZhbHVlOgotICAgICAgICAgICAgICAgIHNlbGYubm9kZS5zZXQoc2VsZi5wcm9wZXJ0eV9uYW1l
LCB2YWx1ZSwgY29uZGl0aW9uPWNvbmRpdGlvbmFsX25vZGUuY2hpbGRyZW5bMF0pCisgICAgICAg
ICAgICAgICAgY291bnRzW3N0YXR1c10gPSBjb3VudAorCisgICAgICAgIGlmIG5vdCAoc2VsZi51
cGRhdGVfaW50ZXJtaXR0ZW50IG9yIGlzaW5zdGFuY2UoY3VycmVudCwgbGlzdCkpOgorICAgICAg
ICAgICAgcmV0dXJuIGxpc3QoY291bnRzKVswXQorCisgICAgICAgICMgUmVvcmRlciBzdGF0dXNl
cyBmaXJzdCBiYXNlZCBvbiBjb3VudHMsIHRoZW4gYmFzZWQgb24gc3RhdHVzIHByaW9yaXR5IGlm
IHRoZXJlIGFyZSB0aWVzLgorICAgICAgICAjIENvdW50cyB3aXRoIDAgYXJlIGNvbnNpZGVyZWQg
aW50ZXJtaXR0ZW50LgorICAgICAgICBzdGF0dXNlcyA9IFsiT0siLCAiUEFTUyIsICJGQUlMIiwg
IkVSUk9SIiwgIlRJTUVPVVQiLCAiQ1JBU0giXQorICAgICAgICBzdGF0dXNfcHJpb3JpdHkgPSB7
dmFsdWU6IGkgZm9yIGksIHZhbHVlIGluIGVudW1lcmF0ZShzdGF0dXNlcyl9CisgICAgICAgIHNv
cnRlZF9uZXcgPSBzb3J0ZWQoaXRlcml0ZW1zKGNvdW50cyksIGtleT1sYW1iZGEgeDooLTEgKiB4
WzFdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0dXNfcHJpb3JpdHkuZ2V0KHhbMF0sCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxlbihzdGF0dXNfcHJpb3JpdHkp
KSkpCisgICAgICAgIGV4cGVjdGVkID0gW10KKyAgICAgICAgZm9yIHN0YXR1cywgY291bnQgaW4g
c29ydGVkX25ldzoKKyAgICAgICAgICAgICMgSWYgd2UgYXJlIG5vdCByZW1vdmluZyBleGlzdGlu
ZyByZWNvcmRlZCBpbnRlcm1pdHRlbnRzLCB3aXRoIGEgY291bnQgb2YgMCwKKyAgICAgICAgICAg
ICMgYWRkIHRoZW0gaW4gdG8gZXhwZWN0ZWQuCisgICAgICAgICAgICBpZiBjb3VudCA+IDAgb3Ig
bm90IHNlbGYucmVtb3ZlX2ludGVybWl0dGVudDoKKyAgICAgICAgICAgICAgICBleHBlY3RlZC5h
cHBlbmQoc3RhdHVzKQorICAgICAgICBpZiBzZWxmLnVwZGF0ZV9pbnRlcm1pdHRlbnQ6CisgICAg
ICAgICAgICBpZiBsZW4oZXhwZWN0ZWQpID09IDE6CisgICAgICAgICAgICAgICAgcmV0dXJuIGV4
cGVjdGVkWzBdCisgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWQKKworICAgICAgICAjIElmIG5v
dGhpbmcgaGFzIGNoYW5nZWQgYW5kIG5vdCBzZWxmLnVwZGF0ZV9pbnRlcm1pdHRlbnQsIHByZXNl
cnZlIGV4aXN0aW5nCisgICAgICAgICMgaW50ZXJtaXR0ZW50LgorICAgICAgICBpZiBzZXQoZXhw
ZWN0ZWQpLmlzc3Vic2V0KHNldChjdXJyZW50KSk6CisgICAgICAgICAgICByZXR1cm4gY3VycmVu
dAorICAgICAgICAjIElmIHdlIGFyZSBub3QgdXBkYXRpbmcgaW50ZXJtaXR0ZW50cywgcmV0dXJu
IHRoZSBzdGF0dXMgd2l0aCB0aGUgaGlnaGVzdCBvY2N1cmVuY2UuCisgICAgICAgIHJldHVybiBl
eHBlY3RlZFswXQogCiAKIGNsYXNzIE1heEFzc2VydHNVcGRhdGUoUHJvcGVydHlVcGRhdGUpOgor
ICAgICIiIkZvciBhc3NlcnRzIHdlIGFsd2F5cyB1cGRhdGUgdGhlIGRlZmF1bHQgdmFsdWUgYW5k
IG5ldmVyIGFkZCBuZXcgY29uZGl0aW9uYWxzLgorICAgIFRoZSB2YWx1ZSB3ZSBzZXQgYXMgdGhl
IGRlZmF1bHQgaXMgdGhlIG1heGltdW0gdGhlIGN1cnJlbnQgZGVmYXVsdCBvciBvbmUgbW9yZSB0
aGFuIHRoZQorICAgIG51bWJlciBvZiBhc3NlcnRzIHdlIHNhdyBpbiBhbnkgY29uZmlndXJhdGlv
bi4iIiIKKwogICAgIHByb3BlcnR5X25hbWUgPSAibWF4LWFzc2VydHMiCiAgICAgY2xzX2RlZmF1
bHRfdmFsdWUgPSAwCiAgICAgdmFsdWVfdHlwZSA9IGludAorICAgIHByb3BlcnR5X2J1aWxkZXIg
PSBidWlsZF91bmNvbmRpdGlvbmFsX3RyZWUKIAotICAgIGRlZiB1cGRhdGVfdmFsdWUoc2VsZiwg
b2xkX3ZhbHVlLCBuZXdfdmFsdWUpOgotICAgICAgICBuZXdfdmFsdWUgPSBzZWxmLnZhbHVlX3R5
cGUobmV3X3ZhbHVlKQotICAgICAgICBpZiBvbGRfdmFsdWUgaXMgbm90IE5vbmU6Ci0gICAgICAg
ICAgICBvbGRfdmFsdWUgPSBzZWxmLnZhbHVlX3R5cGUob2xkX3ZhbHVlKQotICAgICAgICBpZiBv
bGRfdmFsdWUgaXMgbm90IE5vbmUgYW5kIG9sZF92YWx1ZSA8IG5ld192YWx1ZToKLSAgICAgICAg
ICAgIHJldHVybiBuZXdfdmFsdWUgKyAxCi0gICAgICAgIGlmIG9sZF92YWx1ZSBpcyBOb25lOgot
ICAgICAgICAgICAgcmV0dXJuIG5ld192YWx1ZSArIDEKLSAgICAgICAgcmV0dXJuIG9sZF92YWx1
ZQotCi0gICAgZGVmIHVwZGF0ZV9kZWZhdWx0KHNlbGYpOgotICAgICAgICAiIiJGb3IgYXNzZXJ0
cyB3ZSBhbHdheXMgdXBkYXRlIHRoZSBkZWZhdWx0IHZhbHVlIGFuZCBuZXZlciBhZGQgbmV3IGNv
bmRpdGlvbmFscy4KLSAgICAgICAgVGhlIHZhbHVlIHdlIHNldCBhcyB0aGUgZGVmYXVsdCBpcyB0
aGUgbWF4aW11bSB0aGUgY3VycmVudCBkZWZhdWx0IG9yIG9uZSBtb3JlIHRoYW4gdGhlCi0gICAg
ICAgIG51bWJlciBvZiBhc3NlcnRzIHdlIHNhdyBpbiBhbnkgY29uZmlndXJhdGlvbi4iIiIKLSAg
ICAgICAgIyBDdXJyZW50IHZhbHVlcwotICAgICAgICB2YWx1ZXMgPSBbXQotICAgICAgICBjdXJy
ZW50X2RlZmF1bHQgPSBOb25lCi0gICAgICAgIGlmIHNlbGYucHJvcGVydHlfbmFtZSBpbiBzZWxm
Lm5vZGUuX2RhdGE6Ci0gICAgICAgICAgICBjdXJyZW50X2RlZmF1bHQgPSBbaXRlbSBmb3IgaXRl
bSBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYubm9kZS5fZGF0YVtzZWxm
LnByb3BlcnR5X25hbWVdCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5j
b25kaXRpb25fbm9kZSBpcyBOb25lXQotICAgICAgICAgICAgaWYgY3VycmVudF9kZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHZhbHVlcy5hcHBlbmQoaW50KGN1cnJlbnRfZGVmYXVsdFswXS52YWx1
ZSkpCi0gICAgICAgIHZhbHVlcy5leHRlbmQoaXRlbS52YWx1ZSBmb3IgaXRlbSBpbiBzZWxmLm5l
dykKLSAgICAgICAgdmFsdWVzLmV4dGVuZChpdGVtLnZhbHVlIGZvciBpdGVtIGluCi0gICAgICAg
ICAgICAgICAgICAgICAgaXRlcnRvb2xzLmNoYWluLmZyb21faXRlcmFibGUocmVzdWx0cyBmb3Ig
XywgcmVzdWx0cyBpbiBzZWxmLnVwZGF0ZWQpKQotICAgICAgICBuZXdfdmFsdWUgPSBtYXgodmFs
dWVzKQotICAgICAgICByZXR1cm4gVHJ1ZSwgbmV3X3ZhbHVlCisgICAgZGVmIHVwZGF0ZWRfdmFs
dWUoc2VsZiwgY3VycmVudCwgbmV3KToKKyAgICAgICAgaWYgYW55KGl0ZW0gPiBjdXJyZW50IGZv
ciBpdGVtIGluIG5ldyk6CisgICAgICAgICAgICByZXR1cm4gbWF4KG5ldykgKyAxCisgICAgICAg
IHJldHVybiBjdXJyZW50CiAKIAogY2xhc3MgTWluQXNzZXJ0c1VwZGF0ZShQcm9wZXJ0eVVwZGF0
ZSk6CiAgICAgcHJvcGVydHlfbmFtZSA9ICJtaW4tYXNzZXJ0cyIKICAgICBjbHNfZGVmYXVsdF92
YWx1ZSA9IDAKICAgICB2YWx1ZV90eXBlID0gaW50CisgICAgcHJvcGVydHlfYnVpbGRlciA9IGJ1
aWxkX3VuY29uZGl0aW9uYWxfdHJlZQorCisgICAgZGVmIHVwZGF0ZWRfdmFsdWUoc2VsZiwgY3Vy
cmVudCwgbmV3KToKKyAgICAgICAgaWYgYW55KGl0ZW0gPCBjdXJyZW50IGZvciBpdGVtIGluIG5l
dyk6CisgICAgICAgICAgICBydiA9IG1pbihuZXcpIC0gMQorICAgICAgICBlbHNlOgorICAgICAg
ICAgICAgcnYgPSBjdXJyZW50CisgICAgICAgIHJldHVybiBtYXgocnYsIDApCisKIAotICAgIGRl
ZiB1cGRhdGVfdmFsdWUoc2VsZiwgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpOgotICAgICAgICBuZXdf
dmFsdWUgPSBzZWxmLnZhbHVlX3R5cGUobmV3X3ZhbHVlKQotICAgICAgICBpZiBvbGRfdmFsdWUg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBvbGRfdmFsdWUgPSBzZWxmLnZhbHVlX3R5cGUob2xk
X3ZhbHVlKQotICAgICAgICBpZiBvbGRfdmFsdWUgaXMgbm90IE5vbmUgYW5kIG5ld192YWx1ZSA8
IG9sZF92YWx1ZToKLSAgICAgICAgICAgIHJldHVybiAwCi0gICAgICAgIGlmIG9sZF92YWx1ZSBp
cyBOb25lOgotICAgICAgICAgICAgIyBJZiB3ZSBhcmUgZ2V0dGluZyBzb21lIGFzc2VydHMgZm9y
IHRoZSBmaXJzdCB0aW1lLCBzZXQgdGhlIG1pbmltdW0gdG8gMAotICAgICAgICAgICAgcmV0dXJu
IG5ld192YWx1ZQotICAgICAgICByZXR1cm4gb2xkX3ZhbHVlCi0KLSAgICBkZWYgdXBkYXRlX2Rl
ZmF1bHQoc2VsZik6Ci0gICAgICAgICIiIkZvciBhc3NlcnRzIHdlIGFsd2F5cyB1cGRhdGUgdGhl
IGRlZmF1bHQgdmFsdWUgYW5kIG5ldmVyIGFkZCBuZXcgY29uZGl0aW9uYWxzLgotICAgICAgICBU
aGlzIGlzIGVpdGhlciBzZXQgdG8gdGhlIGN1cnJlbnQgdmFsdWUgb3Igb25lIGxlc3MgdGhhbiB0
aGUgbnVtYmVyIG9mIGFzc2VydHMKLSAgICAgICAgd2Ugc2F3LCB3aGljaGV2ZXIgaXMgbG93ZXIu
IiIiCi0gICAgICAgIHZhbHVlcyA9IFtdCi0gICAgICAgIGN1cnJlbnRfZGVmYXVsdCA9IE5vbmUK
LSAgICAgICAgaWYgc2VsZi5wcm9wZXJ0eV9uYW1lIGluIHNlbGYubm9kZS5fZGF0YToKLSAgICAg
ICAgICAgIGN1cnJlbnRfZGVmYXVsdCA9IFtpdGVtIGZvciBpdGVtIGluCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5ub2RlLl9kYXRhW3NlbGYucHJvcGVydHlfbmFtZV0KLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtLmNvbmRpdGlvbl9ub2RlIGlzIE5v
bmVdCi0gICAgICAgIGlmIGN1cnJlbnRfZGVmYXVsdDoKLSAgICAgICAgICAgIHZhbHVlcy5hcHBl
bmQoY3VycmVudF9kZWZhdWx0WzBdLnZhbHVlX2FzKHNlbGYudmFsdWVfdHlwZSkpCi0gICAgICAg
IHZhbHVlcy5leHRlbmQobWF4KDAsIGl0ZW0udmFsdWUpIGZvciBpdGVtIGluIHNlbGYubmV3KQot
ICAgICAgICB2YWx1ZXMuZXh0ZW5kKG1heCgwLCBpdGVtLnZhbHVlKSBmb3IgaXRlbSBpbgotICAg
ICAgICAgICAgICAgICAgICAgIGl0ZXJ0b29scy5jaGFpbi5mcm9tX2l0ZXJhYmxlKHJlc3VsdHMg
Zm9yIF8sIHJlc3VsdHMgaW4gc2VsZi51cGRhdGVkKSkKLSAgICAgICAgbmV3X3ZhbHVlID0gbWlu
KHZhbHVlcykKLSAgICAgICAgcmV0dXJuIFRydWUsIG5ld192YWx1ZQotCi0KLWNsYXNzIExzYW5V
cGRhdGUoUHJvcGVydHlVcGRhdGUpOgorY2xhc3MgQXBwZW5kT25seUxpc3RVcGRhdGUoUHJvcGVy
dHlVcGRhdGUpOgorICAgIGNsc19kZWZhdWx0X3ZhbHVlID0gW10KKyAgICBwcm9wZXJ0eV9idWls
ZGVyID0gYnVpbGRfdW5jb25kaXRpb25hbF90cmVlCisKKyAgICBkZWYgdXBkYXRlZF92YWx1ZShz
ZWxmLCBjdXJyZW50LCBuZXcpOgorICAgICAgICBpZiBjdXJyZW50IGlzIE5vbmU6CisgICAgICAg
ICAgICBydiA9IHNldCgpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBydiA9IHNldChjdXJy
ZW50KQorCisgICAgICAgIGZvciBpdGVtIGluIG5ldzoKKyAgICAgICAgICAgIGlmIGl0ZW0gaXMg
Tm9uZToKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgZWxpZiBpc2luc3Rh
bmNlKGl0ZW0sIChzdHIsIHVuaWNvZGUpKToKKyAgICAgICAgICAgICAgICBydi5hZGQoaXRlbSkK
KyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcnYgfD0gaXRlbQorCisgICAgICAg
IHJldHVybiBzb3J0ZWQocnYpCisKKworY2xhc3MgTHNhblVwZGF0ZShBcHBlbmRPbmx5TGlzdFVw
ZGF0ZSk6CiAgICAgcHJvcGVydHlfbmFtZSA9ICJsc2FuLWFsbG93ZWQiCi0gICAgY2xzX2RlZmF1
bHRfdmFsdWUgPSBOb25lCisgICAgcHJvcGVydHlfYnVpbGRlciA9IGJ1aWxkX3VuY29uZGl0aW9u
YWxfdHJlZQogCi0gICAgZGVmIGdldF92YWx1ZShzZWxmLCByZXN1bHQpOgorICAgIGRlZiBmcm9t
X3Jlc3VsdF92YWx1ZShzZWxmLCByZXN1bHQpOgogICAgICAgICAjIElmIHdlIGhhdmUgYW4gYWxs
b3dlZF9tYXRjaCB0aGF0IG1hdGNoZWQsIHJldHVybiBOb25lCiAgICAgICAgICMgVGhpcyB2YWx1
ZSBpcyBpZ25vcmVkIGxhdGVyIChiZWNhdXNlIGl0IG1hdGNoZXMgdGhlIGRlZmF1bHQpCiAgICAg
ICAgICMgV2UgZG8gdGhhdCBiZWNhdXNlIHRoZW4gaWYgd2UgYWxsb3cgYSBmYWlsdXJlIGluIGZv
by9fX2Rpcl9fLmluaQpAQCAtNTE2LDk0ICs3OTcsNjUgQEAgY2xhc3MgTHNhblVwZGF0ZShQcm9w
ZXJ0eVVwZGF0ZSk6CiAgICAgICAgICMgVE9ETzogdGhlcmUgaXMgcHJvYmFibHkgc29tZSBpbXBy
b3ZlbWVudCB0byBiZSBtYWRlIGJ5IGxvb2tpbmcgZm9yIGEgImJldHRlciIgc3RhY2sgZnJhbWUK
ICAgICAgICAgcmV0dXJuIHJlc3VsdFswXVswXQogCi0gICAgZGVmIHVwZGF0ZV92YWx1ZShzZWxm
LCBvbGRfdmFsdWUsIG5ld192YWx1ZSk6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2UobmV3X3ZhbHVl
LCAoc3RyLCB1bmljb2RlKSk6Ci0gICAgICAgICAgICBuZXdfdmFsdWUgPSB7bmV3X3ZhbHVlfQot
ICAgICAgICBlbHNlOgotICAgICAgICAgICAgbmV3X3ZhbHVlID0gc2V0KG5ld192YWx1ZSkKLSAg
ICAgICAgaWYgb2xkX3ZhbHVlIGlzIE5vbmU6Ci0gICAgICAgICAgICBvbGRfdmFsdWUgPSBzZXQo
KQotICAgICAgICBvbGRfdmFsdWUgPSBzZXQob2xkX3ZhbHVlKQotICAgICAgICByZXR1cm4gc29y
dGVkKChvbGRfdmFsdWUgfCBuZXdfdmFsdWUpIC0ge05vbmV9KQotCi0gICAgZGVmIHVwZGF0ZV9k
ZWZhdWx0KHNlbGYpOgotICAgICAgICBjdXJyZW50X2RlZmF1bHQgPSBOb25lCi0gICAgICAgIGlm
IHNlbGYucHJvcGVydHlfbmFtZSBpbiBzZWxmLm5vZGUuX2RhdGE6Ci0gICAgICAgICAgICBjdXJy
ZW50X2RlZmF1bHQgPSBbaXRlbSBmb3IgaXRlbSBpbgotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHNlbGYubm9kZS5fZGF0YVtzZWxmLnByb3BlcnR5X25hbWVdCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgaXRlbS5jb25kaXRpb25fbm9kZSBpcyBOb25lXQotICAgICAg
ICBpZiBjdXJyZW50X2RlZmF1bHQ6Ci0gICAgICAgICAgICBjdXJyZW50X2RlZmF1bHQgPSBjdXJy
ZW50X2RlZmF1bHRbMF0udmFsdWUKLSAgICAgICAgbmV3X3ZhbHVlcyA9IFtpdGVtLnZhbHVlIGZv
ciBpdGVtIGluIHNlbGYubmV3XQotICAgICAgICBuZXdfdmFsdWUgPSBzZWxmLnVwZGF0ZV92YWx1
ZShjdXJyZW50X2RlZmF1bHQsIG5ld192YWx1ZXMpCi0gICAgICAgIHJldHVybiBUcnVlLCBuZXdf
dmFsdWUgaWYgbmV3X3ZhbHVlIGVsc2UgTm9uZQotCi0KLWRlZiBncm91cF9jb25kaXRpb25hbHMo
dmFsdWVzLCBwcm9wZXJ0eV9vcmRlcj1Ob25lLCBib29sZWFuX3Byb3BlcnRpZXM9Tm9uZSk6Ci0g
ICAgIiIiR2l2ZW4gYSBsaXN0IG9mIFZhbHVlIG9iamVjdHMsIHJldHVybiBhIGxpc3Qgb2YKLSAg
ICAoY29uZGl0aW9uYWxfbm9kZSwgc3RhdHVzKSBwYWlycyByZXByZXNlbnRpbmcgdGhlIGNvbmRp
dGlvbmFsCi0gICAgZXhwcmVzc2lvbnMgdGhhdCBhcmUgcmVxdWlyZWQgdG8gbWF0Y2ggZWFjaCBz
dGF0dXMKLQotICAgIDpwYXJhbSB2YWx1ZXM6IExpc3Qgb2YgVmFsdWVzCi0gICAgOnBhcmFtIHBy
b3BlcnR5X29yZGVyOiBMaXN0IG9mIHByb3BlcnRpZXMgdG8gdXNlIGluIGV4cGVjdGF0aW9uIG1l
dGFkYXRhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tIG1vc3QgdG8gbGVhc3Qgc2ln
bmlmaWNhbnQuCi0gICAgOnBhcmFtIGJvb2xlYW5fcHJvcGVydGllczogU2V0IG9mIHByb3BlcnRp
ZXMgaW4gcHJvcGVydHlfb3JkZXIgdGhhdCBzaG91bGQKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBiZSB0cmVhdGVkIGFzIGJvb2xlYW4uIiIiCi0KLSAgICBieV9wcm9wZXJ0eSA9IGRl
ZmF1bHRkaWN0KHNldCkKLSAgICBmb3IgcnVuX2luZm8sIHZhbHVlIGluIHZhbHVlczoKLSAgICAg
ICAgZm9yIHByb3BfbmFtZSwgcHJvcF92YWx1ZSBpbiBydW5faW5mby5pdGVyaXRlbXMoKToKLSAg
ICAgICAgICAgIGJ5X3Byb3BlcnR5Wyhwcm9wX25hbWUsIHByb3BfdmFsdWUpXS5hZGQodmFsdWUp
Ci0KLSAgICBpZiBwcm9wZXJ0eV9vcmRlciBpcyBOb25lOgotICAgICAgICBwcm9wZXJ0eV9vcmRl
ciA9IFsiZGVidWciLCAib3MiLCAidmVyc2lvbiIsICJwcm9jZXNzb3IiLCAiYml0cyJdCi0KLSAg
ICBpZiBib29sZWFuX3Byb3BlcnRpZXMgaXMgTm9uZToKLSAgICAgICAgYm9vbGVhbl9wcm9wZXJ0
aWVzID0gc2V0KFsiZGVidWciXSkKLSAgICBlbHNlOgotICAgICAgICBib29sZWFuX3Byb3BlcnRp
ZXMgPSBzZXQoYm9vbGVhbl9wcm9wZXJ0aWVzKQotCi0gICAgIyBJZiB3ZSBoYXZlIG1vcmUgdGhh
biBvbmUgdmFsdWUsIHJlbW92ZSBhbnkgcHJvcGVydGllcyB0aGF0IGFyZSBjb21tb24KLSAgICAj
IGZvciBhbGwgdGhlIHZhbHVlcwotICAgIGlmIGxlbih2YWx1ZXMpID4gMToKLSAgICAgICAgZm9y
IGtleSwgc3RhdHVzZXMgaW4gYnlfcHJvcGVydHkuY29weSgpLml0ZXJpdGVtcygpOgotICAgICAg
ICAgICAgaWYgbGVuKHN0YXR1c2VzKSA9PSBsZW4odmFsdWVzKToKLSAgICAgICAgICAgICAgICBk
ZWwgYnlfcHJvcGVydHlba2V5XQotICAgICAgICBpZiBub3QgYnlfcHJvcGVydHk6Ci0gICAgICAg
ICAgICByYWlzZSBDb25kaXRpb25FcnJvcgorICAgIGRlZiB0b19pbmlfdmFsdWUoc2VsZiwgdmFs
dWUpOgorICAgICAgICByZXR1cm4gdmFsdWUKKwogCi0gICAgcHJvcGVydGllcyA9IHNldChpdGVt
WzBdIGZvciBpdGVtIGluIGJ5X3Byb3BlcnR5Lml0ZXJrZXlzKCkpCi0gICAgaW5jbHVkZV9wcm9w
cyA9IFtdCitjbGFzcyBMZWFrT2JqZWN0VXBkYXRlKEFwcGVuZE9ubHlMaXN0VXBkYXRlKToKKyAg
ICBwcm9wZXJ0eV9uYW1lID0gImxlYWstYWxsb3dlZCIKKyAgICBwcm9wZXJ0eV9idWlsZGVyID0g
YnVpbGRfdW5jb25kaXRpb25hbF90cmVlCiAKLSAgICBmb3IgcHJvcCBpbiBwcm9wZXJ0eV9vcmRl
cjoKLSAgICAgICAgaWYgcHJvcCBpbiBwcm9wZXJ0aWVzOgotICAgICAgICAgICAgaW5jbHVkZV9w
cm9wcy5hcHBlbmQocHJvcCkKKyAgICBkZWYgZnJvbV9yZXN1bHRfdmFsdWUoc2VsZiwgcmVzdWx0
KToKKyAgICAgICAgIyBJZiB3ZSBoYXZlIGFuIGFsbG93ZWRfbWF0Y2ggdGhhdCBtYXRjaGVkLCBy
ZXR1cm4gTm9uZQorICAgICAgICBpZiByZXN1bHRbMV06CisgICAgICAgICAgICByZXR1cm4gTm9u
ZQorICAgICAgICAjIE90aGVyd2lzZSByZXR1cm4gdGhlIHByb2Nlc3Mvb2JqZWN0IG5hbWUKKyAg
ICAgICAgcmV0dXJuIHJlc3VsdFswXQogCi0gICAgY29uZGl0aW9ucyA9IHt9CiAKLSAgICBmb3Ig
cnVuX2luZm8sIHZhbHVlIGluIHZhbHVlczoKLSAgICAgICAgcHJvcF9zZXQgPSB0dXBsZSgocHJv
cCwgcnVuX2luZm9bcHJvcF0pIGZvciBwcm9wIGluIGluY2x1ZGVfcHJvcHMpCi0gICAgICAgIGlm
IHByb3Bfc2V0IGluIGNvbmRpdGlvbnM6Ci0gICAgICAgICAgICBpZiBjb25kaXRpb25zW3Byb3Bf
c2V0XVsxXSAhPSB2YWx1ZToKLSAgICAgICAgICAgICAgICAjIEEgcHJvcF9zZXQgY29udGFpbnMg
Y29udHJhZGljdG9yeSByZXN1bHRzCi0gICAgICAgICAgICAgICAgcmFpc2UgQ29uZGl0aW9uRXJy
b3IobWFrZV9leHByKHByb3Bfc2V0LCB2YWx1ZSwgYm9vbGVhbl9wcm9wZXJ0aWVzKSkKLSAgICAg
ICAgICAgIGNvbnRpbnVlCitjbGFzcyBMZWFrVGhyZXNob2xkVXBkYXRlKFByb3BlcnR5VXBkYXRl
KToKKyAgICBwcm9wZXJ0eV9uYW1lID0gImxlYWstdGhyZXNob2xkIgorICAgIGNsc19kZWZhdWx0
X3ZhbHVlID0ge30KKyAgICBwcm9wZXJ0eV9idWlsZGVyID0gYnVpbGRfdW5jb25kaXRpb25hbF90
cmVlCiAKLSAgICAgICAgZXhwciA9IG1ha2VfZXhwcihwcm9wX3NldCwgdmFsdWUsIGJvb2xlYW5f
cHJvcGVydGllcz1ib29sZWFuX3Byb3BlcnRpZXMpCi0gICAgICAgIGNvbmRpdGlvbnNbcHJvcF9z
ZXRdID0gKGV4cHIsIHZhbHVlKQorICAgIGRlZiBmcm9tX3Jlc3VsdF92YWx1ZShzZWxmLCByZXN1
bHQpOgorICAgICAgICByZXR1cm4gcmVzdWx0CiAKLSAgICByZXR1cm4gY29uZGl0aW9ucy52YWx1
ZXMoKQorICAgIGRlZiB0b19pbmlfdmFsdWUoc2VsZiwgZGF0YSk6CisgICAgICAgIHJldHVybiBb
IiVzOiVzIiAlIGl0ZW0gZm9yIGl0ZW0gaW4gc29ydGVkKGl0ZXJpdGVtcyhkYXRhKSldCiAKKyAg
ICBkZWYgZnJvbV9pbmlfdmFsdWUoc2VsZiwgZGF0YSk6CisgICAgICAgIHJ2ID0ge30KKyAgICAg
ICAgZm9yIGl0ZW0gaW4gZGF0YToKKyAgICAgICAgICAgIGtleSwgdmFsdWUgPSBpdGVtLnNwbGl0
KCI6IiwgMSkKKyAgICAgICAgICAgIHJ2W2tleV0gPSBpbnQoZmxvYXQodmFsdWUpKQorICAgICAg
ICByZXR1cm4gcnYKIAotZGVmIG1ha2VfZXhwcihwcm9wX3NldCwgcmhzLCBib29sZWFuX3Byb3Bl
cnRpZXM9Tm9uZSk6CisgICAgZGVmIHVwZGF0ZWRfdmFsdWUoc2VsZiwgY3VycmVudCwgbmV3KToK
KyAgICAgICAgaWYgY3VycmVudDoKKyAgICAgICAgICAgIHJ2ID0gY3VycmVudC5jb3B5KCkKKyAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgIHJ2ID0ge30KKyAgICAgICAgZm9yIHByb2Nlc3MsIGxl
YWtlZF9ieXRlcywgdGhyZXNob2xkIGluIG5ldzoKKyAgICAgICAgICAgICMgSWYgdGhlIHZhbHVl
IGlzIGxlc3MgdGhhbiB0aGUgdGhyZXNob2xkIGJ1dCB0aGVyZSBpc24ndAorICAgICAgICAgICAg
IyBhbiBvbGQgdmFsdWUgd2UgbXVzdCBoYXZlIGluaGVyaXRlZCB0aGUgdGhyZXNob2xkIGZyb20K
KyAgICAgICAgICAgICMgYSBwYXJlbnQgaW5pIGZpbGUgc28gZG9uJ3QgYW55IGFueXRoaW5nIHRv
IHRoaXMgb25lCisgICAgICAgICAgICBpZiBwcm9jZXNzIG5vdCBpbiBydiBhbmQgbGVha2VkX2J5
dGVzIDwgdGhyZXNob2xkOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBp
ZiBsZWFrZWRfYnl0ZXMgPiBydi5nZXQocHJvY2VzcywgMCk6CisgICAgICAgICAgICAgICAgIyBS
b3VuZCB1cCB0byBuZWFyZXN0IDUwIGtiCisgICAgICAgICAgICAgICAgYm91bmRhcnkgPSA1MCAq
IDEwMjQKKyAgICAgICAgICAgICAgICBydltwcm9jZXNzXSA9IGludChib3VuZGFyeSAqIGNlaWwo
ZmxvYXQobGVha2VkX2J5dGVzKSAvIGJvdW5kYXJ5KSkKKyAgICAgICAgcmV0dXJuIHJ2CisKKwor
ZGVmIG1ha2VfZXhwcihwcm9wX3NldCwgcmhzKToKICAgICAiIiJDcmVhdGUgYW4gQVNUIHRoYXQg
cmV0dXJucyB0aGUgdmFsdWUgYGBzdGF0dXNgYCBnaXZlbiBhbGwgdGhlCiAgICAgcHJvcGVydGll
cyBpbiBwcm9wX3NldCBtYXRjaC4KIAogICAgIDpwYXJhbSBwcm9wX3NldDogdHVwbGUgb2YgKHBy
b3BlcnR5IG5hbWUsIHZhbHVlKSBwYWlycyBmb3IgZWFjaAogICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHkgaW4gdGhpcyBleHByZXNzaW9uIGFuZCB0aGUgdmFsdWUgaXQgbXVzdCBtYXRjaAog
ICAgIDpwYXJhbSBzdGF0dXM6IFN0YXR1cyBvbiBSSFMgd2hlbiBhbGwgdGhlIGdpdmVuIHByb3Bl
cnRpZXMgbWF0Y2gKLSAgICA6cGFyYW0gYm9vbGVhbl9wcm9wZXJ0aWVzOiBTZXQgb2YgcHJvcGVy
dGllcyBpbiBwcm9wZXJ0eV9vcmRlciB0aGF0IHNob3VsZAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJlIHRyZWF0ZWQgYXMgYm9vbGVhbi4KICAgICAiIiIKICAgICByb290ID0gQ29u
ZGl0aW9uYWxOb2RlKCkKIApAQCAtNjExLDE3ICs4NjMsMTIgQEAgZGVmIG1ha2VfZXhwcihwcm9w
X3NldCwgcmhzLCBib29sZWFuX3Byb3BlcnRpZXM9Tm9uZSk6CiAKICAgICBleHByZXNzaW9ucyA9
IFtdCiAgICAgZm9yIHByb3AsIHZhbHVlIGluIHByb3Bfc2V0OgotICAgICAgICBudW1iZXJfdHlw
ZXMgPSAoaW50LCBmbG9hdCwgbG9uZykKLSAgICAgICAgdmFsdWVfY2xzID0gKE51bWJlck5vZGUK
LSAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUodmFsdWUpIGluIG51bWJlcl90eXBlcwotICAg
ICAgICAgICAgICAgICAgICAgZWxzZSBTdHJpbmdOb2RlKQotICAgICAgICBpZiBwcm9wIG5vdCBp
biBib29sZWFuX3Byb3BlcnRpZXM6CisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiAoVHJ1ZSwgRmFs
c2UpOgogICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBwZW5kKAogICAgICAgICAgICAgICAgIEJp
bmFyeUV4cHJlc3Npb25Ob2RlKAogICAgICAgICAgICAgICAgICAgICBCaW5hcnlPcGVyYXRvck5v
ZGUoIj09IiksCiAgICAgICAgICAgICAgICAgICAgIFZhcmlhYmxlTm9kZShwcm9wKSwKLSAgICAg
ICAgICAgICAgICAgICAgdmFsdWVfY2xzKHVuaWNvZGUodmFsdWUpKQotICAgICAgICAgICAgICAg
ICkpCisgICAgICAgICAgICAgICAgICAgIG1ha2Vfbm9kZSh2YWx1ZSkpKQogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgaWYgdmFsdWU6CiAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbnMuYXBw
ZW5kKFZhcmlhYmxlTm9kZShwcm9wKSkKQEAgLTY0Myw0MSArODkwLDYwIEBAIGRlZiBtYWtlX2V4
cHIocHJvcF9zZXQsIHJocywgYm9vbGVhbl9wcm9wZXJ0aWVzPU5vbmUpOgogICAgICAgICBub2Rl
ID0gZXhwcmVzc2lvbnNbMF0KIAogICAgIHJvb3QuYXBwZW5kKG5vZGUpCi0gICAgaWYgdHlwZShy
aHMpIGluIG51bWJlcl90eXBlczoKLSAgICAgICAgcmhzX25vZGUgPSBOdW1iZXJOb2RlKHJocykK
LSAgICBlbHNlOgotICAgICAgICByaHNfbm9kZSA9IFN0cmluZ05vZGUocmhzKQorICAgIHJoc19u
b2RlID0gbWFrZV92YWx1ZV9ub2RlKHJocykKICAgICByb290LmFwcGVuZChyaHNfbm9kZSkKIAog
ICAgIHJldHVybiByb290CiAKIAotZGVmIGdldF9tYW5pZmVzdChtZXRhZGF0YV9yb290LCB0ZXN0
X3BhdGgsIHVybF9iYXNlLCBwcm9wZXJ0eV9vcmRlcj1Ob25lLAotICAgICAgICAgICAgICAgICBi
b29sZWFuX3Byb3BlcnRpZXM9Tm9uZSk6CitkZWYgbWFrZV9ub2RlKHZhbHVlKToKKyAgICBpZiB0
eXBlKHZhbHVlKSBpbiAoaW50LCBmbG9hdCwgbG9uZyk6CisgICAgICAgIG5vZGUgPSBOdW1iZXJO
b2RlKHZhbHVlKQorICAgIGVsaWYgdHlwZSh2YWx1ZSkgaW4gKHN0ciwgdW5pY29kZSk6CisgICAg
ICAgIG5vZGUgPSBTdHJpbmdOb2RlKHVuaWNvZGUodmFsdWUpKQorICAgIGVsaWYgaGFzYXR0cih2
YWx1ZSwgIl9faXRlcl9fIik6CisgICAgICAgIG5vZGUgPSBMaXN0Tm9kZSgpCisgICAgICAgIGZv
ciBpdGVtIGluIHZhbHVlOgorICAgICAgICAgICAgbm9kZS5hcHBlbmQobWFrZV9ub2RlKGl0ZW0p
KQorICAgIHJldHVybiBub2RlCisKKworZGVmIG1ha2VfdmFsdWVfbm9kZSh2YWx1ZSk6CisgICAg
aWYgdHlwZSh2YWx1ZSkgaW4gKGludCwgZmxvYXQsIGxvbmcpOgorICAgICAgICBub2RlID0gVmFs
dWVOb2RlKHZhbHVlKQorICAgIGVsaWYgdHlwZSh2YWx1ZSkgaW4gKHN0ciwgdW5pY29kZSk6Cisg
ICAgICAgIG5vZGUgPSBWYWx1ZU5vZGUodW5pY29kZSh2YWx1ZSkpCisgICAgZWxpZiBoYXNhdHRy
KHZhbHVlLCAiX19pdGVyX18iKToKKyAgICAgICAgbm9kZSA9IExpc3ROb2RlKCkKKyAgICAgICAg
Zm9yIGl0ZW0gaW4gdmFsdWU6CisgICAgICAgICAgICBub2RlLmFwcGVuZChtYWtlX25vZGUoaXRl
bSkpCisgICAgZWxzZToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiRG9uJ3Qga25vdyBob3cg
dG8gY29udmVydCAlcyBpbnRvIG5vZGUiICUgdHlwZSh2YWx1ZSkpCisgICAgcmV0dXJuIG5vZGUK
KworCitkZWYgZ2V0X21hbmlmZXN0KG1ldGFkYXRhX3Jvb3QsIHRlc3RfcGF0aCwgdXJsX2Jhc2Us
IHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVwZGF0ZV9pbnRlcm1pdHRlbnQsIHJlbW92ZV9pbnRlcm1p
dHRlbnQpOgogICAgICIiIkdldCB0aGUgRXhwZWN0ZWRNYW5pZmVzdCBmb3IgYSBwYXJ0aWN1bGFy
IHRlc3QgcGF0aCwgb3IgTm9uZSBpZiB0aGVyZSBpcyBubwogICAgIG1ldGFkYXRhIHN0b3JlZCBm
b3IgdGhhdCB0ZXN0IHBhdGguCiAKICAgICA6cGFyYW0gbWV0YWRhdGFfcm9vdDogQWJzb2x1dGUg
cGF0aCB0byB0aGUgcm9vdCBvZiB0aGUgbWV0YWRhdGEgZGlyZWN0b3J5CiAgICAgOnBhcmFtIHRl
c3RfcGF0aDogUGF0aCB0byB0aGUgdGVzdChzKSByZWxhdGl2ZSB0byB0aGUgdGVzdCByb290Ci0g
ICAgOnBhcmFtIHVybF9iYXNlOiBCYXNlIHVybCBmb3Igc2VydmluZyB0aGUgdGVzdHMgaW4gdGhp
cyBtYW5pZmVzdAotICAgIDpwYXJhbSBwcm9wZXJ0eV9vcmRlcjogTGlzdCBvZiBwcm9wZXJ0aWVz
IHRvIHVzZSBpbiBleHBlY3RhdGlvbiBtZXRhZGF0YQotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZnJvbSBtb3N0IHRvIGxlYXN0IHNpZ25pZmljYW50LgotICAgIDpwYXJhbSBib29sZWFuX3By
b3BlcnRpZXM6IFNldCBvZiBwcm9wZXJ0aWVzIGluIHByb3BlcnR5X29yZGVyIHRoYXQgc2hvdWxk
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgdHJlYXRlZCBhcyBib29sZWFuLiIi
IgorICAgIDpwYXJhbSB1cmxfYmFzZTogQmFzZSB1cmwgZm9yIHNlcnZpbmcgdGhlIHRlc3RzIGlu
IHRoaXMgbWFuaWZlc3QiIiIKICAgICBtYW5pZmVzdF9wYXRoID0gZXhwZWN0ZWQuZXhwZWN0ZWRf
cGF0aChtZXRhZGF0YV9yb290LCB0ZXN0X3BhdGgpCiAgICAgdHJ5OgogICAgICAgICB3aXRoIG9w
ZW4obWFuaWZlc3RfcGF0aCkgYXMgZjoKLSAgICAgICAgICAgIHJldHVybiBjb21waWxlKGYsIHRl
c3RfcGF0aCwgdXJsX2Jhc2UsIHByb3BlcnR5X29yZGVyPXByb3BlcnR5X29yZGVyLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbl9wcm9wZXJ0aWVzPWJvb2xlYW5fcHJvcGVydGll
cykKKyAgICAgICAgICAgIHJ2ID0gY29tcGlsZShmLCB0ZXN0X3BhdGgsIHVybF9iYXNlLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVwZGF0ZV9pbnRlcm1p
dHRlbnQsIHJlbW92ZV9pbnRlcm1pdHRlbnQpCiAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAg
IHJldHVybiBOb25lCisgICAgcmV0dXJuIHJ2CiAKIAotZGVmIGNvbXBpbGUobWFuaWZlc3RfZmls
ZSwgdGVzdF9wYXRoLCB1cmxfYmFzZSwgcHJvcGVydHlfb3JkZXI9Tm9uZSwKLSAgICAgICAgICAg
IGJvb2xlYW5fcHJvcGVydGllcz1Ob25lKToKK2RlZiBjb21waWxlKG1hbmlmZXN0X2ZpbGUsIHRl
c3RfcGF0aCwgdXJsX2Jhc2UsIHJ1bl9pbmZvX3Byb3BlcnRpZXMsIHVwZGF0ZV9pbnRlcm1pdHRl
bnQsIHJlbW92ZV9pbnRlcm1pdHRlbnQpOgogICAgIHJldHVybiBjb25kaXRpb25hbC5jb21waWxl
KG1hbmlmZXN0X2ZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9jbHNf
Z2V0dGVyPWRhdGFfY2xzX2dldHRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X3BhdGg9dGVzdF9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9i
YXNlPXVybF9iYXNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3BlcnR5X29y
ZGVyPXByb3BlcnR5X29yZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2xl
YW5fcHJvcGVydGllcz1ib29sZWFuX3Byb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcnVuX2luZm9fcHJvcGVydGllcz1ydW5faW5mb19wcm9wZXJ0aWVzLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9pbnRlcm1pdHRlbnQ9dXBkYXRlX2ludGVy
bWl0dGVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0
ZW50PXJlbW92ZV9pbnRlcm1pdHRlbnQpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRh
dGEucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvbWV0YWRhdGEucHkKaW5kZXggOTQ1NjBjZDkzZmYxNDgxOGNl
M2RlNjBmMzg2NjcxNDA0M2MyNDIzNi4uYzMyOGRjZWZhNzI1M2RkZWE5NTI1NDljNzAyNzIzZTk4
YjRjYWRjNCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci9tZXRhZGF0YS5weQpAQCAtMSwxOCArMSwxNyBAQAorZnJvbSBfX2Z1dHVyZV9fIGlt
cG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFycmF5CiBpbXBvcnQgb3MKLWltcG9ydCBzaHV0
aWwKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHV1aWQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0
IGRlZmF1bHRkaWN0LCBuYW1lZHR1cGxlCiAKIGZyb20gbW96bG9nIGltcG9ydCBzdHJ1Y3R1cmVk
bG9nCi0KLWltcG9ydCBtYW5pZmVzdHVwZGF0ZQotaW1wb3J0IHRlc3Rsb2FkZXIKLWltcG9ydCB3
cHRtYW5pZmVzdAotaW1wb3J0IHdwdHRlc3QKLWZyb20gZXhwZWN0ZWQgaW1wb3J0IGV4cGVjdGVk
X3BhdGgKLWZyb20gdmNzIGltcG9ydCBnaXQKK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCBpbnRlcm4K
KworZnJvbSAuIGltcG9ydCBtYW5pZmVzdHVwZGF0ZQorZnJvbSAuIGltcG9ydCB0ZXN0bG9hZGVy
Citmcm9tIC4gaW1wb3J0IHdwdG1hbmlmZXN0Citmcm9tIC4gaW1wb3J0IHdwdHRlc3QKK2Zyb20g
LmV4cGVjdGVkIGltcG9ydCBleHBlY3RlZF9wYXRoCitmcm9tIC52Y3MgaW1wb3J0IGdpdAogbWFu
aWZlc3QgPSBOb25lICAjIE1vZHVsZSB0aGF0IHdpbGwgYmUgaW1wb3J0ZWQgcmVsYXRpdmUgdG8g
dGVzdF9yb290CiBtYW5pZmVzdGl0ZW0gPSBOb25lCiAKQEAgLTI0LDM3ICsyMyw3MyBAQCBleGNl
cHQgSW1wb3J0RXJyb3I6CiAgICAgaW1wb3J0IGpzb24KIAogCitjbGFzcyBSdW5JbmZvKG9iamVj
dCk6CisgICAgIiIiQSB3cmFwcGVyIGFyb3VuZCBSdW5JbmZvIGRpY3RzIHNvIHRoYXQgdGhleSBj
YW4gYmUgaGFzaGVkIGJ5IGlkZW50aXR5IiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgZGlj
dF92YWx1ZSk6CisgICAgICAgIHNlbGYuZGF0YSA9IGRpY3RfdmFsdWUKKyAgICAgICAgc2VsZi5j
YW5vbmljYWxfcmVwciA9IHR1cGxlKHR1cGxlKGl0ZW0pIGZvciBpdGVtIGluIHNvcnRlZChkaWN0
X3ZhbHVlLml0ZW1zKCkpKQorCisgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAg
ICAgIHJldHVybiBzZWxmLmRhdGFba2V5XQorCisgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGtl
eSwgdmFsdWUpOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IKKworICAgIGRlZiBfX2hhc2hfXyhz
ZWxmKToKKyAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5jYW5vbmljYWxfcmVwcikKKworICAgIGRl
ZiBfX2VxX18oc2VsZiwgb3RoZXIpOgorICAgICAgICByZXR1cm4gc2VsZi5jYW5vbmljYWxfcmVw
ciA9PSBvdGhlci5jYW5vbmljYWxfcmVwcgorCisgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKKyAg
ICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc2VsZi5kYXRhLml0ZXJpdGVtcygpOgorICAgICAgICAg
ICAgeWllbGQga2V5LCB2YWx1ZQorCisgICAgZGVmIGl0ZW1zKHNlbGYpOgorICAgICAgICByZXR1
cm4gbGlzdChzZWxmLml0ZXJpdGVtcygpKQorCisKIGRlZiB1cGRhdGVfZXhwZWN0ZWQodGVzdF9w
YXRocywgc2VydmVfcm9vdCwgbG9nX2ZpbGVfbmFtZXMsCi0gICAgICAgICAgICAgICAgICAgIHJl
dl9vbGQ9Tm9uZSwgcmV2X25ldz0iSEVBRCIsIGlnbm9yZV9leGlzdGluZz1GYWxzZSwKLSAgICAg
ICAgICAgICAgICAgICAgc3luY19yb290PU5vbmUsIHByb3BlcnR5X29yZGVyPU5vbmUsIGJvb2xl
YW5fcHJvcGVydGllcz1Ob25lLAotICAgICAgICAgICAgICAgICAgICBzdGFiaWxpdHk9Tm9uZSk6
CisgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzLCByZXZfb2xkPU5vbmUsIHJl
dl9uZXc9IkhFQUQiLAorICAgICAgICAgICAgICAgICAgICBmdWxsX3VwZGF0ZT1GYWxzZSwgc3lu
Y19yb290PU5vbmUsIGRpc2FibGVfaW50ZXJtaXR0ZW50PU5vbmUsCisgICAgICAgICAgICAgICAg
ICAgIHVwZGF0ZV9pbnRlcm1pdHRlbnQ9RmFsc2UsIHJlbW92ZV9pbnRlcm1pdHRlbnQ9RmFsc2Up
OgogICAgICIiIlVwZGF0ZSB0aGUgbWV0YWRhdGEgZmlsZXMgZm9yIHdlYi1wbGF0Zm9ybS10ZXN0
cyBiYXNlZCBvbgogICAgIHRoZSByZXN1bHRzIG9idGFpbmVkIGluIGEgcHJldmlvdXMgcnVuIG9y
IHJ1bnMKIAotICAgIElmIHN0YWJpbGl0eSBpcyBub3QgTm9uZSwgYXNzdW1lIGxvZ19maWxlX25h
bWVzIHJlZmVycyB0byBsb2dzIGZyb20gcmVwZWF0ZWQKLSAgICB0ZXN0IGpvYnMsIGRpc2FibGUg
dGVzdHMgdGhhdCBkb24ndCBiZWhhdmUgYXMgZXhwZWN0ZWQgb24gYWxsIHJ1bnMiIiIKKyAgICBJ
ZiBgZGlzYWJsZV9pbnRlcm1pdHRlbnRgIGlzIG5vdCBOb25lLCBhc3N1bWUgbG9nX2ZpbGVfbmFt
ZXMgcmVmZXJzIHRvIGxvZ3MgZnJvbSByZXBlYXRlZAorICAgIHRlc3Qgam9icywgZGlzYWJsZSB0
ZXN0cyB0aGF0IGRvbid0IGJlaGF2ZSBhcyBleHBlY3RlZCBvbiBhbGwgcnVucworCisgICAgSWYg
YHVwZGF0ZV9pbnRlcm1pdHRlbnRgIGlzIFRydWUsIGludGVybWl0dGVudCBzdGF0dXNlcyB3aWxs
IGJlIHJlY29yZGVkIGFzIGBleHBlY3RlZGAgaW4KKyAgICB0aGUgbWV0YWRhdGEuCisKKyAgICBJ
ZiBgcmVtb3ZlX2ludGVybWl0dGVudGAgaXMgVHJ1ZSBhbmQgdXNlZCBpbiBjb25qdW5jdGlvbiB3
aXRoIGB1cGRhdGVfaW50ZXJtaXR0ZW50YCwgYW55CisgICAgaW50ZXJtaXR0ZW50IHN0YXR1c2Vz
IHdoaWNoIGFyZSBub3QgcHJlc2VudCBpbiB0aGUgY3VycmVudCBydW4gd2lsbCBiZSByZW1vdmVk
IGZyb20gdGhlCisgICAgbWV0YWRhdGEsIGVsc2UgdGhleSBhcmUgbGVmdCBpbi4iIiIKKwogICAg
IGRvX2RlbGF5ZWRfaW1wb3J0cyhzZXJ2ZV9yb290KQogCiAgICAgaWRfdGVzdF9tYXAgPSBsb2Fk
X3Rlc3RfZGF0YSh0ZXN0X3BhdGhzKQogCiAgICAgZm9yIG1ldGFkYXRhX3BhdGgsIHVwZGF0ZWRf
aW5pIGluIHVwZGF0ZV9mcm9tX2xvZ3MoaWRfdGVzdF9tYXAsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxvZ19maWxlX25hbWVzLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlnbm9y
ZV9leGlzdGluZz1pZ25vcmVfZXhpc3RpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfb3JkZXI9cHJvcGVydHlfb3JkZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Ym9vbGVhbl9wcm9wZXJ0aWVzPWJvb2xlYW5fcHJvcGVydGllcywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFiaWxpdHk9c3RhYmlsaXR5
KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVfcHJvcGVydGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2ludGVybWl0dGVudCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaW50ZXJtaXR0
ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF91cGRhdGUsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmxvZ19maWxlX25hbWVzKToKIAog
ICAgICAgICB3cml0ZV9uZXdfZXhwZWN0ZWQobWV0YWRhdGFfcGF0aCwgdXBkYXRlZF9pbmkpCi0g
ICAgICAgIGlmIHN0YWJpbGl0eToKKyAgICAgICAgaWYgZGlzYWJsZV9pbnRlcm1pdHRlbnQ6CiAg
ICAgICAgICAgICBmb3IgdGVzdCBpbiB1cGRhdGVkX2luaS5pdGVyY2hpbGRyZW4oKToKICAgICAg
ICAgICAgICAgICBmb3Igc3VidGVzdCBpbiB0ZXN0Lml0ZXJjaGlsZHJlbigpOgogICAgICAgICAg
ICAgICAgICAgICBpZiBzdWJ0ZXN0Lm5ld19kaXNhYmxlZDoKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHByaW50ICJkaXNhYmxlZDogJXMiICUgb3MucGF0aC5kaXJuYW1lKHN1YnRlc3Qucm9vdC50
ZXN0X3BhdGgpICsgIi8iICsgc3VidGVzdC5uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICBw
cmludCgiZGlzYWJsZWQ6ICVzIiAlIG9zLnBhdGguZGlybmFtZShzdWJ0ZXN0LnJvb3QudGVzdF9w
YXRoKSArICIvIiArIHN1YnRlc3QubmFtZSkKICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdC5u
ZXdfZGlzYWJsZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCAiZGlzYWJsZWQ6ICVz
IiAlIHRlc3Qucm9vdC50ZXN0X3BhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJk
aXNhYmxlZDogJXMiICUgdGVzdC5yb290LnRlc3RfcGF0aCkKIAogCi1kZWYgZG9fZGVsYXllZF9p
bXBvcnRzKHNlcnZlX3Jvb3QpOgorZGVmIGRvX2RlbGF5ZWRfaW1wb3J0cyhzZXJ2ZV9yb290PU5v
bmUpOgogICAgIGdsb2JhbCBtYW5pZmVzdCwgbWFuaWZlc3RpdGVtCiAgICAgZnJvbSBtYW5pZmVz
dCBpbXBvcnQgbWFuaWZlc3QsIGl0ZW0gYXMgbWFuaWZlc3RpdGVtCiAKQEAgLTExMiw3ICsxNDcs
NyBAQCBkZWYgdW5leHBlY3RlZF9jaGFuZ2VzKG1hbmlmZXN0cywgY2hhbmdlX2RhdGEsIGZpbGVz
X2NoYW5nZWQpOgogIyAgIGZvciBlYWNoIGNvbmRpdGlvbmFsOgogIyAgICAgIElmIGFsbCB0aGUg
bmV3IHZhbHVlcyBtYXRjaCAob3IgdGhlcmUgYXJlbid0IGFueSkgcmV0YWluIHRoYXQgY29uZGl0
aW9uYWwKICMgICAgICBJZiBhbnkgbmV3IHZhbHVlcyBtaXNtYXRjaDoKLSMgICAgICAgICAgIElm
IHN0YWJpbGl0eSBhbmQgYW55IHJlcGVhdGVkIHZhbHVlcyBkb24ndCBtYXRjaCwgZGlzYWJsZSB0
aGUgdGVzdAorIyAgICAgICAgICAgSWYgZGlzYWJsZV9pbnRlcm1pdHRlbnQgYW5kIGFueSByZXBl
YXRlZCB2YWx1ZXMgZG9uJ3QgbWF0Y2gsIGRpc2FibGUgdGhlIHRlc3QKICMgICAgICAgICAgIGVs
c2UgbWFyayB0aGUgdGVzdCBhcyBuZWVkaW5nIGh1bWFuIGF0dGVudGlvbgogIyAgIENoZWNrIGlm
IGFsbCB0aGUgUkhTIHZhbHVlcyBhcmUgdGhlIHNhbWU7IGlmIHNvIGNvbGxhcHNlIHRoZSBjb25k
aXRpb25hbHMKIApAQCAtMTM4LDYgKzE3Myw5IEBAIGNsYXNzIEludGVybmVkRGF0YShvYmplY3Qp
OgogICAgICAgICAjIFJlc2VydmUgMCBhcyBhIHNlbnRpbmFsCiAgICAgICAgIHNlbGYuX2RhdGEg
PSBbTm9uZV0sIHt9CiAKKyAgICBkZWYgY2xlYXIoc2VsZik6CisgICAgICAgIHNlbGYuX19pbml0
X18oKQorCiAgICAgZGVmIHN0b3JlKHNlbGYsIG9iaik6CiAgICAgICAgIGlmIHNlbGYudHlwZV9j
b252IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb2JqID0gc2VsZi50eXBlX2NvbnYob2JqKQpA
QCAtMTU5LDYgKzE5NywxMCBAQCBjbGFzcyBJbnRlcm5lZERhdGEob2JqZWN0KToKICAgICAgICAg
ICAgIG9iaiA9IHNlbGYucmV2X3R5cGVfY29udihvYmopCiAgICAgICAgIHJldHVybiBvYmoKIAor
ICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAgZm9yIGkgaW4geHJhbmdlKDEsIGxlbihz
ZWxmLl9kYXRhWzBdKSk6CisgICAgICAgICAgICB5aWVsZCBzZWxmLmdldChpKQorCiAKIGNsYXNz
IFJ1bkluZm9JbnRlcm5lZChJbnRlcm5lZERhdGEpOgogICAgIGRlZiB0eXBlX2NvbnYoc2VsZiwg
dmFsdWUpOgpAQCAtMTY5LDEwICsyMTEsNDcgQEAgY2xhc3MgUnVuSW5mb0ludGVybmVkKEludGVy
bmVkRGF0YSk6CiAKIAogcHJvcF9pbnRlcm4gPSBJbnRlcm5lZERhdGEoNCkKLXJ1bl9pbmZvX2lu
dGVybiA9IFJ1bkluZm9JbnRlcm5lZCgpCitydW5faW5mb19pbnRlcm4gPSBJbnRlcm5lZERhdGEo
OCkKIHN0YXR1c19pbnRlcm4gPSBJbnRlcm5lZERhdGEoNCkKIAogCitkZWYgcGFja19yZXN1bHQo
ZGF0YSk6CisgICAgIyBBcyBgc3RhdHVzX2ludGVybmAgbm9ybWFsbHkgaGFuZGxlcyBvbmUgc3Rh
dHVzLCBpZiBga25vd25faW50ZXJtaXR0ZW50YCBpcyBwcmVzZW50IGluCisgICAgIyB0aGUgdGVz
dCBsb2dzLCBpbnRlcm4gYW5kIHN0b3JlIHRoaXMgd2l0aCB0aGUgYHN0YXR1c2AgaW4gYW4gYXJy
YXkgdW50aWwgbmVlZGVkLgorICAgIGlmIG5vdCBkYXRhLmdldCgia25vd25faW50ZXJtaXR0ZW50
Iik6CisgICAgICAgIHJldHVybiBzdGF0dXNfaW50ZXJuLnN0b3JlKGRhdGEuZ2V0KCJzdGF0dXMi
KSkKKyAgICByZXN1bHQgPSBhcnJheS5hcnJheSgiQiIpCisgICAgZXhwZWN0ZWQgPSBkYXRhLmdl
dCgiZXhwZWN0ZWQiKQorICAgIGlmIGV4cGVjdGVkIGlzIE5vbmU6CisgICAgICAgIGV4cGVjdGVk
ID0gZGF0YVsic3RhdHVzIl0KKyAgICByZXN1bHRfcGFydHMgPSBbZGF0YVsic3RhdHVzIl0sIGV4
cGVjdGVkXSArIGRhdGFbImtub3duX2ludGVybWl0dGVudCJdCisgICAgZm9yIGksIHBhcnQgaW4g
ZW51bWVyYXRlKHJlc3VsdF9wYXJ0cyk6CisgICAgICAgIHZhbHVlID0gc3RhdHVzX2ludGVybi5z
dG9yZShwYXJ0KQorICAgICAgICBpZiBpICUgMiA9PSAwOgorICAgICAgICAgICAgYXNzZXJ0IHZh
bHVlIDwgMTYKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQodmFsdWUgPDwgNCkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgIHJlc3VsdFstMV0gKz0gdmFsdWUKKyAgICByZXR1cm4gcmVzdWx0
CisKKworZGVmIHVucGFja19yZXN1bHQoZGF0YSk6CisgICAgaWYgaXNpbnN0YW5jZShkYXRhLCBp
bnQpOgorICAgICAgICByZXR1cm4gKHN0YXR1c19pbnRlcm4uZ2V0KGRhdGEpLCBOb25lKQorICAg
IGlmIGlzaW5zdGFuY2UoZGF0YSwgdW5pY29kZSk6CisgICAgICAgIHJldHVybiAoZGF0YSwgTm9u
ZSkKKyAgICAjIFVucGFjayBtdWx0aXBsZSBzdGF0dXNlcyBpbnRvIGEgdHVwbGUgdG8gYmUgdXNl
ZCBpbiB0aGUgUmVzdWx0cyBuYW1lZCB0dXBsZSBiZWxvdywKKyAgICAjIHNlcGFyYXRpbmcgYHN0
YXR1c2AgYW5kIGBrbm93bl9pbnRlcm1pdHRlbnRgLgorICAgIHJlc3VsdHMgPSBbXQorICAgIGZv
ciBwYWNrZWRfdmFsdWUgaW4gZGF0YToKKyAgICAgICAgZmlyc3QgPSBzdGF0dXNfaW50ZXJuLmdl
dChwYWNrZWRfdmFsdWUgPj4gNCkKKyAgICAgICAgc2Vjb25kID0gc3RhdHVzX2ludGVybi5nZXQo
cGFja2VkX3ZhbHVlICYgMHgwRikKKyAgICAgICAgcmVzdWx0cy5hcHBlbmQoZmlyc3QpCisgICAg
ICAgIGlmIHNlY29uZDoKKyAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKHNlY29uZCkKKyAgICBy
ZXR1cm4gKChyZXN1bHRzWzBdLCksIHR1cGxlKHJlc3VsdHNbMTpdKSkKKworCiBkZWYgbG9hZF90
ZXN0X2RhdGEodGVzdF9wYXRocyk6CiAgICAgbWFuaWZlc3RfbG9hZGVyID0gdGVzdGxvYWRlci5N
YW5pZmVzdExvYWRlcih0ZXN0X3BhdGhzLCBGYWxzZSkKICAgICBtYW5pZmVzdHMgPSBtYW5pZmVz
dF9sb2FkZXIubG9hZCgpCkBAIC0xODQsMjUgKzI2MywyOCBAQCBkZWYgbG9hZF90ZXN0X2RhdGEo
dGVzdF9wYXRocyk6CiAgICAgcmV0dXJuIGlkX3Rlc3RfbWFwCiAKIAotZGVmIHVwZGF0ZV9mcm9t
X2xvZ3MoaWRfdGVzdF9tYXAsICpsb2dfZmlsZW5hbWVzLCAqKmt3YXJncyk6Ci0gICAgaWdub3Jl
X2V4aXN0aW5nID0ga3dhcmdzLmdldCgiaWdub3JlX2V4aXN0aW5nIiwgRmFsc2UpCi0gICAgcHJv
cGVydHlfb3JkZXIgPSBrd2FyZ3MuZ2V0KCJwcm9wZXJ0eV9vcmRlciIpCi0gICAgYm9vbGVhbl9w
cm9wZXJ0aWVzID0ga3dhcmdzLmdldCgiYm9vbGVhbl9wcm9wZXJ0aWVzIikKLSAgICBzdGFiaWxp
dHkgPSBrd2FyZ3MuZ2V0KCJzdGFiaWxpdHkiKQorZGVmIHVwZGF0ZV9mcm9tX2xvZ3MoaWRfdGVz
dF9tYXAsIHVwZGF0ZV9wcm9wZXJ0aWVzLCBkaXNhYmxlX2ludGVybWl0dGVudCwgdXBkYXRlX2lu
dGVybWl0dGVudCwKKyAgICAgICAgICAgICAgICAgICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQsIGZ1
bGxfdXBkYXRlLCAqbG9nX2ZpbGVuYW1lcyk6CiAKLSAgICB1cGRhdGVyID0gRXhwZWN0ZWRVcGRh
dGVyKGlkX3Rlc3RfbWFwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWdub3JlX2V4
aXN0aW5nPWlnbm9yZV9leGlzdGluZykKKyAgICB1cGRhdGVyID0gRXhwZWN0ZWRVcGRhdGVyKGlk
X3Rlc3RfbWFwKQogCiAgICAgZm9yIGksIGxvZ19maWxlbmFtZSBpbiBlbnVtZXJhdGUobG9nX2Zp
bGVuYW1lcyk6CiAgICAgICAgIHByaW50KCJQcm9jZXNzaW5nIGxvZyAlZC8lZCIgJSAoaSArIDEs
IGxlbihsb2dfZmlsZW5hbWVzKSkpCiAgICAgICAgIHdpdGggb3Blbihsb2dfZmlsZW5hbWUpIGFz
IGY6CiAgICAgICAgICAgICB1cGRhdGVyLnVwZGF0ZV9mcm9tX2xvZyhmKQogCi0gICAgZm9yIGl0
ZW0gaW4gdXBkYXRlX3Jlc3VsdHMoaWRfdGVzdF9tYXAsIHByb3BlcnR5X29yZGVyLCBib29sZWFu
X3Byb3BlcnRpZXMsIHN0YWJpbGl0eSk6CisgICAgZm9yIGl0ZW0gaW4gdXBkYXRlX3Jlc3VsdHMo
aWRfdGVzdF9tYXAsIHVwZGF0ZV9wcm9wZXJ0aWVzLCBmdWxsX3VwZGF0ZSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2ludGVybWl0dGVudCwgdXBkYXRlX2ludGVybWl0
dGVudD11cGRhdGVfaW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHJlbW92ZV9pbnRlcm1pdHRlbnQ9cmVtb3ZlX2ludGVybWl0dGVudCk6CiAgICAgICAgIHlpZWxk
IGl0ZW0KIAogCi1kZWYgdXBkYXRlX3Jlc3VsdHMoaWRfdGVzdF9tYXAsIHByb3BlcnR5X29yZGVy
LCBib29sZWFuX3Byb3BlcnRpZXMsIHN0YWJpbGl0eSk6CitkZWYgdXBkYXRlX3Jlc3VsdHMoaWRf
dGVzdF9tYXAsCisgICAgICAgICAgICAgICAgICAgdXBkYXRlX3Byb3BlcnRpZXMsCisgICAgICAg
ICAgICAgICAgICAgZnVsbF91cGRhdGUsCisgICAgICAgICAgICAgICAgICAgZGlzYWJsZV9pbnRl
cm1pdHRlbnQsCisgICAgICAgICAgICAgICAgICAgdXBkYXRlX2ludGVybWl0dGVudCwKKyAgICAg
ICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0ZW50KToKICAgICB0ZXN0X2ZpbGVfaXRlbXMg
PSBzZXQoaWRfdGVzdF9tYXAuaXRlcnZhbHVlcygpKQogCiAgICAgZGVmYXVsdF9leHBlY3RlZF9i
eV90eXBlID0ge30KQEAgLTIxMyw4ICsyOTUsOSBAQCBkZWYgdXBkYXRlX3Jlc3VsdHMoaWRfdGVz
dF9tYXAsIHByb3BlcnR5X29yZGVyLCBib29sZWFuX3Byb3BlcnRpZXMsIHN0YWJpbGl0eSk6CiAg
ICAgICAgICAgICBkZWZhdWx0X2V4cGVjdGVkX2J5X3R5cGVbKHRlc3RfdHlwZSwgVHJ1ZSldID0g
dGVzdF9jbHMuc3VidGVzdF9yZXN1bHRfY2xzLmRlZmF1bHRfZXhwZWN0ZWQKIAogICAgIGZvciB0
ZXN0X2ZpbGUgaW4gdGVzdF9maWxlX2l0ZW1zOgotICAgICAgICB1cGRhdGVkX2V4cGVjdGVkID0g
dGVzdF9maWxlLnVwZGF0ZShwcm9wZXJ0eV9vcmRlciwgYm9vbGVhbl9wcm9wZXJ0aWVzLCBzdGFi
aWxpdHksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1
bHRfZXhwZWN0ZWRfYnlfdHlwZSkKKyAgICAgICAgdXBkYXRlZF9leHBlY3RlZCA9IHRlc3RfZmls
ZS51cGRhdGUoZGVmYXVsdF9leHBlY3RlZF9ieV90eXBlLCB1cGRhdGVfcHJvcGVydGllcywKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF91cGRhdGUsIGRp
c2FibGVfaW50ZXJtaXR0ZW50LCB1cGRhdGVfaW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0ZW50KQogICAgICAg
ICBpZiB1cGRhdGVkX2V4cGVjdGVkIGlzIG5vdCBOb25lIGFuZCB1cGRhdGVkX2V4cGVjdGVkLm1v
ZGlmaWVkOgogICAgICAgICAgICAgeWllbGQgdGVzdF9maWxlLm1ldGFkYXRhX3BhdGgsIHVwZGF0
ZWRfZXhwZWN0ZWQKIApAQCAtMjI4LDM2ICszMTEsMTIgQEAgZGVmIGRpcmVjdG9yeV9tYW5pZmVz
dHMobWV0YWRhdGFfcGF0aCk6CiAgICAgcmV0dXJuIHJ2CiAKIAotZGVmIHdyaXRlX2NoYW5nZXMo
bWV0YWRhdGFfcGF0aCwgZXhwZWN0ZWQpOgotICAgICMgRmlyc3Qgd3JpdGUgdGhlIG5ldyBtYW5p
ZmVzdCBmaWxlcyB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnkKLSAgICB0ZW1wX3BhdGggPSB0ZW1w
ZmlsZS5ta2R0ZW1wKGRpcj1vcy5wYXRoLnNwbGl0KG1ldGFkYXRhX3BhdGgpWzBdKQotICAgIHdy
aXRlX25ld19leHBlY3RlZCh0ZW1wX3BhdGgsIGV4cGVjdGVkKQotCi0gICAgIyBDb3B5IGFsbCBm
aWxlcyBpbiB0aGUgcm9vdCB0byB0aGUgdGVtcG9yYXJ5IGxvY2F0aW9uIHNpbmNlCi0gICAgIyB0
aGVzZSBjYW5ub3QgYmUgaW5pIGZpbGVzCi0gICAga2VlcF9maWxlcyA9IFtpdGVtIGZvciBpdGVt
IGluIG9zLmxpc3RkaXIobWV0YWRhdGFfcGF0aCkgaWYKLSAgICAgICAgICAgICAgICAgIG5vdCBv
cy5wYXRoLmlzZGlyKG9zLnBhdGguam9pbihtZXRhZGF0YV9wYXRoLCBpdGVtKSldCi0KLSAgICBm
b3IgaXRlbSBpbiBrZWVwX2ZpbGVzOgotICAgICAgICBkZXN0X2RpciA9IG9zLnBhdGguZGlybmFt
ZShvcy5wYXRoLmpvaW4odGVtcF9wYXRoLCBpdGVtKSkKLSAgICAgICAgaWYgbm90IG9zLnBhdGgu
ZXhpc3RzKGRlc3RfZGlyKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RfZGlyKQotICAg
ICAgICBzaHV0aWwuY29weWZpbGUob3MucGF0aC5qb2luKG1ldGFkYXRhX3BhdGgsIGl0ZW0pLAot
ICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHRlbXBfcGF0aCwgaXRlbSkpCi0K
LSAgICAjIFRoZW4gbW92ZSB0aGUgb2xkIG1hbmlmZXN0IGZpbGVzIHRvIGEgbmV3IGxvY2F0aW9u
Ci0gICAgdGVtcF9wYXRoXzIgPSBtZXRhZGF0YV9wYXRoICsgc3RyKHV1aWQudXVpZDQoKSkKLSAg
ICBvcy5yZW5hbWUobWV0YWRhdGFfcGF0aCwgdGVtcF9wYXRoXzIpCi0gICAgIyBNb3ZlIHRoZSBu
ZXcgZmlsZXMgdG8gdGhlIGRlc3RpbmF0aW9uIGxvY2F0aW9uIGFuZCByZW1vdmUgdGhlIG9sZCBm
aWxlcwotICAgIG9zLnJlbmFtZSh0ZW1wX3BhdGgsIG1ldGFkYXRhX3BhdGgpCi0gICAgc2h1dGls
LnJtdHJlZSh0ZW1wX3BhdGhfMikKLQotCiBkZWYgd3JpdGVfbmV3X2V4cGVjdGVkKG1ldGFkYXRh
X3BhdGgsIGV4cGVjdGVkKToKICAgICAjIFNlcmlhbGl6ZSB0aGUgZGF0YSBiYWNrIHRvIGEgZmls
ZQogICAgIHBhdGggPSBleHBlY3RlZF9wYXRoKG1ldGFkYXRhX3BhdGgsIGV4cGVjdGVkLnRlc3Rf
cGF0aCkKICAgICBpZiBub3QgZXhwZWN0ZWQuaXNfZW1wdHk6Ci0gICAgICAgIG1hbmlmZXN0X3N0
ciA9IHdwdG1hbmlmZXN0LnNlcmlhbGl6ZShleHBlY3RlZC5ub2RlLCBza2lwX2VtcHR5X2RhdGE9
VHJ1ZSkKKyAgICAgICAgbWFuaWZlc3Rfc3RyID0gd3B0bWFuaWZlc3Quc2VyaWFsaXplKGV4cGVj
dGVkLm5vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
a2lwX2VtcHR5X2RhdGE9VHJ1ZSkKICAgICAgICAgYXNzZXJ0IG1hbmlmZXN0X3N0ciAhPSAiIgog
ICAgICAgICBkaXIgPSBvcy5wYXRoLnNwbGl0KHBhdGgpWzBdCiAgICAgICAgIGlmIG5vdCBvcy5w
YXRoLmV4aXN0cyhkaXIpOgpAQCAtMjgwLDMxICszMzksNTUgQEAgZGVmIHdyaXRlX25ld19leHBl
Y3RlZChtZXRhZGF0YV9wYXRoLCBleHBlY3RlZCk6CiAKIAogY2xhc3MgRXhwZWN0ZWRVcGRhdGVy
KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGlkX3Rlc3RfbWFwLCBpZ25vcmVfZXhp
c3Rpbmc9RmFsc2UpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBpZF90ZXN0X21hcCk6CiAgICAg
ICAgIHNlbGYuaWRfdGVzdF9tYXAgPSBpZF90ZXN0X21hcAotICAgICAgICBzZWxmLmlnbm9yZV9l
eGlzdGluZyA9IGlnbm9yZV9leGlzdGluZwogICAgICAgICBzZWxmLnJ1bl9pbmZvID0gTm9uZQog
ICAgICAgICBzZWxmLmFjdGlvbl9tYXAgPSB7InN1aXRlX3N0YXJ0Ijogc2VsZi5zdWl0ZV9zdGFy
dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X3N0YXJ0Ijogc2VsZi50ZXN0X3N0
YXJ0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgInRlc3Rfc3RhdHVzIjogc2VsZi50ZXN0
X3N0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0ZXN0X2VuZCI6IHNlbGYudGVz
dF9lbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXNzZXJ0aW9uX2NvdW50Ijogc2Vs
Zi5hc3NlcnRpb25fY291bnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAibHNhbl9sZWFr
Ijogc2VsZi5sc2FuX2xlYWt9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAibHNhbl9sZWFr
Ijogc2VsZi5sc2FuX2xlYWssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibW96bGVha19v
YmplY3QiOiBzZWxmLm1vemxlYWtfb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
Im1vemxlYWtfdG90YWwiOiBzZWxmLm1vemxlYWtfdG90YWx9CiAgICAgICAgIHNlbGYudGVzdHNf
dmlzaXRlZCA9IHt9CiAKICAgICBkZWYgdXBkYXRlX2Zyb21fbG9nKHNlbGYsIGxvZ19maWxlKToK
KyAgICAgICAgIyBXZSBzdXBwb3J0IHRocmVlIHBvc3NpYmxlIGZvcm1hdHM6CisgICAgICAgICMg
KiB3cHRyZXBvcnQgZm9ybWF0OyBvbmUganNvbiBvYmplY3QgaW4gdGhlIGZpbGUsIHBvc3NpYmx5
IHByZXR0eS1wcmludGVkCisgICAgICAgICMgKiB3cHRyZXBvcnQgZm9ybWF0OyBvbmUgcnVuIHBl
ciBsaW5lCisgICAgICAgICMgKiByYXcgbG9nIGZvcm1hdAorCisgICAgICAgICMgVHJ5IHJlYWRp
bmcgYSBzaW5nbGUganNvbiBvYmplY3QgaW4gd3B0cmVwb3J0IGZvcm1hdAogICAgICAgICBzZWxm
LnJ1bl9pbmZvID0gTm9uZQorICAgICAgICBzdWNjZXNzID0gc2VsZi5nZXRfd3B0cmVwb3J0X2Rh
dGEobG9nX2ZpbGUucmVhZCgpKQorCisgICAgICAgIGlmIHN1Y2Nlc3M6CisgICAgICAgICAgICBy
ZXR1cm4KKworICAgICAgICAjIFRyeSBsaW5lLXNlcGFyYXRlZCBqc29uIG9iamVjdHMgaW4gd3B0
cmVwb3J0IGZvcm1hdAorICAgICAgICBsb2dfZmlsZS5zZWVrKDApCisgICAgICAgIGZvciBsaW5l
IGluIGxvZ19maWxlOgorICAgICAgICAgICAgc3VjY2VzcyA9IHNlbGYuZ2V0X3dwdHJlcG9ydF9k
YXRhKGxpbmUpCisgICAgICAgICAgICBpZiBub3Qgc3VjY2VzczoKKyAgICAgICAgICAgICAgICBi
cmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgIyBBc3N1
bWUgdGhlIGZpbGUgaXMgYSByYXcgbG9nCisgICAgICAgIGxvZ19maWxlLnNlZWsoMCkKKyAgICAg
ICAgc2VsZi51cGRhdGVfZnJvbV9yYXdfbG9nKGxvZ19maWxlKQorCisgICAgZGVmIGdldF93cHRy
ZXBvcnRfZGF0YShzZWxmLCBpbnB1dF9zdHIpOgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBk
YXRhID0ganNvbi5sb2FkKGxvZ19maWxlKQorICAgICAgICAgICAgZGF0YSA9IGpzb24ubG9hZHMo
aW5wdXRfc3RyKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgcGFzcwog
ICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgImFjdGlvbiIgbm90IGluIGRhdGEgYW5kICJy
ZXN1bHRzIiBpbiBkYXRhOgogICAgICAgICAgICAgICAgIHNlbGYudXBkYXRlX2Zyb21fd3B0cmVw
b3J0X2xvZyhkYXRhKQotICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIGxvZ19maWxl
LnNlZWsoMCkKLSAgICAgICAgc2VsZi51cGRhdGVfZnJvbV9yYXdfbG9nKGxvZ19maWxlKQorICAg
ICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVm
IHVwZGF0ZV9mcm9tX3Jhd19sb2coc2VsZiwgbG9nX2ZpbGUpOgogICAgICAgICBhY3Rpb25fbWFw
ID0gc2VsZi5hY3Rpb25fbWFwCkBAIC0zMjcsMTAgKzQxMCwxMiBAQCBjbGFzcyBFeHBlY3RlZFVw
ZGF0ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBhY3Rpb25fbWFwWyJ0ZXN0X3N0YXR1cyJd
KHsidGVzdCI6IHRlc3RbInRlc3QiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAic3VidGVzdCI6IHN1YnRlc3RbIm5hbWUiXSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogc3VidGVzdFsic3RhdHVzIl0sCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogc3Vi
dGVzdC5nZXQoImV4cGVjdGVkIil9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJleHBlY3RlZCI6IHN1YnRlc3QuZ2V0KCJleHBlY3RlZCIpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrbm93bl9pbnRlcm1pdHRlbnQiOiBz
dWJ0ZXN0LmdldCgia25vd25faW50ZXJtaXR0ZW50IiwgW10pfSkKICAgICAgICAgICAgIGFjdGlv
bl9tYXBbInRlc3RfZW5kIl0oeyJ0ZXN0IjogdGVzdFsidGVzdCJdLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6IHRlc3RbInN0YXR1cyJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogdGVzdC5nZXQoImV4cGVjdGVk
Iil9KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogdGVz
dC5nZXQoImV4cGVjdGVkIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
a25vd25faW50ZXJtaXR0ZW50IjogdGVzdC5nZXQoImtub3duX2ludGVybWl0dGVudCIsIFtdKX0p
CiAgICAgICAgICAgICBpZiAiYXNzZXJ0cyIgaW4gdGVzdDoKICAgICAgICAgICAgICAgICBhc3Nl
cnRzID0gdGVzdFsiYXNzZXJ0cyJdCiAgICAgICAgICAgICAgICAgYWN0aW9uX21hcFsiYXNzZXJ0
aW9uX2NvdW50Il0oeyJ0ZXN0IjogdGVzdFsidGVzdCJdLApAQCAtMzQwLDIwICs0MjUsMjYgQEAg
Y2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIGZvciBpdGVtIGluIGRhdGEu
Z2V0KCJsc2FuX2xlYWtzIiwgW10pOgogICAgICAgICAgICAgYWN0aW9uX21hcFsibHNhbl9sZWFr
Il0oaXRlbSkKIAorICAgICAgICBtb3psZWFrX2RhdGEgPSBkYXRhLmdldCgibW96bGVhayIsIHt9
KQorICAgICAgICBmb3Igc2NvcGUsIHNjb3BlX2RhdGEgaW4gbW96bGVha19kYXRhLml0ZXJpdGVt
cygpOgorICAgICAgICAgICAgZm9yIGtleSwgYWN0aW9uIGluIFsoIm9iamVjdHMiLCAibW96bGVh
a19vYmplY3QiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0b3RhbCIsICJt
b3psZWFrX3RvdGFsIildOgorICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHNjb3BlX2RhdGEu
Z2V0KGtleSwgW10pOgorICAgICAgICAgICAgICAgICAgICBpdGVtX2RhdGEgPSB7InNjb3BlIjog
c2NvcGV9CisgICAgICAgICAgICAgICAgICAgIGl0ZW1fZGF0YS51cGRhdGUoaXRlbSkKKyAgICAg
ICAgICAgICAgICAgICAgYWN0aW9uX21hcFthY3Rpb25dKGl0ZW1fZGF0YSkKKwogICAgIGRlZiBz
dWl0ZV9zdGFydChzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5ydW5faW5mbyA9IHJ1bl9pbmZv
X2ludGVybi5zdG9yZShkYXRhWyJydW5faW5mbyJdKQorICAgICAgICBzZWxmLnJ1bl9pbmZvID0g
cnVuX2luZm9faW50ZXJuLnN0b3JlKFJ1bkluZm8oZGF0YVsicnVuX2luZm8iXSkpCiAKICAgICBk
ZWYgdGVzdF9zdGFydChzZWxmLCBkYXRhKToKICAgICAgICAgdGVzdF9pZCA9IGludGVybihkYXRh
WyJ0ZXN0Il0uZW5jb2RlKCJ1dGY4IikpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3Rf
ZGF0YSA9IHNlbGYuaWRfdGVzdF9tYXBbdGVzdF9pZF0KKyAgICAgICAgICAgIHNlbGYuaWRfdGVz
dF9tYXBbdGVzdF9pZF0KICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgcHJp
bnQgIlRlc3Qgbm90IGZvdW5kICVzLCBza2lwcGluZyIgJSB0ZXN0X2lkCisgICAgICAgICAgICBw
cmludCgiVGVzdCBub3QgZm91bmQgJXMsIHNraXBwaW5nIiAlIHRlc3RfaWQpCiAgICAgICAgICAg
ICByZXR1cm4KIAotICAgICAgICBpZiBzZWxmLmlnbm9yZV9leGlzdGluZzoKLSAgICAgICAgICAg
IHRlc3RfZGF0YS5zZXRfcmVxdWlyZXNfdXBkYXRlKCkKLSAgICAgICAgICAgIHRlc3RfZGF0YS5j
bGVhci5hcHBlbmQoImV4cGVjdGVkIikKICAgICAgICAgc2VsZi50ZXN0c192aXNpdGVkW3Rlc3Rf
aWRdID0gc2V0KCkKIAogICAgIGRlZiB0ZXN0X3N0YXR1cyhzZWxmLCBkYXRhKToKQEAgLTM2NSw3
ICs0NTYsNyBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2JqZWN0KToKIAogICAgICAgICBzZWxm
LnRlc3RzX3Zpc2l0ZWRbdGVzdF9pZF0uYWRkKHN1YnRlc3QpCiAKLSAgICAgICAgcmVzdWx0ID0g
c3RhdHVzX2ludGVybi5zdG9yZShkYXRhWyJzdGF0dXMiXSkKKyAgICAgICAgcmVzdWx0ID0gcGFj
a19yZXN1bHQoZGF0YSkKIAogICAgICAgICB0ZXN0X2RhdGEuc2V0KHRlc3RfaWQsIHN1YnRlc3Qs
ICJzdGF0dXMiLCBzZWxmLnJ1bl9pbmZvLCByZXN1bHQpCiAgICAgICAgIGlmIGRhdGEuZ2V0KCJl
eHBlY3RlZCIpIGFuZCBkYXRhWyJleHBlY3RlZCJdICE9IGRhdGFbInN0YXR1cyJdOgpAQCAtMzgw
LDEwICs0NzEsMTAgQEAgY2xhc3MgRXhwZWN0ZWRVcGRhdGVyKG9iamVjdCk6CiAgICAgICAgIGlm
IHRlc3RfZGF0YSBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgcmVzdWx0
ID0gc3RhdHVzX2ludGVybi5zdG9yZShkYXRhWyJzdGF0dXMiXSkKKyAgICAgICAgcmVzdWx0ID0g
cGFja19yZXN1bHQoZGF0YSkKIAogICAgICAgICB0ZXN0X2RhdGEuc2V0KHRlc3RfaWQsIE5vbmUs
ICJzdGF0dXMiLCBzZWxmLnJ1bl9pbmZvLCByZXN1bHQpCi0gICAgICAgIGlmIGRhdGEuZ2V0KCJl
eHBlY3RlZCIpIGFuZCBkYXRhWyJzdGF0dXMiXSAhPSBkYXRhWyJleHBlY3RlZCJdOgorICAgICAg
ICBpZiBkYXRhLmdldCgiZXhwZWN0ZWQiKSBhbmQgZGF0YVsiZXhwZWN0ZWQiXSAhPSBkYXRhWyJz
dGF0dXMiXToKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXRfcmVxdWlyZXNfdXBkYXRlKCkKICAg
ICAgICAgZGVsIHNlbGYudGVzdHNfdmlzaXRlZFt0ZXN0X2lkXQogCkBAIC0zOTcsMjUgKzQ4OCw0
NiBAQCBjbGFzcyBFeHBlY3RlZFVwZGF0ZXIob2JqZWN0KToKICAgICAgICAgaWYgZGF0YVsiY291
bnQiXSA8IGRhdGFbIm1pbl9leHBlY3RlZCJdIG9yIGRhdGFbImNvdW50Il0gPiBkYXRhWyJtYXhf
ZXhwZWN0ZWQiXToKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXRfcmVxdWlyZXNfdXBkYXRlKCkK
IAotICAgIGRlZiBsc2FuX2xlYWsoc2VsZiwgZGF0YSk6CisgICAgZGVmIHRlc3RfZm9yX3Njb3Bl
KHNlbGYsIGRhdGEpOgogICAgICAgICBkaXJfcGF0aCA9IGRhdGEuZ2V0KCJzY29wZSIsICIvIikK
ICAgICAgICAgZGlyX2lkID0gaW50ZXJuKG9zLnBhdGguam9pbihkaXJfcGF0aCwgIl9fZGlyX18i
KS5yZXBsYWNlKG9zLnBhdGguc2VwLCAiLyIpLmVuY29kZSgidXRmOCIpKQogICAgICAgICBpZiBk
aXJfaWQuc3RhcnRzd2l0aCgiLyIpOgogICAgICAgICAgICAgZGlyX2lkID0gZGlyX2lkWzE6XQot
ICAgICAgICB0ZXN0X2RhdGEgPSBzZWxmLmlkX3Rlc3RfbWFwW2Rpcl9pZF0KKyAgICAgICAgcmV0
dXJuIGRpcl9pZCwgc2VsZi5pZF90ZXN0X21hcFtkaXJfaWRdCisKKyAgICBkZWYgbHNhbl9sZWFr
KHNlbGYsIGRhdGEpOgorICAgICAgICBkaXJfaWQsIHRlc3RfZGF0YSA9IHNlbGYudGVzdF9mb3Jf
c2NvcGUoZGF0YSkKICAgICAgICAgdGVzdF9kYXRhLnNldChkaXJfaWQsIE5vbmUsICJsc2FuIiwK
ICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bl9pbmZvLCAoZGF0YVsiZnJhbWVzIl0sIGRh
dGEuZ2V0KCJhbGxvd2VkX21hdGNoIikpKQogICAgICAgICBpZiBub3QgZGF0YS5nZXQoImFsbG93
ZWRfbWF0Y2giKToKICAgICAgICAgICAgIHRlc3RfZGF0YS5zZXRfcmVxdWlyZXNfdXBkYXRlKCkK
IAorICAgIGRlZiBtb3psZWFrX29iamVjdChzZWxmLCBkYXRhKToKKyAgICAgICAgZGlyX2lkLCB0
ZXN0X2RhdGEgPSBzZWxmLnRlc3RfZm9yX3Njb3BlKGRhdGEpCisgICAgICAgIHRlc3RfZGF0YS5z
ZXQoZGlyX2lkLCBOb25lLCAibGVhay1vYmplY3QiLAorICAgICAgICAgICAgICAgICAgICAgIHNl
bGYucnVuX2luZm8sICgiJXM6JXMiLCAoZGF0YVsicHJvY2VzcyJdLCBkYXRhWyJuYW1lIl0pLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhLmdldCgiYWxsb3dlZCIp
KSkKKyAgICAgICAgaWYgbm90IGRhdGEuZ2V0KCJhbGxvd2VkIik6CisgICAgICAgICAgICB0ZXN0
X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCisKKyAgICBkZWYgbW96bGVha190b3RhbChzZWxm
LCBkYXRhKToKKyAgICAgICAgaWYgZGF0YVsiYnl0ZXMiXToKKyAgICAgICAgICAgIGRpcl9pZCwg
dGVzdF9kYXRhID0gc2VsZi50ZXN0X2Zvcl9zY29wZShkYXRhKQorICAgICAgICAgICAgdGVzdF9k
YXRhLnNldChkaXJfaWQsIE5vbmUsICJsZWFrLXRocmVzaG9sZCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgIHNlbGYucnVuX2luZm8sIChkYXRhWyJwcm9jZXNzIl0sIGRhdGFbImJ5dGVzIl0s
IGRhdGFbInRocmVzaG9sZCJdKSkKKyAgICAgICAgICAgIGlmIGRhdGFbImJ5dGVzIl0gPiBkYXRh
WyJ0aHJlc2hvbGQiXSBvciBkYXRhWyJieXRlcyJdIDwgMDoKKyAgICAgICAgICAgICAgICB0ZXN0
X2RhdGEuc2V0X3JlcXVpcmVzX3VwZGF0ZSgpCisKIAogZGVmIGNyZWF0ZV90ZXN0X3RyZWUobWV0
YWRhdGFfcGF0aCwgdGVzdF9tYW5pZmVzdCk6CiAgICAgIiIiQ3JlYXRlIGEgbWFwIG9mIHRlc3Rf
aWQgdG8gVGVzdEZpbGVEYXRhIGZvciB0aGF0IHRlc3QuCiAgICAgIiIiCisgICAgZG9fZGVsYXll
ZF9pbXBvcnRzKCkKICAgICBpZF90ZXN0X21hcCA9IHt9Ci0gICAgZXhjbHVkZV90eXBlcyA9IGZy
b3plbnNldChbInN0dWIiLCAiaGVscGVyIiwgIm1hbnVhbCIsICJzdXBwb3J0IiwgImNvbmZvcm1h
bmNlY2hlY2tlciJdKQotICAgIGFsbF90eXBlcyA9IG1hbmlmZXN0aXRlbS5pdGVtX3R5cGVzLmtl
eXMoKQotICAgIGluY2x1ZGVfdHlwZXMgPSBzZXQoYWxsX3R5cGVzKSAtIGV4Y2x1ZGVfdHlwZXMK
KyAgICBleGNsdWRlX3R5cGVzID0gZnJvemVuc2V0KFsibWFudWFsIiwgInN1cHBvcnQiLCAiY29u
Zm9ybWFuY2VjaGVja2VyIl0pCisgICAgYWxsX3R5cGVzID0gc2V0KG1hbmlmZXN0aXRlbS5pdGVt
X3R5cGVzLmtleXMoKSkKKyAgICBhc3NlcnQgYWxsX3R5cGVzID4gZXhjbHVkZV90eXBlcworICAg
IGluY2x1ZGVfdHlwZXMgPSBhbGxfdHlwZXMgLSBleGNsdWRlX3R5cGVzCiAgICAgZm9yIGl0ZW1f
dHlwZSwgdGVzdF9wYXRoLCB0ZXN0cyBpbiB0ZXN0X21hbmlmZXN0Lml0ZXJ0eXBlcygqaW5jbHVk
ZV90eXBlcyk6CiAgICAgICAgIHRlc3RfZmlsZV9kYXRhID0gVGVzdEZpbGVEYXRhKGludGVybih0
ZXN0X21hbmlmZXN0LnVybF9iYXNlLmVuY29kZSgidXRmOCIpKSwKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50ZXJuKGl0ZW1fdHlwZS5lbmNvZGUoInV0ZjgiKSksCkBA
IC00NjcsNyArNTc5LDcgQEAgY2xhc3MgUGFja2VkUmVzdWx0TGlzdChvYmplY3QpOgogCiAgICAg
ZGVmIGFwcGVuZChzZWxmLCBwcm9wLCBydW5faW5mbywgdmFsdWUpOgogICAgICAgICBvdXRfdmFs
ID0gKHByb3AgPDwgMTIpICsgcnVuX2luZm8KLSAgICAgICAgaWYgcHJvcCA9PSBwcm9wX2ludGVy
bi5zdG9yZSgic3RhdHVzIik6CisgICAgICAgIGlmIHByb3AgPT0gcHJvcF9pbnRlcm4uc3RvcmUo
InN0YXR1cyIpIGFuZCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgogICAgICAgICAgICAgb3V0X3Zh
bCArPSB2YWx1ZSA8PCA4CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBpZiBub3QgaGFzYXR0
cihzZWxmLCAicmF3X2RhdGEiKToKQEAgLTQ3OSwxMiArNTkxLDEyIEBAIGNsYXNzIFBhY2tlZFJl
c3VsdExpc3Qob2JqZWN0KToKICAgICAgICAgcHJvcCA9IHByb3BfaW50ZXJuLmdldCgocGFja2Vk
ICYgMHhGMDAwKSA+PiAxMikKIAogICAgICAgICB2YWx1ZV9pZHggPSAocGFja2VkICYgMHgwRjAw
KSA+PiA4Ci0gICAgICAgIGlmIHZhbHVlX2lkeCBpcyAwOgorICAgICAgICBpZiB2YWx1ZV9pZHgg
PT0gMDoKICAgICAgICAgICAgIHZhbHVlID0gc2VsZi5yYXdfZGF0YVtpZHhdCiAgICAgICAgIGVs
c2U6CiAgICAgICAgICAgICB2YWx1ZSA9IHN0YXR1c19pbnRlcm4uZ2V0KHZhbHVlX2lkeCkKIAot
ICAgICAgICBydW5faW5mbyA9IHJ1bl9pbmZvX2ludGVybi5nZXQoKHBhY2tlZCAmIDB4MDBGRikp
CisgICAgICAgIHJ1bl9pbmZvID0gcnVuX2luZm9faW50ZXJuLmdldChwYWNrZWQgJiAweDAwRkYp
CiAKICAgICAgICAgcmV0dXJuIHByb3AsIHJ1bl9pbmZvLCB2YWx1ZQogCkBAIC00OTUsNyArNjA3
LDcgQEAgY2xhc3MgUGFja2VkUmVzdWx0TGlzdChvYmplY3QpOgogCiBjbGFzcyBUZXN0RmlsZURh
dGEob2JqZWN0KToKICAgICBfX3Nsb3RzX18gPSAoInVybF9iYXNlIiwgIml0ZW1fdHlwZSIsICJ0
ZXN0X3BhdGgiLCAibWV0YWRhdGFfcGF0aCIsICJ0ZXN0cyIsCi0gICAgICAgICAgICAgICAgICJf
cmVxdWlyZXNfdXBkYXRlIiwgImNsZWFyIiwgImRhdGEiKQorICAgICAgICAgICAgICAgICAiX3Jl
cXVpcmVzX3VwZGF0ZSIsICJkYXRhIikKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmxfYmFz
ZSwgaXRlbV90eXBlLCBtZXRhZGF0YV9wYXRoLCB0ZXN0X3BhdGgsIHRlc3RzKToKICAgICAgICAg
c2VsZi51cmxfYmFzZSA9IHVybF9iYXNlCkBAIC01MDQsMzcgKzYxNiw4NiBAQCBjbGFzcyBUZXN0
RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgc2VsZi5tZXRhZGF0YV9wYXRoID0gbWV0YWRhdGFf
cGF0aAogICAgICAgICBzZWxmLnRlc3RzID0ge2ludGVybihpdGVtLmlkLmVuY29kZSgidXRmOCIp
KSBmb3IgaXRlbSBpbiB0ZXN0c30KICAgICAgICAgc2VsZi5fcmVxdWlyZXNfdXBkYXRlID0gRmFs
c2UKLSAgICAgICAgc2VsZi5jbGVhciA9IHNldCgpCiAgICAgICAgIHNlbGYuZGF0YSA9IGRlZmF1
bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QoUGFja2VkUmVzdWx0TGlzdCkpCiAKICAgICBkZWYg
c2V0X3JlcXVpcmVzX3VwZGF0ZShzZWxmKToKICAgICAgICAgc2VsZi5fcmVxdWlyZXNfdXBkYXRl
ID0gVHJ1ZQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHJlcXVpcmVzX3VwZGF0ZShzZWxmKToK
KyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVpcmVzX3VwZGF0ZQorCiAgICAgZGVmIHNldChzZWxm
LCB0ZXN0X2lkLCBzdWJ0ZXN0X2lkLCBwcm9wLCBydW5faW5mbywgdmFsdWUpOgogICAgICAgICBz
ZWxmLmRhdGFbdGVzdF9pZF1bc3VidGVzdF9pZF0uYXBwZW5kKHByb3BfaW50ZXJuLnN0b3JlKHBy
b3ApLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVl
KQogCi0gICAgZGVmIGV4cGVjdGVkKHNlbGYsIHByb3BlcnR5X29yZGVyLCBib29sZWFuX3Byb3Bl
cnRpZXMpOgorICAgIGRlZiBleHBlY3RlZChzZWxmLCB1cGRhdGVfcHJvcGVydGllcywgdXBkYXRl
X2ludGVybWl0dGVudCwgcmVtb3ZlX2ludGVybWl0dGVudCk6CiAgICAgICAgIGV4cGVjdGVkX2Rh
dGEgPSBsb2FkX2V4cGVjdGVkKHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYubWV0YWRhdGFfcGF0aCwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi50ZXN0X3BhdGgsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHNlbGYudGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHByb3BlcnR5X29yZGVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBib29sZWFuX3Byb3BlcnRpZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHVwZGF0ZV9wcm9wZXJ0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB1cGRhdGVfaW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0ZW50KQogICAgICAgICBpZiBleHBlY3RlZF9k
YXRhIGlzIE5vbmU6CiAgICAgICAgICAgICBleHBlY3RlZF9kYXRhID0gY3JlYXRlX2V4cGVjdGVk
KHNlbGYudXJsX2Jhc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNlbGYudGVzdF9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBwcm9wZXJ0eV9vcmRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgYm9vbGVhbl9wcm9wZXJ0aWVzKQorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGllcywKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2ludGVybWl0dGVudCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVudCkK
ICAgICAgICAgcmV0dXJuIGV4cGVjdGVkX2RhdGEKIAotICAgIGRlZiB1cGRhdGUoc2VsZiwgcHJv
cGVydHlfb3JkZXIsIGJvb2xlYW5fcHJvcGVydGllcywgc3RhYmlsaXR5LAotICAgICAgICAgICAg
ICAgZGVmYXVsdF9leHBlY3RlZF9ieV90eXBlKToKLSAgICAgICAgaWYgbm90IHNlbGYuX3JlcXVp
cmVzX3VwZGF0ZToKKyAgICBkZWYgaXNfZGlzYWJsZWQoc2VsZiwgdGVzdCk6CisgICAgICAgICMg
VGhpcyBjb25zZXJ2YXRpdmVseSBhc3N1bWVzIHRoYXQgYW55dGhpbmcgdGhhdCB3YXMgZGlzYWJs
ZWQgcmVtYWlucyBkaXNhYmxlZAorICAgICAgICAjIHdlIGNvdWxkIHByb2JhYmx5IGRvIGJldHRl
ciBieSBjaGVja2luZyBpZiBpdCdzIGluIHRoZSBmdWxsIHNldCBvZiBydW4gaW5mb3MKKyAgICAg
ICAgcmV0dXJuIHRlc3QuaGFzX2tleSgiZGlzYWJsZWQiKQorCisgICAgZGVmIG9ycGhhbl9zdWJ0
ZXN0cyhzZWxmLCBleHBlY3RlZCk6CisgICAgICAgICMgUmV0dXJuIHN1YnRlc3Qgbm9kZXMgcHJl
c2VudCBpbiB0aGUgZXhwZWN0ZWQgZmlsZSwgYnV0IG1pc3NpbmcgZnJvbSB0aGUgZGF0YQorICAg
ICAgICBydiA9IFtdCisKKyAgICAgICAgZm9yIHRlc3RfaWQsIHN1YnRlc3RzIGluIHNlbGYuZGF0
YS5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgIHRlc3QgPSBleHBlY3RlZC5nZXRfdGVzdCh0ZXN0
X2lkLmRlY29kZSgidXRmOCIpKQorICAgICAgICAgICAgaWYgbm90IHRlc3Q6CisgICAgICAgICAg
ICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlZW5fc3VidGVzdHMgPSBzZXQoaXRlbS5kZWNv
ZGUoInV0ZjgiKSBmb3IgaXRlbSBpbiBzdWJ0ZXN0cy5pdGVya2V5cygpIGlmIGl0ZW0gaXMgbm90
IE5vbmUpCisgICAgICAgICAgICBtaXNzaW5nX3N1YnRlc3RzID0gc2V0KHRlc3Quc3VidGVzdHMu
a2V5cygpKSAtIHNlZW5fc3VidGVzdHMKKyAgICAgICAgICAgIGZvciBpdGVtIGluIG1pc3Npbmdf
c3VidGVzdHM6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWRfc3VidGVzdCA9IHRlc3QuZ2V0X3N1
YnRlc3QoaXRlbSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19kaXNhYmxlZChleHBl
Y3RlZF9zdWJ0ZXN0KToKKyAgICAgICAgICAgICAgICAgICAgcnYuYXBwZW5kKGV4cGVjdGVkX3N1
YnRlc3QpCisgICAgICAgICAgICBmb3IgbmFtZSBpbiBzZWVuX3N1YnRlc3RzOgorICAgICAgICAg
ICAgICAgIHN1YnRlc3QgPSB0ZXN0LmdldF9zdWJ0ZXN0KG5hbWUpCisgICAgICAgICAgICAgICAg
IyBJZiBhbnkgb2YgdGhlIGl0ZW1zIGhhdmUgY2hpbGRyZW4gKGllIHN1YnN1YnRlc3RzKSB3ZSB3
YW50IHRvIHBydW5lIHRoZXMKKyAgICAgICAgICAgICAgICBpZiBzdWJ0ZXN0LmNoaWxkcmVuOgor
ICAgICAgICAgICAgICAgICAgICBydi5leHRlbmQoc3VidGVzdC5jaGlsZHJlbikKKworICAgICAg
ICByZXR1cm4gcnYKKworICAgIGRlZiB1cGRhdGUoc2VsZiwgZGVmYXVsdF9leHBlY3RlZF9ieV90
eXBlLCB1cGRhdGVfcHJvcGVydGllcywKKyAgICAgICAgICAgICAgIGZ1bGxfdXBkYXRlPUZhbHNl
LCBkaXNhYmxlX2ludGVybWl0dGVudD1Ob25lLCB1cGRhdGVfaW50ZXJtaXR0ZW50PUZhbHNlLAor
ICAgICAgICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVudD1GYWxzZSk6CisgICAgICAgICMgSWYg
d2UgYXJlIGRvaW5nIGEgZnVsbCB1cGRhdGUsIHdlIG1heSBuZWVkIHRvIHBydW5lIG1pc3Npbmcg
bm9kZXMKKyAgICAgICAgIyBldmVuIGlmIHRoZSBleHBlY3RhdGlvbnMgZGlkbid0IGNoYW5nZQor
ICAgICAgICBpZiBub3Qgc2VsZi5yZXF1aXJlc191cGRhdGUgYW5kIG5vdCBmdWxsX3VwZGF0ZToK
ICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGV4cGVjdGVkID0gc2VsZi5leHBlY3RlZChw
cm9wZXJ0eV9vcmRlciwgYm9vbGVhbl9wcm9wZXJ0aWVzKQorICAgICAgICBleHBlY3RlZCA9IHNl
bGYuZXhwZWN0ZWQodXBkYXRlX3Byb3BlcnRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB1cGRhdGVfaW50ZXJtaXR0ZW50PXVwZGF0ZV9pbnRlcm1pdHRlbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICByZW1vdmVfaW50ZXJtaXR0ZW50PXJlbW92ZV9pbnRl
cm1pdHRlbnQpCisKKyAgICAgICAgaWYgZnVsbF91cGRhdGU6CisgICAgICAgICAgICBvcnBoYW5z
ID0gc2VsZi5vcnBoYW5fc3VidGVzdHMoZXhwZWN0ZWQpCisKKyAgICAgICAgICAgIGlmIG5vdCBz
ZWxmLnJlcXVpcmVzX3VwZGF0ZSBhbmQgbm90IG9ycGhhbnM6CisgICAgICAgICAgICAgICAgcmV0
dXJuCisKKyAgICAgICAgICAgIGlmIG9ycGhhbnM6CisgICAgICAgICAgICAgICAgZXhwZWN0ZWQu
bW9kaWZpZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgZm9yIGl0ZW0gaW4gb3JwaGFuczoKKyAg
ICAgICAgICAgICAgICAgICAgaXRlbS5yZW1vdmUoKQorCiAgICAgICAgIGV4cGVjdGVkX2J5X3Rl
c3QgPSB7fQogCiAgICAgICAgIGZvciB0ZXN0X2lkIGluIHNlbGYudGVzdHM6CkBAIC01NDIsNjcg
KzcwMyw2OSBAQCBjbGFzcyBUZXN0RmlsZURhdGEob2JqZWN0KToKICAgICAgICAgICAgICAgICBl
eHBlY3RlZC5hcHBlbmQobWFuaWZlc3R1cGRhdGUuVGVzdE5vZGUuY3JlYXRlKHRlc3RfaWQpKQog
ICAgICAgICAgICAgdGVzdF9leHBlY3RlZCA9IGV4cGVjdGVkLmdldF90ZXN0KHRlc3RfaWQpCiAg
ICAgICAgICAgICBleHBlY3RlZF9ieV90ZXN0W3Rlc3RfaWRdID0gdGVzdF9leHBlY3RlZAotICAg
ICAgICAgICAgZm9yIHByb3AgaW4gc2VsZi5jbGVhcjoKLSAgICAgICAgICAgICAgICB0ZXN0X2V4
cGVjdGVkLmNsZWFyKHByb3ApCiAKICAgICAgICAgZm9yIHRlc3RfaWQsIHRlc3RfZGF0YSBpbiBz
ZWxmLmRhdGEuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICB0ZXN0X2lkID0gdGVzdF9pZC5kZWNv
ZGUoInV0ZjgiKQogICAgICAgICAgICAgZm9yIHN1YnRlc3RfaWQsIHJlc3VsdHNfbGlzdCBpbiB0
ZXN0X2RhdGEuaXRlcml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgZm9yIHByb3AsIHJ1bl9pbmZv
LCB2YWx1ZSBpbiByZXN1bHRzX2xpc3Q6CiAgICAgICAgICAgICAgICAgICAgICMgU3BlY2lhbCBj
YXNlIGRpcmVjdG9yeSBtZXRhZGF0YQogICAgICAgICAgICAgICAgICAgICBpZiBzdWJ0ZXN0X2lk
IGlzIE5vbmUgYW5kIHRlc3RfaWQuZW5kc3dpdGgoIl9fZGlyX18iKToKICAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIHByb3AgPT0gImxzYW4iOgogICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGV4cGVjdGVkLnNldF9sc2FuKHJ1bl9pbmZvLCB2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGVsaWYgcHJvcCA9PSAibGVhay1vYmplY3QiOgorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGV4cGVjdGVkLnNldF9sZWFrX29iamVjdChydW5faW5mbywgdmFsdWUpCisgICAgICAgICAg
ICAgICAgICAgICAgICBlbGlmIHByb3AgPT0gImxlYWstdGhyZXNob2xkIjoKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBleHBlY3RlZC5zZXRfbGVha190aHJlc2hvbGQocnVuX2luZm8sIHZh
bHVlKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgICAg
ICAgICBpZiBwcm9wID09ICJzdGF0dXMiOgotICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUg
PSBSZXN1bHQodmFsdWUsIGRlZmF1bHRfZXhwZWN0ZWRfYnlfdHlwZVtzZWxmLml0ZW1fdHlwZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgc3VidGVzdF9pZCBpcyBub3QgTm9uZV0pCi0KICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9leHBlY3RlZCA9IGV4cGVjdGVkX2J5X3Rlc3RbdGVzdF9pZF0KICAgICAgICAg
ICAgICAgICAgICAgaWYgc3VidGVzdF9pZCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAg
ICAgaXRlbV9leHBlY3RlZCA9IHRlc3RfZXhwZWN0ZWQKICAgICAgICAgICAgICAgICAgICAgZWxz
ZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3VidGVzdF9pZCwgc3Ry
KToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0ZXN0X2lkID0gc3VidGVzdF9pZC5k
ZWNvZGUoInV0ZjgiKQogICAgICAgICAgICAgICAgICAgICAgICAgaXRlbV9leHBlY3RlZCA9IHRl
c3RfZXhwZWN0ZWQuZ2V0X3N1YnRlc3Qoc3VidGVzdF9pZCkKKwogICAgICAgICAgICAgICAgICAg
ICBpZiBwcm9wID09ICJzdGF0dXMiOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBr
bm93bl9pbnRlcm1pdHRlbnQgPSB1bnBhY2tfcmVzdWx0KHZhbHVlKQorICAgICAgICAgICAgICAg
ICAgICAgICAgdmFsdWUgPSBSZXN1bHQoc3RhdHVzLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAga25vd25faW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgZGVmYXVsdF9leHBlY3RlZF9ieV90eXBlW3NlbGYuaXRlbV90eXBl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN1YnRlc3RfaWQgaXMgbm90IE5vbmVdKQogICAgICAgICAgICAgICAgICAgICAg
ICAgaXRlbV9leHBlY3RlZC5zZXRfcmVzdWx0KHJ1bl9pbmZvLCB2YWx1ZSkKICAgICAgICAgICAg
ICAgICAgICAgZWxpZiBwcm9wID09ICJhc3NlcnRzIjoKICAgICAgICAgICAgICAgICAgICAgICAg
IGl0ZW1fZXhwZWN0ZWQuc2V0X2Fzc2VydHMocnVuX2luZm8sIHZhbHVlKQogCi0gICAgICAgIGV4
cGVjdGVkLmNvYWxlc2NlX3Byb3BlcnRpZXMoc3RhYmlsaXR5PXN0YWJpbGl0eSkKKyAgICAgICAg
ZXhwZWN0ZWQudXBkYXRlKGZ1bGxfdXBkYXRlPWZ1bGxfdXBkYXRlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgZGlzYWJsZV9pbnRlcm1pdHRlbnQ9ZGlzYWJsZV9pbnRlcm1pdHRlbnQpCiAgICAg
ICAgIGZvciB0ZXN0IGluIGV4cGVjdGVkLml0ZXJjaGlsZHJlbigpOgogICAgICAgICAgICAgZm9y
IHN1YnRlc3QgaW4gdGVzdC5pdGVyY2hpbGRyZW4oKToKLSAgICAgICAgICAgICAgICBzdWJ0ZXN0
LmNvYWxlc2NlX3Byb3BlcnRpZXMoc3RhYmlsaXR5PXN0YWJpbGl0eSkKLSAgICAgICAgICAgIHRl
c3QuY29hbGVzY2VfcHJvcGVydGllcyhzdGFiaWxpdHk9c3RhYmlsaXR5KQorICAgICAgICAgICAg
ICAgIHN1YnRlc3QudXBkYXRlKGZ1bGxfdXBkYXRlPWZ1bGxfdXBkYXRlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGRpc2FibGVfaW50ZXJtaXR0ZW50PWRpc2FibGVfaW50ZXJtaXR0
ZW50KQorICAgICAgICAgICAgdGVzdC51cGRhdGUoZnVsbF91cGRhdGU9ZnVsbF91cGRhdGUsCisg
ICAgICAgICAgICAgICAgICAgICAgICBkaXNhYmxlX2ludGVybWl0dGVudD1kaXNhYmxlX2ludGVy
bWl0dGVudCkKIAogICAgICAgICByZXR1cm4gZXhwZWN0ZWQKIAogCi1SZXN1bHQgPSBuYW1lZHR1
cGxlKCJSZXN1bHQiLCBbInN0YXR1cyIsICJkZWZhdWx0X2V4cGVjdGVkIl0pCitSZXN1bHQgPSBu
YW1lZHR1cGxlKCJSZXN1bHQiLCBbInN0YXR1cyIsICJrbm93bl9pbnRlcm1pdHRlbnQiLCAiZGVm
YXVsdF9leHBlY3RlZCJdKQogCiAKLWRlZiBjcmVhdGVfZXhwZWN0ZWQodXJsX2Jhc2UsIHRlc3Rf
cGF0aCwgcHJvcGVydHlfb3JkZXI9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgYm9vbGVhbl9w
cm9wZXJ0aWVzPU5vbmUpOgorZGVmIGNyZWF0ZV9leHBlY3RlZCh1cmxfYmFzZSwgdGVzdF9wYXRo
LCBydW5faW5mb19wcm9wZXJ0aWVzLCB1cGRhdGVfaW50ZXJtaXR0ZW50LCByZW1vdmVfaW50ZXJt
aXR0ZW50KToKICAgICBleHBlY3RlZCA9IG1hbmlmZXN0dXBkYXRlLkV4cGVjdGVkTWFuaWZlc3Qo
Tm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9wYXRoLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1
cmxfYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cHJvcGVydHlfb3JkZXI9cHJvcGVydHlfb3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJvb2xlYW5fcHJvcGVydGllcz1ib29sZWFuX3Byb3BlcnRp
ZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvX3Byb3BlcnRpZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHVwZGF0ZV9pbnRlcm1pdHRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQpCiAgICAgcmV0dXJuIGV4cGVj
dGVkCiAKIAotZGVmIGxvYWRfZXhwZWN0ZWQodXJsX2Jhc2UsIG1ldGFkYXRhX3BhdGgsIHRlc3Rf
cGF0aCwgdGVzdHMsIHByb3BlcnR5X29yZGVyPU5vbmUsCi0gICAgICAgICAgICAgICAgICBib29s
ZWFuX3Byb3BlcnRpZXM9Tm9uZSk6CitkZWYgbG9hZF9leHBlY3RlZCh1cmxfYmFzZSwgbWV0YWRh
dGFfcGF0aCwgdGVzdF9wYXRoLCB0ZXN0cywgcnVuX2luZm9fcHJvcGVydGllcywgdXBkYXRlX2lu
dGVybWl0dGVudCwgcmVtb3ZlX2ludGVybWl0dGVudCk6CiAgICAgZXhwZWN0ZWRfbWFuaWZlc3Qg
PSBtYW5pZmVzdHVwZGF0ZS5nZXRfbWFuaWZlc3QobWV0YWRhdGFfcGF0aCwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X3BhdGgsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX2Jhc2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJv
cGVydHlfb3JkZXI9cHJvcGVydHlfb3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYm9vbGVhbl9wcm9wZXJ0aWVzPWJvb2xlYW5fcHJvcGVy
dGllcykKLSAgICBpZiBleHBlY3RlZF9tYW5pZmVzdCBpcyBOb25lOgotICAgICAgICByZXR1cm4K
LQotICAgICMgUmVtb3ZlIGV4cGVjdGVkIGRhdGEgZm9yIHRlc3RzIHRoYXQgbm8gbG9uZ2VyIGV4
aXN0Ci0gICAgZm9yIHRlc3QgaW4gZXhwZWN0ZWRfbWFuaWZlc3QuaXRlcmNoaWxkcmVuKCk6Ci0g
ICAgICAgIGlmIHRlc3QuaWQgbm90IGluIHRlc3RzOgotICAgICAgICAgICAgdGVzdC5yZW1vdmUo
KQotCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cnVuX2luZm9fcHJvcGVydGllcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICB1cGRhdGVfaW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQpCiAg
ICAgcmV0dXJuIGV4cGVjdGVkX21hbmlmZXN0CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJv
ZHVjdHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvcHJvZHVjdHMucHkKaW5kZXggMGMxZjg2ZmYwNmFlZTcz
OWFiMmY2Y2EzZjFhM2QyZDA4NjhlOTY3Mi4uZTMxMTcwNDI3MDlmOTlmNGUwNDQzZGMwZGZhZjU2
MWFkMGI1NDhiMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Byb2R1Y3RzLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci9wcm9kdWN0cy5weQpAQCAtMyw2ICszLDcgQEAgaW1wb3J0IGltcAogCiBmcm9t
IC5icm93c2VycyBpbXBvcnQgcHJvZHVjdF9saXN0CiAKKwogZGVmIHByb2R1Y3RzX2VuYWJsZWQo
Y29uZmlnKToKICAgICBuYW1lcyA9IGNvbmZpZy5nZXQoInByb2R1Y3RzIiwge30pLmtleXMoKQog
ICAgIGlmIG5vdCBuYW1lczoKQEAgLTEwLDYgKzExLDcgQEAgZGVmIHByb2R1Y3RzX2VuYWJsZWQo
Y29uZmlnKToKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gbmFtZXMKIAorCiBkZWYgcHJvZHVj
dF9tb2R1bGUoY29uZmlnLCBwcm9kdWN0KToKICAgICBpZiBwcm9kdWN0IG5vdCBpbiBwcm9kdWN0
c19lbmFibGVkKGNvbmZpZyk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVua25vd24gcHJv
ZHVjdCAlcyIgJSBwcm9kdWN0KQpAQCAtMjYsMjggKzI4LDM5IEBAIGRlZiBwcm9kdWN0X21vZHVs
ZShjb25maWcsIHByb2R1Y3QpOgogICAgIHJldHVybiBtb2R1bGUKIAogCi1kZWYgbG9hZF9wcm9k
dWN0KGNvbmZpZywgcHJvZHVjdCk6Ci0gICAgbW9kdWxlID0gcHJvZHVjdF9tb2R1bGUoY29uZmln
LCBwcm9kdWN0KQotICAgIGRhdGEgPSBtb2R1bGUuX193cHRydW5uZXJfXwotCi0gICAgY2hlY2tf
YXJncyA9IGdldGF0dHIobW9kdWxlLCBkYXRhWyJjaGVja19hcmdzIl0pCi0gICAgYnJvd3Nlcl9j
bHMgPSBnZXRhdHRyKG1vZHVsZSwgZGF0YVsiYnJvd3NlciJdKQotICAgIGJyb3dzZXJfa3dhcmdz
ID0gZ2V0YXR0cihtb2R1bGUsIGRhdGFbImJyb3dzZXJfa3dhcmdzIl0pCi0gICAgZXhlY3V0b3Jf
a3dhcmdzID0gZ2V0YXR0cihtb2R1bGUsIGRhdGFbImV4ZWN1dG9yX2t3YXJncyJdKQotICAgIGVu
dl9vcHRpb25zID0gZ2V0YXR0cihtb2R1bGUsIGRhdGFbImVudl9vcHRpb25zIl0pKCkKLSAgICBl
bnZfZXh0cmFzID0gZ2V0YXR0cihtb2R1bGUsIGRhdGFbImVudl9leHRyYXMiXSkKLSAgICBydW5f
aW5mb19leHRyYXMgPSAoZ2V0YXR0cihtb2R1bGUsIGRhdGFbInJ1bl9pbmZvX2V4dHJhcyJdKQot
ICAgICAgICAgICAgICAgICAgICAgICBpZiAicnVuX2luZm9fZXh0cmFzIiBpbiBkYXRhIGVsc2Ug
bGFtYmRhICoqa3dhcmdzOnt9KQotCi0gICAgZXhlY3V0b3JfY2xhc3NlcyA9IHt9Ci0gICAgZm9y
IHRlc3RfdHlwZSwgY2xzX25hbWUgaW4gZGF0YVsiZXhlY3V0b3IiXS5pdGVyaXRlbXMoKToKLSAg
ICAgICAgY2xzID0gZ2V0YXR0cihtb2R1bGUsIGNsc19uYW1lKQotICAgICAgICBleGVjdXRvcl9j
bGFzc2VzW3Rlc3RfdHlwZV0gPSBjbHMKLQotICAgIHJldHVybiAoY2hlY2tfYXJncywKLSAgICAg
ICAgICAgIGJyb3dzZXJfY2xzLCBicm93c2VyX2t3YXJncywKLSAgICAgICAgICAgIGV4ZWN1dG9y
X2NsYXNzZXMsIGV4ZWN1dG9yX2t3YXJncywKLSAgICAgICAgICAgIGVudl9vcHRpb25zLCBlbnZf
ZXh0cmFzLCBydW5faW5mb19leHRyYXMpCitjbGFzcyBQcm9kdWN0KG9iamVjdCk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGNvbmZpZywgcHJvZHVjdCk6CisgICAgICAgIG1vZHVsZSA9IHByb2R1
Y3RfbW9kdWxlKGNvbmZpZywgcHJvZHVjdCkKKyAgICAgICAgZGF0YSA9IG1vZHVsZS5fX3dwdHJ1
bm5lcl9fCisgICAgICAgIHNlbGYubmFtZSA9IHByb2R1Y3QKKyAgICAgICAgc2VsZi5jaGVja19h
cmdzID0gZ2V0YXR0cihtb2R1bGUsIGRhdGFbImNoZWNrX2FyZ3MiXSkKKyAgICAgICAgc2VsZi5i
cm93c2VyX2NscyA9IGdldGF0dHIobW9kdWxlLCBkYXRhWyJicm93c2VyIl0pCisgICAgICAgIHNl
bGYuZ2V0X2Jyb3dzZXJfa3dhcmdzID0gZ2V0YXR0cihtb2R1bGUsIGRhdGFbImJyb3dzZXJfa3dh
cmdzIl0pCisgICAgICAgIHNlbGYuZ2V0X2V4ZWN1dG9yX2t3YXJncyA9IGdldGF0dHIobW9kdWxl
LCBkYXRhWyJleGVjdXRvcl9rd2FyZ3MiXSkKKyAgICAgICAgc2VsZi5lbnZfb3B0aW9ucyA9IGdl
dGF0dHIobW9kdWxlLCBkYXRhWyJlbnZfb3B0aW9ucyJdKSgpCisgICAgICAgIHNlbGYuZ2V0X2Vu
dl9leHRyYXMgPSBnZXRhdHRyKG1vZHVsZSwgZGF0YVsiZW52X2V4dHJhcyJdKQorICAgICAgICBz
ZWxmLnJ1bl9pbmZvX2V4dHJhcyA9IChnZXRhdHRyKG1vZHVsZSwgZGF0YVsicnVuX2luZm9fZXh0
cmFzIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAicnVuX2luZm9fZXh0cmFzIiBp
biBkYXRhIGVsc2UgbGFtYmRhICoqa3dhcmdzOnt9KQorICAgICAgICBzZWxmLmdldF90aW1lb3V0
X211bHRpcGxpZXIgPSBnZXRhdHRyKG1vZHVsZSwgZGF0YVsidGltZW91dF9tdWx0aXBsaWVyIl0p
CisKKyAgICAgICAgc2VsZi5leGVjdXRvcl9jbGFzc2VzID0ge30KKyAgICAgICAgZm9yIHRlc3Rf
dHlwZSwgY2xzX25hbWUgaW4gZGF0YVsiZXhlY3V0b3IiXS5pdGVyaXRlbXMoKToKKyAgICAgICAg
ICAgIGNscyA9IGdldGF0dHIobW9kdWxlLCBjbHNfbmFtZSkKKyAgICAgICAgICAgIHNlbGYuZXhl
Y3V0b3JfY2xhc3Nlc1t0ZXN0X3R5cGVdID0gY2xzCisKKworZGVmIGxvYWRfcHJvZHVjdChjb25m
aWcsIHByb2R1Y3QsIGxvYWRfY2xzPUZhbHNlKToKKyAgICBydiA9IFByb2R1Y3QoY29uZmlnLCBw
cm9kdWN0KQorICAgIGlmIG5vdCBsb2FkX2NsczoKKyAgICAgICAgcmV0dXJuIChydi5jaGVja19h
cmdzLAorICAgICAgICAgICAgICAgIHJ2LmJyb3dzZXJfY2xzLAorICAgICAgICAgICAgICAgIHJ2
LmdldF9icm93c2VyX2t3YXJncywKKyAgICAgICAgICAgICAgICBydi5leGVjdXRvcl9jbGFzc2Vz
LAorICAgICAgICAgICAgICAgIHJ2LmdldF9leGVjdXRvcl9rd2FyZ3MsCisgICAgICAgICAgICAg
ICAgcnYuZW52X29wdGlvbnMsCisgICAgICAgICAgICAgICAgcnYuZ2V0X2Vudl9leHRyYXMsCisg
ICAgICAgICAgICAgICAgcnYucnVuX2luZm9fZXh0cmFzKQorICAgIHJldHVybiBydgogCiAKIGRl
ZiBsb2FkX3Byb2R1Y3RfdXBkYXRlKGNvbmZpZywgcHJvZHVjdCk6CkBAIC02MCw2ICs3Myw2IEBA
IGRlZiBsb2FkX3Byb2R1Y3RfdXBkYXRlKGNvbmZpZywgcHJvZHVjdCk6CiAgICAgZGF0YSA9IG1v
ZHVsZS5fX3dwdHJ1bm5lcl9fCiAKICAgICB1cGRhdGVfcHJvcGVydGllcyA9IChnZXRhdHRyKG1v
ZHVsZSwgZGF0YVsidXBkYXRlX3Byb3BlcnRpZXMiXSkoKQotICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICJ1cGRhdGVfcHJvcGVydGllcyIgaW4gZGF0YSBlbHNlIChOb25lLCBOb25lKSkKKyAg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAidXBkYXRlX3Byb3BlcnRpZXMiIGluIGRhdGEgZWxz
ZSB7fSkKIAogICAgIHJldHVybiB1cGRhdGVfcHJvcGVydGllcwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3N0YWJpbGl0eS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9zdGFiaWxpdHkucHkKaW5kZXggODU5
ZjAxNDQ0ZDM0YWNkZWRiY2MzMzlkODc4MzEyMmE3ZjVhZDlkMi4uYzA2ZjdlNWU5ZDZiMTBiNGU2
MTljOTVhNjI0MTdlNTJhNTk2YmU1MyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0
eS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvc3RhYmlsaXR5LnB5CkBAIC0xNSw2ICsxNSwxMSBAQCBs
b2NhbHBhdGhzID0gaW1wLmxvYWRfc291cmNlKCJsb2NhbHBhdGhzIiwgb3MucGF0aC5hYnNwYXRo
KG9zLnBhdGguam9pbihoZXJlLCBvcwogZnJvbSB3cHQubWFya2Rvd24gaW1wb3J0IG1hcmtkb3du
X2FkanVzdCwgdGFibGUKIAogCisjIElmIGEgdGVzdCB0YWtlcyBtb3JlIHRoYW4gKEZMQUtZX1RI
UkVTSE9MRCp0aW1lb3V0KSBhbmQgZG9lcyBub3QgY29uc2lzdGVudGx5CisjIHRpbWUgb3V0LCBp
dCBpcyBjb25zaWRlcmVkIHNsb3cgKHBvdGVudGlhbGx5IGZsYWt5KS4KK0ZMQUtZX1RIUkVTSE9M
RCA9IDAuOAorCisKIGNsYXNzIExvZ0FjdGlvbkZpbHRlcihCYXNlSGFuZGxlcik6CiAKICAgICAi
IiJIYW5kbGVyIHRoYXQgZmlsdGVycyBvdXQgbWVzc2FnZXMgbm90IG9mIGEgZ2l2ZW4gc2V0IG9m
IGFjdGlvbnMuCkBAIC01Myw3ICs1OCw4IEBAIGNsYXNzIExvZ0hhbmRsZXIocmVhZGVyLkxvZ0hh
bmRsZXIpOgogCiAgICAgICAgIHRlc3QgPSB7CiAgICAgICAgICAgICAic3VidGVzdHMiOiBPcmRl
cmVkRGljdCgpLAotICAgICAgICAgICAgInN0YXR1cyI6IGRlZmF1bHRkaWN0KGludCkKKyAgICAg
ICAgICAgICJzdGF0dXMiOiBkZWZhdWx0ZGljdChpbnQpLAorICAgICAgICAgICAgImxvbmdlc3Rf
ZHVyYXRpb24iOiBkZWZhdWx0ZGljdChmbG9hdCksCiAgICAgICAgIH0KICAgICAgICAgc2VsZi5y
ZXN1bHRzW3Rlc3RfbmFtZV0gPSB0ZXN0CiAgICAgICAgIHJldHVybiB0ZXN0CkBAIC03Myw2ICs3
OSwxMCBAQCBjbGFzcyBMb2dIYW5kbGVyKHJlYWRlci5Mb2dIYW5kbGVyKToKIAogICAgICAgICBy
ZXR1cm4gc3VidGVzdAogCisgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZiwgZGF0YSk6CisgICAgICAg
IHRlc3QgPSBzZWxmLmZpbmRfb3JfY3JlYXRlX3Rlc3QoZGF0YSkKKyAgICAgICAgdGVzdFsic3Rh
cnRfdGltZSJdID0gZGF0YVsidGltZSJdCisKICAgICBkZWYgdGVzdF9zdGF0dXMoc2VsZiwgZGF0
YSk6CiAgICAgICAgIHN1YnRlc3QgPSBzZWxmLmZpbmRfb3JfY3JlYXRlX3N1YnRlc3QoZGF0YSkK
ICAgICAgICAgc3VidGVzdFsic3RhdHVzIl1bZGF0YVsic3RhdHVzIl1dICs9IDEKQEAgLTgyLDYg
KzkyLDE2IEBAIGNsYXNzIExvZ0hhbmRsZXIocmVhZGVyLkxvZ0hhbmRsZXIpOgogICAgIGRlZiB0
ZXN0X2VuZChzZWxmLCBkYXRhKToKICAgICAgICAgdGVzdCA9IHNlbGYuZmluZF9vcl9jcmVhdGVf
dGVzdChkYXRhKQogICAgICAgICB0ZXN0WyJzdGF0dXMiXVtkYXRhWyJzdGF0dXMiXV0gKz0gMQor
ICAgICAgICAjIFRpbWVzdGFtcHMgYXJlIGluIG1zIHNpbmNlIGVwb2NoLgorICAgICAgICBkdXJh
dGlvbiA9IGRhdGFbInRpbWUiXSAtIHRlc3QucG9wKCJzdGFydF90aW1lIikKKyAgICAgICAgdGVz
dFsibG9uZ2VzdF9kdXJhdGlvbiJdW2RhdGFbInN0YXR1cyJdXSA9IG1heCgKKyAgICAgICAgICAg
IGR1cmF0aW9uLCB0ZXN0WyJsb25nZXN0X2R1cmF0aW9uIl1bZGF0YVsic3RhdHVzIl1dKQorICAg
ICAgICB0cnk6CisgICAgICAgICAgICAjIHRlc3RfdGltZW91dCBpcyBpbiBzZWNvbmRzOyBjb252
ZXJ0IGl0IHRvIG1zLgorICAgICAgICAgICAgdGVzdFsidGltZW91dCJdID0gZGF0YVsiZXh0cmEi
XVsidGVzdF90aW1lb3V0Il0gKiAxMDAwCisgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAg
ICAgICAgICMgSWYgYSB0ZXN0IGlzIHNraXBwZWQsIGl0IHdvbid0IGhhdmUgZXh0cmEgaW5mby4K
KyAgICAgICAgICAgIHBhc3MKIAogCiBkZWYgaXNfaW5jb25zaXN0ZW50KHJlc3VsdHNfZGljdCwg
aXRlcmF0aW9ucyk6CkBAIC05MSw5ICsxMTEsMzIgQEAgZGVmIGlzX2luY29uc2lzdGVudChyZXN1
bHRzX2RpY3QsIGl0ZXJhdGlvbnMpOgogICAgIHJldHVybiBsZW4ocmVzdWx0c19kaWN0KSA+IDEg
b3Igc3VtKHJlc3VsdHNfZGljdC52YWx1ZXMoKSkgIT0gaXRlcmF0aW9ucwogCiAKK2RlZiBmaW5k
X3Nsb3dfc3RhdHVzKHRlc3QpOgorICAgICIiIkNoZWNrIGlmIGEgc2luZ2xlIHRlc3QgYWxtb3N0
IHRpbWVzIG91dC4KKworICAgIFdlIGFyZSBpbnRlcmVzdGVkIGluIHRlc3RzIHRoYXQgYWxtb3N0
IHRpbWUgb3V0IChpLmUuIGxpa2VseSB0byBiZSBmbGFreSkuCisgICAgVGhlcmVmb3JlLCB0aW1l
b3V0IHN0YXR1c2VzIGFyZSBpZ25vcmVkLCBpbmNsdWRpbmcgKEVYVEVSTkFMLSlUSU1FT1VULgor
ICAgIENSQVNIICYgRVJST1IgYXJlIGFsc28gaWdub3JlZCBiZWNhdXNlIHRoZSB0aGV5IG92ZXJy
aWRlIFRJTUVPVVQ7IGEgdGVzdAorICAgIHRoYXQgYm90aCBjcmFzaGVzIGFuZCB0aW1lcyBvdXQg
aXMgbWFya2VkIGFzIENSQVNILCBzbyBpdCB3b24ndCBiZSBmbGFreS4KKworICAgIFJldHVybnM6
CisgICAgICAgIEEgcmVzdWx0IHN0YXR1cyBwcm9kdWNlZCBieSBhIHJ1biB0aGF0IGFsbW9zdCB0
aW1lcyBvdXQ7IE5vbmUsIGlmIG5vCisgICAgICAgIHJ1bnMgYWxtb3N0IHRpbWUgb3V0LgorICAg
ICIiIgorICAgIGlmICJ0aW1lb3V0IiBub3QgaW4gdGVzdDoKKyAgICAgICAgcmV0dXJuIE5vbmUK
KyAgICB0aHJlc2hvbGQgPSB0ZXN0WyJ0aW1lb3V0Il0gKiBGTEFLWV9USFJFU0hPTEQKKyAgICBm
b3Igc3RhdHVzIGluIFsnUEFTUycsICdGQUlMJywgJ09LJ106CisgICAgICAgIGlmIChzdGF0dXMg
aW4gdGVzdFsibG9uZ2VzdF9kdXJhdGlvbiJdIGFuZAorICAgICAgICAgICAgdGVzdFsibG9uZ2Vz
dF9kdXJhdGlvbiJdW3N0YXR1c10gPiB0aHJlc2hvbGQpOgorICAgICAgICAgICAgcmV0dXJuIHN0
YXR1cworICAgIHJldHVybiBOb25lCisKKwogZGVmIHByb2Nlc3NfcmVzdWx0cyhsb2csIGl0ZXJh
dGlvbnMpOgogICAgICIiIlByb2Nlc3MgdGVzdCBsb2cgYW5kIHJldHVybiBvdmVyYWxsIHJlc3Vs
dHMgYW5kIGxpc3Qgb2YgaW5jb25zaXN0ZW50IHRlc3RzLiIiIgogICAgIGluY29uc2lzdGVudCA9
IFtdCisgICAgc2xvdyA9IFtdCiAgICAgaGFuZGxlciA9IExvZ0hhbmRsZXIoKQogICAgIHJlYWRl
ci5oYW5kbGVfbG9nKHJlYWRlci5yZWFkKGxvZyksIGhhbmRsZXIpCiAgICAgcmVzdWx0cyA9IGhh
bmRsZXIucmVzdWx0cwpAQCAtMTAzLDE2ICsxNDYsMjkgQEAgZGVmIHByb2Nlc3NfcmVzdWx0cyhs
b2csIGl0ZXJhdGlvbnMpOgogICAgICAgICBmb3Igc3VidGVzdF9uYW1lLCBzdWJ0ZXN0IGluIHRl
c3RbInN1YnRlc3RzIl0uaXRlcml0ZW1zKCk6CiAgICAgICAgICAgICBpZiBpc19pbmNvbnNpc3Rl
bnQoc3VidGVzdFsic3RhdHVzIl0sIGl0ZXJhdGlvbnMpOgogICAgICAgICAgICAgICAgIGluY29u
c2lzdGVudC5hcHBlbmQoKHRlc3RfbmFtZSwgc3VidGVzdF9uYW1lLCBzdWJ0ZXN0WyJzdGF0dXMi
XSwgc3VidGVzdFsibWVzc2FnZXMiXSkpCi0gICAgcmV0dXJuIHJlc3VsdHMsIGluY29uc2lzdGVu
dAorCisgICAgICAgIHNsb3dfc3RhdHVzID0gZmluZF9zbG93X3N0YXR1cyh0ZXN0KQorICAgICAg
ICBpZiBzbG93X3N0YXR1cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHNsb3cuYXBwZW5kKCgK
KyAgICAgICAgICAgICAgICB0ZXN0X25hbWUsCisgICAgICAgICAgICAgICAgc2xvd19zdGF0dXMs
CisgICAgICAgICAgICAgICAgdGVzdFsibG9uZ2VzdF9kdXJhdGlvbiJdW3Nsb3dfc3RhdHVzXSwK
KyAgICAgICAgICAgICAgICB0ZXN0WyJ0aW1lb3V0Il0KKyAgICAgICAgICAgICkpCisKKyAgICBy
ZXR1cm4gcmVzdWx0cywgaW5jb25zaXN0ZW50LCBzbG93CiAKIAogZGVmIGVycl9zdHJpbmcocmVz
dWx0c19kaWN0LCBpdGVyYXRpb25zKToKICAgICAiIiJDcmVhdGUgYW5kIHJldHVybiBzdHJpbmcg
d2l0aCBlcnJvcnMgZnJvbSB0ZXN0IHJ1bi4iIiIKICAgICBydiA9IFtdCiAgICAgdG90YWxfcmVz
dWx0cyA9IHN1bShyZXN1bHRzX2RpY3QudmFsdWVzKCkpCi0gICAgZm9yIGtleSwgdmFsdWUgaW4g
c29ydGVkKHJlc3VsdHNfZGljdC5pdGVtcygpKToKLSAgICAgICAgcnYuYXBwZW5kKCIlcyVzIiAl
Ci0gICAgICAgICAgICAgICAgICAoa2V5LCAiOiAlcy8lcyIgJSAodmFsdWUsIGl0ZXJhdGlvbnMp
IGlmIHZhbHVlICE9IGl0ZXJhdGlvbnMgZWxzZSAiIikpCisgICAgaWYgdG90YWxfcmVzdWx0cyA+
IGl0ZXJhdGlvbnM6CisgICAgICAgIHJ2LmFwcGVuZCgiRHVwbGljYXRlIHN1YnRlc3QgbmFtZSIp
CisgICAgZWxzZToKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gc29ydGVkKHJlc3VsdHNfZGlj
dC5pdGVtcygpKToKKyAgICAgICAgICAgIHJ2LmFwcGVuZCgiJXMlcyIgJQorICAgICAgICAgICAg
ICAgICAgICAgIChrZXksICI6ICVzLyVzIiAlICh2YWx1ZSwgaXRlcmF0aW9ucykgaWYgdmFsdWUg
IT0gaXRlcmF0aW9ucyBlbHNlICIiKSkKICAgICBpZiB0b3RhbF9yZXN1bHRzIDwgaXRlcmF0aW9u
czoKICAgICAgICAgcnYuYXBwZW5kKCJNSVNTSU5HOiAlcy8lcyIgJSAoaXRlcmF0aW9ucyAtIHRv
dGFsX3Jlc3VsdHMsIGl0ZXJhdGlvbnMpKQogICAgIHJ2ID0gIiwgIi5qb2luKHJ2KQpAQCAtMTMz
LDYgKzE4OSwxNyBAQCBkZWYgd3JpdGVfaW5jb25zaXN0ZW50KGxvZywgaW5jb25zaXN0ZW50LCBp
dGVyYXRpb25zKToKICAgICB0YWJsZShbIlRlc3QiLCAiU3VidGVzdCIsICJSZXN1bHRzIiwgIk1l
c3NhZ2VzIl0sIHN0cmluZ3MsIGxvZykKIAogCitkZWYgd3JpdGVfc2xvd190ZXN0cyhsb2csIHNs
b3cpOgorICAgIGxvZygiIyMgU2xvdyB0ZXN0cyAjI1xuIikKKyAgICBzdHJpbmdzID0gWygKKyAg
ICAgICAgImAlc2AiICUgbWFya2Rvd25fYWRqdXN0KHRlc3QpLAorICAgICAgICAiYCVzYCIgJSBz
dGF0dXMsCisgICAgICAgICJgJS4wZmAiICUgZHVyYXRpb24sCisgICAgICAgICJgJS4wZmAiICUg
dGltZW91dCkKKyAgICAgICAgZm9yIHRlc3QsIHN0YXR1cywgZHVyYXRpb24sIHRpbWVvdXQgaW4g
c2xvd10KKyAgICB0YWJsZShbIlRlc3QiLCAiUmVzdWx0IiwgIkxvbmdlc3QgZHVyYXRpb24gKG1z
KSIsICJUaW1lb3V0IChtcykiXSwgc3RyaW5ncywgbG9nKQorCisKIGRlZiB3cml0ZV9yZXN1bHRz
KGxvZywgcmVzdWx0cywgaXRlcmF0aW9ucywgcHJfbnVtYmVyPU5vbmUsIHVzZV9kZXRhaWxzPUZh
bHNlKToKICAgICBsb2coIiMjIEFsbCByZXN1bHRzICMjXG4iKQogICAgIGlmIHVzZV9kZXRhaWxz
OgpAQCAtMjAyLDggKzI2OSw4IEBAIGRlZiBydW5fc3RlcChsb2dnZXIsIGl0ZXJhdGlvbnMsIHJl
c3RhcnRfYWZ0ZXJfaXRlcmF0aW9uLCBrd2FyZ3NfZXh0cmFzLCAqKmt3YXJnCiAgICAgbG9nZ2Vy
Ll9zdGF0ZS5zdWl0ZV9zdGFydGVkID0gRmFsc2UKIAogICAgIGxvZy5zZWVrKDApCi0gICAgcmVz
dWx0cywgaW5jb25zaXN0ZW50ID0gcHJvY2Vzc19yZXN1bHRzKGxvZywgaXRlcmF0aW9ucykKLSAg
ICByZXR1cm4gcmVzdWx0cywgaW5jb25zaXN0ZW50LCBpdGVyYXRpb25zCisgICAgcmVzdWx0cywg
aW5jb25zaXN0ZW50LCBzbG93ID0gcHJvY2Vzc19yZXN1bHRzKGxvZywgaXRlcmF0aW9ucykKKyAg
ICByZXR1cm4gcmVzdWx0cywgaW5jb25zaXN0ZW50LCBzbG93LCBpdGVyYXRpb25zCiAKIAogZGVm
IGdldF9zdGVwcyhsb2dnZXIsIHJlcGVhdF9sb29wLCByZXBlYXRfcmVzdGFydCwga3dhcmdzX2V4
dHJhcyk6CkBAIC0yNDIsNyArMzA5LDYgQEAgZGVmIHdyaXRlX3N1bW1hcnkobG9nZ2VyLCBzdGVw
X3Jlc3VsdHMsIGZpbmFsX3Jlc3VsdCk6CiAKICAgICBsb2dnZXIuaW5mbygnOjo6JykKIAotCiBk
ZWYgY2hlY2tfc3RhYmlsaXR5KGxvZ2dlciwgcmVwZWF0X2xvb3A9MTAsIHJlcGVhdF9yZXN0YXJ0
PTUsIGNoYW9zX21vZGU9VHJ1ZSwgbWF4X3RpbWU9Tm9uZSwKICAgICAgICAgICAgICAgICAgICAg
b3V0cHV0X3Jlc3VsdHM9VHJ1ZSwgKiprd2FyZ3MpOgogICAgIGt3YXJnc19leHRyYXMgPSBbe31d
CkBAIC0yNjQsNyArMzMwLDcgQEAgZGVmIGNoZWNrX3N0YWJpbGl0eShsb2dnZXIsIHJlcGVhdF9s
b29wPTEwLCByZXBlYXRfcmVzdGFydD01LCBjaGFvc19tb2RlPVRydWUsIG0KICAgICAgICAgbG9n
Z2VyLmluZm8oJzo6OicpCiAgICAgICAgIGxvZ2dlci5pbmZvKCc6OjogUnVubmluZyB0ZXN0IHZl
cmlmaWNhdGlvbiBzdGVwICIlcyIuLi4nICUgZGVzYykKICAgICAgICAgbG9nZ2VyLmluZm8oJzo6
OicpCi0gICAgICAgIHJlc3VsdHMsIGluY29uc2lzdGVudCwgaXRlcmF0aW9ucyA9IHN0ZXBfZnVu
YygqKmt3YXJncykKKyAgICAgICAgcmVzdWx0cywgaW5jb25zaXN0ZW50LCBzbG93LCBpdGVyYXRp
b25zID0gc3RlcF9mdW5jKCoqa3dhcmdzKQogICAgICAgICBpZiBvdXRwdXRfcmVzdWx0czoKICAg
ICAgICAgICAgIHdyaXRlX3Jlc3VsdHMobG9nZ2VyLmluZm8sIHJlc3VsdHMsIGl0ZXJhdGlvbnMp
CiAKQEAgLTI3NCw2ICszNDAsMTIgQEAgZGVmIGNoZWNrX3N0YWJpbGl0eShsb2dnZXIsIHJlcGVh
dF9sb29wPTEwLCByZXBlYXRfcmVzdGFydD01LCBjaGFvc19tb2RlPVRydWUsIG0KICAgICAgICAg
ICAgIHdyaXRlX3N1bW1hcnkobG9nZ2VyLCBzdGVwX3Jlc3VsdHMsICJGQUlMIikKICAgICAgICAg
ICAgIHJldHVybiAxCiAKKyAgICAgICAgaWYgc2xvdzoKKyAgICAgICAgICAgIHN0ZXBfcmVzdWx0
cy5hcHBlbmQoKGRlc2MsICJGQUlMIikpCisgICAgICAgICAgICB3cml0ZV9zbG93X3Rlc3RzKGxv
Z2dlci5pbmZvLCBzbG93KQorICAgICAgICAgICAgd3JpdGVfc3VtbWFyeShsb2dnZXIsIHN0ZXBf
cmVzdWx0cywgIkZBSUwiKQorICAgICAgICAgICAgcmV0dXJuIDEKKwogICAgICAgICBzdGVwX3Jl
c3VsdHMuYXBwZW5kKChkZXNjLCAiUEFTUyIpKQogCiAgICAgd3JpdGVfc3VtbWFyeShsb2dnZXIs
IHN0ZXBfcmVzdWx0cywgIlBBU1MiKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rkcml2
ZXItZXh0cmEuanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcwppbmRleCBlZjk2
MmQzNWYyMmI5MTVhNzQzNjNjYTUzYjEwYjNhMDVmNjMwOTUyLi4yNzhmMjI2ZGJkMmNlZmMyODRl
YmYzNDdjMzIwODllYTFmYTVhMjJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZl
ci1leHRyYS5qcworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGRyaXZlci1leHRyYS5qcwpAQCAtMyw2
ICszLDcgQEAKIChmdW5jdGlvbigpewogICAgIGxldCBwZW5kaW5nX3Jlc29sdmUgPSBudWxsOwog
ICAgIGxldCBwZW5kaW5nX3JlamVjdCA9IG51bGw7CisgICAgbGV0IHJlc3VsdCA9IG51bGw7CiAg
ICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoIm1lc3NhZ2UiLCBmdW5jdGlvbihldmVudCkgewog
ICAgICAgICBjb25zdCBkYXRhID0gZXZlbnQuZGF0YTsKIApAQCAtMTUsMTYgKzE2LDMzIEBACiAg
ICAgICAgIH0KIAogICAgICAgICBpZiAoZGF0YS5zdGF0dXMgPT09ICJzdWNjZXNzIikgewotICAg
ICAgICAgICAgcGVuZGluZ19yZXNvbHZlKCk7CisgICAgICAgICAgICByZXN1bHQgPSBKU09OLnBh
cnNlKGRhdGEubWVzc2FnZSkucmVzdWx0CisgICAgICAgICAgICBwZW5kaW5nX3Jlc29sdmUocmVz
dWx0KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIHBlbmRpbmdfcmVqZWN0KCk7CiAg
ICAgICAgIH0KICAgICB9KTsKIAorICAgIGNvbnN0IGdldF9mcmFtZSA9IGZ1bmN0aW9uKGVsZW1l
bnQsIGZyYW1lKSB7CisgICAgICAgIGxldCBmb3VuZEZyYW1lID0gZnJhbWU7CisgICAgICAgIGxl
dCBmcmFtZURvY3VtZW50ID0gZnJhbWUgPT0gd2luZG93ID8gd2luZG93LmRvY3VtZW50IDogZnJh
bWUuY29udGVudERvY3VtZW50OworICAgICAgICBpZiAoIWZyYW1lRG9jdW1lbnQuY29udGFpbnMo
ZWxlbWVudCkpIHsKKyAgICAgICAgICBmb3VuZEZyYW1lID0gbnVsbDsKKyAgICAgICAgICBsZXQg
ZnJhbWVzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlmcmFtZSIpOworICAgICAg
ICAgIGZvciAobGV0IGkgPSAwOyBpIDwgZnJhbWVzLmxlbmd0aDsgaSsrKSB7CisgICAgICAgICAg
ICBpZiAoZ2V0X2ZyYW1lKGVsZW1lbnQsIGZyYW1lc1tpXSkpIHsKKyAgICAgICAgICAgICAgZm91
bmRGcmFtZSA9IGZyYW1lc1tpXTsKKyAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHJldHVybiBmb3VuZEZyYW1lOworICAg
IH07CisKICAgICBjb25zdCBnZXRfc2VsZWN0b3IgPSBmdW5jdGlvbihlbGVtZW50KSB7CiAgICAg
ICAgIGxldCBzZWxlY3RvcjsKIAotICAgICAgICBpZiAoZWxlbWVudC5pZCAmJiBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZChlbGVtZW50LmlkKSA9PT0gZWxlbWVudCkgeworICAgICAgICBpZiAoZWxl
bWVudC5pZCkgewogICAgICAgICAgICAgY29uc3QgaWQgPSBlbGVtZW50LmlkOwogCiAgICAgICAg
ICAgICBzZWxlY3RvciA9ICIjIjsKQEAgLTUxLDEzICs2OSwxNSBAQAogICAgICAgICByZXR1cm4g
c2VsZWN0b3I7CiAgICAgfTsKIAorICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5pbl9h
dXRvbWF0aW9uID0gdHJ1ZTsKKwogICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5jbGlj
ayA9IGZ1bmN0aW9uKGVsZW1lbnQpIHsKICAgICAgICAgY29uc3Qgc2VsZWN0b3IgPSBnZXRfc2Vs
ZWN0b3IoZWxlbWVudCk7CiAgICAgICAgIGNvbnN0IHBlbmRpbmdfcHJvbWlzZSA9IG5ldyBQcm9t
aXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewogICAgICAgICAgICAgcGVuZGluZ19yZXNv
bHZlID0gcmVzb2x2ZTsKICAgICAgICAgICAgIHBlbmRpbmdfcmVqZWN0ID0gcmVqZWN0OwogICAg
ICAgICB9KTsKLSAgICAgICAgd2luZG93Lm9wZW5lci5wb3N0TWVzc2FnZSh7InR5cGUiOiAiYWN0
aW9uIiwgImFjdGlvbiI6ICJjbGljayIsICJzZWxlY3RvciI6IHNlbGVjdG9yfSwgIioiKTsKKyAg
ICAgICAgd2luZG93Ll9fd3B0cnVubmVyX21lc3NhZ2VfcXVldWUucHVzaCh7InR5cGUiOiAiYWN0
aW9uIiwgImFjdGlvbiI6ICJjbGljayIsICJzZWxlY3RvciI6IHNlbGVjdG9yfSk7CiAgICAgICAg
IHJldHVybiBwZW5kaW5nX3Byb21pc2U7CiAgICAgfTsKIApAQCAtNjcsNyArODcsMTA1IEBACiAg
ICAgICAgICAgICBwZW5kaW5nX3Jlc29sdmUgPSByZXNvbHZlOwogICAgICAgICAgICAgcGVuZGlu
Z19yZWplY3QgPSByZWplY3Q7CiAgICAgICAgIH0pOwotICAgICAgICB3aW5kb3cub3BlbmVyLnBv
c3RNZXNzYWdlKHsidHlwZSI6ICJhY3Rpb24iLCAiYWN0aW9uIjogInNlbmRfa2V5cyIsICJzZWxl
Y3RvciI6IHNlbGVjdG9yLCAia2V5cyI6IGtleXN9LCAiKiIpOworICAgICAgICB3aW5kb3cuX193
cHRydW5uZXJfbWVzc2FnZV9xdWV1ZS5wdXNoKHsidHlwZSI6ICJhY3Rpb24iLCAiYWN0aW9uIjog
InNlbmRfa2V5cyIsICJzZWxlY3RvciI6IHNlbGVjdG9yLCAia2V5cyI6IGtleXN9KTsKKyAgICAg
ICAgcmV0dXJuIHBlbmRpbmdfcHJvbWlzZTsKKyAgICB9OworCisgICAgd2luZG93LnRlc3RfZHJp
dmVyX2ludGVybmFsLmFjdGlvbl9zZXF1ZW5jZSA9IGZ1bmN0aW9uKGFjdGlvbnMpIHsKKyAgICAg
ICAgY29uc3QgcGVuZGluZ19wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwg
cmVqZWN0KSB7CisgICAgICAgICAgICBwZW5kaW5nX3Jlc29sdmUgPSByZXNvbHZlOworICAgICAg
ICAgICAgcGVuZGluZ19yZWplY3QgPSByZWplY3Q7CisgICAgICAgIH0pOworICAgICAgICBmb3Ig
KGxldCBhY3Rpb25TZXF1ZW5jZSBvZiBhY3Rpb25zKSB7CisgICAgICAgICAgICBpZiAoYWN0aW9u
U2VxdWVuY2UudHlwZSA9PSAicG9pbnRlciIpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBh
Y3Rpb24gb2YgYWN0aW9uU2VxdWVuY2UuYWN0aW9ucykgeworICAgICAgICAgICAgICAgICAgICAv
LyBUaGUgb3JpZ2luIG9mIGVhY2ggYWN0aW9uIGNhbiBvbmx5IGJlIGFuIGVsZW1lbnQgb3IgYSBz
dHJpbmcgb2YgYSB2YWx1ZSAidmlld3BvcnQiIG9yICJwb2ludGVyIi4KKyAgICAgICAgICAgICAg
ICAgICAgaWYgKGFjdGlvbi50eXBlID09ICJwb2ludGVyTW92ZSIgJiYgdHlwZW9mKGFjdGlvbi5v
cmlnaW4pICE9ICdzdHJpbmcnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBsZXQgZnJhbWUg
PSBnZXRfZnJhbWUoYWN0aW9uLm9yaWdpbiwgd2luZG93KTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGlmIChmcmFtZSAhPSBudWxsKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGZyYW1lID09IHdpbmRvdykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9u
LmZyYW1lID0ge2ZyYW1lOiAid2luZG93In07CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24uZnJhbWUgPSB7ZnJh
bWU6IGZyYW1lfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb24ub3JpZ2luID0g
e3NlbGVjdG9yOiBnZXRfc2VsZWN0b3IoYWN0aW9uLm9yaWdpbil9OworICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAg
ICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIHdpbmRvdy5fX3dwdHJ1bm5lcl9tZXNzYWdl
X3F1ZXVlLnB1c2goeyJ0eXBlIjogImFjdGlvbiIsICJhY3Rpb24iOiAiYWN0aW9uX3NlcXVlbmNl
IiwgImFjdGlvbnMiOiBhY3Rpb25zfSk7CisgICAgICAgIHJldHVybiBwZW5kaW5nX3Byb21pc2U7
CisgICAgfTsKKworICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5nZW5lcmF0ZV90ZXN0
X3JlcG9ydCA9IGZ1bmN0aW9uKG1lc3NhZ2UpIHsKKyAgICAgICAgY29uc3QgcGVuZGluZ19wcm9t
aXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAg
ICBwZW5kaW5nX3Jlc29sdmUgPSByZXNvbHZlOworICAgICAgICAgICAgcGVuZGluZ19yZWplY3Qg
PSByZWplY3Q7CisgICAgICAgIH0pOworICAgICAgICB3aW5kb3cuX193cHRydW5uZXJfbWVzc2Fn
ZV9xdWV1ZS5wdXNoKHsidHlwZSI6ICJhY3Rpb24iLCAiYWN0aW9uIjogImdlbmVyYXRlX3Rlc3Rf
cmVwb3J0IiwgIm1lc3NhZ2UiOiBtZXNzYWdlfSk7CisgICAgICAgIHJldHVybiBwZW5kaW5nX3By
b21pc2U7CisgICAgfTsKKworICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5hZGRfdmly
dHVhbF9hdXRoZW50aWNhdG9yID0gZnVuY3Rpb24oY29uZmlnKSB7CisgICAgICAgIGNvbnN0IHBl
bmRpbmdfcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgcGVuZGluZ19yZXNvbHZlID0gcmVzb2x2ZTsKKyAgICAgICAgICAgIHBlbmRp
bmdfcmVqZWN0ID0gcmVqZWN0OworICAgICAgICB9KTsKKyAgICAgICAgd2luZG93Ll9fd3B0cnVu
bmVyX21lc3NhZ2VfcXVldWUucHVzaCh7InR5cGUiOiAiYWN0aW9uIiwgImFjdGlvbiI6ICJhZGRf
dmlydHVhbF9hdXRoZW50aWNhdG9yIiwgY29uZmlnfSk7CisgICAgICAgIHJldHVybiBwZW5kaW5n
X3Byb21pc2U7CisgICAgfTsKKworICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5yZW1v
dmVfdmlydHVhbF9hdXRoZW50aWNhdG9yID0gZnVuY3Rpb24oYXV0aGVudGljYXRvcl9pZCkgewor
ICAgICAgICBjb25zdCBwZW5kaW5nX3Byb21pc2UgPSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNv
bHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIHBlbmRpbmdfcmVzb2x2ZSA9IHJlc29sdmU7Cisg
ICAgICAgICAgICBwZW5kaW5nX3JlamVjdCA9IHJlamVjdDsKKyAgICAgICAgfSk7CisgICAgICAg
IHdpbmRvdy5fX3dwdHJ1bm5lcl9tZXNzYWdlX3F1ZXVlLnB1c2goeyJ0eXBlIjogImFjdGlvbiIs
ICJhY3Rpb24iOiAicmVtb3ZlX3ZpcnR1YWxfYXV0aGVudGljYXRvciIsIGF1dGhlbnRpY2F0b3Jf
aWR9KTsKKyAgICAgICAgcmV0dXJuIHBlbmRpbmdfcHJvbWlzZTsKKyAgICB9OworCisgICAgd2lu
ZG93LnRlc3RfZHJpdmVyX2ludGVybmFsLmFkZF9jcmVkZW50aWFsID0gZnVuY3Rpb24oYXV0aGVu
dGljYXRvcl9pZCwgY3JlZGVudGlhbCkgeworICAgICAgICBjb25zdCBwZW5kaW5nX3Byb21pc2Ug
PSBuZXcgUHJvbWlzZShmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIHBl
bmRpbmdfcmVzb2x2ZSA9IHJlc29sdmU7CisgICAgICAgICAgICBwZW5kaW5nX3JlamVjdCA9IHJl
amVjdDsKKyAgICAgICAgfSk7CisgICAgICAgIHdpbmRvdy5fX3dwdHJ1bm5lcl9tZXNzYWdlX3F1
ZXVlLnB1c2goeyJ0eXBlIjogImFjdGlvbiIsICJhY3Rpb24iOiAiYWRkX2NyZWRlbnRpYWwiLCBh
dXRoZW50aWNhdG9yX2lkLCBjcmVkZW50aWFsfSk7CisgICAgICAgIHJldHVybiBwZW5kaW5nX3By
b21pc2U7CisgICAgfTsKKworICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5nZXRfY3Jl
ZGVudGlhbHMgPSBmdW5jdGlvbihhdXRoZW50aWNhdG9yX2lkKSB7CisgICAgICAgIGNvbnN0IHBl
bmRpbmdfcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVjdCkgewor
ICAgICAgICAgICAgcGVuZGluZ19yZXNvbHZlID0gcmVzb2x2ZTsKKyAgICAgICAgICAgIHBlbmRp
bmdfcmVqZWN0ID0gcmVqZWN0OworICAgICAgICB9KTsKKyAgICAgICAgd2luZG93Ll9fd3B0cnVu
bmVyX21lc3NhZ2VfcXVldWUucHVzaCh7InR5cGUiOiAiYWN0aW9uIiwgImFjdGlvbiI6ICJnZXRf
Y3JlZGVudGlhbHMiLCBhdXRoZW50aWNhdG9yX2lkfSk7CisgICAgICAgIHJldHVybiBwZW5kaW5n
X3Byb21pc2U7CisgICAgfTsKKworICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5yZW1v
dmVfY3JlZGVudGlhbCA9IGZ1bmN0aW9uKGF1dGhlbnRpY2F0b3JfaWQsIGNyZWRlbnRpYWxfaWQp
IHsKKyAgICAgICAgY29uc3QgcGVuZGluZ19wcm9taXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24o
cmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBwZW5kaW5nX3Jlc29sdmUgPSByZXNvbHZl
OworICAgICAgICAgICAgcGVuZGluZ19yZWplY3QgPSByZWplY3Q7CisgICAgICAgIH0pOworICAg
ICAgICB3aW5kb3cuX193cHRydW5uZXJfbWVzc2FnZV9xdWV1ZS5wdXNoKHsidHlwZSI6ICJhY3Rp
b24iLCAiYWN0aW9uIjogInJlbW92ZV9jcmVkZW50aWFsIiwgYXV0aGVudGljYXRvcl9pZCwgY3Jl
ZGVudGlhbF9pZH0pOworICAgICAgICByZXR1cm4gcGVuZGluZ19wcm9taXNlOworICAgIH07CisK
KyAgICB3aW5kb3cudGVzdF9kcml2ZXJfaW50ZXJuYWwucmVtb3ZlX2FsbF9jcmVkZW50aWFscyA9
IGZ1bmN0aW9uKGF1dGhlbnRpY2F0b3JfaWQpIHsKKyAgICAgICAgY29uc3QgcGVuZGluZ19wcm9t
aXNlID0gbmV3IFByb21pc2UoZnVuY3Rpb24ocmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAg
ICBwZW5kaW5nX3Jlc29sdmUgPSByZXNvbHZlOworICAgICAgICAgICAgcGVuZGluZ19yZWplY3Qg
PSByZWplY3Q7CisgICAgICAgIH0pOworICAgICAgICB3aW5kb3cuX193cHRydW5uZXJfbWVzc2Fn
ZV9xdWV1ZS5wdXNoKHsidHlwZSI6ICJhY3Rpb24iLCAiYWN0aW9uIjogInJlbW92ZV9hbGxfY3Jl
ZGVudGlhbHMiLCBhdXRoZW50aWNhdG9yX2lkfSk7CisgICAgICAgIHJldHVybiBwZW5kaW5nX3By
b21pc2U7CisgICAgfTsKKworICAgIHdpbmRvdy50ZXN0X2RyaXZlcl9pbnRlcm5hbC5zZXRfdXNl
cl92ZXJpZmllZCA9IGZ1bmN0aW9uKGF1dGhlbnRpY2F0b3JfaWQsIHV2KSB7CisgICAgICAgIGNv
bnN0IHBlbmRpbmdfcHJvbWlzZSA9IG5ldyBQcm9taXNlKGZ1bmN0aW9uKHJlc29sdmUsIHJlamVj
dCkgeworICAgICAgICAgICAgcGVuZGluZ19yZXNvbHZlID0gcmVzb2x2ZTsKKyAgICAgICAgICAg
IHBlbmRpbmdfcmVqZWN0ID0gcmVqZWN0OworICAgICAgICB9KTsKKyAgICAgICAgd2luZG93Ll9f
d3B0cnVubmVyX21lc3NhZ2VfcXVldWUucHVzaCh7InR5cGUiOiAiYWN0aW9uIiwgImFjdGlvbiI6
ICJzZXRfdXNlcl92ZXJpZmllZCIsIGF1dGhlbnRpY2F0b3JfaWQsIHV2fSk7CiAgICAgICAgIHJl
dHVybiBwZW5kaW5nX3Byb21pc2U7CiAgICAgfTsKIH0pKCk7CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQtc2Vydm8uanMgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5l
c3NyZXBvcnQtc2Vydm8uanMKaW5kZXggYjY3MmFlYTlhMjU0MGJmMTQ0NmEyM2RkYjI4OGM5MzAw
OWJiMjZiYS4uYTEwYjY5ZGY1NTA0ZmFiODc1MTQ3YWYyNmQ5MjVlYmNjZTUxZWMwMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVwb3J0LXNlcnZvLmpzCisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC1zZXJ2by5qcwpAQCAtNCw3ICs0LDcgQEAgc3RhcnRf
bG9jLmhyZWYgPSBsb2NhdGlvbi5ocmVmOwogc2V0dXAocHJvcHMpOwogCiBhZGRfY29tcGxldGlv
bl9jYWxsYmFjayhmdW5jdGlvbiAodGVzdHMsIGhhcm5lc3Nfc3RhdHVzKSB7Ci0gICAgdmFyIGlk
ID0gc3RhcnRfbG9jLnBhdGhuYW1lICsgc3RhcnRfbG9jLnNlYXJjaCArIHN0YXJ0X2xvYy5oYXNo
OworICAgIHZhciBpZCA9IGRlY29kZVVSSUNvbXBvbmVudChzdGFydF9sb2MucGF0aG5hbWUpICsg
ZGVjb2RlVVJJQ29tcG9uZW50KHN0YXJ0X2xvYy5zZWFyY2gpICsgZGVjb2RlVVJJQ29tcG9uZW50
KHN0YXJ0X2xvYy5oYXNoKTsKICAgICBjb25zb2xlLmxvZygiQUxFUlQ6IFJFU1VMVDogIiArIEpT
T04uc3RyaW5naWZ5KFsKICAgICAgICAgaWQsCiAgICAgICAgIGhhcm5lc3Nfc3RhdHVzLnN0YXR1
cywKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC5qcyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci90ZXN0aGFybmVzc3JlcG9ydC5qcwppbmRleCA2MmRkYWZmYjQ0M2M5NDUwNTM4MzA4
MzkyM2RjMTNmY2IxY2Y1NjYwLi4yOWZjMGU5ODczMTg4MjIzYWMzNzgzYThjNjIyYmJiZTIxZWM1
YWY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdGhhcm5lc3NyZXBvcnQuanMKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVwb3J0LmpzCkBAIC0xLDEzICsxLDgzIEBACi12YXIg
cHJvcHMgPSB7b3V0cHV0OiUob3V0cHV0KWQsCi0gICAgICAgICAgICAgZXhwbGljaXRfdGltZW91
dDogdHJ1ZSwKLSAgICAgICAgICAgICBtZXNzYWdlX2V2ZW50czogWyJjb21wbGV0aW9uIl19Owor
Y2xhc3MgTWVzc2FnZVF1ZXVlIHsKKyAgY29uc3RydWN0b3IoKSB7CisgICAgdGhpcy5fcXVldWUg
PSBbXTsKKyAgfQogCi1pZiAod2luZG93Lm9wZW5lciAmJiAidGltZW91dF9tdWx0aXBsaWVyIiBp
biB3aW5kb3cub3BlbmVyKSB7Ci0gICAgcHJvcHNbInRpbWVvdXRfbXVsdGlwbGllciJdID0gd2lu
ZG93Lm9wZW5lci50aW1lb3V0X211bHRpcGxpZXI7Ci19CisgIHB1c2goaXRlbSkgeworICAgIHRo
aXMuX3F1ZXVlLnB1c2goaXRlbSk7CisgICAgX193cHRydW5uZXJfcHJvY2Vzc19uZXh0X2V2ZW50
KCk7CisgIH0KIAotaWYgKHdpbmRvdy5vcGVuZXIgJiYgd2luZG93Lm9wZW5lci5leHBsaWNpdF90
aW1lb3V0KSB7Ci0gICAgcHJvcHNbImV4cGxpY2l0X3RpbWVvdXQiXSA9IHdpbmRvdy5vcGVuZXIu
ZXhwbGljaXRfdGltZW91dDsKKyAgc2hpZnQoKSB7CisgICAgcmV0dXJuIHRoaXMuX3F1ZXVlLnNo
aWZ0KCk7CisgIH0KIH0KIAotc2V0dXAocHJvcHMpOword2luZG93Ll9fd3B0cnVubmVyX3Rlc3Rk
cml2ZXJfY2FsbGJhY2sgPSBudWxsOword2luZG93Ll9fd3B0cnVubmVyX21lc3NhZ2VfcXVldWUg
PSBuZXcgTWVzc2FnZVF1ZXVlKCk7Cit3aW5kb3cuX193cHRydW5uZXJfdXJsID0gbnVsbDsKKwor
d2luZG93Ll9fd3B0cnVubmVyX3Byb2Nlc3NfbmV4dF9ldmVudCA9IGZ1bmN0aW9uKCkgeworICAv
KiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIG5leHQgdGVzdGRyaXZlciBldmVudC4gVGhlIHBy
ZXNlbmNlIG9mCisgICAgIHdpbmRvdy50ZXN0ZHJpdmVyX2NhbGxiYWNrIGlzIHVzZWQgYXMgYSBz
d2l0Y2g7IHdoZW4gdGhhdCBmdW5jdGlvbgorICAgICBpcyBwcmVzZW50IHdlIGFyZSBhYmxlIHRv
IGhhbmRsZSB0aGUgbmV4dCBldmVudCBhbmQgd2hlbiBpcyBpcyBub3QKKyAgICAgcHJlc2VudCB3
ZSBtdXN0IHdhaXQuIFRoZXJlZm9yZSB0byBkcml2ZSB0aGUgZXZlbnQgcHJvY2Vzc2luZywgdGhp
cworICAgICBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZCBpbiB0d28gY2lyY3Vtc3RhbmNlczoKKyAg
ICAgICAqIEV2ZXJ5IHRpbWUgdGhlcmUgaXMgYSBuZXcgZXZlbnQgdGhhdCB3ZSBtYXkgYmUgYWJs
ZSB0byBoYW5kbGUKKyAgICAgICAqIEV2ZXJ5IHRpbWUgd2Ugc2V0IHRoZSBjYWxsYmFjayBmdW5j
dGlvbgorICAgICBUaGlzIGZ1bmN0aW9uIHVuc2V0cyB0aGUgY2FsbGJhY2ssIHNvIG5vIGZ1cnRo
ZXIgdGVzdGRyaXZlciBhY3Rpb25zCisgICAgIHdpbGwgYmUgcnVuIHVudGlsIGl0IGlzIHJlc2V0
LCB3aGljaCB3cHRydW5uZXIgZG9lcyBhZnRlciBpdCBoYXMKKyAgICAgY29tcGxldGVkIGhhbmRs
aW5nIHRoZSBjdXJyZW50IGFjdGlvbi4KKyAgICovCisKKyAgaWYgKCF3aW5kb3cuX193cHRydW5u
ZXJfdGVzdGRyaXZlcl9jYWxsYmFjaykgeworICAgIHJldHVybjsKKyAgfQorICB2YXIgZGF0YSA9
IHdpbmRvdy5fX3dwdHJ1bm5lcl9tZXNzYWdlX3F1ZXVlLnNoaWZ0KCk7CisgIGlmICghZGF0YSkg
eworICAgIHJldHVybjsKKyAgfQorCisgIHZhciBwYXlsb2FkID0gdW5kZWZpbmVkOworCisgIHN3
aXRjaChkYXRhLnR5cGUpIHsKKyAgY2FzZSAiY29tcGxldGUiOgorICAgIHZhciB0ZXN0cyA9IGRh
dGEudGVzdHM7CisgICAgdmFyIHN0YXR1cyA9IGRhdGEuc3RhdHVzOworCisgICAgdmFyIHN1YnRl
c3RfcmVzdWx0cyA9IHRlc3RzLm1hcChmdW5jdGlvbih4KSB7CisgICAgICByZXR1cm4gW3gubmFt
ZSwgeC5zdGF0dXMsIHgubWVzc2FnZSwgeC5zdGFja107CisgICAgfSk7CisgICAgcGF5bG9hZCA9
IFtzdGF0dXMuc3RhdHVzLAorICAgICAgICAgICAgICAgc3RhdHVzLm1lc3NhZ2UsCisgICAgICAg
ICAgICAgICBzdGF0dXMuc3RhY2ssCisgICAgICAgICAgICAgICBzdWJ0ZXN0X3Jlc3VsdHNdOwor
ICAgIGNsZWFyVGltZW91dCh3aW5kb3cuX193cHRydW5uZXJfdGltZXIpOworICAgIGJyZWFrOwor
ICBjYXNlICJhY3Rpb24iOgorICAgIHBheWxvYWQgPSBkYXRhOworICAgIGJyZWFrOworICBkZWZh
dWx0OgorICAgIHJldHVybjsKKyAgfQorICB2YXIgY2FsbGJhY2sgPSB3aW5kb3cuX193cHRydW5u
ZXJfdGVzdGRyaXZlcl9jYWxsYmFjazsKKyAgd2luZG93Ll9fd3B0cnVubmVyX3Rlc3Rkcml2ZXJf
Y2FsbGJhY2sgPSBudWxsOworICBjYWxsYmFjayhbX193cHRydW5uZXJfdXJsLCBkYXRhLnR5cGUs
IHBheWxvYWRdKTsKK307CisKKyhmdW5jdGlvbigpIHsKKyAgdmFyIHByb3BzID0ge291dHB1dDog
JShvdXRwdXQpZCwKKyAgICAgICAgICAgICAgIHRpbWVvdXRfbXVsdGlwbGllcjogJSh0aW1lb3V0
X211bHRpcGxpZXIpcywKKyAgICAgICAgICAgICAgIGV4cGxpY2l0X3RpbWVvdXQ6ICUoZXhwbGlj
aXRfdGltZW91dClzLAorICAgICAgICAgICAgICAgbWVzc2FnZV9ldmVudHM6IFsiY29tcGxldGlv
biJdfTsKKworICBhZGRfY29tcGxldGlvbl9jYWxsYmFjayhmdW5jdGlvbih0ZXN0cywgaGFybmVz
c19zdGF0dXMpIHsKKyAgICBfX3dwdHJ1bm5lcl9tZXNzYWdlX3F1ZXVlLnB1c2goeworICAgICAg
InR5cGUiOiAiY29tcGxldGUiLAorICAgICAgInRlc3RzIjogdGVzdHMsCisgICAgICAic3RhdHVz
IjogaGFybmVzc19zdGF0dXN9KTsKKyAgICBfX3dwdHJ1bm5lcl9wcm9jZXNzX25leHRfZXZlbnQo
KTsKKyAgfSk7CisgIHNldHVwKHByb3BzKTsKK30pKCk7CisKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0bG9hZGVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rsb2FkZXIucHkKaW5kZXggMDE4
ZGMxMDM5ODNkZmVmMjIyZWQ3Y2M2YTRmOGZlNTI4OGFkZDI1Ni4uZmE1NGNhMzYxNTc2MzE4Y2Iz
NWVjNzE2YTFhMTU5YmRiNTMyZTZjOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rsb2Fk
ZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rsb2FkZXIucHkKQEAgLTEsMjkgKzEsMjYgQEAK
IGltcG9ydCBoYXNobGliCi1pbXBvcnQganNvbgogaW1wb3J0IG9zCi1pbXBvcnQgdXJscGFyc2UK
K2Zyb20gc2l4Lm1vdmVzLnVybGxpYi5wYXJzZSBpbXBvcnQgdXJsc3BsaXQKIGZyb20gYWJjIGlt
cG9ydCBBQkNNZXRhLCBhYnN0cmFjdG1ldGhvZAotZnJvbSBRdWV1ZSBpbXBvcnQgRW1wdHkKLWZy
b20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0LCBPcmRlcmVkRGljdCwgZGVxdWUKK2Zy
b20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBFbXB0eQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg
ZGVmYXVsdGRpY3QsIGRlcXVlCiBmcm9tIG11bHRpcHJvY2Vzc2luZyBpbXBvcnQgUXVldWUKIAot
aW1wb3J0IG1hbmlmZXN0aW5jbHVkZQotaW1wb3J0IG1hbmlmZXN0ZXhwZWN0ZWQKLWltcG9ydCB3
cHR0ZXN0Citmcm9tIC4gaW1wb3J0IG1hbmlmZXN0aW5jbHVkZQorZnJvbSAuIGltcG9ydCBtYW5p
ZmVzdGV4cGVjdGVkCitmcm9tIC4gaW1wb3J0IHdwdHRlc3QKIGZyb20gbW96bG9nIGltcG9ydCBz
dHJ1Y3R1cmVkCiAKIG1hbmlmZXN0ID0gTm9uZQogbWFuaWZlc3RfdXBkYXRlID0gTm9uZQogZG93
bmxvYWRfZnJvbV9naXRodWIgPSBOb25lCi1tYW5pZmVzdF9sb2cgPSBOb25lCiAKIGRlZiBkb19k
ZWxheWVkX2ltcG9ydHMoKToKICAgICAjIFRoaXMgcmVsaWVzIG9uIGFuIGFscmVhZHkgbG9hZGVk
IG1vZHVsZSBoYXZpbmcgc2V0IHRoZSBzeXMucGF0aCBjb3JyZWN0bHkgOigKLSAgICBnbG9iYWwg
bWFuaWZlc3QsIG1hbmlmZXN0X3VwZGF0ZSwgZG93bmxvYWRfZnJvbV9naXRodWIsIG1hbmlmZXN0
X2xvZworICAgIGdsb2JhbCBtYW5pZmVzdCwgbWFuaWZlc3RfdXBkYXRlLCBkb3dubG9hZF9mcm9t
X2dpdGh1YgogICAgIGZyb20gbWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0CiAgICAgZnJvbSBtYW5p
ZmVzdCBpbXBvcnQgdXBkYXRlIGFzIG1hbmlmZXN0X3VwZGF0ZQogICAgIGZyb20gbWFuaWZlc3Qu
ZG93bmxvYWQgaW1wb3J0IGRvd25sb2FkX2Zyb21fZ2l0aHViCi0gICAgZnJvbSBtYW5pZmVzdCBp
bXBvcnQgbG9nIGFzIG1hbmlmZXN0X2xvZwogCiAKIGNsYXNzIFRlc3RDaHVua2VyKG9iamVjdCk6
CkBAIC03MSwyODUgKzY4LDIwIEBAIGNsYXNzIERpcmVjdG9yeUhhc2hDaHVua2VyKFRlc3RDaHVu
a2VyKToKICAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMK
IAogCi1jbGFzcyBFcXVhbFRpbWVDaHVua2VyKFRlc3RDaHVua2VyKToKLSAgICBkZWYgX2dyb3Vw
X2J5X2RpcmVjdG9yeShzZWxmLCBtYW5pZmVzdF9pdGVtcyk6Ci0gICAgICAgICIiIlNwbGl0IHRo
ZSBsaXN0IG9mIG1hbmlmZXN0IGl0ZW1zIGludG8gYSBvcmRlcmVkIGRpY3QgdGhhdCBncm91cHMg
dGVzdHMgaW4KLSAgICAgICAgc28gdGhhdCBhbnl0aGluZyBpbiB0aGUgc2FtZSBzdWJkaXJlY3Rv
cnkgYmV5b25kIGEgZGVwdGggb2YgMyBpcyBpbiB0aGUgc2FtZQotICAgICAgICBncm91cC4gU28g
YWxsIHRlc3RzIGluIGEvYi9jLCBhL2IvYy9kIGFuZCBhL2IvYy9lIHdpbGwgYmUgZ3JvdXBlZCB0
b2dldGhlcgotICAgICAgICBhbmQgc2VwYXJhdGUgdG8gdGVzdHMgaW4gYS9iL2YKLQotICAgICAg
ICBSZXR1cm5zOiB0dXBsZSAob3JkZXJlZCBkaWN0IG9mIHt0ZXN0X2RpcjogUGF0aERhdGF9LCB0
b3RhbCBlc3RpbWF0ZWQgcnVudGltZSkKLSAgICAgICAgIiIiCi0KLSAgICAgICAgY2xhc3MgUGF0
aERhdGEob2JqZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKLSAg
ICAgICAgICAgICAgICBzZWxmLnBhdGggPSBwYXRoCi0gICAgICAgICAgICAgICAgc2VsZi50aW1l
ID0gMAotICAgICAgICAgICAgICAgIHNlbGYudGVzdHMgPSBbXQotCi0gICAgICAgIGJ5X2RpciA9
IE9yZGVyZWREaWN0KCkKLSAgICAgICAgdG90YWxfdGltZSA9IDAKLQotICAgICAgICBmb3IgaSwg
KHRlc3RfdHlwZSwgdGVzdF9wYXRoLCB0ZXN0cykgaW4gZW51bWVyYXRlKG1hbmlmZXN0X2l0ZW1z
KToKLSAgICAgICAgICAgIHRlc3RfZGlyID0gdHVwbGUob3MucGF0aC5zcGxpdCh0ZXN0X3BhdGgp
WzBdLnNwbGl0KG9zLnBhdGguc2VwKVs6M10pCi0KLSAgICAgICAgICAgIGlmIHRlc3RfZGlyIG5v
dCBpbiBieV9kaXI6Ci0gICAgICAgICAgICAgICAgYnlfZGlyW3Rlc3RfZGlyXSA9IFBhdGhEYXRh
KHRlc3RfZGlyKQotCi0gICAgICAgICAgICBkYXRhID0gYnlfZGlyW3Rlc3RfZGlyXQotICAgICAg
ICAgICAgdGltZSA9IHN1bSh0ZXN0LmRlZmF1bHRfdGltZW91dCBpZiB0ZXN0LnRpbWVvdXQgIT0K
LSAgICAgICAgICAgICAgICAgICAgICAgImxvbmciIGVsc2UgdGVzdC5sb25nX3RpbWVvdXQgZm9y
IHRlc3QgaW4gdGVzdHMpCi0gICAgICAgICAgICBkYXRhLnRpbWUgKz0gdGltZQotICAgICAgICAg
ICAgdG90YWxfdGltZSArPSB0aW1lCi0gICAgICAgICAgICBkYXRhLnRlc3RzLmFwcGVuZCgodGVz
dF90eXBlLCB0ZXN0X3BhdGgsIHRlc3RzKSkKLQotICAgICAgICByZXR1cm4gYnlfZGlyLCB0b3Rh
bF90aW1lCi0KLSAgICBkZWYgX21heWJlX3JlbW92ZShzZWxmLCBjaHVua3MsIGksIGRpcmVjdGlv
bik6Ci0gICAgICAgICIiIlRyaWFsIHJlbW92aW5nIGEgY2h1bmsgZnJvbSBvbmUgY2h1bmsgdG8g
YW4gYWRqYWNlbnQgb25lLgotCi0gICAgICAgIDpwYXJhbSBjaHVua3M6IC0gdGhlIGxpc3Qgb2Yg
YWxsIGNodW5rcwotICAgICAgICA6cGFyYW0gaTogLSB0aGUgY2h1bmsgaW5kZXggaW4gdGhlIGxp
c3Qgb2YgY2h1bmtzIHRvIHRyeSByZW1vdmluZyBmcm9tCi0gICAgICAgIDpwYXJhbSBkaXJlY3Rp
b246IGVpdGhlciAibmV4dCIgaWYgd2UgYXJlIGdvaW5nIHRvIG1vdmUgZnJvbSB0aGUgZW5kIHRv
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdWJzZXF1ZW50IGNodW5rLCBvciAicHJl
diIgaWYgd2UgYXJlIGdvaW5nIHRvIG1vdmUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgZnJv
bSB0aGUgc3RhcnQgaW50byB0aGUgcHJldmlvdXMgY2h1bmsuCi0KLSAgICAgICAgOnJldHVybnMg
Ym9vbDogRGlkIGEgY2h1bmsgZ2V0IG1vdmVkPyIiIgotICAgICAgICBzb3VyY2VfY2h1bmsgPSBj
aHVua3NbaV0KLSAgICAgICAgaWYgZGlyZWN0aW9uID09ICJuZXh0IjoKLSAgICAgICAgICAgIHRh
cmdldF9jaHVuayA9IGNodW5rc1tpKzFdCi0gICAgICAgICAgICBwYXRoX2luZGV4ID0gLTEKLSAg
ICAgICAgICAgIG1vdmVfZnVuYyA9IGxhbWJkYTogdGFyZ2V0X2NodW5rLmFwcGVuZGxlZnQoc291
cmNlX2NodW5rLnBvcCgpKQotICAgICAgICBlbGlmIGRpcmVjdGlvbiA9PSAicHJldiI6Ci0gICAg
ICAgICAgICB0YXJnZXRfY2h1bmsgPSBjaHVua3NbaS0xXQotICAgICAgICAgICAgcGF0aF9pbmRl
eCA9IDAKLSAgICAgICAgICAgIG1vdmVfZnVuYyA9IGxhbWJkYTogdGFyZ2V0X2NodW5rLmFwcGVu
ZChzb3VyY2VfY2h1bmsucG9wbGVmdCgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiVW5leHBlY3RlZCBtb3ZlIGRpcmVjdGlvbiAlcyIgJSBkaXJlY3Rpb24p
Ci0KLSAgICAgICAgcmV0dXJuIHNlbGYuX21heWJlX21vdmUoc291cmNlX2NodW5rLCB0YXJnZXRf
Y2h1bmssIHBhdGhfaW5kZXgsIG1vdmVfZnVuYykKLQotICAgIGRlZiBfbWF5YmVfYWRkKHNlbGYs
IGNodW5rcywgaSwgZGlyZWN0aW9uKToKLSAgICAgICAgIiIiVHJpYWwgYWRkaW5nIGEgY2h1bmsg
ZnJvbSBvbmUgY2h1bmsgdG8gYW4gYWRqYWNlbnQgb25lLgotCi0gICAgICAgIDpwYXJhbSBjaHVu
a3M6IC0gdGhlIGxpc3Qgb2YgYWxsIGNodW5rcwotICAgICAgICA6cGFyYW0gaTogLSB0aGUgY2h1
bmsgaW5kZXggaW4gdGhlIGxpc3Qgb2YgY2h1bmtzIHRvIHRyeSBhZGRpbmcgdG8KLSAgICAgICAg
OnBhcmFtIGRpcmVjdGlvbjogZWl0aGVyICJuZXh0IiBpZiB3ZSBhcmUgZ29pbmcgdG8gcmVtb3Zl
IGZyb20gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdWJzZXF1ZW50IGNodW5r
LCBvciAicHJldiIgaWYgd2UgYXJlIGdvaW5nIHRvIHJlbW92ZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICBmcm9tIHRoZSB0aGUgcHJldmlvdXMgY2h1bmsuCi0KLSAgICAgICAgOnJldHVybnMg
Ym9vbDogRGlkIGEgY2h1bmsgZ2V0IG1vdmVkPyIiIgotICAgICAgICB0YXJnZXRfY2h1bmsgPSBj
aHVua3NbaV0KLSAgICAgICAgaWYgZGlyZWN0aW9uID09ICJuZXh0IjoKLSAgICAgICAgICAgIHNv
dXJjZV9jaHVuayA9IGNodW5rc1tpKzFdCi0gICAgICAgICAgICBwYXRoX2luZGV4ID0gMAotICAg
ICAgICAgICAgbW92ZV9mdW5jID0gbGFtYmRhOiB0YXJnZXRfY2h1bmsuYXBwZW5kKHNvdXJjZV9j
aHVuay5wb3BsZWZ0KCkpCi0gICAgICAgIGVsaWYgZGlyZWN0aW9uID09ICJwcmV2IjoKLSAgICAg
ICAgICAgIHNvdXJjZV9jaHVuayA9IGNodW5rc1tpLTFdCi0gICAgICAgICAgICBwYXRoX2luZGV4
ID0gLTEKLSAgICAgICAgICAgIG1vdmVfZnVuYyA9IGxhbWJkYTogdGFyZ2V0X2NodW5rLmFwcGVu
ZGxlZnQoc291cmNlX2NodW5rLnBvcCgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFp
c2UgVmFsdWVFcnJvcigiVW5leHBlY3RlZCBtb3ZlIGRpcmVjdGlvbiAlcyIgJSBkaXJlY3Rpb24p
Ci0KLSAgICAgICAgcmV0dXJuIHNlbGYuX21heWJlX21vdmUoc291cmNlX2NodW5rLCB0YXJnZXRf
Y2h1bmssIHBhdGhfaW5kZXgsIG1vdmVfZnVuYykKLQotICAgIGRlZiBfbWF5YmVfbW92ZShzZWxm
LCBzb3VyY2VfY2h1bmssIHRhcmdldF9jaHVuaywgcGF0aF9pbmRleCwgbW92ZV9mdW5jKToKLSAg
ICAgICAgIiIiTW92ZSBmcm9tIG9uZSBjaHVuayB0byBhbm90aGVyLCBhc3Nlc3MgdGhlIGNoYW5n
ZSBpbiBiYWRuZXNzLAotICAgICAgICBhbmQga2VlcCB0aGUgbW92ZSBpZmYgaXQgZGVjcmVhc2Vz
IHRoZSBiYWRuZXNzIHNjb3JlLgotCi0gICAgICAgIDpwYXJhbSBzb3VyY2VfY2h1bms6IGNodW5r
IHRvIG1vdmUgZnJvbQotICAgICAgICA6cGFyYW0gdGFyZ2V0X2NodW5rOiBjaHVuayB0byBtb3Zl
IHRvCi0gICAgICAgIDpwYXJhbSBwYXRoX2luZGV4OiAwIGlmIHdlIGFyZSBtb3ZpbmcgZnJvbSB0
aGUgc3RhcnQgb3IgLTEgaWYgd2UgYXJlIG1vdmluZyBmcm9tIHRoZQotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZW5kCi0gICAgICAgIDpwYXJhbSBtb3ZlX2Z1bmM6IEZ1bmN0aW9uIHRoYXQg
YWN0dWFsbHkgbW92ZXMgYmV0d2VlbiBjaHVua3MiIiIKLSAgICAgICAgaWYgbGVuKHNvdXJjZV9j
aHVuay5wYXRocykgPD0gMToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotCi0gICAgICAgIG1v
dmVfdGltZSA9IHNvdXJjZV9jaHVuay5wYXRoc1twYXRoX2luZGV4XS50aW1lCi0KLSAgICAgICAg
bmV3X3NvdXJjZV9iYWRuZXNzID0gc2VsZi5fYmFkbmVzcyhzb3VyY2VfY2h1bmsudGltZSAtIG1v
dmVfdGltZSkKLSAgICAgICAgbmV3X3RhcmdldF9iYWRuZXNzID0gc2VsZi5fYmFkbmVzcyh0YXJn
ZXRfY2h1bmsudGltZSArIG1vdmVfdGltZSkKLQotICAgICAgICBkZWx0YV9iYWRuZXNzID0gKChu
ZXdfc291cmNlX2JhZG5lc3MgKyBuZXdfdGFyZ2V0X2JhZG5lc3MpIC0KLSAgICAgICAgICAgICAg
ICAgICAgICAgICAoc291cmNlX2NodW5rLmJhZG5lc3MgKyB0YXJnZXRfY2h1bmsuYmFkbmVzcykp
Ci0gICAgICAgIGlmIGRlbHRhX2JhZG5lc3MgPCAwOgotICAgICAgICAgICAgbW92ZV9mdW5jKCkK
LSAgICAgICAgICAgIHJldHVybiBUcnVlCi0KLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLSAgICBk
ZWYgX2JhZG5lc3Moc2VsZiwgdGltZSk6Ci0gICAgICAgICIiIk1ldHJpYyBvZiBiYWRuZXNzIGZv
ciBhIHNwZWNpZmljIGNodW5rCi0KLSAgICAgICAgOnBhcmFtIHRpbWU6IHRoZSB0aW1lIGZvciBh
IHNwZWNpZmljIGNodW5rIiIiCi0gICAgICAgIHJldHVybiAodGltZSAtIHNlbGYuZXhwZWN0ZWRf
dGltZSkqKjIKLQotICAgIGRlZiBfZ2V0X2NodW5rKHNlbGYsIG1hbmlmZXN0X2l0ZW1zKToKLSAg
ICAgICAgYnlfZGlyLCB0b3RhbF90aW1lID0gc2VsZi5fZ3JvdXBfYnlfZGlyZWN0b3J5KG1hbmlm
ZXN0X2l0ZW1zKQotCi0gICAgICAgIGlmIGxlbihieV9kaXIpIDwgc2VsZi50b3RhbF9jaHVua3M6
Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUcmllZCB0byBzcGxpdCBpbnRvICVpIGNo
dW5rcywgYnV0IG9ubHkgJWkgc3ViZGlyZWN0b3JpZXMgaW5jbHVkZWQiICUgKAotICAgICAgICAg
ICAgICAgIHNlbGYudG90YWxfY2h1bmtzLCBsZW4oYnlfZGlyKSkpCi0KLSAgICAgICAgc2VsZi5l
eHBlY3RlZF90aW1lID0gZmxvYXQodG90YWxfdGltZSkgLyBzZWxmLnRvdGFsX2NodW5rcwotCi0g
ICAgICAgIGNodW5rcyA9IHNlbGYuX2NyZWF0ZV9pbml0aWFsX2NodW5rcyhieV9kaXIpCi0KLSAg
ICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgICMgTW92ZSBhIHRlc3QgZnJvbSBvbmUgY2h1
bmsgdG8gdGhlIG5leHQgdW50aWwgZG9pbmcgc28gbm8gbG9uZ2VyCi0gICAgICAgICAgICAjIHJl
ZHVjZXMgdGhlIGJhZG5lc3MKLSAgICAgICAgICAgIGdvdF9pbXByb3ZlbWVudCA9IHNlbGYuX3Vw
ZGF0ZV9jaHVua3MoY2h1bmtzKQotICAgICAgICAgICAgaWYgbm90IGdvdF9pbXByb3ZlbWVudDoK
LSAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKHNlbGYu
ZXhwZWN0ZWRfdGltZSkKLSAgICAgICAgZm9yIGksIGNodW5rIGluIGNodW5rcy5pdGVyaXRlbXMo
KToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCIlaTogJWksICVpIiAlIChpICsgMSwg
Y2h1bmsudGltZSwgY2h1bmsuYmFkbmVzcykpCi0KLSAgICAgICAgYXNzZXJ0IHNlbGYuX2FsbF90
ZXN0cyhieV9kaXIpID09IHNlbGYuX2NodW5rZWRfdGVzdHMoY2h1bmtzKQotCi0gICAgICAgIHJl
dHVybiBzZWxmLl9nZXRfdGVzdHMoY2h1bmtzKQotCi0gICAgQHN0YXRpY21ldGhvZAotICAgIGRl
ZiBfYWxsX3Rlc3RzKGJ5X2Rpcik6Ci0gICAgICAgICIiIlJldHVybiBhIHNldCBvZiBhbGwgdGVz
dHMgaW4gdGhlIG1hbmlmZXN0IGZyb20gYSBncm91cGluZyBieSBkaXJlY3RvcnkiIiIKLSAgICAg
ICAgcmV0dXJuIHNldCh4WzBdIGZvciBpdGVtIGluIGJ5X2Rpci5pdGVydmFsdWVzKCkKLSAgICAg
ICAgICAgICAgICAgICBmb3IgeCBpbiBpdGVtLnRlc3RzKQotCi0gICAgQHN0YXRpY21ldGhvZAot
ICAgIGRlZiBfY2h1bmtlZF90ZXN0cyhjaHVua3MpOgotICAgICAgICAiIiJSZXR1cm4gYSBzZXQg
b2YgYWxsIHRlc3RzIGluIHRoZSBtYW5pZmVzdCBmcm9tIHRoZSBjaHVuayBsaXN0IiIiCi0gICAg
ICAgIHJldHVybiBzZXQoeFswXSBmb3IgY2h1bmsgaW4gY2h1bmtzLml0ZXJ2YWx1ZXMoKQotICAg
ICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIGNodW5rLnBhdGhzCi0gICAgICAgICAgICAgICAg
ICAgZm9yIHggaW4gcGF0aC50ZXN0cykKLQotCi0gICAgZGVmIF9jcmVhdGVfaW5pdGlhbF9jaHVu
a3Moc2VsZiwgYnlfZGlyKToKLSAgICAgICAgIiIiQ3JlYXRlIGFuIGluaXRpYWwgdW5iYWxhbmNl
ZCBsaXN0IG9mIGNodW5rcy4KLQotICAgICAgICA6cGFyYW0gYnlfZGlyOiBBbGwgdGVzdHMgaW4g
dGhlIG1hbmlmZXN0IGdyb3VwZWQgYnkgc3ViZGlyZWN0b3J5Ci0gICAgICAgIDpyZXR1cm5zIGxp
c3Q6IEEgbGlzdCBvZiBDaHVuayBvYmplY3RzIiIiCi0KLSAgICAgICAgY2xhc3MgQ2h1bmsob2Jq
ZWN0KToKLSAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRocywgaW5kZXgpOgotICAg
ICAgICAgICAgICAgICIiIkxpc3Qgb2YgUGF0aERhdGEgb2JqZWN0cyB0aGF0IHRvZ2V0aGVyIGZv
cm0gYSBzaW5nbGUgY2h1bmsgb2YKLSAgICAgICAgICAgICAgICB0ZXN0cyIiIgotICAgICAgICAg
ICAgICAgIHNlbGYucGF0aHMgPSBkZXF1ZShwYXRocykKLSAgICAgICAgICAgICAgICBzZWxmLnRp
bWUgPSBzdW0oaXRlbS50aW1lIGZvciBpdGVtIGluIHBhdGhzKQotICAgICAgICAgICAgICAgIHNl
bGYuaW5kZXggPSBpbmRleAotCi0gICAgICAgICAgICBkZWYgYXBwZW5kbGVmdChzZWxmLCBwYXRo
KToKLSAgICAgICAgICAgICAgICAiIiJBZGQgYSBQYXRoRGF0YSBvYmplY3QgdG8gdGhlIHN0YXJ0
IG9mIHRoZSBjaHVuayIiIgotICAgICAgICAgICAgICAgIHNlbGYucGF0aHMuYXBwZW5kbGVmdChw
YXRoKQotICAgICAgICAgICAgICAgIHNlbGYudGltZSArPSBwYXRoLnRpbWUKLQotICAgICAgICAg
ICAgZGVmIGFwcGVuZChzZWxmLCBwYXRoKToKLSAgICAgICAgICAgICAgICAiIiJBZGQgYSBQYXRo
RGF0YSBvYmplY3QgdG8gdGhlIGVuZCBvZiB0aGUgY2h1bmsiIiIKLSAgICAgICAgICAgICAgICBz
ZWxmLnBhdGhzLmFwcGVuZChwYXRoKQotICAgICAgICAgICAgICAgIHNlbGYudGltZSArPSBwYXRo
LnRpbWUKLQotICAgICAgICAgICAgZGVmIHBvcChzZWxmKToKLSAgICAgICAgICAgICAgICAiIiJS
ZW1vdmUgUGF0aERhdGEgb2JqZWN0IGZyb20gdGhlIGVuZCBvZiB0aGUgY2h1bmsiIiIKLSAgICAg
ICAgICAgICAgICBhc3NlcnQgbGVuKHNlbGYucGF0aHMpID4gMQotICAgICAgICAgICAgICAgIHNl
bGYudGltZSAtPSBzZWxmLnBhdGhzWy0xXS50aW1lCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYucGF0aHMucG9wKCkKLQotICAgICAgICAgICAgZGVmIHBvcGxlZnQoc2VsZik6Ci0gICAgICAg
ICAgICAgICAgIiIiUmVtb3ZlIFBhdGhEYXRhIG9iamVjdCBmcm9tIHRoZSBzdGFydCBvZiB0aGUg
Y2h1bmsiIiIKLSAgICAgICAgICAgICAgICBhc3NlcnQgbGVuKHNlbGYucGF0aHMpID4gMQotICAg
ICAgICAgICAgICAgIHNlbGYudGltZSAtPSBzZWxmLnBhdGhzWzBdLnRpbWUKLSAgICAgICAgICAg
ICAgICByZXR1cm4gc2VsZi5wYXRocy5wb3BsZWZ0KCkKLQotICAgICAgICAgICAgQHByb3BlcnR5
Ci0gICAgICAgICAgICBkZWYgYmFkbmVzcyhzZWxmXyk6ICAjIG5vcWE6IE44MDUKLSAgICAgICAg
ICAgICAgICAiIiJCYWRuZXNzIG1ldHJpYyBmb3IgdGhpcyBjaHVuayIiIgotICAgICAgICAgICAg
ICAgIHJldHVybiBzZWxmLl9iYWRuZXNzKHNlbGZfLnRpbWUpCi0KLSAgICAgICAgaW5pdGlhbF9z
aXplID0gbGVuKGJ5X2RpcikgLyBzZWxmLnRvdGFsX2NodW5rcwotICAgICAgICBjaHVua19ib3Vu
ZGFyaWVzID0gW2luaXRpYWxfc2l6ZSAqIGkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBm
b3IgaSBpbiB4cmFuZ2Uoc2VsZi50b3RhbF9jaHVua3MpXSArIFtsZW4oYnlfZGlyKV0KLQotICAg
ICAgICBjaHVua3MgPSBPcmRlcmVkRGljdCgpCi0gICAgICAgIGZvciBpLCBsb3dlciBpbiBlbnVt
ZXJhdGUoY2h1bmtfYm91bmRhcmllc1s6LTFdKToKLSAgICAgICAgICAgIHVwcGVyID0gY2h1bmtf
Ym91bmRhcmllc1tpICsgMV0KLSAgICAgICAgICAgIHBhdGhzID0gYnlfZGlyLnZhbHVlcygpW2xv
d2VyOnVwcGVyXQotICAgICAgICAgICAgY2h1bmtzW2ldID0gQ2h1bmsocGF0aHMsIGkpCi0KLSAg
ICAgICAgYXNzZXJ0IHNlbGYuX2FsbF90ZXN0cyhieV9kaXIpID09IHNlbGYuX2NodW5rZWRfdGVz
dHMoY2h1bmtzKQotCi0gICAgICAgIHJldHVybiBjaHVua3MKLQotICAgIGRlZiBfdXBkYXRlX2No
dW5rcyhzZWxmLCBjaHVua3MpOgotICAgICAgICAiIiJSdW4gYSBzaW5nbGUgaXRlcmF0aW9uIG9m
IHRoZSBjaHVuayB1cGRhdGUgYWxnb3JpdGhtLgotCi0gICAgICAgIDpwYXJhbSBjaHVua3M6IC0g
TGlzdCBvZiBjaHVua3MKLSAgICAgICAgIiIiCi0gICAgICAgICNUT0RPOiBjb25zaWRlciByZXBs
YWNpbmcgdGhpcyB3aXRoIGEgaGVhcAotICAgICAgICBzb3J0ZWRfY2h1bmtzID0gc29ydGVkKGNo
dW5rcy52YWx1ZXMoKSwga2V5PWxhbWJkYSB4Oi14LmJhZG5lc3MpCi0gICAgICAgIGdvdF9pbXBy
b3ZlbWVudCA9IEZhbHNlCi0gICAgICAgIGZvciBjaHVuayBpbiBzb3J0ZWRfY2h1bmtzOgotICAg
ICAgICAgICAgaWYgY2h1bmsudGltZSA8IHNlbGYuZXhwZWN0ZWRfdGltZToKLSAgICAgICAgICAg
ICAgICBmID0gc2VsZi5fbWF5YmVfYWRkCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIGYgPSBzZWxmLl9tYXliZV9yZW1vdmUKLQotICAgICAgICAgICAgaWYgY2h1bmsuaW5kZXgg
PT0gMDoKLSAgICAgICAgICAgICAgICBvcmRlciA9IFsibmV4dCJdCi0gICAgICAgICAgICBlbGlm
IGNodW5rLmluZGV4ID09IHNlbGYudG90YWxfY2h1bmtzIC0gMToKLSAgICAgICAgICAgICAgICBv
cmRlciA9IFsicHJldiJdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGlmIGNo
dW5rLnRpbWUgPCBzZWxmLmV4cGVjdGVkX3RpbWU6Ci0gICAgICAgICAgICAgICAgICAgICMgRmly
c3QgdHJ5IHRvIGFkZCBhIHRlc3QgZnJvbSB0aGUgbmVpZ2hib3JpbmcgY2h1bmsgd2l0aCB0aGUK
LSAgICAgICAgICAgICAgICAgICAgIyBncmVhdGVzdCB0b3RhbCB0aW1lCi0gICAgICAgICAgICAg
ICAgICAgIGlmIGNodW5rc1tjaHVuay5pbmRleCArIDFdLnRpbWUgPiBjaHVua3NbY2h1bmsuaW5k
ZXggLSAxXS50aW1lOgotICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgPSBbIm5leHQiLCAi
cHJldiJdCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAg
ICBvcmRlciA9IFsicHJldiIsICJuZXh0Il0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgICAgICAgICAjIEZpcnN0IHRyeSB0byByZW1vdmUgYSB0ZXN0IGFuZCBhZGQgdG8gdGhl
IG5laWdoYm9yaW5nIGNodW5rIHdpdGggdGhlCi0gICAgICAgICAgICAgICAgICAgICMgbG93ZXN0
IHRvdGFsIHRpbWUKLSAgICAgICAgICAgICAgICAgICAgaWYgY2h1bmtzW2NodW5rLmluZGV4ICsg
MV0udGltZSA+IGNodW5rc1tjaHVuay5pbmRleCAtIDFdLnRpbWU6Ci0gICAgICAgICAgICAgICAg
ICAgICAgICBvcmRlciA9IFsicHJldiIsICJuZXh0Il0KLSAgICAgICAgICAgICAgICAgICAgZWxz
ZToKLSAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyID0gWyJuZXh0IiwgInByZXYiXQotCi0g
ICAgICAgICAgICBmb3IgZGlyZWN0aW9uIGluIG9yZGVyOgotICAgICAgICAgICAgICAgIGlmIGYo
Y2h1bmtzLCBjaHVuay5pbmRleCwgZGlyZWN0aW9uKToKLSAgICAgICAgICAgICAgICAgICAgZ290
X2ltcHJvdmVtZW50ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotCi0gICAgICAg
ICAgICBpZiBnb3RfaW1wcm92ZW1lbnQ6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAg
ICByZXR1cm4gZ290X2ltcHJvdmVtZW50Ci0KLSAgICBkZWYgX2dldF90ZXN0cyhzZWxmLCBjaHVu
a3MpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIGxpc3Qgb2YgdGVzdHMgY29ycmVzcG9uZGluZyB0
byB0aGUgY2h1bmsgbnVtYmVyIHdlIGFyZSBydW5uaW5nLgotCi0gICAgICAgIDpwYXJhbSBjaHVu
a3M6IExpc3Qgb2YgY2h1bmtzIiIiCi0gICAgICAgIHRlc3RzID0gW10KLSAgICAgICAgZm9yIHBh
dGggaW4gY2h1bmtzW3NlbGYuY2h1bmtfbnVtYmVyIC0gMV0ucGF0aHM6Ci0gICAgICAgICAgICB0
ZXN0cy5leHRlbmQocGF0aC50ZXN0cykKLQotICAgICAgICByZXR1cm4gdGVzdHMKLQotICAgIGRl
ZiBfX2NhbGxfXyhzZWxmLCBtYW5pZmVzdF9pdGVyKToKLSAgICAgICAgbWFuaWZlc3QgPSBsaXN0
KG1hbmlmZXN0X2l0ZXIpCi0gICAgICAgIHRlc3RzID0gc2VsZi5fZ2V0X2NodW5rKG1hbmlmZXN0
KQotICAgICAgICBmb3IgaXRlbSBpbiB0ZXN0czoKLSAgICAgICAgICAgIHlpZWxkIGl0ZW0KLQot
CiBjbGFzcyBUZXN0RmlsdGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3Rf
bWFuaWZlc3RzLCBpbmNsdWRlPU5vbmUsIGV4Y2x1ZGU9Tm9uZSwgbWFuaWZlc3RfcGF0aD1Ob25l
KToKLSAgICAgICAgaWYgbWFuaWZlc3RfcGF0aCBpcyBub3QgTm9uZSBhbmQgaW5jbHVkZSBpcyBO
b25lOgotICAgICAgICAgICAgc2VsZi5tYW5pZmVzdCA9IG1hbmlmZXN0aW5jbHVkZS5nZXRfbWFu
aWZlc3QobWFuaWZlc3RfcGF0aCkKLSAgICAgICAgZWxzZToKKyAgICAiIiJDYWxsYWJsZSB0aGF0
IHJlc3RyaWN0cyB0aGUgc2V0IG9mIHRlc3RzIGluIGEgZ2l2ZW4gbWFuaWZlc3QgYWNjb3JkaW5n
CisgICAgdG8gaW5pdGlhbCBjcml0ZXJpYSIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0
X21hbmlmZXN0cywgaW5jbHVkZT1Ob25lLCBleGNsdWRlPU5vbmUsIG1hbmlmZXN0X3BhdGg9Tm9u
ZSwgZXhwbGljaXQ9RmFsc2UpOgorICAgICAgICBpZiBtYW5pZmVzdF9wYXRoIGlzIE5vbmUgb3Ig
aW5jbHVkZSBvciBleHBsaWNpdDoKICAgICAgICAgICAgIHNlbGYubWFuaWZlc3QgPSBtYW5pZmVz
dGluY2x1ZGUuSW5jbHVkZU1hbmlmZXN0LmNyZWF0ZSgpCiAgICAgICAgICAgICBzZWxmLm1hbmlm
ZXN0LnNldF9kZWZhdWx0cygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLm1hbmlm
ZXN0ID0gbWFuaWZlc3RpbmNsdWRlLmdldF9tYW5pZmVzdChtYW5pZmVzdF9wYXRoKQogCi0gICAg
ICAgIGlmIGluY2x1ZGU6CisgICAgICAgIGlmIGluY2x1ZGUgb3IgZXhwbGljaXQ6CiAgICAgICAg
ICAgICBzZWxmLm1hbmlmZXN0LnNldCgic2tpcCIsICJ0cnVlIikKKworICAgICAgICBpZiBpbmNs
dWRlOgogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaW5jbHVkZToKICAgICAgICAgICAgICAgICBz
ZWxmLm1hbmlmZXN0LmFkZF9pbmNsdWRlKHRlc3RfbWFuaWZlc3RzLCBpdGVtKQogCkBAIC0zNjcs
NiArOTksNyBAQCBjbGFzcyBUZXN0RmlsdGVyKG9iamVjdCk6CiAgICAgICAgICAgICBpZiBpbmNs
dWRlX3Rlc3RzOgogICAgICAgICAgICAgICAgIHlpZWxkIHRlc3RfdHlwZSwgdGVzdF9wYXRoLCBp
bmNsdWRlX3Rlc3RzCiAKKwogY2xhc3MgVGFnRmlsdGVyKG9iamVjdCk6CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHRhZ3MpOgogICAgICAgICBzZWxmLnRhZ3MgPSBzZXQodGFncykKQEAgLTM3OCwx
MyArMTExLDEzIEBAIGNsYXNzIFRhZ0ZpbHRlcihvYmplY3QpOgogCiAKIGNsYXNzIE1hbmlmZXN0
TG9hZGVyKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRlc3RfcGF0aHMsIGZvcmNl
X21hbmlmZXN0X3VwZGF0ZT1GYWxzZSwgbWFuaWZlc3RfZG93bmxvYWQ9RmFsc2UsIHR5cGVzPU5v
bmUsIG1ldGFfZmlsdGVycz1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGVzdF9wYXRo
cywgZm9yY2VfbWFuaWZlc3RfdXBkYXRlPUZhbHNlLCBtYW5pZmVzdF9kb3dubG9hZD1GYWxzZSwK
KyAgICAgICAgICAgICAgICAgdHlwZXM9Tm9uZSk6CiAgICAgICAgIGRvX2RlbGF5ZWRfaW1wb3J0
cygpCiAgICAgICAgIHNlbGYudGVzdF9wYXRocyA9IHRlc3RfcGF0aHMKICAgICAgICAgc2VsZi5m
b3JjZV9tYW5pZmVzdF91cGRhdGUgPSBmb3JjZV9tYW5pZmVzdF91cGRhdGUKICAgICAgICAgc2Vs
Zi5tYW5pZmVzdF9kb3dubG9hZCA9IG1hbmlmZXN0X2Rvd25sb2FkCiAgICAgICAgIHNlbGYudHlw
ZXMgPSB0eXBlcwotICAgICAgICBzZWxmLm1ldGFfZmlsdGVycyA9IG1ldGFfZmlsdGVycyBvciBb
XQogICAgICAgICBzZWxmLmxvZ2dlciA9IHN0cnVjdHVyZWQuZ2V0X2RlZmF1bHRfbG9nZ2VyKCkK
ICAgICAgICAgaWYgc2VsZi5sb2dnZXIgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYubG9nZ2Vy
ID0gc3RydWN0dXJlZC5zdHJ1Y3R1cmVkbG9nLlN0cnVjdHVyZWRMb2dnZXIoIk1hbmlmZXN0TG9h
ZGVyIikKQEAgLTM5OSw1NCArMTMyLDEzIEBAIGNsYXNzIE1hbmlmZXN0TG9hZGVyKG9iamVjdCk6
CiAgICAgICAgICAgICBydlttYW5pZmVzdF9maWxlXSA9IHBhdGhfZGF0YQogICAgICAgICByZXR1
cm4gcnYKIAotICAgIGRlZiBjcmVhdGVfbWFuaWZlc3Qoc2VsZiwgbWFuaWZlc3RfcGF0aCwgdGVz
dHNfcGF0aCwgdXJsX2Jhc2U9Ii8iKToKLSAgICAgICAgc2VsZi51cGRhdGVfbWFuaWZlc3QobWFu
aWZlc3RfcGF0aCwgdGVzdHNfcGF0aCwgdXJsX2Jhc2UsIHJlY3JlYXRlPVRydWUsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGRvd25sb2FkPXNlbGYubWFuaWZlc3RfZG93bmxvYWQpCi0K
LSAgICBkZWYgdXBkYXRlX21hbmlmZXN0KHNlbGYsIG1hbmlmZXN0X3BhdGgsIHRlc3RzX3BhdGgs
IHVybF9iYXNlPSIvIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHJlY3JlYXRlPUZhbHNlLCBk
b3dubG9hZD1GYWxzZSk6Ci0gICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlVwZGF0aW5nIHRlc3Qg
bWFuaWZlc3QgJXMiICUgbWFuaWZlc3RfcGF0aCkKLSAgICAgICAgbWFuaWZlc3RfbG9nLnNldHVw
KCkKLQotICAgICAgICBqc29uX2RhdGEgPSBOb25lCi0gICAgICAgIGlmIGRvd25sb2FkOgotICAg
ICAgICAgICAgIyBUT0RPOiBtYWtlIHRoaXMgbm90IGdpdGh1Yi1zcGVjaWZpYworICAgIGRlZiBs
b2FkX21hbmlmZXN0KHNlbGYsIHRlc3RzX3BhdGgsIG1hbmlmZXN0X3BhdGgsIG1ldGFkYXRhX3Bh
dGgsIHVybF9iYXNlPSIvIiwgKiprd2FyZ3MpOgorICAgICAgICBjYWNoZV9yb290ID0gb3MucGF0
aC5qb2luKG1ldGFkYXRhX3BhdGgsICIuY2FjaGUiKQorICAgICAgICBpZiBzZWxmLm1hbmlmZXN0
X2Rvd25sb2FkOgogICAgICAgICAgICAgZG93bmxvYWRfZnJvbV9naXRodWIobWFuaWZlc3RfcGF0
aCwgdGVzdHNfcGF0aCkKLQotICAgICAgICBpZiBub3QgcmVjcmVhdGU6Ci0gICAgICAgICAgICB0
cnk6Ci0gICAgICAgICAgICAgICAgd2l0aCBvcGVuKG1hbmlmZXN0X3BhdGgpIGFzIGY6Ci0gICAg
ICAgICAgICAgICAgICAgIGpzb25fZGF0YSA9IGpzb24ubG9hZChmKQotICAgICAgICAgICAgZXhj
ZXB0IElPRXJyb3I6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiVW5hYmxlIHRv
IGZpbmQgdGVzdCBtYW5pZmVzdCIpCi0gICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKLSAg
ICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJVbmFibGUgdG8gcGFyc2UgdGVzdCBtYW5p
ZmVzdCIpCi0KLSAgICAgICAgaWYgbm90IGpzb25fZGF0YToKLSAgICAgICAgICAgIHNlbGYubG9n
Z2VyLmluZm8oIkNyZWF0aW5nIHRlc3QgbWFuaWZlc3QiKQotICAgICAgICAgICAgbWFuaWZlc3Rf
ZmlsZSA9IG1hbmlmZXN0Lk1hbmlmZXN0KHVybF9iYXNlKQotICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUgPSBtYW5pZmVzdC5NYW5p
ZmVzdC5mcm9tX2pzb24odGVzdHNfcGF0aCwganNvbl9kYXRhKQotICAgICAgICAgICAgZXhjZXB0
IG1hbmlmZXN0Lk1hbmlmZXN0VmVyc2lvbk1pc21hdGNoOgotICAgICAgICAgICAgICAgIG1hbmlm
ZXN0X2ZpbGUgPSBtYW5pZmVzdC5NYW5pZmVzdCh1cmxfYmFzZSkKLQotICAgICAgICBtYW5pZmVz
dF91cGRhdGUudXBkYXRlKHRlc3RzX3BhdGgsIG1hbmlmZXN0X2ZpbGUsIFRydWUpCi0KLSAgICAg
ICAgbWFuaWZlc3Qud3JpdGUobWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfcGF0aCkKLQotICAgIGRl
ZiBsb2FkX21hbmlmZXN0KHNlbGYsIHRlc3RzX3BhdGgsIG1hbmlmZXN0X3BhdGgsIHVybF9iYXNl
PSIvIiwgKiprd2FyZ3MpOgotICAgICAgICBpZiAobm90IG9zLnBhdGguZXhpc3RzKG1hbmlmZXN0
X3BhdGgpIG9yCi0gICAgICAgICAgICBzZWxmLmZvcmNlX21hbmlmZXN0X3VwZGF0ZSk6Ci0gICAg
ICAgICAgICBzZWxmLnVwZGF0ZV9tYW5pZmVzdChtYW5pZmVzdF9wYXRoLCB0ZXN0c19wYXRoLCB1
cmxfYmFzZSwgZG93bmxvYWQ9c2VsZi5tYW5pZmVzdF9kb3dubG9hZCkKLSAgICAgICAgbWFuaWZl
c3RfZmlsZSA9IG1hbmlmZXN0LmxvYWQodGVzdHNfcGF0aCwgbWFuaWZlc3RfcGF0aCwgdHlwZXM9
c2VsZi50eXBlcywgbWV0YV9maWx0ZXJzPXNlbGYubWV0YV9maWx0ZXJzKQotICAgICAgICBpZiBt
YW5pZmVzdF9maWxlLnVybF9iYXNlICE9IHVybF9iYXNlOgotICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuaW5mbygiVXBkYXRpbmcgdXJsX2Jhc2UgaW4gbWFuaWZlc3QgZnJvbSAlcyB0byAlcyIgJSAo
bWFuaWZlc3RfZmlsZS51cmxfYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9iYXNlKSkK
LSAgICAgICAgICAgIG1hbmlmZXN0X2ZpbGUudXJsX2Jhc2UgPSB1cmxfYmFzZQotICAgICAgICAg
ICAgbWFuaWZlc3Qud3JpdGUobWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfcGF0aCkKLQotICAgICAg
ICByZXR1cm4gbWFuaWZlc3RfZmlsZQorICAgICAgICByZXR1cm4gbWFuaWZlc3QubG9hZF9hbmRf
dXBkYXRlKHRlc3RzX3BhdGgsIG1hbmlmZXN0X3BhdGgsIHVybF9iYXNlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhY2hlX3Jvb3Q9Y2FjaGVfcm9vdCwgdXBkYXRl
PXNlbGYuZm9yY2VfbWFuaWZlc3RfdXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHR5cGVzPXNlbGYudHlwZXMpCiAKIAogZGVmIGl0ZXJmaWx0ZXIoZmlsdGVy
cywgaXRlcik6CkBAIC00NTcsMTIgKzE0OSwxMiBAQCBkZWYgaXRlcmZpbHRlcihmaWx0ZXJzLCBp
dGVyKToKIAogCiBjbGFzcyBUZXN0TG9hZGVyKG9iamVjdCk6CisgICAgIiIiTG9hZHMgdGVzdHMg
YWNjb3JkaW5nIHRvIGEgV1BUIG1hbmlmZXN0IGFuZCBhbnkgYXNzb2NpYXRlZCBleHBlY3RhdGlv
biBmaWxlcyIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLAogICAgICAgICAgICAgICAgICB0ZXN0
X21hbmlmZXN0cywKICAgICAgICAgICAgICAgICAgdGVzdF90eXBlcywKICAgICAgICAgICAgICAg
ICAgcnVuX2luZm8sCiAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2ZpbHRlcnM9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgbWV0YV9maWx0ZXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIGNodW5r
X3R5cGU9Im5vbmUiLAogICAgICAgICAgICAgICAgICB0b3RhbF9jaHVua3M9MSwKICAgICAgICAg
ICAgICAgICAgY2h1bmtfbnVtYmVyPTEsCkBAIC00NzMsNyArMTY1LDYgQEAgY2xhc3MgVGVzdExv
YWRlcihvYmplY3QpOgogICAgICAgICBzZWxmLnJ1bl9pbmZvID0gcnVuX2luZm8KIAogICAgICAg
ICBzZWxmLm1hbmlmZXN0X2ZpbHRlcnMgPSBtYW5pZmVzdF9maWx0ZXJzIGlmIG1hbmlmZXN0X2Zp
bHRlcnMgaXMgbm90IE5vbmUgZWxzZSBbXQotICAgICAgICBzZWxmLm1ldGFfZmlsdGVycyA9IG1l
dGFfZmlsdGVycyBpZiBtZXRhX2ZpbHRlcnMgaXMgbm90IE5vbmUgZWxzZSBbXQogCiAgICAgICAg
IHNlbGYubWFuaWZlc3RzID0gdGVzdF9tYW5pZmVzdHMKICAgICAgICAgc2VsZi50ZXN0cyA9IE5v
bmUKQEAgLTQ4Nyw5ICsxNzgsOCBAQCBjbGFzcyBUZXN0TG9hZGVyKG9iamVjdCk6CiAKICAgICAg
ICAgc2VsZi5jaHVua2VyID0geyJub25lIjogVW5jaHVua2VkLAogICAgICAgICAgICAgICAgICAg
ICAgICAgImhhc2giOiBIYXNoQ2h1bmtlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJkaXJf
aGFzaCI6IERpcmVjdG9yeUhhc2hDaHVua2VyLAotICAgICAgICAgICAgICAgICAgICAgICAgImVx
dWFsX3RpbWUiOiBFcXVhbFRpbWVDaHVua2VyfVtjaHVua190eXBlXSh0b3RhbF9jaHVua3MsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNodW5rX251bWJlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICJkaXJfaGFz
aCI6IERpcmVjdG9yeUhhc2hDaHVua2VyfVtjaHVua190eXBlXSh0b3RhbF9jaHVua3MsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY2h1bmtfbnVtYmVyKQogCiAgICAgICAgIHNlbGYuX3Rlc3RfaWRzID0gTm9uZQog
CkBAIC01MDYsMTIgKzE5NiwxMiBAQCBjbGFzcyBUZXN0TG9hZGVyKG9iamVjdCk6CiAgICAgICAg
ICAgICAgICAgICAgIHNlbGYuX3Rlc3RfaWRzICs9IFtpdGVtLmlkIGZvciBpdGVtIGluIHRlc3Rf
ZGljdFt0ZXN0X3R5cGVdXQogICAgICAgICByZXR1cm4gc2VsZi5fdGVzdF9pZHMKIAotICAgIGRl
ZiBnZXRfdGVzdChzZWxmLCBtYW5pZmVzdF90ZXN0LCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21l
dGFkYXRhKToKKyAgICBkZWYgZ2V0X3Rlc3Qoc2VsZiwgbWFuaWZlc3RfZmlsZSwgbWFuaWZlc3Rf
dGVzdCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CiAgICAgICAgIGlmIHRlc3Rf
bWV0YWRhdGEgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLmFwcGVu
ZCh0ZXN0X21ldGFkYXRhKQogICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSA9IHRlc3RfbWV0YWRh
dGEuZ2V0X3Rlc3QobWFuaWZlc3RfdGVzdC5pZCkKIAotICAgICAgICByZXR1cm4gd3B0dGVzdC5m
cm9tX21hbmlmZXN0KG1hbmlmZXN0X3Rlc3QsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRh
dGEpCisgICAgICAgIHJldHVybiB3cHR0ZXN0LmZyb21fbWFuaWZlc3QobWFuaWZlc3RfZmlsZSwg
bWFuaWZlc3RfdGVzdCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSkKIAogICAgIGRl
ZiBsb2FkX2Rpcl9tZXRhZGF0YShzZWxmLCB0ZXN0X21hbmlmZXN0LCBtZXRhZGF0YV9wYXRoLCB0
ZXN0X3BhdGgpOgogICAgICAgICBydiA9IFtdCkBAIC01MzQsMjcgKzIyNCwyNCBAQCBjbGFzcyBU
ZXN0TG9hZGVyKG9iamVjdCk6CiAKICAgICBkZWYgaXRlcl90ZXN0cyhzZWxmKToKICAgICAgICAg
bWFuaWZlc3RfaXRlbXMgPSBbXQorICAgICAgICBtYW5pZmVzdHNfYnlfdXJsX2Jhc2UgPSB7fQog
CiAgICAgICAgIGZvciBtYW5pZmVzdCBpbiBzb3J0ZWQoc2VsZi5tYW5pZmVzdHMua2V5cygpLCBr
ZXk9bGFtYmRhIHg6eC51cmxfYmFzZSk6CiAgICAgICAgICAgICBtYW5pZmVzdF9pdGVyID0gaXRl
cmZpbHRlcihzZWxmLm1hbmlmZXN0X2ZpbHRlcnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBtYW5pZmVzdC5pdGVydHlwZXMoKnNlbGYudGVzdF90eXBlcykpCiAgICAg
ICAgICAgICBtYW5pZmVzdF9pdGVtcy5leHRlbmQobWFuaWZlc3RfaXRlcikKKyAgICAgICAgICAg
IG1hbmlmZXN0c19ieV91cmxfYmFzZVttYW5pZmVzdC51cmxfYmFzZV0gPSBtYW5pZmVzdAogCiAg
ICAgICAgIGlmIHNlbGYuY2h1bmtlciBpcyBub3QgTm9uZToKICAgICAgICAgICAgIG1hbmlmZXN0
X2l0ZW1zID0gc2VsZi5jaHVua2VyKG1hbmlmZXN0X2l0ZW1zKQogCiAgICAgICAgIGZvciB0ZXN0
X3R5cGUsIHRlc3RfcGF0aCwgdGVzdHMgaW4gbWFuaWZlc3RfaXRlbXM6Ci0gICAgICAgICAgICBt
YW5pZmVzdF9maWxlID0gaXRlcih0ZXN0cykubmV4dCgpLm1hbmlmZXN0CisgICAgICAgICAgICBt
YW5pZmVzdF9maWxlID0gbWFuaWZlc3RzX2J5X3VybF9iYXNlW2l0ZXIodGVzdHMpLm5leHQoKS51
cmxfYmFzZV0KICAgICAgICAgICAgIG1ldGFkYXRhX3BhdGggPSBzZWxmLm1hbmlmZXN0c1ttYW5p
ZmVzdF9maWxlXVsibWV0YWRhdGFfcGF0aCJdCi0gICAgICAgICAgICBpbmhlcml0X21ldGFkYXRh
LCB0ZXN0X21ldGFkYXRhID0gc2VsZi5sb2FkX21ldGFkYXRhKG1hbmlmZXN0X2ZpbGUsIG1ldGFk
YXRhX3BhdGgsIHRlc3RfcGF0aCkKLQotICAgICAgICAgICAgZm9yIHRlc3QgaW4gaXRlcmZpbHRl
cihzZWxmLm1ldGFfZmlsdGVycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c2VsZi5pdGVyX3dwdHRlc3QoaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSwgdGVzdHMp
KToKLSAgICAgICAgICAgICAgICB5aWVsZCB0ZXN0X3BhdGgsIHRlc3RfdHlwZSwgdGVzdAogCi0g
ICAgZGVmIGl0ZXJfd3B0dGVzdChzZWxmLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRh
LCB0ZXN0cyk6Ci0gICAgICAgIGZvciBtYW5pZmVzdF90ZXN0IGluIHRlc3RzOgotICAgICAgICAg
ICAgeWllbGQgc2VsZi5nZXRfdGVzdChtYW5pZmVzdF90ZXN0LCBpbmhlcml0X21ldGFkYXRhLCB0
ZXN0X21ldGFkYXRhKQorICAgICAgICAgICAgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0
YSA9IHNlbGYubG9hZF9tZXRhZGF0YShtYW5pZmVzdF9maWxlLCBtZXRhZGF0YV9wYXRoLCB0ZXN0
X3BhdGgpCisgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICB5
aWVsZCB0ZXN0X3BhdGgsIHRlc3RfdHlwZSwgc2VsZi5nZXRfdGVzdChtYW5pZmVzdF9maWxlLCB0
ZXN0LCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhKQogCiAgICAgZGVmIF9sb2FkX3Rl
c3RzKHNlbGYpOgogICAgICAgICAiIiJSZWFkIGluIHRoZSB0ZXN0cyBmcm9tIHRoZSBtYW5pZmVz
dCBmaWxlIGFuZCBhZGQgdGhlbSB0byBhIHF1ZXVlIiIiCkBAIC01OTMsOSArMjgwLDggQEAgY2xh
c3MgVGVzdFNvdXJjZShvYmplY3QpOgogICAgICAgICBzZWxmLmN1cnJlbnRfbWV0YWRhdGEgPSBO
b25lCiAKICAgICBAYWJzdHJhY3RtZXRob2QKLSAgICAjIG5vcWE6IE44MDUKLSAgICAjQGNsYXNz
bWV0aG9kIChkb2Vzbid0IGNvbXBvc2Ugd2l0aCBAYWJzdHJhY3RtZXRob2QpCi0gICAgZGVmIG1h
a2VfcXVldWUoY2xzLCB0ZXN0cywgKiprd2FyZ3MpOgorICAgICNAY2xhc3NtZXRob2QgKGRvZXNu
J3QgY29tcG9zZSB3aXRoIEBhYnN0cmFjdG1ldGhvZCBpbiA8IDMuMykKKyAgICBkZWYgbWFrZV9x
dWV1ZShjbHMsIHRlc3RzLCAqKmt3YXJncyk6ICAjIG5vcWE6IE44MDUKICAgICAgICAgcGFzcwog
CiAgICAgQGNsYXNzbWV0aG9kCkBAIC02NjMsNyArMzQ5LDcgQEAgY2xhc3MgUGF0aEdyb3VwZWRT
b3VyY2UoR3JvdXBlZFNvdXJjZSk6CiAgICAgICAgIGRlcHRoID0ga3dhcmdzLmdldCgiZGVwdGgi
KQogICAgICAgICBpZiBkZXB0aCBpcyBUcnVlIG9yIGRlcHRoID09IDA6CiAgICAgICAgICAgICBk
ZXB0aCA9IE5vbmUKLSAgICAgICAgcGF0aCA9IHVybHBhcnNlLnVybHNwbGl0KHRlc3QudXJsKS5w
YXRoLnNwbGl0KCIvIilbMTotMV1bOmRlcHRoXQorICAgICAgICBwYXRoID0gdXJsc3BsaXQodGVz
dC51cmwpLnBhdGguc3BsaXQoIi8iKVsxOi0xXVs6ZGVwdGhdCiAgICAgICAgIHJ2ID0gcGF0aCAh
PSBzdGF0ZS5nZXQoInByZXZfcGF0aCIpCiAgICAgICAgIHN0YXRlWyJwcmV2X3BhdGgiXSA9IHBh
dGgKICAgICAgICAgcmV0dXJuIHJ2CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5l
ci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cnVubmVyLnB5CmluZGV4IDQ2ZDY3ZTNjOTgyM2IxNDQ1
ZWU0NzJhYTYyYmE5M2RjYWRmNjIxYTcuLjhkZWNlMjBhOGU5M2UyNzkyMDRjY2ZlZTcwZjA3Y2U4
YThkZWJhYjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cnVubmVyLnB5CisrKyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci90ZXN0cnVubmVyLnB5CkBAIC0zLDE2ICszLDI3IEBAIGZyb20gX19mdXR1cmVf
XyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogaW1wb3J0IG11bHRpcHJvY2Vzc2luZwogaW1wb3J0
IHRocmVhZGluZwogaW1wb3J0IHRyYWNlYmFjawotZnJvbSBRdWV1ZSBpbXBvcnQgRW1wdHkKK2Zy
b20gc2l4Lm1vdmVzLnF1ZXVlIGltcG9ydCBFbXB0eQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQg
bmFtZWR0dXBsZQogZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MsIGN1cnJlbnRf
cHJvY2VzcywgUXVldWUKIAotZnJvbSBtb3psb2cgaW1wb3J0IHN0cnVjdHVyZWRsb2cKK2Zyb20g
bW96bG9nIGltcG9ydCBzdHJ1Y3R1cmVkbG9nLCBjYXB0dXJlCiAKICMgU3BlY2lhbCB2YWx1ZSB1
c2VkIGFzIGEgc2VudGluYWwgaW4gdmFyaW91cyBjb21tYW5kcwogU3RvcCA9IG9iamVjdCgpCiAK
IAorZGVmIHJlbGVhc2VfbW96bG9nX2xvY2soKToKKyAgICB0cnk6CisgICAgICAgIGZyb20gbW96
bG9nLnN0cnVjdHVyZWRsb2cgaW1wb3J0IFN0cnVjdHVyZWRMb2dnZXIKKyAgICAgICAgdHJ5Ogor
ICAgICAgICAgICAgU3RydWN0dXJlZExvZ2dlci5fbG9jay5yZWxlYXNlKCkKKyAgICAgICAgZXhj
ZXB0IHRocmVhZGluZy5UaHJlYWRFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICBleGNlcHQg
SW1wb3J0RXJyb3I6CisgICAgICAgIHBhc3MKKworCiBjbGFzcyBNZXNzYWdlTG9nZ2VyKG9iamVj
dCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2VfZnVuYyk6CiAgICAgICAgIHNlbGYu
c2VuZF9tZXNzYWdlID0gbWVzc2FnZV9mdW5jCkBAIC00MCwyNCArNTEsMjUgQEAgZm9yIGxldmVs
X25hbWUgaW4gc3RydWN0dXJlZGxvZy5sb2dfbGV2ZWxzOgogCiAKIGNsYXNzIFRlc3RSdW5uZXIo
b2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgY29tbWFuZF9xdWV1ZSwgcmVzdWx0X3F1
ZXVlLCBleGVjdXRvcik6Ci0gICAgICAgICIiIkNsYXNzIGltcGxlbWVudGluZyB0aGUgbWFpbiBs
b29wIGZvciBydW5uaW5nIHRlc3RzLgotCi0gICAgICAgIFRoaXMgY2xhc3MgZGVsZWdhdGVzIHRo
ZSBqb2Igb2YgYWN0dWFsbHkgcnVubmluZyBhIHRlc3QgdG8gdGhlIGV4ZWN1dG9yCi0gICAgICAg
IHRoYXQgaXMgcGFzc2VkIGluLgotCi0gICAgICAgIDpwYXJhbSBjb21tYW5kX3F1ZXVlOiBzdWJw
cm9jZXNzLlF1ZXVlIHVzZWQgdG8gc2VuZCBjb21tYW5kcyB0byB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHByb2Nlc3MKLSAgICAgICAgOnBhcmFtIHJlc3VsdF9xdWV1ZTogc3Vi
cHJvY2Vzcy5RdWV1ZSB1c2VkIHRvIHNlbmQgcmVzdWx0cyB0byB0aGUKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgcGFyZW50IFRlc3RNYW5hZ2VyIHByb2Nlc3MKLSAgICAgICAgOnBhcmFt
IGV4ZWN1dG9yOiBUZXN0RXhlY3V0b3Igb2JqZWN0IHRoYXQgd2lsbCBhY3R1YWxseSBydW4gYSB0
ZXN0LgotICAgICAgICAiIiIKKyAgICAiIiJDbGFzcyBpbXBsZW1lbnRpbmcgdGhlIG1haW4gbG9v
cCBmb3IgcnVubmluZyB0ZXN0cy4KKworICAgIFRoaXMgY2xhc3MgZGVsZWdhdGVzIHRoZSBqb2Ig
b2YgYWN0dWFsbHkgcnVubmluZyBhIHRlc3QgdG8gdGhlIGV4ZWN1dG9yCisgICAgdGhhdCBpcyBw
YXNzZWQgaW4uCisKKyAgICA6cGFyYW0gbG9nZ2VyOiBTdHJ1Y3R1cmVkIGxvZ2dlcgorICAgIDpw
YXJhbSBjb21tYW5kX3F1ZXVlOiBzdWJwcm9jZXNzLlF1ZXVlIHVzZWQgdG8gc2VuZCBjb21tYW5k
cyB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2VzcworICAgIDpwYXJhbSBy
ZXN1bHRfcXVldWU6IHN1YnByb2Nlc3MuUXVldWUgdXNlZCB0byBzZW5kIHJlc3VsdHMgdG8gdGhl
CisgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50IFRlc3RSdW5uZXJNYW5hZ2VyIHByb2Nl
c3MKKyAgICA6cGFyYW0gZXhlY3V0b3I6IFRlc3RFeGVjdXRvciBvYmplY3QgdGhhdCB3aWxsIGFj
dHVhbGx5IHJ1biBhIHRlc3QuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvZ2dl
ciwgY29tbWFuZF9xdWV1ZSwgcmVzdWx0X3F1ZXVlLCBleGVjdXRvcik6CiAgICAgICAgIHNlbGYu
Y29tbWFuZF9xdWV1ZSA9IGNvbW1hbmRfcXVldWUKICAgICAgICAgc2VsZi5yZXN1bHRfcXVldWUg
PSByZXN1bHRfcXVldWUKIAogICAgICAgICBzZWxmLmV4ZWN1dG9yID0gZXhlY3V0b3IKICAgICAg
ICAgc2VsZi5uYW1lID0gY3VycmVudF9wcm9jZXNzKCkubmFtZQotICAgICAgICBzZWxmLmxvZ2dl
ciA9IE1lc3NhZ2VMb2dnZXIoc2VsZi5zZW5kX21lc3NhZ2UpCisgICAgICAgIHNlbGYubG9nZ2Vy
ID0gbG9nZ2VyCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
ZgpAQCAtNjcsNyArNzksMTMgQEAgY2xhc3MgVGVzdFJ1bm5lcihvYmplY3QpOgogCiAgICAgZGVm
IHNldHVwKHNlbGYpOgogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiRXhlY3V0b3Igc2V0dXAi
KQotICAgICAgICBzZWxmLmV4ZWN1dG9yLnNldHVwKHNlbGYpCisgICAgICAgIHRyeToKKyAgICAg
ICAgICAgIHNlbGYuZXhlY3V0b3Iuc2V0dXAoc2VsZikKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlv
bjoKKyAgICAgICAgICAgICMgVGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgbG9nZ2luZyB0
aGUgZXhjZXB0aW9uIGlmIHJlcXVpcmVkCisgICAgICAgICAgICBzZWxmLnNlbmRfbWVzc2FnZSgi
aW5pdF9mYWlsZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZW5kX21lc3Nh
Z2UoImluaXRfc3VjY2VlZGVkIikKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIkV4ZWN1dG9y
IHNldHVwIGRvbmUiKQogCiAgICAgZGVmIHRlYXJkb3duKHNlbGYpOgpAQCAtODIsNiArMTAwLDcg
QEAgY2xhc3MgVGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICB0aGUgYXNzb2NpYXRlZCBtZXRo
b2RzIiIiCiAgICAgICAgIHNlbGYuc2V0dXAoKQogICAgICAgICBjb21tYW5kcyA9IHsicnVuX3Rl
c3QiOiBzZWxmLnJ1bl90ZXN0LAorICAgICAgICAgICAgICAgICAgICAicmVzZXQiOiBzZWxmLnJl
c2V0LAogICAgICAgICAgICAgICAgICAgICAic3RvcCI6IHNlbGYuc3RvcCwKICAgICAgICAgICAg
ICAgICAgICAgIndhaXQiOiBzZWxmLndhaXR9CiAgICAgICAgIHdoaWxlIFRydWU6CkBAIC05OSw2
ICsxMTgsOSBAQCBjbGFzcyBUZXN0UnVubmVyKG9iamVjdCk6CiAgICAgZGVmIHN0b3Aoc2VsZik6
CiAgICAgICAgIHJldHVybiBTdG9wCiAKKyAgICBkZWYgcmVzZXQoc2VsZik6CisgICAgICAgIHNl
bGYuZXhlY3V0b3IucmVzZXQoKQorCiAgICAgZGVmIHJ1bl90ZXN0KHNlbGYsIHRlc3QpOgogICAg
ICAgICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5leGVjdXRvci5ydW5fdGVzdCh0ZXN0
KQpAQCAtMTE3LDMwICsxMzksMzUgQEAgY2xhc3MgVGVzdFJ1bm5lcihvYmplY3QpOgogZGVmIHN0
YXJ0X3J1bm5lcihydW5uZXJfY29tbWFuZF9xdWV1ZSwgcnVubmVyX3Jlc3VsdF9xdWV1ZSwKICAg
ICAgICAgICAgICAgICAgZXhlY3V0b3JfY2xzLCBleGVjdXRvcl9rd2FyZ3MsCiAgICAgICAgICAg
ICAgICAgIGV4ZWN1dG9yX2Jyb3dzZXJfY2xzLCBleGVjdXRvcl9icm93c2VyX2t3YXJncywKLSAg
ICAgICAgICAgICAgICAgc3RvcF9mbGFnKToKKyAgICAgICAgICAgICAgICAgY2FwdHVyZV9zdGRp
bywgc3RvcF9mbGFnKToKICAgICAiIiJMYXVuY2ggYSBUZXN0UnVubmVyIGluIGEgbmV3IHByb2Nl
c3MiIiIKLSAgICBkZWYgbG9nKGxldmVsLCBtc2cpOgotICAgICAgICBydW5uZXJfcmVzdWx0X3F1
ZXVlLnB1dCgoImxvZyIsIChsZXZlbCwgeyJtZXNzYWdlIjogbXNnfSkpKQorCisgICAgZGVmIHNl
bmRfbWVzc2FnZShjb21tYW5kLCAqYXJncyk6CisgICAgICAgIHJ1bm5lcl9yZXN1bHRfcXVldWUu
cHV0KChjb21tYW5kLCBhcmdzKSkKIAogICAgIGRlZiBoYW5kbGVfZXJyb3IoZSk6Ci0gICAgICAg
IGxvZygiY3JpdGljYWwiLCB0cmFjZWJhY2suZm9ybWF0X2V4YygpKQorICAgICAgICBsb2dnZXIu
Y3JpdGljYWwodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgc3RvcF9mbGFnLnNldCgp
CiAKLSAgICB0cnk6Ci0gICAgICAgIGJyb3dzZXIgPSBleGVjdXRvcl9icm93c2VyX2NscygqKmV4
ZWN1dG9yX2Jyb3dzZXJfa3dhcmdzKQotICAgICAgICBleGVjdXRvciA9IGV4ZWN1dG9yX2Nscyhi
cm93c2VyLCAqKmV4ZWN1dG9yX2t3YXJncykKLSAgICAgICAgd2l0aCBUZXN0UnVubmVyKHJ1bm5l
cl9jb21tYW5kX3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1ZXVlLCBleGVjdXRvcikgYXMgcnVubmVy
OgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJ1bm5lci5ydW4oKQotICAgICAg
ICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICAgICAgICAgIHN0b3BfZmxh
Zy5zZXQoKQotICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAg
ICAgIGhhbmRsZV9lcnJvcihlKQotICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAg
aGFuZGxlX2Vycm9yKGUpCi0gICAgZmluYWxseToKLSAgICAgICAgcnVubmVyX2NvbW1hbmRfcXVl
dWUgPSBOb25lCi0gICAgICAgIHJ1bm5lcl9yZXN1bHRfcXVldWUgPSBOb25lCisgICAgIyBFbnN1
cmUgdGhhdCB3aGVuIHdlIHN0YXJ0IHRoaXMgaW4gYSBuZXcgcHJvY2VzcyB3ZSBoYXZlIHRoZSBn
bG9iYWwgbG9jaworICAgICMgaW4gdGhlIGxvZ2dpbmcgbW9kdWxlIHVubG9ja2VkCisgICAgcmVs
ZWFzZV9tb3psb2dfbG9jaygpCisKKyAgICBsb2dnZXIgPSBNZXNzYWdlTG9nZ2VyKHNlbmRfbWVz
c2FnZSkKKworICAgIHdpdGggY2FwdHVyZS5DYXB0dXJlSU8obG9nZ2VyLCBjYXB0dXJlX3N0ZGlv
KToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgYnJvd3NlciA9IGV4ZWN1dG9yX2Jyb3dzZXJf
Y2xzKCoqZXhlY3V0b3JfYnJvd3Nlcl9rd2FyZ3MpCisgICAgICAgICAgICBleGVjdXRvciA9IGV4
ZWN1dG9yX2Nscyhicm93c2VyLCAqKmV4ZWN1dG9yX2t3YXJncykKKyAgICAgICAgICAgIHdpdGgg
VGVzdFJ1bm5lcihsb2dnZXIsIHJ1bm5lcl9jb21tYW5kX3F1ZXVlLCBydW5uZXJfcmVzdWx0X3F1
ZXVlLCBleGVjdXRvcikgYXMgcnVubmVyOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAg
ICAgICAgICAgICAgcnVubmVyLnJ1bigpCisgICAgICAgICAgICAgICAgZXhjZXB0IEtleWJvYXJk
SW50ZXJydXB0OgorICAgICAgICAgICAgICAgICAgICBzdG9wX2ZsYWcuc2V0KCkKKyAgICAgICAg
ICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIGhhbmRs
ZV9lcnJvcihlKQorICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisgICAgICAgICAgICBo
YW5kbGVfZXJyb3IoZSkKIAogCiBtYW5hZ2VyX2NvdW50ID0gMApAQCAtMjEwLDcgKzIzNyw3IEBA
IGNsYXNzIEJyb3dzZXJNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuY29tbWFuZF9xdWV1
ZS5wdXQoKGNvbW1hbmQsIGFyZ3MpKQogCiAgICAgZGVmIGluaXRfdGltZW91dChzZWxmKToKLSAg
ICAgICAgIyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgc2VwZXJhdGUgdGhyZWFkLCBzbyB3ZSBzZW5k
IGEgbWVzc2FnZSB0byB0aGUKKyAgICAgICAgIyBUaGlzIGlzIGNhbGxlZCBmcm9tIGEgc2VwYXJh
dGUgdGhyZWFkLCBzbyB3ZSBzZW5kIGEgbWVzc2FnZSB0byB0aGUKICAgICAgICAgIyBtYWluIGxv
b3Agc28gd2UgZ2V0IGJhY2sgb250byB0aGUgbWFuYWdlciB0aHJlYWQKICAgICAgICAgc2VsZi5s
b2dnZXIuZGVidWcoImluaXRfZmFpbGVkIGNhbGxlZCBmcm9tIHRpbWVyIikKICAgICAgICAgc2Vs
Zi5zZW5kX21lc3NhZ2UoImluaXRfZmFpbGVkIikKQEAgLTIyOSwxMSArMjU2LDggQEAgY2xhc3Mg
QnJvd3Nlck1hbmFnZXIob2JqZWN0KToKICAgICAgICAgaWYgc2VsZi5pbml0X3RpbWVyIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgc2VsZi5pbml0X3RpbWVyLmNhbmNlbCgpCiAKLSAgICBkZWYg
Y2hlY2tfZm9yX2NyYXNoZXMoc2VsZik6Ci0gICAgICAgIHNlbGYuYnJvd3Nlci5jaGVja19mb3Jf
Y3Jhc2hlcygpCi0KLSAgICBkZWYgbG9nX2NyYXNoKHNlbGYsIHRlc3RfaWQpOgotICAgICAgICBz
ZWxmLmJyb3dzZXIubG9nX2NyYXNoKHByb2Nlc3M9c2VsZi5icm93c2VyX3BpZCwgdGVzdD10ZXN0
X2lkKQorICAgIGRlZiBjaGVja19jcmFzaChzZWxmLCB0ZXN0X2lkKToKKyAgICAgICAgcmV0dXJu
IHNlbGYuYnJvd3Nlci5jaGVja19jcmFzaChwcm9jZXNzPXNlbGYuYnJvd3Nlcl9waWQsIHRlc3Q9
dGVzdF9pZCkKIAogICAgIGRlZiBpc19hbGl2ZShzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYu
YnJvd3Nlci5pc19hbGl2ZSgpCkBAIC0yNTUsNyArMjc5LDggQEAgUnVubmVyTWFuYWdlclN0YXRl
ID0gX1J1bm5lck1hbmFnZXJTdGF0ZSgpCiBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRp
bmcuVGhyZWFkKToKICAgICBkZWYgX19pbml0X18oc2VsZiwgc3VpdGVfbmFtZSwgdGVzdF9xdWV1
ZSwgdGVzdF9zb3VyY2VfY2xzLCBicm93c2VyX2NscywgYnJvd3Nlcl9rd2FyZ3MsCiAgICAgICAg
ICAgICAgICAgIGV4ZWN1dG9yX2NscywgZXhlY3V0b3Jfa3dhcmdzLCBzdG9wX2ZsYWcsIHJlcnVu
PTEsIHBhdXNlX2FmdGVyX3Rlc3Q9RmFsc2UsCi0gICAgICAgICAgICAgICAgIHBhdXNlX29uX3Vu
ZXhwZWN0ZWQ9RmFsc2UsIHJlc3RhcnRfb25fdW5leHBlY3RlZD1UcnVlLCBkZWJ1Z19pbmZvPU5v
bmUpOgorICAgICAgICAgICAgICAgICBwYXVzZV9vbl91bmV4cGVjdGVkPUZhbHNlLCByZXN0YXJ0
X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwgZGVidWdfaW5mbz1Ob25lLAorICAgICAgICAgICAgICAgICBj
YXB0dXJlX3N0ZGlvPVRydWUpOgogICAgICAgICAiIiJUaHJlYWQgdGhhdCBvd25zIGEgc2luZ2xl
IFRlc3RSdW5uZXIgcHJvY2VzcyBhbmQgYW55IHByb2Nlc3NlcyByZXF1aXJlZAogICAgICAgICBi
eSB0aGUgVGVzdFJ1bm5lciAoZS5nLiB0aGUgRmlyZWZveCBiaW5hcnkpLgogCkBAIC0yOTksNyAr
MzI0LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAKICAg
ICAgICAgc2VsZi50ZXN0X3J1bm5lcl9wcm9jID0gTm9uZQogCi0gICAgICAgIHRocmVhZGluZy5U
aHJlYWQuX19pbml0X18oc2VsZiwgbmFtZT0iVGhyZWFkLVRlc3RydW5uZXJNYW5hZ2VyLSVpIiAl
IHNlbGYubWFuYWdlcl9udW1iZXIpCisgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18o
c2VsZiwgbmFtZT0iVGVzdFJ1bm5lck1hbmFnZXItJWkiICUgc2VsZi5tYW5hZ2VyX251bWJlcikK
ICAgICAgICAgIyBUaGlzIGlzIHN0YXJ0ZWQgaW4gdGhlIGFjdHVhbCBuZXcgdGhyZWFkCiAgICAg
ICAgIHNlbGYubG9nZ2VyID0gTm9uZQogCkBAIC0zMDksMTQgKzMzNCwxOCBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKICAgICAgICAgIyBUaGlzIG1heSBub3Qg
cmVhbGx5IGJlIHdoYXQgd2Ugd2FudAogICAgICAgICBzZWxmLmRhZW1vbiA9IFRydWUKIAorICAg
ICAgICBzZWxmLnRpbWVyID0gTm9uZQorCiAgICAgICAgIHNlbGYubWF4X3Jlc3RhcnRzID0gNQog
CiAgICAgICAgIHNlbGYuYnJvd3NlciA9IE5vbmUKIAorICAgICAgICBzZWxmLmNhcHR1cmVfc3Rk
aW8gPSBjYXB0dXJlX3N0ZGlvCisKICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICAiIiJNYWlu
IGxvb3AgZm9yIHRoZSBUZXN0TWFuYWdlci4KKyAgICAgICAgIiIiTWFpbiBsb29wIGZvciB0aGUg
VGVzdFJ1bm5lck1hbmFnZXIuCiAKLSAgICAgICAgVGVzdE1hbmFnZXJzIGdlbmVyYWxseSByZWNl
aXZlIGNvbW1hbmRzIGZyb20gdGhlaXIKKyAgICAgICAgVGVzdFJ1bm5lck1hbmFnZXJzIGdlbmVy
YWxseSByZWNlaXZlIGNvbW1hbmRzIGZyb20gdGhlaXIKICAgICAgICAgVGVzdFJ1bm5lciB1cGRh
dGluZyB0aGVtIG9uIHRoZSBzdGF0dXMgb2YgYSB0ZXN0LiBUaGV5CiAgICAgICAgIG1heSBhbHNv
IGhhdmUgYSBzdG9wIGZsYWcgc2V0IGJ5IHRoZSBtYWluIHRocmVhZCBpbmRpY2F0aW5nCiAgICAg
ICAgIHRoYXQgdGhlIG1hbmFnZXIgc2hvdWxkIHNodXQgZG93biB0aGUgbmV4dCB0aW1lIHRoZSBl
dmVudCBsb29wCkBAIC00NDYsNyArNDc1LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhy
ZWFkaW5nLlRocmVhZCk6CiAgICAgZGVmIGluaXQoc2VsZik6CiAgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHNlbGYuc3RhdGUsIFJ1bm5lck1hbmFnZXJTdGF0ZS5pbml0aWFsaXppbmcpCiAgICAg
ICAgIGlmIHNlbGYuc3RhdGUuZmFpbHVyZV9jb3VudCA+IHNlbGYubWF4X3Jlc3RhcnRzOgotICAg
ICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIk1heCByZXN0YXJ0cyBleGNlZWRlZCIpCisgICAg
ICAgICAgICBzZWxmLmxvZ2dlci5jcml0aWNhbCgiTWF4IHJlc3RhcnRzIGV4Y2VlZGVkIikKICAg
ICAgICAgICAgIHJldHVybiBSdW5uZXJNYW5hZ2VyU3RhdGUuZXJyb3IoKQogCiAgICAgICAgIHNl
bGYuYnJvd3Nlci51cGRhdGVfc2V0dGluZ3Moc2VsZi5zdGF0ZS50ZXN0KQpAQCAtNDc5LDEwICs1
MDgsMTEgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAg
ICAgICAgICAgICAgc2VsZi5leGVjdXRvcl9rd2FyZ3MsCiAgICAgICAgICAgICAgICAgZXhlY3V0
b3JfYnJvd3Nlcl9jbHMsCiAgICAgICAgICAgICAgICAgZXhlY3V0b3JfYnJvd3Nlcl9rd2FyZ3Ms
CisgICAgICAgICAgICAgICAgc2VsZi5jYXB0dXJlX3N0ZGlvLAogICAgICAgICAgICAgICAgIHNl
bGYuY2hpbGRfc3RvcF9mbGFnKQogICAgICAgICBzZWxmLnRlc3RfcnVubmVyX3Byb2MgPSBQcm9j
ZXNzKHRhcmdldD1zdGFydF9ydW5uZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgYXJncz1hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG5hbWU9IlRocmVhZC1UZXN0UnVubmVyLSVpIiAlIHNlbGYubWFuYWdlcl9udW1iZXIpCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZT0iVGVzdFJ1bm5lci0l
aSIgJSBzZWxmLm1hbmFnZXJfbnVtYmVyKQogICAgICAgICBzZWxmLnRlc3RfcnVubmVyX3Byb2Mu
c3RhcnQoKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVGVzdCBydW5uZXIgc3RhcnRlZCIp
CiAgICAgICAgICMgTm93IHdlIHdhaXQgZm9yIGVpdGhlciBhbiBpbml0X3N1Y2NlZWRlZCBldmVu
dCBvciBhbiBpbml0X2ZhaWxlZCBldmVudApAQCAtNDk2LDYgKzUyNiw3IEBAIGNsYXNzIFRlc3RS
dW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogCiAgICAgZGVmIGluaXRfZmFpbGVkKHNl
bGYpOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxmLnN0YXRlLCBSdW5uZXJNYW5hZ2Vy
U3RhdGUuaW5pdGlhbGl6aW5nKQorICAgICAgICBzZWxmLmJyb3dzZXIuY2hlY2tfY3Jhc2goTm9u
ZSkKICAgICAgICAgc2VsZi5icm93c2VyLmFmdGVyX2luaXQoKQogICAgICAgICBzZWxmLnN0b3Bf
cnVubmVyKGZvcmNlPVRydWUpCiAgICAgICAgIHJldHVybiBSdW5uZXJNYW5hZ2VyU3RhdGUuaW5p
dGlhbGl6aW5nKHNlbGYuc3RhdGUudGVzdCwKQEAgLTUyOCw4ICs1NTksMjQgQEAgY2xhc3MgVGVz
dFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgIHNlbGYubG9nZ2VyLnRl
c3Rfc3RhcnQoc2VsZi5zdGF0ZS50ZXN0LmlkKQogICAgICAgICBpZiBzZWxmLnJlcnVuID4gMToK
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlJ1biAlZC8lZCIgJSAoc2VsZi5ydW5fY291
bnQsIHNlbGYucmVydW4pKQorICAgICAgICAgICAgc2VsZi5zZW5kX21lc3NhZ2UoInJlc2V0IikK
ICAgICAgICAgc2VsZi5ydW5fY291bnQgKz0gMQorICAgICAgICAjIEZhY3RvciBvZiAzIG9uIHRo
ZSBleHRyYSB0aW1lb3V0IGhlcmUgaXMgYmFzZWQgb24gYWxsb3dpbmcgdGhlIGV4ZWN1dG9yCisg
ICAgICAgICMgYXQgbGVhc3QgdGVzdC50aW1lb3V0ICsgMiAqIGV4dHJhX3RpbWVvdXQgdG8gY29t
cGxldGUsCisgICAgICAgICMgd2hpY2ggaW4gdHVybiBpcyBiYXNlZCBvbiBoYXZpbmcgc2V2ZXJh
bCBsYXllcnMgb2YgdGltZW91dCBpbnNpZGUgdGhlIGV4ZWN1dG9yCisgICAgICAgIHdhaXRfdGlt
ZW91dCA9IChzZWxmLnN0YXRlLnRlc3QudGltZW91dCAqIHNlbGYuZXhlY3V0b3Jfa3dhcmdzWyd0
aW1lb3V0X211bHRpcGxpZXInXSArCisgICAgICAgICAgICAgICAgICAgICAgICAzICogc2VsZi5l
eGVjdXRvcl9jbHMuZXh0cmFfdGltZW91dCkKKyAgICAgICAgc2VsZi50aW1lciA9IHRocmVhZGlu
Zy5UaW1lcih3YWl0X3RpbWVvdXQsIHNlbGYuX3RpbWVvdXQpCiAgICAgICAgIHNlbGYuc2VuZF9t
ZXNzYWdlKCJydW5fdGVzdCIsIHNlbGYuc3RhdGUudGVzdCkKKyAgICAgICAgc2VsZi50aW1lci5z
dGFydCgpCisKKyAgICBkZWYgX3RpbWVvdXQoc2VsZik6CisgICAgICAgIHNlbGYubG9nZ2VyLmlu
Zm8oIkdvdCB0aW1lb3V0IGluIGhhcm5lc3MiKQorICAgICAgICB0ZXN0ID0gc2VsZi5zdGF0ZS50
ZXN0CisgICAgICAgIHNlbGYudGVzdF9lbmRlZCh0ZXN0LAorICAgICAgICAgICAgICAgICAgICAg
ICAgKHRlc3QucmVzdWx0X2NscygiRVhURVJOQUwtVElNRU9VVCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJUZXN0UnVubmVyIGhpdCBleHRlcm5hbCB0aW1lb3V0
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIih0aGlzIG1heSBp
bmRpY2F0ZSBhIGhhbmcpIiksIFtdKSkKIAogICAgIGRlZiB0ZXN0X2VuZGVkKHNlbGYsIHRlc3Qs
IHJlc3VsdHMpOgogICAgICAgICAiIiJIYW5kbGUgdGhlIGVuZCBvZiBhIHRlc3QuCkBAIC01Mzks
MTQgKzU4NiwyMiBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToK
ICAgICAgICAgIiIiCiAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKHNlbGYuc3RhdGUsIFJ1bm5l
ck1hbmFnZXJTdGF0ZS5ydW5uaW5nKQogICAgICAgICBhc3NlcnQgdGVzdCA9PSBzZWxmLnN0YXRl
LnRlc3QKKyAgICAgICAgc2VsZi50aW1lci5jYW5jZWwoKQogICAgICAgICAjIFdyaXRlIHRoZSBy
ZXN1bHQgb2YgZWFjaCBzdWJ0ZXN0CiAgICAgICAgIGZpbGVfcmVzdWx0LCB0ZXN0X3Jlc3VsdHMg
PSByZXN1bHRzCiAgICAgICAgIHN1YnRlc3RfdW5leHBlY3RlZCA9IEZhbHNlCisgICAgICAgIGV4
cGVjdF9hbnlfc3VidGVzdF9zdGF0dXMgPSB0ZXN0LmV4cGVjdF9hbnlfc3VidGVzdF9zdGF0dXMo
KQorICAgICAgICBpZiBleHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzOgorICAgICAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoIklnbm9yaW5nIHN1YnRlc3Qgc3RhdHVzZXMgZm9yIHRlc3QgJXMiICUg
dGVzdC5pZCkKICAgICAgICAgZm9yIHJlc3VsdCBpbiB0ZXN0X3Jlc3VsdHM6CiAgICAgICAgICAg
ICBpZiB0ZXN0LmRpc2FibGVkKHJlc3VsdC5uYW1lKToKICAgICAgICAgICAgICAgICBjb250aW51
ZQotICAgICAgICAgICAgZXhwZWN0ZWQgPSB0ZXN0LmV4cGVjdGVkKHJlc3VsdC5uYW1lKQotICAg
ICAgICAgICAgaXNfdW5leHBlY3RlZCA9IGV4cGVjdGVkICE9IHJlc3VsdC5zdGF0dXMKKyAgICAg
ICAgICAgIGlmIGV4cGVjdF9hbnlfc3VidGVzdF9zdGF0dXM6CisgICAgICAgICAgICAgICAgZXhw
ZWN0ZWQgPSByZXN1bHQuc3RhdHVzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IGV4cGVjdGVkID0gdGVzdC5leHBlY3RlZChyZXN1bHQubmFtZSkKKyAgICAgICAgICAgIGtub3du
X2ludGVybWl0dGVudCA9IHRlc3Qua25vd25faW50ZXJtaXR0ZW50KHJlc3VsdC5uYW1lKQorICAg
ICAgICAgICAgaXNfdW5leHBlY3RlZCA9IGV4cGVjdGVkICE9IHJlc3VsdC5zdGF0dXMgYW5kIHJl
c3VsdC5zdGF0dXMgbm90IGluIGtub3duX2ludGVybWl0dGVudAogCiAgICAgICAgICAgICBpZiBp
c191bmV4cGVjdGVkOgogICAgICAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZF9jb3VudCArPSAx
CkBAIC01NTcsNiArNjEyLDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRo
cmVhZCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuc3RhdHVz
LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT1yZXN1bHQubWVz
c2FnZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVj
dGVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga25vd25faW50ZXJtaXR0
ZW50PWtub3duX2ludGVybWl0dGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHN0YWNrPXJlc3VsdC5zdGFjaykKIAogICAgICAgICAjIFdlIGhhdmUgYSBjb3VwbGUgb2Yg
c3RhdHVzIGNvZGVzIHRoYXQgYXJlIHVzZWQgaW50ZXJuYWxseSwgYnV0IG5vdCBleHBvc2VkIHRv
IHRoZQpAQCAtNTY4LDE5ICs2MjQsMTcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFk
aW5nLlRocmVhZCk6CiAgICAgICAgIHN0YXR1c19zdWJucyA9IHsiSU5URVJOQUwtRVJST1IiOiAi
RVJST1IiLAogICAgICAgICAgICAgICAgICAgICAgICAgIkVYVEVSTkFMLVRJTUVPVVQiOiAiVElN
RU9VVCJ9CiAgICAgICAgIGV4cGVjdGVkID0gdGVzdC5leHBlY3RlZCgpCisgICAgICAgIGtub3du
X2ludGVybWl0dGVudCA9IHRlc3Qua25vd25faW50ZXJtaXR0ZW50KCkKICAgICAgICAgc3RhdHVz
ID0gc3RhdHVzX3N1Ym5zLmdldChmaWxlX3Jlc3VsdC5zdGF0dXMsIGZpbGVfcmVzdWx0LnN0YXR1
cykKIAotICAgICAgICBpZiBmaWxlX3Jlc3VsdC5zdGF0dXMgaW4gKCJUSU1FT1VUIiwgIkVYVEVS
TkFMLVRJTUVPVVQiLCAiSU5URVJOQUwtRVJST1IiKToKLSAgICAgICAgICAgIGlmIHNlbGYuYnJv
d3Nlci5jaGVja19mb3JfY3Jhc2hlcygpOgotICAgICAgICAgICAgICAgIHN0YXR1cyA9ICJDUkFT
SCIKKyAgICAgICAgaWYgc2VsZi5icm93c2VyLmNoZWNrX2NyYXNoKHRlc3QuaWQpOgorICAgICAg
ICAgICAgc3RhdHVzID0gIkNSQVNIIgogCiAgICAgICAgIHNlbGYudGVzdF9jb3VudCArPSAxCi0g
ICAgICAgIGlzX3VuZXhwZWN0ZWQgPSBleHBlY3RlZCAhPSBzdGF0dXMKKyAgICAgICAgaXNfdW5l
eHBlY3RlZCA9IGV4cGVjdGVkICE9IHN0YXR1cyBhbmQgc3RhdHVzIG5vdCBpbiBrbm93bl9pbnRl
cm1pdHRlbnQKICAgICAgICAgaWYgaXNfdW5leHBlY3RlZDoKICAgICAgICAgICAgIHNlbGYudW5l
eHBlY3RlZF9jb3VudCArPSAxCiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVW5leHBl
Y3RlZCBjb3VudCBpbiB0aGlzIHRocmVhZCAlaSIgJSBzZWxmLnVuZXhwZWN0ZWRfY291bnQpCi0g
ICAgICAgIGlmIHN0YXR1cyA9PSAiQ1JBU0giOgotICAgICAgICAgICAgc2VsZi5icm93c2VyLmxv
Z19jcmFzaCh0ZXN0LmlkKQogCiAgICAgICAgIGlmICJhc3NlcnRpb25fY291bnQiIGluIGZpbGVf
cmVzdWx0LmV4dHJhOgogICAgICAgICAgICAgYXNzZXJ0aW9uX2NvdW50ID0gZmlsZV9yZXN1bHQu
ZXh0cmEucG9wKCJhc3NlcnRpb25fY291bnQiKQpAQCAtNTkwLDEwICs2NDQsMTMgQEAgY2xhc3Mg
VGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3QubWluX2Fzc2VydGlvbl9jb3VudCwKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdC5tYXhfYXNzZXJ0aW9u
X2NvdW50KQogCisgICAgICAgIGZpbGVfcmVzdWx0LmV4dHJhWyJ0ZXN0X3RpbWVvdXQiXSA9IHRl
c3QudGltZW91dCAqIHNlbGYuZXhlY3V0b3Jfa3dhcmdzWyd0aW1lb3V0X211bHRpcGxpZXInXQor
CiAgICAgICAgIHNlbGYubG9nZ2VyLnRlc3RfZW5kKHRlc3QuaWQsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXR1cywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2Fn
ZT1maWxlX3Jlc3VsdC5tZXNzYWdlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBl
Y3RlZD1leHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAga25vd25faW50ZXJt
aXR0ZW50PWtub3duX2ludGVybWl0dGVudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ZXh0cmE9ZmlsZV9yZXN1bHQuZXh0cmEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0
YWNrPWZpbGVfcmVzdWx0LnN0YWNrKQogCkBAIC02MTIsMTAgKzY2OSwxMCBAQCBjbGFzcyBUZXN0
UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhyZWFkKToKIAogICAgIGRlZiB3YWl0X2ZpbmlzaGVk
KHNlbGYpOgogICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShzZWxmLnN0YXRlLCBSdW5uZXJNYW5h
Z2VyU3RhdGUucnVubmluZykKLSAgICAgICAgIyBUaGUgYnJvd3NlciBzaG91bGQgYmUgc3RvcHBl
ZCBhbHJlYWR5LCBidXQgdGhpcyBlbnN1cmVzIHdlIGRvIGFueSBwb3N0LXN0b3AKLSAgICAgICAg
IyBwcm9jZXNzaW5nCiAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJXYWl0IGZpbmlzaGVkIikK
IAorICAgICAgICAjIFRoZSBicm93c2VyIHNob3VsZCBiZSBzdG9wcGVkIGFscmVhZHksIGJ1dCB0
aGlzIGVuc3VyZXMgd2UgZG8gYW55CisgICAgICAgICMgcG9zdC1zdG9wIHByb2Nlc3NpbmcKICAg
ICAgICAgcmV0dXJuIHNlbGYuYWZ0ZXJfdGVzdF9lbmQoc2VsZi5zdGF0ZS50ZXN0LCBUcnVlKQog
CiAgICAgZGVmIGFmdGVyX3Rlc3RfZW5kKHNlbGYsIHRlc3QsIHJlc3RhcnQpOgpAQCAtNjI4LDcg
KzY4NSw2IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAg
ICAgICAgICAgICAgICMgV2UgYXJlIHN0YXJ0aW5nIGEgbmV3IGdyb3VwIG9mIHRlc3RzLCBzbyBm
b3JjZSBhIHJlc3RhcnQKICAgICAgICAgICAgICAgICByZXN0YXJ0ID0gVHJ1ZQogICAgICAgICBl
bHNlOgotICAgICAgICAgICAgdGVzdCA9IHRlc3QKICAgICAgICAgICAgIHRlc3RfZ3JvdXAgPSBz
ZWxmLnN0YXRlLnRlc3RfZ3JvdXAKICAgICAgICAgICAgIGdyb3VwX21ldGFkYXRhID0gc2VsZi5z
dGF0ZS5ncm91cF9tZXRhZGF0YQogICAgICAgICBpZiByZXN0YXJ0OgpAQCAtNjYzLDcgKzcxOSw3
IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2VyKHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAg
ICAgc2VsZi5jbGVhbnVwKCkKIAogICAgIGRlZiB0ZWFyZG93bihzZWxmKToKLSAgICAgICAgc2Vs
Zi5sb2dnZXIuZGVidWcoInRlYXJkb3duIGluIHRlc3RydW5uZXJtYW5hZ2VyIikKKyAgICAgICAg
c2VsZi5sb2dnZXIuZGVidWcoIlRlc3RSdW5uZXJNYW5hZ2VyIHRlYXJkb3duIikKICAgICAgICAg
c2VsZi50ZXN0X3J1bm5lcl9wcm9jID0gTm9uZQogICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUu
Y2xvc2UoKQogICAgICAgICBzZWxmLnJlbW90ZV9xdWV1ZS5jbG9zZSgpCkBAIC02NzUsNiArNzMx
LDcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAg
IGlmIHNlbGYudGVzdF9ydW5uZXJfcHJvYyBpcyBOb25lOgogICAgICAgICAgICAgcmV0dXJuCiAK
KyAgICAgICAgc2VsZi5icm93c2VyLnN0b3AoZm9yY2U9VHJ1ZSkKICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoIndhaXRpbmcgZm9yIHJ1bm5lciBwcm9jZXNzIHRvIGVuZCIpCiAgICAgICAgIHNl
bGYudGVzdF9ydW5uZXJfcHJvYy5qb2luKDEwKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1Zygi
QWZ0ZXIgam9pbiIpCkBAIC02ODIsOSArNzM5LDE4IEBAIGNsYXNzIFRlc3RSdW5uZXJNYW5hZ2Vy
KHRocmVhZGluZy5UaHJlYWQpOgogICAgICAgICAgICAgIyBUaGlzIG1pZ2h0IGxlYWsgYSBmaWxl
IGhhbmRsZSBmcm9tIHRoZSBxdWV1ZQogICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygi
Rm9yY2libHkgdGVybWluYXRpbmcgcnVubmVyIHByb2Nlc3MiKQogICAgICAgICAgICAgc2VsZi50
ZXN0X3J1bm5lcl9wcm9jLnRlcm1pbmF0ZSgpCi0gICAgICAgICAgICBzZWxmLnRlc3RfcnVubmVy
X3Byb2Muam9pbigxMCkKKworICAgICAgICAgICAgIyBNdWx0aXByb2Nlc3NpbmcgcXVldWVzIGFy
ZSBiYWNrZWQgYnkgb3BlcmF0aW5nIHN5c3RlbSBwaXBlcy4gSWYKKyAgICAgICAgICAgICMgdGhl
IHBpcGUgaW4gdGhlIGNoaWxkIHByb2Nlc3MgaGFkIGJ1ZmZlcmVkIGRhdGEgYXQgdGhlIHRpbWUg
b2YKKyAgICAgICAgICAgICMgZm9yY2VkIHRlcm1pbmF0aW9uLCB0aGUgcXVldWUgaXMgbm8gbG9u
Z2VyIGluIGEgdXNhYmxlIHN0YXRlCisgICAgICAgICAgICAjIChzdWJzZXF1ZW50IGF0dGVtcHRz
IHRvIHJldHJpZXZlIGl0ZW1zIG1heSBibG9jayBpbmRlZmluaXRlbHkpLgorICAgICAgICAgICAg
IyBEaXNjYXJkIHRoZSBwb3RlbnRpYWxseS1jb3JydXB0ZWQgcXVldWUgYW5kIGNyZWF0ZSBhIG5l
dyBvbmUuCisgICAgICAgICAgICBzZWxmLmNvbW1hbmRfcXVldWUuY2xvc2UoKQorICAgICAgICAg
ICAgc2VsZi5jb21tYW5kX3F1ZXVlID0gUXVldWUoKQorICAgICAgICAgICAgc2VsZi5yZW1vdGVf
cXVldWUuY2xvc2UoKQorICAgICAgICAgICAgc2VsZi5yZW1vdGVfcXVldWUgPSBRdWV1ZSgpCiAg
ICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVGVzdHJ1bm5lciBl
eGl0ZWQgd2l0aCBjb2RlICVpIiAlIHNlbGYudGVzdF9ydW5uZXJfcHJvYy5leGl0Y29kZSkKKyAg
ICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJSdW5uZXIgcHJvY2VzcyBleGl0ZWQgd2l0aCBj
b2RlICVpIiAlIHNlbGYudGVzdF9ydW5uZXJfcHJvYy5leGl0Y29kZSkKIAogICAgIGRlZiBydW5u
ZXJfdGVhcmRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuZW5zdXJlX3J1bm5lcl9zdG9wcGVkKCkK
QEAgLTY5NCw3ICs3NjAsNyBAQCBjbGFzcyBUZXN0UnVubmVyTWFuYWdlcih0aHJlYWRpbmcuVGhy
ZWFkKToKICAgICAgICAgc2VsZi5yZW1vdGVfcXVldWUucHV0KChjb21tYW5kLCBhcmdzKSkKIAog
ICAgIGRlZiBjbGVhbnVwKHNlbGYpOgotICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVGVzdE1h
bmFnZXIgY2xlYW51cCIpCisgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJUZXN0UnVubmVyTWFu
YWdlciBjbGVhbnVwIikKICAgICAgICAgaWYgc2VsZi5icm93c2VyOgogICAgICAgICAgICAgc2Vs
Zi5icm93c2VyLmNsZWFudXAoKQogICAgICAgICB3aGlsZSBUcnVlOgpAQCAtNzA1LDEyICs3NzEs
MTcgQEAgY2xhc3MgVGVzdFJ1bm5lck1hbmFnZXIodGhyZWFkaW5nLlRocmVhZCk6CiAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGlmIGNtZCA9PSAibG9nIjoKICAgICAgICAgICAg
ICAgICAgICAgc2VsZi5sb2coKmRhdGEpCisgICAgICAgICAgICAgICAgZWxpZiBjbWQgPT0gInJ1
bm5lcl90ZWFyZG93biI6CisgICAgICAgICAgICAgICAgICAgICMgSXQncyBPSyBmb3IgdGhlICJy
dW5uZXJfdGVhcmRvd24iIG1lc3NhZ2UgdG8gYmUgbGVmdCBpbgorICAgICAgICAgICAgICAgICAg
ICAjIHRoZSBxdWV1ZSBkdXJpbmcgY2xlYW51cCwgYXMgd2Ugd2lsbCBhbHJlYWR5IGhhdmUgdHJp
ZWQKKyAgICAgICAgICAgICAgICAgICAgIyB0byBzdG9wIHRoZSBUZXN0UnVubmVyIGluIGBzdG9w
X3J1bm5lcmAuCisgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICBlbHNl
OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci53YXJuaW5nKCIlcjogJXIiICUgKGNt
ZCwgZGF0YSkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkNvbW1h
bmQgbGVmdCBpbiBjb21tYW5kX3F1ZXVlIGR1cmluZyBjbGVhbnVwOiAlciwgJXIiICUgKGNtZCwg
ZGF0YSkpCiAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAg
ICAgICAgY21kLCBkYXRhID0gc2VsZi5yZW1vdGVfcXVldWUuZ2V0X25vd2FpdCgpCi0gICAgICAg
ICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiJXI6ICVyIiAlIChjbWQsIGRhdGEpKQorICAg
ICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoIkNvbW1hbmQgbGVmdCBpbiByZW1vdGVf
cXVldWUgZHVyaW5nIGNsZWFudXA6ICVyLCAlciIgJSAoY21kLCBkYXRhKSkKICAgICAgICAgICAg
IGV4Y2VwdCBFbXB0eToKICAgICAgICAgICAgICAgICBicmVhawogCkBAIC03MjcsNiArNzk4LDcg
QEAgZGVmIG1ha2VfdGVzdF9xdWV1ZSh0ZXN0cywgdGVzdF9zb3VyY2VfY2xzLCAqKnRlc3Rfc291
cmNlX2t3YXJncyk6CiAKIAogY2xhc3MgTWFuYWdlckdyb3VwKG9iamVjdCk6CisgICAgIiIiTWFp
biB0aHJlYWQgb2JqZWN0IHRoYXQgb3ducyBhbGwgdGhlIFRlc3RSdW5uZXJNYW5hZ2VyIHRocmVh
ZHMuIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlX25hbWUsIHNpemUsIHRlc3Rfc291
cmNlX2NscywgdGVzdF9zb3VyY2Vfa3dhcmdzLAogICAgICAgICAgICAgICAgICBicm93c2VyX2Ns
cywgYnJvd3Nlcl9rd2FyZ3MsCiAgICAgICAgICAgICAgICAgIGV4ZWN1dG9yX2NscywgZXhlY3V0
b3Jfa3dhcmdzLApAQCAtNzM0LDggKzgwNiw4IEBAIGNsYXNzIE1hbmFnZXJHcm91cChvYmplY3Qp
OgogICAgICAgICAgICAgICAgICBwYXVzZV9hZnRlcl90ZXN0PUZhbHNlLAogICAgICAgICAgICAg
ICAgICBwYXVzZV9vbl91bmV4cGVjdGVkPUZhbHNlLAogICAgICAgICAgICAgICAgICByZXN0YXJ0
X29uX3VuZXhwZWN0ZWQ9VHJ1ZSwKLSAgICAgICAgICAgICAgICAgZGVidWdfaW5mbz1Ob25lKToK
LSAgICAgICAgIiIiTWFpbiB0aHJlYWQgb2JqZWN0IHRoYXQgb3ducyBhbGwgdGhlIFRlc3RNYW5h
Z2VyIHRocmVhZHMuIiIiCisgICAgICAgICAgICAgICAgIGRlYnVnX2luZm89Tm9uZSwKKyAgICAg
ICAgICAgICAgICAgY2FwdHVyZV9zdGRpbz1UcnVlKToKICAgICAgICAgc2VsZi5zdWl0ZV9uYW1l
ID0gc3VpdGVfbmFtZQogICAgICAgICBzZWxmLnNpemUgPSBzaXplCiAgICAgICAgIHNlbGYudGVz
dF9zb3VyY2VfY2xzID0gdGVzdF9zb3VyY2VfY2xzCkBAIC03NDksNiArODIxLDcgQEAgY2xhc3Mg
TWFuYWdlckdyb3VwKG9iamVjdCk6CiAgICAgICAgIHNlbGYucmVzdGFydF9vbl91bmV4cGVjdGVk
ID0gcmVzdGFydF9vbl91bmV4cGVjdGVkCiAgICAgICAgIHNlbGYuZGVidWdfaW5mbyA9IGRlYnVn
X2luZm8KICAgICAgICAgc2VsZi5yZXJ1biA9IHJlcnVuCisgICAgICAgIHNlbGYuY2FwdHVyZV9z
dGRpbyA9IGNhcHR1cmVfc3RkaW8KIAogICAgICAgICBzZWxmLnBvb2wgPSBzZXQoKQogICAgICAg
ICAjIEV2ZW50IHRoYXQgaXMgcG9sbGVkIGJ5IHRocmVhZHMgc28gdGhhdCB0aGV5IGNhbiBncmFj
ZWZ1bGx5IGV4aXQgaW4gdGhlIGZhY2UKQEAgLTc4NSwxOSArODU4LDE2IEBAIGNsYXNzIE1hbmFn
ZXJHcm91cChvYmplY3QpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYucGF1c2VfYWZ0ZXJfdGVzdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzZWxmLnBhdXNlX29uX3VuZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0YXJ0X29uX3VuZXhwZWN0ZWQsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z19pbmZvKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGVidWdfaW5mbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNhcHR1cmVfc3RkaW8pCiAgICAg
ICAgICAgICBtYW5hZ2VyLnN0YXJ0KCkKICAgICAgICAgICAgIHNlbGYucG9vbC5hZGQobWFuYWdl
cikKICAgICAgICAgc2VsZi53YWl0KCkKIAotICAgIGRlZiBpc19hbGl2ZShzZWxmKToKLSAgICAg
ICAgIiIiQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgYW55IG1hbmFnZXIgaW4gdGhlIGdyb3Vw
IGlzIHN0aWxsIGFsaXZlIiIiCi0gICAgICAgIHJldHVybiBhbnkobWFuYWdlci5pc19hbGl2ZSgp
IGZvciBtYW5hZ2VyIGluIHNlbGYucG9vbCkKLQogICAgIGRlZiB3YWl0KHNlbGYpOgogICAgICAg
ICAiIiJXYWl0IGZvciBhbGwgdGhlIG1hbmFnZXJzIGluIHRoZSBncm91cCB0byBmaW5pc2giIiIK
LSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5wb29sOgotICAgICAgICAgICAgaXRlbS5qb2luKCkK
KyAgICAgICAgZm9yIG1hbmFnZXIgaW4gc2VsZi5wb29sOgorICAgICAgICAgICAgbWFuYWdlci5q
b2luKCkKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICAiIiJTZXQgdGhlIHN0b3AgZmxh
ZyBzbyB0aGF0IGFsbCBtYW5hZ2VycyBpbiB0aGUgZ3JvdXAgc3RvcCBhcyBzb29uCkBAIC04MDYs
NyArODc2LDcgQEAgY2xhc3MgTWFuYWdlckdyb3VwKG9iamVjdCk6CiAgICAgICAgIHNlbGYubG9n
Z2VyLmRlYnVnKCJTdG9wIGZsYWcgc2V0IGluIE1hbmFnZXJHcm91cCIpCiAKICAgICBkZWYgdGVz
dF9jb3VudChzZWxmKToKLSAgICAgICAgcmV0dXJuIHN1bShpdGVtLnRlc3RfY291bnQgZm9yIGl0
ZW0gaW4gc2VsZi5wb29sKQorICAgICAgICByZXR1cm4gc3VtKG1hbmFnZXIudGVzdF9jb3VudCBm
b3IgbWFuYWdlciBpbiBzZWxmLnBvb2wpCiAKICAgICBkZWYgdW5leHBlY3RlZF9jb3VudChzZWxm
KToKLSAgICAgICAgcmV0dXJuIHN1bShpdGVtLnVuZXhwZWN0ZWRfY291bnQgZm9yIGl0ZW0gaW4g
c2VsZi5wb29sKQorICAgICAgICByZXR1cm4gc3VtKG1hbmFnZXIudW5leHBlY3RlZF9jb3VudCBm
b3IgbWFuYWdlciBpbiBzZWxmLnBvb2wpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMv
X19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvX19pbml0X18ucHkKaW5kZXggYTY4MzRi
ODI4NWE1NmJlZjBlMTU0M2ZkOTAxYzdlNmYyZjhiYzIwMi4uZTY5ZGUyOWJiMmQxZDY0MzRiOGIy
OWFlNzc1YWQ4YzJlNDhjNTM5MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL19faW5p
dF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9fX2luaXRfXy5weQpAQCAtMSArMCwwIEBA
Ci0jIFRoaXMgZmlsZSBpcyByZXF1aXJlZCBmb3IgUHl0aG9uIHRvIHNlYXJjaCB0aGlzIGRpcmVj
dG9yeSBmb3IgbW9kdWxlcy4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvdGVzdHMvYmFzZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9iYXNlLnB5
CmluZGV4IGI1MTczZjNiNTEzZWE0ZjBhMzdkYjJjY2RjMGE5NDg4OTNjNGZlNDUuLjM1YzQ1ODJl
N2NiZDIxZWJmMzNkODQyNGY5NGY5ZDNmMzE0MjYzMTYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci90ZXN0cy9iYXNlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9iYXNlLnB5CkBAIC03LDcg
KzcsNyBAQCBpbXBvcnQgcHl0ZXN0CiAKIHN5cy5wYXRoLmluc2VydCgwLCBqb2luKGRpcm5hbWUo
X19maWxlX18pLCAiLi4iLCAiLi4iKSkKIAotZnJvbSB3cHRydW5uZXIgaW1wb3J0IGJyb3dzZXJz
Citmcm9tIC4uIGltcG9ydCBicm93c2VycwogCiAKIF9wcm9kdWN0cyA9IGJyb3dzZXJzLnByb2R1
Y3RfbGlzdApAQCAtMTgsNiArMTgsNyBAQCBpZiAiQ1VSUkVOVF9UT1hfRU5WIiBpbiBvcy5lbnZp
cm9uOgogCiAgICAgdG94X2Vudl9leHRyYV9icm93c2VycyA9IHsKICAgICAgICAgImNocm9tZSI6
IHsiY2hyb21lX2FuZHJvaWQifSwKKyAgICAgICAgImVkZ2UiOiB7ImVkZ2Vfd2ViZHJpdmVyIn0s
CiAgICAgICAgICJzZXJ2byI6IHsic2Vydm9kcml2ZXIifSwKICAgICB9CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90
ZXN0cy9icm93c2Vycy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5
MDFjN2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1Mzkx
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvX19pbml0X18ucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAK
LSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0
b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci90ZXN0cy9icm93c2Vycy90ZXN0X3NhdWNlLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfc2F1Y2UucHkKaW5kZXggZTg1NDI5NTlhYTJlZmJjZGM1MTkw
YWZjMWM5MDZmMGE2NzE3ZTJjMS4uMDZhNTY0MWQ1MGZiYmFlZDRkZTlkZjUxMWM1Njc3NTNlZjFh
MzI2ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfc2F1Y2Uu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL2Jyb3dzZXJzL3Rlc3Rfc2F1Y2UucHkKQEAgLTI1
LDcgKzI1LDggQEAgZGVmIHRlc3Rfc2F1Y2Vjb25uZWN0X3N1Y2Nlc3MoKToKICAgICAgICAgICAg
IHNhdWNlX3VzZXI9ImFhYSIsCiAgICAgICAgICAgICBzYXVjZV9rZXk9ImJiYiIsCiAgICAgICAg
ICAgICBzYXVjZV90dW5uZWxfaWQ9ImNjYyIsCi0gICAgICAgICAgICBzYXVjZV9jb25uZWN0X2Jp
bmFyeT0iZGRkIikKKyAgICAgICAgICAgIHNhdWNlX2Nvbm5lY3RfYmluYXJ5PSJkZGQiLAorICAg
ICAgICAgICAgc2F1Y2VfY29ubmVjdF9hcmdzPVtdKQogCiAgICAgICAgIHdpdGggQ29uZmlnQnVp
bGRlcihicm93c2VyX2hvc3Q9ImV4YW1wbGUubmV0IikgYXMgZW52X2NvbmZpZzoKICAgICAgICAg
ICAgIHNhdWNlX2Nvbm5lY3QoTm9uZSwgZW52X2NvbmZpZykKQEAgLTU0LDcgKzU1LDggQEAgZGVm
IHRlc3Rfc2F1Y2Vjb25uZWN0X2ZhaWx1cmVfZXhpdChyZWFkeWZpbGUsIHJldHVybmNvZGUpOgog
ICAgICAgICAgICAgc2F1Y2VfdXNlcj0iYWFhIiwKICAgICAgICAgICAgIHNhdWNlX2tleT0iYmJi
IiwKICAgICAgICAgICAgIHNhdWNlX3R1bm5lbF9pZD0iY2NjIiwKLSAgICAgICAgICAgIHNhdWNl
X2Nvbm5lY3RfYmluYXJ5PSJkZGQiKQorICAgICAgICAgICAgc2F1Y2VfY29ubmVjdF9iaW5hcnk9
ImRkZCIsCisgICAgICAgICAgICBzYXVjZV9jb25uZWN0X2FyZ3M9W10pCiAKICAgICAgICAgd2l0
aCBDb25maWdCdWlsZGVyKGJyb3dzZXJfaG9zdD0iZXhhbXBsZS5uZXQiKSBhcyBlbnZfY29uZmln
OgogICAgICAgICAgICAgc2F1Y2VfY29ubmVjdChOb25lLCBlbnZfY29uZmlnKQpAQCAtODIsNyAr
ODQsOCBAQCBkZWYgdGVzdF9zYXVjZWNvbm5lY3RfY2xlYW51cCgpOgogICAgICAgICAgICAgc2F1
Y2VfdXNlcj0iYWFhIiwKICAgICAgICAgICAgIHNhdWNlX2tleT0iYmJiIiwKICAgICAgICAgICAg
IHNhdWNlX3R1bm5lbF9pZD0iY2NjIiwKLSAgICAgICAgICAgIHNhdWNlX2Nvbm5lY3RfYmluYXJ5
PSJkZGQiKQorICAgICAgICAgICAgc2F1Y2VfY29ubmVjdF9iaW5hcnk9ImRkZCIsCisgICAgICAg
ICAgICBzYXVjZV9jb25uZWN0X2FyZ3M9W10pCiAKICAgICAgICAgd2l0aCBDb25maWdCdWlsZGVy
KGJyb3dzZXJfaG9zdD0iZXhhbXBsZS5uZXQiKSBhcyBlbnZfY29uZmlnOgogICAgICAgICAgICAg
c2F1Y2VfY29ubmVjdChOb25lLCBlbnZfY29uZmlnKQpAQCAtMTA2LDcgKzEwOSw4IEBAIGRlZiB0
ZXN0X3NhdWNlY29ubmVjdF9mYWlsdXJlX25ldmVyX3JlYWR5KCk6CiAgICAgICAgICAgICBzYXVj
ZV91c2VyPSJhYWEiLAogICAgICAgICAgICAgc2F1Y2Vfa2V5PSJiYmIiLAogICAgICAgICAgICAg
c2F1Y2VfdHVubmVsX2lkPSJjY2MiLAotICAgICAgICAgICAgc2F1Y2VfY29ubmVjdF9iaW5hcnk9
ImRkZCIpCisgICAgICAgICAgICBzYXVjZV9jb25uZWN0X2JpbmFyeT0iZGRkIiwKKyAgICAgICAg
ICAgIHNhdWNlX2Nvbm5lY3RfYXJncz1bXSkKIAogICAgICAgICB3aXRoIENvbmZpZ0J1aWxkZXIo
YnJvd3Nlcl9ob3N0PSJleGFtcGxlLm5ldCIpIGFzIGVudl9jb25maWc6CiAgICAgICAgICAgICBz
YXVjZV9jb25uZWN0KE5vbmUsIGVudl9jb25maWcpCkBAIC0xMzQsNyArMTM4LDggQEAgZGVmIHRl
c3Rfc2F1Y2Vjb25uZWN0X3R1bm5lbF9kb21haW5zKCk6CiAgICAgICAgICAgICBzYXVjZV91c2Vy
PSJhYWEiLAogICAgICAgICAgICAgc2F1Y2Vfa2V5PSJiYmIiLAogICAgICAgICAgICAgc2F1Y2Vf
dHVubmVsX2lkPSJjY2MiLAotICAgICAgICAgICAgc2F1Y2VfY29ubmVjdF9iaW5hcnk9ImRkZCIp
CisgICAgICAgICAgICBzYXVjZV9jb25uZWN0X2JpbmFyeT0iZGRkIiwKKyAgICAgICAgICAgIHNh
dWNlX2Nvbm5lY3RfYXJncz1bXSkKIAogICAgICAgICB3aXRoIENvbmZpZ0J1aWxkZXIoYnJvd3Nl
cl9ob3N0PSJleGFtcGxlLm5ldCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHRlcm5h
dGVfaG9zdHM9eyJhbHQiOiAiZXhhbXBsZS5vcmcifSwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci90ZXN0cy9icm93c2Vycy93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9icm93
c2Vycy93M2MtaW1wb3J0LmxvZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmViNjdi
YWE2MzBjNzBiZjkzOTk2YzlmNzAyN2FlYmRlYzNhNjA4OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvdzNj
LWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1UaGUgdGVzdHMgaW4g
dGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURv
IE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3Jl
YXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNv
bS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2lt
cG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3Ig
cmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmlu
ZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdGVzdHMvYnJvd3NlcnMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMv
YnJvd3NlcnMvdGVzdF9zYXVjZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rl
c3RfY2h1bmtlci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2NodW5rZXIucHkKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkNjQ5ZDY5ZTM5YTBmNzQwOGU4NDAyMDY5NzgxNzdk
NWU0OTgzYmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfY2h1bmtlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDk4
ICswLDAgQEAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwotZnJvbSBvcy5wYXRoIGltcG9y
dCBqb2luLCBkaXJuYW1lCi1mcm9tIG1vemxvZyBpbXBvcnQgc3RydWN0dXJlZAotCi1zeXMucGF0
aC5pbnNlcnQoMCwgam9pbihkaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgIi4uIiwgIi4uIikpCi0K
LWZyb20gd3B0cnVubmVyLnRlc3Rsb2FkZXIgaW1wb3J0IEVxdWFsVGltZUNodW5rZXIKLWZyb20g
bWFuaWZlc3Quc291cmNlZmlsZSBpbXBvcnQgU291cmNlRmlsZQotCi1zdHJ1Y3R1cmVkLnNldF9k
ZWZhdWx0X2xvZ2dlcihzdHJ1Y3R1cmVkLnN0cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcigi
VGVzdENodW5rZXIiKSkKLQotCi10ZXN0aGFybmVzc190ZXN0ID0gIiIiPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgotPHNjcmlwdCBzcmM9Ii9yZXNvdXJj
ZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PiIiIgotCi0KLWNsYXNzIE1vY2tUZXN0
KG9iamVjdCk6Ci0gICAgZGVmYXVsdF90aW1lb3V0ID0gMTAKLQotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBpZCwgcGF0aCwgdGltZW91dD0xMCwgY29udGVudHM9dGVzdGhhcm5lc3NfdGVzdCk6Ci0g
ICAgICAgIHNlbGYuaWQgPSBpZAotICAgICAgICBzZWxmLnVybCA9ICIvIiArIHBhdGgKLSAgICAg
ICAgc2VsZi5pdGVtX3R5cGUgPSAidGVzdGhhcm5lc3MiCi0gICAgICAgIHNlbGYudGltZW91dCA9
IHRpbWVvdXQKLSAgICAgICAgc2VsZi5zb3VyY2VfZmlsZSA9IFNvdXJjZUZpbGUoIi8iLCBwYXRo
LCAiLyIsIGNvbnRlbnRzPWNvbnRlbnRzKQotCi0KLWRlZiBtYWtlX21vY2tfbWFuaWZlc3QoKml0
ZW1zKToKLSAgICBydiA9IFtdCi0gICAgZm9yIHRlc3RfdHlwZSwgZGlyX3BhdGgsIG51bV90ZXN0
cyBpbiBpdGVtczoKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobnVtX3Rlc3RzKToKLSAgICAgICAg
ICAgIGZpbGVuYW1lID0gIi8laS5odG1sIiAlIGkKLSAgICAgICAgICAgIHJ2LmFwcGVuZCgodGVz
dF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICBkaXJfcGF0aCArIGZpbGVuYW1lLAotICAg
ICAgICAgICAgICAgICAgICAgICBzZXQoW01vY2tUZXN0KCIlaS5odG1sIiAlIGksIGRpcl9wYXRo
ICsgZmlsZW5hbWUpXSkpKQotICAgIHJldHVybiBydgotCi0KLWNsYXNzIFRlc3RFcXVhbFRpbWVD
aHVua2VyKHVuaXR0ZXN0LlRlc3RDYXNlKToKLQotICAgIGRlZiB0ZXN0X2luY2x1ZGVfYWxsKHNl
bGYpOgotICAgICAgICB0ZXN0cyA9IG1ha2VfbW9ja19tYW5pZmVzdCgoInRlc3QiLCAiYSIsIDEw
KSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKCJ0ZXN0IiwgImMiLCAxMCkpCi0KLSAgICAgICAgY2h1bmtfMSA9IGxpc3QoRXF1YWxUaW1l
Q2h1bmtlcigzLCAxKSh0ZXN0cykpCi0gICAgICAgIGNodW5rXzIgPSBsaXN0KEVxdWFsVGltZUNo
dW5rZXIoMywgMikodGVzdHMpKQotICAgICAgICBjaHVua18zID0gbGlzdChFcXVhbFRpbWVDaHVu
a2VyKDMsIDMpKHRlc3RzKSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh0ZXN0c1s6MTBd
LCBjaHVua18xKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh0ZXN0c1sxMDoyMF0sIGNodW5r
XzIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHRlc3RzWzIwOl0sIGNodW5rXzMpCi0KLSAg
ICBkZWYgdGVzdF9pbmNsdWRlX2FsbF8xKHNlbGYpOgotICAgICAgICB0ZXN0cyA9IG1ha2VfbW9j
a19tYW5pZmVzdCgoInRlc3QiLCAiYSIsIDUpLCAoInRlc3QiLCAiYS9iIiwgNSksCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMTApLCAoInRlc3QiLCAi
ZCIsIDEwKSkKLQotICAgICAgICBjaHVua18xID0gbGlzdChFcXVhbFRpbWVDaHVua2VyKDMsIDEp
KHRlc3RzKSkKLSAgICAgICAgY2h1bmtfMiA9IGxpc3QoRXF1YWxUaW1lQ2h1bmtlcigzLCAyKSh0
ZXN0cykpCi0gICAgICAgIGNodW5rXzMgPSBsaXN0KEVxdWFsVGltZUNodW5rZXIoMywgMykodGVz
dHMpKQotCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHRlc3RzWzoxMF0sIGNodW5rXzEpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHRlc3RzWzEwOjIwXSwgY2h1bmtfMikKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbHModGVzdHNbMjA6XSwgY2h1bmtfMykKLQotICAgIGRlZiB0ZXN0X2xv
bmcoc2VsZik6Ci0gICAgICAgIHRlc3RzID0gbWFrZV9tb2NrX21hbmlmZXN0KCgidGVzdCIsICJh
IiwgMTAwKSwgKCJ0ZXN0IiwgImEvYiIsIDEpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAoInRlc3QiLCAiYyIsIDEpKQotCi0gICAgICAgIGNodW5rXzEgPSBsaXN0KEVxdWFs
VGltZUNodW5rZXIoMywgMSkodGVzdHMpKQotICAgICAgICBjaHVua18yID0gbGlzdChFcXVhbFRp
bWVDaHVua2VyKDMsIDIpKHRlc3RzKSkKLSAgICAgICAgY2h1bmtfMyA9IGxpc3QoRXF1YWxUaW1l
Q2h1bmtlcigzLCAzKSh0ZXN0cykpCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModGVzdHNb
OjEwMF0sIGNodW5rXzEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHRlc3RzWzEwMDoxMDFd
LCBjaHVua18yKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh0ZXN0c1sxMDE6MTAyXSwgY2h1
bmtfMykKLQotICAgIGRlZiB0ZXN0X2xvbmdfMShzZWxmKToKLSAgICAgICAgdGVzdHMgPSBtYWtl
X21vY2tfbWFuaWZlc3QoKCJ0ZXN0IiwgImEiLCAxKSwgKCJ0ZXN0IiwgImEvYiIsIDEwMCksCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMSkpCi0KLSAg
ICAgICAgY2h1bmtfMSA9IGxpc3QoRXF1YWxUaW1lQ2h1bmtlcigzLCAxKSh0ZXN0cykpCi0gICAg
ICAgIGNodW5rXzIgPSBsaXN0KEVxdWFsVGltZUNodW5rZXIoMywgMikodGVzdHMpKQotICAgICAg
ICBjaHVua18zID0gbGlzdChFcXVhbFRpbWVDaHVua2VyKDMsIDMpKHRlc3RzKSkKLQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyh0ZXN0c1s6MV0sIGNodW5rXzEpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWxzKHRlc3RzWzE6MTAxXSwgY2h1bmtfMikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHModGVzdHNbMTAxOjEwMl0sIGNodW5rXzMpCi0KLSAgICBkZWYgdGVzdF90b29fZmV3X2RpcnMo
c2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAg
ICAgICAgICB0ZXN0cyA9IG1ha2VfbW9ja19tYW5pZmVzdCgoInRlc3QiLCAiYSIsIDEpLCAoInRl
c3QiLCAiYS9iIiwgMTAwKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICgidGVzdCIsICJjIiwgMSkpCi0gICAgICAgICAgICBsaXN0KEVxdWFsVGltZUNodW5rZXIoNCwg
MSkodGVzdHMpKQotCi0KLWlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6Ci0gICAgdW5pdHRlc3Qu
bWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3JtYXR0ZXJzLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfZm9ybWF0dGVycy5weQppbmRleCBmYzJjZTViYzEx
MTYxMDU3YTBmYTExMGU2YWE2NGEyMWNjMGU4YWFkLi43MmYzYTU5MWFkN2Y5MDUzMjY3MWNjYjg5
N2RmY2IxNjFiYzhmNDVkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9mb3Jt
YXR0ZXJzLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMucHkKQEAg
LTEsMTQgKzEsMTMgQEAKIGltcG9ydCBqc29uCi1pbXBvcnQgc3lzCiBpbXBvcnQgdGltZQotZnJv
bSBvcy5wYXRoIGltcG9ydCBkaXJuYW1lLCBqb2luCi1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJp
bmdJTworZnJvbSBzaXgubW92ZXMgaW1wb3J0IGNTdHJpbmdJTyBhcyBTdHJpbmdJTwogCi1mcm9t
IG1vemxvZyBpbXBvcnQgaGFuZGxlcnMsIHN0cnVjdHVyZWRsb2cKK2ltcG9ydCBtb2NrCiAKLXN5
cy5wYXRoLmluc2VydCgwLCBqb2luKGRpcm5hbWUoX19maWxlX18pLCAiLi4iLCAiLi4iKSkKK2Zy
b20gbW96bG9nIGltcG9ydCBoYW5kbGVycywgc3RydWN0dXJlZGxvZwogCi1mcm9tIHdwdHJ1bm5l
ci5mb3JtYXR0ZXJzIGltcG9ydCBXcHRyZXBvcnRGb3JtYXR0ZXIKK2Zyb20gLi5mb3JtYXR0ZXJz
IGltcG9ydCB3cHRyZXBvcnQKK2Zyb20gLi5mb3JtYXR0ZXJzLndwdHJlcG9ydCBpbXBvcnQgV3B0
cmVwb3J0Rm9ybWF0dGVyCiAKIAogZGVmIHRlc3Rfd3B0cmVwb3J0X3J1bnRpbWUoY2FwZmQpOgpA
QCAtNjIsMyArNjEsMTA4IEBAIGRlZiB0ZXN0X3dwdHJlcG9ydF9ydW5faW5mb19vcHRpb25hbChj
YXBmZCk6CiAgICAgb3V0cHV0LnNlZWsoMCkKICAgICBvdXRwdXRfb2JqID0ganNvbi5sb2FkKG91
dHB1dCkKICAgICBhc3NlcnQgInJ1bl9pbmZvIiBub3QgaW4gb3V0cHV0X29iaiBvciBvdXRwdXRf
b2JqWyJydW5faW5mbyJdID09IHt9CisKKworZGVmIHRlc3Rfd3B0cmVwb3J0X2xvbmVfc3Vycm9n
YXRlKGNhcGZkKToKKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0
dXJlZGxvZy5TdHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxl
cihoYW5kbGVycy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgV3B0cmVwb3J0Rm9ybWF0dGVyKCkpKQor
CisgICAgIyBvdXRwdXQgYSBidW5jaCBvZiBzdHVmZgorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChb
InRlc3QtaWQtMSJdKSAgIyBubyBydW5faW5mbyBhcmchCisgICAgbG9nZ2VyLnRlc3Rfc3RhcnQo
InRlc3QtaWQtMSIpCisgICAgbG9nZ2VyLnRlc3Rfc3RhdHVzKCJ0ZXN0LWlkLTEiLAorICAgICAg
ICAgICAgICAgICAgICAgICBzdWJ0ZXN0PXUiTmFtZSB3aXRoIHN1cnJvZ2F0ZVx1RDgwMCIsCisg
ICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0iRkFJTCIsCisgICAgICAgICAgICAgICAgICAg
ICAgIG1lc3NhZ2U9dSJcVTAwMDFGNjAxIFx1REUwQVx1RDgzRCIpCisgICAgbG9nZ2VyLnRlc3Rf
ZW5kKCJ0ZXN0LWlkLTEiLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9IlBBU1MiLAorICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlPXUiXHVERTBBXHVEODNEIFxVMDAwMUY2MDEiKQorICAg
IGxvZ2dlci5zdWl0ZV9lbmQoKQorCisgICAgIyBjaGVjayBub3RoaW5nIGdvdCBvdXRwdXQgdG8g
c3Rkb3V0L3N0ZGVycgorICAgICMgKG5vdGUgdGhhdCBtb3psb2cgb3V0cHV0cyBleGNlcHRpb25z
IGR1cmluZyBoYW5kbGluZyB0byBzdGRlcnIhKQorICAgIGNhcHR1cmVkID0gY2FwZmQucmVhZG91
dGVycigpCisgICAgYXNzZXJ0IGNhcHR1cmVkLm91dCA9PSAiIgorICAgIGFzc2VydCBjYXB0dXJl
ZC5lcnIgPT0gIiIKKworICAgICMgY2hlY2sgdGhlIGFjdHVhbCBvdXRwdXQgb2YgdGhlIGZvcm1h
dHRlcgorICAgIG91dHB1dC5zZWVrKDApCisgICAgb3V0cHV0X29iaiA9IGpzb24ubG9hZChvdXRw
dXQpCisgICAgdGVzdCA9IG91dHB1dF9vYmpbInJlc3VsdHMiXVswXQorICAgIGFzc2VydCB0ZXN0
WyJtZXNzYWdlIl0gPT0gdSJVK2RlMGFVK2Q4M2QgXFUwMDAxRjYwMSIKKyAgICBzdWJ0ZXN0ID0g
dGVzdFsic3VidGVzdHMiXVswXQorICAgIGFzc2VydCBzdWJ0ZXN0WyJuYW1lIl0gPT0gdSJOYW1l
IHdpdGggc3Vycm9nYXRlVStkODAwIgorICAgIGFzc2VydCBzdWJ0ZXN0WyJtZXNzYWdlIl0gPT0g
dSJcVTAwMDFGNjAxIFUrZGUwYVUrZDgzZCIKKworCitkZWYgdGVzdF93cHRyZXBvcnRfbG9uZV9z
dXJyb2dhdGVfdWNzMihjYXBmZCk6CisgICAgIyBTaW5jZSBVQ1M0IGlzIGEgc3VwZXJzZXQgb2Yg
VUNTMiB3ZSBjYW4gbWVhbmluZ2Z1bGx5IHRlc3QgdGhlIFVDUzIgY29kZSBvbiBhCisgICAgIyBV
Q1M0IGJ1aWxkLCBidXQgbm90IHRoZSByZXZlcnNlLiBIb3dldmVyIFVDUzIgaXMgaGFyZGVyIHRv
IGhhbmRsZSBhbmQgVUNTNCBpcworICAgICMgdGhlIGNvbW1vbmVzdCAoYW5kIHNlbnNpYmxlKSBj
b25maWd1cmF0aW9uLCBzbyB0aGF0J3MgT0suCisgICAgb3V0cHV0ID0gU3RyaW5nSU8oKQorICAg
IGxvZ2dlciA9IHN0cnVjdHVyZWRsb2cuU3RydWN0dXJlZExvZ2dlcigidGVzdF9hIikKKyAgICBs
b2dnZXIuYWRkX2hhbmRsZXIoaGFuZGxlcnMuU3RyZWFtSGFuZGxlcihvdXRwdXQsIFdwdHJlcG9y
dEZvcm1hdHRlcigpKSkKKworICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3Qod3B0cmVwb3J0LAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N1cnJvZ2F0ZV9yZXBsYWNlbWVudCcsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICB3cHRyZXBvcnQuU3Vycm9nYXRlUmVwbGFjZW1lbnRVY3My
KCkpOgorICAgICAgICAjIG91dHB1dCBhIGJ1bmNoIG9mIHN0dWZmCisgICAgICAgIGxvZ2dlci5z
dWl0ZV9zdGFydChbInRlc3QtaWQtMSJdKSAgIyBubyBydW5faW5mbyBhcmchCisgICAgICAgIGxv
Z2dlci50ZXN0X3N0YXJ0KCJ0ZXN0LWlkLTEiKQorICAgICAgICBsb2dnZXIudGVzdF9zdGF0dXMo
InRlc3QtaWQtMSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0ZXN0PXUiTmFtZSB3
aXRoIHN1cnJvZ2F0ZVx1RDgwMCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGF0dXM9
IkZBSUwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT11IlxVMDAwMUY2MDEg
XHVERTBBXHVEODNEIFx1RDgzRFx1REUwQSIpCisgICAgICAgIGxvZ2dlci50ZXN0X2VuZCgidGVz
dC1pZC0xIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cz0iUEFTUyIsCisgICAgICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlPXUiXHVERTBBXHVEODNEIFx1RDgzRFx1REUwQSBcVTAw
MDFGNjAxIikKKyAgICAgICAgbG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhp
bmcgZ290IG91dHB1dCB0byBzdGRvdXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBv
dXRwdXRzIGV4Y2VwdGlvbnMgZHVyaW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVy
ZWQgPSBjYXBmZC5yZWFkb3V0ZXJyKCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisg
ICAgYXNzZXJ0IGNhcHR1cmVkLmVyciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91
dHB1dCBvZiB0aGUgZm9ybWF0dGVyCisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfb2Jq
ID0ganNvbi5sb2FkKG91dHB1dCkKKyAgICB0ZXN0ID0gb3V0cHV0X29ialsicmVzdWx0cyJdWzBd
CisgICAgYXNzZXJ0IHRlc3RbIm1lc3NhZ2UiXSA9PSB1IlUrZGUwYVUrZDgzZCBcVTAwMDFmNjBh
IFxVMDAwMUY2MDEiCisgICAgc3VidGVzdCA9IHRlc3RbInN1YnRlc3RzIl1bMF0KKyAgICBhc3Nl
cnQgc3VidGVzdFsibmFtZSJdID09IHUiTmFtZSB3aXRoIHN1cnJvZ2F0ZVUrZDgwMCIKKyAgICBh
c3NlcnQgc3VidGVzdFsibWVzc2FnZSJdID09IHUiXFUwMDAxRjYwMSBVK2RlMGFVK2Q4M2QgXFUw
MDAxZjYwYSIKKworCitkZWYgdGVzdF93cHRyZXBvcnRfa25vd25faW50ZXJtaXR0ZW50KGNhcGZk
KToKKyAgICBvdXRwdXQgPSBTdHJpbmdJTygpCisgICAgbG9nZ2VyID0gc3RydWN0dXJlZGxvZy5T
dHJ1Y3R1cmVkTG9nZ2VyKCJ0ZXN0X2EiKQorICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVy
cy5TdHJlYW1IYW5kbGVyKG91dHB1dCwgV3B0cmVwb3J0Rm9ybWF0dGVyKCkpKQorCisgICAgIyBv
dXRwdXQgYSBidW5jaCBvZiBzdHVmZgorICAgIGxvZ2dlci5zdWl0ZV9zdGFydChbInRlc3QtaWQt
MSJdKSAgIyBubyBydW5faW5mbyBhcmchCisgICAgbG9nZ2VyLnRlc3Rfc3RhcnQoInRlc3QtaWQt
MSIpCisgICAgbG9nZ2VyLnRlc3Rfc3RhdHVzKCJ0ZXN0LWlkLTEiLAorICAgICAgICAgICAgICAg
ICAgICAgICAiYS1zdWJ0ZXN0IiwKKyAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzPSJGQUlM
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQ9IlBBU1MiLAorICAgICAgICAgICAg
ICAgICAgICAgICBrbm93bl9pbnRlcm1pdHRlbnQ9WyJGQUlMIl0pCisgICAgbG9nZ2VyLnRlc3Rf
ZW5kKCJ0ZXN0LWlkLTEiLAorICAgICAgICAgICAgICAgICAgICBzdGF0dXM9Ik9LIiwpCisgICAg
bG9nZ2VyLnN1aXRlX2VuZCgpCisKKyAgICAjIGNoZWNrIG5vdGhpbmcgZ290IG91dHB1dCB0byBz
dGRvdXQvc3RkZXJyCisgICAgIyAobm90ZSB0aGF0IG1vemxvZyBvdXRwdXRzIGV4Y2VwdGlvbnMg
ZHVyaW5nIGhhbmRsaW5nIHRvIHN0ZGVyciEpCisgICAgY2FwdHVyZWQgPSBjYXBmZC5yZWFkb3V0
ZXJyKCkKKyAgICBhc3NlcnQgY2FwdHVyZWQub3V0ID09ICIiCisgICAgYXNzZXJ0IGNhcHR1cmVk
LmVyciA9PSAiIgorCisgICAgIyBjaGVjayB0aGUgYWN0dWFsIG91dHB1dCBvZiB0aGUgZm9ybWF0
dGVyCisgICAgb3V0cHV0LnNlZWsoMCkKKyAgICBvdXRwdXRfb2JqID0ganNvbi5sb2FkKG91dHB1
dCkKKyAgICB0ZXN0ID0gb3V0cHV0X29ialsicmVzdWx0cyJdWzBdCisgICAgYXNzZXJ0IHRlc3Rb
InN0YXR1cyJdID09IHUiT0siCisgICAgc3VidGVzdCA9IHRlc3RbInN1YnRlc3RzIl1bMF0KKyAg
ICBhc3NlcnQgc3VidGVzdFsiZXhwZWN0ZWQiXSA9PSB1IlBBU1MiCisgICAgYXNzZXJ0IHN1YnRl
c3RbImtub3duX2ludGVybWl0dGVudCJdID09IFt1J0ZBSUwnXQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Rlc3RzL3Rlc3RfcHJvZHVjdHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9w
cm9kdWN0cy5weQppbmRleCA0NDFjODNmNzM1ZWRjYTZhZGFjMDJhYTI1NGJlNmU0ODMwYzBhZTdl
Li41ZDJiY2YwNzVkMGY1NzJlODk3MmViYTVmZGI0YTViZDM2YjVkYjc1IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5l
ci93cHRydW5uZXIvdGVzdHMvdGVzdF9wcm9kdWN0cy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVz
dHMvdGVzdF9wcm9kdWN0cy5weQpAQCAtMSwxNyArMSwxMSBAQAotaW1wb3J0IHN5cwotCiBmcm9t
IG9zLnBhdGggaW1wb3J0IGpvaW4sIGRpcm5hbWUKIAogaW1wb3J0IG1vY2sKIGltcG9ydCBweXRl
c3QKIAogZnJvbSAuYmFzZSBpbXBvcnQgYWxsX3Byb2R1Y3RzLCBhY3RpdmVfcHJvZHVjdHMKLQot
c3lzLnBhdGguaW5zZXJ0KDAsIGpvaW4oZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIsICIu
LiIsICIuLiIpKSAgIyByZXBvIHJvb3QKLWZyb20gdG9vbHMgaW1wb3J0IGxvY2FscGF0aHMgICMg
bm9xYTogZmxha2U4Ci0KLWZyb20gd3B0cnVubmVyIGltcG9ydCBlbnZpcm9ubWVudAotZnJvbSB3
cHRydW5uZXIgaW1wb3J0IHByb2R1Y3RzCitmcm9tIC4uIGltcG9ydCBlbnZpcm9ubWVudAorZnJv
bSAuLiBpbXBvcnQgcHJvZHVjdHMKIAogdGVzdF9wYXRocyA9IHsiLyI6IHsidGVzdHNfcGF0aCI6
IGpvaW4oZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIsICIuLiIsICIuLiIpfX0gICMgcmVw
byByb290CiBlbnZpcm9ubWVudC5kb19kZWxheWVkX2ltcG9ydHMoTm9uZSwgdGVzdF9wYXRocykK
QEAgLTQ2LDYgKzQwLDcgQEAgZGVmIHRlc3Rfc2VydmVyX3N0YXJ0X2NvbmZpZyhwcm9kdWN0KToK
IAogICAgIHdpdGggbW9jay5wYXRjaC5vYmplY3QoZW52aXJvbm1lbnQuc2VydmUsICJzdGFydCIp
IGFzIHN0YXJ0OgogICAgICAgICB3aXRoIGVudmlyb25tZW50LlRlc3RFbnZpcm9ubWVudCh0ZXN0
X3BhdGhzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW52X29wdGlvbnMsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvdGVzdHMvdGVzdF9zdGFiaWxpdHkucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9zdGFi
aWxpdHkucHkKaW5kZXggNzJjZmYyMTAxNmE4ZTUxMDM2YmI5OWU0NmIyN2NiNzBiYmYwNDRiOS4u
NDc0MDU2ZGRlNmM2N2JiMGFhZDIxMDA2MTNlNmNhMzMxOTYyMzk2MiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3Rlc3RzL3Rlc3Rfc3RhYmlsaXR5LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0
cy90ZXN0X3N0YWJpbGl0eS5weQpAQCAtMSwxMiArMSwzMSBAQAotaW1wb3J0IHN5cwotZnJvbSBv
cy5wYXRoIGltcG9ydCBkaXJuYW1lLCBqb2luCitmcm9tIC4uIGltcG9ydCBzdGFiaWxpdHkKIAot
c3lzLnBhdGguaW5zZXJ0KDAsIGpvaW4oZGlybmFtZShfX2ZpbGVfXyksICIuLiIsICIuLiIpKQot
Ci1mcm9tIHdwdHJ1bm5lciBpbXBvcnQgc3RhYmlsaXR5CiAKIGRlZiB0ZXN0X2lzX2luY29uc2lz
dGVudCgpOgogICAgIGFzc2VydCBzdGFiaWxpdHkuaXNfaW5jb25zaXN0ZW50KHsiUEFTUyI6IDEw
fSwgMTApIGlzIEZhbHNlCiAgICAgYXNzZXJ0IHN0YWJpbGl0eS5pc19pbmNvbnNpc3RlbnQoeyJQ
QVNTIjogOX0sIDEwKSBpcyBUcnVlCiAgICAgYXNzZXJ0IHN0YWJpbGl0eS5pc19pbmNvbnNpc3Rl
bnQoeyJQQVNTIjogOSwgIkZBSUwiOiAxfSwgMTApIGlzIFRydWUKICAgICBhc3NlcnQgc3RhYmls
aXR5LmlzX2luY29uc2lzdGVudCh7IlBBU1MiOiA4LCAiRkFJTCI6IDF9LCAxMCkgaXMgVHJ1ZQor
CisKK2RlZiB0ZXN0X2ZpbmRfc2xvd19zdGF0dXMoKToKKyAgICBhc3NlcnQgc3RhYmlsaXR5LmZp
bmRfc2xvd19zdGF0dXMoeworICAgICAgICAibG9uZ2VzdF9kdXJhdGlvbiI6IHsiVElNRU9VVCI6
IDEwfSwKKyAgICAgICAgInRpbWVvdXQiOiAxMH0pIGlzIE5vbmUKKyAgICBhc3NlcnQgc3RhYmls
aXR5LmZpbmRfc2xvd19zdGF0dXMoeworICAgICAgICAibG9uZ2VzdF9kdXJhdGlvbiI6IHsiQ1JB
U0giOiAxMH0sCisgICAgICAgICJ0aW1lb3V0IjogMTB9KSBpcyBOb25lCisgICAgYXNzZXJ0IHN0
YWJpbGl0eS5maW5kX3Nsb3dfc3RhdHVzKHsKKyAgICAgICAgImxvbmdlc3RfZHVyYXRpb24iOiB7
IkVSUk9SIjogMTB9LAorICAgICAgICAidGltZW91dCI6IDEwfSkgaXMgTm9uZQorICAgIGFzc2Vy
dCBzdGFiaWxpdHkuZmluZF9zbG93X3N0YXR1cyh7CisgICAgICAgICJsb25nZXN0X2R1cmF0aW9u
IjogeyJQQVNTIjogMX0sCisgICAgICAgICJ0aW1lb3V0IjogMTB9KSBpcyBOb25lCisgICAgYXNz
ZXJ0IHN0YWJpbGl0eS5maW5kX3Nsb3dfc3RhdHVzKHsKKyAgICAgICAgImxvbmdlc3RfZHVyYXRp
b24iOiB7IlBBU1MiOiA4MX0sCisgICAgICAgICJ0aW1lb3V0IjogMTAwfSkgPT0gIlBBU1MiCisg
ICAgYXNzZXJ0IHN0YWJpbGl0eS5maW5kX3Nsb3dfc3RhdHVzKHsKKyAgICAgICAgImxvbmdlc3Rf
ZHVyYXRpb24iOiB7IlRJTUVPVVQiOiAxMCwgIkZBSUwiOiA4MX0sCisgICAgICAgICJ0aW1lb3V0
IjogMTAwfSkgPT0gIkZBSUwiCisgICAgYXNzZXJ0IHN0YWJpbGl0eS5maW5kX3Nsb3dfc3RhdHVz
KHsKKyAgICAgICAgImxvbmdlc3RfZHVyYXRpb24iOiB7IlNLSVAiOiAwfX0pIGlzIE5vbmUKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdGVzdHMvdGVzdF90ZXN0bG9hZGVyLnB5CmluZGV4IDU1NmIyYjdmM2ZhNDgyMTJmYmY5
YzJiMDI3OTc5M2YyZWM0OGJhY2IuLmU4NTdjZDQzZGI2ZDI4MWY5NTQxNDIzMGY1MmM5ODRhYWQ5
MTUxMTggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2FkZXIucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdGVzdGxvYWRlci5weQpAQCAtMSwxNCArMSwx
MyBAQAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCiAKLWltcG9ydCBv
cwogaW1wb3J0IHN5cwogaW1wb3J0IHRlbXBmaWxlCiAKLXN5cy5wYXRoLmluc2VydCgwLCBvcy5w
YXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwgIi4uIikpCitpbXBvcnQg
cHl0ZXN0CiAKIGZyb20gbW96bG9nIGltcG9ydCBzdHJ1Y3R1cmVkCi1mcm9tIHdwdHJ1bm5lci50
ZXN0bG9hZGVyIGltcG9ydCBUZXN0RmlsdGVyIGFzIEZpbHRlcgotZnJvbSAudGVzdF9jaHVua2Vy
IGltcG9ydCBtYWtlX21vY2tfbWFuaWZlc3QKK2Zyb20gLi50ZXN0bG9hZGVyIGltcG9ydCBUZXN0
RmlsdGVyIGFzIEZpbHRlcgorZnJvbSAudGVzdF93cHR0ZXN0IGltcG9ydCBtYWtlX21vY2tfbWFu
aWZlc3QKIAogc3RydWN0dXJlZC5zZXRfZGVmYXVsdF9sb2dnZXIoc3RydWN0dXJlZC5zdHJ1Y3R1
cmVkbG9nLlN0cnVjdHVyZWRMb2dnZXIoIlRlc3RMb2FkZXIiKSkKIApAQCAtMTksNiArMTgsMTAg
QEAgc2tpcDogdHJ1ZQogIiIiCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy5wbGF0Zm9ybSA9
PSAid2luMzIiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iTmFtZWRUZW1wb3JhcnlGaWxl
IGNhbm5vdCBiZSByZW9wZW5lZCBvbiBXaW4zMiIpCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZl
cnNpb25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0id3B0bWFuaWZlc3Qu
cGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfZmlsdGVyX3VuaWNvZGUoKToK
ICAgICB0ZXN0cyA9IG1ha2VfbW9ja19tYW5pZmVzdCgoInRlc3QiLCAiYSIsIDEwKSwgKCJ0ZXN0
IiwgImEvYiIsIDEwKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoInRlc3QiLCAi
YyIsIDEwKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weSBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3VwZGF0ZS5weQppbmRleCA1YzY1NGM5OWE0ODFjODcw
OTE3NmVhOTIxMDUwOGJjMjM4OGQyYjJjLi41ZDkwMGEzZDZjOWNkMjM2OTZmZTBkMmI3YzIwZDhm
ZjUxNDJiOWU1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF91cGRhdGUucHkK
KysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3RfdXBkYXRlLnB5CkBAIC0xLDI4ICsxLDI4IEBA
CiBpbXBvcnQganNvbgogaW1wb3J0IG1vY2sKIGltcG9ydCBvcworaW1wb3J0IHB5dGVzdAogaW1w
b3J0IHN5cwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwogCiBmcm9tIC4uIGltcG9ydCBtZXRhZGF0
YSwgbWFuaWZlc3R1cGRhdGUKK2Zyb20gLi51cGRhdGUudXBkYXRlIGltcG9ydCBXUFRVcGRhdGUK
K2Zyb20gLi51cGRhdGUuYmFzZSBpbXBvcnQgU3RlcFJ1bm5lciwgU3RlcAogZnJvbSBtb3psb2cg
aW1wb3J0IHN0cnVjdHVyZWRsb2csIGhhbmRsZXJzLCBmb3JtYXR0ZXJzCiAKLXN5cy5wYXRoLmlu
c2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgb3MucGFyZGly
LCBvcy5wYXJkaXIsIG9zLnBhcmRpcikpCitoZXJlID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9f
KQorc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihoZXJlLCBvcy5wYXJkaXIsIG9zLnBh
cmRpciwgb3MucGFyZGlyKSkKIGZyb20gbWFuaWZlc3QgaW1wb3J0IG1hbmlmZXN0LCBpdGVtIGFz
IG1hbmlmZXN0X2l0ZW0KIAogCi1kZWYgcmVsX3BhdGhfdG9fdXJsKHJlbF9wYXRoLCB1cmxfYmFz
ZT0iLyIpOgorZGVmIHJlbF9wYXRoX3RvX3Rlc3RfdXJsKHJlbF9wYXRoKToKICAgICBhc3NlcnQg
bm90IG9zLnBhdGguaXNhYnMocmVsX3BhdGgpCi0gICAgaWYgdXJsX2Jhc2VbMF0gIT0gIi8iOgot
ICAgICAgICB1cmxfYmFzZSA9ICIvIiArIHVybF9iYXNlCi0gICAgaWYgdXJsX2Jhc2VbLTFdICE9
ICIvIjoKLSAgICAgICAgdXJsX2Jhc2UgKz0gIi8iCi0gICAgcmV0dXJuIHVybF9iYXNlICsgcmVs
X3BhdGgucmVwbGFjZShvcy5zZXAsICIvIikKKyAgICByZXR1cm4gcmVsX3BhdGgucmVwbGFjZShv
cy5zZXAsICIvIikKIAogCiBkZWYgU291cmNlRmlsZVdpdGhUZXN0KHBhdGgsIGhhc2gsIGNscywg
KmFyZ3MpOgogICAgIHMgPSBtb2NrLk1vY2socmVsX3BhdGg9cGF0aCwgaGFzaD1oYXNoKQotICAg
IHRlc3QgPSBjbHMocywgcmVsX3BhdGhfdG9fdXJsKHBhdGgpLCAqYXJncykKKyAgICB0ZXN0ID0g
Y2xzKCIvZm9vYmFyIiwgcGF0aCwgIi8iLCByZWxfcGF0aF90b190ZXN0X3VybChwYXRoKSwgKmFy
Z3MpCiAgICAgcy5tYW5pZmVzdF9pdGVtcyA9IG1vY2suTW9jayhyZXR1cm5fdmFsdWU9KGNscy5p
dGVtX3R5cGUsIFt0ZXN0XSkpCiAgICAgcmV0dXJuIHMKIApAQCAtMzEsNDIgKzMxLDY4IEBAIGl0
ZW1fY2xhc3NlcyA9IHsidGVzdGhhcm5lc3MiOiBtYW5pZmVzdF9pdGVtLlRlc3RoYXJuZXNzVGVz
dCwKICAgICAgICAgICAgICAgICAicmVmdGVzdCI6IG1hbmlmZXN0X2l0ZW0uUmVmVGVzdCwKICAg
ICAgICAgICAgICAgICAicmVmdGVzdF9ub2RlIjogbWFuaWZlc3RfaXRlbS5SZWZUZXN0Tm9kZSwK
ICAgICAgICAgICAgICAgICAibWFudWFsIjogbWFuaWZlc3RfaXRlbS5NYW51YWxUZXN0LAotICAg
ICAgICAgICAgICAgICJzdHViIjogbWFuaWZlc3RfaXRlbS5TdHViLAotICAgICAgICAgICAgICAg
ICJ3ZHNwZWMiOiBtYW5pZmVzdF9pdGVtLldlYmRyaXZlclNwZWNUZXN0LAorICAgICAgICAgICAg
ICAgICJ3ZHNwZWMiOiBtYW5pZmVzdF9pdGVtLldlYkRyaXZlclNwZWNUZXN0LAogICAgICAgICAg
ICAgICAgICJjb25mb3JtYW5jZWNoZWNrZXIiOiBtYW5pZmVzdF9pdGVtLkNvbmZvcm1hbmNlQ2hl
Y2tlclRlc3QsCiAgICAgICAgICAgICAgICAgInZpc3VhbCI6IG1hbmlmZXN0X2l0ZW0uVmlzdWFs
VGVzdCwKICAgICAgICAgICAgICAgICAic3VwcG9ydCI6IG1hbmlmZXN0X2l0ZW0uU3VwcG9ydEZp
bGV9CiAKIAotZGVmIHVwZGF0ZSh0ZXN0cywgKmxvZ3MpOgorZGVmYXVsdF9ydW5faW5mbyA9IHsi
ZGVidWciOiBGYWxzZSwgIm9zIjogImxpbnV4IiwgInZlcnNpb24iOiAiMTguMDQiLCAicHJvY2Vz
c29yIjogIng4Nl82NCIsICJiaXRzIjogNjR9Cit0ZXN0X2lkID0gIi9wYXRoL3RvL3Rlc3QuaHRt
IgorZGlyX2lkID0gInBhdGgvdG8vX19kaXJfXyIKKworCitkZWYgcmVzZXRfZ2xvYmFscygpOgor
ICAgIG1ldGFkYXRhLnByb3BfaW50ZXJuLmNsZWFyKCkKKyAgICBtZXRhZGF0YS5ydW5faW5mb19p
bnRlcm4uY2xlYXIoKQorICAgIG1ldGFkYXRhLnN0YXR1c19pbnRlcm4uY2xlYXIoKQorCisKK2Rl
ZiBnZXRfcnVuX2luZm8ob3ZlcnJpZGVzKToKKyAgICBydW5faW5mbyA9IGRlZmF1bHRfcnVuX2lu
Zm8uY29weSgpCisgICAgcnVuX2luZm8udXBkYXRlKG92ZXJyaWRlcykKKyAgICByZXR1cm4gcnVu
X2luZm8KKworCitkZWYgdXBkYXRlKHRlc3RzLCAqbG9ncywgKiprd2FyZ3MpOgorICAgIGZ1bGxf
dXBkYXRlID0ga3dhcmdzLnBvcCgiZnVsbF91cGRhdGUiLCBGYWxzZSkKKyAgICBkaXNhYmxlX2lu
dGVybWl0dGVudCA9IGt3YXJncy5wb3AoImRpc2FibGVfaW50ZXJtaXR0ZW50IiwgRmFsc2UpCisg
ICAgdXBkYXRlX2ludGVybWl0dGVudCA9IGt3YXJncy5wb3AoInVwZGF0ZV9pbnRlcm1pdHRlbnQi
LCBGYWxzZSkKKyAgICByZW1vdmVfaW50ZXJtaXR0ZW50ID0ga3dhcmdzLnBvcCgicmVtb3ZlX2lu
dGVybWl0dGVudCIsIEZhbHNlKQorICAgIGFzc2VydCBub3Qga3dhcmdzCiAgICAgaWRfdGVzdF9t
YXAsIHVwZGF0ZXIgPSBjcmVhdGVfdXBkYXRlcih0ZXN0cykKKwogICAgIGZvciBsb2cgaW4gbG9n
czoKICAgICAgICAgbG9nID0gY3JlYXRlX2xvZyhsb2cpCiAgICAgICAgIHVwZGF0ZXIudXBkYXRl
X2Zyb21fbG9nKGxvZykKIAorICAgIHVwZGF0ZV9wcm9wZXJ0aWVzID0gKFsiZGVidWciLCAib3Mi
LCAidmVyc2lvbiIsICJwcm9jZXNzb3IiXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICB7Im9z
IjogWyJ2ZXJzaW9uIl0sICJwcm9jZXNzb3IiOiAiYml0cyJ9KQorCisgICAgZXhwZWN0ZWRfZGF0
YSA9IHt9CisgICAgbWV0YWRhdGEubG9hZF9leHBlY3RlZCA9IGxhbWJkYSBfLCBfXywgdGVzdF9w
YXRoLCAqYXJnczogZXhwZWN0ZWRfZGF0YS5nZXQodGVzdF9wYXRoKQorICAgIGZvciB0ZXN0X3Bh
dGgsIHRlc3RfaWRzLCB0ZXN0X3R5cGUsIG1hbmlmZXN0X3N0ciBpbiB0ZXN0czoKKyAgICAgICAg
ZXhwZWN0ZWRfZGF0YVt0ZXN0X3BhdGhdID0gbWFuaWZlc3R1cGRhdGUuY29tcGlsZShCeXRlc0lP
KG1hbmlmZXN0X3N0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfcHJvcGVydGllcywK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cGRhdGVfaW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlbW92ZV9pbnRlcm1pdHRlbnQpCisKICAgICByZXR1
cm4gbGlzdChtZXRhZGF0YS51cGRhdGVfcmVzdWx0cyhpZF90ZXN0X21hcCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImRlYnVnIiwgIm9zIiwgInZlcnNpb24iLCAi
cHJvY2Vzc29yIiwgImJpdHMiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBbImRlYnVnIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
RmFsc2UpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9w
cm9wZXJ0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bGxf
dXBkYXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGVf
aW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVw
ZGF0ZV9pbnRlcm1pdHRlbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVtb3ZlX2ludGVybWl0dGVudCkpCiAKIAogZGVmIGNyZWF0ZV91cGRhdGVyKHRlc3RzLCB1
cmxfYmFzZT0iLyIsICoqa3dhcmdzKToKICAgICBpZF90ZXN0X21hcCA9IHt9CiAgICAgbSA9IGNy
ZWF0ZV90ZXN0X21hbmlmZXN0KHRlc3RzLCB1cmxfYmFzZSkKLSAgICBleHBlY3RlZF9kYXRhID0g
e30KLSAgICBtZXRhZGF0YS5sb2FkX2V4cGVjdGVkID0gbGFtYmRhIF8sIF9fLCB0ZXN0X3BhdGgs
ICphcmdzOiBleHBlY3RlZF9kYXRhW3Rlc3RfcGF0aF0KLQotICAgIGZvciB0ZXN0X3BhdGgsIHRl
c3RfaWRzLCB0ZXN0X3R5cGUsIG1hbmlmZXN0X3N0ciBpbiB0ZXN0czoKLSAgICAgICAgdGVzdHMg
PSBsaXN0KG0uaXRlcnBhdGgodGVzdF9wYXRoKSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh0ZXN0
X2lkcywgKHN0ciwgdW5pY29kZSkpOgotICAgICAgICAgICAgdGVzdF9pZHMgPSBbdGVzdF9pZHNd
Ci0gICAgICAgIHRlc3RfZGF0YSA9IG1ldGFkYXRhLlRlc3RGaWxlRGF0YSgiLyIsICJ0ZXN0aGFy
bmVzcyIsIE5vbmUsIHRlc3RfcGF0aCwgdGVzdHMpCi0gICAgICAgIGV4cGVjdGVkX2RhdGFbdGVz
dF9wYXRoXSA9IG1hbmlmZXN0dXBkYXRlLmNvbXBpbGUoQnl0ZXNJTyhtYW5pZmVzdF9zdHIpLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHRlc3RfcGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB1cmxfYmFzZSkKIAotICAgICAgICBmb3IgdGVzdF9pZCBpbiB0ZXN0X2lk
czoKLSAgICAgICAgICAgIGlkX3Rlc3RfbWFwW3Rlc3RfaWRdID0gdGVzdF9kYXRhCisgICAgcmVz
ZXRfZ2xvYmFscygpCisgICAgaWRfdGVzdF9tYXAgPSBtZXRhZGF0YS5jcmVhdGVfdGVzdF90cmVl
KE5vbmUsIG0pCiAKICAgICByZXR1cm4gaWRfdGVzdF9tYXAsIG1ldGFkYXRhLkV4cGVjdGVkVXBk
YXRlcihpZF90ZXN0X21hcCwgKiprd2FyZ3MpCiAKQEAgLTg5LDcgKzExNSwxMCBAQCBkZWYgY3Jl
YXRlX2xvZyhlbnRyaWVzKToKIAogCiBkZWYgc3VpdGVfbG9nKGVudHJpZXMsIHJ1bl9pbmZvPU5v
bmUpOgotICAgIHJldHVybiAoWygic3VpdGVfc3RhcnQiLCB7InRlc3RzIjogW10sICJydW5faW5m
byI6IHJ1bl9pbmZvIG9yIHt9fSldICsKKyAgICBfcnVuX2luZm8gPSBkZWZhdWx0X3J1bl9pbmZv
LmNvcHkoKQorICAgIGlmIHJ1bl9pbmZvOgorICAgICAgICBfcnVuX2luZm8udXBkYXRlKHJ1bl9p
bmZvKQorICAgIHJldHVybiAoWygic3VpdGVfc3RhcnQiLCB7InRlc3RzIjogW10sICJydW5faW5m
byI6IF9ydW5faW5mb30pXSArCiAgICAgICAgICAgICBlbnRyaWVzICsKICAgICAgICAgICAgIFso
InN1aXRlX2VuZCIsIHt9KV0pCiAKQEAgLTk4LDE0ICsxMjcsMTYgQEAgZGVmIGNyZWF0ZV90ZXN0
X21hbmlmZXN0KHRlc3RzLCB1cmxfYmFzZT0iLyIpOgogICAgIHNvdXJjZV9maWxlcyA9IFtdCiAg
ICAgZm9yIGksICh0ZXN0LCBfLCB0ZXN0X3R5cGUsIF8pIGluIGVudW1lcmF0ZSh0ZXN0cyk6CiAg
ICAgICAgIGlmIHRlc3RfdHlwZToKLSAgICAgICAgICAgIHNvdXJjZV9maWxlcy5hcHBlbmQoU291
cmNlRmlsZVdpdGhUZXN0KHRlc3QsIHN0cihpKSAqIDQwLCBpdGVtX2NsYXNzZXNbdGVzdF90eXBl
XSkpCisgICAgICAgICAgICBzb3VyY2VfZmlsZXMuYXBwZW5kKChTb3VyY2VGaWxlV2l0aFRlc3Qo
dGVzdCwgc3RyKGkpICogNDAsIGl0ZW1fY2xhc3Nlc1t0ZXN0X3R5cGVdKSwgVHJ1ZSkpCiAgICAg
bSA9IG1hbmlmZXN0Lk1hbmlmZXN0KCkKICAgICBtLnVwZGF0ZShzb3VyY2VfZmlsZXMpCiAgICAg
cmV0dXJuIG0KIAogCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAor
ICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIp
CiBkZWYgdGVzdF91cGRhdGVfMCgpOgotICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIs
IFsiL3BhdGgvdG8vdGVzdC5odG0iXSwgInRlc3RoYXJuZXNzIiwKKyAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCiAgICAgICAgICAgICAg
ICIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KQEAgLTEx
NSwzOSArMTQ2LDY3MiBAQCBkZWYgdGVzdF91cGRhdGVfMCgpOgogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIn0pLAotICAgICAgICAgICAg
ICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6ICIvcGF0aC90by90ZXN0Lmh0bSIsCisgICAg
ICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogIi9wYXRoL3RvL3Rlc3QuaHRt
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0p
CisKKyAgICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2cpCisKKyAgICBhc3NlcnQgbGVuKHVw
ZGF0ZWQpID09IDEKKyAgICBhc3NlcnQgdXBkYXRlZFswXVsxXS5pc19lbXB0eQorCisKK0BweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKK2RlZiB0ZXN0X3VwZGF0ZV8x
KCk6CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLAorICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgIFt0ZXN0MV0KKyAgICBleHBl
Y3RlZDogRVJST1IiIiIpXQorCisgICAgbG9nID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7
InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwg
eyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic3RhdHVzIjogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQiOiAiRVJST1IifSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5k
IiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InN0YXR1cyI6ICJPSyJ9KV0pCisKKyAgICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2cpCisK
KyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisgICAgYXNzZXJ0IG5vdCBuZXdfbWFu
aWZlc3QuaXNfZW1wdHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQp
LmNoaWxkcmVuWzBdLmdldCgiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIK
KworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCitkZWYgdGVz
dF91cGRhdGVfa25vd25faW50ZXJtaXR0ZW50XzEoKToKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCisgICAgICAgICAgICAgICIiIlt0
ZXN0Lmh0bV0KKyAgW3Rlc3QxXQorICAgIGV4cGVjdGVkOiBQQVNTIiIiKV0KKworICAgIGxvZ18w
ID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAg
ICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKKworICAgIGxv
Z18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAg
ICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIlBBU1MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwK
KyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKKworICAg
IGxvZ18yID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisg
ICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIlBBU1MiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9
KSwKKyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKKwor
ICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wLCBsb2dfMSwgbG9nXzIsIHVwZGF0ZV9p
bnRlcm1pdHRlbnQ9VHJ1ZSkKKworICAgIG5ld19tYW5pZmVzdCA9IHVwZGF0ZWRbMF1bMV0KKwor
ICAgIGFzc2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5CisgICAgYXNzZXJ0IG5ld19tYW5p
ZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlblswXS5nZXQoCisgICAgICAgICJleHBlY3Rl
ZCIsIGRlZmF1bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJGQUlMIl0KKworCitAcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCitkZWYgdGVzdF91cGRhdGVfa25vd25f
aW50ZXJtaXR0ZW50XzIoKToKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVz
dF9pZF0sICJ0ZXN0aGFybmVzcyIsCisgICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgW3Rl
c3QxXQorICAgIGV4cGVjdGVkOiBQQVNTIiIiKV0KKworICAgIGxvZ18wID0gc3VpdGVfbG9nKFso
InRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAo
InRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKKworICAgIHVwZGF0ZWQgPSB1cGRhdGUo
dGVzdHMsIGxvZ18wLCB1cGRhdGVfaW50ZXJtaXR0ZW50PVRydWUpCisKKyAgICBuZXdfbWFuaWZl
c3QgPSB1cGRhdGVkWzBdWzFdCisKKyAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0
eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0u
Z2V0KAorICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAiRkFJTCIKKwor
CitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAgICAg
ICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCitkZWYgdGVzdF91
cGRhdGVfZXhpc3Rpbmdfa25vd25faW50ZXJtaXR0ZW50KCk6CisgICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAorICAgICAgICAgICAgICAi
IiJbdGVzdC5odG1dCisgIFt0ZXN0MV0KKyAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxdIiIiKV0K
KworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lk
fSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVz
dDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkVS
Uk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjog
IlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia25vd25faW50
ZXJtaXR0ZW50IjogWyJGQUlMIl19KSwKKyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQi
LCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c3RhdHVzIjogIk9LIn0pXSkKKworICAgIGxvZ18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQi
LCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVz
IiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RhdHVzIjogIlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJrbm93bl9pbnRlcm1pdHRlbnQiOiBbIkZBSUwiXX0pLAorICAgICAgICAgICAgICAg
ICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiT0sifSldKQorCisgICAgbG9nXzIgPSBzdWl0ZV9s
b2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImtub3duX2ludGVybWl0dGVudCI6IFsiRkFJTCJdfSks
CisgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0pCisKKyAg
ICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2dfMCwgbG9nXzEsIGxvZ18yLCB1cGRhdGVfaW50
ZXJtaXR0ZW50PVRydWUpCisKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisgICAg
YXNzZXJ0IG5vdCBuZXdfbWFuaWZlc3QuaXNfZW1wdHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwg
ZGVmYXVsdF9ydW5faW5mbykgPT0gWyJQQVNTIiwgIkVSUk9SIiwgIkZBSUwiXQorCisKK0BweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKK2RlZiB0ZXN0X3VwZGF0ZV9y
ZW1vdmVfcHJldmlvdXNfaW50ZXJtaXR0ZW50KCk6CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rl
c3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAorICAgICAgICAgICAgICAiIiJbdGVz
dC5odG1dCisgIFt0ZXN0MV0KKyAgICBleHBlY3RlZDogW1BBU1MsIEZBSUxdIiIiKV0KKworICAg
IGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisg
ICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkVSUk9SIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia25vd25faW50ZXJtaXR0
ZW50IjogWyJGQUlMIl19KSwKKyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRl
c3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVz
IjogIk9LIn0pXSkKKworICAgIGxvZ18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRl
c3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0
ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1
YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c3RhdHVzIjogIlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
ZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJrbm93bl9pbnRlcm1pdHRlbnQiOiBbIkZBSUwiXX0pLAorICAgICAgICAgICAgICAgICAgICAg
KCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzdGF0dXMiOiAiT0sifSldKQorCisgICAgbG9nXzIgPSBzdWl0ZV9sb2coWygi
dGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICgi
dGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImtub3duX2ludGVybWl0dGVudCI6IFsiRkFJTCJdfSksCisgICAg
ICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0pCisKKyAgICB1cGRh
dGVkID0gdXBkYXRlKHRlc3RzLAorICAgICAgICAgICAgICAgICAgICAgbG9nXzAsCisgICAgICAg
ICAgICAgICAgICAgICBsb2dfMSwKKyAgICAgICAgICAgICAgICAgICAgIGxvZ18yLAorICAgICAg
ICAgICAgICAgICAgICAgdXBkYXRlX2ludGVybWl0dGVudD1UcnVlLAorICAgICAgICAgICAgICAg
ICAgICAgcmVtb3ZlX2ludGVybWl0dGVudD1UcnVlKQorCisgICAgbmV3X21hbmlmZXN0ID0gdXBk
YXRlZFswXVsxXQorICAgIGFzc2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5CisgICAgYXNz
ZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlblswXS5nZXQoCisgICAg
ICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09IFsiUEFTUyIsICJFUlJPUiJdCisK
KworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3Rf
dXBkYXRlX25ld190ZXN0X3dpdGhfaW50ZXJtaXR0ZW50KCk6CisgICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBOb25lKV0KKworICAgIGxv
Z18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAg
ICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJ0ZXN0IjogInRlc3QxIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIlBBU1Mi
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQ
QVNTIn0pLAorICAgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVz
dF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9L
In0pXSkKKworICAgIGxvZ18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0
ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3Qi
OiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJ0
ZXN0IjogInRlc3QxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
c3RhdHVzIjogIlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJleHBlY3RlZCI6ICJQQVNTIn0pLAorICAgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5k
IiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic3RhdHVzIjogIk9LIn0pXSkKKworICAgIGxvZ18yID0gc3VpdGVfbG9nKFsoInRlc3Rfc3Rh
cnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9z
dGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzdWJ0ZXN0IjogInRlc3QxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIn0pLAorICAgICAgICAgICAgICAgICAg
ICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKKworICAgIHVwZGF0ZWQgPSB1cGRh
dGUodGVzdHMsIGxvZ18wLCBsb2dfMSwgbG9nXzIsIHVwZGF0ZV9pbnRlcm1pdHRlbnQ9VHJ1ZSkK
KyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisKKyAgICBhc3NlcnQgbm90IG5ld19t
YW5pZmVzdC5pc19lbXB0eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QoInRlc3Qu
aHRtIikgaXMgTm9uZQorICAgIGFzc2VydCBsZW4obmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3Rf
aWQpLmNoaWxkcmVuKSA9PSAxCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0
X2lkKS5jaGlsZHJlblswXS5nZXQoCisgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2lu
Zm8pID09IFsiUEFTUyIsICJGQUlMIl0KKworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24n
dCBzdXBwb3J0IHB5MyIpCitkZWYgdGVzdF91cGRhdGVfZXhwZWN0ZWRfdGllX3Jlc29sdXRpb24o
KToKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsIE5vbmUpXQorCisgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsi
dGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIs
IHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MifSksCisgICAgICAgICAgICAgICAgICAgICAgICgi
dGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJzdGF0dXMiOiAiT0sifSldKQorCisgICAgbG9nXzEgPSBzdWl0ZV9sb2coWygi
dGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
KCJ0ZXN0X3N0YXR1cyIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiRkFJTCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MifSksCisgICAgICAgICAg
ICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiT0sifSldKQorCisgICAgdXBkYXRl
ZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzAsIGxvZ18xLCB1cGRhdGVfaW50ZXJtaXR0ZW50PVRydWUp
CisgICAgbmV3X21hbmlmZXN0ID0gdXBkYXRlZFswXVsxXQorCisgICAgYXNzZXJ0IG5vdCBuZXdf
bWFuaWZlc3QuaXNfZW1wdHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3Rf
aWQpLmNoaWxkcmVuWzBdLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5m
bykgPT0gWyJQQVNTIiwgIkZBSUwiXQorCisKK0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lv
blswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0
IHN1cHBvcnQgcHkzIikKK2RlZiB0ZXN0X3VwZGF0ZV9yZW9yZGVyX2V4cGVjdGVkKCk6CisgICAg
dGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAor
ICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCisgIFt0ZXN0MV0KKyAgICBleHBlY3RlZDogW1BB
U1MsIEZBSUxdIiIiKV0KKworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7
InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMi
LCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdWJ0ZXN0IjogInRlc3QxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic3RhdHVzIjogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAia25vd25faW50ZXJtaXR0ZW50IjogWyJGQUlMIl19KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0pCisKKyAgICBsb2df
MSA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJGQUlMIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFT
UyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtub3duX2ludGVy
bWl0dGVudCI6IFsiRkFJTCJdfSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQi
LCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICJzdGF0dXMiOiAiT0sifSldKQorCisgICAgbG9nXzIgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFy
dCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0
YXR1cyIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJrbm93bl9pbnRlcm1pdHRlbnQiOiBbIkZBSUwiXX0pLAorICAg
ICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKKworICAg
IHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wLCBsb2dfMSwgbG9nXzIsIHVwZGF0ZV9pbnRl
cm1pdHRlbnQ9VHJ1ZSkKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisKKyAgICBh
c3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3Qu
Z2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0uZ2V0KAorICAgICAgICAiZXhwZWN0ZWQiLCBk
ZWZhdWx0X3J1bl9pbmZvKSA9PSBbIkZBSUwiLCAiUEFTUyJdCisKKworQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1l
dGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2FuZF9wcmVzZXJ2
ZV91bmNoYW5nZWRfZXhwZWN0ZWRfaW50ZXJtaXR0ZW50KCk6CisgICAgdGVzdHMgPSBbKCJwYXRo
L3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIKK1t0ZXN0Lmh0bV0K
KyAgZXhwZWN0ZWQ6CisgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywgRkFJTF0KKyAgICBG
QUlMIiIiKV0KKworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3Qi
OiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3Qi
OiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMi
OiAiRkFJTCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVk
IjogIlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrbm93bl9p
bnRlcm1pdHRlbnQiOiBbIkZBSUwiXX0pXSwKKyAgICAgICAgICAgICAgICAgICAgICBydW5faW5m
bz17Im9zIjogImFuZHJvaWQifSkKKworICAgIGxvZ18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3Rh
cnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9l
bmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImV4cGVjdGVkIjogIlBBU1MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJrbm93bl9pbnRlcm1pdHRlbnQiOiBbIkZBSUwiXX0pXSwKKyAgICAgICAgICAgICAgICAg
ICAgICBydW5faW5mbz17Im9zIjogImFuZHJvaWQifSkKKworICAgIGxvZ18yID0gc3VpdGVfbG9n
KFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkZBSUwifSldKQorCisgICAgdXBkYXRlZCA9IHVw
ZGF0ZSh0ZXN0cywgbG9nXzAsIGxvZ18xLCBsb2dfMikKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRh
dGVkWzBdWzFdCisKKyAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQorCisgICAg
cnVuX2luZm9fMSA9IGRlZmF1bHRfcnVuX2luZm8uY29weSgpCisgICAgcnVuX2luZm9fMS51cGRh
dGUoeyJvcyI6ICJhbmRyb2lkIn0pCisKKyAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19l
bXB0eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KAorICAg
ICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSBbIlBBU1MiLCAiRkFJTCJdCisgICAgYXNz
ZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoCisgICAgICAgICJleHBlY3Rl
ZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJQQVNTIgorCisKK0BweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0
YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKK2RlZiB0ZXN0X3VwZGF0ZV90ZXN0X3dpdGhfaW50ZXJt
aXR0ZW50X3RvX29uZV9leHBlY3RlZF9zdGF0dXMoKToKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsCisgICAgICAgICAgICAgICIiIlt0
ZXN0Lmh0bV0KKyAgW3Rlc3QxXQorICAgIGV4cGVjdGVkOiBbUEFTUywgRkFJTF0iIiIpXQorCisg
ICAgbG9nXzAgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwK
KyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiRVJST1Ii
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFT
UyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrbm93bl9pbnRlcm1p
dHRlbnQiOiBbIkZBSUwiXX0pLAorICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsi
dGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0
dXMiOiAiT0sifSldKQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzApCisKKyAg
ICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisgICAgYXNzZXJ0IG5vdCBuZXdfbWFuaWZl
c3QuaXNfZW1wdHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNo
aWxkcmVuWzBdLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0g
IkVSUk9SIgorCisKK0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisg
ICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikK
K2RlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfd2l0aF9jb25kaXRpb25zKCk6CisgICAgdGVz
dHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiIK
K1t0ZXN0Lmh0bV0KKyAgZXhwZWN0ZWQ6CisgICAgaWYgb3MgPT0gImFuZHJvaWQiOiBbUEFTUywg
RkFJTF0iIiIpXQorCisgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVz
dCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVz
dCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1
cyI6ICJUSU1FT1VUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhw
ZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtu
b3duX2ludGVybWl0dGVudCI6IFsiRkFJTCJdfSldLAorICAgICAgICAgICAgICAgICAgICAgIHJ1
bl9pbmZvPXsib3MiOiAiYW5kcm9pZCJ9KQorCisgICAgbG9nXzEgPSBzdWl0ZV9sb2coWygidGVz
dF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0
ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgInN0YXR1cyI6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgImtub3duX2ludGVybWl0dGVudCI6IFsiRkFJTCJdfSldLAorICAgICAgICAgICAg
ICAgICAgICAgIHJ1bl9pbmZvPXsib3MiOiAiYW5kcm9pZCJ9KQorCisgICAgdXBkYXRlZCA9IHVw
ZGF0ZSh0ZXN0cywgbG9nXzAsIGxvZ18xLCB1cGRhdGVfaW50ZXJtaXR0ZW50PVRydWUpCisgICAg
bmV3X21hbmlmZXN0ID0gdXBkYXRlZFswXVsxXQorCisgICAgYXNzZXJ0IG5vdCBuZXdfbWFuaWZl
c3QuaXNfZW1wdHkKKworICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQor
ICAgIHJ1bl9pbmZvXzEudXBkYXRlKHsib3MiOiAiYW5kcm9pZCJ9KQorCisgICAgYXNzZXJ0IG5v
dCBuZXdfbWFuaWZlc3QuaXNfZW1wdHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0
KHRlc3RfaWQpLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMSkgPT0gWyJQQVNT
IiwgIlRJTUVPVVQiLCAiRkFJTCJdCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2FuZF9yZW1vdmVfaW50ZXJtaXR0ZW50X3dp
dGhfY29uZGl0aW9ucygpOgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0
X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCitbdGVzdC5odG1dCisgIGV4cGVjdGVkOgorICAgIGlm
IG9zID09ICJhbmRyb2lkIjogW1BBU1MsIEZBSUxdIiIiKV0KKworICAgIGxvZ18wID0gc3VpdGVf
bG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAg
ICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiVElNRU9VVCIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJrbm93bl9pbnRlcm1pdHRlbnQiOiBbIkZBSUwiXX0pXSwK
KyAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz17Im9zIjogImFuZHJvaWQifSkKKworICAg
IGxvZ18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIlBBU1MiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrbm93bl9pbnRlcm1pdHRlbnQiOiBb
IkZBSUwiXX0pXSwKKyAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz17Im9zIjogImFuZHJv
aWQifSkKKworICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wLCBsb2dfMSwgdXBkYXRl
X2ludGVybWl0dGVudD1UcnVlLCByZW1vdmVfaW50ZXJtaXR0ZW50PVRydWUpCisgICAgbmV3X21h
bmlmZXN0ID0gdXBkYXRlZFswXVsxXQorCisgICAgYXNzZXJ0IG5vdCBuZXdfbWFuaWZlc3QuaXNf
ZW1wdHkKKworICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1
bl9pbmZvXzEudXBkYXRlKHsib3MiOiAiYW5kcm9pZCJ9KQorCisgICAgYXNzZXJ0IG5vdCBuZXdf
bWFuaWZlc3QuaXNfZW1wdHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3Rf
aWQpLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMSkgPT0gWyJQQVNTIiwgIlRJ
TUVPVVQiXQorCisKK0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisg
ICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikK
K2RlZiB0ZXN0X3VwZGF0ZV9pbnRlcm1pdHRlbnRfZnVsbCgpOgorICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwKKyAgICAgICAgICAgICAg
IiIiW3Rlc3QuaHRtXQorICBbdGVzdDFdCisgICAgZXhwZWN0ZWQ6CisgICAgICBpZiBvcyA9PSAi
bWFjIjogW0ZBSUwsIFRJTUVPVVRdCisgICAgICBGQUlMIiIiKV0KKworICAgIGxvZ18wID0gc3Vp
dGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAg
ICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiRkFJTCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJrbm93bl9pbnRlcm1pdHRlbnQiOiBbIlRJTUVP
VVQiXX0pLAorICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3Rf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiT0sifSld
LAorICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJvcyI6ICJtYWMifSkKKworICAgIGxv
Z18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAg
ICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwifSksCisg
ICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0pCisKKyAgICB1
cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2dfMCwgbG9nXzEsIHVwZGF0ZV9pbnRlcm1pdHRlbnQ9
VHJ1ZSwgZnVsbF91cGRhdGU9VHJ1ZSkKKworICAgIG5ld19tYW5pZmVzdCA9IHVwZGF0ZWRbMF1b
MV0KKworICAgIGFzc2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5CisgICAgcnVuX2luZm9f
MSA9IGRlZmF1bHRfcnVuX2luZm8uY29weSgpCisgICAgcnVuX2luZm9fMS51cGRhdGUoeyJvcyI6
ICJtYWMifSkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxk
cmVuWzBdLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMSkgPT0gWyJGQUlMIiwg
IlRJTUVPVVQiXQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hp
bGRyZW5bMF0uZ2V0KAorICAgICAgICAiZXhwZWN0ZWQiLCBkZWZhdWx0X3J1bl9pbmZvKSA9PSAi
RkFJTCIKKworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCitk
ZWYgdGVzdF91cGRhdGVfaW50ZXJtaXR0ZW50X2Z1bGxfcmVtb3ZlKCk6CisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAorICAgICAgICAg
ICAgICAiIiJbdGVzdC5odG1dCisgIFt0ZXN0MV0KKyAgICBleHBlY3RlZDoKKyAgICAgIGlmIG9z
ID09ICJtYWMiOiBbRkFJTCwgVElNRU9VVCwgUEFTU10KKyAgICAgIEZBSUwiIiIpXQorCisgICAg
bG9nXzAgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAg
ICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiRkFJTCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtub3duX2ludGVybWl0dGVu
dCI6IFsiVElNRU9VVCIsICJQQVNTIl19KSwKKyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9l
bmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAic3RhdHVzIjogIk9LIn0pXSwKKyAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsib3Mi
OiAibWFjIn0pCisKKyAgICBsb2dfMSA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0
IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIsIHsidGVz
dCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJ0
ZXN0IjogInRlc3QxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0
YXR1cyI6ICJUSU1FT1VUIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImV4cGVjdGVkIjogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAia25vd25faW50ZXJtaXR0ZW50IjogWyJUSU1FT1VUIiwgIlBBU1MiXX0pLAorICAgICAgICAg
ICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiT0sifSldLAorICAgICAgICAgICAgICAg
ICAgICAgcnVuX2luZm89eyJvcyI6ICJtYWMifSkKKworICAgIGxvZ18yID0gc3VpdGVfbG9nKFso
InRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAgICAo
InRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwifSksCisgICAgICAgICAgICAgICAgICAg
ICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0pCisKKyAgICB1cGRhdGVkID0gdXBkYXRlKHRl
c3RzLCBsb2dfMCwgbG9nXzEsIGxvZ18yLCB1cGRhdGVfaW50ZXJtaXR0ZW50PVRydWUsCisgICAg
ICAgICAgICAgICAgICAgICBmdWxsX3VwZGF0ZT1UcnVlLCByZW1vdmVfaW50ZXJtaXR0ZW50PVRy
dWUpCisKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisKKyAgICBhc3NlcnQgbm90
IG5ld19tYW5pZmVzdC5pc19lbXB0eQorICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0X3J1bl9pbmZv
LmNvcHkoKQorICAgIHJ1bl9pbmZvXzEudXBkYXRlKHsib3MiOiAibWFjIn0pCisgICAgYXNzZXJ0
IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlblswXS5nZXQoCisgICAgICAg
ICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09IFsiRkFJTCIsICJUSU1FT1VUIl0KKyAgICBhc3Nl
cnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmdldCgKKyAgICAg
ICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwiCisKKworQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfZnVsbF91cGRhdGUo
KToKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFy
bmVzcyIsCisgICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgW3Rlc3QxXQorICAgIGV4cGVj
dGVkOgorICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1FT1VUXQorICAgICAgRkFJTCIi
IildCisKKyAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVz
dF9pZH0pLAorICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIsIHsidGVzdCI6IHRl
c3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJ0ZXN0Ijog
InRlc3QxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6
ICJGQUlMIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVk
IjogIkZBSUwiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAia25vd25f
aW50ZXJtaXR0ZW50IjogWyJUSU1FT1VUIl19KSwKKyAgICAgICAgICAgICAgICAgICAgICgidGVz
dF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAic3RhdHVzIjogIk9LIn0pXSwKKyAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsi
b3MiOiAibWFjIn0pCisKKyAgICBsb2dfMSA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0
ZXN0IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIsIHsi
dGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz
dWJ0ZXN0IjogInRlc3QxIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InN0YXR1cyI6ICJGQUlMIn0pLAorICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsi
dGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0
dXMiOiAiT0sifSldKQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzAsIGxvZ18x
LCBmdWxsX3VwZGF0ZT1UcnVlKQorCisgICAgbmV3X21hbmlmZXN0ID0gdXBkYXRlZFswXVsxXQor
CisgICAgYXNzZXJ0IG5vdCBuZXdfbWFuaWZlc3QuaXNfZW1wdHkKKyAgICBydW5faW5mb18xID0g
ZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18xLnVwZGF0ZSh7Im9zIjogIm1h
YyJ9KQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5b
MF0uZ2V0KAorICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSAiRkFJTCIKKyAgICBh
c3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmdldCgKKyAg
ICAgICAgImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwiCisKKworQHB5dGVz
dC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICBy
ZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfZnVsbF9vcnBo
YW4oKToKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsCisgICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KKyAgW3Rlc3QxXQorICAgIGV4
cGVjdGVkOiBGQUlMCisgICAgW3N1YnN1YiB0ZXN0XQorICAgICAgZXhwZWN0ZWQ6IFRJTUVPVVQK
KyAgW3Rlc3QyXQorICAgIGV4cGVjdGVkOiBFUlJPUgorIiIiKV0KKworICAgIGxvZ18wID0gc3Vp
dGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAg
ICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiRkFJTCJ9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKIAotICAgIHVwZGF0ZWQg
PSB1cGRhdGUodGVzdHMsIGxvZykKIAotICAgIGFzc2VydCBsZW4odXBkYXRlZCkgPT0gMQotICAg
IGFzc2VydCB1cGRhdGVkWzBdWzFdLmlzX2VtcHR5CisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0
cywgbG9nXzAsIGZ1bGxfdXBkYXRlPVRydWUpCiAKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVk
WzBdWzFdCiAKLWRlZiB0ZXN0X3VwZGF0ZV8xKCk6Ci0gICAgdGVzdF9pZCA9ICIvcGF0aC90by90
ZXN0Lmh0bSIKKyAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQorICAgIGFzc2Vy
dCBsZW4obmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmNoaWxkcmVu
KSA9PSAwCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJl
blswXS5nZXQoCisgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09ICJGQUlM
IgorICAgIGFzc2VydCBsZW4obmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVu
KSA9PSAxCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAg
ICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQor
ZGVmIHRlc3RfdXBkYXRlX3Jlb3JkZXJfZXhwZWN0ZWRfZnVsbF9jb25kaXRpb25zKCk6CiAgICAg
dGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLAog
ICAgICAgICAgICAgICAiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KLSAgICBleHBlY3RlZDogRVJS
T1IiIiIpXQorICAgIGV4cGVjdGVkOgorICAgICAgaWYgb3MgPT0gIm1hYyI6IFtGQUlMLCBUSU1F
T1VUXQorICAgICAgW0ZBSUwsIFBBU1NdIiIiKV0KIAotICAgIGxvZyA9IHN1aXRlX2xvZyhbKCJ0
ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgIGxvZ18wID0gc3VpdGVfbG9nKFso
InRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCiAgICAgICAgICAgICAgICAgICAgICAo
InRlc3Rfc3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN1YnRlc3QiOiAidGVzdDEiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwiLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiRVJST1IifSksCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiVElNRU9VVCIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgImtub3duX2ludGVybWl0dGVudCI6IFsiVElNRU9V
VCJdfSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9p
ZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0s
CisgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz17Im9zIjogIm1hYyJ9KQorCisgICAgbG9n
XzEgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAg
ICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiVElNRU9VVCIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlMIiwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtub3duX2ludGVybWl0dGVu
dCI6IFsiVElNRU9VVCJdfSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0
ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1
cyI6ICJPSyJ9KV0sCisgICAgICAgICAgICAgICAgICAgICBydW5faW5mbz17Im9zIjogIm1hYyJ9
KQorCisgICAgbG9nXzIgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3Rf
aWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0
X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0
ZXN0MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAi
UEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6
ICJGQUlMIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtub3duX2lu
dGVybWl0dGVudCI6IFsiUEFTUyJdfSksCiAgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5k
IiwgeyJ0ZXN0IjogdGVzdF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InN0YXR1cyI6ICJPSyJ9KV0pCiAKLSAgICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2cpCisg
ICAgbG9nXzMgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwK
KyAgICAgICAgICAgICAgICAgICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyIs
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJGQUlM
IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImtub3duX2ludGVybWl0
dGVudCI6IFsiUEFTUyJdfSksCisgICAgICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0
ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1
cyI6ICJPSyJ9KV0pCisKKyAgICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2dfMCwgbG9nXzEs
IGxvZ18yLCBsb2dfMywgdXBkYXRlX2ludGVybWl0dGVudD1UcnVlLCBmdWxsX3VwZGF0ZT1UcnVl
KQogCiAgICAgbmV3X21hbmlmZXN0ID0gdXBkYXRlZFswXVsxXQorCiAgICAgYXNzZXJ0IG5vdCBu
ZXdfbWFuaWZlc3QuaXNfZW1wdHkKLSAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRl
c3RfaWQpLmNoaWxkcmVuWzBdLmdldCgiZXhwZWN0ZWQiKSA9PSAiRkFJTCIKKyAgICBydW5faW5m
b18xID0gZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18xLnVwZGF0ZSh7Im9z
IjogIm1hYyJ9KQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hp
bGRyZW5bMF0uZ2V0KAorICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSBbIlRJTUVP
VVQiLCAiRkFJTCJdCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5j
aGlsZHJlblswXS5nZXQoCisgICAgICAgICJleHBlY3RlZCIsIGRlZmF1bHRfcnVuX2luZm8pID09
IFsiUEFTUyIsICJGQUlMIl0KIAogCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCiBkZWYgdGVzdF9za2lwXzAoKToKLSAgICB0ZXN0X2lkID0gIi9wYXRoL3RvL3Rl
c3QuaHRtIgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwKICAgICAgICAgICAgICAgIiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCkBAIC0x
NjUsOCArODI5LDkgQEAgZGVmIHRlc3Rfc2tpcF8wKCk6CiAgICAgYXNzZXJ0IG5vdCB1cGRhdGVk
CiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRl
c3RfbmV3X3N1YnRlc3QoKToKLSAgICB0ZXN0X2lkID0gIi9wYXRoL3RvL3Rlc3QuaHRtIgogICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
IiIiW3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQpAQCAtMTg1
LDEyICs4NTAsMTMgQEAgZGVmIHRlc3RfbmV3X3N1YnRlc3QoKToKICAgICB1cGRhdGVkID0gdXBk
YXRlKHRlc3RzLCBsb2cpCiAgICAgbmV3X21hbmlmZXN0ID0gdXBkYXRlZFswXVsxXQogICAgIGFz
c2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5Ci0gICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlblswXS5nZXQoImV4cGVjdGVkIikgPT0gIkZBSUwiCi0g
ICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlblsxXS5nZXQo
ImV4cGVjdGVkIikgPT0gIkZBSUwiCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0
ZXN0X2lkKS5jaGlsZHJlblswXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0g
IkZBSUwiCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJl
blsxXS5nZXQoImV4cGVjdGVkIiwgZGVmYXVsdF9ydW5faW5mbykgPT0gIkZBSUwiCiAKIAorQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAg
ICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRl
X211bHRpcGxlXzAoKToKLSAgICB0ZXN0X2lkID0gIi9wYXRoL3RvL3Rlc3QuaHRtIgogICAgIHRl
c3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIi
W3Rlc3QuaHRtXQogICBbdGVzdDFdCiAgICAgZXhwZWN0ZWQ6IEZBSUwiIiIpXQpAQCAtMjE3LDE0
ICs4ODMsMTkgQEAgZGVmIHRlc3RfdXBkYXRlX211bHRpcGxlXzAoKToKICAgICBuZXdfbWFuaWZl
c3QgPSB1cGRhdGVkWzBdWzFdCiAKICAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0
eQorICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZv
XzEudXBkYXRlKHsiZGVidWciOiBGYWxzZSwgIm9zIjogIm9zeCJ9KQorICAgIHJ1bl9pbmZvXzIg
PSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZvXzIudXBkYXRlKHsiZGVidWci
OiBGYWxzZSwgIm9zIjogImxpbnV4In0pCiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVz
dCh0ZXN0X2lkKS5jaGlsZHJlblswXS5nZXQoCi0gICAgICAgICJleHBlY3RlZCIsIHsiZGVidWci
OiBGYWxzZSwgIm9zIjogIm9zeCJ9KSA9PSAiRkFJTCIKKyAgICAgICAgImV4cGVjdGVkIiwgcnVu
X2luZm9fMSkgPT0gIkZBSUwiCiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0
X2lkKS5jaGlsZHJlblswXS5nZXQoCiAgICAgICAgICJleHBlY3RlZCIsIHsiZGVidWciOiBGYWxz
ZSwgIm9zIjogImxpbnV4In0pID09ICJUSU1FT1VUIgogCiAKK0BweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0
YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9tdWx0aXBsZV8xKCk6Ci0g
ICAgdGVzdF9pZCA9ICIvcGF0aC90by90ZXN0Lmh0bSIKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8v
dGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KICAgW3Rl
c3QxXQogICAgIGV4cGVjdGVkOiBGQUlMIiIiKV0KQEAgLTIzNiw3ICs5MDcsNyBAQCBkZWYgdGVz
dF91cGRhdGVfbXVsdGlwbGVfMSgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZCI6ICJGQUlMIn0pLAogICAgICAgICAgICAgICAgICAgICAgICAoInRl
c3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic3RhdHVzIjogIk9LIn0pXSwKLSAgICAgICAgICAgICAgICAgICAgICBydW5faW5m
bz17ImRlYnVnIjogRmFsc2UsICJvcyI6ICJvc3gifSkKKyAgICAgICAgICAgICAgICAgICAgICBy
dW5faW5mbz17Im9zIjogIm9zeCJ9KQogCiAgICAgbG9nXzEgPSBzdWl0ZV9sb2coWygidGVzdF9z
dGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKICAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0
X3N0YXR1cyIsIHsidGVzdCI6IHRlc3RfaWQsCkBAIC0yNDUsMjIgKzkxNiwzMCBAQCBkZWYgdGVz
dF91cGRhdGVfbXVsdGlwbGVfMSgpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJleHBlY3RlZCI6ICJGQUlMIn0pLAogICAgICAgICAgICAgICAgICAgICAgICAoInRl
c3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAic3RhdHVzIjogIk9LIn0pXSwKLSAgICAgICAgICAgICAgICAgICAgICBydW5faW5m
bz17ImRlYnVnIjogRmFsc2UsICJvcyI6ICJsaW51eCJ9KQorICAgICAgICAgICAgICAgICAgICAg
IHJ1bl9pbmZvPXsib3MiOiAibGludXgifSkKIAogICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMs
IGxvZ18wLCBsb2dfMSkKICAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCiAKICAgICBh
c3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQorICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0
X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZvXzEudXBkYXRlKHsib3MiOiAib3N4In0pCisg
ICAgcnVuX2luZm9fMiA9IGRlZmF1bHRfcnVuX2luZm8uY29weSgpCisgICAgcnVuX2luZm9fMi51
cGRhdGUoeyJvcyI6ICJsaW51eCJ9KQorICAgIHJ1bl9pbmZvXzMgPSBkZWZhdWx0X3J1bl9pbmZv
LmNvcHkoKQorICAgIHJ1bl9pbmZvXzMudXBkYXRlKHsib3MiOiAid2luIn0pCisKICAgICBhc3Nl
cnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmdldCgKLSAgICAg
ICAgImV4cGVjdGVkIiwgeyJkZWJ1ZyI6IEZhbHNlLCAib3MiOiAib3N4In0pID09ICJGQUlMIgor
ICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSAiRkFJTCIKICAgICBhc3NlcnQgbmV3
X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmdldCgKLSAgICAgICAgImV4
cGVjdGVkIiwgeyJkZWJ1ZyI6IEZhbHNlLCAib3MiOiAibGludXgifSkgPT0gIlRJTUVPVVQiCisg
ICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogICAgIGFzc2VydCBu
ZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0uZ2V0KAotICAgICAgICAi
ZXhwZWN0ZWQiLCB7ImRlYnVnIjogRmFsc2UsICJvcyI6ICJ3aW5kb3dzIn0pID09ICJGQUlMIgor
ICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18zKSA9PSAiRkFJTCIKIAogCitAcHl0ZXN0Lm1h
cmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNv
bj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbXVsdGlw
bGVfMigpOgotICAgIHRlc3RfaWQgPSAiL3BhdGgvdG8vdGVzdC5odG0iCiAgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiJbdGVzdC5o
dG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDogRkFJTCIiIildCkBAIC0yODYsMTUgKzk2NSwy
MSBAQCBkZWYgdGVzdF91cGRhdGVfbXVsdGlwbGVfMigpOgogICAgIHVwZGF0ZWQgPSB1cGRhdGUo
dGVzdHMsIGxvZ18wLCBsb2dfMSkKICAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCiAK
KyAgICBydW5faW5mb18xID0gZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18x
LnVwZGF0ZSh7ImRlYnVnIjogRmFsc2UsICJvcyI6ICJvc3gifSkKKyAgICBydW5faW5mb18yID0g
ZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18yLnVwZGF0ZSh7ImRlYnVnIjog
VHJ1ZSwgIm9zIjogIm9zeCJ9KQorCiAgICAgYXNzZXJ0IG5vdCBuZXdfbWFuaWZlc3QuaXNfZW1w
dHkKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBd
LmdldCgKLSAgICAgICAgImV4cGVjdGVkIiwgeyJkZWJ1ZyI6IEZhbHNlLCAib3MiOiAib3N4In0p
ID09ICJGQUlMIgorICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSAiRkFJTCIKICAg
ICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmdldCgK
LSAgICAgICAgImV4cGVjdGVkIiwgeyJkZWJ1ZyI6IFRydWUsICJvcyI6ICJvc3gifSkgPT0gIlRJ
TUVPVVQiCisgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJUSU1FT1VUIgogCiAK
K0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3Vw
ZGF0ZV9tdWx0aXBsZV8zKCk6Ci0gICAgdGVzdF9pZCA9ICIvcGF0aC90by90ZXN0Lmh0bSIKICAg
ICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIs
ICIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4cGVjdGVkOgpAQCAtMzIyLDE1ICsxMDA3
LDIxIEBAIGRlZiB0ZXN0X3VwZGF0ZV9tdWx0aXBsZV8zKCk6CiAgICAgdXBkYXRlZCA9IHVwZGF0
ZSh0ZXN0cywgbG9nXzAsIGxvZ18xKQogICAgIG5ld19tYW5pZmVzdCA9IHVwZGF0ZWRbMF1bMV0K
IAorICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZv
XzEudXBkYXRlKHsiZGVidWciOiBGYWxzZSwgIm9zIjogIm9zeCJ9KQorICAgIHJ1bl9pbmZvXzIg
PSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZvXzIudXBkYXRlKHsiZGVidWci
OiBUcnVlLCAib3MiOiAib3N4In0pCisKICAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19l
bXB0eQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5b
MF0uZ2V0KAotICAgICAgICAiZXhwZWN0ZWQiLCB7ImRlYnVnIjogRmFsc2UsICJvcyI6ICJvc3gi
fSkgPT0gIkZBSUwiCisgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09ICJGQUlMIgog
ICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0uZ2V0
KAotICAgICAgICAiZXhwZWN0ZWQiLCB7ImRlYnVnIjogVHJ1ZSwgIm9zIjogIm9zeCJ9KSA9PSAi
VElNRU9VVCIKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIlRJTUVPVVQiCiAK
IAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAg
ICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3Rf
dXBkYXRlX2lnbm9yZV9leGlzdGluZygpOgotICAgIHRlc3RfaWQgPSAiL3BhdGgvdG8vdGVzdC5o
dG0iCiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhh
cm5lc3MiLCAiIiJbdGVzdC5odG1dCiAgIFt0ZXN0MV0KICAgICBleHBlY3RlZDoKQEAgLTM1OCwx
NSArMTA0OSwzMTggQEAgZGVmIHRlc3RfdXBkYXRlX2lnbm9yZV9leGlzdGluZygpOgogICAgIHVw
ZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wLCBsb2dfMSkKICAgICBuZXdfbWFuaWZlc3QgPSB1
cGRhdGVkWzBdWzFdCiAKKyAgICBydW5faW5mb18xID0gZGVmYXVsdF9ydW5faW5mby5jb3B5KCkK
KyAgICBydW5faW5mb18xLnVwZGF0ZSh7ImRlYnVnIjogRmFsc2UsICJvcyI6ICJsaW51eCJ9KQor
ICAgIHJ1bl9pbmZvXzIgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZvXzIu
dXBkYXRlKHsiZGVidWciOiBGYWxzZSwgIm9zIjogIm9zeCJ9KQorCisgICAgYXNzZXJ0IG5vdCBu
ZXdfbWFuaWZlc3QuaXNfZW1wdHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRl
c3RfaWQpLmNoaWxkcmVuWzBdLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMSkg
PT0gIkZBSUwiCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGls
ZHJlblswXS5nZXQoCisgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzIpID09ICJOT1RSVU4i
CisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAg
ICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRl
c3RfdXBkYXRlX25ld190ZXN0KCk6CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwg
W3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCBOb25lKV0KKworICAgIGxvZ18wID0gc3VpdGVfbG9n
KFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICgidGVzdF9zdGF0dXMiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJzdWJ0ZXN0IjogInRlc3QxIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCI6ICJQQVNTIn0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIk9LIn0pXSkKKyAgICB1cGRh
dGVkID0gdXBkYXRlKHRlc3RzLCBsb2dfMCkKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBd
WzFdCisKKyAgICBydW5faW5mb18xID0gZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKworICAgIGFz
c2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5CisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5n
ZXRfdGVzdCgidGVzdC5odG0iKSBpcyBOb25lCisgICAgYXNzZXJ0IGxlbihuZXdfbWFuaWZlc3Qu
Z2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW4pID09IDEKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0
LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuWzBdLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwg
cnVuX2luZm9fMSkgPT0gIkZBSUwiCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9u
WzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qg
c3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2R1cGxpY2F0ZSgpOgorICAgIHRlc3RzID0g
WygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCitbdGVz
dC5odG1dCisgIGV4cGVjdGVkOiBFUlJPUiIiIildCisKKyAgICBsb2dfMCA9IHN1aXRlX2xvZyhb
KCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAgICAgICAg
ICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic3RhdHVzIjogIlBBU1MifSldKQorICAgIGxvZ18xID0gc3VpdGVfbG9n
KFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAgICAgICAgICAgICAg
ICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiRkFJTCJ9KV0pCisKKyAgICB1cGRhdGVkID0gdXBk
YXRlKHRlc3RzLCBsb2dfMCwgbG9nXzEpCisgICAgbmV3X21hbmlmZXN0ID0gdXBkYXRlZFswXVsx
XQorICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorCisgICAgYXNzZXJ0
IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoCisgICAgICAgICJleHBlY3RlZCIs
IHJ1bl9pbmZvXzEpID09ICJFUlJPUiIKKworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24n
dCBzdXBwb3J0IHB5MyIpCitkZWYgdGVzdF91cGRhdGVfZGlzYWJsZV9pbnRlcm1pdHRlbnQoKToK
KyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVz
cyIsICIiIgorW3Rlc3QuaHRtXQorICBleHBlY3RlZDogRVJST1IiIiIpXQorCisgICAgbG9nXzAg
PSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJQQVNTIn0pXSkKKyAgICBsb2df
MSA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAg
ICAgICAgICAgICAgICAgICAoInRlc3RfZW5kIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZBSUwifSldKQorCisgICAg
dXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywgbG9nXzAsIGxvZ18xLCBkaXNhYmxlX2ludGVybWl0dGVu
dD0iU29tZSBtZXNzYWdlIikKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisgICAg
cnVuX2luZm9fMSA9IGRlZmF1bHRfcnVuX2luZm8uY29weSgpCisKKyAgICBhc3NlcnQgbmV3X21h
bmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdldCgKKyAgICAgICAgImRpc2FibGVkIiwgcnVuX2lu
Zm9fMSkgPT0gIlNvbWUgbWVzc2FnZSIKKworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24n
dCBzdXBwb3J0IHB5MyIpCitkZWYgdGVzdF91cGRhdGVfc3RhYmlsaXR5X2NvbmRpdGlvbmFsX2lu
c3RhYmlsaXR5KCk6CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRd
LCAidGVzdGhhcm5lc3MiLCAiIiIKK1t0ZXN0Lmh0bV0KKyAgZXhwZWN0ZWQ6IEVSUk9SIiIiKV0K
KworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lk
fSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lk
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiUEFTUyJ9
KV0sCisgICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJvcyI6ICJsaW51eCJ9KQorICAg
IGxvZ18xID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisg
ICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiRkFJTCJ9KV0sCisg
ICAgICAgICAgICAgICAgICAgICAgcnVuX2luZm89eyJvcyI6ICJsaW51eCJ9KQorICAgIGxvZ18y
ID0gc3VpdGVfbG9nKFsoInRlc3Rfc3RhcnQiLCB7InRlc3QiOiB0ZXN0X2lkfSksCisgICAgICAg
ICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMiOiAiRkFJTCJ9KV0sCisgICAgICAg
ICAgICAgICAgICAgICAgcnVuX2luZm89eyJvcyI6ICJtYWMifSkKKworICAgIHVwZGF0ZWQgPSB1
cGRhdGUodGVzdHMsIGxvZ18wLCBsb2dfMSwgbG9nXzIsIGRpc2FibGVfaW50ZXJtaXR0ZW50PSJT
b21lIG1lc3NhZ2UiKQorICAgIG5ld19tYW5pZmVzdCA9IHVwZGF0ZWRbMF1bMV0KKyAgICBydW5f
aW5mb18xID0gZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18xLnVwZGF0ZSh7
Im9zIjogImxpbnV4In0pCisgICAgcnVuX2luZm9fMiA9IGRlZmF1bHRfcnVuX2luZm8uY29weSgp
CisgICAgcnVuX2luZm9fMi51cGRhdGUoeyJvcyI6ICJtYWMifSkKKworICAgIGFzc2VydCBuZXdf
bWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KAorICAgICAgICAiZGlzYWJsZWQiLCBydW5f
aW5mb18xKSA9PSAiU29tZSBtZXNzYWdlIgorICAgIHdpdGggcHl0ZXN0LnJhaXNlcyhLZXlFcnJv
cik6CisgICAgICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KAor
ICAgICAgICAgICAgImRpc2FibGVkIiwgcnVuX2luZm9fMikKKyAgICBhc3NlcnQgbmV3X21hbmlm
ZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9f
MikgPT0gIkZBSUwiCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIz
IiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBw
eTMiKQorZGVmIHRlc3RfdXBkYXRlX2Z1bGwoKToKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVz
dC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KKyAgW3Rlc3Qx
XQorICAgIGV4cGVjdGVkOgorICAgICAgaWYgZGVidWc6IFRJTUVPVVQKKyAgICAgIGlmIG5vdCBk
ZWJ1ZyBhbmQgb3MgPT0gIm9zeCI6IE5PVFJVTgorCisgIFt0ZXN0Ml0KKyAgICBleHBlY3RlZDog
RkFJTAorCitbdGVzdC5qc10KKyAgW3Rlc3QxXQorICAgIGV4cGVjdGVkOiBGQUlMCisiIiIpXQor
CisgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIsIHsidGVzdCI6IHRlc3Rf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAi
dGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMi
OiAiRkFJTCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVj
dGVkIjogIlBBU1MifSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRl
c3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0
dXMiOiAiT0sifSldLAorICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsiZGVidWciOiBG
YWxzZX0pCisKKyAgICBsb2dfMSA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0Ijog
dGVzdF9pZH0pLAorICAgICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0
IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vi
dGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InN0YXR1cyI6ICJFUlJPUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImV4cGVjdGVkIjogIlBBU1MifSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9l
bmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdGF0dXMiOiAiT0sifSldLAorICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsi
ZGVidWciOiBUcnVlfSkKKworICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wLCBsb2df
MSwgZnVsbF91cGRhdGU9VHJ1ZSkKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisK
KyAgICBydW5faW5mb18xID0gZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18x
LnVwZGF0ZSh7ImRlYnVnIjogRmFsc2UsICJvcyI6ICJ3aW4ifSkKKyAgICBydW5faW5mb18yID0g
ZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18yLnVwZGF0ZSh7ImRlYnVnIjog
VHJ1ZSwgIm9zIjogIm9zeCJ9KQorCisgICAgYXNzZXJ0IG5vdCBuZXdfbWFuaWZlc3QuaXNfZW1w
dHkKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KCJ0ZXN0LmpzIikgaXMgTm9uZQor
ICAgIGFzc2VydCBsZW4obmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmNoaWxkcmVuKSA9
PSAxCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJlblsw
XS5nZXQoCisgICAgICAgICJleHBlY3RlZCIsIHJ1bl9pbmZvXzEpID09ICJGQUlMIgorICAgIGFz
c2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuY2hpbGRyZW5bMF0uZ2V0KAorICAg
ICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiRVJST1IiCisKKworQHB5dGVzdC5tYXJr
LnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249
Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2Z1bGxfdW5r
bm93bigpOgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICBbdGVzdDFdCisgICAgZXhwZWN0ZWQ6CisgICAg
ICBpZiByZWxlYXNlX29yX2JldGE6IEVSUk9SCisgICAgICBpZiBub3QgZGVidWcgYW5kIG9zID09
ICJvc3giOiBOT1RSVU4KKyIiIildCisKKyAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0
YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0pLAorICAgICAgICAgICAgICAgICAgICAgICAoInRlc3Rf
c3RhdHVzIiwgeyJ0ZXN0IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAic3VidGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgInN0YXR1cyI6ICJGQUlMIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQiOiAiUEFTUyJ9KSwKKyAgICAgICAgICAgICAgICAg
ICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgInN0YXR1cyI6ICJPSyJ9KV0sCisgICAgICAgICAgICAgICAgICAg
ICAgcnVuX2luZm89eyJkZWJ1ZyI6IEZhbHNlLCAicmVsZWFzZV9vcl9iZXRhIjogRmFsc2V9KQor
CisgICAgbG9nXzEgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9
KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIsIHsidGVzdCI6IHRlc3Rf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3QiOiAi
dGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0dXMi
OiAiRkFJTCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVj
dGVkIjogIlBBU1MifSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7InRl
c3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0
dXMiOiAiT0sifSldLAorICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsiZGVidWciOiBU
cnVlLCAicmVsZWFzZV9vcl9iZXRhIjogRmFsc2V9KQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0
ZXN0cywgbG9nXzAsIGxvZ18xLCBmdWxsX3VwZGF0ZT1UcnVlKQorICAgIG5ld19tYW5pZmVzdCA9
IHVwZGF0ZWRbMF1bMV0KKworICAgIHJ1bl9pbmZvXzEgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHko
KQorICAgIHJ1bl9pbmZvXzEudXBkYXRlKHsicmVsZWFzZV9vcl9iZXRhIjogRmFsc2V9KQorICAg
IHJ1bl9pbmZvXzIgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZvXzIudXBk
YXRlKHsicmVsZWFzZV9vcl9iZXRhIjogVHJ1ZX0pCisKICAgICBhc3NlcnQgbm90IG5ld19tYW5p
ZmVzdC5pc19lbXB0eQogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCku
Y2hpbGRyZW5bMF0uZ2V0KAotICAgICAgICAiZXhwZWN0ZWQiLCB7ImRlYnVnIjogVHJ1ZSwgIm9z
IjogIm9zeCJ9KSA9PSAiRkFJTCIKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMSkgPT0g
IkZBSUwiCiAgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5jaGlsZHJl
blswXS5nZXQoCi0gICAgICAgICJleHBlY3RlZCIsIHsiZGVidWciOiBGYWxzZSwgIm9zIjogIm9z
eCJ9KSA9PSAiTk9UUlVOIgorICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18yKSA9PSAiRVJS
T1IiCisKKworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCitk
ZWYgdGVzdF91cGRhdGVfZGVmYXVsdCgpOgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0
bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQorICBbdGVzdDFdCisg
ICAgZXhwZWN0ZWQ6CisgICAgICBpZiBvcyA9PSAibWFjIjogRkFJTAorICAgICAgRVJST1IiIiIp
XQorCisgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3Rf
aWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3N0YXR1cyIsIHsidGVzdCI6IHRl
c3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1YnRlc3Qi
OiAidGVzdDEiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdGF0
dXMiOiAiUEFTUyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4
cGVjdGVkIjogIkZBSUwifSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9lbmQiLCB7
InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJz
dGF0dXMiOiAiT0sifSldLAorICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsib3MiOiAi
bWFjIn0pCisKKyAgICBsb2dfMSA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0Ijog
dGVzdF9pZH0pLAorICAgICAgICAgICAgICAgICAgICAgICAoInRlc3Rfc3RhdHVzIiwgeyJ0ZXN0
IjogdGVzdF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vi
dGVzdCI6ICJ0ZXN0MSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InN0YXR1cyI6ICJQQVNTIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAiZXhwZWN0ZWQiOiAiRVJST1IifSksCisgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9l
bmQiLCB7InRlc3QiOiB0ZXN0X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJzdGF0dXMiOiAiT0sifSldLAorICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsi
b3MiOiAibGludXgifSkKKworICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wLCBsb2df
MSkKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisKKyAgICBhc3NlcnQgbmV3X21h
bmlmZXN0LmlzX2VtcHR5CisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09
ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9y
dCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2RlZmF1bHRfMSgpOgorICAgIHRlc3RzID0gWygicGF0
aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiCitbdGVzdC5odG1d
CisgIGV4cGVjdGVkOgorICAgIGlmIG9zID09ICJtYWMiOiBUSU1FT1VUCisgICAgRVJST1IiIiIp
XQorCisgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygidGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3Rf
aWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3Rf
aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkIjogIkVS
Uk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3RhdHVzIjogIkZB
SUwifSldLAorICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZvPXsib3MiOiAibGludXgifSkK
KworICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVzdHMsIGxvZ18wKQorICAgIG5ld19tYW5pZmVzdCA9
IHVwZGF0ZWRbMF1bMV0KKworICAgIGFzc2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5CisK
KyAgICBydW5faW5mb18xID0gZGVmYXVsdF9ydW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18x
LnVwZGF0ZSh7Im9zIjogIm1hYyJ9KQorICAgIHJ1bl9pbmZvXzIgPSBkZWZhdWx0X3J1bl9pbmZv
LmNvcHkoKQorICAgIHJ1bl9pbmZvXzIudXBkYXRlKHsib3MiOiAid2luIn0pCisKKyAgICBhc3Nl
cnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0
X3Rlc3QodGVzdF9pZCkuZ2V0KAorICAgICAgICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSAi
VElNRU9VVCIKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdldCgK
KyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2luZm9fMikgPT0gIkZBSUwiCiAKIAorQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFz
b249Im1ldGFkYXRhIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2RlZmF1
bHRfMigpOgorICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRl
c3RoYXJuZXNzIiwgIiIiCitbdGVzdC5odG1dCisgIGV4cGVjdGVkOgorICAgIGlmIG9zID09ICJt
YWMiOiBUSU1FT1VUCisgICAgRVJST1IiIiIpXQorCisgICAgbG9nXzAgPSBzdWl0ZV9sb2coWygi
dGVzdF9zdGFydCIsIHsidGVzdCI6IHRlc3RfaWR9KSwKKyAgICAgICAgICAgICAgICAgICAgICAg
KCJ0ZXN0X2VuZCIsIHsidGVzdCI6IHRlc3RfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgImV4cGVjdGVkIjogIkVSUk9SIiwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAic3RhdHVzIjogIlRJTUVPVVQifSldLAorICAgICAgICAgICAgICAgICAg
ICAgIHJ1bl9pbmZvPXsib3MiOiAibGludXgifSkKKworICAgIHVwZGF0ZWQgPSB1cGRhdGUodGVz
dHMsIGxvZ18wKQorICAgIG5ld19tYW5pZmVzdCA9IHVwZGF0ZWRbMF1bMV0KKworICAgIGFzc2Vy
dCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5CisKKyAgICBydW5faW5mb18xID0gZGVmYXVsdF9y
dW5faW5mby5jb3B5KCkKKyAgICBydW5faW5mb18xLnVwZGF0ZSh7Im9zIjogIm1hYyJ9KQorICAg
IHJ1bl9pbmZvXzIgPSBkZWZhdWx0X3J1bl9pbmZvLmNvcHkoKQorICAgIHJ1bl9pbmZvXzIudXBk
YXRlKHsib3MiOiAid2luIn0pCisKKyAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0
eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KAorICAgICAg
ICAiZXhwZWN0ZWQiLCBydW5faW5mb18xKSA9PSAiVElNRU9VVCIKKyAgICBhc3NlcnQgbmV3X21h
bmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdldCgKKyAgICAgICAgImV4cGVjdGVkIiwgcnVuX2lu
Zm9fMikgPT0gIlRJTUVPVVQiCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNuJ3Qgc3Vw
cG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8wKCk6Ci0gICAgdGVz
dF9pZCA9ICIvcGF0aC90by90ZXN0Lmh0bSIKICAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5o
dG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0KICAgbWF4LWFzc2Vy
dHM6IDQKICAgbWluLWFzc2VydHM6IDIKQEAgLTM4NCwxMiArMTM3OCwxMyBAQCBkZWYgdGVzdF91
cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzAoKToKICAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBd
WzFdCiAKICAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQotICAgIGFzc2VydCBu
ZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KCJtYXgtYXNzZXJ0cyIpID09IDcKLSAg
ICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdldCgibWluLWFzc2VydHMi
KSA9PSAyCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1h
eC1hc3NlcnRzIikgPT0gIjciCisgICAgYXNzZXJ0IG5ld19tYW5pZmVzdC5nZXRfdGVzdCh0ZXN0
X2lkKS5nZXQoIm1pbi1hc3NlcnRzIikgPT0gIjIiCiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogZGVmIHRlc3RfdXBkYXRlX2Fzc2VydGlvbl9jb3VudF8x
KCk6Ci0gICAgdGVzdF9pZCA9ICIvcGF0aC90by90ZXN0Lmh0bSIKICAgICB0ZXN0cyA9IFsoInBh
dGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0aGFybmVzcyIsICIiIlt0ZXN0Lmh0bV0K
ICAgbWF4LWFzc2VydHM6IDQKICAgbWluLWFzc2VydHM6IDIKQEAgLTQwNywxMiArMTQwMiwxMyBA
QCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzEoKToKICAgICBuZXdfbWFuaWZlc3Qg
PSB1cGRhdGVkWzBdWzFdCiAKICAgICBhc3NlcnQgbm90IG5ld19tYW5pZmVzdC5pc19lbXB0eQot
ICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KCJtYXgtYXNzZXJ0
cyIpID09IDQKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdldCgi
bWF4LWFzc2VydHMiKSA9PSAiNCIKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRl
c3RfaWQpLmhhc19rZXkoIm1pbi1hc3NlcnRzIikgaXMgRmFsc2UKIAogCitAcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0i
bWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9u
X2NvdW50XzIoKToKLSAgICB0ZXN0X2lkID0gIi9wYXRoL3RvL3Rlc3QuaHRtIgogICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rl
c3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAogICBtaW4tYXNzZXJ0czogMgpAQCAtNDMwLDggKzE0
MjYsOSBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzIoKToKICAgICBhc3NlcnQg
bm90IHVwZGF0ZWQKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMi
LAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5
MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzMoKToKLSAgICB0ZXN0X2lkID0g
Ii9wYXRoL3RvL3Rlc3QuaHRtIgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXQogICBtYXgtYXNzZXJ0czogNAog
ICBtaW4tYXNzZXJ0czogMgpAQCAtNDU5LDEyICsxNDU2LDEzIEBAIGRlZiB0ZXN0X3VwZGF0ZV9h
c3NlcnRpb25fY291bnRfMygpOgogICAgIG5ld19tYW5pZmVzdCA9IHVwZGF0ZWRbMF1bMV0KIAog
ICAgIGFzc2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5Ci0gICAgYXNzZXJ0IG5ld19tYW5p
ZmVzdC5nZXRfdGVzdCh0ZXN0X2lkKS5nZXQoIm1heC1hc3NlcnRzIikgPT0gOAotICAgIGFzc2Vy
dCBuZXdfbWFuaWZlc3QuZ2V0X3Rlc3QodGVzdF9pZCkuZ2V0KCJtaW4tYXNzZXJ0cyIpID09IDIK
KyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdldCgibWF4LWFzc2Vy
dHMiKSA9PSAiOCIKKyAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmdl
dCgibWluLWFzc2VydHMiKSA9PSAiMiIKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24n
dCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQoKToKLSAg
ICB0ZXN0X2lkID0gIi9wYXRoL3RvL3Rlc3QuaHRtIgogICAgIHRlc3RzID0gWygicGF0aC90by90
ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIiW3Rlc3QuaHRtXSIiIildCiAK
ICAgICBsb2dfMCA9IHN1aXRlX2xvZyhbKCJ0ZXN0X3N0YXJ0IiwgeyJ0ZXN0IjogdGVzdF9pZH0p
LApAQCAtNDkzLDkgKzE0OTEsOSBAQCBkZWYgdGVzdF91cGRhdGVfYXNzZXJ0aW9uX2NvdW50XzQo
KToKICAgICBhc3NlcnQgbmV3X21hbmlmZXN0LmdldF90ZXN0KHRlc3RfaWQpLmhhc19rZXkoIm1p
bi1hc3NlcnRzIikgaXMgRmFsc2UKIAogCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25b
MF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBz
dXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVfbHNhbl8wKCk6Ci0gICAgdGVzdF9pZCA9ICIv
cGF0aC90by90ZXN0Lmh0bSIKLSAgICBkaXJfaWQgPSAicGF0aC90by9fX2Rpcl9fIgogICAgIHRl
c3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIp
LAogICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0K
IApAQCAtNTEwLDkgKzE1MDgsOSBAQCBkZWYgdGVzdF91cGRhdGVfbHNhbl8wKCk6CiAgICAgYXNz
ZXJ0IG5ld19tYW5pZmVzdC5nZXQoImxzYW4tYWxsb3dlZCIpID09IFsiZm9vIl0KIAogCitAcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCiBkZWYgdGVzdF91cGRhdGVf
bHNhbl8xKCk6Ci0gICAgdGVzdF9pZCA9ICIvcGF0aC90by90ZXN0Lmh0bSIKLSAgICBkaXJfaWQg
PSAicGF0aC90by9fX2Rpcl9fIgogICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0
ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIpLAogICAgICAgICAgICAgICgicGF0aC90by9fX2Rp
cl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiIgogbHNhbi1hbGxvd2VkOiBbZm9vXSIiIildCkBAIC01
MzAsOSArMTUyOCw5IEBAIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpXQogICAgIGFzc2VydCBuZXdf
bWFuaWZlc3QuZ2V0KCJsc2FuLWFsbG93ZWQiKSA9PSBbImJheiIsICJmb28iXQogCiAKK0BweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAg
cmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9s
c2FuXzIoKToKLSAgICB0ZXN0X2lkID0gIi9wYXRoL3RvL3Rlc3QuaHRtIgotICAgIGRpcl9pZCA9
ICJwYXRoL3RvL19fZGlyX18iCiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rl
c3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCiAgICAgICAgICAgICAgKCJwYXRoL19fZGlyX18i
LCBbInBhdGgvX19kaXJfXyJdLCBOb25lLCAiIiIKIGxzYW4tYWxsb3dlZDogW2Zvb10iIiIpLApA
QCAtNTUyLDkgKzE1NTAsOSBAQCBsc2FuLWFsbG93ZWQ6IFtmb29dIiIiKSwKICAgICBhc3NlcnQg
bmV3X21hbmlmZXN0LmdldCgibHNhbi1hbGxvd2VkIikgPT0gWyJiYXoiXQogCiAKK0BweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVh
c29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV9sc2Fu
XzMoKToKLSAgICB0ZXN0X2lkID0gIi9wYXRoL3RvL3Rlc3QuaHRtIgotICAgIGRpcl9pZCA9ICJw
YXRoL3RvL19fZGlyX18iCiAgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3Rf
aWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCiAgICAgICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18i
LCBbZGlyX2lkXSwgTm9uZSwgIiIpXQogCkBAIC01NzQsMTMgKzE1NzIsMTUgQEAgZGVmIHRlc3Rf
dXBkYXRlX2xzYW5fMygpOgogICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJsc2FuLWFsbG93
ZWQiKSA9PSBbImJheiIsICJmb28iXQogCiAKK0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lv
blswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0
IHN1cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMCgpOgotICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFsiL3BhdGgvdG8vdGVzdC5odG0iXSwgInRlc3RoYXJu
ZXNzIiwKKyAgICB0ZXN0cyA9IFsoInBhdGgvdG8vdGVzdC5odG0iLCBbdGVzdF9pZF0sICJ0ZXN0
aGFybmVzcyIsCiAgICAgICAgICAgICAgICIiIlt0ZXN0Lmh0bV0KICAgW3Rlc3QxXQogICAgIGV4
cGVjdGVkOiBGQUlMIiIiKV0KIAotICAgIGxvZyA9IHsicnVuX2luZm8iOiB7fSwKKyAgICBsb2cg
PSB7InJ1bl9pbmZvIjogZGVmYXVsdF9ydW5faW5mby5jb3B5KCksCiAgICAgICAgICAgICJyZXN1
bHRzIjogWwogICAgICAgICAgICAgICAgeyJ0ZXN0IjogIi9wYXRoL3RvL3Rlc3QuaHRtIiwKICAg
ICAgICAgICAgICAgICAic3VidGVzdHMiOiBbeyJuYW1lIjogInRlc3QxIiwKQEAgLTU5NCwxMCAr
MTU5NCwxMyBAQCBkZWYgdGVzdF91cGRhdGVfd3B0cmVwb3J0XzAoKToKICAgICBhc3NlcnQgdXBk
YXRlZFswXVsxXS5pc19lbXB0eQogCiAKK0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblsw
XSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVhc29uPSJtZXRhZGF0YSBkb2Vzbid0IHN1
cHBvcnQgcHkzIikKIGRlZiB0ZXN0X3VwZGF0ZV93cHRyZXBvcnRfMSgpOgotICAgIHRlc3RzID0g
WygicGF0aC90by9fX2Rpcl9fIiwgWyJwYXRoL3RvL19fZGlyX18iXSwgTm9uZSwgIiIpXQorICAg
IHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwg
IiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIi
KV0KIAotICAgIGxvZyA9IHsicnVuX2luZm8iOiB7fSwKKyAgICBsb2cgPSB7InJ1bl9pbmZvIjog
ZGVmYXVsdF9ydW5faW5mby5jb3B5KCksCiAgICAgICAgICAgICJyZXN1bHRzIjogW10sCiAgICAg
ICAgICAgICJsc2FuX2xlYWtzIjogW3sic2NvcGUiOiAicGF0aC90by8iLAogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgImZyYW1lcyI6IFsiYmF6IiwgImZvb2JhciJdfV19CkBAIC02MDYsMyAr
MTYwOSwxMzEgQEAgZGVmIHRlc3RfdXBkYXRlX3dwdHJlcG9ydF8xKCk6CiAKICAgICBhc3NlcnQg
bGVuKHVwZGF0ZWQpID09IDEKICAgICBhc3NlcnQgdXBkYXRlZFswXVsxXS5nZXQoImxzYW4tYWxs
b3dlZCIpID09IFsiYmF6Il0KKworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0g
PT0gIjMiLAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBw
b3J0IHB5MyIpCitkZWYgdGVzdF91cGRhdGVfbGVha190b3RhbF8wKCk6CisgICAgdGVzdHMgPSBb
KCJwYXRoL3RvL3Rlc3QuaHRtIiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCisgICAg
ICAgICAgICAgKCJwYXRoL3RvL19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIpXQorCisgICAg
bG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8i
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb2Nlc3MiOiAi
ZGVmYXVsdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0
ZXMiOiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhy
ZXNob2xkIjogMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJv
YmplY3RzIjogW119KV0pCisKKyAgICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2dfMCkKKyAg
ICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisKKyAgICBhc3NlcnQgbm90IG5ld19tYW5p
ZmVzdC5pc19lbXB0eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJsZWFrLXRocmVzaG9s
ZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRhIGRvZXNu
J3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMSgpOgorICAgIHRl
c3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIp
LAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUsICIiKV0K
KworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1vemxlYWtfdG90YWwiLCB7InNjb3BlIjogInBh
dGgvdG8vIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwcm9j
ZXNzIjogImRlZmF1bHQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgImJ5dGVzIjogMTAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgInRocmVzaG9sZCI6IDEwMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAib2JqZWN0cyI6IFtdfSldKQorCisgICAgdXBkYXRlZCA9IHVwZGF0ZSh0ZXN0cywg
bG9nXzApCisgICAgYXNzZXJ0IG5vdCB1cGRhdGVkCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfMigpOgor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUs
ICIiIgorbGVhay10b3RhbDogMTEwIiIiKV0KKworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsoIm1v
emxlYWtfdG90YWwiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJwcm9jZXNzIjogImRlZmF1bHQiLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIjogMTAwLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRocmVzaG9sZCI6IDExMCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvYmplY3RzIjogW119KV0pCisKKyAg
ICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2dfMCkKKyAgICBhc3NlcnQgbm90IHVwZGF0ZWQK
KworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0ibWV0YWRhdGEgZG9lc24ndCBzdXBwb3J0IHB5MyIpCitkZWYgdGVz
dF91cGRhdGVfbGVha190b3RhbF8zKCk6CisgICAgdGVzdHMgPSBbKCJwYXRoL3RvL3Rlc3QuaHRt
IiwgW3Rlc3RfaWRdLCAidGVzdGhhcm5lc3MiLCAiIiksCisgICAgICAgICAgICAgKCJwYXRoL3Rv
L19fZGlyX18iLCBbZGlyX2lkXSwgTm9uZSwgIiIiCitsZWFrLXRvdGFsOiAxMDAiIiIpXQorCisg
ICAgbG9nXzAgPSBzdWl0ZV9sb2coWygibW96bGVha190b3RhbCIsIHsic2NvcGUiOiAicGF0aC90
by8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb2Nlc3Mi
OiAiZGVmYXVsdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
Ynl0ZXMiOiAxMDAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
InRocmVzaG9sZCI6IDEwMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICJvYmplY3RzIjogW119KV0pCisKKyAgICB1cGRhdGVkID0gdXBkYXRlKHRlc3RzLCBsb2df
MCkKKyAgICBuZXdfbWFuaWZlc3QgPSB1cGRhdGVkWzBdWzFdCisKKyAgICBhc3NlcnQgbm90IG5l
d19tYW5pZmVzdC5pc19lbXB0eQorICAgIGFzc2VydCBuZXdfbWFuaWZlc3QuZ2V0KCJsZWFrLXRo
cmVzaG9sZCIpID09IFsnZGVmYXVsdDo1MTIwMCddCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249Im1ldGFkYXRh
IGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQorZGVmIHRlc3RfdXBkYXRlX2xlYWtfdG90YWxfNCgpOgor
ICAgIHRlc3RzID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNz
IiwgIiIpLAorICAgICAgICAgICAgICgicGF0aC90by9fX2Rpcl9fIiwgW2Rpcl9pZF0sIE5vbmUs
ICIiIgorbGVhay10b3RhbDogMTEwIiIiKV0KKworICAgIGxvZ18wID0gc3VpdGVfbG9nKFsKKyAg
ICAgICAgKCJsc2FuX2xlYWsiLCB7InNjb3BlIjogInBhdGgvdG8vIiwKKyAgICAgICAgICAgICAg
ICAgICAgICAgImZyYW1lcyI6IFsiZm9vIiwgImJhciJdfSksCisgICAgICAgICgibW96bGVha190
b3RhbCIsIHsic2NvcGUiOiAicGF0aC90by8iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
InByb2Nlc3MiOiAiZGVmYXVsdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMi
OiAxMDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAidGhyZXNob2xkIjogMTEwLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdHMiOiBbXX0pXSkKKworICAgIHVwZGF0ZWQg
PSB1cGRhdGUodGVzdHMsIGxvZ18wKQorICAgIG5ld19tYW5pZmVzdCA9IHVwZGF0ZWRbMF1bMV0K
KworICAgIGFzc2VydCBub3QgbmV3X21hbmlmZXN0LmlzX2VtcHR5CisgICAgYXNzZXJ0IG5ld19t
YW5pZmVzdC5oYXNfa2V5KCJsZWFrLXRocmVzaG9sZCIpIGlzIEZhbHNlCisKKworY2xhc3MgVGVz
dFN0ZXAoU3RlcCk6CisgICAgZGVmIGNyZWF0ZShzZWxmLCBzdGF0ZSk6CisgICAgICAgIHRlc3Rz
ID0gWygicGF0aC90by90ZXN0Lmh0bSIsIFt0ZXN0X2lkXSwgInRlc3RoYXJuZXNzIiwgIiIpXQor
ICAgICAgICBzdGF0ZS5mb28gPSBjcmVhdGVfdGVzdF9tYW5pZmVzdCh0ZXN0cykKKworCitjbGFz
cyBVcGRhdGVSdW5uZXIoU3RlcFJ1bm5lcik6CisgICAgc3RlcHMgPSBbVGVzdFN0ZXBdCisKKwor
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAg
ICAgICByZWFzb249InVwZGF0ZS5zdGF0ZSBkb2Vzbid0IHN1cHBvcnQgcHkzIikKK2RlZiB0ZXN0
X3VwZGF0ZV9waWNrbGUoKToKKyAgICBsb2dnZXIgPSBzdHJ1Y3R1cmVkbG9nLlN0cnVjdHVyZWRM
b2dnZXIoImV4cGVjdGVkX3Rlc3QiKQorICAgIGFyZ3MgPSB7CisgICAgICAgICJ0ZXN0X3BhdGhz
IjogeworICAgICAgICAgICAgIi8iOiB7InRlc3RzX3BhdGgiOiBvcy5wYXRoLmFic3BhdGgob3Mu
cGF0aC5qb2luKGhlcmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3MucGFyZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhcmRpciwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5w
YXJkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgb3MucGFyZGlyKSl9LAorICAgICAgICB9LAorICAgICAgICAiYWJvcnQiOiBG
YWxzZSwKKyAgICAgICAgImNvbnRpbnVlIjogRmFsc2UsCisgICAgICAgICJzeW5jIjogRmFsc2Us
CisgICAgfQorICAgIGFyZ3MyID0gYXJncy5jb3B5KCkKKyAgICBhcmdzMlsiYWJvcnQiXSA9IFRy
dWUKKyAgICB3cHR1cGRhdGUgPSBXUFRVcGRhdGUobG9nZ2VyLCAqKmFyZ3MyKQorICAgIHdwdHVw
ZGF0ZSA9IFdQVFVwZGF0ZShsb2dnZXIsIHJ1bm5lcl9jbHM9VXBkYXRlUnVubmVyLCAqKmFyZ3Mp
CisgICAgd3B0dXBkYXRlLnJ1bigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVz
dF93cHR0ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3Rlc3Rfd3B0dGVzdC5weQppbmRleCA1
MjgwZTQ2YTZiMjQzMzI2ZTIzMDNiYjU1NGFkYTRhNzI2YmQ3MjAzLi42OWYyMmViY2I2OGI2MmI2
YzU0Zjc4NzRmNTUxNDZiNDZmOTRkODM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMv
dGVzdF93cHR0ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3dwdHRlc3QucHkK
QEAgLTEsMTEgKzEsMTEgQEAKLWltcG9ydCBvcworaW1wb3J0IHB5dGVzdAogaW1wb3J0IHN5cwog
ZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworZnJvbSBtb2NrIGltcG9ydCBNb2NrCiAKLXN5cy5wYXRo
Lmluc2VydCgwLCBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIi4uIiwg
Ii4uIikpCi0KLWZyb20gd3B0cnVubmVyIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkLCB3cHR0ZXN0
Ci1mcm9tIC50ZXN0X2NodW5rZXIgaW1wb3J0IG1ha2VfbW9ja19tYW5pZmVzdAorZnJvbSBtYW5p
ZmVzdCBpbXBvcnQgbWFuaWZlc3QgYXMgd3B0bWFuaWZlc3QKK2Zyb20gbWFuaWZlc3QuaXRlbSBp
bXBvcnQgVGVzdGhhcm5lc3NUZXN0Citmcm9tIC4uIGltcG9ydCBtYW5pZmVzdGV4cGVjdGVkLCB3
cHR0ZXN0CiAKIGRpcl9pbmlfMCA9ICIiIlwKIHByZWZzOiBbYTpiXQpAQCAtMTgsNiArMTgsMTAg
QEAgbWluLWFzc2VydHM6IDEKIHRhZ3M6IFtiLCBjXQogIiIiCiAKK2Rpcl9pbmlfMiA9ICIiIlwK
K2xzYW4tbWF4LXN0YWNrLWRlcHRoOiA0MgorIiIiCisKIHRlc3RfMCA9ICIiIlwKIFswLmh0bWxd
CiAgIHByZWZzOiBbYzpkXQpAQCAtMzMsNDIgKzM3LDIwNSBAQCB0ZXN0XzEgPSAiIiJcCiAgICAg
aWYgb3MgPT0gJ3dpbic6IEZBSUwKICIiIgogCit0ZXN0XzIgPSAiIiJcCitbMi5odG1sXQorICBs
c2FuLW1heC1zdGFjay1kZXB0aDogNDIKKyIiIgorCit0ZXN0XzMgPSAiIiJcCitbMy5odG1sXQor
ICBbc3VidGVzdDFdCisgICAgZXhwZWN0ZWQ6IFtQQVNTLCBGQUlMXQogCi1kZWYgdGVzdF9tZXRh
ZGF0YV9pbmhlcml0KCk6Ci0gICAgdGVzdHMgPSBtYWtlX21vY2tfbWFuaWZlc3QoKCJ0ZXN0Iiwg
ImEiLCAxMCksICgidGVzdCIsICJhL2IiLCAxMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgKCJ0ZXN0IiwgImMiLCAxMCkpCisgIFtzdWJ0ZXN0Ml0KKyAgICBkaXNhYmxlZDogcmVh
c29uCisKKyAgW3N1YnRlc3QzXQorICAgIGV4cGVjdGVkOiBGQUlMCisiIiIKKwordGVzdF80ID0g
IiIiXAorWzQuaHRtbF0KKyAgZXhwZWN0ZWQ6IEZBSUwKKyIiIgorCit0ZXN0XzUgPSAiIiJcCitb
NS5odG1sXQorIiIiCisKK3Rlc3RfNiA9ICIiIlwKK1s2Lmh0bWxdCisgIGV4cGVjdGVkOiBbT0ss
IEZBSUxdCisiIiIKKwordGVzdF83ID0gIiIiXAorWzcuaHRtbF0KKyAgYmxpbmtfZXhwZWN0X2Fu
eV9zdWJ0ZXN0X3N0YXR1czogeWVwCisiIiIKIAordGVzdF9mdXp6eSA9ICIiIlwKK1tmdXp6eS5o
dG1sXQorICBmdXp6eTogZnV6enktcmVmLmh0bWw6MTsyMDAKKyIiIgorCisKK3Rlc3RoYXJuZXNz
X3Rlc3QgPSAiIiI8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+IiIiCisKKworZGVmIG1ha2VfbW9ja19tYW5pZmVzdCgqaXRlbXMpOgorICAgIHJ2ID0gTW9j
ayh0ZXN0c19yb290PSIvZm9vYmFyIikKKyAgICB0ZXN0cyA9IFtdCisgICAgcnYuX19pdGVyX18g
PSBsYW1iZGEgc2VsZjogaXRlcih0ZXN0cykKKyAgICBydi5fX2dldGl0ZW1fXyA9IGxhbWJkYSBz
ZWxmLCBrOiB0ZXN0c1trXQorICAgIGZvciB0ZXN0X3R5cGUsIGRpcl9wYXRoLCBudW1fdGVzdHMg
aW4gaXRlbXM6CisgICAgICAgIGZvciBpIGluIHJhbmdlKG51bV90ZXN0cyk6CisgICAgICAgICAg
ICBmaWxlbmFtZSA9IGRpcl9wYXRoICsgIi8laS5odG1sIiAlIGkKKyAgICAgICAgICAgIHRlc3Rz
LmFwcGVuZCgodGVzdF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAge1Rlc3RoYXJuZXNzVGVzdCgiL2Zvby5iYXIiLCBm
aWxlbmFtZSwgIi8iLCBmaWxlbmFtZSl9KSkKKyAgICByZXR1cm4gcnYKKworZGVmIG1ha2VfdGVz
dF9vYmplY3QodGVzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXRoLAorICAg
ICAgICAgICAgICAgICAgICAgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICBpdGVtcywKKyAg
ICAgICAgICAgICAgICAgICAgIGluaGVyaXRfbWV0YWRhdGE9Tm9uZSwKKyAgICAgICAgICAgICAg
ICAgICAgIGl0ZXJhdGU9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb249Tm9u
ZSk6CisgICAgaW5oZXJpdF9tZXRhZGF0YSA9IGluaGVyaXRfbWV0YWRhdGEgaWYgaW5oZXJpdF9t
ZXRhZGF0YSBpcyBub3QgTm9uZSBlbHNlIFtdCisgICAgY29uZGl0aW9uID0gY29uZGl0aW9uIGlm
IGNvbmRpdGlvbiBpcyBub3QgTm9uZSBlbHNlIHt9CisgICAgdGVzdHMgPSBtYWtlX21vY2tfbWFu
aWZlc3QoKml0ZW1zKSBpZiBpc2luc3RhbmNlKGl0ZW1zLCBsaXN0KSBlbHNlIG1ha2VfbW9ja19t
YW5pZmVzdChpdGVtcykKKworICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0
YXRpYy5jb21waWxlKEJ5dGVzSU8odGVzdF9uYW1lKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kaXRpb24sCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPW1hbmlm
ZXN0ZXhwZWN0ZWQuZGF0YV9jbHNfZ2V0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcGF0aD10ZXN0X3BhdGgsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsX2Jhc2U9Ii8iKQor
CisgICAgdGVzdCA9IG5leHQoaXRlcih0ZXN0c1tpbmRleF1bMl0pKSBpZiBpdGVyYXRlIGVsc2Ug
dGVzdHNbaW5kZXhdWzJdLnBvcCgpCisgICAgcmV0dXJuIHdwdHRlc3QuZnJvbV9tYW5pZmVzdCh0
ZXN0cywgdGVzdCwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YS5nZXRfdGVzdCh0ZXN0
LmlkKSkKKworCitAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAg
ICAgICAgICAgICAgICAgIHJlYXNvbj0iYnl0ZXMvdGV4dCBjb25mdXNpb24gaW4gcHkzIikKK2Rl
ZiB0ZXN0X21ldGFkYXRhX2luaGVyaXQoKToKKyAgICBpdGVtcyA9IFsoInRlc3QiLCAiYSIsIDEw
KSwgKCJ0ZXN0IiwgImEvYiIsIDEwKSwgKCJ0ZXN0IiwgImMiLCAxMCldCiAgICAgaW5oZXJpdF9t
ZXRhZGF0YSA9IFsKICAgICAgICAgbWFuaWZlc3RleHBlY3RlZC5zdGF0aWMuY29tcGlsZSgKICAg
ICAgICAgICAgIEJ5dGVzSU8oaXRlbSksCiAgICAgICAgICAgICB7fSwKICAgICAgICAgICAgIGRh
dGFfY2xzX2dldHRlcj1sYW1iZGEgeCx5OiBtYW5pZmVzdGV4cGVjdGVkLkRpcmVjdG9yeU1hbmlm
ZXN0KQogICAgICAgICBmb3IgaXRlbSBpbiBbZGlyX2luaV8wLCBkaXJfaW5pXzFdXQotICAgIHRl
c3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0YXRpYy5jb21waWxlKEJ5dGVzSU8odGVz
dF8wKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB7fSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBkYXRhX2Nsc19nZXR0ZXI9bWFuaWZlc3RleHBlY3RlZC5kYXRhX2Nsc19nZXR0ZXIsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9wYXRo
PSJhIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICB1cmxfYmFzZT0iIikKIAotICAgIHRlc3QgPSB0ZXN0c1swXVsyXS5wb3AoKQotICAgIHRlc3Rf
b2JqID0gd3B0dGVzdC5mcm9tX21hbmlmZXN0KHRlc3QsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3Rf
bWV0YWRhdGEuZ2V0X3Rlc3QodGVzdC5pZCkpCisgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2Jq
ZWN0KHRlc3RfMCwgImEvMC5odG1sIiwgMCwgaXRlbXMsIGluaGVyaXRfbWV0YWRhdGEsIFRydWUp
CisKICAgICBhc3NlcnQgdGVzdF9vYmoubWF4X2Fzc2VydGlvbl9jb3VudCA9PSAzCiAgICAgYXNz
ZXJ0IHRlc3Rfb2JqLm1pbl9hc3NlcnRpb25fY291bnQgPT0gMQogICAgIGFzc2VydCB0ZXN0X29i
ai5wcmVmcyA9PSB7ImIiOiAiYyIsICJjIjogImQifQogICAgIGFzc2VydCB0ZXN0X29iai50YWdz
ID09IHsiYSIsICJkaXI6YSJ9CiAKIAorQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBd
ID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9u
IGluIHB5MyIpCiBkZWYgdGVzdF9jb25kaXRpb25hbCgpOgotICAgIHRlc3RzID0gbWFrZV9tb2Nr
X21hbmlmZXN0KCgidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwgMTApLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICgidGVzdCIsICJjIiwgMTApKQorICAgIGl0ZW1zID0g
WygidGVzdCIsICJhIiwgMTApLCAoInRlc3QiLCAiYS9iIiwgMTApLCAoInRlc3QiLCAiYyIsIDEw
KV0KIAotICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVkLnN0YXRpYy5jb21waWxl
KEJ5dGVzSU8odGVzdF8xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB7Im9zIjogIndpbiJ9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFfY2xzX2dldHRlcj1tYW5pZmVzdGV4cGVjdGVk
LmRhdGFfY2xzX2dldHRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3BhdGg9ImEiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHVybF9iYXNlPSIiKQorICAgIHRlc3Rfb2JqID0gbWFr
ZV90ZXN0X29iamVjdCh0ZXN0XzEsICJhLzEuaHRtbCIsIDEsIGl0ZW1zLCBOb25lLCBUcnVlLCB7
Im9zIjogIndpbiJ9KQogCi0gICAgdGVzdCA9IHRlc3RzWzFdWzJdLnBvcCgpCi0gICAgdGVzdF9v
YmogPSB3cHR0ZXN0LmZyb21fbWFuaWZlc3QodGVzdCwgW10sIHRlc3RfbWV0YWRhdGEuZ2V0X3Rl
c3QodGVzdC5pZCkpCiAgICAgYXNzZXJ0IHRlc3Rfb2JqLnByZWZzID09IHsiYSI6ICJiIiwgImMi
OiAiZCJ9CiAgICAgYXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIkZBSUwiCisKKworQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAg
ICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5MyIpCitkZWYgdGVzdF9tZXRhZGF0
YV9sc2FuX3N0YWNrX2RlcHRoKCk6CisgICAgaXRlbXMgPSBbKCJ0ZXN0IiwgImEiLCAxMCksICgi
dGVzdCIsICJhL2IiLCAxMCldCisKKyAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVz
dF8yLCAiYS8yLmh0bWwiLCAyLCBpdGVtcywgTm9uZSwgVHJ1ZSkKKworICAgIGFzc2VydCB0ZXN0
X29iai5sc2FuX21heF9zdGFja19kZXB0aCA9PSA0MgorCisgICAgdGVzdF9vYmogPSBtYWtlX3Rl
c3Rfb2JqZWN0KHRlc3RfMiwgImEvMi5odG1sIiwgMSwgaXRlbXMsIE5vbmUsIFRydWUpCisKKyAg
ICBhc3NlcnQgdGVzdF9vYmoubHNhbl9tYXhfc3RhY2tfZGVwdGggaXMgTm9uZQorCisgICAgaW5o
ZXJpdF9tZXRhZGF0YSA9IFsKKyAgICAgICAgbWFuaWZlc3RleHBlY3RlZC5zdGF0aWMuY29tcGls
ZSgKKyAgICAgICAgICAgIEJ5dGVzSU8oZGlyX2luaV8yKSwKKyAgICAgICAgICAgIHt9LAorICAg
ICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPWxhbWJkYSB4LHk6IG1hbmlmZXN0ZXhwZWN0ZWQuRGly
ZWN0b3J5TWFuaWZlc3QpCisgICAgXQorCisgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0
KHRlc3RfMCwgImEvMC9odG1sIiwgMCwgaXRlbXMsIGluaGVyaXRfbWV0YWRhdGEsIEZhbHNlKQor
CisgICAgYXNzZXJ0IHRlc3Rfb2JqLmxzYW5fbWF4X3N0YWNrX2RlcHRoID09IDQyCisKKworQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAg
ICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5MyIpCitkZWYgdGVzdF9zdWJ0ZXN0
cygpOgorICAgIHRlc3Rfb2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0XzMsICJhLzMuaHRtbCIs
IDMsICgidGVzdCIsICJhIiwgNCksIE5vbmUsIEZhbHNlKQorICAgIGFzc2VydCB0ZXN0X29iai5l
eHBlY3RlZCgic3VidGVzdDEiKSA9PSAiUEFTUyIKKyAgICBhc3NlcnQgdGVzdF9vYmoua25vd25f
aW50ZXJtaXR0ZW50KCJzdWJ0ZXN0MSIpID09IFsiRkFJTCJdCisgICAgYXNzZXJ0IHRlc3Rfb2Jq
LmV4cGVjdGVkKCJzdWJ0ZXN0MiIpID09ICJQQVNTIgorICAgIGFzc2VydCB0ZXN0X29iai5rbm93
bl9pbnRlcm1pdHRlbnQoInN1YnRlc3QyIikgPT0gW10KKyAgICBhc3NlcnQgdGVzdF9vYmouZXhw
ZWN0ZWQoInN1YnRlc3QzIikgPT0gIkZBSUwiCisgICAgYXNzZXJ0IHRlc3Rfb2JqLmtub3duX2lu
dGVybWl0dGVudCgic3VidGVzdDMiKSA9PSBbXQorCisKK0BweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRlcy90ZXh0
IGNvbmZ1c2lvbiBpbiBweTMiKQorZGVmIHRlc3RfZXhwZWN0ZWRfZmFpbCgpOgorICAgIHRlc3Rf
b2JqID0gbWFrZV90ZXN0X29iamVjdCh0ZXN0XzQsICJhLzQuaHRtbCIsIDQsICgidGVzdCIsICJh
IiwgNSksIE5vbmUsIEZhbHNlKQorICAgIGFzc2VydCB0ZXN0X29iai5leHBlY3RlZCgpID09ICJG
QUlMIgorICAgIGFzc2VydCB0ZXN0X29iai5rbm93bl9pbnRlcm1pdHRlbnQoKSA9PSBbXQorCisK
K0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAg
ICAgICAgcmVhc29uPSJieXRlcy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQorZGVmIHRlc3Rfbm9f
ZXhwZWN0ZWQoKToKKyAgICB0ZXN0X29iaiA9IG1ha2VfdGVzdF9vYmplY3QodGVzdF81LCAiYS81
Lmh0bWwiLCA1LCAoInRlc3QiLCAiYSIsIDYpLCBOb25lLCBGYWxzZSkKKyAgICBhc3NlcnQgdGVz
dF9vYmouZXhwZWN0ZWQoKSA9PSAiT0siCisgICAgYXNzZXJ0IHRlc3Rfb2JqLmtub3duX2ludGVy
bWl0dGVudCgpID09IFtdCisKKworQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09
ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGlu
IHB5MyIpCitkZWYgdGVzdF9rbm93bl9pbnRlcm1pdHRlbnQoKToKKyAgICB0ZXN0X29iaiA9IG1h
a2VfdGVzdF9vYmplY3QodGVzdF82LCAiYS82Lmh0bWwiLCA2LCAoInRlc3QiLCAiYSIsIDcpLCBO
b25lLCBGYWxzZSkKKyAgICBhc3NlcnQgdGVzdF9vYmouZXhwZWN0ZWQoKSA9PSAiT0siCisgICAg
YXNzZXJ0IHRlc3Rfb2JqLmtub3duX2ludGVybWl0dGVudCgpID09IFsiRkFJTCJdCisKKworQHB5
dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAg
ICByZWFzb249ImJ5dGVzL3RleHQgY29uZnVzaW9uIGluIHB5MyIpCitkZWYgdGVzdF9leHBlY3Rf
YW55X3N1YnRlc3Rfc3RhdHVzKCk6CisgICAgdGVzdF9vYmogPSBtYWtlX3Rlc3Rfb2JqZWN0KHRl
c3RfNywgImEvNy5odG1sIiwgNywgKCJ0ZXN0IiwgImEiLCA4KSwgTm9uZSwgRmFsc2UpCisgICAg
YXNzZXJ0IHRlc3Rfb2JqLmV4cGVjdGVkKCkgPT0gIk9LIgorICAgIGFzc2VydCB0ZXN0X29iai5l
eHBlY3RfYW55X3N1YnRlc3Rfc3RhdHVzKCkgaXMgVHJ1ZQorCisKK0BweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAgICAgICAgICAgICAgICAgcmVhc29uPSJieXRl
cy90ZXh0IGNvbmZ1c2lvbiBpbiBweTMiKQorZGVmIHRlc3RfbWV0YWRhdGFfZnV6enkoKToKKyAg
ICBtYW5pZmVzdF9kYXRhID0geworICAgICAgICAiaXRlbXMiOiB7InJlZnRlc3QiOiB7ImEvZnV6
enkuaHRtbCI6IFtbImEvZnV6enkuaHRtbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBbWyIvYS9mdXp6eS1yZWYuaHRtbCIsICI9PSJdXSwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsiZnV6enkiOiBbW1si
L2EvZnV6enkuaHRtbCIsICcvYS9mdXp6eS1yZWYuaHRtbCcsICc9PSddLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW1syLCAzXSwg
WzEwLCAxNV1dXV19XV19fSwKKyAgICAgICAgInBhdGhzIjogeyJhL2Z1enp5Lmh0bWwiOiBbIjAi
KjQwLCAicmVmdGVzdCJdfSwKKyAgICAgICAgInZlcnNpb24iOiA2LAorICAgICAgICAidXJsX2Jh
c2UiOiAiLyJ9CisgICAgbWFuaWZlc3QgPSB3cHRtYW5pZmVzdC5NYW5pZmVzdC5mcm9tX2pzb24o
Ii4iLCBtYW5pZmVzdF9kYXRhKQorICAgIHRlc3RfbWV0YWRhdGEgPSBtYW5pZmVzdGV4cGVjdGVk
LnN0YXRpYy5jb21waWxlKEJ5dGVzSU8odGVzdF9mdXp6eSksCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge30sCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9jbHNfZ2V0dGVyPW1hbmlmZXN0
ZXhwZWN0ZWQuZGF0YV9jbHNfZ2V0dGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHRlc3RfcGF0aD0iYS9mdXp6eS5odG1sIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cmxfYmFzZT0iLyIp
CisKKyAgICB0ZXN0ID0gbWFuaWZlc3QuaXRlcnBhdGgoImEvZnV6enkuaHRtbCIpLm5leHQoKQor
ICAgIHRlc3Rfb2JqID0gd3B0dGVzdC5mcm9tX21hbmlmZXN0KG1hbmlmZXN0LCB0ZXN0LCBbXSwg
dGVzdF9tZXRhZGF0YS5nZXRfdGVzdCh0ZXN0LmlkKSkKKworICAgIGFzc2VydCB0ZXN0X29iai5m
dXp6eSA9PSB7KCcvYS9mdXp6eS5odG1sJywgJy9hL2Z1enp5LXJlZi5odG1sJywgJz09Jyk6IFtb
MiwgM10sIFsxMCwgMTVdXX0KKyAgICBhc3NlcnQgdGVzdF9vYmouZnV6enlfb3ZlcnJpZGUgPT0g
eycvYS9mdXp6eS1yZWYuaHRtbCc6ICgoMSwgMSksICgyMDAsIDIwMCkpfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RzL3cz
Yy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTI3NzhhYWJmYjMz
YzU4NWU3N2RhZDFlNzFmNDAxNDllNzQ0YWIzLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy93M2MtaW1wb3J0LmxvZworKysg
L2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVjdG9yeSB3
ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlmeSB0aGVz
ZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxsIHJlcXVl
c3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10
ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10ZXN0cyBp
biBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhpcyBmaWxl
LgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhl
czoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9u
ZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9f
X2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rl
c3RzL3Rlc3RfY2h1bmtlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X2Zvcm1hdHRlcnMu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF9wcm9kdWN0cy5weQotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90
ZXN0cy90ZXN0X3N0YWJpbGl0eS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci90ZXN0cy90ZXN0X3Rlc3Rsb2Fk
ZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHMvdGVzdF91cGRhdGUucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIv
dGVzdHMvdGVzdF93cHR0ZXN0LnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19f
aW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9fX2luaXRfXy5weQppbmRleCA5ZmYzZTY5
Zjk0ZWZiZjNlODAzYThhNjVjNDZkMDljMDI2OWNhMDYzLi4yNjI2MTgzZmM4MGRiYzc1ZDNkMjg1
ZGU3OWE3ZDM4NmY1M2NlNmUzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5p
dF9fLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvX19pbml0X18ucHkKQEAgLTQsNyArNCw3
IEBAIGZyb20gbW96bG9nLnN0cnVjdHVyZWQgaW1wb3J0IHN0cnVjdHVyZWRsb2csIGNvbW1hbmRs
aW5lCiAKIGZyb20gLi4gaW1wb3J0IHdwdGNvbW1hbmRsaW5lCiAKLWZyb20gdXBkYXRlIGltcG9y
dCBXUFRVcGRhdGUKK2Zyb20gLnVwZGF0ZSBpbXBvcnQgV1BUVXBkYXRlCiAKIGRlZiByZW1vdmVf
bG9nZ2luZ19hcmdzKGFyZ3MpOgogICAgICIiIlRha2UgbG9nZ2luZyBhcmdzIG91dCBvZiB0aGUg
ZGljdGlvbmFyeSBvZiBjb21tYW5kIGxpbmUgYXJndW1lbnRzIHNvCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvdXBkYXRlL21ldGFkYXRhLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9tZXRhZGF0
YS5weQppbmRleCA1YzQyZmEzMjY3MTE1ZDI4MjBlYjY3MDI1Yjg5ODg0ZjcyZjdmMzQ1Li40YmM3
MGQzMTEwNDBkMzM5N2UxZDAxMjBhZDgyZDQwMTI0NzA1MTkwIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL21ldGFkYXRhLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvbWV0YWRh
dGEucHkKQEAgLTIsMTcgKzIsMTQgQEAgaW1wb3J0IG9zCiAKIGZyb20gLi4gaW1wb3J0IG1ldGFk
YXRhLCBwcm9kdWN0cwogCi1mcm9tIGJhc2UgaW1wb3J0IFN0ZXAsIFN0ZXBSdW5uZXIKK2Zyb20g
LmJhc2UgaW1wb3J0IFN0ZXAsIFN0ZXBSdW5uZXIKIAogCiBjbGFzcyBHZXRVcGRhdGVQcm9wZXJ0
eUxpc3QoU3RlcCk6Ci0gICAgcHJvdmlkZXMgPSBbInByb3BlcnR5X29yZGVyIiwgImJvb2xlYW5f
cHJvcGVydGllcyJdCisgICAgcHJvdmlkZXMgPSBbInVwZGF0ZV9wcm9wZXJ0aWVzIl0KIAogICAg
IGRlZiBjcmVhdGUoc2VsZiwgc3RhdGUpOgotICAgICAgICBwcm9wZXJ0eV9vcmRlciwgYm9vbGVh
bl9wcm9wZXJ0aWVzID0gcHJvZHVjdHMubG9hZF9wcm9kdWN0X3VwZGF0ZSgKLSAgICAgICAgICAg
IHN0YXRlLmNvbmZpZywgc3RhdGUucHJvZHVjdCkKLSAgICAgICAgc3RhdGUucHJvcGVydHlfb3Jk
ZXIgPSBwcm9wZXJ0eV9vcmRlciArIHN0YXRlLmV4dHJhX3Byb3BlcnRpZXMKLSAgICAgICAgc3Rh
dGUuYm9vbGVhbl9wcm9wZXJ0aWVzID0gYm9vbGVhbl9wcm9wZXJ0aWVzCisgICAgICAgIHN0YXRl
LnVwZGF0ZV9wcm9wZXJ0aWVzID0gcHJvZHVjdHMubG9hZF9wcm9kdWN0X3VwZGF0ZShzdGF0ZS5j
b25maWcsIHN0YXRlLnByb2R1Y3QpCiAKIAogY2xhc3MgVXBkYXRlRXhwZWN0ZWQoU3RlcCk6CkBA
IC0yNywxMiArMjQsMTMgQEAgY2xhc3MgVXBkYXRlRXhwZWN0ZWQoU3RlcCk6CiAgICAgICAgIG1l
dGFkYXRhLnVwZGF0ZV9leHBlY3RlZChzdGF0ZS5wYXRocywKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHN0YXRlLnNlcnZlX3Jvb3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzdGF0ZS5ydW5fbG9nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
dXBkYXRlX3Byb3BlcnRpZXM9c3RhdGUudXBkYXRlX3Byb3BlcnRpZXMsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXZfb2xkPU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpZ25vcmVfZXhpc3Rpbmc9c3RhdGUuaWdub3JlX2V4aXN0aW5nLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZnVsbF91cGRhdGU9c3RhdGUuZnVsbF91cGRhdGUs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeW5jX3Jvb3Q9c3luY19yb290LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcGVydHlfb3JkZXI9c3RhdGUucHJv
cGVydHlfb3JkZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29sZWFuX3By
b3BlcnRpZXM9c3RhdGUuYm9vbGVhbl9wcm9wZXJ0aWVzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3RhYmlsaXR5PXN0YXRlLnN0YWJpbGl0eSkKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc2FibGVfaW50ZXJtaXR0ZW50PXN0YXRlLmRpc2FibGVfaW50ZXJt
aXR0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXBkYXRlX2ludGVybWl0
dGVudD1zdGF0ZS51cGRhdGVfaW50ZXJtaXR0ZW50LAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgcmVtb3ZlX2ludGVybWl0dGVudD1zdGF0ZS5yZW1vdmVfaW50ZXJtaXR0ZW50KQog
CiAKIGNsYXNzIENyZWF0ZU1ldGFkYXRhUGF0Y2goU3RlcCk6CmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvdXBkYXRlL3N0YXRlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zdGF0ZS5weQppbmRl
eCBkYzQ1OWRhN2UyZTVhNmI1ZGZkMDg4YjcxMWU0ZmE5YzdkNjkzYWY5Li42NGRiZjExODA2MDRj
ZDhkZjdhNDY4ZTAzNjQ0N2Y5NWI4MDM3MWIwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBk
YXRlL3N0YXRlLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKQEAgLTEsMTEg
KzEsOSBAQAogaW1wb3J0IG9zCi1pbXBvcnQgY1BpY2tsZSBhcyBwaWNrbGUKK2Zyb20gc2l4Lm1v
dmVzIGltcG9ydCBjUGlja2xlIGFzIHBpY2tsZSAgIyBub3FhOiBOODEzCiAKIGhlcmUgPSBvcy5w
YXRoLmFic3BhdGgob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0pCiAKLWNsYXNzIFN0YXRlKG9i
amVjdCk6Ci0gICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oaGVyZSwgIi53cHQtdXBkYXRlLmxv
Y2siKQotCitjbGFzcyBCYXNlU3RhdGUob2JqZWN0KToKICAgICBkZWYgX19uZXdfXyhjbHMsIGxv
Z2dlcik6CiAgICAgICAgIHJ2ID0gY2xzLmxvYWQobG9nZ2VyKQogICAgICAgICBpZiBydiBpcyBu
b3QgTm9uZToKQEAgLTE4LDExICsxNiw2IEBAIGNsYXNzIFN0YXRlKG9iamVjdCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGxvZ2dlcik6CiAgICAgICAgICIiIk9iamVjdCBjb250YWluaW5nIHN0
YXRlIHZhcmlhYmxlcyBjcmVhdGVkIHdoZW4gcnVubmluZyBTdGVwcy4KIAotICAgICAgICBPbiB3
cml0ZSB0aGUgc3RhdGUgaXMgc2VyaWFsaXplZCB0byBkaXNrLCBzdWNoIHRoYXQgaXQgY2FuIGJl
IHJlc3RvcmVkIGluCi0gICAgICAgIHRoZSBldmVudCB0aGF0IHRoZSBwcm9ncmFtIGlzIGludGVy
cnVwdGVkIGJlZm9yZSBhbGwgc3RlcHMgYXJlIGNvbXBsZXRlLgotICAgICAgICBOb3RlIHRoYXQg
dGhpcyBvbmx5IHdvcmtzIHdlbGwgaWYgdGhlIHZhbHVlcyBhcmUgaW1tdXRhYmxlOyBtdXRhdGlu
ZyBhbgotICAgICAgICBleGlzdGluZyB2YWx1ZSB3aWxsIG5vdCBjYXVzZSB0aGUgZGF0YSB0byBi
ZSBzZXJpYWxpemVkLgotCiAgICAgICAgIFZhcmlhYmxlcyBhcmUgc2V0IGFuZCBnZXQgYXMgYXR0
cmlidXRlcyBlLmcuIHN0YXRlX29iai5zcGFtID0gImVnZ3MiLgogCiAgICAgICAgIDpwYXJhbSBw
YXJlbnQ6IFBhcmVudCBTdGF0ZSBvYmplY3Qgb3IgTm9uZSBpZiB0aGlzIGlzIHRoZSByb290IG9i
amVjdC4KQEAgLTQwLDIzICszMyw2IEBAIGNsYXNzIFN0YXRlKG9iamVjdCk6CiAgICAgICAgIGRl
bCBydlsiX2xvZ2dlciJdCiAgICAgICAgIHJldHVybiBydgogCi0gICAgQGNsYXNzbWV0aG9kCi0g
ICAgZGVmIGxvYWQoY2xzLCBsb2dnZXIpOgotICAgICAgICAiIiJMb2FkIHNhdmVkIHN0YXRlIGZy
b20gYSBmaWxlIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmlz
ZmlsZShjbHMuZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAg
ICAgICB3aXRoIG9wZW4oY2xzLmZpbGVuYW1lKSBhcyBmOgotICAgICAgICAgICAgICAgIHRyeToK
LSAgICAgICAgICAgICAgICAgICAgcnYgPSBwaWNrbGUubG9hZChmKQotICAgICAgICAgICAgICAg
ICAgICBsb2dnZXIuZGVidWcoIkxvYWRpbmcgZGF0YSAlciIgJSAocnYuX2RhdGEsKSkKLSAgICAg
ICAgICAgICAgICAgICAgcnYuX2xvZ2dlciA9IGxvZ2dlcgotICAgICAgICAgICAgICAgICAgICBy
di5faW5kZXggPSAwCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBydgotICAgICAgICAgICAg
ICAgIGV4Y2VwdCBFT0ZFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmco
IkZvdW5kIGVtcHR5IHN0YXRlIGZpbGUiKQotICAgICAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAg
ICAgICAgIGxvZ2dlci5kZWJ1ZygiSU9FcnJvciBsb2FkaW5nIHN0b3JlZCBzdGF0ZSIpCiAKICAg
ICBkZWYgcHVzaChzZWxmLCBpbml0X3ZhbHVlcyk6CiAgICAgICAgICIiIlB1c2ggYSBuZXcgY2xl
YW4gc3RhdGUgZGljdGlvbmFyeQpAQCAtNjYsMjMgKzQyLDEzIEBAIGNsYXNzIFN0YXRlKG9iamVj
dCk6CiAKICAgICAgICAgcmV0dXJuIFN0YXRlQ29udGV4dChzZWxmLCBpbml0X3ZhbHVlcykKIAot
ICAgIGRlZiBzYXZlKHNlbGYpOgotICAgICAgICAiIiJXcml0ZSB0aGUgc3RhdGUgdG8gZGlzayIi
IgotICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlbmFtZSwgInciKSBhcyBmOgotICAgICAgICAg
ICAgcGlja2xlLmR1bXAoc2VsZiwgZikKLQogICAgIGRlZiBpc19lbXB0eShzZWxmKToKICAgICAg
ICAgcmV0dXJuIGxlbihzZWxmLl9kYXRhKSA9PSAxIGFuZCBzZWxmLl9kYXRhWzBdID09IHt9CiAK
ICAgICBkZWYgY2xlYXIoc2VsZik6CiAgICAgICAgICIiIlJlbW92ZSBhbGwgc3RhdGUgYW5kIGRl
bGV0ZSB0aGUgc3RvcmVkIGNvcHkuIiIiCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9zLnVu
bGluayhzZWxmLmZpbGVuYW1lKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAg
IHBhc3MKICAgICAgICAgc2VsZi5fZGF0YSA9IFt7fV0KIAotCiAgICAgZGVmIF9fc2V0YXR0cl9f
KHNlbGYsIGtleSwgdmFsdWUpOgogICAgICAgICBpZiBrZXkuc3RhcnRzd2l0aCgiXyIpOgogICAg
ICAgICAgICAgb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIGtleSwgdmFsdWUpCkBAIC0xMDksNiAr
NzUsNjIgQEAgY2xhc3MgU3RhdGUob2JqZWN0KToKICAgICBkZWYga2V5cyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYuX2RhdGFbc2VsZi5faW5kZXhdLmtleXMoKQogCisKKyAgICBAY2xhc3Nt
ZXRob2QKKyAgICBkZWYgbG9hZChjbHMpOgorICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVy
cm9yCisKKyAgICBkZWYgc2F2ZShzZWxmKToKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRF
cnJvcgorCisKK2NsYXNzIFNhdmVkU3RhdGUoQmFzZVN0YXRlKToKKyAgICAiIiJPbiB3cml0ZSB0
aGUgc3RhdGUgaXMgc2VyaWFsaXplZCB0byBkaXNrLCBzdWNoIHRoYXQgaXQgY2FuIGJlIHJlc3Rv
cmVkIGluCisgICAgICAgdGhlIGV2ZW50IHRoYXQgdGhlIHByb2dyYW0gaXMgaW50ZXJydXB0ZWQg
YmVmb3JlIGFsbCBzdGVwcyBhcmUgY29tcGxldGUuCisgICAgICAgTm90ZSB0aGF0IHRoaXMgb25s
eSB3b3JrcyB3ZWxsIGlmIHRoZSB2YWx1ZXMgYXJlIGltbXV0YWJsZTsgbXV0YXRpbmcgYW4KKyAg
ICAgICBleGlzdGluZyB2YWx1ZSB3aWxsIG5vdCBjYXVzZSB0aGUgZGF0YSB0byBiZSBzZXJpYWxp
emVkLiIiIgorICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGhlcmUsICIud3B0LXVwZGF0ZS5s
b2NrIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBsb2FkKGNscywgbG9nZ2VyKToKKyAg
ICAgICAgIiIiTG9hZCBzYXZlZCBzdGF0ZSBmcm9tIGEgZmlsZSIiIgorICAgICAgICB0cnk6Cisg
ICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUoY2xzLmZpbGVuYW1lKToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgd2l0aCBvcGVuKGNscy5maWxlbmFtZSkg
YXMgZjoKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJ2ID0gcGlj
a2xlLmxvYWQoZikKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJMb2FkaW5nIGRh
dGEgJXIiICUgKHJ2Ll9kYXRhLCkpCisgICAgICAgICAgICAgICAgICAgIHJ2Ll9sb2dnZXIgPSBs
b2dnZXIKKyAgICAgICAgICAgICAgICAgICAgcnYuX2luZGV4ID0gMAorICAgICAgICAgICAgICAg
ICAgICByZXR1cm4gcnYKKyAgICAgICAgICAgICAgICBleGNlcHQgRU9GRXJyb3I6CisgICAgICAg
ICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJGb3VuZCBlbXB0eSBzdGF0ZSBmaWxlIikKKyAg
ICAgICAgZXhjZXB0IElPRXJyb3I6CisgICAgICAgICAgICBsb2dnZXIuZGVidWcoIklPRXJyb3Ig
bG9hZGluZyBzdG9yZWQgc3RhdGUiKQorCisgICAgZGVmIHNhdmUoc2VsZik6CisgICAgICAgICIi
IldyaXRlIHRoZSBzdGF0ZSB0byBkaXNrIiIiCisgICAgICAgIHdpdGggb3BlbihzZWxmLmZpbGVu
YW1lLCAidyIpIGFzIGY6CisgICAgICAgICAgICBwaWNrbGUuZHVtcChzZWxmLCBmKQorCisgICAg
ZGVmIGNsZWFyKHNlbGYpOgorICAgICAgICBzdXBlcihTYXZlZFN0YXRlLCBzZWxmKS5jbGVhcigp
CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLnVubGluayhzZWxmLmZpbGVuYW1lKQorICAg
ICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworCitjbGFzcyBVbnNhdmVk
U3RhdGUoQmFzZVN0YXRlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgbG9hZChjbHMsIGxv
Z2dlcik6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgc2F2ZShzZWxmKToKKyAgICAg
ICAgcmV0dXJuCisKKwogY2xhc3MgU3RhdGVDb250ZXh0KG9iamVjdCk6CiAgICAgZGVmIF9faW5p
dF9fKHNlbGYsIHN0YXRlLCBpbml0X3ZhbHVlcyk6CiAgICAgICAgIHNlbGYuc3RhdGUgPSBzdGF0
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9zeW5jLnB5IGIvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3VwZGF0ZS9zeW5jLnB5CmluZGV4IGMyZDBiZmE3ZjBkNjlmMzVkZWRlODdlMzI1NWFjYjA0MTJk
ODhkYjcuLjBkNzVhMTIzMmZjMGNiYTlmYmQ2ZThhMzM2M2FkZWEwNDc1ZGQ0MzYgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3luYy5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N5bmMucHkKQEAgLTUsOCArNSw4IEBAIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzeXMKIGltcG9y
dCB1dWlkCiAKLWZyb20gYmFzZSBpbXBvcnQgU3RlcCwgU3RlcFJ1bm5lcgotZnJvbSB0cmVlIGlt
cG9ydCBDb21taXQKK2Zyb20gLmJhc2UgaW1wb3J0IFN0ZXAsIFN0ZXBSdW5uZXIKK2Zyb20gLnRy
ZWUgaW1wb3J0IENvbW1pdAogCiBoZXJlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguc3BsaXQo
X19maWxlX18pWzBdKQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3VwZGF0ZS5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5CmluZGV4IDU2ODVmODQwNjcwY2RiODJk
MDRlNWM0YTk3OTg1YWMzM2ZjODdhYTkuLjk2MzAyZWUyNjdlOTA1YWE4YTQ4YWYxMmI2NTk3OGUw
MjVlYmQ0OTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5CisrKyBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci91cGRhdGUvdXBkYXRlLnB5CkBAIC0xLDE2ICsxLDE2IEBACiBpbXBvcnQg
b3MKIGltcG9ydCBzeXMKIAotZnJvbSBtZXRhZGF0YSBpbXBvcnQgTWV0YWRhdGFVcGRhdGVSdW5u
ZXIKLWZyb20gc3luYyBpbXBvcnQgU3luY0Zyb21VcHN0cmVhbVJ1bm5lcgotZnJvbSB0cmVlIGlt
cG9ydCBHaXRUcmVlLCBIZ1RyZWUsIE5vVkNTVHJlZQorZnJvbSAubWV0YWRhdGEgaW1wb3J0IE1l
dGFkYXRhVXBkYXRlUnVubmVyCitmcm9tIC5zeW5jIGltcG9ydCBTeW5jRnJvbVVwc3RyZWFtUnVu
bmVyCitmcm9tIC50cmVlIGltcG9ydCBHaXRUcmVlLCBIZ1RyZWUsIE5vVkNTVHJlZQogCi1mcm9t
IGJhc2UgaW1wb3J0IFN0ZXAsIFN0ZXBSdW5uZXIsIGV4aXRfY2xlYW4sIGV4aXRfdW5jbGVhbgot
ZnJvbSBzdGF0ZSBpbXBvcnQgU3RhdGUKK2Zyb20gLmJhc2UgaW1wb3J0IFN0ZXAsIFN0ZXBSdW5u
ZXIsIGV4aXRfY2xlYW4sIGV4aXRfdW5jbGVhbgorZnJvbSAuc3RhdGUgaW1wb3J0IFNhdmVkU3Rh
dGUsIFVuc2F2ZWRTdGF0ZQogCiBkZWYgc2V0dXBfcGF0aHMoc3luY19wYXRoKToKICAgICBzeXMu
cGF0aC5pbnNlcnQoMCwgb3MucGF0aC5hYnNwYXRoKHN5bmNfcGF0aCkpCi0gICAgZnJvbSB0b29s
cyBpbXBvcnQgbG9jYWxwYXRocyAgIyBub3FhOiBmbGFrZTgKKyAgICBmcm9tIHRvb2xzIGltcG9y
dCBsb2NhbHBhdGhzICAjIG5vcWE6IEY0MDEKIAogY2xhc3MgTG9hZENvbmZpZyhTdGVwKToKICAg
ICAiIiJTdGVwIGZvciBsb2FkaW5nIGNvbmZpZ3VyYXRpb24gZnJvbSB0aGUgaW5pIGZpbGUgYW5k
IGt3YXJncy4iIiIKQEAgLTg1LDIyICs4NSw1MSBAQCBjbGFzcyBVcGRhdGVNZXRhZGF0YShTdGVw
KToKICAgICAgICAga3dhcmdzID0gc3RhdGUua3dhcmdzCiAgICAgICAgIHdpdGggc3RhdGUucHVz
aChbImxvY2FsX3RyZWUiLCAic3luY190cmVlIiwgInBhdGhzIiwgInNlcnZlX3Jvb3QiXSk6CiAg
ICAgICAgICAgICBzdGF0ZS5ydW5fbG9nID0ga3dhcmdzWyJydW5fbG9nIl0KLSAgICAgICAgICAg
IHN0YXRlLmlnbm9yZV9leGlzdGluZyA9IGt3YXJnc1siaWdub3JlX2V4aXN0aW5nIl0KLSAgICAg
ICAgICAgIHN0YXRlLnN0YWJpbGl0eSA9IGt3YXJnc1sic3RhYmlsaXR5Il0KKyAgICAgICAgICAg
IHN0YXRlLmRpc2FibGVfaW50ZXJtaXR0ZW50ID0ga3dhcmdzWyJkaXNhYmxlX2ludGVybWl0dGVu
dCJdCisgICAgICAgICAgICBzdGF0ZS51cGRhdGVfaW50ZXJtaXR0ZW50ID0ga3dhcmdzWyJ1cGRh
dGVfaW50ZXJtaXR0ZW50Il0KKyAgICAgICAgICAgIHN0YXRlLnJlbW92ZV9pbnRlcm1pdHRlbnQg
PSBrd2FyZ3NbInJlbW92ZV9pbnRlcm1pdHRlbnQiXQogICAgICAgICAgICAgc3RhdGUucGF0Y2gg
PSBrd2FyZ3NbInBhdGNoIl0KICAgICAgICAgICAgIHN0YXRlLnN1aXRlX25hbWUgPSBrd2FyZ3Nb
InN1aXRlX25hbWUiXQogICAgICAgICAgICAgc3RhdGUucHJvZHVjdCA9IGt3YXJnc1sicHJvZHVj
dCJdCiAgICAgICAgICAgICBzdGF0ZS5jb25maWcgPSBrd2FyZ3NbImNvbmZpZyJdCisgICAgICAg
ICAgICBzdGF0ZS5mdWxsX3VwZGF0ZSA9IGt3YXJnc1siZnVsbCJdCiAgICAgICAgICAgICBzdGF0
ZS5leHRyYV9wcm9wZXJ0aWVzID0ga3dhcmdzWyJleHRyYV9wcm9wZXJ0eSJdCiAgICAgICAgICAg
ICBydW5uZXIgPSBNZXRhZGF0YVVwZGF0ZVJ1bm5lcihzZWxmLmxvZ2dlciwgc3RhdGUpCiAgICAg
ICAgICAgICBydW5uZXIucnVuKCkKIAogCitjbGFzcyBSZW1vdmVPYnNvbGV0ZShTdGVwKToKKyAg
ICAiIiJSZW1vdmUgbWV0YWRhdGEgZmlsZXMgdGhhdCBkb24ndCBjb3Jlc3BvbmQgdG8gYW4gZXhp
c3RpbmcgdGVzdCBmaWxlIiIiCisKKyAgICBkZWYgY3JlYXRlKHNlbGYsIHN0YXRlKToKKyAgICAg
ICAgaWYgbm90IHN0YXRlLmt3YXJnc1sicmVtb3ZlX29ic29sZXRlIl06CisgICAgICAgICAgICBy
ZXR1cm4KKworICAgICAgICBwYXRocyA9IHN0YXRlLmt3YXJnc1sidGVzdF9wYXRocyJdCisgICAg
ICAgIHN0YXRlLnRlc3RzX3BhdGggPSBzdGF0ZS5wYXRoc1siLyJdWyJ0ZXN0c19wYXRoIl0KKyAg
ICAgICAgc3RhdGUubWV0YWRhdGFfcGF0aCA9IHN0YXRlLnBhdGhzWyIvIl1bIm1ldGFkYXRhX3Bh
dGgiXQorCisgICAgICAgIGZvciB1cmxfcGF0aHMgaW4gcGF0aHMuaXRlcnZhbHVlcygpOgorICAg
ICAgICAgICAgdGVzdHNfcGF0aCA9IHVybF9wYXRoc1sidGVzdHNfcGF0aCJdCisgICAgICAgICAg
ICBtZXRhZGF0YV9wYXRoID0gdXJsX3BhdGhzWyJtZXRhZGF0YV9wYXRoIl0KKyAgICAgICAgICAg
IGZvciBkaXJwYXRoLCBkaXJuYW1lcywgZmlsZW5hbWVzIGluIG9zLndhbGsobWV0YWRhdGFfcGF0
aCk6CisgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluIGZpbGVuYW1lczoKKyAgICAgICAg
ICAgICAgICAgICAgaWYgZmlsZW5hbWUgPT0gIl9fZGlyX18uaW5pIjoKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lLmVuZHN3
aXRoKCIuaW5pIik6CisgICAgICAgICAgICAgICAgICAgICAgICBmdWxsX3BhdGggPSBvcy5wYXRo
LmpvaW4oZGlycGF0aCwgZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICByZWxfcGF0
aCA9IG9zLnBhdGgucmVscGF0aChmdWxsX3BhdGgsIG1ldGFkYXRhX3BhdGgpCisgICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X3BhdGggPSBvcy5wYXRoLmpvaW4odGVzdHNfcGF0aCwgcmVsX3Bh
dGhbOi00XSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0
ZXN0X3BhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnVubGluayhmdWxsX3Bh
dGgpCisKKwogY2xhc3MgVXBkYXRlUnVubmVyKFN0ZXBSdW5uZXIpOgogICAgICIiIlJ1bm5lciBm
b3IgZG9pbmcgYW4gb3ZlcmFsbCB1cGRhdGUuIiIiCiAgICAgc3RlcHMgPSBbTG9hZENvbmZpZywK
ICAgICAgICAgICAgICBMb2FkVHJlZXMsCiAgICAgICAgICAgICAgU3luY0Zyb21VcHN0cmVhbSwK
KyAgICAgICAgICAgICBSZW1vdmVPYnNvbGV0ZSwKICAgICAgICAgICAgICBVcGRhdGVNZXRhZGF0
YV0KIAogCkBAIC0xMjIsNyArMTUxLDEwIEBAIGNsYXNzIFdQVFVwZGF0ZShvYmplY3QpOgogICAg
ICAgICAgICAgICAgICMgSWYgdGhlIHN5bmMgcGF0aCBkb2Vzbid0IGV4aXN0IHdlIGRlZmVyIHRo
aXMgdW50aWwgaXQgZG9lcwogICAgICAgICAgICAgICAgIHNldHVwX3BhdGhzKGt3YXJnc1sic3lu
Y19wYXRoIl0pCiAKLSAgICAgICAgc2VsZi5zdGF0ZSA9IFN0YXRlKGxvZ2dlcikKKyAgICAgICAg
aWYga3dhcmdzLmdldCgic3RvcmVfc3RhdGUiLCBGYWxzZSk6CisgICAgICAgICAgICBzZWxmLnN0
YXRlID0gU2F2ZWRTdGF0ZShsb2dnZXIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxm
LnN0YXRlID0gVW5zYXZlZFN0YXRlKGxvZ2dlcikKICAgICAgICAgc2VsZi5rd2FyZ3MgPSBrd2Fy
Z3MKICAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnZXIKIApAQCAtMTMyLDcgKzE2NCw3IEBAIGNs
YXNzIFdQVFVwZGF0ZShvYmplY3QpOgogICAgICAgICAgICAgcmV0dXJuIGV4aXRfY2xlYW4KIAog
ICAgICAgICBpZiBub3Qgc2VsZi5rd2FyZ3NbImNvbnRpbnVlIl0gYW5kIG5vdCBzZWxmLnN0YXRl
LmlzX2VtcHR5KCk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRm91bmQgZXhpc3Rp
bmcgc3RhdGUuIFJ1biB3aXRoIC0tY29udGludWUgdG8gcmVzdW1lIG9yIC0tYWJvcnQgdG8gY2xl
YXIgc3RhdGUiKQorICAgICAgICAgICAgc2VsZi5sb2dnZXIuY3JpdGljYWwoIkZvdW5kIGV4aXN0
aW5nIHN0YXRlLiBSdW4gd2l0aCAtLWNvbnRpbnVlIHRvIHJlc3VtZSBvciAtLWFib3J0IHRvIGNs
ZWFyIHN0YXRlIikKICAgICAgICAgICAgIHJldHVybiBleGl0X3VuY2xlYW4KIAogICAgICAgICBp
ZiBzZWxmLmt3YXJnc1siY29udGludWUiXToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci91cGRh
dGUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3czYy1pbXBvcnQubG9nCmRl
bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDlhMzlhYTA5YWY1OTk3NTA0NjhlZTNkNGM3
Mjk4MDE5MjliNTI2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAt
MSwyMyArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBm
cm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0
bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQg
Z2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRo
ZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJl
aW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9w
ZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL19faW5pdF9fLnB5Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3VwZGF0ZS9iYXNlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3VwZGF0ZS9tZXRhZGF0
YS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci91cGRhdGUvc3RhdGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRl
L3N5bmMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBkYXRlL3RyZWUucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdXBk
YXRlL3VwZGF0ZS5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCBlNGMzNmZlMzFmYzYzYzFhN2Y4Y2UzMThjYWIyYmQ3MDljNDNkMmEyLi4wMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93M2MtaW1wb3J0
LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRp
cmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1v
ZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBw
dWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1w
bGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXcz
Yy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUg
dGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRv
ciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZp
eGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci9fX2luaXRfXy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci9jb25maWcucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZW52
aXJvbm1lbnQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZXhwZWN0ZWQucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvZm9u
dC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0cnVubmVyL3dwdHJ1bm5lci9mb3JtYXR0ZXJzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21hbmlmZXN0
ZXhwZWN0ZWQucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvbWFuaWZlc3RpbmNsdWRlLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL21hbmlmZXN0dXBkYXRlLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL21ldGFkYXRhLnB5Ci0vTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0
cnVubmVyL3Byb2R1Y3RzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3N0YWJpbGl0eS5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci90ZXN0ZHJpdmVyLWV4dHJhLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3Rkcml2ZXItdmVuZG9y
LmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzX3J1bm5lci5odG1sCi0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3Rlc3RoYXJuZXNzcmVwb3J0LXNlcnZvLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVw
b3J0LXNlcnZvZHJpdmVyLmpzCi0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3Rlc3RoYXJuZXNzcmVwb3J0LmpzCi0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3Rlc3Rsb2FkZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvdGVzdHJ1bm5lci5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci92Y3MucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd2ViZHJpdmVyX3NlcnZlci5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRjb21tYW5kbGluZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRsb2dnaW5n
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHR0ZXN0LnB5
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd2ViZHJpdmVyX3NlcnZlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci93ZWJkcml2ZXJfc2VydmVyLnB5CmluZGV4IDllY2QwMDlhN2Q4MTI3ZWQ3OTNkNGVmMGFm
ZjE5ZjYxNjFiYmQxZWMuLjE2MmZmYWUzZmM5M2FlZWIyOWEyNTM1ZTgyOWFmNDViOWUxNWMxZjMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93ZWJkcml2ZXJfc2VydmVyLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93ZWJkcml2ZXJfc2VydmVyLnB5CkBAIC05LDggKzksOSBAQCBpbXBvcnQgdHJhY2Vi
YWNrCiBpbXBvcnQgbW96cHJvY2VzcwogCiAKLV9fYWxsX18gPSBbIlNlbGVuaXVtU2VydmVyIiwg
IkNocm9tZURyaXZlclNlcnZlciIsICJPcGVyYURyaXZlclNlcnZlciIsCi0gICAgICAgICAgICJH
ZWNrb0RyaXZlclNlcnZlciIsICJJbnRlcm5ldEV4cGxvcmVyRHJpdmVyU2VydmVyIiwgIkVkZ2VE
cml2ZXJTZXJ2ZXIiLAorX19hbGxfXyA9IFsiU2VsZW5pdW1TZXJ2ZXIiLCAiQ2hyb21lRHJpdmVy
U2VydmVyIiwgIkNXVENocm9tZURyaXZlclNlcnZlciIsCisgICAgICAgICAgICJFZGdlQ2hyb21p
dW1Ecml2ZXJTZXJ2ZXIiLCAiT3BlcmFEcml2ZXJTZXJ2ZXIiLCAiR2Vja29Ecml2ZXJTZXJ2ZXIi
LAorICAgICAgICAgICAiSW50ZXJuZXRFeHBsb3JlckRyaXZlclNlcnZlciIsICJFZGdlRHJpdmVy
U2VydmVyIiwKICAgICAgICAgICAgIlNlcnZvRHJpdmVyU2VydmVyIiwgIldlYktpdERyaXZlclNl
cnZlciIsICJXZWJEcml2ZXJTZXJ2ZXIiXQogCiAKQEAgLTE4LDcgKzE5LDYgQEAgY2xhc3MgV2Vi
RHJpdmVyU2VydmVyKG9iamVjdCk6CiAgICAgX19tZXRhY2xhc3NfXyA9IGFiYy5BQkNNZXRhCiAK
ICAgICBkZWZhdWx0X2Jhc2VfcGF0aCA9ICIvIgotICAgIF91c2VkX3BvcnRzID0gc2V0KCkKIAog
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeSwgaG9zdD0iMTI3LjAuMC4xIiwg
cG9ydD1Ob25lLAogICAgICAgICAgICAgICAgICBiYXNlX3BhdGg9IiIsIGVudj1Ob25lLCBhcmdz
PU5vbmUpOgpAQCAtODEsOCArODEsMTIgQEAgY2xhc3MgV2ViRHJpdmVyU2VydmVyKG9iamVjdCk6
CiAgICAgICAgICAgICBzZWxmLl9wcm9jLndhaXQoKQogCiAgICAgZGVmIHN0b3Aoc2VsZiwgZm9y
Y2U9RmFsc2UpOgorICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU3RvcHBpbmcgV2ViRHJpdmVy
IikKICAgICAgICAgaWYgc2VsZi5pc19hbGl2ZToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9w
cm9jLmtpbGwoKQorICAgICAgICAgICAga2lsbF9yZXN1bHQgPSBzZWxmLl9wcm9jLmtpbGwoKQor
ICAgICAgICAgICAgaWYgZm9yY2UgYW5kIGtpbGxfcmVzdWx0ICE9IDA6CisgICAgICAgICAgICAg
ICAgcmV0dXJuIHNlbGYuX3Byb2Mua2lsbCg5KQorICAgICAgICAgICAgcmV0dXJuIGtpbGxfcmVz
dWx0CiAgICAgICAgIHJldHVybiBub3Qgc2VsZi5pc19hbGl2ZQogCiAgICAgQHByb3BlcnR5CkBA
IC0xMDYsMTUgKzExMCw5IEBAIGNsYXNzIFdlYkRyaXZlclNlcnZlcihvYmplY3QpOgogICAgIEBw
cm9wZXJ0eQogICAgIGRlZiBwb3J0KHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9wb3J0IGlzIE5v
bmU6Ci0gICAgICAgICAgICBzZWxmLl9wb3J0ID0gc2VsZi5fZmluZF9uZXh0X2ZyZWVfcG9ydCgp
CisgICAgICAgICAgICBzZWxmLl9wb3J0ID0gZ2V0X2ZyZWVfcG9ydCgpCiAgICAgICAgIHJldHVy
biBzZWxmLl9wb3J0CiAKLSAgICBAc3RhdGljbWV0aG9kCi0gICAgZGVmIF9maW5kX25leHRfZnJl
ZV9wb3J0KCk6Ci0gICAgICAgIHBvcnQgPSBnZXRfZnJlZV9wb3J0KDQ0NDQsIGV4Y2x1ZGU9V2Vi
RHJpdmVyU2VydmVyLl91c2VkX3BvcnRzKQotICAgICAgICBXZWJEcml2ZXJTZXJ2ZXIuX3VzZWRf
cG9ydHMuYWRkKHBvcnQpCi0gICAgICAgIHJldHVybiBwb3J0Ci0KIAogY2xhc3MgU2VsZW5pdW1T
ZXJ2ZXIoV2ViRHJpdmVyU2VydmVyKToKICAgICBkZWZhdWx0X2Jhc2VfcGF0aCA9ICIvd2QvaHVi
IgpAQCAtMTM0LDYgKzEzMiwyNSBAQCBjbGFzcyBDaHJvbWVEcml2ZXJTZXJ2ZXIoV2ViRHJpdmVy
U2VydmVyKToKICAgICAgICAgICAgICAgICBjbWRfYXJnKCJwb3J0Iiwgc3RyKHNlbGYucG9ydCkp
LAogICAgICAgICAgICAgICAgIGNtZF9hcmcoInVybC1iYXNlIiwgc2VsZi5iYXNlX3BhdGgpIGlm
IHNlbGYuYmFzZV9wYXRoIGVsc2UgIiJdICsgc2VsZi5fYXJncwogCitjbGFzcyBDV1RDaHJvbWVE
cml2ZXJTZXJ2ZXIoV2ViRHJpdmVyU2VydmVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbG9n
Z2VyLCBiaW5hcnksIHBvcnQ9Tm9uZSwgYXJncz1Ob25lKToKKyAgICAgICAgV2ViRHJpdmVyU2Vy
dmVyLl9faW5pdF9fKHNlbGYsIGxvZ2dlciwgYmluYXJ5LCBwb3J0PXBvcnQsIGFyZ3M9YXJncykK
KworICAgIGRlZiBtYWtlX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBbc2VsZi5iaW5h
cnksCisgICAgICAgICAgICAgICAgIi0tcG9ydD0lcyIgJSBzdHIoc2VsZi5wb3J0KV0gKyBzZWxm
Ll9hcmdzCisKK2NsYXNzIEVkZ2VDaHJvbWl1bURyaXZlclNlcnZlcihXZWJEcml2ZXJTZXJ2ZXIp
OgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeT0ibXNlZGdlZHJpdmVyIiwg
cG9ydD1Ob25lLAorICAgICAgICAgICAgICAgICBiYXNlX3BhdGg9IiIsIGFyZ3M9Tm9uZSk6Cisg
ICAgICAgIFdlYkRyaXZlclNlcnZlci5fX2luaXRfXygKKyAgICAgICAgICAgIHNlbGYsIGxvZ2dl
ciwgYmluYXJ5LCBwb3J0PXBvcnQsIGJhc2VfcGF0aD1iYXNlX3BhdGgsIGFyZ3M9YXJncykKKwor
ICAgIGRlZiBtYWtlX2NvbW1hbmQoc2VsZik6CisgICAgICAgIHJldHVybiBbc2VsZi5iaW5hcnks
CisgICAgICAgICAgICAgICAgY21kX2FyZygicG9ydCIsIHN0cihzZWxmLnBvcnQpKSwKKyAgICAg
ICAgICAgICAgICBjbWRfYXJnKCJ1cmwtYmFzZSIsIHNlbGYuYmFzZV9wYXRoKSBpZiBzZWxmLmJh
c2VfcGF0aCBlbHNlICIiXSArIHNlbGYuX2FyZ3MKKwogY2xhc3MgRWRnZURyaXZlclNlcnZlcihX
ZWJEcml2ZXJTZXJ2ZXIpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIGJpbmFyeT0i
bWljcm9zb2Z0d2ViZHJpdmVyLmV4ZSIsIHBvcnQ9Tm9uZSwKICAgICAgICAgICAgICAgICAgYmFz
ZV9wYXRoPSIiLCBob3N0PSJsb2NhbGhvc3QiLCBhcmdzPU5vbmUpOgpAQCAtMTk3LDcgKzIxNCw3
IEBAIGNsYXNzIFNlcnZvRHJpdmVyU2VydmVyKFdlYkRyaXZlclNlcnZlcik6CiAKICAgICBkZWYg
bWFrZV9jb21tYW5kKHNlbGYpOgogICAgICAgICBjb21tYW5kID0gW3NlbGYuYmluYXJ5LAotICAg
ICAgICAgICAgICAgICAgICItLXdlYmRyaXZlciIsIHN0cihzZWxmLnBvcnQpLAorICAgICAgICAg
ICAgICAgICAgICItLXdlYmRyaXZlcj0lcyIgJSBzZWxmLnBvcnQsCiAgICAgICAgICAgICAgICAg
ICAgIi0taGFyZC1mYWlsIiwKICAgICAgICAgICAgICAgICAgICAiLS1oZWFkbGVzcyJdICsgc2Vs
Zi5fYXJncwogICAgICAgICBpZiBzZWxmLmJpbmFyeV9hcmdzOgpAQCAtMjIxLDI5ICsyMzgsMjEg
QEAgZGVmIGNtZF9hcmcobmFtZSwgdmFsdWU9Tm9uZSk6CiAgICAgcmV0dXJuIHJ2CiAKIAotZGVm
IGdldF9mcmVlX3BvcnQoc3RhcnRfcG9ydCwgZXhjbHVkZT1Ob25lKToKLSAgICAiIiJHZXQgdGhl
IGZpcnN0IHBvcnQgbnVtYmVyIGFmdGVyIHN0YXJ0X3BvcnQgKGluY2x1c2l2ZSkgdGhhdCBpcwot
ICAgIG5vdCBjdXJyZW50bHkgYm91bmQuCi0KLSAgICA6cGFyYW0gc3RhcnRfcG9ydDogSW50ZWdl
ciBwb3J0IG51bWJlciBhdCB3aGljaCB0byBzdGFydCB0ZXN0aW5nLgotICAgIDpwYXJhbSBleGNs
dWRlOiBTZXQgb2YgcG9ydCBudW1iZXJzIHRvIHNraXAiIiIKLSAgICBwb3J0ID0gc3RhcnRfcG9y
dAorZGVmIGdldF9mcmVlX3BvcnQoKToKKyAgICAiIiJHZXQgYSByYW5kb20gdW5ib3VuZCBwb3J0
IiIiCiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgaWYgZXhjbHVkZSBhbmQgcG9ydCBpbiBleGNs
dWRlOgotICAgICAgICAgICAgcG9ydCArPSAxCi0gICAgICAgICAgICBjb250aW51ZQogICAgICAg
ICBzID0gc29ja2V0LnNvY2tldCgpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHMuYmluZCgo
IjEyNy4wLjAuMSIsIHBvcnQpKQorICAgICAgICAgICAgcy5iaW5kKCgiMTI3LjAuMC4xIiwgMCkp
CiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3I6Ci0gICAgICAgICAgICBwb3J0ICs9IDEKKyAg
ICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gcG9y
dAorICAgICAgICAgICAgcmV0dXJuIHMuZ2V0c29ja25hbWUoKVsxXQogICAgICAgICBmaW5hbGx5
OgogICAgICAgICAgICAgcy5jbG9zZSgpCiAKIAotZGVmIHdhaXRfZm9yX3NlcnZpY2UoYWRkciwg
dGltZW91dD0xNSk6CitkZWYgd2FpdF9mb3Jfc2VydmljZShhZGRyLCB0aW1lb3V0PTYwKToKICAg
ICAiIiJXYWl0cyB1bnRpbCBuZXR3b3JrIHNlcnZpY2UgZ2l2ZW4gYXMgYSB0dXBsZSBvZiAoaG9z
dCwgcG9ydCkgYmVjb21lcwogICAgIGF2YWlsYWJsZSBvciB0aGUgYHRpbWVvdXRgIGR1cmF0aW9u
IGlzIHJlYWNoZWQsIGF0IHdoaWNoIHBvaW50CiAgICAgYGBzb2NrZXQuZXJyb3JgYCBpcyByYWlz
ZWQuIiIiCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93
cHRydW5uZXIvd3B0Y29tbWFuZGxpbmUucHkKaW5kZXggN2UxOGE4YjQzNzliMzM4ZTdiNmRiNjVi
MTdjYTM2M2E4M2NiMWM4OS4uOTIzYmRhYTU1ODU3ZTc5M2U4ZDZlOGM1ODcxNjczNjBhZWQ0YWU5
NCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGNvbW1hbmRsaW5lLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRjb21tYW5kbGluZS5weQpAQCAtMSwxNCArMSwxNSBAQAorZnJvbSBfX2Z1dHVy
ZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGFyZ3BhcnNlCiBpbXBvcnQgb3MKIGlt
cG9ydCBzeXMKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CiBmcm9tIGRpc3R1
dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCiBmcm9tIGRhdGV0aW1lIGltcG9ydCB0
aW1lZGVsdGEKK2Zyb20gc2l4IGltcG9ydCBpdGVya2V5cywgaXRlcnZhbHVlcywgaXRlcml0ZW1z
CiAKLWltcG9ydCBjb25maWcKLWltcG9ydCB3cHR0ZXN0Ci1pbXBvcnQgZm9ybWF0dGVycwotCitm
cm9tIC4gaW1wb3J0IGNvbmZpZworZnJvbSAuIGltcG9ydCB3cHR0ZXN0Citmcm9tIC5mb3JtYXR0
ZXJzIGltcG9ydCBjaHJvbWl1bSwgd3B0cmVwb3J0LCB3cHRzY3JlZW5zaG90CiAKIGRlZiBhYnNf
cGF0aChwYXRoKToKICAgICByZXR1cm4gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZXhwYW5kdXNl
cihwYXRoKSkKQEAgLTI5LDcgKzMwLDcgQEAgZGVmIHJlcXVpcmVfYXJnKGt3YXJncywgbmFtZSwg
dmFsdWVfZnVuYz1Ob25lKToKICAgICAgICAgdmFsdWVfZnVuYyA9IGxhbWJkYSB4OiB4IGlzIG5v
dCBOb25lCiAKICAgICBpZiBuYW1lIG5vdCBpbiBrd2FyZ3Mgb3Igbm90IHZhbHVlX2Z1bmMoa3dh
cmdzW25hbWVdKToKLSAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgIk1pc3NpbmcgcmVxdWly
ZWQgYXJndW1lbnQgJXMiICUgbmFtZQorICAgICAgICBwcmludCgiTWlzc2luZyByZXF1aXJlZCBh
cmd1bWVudCAlcyIgJSBuYW1lLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIHN5cy5leGl0KDEp
CiAKIApAQCAtNTMsNiArNTQsOCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAg
ICAgICAgICAgICAgICAgICBoZWxwPSJQcmV2ZW50IHJlZ2VuZXJhdGlvbiBvZiB0aGUgdGVzdCBt
YW5pZmVzdC4iKQogICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbWFuaWZlc3QtZG93bmxvYWQi
LCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAg
ICAgICBoZWxwPSJBdHRlbXB0IHRvIGRvd25sb2FkIGEgcHJlZXhpc3RpbmcgbWFuaWZlc3Qgd2hl
biB1cGRhdGluZy4iKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tbm8tbWFuaWZlc3QtZG93
bmxvYWQiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0ibWFuaWZlc3RfZG93bmxvYWQiLAor
ICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUHJldmVudCBkb3dubG9hZCBvZiB0aGUgdGVz
dCBtYW5pZmVzdC4iKQogCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS10aW1lb3V0LW11bHRp
cGxpZXIiLCBhY3Rpb249InN0b3JlIiwgdHlwZT1mbG9hdCwgZGVmYXVsdD1Ob25lLAogICAgICAg
ICAgICAgICAgICAgICAgICAgaGVscD0iTXVsdGlwbGllciByZWxhdGl2ZSB0byBzdGFuZGFyZCB0
ZXN0IHRpbWVvdXQgdG8gdXNlIikKQEAgLTEzNyw2ICsxNDAsMTEgQEAgc2NoZW1lIGhvc3QgYW5k
IHBvcnQuIiIiKQogICAgIHRlc3Rfc2VsZWN0aW9uX2dyb3VwLmFkZF9hcmd1bWVudCgiLS10YWci
LCBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InRhZ3MiLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJMYWJlbHMgYXBwbGllZCB0byB0ZXN0cyB0byBpbmNsdWRlIGlu
IHRoZSBydW4uICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
TGFiZWxzIHN0YXJ0aW5nIGRpcjogYXJlIGVxdWl2YWxlbnQgdG8gdG9wLWxldmVsIGRpcmVjdG9y
aWVzLiIpCisgICAgdGVzdF9zZWxlY3Rpb25fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWRlZmF1bHQt
ZXhjbHVkZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGRlZmF1bHQ9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9Ik9ubHkgcnVuIHRoZSB0ZXN0cyBleHBsaWNpdGx5IGdpdmVuIGluIGFy
Z3VtZW50cy4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJO
byB0ZXN0cyB3aWxsIHJ1biBpZiB0aGUgbGlzdCBpcyBlbXB0eSwgYW5kIHRoZSAiCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInByb2dyYW0gd2lsbCBleGl0IHdp
dGggc3RhdHVzIGNvZGUgMC4iKQogCiAgICAgZGVidWdnaW5nX2dyb3VwID0gcGFyc2VyLmFkZF9h
cmd1bWVudF9ncm91cCgiRGVidWdnaW5nIikKICAgICBkZWJ1Z2dpbmdfZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCctLWRlYnVnZ2VyJywgY29uc3Q9Il9fZGVmYXVsdF9fIiwgbmFyZ3M9Ij8iLApAQCAtMTky
LDYgKzIwMCwxMiBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4iIiIpCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIGV4dHJhIGpz
b24gZmlsZXMgdG8gYWRkIHRvIHJ1biBpbmZvIikKICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3Vt
ZW50KCItLXByb2R1Y3QiLCBhY3Rpb249InN0b3JlIiwgY2hvaWNlcz1wcm9kdWN0X2Nob2ljZXMs
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9IkJyb3dz
ZXIgYWdhaW5zdCB3aGljaCB0byBydW4gdGVzdHMiKQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJn
dW1lbnQoIi0tYnJvd3Nlci12ZXJzaW9uIiwgYWN0aW9uPSJzdG9yZSIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9IkluZm9ybWF0aXZlIHN0cmluZyBk
ZXRhaWxpbmcgdGhlIGJyb3dzZXIgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJl
bGVhc2UgdmVyc2lvbi4gVGhpcyBpcyBpbmNsdWRlZCBpbiB0aGUgcnVuX2luZm8gZGF0YS4iKQor
ICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0tYnJvd3Nlci1jaGFubmVsIiwgYWN0aW9u
PSJzdG9yZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhl
bHA9IkluZm9ybWF0aXZlIHN0cmluZyBkZXRhaWxpbmcgdGhlIGJyb3dzZXIgIgorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgInJlbGVhc2UgY2hhbm5lbC4gVGhpcyBpcyBpbmNsdWRlZCBp
biB0aGUgcnVuX2luZm8gZGF0YS4iKQogICAgIGNvbmZpZ19ncm91cC5hZGRfYXJndW1lbnQoIi0t
Y29uZmlnIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9YWJzX3BhdGgsIGRlc3Q9ImNvbmZpZyIsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJQYXRoIHRvIGNvbmZpZyBmaWxlIikK
ICAgICBjb25maWdfZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWluc3RhbGwtZm9udHMiLCBhY3Rpb249
InN0b3JlX3RydWUiLApAQCAtMTk5LDYgKzIxMywxMCBAQCBzY2hlbWUgaG9zdCBhbmQgcG9ydC4i
IiIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJBbGxvdyB0aGUgd3B0cnVu
bmVyIHRvIGluc3RhbGwgZm9udHMgb24geW91ciBzeXN0ZW0iKQogICAgIGNvbmZpZ19ncm91cC5h
ZGRfYXJndW1lbnQoIi0tZm9udC1kaXIiLCBhY3Rpb249InN0b3JlIiwgdHlwZT1hYnNfcGF0aCwg
ZGVzdD0iZm9udF9kaXIiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iUGF0
aCB0byBsb2NhbCBmb250IGluc3RhbGxhdGlvbiBkaXJlY3RvcnkiLCBkZWZhdWx0PU5vbmUpCisg
ICAgY29uZmlnX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1oZWFkbGVzcyIsIGFjdGlvbj0ic3RvcmVf
dHJ1ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJSdW4gYnJvd3NlciBp
biBoZWFkbGVzcyBtb2RlIiwgZGVmYXVsdD1Ob25lKQorICAgIGNvbmZpZ19ncm91cC5hZGRfYXJn
dW1lbnQoIi0tbm8taGVhZGxlc3MiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0iaGVhZGxl
c3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3QgcnVuIGJyb3dz
ZXIgaW4gaGVhZGxlc3MgbW9kZSIpCiAKICAgICBidWlsZF90eXBlID0gcGFyc2VyLmFkZF9tdXR1
YWxseV9leGNsdXNpdmVfZ3JvdXAoKQogICAgIGJ1aWxkX3R5cGUuYWRkX2FyZ3VtZW50KCItLWRl
YnVnLWJ1aWxkIiwgZGVzdD0iZGVidWciLCBhY3Rpb249InN0b3JlX3RydWUiLApAQCAtMjE0LDcg
KzIzMiw3IEBAIHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0iVG90YWwgbnVtYmVyIG9mIGNodW5rcyB0byB1c2UiKQogICAgIGNo
dW5raW5nX2dyb3VwLmFkZF9hcmd1bWVudCgiLS10aGlzLWNodW5rIiwgYWN0aW9uPSJzdG9yZSIs
IHR5cGU9aW50LCBkZWZhdWx0PTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9IkNodW5rIG51bWJlciB0byBydW4iKQotICAgIGNodW5raW5nX2dyb3VwLmFkZF9hcmd1bWVu
dCgiLS1jaHVuay10eXBlIiwgYWN0aW9uPSJzdG9yZSIsIGNob2ljZXM9WyJub25lIiwgImVxdWFs
X3RpbWUiLCAiaGFzaCIsICJkaXJfaGFzaCJdLAorICAgIGNodW5raW5nX2dyb3VwLmFkZF9hcmd1
bWVudCgiLS1jaHVuay10eXBlIiwgYWN0aW9uPSJzdG9yZSIsIGNob2ljZXM9WyJub25lIiwgImhh
c2giLCAiZGlyX2hhc2giXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVs
dD1Ob25lLCBoZWxwPSJDaHVua2luZyB0eXBlIHRvIHVzZSIpCiAKICAgICBzc2xfZ3JvdXAgPSBw
YXJzZXIuYWRkX2FyZ3VtZW50X2dyb3VwKCJTU0wvVExTIikKQEAgLTIzOSwxMyArMjU3LDIwIEBA
IHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0iUGF0aCB0byB0aGUgZm9sZGVyIGNvbnRhaW5pbmcgYnJvd3NlciBwcmVmcyIpCiAgICAg
Z2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLWRpc2FibGUtZTEwcyIsIGRlc3Q9ImdlY2tvX2Ux
MHMiLCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVmYXVsdD1UcnVlLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBoZWxwPSJSdW4gdGVzdHMgd2l0aG91dCBlbGVjdHJvbHlzaXMgcHJlZmVy
ZW5jZXMiKQorICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1lbmFibGUtd2VicmVuZGVy
IiwgZGVzdD0iZW5hYmxlX3dlYnJlbmRlciIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9
Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRW5hYmxlIHRoZSBXZWJS
ZW5kZXIgY29tcG9zaXRvciBpbiBHZWNrbyAoZGVmYXVsdHMgdG8gZGlzYWJsZWQpLiIpCisgICAg
Z2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLW5vLWVuYWJsZS13ZWJyZW5kZXIiLCBkZXN0PSJl
bmFibGVfd2VicmVuZGVyIiwgYWN0aW9uPSJzdG9yZV9mYWxzZSIsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9IkRpc2FibGUgdGhlIFdlYlJlbmRlciBjb21wb3NpdG9yIGluIEdl
Y2tvLiIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXN0YWNrZml4LWRpciIsIGRl
c3Q9InN0YWNrZml4X2RpciIsIGFjdGlvbj0ic3RvcmUiLAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSJQYXRoIHRvIGRpcmVjdG9yeSBjb250YWluaW5nIGFzc2VydGlvbiBzdGFj
ayBmaXhpbmcgc2NyaXB0cyIpCiAgICAgZ2Vja29fZ3JvdXAuYWRkX2FyZ3VtZW50KCItLXNldHBy
ZWYiLCBkZXN0PSJleHRyYV9wcmVmcyIsIGFjdGlvbj0nYXBwZW5kJywKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD1bXSwgbWV0YXZhcj0iUFJFRj1WQUxVRSIsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkRlZmluZXMgYW4gZXh0cmEgdXNlciBwcmVmZXJl
bmNlIChvdmVycmlkZXMgdGhvc2UgaW4gcHJlZnNfcm9vdCkiKQotICAgIGdlY2tvX2dyb3VwLmFk
ZF9hcmd1bWVudCgiLS1sZWFrLWNoZWNrIiwgZGVzdD0ibGVha19jaGVjayIsIGFjdGlvbj0ic3Rv
cmVfdHJ1ZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVuYWJsZSBsZWFr
IGNoZWNraW5nIikKKyAgICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tbGVhay1jaGVjayIs
IGRlc3Q9ImxlYWtfY2hlY2siLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZWZhdWx0PU5vbmUsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkVuYWJsZSBsZWFrIGNoZWNraW5nIChl
bmFibGVkIGJ5IGRlZmF1bHQgZm9yIGRlYnVnIGJ1aWxkcywgIgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAic2lsZW50bHkgaWdub3JlZCBmb3Igb3B0LCBtb2JpbGUpIikKKyAgICBnZWNr
b19ncm91cC5hZGRfYXJndW1lbnQoIi0tbm8tbGVhay1jaGVjayIsIGRlc3Q9ImxlYWtfY2hlY2si
LCBhY3Rpb249InN0b3JlX2ZhbHNlIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBoZWxwPSJEaXNhYmxlIGxlYWsgY2hlY2tpbmciKQogICAgIGdlY2tvX2dyb3Vw
LmFkZF9hcmd1bWVudCgiLS1zdHlsby10aHJlYWRzIiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9aW50
LCBkZWZhdWx0PTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ik51bWJlciBv
ZiBwYXJhbGxlbCB0aHJlYWRzIHRvIHVzZSBmb3Igc3R5bG8iKQogICAgIGdlY2tvX2dyb3VwLmFk
ZF9hcmd1bWVudCgiLS1yZWZ0ZXN0LWludGVybmFsIiwgZGVzdD0icmVmdGVzdF9pbnRlcm5hbCIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCkBAIC0yNTMsNyArMjc4LDcgQEAgc2NoZW1lIGhvc3QgYW5k
IHBvcnQuIiIiKQogICAgIGdlY2tvX2dyb3VwLmFkZF9hcmd1bWVudCgiLS1yZWZ0ZXN0LWV4dGVy
bmFsIiwgZGVzdD0icmVmdGVzdF9pbnRlcm5hbCIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJEaXNhYmxlIHJlZnRlc3QgcnVubmVyIGlt
cGxlbWVudGVkIGluc2lkZSBNYXJpb25ldHRlIikKICAgICBnZWNrb19ncm91cC5hZGRfYXJndW1l
bnQoIi0tcmVmdGVzdC1zY3JlZW5zaG90IiwgZGVzdD0icmVmdGVzdF9zY3JlZW5zaG90IiwgYWN0
aW9uPSJzdG9yZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9WyJhbHdh
eXMiLCAiZmFpbCIsICJ1bmV4cGVjdGVkIl0sIGRlZmF1bHQ9InVuZXhwZWN0ZWQiLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjaG9pY2VzPVsiYWx3YXlzIiwgImZhaWwiLCAidW5leHBl
Y3RlZCJdLCBkZWZhdWx0PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
IldpdGggLS1yZWZ0ZXN0LWludGVybmFsLCB3aGVuIHRvIHRha2UgYSBzY3JlZW5zaG90IikKICAg
ICBnZWNrb19ncm91cC5hZGRfYXJndW1lbnQoIi0tY2hhb3MiLCBkZXN0PSJjaGFvc19tb2RlX2Zs
YWdzIiwgYWN0aW9uPSJzdG9yZSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hcmdz
PSI/IiwgY29uc3Q9MHhGRkZGRkZGRiwgdHlwZT1pbnQsCkBAIC0yODcsNiArMzEyLDE1IEBAIHNj
aGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICBzYXVjZV9ncm91cC5hZGRfYXJndW1lbnQoIi0t
c2F1Y2UtY29ubmVjdC1iaW5hcnkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0
PSJzYXVjZV9jb25uZWN0X2JpbmFyeSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9IlBhdGggdG8gU2F1Y2UgQ29ubmVjdCBiaW5hcnkiKQorICAgIHNhdWNlX2dyb3VwLmFkZF9h
cmd1bWVudCgiLS1zYXVjZS1pbml0LXRpbWVvdXQiLCBhY3Rpb249InN0b3JlIiwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9MzAsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBzZWNvbmRzIHRvIHdhaXQgZm9yIFNhdWNl
ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ29ubmVjdCB0dW5uZWwgdG8g
YmUgYXZhaWxhYmxlIGJlZm9yZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ImFib3J0aW5nIikKKyAgICBzYXVjZV9ncm91cC5hZGRfYXJndW1lbnQoIi0tc2F1Y2UtY29ubmVj
dC1hcmciLCBhY3Rpb249ImFwcGVuZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRl
ZmF1bHQ9W10sIGRlc3Q9InNhdWNlX2Nvbm5lY3RfYXJncyIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGhlbHA9IkNvbW1hbmQtbGluZSBhcmd1bWVudCB0byBmb3J3YXJkIHRvIHRoZSAi
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlNhdWNlIENvbm5lY3QgYmluYXJ5
IChyZXBlYXRhYmxlKSIpCiAKICAgICB3ZWJraXRfZ3JvdXAgPSBwYXJzZXIuYWRkX2FyZ3VtZW50
X2dyb3VwKCJXZWJLaXQtc3BlY2lmaWMiKQogICAgIHdlYmtpdF9ncm91cC5hZGRfYXJndW1lbnQo
Ii0td2Via2l0LXBvcnQiLCBkZXN0PSJ3ZWJraXRfcG9ydCIsCkBAIC0yOTYsNyArMzMwLDE3IEBA
IHNjaGVtZSBob3N0IGFuZCBwb3J0LiIiIikKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9
Ikxpc3Qgb2YgVVJMcyBmb3IgdGVzdHMgdG8gcnVuLCBvciBwYXRocyBpbmNsdWRpbmcgdGVzdHMg
dG8gcnVuLiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoZXF1aXZhbGVudCB0byAt
LWluY2x1ZGUpIikKIAotICAgIGNvbW1hbmRsaW5lLmxvZ19mb3JtYXR0ZXJzWyJ3cHRyZXBvcnQi
XSA9IChmb3JtYXR0ZXJzLldwdHJlcG9ydEZvcm1hdHRlciwgIndwdHJlcG9ydCBmb3JtYXQiKQor
ICAgIGRlZiBzY3JlZW5zaG90X2FwaV93cmFwcGVyKGZvcm1hdHRlciwgYXBpKToKKyAgICAgICAg
Zm9ybWF0dGVyLmFwaSA9IGFwaQorICAgICAgICByZXR1cm4gZm9ybWF0dGVyCisKKyAgICBjb21t
YW5kbGluZS5mbXRfb3B0aW9uc1siYXBpIl0gPSAoc2NyZWVuc2hvdF9hcGlfd3JhcHBlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhY2hlIEFQSSAoZGVmYXVsdDog
JXMpIiAlIHdwdHNjcmVlbnNob3QuREVGQVVMVF9BUEksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHsid3B0c2NyZWVuc2hvdCJ9LCAic3RvcmUiKQorCisgICAgY29tbWFu
ZGxpbmUubG9nX2Zvcm1hdHRlcnNbImNocm9taXVtIl0gPSAoY2hyb21pdW0uQ2hyb21pdW1Gb3Jt
YXR0ZXIsICJDaHJvbWl1bSBMYXlvdXQgVGVzdHMgZm9ybWF0IikKKyAgICBjb21tYW5kbGluZS5s
b2dfZm9ybWF0dGVyc1sid3B0cmVwb3J0Il0gPSAod3B0cmVwb3J0LldwdHJlcG9ydEZvcm1hdHRl
ciwgIndwdHJlcG9ydCBmb3JtYXQiKQorICAgIGNvbW1hbmRsaW5lLmxvZ19mb3JtYXR0ZXJzWyJ3
cHRzY3JlZW5zaG90Il0gPSAod3B0c2NyZWVuc2hvdC5XcHRzY3JlZW5zaG90Rm9ybWF0dGVyLCAi
d3B0LmZ5aSBzY3JlZW5zaG90cyIpCiAKICAgICBjb21tYW5kbGluZS5hZGRfbG9nZ2luZ19ncm91
cChwYXJzZXIpCiAgICAgcmV0dXJuIHBhcnNlcgpAQCAtMzIzLDcgKzM2Nyw3IEBAIGRlZiBzZXRf
ZnJvbV9jb25maWcoa3dhcmdzKToKICAgICAgICAgICAgICAgICAgICAgKCJob3N0X2NlcnRfcGF0
aCIsICJob3N0X2NlcnRfcGF0aCIsIFRydWUpLAogICAgICAgICAgICAgICAgICAgICAoImhvc3Rf
a2V5X3BhdGgiLCAiaG9zdF9rZXlfcGF0aCIsIFRydWUpXX0KIAotICAgIGZvciBzZWN0aW9uLCB2
YWx1ZXMgaW4ga2V5cy5pdGVyaXRlbXMoKToKKyAgICBmb3Igc2VjdGlvbiwgdmFsdWVzIGluIGl0
ZXJpdGVtcyhrZXlzKToKICAgICAgICAgZm9yIGNvbmZpZ192YWx1ZSwga3dfdmFsdWUsIGlzX3Bh
dGggaW4gdmFsdWVzOgogICAgICAgICAgICAgaWYga3dfdmFsdWUgaW4ga3dhcmdzIGFuZCBrd2Fy
Z3Nba3dfdmFsdWVdIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgaWYgbm90IGlzX3BhdGg6CkBA
IC0zNTQsMTEgKzM5OCwxMiBAQCBkZWYgc2V0X2Zyb21fY29uZmlnKGt3YXJncyk6CiAKICAgICBj
aGVja19wYXRocyhrd2FyZ3MpCiAKKwogZGVmIGdldF90ZXN0X3BhdGhzKGNvbmZpZyk6CiAgICAg
IyBTZXQgdXAgdGVzdF9wYXRocwogICAgIHRlc3RfcGF0aHMgPSBPcmRlcmVkRGljdCgpCiAKLSAg
ICBmb3Igc2VjdGlvbiBpbiBjb25maWcuaXRlcmtleXMoKToKKyAgICBmb3Igc2VjdGlvbiBpbiBp
dGVya2V5cyhjb25maWcpOgogICAgICAgICBpZiBzZWN0aW9uLnN0YXJ0c3dpdGgoIm1hbmlmZXN0
OiIpOgogICAgICAgICAgICAgbWFuaWZlc3Rfb3B0cyA9IGNvbmZpZy5nZXQoc2VjdGlvbikKICAg
ICAgICAgICAgIHVybF9iYXNlID0gbWFuaWZlc3Rfb3B0cy5nZXQoInVybF9iYXNlIiwgIi8iKQpA
QCAtMzg0LDE1ICs0MjksMTUgQEAgZGVmIGV4ZV9wYXRoKG5hbWUpOgogCiAKIGRlZiBjaGVja19w
YXRocyhrd2FyZ3MpOgotICAgIGZvciB0ZXN0X3BhdGhzIGluIGt3YXJnc1sidGVzdF9wYXRocyJd
Lml0ZXJ2YWx1ZXMoKToKKyAgICBmb3IgdGVzdF9wYXRocyBpbiBpdGVydmFsdWVzKGt3YXJnc1si
dGVzdF9wYXRocyJdKToKICAgICAgICAgaWYgbm90ICgidGVzdHNfcGF0aCIgaW4gdGVzdF9wYXRo
cyBhbmQKICAgICAgICAgICAgICAgICAibWV0YWRhdGFfcGF0aCIgaW4gdGVzdF9wYXRocyk6Ci0g
ICAgICAgICAgICBwcmludCAiRmF0YWw6IG11c3Qgc3BlY2lmeSBib3RoIGEgdGVzdCBwYXRoIGFu
ZCBtZXRhZGF0YSBwYXRoIgorICAgICAgICAgICAgcHJpbnQoIkZhdGFsOiBtdXN0IHNwZWNpZnkg
Ym90aCBhIHRlc3QgcGF0aCBhbmQgbWV0YWRhdGEgcGF0aCIpCiAgICAgICAgICAgICBzeXMuZXhp
dCgxKQogICAgICAgICBpZiAibWFuaWZlc3RfcGF0aCIgbm90IGluIHRlc3RfcGF0aHM6CiAgICAg
ICAgICAgICB0ZXN0X3BhdGhzWyJtYW5pZmVzdF9wYXRoIl0gPSBvcy5wYXRoLmpvaW4odGVzdF9w
YXRoc1sibWV0YWRhdGFfcGF0aCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICJNQU5JRkVTVC5qc29uIikKLSAgICAgICAgZm9yIGtleSwg
cGF0aCBpbiB0ZXN0X3BhdGhzLml0ZXJpdGVtcygpOgorICAgICAgICBmb3Iga2V5LCBwYXRoIGlu
IGl0ZXJpdGVtcyh0ZXN0X3BhdGhzKToKICAgICAgICAgICAgIG5hbWUgPSBrZXkuc3BsaXQoIl8i
LCAxKVswXQogCiAgICAgICAgICAgICBpZiBuYW1lID09ICJtYW5pZmVzdCI6CkBAIC00MDEsMTEg
KzQ0NiwxMSBAQCBkZWYgY2hlY2tfcGF0aHMoa3dhcmdzKToKICAgICAgICAgICAgICAgICBwYXRo
ID0gb3MucGF0aC5kaXJuYW1lKHBhdGgpCiAKICAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4
aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICBwcmludCAiRmF0YWw6ICVzIHBhdGggJXMgZG9l
cyBub3QgZXhpc3QiICUgKG5hbWUsIHBhdGgpCisgICAgICAgICAgICAgICAgcHJpbnQoIkZhdGFs
OiAlcyBwYXRoICVzIGRvZXMgbm90IGV4aXN0IiAlIChuYW1lLCBwYXRoKSkKICAgICAgICAgICAg
ICAgICBzeXMuZXhpdCgxKQogCiAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihwYXRo
KToKLSAgICAgICAgICAgICAgICBwcmludCAiRmF0YWw6ICVzIHBhdGggJXMgaXMgbm90IGEgZGly
ZWN0b3J5IiAlIChuYW1lLCBwYXRoKQorICAgICAgICAgICAgICAgIHByaW50KCJGYXRhbDogJXMg
cGF0aCAlcyBpcyBub3QgYSBkaXJlY3RvcnkiICUgKG5hbWUsIHBhdGgpKQogICAgICAgICAgICAg
ICAgIHN5cy5leGl0KDEpCiAKIApAQCAtNDE1LDYgKzQ2MCw5IEBAIGRlZiBjaGVja19hcmdzKGt3
YXJncyk6CiAgICAgaWYga3dhcmdzWyJwcm9kdWN0Il0gaXMgTm9uZToKICAgICAgICAga3dhcmdz
WyJwcm9kdWN0Il0gPSAiZmlyZWZveCIKIAorICAgIGlmIGt3YXJnc1sibWFuaWZlc3RfdXBkYXRl
Il0gaXMgTm9uZToKKyAgICAgICAga3dhcmdzWyJtYW5pZmVzdF91cGRhdGUiXSA9IFRydWUKKwog
ICAgIGlmICJzYXVjZSIgaW4ga3dhcmdzWyJwcm9kdWN0Il06CiAgICAgICAgIGt3YXJnc1sicGF1
c2VfYWZ0ZXJfdGVzdCJdID0gRmFsc2UKIApAQCAtNDU1LDcgKzUwMyw3IEBAIGRlZiBjaGVja19h
cmdzKGt3YXJncyk6CiAKICAgICBpZiBrd2FyZ3NbImJpbmFyeSJdIGlzIG5vdCBOb25lOgogICAg
ICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoa3dhcmdzWyJiaW5hcnkiXSk6Ci0gICAgICAgICAg
ICBwcmludCA+PiBzeXMuc3RkZXJyLCAiQmluYXJ5IHBhdGggJXMgZG9lcyBub3QgZXhpc3QiICUg
a3dhcmdzWyJiaW5hcnkiXQorICAgICAgICAgICAgcHJpbnQoIkJpbmFyeSBwYXRoICVzIGRvZXMg
bm90IGV4aXN0IiAlIGt3YXJnc1siYmluYXJ5Il0sIGZpbGU9c3lzLnN0ZGVycikKICAgICAgICAg
ICAgIHN5cy5leGl0KDEpCiAKICAgICBpZiBrd2FyZ3NbInNzbF90eXBlIl0gaXMgTm9uZToKQEAg
LTQ3NCwyOCArNTIyLDM2IEBAIGRlZiBjaGVja19hcmdzKGt3YXJncyk6CiAgICAgZWxpZiBrd2Fy
Z3NbInNzbF90eXBlIl0gPT0gIm9wZW5zc2wiOgogICAgICAgICBwYXRoID0gZXhlX3BhdGgoa3dh
cmdzWyJvcGVuc3NsX2JpbmFyeSJdKQogICAgICAgICBpZiBwYXRoIGlzIE5vbmU6Ci0gICAgICAg
ICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAib3BlbnNzbC1iaW5hcnkgYXJndW1lbnQgbWlzc2lu
ZyBvciBub3QgYSB2YWxpZCBleGVjdXRhYmxlIgorICAgICAgICAgICAgcHJpbnQoIm9wZW5zc2wt
YmluYXJ5IGFyZ3VtZW50IG1pc3Npbmcgb3Igbm90IGEgdmFsaWQgZXhlY3V0YWJsZSIsIGZpbGU9
c3lzLnN0ZGVycikKICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgIGt3YXJnc1sib3Bl
bnNzbF9iaW5hcnkiXSA9IHBhdGgKIAogICAgIGlmIGt3YXJnc1sic3NsX3R5cGUiXSAhPSAibm9u
ZSIgYW5kIGt3YXJnc1sicHJvZHVjdCJdID09ICJmaXJlZm94IiBhbmQga3dhcmdzWyJjZXJ0dXRp
bF9iaW5hcnkiXToKICAgICAgICAgcGF0aCA9IGV4ZV9wYXRoKGt3YXJnc1siY2VydHV0aWxfYmlu
YXJ5Il0pCiAgICAgICAgIGlmIHBhdGggaXMgTm9uZToKLSAgICAgICAgICAgIHByaW50ID4+IHN5
cy5zdGRlcnIsICJjZXJ0dXRpbC1iaW5hcnkgYXJndW1lbnQgbWlzc2luZyBvciBub3QgYSB2YWxp
ZCBleGVjdXRhYmxlIgorICAgICAgICAgICAgcHJpbnQoImNlcnR1dGlsLWJpbmFyeSBhcmd1bWVu
dCBtaXNzaW5nIG9yIG5vdCBhIHZhbGlkIGV4ZWN1dGFibGUiLCBmaWxlPXN5cy5zdGRlcnIpCiAg
ICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICBrd2FyZ3NbImNlcnR1dGlsX2JpbmFyeSJd
ID0gcGF0aAogCiAgICAgaWYga3dhcmdzWydleHRyYV9wcmVmcyddOgorICAgICAgICAjIElmIGEg
c2luZ2xlIHByZWYgaXMgcGFzc2VkIGluIGFzIGEgc3RyaW5nLCBtYWtlIGl0IGEgbGlzdAorICAg
ICAgICBpZiB0eXBlKGt3YXJnc1snZXh0cmFfcHJlZnMnXSkgaW4gKHN0ciwgdW5pY29kZSk6Cisg
ICAgICAgICAgICBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ10gPSBba3dhcmdzWydleHRyYV9wcmVmcydd
XQogICAgICAgICBtaXNzaW5nID0gYW55KCc9JyBub3QgaW4gcHJlZmFyZyBmb3IgcHJlZmFyZyBp
biBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ10pCiAgICAgICAgIGlmIG1pc3Npbmc6Ci0gICAgICAgICAg
ICBwcmludCA+PiBzeXMuc3RkZXJyLCAiUHJlZmVyZW5jZXMgdmlhIC0tc2V0cHJlZiBtdXN0IGJl
IGluIGtleT12YWx1ZSBmb3JtYXQiCisgICAgICAgICAgICBwcmludCgiUHJlZmVyZW5jZXMgdmlh
IC0tc2V0cHJlZiBtdXN0IGJlIGluIGtleT12YWx1ZSBmb3JtYXQiLCBmaWxlPXN5cy5zdGRlcnIp
CiAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICBrd2FyZ3NbJ2V4dHJhX3ByZWZzJ10g
PSBbdHVwbGUocHJlZmFyZy5zcGxpdCgnPScsIDEpKSBmb3IgcHJlZmFyZyBpbgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWydleHRyYV9wcmVmcyddXQogCiAgICAgaWYg
a3dhcmdzWyJyZWZ0ZXN0X2ludGVybmFsIl0gaXMgTm9uZToKLSAgICAgICAgIyBEZWZhdWx0IHRv
IHRoZSBpbnRlcm5hbCByZWZ0ZXN0IGltcGxlbWVudGF0aW9uIG9uIExpbnV4IGFuZCBPU1gKLSAg
ICAgICAga3dhcmdzWyJyZWZ0ZXN0X2ludGVybmFsIl0gPSBzeXMucGxhdGZvcm0uc3RhcnRzd2l0
aCgibGludXgiKSBvciBzeXMucGxhdGZvcm0uc3RhcnRzd2l0aCgiZGFyd2luIikKKyAgICAgICAg
a3dhcmdzWyJyZWZ0ZXN0X2ludGVybmFsIl0gPSBUcnVlCisKKyAgICBpZiBrd2FyZ3NbInJlZnRl
c3Rfc2NyZWVuc2hvdCJdIGlzIE5vbmU6CisgICAgICAgIGt3YXJnc1sicmVmdGVzdF9zY3JlZW5z
aG90Il0gPSAidW5leHBlY3RlZCIKKworICAgIGlmIGt3YXJnc1siZW5hYmxlX3dlYnJlbmRlciJd
IGlzIE5vbmU6CisgICAgICAgIGt3YXJnc1siZW5hYmxlX3dlYnJlbmRlciJdID0gRmFsc2UKIAog
ICAgIHJldHVybiBrd2FyZ3MKIApAQCAtNTEwLDcgKzU2Niw3IEBAIGRlZiBjaGVja19hcmdzX3Vw
ZGF0ZShrd2FyZ3MpOgogCiAgICAgZm9yIGl0ZW0gaW4ga3dhcmdzWyJydW5fbG9nIl06CiAgICAg
ICAgIGlmIG9zLnBhdGguaXNkaXIoaXRlbSk6Ci0gICAgICAgICAgICBwcmludCA+PiBzeXMuc3Rk
ZXJyLCAiTG9nIGZpbGUgJXMgaXMgYSBkaXJlY3RvcnkiICUgaXRlbQorICAgICAgICAgICAgcHJp
bnQoIkxvZyBmaWxlICVzIGlzIGEgZGlyZWN0b3J5IiAlIGl0ZW0sIGZpbGU9c3lzLnN0ZGVycikK
ICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKICAgICByZXR1cm4ga3dhcmdzCkBAIC01MTksNyAr
NTc1LDcgQEAgZGVmIGNoZWNrX2FyZ3NfdXBkYXRlKGt3YXJncyk6CiBkZWYgY3JlYXRlX3BhcnNl
cl91cGRhdGUocHJvZHVjdF9jaG9pY2VzPU5vbmUpOgogICAgIGZyb20gbW96bG9nLnN0cnVjdHVy
ZWQgaW1wb3J0IGNvbW1hbmRsaW5lCiAKLSAgICBpbXBvcnQgcHJvZHVjdHMKKyAgICBmcm9tIC4g
aW1wb3J0IHByb2R1Y3RzCiAKICAgICBpZiBwcm9kdWN0X2Nob2ljZXMgaXMgTm9uZToKICAgICAg
ICAgY29uZmlnX2RhdGEgPSBjb25maWcubG9hZCgpCkBAIC01NDksMTMgKzYwNSwyMyBAQCBkZWYg
Y3JlYXRlX3BhcnNlcl91cGRhdGUocHJvZHVjdF9jaG9pY2VzPU5vbmUpOgogICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0iRG9uJ3QgY3JlYXRlIGEgVkNTIGNvbW1pdCBjb250YWluaW5nIHRo
ZSBjaGFuZ2VzLiIpCiAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1zeW5jIiwgZGVzdD0ic3lu
YyIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAg
ICAgICAgICBoZWxwPSJTeW5jIHRoZSB0ZXN0cyB3aXRoIHRoZSBsYXRlc3QgZnJvbSB1cHN0cmVh
bSAoaW1wbGllcyAtLXBhdGNoKSIpCi0gICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1pZ25vcmUt
ZXhpc3RpbmciLCBhY3Rpb249InN0b3JlX3RydWUiLAotICAgICAgICAgICAgICAgICAgICAgICAg
aGVscD0iV2hlbiB1cGRhdGluZyB0ZXN0IHJlc3VsdHMgb25seSBjb25zaWRlciByZXN1bHRzIGZy
b20gdGhlIGxvZ2ZpbGVzIHByb3ZpZGVkLCBub3QgZXhpc3RpbmcgZXhwZWN0YXRpb25zLiIpCi0g
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1zdGFiaWxpdHkiLCBuYXJncz0iPyIsIGFjdGlvbj0i
c3RvcmUiLCBjb25zdD0idW5zdGFibGUiLCBkZWZhdWx0PU5vbmUsCisgICAgcGFyc2VyLmFkZF9h
cmd1bWVudCgiLS1mdWxsIiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVsdD1GYWxzZSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJGb3IgYWxsIHRlc3RzIHRoYXQgYXJlIHVwZGF0
ZWQsIHJlbW92ZSBhbnkgZXhpc3RpbmcgY29uZGl0aW9ucyBhbmQgbWlzc2luZyBzdWJ0ZXN0cyIp
KQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tZGlzYWJsZS1pbnRlcm1pdHRlbnQiLCBuYXJn
cz0iPyIsIGFjdGlvbj0ic3RvcmUiLCBjb25zdD0idW5zdGFibGUiLCBkZWZhdWx0PU5vbmUsCiAg
ICAgICAgIGhlbHA9KCJSZWFzb24gZm9yIGRpc2FibGluZyB0ZXN0cy4gV2hlbiB1cGRhdGluZyB0
ZXN0IHJlc3VsdHMsIGRpc2FibGUgdGVzdHMgdGhhdCBoYXZlICIKICAgICAgICAgICAgICAgImlu
Y29uc2lzdGVudCByZXN1bHRzIGFjcm9zcyBtYW55IHJ1bnMgd2l0aCB0aGUgZ2l2ZW4gcmVhc29u
LiIpKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tY29udGludWUiLCBhY3Rpb249InN0b3Jl
X3RydWUiLCBoZWxwPSJDb250aW51ZSBhIHByZXZpb3VzbHkgc3RhcnRlZCBydW4gb2YgdGhlIHVw
ZGF0ZSBzY3JpcHQiKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0tYWJvcnQiLCBhY3Rpb249
InN0b3JlX3RydWUiLCBoZWxwPSJDbGVhciBzdGF0ZSBmcm9tIGEgcHJldmlvdXMgaW5jb21wbGV0
ZSBydW4gb2YgdGhlIHVwZGF0ZSBzY3JpcHQiKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoIi0t
dXBkYXRlLWludGVybWl0dGVudCIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlZmF1bHQ9RmFsc2Us
CisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgiVXBkYXRlIHRlc3QgbWV0YWRhdGEgd2l0
aCBleHBlY3RlZCBpbnRlcm1pdHRlbnQgc3RhdHVzZXMuIikpCisgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgiLS1yZW1vdmUtaW50ZXJtaXR0ZW50IiwgYWN0aW9uPSJzdG9yZV90cnVlIiwgZGVmYXVs
dD1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCJSZW1vdmUgb2Jzb2xldGUg
aW50ZXJtaXR0ZW50IHN0YXR1c2VzIGZyb20gZXhwZWN0ZWQgc3RhdHVzZXMuIikpCisgICAgcGFy
c2VyLmFkZF9hcmd1bWVudCgiLS1uby1yZW1vdmUtb2Jzb2xldGUiLCBhY3Rpb249InN0b3JlX2Zh
bHNlIiwgZGVzdD0icmVtb3ZlX29ic29sZXRlIiwgZGVmYXVsdD1UcnVlLAorICAgICAgICAgICAg
ICAgICAgICAgICAgaGVscD0oIkRvbid0IHJlbW92ZSBtZXRhZGF0YSBmaWxlcyB0aGF0IG5vIGxv
bmdlciBjb3JyZXNwb25kIHRvIGEgdGVzdCBmaWxlIikpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVu
dCgiLS1uby1zdG9yZS1zdGF0ZSIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLCBkZXN0PSJzdG9yZV9z
dGF0ZSIsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJTdG9yZSBzdGF0ZSBzbyB0aGF0
IHN0ZXBzIGNhbiBiZSByZXN1bWVkIGFmdGVyIGZhaWx1cmUiKQorICAgIHBhcnNlci5hZGRfYXJn
dW1lbnQoIi0tY29udGludWUiLCBhY3Rpb249InN0b3JlX3RydWUiLAorICAgICAgICAgICAgICAg
ICAgICAgICAgaGVscD0iQ29udGludWUgYSBwcmV2aW91c2x5IHN0YXJ0ZWQgcnVuIG9mIHRoZSB1
cGRhdGUgc2NyaXB0IikKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCItLWFib3J0IiwgYWN0aW9u
PSJzdG9yZV90cnVlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IkNsZWFyIHN0YXRl
IGZyb20gYSBwcmV2aW91cyBpbmNvbXBsZXRlIHJ1biBvZiB0aGUgdXBkYXRlIHNjcmlwdCIpCiAg
ICAgcGFyc2VyLmFkZF9hcmd1bWVudCgiLS1leGNsdWRlIiwgYWN0aW9uPSJzdG9yZSIsIG5hcmdz
PSIqIiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9Ikxpc3Qgb2YgZ2xvYi1zdHlsZSBw
YXRocyB0byBleGNsdWRlIHdoZW4gc3luY2luZyB0ZXN0cyIpCiAgICAgcGFyc2VyLmFkZF9hcmd1
bWVudCgiLS1pbmNsdWRlIiwgYWN0aW9uPSJzdG9yZSIsIG5hcmdzPSIqIiwKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVu
bmVyL3dwdHJ1bm5lci93cHRsb2dnaW5nLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGxvZ2dpbmcucHkK
aW5kZXggYWMzMTE4MTZjMThiN2Y4OThlNDQyMTQxMGY5N2Q5MzU3ZDJlZGQyZC4uNjljZWU3NDQ4
NzllYjY3ODBjYjk5ZWM5MzEyMzkyMmUxNjZkOWUxNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3dwdGxvZ2dpbmcucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdGxvZ2dpbmcucHkKQEAgLTEsMTkg
KzEsMTcgQEAKIGltcG9ydCBsb2dnaW5nCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkaW5nCi1m
cm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTwotZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0
IFF1ZXVlCiAKIGZyb20gbW96bG9nIGltcG9ydCBjb21tYW5kbGluZSwgc3RkYWRhcHRlciwgc2V0
X2RlZmF1bHRfbG9nZ2VyCi1mcm9tIG1vemxvZy5zdHJ1Y3R1cmVkbG9nIGltcG9ydCBTdHJ1Y3R1
cmVkTG9nZ2VyCitmcm9tIG1vemxvZy5zdHJ1Y3R1cmVkbG9nIGltcG9ydCBTdHJ1Y3R1cmVkTG9n
Z2VyLCBsb2dfbGV2ZWxzCiAKLWRlZiBzZXR1cChhcmdzLCBkZWZhdWx0cyk6CisKK2RlZiBzZXR1
cChhcmdzLCBkZWZhdWx0cywgZm9ybWF0dGVyX2RlZmF1bHRzPU5vbmUpOgogICAgIGxvZ2dlciA9
IGFyZ3MucG9wKCdsb2cnLCBOb25lKQogICAgIGlmIGxvZ2dlcjoKICAgICAgICAgc2V0X2RlZmF1
bHRfbG9nZ2VyKGxvZ2dlcikKICAgICAgICAgU3RydWN0dXJlZExvZ2dlci5fbG9nZ2VyX3N0YXRl
c1sid2ViLXBsYXRmb3JtLXRlc3RzIl0gPSBsb2dnZXIuX3N0YXRlCiAgICAgZWxzZToKLSAgICAg
ICAgbG9nZ2VyID0gY29tbWFuZGxpbmUuc2V0dXBfbG9nZ2luZygid2ViLXBsYXRmb3JtLXRlc3Rz
IiwgYXJncywgZGVmYXVsdHMpCisgICAgICAgIGxvZ2dlciA9IGNvbW1hbmRsaW5lLnNldHVwX2xv
Z2dpbmcoIndlYi1wbGF0Zm9ybS10ZXN0cyIsIGFyZ3MsIGRlZmF1bHRzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlcl9kZWZhdWx0cz1mb3JtYXR0
ZXJfZGVmYXVsdHMpCiAgICAgc2V0dXBfc3RkbGliX2xvZ2dlcigpCiAKICAgICBmb3IgbmFtZSBp
biBhcmdzLmtleXMoKToKQEAgLTUxLDg0ICs0OSwxOSBAQCBjbGFzcyBMb2dMZXZlbFJld3JpdGVy
KG9iamVjdCk6CiAgICAgICAgIHJldHVybiBzZWxmLmlubmVyKGRhdGEpCiAKIAotY2xhc3MgTG9n
VGhyZWFkKHRocmVhZGluZy5UaHJlYWQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBxdWV1ZSwg
bG9nZ2VyLCBsZXZlbCk6Ci0gICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZQotICAgICAgICBzZWxm
LmxvZ19mdW5jID0gZ2V0YXR0cihsb2dnZXIsIGxldmVsKQotICAgICAgICB0aHJlYWRpbmcuVGhy
ZWFkLl9faW5pdF9fKHNlbGYsIG5hbWU9IlRocmVhZC1Mb2ciKQotICAgICAgICBzZWxmLmRhZW1v
biA9IFRydWUKLQotICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAg
ICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgbXNnID0gc2VsZi5xdWV1ZS5nZXQoKQotICAg
ICAgICAgICAgZXhjZXB0IChFT0ZFcnJvciwgSU9FcnJvcik6Ci0gICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgICAgIGlmIG1zZyBpcyBOb25lOgotICAgICAgICAgICAgICAgIGJyZWFrCi0g
ICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHNlbGYubG9nX2Z1bmMobXNnKQotCi0K
LWNsYXNzIExvZ2dpbmdXcmFwcGVyKFN0cmluZ0lPKToKLSAgICAiIiJXcmFwcGVyIGZvciBmaWxl
IGxpa2Ugb2JqZWN0cyB0byByZWRpcmVjdCBvdXRwdXQgdG8gbG9nZ2VyCi0gICAgaW5zdGVhZCIi
IgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHF1ZXVlLCBwcmVmaXg9Tm9uZSk6Ci0gICAgICAg
IFN0cmluZ0lPLl9faW5pdF9fKHNlbGYpCi0gICAgICAgIHNlbGYucXVldWUgPSBxdWV1ZQotICAg
ICAgICBzZWxmLnByZWZpeCA9IHByZWZpeAotCi0gICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgot
ICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgZGF0YSA9IGRhdGEuZGVjb2RlKCJ1dGY4IikKLSAgICAgICAgICAgIGV4Y2Vw
dCBVbmljb2RlRGVjb2RlRXJyb3I6Ci0gICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEuZW5jb2Rl
KCJzdHJpbmdfZXNjYXBlIikuZGVjb2RlKCJhc2NpaSIpCi0KLSAgICAgICAgaWYgZGF0YS5lbmRz
d2l0aCgiXG4iKToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhWzotMV0KLSAgICAgICAgaWYgZGF0
YS5lbmRzd2l0aCgiXHIiKToKLSAgICAgICAgICAgIGRhdGEgPSBkYXRhWzotMV0KLSAgICAgICAg
aWYgbm90IGRhdGE6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgc2VsZi5wcmVmaXgg
aXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBkYXRhID0gIiVzOiAlcyIgJSAoc2VsZi5wcmVmaXgs
IGRhdGEpCi0gICAgICAgIHNlbGYucXVldWUucHV0KGRhdGEpCi0KLSAgICBkZWYgZmx1c2goc2Vs
Zik6Ci0gICAgICAgIHBhc3MKLQotCi1jbGFzcyBDYXB0dXJlSU8ob2JqZWN0KToKLSAgICBkZWYg
X19pbml0X18oc2VsZiwgbG9nZ2VyLCBkb19jYXB0dXJlKToKLSAgICAgICAgc2VsZi5sb2dnZXIg
PSBsb2dnZXIKLSAgICAgICAgc2VsZi5kb19jYXB0dXJlID0gZG9fY2FwdHVyZQotICAgICAgICBz
ZWxmLmxvZ2dpbmdfcXVldWUgPSBOb25lCi0gICAgICAgIHNlbGYubG9nZ2luZ190aHJlYWQgPSBO
b25lCi0gICAgICAgIHNlbGYub3JpZ2luYWxfc3RkaW8gPSBOb25lCi0KLSAgICBkZWYgX19lbnRl
cl9fKHNlbGYpOgotICAgICAgICBpZiBzZWxmLmRvX2NhcHR1cmU6Ci0gICAgICAgICAgICBzZWxm
Lm9yaWdpbmFsX3N0ZGlvID0gKHN5cy5zdGRvdXQsIHN5cy5zdGRlcnIpCi0gICAgICAgICAgICBz
ZWxmLmxvZ2dpbmdfcXVldWUgPSBRdWV1ZSgpCi0gICAgICAgICAgICBzZWxmLmxvZ2dpbmdfdGhy
ZWFkID0gTG9nVGhyZWFkKHNlbGYubG9nZ2luZ19xdWV1ZSwgc2VsZi5sb2dnZXIsICJpbmZvIikK
LSAgICAgICAgICAgIHN5cy5zdGRvdXQgPSBMb2dnaW5nV3JhcHBlcihzZWxmLmxvZ2dpbmdfcXVl
dWUsIHByZWZpeD0iU1RET1VUIikKLSAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBMb2dnaW5nV3Jh
cHBlcihzZWxmLmxvZ2dpbmdfcXVldWUsIHByZWZpeD0iU1RERVJSIikKLSAgICAgICAgICAgIHNl
bGYubG9nZ2luZ190aHJlYWQuc3RhcnQoKQotCi0gICAgZGVmIF9fZXhpdF9fKHNlbGYsICphcmdz
LCAqKmt3YXJncyk6Ci0gICAgICAgIGlmIHNlbGYuZG9fY2FwdHVyZToKLSAgICAgICAgICAgIHN5
cy5zdGRvdXQsIHN5cy5zdGRlcnIgPSBzZWxmLm9yaWdpbmFsX3N0ZGlvCi0gICAgICAgICAgICBp
ZiBzZWxmLmxvZ2dpbmdfcXVldWUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgc2VsZi5s
b2dnZXIuaW5mbygiQ2xvc2luZyBsb2dnaW5nIHF1ZXVlIikKLSAgICAgICAgICAgICAgICBzZWxm
LmxvZ2dpbmdfcXVldWUucHV0KE5vbmUpCi0gICAgICAgICAgICAgICAgaWYgc2VsZi5sb2dnaW5n
X3RocmVhZCBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dnaW5nX3Ro
cmVhZC5qb2luKDEwKQotICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmxvZ2dpbmdfcXVl
dWUuZW1wdHkoKToKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAg
ICAgICAgc2VsZi5sb2dnZXIud2FybmluZygiRHJvcHBpbmcgbG9nIG1lc3NhZ2U6ICVyIiwgc2Vs
Zi5sb2dnaW5nX3F1ZXVlLmdldCgpKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0
aW9uOgotICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIHNlbGYu
bG9nZ2luZ19xdWV1ZS5jbG9zZSgpCi0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygi
cXVldWUgY2xvc2VkIikKK2NsYXNzIExvZ2dlZEFib3ZlTGV2ZWxIYW5kbGVyKG9iamVjdCk6Cisg
ICAgIiIiRmlsdGVyIHRoYXQgcmVjb3JkcyB3aGV0aGVyIGFueSBsb2cgbWVzc2FnZSBhYm92ZSBh
IGNlcnRhaW4gbGV2ZWwgaGFzIGJlZW4KKyAgICBzZWVuLgorCisgICAgOnBhcmFtIG1pbl9sZXZl
bDogTWluaW11bSBsZXZlbCB0byByZWNvcmQgYXMgYSBzdHIgKGUuZy4sICJDUklUSUNBTCIpCisK
KyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbWluX2xldmVsKToKKyAgICAgICAgc2Vs
Zi5taW5fbGV2ZWwgPSBsb2dfbGV2ZWxzW21pbl9sZXZlbC51cHBlcigpXQorICAgICAgICBzZWxm
Lmhhc19sb2cgPSBGYWxzZQorCisgICAgZGVmIF9fY2FsbF9fKHNlbGYsIGRhdGEpOgorICAgICAg
ICBpZiAoZGF0YVsiYWN0aW9uIl0gPT0gImxvZyIgYW5kCisgICAgICAgICAgICBub3Qgc2VsZi5o
YXNfbG9nIGFuZAorICAgICAgICAgICAgbG9nX2xldmVsc1tkYXRhWyJsZXZlbCJdXSA8PSBzZWxm
Lm1pbl9sZXZlbCk6CisgICAgICAgICAgICBzZWxmLmhhc19sb2cgPSBUcnVlCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1
bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvX19pbml0X18ucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
bWFuaWZlc3QvX19pbml0X18ucHkKaW5kZXggODk4NWI1YWUzNTA2N2EyNGZiYzg3ZmRkMmU2MWQ3
Mjc5NDEyMzg5Mi4uZTM1NGQ1ZmY0ZjgyOWQ3OTMwYzBkZTYxYTVlZmU3MTA4MTM3NDYyMSAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L19faW5pdF9fLnB5CisrKyBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC9fX2luaXRfXy5weQpAQCAtMSw1ICsxLDUgQEAKICMgZmxha2U4
OiBub3FhIChub3QgaWRlYWwsIGJ1dCBuaWNlciB0aGFuIGFkZGluZyBub3FhOiBGNDAxIHRvIGV2
ZXJ5IGxpbmUhKQotZnJvbSBzZXJpYWxpemVyIGltcG9ydCBzZXJpYWxpemUKLWZyb20gcGFyc2Vy
IGltcG9ydCBwYXJzZQotZnJvbSBiYWNrZW5kcy5zdGF0aWMgaW1wb3J0IGNvbXBpbGUgYXMgY29t
cGlsZV9zdGF0aWMKLWZyb20gYmFja2VuZHMuY29uZGl0aW9uYWwgaW1wb3J0IGNvbXBpbGUgYXMg
Y29tcGlsZV9jb25kaXRpb24KK2Zyb20gLnNlcmlhbGl6ZXIgaW1wb3J0IHNlcmlhbGl6ZQorZnJv
bSAucGFyc2VyIGltcG9ydCBwYXJzZQorZnJvbSAuYmFja2VuZHMuc3RhdGljIGltcG9ydCBjb21w
aWxlIGFzIGNvbXBpbGVfc3RhdGljCitmcm9tIC5iYWNrZW5kcy5jb25kaXRpb25hbCBpbXBvcnQg
Y29tcGlsZSBhcyBjb21waWxlX2NvbmRpdGlvbgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dw
dG1hbmlmZXN0L2JhY2tlbmRzL19faW5pdF9fLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0
L2JhY2tlbmRzL19faW5pdF9fLnB5CmluZGV4IGE2ODM0YjgyODVhNTZiZWYwZTE1NDNmZDkwMWM3
ZTZmMmY4YmMyMDIuLmU2OWRlMjliYjJkMWQ2NDM0YjhiMjlhZTc3NWFkOGMyZTQ4YzUzOTEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9fX2luaXRfXy5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvYmFja2VuZHMvX19pbml0X18ucHkKQEAgLTEg
KzAsMCBAQAotIyBUaGlzIGZpbGUgaXMgcmVxdWlyZWQgZm9yIFB5dGhvbiB0byBzZWFyY2ggdGhp
cyBkaXJlY3RvcnkgZm9yIG1vZHVsZXMuClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5CmluZGV4
IDRlYjI5MmVmYjc1MDhhMGFhYzcyZjM5MmMxYWYwZTg4ZTA3ZmU1ZmMuLmFhY2Q3ODU3MDcyZjQy
MGEyMDlhZWVmZjU1OWVjMmFlMjk0MTcwYmEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRt
YW5pZmVzdC9iYWNrZW5kcy9jb25kaXRpb25hbC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFu
aWZlc3QvYmFja2VuZHMvY29uZGl0aW9uYWwucHkKQEAgLTEsMTYgKzEsMTggQEAKIGltcG9ydCBv
cGVyYXRvcgogCi1mcm9tIC4ubm9kZSBpbXBvcnQgTm9kZVZpc2l0b3IsIERhdGFOb2RlLCBDb25k
aXRpb25hbE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUsIFZhbHVlTm9kZQorZnJvbSAuLm5v
ZGUgaW1wb3J0IE5vZGVWaXNpdG9yLCBEYXRhTm9kZSwgQ29uZGl0aW9uYWxOb2RlLCBLZXlWYWx1
ZU5vZGUsIExpc3ROb2RlLCBWYWx1ZU5vZGUsIEJpbmFyeUV4cHJlc3Npb25Ob2RlLCBWYXJpYWJs
ZU5vZGUKIGZyb20gLi5wYXJzZXIgaW1wb3J0IHBhcnNlCiAKIAogY2xhc3MgQ29uZGl0aW9uYWxW
YWx1ZShvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBub2RlLCBjb25kaXRpb25fZnVu
Yyk6CiAgICAgICAgIHNlbGYubm9kZSA9IG5vZGUKKyAgICAgICAgYXNzZXJ0IGNhbGxhYmxlKGNv
bmRpdGlvbl9mdW5jKQogICAgICAgICBzZWxmLmNvbmRpdGlvbl9mdW5jID0gY29uZGl0aW9uX2Z1
bmMKICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBDb25kaXRpb25hbE5vZGUpOgogICAgICAg
ICAgICAgYXNzZXJ0IGxlbihub2RlLmNoaWxkcmVuKSA9PSAyCiAgICAgICAgICAgICBzZWxmLmNv
bmRpdGlvbl9ub2RlID0gc2VsZi5ub2RlLmNoaWxkcmVuWzBdCisgICAgICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShub2RlLmNoaWxkcmVuWzFdLCAoVmFsdWVOb2RlLCBMaXN0Tm9kZSkpCiAgICAg
ICAgICAgICBzZWxmLnZhbHVlX25vZGUgPSBzZWxmLm5vZGUuY2hpbGRyZW5bMV0KICAgICAgICAg
ZWxzZToKICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKG5vZGUsIChWYWx1ZU5vZGUsIExp
c3ROb2RlKSkKQEAgLTU5LDYgKzYxLDIwIEBAIGNsYXNzIENvbmRpdGlvbmFsVmFsdWUob2JqZWN0
KToKICAgICAgICAgICAgIHNlbGYubm9kZS5wYXJlbnQucmVtb3ZlKCkKICAgICAgICAgc2VsZi5u
b2RlLnJlbW92ZSgpCiAKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmFyaWFibGVzKHNlbGYpOgor
ICAgICAgICBydiA9IHNldCgpCisgICAgICAgIGlmIHNlbGYuY29uZGl0aW9uX25vZGUgaXMgTm9u
ZToKKyAgICAgICAgICAgIHJldHVybiBydgorICAgICAgICBzdGFjayA9IFtzZWxmLmNvbmRpdGlv
bl9ub2RlXQorICAgICAgICB3aGlsZSBzdGFjazoKKyAgICAgICAgICAgIG5vZGUgPSBzdGFjay5w
b3AoKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCBWYXJpYWJsZU5vZGUpOgorICAg
ICAgICAgICAgICAgIHJ2LmFkZChub2RlLmRhdGEpCisgICAgICAgICAgICBmb3IgY2hpbGQgaW4g
cmV2ZXJzZWQobm9kZS5jaGlsZHJlbik6CisgICAgICAgICAgICAgICAgc3RhY2suYXBwZW5kKGNo
aWxkKQorICAgICAgICByZXR1cm4gcnYKKwogCiBjbGFzcyBDb21waWxlcihOb2RlVmlzaXRvcik6
CiAgICAgZGVmIGNvbXBpbGUoc2VsZiwgdHJlZSwgZGF0YV9jbHNfZ2V0dGVyPU5vbmUsICoqa3dh
cmdzKToKQEAgLTE5MSw2ICsyMDcsNyBAQCBjbGFzcyBDb21waWxlcihOb2RlVmlzaXRvcik6CiAg
ICAgICAgIHJldHVybiB7Im5vdCI6IG9wZXJhdG9yLm5vdF99W25vZGUuZGF0YV0KIAogICAgIGRl
ZiB2aXNpdF9CaW5hcnlPcGVyYXRvck5vZGUoc2VsZiwgbm9kZSk6CisgICAgICAgIGFzc2VydCBp
c2luc3RhbmNlKG5vZGUucGFyZW50LCBCaW5hcnlFeHByZXNzaW9uTm9kZSkKICAgICAgICAgcmV0
dXJuIHsiYW5kIjogb3BlcmF0b3IuYW5kXywKICAgICAgICAgICAgICAgICAib3IiOiBvcGVyYXRv
ci5vcl8sCiAgICAgICAgICAgICAgICAgIj09Ijogb3BlcmF0b3IuZXEsCkBAIC0yMDUsNyArMjIy
LDcgQEAgY2xhc3MgTWFuaWZlc3RJdGVtKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2RhdGEgPSB7
fQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gIjxNYW5pZmVzdEl0
ZW0gJXM+IiAlIChzZWxmLm5vZGUuZGF0YSkKKyAgICAgICAgcmV0dXJuICI8Y29uZGl0aW9uYWwu
TWFuaWZlc3RJdGVtICVzPiIgJSAoc2VsZi5ub2RlLmRhdGEpCiAKICAgICBkZWYgX19zdHJfXyhz
ZWxmKToKICAgICAgICAgcnYgPSBbcmVwcihzZWxmKV0KQEAgLTIxNiw2ICsyMzMsMTIgQEAgY2xh
c3MgTWFuaWZlc3RJdGVtKG9iamVjdCk6CiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkp
OgogICAgICAgICByZXR1cm4ga2V5IGluIHNlbGYuX2RhdGEKIAorICAgIGRlZiBfX2l0ZXJfXyhz
ZWxmKToKKyAgICAgICAgeWllbGQgc2VsZgorICAgICAgICBmb3IgY2hpbGQgaW4gc2VsZi5jaGls
ZHJlbjoKKyAgICAgICAgICAgIGZvciBub2RlIGluIGNoaWxkOgorICAgICAgICAgICAgICAgIHlp
ZWxkIG5vZGUKKwogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpc19lbXB0eShzZWxmKToKICAgICAg
ICAgaWYgc2VsZi5fZGF0YToKQEAgLTI4Miw5ICszMDUsMTIgQEAgY2xhc3MgTWFuaWZlc3RJdGVt
KG9iamVjdCk6CiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB2YWx1ZV9ub2RlID0gVmFsdWVO
b2RlKHVuaWNvZGUodmFsdWUpKQogICAgICAgICBpZiBjb25kaXRpb24gaXMgbm90IE5vbmU6Ci0g
ICAgICAgICAgICBjb25kaXRpb25hbF9ub2RlID0gQ29uZGl0aW9uYWxOb2RlKCkKLSAgICAgICAg
ICAgIGNvbmRpdGlvbmFsX25vZGUuYXBwZW5kKGNvbmRpdGlvbikKLSAgICAgICAgICAgIGNvbmRp
dGlvbmFsX25vZGUuYXBwZW5kKHZhbHVlX25vZGUpCisgICAgICAgICAgICBpZiBub3QgaXNpbnN0
YW5jZShjb25kaXRpb24sIENvbmRpdGlvbmFsTm9kZSk6CisgICAgICAgICAgICAgICAgY29uZGl0
aW9uYWxfbm9kZSA9IENvbmRpdGlvbmFsTm9kZSgpCisgICAgICAgICAgICAgICAgY29uZGl0aW9u
YWxfbm9kZS5hcHBlbmQoY29uZGl0aW9uKQorICAgICAgICAgICAgICAgIGNvbmRpdGlvbmFsX25v
ZGUuYXBwZW5kKHZhbHVlX25vZGUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
IGNvbmRpdGlvbmFsX25vZGUgPSBjb25kaXRpb24KICAgICAgICAgICAgIG5vZGUuYXBwZW5kKGNv
bmRpdGlvbmFsX25vZGUpCiAgICAgICAgICAgICBjb25kX3ZhbHVlID0gQ29tcGlsZXIoKS5jb21w
aWxlX2NvbmRpdGlvbihjb25kaXRpb25hbF9ub2RlKQogICAgICAgICBlbHNlOgpAQCAtMzAwLDYg
KzMyNiwyMSBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0ob2JqZWN0KToKICAgICAgICAgZWxzZToKICAg
ICAgICAgICAgIHNlbGYuX2RhdGFba2V5XS5hcHBlbmQoY29uZF92YWx1ZSkKIAorICAgIGRlZiBj
bGVhcihzZWxmLCBrZXkpOgorICAgICAgICAiIiJDbGVhciBhbGwgdGhlIGV4cGVjdGVkIGRhdGEg
Zm9yIHRoaXMgbm9kZSIiIgorICAgICAgICBpZiBrZXkgaW4gc2VsZi5fZGF0YToKKyAgICAgICAg
ICAgIGZvciBjaGlsZCBpbiBzZWxmLm5vZGUuY2hpbGRyZW46CisgICAgICAgICAgICAgICAgaWYg
KGlzaW5zdGFuY2UoY2hpbGQsIEtleVZhbHVlTm9kZSkgYW5kCisgICAgICAgICAgICAgICAgICAg
IGNoaWxkLmRhdGEgPT0ga2V5KToKKyAgICAgICAgICAgICAgICAgICAgY2hpbGQucmVtb3ZlKCkK
KyAgICAgICAgICAgICAgICAgICAgZGVsIHNlbGYuX2RhdGFba2V5XQorICAgICAgICAgICAgICAg
ICAgICBicmVhaworCisgICAgZGVmIGdldF9jb25kaXRpb25zKHNlbGYsIHByb3BlcnR5X25hbWUp
OgorICAgICAgICBpZiBwcm9wZXJ0eV9uYW1lIGluIHNlbGYuX2RhdGE6CisgICAgICAgICAgICBy
ZXR1cm4gc2VsZi5fZGF0YVtwcm9wZXJ0eV9uYW1lXQorICAgICAgICByZXR1cm4gW10KKwogICAg
IGRlZiBfYWRkX2tleV92YWx1ZShzZWxmLCBub2RlLCB2YWx1ZXMpOgogICAgICAgICAiIiJDYWxs
ZWQgZHVyaW5nIGNvbnN0cnVjdGlvbiB0byBzZXQgYSBrZXktdmFsdWUgbm9kZSIiIgogICAgICAg
ICBzZWxmLl9kYXRhW25vZGUuZGF0YV0gPSB2YWx1ZXMKQEAgLTMxOCw2ICszNTksNyBAQCBjbGFz
cyBNYW5pZmVzdEl0ZW0ob2JqZWN0KToKICAgICBkZWYgX3JlbW92ZV9jaGlsZChzZWxmLCBjaGls
ZCk6CiAgICAgICAgIHNlbGYuY2hpbGRyZW4ucmVtb3ZlKGNoaWxkKQogICAgICAgICBjaGlsZC5w
YXJlbnQgPSBOb25lCisgICAgICAgIGNoaWxkLm5vZGUucmVtb3ZlKCkKIAogICAgIGRlZiBpdGVy
Y2hpbGRyZW4oc2VsZiwgbmFtZT1Ob25lKToKICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5jaGls
ZHJlbjoKQEAgLTM0MSw2ICszODMsOCBAQCBjbGFzcyBNYW5pZmVzdEl0ZW0ob2JqZWN0KToKICAg
ICAgICAgICAgIHlpZWxkIGl0ZW0KIAogICAgIGRlZiByZW1vdmVfdmFsdWUoc2VsZiwga2V5LCB2
YWx1ZSk6CisgICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi5fZGF0YToKKyAgICAgICAgICAgIHJl
dHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLl9kYXRhW2tleV0ucmVtb3ZlKHZh
bHVlKQogICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5l
ci93cHRtYW5pZmVzdC9iYWNrZW5kcy9zdGF0aWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZl
c3QvYmFja2VuZHMvc3RhdGljLnB5CmluZGV4IGIzY2JlZGMzODE4ZWU4ZjA0ZmI2OWQ5MDlmMmQ4
ZDE5YzNhNWY1OTQuLjZlZmFkMWMwZTQ3YjExNGI1MTI1OWJiMzY5YTRhZDE1OTcxMjY4ZDcgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9iYWNrZW5kcy9zdGF0aWMucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL3N0YXRpYy5weQpAQCAtMSwxMCAr
MSwxMCBAQAogaW1wb3J0IG9wZXJhdG9yCiAKLWZyb20gLi5ub2RlIGltcG9ydCBOb2RlVmlzaXRv
cgorZnJvbSAuIGltcG9ydCBiYXNlCiBmcm9tIC4ucGFyc2VyIGltcG9ydCBwYXJzZQogCiAKLWNs
YXNzIENvbXBpbGVyKE5vZGVWaXNpdG9yKToKK2NsYXNzIENvbXBpbGVyKGJhc2UuQ29tcGlsZXIp
OgogICAgICIiIkNvbXBpbGVyIGJhY2tlbmQgdGhhdCBldmFsdWF0ZXMgY29uZGl0aW9uYWwgZXhw
cmVzc2lvbnMKICAgICB0byBnaXZlIHN0YXRpYyBvdXRwdXQiIiIKIApAQCAtMjYsMjkgKzI2LDcg
QEAgY2xhc3MgQ29tcGlsZXIoTm9kZVZpc2l0b3IpOgogICAgICAgICBzZWxmLl9rd2FyZ3MgPSBr
d2FyZ3MKICAgICAgICAgc2VsZi5leHByX2RhdGEgPSBleHByX2RhdGEKIAotICAgICAgICBpZiBk
YXRhX2Nsc19nZXR0ZXIgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuZGF0YV9jbHNfZ2V0dGVy
ID0gbGFtYmRhIHgsIHk6IE1hbmlmZXN0SXRlbQotICAgICAgICBlbHNlOgotICAgICAgICAgICAg
c2VsZi5kYXRhX2Nsc19nZXR0ZXIgPSBkYXRhX2Nsc19nZXR0ZXIKLQotICAgICAgICBzZWxmLm91
dHB1dF9ub2RlID0gTm9uZQotICAgICAgICBzZWxmLnZpc2l0KHRyZWUpCi0gICAgICAgIHJldHVy
biBzZWxmLm91dHB1dF9ub2RlCi0KLSAgICBkZWYgdmlzaXRfRGF0YU5vZGUoc2VsZiwgbm9kZSk6
Ci0gICAgICAgIG91dHB1dF9wYXJlbnQgPSBzZWxmLm91dHB1dF9ub2RlCi0gICAgICAgIGlmIHNl
bGYub3V0cHV0X25vZGUgaXMgTm9uZToKLSAgICAgICAgICAgIGFzc2VydCBub2RlLnBhcmVudCBp
cyBOb25lCi0gICAgICAgICAgICBzZWxmLm91dHB1dF9ub2RlID0gc2VsZi5kYXRhX2Nsc19nZXR0
ZXIoTm9uZSwgTm9uZSkoTm9uZSwgKipzZWxmLl9rd2FyZ3MpCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzZWxmLm91dHB1dF9ub2RlID0gc2VsZi5kYXRhX2Nsc19nZXR0ZXIoc2VsZi5vdXRw
dXRfbm9kZSwgbm9kZSkobm9kZS5kYXRhKQotCi0gICAgICAgIGZvciBjaGlsZCBpbiBub2RlLmNo
aWxkcmVuOgotICAgICAgICAgICAgc2VsZi52aXNpdChjaGlsZCkKLQotICAgICAgICBpZiBvdXRw
dXRfcGFyZW50IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgb3V0cHV0X3BhcmVudC5hcHBlbmQo
c2VsZi5vdXRwdXRfbm9kZSkKLSAgICAgICAgICAgIHNlbGYub3V0cHV0X25vZGUgPSBzZWxmLm91
dHB1dF9ub2RlLnBhcmVudAorICAgICAgICByZXR1cm4gc2VsZi5fY29tcGlsZSh0cmVlLCBkYXRh
X2Nsc19nZXR0ZXIsICoqa3dhcmdzKQogCiAgICAgZGVmIHZpc2l0X0tleVZhbHVlTm9kZShzZWxm
LCBub2RlKToKICAgICAgICAga2V5X25hbWUgPSBub2RlLmRhdGEKQEAgLTYxLDE1ICszOSw2IEBA
IGNsYXNzIENvbXBpbGVyKE5vZGVWaXNpdG9yKToKICAgICAgICAgaWYga2V5X3ZhbHVlIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgc2VsZi5vdXRwdXRfbm9kZS5zZXQoa2V5X25hbWUsIGtleV92
YWx1ZSkKIAotICAgIGRlZiB2aXNpdF9WYWx1ZU5vZGUoc2VsZiwgbm9kZSk6Ci0gICAgICAgIHJl
dHVybiBub2RlLmRhdGEKLQotICAgIGRlZiB2aXNpdF9BdG9tTm9kZShzZWxmLCBub2RlKToKLSAg
ICAgICAgcmV0dXJuIG5vZGUuZGF0YQotCi0gICAgZGVmIHZpc2l0X0xpc3ROb2RlKHNlbGYsIG5v
ZGUpOgotICAgICAgICByZXR1cm4gW3NlbGYudmlzaXQoY2hpbGQpIGZvciBjaGlsZCBpbiBub2Rl
LmNoaWxkcmVuXQotCiAgICAgZGVmIHZpc2l0X0NvbmRpdGlvbmFsTm9kZShzZWxmLCBub2RlKToK
ICAgICAgICAgYXNzZXJ0IGxlbihub2RlLmNoaWxkcmVuKSA9PSAyCiAgICAgICAgIGlmIHNlbGYu
dmlzaXQobm9kZS5jaGlsZHJlblswXSk6CkBAIC04MSwxMiArNTAsNiBAQCBjbGFzcyBDb21waWxl
cihOb2RlVmlzaXRvcik6CiAgICAgICAgICAgICB2YWx1ZSA9IHNlbGYudmlzaXQoY2hpbGQpKHZh
bHVlKQogICAgICAgICByZXR1cm4gdmFsdWUKIAotICAgIGRlZiB2aXNpdF9OdW1iZXJOb2RlKHNl
bGYsIG5vZGUpOgotICAgICAgICBpZiAiLiIgaW4gbm9kZS5kYXRhOgotICAgICAgICAgICAgcmV0
dXJuIGZsb2F0KG5vZGUuZGF0YSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBp
bnQobm9kZS5kYXRhKQotCiAgICAgZGVmIHZpc2l0X1ZhcmlhYmxlTm9kZShzZWxmLCBub2RlKToK
ICAgICAgICAgdmFsdWUgPSBzZWxmLmV4cHJfZGF0YVtub2RlLmRhdGFdCiAgICAgICAgIGZvciBj
aGlsZCBpbiBub2RlLmNoaWxkcmVuOgpAQCAtMTIzLDkyICs4Niw2IEBAIGNsYXNzIENvbXBpbGVy
KE5vZGVWaXNpdG9yKToKICAgICAgICAgICAgICAgICAiIT0iOiBvcGVyYXRvci5uZX1bbm9kZS5k
YXRhXQogCiAKLWNsYXNzIE1hbmlmZXN0SXRlbShvYmplY3QpOgotICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBuYW1lLCAqKmt3YXJncyk6Ci0gICAgICAgIHNlbGYucGFyZW50ID0gTm9uZQotICAgICAg
ICBzZWxmLm5hbWUgPSBuYW1lCi0gICAgICAgIHNlbGYuY2hpbGRyZW4gPSBbXQotICAgICAgICBz
ZWxmLl9kYXRhID0ge30KLQotICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJu
ICI8TWFuaWZlc3RJdGVtICVzPiIgJSAoc2VsZi5uYW1lKQotCi0gICAgZGVmIF9fc3RyX18oc2Vs
Zik6Ci0gICAgICAgIHJ2ID0gW3JlcHIoc2VsZildCi0gICAgICAgIGZvciBpdGVtIGluIHNlbGYu
Y2hpbGRyZW46Ci0gICAgICAgICAgICBydi5leHRlbmQoIiAgJXMiICUgbGluZSBmb3IgbGluZSBp
biBzdHIoaXRlbSkuc3BsaXQoIlxuIikpCi0gICAgICAgIHJldHVybiAiXG4iLmpvaW4ocnYpCi0K
LSAgICBkZWYgc2V0X2RlZmF1bHRzKHNlbGYpOgotICAgICAgICBwYXNzCi0KLSAgICBAcHJvcGVy
dHkKLSAgICBkZWYgaXNfZW1wdHkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuX2RhdGE6Ci0gICAg
ICAgICAgICByZXR1cm4gRmFsc2UKLSAgICAgICAgcmV0dXJuIGFsbChjaGlsZC5pc19lbXB0eSBm
b3IgY2hpbGQgaW4gc2VsZi5jaGlsZHJlbikKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiByb290
KHNlbGYpOgotICAgICAgICBub2RlID0gc2VsZgotICAgICAgICB3aGlsZSBub2RlLnBhcmVudCBp
cyBub3QgTm9uZToKLSAgICAgICAgICAgIG5vZGUgPSBub2RlLnBhcmVudAotICAgICAgICByZXR1
cm4gbm9kZQotCi0gICAgZGVmIGhhc19rZXkoc2VsZiwga2V5KToKLSAgICAgICAgZm9yIG5vZGUg
aW4gW3NlbGYsIHNlbGYucm9vdF06Ci0gICAgICAgICAgICBpZiBrZXkgaW4gbm9kZS5fZGF0YToK
LSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKLQotICAg
IGRlZiBnZXQoc2VsZiwga2V5KToKLSAgICAgICAgZm9yIG5vZGUgaW4gW3NlbGYsIHNlbGYucm9v
dF06Ci0gICAgICAgICAgICBpZiBrZXkgaW4gbm9kZS5fZGF0YToKLSAgICAgICAgICAgICAgICBy
ZXR1cm4gbm9kZS5fZGF0YVtrZXldCi0gICAgICAgIHJhaXNlIEtleUVycm9yCi0KLSAgICBkZWYg
c2V0KHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgc2VsZi5fZGF0YVtuYW1lXSA9IHZhbHVl
Ci0KLSAgICBkZWYgcmVtb3ZlKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnBhcmVudDoKLSAgICAg
ICAgICAgIHNlbGYucGFyZW50Ll9yZW1vdmVfY2hpbGQoc2VsZikKLQotICAgIGRlZiBfcmVtb3Zl
X2NoaWxkKHNlbGYsIGNoaWxkKToKLSAgICAgICAgc2VsZi5jaGlsZHJlbi5yZW1vdmUoY2hpbGQp
Ci0gICAgICAgIGNoaWxkLnBhcmVudCA9IE5vbmUKLQotICAgIGRlZiBpdGVyY2hpbGRyZW4oc2Vs
ZiwgbmFtZT1Ob25lKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5jaGlsZHJlbjoKLSAgICAg
ICAgICAgIGlmIGl0ZW0ubmFtZSA9PSBuYW1lIG9yIG5hbWUgaXMgTm9uZToKLSAgICAgICAgICAg
ICAgICB5aWVsZCBpdGVtCi0KLSAgICBkZWYgX2ZsYXR0ZW4oc2VsZik6Ci0gICAgICAgIHJ2ID0g
e30KLSAgICAgICAgZm9yIG5vZGUgaW4gW3NlbGYsIHNlbGYucm9vdF06Ci0gICAgICAgICAgICBm
b3IgbmFtZSwgdmFsdWUgaW4gbm9kZS5fZGF0YS5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgICAg
ICBpZiBuYW1lIG5vdCBpbiBydjoKLSAgICAgICAgICAgICAgICAgICAgcnZbbmFtZV0gPSB2YWx1
ZQotICAgICAgICByZXR1cm4gcnYKLQotICAgIGRlZiBpdGVyaXRlbXMoc2VsZik6Ci0gICAgICAg
IGZvciBpdGVtIGluIHNlbGYuX2ZsYXR0ZW4oKS5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIHlp
ZWxkIGl0ZW0KLQotICAgIGRlZiBpdGVya2V5cyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4g
c2VsZi5fZmxhdHRlbigpLml0ZXJrZXlzKCk6Ci0gICAgICAgICAgICB5aWVsZCBpdGVtCi0KLSAg
ICBkZWYgaXRlcnZhbHVlcyhzZWxmKToKLSAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5fZmxhdHRl
bigpLml0ZXJ2YWx1ZXMoKToKLSAgICAgICAgICAgIHlpZWxkIGl0ZW0KLQotICAgIGRlZiBhcHBl
bmQoc2VsZiwgY2hpbGQpOgotICAgICAgICBjaGlsZC5wYXJlbnQgPSBzZWxmCi0gICAgICAgIHNl
bGYuY2hpbGRyZW4uYXBwZW5kKGNoaWxkKQotICAgICAgICByZXR1cm4gY2hpbGQKLQotCiBkZWYg
Y29tcGlsZV9hc3QoYXN0LCBleHByX2RhdGEsIGRhdGFfY2xzX2dldHRlcj1Ob25lLCAqKmt3YXJn
cyk6CiAgICAgcmV0dXJuIENvbXBpbGVyKCkuY29tcGlsZShhc3QsCiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBleHByX2RhdGEsCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFu
aWZlc3QvYmFja2VuZHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
YmFja2VuZHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdm
NGUxZGEzZTNhMGZhYmVhOGQyMzJkOTk5NmI1MjRjYTI2OTU4ZDUuLjAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2Jh
Y2tlbmRzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL19faW5pdF9fLnB5Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL2NvbmRpdGlvbmFsLnB5Ci0vTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L2JhY2tlbmRzL3N0YXRpYy5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVu
bmVyL3dwdG1hbmlmZXN0L25vZGUucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9kZS5w
eQppbmRleCAzM2U5Nzk2YzQzMGMzM2FhMDMyODU1OWYxMjA3OWYyMjExODBkNjc5Li4yMDA2MDVj
MDVhYTRhYjNhNzdkYzlkYjE5YjE2OGQ3YWRlNzM5OGJlIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3Qvbm9kZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qvbm9k
ZS5weQpAQCAtNTgsNyArNTgsOCBAQCBjbGFzcyBEYXRhTm9kZShOb2RlKToKICAgICAgICAgICAg
IHdoaWxlIGluZGV4ID4gMCBhbmQgaXNpbnN0YW5jZShzZWxmLmNoaWxkcmVuW2luZGV4IC0gMV0s
IERhdGFOb2RlKToKICAgICAgICAgICAgICAgICBpbmRleCAtPSAxCiAgICAgICAgICAgICBmb3Ig
aSBpbiB4cmFuZ2UoaW5kZXgpOgotICAgICAgICAgICAgICAgIGFzc2VydCBvdGhlci5kYXRhICE9
IHNlbGYuY2hpbGRyZW5baV0uZGF0YQorICAgICAgICAgICAgICAgIGlmIG90aGVyLmRhdGEgPT0g
c2VsZi5jaGlsZHJlbltpXS5kYXRhOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVy
cm9yKCJEdXBsaWNhdGUga2V5ICVzIiAlIHNlbGYuY2hpbGRyZW5baV0uZGF0YSkKICAgICAgICAg
ICAgIHNlbGYuY2hpbGRyZW4uaW5zZXJ0KGluZGV4LCBvdGhlcikKIAogCkBAIC02Nyw5ICs2OCwx
MSBAQCBjbGFzcyBLZXlWYWx1ZU5vZGUoTm9kZSk6CiAgICAgICAgICMgQXBwZW5kIHRoYXQgcmV0
YWlucyB0aGUgaW52YXJpYW50IHRoYXQgY29uZGl0aW9uYWwgbm9kZXMKICAgICAgICAgIyBjb21l
IGJlZm9yZSB1bmNvbmRpdGlvbmFsIG5vZGVzCiAgICAgICAgIG90aGVyLnBhcmVudCA9IHNlbGYK
LSAgICAgICAgaWYgaXNpbnN0YW5jZShvdGhlciwgVmFsdWVOb2RlKToKKyAgICAgICAgaWYgbm90
IGlzaW5zdGFuY2Uob3RoZXIsIChMaXN0Tm9kZSwgVmFsdWVOb2RlLCBDb25kaXRpb25hbE5vZGUp
KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcgorICAgICAgICBpZiBpc2luc3RhbmNlKG90
aGVyLCAoTGlzdE5vZGUsIFZhbHVlTm9kZSkpOgogICAgICAgICAgICAgaWYgc2VsZi5jaGlsZHJl
bjoKLSAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc2VsZi5jaGlsZHJlblst
MV0sIFZhbHVlTm9kZSkKKyAgICAgICAgICAgICAgICBhc3NlcnQgbm90IGlzaW5zdGFuY2Uoc2Vs
Zi5jaGlsZHJlblstMV0sIChMaXN0Tm9kZSwgVmFsdWVOb2RlKSkKICAgICAgICAgICAgIHNlbGYu
Y2hpbGRyZW4uYXBwZW5kKG90aGVyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgaWYgc2Vs
Zi5jaGlsZHJlbiBhbmQgaXNpbnN0YW5jZShzZWxmLmNoaWxkcmVuWy0xXSwgVmFsdWVOb2RlKToK
QEAgLTk0LDcgKzk3LDE3IEBAIGNsYXNzIEF0b21Ob2RlKFZhbHVlTm9kZSk6CiAKIAogY2xhc3Mg
Q29uZGl0aW9uYWxOb2RlKE5vZGUpOgotICAgIHBhc3MKKyAgICBkZWYgYXBwZW5kKHNlbGYsIG90
aGVyKToKKyAgICAgICAgaWYgbm90IGxlbihzZWxmLmNoaWxkcmVuKToKKyAgICAgICAgICAgIGlm
IG5vdCBpc2luc3RhbmNlKG90aGVyLCAoQmluYXJ5RXhwcmVzc2lvbk5vZGUsIFVuYXJ5RXhwcmVz
c2lvbk5vZGUsIFZhcmlhYmxlTm9kZSkpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJv
cgorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYgbGVuKHNlbGYuY2hpbGRyZW4pID4gMToK
KyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCisgICAgICAgICAgICBpZiBub3QgaXNp
bnN0YW5jZShvdGhlciwgKExpc3ROb2RlLCBWYWx1ZU5vZGUpKToKKyAgICAgICAgICAgICAgICBy
YWlzZSBUeXBlRXJyb3IKKyAgICAgICAgb3RoZXIucGFyZW50ID0gc2VsZgorICAgICAgICBzZWxm
LmNoaWxkcmVuLmFwcGVuZChvdGhlcikKIAogCiBjbGFzcyBVbmFyeUV4cHJlc3Npb25Ob2RlKE5v
ZGUpOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3BhcnNlci5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93cHRtYW5pZmVzdC9wYXJzZXIucHkKaW5kZXggODJhYWQ1ZjYxMzUwNzk1ZWI5
ZTgwN2NhMzMwMTU3NjJlMWE5ZjU4MS4uODMzZTBiOGVkMWE2YjYzZTU5NTRjODBkNzdiMTAyYjhi
MjIwY2ZhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3BhcnNlci5weQor
KysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvcGFyc2VyLnB5CkBAIC0xNCwxMiArMTQsMTIg
QEAKIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCiAKLWZyb20gY1N0
cmluZ0lPIGltcG9ydCBTdHJpbmdJTworZnJvbSBzaXggaW1wb3J0IGJpbmFyeV90eXBlLCB0ZXh0
X3R5cGUsIEJ5dGVzSU8KIAotZnJvbSBub2RlIGltcG9ydCAoQXRvbU5vZGUsIEJpbmFyeUV4cHJl
c3Npb25Ob2RlLCBCaW5hcnlPcGVyYXRvck5vZGUsCi0gICAgICAgICAgICAgICAgICBDb25kaXRp
b25hbE5vZGUsIERhdGFOb2RlLCBJbmRleE5vZGUsIEtleVZhbHVlTm9kZSwgTGlzdE5vZGUsCi0g
ICAgICAgICAgICAgICAgICBOdW1iZXJOb2RlLCBTdHJpbmdOb2RlLCBVbmFyeUV4cHJlc3Npb25O
b2RlLAotICAgICAgICAgICAgICAgICAgVW5hcnlPcGVyYXRvck5vZGUsIFZhbHVlTm9kZSwgVmFy
aWFibGVOb2RlKQorZnJvbSAubm9kZSBpbXBvcnQgKE5vZGUsIEF0b21Ob2RlLCBCaW5hcnlFeHBy
ZXNzaW9uTm9kZSwgQmluYXJ5T3BlcmF0b3JOb2RlLAorICAgICAgICAgICAgICAgICAgIENvbmRp
dGlvbmFsTm9kZSwgRGF0YU5vZGUsIEluZGV4Tm9kZSwgS2V5VmFsdWVOb2RlLCBMaXN0Tm9kZSwK
KyAgICAgICAgICAgICAgICAgICBOdW1iZXJOb2RlLCBTdHJpbmdOb2RlLCBVbmFyeUV4cHJlc3Np
b25Ob2RlLAorICAgICAgICAgICAgICAgICAgIFVuYXJ5T3BlcmF0b3JOb2RlLCBWYWx1ZU5vZGUs
IFZhcmlhYmxlTm9kZSkKIAogCiBjbGFzcyBQYXJzZUVycm9yKEV4Y2VwdGlvbik6CkBAIC00OSw3
ICs0OSw3IEBAIGF0b21zID0geyJUcnVlIjogVHJ1ZSwKICAgICAgICAgICJSZXNldCI6IG9iamVj
dCgpfQogCiBkZWYgZGVjb2RlKHMpOgotICAgIGFzc2VydCBpc2luc3RhbmNlKHMsIHVuaWNvZGUp
CisgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgdGV4dF90eXBlKQogICAgIHJldHVybiBzCiAKIApA
QCAtNzcsOSArNzcsOSBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToKIAogICAgIGRlZiB0b2tl
bml6ZShzZWxmLCBzdHJlYW0pOgogICAgICAgICBzZWxmLnJlc2V0KCkKLSAgICAgICAgYXNzZXJ0
IG5vdCBpc2luc3RhbmNlKHN0cmVhbSwgdW5pY29kZSkKLSAgICAgICAgaWYgaXNpbnN0YW5jZShz
dHJlYW0sIHN0cik6Ci0gICAgICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTyhzdHJlYW0pCisgICAg
ICAgIGFzc2VydCBub3QgaXNpbnN0YW5jZShzdHJlYW0sIHRleHRfdHlwZSkKKyAgICAgICAgaWYg
aXNpbnN0YW5jZShzdHJlYW0sIGJ5dGVzKToKKyAgICAgICAgICAgIHN0cmVhbSA9IEJ5dGVzSU8o
c3RyZWFtKQogICAgICAgICBpZiBub3QgaGFzYXR0cihzdHJlYW0sICJuYW1lIik6CiAgICAgICAg
ICAgICBzZWxmLmZpbGVuYW1lID0gIiIKICAgICAgICAgZWxzZToKQEAgLTg3LDcgKzg3LDcgQEAg
Y2xhc3MgVG9rZW5pemVyKG9iamVjdCk6CiAKICAgICAgICAgc2VsZi5uZXh0X2xpbmVfc3RhdGUg
PSBzZWxmLmxpbmVfc3RhcnRfc3RhdGUKICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRl
KHN0cmVhbSk6Ci0gICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lLCBzdHIpCisgICAg
ICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShsaW5lLCBiaW5hcnlfdHlwZSkKICAgICAgICAgICAg
IHNlbGYuc3RhdGUgPSBzZWxmLm5leHRfbGluZV9zdGF0ZQogICAgICAgICAgICAgYXNzZXJ0IHNl
bGYuc3RhdGUgaXMgbm90IE5vbmUKICAgICAgICAgICAgIHN0YXRlcyA9IFtdCkBAIC05NSw3ICs5
NSw3IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICAgICAgc2VsZi5saW5lX251
bWJlciA9IGkgKyAxCiAgICAgICAgICAgICBzZWxmLmluZGV4ID0gMAogICAgICAgICAgICAgc2Vs
Zi5saW5lID0gbGluZS5kZWNvZGUoJ3V0Zi04JykucnN0cmlwKCkKLSAgICAgICAgICAgIGFzc2Vy
dCBpc2luc3RhbmNlKHNlbGYubGluZSwgdW5pY29kZSkKKyAgICAgICAgICAgIGFzc2VydCBpc2lu
c3RhbmNlKHNlbGYubGluZSwgdGV4dF90eXBlKQogICAgICAgICAgICAgd2hpbGUgc2VsZi5zdGF0
ZSAhPSBzZWxmLmVvbF9zdGF0ZToKICAgICAgICAgICAgICAgICBzdGF0ZXMuYXBwZW5kKHNlbGYu
c3RhdGUpCiAgICAgICAgICAgICAgICAgdG9rZW5zID0gc2VsZi5zdGF0ZSgpCkBAIC0zMzksNyAr
MzM5LDE0IEBAIGNsYXNzIFRva2VuaXplcihvYmplY3QpOgogICAgICAgICAgICAgICAgIHNwYWNl
cyA9IDAKICAgICAgICAgICAgICAgICBydiArPSBjCiAgICAgICAgICAgICAgICAgc2VsZi5jb25z
dW1lKCkKLSAgICAgICAgeWllbGQgKHRva2VuX3R5cGVzLnN0cmluZywgZGVjb2RlKHJ2KSkKKyAg
ICAgICAgcnYgPSBkZWNvZGUocnYpCisgICAgICAgIGlmIHJ2LnN0YXJ0c3dpdGgoImlmICIpOgor
ICAgICAgICAgICAgIyBIYWNrIHRvIGF2b2lkIGEgcHJvYmxlbSB3aGVyZSBwZW9wbGUgd3JpdGUK
KyAgICAgICAgICAgICMgZGlzYWJsZWQ6IGlmIGZvbworICAgICAgICAgICAgIyBhbmQgZXhwZWN0
IHRoYXQgdG8gZGlzYWJsZSBjb25kaXRpb25hbGx5CisgICAgICAgICAgICByYWlzZSBQYXJzZUVy
cm9yKHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZV9udW1iZXIsICJTdHJpbmdzIHN0YXJ0aW5nICdp
ZiAnIG11c3QgYmUgcXVvdGVkICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIihleHBy
ZXNzaW9ucyBtdXN0IHN0YXJ0IG9uIGEgbmV3bGluZSBhbmQgYmUgaW5kZW50ZWQpIikKKyAgICAg
ICAgeWllbGQgKHRva2VuX3R5cGVzLnN0cmluZywgcnYpCiAKICAgICBkZWYgY29tbWVudF9zdGF0
ZShzZWxmKToKICAgICAgICAgd2hpbGUgc2VsZi5jaGFyKCkgaXMgbm90IGVvbDoKQEAgLTQ3OCw3
ICs0ODUsNyBAQCBjbGFzcyBUb2tlbml6ZXIob2JqZWN0KToKICAgICAgICAgZWxpZiBjID09ICJV
IjoKICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlY29kZV9lc2NhcGUoNikKICAgICAgICAgZWxp
ZiBjIGluIFsiYSIsICJiIiwgImYiLCAibiIsICJyIiwgInQiLCAidiJdOgotICAgICAgICAgICAg
cmV0dXJuIGV2YWwoIidcJXMnIiAlIGMpCisgICAgICAgICAgICByZXR1cm4gZXZhbChyIidcJXMn
IiAlIGMpCiAgICAgICAgIGVsaWYgYyBpcyBlb2w6CiAgICAgICAgICAgICByYWlzZSBQYXJzZUVy
cm9yKHNlbGYuZmlsZW5hbWUsIHNlbGYubGluZV9udW1iZXIsICJFT0wgaW4gZXNjYXBlIikKICAg
ICAgICAgZWxzZToKQEAgLTUyMCwyMSArNTI3LDMwIEBAIGNsYXNzIFBhcnNlcihvYmplY3QpOgog
ICAgICAgICBzZWxmLmV4cHJfYnVpbGRlcnMgPSBbXQogCiAgICAgZGVmIHBhcnNlKHNlbGYsIGlu
cHV0KToKLSAgICAgICAgc2VsZi5yZXNldCgpCi0gICAgICAgIHNlbGYudG9rZW5fZ2VuZXJhdG9y
ID0gc2VsZi50b2tlbml6ZXIudG9rZW5pemUoaW5wdXQpCi0gICAgICAgIHNlbGYuY29uc3VtZSgp
Ci0gICAgICAgIHNlbGYubWFuaWZlc3QoKQotICAgICAgICByZXR1cm4gc2VsZi50cmVlLm5vZGUK
KyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5yZXNldCgpCisgICAgICAgICAgICBzZWxm
LnRva2VuX2dlbmVyYXRvciA9IHNlbGYudG9rZW5pemVyLnRva2VuaXplKGlucHV0KQorICAgICAg
ICAgICAgc2VsZi5jb25zdW1lKCkKKyAgICAgICAgICAgIHNlbGYubWFuaWZlc3QoKQorICAgICAg
ICAgICAgcmV0dXJuIHNlbGYudHJlZS5ub2RlCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMg
ZToKKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKGUsIFBhcnNlRXJyb3IpOgorICAgICAg
ICAgICAgICAgIHJhaXNlIFBhcnNlRXJyb3Ioc2VsZi50b2tlbml6ZXIuZmlsZW5hbWUsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuaXplci5saW5lX251bWJlciwK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlKSkKKyAgICAgICAgICAgIHJh
aXNlCiAKICAgICBkZWYgY29uc3VtZShzZWxmKToKICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYu
dG9rZW5fZ2VuZXJhdG9yLm5leHQoKQogCiAgICAgZGVmIGV4cGVjdChzZWxmLCB0eXBlLCB2YWx1
ZT1Ob25lKToKICAgICAgICAgaWYgc2VsZi50b2tlblswXSAhPSB0eXBlOgotICAgICAgICAgICAg
cmFpc2UgUGFyc2VFcnJvcgorICAgICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihzZWxmLnRva2Vu
aXplci5maWxlbmFtZSwgc2VsZi50b2tlbml6ZXIubGluZV9udW1iZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUb2tlbiAne30nIGRvZXNuJ3QgZXF1YWwgZXhwZWN0ZWQgdHlwZSAn
e30nIi5mb3JtYXQoc2VsZi50b2tlblswXSwgdHlwZSkpCiAgICAgICAgIGlmIHZhbHVlIGlzIG5v
dCBOb25lOgogICAgICAgICAgICAgaWYgc2VsZi50b2tlblsxXSAhPSB2YWx1ZToKLSAgICAgICAg
ICAgICAgICByYWlzZSBQYXJzZUVycm9yCisgICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFcnJv
cihzZWxmLnRva2VuaXplci5maWxlbmFtZSwgc2VsZi50b2tlbml6ZXIubGluZV9udW1iZXIsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVG9rZW4gJ3t9JyBkb2Vzbid0IGVxdWFs
IGV4cGVjdGVkIHZhbHVlICd7fSciLmZvcm1hdChzZWxmLnRva2VuWzFdLCB2YWx1ZSkpCiAKICAg
ICAgICAgc2VsZi5jb25zdW1lKCkKIApAQCAtNTUzLDcgKzU2OSw4IEBAIGNsYXNzIFBhcnNlcihv
YmplY3QpOgogICAgICAgICB3aGlsZSBzZWxmLnRva2VuID09ICh0b2tlbl90eXBlcy5wYXJlbiwg
IlsiKToKICAgICAgICAgICAgIHNlbGYuY29uc3VtZSgpCiAgICAgICAgICAgICBpZiBzZWxmLnRv
a2VuWzBdICE9IHRva2VuX3R5cGVzLnN0cmluZzoKLSAgICAgICAgICAgICAgICByYWlzZSBQYXJz
ZUVycm9yCisgICAgICAgICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihzZWxmLnRva2VuaXplci5m
aWxlbmFtZSwgc2VsZi50b2tlbml6ZXIubGluZV9udW1iZXIsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAiVG9rZW4gJ3t9JyBpcyBub3QgYSBzdHJpbmciLmZvcm1hdChzZWxmLnRv
a2VuWzBdKSkKICAgICAgICAgICAgIHNlbGYudHJlZS5hcHBlbmQoRGF0YU5vZGUoc2VsZi50b2tl
blsxXSkpCiAgICAgICAgICAgICBzZWxmLmNvbnN1bWUoKQogICAgICAgICAgICAgc2VsZi5leHBl
Y3QodG9rZW5fdHlwZXMucGFyZW4sICJdIikKQEAgLTU4Miw3ICs1OTksOCBAQCBjbGFzcyBQYXJz
ZXIob2JqZWN0KToKICAgICAgICAgZWxpZiBzZWxmLnRva2VuWzBdID09IHRva2VuX3R5cGVzLmF0
b206CiAgICAgICAgICAgICBzZWxmLmF0b20oKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAg
cmFpc2UgUGFyc2VFcnJvcgorICAgICAgICAgICAgcmFpc2UgUGFyc2VFcnJvcihzZWxmLnRva2Vu
aXplci5maWxlbmFtZSwgc2VsZi50b2tlbml6ZXIubGluZV9udW1iZXIsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICJUb2tlbiAne30nIGlzIG5vdCBhIGtub3duIHR5cGUiLmZvcm1hdChz
ZWxmLnRva2VuWzBdKSkKIAogICAgIGRlZiBsaXN0X3ZhbHVlKHNlbGYpOgogICAgICAgICBzZWxm
LnRyZWUuYXBwZW5kKExpc3ROb2RlKCkpCkBAIC02ODcsMTMgKzcwNSwxNiBAQCBjbGFzcyBUcmVl
YnVpbGRlcihvYmplY3QpOgogICAgICAgICBzZWxmLm5vZGUgPSByb290CiAKICAgICBkZWYgYXBw
ZW5kKHNlbGYsIG5vZGUpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShub2RlLCBOb2RlKQog
ICAgICAgICBzZWxmLm5vZGUuYXBwZW5kKG5vZGUpCiAgICAgICAgIHNlbGYubm9kZSA9IG5vZGUK
KyAgICAgICAgYXNzZXJ0IHNlbGYubm9kZSBpcyBub3QgTm9uZQogICAgICAgICByZXR1cm4gbm9k
ZQogCiAgICAgZGVmIHBvcChzZWxmKToKICAgICAgICAgbm9kZSA9IHNlbGYubm9kZQogICAgICAg
ICBzZWxmLm5vZGUgPSBzZWxmLm5vZGUucGFyZW50CisgICAgICAgIGFzc2VydCBzZWxmLm5vZGUg
aXMgbm90IE5vbmUKICAgICAgICAgcmV0dXJuIG5vZGUKIAogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRy
dW5uZXIvd3B0bWFuaWZlc3Qvc2VyaWFsaXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVz
dC9zZXJpYWxpemVyLnB5CmluZGV4IGE3ZTAxMzEzYWU1NDA3YzYwODZjNjBjNDVkNGFiNzA1OWNj
YjJiYTIuLjNiMjljOTllZGU3Y2FjNThlZGU1ZDQ4MjM3Njk2ZTMwYzlkODU2YzcgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci93cHRtYW5pZmVzdC9zZXJpYWxpemVyLnB5CkBAIC0xLDkgKzEsOSBAQAotZnJvbSBub2Rl
IGltcG9ydCBOb2RlVmlzaXRvciwgVmFsdWVOb2RlLCBMaXN0Tm9kZSwgQmluYXJ5RXhwcmVzc2lv
bk5vZGUKLWZyb20gcGFyc2VyIGltcG9ydCBhdG9tcywgcHJlY2VkZW5jZQorZnJvbSAubm9kZSBp
bXBvcnQgTm9kZVZpc2l0b3IsIFZhbHVlTm9kZSwgTGlzdE5vZGUsIEJpbmFyeUV4cHJlc3Npb25O
b2RlCitmcm9tIC5wYXJzZXIgaW1wb3J0IGF0b21zLCBwcmVjZWRlbmNlCiAKLWF0b21fbmFtZXMg
PSB7djoiQCVzIiAlIGsgZm9yIChrLHYpIGluIGF0b21zLml0ZXJpdGVtcygpfQorYXRvbV9uYW1l
cyA9IHt2OiJAJXMiICUgayBmb3IgKGssdikgaW4gYXRvbXMuaXRlbXMoKX0KIAotbmFtZWRfZXNj
YXBlcyA9IHNldChbIlxhIiwgIlxiIiwgIlxmIiwgIlxuIiwgIlxyIiwgIlx0IiwgIlx2Il0pCitu
YW1lZF9lc2NhcGVzID0geyJcYSIsICJcYiIsICJcZiIsICJcbiIsICJcciIsICJcdCIsICJcdiJ9
CiAKIGRlZiBlc2NhcGUoc3RyaW5nLCBleHRyYXM9IiIpOgogICAgICMgQXNzdW1lcyBpbnB1dCBi
eXRlcyBhcmUgZWl0aGVyIFVURjggYnl0ZXMgb3IgdW5pY29kZS4KQEAgLTc4LDggKzc4LDEwIEBA
IGNsYXNzIE1hbmlmZXN0U2VyaWFsaXplcihOb2RlVmlzaXRvcik6CiAgICAgICAgICAgICBkYXRh
ID0gdW5pY29kZShub2RlLmRhdGEpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkYXRhID0g
bm9kZS5kYXRhCi0gICAgICAgIGlmICIjIiBpbiBkYXRhIG9yIChpc2luc3RhbmNlKG5vZGUucGFy
ZW50LCBMaXN0Tm9kZSkgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGluIGRh
dGEgb3IgIl0iIGluIGRhdGEpKToKKyAgICAgICAgaWYgKCIjIiBpbiBkYXRhIG9yCisgICAgICAg
ICAgICBkYXRhLnN0YXJ0c3dpdGgoImlmICIpIG9yCisgICAgICAgICAgICAoaXNpbnN0YW5jZShu
b2RlLnBhcmVudCwgTGlzdE5vZGUpIGFuZAorICAgICAgICAgICAgICgiLCIgaW4gZGF0YSBvciAi
XSIgaW4gZGF0YSkpKToKICAgICAgICAgICAgIGlmICJcIiIgaW4gZGF0YToKICAgICAgICAgICAg
ICAgICBxdW90ZSA9ICInIgogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1
bm5lci93cHRtYW5pZmVzdC90ZXN0cy9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5p
ZmVzdC90ZXN0cy9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFj
N2U2ZjJmOGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvX19pbml0X18ucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL19faW5pdF9fLnB5CkBAIC0xICswLDAg
QEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZvciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGly
ZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X2NvbmRpdGlvbmFsLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfY29uZGl0aW9uYWwucHkKaW5kZXgg
OWRhMWEwZjE4MGNhMjNlOGNhZGIyYzliNDMwZTk4M2JhNzVkYmNhMC4uZmJjNzVlYzgzOTBmYTM0
YWI3ZTNjYWEzOTFjM2U2ZTc4MzdhNTU0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1h
bmlmZXN0L3Rlc3RzL3Rlc3RfY29uZGl0aW9uYWwucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1h
bmlmZXN0L3Rlc3RzL3Rlc3RfY29uZGl0aW9uYWwucHkKQEAgLTEsOSArMSwxMyBAQAoraW1wb3J0
IHB5dGVzdAoraW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gLi5iYWNrZW5kcyBp
bXBvcnQgY29uZGl0aW9uYWwKIGZyb20gLi5ub2RlIGltcG9ydCBCaW5hcnlFeHByZXNzaW9uTm9k
ZSwgQmluYXJ5T3BlcmF0b3JOb2RlLCBWYXJpYWJsZU5vZGUsIE51bWJlck5vZGUKIAogCitAcHl0
ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25bMF0gPT0gIjMiLAorICAgICAgICAgICAgICAgICAg
IHJlYXNvbj0id3B0bWFuaWZlc3QucGFyc2VyIGRvZXNuJ3Qgc3VwcG9ydCBweTMiKQogY2xhc3Mg
VGVzdENvbmRpdGlvbmFsKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgY29tcGlsZShzZWxm
LCBpbnB1dF90ZXh0KToKICAgICAgICAgcmV0dXJuIGNvbmRpdGlvbmFsLmNvbXBpbGUoaW5wdXRf
dGV4dCkKQEAgLTEzOCw0ICsxNDIsNCBAQCBrZXlfMTogb3RoZXJfdmFsdWUKICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKG1hbmlmZXN0Lmhhc19rZXkoImtleV8xIikpCiAgICAgICAgIHNlbGYuYXNz
ZXJ0RmFsc2UobWFuaWZlc3QuaGFzX2tleSgia2V5XzIiKSkKIAotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhzZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHNldChbImtleSIsICJrZXlfMSJdKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2V0KG1hbmlmZXN0Lml0ZXJrZXlzKCkpLCB7Imtl
eSIsICJrZXlfMSJ9KQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3Rz
L3Rlc3RfcGFyc2VyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfcGFy
c2VyLnB5CmluZGV4IDk4YjU0ZGMxMWVhOGEwMzNiOGVlNjI2YjVmOGJiOTI0NzU5OTU5Y2MuLmFk
NTMyZGQ5MmVhMjA3ZmZlZmVjOWZjMmJlNWY3NDU3YjhjODYxZGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dw
dHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3BhcnNlci5weQorKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5u
ZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKQEAgLTEsNiArMSw4IEBACitpbXBv
cnQgcHl0ZXN0CitpbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAotZnJvbSBjU3RyaW5nSU8g
aW1wb3J0IFN0cmluZ0lPCitmcm9tIHNpeC5tb3ZlcyBpbXBvcnQgY1N0cmluZ0lPIGFzIFN0cmlu
Z0lPCiAKIGZyb20gLi4gaW1wb3J0IHBhcnNlcgogCkBAIC04LDYgKzEwLDggQEAgZnJvbSAuLiBp
bXBvcnQgcGFyc2VyCiAjIHVzZSB0ZXN0X3NlcmlhbGl6ZXIgZm9yIHRoZSBtYWpvcml0eSBvZiBj
YXNlcwogCiAKK0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAg
ICAgICAgICAgICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBjbGFzcyBUZXN0RXhwcmVzc2lvbih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVm
IHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnBhcnNlciA9IHBhcnNlci5QYXJzZXIoKQpAQCAt
ODYsNyArOTAsNyBAQCBrZXk6CiAgICAgICAgIHNlbGYuY29tcGFyZSgKICAgICAgICAgICAgICIi
Igoga2V5OgotICBpZiB4ID09IDE6IGlmIGI6IHZhbHVlIiIiLAorICBpZiB4ID09IDE6ICdpZiBi
OiB2YWx1ZSciIiIsCiAgICAgICAgICAgICBbIkRhdGFOb2RlIiwgTm9uZSwKICAgICAgICAgICAg
ICBbWyJLZXlWYWx1ZU5vZGUiLCAia2V5IiwKICAgICAgICAgICAgICAgIFtbIkNvbmRpdGlvbmFs
Tm9kZSIsIE5vbmUsCkBAIC0xMDcsNiArMTExLDEwIEBAIGtleToKICAgICAgICAgd2l0aCBzZWxm
LmFzc2VydFJhaXNlcyhwYXJzZXIuUGFyc2VFcnJvcik6CiAgICAgICAgICAgICBzZWxmLnBhcnNl
KCJrZXk6IEB0cnVlIikKIAorICAgIGRlZiB0ZXN0X2lmXzEoc2VsZik6CisgICAgICAgIHdpdGgg
c2VsZi5hc3NlcnRSYWlzZXMocGFyc2VyLlBhcnNlRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5w
YXJzZSgia2V5OiBpZiBmb28iKQorCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAg
dW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVz
dHMvdGVzdF9zZXJpYWxpemVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rl
c3Rfc2VyaWFsaXplci5weQppbmRleCAwMjI4MGU1MWY4NDVjODE0NGI5NmJkZThiNTg4YjliN2Mz
NzZhMzQ1Li43ZmU3YWM4NWNiOGExNGYwNTExM2NiZmQ0ODNiOGQwNDJhMDdiOTg5IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90ZXN0X3NlcmlhbGl6ZXIucHkKQEAg
LTYsNiArNiw4IEBAIGltcG9ydCBweXRlc3QKIGZyb20gLi4gaW1wb3J0IHBhcnNlciwgc2VyaWFs
aXplcgogCiAKK0BweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvblswXSA9PSAiMyIsCisgICAg
ICAgICAgICAgICAgICAgcmVhc29uPSJ3cHRtYW5pZmVzdC5wYXJzZXIgZG9lc24ndCBzdXBwb3J0
IHB5MyIpCiBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYg
c2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuc2VyaWFsaXplciA9IHNlcmlhbGl6ZXIuTWFuaWZl
c3RTZXJpYWxpemVyKCkKQEAgLTE0NCw3ICsxNDYsNyBAQCBjbGFzcyBUb2tlbml6ZXJUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICIiIikKIAogICAgIGRlZiB0ZXN0XzE4KHNlbGYpOgotICAgICAg
ICBzZWxmLmNvbXBhcmUoIiIia2V5OiBcXQorICAgICAgICBzZWxmLmNvbXBhcmUociIiImtleTog
XF0KICAgICAgICAgIiIiLCAiIiJrZXk6IF0KICIiIikKIApAQCAtMjI4LDMgKzIzMCw3IEBAIGNs
YXNzIFRva2VuaXplclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmNvbXBh
cmUoIiIiZm9vOgogICBpZiBhIG9yIGI6IFsxLCAyXQogIiIiKQorCisgICAgZGVmIHRlc3RfaWZf
c3RyaW5nXzAoc2VsZik6CisgICAgICAgIHNlbGYuY29tcGFyZSgiIiJmb286ICJpZiBiYXIiCisi
IiIpCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zdGF0
aWMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF9zdGF0aWMucHkKaW5k
ZXggZjYzODY5NjM2ZGE3OWNkY2RjOTYxZTEzN2Q0ZjA0NDA1NWQ3NGRlNC4uYWFmODQ2NTkxNTI0
NmFhYzU4YTA2OGRjZmMwNjk3YjhjOWFmNDE4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dw
dG1hbmlmZXN0L3Rlc3RzL3Rlc3Rfc3RhdGljLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5p
ZmVzdC90ZXN0cy90ZXN0X3N0YXRpYy5weQpAQCAtMSwzICsxLDUgQEAKK2ltcG9ydCBweXRlc3QK
K2ltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIC4uYmFja2VuZHMgaW1wb3J0IHN0
YXRpYwpAQCAtNiw2ICs4LDggQEAgZnJvbSAuLmJhY2tlbmRzIGltcG9ydCBzdGF0aWMKICMgdXNl
IHRlc3Rfc2VyaWFsaXplciBmb3IgdGhlIG1ham9yaXR5IG9mIGNhc2VzCiAKIAorQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uWzBdID09ICIzIiwKKyAgICAgICAgICAgICAgICAgICByZWFz
b249IndwdG1hbmlmZXN0LnBhcnNlciBkb2Vzbid0IHN1cHBvcnQgcHkzIikKIGNsYXNzIFRlc3RT
dGF0aWModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBjb21waWxlKHNlbGYsIGlucHV0X3Rl
eHQsIGlucHV0X2RhdGEpOgogICAgICAgICByZXR1cm4gc3RhdGljLmNvbXBpbGUoaW5wdXRfdGV4
dCwgaW5wdXRfZGF0YSkKQEAgLTgzLDggKzg3LDggQEAga2V5XzE6IG90aGVyX3ZhbHVlCiAgICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYW5pZmVzdC5oYXNfa2V5KCJrZXlfMSIpKQogICAgICAgICBz
ZWxmLmFzc2VydEZhbHNlKG1hbmlmZXN0Lmhhc19rZXkoImtleV8yIikpCiAKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoc2V0KG1hbmlmZXN0Lml0ZXJrZXlzKCkpLCBzZXQoWyJrZXkiLCAia2V5
XzEiXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5pdGVydmFsdWVz
KCkpLCBzZXQoWyJ2YWx1ZV8xIiwgIm90aGVyX3ZhbHVlIl0pKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhzZXQobWFuaWZlc3QuaXRlcmtleXMoKSksIHsia2V5IiwgImtleV8xIn0pCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNldChtYW5pZmVzdC5pdGVydmFsdWVzKCkpLCB7InZhbHVl
XzEiLCAib3RoZXJfdmFsdWUifSkKIAogICAgIGRlZiB0ZXN0X2lzX2VtcHR5XzEoc2VsZik6CiAg
ICAgICAgIGRhdGEgPSAiIiIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90
ZXN0cy90ZXN0X3Rva2VuaXplci5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRtYW5pZmVzdC90ZXN0cy90
ZXN0X3Rva2VuaXplci5weQppbmRleCBhNjRjZTBjN2JiN2Q4ZDA4OWE4Y2IxMzY1YzA0NzdhMDg2
NTJlYWNjLi42NmI1ODA1NTQyYjNhYmU2MDA4NWRjN2ZlMDQ4MWExYjJmOGNiMmY1IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdGVzdHMvdGVzdF90b2tlbml6ZXIucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfdG9rZW5pemVyLnB5CkBAIC0x
LDIxICsxLDE1IEBACi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogCi1z
eXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5hYnNwYXRoKCIuLiIpKQotZnJvbSBjU3RyaW5nSU8g
aW1wb3J0IFN0cmluZ0lPCi0KIGZyb20gLi4gaW1wb3J0IHBhcnNlcgogZnJvbSAuLnBhcnNlciBp
bXBvcnQgdG9rZW5fdHlwZXMKIAotCiBjbGFzcyBUb2tlbml6ZXJUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYudG9rZW5pemVyID0gcGFy
c2VyLlRva2VuaXplcigpCiAKICAgICBkZWYgdG9rZW5pemUoc2VsZiwgaW5wdXRfc3RyKToKICAg
ICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgaXRlbSBpbiBzZWxmLnRva2VuaXplci50b2tlbml6
ZShTdHJpbmdJTyhpbnB1dF9zdHIpKToKKyAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi50b2tlbml6
ZXIudG9rZW5pemUoaW5wdXRfc3RyKToKICAgICAgICAgICAgIHJ2LmFwcGVuZChpdGVtKQogICAg
ICAgICAgICAgaWYgaXRlbVswXSA9PSB0b2tlbl90eXBlcy5lb2Y6CiAgICAgICAgICAgICAgICAg
YnJlYWsKQEAgLTI0LDEyOCArMTgsMTI4IEBAIGNsYXNzIFRva2VuaXplclRlc3QodW5pdHRlc3Qu
VGVzdENhc2UpOgogICAgIGRlZiBjb21wYXJlKHNlbGYsIGlucHV0X3RleHQsIGV4cGVjdGVkKToK
ICAgICAgICAgZXhwZWN0ZWQgPSBleHBlY3RlZCArIFsodG9rZW5fdHlwZXMuZW9mLCBOb25lKV0K
ICAgICAgICAgYWN0dWFsID0gc2VsZi50b2tlbml6ZShpbnB1dF90ZXh0KQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhhY3R1YWwsIGV4cGVjdGVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KGFjdHVhbCwgZXhwZWN0ZWQpCiAKICAgICBkZWYgdGVzdF9oZWFkaW5nXzAoc2VsZik6Ci0gICAg
ICAgIHNlbGYuY29tcGFyZSgiIiJbSGVhZGluZyB0ZXh0XSIiIiwKKyAgICAgICAgc2VsZi5jb21w
YXJlKGIiIiJbSGVhZGluZyB0ZXh0XSIiIiwKICAgICAgICAgICAgICAgICAgICAgIFsodG9rZW5f
dHlwZXMucGFyZW4sICJbIiksCiAgICAgICAgICAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnN0
cmluZywgIkhlYWRpbmcgdGV4dCIpLAogICAgICAgICAgICAgICAgICAgICAgICh0b2tlbl90eXBl
cy5wYXJlbiwgIl0iKV0pCiAKICAgICBkZWYgdGVzdF9oZWFkaW5nXzEoc2VsZik6Ci0gICAgICAg
IHNlbGYuY29tcGFyZSgiIiJbSGVhZGluZyBbdGV4dFxdXSIiIiwKKyAgICAgICAgc2VsZi5jb21w
YXJlKGJyIiIiW0hlYWRpbmcgW3RleHRcXV0iIiIsCiAgICAgICAgICAgICAgICAgICAgICBbKHRv
a2VuX3R5cGVzLnBhcmVuLCAiWyIpLAogICAgICAgICAgICAgICAgICAgICAgICh0b2tlbl90eXBl
cy5zdHJpbmcsICJIZWFkaW5nIFt0ZXh0XSIpLAogICAgICAgICAgICAgICAgICAgICAgICh0b2tl
bl90eXBlcy5wYXJlbiwgIl0iKV0pCiAKICAgICBkZWYgdGVzdF9oZWFkaW5nXzIoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29tcGFyZSgiIiJbSGVhZGluZyAjdGV4dF0iIiIsCisgICAgICAgIHNlbGYu
Y29tcGFyZShiIiIiW0hlYWRpbmcgI3RleHRdIiIiLAogICAgICAgICAgICAgICAgICAgICAgWyh0
b2tlbl90eXBlcy5wYXJlbiwgIlsiKSwKICAgICAgICAgICAgICAgICAgICAgICAodG9rZW5fdHlw
ZXMuc3RyaW5nLCAiSGVhZGluZyAjdGV4dCIpLAogICAgICAgICAgICAgICAgICAgICAgICh0b2tl
bl90eXBlcy5wYXJlbiwgIl0iKV0pCiAKICAgICBkZWYgdGVzdF9oZWFkaW5nXzMoc2VsZik6Ci0g
ICAgICAgIHNlbGYuY29tcGFyZSgiIiJbSGVhZGluZyBbXF10ZXh0XSIiIiwKKyAgICAgICAgc2Vs
Zi5jb21wYXJlKGJyIiIiW0hlYWRpbmcgW1xddGV4dF0iIiIsCiAgICAgICAgICAgICAgICAgICAg
ICBbKHRva2VuX3R5cGVzLnBhcmVuLCAiWyIpLAogICAgICAgICAgICAgICAgICAgICAgICh0b2tl
bl90eXBlcy5zdHJpbmcsICJIZWFkaW5nIFtddGV4dCIpLAogICAgICAgICAgICAgICAgICAgICAg
ICh0b2tlbl90eXBlcy5wYXJlbiwgIl0iKV0pCiAKICAgICBkZWYgdGVzdF9oZWFkaW5nXzQoc2Vs
Zik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2VyLlBhcnNlRXJyb3IpOgot
ICAgICAgICAgICAgc2VsZi50b2tlbml6ZSgiW0hlYWRpbmciKQorICAgICAgICAgICAgc2VsZi50
b2tlbml6ZShiIltIZWFkaW5nIikKIAogICAgIGRlZiB0ZXN0X2hlYWRpbmdfNShzZWxmKToKLSAg
ICAgICAgc2VsZi5jb21wYXJlKCIiIltIZWFkaW5nIFtcXXRleHRdICNjb21tZW50IiIiLAorICAg
ICAgICBzZWxmLmNvbXBhcmUoYnIiIiJbSGVhZGluZyBbXF10ZXh0XSAjY29tbWVudCIiIiwKICAg
ICAgICAgICAgICAgICAgICAgIFsodG9rZW5fdHlwZXMucGFyZW4sICJbIiksCiAgICAgICAgICAg
ICAgICAgICAgICAgKHRva2VuX3R5cGVzLnN0cmluZywgIkhlYWRpbmcgW110ZXh0IiksCiAgICAg
ICAgICAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnBhcmVuLCAiXSIpXSkKIAogICAgIGRlZiB0
ZXN0X2hlYWRpbmdfNihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIiIiJbSGVhZGluZyBc
dHRleHRdIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYnIiIiJbSGVhZGluZyBcdHRleHRdIiIi
LAogICAgICAgICAgICAgICAgICAgICAgWyh0b2tlbl90eXBlcy5wYXJlbiwgIlsiKSwKICAgICAg
ICAgICAgICAgICAgICAgICAodG9rZW5fdHlwZXMuc3RyaW5nLCAiSGVhZGluZyBcdHRleHQiKSwK
ICAgICAgICAgICAgICAgICAgICAgICAodG9rZW5fdHlwZXMucGFyZW4sICJdIildKQogCiAgICAg
ZGVmIHRlc3Rfa2V5XzAoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiJrZXk6dmFsdWUi
IiIsCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIia2V5OnZhbHVlIiIiLAogICAgICAgICAgICAg
ICAgICAgICAgWyh0b2tlbl90eXBlcy5zdHJpbmcsICJrZXkiKSwKICAgICAgICAgICAgICAgICAg
ICAgICAodG9rZW5fdHlwZXMuc2VwYXJhdG9yLCAiOiIpLAogICAgICAgICAgICAgICAgICAgICAg
ICh0b2tlbl90eXBlcy5zdHJpbmcsICJ2YWx1ZSIpXSkKIAogICAgIGRlZiB0ZXN0X2tleV8xKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5ICA6ICB2YWx1ZSIiIiwKKyAgICAgICAg
c2VsZi5jb21wYXJlKGIiIiJrZXkgIDogIHZhbHVlIiIiLAogICAgICAgICAgICAgICAgICAgICAg
Wyh0b2tlbl90eXBlcy5zdHJpbmcsICJrZXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAodG9r
ZW5fdHlwZXMuc2VwYXJhdG9yLCAiOiIpLAogICAgICAgICAgICAgICAgICAgICAgICh0b2tlbl90
eXBlcy5zdHJpbmcsICJ2YWx1ZSIpXSkKIAogICAgIGRlZiB0ZXN0X2tleV8yKHNlbGYpOgotICAg
ICAgICBzZWxmLmNvbXBhcmUoIiIia2V5ICA6ICB2YWwgdWUiIiIsCisgICAgICAgIHNlbGYuY29t
cGFyZShiIiIia2V5ICA6ICB2YWwgdWUiIiIsCiAgICAgICAgICAgICAgICAgICAgICBbKHRva2Vu
X3R5cGVzLnN0cmluZywgImtleSIpLAogICAgICAgICAgICAgICAgICAgICAgICh0b2tlbl90eXBl
cy5zZXBhcmF0b3IsICI6IiksCiAgICAgICAgICAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnN0
cmluZywgInZhbCB1ZSIpXSkKIAogICAgIGRlZiB0ZXN0X2tleV8zKHNlbGYpOgotICAgICAgICBz
ZWxmLmNvbXBhcmUoIiIia2V5OiB2YWx1ZSNjb21tZW50IiIiLAorICAgICAgICBzZWxmLmNvbXBh
cmUoYiIiImtleTogdmFsdWUjY29tbWVudCIiIiwKICAgICAgICAgICAgICAgICAgICAgIFsodG9r
ZW5fdHlwZXMuc3RyaW5nLCAia2V5IiksCiAgICAgICAgICAgICAgICAgICAgICAgKHRva2VuX3R5
cGVzLnNlcGFyYXRvciwgIjoiKSwKICAgICAgICAgICAgICAgICAgICAgICAodG9rZW5fdHlwZXMu
c3RyaW5nLCAidmFsdWUiKV0pCiAKICAgICBkZWYgdGVzdF9rZXlfNChzZWxmKToKICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhwYXJzZXIuUGFyc2VFcnJvcik6Ci0gICAgICAgICAgICBz
ZWxmLnRva2VuaXplKCIiImtlIHk6IHZhbHVlIiIiKQorICAgICAgICAgICAgc2VsZi50b2tlbml6
ZShiIiIia2UgeTogdmFsdWUiIiIpCiAKICAgICBkZWYgdGVzdF9rZXlfNShzZWxmKToKICAgICAg
ICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhwYXJzZXIuUGFyc2VFcnJvcik6Ci0gICAgICAgICAg
ICBzZWxmLnRva2VuaXplKCIiImtleSIiIikKKyAgICAgICAgICAgIHNlbGYudG9rZW5pemUoYiIi
ImtleSIiIikKIAogICAgIGRlZiB0ZXN0X2tleV82KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBh
cmUoIiIia2V5OiAidmFsdWVcIiIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6ICJ2
YWx1ZVwiIiIiLAogICAgICAgICAgICAgICAgICAgICAgWyh0b2tlbl90eXBlcy5zdHJpbmcsICJr
ZXkiKSwKICAgICAgICAgICAgICAgICAgICAgICAodG9rZW5fdHlwZXMuc2VwYXJhdG9yLCAiOiIp
LAogICAgICAgICAgICAgICAgICAgICAgICh0b2tlbl90eXBlcy5zdHJpbmcsICJ2YWx1ZSIpXSkK
IAogICAgIGRlZiB0ZXN0X2tleV83KHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIia2V5
OiAndmFsdWUnIiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogJ3ZhbHVlJyIiIiwK
ICAgICAgICAgICAgICAgICAgICAgIFsodG9rZW5fdHlwZXMuc3RyaW5nLCAia2V5IiksCiAgICAg
ICAgICAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnNlcGFyYXRvciwgIjoiKSwKICAgICAgICAg
ICAgICAgICAgICAgICAodG9rZW5fdHlwZXMuc3RyaW5nLCAidmFsdWUiKV0pCiAKICAgICBkZWYg
dGVzdF9rZXlfOChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogIiN2YWx1ZVwi
IiIiLAorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogIiN2YWx1ZVwiIiIiLAogICAgICAg
ICAgICAgICAgICAgICAgWyh0b2tlbl90eXBlcy5zdHJpbmcsICJrZXkiKSwKICAgICAgICAgICAg
ICAgICAgICAgICAodG9rZW5fdHlwZXMuc2VwYXJhdG9yLCAiOiIpLAogICAgICAgICAgICAgICAg
ICAgICAgICh0b2tlbl90eXBlcy5zdHJpbmcsICIjdmFsdWUiKV0pCiAKICAgICBkZWYgdGVzdF9r
ZXlfOShzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogJyN2YWx1ZVwnIiIiLAor
ICAgICAgICBzZWxmLmNvbXBhcmUoYiIiImtleTogJyN2YWx1ZVwnIiIiLAogICAgICAgICAgICAg
ICAgICAgICAgWyh0b2tlbl90eXBlcy5zdHJpbmcsICJrZXkiKSwKICAgICAgICAgICAgICAgICAg
ICAgICAodG9rZW5fdHlwZXMuc2VwYXJhdG9yLCAiOiIpLAogICAgICAgICAgICAgICAgICAgICAg
ICh0b2tlbl90eXBlcy5zdHJpbmcsICIjdmFsdWUiKV0pCiAKICAgICBkZWYgdGVzdF9rZXlfMTAo
c2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2VyLlBhcnNlRXJyb3Ip
OgotICAgICAgICAgICAgc2VsZi50b2tlbml6ZSgiIiJrZXk6ICJ2YWx1ZSIiIikKKyAgICAgICAg
ICAgIHNlbGYudG9rZW5pemUoYiIiImtleTogInZhbHVlIiIiKQogCiAgICAgZGVmIHRlc3Rfa2V5
XzExKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHBhcnNlci5QYXJzZUVy
cm9yKToKLSAgICAgICAgICAgIHNlbGYudG9rZW5pemUoIiIia2V5OiAndmFsdWUiIiIpCisgICAg
ICAgICAgICBzZWxmLnRva2VuaXplKGIiIiJrZXk6ICd2YWx1ZSIiIikKIAogICAgIGRlZiB0ZXN0
X2tleV8xMihzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhwYXJzZXIuUGFy
c2VFcnJvcik6Ci0gICAgICAgICAgICBzZWxmLnRva2VuaXplKCIiImtleTogJ3ZhbHVlIiIiKQor
ICAgICAgICAgICAgc2VsZi50b2tlbml6ZShiIiIia2V5OiAndmFsdWUiIiIpCiAKICAgICBkZWYg
dGVzdF9rZXlfMTMoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2Vy
LlBhcnNlRXJyb3IpOgotICAgICAgICAgICAgc2VsZi50b2tlbml6ZSgiIiJrZXk6ICd2YWx1ZScg
YWJjIiIiKQorICAgICAgICAgICAgc2VsZi50b2tlbml6ZShiIiIia2V5OiAndmFsdWUnIGFiYyIi
IikKIAogICAgIGRlZiB0ZXN0X2tleV8xNChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKHIi
IiJrZXk6IFxcbmIiIiIsCisgICAgICAgIHNlbGYuY29tcGFyZShiciIiImtleTogXFxuYiIiIiwK
ICAgICAgICAgICAgICAgICAgICAgIFsodG9rZW5fdHlwZXMuc3RyaW5nLCAia2V5IiksCiAgICAg
ICAgICAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnNlcGFyYXRvciwgIjoiKSwKICAgICAgICAg
ICAgICAgICAgICAgICAodG9rZW5fdHlwZXMuc3RyaW5nLCByIlxuYiIpXSkKIAogICAgIGRlZiB0
ZXN0X2xpc3RfMChzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiIgorICAgICAgICBzZWxm
LmNvbXBhcmUoYiIiIgoga2V5OiBbXSIiIiwKICAgICAgICAgICAgIFsodG9rZW5fdHlwZXMuc3Ry
aW5nLCAia2V5IiksCiAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnNlcGFyYXRvciwgIjoiKSwK
QEAgLTE1Myw3ICsxNDcsNyBAQCBrZXk6IFtdIiIiLAogICAgICAgICAgICAgICh0b2tlbl90eXBl
cy5saXN0X2VuZCwgIl0iKV0pCiAKICAgICBkZWYgdGVzdF9saXN0XzEoc2VsZik6Ci0gICAgICAg
IHNlbGYuY29tcGFyZSgiIiIKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiIKIGtleTogW2EsICJi
Il0iIiIsCiAgICAgICAgICAgICBbKHRva2VuX3R5cGVzLnN0cmluZywgImtleSIpLAogICAgICAg
ICAgICAgICh0b2tlbl90eXBlcy5zZXBhcmF0b3IsICI6IiksCkBAIC0xNjMsNyArMTU3LDcgQEAg
a2V5OiBbYSwgImIiXSIiIiwKICAgICAgICAgICAgICAodG9rZW5fdHlwZXMubGlzdF9lbmQsICJd
IildKQogCiAgICAgZGVmIHRlc3RfbGlzdF8yKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUo
IiIiCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiCiBrZXk6IFthLAogICAgICAgYl0iIiIsCiAg
ICAgICAgICAgICBbKHRva2VuX3R5cGVzLnN0cmluZywgImtleSIpLApAQCAtMTc0LDcgKzE2OCw3
IEBAIGtleTogW2EsCiAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLmxpc3RfZW5kLCAiXSIpXSkK
IAogICAgIGRlZiB0ZXN0X2xpc3RfMyhzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiIgor
ICAgICAgICBzZWxmLmNvbXBhcmUoYiIiIgoga2V5OiBbYSwgI2JdCiAgICAgICBjXSIiIiwKICAg
ICAgICAgICAgIFsodG9rZW5fdHlwZXMuc3RyaW5nLCAia2V5IiksCkBAIC0xODYsMTYgKzE4MCwx
NiBAQCBrZXk6IFthLCAjYl0KIAogICAgIGRlZiB0ZXN0X2xpc3RfNChzZWxmKToKICAgICAgICAg
d2l0aCBzZWxmLmFzc2VydFJhaXNlcyhwYXJzZXIuUGFyc2VFcnJvcik6Ci0gICAgICAgICAgICBz
ZWxmLnRva2VuaXplKCIiImtleTogW2EgI2JdCisgICAgICAgICAgICBzZWxmLnRva2VuaXplKGIi
IiJrZXk6IFthICNiXQogICAgICAgICAgICAgY10iIiIpCiAKICAgICBkZWYgdGVzdF9saXN0XzUo
c2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2VyLlBhcnNlRXJyb3Ip
OgotICAgICAgICAgICAgc2VsZi50b2tlbml6ZSgiIiJrZXk6IFthIFxcCisgICAgICAgICAgICBz
ZWxmLnRva2VuaXplKGIiIiJrZXk6IFthIFxcCiAgICAgICAgICAgICBjXSIiIikKIAogICAgIGRl
ZiB0ZXN0X2xpc3RfNihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiImtleTogW2EgLCBi
XSIiIiwKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiJrZXk6IFthICwgYl0iIiIsCiAgICAgICAg
ICAgICBbKHRva2VuX3R5cGVzLnN0cmluZywgImtleSIpLAogICAgICAgICAgICAgICh0b2tlbl90
eXBlcy5zZXBhcmF0b3IsICI6IiksCiAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLmxpc3Rfc3Rh
cnQsICJbIiksCkBAIC0yMDQsNyArMTk4LDcgQEAga2V5OiBbYSwgI2JdCiAgICAgICAgICAgICAg
KHRva2VuX3R5cGVzLmxpc3RfZW5kLCAiXSIpXSkKIAogICAgIGRlZiB0ZXN0X2V4cHJfMChzZWxm
KToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIiIgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiIgog
a2V5OgogICBpZiBjb25kID09IDE6IHZhbHVlIiIiLAogICAgICAgICAgICAgWyh0b2tlbl90eXBl
cy5zdHJpbmcsICJrZXkiKSwKQEAgLTIxOCw3ICsyMTIsNyBAQCBrZXk6CiAgICAgICAgICAgICAg
KHRva2VuX3R5cGVzLnN0cmluZywgInZhbHVlIildKQogCiAgICAgZGVmIHRlc3RfZXhwcl8xKHNl
bGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIiCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIi
CiBrZXk6CiAgIGlmIGNvbmQgPT0gMTogdmFsdWUxCiAgIHZhbHVlMiIiIiwKQEAgLTIzNCw3ICsy
MjgsNyBAQCBrZXk6CiAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnN0cmluZywgInZhbHVlMiIp
XSkKIAogICAgIGRlZiB0ZXN0X2V4cHJfMihzZWxmKToKLSAgICAgICAgc2VsZi5jb21wYXJlKCIi
IgorICAgICAgICBzZWxmLmNvbXBhcmUoYiIiIgoga2V5OgogICBpZiBjb25kPT0iMSI6IHZhbHVl
IiIiLAogICAgICAgICAgICAgWyh0b2tlbl90eXBlcy5zdHJpbmcsICJrZXkiKSwKQEAgLTI0OCw3
ICsyNDIsNyBAQCBrZXk6CiAgICAgICAgICAgICAgKHRva2VuX3R5cGVzLnN0cmluZywgInZhbHVl
IildKQogCiAgICAgZGVmIHRlc3RfZXhwcl8zKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUo
IiIiCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiCiBrZXk6CiAgIGlmIGNvbmQ9PTEuMTogdmFs
dWUiIiIsCiAgICAgICAgICAgICBbKHRva2VuX3R5cGVzLnN0cmluZywgImtleSIpLApAQCAtMjYy
LDcgKzI1Niw3IEBAIGtleToKICAgICAgICAgICAgICAodG9rZW5fdHlwZXMuc3RyaW5nLCAidmFs
dWUiKV0pCiAKICAgICBkZWYgdGVzdF9leHByXzQoc2VsZik6Ci0gICAgICAgIHNlbGYuY29tcGFy
ZSgiIiIKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiIKIGtleToKICAgaWYgY29uZD09MS4xIGFu
ZCBjb25kMiA9PSAiYSI6IHZhbHVlIiIiLAogICAgICAgICAgICAgWyh0b2tlbl90eXBlcy5zdHJp
bmcsICJrZXkiKSwKQEAgLTI4MCw3ICsyNzQsNyBAQCBrZXk6CiAgICAgICAgICAgICAgKHRva2Vu
X3R5cGVzLnN0cmluZywgInZhbHVlIildKQogCiAgICAgZGVmIHRlc3RfZXhwcl81KHNlbGYpOgot
ICAgICAgICBzZWxmLmNvbXBhcmUoIiIiCisgICAgICAgIHNlbGYuY29tcGFyZShiIiIiCiBrZXk6
CiAgIGlmIChjb25kPT0xLjEgKTogdmFsdWUiIiIsCiAgICAgICAgICAgICBbKHRva2VuX3R5cGVz
LnN0cmluZywgImtleSIpLApAQCAtMjk2LDcgKzI5MCw3IEBAIGtleToKICAgICAgICAgICAgICAo
dG9rZW5fdHlwZXMuc3RyaW5nLCAidmFsdWUiKV0pCiAKICAgICBkZWYgdGVzdF9leHByXzYoc2Vs
Zik6Ci0gICAgICAgIHNlbGYuY29tcGFyZSgiIiIKKyAgICAgICAgc2VsZi5jb21wYXJlKGIiIiIK
IGtleToKICAgaWYgIlxcdHRlc3QiOiB2YWx1ZSIiIiwKICAgICAgICAgICAgIFsodG9rZW5fdHlw
ZXMuc3RyaW5nLCAia2V5IiksCkBAIC0zMDksMjcgKzMwMywyNCBAQCBrZXk6CiAKICAgICBkZWYg
dGVzdF9leHByXzcoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2Vy
LlBhcnNlRXJyb3IpOgotICAgICAgICAgICAgc2VsZi50b2tlbml6ZSgKLSAgICAgICAgICAgICAg
ICAiIiIKKyAgICAgICAgICAgIHNlbGYudG9rZW5pemUoYiIiIgoga2V5OgogICBpZiAxQTogdmFs
dWUiIiIpCiAKICAgICBkZWYgdGVzdF9leHByXzgoc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5h
c3NlcnRSYWlzZXMocGFyc2VyLlBhcnNlRXJyb3IpOgotICAgICAgICAgICAgc2VsZi50b2tlbml6
ZSgKLSAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNlbGYudG9rZW5pemUoYiIiIgog
a2V5OgogICBpZiAxYTogdmFsdWUiIiIpCiAKICAgICBkZWYgdGVzdF9leHByXzkoc2VsZik6CiAg
ICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMocGFyc2VyLlBhcnNlRXJyb3IpOgotICAgICAg
ICAgICAgc2VsZi50b2tlbml6ZSgKLSAgICAgICAgICAgICAgICAiIiIKKyAgICAgICAgICAgIHNl
bGYudG9rZW5pemUoYiIiIgoga2V5OgogICBpZiAxLjEuMTogdmFsdWUiIiIpCiAKICAgICBkZWYg
dGVzdF9leHByXzEwKHNlbGYpOgotICAgICAgICBzZWxmLmNvbXBhcmUoIiIiCisgICAgICAgIHNl
bGYuY29tcGFyZShiIiIiCiBrZXk6CiAgIGlmIDEuOiB2YWx1ZSIiIiwKICAgICAgICAgICAgIFso
dG9rZW5fdHlwZXMuc3RyaW5nLCAia2V5IiksCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
bWFuaWZlc3QvdGVzdHMvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkYzdm
MmZmMGExMjJiZmExYjc3NzAzMzE5ZGZjZTNlZjUzYjQxMzkuLjAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3Rz
L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotVGhlIHRlc3Rz
IGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9zaXRvcnku
Ci1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUluc3RlYWQs
IGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczovL2dpdGh1
Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMvU2NyaXB0
cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1QgbW9kaWZ5
IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGllcyByZXF1
aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVpcmluZyB2
ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmlsZXM6Ci0v
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5u
ZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVy
L3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfY29uZGl0aW9uYWwucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
bWFuaWZlc3QvdGVzdHMvdGVzdF9wYXJzZXIucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3Qv
dGVzdHMvdGVzdF9zZXJpYWxpemVyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3Rz
L3Rlc3Rfc3RhdGljLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3Rlc3RzL3Rlc3RfdG9r
ZW5pemVyLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdzNjLWltcG9y
dC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFuaWZlc3QvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1M2UzZGQ1ZDA5YzQwYjYyYzNjMTQwNWIwNTk4NWI0N2Rm
MGMwNzIuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIv
d3B0cnVubmVyL3dwdG1hbmlmZXN0L3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEs
MjAgKzAsMCBAQAotVGhlIHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJv
bSB0aGUgVzNDIHJlcG9zaXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5
IGluIFdlYktpdC4KLUluc3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdp
dGh1YjoKLQlodHRwczovL2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVu
IHJ1biB0aGUgVG9vbHMvU2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWlt
cG9ydAotCi1EbyBOT1QgbW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQotUHJvcGVydGllcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVy
dHkgdmFsdWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0KLUxpc3Qgb2YgZmlsZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L19faW5pdF9fLnB5
Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L25vZGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0bWFu
aWZlc3QvcGFyc2VyLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdG1hbmlmZXN0L3NlcmlhbGl6ZXIucHkK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0cnVubmVyL3dwdHJ1bm5lci93cHRydW5uZXIucHkgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
cnVubmVyLnB5CmluZGV4IGFhYjU5OTZhZmQ5NGU3ODY4NmEwMjdmZDg1NDZjYTgzZTc3NzY2ZjQu
LmNhYzE3MmE1OTQwZWM2OTZlM2EzYjI3OTE3MGY5NzEyYWFmNDY2OGQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0cnVubmVy
L3dwdHJ1bm5lci93cHRydW5uZXIucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRydW5uZXIvd3B0cnVubmVyL3dwdHJ1bm5lci5weQpA
QCAtMSw0ICsxLDQgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwor
ZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscwog
CiBpbXBvcnQganNvbgogaW1wb3J0IG9zCkBAIC0xMiw2ICsxMiw3IEBAIGltcG9ydCB0ZXN0bG9h
ZGVyCiBpbXBvcnQgd3B0Y29tbWFuZGxpbmUKIGltcG9ydCB3cHRsb2dnaW5nCiBpbXBvcnQgd3B0
dGVzdAorZnJvbSBtb3psb2cgaW1wb3J0IGNhcHR1cmUsIGhhbmRsZXJzCiBmcm9tIGZvbnQgaW1w
b3J0IEZvbnRJbnN0YWxsZXIKIGZyb20gdGVzdHJ1bm5lciBpbXBvcnQgTWFuYWdlckdyb3VwCiBm
cm9tIGJyb3dzZXJzLmJhc2UgaW1wb3J0IE51bGxCcm93c2VyCkBAIC0zOSw2ICs0MCw3IEBAIG1l
dGFkYXRhIGZpbGVzIGFyZSB1c2VkIHRvIHN0b3JlIHRoZSBleHBlY3RlZCB0ZXN0IHJlc3VsdHMu
CiBkZWYgc2V0dXBfbG9nZ2luZygqYXJncywgKiprd2FyZ3MpOgogICAgIGdsb2JhbCBsb2dnZXIK
ICAgICBsb2dnZXIgPSB3cHRsb2dnaW5nLnNldHVwKCphcmdzLCAqKmt3YXJncykKKyAgICByZXR1
cm4gbG9nZ2VyCiAKIAogZGVmIGdldF9sb2FkZXIodGVzdF9wYXRocywgcHJvZHVjdCwgZGVidWc9
Tm9uZSwgcnVuX2luZm9fZXh0cmFzPU5vbmUsICoqa3dhcmdzKToKQEAgLTQ3LDI5ICs0OSwyOSBA
QCBkZWYgZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLCBwcm9kdWN0LCBkZWJ1Zz1Ob25lLCBydW5faW5m
b19leHRyYXM9Tm9uZSwgKiprd2FyZ3MpOgogCiAgICAgcnVuX2luZm8gPSB3cHR0ZXN0LmdldF9y
dW5faW5mbyhrd2FyZ3NbInJ1bl9pbmZvIl0sIHByb2R1Y3QsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBicm93c2VyX3ZlcnNpb249a3dhcmdzLmdldCgiYnJvd3Nlcl92ZXJz
aW9uIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicm93c2VyX2NoYW5u
ZWw9a3dhcmdzLmdldCgiYnJvd3Nlcl9jaGFubmVsIiksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICB2ZXJpZnk9a3dhcmdzLmdldCgidmVyaWZ5IiksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Zz1kZWJ1ZywKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGV4dHJhcz1ydW5faW5mb19leHRyYXMpCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBleHRyYXM9cnVuX2luZm9fZXh0cmFzLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgZW5hYmxlX3dlYnJlbmRlcj1rd2FyZ3MuZ2V0KCJlbmFi
bGVfd2VicmVuZGVyIikpCiAKICAgICB0ZXN0X21hbmlmZXN0cyA9IHRlc3Rsb2FkZXIuTWFuaWZl
c3RMb2FkZXIodGVzdF9wYXRocywgZm9yY2VfbWFuaWZlc3RfdXBkYXRlPWt3YXJnc1sibWFuaWZl
c3RfdXBkYXRlIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X2Rvd25sb2FkPWt3YXJnc1sibWFuaWZlc3RfZG93bmxvYWQiXSkubG9hZCgp
CiAKICAgICBtYW5pZmVzdF9maWx0ZXJzID0gW10KLSAgICBtZXRhX2ZpbHRlcnMgPSBbXQogCi0g
ICAgaWYga3dhcmdzWyJpbmNsdWRlIl0gb3Iga3dhcmdzWyJleGNsdWRlIl0gb3Iga3dhcmdzWyJp
bmNsdWRlX21hbmlmZXN0Il06CisgICAgaWYga3dhcmdzWyJpbmNsdWRlIl0gb3Iga3dhcmdzWyJl
eGNsdWRlIl0gb3Iga3dhcmdzWyJpbmNsdWRlX21hbmlmZXN0Il0gb3Iga3dhcmdzWyJkZWZhdWx0
X2V4Y2x1ZGUiXToKICAgICAgICAgbWFuaWZlc3RfZmlsdGVycy5hcHBlbmQodGVzdGxvYWRlci5U
ZXN0RmlsdGVyKGluY2x1ZGU9a3dhcmdzWyJpbmNsdWRlIl0sCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsdWRlPWt3YXJnc1siZXhjbHVk
ZSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgbWFuaWZlc3RfcGF0aD1rd2FyZ3NbImluY2x1ZGVfbWFuaWZlc3QiXSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfbWFuaWZlc3Rz
PXRlc3RfbWFuaWZlc3RzKSkKLSAgICBpZiBrd2FyZ3NbInRhZ3MiXToKLSAgICAgICAgbWV0YV9m
aWx0ZXJzLmFwcGVuZCh0ZXN0bG9hZGVyLlRhZ0ZpbHRlcih0YWdzPWt3YXJnc1sidGFncyJdKSkK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRl
c3RfbWFuaWZlc3RzPXRlc3RfbWFuaWZlc3RzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwbGljaXQ9a3dhcmdzWyJkZWZhdWx0X2V4Y2x1
ZGUiXSkpCiAKICAgICBzc2xfZW5hYmxlZCA9IHNzbHV0aWxzLmdldF9jbHMoa3dhcmdzWyJzc2xf
dHlwZSJdKS5zc2xfZW5hYmxlZAogICAgIHRlc3RfbG9hZGVyID0gdGVzdGxvYWRlci5UZXN0TG9h
ZGVyKHRlc3RfbWFuaWZlc3RzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGt3YXJnc1sidGVzdF90eXBlcyJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJ1bl9pbmZvLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIG1hbmlmZXN0X2ZpbHRlcnM9bWFuaWZlc3RfZmlsdGVycywKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtZXRhX2ZpbHRlcnM9bWV0YV9maWx0ZXJzLAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rX3R5cGU9a3dhcmdzWyJjaHVu
a190eXBlIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxf
Y2h1bmtzPWt3YXJnc1sidG90YWxfY2h1bmtzIl0sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY2h1bmtfbnVtYmVyPWt3YXJnc1sidGhpc19jaHVuayJdLApAQCAtODcs
NyArODksNyBAQCBkZWYgbGlzdF90ZXN0X2dyb3Vwcyh0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3
YXJncyk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19l
eHRyYXM9cnVuX2luZm9fZXh0cmFzLCAqKmt3YXJncykKIAogICAgIGZvciBpdGVtIGluIHNvcnRl
ZCh0ZXN0X2xvYWRlci5ncm91cHMoa3dhcmdzWyJ0ZXN0X3R5cGVzIl0pKToKLSAgICAgICAgcHJp
bnQgaXRlbQorICAgICAgICBwcmludChpdGVtKQogCiAKIGRlZiBsaXN0X2Rpc2FibGVkKHRlc3Rf
cGF0aHMsIHByb2R1Y3QsICoqa3dhcmdzKToKQEAgLTEwMyw3ICsxMDUsNyBAQCBkZWYgbGlzdF9k
aXNhYmxlZCh0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgZm9yIHRlc3RfdHlw
ZSwgdGVzdHMgaW4gdGVzdF9sb2FkZXIuZGlzYWJsZWRfdGVzdHMuaXRlcml0ZW1zKCk6CiAgICAg
ICAgIGZvciB0ZXN0IGluIHRlc3RzOgogICAgICAgICAgICAgcnYuYXBwZW5kKHsidGVzdCI6IHRl
c3QuaWQsICJyZWFzb24iOiB0ZXN0LmRpc2FibGVkKCl9KQotICAgIHByaW50IGpzb24uZHVtcHMo
cnYsIGluZGVudD0yKQorICAgIHByaW50KGpzb24uZHVtcHMocnYsIGluZGVudD0yKSkKIAogCiBk
ZWYgbGlzdF90ZXN0cyh0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CkBAIC0xMTUsNDIg
KzExNyw0NSBAQCBkZWYgbGlzdF90ZXN0cyh0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mb19leHRyYXM9
cnVuX2luZm9fZXh0cmFzLCAqKmt3YXJncykKIAogICAgIGZvciB0ZXN0IGluIHRlc3RfbG9hZGVy
LnRlc3RfaWRzOgotICAgICAgICBwcmludCB0ZXN0CisgICAgICAgIHByaW50KHRlc3QpCiAKIAog
ZGVmIGdldF9wYXVzZV9hZnRlcl90ZXN0KHRlc3RfbG9hZGVyLCAqKmt3YXJncyk6Ci0gICAgdG90
YWxfdGVzdHMgPSBzdW0obGVuKGl0ZW0pIGZvciBpdGVtIGluIHRlc3RfbG9hZGVyLnRlc3RzLml0
ZXJ2YWx1ZXMoKSkKICAgICBpZiBrd2FyZ3NbInBhdXNlX2FmdGVyX3Rlc3QiXSBpcyBOb25lOgog
ICAgICAgICBpZiBrd2FyZ3NbInJlcGVhdF91bnRpbF91bmV4cGVjdGVkIl06CiAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKLSAgICAgICAgaWYga3dhcmdzWyJyZXBlYXQiXSA9PSAxIGFuZCBrd2Fy
Z3NbInJlcnVuIl0gPT0gMSBhbmQgdG90YWxfdGVzdHMgPT0gMToKKyAgICAgICAgaWYga3dhcmdz
WyJoZWFkbGVzcyJdOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHRlc3RzID0g
dGVzdF9sb2FkZXIudGVzdHMKKyAgICAgICAgaXNfc2luZ2xlX3Rlc3RoYXJuZXNzID0gKHN1bShs
ZW4oaXRlbSkgZm9yIGl0ZW0gaW4gdGVzdHMuaXRlcnZhbHVlcygpKSA9PSAxIGFuZAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKHRlc3RzLmdldCgidGVzdGhhcm5lc3MiLCBb
XSkpID09IDEpCisgICAgICAgIGlmIGt3YXJnc1sicmVwZWF0Il0gPT0gMSBhbmQga3dhcmdzWyJy
ZXJ1biJdID09IDEgYW5kIGlzX3NpbmdsZV90ZXN0aGFybmVzczoKICAgICAgICAgICAgIHJldHVy
biBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQogICAgIHJldHVybiBrd2FyZ3NbInBhdXNlX2Fm
dGVyX3Rlc3QiXQogCiAKIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0
LCAqKmt3YXJncyk6Ci0gICAgd2l0aCB3cHRsb2dnaW5nLkNhcHR1cmVJTyhsb2dnZXIsIG5vdCBr
d2FyZ3NbIm5vX2NhcHR1cmVfc3RkaW8iXSk6CisgICAgIiIiU2V0IHVwIHRoZSB0ZXN0IGVudmly
b25tZW50LCBsb2FkIHRoZSBsaXN0IG9mIHRlc3RzIHRvIGJlIGV4ZWN1dGVkLCBhbmQKKyAgICBp
bnZva2UgdGhlIHJlbWFpbmRlciBvZiB0aGUgY29kZSB0byBleGVjdXRlIHRlc3RzIiIiCisgICAg
d2l0aCBjYXB0dXJlLkNhcHR1cmVJTyhsb2dnZXIsIG5vdCBrd2FyZ3NbIm5vX2NhcHR1cmVfc3Rk
aW8iXSk6CiAgICAgICAgIGVudi5kb19kZWxheWVkX2ltcG9ydHMobG9nZ2VyLCB0ZXN0X3BhdGhz
KQogCi0gICAgICAgIChjaGVja19hcmdzLAotICAgICAgICAgdGFyZ2V0X2Jyb3dzZXJfY2xzLCBn
ZXRfYnJvd3Nlcl9rd2FyZ3MsCi0gICAgICAgICBleGVjdXRvcl9jbGFzc2VzLCBnZXRfZXhlY3V0
b3Jfa3dhcmdzLAotICAgICAgICAgZW52X29wdGlvbnMsIGdldF9lbnZfZXh0cmFzLCBydW5faW5m
b19leHRyYXMpID0gcHJvZHVjdHMubG9hZF9wcm9kdWN0KGNvbmZpZywgcHJvZHVjdCkKKyAgICAg
ICAgcHJvZHVjdCA9IHByb2R1Y3RzLmxvYWRfcHJvZHVjdChjb25maWcsIHByb2R1Y3QsIGxvYWRf
Y2xzPVRydWUpCiAKLSAgICAgICAgZW52X2V4dHJhcyA9IGdldF9lbnZfZXh0cmFzKCoqa3dhcmdz
KQorICAgICAgICBlbnZfZXh0cmFzID0gcHJvZHVjdC5nZXRfZW52X2V4dHJhcygqKmt3YXJncykK
IAotICAgICAgICBjaGVja19hcmdzKCoqa3dhcmdzKQorICAgICAgICBwcm9kdWN0LmNoZWNrX2Fy
Z3MoKiprd2FyZ3MpCiAKICAgICAgICAgaWYga3dhcmdzWyJpbnN0YWxsX2ZvbnRzIl06CiAgICAg
ICAgICAgICBlbnZfZXh0cmFzLmFwcGVuZChGb250SW5zdGFsbGVyKAogICAgICAgICAgICAgICAg
IGZvbnRfZGlyPWt3YXJnc1siZm9udF9kaXIiXSwKLSAgICAgICAgICAgICAgICBhaGVtPW9zLnBh
dGguam9pbihrd2FyZ3NbInRlc3RzX3Jvb3QiXSwgImZvbnRzL0FoZW0udHRmIikKKyAgICAgICAg
ICAgICAgICBhaGVtPW9zLnBhdGguam9pbih0ZXN0X3BhdGhzWyIvIl1bInRlc3RzX3BhdGgiXSwg
ImZvbnRzL0FoZW0udHRmIikKICAgICAgICAgICAgICkpCiAKICAgICAgICAgcnVuX2luZm8sIHRl
c3RfbG9hZGVyID0gZ2V0X2xvYWRlcih0ZXN0X3BhdGhzLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgcnVuX2luZm9fZXh0cmFzPXJ1bl9pbmZvX2V4dHJhcygqKmt3YXJn
cyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5u
YW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9pbmZv
X2V4dHJhcz1wcm9kdWN0LnJ1bl9pbmZvX2V4dHJhcygqKmt3YXJncyksCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAKICAgICAgICAgdGVzdF9z
b3VyY2Vfa3dhcmdzID0geyJwcm9jZXNzZXMiOiBrd2FyZ3NbInByb2Nlc3NlcyJdfQpAQCAtMTYz
LDkgKzE2OCwxNiBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwg
Kiprd2FyZ3MpOgogCiAgICAgICAgIGxvZ2dlci5pbmZvKCJVc2luZyAlaSBjbGllbnQgcHJvY2Vz
c2VzIiAlIGt3YXJnc1sicHJvY2Vzc2VzIl0pCiAKKyAgICAgICAgc2tpcHBlZF90ZXN0cyA9IDAK
ICAgICAgICAgdGVzdF90b3RhbCA9IDAKICAgICAgICAgdW5leHBlY3RlZF90b3RhbCA9IDAKIAor
ICAgICAgICBpZiBsZW4odGVzdF9sb2FkZXIudGVzdF9pZHMpID09IDAgYW5kIGt3YXJnc1sidGVz
dF9saXN0Il06CisgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoIlVuYWJsZSB0byBmaW5kIGFu
eSB0ZXN0cyBhdCB0aGUgcGF0aChzKToiKQorICAgICAgICAgICAgZm9yIHBhdGggaW4ga3dhcmdz
WyJ0ZXN0X2xpc3QiXToKKyAgICAgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoIiAgJXMiICUg
cGF0aCkKKyAgICAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgiUGxlYXNlIGNoZWNrIHNwZWxsaW5n
IGFuZCBtYWtlIHN1cmUgdGhlcmUgYXJlIHRlc3RzIGluIHRoZSBzcGVjaWZpZWQgcGF0aChzKS4i
KQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJf
dGVzdCJdID0gZ2V0X3BhdXNlX2FmdGVyX3Rlc3QodGVzdF9sb2FkZXIsICoqa3dhcmdzKQogCiAg
ICAgICAgIHNzbF9jb25maWcgPSB7InR5cGUiOiBrd2FyZ3NbInNzbF90eXBlIl0sCkBAIC0xNzQs
MTAgKzE4NiwxMyBAQCBkZWYgcnVuX3Rlc3RzKGNvbmZpZywgdGVzdF9wYXRocywgcHJvZHVjdCwg
Kiprd2FyZ3MpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImhvc3Rf
Y2VydF9wYXRoIjoga3dhcmdzWyJob3N0X2NlcnRfcGF0aCJdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgImNhX2NlcnRfcGF0aCI6IGt3YXJnc1siY2FfY2VydF9wYXRo
Il19fQogCisgICAgICAgIHRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyID0gcHJvZHVjdC5n
ZXRfdGltZW91dF9tdWx0aXBsaWVyKCJ0ZXN0aGFybmVzcyIsIHJ1bl9pbmZvLCAqKmt3YXJncykK
KwogICAgICAgICB3aXRoIGVudi5UZXN0RW52aXJvbm1lbnQodGVzdF9wYXRocywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RoYXJuZXNzX3RpbWVvdXRfbXVsdGlwbGVyLAog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dhcmdzWyJwYXVzZV9hZnRlcl90ZXN0
Il0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbImRlYnVnX2luZm8i
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudl9vcHRpb25zLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvZHVjdC5lbnZfb3B0aW9ucywKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9jb25maWcsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBlbnZfZXh0cmFzKSBhcyB0ZXN0X2Vudmlyb25tZW50OgogICAgICAgICAg
ICAgdHJ5OgpAQCAtMTk5LDcgKzIxNCw5IEBAIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3Bh
dGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAKICAgICAgICAgICAgICAgICB0ZXN0X2NvdW50ID0g
MAogICAgICAgICAgICAgICAgIHVuZXhwZWN0ZWRfY291bnQgPSAwCi0gICAgICAgICAgICAgICAg
bG9nZ2VyLnN1aXRlX3N0YXJ0KHRlc3RfbG9hZGVyLnRlc3RfaWRzLCBuYW1lPSd3ZWItcGxhdGZv
cm0tdGVzdCcsIHJ1bl9pbmZvPXJ1bl9pbmZvLAorICAgICAgICAgICAgICAgIGxvZ2dlci5zdWl0
ZV9zdGFydCh0ZXN0X2xvYWRlci50ZXN0X2lkcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbmFtZT0nd2ViLXBsYXRmb3JtLXRlc3QnLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBydW5faW5mbz1ydW5faW5mbywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgZXh0cmE9eyJydW5fYnlfZGlyIjoga3dhcmdzWyJydW5fYnlfZGlyIl19KQog
ICAgICAgICAgICAgICAgIGZvciB0ZXN0X3R5cGUgaW4ga3dhcmdzWyJ0ZXN0X3R5cGVzIl06CiAg
ICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJSdW5uaW5nICVzIHRlc3RzIiAlIHRlc3Rf
dHlwZSkKQEAgLTIxMiwzNiArMjI5LDM4IEBAIGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3Bh
dGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3RfdHlw
ZSA9PSAid2RzcGVjIjoKICAgICAgICAgICAgICAgICAgICAgICAgIGJyb3dzZXJfY2xzID0gTnVs
bEJyb3dzZXIKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAg
ICAgIGJyb3dzZXJfY2xzID0gdGFyZ2V0X2Jyb3dzZXJfY2xzCisgICAgICAgICAgICAgICAgICAg
ICAgICBicm93c2VyX2NscyA9IHByb2R1Y3QuYnJvd3Nlcl9jbHMKIAotICAgICAgICAgICAgICAg
ICAgICBicm93c2VyX2t3YXJncyA9IGdldF9icm93c2VyX2t3YXJncyh0ZXN0X3R5cGUsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl9p
bmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25maWc9dGVzdF9lbnZpcm9ubWVudC5jb25maWcsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqa3dhcmdzKQorICAgICAgICAg
ICAgICAgICAgICBicm93c2VyX2t3YXJncyA9IHByb2R1Y3QuZ2V0X2Jyb3dzZXJfa3dhcmdzKHRl
c3RfdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBydW5faW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWc9dGVzdF9lbnZpcm9ubWVu
dC5jb25maWcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpCiAKLSAgICAgICAgICAgICAgICAgICAgZXhlY3V0
b3JfY2xzID0gZXhlY3V0b3JfY2xhc3Nlcy5nZXQodGVzdF90eXBlKQotICAgICAgICAgICAgICAg
ICAgICBleGVjdXRvcl9rd2FyZ3MgPSBnZXRfZXhlY3V0b3Jfa3dhcmdzKHRlc3RfdHlwZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
ZXN0X2Vudmlyb25tZW50LmNvbmZpZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0X2Vudmlyb25tZW50LmNhY2hlX21hbmFnZXIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcnVuX2luZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIGV4ZWN1dG9yX2Ns
cyA9IHByb2R1Y3QuZXhlY3V0b3JfY2xhc3Nlcy5nZXQodGVzdF90eXBlKQorICAgICAgICAgICAg
ICAgICAgICBleGVjdXRvcl9rd2FyZ3MgPSBwcm9kdWN0LmdldF9leGVjdXRvcl9rd2FyZ3ModGVz
dF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgdGVzdF9lbnZpcm9ubWVudC5jb25maWcsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXN0
X2Vudmlyb25tZW50LmNhY2hlX21hbmFnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBydW5faW5mbywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICoqa3dhcmdzKQogCiAgICAgICAgICAgICAgICAgICAgIGlmIGV4ZWN1dG9yX2NscyBpcyBOb25l
OgogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJVbnN1cHBvcnRlZCB0ZXN0
IHR5cGUgJXMgZm9yIHByb2R1Y3QgJXMiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAodGVzdF90eXBlLCBwcm9kdWN0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAodGVzdF90eXBlLCBwcm9kdWN0Lm5hbWUpKQogICAgICAgICAgICAgICAgICAg
ICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0X2xv
YWRlci5kaXNhYmxlZF90ZXN0c1t0ZXN0X3R5cGVdOgogICAgICAgICAgICAgICAgICAgICAgICAg
bG9nZ2VyLnRlc3Rfc3RhcnQodGVzdC5pZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dl
ci50ZXN0X2VuZCh0ZXN0LmlkLCBzdGF0dXM9IlNLSVAiKQorICAgICAgICAgICAgICAgICAgICAg
ICAgc2tpcHBlZF90ZXN0cyArPSAxCiAKICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdF90eXBl
ID09ICJ0ZXN0aGFybmVzcyI6CiAgICAgICAgICAgICAgICAgICAgICAgICBydW5fdGVzdHMgPSB7
InRlc3RoYXJuZXNzIjogW119CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiB0
ZXN0X2xvYWRlci50ZXN0c1sidGVzdGhhcm5lc3MiXToKLSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAodGVzdC50ZXN0ZHJpdmVyIGFuZCBub3QgZXhlY3V0b3JfY2xzLnN1cHBvcnRzX3Rl
c3Rkcml2ZXIpIG9yICgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3Qu
anNzaGVsbCBhbmQgbm90IGV4ZWN1dG9yX2Nscy5zdXBwb3J0c19qc3NoZWxsKToKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAoKHRlc3QudGVzdGRyaXZlciBhbmQgbm90IGV4ZWN1dG9y
X2Nscy5zdXBwb3J0c190ZXN0ZHJpdmVyKSBvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAodGVzdC5qc3NoZWxsIGFuZCBub3QgZXhlY3V0b3JfY2xzLnN1cHBvcnRzX2pzc2hlbGwp
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLnRlc3Rfc3RhcnQodGVz
dC5pZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLnRlc3RfZW5kKHRl
c3QuaWQsIHN0YXR1cz0iU0tJUCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNr
aXBwZWRfdGVzdHMgKz0gMQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bl90ZXN0c1sidGVzdGhhcm5lc3MiXS5hcHBl
bmQodGVzdCkKICAgICAgICAgICAgICAgICAgICAgZWxzZToKQEAgLTI1OSwyNiArMjc4LDM2IEBA
IGRlZiBydW5fdGVzdHMoY29uZmlnLCB0ZXN0X3BhdGhzLCBwcm9kdWN0LCAqKmt3YXJncyk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1sicGF1c2VfYWZ0ZXJf
dGVzdCJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd2FyZ3NbInBh
dXNlX29uX3VuZXhwZWN0ZWQiXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAga3dhcmdzWyJyZXN0YXJ0X29uX3VuZXhwZWN0ZWQiXSwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAga3dhcmdzWyJkZWJ1Z19pbmZvIl0pIGFzIG1hbmFnZXJfZ3JvdXA6
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJnc1siZGVidWdfaW5m
byJdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBub3Qga3dhcmdzWyJu
b19jYXB0dXJlX3N0ZGlvIl0pIGFzIG1hbmFnZXJfZ3JvdXA6CiAgICAgICAgICAgICAgICAgICAg
ICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFuYWdlcl9ncm91cC5ydW4o
dGVzdF90eXBlLCBydW5fdGVzdHMpCiAgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5
Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmNyaXRp
Y2FsKCJNYWluIHRocmVhZCBnb3Qgc2lnbmFsIikKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBtYW5hZ2VyX2dyb3VwLnN0b3AoKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNl
Ci0gICAgICAgICAgICAgICAgICAgIHRlc3RfY291bnQgKz0gbWFuYWdlcl9ncm91cC50ZXN0X2Nv
dW50KCkKLSAgICAgICAgICAgICAgICAgICAgdW5leHBlY3RlZF9jb3VudCArPSBtYW5hZ2VyX2dy
b3VwLnVuZXhwZWN0ZWRfY291bnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF9jb3Vu
dCArPSBtYW5hZ2VyX2dyb3VwLnRlc3RfY291bnQoKQorICAgICAgICAgICAgICAgICAgICAgICAg
dW5leHBlY3RlZF9jb3VudCArPSBtYW5hZ2VyX2dyb3VwLnVuZXhwZWN0ZWRfY291bnQoKQogCiAg
ICAgICAgICAgICAgICAgdGVzdF90b3RhbCArPSB0ZXN0X2NvdW50CiAgICAgICAgICAgICAgICAg
dW5leHBlY3RlZF90b3RhbCArPSB1bmV4cGVjdGVkX2NvdW50CiAgICAgICAgICAgICAgICAgbG9n
Z2VyLmluZm8oIkdvdCAlaSB1bmV4cGVjdGVkIHJlc3VsdHMiICUgdW5leHBlY3RlZF9jb3VudCkK
KyAgICAgICAgICAgICAgICBsb2dnZXIuc3VpdGVfZW5kKCkKICAgICAgICAgICAgICAgICBpZiBy
ZXBlYXRfdW50aWxfdW5leHBlY3RlZCBhbmQgdW5leHBlY3RlZF90b3RhbCA+IDA6CiAgICAgICAg
ICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgbG9nZ2VyLnN1aXRlX2VuZCgpCisg
ICAgICAgICAgICAgICAgaWYgcmVwZWF0X2NvdW50ID09IDEgYW5kIGxlbih0ZXN0X2xvYWRlci50
ZXN0X2lkcykgPT0gc2tpcHBlZF90ZXN0czoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKIAog
ICAgIGlmIHRlc3RfdG90YWwgPT0gMDoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJObyB0ZXN0cyBy
YW4iKQotICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgaWYgc2tpcHBlZF90ZXN0cyA+IDA6
CisgICAgICAgICAgICBsb2dnZXIud2FybmluZygiQWxsIHJlcXVlc3RlZCB0ZXN0cyB3ZXJlIHNr
aXBwZWQiKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaWYga3dhcmdzWyJkZWZhdWx0X2V4
Y2x1ZGUiXToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiTm8gdGVzdHMgcmFuIikKKyAg
ICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAg
ICAgICBsb2dnZXIuY3JpdGljYWwoIk5vIHRlc3RzIHJhbiIpCisgICAgICAgICAgICAgICAgcmV0
dXJuIEZhbHNlCiAKICAgICBpZiB1bmV4cGVjdGVkX3RvdGFsIGFuZCBub3Qga3dhcmdzWyJmYWls
X29uX3VuZXhwZWN0ZWQiXToKICAgICAgICAgbG9nZ2VyLmluZm8oIlRvbGVyYXRpbmcgJXMgdW5l
eHBlY3RlZCByZXN1bHRzIiAlIHVuZXhwZWN0ZWRfdG90YWwpCkBAIC0zMDcsMTYgKzMzNiwyNyBA
QCBkZWYgY2hlY2tfc3RhYmlsaXR5KCoqa3dhcmdzKToKIAogCiBkZWYgc3RhcnQoKiprd2FyZ3Mp
OgotICAgIGlmIGt3YXJnc1sibGlzdF90ZXN0X2dyb3VwcyJdOgotICAgICAgICBsaXN0X3Rlc3Rf
Z3JvdXBzKCoqa3dhcmdzKQotICAgIGVsaWYga3dhcmdzWyJsaXN0X2Rpc2FibGVkIl06Ci0gICAg
ICAgIGxpc3RfZGlzYWJsZWQoKiprd2FyZ3MpCi0gICAgZWxpZiBrd2FyZ3NbImxpc3RfdGVzdHMi
XToKLSAgICAgICAgbGlzdF90ZXN0cygqKmt3YXJncykKLSAgICBlbGlmIGt3YXJnc1sidmVyaWZ5
Il0gb3Iga3dhcmdzWyJzdGFiaWxpdHkiXToKLSAgICAgICAgY2hlY2tfc3RhYmlsaXR5KCoqa3dh
cmdzKQotICAgIGVsc2U6Ci0gICAgICAgIHJldHVybiBub3QgcnVuX3Rlc3RzKCoqa3dhcmdzKQor
ICAgIGFzc2VydCBsb2dnZXIgaXMgbm90IE5vbmUKKworICAgIGxvZ2dlZF9jcml0aWNhbCA9IHdw
dGxvZ2dpbmcuTG9nZ2VkQWJvdmVMZXZlbEhhbmRsZXIoIkNSSVRJQ0FMIikKKyAgICBoYW5kbGVy
ID0gaGFuZGxlcnMuTG9nTGV2ZWxGaWx0ZXIobG9nZ2VkX2NyaXRpY2FsLCAiQ1JJVElDQUwiKQor
ICAgIGxvZ2dlci5hZGRfaGFuZGxlcihoYW5kbGVyKQorCisgICAgcnYgPSBGYWxzZQorICAgIHRy
eToKKyAgICAgICAgaWYga3dhcmdzWyJsaXN0X3Rlc3RfZ3JvdXBzIl06CisgICAgICAgICAgICBs
aXN0X3Rlc3RfZ3JvdXBzKCoqa3dhcmdzKQorICAgICAgICBlbGlmIGt3YXJnc1sibGlzdF9kaXNh
YmxlZCJdOgorICAgICAgICAgICAgbGlzdF9kaXNhYmxlZCgqKmt3YXJncykKKyAgICAgICAgZWxp
ZiBrd2FyZ3NbImxpc3RfdGVzdHMiXToKKyAgICAgICAgICAgIGxpc3RfdGVzdHMoKiprd2FyZ3Mp
CisgICAgICAgIGVsaWYga3dhcmdzWyJ2ZXJpZnkiXSBvciBrd2FyZ3NbInN0YWJpbGl0eSJdOgor
ICAgICAgICAgICAgcnYgPSBjaGVja19zdGFiaWxpdHkoKiprd2FyZ3MpIG9yIGxvZ2dlZF9jcml0
aWNhbC5oYXNfbG9nCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBydiA9IG5vdCBydW5fdGVz
dHMoKiprd2FyZ3MpIG9yIGxvZ2dlZF9jcml0aWNhbC5oYXNfbG9nCisgICAgZmluYWxseToKKyAg
ICAgICAgbG9nZ2VyLnJlbW92ZV9oYW5kbGVyKGhhbmRsZXIpCisgICAgcmV0dXJuIHJ2CiAKIAog
ZGVmIG1haW4oKToKQEAgLTMzNCw3ICszNzQsNyBAQCBkZWYgbWFpbigpOgogICAgICAgICBpZiBr
d2FyZ3NbInBkYiJdOgogICAgICAgICAgICAgaW1wb3J0IHBkYgogICAgICAgICAgICAgaW1wb3J0
IHRyYWNlYmFjawotICAgICAgICAgICAgcHJpbnQgdHJhY2ViYWNrLmZvcm1hdF9leGMoKQorICAg
ICAgICAgICAgcHJpbnQodHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKICAgICAgICAgICAgIHBkYi5w
b3N0X21vcnRlbSgpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRy
dW5uZXIvd3B0cnVubmVyL3dwdHRlc3QucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2Vi
LXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0dGVzdC5weQppbmRl
eCBjMjliYTk3NGE5OTc4NmY2ODdmMmFlYWQxYmExNDA0NWMxMmZiNjQzLi4xOWU4MzlkMjFiY2M4
ZmM0MDBiYmYyYWQ5Mjg5ZjAzNTliZmEyZjFkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0
dGVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHJ1bm5lci93cHRydW5uZXIvd3B0dGVzdC5weQpAQCAtMSwyMCArMSwyOCBAQAog
aW1wb3J0IG9zCiBpbXBvcnQgc3VicHJvY2VzcworZnJvbSBzaXgubW92ZXMudXJsbGliLnBhcnNl
IGltcG9ydCB1cmxqb2luCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBkZWZhdWx0ZGljdAogCi1m
cm9tIHdwdG1hbmlmZXN0LnBhcnNlciBpbXBvcnQgYXRvbXMKK2Zyb20gLndwdG1hbmlmZXN0LnBh
cnNlciBpbXBvcnQgYXRvbXMKIAogYXRvbV9yZXNldCA9IGF0b21zWyJSZXNldCJdCi1lbmFibGVk
X3Rlc3RzID0gc2V0KFsidGVzdGhhcm5lc3MiLCAicmVmdGVzdCIsICJ3ZHNwZWMiXSkKK2VuYWJs
ZWRfdGVzdHMgPSB7InRlc3RoYXJuZXNzIiwgInJlZnRlc3QiLCAid2RzcGVjIn0KIAogCiBjbGFz
cyBSZXN1bHQob2JqZWN0KToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RhdHVzLCBtZXNzYWdl
LCBleHBlY3RlZD1Ob25lLCBleHRyYT1Ob25lLCBzdGFjaz1Ob25lKToKKyAgICBkZWYgX19pbml0
X18oc2VsZiwKKyAgICAgICAgICAgICAgICAgc3RhdHVzLAorICAgICAgICAgICAgICAgICBtZXNz
YWdlLAorICAgICAgICAgICAgICAgICBleHBlY3RlZD1Ob25lLAorICAgICAgICAgICAgICAgICBl
eHRyYT1Ob25lLAorICAgICAgICAgICAgICAgICBzdGFjaz1Ob25lLAorICAgICAgICAgICAgICAg
ICBrbm93bl9pbnRlcm1pdHRlbnQ9Tm9uZSk6CiAgICAgICAgIGlmIHN0YXR1cyBub3QgaW4gc2Vs
Zi5zdGF0dXNlczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXNlZCBz
dGF0dXMgJXMiICUgc3RhdHVzKQogICAgICAgICBzZWxmLnN0YXR1cyA9IHN0YXR1cwogICAgICAg
ICBzZWxmLm1lc3NhZ2UgPSBtZXNzYWdlCiAgICAgICAgIHNlbGYuZXhwZWN0ZWQgPSBleHBlY3Rl
ZAorICAgICAgICBzZWxmLmtub3duX2ludGVybWl0dGVudCA9IGtub3duX2ludGVybWl0dGVudCBp
ZiBrbm93bl9pbnRlcm1pdHRlbnQgaXMgbm90IE5vbmUgZWxzZSBbXQogICAgICAgICBzZWxmLmV4
dHJhID0gZXh0cmEgaWYgZXh0cmEgaXMgbm90IE5vbmUgZWxzZSB7fQogICAgICAgICBzZWxmLnN0
YWNrID0gc3RhY2sKIApAQCAtMjMsNyArMzEsNyBAQCBjbGFzcyBSZXN1bHQob2JqZWN0KToKIAog
CiBjbGFzcyBTdWJ0ZXN0UmVzdWx0KG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5h
bWUsIHN0YXR1cywgbWVzc2FnZSwgc3RhY2s9Tm9uZSwgZXhwZWN0ZWQ9Tm9uZSk6CisgICAgZGVm
IF9faW5pdF9fKHNlbGYsIG5hbWUsIHN0YXR1cywgbWVzc2FnZSwgc3RhY2s9Tm9uZSwgZXhwZWN0
ZWQ9Tm9uZSwga25vd25faW50ZXJtaXR0ZW50PU5vbmUpOgogICAgICAgICBzZWxmLm5hbWUgPSBu
YW1lCiAgICAgICAgIGlmIHN0YXR1cyBub3QgaW4gc2VsZi5zdGF0dXNlczoKICAgICAgICAgICAg
IHJhaXNlIFZhbHVlRXJyb3IoIlVucmVjb2duaXNlZCBzdGF0dXMgJXMiICUgc3RhdHVzKQpAQCAt
MzEsNiArMzksNyBAQCBjbGFzcyBTdWJ0ZXN0UmVzdWx0KG9iamVjdCk6CiAgICAgICAgIHNlbGYu
bWVzc2FnZSA9IG1lc3NhZ2UKICAgICAgICAgc2VsZi5zdGFjayA9IHN0YWNrCiAgICAgICAgIHNl
bGYuZXhwZWN0ZWQgPSBleHBlY3RlZAorICAgICAgICBzZWxmLmtub3duX2ludGVybWl0dGVudCA9
IGtub3duX2ludGVybWl0dGVudCBpZiBrbm93bl9pbnRlcm1pdHRlbnQgaXMgbm90IE5vbmUgZWxz
ZSBbXQogCiAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgogICAgICAgICByZXR1cm4gIjwlcy4lcyAl
cyAlcz4iICUgKHNlbGYuX19tb2R1bGVfXywgc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYu
bmFtZSwgc2VsZi5zdGF0dXMpCkBAIC0zOCwyOCArNDcsMjggQEAgY2xhc3MgU3VidGVzdFJlc3Vs
dChvYmplY3QpOgogCiBjbGFzcyBUZXN0aGFybmVzc1Jlc3VsdChSZXN1bHQpOgogICAgIGRlZmF1
bHRfZXhwZWN0ZWQgPSAiT0siCi0gICAgc3RhdHVzZXMgPSBzZXQoWyJPSyIsICJFUlJPUiIsICJJ
TlRFUk5BTC1FUlJPUiIsICJUSU1FT1VUIiwgIkVYVEVSTkFMLVRJTUVPVVQiLCAiQ1JBU0giXSkK
KyAgICBzdGF0dXNlcyA9IHsiT0siLCAiRVJST1IiLCAiSU5URVJOQUwtRVJST1IiLCAiVElNRU9V
VCIsICJFWFRFUk5BTC1USU1FT1VUIiwgIkNSQVNIIiwgIlBSRUNPTkRJVElPTl9GQUlMRUQifQog
CiAKIGNsYXNzIFRlc3RoYXJuZXNzU3VidGVzdFJlc3VsdChTdWJ0ZXN0UmVzdWx0KToKICAgICBk
ZWZhdWx0X2V4cGVjdGVkID0gIlBBU1MiCi0gICAgc3RhdHVzZXMgPSBzZXQoWyJQQVNTIiwgIkZB
SUwiLCAiVElNRU9VVCIsICJOT1RSVU4iXSkKKyAgICBzdGF0dXNlcyA9IHsiUEFTUyIsICJGQUlM
IiwgIlRJTUVPVVQiLCAiTk9UUlVOIiwgIlBSRUNPTkRJVElPTl9GQUlMRUQifQogCiAKIGNsYXNz
IFJlZnRlc3RSZXN1bHQoUmVzdWx0KToKICAgICBkZWZhdWx0X2V4cGVjdGVkID0gIlBBU1MiCi0g
ICAgc3RhdHVzZXMgPSBzZXQoWyJQQVNTIiwgIkZBSUwiLCAiRVJST1IiLCAiSU5URVJOQUwtRVJS
T1IiLCAiVElNRU9VVCIsICJFWFRFUk5BTC1USU1FT1VUIiwKLSAgICAgICAgICAgICAgICAgICAg
IkNSQVNIIl0pCisgICAgc3RhdHVzZXMgPSB7IlBBU1MiLCAiRkFJTCIsICJFUlJPUiIsICJJTlRF
Uk5BTC1FUlJPUiIsICJUSU1FT1VUIiwgIkVYVEVSTkFMLVRJTUVPVVQiLAorICAgICAgICAgICAg
ICAgICJDUkFTSCJ9CiAKIAogY2xhc3MgV2RzcGVjUmVzdWx0KFJlc3VsdCk6CiAgICAgZGVmYXVs
dF9leHBlY3RlZCA9ICJPSyIKLSAgICBzdGF0dXNlcyA9IHNldChbIk9LIiwgIkVSUk9SIiwgIklO
VEVSTkFMLUVSUk9SIiwgIlRJTUVPVVQiLCAiRVhURVJOQUwtVElNRU9VVCIsICJDUkFTSCJdKQor
ICAgIHN0YXR1c2VzID0geyJPSyIsICJFUlJPUiIsICJJTlRFUk5BTC1FUlJPUiIsICJUSU1FT1VU
IiwgIkVYVEVSTkFMLVRJTUVPVVQiLCAiQ1JBU0gifQogCiAKIGNsYXNzIFdkc3BlY1N1YnRlc3RS
ZXN1bHQoU3VidGVzdFJlc3VsdCk6CiAgICAgZGVmYXVsdF9leHBlY3RlZCA9ICJQQVNTIgotICAg
IHN0YXR1c2VzID0gc2V0KFsiUEFTUyIsICJGQUlMIiwgIkVSUk9SIl0pCisgICAgc3RhdHVzZXMg
PSB7IlBBU1MiLCAiRkFJTCIsICJFUlJPUiJ9CiAKIAogZGVmIGdldF9ydW5faW5mbyhtZXRhZGF0
YV9yb290LCBwcm9kdWN0LCAqKmt3YXJncyk6CkBAIC02Nyw3ICs3NiwxMiBAQCBkZWYgZ2V0X3J1
bl9pbmZvKG1ldGFkYXRhX3Jvb3QsIHByb2R1Y3QsICoqa3dhcmdzKToKIAogCiBjbGFzcyBSdW5J
bmZvKGRpY3QpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtZXRhZGF0YV9yb290LCBwcm9kdWN0
LCBkZWJ1ZywgYnJvd3Nlcl92ZXJzaW9uPU5vbmUsIGV4dHJhcz1Ob25lKToKKyAgICBkZWYgX19p
bml0X18oc2VsZiwgbWV0YWRhdGFfcm9vdCwgcHJvZHVjdCwgZGVidWcsCisgICAgICAgICAgICAg
ICAgIGJyb3dzZXJfdmVyc2lvbj1Ob25lLAorICAgICAgICAgICAgICAgICBicm93c2VyX2NoYW5u
ZWw9Tm9uZSwKKyAgICAgICAgICAgICAgICAgdmVyaWZ5PU5vbmUsCisgICAgICAgICAgICAgICAg
IGV4dHJhcz1Ob25lLAorICAgICAgICAgICAgICAgICBlbmFibGVfd2VicmVuZGVyPUZhbHNlKToK
ICAgICAgICAgaW1wb3J0IG1vemluZm8KICAgICAgICAgc2VsZi5fdXBkYXRlX21vemluZm8obWV0
YWRhdGFfcm9vdCkKICAgICAgICAgc2VsZi51cGRhdGUobW96aW5mby5pbmZvKQpAQCAtODksOSAr
MTAzLDMxIEBAIGNsYXNzIFJ1bkluZm8oZGljdCk6CiAgICAgICAgICAgICBzZWxmWyJkZWJ1ZyJd
ID0gRmFsc2UKICAgICAgICAgaWYgYnJvd3Nlcl92ZXJzaW9uOgogICAgICAgICAgICAgc2VsZlsi
YnJvd3Nlcl92ZXJzaW9uIl0gPSBicm93c2VyX3ZlcnNpb24KKyAgICAgICAgaWYgYnJvd3Nlcl9j
aGFubmVsOgorICAgICAgICAgICAgc2VsZlsiYnJvd3Nlcl9jaGFubmVsIl0gPSBicm93c2VyX2No
YW5uZWwKKworICAgICAgICBzZWxmWyJ2ZXJpZnkiXSA9IHZlcmlmeQorICAgICAgICBpZiAid2Fz
bSIgbm90IGluIHNlbGY6CisgICAgICAgICAgICBzZWxmWyJ3YXNtIl0gPSBGYWxzZQogICAgICAg
ICBpZiBleHRyYXMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBzZWxmLnVwZGF0ZShleHRyYXMp
CiAKKyAgICAgICAgIyBVbnRpbCB0aGUgdGVzdCBoYXJuZXNzIGNhbiB1bmRlcnN0YW5kIGRlZmF1
bHQgcHJlZiB2YWx1ZXMsCisgICAgICAgICMgKGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcv
c2hvd19idWcuY2dpP2lkPTE1Nzc5MTIpIHRoaXMgdmFsdWUKKyAgICAgICAgIyBzaG91bGQgYnkg
c3luY2hyb25pemVkIHdpdGggdGhlIGRlZmF1bHQgcHJlZiB2YWx1ZSBpbmRpY2F0ZWQgaW4KKyAg
ICAgICAgIyBTdGF0aWNQcmVmTGlzdC55YW1sLgorICAgICAgICAjCisgICAgICAgICMgQ3VycmVu
dGx5IGZvciBhdXRvbWF0aW9uLCB0aGUgcHJlZiAoYW5kIGBzdy1lMTBzYCkgZGVmYXVsdHMgdG8g
dHJ1ZSBpbgorICAgICAgICAjIG5pZ2h0bHkgYnVpbGRzIGFuZCBmYWxzZSBvdGhlcndpc2UgYnV0
IGNhbiBiZSBvdmVycmlkZGVuIHdpdGgKKyAgICAgICAgIyBgLS1zZXRwcmVmYC4gSWYgb3ZlcnJp
ZGRlbiwgdGhlIHZhbHVlIHdvdWxkIGJlIGluaXRpYWxpemVkIGluCisgICAgICAgICMgYHJ1bl9p
bmZvX2V4dHJhc2AgYW5kIGJlIHN1cHBsaWVkIGluIHRoZSBgZXh0cmFzYCBwYXJhbWV0ZXIuCisg
ICAgICAgIGlmICJzdy1lMTBzIiBub3QgaW4gc2VsZjoKKyAgICAgICAgICAgIHNlbGZbInN3LWUx
MHMiXSA9IHNlbGYuZ2V0KCJuaWdodGx5X2J1aWxkIiwgRmFsc2UpCisKKyAgICAgICAgc2VsZlsi
aGVhZGxlc3MiXSA9IGV4dHJhcy5nZXQoImhlYWRsZXNzIiwgRmFsc2UpCisgICAgICAgIHNlbGZb
IndlYnJlbmRlciJdID0gZW5hYmxlX3dlYnJlbmRlcgorCisKICAgICBkZWYgX3VwZGF0ZV9tb3pp
bmZvKHNlbGYsIG1ldGFkYXRhX3Jvb3QpOgogICAgICAgICAiIiJBZGQgZXh0cmEgYnVpbGQgaW5m
b3JtYXRpb24gZnJvbSBhIG1vemluZm8uanNvbiBmaWxlIGluIGEgcGFyZW50CiAgICAgICAgIGRp
cmVjdG9yeSIiIgpAQCAtMTM2LDE1ICsxNzIsMTUgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAg
ICAgICByZXR1cm4gbWV0YWRhdGEKIAogICAgIEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX21h
bmlmZXN0KGNscywgbWFuaWZlc3RfaXRlbSwgaW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0
YSk6CisgICAgZGVmIGZyb21fbWFuaWZlc3QoY2xzLCBtYW5pZmVzdF9maWxlLCBtYW5pZmVzdF9p
dGVtLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhKToKICAgICAgICAgdGltZW91dCA9
IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZlc3RfaXRlbS50aW1lb3V0ID09ICJsb25nIiBlbHNl
IGNscy5kZWZhdWx0X3RpbWVvdXQKICAgICAgICAgcHJvdG9jb2wgPSAiaHR0cHMiIGlmIGhhc2F0
dHIobWFuaWZlc3RfaXRlbSwgImh0dHBzIikgYW5kIG1hbmlmZXN0X2l0ZW0uaHR0cHMgZWxzZSAi
aHR0cCIKLSAgICAgICAgcmV0dXJuIGNscyhtYW5pZmVzdF9pdGVtLnNvdXJjZV9maWxlLnRlc3Rz
X3Jvb3QsCisgICAgICAgIHJldHVybiBjbHMobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAogICAg
ICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0udXJsLAogICAgICAgICAgICAgICAgICAgIGlu
aGVyaXRfbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgdGVzdF9tZXRhZGF0YSwKICAgICAg
ICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQsCi0gICAgICAgICAgICAgICAgICAgcGF0aD1t
YW5pZmVzdF9pdGVtLnNvdXJjZV9maWxlLnBhdGgsCisgICAgICAgICAgICAgICAgICAgcGF0aD1v
cy5wYXRoLmpvaW4obWFuaWZlc3RfZmlsZS50ZXN0c19yb290LCBtYW5pZmVzdF9pdGVtLnBhdGgp
LAogICAgICAgICAgICAgICAgICAgIHByb3RvY29sPXByb3RvY29sKQogCiAgICAgQHByb3BlcnR5
CkBAIC0yMjQsNiArMjYwLDM0IEBAIGNsYXNzIFRlc3Qob2JqZWN0KToKICAgICAgICAgICAgICAg
ICBicmVhawogICAgICAgICByZXR1cm4gbHNhbl9hbGxvd2VkCiAKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgbHNhbl9tYXhfc3RhY2tfZGVwdGgoc2VsZik6CisgICAgICAgIGZvciBtZXRhIGluIHNl
bGYuaXRlcm1ldGEoTm9uZSk6CisgICAgICAgICAgICBkZXB0aCA9IG1ldGEubHNhbl9tYXhfc3Rh
Y2tfZGVwdGgKKyAgICAgICAgICAgIGlmIGRlcHRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAg
ICAgIHJldHVybiBkZXB0aAorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQHByb3BlcnR5Cisg
ICAgZGVmIG1vemxlYWtfYWxsb3dlZChzZWxmKToKKyAgICAgICAgbW96bGVha19hbGxvd2VkID0g
c2V0KCkKKyAgICAgICAgZm9yIG1ldGEgaW4gc2VsZi5pdGVybWV0YSgpOgorICAgICAgICAgICAg
bW96bGVha19hbGxvd2VkIHw9IG1ldGEubGVha19hbGxvd2VkCisgICAgICAgICAgICBpZiBhdG9t
X3Jlc2V0IGluIG1vemxlYWtfYWxsb3dlZDoKKyAgICAgICAgICAgICAgICBtb3psZWFrX2FsbG93
ZWQucmVtb3ZlKGF0b21fcmVzZXQpCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0
dXJuIG1vemxlYWtfYWxsb3dlZAorCisgICAgQHByb3BlcnR5CisgICAgZGVmIG1vemxlYWtfdGhy
ZXNob2xkKHNlbGYpOgorICAgICAgICBydiA9IHt9CisgICAgICAgIGZvciBtZXRhIGluIHNlbGYu
aXRlcm1ldGEoTm9uZSk6CisgICAgICAgICAgICB0aHJlc2hvbGQgPSBtZXRhLmxlYWtfdGhyZXNo
b2xkCisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiB0aHJlc2hvbGQuaXRlcml0ZW1zKCk6
CisgICAgICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBydjoKKyAgICAgICAgICAgICAgICAgICAg
cnZba2V5XSA9IHZhbHVlCisgICAgICAgIHJldHVybiBydgorCiAgICAgQHByb3BlcnR5CiAgICAg
ZGVmIHRhZ3Moc2VsZik6CiAgICAgICAgIHRhZ3MgPSBzZXQoKQpAQCAtMjQxLDEyICszMDUsMTIg
QEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBwcmVmcyhzZWxm
KToKICAgICAgICAgcHJlZnMgPSB7fQotICAgICAgICBmb3IgbWV0YSBpbiBzZWxmLml0ZXJtZXRh
KCk6CisgICAgICAgIGZvciBtZXRhIGluIHJldmVyc2VkKGxpc3Qoc2VsZi5pdGVybWV0YSgpKSk6
CiAgICAgICAgICAgICBtZXRhX3ByZWZzID0gbWV0YS5wcmVmcwotICAgICAgICAgICAgcHJlZnMu
dXBkYXRlKG1ldGFfcHJlZnMpCiAgICAgICAgICAgICBpZiBhdG9tX3Jlc2V0IGluIG1ldGFfcHJl
ZnM6Ci0gICAgICAgICAgICAgICAgZGVsIHByZWZzW2F0b21fcmVzZXRdCi0gICAgICAgICAgICAg
ICAgYnJlYWsKKyAgICAgICAgICAgICAgICBkZWwgbWV0YV9wcmVmc1thdG9tX3Jlc2V0XQorICAg
ICAgICAgICAgICAgIHByZWZzID0ge30KKyAgICAgICAgICAgIHByZWZzLnVwZGF0ZShtZXRhX3By
ZWZzKQogICAgICAgICByZXR1cm4gcHJlZnMKIAogICAgIGRlZiBleHBlY3RlZChzZWxmLCBzdWJ0
ZXN0PU5vbmUpOgpAQCAtMjYwLDEwICszMjQsNDAgQEAgY2xhc3MgVGVzdChvYmplY3QpOgogICAg
ICAgICAgICAgcmV0dXJuIGRlZmF1bHQKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICByZXR1
cm4gbWV0YWRhdGEuZ2V0KCJleHBlY3RlZCIpCisgICAgICAgICAgICBleHBlY3RlZCA9IG1ldGFk
YXRhLmdldCgiZXhwZWN0ZWQiKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwg
KGJhc2VzdHJpbmcpKToKKyAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWQKKyAgICAgICAg
ICAgIGVsaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgbGlzdCk6CisgICAgICAgICAgICAgICAgcmV0
dXJuIGV4cGVjdGVkWzBdCisgICAgICAgICAgICBlbGlmIGV4cGVjdGVkIGlzIE5vbmU6CisgICAg
ICAgICAgICAgICAgcmV0dXJuIGRlZmF1bHQKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAg
ICAgICAgICAgcmV0dXJuIGRlZmF1bHQKIAorICAgIGRlZiBrbm93bl9pbnRlcm1pdHRlbnQoc2Vs
Ziwgc3VidGVzdD1Ob25lKToKKyAgICAgICAgbWV0YWRhdGEgPSBzZWxmLl9nZXRfbWV0YWRhdGEo
c3VidGVzdCkKKyAgICAgICAgaWYgbWV0YWRhdGEgaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVy
biBbXQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4cGVjdGVkID0gbWV0YWRhdGEuZ2V0
KCJleHBlY3RlZCIpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV4cGVjdGVkLCBsaXN0KToK
KyAgICAgICAgICAgICAgICByZXR1cm4gZXhwZWN0ZWRbMTpdCisgICAgICAgICAgICByZXR1cm4g
W10KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAg
ICBkZWYgZXhwZWN0X2FueV9zdWJ0ZXN0X3N0YXR1cyhzZWxmKToKKyAgICAgICAgbWV0YWRhdGEg
PSBzZWxmLl9nZXRfbWV0YWRhdGEoKQorICAgICAgICBpZiBtZXRhZGF0YSBpcyBOb25lOgorICAg
ICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIHRyeToKKyAgICAgICAgICAgICMgVGhpcyBr
ZXkgaXMgdXNlZCBieSB0aGUgQmxpbmsgQ0kgdG8gaWdub3JlIHN1YnRlc3Qgc3RhdHVzZXMKKyAg
ICAgICAgICAgIG1ldGFkYXRhLmdldCgiYmxpbmtfZXhwZWN0X2FueV9zdWJ0ZXN0X3N0YXR1cyIp
CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAg
ICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAg
cmV0dXJuICI8JXMuJXMgJXM+IiAlIChzZWxmLl9fbW9kdWxlX18sIHNlbGYuX19jbGFzc19fLl9f
bmFtZV9fLCBzZWxmLmlkKQogCkBAIC0yODQsMjMgKzM3OCwyNCBAQCBjbGFzcyBUZXN0aGFybmVz
c1Rlc3QoVGVzdCk6CiAgICAgICAgIHNlbGYuc2NyaXB0cyA9IHNjcmlwdHMgb3IgW10KIAogICAg
IEBjbGFzc21ldGhvZAotICAgIGRlZiBmcm9tX21hbmlmZXN0KGNscywgbWFuaWZlc3RfaXRlbSwg
aW5oZXJpdF9tZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CisgICAgZGVmIGZyb21fbWFuaWZlc3Qo
Y2xzLCBtYW5pZmVzdF9maWxlLCBtYW5pZmVzdF9pdGVtLCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0
X21ldGFkYXRhKToKICAgICAgICAgdGltZW91dCA9IGNscy5sb25nX3RpbWVvdXQgaWYgbWFuaWZl
c3RfaXRlbS50aW1lb3V0ID09ICJsb25nIiBlbHNlIGNscy5kZWZhdWx0X3RpbWVvdXQKICAgICAg
ICAgcHJvdG9jb2wgPSAiaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImh0dHBzIikg
YW5kIG1hbmlmZXN0X2l0ZW0uaHR0cHMgZWxzZSAiaHR0cCIKICAgICAgICAgdGVzdGRyaXZlciA9
IG1hbmlmZXN0X2l0ZW0udGVzdGRyaXZlciBpZiBoYXNhdHRyKG1hbmlmZXN0X2l0ZW0sICJ0ZXN0
ZHJpdmVyIikgZWxzZSBGYWxzZQogICAgICAgICBqc3NoZWxsID0gbWFuaWZlc3RfaXRlbS5qc3No
ZWxsIGlmIGhhc2F0dHIobWFuaWZlc3RfaXRlbSwgImpzc2hlbGwiKSBlbHNlIEZhbHNlCi0gICAg
ICAgIHNjcmlwdF9tZXRhZGF0YSA9IG1hbmlmZXN0X2l0ZW0uc291cmNlX2ZpbGUuc2NyaXB0X21l
dGFkYXRhIG9yIFtdCisgICAgICAgIHNjcmlwdF9tZXRhZGF0YSA9IG1hbmlmZXN0X2l0ZW0uc2Ny
aXB0X21ldGFkYXRhIG9yIFtdCiAgICAgICAgIHNjcmlwdHMgPSBbdiBmb3IgKGssIHYpIGluIHNj
cmlwdF9tZXRhZGF0YSBpZiBrID09IGIic2NyaXB0Il0KLSAgICAgICAgcmV0dXJuIGNscyhtYW5p
ZmVzdF9pdGVtLnNvdXJjZV9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgIHJldHVybiBjbHMobWFu
aWZlc3RfZmlsZS50ZXN0c19yb290LAogICAgICAgICAgICAgICAgICAgIG1hbmlmZXN0X2l0ZW0u
dXJsLAogICAgICAgICAgICAgICAgICAgIGluaGVyaXRfbWV0YWRhdGEsCiAgICAgICAgICAgICAg
ICAgICAgdGVzdF9tZXRhZGF0YSwKICAgICAgICAgICAgICAgICAgICB0aW1lb3V0PXRpbWVvdXQs
Ci0gICAgICAgICAgICAgICAgICAgcGF0aD1tYW5pZmVzdF9pdGVtLnNvdXJjZV9maWxlLnBhdGgs
CisgICAgICAgICAgICAgICAgICAgcGF0aD1vcy5wYXRoLmpvaW4obWFuaWZlc3RfZmlsZS50ZXN0
c19yb290LCBtYW5pZmVzdF9pdGVtLnBhdGgpLAogICAgICAgICAgICAgICAgICAgIHByb3RvY29s
PXByb3RvY29sLAogICAgICAgICAgICAgICAgICAgIHRlc3Rkcml2ZXI9dGVzdGRyaXZlciwKICAg
ICAgICAgICAgICAgICAgICBqc3NoZWxsPWpzc2hlbGwsCi0gICAgICAgICAgICAgICAgICAgc2Ny
aXB0cz1zY3JpcHRzKQorICAgICAgICAgICAgICAgICAgIHNjcmlwdHM9c2NyaXB0cworICAgICAg
ICAgICAgICAgICAgICkKIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBpZChzZWxmKToKQEAgLTMy
MCw3ICs0MTUsNyBAQCBjbGFzcyBSZWZ0ZXN0VGVzdChUZXN0KToKICAgICB0ZXN0X3R5cGUgPSAi
cmVmdGVzdCIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVy
aXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHJlZmVyZW5jZXMsCi0gICAgICAgICAgICAgICAg
IHRpbWVvdXQ9Tm9uZSwgcGF0aD1Ob25lLCB2aWV3cG9ydF9zaXplPU5vbmUsIGRwaT1Ob25lLCBw
cm90b2NvbD0iaHR0cCIpOgorICAgICAgICAgICAgICAgICB0aW1lb3V0PU5vbmUsIHBhdGg9Tm9u
ZSwgdmlld3BvcnRfc2l6ZT1Ob25lLCBkcGk9Tm9uZSwgZnV6enk9Tm9uZSwgcHJvdG9jb2w9Imh0
dHAiKToKICAgICAgICAgVGVzdC5fX2luaXRfXyhzZWxmLCB0ZXN0c19yb290LCB1cmwsIGluaGVy
aXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEsIHRpbWVvdXQsCiAgICAgICAgICAgICAgICAgICAg
ICAgcGF0aCwgcHJvdG9jb2wpCiAKQEAgLTMzMSw5ICs0MjYsMTEgQEAgY2xhc3MgUmVmdGVzdFRl
c3QoVGVzdCk6CiAgICAgICAgIHNlbGYucmVmZXJlbmNlcyA9IHJlZmVyZW5jZXMKICAgICAgICAg
c2VsZi52aWV3cG9ydF9zaXplID0gdmlld3BvcnRfc2l6ZQogICAgICAgICBzZWxmLmRwaSA9IGRw
aQorICAgICAgICBzZWxmLl9mdXp6eSA9IGZ1enp5IG9yIHt9CiAKICAgICBAY2xhc3NtZXRob2QK
ICAgICBkZWYgZnJvbV9tYW5pZmVzdChjbHMsCisgICAgICAgICAgICAgICAgICAgICAgbWFuaWZl
c3RfZmlsZSwKICAgICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF90ZXN0LAogICAgICAgICAg
ICAgICAgICAgICAgIGluaGVyaXRfbWV0YWRhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgdGVz
dF9tZXRhZGF0YSwKQEAgLTM0OSw3ICs0NDYsNyBAQCBjbGFzcyBSZWZ0ZXN0VGVzdChUZXN0KToK
IAogICAgICAgICB1cmwgPSBtYW5pZmVzdF90ZXN0LnVybAogCi0gICAgICAgIG5vZGUgPSBjbHMo
bWFuaWZlc3RfdGVzdC5zb3VyY2VfZmlsZS50ZXN0c19yb290LAorICAgICAgICBub2RlID0gY2xz
KG1hbmlmZXN0X2ZpbGUudGVzdHNfcm9vdCwKICAgICAgICAgICAgICAgICAgICBtYW5pZmVzdF90
ZXN0LnVybCwKICAgICAgICAgICAgICAgICAgICBpbmhlcml0X21ldGFkYXRhLAogICAgICAgICAg
ICAgICAgICAgIHRlc3RfbWV0YWRhdGEsCkBAIC0zNTgsNyArNDU1LDggQEAgY2xhc3MgUmVmdGVz
dFRlc3QoVGVzdCk6CiAgICAgICAgICAgICAgICAgICAgcGF0aD1tYW5pZmVzdF90ZXN0LnBhdGgs
CiAgICAgICAgICAgICAgICAgICAgdmlld3BvcnRfc2l6ZT1tYW5pZmVzdF90ZXN0LnZpZXdwb3J0
X3NpemUsCiAgICAgICAgICAgICAgICAgICAgZHBpPW1hbmlmZXN0X3Rlc3QuZHBpLAotICAgICAg
ICAgICAgICAgICAgIHByb3RvY29sPSJodHRwcyIgaWYgaGFzYXR0cihtYW5pZmVzdF90ZXN0LCAi
aHR0cHMiKSBhbmQgbWFuaWZlc3RfdGVzdC5odHRwcyBlbHNlICJodHRwIikKKyAgICAgICAgICAg
ICAgICAgICBwcm90b2NvbD0iaHR0cHMiIGlmIGhhc2F0dHIobWFuaWZlc3RfdGVzdCwgImh0dHBz
IikgYW5kIG1hbmlmZXN0X3Rlc3QuaHR0cHMgZWxzZSAiaHR0cCIsCisgICAgICAgICAgICAgICAg
ICAgZnV6enk9bWFuaWZlc3RfdGVzdC5mdXp6eSkKIAogICAgICAgICBub2Rlc1t1cmxdID0gbm9k
ZQogCkBAIC0zNzYsMTUgKzQ3NCwxNiBAQCBjbGFzcyBSZWZ0ZXN0VGVzdChUZXN0KToKIAogICAg
ICAgICAgICAgcmVmZXJlbmNlc19zZWVuLmFkZChjb21wYXJpc29uX2tleSkKIAotICAgICAgICAg
ICAgbWFuaWZlc3Rfbm9kZSA9IG1hbmlmZXN0X3Rlc3QubWFuaWZlc3QuZ2V0X3JlZmVyZW5jZShy
ZWZfdXJsKQorICAgICAgICAgICAgbWFuaWZlc3Rfbm9kZSA9IG1hbmlmZXN0X2ZpbGUuZ2V0X3Jl
ZmVyZW5jZShyZWZfdXJsKQogICAgICAgICAgICAgaWYgbWFuaWZlc3Rfbm9kZToKLSAgICAgICAg
ICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVzdC5mcm9tX21hbmlmZXN0KG1hbmlmZXN0X25v
ZGUsCisgICAgICAgICAgICAgICAgcmVmZXJlbmNlID0gUmVmdGVzdFRlc3QuZnJvbV9tYW5pZmVz
dChtYW5pZmVzdF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgbWFuaWZlc3Rfbm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdLAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGVzLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVmZXJlbmNlc19zZWVuKQog
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICByZWZlcmVuY2UgPSBSZWZ0ZXN0VGVz
dChtYW5pZmVzdF90ZXN0LnNvdXJjZV9maWxlLnRlc3RzX3Jvb3QsCisgICAgICAgICAgICAgICAg
cmVmZXJlbmNlID0gUmVmdGVzdFRlc3QobWFuaWZlc3RfZmlsZS50ZXN0c19yb290LAogICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlZl91cmwsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTm9uZSwKQEAgLTQxMyw2ICs1MTIsMzIgQEAgY2xhc3MgUmVmdGVzdFRl
c3QoVGVzdCk6CiAgICAgZGVmIGtleXMoc2VsZik6CiAgICAgICAgIHJldHVybiAoInJlZnR5cGUi
LCAicmVmdXJsIikKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmdXp6eShzZWxmKToKKyAgICAg
ICAgcmV0dXJuIHNlbGYuX2Z1enp5CisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgZnV6enlfb3Zl
cnJpZGUoc2VsZik6CisgICAgICAgIHZhbHVlcyA9IHt9CisgICAgICAgIGZvciBtZXRhIGluIHJl
dmVyc2VkKGxpc3Qoc2VsZi5pdGVybWV0YShOb25lKSkpOgorICAgICAgICAgICAgdmFsdWUgPSBt
ZXRhLmZ1enp5CisgICAgICAgICAgICBpZiBub3QgdmFsdWU6CisgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgIGlmIGF0b21fcmVzZXQgaW4gdmFsdWU6CisgICAgICAgICAgICAg
ICAgdmFsdWUucmVtb3ZlKGF0b21fcmVzZXQpCisgICAgICAgICAgICAgICAgdmFsdWVzID0ge30K
KyAgICAgICAgICAgIGZvciBrZXksIGRhdGEgaW4gdmFsdWU6CisgICAgICAgICAgICAgICAgaWYg
aXNpbnN0YW5jZShrZXksICh0dXBsZSwgbGlzdCkpOgorICAgICAgICAgICAgICAgICAgICBrZXkg
PSBsaXN0KGtleSkKKyAgICAgICAgICAgICAgICAgICAga2V5WzBdID0gdXJsam9pbihzZWxmLnVy
bCwga2V5WzBdKQorICAgICAgICAgICAgICAgICAgICBrZXlbMV0gPSB1cmxqb2luKHNlbGYudXJs
LCBrZXlbMV0pCisgICAgICAgICAgICAgICAgICAgIGtleSA9IHR1cGxlKGtleSkKKyAgICAgICAg
ICAgICAgICBlbGlmIGtleToKKyAgICAgICAgICAgICAgICAgICAgIyBLZXkgaXMganVzdCBhIHJl
bGF0aXZlIHVybCB0byBhIHJlZgorICAgICAgICAgICAgICAgICAgICBrZXkgPSB1cmxqb2luKHNl
bGYudXJsLCBrZXkpCisgICAgICAgICAgICAgICAgdmFsdWVzW2tleV0gPSBkYXRhCisgICAgICAg
IHJldHVybiB2YWx1ZXMKKwogCiBjbGFzcyBXZHNwZWNUZXN0KFRlc3QpOgogCkBAIC00MzAsNiAr
NTU1LDYgQEAgbWFuaWZlc3RfdGVzdF9jbHMgPSB7InJlZnRlc3QiOiBSZWZ0ZXN0VGVzdCwKICAg
ICAgICAgICAgICAgICAgICAgICJ3ZHNwZWMiOiBXZHNwZWNUZXN0fQogCiAKLWRlZiBmcm9tX21h
bmlmZXN0KG1hbmlmZXN0X3Rlc3QsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEpOgor
ZGVmIGZyb21fbWFuaWZlc3QobWFuaWZlc3RfZmlsZSwgbWFuaWZlc3RfdGVzdCwgaW5oZXJpdF9t
ZXRhZGF0YSwgdGVzdF9tZXRhZGF0YSk6CiAgICAgdGVzdF9jbHMgPSBtYW5pZmVzdF90ZXN0X2Ns
c1ttYW5pZmVzdF90ZXN0Lml0ZW1fdHlwZV0KLSAgICByZXR1cm4gdGVzdF9jbHMuZnJvbV9tYW5p
ZmVzdChtYW5pZmVzdF90ZXN0LCBpbmhlcml0X21ldGFkYXRhLCB0ZXN0X21ldGFkYXRhKQorICAg
IHJldHVybiB0ZXN0X2Nscy5mcm9tX21hbmlmZXN0KG1hbmlmZXN0X2ZpbGUsIG1hbmlmZXN0X3Rl
c3QsIGluaGVyaXRfbWV0YWRhdGEsIHRlc3RfbWV0YWRhdGEpCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL1JFQURN
RS5tZCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvUkVBRE1FLm1kCmluZGV4IDMwYTdkY2NjOTNlZjE5N2Q1MWUzY2U5OWViNzhjMmUx
MTRkMTY1M2UuLjY4MjFkZWUzOGE0OThhNDcyY2Y3MTg2MWFjMjVhOGNkYTEyZTE3YWEgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvUkVBRE1FLm1kCisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvUkVBRE1FLm1kCkBAIC0zLDQgKzMsNCBAQCB3cHRz
ZXJ2ZQogCiBXZWIgc2VydmVyIGRlc2lnbmVkIGZvciB1c2Ugd2l0aCB3ZWItcGxhdGZvcm0tdGVz
dHMuCiAKLVt3cHRzZXJ2ZS5yZWFkdGhlZG9jcy5pb10oaHR0cDovL3dwdHNlcnZlLnJlYWR0aGVk
b2NzLmlvL2VuL2xhdGVzdC9pbmRleC5odG1sKQorU2VlIHRoZSBkb2NzIG9uIFt3ZWItcGxhdGZv
cm0tdGVzdHMub3JnXShodHRwczovL3dlYi1wbGF0Zm9ybS10ZXN0cy5vcmcvdG9vbHMvd3B0c2Vy
dmUvZG9jcy9pbmRleC5odG1sKS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9oYW5kbGVycy5yc3QgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L2RvY3MvaGFuZGxlcnMucnN0CmluZGV4IGMxNWFhYjYzNWQ5Njk3NmFmNTljNjA2ZDg0ZDBhNTc1
MDc0MzU0NGIuLjhlY2M5MzMyODhiNjM2OWI4NTViNmU3MzNiYWViYzBlNWExODFhODUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvZG9jcy9oYW5kbGVycy5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL2hhbmRsZXJzLnJzdApAQCAt
MjIsMjIgKzIyLDIyIEBAIFB5dGhvbiBIYW5kbGVycwogCiBQeXRob24gaGFuZGxlcnMgYXJlIGZ1
bmN0aW9ucyB3aGljaCBwcm92aWRlIGEgaGlnaGVyLWxldmVsIEFQSSBvdmVyCiBtYW51YWxseSB1
cGRhdGluZyB0aGUgcmVzcG9uc2Ugb2JqZWN0LCBieSBjYXVzaW5nIHRoZSByZXR1cm4gdmFsdWUg
b2YKLXRoZSBmdW5jdGlvbiB0byBwcm92aWRlIChwYXJ0IG9mKSB0aGUgcmVzcG9uc2UuIFRoZXJl
IGFyZSB0aHJlZQordGhlIGZ1bmN0aW9uIHRvIHByb3ZpZGUgKHBhcnQgb2YpIHRoZSByZXNwb25z
ZS4gVGhlcmUgYXJlIGZvdXIKIHBvc3NpYmxlIHNldHMgb2YgdmFsdWVzIHRoYXQgbWF5IGJlIHJl
dHVybmVkOjoKIAogCi0gIChzdGF0dXMsIGhlYWRlcnMsIGNvbnRlbnQpCisgICgoc3RhdHVzX2Nv
ZGUsIHJlYXNvbiksIGhlYWRlcnMsIGNvbnRlbnQpCisgIChzdGF0dXNfY29kZSwgaGVhZGVycywg
Y29udGVudCkKICAgKGhlYWRlcnMsIGNvbnRlbnQpCiAgIGNvbnRlbnQKIAotSGVyZSBgc3RhdHVz
YCBpcyBlaXRoZXIgYSB0dXBsZSAoc3RhdHVzIGNvZGUsIG1lc3NhZ2UpIG9yIHNpbXBseSBhCi1p
bnRlZ2VyIHN0YXR1cyBjb2RlLCBgaGVhZGVyc2AgaXMgYSBsaXN0IG9mIChmaWVsZCBuYW1lLCB2
YWx1ZSkgcGFpcnMsCi1hbmQgYGNvbnRlbnRgIGlzIGEgc3RyaW5nIG9yIGFuIGl0ZXJhYmxlIHJl
dHVybmluZyBzdHJpbmdzLiBTdWNoIGEKLWZ1bmN0aW9uIG1heSBhbHNvIHVwZGF0ZSB0aGUgcmVz
cG9uc2UgbWFudWFsbHkuIEZvciBleGFtcGxlIG9uZSBtYXkKLXVzZSBgcmVzcG9uc2UuaGVhZGVy
cy5zZXRgIHRvIHNldCBhIHJlc3BvbnNlIGhlYWRlciwgYW5kIG9ubHkgcmV0dXJuCi10aGUgY29u
dGVudC4gT25lIG1heSBldmVuIHVzZSB0aGlzIGtpbmQgb2YgaGFuZGxlciwgYnV0IG1hbmlwdWxh
dGUKLXRoZSBvdXRwdXQgc29ja2V0IGRpcmVjdGx5LCBpbiB3aGljaCBjYXNlIHRoZSByZXR1cm4g
dmFsdWUgb2YgdGhlCi1mdW5jdGlvbiwgYW5kIHRoZSBwcm9wZXJ0aWVzIG9mIHRoZSByZXNwb25z
ZSBvYmplY3QsIHdpbGwgYmUgaWdub3JlZC4KK0hlcmUgYHN0YXR1c19jb2RlYCBpcyBhbiBpbnRl
Z2VyIHN0YXR1cyBjb2RlLCBgaGVhZGVyc2AgaXMgYSBsaXN0IG9mIChmaWVsZAorbmFtZSwgdmFs
dWUpIHBhaXJzLCBhbmQgYGNvbnRlbnRgIGlzIGEgc3RyaW5nIG9yIGFuIGl0ZXJhYmxlIHJldHVy
bmluZyBzdHJpbmdzLgorU3VjaCBhIGZ1bmN0aW9uIG1heSBhbHNvIHVwZGF0ZSB0aGUgcmVzcG9u
c2UgbWFudWFsbHkuIEZvciBleGFtcGxlIG9uZSBtYXkgdXNlCitgcmVzcG9uc2UuaGVhZGVycy5z
ZXRgIHRvIHNldCBhIHJlc3BvbnNlIGhlYWRlciwgYW5kIG9ubHkgcmV0dXJuIHRoZSBjb250ZW50
LgorT25lIG1heSBldmVuIHVzZSB0aGlzIGtpbmQgb2YgaGFuZGxlciwgYnV0IG1hbmlwdWxhdGUg
dGhlIG91dHB1dCBzb2NrZXQKK2RpcmVjdGx5LCBpbiB3aGljaCBjYXNlIHRoZSByZXR1cm4gdmFs
dWUgb2YgdGhlIGZ1bmN0aW9uLCBhbmQgdGhlIHByb3BlcnRpZXMgb2YKK3RoZSByZXNwb25zZSBv
YmplY3QsIHdpbGwgYmUgaWdub3JlZC4KIAogVGhlIG1vc3QgY29tbW9uIHdheSB0byBtYWtlIGEg
dXNlciBmdW5jdGlvbiBpbnRvIGEgcHl0aG9uIGhhbmRsZXIgaXMKIHRvIHVzZSB0aGUgcHJvdmlk
ZWQgYHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXJgIGRlY29yYXRvcjo6CkBAIC03MSwxNiArNzEs
MTMgQEAgZGVjb3JhdG9yOjoKIFB5dGhvbiBGaWxlIEhhbmRsZXJzCiAtLS0tLS0tLS0tLS0tLS0t
LS0tLQogCi1QeXRob24gZmlsZSBoYW5kbGVycyBhcmUgZGVzaWduZWQgdG8gcHJvdmlkZSBhIHZh
Z3VlbHkgUEhQLWxpa2UgaW50ZXJmYWNlCi13aGVyZSBlYWNoIHJlc291cmNlIGNvcnJlc3BvbmRz
IHRvIGEgcGFydGljdWxhciBweXRob24gZmlsZSBvbiB0aGUKLWZpbGVzeXN0ZW0uIFR5cGljYWxs
eSB0aGlzIGlzIGhvb2tlZCB1cCB0byBhIHJvdXRlIGxpa2UgYGAoIioiLAotIioucHkiLCBweXRo
b25fZmlsZV9oYW5kbGVyKWBgLCBtZWFuaW5nIHRoYXQgYW55IC5weSBmaWxlIHdpbGwgYmUKLXRy
ZWF0ZWQgYXMgYSBoYW5kbGVyIGZpbGUgKG5vdGUgdGhhdCB0aGlzIG1ha2VzIHB5dGhvbiBmaWxl
cyB1bnNhZmUgaW4KLW11Y2ggdGhlIHNhbWUgd2F5IHRoYXQgLnBocCBmaWxlcyBhcmUgd2hlbiB1
c2luZyBQSFApLgorUHl0aG9uIGZpbGUgaGFuZGxlcnMgYXJlIFB5dGhvbiBmaWxlcyB3aGljaCB0
aGUgc2VydmVyIGV4ZWN1dGVzIGluIHJlc3BvbnNlIHRvCityZXF1ZXN0cyBtYWRlIHRvIHRoZSBj
b3JyZXNwb25kaW5nIFVSTC4gVGhpcyBpcyBob29rZWQgdXAgdG8gYSByb3V0ZSBsaWtlCitgYCgi
KiIsICIqLnB5IiwgcHl0aG9uX2ZpbGVfaGFuZGxlcilgYCwgbWVhbmluZyB0aGF0IGFueSAucHkg
ZmlsZSB3aWxsIGJlCit0cmVhdGVkIGFzIGEgaGFuZGxlciBmaWxlIChub3RlIHRoYXQgdGhpcyBt
YWtlcyBpdCBlYXN5IHRvIHdyaXRlIHVuc2FmZQoraGFuZGxlcnMsIHBhcnRpY3VsYXJseSB3aGVu
IHJ1bm5pbmcgdGhlIHNlcnZlciBpbiBhIHdlYi1leHBvc2VkIHNldHRpbmcpLgogCi1Vbmxpa2Ug
UEhQLCB0aGUgcHl0aG9uIGZpbGVzIGRvbid0IHdvcmsgYnkgb3V0cHV0dGluZyB0ZXh0IHRvIHN0
ZG91dAotZnJvbSB0aGUgZ2xvYmFsIHNjb3BlLiBJbnN0ZWFkIHRoZXkgbXVzdCBkZWZpbmUgYSBz
aW5nbGUgZnVuY3Rpb24KLWBtYWluYCB3aXRoIHRoZSBzaWduYXR1cmU6OgorVGhlIFB5dGhvbiBm
aWxlcyBtdXN0IGRlZmluZSBhIHNpbmdsZSBmdW5jdGlvbiBgbWFpbmAgd2l0aCB0aGUgc2lnbmF0
dXJlOjoKIAogICBtYWluKHJlcXVlc3QsIHJlc3BvbnNlKQogCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3Mv
cGlwZXMucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS9kb2NzL3BpcGVzLnJzdAppbmRleCA4ZmFlZWU0ODljOWZhYjcxMzg3NTQw
Zjk5NjAyM2UwMWE0Njk1NWQ3Li4xZWRiZDQ0ODY3MjU5YWEzMzdjYTcxNzUxM2M4NmQ1YWFmNTFi
Y2FmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3MvcGlwZXMucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9waXBlcy5yc3QK
QEAgLTEsMTYxICsxLDggQEAKIFBpcGVzCiA9PT09PT0KIAotUGlwZXMgYXJlIGZ1bmN0aW9ucyB0
aGF0IG1heSBiZSB1c2VkIHdoZW4gc2VydmluZyBmaWxlcyB0byBhbHRlciBwYXJ0cwotb2YgdGhl
IHJlc3BvbnNlLiBUaGVzZSBhcmUgaW52b2tlZCBieSBhZGRpbmcgYSBwaXBlPSBxdWVyeSBwYXJh
bWV0ZXIKLXRha2luZyBhIHwgc2VwYXJhdGVkIGxpc3Qgb2YgcGlwZSBmdW5jdGlvbnMgYW5kIHBh
cmFtZXRlcnMuIFRoZSBwaXBlCi1mdW5jdGlvbnMgYXJlIGFwcGxpZWQgdG8gdGhlIHJlc3BvbnNl
IGZyb20gbGVmdCB0byByaWdodC4gRm9yIGV4YW1wbGU6OgotCi0gIEdFVCAvc2FtcGxlLnR4dD9w
aXBlPXNsaWNlKDEsMjAwKXxzdGF0dXMoNDA0KS4KLQotVGhpcyB3b3VsZCBzZXJ2ZSBieXRlcyAx
IHRvIDE5OSwgaW5jbHVzaXZlLCBvZiBmb28udHh0IHdpdGggdGhlIEhUVFAgc3RhdHVzCi1jb2Rl
IDQwNC4KLQotLi4gbm90ZTo6Ci0gICBJZiB5b3Ugd3JpdGUgZGlyZWN0bHkgdG8gdGhlIHJlc3Bv
bnNlIHNvY2tldCB1c2luZyBSZXNwb25zZVdyaXRlciwKLSAgIG9yIHdoZW4gdXNpbmcgdGhlIGFz
aXMgaGFuZGxlciwgb25seSB0aGUgdHJpY2tsZSBwaXBlIHdpbGwgYWZmZWN0IHRoZSByZXNwb25z
ZS4KLQotVGhlcmUgYXJlIHNldmVyYWwgYnVpbHQtaW4gcGlwZSBmdW5jdGlvbnMsIGFuZCBpdCBp
cyBwb3NzaWJsZSB0byBhZGQKLW1vcmUgdXNpbmcgdGhlIGBAcGlwZWAgZGVjb3JhdG9yIG9uIGEg
ZnVuY3Rpb24sIGlmIHJlcXVpcmVkLgotCi0uLiBub3RlOjoKLSAgIEJlY2F1c2Ugb2YgdGhlIHdh
eSBwaXBlcyBjb21wb3NlLCB1c2luZyBzb21lIHBpcGUgZnVuY3Rpb25zIHByZXZlbnRzIHRoZQot
ICAgY29udGVudC1sZW5ndGggb2YgdGhlIHJlc3BvbnNlIGZyb20gYmVpbmcga25vd24gaW4gYWR2
YW5jZS4gSW4gdGhlc2UgY2FzZXMKLSAgIHRoZSBzZXJ2ZXIgd2lsbCBjbG9zZSB0aGUgY29ubmVj
dGlvbiB0byBpbmRpY2F0ZSB0aGUgZW5kIG9mIHRoZSByZXNwb25zZSwKLSAgIHByZXZlbnRpbmcg
dGhlIHVzZSBvZiBIVFRQIDEuMSBrZWVwYWxpdmUuCi0KLUJ1aWx0LUluIFBpcGVzCi0tLS0tLS0t
LS0tLS0tLQotCi1zdWIKLX5+fgotCi1Vc2VkIHRvIHN1YnN0aXR1dGUgdmFyaWFibGVzIGZyb20g
dGhlIHNlcnZlciBlbnZpcm9ubWVudCwgb3IgZnJvbSB0aGUKLXJlcXVlc3QgaW50byB0aGUgcmVz
cG9uc2UuCi0KLVN1YnN0aXR1dGlvbnMgYXJlIG1hcmtlZCBpbiBhIGZpbGUgdXNpbmcgYSBibG9j
ayBkZWxpbWl0ZWQgYnkgYHt7YAotYW5kIGB9fWAuIEluc2lkZSB0aGUgYmxvY2sgdGhlIGZvbGxv
d2luZyB2YXJpYWJsZXMgYXJlIGF2YWlsYWJsZToKLQotICBge3tob3N0fX1gCi0gICAgVGhlIGhv
c3QgbmFtZSBvZiB0aGUgc2VydmVyIGV4Y2x1ZGluZyBhbnkgc3ViZG9tYWluIHBhcnQuCi0KLSAg
YHt7ZG9tYWluc1tdfX1gCi0gICAgVGhlIGRvbWFpbiBuYW1lIG9mIGEgcGFydGljdWxhciBzdWJk
b21haW4KLSAgICAgIGUuZy4gYHt7ZG9tYWluc1t3d3ddfX1gIGZvciB0aGUgYHd3d2Agc3ViZG9t
YWluLgotCi0gIGB7e3BvcnRzW11bXX19YAotICAgIFRoZSBwb3J0IG51bWJlciBvZiBzZXJ2ZXJz
LCBieSBwcm90b2NvbAotICAgICAgZS5nLiBge3twb3J0c1todHRwXVswXX19YCBmb3IgdGhlIGZp
cnN0IChhbmQsIGRlcGVuZGluZyBvbiBzZXR1cCwKLSAgICAgIHBvc3NpYmx5IG9ubHkpIGh0dHAg
c2VydmVyCi0KLSAgYHt7aGVhZGVyc1tdfX1gCi0gICAgVGhlIEhUVFAgaGVhZGVycyBpbiB0aGUg
cmVxdWVzdAotICAgICAgZS5nLiBge3toZWFkZXJzW1gtVGVzdF19fWAgZm9yIGEgaHlwb3RoZXRp
Y2FsIGBYLVRlc3RgIGhlYWRlci4KLQotICBge3tHRVRbXX19YAotICAgIFRoZSBxdWVyeSBwYXJh
bWV0ZXJzIGZvciB0aGUgcmVxdWVzdAotICAgICAgZS5nLiBge3tHRVRbaWRdfX1gIGZvciBhbiBp
ZCBwYXJhbWV0ZXIgc2VudCB3aXRoIHRoZSByZXF1ZXN0LgotCi1TbywgZm9yIGV4YW1wbGUsIHRv
IHdyaXRlIGEgamF2YXNjcmlwdCBmaWxlIGNhbGxlZCBgeGhyLmpzYCB0aGF0Ci1kZXBlbmRzIG9u
IHRoZSBob3N0IG5hbWUgb2YgdGhlIHNlcnZlciwgd2l0aG91dCBoYXJkY29kaW5nLCBvbmUgbWln
aHQKLXdyaXRlOjoKLQotICAgIHZhciBzZXJ2ZXJfdXJsID0gaHR0cDovL3t7aG9zdH19Ont7cG9y
dHNbaHR0cF1bMF19fS9wYXRoL3RvL3Jlc291cmNlOwotICAgIC8vQ3JlYXRlIHRoZSBhY3R1YWwg
WEhSIGFuZCBzbyBvbgotCi1UaGUgZmlsZSB3b3VsZCB0aGVuIGJlIGluY2x1ZGVkIGFzOgotCi0g
ICAgPHNjcmlwdCBzcmM9Inhoci5qcz9waXBlPXN1YiI+PC9zY3JpcHQ+Ci0KLVRoaXMgcGlwZSBj
YW4gYWxzbyBiZSBlbmFibGVkIGJ5IHVzaW5nIGEgZmlsZW5hbWUgYCouc3ViLmV4dGAsIGUuZy4g
dGhlIGZpbGUgYWJvdmUgY291bGQgYmUgY2FsbGVkIGB4aHIuc3ViLmpzYC4KLQotc3RhdHVzCi1+
fn5+fn4KLQotVXNlZCB0byBzZXQgdGhlIEhUVFAgc3RhdHVzIG9mIHRoZSByZXNwb25zZSwgZm9y
IGV4YW1wbGU6OgotCi0gICAgZXhhbXBsZS5qcz9waXBlPXN0YXR1cyg0MTApCi0KLWhlYWRlcnMK
LX5+fn5+fn4KLQotVXNlZCB0byBhZGQgb3IgcmVwbGFjZSBodHRwIGhlYWRlcnMgaW4gdGhlIHJl
c3BvbnNlLiBUYWtlcyB0d28gb3IKLXRocmVlIGFyZ3VtZW50czsgdGhlIGhlYWRlciBuYW1lLCB0
aGUgaGVhZGVyIHZhbHVlIGFuZCB3aGV0aGVyIHRvCi1hcHBlbmQgdGhlIGhlYWRlciByYXRoZXIg
dGhhbiByZXBsYWNlIGFuIGV4aXN0aW5nIGhlYWRlciAoZGVmYXVsdDoKLUZhbHNlKS4gU28sIGZv
ciBleGFtcGxlLCBhIHJlcXVlc3QgZm9yOjoKLQotICAgIGV4YW1wbGUuaHRtbD9waXBlPWhlYWRl
cihDb250ZW50LVR5cGUsdGV4dC9wbGFpbikKLQotY2F1c2VzIGV4YW1wbGUuaHRtbCB0byBiZSBy
ZXR1cm5lZCB3aXRoIGEgdGV4dC9wbGFpbiBjb250ZW50IHR5cGUKLXdoZXJlYXM6OgotCi0gICAg
ZXhhbXBsZS5odG1sP3BpcGU9aGVhZGVyKENvbnRlbnQtVHlwZSx0ZXh0L3BsYWluLFRydWUpCi0K
LVdpbGwgY2F1c2UgZXhhbXBsZS5odG1sIHRvIGJlIHJldHVybmVkIHdpdGggYm90aCB0ZXh0L2h0
bWwgYW5kCi10ZXh0L3BsYWluIGNvbnRlbnQtdHlwZSBoZWFkZXJzLgotCi1zbGljZQotfn5+fn4K
LQotVXNlZCB0byBzZW5kIG9ubHkgcGFydCBvZiBhIHJlc3BvbnNlIGJvZHkuIFRha2VzIHRoZSBz
dGFydCBhbmQsCi1vcHRpb25hbGx5LCBlbmQgYnl0ZXMgYXMgYXJndW1lbnRzLCBhbHRob3VnaCBl
aXRoZXIgY2FuIGJlIG51bGwgdG8KLWluZGljYXRlIHRoZSBzdGFydCBvciBlbmQgb2YgdGhlIGZp
bGUsIHJlc3BlY3RpdmVseS4gU28gZm9yIGV4YW1wbGU6OgotCi0gICAgZXhhbXBsZS50eHQ/cGlw
ZT1zbGljZSgxMCwyMCkKLQotV291bGQgcmVzdWx0IGluIGEgcmVzcG9uc2Ugd2l0aCBhIGJvZHkg
Y29udGFpbmluZyAxMCBieXRlcyBvZgotZXhhbXBsZS50eHQgaW5jbHVkaW5nIGJ5dGUgMTAgYnV0
IGV4Y2x1ZGluZyBieXRlIDIwLgotCi06OgotCi0gICAgZXhhbXBsZS50eHQ/cGlwZT1zbGljZSgx
MCkKLQotV291bGQgY2F1c2UgYWxsIGJ5dGVzIGZyb20gYnl0ZSAxMCBvZiBleGFtcGxlLnR4dCB0
byBiZSBzZW50LCBidXQ6OgotCi0gICAgZXhhbXBsZS50eHQ/cGlwZT1zbGljZShudWxsLDIwKQot
Ci1Xb3VsZCBzZW5kIHRoZSBmaXJzdCAyMCBieXRlcyBvZiBleGFtcGxlLnR4dC4KLQotdHJpY2ts
ZQotfn5+fn5+fgotCi0uLiBub3RlOjoKLSAgIFVzaW5nIHRoaXMgZnVuY3Rpb24gd2lsbCBmb3Jj
ZSBhIGNvbm5lY3Rpb24gY2xvc2UuCi0KLVVzZWQgdG8gc2VuZCB0aGUgYm9keSBvZiBhIHJlc3Bv
bnNlIGluIGNodW5rcyB3aXRoIGRlbGF5cy4gVGFrZXMgYQotc2luZ2xlIGFyZ3VtZW50IHRoYXQg
aXMgYSBtaWNyb3N5bnRheCBjb25zaXN0aW5nIG9mIGNvbG9uLXNlcGFyYXRlZAotY29tbWFuZHMu
IFRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBjb21tYW5kczoKLQotKiBCYXJlIG51bWJlcnMgcmVw
cmVzZW50IGEgbnVtYmVyIG9mIGJ5dGVzIHRvIHNlbmQKLQotKiBOdW1iZXJzIHByZWZpeGVkIGBk
YCBpbmRpY2F0ZSBhIGRlbGF5IGluIHNlY29uZHMKLQotKiBOdW1iZXJzIHByZWZpeGVkIGByYCBt
dXN0IG9ubHkgYXBwZWFyIGF0IHRoZSBlbmQgb2YgdGhlIGNvbW1hbmQsIGFuZAotICBpbmRpY2F0
ZSB0aGF0IHRoZSBwcmVjZWRpbmcgTiBpdGVtcyBtdXN0IGJlIHJlcGVhdGVkIHVudGlsIHRoZXJl
IGlzCi0gIG5vIG1vcmUgY29udGVudCB0byBzZW5kLiBUaGUgbnVtYmVyIG9mIGl0ZW1zIHRvIHJl
cGVhdCBtdXN0IGJlIGV2ZW4uCi0KLUluIHRoZSBhYnNlbmNlIG9mIGEgcmVwZXRpdGlvbiBjb21t
YW5kLCB0aGUgZW50aXJlIHJlbWFpbmRlciBvZiB0aGUgY29udGVudCBpcwotc2VudCBhdCBvbmNl
IHdoZW4gdGhlIGNvbW1hbmQgbGlzdCBpcyBleGhhdXN0ZWQuIFNvIGZvciBleGFtcGxlOjoKLQot
ICAgIGV4YW1wbGUudHh0P3BpcGU9dHJpY2tsZShkMSkKLQotY2F1c2VzIGEgMXMgZGVsYXkgYmVm
b3JlIHNlbmRpbmcgdGhlIGVudGlyZXR5IG9mIGV4YW1wbGUudHh0LgotCi06OgotCi0gICAgZXhh
bXBsZS50eHQ/cGlwZT10cmlja2xlKDEwMDpkMSkKLQotY2F1c2VzIDEwMCBieXRlcyBvZiBleGFt
cGxlLnR4dCB0byBiZSBzZW50LCBmb2xsb3dlZCBieSBhIDFzIGRlbGF5LAotYW5kIHRoZW4gdGhl
IHJlbWFpbmRlciBvZiB0aGUgZmlsZSB0byBiZSBzZW50LiBPbiB0aGUgb3RoZXIgaGFuZDo6Ci0K
LSAgICBleGFtcGxlLnR4dD9waXBlPXRyaWNrbGUoMTAwOmQxOnIyKQotCi1XaWxsIGNhdXNlIHRo
ZSBmaWxlIHRvIGJlIHNlbnQgaW4gMTAwIGJ5dGUgY2h1bmtzIHNlcGFyYXRlZCBieSBhIDFzCi1k
ZWxheSB1bnRpbCB0aGUgd2hvbGUgY29udGVudCBoYXMgYmVlbiBzZW50LgotCi0KLTptb2Q6YElu
dGVyZmFjZSA8cGlwZXM+YAotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis6bW9kOmBJbnRlcmZh
Y2UgPHdwdHNlcnZlLnBpcGVzPmAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQog
CiAuLiBhdXRvbW9kdWxlOjogd3B0c2VydmUucGlwZXMKICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS9kb2NzL3JlcXVlc3QucnN0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL3JlcXVlc3QucnN0CmluZGV4IDc5MGU0ZjBi
YjAyMzk3YzAwNmNiNTQ4MjNiOTBlODA4YTBkYmQ1NTIuLmVmNWI4YTBjMDhlNzczNmEyMzM1OTZk
NmZmMGQ0YjM3MmIyMGIzMGYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9yZXF1ZXN0LnJzdAorKysgYi9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L2RvY3MvcmVxdWVzdC5yc3QKQEAgLTMsOCArMyw4IEBAIFJlcXVlc3QKIAogUmVxdWVzdCBvYmpl
Y3QuCiAKLTptb2Q6YEludGVyZmFjZSA8cmVxdWVzdD5gCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLQorOm1vZDpgSW50ZXJmYWNlIDx3cHRzZXJ2ZS5yZXF1ZXN0PmAKKy0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGF1dG9tb2R1bGU6OiB3cHRzZXJ2ZS5yZXF1ZXN0
CiAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9yZXNwb25zZS5yc3QgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3Mv
cmVzcG9uc2UucnN0CmluZGV4IDIzMDc1ZGZiM2Q5OWVlMTA0NWU3YjFkOGQ0MTA3Mjk3NjJjNmM1
MTEuLjBjMmY0NWNlMjY0ZGJjNmIxM2VjOTNlOTA1OTIwYWEwZDU2YTJjZTIgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvZG9jcy9yZXNwb25zZS5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL3Jlc3BvbnNlLnJzdApAQCAtMzQsOCAr
MzQsOCBAQCBjb250aW51ZSB0byBsb2FkIGluZGVmaW5pdGVseS4KIAogLi4gX3Jlc3BvbnNlLklu
dGVyZmFjZToKIAotOm1vZDpgSW50ZXJmYWNlIDxyZXNwb25zZT5gCi0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0KKzptb2Q6YEludGVyZmFjZSA8d3B0c2VydmUucmVzcG9uc2U+YAorLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGF1dG9tb2R1bGU6OiB3cHRzZXJ2
ZS5yZXNwb25zZQogICAgOm1lbWJlcnM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3Mvcm91dGVyLnJzdCBi
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvZG9jcy9yb3V0ZXIucnN0CmluZGV4IDIxZDY3ZDIyMjY4OWMyMWE4YWVlMWY4Yjk5NTkyY2Y2
ZGU4NjAwOGEuLjk4NmY1ODE5MjI4ZWI0NmFhMTdhZTgwMjViZjJmODNhMTQ1OTJhNmYgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvZG9jcy9yb3V0ZXIucnN0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9yb3V0ZXIucnN0CkBAIC03MSw4
ICs3MSw4IEBAIHJlc3BvbnNpYmxlIGZvciBjb25zdHJ1Y3RpbmcgdGhlIHJlc3BvbnNlIHRvIHRo
ZSBIVFRQIHJlcXVlc3QuIFNlZQogCiAuLiBfcm91dGVyLkludGVyZmFjZToKIAotOm1vZDpgSW50
ZXJmYWNlIDx3cHRzZXJ2ZT5gCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKzptb2Q6YElu
dGVyZmFjZSA8d3B0c2VydmUucm91dGVyPmAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0KIAogLi4gYXV0b21vZHVsZTo6IHdwdHNlcnZlLnJvdXRlcgogICAgOm1lbWJlcnM6CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL2RvY3Mvc2VydmVyLnJzdCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9zZXJ2ZXIucnN0CmluZGV4IDcz
MmY5ZmRjNzhhZjViNjVlYzhkYWE3MDdlMmJlNTZmOTk1MTE4NzUuLjU2ODhhMGEzYmNmZDc5Yzll
MGU2YTU3YzNmYzgyZjU1NGQxN2VhM2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9zZXJ2ZXIucnN0Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvZG9jcy9zZXJ2ZXIucnN0CkBAIC0xMyw4ICsxMyw4IEBAIHJ1biBvbiBwb3J0IDgwODAg
dW50aWwgaXQgaXMga2lsbGVkOjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRl
cz1bKCJHRVQiLCAiKiIsIGhhbmRsZXJzLmZpbGVfaGFuZGxlcildKQogICBodHRwZC5zdGFydChi
bG9jaz1UcnVlKQogCi06bW9kOmBJbnRlcmZhY2UgPHdwdHNlcnZlPmAKLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorOm1vZDpgSW50ZXJmYWNlIDx3cHRzZXJ2ZS5zZXJ2ZXI+YAorLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBhdXRvbW9kdWxlOjogd3B0c2VydmUu
c2VydmVyCiAgICA6bWVtYmVyczoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9zdGFzaC5yc3QgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2Rv
Y3Mvc3Rhc2gucnN0CmluZGV4IDQ5ODQ2ZjIxMDYxYjMwYjRkNGE1NGU3ZTdjZmZjOWRkMTIyYTdh
NjcuLjhiYTVlZDc0YTRhZmY3ZDRjMjJlYjliNmM5MTMyYThlZmZhNDQwNWEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvZG9jcy9zdGFzaC5yc3QKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL3N0YXNoLnJzdApAQCAtMjQsOCArMjQsOCBA
QCBBIHR5cGljYWwgZXhhbXBsZSBvZiB1c2luZyBhIHN0YXNoIHRvIHN0b3JlIHN0YXRlIG1pZ2h0
IGJlOjoKICAgICAgICAgICBhc3NlcnQgcmVxdWVzdC5zZXJ2ZXIuc3Rhc2gudGFrZShrZXkpIGlz
IE5vbmUKICAgICAgICAgICByZXR1cm4ga2V5CiAKLTptb2Q6YEludGVyZmFjZSA8c3Rhc2g+YAot
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCis6bW9kOmBJbnRlcmZhY2UgPHdwdHNlcnZlLnN0YXNo
PmAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAuLiBhdXRvbW9kdWxlOjog
d3B0c2VydmUuc3Rhc2gKICAgIDptZW1iZXJzOgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL3czYy1pbXBv
cnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS9kb2NzL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCA3ZDE2YzczMmNhYmY5YjdlZmEwNGNmYjI4NmQzZTNlNWIzY2RkYTIxLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy93M2MtaW1wb3J0Lmxv
ZworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVRoZSB0ZXN0cyBpbiB0aGlzIGRpcmVj
dG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5LgotRG8gTk9UIG1vZGlm
eSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFkLCBjcmVhdGUgYSBwdWxs
IHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1NjcmlwdHMvaW1wb3J0LXczYy10
ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlmeSBvciByZW1vdmUgdGhp
cyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVxdWlyaW5nIHZlbmRvciBw
cmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVz
OgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9NYWtlZmls
ZQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvZG9jcy9jb25mLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS9kb2NzL2hhbmRsZXJzLnJzdAotL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9pbmRleC5y
c3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL2RvY3MvaW50cm9kdWN0aW9uLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9tYWtlLmJhdAotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9w
aXBlcy5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL2RvY3MvcmVxdWVzdC5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3MvcmVzcG9uc2UucnN0Ci0vTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9k
b2NzL3JvdXRlci5yc3QKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL2RvY3Mvc2VydmVyLnJzdAotL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvZG9jcy9zdGFzaC5yc3QKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9fX2luaXRfXy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rp
b25hbC9fX2luaXRfXy5weQppbmRleCBhNjgzNGI4Mjg1YTU2YmVmMGUxNTQzZmQ5MDFjN2U2ZjJm
OGJjMjAyLi5lNjlkZTI5YmIyZDFkNjQzNGI4YjI5YWU3NzVhZDhjMmU0OGM1MzkxIDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvX19pbml0X18ucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1w
b3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlv
bmFsL19faW5pdF9fLnB5CkBAIC0xICswLDAgQEAKLSMgVGhpcyBmaWxlIGlzIHJlcXVpcmVkIGZv
ciBQeXRob24gdG8gc2VhcmNoIHRoaXMgZGlyZWN0b3J5IGZvciBtb2R1bGVzLgpcIE5vIG5ld2xp
bmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9iYXNlLnB5
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2Jhc2UucHkKaW5kZXggZTQ5YzgyODdjNTk4NWFhNWViYmVk
MDRlZjMwNzBiYzc4NTgzMTczMy4uMGFlY2ViNjE1ODk2ODE1ZDA1ZWUyOTcxMzQxZWZjMjA0Y2Nm
MzE5YyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2Jhc2UucHkKKysrIGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0
cy9mdW5jdGlvbmFsL2Jhc2UucHkKQEAgLTksNyArOSw3IEBAIGltcG9ydCB1bml0dGVzdAogZnJv
bSBzaXgubW92ZXMudXJsbGliLnBhcnNlIGltcG9ydCB1cmxlbmNvZGUsIHVybHVuc3BsaXQKIGZy
b20gc2l4Lm1vdmVzLnVybGxpYi5yZXF1ZXN0IGltcG9ydCBSZXF1ZXN0IGFzIEJhc2VSZXF1ZXN0
CiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgotZnJvbSBzaXgg
aW1wb3J0IGJpbmFyeV90eXBlLCBpdGVyaXRlbXMKK2Zyb20gc2l4IGltcG9ydCBiaW5hcnlfdHlw
ZSwgaXRlcml0ZW1zLCBQWTMKIAogZnJvbSBoeXBlciBpbXBvcnQgSFRUUDIwQ29ubmVjdGlvbiwg
dGxzCiBpbXBvcnQgc3NsCkBAIC03NSwxMCArNzUsMTUgQEAgY2xhc3MgVGVzdFVzaW5nU2VydmVy
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIHJlcS5hZGRfZGF0YShib2R5KQogCiAg
ICAgICAgIGlmIGF1dGggaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXEuYWRkX2hlYWRlcigi
QXV0aG9yaXphdGlvbiIsICJCYXNpYyAlcyIgJSBiYXNlNjQuYjY0ZW5jb2RlKCclczolcycgJSBh
dXRoKSkKKyAgICAgICAgICAgIHJlcS5hZGRfaGVhZGVyKCJBdXRob3JpemF0aW9uIiwgYiJCYXNp
YyAlcyIgJSBiYXNlNjQuYjY0ZW5jb2RlKGIiJXM6JXMiICUgYXV0aCkpCiAKICAgICAgICAgcmV0
dXJuIHVybG9wZW4ocmVxKQogCisgICAgZGVmIGFzc2VydF9tdWx0aXBsZV9oZWFkZXJzKHNlbGYs
IHJlc3AsIG5hbWUsIHZhbHVlcyk6CisgICAgICAgIGlmIFBZMzoKKyAgICAgICAgICAgIGFzc2Vy
dCByZXNwLmluZm8oKS5nZXRfYWxsKG5hbWUpID09IHZhbHVlcworICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgYXNzZXJ0IHJlc3AuaW5mbygpW25hbWVdID09ICIsICIuam9pbih2YWx1ZXMpCiAK
IEBweXRlc3QubWFyay5za2lwaWYobm90IHdwdHNlcnZlLnV0aWxzLmh0dHAyX2NvbXBhdGlibGUo
KSwgcmVhc29uPSJoMiBzZXJ2ZXIgb25seSB3b3JrcyBpbiBweXRob24gMi43LjE1IikKIGNsYXNz
IFRlc3RVc2luZ0gyU2VydmVyOgpAQCAtMTAxLDUgKzEwNiw1MSBAQCBjbGFzcyBUZXN0VXNpbmdI
MlNlcnZlcjoKICAgICAgICAgc2VsZi5jb25uLmNvbm5lY3QoKQogCiAgICAgZGVmIHRlYXJkb3du
X21ldGhvZChzZWxmLCB0ZXN0X21ldGhvZCk6Ci0gICAgICAgIHNlbGYuY29ubi5jbG9zZSgpCiAg
ICAgICAgIHNlbGYuc2VydmVyLnN0b3AoKQorCisKK2NsYXNzIFRlc3RXcmFwcGVySGFuZGxlclVz
aW5nU2VydmVyKFRlc3RVc2luZ1NlcnZlcik6CisgICAgJycnRm9yIGEgd3JhcHBlciBoYW5kbGVy
LCBhIC5qcyBkdW1teSB0ZXN0aW5nIGZpbGUgaXMgcmVxdXJpZWQgdG8gcmVuZGVyCisgICAgdGhl
IGh0bWwgZmlsZS4gVGhpcyBjbGFzcyBleHRlbmRzIHRoZSBUZXN0VXNpbmdTZXJ2ZXIgYW5kIGRv
IHNvbWUgc29tZQorICAgIGV4dHJhIHdvcms6IGl0IHRyaWVzIHRvIGdlbmVyYXRlIHRoZSBkdW1t
eSAuanMgZmlsZSBpbiBzZXRVcCBhbmQKKyAgICByZW1vdmUgaXQgaW4gdGVhckRvd24uJycnCisg
ICAgZHVtbXlfanNfZmlsZXMgPSB7fQorCisgICAgZGVmIGdlbl9qc19maWxlKHNlbGYsIGZpbGVu
YW1lLCBlbXB0eT1UcnVlLCBjb250ZW50PWInJyk6CisgICAgICAgIHNlbGYucmVtb3ZlX2pzX2Zp
bGUoZmlsZW5hbWUpCisKKyAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKSBhcyBmcDoK
KyAgICAgICAgICAgIGlmIG5vdCBlbXB0eToKKyAgICAgICAgICAgICAgICBmcC53cml0ZShjb250
ZW50KQorCisgICAgZGVmIHJlbW92ZV9qc19maWxlKHNlbGYsIGZpbGVuYW1lKToKKyAgICAgICAg
aWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgorICAgICAgICAgICAgb3MucmVtb3ZlKGZpbGVu
YW1lKQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcihUZXN0V3JhcHBlckhh
bmRsZXJVc2luZ1NlcnZlciwgc2VsZikuc2V0VXAoKQorCisgICAgICAgIGZvciBmaWxlbmFtZSwg
Y29udGVudCBpbiBzZWxmLmR1bW15X2pzX2ZpbGVzLml0ZW1zKCk6CisgICAgICAgICAgICBmaWxl
cGF0aCA9IG9zLnBhdGguam9pbihkb2Nfcm9vdCwgZmlsZW5hbWUpCisgICAgICAgICAgICBpZiBj
b250ZW50ID09ICcnOgorICAgICAgICAgICAgICAgIHNlbGYuZ2VuX2pzX2ZpbGUoZmlsZXBhdGgp
CisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZ2VuX2pzX2ZpbGUoZmls
ZXBhdGgsIEZhbHNlLCBjb250ZW50KQorCisgICAgZGVmIHJ1bl93cmFwcGVyX3Rlc3Qoc2VsZiwg
cmVxX2ZpbGUsIGhlYWRlcl9kYXRhLCB3cmFwcGVyX2hhbmRsZXIpOgorICAgICAgICByb3V0ZSA9
ICgnR0VUJywgcmVxX2ZpbGUsIHdyYXBwZXJfaGFuZGxlcigpKQorICAgICAgICBzZWxmLnNlcnZl
ci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQorCisgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qo
cm91dGVbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwLmdldGNvZGUoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJfZGF0YSwgcmVzcC5pbmZvKClbJ0NvbnRl
bnQtVHlwZSddKQorCisgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZG9jX3Jvb3QsIHJl
cV9maWxlKSwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZwLnJl
YWQoKSwgcmVzcC5yZWFkKCkpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHN1
cGVyKFRlc3RXcmFwcGVySGFuZGxlclVzaW5nU2VydmVyLCBzZWxmKS50ZWFyRG93bigpCisKKyAg
ICAgICAgZm9yIGZpbGVuYW1lLCBfIGluIHNlbGYuZHVtbXlfanNfZmlsZXMuaXRlbXMoKToKKyAg
ICAgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2luKGRvY19yb290LCBmaWxlbmFtZSkKKyAg
ICAgICAgICAgIHNlbGYucmVtb3ZlX2pzX2ZpbGUoZmlsZXBhdGgpCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2Rv
Y3Jvb3QvaW52YWxpZC5weQppbmRleCAwMTdkNGQ5ZDY5N2I5ZTQxMTdjN2MwM2FmN2IxZjhlYWMy
MTk3MTA1Li45OWY3YjcyY2VlZmRiNjNmNDBmYTFmZDM3Y2NmZmU0OTdkM2VlMjk2IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlkLnB5CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC9kb2Nyb290L2ludmFsaWQucHkKQEAgLTEsMyArMSwzIEBACi0jIE9vcHMuLi4K
LWRlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlCisjIEludGVudGlvbmFsIHN5bnRheCBlcnJvciBp
biB0aGlzIGZpbGUKK2RlZiBtYWluKHJlcXVlc3QsIHJlc3BvbnNlOgogICAgIHJldHVybiAiRkFJ
TCIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci93M2MtaW1w
b3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1YmRpci93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE4MDNmNGZmZDU3MTMzMGU1M2EwODJi
YzBlMjk0MWUzZjQ5Y2NlMy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJkaXIvdzNjLWltcG9ydC5sb2cK
KysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rv
cnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkg
dGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCBy
ZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZv
cm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVz
dHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMg
ZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJl
Zml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoK
LU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9u
YWwvZG9jcm9vdC9zdWJkaXIvZXhhbXBsZV9tb2R1bGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
ZG9jcm9vdC9zdWJkaXIvZmlsZS50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJk
aXIvaW1wb3J0X2hhbmRsZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Ny
b290L3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvdzNjLWltcG9y
dC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzZmU2MjcwMGY1ZTIwNGVmNzcy
ZDNmYWNhMjI1ZWQ4Mjg3ZjZmYjkuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90
b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3QvdzNjLWltcG9ydC5sb2cKKysr
IC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkg
d2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhl
c2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1
ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0t
dGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMg
aW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmls
ZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4
ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5v
bmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
ZG9jcm9vdC9kb2N1bWVudC50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9pbnZhbGlk
LnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvbm9fbWFpbi5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVu
Y3Rpb25hbC9kb2Nyb290L3N1Yi5zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qv
c3ViLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9maWxlX2hhc2guc3ViLnR4
dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9maWxlX2hhc2hfc3ViamVjdC50eHQK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfZmlsZV9oYXNoX3VucmVjb2duaXplZC5z
dWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvc3ViX2hlYWRlcnMuc3ViLnR4dAot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl9oZWFkZXJzLnR4dAotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVu
Y3Rpb25hbC9kb2Nyb290L3N1Yl9sb2NhdGlvbi5zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L2RvY3Jvb3Qvc3ViX3BhcmFtcy5zdWIudHh0Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qv
c3ViX3BhcmFtcy50eHQKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfdXJsX2Jhc2Uu
c3ViLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3N1Yl91dWlkLnN1Yi50eHQKLS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC9zdWJfdmFyLnN1Yi50eHQKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0
aW9uYWwvZG9jcm9vdC90ZXN0LmFzaXMKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC90ZXN0
X2gyX2RhdGEucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC90ZXN0X2gyX2hlYWRlcnMu
cHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dw
dHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvZG9jcm9vdC90ZXN0X2gyX2hlYWRlcnNfZGF0YS5weQot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3Rlc3Rfc3RyaW5nLnB5Ci0vTGF5b3V0VGVzdHMv
aW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5j
dGlvbmFsL2RvY3Jvb3QvdGVzdF90dXBsZV8yLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jv
b3QvdGVzdF90dXBsZV8zLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL2RvY3Jvb3Qvd2l0aF9oZWFk
ZXJzLnR4dAotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC9kb2Nyb290L3dpdGhfaGVhZGVycy50eHQuc3Vi
LmhlYWRlcnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9jb29raWVzLnB5CmluZGV4IDZiY2I4NDJlNjI1NjFi
NWZlMGY3Yzk1YjNmYWY1ZWI4YTUyNzY3MmIuLjJlMmQwZDY3NzFiYTI2YTFmYmU3ZThmYzhiYjJl
MjU5OGJjMzQyMjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nvb2tpZXMu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfY29va2llcy5weQpAQCAtMSw0ICsxLDMg
QEAKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogCiBpbXBvcnQgcHl0ZXN0CkBAIC01MSw3
ICs1MCw2IEBAIGNsYXNzIFRlc3RSZXNwb25zZVNldENvb2tpZShUZXN0VXNpbmdTZXJ2ZXIpOgog
ICAgICAgICAjU2hvdWxkIGFsc28gY2hlY2sgdGhhdCBleHBpcmVzIGlzIGluIHRoZSBwYXN0CiAK
IGNsYXNzIFRlc3RSZXF1ZXN0Q29va2llcyhUZXN0VXNpbmdTZXJ2ZXIpOgotICAgIEBweXRlc3Qu
bWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25s
eSB3b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0X3NldF9jb29raWUoc2VsZik6CiAgICAgICAg
IEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3Qs
IHJlc3BvbnNlKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2hhbmRsZXJz
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfaGFuZGxlcnMucHkKaW5kZXggMTVjN2NiN2U4
MDNkNzcxYmIzODE0ZGUyYjBlODVhYzYwNmYyNzU5Zi4uODE2M2QzNjVjOTE5YzJmMGQ4NjdmNWQ2
MDI2ZDJmOGI2ZjFjMjBiOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfaGFu
ZGxlcnMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfaGFuZGxlcnMucHkKQEAgLTks
NyArOSw5IEBAIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5lcnJvciBpbXBvcnQgSFRUUEVycm9yCiAK
IHdwdHNlcnZlID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgid3B0c2VydmUiKQogZnJvbSAuYmFzZSBp
bXBvcnQgVGVzdFVzaW5nU2VydmVyLCBUZXN0VXNpbmdIMlNlcnZlciwgZG9jX3Jvb3QKK2Zyb20g
LmJhc2UgaW1wb3J0IFRlc3RXcmFwcGVySGFuZGxlclVzaW5nU2VydmVyCiAKK2Zyb20gc2VydmUg
aW1wb3J0IHNlcnZlCiAKIGNsYXNzIFRlc3RGaWxlSGFuZGxlcihUZXN0VXNpbmdTZXJ2ZXIpOgog
ICAgIGRlZiB0ZXN0X0dFVChzZWxmKToKQEAgLTE4LDcgKzIwLDYgQEAgY2xhc3MgVGVzdEZpbGVI
YW5kbGVyKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQv
cGxhaW4iLCByZXNwLmluZm8oKVsiQ29udGVudC1UeXBlIl0pCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwob3Blbihvcy5wYXRoLmpvaW4oZG9jX3Jvb3QsICJkb2N1bWVudC50eHQiKSwgJ3JiJyku
cmVhZCgpLCByZXNwLnJlYWQoKSkKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lv
bl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIiKQogICAg
IGRlZiB0ZXN0X2hlYWRlcnMoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi93
aXRoX2hlYWRlcnMudHh0IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3AuZ2V0
Y29kZSgpKQpAQCAtMjcsNyArMjgsNyBAQCBjbGFzcyBUZXN0RmlsZUhhbmRsZXIoVGVzdFVzaW5n
U2VydmVyKToKICAgICAgICAgIyBUaGlzIHdpbGwgZmFpbCBpZiBpdCBpc24ndCBhIHZhbGlkIHV1
aWQKICAgICAgICAgdXVpZC5VVUlEKHJlc3AuaW5mbygpWyJBbm90aGVyLUhlYWRlciJdKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AuaW5mbygpWyJTYW1lLVZhbHVlLUhlYWRlciJdLCBy
ZXNwLmluZm8oKVsiQW5vdGhlci1IZWFkZXIiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChy
ZXNwLmluZm8oKVsiRG91YmxlLUhlYWRlciJdLCAiUEEsIFNTIikKKyAgICAgICAgc2VsZi5hc3Nl
cnRfbXVsdGlwbGVfaGVhZGVycyhyZXNwLCAiRG91YmxlLUhlYWRlciIsIFsiUEEiLCAiU1MiXSkK
IAogCiAgICAgZGVmIHRlc3RfcmFuZ2Uoc2VsZik6CkBAIC01OSw3ICs2MCw2IEBAIGNsYXNzIFRl
c3RGaWxlSGFuZGxlcihUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICAgICAgICAgICAgICAgICAg
IHJlc3AuaW5mbygpWydDb250ZW50LVJhbmdlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
ZXhwZWN0ZWRbLTEwOl0sIGRhdGEpCiAKLSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNp
b25faW5mbyA+PSAoMywpLCByZWFzb249IndwdHNlcnZlIG9ubHkgd29ya3Mgb24gUHkyIikKICAg
ICBkZWYgdGVzdF9tdWx0aXBsZV9yYW5nZXMoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJl
cXVlc3QoIi9kb2N1bWVudC50eHQiLCBoZWFkZXJzPXsiUmFuZ2UiOiJieXRlcz0xLTIsNS03LDYt
MTAifSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDYsIHJlc3AuZ2V0Y29kZSgpKQpAQCAt
NjcsMTYgKzY3LDE2IEBAIGNsYXNzIFRlc3RGaWxlSGFuZGxlcihUZXN0VXNpbmdTZXJ2ZXIpOgog
ICAgICAgICBleHBlY3RlZCA9IG9wZW4ob3MucGF0aC5qb2luKGRvY19yb290LCAiZG9jdW1lbnQu
dHh0IiksICdyYicpLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmVzcC5pbmZvKClb
IkNvbnRlbnQtVHlwZSJdLnN0YXJ0c3dpdGgoIm11bHRpcGFydC9ieXRlcmFuZ2VzOyBib3VuZGFy
eT0iKSkKICAgICAgICAgYm91bmRhcnkgPSByZXNwLmluZm8oKVsiQ29udGVudC1UeXBlIl0uc3Bs
aXQoImJvdW5kYXJ5PSIpWzFdCi0gICAgICAgIHBhcnRzID0gZGF0YS5zcGxpdCgiLS0iICsgYm91
bmRhcnkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlxyXG4iLCBwYXJ0c1swXSkKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgiLS0iLCBwYXJ0c1stMV0pCi0gICAgICAgIGV4cGVjdGVkX3Bh
cnRzID0gWygiMS0yIiwgZXhwZWN0ZWRbMTozXSksICgiNS0xMCIsIGV4cGVjdGVkWzU6MTFdKV0K
KyAgICAgICAgcGFydHMgPSBkYXRhLnNwbGl0KGIiLS0iICsgYm91bmRhcnkuZW5jb2RlKCJhc2Np
aSIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHJcbiIsIHBhcnRzWzBdKQorICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGIiLS0iLCBwYXJ0c1stMV0pCisgICAgICAgIGV4cGVjdGVkX3Bh
cnRzID0gWyhiIjEtMiIsIGV4cGVjdGVkWzE6M10pLCAoYiI1LTEwIiwgZXhwZWN0ZWRbNToxMV0p
XQogICAgICAgICBmb3IgZXhwZWN0ZWRfcGFydCwgcGFydCBpbiB6aXAoZXhwZWN0ZWRfcGFydHMs
IHBhcnRzWzE6LTFdKToKLSAgICAgICAgICAgIGhlYWRlcl9zdHJpbmcsIGJvZHkgPSBwYXJ0LnNw
bGl0KCJcclxuXHJcbiIpCi0gICAgICAgICAgICBoZWFkZXJzID0gZGljdChpdGVtLnNwbGl0KCI6
ICIsIDEpIGZvciBpdGVtIGluIGhlYWRlcl9zdHJpbmcuc3BsaXQoIlxyXG4iKSBpZiBpdGVtLnN0
cmlwKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbIkNvbnRlbnQtVHlw
ZSJdLCAidGV4dC9wbGFpbiIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNb
IkNvbnRlbnQtUmFuZ2UiXSwgImJ5dGVzICVzLyVpIiAlIChleHBlY3RlZF9wYXJ0WzBdLCBsZW4o
ZXhwZWN0ZWQpKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfcGFydFsx
XSArICJcclxuIiwgYm9keSkKKyAgICAgICAgICAgIGhlYWRlcl9zdHJpbmcsIGJvZHkgPSBwYXJ0
LnNwbGl0KGIiXHJcblxyXG4iKQorICAgICAgICAgICAgaGVhZGVycyA9IGRpY3QoaXRlbS5zcGxp
dChiIjogIiwgMSkgZm9yIGl0ZW0gaW4gaGVhZGVyX3N0cmluZy5zcGxpdChiIlxyXG4iKSBpZiBp
dGVtLnN0cmlwKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbYiJDb250
ZW50LVR5cGUiXSwgYiJ0ZXh0L3BsYWluIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
aGVhZGVyc1tiIkNvbnRlbnQtUmFuZ2UiXSwgYiJieXRlcyAlcy8laSIgJSAoZXhwZWN0ZWRfcGFy
dFswXSwgbGVuKGV4cGVjdGVkKSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVj
dGVkX3BhcnRbMV0gKyBiIlxyXG4iLCBib2R5KQogCiAgICAgZGVmIHRlc3RfcmFuZ2VfaW52YWxp
ZChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhIVFRQRXJyb3IpIGFzIGNt
OgpAQCAtODgsMTkgKzg4LDE2IEBAIGNsYXNzIFRlc3RGaWxlSGFuZGxlcihUZXN0VXNpbmdTZXJ2
ZXIpOgogICAgICAgICAgICAgc2VsZi5yZXF1ZXN0KCIvZG9jdW1lbnQudHh0IiwgaGVhZGVycz17
IlJhbmdlIjoiYnl0ZXM9JWktJWkiICUgKGxlbihleHBlY3RlZCksIGxlbihleHBlY3RlZCkgKyAx
MCl9KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5jb2RlLCA0MTYpCiAK
LSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249
IndwdHNlcnZlIG9ubHkgd29ya3Mgb24gUHkyIikKICAgICBkZWYgdGVzdF9zdWJfY29uZmlnKHNl
bGYpOgogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KCIvc3ViLnN1Yi50eHQiKQogICAgICAg
ICBleHBlY3RlZCA9IGIibG9jYWxob3N0IGxvY2FsaG9zdCAlaSIgJSBzZWxmLnNlcnZlci5wb3J0
CiAgICAgICAgIGFzc2VydCByZXNwLnJlYWQoKS5yc3RyaXAoKSA9PSBleHBlY3RlZAogCi0gICAg
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRz
ZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIpCiAgICAgZGVmIHRlc3Rfc3ViX2hlYWRlcnMoc2VsZik6
CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi9zdWJfaGVhZGVycy5zdWIudHh0IiwgaGVh
ZGVycz17IlgtVGVzdCI6ICJQQVNTIn0pCiAgICAgICAgIGV4cGVjdGVkID0gYiJQQVNTIgogICAg
ICAgICBhc3NlcnQgcmVzcC5yZWFkKCkucnN0cmlwKCkgPT0gZXhwZWN0ZWQKIAotICAgIEBweXRl
c3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUg
b25seSB3b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0X3N1Yl9wYXJhbXMoc2VsZik6CiAgICAg
ICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi9zdWJfcGFyYW1zLnN1Yi50eHQiLCBxdWVyeT0idGVz
dD1QQVNTIikKICAgICAgICAgZXhwZWN0ZWQgPSBiIlBBU1MiCkBAIC0xMDgsNyArMTA1LDYgQEAg
Y2xhc3MgVGVzdEZpbGVIYW5kbGVyKFRlc3RVc2luZ1NlcnZlcik6CiAKIAogY2xhc3MgVGVzdEZ1
bmN0aW9uSGFuZGxlcihUZXN0VXNpbmdTZXJ2ZXIpOgotICAgIEBweXRlc3QubWFyay54ZmFpbChz
eXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBvbiBQ
eTIiKQogICAgIGRlZiB0ZXN0X3N0cmluZ19ydihzZWxmKToKICAgICAgICAgQHdwdHNlcnZlLmhh
bmRsZXJzLmhhbmRsZXIKICAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgpA
QCAtMTE5LDcgKzExNSw3IEBAIGNsYXNzIFRlc3RGdW5jdGlvbkhhbmRsZXIoVGVzdFVzaW5nU2Vy
dmVyKToKICAgICAgICAgcmVzcCA9IHNlbGYucmVxdWVzdChyb3V0ZVsxXSkKICAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbCgyMDAsIHJlc3AuZ2V0Y29kZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCI5IiwgcmVzcC5pbmZvKClbIkNvbnRlbnQtTGVuZ3RoIl0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoInRlc3QgZGF0YSIsIHJlc3AucmVhZCgpKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGIidGVzdCBkYXRhIiwgcmVzcC5yZWFkKCkpCiAKICAgICBkZWYgdGVzdF90dXBsZV8xX3J2
KHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgpAQCAtMTM0LDcgKzEz
MCw2IEBAIGNsYXNzIFRlc3RGdW5jdGlvbkhhbmRsZXIoVGVzdFVzaW5nU2VydmVyKToKIAogICAg
ICAgICBhc3NlcnQgY20udmFsdWUuY29kZSA9PSA1MDAKIAotICAgIEBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBv
biBQeTIiKQogICAgIGRlZiB0ZXN0X3R1cGxlXzJfcnYoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2
ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNl
KToKQEAgLTE0Niw5ICsxNDEsOCBAQCBjbGFzcyBUZXN0RnVuY3Rpb25IYW5kbGVyKFRlc3RVc2lu
Z1NlcnZlcik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNwLmdldGNvZGUoKSkK
ICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNCIsIHJlc3AuaW5mbygpWyJDb250ZW50LUxlbmd0
aCJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0LXZhbHVlIiwgcmVzcC5pbmZvKClb
InRlc3QtaGVhZGVyIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3QiLCByZXNwLnJl
YWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiInRlc3QiLCByZXNwLnJlYWQoKSkKIAot
ICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0i
d3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0X3R1cGxlXzNfcnYoc2Vs
Zik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAgIGRlZiBoYW5k
bGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKQEAgLTE1OSw5ICsxNTMsOCBAQCBjbGFzcyBUZXN0RnVu
Y3Rpb25IYW5kbGVyKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVl
c3Qocm91dGVbMV0pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAyLCByZXNwLmdldGNvZGUo
KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgidGVzdC12YWx1ZSIsIHJlc3AuaW5mbygpWyJ0
ZXN0LWhlYWRlciJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXN0IGRhdGEiLCByZXNw
LnJlYWQoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiInRlc3QgZGF0YSIsIHJlc3AucmVh
ZCgpKQogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwg
cmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIpCiAgICAgZGVmIHRlc3RfdHVwbGVf
M19ydl8xKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAg
ICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6CkBAIC0xNzMsNyArMTY2LDcgQEAgY2xh
c3MgVGVzdEZ1bmN0aW9uSGFuZGxlcihUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKDIwMiwgcmVzcC5nZXRjb2RlKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
IlNvbWUgU3RhdHVzIiwgcmVzcC5tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3Qt
dmFsdWUiLCByZXNwLmluZm8oKVsidGVzdC1oZWFkZXIiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgidGVzdCBkYXRhIiwgcmVzcC5yZWFkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
YiJ0ZXN0IGRhdGEiLCByZXNwLnJlYWQoKSkKIAogICAgIGRlZiB0ZXN0X3R1cGxlXzRfcnYoc2Vs
Zik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCkBAIC0yNDEsMTIgKzIzNCwx
MSBAQCBjbGFzcyBUZXN0SlNPTkhhbmRsZXIoVGVzdFVzaW5nU2VydmVyKToKIAogCiBjbGFzcyBU
ZXN0UHl0aG9uSGFuZGxlcihUZXN0VXNpbmdTZXJ2ZXIpOgotICAgIEBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBv
biBQeTIiKQogICAgIGRlZiB0ZXN0X3N0cmluZyhzZWxmKToKICAgICAgICAgcmVzcCA9IHNlbGYu
cmVxdWVzdCgiL3Rlc3Rfc3RyaW5nLnB5IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAs
IHJlc3AuZ2V0Y29kZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXh0L3BsYWluIiwg
cmVzcC5pbmZvKClbIkNvbnRlbnQtVHlwZSJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJQ
QVNTIiwgcmVzcC5yZWFkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJQQVNTIiwgcmVz
cC5yZWFkKCkpCiAKICAgICBkZWYgdGVzdF90dXBsZV8yKHNlbGYpOgogICAgICAgICByZXNwID0g
c2VsZi5yZXF1ZXN0KCIvdGVzdF90dXBsZV8yLnB5IikKQEAgLTI2Myw3ICsyNTUsNiBAQCBjbGFz
cyBUZXN0UHl0aG9uSGFuZGxlcihUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCJQQVNTIiwgcmVzcC5pbmZvKClbIlgtVGVzdCJdKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKGIiUEFTUyIsIHJlc3AucmVhZCgpKQogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5
cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5
MiIpCiAgICAgZGVmIHRlc3RfaW1wb3J0KHNlbGYpOgogICAgICAgICBkaXJfbmFtZSA9IG9zLnBh
dGguam9pbihkb2Nfcm9vdCwgInN1YmRpciIpCiAgICAgICAgIGFzc2VydCBkaXJfbmFtZSBub3Qg
aW4gc3lzLnBhdGgKQEAgLTI3Myw3ICsyNjQsNyBAQCBjbGFzcyBUZXN0UHl0aG9uSGFuZGxlcihU
ZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICBhc3NlcnQgInRlc3RfbW9kdWxlIiBub3QgaW4gc3lz
Lm1vZHVsZXMKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3AuZ2V0Y29kZSgpKQog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXh0L3BsYWluIiwgcmVzcC5pbmZvKClbIkNvbnRl
bnQtVHlwZSJdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJQQVNTIiwgcmVzcC5yZWFkKCkp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJQQVNTIiwgcmVzcC5yZWFkKCkpCiAKICAgICBk
ZWYgdGVzdF9ub19tYWluKHNlbGYpOgogICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoSFRUUEVy
cm9yKSBhcyBjbToKQEAgLTMxNCwxMyArMzA1LDEyIEBAIGNsYXNzIFRlc3REaXJlY3RvcnlIYW5k
bGVyKFRlc3RVc2luZ1NlcnZlcik6CiAKIAogY2xhc3MgVGVzdEFzSXNIYW5kbGVyKFRlc3RVc2lu
Z1NlcnZlcik6Ci0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMs
KSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIpCiAgICAgZGVmIHRlc3RfYXNf
aXMoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi90ZXN0LmFzaXMiKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDIwMiwgcmVzcC5nZXRjb2RlKCkpCiAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoIkdpcmFmZmUiLCByZXNwLm1zZykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgiUEFTUyIsIHJlc3AuaW5mbygpWyJYLVRlc3QiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bCgiQ29udGVudCIsIHJlc3AucmVhZCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiQ29u
dGVudCIsIHJlc3AucmVhZCgpKQogICAgICAgICAjQWRkIGEgY2hlY2sgdGhhdCB0aGUgcmVzcG9u
c2UgaXMgYWN0dWFsbHkgc2FuZQogCiAKQEAgLTM5Nyw1ICszODcsNTggQEAgY2xhc3MgVGVzdEgy
SGFuZGxlcihUZXN0VXNpbmdIMlNlcnZlcik6CiAgICAgICAgIGFzc2VydCByZXNwLnJlYWQoKSA9
PSAnJwogCiAKK2NsYXNzIFRlc3RXb3JrZXJzSGFuZGxlcihUZXN0V3JhcHBlckhhbmRsZXJVc2lu
Z1NlcnZlcik6CisgICAgZHVtbXlfanNfZmlsZXMgPSB7J2Zvby53b3JrZXIuanMnOiBiJycsCisg
ICAgICAgICAgICAgICAgICAgICAgJ2Zvby5hbnkuanMnOiBiJyd9CisKKyAgICBkZWYgdGVzdF9h
bnlfd29ya2VyX2h0bWwoc2VsZik6CisgICAgICAgIHNlbGYucnVuX3dyYXBwZXJfdGVzdCgnZm9v
LmFueS53b3JrZXIuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGV4dC9o
dG1sJywgc2VydmUuV29ya2Vyc0hhbmRsZXIpCisKKyAgICBkZWYgdGVzdF93b3JrZXJfaHRtbChz
ZWxmKToKKyAgICAgICAgc2VsZi5ydW5fd3JhcHBlcl90ZXN0KCdmb28ud29ya2VyLmh0bWwnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQvaHRtbCcsIHNlcnZlLldvcmtlcnNI
YW5kbGVyKQorCisKK2NsYXNzIFRlc3RXaW5kb3dIYW5kbGVyKFRlc3RXcmFwcGVySGFuZGxlclVz
aW5nU2VydmVyKToKKyAgICBkdW1teV9qc19maWxlcyA9IHsnZm9vLndpbmRvdy5qcyc6IGInJ30K
KworICAgIGRlZiB0ZXN0X3dpbmRvd19odG1sKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl93cmFw
cGVyX3Rlc3QoJ2Zvby53aW5kb3cuaHRtbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAndGV4dC9odG1sJywgc2VydmUuV2luZG93SGFuZGxlcikKKworCitjbGFzcyBUZXN0QW55SHRt
bEhhbmRsZXIoVGVzdFdyYXBwZXJIYW5kbGVyVXNpbmdTZXJ2ZXIpOgorICAgIGR1bW15X2pzX2Zp
bGVzID0geydmb28uYW55LmpzJzogYicnfQorCisgICAgZGVmIHRlc3RfYW55X2h0bWwoc2VsZik6
CisgICAgICAgIHNlbGYucnVuX3dyYXBwZXJfdGVzdCgnZm9vLmFueS5odG1sJywKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICd0ZXh0L2h0bWwnLCBzZXJ2ZS5BbnlIdG1sSGFuZGxlcikK
KworCitjbGFzcyBUZXN0U2hhcmVkV29ya2Vyc0hhbmRsZXIoVGVzdFdyYXBwZXJIYW5kbGVyVXNp
bmdTZXJ2ZXIpOgorICAgIGR1bW15X2pzX2ZpbGVzID0geydmb28uYW55LmpzJzogYicvLyBNRVRB
OiBnbG9iYWw9c2hhcmVkd29ya2VyXG4nfQorCisgICAgZGVmIHRlc3RfYW55X3NoYXJlZHdvcmtl
cnNfaHRtbChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fd3JhcHBlcl90ZXN0KCdmb28uYW55LnNo
YXJlZHdvcmtlci5odG1sJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd0ZXh0L2h0
bWwnLCBzZXJ2ZS5TaGFyZWRXb3JrZXJzSGFuZGxlcikKKworCitjbGFzcyBUZXN0U2VydmljZVdv
cmtlcnNIYW5kbGVyKFRlc3RXcmFwcGVySGFuZGxlclVzaW5nU2VydmVyKToKKyAgICBkdW1teV9q
c19maWxlcyA9IHsnZm9vLmFueS5qcyc6IGInLy8gTUVUQTogZ2xvYmFsPXNlcnZpY2V3b3JrZXJc
bid9CisKKyAgICBkZWYgdGVzdF9zZXJ2aWNld29ya2VyX2h0bWwoc2VsZik6CisgICAgICAgIHNl
bGYucnVuX3dyYXBwZXJfdGVzdCgnZm9vLmFueS5zZXJ2aWNld29ya2VyLmh0bWwnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgJ3RleHQvaHRtbCcsIHNlcnZlLlNlcnZpY2VXb3JrZXJz
SGFuZGxlcikKKworCitjbGFzcyBUZXN0QW55V29ya2VySGFuZGxlcihUZXN0V3JhcHBlckhhbmRs
ZXJVc2luZ1NlcnZlcik6CisgICAgZHVtbXlfanNfZmlsZXMgPSB7J2Jhci5hbnkuanMnOiBiJyd9
CisKKyAgICBkZWYgdGVzdF9hbnlfd29ya19qcyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fd3Jh
cHBlcl90ZXN0KCdiYXIuYW55Lndvcmtlci5qcycsICd0ZXh0L2phdmFzY3JpcHQnLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2VydmUuQW55V29ya2VySGFuZGxlcikKKworCiBpZiBf
X25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfaW5wdXRfZmlsZS5weSBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC90ZXN0X2lucHV0X2ZpbGUucHkKaW5kZXggMDE0Mzg2ZTE3MmZiYjc5ZGU0NTU0Mjg0ZTRjNTFk
Y2FhYmFmNzBiNC4uOTgxNzZlNTgzODYyODQxZGY5ZGUyNzc3OWRjZmU1ZmY4ZjdhNjE0YiAxMDA2
NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfaW5wdXRfZmlsZS5weQorKysgYi9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL2Z1bmN0aW9uYWwvdGVzdF9pbnB1dF9maWxlLnB5CkBAIC0xLDggKzEsMTEgQEAKLWZyb20g
d3B0c2VydmUucmVxdWVzdCBpbXBvcnQgSW5wdXRGaWxlCitpbXBvcnQgc3lzCiBmcm9tIGlvIGlt
cG9ydCBCeXRlc0lPCisKIGltcG9ydCBweXRlc3QKK2Zyb20gc2l4IGltcG9ydCBQWTIKKworZnJv
bSB3cHRzZXJ2ZS5yZXF1ZXN0IGltcG9ydCBJbnB1dEZpbGUKIAotd3B0c2VydmUgPSBweXRlc3Qu
aW1wb3J0b3Jza2lwKCJ3cHRzZXJ2ZSIpCiBic3RyID0gYidUaGlzIGlzIGEgdGVzdCBkb2N1bWVu
dFxuV2l0aCBuZXcgbGluZXNcblNldmVyYWwgaW4gZmFjdC4uLicKIHJmaWxlID0gJycKIHRlc3Rf
ZmlsZSA9ICcnICAjIFRoaXMgd2lsbCBiZSB1c2VkIHRvIHRlc3QgdGhlIElucHV0RmlsZSBmdW5j
dGlvbnMgYWdhaW5zdApAQCAtMTE4LDYgKzEyMSw4IEBAIGRlZiB0ZXN0X3JlYWRsaW5lcygpOgog
ICAgIGFzc2VydCBpbnB1dF9maWxlLnJlYWRsaW5lcygpID09IHRlc3RfZmlsZS5yZWFkbGluZXMo
KQogCiAKK0BweXRlc3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgUFky
LAorICAgICAgICAgICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0
Zm9ybS10ZXN0cy93cHQvaXNzdWVzLzEyOTQ5IikKIGRlZiB0ZXN0X3JlYWRsaW5lc19maWxlX2Jp
Z2dlcl90aGFuX2J1ZmZlcigpOgogICAgIG9sZF9tYXhfYnVmID0gSW5wdXRGaWxlLm1heF9idWZm
ZXJfc2l6ZQogICAgIElucHV0RmlsZS5tYXhfYnVmZmVyX3NpemUgPSAxMApAQCAtMTM1LDYgKzE0
MCw4IEBAIGRlZiB0ZXN0X2l0ZXIoKToKICAgICAgICAgYXNzZXJ0IGEgPT0gYgogCiAKK0BweXRl
c3QubWFyay54ZmFpbChzeXMucGxhdGZvcm0gPT0gIndpbjMyIiBhbmQgUFkyLAorICAgICAgICAg
ICAgICAgICAgIHJlYXNvbj0iaHR0cHM6Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93
cHQvaXNzdWVzLzEyOTQ5IikKIGRlZiB0ZXN0X2l0ZXJfZmlsZV9iaWdnZXJfdGhhbl9idWZmZXIo
KToKICAgICBvbGRfbWF4X2J1ZiA9IElucHV0RmlsZS5tYXhfYnVmZmVyX3NpemUKICAgICBJbnB1
dEZpbGUubWF4X2J1ZmZlcl9zaXplID0gMTAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC90ZXN0X3BpcGVzLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcGlwZXMucHkKaW5kZXgg
ZWJkYmMzZWU1N2RkZmE1MDMzODkzOGFhMmUyMjYwMjhkN2JiNjU1NS4uYTZhNzAzZTMwNDkwMmRh
ZmFmNDM5NzVhYjFhYzA1ODBlMTYwZmRjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3RfcGlwZXMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcGlwZXMucHkKQEAg
LTIsNyArMiw2IEBAIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGltZQogaW1w
b3J0IGpzb24KLWltcG9ydCBzeXMKIAogZnJvbSBzaXgubW92ZXMgaW1wb3J0IHVybGxpYgogCkBA
IC0zNSwxMCArMzQsOSBAQCBjbGFzcyBUZXN0SGVhZGVyKFRlc3RVc2luZ1NlcnZlcik6CiAgICAg
ICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi9kb2N1bWVudC50eHQiLCBxdWVyeT0icGlwZT1oZWFk
ZXIoQ29udGVudC1UeXBlLEZBSUwpfGhlYWRlcihDb250ZW50LVR5cGUsdGV4dC9odG1sKSIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5pbmZvKClbIkNvbnRlbnQtVHlwZSJdLCAidGV4
dC9odG1sIikKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgz
LCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0X211
bHRpcGxlX2FwcGVuZChzZWxmKToKICAgICAgICAgcmVzcCA9IHNlbGYucmVxdWVzdCgiL2RvY3Vt
ZW50LnR4dCIsIHF1ZXJ5PSJwaXBlPWhlYWRlcihYLVRlc3QsMSl8aGVhZGVyKFgtVGVzdCwyLFRy
dWUpIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLmluZm8oKVsiWC1UZXN0Il0sICIx
LCAyIikKKyAgICAgICAgc2VsZi5hc3NlcnRfbXVsdGlwbGVfaGVhZGVycyhyZXNwLCAiWC1UZXN0
IiwgWyIxIiwgIjIiXSkKIAogY2xhc3MgVGVzdFNsaWNlKFRlc3RVc2luZ1NlcnZlcik6CiAgICAg
ZGVmIHRlc3RfYm90aF9ib3VuZHMoc2VsZik6CkBAIC01NywzNiArNTUsMzEgQEAgY2xhc3MgVGVz
dFNsaWNlKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5y
ZWFkKCksIGV4cGVjdGVkWzoxMF0pCiAKIGNsYXNzIFRlc3RTdWIoVGVzdFVzaW5nU2VydmVyKToK
LSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249
IndwdHNlcnZlIG9ubHkgd29ya3Mgb24gUHkyIikKICAgICBkZWYgdGVzdF9zdWJfY29uZmlnKHNl
bGYpOgogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KCIvc3ViLnR4dCIsIHF1ZXJ5PSJwaXBl
PXN1YiIpCi0gICAgICAgIGV4cGVjdGVkID0gImxvY2FsaG9zdCBsb2NhbGhvc3QgJWkiICUgc2Vs
Zi5zZXJ2ZXIucG9ydAorICAgICAgICBleHBlY3RlZCA9IGIibG9jYWxob3N0IGxvY2FsaG9zdCAl
aSIgJSBzZWxmLnNlcnZlci5wb3J0CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFk
KCkucnN0cmlwKCksIGV4cGVjdGVkKQogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIpCiAg
ICAgZGVmIHRlc3Rfc3ViX2ZpbGVfaGFzaChzZWxmKToKICAgICAgICAgcmVzcCA9IHNlbGYucmVx
dWVzdCgiL3N1Yl9maWxlX2hhc2guc3ViLnR4dCIpCi0gICAgICAgIGV4cGVjdGVkID0gIiIiCisg
ICAgICAgIGV4cGVjdGVkID0gYiIiIgogbWQ1OiBKbUkxVzhmTUhmU2ZDYXJZT1N4SmN3PT0KIHNo
YTE6IG5xcFdxRXc0SVc4TmpENlIzNzVndHJRdnRUbz0KIHNoYTIyNDogUnFRNmZNbXRhNm45VHVB
L3ZnVFpLMkVxbWlkcW5yd0JBbVFMUlE9PQogc2hhMjU2OiBHNkxqZzF1UGVqUXhxRm12Rk9jVi9s
b3FualBUVzVHU09lUE9mTS91MGp3PQogc2hhMzg0OiBsa1hIQ2hoMUJYSE41blQ1QlloaTF4NjdF
MUN5WWJQS1JLb0YyTFRtNUdpdnVFRnBWVll0dkVCSHRQcjc0TjlFCi1zaGE1MTI6IHI4ZUxHUlRj
N1p6blprRmplVkx5bzYvRnlRZHJhOXFtbFlDd0tLeG0za2ZRQXN3UlM5KzNIc1lrM3RoTFVoY0Zt
bVdoSzRkWGFJQ3oKLUp3R0ZvbmZYd2c9PSIiIgorc2hhNTEyOiByOGVMR1JUYzdaem5aa0ZqZVZM
eW82L0Z5UWRyYTlxbWxZQ3dLS3htM2tmUUFzd1JTOSszSHNZazN0aExVaGNGbW1XaEs0ZFhhSUN6
SndHRm9uZlh3Zz09IiIiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCkucnN0
cmlwKCksIGV4cGVjdGVkLnN0cmlwKCkpCiAKICAgICBkZWYgdGVzdF9zdWJfZmlsZV9oYXNoX3Vu
cmVjb2duaXplZChzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIu
ZXJyb3IuSFRUUEVycm9yKToKICAgICAgICAgICAgIHNlbGYucmVxdWVzdCgiL3N1Yl9maWxlX2hh
c2hfdW5yZWNvZ25pemVkLnN1Yi50eHQiKQogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52
ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIp
CiAgICAgZGVmIHRlc3Rfc3ViX2hlYWRlcnMoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJl
cXVlc3QoIi9zdWJfaGVhZGVycy50eHQiLCBxdWVyeT0icGlwZT1zdWIiLCBoZWFkZXJzPXsiWC1U
ZXN0IjogIlBBU1MifSkKLSAgICAgICAgZXhwZWN0ZWQgPSAiUEFTUyIKKyAgICAgICAgZXhwZWN0
ZWQgPSBiIlBBU1MiCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCkucnN0cmlw
KCksIGV4cGVjdGVkKQogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8g
Pj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIpCiAgICAgZGVmIHRl
c3Rfc3ViX2xvY2F0aW9uKHNlbGYpOgogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KCIvc3Vi
X2xvY2F0aW9uLnN1Yi50eHQ/cXVlcnlfc3RyaW5nIikKICAgICAgICAgZXhwZWN0ZWQgPSAiIiIK
QEAgLTk3LDMwICs5MCw0NCBAQCBwYXRobmFtZTogL3N1Yl9sb2NhdGlvbi5zdWIudHh0CiBwb3J0
OiB7MH0KIHF1ZXJ5OiA/cXVlcnlfc3RyaW5nCiBzY2hlbWU6IGh0dHAKLXNlcnZlcjogaHR0cDov
L2xvY2FsaG9zdDp7MH0iIiIuZm9ybWF0KHNlbGYuc2VydmVyLnBvcnQpCitzZXJ2ZXI6IGh0dHA6
Ly9sb2NhbGhvc3Q6ezB9IiIiLmZvcm1hdChzZWxmLnNlcnZlci5wb3J0KS5lbmNvZGUoImFzY2lp
IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKS5yc3RyaXAoKSwgZXhwZWN0
ZWQuc3RyaXAoKSkKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49
ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0
X3N1Yl9wYXJhbXMoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi9zdWJfcGFy
YW1zLnR4dCIsIHF1ZXJ5PSJ0ZXN0PVBBU1MmcGlwZT1zdWIiKQotICAgICAgICBleHBlY3RlZCA9
ICJQQVNTIgorICAgICAgICBleHBlY3RlZCA9IGIiUEFTUyIKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChyZXNwLnJlYWQoKS5yc3RyaXAoKSwgZXhwZWN0ZWQpCiAKLSAgICBAcHl0ZXN0Lm1hcmsu
eGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249IndwdHNlcnZlIG9ubHkgd29y
a3Mgb24gUHkyIikKICAgICBkZWYgdGVzdF9zdWJfdXJsX2Jhc2Uoc2VsZik6CiAgICAgICAgIHJl
c3AgPSBzZWxmLnJlcXVlc3QoIi9zdWJfdXJsX2Jhc2Uuc3ViLnR4dCIpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzcC5yZWFkKCkucnN0cmlwKCksICJCZWZvcmUgLyBBZnRlciIpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFkKCkucnN0cmlwKCksIGIiQmVmb3JlIC8gQWZ0
ZXIiKQorCisgICAgZGVmIHRlc3Rfc3ViX3VybF9iYXNlX3ZpYV9maWxlbmFtZV93aXRoX3F1ZXJ5
KHNlbGYpOgorICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KCIvc3ViX3VybF9iYXNlLnN1Yi50
eHQ/cGlwZT1zbGljZSg1LDEwKSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFk
KCkucnN0cmlwKCksIGIiZSAvIEEiKQogCi0gICAgQHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJz
aW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIpCiAg
ICAgZGVmIHRlc3Rfc3ViX3V1aWQoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qo
Ii9zdWJfdXVpZC5zdWIudHh0IikKLSAgICAgICAgc2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHJl
c3AucmVhZCgpLnJzdHJpcCgpLCByIkJlZm9yZSBbYS1mMC05LV0rIEFmdGVyIikKKyAgICAgICAg
c2VsZi5hc3NlcnRSZWdleHBNYXRjaGVzKHJlc3AucmVhZCgpLnJzdHJpcCgpLCBiIkJlZm9yZSBb
YS1mMC05LV0rIEFmdGVyIikKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9p
bmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIiKQogICAgIGRl
ZiB0ZXN0X3N1Yl92YXIoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi9zdWJf
dmFyLnN1Yi50eHQiKQogICAgICAgICBwb3J0ID0gc2VsZi5zZXJ2ZXIucG9ydAotICAgICAgICBl
eHBlY3RlZCA9ICJsb2NhbGhvc3QgJXMgQSAlcyBCIGxvY2FsaG9zdCBDIiAlIChwb3J0LCBwb3J0
KQorICAgICAgICBleHBlY3RlZCA9IGIibG9jYWxob3N0ICVkIEEgJWQgQiBsb2NhbGhvc3QgQyIg
JSAocG9ydCwgcG9ydCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKS5yc3Ry
aXAoKSwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9zdWJfZnNfcGF0aChzZWxmKToKKyAgICAg
ICAgcmVzcCA9IHNlbGYucmVxdWVzdCgiL3N1YmRpci9zdWJfcGF0aC5zdWIudHh0IikKKyAgICAg
ICAgcm9vdCA9IG9zLnBhdGguYWJzcGF0aChkb2Nfcm9vdCkKKyAgICAgICAgZXhwZWN0ZWQgPSAi
IiIlKHJvb3QpcyUoc2VwKXNzdWJkaXIlKHNlcClzc3ViX3BhdGguc3ViLnR4dAorJShyb290KXMl
KHNlcClzc3ViX3BhdGguc3ViLnR4dAorJShyb290KXMlKHNlcClzc3ViX3BhdGguc3ViLnR4dAor
IiIiICUgeyJyb290Ijogcm9vdCwgInNlcCI6IG9zLnBhdGguc2VwfQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHJlc3AucmVhZCgpLCBleHBlY3RlZC5lbmNvZGUoInV0ZjgiKSkKKworICAgIGRl
ZiB0ZXN0X3N1Yl9oZWFkZXJfb3JfZGVmYXVsdChzZWxmKToKKyAgICAgICAgcmVzcCA9IHNlbGYu
cmVxdWVzdCgiL3N1Yl9oZWFkZXJfb3JfZGVmYXVsdC5zdWIudHh0IiwgaGVhZGVycz17IlgtUHJl
c2VudCI6ICJPSyJ9KQorICAgICAgICBleHBlY3RlZCA9IGIiT0tcbmFic2VudC1kZWZhdWx0Igog
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLnJzdHJpcCgpLCBleHBlY3RlZCkK
IAogY2xhc3MgVGVzdFRyaWNrbGUoVGVzdFVzaW5nU2VydmVyKToKQEAgLTE0MCwxMiArMTQ3LDEw
IEBAIGNsYXNzIFRlc3RUcmlja2xlKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocmVzcC5pbmZvKClbIkV4cGlyZXMiXSwgIjAiKQogCiBjbGFzcyBUZXN0UGlwZXNX
aXRoVmFyaW91c0hhbmRsZXJzKFRlc3RVc2luZ1NlcnZlcik6Ci0gICAgQHB5dGVzdC5tYXJrLnhm
YWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5IHdvcmtz
IG9uIFB5MiIpCiAgICAgZGVmIHRlc3Rfd2l0aF9weXRob25fZmlsZV9oYW5kbGVyKHNlbGYpOgog
ICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KCIvdGVzdF9zdHJpbmcucHkiLCBxdWVyeT0icGlw
ZT1zbGljZShudWxsLDIpIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwg
IlBBIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYiJQQSIpCiAKLSAg
ICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249Indw
dHNlcnZlIG9ubHkgd29ya3Mgb24gUHkyIikKICAgICBkZWYgdGVzdF93aXRoX3B5dGhvbl9mdW5j
X2hhbmRsZXIoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAg
ICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKQEAgLTE1Myw5ICsxNTgsOCBAQCBj
bGFzcyBUZXN0UGlwZXNXaXRoVmFyaW91c0hhbmRsZXJzKFRlc3RVc2luZ1NlcnZlcik6CiAgICAg
ICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rlc3QvdGVzdF9waXBlc18xLyIsIGhhbmRsZXIpCiAgICAg
ICAgIHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91dGUpCiAgICAgICAgIHJlc3AgPSBz
ZWxmLnJlcXVlc3Qocm91dGVbMV0sIHF1ZXJ5PSJwaXBlPXNsaWNlKG51bGwsMikiKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCAiUEEiKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHJlc3AucmVhZCgpLCBiIlBBIikKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMu
dmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIi
KQogICAgIGRlZiB0ZXN0X3dpdGhfcHl0aG9uX2Z1bmNfaGFuZGxlcl91c2luZ19yZXNwb25zZV93
cml0ZXIoc2VsZik6CiAgICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCiAgICAgICAg
IGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKQEAgLTE2NCw5ICsxNjgsOCBAQCBjbGFz
cyBUZXN0UGlwZXNXaXRoVmFyaW91c0hhbmRsZXJzKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAg
IHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91dGUpCiAgICAgICAgIHJlc3AgPSBzZWxm
LnJlcXVlc3Qocm91dGVbMV0sIHF1ZXJ5PSJwaXBlPXNsaWNlKG51bGwsMikiKQogICAgICAgICAj
IHNsaWNlIGhhcyBub3QgYmVlbiBhcHBsaWVkIHRvIHRoZSByZXNwb25zZSwgYmVjYXVzZSByZXNw
b25zZS53cml0ZXIgd2FzIHVzZWQuCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzcC5yZWFk
KCksICJQQVNTIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgYiJQQVNT
IikKIAotICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJl
YXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0X2hlYWRlcl9w
aXBlX3dpdGhfcHl0aG9uX2Z1bmNfdXNpbmdfcmVzcG9uc2Vfd3JpdGVyKHNlbGYpOgogICAgICAg
ICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0
LCByZXNwb25zZSk6CkBAIC0xNzYsOSArMTc5LDggQEAgY2xhc3MgVGVzdFBpcGVzV2l0aFZhcmlv
dXNIYW5kbGVycyhUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0
KHJvdXRlWzFdLCBxdWVyeT0icGlwZT1oZWFkZXIoWC1URVNULEZBSUwpIikKICAgICAgICAgIyBo
ZWFkZXIgcGlwZSB3YXMgaWdub3JlZCwgYmVjYXVzZSByZXNwb25zZS53cml0ZXIgd2FzIHVzZWQu
CiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVzcC5pbmZvKCkuZ2V0KCJYLVRFU1QiKSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwLnJlYWQoKSwgIkNPTlRFTlQiKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKHJlc3AucmVhZCgpLCBiIkNPTlRFTlQiKQogCi0gICAgQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5
IHdvcmtzIG9uIFB5MiIpCiAgICAgZGVmIHRlc3Rfd2l0aF9qc29uX2hhbmRsZXIoc2VsZik6CiAg
ICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5qc29uX2hhbmRsZXIKICAgICAgICAgZGVmIGhhbmRs
ZXIocmVxdWVzdCwgcmVzcG9uc2UpOgpAQCAtMTg2LDMyICsxODgsMjkgQEAgY2xhc3MgVGVzdFBp
cGVzV2l0aFZhcmlvdXNIYW5kbGVycyhUZXN0VXNpbmdTZXJ2ZXIpOgogICAgICAgICByb3V0ZSA9
ICgiR0VUIiwgIi90ZXN0L3Rlc3RfcGlwZXNfMi8iLCBoYW5kbGVyKQogICAgICAgICBzZWxmLnNl
cnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQogICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0
KHJvdXRlWzFdLCBxdWVyeT0icGlwZT1zbGljZShudWxsLDIpIikKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChyZXNwLnJlYWQoKSwgJyJ7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNw
LnJlYWQoKSwgYicieycpCiAKLSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5m
byA+PSAoMywpLCByZWFzb249IndwdHNlcnZlIG9ubHkgd29ya3Mgb24gUHkyIikKICAgICBkZWYg
dGVzdF9zbGljZV93aXRoX2FzX2lzX2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxm
LnJlcXVlc3QoIi90ZXN0LmFzaXMiLCBxdWVyeT0icGlwZT1zbGljZShudWxsLDIpIikKICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyMDIsIHJlc3AuZ2V0Y29kZSgpKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKCJHaXJhZmZlIiwgcmVzcC5tc2cpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
IlBBU1MiLCByZXNwLmluZm8oKVsiWC1UZXN0Il0pCiAgICAgICAgICMgc2xpY2UgaGFzIG5vdCBi
ZWVuIGFwcGxpZWQgdG8gdGhlIHJlc3BvbnNlLCBiZWNhdXNlIHJlc3BvbnNlLndyaXRlciB3YXMg
dXNlZC4KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiQ29udGVudCIsIHJlc3AucmVhZCgpKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiQ29udGVudCIsIHJlc3AucmVhZCgpKQogCi0gICAg
QHB5dGVzdC5tYXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRz
ZXJ2ZSBvbmx5IHdvcmtzIG9uIFB5MiIpCiAgICAgZGVmIHRlc3RfaGVhZGVyc193aXRoX2FzX2lz
X2hhbmRsZXIoc2VsZik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi90ZXN0LmFzaXMi
LCBxdWVyeT0icGlwZT1oZWFkZXIoWC1URVNULEZBSUwpIikKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgyMDIsIHJlc3AuZ2V0Y29kZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJHaXJh
ZmZlIiwgcmVzcC5tc2cpCiAgICAgICAgICMgaGVhZGVyIHBpcGUgd2FzIGlnbm9yZWQuCiAgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoIlBBU1MiLCByZXNwLmluZm8oKVsiWC1URVNUIl0pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoIkNvbnRlbnQiLCByZXNwLnJlYWQoKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChiIkNvbnRlbnQiLCByZXNwLnJlYWQoKSkKIAotICAgIEBweXRlc3QubWFy
ay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3
b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0X3RyaWNrbGVfd2l0aF9hc19pc19oYW5kbGVyKHNl
bGYpOgogICAgICAgICB0MCA9IHRpbWUudGltZSgpCiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVl
c3QoIi90ZXN0LmFzaXMiLCBxdWVyeT0icGlwZT10cmlja2xlKDE6ZDI6NTpkMTpyMikiKQogICAg
ICAgICB0MSA9IHRpbWUudGltZSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnQ29udGVudCcg
aW4gcmVzcC5yZWFkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShiJ0NvbnRlbnQnIGluIHJl
c3AucmVhZCgpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoNiwgdDEtdDApCiAKIGlmIF9f
bmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVz
dF9yZXF1ZXN0LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVxdWVzdC5weQppbmRleCA5
N2Q3NWViNzEyODlhZGY2NDNhYjA3M2RkYzc0MGYxZjI0Y2ZmYzc2Li5kOTQ1ODAxNDBlMjFkNWI4
YjkwMWQ4NGUzNTg5NWU2YTJhNmE1ZWRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwv
dGVzdF9yZXF1ZXN0LnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3JlcXVlc3QucHkK
QEAgLTEsNSArMSw0IEBACi1pbXBvcnQgc3lzCi0KKyMgLSotIGNvZGluZzogdXRmLTggLSotCiBp
bXBvcnQgcHl0ZXN0CiAKIHdwdHNlcnZlID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgid3B0c2VydmUi
KQpAQCAtOCw3ICs3LDYgQEAgZnJvbSB3cHRzZXJ2ZS5yZXF1ZXN0IGltcG9ydCBJbnB1dEZpbGUK
IAogCiBjbGFzcyBUZXN0SW5wdXRGaWxlKFRlc3RVc2luZ1NlcnZlcik6Ci0gICAgQHB5dGVzdC5t
YXJrLnhmYWlsKHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsKSwgcmVhc29uPSJ3cHRzZXJ2ZSBvbmx5
IHdvcmtzIG9uIFB5MiIpCiAgICAgZGVmIHRlc3Rfc2VlayhzZWxmKToKICAgICAgICAgQHdwdHNl
cnZlLmhhbmRsZXJzLmhhbmRsZXIKICAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVzcG9u
c2UpOgpAQCAtMTYsMjggKzE0LDI3IEBAIGNsYXNzIFRlc3RJbnB1dEZpbGUoVGVzdFVzaW5nU2Vy
dmVyKToKICAgICAgICAgICAgIGYgPSByZXF1ZXN0LnJhd19pbnB1dAogICAgICAgICAgICAgZi5z
ZWVrKDUpCiAgICAgICAgICAgICBydi5hcHBlbmQoZi5yZWFkKDIpKQotICAgICAgICAgICAgcnYu
YXBwZW5kKGYudGVsbCgpKQorICAgICAgICAgICAgcnYuYXBwZW5kKGIiJWQiICUgZi50ZWxsKCkp
CiAgICAgICAgICAgICBmLnNlZWsoMCkKICAgICAgICAgICAgIHJ2LmFwcGVuZChmLnJlYWRsaW5l
KCkpCi0gICAgICAgICAgICBydi5hcHBlbmQoZi50ZWxsKCkpCisgICAgICAgICAgICBydi5hcHBl
bmQoYiIlZCIgJSBmLnRlbGwoKSkKICAgICAgICAgICAgIHJ2LmFwcGVuZChmLnJlYWQoLTEpKQot
ICAgICAgICAgICAgcnYuYXBwZW5kKGYudGVsbCgpKQorICAgICAgICAgICAgcnYuYXBwZW5kKGIi
JWQiICUgZi50ZWxsKCkpCiAgICAgICAgICAgICBmLnNlZWsoMCkKICAgICAgICAgICAgIHJ2LmFw
cGVuZChmLnJlYWQoKSkKICAgICAgICAgICAgIGYuc2VlaygwKQogICAgICAgICAgICAgcnYuZXh0
ZW5kKGYucmVhZGxpbmVzKCkpCiAKLSAgICAgICAgICAgIHJldHVybiAiICIuam9pbihzdHIoaXRl
bSkgZm9yIGl0ZW0gaW4gcnYpCisgICAgICAgICAgICByZXR1cm4gYiIgIi5qb2luKHJ2KQogCiAg
ICAgICAgIHJvdXRlID0gKCJQT1NUIiwgIi90ZXN0L3Rlc3Rfc2VlayIsIGhhbmRsZXIpCiAgICAg
ICAgIHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91dGUpCi0gICAgICAgIHJlc3AgPSBz
ZWxmLnJlcXVlc3Qocm91dGVbMV0sIG1ldGhvZD0iUE9TVCIsIGJvZHk9IjEyMzQ1YWJcbmNkZWYi
KQorICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBtZXRob2Q9IlBPU1QiLCBi
b2R5PWIiMTIzNDVhYlxuY2RlZiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNw
LmdldGNvZGUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbImFiIiwgIjciLCAiMTIzNDVh
YlxuIiwgIjgiLCAiY2RlZiIsICIxMiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIxMjM0
NWFiXG5jZGVmIiwgIjEyMzQ1YWJcbiIsICJjZGVmIl0sCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzcC5yZWFkKCkuc3BsaXQoIiAiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbYiJh
YiIsIGIiNyIsIGIiMTIzNDVhYlxuIiwgYiI4IiwgYiJjZGVmIiwgYiIxMiIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgIGIiMTIzNDVhYlxuY2RlZiIsIGIiMTIzNDVhYlxuIiwgYiJjZGVmIl0s
CisgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcC5yZWFkKCkuc3BsaXQoYiIgIikpCiAKLSAg
ICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAoMywpLCByZWFzb249Indw
dHNlcnZlIG9ubHkgd29ya3Mgb24gUHkyIikKICAgICBkZWYgdGVzdF9zZWVrX2lucHV0X2xvbmdl
cl90aGFuX2J1ZmZlcihzZWxmKToKICAgICAgICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIK
ICAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgpAQCAtNDUsMTEgKzQyLDEx
IEBAIGNsYXNzIFRlc3RJbnB1dEZpbGUoVGVzdFVzaW5nU2VydmVyKToKICAgICAgICAgICAgIGYg
PSByZXF1ZXN0LnJhd19pbnB1dAogICAgICAgICAgICAgZi5zZWVrKDUpCiAgICAgICAgICAgICBy
di5hcHBlbmQoZi5yZWFkKDIpKQotICAgICAgICAgICAgcnYuYXBwZW5kKGYudGVsbCgpKQorICAg
ICAgICAgICAgcnYuYXBwZW5kKGIiJWQiICUgZi50ZWxsKCkpCiAgICAgICAgICAgICBmLnNlZWso
MCkKLSAgICAgICAgICAgIHJ2LmFwcGVuZChmLnRlbGwoKSkKLSAgICAgICAgICAgIHJ2LmFwcGVu
ZChmLnRlbGwoKSkKLSAgICAgICAgICAgIHJldHVybiAiICIuam9pbihzdHIoaXRlbSkgZm9yIGl0
ZW0gaW4gcnYpCisgICAgICAgICAgICBydi5hcHBlbmQoYiIlZCIgJSBmLnRlbGwoKSkKKyAgICAg
ICAgICAgIHJ2LmFwcGVuZChiIiVkIiAlIGYudGVsbCgpKQorICAgICAgICAgICAgcmV0dXJuIGIi
ICIuam9pbihydikKIAogICAgICAgICByb3V0ZSA9ICgiUE9TVCIsICIvdGVzdC90ZXN0X3NlZWsi
LCBoYW5kbGVyKQogICAgICAgICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQpA
QCAtNTcsMTAgKzU0LDEwIEBAIGNsYXNzIFRlc3RJbnB1dEZpbGUoVGVzdFVzaW5nU2VydmVyKToK
ICAgICAgICAgb2xkX21heF9idWYgPSBJbnB1dEZpbGUubWF4X2J1ZmZlcl9zaXplCiAgICAgICAg
IElucHV0RmlsZS5tYXhfYnVmZmVyX3NpemUgPSAxMAogICAgICAgICB0cnk6Ci0gICAgICAgICAg
ICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBtZXRob2Q9IlBPU1QiLCBib2R5PSIxIioy
MCkKKyAgICAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVbMV0sIG1ldGhvZD0iUE9T
VCIsIGJvZHk9YiIxIioyMCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMjAwLCByZXNw
LmdldGNvZGUoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyIxMSIsICI3IiwgIjAi
LCAiMCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AucmVhZCgpLnNwbGl0KCIg
IikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiIjExIiwgYiI3IiwgYiIwIiwgYiIw
Il0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3AucmVhZCgpLnNwbGl0KGIiICIp
KQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgSW5wdXRGaWxlLm1heF9idWZmZXJfc2l6
ZSA9IG9sZF9tYXhfYnVmCiAKQEAgLTExNywxNiArMTE0LDQwIEBAIGNsYXNzIFRlc3RSZXF1ZXN0
KFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3QoIi90ZXN0L3Nv
bWVfcm91dGUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIic29tZSByb3V0ZSIsIHJlc3Au
cmVhZCgpKQogCisgICAgZGVmIHRlc3Rfbm9uX2FzY2lpX2luX2hlYWRlcnMoc2VsZik6CisgICAg
ICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5kbGVyCisgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVl
c3QsIHJlc3BvbnNlKToKKyAgICAgICAgICAgIHJldHVybiByZXF1ZXN0LmhlYWRlcnNbImZvbyJd
CisKKyAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC90ZXN0X3VuaWNvZGVfaW5faGVhZGVy
cyIsIGhhbmRsZXIpCisgICAgICAgIHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91dGUp
CisKKyAgICAgICAgIyBUcnkgc29tZSBub24tQVNDSUkgY2hhcmFjdGVycyBhbmQgdGhlIHNlcnZl
ciBzaG91bGRuJ3QgY3Jhc2guCisgICAgICAgIGVuY29kZWRfdGV4dCA9IHUi5L2g5aW9Ii5lbmNv
ZGUoInV0Zi04IikKKyAgICAgICAgcmVzcCA9IHNlbGYucmVxdWVzdChyb3V0ZVsxXSwgaGVhZGVy
cz17ImZvbyI6IGVuY29kZWRfdGV4dH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2Rl
ZF90ZXh0LCByZXNwLnJlYWQoKSkKKworICAgICAgICAjIFRyeSBhIGRpZmZlcmVudCBlbmNvZGlu
ZyBmcm9tIHV0Zi04IHRvIG1ha2Ugc3VyZSB0aGUgYmluYXJ5IHZhbHVlIGlzCisgICAgICAgICMg
cmV0dXJuZWQgaW4gdmVyYmF0aW0uCisgICAgICAgIGVuY29kZWRfdGV4dCA9IHUi44Gp44GG44KC
Ii5lbmNvZGUoInNoaWZ0LWppcyIpCisgICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVb
MV0sIGhlYWRlcnM9eyJmb28iOiBlbmNvZGVkX3RleHR9KQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGVuY29kZWRfdGV4dCwgcmVzcC5yZWFkKCkpCisKIAogY2xhc3MgVGVzdEF1dGgoVGVzdFVz
aW5nU2VydmVyKToKLSAgICBAcHl0ZXN0Lm1hcmsueGZhaWwoc3lzLnZlcnNpb25faW5mbyA+PSAo
MywpLCByZWFzb249IndwdHNlcnZlIG9ubHkgd29ya3Mgb24gUHkyIikKICAgICBkZWYgdGVzdF9h
dXRoKHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBk
ZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICByZXR1cm4gIiAiLmpv
aW4oKHJlcXVlc3QuYXV0aC51c2VybmFtZSwgcmVxdWVzdC5hdXRoLnBhc3N3b3JkKSkKKyAgICAg
ICAgICAgIHJldHVybiBiIiAiLmpvaW4oKHJlcXVlc3QuYXV0aC51c2VybmFtZSwgcmVxdWVzdC5h
dXRoLnBhc3N3b3JkKSkKIAogICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3Rlc3RfYXV0
aCIsIGhhbmRsZXIpCiAgICAgICAgIHNlbGYuc2VydmVyLnJvdXRlci5yZWdpc3Rlcigqcm91dGUp
Ci0gICAgICAgIHJlc3AgPSBzZWxmLnJlcXVlc3Qocm91dGVbMV0sIGF1dGg9KCJ0ZXN0IiwgIlBB
U1MiKSkKKworICAgICAgICByZXNwID0gc2VsZi5yZXF1ZXN0KHJvdXRlWzFdLCBhdXRoPShiInRl
c3QiLCBiIlBBU1MiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyMDAsIHJlc3AuZ2V0Y29k
ZSgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtiInRlc3QiLCBiIlBBU1MiXSwgcmVzcC5y
ZWFkKCkuc3BsaXQoYiIgIikpCisKKyAgICAgICAgZW5jb2RlZF90ZXh0ID0gdSLjganjgYbjgoIi
LmVuY29kZSgic2hpZnQtamlzIikKKyAgICAgICAgcmVzcCA9IHNlbGYucmVxdWVzdChyb3V0ZVsx
XSwgYXV0aD0oZW5jb2RlZF90ZXh0LCBlbmNvZGVkX3RleHQpKQogICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKDIwMCwgcmVzcC5nZXRjb2RlKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyJ0
ZXN0IiwgIlBBU1MiXSwgcmVzcC5yZWFkKCkuc3BsaXQoIiAiKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChbZW5jb2RlZF90ZXh0LCBlbmNvZGVkX3RleHRdLCByZXNwLnJlYWQoKS5zcGxpdChi
IiAiKSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3Jlc3BvbnNlLnB5IGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKaW5kZXggZGFmOGU2ZWQwMDI4NTAy
ZjA4NzYxNTljYmRhMzdlOWFjNmI2Yzk5Yy4uZDhkNjRkNTRjY2M3OGEzYzZkZWJhMjFiNzM0Mjhl
NzFhZWIxYmU2MCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2Uu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfcmVzcG9uc2UucHkKQEAgLTIsMTQgKzIs
MTQgQEAgaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBqc29u
Ci1mcm9tIHR5cGVzIGltcG9ydCBNZXRob2RUeXBlCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAK
IGltcG9ydCBweXRlc3QKK2Zyb20gc2l4IGltcG9ydCBjcmVhdGVfYm91bmRfbWV0aG9kCiAKIHdw
dHNlcnZlID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgid3B0c2VydmUiKQogZnJvbSAuYmFzZSBpbXBv
cnQgVGVzdFVzaW5nU2VydmVyLCBUZXN0VXNpbmdIMlNlcnZlciwgZG9jX3Jvb3QKLWZyb20gaHlw
ZXIuaDIuZXhjZXB0aW9ucyBpbXBvcnQgUHJvdG9jb2xFcnJvcgorZnJvbSBoMi5leGNlcHRpb25z
IGltcG9ydCBQcm90b2NvbEVycm9yCiAKIGRlZiBzZW5kX2JvZHlfYXNfaGVhZGVyKHNlbGYpOgog
ICAgIGlmIHNlbGYuX3Jlc3BvbnNlLmFkZF9yZXF1aXJlZF9oZWFkZXJzOgpAQCAtMTksMTMgKzE5
LDExIEBAIGRlZiBzZW5kX2JvZHlfYXNfaGVhZGVyKHNlbGYpOgogICAgIHNlbGYuX2hlYWRlcnNf
Y29tcGxldGUgPSBUcnVlCiAKIGNsYXNzIFRlc3RSZXNwb25zZShUZXN0VXNpbmdTZXJ2ZXIpOgot
ICAgIEBweXRlc3QubWFyay54ZmFpbChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0i
d3B0c2VydmUgb25seSB3b3JrcyBvbiBQeTIiKQogICAgIGRlZiB0ZXN0X2hlYWRfd2l0aG91dF9i
b2R5KHNlbGYpOgogICAgICAgICBAd3B0c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBk
ZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNwb25zZSk6Ci0gICAgICAgICAgICByZXNwb25zZS53cml0
ZXIuZW5kX2hlYWRlcnMgPSBNZXRob2RUeXBlKHNlbmRfYm9keV9hc19oZWFkZXIsCi0gICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvbnNlLndy
aXRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgd3B0c2VydmUucmVzcG9uc2UuUmVzcG9uc2VXcml0ZXIpCisgICAgICAgICAgICByZXNwb25z
ZS53cml0ZXIuZW5kX2hlYWRlcnMgPSBjcmVhdGVfYm91bmRfbWV0aG9kKHNlbmRfYm9keV9hc19o
ZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlcikKICAgICAgICAgICAgIHJldHVybiBbKCJYLVRl
c3QiLCAiVEVTVCIpXSwgImJvZHlcclxuIgogCiAgICAgICAgIHJvdXRlID0gKCJHRVQiLCAiL3Rl
c3QvdGVzdF9oZWFkX3dpdGhvdXRfYm9keSIsIGhhbmRsZXIpCkBAIC0zNSwxNCArMzMsMTIgQEAg
Y2xhc3MgVGVzdFJlc3BvbnNlKFRlc3RVc2luZ1NlcnZlcik6CiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoIlRFU1QiLCByZXNwLmluZm8oKVsneC1UZXN0J10pCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoIiIsIHJlc3AuaW5mbygpWyd4LWJvZHknXSkKIAotICAgIEBweXRlc3QubWFyay54ZmFp
bChzeXMudmVyc2lvbl9pbmZvID49ICgzLCksIHJlYXNvbj0id3B0c2VydmUgb25seSB3b3JrcyBv
biBQeTIiKQogICAgIGRlZiB0ZXN0X2hlYWRfd2l0aF9ib2R5KHNlbGYpOgogICAgICAgICBAd3B0
c2VydmUuaGFuZGxlcnMuaGFuZGxlcgogICAgICAgICBkZWYgaGFuZGxlcihyZXF1ZXN0LCByZXNw
b25zZSk6CiAgICAgICAgICAgICByZXNwb25zZS5zZW5kX2JvZHlfZm9yX2hlYWRfcmVxdWVzdCA9
IFRydWUKLSAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlci5lbmRfaGVhZGVycyA9IE1ldGhvZFR5
cGUoc2VuZF9ib2R5X2FzX2hlYWRlciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uud3JpdGVyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cHRzZXJ2ZS5yZXNwb25zZS5SZXNw
b25zZVdyaXRlcikKKyAgICAgICAgICAgIHJlc3BvbnNlLndyaXRlci5lbmRfaGVhZGVycyA9IGNy
ZWF0ZV9ib3VuZF9tZXRob2Qoc2VuZF9ib2R5X2FzX2hlYWRlciwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVzcG9uc2Uud3Jp
dGVyKQogICAgICAgICAgICAgcmV0dXJuIFsoIlgtVGVzdCIsICJURVNUIildLCAiYm9keVxyXG4i
CiAKICAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC90ZXN0X2hlYWRfd2l0aF9ib2R5Iiwg
aGFuZGxlcikKQEAgLTE2NCw3ICsxNjAsNyBAQCBjbGFzcyBUZXN0UmVzcG9uc2UoVGVzdFVzaW5n
U2VydmVyKToKICAgICBkZWYgdGVzdF93cml0ZV9yYXdfbm9uZShzZWxmKToKICAgICAgICAgQHdw
dHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKICAgICAgICAgZGVmIGhhbmRsZXIocmVxdWVzdCwgcmVz
cG9uc2UpOgotICAgICAgICAgICAgd2l0aCBweXRlc3QucmFpc2VzKFZhbHVlRXJyb3IsIG1lc3Nh
Z2U9ImRhdGEgY2Fubm90IGJlIE5vbmUiKToKKyAgICAgICAgICAgIHdpdGggcHl0ZXN0LnJhaXNl
cyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgICAgICByZXNwb25zZS53cml0ZXIud3JpdGVfcmF3
X2NvbnRlbnQoTm9uZSkKIAogICAgICAgICByb3V0ZSA9ICgiR0VUIiwgIi90ZXN0L3Rlc3Rfd3Jp
dGVfcmF3X2NvbnRlbnQiLCBoYW5kbGVyKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFs
L3Rlc3Rfc2VydmVyLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy9mdW5jdGlvbmFsL3Rlc3Rfc2VydmVyLnB5CmluZGV4
IDUxMWM4NmYzMmM1NGFiNzA0ZTlkY2EyYmExMTQ1MmYyNDE2MWUwNWYuLjUxMzMxYTY3ZWZhODhk
NzhlYTU2MTMwZjAwZTU0MjA2MzNiNmFhYzYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25h
bC90ZXN0X3NlcnZlci5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9zZXJ2ZXIucHkK
QEAgLTQsNyArNCw3IEBAIGltcG9ydCBweXRlc3QKIGZyb20gc2l4Lm1vdmVzLnVybGxpYi5lcnJv
ciBpbXBvcnQgSFRUUEVycm9yCiAKIHdwdHNlcnZlID0gcHl0ZXN0LmltcG9ydG9yc2tpcCgid3B0
c2VydmUiKQotZnJvbSAuYmFzZSBpbXBvcnQgVGVzdFVzaW5nU2VydmVyCitmcm9tIC5iYXNlIGlt
cG9ydCBUZXN0VXNpbmdTZXJ2ZXIsIFRlc3RVc2luZ0gyU2VydmVyCiAKIAogY2xhc3MgVGVzdEZp
bGVIYW5kbGVyKFRlc3RVc2luZ1NlcnZlcik6CkBAIC00MCw1ICs0MCw1MSBAQCBjbGFzcyBUZXN0
UmVxdWVzdEhhbmRsZXIoVGVzdFVzaW5nU2VydmVyKToKIAogICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGNtLmV4Y2VwdGlvbi5jb2RlLCA1MDApCiAKK2NsYXNzIFRlc3RGaWxlSGFuZGxlckgyKFRl
c3RVc2luZ0gyU2VydmVyKToKKyAgICBkZWYgdGVzdF9ub3RfaGFuZGxlZChzZWxmKToKKyAgICAg
ICAgc2VsZi5jb25uLnJlcXVlc3QoIkdFVCIsICIvbm90X2V4aXN0aW5nIikKKyAgICAgICAgcmVz
cCA9IHNlbGYuY29ubi5nZXRfcmVzcG9uc2UoKQorCisgICAgICAgIGFzc2VydCByZXNwLnN0YXR1
cyA9PSA0MDQKKworY2xhc3MgVGVzdFJld3JpdGVySDIoVGVzdFVzaW5nSDJTZXJ2ZXIpOgorICAg
IGRlZiB0ZXN0X3Jld3JpdGUoc2VsZik6CisgICAgICAgIEB3cHRzZXJ2ZS5oYW5kbGVycy5oYW5k
bGVyCisgICAgICAgIGRlZiBoYW5kbGVyKHJlcXVlc3QsIHJlc3BvbnNlKToKKyAgICAgICAgICAg
IHJldHVybiByZXF1ZXN0LnJlcXVlc3RfcGF0aAorCisgICAgICAgIHJvdXRlID0gKCJHRVQiLCAi
L3Rlc3QvcmV3cml0dGVuIiwgaGFuZGxlcikKKyAgICAgICAgc2VsZi5zZXJ2ZXIucmV3cml0ZXIu
cmVnaXN0ZXIoIkdFVCIsICIvdGVzdC9vcmlnaW5hbCIsIHJvdXRlWzFdKQorICAgICAgICBzZWxm
LnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQorICAgICAgICBzZWxmLmNvbm4ucmVxdWVz
dCgiR0VUIiwgIi90ZXN0L29yaWdpbmFsIikKKyAgICAgICAgcmVzcCA9IHNlbGYuY29ubi5nZXRf
cmVzcG9uc2UoKQorICAgICAgICBhc3NlcnQgcmVzcC5zdGF0dXMgPT0gMjAwCisgICAgICAgIGFz
c2VydCByZXNwLnJlYWQoKSA9PSBiIi90ZXN0L3Jld3JpdHRlbiIKKworY2xhc3MgVGVzdFJlcXVl
c3RIYW5kbGVySDIoVGVzdFVzaW5nSDJTZXJ2ZXIpOgorICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbihz
ZWxmKToKKyAgICAgICAgQHdwdHNlcnZlLmhhbmRsZXJzLmhhbmRsZXIKKyAgICAgICAgZGVmIGhh
bmRsZXIocmVxdWVzdCwgcmVzcG9uc2UpOgorICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uCisK
KyAgICAgICAgcm91dGUgPSAoIkdFVCIsICIvdGVzdC9yYWlzZXMiLCBoYW5kbGVyKQorICAgICAg
ICBzZWxmLnNlcnZlci5yb3V0ZXIucmVnaXN0ZXIoKnJvdXRlKQorICAgICAgICBzZWxmLmNvbm4u
cmVxdWVzdCgiR0VUIiwgIi90ZXN0L3JhaXNlcyIpCisgICAgICAgIHJlc3AgPSBzZWxmLmNvbm4u
Z2V0X3Jlc3BvbnNlKCkKKworICAgICAgICBhc3NlcnQgcmVzcC5zdGF0dXMgPT0gNTAwCisKKyAg
ICBkZWYgdGVzdF9mcmFtZV9oYW5kbGVyX2V4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgY2xhc3Mg
aGFuZGxlcl9jbHM6CisgICAgICAgICAgICBkZWYgZnJhbWVfaGFuZGxlcihzZWxmLCByZXF1ZXN0
KToKKyAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24KKworICAgICAgICByb3V0ZSA9ICgi
R0VUIiwgIi90ZXN0L3JhaXNlcyIsIGhhbmRsZXJfY2xzKCkpCisgICAgICAgIHNlbGYuc2VydmVy
LnJvdXRlci5yZWdpc3Rlcigqcm91dGUpCisgICAgICAgIHNlbGYuY29ubi5yZXF1ZXN0KCJHRVQi
LCAiL3Rlc3QvcmFpc2VzIikKKyAgICAgICAgcmVzcCA9IHNlbGYuY29ubi5nZXRfcmVzcG9uc2Uo
KQorCisgICAgICAgIGFzc2VydCByZXNwLnN0YXR1cyA9PSA1MDAKKwogaWYgX19uYW1lX18gPT0g
Il9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVu
Y3Rpb25hbC93M2MtaW1wb3J0LmxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC93M2MtaW1wb3J0Lmxv
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzgwNjUyMDU3ZTllMzNmNGIwM2RmYjIy
NjBjM2QzOTRkZDdlMzJmNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApA
QCAtMSwyNiArMCwwIEBACi1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRl
ZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGly
ZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBX
UFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0K
LVRoZW4gcnVuIHRoZSBUb29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRv
IHJlaW1wb3J0Ci0KLURvIE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Q
cm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLQotTGlzdCBvZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvX19pbml0X18ucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL2Z1bmN0aW9uYWwvYmFzZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Nv
b2tpZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9oYW5kbGVycy5weQotL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMv
ZnVuY3Rpb25hbC90ZXN0X2lucHV0X2ZpbGUucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9w
aXBlcy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3JlcXVlc3QucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL2Z1
bmN0aW9uYWwvdGVzdF9yZXNwb25zZS5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3NlcnZl
ci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMv
d3B0c2VydmUvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X3N0YXNoLnB5CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rl
c3RzL3Rlc3RfY29uZmlnLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy90ZXN0X2NvbmZpZy5weQppbmRleCA5NzEwMzQy
NjY0Zjk0ZWEwYWM3ODE1OWIwZDg1NzhkZmJhNTUyODIwLi44NTI3MWMzYTRiMzI0NzA1Njg4ZjUw
NWI1MzQ5OWJhYjgzZTEzM2I0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Rlc3RzL3Rlc3RfY29uZmlnLnB5Cisr
KyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvdGVzdHMvdGVzdF9jb25maWcucHkKQEAgLTEsNSArMSw4IEBACitpbXBvcnQganNvbgog
aW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBwaWNrbGUKKworZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1w
b3J0IGZpbmRfZXhlY3V0YWJsZQogZnJvbSBsb2dnaW5nIGltcG9ydCBoYW5kbGVycwogCiBpbXBv
cnQgcHl0ZXN0CkBAIC00MSw2ICs0NCwxNiBAQCBkZWYgdGVzdF9sb2dnZXJfcHJlc2VydmVkKCk6
CiAgICAgICAgIGFzc2VydCBjLmxvZ2dlciBpcyBsb2dnZXIKIAogCitkZWYgdGVzdF9hc19kaWN0
KCk6CisgICAgd2l0aCBjb25maWcuQ29uZmlnQnVpbGRlcigpIGFzIGM6CisgICAgICAgIGFzc2Vy
dCBjLmFzX2RpY3QoKSBpcyBub3QgTm9uZQorCisKK2RlZiB0ZXN0X2FzX2RpY3RfaXNfanNvbigp
OgorICAgIHdpdGggY29uZmlnLkNvbmZpZ0J1aWxkZXIoKSBhcyBjOgorICAgICAgICBhc3NlcnQg
anNvbi5kdW1wcyhjLmFzX2RpY3QoKSkgaXMgbm90IE5vbmUKKworCiBkZWYgdGVzdF9pbml0X2Jh
c2ljX3Byb3AoKToKICAgICB3aXRoIGNvbmZpZy5Db25maWdCdWlsZGVyKGJyb3dzZXJfaG9zdD0i
Zm9vLmJhciIpIGFzIGM6CiAgICAgICAgIGFzc2VydCBjLmJyb3dzZXJfaG9zdCA9PSAiZm9vLmJh
ciIKQEAgLTE3Niw2ICsxODksOCBAQCBkZWYgdGVzdF9wb3J0c19ub19zc2woKToKICAgICAgICAg
YXNzZXJ0IHBvcnRzWyJ3cyJdID09IFsxMDAzXQogCiAKK0BweXRlc3QubWFyay5za2lwaWYoZmlu
ZF9leGVjdXRhYmxlKCJvcGVuc3NsIikgaXMgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgcmVh
c29uPSJyZXF1aXJlcyBPcGVuU1NMIikKIGRlZiB0ZXN0X3BvcnRzX29wZW5zc2woKToKICAgICB3
aXRoIGNvbmZpZy5Db25maWdCdWlsZGVyKHBvcnRzPXsiaHR0cCI6IFsxMDAxXSwgImh0dHBzIjog
WzEwMDJdLCAid3MiOiBbMTAwM10sICJ3c3MiOiBbMTAwNF19LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgc3NsPXsidHlwZSI6ICJvcGVuc3NsIn0pIGFzIGM6CkBAIC0zNTksOSArMzc0
LDkgQEAgZGVmIHRlc3Rfc3NsX2Vudl9vcGVuc3NsKCk6CiAKIAogZGVmIHRlc3Rfc3NsX2Vudl9i
b2d1cygpOgotICAgICAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAg
ICAgICB3aXRoIGNvbmZpZy5Db25maWdCdWlsZGVyKHNzbD17InR5cGUiOiAiZm9vYmFyIn0pOgot
ICAgICAgICAgICAgICAgIHBhc3MKKyAgICB3aXRoIHB5dGVzdC5yYWlzZXMoVmFsdWVFcnJvcik6
CisgICAgICAgIHdpdGggY29uZmlnLkNvbmZpZ0J1aWxkZXIoc3NsPXsidHlwZSI6ICJmb29iYXIi
fSk6CisgICAgICAgICAgICBwYXNzCiAKIAogZGVmIHRlc3RfcGlja2xlKCk6CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3Rlc3RzL3czYy1pbXBvcnQubG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS90ZXN0cy93M2MtaW1wb3J0LmxvZwpkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzI4YTljYTk3NzE2ZDA0ZTA1ZjJiNTAwZWJlZjM5ZmY5
MThjMWU0OC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZl
L3Rlc3RzL3czYy1pbXBvcnQubG9nCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVGhl
IHRlc3RzIGluIHRoaXMgZGlyZWN0b3J5IHdlcmUgaW1wb3J0ZWQgZnJvbSB0aGUgVzNDIHJlcG9z
aXRvcnkuCi1EbyBOT1QgbW9kaWZ5IHRoZXNlIHRlc3RzIGRpcmVjdGx5IGluIFdlYktpdC4KLUlu
c3RlYWQsIGNyZWF0ZSBhIHB1bGwgcmVxdWVzdCBvbiB0aGUgV1BUIGdpdGh1YjoKLQlodHRwczov
L2dpdGh1Yi5jb20vd2ViLXBsYXRmb3JtLXRlc3RzL3dwdAotCi1UaGVuIHJ1biB0aGUgVG9vbHMv
U2NyaXB0cy9pbXBvcnQtdzNjLXRlc3RzIGluIFdlYktpdCB0byByZWltcG9ydAotCi1EbyBOT1Qg
bW9kaWZ5IG9yIHJlbW92ZSB0aGlzIGZpbGUuCi0KLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotUHJvcGVydGll
cyByZXF1aXJpbmcgdmVuZG9yIHByZWZpeGVzOgotTm9uZQotUHJvcGVydHkgdmFsdWVzIHJlcXVp
cmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLUxpc3Qgb2YgZmls
ZXM6Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS90ZXN0cy90ZXN0X2NvbmZpZy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdGVzdHMvdGVzdF9yZXBsYWNlbWVudF90
b2tlbml6ZXIucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3czYy1pbXBvcnQu
bG9nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTdiMzI2MDRkYzIwZTBlM2EyNzYx
OWQ5MDZlNDVkOGQ3OTAzM2MxLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBA
Ci1UaGUgdGVzdHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0Mg
cmVwb3NpdG9yeS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0
LgotSW5zdGVhZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0
dHBzOi8vZ2l0aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBU
b29scy9TY3JpcHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURv
IE5PVCBtb2RpZnkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9w
ZXJ0aWVzIHJlcXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMg
cmVxdWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBv
ZiBmaWxlczoKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rv
b2xzL3dwdHNlcnZlL0xJQ0VOU0UKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL01BTklGRVNULmluCi0vTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS9SRUFETUUubWQKLS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3Nl
dHVwLnB5CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3Jt
LXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2NvbmZpZy5weSBiL0xheW91dFRlc3RzL2lt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvY29u
ZmlnLnB5CmluZGV4IGNiNTQzNWZkZWY0YzIwYzY1OTg5ZjMzMDM5MmI5MThkMTcxZmFkMWEuLmUx
MWNhZTEzN2I5YzUxZDg2Nzc0MDAxZWFkNzE5MzhmZDU1YzA1NTUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0
c2VydmUvY29uZmlnLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvY29uZmlnLnB5CkBAIC03NSw3ICs3NSw5
IEBAIGRlZiBqc29uX3R5cGVzKG9iaik6CiAgICAgICAgIHJldHVybiB7a2V5OiBqc29uX3R5cGVz
KHZhbHVlKSBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMob2JqKX0KICAgICBpZiAoaXNpbnN0
YW5jZShvYmosIHN0cmluZ190eXBlcykgb3IKICAgICAgICAgaXNpbnN0YW5jZShvYmosIGludGVn
ZXJfdHlwZXMpIG9yCi0gICAgICAgIGlzaW5zdGFuY2Uob2JqLCBmbG9hdCkpOgorICAgICAgICBp
c2luc3RhbmNlKG9iaiwgZmxvYXQpIG9yCisgICAgICAgIGlzaW5zdGFuY2Uob2JqLCBib29sKSBv
cgorICAgICAgICBvYmogaXMgTm9uZSk6CiAgICAgICAgIHJldHVybiBvYmoKICAgICBpZiBpc2lu
c3RhbmNlKG9iaiwgbGlzdCkgb3IgaGFzYXR0cihvYmosICJfX2l0ZXJfXyIpOgogICAgICAgICBy
ZXR1cm4gW2pzb25fdHlwZXModmFsdWUpIGZvciB2YWx1ZSBpbiBvYmpdCkBAIC0xMDEsNyArMTAz
LDcgQEAgY2xhc3MgQ29uZmlnQnVpbGRlcihvYmplY3QpOgogCiAgICAgVGhlIHByb3BlcnRpZXMg
b24gdGhlIGZpbmFsIGNvbmZpZ3VyYXRpb24gaW5jbHVkZSB0aG9zZSBleHBsaWNpdGx5CiAgICAg
c3VwcGxpZWQgYW5kIGNvbXB1dGVkIHByb3BlcnRpZXMuIFRoZSBjb21wdXRlZCBwcm9wZXJ0aWVz
IGFyZQotICAgIGRlZmluZWQgYnl0IHRoZSBjb21wdXRlZF9wcm9wZXJpdGVzIGF0dHJpYnV0ZSBv
biB0aGUgY2xhc3MuIFRoaXMKKyAgICBkZWZpbmVkIGJ5IHRoZSBjb21wdXRlZF9wcm9wZXJ0aWVz
IGF0dHJpYnV0ZSBvbiB0aGUgY2xhc3MuIFRoaXMKICAgICBpcyBhIGxpc3Qgb2YgcHJvcGVydHkg
bmFtZXMsIGVhY2ggY29ycmVzcG9uZGluZyB0byBhIF9nZXRfPG5hbWU+CiAgICAgbWV0aG9kIG9u
IHRoZSBjbGFzcy4gVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBkZWZpbmVk
CiAgICAgaW4gY29tcHV0ZWRfcHJvcGVydGllcyBhbmQgYXJlIHBhc3NlZCBhIHNpbmdsZSBhcmd1
bWVudCwgYQpAQCAtMTI2LDcgKzEyOCw5IEBAIGNsYXNzIENvbmZpZ0J1aWxkZXIob2JqZWN0KToK
ICAgICAgICAgICAgICJvcGVuc3NsIjogewogICAgICAgICAgICAgICAgICJvcGVuc3NsX2JpbmFy
eSI6ICJvcGVuc3NsIiwKICAgICAgICAgICAgICAgICAiYmFzZV9wYXRoIjogIl9jZXJ0cyIsCisg
ICAgICAgICAgICAgICAgInBhc3N3b3JkIjogIndlYi1wbGF0Zm9ybS10ZXN0cyIsCiAgICAgICAg
ICAgICAgICAgImZvcmNlX3JlZ2VuZXJhdGUiOiBGYWxzZSwKKyAgICAgICAgICAgICAgICAiZHVy
YXRpb24iOiAzMCwKICAgICAgICAgICAgICAgICAiYmFzZV9jb25mX3BhdGgiOiBOb25lCiAgICAg
ICAgICAgICB9LAogICAgICAgICAgICAgInByZWdlbmVyYXRlZCI6IHsKQEAgLTMxNiw3ICszMjAs
NyBAQCBjbGFzcyBDb25maWdCdWlsZGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3NzbF9lbnYu
X19lbnRlcl9fKCkKICAgICAgICAgaWYgc2VsZi5fc3NsX2Vudi5zc2xfZW5hYmxlZDoKICAgICAg
ICAgICAgIGtleV9wYXRoLCBjZXJ0X3BhdGggPSBzZWxmLl9zc2xfZW52Lmhvc3RfY2VydF9wYXRo
KGRhdGFbImRvbWFpbnNfc2V0Il0pCi0gICAgICAgICAgICBjYV9jZXJ0X3BhdGggPSBzZWxmLl9z
c2xfZW52LmNhX2NlcnRfcGF0aCgpCisgICAgICAgICAgICBjYV9jZXJ0X3BhdGggPSBzZWxmLl9z
c2xfZW52LmNhX2NlcnRfcGF0aChkYXRhWyJkb21haW5zX3NldCJdKQogICAgICAgICAgICAgcmV0
dXJuIHsia2V5X3BhdGgiOiBrZXlfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgImNhX2NlcnRf
cGF0aCI6IGNhX2NlcnRfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgImNlcnRfcGF0aCI6IGNl
cnRfcGF0aCwKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvY29uc3RhbnRzLnB5IGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2
ZS9jb25zdGFudHMucHkKaW5kZXggZWMxNTBiYTVjOGY3YTNiODlhNjM5MDNiN2RjNzU3Yzk2ZGZm
ZjFhOS4uMzU3YTJlNmQzNDhmOTAzNDFhYmVhNzhmOWRmMDI1ZjcwMzRhMmU0MCAxMDA2NDQKLS0t
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9jb25zdGFudHMucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25zdGFudHMucHkK
QEAgLTEsMjkgKzEsMzIgQEAKIGZyb20gLiBpbXBvcnQgdXRpbHMKIAotY29udGVudF90eXBlcyA9
IHV0aWxzLmludmVydF9kaWN0KHsidGV4dC9odG1sIjogWyJodG0iLCAiaHRtbCJdLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24vanNvbiI6IFsianNvbiJd
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXBwbGljYXRpb24veGh0bWwr
eG1sIjogWyJ4aHQiLCAieGh0bSIsICJ4aHRtbCJdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYXBwbGljYXRpb24veG1sIjogWyJ4bWwiXSwKLSAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgImFwcGxpY2F0aW9uL3gteHBpbnN0YWxsIjogWyJ4cGkiXSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQvamF2YXNjcmlwdCI6IFsianMi
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQvY3NzIjogWyJjc3Mi
XSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRleHQvcGxhaW4iOiBbInR4
dCIsICJtZCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1hZ2Uvc3Zn
K3htbCI6IFsic3ZnIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbWFn
ZS9naWYiOiBbImdpZiJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1h
Z2UvanBlZyI6IFsianBnIiwgImpwZWciXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImltYWdlL3BuZyI6IFsicG5nIl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICJpbWFnZS9ibXAiOiBbImJtcCJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAidGV4dC9ldmVudC1zdHJlYW0iOiBbImV2ZW50X3N0cmVhbSJdLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAidGV4dC9jYWNoZS1tYW5pZmVzdCI6IFsibWFuaWZl
c3QiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInZpZGVvL21wNCI6IFsi
bXA0IiwgIm00diJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXVkaW8v
bXA0IjogWyJtNGEiXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF1ZGlv
L21wZWciOiBbIm1wMyJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmlk
ZW8vd2VibSI6IFsid2VibSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAi
YXVkaW8vd2VibSI6IFsid2ViYSJdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAidmlkZW8vb2dnIjogWyJvZ2ciLCAib2d2Il0sCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICJhdWRpby9vZ2ciOiBbIm9nYSJdLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAiYXVkaW8veC13YXYiOiBbIndhdiJdLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAidGV4dC92dHQiOiBbInZ0dCJdLH0pCitjb250ZW50X3R5cGVzID0gdXRp
bHMuaW52ZXJ0X2RpY3QoeworICAgICJhcHBsaWNhdGlvbi9qc29uIjogWyJqc29uIl0sCisgICAg
ImFwcGxpY2F0aW9uL3dhc20iOiBbIndhc20iXSwKKyAgICAiYXBwbGljYXRpb24veGh0bWwreG1s
IjogWyJ4aHQiLCAieGh0bSIsICJ4aHRtbCJdLAorICAgICJhcHBsaWNhdGlvbi94bWwiOiBbInht
bCJdLAorICAgICJhcHBsaWNhdGlvbi94LXhwaW5zdGFsbCI6IFsieHBpIl0sCisgICAgImF1ZGlv
L21wNCI6IFsibTRhIl0sCisgICAgImF1ZGlvL21wZWciOiBbIm1wMyJdLAorICAgICJhdWRpby9v
Z2ciOiBbIm9nYSJdLAorICAgICJhdWRpby93ZWJtIjogWyJ3ZWJhIl0sCisgICAgImF1ZGlvL3gt
d2F2IjogWyJ3YXYiXSwKKyAgICAiaW1hZ2UvYm1wIjogWyJibXAiXSwKKyAgICAiaW1hZ2UvZ2lm
IjogWyJnaWYiXSwKKyAgICAiaW1hZ2UvanBlZyI6IFsianBnIiwgImpwZWciXSwKKyAgICAiaW1h
Z2UvcG5nIjogWyJwbmciXSwKKyAgICAiaW1hZ2Uvc3ZnK3htbCI6IFsic3ZnIl0sCisgICAgInRl
eHQvY2FjaGUtbWFuaWZlc3QiOiBbIm1hbmlmZXN0Il0sCisgICAgInRleHQvY3NzIjogWyJjc3Mi
XSwKKyAgICAidGV4dC9ldmVudC1zdHJlYW0iOiBbImV2ZW50X3N0cmVhbSJdLAorICAgICJ0ZXh0
L2h0bWwiOiBbImh0bSIsICJodG1sIl0sCisgICAgInRleHQvamF2YXNjcmlwdCI6IFsianMiLCAi
bWpzIl0sCisgICAgInRleHQvcGxhaW4iOiBbInR4dCIsICJtZCJdLAorICAgICJ0ZXh0L3Z0dCI6
IFsidnR0Il0sCisgICAgInZpZGVvL21wNCI6IFsibXA0IiwgIm00diJdLAorICAgICJ2aWRlby9v
Z2ciOiBbIm9nZyIsICJvZ3YiXSwKKyAgICAidmlkZW8vd2VibSI6IFsid2VibSJdLAorfSkKIAog
cmVzcG9uc2VfY29kZXMgPSB7CiAgICAgMTAwOiAoJ0NvbnRpbnVlJywgJ1JlcXVlc3QgcmVjZWl2
ZWQsIHBsZWFzZSBjb250aW51ZScpLApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKaW5kZXggN2ZiZTQyMzRlYTBhMjUyYWFlZDA3MTgy
ZmQzYmVkNzQxYzE0NzI4NS4uY2E1MTE4MDA5Y2ZjOWM0NzYzZjk5ZTJhNjI5NmQ3ODRhNjUzOTIx
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9oYW5kbGVycy5weQorKysgYi9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2hh
bmRsZXJzLnB5CkBAIC03LDggKzcsNiBAQCBpbXBvcnQgdHJhY2ViYWNrCiBmcm9tIHNpeC5tb3Zl
cy51cmxsaWIucGFyc2UgaW1wb3J0IHBhcnNlX3FzLCBxdW90ZSwgdW5xdW90ZSwgdXJsam9pbgog
ZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogCi1mcm9tIGgyLmV2ZW50cyBpbXBvcnQgUmVxdWVz
dFJlY2VpdmVkLCBEYXRhUmVjZWl2ZWQKLQogZnJvbSAuY29uc3RhbnRzIGltcG9ydCBjb250ZW50
X3R5cGVzCiBmcm9tIC5waXBlcyBpbXBvcnQgUGlwZWxpbmUsIHRlbXBsYXRlCiBmcm9tIC5yYW5n
ZXMgaW1wb3J0IFJhbmdlUGFyc2VyCkBAIC03OSw3ICs3Nyw3IEBAIGNsYXNzIERpcmVjdG9yeUhh
bmRsZXIob2JqZWN0KToKICUoaXRlbXMpcwogPC91bD4KICIiIiAlIHsicGF0aCI6IGNnaS5lc2Nh
cGUodXJsX3BhdGgpLAotICAgICAgICJpdGVtcyI6ICJcbiIuam9pbihzZWxmLmxpc3RfaXRlbXMo
dXJsX3BhdGgsIHBhdGgpKX0gICMgZmxha2U4OiBub3FhCisgICAgICAgIml0ZW1zIjogIlxuIi5q
b2luKHNlbGYubGlzdF9pdGVtcyh1cmxfcGF0aCwgcGF0aCkpfSAgIyBub3FhOiBFMTIyCiAKICAg
ICBkZWYgbGlzdF9pdGVtcyhzZWxmLCBiYXNlX3BhdGgsIHBhdGgpOgogICAgICAgICBhc3NlcnQg
YmFzZV9wYXRoLmVuZHN3aXRoKCIvIikKQEAgLTEwNywxNyArMTA1LDIxIEBAIGNsYXNzIERpcmVj
dG9yeUhhbmRsZXIob2JqZWN0KToKIAogZGVmIHdyYXBfcGlwZWxpbmUocGF0aCwgcmVxdWVzdCwg
cmVzcG9uc2UpOgogICAgIHF1ZXJ5ID0gcGFyc2VfcXMocmVxdWVzdC51cmxfcGFydHMucXVlcnkp
CisgICAgcGlwZV9zdHJpbmcgPSAiIgogCi0gICAgcGlwZWxpbmUgPSBOb25lCi0gICAgaWYgInBp
cGUiIGluIHF1ZXJ5OgotICAgICAgICBwaXBlbGluZSA9IFBpcGVsaW5lKHF1ZXJ5WyJwaXBlIl1b
LTFdKQotICAgIGVsaWYgIi5zdWIuIiBpbiBwYXRoOgorICAgIGlmICIuc3ViLiIgaW4gcGF0aDoK
ICAgICAgICAgbWxfZXh0ZW5zaW9ucyA9IHsiLmh0bWwiLCAiLmh0bSIsICIueGh0IiwgIi54aHRt
bCIsICIueG1sIiwgIi5zdmcifQogICAgICAgICBlc2NhcGVfdHlwZSA9ICJodG1sIiBpZiBvcy5w
YXRoLnNwbGl0ZXh0KHBhdGgpWzFdIGluIG1sX2V4dGVuc2lvbnMgZWxzZSAibm9uZSIKLSAgICAg
ICAgcGlwZWxpbmUgPSBQaXBlbGluZSgic3ViKCVzKSIgJSBlc2NhcGVfdHlwZSkKKyAgICAgICAg
cGlwZV9zdHJpbmcgPSAic3ViKCVzKSIgJSBlc2NhcGVfdHlwZQorCisgICAgaWYgInBpcGUiIGlu
IHF1ZXJ5OgorICAgICAgICBpZiBwaXBlX3N0cmluZzoKKyAgICAgICAgICAgIHBpcGVfc3RyaW5n
ICs9ICJ8IgorCisgICAgICAgIHBpcGVfc3RyaW5nICs9IHF1ZXJ5WyJwaXBlIl1bLTFdCiAKLSAg
ICBpZiBwaXBlbGluZSBpcyBub3QgTm9uZToKLSAgICAgICAgcmVzcG9uc2UgPSBwaXBlbGluZShy
ZXF1ZXN0LCByZXNwb25zZSkKKyAgICBpZiBwaXBlX3N0cmluZzoKKyAgICAgICAgcmVzcG9uc2Ug
PSBQaXBlbGluZShwaXBlX3N0cmluZykocmVxdWVzdCwgcmVzcG9uc2UpCiAKICAgICByZXR1cm4g
cmVzcG9uc2UKIApAQCAtMTYxLDggKzE2Myw4IEBAIGNsYXNzIEZpbGVIYW5kbGVyKG9iamVjdCk6
CiAgICAgICAgIHJ2ID0gKHNlbGYubG9hZF9oZWFkZXJzKHJlcXVlc3QsIG9zLnBhdGguam9pbihv
cy5wYXRoLnNwbGl0KHBhdGgpWzBdLCAiX19kaXJfXyIpKSArCiAgICAgICAgICAgICAgIHNlbGYu
bG9hZF9oZWFkZXJzKHJlcXVlc3QsIHBhdGgpKQogCi0gICAgICAgIGlmIG5vdCBhbnkoa2V5Lmxv
d2VyKCkgPT0gImNvbnRlbnQtdHlwZSIgZm9yIChrZXksIF8pIGluIHJ2KToKLSAgICAgICAgICAg
IHJ2Lmluc2VydCgwLCAoIkNvbnRlbnQtVHlwZSIsIGd1ZXNzX2NvbnRlbnRfdHlwZShwYXRoKSkp
CisgICAgICAgIGlmIG5vdCBhbnkoa2V5Lmxvd2VyKCkgPT0gYiJjb250ZW50LXR5cGUiIGZvciAo
a2V5LCBfKSBpbiBydik6CisgICAgICAgICAgICBydi5pbnNlcnQoMCwgKGIiQ29udGVudC1UeXBl
IiwgZ3Vlc3NfY29udGVudF90eXBlKHBhdGgpLmVuY29kZSgiYXNjaWkiKSkpCiAKICAgICAgICAg
cmV0dXJuIHJ2CiAKQEAgLTE3NSwxNCArMTc3LDE0IEBAIGNsYXNzIEZpbGVIYW5kbGVyKG9iamVj
dCk6CiAgICAgICAgICAgICB1c2Vfc3ViID0gRmFsc2UKIAogICAgICAgICB0cnk6Ci0gICAgICAg
ICAgICB3aXRoIG9wZW4oaGVhZGVyc19wYXRoKSBhcyBoZWFkZXJzX2ZpbGU6CisgICAgICAgICAg
ICB3aXRoIG9wZW4oaGVhZGVyc19wYXRoLCAicmIiKSBhcyBoZWFkZXJzX2ZpbGU6CiAgICAgICAg
ICAgICAgICAgZGF0YSA9IGhlYWRlcnNfZmlsZS5yZWFkKCkKICAgICAgICAgZXhjZXB0IElPRXJy
b3I6CiAgICAgICAgICAgICByZXR1cm4gW10KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlm
IHVzZV9zdWI6CiAgICAgICAgICAgICAgICAgZGF0YSA9IHRlbXBsYXRlKHJlcXVlc3QsIGRhdGEs
IGVzY2FwZV90eXBlPSJub25lIikKLSAgICAgICAgICAgIHJldHVybiBbdHVwbGUoaXRlbS5zdHJp
cCgpIGZvciBpdGVtIGluIGxpbmUuc3BsaXQoIjoiLCAxKSkKKyAgICAgICAgICAgIHJldHVybiBb
dHVwbGUoaXRlbS5zdHJpcCgpIGZvciBpdGVtIGluIGxpbmUuc3BsaXQoYiI6IiwgMSkpCiAgICAg
ICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGRhdGEuc3BsaXRsaW5lcygpIGlmIGxpbmVdCiAK
ICAgICBkZWYgZ2V0X2RhdGEoc2VsZiwgcmVzcG9uc2UsIHBhdGgsIGJ5dGVfcmFuZ2VzKToKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3BpcGVzLnB5CmluZGV4
IGFkOTZmNTkxYTNhOGM4YjdlOGQxM2E0YWQ5NWExYWFlNTAwZjY2ZGEuLmNlYjM0Y2MzZjRmOTk0
ZWQwNDk5MTVjNzc4NGY3YzY5YzcxMmFiY2EgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMu
cHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9waXBlcy5weQpAQCAtMSw1ICsxLDYgQEAKIGZyb20gY2dpIGlt
cG9ydCBlc2NhcGUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCitpbXBvcnQgYmFzZTY0
CiBpbXBvcnQgZ3ppcCBhcyBnemlwX21vZHVsZQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBvcwpA
QCAtMjczLDggKzI3NCw5IEBAIGRlZiBzbGljZShyZXF1ZXN0LCByZXNwb25zZSwgc3RhcnQsIGVu
ZD1Ob25lKToKICAgICAgICAgICAgICAgICAoc3BlbGxlZCAibnVsbCIgaW4gYSBxdWVyeSBzdHJp
bmcpIHRvIGluZGljYXRlIHRoZSBlbmQgb2YKICAgICAgICAgICAgICAgICB0aGUgZmlsZS4KICAg
ICAiIiIKLSAgICBjb250ZW50ID0gcmVzb2x2ZV9jb250ZW50KHJlc3BvbnNlKQotICAgIHJlc3Bv
bnNlLmNvbnRlbnQgPSBjb250ZW50W3N0YXJ0OmVuZF0KKyAgICBjb250ZW50ID0gcmVzb2x2ZV9j
b250ZW50KHJlc3BvbnNlKVtzdGFydDplbmRdCisgICAgcmVzcG9uc2UuY29udGVudCA9IGNvbnRl
bnQKKyAgICByZXNwb25zZS5oZWFkZXJzLnNldCgiQ29udGVudC1MZW5ndGgiLCBsZW4oY29udGVu
dCkpCiAgICAgcmV0dXJuIHJlc3BvbnNlCiAKIApAQCAtMzI3LDcgKzMyOSw3IEBAIGRlZiBzdWIo
cmVxdWVzdCwgcmVzcG9uc2UsIGVzY2FwZV90eXBlPSJodG1sIik6CiAgICAgICAgICAgICAgICAg
ICAgICAgICAiaHRtbCIgYW5kICJub25lIiwgd2l0aCAiaHRtbCIgdGhlIGRlZmF1bHQgZm9yIGhp
c3RvcmljIHJlYXNvbnMuCiAKICAgICBUaGUgZm9ybWF0IGlzIGEgdmVyeSBsaW1pdGVkIHRlbXBs
YXRlIGxhbmd1YWdlLiBTdWJzdGl0dXRpb25zIGFyZQotICAgIGVuY2xvc2VkIGJ5IHt7IGFuZCB9
fS4gVGhlcmUgYXJlIHNldmVyYWwgYXZhbGlhYmxlIHN1YnN0aXR1dGlvbnM6CisgICAgZW5jbG9z
ZWQgYnkge3sgYW5kIH19LiBUaGVyZSBhcmUgc2V2ZXJhbCBhdmFpbGFibGUgc3Vic3RpdHV0aW9u
czoKIAogICAgIGhvc3QKICAgICAgIEEgc2ltcGxlIHN0cmluZyB2YWx1ZSBhbmQgcmVwcmVzZW50
cyB0aGUgcHJpbWFyeSBob3N0IGZyb20gd2hpY2ggdGhlCkBAIC0zNDAsMTkgKzM0MiwyOCBAQCBk
ZWYgc3ViKHJlcXVlc3QsIHJlc3BvbnNlLCBlc2NhcGVfdHlwZT0iaHRtbCIpOgogICAgICAgQSBk
aWN0aW9uYXJ5IG9mIHBhcnRzIG9mIHRoZSByZXF1ZXN0IFVSTC4gVmFsaWQga2V5cyBhcmUKICAg
ICAgICdzZXJ2ZXIsICdzY2hlbWUnLCAnaG9zdCcsICdob3N0bmFtZScsICdwb3J0JywgJ3BhdGgn
IGFuZCAncXVlcnknLgogICAgICAgJ3NlcnZlcicgaXMgc2NoZW1lOi8vaG9zdDpwb3J0LCAnaG9z
dCcgaXMgaG9zdG5hbWU6cG9ydCwgYW5kIHF1ZXJ5Ci0gICAgICAgaW5jbHVkZXMgdGhlIGxlYWRp
bmcgJz8nLCBidXQgb3RoZXIgZGVsaW1pdGVycyBhcmUgb21pdHRlZC4KKyAgICAgIGluY2x1ZGVz
IHRoZSBsZWFkaW5nICc/JywgYnV0IG90aGVyIGRlbGltaXRlcnMgYXJlIG9taXR0ZWQuCiAgICAg
aGVhZGVycwogICAgICAgQSBkaWN0aW9uYXJ5IG9mIEhUVFAgaGVhZGVycyBpbiB0aGUgcmVxdWVz
dC4KKyAgICBoZWFkZXJfb3JfZGVmYXVsdChoZWFkZXIsIGRlZmF1bHQpCisgICAgICBUaGUgdmFs
dWUgb2YgYW4gSFRUUCBoZWFkZXIsIG9yIGEgZGVmYXVsdCB2YWx1ZSBpZiBpdCBpcyBhYnNlbnQu
CisgICAgICBGb3IgZXhhbXBsZTo6CisKKyAgICAgICAge3toZWFkZXJfb3JfZGVmYXVsdChYLVRl
c3QsIHRlc3QtaGVhZGVyLWFic2VudCl9fQorCiAgICAgR0VUCiAgICAgICBBIGRpY3Rpb25hcnkg
b2YgcXVlcnkgcGFyYW1ldGVycyBzdXBwbGllZCB3aXRoIHRoZSByZXF1ZXN0LgogICAgIHV1aWQo
KQogICAgICAgQSBwZXN1ZG8tcmFuZG9tIFVVSUQgc3VpdGFibGUgZm9yIHVzYWdlIHdpdGggc3Rh
c2gKICAgICBmaWxlX2hhc2goYWxnb3JpdGhtLCBmaWxlcGF0aCkKICAgICAgIFRoZSBjcnlwdG9n
cmFwaGljIGhhc2ggb2YgYSBmaWxlLiBTdXBwb3J0ZWQgYWxnb3JpdGhtczogbWQ1LCBzaGExLAot
ICAgICAgc2hhMjI0LCBzaGEyNTYsIHNoYTM4NCwgYW5kIHNoYTUxMi4gRm9yIGV4YW1wbGU6Cisg
ICAgICBzaGEyMjQsIHNoYTI1Niwgc2hhMzg0LCBhbmQgc2hhNTEyLiBGb3IgZXhhbXBsZTo6CiAK
ICAgICAgICAge3tmaWxlX2hhc2gobWQ1LCBkb20vaW50ZXJmYWNlcy5odG1sKX19CiAKKyAgICBm
c19wYXRoKGZpbGVwYXRoKQorICAgICAgVGhlIGFic29sdXRlIHBhdGggdG8gYSBmaWxlIGluc2lk
ZSB0aGUgd3B0IGRvY3VtZW50IHJvb3QKKwogICAgIFNvIGZvciBleGFtcGxlIGluIGEgc2V0dXAg
cnVubmluZyBvbiBsb2NhbGhvc3Qgd2l0aCBhIHd3dwogICAgIHN1YmRvbWFpbiBhbmQgYSBodHRw
IHNlcnZlciBvbiBwb3J0cyA4MCBhbmQgODE6OgogCkBAIC0zNjAsMTYgKzM3MSwxNSBAQCBkZWYg
c3ViKHJlcXVlc3QsIHJlc3BvbnNlLCBlc2NhcGVfdHlwZT0iaHRtbCIpOgogICAgICAge3tkb21h
aW5zW3d3d119fSA9PiB3d3cubG9jYWxob3N0CiAgICAgICB7e3BvcnRzW2h0dHBdWzFdfX0gPT4g
ODEKIAorICAgIEl0IGlzIGFsc28gcG9zc2libGUgdG8gYXNzaWduIGEgdmFsdWUgdG8gYSB2YXJp
YWJsZSBuYW1lLCB3aGljaCBtdXN0IHN0YXJ0CisgICAgd2l0aCB0aGUgJCBjaGFyYWN0ZXIsIHVz
aW5nIHRoZSAiOiIgc3ludGF4IGUuZy46OgogCi0gICAgSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBh
c3NpZ24gYSB2YWx1ZSB0byBhIHZhcmlhYmxlIG5hbWUsIHdoaWNoIG11c3Qgc3RhcnQgd2l0aAot
ICAgIHRoZSAkIGNoYXJhY3RlciwgdXNpbmcgdGhlICI6IiBzeW50YXggZS5nLgotCi0gICAge3sk
aWQ6dXVpZCgpfX0KKyAgICAgIHt7JGlkOnV1aWQoKX19CiAKICAgICBMYXRlciBzdWJzdGl0dXRp
b25zIGluIHRoZSBzYW1lIGZpbGUgbWF5IHRoZW4gcmVmZXIgdG8gdGhlIHZhcmlhYmxlCi0gICAg
YnkgbmFtZSBlLmcuCisgICAgYnkgbmFtZSBlLmcuOjoKIAotICAgIHt7JGlkfX0KKyAgICAgIHt7
JGlkfX0KICAgICAiIiIKICAgICBjb250ZW50ID0gcmVzb2x2ZV9jb250ZW50KHJlc3BvbnNlKQog
CkBAIC0zOTIsNyArNDAyLDcgQEAgY2xhc3MgU3ViRnVuY3Rpb25zKG9iamVjdCk6CiAKICAgICBA
c3RhdGljbWV0aG9kCiAgICAgZGVmIGZpbGVfaGFzaChyZXF1ZXN0LCBhbGdvcml0aG0sIHBhdGgp
OgotICAgICAgICBhbGdvcml0aG0gPSBhbGdvcml0aG0uZGVjb2RlKCJhc2NpaSIpCisgICAgICAg
IGFzc2VydCBpc2luc3RhbmNlKGFsZ29yaXRobSwgdGV4dF90eXBlKQogICAgICAgICBpZiBhbGdv
cml0aG0gbm90IGluIFN1YkZ1bmN0aW9ucy5zdXBwb3J0ZWRfYWxnb3JpdGhtczoKICAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoIlVuc3VwcG9ydGVkIGVuY3J5cHRpb24gYWxnb3JpdGhtOiAn
JXMnIiAlIGFsZ29yaXRobSkKIApAQCAtNDAwLDcgKzQxMCw3IEBAIGNsYXNzIFN1YkZ1bmN0aW9u
cyhvYmplY3QpOgogICAgICAgICBhYnNvbHV0ZV9wYXRoID0gb3MucGF0aC5qb2luKHJlcXVlc3Qu
ZG9jX3Jvb3QsIHBhdGgpCiAKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBvcGVuKGFi
c29sdXRlX3BhdGgpIGFzIGY6CisgICAgICAgICAgICB3aXRoIG9wZW4oYWJzb2x1dGVfcGF0aCwg
InJiIikgYXMgZjoKICAgICAgICAgICAgICAgICBoYXNoX29iai51cGRhdGUoZi5yZWFkKCkpCiAg
ICAgICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICAgICAgIyBJbiB0aGlzIGNvbnRleHQsIGFu
IHVuaGFuZGxlZCBJT0Vycm9yIHdpbGwgYmUgaW50ZXJwcmV0ZWQgYnkgdGhlCkBAIC00MTAsNyAr
NDIwLDI2IEBAIGNsYXNzIFN1YkZ1bmN0aW9ucyhvYmplY3QpOgogICAgICAgICAgICAgIyB0aGUg
cGF0aCB0byB0aGUgZmlsZSB0byBiZSBoYXNoZWQgaXMgaW52YWxpZC4KICAgICAgICAgICAgIHJh
aXNlIEV4Y2VwdGlvbignQ2Fubm90IG9wZW4gZmlsZSBmb3IgaGFzaCBjb21wdXRhdGlvbjogIiVz
IicgJSBhYnNvbHV0ZV9wYXRoKQogCi0gICAgICAgIHJldHVybiBoYXNoX29iai5kaWdlc3QoKS5l
bmNvZGUoJ2Jhc2U2NCcpLnN0cmlwKCkKKyAgICAgICAgcmV0dXJuIGJhc2U2NC5iNjRlbmNvZGUo
aGFzaF9vYmouZGlnZXN0KCkpLnN0cmlwKCkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYg
ZnNfcGF0aChyZXF1ZXN0LCBwYXRoKToKKyAgICAgICAgaWYgbm90IHBhdGguc3RhcnRzd2l0aCgi
LyIpOgorICAgICAgICAgICAgc3ViZGlyID0gcmVxdWVzdC5yZXF1ZXN0X3BhdGhbbGVuKHJlcXVl
c3QudXJsX2Jhc2UpOl0KKyAgICAgICAgICAgIGlmICIvIiBpbiBzdWJkaXI6CisgICAgICAgICAg
ICAgICAgc3ViZGlyID0gc3ViZGlyLnJzcGxpdCgiLyIsIDEpWzBdCisgICAgICAgICAgICByb290
X3JlbF9wYXRoID0gc3ViZGlyICsgIi8iICsgcGF0aAorICAgICAgICBlbHNlOgorICAgICAgICAg
ICAgcm9vdF9yZWxfcGF0aCA9IHBhdGhbMTpdCisgICAgICAgIHJvb3RfcmVsX3BhdGggPSByb290
X3JlbF9wYXRoLnJlcGxhY2UoIi8iLCBvcy5wYXRoLnNlcCkKKyAgICAgICAgYWJzb2x1dGVfcGF0
aCA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4ocmVxdWVzdC5kb2Nfcm9vdCwgcm9vdF9y
ZWxfcGF0aCkpCisgICAgICAgIGlmICIuLiIgaW4gb3MucGF0aC5yZWxwYXRoKGFic29sdXRlX3Bh
dGgsIHJlcXVlc3QuZG9jX3Jvb3QpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiUGF0
aCBvdXRzaWRlIHdwdCByb290IikKKyAgICAgICAgcmV0dXJuIGFic29sdXRlX3BhdGgKKworICAg
IEBzdGF0aWNtZXRob2QKKyAgICBkZWYgaGVhZGVyX29yX2RlZmF1bHQocmVxdWVzdCwgbmFtZSwg
ZGVmYXVsdCk6CisgICAgICAgIHJldHVybiByZXF1ZXN0LmhlYWRlcnMuZ2V0KG5hbWUsIGRlZmF1
bHQpCiAKIGRlZiB0ZW1wbGF0ZShyZXF1ZXN0LCBjb250ZW50LCBlc2NhcGVfdHlwZT0iaHRtbCIp
OgogICAgICNUT0RPOiBUaGVyZSBiYXNpY2FsbHkgaXNuJ3QgYW55IGVycm9yIGhhbmRsaW5nIGhl
cmUKQEAgLTQyNSwxMSArNDU0LDEyIEBAIGRlZiB0ZW1wbGF0ZShyZXF1ZXN0LCBjb250ZW50LCBl
c2NhcGVfdHlwZT0iaHRtbCIpOgogICAgICAgICB0b2tlbnMgPSBkZXF1ZSh0b2tlbnMpCiAKICAg
ICAgICAgdG9rZW5fdHlwZSwgZmllbGQgPSB0b2tlbnMucG9wbGVmdCgpCi0gICAgICAgIGZpZWxk
ID0gZmllbGQuZGVjb2RlKCJhc2NpaSIpCisgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZpZWxk
LCB0ZXh0X3R5cGUpCiAKICAgICAgICAgaWYgdG9rZW5fdHlwZSA9PSAidmFyIjoKICAgICAgICAg
ICAgIHZhcmlhYmxlID0gZmllbGQKICAgICAgICAgICAgIHRva2VuX3R5cGUsIGZpZWxkID0gdG9r
ZW5zLnBvcGxlZnQoKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZmllbGQsIHRleHRf
dHlwZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHZhcmlhYmxlID0gTm9uZQogCkBAIC00
ODgsOSArNTE4LDE0IEBAIGRlZiB0ZW1wbGF0ZShyZXF1ZXN0LCBjb250ZW50LCBlc2NhcGVfdHlw
ZT0iaHRtbCIpOgogICAgICAgICBlc2NhcGVfZnVuYyA9IHsiaHRtbCI6IGxhbWJkYSB4OmVzY2Fw
ZSh4LCBxdW90ZT1UcnVlKSwKICAgICAgICAgICAgICAgICAgICAgICAgIm5vbmUiOiBsYW1iZGEg
eDp4fVtlc2NhcGVfdHlwZV0KIAotICAgICAgICAjU2hvdWxkIHBvc3NpYmx5IHN1cHBvcnQgZXNj
YXBpbmcgZm9yIG90aGVyIGNvbnRleHRzIGUuZy4gc2NyaXB0Ci0gICAgICAgICNUT0RPOiByZWFk
IHRoZSBlbmNvZGluZyBvZiB0aGUgcmVzcG9uc2UKLSAgICAgICAgcmV0dXJuIGVzY2FwZV9mdW5j
KHRleHRfdHlwZSh2YWx1ZSkpLmVuY29kZSgidXRmLTgiKQorICAgICAgICAjIFNob3VsZCBwb3Nz
aWJseSBzdXBwb3J0IGVzY2FwaW5nIGZvciBvdGhlciBjb250ZXh0cyBlLmcuIHNjcmlwdAorICAg
ICAgICAjIFRPRE86IHJlYWQgdGhlIGVuY29kaW5nIG9mIHRoZSByZXNwb25zZQorICAgICAgICAj
IGNnaS5lc2NhcGUoKSBvbmx5IHRha2VzIHRleHQgc3RyaW5ncyBpbiBQeXRob24gMy4KKyAgICAg
ICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYmluYXJ5X3R5cGUpOgorICAgICAgICAgICAgdmFsdWUg
PSB2YWx1ZS5kZWNvZGUoInV0Zi04IikKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCBp
bnQpOgorICAgICAgICAgICAgdmFsdWUgPSB0ZXh0X3R5cGUodmFsdWUpCisgICAgICAgIHJldHVy
biBlc2NhcGVfZnVuYyh2YWx1ZSkuZW5jb2RlKCJ1dGYtOCIpCiAKICAgICB0ZW1wbGF0ZV9yZWdl
eHAgPSByZS5jb21waWxlKGJyInt7KFtefV0qKX19IikKICAgICBuZXdfY29udGVudCA9IHRlbXBs
YXRlX3JlZ2V4cC5zdWIoY29uZmlnX3JlcGxhY2VtZW50LCBjb250ZW50KQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9yYW5nZXMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jhbmdlcy5weQppbmRleCA5NzZjYjE3
ODFhMGRmZTYxODAzOGQ5NGVhMjkxNjllNmI4NmIzZjk4Li4xMDRkY2EyZWY2ZjgzNGFmOGRmMzQx
ZTUwOGQ4YTEwMWU0MjQzOTU3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jhbmdlcy5weQorKysg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL3Jhbmdlcy5weQpAQCAtMyw2ICszLDEwIEBAIGZyb20gLnV0aWxzIGltcG9y
dCBIVFRQRXhjZXB0aW9uCiAKIGNsYXNzIFJhbmdlUGFyc2VyKG9iamVjdCk6CiAgICAgZGVmIF9f
Y2FsbF9fKHNlbGYsIGhlYWRlciwgZmlsZV9zaXplKToKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgaGVhZGVyID0gaGVhZGVyLmRlY29kZSgiYXNjaWkiKQorICAgICAgICBleGNlcHQgVW5pY29k
ZURlY29kZUVycm9yOgorICAgICAgICAgICAgcmFpc2UgSFRUUEV4Y2VwdGlvbig0MDAsICJOb24t
QVNDSUkgcmFuZ2UgaGVhZGVyIHZhbHVlIikKICAgICAgICAgcHJlZml4ID0gImJ5dGVzPSIKICAg
ICAgICAgaWYgbm90IGhlYWRlci5zdGFydHN3aXRoKHByZWZpeCk6CiAgICAgICAgICAgICByYWlz
ZSBIVFRQRXhjZXB0aW9uKDQxNiwgbWVzc2FnZT0iVW5yZWNvZ25pc2VkIHJhbmdlIHR5cGUgJXMi
ICUgKGhlYWRlciwpKQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXF1ZXN0LnB5IGIvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRz
ZXJ2ZS9yZXF1ZXN0LnB5CmluZGV4IGNiNTc1Y2NkYmE0NTE0YTQ1NmMwY2JmNzM5MDRiYjYzYzEy
ZmQ3ZmYuLmE4MGJjMGM4MzAwYWNmY2Y3NjY1MTJiODllY2ZlZTMzOGJhYzIyOTUgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvcmVxdWVzdC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JlcXVlc3QucHkKQEAg
LTEsNyArMSw3IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgY2dpCiBmcm9tIHNpeC5tb3Zlcy5o
dHRwX2Nvb2tpZXMgaW1wb3J0IEJhc2VDb29raWUKLWZyb20gc2l4IGltcG9ydCBCeXRlc0lPCitm
cm9tIHNpeCBpbXBvcnQgQnl0ZXNJTywgYmluYXJ5X3R5cGUsIHRleHRfdHlwZSwgaXRlcml0ZW1z
LCBQWTMKIGltcG9ydCB0ZW1wZmlsZQogCiBmcm9tIHNpeC5tb3Zlcy51cmxsaWIucGFyc2UgaW1w
b3J0IHBhcnNlX3FzbCwgdXJsc3BsaXQKQEAgLTMwOCw3ICszMDgsNyBAQCBjbGFzcyBSZXF1ZXN0
KG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLnJhd19pbnB1dC5zZWVrKDApCiAgICAgICAgICAg
ICBmcyA9IGNnaS5GaWVsZFN0b3JhZ2UoZnA9c2VsZi5yYXdfaW5wdXQsCiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgZW52aXJvbj17IlJFUVVFU1RfTUVUSE9EIjogc2VsZi5tZXRo
b2R9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5oZWFk
ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlYWRlcnM9c2VsZi5yYXdf
aGVhZGVycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZWVwX2JsYW5rX3Zh
bHVlcz1UcnVlKQogICAgICAgICAgICAgc2VsZi5fUE9TVCA9IE11bHRpRGljdC5mcm9tX2ZpZWxk
X3N0b3JhZ2UoZnMpCiAgICAgICAgICAgICBzZWxmLnJhd19pbnB1dC5zZWVrKHBvcykKQEAgLTMx
OCwxMCArMzE4LDEyIEBAIGNsYXNzIFJlcXVlc3Qob2JqZWN0KToKICAgICBkZWYgY29va2llcyhz
ZWxmKToKICAgICAgICAgaWYgc2VsZi5fY29va2llcyBpcyBOb25lOgogICAgICAgICAgICAgcGFy
c2VyID0gQmFzZUNvb2tpZSgpCi0gICAgICAgICAgICBjb29raWVfaGVhZGVycyA9IHNlbGYuaGVh
ZGVycy5nZXQoImNvb2tpZSIsICIiKQorICAgICAgICAgICAgY29va2llX2hlYWRlcnMgPSBzZWxm
LmhlYWRlcnMuZ2V0KCJjb29raWUiLCBiIiIpCisgICAgICAgICAgICBpZiBQWTM6CisgICAgICAg
ICAgICAgICAgY29va2llX2hlYWRlcnMgPSBjb29raWVfaGVhZGVycy5kZWNvZGUoImlzby04ODU5
LTEiKQogICAgICAgICAgICAgcGFyc2VyLmxvYWQoY29va2llX2hlYWRlcnMpCiAgICAgICAgICAg
ICBjb29raWVzID0gQ29va2llcygpCi0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBwYXJz
ZXIuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVyaXRlbXMo
cGFyc2VyKToKICAgICAgICAgICAgICAgICBjb29raWVzW2tleV0gPSBDb29raWVWYWx1ZSh2YWx1
ZSkKICAgICAgICAgICAgIHNlbGYuX2Nvb2tpZXMgPSBjb29raWVzCiAgICAgICAgIHJldHVybiBz
ZWxmLl9jb29raWVzCkBAIC0zNTUsMTEgKzM1NywzNCBAQCBjbGFzcyBIMlJlcXVlc3QoUmVxdWVz
dCk6CiAgICAgICAgIHN1cGVyKEgyUmVxdWVzdCwgc2VsZikuX19pbml0X18ocmVxdWVzdF9oYW5k
bGVyKQogCiAKK2RlZiBfbWF5YmVfZW5jb2RlKHMpOgorICAgICIiIkVuY29kZXMgYSB0ZXh0LXR5
cGUgc3RyaW5nIGludG8gYmluYXJ5IGRhdGEgdXNpbmcgaXNvLTg4NTktMS4KKworICAgIFJldHVy
bnMgYHN0cmAgaW4gUHl0aG9uIDIgYW5kIGBieXRlc2AgaW4gUHl0aG9uIDMuIFRoZSBmdW5jdGlv
biBpcyBhIG5vLW9wCisgICAgaWYgdGhlIGFyZ3VtZW50IGFscmVhZHkgaGFzIGEgYmluYXJ5IHR5
cGUuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShzLCBiaW5hcnlfdHlwZSk6CisgICAgICAg
IHJldHVybiBzCisKKyAgICAjIFB5dGhvbiAzIGFzc3VtZXMgaXNvLTg4NTktMSB3aGVuIHBhcnNp
bmcgaGVhZGVycywgd2hpY2ggd2lsbCBnYXJibGUgdGV4dAorICAgICMgd2l0aCBub24gQVNDSUkg
Y2hhcmFjdGVycy4gV2UgdHJ5IHRvIGVuY29kZSB0aGUgdGV4dCBiYWNrIHRvIGJpbmFyeS4KKyAg
ICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9ibG9iLzI3M2ZjMjIwYjI1OTMz
ZTQ0M2M4MmFmNjg4OGViMTg3MWQwMzJmYjgvTGliL2h0dHAvY2xpZW50LnB5I0wyMTMKKyAgICBp
ZiBpc2luc3RhbmNlKHMsIHRleHRfdHlwZSk6CisgICAgICAgIHJldHVybiBzLmVuY29kZSgiaXNv
LTg4NTktMSIpCisKKyAgICByYWlzZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdmFsdWUgaW4gUmVx
dWVzdEhlYWRlcnM6ICVyIiAlIHMpCisKKwogY2xhc3MgUmVxdWVzdEhlYWRlcnMoZGljdCk6Ci0g
ICAgIiIiRGljdGlvbmFyeS1saWtlIEFQSSBmb3IgYWNjZXNzaW5nIHJlcXVlc3QgaGVhZGVycy4i
IiIKKyAgICAiIiJSZWFkLW9ubHkgZGljdGlvbmFyeS1saWtlIEFQSSBmb3IgYWNjZXNzaW5nIHJl
cXVlc3QgaGVhZGVycy4KKworICAgIFVubGlrZSBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLmhlYWRl
cnMsIHRoaXMgY2xhc3MgYWx3YXlzIHJldHVybnMgYWxsCisgICAgaGVhZGVycyB3aXRoIHRoZSBz
YW1lIG5hbWUgKHNlcGFyYXRlZCBieSBjb21tYXMpLiBBbmQgaXQgZW5zdXJlcyBhbGwga2V5cwor
ICAgIChpLmUuIG5hbWVzIG9mIGhlYWRlcnMpIGFuZCB2YWx1ZXMgaGF2ZSBiaW5hcnkgdHlwZS4K
KyAgICAiIiIKICAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbXMpOgogICAgICAgICBmb3IgaGVh
ZGVyIGluIGl0ZW1zLmtleXMoKToKLSAgICAgICAgICAgIGtleSA9IGhlYWRlci5sb3dlcigpCisg
ICAgICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGhlYWRlcikubG93ZXIoKQogICAgICAgICAg
ICAgIyBnZXQgYWxsIGhlYWRlcnMgd2l0aCB0aGUgc2FtZSBuYW1lCiAgICAgICAgICAgICB2YWx1
ZXMgPSBpdGVtcy5nZXRhbGxtYXRjaGluZ2hlYWRlcnMoaGVhZGVyKQogICAgICAgICAgICAgaWYg
bGVuKHZhbHVlcykgPiAxOgpAQCAtMzY5LDE1ICszOTQsMTcgQEAgY2xhc3MgUmVxdWVzdEhlYWRl
cnMoZGljdCk6CiAgICAgICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbHVlczoKICAgICAgICAg
ICAgICAgICAgICAgIyBnZXRhbGxtYXRjaGluZ2hlYWRlcnMgcmV0dXJucyByYXcgaGVhZGVyIGxp
bmVzLCBzbwogICAgICAgICAgICAgICAgICAgICAjIHNwbGl0IHRvIGdldCBuYW1lLCB2YWx1ZQot
ICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXMuYXBwZW5kKHZhbHVlLnNwbGl0KCc6JywgMSlb
MV0uc3RyaXAoKSkKLSAgICAgICAgICAgICAgICBkaWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwg
bXVsdGlwbGVzKQorICAgICAgICAgICAgICAgICAgICBtdWx0aXBsZXMuYXBwZW5kKF9tYXliZV9l
bmNvZGUodmFsdWUpLnNwbGl0KGInOicsIDEpWzFdLnN0cmlwKCkpCisgICAgICAgICAgICAgICAg
aGVhZGVycyA9IG11bHRpcGxlcwogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBk
aWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgW2l0ZW1zW2hlYWRlcl1dKQorICAgICAgICAgICAg
ICAgIGhlYWRlcnMgPSBbX21heWJlX2VuY29kZShpdGVtc1toZWFkZXJdKV0KKyAgICAgICAgICAg
IGRpY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCBoZWFkZXJzKQogCiAKICAgICBkZWYgX19nZXRp
dGVtX18oc2VsZiwga2V5KToKICAgICAgICAgIiIiR2V0IGFsbCBoZWFkZXJzIG9mIGEgY2VydGFp
biAoY2FzZS1pbnNlbnNpdGl2ZSkgbmFtZS4gSWYgdGhlcmUgaXMKICAgICAgICAgbW9yZSB0aGFu
IG9uZSwgdGhlIHZhbHVlcyBhcmUgcmV0dXJuZWQgY29tbWEgc2VwYXJhdGVkIiIiCisgICAgICAg
IGtleSA9IF9tYXliZV9lbmNvZGUoa2V5KQogICAgICAgICB2YWx1ZXMgPSBkaWN0Ll9fZ2V0aXRl
bV9fKHNlbGYsIGtleS5sb3dlcigpKQogICAgICAgICBpZiBsZW4odmFsdWVzKSA9PSAxOgogICAg
ICAgICAgICAgcmV0dXJuIHZhbHVlc1swXQpAQCAtNDAzLDYgKzQzMCw3IEBAIGNsYXNzIFJlcXVl
c3RIZWFkZXJzKGRpY3QpOgogICAgIGRlZiBnZXRfbGlzdChzZWxmLCBrZXksIGRlZmF1bHQ9bWlz
c2luZyk6CiAgICAgICAgICIiIkdldCBhbGwgdGhlIGhlYWRlciB2YWx1ZXMgZm9yIGEgcGFydGlj
dWxhciBmaWVsZCBuYW1lIGFzCiAgICAgICAgIGEgbGlzdCIiIgorICAgICAgICBrZXkgPSBfbWF5
YmVfZW5jb2RlKGtleSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgcmV0dXJuIGRpY3QuX19n
ZXRpdGVtX18oc2VsZiwga2V5Lmxvd2VyKCkpCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKQEAg
LTQxMiw2ICs0NDAsNyBAQCBjbGFzcyBSZXF1ZXN0SGVhZGVycyhkaWN0KToKICAgICAgICAgICAg
ICAgICByYWlzZQogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBrZXkpOgorICAgICAgICBr
ZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKICAgICAgICAgcmV0dXJuIGRpY3QuX19jb250YWluc19f
KHNlbGYsIGtleS5sb3dlcigpKQogCiAgICAgZGVmIGl0ZXJpdGVtcyhzZWxmKToKQEAgLTUyNyw3
ICs1NTYsNyBAQCBjbGFzcyBNdWx0aURpY3QoZGljdCk6CiAgICAgICAgICAgICByZXR1cm4gZGlj
dC5fX2dldGl0ZW1fXyhzZWxmLCBrZXkpWzBdCiAgICAgICAgIGVsaWYgZGVmYXVsdCBpcyBub3Qg
bWlzc2luZzoKICAgICAgICAgICAgIHJldHVybiBkZWZhdWx0Ci0gICAgICAgIHJhaXNlIEtleUVy
cm9yCisgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkKIAogICAgIGRlZiBsYXN0KHNlbGYsIGtl
eSwgZGVmYXVsdD1taXNzaW5nKToKICAgICAgICAgIiIiR2V0IHRoZSBsYXN0IHZhbHVlIHdpdGgg
YSBnaXZlbiBrZXkKQEAgLTU0MSwxNCArNTcwLDE3IEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToK
ICAgICAgICAgICAgIHJldHVybiBkaWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlbLTFdCiAgICAg
ICAgIGVsaWYgZGVmYXVsdCBpcyBub3QgbWlzc2luZzoKICAgICAgICAgICAgIHJldHVybiBkZWZh
dWx0Ci0gICAgICAgIHJhaXNlIEtleUVycm9yCisgICAgICAgIHJhaXNlIEtleUVycm9yKGtleSkK
IAogICAgIGRlZiBnZXRfbGlzdChzZWxmLCBrZXkpOgogICAgICAgICAiIiJHZXQgYWxsIHZhbHVl
cyB3aXRoIGEgZ2l2ZW4ga2V5IGFzIGEgbGlzdAogCiAgICAgICAgIDpwYXJhbSBrZXk6IFRoZSBr
ZXkgdG8gbG9va3VwCiAgICAgICAgICIiIgotICAgICAgICByZXR1cm4gZGljdC5fX2dldGl0ZW1f
XyhzZWxmLCBrZXkpCisgICAgICAgIGlmIGtleSBpbiBzZWxmOgorICAgICAgICAgICAgcmV0dXJu
IGRpY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAg
cmV0dXJuIFtdCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgZnJvbV9maWVsZF9zdG9yYWdl
KGNscywgZnMpOgpAQCAtNTYxLDkgKzU5Myw3IEBAIGNsYXNzIE11bHRpRGljdChkaWN0KToKICAg
ICAgICAgICAgICAgICB2YWx1ZXMgPSBbdmFsdWVzXQogCiAgICAgICAgICAgICBmb3IgdmFsdWUg
aW4gdmFsdWVzOgotICAgICAgICAgICAgICAgIGlmIHZhbHVlLmZpbGVuYW1lOgotICAgICAgICAg
ICAgICAgICAgICB2YWx1ZSA9IHZhbHVlCi0gICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICBpZiBub3QgdmFsdWUuZmlsZW5hbWU6CiAgICAgICAgICAgICAgICAgICAgIHZhbHVl
ID0gdmFsdWUudmFsdWUKICAgICAgICAgICAgICAgICBzZWxmLmFkZChrZXksIHZhbHVlKQogICAg
ICAgICByZXR1cm4gc2VsZgpAQCAtNTkwLDIxICs2MjAsMjggQEAgY2xhc3MgQXV0aGVudGljYXRp
b24ob2JqZWN0KToKIAogICAgIFRoZSBwYXNzd29yZCBzdXBwbGllZCBpbiB0aGUgSFRUUCBBdXRo
b3JpemF0aW9uCiAgICAgaGVhZGVyLCBvciBOb25lCisKKyAgICBCb3RoIGF0dHJpYnV0ZXMgYXJl
IGJpbmFyeSBzdHJpbmdzIChgc3RyYCBpbiBQeTIsIGBieXRlc2AgaW4gUHkzKSwgc2luY2UKKyAg
ICBSRkM3NjE3IFNlY3Rpb24gMi4xIGRvZXMgbm90IHNwZWNpZnkgdGhlIGVuY29kaW5nIGZvciB1
c2VybmFtZSAmIHBhc3N3b3JkCisgICAgKGFzIGxvbmcgaXQncyBjb21wYXRpYmxlIHdpdGggQVND
SUkpLiBVVEYtOCBzaG91bGQgYmUgYSByZWxhdGl2ZWx5IHNhZmUKKyAgICBjaG9pY2UgaWYgY2Fs
bGVycyBuZWVkIHRvIGRlY29kZSB0aGVtIGFzIG1vc3QgYnJvd3NlcnMgdXNlIGl0LgogICAgICIi
IgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBoZWFkZXJzKToKICAgICAgICAgc2VsZi51c2VybmFt
ZSA9IE5vbmUKICAgICAgICAgc2VsZi5wYXNzd29yZCA9IE5vbmUKIAotICAgICAgICBhdXRoX3Nj
aGVtZXMgPSB7IkJhc2ljIjogc2VsZi5kZWNvZGVfYmFzaWN9CisgICAgICAgIGF1dGhfc2NoZW1l
cyA9IHtiIkJhc2ljIjogc2VsZi5kZWNvZGVfYmFzaWN9CiAKICAgICAgICAgaWYgImF1dGhvcml6
YXRpb24iIGluIGhlYWRlcnM6CiAgICAgICAgICAgICBoZWFkZXIgPSBoZWFkZXJzLmdldCgiYXV0
aG9yaXphdGlvbiIpCi0gICAgICAgICAgICBhdXRoX3R5cGUsIGRhdGEgPSBoZWFkZXIuc3BsaXQo
IiAiLCAxKQorICAgICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoaGVhZGVyLCBiaW5hcnlfdHlw
ZSkKKyAgICAgICAgICAgIGF1dGhfdHlwZSwgZGF0YSA9IGhlYWRlci5zcGxpdChiIiAiLCAxKQog
ICAgICAgICAgICAgaWYgYXV0aF90eXBlIGluIGF1dGhfc2NoZW1lczoKICAgICAgICAgICAgICAg
ICBzZWxmLnVzZXJuYW1lLCBzZWxmLnBhc3N3b3JkID0gYXV0aF9zY2hlbWVzW2F1dGhfdHlwZV0o
ZGF0YSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgSFRUUEV4Y2Vw
dGlvbig0MDAsICJVbnN1cHBvcnRlZCBhdXRoZW50aWNhdGlvbiBzY2hlbWUgJXMiICUgYXV0aF90
eXBlKQogCiAgICAgZGVmIGRlY29kZV9iYXNpYyhzZWxmLCBkYXRhKToKLSAgICAgICAgZGVjb2Rl
ZF9kYXRhID0gYmFzZTY0LmRlY29kZXN0cmluZyhkYXRhKQotICAgICAgICByZXR1cm4gZGVjb2Rl
ZF9kYXRhLnNwbGl0KCI6IiwgMSkKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGF0YSwgYmlu
YXJ5X3R5cGUpCisgICAgICAgIGRlY29kZWRfZGF0YSA9IGJhc2U2NC5iNjRkZWNvZGUoZGF0YSkK
KyAgICAgICAgcmV0dXJuIGRlY29kZWRfZGF0YS5zcGxpdChiIjoiLCAxKQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS9yZXNwb25zZS5weSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKaW5kZXggYmMy
MTQ1MmVlZmZjZTczYmM2Mzk1ZmExYTE1ZjM1ZjlmNTViOTNjNy4uM2E2MGMyYmFiYjM5ZDhkNzc5
OTkwMjJhN2ZiNGQxODRjYjAxOWFhOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9yZXNwb25zZS5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3Jlc3BvbnNlLnB5CkBAIC04LDcgKzgsNyBAQCBmcm9tIC5jb25z
dGFudHMgaW1wb3J0IHJlc3BvbnNlX2NvZGVzLCBoMl9oZWFkZXJzCiBmcm9tIC5sb2dnZXIgaW1w
b3J0IGdldF9sb2dnZXIKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAotZnJvbSBzaXggaW1wb3J0
IGJpbmFyeV90eXBlLCB0ZXh0X3R5cGUsIGl0ZXJ2YWx1ZXMKK2Zyb20gc2l4IGltcG9ydCBiaW5h
cnlfdHlwZSwgdGV4dF90eXBlLCBpbnRlZ2VyX3R5cGVzLCBpdGVydmFsdWVzLCBQWTMKIGZyb20g
aHlwZXJmcmFtZS5mcmFtZSBpbXBvcnQgSGVhZGVyc0ZyYW1lLCBEYXRhRnJhbWUsIENvbnRpbnVh
dGlvbkZyYW1lCiBmcm9tIGhwYWNrLnN0cnVjdCBpbXBvcnQgSGVhZGVyVHVwbGUKIApAQCAtMTEz
LDEwICsxMTMsMTAgQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgICAgICAgICAg
ICAgICAgIHRpbWUgb3IgaW50ZXJ2YWwgZnJvbSBub3cgd2hlbiB0aGUgY29va2llIGV4cGlyZXMK
IAogICAgICAgICAiIiIKLSAgICAgICAgZGF5cyA9IGRpY3QoKGkrMSwgbmFtZSkgZm9yIGksIG5h
bWUgaW4gZW51bWVyYXRlKFsiamFuIiwgImZlYiIsICJtYXIiLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhcHIiLCAibWF5IiwgImp1
biIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgImp1bCIsICJhdWciLCAic2VwIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2N0IiwgIm5vdiIsICJkZWMiXSkpCisgICAg
ICAgIGRheXMgPSB7aSsxOiBuYW1lIGZvciBpLCBuYW1lIGluIGVudW1lcmF0ZShbImphbiIsICJm
ZWIiLCAibWFyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiYXByIiwgIm1heSIsICJqdW4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICJqdWwiLCAiYXVnIiwgInNlcCIsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9jdCIsICJub3YiLCAi
ZGVjIl0pfQogICAgICAgICBpZiB2YWx1ZSBpcyBOb25lOgogICAgICAgICAgICAgdmFsdWUgPSAn
JwogICAgICAgICAgICAgbWF4X2FnZSA9IDAKQEAgLTE1Nyw2ICsxNTcsOCBAQCBjbGFzcyBSZXNw
b25zZShvYmplY3QpOgogICAgICAgICBjb29raWVzID0gc2VsZi5oZWFkZXJzLmdldCgiU2V0LUNv
b2tpZSIpCiAgICAgICAgIHBhcnNlciA9IEJhc2VDb29raWUoKQogICAgICAgICBmb3IgY29va2ll
IGluIGNvb2tpZXM6CisgICAgICAgICAgICBpZiBQWTM6CisgICAgICAgICAgICAgICAgY29va2ll
ID0gY29va2llLmRlY29kZSgiaXNvLTg4NTktMSIpCiAgICAgICAgICAgICBwYXJzZXIubG9hZChj
b29raWUpCiAKICAgICAgICAgaWYgbmFtZSBpbiBwYXJzZXIua2V5cygpOgpAQCAtMTc3LDE0ICsx
NzksMTggQEAgY2xhc3MgUmVzcG9uc2Uob2JqZWN0KToKICAgICAgICAgSWYgYW55IHBhcnQgb2Yg
dGhlIGNvbnRlbnQgaXMgYSBmdW5jdGlvbiwgdGhpcyB3aWxsIGJlIGNhbGxlZAogICAgICAgICBh
bmQgdGhlIHJlc3VsdGluZyB2YWx1ZSAoaWYgYW55KSByZXR1cm5lZC4KIAotICAgICAgICA6cGFy
YW0gcmVhZF9maWxlOiAtIGJvb2xlYW4gY29udHJvbGxpbmcgdGhlIGJlaGF2aW91ciB3aGVuIGNv
bnRlbnQKLSAgICAgICAgaXMgYSBmaWxlIGhhbmRsZS4gV2hlbiBzZXQgdG8gRmFsc2UgdGhlIGhh
bmRsZSB3aWxsIGJlIHJldHVybmVkIGRpcmVjdGx5Ci0gICAgICAgIGFsbG93aW5nIHRoZSBmaWxl
IHRvIGJlIHBhc3NlZCB0byB0aGUgb3V0cHV0IGluIHNtYWxsIGNodW5rcy4gV2hlbiBzZXQgdG8K
LSAgICAgICAgVHJ1ZSwgdGhlIGVudGlyZSBjb250ZW50IG9mIHRoZSBmaWxlIHdpbGwgYmUgcmV0
dXJuZWQgYXMgYSBzdHJpbmcgZmFjaWxpdGF0aW5nCi0gICAgICAgIG5vbi1zdHJlYW1pbmcgb3Bl
cmF0aW9ucyBsaWtlIHRlbXBsYXRlIHN1YnN0aXR1dGlvbi4KKyAgICAgICAgOnBhcmFtIHJlYWRf
ZmlsZTogYm9vbGVhbiBjb250cm9sbGluZyB0aGUgYmVoYXZpb3VyIHdoZW4gY29udGVudCBpcyBh
CisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGUgaGFuZGxlLiBXaGVuIHNldCB0byBGYWxz
ZSB0aGUgaGFuZGxlIHdpbGwgYmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuZWQg
ZGlyZWN0bHkgYWxsb3dpbmcgdGhlIGZpbGUgdG8gYmUgcGFzc2VkIHRvCisgICAgICAgICAgICAg
ICAgICAgICAgICAgIHRoZSBvdXRwdXQgaW4gc21hbGwgY2h1bmtzLiBXaGVuIHNldCB0byBUcnVl
LCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZW50aXJlIGNvbnRlbnQgb2YgdGhlIGZp
bGUgd2lsbCBiZSByZXR1cm5lZCBhcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmlu
ZyBmYWNpbGl0YXRpbmcgbm9uLXN0cmVhbWluZyBvcGVyYXRpb25zIGxpa2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgdGVtcGxhdGUgc3Vic3RpdHV0aW9uLgogICAgICAgICAiIiIKLSAgICAg
ICAgaWYgaXNpbnN0YW5jZShzZWxmLmNvbnRlbnQsIChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSk6
CisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5jb250ZW50LCBiaW5hcnlfdHlwZSk6CiAgICAg
ICAgICAgICB5aWVsZCBzZWxmLmNvbnRlbnQKKyAgICAgICAgZWxpZiBpc2luc3RhbmNlKHNlbGYu
Y29udGVudCwgdGV4dF90eXBlKToKKyAgICAgICAgICAgIHlpZWxkIHNlbGYuY29udGVudC5lbmNv
ZGUoc2VsZi5lbmNvZGluZykKICAgICAgICAgZWxpZiBoYXNhdHRyKHNlbGYuY29udGVudCwgInJl
YWQiKToKICAgICAgICAgICAgIGlmIHJlYWRfZmlsZToKICAgICAgICAgICAgICAgICB5aWVsZCBz
ZWxmLmNvbnRlbnQucmVhZCgpCkBAIC0yMzUsMTggKzI0MSwxOCBAQCBjbGFzcyBNdWx0aXBhcnRD
b250ZW50KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGJvdW5kYXJ5PU5vbmUsIGRl
ZmF1bHRfY29udGVudF90eXBlPU5vbmUpOgogICAgICAgICBzZWxmLml0ZW1zID0gW10KICAgICAg
ICAgaWYgYm91bmRhcnkgaXMgTm9uZToKLSAgICAgICAgICAgIGJvdW5kYXJ5ID0gc3RyKHV1aWQu
dXVpZDQoKSkKKyAgICAgICAgICAgIGJvdW5kYXJ5ID0gdGV4dF90eXBlKHV1aWQudXVpZDQoKSkK
ICAgICAgICAgc2VsZi5ib3VuZGFyeSA9IGJvdW5kYXJ5CiAgICAgICAgIHNlbGYuZGVmYXVsdF9j
b250ZW50X3R5cGUgPSBkZWZhdWx0X2NvbnRlbnRfdHlwZQogCiAgICAgZGVmIF9fY2FsbF9fKHNl
bGYpOgotICAgICAgICBib3VuZGFyeSA9ICItLSIgKyBzZWxmLmJvdW5kYXJ5Ci0gICAgICAgIHJ2
ID0gWyIiLCBib3VuZGFyeV0KKyAgICAgICAgYm91bmRhcnkgPSBiIi0tIiArIHNlbGYuYm91bmRh
cnkuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgIHJ2ID0gW2IiIiwgYm91bmRhcnldCiAgICAgICAg
IGZvciBpdGVtIGluIHNlbGYuaXRlbXM6Ci0gICAgICAgICAgICBydi5hcHBlbmQoc3RyKGl0ZW0p
KQorICAgICAgICAgICAgcnYuYXBwZW5kKGl0ZW0udG9fYnl0ZXMoKSkKICAgICAgICAgICAgIHJ2
LmFwcGVuZChib3VuZGFyeSkKLSAgICAgICAgcnZbLTFdICs9ICItLSIKLSAgICAgICAgcmV0dXJu
ICJcclxuIi5qb2luKHJ2KQorICAgICAgICBydlstMV0gKz0gYiItLSIKKyAgICAgICAgcmV0dXJu
IGIiXHJcbiIuam9pbihydikKIAogICAgIGRlZiBhcHBlbmRfcGFydChzZWxmLCBkYXRhLCBjb250
ZW50X3R5cGU9Tm9uZSwgaGVhZGVycz1Ob25lKToKICAgICAgICAgaWYgY29udGVudF90eXBlIGlz
IE5vbmU6CkBAIC0yNjMsNiArMjY5LDcgQEAgY2xhc3MgTXVsdGlwYXJ0Q29udGVudChvYmplY3Qp
OgogCiBjbGFzcyBNdWx0aXBhcnRQYXJ0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGRhdGEsIGNvbnRlbnRfdHlwZT1Ob25lLCBoZWFkZXJzPU5vbmUpOgorICAgICAgICBhc3NlcnQg
aXNpbnN0YW5jZShkYXRhLCBiaW5hcnlfdHlwZSksIGRhdGEKICAgICAgICAgc2VsZi5oZWFkZXJz
ID0gUmVzcG9uc2VIZWFkZXJzKCkKIAogICAgICAgICBpZiBjb250ZW50X3R5cGUgaXMgbm90IE5v
bmU6CkBAIC0yNzAsNyArMjc3LDcgQEAgY2xhc3MgTXVsdGlwYXJ0UGFydChvYmplY3QpOgogCiAg
ICAgICAgIGlmIGhlYWRlcnMgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBmb3IgbmFtZSwgdmFs
dWUgaW4gaGVhZGVyczoKLSAgICAgICAgICAgICAgICBpZiBuYW1lLmxvd2VyKCkgPT0gImNvbnRl
bnQtdHlwZSI6CisgICAgICAgICAgICAgICAgaWYgbmFtZS5sb3dlcigpID09IGIiY29udGVudC10
eXBlIjoKICAgICAgICAgICAgICAgICAgICAgZnVuYyA9IHNlbGYuaGVhZGVycy5zZXQKICAgICAg
ICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBmdW5jID0gc2VsZi5oZWFkZXJz
LmFwcGVuZApAQCAtMjc4LDEzICsyODUsMzYgQEAgY2xhc3MgTXVsdGlwYXJ0UGFydChvYmplY3Qp
OgogCiAgICAgICAgIHNlbGYuZGF0YSA9IGRhdGEKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgor
ICAgIGRlZiB0b19ieXRlcyhzZWxmKToKICAgICAgICAgcnYgPSBbXQotICAgICAgICBmb3IgaXRl
bSBpbiBzZWxmLmhlYWRlcnM6Ci0gICAgICAgICAgICBydi5hcHBlbmQoIiVzOiAlcyIgJSBpdGVt
KQotICAgICAgICBydi5hcHBlbmQoIiIpCisgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYu
aGVhZGVyczoKKyAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGtleSwgYmluYXJ5X3R5cGUp
CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh2YWx1ZSwgYmluYXJ5X3R5cGUpCisgICAg
ICAgICAgICBydi5hcHBlbmQoYiIlczogJXMiICUgKGtleSwgdmFsdWUpKQorICAgICAgICBydi5h
cHBlbmQoYiIiKQogICAgICAgICBydi5hcHBlbmQoc2VsZi5kYXRhKQotICAgICAgICByZXR1cm4g
IlxyXG4iLmpvaW4ocnYpCisgICAgICAgIHJldHVybiBiIlxyXG4iLmpvaW4ocnYpCisKKworZGVm
IF9tYXliZV9lbmNvZGUocyk6CisgICAgIiIiRW5jb2RlcyBhIHRleHQtdHlwZSBzdHJpbmcgaW50
byBiaW5hcnkgZGF0YSB1c2luZyBpc28tODg1OS0xLgorCisgICAgUmV0dXJucyBgc3RyYCBpbiBQ
eXRob24gMiBhbmQgYGJ5dGVzYCBpbiBQeXRob24gMy4gVGhlIGZ1bmN0aW9uIGlzIGEgbm8tb3AK
KyAgICBpZiB0aGUgYXJndW1lbnQgYWxyZWFkeSBoYXMgYSBiaW5hcnkgdHlwZS4KKyAgICAiIiIK
KyAgICBpZiBpc2luc3RhbmNlKHMsIGJpbmFyeV90eXBlKToKKyAgICAgICAgcmV0dXJuIHMKKwor
ICAgICMgUHl0aG9uIDMgYXNzdW1lcyBpc28tODg1OS0xIHdoZW4gcGFyc2luZyBoZWFkZXJzLCB3
aGljaCB3aWxsIGdhcmJsZSB0ZXh0CisgICAgIyB3aXRoIG5vbiBBU0NJSSBjaGFyYWN0ZXJzLiBX
ZSB0cnkgdG8gZW5jb2RlIHRoZSB0ZXh0IGJhY2sgdG8gYmluYXJ5LgorICAgICMgaHR0cHM6Ly9n
aXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2Jsb2IvMjczZmMyMjBiMjU5MzNlNDQzYzgyYWY2ODg4
ZWIxODcxZDAzMmZiOC9MaWIvaHR0cC9jbGllbnQucHkjTDIxMworICAgIGlmIGlzaW5zdGFuY2Uo
cywgdGV4dF90eXBlKToKKyAgICAgICAgcmV0dXJuIHMuZW5jb2RlKCJpc28tODg1OS0xIikKKwor
ICAgIGlmIGlzaW5zdGFuY2UocywgaW50ZWdlcl90eXBlcyk6CisgICAgICAgIHJldHVybiBiIiVp
IiAlIChzLCkKKworICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB2YWx1ZSBpbiBSZXNw
b25zZUhlYWRlcnM6ICVyIiAlIHMpCiAKIAogY2xhc3MgUmVzcG9uc2VIZWFkZXJzKG9iamVjdCk6
CkBAIC0yOTksNiArMzI5LDggQEAgY2xhc3MgUmVzcG9uc2VIZWFkZXJzKG9iamVjdCk6CiAgICAg
ICAgIDpwYXJhbSBrZXk6IE5hbWUgb2YgdGhlIGhlYWRlciB0byBzZXQKICAgICAgICAgOnBhcmFt
IHZhbHVlOiBWYWx1ZSB0byBzZXQgdGhlIGhlYWRlciB0bwogICAgICAgICAiIiIKKyAgICAgICAg
a2V5ID0gX21heWJlX2VuY29kZShrZXkpCisgICAgICAgIHZhbHVlID0gX21heWJlX2VuY29kZSh2
YWx1ZSkKICAgICAgICAgc2VsZi5kYXRhW2tleS5sb3dlcigpXSA9IChrZXksIFt2YWx1ZV0pCiAK
ICAgICBkZWYgYXBwZW5kKHNlbGYsIGtleSwgdmFsdWUpOgpAQCAtMzA4LDYgKzM0MCw4IEBAIGNs
YXNzIFJlc3BvbnNlSGVhZGVycyhvYmplY3QpOgogICAgICAgICA6cGFyYW0ga2V5OiBOYW1lIG9m
IHRoZSBoZWFkZXIgdG8gYWRkCiAgICAgICAgIDpwYXJhbSB2YWx1ZTogVmFsdWUgdG8gc2V0IGZv
ciB0aGUgaGVhZGVyCiAgICAgICAgICIiIgorICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtl
eSkKKyAgICAgICAgdmFsdWUgPSBfbWF5YmVfZW5jb2RlKHZhbHVlKQogICAgICAgICBpZiBrZXku
bG93ZXIoKSBpbiBzZWxmLmRhdGE6CiAgICAgICAgICAgICBzZWxmLmRhdGFba2V5Lmxvd2VyKCld
WzFdLmFwcGVuZCh2YWx1ZSkKICAgICAgICAgZWxzZToKQEAgLTMxNSw2ICszNDksNyBAQCBjbGFz
cyBSZXNwb25zZUhlYWRlcnMob2JqZWN0KToKIAogICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZh
dWx0PW1pc3NpbmcpOgogICAgICAgICAiIiJHZXQgdGhlIHNldCB2YWx1ZXMgZm9yIGEgcGFydGlj
dWxhciBoZWFkZXIuIiIiCisgICAgICAgIGtleSA9IF9tYXliZV9lbmNvZGUoa2V5KQogICAgICAg
ICB0cnk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZltrZXldCiAgICAgICAgIGV4Y2VwdCBLZXlF
cnJvcjoKQEAgLTMyNiwxMiArMzYxLDE1IEBAIGNsYXNzIFJlc3BvbnNlSGVhZGVycyhvYmplY3Qp
OgogICAgICAgICAiIiJHZXQgYSBsaXN0IG9mIHZhbHVlcyBmb3IgYSBwYXJ0aWN1bGFyIGhlYWRl
cgogCiAgICAgICAgICIiIgorICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKICAgICAg
ICAgcmV0dXJuIHNlbGYuZGF0YVtrZXkubG93ZXIoKV1bMV0KIAogICAgIGRlZiBfX2RlbGl0ZW1f
XyhzZWxmLCBrZXkpOgorICAgICAgICBrZXkgPSBfbWF5YmVfZW5jb2RlKGtleSkKICAgICAgICAg
ZGVsIHNlbGYuZGF0YVtrZXkubG93ZXIoKV0KIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwg
a2V5KToKKyAgICAgICAga2V5ID0gX21heWJlX2VuY29kZShrZXkpCiAgICAgICAgIHJldHVybiBr
ZXkubG93ZXIoKSBpbiBzZWxmLmRhdGEKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXks
IHZhbHVlKToKQEAgLTM5MSw2ICs0MjksMTcgQEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihvYmpl
Y3QpOgogICAgICAgICBzZWxmLmxvZ2dlciA9IHJlc3BvbnNlLmxvZ2dlcgogCiAgICAgZGVmIHdy
aXRlX2hlYWRlcnMoc2VsZiwgaGVhZGVycywgc3RhdHVzX2NvZGUsIHN0YXR1c19tZXNzYWdlPU5v
bmUsIHN0cmVhbV9pZD1Ob25lLCBsYXN0PUZhbHNlKToKKyAgICAgICAgIiIiCisgICAgICAgIFNl
bmQgYSBIRUFERVIgZnJhbWUgdGhhdCBpcyB0cmFja2VkIGJ5IHRoZSBsb2NhbCBzdGF0ZSBtYWNo
aW5lLgorCisgICAgICAgIFdyaXRlIGEgSEVBREVSIGZyYW1lIHVzaW5nIHRoZSBIMiBDb25uZWN0
aW9uIG9iamVjdCwgd2lsbCBvbmx5IHdvcmsgaWYgdGhlIHN0cmVhbSBpcyBpbiBhIHN0YXRlIHRv
IHNlbmQKKyAgICAgICAgSEVBREVSIGZyYW1lcy4KKworICAgICAgICA6cGFyYW0gaGVhZGVyczog
TGlzdCBvZiAoaGVhZGVyLCB2YWx1ZSkgdHVwbGVzCisgICAgICAgIDpwYXJhbSBzdGF0dXNfY29k
ZTogVGhlIEhUVFAgc3RhdHVzIGNvZGUgb2YgdGhlIHJlc3BvbnNlCisgICAgICAgIDpwYXJhbSBz
dHJlYW1faWQ6IElkIG9mIHN0cmVhbSB0byBzZW5kIGZyYW1lIG9uLiBXaWxsIHVzZSB0aGUgcmVx
dWVzdCBzdHJlYW0gSUQgaWYgTm9uZQorICAgICAgICA6cGFyYW0gbGFzdDogRmxhZyB0byBzaWdu
YWwgaWYgdGhpcyBpcyB0aGUgbGFzdCBmcmFtZSBpbiBzdHJlYW0uCisgICAgICAgICIiIgogICAg
ICAgICBmb3JtYXR0ZWRfaGVhZGVycyA9IFtdCiAgICAgICAgIHNlY29uZGFyeV9oZWFkZXJzID0g
W10gICMgTm9uICc6JyBwcmVmaXhlZCBoZWFkZXJzIGFyZSB0byBiZSBhZGRlZCBhZnRlcndhcmRz
CiAKQEAgLTQxNCw2ICs0NjMsMTcgQEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihvYmplY3QpOgog
ICAgICAgICAgICAgc2VsZi53cml0ZShjb25uZWN0aW9uKQogCiAgICAgZGVmIHdyaXRlX2RhdGEo
c2VsZiwgaXRlbSwgbGFzdD1GYWxzZSwgc3RyZWFtX2lkPU5vbmUpOgorICAgICAgICAiIiIKKyAg
ICAgICAgU2VuZCBhIERBVEEgZnJhbWUgdGhhdCBpcyB0cmFja2VkIGJ5IHRoZSBsb2NhbCBzdGF0
ZSBtYWNoaW5lLgorCisgICAgICAgIFdyaXRlIGEgREFUQSBmcmFtZSB1c2luZyB0aGUgSDIgQ29u
bmVjdGlvbiBvYmplY3QsIHdpbGwgb25seSB3b3JrIGlmIHRoZSBzdHJlYW0gaXMgaW4gYSBzdGF0
ZSB0byBzZW5kCisgICAgICAgIERBVEEgZnJhbWVzLiBVc2VzIGZsb3cgY29udHJvbCB0byBzcGxp
dCBkYXRhIGludG8gbXVsdGlwbGUgZGF0YSBmcmFtZXMgaWYgaXQgZXhjZWVkcyB0aGUgc2l6ZSB0
aGF0IGNhbgorICAgICAgICBiZSBpbiBhIHNpbmdsZSBmcmFtZS4KKworICAgICAgICA6cGFyYW0g
aXRlbTogVGhlIGNvbnRlbnQgb2YgdGhlIERBVEEgZnJhbWUKKyAgICAgICAgOnBhcmFtIGxhc3Q6
IEZsYWcgdG8gc2lnbmFsIGlmIHRoaXMgaXMgdGhlIGxhc3QgZnJhbWUgaW4gc3RyZWFtLgorICAg
ICAgICA6cGFyYW0gc3RyZWFtX2lkOiBJZCBvZiBzdHJlYW0gdG8gc2VuZCBmcmFtZSBvbi4gV2ls
bCB1c2UgdGhlIHJlcXVlc3Qgc3RyZWFtIElEIGlmIE5vbmUKKyAgICAgICAgIiIiCiAgICAgICAg
IGlmIGlzaW5zdGFuY2UoaXRlbSwgKHRleHRfdHlwZSwgYmluYXJ5X3R5cGUpKToKICAgICAgICAg
ICAgIGRhdGEgPSBCeXRlc0lPKHNlbGYuZW5jb2RlKGl0ZW0pKQogICAgICAgICBlbHNlOgpAQCAt
NDc0LDEzICs1MzQsMjUgQEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihvYmplY3QpOgogICAgICAg
ICByZXR1cm4gcHVzaF9zdHJlYW1faWQKIAogICAgIGRlZiBlbmRfc3RyZWFtKHNlbGYsIHN0cmVh
bV9pZD1Ob25lKToKKyAgICAgICAgIiIiRW5kcyB0aGUgc3RyZWFtIHdpdGggdGhlIGdpdmVuIElE
LCBvciB0aGUgb25lIHRoYXQgcmVxdWVzdCB3YXMgbWFkZSBvbiBpZiBubyBJRCBnaXZlbi4iIiIK
ICAgICAgICAgd2l0aCBzZWxmLmgyY29ubiBhcyBjb25uZWN0aW9uOgogICAgICAgICAgICAgY29u
bmVjdGlvbi5lbmRfc3RyZWFtKHN0cmVhbV9pZCBpZiBzdHJlYW1faWQgaXMgbm90IE5vbmUgZWxz
ZSBzZWxmLnJlcXVlc3QuaDJfc3RyZWFtX2lkKQogICAgICAgICAgICAgc2VsZi53cml0ZShjb25u
ZWN0aW9uKQogICAgICAgICBzZWxmLnN0cmVhbV9lbmRlZCA9IFRydWUKIAogICAgIGRlZiB3cml0
ZV9yYXdfaGVhZGVyX2ZyYW1lKHNlbGYsIGhlYWRlcnMsIHN0cmVhbV9pZD1Ob25lLCBlbmRfc3Ry
ZWFtPUZhbHNlLCBlbmRfaGVhZGVycz1GYWxzZSwgZnJhbWVfY2xzPUhlYWRlcnNGcmFtZSk6Ci0g
ICAgICAgICIiIlRoaXMgYnlwYXNzZXMgc3RhdGUgY2hlY2tpbmcgYW5kIHN1Y2gsIGFuZCBzZW5k
cyBhIGhlYWRlciByZWdhcmRsZXNzIiIiCisgICAgICAgICIiIgorICAgICAgICBJZ25vcmVzIHRo
ZSBzdGF0ZW1hY2hpbmUgb2YgdGhlIHN0cmVhbSBhbmQgc2VuZHMgYSBIRUFERVIgZnJhbWUgcmVn
YXJkbGVzcy4KKworICAgICAgICBVbmxpa2UgYHdyaXRlX2hlYWRlcnNgLCB0aGlzIGRvZXMgbm90
IGNoZWNrIHRvIHNlZSBpZiBhIHN0cmVhbSBpcyBpbiB0aGUgY29ycmVjdCBzdGF0ZSB0byBoYXZl
IEhFQURFUiBmcmFtZXMKKyAgICAgICAgc2VudCB0aHJvdWdoIHRvIGl0LiBJdCB3aWxsIGJ1aWxk
IGEgSEVBREVSIGZyYW1lIGFuZCBzZW5kIGl0IHdpdGhvdXQgdXNpbmcgdGhlIEgyIENvbm5lY3Rp
b24gb2JqZWN0IG90aGVyIHRoYW4KKyAgICAgICAgdG8gSFBBQ0sgZW5jb2RlIHRoZSBoZWFkZXJz
LgorCisgICAgICAgIDpwYXJhbSBoZWFkZXJzOiBMaXN0IG9mIChoZWFkZXIsIHZhbHVlKSB0dXBs
ZXMKKyAgICAgICAgOnBhcmFtIHN0cmVhbV9pZDogSWQgb2Ygc3RyZWFtIHRvIHNlbmQgZnJhbWUg
b24uIFdpbGwgdXNlIHRoZSByZXF1ZXN0IHN0cmVhbSBJRCBpZiBOb25lCisgICAgICAgIDpwYXJh
bSBlbmRfc3RyZWFtOiBTZXQgdG8gVHJ1ZSB0byBhZGQgRU5EX1NUUkVBTSBmbGFnIHRvIGZyYW1l
CisgICAgICAgIDpwYXJhbSBlbmRfaGVhZGVyczogU2V0IHRvIFRydWUgdG8gYWRkIEVORF9IRUFE
RVJTIGZsYWcgdG8gZnJhbWUKKyAgICAgICAgIiIiCiAgICAgICAgIGlmIG5vdCBzdHJlYW1faWQ6
CiAgICAgICAgICAgICBzdHJlYW1faWQgPSBzZWxmLnJlcXVlc3QuaDJfc3RyZWFtX2lkCiAKQEAg
LTUwMSw3ICs1NzMsMTcgQEAgY2xhc3MgSDJSZXNwb25zZVdyaXRlcihvYmplY3QpOgogICAgICAg
ICAgICAgc2VsZi53cml0ZV9yYXcoZGF0YSkKIAogICAgIGRlZiB3cml0ZV9yYXdfZGF0YV9mcmFt
ZShzZWxmLCBkYXRhLCBzdHJlYW1faWQ9Tm9uZSwgZW5kX3N0cmVhbT1GYWxzZSk6Ci0gICAgICAg
ICIiIlRoaXMgYnlwYXNzZXMgc3RhdGUgY2hlY2tpbmcgYW5kIHN1Y2gsIGFuZCBzZW5kcyBhIGRh
dGEgZnJhbWUgcmVnYXJkbGVzcyIiIgorICAgICAgICAiIiIKKyAgICAgICAgSWdub3JlcyB0aGUg
c3RhdGVtYWNoaW5lIG9mIHRoZSBzdHJlYW0gYW5kIHNlbmRzIGEgREFUQSBmcmFtZSByZWdhcmRs
ZXNzLgorCisgICAgICAgIFVubGlrZSBgd3JpdGVfZGF0YWAsIHRoaXMgZG9lcyBub3QgY2hlY2sg
dG8gc2VlIGlmIGEgc3RyZWFtIGlzIGluIHRoZSBjb3JyZWN0IHN0YXRlIHRvIGhhdmUgREFUQSBm
cmFtZXMKKyAgICAgICAgc2VudCB0aHJvdWdoIHRvIGl0LiBJdCB3aWxsIGJ1aWxkIGEgREFUQSBm
cmFtZSBhbmQgc2VuZCBpdCB3aXRob3V0IHVzaW5nIHRoZSBIMiBDb25uZWN0aW9uIG9iamVjdC4g
SXQgd2lsbAorICAgICAgICBub3QgcGVyZm9ybSBhbnkgZmxvdyBjb250cm9sIGNoZWNrcy4KKwor
ICAgICAgICA6cGFyYW0gZGF0YTogVGhlIGRhdGEgdG8gYmUgc2VudCBpbiB0aGUgZnJhbWUKKyAg
ICAgICAgOnBhcmFtIHN0cmVhbV9pZDogSWQgb2Ygc3RyZWFtIHRvIHNlbmQgZnJhbWUgb24uIFdp
bGwgdXNlIHRoZSByZXF1ZXN0IHN0cmVhbSBJRCBpZiBOb25lCisgICAgICAgIDpwYXJhbSBlbmRf
c3RyZWFtOiBTZXQgdG8gVHJ1ZSB0byBhZGQgRU5EX1NUUkVBTSBmbGFnIHRvIGZyYW1lCisgICAg
ICAgICIiIgogICAgICAgICBpZiBub3Qgc3RyZWFtX2lkOgogICAgICAgICAgICAgc3RyZWFtX2lk
ID0gc2VsZi5yZXF1ZXN0LmgyX3N0cmVhbV9pZAogCkBAIC01MTUsMTMgKzU5NywyNSBAQCBjbGFz
cyBIMlJlc3BvbnNlV3JpdGVyKG9iamVjdCk6CiAgICAgICAgIHNlbGYud3JpdGVfcmF3KGRhdGEp
CiAKICAgICBkZWYgd3JpdGVfcmF3X2NvbnRpbnVhdGlvbl9mcmFtZShzZWxmLCBoZWFkZXJzLCBz
dHJlYW1faWQ9Tm9uZSwgZW5kX2hlYWRlcnM9RmFsc2UpOgotICAgICAgICAiIiJUaGlzIGJ5cGFz
c2VzIHN0YXRlIGNoZWNraW5nIGFuZCBzdWNoLCBhbmQgc2VuZHMgYSBjb250aW51YXRpb24gZnJh
bWUgcmVnYXJkbGVzcyIiIgorICAgICAgICAiIiIKKyAgICAgICAgSWdub3JlcyB0aGUgc3RhdGVt
YWNoaW5lIG9mIHRoZSBzdHJlYW0gYW5kIHNlbmRzIGEgQ09OVElOVUFUSU9OIGZyYW1lIHJlZ2Fy
ZGxlc3MuCisKKyAgICAgICAgVGhpcyBwcm92aWRlcyB0aGUgYWJpbGl0eSB0byBjcmVhdGUgYW5k
IHdyaXRlIGEgQ09OVElOVUFUSU9OIGZyYW1lIHRvIHRoZSBzdHJlYW0sIHdoaWNoIGlzIG5vdCBl
eHBvc2VkIGJ5CisgICAgICAgIGB3cml0ZV9oZWFkZXJzYCBhcyB0aGUgaDIgbGlicmFyeSBoYW5k
bGVzIHRoZSBzcGxpdCBiZXR3ZWVuIEhFQURFUiBhbmQgQ09OVElOVUFUSU9OIGludGVybmFsbHku
IFdpbGwgcGVyZm9ybQorICAgICAgICBIUEFDSyBlbmNvZGluZyBvbiB0aGUgaGVhZGVycy4KKwor
ICAgICAgICA6cGFyYW0gaGVhZGVyczogTGlzdCBvZiAoaGVhZGVyLCB2YWx1ZSkgdHVwbGVzCisg
ICAgICAgIDpwYXJhbSBzdHJlYW1faWQ6IElkIG9mIHN0cmVhbSB0byBzZW5kIGZyYW1lIG9uLiBX
aWxsIHVzZSB0aGUgcmVxdWVzdCBzdHJlYW0gSUQgaWYgTm9uZQorICAgICAgICA6cGFyYW0gZW5k
X2hlYWRlcnM6IFNldCB0byBUcnVlIHRvIGFkZCBFTkRfSEVBREVSUyBmbGFnIHRvIGZyYW1lCisg
ICAgICAgICIiIgogICAgICAgICBzZWxmLndyaXRlX3Jhd19oZWFkZXJfZnJhbWUoaGVhZGVycywg
c3RyZWFtX2lkPXN0cmVhbV9pZCwgZW5kX2hlYWRlcnM9ZW5kX2hlYWRlcnMsIGZyYW1lX2Nscz1D
b250aW51YXRpb25GcmFtZSkKIAogCi0gICAgZGVmIGdldF9tYXhfcGF5bG9hZF9zaXplKHNlbGYp
OgorICAgIGRlZiBnZXRfbWF4X3BheWxvYWRfc2l6ZShzZWxmLCBzdHJlYW1faWQ9Tm9uZSk6Cisg
ICAgICAgICIiIlJldHVybnMgdGhlIG1heGltdW0gc2l6ZSBvZiBhIHBheWxvYWQgZm9yIHRoZSBn
aXZlbiBzdHJlYW0uIiIiCisgICAgICAgIHN0cmVhbV9pZCA9IHN0cmVhbV9pZCBpZiBzdHJlYW1f
aWQgaXMgbm90IE5vbmUgZWxzZSBzZWxmLnJlcXVlc3QuaDJfc3RyZWFtX2lkCiAgICAgICAgIHdp
dGggc2VsZi5oMmNvbm4gYXMgY29ubmVjdGlvbjoKLSAgICAgICAgICAgIHJldHVybiBtaW4oY29u
bmVjdGlvbi5yZW1vdGVfc2V0dGluZ3MubWF4X2ZyYW1lX3NpemUsIGNvbm5lY3Rpb24ubG9jYWxf
Zmxvd19jb250cm9sX3dpbmRvdyhzZWxmLnJlcXVlc3QuaDJfc3RyZWFtX2lkKSkgLSA5CisgICAg
ICAgICAgICByZXR1cm4gbWluKGNvbm5lY3Rpb24ucmVtb3RlX3NldHRpbmdzLm1heF9mcmFtZV9z
aXplLCBjb25uZWN0aW9uLmxvY2FsX2Zsb3dfY29udHJvbF93aW5kb3coc3RyZWFtX2lkKSkgLSA5
CiAKICAgICBkZWYgd3JpdGUoc2VsZiwgY29ubmVjdGlvbik6CiAgICAgICAgIHNlbGYuY29udGVu
dF93cml0dGVuID0gVHJ1ZQpAQCAtNTY1LDYgKzY1OSw5IEBAIGNsYXNzIFJlc3BvbnNlV3JpdGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuZmlsZV9jaHVua19zaXplID0gMzIgKiAxMDI0CiAgICAg
ICAgIHNlbGYuZGVmYXVsdF9zdGF0dXMgPSAyMDAKIAorICAgIGRlZiBfc2Vlbl9oZWFkZXIoc2Vs
ZiwgbmFtZSk6CisgICAgICAgIHJldHVybiBzZWxmLmVuY29kZShuYW1lLmxvd2VyKCkpIGluIHNl
bGYuX2hlYWRlcnNfc2VlbgorCiAgICAgZGVmIHdyaXRlX3N0YXR1cyhzZWxmLCBjb2RlLCBtZXNz
YWdlPU5vbmUpOgogICAgICAgICAiIiJXcml0ZSBvdXQgdGhlIHN0YXR1cyBsaW5lIG9mIGEgcmVz
cG9uc2UuCiAKQEAgLTU5MCwxOSArNjg3LDI1IEBAIGNsYXNzIFJlc3BvbnNlV3JpdGVyKG9iamVj
dCk6CiAgICAgICAgICIiIgogICAgICAgICBpZiBub3Qgc2VsZi5fc3RhdHVzX3dyaXR0ZW46CiAg
ICAgICAgICAgICBzZWxmLndyaXRlX3N0YXR1cyhzZWxmLmRlZmF1bHRfc3RhdHVzKQotICAgICAg
ICBzZWxmLl9oZWFkZXJzX3NlZW4uYWRkKG5hbWUubG93ZXIoKSkKLSAgICAgICAgc2VsZi53cml0
ZSgiJXM6ICVzXHJcbiIgJSAobmFtZSwgdmFsdWUpKQorICAgICAgICBzZWxmLl9oZWFkZXJzX3Nl
ZW4uYWRkKHNlbGYuZW5jb2RlKG5hbWUubG93ZXIoKSkpCisgICAgICAgIHNlbGYud3JpdGUobmFt
ZSkKKyAgICAgICAgc2VsZi53cml0ZShiIjogIikKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1
ZSwgaW50KToKKyAgICAgICAgICAgIHNlbGYud3JpdGUodGV4dF90eXBlKHZhbHVlKSkKKyAgICAg
ICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUodmFsdWUpCisgICAgICAgIHNlbGYud3Jp
dGUoYiJcclxuIikKICAgICAgICAgaWYgbm90IHNlbGYuX3Jlc3BvbnNlLmV4cGxpY2l0X2ZsdXNo
OgogICAgICAgICAgICAgc2VsZi5mbHVzaCgpCiAKICAgICBkZWYgd3JpdGVfZGVmYXVsdF9oZWFk
ZXJzKHNlbGYpOgogICAgICAgICBmb3IgbmFtZSwgZiBpbiBbKCJTZXJ2ZXIiLCBzZWxmLl9oYW5k
bGVyLnZlcnNpb25fc3RyaW5nKSwKICAgICAgICAgICAgICAgICAgICAgICAgICgiRGF0ZSIsIHNl
bGYuX2hhbmRsZXIuZGF0ZV90aW1lX3N0cmluZyldOgotICAgICAgICAgICAgaWYgbmFtZS5sb3dl
cigpIG5vdCBpbiBzZWxmLl9oZWFkZXJzX3NlZW46CisgICAgICAgICAgICBpZiBub3Qgc2VsZi5f
c2Vlbl9oZWFkZXIobmFtZSk6CiAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9oZWFkZXIobmFt
ZSwgZigpKQogCiAgICAgICAgIGlmIChpc2luc3RhbmNlKHNlbGYuX3Jlc3BvbnNlLmNvbnRlbnQs
IChiaW5hcnlfdHlwZSwgdGV4dF90eXBlKSkgYW5kCi0gICAgICAgICAgICAiY29udGVudC1sZW5n
dGgiIG5vdCBpbiBzZWxmLl9oZWFkZXJzX3NlZW4pOgorICAgICAgICAgICAgbm90IHNlbGYuX3Nl
ZW5faGVhZGVyKCJjb250ZW50LWxlbmd0aCIpKToKICAgICAgICAgICAgICNXb3VsZCBiZSBuaWNl
IHRvIGF2b2lkIGRvdWJsZS1lbmNvZGluZyBoZXJlCiAgICAgICAgICAgICBzZWxmLndyaXRlX2hl
YWRlcigiQ29udGVudC1MZW5ndGgiLCBsZW4oc2VsZi5lbmNvZGUoc2VsZi5fcmVzcG9uc2UuY29u
dGVudCkpKQogCkBAIC02MTcsNyArNzIwLDcgQEAgY2xhc3MgUmVzcG9uc2VXcml0ZXIob2JqZWN0
KToKICAgICAgICAgICAgIHNlbGYud3JpdGVfZGVmYXVsdF9oZWFkZXJzKCkKIAogICAgICAgICBz
ZWxmLndyaXRlKCJcclxuIikKLSAgICAgICAgaWYgImNvbnRlbnQtbGVuZ3RoIiBub3QgaW4gc2Vs
Zi5faGVhZGVyc19zZWVuOgorICAgICAgICBpZiBub3Qgc2VsZi5fc2Vlbl9oZWFkZXIoImNvbnRl
bnQtbGVuZ3RoIik6CiAgICAgICAgICAgICBzZWxmLl9yZXNwb25zZS5jbG9zZV9jb25uZWN0aW9u
ID0gVHJ1ZQogICAgICAgICBpZiBub3Qgc2VsZi5fcmVzcG9uc2UuZXhwbGljaXRfZmx1c2g6CiAg
ICAgICAgICAgICBzZWxmLmZsdXNoKCkKQEAgLTY3Nyw3ICs3ODAsNyBAQCBjbGFzcyBSZXNwb25z
ZVdyaXRlcihvYmplY3QpOgogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZGF0YSwgdGV4dF90eXBl
KToKICAgICAgICAgICAgIHJldHVybiBkYXRhLmVuY29kZShzZWxmLl9yZXNwb25zZS5lbmNvZGlu
ZykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKKyAgICAgICAg
ICAgIHJhaXNlIFZhbHVlRXJyb3IoImRhdGEgJXIgc2hvdWxkIGJlIHRleHQgb3IgYmluYXJ5LCBi
dXQgaXMgJXMiICUgKGRhdGEsIHR5cGUoZGF0YSkpKQogCiAgICAgZGVmIGZsdXNoKHNlbGYpOgog
ICAgICAgICAiIiJGbHVzaCB0aGUgb3V0cHV0LiBSZXR1cm5zIEZhbHNlIGlmIHRoZSBmbHVzaCBm
YWlsZWQgZHVlIHRvCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBs
YXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3JvdXRlci5weSBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2Vy
dmUvcm91dGVyLnB5CmluZGV4IDUxMThjMDNiNzI4MzEzZjcwM2Y2ZTkwMDJjNDAwM2ZjMGQ2ZTFk
OTguLjViODYwYjU5NDI1NDhiYzVhYWI4MWNlNjNkYmJkYWRkYTc5MmRlOTAgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvd3B0c2VydmUvcm91dGVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcm91dGVyLnB5CkBAIC0xMDIs
NyArMTAyLDcgQEAgY2xhc3MgUm91dGVyKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLnJlZ2lz
dGVyKCpyb3V0ZSkKIAogICAgIGRlZiByZWdpc3RlcihzZWxmLCBtZXRob2RzLCBwYXRoLCBoYW5k
bGVyKToKLSAgICAgICAgIiIiUmVnaXN0ZXIgYSBoYW5kbGVyIGZvciBhIHNldCBvZiBwYXRocy4K
KyAgICAgICAgciIiIlJlZ2lzdGVyIGEgaGFuZGxlciBmb3IgYSBzZXQgb2YgcGF0aHMuCiAKICAg
ICAgICAgOnBhcmFtIG1ldGhvZHM6IFNldCBvZiBtZXRob2RzIHRoaXMgc2hvdWxkIG1hdGNoLiAi
KiIgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lhbCB2YWx1ZSBpbmRpY2F0aW5n
IHRoYXQgYWxsIG1ldGhvZHMgc2hvdWxkCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRl
ZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NlcnZlci5w
eSBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0
c2VydmUvd3B0c2VydmUvc2VydmVyLnB5CmluZGV4IDgzNzBjY2EwZDM4NzJmNWU5ZjBmZTY1YTQw
MDQ5YjVjNDA2NWNiOTEuLmMwMzc3MzJhNmJhZWYzMWQ1OGIzZGZmOTI3YjA3NGRmY2ZhYmI0ZmYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc2VydmVyLnB5CisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc2VydmVy
LnB5CkBAIC0yOSw3ICsyOSw4IEBAIGZyb20gLnJvdXRlciBpbXBvcnQgUm91dGVyCiBmcm9tIC51
dGlscyBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogZnJvbSAuY29uc3RhbnRzIGltcG9ydCBoMl9oZWFk
ZXJzCiAKLSIiIkhUVFAgc2VydmVyIGRlc2lnbmVkIGZvciB0ZXN0aW5nIHB1cnBvc2VzLgorIiIi
CitIVFRQIHNlcnZlciBkZXNpZ25lZCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KIAogVGhlIHNlcnZl
ciBpcyBkZXNpZ25lZCB0byBwcm92aWRlIGZsZXhpYmlsaXR5IGluIHRoZSB3YXkgdGhhdAogcmVx
dWVzdHMgYXJlIGhhbmRsZWQsIGFuZCB0byBwcm92aWRlIGNvbnRyb2wgYm90aCBvZiBleGFjdGx5
CkBAIC00NCw3ICs0NSw3IEBAIGZvciBwYXJzaW5nIHRoZSBpbmNvbWluZyByZXF1ZXN0LiBBIFJl
cXVlc3RSZXdyaXRlciBpcyB0aGVuCiBhcHBsaWVkIGFuZCBtYXkgY2hhbmdlIHRoZSByZXF1ZXN0
IGRhdGEgaWYgaXQgbWF0Y2hlcyBhCiBzdXBwbGllZCBydWxlLgogCi1PbmNlIHRoZSByZXF1ZXN0
IGRhdGEgaGFkIGJlZW4gZmluYWxpc2VkLCBSZXF1ZXN0IGFuZCBSZXBvbnNlCitPbmNlIHRoZSBy
ZXF1ZXN0IGRhdGEgaGFkIGJlZW4gZmluYWxpc2VkLCBSZXF1ZXN0IGFuZCBSZXNwb25zZQogb2Jq
ZWN0cyBhcmUgY29uc3RydWN0ZWQuIFRoZXNlIGFyZSB1c2VkIGJ5IHRoZSBvdGhlciBwYXJ0cyBv
ZiB0aGUKIHN5c3RlbSB0byByZWFkIGluZm9ybWF0aW9uIGFib3V0IHRoZSByZXF1ZXN0IGFuZCBt
YW5pcHVsYXRlIHRoZQogcmVzcG9uc2UuCkBAIC02Myw2ICs2NCwxMiBAQCBoYW5kbGVyIHJldHVy
bnMsIG9yIGZvciBkaXJlY3RseSB3cml0aW5nIHRvIHRoZSBvdXRwdXQgc3RyZWFtLgogIiIiCiAK
IAorRURJVF9IT1NUU19IRUxQID0gKCJQbGVhc2UgZW5zdXJlIGFsbCB0aGUgbmVjZXNzYXJ5IFdQ
VCBzdWJkb21haW5zICIKKyAgICAgICAgICAgICAgICAgICJhcmUgbWFwcGVkIHRvIGEgbG9vcGJh
Y2sgZGV2aWNlIGluIC9ldGMvaG9zdHMuICIKKyAgICAgICAgICAgICAgICAgICJTZWUgaHR0cHM6
Ly9naXRodWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQjcnVubmluZy10aGUtdGVzdHMgIgor
ICAgICAgICAgICAgICAgICAgImZvciBpbnN0cnVjdGlvbnMuIikKKworCiBjbGFzcyBSZXF1ZXN0
UmV3cml0ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgcnVsZXMpOgogICAgICAg
ICAiIiJPYmplY3QgZm9yIHJld3JpdGluZyB0aGUgcmVxdWVzdCBwYXRoLgpAQCAtMTU0LDcgKzE2
MSw3IEBAIGNsYXNzIFdlYlRlc3RTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIEJhc2VIVFRQU2VydmVy
LkhUVFBTZXJ2ZXIpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnQgc3BlY2lmaWVk
IGluIHRoZSBzZXJ2ZXJfYWRkcmVzcyBwYXJhbWV0ZXIuCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgRmFsc2UgdG8gYmluZCB0aGUgc2VydmVyIG9ubHkgdG8gdGhlIHBvcnQgaW4gdGhlCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2FkZHJlc3MgcGFyYW1ldGVyLCBidXQg
bm90IHRvIHRoZSBhZGRyZXNzLgotICAgICAgICA6cGFyYW0gbGF0ZW5jeTogRGVsYXkgaW4gbXMg
dG8gd2FpdCBiZWZvcmUgc2V2aW5nIGVhY2ggcmVzcG9uc2UsIG9yCisgICAgICAgIDpwYXJhbSBs
YXRlbmN5OiBEZWxheSBpbiBtcyB0byB3YWl0IGJlZm9yZSBzZXJ2aW5nIGVhY2ggcmVzcG9uc2Us
IG9yCiAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsYWJsZSB0aGF0IHJldHVybnMgYSBkZWxh
eSBpbiBtcwogICAgICAgICAiIiIKICAgICAgICAgc2VsZi5yb3V0ZXIgPSByb3V0ZXIKQEAgLTMy
MSw4ICszMjgsMTQgQEAgY2xhc3MgSHR0cDJXZWJUZXN0UmVxdWVzdEhhbmRsZXIoQmFzZVdlYlRl
c3RSZXF1ZXN0SGFuZGxlcik6CiAKICAgICBkZWYgaGFuZGxlX29uZV9yZXF1ZXN0KHNlbGYpOgog
ICAgICAgICAiIiIKLSAgICAgICAgVGhpcyBpcyB0aGUgbWFpbiBIVFRQLzIuMCBIYW5kbGVyLiBX
aGVuIGEgYnJvd3NlciBvcGVucyBhIGNvbm5lY3Rpb24gdG8gdGhlIHNlcnZlcgotICAgICAgICBv
biB0aGUgSFRUUC8yLjAgcG9ydCwgQmVjYXVzZSB0aGVyZSBjYW4gYmUgbXVsdGlwbGUgSDIgY29u
bmVjdGlvbnMgYWN0aXZlIGF0IHRoZSBzYW1lCisgICAgICAgIFRoaXMgaXMgdGhlIG1haW4gSFRU
UC8yLjAgSGFuZGxlci4KKworICAgICAgICBXaGVuIGEgYnJvd3NlciBvcGVucyBhIGNvbm5lY3Rp
b24gdG8gdGhlIHNlcnZlcgorICAgICAgICBvbiB0aGUgSFRUUC8yLjAgcG9ydCwgdGhlIHNlcnZl
ciBlbnRlcnMgdGhpcyB3aGljaCB3aWxsIGluaXRpYXRlIHRoZSBoMiBjb25uZWN0aW9uCisgICAg
ICAgIGFuZCBrZWVwIHJ1bm5pbmcgdGhyb3VnaG91dCB0aGUgZHVyYXRpb24gb2YgdGhlIGludGVy
YWN0aW9uLCBhbmQgd2lsbCByZWFkL3dyaXRlIGRpcmVjdGx5CisgICAgICAgIGZyb20gdGhlIHNv
Y2tldC4KKworICAgICAgICBCZWNhdXNlIHRoZXJlIGNhbiBiZSBtdWx0aXBsZSBIMiBjb25uZWN0
aW9ucyBhY3RpdmUgYXQgdGhlIHNhbWUKICAgICAgICAgdGltZSwgYSBVVUlEIGlzIGNyZWF0ZWQg
Zm9yIGVhY2ggc28gdGhhdCBpdCBpcyBlYXNpZXIgdG8gdGVsbCB0aGVtIGFwYXJ0IGluIHRoZSBs
b2dzLgogICAgICAgICAiIiIKIApAQCAtMzM4LDYgKzM1MSw3IEBAIGNsYXNzIEh0dHAyV2ViVGVz
dFJlcXVlc3RIYW5kbGVyKEJhc2VXZWJUZXN0UmVxdWVzdEhhbmRsZXIpOgogICAgICAgICB3aXRo
IHNlbGYuY29ubiBhcyBjb25uZWN0aW9uOgogICAgICAgICAgICAgY29ubmVjdGlvbi5pbml0aWF0
ZV9jb25uZWN0aW9uKCkKICAgICAgICAgICAgIGRhdGEgPSBjb25uZWN0aW9uLmRhdGFfdG9fc2Vu
ZCgpCisgICAgICAgICAgICB3aW5kb3dfc2l6ZSA9IGNvbm5lY3Rpb24ucmVtb3RlX3NldHRpbmdz
LmluaXRpYWxfd2luZG93X3NpemUKIAogICAgICAgICBzZWxmLnJlcXVlc3Quc2VuZGFsbChkYXRh
KQogCkBAIC0zNDYsMTEgKzM2MCwxNSBAQCBjbGFzcyBIdHRwMldlYlRlc3RSZXF1ZXN0SGFuZGxl
cihCYXNlV2ViVGVzdFJlcXVlc3RIYW5kbGVyKToKIAogICAgICAgICB0cnk6CiAgICAgICAgICAg
ICB3aGlsZSBub3Qgc2VsZi5jbG9zZV9jb25uZWN0aW9uOgotICAgICAgICAgICAgICAgICMgVGhp
cyBzaXplIG1heSBuZWVkIHRvIGJlIG1hZGUgdmFyaWFibGUgYmFzZWQgb24gcmVtb3RlIHNldHRp
bmdzPwotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLnJlcXVlc3QucmVjdig2NTUzNSkKKyAg
ICAgICAgICAgICAgICBkYXRhID0gc2VsZi5yZXF1ZXN0LnJlY3Yod2luZG93X3NpemUpCisgICAg
ICAgICAgICAgICAgaWYgZGF0YSA9PSAnJzoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2dn
ZXIuZGVidWcoJyglcykgU29ja2V0IENsb3NlZCcgJSBzZWxmLnVpZCkKKyAgICAgICAgICAgICAg
ICAgICAgc2VsZi5jbG9zZV9jb25uZWN0aW9uID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICBj
b250aW51ZQogCiAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmNvbm4gYXMgY29ubmVjdGlvbjoK
ICAgICAgICAgICAgICAgICAgICAgZnJhbWVzID0gY29ubmVjdGlvbi5yZWNlaXZlX2RhdGEoZGF0
YSkKKyAgICAgICAgICAgICAgICAgICAgd2luZG93X3NpemUgPSBjb25uZWN0aW9uLnJlbW90ZV9z
ZXR0aW5ncy5pbml0aWFsX3dpbmRvd19zaXplCiAKICAgICAgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5kZWJ1ZygnKCVzKSBGcmFtZXMgUmVjZWl2ZWQ6ICcgJSBzZWxmLnVpZCArIHN0cihmcmFtZXMp
KQogCkBAIC0zODUsNiArNDAzLDEyIEBAIGNsYXNzIEh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVy
KEJhc2VXZWJUZXN0UmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgICAgIHRocmVhZC5qb2lu
KCkKIAogICAgIGRlZiBzdGFydF9zdHJlYW1fdGhyZWFkKHNlbGYsIGZyYW1lLCBxdWV1ZSk6Cisg
ICAgICAgICIiIgorICAgICAgICBUaGlzIHN0YXJ0cyBhIG5ldyB0aHJlYWQgdG8gaGFuZGxlIGZy
YW1lcyBmb3IgYSBzcGVjaWZpYyBzdHJlYW0uCisgICAgICAgIDpwYXJhbSBmcmFtZTogVGhlIGZp
cnN0IGZyYW1lIG9uIHRoZSBzdHJlYW0KKyAgICAgICAgOnBhcmFtIHF1ZXVlOiBBIHF1ZXVlIG9i
amVjdCB0aGF0IHRoZSB0aHJlYWQgd2lsbCB1c2UgdG8gY2hlY2sgZm9yIG5ldyBmcmFtZXMKKyAg
ICAgICAgOnJldHVybjogVGhlIHRocmVhZCBvYmplY3QgdGhhdCBoYXMgYWxyZWFkeSBiZWVuIHN0
YXJ0ZWQKKyAgICAgICAgIiIiCiAgICAgICAgIHQgPSB0aHJlYWRpbmcuVGhyZWFkKAogICAgICAg
ICAgICAgdGFyZ2V0PUh0dHAyV2ViVGVzdFJlcXVlc3RIYW5kbGVyLl9zdHJlYW1fdGhyZWFkLAog
ICAgICAgICAgICAgYXJncz0oc2VsZiwgZnJhbWUuc3RyZWFtX2lkLCBxdWV1ZSkKQEAgLTQ5Myw3
ICs1MTcsNiBAQCBjbGFzcyBIMkhlYWRlcnMoZGljdCk6CiAKIAogY2xhc3MgSDJIYW5kbGVyQ29w
eShvYmplY3QpOgotCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGhhbmRsZXIsIHJlcV9mcmFtZSwg
cmZpbGUpOgogICAgICAgICBzZWxmLmhlYWRlcnMgPSBIMkhlYWRlcnMocmVxX2ZyYW1lLmhlYWRl
cnMpCiAgICAgICAgIHNlbGYuY29tbWFuZCA9IHNlbGYuaGVhZGVyc1snbWV0aG9kJ10KQEAgLTUz
Miw3ICs1NTUsNyBAQCBjbGFzcyBIdHRwMVdlYlRlc3RSZXF1ZXN0SGFuZGxlcihCYXNlV2ViVGVz
dFJlcXVlc3RIYW5kbGVyKToKICAgICAgICAgICAgIHNlbGYuY2xvc2VfY29ubmVjdGlvbiA9IFRy
dWUKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToK
KyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgIGVyciA9IHRyYWNlYmFjay5m
b3JtYXRfZXhjKCkKICAgICAgICAgICAgIGlmIHJlc3BvbnNlOgogICAgICAgICAgICAgICAgIHJl
c3BvbnNlLnNldF9lcnJvcig1MDAsIGVycikKQEAgLTU3NSw3ICs1OTgsNyBAQCBjbGFzcyBXZWJU
ZXN0SHR0cGQob2JqZWN0KToKICAgICA6cGFyYW0gY29uZmlnOiBEaWN0aW9uYXJ5IGhvbGRpbmcg
ZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBzZXR0aW5ncyBmb3IKICAgICAgICAgICAgICAgICAg
ICBoYW5kbGVycyB0byByZWFkLCBvciBOb25lIHRvIHVzZSB0aGUgZGVmYXVsdCB2YWx1ZXMuCiAg
ICAgOnBhcmFtIGJpbmRfYWRkcmVzczogQm9vbGVhbiBpbmRpY2F0aW5nIHdoZXRoZXIgdG8gYmlu
ZCBzZXJ2ZXIgdG8gSVAgYWRkcmVzcy4KLSAgICA6cGFyYW0gbGF0ZW5jeTogRGVsYXkgaW4gbXMg
dG8gd2FpdCBiZWZvcmUgc2V2aW5nIGVhY2ggcmVzcG9uc2UsIG9yCisgICAgOnBhcmFtIGxhdGVu
Y3k6IERlbGF5IGluIG1zIHRvIHdhaXQgYmVmb3JlIHNlcnZpbmcgZWFjaCByZXNwb25zZSwgb3IK
ICAgICAgICAgICAgICAgICAgICAgY2FsbGFibGUgdGhhdCByZXR1cm5zIGEgZGVsYXkgaW4gbXMK
IAogICAgIEhUVFAgc2VydmVyIGRlc2lnbmVkIGZvciB0ZXN0aW5nIHNjZW5hcmlvcy4KQEAgLTYw
NSw3ICs2MjgsNyBAQCBjbGFzcyBXZWJUZXN0SHR0cGQob2JqZWN0KToKIAogICAgIC4uIGF0dHJp
YnV0ZTo6IHN0YXJ0ZWQKIAotICAgICAgQm9vbGVhbiBpbmRpY3RhaW5nIHdoZXRoZXIgdGhlIHNl
cnZlciBpcyBydW5uaW5nCisgICAgICBCb29sZWFuIGluZGljYXRpbmcgd2hldGhlciB0aGUgc2Vy
dmVyIGlzIHJ1bm5pbmcKIAogICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0PSIx
MjcuMC4wLjEiLCBwb3J0PTgwMDAsCkBAIC02NTMsOCArNjc2LDcgQEAgY2xhc3MgV2ViVGVzdEh0
dHBkKG9iamVjdCk6CiAKICAgICAgICAgICAgIF9ob3N0LCBzZWxmLnBvcnQgPSBzZWxmLmh0dHBk
LnNvY2tldC5nZXRzb2NrbmFtZSgpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246Ci0gICAgICAg
ICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyLiAiCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiWW91IG1heSBuZWVkIHRvIGVkaXQgL2V0Yy9o
b3N0cyBvciBzaW1pbGFyLCBzZWUgUkVBRE1FLm1kLiIpCisgICAgICAgICAgICBzZWxmLmxvZ2dl
ci5jcml0aWNhbCgiRmFpbGVkIHRvIHN0YXJ0IEhUVFAgc2VydmVyLiB7fSIuZm9ybWF0KEVESVRf
SE9TVFNfSEVMUCkpCiAgICAgICAgICAgICByYWlzZQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIGJs
b2NrPUZhbHNlKToKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvX19pbml0X18ucHkg
Yi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL3NzbHV0aWxzL19faW5pdF9fLnB5CmluZGV4IDY2OTllZGI1OTY0NTMwZTdl
MzUyNDk3ZGU0M2ZmMWUxNTRiNTJhMWQuLmU4OWJiOTZmODJmYmNjMDlhMGFjNzkyYmVkYWU4YzY0
ZTgzOGQ4YWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvX19pbml0X18ucHkKKysr
IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRz
ZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9fX2luaXRfXy5weQpAQCAtMTEsNCArMTEsNCBAQCBkZWYg
Z2V0X2NscyhuYW1lKToKICAgICB0cnk6CiAgICAgICAgIHJldHVybiBlbnZpcm9ubWVudHNbbmFt
ZV0KICAgICBleGNlcHQgS2V5RXJyb3I6Ci0gICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzIGlz
IG5vdCBhIHZhaWQgc3NsIHR5cGUuIiAlIG5hbWUpCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3Io
IiVzIGlzIG5vdCBhIHZhbGlkIFNTTCB0eXBlLiIgJSBuYW1lKQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRz
ZXJ2ZS9zc2x1dGlscy9iYXNlLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9iYXNlLnB5CmluZGV4
IGM5NWI2OTNmMzcxMjMxNzhjMzNmOTMxMjVlN2Q4ZGY0Njg5OWRiM2MuLjYzZWY0NWNjODY5YWNl
MzA2ZTA4MzFkMTI0ODNhOWVhZmUyNTY1MzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRp
bHMvYmFzZS5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL2Jhc2UucHkKQEAgLTEzLDUgKzEz
LDUgQEAgY2xhc3MgTm9TU0xFbnZpcm9ubWVudChvYmplY3QpOgogICAgIGRlZiBob3N0X2NlcnRf
cGF0aChzZWxmLCBob3N0cyk6CiAgICAgICAgIHJldHVybiBOb25lLCBOb25lCiAKLSAgICBkZWYg
Y2FfY2VydF9wYXRoKHNlbGYpOgorICAgIGRlZiBjYV9jZXJ0X3BhdGgoc2VsZiwgaG9zdHMpOgog
ICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVu
c3NsLnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29s
cy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9vcGVuc3NsLnB5CmluZGV4IGViYmNmNjhkNzE2
ZDFkYTc1MjIxNTdmZDllMzBiYjFmYmQxODVhMTUuLmFlYTFjNzM4MGIxNzljZWQxMzY2YjY2MTcw
NTc1NzhiMzVkOWUxNGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvb3BlbnNzbC5w
eQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKQEAgLTYsNyArNiw3IEBAIGlt
cG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgdGVtcGZpbGUKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRh
dGV0aW1lLCB0aW1lZGVsdGEKIAotZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcworZnJvbSBzaXgg
aW1wb3J0IGl0ZXJpdGVtcywgUFkyCiAKICMgQW1vdW50IG9mIHRpbWUgYmV5b25kIHRoZSBwcmVz
ZW50IHRvIGNvbnNpZGVyIGNlcnRpZmljYXRlcyAiZXhwaXJlZC4iIFRoaXMKICMgYWxsb3dzIGNl
cnRpZmljYXRlcyB0byBiZSBwcm9hY3RpdmVseSByZS1nZW5lcmF0ZWQgaW4gdGhlICJidWZmZXIi
IHBlcmlvZApAQCAtMTQsNiArMTQsMTcgQEAgZnJvbSBzaXggaW1wb3J0IGl0ZXJpdGVtcwogQ0VS
VF9FWFBJUllfQlVGRkVSID0gZGljdChob3Vycz02KQogCiAKK2RlZiBfZW5zdXJlX3N0cihzLCBl
bmNvZGluZyk6CisgICAgIiIibWFrZXMgc3VyZSBzIGlzIGFuIGluc3RhbmNlIG9mIHN0ciwgY29u
dmVydGluZyB3aXRoIGVuY29kaW5nIGlmIG5lZWRlZCIiIgorICAgIGlmIGlzaW5zdGFuY2Uocywg
c3RyKToKKyAgICAgICAgcmV0dXJuIHMKKworICAgIGlmIFBZMjoKKyAgICAgICAgcmV0dXJuIHMu
ZW5jb2RlKGVuY29kaW5nKQorICAgIGVsc2U6CisgICAgICAgIHJldHVybiBzLmRlY29kZShlbmNv
ZGluZykKKworCiBjbGFzcyBPcGVuU1NMKG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNlbGYs
IGxvZ2dlciwgYmluYXJ5LCBiYXNlX3BhdGgsIGNvbmZfcGF0aCwgaG9zdHMsIGR1cmF0aW9uLAog
ICAgICAgICAgICAgICAgICBiYXNlX2NvbmZfcGF0aD1Ob25lKToKQEAgLTY1LDE4ICs3NiwxNCBA
QCBjbGFzcyBPcGVuU1NMKG9iamVjdCk6CiAgICAgICAgICAgICBzZWxmLmNtZCArPSBbIi1jb25m
aWciLCBzZWxmLmNvbmZfcGF0aF0KICAgICAgICAgc2VsZi5jbWQgKz0gbGlzdChhcmdzKQogCi0g
ICAgICAgICMgQ29weSB0aGUgZW52aXJvbm1lbnQsIGNvbnZlcnRpbmcgdG8gcGxhaW4gc3RyaW5n
cy4gV2luZG93cwotICAgICAgICAjIFN0YXJ0UHJvY2VzcyBpcyBwaWNreSBhYm91dCBhbGwgdGhl
IGtleXMvdmFsdWVzIGJlaW5nIHBsYWluIHN0cmluZ3MsCi0gICAgICAgICMgYnV0IGF0IGxlYXN0
IGluIE1TWVMgc2hlbGxzLCB0aGUgb3MuZW52aXJvbiBkaWN0aW9uYXJ5IGNhbiBiZSBtaXhlZC4K
KyAgICAgICAgIyBDb3B5IHRoZSBlbnZpcm9ubWVudCwgY29udmVydGluZyB0byBwbGFpbiBzdHJp
bmdzLiBXaW4zMiBTdGFydFByb2Nlc3MKKyAgICAgICAgIyBpcyBwaWNreSBhYm91dCBhbGwgdGhl
IGtleXMvdmFsdWVzIGJlaW5nIHN0ciAob24gYm90aCBQeTIvMykuCiAgICAgICAgIGVudiA9IHt9
CiAgICAgICAgIGZvciBrLCB2IGluIGl0ZXJpdGVtcyhvcy5lbnZpcm9uKToKLSAgICAgICAgICAg
IHRyeToKLSAgICAgICAgICAgICAgICBlbnZbay5lbmNvZGUoInV0ZjgiKV0gPSB2LmVuY29kZSgi
dXRmOCIpCi0gICAgICAgICAgICBleGNlcHQgVW5pY29kZURlY29kZUVycm9yOgotICAgICAgICAg
ICAgICAgIHBhc3MKKyAgICAgICAgICAgIGVudltfZW5zdXJlX3N0cihrLCAidXRmOCIpXSA9IF9l
bnN1cmVfc3RyKHYsICJ1dGY4IikKIAogICAgICAgICBpZiBzZWxmLmJhc2VfY29uZl9wYXRoIGlz
IG5vdCBOb25lOgotICAgICAgICAgICAgZW52WyJPUEVOU1NMX0NPTkYiXSA9IHNlbGYuYmFzZV9j
b25mX3BhdGguZW5jb2RlKCJ1dGY4IikKKyAgICAgICAgICAgIGVudlsiT1BFTlNTTF9DT05GIl0g
PSBfZW5zdXJlX3N0cihzZWxmLmJhc2VfY29uZl9wYXRoLCAidXRmLTgiKQogCiAgICAgICAgIHNl
bGYucHJvYyA9IHN1YnByb2Nlc3MuUG9wZW4oc2VsZi5jbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJ
UEUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBlbnY9ZW52KQpAQCAtMTE0LDE2ICsxMjEsMTggQEAgZGVmIG1ha2Vfc3ViamVj
dChjb21tb25fbmFtZSwKICAgICByZXR1cm4gIiIuam9pbihydikKIAogZGVmIG1ha2VfYWx0X25h
bWVzKGhvc3RzKToKLSAgICBydiA9IFtdCi0gICAgZm9yIG5hbWUgaW4gaG9zdHM6Ci0gICAgICAg
IHJ2LmFwcGVuZCgiRE5TOiVzIiAlIG5hbWUpCi0gICAgcmV0dXJuICIsIi5qb2luKHJ2KQorICAg
IHJldHVybiAiLCIuam9pbigiRE5TOiVzIiAlIGhvc3QgZm9yIGhvc3QgaW4gaG9zdHMpCisKK2Rl
ZiBtYWtlX25hbWVfY29uc3RyYWludHMoaG9zdHMpOgorICAgIHJldHVybiAiLCIuam9pbigicGVy
bWl0dGVkO0ROUzolcyIgJSBob3N0IGZvciBob3N0IGluIGhvc3RzKQogCiBkZWYgZ2V0X2NvbmZp
Zyhyb290X2RpciwgaG9zdHMsIGR1cmF0aW9uPTMwKToKICAgICBpZiBob3N0cyBpcyBOb25lOgog
ICAgICAgICBzYW5fbGluZSA9ICIiCisgICAgICAgIGNvbnN0cmFpbnRzX2xpbmUgPSAiIgogICAg
IGVsc2U6CiAgICAgICAgIHNhbl9saW5lID0gInN1YmplY3RBbHROYW1lID0gJXMiICUgbWFrZV9h
bHRfbmFtZXMoaG9zdHMpCisgICAgICAgIGNvbnN0cmFpbnRzX2xpbmUgPSAibmFtZUNvbnN0cmFp
bnRzID0gIiArIG1ha2VfbmFtZV9jb25zdHJhaW50cyhob3N0cykKIAogICAgIGlmIG9zLnBhdGgu
c2VwID09ICJcXCI6CiAgICAgICAgICMgVGhpcyBzZWVtcyB0byBiZSBuZWVkZWQgZm9yIHRoZSBT
aGluaW5nIExpZ2h0IE9wZW5TU0wgb24KQEAgLTIxMyw5ICsyMjIsMTEgQEAgYmFzaWNDb25zdHJh
aW50cyA9IENBOnRydWUKIHN1YmplY3RLZXlJZGVudGlmaWVyPWhhc2gKIGF1dGhvcml0eUtleUlk
ZW50aWZpZXI9a2V5aWQ6YWx3YXlzLGlzc3VlcjphbHdheXMKIGtleVVzYWdlID0ga2V5Q2VydFNp
Z24KKyUoY29uc3RyYWludHNfbGluZSlzCiAiIiIgJSB7InJvb3RfZGlyIjogcm9vdF9kaXIsCiAg
ICAgICAgInNhbl9saW5lIjogc2FuX2xpbmUsCiAgICAgICAgImR1cmF0aW9uIjogZHVyYXRpb24s
CisgICAgICAgImNvbnN0cmFpbnRzX2xpbmUiOiBjb25zdHJhaW50c19saW5lLAogICAgICAgICJz
ZXAiOiBvcy5wYXRoLnNlcC5yZXBsYWNlKCJcXCIsICJcXFxcIil9CiAKICAgICByZXR1cm4gcnYK
QEAgLTI4NywxMyArMjk4LDEzIEBAIGNsYXNzIE9wZW5TU0xFbnZpcm9ubWVudChvYmplY3QpOgog
ICAgICAgICByZXR1cm4gT3BlblNTTChzZWxmLmxvZ2dlciwgc2VsZi5iaW5hcnksIHNlbGYuYmFz
ZV9wYXRoLCBjb25mX3BhdGgsIGhvc3RzLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmR1
cmF0aW9uLCBzZWxmLmJhc2VfY29uZl9wYXRoKQogCi0gICAgZGVmIGNhX2NlcnRfcGF0aChzZWxm
KToKKyAgICBkZWYgY2FfY2VydF9wYXRoKHNlbGYsIGhvc3RzKToKICAgICAgICAgIiIiR2V0IHRo
ZSBwYXRoIHRvIHRoZSBDQSBjZXJ0aWZpY2F0ZSBmaWxlLCBnZW5lcmF0aW5nIGEKICAgICAgICAg
bmV3IG9uZSBpZiBuZWVkZWQiIiIKICAgICAgICAgaWYgc2VsZi5fY2FfY2VydF9wYXRoIGlzIE5v
bmUgYW5kIG5vdCBzZWxmLmZvcmNlX3JlZ2VuZXJhdGU6CiAgICAgICAgICAgICBzZWxmLl9sb2Fk
X2NhX2NlcnQoKQogICAgICAgICBpZiBzZWxmLl9jYV9jZXJ0X3BhdGggaXMgTm9uZToKLSAgICAg
ICAgICAgIHNlbGYuX2dlbmVyYXRlX2NhKCkKKyAgICAgICAgICAgIHNlbGYuX2dlbmVyYXRlX2Nh
KGhvc3RzKQogICAgICAgICByZXR1cm4gc2VsZi5fY2FfY2VydF9wYXRoCiAKICAgICBkZWYgX2xv
YWRfY2FfY2VydChzZWxmKToKQEAgLTMyNiw3ICszMzcsNyBAQCBjbGFzcyBPcGVuU1NMRW52aXJv
bm1lbnQob2JqZWN0KToKICAgICAgICAgI1RPRE86IGNoZWNrIHRoZSBrZXkgYWN0dWFsbHkgc2ln
bmVkIHRoZSBjZXJ0LgogICAgICAgICByZXR1cm4gVHJ1ZQogCi0gICAgZGVmIF9nZW5lcmF0ZV9j
YShzZWxmKToKKyAgICBkZWYgX2dlbmVyYXRlX2NhKHNlbGYsIGhvc3RzKToKICAgICAgICAgcGF0
aCA9IHNlbGYucGF0aAogICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCJHZW5lcmF0aW5nIG5ldyBD
QSBpbiAlcyIgJSBzZWxmLmJhc2VfcGF0aCkKIApAQCAtMzM0LDcgKzM0NSw3IEBAIGNsYXNzIE9w
ZW5TU0xFbnZpcm9ubWVudChvYmplY3QpOgogICAgICAgICByZXFfcGF0aCA9IHBhdGgoImNhcmVx
LnBlbSIpCiAgICAgICAgIGNlcnRfcGF0aCA9IHBhdGgoImNhY2VydC5wZW0iKQogCi0gICAgICAg
IHdpdGggc2VsZi5fY29uZmlnX29wZW5zc2woTm9uZSkgYXMgb3BlbnNzbDoKKyAgICAgICAgd2l0
aCBzZWxmLl9jb25maWdfb3BlbnNzbChob3N0cykgYXMgb3BlbnNzbDoKICAgICAgICAgICAgIG9w
ZW5zc2woInJlcSIsCiAgICAgICAgICAgICAgICAgICAgICItYmF0Y2giLAogICAgICAgICAgICAg
ICAgICAgICAiLW5ldyIsCkBAIC0zNTEsNiArMzYyLDcgQEAgY2xhc3MgT3BlblNTTEVudmlyb25t
ZW50KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgICAgICItcGFzc2luIiwgInBhc3M6JXMiICUg
c2VsZi5wYXNzd29yZCwKICAgICAgICAgICAgICAgICAgICAgIi1zZWxmc2lnbiIsCiAgICAgICAg
ICAgICAgICAgICAgICItZXh0ZW5zaW9ucyIsICJ2M19jYSIsCisgICAgICAgICAgICAgICAgICAg
ICItbm90ZXh0IiwKICAgICAgICAgICAgICAgICAgICAgIi1pbiIsIHJlcV9wYXRoLAogICAgICAg
ICAgICAgICAgICAgICAiLW91dCIsIGNlcnRfcGF0aCkKIApAQCAtMzkxLDcgKzQwMyw3IEBAIGNs
YXNzIE9wZW5TU0xFbnZpcm9ubWVudChvYmplY3QpOgogICAgIGRlZiBfZ2VuZXJhdGVfaG9zdF9j
ZXJ0KHNlbGYsIGhvc3RzKToKICAgICAgICAgaG9zdCA9IGhvc3RzWzBdCiAgICAgICAgIGlmIHNl
bGYuX2NhX2tleV9wYXRoIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9nZW5lcmF0ZV9jYSgp
CisgICAgICAgICAgICBzZWxmLl9nZW5lcmF0ZV9jYShob3N0cykKICAgICAgICAgY2Ffa2V5X3Bh
dGggPSBzZWxmLl9jYV9rZXlfcGF0aAogCiAgICAgICAgIGFzc2VydCBvcy5wYXRoLmV4aXN0cyhj
YV9rZXlfcGF0aCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvc3NsdXRpbHMvcHJlZ2VuZXJhdGVk
LnB5IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9wcmVnZW5lcmF0ZWQucHkKaW5kZXggZmM0ODdkZjNh
ZGQwMzkxYzNlZjcxYjY5ZWQ5ZjM3NzM0ZjE0Mjg5MS4uNjcyYTEwNjM1ZWQwYjhmMjEwNjU4OTU0
ODJmN2I3OTY1NjkwZTBkNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dl
Yi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9wcmVnZW5l
cmF0ZWQucHkKKysrIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0
cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy9wcmVnZW5lcmF0ZWQucHkKQEAgLTIw
LDcgKzIwLDcgQEAgY2xhc3MgUHJlZ2VuZXJhdGVkU1NMRW52aXJvbm1lbnQob2JqZWN0KToKICAg
ICAgICAgIiIiUmV0dXJuIHRoZSBrZXkgYW5kIGNlcnRpZmljYXRlIHBhdGhzIGZvciB0aGUgaG9z
dCIiIgogICAgICAgICByZXR1cm4gc2VsZi5faG9zdF9rZXlfcGF0aCwgc2VsZi5faG9zdF9jZXJ0
X3BhdGgKIAotICAgIGRlZiBjYV9jZXJ0X3BhdGgoc2VsZik6CisgICAgZGVmIGNhX2NlcnRfcGF0
aChzZWxmLCBob3N0cyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgY2VydGlmaWNhdGUgcGF0aCBv
ZiB0aGUgQ0EgdGhhdCBzaWduZWQgdGhlCiAgICAgICAgIGhvc3QgY2VydGlmaWNhdGVzLCBvciBO
b25lIGlmIHRoYXQgaXNuJ3Qga25vd24iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhX2NlcnRf
cGF0aApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10
ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGlscy93M2MtaW1wb3J0LmxvZyBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvc3NsdXRpbHMvdzNjLWltcG9ydC5sb2cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDg3NzViYmI2MDIzNjFhYTQ0MzNlMGRlMWI2NDE2ZWM2YWMzMDU0NjYuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0
ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zc2x1dGls
cy93M2MtaW1wb3J0LmxvZworKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVRoZSB0ZXN0
cyBpbiB0aGlzIGRpcmVjdG9yeSB3ZXJlIGltcG9ydGVkIGZyb20gdGhlIFczQyByZXBvc2l0b3J5
LgotRG8gTk9UIG1vZGlmeSB0aGVzZSB0ZXN0cyBkaXJlY3RseSBpbiBXZWJLaXQuCi1JbnN0ZWFk
LCBjcmVhdGUgYSBwdWxsIHJlcXVlc3Qgb24gdGhlIFdQVCBnaXRodWI6Ci0JaHR0cHM6Ly9naXRo
dWIuY29tL3dlYi1wbGF0Zm9ybS10ZXN0cy93cHQKLQotVGhlbiBydW4gdGhlIFRvb2xzL1Njcmlw
dHMvaW1wb3J0LXczYy10ZXN0cyBpbiBXZWJLaXQgdG8gcmVpbXBvcnQKLQotRG8gTk9UIG1vZGlm
eSBvciByZW1vdmUgdGhpcyBmaWxlLgotCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLVByb3BlcnRpZXMgcmVx
dWlyaW5nIHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLVByb3BlcnR5IHZhbHVlcyByZXF1aXJpbmcg
dmVuZG9yIHByZWZpeGVzOgotTm9uZQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1MaXN0IG9mIGZpbGVzOgot
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvd3B0c2VydmUvc3NsdXRpbHMvX19pbml0X18ucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93
M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL2Jh
c2UucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xz
L3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0aWxzL29wZW5zc2wucHkKLS9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3NzbHV0
aWxzL3ByZWdlbmVyYXRlZC5weQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weSBiL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvc3Rhc2gucHkKaW5kZXggYWU0OGE4NjExMjMzM2JiNWZmY2RmNzZjMTAwZDkyOWRl
MmI2ZmQ5MS4uOGI2ZmQzNGYwMmMwZTliNzA3M2QwYzk0MDExNzA3ZWFhNGU1YTFmMSAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93
cHRzZXJ2ZS93cHRzZXJ2ZS9zdGFzaC5weQorKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3N0YXNoLnB5CkBAIC02
LDIzICs2LDI5IEBAIGltcG9ydCB0aHJlYWRpbmcKIGZyb20gbXVsdGlwcm9jZXNzaW5nLm1hbmFn
ZXJzIGltcG9ydCBBY3F1aXJlclByb3h5LCBCYXNlTWFuYWdlciwgRGljdFByb3h5CiBmcm9tIHNp
eCBpbXBvcnQgdGV4dF90eXBlCiAKKwogY2xhc3MgU2VydmVyRGljdE1hbmFnZXIoQmFzZU1hbmFn
ZXIpOgogICAgIHNoYXJlZF9kYXRhID0ge30KIAorCiBkZWYgX2dldF9zaGFyZWQoKToKICAgICBy
ZXR1cm4gU2VydmVyRGljdE1hbmFnZXIuc2hhcmVkX2RhdGEKIAorCiBTZXJ2ZXJEaWN0TWFuYWdl
ci5yZWdpc3RlcigiZ2V0X2RpY3QiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFi
bGU9X2dldF9zaGFyZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm94eXR5cGU9RGlj
dFByb3h5KQogU2VydmVyRGljdE1hbmFnZXIucmVnaXN0ZXIoJ0xvY2snLCB0aHJlYWRpbmcuTG9j
aywgQWNxdWlyZXJQcm94eSkKIAorCiBjbGFzcyBDbGllbnREaWN0TWFuYWdlcihCYXNlTWFuYWdl
cik6CiAgICAgcGFzcwogCisKIENsaWVudERpY3RNYW5hZ2VyLnJlZ2lzdGVyKCJnZXRfZGljdCIp
CiBDbGllbnREaWN0TWFuYWdlci5yZWdpc3RlcigiTG9jayIpCiAKKwogY2xhc3MgU3Rhc2hTZXJ2
ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgYWRkcmVzcz1Ob25lLCBhdXRoa2V5
PU5vbmUpOgogICAgICAgICBzZWxmLmFkZHJlc3MgPSBhZGRyZXNzCkBAIC0zNyw2ICs0Myw3IEBA
IGNsYXNzIFN0YXNoU2VydmVyKG9iamVjdCk6CiAgICAgICAgIGlmIHNlbGYubWFuYWdlciBpcyBu
b3QgTm9uZToKICAgICAgICAgICAgIHNlbGYubWFuYWdlci5zaHV0ZG93bigpCiAKKwogZGVmIGxv
YWRfZW52X2NvbmZpZygpOgogICAgIGFkZHJlc3MsIGF1dGhrZXkgPSBqc29uLmxvYWRzKG9zLmVu
dmlyb25bIldQVF9TVEFTSF9DT05GSUciXSkKICAgICBpZiBpc2luc3RhbmNlKGFkZHJlc3MsIGxp
c3QpOgpAQCAtNDYsMTAgKzUzLDEyIEBAIGRlZiBsb2FkX2Vudl9jb25maWcoKToKICAgICBhdXRo
a2V5ID0gYmFzZTY0LmI2NGRlY29kZShhdXRoa2V5KQogICAgIHJldHVybiBhZGRyZXNzLCBhdXRo
a2V5CiAKKwogZGVmIHN0b3JlX2Vudl9jb25maWcoYWRkcmVzcywgYXV0aGtleSk6CiAgICAgYXV0
aGtleSA9IGJhc2U2NC5iNjRlbmNvZGUoYXV0aGtleSkKICAgICBvcy5lbnZpcm9uWyJXUFRfU1RB
U0hfQ09ORklHIl0gPSBqc29uLmR1bXBzKChhZGRyZXNzLCBhdXRoa2V5LmRlY29kZSgiYXNjaWki
KSkpCiAKKwogZGVmIHN0YXJ0X3NlcnZlcihhZGRyZXNzPU5vbmUsIGF1dGhrZXk9Tm9uZSk6CiAg
ICAgaWYgaXNpbnN0YW5jZShhdXRoa2V5LCB0ZXh0X3R5cGUpOgogICAgICAgICBhdXRoa2V5ID0g
YXV0aGtleS5lbmNvZGUoImFzY2lpIikKQEAgLTc1LDYgKzg0LDcgQEAgY2xhc3MgTG9ja1dyYXBw
ZXIob2JqZWN0KToKICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAg
ICAgICAgc2VsZi5yZWxlYXNlKCkKIAorCiAjVE9ETzogQ29uc2lkZXIgZXhwaXJpbmcgdmFsdWVz
IGFmdGVyIHNvbWUgZml4ZWQgdGltZSBmb3IgbG9uZy1ydW5uaW5nCiAjc2VydmVycwogCkBAIC0x
MDQsNiArMTE0LDcgQEAgY2xhc3MgU3Rhc2gob2JqZWN0KToKIAogICAgIF9wcm94eSA9IE5vbmUK
ICAgICBsb2NrID0gTm9uZQorICAgIF9pbml0aWFsaXppbmcgPSB0aHJlYWRpbmcuTG9jaygpCiAK
ICAgICBkZWYgX19pbml0X18oc2VsZiwgZGVmYXVsdF9wYXRoLCBhZGRyZXNzPU5vbmUsIGF1dGhr
ZXk9Tm9uZSk6CiAgICAgICAgIHNlbGYuZGVmYXVsdF9wYXRoID0gZGVmYXVsdF9wYXRoCkBAIC0x
MTUsNyArMTI2LDE2IEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAgICAgICAgICAgICBTdGFzaC5f
cHJveHkgPSB7fQogICAgICAgICAgICAgU3Rhc2gubG9jayA9IHRocmVhZGluZy5Mb2NrKCkKIAot
ICAgICAgICBpZiBTdGFzaC5fcHJveHkgaXMgTm9uZToKKyAgICAgICAgIyBJbml0aWFsaXppbmcg
dGhlIHByb3h5IGludm9sdmVzIGNvbm5lY3RpbmcgdG8gdGhlIHJlbW90ZSBwcm9jZXNzIGFuZAor
ICAgICAgICAjIHJldHJpZXZpbmcgdHdvIHByb3hpZWQgb2JqZWN0cy4gVGhpcyBwcm9jZXNzIGlz
IG5vdCBpbmhlcmVudGx5CisgICAgICAgICMgYXRvbWljLCBzbyBhIGxvY2sgbXVzdCBiZSB1c2Vk
IHRvIG1ha2UgaXQgc28uIEF0b21pY2l0eSBlbnN1cmVzIHRoYXQKKyAgICAgICAgIyBvbmx5IG9u
ZSB0aHJlYWQgYXR0ZW1wdHMgdG8gaW5pdGlhbGl6ZSB0aGUgY29ubmVjdGlvbiBhbmQgdGhhdCBh
bnkKKyAgICAgICAgIyB0aHJlYWRzIHJ1bm5pbmcgaW4gcGFyYWxsZWwgY29ycmVjdGx5IHdhaXQg
Zm9yIGluaXRpYWxpemF0aW9uIHRvIGJlCisgICAgICAgICMgZnVsbHkgY29tcGxldGUuCisgICAg
ICAgIHdpdGggU3Rhc2guX2luaXRpYWxpemluZzoKKyAgICAgICAgICAgIGlmIFN0YXNoLmxvY2s6
CisgICAgICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgICAgIG1hbmFnZXIgPSBDbGllbnRE
aWN0TWFuYWdlcihhZGRyZXNzLCBhdXRoa2V5KQogICAgICAgICAgICAgbWFuYWdlci5jb25uZWN0
KCkKICAgICAgICAgICAgIFN0YXNoLl9wcm94eSA9IG1hbmFnZXIuZ2V0X2RpY3QoKQpAQCAtMTYz
LDUgKzE4Myw2IEBAIGNsYXNzIFN0YXNoKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHZhbHVl
CiAKKwogY2xhc3MgU3Rhc2hFcnJvcihFeGNlcHRpb24pOgogICAgIHBhc3MKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2Vy
dmUvd3B0c2VydmUvdXRpbHMucHkgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRm
b3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3V0aWxzLnB5CmluZGV4IGQwZjg3ZmVh
NjBmOGUzMDRkNTRmZTc0ZDVmNzNjNzJjZjYxNjRmYjIuLjY0YjA4YTI3YWE4YjMzZDRjZWE4Njc3
YjMwZDMzMDk2Y2FlMjEyZDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvdXRpbHMucHkKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2
ZS93cHRzZXJ2ZS91dGlscy5weQpAQCAtMTAwLDYgKzEwMCw3IEBAIGRlZiBpc19iYWRfcG9ydChw
b3J0KToKICAgICBdCiAKIGRlZiBnZXRfcG9ydChob3N0PScnKToKKyAgICBob3N0ID0gaG9zdCBv
ciAnMTI3LjAuMC4xJwogICAgIHBvcnQgPSAwCiAgICAgd2hpbGUgVHJ1ZToKICAgICAgICAgZnJl
ZV9zb2NrZXQgPSBfb3Blbl9zb2NrZXQoaG9zdCwgMCkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
dzNjLWltcG9ydC5sb2cgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRl
c3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3czYy1pbXBvcnQubG9nCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA2MjM0MmY5MmMxZjgyZmFlMzE5YjMzMzQxZTM3YjQ2MjQ0M2EyYjkw
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2Vy
dmUvdzNjLWltcG9ydC5sb2cKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1UaGUgdGVz
dHMgaW4gdGhpcyBkaXJlY3Rvcnkgd2VyZSBpbXBvcnRlZCBmcm9tIHRoZSBXM0MgcmVwb3NpdG9y
eS4KLURvIE5PVCBtb2RpZnkgdGhlc2UgdGVzdHMgZGlyZWN0bHkgaW4gV2ViS2l0LgotSW5zdGVh
ZCwgY3JlYXRlIGEgcHVsbCByZXF1ZXN0IG9uIHRoZSBXUFQgZ2l0aHViOgotCWh0dHBzOi8vZ2l0
aHViLmNvbS93ZWItcGxhdGZvcm0tdGVzdHMvd3B0Ci0KLVRoZW4gcnVuIHRoZSBUb29scy9TY3Jp
cHRzL2ltcG9ydC13M2MtdGVzdHMgaW4gV2ViS2l0IHRvIHJlaW1wb3J0Ci0KLURvIE5PVCBtb2Rp
Znkgb3IgcmVtb3ZlIHRoaXMgZmlsZS4KLQotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1Qcm9wZXJ0aWVzIHJl
cXVpcmluZyB2ZW5kb3IgcHJlZml4ZXM6Ci1Ob25lCi1Qcm9wZXJ0eSB2YWx1ZXMgcmVxdWlyaW5n
IHZlbmRvciBwcmVmaXhlczoKLU5vbmUKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotTGlzdCBvZiBmaWxlczoK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL19faW5pdF9fLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1w
bGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9jb25maWcucHkKLS9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNl
cnZlL2NvbnN0YW50cy5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0t
dGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvaGFuZGxlcnMucHkKLS9MYXlvdXRUZXN0cy9p
bXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL2xv
Z2dlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9v
bHMvd3B0c2VydmUvd3B0c2VydmUvcGlwZXMucHkKLS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZlL3Jhbmdlcy5weQotL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUv
d3B0c2VydmUvcmVxdWVzdC5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcmVzcG9uc2UucHkKLS9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNlcnZl
L3JvdXRlci5weQotL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMv
dG9vbHMvd3B0c2VydmUvd3B0c2VydmUvcm91dGVzLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQv
dzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS9zZXJ2ZXIucHkK
LS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNl
cnZlL3dwdHNlcnZlL3N0YXNoLnB5Ci0vTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0
Zm9ybS10ZXN0cy90b29scy93cHRzZXJ2ZS93cHRzZXJ2ZS91dGlscy5weQotL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUv
d3B0c2VydmUucHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxh
dGZvcm0tdGVzdHMvdG9vbHMvd3B0c2VydmUvd3B0c2VydmUvd3B0c2VydmUucHkgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL3Rvb2xzL3dwdHNlcnZlL3dwdHNl
cnZlL3dwdHNlcnZlLnB5Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>384610</attachid>
            <date>2019-12-02 04:42:24 -0800</date>
            <delta_ts>2019-12-24 03:27:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-202992-20191202134222.patch</filename>
            <type>text/plain</type>
            <size>52207</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUyOTc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWJlZDM3M2Y4MTE5MmMw
NmIzNWQwNGEwNGMyNDA1ZWEzNzFlMjE1MC4uNDk4NWE5MDZkZDc1ZWViZmYyYWE1OWU2YzBmODlj
NzJjYmJmNzY1ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTAyICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBk
b2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2Nr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFdoZW5ldmVyIHJ1bm5pbmcgYSBzZXJ2aWNl
IHdvcmtlciB0YXNrLCBydW5uaW5nIHNjcmlwdCBvciBwb3N0aW5nIGV2ZW50cyAoaW5zdGFsbCwg
YWN0aXZhdGUsIG1lc3NhZ2UgYW5kIGZldGNoKSwKKyAgICAgICAgc3RhcnQgYSB0aW1lciB0byBj
aGVjayB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3Qgc3Bpbm5pbmcuCisgICAgICAgIFRo
aXMgaXMgZG9uZSBieSBwb3N0aW5nIGEgdGFzayB0byBzZXJ2aWNlIHdvcmtlciB0aHJlYWQgYW5k
IGhvcHBpbmcgYmFjayB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIElmIHRoaXMgcG9zdC9o
b3AgaXMgZG9uZSBiZWZvcmUgdGhlIGhlYXJ0YmVhdCB0aW1lciBpcyBmaXJlZCwgdGhlIHNlcnZp
Y2Ugd29ya2VyIGlzIGNvbnNpZGVyZWQgbGl2ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgY2hl
Y2sgaXMgZmFpbGVkIGFuZCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGFzIGZhaWxpbmcuCisgICAg
ICAgIFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHRlcm1pbmF0ZWQuCisgICAgICAgIFRpbWVv
dXQgaXMgNjAgc2Vjb25kcyBieSBkZWZhdWx0IGFuZCAxIHNlY29uZCBmb3IgdGVzdCBwdXJwb3Nl
cy4KKworICAgICAgICBBZGQgc2V0dGluZ3MgdG8gaGF2ZSBzaG9ydCBoZWFydGJlYXQgdGltZW91
dCBmb3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICAgICAgQWRkIGludGVybmFscyBBUEkgdG8gY2hl
Y2sgd2hldGhlciBhIHNlcnZpY2Ugd29ya2VyIGlzIHJ1bm5pbmcuCisKKyAgICAgICAgVGVzdHM6
IGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0
ZS5odHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0
cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbAorCisgICAgICAgICogcGFnZS9TZXR0
aW5ncy55YW1sOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkludGVybmFsczo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogdGVz
dGluZy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAg
ICAgICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2Vi
Q29yZTo6U1dDbGllbnRDb25uZWN0aW9uOjppc1NlcnZpY2VXb3JrZXJSdW5uaW5nKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAg
IChXZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc1Rlc3RNb2RlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnNldElz
VGVzdE1vZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3Jr
ZXJUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6U2Vy
dmljZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFk
Ojpwb3N0RmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6
OnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmZpcmVJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVh
dGluZ1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZFN0YXJ0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hF
dmVudE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6
c3RhcnRIZWFydEJlYXRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhy
ZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29u
dGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29y
a2VyVGhyZWFkOjpzdG9wRmV0Y2hFdmVudE1vbml0b3JpbmcpOgorICAgICAgICAqIHdvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAo
V2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6CisgICAgICAg
IChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnJlbW92ZUZldGNoKToKKyAgICAg
ICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZh
aWxIZWFydEJlYXRDaGVjayk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1Nl
cnZlclRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2Vy
dmVyL1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2Vy
OjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOS0xMi0wMSAgVGltIEhvcnRvbiAgPHRpbW90aHlf
aG9ydG9uQGFwcGxlLmNvbT4KIAogICAgICAgICBEaXNhYmxlIExvY2FsQ3VycmVudEdyYXBoaWNz
Q29udGV4dCB3aGVuIGRvaW5nIERpc3BsYXlMaXN0IHJlY29yZGluZwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBlNGY1
NTExM2ZkMjNlYzBhZTI1YjJhZWI2YTQ0ODQ4ZjA1ODhkMDk5Li40Y2Y1M2Y0MGQ0ZGJiZDliZDAw
YzM2MGUxOGI2NzdlNjk1MTk1MzI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTEy
LTAyICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNl
IFdvcmtlciBkb2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhy
ZWFkIGJsb2NraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMDI5OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCBhIHByZWZlcmVuY2Ug
dG8gZW5hYmxlL2Rpc2FibGUgc2VydmljZSB3b3JrZXIgc2hvcnQgdGltZW91dHMuCisgICAgICAg
IEFkZCBJUEMgaGFuZGxpbmcgZm9yIHBhc3Npbmcgc2VydmljZSB3b3JrZXIgaGVhcnQgYmVhdCBm
YWlsdXJlcyBhbmQgdG8gZ2V0IGZyb20gV2ViUHJvY2VzcworICAgICAgICB3aGV0aGVyIGEgZ2l2
ZW4gc2VydmljZSB3b3JrZXIgaXMgcnVubmluZyBvciBub3QuCisKKyAgICAgICAgKiBOZXR3b3Jr
UHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29udGV4dENvbm5lY3Rpb25DcmVhdGVk
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRl
V29ya2VyRnJvbUNsaWVudCk6CisgICAgICAgIChXZWJLaXQ6OldlYlNXU2VydmVyQ29ubmVjdGlv
bjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaDoKKyAgICAgICAgKiBOZXR3b3JrUHJv
Y2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAg
ICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0
Q29ubmVjdGlvbi5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBTaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHA6CisgICAg
ICAgIChXS1ByZWZlcmVuY2VzR2V0U2VydmljZVdvcmtlclRlc3RNb2RlKToKKyAgICAgICAgKFdL
UHJlZmVyZW5jZXNTZXRTZXJ2aWNlV29ya2VyVGVzdE1vZGUpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvQy9XS1ByZWZlcmVuY2VzUmVmLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdl
L1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNXQ2xpZW50
Q29ubmVjdGlvbjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogV2ViUHJvY2Vz
cy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjp1cGRhdGVQcmVmZXJlbmNlc1N0b3Jl
KToKKyAgICAgICAgKFdlYktpdDo6V2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZh
aWxIZWFydEJlYXRDaGVjayk6CisgICAgICAgICogV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmg6CisKIDIwMTktMTItMDEgIEZ1amlpIEhpcm9ub3JpICA8
SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW1dpbl0gUmV0cmlldmUgYWxsIGZv
bGxvd2luZyBXTV9DSEFSIGV2ZW50cyBhdCB0aGUgYmVnaW5uaW5nIG9mIHByb2Nlc3NpbmcgV01f
S0VZRE9XTiBldmVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55
YW1sIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5ncy55YW1sCmluZGV4IGEwMWQyZjY1MmZm
MzNmMWJlZDM5MjZkZjJiOTg5MDY0YmY2NWEzNGIuLmNlMGNlY2EyNGNjZjJlYmJmYjUwMTIzMGRi
NWU2NWNhMTVmZDczZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
eWFtbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NldHRpbmdzLnlhbWwKQEAgLTkxMCwzICs5
MTAsNiBAQCBtZWRpYUNhcHR1cmVSZXF1aXJlc1NlY3VyZUNvbm5lY3Rpb246CiAgIGluaXRpYWw6
IHRydWUKICAgY29uZGl0aW9uYWw6IE1FRElBX1NUUkVBTQogICBpbnNwZWN0b3JPdmVycmlkZTog
dHJ1ZQorCitzZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0OgorICBpbml0aWFsOiBmYWxzZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dl
YkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwCmluZGV4IDg3ZjczYWQ2MGQ5NjUzY2JhYTNiZWQ1
ZTMyNTg5Y2U2MTlmMDk3ZTkuLmZjZGRlMDUyMmIzYmNiOGQwODY2ZTJhMWJkMzA5ODM4YzE1Nzli
MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5jcHAKQEAgLTUwMjMsNiArNTAyMywx
MyBAQCB2b2lkIEludGVybmFsczo6dGVybWluYXRlU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2Vy
JiB3b3JrZXIpCiAKICAgICBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCkuc3luY1Rlcm1pbmF0ZVdvcmtlcih3b3JrZXIuaWRlbnRpZmll
cigpKTsKIH0KKwordm9pZCBJbnRlcm5hbHM6OmlzU2VydmljZVdvcmtlclJ1bm5pbmcoU2Vydmlj
ZVdvcmtlciYgd29ya2VyLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9vbGVhbj4mJiBwcm9taXNl
KQoreworICAgIHJldHVybiBTZXJ2aWNlV29ya2VyUHJvdmlkZXI6OnNpbmdsZXRvbigpLnNlcnZp
Y2VXb3JrZXJDb25uZWN0aW9uKCkuaXNTZXJ2aWNlV29ya2VyUnVubmluZyh3b3JrZXIuaWRlbnRp
ZmllcigpLCBbcHJvbWlzZSA9IFdURk1vdmUocHJvbWlzZSldKGJvb2wgcmVzdWx0KSBtdXRhYmxl
IHsKKyAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7CisgICAgfSk7Cit9CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5oIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAppbmRl
eCA0NDNmMTM0NmUxOGE0Nzc0MTI0ZjkzMGEwODMzZGRkN2ExOGY1YjA5Li4zYjI3MzRjNGQ1YWJh
ODA2ZmM5NWI3YTFkZjk2NmI1OWViMWJmZmZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90
ZXN0aW5nL0ludGVybmFscy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxz
LmgKQEAgLTc2Niw2ICs3NjYsNyBAQCBwdWJsaWM6CiAgICAgdXNpbmcgSGFzUmVnaXN0cmF0aW9u
UHJvbWlzZSA9IERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPjsKICAgICB2b2lkIGhhc1Nl
cnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oY29uc3QgU3RyaW5nJiBjbGllbnRVUkwsIEhhc1JlZ2lz
dHJhdGlvblByb21pc2UmJik7CiAgICAgdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyKFNlcnZp
Y2VXb3JrZXImKTsKKyAgICB2b2lkIGlzU2VydmljZVdvcmtlclJ1bm5pbmcoU2VydmljZVdvcmtl
ciYsIERPTVByb21pc2VEZWZlcnJlZDxJRExCb29sZWFuPiYmKTsKICNlbmRpZgogCiAjaWYgRU5B
QkxFKEFQUExFX1BBWSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmlkbCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbAppbmRleCBhNWU0
MjMzOWFkYzAzMGU2NGZmMGRkZTNjZDdjM2IxZDhkYThjZjc0Li4wNTM5ZjhhNmZlOTM5YzBlYTY3
MGRjMWE3Mjg1NTkwNDdkMWU4YmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRs
CkBAIC03NTYsNiArNzU2LDcgQEAgZW51bSBDb21wb3NpdGluZ1BvbGljeSB7CiAKICAgICBbQ29u
ZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFByb21pc2U8Ym9vbGVhbj4gaGFzU2VydmljZVdvcmtl
clJlZ2lzdHJhdGlvbihET01TdHJpbmcgc2NvcGVVUkwpOwogICAgIFtDb25kaXRpb25hbD1TRVJW
SUNFX1dPUktFUl0gdm9pZCB0ZXJtaW5hdGVTZXJ2aWNlV29ya2VyKFNlcnZpY2VXb3JrZXIgd29y
a2VyKTsKKyAgICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIFByb21pc2U8Ym9vbGVhbj4g
aXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29ya2VyIHdvcmtlcik7CiAKICAgICBbQ2Fs
bFdpdGg9RG9jdW1lbnQsIENvbmRpdGlvbmFsPUFQUExFX1BBWV0gcmVhZG9ubHkgYXR0cmlidXRl
IE1vY2tQYXltZW50Q29vcmRpbmF0b3IgbW9ja1BheW1lbnRDb29yZGluYXRvcjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oCmlu
ZGV4IDJlOWNlZDQ1YmNjMWY5Zjk0NWNiNDQxZjczMjhlYTkwNmE4OTdkYzguLmQ5MjJjZjdkYzE5
MDQ5MTdkZDcyZGZhNTc1YzVhZThmODVlNGUyNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTg1LDYgKzg1LDcgQEAg
cHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaW5pc2hGZXRjaGluZ1NjcmlwdEluU2VydmVyKGNv
bnN0IFNlcnZpY2VXb3JrZXJGZXRjaFJlc3VsdCYpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBz
dG9yZVJlZ2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
KT4mJiBjYWxsYmFjaykgeyBjYWxsYmFjaygpOyB9CisgICAgdmlydHVhbCB2b2lkIGlzU2Vydmlj
ZVdvcmtlclJ1bm5pbmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoYm9vbCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soZmFsc2UpOyB9CiAKIHByb3RlY3Rl
ZDoKICAgICBXRUJDT1JFX0VYUE9SVCBTV0NsaWVudENvbm5lY3Rpb24oKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFn
ZXIuaAppbmRleCA2YTA1YTNjMTE5YmE5OWUzN2QyNzA2MGNmODZkMGVjY2U3NjNlMWM2Li42NzI2
MTYyZGIzOTk0OGMxNmFiYTZjYzA0Mjg5M2RjZGM3MmQyMmU4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5o
CkBAIC02NCwxNSArNjQsMjAgQEAgcHVibGljOgogICAgICAgICB2aXJ0dWFsIHZvaWQgbWF0Y2hB
bGwoU2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVy
eU9wdGlvbnMmLCBTZXJ2aWNlV29ya2VyQ2xpZW50c01hdGNoQWxsQ2FsbGJhY2smJikgPSAwOwog
ICAgICAgICB2aXJ0dWFsIHZvaWQgY2xhaW0oU2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgPSAwOwogCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklkZW50aWZpZXIpID0gMDsKKwogICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCA9IDA7CiAKICAgICAgICAgYm9v
bCBpc0Nsb3NlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNDbG9zZWQ7IH0KKyAgICAgICAgYm9vbCB1
c2VTaG9ydFRpbWVvdXQoKSBjb25zdCB7IHJldHVybiBtX3VzZVNob3J0VGltZW91dDsgfQogCiAg
ICAgcHJvdGVjdGVkOgogICAgICAgICB2b2lkIHNldEFzQ2xvc2VkKCkgeyBtX2lzQ2xvc2VkID0g
dHJ1ZTsgfQorICAgICAgICB2b2lkIHNldFVzZVNob3J0VGltZW91dChib29sIHZhbHVlKSB7IG1f
dXNlU2hvcnRUaW1lb3V0ID0gdmFsdWU7IH0KIAogICAgIHByaXZhdGU6CiAgICAgICAgIGJvb2wg
bV9pc0Nsb3NlZCB7IGZhbHNlIH07CisgICAgICAgIGJvb2wgbV91c2VTaG9ydFRpbWVvdXQgeyBm
YWxzZSB9OwogICAgIH07CiAKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldENvbm5lY3Rpb24o
c3RkOjp1bmlxdWVfcHRyPENvbm5lY3Rpb24+JiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNw
cAppbmRleCBlNGVlY2EwZmFhOTdhYTk2YjI5YTM4NDdhMDMzY2FhNjUzM2U2ZjRjLi4xZWEyZDM0
ODFlYWFjYWFjNmE2OGI2ODk4ODY0NDI3OGY1OGUzMWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkLmNwcApAQCAtNzUsNiArNzUsOCBAQCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpTZXJ2aWNlV29y
a2VyVGhyZWFkKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgUwogICAgIDog
V29ya2VyVGhyZWFkKGRhdGEuc2NyaXB0VVJMLCBlbXB0eVN0cmluZygpLCAic2VydmljZXdvcmtl
cjoiICsgSW5zcGVjdG9yOjpJZGVudGlmaWVyc0ZhY3Rvcnk6OmNyZWF0ZUlkZW50aWZpZXIoKSwg
V1RGTW92ZSh1c2VyQWdlbnQpLCBwbGF0Zm9ybVN0cmF0ZWdpZXMoKS0+bG9hZGVyU3RyYXRlZ3ko
KS0+aXNPbkxpbmUoKSwgZGF0YS5zY3JpcHQsIGxvYWRlclByb3h5LCBkZWJ1Z2dlclByb3h5LCBE
dW1teVNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c2hhcmVkKCksIFdvcmtlclRocmVhZFN0YXJ0
TW9kZTo6Tm9ybWFsLCBkYXRhLmNvbnRlbnRTZWN1cml0eVBvbGljeSwgZmFsc2UsIGRhdGEucmVn
aXN0cmF0aW9uLmtleS50b3BPcmlnaW4oKS5zZWN1cml0eU9yaWdpbigpLmdldCgpLCBNb25vdG9u
aWNUaW1lOjpub3coKSwgaWRiQ29ubmVjdGlvblByb3h5LCBzb2NrZXRQcm92aWRlciwgSlNDOjpS
dW50aW1lRmxhZ3M6OmNyZWF0ZUFsbEVuYWJsZWQoKSkKICAgICAsIG1fZGF0YShkYXRhLmlzb2xh
dGVkQ29weSgpKQogICAgICwgbV93b3JrZXJPYmplY3RQcm94eShEdW1teVNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eTo6c2hhcmVkKCkpCisgICAgLCBtX2hlYXJ0QmVhdFRpbWVvdXQoU1dDb250ZXh0
TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigpLT51c2VTaG9ydFRpbWVvdXQoKSA/IGhl
YXJ0QmVhdFRpbWVvdXRGb3JUZXN0IDogaGVhcnRCZWF0VGltZW91dCkKKyAgICAsIG1faGVhcnRC
ZWF0VGltZXIgeyAqdGhpcywgJlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmly
ZWQgfQogewogICAgIEF0b21TdHJpbmc6OmluaXQoKTsKIH0KQEAgLTk1LDYgKzk3LDggQEAgdm9p
ZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpydW5FdmVudExvb3AoKQogCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnBvc3RGZXRjaFRhc2soUmVmPFNlcnZpY2VXb3JrZXJGZXRjaDo6Q2xpZW50PiYm
IGNsaWVudCwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+JiYgY2xpZW50
SWQsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIFN0cmluZyYmIHJlZmVycmVyLCBGZXRjaE9w
dGlvbnMmJiBvcHRpb25zKQogeworICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKwogICAgIC8v
IEZJWE1FOiBpbnN0ZWFkIG9mIGRpcmVjdGx5IHVzaW5nIHJ1bkxvb3AoKSwgd2Ugc2hvdWxkIGJl
IHVzaW5nIHNvbWV0aGluZyBsaWtlIFdvcmtlckdsb2JhbFNjb3BlUHJveHkuCiAgICAgLy8gRklY
TUU6IHJlcXVlc3QgYW5kIG9wdGlvbnMgY29tZSBzdHJhaWd0aCBmcm9tIElQQyBzbyBhcmUgYWxy
ZWFkeSBpc29sYXRlZC4gV2Ugc2hvdWxkIGJlIGFibGUgdG8gdGFrZSBiZW5lZml0IG9mIHRoYXQu
CiAgICAgcnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
LCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0g
cmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgp
XSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkgbXV0YWJsZSB7CkBAIC0xMTMsNyAr
MTE3LDEwIEBAIHN0YXRpYyB2b2lkIGZpcmVNZXNzYWdlRXZlbnQoU2VydmljZVdvcmtlckdsb2Jh
bFNjb3BlJiBzY29wZSwgTWVzc2FnZVdpdGhNZXNzYWdlCiAKIHZvaWQgU2VydmljZVdvcmtlclRo
cmVhZDo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiBtZXNzYWdlLCBTZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSkKIHsKLSAg
ICBydW5Mb29wKCkucG9zdFRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VE
YXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKV0gKGF1dG8mIGNvbnRleHQpIG11dGFibGUgeworICAg
IGlmICghbV9tZXNzYWdlRXZlbnRDb3VudCsrKQorICAgICAgICBzdGFydEhlYXJ0QmVhdFRpbWVy
KCk7CisKKyAgICBydW5Mb29wKCkucG9zdFRhc2soW21lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2Up
LCBzb3VyY2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKSwgdGhpcywgcHJvdGVjdGVkVGhpcyA9
IG1ha2VSZWYoKnRoaXMpXSAoYXV0byYgY29udGV4dCkgbXV0YWJsZSB7CiAgICAgICAgIGF1dG8m
IHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IGRvd25jYXN0PFNlcnZpY2VXb3JrZXJHbG9iYWxT
Y29wZT4oY29udGV4dCk7CiAgICAgICAgIFVSTCBzb3VyY2VVUkw7CiAgICAgICAgIEV4dGVuZGFi
bGVNZXNzYWdlRXZlbnRTb3VyY2Ugc291cmNlOwpAQCAtMTMzLDE3ICsxNDAsMjQgQEAgdm9pZCBT
ZXJ2aWNlV29ya2VyVGhyZWFkOjpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG0KICAgICAgICAgICAgIHNvdXJjZSA9IFdURk1vdmUoc291cmNlV29y
a2VyKTsKICAgICAgICAgfQogICAgICAgICBmaXJlTWVzc2FnZUV2ZW50KHNlcnZpY2VXb3JrZXJH
bG9iYWxTY29wZSwgV1RGTW92ZShtZXNzYWdlKSwgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJj
ZSB7IHNvdXJjZSB9LCBzb3VyY2VVUkwpOworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgICAgIEFTU0VSVChtX21lc3NhZ2VFdmVudENvdW50KTsKKyAgICAgICAgICAgIC0tbV9t
ZXNzYWdlRXZlbnRDb3VudDsKKyAgICAgICAgfSk7CiAgICAgfSk7CiB9CiAKIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZDo6ZmlyZUluc3RhbGxFdmVudCgpCiB7Ci0gICAgcnVuTG9vcCgpLnBvc3RU
YXNrKFtqb2JEYXRhSWRlbnRpZmllciA9IG1fZGF0YS5qb2JEYXRhSWRlbnRpZmllciwgc2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldIChTY3JpcHRFeGVjdXRpb25D
b250ZXh0JiBjb250ZXh0KSBtdXRhYmxlIHsKKyAgICBtX3N0YXRlID0gU3RhdGU6Okluc3RhbGxp
bmc7CisgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworCisgICAgcnVuTG9vcCgpLnBvc3RUYXNr
KFtzZXJ2aWNlV29ya2VySWRlbnRpZmllciA9IHRoaXMtPmlkZW50aWZpZXIoKV0oYXV0byYgY29u
dGV4dCkgewogICAgICAgICBhdXRvJiBzZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUgPSBkb3duY2Fz
dDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KGNvbnRleHQpOwogICAgICAgICBhdXRvIGluc3Rh
bGxFdmVudCA9IEV4dGVuZGFibGVFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5pbnN0YWxsRXZl
bnQsIHsgfSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZp
Y2VXb3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGluc3RhbGxFdmVudCk7CiAKLSAgICAg
ICAgaW5zdGFsbEV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0FyZVNldHRsZWQo
W2pvYkRhdGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oSGFzaFNldDxSZWY8
RE9NUHJvbWlzZT4+JiYgZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgeworICAgICAgICBpbnN0YWxs
RXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChbc2VydmljZVdv
cmtlcklkZW50aWZpZXJdKGF1dG8mJiBleHRlbmRMaWZldGltZVByb21pc2VzKSB7CiAgICAgICAg
ICAgICBib29sIGhhc1JlamVjdGVkQW55UHJvbWlzZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9y
IChhdXRvJiBwcm9taXNlIDogZXh0ZW5kTGlmZXRpbWVQcm9taXNlcykgewogICAgICAgICAgICAg
ICAgIGlmIChwcm9taXNlLT5zdGF0dXMoKSA9PSBET01Qcm9taXNlOjpTdGF0dXM6OlJlamVjdGVk
KSB7CkBAIC0xNTEsMjUgKzE2NSwzNiBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpcmVJ
bnN0YWxsRXZlbnQoKQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtqb2JEYXRh
SWRlbnRpZmllciwgc2VydmljZVdvcmtlcklkZW50aWZpZXIsIGhhc1JlamVjdGVkQW55UHJvbWlz
ZV0gKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAg
ICAgICAgIGNvbm5lY3Rpb24tPmRpZEZpbmlzaEluc3RhbGwoam9iRGF0YUlkZW50aWZpZXIsIHNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCAhaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKKyAgICAgICAg
ICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNSZWplY3Rl
ZEFueVByb21pc2VdKCkgeworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgICAg
ICBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkRmlyaW5nSW5zdGFs
bEV2ZW50KGhhc1JlamVjdGVkQW55UHJvbWlzZSk7CiAgICAgICAgICAgICB9KTsKICAgICAgICAg
fSk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJp
bmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UpCit7CisgICAgbV9zdGF0
ZSA9IFN0YXRlOjpJZGxlOworCisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRleHRN
YW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5lY3Rpb24tPmRp
ZEZpbmlzaEluc3RhbGwobV9kYXRhLmpvYkRhdGFJZGVudGlmaWVyLCBpZGVudGlmaWVyKCksICFo
YXNSZWplY3RlZEFueVByb21pc2UpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZp
cmVBY3RpdmF0ZUV2ZW50KCkKIHsKLSAgICBydW5Mb29wKCkucG9zdFRhc2soW3NlcnZpY2VXb3Jr
ZXJJZGVudGlmaWVyID0gdGhpcy0+aWRlbnRpZmllcigpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYgY29udGV4dCkgbXV0YWJsZSB7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpBY3RpdmF0aW5nOwor
ICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKworICAgIHJ1bkxvb3AoKS5wb3N0VGFzayhbc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldKGF1dG8mIGNvbnRleHQp
IHsKICAgICAgICAgYXV0byYgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gZG93bmNhc3Q8U2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KTsKICAgICAgICAgYXV0byBhY3RpdmF0ZUV2
ZW50ID0gRXh0ZW5kYWJsZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmFjdGl2YXRlRXZlbnQs
IHsgfSwgRXh0ZW5kYWJsZUV2ZW50OjpJc1RydXN0ZWQ6Olllcyk7CiAgICAgICAgIHNlcnZpY2VX
b3JrZXJHbG9iYWxTY29wZS5kaXNwYXRjaEV2ZW50KGFjdGl2YXRlRXZlbnQpOwogCi0gICAgICAg
IGFjdGl2YXRlRXZlbnQtPndoZW5BbGxFeHRlbmRMaWZldGltZVByb21pc2VzQXJlU2V0dGxlZChb
c2VydmljZVdvcmtlcklkZW50aWZpZXJdKEhhc2hTZXQ8UmVmPERPTVByb21pc2U+PiYmKSB7Ci0g
ICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gKCkg
bXV0YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBTV0NvbnRl
eHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCi0gICAgICAgICAgICAgICAgICAg
IGNvbm5lY3Rpb24tPmRpZEZpbmlzaEFjdGl2YXRpb24oc2VydmljZVdvcmtlcklkZW50aWZpZXIp
OworICAgICAgICBhY3RpdmF0ZUV2ZW50LT53aGVuQWxsRXh0ZW5kTGlmZXRpbWVQcm9taXNlc0Fy
ZVNldHRsZWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXShhdXRvJiYpIHsKKyAgICAgICAgICAg
IGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlmaWVyXSgpIHsKKyAgICAgICAg
ICAgICAgICBpZiAoYXV0byogc2VydmljZVdvcmtlclRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFu
YWdlcjo6c2luZ2xldG9uKCkuc2VydmljZVdvcmtlclRocmVhZFByb3h5KHNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyKSkKKyAgICAgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5
LT50aHJlYWQoKS5maW5pc2hlZEZpcmluZ0FjdGl2YXRlRXZlbnQoKTsKICAgICAgICAgICAgIH0p
OwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE4MywyMSArMjA4LDkxIEBAIHZvaWQgU2Vydmlj
ZVdvcmtlclRocmVhZDo6c29mdFVwZGF0ZSgpCiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdv
cmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCkKK3sKKyAgICBtX3N0YXRl
ID0gU3RhdGU6OklkbGU7CisKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgY29ubmVjdGlvbi0+ZGlk
RmluaXNoQWN0aXZhdGlvbihpZGVudGlmaWVyKCkpOworfQorCiB2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGluZ1NjcmlwdCgpCiB7CisgICAgQVNTRVJUKCFpc01haW5U
aHJlYWQoKSk7CiAgICAgbV9kb2VzSGFuZGxlRmV0Y2ggPSB3b3JrZXJHbG9iYWxTY29wZSgpLT5o
YXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkuZmV0Y2hFdmVudCk7CiB9CiAKIHZvaWQgU2Vy
dmljZVdvcmtlclRocmVhZDo6c3RhcnQoRnVuY3Rpb248dm9pZChjb25zdCBTdHJpbmcmLCBib29s
KT4mJiBjYWxsYmFjaykKIHsKKyAgICBtX3N0YXRlID0gU3RhdGU6OlN0YXJ0aW5nOworICAgIHN0
YXJ0SGVhcnRCZWF0VGltZXIoKTsKKwogICAgIFdvcmtlclRocmVhZDo6c3RhcnQoW2NhbGxiYWNr
ID0gV1RGTW92ZShjYWxsYmFjayksIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyID0gdGhpcy0+aWRl
bnRpZmllcigpXShhdXRvJiBlcnJvck1lc3NhZ2UpIG11dGFibGUgewogICAgICAgICBib29sIGRv
ZXNIYW5kbGVGZXRjaCA9IHRydWU7Ci0gICAgICAgIGlmIChhdXRvKiB0aHJlYWRQcm94eSA9IFNX
Q29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQoc2VydmljZVdvcmtlcklkZW50
aWZpZXIpKQorICAgICAgICBpZiAoYXV0byogdGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2Vy
OjpzaW5nbGV0b24oKS53b3JrZXJCeUlEKHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSkgeworICAg
ICAgICAgICAgdGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkU3RhcnRpbmcoKTsKICAgICAg
ICAgICAgIGRvZXNIYW5kbGVGZXRjaCA9IHRocmVhZFByb3h5LT50aHJlYWQoKS5kb2VzSGFuZGxl
RmV0Y2goKTsKKyAgICAgICAgfQogICAgICAgICBjYWxsYmFjayhlcnJvck1lc3NhZ2UsIGRvZXNI
YW5kbGVGZXRjaCk7CiAgICAgfSk7CiB9CiAKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6Zmlu
aXNoZWRTdGFydGluZygpCit7CisgICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworfQorCit2b2lk
IFNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hFdmVudE1vbml0b3JpbmcoKQoreworICAg
IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSB0cnVlOworICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIo
KTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydEhlYXJ0QmVhdFRpbWVyKCkK
K3sKKyAgICBpZiAobV9oZWFydEJlYXRUaW1lci5pc0FjdGl2ZSgpKQorICAgICAgICByZXR1cm47
CisKKyAgICBtX29uZ29pbmdIZWFydEJlYXRDaGVjayA9IHRydWU7CisgICAgcnVuTG9vcCgpLnBv
c3RUYXNrKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyldKGF1dG8mKSBtdXRh
YmxlIHsKKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdU
Rk1vdmUocHJvdGVjdGVkVGhpcyldKCkgeworICAgICAgICAgICAgbV9vbmdvaW5nSGVhcnRCZWF0
Q2hlY2sgPSBmYWxzZTsKKyAgICAgICAgfSk7CisgICAgfSk7CisKKyAgICBtX2hlYXJ0QmVhdFRp
bWVyLnN0YXJ0T25lU2hvdChtX2hlYXJ0QmVhdFRpbWVvdXQpOworfQorCit2b2lkIFNlcnZpY2VX
b3JrZXJUaHJlYWQ6OmhlYXJ0QmVhdFRpbWVyRmlyZWQoKQoreworICAgIGlmICghbV9vbmdvaW5n
SGVhcnRCZWF0Q2hlY2spIHsKKyAgICAgICAgaWYgKG1fc3RhdGUgPT0gU3RhdGU6Okluc3RhbGxp
bmcgfHwgbV9zdGF0ZSA9PSBTdGF0ZTo6QWN0aXZhdGluZyB8fCBtX2lzSGFuZGxpbmdGZXRjaEV2
ZW50IHx8IG1fbWVzc2FnZUV2ZW50Q291bnQpCisgICAgICAgICAgICBzdGFydEhlYXJ0QmVhdFRp
bWVyKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBhdXRvKiBzZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHkoaWRlbnRpZmllcigpKTsKKyAgICBpZiAoIXNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eSB8fCBzZXJ2aWNlV29ya2VyVGhyZWFkUHJveHktPmlzVGVybWluYXRpbmdPclRlcm1pbmF0
ZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgYXV0byogY29ubmVjdGlvbiA9IFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKTsKKyAgICBpZiAoIWNvbm5lY3Rpb24p
CisgICAgICAgIHJldHVybjsKKworICAgIHN3aXRjaCAobV9zdGF0ZSkgeworICAgIGNhc2UgU3Rh
dGU6OklkbGU6CisgICAgY2FzZSBTdGF0ZTo6QWN0aXZhdGluZzoKKyAgICAgICAgY29ubmVjdGlv
bi0+ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKGlkZW50aWZpZXIoKSk7CisgICAgICAgIGJyZWFrOwor
ICAgIGNhc2UgU3RhdGU6OlN0YXJ0aW5nOgorICAgICAgICBjb25uZWN0aW9uLT5zZXJ2aWNlV29y
a2VyRmFpbGVkVG9TdGFydChtX2RhdGEuam9iRGF0YUlkZW50aWZpZXIsIGlkZW50aWZpZXIoKSwg
IlNlcnZpY2UgV29ya2VyIHNjcmlwdCBleGVjdXRpb24gdGltZWQgb3V0Il9zKTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6SW5zdGFsbGluZzoKKyAgICAgICAgY29ubmVjdGlvbi0+
ZGlkRmluaXNoSW5zdGFsbChtX2RhdGEuam9iRGF0YUlkZW50aWZpZXIsIGlkZW50aWZpZXIoKSwg
ZmFsc2UpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaCBi
L1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJl
YWQuaAppbmRleCAwNzNjZDYyMjYzM2I1YjVmNjFlM2E5MGI0ZGM4ZjA2NmY3ZTMyMWY4Li5lMjIw
MjAxMDAwYWFiMTRlZWRkMmM4M2JkODg3MGY4ZDY5NTNjZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRo
cmVhZC5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckNvbnRleHRE
YXRhLmgiCiAjaW5jbHVkZSAiU2VydmljZVdvcmtlckZldGNoLmgiCiAjaW5jbHVkZSAiU2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIuaCIKKyNpbmNsdWRlICJUaW1lci5oIgogI2luY2x1ZGUgIldvcmtl
clRocmVhZC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC02OCw2ICs2OSw5IEBAIHB1Ymxp
YzoKICAgICBTZXJ2aWNlV29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLnNlcnZpY2VXb3JrZXJJZGVudGlmaWVyOyB9CiAgICAgYm9vbCBkb2VzSGFuZGxl
RmV0Y2goKSBjb25zdCB7IHJldHVybiBtX2RvZXNIYW5kbGVGZXRjaDsgfQogCisgICAgdm9pZCBz
dGFydEZldGNoRXZlbnRNb25pdG9yaW5nKCk7CisgICAgdm9pZCBzdG9wRmV0Y2hFdmVudE1vbml0
b3JpbmcoKSB7IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgPSBmYWxzZTsgfQorCiBwcm90ZWN0ZWQ6
CiAgICAgUmVmPFdvcmtlckdsb2JhbFNjb3BlPiBjcmVhdGVXb3JrZXJHbG9iYWxTY29wZShjb25z
dCBVUkwmLCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYsIGNvbnN0IFN0cmluZyYgbmFtZSwgY29uc3Qg
U3RyaW5nJiBpZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCwgYm9vbCBpc09ubGlu
ZSwgY29uc3QgQ29udGVudFNlY3VyaXR5UG9saWN5UmVzcG9uc2VIZWFkZXJzJiwgYm9vbCBzaG91
bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3ksIFJlZjxTZWN1cml0eU9yaWdp
bj4mJiB0b3BPcmlnaW4sIE1vbm90b25pY1RpbWUgdGltZU9yaWdpbikgZmluYWw7CiAgICAgdm9p
ZCBydW5FdmVudExvb3AoKSBvdmVycmlkZTsKQEAgLTc4LDkgKzgyLDI4IEBAIHByaXZhdGU6CiAg
ICAgYm9vbCBpc1NlcnZpY2VXb3JrZXJUaHJlYWQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdm9pZCBmaW5pc2hlZEV2YWx1YXRpbmdTY3JpcHQoKSBmaW5hbDsKIAorICAgIHZv
aWQgZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2Up
OworICAgIHZvaWQgZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCk7CisgICAgdm9pZCBmaW5p
c2hlZFN0YXJ0aW5nKCk7CisKKyAgICB2b2lkIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKyAgICB2
b2lkIGhlYXJ0QmVhdFRpbWVyRmlyZWQoKTsKKyAgICB2b2lkIGluc3RhbGxFdmVudFRpbWVyRmly
ZWQoKTsKKwogICAgIFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSBtX2RhdGE7CiAgICAgV29ya2Vy
T2JqZWN0UHJveHkmIG1fd29ya2VyT2JqZWN0UHJveHk7CiAgICAgYm9vbCBtX2RvZXNIYW5kbGVG
ZXRjaCB7IGZhbHNlIH07CisKKyAgICBib29sIG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgeyBmYWxz
ZSB9OworICAgIHVpbnQ2NF90IG1fbWVzc2FnZUV2ZW50Q291bnQgeyAwIH07CisgICAgZW51bSBj
bGFzcyBTdGF0ZSB7IElkbGUsIFN0YXJ0aW5nLCBJbnN0YWxsaW5nLCBBY3RpdmF0aW5nIH07Cisg
ICAgU3RhdGUgbV9zdGF0ZSB7IFN0YXRlOjpJZGxlIH07CisgICAgYm9vbCBtX29uZ29pbmdIZWFy
dEJlYXRDaGVjayB7IGZhbHNlIH07CisKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGVh
cnRCZWF0VGltZW91dCB7IDYwX3MgfTsKKyAgICBzdGF0aWMgY29uc3RleHByIFNlY29uZHMgaGVh
cnRCZWF0VGltZW91dEZvclRlc3QgeyAxX3MgfTsKKyAgICBTZWNvbmRzIG1faGVhcnRCZWF0VGlt
ZW91dCB7IGhlYXJ0QmVhdFRpbWVvdXQgfTsKKyAgICBUaW1lciBtX2hlYXJ0QmVhdFRpbWVyOwog
fTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eS5jcHAKaW5kZXggNTdlOTMyMTQ5MWQ0ZTg0N2M1OWNjODUxNWIyNzAwMmUyZGU5YmJhNy4u
NzdhZjU2Yzg2ODQwYmZkNDJmM2QyZTEzZWU0ZjUwNGZiYTllODllZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFBy
b3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCkBAIC0xOTQsNiArMTk0LDkgQEAgdm9pZCBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmll
ciBjb25uZWN0aW8KIHsKICAgICBhdXRvIGtleSA9IHN0ZDo6bWFrZV9wYWlyKGNvbm5lY3Rpb25J
ZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpOwogCisgICAgaWYgKG1fb25nb2luZ0ZldGNoVGFz
a3MuaXNFbXB0eSgpKQorICAgICAgICB0aHJlYWQoKS5zdGFydEZldGNoRXZlbnRNb25pdG9yaW5n
KCk7CisKICAgICBBU1NFUlQoIW1fb25nb2luZ0ZldGNoVGFza3MuY29udGFpbnMoa2V5KSk7CiAg
ICAgbV9vbmdvaW5nRmV0Y2hUYXNrcy5hZGQoa2V5LCBjbGllbnQuY29weVJlZigpKTsKICAgICB0
aHJlYWQoKS5wb3N0RmV0Y2hUYXNrKFdURk1vdmUoY2xpZW50KSwgV1RGTW92ZShjbGllbnRJZCks
IFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUocmVmZXJyZXIpLCBXVEZNb3ZlKG9wdGlvbnMpKTsK
QEAgLTIwNSw2ICsyMDgsOSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6Y2FuY2Vs
RmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBjb25uZWN0aQogICAgIGlmICghY2xp
ZW50KQogICAgICAgICByZXR1cm47CiAKKyAgICBpZiAobV9vbmdvaW5nRmV0Y2hUYXNrcy5pc0Vt
cHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmluZygpOworCiAg
ICAgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJHbG9iYWxTY29wZShbY2xpZW50ID0gV1RGTW92ZShj
bGllbnQudmFsdWUoKSldIChTY3JpcHRFeGVjdXRpb25Db250ZXh0JikgewogICAgICAgICBjbGll
bnQtPmNhbmNlbCgpOwogICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOwpAQCAt
MjI0LDYgKzIzMCw5IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5Ojpjb250aW51ZURp
ZFJlY2VpdmVGZXRjaFJlc3BvbnNlKFNXU2VydmVyQ29ubmVjdGlvCiB2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWRQcm94eTo6cmVtb3ZlRmV0Y2goU1dTZXJ2ZXJDb25uZWN0aW9uSWRlbnRpZmllciBj
b25uZWN0aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyIGZldGNoSWRlbnRpZmllcikKIHsK
ICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLnJlbW92ZShzdGQ6Om1ha2VfcGFpcihjb25uZWN0aW9u
SWRlbnRpZmllciwgZmV0Y2hJZGVudGlmaWVyKSk7CisKKyAgICBpZiAobV9vbmdvaW5nRmV0Y2hU
YXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0b3BGZXRjaEV2ZW50TW9uaXRvcmlu
ZygpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250
ZXh0Q29ubmVjdGlvbi5jcHAKaW5kZXggZmExYzRjZDdjYmNkZTA3ZGZmMDI4ODJkMGJkMTExMGQ4
NGE0YmZlZi4uZTU5M2U5ZDExZmRiMjY3MDc5MjcxMGJiNWE0YjQ1ZWNjZjVjZjhjMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApAQCAtMTIzLDYgKzEyMywxMiBA
QCB2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6c2V0U2NyaXB0UmVzb3VyY2UoU2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgc2VydgogICAgICAgICB3b3JrZXItPnNldFNjcmlwdFJlc291
cmNlKFdURk1vdmUoc2NyaXB0VVJMKSwgU2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRl
ZFNjcmlwdCB7IFdURk1vdmUoc2NyaXB0KSwgV1RGTW92ZShyZXNwb25zZVVSTCksIFdURk1vdmUo
bWltZVR5cGUpIH0pOwogfQogCit2b2lkIFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6ZGlk
RmFpbEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCit7
CisgICAgaWYgKGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGluZ1dvcmtlckZv
cklkZW50aWZpZXIoaWRlbnRpZmllcikpCisgICAgICAgIHdvcmtlci0+ZGlkRmFpbEhlYXJ0QmVh
dENoZWNrKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCmlu
ZGV4IGQ0N2U5ZjE4N2RhNGUwMDhmZWZiZjY1N2JiZGM4YWQ5ZWZkYTYzY2YuLmJmNzVjZDk1NzBl
YjQ0YWE5YjllZDljYWZlODRlMzE0MjAyZWRiMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29udGV4
dENvbm5lY3Rpb24uaApAQCAtNzIsNiArNzIsNyBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBP
UlQgdm9pZCBtYXRjaEFsbCh1aW50NjRfdCByZXF1ZXN0SWRlbnRpZmllciwgU2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGNvbnN0IFNlcnZpY2VXb3JrZXJDbGllbnRRdWVyeU9wdGlvbnMmKTsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsYWltKHVpbnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBT
ZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRTY3Jp
cHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgVVJMJiYgc2NyaXB0VVJMLCBTdHJp
bmcmJiBzY3JpcHQsIFVSTCYmIHJlc3BvbnNlVVJMLCBTdHJpbmcmJiBtaW1lVHlwZSk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2soU2VydmljZVdvcmtlcklk
ZW50aWZpZXIpOwogCiAgICAgY29uc3QgUmVnaXN0cmFibGVEb21haW4mIHJlZ2lzdHJhYmxlRG9t
YWluKCkgY29uc3QgeyByZXR1cm4gbV9yZWdpc3RyYWJsZURvbWFpbjsgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyV29ya2VyLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIu
Y3BwCmluZGV4IDY1NWQ3MGQyZmNmZWRkY2FhMjQ4MmM3YjVhYWMwMmZmMGNlYTk3YWUuLmYyMTZj
YjY1YjZhOWMzN2Y0ZmJhZDc5NDBjY2U1Yjc2OTYwZGIxMmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwCkBA
IC0yNTgsNiArMjU4LDEyIEBAIFNXU2VydmVyUmVnaXN0cmF0aW9uKiBTV1NlcnZlcldvcmtlcjo6
cmVnaXN0cmF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gbV9yZWdpc3RyYXRpb24uZ2V0KCk7CiB9
CiAKK3ZvaWQgU1dTZXJ2ZXJXb3JrZXI6OmRpZEZhaWxIZWFydEJlYXRDaGVjaygpCit7CisgICAg
aWYgKG1fc2VydmVyICYmIGlzUnVubmluZygpKQorICAgICAgICBtX3NlcnZlci0+dGVybWluYXRl
V29ya2VyKCp0aGlzKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5oCmluZGV4IDFiOTljYzkyNzE5MWJjNTJl
NmI3ZTVlNTE4NzdiMWQ0NDgxMWYwOWUuLmYyZWZmZWU1OWMyZTcwYTU1OGYyY2Q3NWJlNWY1YTAy
NDYyNWU4MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2
ZXIvU1dTZXJ2ZXJXb3JrZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uv
c2VydmVyL1NXU2VydmVyV29ya2VyLmgKQEAgLTExOCw2ICsxMTgsNyBAQCBwdWJsaWM6CiAKICAg
ICB2b2lkIHNldEhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIHsgbV9oYXNUaW1lZE91dEFueUZl
dGNoVGFza3MgPSB0cnVlOyB9CiAgICAgYm9vbCBoYXNUaW1lZE91dEFueUZldGNoVGFza3MoKSBj
b25zdCB7IHJldHVybiBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrczsgfQorICAgIHZvaWQgZGlk
RmFpbEhlYXJ0QmVhdENoZWNrKCk7CiAKIHByaXZhdGU6CiAgICAgU1dTZXJ2ZXJXb3JrZXIoU1dT
ZXJ2ZXImLCBTV1NlcnZlclJlZ2lzdHJhdGlvbiYsIGNvbnN0IFVSTCYsIGNvbnN0IFN0cmluZyYg
c2NyaXB0LCBjb25zdCBDb250ZW50U2VjdXJpdHlQb2xpY3lSZXNwb25zZUhlYWRlcnMmLCBTdHJp
bmcmJiByZWZlcnJlclBvbGljeSwgV29ya2VyVHlwZSwgU2VydmljZVdvcmtlcklkZW50aWZpZXIs
IEhhc2hNYXA8VVJMLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0PiYm
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtl
ci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKaW5kZXggNTYwNjU3MDU5
Zjk1ODc0M2JiOGNmMmNlNzAwZjg1MDAwM2MxMThlZC4uYTUyNTJkZTU0Y2FhZmMyNjkxZDQ4YTY4
OGEwOWNkZmRmODk2N2NlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5j
cHAKQEAgLTM5NSw3ICszOTUsNyBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6dXBkYXRl
VGhyb3R0bGVTdGF0ZSgpCiAgICAgfQogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
Y29udGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0Q29ubmVj
dGlvbiYgY29udGV4dENvbm5lY3Rpb24pCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKFNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbiYgY29udGV4
dENvbm5lY3Rpb24pCiB7CiAgICAgYXV0byYgY29ubmVjdGlvbiA9ICBzdGF0aWNfY2FzdDxXZWJT
V1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24mPihjb250ZXh0Q29ubmVjdGlvbik7CiAgICAgY29u
bmVjdGlvbi5zZXRUaHJvdHRsZVN0YXRlKGNvbXB1dGVUaHJvdHRsZVN0YXRlKGNvbm5lY3Rpb24u
cmVnaXN0cmFibGVEb21haW4oKSkpOwpAQCAtNDA0LDEyICs0MDQsMTggQEAgdm9pZCBXZWJTV1Nl
cnZlckNvbm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZChXZWJDb3JlOjpTV1NlcnZl
clRvQ29udGV4dEMKICAgICAgICAgbV9uZXR3b3JrUHJvY2Vzcy0+cGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6TmV0d29ya1Byb2Nlc3NQcm94eTo6UmVnaXN0ZXJTZXJ2
aWNlV29ya2VyQ2xpZW50UHJvY2VzcyB7IGlkZW50aWZpZXIoKSwgY29ubmVjdGlvbi53ZWJQcm9j
ZXNzSWRlbnRpZmllcigpIH0sIDApOwogfQogCi12b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6
c3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImJiBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY29tcGxldGlv
bkhhbmRsZXIpCit2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtl
ckZyb21DbGllbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIHN5bmNUZXJtaW5h
dGVXb3JrZXIoV1RGTW92ZShpZGVudGlmaWVyKSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoKTsK
IH0KIAordm9pZCBXZWJTV1NlcnZlckNvbm5lY3Rpb246OmlzU2VydmljZVdvcmtlclJ1bm5pbmco
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBhdXRvKiB3b3JrZXIgPSBTV1Nl
cnZlcldvcmtlcjo6ZXhpc3RpbmdXb3JrZXJGb3JJZGVudGlmaWVyKGlkZW50aWZpZXIpOworICAg
IGNvbXBsZXRpb25IYW5kbGVyKHdvcmtlciA/IHdvcmtlci0+aXNSdW5uaW5nKCkgOiBmYWxzZSk7
Cit9CisKIFBBTDo6U2Vzc2lvbklEIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6c2Vzc2lvbklEKCkg
Y29uc3QKIHsKICAgICByZXR1cm4gc2VydmVyKCkuc2Vzc2lvbklEKCk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25u
ZWN0aW9uLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmgKaW5kZXggZmMwYmEzYTIxYTBmYmNhYTk5ODhlYmE3YzJjYjEy
MWJiN2MzZDAzMS4uMTZiMTk3NjYxNjFjY2MxMTRjZDNhYWQ0MjRlZjU1NTJhYTUwMWRlMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNX
U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaApAQCAtOTMsNyArOTMsOCBAQCBwcml2
YXRlOgogCiAgICAgdm9pZCByZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnQoV2ViQ29yZTo6U2Vj
dXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50
RGF0YSYmLCBjb25zdCBPcHRpb25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9u
SWRlbnRpZmllcj4mLCBTdHJpbmcmJiB1c2VyQWdlbnQpOwogICAgIHZvaWQgdW5yZWdpc3RlclNl
cnZpY2VXb3JrZXJDbGllbnQoY29uc3QgV2ViQ29yZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50
aWZpZXImKTsKLSAgICB2b2lkIHN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6
OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJik7
CisgICAgdm9pZCBzeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lk
IGlzU2VydmljZVdvcmtlclJ1bm5pbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAgICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIgZGVzdGlu
YXRpb25Db250ZXh0SWRlbnRpZmllciwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHMmLCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzb3VyY2VTZXJ2aWNlV29y
a2VySWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBzb3VyY2VPcmlnaW4pIGZpbmFsOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dT
ZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNzYWdlcy5pbgppbmRleCBh
OTJlZWRlZDg3NjIzYzc0OTZjY2I0NTBkZjI4MjkwZjI0ZTViNGYzLi5mZGJjZWI4ODg2MmI0MWEy
YzBjZGE0YTdmMzVlNzY0NjgyY2JmYWY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdv
cmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmlu
CisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1Nl
cnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAgLTQzLDYgKzQzLDcgQEAgbWVzc2FnZXMgLT4g
V2ViU1dTZXJ2ZXJDb25uZWN0aW9uIE5vdFJlZkNvdW50ZWQgewogCiAgICAgU2V0VGhyb3R0bGVT
dGF0ZShib29sIGlzVGhyb3R0bGVhYmxlKQogICAgIFN0b3JlUmVnaXN0cmF0aW9uc09uRGlzaygp
IC0+ICgpIEFzeW5jCisgICAgSXNTZXJ2aWNlV29ya2VyUnVubmluZyhXZWJDb3JlOjpTZXJ2aWNl
V29ya2VySWRlbnRpZmllciB3b3JrZXJJZGVudGlmaWVyKSAtPiAoYm9vbCBpc1J1bm5pbmcpIEFz
eW5jCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5p
bgppbmRleCBmNGZkZTVmZTM4NTMxMjA4NTk1ZjcyNDBkNzYwMTNlZDYzYzBiNDRmLi4xMjRhNDBh
NTJkMGQ1NDc2OTliYWRkYWVlZmQ0NzcwYjE0ZTg2NTA4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25u
ZWN0aW9uLm1lc3NhZ2VzLmluCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2Vy
dmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4KQEAg
LTM3LDYgKzM3LDcgQEAgbWVzc2FnZXMgLT4gV2ViU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9u
IE5vdFJlZkNvdW50ZWQgewogICAgIENsYWltKHVpbnQ2NF90IGNsYWltUmVxdWVzdElkZW50aWZp
ZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICBTZXRTY3JpcHRSZXNvdXJjZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBVUkwgc2NyaXB0VVJMLCBTdHJpbmcgc2NyaXB0LCBVUkwgcmVzcG9u
c2VVUkwsIFN0cmluZyBtaW1lVHlwZSk7CiAgICAgUG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXJD
bGllbnQoc3RydWN0IFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyIGRlc3Rp
bmF0aW9uLCBzdHJ1Y3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMgbWVzc2FnZSwg
V2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIgc291cmNlLCBTdHJpbmcgc291cmNlT3Jp
Z2luKQorICAgIERpZEZhaWxIZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRl
bnRpZmllciBpZGVudGlmaWVyKTsKIH0KIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktF
UikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWwg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCmluZGV4IGU2NDIxZjdj
YjNlODcyZDk1Y2RkOWU5N2FjN2QzNjQ4M2MzMGU5NjIuLmMyMjgxM2RlYTM0M2Q2MGRmZjc4YWMx
ZWI3Mjk0NGFiY2QzMDRlODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1dlYlBy
ZWZlcmVuY2VzLnlhbWwKKysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMu
eWFtbApAQCAtMTIzMSw2ICsxMjMxLDEwIEBAIFNob3VsZERlY2lkZVBvbGljeUJlZm9yZUxvYWRp
bmdRdWlja0xvb2tQcmV2aWV3OgogICBkZWZhdWx0VmFsdWU6IGZhbHNlCiAgIHR5cGU6IGJvb2wK
IAorU2VydmljZVdvcmtlclNob3J0VGltZW91dDoKKyAgZGVmYXVsdFZhbHVlOiBmYWxzZQorICB0
eXBlOiBib29sCisKICMgRm9yIGV4cGVyaW1lbnRhbCBmZWF0dXJlczoKICMgVGhlIHR5cGUgc2hv
dWxkIGJlIGJvb2xlYW4uCiAjIFlvdSBtdXN0IHByb3ZpZGUgYSBodW1hblJlYWRhYmxlTmFtZSBh
bmQgaHVtYW5SZWFkYWJsZURlc2NyaXB0aW9uIGZvciBhbGwgZXhwZXJpbWVudGFsIGZlYXR1cmVz
LiBUaGV5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1ByZWZl
cmVuY2VzLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMu
Y3BwCmluZGV4IDcxYTZlZDIxNmM3NjM3MzIzNWNlY2E3OWVhZDgxODNkMDA5Mjg3ZmMuLmNjNmUx
MzBiNDVkMzY0NjA3NWU0MTIwYmIwMzQzN2U1ZmRiMjE5NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwCkBAIC0yMTc4LDMgKzIxNzgsMTMg
QEAgdm9pZCBXS1ByZWZlcmVuY2VzU2V0UmVtb3RlUGxheWJhY2tFbmFibGVkKFdLUHJlZmVyZW5j
ZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wKIHsKICAgICBXZWJLaXQ6OnRvSW1wbChwcmVmZXJl
bmNlc1JlZiktPnNldFJlbW90ZVBsYXliYWNrRW5hYmxlZChlbmFibGVkKTsKIH0KKworYm9vbCBX
S1ByZWZlcmVuY2VzR2V0U2VydmljZVdvcmtlclNob3J0VGltZW91dChXS1ByZWZlcmVuY2VzUmVm
IHByZWZlcmVuY2VzUmVmKQoreworICAgIHJldHVybiBXZWJLaXQ6OnRvSW1wbChwcmVmZXJlbmNl
c1JlZiktPnNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQoKTsKK30KKwordm9pZCBXS1ByZWZlcmVu
Y2VzU2V0U2VydmljZVdvcmtlclNob3J0VGltZW91dChXS1ByZWZlcmVuY2VzUmVmIHByZWZlcmVu
Y2VzUmVmLCBib29sIGVuYWJsZWQpCit7CisgICAgV2ViS2l0Ojp0b0ltcGwocHJlZmVyZW5jZXNS
ZWYpLT5zZXRTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0KGVuYWJsZWQpOworfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZi5oIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZi5oCmluZGV4IDA4ZTE4
MmMyNTgwMmVlMjAxZmQ2ZGU3NTE3MGU3YjE3MWNkNjA5NTEuLjRlMmE5MzMzZmIzYzEzM2FmMjA0
OGIwY2M1N2MyYTRjMGJjZGJmYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUHJlZmVyZW5jZXNSZWYuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9B
UEkvQy9XS1ByZWZlcmVuY2VzUmVmLmgKQEAgLTM0Miw2ICszNDIsMTAgQEAgV0tfRVhQT1JUIGJv
b2wgV0tQcmVmZXJlbmNlc0dldENhcHR1cmVWaWRlb0luVUlQcm9jZXNzRW5hYmxlZChXS1ByZWZl
cmVuY2VzUmVmIHAKIFdLX0VYUE9SVCBib29sIFdLUHJlZmVyZW5jZXNHZXRSZW1vdGVQbGF5YmFj
a0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CiBXS19FWFBPUlQgdm9p
ZCBXS1ByZWZlcmVuY2VzU2V0UmVtb3RlUGxheWJhY2tFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCk7CiAKKy8vIERlZmF1bHRzIHRvIGZhbHNlLgor
V0tfRVhQT1JUIGJvb2wgV0tQcmVmZXJlbmNlc0dldFNlcnZpY2VXb3JrZXJTaG9ydFRpbWVvdXQo
V0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZik7CitXS19FWFBPUlQgdm9pZCBXS1ByZWZl
cmVuY2VzU2V0U2VydmljZVdvcmtlclNob3J0VGltZW91dChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmLCBib29sIGVuYWJsZWQpOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGll
bnRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q2xpZW50Q29ubmVjdGlvbi5jcHAKaW5kZXggOGUzM2RmYmU5NjcyYmRlN2MxNzM5YmQxODRiZTgx
ZWU3YTM0NjVkNi4uNmFmNmZmYjY4NzVjNDk5NjRkMGIxZGYzYTI3MGEyMzM4Y2FiZGY0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25u
ZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Ns
aWVudENvbm5lY3Rpb24uY3BwCkBAIC0yNDIsNiArMjQyLDExIEBAIHZvaWQgV2ViU1dDbGllbnRD
b25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlk
ZW50aWZpCiAgICAgc2VuZFN5bmMoTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6U3lu
Y1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQgeyBpZGVudGlmaWVyIH0sIE1lc3NhZ2VzOjpXZWJT
V1NlcnZlckNvbm5lY3Rpb246OlN5bmNUZXJtaW5hdGVXb3JrZXJGcm9tQ2xpZW50OjpSZXBseSgp
KTsKIH0KIAordm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OmlzU2VydmljZVdvcmtlclJ1bm5p
bmcoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJiBjYWxsYmFjaykKK3sKKyAgICBzZW5kV2l0aEFzeW5jUmVwbHkoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyQ29ubmVjdGlvbjo6SXNTZXJ2aWNlV29ya2VyUnVubmluZyB7IGlkZW50
aWZpZXIgfSwgV1RGTW92ZShjYWxsYmFjaykpOworfQorCiB2b2lkIFdlYlNXQ2xpZW50Q29ubmVj
dGlvbjo6dXBkYXRlVGhyb3R0bGVTdGF0ZSgpCiB7CiAgICAgbV9pc1Rocm90dGxlYWJsZSA9IFdl
YlByb2Nlc3M6OnNpbmdsZXRvbigpLmFyZUFsbFBhZ2VzVGhyb3R0bGVhYmxlKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rp
b24uaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVj
dGlvbi5oCmluZGV4IDQzOTkxMGY1NDYyODg2NzMxZDllZWRmY2FkZGMyNzgzZWYzZTg4ZmIuLjlk
YmZiYWJmNzY4M2VhOWFmYWZiMzMyMzQ4NTQ4N2YxZTUyZGM5ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5o
CkBAIC04NSw2ICs4NSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXREb2N1bWVudElzQ29udHJv
bGxlZChXZWJDb3JlOjpEb2N1bWVudElkZW50aWZpZXIsIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJS
ZWdpc3RyYXRpb25EYXRhJiYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpOwogCiAg
ICAgdm9pZCBnZXRSZWdpc3RyYXRpb25zKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYmIHRv
cE9yaWdpbiwgY29uc3QgVVJMJiBjbGllbnRVUkwsIEdldFJlZ2lzdHJhdGlvbnNDYWxsYmFjayYm
KSBmaW5hbDsKKyAgICB2b2lkIGlzU2VydmljZVdvcmtlclJ1bm5pbmcoV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYpIGZpbmFs
OwogCiAgICAgdm9pZCBkaWRSZXNvbHZlUmVnaXN0cmF0aW9uUHJvbWlzZShjb25zdCBXZWJDb3Jl
OjpTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uS2V5JikgZmluYWw7CiAgICAgdm9pZCBzdG9yZVJl
Z2lzdHJhdGlvbnNPbkRpc2tGb3JUZXN0aW5nKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJikg
ZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJT
V0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
U3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKaW5kZXggZWNmN2EzYmYx
YmZhODkzMzUxMWYwM2Y3MTM3MGU4NWJjNzI1MTY4ZC4uZTA3YmU0NDM5NjNkMjM0ZTgyODkzOGVi
ZWY3MGY3Y2YzNGEzZWNmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0
b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcApA
QCAtMTI2LDYgKzEyNiw3IEBAIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OnVw
ZGF0ZVByZWZlcmVuY2VzU3RvcmUoY29uc3QgV2ViUHJlZmVyZW5jZXNTCiAgICAgUnVudGltZUVu
YWJsZWRGZWF0dXJlczo6c2hhcmVkRmVhdHVyZXMoKS5zZXRTZWN1cmVDb250ZXh0Q2hlY2tzRW5h
YmxlZChzdG9yZS5nZXRCb29sVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnNlY3VyZUNv
bnRleHRDaGVja3NFbmFibGVkS2V5KCkpKTsKIAogICAgIG1fc3RvcmFnZUJsb2NraW5nUG9saWN5
ID0gc3RhdGljX2Nhc3Q8U2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9ja2luZ1BvbGljeT4oc3Rv
cmUuZ2V0VUludDMyVmFsdWVGb3JLZXkoV2ViUHJlZmVyZW5jZXNLZXk6OnN0b3JhZ2VCbG9ja2lu
Z1BvbGljeUtleSgpKSk7CisgICAgc2V0VXNlU2hvcnRUaW1lb3V0KHN0b3JlLmdldEJvb2xWYWx1
ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2VydmljZVdvcmtlclNob3J0VGltZW91dEtleSgp
KSk7CiB9CiAKIHZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246Omluc3RhbGxTZXJ2
aWNlV29ya2VyKGNvbnN0IFNlcnZpY2VXb3JrZXJDb250ZXh0RGF0YSYgZGF0YSwgU3RyaW5nJiYg
dXNlckFnZW50KQpAQCAtMzgwLDYgKzM4MSwxMSBAQCBib29sIFdlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uOjppc1Rocm90dGxlYWJsZSgpIGNvbnN0CiAgICAgcmV0dXJuIG1faXNUaHJvdHRs
ZWFibGU7CiB9CiAKK3ZvaWQgV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb246OmRpZEZhaWxI
ZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllciBzZXJ2aWNlV29ya2VySWRlbnRp
ZmllcikKK3sKKyAgICBtX2Nvbm5lY3Rpb25Ub05ldHdvcmtQcm9jZXNzLT5zZW5kKE1lc3NhZ2Vz
OjpXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OkRpZEZhaWxIZWFydEJlYXRDaGVjayB7
IHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIH0sIDApOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JLRVIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlv
bi5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb24uaAppbmRleCAyOTczNTFmMmI4NmI4MmQ4NDNhMGVlYWMxMTQwMTA2YzZlMjI2
YjQ5Li5lMDA1Y2QyNGM2NmZjMjgyYzlhY2Q5OWVkODcyMjI3YTk5OGQ4MzBlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29u
bmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29u
dGV4dE1hbmFnZXJDb25uZWN0aW9uLmgKQEAgLTc5LDYgKzc5LDcgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNraXBXYWl0aW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBGdW5jdGlv
bjx2b2lkKCk+JiYpIGZpbmFsOwogICAgIHZvaWQgc2V0U2NyaXB0UmVzb3VyY2UoV2ViQ29yZTo6
U2VydmljZVdvcmtlcklkZW50aWZpZXIsIGNvbnN0IFVSTCYsIGNvbnN0IFdlYkNvcmU6OlNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQmKSBmaW5hbDsKICAgICBib29sIGlz
VGhyb3R0bGVhYmxlKCkgY29uc3QgZmluYWw7CisgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hl
Y2soV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIpIGZpbmFsOwogCiAgICAgLy8gSVBD
IG1lc3NhZ2VzLgogICAgIHZvaWQgc2VydmljZVdvcmtlclN0YXJ0ZWQoT3B0aW9uYWw8V2ViQ29y
ZTo6U2VydmljZVdvcmtlckpvYkRhdGFJZGVudGlmaWVyPiwgV2ViQ29yZTo6U2VydmljZVdvcmtl
cklkZW50aWZpZXIsIGJvb2wgZG9lc0hhbmRsZUZldGNoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAyNDhmNDhmYjQyOWI1ZTlmY2Fi
MWY5NDI3ZmM1ZDE5NTI2Y2I2MzBjLi44NTdmNzczNzRjZTdmY2UxNTE5NDgzOTA0YmQ0ZTY2NjI0
MTY5ZjIyIDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTktMTItMDIgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBw
bGUuY29tPgorCisgICAgICAgIFNlcnZpY2UgV29ya2VyIGRvZXNuJ3QgdGVybWluYXRlIGFmdGVy
IGEgcGVyaW9kIG9mIHRpbWUgd2hlbiB0aHJlYWQgYmxvY2tpbmcKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMjk5MgorICAgICAgICA8cmRhcjovL3By
b2JsZW0vNTYyOTg1OTY+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBXZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdUUjo6VGVzdENvbnRyb2xsZXI6OnJlc2V0UHJlZmVyZW5jZXNUb0NvbnNpc3RlbnRWYWx1ZXMp
OgorICAgICAgICBFbmFibGUgc21hbGwgdGltZW91dCB2YWx1ZXMuCisKIDIwMTktMTEtMzAgIFJv
c3MgS2lyc2xpbmcgIDxyb3NzLmtpcnNsaW5nQHNvbnkuY29tPgogCiAgICAgICAgIHRlc3QyNjIt
cnVubmVyIHNob3VsZCBkdW1wIFlBTUwgd2l0aCBjb3JyZWN0IGVuY29kaW5nCmRpZmYgLS1naXQg
YS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBiL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGYyMWU4OWJlNzdmNjAxODYzZTEx
YWVhNzY1ZDYxNDg2OTFkY2UwOGUuLjk0NDQ3ZjVmZmQ3MjBiNzc5ZjhlOWIzNmVkYmY5ZTcwYjFm
ZTg1NTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIu
Y3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCkBAIC05
MjUsNiArOTI1LDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29u
c2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW8KICAgICBXS1ByZWZlcmVuY2Vz
U2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJlZmVyZW5jZXMsIGZhbHNlKTsK
ICAgICBXS1ByZWZlcmVuY2VzU2V0QXVkaW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJl
ZmVyZW5jZXMsIGZhbHNlKTsKIAorICAgIFdLUHJlZmVyZW5jZXNTZXRTZXJ2aWNlV29ya2VyU2hv
cnRUaW1lb3V0KHByZWZlcmVuY2VzLCB0cnVlKTsKKwogICAgIHBsYXRmb3JtUmVzZXRQcmVmZXJl
bmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwogfQogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOGVlYThhNjNlZTRjOTAyMDhi
YzU2M2RiYWU3ZjJlNjMyMTE0MjQ2NS4uN2IwYjIyOGU4MmQ3NGVlMWVhZjE0MTg0OWVhNWMzZmUy
ZWZiMWFjMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRl
c3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5LTEyLTAyICB5b3Vlbm4gZmFibGV0
ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBkb2Vzbid0IHRl
cm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2NraW5nCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5OTIKKyAgICAg
ICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNl
cy9yb3V0aW5lcy5qczoKKyAgICAgICAgKGFzeW5jLndhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25n
ZXJSdW5uaW5nKToKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0
aXZhdGUuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLWZldGNoLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAgICAqIGh0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLWV4cGVjdGVk
LnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0
cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtl
cnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy5odG1sOiBBZGRlZC4KKyAg
ICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
d29ya2VyLmpzOiBBZGRlZC4KKwogMjAxOS0xMS0zMCAgeW91ZW5uIGZhYmxldCAgPHlvdWVubkBh
cHBsZS5jb20+CiAKICAgICAgICAgVXBkYXRlIFJlYWx0aW1lT3V0Z29pbmdBdWRpb1NvdXJjZUNv
Y29hOjptX3dyaXRlQ291bnQgd2hlbiBzYW1wbGVSYXRlIGNoYW5nZXMKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVz
LmpzCmluZGV4IGRmMjM5MjU1ODQyMjIwNmZhZDYxN2E1ZWVjN2NjNTk2ZWQ0YjQxNTIuLmM2ZGI4
MmNiZTZmZmM1NWQxMDUyNDk1NWEwYTFhOTY0MzI1OTFhNWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKKysrIGIv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5q
cwpAQCAtMjcsMyArMjcsMTcgQEAgZnVuY3Rpb24gd2FpdEZvclN0YXRlKHdvcmtlciwgc3RhdGUp
CiAgICAgICAgIH0pOwogICAgIH0pOwogfQorCithc3luYyBmdW5jdGlvbiB3YWl0Rm9yU2Vydmlj
ZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpCit7CisgICAgaWYgKCF3aW5kb3cuaW50ZXJu
YWxzKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoInJlcXVpcmVzIGludGVybmFscyIp
OworCisgICAgbGV0IGNvdW50ID0gMTAwOworICAgIHdoaWxlICgtLWNvdW50ID4gMCAmJiBhd2Fp
dCBpbnRlcm5hbHMuaXNTZXJ2aWNlV29ya2VyUnVubmluZyh3b3JrZXIpKSB7CisgICAgICAgIHdv
cmtlci5wb3N0TWVzc2FnZSgidGVzdCIpOworICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZShyZXNv
bHZlID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgNTApKTsKKyAgICB9CisgICAgaWYgKGNvdW50ID09
PSAwKQorICAgICAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QoInNlcnZpY2Ugd29ya2VyIGlzIHN0
aWxsIHJ1bm5pbmciKTsKK30KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZp
Y2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA1ODBh
OWNmM2Q5MjJmM2JmNWIyNjAwNDYzMjBhNTA2NTYzZGE4MTkKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5p
bmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFNw
aW4gaW4gYWN0aXZhdGUgCitQQVNTIFNwaW4gYWZ0ZXIgYWN0aXZhdGUgCisKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1hY3RpdmF0ZS5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0dHBzLmh0bWwKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uZmU3N2M0YmU5ZDIyOGQ3YjUwMGMxNmE5ZWQ3NTczYTcwZmYzMDk2MgotLS0gL2Rldi9u
dWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdv
cmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy5odG1sCkBAIC0wLDAgKzEsMjggQEAKKzxodG1s
PgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAg
IGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lz
dGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4t
YWN0aXZhdGUiIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5n
OworCisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0
aXZhdGluZyIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5u
aW5nKHdvcmtlcik7Cit9LCAiU3BpbiBpbiBhY3RpdmF0ZSIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpz
IiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLWFjdGl2YXRlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIg
PSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZSh3b3Jr
ZXIsICJhY3RpdmF0ZWQiKTsKKworICAgIHJldHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9u
Z2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4gYWZ0ZXIgYWN0aXZhdGUiKTsKKzwvc2NyaXB0
PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtl
ci1zcGlubmluZy1mZXRjaC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAzOWYwMjFi
NjdiMWIyZDY5ZTYyZDMyOTA1MjRmNGMzMzUwYzFkNAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1m
ZXRjaC5odHRwcy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSw1IEBACisKKworUEFTUyBTcGluIGlu
IGZldGNoIAorUEFTUyBTcGluIGFmdGVyIGZldGNoIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0Y2gu
aHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNl
LXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdiNTIzZWM1YzVj
NmQ5MjIwZWIxOWNmNzM4N2JiMzkxZGU1MDVmYWYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctZmV0
Y2guaHR0cHMuaHRtbApAQCAtMCwwICsxLDMyIEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii9y
ZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJl
c291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQ+
Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24g
PSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXIt
c3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWZldGNoIiB9KTsKKyAgICBjb25z
dCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JT
dGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgd2l0aElm
cmFtZSgic3Bpbi1mZXRjaCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9M
b25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBpbiBmZXRjaCIpOworCitwcm9taXNlX3Rl
c3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZp
Z2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29y
a2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLWZldGNoIiB9KTsKKyAgICBjb25zdCB3b3Jr
ZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShy
ZWdpc3RyYXRpb24uaW5zdGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgd2l0aElmcmFtZSgi
c3Bpbi1hZnRlci1mZXRjaCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9M
b25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRlciBmZXRjaCIpOworPC9zY3JpcHQ+
Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2
aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctaW5zdGFsbC5odHRwcy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctaW5zdGFsbC5odHRwcy1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzhjMTgy
Yzg0YTIxZDA3YmZmZjFkMzQzZjhlZjk3OTQwOGI2YjUxOQotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy1pbnN0YWxsLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDUgQEAKKworUEFTUyBTcGlu
IGF0IHJ1bm5pbmcgIAorUEFTUyBTcGluIGluIGluc3RhbGwgCitQQVNTIFNwaW4gYWZ0ZXIgaW5z
dGFsbCAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxs
Lmh0dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZWVmYzY3NjgwNTQyM2NkYzY1ZjM0MDRjNGI2YjE5ZmNk
ZjJiNzEwYgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLmh0bWwKQEAgLTAs
MCArMSwyNSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3Ro
YXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNz
cmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMi
Pjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5j
ICh0ZXN0KSA9PiB7CisgICAgcmV0dXJuIHByb21pc2VfcmVqZWN0cyh0ZXN0LCBuZXcgVHlwZUVy
cm9yLCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bp
bm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLXJ1biIgfSkpOworfSwgIlNwaW4gYXQg
cnVubmluZyAiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3Qg
cmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1pbnN0YWxs
IiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFsbGluZzsKKyAgICBh
d2FpdCB3YWl0Rm9yU3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJyZWR1bmRhbnQiKTsK
K30sICJTcGluIGluIGluc3RhbGwiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7
CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIu
cmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAi
c3Bpbi1hZnRlci1pbnN0YWxsIiB9KTsKKyAgICByZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJO
b0xvbmdlclJ1bm5pbmcocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcpOworfSwgIlNwaW4gYWZ0ZXIg
aW5zdGFsbCIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
bWVzc2FnZS5odHRwcy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRwcy1leHBlY3RlZC50
eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uOTFhNDU1ODFiNDk2ZDJjZDZhYmM3ZjIxMDg0YTA5NTM5MzFlMTcyNQot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDQgQEAKKworUEFTUyBTcGluIGluIG1lc3NhZ2UgCitQQVNTIFNwaW4gYWZ0ZXIgbWVzc2Fn
ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbCBiL0xheW91dFRlc3RzL2h0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0
dHBzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uN2I4ZDU4OTk1NDM5MzNjMjk0NTM2ZmIwNjBkNzBmNzcyOTFm
NGE3OQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLmh0bWwKQEAgLTAsMCAr
MSwyOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJu
ZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rlc3RoYXJuZXNzcmVw
b3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91dGluZXMuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90ZXN0KGFzeW5jICh0
ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZp
Y2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsg
c2NvcGUgOiAic3Bpbi1tZXNzYWdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRp
b24uaW5zdGFsbGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5z
dGFsbGluZywgImFjdGl2YXRlZCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2Vy
Tm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBpbiBtZXNzYWdlIik7CisKK3Byb21p
c2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0
IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0ZXItbWVzc2FnZSIgfSk7CisgICAgY29u
c3Qgd29ya2VyID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9y
U3RhdGUocmVnaXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0ZWQiKTsKKworICAgIHJldHVy
biB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyh3b3JrZXIpOworfSwgIlNwaW4g
YWZ0ZXIgbWVzc2FnZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctd29ya2VyLmpzIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Nl
cnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41ZWY4Mzc5MWI3OTdl
YjgxZWMwMjQzYTgxNzMxNzgzOGIyNDJlYmY0Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtl
ci5qcwpAQCAtMCwwICsxLDQxIEBACitpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVk
ZXMoInNwaW4tcnVuIikpCisgICAgd2hpbGUodHJ1ZSkgeyB9OworCitmdW5jdGlvbiBpbnN0YWxs
VGVzdChldmVudCkKK3sKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMo
InNwaW4taW5zdGFsbCIpKQorICAgICAgICB3aGlsZSh0cnVlKSB7IH07CisgICAgaWYgKHNlbGYu
cmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFmdGVyLWluc3RhbGwiKSkKKyAgICAg
ICAgc2VsZi5zZXRUaW1lb3V0KCgpID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKK30KKwor
ZnVuY3Rpb24gYWN0aXZhdGVUZXN0KGV2ZW50KQoreworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlv
bi5zY29wZS5pbmNsdWRlcygic3Bpbi1hY3RpdmF0ZSIpKQorICAgICAgICB3aGlsZSh0cnVlKSB7
IH07CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFmdGVy
LWFjdGl2YXRlIikpCisgICAgICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUp
IHsgfTsgfSwgMCk7Cit9CisKK2Z1bmN0aW9uIG1lc3NhZ2VUZXN0KGV2ZW50KQoreworICAgIGlm
IChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1tZXNzYWdlIikpCisgICAg
ICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5j
bHVkZXMoInNwaW4tYWZ0ZXItbWVzc2FnZSIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkg
PT4geyB3aGlsZSh0cnVlKSB7IH07IH0sIDApOworfQorCitmdW5jdGlvbiBmZXRjaFRlc3QoZXZl
bnQpCit7CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWZl
dGNoIikpCisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRp
b24uc2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItZmV0Y2giKSkKKyAgICAgICAgc2VsZi5zZXRU
aW1lb3V0KCgpID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKKyAgICBldmVudC5yZXNwb25k
V2l0aChuZXcgUmVzcG9uc2UoIm9rIikpOworfQorCisKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigi
aW5zdGFsbCIsIGluc3RhbGxUZXN0KTsKK3NlbGYuYWRkRXZlbnRMaXN0ZW5lcigiYWN0aXZhdGUi
LCBhY3RpdmF0ZVRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJtZXNzYWdlIiwgbWVzc2Fn
ZVRlc3QpOworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJmZXRjaCIsIGZldGNoVGVzdCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>386386</attachid>
            <date>2019-12-24 03:27:30 -0800</date>
            <delta_ts>2019-12-24 06:19:53 -0800</delta_ts>
            <desc>Rebasing</desc>
            <filename>bug-202992-20191224122726.patch</filename>
            <type>text/plain</type>
            <size>55824</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUzODk3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc4MmQ4MzQwMmI0OTZl
ZjNhZDk0ZGYyZGE1ZTZlYzk3ZTcwYjllMy4uZTUyNzY0MTMwZWQ5MzgyNmI3M2Q3MzE0N2RmMTIy
NmJkNTRjNmRjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY0IEBACisyMDE5LTEyLTI0ICB5b3Vl
bm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2aWNlIFdvcmtlciBk
b2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4gdGhyZWFkIGJsb2Nr
aW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDI5
OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFdoZW5ldmVyIHJ1bm5pbmcgYSBzZXJ2aWNlIHdv
cmtlciB0YXNrLCBydW5uaW5nIHNjcmlwdCBvciBwb3N0aW5nIGV2ZW50cyAoaW5zdGFsbCwgYWN0
aXZhdGUsIG1lc3NhZ2UgYW5kIGZldGNoKSwKKyAgICAgICAgc3RhcnQgYSB0aW1lciB0byBjaGVj
ayB0aGF0IHRoZSBzZXJ2aWNlIHdvcmtlciBpcyBub3Qgc3Bpbm5pbmcuCisgICAgICAgIFRoaXMg
aXMgZG9uZSBieSBwb3N0aW5nIGEgdGFzayB0byBzZXJ2aWNlIHdvcmtlciB0aHJlYWQgYW5kIGhv
cHBpbmcgYmFjayB0byB0aGUgbWFpbiB0aHJlYWQuCisgICAgICAgIElmIHRoaXMgcG9zdC9ob3Ag
aXMgZG9uZSBiZWZvcmUgdGhlIGhlYXJ0YmVhdCB0aW1lciBpcyBmaXJlZCwgdGhlIHNlcnZpY2Ug
d29ya2VyIGlzIGNvbnNpZGVyZWQgbGl2ZS4KKyAgICAgICAgT3RoZXJ3aXNlLCB0aGUgY2hlY2sg
aXMgZmFpbGVkIGFuZCB0aGUgdGFzayBpcyBjb25zaWRlcmVkIGFzIGZhaWxpbmcuCisgICAgICAg
IFRoZSBzZXJ2aWNlIHdvcmtlciB3aWxsIGJlIHRlcm1pbmF0ZWQuCisgICAgICAgIFRpbWVvdXQg
aXMgNjAgc2Vjb25kcyBieSBkZWZhdWx0IGFuZCAxIHNlY29uZCBmb3IgdGVzdCBwdXJwb3Nlcy4K
KworICAgICAgICBBZGQgc2V0dGluZ3MgdG8gaGF2ZSBzaG9ydCBoZWFydGJlYXQgdGltZW91dCBm
b3IgdGVzdGluZyBwdXJwb3Nlcy4KKyAgICAgICAgQWRkIGludGVybmFscyBBUEkgdG8gY2hlY2sg
d2hldGhlciBhIHNlcnZpY2Ugd29ya2VyIGlzIHJ1bm5pbmcuCisKKyAgICAgICAgVGVzdHM6IGh0
dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5o
dHRwcy5odG1sCisgICAgICAgICAgICAgICBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctZmV0Y2guaHR0cHMuaHRtbAorICAgICAgICAgICAgICAgaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMu
aHRtbAorICAgICAgICAgICAgICAgaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29y
a2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbAorCisgICAgICAgICogcGFnZS9TZXR0aW5n
cy55YW1sOgorICAgICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkludGVybmFsczo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyk6CisgICAgICAgICogdGVzdGlu
Zy9JbnRlcm5hbHMuaDoKKyAgICAgICAgKiB0ZXN0aW5nL0ludGVybmFscy5pZGw6CisgICAgICAg
ICogd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29ubmVjdGlvbi5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1dDbGllbnRDb25uZWN0aW9uOjppc1NlcnZpY2VXb3JrZXJSdW5uaW5nKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmg6CisgICAgICAgIChX
ZWJDb3JlOjpTV0NvbnRleHRNYW5hZ2VyOjpDb25uZWN0aW9uOjppc1Rlc3RNb2RlIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlNXQ29udGV4dE1hbmFnZXI6OkNvbm5lY3Rpb246OnNldElzVGVz
dE1vZGUpOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJU
aHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6U2Vydmlj
ZVdvcmtlclRocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpw
b3N0RmV0Y2hUYXNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnBv
c3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OmZpcmVJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdv
cmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmlyZUFjdGl2YXRlRXZlbnQpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OmZpbmlzaGVkRXZhbHVhdGlu
Z1NjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZFN0YXJ0aW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJUaHJlYWQ6OnN0YXJ0RmV0Y2hFdmVu
dE1vbml0b3JpbmcpOgorICAgICAgICAoV2ViQ29yZTo6U2VydmljZVdvcmtlclRocmVhZDo6c3Rh
cnRIZWFydEJlYXRUaW1lcik6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFk
OjpoZWFydEJlYXRUaW1lckZpcmVkKToKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2UvY29udGV4
dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJ2aWNlV29ya2Vy
VGhyZWFkOjpzdG9wRmV0Y2hFdmVudE1vbml0b3JpbmcpOgorICAgICAgICAqIHdvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnN0YXJ0RmV0Y2gpOgorICAgICAgICAoV2Vi
Q29yZTo6U2VydmljZVdvcmtlclRocmVhZFByb3h5OjpjYW5jZWxGZXRjaCk6CisgICAgICAgIChX
ZWJDb3JlOjpTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnJlbW92ZUZldGNoKToKKyAgICAgICAg
KiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb246OmRpZEZhaWxI
ZWFydEJlYXRDaGVjayk6CisgICAgICAgICogd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaDoKKyAgICAgICAgKiB3b3JrZXJzL3NlcnZpY2Uvc2VydmVy
L1NXU2VydmVyV29ya2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNXU2VydmVyV29ya2VyOjpk
aWRGYWlsSGVhcnRCZWF0Q2hlY2spOgorICAgICAgICAqIHdvcmtlcnMvc2VydmljZS9zZXJ2ZXIv
U1dTZXJ2ZXJXb3JrZXIuaDoKKwogMjAxOS0xMi0yMyAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJh
c2VyQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjUzNjM0KTogUmVwcm9kdWNp
YmxlIGNyYXNoIGdvaW5nIGJhY2sgYW5kIGZvcndhcmQgb24gZ29vZHJlYWRzLmNvbSBpbiBQYWdl
OjpzZXRQYWdlU2NhbGVGYWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggNzdjNDZkN2Y0ZjlkOGM1ODI3OTNlODZk
OWEwMGM3NDg1NTBhZDgwMC4uMDljMDQwYmViMjlmYjk1YjZhN2RmYmQzYTE3MThiODZmM2NhM2Vj
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktp
dC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNSBAQAorMjAxOS0xMi0yNCAgeW91ZW5uIGZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgZG9lc24ndCB0ZXJt
aW5hdGUgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZSB3aGVuIHRocmVhZCBibG9ja2luZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyOTkyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NjI5ODU5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBE
dW1lei4KKworICAgICAgICBBZGQgYSBwcmVmZXJlbmNlIHRvIGVuYWJsZS9kaXNhYmxlIHNlcnZp
Y2Ugd29ya2VyIHNob3J0IHRpbWVvdXRzLgorICAgICAgICBBZGQgSVBDIGhhbmRsaW5nIGZvciBw
YXNzaW5nIHNlcnZpY2Ugd29ya2VyIGhlYXJ0IGJlYXQgZmFpbHVyZXMgYW5kIHRvIGdldCBmcm9t
IFdlYlByb2Nlc3MKKyAgICAgICAgd2hldGhlciBhIGdpdmVuIHNlcnZpY2Ugd29ya2VyIGlzIHJ1
bm5pbmcgb3Igbm90LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9X
ZWJTV1NlcnZlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNv
bm5lY3Rpb246OmNvbnRleHRDb25uZWN0aW9uQ3JlYXRlZCk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXU2VydmVyQ29ubmVjdGlvbjo6c3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJTV1NlcnZlckNvbm5lY3Rpb246OmlzU2VydmljZVdvcmtlclJ1bm5p
bmcpOgorICAgICAgICAqIE5ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJD
b25uZWN0aW9uLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJT
V1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW46CisgICAgICAgICogTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW46
CisgICAgICAgICogU2hhcmVkL1dlYlByZWZlcmVuY2VzLnlhbWw6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3BwOgorICAgICAgICAoV0tQcmVmZXJlbmNlc0dldFNl
cnZpY2VXb3JrZXJUZXN0TW9kZSk6CisgICAgICAgIChXS1ByZWZlcmVuY2VzU2V0U2VydmljZVdv
cmtlclRlc3RNb2RlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1Jl
Zi5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NsaWVudENvbm5lY3Rpb246OmlzU2VydmljZVdv
cmtlclJ1bm5pbmcpOgorICAgICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENv
bm5lY3Rpb24uaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFu
YWdlckNvbm5lY3Rpb24uY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTV0NvbnRleHRNYW5hZ2Vy
Q29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5jZXNTdG9yZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlNXQ29udGV4dE1hbmFnZXJDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2spOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5o
OgorCiAyMDE5LTEyLTIzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAg
ICAgICAgIHdhdGNoT1MgYnVpbGQgZml4IGF0dGVtcHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvU2V0dGluZ3MueWFtbCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MueWFt
bAppbmRleCAzYmUyZWY3YWIxNDgxMTU1YWIzZTJiODBiYWM2NjY1NzM5MWE3ZmM3Li42ZDU5YzI5
ZDVmZTA0MjE4ZWE4NTM5OTBjM2M2YjdkYTVkYjhkYmQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1NldHRpbmdzLnlhbWwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9TZXR0aW5n
cy55YW1sCkBAIC05MjgsMyArOTI4LDYgQEAgbWVkaWFDYXB0dXJlUmVxdWlyZXNTZWN1cmVDb25u
ZWN0aW9uOgogICBpbml0aWFsOiB0cnVlCiAgIGNvbmRpdGlvbmFsOiBNRURJQV9TVFJFQU0KICAg
aW5zcGVjdG9yT3ZlcnJpZGU6IHRydWUKKworc2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGlt
ZW91dDoKKyAgaW5pdGlhbDogZmFsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Rlc3Rp
bmcvSW50ZXJuYWxzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcApp
bmRleCBlNWQ1MTM5MzlhM2M5NjE1ZmI0ZGM2NTVhM2Y3MzFkNjdkMGJkZThjLi5mMjI4MzdjOGVl
Y2MyYjE3OWM3YWI4OTZjMjhhZWU4ODM1NzU5ZDQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRl
cm5hbHMuY3BwCkBAIC01MDcwLDYgKzUwNzAsMTMgQEAgdm9pZCBJbnRlcm5hbHM6OnRlcm1pbmF0
ZVNlcnZpY2VXb3JrZXIoU2VydmljZVdvcmtlciYgd29ya2VyKQogCiAgICAgU2VydmljZVdvcmtl
clByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpLnN5bmNUZXJt
aW5hdGVXb3JrZXIod29ya2VyLmlkZW50aWZpZXIoKSk7CiB9CisKK3ZvaWQgSW50ZXJuYWxzOjpp
c1NlcnZpY2VXb3JrZXJSdW5uaW5nKFNlcnZpY2VXb3JrZXImIHdvcmtlciwgRE9NUHJvbWlzZURl
ZmVycmVkPElETEJvb2xlYW4+JiYgcHJvbWlzZSkKK3sKKyAgICByZXR1cm4gU2VydmljZVdvcmtl
clByb3ZpZGVyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyQ29ubmVjdGlvbigpLmlzU2Vydmlj
ZVdvcmtlclJ1bm5pbmcod29ya2VyLmlkZW50aWZpZXIoKSwgW3Byb21pc2UgPSBXVEZNb3ZlKHBy
b21pc2UpXShib29sIHJlc3VsdCkgbXV0YWJsZSB7CisgICAgICAgIHByb21pc2UucmVzb2x2ZShy
ZXN1bHQpOworICAgIH0pOworfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQVBQTEVfUEFZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaCBiL1NvdXJjZS9XZWJD
b3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmgKaW5kZXggZDRiMjY1NzIzZWMzN2MzMTMzNDg3ZGM5MjRj
NTM5NmE1ZDZiOTVmMS4uZmU0YTg1NjIzMWM5NjYyNzRhNTNlNjRkMTNjYWUzMDA0M2IxN2EwOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5oCkBAIC03NjgsNiArNzY4LDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIEhhc1JlZ2lzdHJhdGlvblByb21pc2UgPSBET01Qcm9taXNlRGVmZXJyZWQ8
SURMQm9vbGVhbj47CiAgICAgdm9pZCBoYXNTZXJ2aWNlV29ya2VyUmVnaXN0cmF0aW9uKGNvbnN0
IFN0cmluZyYgY2xpZW50VVJMLCBIYXNSZWdpc3RyYXRpb25Qcm9taXNlJiYpOwogICAgIHZvaWQg
dGVybWluYXRlU2VydmljZVdvcmtlcihTZXJ2aWNlV29ya2VyJik7CisgICAgdm9pZCBpc1NlcnZp
Y2VXb3JrZXJSdW5uaW5nKFNlcnZpY2VXb3JrZXImLCBET01Qcm9taXNlRGVmZXJyZWQ8SURMQm9v
bGVhbj4mJik7CiAjZW5kaWYKIAogI2lmIEVOQUJMRShBUFBMRV9QQVkpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFscy5pZGwgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0
aW5nL0ludGVybmFscy5pZGwKaW5kZXggYWZmNzZmZmFjZGJiYzc4YjM4MmU5MzIxZGU0NjBjZTU1
ODYyNWVjYy4uZjc1OWNjOWM2OTExMDJhMDdiYjJiNzA1YWU0MGE0MTA5NDExNzU5MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuaWRsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmlkbApAQCAtNzU2LDYgKzc1Niw3IEBAIGVudW0gQ29t
cG9zaXRpbmdQb2xpY3kgewogCiAgICAgW0NvbmRpdGlvbmFsPVNFUlZJQ0VfV09SS0VSXSBQcm9t
aXNlPGJvb2xlYW4+IGhhc1NlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb24oRE9NU3RyaW5nIHNjb3Bl
VVJMKTsKICAgICBbQ29uZGl0aW9uYWw9U0VSVklDRV9XT1JLRVJdIHZvaWQgdGVybWluYXRlU2Vy
dmljZVdvcmtlcihTZXJ2aWNlV29ya2VyIHdvcmtlcik7CisgICAgW0NvbmRpdGlvbmFsPVNFUlZJ
Q0VfV09SS0VSXSBQcm9taXNlPGJvb2xlYW4+IGlzU2VydmljZVdvcmtlclJ1bm5pbmcoU2Vydmlj
ZVdvcmtlciB3b3JrZXIpOwogCiAgICAgW0NhbGxXaXRoPURvY3VtZW50LCBDb25kaXRpb25hbD1B
UFBMRV9QQVldIHJlYWRvbmx5IGF0dHJpYnV0ZSBNb2NrUGF5bWVudENvb3JkaW5hdG9yIG1vY2tQ
YXltZW50Q29vcmRpbmF0b3I7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9TV0NsaWVudENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9TV0NsaWVudENvbm5lY3Rpb24uaAppbmRleCAyZTljZWQ0NWJjYzFmOWY5NDVjYjQ0MWY3
MzI4ZWE5MDZhODk3ZGM4Li5kOTIyY2Y3ZGMxOTA0OTE3ZGQ3MmRmYTU3NWM1YWU4Zjg1ZTRlMjU0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvU1dDbGllbnRDb25u
ZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL1NXQ2xpZW50Q29u
bmVjdGlvbi5oCkBAIC04NSw2ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlu
aXNoRmV0Y2hpbmdTY3JpcHRJblNlcnZlcihjb25zdCBTZXJ2aWNlV29ya2VyRmV0Y2hSZXN1bHQm
KSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgc3RvcmVSZWdpc3RyYXRpb25zT25EaXNrRm9yVGVz
dGluZyhDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYgY2FsbGJhY2spIHsgY2FsbGJhY2soKTsg
fQorICAgIHZpcnR1YWwgdm9pZCBpc1NlcnZpY2VXb3JrZXJSdW5uaW5nKFNlcnZpY2VXb3JrZXJJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKSB7IGNh
bGxiYWNrKGZhbHNlKTsgfQogCiBwcm90ZWN0ZWQ6CiAgICAgV0VCQ09SRV9FWFBPUlQgU1dDbGll
bnRDb25uZWN0aW9uKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZp
Y2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCmluZGV4IGEzODVkYWE4OWRkYzYz
YTBkNzZmYzY1MDNjODViMjFlNjA4NDE3NzkuLmRkNWYzNzhhYTczZDQ3ZjU3ODU4OWYxNDViNzZm
YjgxMjhhODhmZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9j
b250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
c2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuY3BwCkBAIC04Nyw5ICs4Nyw3IEBAIHZv
aWQgU1dDb250ZXh0TWFuYWdlcjo6cG9zdE1lc3NhZ2VUb1NlcnZpY2VXb3JrZXIoU2VydmljZVdv
cmtlcklkZW50aWZpZXIgZGVzdGluCiAgICAgQVNTRVJUKCFzZXJ2aWNlV29ya2VyLT5pc1Rlcm1p
bmF0aW5nT3JUZXJtaW5hdGVkKCkpOwogCiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBwYXNzIHZh
bGlkIE1lc3NhZ2VQb3J0Q2hhbm5lbHMuCi0gICAgc2VydmljZVdvcmtlci0+dGhyZWFkKCkucnVu
TG9vcCgpLnBvc3RUYXNrKFtzZXJ2aWNlV29ya2VyID0gbWFrZVJlZigqc2VydmljZVdvcmtlciks
IG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3VyY2VEYXRhID0gV1RGTW92ZShzb3VyY2VE
YXRhKV0oYXV0byYpIG11dGFibGUgewotICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5x
dWV1ZVRhc2tUb1Bvc3RNZXNzYWdlKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoc291cmNlRGF0
YSkpOwotICAgIH0pOworICAgIHNlcnZpY2VXb3JrZXItPnBvc3RNZXNzYWdlVG9TZXJ2aWNlV29y
a2VyKFdURk1vdmUobWVzc2FnZSksIFdURk1vdmUoc291cmNlRGF0YSkpOwogfQogCiB2b2lkIFNX
Q29udGV4dE1hbmFnZXI6OmZpcmVJbnN0YWxsRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIg
aWRlbnRpZmllcikKQEAgLTk4LDkgKzk2LDcgQEAgdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjpmaXJl
SW5zdGFsbEV2ZW50KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgaWYg
KCFzZXJ2aWNlV29ya2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2aWNlV29ya2VyLT50
aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW3NlcnZpY2VXb3JrZXIgPSBtYWtlUmVmKCpzZXJ2
aWNlV29ya2VyKV0oYXV0byYpIG11dGFibGUgewotICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJl
YWQoKS5xdWV1ZVRhc2tUb0ZpcmVJbnN0YWxsRXZlbnQoKTsKLSAgICB9KTsKKyAgICBzZXJ2aWNl
V29ya2VyLT5maXJlSW5zdGFsbEV2ZW50KCk7CiB9CiAKIHZvaWQgU1dDb250ZXh0TWFuYWdlcjo6
ZmlyZUFjdGl2YXRlRXZlbnQoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKQEAg
LTEwOSw5ICsxMDUsNyBAQCB2b2lkIFNXQ29udGV4dE1hbmFnZXI6OmZpcmVBY3RpdmF0ZUV2ZW50
KFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIpCiAgICAgaWYgKCFzZXJ2aWNlV29y
a2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5ydW5M
b29wKCkucG9zdFRhc2soW3NlcnZpY2VXb3JrZXIgPSBtYWtlUmVmKCpzZXJ2aWNlV29ya2VyKV0o
YXV0byYpIG11dGFibGUgewotICAgICAgICBzZXJ2aWNlV29ya2VyLT50aHJlYWQoKS5xdWV1ZVRh
c2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7Ci0gICAgfSk7CisgICAgc2VydmljZVdvcmtlci0+Zmly
ZUFjdGl2YXRlRXZlbnQoKTsKIH0KIAogdm9pZCBTV0NvbnRleHRNYW5hZ2VyOjp0ZXJtaW5hdGVX
b3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllciwgU2Vjb25kcyB0aW1lb3V0
LCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRsZXIpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmggYi9T
b3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TV0NvbnRleHRNYW5hZ2VyLmgK
aW5kZXggZjc3OGUyMzU5YzA0N2M5MjMwZjFkYjBjNWZlZWI5MzYxYjM2ZDZiYS4uOGI0OTllNzJi
Nzg4OWZiMzliM2E0YWUxM2M2NThhZTBmMzdiMGFjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU1dDb250ZXh0TWFuYWdlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NXQ29udGV4dE1hbmFnZXIuaApAQCAt
NjQsMTUgKzY0LDIwIEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB2b2lkIG1hdGNoQWxsKFNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25zdCBTZXJ2aWNlV29ya2VyQ2xpZW50UXVlcnlPcHRp
b25zJiwgU2VydmljZVdvcmtlckNsaWVudHNNYXRjaEFsbENhbGxiYWNrJiYpID0gMDsKICAgICAg
ICAgdmlydHVhbCB2b2lkIGNsYWltKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKCk+JiYpID0gMDsKIAorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbEhl
YXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyKSA9IDA7CisKICAgICAgICAgdmly
dHVhbCBib29sIGlzVGhyb3R0bGVhYmxlKCkgY29uc3QgPSAwOwogCiAgICAgICAgIGJvb2wgaXND
bG9zZWQoKSBjb25zdCB7IHJldHVybiBtX2lzQ2xvc2VkOyB9CisgICAgICAgIGJvb2wgc2hvdWxk
VXNlU2hvcnRUaW1lb3V0KCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRVc2VTaG9ydFRpbWVvdXQ7
IH0KIAogICAgIHByb3RlY3RlZDoKICAgICAgICAgdm9pZCBzZXRBc0Nsb3NlZCgpIHsgbV9pc0Ns
b3NlZCA9IHRydWU7IH0KKyAgICAgICAgdm9pZCBzZXRTaG91bGRVc2VTaG9ydFRpbWVvdXQoYm9v
bCB2YWx1ZSkgeyBtX3Nob3VsZFVzZVNob3J0VGltZW91dCA9IHZhbHVlOyB9CiAKICAgICBwcml2
YXRlOgogICAgICAgICBib29sIG1faXNDbG9zZWQgeyBmYWxzZSB9OworICAgICAgICBib29sIG1f
c2hvdWxkVXNlU2hvcnRUaW1lb3V0IHsgZmFsc2UgfTsKICAgICB9OwogCiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBzZXRDb25uZWN0aW9uKHN0ZDo6dW5pcXVlX3B0cjxDb25uZWN0aW9uPiYmKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZp
Y2VXb3JrZXJUaHJlYWQuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRl
eHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKaW5kZXggZTk4ZTcxZjI3ZGRmNjYwNThiMGE2OThi
ZDU4NTMzOTNiZDM0MTdjNy4uM2JmNzEzOWZmMTY3MDhhNGFkMjY0M2FlMGIyZTE4YjJkZWQzNzY4
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNl
L2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5jcHAKQEAgLTc2LDYgKzc2LDggQEAgU2Vydmlj
ZVdvcmtlclRocmVhZDo6U2VydmljZVdvcmtlclRocmVhZChjb25zdCBTZXJ2aWNlV29ya2VyQ29u
dGV4dERhdGEmIGRhdGEsIFMKICAgICA6IFdvcmtlclRocmVhZChkYXRhLnNjcmlwdFVSTCwgZW1w
dHlTdHJpbmcoKSwgInNlcnZpY2V3b3JrZXI6IiArIEluc3BlY3Rvcjo6SWRlbnRpZmllcnNGYWN0
b3J5OjpjcmVhdGVJZGVudGlmaWVyKCksIFdURk1vdmUodXNlckFnZW50KSwgcGxhdGZvcm1TdHJh
dGVnaWVzKCktPmxvYWRlclN0cmF0ZWd5KCktPmlzT25MaW5lKCksIGRhdGEuc2NyaXB0LCBsb2Fk
ZXJQcm94eSwgZGVidWdnZXJQcm94eSwgRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNo
YXJlZCgpLCBXb3JrZXJUaHJlYWRTdGFydE1vZGU6Ok5vcm1hbCwgZGF0YS5jb250ZW50U2VjdXJp
dHlQb2xpY3ksIGZhbHNlLCBkYXRhLnJlZ2lzdHJhdGlvbi5rZXkudG9wT3JpZ2luKCkuc2VjdXJp
dHlPcmlnaW4oKS5nZXQoKSwgTW9ub3RvbmljVGltZTo6bm93KCksIGlkYkNvbm5lY3Rpb25Qcm94
eSwgc29ja2V0UHJvdmlkZXIsIEpTQzo6UnVudGltZUZsYWdzOjpjcmVhdGVBbGxFbmFibGVkKCkp
CiAgICAgLCBtX2RhdGEoZGF0YS5pc29sYXRlZENvcHkoKSkKICAgICAsIG1fd29ya2VyT2JqZWN0
UHJveHkoRHVtbXlTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OnNoYXJlZCgpKQorICAgICwgbV9o
ZWFydEJlYXRUaW1lb3V0KFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24o
KS0+c2hvdWxkVXNlU2hvcnRUaW1lb3V0KCkgPyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCA6IGhl
YXJ0QmVhdFRpbWVvdXQpCisgICAgLCBtX2hlYXJ0QmVhdFRpbWVyIHsgKnRoaXMsICZTZXJ2aWNl
V29ya2VyVGhyZWFkOjpoZWFydEJlYXRUaW1lckZpcmVkIH0KIHsKICAgICBBdG9tU3RyaW5nOjpp
bml0KCk7CiB9CkBAIC0xMTQsNyArMTE2LDcgQEAgc3RhdGljIHZvaWQgZmlyZU1lc3NhZ2VFdmVu
dChTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlLCBNZXNzYWdlV2l0aE1lc3NhZ2UKIHZv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3Vy
Y2VEYXRhKQogewogICAgIGF1dG8gc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gbWFrZVJlZihk
b3duY2FzdDxTZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGU+KCp3b3JrZXJHbG9iYWxTY29wZSgpKSk7
Ci0gICAgc2VydmljZVdvcmtlckdsb2JhbFNjb3BlLT5ldmVudExvb3AoKS5xdWV1ZVRhc2soVGFz
a1NvdXJjZTo6RE9NTWFuaXB1bGF0aW9uLCBbc2VydmljZVdvcmtlckdsb2JhbFNjb3BlID0gc2Vy
dmljZVdvcmtlckdsb2JhbFNjb3BlLmNvcHlSZWYoKSwgbWVzc2FnZSA9IFdURk1vdmUobWVzc2Fn
ZSksIHNvdXJjZURhdGEgPSBXVEZNb3ZlKHNvdXJjZURhdGEpXSgpIG11dGFibGUgeworICAgIHNl
cnZpY2VXb3JrZXJHbG9iYWxTY29wZS0+ZXZlbnRMb29wKCkucXVldWVUYXNrKFRhc2tTb3VyY2U6
OkRPTU1hbmlwdWxhdGlvbiwgW3NlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSA9IHNlcnZpY2VXb3Jr
ZXJHbG9iYWxTY29wZS5jb3B5UmVmKCksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCBzb3Vy
Y2VEYXRhID0gV1RGTW92ZShzb3VyY2VEYXRhKSwgc2VydmljZVdvcmtlcklkZW50aWZpZXIgPSB0
aGlzLT5pZGVudGlmaWVyKCldKCkgbXV0YWJsZSB7CiAgICAgICAgIFVSTCBzb3VyY2VVUkw7CiAg
ICAgICAgIEV4dGVuZGFibGVNZXNzYWdlRXZlbnRTb3VyY2Ugc291cmNlOwogICAgICAgICBpZiAo
V1RGOjpob2xkc19hbHRlcm5hdGl2ZTxTZXJ2aWNlV29ya2VyQ2xpZW50RGF0YT4oc291cmNlRGF0
YSkpIHsKQEAgLTEzMyw2ICsxMzUsMTAgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpxdWV1
ZVRhc2tUb1Bvc3RNZXNzYWdlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2EKICAgICAg
ICAgICAgIHNvdXJjZSA9IFdURk1vdmUoc291cmNlV29ya2VyKTsKICAgICAgICAgfQogICAgICAg
ICBmaXJlTWVzc2FnZUV2ZW50KHNlcnZpY2VXb3JrZXJHbG9iYWxTY29wZSwgV1RGTW92ZShtZXNz
YWdlKSwgRXh0ZW5kYWJsZU1lc3NhZ2VFdmVudFNvdXJjZSB7IHNvdXJjZSB9LCBzb3VyY2VVUkwp
OworICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0gewor
ICAgICAgICAgICAgaWYgKGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4
dE1hbmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29y
a2VySWRlbnRpZmllcikpCisgICAgICAgICAgICAgICAgc2VydmljZVdvcmtlclRocmVhZFByb3h5
LT50aHJlYWQoKS5maW5pc2hlZEZpcmluZ01lc3NhZ2VFdmVudCgpOworICAgICAgICB9KTsKICAg
ICB9KTsKIH0KIApAQCAtMTUxLDkgKzE1Nyw5IEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6
cXVldWVUYXNrVG9GaXJlSW5zdGFsbEV2ZW50KCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FsbE9uTWFp
blRocmVhZChbam9iRGF0YUlkZW50aWZpZXIsIHNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBoYXNS
ZWplY3RlZEFueVByb21pc2VdICgpIG11dGFibGUgewotICAgICAgICAgICAgICAgIGlmIChhdXRv
KiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29ubmVjdGlvbigp
KQotICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hJbnN0YWxsKGpvYkRh
dGFJZGVudGlmaWVyLCBzZXJ2aWNlV29ya2VySWRlbnRpZmllciwgIWhhc1JlamVjdGVkQW55UHJv
bWlzZSk7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgaGFzUmVqZWN0ZWRBbnlQcm9taXNlXSB7CisgICAgICAgICAgICAgICAgaWYgKGF1dG8q
IHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigp
LnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAg
ICAgICAgICAgICAgICAgIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS0+dGhyZWFkKCkuZmluaXNo
ZWRGaXJpbmdJbnN0YWxsRXZlbnQoaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKICAgICAgICAgICAg
IH0pOwogICAgICAgICB9KTsKICAgICB9KTsKQEAgLTE2Nyw5ICsxNzMsOSBAQCB2b2lkIFNlcnZp
Y2VXb3JrZXJUaHJlYWQ6OnF1ZXVlVGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKQogICAgICAgICBz
ZXJ2aWNlV29ya2VyR2xvYmFsU2NvcGUtPmRpc3BhdGNoRXZlbnQoYWN0aXZhdGVFdmVudCk7CiAK
ICAgICAgICAgYWN0aXZhdGVFdmVudC0+d2hlbkFsbEV4dGVuZExpZmV0aW1lUHJvbWlzZXNBcmVT
ZXR0bGVkKFtzZXJ2aWNlV29ya2VySWRlbnRpZmllcl0oSGFzaFNldDxSZWY8RE9NUHJvbWlzZT4+
JiYpIHsKLSAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW3NlcnZpY2VXb3JrZXJJZGVudGlm
aWVyXSAoKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29ubmVjdGlvbi0+ZGlkRmluaXNoQWN0aXZhdGlvbihzZXJ2aWNlV29ya2VySWRl
bnRpZmllcik7CisgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtzZXJ2aWNlV29ya2VySWRl
bnRpZmllcl0geworICAgICAgICAgICAgICAgIGlmIChhdXRvKiBzZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkgPSBTV0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5zZXJ2aWNlV29ya2VyVGhyZWFk
UHJveHkoc2VydmljZVdvcmtlcklkZW50aWZpZXIpKQorICAgICAgICAgICAgICAgICAgICBzZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHktPnRocmVhZCgpLmZpbmlzaGVkRmlyaW5nQWN0aXZhdGVFdmVu
dCgpOwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0pOwpAQCAtMTc3LDE5ICsx
ODMsMTIxIEBAIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6cXVldWVUYXNrVG9GaXJlQWN0aXZh
dGVFdmVudCgpCiAKIHZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRFdmFsdWF0aW5n
U2NyaXB0KCkKIHsKKyAgICBBU1NFUlQoIWlzTWFpblRocmVhZCgpKTsKICAgICBtX2RvZXNIYW5k
bGVGZXRjaCA9IHdvcmtlckdsb2JhbFNjb3BlKCktPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFt
ZXMoKS5mZXRjaEV2ZW50KTsKIH0KIAogdm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpzdGFydChG
dW5jdGlvbjx2b2lkKGNvbnN0IFN0cmluZyYsIGJvb2wpPiYmIGNhbGxiYWNrKQogeworICAgIG1f
c3RhdGUgPSBTdGF0ZTo6U3RhcnRpbmc7CisgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworCiAg
ICAgV29ya2VyVGhyZWFkOjpzdGFydChbY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKSwgc2Vy
dmljZVdvcmtlcklkZW50aWZpZXIgPSB0aGlzLT5pZGVudGlmaWVyKCldKGF1dG8mIGVycm9yTWVz
c2FnZSkgbXV0YWJsZSB7CiAgICAgICAgIGJvb2wgZG9lc0hhbmRsZUZldGNoID0gdHJ1ZTsKLSAg
ICAgICAgaWYgKGF1dG8qIHRocmVhZFByb3h5ID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9u
KCkud29ya2VyQnlJRChzZXJ2aWNlV29ya2VySWRlbnRpZmllcikpCisgICAgICAgIGlmIChhdXRv
KiB0aHJlYWRQcm94eSA9IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLndvcmtlckJ5SUQo
c2VydmljZVdvcmtlcklkZW50aWZpZXIpKSB7CisgICAgICAgICAgICB0aHJlYWRQcm94eS0+dGhy
ZWFkKCkuZmluaXNoZWRTdGFydGluZygpOwogICAgICAgICAgICAgZG9lc0hhbmRsZUZldGNoID0g
dGhyZWFkUHJveHktPnRocmVhZCgpLmRvZXNIYW5kbGVGZXRjaCgpOworICAgICAgICB9CiAgICAg
ICAgIGNhbGxiYWNrKGVycm9yTWVzc2FnZSwgZG9lc0hhbmRsZUZldGNoKTsKICAgICB9KTsKIH0K
IAordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZFN0YXJ0aW5nKCkKK3sKKyAgICBt
X3N0YXRlID0gU3RhdGU6OklkbGU7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6c3Rh
cnRGZXRjaEV2ZW50TW9uaXRvcmluZygpCit7CisgICAgbV9pc0hhbmRsaW5nRmV0Y2hFdmVudCA9
IHRydWU7CisgICAgc3RhcnRIZWFydEJlYXRUaW1lcigpOworfQorCit2b2lkIFNlcnZpY2VXb3Jr
ZXJUaHJlYWQ6OnN0YXJ0SGVhcnRCZWF0VGltZXIoKQoreworICAgIGlmIChtX2hlYXJ0QmVhdFRp
bWVyLmlzQWN0aXZlKCkpCisgICAgICAgIHJldHVybjsKKworICAgIG1fb25nb2luZ0hlYXJ0QmVh
dENoZWNrID0gdHJ1ZTsKKyAgICBydW5Mb29wKCkucG9zdFRhc2soW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYpIG11dGFibGUgeworICAgICAgICBjYWxsT25NYWlu
VGhyZWFkKFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKV0oKSB7
CisgICAgICAgICAgICBtX29uZ29pbmdIZWFydEJlYXRDaGVjayA9IGZhbHNlOworICAgICAgICB9
KTsKKyAgICB9KTsKKworICAgIG1faGVhcnRCZWF0VGltZXIuc3RhcnRPbmVTaG90KG1faGVhcnRC
ZWF0VGltZW91dCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6aGVhcnRCZWF0VGlt
ZXJGaXJlZCgpCit7CisgICAgaWYgKCFtX29uZ29pbmdIZWFydEJlYXRDaGVjaykgeworICAgICAg
ICBpZiAobV9zdGF0ZSA9PSBTdGF0ZTo6SW5zdGFsbGluZyB8fCBtX3N0YXRlID09IFN0YXRlOjpB
Y3RpdmF0aW5nIHx8IG1faXNIYW5kbGluZ0ZldGNoRXZlbnQgfHwgbV9tZXNzYWdlRXZlbnRDb3Vu
dCkKKyAgICAgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGltZXIoKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIGF1dG8qIHNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eSA9IFNXQ29udGV4dE1h
bmFnZXI6OnNpbmdsZXRvbigpLnNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShpZGVudGlmaWVyKCkp
OworICAgIGlmICghc2VydmljZVdvcmtlclRocmVhZFByb3h5IHx8IHNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS0+aXNUZXJtaW5hdGluZ09yVGVybWluYXRlZCgpKQorICAgICAgICByZXR1cm47CisK
KyAgICBhdXRvKiBjb25uZWN0aW9uID0gU1dDb250ZXh0TWFuYWdlcjo6c2luZ2xldG9uKCkuY29u
bmVjdGlvbigpOworICAgIGlmICghY29ubmVjdGlvbikKKyAgICAgICAgcmV0dXJuOworCisgICAg
c3dpdGNoIChtX3N0YXRlKSB7CisgICAgY2FzZSBTdGF0ZTo6SWRsZToKKyAgICBjYXNlIFN0YXRl
OjpBY3RpdmF0aW5nOgorICAgICAgICBjb25uZWN0aW9uLT5kaWRGYWlsSGVhcnRCZWF0Q2hlY2so
aWRlbnRpZmllcigpKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdGF0ZTo6U3RhcnRpbmc6
CisgICAgICAgIGNvbm5lY3Rpb24tPnNlcnZpY2VXb3JrZXJGYWlsZWRUb1N0YXJ0KG1fZGF0YS5q
b2JEYXRhSWRlbnRpZmllciwgaWRlbnRpZmllcigpLCAiU2VydmljZSBXb3JrZXIgc2NyaXB0IGV4
ZWN1dGlvbiB0aW1lZCBvdXQiX3MpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFN0YXRlOjpJ
bnN0YWxsaW5nOgorICAgICAgICBjb25uZWN0aW9uLT5kaWRGaW5pc2hJbnN0YWxsKG1fZGF0YS5q
b2JEYXRhSWRlbnRpZmllciwgaWRlbnRpZmllcigpLCBmYWxzZSk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKwordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjp3aWxsUG9zdFRhc2tUb0ZpcmVJ
bnN0YWxsRXZlbnQoKQoreworICAgIG1fc3RhdGUgPSBTdGF0ZTo6SW5zdGFsbGluZzsKKyAgICBz
dGFydEhlYXJ0QmVhdFRpbWVyKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZDo6Zmlu
aXNoZWRGaXJpbmdJbnN0YWxsRXZlbnQoYm9vbCBoYXNSZWplY3RlZEFueVByb21pc2UpCit7Cisg
ICAgbV9zdGF0ZSA9IFN0YXRlOjpJZGxlOworCisgICAgaWYgKGF1dG8qIGNvbm5lY3Rpb24gPSBT
V0NvbnRleHRNYW5hZ2VyOjpzaW5nbGV0b24oKS5jb25uZWN0aW9uKCkpCisgICAgICAgIGNvbm5l
Y3Rpb24tPmRpZEZpbmlzaEluc3RhbGwobV9kYXRhLmpvYkRhdGFJZGVudGlmaWVyLCBpZGVudGlm
aWVyKCksICFoYXNSZWplY3RlZEFueVByb21pc2UpOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJU
aHJlYWQ6OndpbGxQb3N0VGFza1RvRmlyZUFjdGl2YXRlRXZlbnQoKQoreworICAgIG1fc3RhdGUg
PSBTdGF0ZTo6QWN0aXZhdGluZzsKKyAgICBzdGFydEhlYXJ0QmVhdFRpbWVyKCk7Cit9CisKK3Zv
aWQgU2VydmljZVdvcmtlclRocmVhZDo6ZmluaXNoZWRGaXJpbmdBY3RpdmF0ZUV2ZW50KCkKK3sK
KyAgICBtX3N0YXRlID0gU3RhdGU6OklkbGU7CisKKyAgICBpZiAoYXV0byogY29ubmVjdGlvbiA9
IFNXQ29udGV4dE1hbmFnZXI6OnNpbmdsZXRvbigpLmNvbm5lY3Rpb24oKSkKKyAgICAgICAgY29u
bmVjdGlvbi0+ZGlkRmluaXNoQWN0aXZhdGlvbihpZGVudGlmaWVyKCkpOworfQorCit2b2lkIFNl
cnZpY2VXb3JrZXJUaHJlYWQ6OndpbGxQb3N0VGFza1RvRmlyZU1lc3NhZ2VFdmVudCgpCit7Cisg
ICAgaWYgKCFtX21lc3NhZ2VFdmVudENvdW50KyspCisgICAgICAgIHN0YXJ0SGVhcnRCZWF0VGlt
ZXIoKTsKK30KKwordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkOjpmaW5pc2hlZEZpcmluZ01lc3Nh
Z2VFdmVudCgpCit7CisgICAgQVNTRVJUKG1fbWVzc2FnZUV2ZW50Q291bnQpOworICAgIC0tbV9t
ZXNzYWdlRXZlbnRDb3VudDsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYg
Ly8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZC5oCmluZGV4IGQx
YTY1NzY2MDRhODExYThhODJiNjAyNGE2NThlNDE2ZWY4ZjM5NmEuLjAyZWJlYTY3YzNmNzIwODIz
OTM1NTViMDY4NzlhN2U3NDU2Y2Q2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtl
cnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhyZWFkLmgKQEAgLTMw
LDYgKzMwLDcgQEAKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEuaCIKICNpbmNs
dWRlICJTZXJ2aWNlV29ya2VyRmV0Y2guaCIKICNpbmNsdWRlICJTZXJ2aWNlV29ya2VySWRlbnRp
Zmllci5oIgorI2luY2x1ZGUgIlRpbWVyLmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTU2LDkgKzU3LDEzIEBAIHB1YmxpYzoKICAgICBXb3Jr
ZXJPYmplY3RQcm94eSYgd29ya2VyT2JqZWN0UHJveHkoKSBjb25zdCB7IHJldHVybiBtX3dvcmtl
ck9iamVjdFByb3h5OyB9CiAKICAgICB2b2lkIHN0YXJ0KEZ1bmN0aW9uPHZvaWQoY29uc3QgU3Ry
aW5nJiwgYm9vbCk+JiYpOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgcXVldWVUYXNrVG9GaXJl
RmV0Y2hFdmVudChSZWY8U2VydmljZVdvcmtlckZldGNoOjpDbGllbnQ+JiYsIE9wdGlvbmFsPFNl
cnZpY2VXb3JrZXJDbGllbnRJZGVudGlmaWVyPiYmLCBSZXNvdXJjZVJlcXVlc3QmJiwgU3RyaW5n
JiYgcmVmZXJyZXIsIEZldGNoT3B0aW9ucyYmKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHF1
ZXVlVGFza1RvUG9zdE1lc3NhZ2UoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgU2VydmljZVdv
cmtlck9yQ2xpZW50RGF0YSYmIHNvdXJjZURhdGEpOwogCisgICAgdm9pZCB3aWxsUG9zdFRhc2tU
b0ZpcmVJbnN0YWxsRXZlbnQoKTsKKyAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZUFjdGl2YXRl
RXZlbnQoKTsKKyAgICB2b2lkIHdpbGxQb3N0VGFza1RvRmlyZU1lc3NhZ2VFdmVudCgpOworCisg
ICAgdm9pZCBxdWV1ZVRhc2tUb0ZpcmVGZXRjaEV2ZW50KFJlZjxTZXJ2aWNlV29ya2VyRmV0Y2g6
OkNsaWVudD4mJiwgT3B0aW9uYWw8U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXI+JiYsIFJl
c291cmNlUmVxdWVzdCYmLCBTdHJpbmcmJiByZWZlcnJlciwgRmV0Y2hPcHRpb25zJiYpOworICAg
IHZvaWQgcXVldWVUYXNrVG9Qb3N0TWVzc2FnZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBT
ZXJ2aWNlV29ya2VyT3JDbGllbnREYXRhJiYgc291cmNlRGF0YSk7CiAgICAgdm9pZCBxdWV1ZVRh
c2tUb0ZpcmVJbnN0YWxsRXZlbnQoKTsKICAgICB2b2lkIHF1ZXVlVGFza1RvRmlyZUFjdGl2YXRl
RXZlbnQoKTsKIApAQCAtNjcsNiArNzIsOSBAQCBwdWJsaWM6CiAgICAgU2VydmljZVdvcmtlcklk
ZW50aWZpZXIgaWRlbnRpZmllcigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5zZXJ2aWNlV29ya2Vy
SWRlbnRpZmllcjsgfQogICAgIGJvb2wgZG9lc0hhbmRsZUZldGNoKCkgY29uc3QgeyByZXR1cm4g
bV9kb2VzSGFuZGxlRmV0Y2g7IH0KIAorICAgIHZvaWQgc3RhcnRGZXRjaEV2ZW50TW9uaXRvcmlu
ZygpOworICAgIHZvaWQgc3RvcEZldGNoRXZlbnRNb25pdG9yaW5nKCkgeyBtX2lzSGFuZGxpbmdG
ZXRjaEV2ZW50ID0gZmFsc2U7IH0KKwogcHJvdGVjdGVkOgogICAgIFJlZjxXb3JrZXJHbG9iYWxT
Y29wZT4gY3JlYXRlV29ya2VyR2xvYmFsU2NvcGUoY29uc3QgVVJMJiwgUmVmPFNlY3VyaXR5T3Jp
Z2luPiYmLCBjb25zdCBTdHJpbmcmIG5hbWUsIGNvbnN0IFN0cmluZyYgaWRlbnRpZmllciwgY29u
c3QgU3RyaW5nJiB1c2VyQWdlbnQsIGJvb2wgaXNPbmxpbmUsIGNvbnN0IENvbnRlbnRTZWN1cml0
eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIGJvb2wgc2hvdWxkQnlwYXNzTWFpbldvcmxkQ29udGVu
dFNlY3VyaXR5UG9saWN5LCBSZWY8U2VjdXJpdHlPcmlnaW4+JiYgdG9wT3JpZ2luLCBNb25vdG9u
aWNUaW1lIHRpbWVPcmlnaW4pIGZpbmFsOwogICAgIHZvaWQgcnVuRXZlbnRMb29wKCkgb3ZlcnJp
ZGU7CkBAIC03Nyw5ICs4NSwyOSBAQCBwcml2YXRlOgogICAgIGJvb2wgaXNTZXJ2aWNlV29ya2Vy
VGhyZWFkKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIHZvaWQgZmluaXNoZWRF
dmFsdWF0aW5nU2NyaXB0KCkgZmluYWw7CiAKKyAgICB2b2lkIGZpbmlzaGVkRmlyaW5nSW5zdGFs
bEV2ZW50KGJvb2wgaGFzUmVqZWN0ZWRBbnlQcm9taXNlKTsKKyAgICB2b2lkIGZpbmlzaGVkRmly
aW5nQWN0aXZhdGVFdmVudCgpOworICAgIHZvaWQgZmluaXNoZWRGaXJpbmdNZXNzYWdlRXZlbnQo
KTsKKyAgICB2b2lkIGZpbmlzaGVkU3RhcnRpbmcoKTsKKworICAgIHZvaWQgc3RhcnRIZWFydEJl
YXRUaW1lcigpOworICAgIHZvaWQgaGVhcnRCZWF0VGltZXJGaXJlZCgpOworICAgIHZvaWQgaW5z
dGFsbEV2ZW50VGltZXJGaXJlZCgpOworCiAgICAgU2VydmljZVdvcmtlckNvbnRleHREYXRhIG1f
ZGF0YTsKICAgICBXb3JrZXJPYmplY3RQcm94eSYgbV93b3JrZXJPYmplY3RQcm94eTsKICAgICBi
b29sIG1fZG9lc0hhbmRsZUZldGNoIHsgZmFsc2UgfTsKKworICAgIGJvb2wgbV9pc0hhbmRsaW5n
RmV0Y2hFdmVudCB7IGZhbHNlIH07CisgICAgdWludDY0X3QgbV9tZXNzYWdlRXZlbnRDb3VudCB7
IDAgfTsKKyAgICBlbnVtIGNsYXNzIFN0YXRlIHsgSWRsZSwgU3RhcnRpbmcsIEluc3RhbGxpbmcs
IEFjdGl2YXRpbmcgfTsKKyAgICBTdGF0ZSBtX3N0YXRlIHsgU3RhdGU6OklkbGUgfTsKKyAgICBi
b29sIG1fb25nb2luZ0hlYXJ0QmVhdENoZWNrIHsgZmFsc2UgfTsKKworICAgIHN0YXRpYyBjb25z
dGV4cHIgU2Vjb25kcyBoZWFydEJlYXRUaW1lb3V0IHsgNjBfcyB9OworICAgIHN0YXRpYyBjb25z
dGV4cHIgU2Vjb25kcyBoZWFydEJlYXRUaW1lb3V0Rm9yVGVzdCB7IDFfcyB9OworICAgIFNlY29u
ZHMgbV9oZWFydEJlYXRUaW1lb3V0IHsgaGVhcnRCZWF0VGltZW91dCB9OworICAgIFRpbWVyIG1f
aGVhcnRCZWF0VGltZXI7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHkuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2Vy
dmljZVdvcmtlclRocmVhZFByb3h5LmNwcAppbmRleCA0YWRiMDkxMGE5NDM2YzA1ZmE2NmMyY2Iz
Y2NmMmEzNzdlZjNiMjI0Li45MmNkZjMxMWNkODdmYWI3YTQzZGM2NzY1MzVmNTVkMWZjYWVkNDM4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2UvY29udGV4dC9TZXJ2
aWNlV29ya2VyVGhyZWFkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vy
dmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHAKQEAgLTE5Nyw2ICsxOTcs
OSBAQCB2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eTo6c3RhcnRGZXRjaChTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3RpbwogewogICAgIGF1dG8ga2V5ID0gc3RkOjptYWtl
X3BhaXIoY29ubmVjdGlvbklkZW50aWZpZXIsIGZldGNoSWRlbnRpZmllcik7CiAKKyAgICBpZiAo
bV9vbmdvaW5nRmV0Y2hUYXNrcy5pc0VtcHR5KCkpCisgICAgICAgIHRocmVhZCgpLnN0YXJ0RmV0
Y2hFdmVudE1vbml0b3JpbmcoKTsKKwogICAgIEFTU0VSVCghbV9vbmdvaW5nRmV0Y2hUYXNrcy5j
b250YWlucyhrZXkpKTsKICAgICBtX29uZ29pbmdGZXRjaFRhc2tzLmFkZChrZXksIGNsaWVudC5j
b3B5UmVmKCkpOwogICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUoW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgY2xpZW50ID0gV1RGTW92ZShjbGllbnQp
LCBjbGllbnRJZCwgcmVxdWVzdCA9IHJlcXVlc3QuaXNvbGF0ZWRDb3B5KCksIHJlZmVycmVyID0g
cmVmZXJyZXIuaXNvbGF0ZWRDb3B5KCksIG9wdGlvbnMgPSBvcHRpb25zLmlzb2xhdGVkQ29weSgp
XShhdXRvJikgbXV0YWJsZSB7CkBAIC0yMTAsNiArMjEzLDkgQEAgdm9pZCBTZXJ2aWNlV29ya2Vy
VGhyZWFkUHJveHk6OmNhbmNlbEZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIgY29u
bmVjdGkKICAgICBpZiAoIWNsaWVudCkKICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKG1fb25n
b2luZ0ZldGNoVGFza3MuaXNFbXB0eSgpKQorICAgICAgICB0aHJlYWQoKS5zdG9wRmV0Y2hFdmVu
dE1vbml0b3JpbmcoKTsKKwogICAgIHBvc3RUYXNrRm9yTW9kZVRvV29ya2VyR2xvYmFsU2NvcGUo
W2NsaWVudCA9IFdURk1vdmUoY2xpZW50LnZhbHVlKCkpXSAoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYpIHsKICAgICAgICAgY2xpZW50LT5jYW5jZWwoKTsKICAgICB9LCBXb3JrZXJSdW5Mb29wOjpk
ZWZhdWx0TW9kZSgpKTsKQEAgLTIyOSw2ICsyMzUsMzMgQEAgdm9pZCBTZXJ2aWNlV29ya2VyVGhy
ZWFkUHJveHk6OmNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJDb25uZWN0
aW8KIHZvaWQgU2VydmljZVdvcmtlclRocmVhZFByb3h5OjpyZW1vdmVGZXRjaChTV1NlcnZlckNv
bm5lY3Rpb25JZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyLCBGZXRjaElkZW50aWZpZXIg
ZmV0Y2hJZGVudGlmaWVyKQogewogICAgIG1fb25nb2luZ0ZldGNoVGFza3MucmVtb3ZlKHN0ZDo6
bWFrZV9wYWlyKGNvbm5lY3Rpb25JZGVudGlmaWVyLCBmZXRjaElkZW50aWZpZXIpKTsKKworICAg
IGlmIChtX29uZ29pbmdGZXRjaFRhc2tzLmlzRW1wdHkoKSkKKyAgICAgICAgdGhyZWFkKCkuc3Rv
cEZldGNoRXZlbnRNb25pdG9yaW5nKCk7Cit9CisKK3ZvaWQgU2VydmljZVdvcmtlclRocmVhZFBy
b3h5Ojpwb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlcihNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
IG1lc3NhZ2UsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJiBzb3VyY2VEYXRhKQoreworICAg
IHRocmVhZCgpLndpbGxQb3N0VGFza1RvRmlyZU1lc3NhZ2VFdmVudCgpOworICAgIHRocmVhZCgp
LnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMp
LCBtZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgc291cmNlRGF0YSA9IFdURk1vdmUoc291cmNl
RGF0YSldKGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgdGhyZWFkKCkucXVldWVUYXNrVG9Qb3N0
TWVzc2FnZShXVEZNb3ZlKG1lc3NhZ2UpLCBXVEZNb3ZlKHNvdXJjZURhdGEpKTsKKyAgICB9KTsK
K30KKwordm9pZCBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHk6OmZpcmVJbnN0YWxsRXZlbnQoKQor
eworICAgIHRocmVhZCgpLndpbGxQb3N0VGFza1RvRmlyZUluc3RhbGxFdmVudCgpOworICAgIHRo
cmVhZCgpLnJ1bkxvb3AoKS5wb3N0VGFzayhbdGhpcywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYo
KnRoaXMpXShhdXRvJikgbXV0YWJsZSB7CisgICAgICAgIHRocmVhZCgpLnF1ZXVlVGFza1RvRmly
ZUluc3RhbGxFdmVudCgpOworICAgIH0pOworfQorCit2b2lkIFNlcnZpY2VXb3JrZXJUaHJlYWRQ
cm94eTo6ZmlyZUFjdGl2YXRlRXZlbnQoKQoreworICAgIHRocmVhZCgpLndpbGxQb3N0VGFza1Rv
RmlyZUFjdGl2YXRlRXZlbnQoKTsKKyAgICB0aHJlYWQoKS5ydW5Mb29wKCkucG9zdFRhc2soW3Ro
aXMsIHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKV0oYXV0byYpIG11dGFibGUgeworICAg
ICAgICB0aHJlYWQoKS5xdWV1ZVRhc2tUb0ZpcmVBY3RpdmF0ZUV2ZW50KCk7CisgICAgfSk7CiB9
CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9jb250ZXh0L1NlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oIGIvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5
LmgKaW5kZXggZTliZDhhMTQyZTc5MWY0MzAyNjA5N2FiYjU4OWIwOTY4ZjU4YTQzNy4uODU0NWU4
NGNiNTg2ZTQ0YWI5Yzc5NDE1ZTAwZDZiNmUzNjA3M2I4ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtlclRocmVhZFByb3h5LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL2NvbnRleHQvU2VydmljZVdvcmtl
clRocmVhZFByb3h5LmgKQEAgLTc1LDYgKzc1LDEwIEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNvbnRpbnVlRGlkUmVjZWl2ZUZldGNoUmVzcG9uc2UoU1dTZXJ2ZXJDb25uZWN0
aW9uSWRlbnRpZmllciwgRmV0Y2hJZGVudGlmaWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlbW92ZUZldGNoKFNXU2VydmVyQ29ubmVjdGlvbklkZW50aWZpZXIsIEZldGNoSWRlbnRpZmll
cik7CiAKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyKE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzJiYsIFNlcnZpY2VXb3JrZXJPckNsaWVudERhdGEmJik7CisgICAgdm9pZCBmaXJl
SW5zdGFsbEV2ZW50KCk7CisgICAgdm9pZCBmaXJlQWN0aXZhdGVFdmVudCgpOworCiBwcml2YXRl
OgogICAgIFdFQkNPUkVfRVhQT1JUIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eShQYWdlQ29uZmln
dXJhdGlvbiYmLCBjb25zdCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGEmLCBTdHJpbmcmJiB1c2Vy
QWdlbnQsIENhY2hlU3RvcmFnZVByb3ZpZGVyJiwgU2VjdXJpdHlPcmlnaW46OlN0b3JhZ2VCbG9j
a2luZ1BvbGljeSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2Vydmlj
ZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmNwcApp
bmRleCBhMzY3MzcxYmIwODZjZWMwYjg2MTA0MTU0MjIzYjM1YThjZThhOGUyLi41NzAzZTg1NWI4
ZGU0YTVhZmExNzlmNjUzNWQ4ZjIxNWZlMGIzNjYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlclRvQ29u
dGV4dENvbm5lY3Rpb24uY3BwCkBAIC0xMjMsNiArMTIzLDEyIEBAIHZvaWQgU1dTZXJ2ZXJUb0Nv
bnRleHRDb25uZWN0aW9uOjpzZXRTY3JpcHRSZXNvdXJjZShTZXJ2aWNlV29ya2VySWRlbnRpZmll
ciBzZXJ2CiAgICAgICAgIHdvcmtlci0+c2V0U2NyaXB0UmVzb3VyY2UoV1RGTW92ZShzY3JpcHRV
UkwpLCBTZXJ2aWNlV29ya2VyQ29udGV4dERhdGE6OkltcG9ydGVkU2NyaXB0IHsgV1RGTW92ZShz
Y3JpcHQpLCBXVEZNb3ZlKHJlc3BvbnNlVVJMKSwgV1RGTW92ZShtaW1lVHlwZSkgfSk7CiB9CiAK
K3ZvaWQgU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uOjpkaWRGYWlsSGVhcnRCZWF0Q2hlY2so
U2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmllcikKK3sKKyAgICBpZiAoYXV0byogd29y
a2VyID0gU1dTZXJ2ZXJXb3JrZXI6OmV4aXN0aW5nV29ya2VyRm9ySWRlbnRpZmllcihpZGVudGlm
aWVyKSkKKyAgICAgICAgd29ya2VyLT5kaWRGYWlsSGVhcnRCZWF0Q2hlY2soKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZl
clRvQ29udGV4dENvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9z
ZXJ2ZXIvU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLmgKaW5kZXggMzNmMTJjNjFkMDA0Zjll
ODYxMWRjNGIyMjUxYzkwOGQ4YjA1MTQyMy4uMDk4MWRhMDFlNGJkOTI2MjY1MGJkYWYyODcxN2Ey
OGZjM2I1M2E0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3Nl
cnZlci9TV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93
b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbi5oCkBAIC03
MCw2ICs3MCw3IEBAIHB1YmxpYzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIG1hdGNoQWxsKHVp
bnQ2NF90IHJlcXVlc3RJZGVudGlmaWVyLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3Qg
U2VydmljZVdvcmtlckNsaWVudFF1ZXJ5T3B0aW9ucyYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgY2xhaW0odWludDY0X3QgcmVxdWVzdElkZW50aWZpZXIsIFNlcnZpY2VXb3JrZXJJZGVudGlm
aWVyKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFNjcmlwdFJlc291cmNlKFNlcnZpY2VX
b3JrZXJJZGVudGlmaWVyLCBVUkwmJiBzY3JpcHRVUkwsIFN0cmluZyYmIHNjcmlwdCwgVVJMJiYg
cmVzcG9uc2VVUkwsIFN0cmluZyYmIG1pbWVUeXBlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IGRpZEZhaWxIZWFydEJlYXRDaGVjayhTZXJ2aWNlV29ya2VySWRlbnRpZmllcik7CiAKICAgICBj
b25zdCBSZWdpc3RyYWJsZURvbWFpbiYgcmVnaXN0cmFibGVEb21haW4oKSBjb25zdCB7IHJldHVy
biBtX3JlZ2lzdHJhYmxlRG9tYWluOyB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dv
cmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3JrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
d29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKaW5kZXggNjU1ZDcwZDJm
Y2ZlZGRjYWEyNDgyYzdiNWFhYzAyZmYwY2VhOTdhZS4uZjIxNmNiNjViNmE5YzM3ZjRmYmFkNzk0
MGNjZTViNzY5NjBkYjEyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2
aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvd29ya2Vy
cy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5jcHAKQEAgLTI1OCw2ICsyNTgsMTIgQEAg
U1dTZXJ2ZXJSZWdpc3RyYXRpb24qIFNXU2VydmVyV29ya2VyOjpyZWdpc3RyYXRpb24oKSBjb25z
dAogICAgIHJldHVybiBtX3JlZ2lzdHJhdGlvbi5nZXQoKTsKIH0KIAordm9pZCBTV1NlcnZlcldv
cmtlcjo6ZGlkRmFpbEhlYXJ0QmVhdENoZWNrKCkKK3sKKyAgICBpZiAobV9zZXJ2ZXIgJiYgaXNS
dW5uaW5nKCkpCisgICAgICAgIG1fc2VydmVyLT50ZXJtaW5hdGVXb3JrZXIoKnRoaXMpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoU0VSVklDRV9XT1JL
RVIpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmggYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL3NlcnZpY2Uvc2VydmVyL1NX
U2VydmVyV29ya2VyLmgKaW5kZXggMWI5OWNjOTI3MTkxYmM1MmU2YjdlNWU1MTg3N2IxZDQ0ODEx
ZjA5ZS4uZjJlZmZlZTU5YzJlNzBhNTU4ZjJjZDc1YmU1ZjVhMDI0NjI1ZTgzMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9zZXJ2aWNlL3NlcnZlci9TV1NlcnZlcldvcmtlci5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvc2VydmljZS9zZXJ2ZXIvU1dTZXJ2ZXJXb3Jr
ZXIuaApAQCAtMTE4LDYgKzExOCw3IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0SGFzVGltZWRP
dXRBbnlGZXRjaFRhc2tzKCkgeyBtX2hhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcyA9IHRydWU7IH0K
ICAgICBib29sIGhhc1RpbWVkT3V0QW55RmV0Y2hUYXNrcygpIGNvbnN0IHsgcmV0dXJuIG1faGFz
VGltZWRPdXRBbnlGZXRjaFRhc2tzOyB9CisgICAgdm9pZCBkaWRGYWlsSGVhcnRCZWF0Q2hlY2so
KTsKIAogcHJpdmF0ZToKICAgICBTV1NlcnZlcldvcmtlcihTV1NlcnZlciYsIFNXU2VydmVyUmVn
aXN0cmF0aW9uJiwgY29uc3QgVVJMJiwgY29uc3QgU3RyaW5nJiBzY3JpcHQsIGNvbnN0IENvbnRl
bnRTZWN1cml0eVBvbGljeVJlc3BvbnNlSGVhZGVycyYsIFN0cmluZyYmIHJlZmVycmVyUG9saWN5
LCBXb3JrZXJUeXBlLCBTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgSGFzaE1hcDxVUkwsIFNlcnZp
Y2VXb3JrZXJDb250ZXh0RGF0YTo6SW1wb3J0ZWRTY3JpcHQ+JiYpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVj
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRleCAyNTgxZTEyMzY2ZTk3YzhiM2VkNTM2OWI5YzZm
MTMzMmZkODRlYjg2Li44ZThjZjUxM2I2ZmI5NDZhMmU3ZWMxMDY3OGE0MmQ1ZDU2ZDM0YTNkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNz
L1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmNwcApAQCAtMzk2LDcgKzM5Niw3
IEBAIHZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjp1cGRhdGVUaHJvdHRsZVN0YXRlKCkKICAg
ICB9CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250ZXh0Q29ubmVjdGlvbkNy
ZWF0ZWQoV2ViQ29yZTo6U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVj
dGlvbikKK3ZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpjb250ZXh0Q29ubmVjdGlvbkNyZWF0
ZWQoU1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uJiBjb250ZXh0Q29ubmVjdGlvbikKIHsKICAg
ICBhdXRvJiBjb25uZWN0aW9uID0gIHN0YXRpY19jYXN0PFdlYlNXU2VydmVyVG9Db250ZXh0Q29u
bmVjdGlvbiY+KGNvbnRleHRDb25uZWN0aW9uKTsKICAgICBjb25uZWN0aW9uLnNldFRocm90dGxl
U3RhdGUoY29tcHV0ZVRocm90dGxlU3RhdGUoY29ubmVjdGlvbi5yZWdpc3RyYWJsZURvbWFpbigp
KSk7CkBAIC00MDUsMTIgKzQwNSwxOCBAQCB2b2lkIFdlYlNXU2VydmVyQ29ubmVjdGlvbjo6Y29u
dGV4dENvbm5lY3Rpb25DcmVhdGVkKFdlYkNvcmU6OlNXU2VydmVyVG9Db250ZXh0QwogICAgICAg
ICBtX25ldHdvcmtQcm9jZXNzLT5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3Nh
Z2VzOjpOZXR3b3JrUHJvY2Vzc1Byb3h5OjpSZWdpc3RlclNlcnZpY2VXb3JrZXJDbGllbnRQcm9j
ZXNzIHsgaWRlbnRpZmllcigpLCBjb25uZWN0aW9uLndlYlByb2Nlc3NJZGVudGlmaWVyKCkgfSwg
MCk7CiB9CiAKLXZvaWQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2Vy
RnJvbUNsaWVudChXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciYmIGlkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uOjpzeW5jVGVybWluYXRlV29ya2VyRnJvbUNsaWVudChTZXJ2aWNl
V29ya2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYg
Y29tcGxldGlvbkhhbmRsZXIpCiB7CiAgICAgc3luY1Rlcm1pbmF0ZVdvcmtlcihXVEZNb3ZlKGlk
ZW50aWZpZXIpKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcigpOwogfQogCit2b2lkIFdlYlNXU2Vy
dmVyQ29ubmVjdGlvbjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQoreworICAgIGF1dG8qIHdvcmtlciA9IFNXU2VydmVyV29ya2VyOjpleGlzdGlu
Z1dvcmtlckZvcklkZW50aWZpZXIoaWRlbnRpZmllcik7CisgICAgY29tcGxldGlvbkhhbmRsZXIo
d29ya2VyID8gd29ya2VyLT5pc1J1bm5pbmcoKSA6IGZhbHNlKTsKK30KKwogUEFMOjpTZXNzaW9u
SUQgV2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpzZXNzaW9uSUQoKSBjb25zdAogewogICAgIHJldHVy
biBzZXJ2ZXIoKS5zZXNzaW9uSUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24u
aAppbmRleCBmYzBiYTNhMjFhMGZiY2FhOTk4OGViYTdjMmNiMTIxYmI3YzNkMDMxLi4xNmIxOTc2
NjE2MWNjYzExNGNkM2FhZDQyNGVmNTU1MmFhNTAxZGUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2ViU1dTZXJ2ZXJDb25uZWN0aW9uLmgK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyQ29ubmVjdGlvbi5oCkBAIC05Myw3ICs5Myw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIHJl
Z2lzdGVyU2VydmljZVdvcmtlckNsaWVudChXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmJiB0
b3BPcmlnaW4sIFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJDbGllbnREYXRhJiYsIGNvbnN0IE9wdGlv
bmFsPFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJSZWdpc3RyYXRpb25JZGVudGlmaWVyPiYsIFN0cmlu
ZyYmIHVzZXJBZ2VudCk7CiAgICAgdm9pZCB1bnJlZ2lzdGVyU2VydmljZVdvcmtlckNsaWVudChj
b25zdCBXZWJDb3JlOjpTZXJ2aWNlV29ya2VyQ2xpZW50SWRlbnRpZmllciYpOwotICAgIHZvaWQg
c3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50
aWZpZXImJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKTsKKyAgICB2b2lkIHN5bmNUZXJt
aW5hdGVXb3JrZXJGcm9tQ2xpZW50KFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKCk+JiYpOworICAgIHZvaWQgaXNTZXJ2aWNlV29ya2VyUnVu
bmluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIHBvc3RNZXNzYWdlVG9TZXJ2aWNlV29ya2VyQ2xp
ZW50KFdlYkNvcmU6OkRvY3VtZW50SWRlbnRpZmllciBkZXN0aW5hdGlvbkNvbnRleHRJZGVudGlm
aWVyLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIFdlYkNvcmU6OlNl
cnZpY2VXb3JrZXJJZGVudGlmaWVyIHNvdXJjZVNlcnZpY2VXb3JrZXJJZGVudGlmaWVyLCBjb25z
dCBTdHJpbmcmIHNvdXJjZU9yaWdpbikgZmluYWw7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IGE5MmVlZGVkODc2MjNjNzQ5NmNj
YjQ1MGRmMjgyOTBmMjRlNWI0ZjMuLmZkYmNlYjg4ODYyYjQxYTJjMGNkYTRhN2YzNWU3NjQ2ODJj
YmZhZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvU2VydmljZVdv
cmtlci9XZWJTV1NlcnZlckNvbm5lY3Rpb24ubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2VydmVyQ29ubmVjdGlvbi5tZXNz
YWdlcy5pbgpAQCAtNDMsNiArNDMsNyBAQCBtZXNzYWdlcyAtPiBXZWJTV1NlcnZlckNvbm5lY3Rp
b24gTm90UmVmQ291bnRlZCB7CiAKICAgICBTZXRUaHJvdHRsZVN0YXRlKGJvb2wgaXNUaHJvdHRs
ZWFibGUpCiAgICAgU3RvcmVSZWdpc3RyYXRpb25zT25EaXNrKCkgLT4gKCkgQXN5bmMKKyAgICBJ
c1NlcnZpY2VXb3JrZXJSdW5uaW5nKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHdv
cmtlcklkZW50aWZpZXIpIC0+IChib29sIGlzUnVubmluZykgQXN5bmMKIH0KIAogI2VuZGlmIC8v
IEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvU2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVz
c2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL1NlcnZpY2VXb3JrZXIvV2Vi
U1dTZXJ2ZXJUb0NvbnRleHRDb25uZWN0aW9uLm1lc3NhZ2VzLmluCmluZGV4IDI1ZTk2ZjM0MTEz
NWI5MDQ2ZTA1Zjg1MzM0ODgxNTg5Zjk1NjU3NmEuLjhlMmE3YTc0NTJjYjFjM2FhZGJkODY2YTQ4
MjA3Mzk5NWZmMTkzZWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3Mv
U2VydmljZVdvcmtlci9XZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24ubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9TZXJ2aWNlV29ya2VyL1dlYlNXU2Vy
dmVyVG9Db250ZXh0Q29ubmVjdGlvbi5tZXNzYWdlcy5pbgpAQCAtMzcsNiArMzcsNyBAQCBtZXNz
YWdlcyAtPiBXZWJTV1NlcnZlclRvQ29udGV4dENvbm5lY3Rpb24gTm90UmVmQ291bnRlZCB7CiAg
ICAgQ2xhaW0odWludDY0X3QgY2xhaW1SZXF1ZXN0SWRlbnRpZmllciwgV2ViQ29yZTo6U2Vydmlj
ZVdvcmtlcklkZW50aWZpZXIgc2VydmljZVdvcmtlcklkZW50aWZpZXIpOwogICAgIFNldFNjcmlw
dFJlc291cmNlKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIsIFVS
TCBzY3JpcHRVUkwsIFN0cmluZyBzY3JpcHQsIFVSTCByZXNwb25zZVVSTCwgU3RyaW5nIG1pbWVU
eXBlKTsKICAgICBQb3N0TWVzc2FnZVRvU2VydmljZVdvcmtlckNsaWVudChzdHJ1Y3QgV2ViQ29y
ZTo6U2VydmljZVdvcmtlckNsaWVudElkZW50aWZpZXIgZGVzdGluYXRpb24sIHN0cnVjdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyBtZXNzYWdlLCBXZWJDb3JlOjpTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBzb3VyY2UsIFN0cmluZyBzb3VyY2VPcmlnaW4pCisgICAgRGlkRmFpbEhl
YXJ0QmVhdENoZWNrKFdlYkNvcmU6OlNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIGlkZW50aWZpZXIp
OwogfQogCiAjZW5kaWYgLy8gRU5BQkxFKFNFUlZJQ0VfV09SS0VSKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbCBiL1NvdXJjZS9XZWJLaXQvU2hh
cmVkL1dlYlByZWZlcmVuY2VzLnlhbWwKaW5kZXggZmIyMDhlMjQ1YWRlOGJkZTZlZWMwYjVmMDEy
NmUzZjZlODc3Y2E4MS4uZjE1YzA3ZGQ5OGExOTRmYWRhZjViOTYxZTQ5MDBiYTA4MDcyNjRhMSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9TaGFyZWQvV2ViUHJlZmVyZW5jZXMueWFtbAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9XZWJQcmVmZXJlbmNlcy55YW1sCkBAIC0xMjM0LDYgKzEy
MzQsMTAgQEAgU2hvdWxkRGVjaWRlUG9saWN5QmVmb3JlTG9hZGluZ1F1aWNrTG9va1ByZXZpZXc6
CiAgIGRlZmF1bHRWYWx1ZTogZmFsc2UKICAgdHlwZTogYm9vbAogCitTaG91bGRVc2VTZXJ2aWNl
V29ya2VyU2hvcnRUaW1lb3V0OgorICBkZWZhdWx0VmFsdWU6IGZhbHNlCisgIHR5cGU6IGJvb2wK
KwogIyBGb3IgZXhwZXJpbWVudGFsIGZlYXR1cmVzOgogIyBUaGUgdHlwZSBzaG91bGQgYmUgYm9v
bGVhbi4KICMgWW91IG11c3QgcHJvdmlkZSBhIGh1bWFuUmVhZGFibGVOYW1lIGFuZCBodW1hblJl
YWRhYmxlRGVzY3JpcHRpb24gZm9yIGFsbCBleHBlcmltZW50YWwgZmVhdHVyZXMuIFRoZXkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXMuY3Bw
IGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKaW5kZXgg
ODhjYTc3MDUwMTdlNmRiZTYzZGQ1NjkwNjIwYTQ0MDMyMjMzMThiMi4uYWMzMWE2ZTQxNTExNDNi
NTVmMzZhMjYwNzQ3NWQ0OWY2YTg2YzVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0MvV0tQcmVmZXJlbmNlcy5jcHAKQEAgLTIxODgsMyArMjE4OCwxMyBAQCB2b2lkIFdL
UHJlZmVyZW5jZXNTZXRSZW1vdGVQbGF5YmFja0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVm
ZXJlbmNlc1JlZiwgYm9vbAogewogICAgIFdlYktpdDo6dG9JbXBsKHByZWZlcmVuY2VzUmVmKS0+
c2V0UmVtb3RlUGxheWJhY2tFbmFibGVkKGVuYWJsZWQpOwogfQorCitib29sIFdLUHJlZmVyZW5j
ZXNHZXRTaG91bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0KFdLUHJlZmVyZW5jZXNSZWYg
cHJlZmVyZW5jZXNSZWYpCit7CisgICAgcmV0dXJuIFdlYktpdDo6dG9JbXBsKHByZWZlcmVuY2Vz
UmVmKS0+c2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dCgpOworfQorCit2b2lkIFdL
UHJlZmVyZW5jZXNTZXRTaG91bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0KFdLUHJlZmVy
ZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJvb2wgZW5hYmxlZCkKK3sKKyAgICBXZWJLaXQ6OnRv
SW1wbChwcmVmZXJlbmNlc1JlZiktPnNldFNob3VsZFVzZVNlcnZpY2VXb3JrZXJTaG9ydFRpbWVv
dXQoZW5hYmxlZCk7Cit9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Qy9XS1ByZWZlcmVuY2VzUmVmLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1By
ZWZlcmVuY2VzUmVmLmgKaW5kZXggYjY1OGY1NmE0OGQ2Njc5NThjNGM5ZGZhZjBlZmFkYTJkNjJi
NzAzNi4uMTA4ZGY3OTRjZjc5MDFjMDMyODU3OWU4NTk2MWZlODk1ODA1MjRkOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQcmVmZXJlbmNlc1JlZi5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9DL1dLUHJlZmVyZW5jZXNSZWYuaApAQCAtMzQ0
LDYgKzM0NCwxMCBAQCBXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0Q2FwdHVyZVZpZGVv
SW5VSVByb2Nlc3NFbmFibGVkKFdLUHJlZmVyZW5jZXNSZWYgcAogV0tfRVhQT1JUIGJvb2wgV0tQ
cmVmZXJlbmNlc0dldFJlbW90ZVBsYXliYWNrRW5hYmxlZChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKTsKIFdLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRSZW1vdGVQbGF5YmFj
a0VuYWJsZWQoV0tQcmVmZXJlbmNlc1JlZiBwcmVmZXJlbmNlc1JlZiwgYm9vbCBlbmFibGVkKTsK
IAorLy8gRGVmYXVsdHMgdG8gZmFsc2UuCitXS19FWFBPUlQgYm9vbCBXS1ByZWZlcmVuY2VzR2V0
U2hvdWxkVXNlU2VydmljZVdvcmtlclNob3J0VGltZW91dChXS1ByZWZlcmVuY2VzUmVmIHByZWZl
cmVuY2VzUmVmKTsKK1dLX0VYUE9SVCB2b2lkIFdLUHJlZmVyZW5jZXNTZXRTaG91bGRVc2VTZXJ2
aWNlV29ya2VyU2hvcnRUaW1lb3V0KFdLUHJlZmVyZW5jZXNSZWYgcHJlZmVyZW5jZXNSZWYsIGJv
b2wgZW5hYmxlZCk7CisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24u
Y3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0
aW9uLmNwcAppbmRleCA4ZTMzZGZiZTk2NzJiZGU3YzE3MzliZDE4NGJlODFlZTdhMzQ2NWQ2Li42
YWY2ZmZiNjg3NWM0OTk2NGQwYjFkZjNhMjcwYTIzMzhjYWJkZjRjIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NsaWVudENvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlv
bi5jcHAKQEAgLTI0Miw2ICsyNDIsMTEgQEAgdm9pZCBXZWJTV0NsaWVudENvbm5lY3Rpb246OnN5
bmNUZXJtaW5hdGVXb3JrZXIoU2VydmljZVdvcmtlcklkZW50aWZpZXIgaWRlbnRpZmkKICAgICBz
ZW5kU3luYyhNZXNzYWdlczo6V2ViU1dTZXJ2ZXJDb25uZWN0aW9uOjpTeW5jVGVybWluYXRlV29y
a2VyRnJvbUNsaWVudCB7IGlkZW50aWZpZXIgfSwgTWVzc2FnZXM6OldlYlNXU2VydmVyQ29ubmVj
dGlvbjo6U3luY1Rlcm1pbmF0ZVdvcmtlckZyb21DbGllbnQ6OlJlcGx5KCkpOwogfQogCit2b2lk
IFdlYlNXQ2xpZW50Q29ubmVjdGlvbjo6aXNTZXJ2aWNlV29ya2VyUnVubmluZyhTZXJ2aWNlV29y
a2VySWRlbnRpZmllciBpZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wpPiYm
IGNhbGxiYWNrKQoreworICAgIHNlbmRXaXRoQXN5bmNSZXBseShNZXNzYWdlczo6V2ViU1dTZXJ2
ZXJDb25uZWN0aW9uOjpJc1NlcnZpY2VXb3JrZXJSdW5uaW5nIHsgaWRlbnRpZmllciB9LCBXVEZN
b3ZlKGNhbGxiYWNrKSk7Cit9CisKIHZvaWQgV2ViU1dDbGllbnRDb25uZWN0aW9uOjp1cGRhdGVU
aHJvdHRsZVN0YXRlKCkKIHsKICAgICBtX2lzVGhyb3R0bGVhYmxlID0gV2ViUHJvY2Vzczo6c2lu
Z2xldG9uKCkuYXJlQWxsUGFnZXNUaHJvdHRsZWFibGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ2xpZW50Q29ubmVjdGlvbi5oIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKaW5kZXgg
NDM5OTEwZjU0NjI4ODY3MzFkOWVlZGZjYWRkYzI3ODNlZjNlODhmYi4uOWRiZmJhYmY3NjgzZWE5
YWZhZmIzMzIzNDg1NDg3ZjFlNTJkYzlmYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dDbGllbnRDb25uZWN0aW9uLmgKQEAgLTg1LDYgKzg1
LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldERvY3VtZW50SXNDb250cm9sbGVkKFdlYkNvcmU6
OkRvY3VtZW50SWRlbnRpZmllciwgV2ViQ29yZTo6U2VydmljZVdvcmtlclJlZ2lzdHJhdGlvbkRh
dGEmJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CiAKICAgICB2b2lkIGdldFJl
Z2lzdHJhdGlvbnMoV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiYgdG9wT3JpZ2luLCBjb25z
dCBVUkwmIGNsaWVudFVSTCwgR2V0UmVnaXN0cmF0aW9uc0NhbGxiYWNrJiYpIGZpbmFsOworICAg
IHZvaWQgaXNTZXJ2aWNlV29ya2VyUnVubmluZyhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRp
ZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJikgZmluYWw7CiAKICAgICB2b2lk
IGRpZFJlc29sdmVSZWdpc3RyYXRpb25Qcm9taXNlKGNvbnN0IFdlYkNvcmU6OlNlcnZpY2VXb3Jr
ZXJSZWdpc3RyYXRpb25LZXkmKSBmaW5hbDsKICAgICB2b2lkIHN0b3JlUmVnaXN0cmF0aW9uc09u
RGlza0ZvclRlc3RpbmcoQ29tcGxldGlvbkhhbmRsZXI8dm9pZCgpPiYmKSBmaW5hbDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFn
ZXJDb25uZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNX
Q29udGV4dE1hbmFnZXJDb25uZWN0aW9uLmNwcAppbmRleCBiNTBlYmY5ZDBjYWU4MmZiNmM1ZmZk
ZGVkNjk1ZjQyZGI2MjJjMGRmLi5iNzRhNmVmMjVlNjg5N2Q4Y2Q5Y2ZiOTkxZGVkY2Q0Yzc4ZTBj
MGE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0Nv
bnRleHRNYW5hZ2VyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1N0b3JhZ2UvV2ViU1dDb250ZXh0TWFuYWdlckNvbm5lY3Rpb24uY3BwCkBAIC0xMjYsNiArMTI2
LDcgQEAgdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6dXBkYXRlUHJlZmVyZW5j
ZXNTdG9yZShjb25zdCBXZWJQcmVmZXJlbmNlc1MKICAgICBSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLnNldFNlY3VyZUNvbnRleHRDaGVja3NFbmFibGVkKHN0b3JlLmdl
dEJvb2xWYWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c2VjdXJlQ29udGV4dENoZWNrc0Vu
YWJsZWRLZXkoKSkpOwogCiAgICAgbV9zdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSBzdGF0aWNfY2Fz
dDxTZWN1cml0eU9yaWdpbjo6U3RvcmFnZUJsb2NraW5nUG9saWN5PihzdG9yZS5nZXRVSW50MzJW
YWx1ZUZvcktleShXZWJQcmVmZXJlbmNlc0tleTo6c3RvcmFnZUJsb2NraW5nUG9saWN5S2V5KCkp
KTsKKyAgICBzZXRTaG91bGRVc2VTaG9ydFRpbWVvdXQoc3RvcmUuZ2V0Qm9vbFZhbHVlRm9yS2V5
KFdlYlByZWZlcmVuY2VzS2V5OjpzaG91bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0S2V5
KCkpKTsKIH0KIAogdm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6aW5zdGFsbFNl
cnZpY2VXb3JrZXIoY29uc3QgU2VydmljZVdvcmtlckNvbnRleHREYXRhJiBkYXRhLCBTdHJpbmcm
JiB1c2VyQWdlbnQpCkBAIC0zNjcsNiArMzY4LDExIEBAIGJvb2wgV2ViU1dDb250ZXh0TWFuYWdl
ckNvbm5lY3Rpb246OmlzVGhyb3R0bGVhYmxlKCkgY29uc3QKICAgICByZXR1cm4gbV9pc1Rocm90
dGxlYWJsZTsKIH0KIAordm9pZCBXZWJTV0NvbnRleHRNYW5hZ2VyQ29ubmVjdGlvbjo6ZGlkRmFp
bEhlYXJ0QmVhdENoZWNrKFNlcnZpY2VXb3JrZXJJZGVudGlmaWVyIHNlcnZpY2VXb3JrZXJJZGVu
dGlmaWVyKQoreworICAgIG1fY29ubmVjdGlvblRvTmV0d29ya1Byb2Nlc3MtPnNlbmQoTWVzc2Fn
ZXM6OldlYlNXU2VydmVyVG9Db250ZXh0Q29ubmVjdGlvbjo6RGlkRmFpbEhlYXJ0QmVhdENoZWNr
IHsgc2VydmljZVdvcmtlcklkZW50aWZpZXIgfSwgMCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShTRVJWSUNFX1dPUktFUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJDb25uZWN0
aW9uLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvU3RvcmFnZS9XZWJTV0NvbnRleHRNYW5h
Z2VyQ29ubmVjdGlvbi5oCmluZGV4IDZmN2RjNzViNWE3OTlhOTU2ZDVmMjgwZDIyY2FhYWI0MGFm
NTMyMzYuLjQyMmE5NzkyNWNhMTdmZjAzNzU0MjNiZGM3M2ViMWRmZWFhNGE3ODggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9TdG9yYWdlL1dlYlNXQ29udGV4dE1hbmFnZXJD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1N0b3JhZ2UvV2ViU1dD
b250ZXh0TWFuYWdlckNvbm5lY3Rpb24uaApAQCAtNzksNiArNzksNyBAQCBwcml2YXRlOgogICAg
IHZvaWQgc2tpcFdhaXRpbmcoV2ViQ29yZTo6U2VydmljZVdvcmtlcklkZW50aWZpZXIsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoKT4mJikgZmluYWw7CiAgICAgdm9pZCBzZXRTY3JpcHRSZXNvdXJj
ZShXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllciwgY29uc3QgVVJMJiwgY29uc3QgV2Vi
Q29yZTo6U2VydmljZVdvcmtlckNvbnRleHREYXRhOjpJbXBvcnRlZFNjcmlwdCYpIGZpbmFsOwog
ICAgIGJvb2wgaXNUaHJvdHRsZWFibGUoKSBjb25zdCBmaW5hbDsKKyAgICB2b2lkIGRpZEZhaWxI
ZWFydEJlYXRDaGVjayhXZWJDb3JlOjpTZXJ2aWNlV29ya2VySWRlbnRpZmllcikgZmluYWw7CiAK
ICAgICAvLyBJUEMgbWVzc2FnZXMuCiAgICAgdm9pZCBzZXJ2aWNlV29ya2VyU3RhcnRlZChPcHRp
b25hbDxXZWJDb3JlOjpTZXJ2aWNlV29ya2VySm9iRGF0YUlkZW50aWZpZXI+LCBXZWJDb3JlOjpT
ZXJ2aWNlV29ya2VySWRlbnRpZmllciwgYm9vbCBkb2VzSGFuZGxlRmV0Y2gpIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDNiMTZhY2Uz
NGU4MDQyYzE0ZGIxZGEyMjY0MjRiNmM4M2JmNTdlYmEuLmM3ZGM3OTAyNjk3ODI1NTIwNTNmMmIy
OTE5NWMwNmJjM2Y3NzZhMGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29s
cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxOS0xMi0yNCAgeW91ZW5uIGZhYmxldCAg
PHlvdWVubkBhcHBsZS5jb20+CisKKyAgICAgICAgU2VydmljZSBXb3JrZXIgZG9lc24ndCB0ZXJt
aW5hdGUgYWZ0ZXIgYSBwZXJpb2Qgb2YgdGltZSB3aGVuIHRocmVhZCBibG9ja2luZworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAyOTkyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS81NjI5ODU5Nj4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJpcyBE
dW1lei4KKworICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwOgor
ICAgICAgICAoV1RSOjpUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVu
dFZhbHVlcyk6CisgICAgICAgIEVuYWJsZSBzbWFsbCB0aW1lb3V0IHZhbHVlcy4KKwogMjAxOS0x
Mi0yMyAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxlLmNvbT4KIAogICAgICAgICBE
RkcvRlRMIHNob3VsZCBiZSBhYmxlIHRvIGV4aXQgdG8gdGhlIG1pZGRsZSBvZiBhIGJ5dGVjb2Rl
CmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL1Rlc3RDb250cm9sbGVyLmNwcCBi
L1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGExZTJmZjk2
ZmJkMjJiOGM4OWE4NjZhZTJhZDMyYTM0OTdlZGFlNWMuLjk0NmMxZmNmYmMwMzRkZDZiNjk1MGNl
OWU1NDYyOTEzNDIwMjMxYWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVz
dENvbnRyb2xsZXIuY3BwCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvVGVzdENvbnRyb2xs
ZXIuY3BwCkBAIC05MzIsNiArOTMyLDggQEAgdm9pZCBUZXN0Q29udHJvbGxlcjo6cmVzZXRQcmVm
ZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcyhjb25zdCBUZXN0T3B0aW9ucyYgb3B0aW8KICAgICBX
S1ByZWZlcmVuY2VzU2V0VmlkZW9QbGF5YmFja1JlcXVpcmVzVXNlckdlc3R1cmUocHJlZmVyZW5j
ZXMsIGZhbHNlKTsKICAgICBXS1ByZWZlcmVuY2VzU2V0QXVkaW9QbGF5YmFja1JlcXVpcmVzVXNl
ckdlc3R1cmUocHJlZmVyZW5jZXMsIGZhbHNlKTsKIAorICAgIFdLUHJlZmVyZW5jZXNTZXRTaG91
bGRVc2VTZXJ2aWNlV29ya2VyU2hvcnRUaW1lb3V0KHByZWZlcmVuY2VzLCB0cnVlKTsKKwogICAg
IHBsYXRmb3JtUmVzZXRQcmVmZXJlbmNlc1RvQ29uc2lzdGVudFZhbHVlcygpOwogfQogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5k
ZXggMGZhMzVjYTUyMmFmOTUwMjFhMDM3ZmMxYjE4NDY0NGI5Y2RiNGY0Zi4uYjJjZDg5OTU3NWEw
YTg5NDA0ZWRkMGE3N2NkNjkwMTU1NDU1NDYwMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDE5
LTEyLTI0ICB5b3Vlbm4gZmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBTZXJ2
aWNlIFdvcmtlciBkb2Vzbid0IHRlcm1pbmF0ZSBhZnRlciBhIHBlcmlvZCBvZiB0aW1lIHdoZW4g
dGhyZWFkIGJsb2NraW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yMDI5OTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU2Mjk4NTk2PgorCisgICAg
ICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgICogaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qczoKKyAgICAgICAgKGFzeW5jLndhaXRGb3JT
ZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKToKKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNl
LXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13
b3JrZXItc3Bpbm5pbmctYWN0aXZhdGUuaHR0cHMuaHRtbDogQWRkZWQuCisgICAgICAgICogaHR0
cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBz
LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLmh0bWw6IEFkZGVkLgorICAgICAg
ICAqIGh0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0
YWxsLmh0dHBzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaHR0cC93cHQvc2Vydmlj
ZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbDogQWRk
ZWQuCisgICAgICAgICogaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNw
aW5uaW5nLW1lc3NhZ2UuaHR0cHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBodHRw
L3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5odHRw
cy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vydmlj
ZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzOiBBZGRlZC4KKwogMjAxOS0xMi0yMyAgRGFuaWVs
IEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjIxMjY5
Myk6IGdldENsaWVudFJlY3RzKCksIGdldEJvdW5kaW5nQ2xpZW50UmVjdCgpIGZvciByYW5nZSB0
aGF0IHNwYW5zIG11bHRpLWxpbmVzIGRpZmZlcnMgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGV4dCBp
cyBzZWxlY3RlZApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3Jlc291cmNlcy9yb3V0aW5lcy5qcyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9yZXNvdXJjZXMvcm91dGluZXMuanMKaW5kZXggZGYyMzkyNTU4NDIyMjA2ZmFkNjE3
YTVlZWM3Y2M1OTZlZDRiNDE1Mi4uYzZkYjgyY2JlNmZmYzU1ZDEwNTI0OTU1YTBhMWE5NjQzMjU5
MWE1ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3Jl
c291cmNlcy9yb3V0aW5lcy5qcworKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdv
cmtlcnMvcmVzb3VyY2VzL3JvdXRpbmVzLmpzCkBAIC0yNywzICsyNywxNyBAQCBmdW5jdGlvbiB3
YWl0Rm9yU3RhdGUod29ya2VyLCBzdGF0ZSkKICAgICAgICAgfSk7CiAgICAgfSk7CiB9CisKK2Fz
eW5jIGZ1bmN0aW9uIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcikK
K3sKKyAgICBpZiAoIXdpbmRvdy5pbnRlcm5hbHMpCisgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdCgicmVxdWlyZXMgaW50ZXJuYWxzIik7CisKKyAgICBsZXQgY291bnQgPSAxMDA7CisgICAg
d2hpbGUgKC0tY291bnQgPiAwICYmIGF3YWl0IGludGVybmFscy5pc1NlcnZpY2VXb3JrZXJSdW5u
aW5nKHdvcmtlcikpIHsKKyAgICAgICAgd29ya2VyLnBvc3RNZXNzYWdlKCJ0ZXN0Iik7CisgICAg
ICAgIGF3YWl0IG5ldyBQcm9taXNlKHJlc29sdmUgPT4gc2V0VGltZW91dChyZXNvbHZlLCA1MCkp
OworICAgIH0KKyAgICBpZiAoY291bnQgPT09IDApCisgICAgICAgIHJldHVybiBQcm9taXNlLnJl
amVjdCgic2VydmljZSB3b3JrZXIgaXMgc3RpbGwgcnVubmluZyIpOworfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5u
aW5nLWFjdGl2YXRlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMDU4MGE5Y2YzZDkyMmYzYmY1YjI2MDA0NjMyMGE1MDY1NjNk
YTgxOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29y
a2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1hY3RpdmF0ZS5odHRwcy1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSw0IEBACisKK1BBU1MgU3BpbiBpbiBhY3RpdmF0ZSAKK1BBU1MgU3BpbiBhZnRl
ciBhY3RpdmF0ZSAKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13
b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0dHBzLmh0bWwgYi9MYXlv
dXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmct
YWN0aXZhdGUuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mZTc3YzRiZTlkMjI4ZDdiNTAwYzE2YTll
ZDc1NzNhNzBmZjMwOTYyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQv
c2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWFjdGl2YXRlLmh0dHBzLmh0
bWwKQEAgLTAsMCArMSwyOCBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIvcmVzb3Vy
Y2VzL3Rlc3RoYXJuZXNzLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIvcmVzb3VyY2VzL3Rl
c3RoYXJuZXNzcmVwb3J0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvcm91
dGluZXMuanMiPjwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0PgorcHJvbWlzZV90
ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAgY29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2
aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdv
cmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1hY3RpdmF0ZSIgfSk7CisgICAgY29uc3Qgd29ya2Vy
ID0gcmVnaXN0cmF0aW9uLmluc3RhbGxpbmc7CisKKyAgICBhd2FpdCB3YWl0Rm9yU3RhdGUocmVn
aXN0cmF0aW9uLmluc3RhbGxpbmcsICJhY3RpdmF0aW5nIik7CisKKyAgICByZXR1cm4gd2FpdEZv
clNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGluIGluIGFjdGl2
YXRlIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0IHJlZ2lz
dHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJzZXJ2aWNl
LXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0ZXItYWN0aXZh
dGUiIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisg
ICAgYXdhaXQgd2FpdEZvclN0YXRlKHdvcmtlciwgImFjdGl2YXRlZCIpOworCisgICAgcmV0dXJu
IHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJSdW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBh
ZnRlciBhY3RpdmF0ZSIpOworPC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bp
bm5pbmctZmV0Y2guaHR0cHMtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2Vy
dmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVk
LnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi45MDM5ZjAyMWI2N2IxYjJkNjllNjJkMzI5MDUyNGY0YzMzNTBjMWQ0
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJz
L3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxLDUgQEAKKworCitQQVNTIFNwaW4gaW4gZmV0Y2ggCitQQVNTIFNwaW4gYWZ0ZXIgZmV0Y2gg
CisKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2
aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93
cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWZldGNoLmh0dHBzLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uN2I1MjNlYzVjNWM2ZDkyMjBlYjE5Y2Y3Mzg3YmIzOTFkZTUwNWZhZgot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9z
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy1mZXRjaC5odHRwcy5odG1sCkBAIC0wLDAgKzEsMzIgQEAK
KzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzcy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iL3Jlc291cmNlcy90ZXN0aGFybmVzc3JlcG9ydC5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3JvdXRpbmVzLmpzIj48L3NjcmlwdD4K
KzwvaGVhZD4KKzxib2R5PgorPHNjcmlwdD4KK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4g
eworICAgIGNvbnN0IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2Vy
LnJlZ2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDog
InNwaW4tZmV0Y2giIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxs
aW5nOworCisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAi
YWN0aXZhdGVkIik7CisKKyAgICB3aXRoSWZyYW1lKCJzcGluLWZldGNoIik7CisKKyAgICByZXR1
cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGlu
IGluIGZldGNoIik7CisKK3Byb21pc2VfdGVzdChhc3luYyAodGVzdCkgPT4geworICAgIGNvbnN0
IHJlZ2lzdHJhdGlvbiA9IGF3YWl0IG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJlZ2lzdGVyKCJz
ZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNwaW4tYWZ0ZXIt
ZmV0Y2giIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOwor
CisgICAgYXdhaXQgd2FpdEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZh
dGVkIik7CisKKyAgICB3aXRoSWZyYW1lKCJzcGluLWFmdGVyLWZldGNoIik7CisKKyAgICByZXR1
cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJTcGlu
IGFmdGVyIGZldGNoIik7Cis8L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlu
bmluZy1pbnN0YWxsLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2h0dHAvd3B0L3Nl
cnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1pbnN0YWxsLmh0dHBzLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi43OGMxODJjODRhMjFkMDdiZmZmMWQzNDNmOGVmOTc5NDA4YjZi
NTE5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3Jr
ZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMtZXhwZWN0ZWQudHh0CkBA
IC0wLDAgKzEsNSBAQAorCitQQVNTIFNwaW4gYXQgcnVubmluZyAgCitQQVNTIFNwaW4gaW4gaW5z
dGFsbCAKK1BBU1MgU3BpbiBhZnRlciBpbnN0YWxsIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctaW5zdGFs
bC5odHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZp
Y2Utd29ya2VyLXNwaW5uaW5nLWluc3RhbGwuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lZWZjNjc2
ODA1NDIzY2RjNjVmMzQwNGM0YjZiMTlmY2RmMmI3MTBiCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5n
LWluc3RhbGwuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI1IEBACis8aHRtbD4KKzxoZWFkPgorPHNj
cmlwdCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBz
cmM9InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxz
Y3JpcHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICByZXR1cm4gcHJvbWlz
ZV9yZWplY3RzKHRlc3QsIG5ldyBUeXBlRXJyb3IsIG5hdmlnYXRvci5zZXJ2aWNlV29ya2VyLnJl
Z2lzdGVyKCJzZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMiLCB7IHNjb3BlIDogInNw
aW4tcnVuIiB9KSk7Cit9LCAiU3BpbiBhdCBydW5uaW5nICIpOworCitwcm9taXNlX3Rlc3QoYXN5
bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2FpdCBuYXZpZ2F0b3Iu
c2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpz
IiwgeyBzY29wZSA6ICJzcGluLWluc3RhbGwiIH0pOworICAgIGNvbnN0IHdvcmtlciA9IHJlZ2lz
dHJhdGlvbi5pbnN0YWxsaW5nOworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24u
aW5zdGFsbGluZywgInJlZHVuZGFudCIpOworfSwgIlNwaW4gaW4gaW5zdGFsbCIpOworCitwcm9t
aXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRpb24gPSBhd2Fp
dCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3JrZXItc3Bpbm5p
bmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLWFmdGVyLWluc3RhbGwiIH0pOworICAgIHJl
dHVybiB3YWl0Rm9yU2VydmljZVdvcmtlck5vTG9uZ2VyUnVubmluZyhyZWdpc3RyYXRpb24uaW5z
dGFsbGluZyk7Cit9LCAiU3BpbiBhZnRlciBpbnN0YWxsIik7Cis8L3NjcmlwdD4KKzwvYm9keT4K
KzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vy
cy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy1tZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Utd29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmlu
Zy1tZXNzYWdlLmh0dHBzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MWE0NTU4MWI0OTZkMmNk
NmFiYzdmMjEwODRhMDk1MzkzMWUxNzI1Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
aHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1lc3NhZ2Uu
aHR0cHMtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsNCBAQAorCitQQVNTIFNwaW4gaW4gbWVzc2Fn
ZSAKK1BBU1MgU3BpbiBhZnRlciBtZXNzYWdlIAorCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctbWVzc2FnZS5o
dHRwcy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Ut
d29ya2VyLXNwaW5uaW5nLW1lc3NhZ2UuaHR0cHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43YjhkNTg5OTU0
MzkzM2MyOTQ1MzZmYjA2MGQ3MGY3NzI5MWY0YTc5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC93cHQvc2VydmljZS13b3JrZXJzL3NlcnZpY2Utd29ya2VyLXNwaW5uaW5nLW1l
c3NhZ2UuaHR0cHMuaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3MuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
Ii9yZXNvdXJjZXMvdGVzdGhhcm5lc3NyZXBvcnQuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9
InJlc291cmNlcy9yb3V0aW5lcy5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3Jp
cHQ+Citwcm9taXNlX3Rlc3QoYXN5bmMgKHRlc3QpID0+IHsKKyAgICBjb25zdCByZWdpc3RyYXRp
b24gPSBhd2FpdCBuYXZpZ2F0b3Iuc2VydmljZVdvcmtlci5yZWdpc3Rlcigic2VydmljZS13b3Jr
ZXItc3Bpbm5pbmctd29ya2VyLmpzIiwgeyBzY29wZSA6ICJzcGluLW1lc3NhZ2UiIH0pOworICAg
IGNvbnN0IHdvcmtlciA9IHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nOworCisgICAgYXdhaXQgd2Fp
dEZvclN0YXRlKHJlZ2lzdHJhdGlvbi5pbnN0YWxsaW5nLCAiYWN0aXZhdGVkIik7CisKKyAgICBy
ZXR1cm4gd2FpdEZvclNlcnZpY2VXb3JrZXJOb0xvbmdlclJ1bm5pbmcod29ya2VyKTsKK30sICJT
cGluIGluIG1lc3NhZ2UiKTsKKworcHJvbWlzZV90ZXN0KGFzeW5jICh0ZXN0KSA9PiB7CisgICAg
Y29uc3QgcmVnaXN0cmF0aW9uID0gYXdhaXQgbmF2aWdhdG9yLnNlcnZpY2VXb3JrZXIucmVnaXN0
ZXIoInNlcnZpY2Utd29ya2VyLXNwaW5uaW5nLXdvcmtlci5qcyIsIHsgc2NvcGUgOiAic3Bpbi1h
ZnRlci1tZXNzYWdlIiB9KTsKKyAgICBjb25zdCB3b3JrZXIgPSByZWdpc3RyYXRpb24uaW5zdGFs
bGluZzsKKworICAgIGF3YWl0IHdhaXRGb3JTdGF0ZShyZWdpc3RyYXRpb24uaW5zdGFsbGluZywg
ImFjdGl2YXRlZCIpOworCisgICAgcmV0dXJuIHdhaXRGb3JTZXJ2aWNlV29ya2VyTm9Mb25nZXJS
dW5uaW5nKHdvcmtlcik7Cit9LCAiU3BpbiBhZnRlciBtZXNzYWdlIik7Cis8L3NjcmlwdD4KKzwv
Ym9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvd3B0L3NlcnZpY2Ut
d29ya2Vycy9zZXJ2aWNlLXdvcmtlci1zcGlubmluZy13b3JrZXIuanMgYi9MYXlvdXRUZXN0cy9o
dHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2VydmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjVlZjgzNzkxYjc5N2ViODFlYzAyNDNhODE3MzE3ODM4YjI0MmViZjQKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3dwdC9zZXJ2aWNlLXdvcmtlcnMvc2Vy
dmljZS13b3JrZXItc3Bpbm5pbmctd29ya2VyLmpzCkBAIC0wLDAgKzEsNDEgQEAKK2lmIChzZWxm
LnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1ydW4iKSkKKyAgICB3aGlsZSh0cnVl
KSB7IH07CisKK2Z1bmN0aW9uIGluc3RhbGxUZXN0KGV2ZW50KQoreworICAgIGlmIChzZWxmLnJl
Z2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1pbnN0YWxsIikpCisgICAgICAgIHdoaWxl
KHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24uc2NvcGUuaW5jbHVkZXMoInNw
aW4tYWZ0ZXItaW5zdGFsbCIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4geyB3aGls
ZSh0cnVlKSB7IH07IH0sIDApOworfQorCitmdW5jdGlvbiBhY3RpdmF0ZVRlc3QoZXZlbnQpCit7
CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1ZGVzKCJzcGluLWFjdGl2YXRl
IikpCisgICAgICAgIHdoaWxlKHRydWUpIHsgfTsKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRpb24u
c2NvcGUuaW5jbHVkZXMoInNwaW4tYWZ0ZXItYWN0aXZhdGUiKSkKKyAgICAgICAgc2VsZi5zZXRU
aW1lb3V0KCgpID0+IHsgd2hpbGUodHJ1ZSkgeyB9OyB9LCAwKTsKK30KKworZnVuY3Rpb24gbWVz
c2FnZVRlc3QoZXZlbnQpCit7CisgICAgaWYgKHNlbGYucmVnaXN0cmF0aW9uLnNjb3BlLmluY2x1
ZGVzKCJzcGluLW1lc3NhZ2UiKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9OworICAgIGlmIChz
ZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1tZXNzYWdlIikpCisg
ICAgICAgIHNlbGYuc2V0VGltZW91dCgoKSA9PiB7IHdoaWxlKHRydWUpIHsgfTsgfSwgMCk7Cit9
CisKK2Z1bmN0aW9uIGZldGNoVGVzdChldmVudCkKK3sKKyAgICBpZiAoc2VsZi5yZWdpc3RyYXRp
b24uc2NvcGUuaW5jbHVkZXMoInNwaW4tZmV0Y2giKSkKKyAgICAgICAgd2hpbGUodHJ1ZSkgeyB9
OworICAgIGlmIChzZWxmLnJlZ2lzdHJhdGlvbi5zY29wZS5pbmNsdWRlcygic3Bpbi1hZnRlci1m
ZXRjaCIpKQorICAgICAgICBzZWxmLnNldFRpbWVvdXQoKCkgPT4geyB3aGlsZSh0cnVlKSB7IH07
IH0sIDApOworICAgIGV2ZW50LnJlc3BvbmRXaXRoKG5ldyBSZXNwb25zZSgib2siKSk7Cit9CisK
Kworc2VsZi5hZGRFdmVudExpc3RlbmVyKCJpbnN0YWxsIiwgaW5zdGFsbFRlc3QpOworc2VsZi5h
ZGRFdmVudExpc3RlbmVyKCJhY3RpdmF0ZSIsIGFjdGl2YXRlVGVzdCk7CitzZWxmLmFkZEV2ZW50
TGlzdGVuZXIoIm1lc3NhZ2UiLCBtZXNzYWdlVGVzdCk7CitzZWxmLmFkZEV2ZW50TGlzdGVuZXIo
ImZldGNoIiwgZmV0Y2hUZXN0KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>