<?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>38717</bug_id>
          
          <creation_ts>2010-05-06 21:24:26 -0700</creation_ts>
          <short_desc>REGRESSION(r58933): &quot;Broke all websocket tests on Tiger&quot; (Requested by eseidel on #webkit).</short_desc>
          <delta_ts>2010-05-06 21:52:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>38034</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>levin</cc>
    
    <cc>ukai</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>222145</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-06 21:24:26 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/58933 broke the build:
&quot;Broke all websocket tests on Tiger&quot; (Requested by eseidel on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222146</commentid>
    <comment_count>1</comment_count>
      <attachid>55336</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-06 21:24:36 -0700</bug_when>
    <thetext>Created attachment 55336
ROLLOUT of r58933

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID --ignore-builders

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222148</commentid>
    <comment_count>2</comment_count>
      <attachid>55336</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-05-06 21:25:11 -0700</bug_when>
    <thetext>Comment on attachment 55336
ROLLOUT of r58933

Ukai, if you have a fix please feel free to cancel the rollout.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222153</commentid>
    <comment_count>3</comment_count>
    <who name="Fumitoshi Ukai">ukai</who>
    <bug_when>2010-05-06 21:44:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 55336 [details])
&gt; Ukai, if you have a fix please feel free to cancel the rollout.

http://trac.webkit.org/changeset/58933 uses webkitpy to launch websocket server for LayoutTests/websocket/tests, and webkitpy requires python2.5.

Tiger still uses python2.3.
So, I&apos;ll wait someone setup python2.5 on tiger bot.
If it&apos;s impossible in a few days, I&apos;ll just copy pywebsocket 0.5 in webkitpy/thirdparty.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222156</commentid>
    <comment_count>4</comment_count>
      <attachid>55336</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-06 21:52:07 -0700</bug_when>
    <thetext>Comment on attachment 55336
ROLLOUT of r58933

Clearing flags on attachment: 55336

Committed r58934: &lt;http://trac.webkit.org/changeset/58934&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222157</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-05-06 21:52:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55336</attachid>
            <date>2010-05-06 21:24:36 -0700</date>
            <delta_ts>2010-05-06 21:52:07 -0700</delta_ts>
            <desc>ROLLOUT of r58933</desc>
            <filename>bug-38717-20100507042434.patch</filename>
            <type>text/plain</type>
            <size>172048</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL0NoYW5nZUxvZyBiL1dlYktpdFRvb2xzL0NoYW5nZUxv
ZwppbmRleCBkYzNkZDk2MTYwZjVkODFkYmNhZWIyMDhkZTdiNTAwMDdjN2RiNmM0Li5mZjdiMjY0
NTBjYmRlMGNkYjQ3ZTJiODY4NDU2MmQxZWUzNGJkZWQ0IDEwMDY0NAotLS0gYS9XZWJLaXRUb29s
cy9DaGFuZ2VMb2cKKysrIGIvV2ViS2l0VG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTMgQEAK
KzIwMTAtMDUtMDYgIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgor
CisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHI1ODkzMy4KKyAgICAgICAgaHR0cDov
L3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTg5MzMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzE3CisKKyAgICAgICAgIkJyb2tlIGFsbCB3ZWJz
b2NrZXQgdGVzdHMgb24gVGlnZXIiIChSZXF1ZXN0ZWQgYnkgZXNlaWRlbCBvbgorICAgICAgICAj
d2Via2l0KS4KKworICAgICAgICAqIFNjcmlwdHMvbmV3LXJ1bi13ZWJraXQtd2Vic29ja2V0c2Vy
dmVyOgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6CisgICAgICAgICog
U2NyaXB0cy9ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlcjoKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHk6CisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5OgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9DT1BZSU5HOiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvTUFOSUZFU1QuaW46
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC9SRUFETUU6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9w
eXdlYnNvY2tldC9SRUFETUUud2Via2l0OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9lY2hvX2NsaWVudC5weTogQWRkZWQu
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1w
bGUvZWNob193c2gucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC9leGFtcGxlL2hhbmRsZXJfbWFwLnR4dDogQWRkZWQuCisgICAgICAg
ICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tl
dC9fX2luaXRfXy5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9kaXNwYXRjaC5weTogQWRkZWQuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNv
Y2tldC9oYW5kc2hha2UucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvaGVhZGVycGFyc2VyaGFuZGxlci5w
eTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L21vZF9weXdlYnNvY2tldC9tZW1vcml6aW5nZmlsZS5weTogQWRkZWQuCisgICAgICAgICog
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9t
c2d1dGlsLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHk6IEFkZGVkLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvdXRpbC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L3NldHVwLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC9jb25maWcucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L21vY2sucHk6IEFk
ZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90
ZXN0L3J1bl9hbGwucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZGlzcGF0Y2gucHk6IEFkZGVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfaGFuZHNo
YWtlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5OiBBZGRlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21vY2sucHk6
IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC90ZXN0L3Rlc3RfbXNndXRpbC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGlsLnB5OiBBZGRlZC4KKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0
YS9SRUFETUU6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9w
eXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL2JsYW5rX3dzaC5weTogQWRkZWQuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvb3JpZ2luX2NoZWNrX3dzaC5weTogQWRkZWQuCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxl
cnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHk6IEFkZGVkLgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRs
ZXJzL3N1Yi9ub193c2hfYXRfdGhlX2VuZC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3Vi
L25vbl9jYWxsYWJsZV93c2gucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi9wbGFpbl93
c2gucHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdl
YnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dz
aC5weTogQWRkZWQuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3RyYW5zZmVyX3NpZ193c2gu
cHk6IEFkZGVkLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RkYXRhL2hlbGxvLnBsOiBBZGRlZC4KKwogMjAxMC0wNS0wNiAgRnVtaXRv
c2hpIFVrYWkgIDx1a2FpQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZp
ZCBMZXZpbi4KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQt
d2Vic29ja2V0c2VydmVyIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJz
b2NrZXRzZXJ2ZXIKaW5kZXggZTQzYWJhYjk0OGExMjJlZGIxNTY5YmMzYTg0MjViY2JhZDZlOGE1
ZS4uOGU0YWVhYWM4MmNhOTZhYzQ1OWM2OWI1ZDkzMWI3MzA5ZDgyZDJmMyAxMDA2NDQKLS0tIGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXIKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXIKQEAgLTU5
LDggKzU5LDYgQEAgZGVmIG1haW4oKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVz
dD0icmVnaXN0ZXJfY3lnd2luIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0n
UmVnaXN0ZXIgQ3lnd2luIHBhdGhzIChvbiBXaW4gdHJ5IGJvdHMpJykKICAgICBvcHRpb25fcGFy
c2VyLmFkZF9vcHRpb24oJy0tcGlkZmlsZScsIGhlbHA9J3BhdGggdG8gcGlkIGZpbGUuJykKLSAg
ICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy0tb3V0cHV0LWRpcicsIGRlc3Q9J291dHB1dF9k
aXInLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIGhlbHA9J291
dHB1dCBkaXJlY3RvcnkuJykKICAgICBvcHRpb25fcGFyc2VyLmFkZF9vcHRpb24oJy12JywgJy0t
dmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCiAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGRlZmF1bHQ9RmFsc2UsIGhlbHA9J2luY2x1ZGUgZGVidWctbGV2ZWwgbG9nZ2luZycpCiAg
ICAgb3B0aW9ucywgYXJncyA9IG9wdGlvbl9wYXJzZXIucGFyc2VfYXJncygpCkBAIC03Myw5ICs3
MSw2IEBAIGRlZiBtYWluKCk6CiAgICAgICAgICAgICAjIEZJWE1FOiBXZSBzaG91bGRuJ3QgZ3Jh
YiBhdCB0aGlzIHByaXZhdGUgdmFyaWFibGUuCiAgICAgICAgICAgICBvcHRpb25zLnBvcnQgPSB3
ZWJzb2NrZXRfc2VydmVyLl9ERUZBVUxUX1dTX1BPUlQKIAotICAgIGlmIG5vdCBvcHRpb25zLm91
dHB1dF9kaXI6Ci0gICAgICAgIG9wdGlvbnMub3V0cHV0X2RpciA9IHRlbXBmaWxlLmdldHRlbXBk
aXIoKQotCiAgICAga3dkcyA9IHsncG9ydCc6IG9wdGlvbnMucG9ydCwgJ3VzZV90bHMnOiBvcHRp
b25zLnVzZV90bHN9CiAgICAgaWYgb3B0aW9ucy5yb290OgogICAgICAgICBrd2RzWydyb290J10g
PSBvcHRpb25zLnJvb3QKQEAgLTg4LDcgKzgzLDcgQEAgZGVmIG1haW4oKToKICAgICAgICAga3dk
c1sncGlkZmlsZSddID0gb3B0aW9ucy5waWRmaWxlCiAKICAgICBwb3J0X29iaiA9IGZhY3Rvcnku
Z2V0KCkKLSAgICBweXdlYnNvY2tldCA9IHdlYnNvY2tldF9zZXJ2ZXIuUHlXZWJTb2NrZXQocG9y
dF9vYmosIG9wdGlvbnMub3V0cHV0X2RpciwgKiprd2RzKQorICAgIHB5d2Vic29ja2V0ID0gd2Vi
c29ja2V0X3NlcnZlci5QeVdlYlNvY2tldChwb3J0X29iaiwgdGVtcGZpbGUuZ2V0dGVtcGRpcigp
LCAqKmt3ZHMpCiAKICAgICBsb2dfbGV2ZWwgPSBsb2dnaW5nLldBUk4KICAgICBpZiBvcHRpb25z
LnZlcmJvc2U6CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL29sZC1ydW4td2Via2l0
LXRlc3RzIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwppbmRleCBh
NzQyMmJlYzM2OWY2ZDAyNTdjYzI3ZjMwNzEwMzRkY2NlMTc2YzdiLi5mODQ1ODMyNDUyM2Q2MWQ0
MzVhZWYwYjJjNGFlNWRiOTM0ZmViNDIyIDEwMDc1NQotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRz
L29sZC1ydW4td2Via2l0LXRlc3RzCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13
ZWJraXQtdGVzdHMKQEAgLTU1Nyw3ICs1NTcsNyBAQCBteSAkbGFzdERpcmVjdG9yeSA9ICIiOwog
CiBteSAkaXNIdHRwZE9wZW4gPSAwOwogbXkgJGlzV2ViU29ja2V0U2VydmVyT3BlbiA9IDA7Ci1t
eSAkd2ViU29ja2V0U2VydmVyUGlkRmlsZSA9IDA7CitteSAkd2ViU29ja2V0U2VydmVyUElEID0g
MDsKIG15ICRmYWlsZWRUb1N0YXJ0V2ViU29ja2V0U2VydmVyID0gMDsKICMgd3NzIGlzIGRpc2Fi
bGVkIHVudGlsIGFsbCBwbGF0Zm9ybXMgc3VwcG9ydCBweU9wZW5TU0wuCiAjIG15ICR3ZWJTb2Nr
ZXRTZWN1cmVTZXJ2ZXJQSUQgPSAwOwpAQCAtMTQyNSwxOSArMTQyNSw1NCBAQCBzdWIgb3Blbldl
YlNvY2tldFNlcnZlcklmTmVlZGVkKCkKICAgICByZXR1cm4gMSBpZiAkaXNXZWJTb2NrZXRTZXJ2
ZXJPcGVuOwogICAgIHJldHVybiAwIGlmICRmYWlsZWRUb1N0YXJ0V2ViU29ja2V0U2VydmVyOwog
CisgICAgbXkgJHdlYlNvY2tldFNlcnZlclBhdGggPSAiL3Vzci9iaW4vcHl0aG9uIjsKKyAgICBt
eSAkd2ViU29ja2V0UHl0aG9uUGF0aCA9ICJXZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvcHl3ZWJzb2NrZXQiOwogICAgIG15ICR3ZWJTb2NrZXRIYW5kbGVyRGlyID0gIiR0
ZXN0RGlyZWN0b3J5IjsKKyAgICBteSAkd2ViU29ja2V0SGFuZGxlclNjYW5EaXIgPSAiJHRlc3RE
aXJlY3Rvcnkvd2Vic29ja2V0L3Rlc3RzIjsKKyAgICBteSAkd2ViU29ja2V0SGFuZGxlck1hcEZp
bGUgPSAiJHdlYlNvY2tldEhhbmRsZXJTY2FuRGlyL2hhbmRsZXJfbWFwLnR4dCI7CisgICAgbXkg
JHNzbENlcnRpZmljYXRlID0gIiR0ZXN0RGlyZWN0b3J5L2h0dHAvY29uZi93ZWJraXQtaHR0cGQu
cGVtIjsKICAgICBteSAkYWJzVGVzdFJlc3VsdHNEaXJlY3RvcnkgPSByZXNvbHZlQW5kTWFrZVRl
c3RSZXN1bHRzRGlyZWN0b3J5KCk7Ci0gICAgJHdlYlNvY2tldFNlcnZlclBpZEZpbGUgPSAiJGFi
c1Rlc3RSZXN1bHRzRGlyZWN0b3J5L3dlYnNvY2tldC5waWQiOworICAgIG15ICRsb2dGaWxlID0g
IiRhYnNUZXN0UmVzdWx0c0RpcmVjdG9yeS9weXdlYnNvY2tldF9sb2cudHh0IjsKIAogICAgIG15
IEBhcmdzID0gKAotICAgICAgICAiV2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13
ZWJzb2NrZXRzZXJ2ZXIiLAotICAgICAgICAiLS1zZXJ2ZXIiLCAic3RhcnQiLAorICAgICAgICAi
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IiwKKyAgICAgICAgIi0tc2VydmVyLWhvc3QiLCAiMTI3
LjAuMC4xIiwKICAgICAgICAgIi0tcG9ydCIsICIkd2ViU29ja2V0UG9ydCIsCi0gICAgICAgICIt
LXJvb3QiLCAiJHdlYlNvY2tldEhhbmRsZXJEaXIiLAotICAgICAgICAiLS1vdXRwdXQtZGlyIiwg
IiRhYnNUZXN0UmVzdWx0c0RpcmVjdG9yeSIsCi0gICAgICAgICItLXBpZGZpbGUiLCAiJHdlYlNv
Y2tldFNlcnZlclBpZEZpbGUiCisgICAgICAgICItLWRvY3VtZW50LXJvb3QiLCAiJHdlYlNvY2tl
dEhhbmRsZXJEaXIiLAorICAgICAgICAiLS1zY2FuLWRpciIsICIkd2ViU29ja2V0SGFuZGxlclNj
YW5EaXIiLAorICAgICAgICAiLS13ZWJzb2NrLWhhbmRsZXJzLW1hcC1maWxlIiwgIiR3ZWJTb2Nr
ZXRIYW5kbGVyTWFwRmlsZSIsCisgICAgICAgICItLWNnaS1wYXRocyIsICIvd2Vic29ja2V0L3Rl
c3RzIiwKKyAgICAgICAgIi0tbG9nLWZpbGUiLCAiJGxvZ0ZpbGUiLAorICAgICAgICAiLS1zdHJp
Y3QiLAogICAgICk7Ci0gICAgc3lzdGVtICIvdXNyL2Jpbi9weXRob24iLCBAYXJnczsKKyAgICAj
IHdzcyBpcyBkaXNhYmxlZCB1bnRpbCBhbGwgcGxhdGZvcm1zIHN1cHBvcnQgcHlPcGVuU1NMLgor
ICAgICMgbXkgQGFyZ3NTZWN1cmUgPSAoCisgICAgIyAgICAgIldlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9u
ZS5weSIsCisgICAgIyAgICAgIi1wIiwgIiR3ZWJTb2NrZXRTZWN1cmVQb3J0IiwKKyAgICAjICAg
ICAiLWQiLCAiJHdlYlNvY2tldEhhbmRsZXJEaXIiLAorICAgICMgICAgICItdCIsCisgICAgIyAg
ICAgIi1rIiwgIiRzc2xDZXJ0aWZpY2F0ZSIsCisgICAgIyAgICAgIi1jIiwgIiRzc2xDZXJ0aWZp
Y2F0ZSIsCisgICAgIyApOworCisgICAgJEVOVnsiUFlUSE9OUEFUSCJ9ID0gJHdlYlNvY2tldFB5
dGhvblBhdGg7CisgICAgJHdlYlNvY2tldFNlcnZlclBJRCA9IG9wZW4zKFwqV0VCU09DS0VUU0VS
VkVSX0lOLCBcKldFQlNPQ0tFVFNFUlZFUl9PVVQsIFwqV0VCU09DS0VUU0VSVkVSX0VSUiwgJHdl
YlNvY2tldFNlcnZlclBhdGgsIEBhcmdzKTsKKyAgICAjIHdzcyBpcyBkaXNhYmxlZCB1bnRpbCBh
bGwgcGxhdGZvcm1zIHN1cHBvcnQgcHlPcGVuU1NMLgorICAgICMgJHdlYlNvY2tldFNlY3VyZVNl
cnZlclBJRCA9IG9wZW4zKFwqV0VCU09DS0VUU0VDVVJFU0VSVkVSX0lOLCBcKldFQlNPQ0tFVFNF
Q1VSRVNFUlZFUl9PVVQsIFwqV0VCU09DS0VUU0VDVVJFU0VSVkVSX0VSUiwgJHdlYlNvY2tldFNl
cnZlclBhdGgsIEBhcmdzU2VjdXJlKTsKKyAgICAjIG15IEBsaXN0ZW4gPSAoImh0dHA6Ly8xMjcu
MC4wLjE6JHdlYlNvY2tldFBvcnQiLCAiaHR0cHM6Ly8xMjcuMC4wLjE6JHdlYlNvY2tldFNlY3Vy
ZVBvcnQiKTsKKyAgICBteSBAbGlzdGVuID0gKCJodHRwOi8vMTI3LjAuMC4xOiR3ZWJTb2NrZXRQ
b3J0Iik7CisgICAgZm9yIChteSAkaSA9IDA7ICRpIDwgQGxpc3RlbjsgJGkrKykgeworICAgICAg
ICBteSAkcmV0cnlDb3VudCA9IDEwOworICAgICAgICB3aGlsZSAoc3lzdGVtKCIvdXNyL2Jpbi9j
dXJsIC1rIC1xIC0tc2lsZW50IC0tc3RkZXJyIC0gLS1vdXRwdXQgL2Rldi9udWxsICRsaXN0ZW5b
JGldIikgJiYgJHJldHJ5Q291bnQpIHsKKyAgICAgICAgICAgIHNsZWVwIDE7CisgICAgICAgICAg
ICAtLSRyZXRyeUNvdW50OworICAgICAgICB9CisgICAgICAgIHVubGVzcyAoJHJldHJ5Q291bnQp
IHsKKyAgICAgICAgICAgIHByaW50IFNUREVSUiAiVGltZWQgb3V0IHdhaXRpbmcgZm9yIFdlYlNv
Y2tldFNlcnZlciB0byBzdGFydC5cbiI7CisgICAgICAgICAgICAkZmFpbGVkVG9TdGFydFdlYlNv
Y2tldFNlcnZlciA9IDE7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgIH0K
IAogICAgICRpc1dlYlNvY2tldFNlcnZlck9wZW4gPSAxOwogICAgIHJldHVybiAxOwpAQCAtMTQ0
NywxNSArMTQ4MiwxNyBAQCBzdWIgY2xvc2VXZWJTb2NrZXRTZXJ2ZXIoKQogewogICAgIHJldHVy
biBpZiAhJGlzV2ViU29ja2V0U2VydmVyT3BlbjsKIAotICAgIG15IEBhcmdzID0gKAotICAgICAg
ICAiV2ViS2l0VG9vbHMvU2NyaXB0cy9uZXctcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXIiLAot
ICAgICAgICAiLS1zZXJ2ZXIiLCAic3RvcCIsCi0gICAgICAgICItLXBpZGZpbGUiLCAiJHdlYlNv
Y2tldFNlcnZlclBpZEZpbGUiCi0gICAgKTsKLSAgICBzeXN0ZW0gIi91c3IvYmluL3B5dGhvbiIs
IEBhcmdzOwotICAgIHVubGluayAiJHdlYlNvY2tldFNlcnZlclBpZEZpbGUiOworICAgIGNsb3Nl
IFdFQlNPQ0tFVFNFUlZFUl9JTjsKKyAgICBjbG9zZSBXRUJTT0NLRVRTRVJWRVJfT1VUOworICAg
IGNsb3NlIFdFQlNPQ0tFVFNFUlZFUl9FUlI7CisgICAga2lsbCAxNSwgJHdlYlNvY2tldFNlcnZl
clBJRDsKIAogICAgICMgd3NzIGlzIGRpc2FibGVkIHVudGlsIGFsbCBwbGF0Zm9ybXMgc3VwcG9y
dCBweU9wZW5TU0wuCisgICAgIyBjbG9zZSBXRUJTT0NLRVRTRUNVUkVTRVJWRVJfSU47CisgICAg
IyBjbG9zZSBXRUJTT0NLRVRTRUNVUkVTRVJWRVJfT1VUOworICAgICMgY2xvc2UgV0VCU09DS0VU
U0VDVVJFU0VSVkVSX0VSUjsKKyAgICAjIGtpbGwgMTUsICR3ZWJTb2NrZXRTZWN1cmVTZXJ2ZXJQ
SUQ7CisKICAgICAkaXNXZWJTb2NrZXRTZXJ2ZXJPcGVuID0gMDsKIH0KIApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0LXdlYnNvY2tldHNlcnZlciBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvcnVuLXdlYmtpdC13ZWJzb2NrZXRzZXJ2ZXIKaW5kZXggMDhkNDMwYjEzNDRj
NjJjMDI2NGZjZmZkYjBmYzQwM2ZiM2VlNDk5My4uMDZmOTA3OTc4YjZkZTRiNTAyZGUwNjFhMTVm
NzE2OTY0M2JjYmQxOSAxMDA3NTUKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy9ydW4td2Via2l0
LXdlYnNvY2tldHNlcnZlcgorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3J1bi13ZWJraXQtd2Vi
c29ja2V0c2VydmVyCkBAIC00Nyw3ICs0Nyw3IEBAIG15ICR3ZWJTb2NrZXRQb3J0ID0gODg4MDsK
IG15ICRzcmNEaXIgPSBzb3VyY2VEaXIoKTsKIG15ICRsYXlvdXRUZXN0c05hbWUgPSAiJHNyY0Rp
ci9MYXlvdXRUZXN0cyI7CiBteSAkdGVzdERpcmVjdG9yeSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMo
JGxheW91dFRlc3RzTmFtZSk7Ci1teSAkd2ViU29ja2V0U2VydmVyUGlkRmlsZSA9ICIkdGVzdERp
cmVjdG9yeS93ZWJzb2NrZXQucGlkIjsKK215ICR3ZWJTb2NrZXRTZXJ2ZXJQSUQgPSAwOwogCiAK
IHByaW50ICJTdGFydGluZyBXZWIgU29ja2V0IHNlcnZlci4uLlxuIjsKQEAgLTYwLDI5ICs2MCw0
MSBAQCBjbG9zZVdlYlNvY2tldFNlcnZlcigpOwogcHJpbnQgIlN0b3BwZWQuXG4iOwogZXhpdCAw
OwogCisKIHN1YiBvcGVuV2ViU29ja2V0U2VydmVyKCkKIHsKKyAgICBteSAkd2ViU29ja2V0U2Vy
dmVyUGF0aCA9ICIvdXNyL2Jpbi9weXRob24iOworICAgIG15ICR3ZWJTb2NrZXRQeXRob25QYXRo
ID0gIiRzcmNEaXIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0IjsKICAgICBteSAkd2ViU29ja2V0SGFuZGxlckRpciA9ICIkdGVzdERpcmVjdG9yeSI7
CisgICAgbXkgJHdlYlNvY2tldEhhbmRsZXJTY2FuRGlyID0gIiR0ZXN0RGlyZWN0b3J5L3dlYnNv
Y2tldC90ZXN0cyI7CisgICAgbXkgJHdlYlNvY2tldEhhbmRsZXJNYXBGaWxlID0gIiR3ZWJTb2Nr
ZXRIYW5kbGVyU2NhbkRpci9oYW5kbGVyX21hcC50eHQiOwogCiAgICAgbXkgQGFyZ3MgPSAoCi0g
ICAgICAgICIkc3JjRGlyL1dlYktpdFRvb2xzL1NjcmlwdHMvbmV3LXJ1bi13ZWJraXQtd2Vic29j
a2V0c2VydmVyIiwKLSAgICAgICAgIi0tc2VydmVyIiwgInN0YXJ0IiwKKyAgICAgICAgIiRzcmNE
aXIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9zdGFuZGFsb25lLnB5IiwKKyAgICAgICAgIi0tc2VydmVyLWhvc3QiLCAi
MTI3LjAuMC4xIiwKICAgICAgICAgIi0tcG9ydCIsICIkd2ViU29ja2V0UG9ydCIsCi0gICAgICAg
ICItLXJvb3QiLCAiJHdlYlNvY2tldEhhbmRsZXJEaXIiLAotICAgICAgICAiLS1waWRmaWxlIiwg
IiR3ZWJTb2NrZXRTZXJ2ZXJQaWRGaWxlIgorICAgICAgICAiLS1kb2N1bWVudC1yb290IiwgIiR3
ZWJTb2NrZXRIYW5kbGVyRGlyIiwKKyAgICAgICAgIi0tc2Nhbi1kaXIiLCAiJHdlYlNvY2tldEhh
bmRsZXJTY2FuRGlyIiwKKyAgICAgICAgIi0td2Vic29jay1oYW5kbGVycy1tYXAtZmlsZSIsICIk
d2ViU29ja2V0SGFuZGxlck1hcEZpbGUiLAorICAgICAgICAiLS1jZ2ktcGF0aHMiLCAiL3dlYnNv
Y2tldC90ZXN0cyIsCiAgICAgKTsKLSAgICBzeXN0ZW0gIi91c3IvYmluL3B5dGhvbiIsIEBhcmdz
OworCisgICAgJEVOVnsiUFlUSE9OUEFUSCJ9ID0gJHdlYlNvY2tldFB5dGhvblBhdGg7CisgICAg
JHdlYlNvY2tldFNlcnZlclBJRCA9IG9wZW4yKFwqV0VCU09DS0VUU0VSVkVSX0lOLCBcKldFQlNP
Q0tFVFNFUlZFUl9PVVQsICR3ZWJTb2NrZXRTZXJ2ZXJQYXRoLCBAYXJncyk7CisKKyAgICBteSAk
bGlzdGVuID0gImh0dHA6Ly8xMjcuMC4wLjE6JHdlYlNvY2tldFBvcnQiOworICAgIG15ICRyZXRy
eUNvdW50ID0gMTA7CisgICAgd2hpbGUgKHN5c3RlbSgiL3Vzci9iaW4vY3VybCAtayAtcSAtLXNp
bGVudCAtLXN0ZGVyciAtIC0tb3V0cHV0IC9kZXYvbnVsbCAkbGlzdGVuIikgJiYgJHJldHJ5Q291
bnQpIHsKKyAgICAgICAgc2xlZXAgMTsKKyAgICAgICAgLS0kcmV0cnlDb3VudDsKKyAgICB9Cisg
ICAgZGllICJUaW1lZCBvdXQgd2FpdGluZyBmb3IgV2ViU29ja2V0U2VydmVyIHRvIHN0YXJ0IiB1
bmxlc3MgJHJldHJ5Q291bnQ7CiB9CiAKIHN1YiBjbG9zZVdlYlNvY2tldFNlcnZlcigpCiB7Ci0g
ICAgbXkgQGFyZ3MgPSAoCi0gICAgICAgICIkc3JjRGlyL1dlYktpdFRvb2xzL1NjcmlwdHMvbmV3
LXJ1bi13ZWJraXQtd2Vic29ja2V0c2VydmVyIiwKLSAgICAgICAgIi0tc2VydmVyIiwgInN0b3Ai
LAotICAgICAgICAiLS1waWRmaWxlIiwgIiR3ZWJTb2NrZXRTZXJ2ZXJQaWRGaWxlIgotICAgICk7
Ci0gICAgc3lzdGVtICIvdXNyL2Jpbi9weXRob24iLCBAYXJnczsKLSAgICB1bmxpbmsgIiR3ZWJT
b2NrZXRTZXJ2ZXJQaWRGaWxlIjsKKyAgICBjbG9zZSBXRUJTT0NLRVRTRVJWRVJfSU47CisgICAg
Y2xvc2UgV0VCU09DS0VUU0VSVkVSX09VVDsKKyAgICBraWxsIDE1LCAkd2ViU29ja2V0U2VydmVy
UElEOwogfQogCi0KZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvd2Vic29ja2V0X3NlcnZlci5weQppbmRleCA1NTg2
OGZhZWMyNmJiYjM0YzVjYzA4NTdlYTI4YTFiMDNiNDhmZDY3Li5hZDU1N2JkZTljZmJkOWNjZWQw
NzM5MmMyYTA1YmY0YzI3MTQzMzJhIDEwMDY0NAotLS0gYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3dlYnNvY2tldF9zZXJ2ZXIucHkKKysrIGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC93ZWJzb2NrZXRfc2VydmVy
LnB5CkBAIC00Niw4ICs0Niw2IEBAIGltcG9ydCBmYWN0b3J5CiBpbXBvcnQgaHR0cF9zZXJ2ZXIK
IAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgRXhlY3V0aXZl
Ci1mcm9tIHdlYmtpdHB5LnRoaXJkcGFydHkuYXV0b2luc3RhbGxlZC5weXdlYnNvY2tldCBpbXBv
cnQgbW9kX3B5d2Vic29ja2V0Ci0KIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJ3ZWJraXRw
eS5sYXlvdXRfdGVzdHMucG9ydC53ZWJzb2NrZXRfc2VydmVyIikKIApAQCAtMTYxLDggKzE1OSw3
IEBAIGNsYXNzIFB5V2ViU29ja2V0KGh0dHBfc2VydmVyLkxpZ2h0dHBkKToKICAgICAgICAgcHl0
aG9uX2ludGVycCA9IHN5cy5leGVjdXRhYmxlCiAgICAgICAgIHB5d2Vic29ja2V0X2Jhc2UgPSBv
cy5wYXRoLmpvaW4oCiAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1l
KG9zLnBhdGguZGlybmFtZSgKLSAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykp
KSksICd0aGlyZHBhcnR5JywKLSAgICAgICAgICAgICdhdXRvaW5zdGFsbGVkJywgJ3B5d2Vic29j
a2V0JykKKyAgICAgICAgICAgIG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSksICd0aGlyZHBh
cnR5JywgJ3B5d2Vic29ja2V0JykKICAgICAgICAgcHl3ZWJzb2NrZXRfc2NyaXB0ID0gb3MucGF0
aC5qb2luKHB5d2Vic29ja2V0X2Jhc2UsICdtb2RfcHl3ZWJzb2NrZXQnLAogICAgICAgICAgICAg
J3N0YW5kYWxvbmUucHknKQogICAgICAgICBzdGFydF9jbWQgPSBbCmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvX19pbml0X18ucHkKaW5kZXggMzY0MjI4
NmQxOTEzMGVkNTFiNzFhMDliNzJiNmJlYWRmMmRhNjZjZS4uYzA1MmYwMDg2Y2FiMDY5MzE3MjBj
MGQ4ZjY2NDg3N2E3OGNmODZlNSAxMDA2NDQKLS0tIGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L19faW5pdF9fLnB5CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9fX2luaXRfXy5weQpAQCAtODksMTEgKzg5LDYgQEAgaW5zdGFsbGVy
Lmluc3RhbGwodXJsPSJodHRwOi8vaXdlYi5kbC5zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdC9weXRo
b24taXJjbGliL3B5dGgKIGluc3RhbGxlci5pbnN0YWxsKHVybD0iaHR0cDovL2l3ZWIuZGwuc291
cmNlZm9yZ2UubmV0L3Byb2plY3QvcHl0aG9uLWlyY2xpYi9weXRob24taXJjbGliLzAuNC44L3B5
dGhvbi1pcmNsaWItMC40LjguemlwIiwKICAgICAgICAgICAgICAgICAgIHVybF9zdWJwYXRoPSJp
cmNib3QucHkiKQogCi1weXdlYnNvY2tldF9kaXIgPSBvcy5wYXRoLmpvaW4oYXV0b2luc3RhbGxl
ZF9kaXIsICJweXdlYnNvY2tldCIpCi1pbnN0YWxsZXIgPSBBdXRvSW5zdGFsbGVyKHRhcmdldF9k
aXI9cHl3ZWJzb2NrZXRfZGlyKQotaW5zdGFsbGVyLmluc3RhbGwodXJsPSJodHRwOi8vcHl3ZWJz
b2NrZXQuZ29vZ2xlY29kZS5jb20vZmlsZXMvbW9kX3B5d2Vic29ja2V0LTAuNS50YXIuZ3oiLAot
ICAgICAgICAgICAgICAgICAgdXJsX3N1YnBhdGg9InB5d2Vic29ja2V0LTAuNS9zcmMvbW9kX3B5
d2Vic29ja2V0IikKLQogcmVhZG1lX3BhdGggPSBvcy5wYXRoLmpvaW4oYXV0b2luc3RhbGxlZF9k
aXIsICJSRUFETUUiKQogaWYgbm90IG9zLnBhdGguZXhpc3RzKHJlYWRtZV9wYXRoKToKICAgICB3
aXRoIGNvZGVjcy5vcGVuKHJlYWRtZV9wYXRoLCAidyIsICJhc2NpaSIpIGFzIGZpbGU6CmRpZmYg
LS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2Nr
ZXQvQ09QWUlORyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdl
YnNvY2tldC9DT1BZSU5HCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiOWQ1MmRkZjkzMDcyMDg2Y2JiYTIxMmNkYmJl
ZDdiMzhmYWE1M2EKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvQ09QWUlORwpAQCAtMCwwICsxLDI4IEBACitDb3B5
cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KK0FsbCByaWdodHMgcmVzZXJ2ZWQuCisKK1JlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorbWV0OgorCisgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICAgICogUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorY29weXJp
Z2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lcgoraW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92
aWRlZCB3aXRoIHRoZQorZGlzdHJpYnV0aW9uLgorICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworY29udHJpYnV0b3JzIG1heSBiZSB1c2Vk
IHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KK3RoaXMgc29mdHdh
cmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1RISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UCitMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKK0EgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCitPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKK1NQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QKK0xJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLAorREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCitUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKK09GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvTUFOSUZFU1QuaW4gYi9XZWJLaXRUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvTUFOSUZFU1QuaW4KbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MTkyNTY4ODJjNTZmZWI3MjgxMmM5OWM4YTgzNzk5NzllNjNlNGEwYwotLS0gL2Rldi9udWxsCisr
KyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9N
QU5JRkVTVC5pbgpAQCAtMCwwICsxLDYgQEAKK2luY2x1ZGUgQ09QWUlORworaW5jbHVkZSBNQU5J
RkVTVC5pbgoraW5jbHVkZSBSRUFETUUKK3JlY3Vyc2l2ZS1pbmNsdWRlIGV4YW1wbGUgKi5weQor
cmVjdXJzaXZlLWluY2x1ZGUgbW9kX3B5d2Vic29ja2V0ICoucHkKK3JlY3Vyc2l2ZS1pbmNsdWRl
IHRlc3QgKi5weQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L3B5d2Vic29ja2V0L1JFQURNRSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dGhpcmRwYXJ0eS9weXdlYnNvY2tldC9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMWY5ZjA1ZmNkYjY2NjNm
ZGI2M2Q0NWFhMWY4MTVkYmFlOTAyOGMyYgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9SRUFETUUKQEAgLTAsMCAr
MSw2IEBACitJbnN0YWxsIHRoaXMgcGFja2FnZSBieToKKyQgcHl0aG9uIHNldHVwLnB5IGJ1aWxk
CiskIHN1ZG8gcHl0aG9uIHNldHVwLnB5IGluc3RhbGwKKworVGhlbiByZWFkIGRvY3VtZW50IGJ5
OgorJCBweWRvYyBtb2RfcHl3ZWJzb2NrZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9SRUFETUUud2Via2l0IGIvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L1JFQURNRS53ZWJr
aXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uODNlM2NlZTMzMGFjMmU2YmJlNDlkYWNjNDYyYjRhMTExN2VhNzYwYgot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC9SRUFETUUud2Via2l0CkBAIC0wLDAgKzEsMTQgQEAKK1RoaXMgZGlyZWN0
b3J5IGNvbnRhaW5zIGEgY29weSBvZiB0aGUgcHl3ZWJzb2NrZXQgUHl0aG9uIG1vZHVsZSBvYnRh
aW5lZAorZnJvbSB0aGUgZm9sbG93aW5nIGxvY2F0aW9uOgorCitodHRwOi8vY29kZS5nb29nbGUu
Y29tL3AvcHl3ZWJzb2NrZXQvCisKK1RoaXMgZGlyZWN0b3J5IGN1cnJlbnRseSBjb250YWlucyB0
aGUgZm9sbG93aW5nIHZlcnNpb246CiswLjQuOS4yCisKK1RoZSBmb2xsb3dpbmcgbW9kaWZpY2F0
aW9ucyBoYXZlIGJlZW4gbWFkZSB0byB0aGlzIGxvY2FsIHZlcnNpb246CittaW5vciB1cGRhdGVz
IGluIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLmlzX2NnaQorCitNb3JlIGluZm9ybWF0aW9uIG9u
IHRoZXNlIGxvY2FsIG1vZGlmaWNhdGlvbnMgY2FuIGJlIGZvdW5kIGhlcmU6CisKK2h0dHA6Ly90
cmFjLndlYmtpdC5vcmcvYnJvd3Nlci90cnVuay9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fY2xpZW50LnB5IGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1w
bGUvZWNob19jbGllbnQucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmI5NzZlMTE5ZWUyODgwZWFlNjBjZjgyYmVh
NzQxZjU2YzM0Y2ZjNAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fY2xpZW50LnB5CkBAIC0w
LDAgKzEsMjA5IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDks
IEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CisKKyIiIldlYiBTb2NrZXQgRWNobyBjbGllbnQuCisKK1RoaXMgaXMgYW4gZXhhbXBsZSBXZWIg
U29ja2V0IGNsaWVudCB0aGF0IHRhbGtzIHdpdGggZWNob193c2gucHkuCitUaGlzIG1heSBiZSB1
c2VmdWwgZm9yIGNoZWNraW5nIG1vZF9weXdlYnNvY2tldCBpbnN0YWxsYXRpb24uCisKK05vdGU6
CitUaGlzIGNvZGUgaXMgZmFyIGZyb20gcm9idXN0LCBlLmcuLCB3ZSBjdXQgY29ybmVycyBpbiBo
YW5kc2hha2UuCisiIiIKKworCitpbXBvcnQgY29kZWNzCitmcm9tIG9wdHBhcnNlIGltcG9ydCBP
cHRpb25QYXJzZXIKK2ltcG9ydCBzb2NrZXQKK2ltcG9ydCBzeXMKKworCitfVElNRU9VVF9TRUMg
PSAxMAorCitfREVGQVVMVF9QT1JUID0gODAKK19ERUZBVUxUX1NFQ1VSRV9QT1JUID0gNDQzCitf
VU5ERUZJTkVEX1BPUlQgPSAtMQorCitfVVBHUkFERV9IRUFERVIgPSAnVXBncmFkZTogV2ViU29j
a2V0XHJcbicKK19DT05ORUNUSU9OX0hFQURFUiA9ICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicK
K19FWFBFQ1RFRF9SRVNQT05TRSA9ICgKKyAgICAgICAgJ0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0
IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nICsKKyAgICAgICAgX1VQR1JBREVfSEVBREVSICsKKyAg
ICAgICAgX0NPTk5FQ1RJT05fSEVBREVSKQorCitfR09PREJZRV9NRVNTQUdFID0gJ0dvb2RieWUn
CisKKworZGVmIF9tZXRob2RfbGluZShyZXNvdXJjZSk6CisgICAgcmV0dXJuICdHRVQgJXMgSFRU
UC8xLjFcclxuJyAlIHJlc291cmNlCisKKworZGVmIF9vcmlnaW5faGVhZGVyKG9yaWdpbik6Cisg
ICAgcmV0dXJuICdPcmlnaW46ICVzXHJcbicgJSBvcmlnaW4KKworCitjbGFzcyBfVExTU29ja2V0
KG9iamVjdCk6CisgICAgIiIiV3JhcHBlciBmb3IgYSBUTFMgY29ubmVjdGlvbi4iIiIKKworICAg
IGRlZiBfX2luaXRfXyhzZWxmLCByYXdfc29ja2V0KToKKyAgICAgICAgc2VsZi5fc3NsID0gc29j
a2V0LnNzbChyYXdfc29ja2V0KQorCisgICAgZGVmIHNlbmQoc2VsZiwgYnl0ZXMpOgorICAgICAg
ICByZXR1cm4gc2VsZi5fc3NsLndyaXRlKGJ5dGVzKQorCisgICAgZGVmIHJlY3Yoc2VsZiwgc2l6
ZT0tMSk6CisgICAgICAgIHJldHVybiBzZWxmLl9zc2wucmVhZChzaXplKQorCisgICAgZGVmIGNs
b3NlKHNlbGYpOgorICAgICAgICAjIE5vdGhpbmcgdG8gZG8uCisgICAgICAgIHBhc3MKKworCitj
bGFzcyBFY2hvQ2xpZW50KG9iamVjdCk6CisgICAgIiIiV2ViIFNvY2tldCBlY2hvIGNsaWVudC4i
IiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvcHRpb25zKToKKyAgICAgICAgc2VsZi5fb3B0
aW9ucyA9IG9wdGlvbnMKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gTm9uZQorCisgICAgZGVmIHJ1
bihzZWxmKToKKyAgICAgICAgIiIiUnVuIHRoZSBjbGllbnQuCisKKyAgICAgICAgU2hha2UgaGFu
ZHMgYW5kIHRoZW4gcmVwZWF0IHNlbmRpbmcgbWVzc2FnZSBhbmQgcmVjZWl2aW5nIGl0cyBlY2hv
LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5fc29ja2V0ID0gc29ja2V0LnNvY2tldCgpCisg
ICAgICAgIHNlbGYuX3NvY2tldC5zZXR0aW1lb3V0KHNlbGYuX29wdGlvbnMuc29ja2V0X3RpbWVv
dXQpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYuX3NvY2tldC5jb25uZWN0KChzZWxm
Ll9vcHRpb25zLnNlcnZlcl9ob3N0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQpKQorICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9u
cy51c2VfdGxzOgorICAgICAgICAgICAgICAgIHNlbGYuX3NvY2tldCA9IF9UTFNTb2NrZXQoc2Vs
Zi5fc29ja2V0KQorICAgICAgICAgICAgc2VsZi5faGFuZHNoYWtlKCkKKyAgICAgICAgICAgIGZv
ciBsaW5lIGluIHNlbGYuX29wdGlvbnMubWVzc2FnZS5zcGxpdCgnLCcpICsgW19HT09EQllFX01F
U1NBR0VdOgorICAgICAgICAgICAgICAgIGZyYW1lID0gJ1x4MDAnICsgbGluZS5lbmNvZGUoJ3V0
Zi04JykgKyAnXHhmZicKKyAgICAgICAgICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZChmcmFtZSkK
KyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6CisgICAgICAgICAgICAg
ICAgICAgIHByaW50ICdTZW5kOiAlcycgJSBsaW5lCisgICAgICAgICAgICAgICAgcmVjZWl2ZWQg
PSBzZWxmLl9zb2NrZXQucmVjdihsZW4oZnJhbWUpKQorICAgICAgICAgICAgICAgIGlmIHJlY2Vp
dmVkICE9IGZyYW1lOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ0luY29y
cmVjdCBlY2hvOiAlcicgJSByZWNlaXZlZCkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnZlcmJvc2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50ICdSZWN2OiAlcycgJSByZWNl
aXZlZFsxOi0xXS5kZWNvZGUoJ3V0Zi04JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncmVwbGFjZScpCisgICAgICAgIGZpbmFs
bHk6CisgICAgICAgICAgICBzZWxmLl9zb2NrZXQuY2xvc2UoKQorCisgICAgZGVmIF9oYW5kc2hh
a2Uoc2VsZik6CisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKF9tZXRob2RfbGluZShzZWxmLl9v
cHRpb25zLnJlc291cmNlKSkKKyAgICAgICAgc2VsZi5fc29ja2V0LnNlbmQoX1VQR1JBREVfSEVB
REVSKQorICAgICAgICBzZWxmLl9zb2NrZXQuc2VuZChfQ09OTkVDVElPTl9IRUFERVIpCisgICAg
ICAgIHNlbGYuX3NvY2tldC5zZW5kKHNlbGYuX2Zvcm1hdF9ob3N0X2hlYWRlcigpKQorICAgICAg
ICBzZWxmLl9zb2NrZXQuc2VuZChfb3JpZ2luX2hlYWRlcihzZWxmLl9vcHRpb25zLm9yaWdpbikp
CisgICAgICAgIHNlbGYuX3NvY2tldC5zZW5kKCdcclxuJykKKworICAgICAgICBmb3IgZXhwZWN0
ZWRfY2hhciBpbiBfRVhQRUNURURfUkVTUE9OU0U6CisgICAgICAgICAgICByZWNlaXZlZCA9IHNl
bGYuX3NvY2tldC5yZWN2KDEpWzBdCisgICAgICAgICAgICBpZiBleHBlY3RlZF9jaGFyICE9IHJl
Y2VpdmVkOgorICAgICAgICAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignSGFuZHNoYWtlIGZhaWx1
cmUnKQorICAgICAgICAjIFdlIGN1dCBjb3JuZXJzIGFuZCBza2lwIG90aGVyIGhlYWRlcnMuCisg
ICAgICAgIHNlbGYuX3NraXBfaGVhZGVycygpCisKKyAgICBkZWYgX3NraXBfaGVhZGVycyhzZWxm
KToKKyAgICAgICAgdGVybWluYXRvciA9ICdcclxuXHJcbicKKyAgICAgICAgcG9zID0gMAorICAg
ICAgICB3aGlsZSBwb3MgPCBsZW4odGVybWluYXRvcik6CisgICAgICAgICAgICByZWNlaXZlZCA9
IHNlbGYuX3NvY2tldC5yZWN2KDEpWzBdCisgICAgICAgICAgICBpZiByZWNlaXZlZCA9PSB0ZXJt
aW5hdG9yW3Bvc106CisgICAgICAgICAgICAgICAgcG9zICs9IDEKKyAgICAgICAgICAgIGVsaWYg
cmVjZWl2ZWQgPT0gdGVybWluYXRvclswXToKKyAgICAgICAgICAgICAgICBwb3MgPSAxCisgICAg
ICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHBvcyA9IDAKKworICAgIGRlZiBfZm9ybWF0
X2hvc3RfaGVhZGVyKHNlbGYpOgorICAgICAgICBob3N0ID0gJ0hvc3Q6ICcgKyBzZWxmLl9vcHRp
b25zLnNlcnZlcl9ob3N0CisgICAgICAgIGlmICgobm90IHNlbGYuX29wdGlvbnMudXNlX3RscyBh
bmQKKyAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLnNlcnZlcl9wb3J0ICE9IF9ERUZBVUxUX1BP
UlQpIG9yCisgICAgICAgICAgICAoc2VsZi5fb3B0aW9ucy51c2VfdGxzIGFuZAorICAgICAgICAg
ICAgIHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQgIT0gX0RFRkFVTFRfU0VDVVJFX1BPUlQpKToK
KyAgICAgICAgICAgIGhvc3QgKz0gJzonICsgc3RyKHNlbGYuX29wdGlvbnMuc2VydmVyX3BvcnQp
CisgICAgICAgIGhvc3QgKz0gJ1xyXG4nCisgICAgICAgIHJldHVybiBob3N0CisKKworZGVmIG1h
aW4oKToKKyAgICBzeXMuc3Rkb3V0ID0gY29kZWNzLmdldHdyaXRlcigndXRmLTgnKShzeXMuc3Rk
b3V0KQorCisgICAgcGFyc2VyID0gT3B0aW9uUGFyc2VyKCkKKyAgICBwYXJzZXIuYWRkX29wdGlv
bignLXMnLCAnLS1zZXJ2ZXItaG9zdCcsICctLXNlcnZlcl9ob3N0JywKKyAgICAgICAgICAgICAg
ICAgICAgICBkZXN0PSdzZXJ2ZXJfaG9zdCcsIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVmYXVsdD0nbG9jYWxob3N0JywgaGVscD0nc2VydmVyIGhvc3QnKQorICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctcCcsICctLXNlcnZlci1wb3J0JywgJy0tc2VydmVyX3BvcnQnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3NlcnZlcl9wb3J0JywgdHlwZT0naW50JywKKyAg
ICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PV9VTkRFRklORURfUE9SVCwgaGVscD0nc2VydmVy
IHBvcnQnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbycsICctLW9yaWdpbicsIGRlc3Q9J29y
aWdpbicsIHR5cGU9J3N0cmluZycsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0naHR0
cDovL2xvY2FsaG9zdC8nLCBoZWxwPSdvcmlnaW4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCct
cicsICctLXJlc291cmNlJywgZGVzdD0ncmVzb3VyY2UnLCB0eXBlPSdzdHJpbmcnLAorICAgICAg
ICAgICAgICAgICAgICAgIGRlZmF1bHQ9Jy9lY2hvJywgaGVscD0ncmVzb3VyY2UgcGF0aCcpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1tJywgJy0tbWVzc2FnZScsIGRlc3Q9J21lc3NhZ2UnLCB0
eXBlPSdzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9KCdjb21tYS1zZXBhcmF0
ZWQgbWVzc2FnZXMgdG8gc2VuZCBleGNsdWRpbmcgIiVzIiAnCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgJ3RoYXQgaXMgYWx3YXlzIHNlbnQgYXQgdGhlIGVuZCcgJQorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIF9HT09EQllFX01FU1NBR0UpKQorICAgIHBhcnNlci5hZGRfb3B0aW9u
KCctcScsICctLXF1aWV0JywgZGVzdD0ndmVyYm9zZScsIGFjdGlvbj0nc3RvcmVfZmFsc2UnLAor
ICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSwgaGVscD0nc3VwcHJlc3MgbWVzc2Fn
ZXMnKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctdCcsICctLXRscycsIGRlc3Q9J3VzZV90bHMn
LCBhY3Rpb249J3N0b3JlX3RydWUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9RmFs
c2UsIGhlbHA9J3VzZSBUTFMgKHdzczovLyknKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctaycs
ICctLXNvY2tldC10aW1lb3V0JywgJy0tc29ja2V0X3RpbWVvdXQnLAorICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J3NvY2tldF90aW1lb3V0JywgdHlwZT0naW50JywgZGVmYXVsdD1fVElNRU9V
VF9TRUMsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVGltZW91dChzZWMpIGZvciBzb2Nr
ZXRzJykKKworICAgIChvcHRpb25zLCB1bnVzZWRfYXJncykgPSBwYXJzZXIucGFyc2VfYXJncygp
CisKKyAgICAjIERlZmF1bHQgcG9ydCBudW1iZXIgZGVwZW5kcyBvbiB3aGV0aGVyIFRMUyBpcyB1
c2VkLgorICAgIGlmIG9wdGlvbnMuc2VydmVyX3BvcnQgPT0gX1VOREVGSU5FRF9QT1JUOgorICAg
ICAgICBpZiBvcHRpb25zLnVzZV90bHM6CisgICAgICAgICAgICBvcHRpb25zLnNlcnZlcl9wb3J0
ID0gX0RFRkFVTFRfU0VDVVJFX1BPUlQKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9wdGlv
bnMuc2VydmVyX3BvcnQgPSBfREVGQVVMVF9QT1JUCisKKyAgICAjIG9wdHBhcnNlIGRvZXNuJ3Qg
c2VlbSB0byBoYW5kbGUgbm9uLWFzY2lpIGRlZmF1bHQgdmFsdWVzLgorICAgICMgU2V0IGRlZmF1
bHQgbWVzc2FnZSBoZXJlLgorICAgIGlmIG5vdCBvcHRpb25zLm1lc3NhZ2U6CisgICAgICAgIG9w
dGlvbnMubWVzc2FnZSA9IHUnSGVsbG8sXHU2NWU1XHU2NzJjJyAgICMgIkphcGFuIiBpbiBKYXBh
bmVzZQorCisgICAgRWNob0NsaWVudChvcHRpb25zKS5ydW4oKQorCisKK2lmIF9fbmFtZV9fID09
ICdfX21haW5fXyc6CisgICAgbWFpbigpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1n
aXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQv
ZXhhbXBsZS9lY2hvX3dzaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRw
YXJ0eS9weXdlYnNvY2tldC9leGFtcGxlL2VjaG9fd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjUwY2FkMzE4
NGQ0NWM1MzE3ZWZkNWViMTE1ZjQzYWE0OTA1MTJmMDQKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9l
Y2hvX3dzaC5weQpAQCAtMCwwICsxLDQ5IEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitmcm9tIG1v
ZF9weXdlYnNvY2tldCBpbXBvcnQgbXNndXRpbAorCisKK19HT09EQllFX01FU1NBR0UgPSAnR29v
ZGJ5ZScKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Cisg
ICAgcGFzcyAgIyBBbHdheXMgYWNjZXB0LgorCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2Rh
dGEocmVxdWVzdCk6CisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgbGluZSA9IG1zZ3V0aWwucmVj
ZWl2ZV9tZXNzYWdlKHJlcXVlc3QpCisgICAgICAgIG1zZ3V0aWwuc2VuZF9tZXNzYWdlKHJlcXVl
c3QsIGxpbmUpCisgICAgICAgIGlmIGxpbmUgPT0gX0dPT0RCWUVfTUVTU0FHRToKKyAgICAgICAg
ICAgIHJldHVybgorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L2V4YW1wbGUvaGFuZGxl
cl9tYXAudHh0IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L2V4YW1wbGUvaGFuZGxlcl9tYXAudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIxYzRjMDlhYTAwOTFk
OGJhZjI5MDg5NTk5MDU4Njc4NDJhZWI4NjUKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvZXhhbXBsZS9oYW5kbGVy
X21hcC50eHQKQEAgLTAsMCArMSwxMSBAQAorIyB3ZWJzb2NrZXQgaGFuZGxlciBtYXAgZmlsZSwg
dXNlZCBieSBzdGFuZGFsb25lLnB5IC1tIG9wdGlvbi4KKyMgQSBsaW5lIHN0YXJ0aW5nIHdpdGgg
JyMnIGlzIGEgY29tbWVudCBsaW5lLgorIyBFYWNoIGxpbmUgY29uc2lzdHMgb2YgJ2FsaWFzX3Jl
c291cmNlX3BhdGgnIGFuZCAnZXhpc3RpbmdfcmVzb3VyY2VfcGF0aCcKKyMgc2VwYXJhdGVkIGJ5
IHNwYWNlcy4KKyMgQWxpYXNpbmcgaXMgcHJvY2Vzc2VkIGZyb20gdGhlIHRvcCB0byB0aGUgYm90
dG9tIG9mIHRoZSBsaW5lLCBhbmQKKyMgJ2V4aXN0aW5nX3Jlc291cmNlX3BhdGgnIG11c3QgZXhp
c3QgYmVmb3JlIGl0IGlzIGFsaWFzZWQuCisjIEZvciBleGFtcGxlLAorIyAgLyAvZWNobworIyBt
ZWFucyB0aGF0IGEgcmVxdWVzdCB0byAnLycgd2lsbCBiZSBoYW5kbGVkIGJ5IGhhbmRsZXJzIGZv
ciAnL2VjaG8nLgorLyAvZWNobworCmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L19faW5pdF9fLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21v
ZF9weXdlYnNvY2tldC9fX2luaXRfXy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNWU4MGU4YjM3ZjgzZDc2OTdh
Y2UzMDk3NmUzZWFkMDEzNmRkOTc0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9fX2lu
aXRfXy5weQpAQCAtMCwwICsxLDEwNSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4K
KyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUK
KyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
cgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBH
b29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNv
ZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09O
VFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBP
V05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisj
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIiIiV2ViIFNv
Y2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlci4KKworbW9kX3B5d2Vic29ja2V0
IGlzIGEgV2ViIFNvY2tldCBleHRlbnNpb24gZm9yIEFwYWNoZSBIVFRQIFNlcnZlcgoraW50ZW5k
ZWQgZm9yIHRlc3Rpbmcgb3IgZXhwZXJpbWVudGFsIHB1cnBvc2VzLiBtb2RfcHl0aG9uIGlzIHJl
cXVpcmVkLgorCitJbnN0YWxsYXRpb246CisKKzAuIFByZXBhcmUgYW4gQXBhY2hlIEhUVFAgU2Vy
dmVyIGZvciB3aGljaCBtb2RfcHl0aG9uIGlzIGVuYWJsZWQuCisKKzEuIFNwZWNpZnkgdGhlIGZv
bGxvd2luZyBBcGFjaGUgSFRUUCBTZXJ2ZXIgZGlyZWN0aXZlcyB0byBzdWl0IHlvdXIKKyAgIGNv
bmZpZ3VyYXRpb24uCisKKyAgIElmIG1vZF9weXdlYnNvY2tldCBpcyBub3QgaW4gdGhlIFB5dGhv
biBwYXRoLCBzcGVjaWZ5IHRoZSBmb2xsb3dpbmcuCisgICA8d2Vic29ja19saWI+IGlzIHRoZSBk
aXJlY3Rvcnkgd2hlcmUgbW9kX3B5d2Vic29ja2V0IGlzIGluc3RhbGxlZC4KKworICAgICAgIFB5
dGhvblBhdGggInN5cy5wYXRoK1snPHdlYnNvY2tfbGliPiddIgorCisgICBBbHdheXMgc3BlY2lm
eSB0aGUgZm9sbG93aW5nLiA8d2Vic29ja19oYW5kbGVycz4gaXMgdGhlIGRpcmVjdG9yeSB3aGVy
ZQorICAgdXNlci13cml0dGVuIFdlYiBTb2NrZXQgaGFuZGxlcnMgYXJlIHBsYWNlZC4KKworICAg
ICAgIFB5dGhvbk9wdGlvbiBtb2RfcHl3ZWJzb2NrZXQuaGFuZGxlcl9yb290IDx3ZWJzb2NrX2hh
bmRsZXJzPgorICAgICAgIFB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIgbW9kX3B5d2Vic29ja2V0
LmhlYWRlcnBhcnNlcmhhbmRsZXIKKworICAgVG8gbGltaXQgdGhlIHNlYXJjaCBmb3IgV2ViIFNv
Y2tldCBoYW5kbGVycyB0byBhIGRpcmVjdG9yeSA8c2Nhbl9kaXI+CisgICB1bmRlciA8d2Vic29j
a19oYW5kbGVycz4sIGNvbmZpZ3VyZSBhcyBmb2xsb3dzOgorICAgCisgICAgICAgUHl0aG9uT3B0
aW9uIG1vZF9weXdlYnNvY2tldC5oYW5kbGVyX3NjYW4gPHNjYW5fZGlyPgorICAgICAgIAorICAg
PHNjYW5fZGlyPiBpcyB1c2VmdWwgaW4gc2F2aW5nIHNjYW4gdGltZSB3aGVuIDx3ZWJzb2NrX2hh
bmRsZXJzPgorICAgY29udGFpbnMgbWFueSBub24tV2ViIFNvY2tldCBoYW5kbGVyIGZpbGVzLgor
CisgICBFeGFtcGxlIHNuaXBwZXQgb2YgaHR0cGQuY29uZjoKKyAgIChtb2RfcHl3ZWJzb2NrZXQg
aXMgaW4gL3dlYnNvY2tfbGliLCBXZWIgU29ja2V0IGhhbmRsZXJzIGFyZSBpbgorICAgL3dlYnNv
Y2tfaGFuZGxlcnMsIHBvcnQgaXMgODAgZm9yIHdzLCA0NDMgZm9yIHdzcy4pCisKKyAgICAgICA8
SWZNb2R1bGUgcHl0aG9uX21vZHVsZT4KKyAgICAgICAgIFB5dGhvblBhdGggInN5cy5wYXRoK1sn
L3dlYnNvY2tfbGliJ10iCisgICAgICAgICBQeXRob25PcHRpb24gbW9kX3B5d2Vic29ja2V0Lmhh
bmRsZXJfcm9vdCAvd2Vic29ja19oYW5kbGVycworICAgICAgICAgUHl0aG9uSGVhZGVyUGFyc2Vy
SGFuZGxlciBtb2RfcHl3ZWJzb2NrZXQuaGVhZGVycGFyc2VyaGFuZGxlcgorICAgICAgIDwvSWZN
b2R1bGU+CisKK1dyaXRpbmcgV2ViIFNvY2tldCBoYW5kbGVyczoKKworV2hlbiBhIFdlYiBTb2Nr
ZXQgcmVxdWVzdCBjb21lcyBpbiwgdGhlIHJlc291cmNlIG5hbWUKK3NwZWNpZmllZCBpbiB0aGUg
aGFuZHNoYWtlIGlzIGNvbnNpZGVyZWQgYXMgaWYgaXQgaXMgYSBmaWxlIHBhdGggdW5kZXIKKzx3
ZWJzb2NrX2hhbmRsZXJzPiBhbmQgdGhlIGhhbmRsZXIgZGVmaW5lZCBpbgorPHdlYnNvY2tfaGFu
ZGxlcnM+LzxyZXNvdXJjZV9uYW1lPl93c2gucHkgaXMgaW52b2tlZC4KKworRm9yIGV4YW1wbGUs
IGlmIHRoZSByZXNvdXJjZSBuYW1lIGlzIC9leGFtcGxlL2NoYXQsIHRoZSBoYW5kbGVyIGRlZmlu
ZWQgaW4KKzx3ZWJzb2NrX2hhbmRsZXJzPi9leGFtcGxlL2NoYXRfd3NoLnB5IGlzIGludm9rZWQu
CisKK0EgV2ViIFNvY2tldCBoYW5kbGVyIGlzIGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dpbmcgdHdv
IGZ1bmN0aW9uczoKKworICAgIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3Qp
CisgICAgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisKK3doZXJlOgorICAgIHJl
cXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKword2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hh
a2UgaXMgY2FsbGVkIGR1cmluZyB0aGUgaGFuZHNoYWtlIGFmdGVyIHRoZQoraGVhZGVycyBhcmUg
c3VjY2Vzc2Z1bGx5IHBhcnNlZCBhbmQgV2ViIFNvY2tldCBwcm9wZXJ0aWVzICh3c19sb2NhdGlv
biwKK3dzX29yaWdpbiwgd3NfcHJvdG9jb2wsIGFuZCB3c19yZXNvdXJjZSkgYXJlIGFkZGVkIHRv
IHJlcXVlc3QuIEEgaGFuZGxlcgorY2FuIHJlamVjdCB0aGUgcmVxdWVzdCBieSByYWlzaW5nIGFu
IGV4Y2VwdGlvbi4KKword2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhIGlzIGNhbGxlZCBhZnRlciB0
aGUgaGFuZHNoYWtlIGNvbXBsZXRlZAorc3VjY2Vzc2Z1bGx5LiBBIGhhbmRsZXIgY2FuIHJlY2Vp
dmUvc2VuZCBtZXNzYWdlcyBmcm9tL3RvIHRoZSBjbGllbnQKK3VzaW5nIHJlcXVlc3QuIG1vZF9w
eXdlYnNvY2tldC5tc2d1dGlsIG1vZHVsZSBwcm92aWRlcyB1dGlsaXRpZXMKK2ZvciBkYXRhIHRy
YW5zZmVyLgorCitBIFdlYiBTb2NrZXQgaGFuZGxlciBtdXN0IGJlIHRocmVhZC1zYWZlIGlmIHRo
ZSBzZXJ2ZXIgKEFwYWNoZSBvcgorc3RhbmRhbG9uZS5weSkgaXMgY29uZmlndXJlZCB0byB1c2Ug
dGhyZWFkcy4KKyIiIgorCisKKyMgdmk6c3RzPTQgc3c9NCBldCB0dz03MgpkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9kaXNwYXRjaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uYzUyZTllYjQyYjc1ZDA1NTE3NjI4ZmQ4ZmQwYWZiZWY0MWRmNDEyZgotLS0gL2Rldi9udWxs
CisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tl
dC9tb2RfcHl3ZWJzb2NrZXQvZGlzcGF0Y2gucHkKQEAgLTAsMCArMSwyMzEgQEAKKyMgQ29weXJp
Z2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyIiIkRpc3BhdGNoIFdlYiBTb2NrZXQgcmVxdWVzdC4KKyIiIgorCisKK2lt
cG9ydCBvcworaW1wb3J0IHJlCisKK2ltcG9ydCB1dGlsCisKKworX1NPVVJDRV9QQVRIX1BBVFRF
Uk4gPSByZS5jb21waWxlKHInKD9pKV93c2hcLnB5JCcpCitfU09VUkNFX1NVRkZJWCA9ICdfd3No
LnB5JworX0RPX0VYVFJBX0hBTkRTSEFLRV9IQU5ETEVSX05BTUUgPSAnd2ViX3NvY2tldF9kb19l
eHRyYV9oYW5kc2hha2UnCitfVFJBTlNGRVJfREFUQV9IQU5ETEVSX05BTUUgPSAnd2ViX3NvY2tl
dF90cmFuc2Zlcl9kYXRhJworCisKK2NsYXNzIERpc3BhdGNoRXJyb3IoRXhjZXB0aW9uKToKKyAg
ICAiIiJFeGNlcHRpb24gaW4gZGlzcGF0Y2hpbmcgV2ViIFNvY2tldCByZXF1ZXN0LiIiIgorCisg
ICAgcGFzcworCisKK2RlZiBfbm9ybWFsaXplX3BhdGgocGF0aCk6CisgICAgIiIiTm9ybWFsaXpl
IHBhdGguCisKKyAgICBBcmdzOgorICAgICAgICBwYXRoOiB0aGUgcGF0aCB0byBub3JtYWxpemUu
CisKKyAgICBQYXRoIGlzIGNvbnZlcnRlZCB0byB0aGUgYWJzb2x1dGUgcGF0aC4KKyAgICBUaGUg
aW5wdXQgcGF0aCBjYW4gdXNlIGVpdGhlciAnXFwnIG9yICcvJyBhcyB0aGUgc2VwYXJhdG9yLgor
ICAgIFRoZSBub3JtYWxpemVkIHBhdGggYWx3YXlzIHVzZXMgJy8nIHJlZ2FyZGxlc3Mgb2YgdGhl
IHBsYXRmb3JtLgorICAgICIiIgorCisgICAgcGF0aCA9IHBhdGgucmVwbGFjZSgnXFwnLCBvcy5w
YXRoLnNlcCkKKyAgICBwYXRoID0gb3MucGF0aC5yZWFscGF0aChwYXRoKQorICAgIHBhdGggPSBw
YXRoLnJlcGxhY2UoJ1xcJywgJy8nKQorICAgIHJldHVybiBwYXRoCisKKworZGVmIF9wYXRoX3Rv
X3Jlc291cmNlX2NvbnZlcnRlcihiYXNlX2Rpcik6CisgICAgYmFzZV9kaXIgPSBfbm9ybWFsaXpl
X3BhdGgoYmFzZV9kaXIpCisgICAgYmFzZV9sZW4gPSBsZW4oYmFzZV9kaXIpCisgICAgc3VmZml4
X2xlbiA9IGxlbihfU09VUkNFX1NVRkZJWCkKKyAgICBkZWYgY29udmVydGVyKHBhdGgpOgorICAg
ICAgICBpZiBub3QgcGF0aC5lbmRzd2l0aChfU09VUkNFX1NVRkZJWCk6CisgICAgICAgICAgICBy
ZXR1cm4gTm9uZQorICAgICAgICBwYXRoID0gX25vcm1hbGl6ZV9wYXRoKHBhdGgpCisgICAgICAg
IGlmIG5vdCBwYXRoLnN0YXJ0c3dpdGgoYmFzZV9kaXIpOgorICAgICAgICAgICAgcmV0dXJuIE5v
bmUKKyAgICAgICAgcmV0dXJuIHBhdGhbYmFzZV9sZW46LXN1ZmZpeF9sZW5dCisgICAgcmV0dXJu
IGNvbnZlcnRlcgorCisKK2RlZiBfc291cmNlX2ZpbGVfcGF0aHMoZGlyZWN0b3J5KToKKyAgICAi
IiJZaWVsZCBXZWIgU29ja2V0IEhhbmRsZXIgc291cmNlIGZpbGUgbmFtZXMgaW4gdGhlIGdpdmVu
IGRpcmVjdG9yeS4iIiIKKworICAgIGZvciByb290LCB1bnVzZWRfZGlycywgZmlsZXMgaW4gb3Mu
d2FsayhkaXJlY3RvcnkpOgorICAgICAgICBmb3IgYmFzZSBpbiBmaWxlczoKKyAgICAgICAgICAg
IHBhdGggPSBvcy5wYXRoLmpvaW4ocm9vdCwgYmFzZSkKKyAgICAgICAgICAgIGlmIF9TT1VSQ0Vf
UEFUSF9QQVRURVJOLnNlYXJjaChwYXRoKToKKyAgICAgICAgICAgICAgICB5aWVsZCBwYXRoCisK
KworZGVmIF9zb3VyY2Uoc291cmNlX3N0cik6CisgICAgIiIiU291cmNlIGEgaGFuZGxlciBkZWZp
bml0aW9uIHN0cmluZy4iIiIKKworICAgIGdsb2JhbF9kaWMgPSB7fQorICAgIHRyeToKKyAgICAg
ICAgZXhlYyBzb3VyY2Vfc3RyIGluIGdsb2JhbF9kaWMKKyAgICBleGNlcHQgRXhjZXB0aW9uOgor
ICAgICAgICByYWlzZSBEaXNwYXRjaEVycm9yKCdFcnJvciBpbiBzb3VyY2luZyBoYW5kbGVyOicg
KworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCisg
ICAgcmV0dXJuIChfZXh0cmFjdF9oYW5kbGVyKGdsb2JhbF9kaWMsIF9ET19FWFRSQV9IQU5EU0hB
S0VfSEFORExFUl9OQU1FKSwKKyAgICAgICAgICAgIF9leHRyYWN0X2hhbmRsZXIoZ2xvYmFsX2Rp
YywgX1RSQU5TRkVSX0RBVEFfSEFORExFUl9OQU1FKSkKKworCitkZWYgX2V4dHJhY3RfaGFuZGxl
cihkaWMsIG5hbWUpOgorICAgIGlmIG5hbWUgbm90IGluIGRpYzoKKyAgICAgICAgcmFpc2UgRGlz
cGF0Y2hFcnJvcignJXMgaXMgbm90IGRlZmluZWQuJyAlIG5hbWUpCisgICAgaGFuZGxlciA9IGRp
Y1tuYW1lXQorICAgIGlmIG5vdCBjYWxsYWJsZShoYW5kbGVyKToKKyAgICAgICAgcmFpc2UgRGlz
cGF0Y2hFcnJvcignJXMgaXMgbm90IGNhbGxhYmxlLicgJSBuYW1lKQorICAgIHJldHVybiBoYW5k
bGVyCisKKworY2xhc3MgRGlzcGF0Y2hlcihvYmplY3QpOgorICAgICIiIkRpc3BhdGNoZXMgV2Vi
IFNvY2tldCByZXF1ZXN0cy4KKworICAgIFRoaXMgY2xhc3MgbWFpbnRhaW5zIGEgbWFwIGZyb20g
cmVzb3VyY2UgbmFtZSB0byBoYW5kbGVycy4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCByb290X2Rpciwgc2Nhbl9kaXI9Tm9uZSk6CisgICAgICAgICIiIkNvbnN0cnVjdCBhbiBp
bnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcm9vdF9kaXI6IFRoZSBkaXJl
Y3Rvcnkgd2hlcmUgaGFuZGxlciBkZWZpbml0aW9uIGZpbGVzIGFyZQorICAgICAgICAgICAgICAg
ICAgICAgIHBsYWNlZC4KKyAgICAgICAgICAgIHNjYW5fZGlyOiBUaGUgZGlyZWN0b3J5IHdoZXJl
IGhhbmRsZXIgZGVmaW5pdGlvbiBmaWxlcyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICBzZWFy
Y2hlZC4gc2Nhbl9kaXIgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciByb290X2RpciwKKyAgICAg
ICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgcm9vdF9kaXIgaXRzZWxmLiAgSWYgc2Nhbl9kaXIg
aXMgTm9uZSwgcm9vdF9kaXIKKyAgICAgICAgICAgICAgICAgICAgICBpcyB1c2VkIGFzIHNjYW5f
ZGlyLiBzY2FuX2RpciBjYW4gYmUgdXNlZnVsIGluIHNhdmluZworICAgICAgICAgICAgICAgICAg
ICAgIHNjYW4gdGltZSB3aGVuIHJvb3RfZGlyIGNvbnRhaW5zIG1hbnkgc3ViZGlyZWN0b3JpZXMu
CisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX2hhbmRsZXJzID0ge30KKyAgICAgICAgc2Vs
Zi5fc291cmNlX3dhcm5pbmdzID0gW10KKyAgICAgICAgaWYgc2Nhbl9kaXIgaXMgTm9uZToKKyAg
ICAgICAgICAgIHNjYW5fZGlyID0gcm9vdF9kaXIKKyAgICAgICAgaWYgbm90IG9zLnBhdGgucmVh
bHBhdGgoc2Nhbl9kaXIpLnN0YXJ0c3dpdGgoCisgICAgICAgICAgICAgICAgb3MucGF0aC5yZWFs
cGF0aChyb290X2RpcikpOgorICAgICAgICAgICAgcmFpc2UgRGlzcGF0Y2hFcnJvcignc2Nhbl9k
aXI6JXMgbXVzdCBiZSBhIGRpcmVjdG9yeSB1bmRlciAnCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICdyb290X2Rpcjolcy4nICUgKHNjYW5fZGlyLCByb290X2RpcikpCisgICAgICAg
IHNlbGYuX3NvdXJjZV9maWxlc19pbl9kaXIocm9vdF9kaXIsIHNjYW5fZGlyKQorCisgICAgZGVm
IGFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGFsaWFzX3Jlc291cmNlX3BhdGgsIGV4aXN0aW5nX3Jlc291cmNlX3BhdGgpOgorICAg
ICAgICAiIiJBZGQgcmVzb3VyY2UgcGF0aCBhbGlhcy4KKworICAgICAgICBPbmNlIGFkZGVkLCBy
ZXF1ZXN0IHRvIGFsaWFzX3Jlc291cmNlX3BhdGggd291bGQgYmUgaGFuZGxlZCBieQorICAgICAg
ICBoYW5kbGVyIHJlZ2lzdGVyZWQgZm9yIGV4aXN0aW5nX3Jlc291cmNlX3BhdGguCisKKyAgICAg
ICAgQXJnczoKKyAgICAgICAgICAgIGFsaWFzX3Jlc291cmNlX3BhdGg6IGFsaWFzIHJlc291cmNl
IHBhdGgKKyAgICAgICAgICAgIGV4aXN0aW5nX3Jlc291cmNlX3BhdGg6IGV4aXN0aW5nIHJlc291
cmNlIHBhdGgKKyAgICAgICAgIiIiCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGhhbmRsZXIg
PSBzZWxmLl9oYW5kbGVyc1tleGlzdGluZ19yZXNvdXJjZV9wYXRoXQorICAgICAgICAgICAgc2Vs
Zi5faGFuZGxlcnNbYWxpYXNfcmVzb3VyY2VfcGF0aF0gPSBoYW5kbGVyCisgICAgICAgIGV4Y2Vw
dCBLZXlFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIERpc3BhdGNoRXJyb3IoJ05vIGhhbmRsZXIg
Zm9yOiAlcicgJSBleGlzdGluZ19yZXNvdXJjZV9wYXRoKQorCisgICAgZGVmIHNvdXJjZV93YXJu
aW5ncyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHdhcm5pbmdzIGluIHNvdXJjaW5nIGhhbmRs
ZXJzLiIiIgorCisgICAgICAgIHJldHVybiBzZWxmLl9zb3VyY2Vfd2FybmluZ3MKKworICAgIGRl
ZiBkb19leHRyYV9oYW5kc2hha2Uoc2VsZiwgcmVxdWVzdCk6CisgICAgICAgICIiIkRvIGV4dHJh
IGNoZWNraW5nIGluIFdlYiBTb2NrZXQgaGFuZHNoYWtlLgorCisgICAgICAgIFNlbGVjdCBhIGhh
bmRsZXIgYmFzZWQgb24gcmVxdWVzdC51cmkgYW5kIGNhbGwgaXRzCisgICAgICAgIHdlYl9zb2Nr
ZXRfZG9fZXh0cmFfaGFuZHNoYWtlIGZ1bmN0aW9uLgorCisgICAgICAgIEFyZ3M6CisgICAgICAg
ICAgICByZXF1ZXN0OiBtb2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICIiIgorCisgICAgICAg
IGRvX2V4dHJhX2hhbmRzaGFrZV8sIHVudXNlZF90cmFuc2Zlcl9kYXRhID0gc2VsZi5faGFuZGxl
cihyZXF1ZXN0KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBkb19leHRyYV9oYW5kc2hha2Vf
KHJlcXVlc3QpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24sIGU6CisgICAgICAgICAgICB1dGls
LnByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24oCisgICAgICAgICAgICAgICAgICAgICclcyBy
YWlzZWQgZXhjZXB0aW9uIGZvciAlczogJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBfRE9fRVhUUkFfSEFORFNIQUtFX0hBTkRMRVJfTkFNRSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICByZXF1ZXN0LndzX3Jlc291cmNlKSwKKyAgICAgICAgICAgICAgICAgICAgZSkKKyAg
ICAgICAgICAgIHJhaXNlCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCByZXF1ZXN0KToK
KyAgICAgICAgIiIiTGV0IGEgaGFuZGxlciB0cmFuc2Zlcl9kYXRhIHdpdGggYSBXZWIgU29ja2V0
IGNsaWVudC4KKworICAgICAgICBTZWxlY3QgYSBoYW5kbGVyIGJhc2VkIG9uIHJlcXVlc3Qud3Nf
cmVzb3VyY2UgYW5kIGNhbGwgaXRzCisgICAgICAgIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YSBm
dW5jdGlvbi4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhv
biByZXF1ZXN0LgorICAgICAgICAiIiIKKworICAgICAgICB1bnVzZWRfZG9fZXh0cmFfaGFuZHNo
YWtlLCB0cmFuc2Zlcl9kYXRhXyA9IHNlbGYuX2hhbmRsZXIocmVxdWVzdCkKKyAgICAgICAgdHJ5
OgorICAgICAgICAgICAgdHJhbnNmZXJfZGF0YV8ocmVxdWVzdCkKKyAgICAgICAgZXhjZXB0IEV4
Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIHV0aWwucHJlcGVuZF9tZXNzYWdlX3RvX2V4Y2VwdGlv
bigKKyAgICAgICAgICAgICAgICAgICAgJyVzIHJhaXNlZCBleGNlcHRpb24gZm9yICVzOiAnICUg
KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9UUkFOU0ZFUl9EQVRBX0hBTkRMRVJfTkFN
RSwgcmVxdWVzdC53c19yZXNvdXJjZSksCisgICAgICAgICAgICAgICAgICAgIGUpCisgICAgICAg
ICAgICByYWlzZQorCisgICAgZGVmIF9oYW5kbGVyKHNlbGYsIHJlcXVlc3QpOgorICAgICAgICB0
cnk6CisgICAgICAgICAgICB3c19yZXNvdXJjZV9wYXRoID0gcmVxdWVzdC53c19yZXNvdXJjZS5z
cGxpdCgnPycsIDEpWzBdCisgICAgICAgICAgICByZXR1cm4gc2VsZi5faGFuZGxlcnNbd3NfcmVz
b3VyY2VfcGF0aF0KKyAgICAgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICAgICAgcmFpc2Ug
RGlzcGF0Y2hFcnJvcignTm8gaGFuZGxlciBmb3I6ICVyJyAlIHJlcXVlc3Qud3NfcmVzb3VyY2Up
CisKKyAgICBkZWYgX3NvdXJjZV9maWxlc19pbl9kaXIoc2VsZiwgcm9vdF9kaXIsIHNjYW5fZGly
KToKKyAgICAgICAgIiIiU291cmNlIGFsbCB0aGUgaGFuZGxlciBzb3VyY2UgZmlsZXMgaW4gdGhl
IHNjYW5fZGlyIGRpcmVjdG9yeS4KKworICAgICAgICBUaGUgcmVzb3VyY2UgcGF0aCBpcyBkZXRl
cm1pbmVkIHJlbGF0aXZlIHRvIHJvb3RfZGlyLgorICAgICAgICAiIiIKKworICAgICAgICB0b19y
ZXNvdXJjZSA9IF9wYXRoX3RvX3Jlc291cmNlX2NvbnZlcnRlcihyb290X2RpcikKKyAgICAgICAg
Zm9yIHBhdGggaW4gX3NvdXJjZV9maWxlX3BhdGhzKHNjYW5fZGlyKToKKyAgICAgICAgICAgIHRy
eToKKyAgICAgICAgICAgICAgICBoYW5kbGVycyA9IF9zb3VyY2Uob3BlbihwYXRoKS5yZWFkKCkp
CisgICAgICAgICAgICBleGNlcHQgRGlzcGF0Y2hFcnJvciwgZToKKyAgICAgICAgICAgICAgICBz
ZWxmLl9zb3VyY2Vfd2FybmluZ3MuYXBwZW5kKCclczogJXMnICUgKHBhdGgsIGUpKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLl9oYW5kbGVyc1t0b19yZXNvdXJj
ZShwYXRoKV0gPSBoYW5kbGVycworCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9w
eXdlYnNvY2tldC9oYW5kc2hha2UucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Ro
aXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hhbmRzaGFrZS5weQpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi5iODYyNzhlNjgzYzJmNzE0MGFlNWE2YzI1YmFkMWMzZTQzZTNlNjEyCi0tLSAvZGV2L251
bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L21vZF9weXdlYnNvY2tldC9oYW5kc2hha2UucHkKQEAgLTAsMCArMSwyMjAgQEAKKyMgQ29w
eXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAg
ICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMK
KyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0
cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdy
aXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUg
Q09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVE
IFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRF
RCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorCisKKyIiIldlYiBTb2NrZXQgaGFuZHNoYWtpbmcuCisKK05vdGU6IHJlcXVl
c3QuY29ubmVjdGlvbi53cml0ZS9yZWFkIGFyZSB1c2VkIGluIHRoaXMgbW9kdWxlLCBldmVuIHRo
b3VnaAorbW9kX3B5dGhvbiBkb2N1bWVudCBzYXlzIHRoYXQgdGhleSBzaG91bGQgYmUgdXNlZCBv
bmx5IGluIGNvbm5lY3Rpb24gaGFuZGxlcnMuCitVbmZvcnR1bmF0ZWx5LCB3ZSBoYXZlIG5vIG90
aGVyIG9wdGlvbnMuIEZvciBleGFtcGxlLCByZXF1ZXN0LndyaXRlL3JlYWQgYXJlCitub3Qgc3Vp
dGFibGUgYmVjYXVzZSB0aGV5IGRvbid0IGFsbG93IGRpcmVjdCByYXcgYnl0ZXMgd3JpdGluZy9y
ZWFkaW5nLgorIiIiCisKKworaW1wb3J0IHJlCisKK2ltcG9ydCB1dGlsCisKKworX0RFRkFVTFRf
V0VCX1NPQ0tFVF9QT1JUID0gODAKK19ERUZBVUxUX1dFQl9TT0NLRVRfU0VDVVJFX1BPUlQgPSA0
NDMKK19XRUJfU09DS0VUX1NDSEVNRSA9ICd3cycKK19XRUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUg
PSAnd3NzJworCitfTUFOREFUT1JZX0hFQURFUlMgPSBbCisgICAgIyBrZXksIGV4cGVjdGVkIHZh
bHVlIG9yIE5vbmUKKyAgICBbJ1VwZ3JhZGUnLCAnV2ViU29ja2V0J10sCisgICAgWydDb25uZWN0
aW9uJywgJ1VwZ3JhZGUnXSwKKyAgICBbJ0hvc3QnLCBOb25lXSwKKyAgICBbJ09yaWdpbicsIE5v
bmVdLAorXQorCitfRklSU1RfRklWRV9MSU5FUyA9IG1hcChyZS5jb21waWxlLCBbCisgICAgcide
R0VUIC9bXFNdKiBIVFRQLzEuMVxyXG4kJywKKyAgICByJ15VcGdyYWRlOiBXZWJTb2NrZXRcclxu
JCcsCisgICAgcideQ29ubmVjdGlvbjogVXBncmFkZVxyXG4kJywKKyAgICByJ15Ib3N0OiBbXFNd
K1xyXG4kJywKKyAgICByJ15PcmlnaW46IFtcU10rXHJcbiQnLAorXSkKKworX1NJWFRIX0FORF9M
QVRFUiA9IHJlLmNvbXBpbGUoCisgICAgcideJworICAgIHInKFdlYlNvY2tldC1Qcm90b2NvbDog
W1x4MjAtXHg3ZV0rXHJcbik/JworICAgIHInKENvb2tpZTogW15ccl0qXHJcbikqJworICAgIHIn
KENvb2tpZTI6IFteXHJdKlxyXG4pPycKKyAgICByJyhDb29raWU6IFteXHJdKlxyXG4pKicKKyAg
ICByJ1xyXG4nKQorCisKK2RlZiBfZGVmYXVsdF9wb3J0KGlzX3NlY3VyZSk6CisgICAgaWYgaXNf
c2VjdXJlOgorICAgICAgICByZXR1cm4gX0RFRkFVTFRfV0VCX1NPQ0tFVF9TRUNVUkVfUE9SVAor
ICAgIGVsc2U6CisgICAgICAgIHJldHVybiBfREVGQVVMVF9XRUJfU09DS0VUX1BPUlQKKworCitj
bGFzcyBIYW5kc2hha2VFcnJvcihFeGNlcHRpb24pOgorICAgICIiIkV4Y2VwdGlvbiBpbiBXZWIg
U29ja2V0IEhhbmRzaGFrZS4iIiIKKworICAgIHBhc3MKKworCitkZWYgX3ZhbGlkYXRlX3Byb3Rv
Y29sKHByb3RvY29sKToKKyAgICAiIiJWYWxpZGF0ZSBXZWJTb2NrZXQtUHJvdG9jb2wgc3RyaW5n
LiIiIgorCisgICAgaWYgbm90IHByb3RvY29sOgorICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJv
cignSW52YWxpZCBXZWJTb2NrZXQtUHJvdG9jb2w6IGVtcHR5JykKKyAgICBmb3IgYyBpbiBwcm90
b2NvbDoKKyAgICAgICAgaWYgbm90IDB4MjAgPD0gb3JkKGMpIDw9IDB4N2U6CisgICAgICAgICAg
ICByYWlzZSBIYW5kc2hha2VFcnJvcignSWxsZWdhbCBjaGFyYWN0ZXIgaW4gcHJvdG9jb2w6ICVy
JyAlIGMpCisKKworY2xhc3MgSGFuZHNoYWtlcihvYmplY3QpOgorICAgICIiIlRoaXMgY2xhc3Mg
cGVyZm9ybXMgV2ViIFNvY2tldCBoYW5kc2hha2UuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2Vs
ZiwgcmVxdWVzdCwgZGlzcGF0Y2hlciwgc3RyaWN0PUZhbHNlKToKKyAgICAgICAgIiIiQ29uc3Ry
dWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6CisgICAgICAgICAgICByZXF1ZXN0OiBt
b2RfcHl0aG9uIHJlcXVlc3QuCisgICAgICAgICAgICBkaXNwYXRjaGVyOiBEaXNwYXRjaGVyIChk
aXNwYXRjaC5EaXNwYXRjaGVyKS4KKyAgICAgICAgICAgIHN0cmljdDogU3RyaWN0bHkgY2hlY2sg
aGFuZHNoYWtlIHJlcXVlc3QuIERlZmF1bHQ6IEZhbHNlLgorICAgICAgICAgICAgICAgIElmIFRy
dWUsIHJlcXVlc3QuY29ubmVjdGlvbiBtdXN0IHByb3ZpZGUgZ2V0X21lbW9yaXplZF9saW5lcwor
ICAgICAgICAgICAgICAgIG1ldGhvZC4KKworICAgICAgICBIYW5kc2hha2VyIHdpbGwgYWRkIGF0
dHJpYnV0ZXMgc3VjaCBhcyB3c19yZXNvdXJjZSBpbiBwZXJmb3JtaW5nCisgICAgICAgIGhhbmRz
aGFrZS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAg
ICAgICAgc2VsZi5fZGlzcGF0Y2hlciA9IGRpc3BhdGNoZXIKKyAgICAgICAgc2VsZi5fc3RyaWN0
ID0gc3RyaWN0CisKKyAgICBkZWYgZG9faGFuZHNoYWtlKHNlbGYpOgorICAgICAgICAiIiJQZXJm
b3JtIFdlYiBTb2NrZXQgSGFuZHNoYWtlLiIiIgorCisgICAgICAgIHNlbGYuX2NoZWNrX2hlYWRl
cl9saW5lcygpCisgICAgICAgIHNlbGYuX3NldF9yZXNvdXJjZSgpCisgICAgICAgIHNlbGYuX3Nl
dF9vcmlnaW4oKQorICAgICAgICBzZWxmLl9zZXRfbG9jYXRpb24oKQorICAgICAgICBzZWxmLl9z
ZXRfcHJvdG9jb2woKQorICAgICAgICBzZWxmLl9kaXNwYXRjaGVyLmRvX2V4dHJhX2hhbmRzaGFr
ZShzZWxmLl9yZXF1ZXN0KQorICAgICAgICBzZWxmLl9zZW5kX2hhbmRzaGFrZSgpCisKKyAgICBk
ZWYgX3NldF9yZXNvdXJjZShzZWxmKToKKyAgICAgICAgc2VsZi5fcmVxdWVzdC53c19yZXNvdXJj
ZSA9IHNlbGYuX3JlcXVlc3QudXJpCisKKyAgICBkZWYgX3NldF9vcmlnaW4oc2VsZik6CisgICAg
ICAgIHNlbGYuX3JlcXVlc3Qud3Nfb3JpZ2luID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luWydP
cmlnaW4nXQorCisgICAgZGVmIF9zZXRfbG9jYXRpb24oc2VsZik6CisgICAgICAgIGxvY2F0aW9u
X3BhcnRzID0gW10KKyAgICAgICAgaWYgc2VsZi5fcmVxdWVzdC5pc19odHRwcygpOgorICAgICAg
ICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKF9XRUJfU09DS0VUX1NFQ1VSRV9TQ0hFTUUpCisg
ICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoX1dFQl9TT0NL
RVRfU0NIRU1FKQorICAgICAgICBsb2NhdGlvbl9wYXJ0cy5hcHBlbmQoJzovLycpCisgICAgICAg
IGhvc3QsIHBvcnQgPSBzZWxmLl9wYXJzZV9ob3N0X2hlYWRlcigpCisgICAgICAgIGNvbm5lY3Rp
b25fcG9ydCA9IHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi5sb2NhbF9hZGRyWzFdCisgICAgICAg
IGlmIHBvcnQgIT0gY29ubmVjdGlvbl9wb3J0OgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtl
RXJyb3IoJ0hlYWRlci9jb25uZWN0aW9uIHBvcnQgbWlzbWF0Y2g6ICVkLyVkJyAlCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAocG9ydCwgY29ubmVjdGlvbl9wb3J0KSkKKyAgICAg
ICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKGhvc3QpCisgICAgICAgIGlmIChwb3J0ICE9IF9kZWZh
dWx0X3BvcnQoc2VsZi5fcmVxdWVzdC5pc19odHRwcygpKSk6CisgICAgICAgICAgICBsb2NhdGlv
bl9wYXJ0cy5hcHBlbmQoJzonKQorICAgICAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHN0
cihwb3J0KSkKKyAgICAgICAgbG9jYXRpb25fcGFydHMuYXBwZW5kKHNlbGYuX3JlcXVlc3QudXJp
KQorICAgICAgICBzZWxmLl9yZXF1ZXN0LndzX2xvY2F0aW9uID0gJycuam9pbihsb2NhdGlvbl9w
YXJ0cykKKworICAgIGRlZiBfcGFyc2VfaG9zdF9oZWFkZXIoc2VsZik6CisgICAgICAgIGZpZWxk
cyA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pblsnSG9zdCddLnNwbGl0KCc6JywgMSkKKyAgICAg
ICAgaWYgbGVuKGZpZWxkcykgPT0gMToKKyAgICAgICAgICAgIHJldHVybiBmaWVsZHNbMF0sIF9k
ZWZhdWx0X3BvcnQoc2VsZi5fcmVxdWVzdC5pc19odHRwcygpKQorICAgICAgICB0cnk6CisgICAg
ICAgICAgICByZXR1cm4gZmllbGRzWzBdLCBpbnQoZmllbGRzWzFdKQorICAgICAgICBleGNlcHQg
VmFsdWVFcnJvciwgZToKKyAgICAgICAgICAgIHJhaXNlIEhhbmRzaGFrZUVycm9yKCdJbnZhbGlk
IHBvcnQgbnVtYmVyIGZvcm1hdDogJXInICUgZSkKKworICAgIGRlZiBfc2V0X3Byb3RvY29sKHNl
bGYpOgorICAgICAgICBwcm90b2NvbCA9IHNlbGYuX3JlcXVlc3QuaGVhZGVyc19pbi5nZXQoJ1dl
YlNvY2tldC1Qcm90b2NvbCcpCisgICAgICAgIGlmIHByb3RvY29sIGlzIG5vdCBOb25lOgorICAg
ICAgICAgICAgX3ZhbGlkYXRlX3Byb3RvY29sKHByb3RvY29sKQorICAgICAgICBzZWxmLl9yZXF1
ZXN0LndzX3Byb3RvY29sID0gcHJvdG9jb2wKKworICAgIGRlZiBfc2VuZF9oYW5kc2hha2Uoc2Vs
Zik6CisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgKKyAgICAgICAgICAg
ICAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wgSGFuZHNoYWtlXHJcbicpCisg
ICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnVXBncmFkZTogV2ViU29ja2V0
XHJcbicpCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53cml0ZSgnQ29ubmVjdGlv
bjogVXBncmFkZVxyXG4nKQorICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUo
J1dlYlNvY2tldC1PcmlnaW46ICcpCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVjdGlvbi53
cml0ZShzZWxmLl9yZXF1ZXN0LndzX29yaWdpbikKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25u
ZWN0aW9uLndyaXRlKCdcclxuJykKKyAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndy
aXRlKCdXZWJTb2NrZXQtTG9jYXRpb246ICcpCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29ubmVj
dGlvbi53cml0ZShzZWxmLl9yZXF1ZXN0LndzX2xvY2F0aW9uKQorICAgICAgICBzZWxmLl9yZXF1
ZXN0LmNvbm5lY3Rpb24ud3JpdGUoJ1xyXG4nKQorICAgICAgICBpZiBzZWxmLl9yZXF1ZXN0Lndz
X3Byb3RvY29sOgorICAgICAgICAgICAgc2VsZi5fcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdX
ZWJTb2NrZXQtUHJvdG9jb2w6ICcpCisgICAgICAgICAgICBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoc2VsZi5fcmVxdWVzdC53c19wcm90b2NvbCkKKyAgICAgICAgICAgIHNlbGYuX3Jl
cXVlc3QuY29ubmVjdGlvbi53cml0ZSgnXHJcbicpCisgICAgICAgIHNlbGYuX3JlcXVlc3QuY29u
bmVjdGlvbi53cml0ZSgnXHJcbicpCisKKyAgICBkZWYgX2NoZWNrX2hlYWRlcl9saW5lcyhzZWxm
KToKKyAgICAgICAgZm9yIGtleSwgZXhwZWN0ZWRfdmFsdWUgaW4gX01BTkRBVE9SWV9IRUFERVJT
OgorICAgICAgICAgICAgYWN0dWFsX3ZhbHVlID0gc2VsZi5fcmVxdWVzdC5oZWFkZXJzX2luLmdl
dChrZXkpCisgICAgICAgICAgICBpZiBub3QgYWN0dWFsX3ZhbHVlOgorICAgICAgICAgICAgICAg
IHJhaXNlIEhhbmRzaGFrZUVycm9yKCdIZWFkZXIgJXMgaXMgbm90IGRlZmluZWQnICUga2V5KQor
ICAgICAgICAgICAgaWYgZXhwZWN0ZWRfdmFsdWU6CisgICAgICAgICAgICAgICAgaWYgYWN0dWFs
X3ZhbHVlICE9IGV4cGVjdGVkX3ZhbHVlOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBIYW5k
c2hha2VFcnJvcignSWxsZWdhbCB2YWx1ZSBmb3IgaGVhZGVyICVzOiAlcycgJQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoa2V5LCBhY3R1YWxfdmFsdWUpKQorICAg
ICAgICBpZiBzZWxmLl9zdHJpY3Q6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg
bGluZXMgPSBzZWxmLl9yZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcygpCisg
ICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3IsIGU6CisgICAgICAgICAgICAgICAgdXRp
bC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICAgICAnU3Ry
aWN0IGhhbmRzaGFrZSBpcyBzcGVjaWZpZWQgYnV0IHRoZSBjb25uZWN0aW9uICcKKyAgICAgICAg
ICAgICAgICAgICAgJ2RvZXNuXCd0IHByb3ZpZGUgZ2V0X21lbW9yaXplZF9saW5lcygpJywgZSkK
KyAgICAgICAgICAgICAgICByYWlzZQorICAgICAgICAgICAgc2VsZi5fY2hlY2tfZmlyc3RfbGlu
ZXMobGluZXMpCisKKyAgICBkZWYgX2NoZWNrX2ZpcnN0X2xpbmVzKHNlbGYsIGxpbmVzKToKKyAg
ICAgICAgaWYgbGVuKGxpbmVzKSA8IGxlbihfRklSU1RfRklWRV9MSU5FUyk6CisgICAgICAgICAg
ICByYWlzZSBIYW5kc2hha2VFcnJvcignVG9vIGZldyBoZWFkZXIgbGluZXM6ICVkJyAlIGxlbihs
aW5lcykpCisgICAgICAgIGZvciBsaW5lLCByZWdleHAgaW4gemlwKGxpbmVzLCBfRklSU1RfRklW
RV9MSU5FUyk6CisgICAgICAgICAgICBpZiBub3QgcmVnZXhwLnNlYXJjaChsaW5lKToKKyAgICAg
ICAgICAgICAgICByYWlzZSBIYW5kc2hha2VFcnJvcignVW5leHBlY3RlZCBoZWFkZXI6ICVyIGRv
ZXNuXCd0IG1hdGNoICVyJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUg
KGxpbmUsIHJlZ2V4cC5wYXR0ZXJuKSkKKyAgICAgICAgc2l4dGhfYW5kX2xhdGVyID0gJycuam9p
bihsaW5lc1s1Ol0pCisgICAgICAgIGlmIG5vdCBfU0lYVEhfQU5EX0xBVEVSLnNlYXJjaChzaXh0
aF9hbmRfbGF0ZXIpOgorICAgICAgICAgICAgcmFpc2UgSGFuZHNoYWtlRXJyb3IoJ1VuZXhwZWN0
ZWQgaGVhZGVyOiAlciBkb2VzblwndCBtYXRjaCAlcicKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICUgKHNpeHRoX2FuZF9sYXRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIF9TSVhUSF9BTkRfTEFURVIucGF0dGVybikpCisKKworIyB2aTpzdHM9NCBzdz00
IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkv
cHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkgYi9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vi
c29ja2V0L2hlYWRlcnBhcnNlcmhhbmRsZXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMTI0YjlmMWEyNDFjNGIz
OTEwYzMwMDNhYzg4NjliMzc5MzQ4NGY4MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQv
aGVhZGVycGFyc2VyaGFuZGxlci5weQpAQCAtMCwwICsxLDk5IEBACisjIENvcHlyaWdodCAyMDA5
LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQor
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVy
IHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1
dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBm
cm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1p
c3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBI
T0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEg
UEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUg
Q09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KworCisiIiJQeXRob25IZWFkZXJQYXJzZXJIYW5kbGVyIGZvciBtb2RfcHl3ZWJzb2NrZXQuCisK
K0FwYWNoZSBIVFRQIFNlcnZlciBhbmQgbW9kX3B5dGhvbiBtdXN0IGJlIGNvbmZpZ3VyZWQgc3Vj
aCB0aGF0IHRoaXMKK2Z1bmN0aW9uIGlzIGNhbGxlZCB0byBoYW5kbGUgV2ViIFNvY2tldCByZXF1
ZXN0LgorIiIiCisKKworZnJvbSBtb2RfcHl0aG9uIGltcG9ydCBhcGFjaGUKKworaW1wb3J0IGRp
c3BhdGNoCitpbXBvcnQgaGFuZHNoYWtlCitpbXBvcnQgdXRpbAorCisKKyMgUHl0aG9uT3B0aW9u
IHRvIHNwZWNpZnkgdGhlIGhhbmRsZXIgcm9vdCBkaXJlY3RvcnkuCitfUFlPUFRfSEFORExFUl9S
T09UID0gJ21vZF9weXdlYnNvY2tldC5oYW5kbGVyX3Jvb3QnCisKKyMgUHl0aG9uT3B0aW9uIHRv
IHNwZWNpZnkgdGhlIGhhbmRsZXIgc2NhbiBkaXJlY3RvcnkuCisjIFRoaXMgbXVzdCBiZSBhIGRp
cmVjdG9yeSB1bmRlciB0aGUgcm9vdCBkaXJlY3RvcnkuCisjIFRoZSBkZWZhdWx0IGlzIHRoZSBy
b290IGRpcmVjdG9yeS4KK19QWU9QVF9IQU5ETEVSX1NDQU4gPSAnbW9kX3B5d2Vic29ja2V0Lmhh
bmRsZXJfc2NhbicKKworCitkZWYgX2NyZWF0ZV9kaXNwYXRjaGVyKCk6CisgICAgX0hBTkRMRVJf
Uk9PVCA9IGFwYWNoZS5tYWluX3NlcnZlci5nZXRfb3B0aW9ucygpLmdldCgKKyAgICAgICAgICAg
IF9QWU9QVF9IQU5ETEVSX1JPT1QsIE5vbmUpCisgICAgaWYgbm90IF9IQU5ETEVSX1JPT1Q6Cisg
ICAgICAgIHJhaXNlIEV4Y2VwdGlvbignUHl0aG9uT3B0aW9uICVzIGlzIG5vdCBkZWZpbmVkJyAl
IF9QWU9QVF9IQU5ETEVSX1JPT1QsCisgICAgICAgICAgICAgICAgICAgICAgICBhcGFjaGUuQVBM
T0dfRVJSKQorICAgIF9IQU5ETEVSX1NDQU4gPSBhcGFjaGUubWFpbl9zZXJ2ZXIuZ2V0X29wdGlv
bnMoKS5nZXQoCisgICAgICAgICAgICBfUFlPUFRfSEFORExFUl9TQ0FOLCBfSEFORExFUl9ST09U
KQorICAgIGRpc3BhdGNoZXIgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9IQU5ETEVSX1JPT1QsIF9I
QU5ETEVSX1NDQU4pCisgICAgZm9yIHdhcm5pbmcgaW4gZGlzcGF0Y2hlci5zb3VyY2Vfd2Fybmlu
Z3MoKToKKyAgICAgICAgYXBhY2hlLmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3
YXJuaW5nLCBhcGFjaGUuQVBMT0dfV0FSTklORykKKyAgICByZXR1cm4gZGlzcGF0Y2hlcgorCisK
KyMgSW5pdGlhbGl6ZQorX2Rpc3BhdGNoZXIgPSBfY3JlYXRlX2Rpc3BhdGNoZXIoKQorCisKK2Rl
ZiBoZWFkZXJwYXJzZXJoYW5kbGVyKHJlcXVlc3QpOgorICAgICIiIkhhbmRsZSByZXF1ZXN0Lgor
CisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorCisgICAg
VGhpcyBmdW5jdGlvbiBpcyBuYW1lZCBoZWFkZXJwYXJzZXJoYW5kbGVyIGJlY2F1c2UgaXQgaXMg
dGhlIGRlZmF1bHQgbmFtZQorICAgIGZvciBhIFB5dGhvbkhlYWRlclBhcnNlckhhbmRsZXIuCisg
ICAgIiIiCisKKyAgICB0cnk6CisgICAgICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNo
YWtlcihyZXF1ZXN0LCBfZGlzcGF0Y2hlcikKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hh
a2UoKQorICAgICAgICByZXF1ZXN0LmxvZ19lcnJvcignbW9kX3B5d2Vic29ja2V0OiByZXNvdXJj
ZTogJXInICUgcmVxdWVzdC53c19yZXNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
YXBhY2hlLkFQTE9HX0RFQlVHKQorICAgICAgICBfZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJl
cXVlc3QpCisgICAgZXhjZXB0IGhhbmRzaGFrZS5IYW5kc2hha2VFcnJvciwgZToKKyAgICAgICAg
IyBIYW5kc2hha2UgZm9yIHdzL3dzcyBmYWlsZWQuCisgICAgICAgICMgQnV0IHRoZSByZXF1ZXN0
IGNhbiBiZSB2YWxpZCBodHRwL2h0dHBzIHJlcXVlc3QuCisgICAgICAgIHJlcXVlc3QubG9nX2Vy
cm9yKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAlIGUsIGFwYWNoZS5BUExPR19JTkZPKQorICAgICAg
ICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVECisgICAgZXhjZXB0IGRpc3BhdGNoLkRpc3BhdGNoRXJy
b3IsIGU6CisgICAgICAgIHJlcXVlc3QubG9nX2Vycm9yKCdtb2RfcHl3ZWJzb2NrZXQ6ICVzJyAl
IGUsIGFwYWNoZS5BUExPR19XQVJOSU5HKQorICAgICAgICByZXR1cm4gYXBhY2hlLkRFQ0xJTkVE
CisgICAgcmV0dXJuIGFwYWNoZS5ET05FICAjIFJldHVybiBET05FIHN1Y2ggdGhhdCBubyBvdGhl
ciBoYW5kbGVycyBhcmUgaW52b2tlZC4KKworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdp
dCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9t
b2RfcHl3ZWJzb2NrZXQvbWVtb3JpemluZ2ZpbGUucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdm
aWxlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjJmOGE1NGU0NTZkNjBlODFhM2EyNGQ2NDNmNjFmYzQ2NDFjOThj
OWIKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L21lbW9yaXppbmdmaWxlLnB5CkBAIC0w
LDAgKzEsODEgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBDb3B5cmlnaHQgMjAwOSwg
R29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMg
Y29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0
aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRv
cnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJv
bQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9M
REVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBB
UlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENP
UFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisK
KworIiIiTWVtb3JpemluZyBmaWxlLgorCitBIG1lbW9yaXppbmcgZmlsZSB3cmFwcyBhIGZpbGUg
YW5kIG1lbW9yaXplcyBsaW5lcyByZWFkIGJ5IHJlYWRsaW5lLgorIiIiCisKKworaW1wb3J0IHN5
cworCisKK2NsYXNzIE1lbW9yaXppbmdGaWxlKG9iamVjdCk6CisgICAgIiIiTWVtb3JpemluZ0Zp
bGUgd3JhcHMgYSBmaWxlIGFuZCBtZW1vcml6ZXMgbGluZXMgcmVhZCBieSByZWFkbGluZS4KKwor
ICAgIE5vdGUgdGhhdCBkYXRhIHJlYWQgYnkgb3RoZXIgbWV0aG9kcyBhcmUgbm90IG1lbW9yaXpl
ZC4gVGhpcyBiZWhhdmlvcgorICAgIGlzIGdvb2QgZW5vdWdoIGZvciBtZW1vcml6aW5nIGxpbmVz
IFNpbXBsZUhUVFBTZXJ2ZXIgcmVhZHMgYmVmb3JlCisgICAgdGhlIGNvbnRyb2wgcmVhY2hlcyBX
ZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
ZmlsZV8sIG1heF9tZW1vcml6ZWRfbGluZXM9c3lzLm1heGludCk6CisgICAgICAgICIiIkNvbnN0
cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgZmlsZV86IHRo
ZSBmaWxlIG9iamVjdCB0byB3cmFwLgorICAgICAgICAgICAgbWF4X21lbW9yaXplZF9saW5lczog
dGhlIG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRvIG1lbW9yaXplLgorICAgICAgICAgICAgICAg
IE9ubHkgdGhlIGZpcnN0IG1heF9tZW1vcml6ZWRfbGluZXMgYXJlIG1lbW9yaXplZC4KKyAgICAg
ICAgICAgICAgICBEZWZhdWx0OiBzeXMubWF4aW50LiAKKyAgICAgICAgIiIiCisgICAgICAgIHNl
bGYuX2ZpbGUgPSBmaWxlXworICAgICAgICBzZWxmLl9tZW1vcml6ZWRfbGluZXMgPSBbXQorICAg
ICAgICBzZWxmLl9tYXhfbWVtb3JpemVkX2xpbmVzID0gbWF4X21lbW9yaXplZF9saW5lcworCisg
ICAgZGVmIF9fZ2V0YXR0cmlidXRlX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5hbWUgaW4g
KCdfZmlsZScsICdfbWVtb3JpemVkX2xpbmVzJywgJ19tYXhfbWVtb3JpemVkX2xpbmVzJywKKyAg
ICAgICAgICAgICAgICAgICAgJ3JlYWRsaW5lJywgJ2dldF9tZW1vcml6ZWRfbGluZXMnKToKKyAg
ICAgICAgICAgIHJldHVybiBvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKQorICAg
ICAgICByZXR1cm4gc2VsZi5fZmlsZS5fX2dldGF0dHJpYnV0ZV9fKG5hbWUpCisKKyAgICBkZWYg
cmVhZGxpbmUoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIGZpbGUucmVhZGxpbmUgYW5kIG1l
bW9yaXplIHRoZSBsaW5lIHJlYWQuIiIiCisKKyAgICAgICAgbGluZSA9IHNlbGYuX2ZpbGUucmVh
ZGxpbmUoKQorICAgICAgICBpZiBsaW5lIGFuZCBsZW4oc2VsZi5fbWVtb3JpemVkX2xpbmVzKSA8
IHNlbGYuX21heF9tZW1vcml6ZWRfbGluZXM6CisgICAgICAgICAgICBzZWxmLl9tZW1vcml6ZWRf
bGluZXMuYXBwZW5kKGxpbmUpCisgICAgICAgIHJldHVybiBsaW5lCisKKyAgICBkZWYgZ2V0X21l
bW9yaXplZF9saW5lcyhzZWxmKToKKyAgICAgICAgIiIiR2V0IGxpbmVzIG1lbW9yaXplZCBzbyBm
YXIuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9tZW1vcml6ZWRfbGluZXMKKworCisjIHZpOnN0
cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvbXNndXRpbC5weSBiL1dlYktpdFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2Nr
ZXQvbXNndXRpbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MGFlNzE1OTEzYTE1NTBmYzE4YWQ1YjcyYzcxNzQ3
M2ExMTM1MzkwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L21vZF9weXdlYnNvY2tldC9tc2d1dGlsLnB5CkBAIC0w
LDAgKzEsMjUwIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisj
ICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMg
ZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNl
IG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91
dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMg
IkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAor
IyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
IyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisiIiJNZXNzYWdlIHJlbGF0ZWQgdXRp
bGl0aWVzLgorCitOb3RlOiByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUvcmVhZCBhcmUgdXNlZCBp
biB0aGlzIG1vZHVsZSwgZXZlbiB0aG91Z2gKK21vZF9weXRob24gZG9jdW1lbnQgc2F5cyB0aGF0
IHRoZXkgc2hvdWxkIGJlIHVzZWQgb25seSBpbiBjb25uZWN0aW9uIGhhbmRsZXJzLgorVW5mb3J0
dW5hdGVseSwgd2UgaGF2ZSBubyBvdGhlciBvcHRpb25zLiBGb3IgZXhhbXBsZSwgcmVxdWVzdC53
cml0ZS9yZWFkIGFyZQorbm90IHN1aXRhYmxlIGJlY2F1c2UgdGhleSBkb24ndCBhbGxvdyBkaXJl
Y3QgcmF3IGJ5dGVzIHdyaXRpbmcvcmVhZGluZy4KKyIiIgorCisKK2ltcG9ydCBRdWV1ZQoraW1w
b3J0IHRocmVhZGluZworaW1wb3J0IHV0aWwKKworCitjbGFzcyBNc2dVdGlsRXhjZXB0aW9uKEV4
Y2VwdGlvbik6CisgICAgcGFzcworCisKK2RlZiBfcmVhZChyZXF1ZXN0LCBsZW5ndGgpOgorICAg
IGJ5dGVzID0gcmVxdWVzdC5jb25uZWN0aW9uLnJlYWQobGVuZ3RoKQorICAgIGlmIG5vdCBieXRl
czoKKyAgICAgICAgcmFpc2UgTXNnVXRpbEV4Y2VwdGlvbigKKyAgICAgICAgICAgICAgICAnRmFp
bGVkIHRvIHJlY2VpdmUgbWVzc2FnZSBmcm9tICVyJyAlCisgICAgICAgICAgICAgICAgICAgICAg
ICAocmVxdWVzdC5jb25uZWN0aW9uLnJlbW90ZV9hZGRyLCkpCisgICAgcmV0dXJuIGJ5dGVzCisK
KworZGVmIF93cml0ZShyZXF1ZXN0LCBieXRlcyk6CisgICAgdHJ5OgorICAgICAgICByZXF1ZXN0
LmNvbm5lY3Rpb24ud3JpdGUoYnl0ZXMpCisgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAg
ICAgdXRpbC5wcmVwZW5kX21lc3NhZ2VfdG9fZXhjZXB0aW9uKAorICAgICAgICAgICAgICAgICdG
YWlsZWQgdG8gc2VuZCBtZXNzYWdlIHRvICVyOiAnICUKKyAgICAgICAgICAgICAgICAgICAgICAg
IChyZXF1ZXN0LmNvbm5lY3Rpb24ucmVtb3RlX2FkZHIsKSwKKyAgICAgICAgICAgICAgICBlKQor
ICAgICAgICByYWlzZQorCisKK2RlZiBzZW5kX21lc3NhZ2UocmVxdWVzdCwgbWVzc2FnZSk6Cisg
ICAgIiIiU2VuZCBtZXNzYWdlLgorCisgICAgQXJnczoKKyAgICAgICAgcmVxdWVzdDogbW9kX3B5
dGhvbiByZXF1ZXN0LgorICAgICAgICBtZXNzYWdlOiB1bmljb2RlIHN0cmluZyB0byBzZW5kLgor
ICAgICIiIgorCisgICAgX3dyaXRlKHJlcXVlc3QsICdceDAwJyArIG1lc3NhZ2UuZW5jb2RlKCd1
dGYtOCcpICsgJ1x4ZmYnKQorCisKK2RlZiByZWNlaXZlX21lc3NhZ2UocmVxdWVzdCk6CisgICAg
IiIiUmVjZWl2ZSBhIFdlYiBTb2NrZXQgZnJhbWUgYW5kIHJldHVybiBpdHMgcGF5bG9hZCBhcyB1
bmljb2RlIHN0cmluZy4KKworICAgIEFyZ3M6CisgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24g
cmVxdWVzdC4KKyAgICAiIiIKKworICAgIHdoaWxlIFRydWU6CisgICAgICAgICMgUmVhZCAxIGJ5
dGUuCisgICAgICAgICMgbXBfY29ubi5yZWFkIHdpbGwgYmxvY2sgaWYgbm8gYnl0ZXMgYXJlIGF2
YWlsYWJsZS4KKyAgICAgICAgIyBUaW1lb3V0IGlzIGNvbnRyb2xsZWQgYnkgVGltZU91dCBkaXJl
Y3RpdmUgb2YgQXBhY2hlLgorICAgICAgICBmcmFtZV90eXBlX3N0ciA9IF9yZWFkKHJlcXVlc3Qs
IDEpCisgICAgICAgIGZyYW1lX3R5cGUgPSBvcmQoZnJhbWVfdHlwZV9zdHJbMF0pCisgICAgICAg
IGlmIChmcmFtZV90eXBlICYgMHg4MCkgPT0gMHg4MDoKKyAgICAgICAgICAgICMgVGhlIHBheWxv
YWQgbGVuZ3RoIGlzIHNwZWNpZmllZCBpbiB0aGUgZnJhbWUuCisgICAgICAgICAgICAjIFJlYWQg
YW5kIGRpc2NhcmQuCisgICAgICAgICAgICBsZW5ndGggPSBfcGF5bG9hZF9sZW5ndGgocmVxdWVz
dCkKKyAgICAgICAgICAgIF9yZWNlaXZlX2J5dGVzKHJlcXVlc3QsIGxlbmd0aCkKKyAgICAgICAg
ZWxzZToKKyAgICAgICAgICAgICMgVGhlIHBheWxvYWQgaXMgZGVsaW1pdGVkIHdpdGggXHhmZi4K
KyAgICAgICAgICAgIGJ5dGVzID0gX3JlYWRfdW50aWwocmVxdWVzdCwgJ1x4ZmYnKQorICAgICAg
ICAgICAgIyBUaGUgV2ViIFNvY2tldCBwcm90b2NvbCBzZWN0aW9uIDQuNCBzcGVjaWZpZXMgdGhh
dCBpbnZhbGlkCisgICAgICAgICAgICAjIGNoYXJhY3RlcnMgbXVzdCBiZSByZXBsYWNlZCB3aXRo
IFUrZmZmZCBSRVBMQUNFTUVOVCBDSEFSQUNURVIuCisgICAgICAgICAgICBtZXNzYWdlID0gYnl0
ZXMuZGVjb2RlKCd1dGYtOCcsICdyZXBsYWNlJykKKyAgICAgICAgICAgIGlmIGZyYW1lX3R5cGUg
PT0gMHgwMDoKKyAgICAgICAgICAgICAgICByZXR1cm4gbWVzc2FnZQorICAgICAgICAgICAgIyBE
aXNjYXJkIGRhdGEgb2Ygb3RoZXIgdHlwZXMuCisKKworZGVmIF9wYXlsb2FkX2xlbmd0aChyZXF1
ZXN0KToKKyAgICBsZW5ndGggPSAwCisgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgYl9zdHIgPSBf
cmVhZChyZXF1ZXN0LCAxKQorICAgICAgICBiID0gb3JkKGJfc3RyWzBdKQorICAgICAgICBsZW5n
dGggPSBsZW5ndGggKiAxMjggKyAoYiAmIDB4N2YpCisgICAgICAgIGlmIChiICYgMHg4MCkgPT0g
MDoKKyAgICAgICAgICAgIGJyZWFrCisgICAgcmV0dXJuIGxlbmd0aAorCisKK2RlZiBfcmVjZWl2
ZV9ieXRlcyhyZXF1ZXN0LCBsZW5ndGgpOgorICAgIGJ5dGVzID0gW10KKyAgICB3aGlsZSBsZW5n
dGggPiAwOgorICAgICAgICBuZXdfYnl0ZXMgPSBfcmVhZChyZXF1ZXN0LCBsZW5ndGgpCisgICAg
ICAgIGJ5dGVzLmFwcGVuZChuZXdfYnl0ZXMpCisgICAgICAgIGxlbmd0aCAtPSBsZW4obmV3X2J5
dGVzKQorICAgIHJldHVybiAnJy5qb2luKGJ5dGVzKQorCisKK2RlZiBfcmVhZF91bnRpbChyZXF1
ZXN0LCBkZWxpbV9jaGFyKToKKyAgICBieXRlcyA9IFtdCisgICAgd2hpbGUgVHJ1ZToKKyAgICAg
ICAgY2ggPSBfcmVhZChyZXF1ZXN0LCAxKQorICAgICAgICBpZiBjaCA9PSBkZWxpbV9jaGFyOgor
ICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgYnl0ZXMuYXBwZW5kKGNoKQorICAgIHJldHVybiAn
Jy5qb2luKGJ5dGVzKQorCisKK2NsYXNzIE1lc3NhZ2VSZWNlaXZlcih0aHJlYWRpbmcuVGhyZWFk
KToKKyAgICAiIiJUaGlzIGNsYXNzIHJlY2VpdmVzIG1lc3NhZ2VzIGZyb20gdGhlIGNsaWVudC4K
KworICAgIFRoaXMgY2xhc3MgcHJvdmlkZXMgdGhyZWUgd2F5cyB0byByZWNlaXZlIG1lc3NhZ2Vz
OiBibG9ja2luZywgbm9uLWJsb2NraW5nLAorICAgIGFuZCB2aWEgY2FsbGJhY2suIENhbGxiYWNr
IGhhcyB0aGUgaGlnaGVzdCBwcmVjZWRlbmNlLgorCisgICAgTm90ZTogVGhpcyBjbGFzcyBzaG91
bGQgbm90IGJlIHVzZWQgd2l0aCB0aGUgc3RhbmRhbG9uZSBzZXJ2ZXIgZm9yIHdzcworICAgIGJl
Y2F1c2UgcHlPcGVuU1NMIHVzZWQgYnkgdGhlIHNlcnZlciByYWlzZXMgYSBmYXRhbCBlcnJvciBp
ZiB0aGUgc29ja2V0CisgICAgaXMgYWNjZXNzZWQgZnJvbSBtdWx0aXBsZSB0aHJlYWRzLgorICAg
ICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0LCBvbm1lc3NhZ2U9Tm9uZSk6Cisg
ICAgICAgICIiIkNvbnN0cnVjdCBhbiBpbnN0YW5jZS4KKworICAgICAgICBBcmdzOgorICAgICAg
ICAgICAgcmVxdWVzdDogbW9kX3B5dGhvbiByZXF1ZXN0LgorICAgICAgICAgICAgb25tZXNzYWdl
OiBhIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCB3aGVuIGEgbWVzc2FnZSBpcyByZWNlaXZlZC4KKyAg
ICAgICAgICAgICAgICAgICAgICAgTWF5IGJlIE5vbmUuIElmIG5vdCBOb25lLCB0aGUgZnVuY3Rp
b24gaXMgY2FsbGVkIG9uCisgICAgICAgICAgICAgICAgICAgICAgIGFub3RoZXIgdGhyZWFkLiBJ
biB0aGF0IGNhc2UsIE1lc3NhZ2VSZWNlaXZlci5yZWNlaXZlCisgICAgICAgICAgICAgICAgICAg
ICAgIGFuZCBNZXNzYWdlUmVjZWl2ZXIucmVjZWl2ZV9ub3dhaXQgYXJlIHVzZWxlc3MgYmVjYXVz
ZQorICAgICAgICAgICAgICAgICAgICAgICB0aGV5IHdpbGwgbmV2ZXIgcmV0dXJuIGFueSBtZXNz
YWdlcy4KKyAgICAgICAgIiIiCisgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2Vs
ZikKKyAgICAgICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fcXVldWUg
PSBRdWV1ZS5RdWV1ZSgpCisgICAgICAgIHNlbGYuX29ubWVzc2FnZSA9IG9ubWVzc2FnZQorICAg
ICAgICBzZWxmLl9zdG9wX3JlcXVlc3RlZCA9IEZhbHNlCisgICAgICAgIHNlbGYuc2V0RGFlbW9u
KFRydWUpCisgICAgICAgIHNlbGYuc3RhcnQoKQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAg
ICAgd2hpbGUgbm90IHNlbGYuX3N0b3BfcmVxdWVzdGVkOgorICAgICAgICAgICAgbWVzc2FnZSA9
IHJlY2VpdmVfbWVzc2FnZShzZWxmLl9yZXF1ZXN0KQorICAgICAgICAgICAgaWYgc2VsZi5fb25t
ZXNzYWdlOgorICAgICAgICAgICAgICAgIHNlbGYuX29ubWVzc2FnZShtZXNzYWdlKQorICAgICAg
ICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLl9xdWV1ZS5wdXQobWVzc2FnZSkKKwor
ICAgIGRlZiByZWNlaXZlKHNlbGYpOgorICAgICAgICAiIiIgUmVjZWl2ZSBhIG1lc3NhZ2UgZnJv
bSB0aGUgY2hhbm5lbCwgYmxvY2tpbmcuCisKKyAgICAgICAgUmV0dXJuczoKKyAgICAgICAgICAg
IG1lc3NhZ2UgYXMgYSB1bmljb2RlIHN0cmluZy4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVy
biBzZWxmLl9xdWV1ZS5nZXQoKQorCisgICAgZGVmIHJlY2VpdmVfbm93YWl0KHNlbGYpOgorICAg
ICAgICAiIiIgUmVjZWl2ZSBhIG1lc3NhZ2UgZnJvbSB0aGUgY2hhbm5lbCwgbm9uLWJsb2NraW5n
LgorCisgICAgICAgIFJldHVybnM6CisgICAgICAgICAgICBtZXNzYWdlIGFzIGEgdW5pY29kZSBz
dHJpbmcgaWYgYXZhaWxhYmxlLiBOb25lIG90aGVyd2lzZS4KKyAgICAgICAgIiIiCisgICAgICAg
IHRyeToKKyAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLl9xdWV1ZS5nZXRfbm93YWl0KCkKKyAg
ICAgICAgZXhjZXB0IFF1ZXVlLkVtcHR5OgorICAgICAgICAgICAgbWVzc2FnZSA9IE5vbmUKKyAg
ICAgICAgcmV0dXJuIG1lc3NhZ2UKKworICAgIGRlZiBzdG9wKHNlbGYpOgorICAgICAgICAiIiJS
ZXF1ZXN0IHRvIHN0b3AgdGhpcyBpbnN0YW5jZS4KKworICAgICAgICBUaGUgaW5zdGFuY2Ugd2ls
bCBiZSBzdG9wcGVkIGFmdGVyIHJlY2VpdmluZyB0aGUgbmV4dCBtZXNzYWdlLgorICAgICAgICBU
aGlzIG1ldGhvZCBtYXkgbm90IGJlIHZlcnkgdXNlZnVsLCBidXQgdGhlcmUgaXMgbm8gY2xlYW4g
d2F5CisgICAgICAgIGluIFB5dGhvbiB0byBmb3JjZWZ1bGx5IHN0b3AgYSBydW5uaW5nIHRocmVh
ZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3N0b3BfcmVxdWVzdGVkID0gVHJ1ZQorCisK
K2NsYXNzIE1lc3NhZ2VTZW5kZXIodGhyZWFkaW5nLlRocmVhZCk6CisgICAgIiIiVGhpcyBjbGFz
cyBzZW5kcyBtZXNzYWdlcyB0byB0aGUgY2xpZW50LgorCisgICAgVGhpcyBjbGFzcyBwcm92aWRl
cyBib3RoIHN5bmNocm9ub3VzIGFuZCBhc3luY2hyb25vdXMgd2F5cyB0byBzZW5kCisgICAgbWVz
c2FnZXMuCisKKyAgICBOb3RlOiBUaGlzIGNsYXNzIHNob3VsZCBub3QgYmUgdXNlZCB3aXRoIHRo
ZSBzdGFuZGFsb25lIHNlcnZlciBmb3Igd3NzCisgICAgYmVjYXVzZSBweU9wZW5TU0wgdXNlZCBi
eSB0aGUgc2VydmVyIHJhaXNlcyBhIGZhdGFsIGVycm9yIGlmIHRoZSBzb2NrZXQKKyAgICBpcyBh
Y2Nlc3NlZCBmcm9tIG11bHRpcGxlIHRocmVhZHMuCisgICAgIiIiCisgICAgZGVmIF9faW5pdF9f
KHNlbGYsIHJlcXVlc3QpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAg
ICAgICAgQXJnczoKKyAgICAgICAgICAgIHJlcXVlc3Q6IG1vZF9weXRob24gcmVxdWVzdC4KKyAg
ICAgICAgIiIiCisgICAgICAgIHRocmVhZGluZy5UaHJlYWQuX19pbml0X18oc2VsZikKKyAgICAg
ICAgc2VsZi5fcmVxdWVzdCA9IHJlcXVlc3QKKyAgICAgICAgc2VsZi5fcXVldWUgPSBRdWV1ZS5R
dWV1ZSgpCisgICAgICAgIHNlbGYuc2V0RGFlbW9uKFRydWUpCisgICAgICAgIHNlbGYuc3RhcnQo
KQorCisgICAgZGVmIHJ1bihzZWxmKToKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAg
IG1lc3NhZ2UsIGNvbmRpdGlvbiA9IHNlbGYuX3F1ZXVlLmdldCgpCisgICAgICAgICAgICBjb25k
aXRpb24uYWNxdWlyZSgpCisgICAgICAgICAgICBzZW5kX21lc3NhZ2Uoc2VsZi5fcmVxdWVzdCwg
bWVzc2FnZSkKKyAgICAgICAgICAgIGNvbmRpdGlvbi5ub3RpZnkoKQorICAgICAgICAgICAgY29u
ZGl0aW9uLnJlbGVhc2UoKQorCisgICAgZGVmIHNlbmQoc2VsZiwgbWVzc2FnZSk6CisgICAgICAg
ICIiIlNlbmQgYSBtZXNzYWdlLCBibG9ja2luZy4iIiIKKworICAgICAgICBjb25kaXRpb24gPSB0
aHJlYWRpbmcuQ29uZGl0aW9uKCkKKyAgICAgICAgY29uZGl0aW9uLmFjcXVpcmUoKQorICAgICAg
ICBzZWxmLl9xdWV1ZS5wdXQoKG1lc3NhZ2UsIGNvbmRpdGlvbikpCisgICAgICAgIGNvbmRpdGlv
bi53YWl0KCkKKworICAgIGRlZiBzZW5kX25vd2FpdChzZWxmLCBtZXNzYWdlKToKKyAgICAgICAg
IiIiU2VuZCBhIG1lc3NhZ2UsIG5vbi1ibG9ja2luZy4iIiIKKworICAgICAgICBzZWxmLl9xdWV1
ZS5wdXQoKG1lc3NhZ2UsIHRocmVhZGluZy5Db25kaXRpb24oKSkpCisKKworIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3N0YW5kYWxvbmUucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0
L3N0YW5kYWxvbmUucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjQxMTkxMDU2ODY3MzMyZWVlM2VlMGMyMjRlZGNi
ODNjMWFiZmE1NQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvc3RhbmRhbG9uZS5weQpA
QCAtMCwwICsxLDQ1MyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAy
MDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAg
ICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0
aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRy
aWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZl
ZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBl
cm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdI
VCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisj
IEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBU
SEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAor
IyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKworCisiIiJTdGFuZGFsb25lIFdlYiBTb2NrZXQgc2VydmVyLgorCitVc2UgdGhpcyBzZXJ2
ZXIgdG8gcnVuIG1vZF9weXdlYnNvY2tldCB3aXRob3V0IEFwYWNoZSBIVFRQIFNlcnZlci4KKwor
VXNhZ2U6CisgICAgcHl0aG9uIHN0YW5kYWxvbmUucHkgWy1wIDx3c19wb3J0Pl0gWy13IDx3ZWJz
b2NrX2hhbmRsZXJzPl0KKyAgICAgICAgICAgICAgICAgICAgICAgICBbLXMgPHNjYW5fZGlyPl0K
KyAgICAgICAgICAgICAgICAgICAgICAgICBbLWQgPGRvY3VtZW50X3Jvb3Q+XQorICAgICAgICAg
ICAgICAgICAgICAgICAgIFstbSA8d2Vic29ja19oYW5kbGVyc19tYXBfZmlsZT5dCisgICAgICAg
ICAgICAgICAgICAgICAgICAgLi4uIGZvciBvdGhlciBvcHRpb25zLCBzZWUgX21haW4gYmVsb3cg
Li4uCisKKzx3c19wb3J0PiBpcyB0aGUgcG9ydCBudW1iZXIgdG8gdXNlIGZvciB3czovLyBjb25u
ZWN0aW9uLgorCis8ZG9jdW1lbnRfcm9vdD4gaXMgdGhlIHBhdGggdG8gdGhlIHJvb3QgZGlyZWN0
b3J5IG9mIEhUTUwgZmlsZXMuCisKKzx3ZWJzb2NrX2hhbmRsZXJzPiBpcyB0aGUgcGF0aCB0byB0
aGUgcm9vdCBkaXJlY3Rvcnkgb2YgV2ViIFNvY2tldCBoYW5kbGVycy4KK1NlZSBfX2luaXRfXy5w
eSBmb3IgZGV0YWlscyBvZiA8d2Vic29ja19oYW5kbGVycz4gYW5kIGhvdyB0byB3cml0ZSBXZWIg
U29ja2V0CitoYW5kbGVycy4gSWYgdGhpcyBwYXRoIGlzIHJlbGF0aXZlLCA8ZG9jdW1lbnRfcm9v
dD4gaXMgdXNlZCBhcyB0aGUgYmFzZS4KKworPHNjYW5fZGlyPiBpcyBhIHBhdGggdW5kZXIgdGhl
IHJvb3QgZGlyZWN0b3J5LiBJZiBzcGVjaWZpZWQsIG9ubHkgdGhlIGhhbmRsZXJzCit1bmRlciBz
Y2FuX2RpciBhcmUgc2Nhbm5lZC4gVGhpcyBpcyB1c2VmdWwgaW4gc2F2aW5nIHNjYW4gdGltZS4K
KworTm90ZToKK1RoaXMgc2VydmVyIGlzIGRlcml2ZWQgZnJvbSBTb2NrZXRTZXJ2ZXIuVGhyZWFk
aW5nTWl4SW4uIEhlbmNlIGEgdGhyZWFkIGlzCit1c2VkIGZvciBlYWNoIHJlcXVlc3QuCisiIiIK
KworaW1wb3J0IEJhc2VIVFRQU2VydmVyCitpbXBvcnQgQ0dJSFRUUFNlcnZlcgoraW1wb3J0IFNp
bXBsZUhUVFBTZXJ2ZXIKK2ltcG9ydCBTb2NrZXRTZXJ2ZXIKK2ltcG9ydCBsb2dnaW5nCitpbXBv
cnQgbG9nZ2luZy5oYW5kbGVycworaW1wb3J0IG9wdHBhcnNlCitpbXBvcnQgb3MKK2ltcG9ydCBy
ZQoraW1wb3J0IHNvY2tldAoraW1wb3J0IHN5cworCitfSEFTX09QRU5fU1NMID0gRmFsc2UKK3Ry
eToKKyAgICBpbXBvcnQgT3BlblNTTC5TU0wKKyAgICBfSEFTX09QRU5fU1NMID0gVHJ1ZQorZXhj
ZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKworaW1wb3J0IGRpc3BhdGNoCitpbXBvcnQgaGFu
ZHNoYWtlCitpbXBvcnQgbWVtb3JpemluZ2ZpbGUKK2ltcG9ydCB1dGlsCisKKworX0xPR19MRVZF
TFMgPSB7CisgICAgJ2RlYnVnJzogbG9nZ2luZy5ERUJVRywKKyAgICAnaW5mbyc6IGxvZ2dpbmcu
SU5GTywKKyAgICAnd2Fybic6IGxvZ2dpbmcuV0FSTiwKKyAgICAnZXJyb3InOiBsb2dnaW5nLkVS
Uk9SLAorICAgICdjcml0aWNhbCc6IGxvZ2dpbmcuQ1JJVElDQUx9OworCitfREVGQVVMVF9MT0df
TUFYX0JZVEVTID0gMTAyNCAqIDI1NgorX0RFRkFVTFRfTE9HX0JBQ0tVUF9DT1VOVCA9IDUKKwor
X0RFRkFVTFRfUkVRVUVTVF9RVUVVRV9TSVpFID0gMTI4CisKKyMgMTAyNCBpcyBwcmFjdGljYWxs
eSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiBXZWJTb2NrZXQgaGFuZHNoYWtlIGxpbmVzLgorX01B
WF9NRU1PUklaRURfTElORVMgPSAxMDI0CisKK2RlZiBfcHJpbnRfd2FybmluZ3NfaWZfYW55KGRp
c3BhdGNoZXIpOgorICAgIHdhcm5pbmdzID0gZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQor
ICAgIGlmIHdhcm5pbmdzOgorICAgICAgICBmb3Igd2FybmluZyBpbiB3YXJuaW5nczoKKyAgICAg
ICAgICAgIGxvZ2dpbmcud2FybmluZygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3YXJuaW5nKQor
CisKK2NsYXNzIF9TdGFuZGFsb25lQ29ubmVjdGlvbihvYmplY3QpOgorICAgICIiIk1pbWljIG1v
ZF9weXRob24gbXBfY29ubi4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCByZXF1ZXN0X2hh
bmRsZXIpOgorICAgICAgICAiIiJDb25zdHJ1Y3QgYW4gaW5zdGFuY2UuCisKKyAgICAgICAgQXJn
czoKKyAgICAgICAgICAgIHJlcXVlc3RfaGFuZGxlcjogQSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxl
ciBpbnN0YW5jZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuX3JlcXVlc3RfaGFuZGxlciA9
IHJlcXVlc3RfaGFuZGxlcgorCisgICAgZGVmIGdldF9sb2NhbF9hZGRyKHNlbGYpOgorICAgICAg
ICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5sb2NhbF9hZGRyLiIiIgorICAgICAgICByZXR1
cm4gKHNlbGYuX3JlcXVlc3RfaGFuZGxlci5zZXJ2ZXIuc2VydmVyX25hbWUsCisgICAgICAgICAg
ICAgICAgc2VsZi5fcmVxdWVzdF9oYW5kbGVyLnNlcnZlci5zZXJ2ZXJfcG9ydCkKKyAgICBsb2Nh
bF9hZGRyID0gcHJvcGVydHkoZ2V0X2xvY2FsX2FkZHIpCisKKyAgICBkZWYgZ2V0X3JlbW90ZV9h
ZGRyKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgbXBfY29ubi5yZW1vdGVfYWRk
ci4KKworICAgICAgICBTZXR0aW5nIHRoZSBwcm9wZXJ0eSBpbiBfX2luaXRfXyB3b24ndCB3b3Jr
IGJlY2F1c2UgdGhlIHJlcXVlc3QKKyAgICAgICAgaGFuZGxlciBpcyBub3QgaW5pdGlhbGl6ZWQg
eWV0IHRoZXJlLiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fcmVxdWVzdF9oYW5kbGVyLmNsaWVu
dF9hZGRyZXNzCisgICAgcmVtb3RlX2FkZHIgPSBwcm9wZXJ0eShnZXRfcmVtb3RlX2FkZHIpCisK
KyAgICBkZWYgd3JpdGUoc2VsZiwgZGF0YSk6CisgICAgICAgICIiIk1pbWljIG1wX2Nvbm4ud3Jp
dGUoKS4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlcXVlc3RfaGFuZGxlci53ZmlsZS53cml0
ZShkYXRhKQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiTWltaWMg
bXBfY29ubi5yZWFkKCkuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIu
cmZpbGUucmVhZChsZW5ndGgpCisKKyAgICBkZWYgZ2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToK
KyAgICAgICAgIiIiR2V0IG1lbW9yaXplZCBsaW5lcy4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYu
X3JlcXVlc3RfaGFuZGxlci5yZmlsZS5nZXRfbWVtb3JpemVkX2xpbmVzKCkKKworCitjbGFzcyBf
U3RhbmRhbG9uZVJlcXVlc3Qob2JqZWN0KToKKyAgICAiIiJNaW1pYyBtb2RfcHl0aG9uIHJlcXVl
c3QuIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcmVxdWVzdF9oYW5kbGVyLCB1c2VfdGxz
KToKKyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3M6Cisg
ICAgICAgICAgICByZXF1ZXN0X2hhbmRsZXI6IEEgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIgaW5z
dGFuY2UuCisgICAgICAgICIiIgorICAgICAgICBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIgPSByZXF1
ZXN0X2hhbmRsZXIKKyAgICAgICAgc2VsZi5jb25uZWN0aW9uID0gX1N0YW5kYWxvbmVDb25uZWN0
aW9uKHJlcXVlc3RfaGFuZGxlcikKKyAgICAgICAgc2VsZi5fdXNlX3RscyA9IHVzZV90bHMKKwor
ICAgIGRlZiBnZXRfdXJpKHNlbGYpOgorICAgICAgICAiIiJHZXR0ZXIgdG8gbWltaWMgcmVxdWVz
dC51cmkuIiIiCisgICAgICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIucGF0aAorICAg
IHVyaSA9IHByb3BlcnR5KGdldF91cmkpCisKKyAgICBkZWYgZ2V0X2hlYWRlcnNfaW4oc2VsZik6
CisgICAgICAgICIiIkdldHRlciB0byBtaW1pYyByZXF1ZXN0LmhlYWRlcnNfaW4uIiIiCisgICAg
ICAgIHJldHVybiBzZWxmLl9yZXF1ZXN0X2hhbmRsZXIuaGVhZGVycworICAgIGhlYWRlcnNfaW4g
PSBwcm9wZXJ0eShnZXRfaGVhZGVyc19pbikKKworICAgIGRlZiBpc19odHRwcyhzZWxmKToKKyAg
ICAgICAgIiIiTWltaWMgcmVxdWVzdC5pc19odHRwcygpLiIiIgorICAgICAgICByZXR1cm4gc2Vs
Zi5fdXNlX3RscworCisKK2NsYXNzIFdlYlNvY2tldFNlcnZlcihTb2NrZXRTZXJ2ZXIuVGhyZWFk
aW5nTWl4SW4sIEJhc2VIVFRQU2VydmVyLkhUVFBTZXJ2ZXIpOgorICAgICIiIkhUVFBTZXJ2ZXIg
c3BlY2lhbGl6ZWQgZm9yIFdlYiBTb2NrZXQuIiIiCisKKyAgICBTb2NrZXRTZXJ2ZXIuVGhyZWFk
aW5nTWl4SW4uZGFlbW9uX3RocmVhZHMgPSBUcnVlCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
c2VydmVyX2FkZHJlc3MsIFJlcXVlc3RIYW5kbGVyQ2xhc3MpOgorICAgICAgICAiIiJPdmVycmlk
ZSBTb2NrZXRTZXJ2ZXIuQmFzZVNlcnZlci5fX2luaXRfXy4iIiIKKworICAgICAgICBTb2NrZXRT
ZXJ2ZXIuQmFzZVNlcnZlci5fX2luaXRfXygKKyAgICAgICAgICAgICAgICBzZWxmLCBzZXJ2ZXJf
YWRkcmVzcywgUmVxdWVzdEhhbmRsZXJDbGFzcykKKyAgICAgICAgc2VsZi5zb2NrZXQgPSBzZWxm
Ll9jcmVhdGVfc29ja2V0KCkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYmluZCgpCisgICAgICAgIHNl
bGYuc2VydmVyX2FjdGl2YXRlKCkKKworICAgIGRlZiBfY3JlYXRlX3NvY2tldChzZWxmKToKKyAg
ICAgICAgc29ja2V0XyA9IHNvY2tldC5zb2NrZXQoc2VsZi5hZGRyZXNzX2ZhbWlseSwgc2VsZi5z
b2NrZXRfdHlwZSkKKyAgICAgICAgaWYgV2ViU29ja2V0U2VydmVyLm9wdGlvbnMudXNlX3RsczoK
KyAgICAgICAgICAgIGN0eCA9IE9wZW5TU0wuU1NMLkNvbnRleHQoT3BlblNTTC5TU0wuU1NMdjIz
X01FVEhPRCkKKyAgICAgICAgICAgIGN0eC51c2VfcHJpdmF0ZWtleV9maWxlKFdlYlNvY2tldFNl
cnZlci5vcHRpb25zLnByaXZhdGVfa2V5KQorICAgICAgICAgICAgY3R4LnVzZV9jZXJ0aWZpY2F0
ZV9maWxlKFdlYlNvY2tldFNlcnZlci5vcHRpb25zLmNlcnRpZmljYXRlKQorICAgICAgICAgICAg
c29ja2V0XyA9IE9wZW5TU0wuU1NMLkNvbm5lY3Rpb24oY3R4LCBzb2NrZXRfKQorICAgICAgICBy
ZXR1cm4gc29ja2V0XworCisgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCBycXVlc3QsIGNsaWVu
dF9hZGRyZXNzKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgU29ja2V0U2VydmVyLmhhbmRsZV9lcnJv
ci4iIiIKKworICAgICAgICBsb2dnaW5nLmVycm9yKAorICAgICAgICAgICAgKCdFeGNlcHRpb24g
aW4gcHJvY2Vzc2luZyByZXF1ZXN0IGZyb206ICVyJyAlIChjbGllbnRfYWRkcmVzcywpKSArCisg
ICAgICAgICAgICAnXG4nICsgdXRpbC5nZXRfc3RhY2tfdHJhY2UoKSkKKyAgICAgICAgIyBOb3Rl
OiBjbGllbnRfYWRkcmVzcyBpcyBhIHR1cGxlLiBUbyBtYXRjaCBpdCBhZ2FpbnN0ICVyLCB3ZSBu
ZWVkIHRoZQorICAgICAgICAjIHRyYWlsaW5nIGNvbW1hLgorCisKK2NsYXNzIFdlYlNvY2tldFJl
cXVlc3RIYW5kbGVyKENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVyKToKKyAgICAi
IiJDR0lIVFRQUmVxdWVzdEhhbmRsZXIgc3BlY2lhbGl6ZWQgZm9yIFdlYiBTb2NrZXQuIiIiCisK
KyAgICBkZWYgc2V0dXAoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIFNvY2tldFNlcnZlci5T
dHJlYW1SZXF1ZXN0SGFuZGxlci5zZXR1cC4iIiIKKworICAgICAgICBzZWxmLmNvbm5lY3Rpb24g
PSBzZWxmLnJlcXVlc3QKKyAgICAgICAgc2VsZi5yZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9y
aXppbmdGaWxlKAorICAgICAgICAgICAgICAgIHNvY2tldC5fZmlsZW9iamVjdChzZWxmLnJlcXVl
c3QsICdyYicsIHNlbGYucmJ1ZnNpemUpLAorICAgICAgICAgICAgICAgIG1heF9tZW1vcml6ZWRf
bGluZXM9X01BWF9NRU1PUklaRURfTElORVMpCisgICAgICAgIHNlbGYud2ZpbGUgPSBzb2NrZXQu
X2ZpbGVvYmplY3Qoc2VsZi5yZXF1ZXN0LCAnd2InLCBzZWxmLndidWZzaXplKQorCisgICAgZGVm
IF9faW5pdF9fKHNlbGYsICphcmdzLCAqKmtleXdvcmRzKToKKyAgICAgICAgc2VsZi5fcmVxdWVz
dCA9IF9TdGFuZGFsb25lUmVxdWVzdCgKKyAgICAgICAgICAgICAgICBzZWxmLCBXZWJTb2NrZXRS
ZXF1ZXN0SGFuZGxlci5vcHRpb25zLnVzZV90bHMpCisgICAgICAgIHNlbGYuX2Rpc3BhdGNoZXIg
PSBXZWJTb2NrZXRSZXF1ZXN0SGFuZGxlci5vcHRpb25zLmRpc3BhdGNoZXIKKyAgICAgICAgc2Vs
Zi5fcHJpbnRfd2FybmluZ3NfaWZfYW55KCkKKyAgICAgICAgc2VsZi5faGFuZHNoYWtlciA9IGhh
bmRzaGFrZS5IYW5kc2hha2VyKAorICAgICAgICAgICAgICAgIHNlbGYuX3JlcXVlc3QsIHNlbGYu
X2Rpc3BhdGNoZXIsCisgICAgICAgICAgICAgICAgV2ViU29ja2V0UmVxdWVzdEhhbmRsZXIub3B0
aW9ucy5zdHJpY3QpCisgICAgICAgIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJlcXVlc3RIYW5kbGVy
Ll9faW5pdF9fKAorICAgICAgICAgICAgICAgIHNlbGYsICphcmdzLCAqKmtleXdvcmRzKQorCisg
ICAgZGVmIF9wcmludF93YXJuaW5nc19pZl9hbnkoc2VsZik6CisgICAgICAgIHdhcm5pbmdzID0g
c2VsZi5fZGlzcGF0Y2hlci5zb3VyY2Vfd2FybmluZ3MoKQorICAgICAgICBpZiB3YXJuaW5nczoK
KyAgICAgICAgICAgIGZvciB3YXJuaW5nIGluIHdhcm5pbmdzOgorICAgICAgICAgICAgICAgIGxv
Z2dpbmcud2FybmluZygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSB3YXJuaW5nKQorCisgICAgZGVm
IHBhcnNlX3JlcXVlc3Qoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIEJhc2VIVFRQU2VydmVy
LkJhc2VIVFRQUmVxdWVzdEhhbmRsZXIucGFyc2VfcmVxdWVzdC4KKworICAgICAgICBSZXR1cm4g
VHJ1ZSB0byBjb250aW51ZSBwcm9jZXNzaW5nIGZvciBIVFRQKFMpLCBGYWxzZSBvdGhlcndpc2Uu
CisgICAgICAgICIiIgorICAgICAgICByZXN1bHQgPSBDR0lIVFRQU2VydmVyLkNHSUhUVFBSZXF1
ZXN0SGFuZGxlci5wYXJzZV9yZXF1ZXN0KHNlbGYpCisgICAgICAgIGlmIHJlc3VsdDoKKyAgICAg
ICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl9oYW5kc2hha2VyLmRvX2hhbmRzaGFr
ZSgpCisgICAgICAgICAgICAgICAgc2VsZi5fZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHNlbGYu
X3JlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICBleGNl
cHQgaGFuZHNoYWtlLkhhbmRzaGFrZUVycm9yLCBlOgorICAgICAgICAgICAgICAgICMgSGFuZHNo
YWtlIGZvciB3cyhzKSBmYWlsZWQuIEFzc3VtZSBodHRwKHMpLgorICAgICAgICAgICAgICAgIGxv
Z2dpbmcuaW5mbygnbW9kX3B5d2Vic29ja2V0OiAlcycgJSBlKQorICAgICAgICAgICAgICAgIHJl
dHVybiBUcnVlCisgICAgICAgICAgICBleGNlcHQgZGlzcGF0Y2guRGlzcGF0Y2hFcnJvciwgZToK
KyAgICAgICAgICAgICAgICBsb2dnaW5nLndhcm5pbmcoJ21vZF9weXdlYnNvY2tldDogJXMnICUg
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNl
cHRpb24sIGU6CisgICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdtb2RfcHl3ZWJzb2Nr
ZXQ6ICVzJyAlIGUpCisgICAgICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdtb2RfcHl3ZWJzb2Nr
ZXQ6ICVzJyAlIHV0aWwuZ2V0X3N0YWNrX3RyYWNlKCkpCisgICAgICAgICAgICAgICAgcmV0dXJu
IEZhbHNlCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBsb2dfcmVxdWVzdChzZWxm
LCBjb2RlPSctJywgc2l6ZT0nLScpOgorICAgICAgICAiIiJPdmVycmlkZSBCYXNlSFRUUFNlcnZl
ci5sb2dfcmVxdWVzdC4iIiIKKworICAgICAgICBsb2dnaW5nLmluZm8oJyIlcyIgJXMgJXMnLAor
ICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXF1ZXN0bGluZSwgc3RyKGNvZGUpLCBzdHIoc2l6
ZSkpCisKKyAgICBkZWYgbG9nX2Vycm9yKHNlbGYsICphcmdzKToKKyAgICAgICAgIiIiT3ZlcnJp
ZGUgQmFzZUhUVFBTZXJ2ZXIubG9nX2Vycm9yLiIiIgorCisgICAgICAgICMgRGVzcGl0ZSB0aGUg
bmFtZSwgdGhpcyBtZXRob2QgaXMgZm9yIHdhcm5pbmdzIHRoYW4gZm9yIGVycm9ycy4KKyAgICAg
ICAgIyBGb3IgZXhhbXBsZSwgSFRUUCBzdGF0dXMgY29kZSBpcyBsb2dnZWQgYnkgdGhpcyBtZXRo
b2QuCisgICAgICAgIGxvZ2dpbmcud2FybignJXMgLSAlcycgJSAoc2VsZi5hZGRyZXNzX3N0cmlu
ZygpLCAoYXJnc1swXSAlIGFyZ3NbMTpdKSkpCisKKyAgICBkZWYgaXNfY2dpKHNlbGYpOgorICAg
ICAgICAiIiJUZXN0IHdoZXRoZXIgc2VsZi5wYXRoIGNvcnJlc3BvbmRzIHRvIGEgQ0dJIHNjcmlw
dC4KKworICAgICAgICBBZGQgZXh0cmEgY2hlY2sgdGhhdCBzZWxmLnBhdGggZG9lc24ndCBjb250
YWlucyAuLgorICAgICAgICBBbHNvIGNoZWNrIGlmIHRoZSBmaWxlIGlzIGEgZXhlY3V0YWJsZSBm
aWxlIG9yIG5vdC4KKyAgICAgICAgSWYgdGhlIGZpbGUgaXMgbm90IGV4ZWN1dGFibGUsIGl0IGlz
IGhhbmRsZWQgYXMgc3RhdGljIGZpbGUgb3IgZGlyCisgICAgICAgIHJhdGhlciB0aGFuIGEgQ0dJ
IHNjcmlwdC4KKyAgICAgICAgIiIiCisgICAgICAgIGlmIENHSUhUVFBTZXJ2ZXIuQ0dJSFRUUFJl
cXVlc3RIYW5kbGVyLmlzX2NnaShzZWxmKToKKyAgICAgICAgICAgIGlmICcuLicgaW4gc2VsZi5w
YXRoOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgIyBzdHJpcCBx
dWVyeSBwYXJhbWV0ZXIgZnJvbSByZXF1ZXN0IHBhdGgKKyAgICAgICAgICAgIHJlc291cmNlX25h
bWUgPSBzZWxmLnBhdGguc3BsaXQoJz8nLCAyKVswXQorICAgICAgICAgICAgIyBjb252ZXJ0IHJl
c291cmNlX25hbWUgaW50byByZWFsIHBhdGggbmFtZSBpbiBmaWxlc3lzdGVtLgorICAgICAgICAg
ICAgc2NyaXB0ZmlsZSA9IHNlbGYudHJhbnNsYXRlX3BhdGgocmVzb3VyY2VfbmFtZSkKKyAgICAg
ICAgICAgIGlmIG5vdCBvcy5wYXRoLmlzZmlsZShzY3JpcHRmaWxlKToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gRmFsc2UKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4ZWN1dGFibGUoc2Ny
aXB0ZmlsZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1
cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKworCitkZWYgX2NvbmZpZ3VyZV9sb2dnaW5n
KG9wdGlvbnMpOgorICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICBsb2dnZXIu
c2V0TGV2ZWwoX0xPR19MRVZFTFNbb3B0aW9ucy5sb2dfbGV2ZWxdKQorICAgIGlmIG9wdGlvbnMu
bG9nX2ZpbGU6CisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmls
ZUhhbmRsZXIoCisgICAgICAgICAgICAgICAgb3B0aW9ucy5sb2dfZmlsZSwgJ2EnLCBvcHRpb25z
LmxvZ19tYXgsIG9wdGlvbnMubG9nX2NvdW50KQorICAgIGVsc2U6CisgICAgICAgIGhhbmRsZXIg
PSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoKQorICAgIGZvcm1hdHRlciA9IGxvZ2dpbmcuRm9ybWF0
dGVyKAorICAgICAgICAgICAgIlslKGFzY3RpbWUpc10gWyUobGV2ZWxuYW1lKXNdICUobmFtZSlz
OiAlKG1lc3NhZ2UpcyIpCisgICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIoZm9ybWF0dGVyKQorICAg
IGxvZ2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisKK2RlZiBfYWxpYXNfaGFuZGxlcnMoZGlzcGF0
Y2hlciwgd2Vic29ja19oYW5kbGVyc19tYXBfZmlsZSk6CisgICAgIiIiU2V0IGFsaWFzZXMgc3Bl
Y2lmaWVkIGluIHdlYnNvY2tfaGFuZGxlcl9tYXBfZmlsZSBpbiBkaXNwYXRjaGVyLgorCisgICAg
QXJnczoKKyAgICAgICAgZGlzcGF0Y2hlcjogZGlzcGF0Y2guRGlzcGF0Y2hlciBpbnN0YW5jZQor
ICAgICAgICB3ZWJzb2NrX2hhbmRsZXJfbWFwX2ZpbGU6IGFsaWFzIG1hcCBmaWxlCisgICAgIiIi
CisgICAgZnAgPSBvcGVuKHdlYnNvY2tfaGFuZGxlcnNfbWFwX2ZpbGUpCisgICAgdHJ5OgorICAg
ICAgICBmb3IgbGluZSBpbiBmcDoKKyAgICAgICAgICAgIGlmIGxpbmVbMF0gPT0gJyMnIG9yIGxp
bmUuaXNzcGFjZSgpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBtID0g
cmUubWF0Y2goJyhcUyspXHMrKFxTKyknLCBsaW5lKQorICAgICAgICAgICAgaWYgbm90IG06Cisg
ICAgICAgICAgICAgICAgbG9nZ2luZy53YXJuaW5nKCdXcm9uZyBmb3JtYXQgaW4gbWFwIGZpbGU6
JyArIGxpbmUpCisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHRyeToKKyAg
ICAgICAgICAgICAgICBkaXNwYXRjaGVyLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzKAorICAgICAg
ICAgICAgICAgICAgICBtLmdyb3VwKDEpLCBtLmdyb3VwKDIpKQorICAgICAgICAgICAgZXhjZXB0
IGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsIGU6CisgICAgICAgICAgICAgICAgbG9nZ2luZy5lcnJv
cihzdHIoZSkpCisgICAgZmluYWxseToKKyAgICAgICAgZnAuY2xvc2UoKQorCisKKworZGVmIF9t
YWluKCk6CisgICAgcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFyc2VyKCkKKyAgICBwYXJzZXIu
YWRkX29wdGlvbignLUgnLCAnLS1zZXJ2ZXItaG9zdCcsICctLXNlcnZlcl9ob3N0JywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZXN0PSdzZXJ2ZXJfaG9zdCcsCisgICAgICAgICAgICAgICAgICAg
ICAgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdzZXJ2ZXIgaG9zdG5h
bWUgdG8gbGlzdGVuIHRvJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXAnLCAnLS1wb3J0Jywg
ZGVzdD0ncG9ydCcsIHR5cGU9J2ludCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1o
YW5kc2hha2UuX0RFRkFVTFRfV0VCX1NPQ0tFVF9QT1JULAorICAgICAgICAgICAgICAgICAgICAg
IGhlbHA9J3BvcnQgdG8gbGlzdGVuIHRvJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLXcnLCAn
LS13ZWJzb2NrLWhhbmRsZXJzJywgJy0td2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAg
ICAgICAgICAgZGVzdD0nd2Vic29ja19oYW5kbGVycycsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD0nLicsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0nV2ViIFNvY2tldCBoYW5k
bGVycyByb290IGRpcmVjdG9yeS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbScsICctLXdl
YnNvY2staGFuZGxlcnMtbWFwLWZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgICctLXdlYnNv
Y2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dlYnNv
Y2tfaGFuZGxlcnNfbWFwX2ZpbGUnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9Tm9u
ZSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSgnV2ViIFNvY2tldCBoYW5kbGVycyBtYXAg
ZmlsZS4gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdFYWNoIGxpbmUgY29uc2lzdHMg
b2YgYWxpYXNfcmVzb3VyY2VfcGF0aCBhbmQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdleGlzdGluZ19yZXNvdXJjZV9wYXRoLCBzZXBhcmF0ZWQgYnkgc3BhY2VzLicpKQorICAgIHBh
cnNlci5hZGRfb3B0aW9uKCctcycsICctLXNjYW4tZGlyJywgJy0tc2Nhbl9kaXInLCBkZXN0PSdz
Y2FuX2RpcicsCisgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICAg
ICAgICAgICAgICAgIGhlbHA9KCdXZWIgU29ja2V0IGhhbmRsZXJzIHNjYW4gZGlyZWN0b3J5LiAn
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ011c3QgYmUgYSBkaXJlY3RvcnkgdW5kZXIg
d2Vic29ja19oYW5kbGVycy4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLWQnLCAnLS1kb2N1
bWVudC1yb290JywgJy0tZG9jdW1lbnRfcm9vdCcsCisgICAgICAgICAgICAgICAgICAgICAgZGVz
dD0nZG9jdW1lbnRfcm9vdCcsIGRlZmF1bHQ9Jy4nLAorICAgICAgICAgICAgICAgICAgICAgIGhl
bHA9J0RvY3VtZW50IHJvb3QgZGlyZWN0b3J5LicpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy14
JywgJy0tY2dpLXBhdGhzJywgJy0tY2dpX3BhdGhzJywgZGVzdD0nY2dpX3BhdGhzJywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgaGVs
cD0oJ0NHSSBwYXRocyByZWxhdGl2ZSB0byBkb2N1bWVudF9yb290LicKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAnQ29tbWEtc2VwYXJhdGVkLiAoZS5nIC14IC9jZ2ksL2h0YmluKSAnCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZpbGVzIHVuZGVyIGRvY3VtZW50X3Jvb3QvY2dp
X3BhdGggYXJlIGhhbmRsZWQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhcyBDR0kg
cHJvZ3JhbXMuIE11c3QgYmUgZXhlY3V0YWJsZS4nKSkKKyAgICBwYXJzZXIuYWRkX29wdGlvbign
LXQnLCAnLS10bHMnLCBkZXN0PSd1c2VfdGxzJywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAg
ICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCBoZWxwPSd1c2UgVExTICh3c3M6Ly8pJykK
KyAgICBwYXJzZXIuYWRkX29wdGlvbignLWsnLCAnLS1wcml2YXRlLWtleScsICctLXByaXZhdGVf
a2V5JywKKyAgICAgICAgICAgICAgICAgICAgICBkZXN0PSdwcml2YXRlX2tleScsCisgICAgICAg
ICAgICAgICAgICAgICAgZGVmYXVsdD0nJywgaGVscD0nVExTIHByaXZhdGUga2V5IGZpbGUuJykK
KyAgICBwYXJzZXIuYWRkX29wdGlvbignLWMnLCAnLS1jZXJ0aWZpY2F0ZScsIGRlc3Q9J2NlcnRp
ZmljYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PScnLCBoZWxwPSdUTFMgY2Vy
dGlmaWNhdGUgZmlsZS4nKQorICAgIHBhcnNlci5hZGRfb3B0aW9uKCctbCcsICctLWxvZy1maWxl
JywgJy0tbG9nX2ZpbGUnLCBkZXN0PSdsb2dfZmlsZScsCisgICAgICAgICAgICAgICAgICAgICAg
ZGVmYXVsdD0nJywgaGVscD0nTG9nIGZpbGUuJykKKyAgICBwYXJzZXIuYWRkX29wdGlvbignLS1s
b2ctbGV2ZWwnLCAnLS1sb2dfbGV2ZWwnLCB0eXBlPSdjaG9pY2UnLAorICAgICAgICAgICAgICAg
ICAgICAgIGRlc3Q9J2xvZ19sZXZlbCcsIGRlZmF1bHQ9J3dhcm4nLAorICAgICAgICAgICAgICAg
ICAgICAgIGNob2ljZXM9WydkZWJ1ZycsICdpbmZvJywgJ3dhcm4nLCAnZXJyb3InLCAnY3JpdGlj
YWwnXSwKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbGV2ZWwuJykKKyAgICBwYXJz
ZXIuYWRkX29wdGlvbignLS1sb2ctbWF4JywgJy0tbG9nX21heCcsIGRlc3Q9J2xvZ19tYXgnLCB0
eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFVTFRfTE9HX01B
WF9CWVRFUywKKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdMb2cgbWF4aW11bSBieXRlcycp
CisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tbG9nLWNvdW50JywgJy0tbG9nX2NvdW50JywgZGVz
dD0nbG9nX2NvdW50JywKKyAgICAgICAgICAgICAgICAgICAgICB0eXBlPSdpbnQnLCBkZWZhdWx0
PV9ERUZBVUxUX0xPR19CQUNLVVBfQ09VTlQsCisgICAgICAgICAgICAgICAgICAgICAgaGVscD0n
TG9nIGJhY2t1cCBjb3VudCcpCisgICAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc3RyaWN0JywgZGVz
dD0nc3RyaWN0JywgYWN0aW9uPSdzdG9yZV90cnVlJywKKyAgICAgICAgICAgICAgICAgICAgICBk
ZWZhdWx0PUZhbHNlLCBoZWxwPSdTdHJpY3RseSBjaGVjayBoYW5kc2hha2UgcmVxdWVzdCcpCisg
ICAgcGFyc2VyLmFkZF9vcHRpb24oJy1xJywgJy0tcXVldWUnLCBkZXN0PSdyZXF1ZXN0X3F1ZXVl
X3NpemUnLCB0eXBlPSdpbnQnLAorICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9X0RFRkFV
TFRfUkVRVUVTVF9RVUVVRV9TSVpFLAorICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3JlcXVl
c3QgcXVldWUgc2l6ZScpCisgICAgb3B0aW9ucyA9IHBhcnNlci5wYXJzZV9hcmdzKClbMF0KKwor
ICAgIG9zLmNoZGlyKG9wdGlvbnMuZG9jdW1lbnRfcm9vdCkKKworICAgIF9jb25maWd1cmVfbG9n
Z2luZyhvcHRpb25zKQorCisgICAgU29ja2V0U2VydmVyLlRDUFNlcnZlci5yZXF1ZXN0X3F1ZXVl
X3NpemUgPSBvcHRpb25zLnJlcXVlc3RfcXVldWVfc2l6ZQorICAgIENHSUhUVFBTZXJ2ZXIuQ0dJ
SFRUUFJlcXVlc3RIYW5kbGVyLmNnaV9kaXJlY3RvcmllcyA9IFtdCisKKyAgICBpZiBvcHRpb25z
LmNnaV9wYXRoczoKKyAgICAgICAgQ0dJSFRUUFNlcnZlci5DR0lIVFRQUmVxdWVzdEhhbmRsZXIu
Y2dpX2RpcmVjdG9yaWVzID0gXAorICAgICAgICAgICAgb3B0aW9ucy5jZ2lfcGF0aHMuc3BsaXQo
JywnKQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gaW4gKCdjeWd3aW4nLCAnd2luMzInKToKKyAg
ICAgICAgICAgIGN5Z3dpbl9wYXRoID0gTm9uZQorICAgICAgICAgICAgIyBGb3IgV2luMzIgUHl0
aG9uLCBpdCBpcyBleHBlY3RlZCB0aGF0IENZR1dJTl9QQVRICisgICAgICAgICAgICAjIGlzIHNl
dCB0byBhIGRpcmVjdG9yeSBvZiBjeWd3aW4gYmluYXJpZXMuCisgICAgICAgICAgICAjIEZvciBl
eGFtcGxlLCB3ZWJzb2NrZXRfc2VydmVyLnB5IGluIENocm9taXVtIHNldHMgQ1lHV0lOX1BBVEgg
dG8KKyAgICAgICAgICAgICMgZnVsbCBwYXRoIG9mIHRoaXJkX3BhcnR5L2N5Z3dpbi9iaW4uCisg
ICAgICAgICAgICBpZiAnQ1lHV0lOX1BBVEgnIGluIG9zLmVudmlyb246CisgICAgICAgICAgICAg
ICAgY3lnd2luX3BhdGggPSBvcy5lbnZpcm9uWydDWUdXSU5fUEFUSCddCisgICAgICAgICAgICB1
dGlsLndyYXBfcG9wZW4zX2Zvcl93aW4oY3lnd2luX3BhdGgpCisgICAgICAgICAgICBkZWYgX19j
aGVja19zY3JpcHQoc2NyaXB0cGF0aCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHV0aWwuZ2V0
X3NjcmlwdF9pbnRlcnAoc2NyaXB0cGF0aCwgY3lnd2luX3BhdGgpCisgICAgICAgICAgICBDR0lI
VFRQU2VydmVyLmV4ZWN1dGFibGUgPSBfX2NoZWNrX3NjcmlwdAorCisgICAgaWYgb3B0aW9ucy51
c2VfdGxzOgorICAgICAgICBpZiBub3QgX0hBU19PUEVOX1NTTDoKKyAgICAgICAgICAgIGxvZ2dp
bmcuY3JpdGljYWwoJ1RvIHVzZSBUTFMsIGluc3RhbGwgcHlPcGVuU1NMLicpCisgICAgICAgICAg
ICBzeXMuZXhpdCgxKQorICAgICAgICBpZiBub3Qgb3B0aW9ucy5wcml2YXRlX2tleSBvciBub3Qg
b3B0aW9ucy5jZXJ0aWZpY2F0ZToKKyAgICAgICAgICAgIGxvZ2dpbmcuY3JpdGljYWwoCisgICAg
ICAgICAgICAgICAgICAgICdUbyB1c2UgVExTLCBzcGVjaWZ5IHByaXZhdGVfa2V5IGFuZCBjZXJ0
aWZpY2F0ZS4nKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgIGlmIG5vdCBvcHRpb25z
LnNjYW5fZGlyOgorICAgICAgICBvcHRpb25zLnNjYW5fZGlyID0gb3B0aW9ucy53ZWJzb2NrX2hh
bmRsZXJzCisKKyAgICB0cnk6CisgICAgICAgICMgU2hhcmUgYSBEaXNwYXRjaGVyIGFtb25nIHJl
cXVlc3QgaGFuZGxlcnMgdG8gc2F2ZSB0aW1lIGZvcgorICAgICAgICAjIGluc3RhbnRpYXRpb24u
ICBEaXNwYXRjaGVyIGNhbiBiZSBzaGFyZWQgYmVjYXVzZSBpdCBpcyB0aHJlYWQtc2FmZS4KKyAg
ICAgICAgb3B0aW9ucy5kaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihvcHRpb25zLndl
YnNvY2tfaGFuZGxlcnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9ucy5zY2FuX2RpcikKKyAgICAgICAgaWYgb3B0aW9ucy53ZWJzb2NrX2hh
bmRsZXJzX21hcF9maWxlOgorICAgICAgICAgICAgX2FsaWFzX2hhbmRsZXJzKG9wdGlvbnMuZGlz
cGF0Y2hlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zLndlYnNvY2tfaGFu
ZGxlcnNfbWFwX2ZpbGUpCisgICAgICAgIF9wcmludF93YXJuaW5nc19pZl9hbnkob3B0aW9ucy5k
aXNwYXRjaGVyKQorCisgICAgICAgIFdlYlNvY2tldFJlcXVlc3RIYW5kbGVyLm9wdGlvbnMgPSBv
cHRpb25zCisgICAgICAgIFdlYlNvY2tldFNlcnZlci5vcHRpb25zID0gb3B0aW9ucworCisgICAg
ICAgIHNlcnZlciA9IFdlYlNvY2tldFNlcnZlcigob3B0aW9ucy5zZXJ2ZXJfaG9zdCwgb3B0aW9u
cy5wb3J0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYlNvY2tldFJlcXVl
c3RIYW5kbGVyKQorICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCisgICAgZXhjZXB0IEV4
Y2VwdGlvbiwgZToKKyAgICAgICAgbG9nZ2luZy5jcml0aWNhbChzdHIoZSkpCisgICAgICAgIHN5
cy5leGl0KDEpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBfbWFpbigpCisK
KworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5d2Vic29ja2V0L3V0aWwucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvbW9kX3B5
d2Vic29ja2V0L3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGVjOWRjYTBhYjQ1OWE0NDBiMGVjMmE5ODA1
MGVkNDk3MzA0M2M1OQotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9tb2RfcHl3ZWJzb2NrZXQvdXRpbC5weQpAQCAt
MCwwICsxLDEyMSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIwor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisj
IGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBu
b3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhv
dXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisj
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwK
KyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIiIiV2ViIFNvY2tldHMgdXRpbGl0
aWVzLgorIiIiCisKKworaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1w
b3J0IHRyYWNlYmFjaworCisKK2RlZiBnZXRfc3RhY2tfdHJhY2UoKToKKyAgICAiIiJHZXQgdGhl
IGN1cnJlbnQgc3RhY2sgdHJhY2UgYXMgc3RyaW5nLgorCisgICAgVGhpcyBpcyBuZWVkZWQgdG8g
c3VwcG9ydCBQeXRob24gMi4zLgorICAgIFRPRE86IFJlbW92ZSB0aGlzIHdoZW4gd2Ugb25seSBz
dXBwb3J0IFB5dGhvbiAyLjQgYW5kIGFib3ZlLgorICAgICAgICAgIFVzZSB0cmFjZWJhY2suZm9y
bWF0X2V4YyBpbnN0ZWFkLgorICAgICIiIgorCisgICAgb3V0ID0gU3RyaW5nSU8uU3RyaW5nSU8o
KQorICAgIHRyYWNlYmFjay5wcmludF9leGMoZmlsZT1vdXQpCisgICAgcmV0dXJuIG91dC5nZXR2
YWx1ZSgpCisKKworZGVmIHByZXBlbmRfbWVzc2FnZV90b19leGNlcHRpb24obWVzc2FnZSwgZXhj
KToKKyAgICAiIiJQcmVwZW5kIG1lc3NhZ2UgdG8gdGhlIGV4Y2VwdGlvbi4iIiIKKworICAgIGV4
Yy5hcmdzID0gKG1lc3NhZ2UgKyBzdHIoZXhjKSwpCisgICAgcmV0dXJuCisKKworZGVmIF9fdHJh
bnNsYXRlX2ludGVycChpbnRlcnAsIGN5Z3dpbl9wYXRoKToKKyAgICAiIiJUcmFuc2xhdGUgaW50
ZXJwIHByb2dyYW0gcGF0aCBmb3IgV2luMzIgcHl0aG9uIHRvIHJ1biBjeWd3aW4gcHJvZ3JhbQor
ICAgIChlLmcuIHBlcmwpLiAgTm90ZSB0aGF0IGl0IGRvZXNuJ3Qgc3VwcG9ydCBwYXRoIHRoYXQg
Y29udGFpbnMgc3BhY2UsCisgICAgd2hpY2ggaXMgdHlwaWNhbGx5IHRydWUgZm9yIFVuaXgsIHdo
ZXJlICMhLXNjcmlwdCBpcyB3cml0dGVuLgorICAgIEZvciBXaW4zMiBweXRob24sIGN5Z3dpbl9w
YXRoIGlzIGEgZGlyZWN0b3J5IG9mIGN5Z3dpbiBiaW5hcmllcy4KKworICAgIEFyZ3M6CisgICAg
ICBpbnRlcnA6IGludGVycCBjb21tYW5kIGxpbmUKKyAgICAgIGN5Z3dpbl9wYXRoOiBkaXJlY3Rv
cnkgbmFtZSBvZiBjeWd3aW4gYmluYXJ5LCBvciBOb25lCisgICAgUmV0dXJuczoKKyAgICAgIHRy
YW5zbGF0ZWQgaW50ZXJwIGNvbW1hbmQgbGluZS4KKyAgICAiIiIKKyAgICBpZiBub3QgY3lnd2lu
X3BhdGg6CisgICAgICAgIHJldHVybiBpbnRlcnAKKyAgICBtID0gcmUubWF0Y2goIl5bXiBdKi8o
W14gXSspKCAuKik/IiwgaW50ZXJwKQorICAgIGlmIG06CisgICAgICAgIGNtZCA9IG9zLnBhdGgu
am9pbihjeWd3aW5fcGF0aCwgbS5ncm91cCgxKSkKKyAgICAgICAgcmV0dXJuIGNtZCArIG0uZ3Jv
dXAoMikKKyAgICByZXR1cm4gaW50ZXJwCisKKworZGVmIGdldF9zY3JpcHRfaW50ZXJwKHNjcmlw
dF9wYXRoLCBjeWd3aW5fcGF0aD1Ob25lKToKKyAgICAiIiJHZXRzICMhLWludGVycHJldGVyIGNv
bW1hbmQgbGluZSBmcm9tIHRoZSBzY3JpcHQuCisKKyAgICBJdCBhbHNvIGZpeGVzIGNvbW1hbmQg
cGF0aC4gIFdoZW4gQ3lnd2luIFB5dGhvbiBpcyB1c2VkLCBlLmcuIGluIFdlYktpdCwKKyAgICBp
dCBjb3VsZCBydW4gIi91c3IvYmluL3BlcmwgLXdUIGhlbGxvLnBsIi4KKyAgICBXaGVuIFdpbjMy
IFB5dGhvbiBpcyB1c2VkLCBlLmcuIGluIENocm9taXVtLCBpdCBjb3VsZG4ndC4gIFNvLCBmaXgK
KyAgICAiL3Vzci9iaW4vcGVybCIgdG8gIjxjeWd3aW5fcGF0aD5ccGVybC5leGUiLgorCisgICAg
QXJnczoKKyAgICAgIHNjcmlwdF9wYXRoOiBwYXRobmFtZSBvZiB0aGUgc2NyaXB0CisgICAgICBj
eWd3aW5fcGF0aDogZGlyZWN0b3J5IG5hbWUgb2YgY3lnd2luIGJpbmFyeSwgb3IgTm9uZQorICAg
IFJldHVybnM6CisgICAgICAjIS1pbnRlcnByZXRlciBjb21tYW5kIGxpbmUsIG9yIE5vbmUgaWYg
aXQgaXMgbm90ICMhLXNjcmlwdC4KKyAgICAiIiIKKyAgICBmcCA9IG9wZW4oc2NyaXB0X3BhdGgp
CisgICAgbGluZSA9IGZwLnJlYWRsaW5lKCkKKyAgICBmcC5jbG9zZSgpCisgICAgbSA9IHJlLm1h
dGNoKCJeIyEoLiopIiwgbGluZSkKKyAgICBpZiBtOgorICAgICAgICByZXR1cm4gX190cmFuc2xh
dGVfaW50ZXJwKG0uZ3JvdXAoMSksIGN5Z3dpbl9wYXRoKQorICAgIHJldHVybiBOb25lCisKK2Rl
ZiB3cmFwX3BvcGVuM19mb3Jfd2luKGN5Z3dpbl9wYXRoKToKKyAgICAiIiJXcmFwIHBvcGVuMyB0
byBzdXBwb3J0ICMhLXNjcmlwdCBvbiBXaW5kb3dzLgorCisgICAgQXJnczoKKyAgICAgIGN5Z3dp
bl9wYXRoOiAgcGF0aCBmb3IgY3lnd2luIGJpbmFyeSBpZiBjb21tYW5kIHBhdGggaXMgbmVlZGVk
IHRvIGJlCisgICAgICAgICAgICAgICAgICAgIHRyYW5zbGF0ZWQuICBOb25lIGlmIG5vIHRyYW5z
bGF0aW9uIHJlcXVpcmVkLgorICAgICIiIgorICAgIF9fb3JpZ19wb3BlbjMgPSBvcy5wb3BlbjMK
KyAgICBkZWYgX193cmFwX3BvcGVuMyhjbWQsIG1vZGU9J3QnLCBidWZzaXplPS0xKToKKyAgICAg
ICAgY21kbGluZSA9IGNtZC5zcGxpdCgnICcpCisgICAgICAgIGludGVycCA9IGdldF9zY3JpcHRf
aW50ZXJwKGNtZGxpbmVbMF0sIGN5Z3dpbl9wYXRoKQorICAgICAgICBpZiBpbnRlcnA6CisgICAg
ICAgICAgICBjbWQgPSBpbnRlcnAgKyAiICIgKyBjbWQKKyAgICAgICAgcmV0dXJuIF9fb3JpZ19w
b3BlbjMoY21kLCBtb2RlLCBidWZzaXplKQorICAgIG9zLnBvcGVuMyA9IF9fd3JhcF9wb3BlbjMK
KworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9zZXR1cC5weSBiL1dlYktpdFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC9zZXR1cC5weQpuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5hMzRhODNiMjcyZTY4NGI0ZjYwNjQwYmYzZGZjNDk0ZjI3NTdlNDg1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0
L3NldHVwLnB5CkBAIC0wLDAgKzEsNjMgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIworIyBD
b3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKworIiIiU2V0IHVwIHNjcmlwdCBmb3IgbW9kX3B5d2Vic29ja2V0Lgor
IiIiCisKKworZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKK2ltcG9ydCBzeXMKKwor
CitfUEFDS0FHRV9OQU1FID0gJ21vZF9weXdlYnNvY2tldCcKKworaWYgc3lzLnZlcnNpb24gPCAn
Mi4zJzoKKyAgICBwcmludCA+PnN5cy5zdGRlcnIsICclcyByZXF1aXJlcyBQeXRob24gMi4zIG9y
IGxhdGVyLicgJSBfUEFDS0FHRV9OQU1FCisgICAgc3lzLmV4aXQoMSkKKworc2V0dXAoYXV0aG9y
PSdZdXpvIEZ1amlzaGltYScsCisgICAgICBhdXRob3JfZW1haWw9J3l1em9AY2hyb21pdW0ub3Jn
JywKKyAgICAgIGRlc2NyaXB0aW9uPSdXZWIgU29ja2V0IGV4dGVuc2lvbiBmb3IgQXBhY2hlIEhU
VFAgU2VydmVyLicsCisgICAgICBsb25nX2Rlc2NyaXB0aW9uPSgKKyAgICAgICAgICAgICAgJ21v
ZF9weXdlYnNvY2tldCBpcyBhbiBBcGFjaGUgSFRUUCBTZXJ2ZXIgZXh0ZW5zaW9uIGZvciAnCisg
ICAgICAgICAgICAgICdXZWIgU29ja2V0IChodHRwOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC8nCisg
ICAgICAgICAgICAgICdkcmFmdC1oaXhpZS10aGV3ZWJzb2NrZXRwcm90b2NvbCkuICcKKyAgICAg
ICAgICAgICAgJ1NlZSBtb2RfcHl3ZWJzb2NrZXQvX19pbml0X18ucHkgZm9yIG1vcmUgZGV0YWls
LicpLAorICAgICAgbGljZW5zZT0nU2VlIENPUFlJTkcnLAorICAgICAgbmFtZT1fUEFDS0FHRV9O
QU1FLAorICAgICAgcGFja2FnZXM9W19QQUNLQUdFX05BTUVdLAorICAgICAgdXJsPSdodHRwOi8v
Y29kZS5nb29nbGUuY29tL3AvcHl3ZWJzb2NrZXQvJywKKyAgICAgIHZlcnNpb249JzAuNC45LjIn
LAorICAgICAgKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvY29uZmlnLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rl
c3QvY29uZmlnLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjVhYWFiOGMwNGNlZGU1NjhmYzZkZTVkYmFiYWIzYWEz
NTJkNmM5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC9jb25maWcucHkKQEAgLTAsMCArMSw0NSBAQAor
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworIiIiQ29uZmlndXJhdGlvbiBmb3IgdGVzdGluZy4KKworVGVz
dCBmaWxlcyBzaG91bGQgaW1wb3J0IHRoaXMgbW9kdWxlIGJlZm9yZSBtb2RfcHl3ZWJzb2NrZXQu
CisiIiIKKworCitpbXBvcnQgb3MKK2ltcG9ydCBzeXMKKworCisjIEFkZCB0aGUgcGFyZW50IGRp
cmVjdG9yeSB0byBzeXMucGF0aCB0byBlbmFibGUgaW1wb3J0aW5nIG1vZF9weXdlYnNvY2tldC4K
K3N5cy5wYXRoICs9IFtvcy5wYXRoLmpvaW4ob3MucGF0aC5zcGxpdChfX2ZpbGVfXylbMF0sICcu
LicpXQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvbW9jay5weSBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L21vY2su
cHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uM2I4NWQ2NDQzOTgzZTZiMjc3YWI5MTQwY2VkYjU2MjA2ZmQ5NTdhOAot
LS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC90ZXN0L21vY2sucHkKQEAgLTAsMCArMSwyMDUgQEAKKyMgQ29weXJpZ2h0
IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5l
aXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29u
dHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJp
dmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4g
cGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJ
R0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IK
KyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
CisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorCisKKyIiIk1vY2tzIGZvciB0ZXN0aW5nLgorIiIiCisKKworaW1wb3J0IFF1ZXVlCitp
bXBvcnQgdGhyZWFkaW5nCisKKworY2xhc3MgX01vY2tDb25uQmFzZShvYmplY3QpOgorICAgICIi
IkJhc2UgY2xhc3Mgb2YgbW9ja3MgZm9yIG1vZF9weXRob24uYXBhY2hlLm1wX2Nvbm4uCisKKyAg
ICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGEgKG1vY2sp
IG1wX2Nvbm4uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNl
bGYuX3dyaXRlX2RhdGEgPSBbXQorCisgICAgZGVmIHdyaXRlKHNlbGYsIGRhdGEpOgorICAgICAg
ICAiIiJPdmVycmlkZSBtb2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLndyaXRlLiIiIgorCisgICAg
ICAgIHNlbGYuX3dyaXRlX2RhdGEuYXBwZW5kKGRhdGEpCisKKyAgICBkZWYgd3JpdHRlbl9kYXRh
KHNlbGYpOgorICAgICAgICAiIiJHZXQgYnl0ZXMgd3JpdHRlbiB0byB0aGlzIG1vY2suIiIiCisK
KyAgICAgICAgcmV0dXJuICcnLmpvaW4oc2VsZi5fd3JpdGVfZGF0YSkKKworCitjbGFzcyBNb2Nr
Q29ubihfTW9ja0Nvbm5CYXNlKToKKyAgICAiIiJNb2NrIGZvciBtb2RfcHl0aG9uLmFwYWNoZS5t
cF9jb25uLgorCisgICAgVGhpcyBlbmFibGVzIHRlc3RzIHRvIHNwZWNpZnkgd2hhdCBzaG91bGQg
YmUgcmVhZCBmcm9tIGEgKG1vY2spIG1wX2Nvbm4gYXMKKyAgICB3ZWxsIGFzIHRvIGNoZWNrIHdo
YXQgaXMgd3JpdHRlbiB0byBpdC4KKyAgICAiIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBy
ZWFkX2RhdGEpOgorICAgICAgICAiIiJDb25zdHJ1Y3RzIGFuIGluc3RhbmNlLgorCisgICAgICAg
IEFyZ3M6CisgICAgICAgICAgICByZWFkX2RhdGE6IGJ5dGVzIHRoYXQgc2hvdWxkIGJlIHJldHVy
bmVkIHdoZW4gcmVhZCogbWV0aG9kcyBhcmUKKyAgICAgICAgICAgIGNhbGxlZC4KKyAgICAgICAg
IiIiCisKKyAgICAgICAgX01vY2tDb25uQmFzZS5fX2luaXRfXyhzZWxmKQorICAgICAgICBzZWxm
Ll9yZWFkX2RhdGEgPSByZWFkX2RhdGEKKyAgICAgICAgc2VsZi5fcmVhZF9wb3MgPSAwCisKKyAg
ICBkZWYgcmVhZGxpbmUoc2VsZik6CisgICAgICAgICIiIk92ZXJyaWRlIG1vZF9weXRob24uYXBh
Y2hlLm1wX2Nvbm4ucmVhZGxpbmUuIiIiCisKKyAgICAgICAgaWYgc2VsZi5fcmVhZF9wb3MgPj0g
bGVuKHNlbGYuX3JlYWRfZGF0YSk6CisgICAgICAgICAgICByZXR1cm4gJycKKyAgICAgICAgZW5k
X2luZGV4ID0gc2VsZi5fcmVhZF9kYXRhLmZpbmQoJ1xuJywgc2VsZi5fcmVhZF9wb3MpICsgMQor
ICAgICAgICBpZiBub3QgZW5kX2luZGV4OgorICAgICAgICAgICAgZW5kX2luZGV4ID0gbGVuKHNl
bGYuX3JlYWRfZGF0YSkKKyAgICAgICAgcmV0dXJuIHNlbGYuX3JlYWRfdXBfdG8oZW5kX2luZGV4
KQorCisgICAgZGVmIHJlYWQoc2VsZiwgbGVuZ3RoKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgbW9k
X3B5dGhvbi5hcGFjaGUubXBfY29ubi5yZWFkLiIiIgorCisgICAgICAgIGlmIHNlbGYuX3JlYWRf
cG9zID49IGxlbihzZWxmLl9yZWFkX2RhdGEpOgorICAgICAgICAgICAgcmV0dXJuICcnCisgICAg
ICAgIGVuZF9pbmRleCA9IG1pbihsZW4oc2VsZi5fcmVhZF9kYXRhKSwgc2VsZi5fcmVhZF9wb3Mg
KyBsZW5ndGgpCisgICAgICAgIHJldHVybiBzZWxmLl9yZWFkX3VwX3RvKGVuZF9pbmRleCkKKwor
ICAgIGRlZiBfcmVhZF91cF90byhzZWxmLCBlbmRfaW5kZXgpOgorICAgICAgICBsaW5lID0gc2Vs
Zi5fcmVhZF9kYXRhW3NlbGYuX3JlYWRfcG9zOmVuZF9pbmRleF0KKyAgICAgICAgc2VsZi5fcmVh
ZF9wb3MgPSBlbmRfaW5kZXgKKyAgICAgICAgcmV0dXJuIGxpbmUKKworCitjbGFzcyBNb2NrQmxv
Y2tpbmdDb25uKF9Nb2NrQ29ubkJhc2UpOgorICAgICIiIkJsb2NraW5nIG1vY2sgZm9yIG1vZF9w
eXRob24uYXBhY2hlLm1wX2Nvbm4uCisKKyAgICBUaGlzIGVuYWJsZXMgdGVzdHMgdG8gc3BlY2lm
eSB3aGF0IHNob3VsZCBiZSByZWFkIGZyb20gYSAobW9jaykgbXBfY29ubiBhcworICAgIHdlbGwg
YXMgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIGl0LgorICAgIENhbGxlcnMgb2YgcmVhZCog
bWV0aG9kcyB3aWxsIGJsb2NrIGlmIHRoZXJlIGlzIG5vIGJ5dGVzIGF2YWlsYWJsZS4KKyAgICAi
IiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgX01vY2tDb25uQmFzZS5fX2lu
aXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9xdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKKworICAgIGRl
ZiByZWFkbGluZShzZWxmKToKKyAgICAgICAgIiIiT3ZlcnJpZGUgbW9kX3B5dGhvbi5hcGFjaGUu
bXBfY29ubi5yZWFkbGluZS4iIiIKKyAgICAgICAgbGluZSA9ICcnCisgICAgICAgIHdoaWxlIFRy
dWU6CisgICAgICAgICAgICBjID0gc2VsZi5fcXVldWUuZ2V0KCkKKyAgICAgICAgICAgIGxpbmUg
Kz0gYworICAgICAgICAgICAgaWYgYyA9PSAnXG4nOgorICAgICAgICAgICAgICAgIHJldHVybiBs
aW5lCisKKyAgICBkZWYgcmVhZChzZWxmLCBsZW5ndGgpOgorICAgICAgICAiIiJPdmVycmlkZSBt
b2RfcHl0aG9uLmFwYWNoZS5tcF9jb25uLnJlYWQuIiIiCisKKyAgICAgICAgZGF0YSA9ICcnCisg
ICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobGVuZ3RoKToKKyAgICAgICAgICAgIGRhdGEgKz0g
c2VsZi5fcXVldWUuZ2V0KCkKKyAgICAgICAgcmV0dXJuIGRhdGEKKworICAgIGRlZiBwdXRfYnl0
ZXMoc2VsZiwgYnl0ZXMpOgorICAgICAgICAiIiJQdXQgYnl0ZXMgdG8gYmUgcmVhZCBmcm9tIHRo
aXMgbW9jay4KKworICAgICAgICBBcmdzOgorICAgICAgICAgICAgYnl0ZXM6IGJ5dGVzIHRvIGJl
IHJlYWQuCisgICAgICAgICIiIgorCisgICAgICAgIGZvciBieXRlIGluIGJ5dGVzOgorICAgICAg
ICAgICAgc2VsZi5fcXVldWUucHV0KGJ5dGUpCisKKworY2xhc3MgTW9ja1RhYmxlKGRpY3QpOgor
ICAgICIiIk1vY2sgdGFibGUuCisKKyAgICBUaGlzIG1pbWljcyBtb2RfcHl0aG9uIG1wX3RhYmxl
LiBOb3RlIHRoYXQgb25seSB0aGUgbWV0aG9kcyB1c2VkIGJ5CisgICAgdGVzdHMgYXJlIG92ZXJy
aWRkZW4uCisgICAgIiIiCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY29weV9mcm9tPXt9KToK
KyAgICAgICAgaWYgaXNpbnN0YW5jZShjb3B5X2Zyb20sIGRpY3QpOgorICAgICAgICAgICAgY29w
eV9mcm9tID0gY29weV9mcm9tLml0ZW1zKCkKKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29w
eV9mcm9tOgorICAgICAgICAgICAgc2VsZi5fX3NldGl0ZW1fXyhrZXksIHZhbHVlKQorCisgICAg
ZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFi
bGUsIHNlbGYpLl9fZ2V0aXRlbV9fKGtleS5sb3dlcigpKQorCisgICAgZGVmIF9fc2V0aXRlbV9f
KHNlbGYsIGtleSwgdmFsdWUpOgorICAgICAgICBzdXBlcihNb2NrVGFibGUsIHNlbGYpLl9fc2V0
aXRlbV9fKGtleS5sb3dlcigpLCB2YWx1ZSkKKworICAgIGRlZiBnZXQoc2VsZiwga2V5LCBkZWZf
dmFsdWU9Tm9uZSk6CisgICAgICAgIHJldHVybiBzdXBlcihNb2NrVGFibGUsIHNlbGYpLmdldChr
ZXkubG93ZXIoKSwgZGVmX3ZhbHVlKQorCisKK2NsYXNzIE1vY2tSZXF1ZXN0KG9iamVjdCk6Cisg
ICAgIiIiTW9jayByZXF1ZXN0LgorCisgICAgVGhpcyBtaW1pY3MgbW9kX3B5dGhvbiByZXF1ZXN0
LgorICAgICIiIgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHVyaT1Ob25lLCBoZWFkZXJzX2lu
PXt9LCBjb25uZWN0aW9uPU5vbmUsCisgICAgICAgICAgICAgICAgIGlzX2h0dHBzPUZhbHNlKToK
KyAgICAgICAgIiIiQ29uc3RydWN0IGFuIGluc3RhbmNlLgorCisgICAgICAgIEFyZ3VtZW50czoK
KyAgICAgICAgICAgIHVyaTogVVJJIG9mIHRoZSByZXF1ZXN0LgorICAgICAgICAgICAgaGVhZGVy
c19pbjogUmVxdWVzdCBoZWFkZXJzLgorICAgICAgICAgICAgY29ubmVjdGlvbjogQ29ubmVjdGlv
biB1c2VkIGZvciB0aGUgcmVxdWVzdC4KKyAgICAgICAgICAgIGlzX2h0dHBzOiBXaGV0aGVyIHRo
aXMgcmVxdWVzdCBpcyBvdmVyIFNTTC4KKworICAgICAgICBTZWUgdGhlIGRvY3VtZW50IG9mIG1v
ZF9weXRob24gUmVxdWVzdCBmb3IgZGV0YWlscy4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYu
dXJpID0gdXJpCisgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IGNvbm5lY3Rpb24KKyAgICAgICAg
c2VsZi5oZWFkZXJzX2luID0gTW9ja1RhYmxlKGhlYWRlcnNfaW4pCisgICAgICAgICMgc2VsZi5p
c19odHRwc18gbmVlZHMgdG8gYmUgYWNjZXNzaWJsZSBmcm9tIHRlc3RzLiAgVG8gYXZvaWQgbmFt
ZQorICAgICAgICAjIGNvbmZsaWN0IHdpdGggc2VsZi5pc19odHRwcygpLCBpdCBpcyBuYW1lZCBh
cyBzdWNoLgorICAgICAgICBzZWxmLmlzX2h0dHBzXyA9IGlzX2h0dHBzCisKKyAgICBkZWYgaXNf
aHR0cHMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB3aGV0aGVyIHRoaXMgcmVxdWVzdCBpcyBv
dmVyIFNTTC4iIiIKKyAgICAgICAgcmV0dXJuIHNlbGYuaXNfaHR0cHNfCisKKworY2xhc3MgTW9j
a0Rpc3BhdGNoZXIob2JqZWN0KToKKyAgICAiIiJNb2NrIGZvciBkaXNwYXRjaC5EaXNwYXRjaGVy
LiIiIgorCisgICAgZGVmIGRvX2V4dHJhX2hhbmRzaGFrZShzZWxmLCBjb25uX2NvbnRleHQpOgor
ICAgICAgICBwYXNzCisKKyAgICBkZWYgdHJhbnNmZXJfZGF0YShzZWxmLCBjb25uX2NvbnRleHQp
OgorICAgICAgICBwYXNzCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJL
aXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC9ydW5f
YWxsLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L3Rlc3QvcnVuX2FsbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zODg1NjE4Y2EzMTU4ZThjMGNkZjkwOWUx
YjZlMGVlZmQ4NTVhM2I4Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93
ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvcnVuX2FsbC5weQpAQCAtMCwwICsx
LDY0IEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2ds
ZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHly
aWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5h
bWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1h
eSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMg
dGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4K
KyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMg
QU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNV
TEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklH
SFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKKyIi
IlJ1biBhbGwgdGVzdHMgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LgorIiIiCisKKworaW1wb3J0IG9z
CitpbXBvcnQgcmUKK2ltcG9ydCB1bml0dGVzdAorCisKK19URVNUX01PRFVMRV9QQVRURVJOID0g
cmUuY29tcGlsZShyJ14odGVzdF8uKylcLnB5JCcpCisKKworZGVmIF9saXN0X3Rlc3RfbW9kdWxl
cyhkaXJlY3RvcnkpOgorICAgIG1vZHVsZV9uYW1lcyA9IFtdCisgICAgZm9yIGZpbGVuYW1lIGlu
IG9zLmxpc3RkaXIoZGlyZWN0b3J5KToKKyAgICAgICAgbWF0Y2ggPSBfVEVTVF9NT0RVTEVfUEFU
VEVSTi5zZWFyY2goZmlsZW5hbWUpCisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgbW9k
dWxlX25hbWVzLmFwcGVuZChtYXRjaC5ncm91cCgxKSkKKyAgICByZXR1cm4gbW9kdWxlX25hbWVz
CisKKworZGVmIF9zdWl0ZSgpOgorICAgIGxvYWRlciA9IHVuaXR0ZXN0LlRlc3RMb2FkZXIoKQor
ICAgIHJldHVybiBsb2FkZXIubG9hZFRlc3RzRnJvbU5hbWVzKAorICAgICAgICAgICAgX2xpc3Rf
dGVzdF9tb2R1bGVzKG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KF9fZmlsZV9fKVswXSwgJy4n
KSkpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKGRl
ZmF1bHRUZXN0PSdfc3VpdGUnKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdF9kaXNwYXRjaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0
eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfZGlzcGF0Y2gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTQwMzIyOGRm
NTMxNDVjOWY3YzljNjI2YzExNDRmYWE0MGM0YTI1MgotLS0gL2Rldi9udWxsCisrKyBiL1dlYktp
dFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3Rf
ZGlzcGF0Y2gucHkKQEAgLTAsMCArMSwyNDQgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhvbgorIwor
IyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMK
KyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4K
KyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9m
IGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJp
b3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJ
TUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBM
SU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisKKworIiIiVGVzdHMgZm9yIGRpc3BhdGNoIG1vZHVsZS4iIiIKKwor
CisKK2ltcG9ydCBvcworaW1wb3J0IHVuaXR0ZXN0CisKK2ltcG9ydCBjb25maWcgICMgVGhpcyBt
dXN0IGJlIGltcG9ydGVkIGJlZm9yZSBtb2RfcHl3ZWJzb2NrZXQuCitmcm9tIG1vZF9weXdlYnNv
Y2tldCBpbXBvcnQgZGlzcGF0Y2gKKworaW1wb3J0IG1vY2sKKworCitfVEVTVF9IQU5ETEVSU19E
SVIgPSBvcy5wYXRoLmpvaW4oCisgICAgICAgIG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBdLCAn
dGVzdGRhdGEnLCAnaGFuZGxlcnMnKQorCitfVEVTVF9IQU5ETEVSU19TVUJfRElSID0gb3MucGF0
aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicpCisKK2NsYXNzIERpc3BhdGNoZXJUZXN0
KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9ub3JtYWxpemVfcGF0aChzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5wYXRoLmFic3BhdGgoJy9hL2InKS5yZXBsYWNl
KCdcXCcsICcvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6
ZV9wYXRoKCcvYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRo
KCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGRp
c3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnXFxhXFxiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwob3MucGF0aC5hYnNwYXRoKCcvYS9iJykucmVwbGFjZSgnXFwnLCAnLycpLAorICAgICAgICAg
ICAgICAgICAgICAgICAgIGRpc3BhdGNoLl9ub3JtYWxpemVfcGF0aCgnL2EvYy8uLi9iJykpCisg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5hYnNwYXRoKCdhYmMnKS5yZXBsYWNlKCdc
XCcsICcvJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZGlzcGF0Y2guX25vcm1hbGl6ZV9w
YXRoKCdhYmMnKSkKKworICAgIGRlZiB0ZXN0X2NvbnZlcnRlcihzZWxmKToKKyAgICAgICAgY29u
dmVydGVyID0gZGlzcGF0Y2guX3BhdGhfdG9fcmVzb3VyY2VfY29udmVydGVyKCcvYS9iJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0ZXIoJy9hL2IvaF93c2gucHknKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2MvaCcsIGNvbnZlcnRlcignL2EvYi9jL2hfd3No
LnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgY29udmVydGVyKCcvYS9iL2gu
cHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCBjb252ZXJ0ZXIoJ2EvYi9oX3dz
aC5weScpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9wYXRoX3RvX3Jlc291cmNl
X2NvbnZlcnRlcignYS9iJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnL2gnLCBjb252ZXJ0
ZXIoJ2EvYi9oX3dzaC5weScpKQorCisgICAgICAgIGNvbnZlcnRlciA9IGRpc3BhdGNoLl9wYXRo
X3RvX3Jlc291cmNlX2NvbnZlcnRlcignL2EvYi8vLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJy9oJywgY29udmVydGVyKCcvYS9iL2hfd3NoLnB5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJy9oJywgY29udmVydGVyKCcvYS9iLy4uL2IvaF93c2gucHknKSkKKworICAgICAgICBj
b252ZXJ0ZXIgPSBkaXNwYXRjaC5fcGF0aF90b19yZXNvdXJjZV9jb252ZXJ0ZXIoJy9hLy4uL2Ev
Yi8uLi9iLycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywgY29udmVydGVyKCcvYS9i
L2hfd3NoLnB5JykpCisKKyAgICAgICAgY29udmVydGVyID0gZGlzcGF0Y2guX3BhdGhfdG9fcmVz
b3VyY2VfY29udmVydGVyKHInXGFcYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9oJywg
Y29udmVydGVyKHInXGFcYlxoX3dzaC5weScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcv
aCcsIGNvbnZlcnRlcihyJy9hL2IvaF93c2gucHknKSkKKworICAgIGRlZiB0ZXN0X3NvdXJjZV9m
aWxlX3BhdGhzKHNlbGYpOgorICAgICAgICBwYXRocyA9IGxpc3QoZGlzcGF0Y2guX3NvdXJjZV9m
aWxlX3BhdGhzKF9URVNUX0hBTkRMRVJTX0RJUikpCisgICAgICAgIHBhdGhzLnNvcnQoKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKDcsIGxlbihwYXRocykpCisgICAgICAgIGV4cGVjdGVkX3Bh
dGhzID0gWworICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIs
ICdibGFua193c2gucHknKSwKKyAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfSEFO
RExFUlNfRElSLCAnb3JpZ2luX2NoZWNrX3dzaC5weScpLAorICAgICAgICAgICAgICAgIG9zLnBh
dGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAnZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weScpLAorICAgICAgICAgICAgICAg
IG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLCAnbm9uX2NhbGxhYmxlX3dz
aC5weScpLAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIs
ICdzdWInLCAncGxhaW5fd3NoLnB5JyksCisgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKF9U
RVNUX0hBTkRMRVJTX0RJUiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd3
cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weScpLAorICAgICAgICAgICAgICAgIG9zLnBhdGguam9p
bihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAnd3JvbmdfdHJhbnNmZXJfc2lnX3dzaC5weScpLAorICAgICAgICAgICAgICAgIF0KKyAgICAg
ICAgZm9yIGV4cGVjdGVkLCBhY3R1YWwgaW4gemlwKGV4cGVjdGVkX3BhdGhzLCBwYXRocyk6Cisg
ICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkLCBhY3R1YWwpCisKKyAgICBkZWYg
dGVzdF9zb3VyY2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKGRpc3BhdGNoLkRp
c3BhdGNoRXJyb3IsIGRpc3BhdGNoLl9zb3VyY2UsICcnKQorICAgICAgICBzZWxmLmFzc2VydFJh
aXNlcyhkaXNwYXRjaC5EaXNwYXRjaEVycm9yLCBkaXNwYXRjaC5fc291cmNlLCAnZGVmJykKKyAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZGlzcGF0Y2guRGlzcGF0Y2hFcnJvciwgZGlzcGF0Y2gu
X3NvdXJjZSwgJzEvMCcpCisgICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwYXRjaC5fc291cmNl
KAorICAgICAgICAgICAgICAgICdkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVx
dWVzdCk6cGFzc1xuJworICAgICAgICAgICAgICAgICdkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOnBhc3NcbicpKQorCisgICAgZGVmIHRlc3Rfc291cmNlX3dhcm5pbmdzKHNl
bGYpOgorICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5E
TEVSU19ESVIsIE5vbmUpCisgICAgICAgIHdhcm5pbmdzID0gZGlzcGF0Y2hlci5zb3VyY2Vfd2Fy
bmluZ3MoKQorICAgICAgICB3YXJuaW5ncy5zb3J0KCkKKyAgICAgICAgZXhwZWN0ZWRfd2Fybmlu
Z3MgPSBbCisgICAgICAgICAgICAgICAgKG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIs
ICdibGFua193c2gucHknKSArCisgICAgICAgICAgICAgICAgICc6IHdlYl9zb2NrZXRfZG9fZXh0
cmFfaGFuZHNoYWtlIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICAgICAgICAgIChvcy5wYXRo
LmpvaW4oX1RFU1RfSEFORExFUlNfRElSLCAnc3ViJywKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdub25fY2FsbGFibGVfd3NoLnB5JykgKworICAgICAgICAgICAgICAgICAnOiB3ZWJf
c29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgY2FsbGFibGUuJyksCisgICAgICAgICAg
ICAgICAgKG9zLnBhdGguam9pbihfVEVTVF9IQU5ETEVSU19ESVIsICdzdWInLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgJ3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5JykgKworICAg
ICAgICAgICAgICAgICAnOiB3ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZSBpcyBub3QgZGVm
aW5lZC4nKSwKKyAgICAgICAgICAgICAgICAob3MucGF0aC5qb2luKF9URVNUX0hBTkRMRVJTX0RJ
UiwgJ3N1YicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnd3JvbmdfdHJhbnNmZXJf
c2lnX3dzaC5weScpICsKKyAgICAgICAgICAgICAgICAgJzogd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhIGlzIG5vdCBkZWZpbmVkLicpLAorICAgICAgICAgICAgICAgIF0KKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoNCwgbGVuKHdhcm5pbmdzKSkKKyAgICAgICAgZm9yIGV4cGVjdGVkLCBhY3R1
YWwgaW4gemlwKGV4cGVjdGVkX3dhcm5pbmdzLCB3YXJuaW5ncyk6CisgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3RfZG9fZXh0cmFf
aGFuZHNoYWtlKHNlbGYpOgorICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0Y2guRGlzcGF0Y2hl
cihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tS
ZXF1ZXN0KCkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvb3JpZ2luX2NoZWNrJwor
ICAgICAgICByZXF1ZXN0LndzX29yaWdpbiA9ICdodHRwOi8vZXhhbXBsZS5jb20nCisgICAgICAg
IGRpc3BhdGNoZXIuZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpICAjIE11c3Qgbm90IHJhaXNl
IGV4Y2VwdGlvbi4KKworICAgICAgICByZXF1ZXN0LndzX29yaWdpbiA9ICdodHRwOi8vYmFkLmV4
YW1wbGUuY29tJworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhFeGNlcHRpb24sIGRpc3BhdGNo
ZXIuZG9fZXh0cmFfaGFuZHNoYWtlLCByZXF1ZXN0KQorCisgICAgZGVmIHRlc3RfdHJhbnNmZXJf
ZGF0YShzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RF
U1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICByZXF1ZXN0ID0gbW9jay5Nb2NrUmVxdWVz
dChjb25uZWN0aW9uPW1vY2suTW9ja0Nvbm4oJycpKQorICAgICAgICByZXF1ZXN0LndzX3Jlc291
cmNlID0gJy9vcmlnaW5fY2hlY2snCisgICAgICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDEn
CisKKyAgICAgICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ29yaWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAvb3JpZ2lu
X2NoZWNrLCBwMScsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9u
LndyaXR0ZW5fZGF0YSgpKQorCisgICAgICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNv
bm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2Ug
PSAnL3N1Yi9wbGFpbicKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAg
ICAgZGlzcGF0Y2hlci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwoJ3N1Yi9wbGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluLCBOb25lJywK
KyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdHRlbl9kYXRh
KCkpCisKKyAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1tb2Nr
Lk1vY2tDb25uKCcnKSkKKyAgICAgICAgcmVxdWVzdC53c19yZXNvdXJjZSA9ICcvc3ViL3BsYWlu
PycKKyAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9IE5vbmUKKyAgICAgICAgZGlzcGF0Y2hl
ci50cmFuc2Zlcl9kYXRhKHJlcXVlc3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3N1Yi9w
bGFpbl93c2gucHkgaXMgY2FsbGVkIGZvciAvc3ViL3BsYWluPywgTm9uZScsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0ZW5fZGF0YSgpKQorCisgICAg
ICAgIHJlcXVlc3QgPSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubign
JykpCisgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9wbGFpbj9xPXYnCisgICAg
ICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSBOb25lCisgICAgICAgIGRpc3BhdGNoZXIudHJhbnNm
ZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzdWIvcGxhaW5fd3No
LnB5IGlzIGNhbGxlZCBmb3IgL3N1Yi9wbGFpbj9xPXYsIE5vbmUnLAorICAgICAgICAgICAgICAg
ICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0
ZXN0X3RyYW5zZmVyX2RhdGFfbm9faGFuZGxlcihzZWxmKToKKyAgICAgICAgZGlzcGF0Y2hlciA9
IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RFU1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBm
b3IgcmVzb3VyY2UgaW4gWycvYmxhbmsnLCAnL3N1Yi9ub25fY2FsbGFibGUnLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICcvc3ViL25vX3dzaF9hdF90aGVfZW5kJywgJy9kb2VzL25vdC9leGlz
dCddOgorICAgICAgICAgICAgcmVxdWVzdCA9IG1vY2suTW9ja1JlcXVlc3QoY29ubmVjdGlvbj1t
b2NrLk1vY2tDb25uKCcnKSkKKyAgICAgICAgICAgIHJlcXVlc3Qud3NfcmVzb3VyY2UgPSByZXNv
dXJjZQorICAgICAgICAgICAgcmVxdWVzdC53c19wcm90b2NvbCA9ICdwMicKKyAgICAgICAgICAg
IHRyeToKKyAgICAgICAgICAgICAgICBkaXNwYXRjaGVyLnRyYW5zZmVyX2RhdGEocmVxdWVzdCkK
KyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoKQorICAgICAgICAgICAgZXhjZXB0IGRpc3BhdGNo
LkRpc3BhdGNoRXJyb3IsIGU6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHN0cihl
KS5maW5kKCdObyBoYW5kbGVyJykgIT0gLTEpCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9u
OgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgpCisKKyAgICBkZWYgdGVzdF90cmFuc2Zlcl9k
YXRhX2hhbmRsZXJfZXhjZXB0aW9uKHNlbGYpOgorICAgICAgICBkaXNwYXRjaGVyID0gZGlzcGF0
Y2guRGlzcGF0Y2hlcihfVEVTVF9IQU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIHJlcXVlc3Qg
PSBtb2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubignJykpCisgICAgICAg
IHJlcXVlc3Qud3NfcmVzb3VyY2UgPSAnL3N1Yi9leGNlcHRpb25faW5fdHJhbnNmZXInCisgICAg
ICAgIHJlcXVlc3Qud3NfcHJvdG9jb2wgPSAncDMnCisgICAgICAgIHRyeToKKyAgICAgICAgICAg
IGRpc3BhdGNoZXIudHJhbnNmZXJfZGF0YShyZXF1ZXN0KQorICAgICAgICAgICAgc2VsZi5mYWls
KCkKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKyAgICAgICAgICAgIHNlbGYuZmFpbFVu
bGVzcyhzdHIoZSkuZmluZCgnSW50ZW50aW9uYWwnKSAhPSAtMSkKKworICAgIGRlZiB0ZXN0X3Nj
YW5fZGlyKHNlbGYpOgorICAgICAgICBkaXNwID0gZGlzcGF0Y2guRGlzcGF0Y2hlcihfVEVTVF9I
QU5ETEVSU19ESVIsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMywgbGVuKGRpc3Au
X2hhbmRsZXJzKSkKKyAgICAgICAgc2VsZi5mYWlsVW5sZXNzKGRpc3AuX2hhbmRsZXJzLmhhc19r
ZXkoJy9vcmlnaW5fY2hlY2snKSkKKyAgICAgICAgc2VsZi5mYWlsVW5sZXNzKGRpc3AuX2hhbmRs
ZXJzLmhhc19rZXkoJy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyJykpCisgICAgICAgIHNlbGYu
ZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvc3ViL3BsYWluJykpCisKKyAgICBk
ZWYgdGVzdF9zY2FuX3N1Yl9kaXIoc2VsZik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNw
YXRjaGVyKF9URVNUX0hBTkRMRVJTX0RJUiwgX1RFU1RfSEFORExFUlNfU1VCX0RJUikKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBsZW4oZGlzcC5faGFuZGxlcnMpKQorICAgICAgICBzZWxm
LmZhaWxJZihkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvb3JpZ2luX2NoZWNrJykpCisgICAgICAg
IHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvc3ViL2V4Y2VwdGlvbl9p
bl90cmFuc2ZlcicpKQorICAgICAgICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFz
X2tleSgnL3N1Yi9wbGFpbicpKQorCisgICAgZGVmIHRlc3Rfc2Nhbl9zdWJfZGlyX2FzX3Jvb3Qo
c2VsZik6CisgICAgICAgIGRpc3AgPSBkaXNwYXRjaC5EaXNwYXRjaGVyKF9URVNUX0hBTkRMRVJT
X1NVQl9ESVIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9URVNUX0hBTkRM
RVJTX1NVQl9ESVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiwgbGVuKGRpc3AuX2hhbmRs
ZXJzKSkKKyAgICAgICAgc2VsZi5mYWlsSWYoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL29yaWdp
bl9jaGVjaycpKQorICAgICAgICBzZWxmLmZhaWxJZihkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcv
c3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicpKQorICAgICAgICBzZWxmLmZhaWxJZihkaXNwLl9o
YW5kbGVycy5oYXNfa2V5KCcvc3ViL3BsYWluJykpCisgICAgICAgIHNlbGYuZmFpbFVubGVzcyhk
aXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvZXhjZXB0aW9uX2luX3RyYW5zZmVyJykpCisgICAgICAg
IHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVycy5oYXNfa2V5KCcvcGxhaW4nKSkKKworICAg
IGRlZiB0ZXN0X3NjYW5fZGlyX211c3RfdW5kZXJfcm9vdChzZWxmKToKKyAgICAgICAgZGlzcGF0
Y2guRGlzcGF0Y2hlcignYS9iJywgJ2EvYi9jJykgICMgT0sKKyAgICAgICAgZGlzcGF0Y2guRGlz
cGF0Y2hlcignYS9iLy8vJywgJ2EvYicpICAjIE9LCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2Vz
KGRpc3BhdGNoLkRpc3BhdGNoRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc3Bh
dGNoLkRpc3BhdGNoZXIsICdhL2IvYycsICdhL2InKQorCisgICAgZGVmIHRlc3RfcmVzb3VyY2Vf
cGF0aF9hbGlhcyhzZWxmKToKKyAgICAgICAgZGlzcCA9IGRpc3BhdGNoLkRpc3BhdGNoZXIoX1RF
U1RfSEFORExFUlNfRElSLCBOb25lKQorICAgICAgICBkaXNwLmFkZF9yZXNvdXJjZV9wYXRoX2Fs
aWFzKCcvJywgJy9vcmlnaW5fY2hlY2snKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDQsIGxl
bihkaXNwLl9oYW5kbGVycykpCisgICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNwLl9oYW5kbGVy
cy5oYXNfa2V5KCcvb3JpZ2luX2NoZWNrJykpCisgICAgICAgIHNlbGYuZmFpbFVubGVzcyhkaXNw
Ll9oYW5kbGVycy5oYXNfa2V5KCcvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2ZlcicpKQorICAgICAg
ICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnL3N1Yi9wbGFpbicpKQor
ICAgICAgICBzZWxmLmZhaWxVbmxlc3MoZGlzcC5faGFuZGxlcnMuaGFzX2tleSgnLycpKQorICAg
ICAgICBzZWxmLmFzc2VydFJhaXNlcyhkaXNwYXRjaC5EaXNwYXRjaEVycm9yLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICBkaXNwLmFkZF9yZXNvdXJjZV9wYXRoX2FsaWFzLCAnL2FsaWFzJywg
Jy9ub3QtZXhpc3QnKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRl
c3QubWFpbigpCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRz
aGFrZS5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNv
Y2tldC90ZXN0L3Rlc3RfaGFuZHNoYWtlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhiZjA3YmU4M2JhNGZmOTM1
MDc1MmFjZmFlN2IxOTg1ZjFiOTcyMDkKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X2hhbmRzaGFr
ZS5weQpAQCAtMCwwICsxLDUxMyBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHly
aWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAg
KiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisj
IGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMg
ZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0
dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENP
UFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKworCisiIiJUZXN0cyBmb3IgaGFuZHNoYWtlIG1vZHVsZS4iIiIKKworCitpbXBv
cnQgdW5pdHRlc3QKKworaW1wb3J0IGNvbmZpZyAgIyBUaGlzIG11c3QgYmUgaW1wb3J0ZWQgYmVm
b3JlIG1vZF9weXdlYnNvY2tldC4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBoYW5kc2hh
a2UKKworaW1wb3J0IG1vY2sKKworCitfR09PRF9SRVFVRVNUID0gKAorICAgIDgwLAorICAgICcv
ZGVtbycsCisgICAgeworICAgICAgICAnVXBncmFkZSc6J1dlYlNvY2tldCcsCisgICAgICAgICdD
b25uZWN0aW9uJzonVXBncmFkZScsCisgICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAorICAg
ICAgICAnT3JpZ2luJzonaHR0cDovL2V4YW1wbGUuY29tJywKKyAgICAgICAgJ1dlYlNvY2tldC1Q
cm90b2NvbCc6J3NhbXBsZScsCisgICAgfQorKQorCitfR09PRF9SRVNQT05TRV9ERUZBVUxUX1BP
UlQgPSAoCisgICAgJ0hUVFAvMS4xIDEwMSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxy
XG4nCisgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nCisgICAgJ0Nvbm5lY3Rpb246IFVwZ3Jh
ZGVcclxuJworICAgICdXZWJTb2NrZXQtT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJwor
ICAgICdXZWJTb2NrZXQtTG9jYXRpb246IHdzOi8vZXhhbXBsZS5jb20vZGVtb1xyXG4nCisgICAg
J1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKKyAgICAnXHJcbicpCisKK19HT09EX1JF
U1BPTlNFX1NFQ1VSRSA9ICgKKyAgICAnSFRUUC8xLjEgMTAxIFdlYiBTb2NrZXQgUHJvdG9jb2wg
SGFuZHNoYWtlXHJcbicKKyAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicKKyAgICAnQ29ubmVj
dGlvbjogVXBncmFkZVxyXG4nCisgICAgJ1dlYlNvY2tldC1PcmlnaW46IGh0dHA6Ly9leGFtcGxl
LmNvbVxyXG4nCisgICAgJ1dlYlNvY2tldC1Mb2NhdGlvbjogd3NzOi8vZXhhbXBsZS5jb20vZGVt
b1xyXG4nCisgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKKyAgICAnXHJcbicp
CisKK19HT09EX1JFUVVFU1RfTk9OREVGQVVMVF9QT1JUID0gKAorICAgIDgwODEsCisgICAgJy9k
ZW1vJywKKyAgICB7CisgICAgICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgJ0Nv
bm5lY3Rpb24nOidVcGdyYWRlJywKKyAgICAgICAgJ0hvc3QnOidleGFtcGxlLmNvbTo4MDgxJywK
KyAgICAgICAgJ09yaWdpbic6J2h0dHA6Ly9leGFtcGxlLmNvbScsCisgICAgICAgICdXZWJTb2Nr
ZXQtUHJvdG9jb2wnOidzYW1wbGUnLAorICAgIH0KKykKKworX0dPT0RfUkVTUE9OU0VfTk9OREVG
QVVMVF9QT1JUID0gKAorICAgICdIVFRQLzEuMSAxMDEgV2ViIFNvY2tldCBQcm90b2NvbCBIYW5k
c2hha2VcclxuJworICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJworICAgICdDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbicKKyAgICAnV2ViU29ja2V0LU9yaWdpbjogaHR0cDovL2V4YW1wbGUuY29t
XHJcbicKKyAgICAnV2ViU29ja2V0LUxvY2F0aW9uOiB3czovL2V4YW1wbGUuY29tOjgwODEvZGVt
b1xyXG4nCisgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicKKyAgICAnXHJcbicp
CisKK19HT09EX1JFU1BPTlNFX1NFQ1VSRV9OT05ERUYgPSAoCisgICAgJ0hUVFAvMS4xIDEwMSBX
ZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCisgICAgJ1VwZ3JhZGU6IFdlYlNvY2tl
dFxyXG4nCisgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgICdXZWJTb2NrZXQtT3Jp
Z2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJworICAgICdXZWJTb2NrZXQtTG9jYXRpb246IHdz
czovL2V4YW1wbGUuY29tOjgwODEvZGVtb1xyXG4nCisgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDog
c2FtcGxlXHJcbicKKyAgICAnXHJcbicpCisKK19HT09EX1JFUVVFU1RfTk9fUFJPVE9DT0wgPSAo
CisgICAgODAsCisgICAgJy9kZW1vJywKKyAgICB7CisgICAgICAgICdVcGdyYWRlJzonV2ViU29j
a2V0JywKKyAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywKKyAgICAgICAgJ0hvc3QnOidl
eGFtcGxlLmNvbScsCisgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAorICAg
IH0KKykKKworX0dPT0RfUkVTUE9OU0VfTk9fUFJPVE9DT0wgPSAoCisgICAgJ0hUVFAvMS4xIDEw
MSBXZWIgU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZVxyXG4nCisgICAgJ1VwZ3JhZGU6IFdlYlNv
Y2tldFxyXG4nCisgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJworICAgICdXZWJTb2NrZXQt
T3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJworICAgICdXZWJTb2NrZXQtTG9jYXRpb246
IHdzOi8vZXhhbXBsZS5jb20vZGVtb1xyXG4nCisgICAgJ1xyXG4nKQorCitfR09PRF9SRVFVRVNU
X1dJVEhfT1BUSU9OQUxfSEVBREVSUyA9ICgKKyAgICA4MCwKKyAgICAnL2RlbW8nLAorICAgIHsK
KyAgICAgICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAorICAgICAgICAnQ29ubmVjdGlvbic6J1Vw
Z3JhZGUnLAorICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tJywKKyAgICAgICAgJ09yaWdpbic6
J2h0dHA6Ly9leGFtcGxlLmNvbScsCisgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidzYW1w
bGUnLAorICAgICAgICAnQUtleSc6J0FWYWx1ZScsCisgICAgICAgICdFbXB0eVZhbHVlJzonJywK
KyAgICB9CispCisKK19CQURfUkVRVUVTVFMgPSAoCisgICAgKCAgIyBIVFRQIHJlcXVlc3QKKyAg
ICAgICAgODAsCisgICAgICAgICcvZGVtbycsCisgICAgICAgIHsKKyAgICAgICAgICAgICdIb3N0
Jzond3d3Lmdvb2dsZS5jb20nLAorICAgICAgICAgICAgJ1VzZXItQWdlbnQnOidNb3ppbGxhLzUu
MCAoTWFjaW50b3NoOyBVOyBJbnRlbCBNYWMgT1MgWCAxMC41OycKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAnIGVuLVVTOyBydjoxLjkuMS4zKSBHZWNrby8yMDA5MDgyNCBGaXJlZm94LzMuNS4z
JworICAgICAgICAgICAgICAgICAgICAgICAgICcgR1RCNiBHVEJBJywKKyAgICAgICAgICAgICdB
Y2NlcHQnOid0ZXh0L2h0bWwsYXBwbGljYXRpb24veGh0bWwreG1sLGFwcGxpY2F0aW9uL3htbDtx
PTAuOSwnCisgICAgICAgICAgICAgICAgICAgICAnKi8qO3E9MC44JywKKyAgICAgICAgICAgICdB
Y2NlcHQtTGFuZ3VhZ2UnOidlbi11cyxlbjtxPTAuNScsCisgICAgICAgICAgICAnQWNjZXB0LUVu
Y29kaW5nJzonZ3ppcCxkZWZsYXRlJywKKyAgICAgICAgICAgICdBY2NlcHQtQ2hhcnNldCc6J0lT
Ty04ODU5LTEsdXRmLTg7cT0wLjcsKjtxPTAuNycsCisgICAgICAgICAgICAnS2VlcC1BbGl2ZSc6
JzMwMCcsCisgICAgICAgICAgICAnQ29ubmVjdGlvbic6J2tlZXAtYWxpdmUnLAorICAgICAgICB9
CisgICAgKSwKKyAgICAoICAjIE1pc3NpbmcgVXBncmFkZQorICAgICAgICA4MCwKKyAgICAgICAg
Jy9kZW1vJywKKyAgICAgICAgeworICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdyYWRlJywK
KyAgICAgICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ09yaWdpbic6
J2h0dHA6Ly9leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sJzon
c2FtcGxlJywKKyAgICAgICAgfQorICAgICksCisgICAgKCAgIyBXcm9uZyBVcGdyYWRlCisgICAg
ICAgIDgwLAorICAgICAgICAnL2RlbW8nLAorICAgICAgICB7CisgICAgICAgICAgICAnVXBncmFk
ZSc6J05vbldlYlNvY2tldCcsCisgICAgICAgICAgICAnQ29ubmVjdGlvbic6J1VwZ3JhZGUnLAor
ICAgICAgICAgICAgJ0hvc3QnOidleGFtcGxlLmNvbScsCisgICAgICAgICAgICAnT3JpZ2luJzon
aHR0cDovL2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdXZWJTb2NrZXQtUHJvdG9jb2wnOidz
YW1wbGUnLAorICAgICAgICB9CisgICAgKSwKKyAgICAoICAjIEVtcHR5IFdlYlNvY2tldC1Qcm90
b2NvbAorICAgICAgICA4MCwKKyAgICAgICAgJy9kZW1vJywKKyAgICAgICAgeworICAgICAgICAg
ICAgJ1VwZ3JhZGUnOidXZWJTb2NrZXQnLAorICAgICAgICAgICAgJ0Nvbm5lY3Rpb24nOidVcGdy
YWRlJywKKyAgICAgICAgICAgICdIb3N0JzonZXhhbXBsZS5jb20nLAorICAgICAgICAgICAgJ09y
aWdpbic6J2h0dHA6Ly9leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnV2ViU29ja2V0LVByb3Rv
Y29sJzonJywKKyAgICAgICAgfQorICAgICksCisgICAgKCAgIyBXcm9uZyBwb3J0IG51bWJlciBm
b3JtYXQKKyAgICAgICAgODAsCisgICAgICAgICcvZGVtbycsCisgICAgICAgIHsKKyAgICAgICAg
ICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBn
cmFkZScsCisgICAgICAgICAgICAnSG9zdCc6J2V4YW1wbGUuY29tOjB4NTAnLAorICAgICAgICAg
ICAgJ09yaWdpbic6J2h0dHA6Ly9leGFtcGxlLmNvbScsCisgICAgICAgICAgICAnV2ViU29ja2V0
LVByb3RvY29sJzonc2FtcGxlJywKKyAgICAgICAgfQorICAgICksCisgICAgKCAgIyBIZWFkZXIv
Y29ubmVjdGlvbiBwb3J0IG1pc21hdGNoCisgICAgICAgIDgwODAsCisgICAgICAgICcvZGVtbycs
CisgICAgICAgIHsKKyAgICAgICAgICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywKKyAgICAgICAg
ICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCisgICAgICAgICAgICAnSG9zdCc6J2V4YW1wbGUu
Y29tJywKKyAgICAgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20nLAorICAgICAg
ICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6J3NhbXBsZScsCisgICAgICAgIH0KKyAgICApLAor
ICAgICggICMgSWxsZWdhbCBXZWJTb2NrZXQtUHJvdG9jb2wKKyAgICAgICAgODAsCisgICAgICAg
ICcvZGVtbycsCisgICAgICAgIHsKKyAgICAgICAgICAgICdVcGdyYWRlJzonV2ViU29ja2V0JywK
KyAgICAgICAgICAgICdDb25uZWN0aW9uJzonVXBncmFkZScsCisgICAgICAgICAgICAnSG9zdCc6
J2V4YW1wbGUuY29tJywKKyAgICAgICAgICAgICdPcmlnaW4nOidodHRwOi8vZXhhbXBsZS5jb20n
LAorICAgICAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbCc6J2lsbGVnYWxceDA5cHJvdG9jb2wn
LAorICAgICAgICB9CisgICAgKSwKKykKKworX1NUUklDVExZX0dPT0RfUkVRVUVTVFMgPSAoCisg
ICAgKAorICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAgICdVcGdyYWRl
OiBXZWJTb2NrZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAg
ICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9l
eGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICAjIFdlYlNv
Y2tldC1Qcm90b2NvbAorICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAg
ICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVc
clxuJywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46
IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnV2ViU29ja2V0LVByb3RvY29sOiBz
YW1wbGVcclxuJywKKyAgICAgICAgJ1xyXG4nLAorICAgICksCisgICAgKCAgIyBXZWJTb2NrZXQt
UHJvdG9jb2wgYW5kIENvb2tpZQorICAgICAgICAnR0VUIC9kZW1vIEhUVFAvMS4xXHJcbicsCisg
ICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVw
Z3JhZGVcclxuJywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdP
cmlnaW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnV2ViU29ja2V0LVByb3Rv
Y29sOiBzYW1wbGVcclxuJywKKyAgICAgICAgJ0Nvb2tpZTogeHl6XHJcbicKKyAgICAgICAgJ1xy
XG4nLAorICAgICksCisgICAgKCAgIyBDb29raWUKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEu
MVxyXG4nLAorICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25u
ZWN0aW9uOiBVcGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAor
ICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ0Nvb2tp
ZTogYWJjL3h5elxyXG4nCisgICAgICAgICdDb29raWUyOiAkVmVyc2lvbj0xXHJcbicKKyAgICAg
ICAgJ0Nvb2tpZTogYWJjXHJcbicKKyAgICAgICAgJ1xyXG4nLAorICAgICksCisgICAgKAorICAg
ICAgICAnR0VUIC8gSFRUUC8xLjFcclxuJywKKyAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxy
XG4nLAorICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAorICAgICAgICAnSG9zdDog
ZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJc
bicsCisgICAgICAgICdcclxuJywKKyAgICApLAorKQorCitfTk9UX1NUUklDVExZX0dPT0RfUkVR
VUVTVFMgPSAoCisgICAgKCAgIyBFeHRyYSBzcGFjZSBhZnRlciBHRVQKKyAgICAgICAgJ0dFVCAg
L2RlbW8gSFRUUC8xLjFcclxuJywKKyAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAor
ICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4nLAorICAgICAgICAnSG9zdDogZXhhbXBs
ZS5jb21cclxuJywKKyAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUuY29tXHJcbicsCisg
ICAgICAgICdcclxuJywKKyAgICApLAorICAgICggICMgUmVzb3VyY2UgbmFtZSBkb2Vzbid0IHN0
YXQgd2l0aCAnLycKKyAgICAgICAgJ0dFVCBkZW1vIEhUVFAvMS4xXHJcbicsCisgICAgICAgICdV
cGdyYWRlOiBXZWJTb2NrZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxu
JywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0
dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICAj
IE5vIHNwYWNlIGFmdGVyIDoKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAorICAg
ICAgICAnVXBncmFkZTpXZWJTb2NrZXRcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVwZ3Jh
ZGVcclxuJywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdPcmln
aW46IGh0dHA6Ly9leGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnXHJcbicsCisgICAgKSwKKyAg
ICAoICAjIExvd2VyIGNhc2UgVXBncmFkZSBoZWFkZXIKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQ
LzEuMVxyXG4nLAorICAgICAgICAndXBncmFkZTogV2ViU29ja2V0XHJcbicsCisgICAgICAgICdD
b25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4n
LAorICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ1xy
XG4nLAorICAgICksCisgICAgKCAgIyBDb25uZWN0aW9uIGNvbWVzIGJlZm9yZSBVcGdyYWRlCisg
ICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKKyAgICAgICAgJ0Nvbm5lY3Rpb246IFVw
Z3JhZGVcclxuJywKKyAgICAgICAgJ1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAorICAgICAgICAn
SG9zdDogZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ09yaWdpbjogaHR0cDovL2V4YW1wbGUu
Y29tXHJcbicsCisgICAgICAgICdcclxuJywKKyAgICApLAorICAgICggICMgT3JpZ2luIGNvbWVz
IGJlZm9yZSBIb3N0CisgICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKKyAgICAgICAg
J1VwZ3JhZGU6IFdlYlNvY2tldFxyXG4nLAorICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxy
XG4nLAorICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAg
J0hvc3Q6IGV4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdcclxuJywKKyAgICApLAorICAgICgg
ICMgSG9zdCBjb250aW51ZWQgdG8gdGhlIG5leHQgbGluZQorICAgICAgICAnR0VUIC9kZW1vIEhU
VFAvMS4xXHJcbicsCisgICAgICAgICdVcGdyYWRlOiBXZWJTb2NrZXRcclxuJywKKyAgICAgICAg
J0Nvbm5lY3Rpb246IFVwZ3JhZGVcclxuJywKKyAgICAgICAgJ0hvc3Q6IGV4YW1wbGVcclxuJywK
KyAgICAgICAgJyAuY29tXHJcbicsCisgICAgICAgICdPcmlnaW46IGh0dHA6Ly9leGFtcGxlLmNv
bVxyXG4nLAorICAgICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICMgQ29va2llIGNvbWVzIGJl
Zm9yZSBXZWJTb2NrZXQtUHJvdG9jb2wKKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4n
LAorICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25uZWN0aW9u
OiBVcGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAorICAgICAg
ICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ0Nvb2tpZTogeHl6
XHJcbicKKyAgICAgICAgJ1dlYlNvY2tldC1Qcm90b2NvbDogc2FtcGxlXHJcbicsCisgICAgICAg
ICdcclxuJywKKyAgICApLAorICAgICggICMgVW5rbm93biBoZWFkZXIKKyAgICAgICAgJ0dFVCAv
ZGVtbyBIVFRQLzEuMVxyXG4nLAorICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbicsCisg
ICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFtcGxl
LmNvbVxyXG4nLAorICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywKKyAg
ICAgICAgJ0NvbnRlbnQtVHlwZTogdGV4dC9odG1sXHJcbicKKyAgICAgICAgJ1xyXG4nLAorICAg
ICksCisgICAgKCAgIyBDb29raWUgd2l0aCBjb250aW51YXRpb24gbGluZXMKKyAgICAgICAgJ0dF
VCAvZGVtbyBIVFRQLzEuMVxyXG4nLAorICAgICAgICAnVXBncmFkZTogV2ViU29ja2V0XHJcbics
CisgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCisgICAgICAgICdIb3N0OiBleGFt
cGxlLmNvbVxyXG4nLAorICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhhbXBsZS5jb21cclxuJywK
KyAgICAgICAgJ0Nvb2tpZTogeHl6XHJcbicsCisgICAgICAgICcgYWJjXHJcbicsCisgICAgICAg
ICcgZGVmZ1xyXG4nLAorICAgICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICAjIFdyb25nLWNh
c2UgY29va2llCisgICAgICAgICdHRVQgL2RlbW8gSFRUUC8xLjFcclxuJywKKyAgICAgICAgJ1Vw
Z3JhZGU6IFdlYlNvY2tldFxyXG4nLAorICAgICAgICAnQ29ubmVjdGlvbjogVXBncmFkZVxyXG4n
LAorICAgICAgICAnSG9zdDogZXhhbXBsZS5jb21cclxuJywKKyAgICAgICAgJ09yaWdpbjogaHR0
cDovL2V4YW1wbGUuY29tXHJcbicsCisgICAgICAgICdjb29raWU6IGFiYy94eXpcclxuJworICAg
ICAgICAnXHJcbicsCisgICAgKSwKKyAgICAoICAjIENvb2tpZSwgbm8gc3BhY2UgYWZ0ZXIgY29s
b24KKyAgICAgICAgJ0dFVCAvZGVtbyBIVFRQLzEuMVxyXG4nLAorICAgICAgICAnVXBncmFkZTog
V2ViU29ja2V0XHJcbicsCisgICAgICAgICdDb25uZWN0aW9uOiBVcGdyYWRlXHJcbicsCisgICAg
ICAgICdIb3N0OiBleGFtcGxlLmNvbVxyXG4nLAorICAgICAgICAnT3JpZ2luOiBodHRwOi8vZXhh
bXBsZS5jb21cclxuJywKKyAgICAgICAgJ0Nvb2tpZTphYmMveHl6XHJcbicKKyAgICAgICAgJ1xy
XG4nLAorICAgICksCispCisKKworZGVmIF9jcmVhdGVfcmVxdWVzdChyZXF1ZXN0X2RlZik6Cisg
ICAgY29ubiA9IG1vY2suTW9ja0Nvbm4oJycpCisgICAgY29ubi5sb2NhbF9hZGRyID0gKCcwLjAu
MC4wJywgcmVxdWVzdF9kZWZbMF0pCisgICAgcmV0dXJuIG1vY2suTW9ja1JlcXVlc3QoCisgICAg
ICAgICAgICB1cmk9cmVxdWVzdF9kZWZbMV0sCisgICAgICAgICAgICBoZWFkZXJzX2luPXJlcXVl
c3RfZGVmWzJdLAorICAgICAgICAgICAgY29ubmVjdGlvbj1jb25uKQorCisKK2RlZiBfY3JlYXRl
X2dldF9tZW1vcml6ZWRfbGluZXMobGluZXMpOgorICAgIGRlZiBnZXRfbWVtb3JpemVkX2xpbmVz
KCk6CisgICAgICAgIHJldHVybiBsaW5lcworICAgIHJldHVybiBnZXRfbWVtb3JpemVkX2xpbmVz
CisKKworZGVmIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5lcyhyZXF1ZXN0X2xpbmVzX3NldCk6
CisgICAgcmVxdWVzdHMgPSBbXQorICAgIGZvciBsaW5lcyBpbiByZXF1ZXN0X2xpbmVzX3NldDoK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQorICAgICAg
ICByZXF1ZXN0LmNvbm5lY3Rpb24uZ2V0X21lbW9yaXplZF9saW5lcyA9IF9jcmVhdGVfZ2V0X21l
bW9yaXplZF9saW5lcygKKyAgICAgICAgICAgICAgICBsaW5lcykKKyAgICAgICAgcmVxdWVzdHMu
YXBwZW5kKHJlcXVlc3QpCisgICAgcmV0dXJuIHJlcXVlc3RzCisKKworY2xhc3MgSGFuZHNoYWtl
clRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3ZhbGlkYXRlX3Byb3RvY29s
KHNlbGYpOgorICAgICAgICBoYW5kc2hha2UuX3ZhbGlkYXRlX3Byb3RvY29sKCdzYW1wbGUnKSAg
IyBzaG91bGQgc3VjY2VlZC4KKyAgICAgICAgaGFuZHNoYWtlLl92YWxpZGF0ZV9wcm90b2NvbCgn
U2FtcGxlJykgICMgc2hvdWxkIHN1Y2NlZWQuCisgICAgICAgIGhhbmRzaGFrZS5fdmFsaWRhdGVf
cHJvdG9jb2woJ3NhbXBsZVx4MjBwcm90b2NvbCcpICAjIHNob3VsZCBzdWNjZWVkLgorICAgICAg
ICBoYW5kc2hha2UuX3ZhbGlkYXRlX3Byb3RvY29sKCdzYW1wbGVceDdlcHJvdG9jb2wnKSAgIyBz
aG91bGQgc3VjY2VlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkhhbmRz
aGFrZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2UuX3ZhbGlkYXRl
X3Byb3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnJykKKyAgICAgICAgc2VsZi5h
c3NlcnRSYWlzZXMoaGFuZHNoYWtlLkhhbmRzaGFrZUVycm9yLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICBoYW5kc2hha2UuX3ZhbGlkYXRlX3Byb3RvY29sLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAnc2FtcGxlXHgxOXByb3RvY29sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMo
aGFuZHNoYWtlLkhhbmRzaGFrZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5k
c2hha2UuX3ZhbGlkYXRlX3Byb3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnc2Ft
cGxlXHg3ZnByb3RvY29sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkhh
bmRzaGFrZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBoYW5kc2hha2UuX3ZhbGlk
YXRlX3Byb3RvY29sLAorICAgICAgICAgICAgICAgICAgICAgICAgICAjICJKYXBhbiIgaW4gSmFw
YW5lc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdSdcdTY1ZTVcdTY3MmMnKQorCisgICAg
ZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X2RlZmF1bHRfcG9ydChzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQorICAgICAgICBoYW5kc2hha2VyID0g
aGFuZHNoYWtlLkhhbmRzaGFrZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSkKKyAgICAgICAgaGFuZHNoYWtl
ci5kb19oYW5kc2hha2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNF
X0RFRkFVTFRfUE9SVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy9kZW1vJywgcmVx
dWVzdC53c19yZXNvdXJjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaHR0cDovL2V4YW1w
bGUuY29tJywgcmVxdWVzdC53c19vcmlnaW4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3dz
Oi8vZXhhbXBsZS5jb20vZGVtbycsIHJlcXVlc3Qud3NfbG9jYXRpb24pCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qud3NfcHJvdG9jb2wpCisKKyAgICBkZWYgdGVz
dF9nb29kX3JlcXVlc3Rfc2VjdXJlX2RlZmF1bHRfcG9ydChzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUKQorICAgICAgICByZXF1ZXN0LmNvbm5l
Y3Rpb24ubG9jYWxfYWRkciA9ICgnMC4wLjAuMCcsIDQ0MykKKyAgICAgICAgcmVxdWVzdC5pc19o
dHRwc18gPSBUcnVlCisgICAgICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihy
ZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5N
b2NrRGlzcGF0Y2hlcigpKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfU0VDVVJFLAorICAgICAgICAgICAg
ICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKKworICAgIGRl
ZiB0ZXN0X2dvb2RfcmVxdWVzdF9ub25kZWZhdWx0X3BvcnQoc2VsZik6CisgICAgICAgIHJlcXVl
c3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9OT05ERUZBVUxUX1BPUlQpCisgICAg
ICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQor
ICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoX0dPT0RfUkVTUE9OU0VfTk9OREVGQVVMVF9QT1JULAorICAgICAgICAgICAgICAgICAgICAg
ICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKyAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbCgnc2FtcGxlJywgcmVxdWVzdC53c19wcm90b2NvbCkKKworICAgIGRlZiB0ZXN0X2dv
b2RfcmVxdWVzdF9zZWN1cmVfbm9uX2RlZmF1bHRfcG9ydChzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFVRVNUX05PTkRFRkFVTFRfUE9SVCkKKyAgICAg
ICAgcmVxdWVzdC5pc19odHRwc18gPSBUcnVlCisgICAgICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hh
a2UuSGFuZHNoYWtlcihyZXF1ZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hh
bmRzaGFrZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX0dPT0RfUkVTUE9OU0VfU0VDVVJF
X05PTkRFRiwKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3Jp
dHRlbl9kYXRhKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3NhbXBsZScsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpCisKKyAgICBkZWYgdGVzdF9nb29kX3JlcXVlc3RfZGVmYXVsdF9ub19wcm90
b2NvbChzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdChfR09PRF9SRVFV
RVNUX05PX1BST1RPQ09MKQorICAgICAgICBoYW5kc2hha2VyID0gaGFuZHNoYWtlLkhhbmRzaGFr
ZXIocmVxdWVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1v
Y2suTW9ja0Rpc3BhdGNoZXIoKSkKKyAgICAgICAgaGFuZHNoYWtlci5kb19oYW5kc2hha2UoKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9HT09EX1JFU1BPTlNFX05PX1BST1RPQ09MLAorICAg
ICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCByZXF1ZXN0LndzX3Byb3RvY29sKQorCisg
ICAgZGVmIHRlc3RfZ29vZF9yZXF1ZXN0X29wdGlvbmFsX2hlYWRlcnMoc2VsZik6CisgICAgICAg
IHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoX0dPT0RfUkVRVUVTVF9XSVRIX09QVElPTkFMX0hF
QURFUlMpCisgICAgICAgIGhhbmRzaGFrZXIgPSBoYW5kc2hha2UuSGFuZHNoYWtlcihyZXF1ZXN0
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlz
cGF0Y2hlcigpKQorICAgICAgICBoYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoJ0FWYWx1ZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVz
dC5oZWFkZXJzX2luWydBS2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsCisgICAg
ICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdC5oZWFkZXJzX2luWydFbXB0eVZhbHVlJ10pCisK
KyAgICBkZWYgdGVzdF9iYWRfcmVxdWVzdHMoc2VsZik6CisgICAgICAgIGZvciByZXF1ZXN0IGlu
IG1hcChfY3JlYXRlX3JlcXVlc3QsIF9CQURfUkVRVUVTVFMpOgorICAgICAgICAgICAgaGFuZHNo
YWtlciA9IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9jay5Nb2NrRGlzcGF0Y2hlcigpKQorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoaGFuZHNoYWtlLkhhbmRzaGFrZUVycm9yLCBoYW5kc2hh
a2VyLmRvX2hhbmRzaGFrZSkKKworICAgIGRlZiB0ZXN0X3N0cmljdGx5X2dvb2RfcmVxdWVzdHMo
c2VsZik6CisgICAgICAgIGZvciByZXF1ZXN0IGluIF9jcmVhdGVfcmVxdWVzdHNfd2l0aF9saW5l
cyhfU1RSSUNUTFlfR09PRF9SRVFVRVNUUyk6CisgICAgICAgICAgICBzdHJpY3RfaGFuZHNoYWtl
ciA9IGhhbmRzaGFrZS5IYW5kc2hha2VyKHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkK
KyAgICAgICAgICAgIHN0cmljdF9oYW5kc2hha2VyLmRvX2hhbmRzaGFrZSgpCisKKyAgICBkZWYg
dGVzdF9ub3Rfc3RyaWN0bHlfZ29vZF9yZXF1ZXN0cyhzZWxmKToKKyAgICAgICAgZm9yIHJlcXVl
c3QgaW4gX2NyZWF0ZV9yZXF1ZXN0c193aXRoX2xpbmVzKF9OT1RfU1RSSUNUTFlfR09PRF9SRVFV
RVNUUyk6CisgICAgICAgICAgICBzdHJpY3RfaGFuZHNoYWtlciA9IGhhbmRzaGFrZS5IYW5kc2hh
a2VyKHJlcXVlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1vY2suTW9ja0Rpc3BhdGNoZXIoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHJ1ZSkKKyAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0UmFpc2VzKGhhbmRzaGFrZS5IYW5kc2hha2VFcnJvciwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHN0cmljdF9oYW5kc2hha2VyLmRvX2hhbmRzaGFrZSkKKworCisKK2lmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKworIyB2aTpzdHM9NCBz
dz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21lbW9yaXppbmdmaWxlLnB5IGIvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tZW1vcml6
aW5nZmlsZS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZGU3N2JhNWRjNjQxOTg3ODFkZTBmYTIxNmRkMmRmNDZl
ZGNjMGQwCi0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tZW1vcml6aW5nZmlsZS5weQpAQCAtMCww
ICsxLDcyIEBACisjIS91c3IvYmluL2VudiBweXRob24KKyMKKyMgQ29weXJpZ2h0IDIwMDksIEdv
b2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNv
cHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3Jz
IG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20K
KyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lv
bi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJU
SUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZ
UklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisK
KyIiIlRlc3RzIGZvciBtZW1vcml6aW5nZmlsZSBtb2R1bGUuIiIiCisKKworaW1wb3J0IFN0cmlu
Z0lPCitpbXBvcnQgdW5pdHRlc3QKKworaW1wb3J0IGNvbmZpZyAgIyBUaGlzIG11c3QgYmUgaW1w
b3J0ZWQgYmVmb3JlIG1vZF9weXdlYnNvY2tldC4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9y
dCBtZW1vcml6aW5nZmlsZQorCisKK2NsYXNzIFV0aWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToK
KyAgICBkZWYgY2hlY2soc2VsZiwgbWVtb3JpemluZ19maWxlLCBudW1fcmVhZCwgZXhwZWN0ZWRf
bGlzdCk6CisgICAgICAgIGZvciB1bnVzZWQgaW4gcmFuZ2UobnVtX3JlYWQpOgorICAgICAgICAg
ICAgbWVtb3JpemluZ19maWxlLnJlYWRsaW5lKCkKKyAgICAgICAgYWN0dWFsX2xpc3QgPSBtZW1v
cml6aW5nX2ZpbGUuZ2V0X21lbW9yaXplZF9saW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwobGVuKGV4cGVjdGVkX2xpc3QpLCBsZW4oYWN0dWFsX2xpc3QpKQorICAgICAgICBmb3IgZXhw
ZWN0ZWQsIGFjdHVhbCBpbiB6aXAoZXhwZWN0ZWRfbGlzdCwgYWN0dWFsX2xpc3QpOgorICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgYWN0dWFsKQorCisgICAgZGVmIHRlc3Rf
Z2V0X21lbW9yaXplZF9saW5lcyhzZWxmKToKKyAgICAgICAgbWVtb3JpemluZ19maWxlID0gbWVt
b3JpemluZ2ZpbGUuTWVtb3JpemluZ0ZpbGUoU3RyaW5nSU8uU3RyaW5nSU8oCisgICAgICAgICAg
ICAgICAgJ0hlbGxvXG5Xb3JsZFxuV2VsY29tZScpKQorICAgICAgICBzZWxmLmNoZWNrKG1lbW9y
aXppbmdfZmlsZSwgMywgWydIZWxsb1xuJywgJ1dvcmxkXG4nLCAnV2VsY29tZSddKQorCisgICAg
ZGVmIHRlc3RfZ2V0X21lbW9yaXplZF9saW5lc19saW1pdF9tZW1vcml6ZWRfbGluZXMoc2VsZik6
CisgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1lbW9yaXppbmdGaWxl
KFN0cmluZ0lPLlN0cmluZ0lPKAorICAgICAgICAgICAgICAgICdIZWxsb1xuV29ybGRcbldlbGNv
bWUnKSwgMikKKyAgICAgICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDMsIFsnSGVsbG9c
bicsICdXb3JsZFxuJ10pCisKKyAgICBkZWYgdGVzdF9nZXRfbWVtb3JpemVkX2xpbmVzX2VtcHR5
X2ZpbGUoc2VsZik6CisgICAgICAgIG1lbW9yaXppbmdfZmlsZSA9IG1lbW9yaXppbmdmaWxlLk1l
bW9yaXppbmdGaWxlKFN0cmluZ0lPLlN0cmluZ0lPKAorICAgICAgICAgICAgICAgICcnKSkKKyAg
ICAgICAgc2VsZi5jaGVjayhtZW1vcml6aW5nX2ZpbGUsIDEwLCBbXSkKKworCitpZiBfX25hbWVf
XyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisKKyMgdmk6c3RzPTQgc3c9
NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5
L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tb2NrLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF9tb2NrLnB5Cm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhiMTM3ZDEzODU4OWNlN2I0YWIwMWMxZjMwOWM2YjU1ZjhlMzE2MmEKLS0tIC9kZXYvbnVsbAor
KysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQv
dGVzdC90ZXN0X21vY2sucHkKQEAgLTAsMCArMSwxMjYgQEAKKyMhL3Vzci9iaW4vZW52IHB5dGhv
bgorIworIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1
dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9t
b3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIg
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
CisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
SU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIiIiVGVzdHMgZm9yIG1vY2sgbW9kdWxlLiIiIgor
CisKK2ltcG9ydCBRdWV1ZQoraW1wb3J0IHRocmVhZGluZworaW1wb3J0IHVuaXR0ZXN0CisKK2lt
cG9ydCBtb2NrCisKKworY2xhc3MgTW9ja0Nvbm5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAg
ICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuX2Nvbm4gPSBtb2NrLk1vY2tDb25uKCdB
QkNcclxuREVGR1xyXG5cclxuSElKSycpCisKKyAgICBkZWYgdGVzdF9yZWFkbGluZShzZWxmKToK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQUJDXHJcbicsIHNlbGYuX2Nvbm4ucmVhZGxpbmUo
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnREVGR1xyXG4nLCBzZWxmLl9jb25uLnJlYWRs
aW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xyXG4nLCBzZWxmLl9jb25uLnJlYWRs
aW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0hJSksnLCBzZWxmLl9jb25uLnJlYWRs
aW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIHNlbGYuX2Nvbm4ucmVhZGxpbmUo
KSkKKworICAgIGRlZiB0ZXN0X3JlYWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J0FCQ1xyXG5EJywgc2VsZi5fY29ubi5yZWFkKDYpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdFRkdcclxuXHJcbkhJJywgc2VsZi5fY29ubi5yZWFkKDkpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdKSycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJycsIHNlbGYuX2Nvbm4ucmVhZCgxMCkpCisKKyAgICBkZWYgdGVzdF9yZWFkX2FuZF9yZWFk
bGluZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnQUJDXHJcbkQnLCBzZWxmLl9j
b25uLnJlYWQoNikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0VGR1xyXG4nLCBzZWxmLl9j
b25uLnJlYWRsaW5lKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1xyXG5ISUpLJywgc2Vs
Zi5fY29ubi5yZWFkKDkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBzZWxmLl9jb25u
LnJlYWRsaW5lKCkpCisKKyAgICBkZWYgdGVzdF93cml0ZShzZWxmKToKKyAgICAgICAgc2VsZi5f
Y29ubi53cml0ZSgnSGVsbG9cclxuJykKKyAgICAgICAgc2VsZi5fY29ubi53cml0ZSgnV29ybGRc
clxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG9cclxuV29ybGRcclxuJywgc2Vs
Zi5fY29ubi53cml0dGVuX2RhdGEoKSkKKworCitjbGFzcyBNb2NrQmxvY2tpbmdDb25uVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfcmVhZChzZWxmKToKKyAgICAgICAgY2xh
c3MgTGluZVJlYWRlcih0aHJlYWRpbmcuVGhyZWFkKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBjb25uLCBxdWV1ZSk6CisgICAgICAgICAgICAgICAgdGhyZWFkaW5nLlRocmVhZC5f
X2luaXRfXyhzZWxmKQorICAgICAgICAgICAgICAgIHNlbGYuX3F1ZXVlID0gcXVldWUKKyAgICAg
ICAgICAgICAgICBzZWxmLl9jb25uID0gY29ubgorICAgICAgICAgICAgICAgIHNlbGYuc2V0RGFl
bW9uKFRydWUpCisgICAgICAgICAgICAgICAgc2VsZi5zdGFydCgpCisgICAgICAgICAgICBkZWYg
cnVuKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAg
ICAgIGRhdGEgPSBzZWxmLl9jb25uLnJlYWRsaW5lKCkKKyAgICAgICAgICAgICAgICAgICAgc2Vs
Zi5fcXVldWUucHV0KGRhdGEpCisgICAgICAgIGNvbm4gPSBtb2NrLk1vY2tCbG9ja2luZ0Nvbm4o
KQorICAgICAgICBxdWV1ZSA9IFF1ZXVlLlF1ZXVlKCkKKyAgICAgICAgcmVhZGVyID0gTGluZVJl
YWRlcihjb25uLCBxdWV1ZSkKKyAgICAgICAgc2VsZi5mYWlsVW5sZXNzKHF1ZXVlLmVtcHR5KCkp
CisgICAgICAgIGNvbm4ucHV0X2J5dGVzKCdGb28gYmFyXHJcbicpCisgICAgICAgIHJlYWQgPSBx
dWV1ZS5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGb28gYmFyXHJcbicsIHJlYWQp
CisKKworY2xhc3MgTW9ja1RhYmxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRl
c3RfY3JlYXRlX2Zyb21fZGljdChzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1vY2tUYWJs
ZSh7J0tleSc6J1ZhbHVlJ30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFi
bGUuZ2V0KCdLRVknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsn
a2V5J10pCisKKyAgICBkZWYgdGVzdF9jcmVhdGVfZnJvbV9saXN0KHNlbGYpOgorICAgICAgICB0
YWJsZSA9IG1vY2suTW9ja1RhYmxlKFsoJ0tleScsICdWYWx1ZScpXSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdWYWx1ZScsIHRhYmxlWydrZXknXSkKKworICAgIGRlZiB0ZXN0X2NyZWF0ZV9mcm9t
X3R1cGxlKHNlbGYpOgorICAgICAgICB0YWJsZSA9IG1vY2suTW9ja1RhYmxlKCgoJ0tleScsICdW
YWx1ZScpLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGUuZ2V0KCdL
RVknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsna2V5J10pCisK
KyAgICBkZWYgdGVzdF9zZXRfYW5kX2dldChzZWxmKToKKyAgICAgICAgdGFibGUgPSBtb2NrLk1v
Y2tUYWJsZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTm9uZSwgdGFibGUuZ2V0KCdLZXkn
KSkKKyAgICAgICAgdGFibGVbJ0tleSddID0gJ1ZhbHVlJworICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdWYWx1ZScsIHRhYmxlLmdldCgnS2V5JykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
J1ZhbHVlJywgdGFibGUuZ2V0KCdrZXknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFs
dWUnLCB0YWJsZS5nZXQoJ0tFWScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWYWx1ZScs
IHRhYmxlWydLZXknXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVmFsdWUnLCB0YWJsZVsn
a2V5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1ZhbHVlJywgdGFibGVbJ0tFWSddKQor
CisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCisKKwor
IyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21zZ3V0aWwucHkgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X21z
Z3V0aWwucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMTZiODhlMGYyZWI4OWQyOThlZjA3YjI2MTdhNDIxYzBhNTY0
Yzk0OAotLS0gL2Rldi9udWxsCisrKyBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdGhp
cmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RfbXNndXRpbC5weQpAQCAtMCwwICsxLDE1NiBA
QAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5j
LgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisiIiJUZXN0
cyBmb3IgbXNndXRpbCBtb2R1bGUuIiIiCisKKworaW1wb3J0IFF1ZXVlCitpbXBvcnQgdW5pdHRl
c3QKKworaW1wb3J0IGNvbmZpZyAgIyBUaGlzIG11c3QgYmUgaW1wb3J0ZWQgYmVmb3JlIG1vZF9w
eXdlYnNvY2tldC4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCBtc2d1dGlsCisKK2ltcG9y
dCBtb2NrCisKKworZGVmIF9jcmVhdGVfcmVxdWVzdChyZWFkX2RhdGEpOgorICAgIHJldHVybiBt
b2NrLk1vY2tSZXF1ZXN0KGNvbm5lY3Rpb249bW9jay5Nb2NrQ29ubihyZWFkX2RhdGEpKQorCitk
ZWYgX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCk6CisgICAgcmV0dXJuIG1vY2suTW9ja1JlcXVl
c3QoY29ubmVjdGlvbj1tb2NrLk1vY2tCbG9ja2luZ0Nvbm4oKSkKKworY2xhc3MgTWVzc2FnZVRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3NlbmRfbWVzc2FnZShzZWxmKToK
KyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgnJykKKyAgICAgICAgbXNndXRpbC5z
ZW5kX21lc3NhZ2UocmVxdWVzdCwgJ0hlbGxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
XHgwMEhlbGxvXHhmZicsIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAg
IGRlZiB0ZXN0X3NlbmRfbWVzc2FnZV91bmljb2RlKHNlbGYpOgorICAgICAgICByZXF1ZXN0ID0g
X2NyZWF0ZV9yZXF1ZXN0KCcnKQorICAgICAgICBtc2d1dGlsLnNlbmRfbWVzc2FnZShyZXF1ZXN0
LCB1J1x1NjVlNScpCisgICAgICAgICMgVSs2NWU1IGlzIGVuY29kZWQgYXMgZTYsOTcsYTUgaW4g
VVRGLTgKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFx4ZTZceDk3XHhhNVx4ZmYnLAor
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEo
KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZShzZWxmKToKKyAgICAgICAgcmVxdWVz
dCA9IF9jcmVhdGVfcmVxdWVzdCgnXHgwMEhlbGxvXHhmZlx4MDBXb3JsZCFceGZmJykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29ybGQhJywgbXNndXRpbC5yZWNlaXZl
X21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9yZWNlaXZlX21lc3NhZ2VfdW5pY29k
ZShzZWxmKToKKyAgICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfcmVxdWVzdCgnXHgwMFx4ZTZceDlj
XHhhY1x4ZmYnKQorICAgICAgICAjIFUrNjcyYyBpcyBlbmNvZGVkIGFzIGU2LDljLGFjIGluIFVU
Ri04CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodSdcdTY3MmMnLCBtc2d1dGlsLnJlY2VpdmVf
bWVzc2FnZShyZXF1ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9lcnJvbmVv
dXNfdW5pY29kZShzZWxmKToKKyAgICAgICAgIyBceDgwIGFuZCBceDgxIGFyZSBpbnZhbGlkIGFz
IFVURi04LgorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCdceDAwXHg4MFx4ODFc
eGZmJykKKyAgICAgICAgIyBJbnZhbGlkIGNoYXJhY3RlcnMgc2hvdWxkIGJlIHJlcGxhY2VkIHdp
dGgKKyAgICAgICAgIyBVK2ZmZmQgUkVQTEFDRU1FTlQgQ0hBUkFDVEVSCisgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwodSdcdWZmZmRcdWZmZmQnLCBtc2d1dGlsLnJlY2VpdmVfbWVzc2FnZShyZXF1
ZXN0KSkKKworICAgIGRlZiB0ZXN0X3JlY2VpdmVfbWVzc2FnZV9kaXNjYXJkKHNlbGYpOgorICAg
ICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9yZXF1ZXN0KCdceDgwXHgwNklHTk9SRVx4MDBIZWxsb1x4
ZmYnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdceDAxRElTUkVHQVJEXHhmZlx4
MDBXb3JsZCFceGZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSGVsbG8nLCBtc2d1dGls
LnJlY2VpdmVfbWVzc2FnZShyZXF1ZXN0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnV29y
bGQhJywgbXNndXRpbC5yZWNlaXZlX21lc3NhZ2UocmVxdWVzdCkpCisKKyAgICBkZWYgdGVzdF9w
YXlsb2FkX2xlbmd0aChzZWxmKToKKyAgICAgICAgZm9yIGxlbmd0aCwgYnl0ZXMgaW4gKCgwLCAn
XHgwMCcpLCAoMHg3ZiwgJ1x4N2YnKSwgKDB4ODAsICdceDgxXHgwMCcpLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgKDB4MTIzNCwgJ1x4ODBceGE0XHgzNCcpKToKKyAgICAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwobGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
c2d1dGlsLl9wYXlsb2FkX2xlbmd0aChfY3JlYXRlX3JlcXVlc3QoYnl0ZXMpKSkKKworICAgIGRl
ZiB0ZXN0X3JlY2VpdmVfYnl0ZXMoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3Jl
cXVlc3QoJ2FiY2RlZmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnLCBtc2d1dGls
Ll9yZWNlaXZlX2J5dGVzKHJlcXVlc3QsIDMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdk
ZWZnJywgbXNndXRpbC5fcmVjZWl2ZV9ieXRlcyhyZXF1ZXN0LCA0KSkKKworICAgIGRlZiB0ZXN0
X3JlYWRfdW50aWwoc2VsZik6CisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRlX3JlcXVlc3QoJ2Fi
Y1hkZWZnWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycsIG1zZ3V0aWwuX3JlYWRf
dW50aWwocmVxdWVzdCwgJ1gnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnZGVmZycsIG1z
Z3V0aWwuX3JlYWRfdW50aWwocmVxdWVzdCwgJ1gnKSkKKworCitjbGFzcyBNZXNzYWdlUmVjZWl2
ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9xdWV1ZShzZWxmKToKKyAg
ICAgICAgcmVxdWVzdCA9IF9jcmVhdGVfYmxvY2tpbmdfcmVxdWVzdCgpCisgICAgICAgIHJlY2Vp
dmVyID0gbXNndXRpbC5NZXNzYWdlUmVjZWl2ZXIocmVxdWVzdCkKKworICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKE5vbmUsIHJlY2VpdmVyLnJlY2VpdmVfbm93YWl0KCkpCisKKyAgICAgICAgcmVx
dWVzdC5jb25uZWN0aW9uLnB1dF9ieXRlcygnXHgwMEhlbGxvIVx4ZmYnKQorICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKCdIZWxsbyEnLCByZWNlaXZlci5yZWNlaXZlKCkpCisKKyAgICBkZWYgdGVz
dF9vbm1lc3NhZ2Uoc2VsZik6CisgICAgICAgIG9ubWVzc2FnZV9xdWV1ZSA9IFF1ZXVlLlF1ZXVl
KCkKKyAgICAgICAgZGVmIG9ubWVzc2FnZV9oYW5kbGVyKG1lc3NhZ2UpOgorICAgICAgICAgICAg
b25tZXNzYWdlX3F1ZXVlLnB1dChtZXNzYWdlKQorCisgICAgICAgIHJlcXVlc3QgPSBfY3JlYXRl
X2Jsb2NraW5nX3JlcXVlc3QoKQorICAgICAgICByZWNlaXZlciA9IG1zZ3V0aWwuTWVzc2FnZVJl
Y2VpdmVyKHJlcXVlc3QsIG9ubWVzc2FnZV9oYW5kbGVyKQorCisgICAgICAgIHJlcXVlc3QuY29u
bmVjdGlvbi5wdXRfYnl0ZXMoJ1x4MDBIZWxsbyFceGZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgnSGVsbG8hJywgb25tZXNzYWdlX3F1ZXVlLmdldCgpKQorCisKK2NsYXNzIE1lc3NhZ2VT
ZW5kZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zZW5kKHNlbGYpOgor
ICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1ZXN0KCkKKyAgICAgICAgc2Vu
ZGVyID0gbXNndXRpbC5NZXNzYWdlU2VuZGVyKHJlcXVlc3QpCisKKyAgICAgICAgc2VuZGVyLnNl
bmQoJ1dvcmxkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXHgwMFdvcmxkXHhmZicsIHJl
cXVlc3QuY29ubmVjdGlvbi53cml0dGVuX2RhdGEoKSkKKworICAgIGRlZiB0ZXN0X3NlbmRfbm93
YWl0KHNlbGYpOgorICAgICAgICAjIFVzZSBhIHF1ZXVlIHRvIGNoZWNrIHRoZSBieXRlcyB3cml0
dGVuIGJ5IE1lc3NhZ2VTZW5kZXIuCisgICAgICAgICMgcmVxdWVzdC5jb25uZWN0aW9uLndyaXR0
ZW5fZGF0YSgpIGNhbm5vdCBiZSB1c2VkIGhlcmUgYmVjYXVzZQorICAgICAgICAjIE1lc3NhZ2VT
ZW5kZXIgcnVucyBpbiBhIHNlcGFyYXRlIHRocmVhZC4KKyAgICAgICAgc2VuZF9xdWV1ZSA9IFF1
ZXVlLlF1ZXVlKCkKKyAgICAgICAgZGVmIHdyaXRlKGJ5dGVzKToKKyAgICAgICAgICAgIHNlbmRf
cXVldWUucHV0KGJ5dGVzKQorICAgICAgICByZXF1ZXN0ID0gX2NyZWF0ZV9ibG9ja2luZ19yZXF1
ZXN0KCkKKyAgICAgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlID0gd3JpdGUKKworICAgICAg
ICBzZW5kZXIgPSBtc2d1dGlsLk1lc3NhZ2VTZW5kZXIocmVxdWVzdCkKKworICAgICAgICBzZW5k
ZXIuc2VuZF9ub3dhaXQoJ0hlbGxvJykKKyAgICAgICAgc2VuZGVyLnNlbmRfbm93YWl0KCdXb3Js
ZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ1x4MDBIZWxsb1x4ZmYnLCBzZW5kX3F1ZXVl
LmdldCgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdceDAwV29ybGRceGZmJywgc2VuZF9x
dWV1ZS5nZXQoKSkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0
Lm1haW4oKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMv
U2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdF91dGlsLnB5
IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rl
c3QvdGVzdF91dGlsLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYxZjBkYjVhNDViMjIwMmIzMGE5ZTMyMGU2NWUz
YWVjODE3MmIxMGEKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0X3V0aWwucHkKQEAgLTAsMCArMSw3
OCBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisjCisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUg
SW5jLgorIyBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmln
aHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1l
IG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRo
aXMgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisj
CisjIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxB
UiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hU
CisjIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkKKyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCisiIiJU
ZXN0cyBmb3IgdXRpbCBtb2R1bGUuIiIiCisKKworaW1wb3J0IG9zCitpbXBvcnQgc3lzCitpbXBv
cnQgdW5pdHRlc3QKKworaW1wb3J0IGNvbmZpZyAgIyBUaGlzIG11c3QgYmUgaW1wb3J0ZWQgYmVm
b3JlIG1vZF9weXdlYnNvY2tldC4KK2Zyb20gbW9kX3B5d2Vic29ja2V0IGltcG9ydCB1dGlsCisK
K19URVNUX0RBVEFfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguc3BsaXQoX19maWxlX18pWzBd
LCAndGVzdGRhdGEnKQorCitjbGFzcyBVdGlsVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAg
ZGVmIHRlc3RfZ2V0X3N0YWNrX3RyYWNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
KCdOb25lXG4nLCB1dGlsLmdldF9zdGFja190cmFjZSgpKQorICAgICAgICB0cnk6CisgICAgICAg
ICAgICBhID0gMSAvIDAgICMgSW50ZW50aW9uYWxseSByYWlzZSBleGNlcHRpb24uCisgICAgICAg
IGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgICAgICB0cmFjZSA9IHV0aWwuZ2V0X3N0YWNrX3Ry
YWNlKCkKKyAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcyh0cmFjZS5zdGFydHN3aXRoKCdUcmFj
ZWJhY2snKSkKKyAgICAgICAgICAgIHNlbGYuZmFpbFVubGVzcyh0cmFjZS5maW5kKCdaZXJvRGl2
aXNpb25FcnJvcicpICE9IC0xKQorCisgICAgZGVmIHRlc3RfcHJlcGVuZF9tZXNzYWdlX3RvX2V4
Y2VwdGlvbihzZWxmKToKKyAgICAgICAgZXhjID0gRXhjZXB0aW9uKCdXb3JsZCcpCisgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwoJ1dvcmxkJywgc3RyKGV4YykpCisgICAgICAgIHV0aWwucHJlcGVu
ZF9tZXNzYWdlX3RvX2V4Y2VwdGlvbignSGVsbG8gJywgZXhjKQorICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKCdIZWxsbyBXb3JsZCcsIHN0cihleGMpKQorCisgICAgZGVmIHRlc3RfZ2V0X3Njcmlw
dF9pbnRlcnAoc2VsZik6CisgICAgICAgIGN5Z3dpbl9wYXRoID0gJ2M6XFxjeWd3aW5cXGJpbicK
KyAgICAgICAgY3lnd2luX3BlcmwgPSBvcy5wYXRoLmpvaW4oY3lnd2luX3BhdGgsICdwZXJsJykK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOb25lLCB1dGlsLmdldF9zY3JpcHRfaW50ZXJwKAor
ICAgICAgICAgICAgb3MucGF0aC5qb2luKF9URVNUX0RBVEFfRElSLCAnUkVBRE1FJykpKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIHV0aWwuZ2V0X3NjcmlwdF9pbnRlcnAoCisgICAg
ICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9ESVIsICdSRUFETUUnKSwgY3lnd2luX3Bh
dGgpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcvdXNyL2Jpbi9wZXJsIC13VCcsIHV0aWwu
Z2V0X3NjcmlwdF9pbnRlcnAoCisgICAgICAgICAgICBvcy5wYXRoLmpvaW4oX1RFU1RfREFUQV9E
SVIsICdoZWxsby5wbCcpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjeWd3aW5fcGVybCAr
ICcgLXdUJywgdXRpbC5nZXRfc2NyaXB0X2ludGVycCgKKyAgICAgICAgICAgIG9zLnBhdGguam9p
bihfVEVTVF9EQVRBX0RJUiwgJ2hlbGxvLnBsJyksIGN5Z3dpbl9wYXRoKSkKKworCitpZiBfX25h
bWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4oKQorCisKKyMgdmk6c3RzPTQg
c3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvUkVBRE1FIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvUkVBRE1FCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLmMwMDFhYTU1OTVjZGQxMzQwN2Y1NzI4ZWNkNTMyYTVkMTIyNjNlZmEKLS0tIC9k
ZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3
ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9SRUFETUUKQEAgLTAsMCArMSBAQAorVGVzdCBkYXRhIGRp
cmVjdG9yeQpkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBh
cnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvYmxhbmtfd3NoLnB5IGIvV2Vi
S2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVz
dGRhdGEvaGFuZGxlcnMvYmxhbmtfd3NoLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjdmODdjNmFmMjNkZjA4ZWZl
MzU3NWNhZTIwOGRlNTAyMmNiYWE2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5k
bGVycy9ibGFua193c2gucHkKQEAgLTAsMCArMSwzMSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
IyBpbnRlbnRpb25hbGx5IGxlZnQgYmxhbmsKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJz
L29yaWdpbl9jaGVja193c2gucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJk
cGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3No
LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjJjMTM5ZmExNzZjYzM0MTdiZTk2ZGU3OThlNmE4MWVkMTQ5YjE5OTIK
LS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9vcmlnaW5fY2hlY2tfd3NoLnB5
CkBAIC0wLDAgKzEsNDIgQEAKKyMgQ29weXJpZ2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoK
KyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCisKK2RlZiB3ZWJfc29ja2V0X2Rv
X2V4dHJhX2hhbmRzaGFrZShyZXF1ZXN0KToKKyAgICBpZiByZXF1ZXN0LndzX29yaWdpbiA9PSAn
aHR0cDovL2V4YW1wbGUuY29tJzoKKyAgICAgICAgcmV0dXJuCisgICAgcmFpc2UgVmFsdWVFcnJv
cignVW5hY2NlcHRhYmxlIG9yaWdpbjogJXInICUgcmVxdWVzdC53c19vcmlnaW4pCisKKworZGVm
IHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0KToKKyAgICByZXF1ZXN0LmNvbm5lY3Rp
b24ud3JpdGUoJ29yaWdpbl9jaGVja193c2gucHkgaXMgY2FsbGVkIGZvciAlcywgJXMnICUKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qu
d3NfcHJvdG9jb2wpKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRh
dGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkgYi9XZWJLaXRUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9o
YW5kbGVycy9zdWIvZXhjZXB0aW9uX2luX3RyYW5zZmVyX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iOTgy
ZDAyMzFlZjAwZjAyZTBkOTBkZjY3OGViODA0YmE0Mzg2MmQ5Ci0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL2V4Y2VwdGlvbl9pbl90cmFuc2Zlcl93c2gucHkKQEAgLTAs
MCArMSw0NCBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRp
c3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3Ig
dGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBv
ciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJB
UyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMg
U1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKworIiIiRXhjZXB0aW9uIGluIHdlYl9zb2Nr
ZXRfdHJhbnNmZXJfZGF0YSgpLgorIiIiCisKKworZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFu
ZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKworCitkZWYgd2ViX3NvY2tldF90cmFuc2Zlcl9k
YXRhKHJlcXVlc3QpOgorICAgIHJhaXNlIEV4Y2VwdGlvbignSW50ZW50aW9uYWwgRXhjZXB0aW9u
IGZvciAlcywgJXMnICUKKyAgICAgICAgICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVzb3VyY2Us
IHJlcXVlc3Qud3NfcHJvdG9jb2wpKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0
IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rl
c3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5IGIvV2ViS2l0VG9v
bHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEv
aGFuZGxlcnMvc3ViL25vX3dzaF9hdF90aGVfZW5kLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3ZTdiZTE4MDJl
M2M2NmM2Mzg0OTg3NWVhMzVlMjQwNmEzODFlNjAKLS0tIC9kZXYvbnVsbAorKysgYi9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9zdWIvbm9fd3NoX2F0X3RoZV9lbmQucHkKQEAgLTAsMCArMSw0NSBAQAorIyBD
b3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMg
ICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0
cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Ig
d3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRI
RSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlU
RUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisj
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisKKworIiIiQ29ycmVjdCBzaWduYXR1cmVzLCB3cm9uZyBmaWxlIG5hbWUu
CisiIiIKKworCitkZWYgd2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6Cisg
ICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAg
cmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKAorICAgICAgICAgICAgJ3N1Yi9ub193c2hfYXRfdGhl
X2VuZC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQorICAgICAgICAgICAgKHJlcXVlc3Qud3Nf
cmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApk
aWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vi
c29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkgYi9X
ZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90
ZXN0ZGF0YS9oYW5kbGVycy9zdWIvbm9uX2NhbGxhYmxlX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yNjM1
MmViNGNhMjM4OTUyMjM5ZTM1NDI3MjhjZTNiMzhkODNkZDZiCi0tLSAvZGV2L251bGwKKysrIGIv
V2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3Qv
dGVzdGRhdGEvaGFuZGxlcnMvc3ViL25vbl9jYWxsYWJsZV93c2gucHkKQEAgLTAsMCArMSwzOSBA
QAorIyBDb3B5cmlnaHQgMjAwOSwgR29vZ2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMKKyMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUKKyMgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlv
bi4KKyMgICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVz
IG9mIGl0cworIyBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMg
cHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5E
IEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisj
IExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUgorIyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAor
IyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwKKyMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElO
RyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFCisjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuCisKKworIiIiTm9uLWNhbGxhYmxlIGhhbmRsZXJzLgorIiIiCisK
Kword2ViX3NvY2tldF9kb19leHRyYV9oYW5kc2hha2UgPSBUcnVlCit3ZWJfc29ja2V0X3RyYW5z
ZmVyX2RhdGEgPSAxCisKKworIyB2aTpzdHM9NCBzdz00IGV0CmRpZmYgLS1naXQgYS9XZWJLaXRU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0
YS9oYW5kbGVycy9zdWIvcGxhaW5fd3NoLnB5IGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWlu
X3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kYjNmZjY5MzAyNTZiYzFiMTNlMmM0YzJkMWM4NDNjNGI3Yzgw
YWE0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGly
ZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3BsYWluX3dzaC5w
eQpAQCAtMCwwICsxLDQwIEBACisjIENvcHlyaWdodCAyMDA5LCBHb29nbGUgSW5jLgorIyBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorIyBtZXQ6
CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisjIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJ
bmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBl
bmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisjIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRP
UlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisjIE9XTkVSIE9S
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKKyMgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworCitkZWYgd2ViX3NvY2tldF9k
b19leHRyYV9oYW5kc2hha2UocmVxdWVzdCk6CisgICAgcGFzcworCisKK2RlZiB3ZWJfc29ja2V0
X3RyYW5zZmVyX2RhdGEocmVxdWVzdCk6CisgICAgcmVxdWVzdC5jb25uZWN0aW9uLndyaXRlKCdz
dWIvcGxhaW5fd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIChyZXF1ZXN0LndzX3Jlc291cmNlLCByZXF1ZXN0LndzX3Byb3RvY29sKSkK
KworCisjIHZpOnN0cz00IHN3PTQgZXQKZGlmZiAtLWdpdCBhL1dlYktpdFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1
Yi93cm9uZ19oYW5kc2hha2Vfc2lnX3dzaC5weSBiL1dlYktpdFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdGhpcmRwYXJ0eS9weXdlYnNvY2tldC90ZXN0L3Rlc3RkYXRhL2hhbmRsZXJzL3N1Yi93cm9u
Z19oYW5kc2hha2Vfc2lnX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YmY2NTliYzlhZjAxYzEwN2VmMzUw
OGIyYjVkMDE3M2RjZjU5MDA5Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0
cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMv
c3ViL3dyb25nX2hhbmRzaGFrZV9zaWdfd3NoLnB5CkBAIC0wLDAgKzEsNDUgQEAKKyMgQ29weXJp
Z2h0IDIwMDksIEdvb2dsZSBJbmMuCisjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
IyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisjIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAq
IE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMg
Y29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBk
ZXJpdmVkIGZyb20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0
ZW4gcGVybWlzc2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09Q
WVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRP
LCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IKKyMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsCisjIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorCisKKyIiIldyb25nIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlIHNpZ25h
dHVyZS4KKyIiIgorCisKK2RlZiBub193ZWJfc29ja2V0X2RvX2V4dHJhX2hhbmRzaGFrZShyZXF1
ZXN0KToKKyAgICBwYXNzCisKKworZGVmIHdlYl9zb2NrZXRfdHJhbnNmZXJfZGF0YShyZXF1ZXN0
KToKKyAgICByZXF1ZXN0LmNvbm5lY3Rpb24ud3JpdGUoCisgICAgICAgICAgICAnc3ViL3dyb25n
X2hhbmRzaGFrZV9zaWdfd3NoLnB5IGlzIGNhbGxlZCBmb3IgJXMsICVzJyAlCisgICAgICAgICAg
ICAgKHJlcXVlc3Qud3NfcmVzb3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQorCisKKyMgdmk6
c3RzPTQgc3c9NCBldApkaWZmIC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3Ry
YW5zZmVyX3NpZ193c2gucHkgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5L3RoaXJkcGFy
dHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oYW5kbGVycy9zdWIvd3JvbmdfdHJhbnNmZXJf
c2lnX3dzaC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMGUyZTU1MDc5NGI3Yjk5MGUwYjQ0YjMzY2ZjMmQ0ZDE1
MmU2YzA0Ci0tLSAvZGV2L251bGwKKysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90
aGlyZHBhcnR5L3B5d2Vic29ja2V0L3Rlc3QvdGVzdGRhdGEvaGFuZGxlcnMvc3ViL3dyb25nX3Ry
YW5zZmVyX3NpZ193c2gucHkKQEAgLTAsMCArMSw0NSBAQAorIyBDb3B5cmlnaHQgMjAwOSwgR29v
Z2xlIEluYy4KKyMgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMKKyMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKKyMgbWV0OgorIworIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorIyBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisjICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyMgY29w
eXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lcgorIyBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlCisjIGRpc3RyaWJ1dGlvbi4KKyMgICAgICogTmVpdGhlciB0aGUg
bmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworIyBjb250cmlidXRvcnMg
bWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQor
IyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9u
LgorIworIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVS
UyBBTkQgQ09OVFJJQlVUT1JTCisjICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorIyBBIFBBUlRJ
Q1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlS
SUdIVAorIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyMgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZCisjIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisjIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKwor
IiIiV3Jvbmcgd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKCkgc2lnbmF0dXJlLgorIiIiCisKKwor
ZGVmIHdlYl9zb2NrZXRfZG9fZXh0cmFfaGFuZHNoYWtlKHJlcXVlc3QpOgorICAgIHBhc3MKKwor
CitkZWYgbm9fd2ViX3NvY2tldF90cmFuc2Zlcl9kYXRhKHJlcXVlc3QpOgorICAgIHJlcXVlc3Qu
Y29ubmVjdGlvbi53cml0ZSgKKyAgICAgICAgICAgICdzdWIvd3JvbmdfdHJhbnNmZXJfc2lnX3dz
aC5weSBpcyBjYWxsZWQgZm9yICVzLCAlcycgJQorICAgICAgICAgICAgKHJlcXVlc3Qud3NfcmVz
b3VyY2UsIHJlcXVlc3Qud3NfcHJvdG9jb2wpKQorCisKKyMgdmk6c3RzPTQgc3c9NCBldApkaWZm
IC0tZ2l0IGEvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29j
a2V0L3Rlc3QvdGVzdGRhdGEvaGVsbG8ucGwgYi9XZWJLaXRUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3RoaXJkcGFydHkvcHl3ZWJzb2NrZXQvdGVzdC90ZXN0ZGF0YS9oZWxsby5wbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li45ZGQwMWI0YWQ4MWM3YmY2NzRhYmM1NmNmMDgzYWNhOGUxNmZiZDY1Ci0tLSAvZGV2L251bGwK
KysrIGIvV2ViS2l0VG9vbHMvU2NyaXB0cy93ZWJraXRweS90aGlyZHBhcnR5L3B5d2Vic29ja2V0
L3Rlc3QvdGVzdGRhdGEvaGVsbG8ucGwKQEAgLTAsMCArMSwyIEBACisjIS91c3IvYmluL3Blcmwg
LXdUCitwcmludCAiSGVsbG9cbiI7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>