<?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>122312</bug_id>
          
          <creation_ts>2013-10-03 20:56:08 -0700</creation_ts>
          <short_desc>Remove Qt features from build and test tools</short_desc>
          <delta_ts>2013-10-04 11:24:18 -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>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>hugo.lima</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>936087</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-03 20:56:08 -0700</bug_when>
    <thetext>Remove the Qt-specific logic in our build scripts and test tools</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936088</commentid>
    <comment_count>1</comment_count>
      <attachid>213328</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-03 21:01:09 -0700</bug_when>
    <thetext>Created attachment 213328
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936211</commentid>
    <comment_count>2</comment_count>
      <attachid>213328</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-04 09:12:50 -0700</bug_when>
    <thetext>Comment on attachment 213328
Patch

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

&gt; Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:147
&gt;              &apos;LayoutTests/platform/mac&apos;: &apos;5&apos;,

rniwa: should this be renumbered to &apos;4&apos;?

&gt; Tools/Scripts/webkitpy/common/checkout/baselineoptimizer_unittest.py:150
&gt;              &apos;LayoutTests/platform/mac&apos;: &apos;5&apos;,

rniwa: ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936222</commentid>
    <comment_count>3</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-10-04 10:01:58 -0700</bug_when>
    <thetext>&gt; rniwa: should this be renumbered to &apos;4&apos;?

These are tests, did you try running them?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936223</commentid>
    <comment_count>4</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-04 10:08:29 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; rniwa: should this be renumbered to &apos;4&apos;?
&gt; 
&gt; These are tests, did you try running them?

I thought they got run as part of run-webkit-tests, but running &quot;test-webkitpy&quot; I see a few errors.  I&apos;ll fix and upload a new patch.

Thanks for the suggestion!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936226</commentid>
    <comment_count>5</comment_count>
      <attachid>213370</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-04 10:16:05 -0700</bug_when>
    <thetext>Created attachment 213370
Revised to pass all script tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936227</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-04 10:17:24 -0700</bug_when>
    <thetext>The patch passes all tests, but I&apos;m still not convinced that the code in &quot;baselineoptimizer_unittest.py&quot; is correct. I feel like the numbers should be reordered to be consecutive.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936233</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-10-04 10:32:12 -0700</bug_when>
    <thetext>The code in baselineoptimizer_unittest.py is, at best, a bit strange. I don&apos;t think it tests what Ojan thought it did (nor did he, once I got him to look at it again), and I eventually rewrote the Blink version almost completely to use a mock filesystem; it ended up shorter and much clearer. 

I don&apos;t think you can just copy the Blink version over, though, since the fallback graph is now pretty different between WebKit and Blink, but you might take a look at it at some point and adapt it instead. 

The numbers don&apos;t need to be consecutive, just different (to indicate which results should match and which shouldn&apos;t). You might find having them be consecutive makes things at least clearer, though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936237</commentid>
    <comment_count>8</comment_count>
      <attachid>213375</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2013-10-04 10:40:51 -0700</bug_when>
    <thetext>Created attachment 213375
Modified based on dpranke&apos;s comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936239</commentid>
    <comment_count>9</comment_count>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2013-10-04 10:43:53 -0700</bug_when>
    <thetext>*** Bug 122330 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936242</commentid>
    <comment_count>10</comment_count>
    <who name="Hugo Parente Lima">hugo.lima</who>
    <bug_when>2013-10-04 10:48:56 -0700</bug_when>
    <thetext>After this patch I think nobody will be using old-run-webkit-tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936247</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2013-10-04 10:56:25 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; After this patch I think nobody will be using old-run-webkit-tests.

I think Apple is still using ORWT internally for the iOS port, unless something has changed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936260</commentid>
    <comment_count>12</comment_count>
      <attachid>213375</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-04 11:18:56 -0700</bug_when>
    <thetext>Comment on attachment 213375
Modified based on dpranke&apos;s comments.

Clearing flags on attachment: 213375

Committed r156895: &lt;http://trac.webkit.org/changeset/156895&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936261</commentid>
    <comment_count>13</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2013-10-04 11:18:58 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>936264</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-04 11:24:18 -0700</bug_when>
    <thetext>We should just get rid of the baseline optimizer.  It&apos;s already broken.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213328</attachid>
            <date>2013-10-03 21:01:09 -0700</date>
            <delta_ts>2013-10-04 10:16:03 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122312-20131003210109.patch</filename>
            <type>text/plain</type>
            <size>112757</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc5IEBACisyMDEzLTEwLTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBRdCBmZWF0dXJlcyBmcm9tIGJ1aWxkIGFuZCB0ZXN0IHRvb2xz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzMTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvYnVpbGQtZHVtcHJlbmRlcnRyZWU6CisgICAgICAgICogU2NyaXB0cy9idWlsZC1qc2M6Cisg
ICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisgICAgICAgICogU2NyaXB0cy9idWlsZC13
ZWJraXR0ZXN0cnVubmVyOgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6
CisgICAgICAgIChvcGVuRHVtcFRvb2wpOgorICAgICAgICAoYnVpbGRQbGF0Zm9ybVJlc3VsdEhp
ZXJhcmNoeSk6CisgICAgICAgIChidWlsZFBsYXRmb3JtVGVzdEhpZXJhcmNoeSk6CisgICAgICAg
IChyZWFkU2tpcHBlZEZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1sYXVuY2hlcjoKKyAg
ICAgICAgKiBTY3JpcHRzL3J1bi1xdHdlYmtpdC10ZXN0czogUmVtb3ZlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6CisgICAgICAgICh1c2VOZXdSdW5XZWJLaXRUZXN0cyk6
CisgICAgICAgICogU2NyaXB0cy91cGRhdGUtd2Via2l0OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0LWJ1aWxkLWRpcmVjdG9yeToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdGRpcnMucG06Cisg
ICAgICAgIChhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKToKKyAgICAgICAgKGpzY1Byb2R1Y3RE
aXIpOgorICAgICAgICAoYnVpbHREeWxpYlBhdGhGb3JOYW1lKToKKyAgICAgICAgKGlzQXBwbGVX
ZWJLaXQpOgorICAgICAgICAobGF1bmNoZXJQYXRoKToKKyAgICAgICAgKGxhdW5jaGVyTmFtZSk6
CisgICAgICAgIChjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmlnKToKKyAgICAgICAgKHNldHVwQ3ln
d2luRW52KToKKyAgICAgICAgKGNvcHlJbnNwZWN0b3JGcm9udGVuZEZpbGVzKToKKyAgICAgICAg
KHNldFBhdGhGb3JSdW5uaW5nV2ViS2l0QXBwKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5weToK
KyAgICAgICAgKEJhc2VsaW5lT3B0aW1pemVyVGVzdC50ZXN0X21hY19mdXR1cmUpOgorICAgICAg
ICAoQmFzZWxpbmVPcHRpbWl6ZXJUZXN0LnRlc3Rfd2luX2RvZXNfbm90X2Ryb3BfdG9fd2luXzdz
cDApOgorICAgICAgICAoQmFzZWxpbmVPcHRpbWl6ZXJUZXN0LnRlc3RfY29tbW9uX2RpcmVjdG9y
eV9pbmNsdWRlc19yb290KToKKyAgICAgICAgKEJhc2VsaW5lT3B0aW1pemVyVGVzdC50ZXN0X3Zp
cnR1YWxfcG9ydHNfZmlsdGVyZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weToKKyAgICAgICAgKHRlc3RfcGFyc2VfcmV2
aWV3ZXJfdGV4dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dh
dGNobGlzdDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToKKyAgICAgICAgKFBvcnRUZXN0LmRpc2FibGVk
X3Rlc3RfY2hyb21pdW1fbWFjX2xpb25faW5fdGVzdF9zaGVsbF9tb2RlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoUG9ydC5fcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKToKKyAgICAgICAgKFBvcnQuX3dr
Ml9wb3J0X25hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9idWlsZGVycy5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAg
KHBsYXRmb3JtX29wdGlvbnMpOgorICAgICAgICAoUG9ydEZhY3RvcnkpOgorICAgICAgICAoUG9y
dEZhY3RvcnkuX2RlZmF1bHRfcG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X2d0ayk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5OiBSZW1vdmVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoR2xvYmFsVmFyaWFi
bGVzVGVzdC50ZXN0X3BhdGhfcnVsZXNfc3BlY2lmaWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5OgorICAgICAgICAoQ01ha2VDaGVja2VyKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAg
ICAgKF9jbGFzc2lmeV9pbmNsdWRlKToKKyAgICAgICAgKGNoZWNrX2luY2x1ZGVfbGluZSk6Cisg
ICAgICAgIChjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAoT3JkZXJPZkluY2x1ZGVzVGVzdC50ZXN0X2NsYXNzaWZ5X2luY2x1ZGUpOgorICAgICAgICAo
V2ViS2l0U3R5bGVUZXN0LnRlc3RfbmFtZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChU
ZXN0RXhwZWN0YXRpb25zVGVzdENhc2UudGVzdF9kZXRlcm1pbmVfcG9ydF9mcm9tX2V4cGVjdGF0
aW9uc19wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZV91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lVGVzdC50ZXN0X2Jh
c2VsaW5lX2RpcmVjdG9yeSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL21haW4u
cHk6CisgICAgICAgIChXZWJLaXRQYXRjaCk6CisKIDIwMTMtMTAtMDMgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFF0IGJ1aWxkZXJzIGZyb20gdGhl
IGZsYWtpbmVzcyBkYXNoYm9hcmQuCkluZGV4OiBUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5k
ZXJ0cmVlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUJ
KHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL3BlcmwgLXcKIAotIyBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw2IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29w
dGlvbnNdIFtvcHRpb25zIHQKICAgLS1oZWxwICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdl
CiAgIC0tY2xlYW4gICAgICAgQ2xlYW4gdXAgdGhlIGJ1aWxkIGRpcmVjdG9yeQogICAtLWd0ayAg
ICAgICAgIEJ1aWxkIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICBCdWlsZCB0aGUgUXQg
cG9ydAogICAtLWVmbCAgICAgICAgIEJ1aWxkIHRoZSBFRkwgcG9ydAogRU9GCiAKQEAgLTcwLDgg
KzY5LDggQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogfSBlbHNpZiAoaXNBcHBsZVdpbldl
YktpdCgpKSB7CiAgICAgbXkgJGRydFNvbHV0aW9uUGF0aCA9ICJEdW1wUmVuZGVyVHJlZS52Y3hw
cm9qL0R1bXBSZW5kZXJUcmVlLnNsbiI7CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlzdWFsU3R1ZGlv
UHJvamVjdCgkZHJ0U29sdXRpb25QYXRoLCAkY2xlYW4pOwotfSBlbHNpZiAoaXNRdCgpIHx8IGlz
R3RrKCkgfHwgaXNFZmwoKSkgewotICAgICMgUXQsIEd0ayBhbmQgRUZMIGJ1aWxkIGV2ZXJ5dGhp
bmcgaW4gb25lIHNob3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KK30gZWxzaWYg
KGlzR3RrKCkgfHwgaXNFZmwoKSkgeworICAgICMgR3RrIGFuZCBFRkwgYnVpbGQgZXZlcnl0aGlu
ZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1
bHQgPSAwOwogfSBlbHNlIHsKICAgICBkaWUgIkJ1aWxkaW5nIG5vdCBkZWZpbmVkIGZvciB0aGlz
IHBsYXRmb3JtIVxuIjsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvYnVpbGQtanNjCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtanNjCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9T
Y3JpcHRzL2J1aWxkLWpzYwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9i
aW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDEzIEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDcg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02NCwxNSAr
NjQsNyBAQCBjaGRpcldlYktpdCgpOwogbXkgQG9wdGlvbnMgPSBYY29kZU9wdGlvbnMoKTsKIG15
IEBjb3ZlcmFnZVN1cHBvcnRPcHRpb25zID0gKCRjb3ZlcmFnZVN1cHBvcnQpID8gWGNvZGVDb3Zl
cmFnZVN1cHBvcnRPcHRpb25zKCkgOiAoKTsKIAotaWYgKGlzUXQoKSkgewotICAgIGNoZWNrRm9y
QXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1xdCIpOwotICAgIG15IEBwcm9qZWN0cyA9ICgi
V1RGIiwgIkphdmFTY3JpcHRDb3JlIik7Ci0gICAgIyBQaWNrIHVwIHRoZSAtLW5vLXdlYmtpdDIg
b3B0aW9uIGZyb20gQlVJTERfV0VCS0lUX0FSR1MgaWYgaXQgaXMgbmVlZGVkCi0gICAgcHVzaCBA
QVJHViwgc3BsaXQoLyAvLCAkRU5WeydCVUlMRF9XRUJLSVRfQVJHUyd9KSBpZiAoJEVOVnsnQlVJ
TERfV0VCS0lUX0FSR1MnfSk7Ci0gICAgcHVzaCBAQVJHViwgIldFQktJVF9DT05GSUctPWJ1aWxk
X3dlYmtpdDIiIGlmIGNoZWNrRm9yQXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1uby13ZWJr
aXQyIik7Ci0gICAgbXkgJHJlc3VsdCA9IGJ1aWxkUU1ha2VQcm9qZWN0cyhcQHByb2plY3RzLCAw
LCBAQVJHVik7Ci0gICAgZXhpdCBleGl0U3RhdHVzKCRyZXN1bHQpOwotfSBlbHNpZiAoY21ha2VC
YXNlZFBvcnROYW1lKCkpIHsKK2lmIChjbWFrZUJhc2VkUG9ydE5hbWUoKSkgewogICAgIGJ1aWxk
Q01ha2VQcm9qZWN0T3JFeGl0KDAsIGNtYWtlQmFzZWRQb3J0TmFtZSgpLCB1bmRlZiwgImpzYyIs
IGNtYWtlQmFzZWRQb3J0QXJndW1lbnRzKCkpOyAjIFRoaXMgY2FsbCBvbmx5IHJldHVybnMgaWYg
bm90aGluZyB3cm9uZyBoYXBwZW5lZAogICAgIGV4aXQgZXhpdFN0YXR1cygwKTsKIH0KSW5kZXg6
IFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vcGVybCAtdwog
Ci0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgbW9pamktbW9i
aWxlLmNvbSBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NSwyOCArNjUs
NiBAQCBteSAkc3RhcnRUaW1lID0gdGltZSgpOwogCiBteSBAZmVhdHVyZXMgPSBnZXRGZWF0dXJl
T3B0aW9uTGlzdCgpOwogCi0jIFVwZGF0ZSBkZWZhdWx0cyBmcm9tIFF0J3MgcHJvamVjdCBmaWxl
Ci1pZiAoaXNRdCgpKSB7Ci0gICAgIyBUYWtlIGEgc25lZWsgcGVlayBhdCB0aGUgYXJndW1lbnRz
LCBzaW5jZSB3ZSB3aWxsIG5lZWQgdGhlIHFtYWtlIGJpbmFyeSBlYXJseQotICAgICMgb24gdG8g
ZG8gcHJvZmlsZSBwYXJzaW5nLiBXZSBhbHNvIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBzaG93aW5n
IHRoZSBoZWxwLXRleHQuCi0gICAgZm9yZWFjaCAoQEFSR1YpIHsKLSAgICAgICAgaWYgKC9eLS1x
bWFrZT0oLiopLykgewotICAgICAgICAgICAgc2V0UW1ha2VCaW5hcnlQYXRoKCQxKTsKLSAgICAg
ICAgfSBlbHNpZiAoL14tLWhlbHAkLykgewotICAgICAgICAgICAgJHNob3dIZWxwID0gMTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIG15ICVxdERlZmF1bHRzOwotICAgIGlmICgkc2hvd0hlbHAp
IHsKLSAgICAgICAgJXF0RGVmYXVsdHMgPSBxdEZlYXR1cmVEZWZhdWx0cygpOwotICAgIH0KLQot
ICAgIGZvcmVhY2ggKEBmZWF0dXJlcykgewotICAgICAgICAkXy0+e2RlZmF1bHR9ID0gKCVxdERl
ZmF1bHRzID8gJHF0RGVmYXVsdHN7JF8tPntkZWZpbmV9fSB8fCAwIDogLTEpOwotICAgIH0KLX0K
LQogIyBBZGRpdGlvbmFsIGVudmlyb25tZW50IHBhcmFtZXRlcnMKIHB1c2ggQEFSR1YsIHNwbGl0
KC8gLywgJEVOVnsnQlVJTERfV0VCS0lUX0FSR1MnfSkgaWYgKCRFTlZ7J0JVSUxEX1dFQktJVF9B
UkdTJ30pOwogCkBAIC0xMTcsMjQgKzk1LDE5IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlv
bnNdIFtvcHRpb25zIHQKICAgLS1ibGFja2JlcnJ5ICAgICAgICAgICAgICAgICAgICAgIEJ1aWxk
IHRoZSBCbGFja0JlcnJ5IHBvcnQgb24gTWFjL0xpbnV4CiAgIC0tZWZsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWlsZCB0aGUgRUZMIHBvcnQKICAgLS1ndGsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1aWxkIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1aWxkIHRoZSBRdCBwb3J0CiAgIC0td2luY2Fpcm8gICAgICAgICAgICAg
ICAgICAgICAgICBCdWlsZCB1c2luZyBDYWlybyAocmF0aGVyIHRoYW4gQ29yZUdyYXBoaWNzKSBv
biBXaW5kb3dzCiAgIC0td2luY2UgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUg
V2luQ0UgcG9ydAogCiAgIC0taW5zcGVjdG9yLWZyb250ZW5kICAgICAgICAgICAgICBDb3B5IGNo
YW5nZXMgdG8gdGhlIGluc3BlY3RvciBmcm9udC1lbmQgZmlsZXMgdG8gdGhlIGJ1aWxkIGRpcmVj
dG9yeQogCi0gIC0taW5zdGFsbC1oZWFkZXJzPTxwYXRoPiAgICAgICAgICBTZXQgaW5zdGFsbGF0
aW9uIHBhdGggZm9yIHRoZSBoZWFkZXJzIChRdCBvbmx5KQotICAtLWluc3RhbGwtbGlicz08cGF0
aD4gICAgICAgICAgICAgU2V0IGluc3RhbGxhdGlvbiBwYXRoIGZvciB0aGUgbGlicmFyaWVzIChR
dCBvbmx5KQotCiAgIC0tcHJlZml4PTxwYXRoPiAgICAgICAgICAgICAgICAgICBTZXQgaW5zdGFs
bGF0aW9uIHByZWZpeCB0byB0aGUgZ2l2ZW4gcGF0aCAoR3RrL0VmbC9CbGFja0JlcnJ5IG9ubHkp
CiAgIC0tbWFrZWFyZ3M9PGFyZ3VtZW50cz4gICAgICAgICAgICBPcHRpb25hbCBNYWtlZmlsZSBm
bGFncwotICAtLXFtYWtlYXJnPTxhcmd1bWVudHM+ICAgICAgICAgICAgT3B0aW9uYWwgcW1ha2Ug
ZmxhZ3MgKFF0IG9ubHksIGUuZy4gLS1xbWFrZWFyZz0iQ09ORklHKz13ZWJraXQyIiB0byBidWls
ZCBXZWJLaXQyKQogICAtLWNtYWtlYXJncz08YXJndW1lbnRzPiAgICAgICAgICAgT3B0aW9uYWwg
Q01ha2UgZmxhZ3MgKGUuZy4gLS1jbWFrZWFyZ3M9Ii1ERk9PPWJhciAtRENNQUtFX1BSRUZJWF9Q
QVRIPS91c3IvbG9jYWwiKQogCiAgIC0tbWluaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICBO
byBvcHRpb25hbCBmZWF0dXJlcywgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZAogCiAgIC0tb25s
eS13ZWJraXQgICAgICAgICAgICAgICAgICAgICBCdWlsZCBvbmx5IHRoZSBXZWJLaXQgcHJvamVj
dAotICAtLW5vLXdlYmtpdDEgICAgICAgICAgICAgICAgICAgICAgT21pdCBXZWJLaXQxIGNvZGUg
ZnJvbSB0aGUgYnVpbGQgKFF0L0VGTC9HVEsgb25seSkKKyAgLS1uby13ZWJraXQxICAgICAgICAg
ICAgICAgICAgICAgIE9taXQgV2ViS2l0MSBjb2RlIGZyb20gdGhlIGJ1aWxkIChFRkwvR1RLIG9u
bHkpCiAgIC0tbm8td2Via2l0MiAgICAgICAgICAgICAgICAgICAgICBPbWl0IFdlYktpdDIgY29k
ZSBmcm9tIHRoZSBidWlsZAogCiBFT0YKQEAgLTE3Myw5ICsxNDYsNiBAQCBzZXRDb25maWd1cmF0
aW9uKCk7CiAKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogCi0jIFJlbW92ZSAwIGJ5
dGUgc2l6ZWQgZmlsZXMgZnJvbSBwcm9kdWN0RGlyIGFmdGVyIHNsYXZlIGxvc3QgZm9yIFF0IGJ1
aWxkYm90cy4KLUZpbGU6OkZpbmQ6OmZpbmQoXCZ1bmxpbmtaZXJvRmlsZXMsICRwcm9kdWN0RGly
KSBpZiAoaXNRdCgpICYmIC1lICRwcm9kdWN0RGlyKTsKLQogc3ViIHVubGlua1plcm9GaWxlcygp
CiB7CiAgICAgbXkgJGZpbGUgPSAkRmlsZTo6RmluZDo6bmFtZTsKQEAgLTIwMCw3ICsxNzAsNyBA
QCBmb3IgbXkgJGRpciAoQHByb2plY3RzKSB7CiAgICAgfQogfQogCi1pZiAoIWlzUXQoKSAmJiAh
LWQgIldlYktpdExpYnJhcmllcyIpIHsKK2lmICghLWQgIldlYktpdExpYnJhcmllcyIpIHsKICAg
ICBkaWUgIkVycm9yOiBObyBXZWJLaXRMaWJyYXJpZXMgZGlyZWN0b3J5IGZvdW5kLiBQbGVhc2Ug
ZG8gYSBmcmVzaCBjaGVja291dC5cbiI7CiB9CiAKQEAgLTI0MywyNiArMjEzLDYgQEAgaWYgKGlz
QXBwbGVNYWNXZWJLaXQoKSkgewogICAgICMgQ29weSBXZWJLaXRTdXBwb3J0TGlicmFyeSB0byB0
aGUgY29ycmVjdCBsb2NhdGlvbiBpbiBXZWJLaXRMaWJyYXJpZXMgc28gaXQgY2FuIGJlIGZvdW5k
LgogICAgICMgV2lsbCBmYWlsIGlmIFdlYktpdFN1cHBvcnRMaWJyYXJ5LnppcCBpcyBub3QgaW4g
c291cmNlIHJvb3QuCiAgICAgKHN5c3RlbSgicGVybCBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJr
aXQtc3VwcG9ydC1saWJzIikgPT0gMCkgb3IgZGllOwotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAg
cHVzaCBAb3B0aW9ucywgIi0taW5zdGFsbC1oZWFkZXJzPSIgLiAkaW5zdGFsbEhlYWRlcnMgaWYg
ZGVmaW5lZCgkaW5zdGFsbEhlYWRlcnMpOwotICAgIHB1c2ggQG9wdGlvbnMsICItLWluc3RhbGwt
bGlicz0iIC4gJGluc3RhbGxMaWJzIGlmIGRlZmluZWQoJGluc3RhbGxMaWJzKTsKLSAgICBwdXNo
IEBvcHRpb25zLCAiLS1tYWtlYXJncz0iIC4gJG1ha2VBcmdzIGlmICRtYWtlQXJnczsKLSAgICBw
dXNoIEBvcHRpb25zLCAiV0VCS0lUX0NPTkZJRy09YnVpbGRfd2Via2l0MSIgaWYgJG5vV2ViS2l0
MTsKLSAgICBwdXNoIEBvcHRpb25zLCAiV0VCS0lUX0NPTkZJRy09YnVpbGRfd2Via2l0MiIgaWYg
JG5vV2ViS2l0MjsKLQotICAgIGlmIChjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1Yo
Ii0yIikpIHsKLSAgICAgICAgcHJpbnQgIk5vdGU6IFdlYktpdDIgaXMgbm93IGJ1aWx0IGJ5IGRl
ZmF1bHQsIHlvdSBkb24ndCBuZWVkIHRvIHBhc3MgLTIuIERpc2FibGUgdXNpbmcgLS1uby13ZWJr
aXQyXG4iOwotICAgIH0KLQotICAgIEBvcHRpb25zID0gKEBBUkdWLCBAb3B0aW9ucyk7Ci0KLSAg
ICBmb3JlYWNoIChAZmVhdHVyZXMpIHsKLSAgICAgICAgaWYgKCRfLT57ZGVmaW5lfSAmJiAkeyRf
LT57dmFsdWV9fSAhPSAkXy0+e2RlZmF1bHR9KSB7Ci0gICAgICAgICAgICBteSAkZGVmaW5lID0g
bGMoJF8tPntkZWZpbmV9KTsKLSAgICAgICAgICAgICRkZWZpbmUgPX4gcy9eZW5hYmxlXy8vOwot
ICAgICAgICAgICAgcHVzaCBAb3B0aW9ucywgIldFQktJVF9DT05GSUciIC4gKCR7JF8tPnt2YWx1
ZX19ID09IDEgPyAiKyIgOiAiLSIpIC4gIj0iIC4gJGRlZmluZTsKLSAgICAgICAgfQotICAgIH0K
IH0KIAogIyBJZiBhc2tlZCB0byBidWlsZCBqdXN0IHRoZSBXZWJLaXQgcHJvamVjdCwgb3Zlcndy
aXRlIHRoZSBwcm9qZWN0cwpAQCAtMzA3LDEyICsyNTcsNiBAQCBpZiAoaXNCbGFja0JlcnJ5KCkp
IHsKICAgICBidWlsZENNYWtlUHJvamVjdE9yRXhpdCgkY2xlYW4sICJCbGFja0JlcnJ5IiwgJHBy
ZWZpeFBhdGgsICRtYWtlQXJncywgKGNtYWtlQmFzZWRQb3J0QXJndW1lbnRzKCksIGNNYWtlQXJn
c0Zyb21GZWF0dXJlcygpKSwgJGNtYWtlQXJncyk7CiB9CiAKLWlmIChpc1F0KCkpIHsKLSAgICBA
cHJvamVjdHMgPSAoKTsgIyBBbiBlbXB0eSBwcm9qZWN0cyBsaXN0IHdpbGwgYnVpbGQgdGhlIGRl
ZmF1bHQgcHJvamVjdHMKLSAgICAkcmVzdWx0ID0gYnVpbGRRTWFrZVByb2plY3RzKFxAcHJvamVj
dHMsICRjbGVhbiwgQG9wdGlvbnMpOwotICAgIGV4aXQgZXhpdFN0YXR1cygkcmVzdWx0KSBpZiBl
eGl0U3RhdHVzKCRyZXN1bHQpOwotfQotCiAjIEJ1aWxkLCBhbmQgYWJvcnQgaWYgdGhlIGJ1aWxk
IGZhaWxzLgogZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewogICAgIGNoZGlyICRkaXIgb3IgZGll
OwpJbmRleDogVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgkocmV2aXNpb24gMTU2ODc1
KQorKysgVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMgQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjMsOCArNjMsOCBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAg
ICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCJXZWJLaXRUZXN0UnVubmVyIiwgJGNsZWFu
LCBYY29kZU9wdGlvbnMoKSwgQEFSR1YpOwogfSBlbHNpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7
CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlzdWFsU3R1ZGlvUHJvamVjdCgiV2ViS2l0VGVzdFJ1bm5l
ci5zbG4iLCAkY2xlYW4pOwotfSBlbHNpZiAoaXNRdCgpIHx8IGlzR3RrKCkgfHwgaXNFZmwoKSkg
ewotICAgICMgUXQgYW5kIEdUSysgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVl
ZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgorfSBlbHNpZiAoaXNHdGsoKSB8fCBpc0VmbCgpKSB7
CisgICAgIyBHVEsrIGFuZCBFRkwgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVl
ZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1bHQgPSAwOwogfSBlbHNlIHsKICAg
ICBkaWUgIldlYktpdFRlc3RSdW5uZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt
LlxuIjsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkocmV2aXNpb24gMTU2ODc1
KQorKysgVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKLSMhL3Vzci9iaW4vcGVybAorIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMg
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkK
ICMgQ29weXJpZ2h0IChDKSAyMDA3IE1hdHQgTGlsZWsgKHBld3Rlcm1vb3NlQGdtYWlsLmNvbSkK
ICMgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CkBAIC0y
MzAsOCArMjMwLDYgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAgIH0gZWxzZSB7CiAg
ICAgICAgICRwbGF0Zm9ybSA9ICJtYWMiOwogICAgIH0KLX0gZWxzaWYgKGlzUXQoKSkgewotICAg
ICRwbGF0Zm9ybSA9ICJxdCI7CiB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAgJHBsYXRmb3JtID0g
Imd0ayI7CiB9IGVsc2lmIChpc1dpbkNhaXJvKCkpIHsKQEAgLTI0OCwxMiArMjQ2LDExIEBAIGlm
IChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKICAgICB9CiB9CiAKLWlmIChpc1F0KCkgfHwgaXNBcHBs
ZVdpbldlYktpdCgpKSB7CitpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgbXkgJHRlc3Rm
b250UGF0aCA9ICRFTlZ7IldFQktJVF9URVNURk9OVFMifTsKICAgICBpZiAoISR0ZXN0Zm9udFBh
dGggfHwgIS1kICIkdGVzdGZvbnRQYXRoIikgewogICAgICAgICBwcmludCAiVGhlIFdFQktJVF9U
RVNURk9OVFMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGRlZmluZWQgb3Igbm90IHNldCBw
cm9wZXJseVxuIjsKICAgICAgICAgcHJpbnQgIllvdSBtdXN0IHNldCBpdCBiZWZvcmUgcnVubmlu
ZyB0aGUgdGVzdHMuXG4iOwotICAgICAgICBwcmludCAiVXNlIGdpdCB0byBncmFiIHRoZSBhY3R1
YWwgZm9udHMgZnJvbSBodHRwOi8vZ2l0b3Jpb3VzLm9yZy9xdHdlYmtpdC90ZXN0Zm9udHNcbiI7
CiAgICAgICAgIGV4aXQgMTsKICAgICB9CiB9CkBAIC0zMTcsNyArMzE0LDcgQEAgVXNhZ2U6ICRw
cm9ncmFtTmFtZSBbb3B0aW9uc10gW3Rlc3RkaXJ8dAogICAtLVtuby1dc3RyaXAtZWRpdGluZy1j
YWxsYmFja3MgIFJlbW92ZSBlZGl0aW5nIGNhbGxiYWNrcyBmcm9tIGV4cGVjdGVkIHJlc3VsdHMK
ICAgLXR8LS10aHJlYWRlZCAgICAgICAgICAgICAgICAgICBSdW4gYSBjb25jdXJyZW50IEphdmFT
Y3JpcHQgdGhlYWQgd2l0aCBlYWNoIHRlc3QKICAgLS10aW1lb3V0IHQgICAgICAgICAgICAgICAg
ICAgICBTZXRzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgYSB0ZXN0IHRpbWVzIG91dCAo
ZGVmYXVsdDogJHRpbWVvdXRTZWNvbmRzKQotICAtLXZhbGdyaW5kICAgICAgICAgICAgICAgICAg
ICAgIFJ1biBEdW1wUmVuZGVyVHJlZSBpbnNpZGUgdmFsZ3JpbmQgKFF0L0xpbnV4IG9ubHkpCisg
IC0tdmFsZ3JpbmQgICAgICAgICAgICAgICAgICAgICAgUnVuIER1bXBSZW5kZXJUcmVlIGluc2lk
ZSB2YWxncmluZCAoTGludXggb25seSkKICAgLXZ8LS12ZXJib3NlICAgICAgICAgICAgICAgICAg
ICBNb3JlIHZlcmJvc2Ugb3V0cHV0IChvdmVycmlkZXMgLS1xdWlldCkKICAgLW18LS1tZXJnZS1s
ZWFrLWRlcHRoIGFyZyAgICAgICBNZXJnZXMgbGVhayBjYWxsU3RhY2tzIGFuZCBwcmludHMgdGhl
IG51bWJlciBvZiB1bmlxdWUgbGVha3MgYmVuZWF0aCBhIGNhbGxzdGFjayBkZXB0aCBvZiBhcmcu
ICBEZWZhdWx0cyB0byA1LgogICAtLXVzZS1yZW1vdGUtbGlua3MtdG8tdGVzdHMgICAgIExpbmsg
dG8gdGVzdCBmaWxlcyB3aXRoaW4gdGhlIFNWTiByZXBvc2l0b3J5IGluIHRoZSByZXN1bHRzLgpA
QCAtMzg5LDkgKzM4Niw2IEBAIGlmICgkdXNlV2ViS2l0VGVzdFJ1bm5lcikgewogICAgICAgICAk
c3RyaXBFZGl0aW5nQ2FsbGJhY2tzID0gMCB1bmxlc3MgZGVmaW5lZCAkc3RyaXBFZGl0aW5nQ2Fs
bGJhY2tzOwogICAgICAgICAkcmVhbFBsYXRmb3JtID0gJHBsYXRmb3JtOwogICAgICAgICAkcGxh
dGZvcm0gPSAid2luLXdrMiI7Ci0gICAgfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgICAgICRyZWFs
UGxhdGZvcm0gPSAkcGxhdGZvcm07Ci0gICAgICAgICRwbGF0Zm9ybSA9ICJxdC01LjAtd2syIjsK
ICAgICB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAgICAgICRyZWFsUGxhdGZvcm0gPSAkcGxhdGZv
cm07CiAgICAgICAgICRwbGF0Zm9ybSA9ICJndGstd2syIjsKQEAgLTQyMCw3ICs0MTQsNiBAQCAk
dXNlUmVtb3RlTGlua3NUb1Rlc3RzID0gMCBpZiBpc0d0aygpOwogCiBzZXRDb25maWd1cmF0aW9u
UHJvZHVjdERpcihDd2Q6OmFic19wYXRoKCRyb290KSkgaWYgKGRlZmluZWQoJHJvb3QpKTsKIG15
ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwotJHByb2R1Y3REaXIgLj0gIi9iaW4iIGlmIGlz
UXQoKTsKICRwcm9kdWN0RGlyIC49ICIvUHJvZ3JhbXMiIGlmIGlzR3RrKCk7CiAKICMgU2F2ZSB0
aGUgY3VycmVudCBkaXJlY3RvcnkgYmVmb3JlIGNoYWdpbmcgaXQgdmlhIGNoZGlyV2ViS2l0CkBA
IC0xMjA3LDE3ICsxMjAwLDYgQEAgbXkgQGNvbmZpZ3VyYXRpb25BcmdzID0gYXJndW1lbnRzRm9y
Q29uZgogaWYgKGlzR3RrKCkpIHsKICAgcHVzaChAY29uZmlndXJhdGlvbkFyZ3MsICctMicpIGlm
ICR1c2VXZWJLaXRUZXN0UnVubmVyOwogICBzeXN0ZW0gIlRvb2xzL1NjcmlwdHMvcnVuLWxhdW5j
aGVyIiwgQGNvbmZpZ3VyYXRpb25BcmdzLCAiZmlsZTovLyIuJHRlc3RSZXN1bHRzIGlmICRsYXVu
Y2hTYWZhcmk7Ci19IGVsc2lmIChpc1F0KCkpIHsKLSAgaWYgKGdldFF0VmVyc2lvbigpIGx0ICI1
LjAiKSB7Ci0gICAgdW5zaGlmdCBAY29uZmlndXJhdGlvbkFyZ3MsIHF3KC1zdHlsZSB3aW5kb3dz
KTsKLSAgICB1bnNoaWZ0IEBjb25maWd1cmF0aW9uQXJncywgcXcoLWdyYXBoaWNzc3lzdGVtIHJh
c3Rlcik7Ci0gIH0KLSAgaWYgKGlzQ3lnd2luKCkpIHsKLSAgICAkdGVzdFJlc3VsdHMgPSAiLyIg
LiB0b1dpbmRvd3NQYXRoKCR0ZXN0UmVzdWx0cyk7Ci0gICAgJHRlc3RSZXN1bHRzID1+IHMvXFwv
XC8vZzsKLSAgfQotICBwdXNoKEBjb25maWd1cmF0aW9uQXJncywgJy0yJykgaWYgJHVzZVdlYktp
dFRlc3RSdW5uZXI7Ci0gIHN5c3RlbSAiVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIiLCBAY29u
ZmlndXJhdGlvbkFyZ3MsICJmaWxlOi8vIi4kdGVzdFJlc3VsdHMgaWYgJGxhdW5jaFNhZmFyaTsK
IH0gZWxzaWYgKGlzQ3lnd2luKCkpIHsKICAgc3lzdGVtICJjeWdzdGFydCIsICR0ZXN0UmVzdWx0
cyBpZiAkbGF1bmNoU2FmYXJpOwogfSBlbHNpZiAoaXNXaW5kb3dzKCkpIHsKQEAgLTE1MTQsMjAg
KzE0OTYsMTEgQEAgc3ViIG9wZW5EdW1wVG9vbCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAoaXNRdCgpKSB7Ci0gICAgICAgICRDTEVBTl9FTlZ7UVRXRUJLSVRfUExVR0lOX1BBVEh9ID0g
cHJvZHVjdERpcigpIC4gIi9saWIvcGx1Z2lucyI7Ci0gICAgICAgICRDTEVBTl9FTlZ7UVRfRFJU
X1dFQlZJRVdfTU9ERX0gPSAkRU5WeyJRVF9EUlRfV0VCVklFV19NT0RFIn07Ci0gICAgfQotICAg
IAogICAgIG15IEBhcmdzID0gKCRkdW1wVG9vbCwgQHRvb2xBcmdzKTsKICAgICBpZiAoaXNBcHBs
ZU1hY1dlYktpdCgpKSB7IAogICAgICAgICB1bnNoaWZ0IEBhcmdzLCAiYXJjaCIsICItIiAuIGFy
Y2hpdGVjdHVyZSgpOyAgICAgICAgICAgICAKICAgICB9CiAKLSAgICBpZiAoJHVzZVZhbGdyaW5k
KSB7Ci0gICAgICAgIHVuc2hpZnQgQGFyZ3MsICJ2YWxncmluZCIsICItLXN1cHByZXNzaW9ucz0k
cGxhdGZvcm1CYXNlRGlyZWN0b3J5L3F0L1N1cHByZXNzZWRWYWxncmluZEVycm9ycyI7Ci0gICAg
fSAKLQogICAgIGlmICgkdXNlV2ViS2l0VGVzdFJ1bm5lcikgewogICAgICAgICAjIE1ha2UgV2Vi
S2l0VGVzdFJ1bm5lciB1c2UgYSBzaW1pbGFyIHRpbWVvdXQuIFdlIGRvbid0IHVzZSB0aGUgZXhh
Y3Qgc2FtZSB0aW1lb3V0IHRvIGF2b2lkCiAgICAgICAgICMgcmFjZSBjb25kaXRpb25zLgpAQCAt
MjE2OSwzNiArMjE0Miw2IEBAIHN1YiBidWlsZFBsYXRmb3JtUmVzdWx0SGllcmFyY2h5KCkKICAg
ICAgICAgaWYgKCRwbGF0Zm9ybSBlcSAid2luY2Fpcm8iKSB7CiAgICAgICAgICAgICBAcGxhdGZv
cm1zID0gJHBsYXRmb3JtOwogICAgICAgICB9Ci0gICAgfSBlbHNpZiAoJHBsYXRmb3JtID1+IC9e
cXQvKSB7Ci0gICAgICAgIGlmICgkcGxhdGZvcm0gZXEgInF0LTUuMC13azIiIHx8IGdldFF0VmVy
c2lvbigpIGVxICI1LjAiICYmICR1c2VXZWJLaXRUZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICBw
dXNoIEBwbGF0Zm9ybXMsICJxdC01LjAtd2syIjsKLSAgICAgICAgfQotICAgICAgICBlbHNpZiAo
JHBsYXRmb3JtIGVxICJxdC01LjAtd2sxIiB8fCBnZXRRdFZlcnNpb24oKSBlcSAiNS4wIiAmJiAh
JHVzZVdlYktpdFRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0
LTUuMC13azEiCi0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXNBUk0oKSB8fCAkcGxhdGZvcm0g
ZXEgInF0LWFybSIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LWFybSI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoaXNEYXJ3aW4oKSB8fCAkcGxhdGZvcm0gZXEgInF0LW1h
YyIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LW1hYyI7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzaWYgKGlzV2luZG93cygpIHx8IGlzQ3lnd2luKCkgfHwgJHBsYXRmb3JtIGVx
ICJxdC13aW4iKSB7Ci0gICAgICAgICAgICBwdXNoIEBwbGF0Zm9ybXMsICJxdC13aW4iOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2lmIChpc0xpbnV4KCkgfHwgJHBsYXRmb3JtIGVxICJxdC1saW51
eCIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LWxpbnV4IjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChnZXRRdFZlcnNpb24oKSBlcSAiNC44IiB8fCAkcGxhdGZvcm0gZXEg
InF0LTQuOCIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LTQuOCI7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzaWYgKGdldFF0VmVyc2lvbigpIGVxICI1LjAiIHx8ICRwbGF0Zm9y
bSBlcSAicXQtNS4wIikgewotICAgICAgICAgICAgcHVzaCBAcGxhdGZvcm1zLCAicXQtNS4wIjsK
LSAgICAgICAgfQotCi0gICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0IjsKICAgICB9IGVsc2lm
ICgkcGxhdGZvcm0gPX4gL15ndGstLykgewogICAgICAgICBwdXNoIEBwbGF0Zm9ybXMsICRwbGF0
Zm9ybTsKICAgICAgICAgcHVzaCBAcGxhdGZvcm1zLCAiZ3RrIjsKQEAgLTIyMjIsMjQgKzIxNjUs
MTggQEAgc3ViIGJ1aWxkUGxhdGZvcm1UZXN0SGllcmFyY2h5KEApCiAgICAgbXkgKEBwbGF0Zm9y
bUhpZXJhcmNoeSkgPSBAXzsKIAogICAgIG15IEByZXN1bHQ7Ci0gICAgaWYgKCRwbGF0Zm9ybSA9
fiAvXnF0LykgewotICAgICAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAcGxhdGZvcm1IaWVyYXJj
aHk7ICsrJGkpIHsKLSAgICAgICAgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlb
JGldOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbXkgJHdrMlBsYXRmb3JtOwot
ICAgICAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAcGxhdGZvcm1IaWVyYXJjaHk7ICsrJGkpIHsK
LSAgICAgICAgICAgIGlmICgkcGxhdGZvcm1IaWVyYXJjaHlbJGldID1+IC8td2syLykgewotICAg
ICAgICAgICAgICAgICR3azJQbGF0Zm9ybSA9IHNwbGljZSBAcGxhdGZvcm1IaWVyYXJjaHksICRp
LCAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICB9CisgICAgbXkgJHdrMlBs
YXRmb3JtOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBwbGF0Zm9ybUhpZXJhcmNoeTsgKysk
aSkgeworICAgICAgICBpZiAoJHBsYXRmb3JtSGllcmFyY2h5WyRpXSA9fiAvLXdrMi8pIHsKKyAg
ICAgICAgICAgICR3azJQbGF0Zm9ybSA9IHNwbGljZSBAcGxhdGZvcm1IaWVyYXJjaHksICRpLCAx
OworICAgICAgICAgICAgbGFzdDsKICAgICAgICAgfQotCi0gICAgICAgcHVzaCBAcmVzdWx0LCAk
cGxhdGZvcm1IaWVyYXJjaHlbMF07Ci0gICAgICAgcHVzaCBAcmVzdWx0LCAkd2syUGxhdGZvcm0g
aWYgZGVmaW5lZCAkd2syUGxhdGZvcm07Ci0gICAgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1I
aWVyYXJjaHlbJCNwbGF0Zm9ybUhpZXJhcmNoeV0gaWYgQHBsYXRmb3JtSGllcmFyY2h5ID49IDI7
CiAgICAgfQogCisgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlbMF07CisgICAg
cHVzaCBAcmVzdWx0LCAkd2syUGxhdGZvcm0gaWYgZGVmaW5lZCAkd2syUGxhdGZvcm07CisgICAg
cHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlbJCNwbGF0Zm9ybUhpZXJhcmNoeV0gaWYg
QHBsYXRmb3JtSGllcmFyY2h5ID49IDI7CisKICAgICBpZiAoJHZlcmJvc2UpIHsKICAgICAgICAg
bXkgQHNlYXJjaFBhdGhzOwogICAgICAgICBmb3JlYWNoIG15ICRzZWFyY2hQYXRoIChAcmVzdWx0
KSB7CkBAIC0yNTAzLDkgKzI0NDAsOSBAQCBzdWIgcmVhZFNraXBwZWRGaWxlcygkKQogICAgIG15
IEBza2lwcGVkRmlsZURpcmVjdG9yaWVzID0gQHBsYXRmb3JtVGVzdEhpZXJhcmNoeTsKIAogICAg
ICMgQmVjYXVzZSBuZWFybHkgYWxsIG9mIHRoZSBza2lwcGVkIHRlc3RzIGZvciBXZWJLaXQgMiBv
biBNYWMgYXJlIGR1ZSB0bwotICAgICMgY3Jvc3MtcGxhdGZvcm0gaXNzdWVzLCB0aGUgV2luZG93
cyBhbmQgUXQgcG9ydHMgdXNlIHRoZSBNYWMgc2tpcHBlZCBsaXN0CisgICAgIyBjcm9zcy1wbGF0
Zm9ybSBpc3N1ZXMsIHRoZSBXaW5kb3dzIHBvcnRzIHVzZSB0aGUgTWFjIHNraXBwZWQgbGlzdAog
ICAgICMgYWRkaXRpb25hbGx5IHRvIHRoZWlyIG93biB0byBhdm9pZCBtYWludGFpbmluZyBzZXBh
cmF0ZSBsaXN0cy4KLSAgICBwdXNoKEBza2lwcGVkRmlsZURpcmVjdG9yaWVzLCBjYXRkaXIoJHBs
YXRmb3JtQmFzZURpcmVjdG9yeSwgIndrMiIpKSBpZiAoJHBsYXRmb3JtIGVxICJ3aW4td2syIiB8
fCAkcGxhdGZvcm0gZXEgInF0LTUuMC13azIiIHx8ICRwbGF0Zm9ybSBlcSAibWFjLXdrMiIgfHwg
JHBsYXRmb3JtIGVxICJndGstd2syIik7CisgICAgcHVzaChAc2tpcHBlZEZpbGVEaXJlY3Rvcmll
cywgY2F0ZGlyKCRwbGF0Zm9ybUJhc2VEaXJlY3RvcnksICJ3azIiKSkgaWYgKCRwbGF0Zm9ybSBl
cSAid2luLXdrMiIgfHwgJHBsYXRmb3JtIGVxICJtYWMtd2syIiB8fCAkcGxhdGZvcm0gZXEgImd0
ay13azIiKTsKIAogICAgIGlmICgkdmVyYm9zZSkgewogICAgICAgICBmb3JlYWNoIG15ICRza2lw
cGVkUGF0aCAoQHNraXBwZWRGaWxlRGlyZWN0b3JpZXMpIHsKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLWxhdW5jaGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWxhdW5jaGVyCShy
ZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcgkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMs
IEluYy4gIDxpbmZvQHN0YWlrb3MubmV0PgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ0LDQ3ICs0NCwy
NyBAQCBteSAkbGF1bmNoZXJQYXRoID0gcHJvZHVjdERpcigpOwogY2hlY2tGcmFtZXdvcmtzKCk7
CiAKICMgU2V0IHBhdGhzIGFjY29yZGluZyB0byB0aGUgYnVpbGQgc3lzdGVtIHVzZWQKLWlmIChp
c1F0KCkpIHsKLSAgICBteSAkbGliRGlyID0gY2F0ZGlyKHByb2R1Y3REaXIoKSwgJ2xpYicpOwor
aWYgKGlzR3RrKCkpIHsKICAgICBpZiAoaXNXSzIoKSkgewotICAgICAgICAkbGF1bmNoZXJQYXRo
ID0gY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJyb3dzZXIiKTsKKyAgICAgICAg
dW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJQcm9ncmFtcyIsICJNaW5pQnJv
d3NlciIpKTsKICAgICB9IGVsc2UgewotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKCRs
YXVuY2hlclBhdGgsICJiaW4iLCAiUXRUZXN0QnJvd3NlciIpOworICAgICAgICB1bnNoaWZ0KEBB
UkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgIlByb2dyYW1zIiwgIkd0a0xhdW5jaGVyIikpOwog
ICAgIH0KKyAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHNvdXJjZURpcigpLCAiVG9vbHMiLCAi
amhidWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKKyAgICB1bnNoaWZ0KEBBUkdWLCAoIi0tZ3Rr
IiwgInJ1biIpKTsKK30KIAotICAgICRFTlZ7UVRXRUJLSVRfUExVR0lOX1BBVEh9ID0gY2F0ZGly
KCRsaWJEaXIsICdwbHVnaW5zJyk7Ci0KLSAgICBwcmludCAiU3RhcnRpbmcgd2Via2l0IGxhdW5j
aGVyLCBydW5uaW5nIGFnYWluc3QgdGhlIGJ1aWx0IFdlYktpdCBpbiAkbGliRGlyLi4uXG4iOwot
ICAgIGlmIChpc0RhcndpbigpKSB7Ci0gICAgICAgICRFTlZ7RFlMRF9MSUJSQVJZX1BBVEh9ID0g
JEVOVntEWUxEX0xJQlJBUllfUEFUSH0gPyAiJGxpYkRpcjokRU5We0RZTERfTElCUkFSWV9QQVRI
fSIgOiAkbGliRGlyOwotICAgICAgICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJEVOVntE
WUxEX0ZSQU1FV09SS19QQVRIfSA/ICIkbGliRGlyOiRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0i
IDogJGxpYkRpcjsKK2lmIChpc0VmbCgpKSB7CisgICAgaWYgKGlzV0syKCkpIHsKKyAgICAgICAg
dW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJyb3dzZXIi
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJEVOVntMRF9MSUJSQVJZX1BBVEh9ID0gJEVOVntM
RF9MSUJSQVJZX1BBVEh9ID8gIiRsaWJEaXI6JEVOVntMRF9MSUJSQVJZX1BBVEh9IiA6ICRsaWJE
aXI7Ci0gICAgfQotfSBlbHNlIHsKLQotICAgIGlmIChpc0d0aygpKSB7Ci0gICAgICAgIGlmIChp
c1dLMigpKSB7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBBUkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0
aCwgIlByb2dyYW1zIiwgIk1pbmlCcm93c2VyIikpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJQcm9ncmFtcyIsICJH
dGtMYXVuY2hlciIpKTsKLSAgICAgICAgfQotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGly
KHNvdXJjZURpcigpLCAiVG9vbHMiLCAiamhidWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKLSAg
ICAgICAgdW5zaGlmdChAQVJHViwgKCItLWd0ayIsICJydW4iKSk7CisgICAgICAgIHVuc2hpZnQo
QEFSR1YsIGNhdGRpcigkbGF1bmNoZXJQYXRoLCAiYmluIiwgIkVXZWJMYXVuY2hlciIpKTsKICAg
ICB9Ci0KLSAgICBpZiAoaXNFZmwoKSkgewotICAgICAgICBpZiAoaXNXSzIoKSkgewotICAgICAg
ICAgICAgdW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJy
b3dzZXIiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBBUkdWLCBj
YXRkaXIoJGxhdW5jaGVyUGF0aCwgImJpbiIsICJFV2ViTGF1bmNoZXIiKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgJGxhdW5jaGVyUGF0aCA9IGNhdGRpcihzb3VyY2VEaXIoKSwgIlRvb2xzIiwgImpo
YnVpbGQiLCAiamhidWlsZC13cmFwcGVyIik7Ci0gICAgICAgIHVuc2hpZnQoQEFSR1YsICgiLS1l
ZmwiLCAicnVuIikpOwotICAgIH0KLQotICAgIHByaW50ICJTdGFydGluZyB3ZWJraXQgbGF1bmNo
ZXIuXG4iOworICAgICRsYXVuY2hlclBhdGggPSBjYXRkaXIoc291cmNlRGlyKCksICJUb29scyIs
ICJqaGJ1aWxkIiwgImpoYnVpbGQtd3JhcHBlciIpOworICAgIHVuc2hpZnQoQEFSR1YsICgiLS1l
ZmwiLCAicnVuIikpOwogfQogCitwcmludCAiU3RhcnRpbmcgd2Via2l0IGxhdW5jaGVyLlxuIjsK
KwogZXhlYyAkbGF1bmNoZXJQYXRoLCBAQVJHViBvciBkaWU7CiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvcnVuLXF0d2Via2l0LXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLXF0
d2Via2l0LXRlc3RzCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi1xdHdl
YmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMSw0MzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotCi0jQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0jVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
I21vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0jTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0jdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotCi0jVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSNNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotI0xpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0jWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotI2Fsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0jdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSNCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBv
cnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IGxvZ2dpbmcKLWZyb20gc3VicHJv
Y2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUsIFNURE9VVAotZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0
aW9uUGFyc2VyCi0KLQotY2xhc3MgTG9nKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUpOgotICAgICAgICBzZWxmLl9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihuYW1lKQotICAg
ICAgICBzZWxmLmRlYnVnID0gc2VsZi5fbG9nLmRlYnVnCi0gICAgICAgIHNlbGYud2FybiA9IHNl
bGYuX2xvZy53YXJuCi0gICAgICAgIHNlbGYuZXJyb3IgPSBzZWxmLl9sb2cuZXJyb3IKLSAgICAg
ICAgc2VsZi5leGNlcHRpb24gPSBzZWxmLl9sb2cuZXhjZXB0aW9uCi0gICAgICAgIHNlbGYuaW5m
byA9IHNlbGYuX2xvZy5pbmZvCi0KLQotY2xhc3MgT3B0aW9ucyhMb2cpOgotICAgICIiIiBPcHRp
b24gbWFuYWdlci4gSXQgcGFyc2VzIGFuZCBjaGVja3Mgc2NyaXB0J3MgcGFyYW1ldGVycywgc2V0
cyBhbiBpbnRlcm5hbCB2YXJpYWJsZS4gIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJn
cyk6Ci0gICAgICAgIExvZy5fX2luaXRfXyhzZWxmLCAiT3B0aW9ucyIpCi0gICAgICAgIGxvZyA9
IHNlbGYuX2xvZwotICAgICAgICBvcHQgPSBPcHRpb25QYXJzZXIoIiVwcm9nIFtvcHRpb25zXSBb
UGF0aFRvU2VhcmNoXS5cblRyeSAtaCBvciAtLWhlbHAuIikKLSAgICAgICAgb3B0LmFkZF9vcHRp
b24oIi1qIiwgIi0tcGFyYWxsZWwtbGV2ZWwiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0iaW50IiwK
LSAgICAgICAgICAgICAgZGVzdD0icGFyYWxsZWxfbGV2ZWwiLCBkZWZhdWx0PU5vbmUsCi0gICAg
ICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBwYXJhbGxlbCBwcm9jZXNzZXMgZXhlY3V0aW5nIHRo
ZSBRdCdzIHRlc3RzLiBEZWZhdWx0OiBjcHUgY291bnQuIikKLSAgICAgICAgb3B0LmFkZF9vcHRp
b24oIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJpbnQiLAotICAgICAg
ICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgZGVmYXVsdD0yLAotICAgICAgICAgICAgICBoZWxwPSJW
ZXJib3NlIGxldmVsICgwIC0gcXVpZXQsIDEgLSBlcnJvcnMgb25seSwgMiAtIGluZm9zIGFuZCB3
YXJuaW5ncywgMyAtIGRlYnVnIGluZm9ybWF0aW9uKS4gRGVmYXVsdDogJWRlZmF1bHQuIikKLSAg
ICAgICAgb3B0LmFkZF9vcHRpb24oIiIsICItLXRlc3RzLW9wdGlvbnMiLCBhY3Rpb249InN0b3Jl
IiwgdHlwZT0ic3RyaW5nIiwKLSAgICAgICAgICAgICAgZGVzdD0idGVzdHNfb3B0aW9ucyIsIGRl
ZmF1bHQ9IiIsCi0gICAgICAgICAgICAgIGhlbHA9IlBhcmFtZXRlcnMgcGFzc2VkIHRvIFF0J3Mg
dGVzdHMgKGZvciBleGFtcGxlICctZXZlbnRkZWxheSAxMjMnKS4iKQotICAgICAgICBvcHQuYWRk
X29wdGlvbigiLW8iLCAiLS1vdXRwdXQtZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJp
bmciLAotICAgICAgICAgICAgICBkZXN0PSJvdXRwdXRfZmlsZSIsIGRlZmF1bHQ9Ii90bXAvcXR3
ZWJraXR0ZXN0cy5odG1sIiwKLSAgICAgICAgICAgICAgaGVscD0iRmlsZSB3aGVyZSByZXN1bHRz
IHdpbGwgYmUgc3RvcmVkLiBUaGUgZmlsZSB3aWxsIGJlIG92ZXJ3cml0dGVuLiBEZWZhdWx0OiAl
ZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLWIiLCAiLS1icm93c2VyIiwgYWN0
aW9uPSJzdG9yZSIsIGRlc3Q9ImJyb3dzZXIiLAotICAgICAgICAgICAgICBkZWZhdWx0PSJ4ZGct
b3BlbiIsCi0gICAgICAgICAgICAgIGhlbHA9IkJyb3dzZXIgaW4gd2hpY2ggcmVzdWx0cyB3aWxs
IGJlIG9wZW5lZC4gRGVmYXVsdCAlZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigi
IiwgIi0tZG8tbm90LW9wZW4tcmVzdWx0cyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAotICAgICAg
ICAgICAgICBkZXN0PSJvcGVuX3Jlc3VsdHMiLCBkZWZhdWx0PVRydWUsCi0gICAgICAgICAgICAg
IGhlbHA9IlRoZSByZXN1bHRzIHNob3VsZG4ndCBwb3AtdXAgaW4gYSBicm93c2VyIGF1dG9tYXRp
Y2FsbHkiKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLWQiLCAiLS1kZXZlbG9wZXItbW9kZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgIGRlc3Q9ImRldmVsb3BlciIsIGRl
ZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgIGhlbHA9IlNwZWNpYWwgbW9kZSBmb3IgZGVidWdn
aW5nLiBJbiBnZW5lcmFsIGl0IHNpbXVsYXRlcyBodW1hbiBiZWhhdmlvciwgcnVubmluZyBhbGwg
YXV0b3Rlc3RzLiBJbiB0aGUgbW9kZSBldmVyeXRoaW5nIGlzIGV4ZWN1dGVkIHN5bmNocm9ub3Vz
bHksIG5vIGh0bWwgb3V0cHV0IHdpbGwgYmUgZ2VuZXJhdGVkLCBubyBjaGFuZ2VzIG9yIHRyYW5z
Zm9ybWF0aW9uIHdpbGwgYmUgYXBwbGllZCB0byBzdGRlcnIgb3Igc3Rkb3V0LiBJbiB0aGlzIG1v
ZGUgb3B0aW9uczsgcGFyYWxsZWwtbGV2ZWwsIG91dHB1dC1maWxlLCBicm93c2VyIGFuZCBkby1u
b3Qtb3Blbi1yZXN1bHRzIHdpbGwgYmUgaWdub3JlZC4iKQotICAgICAgICBvcHQuYWRkX29wdGlv
bigiLXQiLCAiLS10aW1lb3V0IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9ImludCIsCi0gICAgICAg
ICAgICAgIGRlc3Q9InRpbWVvdXQiLCBkZWZhdWx0PTAsCi0gICAgICAgICAgICAgIGhlbHA9IlRp
bWVvdXQgaW4gc2Vjb25kcyBmb3IgZWFjaCB0ZXN0c3VpdGUuIFplcm8gdmFsdWUgbWVhbnMgdGhh
dCB0aGVyZSBpcyBub3QgdGltZW91dC4gRGVmYXVsdDogJWRlZmF1bHQuIikKLSAgICAgICAgb3B0
LmFkZF9vcHRpb24oIi0tcmVsZWFzZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlbGVh
c2UiLCBkZWZhdWx0PVRydWUsCi0gICAgICAgICAgICAgIGhlbHA9IlJ1biBBUEkgdGVzdHMgaW4g
V2ViS2l0QnVpbGQvUmVsZWFzZS8uLi4gZGlyZWN0b3J5LiBJdCBpcyBpZ25vcmVkIGlmIFBhdGhU
b1NlYXJjaCBpcyBwYXNzZWQuIikKLSAgICAgICAgb3B0LmFkZF9vcHRpb24oIi0tZGVidWciLCBh
Y3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0icmVsZWFzZSIsCi0gICAgICAgICAgICAgIGhlbHA9
IlJ1biBBUEkgdGVzdHMgaW4gV2ViS2l0QnVpbGQvRGVidWcvLi4uIGRpcmVjdG9yeS4gSXQgaXMg
aWdub3JlZCBpZiBQYXRoVG9TZWFyY2ggaXMgcGFzc2VkLiIpCi0gICAgICAgIG9wdC5hZGRfb3B0
aW9uKCItMiIsICItLXdlYmtpdDIiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ3ZWJraXQy
IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgaGVscD0iUnVuIFdlYktpdDIgQVBJIHRl
c3RzLiBEZWZhdWx0OiBSdW4gV2ViS2l0MSBBUEkgdGVzdHMuIEl0IGlzIGlnbm9yZWQgaWYgUGF0
aFRvU2VhcmNoIGlzIHBhc3NlZC4iKQotCi0gICAgICAgIHNlbGYuX28sIHNlbGYuX2EgPSBvcHQu
cGFyc2VfYXJncyhhcmdzKQotICAgICAgICB2ZXJib3NlID0gc2VsZi5fby52ZXJib3NlCi0gICAg
ICAgIGlmIHZlcmJvc2UgPT0gMDoKLSAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2
ZWw9bG9nZ2luZy5DUklUSUNBTCwpCi0gICAgICAgIGVsaWYgdmVyYm9zZSA9PSAxOgotICAgICAg
ICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkVSUk9SLCkKLSAgICAgICAg
ZWxpZiB2ZXJib3NlID09IDI6Ci0gICAgICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVs
PWxvZ2dpbmcuSU5GTywpCi0gICAgICAgIGVsaWYgdmVyYm9zZSA9PSAzOgotICAgICAgICAgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHLCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLCkKLSAg
ICAgICAgICAgIGxvZy53YXJuKCJCYWQgdmVyYm9zZSBsZXZlbCwgc3dpdGNoaW5nIHRvIGRlZmF1
bHQuIikKLQotICAgICAgICBpZiBzZWxmLl9vLnJlbGVhc2U6Ci0gICAgICAgICAgICBjb25maWd1
cmF0aW9uID0gIlJlbGVhc2UiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gIkRlYnVnIgotCi0gICAgICAgIGlmIHNlbGYuX28ud2Via2l0MjoKLSAgICAgICAgICAg
IHRlc3RfZGlyZWN0b3J5ID0gIldlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy8iCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0X2RpcmVjdG9yeSA9ICJXZWJLaXQvcXQvdGVzdHMv
IgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9hKSA9PSAwOgotICAg
ICAgICAgICAgICAgIHNlbGYuX28ucGF0aCA9ICJXZWJLaXRCdWlsZC8lcy9Tb3VyY2UvJXMiICUg
KGNvbmZpZ3VyYXRpb24sIHRlc3RfZGlyZWN0b3J5KQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBpZiBsZW4oc2VsZi5fYSkgPiAxOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBJbmRleEVycm9yKCJPbmx5IG9uZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIHByb3ZpZGVkLiIpCi0g
ICAgICAgICAgICAgICAgc2VsZi5fby5wYXRoID0gc2VsZi5fYVswXQotCi0gICAgICAgICAgICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5fby5wYXRoKToKLSAgICAgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oIkdpdmVuIHBhdGggZG9lc24ndCBleGlzdC4iKQotICAgICAgICBleGNlcHQg
SW5kZXhFcnJvcjoKLSAgICAgICAgICAgIGxvZy5lcnJvcigiQmFkIHVzYWdlLiBQbGVhc2UgdHJ5
IC1oIG9yIC0taGVscC4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGxvZy5lcnJvcigiUGF0aCAnJXMnIGRvZXNuJ3QgZXhp
c3QiLCBzZWxmLl9vLnBhdGgpCi0gICAgICAgICAgICBzeXMuZXhpdCgyKQotCi0gICAgICAgIGlm
IHNlbGYuX28uZGV2ZWxvcGVyOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX28ucGFyYWxsZWxf
bGV2ZWwgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBsb2cud2FybigiRGV2ZWxvcGVyIG1vZGUg
c2V0cyBwYXJhbGxlbC1sZXZlbCBvcHRpb24gdG8gb25lLiIpCi0gICAgICAgICAgICBzZWxmLl9v
LnBhcmFsbGVsX2xldmVsID0gMQotICAgICAgICAgICAgc2VsZi5fby5vcGVuX3Jlc3VsdHMgPSBG
YWxzZQotCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICAiIiIgTWFw
cyBhbGwgb3B0aW9ucyBwcm9wZXJ0aWVzIGludG8gdGhpcyBvYmplY3QgKHJlbW92ZSBvbmUgbGV2
ZWwgb2YgaW5kaXJlY3Rpb24pLiAiIiIKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5fbywg
YXR0cikKLQotCi1kZWYgcnVuX3Rlc3QoYXJncyk6Ci0gICAgIiIiIFJ1bnMgb25lIGdpdmVuIHRl
c3QuCi0gICAgYXJncyBzaG91bGQgY29udGFpbiBhIHR1cGxlIHdpdGggMyBlbGVtZW50czsKLSAg
ICAgIFRlc3RTdWl0ZVJlc3VsdCBjb250YWluaW5nIGZ1bGwgZmlsZSBuYW1lIG9mIGFuIGF1dG90
ZXN0IGV4ZWN1dGFibGUuCi0gICAgICBzdHIgd2l0aCBvcHRpb25zIHRoYXQgc2hvdWxkIGJlIHBh
c3NlZCB0byB0aGUgYXV0b3Rlc3QgZXhlY3V0YWJsZQotICAgICAgYm9vbCBpZiB0cnVlIHRoZW4g
dGhlIHN0ZG91dCB3aWxsIGJlIGJ1ZmZlcmVkIGFuZCBzZXBhcmF0ZWQgZnJvbSB0aGUgc3RkZXJy
LCBpZiBpdCBpcyBmYWxzZQotICAgICAgICB0aGVuIHRoZSBzdGRvdXQgYW5kIHRoZSBzdGRlcnIg
d2lsbCBiZSBtZXJnZWQgdG9nZXRoZXIgYW5kIGxlZnQgdW5idWZmZXJlZCAodGhlIFRlc3RTdWl0
ZVJlc3VsdCBvdXRwdXQgd2lsbCBiZSBOb25lKS4KLSAgICAgIGludCB0aW1lIGFmdGVyIHdoaWNo
IHRoZSBhdXRvdGVzdCBleGVjdXRhYmxlIHdvdWxkIGJlIGtpbGxlZAotICAgICIiIgotICAgIGxv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJFeGVjIikKLSAgICB0ZXN0X3N1aXRlLCBvcHRpb25zLCBi
dWZmZXJlZCwgdGltZW91dCA9IGFyZ3MKLSAgICB0aW1lciA9IE5vbmUKLSAgICB0cnk6Ci0gICAg
ICAgIGxvZy5pbmZvKCJSdW5uaW5nLi4uICVzIiwgdGVzdF9zdWl0ZS50ZXN0X2ZpbGVfbmFtZSgp
KQotICAgICAgICBpZiBidWZmZXJlZDoKLSAgICAgICAgICAgIHRzdCA9IFBvcGVuKFt0ZXN0X3N1
aXRlLnRlc3RfZmlsZV9uYW1lKCldICsgb3B0aW9ucy5zcGxpdCgpLCBzdGRvdXQ9UElQRSwgc3Rk
ZXJyPU5vbmUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0c3QgPSBQb3BlbihbdGVzdF9z
dWl0ZS50ZXN0X2ZpbGVfbmFtZSgpXSArIG9wdGlvbnMuc3BsaXQoKSwgc3Rkb3V0PU5vbmUsIHN0
ZGVycj1TVERPVVQpCi0gICAgICAgIGlmIHRpbWVvdXQ6Ci0gICAgICAgICAgICBmcm9tIHRocmVh
ZGluZyBpbXBvcnQgVGltZXIKLSAgICAgICAgICAgIGxvZy5kZWJ1ZygiU2V0dGluZyB0aW1lb3V0
IHRpbWVyICVpIHNlYyBvbiAlcyAocHJvY2VzcyAlcykiLCB0aW1lb3V0LCB0ZXN0X3N1aXRlLnRl
c3RfZmlsZV9uYW1lKCksIHRzdC5waWQpCi0gICAgICAgICAgICBkZWYgcHJvY2Vzc19raWxsZXIo
KToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRzdC50ZXJtaW5hdGUoKQotICAgICAgICAgICAgICAgICAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdvcmthcm91
bmQgZm9yIHB5dGhvbiB2ZXJzaW9uIDwgMi42IGl0IGNhbiBiZSByZW1vdmVkIGFzIHNvb24gYXMg
d2UgZHJvcCBzdXBwb3J0IGZvciBweXRob24yLjUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgY3R5cGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPQ0VTU19URVJNSU5BVEUgPSAxCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5PcGVuUHJvY2VzcyhQ
Uk9DRVNTX1RFUk1JTkFURSwgRmFsc2UsIHRzdC5waWQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5UZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgLTEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5DbG9z
ZUhhbmRsZShoYW5kbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRl
RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aW5kbGwgaXMgbm90IGFjY2Vz
c2libGUgc28gd2UgYXJlIG9uICpuaXggbGlrZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbXBvcnQgc2lnbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mua2ls
bCh0c3QucGlkLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9y
KCJUaW1lb3V0LCBwcm9jZXNzICclcycgKCVpKSB3YXMgdGVybWluYXRlZCIsIHRlc3Rfc3VpdGUu
dGVzdF9maWxlX25hbWUoKSwgdHN0LnBpZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJv
ciwgZToKLSAgICAgICAgICAgICAgICAgICAgIyB0aGUgcHJvY2VzcyB3YXMgZmluaXNoZWQgYmVm
b3JlIGdvdCBraWxsZWQKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdGlt
ZXIgPSBUaW1lcih0aW1lb3V0LCBwcm9jZXNzX2tpbGxlcikKLSAgICAgICAgICAgIHRpbWVyLnN0
YXJ0KCkKLSAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgbG9nLmV4Y2VwdGlvbigiQ2Fu
J3Qgb3BlbiBhbiBhdXRvdGVzdCBmaWxlOiAnJXMnLiBTa2lwcGluZyB0aGUgdGVzdC4uLiIsIGUu
ZmlsZW5hbWUpCi0gICAgZWxzZToKLSAgICAgICAgdGVzdF9zdWl0ZS5zZXRfb3V0cHV0KHRzdC5j
b21tdW5pY2F0ZSgpWzBdKSAgIyB0YWtlcyBzdGRvdXQgb25seSwgaW4gZGV2ZWxvcGVyIG1vZGUg
aXQgd291bGQgYmUgTm9uZS4KLSAgICBsb2cuaW5mbygiRmluaXNoZWQgJXMiLCB0ZXN0X3N1aXRl
LnRlc3RfZmlsZV9uYW1lKCkpCi0gICAgaWYgdGltZW91dDoKLSAgICAgICAgdGltZXIuY2FuY2Vs
KCkKLSAgICByZXR1cm4gdGVzdF9zdWl0ZQotCi0KLWNsYXNzIFRlc3RTdWl0ZVJlc3VsdChvYmpl
Y3QpOgotICAgICIiIiBLZWVwcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QuICIiIgotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9vdXRwdXQgPSBOb25lCi0gICAgICAg
IHNlbGYuX3Rlc3RfZmlsZV9uYW1lID0gTm9uZQotCi0gICAgZGVmIHNldF9vdXRwdXQoc2VsZiwg
eG1sKToKLSAgICAgICAgaWYgeG1sOgotICAgICAgICAgICAgc2VsZi5fb3V0cHV0ID0geG1sLnN0
cmlwKCkKLQotICAgIGRlZiBvdXRwdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vdXRw
dXQKLQotICAgIGRlZiBzZXRfdGVzdF9maWxlX25hbWUoc2VsZiwgZmlsZV9uYW1lKToKLSAgICAg
ICAgc2VsZi5fdGVzdF9maWxlX25hbWUgPSBmaWxlX25hbWUKLQotICAgIGRlZiB0ZXN0X2ZpbGVf
bmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfZmlsZV9uYW1lCi0KLQotY2xh
c3MgTWFpbihMb2cpOgotICAgICIiIiBUaGUgbWFpbiBzY3JpcHQuIEFsbCByZWFsIHdvcmsgaXMg
ZG9uZSBpbiBydW4oKSBtZXRob2QuICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlv
bnMpOgotICAgICAgICBMb2cuX19pbml0X18oc2VsZiwgIk1haW4iKQotICAgICAgICBzZWxmLl9v
cHRpb25zID0gb3B0aW9ucwotICAgICAgICBpZiBvcHRpb25zLnBhcmFsbGVsX2xldmVsID4gMSBv
ciBvcHRpb25zLnBhcmFsbGVsX2xldmVsIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wKLSAgICAgICAgICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLndhcm4oIkltcG9ydCBF
cnJvcjogdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgY291bGRuJ3QgYmUgbG9hZGVkIChtYXkg
YmUgbGFjayBvZiBweXRob24tbXVsdGlwcm9jZXNzaW5nIHBhY2thZ2U/KS4gVGhlIFF0IGF1dG90
ZXN0cyB3aWxsIGJlIGV4ZWN1dGVkIG9uZSBieSBvbmUuIikKLSAgICAgICAgICAgICAgICBvcHRp
b25zLnBhcmFsbGVsX2xldmVsID0gMQotICAgICAgICBpZiBvcHRpb25zLnBhcmFsbGVsX2xldmVs
ID09IDE6Ci0KLSAgICAgICAgICAgIGNsYXNzIFBvb2wob2JqZWN0KToKLSAgICAgICAgICAgICAg
ICAiIiIgQSBoYWNrLCBjcmVhdGVkIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggbXVsdGlwcm9jZXNz
aW5nIG1vZHVsZSwgdGhpcyBjbGFzcyBpcyBzaW5nbGUgdGhyZWFkIHJlcGxhY2VtZW50IGZvciB0
aGUgbXVsdGlwcm9jZXNzaW5nLlBvb2wgY2xhc3MuICIiIgotICAgICAgICAgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwcm9jZXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAg
ICAgICAgICAgICAgICBkZWYgaW1hcF91bm9yZGVyZWQoc2VsZiwgZnVuYywgZmlsZXMpOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFwKGZ1bmMsIGZpbGVzKQotCi0gICAgICAgICAgICAg
ICAgZGVmIG1hcChzZWxmLCBmdW5jLCBmaWxlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYXAoZnVuYywgZmlsZXMpCi0KLSAgICAgICAgc2VsZi5fUG9vbCA9IFBvb2wKLQotICAgIGRl
ZiBydW4oc2VsZik6Ci0gICAgICAgICIiIiBGaW5kICYmIGV4ZWN1dGUgJiYgcHVibGlzaCByZXN1
bHRzIG9mIGFsbCB0ZXN0LiAiQWxsIGluIG9uZSIgZnVuY3Rpb24uICIiIgotICAgICAgICAjIFRo
aXMgaXMgbmVlZGVkIGZvciBRdCBmaW5kaW5nIG91ciBRTUwgbW9kdWxlcy4gVGhlIGN1cnJlbnQg
Y29kZSBtYWtlcyBvdXIKLSAgICAgICAgIyB0d28gZXhpc3RpbmcgQVBJIHRlc3RzIChXSzEgQVBJ
IGFuZCBXSzIgVUkgcHJvY2VzcyBBUEkpIHdvcmsgY29ycmVjdGx5LgotICAgICAgICBxbWxfaW1w
b3J0X3BhdGggPSBzZWxmLl9vcHRpb25zLnBhdGggKyAiLi4vLi4vLi4vLi4vaW1wb3J0cyIKLSAg
ICAgICAgcW1sX2ltcG9ydF9wYXRoICs9ICI6IiArIHNlbGYuX29wdGlvbnMucGF0aCArICIuLi8u
Li8uLi8uLi8uLi8uLi9pbXBvcnRzIgotICAgICAgICBvcy5wdXRlbnYoIlFNTF9JTVBPUlRfUEFU
SCIsIHFtbF9pbXBvcnRfcGF0aCkKLSAgICAgICAgcGF0aCA9IG9zLmdldGVudigiUEFUSCIpCi0g
ICAgICAgIHBhdGggKz0gIjoiICsgc2VsZi5fb3B0aW9ucy5wYXRoICsgIi4uLy4uLy4uLy4uLy4u
Ly4uL2JpbiIKLSAgICAgICAgb3MucHV0ZW52KCJQQVRIIiwgcGF0aCkKLSAgICAgICAgc2VsZi5k
ZWJ1ZygiU2VhcmNoaW5nIGV4ZWN1dGFibGVzLi4uIikKLSAgICAgICAgdGVzdHNfZXhlY3V0YWJs
ZXMgPSBzZWxmLmZpbmRfdGVzdHNfcGF0aHMoc2VsZi5fb3B0aW9ucy5wYXRoKQotICAgICAgICBz
ZWxmLmRlYnVnKCJGb3VuZDogJXMiLCBsZW4odGVzdHNfZXhlY3V0YWJsZXMpKQotICAgICAgICBz
ZWxmLmRlYnVnKCJFeGVjdXRpbmcgdGVzdHMuLi4iKQotICAgICAgICByZXN1bHRzID0gc2VsZi5y
dW5fdGVzdHModGVzdHNfZXhlY3V0YWJsZXMpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25z
LmRldmVsb3BlcjoKLSAgICAgICAgICAgIHNlbGYuZGVidWcoIlRyYW5zZm9ybWluZy4uLiIpCi0g
ICAgICAgICAgICB0cmFuc2Zvcm1lZF9yZXN1bHRzID0gc2VsZi50cmFuc2Zvcm0ocmVzdWx0cykK
LSAgICAgICAgICAgIHNlbGYuZGVidWcoIlB1Ymxpc2hpbmcuLi4iKQotICAgICAgICAgICAgc2Vs
Zi5hbm5vdW5jZV9yZXN1bHRzKHRyYW5zZm9ybWVkX3Jlc3VsdHMpCi0KLSAgICBkZWYgZmluZF90
ZXN0c19wYXRocyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiIEZpbmRzIGFsbCB0ZXN0cyBleGVj
dXRhYmxlcyBpbnNpZGUgdGhlIGdpdmVuIHBhdGguICIiIgotICAgICAgICBleGVjdXRhYmxlcyA9
IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgotICAg
ICAgICAgICAgIyBDaGVjayBvbmx5IGZvciBhIGZpbGUgdGhhdCBuYW1lIHN0YXJ0cyBmcm9tICd0
c3RfJyBhbmQgdGhhdCB3ZSBjYW4gZXhlY3V0ZS4KLSAgICAgICAgICAgIGZpbHRlcmVkX3BhdGgg
PSBmaWx0ZXIobGFtYmRhIHc6IHcuc3RhcnRzd2l0aCgndHN0XycpIGFuZCBvcy5hY2Nlc3Mob3Mu
cGF0aC5qb2luKHJvb3QsIHcpLCBvcy5YX09LKSwgZmlsZXMpCi0gICAgICAgICAgICBmaWx0ZXJl
ZF9wYXRoID0gbWFwKGxhbWJkYSB3OiBvcy5wYXRoLmpvaW4ocm9vdCwgdyksIGZpbHRlcmVkX3Bh
dGgpCi0gICAgICAgICAgICBmb3IgZmlsZV9uYW1lIGluIGZpbHRlcmVkX3BhdGg6Ci0gICAgICAg
ICAgICAgICAgciA9IFRlc3RTdWl0ZVJlc3VsdCgpCi0gICAgICAgICAgICAgICAgci5zZXRfdGVz
dF9maWxlX25hbWUoZmlsZV9uYW1lKQotICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVzLmFwcGVu
ZChyKQotICAgICAgICByZXR1cm4gZXhlY3V0YWJsZXMKLQotICAgIGRlZiBydW5fdGVzdHMoc2Vs
ZiwgZmlsZXMpOgotICAgICAgICAiIiIgRXhlY3V0ZXMgZ2l2ZW4gZmlsZXMgYnkgdXNpbmcgYSBw
b29sIG9mIHdvcmtlcnMuICIiIgotICAgICAgICB3b3JrZXJzID0gc2VsZi5fUG9vbChwcm9jZXNz
ZXM9c2VsZi5fb3B0aW9ucy5wYXJhbGxlbF9sZXZlbCkKLSAgICAgICAgIyB0byBlYWNoIGZpbGUg
YWRkIG9wdGlvbnMuCi0gICAgICAgIHNlbGYuZGVidWcoIlVzaW5nICVzIHRoZSB3b3JrZXJzIHBv
b2wsIG51bWJlciBvZiB3b3JrZXJzICVpIiwgcmVwcih3b3JrZXJzKSwgc2VsZi5fb3B0aW9ucy5w
YXJhbGxlbF9sZXZlbCkKLSAgICAgICAgcGFja2FnZSA9IG1hcChsYW1iZGEgdzogW3csIHNlbGYu
X29wdGlvbnMudGVzdHNfb3B0aW9ucywgbm90IHNlbGYuX29wdGlvbnMuZGV2ZWxvcGVyLCBzZWxm
Ll9vcHRpb25zLnRpbWVvdXRdLCBmaWxlcykKLSAgICAgICAgc2VsZi5kZWJ1ZygiR2VuZXJhdGVk
IHBhY2thZ2VzIGZvciB3b3JrZXJzOiAlcyIsIHJlcHIocGFja2FnZSkpCi0gICAgICAgIHJlc3Vs
dHMgPSB3b3JrZXJzLm1hcChydW5fdGVzdCwgcGFja2FnZSkgICMgQ29sbGVjdHMgcmVzdWx0cy4K
LSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQotICAgIGRlZiB0cmFuc2Zvcm0oc2VsZiwgcmVzdWx0
cyk6Ci0gICAgICAgICIiIiBUcmFuc2Zvcm1zIGxpc3Qgb2YgdGhlIHJlc3VsdHMgdG8gc3BlY2lh
bGl6ZWQgdmVyc2lvbnMuICIiIgotICAgICAgICBzdGRvdXQgPSBzZWxmLmNvbnZlcnRfdG9fc3Rk
b3V0KHJlc3VsdHMpCi0gICAgICAgIGh0bWwgPSBzZWxmLmNvbnZlcnRfdG9faHRtbChyZXN1bHRz
KQotICAgICAgICByZXR1cm4geyJzdGRvdXQiOiBzdGRvdXQsICJodG1sIjogaHRtbH0KLQotICAg
IGRlZiBhbm5vdW5jZV9yZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICAgICAiIiIgU2hvd3Mg
dGhlIHJlc3VsdHMuICIiIgotICAgICAgICBzZWxmLmFubm91bmNlX3Jlc3VsdHNfc3Rkb3V0KHJl
c3VsdHNbJ3N0ZG91dCddKQotICAgICAgICBzZWxmLmFubm91bmNlX3Jlc3VsdHNfaHRtbChyZXN1
bHRzWydodG1sJ10pCi0KLSAgICBkZWYgYW5ub3VuY2VfcmVzdWx0c19zdGRvdXQoc2VsZiwgcmVz
dWx0cyk6Ci0gICAgICAgICIiIiBTaG93IHRoZSByZXN1bHRzIGJ5IHByaW50aW5nIHRvIHRoZSBz
dGRvdXQuIiIiCi0gICAgICAgIHByaW50KHJlc3VsdHMpCi0KLSAgICBkZWYgYW5ub3VuY2VfcmVz
dWx0c19odG1sKHNlbGYsIHJlc3VsdHMpOgotICAgICAgICAiIiIgU2hvd3MgdGhlIHJlc3VsdCBi
eSBjcmVhdGluZyBhIGh0bWwgZmlsZSBhbmQgY2FsbGluZyBhIHdlYiBicm93c2VyIHRvIHJlbmRl
ciBpdC4gIiIiCi0gICAgICAgIHdpdGggZmlsZShzZWxmLl9vcHRpb25zLm91dHB1dF9maWxlLCAn
dycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKHJlc3VsdHMpCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMub3Blbl9yZXN1bHRzOgotICAgICAgICAgICAgUG9wZW4oc2VsZi5fb3B0aW9ucy5i
cm93c2VyICsgIiAiICsgc2VsZi5fb3B0aW9ucy5vdXRwdXRfZmlsZSwgc3Rkb3V0PU5vbmUsIHN0
ZGVycj1Ob25lLCBzaGVsbD1UcnVlKQotCi0gICAgZGVmIGNoZWNrX2NyYXNoX29jY3VyZW5jZXMo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIiIiBDaGVja3MgaWYgYW55IHRlc3QgY3Jhc2hlcyBh
bmQgaXQgc3VtcyB0aGVtICAiIiIKLSAgICAgICAgdG90YWxzID0gWzAsMCwwXQotICAgICAgICBj
cmFzaF9jb3VudCA9IDAKLSAgICAgICAgdHh0ID0gW10KLSAgICAgICAgI2NvbGxlY3RpbmcgcmVz
dWx0cyBpbnRvIG9uZSBjb250YWluZXIgd2l0aCBjaGVja2luZyBjcmFzaAotICAgICAgICBmb3Ig
cmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBmb3VuZCA9IE5vbmUKLSAgICAgICAgICAg
IGlmIHJlc3VsdC5vdXRwdXQoKToKLSAgICAgICAgICAgICAgICB0eHQuYXBwZW5kKHJlc3VsdC5v
dXRwdXQoKSkKLSAgICAgICAgICAgICAgICBmb3VuZCA9IHJlLnNlYXJjaChyIihbMC05XSspIHBh
c3NlZCwgKFswLTldKykgZmFpbGVkLCAoWzAtOV0rKSBza2lwcGVkIiwgcmVzdWx0Lm91dHB1dCgp
KQotCi0gICAgICAgICAgICBpZiBmb3VuZDoKLSAgICAgICAgICAgICAgICB0b3RhbHMgPSByZWR1
Y2UobGFtYmRhIHgsIHk6IChpbnQoeFswXSkgKyBpbnQoeVswXSksIGludCh4WzFdKSArIGludCh5
WzFdKSwgaW50KHhbMl0pICsgaW50KHlbMl0pKSwgKHRvdGFscywgZm91bmQuZ3JvdXBzKCkpKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eHQuYXBwZW5kKCdDUkFTSEVEOiAl
cycgJSByZXN1bHQudGVzdF9maWxlX25hbWUoKSkKLSAgICAgICAgICAgICAgICBjcmFzaF9jb3Vu
dCArPSAxCi0gICAgICAgICAgICAgICAgc2VsZi53YXJuKCJNaXNzaW5nIHN1Yi1zdW1tYXJ5OiAl
cyIgJSByZXN1bHQudGVzdF9maWxlX25hbWUoKSkKLQotICAgICAgICB0eHQ9J1xuXG4nLmpvaW4o
dHh0KQotCi0gICAgICAgIHRvdGFscyA9IGxpc3QodG90YWxzKQotICAgICAgICB0b3RhbHMuYXBw
ZW5kKGNyYXNoX2NvdW50KQotICAgICAgICB0b3RhbHMgPSBtYXAoc3RyLCB0b3RhbHMpCi0gICAg
ICAgIHJldHVybiB0eHQsIHRvdGFscwotCi0gICAgZGVmIGNvbnZlcnRfdG9fc3Rkb3V0KHNlbGYs
IHJlc3VsdHMpOgotICAgICAgICAiIiIgQ29udmVydHMgcmVzdWx0cywgdGhhdCB0aGV5IGNvdWxk
IGJlIG5pY2VseSBwcmVzZW50ZWQgaW4gdGhlIHN0ZG91dC4gIiIiCi0gICAgICAgIHR4dCwgdG90
YWxzID0gc2VsZi5jaGVja19jcmFzaF9vY2N1cmVuY2VzKHJlc3VsdHMpCi0KLSAgICAgICAgdG90
YWxzID0gIiVzIHBhc3NlZCwgJXMgZmFpbGVkLCAlcyBza2lwcGVkLCAlcyBjcmFzaGVkIiAlICh0
b3RhbHNbMF0sIHRvdGFsc1sxXSwgdG90YWxzWzJdLCB0b3RhbHNbM10pCi0KLSAgICAgICAgdHh0
ICs9ICdcbicgKyAnKicgKiA3MAotICAgICAgICB0eHQgKz0gIlxuKioiICsgKCJUT1RBTFM6ICIg
KyB0b3RhbHMpLmNlbnRlcig2NikgKyAnKionCi0gICAgICAgIHR4dCArPSAnXG4nICsgJyonICog
NzAgKyAnXG4nCi0gICAgICAgIHJldHVybiB0eHQKLQotICAgIGRlZiBjb252ZXJ0X3RvX2h0bWwo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIiIiBDb252ZXJ0cyByZXN1bHRzLCB0aGF0IHRoZXkg
Y291bGQgc2hvd2VkIGFzIGEgaHRtbCBwYWdlLiAiIiIKLSAgICAgICAgdHh0LCB0b3RhbHMgPSBz
ZWxmLmNoZWNrX2NyYXNoX29jY3VyZW5jZXMocmVzdWx0cykKLSAgICAgICAgdHh0ID0gdHh0LnJl
cGxhY2UoJyYnLCAnJmFtcDsnKS5yZXBsYWNlKCc8JywgIiZsdDsiKS5yZXBsYWNlKCc+JywgIiZn
dDsiKQotICAgICAgICAjIEFkZCBhIGNvbG9yIGFuZCBhIHN0eWxlLgotICAgICAgICB0eHQgPSBy
ZS5zdWIociIoWyogXSsoRmluaXNoZWQpWyBhLXpfQS1aMC05XStbKl0rKSIsCi0gICAgICAgICAg
ICBsYW1iZGEgdzogciIiLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIo
ciIoWypdK1sgYS16X0EtWjAtOV0rWypdKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8Y2Fz
ZSBjbGFzcz0nZ29vZCc+PGJyPjxicj48Yj4iICsgdy5ncm91cCgwKSArIHIiPC9iPjwvY2FzZT4i
LAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociIoQ29uZmlnOiBVc2lu
ZyBRVGVzdCBsaWJyYXJ5KSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIlxuPGNhc2Ug
Y2xhc3M9J2dvb2QnPjxicj48aT4iICsgdy5ncm91cCgwKSArIHIiPC9pPiAgIiwKLSAgICAgICAg
ICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oUEFTUykoKC4pKykiLAotICAgICAg
ICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0dXMg
Y2xhc3M9J3Bhc3MnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwK
LSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oRkFJTCEpKCguKSsp
IiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2UgY2xhc3M9J2JhZCc+PGJy
PjxzdGF0dXMgY2xhc3M9J2ZhaWwnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1cz4iICsgdy5n
cm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oWFBB
U1MpKCguKSspIiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2UgY2xhc3M9
J2JhZCc+PGJyPjxzdGF0dXMgY2xhc3M9J3hwYXNzJz4iICsgdy5ncm91cCgxKSArIHIiPC9zdGF0
dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAgICAgICB0eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1
YihyIlxuKFhGQUlMKSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIjwvY2FzZT5cbjxj
YXNlIGNsYXNzPSdnb29kJz48YnI+PHN0YXR1cyBjbGFzcz0neGZhaWwnPiIgKyB3Lmdyb3VwKDEp
ICsgciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAg
dHh0ID0gcmUuc3ViKHIiXG4oU0tJUCkoKC4pKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8
L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0dXMgY2xhc3M9J3hmYWlsJz4iICsg
dy5ncm91cCgxKSArIHIiPC9zdGF0dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAgICAgICB0eHQp
Ci0gICAgICAgIHR4dCA9IHJlLnN1YihyIlxuKFFXQVJOKSgoLikrKSIsCi0gICAgICAgICAgICBs
YW1iZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdiYWQnPjxicj48c3RhdHVzIGNsYXNzPSd3
YXJuJz4iICsgdy5ncm91cCgxKSArIHIiPC9zdGF0dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAg
ICAgICB0eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1YihyIlxuKFJFU1VMVCkoKC4pKykiLAotICAg
ICAgICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0
dXMgY2xhc3M9J2JlbmNobWFyayc+IiArIHcuZ3JvdXAoMSkgKyByIjwvc3RhdHVzPiIgKyB3Lmdy
b3VwKDIpLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociJcbihRRkFU
QUx8Q1JBU0hFRCkoKC4pKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2Fz
ZSBjbGFzcz0nYmFkJz48YnI+PHN0YXR1cyBjbGFzcz0nY3Jhc2gnPiIgKyB3Lmdyb3VwKDEpICsg
ciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0
ID0gcmUuc3ViKHIiXG4oVG90YWxzOikoWzAtOScsIGEtel0qKSIsCi0gICAgICAgICAgICBsYW1i
ZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdnb29kJz48YnI+PGI+IiArIHcuZ3JvdXAoMSkg
KyByIjwvYj4iICsgdy5ncm91cCgyKSArICI8L2Nhc2U+IiwKLSAgICAgICAgICAgIHR4dCkKLSAg
ICAgICAgIyBGaW5kIHRvdGFsIGNvdW50IG9mIGZhaWxlZCwgc2tpcHBlZCwgcGFzc2VkIGFuZCBj
cmFzaGVkIHRlc3RzLgotICAgICAgICB0b3RhbHMgPSAiJXMgcGFzc2VkLCAlcyBmYWlsZWQsICVz
IHNraXBwZWQsICVzIGNyYXNoZWQuIiAlICh0b3RhbHNbMF0sIHRvdGFsc1sxXSwgdG90YWxzWzJd
LCB0b3RhbHNbM10pCi0gICAgICAgICMgQ3JlYXRlIGEgaGVhZGVyIG9mIHRoZSBodG1sIHNvdXJj
ZS4KLSAgICAgICAgdHh0ID0gIiIiCi0gICAgICAgIDxodG1sPgotICAgICAgICA8aGVhZD4KLSAg
ICAgICAgICA8c2NyaXB0PgotICAgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgICAg
ICAgIC8vIFRyeSB0byBmaW5kIHRoZSByaWdodCBzdHlsZVNoZWV0ICh0aGlzIGRvY3VtZW50IGNv
dWxkIGJlIGVtYmVkZGVkIGluIGFuIG90aGVyIGh0bWwgZG9jKQotICAgICAgICAgICAgICBmb3Ig
KGkgPSBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAg
ICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLmNzc1J1bGVzWzBdLnNl
bGVjdG9yVGV4dCA9PSAiY2FzZS5nb29kIikgewotICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dFN0eWxlU2hlZXQgPSBpOwotICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAvLyBUaGUgc3R5bGVT
aGVldCBoYXNuJ3QgYmVlbiBmb3VuZCwgYnV0IGl0IHNob3VsZCBiZSB0aGUgbGFzdCBvbmUuCi0g
ICAgICAgICAgICAgIHJlc3VsdFN0eWxlU2hlZXQgPSBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5n
dGggLSAxOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZ1bmN0aW9uIGhpZGUoKSB7Ci0gICAg
ICAgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzW3Jlc3VsdFN0eWxlU2hlZXRdLmNzc1J1bGVz
WzBdLnN0eWxlLmRpc3BsYXk9J25vbmUnOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZ1bmN0
aW9uIHNob3coKSB7Ci0gICAgICAgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzW3Jlc3VsdFN0
eWxlU2hlZXRdLmNzc1J1bGVzWzBdLnN0eWxlLmRpc3BsYXk9Jyc7Ci0gICAgICAgICAgfQotCi0g
ICAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLSAg
ICAgICAgICAgIGNhc2UuZ29vZCB7Y29sb3I6YmxhY2t9Ci0gICAgICAgICAgICBjYXNlLmJhZCB7
Y29sb3I6YmxhY2t9Ci0gICAgICAgICAgICBzdGF0dXMucGFzcyB7Y29sb3I6Z3JlZW59Ci0gICAg
ICAgICAgICBzdGF0dXMuY3Jhc2gge2NvbG9yOnJlZH0KLSAgICAgICAgICAgIHN0YXR1cy5mYWls
IHtjb2xvcjpyZWR9Ci0gICAgICAgICAgICBzdGF0dXMueHBhc3Mge2NvbG9yOjY2MzMwMH0KLSAg
ICAgICAgICAgIHN0YXR1cy54ZmFpbCB7Y29sb3I6MDA0NTAwfQotICAgICAgICAgICAgc3RhdHVz
LmJlbmNobWFyayB7Y29sb3I6MDAwMDg4fQotICAgICAgICAgICAgc3RhdHVzLndhcm4ge2NvbG9y
Om9yYW5nZX0KLSAgICAgICAgICAgIHN0YXR1cy5jcmFzaCB7Y29sb3I6cmVkOyB0ZXh0LWRlY29y
YXRpb246Ymxpbms7IGJhY2tncm91bmQtY29sb3I6YmxhY2t9Ci0gICAgICAgICAgPC9zdHlsZT4K
LSAgICAgICAgPC9oZWFkPgotICAgICAgICA8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0gICAgICAg
IDxjZW50ZXI+Ci0gICAgICAgICAgPGgxPlF0J3MgYXV0b3Rlc3RzIHJlc3VsdHM8L2gxPiUodG90
YWxzKXM8YnI+Ci0gICAgICAgICAgPGhyPgotICAgICAgICAgIDxmb3JtPgotICAgICAgICAgICAg
PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlNob3cgZmFpbHVyZXMgb25seSIgb25jbGljaz0i
aGlkZSgpIi8+Ci0gICAgICAgICAgICAmbmJzcDsKLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJi
dXR0b24iIHZhbHVlPSJTaG93IGFsbCIgb25jbGljaz0ic2hvdygpIi8+Ci0gICAgICAgICAgPC9m
b3JtPgotICAgICAgICA8L2NlbnRlcj4KLSAgICAgICAgPGhyPgotICAgICAgICAlKHJlc3VsdHMp
cwotICAgICAgICA8L2JvZHk+Ci0gICAgICAgIDwvaHRtbD4iIiIgJSB7InRvdGFscyI6IHRvdGFs
cywgInJlc3VsdHMiOiB0eHR9Ci0gICAgICAgIHJldHVybiB0eHQKLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIG9wdGlvbnMgPSBPcHRpb25zKHN5cy5hcmd2WzE6XSkKLSAgICBt
YWluID0gTWFpbihvcHRpb25zKQotICAgIG1haW4ucnVuKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKLSMhL3Vzci9iaW4vcGVybAorIyEvdXNy
L2Jpbi9wZXJsIC13CiAjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTcsOSArNTgsNyBA
QCBzdWIgcnVubmluZ09uQnVpbGRCb3QoKQogCiBzdWIgdXNlTmV3UnVuV2ViS2l0VGVzdHMoKQog
ewotICAgICMgTlJXVCBkb2VzIG5vdCBzdXBwb3J0IHF0LWFybTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDg2Ci0gICAgcmV0dXJuIDAgaWYgaXNRdCgpIGFuZCBp
c0FSTSgpOwotICAgICMgQWxsIG90aGVyIHBsYXRmb3JtcyBzaG91bGQgdXNlIE5SV1QgYnkgZGVm
YXVsdC4KKyAgICAjIEFsbCBwbGF0Zm9ybXMgc2hvdWxkIHVzZSBOUldUIGJ5IGRlZmF1bHQuCiAg
ICAgcmV0dXJuIDE7CiB9CiAKQEAgLTc1LDE4ICs3NCw5IEBAIGlmICh1c2VOZXdSdW5XZWJLaXRU
ZXN0cygpKSB7CiAgICAgfQogfQogCi0jIHdlYmtpdGRpcnMucG0gc3RyaXBzIC0tcXQgYW5kIC0t
Z3RrIGZyb20gQEFSR1Ygd2hlbiB3ZSBjYWxsIGlzUXQvaXNHdGsuCisjIHdlYmtpdGRpcnMucG0g
c3RyaXBzIC0tZ3RrIGZyb20gQEFSR1Ygd2hlbiB3ZSBjYWxsIGlzR3RrLgogIyBXZSBoYXZlIHRv
IGFkZCBiYWNrIGFueSAtLVBPUlQgYXJndW1lbnRzIHdoaWNoIG1heSBoYXZlIGJlZW4gcmVtb3Zl
ZCBieSBpc1BvcnQoKSBjaGVja3MgYWJvdmUuCi1pZiAoaXNRdCgpKSB7Ci0gICAgbXkgJGlzUGxh
dGZvcm1TZXQgPSAwOwotICAgIGZvciAoQEFSR1YpewotICAgICAgICAjIFBhc3MgLS1xdCBpZiBw
bGF0Zm9ybSBpc24ndCBwYXNzZWQgZXhwbGljaXRseSAoZWcuIHF0LTUuMCwgcXQtd2syLCAuLi4p
Ci0gICAgICAgIGlmKC9eLS1wbGF0Zm9ybS4qLyl7Ci0gICAgICAgICAgICAkaXNQbGF0Zm9ybVNl
dCA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcHVzaChAQVJHViwgIi0tcXQiKSBpZighJGlz
UGxhdGZvcm1TZXQpOwotfSBlbHNpZiAoaXNHdGsoKSkgeworaWYgKGlzR3RrKCkpIHsKICAgICBw
dXNoKEBBUkdWLCAiLS1ndGsiKTsKIH0gZWxzaWYgKGlzRWZsKCkpIHsKICAgICBwdXNoKEBBUkdW
LCAiLS1lZmwiKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRv
b2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
ICMhL3Vzci9iaW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKQEAgLTQ2LDcgKzQ2LDYgQEAgc3ViIHJ1bkdpdFVwZGF0ZSgpOwogbXkg
JHF1aWV0ID0gJyc7CiBteSAkc2hvd0hlbHA7CiAKLWRldGVybWluZUlzUXQoKTsKIGRldGVybWlu
ZUlzV2luQ2Fpcm8oKTsKIAogY2hkaXJXZWJLaXQoKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0LWJ1aWxkLWRpcmVjdG9yeQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdC1i
dWlsZC1kaXJlY3RvcnkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
LWJ1aWxkLWRpcmVjdG9yeQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKLSMhL3Vzci9i
aW4vcGVybAorIyEvdXNyL2Jpbi9wZXJsIC13CiAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQ5LDcgKzUwLDYgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10KICAgLS1ibGFja2Jl
cnJ5ICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIEJsYWNrQmVycnkg
cG9ydCBvbiBNYWMvTGludXgKICAgLS1lZmwgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxk
IGRpcmVjdG9yeSBmb3IgdGhlIEVGTCBwb3J0CiAgIC0tZ3RrICAgICAgICAgICAgICAgICBGaW5k
IHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICAg
ICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIFF0IHBvcnQKICAgLS13aW5j
YWlybyAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdXNpbmcgQ2Fpcm8g
KHJhdGhlciB0aGFuIENvcmVHcmFwaGljcykgb24gV2luZG93cwogICAtLXdpbmNlICAgICAgICAg
ICAgICAgRmluZCB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgV2luQ0UgcG9ydAogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRkaXJzLnBtCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dGRpcnMucG0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDYgQEAgbXkgJGRlYnVnZ2VyOwog
bXkgJG5tUGF0aDsKIG15ICRvc1hWZXJzaW9uOwogbXkgJGdlbmVyYXRlRHN5bTsKLW15ICRpc1F0
OwotbXkgJHFtYWtlYmluID0gInFtYWtlIjsgIyBBbGxvdyBvdmVycmlkZSBvZiB0aGUgcW1ha2Ug
YmluYXJ5IGZyb20gJFBBVEgKIG15ICRpc0d0azsKIG15ICRpc1dpbkNFOwogbXkgJGlzV2luQ2Fp
cm87CkBAIC0xNDMsMTEgKzE0MSw2IEBAIHN1YiBjdXJyZW50UGVybFBhdGgoKQogICAgIHJldHVy
biAkdGhpc1Blcmw7CiB9CiAKLXN1YiBzZXRRbWFrZUJpbmFyeVBhdGgoJCkKLXsKLSAgICAoJHFt
YWtlYmluKSA9IEBfOwotfQotCiAjIHVzZWQgZm9yIHNjcmlwdHMgd2hpY2ggYXJlIHN0b3JlZCBp
biBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbgogc3ViIHNldFNvdXJjZURpcigkKQogewpAQCAtMzgw
LDcgKzM3Myw2IEBAIHN1YiBhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKCkKICAgICBwdXNoKEBh
cmdzLCAnLS1kZWJ1ZycpIGlmICRjb25maWd1cmF0aW9uIGVxICJEZWJ1ZyI7CiAgICAgcHVzaChA
YXJncywgJy0tcmVsZWFzZScpIGlmICRjb25maWd1cmF0aW9uIGVxICJSZWxlYXNlIjsKICAgICBw
dXNoKEBhcmdzLCAnLS0zMi1iaXQnKSBpZiAkYXJjaGl0ZWN0dXJlIG5lICJ4ODZfNjQiOwotICAg
IHB1c2goQGFyZ3MsICctLXF0JykgaWYgaXNRdCgpOwogICAgIHB1c2goQGFyZ3MsICctLWd0aycp
IGlmIGlzR3RrKCk7CiAgICAgcHVzaChAYXJncywgJy0tZWZsJykgaWYgaXNFZmwoKTsKICAgICBw
dXNoKEBhcmdzLCAnLS13aW5jYWlybycpIGlmIGlzV2luQ2Fpcm8oKTsKQEAgLTUzNyw3ICs1Mjks
NyBAQCBzdWIgcHJvZHVjdERpcgogc3ViIGpzY1Byb2R1Y3REaXIKIHsKICAgICBteSAkcHJvZHVj
dERpciA9IHByb2R1Y3REaXIoKTsKLSAgICAkcHJvZHVjdERpciAuPSAiL2JpbiIgaWYgKGlzUXQo
KSB8fCBpc0VmbCgpKTsKKyAgICAkcHJvZHVjdERpciAuPSAiL2JpbiIgaWYgaXNFZmwoKTsKICAg
ICAkcHJvZHVjdERpciAuPSAiL1Byb2dyYW1zIiBpZiBpc0d0aygpOwogCiAgICAgcmV0dXJuICRw
cm9kdWN0RGlyOwpAQCAtNzk3LDQ4ICs3ODksNiBAQCBzdWIgYnVpbHREeWxpYlBhdGhGb3JOYW1l
CiAgICAgICAgIG15ICRsaWJyYXJ5RXh0ZW5zaW9uID0gJGxpYnJhcnlOYW1lID1+IC9eV2ViS2l0
JC9pID8gIi5zbyIgOiAiLmEiOwogICAgICAgICByZXR1cm4gIiRjb25maWd1cmF0aW9uUHJvZHVj
dERpci8kbGlicmFyeU5hbWUvbGliIiAuIGxjKCRsaWJyYXJ5TmFtZSkgLiAkbGlicmFyeUV4dGVu
c2lvbjsKICAgICB9Ci0gICAgaWYgKGlzUXQoKSkgewotICAgICAgICBteSAkaXNTZWFyY2hpbmdG
b3JXZWJDb3JlID0gJGxpYnJhcnlOYW1lID1+ICJXZWJDb3JlIjsKLSAgICAgICAgaWYgKGlzRGFy
d2luKCkpIHsKLSAgICAgICAgICAgICRsaWJyYXJ5TmFtZSA9ICJRdFdlYktpdFdpZGdldHMiOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGxpYnJhcnlOYW1lID0gIlF0NVdlYktpdFdp
ZGdldHMiOwotICAgICAgICB9Ci0gICAgICAgIG15ICRyZXN1bHQ7Ci0gICAgICAgIGlmIChpc0Rh
cndpbigpIGFuZCAtZCAiJGNvbmZpZ3VyYXRpb25Qcm9kdWN0RGlyL2xpYi8kbGlicmFyeU5hbWUu
ZnJhbWV3b3JrIikgewotICAgICAgICAgICAgJHJlc3VsdCA9ICIkY29uZmlndXJhdGlvblByb2R1
Y3REaXIvbGliLyRsaWJyYXJ5TmFtZS5mcmFtZXdvcmsvJGxpYnJhcnlOYW1lIjsKLSAgICAgICAg
fSBlbHNpZiAoaXNEYXJ3aW4oKSBhbmQgLWQgIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIi
KSB7Ci0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIv
bGliJGxpYnJhcnlOYW1lLmR5bGliIjsKLSAgICAgICAgfSBlbHNpZiAoaXNXaW5kb3dzKCkpIHsK
LSAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uKCkgZXEgIkRlYnVnIikgewotICAgICAgICAg
ICAgICAgICMgT24gV2luZG93cywgdGhlcmUgaXMgYSAiZCIgc3VmZml4IHRvIHRoZSBsaWJyYXJ5
IG5hbWUuIFNlZSA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTM5MjQvPi4KLSAg
ICAgICAgICAgICAgICAkbGlicmFyeU5hbWUgLj0gImQiOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBjaG9tcChteSAkbWtzcGVjID0gYCRxbWFrZWJpbiAtcXVlcnkgUVRfSE9TVF9EQVRB
YCk7Ci0gICAgICAgICAgICAkbWtzcGVjIC49ICIvbWtzcGVjcyI7Ci0gICAgICAgICAgICBteSAk
cXRNYWpvclZlcnNpb24gPSByZXRyaWV2ZVFNYWtlc3BlY1ZhcigiJG1rc3BlYy9xY29uZmlnLnBy
aSIsICJRVF9NQUpPUl9WRVJTSU9OIik7Ci0gICAgICAgICAgICBpZiAobm90ICRxdE1ham9yVmVy
c2lvbikgewotICAgICAgICAgICAgICAgICRxdE1ham9yVmVyc2lvbiA9ICIiOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9s
aWIvJGxpYnJhcnlOYW1lJHF0TWFqb3JWZXJzaW9uLmRsbCI7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIvbGliJGxp
YnJhcnlOYW1lLnNvIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgkaXNTZWFyY2hpbmdGb3JX
ZWJDb3JlKSB7Ci0gICAgICAgICAgICAjIFdpdGggQ09ORklHKz1mb3JjZV9zdGF0aWNfbGlic19h
c19zaGFyZWQgd2UgaGF2ZSBhIHNoYXJlZCBsaWJyYXJ5IGZvciBlYWNoIHN1YmRpci4KLSAgICAg
ICAgICAgICMgRm9yIGZlYXR1cmUgZGV0ZWN0aW9uIHRvIHdvcmsgaXQgaXMgbmVjZXNzYXJ5IHRv
IHJldHVybiB0aGUgcGF0aCBvZiB0aGUgV2ViQ29yZSBsaWJyYXJ5IGhlcmUuCi0gICAgICAgICAg
ICBteSAkcmVwbGFjZWRXaXRoV2ViQ29yZSA9ICRyZXN1bHQ7Ci0gICAgICAgICAgICAkcmVwbGFj
ZWRXaXRoV2ViQ29yZSA9fiBzLyRsaWJyYXJ5TmFtZS9XZWJDb3JlL2c7Ci0gICAgICAgICAgICBp
ZiAoLWUgJHJlcGxhY2VkV2l0aFdlYkNvcmUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJHJl
cGxhY2VkV2l0aFdlYkNvcmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gJHJlc3VsdDsKLSAgICB9CiAgICAgaWYgKGlzR3RrKCkpIHsKICAgICAgICAgIyBXZWJL
aXRHVEsrIGZvciBHVEsyLCBXZWJLaXRHVEsrIGZvciBHVEszLCBhbmQgV2ViS2l0MiByZXNwZWN0
aXZlbHkuCiAgICAgICAgIG15IEBsaWJyYXJpZXMgPSAoImxpYndlYmtpdGd0ay0xLjAiLCAibGli
d2Via2l0Z3RrLTMuMCIsICJsaWJ3ZWJraXQyZ3RrLTMuMCIpOwpAQCAtOTAwLDU2ICs4NTAsNiBA
QCBzdWIgZGV0ZXJtaW5lSXNJbnNwZWN0b3JGcm9udGVuZCgpCiAgICAgJGlzSW5zcGVjdG9yRnJv
bnRlbmQgPSBjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0taW5zcGVjdG9yLWZy
b250ZW5kIik7CiB9CiAKLXN1YiBpc1F0KCkKLXsKLSAgICBkZXRlcm1pbmVJc1F0KCk7Ci0gICAg
cmV0dXJuICRpc1F0OwotfQotCi1zdWIgZ2V0UXRWZXJzaW9uKCkKLXsKLSAgICBteSAkcXRWZXJz
aW9uID0gYCRxbWFrZWJpbiAtLXZlcnNpb25gOwotICAgICRxdFZlcnNpb24gPX4gcy9eKC4qKVF0
IHZlcnNpb24gKFxkXC5cZCkoLiopLyQyL3MgOwotICAgIHJldHVybiAkcXRWZXJzaW9uOwotfQot
Ci1zdWIgcXRGZWF0dXJlRGVmYXVsdHMKLXsKLSAgICBkaWUgIkVSUk9SOiBxbWFrZSBtaXNzaW5n
IGJ1dCByZXF1aXJlZCB0byBidWlsZCBXZWJLaXQuXG4iIGlmIG5vdCBjb21tYW5kRXhpc3RzKCRx
bWFrZWJpbik7Ci0KLSAgICBteSAkb2xkUW1ha2VFdmFsID0gJEVOVntRTUFLRV9DQUNIRV9FVkFM
fTsKLSAgICAkRU5We1FNQUtFX0NBQ0hFX0VWQUx9ID0gIkNPTkZJRys9cHJpbnRfZGVmYXVsdHMi
OwotCi0gICAgbXkgJG9yaWdpbmFsQ3dkID0gZ2V0Y3dkKCk7Ci0gICAgbXkgJHFtYWtlcGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJxbWFrZSIpOwotICAg
IGNoZGlyICRxbWFrZXBhdGggb3IgZGllICJGYWlsZWQgdG8gY2QgaW50byAiIC4gJHFtYWtlcGF0
aCAuICJcbiI7Ci0KLSAgICBteSAkZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGly
KCksICJXZWJLaXQucHJvIik7Ci0KLSAgICBteSBAYnVpbGRBcmdzOwotICAgIEBidWlsZEFyZ3Mg
PSAoQGJ1aWxkQXJncywgQHskX1swXX0pIGlmIChAXyk7Ci0KLSAgICBteSBAZGVmYXVsdHMgPSBg
JHFtYWtlYmluIEBidWlsZEFyZ3MgJGZpbGUgMj4mMWA7Ci0KLSAgICBteSAlcXRGZWF0dXJlRGVm
YXVsdHM7Ci0gICAgZm9yIChAZGVmYXVsdHMpIHsKLSAgICAgICAgaWYgKC9ERUZJTkVTOiAvKSB7
Ci0gICAgICAgICAgICB3aGlsZSAoLyhcUys/KT0oXFMrPykvZ2kpIHsKLSAgICAgICAgICAgICAg
ICAkcXRGZWF0dXJlRGVmYXVsdHN7JDF9PSQyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2lmICgvRG9uZSBjb21wdXRpbmcgZGVmYXVsdHMvKSB7Ci0gICAgICAgICAgICBsYXN0OwotICAg
ICAgICB9IGVsc2lmIChAXykgewotICAgICAgICAgICAgcHJpbnQgJF87Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBjaGRpciAkb3JpZ2luYWxDd2Q7Ci0gICAgJEVOVntRTUFLRV9DQUNIRV9FVkFM
fSA9ICRvbGRRbWFrZUV2YWw7Ci0KLSAgICByZXR1cm4gJXF0RmVhdHVyZURlZmF1bHRzOwotfQot
CiBzdWIgY29tbWFuZEV4aXN0cygkKQogewogICAgIG15ICRjb21tYW5kID0gc2hpZnQ7CkBAIC05
OTIsMjUgKzg5Miw2IEBAIHN1YiBpc1dLMigpCiAgICAgcmV0dXJuICRpc1dLMjsKIH0KIAotc3Vi
IGRldGVybWluZUlzUXQoKQotewotICAgIHJldHVybiBpZiBkZWZpbmVkKCRpc1F0KTsKLQotICAg
ICMgQWxsb3cgb3ZlcnJpZGUgaW4gY2FzZSBRVERJUiBpcyBub3Qgc2V0LgotICAgIGlmIChjaGVj
a0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0tcXQiKSkgewotICAgICAgICAkaXNRdCA9
IDE7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAjIFRoZSBwcmVzZW5jZSBvZiBRVERJ
UiBvbmx5IG1lYW5zIFF0IGlmIC0tZ3RrIG9yIC0tZWZsIG9yIC0tYmxhY2tiZXJyeSBvciAtLXdp
bmNhaXJvIGFyZSBub3Qgb24gdGhlIGNvbW1hbmQtbGluZQotICAgIGlmIChpc0d0aygpIHx8IGlz
RWZsKCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNXaW5DYWlybygpKSB7Ci0gICAgICAgICRpc1F0
ID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICRpc1F0ID0gZGVmaW5lZCgkRU5W
eydRVERJUid9KTsKLX0KLQogc3ViIGlzQmxhY2tCZXJyeSgpCiB7CiAgICAgZGV0ZXJtaW5lSXNC
bGFja0JlcnJ5KCk7CkBAIC0xMzA0LDcgKzExODUsNyBAQCBzdWIgaXNDcm9zc0NvbXBpbGF0aW9u
KCkKIAogc3ViIGlzQXBwbGVXZWJLaXQoKQogewotICAgIHJldHVybiAhKGlzUXQoKSBvciBpc0d0
aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tCZXJyeSgpKTsKKyAgICByZXR1
cm4gIShpc0d0aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tCZXJyeSgpKTsK
IH0KIAogc3ViIGlzQXBwbGVNYWNXZWJLaXQoKQpAQCAtMTQ5NSw3ICsxMzc2LDcgQEAgc3ViIHJl
bGF0aXZlU2NyaXB0c0RpcigpCiBzdWIgbGF1bmNoZXJQYXRoKCkKIHsKICAgICBteSAkcmVsYXRp
dmVTY3JpcHRzUGF0aCA9IHJlbGF0aXZlU2NyaXB0c0RpcigpOwotICAgIGlmIChpc0d0aygpIHx8
IGlzUXQoKSB8fCBpc0VmbCgpIHx8IGlzV2luQ0UoKSkgeworICAgIGlmIChpc0d0aygpIHx8IGlz
RWZsKCkgfHwgaXNXaW5DRSgpKSB7CiAgICAgICAgIHJldHVybiAiJHJlbGF0aXZlU2NyaXB0c1Bh
dGgvcnVuLWxhdW5jaGVyIjsKICAgICB9IGVsc2lmIChpc0FwcGxlV2ViS2l0KCkpIHsKICAgICAg
ICAgcmV0dXJuICIkcmVsYXRpdmVTY3JpcHRzUGF0aC9ydW4tc2FmYXJpIjsKQEAgLTE1MDYsOCAr
MTM4Nyw2IEBAIHN1YiBsYXVuY2hlck5hbWUoKQogewogICAgIGlmIChpc0d0aygpKSB7CiAgICAg
ICAgIHJldHVybiAiR3RrTGF1bmNoZXIiOwotICAgIH0gZWxzaWYgKGlzUXQoKSkgewotICAgICAg
ICByZXR1cm4gIlF0VGVzdEJyb3dzZXIiOwogICAgIH0gZWxzaWYgKGlzQXBwbGVXZWJLaXQoKSkg
ewogICAgICAgICByZXR1cm4gIlNhZmFyaSI7CiAgICAgfSBlbHNpZiAoaXNFZmwoKSkgewpAQCAt
MTUzNiwyMiArMTQxNSwxMCBAQCBzdWIgY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZwogICAgICAg
ICAgICAgcHJpbnQgIm1vc3QgbGlrZWx5IGZhaWwuIFRoZSBsYXRlc3QgWGNvZGUgaXMgYXZhaWxh
YmxlIGZyb20gdGhlIEFwcCBTdG9yZS5cbiI7CiAgICAgICAgICAgICBwcmludCAiKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsK
ICAgICAgICAgfQotICAgIH0gZWxzaWYgKGlzR3RrKCkgb3IgaXNRdCgpIG9yIGlzRWZsKCkpIHsK
LSAgICAgICAgbXkgQGNtZHMgPSBxdyhiaXNvbiBncGVyZik7Ci0gICAgICAgIGlmIChpc1F0KCkg
YW5kIGlzV2luZG93cygpKSB7Ci0gICAgICAgICAgICBwdXNoIEBjbWRzLCAid2luX2ZsZXgiOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaCBAY21kcywgImZsZXgiOwotICAgICAg
ICB9CisgICAgfSBlbHNpZiAoaXNHdGsoKSBvciBpc0VmbCgpKSB7CisgICAgICAgIG15IEBjbWRz
ID0gcXcoYmlzb24gZ3BlcmYgZmxleCk7CiAgICAgICAgIG15IEBtaXNzaW5nID0gKCk7CiAgICAg
ICAgIG15ICRvbGRQYXRoID0gJEVOVntQQVRIfTsKLSAgICAgICAgaWYgKGlzUXQoKSBhbmQgaXNX
aW5kb3dzKCkpIHsKLSAgICAgICAgICAgIGNob21wKG15ICRnbnVXaW4zMkRpciA9IGAkcW1ha2Vi
aW4gLXF1ZXJ5IFFUX0hPU1RfREFUQWApOwotICAgICAgICAgICAgJGdudVdpbjMyRGlyID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZSgkZ251V2luMzJEaXIsICIuLiIsICJnbnV3aW4zMiIsICJiaW4iKTsK
LSAgICAgICAgICAgIGlmICgtZCAiJGdudVdpbjMyRGlyIikgewotICAgICAgICAgICAgICAgICRF
TlZ7UEFUSH0gPSAkZ251V2luMzJEaXIgLiAiOyIgLiAkRU5We1BBVEh9OwotICAgICAgICAgICAg
fQotICAgICAgICB9CiAgICAgICAgIGZvcmVhY2ggbXkgJGNtZCAoQGNtZHMpIHsKICAgICAgICAg
ICAgIHB1c2ggQG1pc3NpbmcsICRjbWQgaWYgbm90IGNvbW1hbmRFeGlzdHMoJGNtZCk7CiAgICAg
ICAgIH0KQEAgLTE1NjAsOSArMTQyNyw2IEBAIHN1YiBjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmln
CiAgICAgICAgICAgICBteSAkbGlzdCA9IGpvaW4gIiwgIiwgQG1pc3Npbmc7CiAgICAgICAgICAg
ICBkaWUgIkVSUk9SOiAkbGlzdCBtaXNzaW5nIGJ1dCByZXF1aXJlZCB0byBidWlsZCBXZWJLaXQu
XG4iOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc1F0KCkgYW5kIGlzV2luZG93cygpKSB7Ci0g
ICAgICAgICAgICAkRU5We1BBVEh9ID0gJG9sZFBhdGg7Ci0gICAgICAgIH0KICAgICB9CiAgICAg
IyBXaW4zMiBhbmQgb3RoZXIgcGxhdGZvcm1zIG1heSB3YW50IHRvIGNoZWNrIGZvciBtaW5pbXVt
IGNvbmZpZwogfQpAQCAtMTY3MSwxNiArMTUzNSw2IEBAIHN1YiBzZXR1cEN5Z3dpbkVudigpCiAg
ICAgICAgICR3aWxsVXNlVkNFeHByZXNzV2hlbkJ1aWxkaW5nID0gMTsKICAgICB9CiAKLSAgICBt
eSAkcXRTREtQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwcm9ncmFtRmlsZXNQYXRoLCAiUXVp
Y2tUaW1lIFNESyIpOwotICAgIGlmICgwICYmICEgLWUgJHF0U0RLUGF0aCkgewotICAgICAgICBw
cmludCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKlxuIjsKLSAgICAgICAgcHJpbnQgIkNhbm5vdCBmaW5kICckcXRTREtQYXRoJ1xu
IjsKLSAgICAgICAgcHJpbnQgIlBsZWFzZSBkb3dubG9hZCB0aGUgUXVpY2tUaW1lIFNESyBmb3Ig
V2luZG93cyBmcm9tXG4iOwotICAgICAgICBwcmludCAiaHR0cDovL2RldmVsb3Blci5hcHBsZS5j
b20vcXVpY2t0aW1lL2Rvd25sb2FkL1xuIjsKLSAgICAgICAgcHJpbnQgIioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiI7Ci0gICAg
ICAgIGRpZTsKLSAgICB9Ci0KICAgICBwcmludCAiQnVpbGRpbmcgcmVzdWx0cyBpbnRvOiAiLCBi
YXNlUHJvZHVjdERpcigpLCAiXG4iOwogICAgIHByaW50ICJXRUJLSVRfT1VUUFVURElSIGlzIHNl
dCB0bzogIiwgJEVOVnsiV0VCS0lUX09VVFBVVERJUiJ9LCAiXG4iOwogICAgIHByaW50ICJXRUJL
SVRfTElCUkFSSUVTIGlzIHNldCB0bzogIiwgJEVOVnsiV0VCS0lUX0xJQlJBUklFUyJ9LCAiXG4i
OwpAQCAtMTczNSw3ICsxNTg5LDcgQEAgc3ViIGNvcHlJbnNwZWN0b3JGcm9udGVuZEZpbGVzCiAg
ICAgICAgIH0KICAgICB9IGVsc2lmIChpc0FwcGxlV2luV2ViS2l0KCkpIHsKICAgICAgICAgJGlu
c3BlY3RvclJlc291cmNlc0RpclBhdGggPSAkcHJvZHVjdERpciAuICIvV2ViS2l0LnJlc291cmNl
cy9pbnNwZWN0b3IiOwotICAgIH0gZWxzaWYgKGlzUXQoKSB8fCBpc0d0aygpKSB7CisgICAgfSBl
bHNpZiAoaXNHdGsoKSkgewogICAgICAgICBteSAkcHJlZml4ID0gJEVOVnsiV2ViS2l0SW5zdGFs
bGF0aW9uUHJlZml4In07CiAgICAgICAgICRpbnNwZWN0b3JSZXNvdXJjZXNEaXJQYXRoID0gKGRl
ZmluZWQoJHByZWZpeCkgPyAkcHJlZml4IDogIi91c3Ivc2hhcmUiKSAuICIvd2Via2l0LTEuMC93
ZWJpbnNwZWN0b3IiOwogICAgIH0gZWxzaWYgKGlzRWZsKCkpIHsKQEAgLTE3NjUsNyArMTYxOSw3
IEBAIHN1YiBjb3B5SW5zcGVjdG9yRnJvbnRlbmRGaWxlcwogICAgICAgICBzeXN0ZW0gImRpdHRv
IiwgJHNvdXJjZUxvY2FsaXplZFN0cmluZ3MsICRkZXN0aW5hdGlvbkxvY2FsaXplZFN0cmluZ3M7
CiAgICAgfQogCi0gICAgbXkgJGV4aXRTdGF0dXMgPSBzeXN0ZW0gInJzeW5jIiwgIi1hdXQiLCAi
LS1leGNsdWRlPS8uRFNfU3RvcmUiLCAiLS1leGNsdWRlPSoucmUyanMiLCAiLS1leGNsdWRlPS5z
dm4vIiwgIWlzUXQoKSA/ICItLWV4Y2x1ZGU9L1dlYktpdC5xcmMiIDogIiIsICRzb3VyY2VJbnNw
ZWN0b3JQYXRoLCAkaW5zcGVjdG9yUmVzb3VyY2VzRGlyUGF0aDsKKyAgICBteSAkZXhpdFN0YXR1
cyA9IHN5c3RlbSAicnN5bmMiLCAiLWF1dCIsICItLWV4Y2x1ZGU9Ly5EU19TdG9yZSIsICItLWV4
Y2x1ZGU9Ki5yZTJqcyIsICItLWV4Y2x1ZGU9LnN2bi8iLCAkc291cmNlSW5zcGVjdG9yUGF0aCwg
JGluc3BlY3RvclJlc291cmNlc0RpclBhdGg7CiAgICAgcmV0dXJuICRleGl0U3RhdHVzIGlmICRl
eGl0U3RhdHVzOwogCiAgICAgaWYgKGlzSU9TV2ViS2l0KCkpIHsKQEAgLTE4NDQsMjcgKzE2OTgs
NiBAQCBzdWIgcmV0cmlldmVRTWFrZXNwZWNWYXIKICAgICByZXR1cm4gJHZhcnZhbHVlOwogfQog
Ci1zdWIgcXRNYWtlQ29tbWFuZCgkKQotewotICAgIG15ICgkcW1ha2ViaW4pID0gQF87Ci0gICAg
Y2hvbXAobXkgJGhvc3REYXRhUGF0aCA9IGAkcW1ha2ViaW4gLXF1ZXJ5IFFUX0hPU1RfREFUQWAp
OwotICAgIG15ICRta3NwZWNQYXRoID0gJGhvc3REYXRhUGF0aCAuICIvbWtzcGVjcy9kZWZhdWx0
L3FtYWtlLmNvbmYiOwotICAgIGlmICghIC1lICRta3NwZWNQYXRoKSB7Ci0gICAgICAgIGNob21w
KG15ICRta3NwZWM9IGAkcW1ha2ViaW4gLXF1ZXJ5IFFNQUtFX1hTUEVDYCk7Ci0gICAgICAgICRt
a3NwZWNQYXRoID0gJGhvc3REYXRhUGF0aCAuICIvbWtzcGVjcy8iIC4gJG1rc3BlYyAuICIvcW1h
a2UuY29uZiI7Ci0gICAgfQotICAgIG15ICRjb21waWxlciA9IHJldHJpZXZlUU1ha2VzcGVjVmFy
KCRta3NwZWNQYXRoLCAiUU1BS0VfQ0MiKTsKLQotICAgICNwcmludCAiZGVmYXVsdCBzcGVjOiAi
IC4gJG1rc3BlYyAuICJcbiI7Ci0gICAgI3ByaW50ICJjb21waWxlciBmb3VuZDogIiAuICRjb21w
aWxlciAuICJcbiI7Ci0KLSAgICBpZiAoJGNvbXBpbGVyICYmICRjb21waWxlciBlcSAiY2wiKSB7
Ci0gICAgICAgIHJldHVybiAibm1ha2UiOwotICAgIH0KLQotICAgIHJldHVybiAibWFrZSI7Ci19
Ci0KIHN1YiBhdXRvdG9vbHNGbGFnKCQkKQogewogICAgIG15ICgkZmxhZywgJGZlYXR1cmUpID0g
QF87CkBAIC0yMjI2LDE5OSArMjA1OSw2IEBAIHN1YiBwcm9tcHRVc2VyCiAgICAgcmV0dXJuICRp
bnB1dCA/ICRpbnB1dCA6ICRkZWZhdWx0OwogfQogCi1zdWIgYnVpbGRRTWFrZVByb2plY3RzCi17
Ci0gICAgbXkgKCRwcm9qZWN0cywgJGNsZWFuLCBAYnVpbGRQYXJhbXMpID0gQF87Ci0KLSAgICBt
eSBAYnVpbGRBcmdzID0gKCk7Ci0gICAgbXkgJHFjb25maWdzID0gIiI7Ci0KLSAgICBteSAkbWFr
ZSA9IHF0TWFrZUNvbW1hbmQoJHFtYWtlYmluKTsKLSAgICBteSAkbWFrZWFyZ3MgPSAiIjsKLSAg
ICBteSAkY29tbWFuZDsKLSAgICBteSAkaW5zdGFsbEhlYWRlcnM7Ci0gICAgbXkgJGluc3RhbGxM
aWJzOwotICAgIGZvciBteSAkaSAoMCAuLiAkI2J1aWxkUGFyYW1zKSB7Ci0gICAgICAgIG15ICRv
cHQgPSAkYnVpbGRQYXJhbXNbJGldOwotICAgICAgICBpZiAoJG9wdCA9fiAvXi0tcW1ha2U9KC4q
KS9pICkgewotICAgICAgICAgICAgJHFtYWtlYmluID0gJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRv
cHQgPX4gL14tLXFtYWtlYXJnPSguKikvaSApIHsKLSAgICAgICAgICAgIHB1c2ggQGJ1aWxkQXJn
cywgJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRvcHQgPX4gL14tLW1ha2VhcmdzPSguKikvaSApIHsK
LSAgICAgICAgICAgICRtYWtlYXJncyA9ICQxOwotICAgICAgICB9IGVsc2lmICgkb3B0ID1+IC9e
LS1pbnN0YWxsLWhlYWRlcnM9KC4qKS9pICkgewotICAgICAgICAgICAgJGluc3RhbGxIZWFkZXJz
ID0gJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRvcHQgPX4gL14tLWluc3RhbGwtbGlicz0oLiopL2kg
KSB7Ci0gICAgICAgICAgICAkaW5zdGFsbExpYnMgPSAkMTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHB1c2ggQGJ1aWxkQXJncywgJG9wdDsKLSAgICAgICAgfQotICAgIH0KLQotICAg
ICMgQXV0b21hdGljYWxseSBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFVzIGZvciBtYWtlIG9u
bHkgaWYgdGhpcyBtYWtlIGFyZ3VtZW50IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHNwZWNpZmllZC4K
LSAgICBpZiAoJG1ha2UgZXEgIm1ha2UiICYmICRtYWtlYXJncyAhfiAvLVteXHNdKj9qXHMqXGQr
L2kgJiYgKCFkZWZpbmVkICRFTlZ7Ik1BS0VGTEFHUyJ9IHx8ICgkRU5WeyJNQUtFRkxBR1MifSAh
fiAvLVteXHNdKj9qXHMqXGQrL2kgKSkpIHsKLSAgICAgICAgJG1ha2VhcmdzIC49ICIgLWoiIC4g
bnVtYmVyT2ZDUFVzKCk7Ci0gICAgfQotCi0gICAgJG1ha2UgPSAiJG1ha2UgJG1ha2VhcmdzIjsK
LSAgICAkbWFrZSA9fiBzL1xzKyQvLzsKLQotICAgIG15ICRvcmlnaW5hbEN3ZCA9IGdldGN3ZCgp
OwotICAgIG15ICRkaXIgPSBGaWxlOjpTcGVjLT5jYW5vbnBhdGgocHJvZHVjdERpcigpKTsKLSAg
ICBGaWxlOjpQYXRoOjpta3BhdGgoJGRpcik7Ci0gICAgY2hkaXIgJGRpciBvciBkaWUgIkZhaWxl
ZCB0byBjZCBpbnRvICIgLiAkZGlyIC4gIlxuIjsKLQotICAgIGlmICgkY2xlYW4pIHsKLSAgICAg
ICAgJGNvbW1hbmQgPSAiJG1ha2UgZGlzdGNsZWFuIjsKLSAgICAgICAgcHJpbnQgIlxuQ2FsbGlu
ZyAnJGNvbW1hbmQnIGluICIgLiAkZGlyIC4gIlxuXG4iOwotICAgICAgICByZXR1cm4gc3lzdGVt
ICRjb21tYW5kOwotICAgIH0KLQotICAgIG15ICRxbWFrZXBhdGggPSBGaWxlOjpTcGVjLT5jYXRm
aWxlKHNvdXJjZURpcigpLCAiVG9vbHMiLCAicW1ha2UiKTsKLSAgICBteSAkcW1ha2Vjb21tYW5k
ID0gJHFtYWtlYmluOwotCi0gICAgbXkgJGNvbmZpZyA9IGNvbmZpZ3VyYXRpb24oKTsKLSAgICBw
dXNoIEBidWlsZEFyZ3MsICJJTlNUQUxMX0hFQURFUlM9IiAuICRpbnN0YWxsSGVhZGVycyBpZiBk
ZWZpbmVkKCRpbnN0YWxsSGVhZGVycyk7Ci0gICAgcHVzaCBAYnVpbGRBcmdzLCAiSU5TVEFMTF9M
SUJTPSIgLiAkaW5zdGFsbExpYnMgaWYgZGVmaW5lZCgkaW5zdGFsbExpYnMpOwotCi0gICAgbXkg
JHBhc3NlZENvbmZpZyA9IHBhc3NlZENvbmZpZ3VyYXRpb24oKSB8fCAiIjsKLSAgICBpZiAoJHBh
c3NlZENvbmZpZyA9fiBtL2RlYnVnL2kpIHsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09O
RklHLT1yZWxlYXNlIjsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09ORklHKz1kZWJ1ZyI7
Ci0gICAgfSBlbHNpZiAoJHBhc3NlZENvbmZpZyA9fiBtL3JlbGVhc2UvaSkgewotICAgICAgICBw
dXNoIEBidWlsZEFyZ3MsICJDT05GSUcrPXJlbGVhc2UiOwotICAgICAgICBwdXNoIEBidWlsZEFy
Z3MsICJDT05GSUctPWRlYnVnIjsKLSAgICB9IGVsc2lmICgkcGFzc2VkQ29uZmlnKSB7Ci0gICAg
ICAgIGRpZSAiQnVpbGQgdHlwZSAkcGFzc2VkQ29uZmlnIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCAt
LXF0LlxuIjsKLSAgICB9Ci0KLSAgICAjIFVzaW5nIGJ1aWxkLXdlYmtpdCB0byBidWlsZCBhc3N1
bWVzIHlvdSB3YW50IGEgZGV2ZWxvcGVyLWJ1aWxkCi0gICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09O
RklHLT1wcm9kdWN0aW9uX2J1aWxkIjsKLQotICAgIG15ICRzdm5SZXZpc2lvbiA9IGN1cnJlbnRT
Vk5SZXZpc2lvbigpOwotICAgIG15ICRwcmV2aW91c1N2blJldmlzaW9uID0gInVua25vd24iOwot
Ci0gICAgbXkgJGJ1aWxkSGludCA9ICIiOwotCi0gICAgbXkgJHBhdGhUb0J1aWx0UmV2aXNpb25z
ID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyLCAiLmJ1aWx0UmV2aXNpb25zLmNhY2hlIik7Ci0g
ICAgaWYgKC1lICRwYXRoVG9CdWlsdFJldmlzaW9ucyAmJiBvcGVuKEJVSUxUUkVWSVNJT05TLCAk
cGF0aFRvQnVpbHRSZXZpc2lvbnMpKSB7Ci0gICAgICAgIHdoaWxlICg8QlVJTFRSRVZJU0lPTlM+
KSB7Ci0gICAgICAgICAgICBpZiAoJF8gPX4gbS9eU1ZOX1JFVklTSU9OXHM9XHMoXGQrKSQvKSB7
Ci0gICAgICAgICAgICAgICAgJHByZXZpb3VzU3ZuUmV2aXNpb24gPSAkMTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjbG9zZShCVUlMVFJFVklTSU9OUyk7Ci0gICAgfQotCi0g
ICAgbXkgJHJlc3VsdCA9IDA7Ci0KLSAgICAjIFJ1biBxbWFrZSwgcmVnYWRsZXNzIG9mIGhhdmlu
ZyBhIG1ha2VmaWxlIG9yIG5vdCwgc28gdGhhdCBxbWFrZSBjYW4KLSAgICAjIGRldGVjdCBjaGFu
Z2VzIHRvIHRoZSBjb25maWd1cmF0aW9uLgotCi0gICAgcHVzaCBAYnVpbGRBcmdzLCAiLWFmdGVy
IE9WRVJSSURFX1NVQkRJUlM9XCJAeyRwcm9qZWN0c31cIiIgaWYgQHskcHJvamVjdHN9OwotICAg
IHVuc2hpZnQgQGJ1aWxkQXJncywgRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIldl
YktpdC5wcm8iKTsKLSAgICAkY29tbWFuZCA9ICIkcW1ha2Vjb21tYW5kIEBidWlsZEFyZ3MiOwot
ICAgIHByaW50ICJDYWxsaW5nICckY29tbWFuZCcgaW4gIiAuICRkaXIgLiAiXG5cbiI7Ci0gICAg
cHJpbnQgIkluc3RhbGxhdGlvbiBoZWFkZXJzIGRpcmVjdG9yeTogJGluc3RhbGxIZWFkZXJzXG4i
IGlmKGRlZmluZWQoJGluc3RhbGxIZWFkZXJzKSk7Ci0gICAgcHJpbnQgIkluc3RhbGxhdGlvbiBs
aWJyYXJpZXMgZGlyZWN0b3J5OiAkaW5zdGFsbExpYnNcbiIgaWYoZGVmaW5lZCgkaW5zdGFsbExp
YnMpKTsKLQotICAgIG15ICRjb25maWdDaGFuZ2VkID0gMDsKLSAgICBvcGVuKFFNQUtFLCAiJGNv
bW1hbmQgMj4mMSB8IikgfHwgZGllICJDb3VsZCBub3QgZXhlY3V0ZSBxbWFrZSI7Ci0gICAgd2hp
bGUgKDxRTUFLRT4pIHsKLSAgICAgICAgJGNvbmZpZ0NoYW5nZWQgPSAxIGlmICRfID1+IG0vVGhl
IGNvbmZpZ3VyYXRpb24gd2FzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgYnVpbGQvOwotICAgICAg
ICBwcmludCAkXzsKLSAgICB9Ci0KLSAgICBjbG9zZShRTUFLRSk7Ci0gICAgJHJlc3VsdCA9ICQ/
OwotCi0gICAgaWYgKCRyZXN1bHQgbmUgMCkgewotICAgICAgIGRpZSAiXG5GYWlsZWQgdG8gc2V0
IHVwIGJ1aWxkIGVudmlyb25tZW50IHVzaW5nICRxbWFrZWJpbiFcbiI7Ci0gICAgfQotCi0gICAg
bXkgJG1heWJlTmVlZHNDbGVhbkJ1aWxkID0gMDsKLSAgICBteSAkbmVlZHNJbmNyZW1lbnRhbEJ1
aWxkID0gMDsKLQotICAgICMgRnVsbCBpbmNyZW1lbnRhbCBidWlsZCAocnVuIHFtYWtlKSBuZWVk
ZWQgb24gYnVpbGRib3RzIGFuZCBFV1MgYm90cyBhbHdheXMuCi0gICAgaWYgKGdyZXAoL0NPTkZJ
R1wrPWJ1aWxkYm90LyxAYnVpbGRQYXJhbXMpKSB7Ci0gICAgICAgICRuZWVkc0luY3JlbWVudGFs
QnVpbGQgPSAxOwotICAgIH0KLQotICAgIGlmICgkc3ZuUmV2aXNpb24gbmUgJHByZXZpb3VzU3Zu
UmV2aXNpb24pIHsKLSAgICAgICAgcHJpbnQgIkxhc3QgYnVpbHQgcmV2aXNpb24gd2FzICIgLiAk
cHJldmlvdXNTdm5SZXZpc2lvbiAuCi0gICAgICAgICAgICAiLCBub3cgYXQgcmV2aXNpb24gJHN2
blJldmlzaW9uLiBGdWxsIGluY3JlbWVudGFsIGJ1aWxkIG5lZWRlZC5cbiI7Ci0gICAgICAgICRu
ZWVkc0luY3JlbWVudGFsQnVpbGQgPSAxOwotCi0gICAgICAgIG15IEBmaWxlTGlzdCA9IGxpc3RP
ZkNoYW5nZWRGaWxlc0JldHdlZW5SZXZpc2lvbnMoc291cmNlRGlyKCksICRwcmV2aW91c1N2blJl
dmlzaW9uLCAkc3ZuUmV2aXNpb24pOwotCi0gICAgICAgIGZvcmVhY2ggKEBmaWxlTGlzdCkgewot
ICAgICAgICAgICAgaWYgKG0vXC5wcltvaWZdJC8gb3IKLSAgICAgICAgICAgICAgICBtL1wucW1h
a2UuY29uZiQvIG9yCi0gICAgICAgICAgICAgICAgbS9eVG9vbHNcL3FtYWtlXC8vCi0gICAgICAg
ICAgICAgICApIHsKLSAgICAgICAgICAgICAgICBwcmludCAiQ2hhbmdlIHRvICRfIGRldGVjdGVk
LCBjbGVhbiBidWlsZCBtYXkgYmUgbmVlZGVkLlxuIjsKLSAgICAgICAgICAgICAgICAkbWF5YmVO
ZWVkc0NsZWFuQnVpbGQgPSAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoJGNvbmZpZ0NoYW5nZWQpIHsKLSAgICAgICAg
cHJpbnQgIkNhbGxpbmcgJyRtYWtlIHdpcGVjbGVhbicgaW4gIiAuICRkaXIgLiAiXG5cbiI7Ci0g
ICAgICAgICRyZXN1bHQgPSBzeXN0ZW0gIiRtYWtlIHdpcGVjbGVhbiI7Ci0gICAgfQotCi0gICAg
JGNvbW1hbmQgPSAiJG1ha2UiOwotICAgIGlmICgkbmVlZHNJbmNyZW1lbnRhbEJ1aWxkKSB7Ci0g
ICAgICAgICRjb21tYW5kIC49ICIgaW5jcmVtZW50YWwiOwotICAgIH0KLQotICAgIHByaW50ICJc
bkNhbGxpbmcgJyRjb21tYW5kJyBpbiAiIC4gJGRpciAuICJcblxuIjsKLSAgICAkcmVzdWx0ID0g
c3lzdGVtICRjb21tYW5kOwotCi0gICAgY2hkaXIgIi4uIiBvciBkaWU7Ci0KLSAgICBpZiAoJHJl
c3VsdCBlcSAwKSB7Ci0gICAgICAgICMgTm93IHRoYXQgdGhlIGJ1aWxkIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkgd2UgY2FuIHNhdmUgdGhlIFNWTiByZXZpc2lvbgotICAgICAgICBvcGVuKEJVSUxU
UkVWSVNJT05TLCAiPj4kcGF0aFRvQnVpbHRSZXZpc2lvbnMiKTsKLSAgICAgICAgcHJpbnQgQlVJ
TFRSRVZJU0lPTlMgIlNWTl9SRVZJU0lPTiA9ICRzdm5SZXZpc2lvblxuIjsKLSAgICAgICAgY2xv
c2UoQlVJTFRSRVZJU0lPTlMpOwotICAgIH0gZWxzaWYgKCEkY29tbWFuZCA9fiAvaW5jcmVtZW50
YWwvICYmIGV4aXRTdGF0dXMoJHJlc3VsdCkpIHsKLSAgICAgICAgbXkgJGV4aXRDb2RlID0gZXhp
dFN0YXR1cygkcmVzdWx0KTsKLSAgICAgICAgbXkgJGZhaWxNZXNzYWdlID0gPDxFT0Y7Ci0KLT09
PT09IEJVSUxEIEZBSUxFRCA9PT09PT0KLQotVGhlIGJ1aWxkIGZhaWxlZCB3aXRoIGV4aXQgY29k
ZSAkZXhpdENvZGUuIFRoaXMgbWF5IGhhdmUgYmVlbiBiZWNhdXNlIHlvdQotCi0gIC0gYWRkZWQg
YW4gI2luY2x1ZGUgdG8gYSBzb3VyY2UvaGVhZGVyCi0gIC0gYWRkZWQgYSBRX09CSkVDVCBtYWNy
byB0byBhIGNsYXNzCi0gIC0gYWRkZWQgYSBuZXcgcmVzb3VyY2UgdG8gYSBxcmMgZmlsZQotCi1h
cyBkZXBlbmRlbmNpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHJlLWNvbXB1dGVkIGZvciBsb2Nh
bCBkZXZlbG9wZXIgYnVpbGRzLgotWW91IG1heSB0cnkgY29tcHV0aW5nIGRlcGVuZGVuY2llcyBt
YW51YWxseSBieSBydW5uaW5nICdtYWtlIHFtYWtlX2FsbCcgaW46Ci0KLSAgJGRpcgotCi1vciBw
YXNzaW5nIC0tbWFrZWFyZ3M9InFtYWtlX2FsbCIgdG8gYnVpbGQtd2Via2l0LgotCi09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLUVPRgotICAgICAgICBwcmludCAiJGZhaWxNZXNzYWdlIjsK
LSAgICB9IGVsc2lmICgkbWF5YmVOZWVkc0NsZWFuQnVpbGQpIHsKLSAgICAgICAgcHJpbnQgIlxu
SW5jcmVtZW50YWwgYnVpbGQgZmFpbGVkLCBjbGVhbiBidWlsZCBuZWVkZWQuIFxuIjsKLSAgICAg
ICAgcHJpbnQgIkNhbGxpbmcgJyRtYWtlIHdpcGVjbGVhbicgaW4gIiAuICRkaXIgLiAiXG5cbiI7
Ci0gICAgICAgIGNoZGlyICRkaXIgb3IgZGllOwotICAgICAgICBzeXN0ZW0gIiRtYWtlIHdpcGVj
bGVhbiI7Ci0KLSAgICAgICAgcHJpbnQgIlxuQ2FsbGluZyAnJG1ha2UnIGluICIgLiAkZGlyIC4g
IlxuXG4iOwotICAgICAgICAkcmVzdWx0ID0gc3lzdGVtICRtYWtlOwotICAgIH0KLQotICAgIHJl
dHVybiAkcmVzdWx0OwotfQotCiBzdWIgYnVpbGRHdGtQcm9qZWN0CiB7CiAgICAgbXkgKCRwcm9q
ZWN0LCAkY2xlYW4sICRwcmVmaXgsICRtYWtlQXJncywgJG5vV2ViS2l0MSwgJG5vV2ViS2l0Miwg
QGZlYXR1cmVzKSA9IEBfOwpAQCAtMjQ0OCwxMCArMjA4OCw2IEBAIHN1YiBzZXRQYXRoRm9yUnVu
bmluZ1dlYktpdEFwcAogCiAgICAgaWYgKGlzQXBwbGVXaW5XZWJLaXQoKSkgewogICAgICAgICAk
ZW52LT57UEFUSH0gPSBqb2luKCc6JywgcHJvZHVjdERpcigpLCBkaXJuYW1lKGluc3RhbGxlZFNh
ZmFyaVBhdGgoKSksIGFwcGxlQXBwbGljYXRpb25TdXBwb3J0UGF0aCgpLCAkZW52LT57UEFUSH0g
fHwgIiIpOwotICAgIH0gZWxzaWYgKGlzUXQoKSkgewotICAgICAgICBteSAkcXRMaWJzID0gYCRx
bWFrZWJpbiAtcXVlcnkgUVRfSU5TVEFMTF9MSUJTYDsKLSAgICAgICAgJHF0TGlicyA9fiBzL1tc
bnxccl0kLy9nOwotICAgICAgICAkZW52LT57UEFUSH0gPSBqb2luKCc7JywgJHF0TGlicywgcHJv
ZHVjdERpcigpIC4gIi9saWIiLCAkZW52LT57UEFUSH0gfHwgIiIpOwogICAgIH0KIH0KIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6
ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvYmFzZWxpbmVvcHRpbWl6ZXIucHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMywgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NTksNyArNjAsNiBAQCBkZWYgX2Jhc2VsaW5lX3NlYXJjaF9oeXBlcmdyYXBoKGhvc3QsIHBvCiBf
VklSVFVBTF9QT1JUUyA9IHsKICAgICAnbWFjLWZ1dHVyZSc6IFsnTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWZ1dHVyZScsICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnLCAnTGF5b3V0VGVzdHMn
XSwKICAgICAnd2luLWZ1dHVyZSc6IFsnTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLWZ1dHVyZScs
ICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4nLCAnTGF5b3V0VGVzdHMnXSwKLSAgICAncXQtdW5r
bm93bic6IFsnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtdW5rbm93bicsICdMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdCcsICdMYXlvdXRUZXN0cyddLAogfQogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2Vs
aW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC05OSwyNCArMTAwLDE1IEBAIGNsYXNzIEJhc2VsaW5lT3B0aW1pemVyVGVzdCh1bml0
dGVzdC5UZXMKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbic6ICc0
NjJkMDNiOWMwMjVkYjFiMDM5MmQ3NDUzMzEwZGJlZTVmOWE5ZTc0JywKICAgICAgICAgfSkKIAot
ICAgIGRlZiB0ZXN0X3F0X3Vua25vd24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2Fzc2VydE9wdGlt
aXphdGlvbih7Ci0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNDYyZDAz
YjljMDI1ZGIxYjAzOTJkNzQ1MzMxMGRiZWU1ZjlhOWU3NCcsCi0gICAgICAgIH0sIHsKLSAgICAg
ICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdCc6ICc0NjJkMDNiOWMwMjVkYjFiMDM5MmQ3
NDUzMzEwZGJlZTVmOWE5ZTc0JywKLSAgICAgICAgfSkKLQogICAgIGRlZiB0ZXN0X3dpbl9kb2Vz
X25vdF9kcm9wX3RvX3dpbl83c3AwKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6
YXRpb24oewogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbic6ICcxJywKICAg
ICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnOiAnMicsCiAgICAgICAgICAgICAn
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrJzogJzMnLAotICAgICAgICAgICAgJ0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0JzogJzQnLAogICAgICAgICB9LCB7CiAgICAgICAgICAgICAnTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luJzogJzEnLAogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYyc6ICcyJywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsnOiAnMycs
Ci0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcsCiAgICAgICAgIH0p
CiAKICAgICBkZWYgdGVzdF9jb21tb25fZGlyZWN0b3J5X2luY2x1ZGVzX3Jvb3Qoc2VsZik6CkBA
IC0xMjQsNyArMTE2LDYgQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXJUZXN0KHVuaXR0ZXN0LlRl
cwogICAgICAgICAjIHRvIG9wdGltaXplLgogICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6YXRp
b25GYWlsZWQoewogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ayc6ICdlODYw
ODc2M2Y2MjQxZGRhY2RkNWMxZWYxOTczYmEyNzE3N2QwODQ2JywKLSAgICAgICAgICAgICdMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdCc6ICdiY2JkNDU3ZDU0NTk4NmI3YWJmMTIyMTY1NWQ3MjIzNjMw
NzlhYzg3JywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnOiAnZTg2MDg3
NjNmNjI0MWRkYWNkZDVjMWVmMTk3M2JhMjcxNzdkMDg0NicsCiAgICAgICAgIH0pCiAKQEAgLTE1
MywxMCArMTQ0LDggQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXJUZXN0KHVuaXR0ZXN0LlRlcwog
ICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6YXRpb24oewogICAgICAgICAgICAgJ0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ayc6ICczJywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwnOiAnMycsCi0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcs
CiAgICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjJzogJzUnLAogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAnTGF5b3V0VGVzdHMnOiAnMycsCi0gICAgICAgICAgICAnTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcsCiAgICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjJzogJzUnLAogICAgICAgICB9KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQko
cmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAog
IyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM3Niw3ICszNzcsNiBAQCBjbGFzcyBDaGFu
Z2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNl
X3Jldmlld2VyX3RleHRfbGlzdCgnUmV2aWV3ZWQgYnkgTk9CT0RZLicsIE5vbmUpCiAgICAgICAg
IHNlbGYuX2Fzc2VydF9wYXJzZV9yZXZpZXdlcl90ZXh0X2xpc3QoJ1Jldmlld2VkIGJ5IE5PQk9E
WSAtIEJ1aWxkIEZpeC4nLCBOb25lKQogICAgICAgICBzZWxmLl9hc3NlcnRfcGFyc2VfcmV2aWV3
ZXJfdGV4dF9saXN0KCdSZXZpZXdlZCBieSBOT0JPRFksIGxheW91dCB0ZXN0cyBmaXguJywgTm9u
ZSkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNlX3Jldmlld2VyX3RleHRfbGlzdCgnUmV2aWV3
ZWQgYnkgTk9CT0RZIChRdCBidWlsZCBmaXggcHQgMikuJywgTm9uZSkKICAgICAgICAgc2VsZi5f
YXNzZXJ0X3BhcnNlX3Jldmlld2VyX3RleHRfbGlzdCgnUmV2aWV3ZWQgYnkgTk9CT0RZKHJvbGxv
dXQpJywgTm9uZSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNlX3Jldmlld2VyX3RleHRfbGlz
dCgnUmV2aWV3ZWQgYnkgTk9CT0RZIChCdWlsZCBmaXgsIGZvcmdvdCB0byBzdm4gYWRkIHRoaXMg
ZmlsZSknLCBOb25lKQogICAgICAgICBzZWxmLl9hc3NlcnRfcGFyc2VfcmV2aWV3ZXJfdGV4dF9s
aXN0KCdSZXZpZXdlZCBieSBub2JvZHkgKHRyaXZpYWwgZm9sbG93IHVwIGZpeCksIEpvc2VwaCBQ
ZWNvcmFybyBMR1RNLWVkLicsIE5vbmUpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvd2F0Y2hsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDIwICs3NSw2IEBACiAgICAgICAgICJHdGtXZWJLaXQyUHVibGljQVBJIjogewogICAgICAg
ICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay8iLAog
ICAgICAgICB9LAotICAgICAgICAiUXRCdWlsZFN5c3RlbSI6IHsKLSAgICAgICAgICAgICMgUHJv
amVjdCBmaWxlcyBmb3IgZWFjaCB0YXJnZXQgYXJlIGludGVudGlvbmFsbHkgbGVmdCBvdXQsIGFz
IHRob3NlCi0gICAgICAgICAgICAjIG1vc3RseSBsaXN0IHNvdXJjZSBhbmQgaGVhZGVyIGZpbGVz
LCB3aGljaCB3b3VsZCBqdXN0IGFkZCBub2lzZS4KLSAgICAgICAgICAgICJmaWxlbmFtZSI6IHIi
VG9vbHMvcW1ha2UvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8V2ViS2l0LnBybyIsCi0g
ICAgICAgIH0sCi0gICAgICAgICJRdFdlYktpdDJQdWJsaWNBUEkiOiB7Ci0gICAgICAgICAgICAi
ZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvIgotICAgICAgICAg
ICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvIgot
ICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3F0LyIsCi0gICAgICAgIH0sCi0gICAgICAgICJRdEdyYXBoaWNzIjogewotICAgICAgICAgICAg
ImZpbGVuYW1lIjogciJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC8iCi0gICAg
ICAgIH0sCiAgICAgICAgICJDb29yZGluYXRlZEdyYXBoaWNzIjogewogICAgICAgICAgICAgImZp
bGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy8iCiAgICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy8iCkBAIC0xMDEsMjYgKzg3LDYgQEAKICAgICAgICAg
Ik9wZW5HTCI6IHsKICAgICAgICAgICAgICJmaWxlbmFtZSI6IHIiU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsLyIsCiAgICAgICAgIH0sCi0gICAgICAgICJRdFdlYktpdDJQ
bGF0Zm9ybVNwZWNpZmljIjogewotICAgICAgICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2Vi
S2l0Mi8uKlwuKHByaXxwcm8pIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dl
YktpdDIvUGxhdGZvcm0vcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dl
YktpdDIvcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dl
YktpdDIvU2hhcmVkL3F0LyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvcXQvIgotICAgICAgICAgICAgICAgICAgICAg
ICAgciJ8U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL3F0LyIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC8i
Ci0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0
LyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAg
ICByInxTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0LyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9x
dC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL3F0LyIsCi0gICAgICAgIH0sCiAgICAgICAgICJDU1MiOiB7CiAg
ICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJDb3JlL2Nzcy8iLAogICAgICAgICB9
LApAQCAtMzY2LDEwICszMzIsNiBAQAogICAgICAgICAiTmV0d29ya0luZm8iOiBbICJneXV5b3Vu
Zy5raW1Ad2Via2l0Lm9yZyIsICJkY2hyaXNAZ21haWwuY29tIiBdLAogICAgICAgICAiT3BlbkdM
IiA6IFsgIm5vYW1Ad2Via2l0Lm9yZyIsICJkaW5vQGFwcGxlLmNvbSIsICJrb25kYXBhbGx5a2Fs
eWFuQGdtYWlsLmNvbSIgXSwKICAgICAgICAgIlBlcmZvcm1hbmNlVGVzdHMiOiBbICJybml3YUB3
ZWJraXQub3JnIiBdLAotICAgICAgICAiUXRCdWlsZFN5c3RlbSIgOiBbICJhYmVjc2lAd2Via2l0
Lm9yZyIgXSwKLSAgICAgICAgIlF0R3JhcGhpY3MiIDogWyAibm9hbUB3ZWJraXQub3JnIiBdLAot
ICAgICAgICAiUXRXZWJLaXQyUGxhdGZvcm1TcGVjaWZpYyI6IFsgImFsZXhpc0B3ZWJraXQub3Jn
IiwgImNtYXJjZWxvQHdlYmtpdC5vcmciLCAiYWJlY3NpQHdlYmtpdC5vcmciIF0sCi0gICAgICAg
ICJRdFdlYktpdDJQdWJsaWNBUEkiOiBbICJhbGV4aXNAd2Via2l0Lm9yZyIsICJjbWFyY2Vsb0B3
ZWJraXQub3JnIiwgImFiZWNzaUB3ZWJraXQub3JnIiBdLAogICAgICAgICAiUmVnaW9uc0RldmVs
b3BtZW50fFJlZ2lvbnNFeHBlY3RhdGlvbnNNb3JlfFJlZ2lvbnNFeHBlY3RhdGlvbnNMZXNzfFJl
Z2lvbnNVc2FnZSI6IFsgIldlYmtpdEJ1Z1RyYWNrZXJAYWRvYmUuY29tIiBdLAogICAgICAgICAi
UmVuZGVyaW5nIjogWyAiZXNwcmVobithdXRvY2NAY2hyb21pdW0ub3JnIiwgImdsZW5uQHNreW5h
di5jb20iLCAia29uZGFwYWxseWthbHlhbkBnbWFpbC5jb20iIF0sCiAgICAgICAgICJSZW5kZXJM
YXllcnMiIDogWyAic2ltb24uZnJhc2VyQGFwcGxlLmNvbSIsICJrb25kYXBhbGx5a2FseWFuQGdt
YWlsLmNvbSIgXSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250
ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBHYWJvciBSYXBjc2FueWkgKHJn
YWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtOTI1LDkgKzkyNSw2IEBAIGNsYXNzIFBvcnRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgZGlzYWJsZWRfdGVzdF9jaHJvbWl1bV9tYWNfbGlv
bl9pbl90ZXN0X3NoZWxsX21vZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X21vY2tfcG9y
dF93b3JrcygnY2hyb21pdW0tbWFjLWxpb24nLCBhcmdzPVsnLS1hZGRpdGlvbmFsLWRydC1mbGFn
PS0tdGVzdC1zaGVsbCddKQogCi0gICAgZGVmIGRpc2FibGVkX3Rlc3RfcXRfbGludXgoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X21vY2tfcG9ydF93b3JrcygncXQtbGludXgnKQotCiAgICAg
ZGVmIGRpc2FibGVkX3Rlc3RfbWFjX2xpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X21v
Y2tfcG9ydF93b3JrcygnbWFjLWxpb24nKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
YmFzZS5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtOTUsNyArOTYsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVm
IF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6
CiAKICAgICAgICAgIyBUaGlzIHZhbHVlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBjbHMucG9ydF9u
YW1lIGJ5IGhhdmluZyB2ZXJzaW9uIG1vZGlmaWVycwotICAgICAgICAjIGFuZCBvdGhlciBmaWVs
ZHMgYXBwZW5kZWQgdG8gaXQgKGZvciBleGFtcGxlLCAncXQtYXJtJyBvciAnbWFjLXdrMicpLgor
ICAgICAgICAjIGFuZCBvdGhlciBmaWVsZHMgYXBwZW5kZWQgdG8gaXQgKGZvciBleGFtcGxlLCAn
bWFjLXdrMicgb3IgJ3dpbicpLgogICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lCiAKICAg
ICAgICAgIyBUaGVzZSBhcmUgZGVmYXVsdCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgb3ZlcnJpZGRl
biBpbiBhIHN1YmNsYXNzZXMuCkBAIC0xNDEwLDcgKzE0MTEsNiBAQCBjbGFzcyBQb3J0KG9iamVj
dCk6CiAgICAgIyB0byB1c2UgZm9yIGFsbCBwb3J0IGNvbmZpZ3VyYXRpb25zIChpbmNsdWRpbmcg
YXJjaGl0ZWN0dXJlcywgZ3JhcGhpY3MgdHlwZXMsIGV0YykuCiAgICAgZGVmIF9wb3J0X2ZsYWdf
Zm9yX3NjcmlwdHMoc2VsZik6CiAgICAgICAgICMgVGhpcyBpcyBvdmVycnJpZGVuIGJ5IHBvcnRz
IHdoaWNoIG5lZWQgYSBmbGFnIHBhc3NlZCB0byBzY3JpcHRzIHRvIGRpc3Rpbmd1aXNoIHRoZSB1
c2Ugb2YgdGhhdCBwb3J0LgotICAgICAgICAjIEZvciBleGFtcGxlIC0tcXQgb24gbGludXgsIHNp
bmNlIGEgdXNlciBtaWdodCBoYXZlIGJvdGggR3RrIGFuZCBRdCBsaWJyYXJpZXMgaW5zdGFsbGVk
LgogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgZGVmIHRvb2xpbmdfZmxhZyhzZWxmKToKQEAg
LTE1MzYsNyArMTUzNiw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBfd2syX3Bv
cnRfbmFtZShzZWxmKToKICAgICAgICAgIyBCeSBjdXJyZW50IGNvbnZlbnRpb24sIHRoZSBXZWJL
aXQyIG5hbWUgaXMgYWx3YXlzIG1hYy13azIsIHdpbi13azIsIG5vdCBtYWMtbGVvcGFyZC13azIs
IGV0YywKLSAgICAgICAgIyBleGNlcHQgZm9yIFF0IGJlY2F1c2UgV2ViS2l0MiBpcyBvbmx5IHN1
cHBvcnRlZCBieSBRdCA1LjAgKHRoZXJlZm9yZTogcXQtNS4wLXdrMikuCiAgICAgICAgIHJldHVy
biAiJXMtd2syIiAlIHNlbGYucG9ydF9uYW1lCiAKICAgICAjIFdlIG1pZ2h0IG5lZWQgdG8gcGFz
cyBzY20gaW50byB0aGlzIGZ1bmN0aW9uIGZvciBzY20uY2hlY2tvdXRfcm9vdApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9idWlsZGVycy5weQkocmV2aXNpb24gMTU2ODc1KQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTY0LDkgKzY1LDYg
QEAgX2V4YWN0X21hdGNoZXMgPSB7CiAgICAgIkdUSyBMaW51eCA2NC1iaXQgUmVsZWFzZSI6IHsi
cG9ydF9uYW1lIjogImd0ayIsICJpc19kZWJ1ZyI6IEZhbHNlfSwKICAgICAiR1RLIExpbnV4IDY0
LWJpdCBSZWxlYXNlIFdLMiAoVGVzdHMpIjogeyJwb3J0X25hbWUiOiAiZ3RrLXdrMiIsICJpc19k
ZWJ1ZyI6IEZhbHNlfSwKIAotICAgICMgRklYTUU6IFJlbW92ZSByZWJhc2VsaW5lX292ZXJyaWRl
X2RpciBvbmNlIHRoZXJlIGFyZSBRdCBib3RzIGZvciBhbGwgdGhlIHBsYXRmb3JtL3F0LSogZGly
ZWN0b3JpZXMuCi0gICAgIlF0IExpbnV4IFJlbGVhc2UiOiB7InBvcnRfbmFtZSI6ICJxdC1saW51
eCIsICJpc19kZWJ1ZyI6IEZhbHNlLCAicmViYXNlbGluZV9vdmVycmlkZV9kaXIiOiAicXQifSwK
LQogICAgICJFRkwgTGludXggNjQtYml0IFJlbGVhc2UiOiB7InBvcnRfbmFtZSI6ICJlZmwiLCAi
aXNfZGVidWciOiBGYWxzZX0sCiAgICAgIkVGTCBMaW51eCA2NC1iaXQgUmVsZWFzZSBXSzIiOiB7
InBvcnRfbmFtZSI6ICJlZmwtd2syIiwgImlzX2RlYnVnIjogRmFsc2V9LAogICAgICJFRkwgTGlu
dXggNjQtYml0IERlYnVnIFdLMiI6IHsicG9ydF9uYW1lIjogImVmbC13azIiLCAiaXNfZGVidWci
OiBUcnVlfSwKQEAgLTc5LDE0ICs3NywxMCBAQCBfZnV6enlfbWF0Y2hlcyA9IHsKICAgICByIkFw
cGxlIExpb24iOiAibWFjLWxpb24iLAogICAgIHIiV2luZG93cyI6ICJ3aW4iLAogICAgIHIiR1RL
IjogImd0ayIsCi0gICAgciJRdCI6ICJxdCIsCiB9CiAKIAogX3BvcnRzX3dpdGhvdXRfYnVpbGRl
cnMgPSBbCi0gICAgInF0LW1hYyIsCi0gICAgInF0LXdpbiIsCi0gICAgInF0LXdrMiIsCiBdCiAK
IApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkJKHJldmlzaW9uIDE1
Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ1
LDkgKzQ2LDYgQEAgZGVmIHBsYXRmb3JtX29wdGlvbnModXNlX2dsb2JzPUZhbHNlKToKICAgICAg
ICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tZ3RrJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRl
c3Q9J3BsYXRmb3JtJywKICAgICAgICAgICAgIGNvbnN0PSgnZ3RrKicgaWYgdXNlX2dsb2JzIGVs
c2UgJ2d0aycpLAogICAgICAgICAgICAgaGVscD0oJ0FsaWFzIGZvciAtLXBsYXRmb3JtPWd0ayon
IGlmIHVzZV9nbG9icyBlbHNlICdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1ndGsnKSksCi0gICAgICAg
IG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLXF0JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRlc3Q9
InBsYXRmb3JtIiwKLSAgICAgICAgICAgIGNvbnN0PSgncXQqJyBpZiB1c2VfZ2xvYnMgZWxzZSAn
cXQnKSwKLSAgICAgICAgICAgIGhlbHA9KCdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1xdCcgaWYgdXNl
X2dsb2JzIGVsc2UgJ0FsaWFzIGZvciAtLXBsYXRmb3JtPXF0JykpLAogICAgICAgICBdCiAKIApA
QCAtNzgsNyArNzYsNiBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgICAgICAnZ3Rr
Lkd0a1BvcnQnLAogICAgICAgICAnbWFjLk1hY1BvcnQnLAogICAgICAgICAnbW9ja19kcnQuTW9j
a0RSVFBvcnQnLAotICAgICAgICAncXQuUXRQb3J0JywKICAgICAgICAgJ3Rlc3QuVGVzdFBvcnQn
LAogICAgICAgICAnd2luLldpblBvcnQnLAogICAgICkKQEAgLTg5LDcgKzg2LDcgQEAgY2xhc3Mg
UG9ydEZhY3Rvcnkob2JqZWN0KToKICAgICBkZWYgX2RlZmF1bHRfcG9ydChzZWxmLCBvcHRpb25z
KToKICAgICAgICAgcGxhdGZvcm0gPSBzZWxmLl9ob3N0LnBsYXRmb3JtCiAgICAgICAgIGlmIHBs
YXRmb3JtLmlzX2xpbnV4KCkgb3IgcGxhdGZvcm0uaXNfZnJlZWJzZCgpOgotICAgICAgICAgICAg
cmV0dXJuICdxdC1saW51eCcKKyAgICAgICAgICAgIHJldHVybiAnZ3RrJwogICAgICAgICBlbGlm
IHBsYXRmb3JtLmlzX21hYygpOgogICAgICAgICAgICAgcmV0dXJuICdtYWMnCiAgICAgICAgIGVs
aWYgcGxhdGZvcm0uaXNfd2luKCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZmFjdG9yeV91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZmFjdG9yeV91bml0dGVzdC5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAg
LTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsNyArMzUsNiBA
QCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tCiBmcm9tIHdlYmtpdHB5
LnBvcnQgaW1wb3J0IGZhY3RvcnkKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZ3RrCiBmcm9t
IHdlYmtpdHB5LnBvcnQgaW1wb3J0IG1hYwotZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBxdAog
ZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCB0ZXN0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0
IHdpbgogCkBAIC02OCw5ICs2OCw2IEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RD
YXNlKToKICAgICBkZWYgdGVzdF9ndGsoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQo
cG9ydF9uYW1lPSdndGsnLCBjbHM9Z3RrLkd0a1BvcnQpCiAKLSAgICBkZWYgdGVzdF9xdChzZWxm
KToKLSAgICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J3F0JywgY2xzPXF0LlF0UG9y
dCkKLQogICAgIGRlZiB0ZXN0X3Vua25vd25fc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICBzZWxm
LmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yLCBmYWN0b3J5LlBvcnRGYWN0b3J5KE1v
Y2tTeXN0ZW1Ib3N0KCkpLmdldCwgcG9ydF9uYW1lPSd1bmtub3duJykKIApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcG9ydC9xdC5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L3F0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwOSArMCwwIEBACi0jIENv
cHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSMgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAg
ICAgKiBOZWl0aGVyIHRoZSBHb29nbGUgbmFtZSBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250
cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2
ZWQgZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBw
ZXJtaXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklH
SFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgot
IyBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwK
LSMgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0KLSIiIlF0V2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4i
IiIKLQotaW1wb3J0IGdsb2IKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMK
LWltcG9ydCBvcwotaW1wb3J0IHBsYXRmb3JtCi0KLWZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9p
emVkIGltcG9ydCBtZW1vaXplZAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRl
c3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KLWZyb20gd2Via2l0cHku
cG9ydC5iYXNlIGltcG9ydCBQb3J0Ci1mcm9tIHdlYmtpdHB5LnBvcnQueHZmYmRyaXZlciBpbXBv
cnQgWHZmYkRyaXZlcgotZnJvbSB3ZWJraXRweS5wb3J0LmxpbnV4X2dldF9jcmFzaF9sb2cgaW1w
b3J0IEdEQkNyYXNoTG9nR2VuZXJhdG9yCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25h
bWVfXykKLQotCi1jbGFzcyBRdFBvcnQoUG9ydCk6Ci0gICAgQUxMX1ZFUlNJT05TID0gWydsaW51
eCcsICd3aW4nLCAnbWFjJ10KLSAgICBwb3J0X25hbWUgPSAicXQiCi0KLSAgICBkZWYgX3drMl9w
b3J0X25hbWUoc2VsZik6Ci0gICAgICAgIHJldHVybiAicXQtd2syIgotCi0gICAgZGVmIF9wb3J0
X2ZsYWdfZm9yX3NjcmlwdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiAiLS1xdCIKLQotICAgIEBj
bGFzc21ldGhvZAotICAgIGRlZiBkZXRlcm1pbmVfZnVsbF9wb3J0X25hbWUoY2xzLCBob3N0LCBv
cHRpb25zLCBwb3J0X25hbWUpOgotICAgICAgICBpZiBwb3J0X25hbWUgYW5kIHBvcnRfbmFtZSAh
PSBjbHMucG9ydF9uYW1lOgotICAgICAgICAgICAgcmV0dXJuIHBvcnRfbmFtZQotICAgICAgICBy
ZXR1cm4gcG9ydF9uYW1lICsgJy0nICsgaG9zdC5wbGF0Zm9ybS5vc19uYW1lCi0KLSAgICAjIHN5
c19wbGF0Zm9ybSBleGlzdHMgb25seSBmb3IgdW5pdCB0ZXN0aW5nLgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoUXRQb3J0
LCBzZWxmKS5fX2luaXRfXyhob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQotCi0gICAgICAgIHNl
bGYuX29wZXJhdGluZ19zeXN0ZW0gPSBwb3J0X25hbWUucmVwbGFjZSgncXQtJywgJycpCi0KLSAg
ICAgICAgIyBGSVhNRTogV2h5IGlzIHRoaXMgYmVpbmcgc2V0IGF0IGFsbD8KLSAgICAgICAgc2Vs
Zi5fdmVyc2lvbiA9IHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpCi0KLSAgICBkZWYgX2dlbmVyYXRl
X2FsbF90ZXN0X2NvbmZpZ3VyYXRpb25zKHNlbGYpOgotICAgICAgICBjb25maWd1cmF0aW9ucyA9
IFtdCi0gICAgICAgIGZvciB2ZXJzaW9uIGluIHNlbGYuQUxMX1ZFUlNJT05TOgotICAgICAgICAg
ICAgZm9yIGJ1aWxkX3R5cGUgaW4gc2VsZi5BTExfQlVJTERfVFlQRVM6Ci0gICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbnMuYXBwZW5kKFRlc3RDb25maWd1cmF0aW9uKHZlcnNpb249dmVyc2lv
biwgYXJjaGl0ZWN0dXJlPSd4ODYnLCBidWlsZF90eXBlPWJ1aWxkX3R5cGUpKQotICAgICAgICBy
ZXR1cm4gY29uZmlndXJhdGlvbnMKLQotICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgotICAg
ICAgICAjIFRoZSBRdCBwb3J0IGJ1aWxkcyBEUlQgYXMgcGFydCBvZiB0aGUgbWFpbiBidWlsZCBz
dGVwCi0gICAgICAgIHJldHVybiBUcnVlCi0KLSAgICBkZWYgc3VwcG9ydHNfcGVyX3Rlc3RfdGlt
ZW91dChzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfcGF0aF90b19kcml2
ZXIoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdiaW4vJXMnICUgc2Vs
Zi5kcml2ZXJfbmFtZSgpKQotCi0gICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdiaW4vSW1hZ2VEaWZmJykKLQotICAgIGRl
ZiBfcGF0aF90b193ZWJjb3JlX2xpYnJhcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYub3BlcmF0
aW5nX3N5c3RlbSgpID09ICdtYWMnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3Bh
dGgoJ2xpYi9RdFdlYktpdFdpZGdldHMuZnJhbWV3b3JrL1F0V2ViS2l0V2lkZ2V0cycpCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnbGliL2xpYlF0
NVdlYktpdFdpZGdldHMuc28nKQotCi0gICAgZGVmIF9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3lt
Ym9scyhzZWxmKToKLSAgICAgICAgIyBXZSBzZWFyY2ggaW4gZXZlcnkgbGlicmFyeSB0byBiZSBy
ZWxpYWJsZSBpbiB0aGUgY2FzZSBvZiBidWlsZGluZyB3aXRoIENPTkZJRys9Zm9yY2Vfc3RhdGlj
X2xpYnNfYXNfc2hhcmVkLgotICAgICAgICBpZiBzZWxmLm9wZXJhdGluZ19zeXN0ZW0oKSA9PSAn
bWFjJzoKLSAgICAgICAgICAgIGZyYW1ld29ya3MgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNl
bGYuX2J1aWxkX3BhdGgoJ2xpYicpLCAnKi5mcmFtZXdvcmsnKSkKLSAgICAgICAgICAgIHJldHVy
biBbb3MucGF0aC5qb2luKGZyYW1ld29yaywgb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2Vu
YW1lKGZyYW1ld29yaykpWzBdKSBmb3IgZnJhbWV3b3JrIGluIGZyYW1ld29ya3NdCi0gICAgICAg
IGVsc2U6Ci0gICAgICAgICAgICBzdWZmaXggPSAnZGxsJyBpZiBzZWxmLm9wZXJhdGluZ19zeXN0
ZW0oKSA9PSAnd2luJyBlbHNlICdzbycKLSAgICAgICAgICAgIHJldHVybiBnbG9iLmdsb2Iob3Mu
cGF0aC5qb2luKHNlbGYuX2J1aWxkX3BhdGgoJ2xpYicpLCAnbGliKi4nICsgc3VmZml4KSkKLQot
ICAgIEBtZW1vaXplZAotICAgIGRlZiBxdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICB2ZXJzaW9u
ID0gJycKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fZXhlY3V0
aXZlLnJ1bl9jb21tYW5kKFsncW1ha2UnLCAnLXYnXSkuc3BsaXQoJ1xuJyk6Ci0gICAgICAgICAg
ICAgICAgbWF0Y2ggPSByZS5zZWFyY2goJ1F0XHN2ZXJzaW9uXHMoP1A8dmVyc2lvbj5cZFwuXGQp
JywgbGluZSkKLSAgICAgICAgICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAg
dmVyc2lvbiA9IG1hdGNoLmdyb3VwKCd2ZXJzaW9uJykKLSAgICAgICAgICAgICAgICAgICAgYnJl
YWsKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICB2ZXJzaW9uID0gJzUuMCcK
LSAgICAgICAgcmV0dXJuIHZlcnNpb24KLQotICAgIGRlZiBfc2VhcmNoX3BhdGhzKHNlbGYpOgot
ICAgICAgICAjICAgICAgICAgICAgICAgICBxdC1tYWMtd2syCi0gICAgICAgICMgICAgICAgICAg
ICAgICAgLwotICAgICAgICAjICAgICAgIHF0LXdrMSAgcXQtd2syCi0gICAgICAgICMgICAgICAg
ICAgICAgXC8KLSAgICAgICAgIyAgICAgICAgICAgcXQtNS54Ci0gICAgICAgICMgICAgICAgICAg
ICAgICBcCi0gICAgICAgICMgICAgKHF0LWxpbnV4fHF0LW1hY3xxdC13aW4pCi0gICAgICAgICMg
ICAgICAgICAgICAgICAgfAotICAgICAgICAjICAgICAgICAgICAgICAgcXQKLSAgICAgICAgc2Vh
cmNoX3BhdGhzID0gW10KLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9y
dW5uZXInKToKLSAgICAgICAgICAgIGlmIHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpID09ICdtYWMn
OgotICAgICAgICAgICAgICAgIHNlYXJjaF9wYXRocy5hcHBlbmQoJ3F0LW1hYy13azInKQotICAg
ICAgICAgICAgc2VhcmNoX3BhdGhzLmFwcGVuZCgncXQtd2syJykKLSAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHNlYXJjaF9wYXRocy5hcHBlbmQoJ3F0LXdrMScpCi0KLSAgICAgICAgc2VhcmNo
X3BhdGhzLmFwcGVuZCgncXQtJyArIHNlbGYucXRfdmVyc2lvbigpKQotCi0gICAgICAgIHNlYXJj
aF9wYXRocy5hcHBlbmQoc2VsZi5wb3J0X25hbWUgKyAnLScgKyBzZWxmLm9wZXJhdGluZ19zeXN0
ZW0oKSkKLSAgICAgICAgc2VhcmNoX3BhdGhzLmFwcGVuZChzZWxmLnBvcnRfbmFtZSkKLSAgICAg
ICAgcmV0dXJuIHNlYXJjaF9wYXRocwotCi0gICAgZGVmIGRlZmF1bHRfYmFzZWxpbmVfc2VhcmNo
X3BhdGgoc2VsZik6Ci0gICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3Bh
dGgsIHNlbGYuX3NlYXJjaF9wYXRocygpKQotCi0gICAgZGVmIF9wb3J0X3NwZWNpZmljX2V4cGVj
dGF0aW9uc19maWxlcyhzZWxmKToKLSAgICAgICAgcGF0aHMgPSBzZWxmLl9zZWFyY2hfcGF0aHMo
KQotICAgICAgICBpZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAg
ICAgICAgICAgcGF0aHMuYXBwZW5kKCd3azInKQotCi0gICAgICAgICMgZXhwZWN0YXRpb25zX2Zp
bGVzKCkgdXNlcyB0aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluIF9zZWFyY2hfcGF0aHMgcmV2ZXJz
ZWQuCi0gICAgICAgICMgZS5nLiBxdCAtPiBxdC1saW51eCAtPiBxdC01LnggLT4gcXQtd2sxCi0g
ICAgICAgIHJldHVybiBsaXN0KHJldmVyc2VkKFtzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5f
d2Via2l0X2Jhc2VsaW5lX3BhdGgocCksICdUZXN0RXhwZWN0YXRpb25zJykgZm9yIHAgaW4gcGF0
aHNdKSkKLQotICAgIGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25h
bWU9Tm9uZSk6Ci0gICAgICAgIGNsZWFuX2VudiA9IHN1cGVyKFF0UG9ydCwgc2VsZikuc2V0dXBf
ZW52aXJvbl9mb3Jfc2VydmVyKHNlcnZlcl9uYW1lKQotICAgICAgICBjbGVhbl9lbnZbJ1FUV0VC
S0lUX1BMVUdJTl9QQVRIJ10gPSBzZWxmLl9idWlsZF9wYXRoKCdsaWIvcGx1Z2lucycpCi0gICAg
ICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lmX3NldChjbGVhbl9lbnYsICdRVF9E
UlRfV0VCVklFV19NT0RFJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25f
aWZfc2V0KGNsZWFuX2VudiwgJ0RZTERfSU1BR0VfU1VGRklYJykKLSAgICAgICAgc2VsZi5fY29w
eV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ1FUX1dFQktJVF9MT0cnKQot
ICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoY2xlYW5fZW52LCAn
RElTQUJMRV9OSV9XQVJOSU5HJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmly
b25faWZfc2V0KGNsZWFuX2VudiwgJ1FUX1dFQktJVF9QQVVTRV9VSV9QUk9DRVNTJykKLSAgICAg
ICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ1FUX1FQ
QV9QTEFURk9STV9QTFVHSU5fUEFUSCcpCi0gICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9l
bnZpcm9uX2lmX3NldChjbGVhbl9lbnYsICdRVF9XRUJLSVRfRElTQUJMRV9VSVBST0NFU1NfRFVN
UFBJWEVMUycpCi0gICAgICAgIHJldHVybiBjbGVhbl9lbnYKLQotICAgICMgRklYTUU6IFdlIHNo
b3VsZCBmaW5kIGEgd2F5IHRvIHNoYXJlIHRoaXMgaW1wbG1lbnRhdGlvbiB3aXRoIEd0aywKLSAg
ICAjIG9yIHRlYWNoIHJ1bi1sYXVuY2hlciBob3cgdG8gY2FsbCBydW4tc2FmYXJpIGFuZCBtb3Zl
IHRoaXMgZG93biB0byBQb3J0LgotICAgIGRlZiBzaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYs
IHJlc3VsdHNfZmlsZW5hbWUpOgotICAgICAgICBydW5fbGF1bmNoZXJfYXJncyA9IFtdCi0gICAg
ICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAg
ICBydW5fbGF1bmNoZXJfYXJncy5hcHBlbmQoJy0yJykKLSAgICAgICAgcnVuX2xhdW5jaGVyX2Fy
Z3MuYXBwZW5kKCJmaWxlOi8vJXMiICUgcmVzdWx0c19maWxlbmFtZSkKLSAgICAgICAgc2VsZi5f
cnVuX3NjcmlwdCgicnVuLWxhdW5jaGVyIiwgcnVuX2xhdW5jaGVyX2FyZ3MpCi0KLSAgICBkZWYg
b3BlcmF0aW5nX3N5c3RlbShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX29wZXJhdGluZ19z
eXN0ZW0KLQotICAgIGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKToKLSAgICAg
ICAgcmVzdWx0ID0gc3VwZXIoUXRQb3J0LCBzZWxmKS5jaGVja19zeXNfZGVwcyhuZWVkc19odHRw
KQotICAgICAgICBpZiBub3QgJ1dFQktJVF9URVNURk9OVFMnIGluIG9zLmVudmlyb246Ci0gICAg
ICAgICAgICBfbG9nLmVycm9yKCdcblRoZSBXRUJLSVRfVEVTVEZPTlRTIGVudmlyb25tZW50IHZh
cmlhYmxlIGlzIG5vdCBkZWZpbmVkIG9yIG5vdCBzZXQgcHJvcGVybHkuJykKLSAgICAgICAgICAg
IF9sb2cuZXJyb3IoJ1lvdSBtdXN0IHNldCBpdCBiZWZvcmUgcnVubmluZyB0aGUgdGVzdHMuJykK
LSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1VzZSBnaXQgdG8gZ3JhYiB0aGUgYWN0dWFsIGZvbnRz
IGZyb20gaHR0cDovL2dpdG9yaW91cy5vcmcvcXR3ZWJraXQvdGVzdGZvbnRzJykKLSAgICAgICAg
ICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICAjIFF0IHBvcnQg
aXMgbm90IHJlYWR5IGZvciBwYXJhbGxlbCB0ZXN0aW5nLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc3NzMwIGZvciBkZXRhaWxzLgotICAgIGRlZiBkZWZhdWx0
X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDEKLQotICAgIGRlZiBidWls
ZF93ZWJraXRfY29tbWFuZChzZWxmLCBidWlsZF9zdHlsZT1Ob25lKToKLSAgICAgICAgY29tbWFu
ZCA9IHN1cGVyKFF0UG9ydCwgc2VsZikuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGUp
Ci0gICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLXF0IikKLSAgICAgICAgaWYgbm90IHNlbGYuZ2V0
X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICBjb21tYW5kLmFwcGVu
ZCgiLS1uby13ZWJraXQyIikKLSAgICAgICAgY29tbWFuZC5hcHBlbmQoc3VwZXIoUXRQb3J0LCBz
ZWxmKS5tYWtlX2FyZ3MoKSkKLSAgICAgICAgcmV0dXJuIGNvbW1hbmQKLQotICAgIGRlZiBydW5f
d2Via2l0X3Rlc3RzX2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQgPSBzdXBlcihRdFBv
cnQsIHNlbGYpLnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpCi0gICAgICAgIGNvbW1hbmQuYXBw
ZW5kKCItLXF0IikKLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5u
ZXInKToKLSAgICAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItMiIpCi0gICAgICAgIHJldHVybiBj
b21tYW5kCi0KLSAgICBkZWYgX2dldF9jcmFzaF9sb2coc2VsZiwgbmFtZSwgcGlkLCBzdGRvdXQs
IHN0ZGVyciwgbmV3ZXJfdGhhbik6Ci0gICAgICAgIHJldHVybiBHREJDcmFzaExvZ0dlbmVyYXRv
cihuYW1lLCBwaWQsIG5ld2VyX3RoYW4sIHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuX3BhdGhfdG9f
ZHJpdmVyKS5nZW5lcmF0ZV9jcmFzaF9sb2coc3Rkb3V0LCBzdGRlcnIpCkluZGV4OiBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L3F0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMTU4ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1l
dDoKLSMKLSMgICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4g
dGhlIGFib3ZlIGNvcHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGlu
IHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIElu
Yy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3
aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9S
UwotIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJF
IERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1Ig
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsCi0jIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBH
T09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCi0jIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QyIGFz
IHVuaXR0ZXN0Ci1pbXBvcnQgb3MKLWZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKLQotZnJvbSB3
ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZl
LCBNb2NrRXhlY3V0aXZlMgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1
cmUgaW1wb3J0IE91dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0X21vY2sgaW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LnBvcnQgaW1w
b3J0IHBvcnRfdGVzdGNhc2UKLWZyb20gd2Via2l0cHkucG9ydC5iYXNlIGltcG9ydCBQb3J0Ci1m
cm9tIHdlYmtpdHB5LnBvcnQucXQgaW1wb3J0IFF0UG9ydAotZnJvbSB3ZWJraXRweS50b29sLm1v
Y2t0b29sIGltcG9ydCBNb2NrT3B0aW9ucwotCi0KLWNsYXNzIFF0UG9ydFRlc3QocG9ydF90ZXN0
Y2FzZS5Qb3J0VGVzdENhc2UpOgotICAgIHBvcnRfbmFtZSA9ICdxdC1tYWMnCi0gICAgcG9ydF9t
YWtlciA9IFF0UG9ydAotICAgIHNlYXJjaF9wYXRoc19jYXNlcyA9IFsKLSAgICAgICAgeydzZWFy
Y2hfcGF0aHMnOlsncXQtbWFjLXdrMicsICdxdC13azInLCAncXQtNS4wJywgJ3F0LW1hYycsICdx
dCddLCAnb3NfbmFtZSc6J21hYycsICd1c2Vfd2Via2l0Mic6VHJ1ZSwgJ3F0X3ZlcnNpb24nOic1
LjAnfSwKLSAgICAgICAgeydzZWFyY2hfcGF0aHMnOlsncXQtd2syJywgJ3F0LTUuMCcsICdxdC13
aW4nLCAncXQnXSwgJ29zX25hbWUnOid3aW4nLCAndXNlX3dlYmtpdDInOlRydWUsICdxdF92ZXJz
aW9uJzonNS4wJ30sCi0gICAgICAgIHsnc2VhcmNoX3BhdGhzJzpbJ3F0LXdrMicsICdxdC01LjAn
LCAncXQtbGludXgnLCAncXQnXSwgJ29zX25hbWUnOidsaW51eCcsICd1c2Vfd2Via2l0Mic6VHJ1
ZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwKLQotICAgICAgICB7J3NlYXJjaF9wYXRocyc6WydxdC13
azEnLCAncXQtNS4wJywgJ3F0LW1hYycsICdxdCddLCAnb3NfbmFtZSc6J21hYycsICd1c2Vfd2Vi
a2l0Mic6RmFsc2UsICdxdF92ZXJzaW9uJzonNS4wJ30sCi0gICAgICAgIHsnc2VhcmNoX3BhdGhz
JzpbJ3F0LXdrMScsICdxdC01LjAnLCAncXQtd2luJywgJ3F0J10sICdvc19uYW1lJzond2luJywg
J3VzZV93ZWJraXQyJzpGYWxzZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwKLSAgICAgICAgeydzZWFy
Y2hfcGF0aHMnOlsncXQtd2sxJywgJ3F0LTUuMCcsICdxdC1saW51eCcsICdxdCddLCAnb3NfbmFt
ZSc6J2xpbnV4JywgJ3VzZV93ZWJraXQyJzpGYWxzZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwKLSAg
ICAgICAgeydzZWFyY2hfcGF0aHMnOlsncXQtd2sxJywgJ3F0LTUuMScsICdxdC1saW51eCcsICdx
dCddLCAnb3NfbmFtZSc6J2xpbnV4JywgJ3VzZV93ZWJraXQyJzpGYWxzZSwgJ3F0X3ZlcnNpb24n
Oic1LjEnfSwKLSAgICBdCi0KLSAgICBkZWYgX2Fzc2VydF9zZWFyY2hfcGF0aChzZWxmLCBzZWFy
Y2hfcGF0aHMsIG9zX25hbWUsIHVzZV93ZWJraXQyPUZhbHNlLCBxdF92ZXJzaW9uPSc1LjAnKToK
LSAgICAgICAgIyBGSVhNRTogUG9ydCBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCAicGFyc2UiIHRo
ZSBwb3J0IG5hbWUsIGJ1dAotICAgICAgICAjIHJhdGhlciBiZSBwYXNzZWQgY29tcG9uZW50cyAo
ZGlyZWN0bHkgb3IgdmlhIHNldHRlcnMpLiAgT25jZQotICAgICAgICAjIHdlIGZpeCB0aGF0LCB0
aGlzIG1ldGhvZCB3aWxsIG5lZWQgYSByZS13cml0ZS4KLSAgICAgICAgaG9zdCA9IE1vY2tTeXN0
ZW1Ib3N0KG9zX25hbWU9b3NfbmFtZSkKLSAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhl
Y3V0aXZlMihzZWxmLl9xdF92ZXJzaW9uKHF0X3ZlcnNpb24pKQotICAgICAgICBwb3J0X25hbWUg
PSAncXQtJyArIG9zX25hbWUKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGhvc3Q9aG9z
dCwgcXRfdmVyc2lvbj1xdF92ZXJzaW9uLCBwb3J0X25hbWU9cG9ydF9uYW1lLAotICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5u
ZXI9dXNlX3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpKQotICAgICAgICBhYnNvbHV0ZV9zZWFyY2hf
cGF0aHMgPSBtYXAocG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJjaF9wYXRocykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKCksIGFic29s
dXRlX3NlYXJjaF9wYXRocykKLQotICAgIGRlZiBfYXNzZXJ0X2V4cGVjdGF0aW9uc19maWxlcyhz
ZWxmLCBzZWFyY2hfcGF0aHMsIG9zX25hbWUsIHVzZV93ZWJraXQyPUZhbHNlLCBxdF92ZXJzaW9u
PSc1LjAnKToKLSAgICAgICAgIyBGSVhNRTogUG9ydCBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCAi
cGFyc2UiIHRoZSBwb3J0IG5hbWUsIGJ1dAotICAgICAgICAjIHJhdGhlciBiZSBwYXNzZWQgY29t
cG9uZW50cyAoZGlyZWN0bHkgb3IgdmlhIHNldHRlcnMpLiAgT25jZQotICAgICAgICAjIHdlIGZp
eCB0aGF0LCB0aGlzIG1ldGhvZCB3aWxsIG5lZWQgYSByZS13cml0ZS4KLSAgICAgICAgaG9zdCA9
IE1vY2tTeXN0ZW1Ib3N0KG9zX25hbWU9b3NfbmFtZSkKLSAgICAgICAgaG9zdC5leGVjdXRpdmUg
PSBNb2NrRXhlY3V0aXZlMihzZWxmLl9xdF92ZXJzaW9uKHF0X3ZlcnNpb24pKQotICAgICAgICBw
b3J0X25hbWUgPSAncXQtJyArIG9zX25hbWUKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0
KGhvc3Q9aG9zdCwgcXRfdmVyc2lvbj1xdF92ZXJzaW9uLCBwb3J0X25hbWU9cG9ydF9uYW1lLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRf
dGVzdF9ydW5uZXI9dXNlX3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQuZXhwZWN0YXRpb25zX2ZpbGVzKCksIHNlYXJjaF9wYXRocykKLQotICAg
IGRlZiBfcXRfdmVyc2lvbihzZWxmLCBxdF92ZXJzaW9uKToKLSAgICAgICAgaWYgcXRfdmVyc2lv
biBpbiAnNS4wJzoKLSAgICAgICAgICAgIHJldHVybiAnUU1ha2UgdmVyc2lvbiAyLjAxYVxuVXNp
bmcgUXQgdmVyc2lvbiA1LjAuMCBpbiAvdXNyL2xvY2FsL1Ryb2xsdGVjaC9RdC01LjAuMC9saWIn
Ci0gICAgICAgIGlmIHF0X3ZlcnNpb24gaW4gJzUuMSc6Ci0gICAgICAgICAgICByZXR1cm4gJ1FN
YWtlIHZlcnNpb24gMy4wXG5Vc2luZyBRdCB2ZXJzaW9uIDUuMS4xIGluIC91c3IvbG9jYWwvUXQt
NS4xL2xpYicKLQotICAgIGRlZiB0ZXN0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgotICAg
ICAgICBmb3IgY2FzZSBpbiBzZWxmLnNlYXJjaF9wYXRoc19jYXNlczoKLSAgICAgICAgICAgIHNl
bGYuX2Fzc2VydF9zZWFyY2hfcGF0aCgqKmNhc2UpCi0KLSAgICBkZWYgdGVzdF9leHBlY3RhdGlv
bnNfZmlsZXMoc2VsZik6Ci0gICAgICAgIGZvciBjYXNlIGluIHNlbGYuc2VhcmNoX3BhdGhzX2Nh
c2VzOgotICAgICAgICAgICAgZXhwZWN0YXRpb25zX2Nhc2UgPSBkZWVwY29weShjYXNlKQotICAg
ICAgICAgICAgaWYgZXhwZWN0YXRpb25zX2Nhc2VbJ3VzZV93ZWJraXQyJ106Ci0gICAgICAgICAg
ICAgICAgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddLmFwcGVuZCgid2syIikKLSAg
ICAgICAgICAgIGV4cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXS5hcHBlbmQoJycpCi0g
ICAgICAgICAgICBleHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10ucmV2ZXJzZSgpCi0g
ICAgICAgICAgICBleHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10gPSBtYXAobGFtYmRh
IHBhdGg6ICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zJyBpZiBu
b3QgcGF0aCBlbHNlICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS8lcy9UZXN0
RXhwZWN0YXRpb25zJyAlIChwYXRoKSwgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocydd
KQotICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2V4cGVjdGF0aW9uc19maWxlcygqKmV4cGVjdGF0
aW9uc19jYXNlKQotCi0gICAgZGVmIHRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToK
LSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZl
ID0gTW9ja0V4ZWN1dGl2ZShzaG91bGRfbG9nPVRydWUpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3Mg
PSAiTU9DSyBydW5fY29tbWFuZDogWydUb29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcicsICctLXJl
bGVhc2UnLCAnLS1xdCcsICdmaWxlOi8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxu
IgotICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5zaG93
X3Jlc3VsdHNfaHRtbF9maWxlLCBbInRlc3QuaHRtbCJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVk
X2xvZ3MpCi0KLSAgICBkZWYgdGVzdF9zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZik6Ci0g
ICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIGVudiA9IHBvcnQuc2V0dXBf
ZW52aXJvbl9mb3Jfc2VydmVyKHBvcnQuZHJpdmVyX25hbWUoKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChlbnZbJ1FUV0VCS0lUX1BMVUdJTl9QQVRIJ10sICcvbW9jay1idWlsZC9saWIvcGx1
Z2lucycpCi0KLSAgICBkZWYgdGVzdF9vcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKCdsaW51eCcsIHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0ncXQtbGlu
dXgnLCBvc19uYW1lPSdsaW51eCcpLm9wZXJhdGluZ19zeXN0ZW0oKSkKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbCgnbWFjJywgc2VsZi5tYWtlX3BvcnQob3NfbmFtZT0nbWFjJykub3BlcmF0aW5n
X3N5c3RlbSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3aW4nLCBzZWxmLm1ha2VfcG9y
dChwb3J0X25hbWU9J3F0LXdpbicsIG9zX25hbWU9J3dpbicpLm9wZXJhdGluZ19zeXN0ZW0oKSkK
LQotICAgIGRlZiB0ZXN0X2NoZWNrX3N5c19kZXBzKHNlbGYpOgotICAgICAgICBwb3J0ID0gc2Vs
Zi5tYWtlX3BvcnQoKQotCi0gICAgICAgICMgU3VjY2VzcwotICAgICAgICBvcy5lbnZpcm9uWydX
RUJLSVRfVEVTVEZPTlRTJ10gPSAnL3RtcC9mb28nCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9
IE1vY2tFeGVjdXRpdmUyKGV4aXRfY29kZT0wKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9y
dC5jaGVja19zeXNfZGVwcyhuZWVkc19odHRwPUZhbHNlKSkKLQotICAgICAgICAjIEZhaWx1cmUK
LSAgICAgICAgZGVsIG9zLmVudmlyb25bJ1dFQktJVF9URVNURk9OVFMnXQotICAgICAgICBwb3J0
Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MSwKLSAgICAgICAgICAgIG91
dHB1dD0ndGVzdGluZyBvdXRwdXQgZmFpbHVyZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uo
cG9ydC5jaGVja19zeXNfZGVwcyhuZWVkc19odHRwPUZhbHNlKSkKLQotICAgIGRlZiB0ZXN0X2Nv
bW1hbmRzKHNlbGYpOgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSJx
dCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC50b29saW5nX2ZsYWcoKSwgIi0tcG9y
dD1xdCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC51cGRhdGVfd2Via2l0X2NvbW1h
bmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpKQotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSwgUG9y
dC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiY2hlY2std2Via2l0LXN0eWxlIikpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocG9ydC5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIFBvcnQuc2Ny
aXB0X3NoZWxsX2NvbW1hbmQoInByZXBhcmUtQ2hhbmdlTG9nIikpCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocG9ydC5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJidWlsZC13ZWJraXQiKSArIFsiLS1xdCIsICItLW5vLXdlYmtpdDIiLCBwb3J0Lm1h
a2VfYXJncygpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9qYXZhc2NyaXB0
Y29yZV90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1qYXZh
c2NyaXB0Y29yZS10ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dl
YmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21t
YW5kKCJydW4td2Via2l0LXRlc3RzIikgKyBbIi0tcXQiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbChwb3J0LnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hl
bGxfY29tbWFuZCgidGVzdC13ZWJraXRweSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQucnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFu
ZCgidGVzdC13ZWJraXRwZXJsIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5f
YmluZGluZ3NfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4t
YmluZGluZ3MtdGVzdHMiKSkKLQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9u
YW1lPSJxdCIsIG9wdGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQudG9vbGluZ19mbGFnKCksICItLXBvcnQ9cXQt
d2syIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnVwZGF0ZV93ZWJraXRfY29tbWFu
ZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ1cGRhdGUtd2Via2l0IikpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5jaGVja193ZWJraXRfc3R5bGVfY29tbWFuZCgpLCBQb3J0
LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJjaGVjay13ZWJraXQtc3R5bGUiKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LnByZXBhcmVfY2hhbmdlbG9nX2NvbW1hbmQoKSwgUG9ydC5zY3Jp
cHRfc2hlbGxfY29tbWFuZCgicHJlcGFyZS1DaGFuZ2VMb2ciKSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LmJ1aWxkX3dlYmtpdF9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2Nv
bW1hbmQoImJ1aWxkLXdlYmtpdCIpICsgWyItLXF0IiwgcG9ydC5tYWtlX2FyZ3MoKV0pCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFu
ZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMi
KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl93ZWJraXRfdW5pdF90ZXN0c19j
b21tYW5kKCksIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0
X3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLXdlYmtpdC10
ZXN0cyIpICsgWyItLXF0IiwgIi0yIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5y
dW5fcHl0aG9uX3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQo
InRlc3Qtd2Via2l0cHkiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9wZXJs
X3VuaXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Vi
a2l0cGVybCIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2JpbmRpbmdzX3Rl
c3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWJpbmRpbmdzLXRl
c3RzIikpCi0KLSAgICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgotICAgICAgICAjIFRo
aXMgZnVuY3Rpb24gdGVzdGVkIGluIGxpbnV4X2dldF9jcmFzaF9sb2dfdW5pdHRlc3QucHkKLSAg
ICAgICAgcGFzcwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQko
cmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vy
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkg
R29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENo
cmlzIEplcmRvbmVrIChjaHJpcy5qZXJkb25la0BnbWFpbC5jb20pCiAjIENvcHlyaWdodCAoQykg
MjAxMCBQcm9GVVNJT04gZW1iZWRkZWQgc3lzdGVtcworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMTM0LDM3ICsxMzUsMTMgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAg
ICAgIyBUaGUgQVBJIHRlc3QgaGFybmVzc2VzIGhhdmUgbm8gY29uZmlnLmggYW5kIHVzZSBmdW5u
eSBtYWNyb3MgbGlrZQogICAgICAgIyBURVNUX0NMQVNTX05BTUUuCiAgICAgICAiVG9vbHMvV2Vi
S2l0QVBJVGVzdC8iLAotICAgICAgIlRvb2xzL1Rlc3RXZWJLaXRBUEkvIiwKLSAgICAgICJTb3Vy
Y2UvV2ViS2l0L3F0L3Rlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXciXSwKKyAgICAgICJUb29scy9U
ZXN0V2ViS2l0QVBJLyJdLAogICAgICBbIi1idWlsZC9pbmNsdWRlIiwKICAgICAgICItcmVhZGFi
aWxpdHkvbmFtaW5nIl0pLAogICAgIChbIyBUaGVyZSBpcyBubyBjbGVhbiB3YXkgdG8gYXZvaWQg
Inl5XyoiIG5hbWVzIHVzZWQgYnkgZmxleC4KLSAgICAgICJTb3VyY2UvV2ViQ29yZS9jc3MvQ1NT
UGFyc2VyLmNwcCIsCi0gICAgICAjIFF0IGNvZGUgdXNlcyAnXycgaW4gc29tZSBwbGFjZXMgKHN1
Y2ggYXMgcHJpdmF0ZSBzbG90cwotICAgICAgIyBhbmQgb24gdGVzdCB4eHhfZGF0YSBtZXRob3Mg
b24gdGVzdHMpCi0gICAgICAiU291cmNlL0phdmFTY3JpcHRDb3JlL3F0LyIsCi0gICAgICAiU291
cmNlL1dlYktpdC9xdC90ZXN0cy8iLAotICAgICAgIlNvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRp
dmUvIiwKLSAgICAgICJTb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzLyJdLAorICAgICAgIlNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIl0sCiAgICAgIFsiLXJlYWRhYmlsaXR5L25hbWlu
ZyJdKSwKIAotICAgIChbIyBUaGUgUXQgQVBJcyB1c2UgUXQgZGVjbGFyYXRpb24gc3R5bGUsIGl0
IHB1dHMgdGhlICogdG8KLSAgICAgICMgdGhlIHZhcmlhYmxlIG5hbWUsIG5vdCB0byB0aGUgY2xh
c3MuCi0gICAgICAiU291cmNlL1dlYktpdC9xdC9BcGkvIiwKLSAgICAgICJTb3VyY2UvV2ViS2l0
L3F0L1dpZGdldEFwaS8iXSwKLSAgICAgWyItcmVhZGFiaWxpdHkvbmFtaW5nIiwKLSAgICAgICIt
d2hpdGVzcGFjZS9kZWNsYXJhdGlvbiJdKSwKLQotICAgICAoWyMgUXQncyBNaW5pQnJvd3NlciBo
YXMgbm8gY29uZmlnLmgKLSAgICAgICAiVG9vbHMvTWluaUJyb3dzZXIvcXQiLAotICAgICAgICJU
b29scy9NaW5pQnJvd3Nlci9xdC9yYXciXSwKLSAgICAgIFsiLWJ1aWxkL2luY2x1ZGUiXSksCi0K
LSAgICAoWyMgVGhlIFF0IEFQSXMgdXNlIFF0L1FNTCBuYW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1
ZGVzCi0gICAgICAjIG5hbWluZyBwYXJhbWV0ZXJzIGluIGggZmlsZXMuCi0gICAgICAiU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdCJdLAotICAgICBbIi1yZWFkYWJpbGl0eS9wYXJhbWV0
ZXJfbmFtZSJdKSwKLQogICAgIChbIyBUaGUgR1RLKyBwb3J0IHVzZXMgdGhlIGF1dG90b29sc2Nv
bmZpZy5oIGhlYWRlciBpbiBzb21lIEMgc291cmNlcwogICAgICAgIyB0byBzZXJ2ZSB0aGUgc2Ft
ZSBwdXJwb3NlIG9mIGNvbmZpZy5oLgogICAgICAgIlRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyJd
LApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0
dGVzdC5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2VyX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogIwog
IyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMg
Q29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHlyaWdodCAoQykgMjAw
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSwg
MjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAx
MCBDaHJpcyBKZXJkb25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTIyNSwzMCArMjI1LDYgQEAgY2xhc3MgR2xvYmFsVmFyaWFibGVzVGVzdCh1bml0dGVz
dC5UZXN0QwogICAgICAgICBhc3NlcnROb0NoZWNrKCJTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcCIsCiAgICAgICAgICAgICAgICAgICAgICAgInJlYWRhYmlsaXR5L25hbWluZyIpCiAK
LSAgICAgICAgIyBUZXN0IGlmIFF0IGV4Y2VwdGlvbnMgYXJlIGluZGVlZCB3b3JraW5nCi0gICAg
ICAgIGFzc2VydENoZWNrKCJTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAi
LAotICAgICAgICAgICAgICAgICAgICAicmVhZGFiaWxpdHkvYnJhY2VzIikKLSAgICAgICAgYXNz
ZXJ0Q2hlY2soIlNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVt
ZW50LmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICJyZWFkYWJpbGl0eS9icmFjZXMiKQotICAg
ICAgICBhc3NlcnRDaGVjaygiU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbGF0Zm9ybXBs
dWdpbi9XZWJQbHVnaW4uY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgInJlYWRhYmlsaXR5L2Jy
YWNlcyIpCi0gICAgICAgIGFzc2VydENoZWNrKCJTb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL3Bs
YXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAicmVhZGFi
aWxpdHkvYnJhY2VzIikKLSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dlYktpdC9xdC9X
aWRnZXRBcGkvcXdlYnBhZ2UuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAicmVhZGFiaWxp
dHkvbmFtaW5nIikKLSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dlYktpdC9xdC90ZXN0
cy9xd2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAg
ICAicmVhZGFiaWxpdHkvbmFtaW5nIikKLSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dl
YktpdC9xdC9kZWNsYXJhdGl2ZS9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAicmVhZGFiaWxpdHkvbmFtaW5nIikKLSAgICAgICAgYXNzZXJ0Tm9D
aGVjaygiU291cmNlL1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4u
Y3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAicmVhZGFiaWxpdHkvbmFtaW5nIikKLQotICAg
ICAgICBhc3NlcnROb0NoZWNrKCJUb29scy9NaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3BwIiwK
LSAgICAgICAgICAgICAgICAgICAgImJ1aWxkL2luY2x1ZGUiKQotCi0gICAgICAgIGFzc2VydE5v
Q2hlY2soIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQiLAotICAgICAgICAgICAgICAg
ICAgICAicmVhZGFiaWxpdHkvcGFyYW1ldGVyX25hbWUiKQotCiAgICAgICAgIGFzc2VydE5vQ2hl
Y2soIlNvdXJjZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RlYnVnZ2VyL0RlYnVnZ2VyLmgi
LAogICAgICAgICAgICAgICAgICAgICAgICJidWlsZC9oZWFkZXJfZ3VhcmQiKQogCkluZGV4OiBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHkJKHJldmlz
aW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21h
a2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAx
MiBJbnRlbCBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKQEAgLTY1LDcgKzY2LDYgQEAgY2xhc3MgQ01ha2VDaGVja2VyKG9iamVjdCk6CiAgICAgICAg
ICNGcm9tIEZpbmRQa2dDb25maWcuY21ha2UKICAgICAgICAgJ3BrZ19jaGVja19tb2R1bGVzJywK
ICAgICAgICAgJ3Byb2plY3QnLAotICAgICAgICAncXRfd3JhcF9jcHAnLCAncXRfd3JhcF91aScs
CiAgICAgICAgICdyZW1vdmVfZGVmaW5pdGlvbnMnLCAncmV0dXJuJywKICAgICAgICAgJ3NlcGFy
YXRlX2FyZ3VtZW50cycsICdzZXQnLCAnc2V0X2RpcmVjdG9yeV9wcm9wZXJ0aWVzJywgJ3NldF9w
cm9wZXJ0eScsCiAgICAgICAgICdzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMnLCAnc2V0X3Rh
cmdldF9wcm9wZXJ0aWVzJywKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hl
Y2tlcnMvY3BwLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUv
Y2hlY2tlcnMvY3BwLnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAK
ICMKICMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgotIyBD
b3B5cmlnaHQgKEMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5
cmlnaHQgKEMpIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBD
b3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQog
IwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKQEAgLTI3MTgsMTMgKzI3MTgsNiBAQCBkZWYgX2NsYXNzaWZ5X2luY2x1
ZGUoZmlsZW5hbWUsIGluY2x1ZGUsCiAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5oJykgYW5k
IGZpbGVuYW1lICE9IGluY2x1ZGU6CiAgICAgICAgIHJldHVybiBfT1RIRVJfSEVBREVSOwogCi0g
ICAgIyBRdCdzIG1vYyBmaWxlcyBkbyBub3QgZm9sbG93IHRoZSBuYW1pbmcgYW5kIG9yZGVyaW5n
IHJ1bGVzLCBzbyB0aGV5IHNob3VsZCBiZSBza2lwcGVkCi0gICAgaWYgaW5jbHVkZS5zdGFydHN3
aXRoKCdtb2NfJykgYW5kIGluY2x1ZGUuZW5kc3dpdGgoJy5jcHAnKToKLSAgICAgICAgcmV0dXJu
IF9NT0NfSEVBREVSCi0KLSAgICBpZiBpbmNsdWRlLmVuZHN3aXRoKCcubW9jJyk6Ci0gICAgICAg
IHJldHVybiBfTU9DX0hFQURFUgotCiAgICAgIyBJZiB0aGUgdGFyZ2V0IGZpbGUgYmFzZW5hbWUg
c3RhcnRzIHdpdGggdGhlIGluY2x1ZGUgd2UncmUgY2hlY2tpbmcKICAgICAjIHRoZW4gd2UgY29u
c2lkZXIgaXQgdGhlIHByaW1hcnkgaGVhZGVyLgogICAgIHRhcmdldF9iYXNlID0gRmlsZUluZm8o
ZmlsZW5hbWUpLmJhc2VfbmFtZSgpCkBAIC0yNzM0LDkgKzI3MjcsNiBAQCBkZWYgX2NsYXNzaWZ5
X2luY2x1ZGUoZmlsZW5hbWUsIGluY2x1ZGUsCiAgICAgaWYgbm90IGluY2x1ZGVfc3RhdGUudmlz
aXRlZF9wcmltYXJ5X3NlY3Rpb24oKToKICAgICAgICAgaWYgdGFyZ2V0X2Jhc2UuZmluZChpbmNs
dWRlX2Jhc2UpICE9IC0xOgogICAgICAgICAgICAgcmV0dXJuIF9QUklNQVJZX0hFQURFUgotICAg
ICAgICAjIFF0IHByaXZhdGUgQVBJcyB1c2UgX3AuaCBzdWZmaXguCi0gICAgICAgIGlmIGluY2x1
ZGVfYmFzZS5maW5kKHRhcmdldF9iYXNlKSAhPSAtMSBhbmQgaW5jbHVkZV9iYXNlLmVuZHN3aXRo
KCdfcCcpOgotICAgICAgICAgICAgcmV0dXJuIF9QUklNQVJZX0hFQURFUgogCiAgICAgIyBJZiB3
ZSBhbHJlYWR5IGVuY291bnRlcmVkIGEgcHJpbWFyeSBoZWFkZXIsIHBlcmZvcm0gYSBzdHJpY3Qg
Y29tcGFyaXNvbi4KICAgICAjIEluIGNhc2UgdGhlIHR3byBmaWxlbmFtZSBiYXNlcyBhcmUgdGhl
IHNhbWUgdGhlbiB0aGUgYWJvdmUgbGVuaWVudCBjaGVjawpAQCAtMjgzNiw3ICsyODI2LDcgQEAg
ZGVmIGNoZWNrX2luY2x1ZGVfbGluZShmaWxlbmFtZSwgZmlsZV9leAogICAgICAgICAgICAgICAg
ICAgJ1lvdSBzaG91bGQgYWRkIGEgYmxhbmsgbGluZSBhZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxl
XCdzIG93biBoZWFkZXIuJykKIAogICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIGFsbCBoZWFkZXJz
IGJlc2lkZXMgY29uZmlnLmggYW5kIHRoZSBwcmltYXJ5IGhlYWRlciBhcmUKLSAgICAjIGFscGhh
YmV0aWNhbGx5IHNvcnRlZC4gU2tpcCBRdCdzIG1vYyBmaWxlcy4KKyAgICAjIGFscGhhYmV0aWNh
bGx5IHNvcnRlZC4KICAgICBpZiBub3QgZXJyb3JfbWVzc2FnZSBhbmQgaGVhZGVyX3R5cGUgPT0g
X09USEVSX0hFQURFUjoKICAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1i
ZXIgLSAxOwogICAgICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVzLmxpbmVzW3ByZXZp
b3VzX2xpbmVfbnVtYmVyXQpAQCAtMzE5MSw3ICszMTgxLDYgQEAgZGVmIGNoZWNrX2lkZW50aWZp
ZXJfbmFtZV9pbl9kZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRf
aWRlbnRpZmllci5zdGFydHN3aXRoKCdOUE5fJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1v
ZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnTlBQXycpCiAgICAgICAgICAgICAgICAgYW5k
IG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ05QXycpCi0gICAgICAgICAgICAg
ICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3F0XycpCiAgICAgICAg
ICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ19xXycpCiAg
ICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ2Nh
aXJvXycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0
c3dpdGgoJ0Vjb3JlXycpCkBAIC0zMTk5LDcgKzMxODgsNiBAQCBkZWYgY2hlY2tfaWRlbnRpZmll
cl9uYW1lX2luX2RlY2xhcmF0aW9uCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9p
ZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ0V2YXNfJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1v
ZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnRXdrXycpCiAgICAgICAgICAgICAgICAgYW5k
IG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ2N0aV8nKQotICAgICAgICAgICAg
ICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5maW5kKCc6OnF0XycpID49IDAKICAgICAg
ICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuZmluZCgnOjpfcV8nKSA+PSAw
CiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyID09ICJjb25zdF9p
dGVyYXRvciIKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIgPT0g
InZtX3Rocm93IgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHBfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHls
ZS9jaGVja2Vycy9jcHBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0yLDcgKzIsNyBAQAogIwogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJ
bmMuCi0jIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtp
dC5vcmcpCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjgxMCwxMSArMjgxMCw2IEBAIGNsYXNzIE9yZGVy
T2ZJbmNsdWRlc1Rlc3QoQ3BwU3R5bGVUZXN0QmEKICAgICAgICAgICAgICAgICAgICAgICAgICBj
bGFzc2lmeV9pbmNsdWRlKCdmb28uY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdwdWJsaWMvZm9vcC5oJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFRydWUsIGluY2x1ZGVfc3RhdGUpKQotICAgICAgICAjIFF0IHByaXZh
dGUgQVBJcyB1c2UgX3AuaCBzdWZmaXguCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0
eWxlLl9QUklNQVJZX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9p
bmNsdWRlKCdmb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICdmb29fcC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKICAgICAgICAgIyBUcmlja3kgZXhhbXBsZSB3aGVyZSBi
b3RoIGluY2x1ZGVzIG1pZ2h0IGJlIGNsYXNzaWZpZWQgYXMgcHJpbWFyeS4KICAgICAgICAgc2Vs
Zi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ1Njcm9sbGJhclRoZW1lV2luY2UuY3BwJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJjb25m
aWcuaCJcbicKQEAgLTQ3MDMsMTIgKzQ2OTgsNiBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3QoQ3Bw
U3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICMgVGhlcmUgaXMgYW4gZXhjZXB0aW9uIGZvciBzb21l
IHVuaXQgdGVzdHMgdGhhdCBiZWdpbiB3aXRoICJ0c3RfIi4KICAgICAgICAgc2VsZi5hc3NlcnRf
bGludCgndm9pZCB0c3RfUVdlYkZyYW1lOjphcnJheU9iamVjdEVudW1lcmFibGUoaW50IHZhcjEs
IGludCB2YXIyKScsICcnKQogCi0gICAgICAgICMgVGhlIFF0IEFQSSB1c2VzIG5hbWVzIHRoYXQg
YmVnaW4gd2l0aCAicXRfIiBvciAiX3FfIi4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndm9p
ZCBRVEZyYW1lOjpxdF9kcnRfaXNfYXdlc29tZShpbnQgdmFyMSwgaW50IHZhcjIpJywgJycpCi0g
ICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgUVRGcmFtZTo6X3FfZHJ0X2lzX2F3ZXNvbWUo
aW50IHZhcjEsIGludCB2YXIyKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lk
IHF0X2RydF9pc19hd2Vzb21lKGludCB2YXIxLCBpbnQgdmFyMik7JywgJycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgX3FfZHJ0X2lzX2F3ZXNvbWUoaW50IHZhcjEsIGludCB2YXIy
KTsnLCAnJykKLQogICAgICAgICAjIENhaXJvIGZvcndhcmQtZGVjbGFyYXRpb25zIHNob3VsZCBu
b3QgYmUgYSBmYWlsdXJlLgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIHN0cnVj
dCBfY2Fpcm8gY2Fpcm9fdDsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlwZWRl
ZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OycsICcnKQpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNr
ZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMCArNzksNiBAQCBjbGFzcyBUZXN0RXhw
ZWN0YXRpb25zVGVzdENhc2UodW5pdHRlc3QuCiAgICAgICAgIHNlbGYuX2V4cGVjdF9wb3J0X2Zv
cl9leHBlY3RhdGlvbnNfcGF0aCgnZWZsJywgJ0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0
RXhwZWN0YXRpb25zJykKICAgICAgICAgc2VsZi5fZXhwZWN0X3BvcnRfZm9yX2V4cGVjdGF0aW9u
c19wYXRoKCdlZmwnLCAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0YXRp
b25zJykKICAgICAgICAgc2VsZi5fZXhwZWN0X3BvcnRfZm9yX2V4cGVjdGF0aW9uc19wYXRoKCdl
ZmwnLCAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zJykKLSAg
ICAgICAgc2VsZi5fZXhwZWN0X3BvcnRfZm9yX2V4cGVjdGF0aW9uc19wYXRoKCdxdCcsICdMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC13aW4vVGVzdEV4cGVjdGF0aW9ucycpCi0gICAgICAgICMgRklY
TUU6IGNoZWNrLXdlYmtpdC1zdHlsZSBkb2Vzbid0IGtub3cgaG93IHRvIGNyZWF0ZSBwb3J0IG9i
amVjdHMgZm9yIGFsbCBRdCB2ZXJzaW9uICg0LjgsIDUuMCkgYW5kCi0gICAgICAgICMgd2lsbCBv
bmx5IGNoZWNrIGZpbGVzIGJhc2VkIG9uIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiBRdC4KLSAg
ICAgICAgI3NlbGYuX2V4cGVjdF9wb3J0X2Zvcl9leHBlY3RhdGlvbnNfcGF0aCgncXQnLCAnTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9UZXN0RXhwZWN0YXRpb25zJykKIAogICAgIGRl
ZiBhc3NlcnRfbGluZXNfbGludChzZWxmLCBsaW5lcywgc2hvdWxkX3Bhc3MsIGV4cGVjdGVkX291
dHB1dD1Ob25lKToKICAgICAgICAgc2VsZi5fZXJyb3JfY29sbGVjdG9yLnJlc2V0X2Vycm9ycygp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQkocmV2aXNpb24gMTU2ODc1KQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkJKHdvcmtpbmcgY29weSkKQEAg
LTEsNSArMSw1IEBACiAjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKGMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDksNyArNDks
NyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sLCBIb3N0CiAgICAgICAgIG1h
a2Vfb3B0aW9uKCItLWJvdC1pZCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJib3RfaWQiLCB0eXBl
PSJzdHJpbmciLCBoZWxwPSJJZGVudGlmaWVyIGZvciB0aGlzIGJvdCAoaWYgbXVsdGlwbGUgYm90
cyBhcmUgcnVubmluZyBmb3IgYSBxdWV1ZSkiKSwKICAgICAgICAgbWFrZV9vcHRpb24oIi0taXJj
LXBhc3N3b3JkIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImlyY19wYXNzd29yZCIsIHR5cGU9InN0
cmluZyIsIGhlbHA9IlBhc3N3b3JkIHRvIHVzZSB3aGVuIGNvbW11bmljYXRpbmcgdmlhIElSQy4i
KSwKICAgICAgICAgbWFrZV9vcHRpb24oIi0tc2Vjb25kcy10by1zbGVlcCIsIGFjdGlvbj0ic3Rv
cmUiLCBkZWZhdWx0PTEyMCwgdHlwZT0iaW50IiwgaGVscD0iTnVtYmVyIG9mIHNlY29uZHMgdG8g
c2xlZXAgaW4gdGhlIHRhc2sgcXVldWUuIiksCi0gICAgICAgIG1ha2Vfb3B0aW9uKCItLXBvcnQi
LCBhY3Rpb249InN0b3JlIiwgZGVzdD0icG9ydCIsIGRlZmF1bHQ9Tm9uZSwgaGVscD0iU3BlY2lm
eSBhIHBvcnQgKGUuZy4sIG1hYywgcXQsIGd0aywgLi4uKS4iKSwKKyAgICAgICAgbWFrZV9vcHRp
b24oIi0tcG9ydCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJwb3J0IiwgZGVmYXVsdD1Ob25lLCBo
ZWxwPSJTcGVjaWZ5IGEgcG9ydCAoZS5nLiwgbWFjLCBndGssIC4uLikuIiksCiAgICAgXQogCiAg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkJ
KHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAog
IyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTkyLDcgKzkzLDYgQEAgY2xhc3MgVGVzdFJl
YmFzZWxpbmVUZXN0KF9CYXNlVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGlu
ZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiR1RLIExpbnV4IDY0LWJpdCBEZWJ1
ZyIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMSIpCiAgICAg
ICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY29tbWFuZC5fYmFzZWxpbmVfZGlyZWN0b3J5
KCJHVEsgTGludXggNjQtYml0IFJlbGVhc2UgV0syIChUZXN0cykiKSwgIi9tb2NrLWNoZWNrb3V0
L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIiKQogICAgICAgICBzZWxmLmFzc2VydE11bHRp
TGluZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiRUZMIExpbnV4IDY0LWJpdCBS
ZWxlYXNlIFdLMiIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdr
MiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY29tbWFuZC5fYmFzZWxpbmVf
ZGlyZWN0b3J5KCJRdCBMaW51eCBSZWxlYXNlIiksICIvbW9jay1jaGVja291dC9MYXlvdXRUZXN0
cy9wbGF0Zm9ybS9xdCIpCiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3VwZGF0ZXNfZXhwZWN0
YXRpb25zX2ZpbGVfbm9vcChzZWxmKToKICAgICAgICAgc2VsZi5femVyb19vdXRfdGVzdF9leHBl
Y3RhdGlvbnMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213370</attachid>
            <date>2013-10-04 10:16:05 -0700</date>
            <delta_ts>2013-10-04 10:40:49 -0700</delta_ts>
            <desc>Revised to pass all script tests</desc>
            <filename>bug-122312-20131004101604.patch</filename>
            <type>text/plain</type>
            <size>115544</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc5IEBACisyMDEzLTEwLTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBRdCBmZWF0dXJlcyBmcm9tIGJ1aWxkIGFuZCB0ZXN0IHRvb2xz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzMTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvYnVpbGQtZHVtcHJlbmRlcnRyZWU6CisgICAgICAgICogU2NyaXB0cy9idWlsZC1qc2M6Cisg
ICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisgICAgICAgICogU2NyaXB0cy9idWlsZC13
ZWJraXR0ZXN0cnVubmVyOgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6
CisgICAgICAgIChvcGVuRHVtcFRvb2wpOgorICAgICAgICAoYnVpbGRQbGF0Zm9ybVJlc3VsdEhp
ZXJhcmNoeSk6CisgICAgICAgIChidWlsZFBsYXRmb3JtVGVzdEhpZXJhcmNoeSk6CisgICAgICAg
IChyZWFkU2tpcHBlZEZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1sYXVuY2hlcjoKKyAg
ICAgICAgKiBTY3JpcHRzL3J1bi1xdHdlYmtpdC10ZXN0czogUmVtb3ZlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6CisgICAgICAgICh1c2VOZXdSdW5XZWJLaXRUZXN0cyk6
CisgICAgICAgICogU2NyaXB0cy91cGRhdGUtd2Via2l0OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0LWJ1aWxkLWRpcmVjdG9yeToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdGRpcnMucG06Cisg
ICAgICAgIChhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKToKKyAgICAgICAgKGpzY1Byb2R1Y3RE
aXIpOgorICAgICAgICAoYnVpbHREeWxpYlBhdGhGb3JOYW1lKToKKyAgICAgICAgKGlzQXBwbGVX
ZWJLaXQpOgorICAgICAgICAobGF1bmNoZXJQYXRoKToKKyAgICAgICAgKGxhdW5jaGVyTmFtZSk6
CisgICAgICAgIChjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmlnKToKKyAgICAgICAgKHNldHVwQ3ln
d2luRW52KToKKyAgICAgICAgKGNvcHlJbnNwZWN0b3JGcm9udGVuZEZpbGVzKToKKyAgICAgICAg
KHNldFBhdGhGb3JSdW5uaW5nV2ViS2l0QXBwKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5weToK
KyAgICAgICAgKEJhc2VsaW5lT3B0aW1pemVyVGVzdC50ZXN0X21hY19mdXR1cmUpOgorICAgICAg
ICAoQmFzZWxpbmVPcHRpbWl6ZXJUZXN0LnRlc3Rfd2luX2RvZXNfbm90X2Ryb3BfdG9fd2luXzdz
cDApOgorICAgICAgICAoQmFzZWxpbmVPcHRpbWl6ZXJUZXN0LnRlc3RfY29tbW9uX2RpcmVjdG9y
eV9pbmNsdWRlc19yb290KToKKyAgICAgICAgKEJhc2VsaW5lT3B0aW1pemVyVGVzdC50ZXN0X3Zp
cnR1YWxfcG9ydHNfZmlsdGVyZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weToKKyAgICAgICAgKHRlc3RfcGFyc2VfcmV2
aWV3ZXJfdGV4dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dh
dGNobGlzdDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToKKyAgICAgICAgKFBvcnRUZXN0LmRpc2FibGVk
X3Rlc3RfY2hyb21pdW1fbWFjX2xpb25faW5fdGVzdF9zaGVsbF9tb2RlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoUG9ydC5fcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKToKKyAgICAgICAgKFBvcnQuX3dr
Ml9wb3J0X25hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9idWlsZGVycy5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAg
KHBsYXRmb3JtX29wdGlvbnMpOgorICAgICAgICAoUG9ydEZhY3RvcnkpOgorICAgICAgICAoUG9y
dEZhY3RvcnkuX2RlZmF1bHRfcG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X2d0ayk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5OiBSZW1vdmVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoR2xvYmFsVmFyaWFi
bGVzVGVzdC50ZXN0X3BhdGhfcnVsZXNfc3BlY2lmaWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5OgorICAgICAgICAoQ01ha2VDaGVja2VyKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAg
ICAgKF9jbGFzc2lmeV9pbmNsdWRlKToKKyAgICAgICAgKGNoZWNrX2luY2x1ZGVfbGluZSk6Cisg
ICAgICAgIChjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAoT3JkZXJPZkluY2x1ZGVzVGVzdC50ZXN0X2NsYXNzaWZ5X2luY2x1ZGUpOgorICAgICAgICAo
V2ViS2l0U3R5bGVUZXN0LnRlc3RfbmFtZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChU
ZXN0RXhwZWN0YXRpb25zVGVzdENhc2UudGVzdF9kZXRlcm1pbmVfcG9ydF9mcm9tX2V4cGVjdGF0
aW9uc19wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZV91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lVGVzdC50ZXN0X2Jh
c2VsaW5lX2RpcmVjdG9yeSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL21haW4u
cHk6CisgICAgICAgIChXZWJLaXRQYXRjaCk6CisKIDIwMTMtMTAtMDMgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFF0IGJ1aWxkZXJzIGZyb20gdGhl
IGZsYWtpbmVzcyBkYXNoYm9hcmQuCkluZGV4OiBUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5k
ZXJ0cmVlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUJ
KHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL3BlcmwgLXcKIAotIyBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw2IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29w
dGlvbnNdIFtvcHRpb25zIHQKICAgLS1oZWxwICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdl
CiAgIC0tY2xlYW4gICAgICAgQ2xlYW4gdXAgdGhlIGJ1aWxkIGRpcmVjdG9yeQogICAtLWd0ayAg
ICAgICAgIEJ1aWxkIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICBCdWlsZCB0aGUgUXQg
cG9ydAogICAtLWVmbCAgICAgICAgIEJ1aWxkIHRoZSBFRkwgcG9ydAogRU9GCiAKQEAgLTcwLDgg
KzY5LDggQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogfSBlbHNpZiAoaXNBcHBsZVdpbldl
YktpdCgpKSB7CiAgICAgbXkgJGRydFNvbHV0aW9uUGF0aCA9ICJEdW1wUmVuZGVyVHJlZS52Y3hw
cm9qL0R1bXBSZW5kZXJUcmVlLnNsbiI7CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlzdWFsU3R1ZGlv
UHJvamVjdCgkZHJ0U29sdXRpb25QYXRoLCAkY2xlYW4pOwotfSBlbHNpZiAoaXNRdCgpIHx8IGlz
R3RrKCkgfHwgaXNFZmwoKSkgewotICAgICMgUXQsIEd0ayBhbmQgRUZMIGJ1aWxkIGV2ZXJ5dGhp
bmcgaW4gb25lIHNob3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KK30gZWxzaWYg
KGlzR3RrKCkgfHwgaXNFZmwoKSkgeworICAgICMgR3RrIGFuZCBFRkwgYnVpbGQgZXZlcnl0aGlu
ZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1
bHQgPSAwOwogfSBlbHNlIHsKICAgICBkaWUgIkJ1aWxkaW5nIG5vdCBkZWZpbmVkIGZvciB0aGlz
IHBsYXRmb3JtIVxuIjsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvYnVpbGQtanNjCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtanNjCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9T
Y3JpcHRzL2J1aWxkLWpzYwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9i
aW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDEzIEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDcg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02NCwxNSAr
NjQsNyBAQCBjaGRpcldlYktpdCgpOwogbXkgQG9wdGlvbnMgPSBYY29kZU9wdGlvbnMoKTsKIG15
IEBjb3ZlcmFnZVN1cHBvcnRPcHRpb25zID0gKCRjb3ZlcmFnZVN1cHBvcnQpID8gWGNvZGVDb3Zl
cmFnZVN1cHBvcnRPcHRpb25zKCkgOiAoKTsKIAotaWYgKGlzUXQoKSkgewotICAgIGNoZWNrRm9y
QXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1xdCIpOwotICAgIG15IEBwcm9qZWN0cyA9ICgi
V1RGIiwgIkphdmFTY3JpcHRDb3JlIik7Ci0gICAgIyBQaWNrIHVwIHRoZSAtLW5vLXdlYmtpdDIg
b3B0aW9uIGZyb20gQlVJTERfV0VCS0lUX0FSR1MgaWYgaXQgaXMgbmVlZGVkCi0gICAgcHVzaCBA
QVJHViwgc3BsaXQoLyAvLCAkRU5WeydCVUlMRF9XRUJLSVRfQVJHUyd9KSBpZiAoJEVOVnsnQlVJ
TERfV0VCS0lUX0FSR1MnfSk7Ci0gICAgcHVzaCBAQVJHViwgIldFQktJVF9DT05GSUctPWJ1aWxk
X3dlYmtpdDIiIGlmIGNoZWNrRm9yQXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1uby13ZWJr
aXQyIik7Ci0gICAgbXkgJHJlc3VsdCA9IGJ1aWxkUU1ha2VQcm9qZWN0cyhcQHByb2plY3RzLCAw
LCBAQVJHVik7Ci0gICAgZXhpdCBleGl0U3RhdHVzKCRyZXN1bHQpOwotfSBlbHNpZiAoY21ha2VC
YXNlZFBvcnROYW1lKCkpIHsKK2lmIChjbWFrZUJhc2VkUG9ydE5hbWUoKSkgewogICAgIGJ1aWxk
Q01ha2VQcm9qZWN0T3JFeGl0KDAsIGNtYWtlQmFzZWRQb3J0TmFtZSgpLCB1bmRlZiwgImpzYyIs
IGNtYWtlQmFzZWRQb3J0QXJndW1lbnRzKCkpOyAjIFRoaXMgY2FsbCBvbmx5IHJldHVybnMgaWYg
bm90aGluZyB3cm9uZyBoYXBwZW5lZAogICAgIGV4aXQgZXhpdFN0YXR1cygwKTsKIH0KSW5kZXg6
IFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vcGVybCAtdwog
Ci0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgbW9pamktbW9i
aWxlLmNvbSBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NSwyOCArNjUs
NiBAQCBteSAkc3RhcnRUaW1lID0gdGltZSgpOwogCiBteSBAZmVhdHVyZXMgPSBnZXRGZWF0dXJl
T3B0aW9uTGlzdCgpOwogCi0jIFVwZGF0ZSBkZWZhdWx0cyBmcm9tIFF0J3MgcHJvamVjdCBmaWxl
Ci1pZiAoaXNRdCgpKSB7Ci0gICAgIyBUYWtlIGEgc25lZWsgcGVlayBhdCB0aGUgYXJndW1lbnRz
LCBzaW5jZSB3ZSB3aWxsIG5lZWQgdGhlIHFtYWtlIGJpbmFyeSBlYXJseQotICAgICMgb24gdG8g
ZG8gcHJvZmlsZSBwYXJzaW5nLiBXZSBhbHNvIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBzaG93aW5n
IHRoZSBoZWxwLXRleHQuCi0gICAgZm9yZWFjaCAoQEFSR1YpIHsKLSAgICAgICAgaWYgKC9eLS1x
bWFrZT0oLiopLykgewotICAgICAgICAgICAgc2V0UW1ha2VCaW5hcnlQYXRoKCQxKTsKLSAgICAg
ICAgfSBlbHNpZiAoL14tLWhlbHAkLykgewotICAgICAgICAgICAgJHNob3dIZWxwID0gMTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIG15ICVxdERlZmF1bHRzOwotICAgIGlmICgkc2hvd0hlbHAp
IHsKLSAgICAgICAgJXF0RGVmYXVsdHMgPSBxdEZlYXR1cmVEZWZhdWx0cygpOwotICAgIH0KLQot
ICAgIGZvcmVhY2ggKEBmZWF0dXJlcykgewotICAgICAgICAkXy0+e2RlZmF1bHR9ID0gKCVxdERl
ZmF1bHRzID8gJHF0RGVmYXVsdHN7JF8tPntkZWZpbmV9fSB8fCAwIDogLTEpOwotICAgIH0KLX0K
LQogIyBBZGRpdGlvbmFsIGVudmlyb25tZW50IHBhcmFtZXRlcnMKIHB1c2ggQEFSR1YsIHNwbGl0
KC8gLywgJEVOVnsnQlVJTERfV0VCS0lUX0FSR1MnfSkgaWYgKCRFTlZ7J0JVSUxEX1dFQktJVF9B
UkdTJ30pOwogCkBAIC0xMTcsMjQgKzk1LDE5IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlv
bnNdIFtvcHRpb25zIHQKICAgLS1ibGFja2JlcnJ5ICAgICAgICAgICAgICAgICAgICAgIEJ1aWxk
IHRoZSBCbGFja0JlcnJ5IHBvcnQgb24gTWFjL0xpbnV4CiAgIC0tZWZsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWlsZCB0aGUgRUZMIHBvcnQKICAgLS1ndGsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1aWxkIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1aWxkIHRoZSBRdCBwb3J0CiAgIC0td2luY2Fpcm8gICAgICAgICAgICAg
ICAgICAgICAgICBCdWlsZCB1c2luZyBDYWlybyAocmF0aGVyIHRoYW4gQ29yZUdyYXBoaWNzKSBv
biBXaW5kb3dzCiAgIC0td2luY2UgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUg
V2luQ0UgcG9ydAogCiAgIC0taW5zcGVjdG9yLWZyb250ZW5kICAgICAgICAgICAgICBDb3B5IGNo
YW5nZXMgdG8gdGhlIGluc3BlY3RvciBmcm9udC1lbmQgZmlsZXMgdG8gdGhlIGJ1aWxkIGRpcmVj
dG9yeQogCi0gIC0taW5zdGFsbC1oZWFkZXJzPTxwYXRoPiAgICAgICAgICBTZXQgaW5zdGFsbGF0
aW9uIHBhdGggZm9yIHRoZSBoZWFkZXJzIChRdCBvbmx5KQotICAtLWluc3RhbGwtbGlicz08cGF0
aD4gICAgICAgICAgICAgU2V0IGluc3RhbGxhdGlvbiBwYXRoIGZvciB0aGUgbGlicmFyaWVzIChR
dCBvbmx5KQotCiAgIC0tcHJlZml4PTxwYXRoPiAgICAgICAgICAgICAgICAgICBTZXQgaW5zdGFs
bGF0aW9uIHByZWZpeCB0byB0aGUgZ2l2ZW4gcGF0aCAoR3RrL0VmbC9CbGFja0JlcnJ5IG9ubHkp
CiAgIC0tbWFrZWFyZ3M9PGFyZ3VtZW50cz4gICAgICAgICAgICBPcHRpb25hbCBNYWtlZmlsZSBm
bGFncwotICAtLXFtYWtlYXJnPTxhcmd1bWVudHM+ICAgICAgICAgICAgT3B0aW9uYWwgcW1ha2Ug
ZmxhZ3MgKFF0IG9ubHksIGUuZy4gLS1xbWFrZWFyZz0iQ09ORklHKz13ZWJraXQyIiB0byBidWls
ZCBXZWJLaXQyKQogICAtLWNtYWtlYXJncz08YXJndW1lbnRzPiAgICAgICAgICAgT3B0aW9uYWwg
Q01ha2UgZmxhZ3MgKGUuZy4gLS1jbWFrZWFyZ3M9Ii1ERk9PPWJhciAtRENNQUtFX1BSRUZJWF9Q
QVRIPS91c3IvbG9jYWwiKQogCiAgIC0tbWluaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICBO
byBvcHRpb25hbCBmZWF0dXJlcywgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZAogCiAgIC0tb25s
eS13ZWJraXQgICAgICAgICAgICAgICAgICAgICBCdWlsZCBvbmx5IHRoZSBXZWJLaXQgcHJvamVj
dAotICAtLW5vLXdlYmtpdDEgICAgICAgICAgICAgICAgICAgICAgT21pdCBXZWJLaXQxIGNvZGUg
ZnJvbSB0aGUgYnVpbGQgKFF0L0VGTC9HVEsgb25seSkKKyAgLS1uby13ZWJraXQxICAgICAgICAg
ICAgICAgICAgICAgIE9taXQgV2ViS2l0MSBjb2RlIGZyb20gdGhlIGJ1aWxkIChFRkwvR1RLIG9u
bHkpCiAgIC0tbm8td2Via2l0MiAgICAgICAgICAgICAgICAgICAgICBPbWl0IFdlYktpdDIgY29k
ZSBmcm9tIHRoZSBidWlsZAogCiBFT0YKQEAgLTE3Myw5ICsxNDYsNiBAQCBzZXRDb25maWd1cmF0
aW9uKCk7CiAKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogCi0jIFJlbW92ZSAwIGJ5
dGUgc2l6ZWQgZmlsZXMgZnJvbSBwcm9kdWN0RGlyIGFmdGVyIHNsYXZlIGxvc3QgZm9yIFF0IGJ1
aWxkYm90cy4KLUZpbGU6OkZpbmQ6OmZpbmQoXCZ1bmxpbmtaZXJvRmlsZXMsICRwcm9kdWN0RGly
KSBpZiAoaXNRdCgpICYmIC1lICRwcm9kdWN0RGlyKTsKLQogc3ViIHVubGlua1plcm9GaWxlcygp
CiB7CiAgICAgbXkgJGZpbGUgPSAkRmlsZTo6RmluZDo6bmFtZTsKQEAgLTIwMCw3ICsxNzAsNyBA
QCBmb3IgbXkgJGRpciAoQHByb2plY3RzKSB7CiAgICAgfQogfQogCi1pZiAoIWlzUXQoKSAmJiAh
LWQgIldlYktpdExpYnJhcmllcyIpIHsKK2lmICghLWQgIldlYktpdExpYnJhcmllcyIpIHsKICAg
ICBkaWUgIkVycm9yOiBObyBXZWJLaXRMaWJyYXJpZXMgZGlyZWN0b3J5IGZvdW5kLiBQbGVhc2Ug
ZG8gYSBmcmVzaCBjaGVja291dC5cbiI7CiB9CiAKQEAgLTI0MywyNiArMjEzLDYgQEAgaWYgKGlz
QXBwbGVNYWNXZWJLaXQoKSkgewogICAgICMgQ29weSBXZWJLaXRTdXBwb3J0TGlicmFyeSB0byB0
aGUgY29ycmVjdCBsb2NhdGlvbiBpbiBXZWJLaXRMaWJyYXJpZXMgc28gaXQgY2FuIGJlIGZvdW5k
LgogICAgICMgV2lsbCBmYWlsIGlmIFdlYktpdFN1cHBvcnRMaWJyYXJ5LnppcCBpcyBub3QgaW4g
c291cmNlIHJvb3QuCiAgICAgKHN5c3RlbSgicGVybCBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJr
aXQtc3VwcG9ydC1saWJzIikgPT0gMCkgb3IgZGllOwotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAg
cHVzaCBAb3B0aW9ucywgIi0taW5zdGFsbC1oZWFkZXJzPSIgLiAkaW5zdGFsbEhlYWRlcnMgaWYg
ZGVmaW5lZCgkaW5zdGFsbEhlYWRlcnMpOwotICAgIHB1c2ggQG9wdGlvbnMsICItLWluc3RhbGwt
bGlicz0iIC4gJGluc3RhbGxMaWJzIGlmIGRlZmluZWQoJGluc3RhbGxMaWJzKTsKLSAgICBwdXNo
IEBvcHRpb25zLCAiLS1tYWtlYXJncz0iIC4gJG1ha2VBcmdzIGlmICRtYWtlQXJnczsKLSAgICBw
dXNoIEBvcHRpb25zLCAiV0VCS0lUX0NPTkZJRy09YnVpbGRfd2Via2l0MSIgaWYgJG5vV2ViS2l0
MTsKLSAgICBwdXNoIEBvcHRpb25zLCAiV0VCS0lUX0NPTkZJRy09YnVpbGRfd2Via2l0MiIgaWYg
JG5vV2ViS2l0MjsKLQotICAgIGlmIChjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1Yo
Ii0yIikpIHsKLSAgICAgICAgcHJpbnQgIk5vdGU6IFdlYktpdDIgaXMgbm93IGJ1aWx0IGJ5IGRl
ZmF1bHQsIHlvdSBkb24ndCBuZWVkIHRvIHBhc3MgLTIuIERpc2FibGUgdXNpbmcgLS1uby13ZWJr
aXQyXG4iOwotICAgIH0KLQotICAgIEBvcHRpb25zID0gKEBBUkdWLCBAb3B0aW9ucyk7Ci0KLSAg
ICBmb3JlYWNoIChAZmVhdHVyZXMpIHsKLSAgICAgICAgaWYgKCRfLT57ZGVmaW5lfSAmJiAkeyRf
LT57dmFsdWV9fSAhPSAkXy0+e2RlZmF1bHR9KSB7Ci0gICAgICAgICAgICBteSAkZGVmaW5lID0g
bGMoJF8tPntkZWZpbmV9KTsKLSAgICAgICAgICAgICRkZWZpbmUgPX4gcy9eZW5hYmxlXy8vOwot
ICAgICAgICAgICAgcHVzaCBAb3B0aW9ucywgIldFQktJVF9DT05GSUciIC4gKCR7JF8tPnt2YWx1
ZX19ID09IDEgPyAiKyIgOiAiLSIpIC4gIj0iIC4gJGRlZmluZTsKLSAgICAgICAgfQotICAgIH0K
IH0KIAogIyBJZiBhc2tlZCB0byBidWlsZCBqdXN0IHRoZSBXZWJLaXQgcHJvamVjdCwgb3Zlcndy
aXRlIHRoZSBwcm9qZWN0cwpAQCAtMzA3LDEyICsyNTcsNiBAQCBpZiAoaXNCbGFja0JlcnJ5KCkp
IHsKICAgICBidWlsZENNYWtlUHJvamVjdE9yRXhpdCgkY2xlYW4sICJCbGFja0JlcnJ5IiwgJHBy
ZWZpeFBhdGgsICRtYWtlQXJncywgKGNtYWtlQmFzZWRQb3J0QXJndW1lbnRzKCksIGNNYWtlQXJn
c0Zyb21GZWF0dXJlcygpKSwgJGNtYWtlQXJncyk7CiB9CiAKLWlmIChpc1F0KCkpIHsKLSAgICBA
cHJvamVjdHMgPSAoKTsgIyBBbiBlbXB0eSBwcm9qZWN0cyBsaXN0IHdpbGwgYnVpbGQgdGhlIGRl
ZmF1bHQgcHJvamVjdHMKLSAgICAkcmVzdWx0ID0gYnVpbGRRTWFrZVByb2plY3RzKFxAcHJvamVj
dHMsICRjbGVhbiwgQG9wdGlvbnMpOwotICAgIGV4aXQgZXhpdFN0YXR1cygkcmVzdWx0KSBpZiBl
eGl0U3RhdHVzKCRyZXN1bHQpOwotfQotCiAjIEJ1aWxkLCBhbmQgYWJvcnQgaWYgdGhlIGJ1aWxk
IGZhaWxzLgogZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewogICAgIGNoZGlyICRkaXIgb3IgZGll
OwpJbmRleDogVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgkocmV2aXNpb24gMTU2ODc1
KQorKysgVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMgQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjMsOCArNjMsOCBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAg
ICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCJXZWJLaXRUZXN0UnVubmVyIiwgJGNsZWFu
LCBYY29kZU9wdGlvbnMoKSwgQEFSR1YpOwogfSBlbHNpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7
CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlzdWFsU3R1ZGlvUHJvamVjdCgiV2ViS2l0VGVzdFJ1bm5l
ci5zbG4iLCAkY2xlYW4pOwotfSBlbHNpZiAoaXNRdCgpIHx8IGlzR3RrKCkgfHwgaXNFZmwoKSkg
ewotICAgICMgUXQgYW5kIEdUSysgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVl
ZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgorfSBlbHNpZiAoaXNHdGsoKSB8fCBpc0VmbCgpKSB7
CisgICAgIyBHVEsrIGFuZCBFRkwgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVl
ZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1bHQgPSAwOwogfSBlbHNlIHsKICAg
ICBkaWUgIldlYktpdFRlc3RSdW5uZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt
LlxuIjsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkocmV2aXNpb24gMTU2ODc1
KQorKysgVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKLSMhL3Vzci9iaW4vcGVybAorIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMg
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkK
ICMgQ29weXJpZ2h0IChDKSAyMDA3IE1hdHQgTGlsZWsgKHBld3Rlcm1vb3NlQGdtYWlsLmNvbSkK
ICMgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CkBAIC0y
MzAsOCArMjMwLDYgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAgIH0gZWxzZSB7CiAg
ICAgICAgICRwbGF0Zm9ybSA9ICJtYWMiOwogICAgIH0KLX0gZWxzaWYgKGlzUXQoKSkgewotICAg
ICRwbGF0Zm9ybSA9ICJxdCI7CiB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAgJHBsYXRmb3JtID0g
Imd0ayI7CiB9IGVsc2lmIChpc1dpbkNhaXJvKCkpIHsKQEAgLTI0OCwxMiArMjQ2LDExIEBAIGlm
IChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKICAgICB9CiB9CiAKLWlmIChpc1F0KCkgfHwgaXNBcHBs
ZVdpbldlYktpdCgpKSB7CitpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgbXkgJHRlc3Rm
b250UGF0aCA9ICRFTlZ7IldFQktJVF9URVNURk9OVFMifTsKICAgICBpZiAoISR0ZXN0Zm9udFBh
dGggfHwgIS1kICIkdGVzdGZvbnRQYXRoIikgewogICAgICAgICBwcmludCAiVGhlIFdFQktJVF9U
RVNURk9OVFMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGRlZmluZWQgb3Igbm90IHNldCBw
cm9wZXJseVxuIjsKICAgICAgICAgcHJpbnQgIllvdSBtdXN0IHNldCBpdCBiZWZvcmUgcnVubmlu
ZyB0aGUgdGVzdHMuXG4iOwotICAgICAgICBwcmludCAiVXNlIGdpdCB0byBncmFiIHRoZSBhY3R1
YWwgZm9udHMgZnJvbSBodHRwOi8vZ2l0b3Jpb3VzLm9yZy9xdHdlYmtpdC90ZXN0Zm9udHNcbiI7
CiAgICAgICAgIGV4aXQgMTsKICAgICB9CiB9CkBAIC0zMTcsNyArMzE0LDcgQEAgVXNhZ2U6ICRw
cm9ncmFtTmFtZSBbb3B0aW9uc10gW3Rlc3RkaXJ8dAogICAtLVtuby1dc3RyaXAtZWRpdGluZy1j
YWxsYmFja3MgIFJlbW92ZSBlZGl0aW5nIGNhbGxiYWNrcyBmcm9tIGV4cGVjdGVkIHJlc3VsdHMK
ICAgLXR8LS10aHJlYWRlZCAgICAgICAgICAgICAgICAgICBSdW4gYSBjb25jdXJyZW50IEphdmFT
Y3JpcHQgdGhlYWQgd2l0aCBlYWNoIHRlc3QKICAgLS10aW1lb3V0IHQgICAgICAgICAgICAgICAg
ICAgICBTZXRzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgYSB0ZXN0IHRpbWVzIG91dCAo
ZGVmYXVsdDogJHRpbWVvdXRTZWNvbmRzKQotICAtLXZhbGdyaW5kICAgICAgICAgICAgICAgICAg
ICAgIFJ1biBEdW1wUmVuZGVyVHJlZSBpbnNpZGUgdmFsZ3JpbmQgKFF0L0xpbnV4IG9ubHkpCisg
IC0tdmFsZ3JpbmQgICAgICAgICAgICAgICAgICAgICAgUnVuIER1bXBSZW5kZXJUcmVlIGluc2lk
ZSB2YWxncmluZCAoTGludXggb25seSkKICAgLXZ8LS12ZXJib3NlICAgICAgICAgICAgICAgICAg
ICBNb3JlIHZlcmJvc2Ugb3V0cHV0IChvdmVycmlkZXMgLS1xdWlldCkKICAgLW18LS1tZXJnZS1s
ZWFrLWRlcHRoIGFyZyAgICAgICBNZXJnZXMgbGVhayBjYWxsU3RhY2tzIGFuZCBwcmludHMgdGhl
IG51bWJlciBvZiB1bmlxdWUgbGVha3MgYmVuZWF0aCBhIGNhbGxzdGFjayBkZXB0aCBvZiBhcmcu
ICBEZWZhdWx0cyB0byA1LgogICAtLXVzZS1yZW1vdGUtbGlua3MtdG8tdGVzdHMgICAgIExpbmsg
dG8gdGVzdCBmaWxlcyB3aXRoaW4gdGhlIFNWTiByZXBvc2l0b3J5IGluIHRoZSByZXN1bHRzLgpA
QCAtMzg5LDkgKzM4Niw2IEBAIGlmICgkdXNlV2ViS2l0VGVzdFJ1bm5lcikgewogICAgICAgICAk
c3RyaXBFZGl0aW5nQ2FsbGJhY2tzID0gMCB1bmxlc3MgZGVmaW5lZCAkc3RyaXBFZGl0aW5nQ2Fs
bGJhY2tzOwogICAgICAgICAkcmVhbFBsYXRmb3JtID0gJHBsYXRmb3JtOwogICAgICAgICAkcGxh
dGZvcm0gPSAid2luLXdrMiI7Ci0gICAgfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgICAgICRyZWFs
UGxhdGZvcm0gPSAkcGxhdGZvcm07Ci0gICAgICAgICRwbGF0Zm9ybSA9ICJxdC01LjAtd2syIjsK
ICAgICB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAgICAgICRyZWFsUGxhdGZvcm0gPSAkcGxhdGZv
cm07CiAgICAgICAgICRwbGF0Zm9ybSA9ICJndGstd2syIjsKQEAgLTQyMCw3ICs0MTQsNiBAQCAk
dXNlUmVtb3RlTGlua3NUb1Rlc3RzID0gMCBpZiBpc0d0aygpOwogCiBzZXRDb25maWd1cmF0aW9u
UHJvZHVjdERpcihDd2Q6OmFic19wYXRoKCRyb290KSkgaWYgKGRlZmluZWQoJHJvb3QpKTsKIG15
ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwotJHByb2R1Y3REaXIgLj0gIi9iaW4iIGlmIGlz
UXQoKTsKICRwcm9kdWN0RGlyIC49ICIvUHJvZ3JhbXMiIGlmIGlzR3RrKCk7CiAKICMgU2F2ZSB0
aGUgY3VycmVudCBkaXJlY3RvcnkgYmVmb3JlIGNoYWdpbmcgaXQgdmlhIGNoZGlyV2ViS2l0CkBA
IC0xMjA3LDE3ICsxMjAwLDYgQEAgbXkgQGNvbmZpZ3VyYXRpb25BcmdzID0gYXJndW1lbnRzRm9y
Q29uZgogaWYgKGlzR3RrKCkpIHsKICAgcHVzaChAY29uZmlndXJhdGlvbkFyZ3MsICctMicpIGlm
ICR1c2VXZWJLaXRUZXN0UnVubmVyOwogICBzeXN0ZW0gIlRvb2xzL1NjcmlwdHMvcnVuLWxhdW5j
aGVyIiwgQGNvbmZpZ3VyYXRpb25BcmdzLCAiZmlsZTovLyIuJHRlc3RSZXN1bHRzIGlmICRsYXVu
Y2hTYWZhcmk7Ci19IGVsc2lmIChpc1F0KCkpIHsKLSAgaWYgKGdldFF0VmVyc2lvbigpIGx0ICI1
LjAiKSB7Ci0gICAgdW5zaGlmdCBAY29uZmlndXJhdGlvbkFyZ3MsIHF3KC1zdHlsZSB3aW5kb3dz
KTsKLSAgICB1bnNoaWZ0IEBjb25maWd1cmF0aW9uQXJncywgcXcoLWdyYXBoaWNzc3lzdGVtIHJh
c3Rlcik7Ci0gIH0KLSAgaWYgKGlzQ3lnd2luKCkpIHsKLSAgICAkdGVzdFJlc3VsdHMgPSAiLyIg
LiB0b1dpbmRvd3NQYXRoKCR0ZXN0UmVzdWx0cyk7Ci0gICAgJHRlc3RSZXN1bHRzID1+IHMvXFwv
XC8vZzsKLSAgfQotICBwdXNoKEBjb25maWd1cmF0aW9uQXJncywgJy0yJykgaWYgJHVzZVdlYktp
dFRlc3RSdW5uZXI7Ci0gIHN5c3RlbSAiVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIiLCBAY29u
ZmlndXJhdGlvbkFyZ3MsICJmaWxlOi8vIi4kdGVzdFJlc3VsdHMgaWYgJGxhdW5jaFNhZmFyaTsK
IH0gZWxzaWYgKGlzQ3lnd2luKCkpIHsKICAgc3lzdGVtICJjeWdzdGFydCIsICR0ZXN0UmVzdWx0
cyBpZiAkbGF1bmNoU2FmYXJpOwogfSBlbHNpZiAoaXNXaW5kb3dzKCkpIHsKQEAgLTE1MTQsMjAg
KzE0OTYsMTEgQEAgc3ViIG9wZW5EdW1wVG9vbCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAoaXNRdCgpKSB7Ci0gICAgICAgICRDTEVBTl9FTlZ7UVRXRUJLSVRfUExVR0lOX1BBVEh9ID0g
cHJvZHVjdERpcigpIC4gIi9saWIvcGx1Z2lucyI7Ci0gICAgICAgICRDTEVBTl9FTlZ7UVRfRFJU
X1dFQlZJRVdfTU9ERX0gPSAkRU5WeyJRVF9EUlRfV0VCVklFV19NT0RFIn07Ci0gICAgfQotICAg
IAogICAgIG15IEBhcmdzID0gKCRkdW1wVG9vbCwgQHRvb2xBcmdzKTsKICAgICBpZiAoaXNBcHBs
ZU1hY1dlYktpdCgpKSB7IAogICAgICAgICB1bnNoaWZ0IEBhcmdzLCAiYXJjaCIsICItIiAuIGFy
Y2hpdGVjdHVyZSgpOyAgICAgICAgICAgICAKICAgICB9CiAKLSAgICBpZiAoJHVzZVZhbGdyaW5k
KSB7Ci0gICAgICAgIHVuc2hpZnQgQGFyZ3MsICJ2YWxncmluZCIsICItLXN1cHByZXNzaW9ucz0k
cGxhdGZvcm1CYXNlRGlyZWN0b3J5L3F0L1N1cHByZXNzZWRWYWxncmluZEVycm9ycyI7Ci0gICAg
fSAKLQogICAgIGlmICgkdXNlV2ViS2l0VGVzdFJ1bm5lcikgewogICAgICAgICAjIE1ha2UgV2Vi
S2l0VGVzdFJ1bm5lciB1c2UgYSBzaW1pbGFyIHRpbWVvdXQuIFdlIGRvbid0IHVzZSB0aGUgZXhh
Y3Qgc2FtZSB0aW1lb3V0IHRvIGF2b2lkCiAgICAgICAgICMgcmFjZSBjb25kaXRpb25zLgpAQCAt
MjE2OSwzNiArMjE0Miw2IEBAIHN1YiBidWlsZFBsYXRmb3JtUmVzdWx0SGllcmFyY2h5KCkKICAg
ICAgICAgaWYgKCRwbGF0Zm9ybSBlcSAid2luY2Fpcm8iKSB7CiAgICAgICAgICAgICBAcGxhdGZv
cm1zID0gJHBsYXRmb3JtOwogICAgICAgICB9Ci0gICAgfSBlbHNpZiAoJHBsYXRmb3JtID1+IC9e
cXQvKSB7Ci0gICAgICAgIGlmICgkcGxhdGZvcm0gZXEgInF0LTUuMC13azIiIHx8IGdldFF0VmVy
c2lvbigpIGVxICI1LjAiICYmICR1c2VXZWJLaXRUZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICBw
dXNoIEBwbGF0Zm9ybXMsICJxdC01LjAtd2syIjsKLSAgICAgICAgfQotICAgICAgICBlbHNpZiAo
JHBsYXRmb3JtIGVxICJxdC01LjAtd2sxIiB8fCBnZXRRdFZlcnNpb24oKSBlcSAiNS4wIiAmJiAh
JHVzZVdlYktpdFRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0
LTUuMC13azEiCi0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXNBUk0oKSB8fCAkcGxhdGZvcm0g
ZXEgInF0LWFybSIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LWFybSI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoaXNEYXJ3aW4oKSB8fCAkcGxhdGZvcm0gZXEgInF0LW1h
YyIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LW1hYyI7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzaWYgKGlzV2luZG93cygpIHx8IGlzQ3lnd2luKCkgfHwgJHBsYXRmb3JtIGVx
ICJxdC13aW4iKSB7Ci0gICAgICAgICAgICBwdXNoIEBwbGF0Zm9ybXMsICJxdC13aW4iOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2lmIChpc0xpbnV4KCkgfHwgJHBsYXRmb3JtIGVxICJxdC1saW51
eCIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LWxpbnV4IjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChnZXRRdFZlcnNpb24oKSBlcSAiNC44IiB8fCAkcGxhdGZvcm0gZXEg
InF0LTQuOCIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LTQuOCI7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzaWYgKGdldFF0VmVyc2lvbigpIGVxICI1LjAiIHx8ICRwbGF0Zm9y
bSBlcSAicXQtNS4wIikgewotICAgICAgICAgICAgcHVzaCBAcGxhdGZvcm1zLCAicXQtNS4wIjsK
LSAgICAgICAgfQotCi0gICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0IjsKICAgICB9IGVsc2lm
ICgkcGxhdGZvcm0gPX4gL15ndGstLykgewogICAgICAgICBwdXNoIEBwbGF0Zm9ybXMsICRwbGF0
Zm9ybTsKICAgICAgICAgcHVzaCBAcGxhdGZvcm1zLCAiZ3RrIjsKQEAgLTIyMjIsMjQgKzIxNjUs
MTggQEAgc3ViIGJ1aWxkUGxhdGZvcm1UZXN0SGllcmFyY2h5KEApCiAgICAgbXkgKEBwbGF0Zm9y
bUhpZXJhcmNoeSkgPSBAXzsKIAogICAgIG15IEByZXN1bHQ7Ci0gICAgaWYgKCRwbGF0Zm9ybSA9
fiAvXnF0LykgewotICAgICAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAcGxhdGZvcm1IaWVyYXJj
aHk7ICsrJGkpIHsKLSAgICAgICAgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlb
JGldOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbXkgJHdrMlBsYXRmb3JtOwot
ICAgICAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAcGxhdGZvcm1IaWVyYXJjaHk7ICsrJGkpIHsK
LSAgICAgICAgICAgIGlmICgkcGxhdGZvcm1IaWVyYXJjaHlbJGldID1+IC8td2syLykgewotICAg
ICAgICAgICAgICAgICR3azJQbGF0Zm9ybSA9IHNwbGljZSBAcGxhdGZvcm1IaWVyYXJjaHksICRp
LCAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICB9CisgICAgbXkgJHdrMlBs
YXRmb3JtOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBwbGF0Zm9ybUhpZXJhcmNoeTsgKysk
aSkgeworICAgICAgICBpZiAoJHBsYXRmb3JtSGllcmFyY2h5WyRpXSA9fiAvLXdrMi8pIHsKKyAg
ICAgICAgICAgICR3azJQbGF0Zm9ybSA9IHNwbGljZSBAcGxhdGZvcm1IaWVyYXJjaHksICRpLCAx
OworICAgICAgICAgICAgbGFzdDsKICAgICAgICAgfQotCi0gICAgICAgcHVzaCBAcmVzdWx0LCAk
cGxhdGZvcm1IaWVyYXJjaHlbMF07Ci0gICAgICAgcHVzaCBAcmVzdWx0LCAkd2syUGxhdGZvcm0g
aWYgZGVmaW5lZCAkd2syUGxhdGZvcm07Ci0gICAgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1I
aWVyYXJjaHlbJCNwbGF0Zm9ybUhpZXJhcmNoeV0gaWYgQHBsYXRmb3JtSGllcmFyY2h5ID49IDI7
CiAgICAgfQogCisgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlbMF07CisgICAg
cHVzaCBAcmVzdWx0LCAkd2syUGxhdGZvcm0gaWYgZGVmaW5lZCAkd2syUGxhdGZvcm07CisgICAg
cHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlbJCNwbGF0Zm9ybUhpZXJhcmNoeV0gaWYg
QHBsYXRmb3JtSGllcmFyY2h5ID49IDI7CisKICAgICBpZiAoJHZlcmJvc2UpIHsKICAgICAgICAg
bXkgQHNlYXJjaFBhdGhzOwogICAgICAgICBmb3JlYWNoIG15ICRzZWFyY2hQYXRoIChAcmVzdWx0
KSB7CkBAIC0yNTAzLDkgKzI0NDAsOSBAQCBzdWIgcmVhZFNraXBwZWRGaWxlcygkKQogICAgIG15
IEBza2lwcGVkRmlsZURpcmVjdG9yaWVzID0gQHBsYXRmb3JtVGVzdEhpZXJhcmNoeTsKIAogICAg
ICMgQmVjYXVzZSBuZWFybHkgYWxsIG9mIHRoZSBza2lwcGVkIHRlc3RzIGZvciBXZWJLaXQgMiBv
biBNYWMgYXJlIGR1ZSB0bwotICAgICMgY3Jvc3MtcGxhdGZvcm0gaXNzdWVzLCB0aGUgV2luZG93
cyBhbmQgUXQgcG9ydHMgdXNlIHRoZSBNYWMgc2tpcHBlZCBsaXN0CisgICAgIyBjcm9zcy1wbGF0
Zm9ybSBpc3N1ZXMsIHRoZSBXaW5kb3dzIHBvcnRzIHVzZSB0aGUgTWFjIHNraXBwZWQgbGlzdAog
ICAgICMgYWRkaXRpb25hbGx5IHRvIHRoZWlyIG93biB0byBhdm9pZCBtYWludGFpbmluZyBzZXBh
cmF0ZSBsaXN0cy4KLSAgICBwdXNoKEBza2lwcGVkRmlsZURpcmVjdG9yaWVzLCBjYXRkaXIoJHBs
YXRmb3JtQmFzZURpcmVjdG9yeSwgIndrMiIpKSBpZiAoJHBsYXRmb3JtIGVxICJ3aW4td2syIiB8
fCAkcGxhdGZvcm0gZXEgInF0LTUuMC13azIiIHx8ICRwbGF0Zm9ybSBlcSAibWFjLXdrMiIgfHwg
JHBsYXRmb3JtIGVxICJndGstd2syIik7CisgICAgcHVzaChAc2tpcHBlZEZpbGVEaXJlY3Rvcmll
cywgY2F0ZGlyKCRwbGF0Zm9ybUJhc2VEaXJlY3RvcnksICJ3azIiKSkgaWYgKCRwbGF0Zm9ybSBl
cSAid2luLXdrMiIgfHwgJHBsYXRmb3JtIGVxICJtYWMtd2syIiB8fCAkcGxhdGZvcm0gZXEgImd0
ay13azIiKTsKIAogICAgIGlmICgkdmVyYm9zZSkgewogICAgICAgICBmb3JlYWNoIG15ICRza2lw
cGVkUGF0aCAoQHNraXBwZWRGaWxlRGlyZWN0b3JpZXMpIHsKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLWxhdW5jaGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWxhdW5jaGVyCShy
ZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcgkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMs
IEluYy4gIDxpbmZvQHN0YWlrb3MubmV0PgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ0LDQ3ICs0NCwy
NyBAQCBteSAkbGF1bmNoZXJQYXRoID0gcHJvZHVjdERpcigpOwogY2hlY2tGcmFtZXdvcmtzKCk7
CiAKICMgU2V0IHBhdGhzIGFjY29yZGluZyB0byB0aGUgYnVpbGQgc3lzdGVtIHVzZWQKLWlmIChp
c1F0KCkpIHsKLSAgICBteSAkbGliRGlyID0gY2F0ZGlyKHByb2R1Y3REaXIoKSwgJ2xpYicpOwor
aWYgKGlzR3RrKCkpIHsKICAgICBpZiAoaXNXSzIoKSkgewotICAgICAgICAkbGF1bmNoZXJQYXRo
ID0gY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJyb3dzZXIiKTsKKyAgICAgICAg
dW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJQcm9ncmFtcyIsICJNaW5pQnJv
d3NlciIpKTsKICAgICB9IGVsc2UgewotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKCRs
YXVuY2hlclBhdGgsICJiaW4iLCAiUXRUZXN0QnJvd3NlciIpOworICAgICAgICB1bnNoaWZ0KEBB
UkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgIlByb2dyYW1zIiwgIkd0a0xhdW5jaGVyIikpOwog
ICAgIH0KKyAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHNvdXJjZURpcigpLCAiVG9vbHMiLCAi
amhidWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKKyAgICB1bnNoaWZ0KEBBUkdWLCAoIi0tZ3Rr
IiwgInJ1biIpKTsKK30KIAotICAgICRFTlZ7UVRXRUJLSVRfUExVR0lOX1BBVEh9ID0gY2F0ZGly
KCRsaWJEaXIsICdwbHVnaW5zJyk7Ci0KLSAgICBwcmludCAiU3RhcnRpbmcgd2Via2l0IGxhdW5j
aGVyLCBydW5uaW5nIGFnYWluc3QgdGhlIGJ1aWx0IFdlYktpdCBpbiAkbGliRGlyLi4uXG4iOwot
ICAgIGlmIChpc0RhcndpbigpKSB7Ci0gICAgICAgICRFTlZ7RFlMRF9MSUJSQVJZX1BBVEh9ID0g
JEVOVntEWUxEX0xJQlJBUllfUEFUSH0gPyAiJGxpYkRpcjokRU5We0RZTERfTElCUkFSWV9QQVRI
fSIgOiAkbGliRGlyOwotICAgICAgICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJEVOVntE
WUxEX0ZSQU1FV09SS19QQVRIfSA/ICIkbGliRGlyOiRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0i
IDogJGxpYkRpcjsKK2lmIChpc0VmbCgpKSB7CisgICAgaWYgKGlzV0syKCkpIHsKKyAgICAgICAg
dW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJyb3dzZXIi
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJEVOVntMRF9MSUJSQVJZX1BBVEh9ID0gJEVOVntM
RF9MSUJSQVJZX1BBVEh9ID8gIiRsaWJEaXI6JEVOVntMRF9MSUJSQVJZX1BBVEh9IiA6ICRsaWJE
aXI7Ci0gICAgfQotfSBlbHNlIHsKLQotICAgIGlmIChpc0d0aygpKSB7Ci0gICAgICAgIGlmIChp
c1dLMigpKSB7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBBUkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0
aCwgIlByb2dyYW1zIiwgIk1pbmlCcm93c2VyIikpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJQcm9ncmFtcyIsICJH
dGtMYXVuY2hlciIpKTsKLSAgICAgICAgfQotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGly
KHNvdXJjZURpcigpLCAiVG9vbHMiLCAiamhidWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKLSAg
ICAgICAgdW5zaGlmdChAQVJHViwgKCItLWd0ayIsICJydW4iKSk7CisgICAgICAgIHVuc2hpZnQo
QEFSR1YsIGNhdGRpcigkbGF1bmNoZXJQYXRoLCAiYmluIiwgIkVXZWJMYXVuY2hlciIpKTsKICAg
ICB9Ci0KLSAgICBpZiAoaXNFZmwoKSkgewotICAgICAgICBpZiAoaXNXSzIoKSkgewotICAgICAg
ICAgICAgdW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJy
b3dzZXIiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBBUkdWLCBj
YXRkaXIoJGxhdW5jaGVyUGF0aCwgImJpbiIsICJFV2ViTGF1bmNoZXIiKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgJGxhdW5jaGVyUGF0aCA9IGNhdGRpcihzb3VyY2VEaXIoKSwgIlRvb2xzIiwgImpo
YnVpbGQiLCAiamhidWlsZC13cmFwcGVyIik7Ci0gICAgICAgIHVuc2hpZnQoQEFSR1YsICgiLS1l
ZmwiLCAicnVuIikpOwotICAgIH0KLQotICAgIHByaW50ICJTdGFydGluZyB3ZWJraXQgbGF1bmNo
ZXIuXG4iOworICAgICRsYXVuY2hlclBhdGggPSBjYXRkaXIoc291cmNlRGlyKCksICJUb29scyIs
ICJqaGJ1aWxkIiwgImpoYnVpbGQtd3JhcHBlciIpOworICAgIHVuc2hpZnQoQEFSR1YsICgiLS1l
ZmwiLCAicnVuIikpOwogfQogCitwcmludCAiU3RhcnRpbmcgd2Via2l0IGxhdW5jaGVyLlxuIjsK
KwogZXhlYyAkbGF1bmNoZXJQYXRoLCBAQVJHViBvciBkaWU7CiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvcnVuLXF0d2Via2l0LXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLXF0
d2Via2l0LXRlc3RzCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi1xdHdl
YmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMSw0MzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotCi0jQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0jVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
I21vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0jTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0jdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotCi0jVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSNNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotI0xpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0jWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotI2Fsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0jdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSNCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBv
cnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IGxvZ2dpbmcKLWZyb20gc3VicHJv
Y2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUsIFNURE9VVAotZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0
aW9uUGFyc2VyCi0KLQotY2xhc3MgTG9nKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUpOgotICAgICAgICBzZWxmLl9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihuYW1lKQotICAg
ICAgICBzZWxmLmRlYnVnID0gc2VsZi5fbG9nLmRlYnVnCi0gICAgICAgIHNlbGYud2FybiA9IHNl
bGYuX2xvZy53YXJuCi0gICAgICAgIHNlbGYuZXJyb3IgPSBzZWxmLl9sb2cuZXJyb3IKLSAgICAg
ICAgc2VsZi5leGNlcHRpb24gPSBzZWxmLl9sb2cuZXhjZXB0aW9uCi0gICAgICAgIHNlbGYuaW5m
byA9IHNlbGYuX2xvZy5pbmZvCi0KLQotY2xhc3MgT3B0aW9ucyhMb2cpOgotICAgICIiIiBPcHRp
b24gbWFuYWdlci4gSXQgcGFyc2VzIGFuZCBjaGVja3Mgc2NyaXB0J3MgcGFyYW1ldGVycywgc2V0
cyBhbiBpbnRlcm5hbCB2YXJpYWJsZS4gIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJn
cyk6Ci0gICAgICAgIExvZy5fX2luaXRfXyhzZWxmLCAiT3B0aW9ucyIpCi0gICAgICAgIGxvZyA9
IHNlbGYuX2xvZwotICAgICAgICBvcHQgPSBPcHRpb25QYXJzZXIoIiVwcm9nIFtvcHRpb25zXSBb
UGF0aFRvU2VhcmNoXS5cblRyeSAtaCBvciAtLWhlbHAuIikKLSAgICAgICAgb3B0LmFkZF9vcHRp
b24oIi1qIiwgIi0tcGFyYWxsZWwtbGV2ZWwiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0iaW50IiwK
LSAgICAgICAgICAgICAgZGVzdD0icGFyYWxsZWxfbGV2ZWwiLCBkZWZhdWx0PU5vbmUsCi0gICAg
ICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBwYXJhbGxlbCBwcm9jZXNzZXMgZXhlY3V0aW5nIHRo
ZSBRdCdzIHRlc3RzLiBEZWZhdWx0OiBjcHUgY291bnQuIikKLSAgICAgICAgb3B0LmFkZF9vcHRp
b24oIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJpbnQiLAotICAgICAg
ICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgZGVmYXVsdD0yLAotICAgICAgICAgICAgICBoZWxwPSJW
ZXJib3NlIGxldmVsICgwIC0gcXVpZXQsIDEgLSBlcnJvcnMgb25seSwgMiAtIGluZm9zIGFuZCB3
YXJuaW5ncywgMyAtIGRlYnVnIGluZm9ybWF0aW9uKS4gRGVmYXVsdDogJWRlZmF1bHQuIikKLSAg
ICAgICAgb3B0LmFkZF9vcHRpb24oIiIsICItLXRlc3RzLW9wdGlvbnMiLCBhY3Rpb249InN0b3Jl
IiwgdHlwZT0ic3RyaW5nIiwKLSAgICAgICAgICAgICAgZGVzdD0idGVzdHNfb3B0aW9ucyIsIGRl
ZmF1bHQ9IiIsCi0gICAgICAgICAgICAgIGhlbHA9IlBhcmFtZXRlcnMgcGFzc2VkIHRvIFF0J3Mg
dGVzdHMgKGZvciBleGFtcGxlICctZXZlbnRkZWxheSAxMjMnKS4iKQotICAgICAgICBvcHQuYWRk
X29wdGlvbigiLW8iLCAiLS1vdXRwdXQtZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJp
bmciLAotICAgICAgICAgICAgICBkZXN0PSJvdXRwdXRfZmlsZSIsIGRlZmF1bHQ9Ii90bXAvcXR3
ZWJraXR0ZXN0cy5odG1sIiwKLSAgICAgICAgICAgICAgaGVscD0iRmlsZSB3aGVyZSByZXN1bHRz
IHdpbGwgYmUgc3RvcmVkLiBUaGUgZmlsZSB3aWxsIGJlIG92ZXJ3cml0dGVuLiBEZWZhdWx0OiAl
ZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLWIiLCAiLS1icm93c2VyIiwgYWN0
aW9uPSJzdG9yZSIsIGRlc3Q9ImJyb3dzZXIiLAotICAgICAgICAgICAgICBkZWZhdWx0PSJ4ZGct
b3BlbiIsCi0gICAgICAgICAgICAgIGhlbHA9IkJyb3dzZXIgaW4gd2hpY2ggcmVzdWx0cyB3aWxs
IGJlIG9wZW5lZC4gRGVmYXVsdCAlZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigi
IiwgIi0tZG8tbm90LW9wZW4tcmVzdWx0cyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAotICAgICAg
ICAgICAgICBkZXN0PSJvcGVuX3Jlc3VsdHMiLCBkZWZhdWx0PVRydWUsCi0gICAgICAgICAgICAg
IGhlbHA9IlRoZSByZXN1bHRzIHNob3VsZG4ndCBwb3AtdXAgaW4gYSBicm93c2VyIGF1dG9tYXRp
Y2FsbHkiKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLWQiLCAiLS1kZXZlbG9wZXItbW9kZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgIGRlc3Q9ImRldmVsb3BlciIsIGRl
ZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgIGhlbHA9IlNwZWNpYWwgbW9kZSBmb3IgZGVidWdn
aW5nLiBJbiBnZW5lcmFsIGl0IHNpbXVsYXRlcyBodW1hbiBiZWhhdmlvciwgcnVubmluZyBhbGwg
YXV0b3Rlc3RzLiBJbiB0aGUgbW9kZSBldmVyeXRoaW5nIGlzIGV4ZWN1dGVkIHN5bmNocm9ub3Vz
bHksIG5vIGh0bWwgb3V0cHV0IHdpbGwgYmUgZ2VuZXJhdGVkLCBubyBjaGFuZ2VzIG9yIHRyYW5z
Zm9ybWF0aW9uIHdpbGwgYmUgYXBwbGllZCB0byBzdGRlcnIgb3Igc3Rkb3V0LiBJbiB0aGlzIG1v
ZGUgb3B0aW9uczsgcGFyYWxsZWwtbGV2ZWwsIG91dHB1dC1maWxlLCBicm93c2VyIGFuZCBkby1u
b3Qtb3Blbi1yZXN1bHRzIHdpbGwgYmUgaWdub3JlZC4iKQotICAgICAgICBvcHQuYWRkX29wdGlv
bigiLXQiLCAiLS10aW1lb3V0IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9ImludCIsCi0gICAgICAg
ICAgICAgIGRlc3Q9InRpbWVvdXQiLCBkZWZhdWx0PTAsCi0gICAgICAgICAgICAgIGhlbHA9IlRp
bWVvdXQgaW4gc2Vjb25kcyBmb3IgZWFjaCB0ZXN0c3VpdGUuIFplcm8gdmFsdWUgbWVhbnMgdGhh
dCB0aGVyZSBpcyBub3QgdGltZW91dC4gRGVmYXVsdDogJWRlZmF1bHQuIikKLSAgICAgICAgb3B0
LmFkZF9vcHRpb24oIi0tcmVsZWFzZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlbGVh
c2UiLCBkZWZhdWx0PVRydWUsCi0gICAgICAgICAgICAgIGhlbHA9IlJ1biBBUEkgdGVzdHMgaW4g
V2ViS2l0QnVpbGQvUmVsZWFzZS8uLi4gZGlyZWN0b3J5LiBJdCBpcyBpZ25vcmVkIGlmIFBhdGhU
b1NlYXJjaCBpcyBwYXNzZWQuIikKLSAgICAgICAgb3B0LmFkZF9vcHRpb24oIi0tZGVidWciLCBh
Y3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0icmVsZWFzZSIsCi0gICAgICAgICAgICAgIGhlbHA9
IlJ1biBBUEkgdGVzdHMgaW4gV2ViS2l0QnVpbGQvRGVidWcvLi4uIGRpcmVjdG9yeS4gSXQgaXMg
aWdub3JlZCBpZiBQYXRoVG9TZWFyY2ggaXMgcGFzc2VkLiIpCi0gICAgICAgIG9wdC5hZGRfb3B0
aW9uKCItMiIsICItLXdlYmtpdDIiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ3ZWJraXQy
IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgaGVscD0iUnVuIFdlYktpdDIgQVBJIHRl
c3RzLiBEZWZhdWx0OiBSdW4gV2ViS2l0MSBBUEkgdGVzdHMuIEl0IGlzIGlnbm9yZWQgaWYgUGF0
aFRvU2VhcmNoIGlzIHBhc3NlZC4iKQotCi0gICAgICAgIHNlbGYuX28sIHNlbGYuX2EgPSBvcHQu
cGFyc2VfYXJncyhhcmdzKQotICAgICAgICB2ZXJib3NlID0gc2VsZi5fby52ZXJib3NlCi0gICAg
ICAgIGlmIHZlcmJvc2UgPT0gMDoKLSAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2
ZWw9bG9nZ2luZy5DUklUSUNBTCwpCi0gICAgICAgIGVsaWYgdmVyYm9zZSA9PSAxOgotICAgICAg
ICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkVSUk9SLCkKLSAgICAgICAg
ZWxpZiB2ZXJib3NlID09IDI6Ci0gICAgICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVs
PWxvZ2dpbmcuSU5GTywpCi0gICAgICAgIGVsaWYgdmVyYm9zZSA9PSAzOgotICAgICAgICAgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHLCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLCkKLSAg
ICAgICAgICAgIGxvZy53YXJuKCJCYWQgdmVyYm9zZSBsZXZlbCwgc3dpdGNoaW5nIHRvIGRlZmF1
bHQuIikKLQotICAgICAgICBpZiBzZWxmLl9vLnJlbGVhc2U6Ci0gICAgICAgICAgICBjb25maWd1
cmF0aW9uID0gIlJlbGVhc2UiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gIkRlYnVnIgotCi0gICAgICAgIGlmIHNlbGYuX28ud2Via2l0MjoKLSAgICAgICAgICAg
IHRlc3RfZGlyZWN0b3J5ID0gIldlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy8iCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0X2RpcmVjdG9yeSA9ICJXZWJLaXQvcXQvdGVzdHMv
IgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9hKSA9PSAwOgotICAg
ICAgICAgICAgICAgIHNlbGYuX28ucGF0aCA9ICJXZWJLaXRCdWlsZC8lcy9Tb3VyY2UvJXMiICUg
KGNvbmZpZ3VyYXRpb24sIHRlc3RfZGlyZWN0b3J5KQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBpZiBsZW4oc2VsZi5fYSkgPiAxOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBJbmRleEVycm9yKCJPbmx5IG9uZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIHByb3ZpZGVkLiIpCi0g
ICAgICAgICAgICAgICAgc2VsZi5fby5wYXRoID0gc2VsZi5fYVswXQotCi0gICAgICAgICAgICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5fby5wYXRoKToKLSAgICAgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oIkdpdmVuIHBhdGggZG9lc24ndCBleGlzdC4iKQotICAgICAgICBleGNlcHQg
SW5kZXhFcnJvcjoKLSAgICAgICAgICAgIGxvZy5lcnJvcigiQmFkIHVzYWdlLiBQbGVhc2UgdHJ5
IC1oIG9yIC0taGVscC4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGxvZy5lcnJvcigiUGF0aCAnJXMnIGRvZXNuJ3QgZXhp
c3QiLCBzZWxmLl9vLnBhdGgpCi0gICAgICAgICAgICBzeXMuZXhpdCgyKQotCi0gICAgICAgIGlm
IHNlbGYuX28uZGV2ZWxvcGVyOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX28ucGFyYWxsZWxf
bGV2ZWwgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBsb2cud2FybigiRGV2ZWxvcGVyIG1vZGUg
c2V0cyBwYXJhbGxlbC1sZXZlbCBvcHRpb24gdG8gb25lLiIpCi0gICAgICAgICAgICBzZWxmLl9v
LnBhcmFsbGVsX2xldmVsID0gMQotICAgICAgICAgICAgc2VsZi5fby5vcGVuX3Jlc3VsdHMgPSBG
YWxzZQotCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICAiIiIgTWFw
cyBhbGwgb3B0aW9ucyBwcm9wZXJ0aWVzIGludG8gdGhpcyBvYmplY3QgKHJlbW92ZSBvbmUgbGV2
ZWwgb2YgaW5kaXJlY3Rpb24pLiAiIiIKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5fbywg
YXR0cikKLQotCi1kZWYgcnVuX3Rlc3QoYXJncyk6Ci0gICAgIiIiIFJ1bnMgb25lIGdpdmVuIHRl
c3QuCi0gICAgYXJncyBzaG91bGQgY29udGFpbiBhIHR1cGxlIHdpdGggMyBlbGVtZW50czsKLSAg
ICAgIFRlc3RTdWl0ZVJlc3VsdCBjb250YWluaW5nIGZ1bGwgZmlsZSBuYW1lIG9mIGFuIGF1dG90
ZXN0IGV4ZWN1dGFibGUuCi0gICAgICBzdHIgd2l0aCBvcHRpb25zIHRoYXQgc2hvdWxkIGJlIHBh
c3NlZCB0byB0aGUgYXV0b3Rlc3QgZXhlY3V0YWJsZQotICAgICAgYm9vbCBpZiB0cnVlIHRoZW4g
dGhlIHN0ZG91dCB3aWxsIGJlIGJ1ZmZlcmVkIGFuZCBzZXBhcmF0ZWQgZnJvbSB0aGUgc3RkZXJy
LCBpZiBpdCBpcyBmYWxzZQotICAgICAgICB0aGVuIHRoZSBzdGRvdXQgYW5kIHRoZSBzdGRlcnIg
d2lsbCBiZSBtZXJnZWQgdG9nZXRoZXIgYW5kIGxlZnQgdW5idWZmZXJlZCAodGhlIFRlc3RTdWl0
ZVJlc3VsdCBvdXRwdXQgd2lsbCBiZSBOb25lKS4KLSAgICAgIGludCB0aW1lIGFmdGVyIHdoaWNo
IHRoZSBhdXRvdGVzdCBleGVjdXRhYmxlIHdvdWxkIGJlIGtpbGxlZAotICAgICIiIgotICAgIGxv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJFeGVjIikKLSAgICB0ZXN0X3N1aXRlLCBvcHRpb25zLCBi
dWZmZXJlZCwgdGltZW91dCA9IGFyZ3MKLSAgICB0aW1lciA9IE5vbmUKLSAgICB0cnk6Ci0gICAg
ICAgIGxvZy5pbmZvKCJSdW5uaW5nLi4uICVzIiwgdGVzdF9zdWl0ZS50ZXN0X2ZpbGVfbmFtZSgp
KQotICAgICAgICBpZiBidWZmZXJlZDoKLSAgICAgICAgICAgIHRzdCA9IFBvcGVuKFt0ZXN0X3N1
aXRlLnRlc3RfZmlsZV9uYW1lKCldICsgb3B0aW9ucy5zcGxpdCgpLCBzdGRvdXQ9UElQRSwgc3Rk
ZXJyPU5vbmUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0c3QgPSBQb3BlbihbdGVzdF9z
dWl0ZS50ZXN0X2ZpbGVfbmFtZSgpXSArIG9wdGlvbnMuc3BsaXQoKSwgc3Rkb3V0PU5vbmUsIHN0
ZGVycj1TVERPVVQpCi0gICAgICAgIGlmIHRpbWVvdXQ6Ci0gICAgICAgICAgICBmcm9tIHRocmVh
ZGluZyBpbXBvcnQgVGltZXIKLSAgICAgICAgICAgIGxvZy5kZWJ1ZygiU2V0dGluZyB0aW1lb3V0
IHRpbWVyICVpIHNlYyBvbiAlcyAocHJvY2VzcyAlcykiLCB0aW1lb3V0LCB0ZXN0X3N1aXRlLnRl
c3RfZmlsZV9uYW1lKCksIHRzdC5waWQpCi0gICAgICAgICAgICBkZWYgcHJvY2Vzc19raWxsZXIo
KToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRzdC50ZXJtaW5hdGUoKQotICAgICAgICAgICAgICAgICAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdvcmthcm91
bmQgZm9yIHB5dGhvbiB2ZXJzaW9uIDwgMi42IGl0IGNhbiBiZSByZW1vdmVkIGFzIHNvb24gYXMg
d2UgZHJvcCBzdXBwb3J0IGZvciBweXRob24yLjUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgY3R5cGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPQ0VTU19URVJNSU5BVEUgPSAxCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5PcGVuUHJvY2VzcyhQ
Uk9DRVNTX1RFUk1JTkFURSwgRmFsc2UsIHRzdC5waWQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5UZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgLTEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5DbG9z
ZUhhbmRsZShoYW5kbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRl
RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aW5kbGwgaXMgbm90IGFjY2Vz
c2libGUgc28gd2UgYXJlIG9uICpuaXggbGlrZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbXBvcnQgc2lnbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mua2ls
bCh0c3QucGlkLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9y
KCJUaW1lb3V0LCBwcm9jZXNzICclcycgKCVpKSB3YXMgdGVybWluYXRlZCIsIHRlc3Rfc3VpdGUu
dGVzdF9maWxlX25hbWUoKSwgdHN0LnBpZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJv
ciwgZToKLSAgICAgICAgICAgICAgICAgICAgIyB0aGUgcHJvY2VzcyB3YXMgZmluaXNoZWQgYmVm
b3JlIGdvdCBraWxsZWQKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdGlt
ZXIgPSBUaW1lcih0aW1lb3V0LCBwcm9jZXNzX2tpbGxlcikKLSAgICAgICAgICAgIHRpbWVyLnN0
YXJ0KCkKLSAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgbG9nLmV4Y2VwdGlvbigiQ2Fu
J3Qgb3BlbiBhbiBhdXRvdGVzdCBmaWxlOiAnJXMnLiBTa2lwcGluZyB0aGUgdGVzdC4uLiIsIGUu
ZmlsZW5hbWUpCi0gICAgZWxzZToKLSAgICAgICAgdGVzdF9zdWl0ZS5zZXRfb3V0cHV0KHRzdC5j
b21tdW5pY2F0ZSgpWzBdKSAgIyB0YWtlcyBzdGRvdXQgb25seSwgaW4gZGV2ZWxvcGVyIG1vZGUg
aXQgd291bGQgYmUgTm9uZS4KLSAgICBsb2cuaW5mbygiRmluaXNoZWQgJXMiLCB0ZXN0X3N1aXRl
LnRlc3RfZmlsZV9uYW1lKCkpCi0gICAgaWYgdGltZW91dDoKLSAgICAgICAgdGltZXIuY2FuY2Vs
KCkKLSAgICByZXR1cm4gdGVzdF9zdWl0ZQotCi0KLWNsYXNzIFRlc3RTdWl0ZVJlc3VsdChvYmpl
Y3QpOgotICAgICIiIiBLZWVwcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QuICIiIgotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9vdXRwdXQgPSBOb25lCi0gICAgICAg
IHNlbGYuX3Rlc3RfZmlsZV9uYW1lID0gTm9uZQotCi0gICAgZGVmIHNldF9vdXRwdXQoc2VsZiwg
eG1sKToKLSAgICAgICAgaWYgeG1sOgotICAgICAgICAgICAgc2VsZi5fb3V0cHV0ID0geG1sLnN0
cmlwKCkKLQotICAgIGRlZiBvdXRwdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vdXRw
dXQKLQotICAgIGRlZiBzZXRfdGVzdF9maWxlX25hbWUoc2VsZiwgZmlsZV9uYW1lKToKLSAgICAg
ICAgc2VsZi5fdGVzdF9maWxlX25hbWUgPSBmaWxlX25hbWUKLQotICAgIGRlZiB0ZXN0X2ZpbGVf
bmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfZmlsZV9uYW1lCi0KLQotY2xh
c3MgTWFpbihMb2cpOgotICAgICIiIiBUaGUgbWFpbiBzY3JpcHQuIEFsbCByZWFsIHdvcmsgaXMg
ZG9uZSBpbiBydW4oKSBtZXRob2QuICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlv
bnMpOgotICAgICAgICBMb2cuX19pbml0X18oc2VsZiwgIk1haW4iKQotICAgICAgICBzZWxmLl9v
cHRpb25zID0gb3B0aW9ucwotICAgICAgICBpZiBvcHRpb25zLnBhcmFsbGVsX2xldmVsID4gMSBv
ciBvcHRpb25zLnBhcmFsbGVsX2xldmVsIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wKLSAgICAgICAgICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLndhcm4oIkltcG9ydCBF
cnJvcjogdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgY291bGRuJ3QgYmUgbG9hZGVkIChtYXkg
YmUgbGFjayBvZiBweXRob24tbXVsdGlwcm9jZXNzaW5nIHBhY2thZ2U/KS4gVGhlIFF0IGF1dG90
ZXN0cyB3aWxsIGJlIGV4ZWN1dGVkIG9uZSBieSBvbmUuIikKLSAgICAgICAgICAgICAgICBvcHRp
b25zLnBhcmFsbGVsX2xldmVsID0gMQotICAgICAgICBpZiBvcHRpb25zLnBhcmFsbGVsX2xldmVs
ID09IDE6Ci0KLSAgICAgICAgICAgIGNsYXNzIFBvb2wob2JqZWN0KToKLSAgICAgICAgICAgICAg
ICAiIiIgQSBoYWNrLCBjcmVhdGVkIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggbXVsdGlwcm9jZXNz
aW5nIG1vZHVsZSwgdGhpcyBjbGFzcyBpcyBzaW5nbGUgdGhyZWFkIHJlcGxhY2VtZW50IGZvciB0
aGUgbXVsdGlwcm9jZXNzaW5nLlBvb2wgY2xhc3MuICIiIgotICAgICAgICAgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwcm9jZXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAg
ICAgICAgICAgICAgICBkZWYgaW1hcF91bm9yZGVyZWQoc2VsZiwgZnVuYywgZmlsZXMpOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFwKGZ1bmMsIGZpbGVzKQotCi0gICAgICAgICAgICAg
ICAgZGVmIG1hcChzZWxmLCBmdW5jLCBmaWxlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYXAoZnVuYywgZmlsZXMpCi0KLSAgICAgICAgc2VsZi5fUG9vbCA9IFBvb2wKLQotICAgIGRl
ZiBydW4oc2VsZik6Ci0gICAgICAgICIiIiBGaW5kICYmIGV4ZWN1dGUgJiYgcHVibGlzaCByZXN1
bHRzIG9mIGFsbCB0ZXN0LiAiQWxsIGluIG9uZSIgZnVuY3Rpb24uICIiIgotICAgICAgICAjIFRo
aXMgaXMgbmVlZGVkIGZvciBRdCBmaW5kaW5nIG91ciBRTUwgbW9kdWxlcy4gVGhlIGN1cnJlbnQg
Y29kZSBtYWtlcyBvdXIKLSAgICAgICAgIyB0d28gZXhpc3RpbmcgQVBJIHRlc3RzIChXSzEgQVBJ
IGFuZCBXSzIgVUkgcHJvY2VzcyBBUEkpIHdvcmsgY29ycmVjdGx5LgotICAgICAgICBxbWxfaW1w
b3J0X3BhdGggPSBzZWxmLl9vcHRpb25zLnBhdGggKyAiLi4vLi4vLi4vLi4vaW1wb3J0cyIKLSAg
ICAgICAgcW1sX2ltcG9ydF9wYXRoICs9ICI6IiArIHNlbGYuX29wdGlvbnMucGF0aCArICIuLi8u
Li8uLi8uLi8uLi8uLi9pbXBvcnRzIgotICAgICAgICBvcy5wdXRlbnYoIlFNTF9JTVBPUlRfUEFU
SCIsIHFtbF9pbXBvcnRfcGF0aCkKLSAgICAgICAgcGF0aCA9IG9zLmdldGVudigiUEFUSCIpCi0g
ICAgICAgIHBhdGggKz0gIjoiICsgc2VsZi5fb3B0aW9ucy5wYXRoICsgIi4uLy4uLy4uLy4uLy4u
Ly4uL2JpbiIKLSAgICAgICAgb3MucHV0ZW52KCJQQVRIIiwgcGF0aCkKLSAgICAgICAgc2VsZi5k
ZWJ1ZygiU2VhcmNoaW5nIGV4ZWN1dGFibGVzLi4uIikKLSAgICAgICAgdGVzdHNfZXhlY3V0YWJs
ZXMgPSBzZWxmLmZpbmRfdGVzdHNfcGF0aHMoc2VsZi5fb3B0aW9ucy5wYXRoKQotICAgICAgICBz
ZWxmLmRlYnVnKCJGb3VuZDogJXMiLCBsZW4odGVzdHNfZXhlY3V0YWJsZXMpKQotICAgICAgICBz
ZWxmLmRlYnVnKCJFeGVjdXRpbmcgdGVzdHMuLi4iKQotICAgICAgICByZXN1bHRzID0gc2VsZi5y
dW5fdGVzdHModGVzdHNfZXhlY3V0YWJsZXMpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25z
LmRldmVsb3BlcjoKLSAgICAgICAgICAgIHNlbGYuZGVidWcoIlRyYW5zZm9ybWluZy4uLiIpCi0g
ICAgICAgICAgICB0cmFuc2Zvcm1lZF9yZXN1bHRzID0gc2VsZi50cmFuc2Zvcm0ocmVzdWx0cykK
LSAgICAgICAgICAgIHNlbGYuZGVidWcoIlB1Ymxpc2hpbmcuLi4iKQotICAgICAgICAgICAgc2Vs
Zi5hbm5vdW5jZV9yZXN1bHRzKHRyYW5zZm9ybWVkX3Jlc3VsdHMpCi0KLSAgICBkZWYgZmluZF90
ZXN0c19wYXRocyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiIEZpbmRzIGFsbCB0ZXN0cyBleGVj
dXRhYmxlcyBpbnNpZGUgdGhlIGdpdmVuIHBhdGguICIiIgotICAgICAgICBleGVjdXRhYmxlcyA9
IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgotICAg
ICAgICAgICAgIyBDaGVjayBvbmx5IGZvciBhIGZpbGUgdGhhdCBuYW1lIHN0YXJ0cyBmcm9tICd0
c3RfJyBhbmQgdGhhdCB3ZSBjYW4gZXhlY3V0ZS4KLSAgICAgICAgICAgIGZpbHRlcmVkX3BhdGgg
PSBmaWx0ZXIobGFtYmRhIHc6IHcuc3RhcnRzd2l0aCgndHN0XycpIGFuZCBvcy5hY2Nlc3Mob3Mu
cGF0aC5qb2luKHJvb3QsIHcpLCBvcy5YX09LKSwgZmlsZXMpCi0gICAgICAgICAgICBmaWx0ZXJl
ZF9wYXRoID0gbWFwKGxhbWJkYSB3OiBvcy5wYXRoLmpvaW4ocm9vdCwgdyksIGZpbHRlcmVkX3Bh
dGgpCi0gICAgICAgICAgICBmb3IgZmlsZV9uYW1lIGluIGZpbHRlcmVkX3BhdGg6Ci0gICAgICAg
ICAgICAgICAgciA9IFRlc3RTdWl0ZVJlc3VsdCgpCi0gICAgICAgICAgICAgICAgci5zZXRfdGVz
dF9maWxlX25hbWUoZmlsZV9uYW1lKQotICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVzLmFwcGVu
ZChyKQotICAgICAgICByZXR1cm4gZXhlY3V0YWJsZXMKLQotICAgIGRlZiBydW5fdGVzdHMoc2Vs
ZiwgZmlsZXMpOgotICAgICAgICAiIiIgRXhlY3V0ZXMgZ2l2ZW4gZmlsZXMgYnkgdXNpbmcgYSBw
b29sIG9mIHdvcmtlcnMuICIiIgotICAgICAgICB3b3JrZXJzID0gc2VsZi5fUG9vbChwcm9jZXNz
ZXM9c2VsZi5fb3B0aW9ucy5wYXJhbGxlbF9sZXZlbCkKLSAgICAgICAgIyB0byBlYWNoIGZpbGUg
YWRkIG9wdGlvbnMuCi0gICAgICAgIHNlbGYuZGVidWcoIlVzaW5nICVzIHRoZSB3b3JrZXJzIHBv
b2wsIG51bWJlciBvZiB3b3JrZXJzICVpIiwgcmVwcih3b3JrZXJzKSwgc2VsZi5fb3B0aW9ucy5w
YXJhbGxlbF9sZXZlbCkKLSAgICAgICAgcGFja2FnZSA9IG1hcChsYW1iZGEgdzogW3csIHNlbGYu
X29wdGlvbnMudGVzdHNfb3B0aW9ucywgbm90IHNlbGYuX29wdGlvbnMuZGV2ZWxvcGVyLCBzZWxm
Ll9vcHRpb25zLnRpbWVvdXRdLCBmaWxlcykKLSAgICAgICAgc2VsZi5kZWJ1ZygiR2VuZXJhdGVk
IHBhY2thZ2VzIGZvciB3b3JrZXJzOiAlcyIsIHJlcHIocGFja2FnZSkpCi0gICAgICAgIHJlc3Vs
dHMgPSB3b3JrZXJzLm1hcChydW5fdGVzdCwgcGFja2FnZSkgICMgQ29sbGVjdHMgcmVzdWx0cy4K
LSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQotICAgIGRlZiB0cmFuc2Zvcm0oc2VsZiwgcmVzdWx0
cyk6Ci0gICAgICAgICIiIiBUcmFuc2Zvcm1zIGxpc3Qgb2YgdGhlIHJlc3VsdHMgdG8gc3BlY2lh
bGl6ZWQgdmVyc2lvbnMuICIiIgotICAgICAgICBzdGRvdXQgPSBzZWxmLmNvbnZlcnRfdG9fc3Rk
b3V0KHJlc3VsdHMpCi0gICAgICAgIGh0bWwgPSBzZWxmLmNvbnZlcnRfdG9faHRtbChyZXN1bHRz
KQotICAgICAgICByZXR1cm4geyJzdGRvdXQiOiBzdGRvdXQsICJodG1sIjogaHRtbH0KLQotICAg
IGRlZiBhbm5vdW5jZV9yZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICAgICAiIiIgU2hvd3Mg
dGhlIHJlc3VsdHMuICIiIgotICAgICAgICBzZWxmLmFubm91bmNlX3Jlc3VsdHNfc3Rkb3V0KHJl
c3VsdHNbJ3N0ZG91dCddKQotICAgICAgICBzZWxmLmFubm91bmNlX3Jlc3VsdHNfaHRtbChyZXN1
bHRzWydodG1sJ10pCi0KLSAgICBkZWYgYW5ub3VuY2VfcmVzdWx0c19zdGRvdXQoc2VsZiwgcmVz
dWx0cyk6Ci0gICAgICAgICIiIiBTaG93IHRoZSByZXN1bHRzIGJ5IHByaW50aW5nIHRvIHRoZSBz
dGRvdXQuIiIiCi0gICAgICAgIHByaW50KHJlc3VsdHMpCi0KLSAgICBkZWYgYW5ub3VuY2VfcmVz
dWx0c19odG1sKHNlbGYsIHJlc3VsdHMpOgotICAgICAgICAiIiIgU2hvd3MgdGhlIHJlc3VsdCBi
eSBjcmVhdGluZyBhIGh0bWwgZmlsZSBhbmQgY2FsbGluZyBhIHdlYiBicm93c2VyIHRvIHJlbmRl
ciBpdC4gIiIiCi0gICAgICAgIHdpdGggZmlsZShzZWxmLl9vcHRpb25zLm91dHB1dF9maWxlLCAn
dycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKHJlc3VsdHMpCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMub3Blbl9yZXN1bHRzOgotICAgICAgICAgICAgUG9wZW4oc2VsZi5fb3B0aW9ucy5i
cm93c2VyICsgIiAiICsgc2VsZi5fb3B0aW9ucy5vdXRwdXRfZmlsZSwgc3Rkb3V0PU5vbmUsIHN0
ZGVycj1Ob25lLCBzaGVsbD1UcnVlKQotCi0gICAgZGVmIGNoZWNrX2NyYXNoX29jY3VyZW5jZXMo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIiIiBDaGVja3MgaWYgYW55IHRlc3QgY3Jhc2hlcyBh
bmQgaXQgc3VtcyB0aGVtICAiIiIKLSAgICAgICAgdG90YWxzID0gWzAsMCwwXQotICAgICAgICBj
cmFzaF9jb3VudCA9IDAKLSAgICAgICAgdHh0ID0gW10KLSAgICAgICAgI2NvbGxlY3RpbmcgcmVz
dWx0cyBpbnRvIG9uZSBjb250YWluZXIgd2l0aCBjaGVja2luZyBjcmFzaAotICAgICAgICBmb3Ig
cmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBmb3VuZCA9IE5vbmUKLSAgICAgICAgICAg
IGlmIHJlc3VsdC5vdXRwdXQoKToKLSAgICAgICAgICAgICAgICB0eHQuYXBwZW5kKHJlc3VsdC5v
dXRwdXQoKSkKLSAgICAgICAgICAgICAgICBmb3VuZCA9IHJlLnNlYXJjaChyIihbMC05XSspIHBh
c3NlZCwgKFswLTldKykgZmFpbGVkLCAoWzAtOV0rKSBza2lwcGVkIiwgcmVzdWx0Lm91dHB1dCgp
KQotCi0gICAgICAgICAgICBpZiBmb3VuZDoKLSAgICAgICAgICAgICAgICB0b3RhbHMgPSByZWR1
Y2UobGFtYmRhIHgsIHk6IChpbnQoeFswXSkgKyBpbnQoeVswXSksIGludCh4WzFdKSArIGludCh5
WzFdKSwgaW50KHhbMl0pICsgaW50KHlbMl0pKSwgKHRvdGFscywgZm91bmQuZ3JvdXBzKCkpKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eHQuYXBwZW5kKCdDUkFTSEVEOiAl
cycgJSByZXN1bHQudGVzdF9maWxlX25hbWUoKSkKLSAgICAgICAgICAgICAgICBjcmFzaF9jb3Vu
dCArPSAxCi0gICAgICAgICAgICAgICAgc2VsZi53YXJuKCJNaXNzaW5nIHN1Yi1zdW1tYXJ5OiAl
cyIgJSByZXN1bHQudGVzdF9maWxlX25hbWUoKSkKLQotICAgICAgICB0eHQ9J1xuXG4nLmpvaW4o
dHh0KQotCi0gICAgICAgIHRvdGFscyA9IGxpc3QodG90YWxzKQotICAgICAgICB0b3RhbHMuYXBw
ZW5kKGNyYXNoX2NvdW50KQotICAgICAgICB0b3RhbHMgPSBtYXAoc3RyLCB0b3RhbHMpCi0gICAg
ICAgIHJldHVybiB0eHQsIHRvdGFscwotCi0gICAgZGVmIGNvbnZlcnRfdG9fc3Rkb3V0KHNlbGYs
IHJlc3VsdHMpOgotICAgICAgICAiIiIgQ29udmVydHMgcmVzdWx0cywgdGhhdCB0aGV5IGNvdWxk
IGJlIG5pY2VseSBwcmVzZW50ZWQgaW4gdGhlIHN0ZG91dC4gIiIiCi0gICAgICAgIHR4dCwgdG90
YWxzID0gc2VsZi5jaGVja19jcmFzaF9vY2N1cmVuY2VzKHJlc3VsdHMpCi0KLSAgICAgICAgdG90
YWxzID0gIiVzIHBhc3NlZCwgJXMgZmFpbGVkLCAlcyBza2lwcGVkLCAlcyBjcmFzaGVkIiAlICh0
b3RhbHNbMF0sIHRvdGFsc1sxXSwgdG90YWxzWzJdLCB0b3RhbHNbM10pCi0KLSAgICAgICAgdHh0
ICs9ICdcbicgKyAnKicgKiA3MAotICAgICAgICB0eHQgKz0gIlxuKioiICsgKCJUT1RBTFM6ICIg
KyB0b3RhbHMpLmNlbnRlcig2NikgKyAnKionCi0gICAgICAgIHR4dCArPSAnXG4nICsgJyonICog
NzAgKyAnXG4nCi0gICAgICAgIHJldHVybiB0eHQKLQotICAgIGRlZiBjb252ZXJ0X3RvX2h0bWwo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIiIiBDb252ZXJ0cyByZXN1bHRzLCB0aGF0IHRoZXkg
Y291bGQgc2hvd2VkIGFzIGEgaHRtbCBwYWdlLiAiIiIKLSAgICAgICAgdHh0LCB0b3RhbHMgPSBz
ZWxmLmNoZWNrX2NyYXNoX29jY3VyZW5jZXMocmVzdWx0cykKLSAgICAgICAgdHh0ID0gdHh0LnJl
cGxhY2UoJyYnLCAnJmFtcDsnKS5yZXBsYWNlKCc8JywgIiZsdDsiKS5yZXBsYWNlKCc+JywgIiZn
dDsiKQotICAgICAgICAjIEFkZCBhIGNvbG9yIGFuZCBhIHN0eWxlLgotICAgICAgICB0eHQgPSBy
ZS5zdWIociIoWyogXSsoRmluaXNoZWQpWyBhLXpfQS1aMC05XStbKl0rKSIsCi0gICAgICAgICAg
ICBsYW1iZGEgdzogciIiLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIo
ciIoWypdK1sgYS16X0EtWjAtOV0rWypdKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8Y2Fz
ZSBjbGFzcz0nZ29vZCc+PGJyPjxicj48Yj4iICsgdy5ncm91cCgwKSArIHIiPC9iPjwvY2FzZT4i
LAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociIoQ29uZmlnOiBVc2lu
ZyBRVGVzdCBsaWJyYXJ5KSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIlxuPGNhc2Ug
Y2xhc3M9J2dvb2QnPjxicj48aT4iICsgdy5ncm91cCgwKSArIHIiPC9pPiAgIiwKLSAgICAgICAg
ICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oUEFTUykoKC4pKykiLAotICAgICAg
ICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0dXMg
Y2xhc3M9J3Bhc3MnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwK
LSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oRkFJTCEpKCguKSsp
IiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2UgY2xhc3M9J2JhZCc+PGJy
PjxzdGF0dXMgY2xhc3M9J2ZhaWwnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1cz4iICsgdy5n
cm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oWFBB
U1MpKCguKSspIiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2UgY2xhc3M9
J2JhZCc+PGJyPjxzdGF0dXMgY2xhc3M9J3hwYXNzJz4iICsgdy5ncm91cCgxKSArIHIiPC9zdGF0
dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAgICAgICB0eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1
YihyIlxuKFhGQUlMKSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIjwvY2FzZT5cbjxj
YXNlIGNsYXNzPSdnb29kJz48YnI+PHN0YXR1cyBjbGFzcz0neGZhaWwnPiIgKyB3Lmdyb3VwKDEp
ICsgciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAg
dHh0ID0gcmUuc3ViKHIiXG4oU0tJUCkoKC4pKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8
L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0dXMgY2xhc3M9J3hmYWlsJz4iICsg
dy5ncm91cCgxKSArIHIiPC9zdGF0dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAgICAgICB0eHQp
Ci0gICAgICAgIHR4dCA9IHJlLnN1YihyIlxuKFFXQVJOKSgoLikrKSIsCi0gICAgICAgICAgICBs
YW1iZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdiYWQnPjxicj48c3RhdHVzIGNsYXNzPSd3
YXJuJz4iICsgdy5ncm91cCgxKSArIHIiPC9zdGF0dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAg
ICAgICB0eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1YihyIlxuKFJFU1VMVCkoKC4pKykiLAotICAg
ICAgICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0
dXMgY2xhc3M9J2JlbmNobWFyayc+IiArIHcuZ3JvdXAoMSkgKyByIjwvc3RhdHVzPiIgKyB3Lmdy
b3VwKDIpLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociJcbihRRkFU
QUx8Q1JBU0hFRCkoKC4pKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2Fz
ZSBjbGFzcz0nYmFkJz48YnI+PHN0YXR1cyBjbGFzcz0nY3Jhc2gnPiIgKyB3Lmdyb3VwKDEpICsg
ciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0
ID0gcmUuc3ViKHIiXG4oVG90YWxzOikoWzAtOScsIGEtel0qKSIsCi0gICAgICAgICAgICBsYW1i
ZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdnb29kJz48YnI+PGI+IiArIHcuZ3JvdXAoMSkg
KyByIjwvYj4iICsgdy5ncm91cCgyKSArICI8L2Nhc2U+IiwKLSAgICAgICAgICAgIHR4dCkKLSAg
ICAgICAgIyBGaW5kIHRvdGFsIGNvdW50IG9mIGZhaWxlZCwgc2tpcHBlZCwgcGFzc2VkIGFuZCBj
cmFzaGVkIHRlc3RzLgotICAgICAgICB0b3RhbHMgPSAiJXMgcGFzc2VkLCAlcyBmYWlsZWQsICVz
IHNraXBwZWQsICVzIGNyYXNoZWQuIiAlICh0b3RhbHNbMF0sIHRvdGFsc1sxXSwgdG90YWxzWzJd
LCB0b3RhbHNbM10pCi0gICAgICAgICMgQ3JlYXRlIGEgaGVhZGVyIG9mIHRoZSBodG1sIHNvdXJj
ZS4KLSAgICAgICAgdHh0ID0gIiIiCi0gICAgICAgIDxodG1sPgotICAgICAgICA8aGVhZD4KLSAg
ICAgICAgICA8c2NyaXB0PgotICAgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgICAg
ICAgIC8vIFRyeSB0byBmaW5kIHRoZSByaWdodCBzdHlsZVNoZWV0ICh0aGlzIGRvY3VtZW50IGNv
dWxkIGJlIGVtYmVkZGVkIGluIGFuIG90aGVyIGh0bWwgZG9jKQotICAgICAgICAgICAgICBmb3Ig
KGkgPSBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAg
ICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLmNzc1J1bGVzWzBdLnNl
bGVjdG9yVGV4dCA9PSAiY2FzZS5nb29kIikgewotICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dFN0eWxlU2hlZXQgPSBpOwotICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAvLyBUaGUgc3R5bGVT
aGVldCBoYXNuJ3QgYmVlbiBmb3VuZCwgYnV0IGl0IHNob3VsZCBiZSB0aGUgbGFzdCBvbmUuCi0g
ICAgICAgICAgICAgIHJlc3VsdFN0eWxlU2hlZXQgPSBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5n
dGggLSAxOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZ1bmN0aW9uIGhpZGUoKSB7Ci0gICAg
ICAgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzW3Jlc3VsdFN0eWxlU2hlZXRdLmNzc1J1bGVz
WzBdLnN0eWxlLmRpc3BsYXk9J25vbmUnOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZ1bmN0
aW9uIHNob3coKSB7Ci0gICAgICAgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzW3Jlc3VsdFN0
eWxlU2hlZXRdLmNzc1J1bGVzWzBdLnN0eWxlLmRpc3BsYXk9Jyc7Ci0gICAgICAgICAgfQotCi0g
ICAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLSAg
ICAgICAgICAgIGNhc2UuZ29vZCB7Y29sb3I6YmxhY2t9Ci0gICAgICAgICAgICBjYXNlLmJhZCB7
Y29sb3I6YmxhY2t9Ci0gICAgICAgICAgICBzdGF0dXMucGFzcyB7Y29sb3I6Z3JlZW59Ci0gICAg
ICAgICAgICBzdGF0dXMuY3Jhc2gge2NvbG9yOnJlZH0KLSAgICAgICAgICAgIHN0YXR1cy5mYWls
IHtjb2xvcjpyZWR9Ci0gICAgICAgICAgICBzdGF0dXMueHBhc3Mge2NvbG9yOjY2MzMwMH0KLSAg
ICAgICAgICAgIHN0YXR1cy54ZmFpbCB7Y29sb3I6MDA0NTAwfQotICAgICAgICAgICAgc3RhdHVz
LmJlbmNobWFyayB7Y29sb3I6MDAwMDg4fQotICAgICAgICAgICAgc3RhdHVzLndhcm4ge2NvbG9y
Om9yYW5nZX0KLSAgICAgICAgICAgIHN0YXR1cy5jcmFzaCB7Y29sb3I6cmVkOyB0ZXh0LWRlY29y
YXRpb246Ymxpbms7IGJhY2tncm91bmQtY29sb3I6YmxhY2t9Ci0gICAgICAgICAgPC9zdHlsZT4K
LSAgICAgICAgPC9oZWFkPgotICAgICAgICA8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0gICAgICAg
IDxjZW50ZXI+Ci0gICAgICAgICAgPGgxPlF0J3MgYXV0b3Rlc3RzIHJlc3VsdHM8L2gxPiUodG90
YWxzKXM8YnI+Ci0gICAgICAgICAgPGhyPgotICAgICAgICAgIDxmb3JtPgotICAgICAgICAgICAg
PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlNob3cgZmFpbHVyZXMgb25seSIgb25jbGljaz0i
aGlkZSgpIi8+Ci0gICAgICAgICAgICAmbmJzcDsKLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJi
dXR0b24iIHZhbHVlPSJTaG93IGFsbCIgb25jbGljaz0ic2hvdygpIi8+Ci0gICAgICAgICAgPC9m
b3JtPgotICAgICAgICA8L2NlbnRlcj4KLSAgICAgICAgPGhyPgotICAgICAgICAlKHJlc3VsdHMp
cwotICAgICAgICA8L2JvZHk+Ci0gICAgICAgIDwvaHRtbD4iIiIgJSB7InRvdGFscyI6IHRvdGFs
cywgInJlc3VsdHMiOiB0eHR9Ci0gICAgICAgIHJldHVybiB0eHQKLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIG9wdGlvbnMgPSBPcHRpb25zKHN5cy5hcmd2WzE6XSkKLSAgICBt
YWluID0gTWFpbihvcHRpb25zKQotICAgIG1haW4ucnVuKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKLSMhL3Vzci9iaW4vcGVybAorIyEvdXNy
L2Jpbi9wZXJsIC13CiAjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTcsOSArNTgsNyBA
QCBzdWIgcnVubmluZ09uQnVpbGRCb3QoKQogCiBzdWIgdXNlTmV3UnVuV2ViS2l0VGVzdHMoKQog
ewotICAgICMgTlJXVCBkb2VzIG5vdCBzdXBwb3J0IHF0LWFybTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDg2Ci0gICAgcmV0dXJuIDAgaWYgaXNRdCgpIGFuZCBp
c0FSTSgpOwotICAgICMgQWxsIG90aGVyIHBsYXRmb3JtcyBzaG91bGQgdXNlIE5SV1QgYnkgZGVm
YXVsdC4KKyAgICAjIEFsbCBwbGF0Zm9ybXMgc2hvdWxkIHVzZSBOUldUIGJ5IGRlZmF1bHQuCiAg
ICAgcmV0dXJuIDE7CiB9CiAKQEAgLTc1LDE4ICs3NCw5IEBAIGlmICh1c2VOZXdSdW5XZWJLaXRU
ZXN0cygpKSB7CiAgICAgfQogfQogCi0jIHdlYmtpdGRpcnMucG0gc3RyaXBzIC0tcXQgYW5kIC0t
Z3RrIGZyb20gQEFSR1Ygd2hlbiB3ZSBjYWxsIGlzUXQvaXNHdGsuCisjIHdlYmtpdGRpcnMucG0g
c3RyaXBzIC0tZ3RrIGZyb20gQEFSR1Ygd2hlbiB3ZSBjYWxsIGlzR3RrLgogIyBXZSBoYXZlIHRv
IGFkZCBiYWNrIGFueSAtLVBPUlQgYXJndW1lbnRzIHdoaWNoIG1heSBoYXZlIGJlZW4gcmVtb3Zl
ZCBieSBpc1BvcnQoKSBjaGVja3MgYWJvdmUuCi1pZiAoaXNRdCgpKSB7Ci0gICAgbXkgJGlzUGxh
dGZvcm1TZXQgPSAwOwotICAgIGZvciAoQEFSR1YpewotICAgICAgICAjIFBhc3MgLS1xdCBpZiBw
bGF0Zm9ybSBpc24ndCBwYXNzZWQgZXhwbGljaXRseSAoZWcuIHF0LTUuMCwgcXQtd2syLCAuLi4p
Ci0gICAgICAgIGlmKC9eLS1wbGF0Zm9ybS4qLyl7Ci0gICAgICAgICAgICAkaXNQbGF0Zm9ybVNl
dCA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcHVzaChAQVJHViwgIi0tcXQiKSBpZighJGlz
UGxhdGZvcm1TZXQpOwotfSBlbHNpZiAoaXNHdGsoKSkgeworaWYgKGlzR3RrKCkpIHsKICAgICBw
dXNoKEBBUkdWLCAiLS1ndGsiKTsKIH0gZWxzaWYgKGlzRWZsKCkpIHsKICAgICBwdXNoKEBBUkdW
LCAiLS1lZmwiKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRv
b2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
ICMhL3Vzci9iaW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKQEAgLTQ2LDcgKzQ2LDYgQEAgc3ViIHJ1bkdpdFVwZGF0ZSgpOwogbXkg
JHF1aWV0ID0gJyc7CiBteSAkc2hvd0hlbHA7CiAKLWRldGVybWluZUlzUXQoKTsKIGRldGVybWlu
ZUlzV2luQ2Fpcm8oKTsKIAogY2hkaXJXZWJLaXQoKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0LWJ1aWxkLWRpcmVjdG9yeQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdC1i
dWlsZC1kaXJlY3RvcnkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
LWJ1aWxkLWRpcmVjdG9yeQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKLSMhL3Vzci9i
aW4vcGVybAorIyEvdXNyL2Jpbi9wZXJsIC13CiAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQ5LDcgKzUwLDYgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10KICAgLS1ibGFja2Jl
cnJ5ICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIEJsYWNrQmVycnkg
cG9ydCBvbiBNYWMvTGludXgKICAgLS1lZmwgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxk
IGRpcmVjdG9yeSBmb3IgdGhlIEVGTCBwb3J0CiAgIC0tZ3RrICAgICAgICAgICAgICAgICBGaW5k
IHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICAg
ICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIFF0IHBvcnQKICAgLS13aW5j
YWlybyAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdXNpbmcgQ2Fpcm8g
KHJhdGhlciB0aGFuIENvcmVHcmFwaGljcykgb24gV2luZG93cwogICAtLXdpbmNlICAgICAgICAg
ICAgICAgRmluZCB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgV2luQ0UgcG9ydAogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRkaXJzLnBtCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dGRpcnMucG0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDYgQEAgbXkgJGRlYnVnZ2VyOwog
bXkgJG5tUGF0aDsKIG15ICRvc1hWZXJzaW9uOwogbXkgJGdlbmVyYXRlRHN5bTsKLW15ICRpc1F0
OwotbXkgJHFtYWtlYmluID0gInFtYWtlIjsgIyBBbGxvdyBvdmVycmlkZSBvZiB0aGUgcW1ha2Ug
YmluYXJ5IGZyb20gJFBBVEgKIG15ICRpc0d0azsKIG15ICRpc1dpbkNFOwogbXkgJGlzV2luQ2Fp
cm87CkBAIC0xNDMsMTEgKzE0MSw2IEBAIHN1YiBjdXJyZW50UGVybFBhdGgoKQogICAgIHJldHVy
biAkdGhpc1Blcmw7CiB9CiAKLXN1YiBzZXRRbWFrZUJpbmFyeVBhdGgoJCkKLXsKLSAgICAoJHFt
YWtlYmluKSA9IEBfOwotfQotCiAjIHVzZWQgZm9yIHNjcmlwdHMgd2hpY2ggYXJlIHN0b3JlZCBp
biBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbgogc3ViIHNldFNvdXJjZURpcigkKQogewpAQCAtMzgw
LDcgKzM3Myw2IEBAIHN1YiBhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKCkKICAgICBwdXNoKEBh
cmdzLCAnLS1kZWJ1ZycpIGlmICRjb25maWd1cmF0aW9uIGVxICJEZWJ1ZyI7CiAgICAgcHVzaChA
YXJncywgJy0tcmVsZWFzZScpIGlmICRjb25maWd1cmF0aW9uIGVxICJSZWxlYXNlIjsKICAgICBw
dXNoKEBhcmdzLCAnLS0zMi1iaXQnKSBpZiAkYXJjaGl0ZWN0dXJlIG5lICJ4ODZfNjQiOwotICAg
IHB1c2goQGFyZ3MsICctLXF0JykgaWYgaXNRdCgpOwogICAgIHB1c2goQGFyZ3MsICctLWd0aycp
IGlmIGlzR3RrKCk7CiAgICAgcHVzaChAYXJncywgJy0tZWZsJykgaWYgaXNFZmwoKTsKICAgICBw
dXNoKEBhcmdzLCAnLS13aW5jYWlybycpIGlmIGlzV2luQ2Fpcm8oKTsKQEAgLTUzNyw3ICs1Mjks
NyBAQCBzdWIgcHJvZHVjdERpcgogc3ViIGpzY1Byb2R1Y3REaXIKIHsKICAgICBteSAkcHJvZHVj
dERpciA9IHByb2R1Y3REaXIoKTsKLSAgICAkcHJvZHVjdERpciAuPSAiL2JpbiIgaWYgKGlzUXQo
KSB8fCBpc0VmbCgpKTsKKyAgICAkcHJvZHVjdERpciAuPSAiL2JpbiIgaWYgaXNFZmwoKTsKICAg
ICAkcHJvZHVjdERpciAuPSAiL1Byb2dyYW1zIiBpZiBpc0d0aygpOwogCiAgICAgcmV0dXJuICRw
cm9kdWN0RGlyOwpAQCAtNzk3LDQ4ICs3ODksNiBAQCBzdWIgYnVpbHREeWxpYlBhdGhGb3JOYW1l
CiAgICAgICAgIG15ICRsaWJyYXJ5RXh0ZW5zaW9uID0gJGxpYnJhcnlOYW1lID1+IC9eV2ViS2l0
JC9pID8gIi5zbyIgOiAiLmEiOwogICAgICAgICByZXR1cm4gIiRjb25maWd1cmF0aW9uUHJvZHVj
dERpci8kbGlicmFyeU5hbWUvbGliIiAuIGxjKCRsaWJyYXJ5TmFtZSkgLiAkbGlicmFyeUV4dGVu
c2lvbjsKICAgICB9Ci0gICAgaWYgKGlzUXQoKSkgewotICAgICAgICBteSAkaXNTZWFyY2hpbmdG
b3JXZWJDb3JlID0gJGxpYnJhcnlOYW1lID1+ICJXZWJDb3JlIjsKLSAgICAgICAgaWYgKGlzRGFy
d2luKCkpIHsKLSAgICAgICAgICAgICRsaWJyYXJ5TmFtZSA9ICJRdFdlYktpdFdpZGdldHMiOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGxpYnJhcnlOYW1lID0gIlF0NVdlYktpdFdp
ZGdldHMiOwotICAgICAgICB9Ci0gICAgICAgIG15ICRyZXN1bHQ7Ci0gICAgICAgIGlmIChpc0Rh
cndpbigpIGFuZCAtZCAiJGNvbmZpZ3VyYXRpb25Qcm9kdWN0RGlyL2xpYi8kbGlicmFyeU5hbWUu
ZnJhbWV3b3JrIikgewotICAgICAgICAgICAgJHJlc3VsdCA9ICIkY29uZmlndXJhdGlvblByb2R1
Y3REaXIvbGliLyRsaWJyYXJ5TmFtZS5mcmFtZXdvcmsvJGxpYnJhcnlOYW1lIjsKLSAgICAgICAg
fSBlbHNpZiAoaXNEYXJ3aW4oKSBhbmQgLWQgIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIi
KSB7Ci0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIv
bGliJGxpYnJhcnlOYW1lLmR5bGliIjsKLSAgICAgICAgfSBlbHNpZiAoaXNXaW5kb3dzKCkpIHsK
LSAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uKCkgZXEgIkRlYnVnIikgewotICAgICAgICAg
ICAgICAgICMgT24gV2luZG93cywgdGhlcmUgaXMgYSAiZCIgc3VmZml4IHRvIHRoZSBsaWJyYXJ5
IG5hbWUuIFNlZSA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTM5MjQvPi4KLSAg
ICAgICAgICAgICAgICAkbGlicmFyeU5hbWUgLj0gImQiOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBjaG9tcChteSAkbWtzcGVjID0gYCRxbWFrZWJpbiAtcXVlcnkgUVRfSE9TVF9EQVRB
YCk7Ci0gICAgICAgICAgICAkbWtzcGVjIC49ICIvbWtzcGVjcyI7Ci0gICAgICAgICAgICBteSAk
cXRNYWpvclZlcnNpb24gPSByZXRyaWV2ZVFNYWtlc3BlY1ZhcigiJG1rc3BlYy9xY29uZmlnLnBy
aSIsICJRVF9NQUpPUl9WRVJTSU9OIik7Ci0gICAgICAgICAgICBpZiAobm90ICRxdE1ham9yVmVy
c2lvbikgewotICAgICAgICAgICAgICAgICRxdE1ham9yVmVyc2lvbiA9ICIiOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9s
aWIvJGxpYnJhcnlOYW1lJHF0TWFqb3JWZXJzaW9uLmRsbCI7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIvbGliJGxp
YnJhcnlOYW1lLnNvIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgkaXNTZWFyY2hpbmdGb3JX
ZWJDb3JlKSB7Ci0gICAgICAgICAgICAjIFdpdGggQ09ORklHKz1mb3JjZV9zdGF0aWNfbGlic19h
c19zaGFyZWQgd2UgaGF2ZSBhIHNoYXJlZCBsaWJyYXJ5IGZvciBlYWNoIHN1YmRpci4KLSAgICAg
ICAgICAgICMgRm9yIGZlYXR1cmUgZGV0ZWN0aW9uIHRvIHdvcmsgaXQgaXMgbmVjZXNzYXJ5IHRv
IHJldHVybiB0aGUgcGF0aCBvZiB0aGUgV2ViQ29yZSBsaWJyYXJ5IGhlcmUuCi0gICAgICAgICAg
ICBteSAkcmVwbGFjZWRXaXRoV2ViQ29yZSA9ICRyZXN1bHQ7Ci0gICAgICAgICAgICAkcmVwbGFj
ZWRXaXRoV2ViQ29yZSA9fiBzLyRsaWJyYXJ5TmFtZS9XZWJDb3JlL2c7Ci0gICAgICAgICAgICBp
ZiAoLWUgJHJlcGxhY2VkV2l0aFdlYkNvcmUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJHJl
cGxhY2VkV2l0aFdlYkNvcmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gJHJlc3VsdDsKLSAgICB9CiAgICAgaWYgKGlzR3RrKCkpIHsKICAgICAgICAgIyBXZWJL
aXRHVEsrIGZvciBHVEsyLCBXZWJLaXRHVEsrIGZvciBHVEszLCBhbmQgV2ViS2l0MiByZXNwZWN0
aXZlbHkuCiAgICAgICAgIG15IEBsaWJyYXJpZXMgPSAoImxpYndlYmtpdGd0ay0xLjAiLCAibGli
d2Via2l0Z3RrLTMuMCIsICJsaWJ3ZWJraXQyZ3RrLTMuMCIpOwpAQCAtOTAwLDU2ICs4NTAsNiBA
QCBzdWIgZGV0ZXJtaW5lSXNJbnNwZWN0b3JGcm9udGVuZCgpCiAgICAgJGlzSW5zcGVjdG9yRnJv
bnRlbmQgPSBjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0taW5zcGVjdG9yLWZy
b250ZW5kIik7CiB9CiAKLXN1YiBpc1F0KCkKLXsKLSAgICBkZXRlcm1pbmVJc1F0KCk7Ci0gICAg
cmV0dXJuICRpc1F0OwotfQotCi1zdWIgZ2V0UXRWZXJzaW9uKCkKLXsKLSAgICBteSAkcXRWZXJz
aW9uID0gYCRxbWFrZWJpbiAtLXZlcnNpb25gOwotICAgICRxdFZlcnNpb24gPX4gcy9eKC4qKVF0
IHZlcnNpb24gKFxkXC5cZCkoLiopLyQyL3MgOwotICAgIHJldHVybiAkcXRWZXJzaW9uOwotfQot
Ci1zdWIgcXRGZWF0dXJlRGVmYXVsdHMKLXsKLSAgICBkaWUgIkVSUk9SOiBxbWFrZSBtaXNzaW5n
IGJ1dCByZXF1aXJlZCB0byBidWlsZCBXZWJLaXQuXG4iIGlmIG5vdCBjb21tYW5kRXhpc3RzKCRx
bWFrZWJpbik7Ci0KLSAgICBteSAkb2xkUW1ha2VFdmFsID0gJEVOVntRTUFLRV9DQUNIRV9FVkFM
fTsKLSAgICAkRU5We1FNQUtFX0NBQ0hFX0VWQUx9ID0gIkNPTkZJRys9cHJpbnRfZGVmYXVsdHMi
OwotCi0gICAgbXkgJG9yaWdpbmFsQ3dkID0gZ2V0Y3dkKCk7Ci0gICAgbXkgJHFtYWtlcGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJxbWFrZSIpOwotICAg
IGNoZGlyICRxbWFrZXBhdGggb3IgZGllICJGYWlsZWQgdG8gY2QgaW50byAiIC4gJHFtYWtlcGF0
aCAuICJcbiI7Ci0KLSAgICBteSAkZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGly
KCksICJXZWJLaXQucHJvIik7Ci0KLSAgICBteSBAYnVpbGRBcmdzOwotICAgIEBidWlsZEFyZ3Mg
PSAoQGJ1aWxkQXJncywgQHskX1swXX0pIGlmIChAXyk7Ci0KLSAgICBteSBAZGVmYXVsdHMgPSBg
JHFtYWtlYmluIEBidWlsZEFyZ3MgJGZpbGUgMj4mMWA7Ci0KLSAgICBteSAlcXRGZWF0dXJlRGVm
YXVsdHM7Ci0gICAgZm9yIChAZGVmYXVsdHMpIHsKLSAgICAgICAgaWYgKC9ERUZJTkVTOiAvKSB7
Ci0gICAgICAgICAgICB3aGlsZSAoLyhcUys/KT0oXFMrPykvZ2kpIHsKLSAgICAgICAgICAgICAg
ICAkcXRGZWF0dXJlRGVmYXVsdHN7JDF9PSQyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2lmICgvRG9uZSBjb21wdXRpbmcgZGVmYXVsdHMvKSB7Ci0gICAgICAgICAgICBsYXN0OwotICAg
ICAgICB9IGVsc2lmIChAXykgewotICAgICAgICAgICAgcHJpbnQgJF87Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBjaGRpciAkb3JpZ2luYWxDd2Q7Ci0gICAgJEVOVntRTUFLRV9DQUNIRV9FVkFM
fSA9ICRvbGRRbWFrZUV2YWw7Ci0KLSAgICByZXR1cm4gJXF0RmVhdHVyZURlZmF1bHRzOwotfQot
CiBzdWIgY29tbWFuZEV4aXN0cygkKQogewogICAgIG15ICRjb21tYW5kID0gc2hpZnQ7CkBAIC05
OTIsMjUgKzg5Miw2IEBAIHN1YiBpc1dLMigpCiAgICAgcmV0dXJuICRpc1dLMjsKIH0KIAotc3Vi
IGRldGVybWluZUlzUXQoKQotewotICAgIHJldHVybiBpZiBkZWZpbmVkKCRpc1F0KTsKLQotICAg
ICMgQWxsb3cgb3ZlcnJpZGUgaW4gY2FzZSBRVERJUiBpcyBub3Qgc2V0LgotICAgIGlmIChjaGVj
a0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0tcXQiKSkgewotICAgICAgICAkaXNRdCA9
IDE7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAjIFRoZSBwcmVzZW5jZSBvZiBRVERJ
UiBvbmx5IG1lYW5zIFF0IGlmIC0tZ3RrIG9yIC0tZWZsIG9yIC0tYmxhY2tiZXJyeSBvciAtLXdp
bmNhaXJvIGFyZSBub3Qgb24gdGhlIGNvbW1hbmQtbGluZQotICAgIGlmIChpc0d0aygpIHx8IGlz
RWZsKCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNXaW5DYWlybygpKSB7Ci0gICAgICAgICRpc1F0
ID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICRpc1F0ID0gZGVmaW5lZCgkRU5W
eydRVERJUid9KTsKLX0KLQogc3ViIGlzQmxhY2tCZXJyeSgpCiB7CiAgICAgZGV0ZXJtaW5lSXNC
bGFja0JlcnJ5KCk7CkBAIC0xMzA0LDcgKzExODUsNyBAQCBzdWIgaXNDcm9zc0NvbXBpbGF0aW9u
KCkKIAogc3ViIGlzQXBwbGVXZWJLaXQoKQogewotICAgIHJldHVybiAhKGlzUXQoKSBvciBpc0d0
aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tCZXJyeSgpKTsKKyAgICByZXR1
cm4gIShpc0d0aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tCZXJyeSgpKTsK
IH0KIAogc3ViIGlzQXBwbGVNYWNXZWJLaXQoKQpAQCAtMTQ5NSw3ICsxMzc2LDcgQEAgc3ViIHJl
bGF0aXZlU2NyaXB0c0RpcigpCiBzdWIgbGF1bmNoZXJQYXRoKCkKIHsKICAgICBteSAkcmVsYXRp
dmVTY3JpcHRzUGF0aCA9IHJlbGF0aXZlU2NyaXB0c0RpcigpOwotICAgIGlmIChpc0d0aygpIHx8
IGlzUXQoKSB8fCBpc0VmbCgpIHx8IGlzV2luQ0UoKSkgeworICAgIGlmIChpc0d0aygpIHx8IGlz
RWZsKCkgfHwgaXNXaW5DRSgpKSB7CiAgICAgICAgIHJldHVybiAiJHJlbGF0aXZlU2NyaXB0c1Bh
dGgvcnVuLWxhdW5jaGVyIjsKICAgICB9IGVsc2lmIChpc0FwcGxlV2ViS2l0KCkpIHsKICAgICAg
ICAgcmV0dXJuICIkcmVsYXRpdmVTY3JpcHRzUGF0aC9ydW4tc2FmYXJpIjsKQEAgLTE1MDYsOCAr
MTM4Nyw2IEBAIHN1YiBsYXVuY2hlck5hbWUoKQogewogICAgIGlmIChpc0d0aygpKSB7CiAgICAg
ICAgIHJldHVybiAiR3RrTGF1bmNoZXIiOwotICAgIH0gZWxzaWYgKGlzUXQoKSkgewotICAgICAg
ICByZXR1cm4gIlF0VGVzdEJyb3dzZXIiOwogICAgIH0gZWxzaWYgKGlzQXBwbGVXZWJLaXQoKSkg
ewogICAgICAgICByZXR1cm4gIlNhZmFyaSI7CiAgICAgfSBlbHNpZiAoaXNFZmwoKSkgewpAQCAt
MTUzNiwyMiArMTQxNSwxMCBAQCBzdWIgY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZwogICAgICAg
ICAgICAgcHJpbnQgIm1vc3QgbGlrZWx5IGZhaWwuIFRoZSBsYXRlc3QgWGNvZGUgaXMgYXZhaWxh
YmxlIGZyb20gdGhlIEFwcCBTdG9yZS5cbiI7CiAgICAgICAgICAgICBwcmludCAiKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsK
ICAgICAgICAgfQotICAgIH0gZWxzaWYgKGlzR3RrKCkgb3IgaXNRdCgpIG9yIGlzRWZsKCkpIHsK
LSAgICAgICAgbXkgQGNtZHMgPSBxdyhiaXNvbiBncGVyZik7Ci0gICAgICAgIGlmIChpc1F0KCkg
YW5kIGlzV2luZG93cygpKSB7Ci0gICAgICAgICAgICBwdXNoIEBjbWRzLCAid2luX2ZsZXgiOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaCBAY21kcywgImZsZXgiOwotICAgICAg
ICB9CisgICAgfSBlbHNpZiAoaXNHdGsoKSBvciBpc0VmbCgpKSB7CisgICAgICAgIG15IEBjbWRz
ID0gcXcoYmlzb24gZ3BlcmYgZmxleCk7CiAgICAgICAgIG15IEBtaXNzaW5nID0gKCk7CiAgICAg
ICAgIG15ICRvbGRQYXRoID0gJEVOVntQQVRIfTsKLSAgICAgICAgaWYgKGlzUXQoKSBhbmQgaXNX
aW5kb3dzKCkpIHsKLSAgICAgICAgICAgIGNob21wKG15ICRnbnVXaW4zMkRpciA9IGAkcW1ha2Vi
aW4gLXF1ZXJ5IFFUX0hPU1RfREFUQWApOwotICAgICAgICAgICAgJGdudVdpbjMyRGlyID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZSgkZ251V2luMzJEaXIsICIuLiIsICJnbnV3aW4zMiIsICJiaW4iKTsK
LSAgICAgICAgICAgIGlmICgtZCAiJGdudVdpbjMyRGlyIikgewotICAgICAgICAgICAgICAgICRF
TlZ7UEFUSH0gPSAkZ251V2luMzJEaXIgLiAiOyIgLiAkRU5We1BBVEh9OwotICAgICAgICAgICAg
fQotICAgICAgICB9CiAgICAgICAgIGZvcmVhY2ggbXkgJGNtZCAoQGNtZHMpIHsKICAgICAgICAg
ICAgIHB1c2ggQG1pc3NpbmcsICRjbWQgaWYgbm90IGNvbW1hbmRFeGlzdHMoJGNtZCk7CiAgICAg
ICAgIH0KQEAgLTE1NjAsOSArMTQyNyw2IEBAIHN1YiBjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmln
CiAgICAgICAgICAgICBteSAkbGlzdCA9IGpvaW4gIiwgIiwgQG1pc3Npbmc7CiAgICAgICAgICAg
ICBkaWUgIkVSUk9SOiAkbGlzdCBtaXNzaW5nIGJ1dCByZXF1aXJlZCB0byBidWlsZCBXZWJLaXQu
XG4iOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc1F0KCkgYW5kIGlzV2luZG93cygpKSB7Ci0g
ICAgICAgICAgICAkRU5We1BBVEh9ID0gJG9sZFBhdGg7Ci0gICAgICAgIH0KICAgICB9CiAgICAg
IyBXaW4zMiBhbmQgb3RoZXIgcGxhdGZvcm1zIG1heSB3YW50IHRvIGNoZWNrIGZvciBtaW5pbXVt
IGNvbmZpZwogfQpAQCAtMTY3MSwxNiArMTUzNSw2IEBAIHN1YiBzZXR1cEN5Z3dpbkVudigpCiAg
ICAgICAgICR3aWxsVXNlVkNFeHByZXNzV2hlbkJ1aWxkaW5nID0gMTsKICAgICB9CiAKLSAgICBt
eSAkcXRTREtQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwcm9ncmFtRmlsZXNQYXRoLCAiUXVp
Y2tUaW1lIFNESyIpOwotICAgIGlmICgwICYmICEgLWUgJHF0U0RLUGF0aCkgewotICAgICAgICBw
cmludCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKlxuIjsKLSAgICAgICAgcHJpbnQgIkNhbm5vdCBmaW5kICckcXRTREtQYXRoJ1xu
IjsKLSAgICAgICAgcHJpbnQgIlBsZWFzZSBkb3dubG9hZCB0aGUgUXVpY2tUaW1lIFNESyBmb3Ig
V2luZG93cyBmcm9tXG4iOwotICAgICAgICBwcmludCAiaHR0cDovL2RldmVsb3Blci5hcHBsZS5j
b20vcXVpY2t0aW1lL2Rvd25sb2FkL1xuIjsKLSAgICAgICAgcHJpbnQgIioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiI7Ci0gICAg
ICAgIGRpZTsKLSAgICB9Ci0KICAgICBwcmludCAiQnVpbGRpbmcgcmVzdWx0cyBpbnRvOiAiLCBi
YXNlUHJvZHVjdERpcigpLCAiXG4iOwogICAgIHByaW50ICJXRUJLSVRfT1VUUFVURElSIGlzIHNl
dCB0bzogIiwgJEVOVnsiV0VCS0lUX09VVFBVVERJUiJ9LCAiXG4iOwogICAgIHByaW50ICJXRUJL
SVRfTElCUkFSSUVTIGlzIHNldCB0bzogIiwgJEVOVnsiV0VCS0lUX0xJQlJBUklFUyJ9LCAiXG4i
OwpAQCAtMTczNSw3ICsxNTg5LDcgQEAgc3ViIGNvcHlJbnNwZWN0b3JGcm9udGVuZEZpbGVzCiAg
ICAgICAgIH0KICAgICB9IGVsc2lmIChpc0FwcGxlV2luV2ViS2l0KCkpIHsKICAgICAgICAgJGlu
c3BlY3RvclJlc291cmNlc0RpclBhdGggPSAkcHJvZHVjdERpciAuICIvV2ViS2l0LnJlc291cmNl
cy9pbnNwZWN0b3IiOwotICAgIH0gZWxzaWYgKGlzUXQoKSB8fCBpc0d0aygpKSB7CisgICAgfSBl
bHNpZiAoaXNHdGsoKSkgewogICAgICAgICBteSAkcHJlZml4ID0gJEVOVnsiV2ViS2l0SW5zdGFs
bGF0aW9uUHJlZml4In07CiAgICAgICAgICRpbnNwZWN0b3JSZXNvdXJjZXNEaXJQYXRoID0gKGRl
ZmluZWQoJHByZWZpeCkgPyAkcHJlZml4IDogIi91c3Ivc2hhcmUiKSAuICIvd2Via2l0LTEuMC93
ZWJpbnNwZWN0b3IiOwogICAgIH0gZWxzaWYgKGlzRWZsKCkpIHsKQEAgLTE3NjUsNyArMTYxOSw3
IEBAIHN1YiBjb3B5SW5zcGVjdG9yRnJvbnRlbmRGaWxlcwogICAgICAgICBzeXN0ZW0gImRpdHRv
IiwgJHNvdXJjZUxvY2FsaXplZFN0cmluZ3MsICRkZXN0aW5hdGlvbkxvY2FsaXplZFN0cmluZ3M7
CiAgICAgfQogCi0gICAgbXkgJGV4aXRTdGF0dXMgPSBzeXN0ZW0gInJzeW5jIiwgIi1hdXQiLCAi
LS1leGNsdWRlPS8uRFNfU3RvcmUiLCAiLS1leGNsdWRlPSoucmUyanMiLCAiLS1leGNsdWRlPS5z
dm4vIiwgIWlzUXQoKSA/ICItLWV4Y2x1ZGU9L1dlYktpdC5xcmMiIDogIiIsICRzb3VyY2VJbnNw
ZWN0b3JQYXRoLCAkaW5zcGVjdG9yUmVzb3VyY2VzRGlyUGF0aDsKKyAgICBteSAkZXhpdFN0YXR1
cyA9IHN5c3RlbSAicnN5bmMiLCAiLWF1dCIsICItLWV4Y2x1ZGU9Ly5EU19TdG9yZSIsICItLWV4
Y2x1ZGU9Ki5yZTJqcyIsICItLWV4Y2x1ZGU9LnN2bi8iLCAkc291cmNlSW5zcGVjdG9yUGF0aCwg
JGluc3BlY3RvclJlc291cmNlc0RpclBhdGg7CiAgICAgcmV0dXJuICRleGl0U3RhdHVzIGlmICRl
eGl0U3RhdHVzOwogCiAgICAgaWYgKGlzSU9TV2ViS2l0KCkpIHsKQEAgLTE4NDQsMjcgKzE2OTgs
NiBAQCBzdWIgcmV0cmlldmVRTWFrZXNwZWNWYXIKICAgICByZXR1cm4gJHZhcnZhbHVlOwogfQog
Ci1zdWIgcXRNYWtlQ29tbWFuZCgkKQotewotICAgIG15ICgkcW1ha2ViaW4pID0gQF87Ci0gICAg
Y2hvbXAobXkgJGhvc3REYXRhUGF0aCA9IGAkcW1ha2ViaW4gLXF1ZXJ5IFFUX0hPU1RfREFUQWAp
OwotICAgIG15ICRta3NwZWNQYXRoID0gJGhvc3REYXRhUGF0aCAuICIvbWtzcGVjcy9kZWZhdWx0
L3FtYWtlLmNvbmYiOwotICAgIGlmICghIC1lICRta3NwZWNQYXRoKSB7Ci0gICAgICAgIGNob21w
KG15ICRta3NwZWM9IGAkcW1ha2ViaW4gLXF1ZXJ5IFFNQUtFX1hTUEVDYCk7Ci0gICAgICAgICRt
a3NwZWNQYXRoID0gJGhvc3REYXRhUGF0aCAuICIvbWtzcGVjcy8iIC4gJG1rc3BlYyAuICIvcW1h
a2UuY29uZiI7Ci0gICAgfQotICAgIG15ICRjb21waWxlciA9IHJldHJpZXZlUU1ha2VzcGVjVmFy
KCRta3NwZWNQYXRoLCAiUU1BS0VfQ0MiKTsKLQotICAgICNwcmludCAiZGVmYXVsdCBzcGVjOiAi
IC4gJG1rc3BlYyAuICJcbiI7Ci0gICAgI3ByaW50ICJjb21waWxlciBmb3VuZDogIiAuICRjb21w
aWxlciAuICJcbiI7Ci0KLSAgICBpZiAoJGNvbXBpbGVyICYmICRjb21waWxlciBlcSAiY2wiKSB7
Ci0gICAgICAgIHJldHVybiAibm1ha2UiOwotICAgIH0KLQotICAgIHJldHVybiAibWFrZSI7Ci19
Ci0KIHN1YiBhdXRvdG9vbHNGbGFnKCQkKQogewogICAgIG15ICgkZmxhZywgJGZlYXR1cmUpID0g
QF87CkBAIC0yMjI2LDE5OSArMjA1OSw2IEBAIHN1YiBwcm9tcHRVc2VyCiAgICAgcmV0dXJuICRp
bnB1dCA/ICRpbnB1dCA6ICRkZWZhdWx0OwogfQogCi1zdWIgYnVpbGRRTWFrZVByb2plY3RzCi17
Ci0gICAgbXkgKCRwcm9qZWN0cywgJGNsZWFuLCBAYnVpbGRQYXJhbXMpID0gQF87Ci0KLSAgICBt
eSBAYnVpbGRBcmdzID0gKCk7Ci0gICAgbXkgJHFjb25maWdzID0gIiI7Ci0KLSAgICBteSAkbWFr
ZSA9IHF0TWFrZUNvbW1hbmQoJHFtYWtlYmluKTsKLSAgICBteSAkbWFrZWFyZ3MgPSAiIjsKLSAg
ICBteSAkY29tbWFuZDsKLSAgICBteSAkaW5zdGFsbEhlYWRlcnM7Ci0gICAgbXkgJGluc3RhbGxM
aWJzOwotICAgIGZvciBteSAkaSAoMCAuLiAkI2J1aWxkUGFyYW1zKSB7Ci0gICAgICAgIG15ICRv
cHQgPSAkYnVpbGRQYXJhbXNbJGldOwotICAgICAgICBpZiAoJG9wdCA9fiAvXi0tcW1ha2U9KC4q
KS9pICkgewotICAgICAgICAgICAgJHFtYWtlYmluID0gJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRv
cHQgPX4gL14tLXFtYWtlYXJnPSguKikvaSApIHsKLSAgICAgICAgICAgIHB1c2ggQGJ1aWxkQXJn
cywgJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRvcHQgPX4gL14tLW1ha2VhcmdzPSguKikvaSApIHsK
LSAgICAgICAgICAgICRtYWtlYXJncyA9ICQxOwotICAgICAgICB9IGVsc2lmICgkb3B0ID1+IC9e
LS1pbnN0YWxsLWhlYWRlcnM9KC4qKS9pICkgewotICAgICAgICAgICAgJGluc3RhbGxIZWFkZXJz
ID0gJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRvcHQgPX4gL14tLWluc3RhbGwtbGlicz0oLiopL2kg
KSB7Ci0gICAgICAgICAgICAkaW5zdGFsbExpYnMgPSAkMTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHB1c2ggQGJ1aWxkQXJncywgJG9wdDsKLSAgICAgICAgfQotICAgIH0KLQotICAg
ICMgQXV0b21hdGljYWxseSBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFVzIGZvciBtYWtlIG9u
bHkgaWYgdGhpcyBtYWtlIGFyZ3VtZW50IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHNwZWNpZmllZC4K
LSAgICBpZiAoJG1ha2UgZXEgIm1ha2UiICYmICRtYWtlYXJncyAhfiAvLVteXHNdKj9qXHMqXGQr
L2kgJiYgKCFkZWZpbmVkICRFTlZ7Ik1BS0VGTEFHUyJ9IHx8ICgkRU5WeyJNQUtFRkxBR1MifSAh
fiAvLVteXHNdKj9qXHMqXGQrL2kgKSkpIHsKLSAgICAgICAgJG1ha2VhcmdzIC49ICIgLWoiIC4g
bnVtYmVyT2ZDUFVzKCk7Ci0gICAgfQotCi0gICAgJG1ha2UgPSAiJG1ha2UgJG1ha2VhcmdzIjsK
LSAgICAkbWFrZSA9fiBzL1xzKyQvLzsKLQotICAgIG15ICRvcmlnaW5hbEN3ZCA9IGdldGN3ZCgp
OwotICAgIG15ICRkaXIgPSBGaWxlOjpTcGVjLT5jYW5vbnBhdGgocHJvZHVjdERpcigpKTsKLSAg
ICBGaWxlOjpQYXRoOjpta3BhdGgoJGRpcik7Ci0gICAgY2hkaXIgJGRpciBvciBkaWUgIkZhaWxl
ZCB0byBjZCBpbnRvICIgLiAkZGlyIC4gIlxuIjsKLQotICAgIGlmICgkY2xlYW4pIHsKLSAgICAg
ICAgJGNvbW1hbmQgPSAiJG1ha2UgZGlzdGNsZWFuIjsKLSAgICAgICAgcHJpbnQgIlxuQ2FsbGlu
ZyAnJGNvbW1hbmQnIGluICIgLiAkZGlyIC4gIlxuXG4iOwotICAgICAgICByZXR1cm4gc3lzdGVt
ICRjb21tYW5kOwotICAgIH0KLQotICAgIG15ICRxbWFrZXBhdGggPSBGaWxlOjpTcGVjLT5jYXRm
aWxlKHNvdXJjZURpcigpLCAiVG9vbHMiLCAicW1ha2UiKTsKLSAgICBteSAkcW1ha2Vjb21tYW5k
ID0gJHFtYWtlYmluOwotCi0gICAgbXkgJGNvbmZpZyA9IGNvbmZpZ3VyYXRpb24oKTsKLSAgICBw
dXNoIEBidWlsZEFyZ3MsICJJTlNUQUxMX0hFQURFUlM9IiAuICRpbnN0YWxsSGVhZGVycyBpZiBk
ZWZpbmVkKCRpbnN0YWxsSGVhZGVycyk7Ci0gICAgcHVzaCBAYnVpbGRBcmdzLCAiSU5TVEFMTF9M
SUJTPSIgLiAkaW5zdGFsbExpYnMgaWYgZGVmaW5lZCgkaW5zdGFsbExpYnMpOwotCi0gICAgbXkg
JHBhc3NlZENvbmZpZyA9IHBhc3NlZENvbmZpZ3VyYXRpb24oKSB8fCAiIjsKLSAgICBpZiAoJHBh
c3NlZENvbmZpZyA9fiBtL2RlYnVnL2kpIHsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09O
RklHLT1yZWxlYXNlIjsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09ORklHKz1kZWJ1ZyI7
Ci0gICAgfSBlbHNpZiAoJHBhc3NlZENvbmZpZyA9fiBtL3JlbGVhc2UvaSkgewotICAgICAgICBw
dXNoIEBidWlsZEFyZ3MsICJDT05GSUcrPXJlbGVhc2UiOwotICAgICAgICBwdXNoIEBidWlsZEFy
Z3MsICJDT05GSUctPWRlYnVnIjsKLSAgICB9IGVsc2lmICgkcGFzc2VkQ29uZmlnKSB7Ci0gICAg
ICAgIGRpZSAiQnVpbGQgdHlwZSAkcGFzc2VkQ29uZmlnIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCAt
LXF0LlxuIjsKLSAgICB9Ci0KLSAgICAjIFVzaW5nIGJ1aWxkLXdlYmtpdCB0byBidWlsZCBhc3N1
bWVzIHlvdSB3YW50IGEgZGV2ZWxvcGVyLWJ1aWxkCi0gICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09O
RklHLT1wcm9kdWN0aW9uX2J1aWxkIjsKLQotICAgIG15ICRzdm5SZXZpc2lvbiA9IGN1cnJlbnRT
Vk5SZXZpc2lvbigpOwotICAgIG15ICRwcmV2aW91c1N2blJldmlzaW9uID0gInVua25vd24iOwot
Ci0gICAgbXkgJGJ1aWxkSGludCA9ICIiOwotCi0gICAgbXkgJHBhdGhUb0J1aWx0UmV2aXNpb25z
ID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyLCAiLmJ1aWx0UmV2aXNpb25zLmNhY2hlIik7Ci0g
ICAgaWYgKC1lICRwYXRoVG9CdWlsdFJldmlzaW9ucyAmJiBvcGVuKEJVSUxUUkVWSVNJT05TLCAk
cGF0aFRvQnVpbHRSZXZpc2lvbnMpKSB7Ci0gICAgICAgIHdoaWxlICg8QlVJTFRSRVZJU0lPTlM+
KSB7Ci0gICAgICAgICAgICBpZiAoJF8gPX4gbS9eU1ZOX1JFVklTSU9OXHM9XHMoXGQrKSQvKSB7
Ci0gICAgICAgICAgICAgICAgJHByZXZpb3VzU3ZuUmV2aXNpb24gPSAkMTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjbG9zZShCVUlMVFJFVklTSU9OUyk7Ci0gICAgfQotCi0g
ICAgbXkgJHJlc3VsdCA9IDA7Ci0KLSAgICAjIFJ1biBxbWFrZSwgcmVnYWRsZXNzIG9mIGhhdmlu
ZyBhIG1ha2VmaWxlIG9yIG5vdCwgc28gdGhhdCBxbWFrZSBjYW4KLSAgICAjIGRldGVjdCBjaGFu
Z2VzIHRvIHRoZSBjb25maWd1cmF0aW9uLgotCi0gICAgcHVzaCBAYnVpbGRBcmdzLCAiLWFmdGVy
IE9WRVJSSURFX1NVQkRJUlM9XCJAeyRwcm9qZWN0c31cIiIgaWYgQHskcHJvamVjdHN9OwotICAg
IHVuc2hpZnQgQGJ1aWxkQXJncywgRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIldl
YktpdC5wcm8iKTsKLSAgICAkY29tbWFuZCA9ICIkcW1ha2Vjb21tYW5kIEBidWlsZEFyZ3MiOwot
ICAgIHByaW50ICJDYWxsaW5nICckY29tbWFuZCcgaW4gIiAuICRkaXIgLiAiXG5cbiI7Ci0gICAg
cHJpbnQgIkluc3RhbGxhdGlvbiBoZWFkZXJzIGRpcmVjdG9yeTogJGluc3RhbGxIZWFkZXJzXG4i
IGlmKGRlZmluZWQoJGluc3RhbGxIZWFkZXJzKSk7Ci0gICAgcHJpbnQgIkluc3RhbGxhdGlvbiBs
aWJyYXJpZXMgZGlyZWN0b3J5OiAkaW5zdGFsbExpYnNcbiIgaWYoZGVmaW5lZCgkaW5zdGFsbExp
YnMpKTsKLQotICAgIG15ICRjb25maWdDaGFuZ2VkID0gMDsKLSAgICBvcGVuKFFNQUtFLCAiJGNv
bW1hbmQgMj4mMSB8IikgfHwgZGllICJDb3VsZCBub3QgZXhlY3V0ZSBxbWFrZSI7Ci0gICAgd2hp
bGUgKDxRTUFLRT4pIHsKLSAgICAgICAgJGNvbmZpZ0NoYW5nZWQgPSAxIGlmICRfID1+IG0vVGhl
IGNvbmZpZ3VyYXRpb24gd2FzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgYnVpbGQvOwotICAgICAg
ICBwcmludCAkXzsKLSAgICB9Ci0KLSAgICBjbG9zZShRTUFLRSk7Ci0gICAgJHJlc3VsdCA9ICQ/
OwotCi0gICAgaWYgKCRyZXN1bHQgbmUgMCkgewotICAgICAgIGRpZSAiXG5GYWlsZWQgdG8gc2V0
IHVwIGJ1aWxkIGVudmlyb25tZW50IHVzaW5nICRxbWFrZWJpbiFcbiI7Ci0gICAgfQotCi0gICAg
bXkgJG1heWJlTmVlZHNDbGVhbkJ1aWxkID0gMDsKLSAgICBteSAkbmVlZHNJbmNyZW1lbnRhbEJ1
aWxkID0gMDsKLQotICAgICMgRnVsbCBpbmNyZW1lbnRhbCBidWlsZCAocnVuIHFtYWtlKSBuZWVk
ZWQgb24gYnVpbGRib3RzIGFuZCBFV1MgYm90cyBhbHdheXMuCi0gICAgaWYgKGdyZXAoL0NPTkZJ
R1wrPWJ1aWxkYm90LyxAYnVpbGRQYXJhbXMpKSB7Ci0gICAgICAgICRuZWVkc0luY3JlbWVudGFs
QnVpbGQgPSAxOwotICAgIH0KLQotICAgIGlmICgkc3ZuUmV2aXNpb24gbmUgJHByZXZpb3VzU3Zu
UmV2aXNpb24pIHsKLSAgICAgICAgcHJpbnQgIkxhc3QgYnVpbHQgcmV2aXNpb24gd2FzICIgLiAk
cHJldmlvdXNTdm5SZXZpc2lvbiAuCi0gICAgICAgICAgICAiLCBub3cgYXQgcmV2aXNpb24gJHN2
blJldmlzaW9uLiBGdWxsIGluY3JlbWVudGFsIGJ1aWxkIG5lZWRlZC5cbiI7Ci0gICAgICAgICRu
ZWVkc0luY3JlbWVudGFsQnVpbGQgPSAxOwotCi0gICAgICAgIG15IEBmaWxlTGlzdCA9IGxpc3RP
ZkNoYW5nZWRGaWxlc0JldHdlZW5SZXZpc2lvbnMoc291cmNlRGlyKCksICRwcmV2aW91c1N2blJl
dmlzaW9uLCAkc3ZuUmV2aXNpb24pOwotCi0gICAgICAgIGZvcmVhY2ggKEBmaWxlTGlzdCkgewot
ICAgICAgICAgICAgaWYgKG0vXC5wcltvaWZdJC8gb3IKLSAgICAgICAgICAgICAgICBtL1wucW1h
a2UuY29uZiQvIG9yCi0gICAgICAgICAgICAgICAgbS9eVG9vbHNcL3FtYWtlXC8vCi0gICAgICAg
ICAgICAgICApIHsKLSAgICAgICAgICAgICAgICBwcmludCAiQ2hhbmdlIHRvICRfIGRldGVjdGVk
LCBjbGVhbiBidWlsZCBtYXkgYmUgbmVlZGVkLlxuIjsKLSAgICAgICAgICAgICAgICAkbWF5YmVO
ZWVkc0NsZWFuQnVpbGQgPSAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoJGNvbmZpZ0NoYW5nZWQpIHsKLSAgICAgICAg
cHJpbnQgIkNhbGxpbmcgJyRtYWtlIHdpcGVjbGVhbicgaW4gIiAuICRkaXIgLiAiXG5cbiI7Ci0g
ICAgICAgICRyZXN1bHQgPSBzeXN0ZW0gIiRtYWtlIHdpcGVjbGVhbiI7Ci0gICAgfQotCi0gICAg
JGNvbW1hbmQgPSAiJG1ha2UiOwotICAgIGlmICgkbmVlZHNJbmNyZW1lbnRhbEJ1aWxkKSB7Ci0g
ICAgICAgICRjb21tYW5kIC49ICIgaW5jcmVtZW50YWwiOwotICAgIH0KLQotICAgIHByaW50ICJc
bkNhbGxpbmcgJyRjb21tYW5kJyBpbiAiIC4gJGRpciAuICJcblxuIjsKLSAgICAkcmVzdWx0ID0g
c3lzdGVtICRjb21tYW5kOwotCi0gICAgY2hkaXIgIi4uIiBvciBkaWU7Ci0KLSAgICBpZiAoJHJl
c3VsdCBlcSAwKSB7Ci0gICAgICAgICMgTm93IHRoYXQgdGhlIGJ1aWxkIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkgd2UgY2FuIHNhdmUgdGhlIFNWTiByZXZpc2lvbgotICAgICAgICBvcGVuKEJVSUxU
UkVWSVNJT05TLCAiPj4kcGF0aFRvQnVpbHRSZXZpc2lvbnMiKTsKLSAgICAgICAgcHJpbnQgQlVJ
TFRSRVZJU0lPTlMgIlNWTl9SRVZJU0lPTiA9ICRzdm5SZXZpc2lvblxuIjsKLSAgICAgICAgY2xv
c2UoQlVJTFRSRVZJU0lPTlMpOwotICAgIH0gZWxzaWYgKCEkY29tbWFuZCA9fiAvaW5jcmVtZW50
YWwvICYmIGV4aXRTdGF0dXMoJHJlc3VsdCkpIHsKLSAgICAgICAgbXkgJGV4aXRDb2RlID0gZXhp
dFN0YXR1cygkcmVzdWx0KTsKLSAgICAgICAgbXkgJGZhaWxNZXNzYWdlID0gPDxFT0Y7Ci0KLT09
PT09IEJVSUxEIEZBSUxFRCA9PT09PT0KLQotVGhlIGJ1aWxkIGZhaWxlZCB3aXRoIGV4aXQgY29k
ZSAkZXhpdENvZGUuIFRoaXMgbWF5IGhhdmUgYmVlbiBiZWNhdXNlIHlvdQotCi0gIC0gYWRkZWQg
YW4gI2luY2x1ZGUgdG8gYSBzb3VyY2UvaGVhZGVyCi0gIC0gYWRkZWQgYSBRX09CSkVDVCBtYWNy
byB0byBhIGNsYXNzCi0gIC0gYWRkZWQgYSBuZXcgcmVzb3VyY2UgdG8gYSBxcmMgZmlsZQotCi1h
cyBkZXBlbmRlbmNpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHJlLWNvbXB1dGVkIGZvciBsb2Nh
bCBkZXZlbG9wZXIgYnVpbGRzLgotWW91IG1heSB0cnkgY29tcHV0aW5nIGRlcGVuZGVuY2llcyBt
YW51YWxseSBieSBydW5uaW5nICdtYWtlIHFtYWtlX2FsbCcgaW46Ci0KLSAgJGRpcgotCi1vciBw
YXNzaW5nIC0tbWFrZWFyZ3M9InFtYWtlX2FsbCIgdG8gYnVpbGQtd2Via2l0LgotCi09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLUVPRgotICAgICAgICBwcmludCAiJGZhaWxNZXNzYWdlIjsK
LSAgICB9IGVsc2lmICgkbWF5YmVOZWVkc0NsZWFuQnVpbGQpIHsKLSAgICAgICAgcHJpbnQgIlxu
SW5jcmVtZW50YWwgYnVpbGQgZmFpbGVkLCBjbGVhbiBidWlsZCBuZWVkZWQuIFxuIjsKLSAgICAg
ICAgcHJpbnQgIkNhbGxpbmcgJyRtYWtlIHdpcGVjbGVhbicgaW4gIiAuICRkaXIgLiAiXG5cbiI7
Ci0gICAgICAgIGNoZGlyICRkaXIgb3IgZGllOwotICAgICAgICBzeXN0ZW0gIiRtYWtlIHdpcGVj
bGVhbiI7Ci0KLSAgICAgICAgcHJpbnQgIlxuQ2FsbGluZyAnJG1ha2UnIGluICIgLiAkZGlyIC4g
IlxuXG4iOwotICAgICAgICAkcmVzdWx0ID0gc3lzdGVtICRtYWtlOwotICAgIH0KLQotICAgIHJl
dHVybiAkcmVzdWx0OwotfQotCiBzdWIgYnVpbGRHdGtQcm9qZWN0CiB7CiAgICAgbXkgKCRwcm9q
ZWN0LCAkY2xlYW4sICRwcmVmaXgsICRtYWtlQXJncywgJG5vV2ViS2l0MSwgJG5vV2ViS2l0Miwg
QGZlYXR1cmVzKSA9IEBfOwpAQCAtMjQ0OCwxMCArMjA4OCw2IEBAIHN1YiBzZXRQYXRoRm9yUnVu
bmluZ1dlYktpdEFwcAogCiAgICAgaWYgKGlzQXBwbGVXaW5XZWJLaXQoKSkgewogICAgICAgICAk
ZW52LT57UEFUSH0gPSBqb2luKCc6JywgcHJvZHVjdERpcigpLCBkaXJuYW1lKGluc3RhbGxlZFNh
ZmFyaVBhdGgoKSksIGFwcGxlQXBwbGljYXRpb25TdXBwb3J0UGF0aCgpLCAkZW52LT57UEFUSH0g
fHwgIiIpOwotICAgIH0gZWxzaWYgKGlzUXQoKSkgewotICAgICAgICBteSAkcXRMaWJzID0gYCRx
bWFrZWJpbiAtcXVlcnkgUVRfSU5TVEFMTF9MSUJTYDsKLSAgICAgICAgJHF0TGlicyA9fiBzL1tc
bnxccl0kLy9nOwotICAgICAgICAkZW52LT57UEFUSH0gPSBqb2luKCc7JywgJHF0TGlicywgcHJv
ZHVjdERpcigpIC4gIi9saWIiLCAkZW52LT57UEFUSH0gfHwgIiIpOwogICAgIH0KIH0KIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6
ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvYmFzZWxpbmVvcHRpbWl6ZXIucHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMywgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NTksNyArNjAsNiBAQCBkZWYgX2Jhc2VsaW5lX3NlYXJjaF9oeXBlcmdyYXBoKGhvc3QsIHBvCiBf
VklSVFVBTF9QT1JUUyA9IHsKICAgICAnbWFjLWZ1dHVyZSc6IFsnTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWZ1dHVyZScsICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnLCAnTGF5b3V0VGVzdHMn
XSwKICAgICAnd2luLWZ1dHVyZSc6IFsnTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLWZ1dHVyZScs
ICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4nLCAnTGF5b3V0VGVzdHMnXSwKLSAgICAncXQtdW5r
bm93bic6IFsnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtdW5rbm93bicsICdMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdCcsICdMYXlvdXRUZXN0cyddLAogfQogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2Vs
aW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC05OSwyNCArMTAwLDE1IEBAIGNsYXNzIEJhc2VsaW5lT3B0aW1pemVyVGVzdCh1bml0
dGVzdC5UZXMKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbic6ICc0
NjJkMDNiOWMwMjVkYjFiMDM5MmQ3NDUzMzEwZGJlZTVmOWE5ZTc0JywKICAgICAgICAgfSkKIAot
ICAgIGRlZiB0ZXN0X3F0X3Vua25vd24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2Fzc2VydE9wdGlt
aXphdGlvbih7Ci0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNDYyZDAz
YjljMDI1ZGIxYjAzOTJkNzQ1MzMxMGRiZWU1ZjlhOWU3NCcsCi0gICAgICAgIH0sIHsKLSAgICAg
ICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdCc6ICc0NjJkMDNiOWMwMjVkYjFiMDM5MmQ3
NDUzMzEwZGJlZTVmOWE5ZTc0JywKLSAgICAgICAgfSkKLQogICAgIGRlZiB0ZXN0X3dpbl9kb2Vz
X25vdF9kcm9wX3RvX3dpbl83c3AwKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6
YXRpb24oewogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbic6ICcxJywKICAg
ICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnOiAnMicsCiAgICAgICAgICAgICAn
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrJzogJzMnLAotICAgICAgICAgICAgJ0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0JzogJzQnLAogICAgICAgICB9LCB7CiAgICAgICAgICAgICAnTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luJzogJzEnLAogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYyc6ICcyJywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsnOiAnMycs
Ci0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcsCiAgICAgICAgIH0p
CiAKICAgICBkZWYgdGVzdF9jb21tb25fZGlyZWN0b3J5X2luY2x1ZGVzX3Jvb3Qoc2VsZik6CkBA
IC0xMjQsNyArMTE2LDYgQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXJUZXN0KHVuaXR0ZXN0LlRl
cwogICAgICAgICAjIHRvIG9wdGltaXplLgogICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6YXRp
b25GYWlsZWQoewogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ayc6ICdlODYw
ODc2M2Y2MjQxZGRhY2RkNWMxZWYxOTczYmEyNzE3N2QwODQ2JywKLSAgICAgICAgICAgICdMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdCc6ICdiY2JkNDU3ZDU0NTk4NmI3YWJmMTIyMTY1NWQ3MjIzNjMw
NzlhYzg3JywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnOiAnZTg2MDg3
NjNmNjI0MWRkYWNkZDVjMWVmMTk3M2JhMjcxNzdkMDg0NicsCiAgICAgICAgIH0pCiAKQEAgLTE1
MywxMCArMTQ0LDggQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXJUZXN0KHVuaXR0ZXN0LlRlcwog
ICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6YXRpb24oewogICAgICAgICAgICAgJ0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ayc6ICczJywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwnOiAnMycsCi0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcs
CiAgICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjJzogJzUnLAogICAgICAgICB9
LCB7CiAgICAgICAgICAgICAnTGF5b3V0VGVzdHMnOiAnMycsCi0gICAgICAgICAgICAnTGF5b3V0
VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcsCiAgICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjJzogJzUnLAogICAgICAgICB9KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9j
b21tb24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weQko
cmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBAQAog
IyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMg
Q29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTM3Niw3ICszNzcsNiBAQCBjbGFzcyBDaGFu
Z2VMb2dUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNl
X3Jldmlld2VyX3RleHRfbGlzdCgnUmV2aWV3ZWQgYnkgTk9CT0RZLicsIE5vbmUpCiAgICAgICAg
IHNlbGYuX2Fzc2VydF9wYXJzZV9yZXZpZXdlcl90ZXh0X2xpc3QoJ1Jldmlld2VkIGJ5IE5PQk9E
WSAtIEJ1aWxkIEZpeC4nLCBOb25lKQogICAgICAgICBzZWxmLl9hc3NlcnRfcGFyc2VfcmV2aWV3
ZXJfdGV4dF9saXN0KCdSZXZpZXdlZCBieSBOT0JPRFksIGxheW91dCB0ZXN0cyBmaXguJywgTm9u
ZSkKLSAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNlX3Jldmlld2VyX3RleHRfbGlzdCgnUmV2aWV3
ZWQgYnkgTk9CT0RZIChRdCBidWlsZCBmaXggcHQgMikuJywgTm9uZSkKICAgICAgICAgc2VsZi5f
YXNzZXJ0X3BhcnNlX3Jldmlld2VyX3RleHRfbGlzdCgnUmV2aWV3ZWQgYnkgTk9CT0RZKHJvbGxv
dXQpJywgTm9uZSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNlX3Jldmlld2VyX3RleHRfbGlz
dCgnUmV2aWV3ZWQgYnkgTk9CT0RZIChCdWlsZCBmaXgsIGZvcmdvdCB0byBzdm4gYWRkIHRoaXMg
ZmlsZSknLCBOb25lKQogICAgICAgICBzZWxmLl9hc3NlcnRfcGFyc2VfcmV2aWV3ZXJfdGV4dF9s
aXN0KCdSZXZpZXdlZCBieSBub2JvZHkgKHRyaXZpYWwgZm9sbG93IHVwIGZpeCksIEpvc2VwaCBQ
ZWNvcmFybyBMR1RNLWVkLicsIE5vbmUpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2Nv
bW1vbi9jb25maWcvd2F0Y2hsaXN0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QJKHdvcmtpbmcgY29weSkKQEAg
LTc1LDIwICs3NSw2IEBACiAgICAgICAgICJHdGtXZWJLaXQyUHVibGljQVBJIjogewogICAgICAg
ICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay8iLAog
ICAgICAgICB9LAotICAgICAgICAiUXRCdWlsZFN5c3RlbSI6IHsKLSAgICAgICAgICAgICMgUHJv
amVjdCBmaWxlcyBmb3IgZWFjaCB0YXJnZXQgYXJlIGludGVudGlvbmFsbHkgbGVmdCBvdXQsIGFz
IHRob3NlCi0gICAgICAgICAgICAjIG1vc3RseSBsaXN0IHNvdXJjZSBhbmQgaGVhZGVyIGZpbGVz
LCB3aGljaCB3b3VsZCBqdXN0IGFkZCBub2lzZS4KLSAgICAgICAgICAgICJmaWxlbmFtZSI6IHIi
VG9vbHMvcW1ha2UvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8V2ViS2l0LnBybyIsCi0g
ICAgICAgIH0sCi0gICAgICAgICJRdFdlYktpdDJQdWJsaWNBUEkiOiB7Ci0gICAgICAgICAgICAi
ZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvIgotICAgICAgICAg
ICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9jcHAvcXQvIgot
ICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
L3F0LyIsCi0gICAgICAgIH0sCi0gICAgICAgICJRdEdyYXBoaWNzIjogewotICAgICAgICAgICAg
ImZpbGVuYW1lIjogciJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9xdC8iCi0gICAg
ICAgIH0sCiAgICAgICAgICJDb29yZGluYXRlZEdyYXBoaWNzIjogewogICAgICAgICAgICAgImZp
bGVuYW1lIjogciJTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvQ29vcmRpbmF0ZWRH
cmFwaGljcy8iCiAgICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy8iCkBAIC0xMDEsMjYgKzg3LDYgQEAKICAgICAgICAg
Ik9wZW5HTCI6IHsKICAgICAgICAgICAgICJmaWxlbmFtZSI6IHIiU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsLyIsCiAgICAgICAgIH0sCi0gICAgICAgICJRdFdlYktpdDJQ
bGF0Zm9ybVNwZWNpZmljIjogewotICAgICAgICAgICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2Vi
S2l0Mi8uKlwuKHByaXxwcm8pIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dl
YktpdDIvUGxhdGZvcm0vcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dl
YktpdDIvcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvUGx1
Z2luUHJvY2Vzcy9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0
Mi9QbGF0Zm9ybS9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0
Mi9TaGFyZWQvQVBJL2MvcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dl
YktpdDIvU2hhcmVkL3F0LyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvcXQvIgotICAgICAgICAgICAgICAgICAgICAg
ICAgciJ8U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9GdWxsU2NyZWVuL3F0LyIKLSAgICAgICAg
ICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9xdC8i
Ci0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL3F0
LyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
UGx1Z2lucy9OZXRzY2FwZS9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0Rvd25sb2Fkcy9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAg
ICByInxTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L3F0LyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvQ29va2llcy9x
dC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BsdWdpbnMvcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0xhdW5jaGVyL3F0LyIsCi0gICAgICAgIH0sCiAgICAgICAgICJDU1MiOiB7CiAg
ICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJDb3JlL2Nzcy8iLAogICAgICAgICB9
LApAQCAtMzY2LDEwICszMzIsNiBAQAogICAgICAgICAiTmV0d29ya0luZm8iOiBbICJneXV5b3Vu
Zy5raW1Ad2Via2l0Lm9yZyIsICJkY2hyaXNAZ21haWwuY29tIiBdLAogICAgICAgICAiT3BlbkdM
IiA6IFsgIm5vYW1Ad2Via2l0Lm9yZyIsICJkaW5vQGFwcGxlLmNvbSIsICJrb25kYXBhbGx5a2Fs
eWFuQGdtYWlsLmNvbSIgXSwKICAgICAgICAgIlBlcmZvcm1hbmNlVGVzdHMiOiBbICJybml3YUB3
ZWJraXQub3JnIiBdLAotICAgICAgICAiUXRCdWlsZFN5c3RlbSIgOiBbICJhYmVjc2lAd2Via2l0
Lm9yZyIgXSwKLSAgICAgICAgIlF0R3JhcGhpY3MiIDogWyAibm9hbUB3ZWJraXQub3JnIiBdLAot
ICAgICAgICAiUXRXZWJLaXQyUGxhdGZvcm1TcGVjaWZpYyI6IFsgImFsZXhpc0B3ZWJraXQub3Jn
IiwgImNtYXJjZWxvQHdlYmtpdC5vcmciLCAiYWJlY3NpQHdlYmtpdC5vcmciIF0sCi0gICAgICAg
ICJRdFdlYktpdDJQdWJsaWNBUEkiOiBbICJhbGV4aXNAd2Via2l0Lm9yZyIsICJjbWFyY2Vsb0B3
ZWJraXQub3JnIiwgImFiZWNzaUB3ZWJraXQub3JnIiBdLAogICAgICAgICAiUmVnaW9uc0RldmVs
b3BtZW50fFJlZ2lvbnNFeHBlY3RhdGlvbnNNb3JlfFJlZ2lvbnNFeHBlY3RhdGlvbnNMZXNzfFJl
Z2lvbnNVc2FnZSI6IFsgIldlYmtpdEJ1Z1RyYWNrZXJAYWRvYmUuY29tIiBdLAogICAgICAgICAi
UmVuZGVyaW5nIjogWyAiZXNwcmVobithdXRvY2NAY2hyb21pdW0ub3JnIiwgImdsZW5uQHNreW5h
di5jb20iLCAia29uZGFwYWxseWthbHlhbkBnbWFpbC5jb20iIF0sCiAgICAgICAgICJSZW5kZXJM
YXllcnMiIDogWyAic2ltb24uZnJhc2VyQGFwcGxlLmNvbSIsICJrb25kYXBhbGx5a2FseWFuQGdt
YWlsLmNvbSIgXSwKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250
ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtMSw2ICsxLDYgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBHYWJvciBSYXBjc2FueWkgKHJn
YWJvckBpbmYudS1zemVnZWQuaHUpLCBVbml2ZXJzaXR5IG9mIFN6ZWdlZAotIyBDb3B5cmlnaHQg
KEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTEsIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zIGFyZQpAQCAtOTI1LDkgKzkyNSw2IEBAIGNsYXNzIFBvcnRUZXN0KHVu
aXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgZGlzYWJsZWRfdGVzdF9jaHJvbWl1bV9tYWNfbGlv
bl9pbl90ZXN0X3NoZWxsX21vZGUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X21vY2tfcG9y
dF93b3JrcygnY2hyb21pdW0tbWFjLWxpb24nLCBhcmdzPVsnLS1hZGRpdGlvbmFsLWRydC1mbGFn
PS0tdGVzdC1zaGVsbCddKQogCi0gICAgZGVmIGRpc2FibGVkX3Rlc3RfcXRfbGludXgoc2VsZik6
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X21vY2tfcG9ydF93b3JrcygncXQtbGludXgnKQotCiAgICAg
ZGVmIGRpc2FibGVkX3Rlc3RfbWFjX2xpb24oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X21v
Y2tfcG9ydF93b3JrcygnbWFjLWxpb24nKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
ZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRl
c3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAx
MCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMjQ4LDcgKzI0OSw3IEBAIGNsYXNzIE1pc2NUZXN0cyhCYXNlKToKIAogY2xh
c3MgU2tpcHBlZFRlc3RzKEJhc2UpOgogICAgIGRlZiBjaGVjayhzZWxmLCBleHBlY3RhdGlvbnMs
IG92ZXJyaWRlcywgc2tpcHMsIGxpbnQ9RmFsc2UpOgotICAgICAgICBwb3J0ID0gTW9ja0hvc3Qo
KS5wb3J0X2ZhY3RvcnkuZ2V0KCdxdCcpCisgICAgICAgIHBvcnQgPSBNb2NrSG9zdCgpLnBvcnRf
ZmFjdG9yeS5nZXQoJ21hYycpCiAgICAgICAgIHBvcnQuX2ZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9m
aWxlKHBvcnQuX2ZpbGVzeXN0ZW0uam9pbihwb3J0LmxheW91dF90ZXN0c19kaXIoKSwgJ2ZhaWx1
cmVzL2V4cGVjdGVkL3RleHQuaHRtbCcpLCAnZm9vJykKICAgICAgICAgZXhwZWN0YXRpb25zX2Rp
Y3QgPSBPcmRlcmVkRGljdCgpCiAgICAgICAgIGV4cGVjdGF0aW9uc19kaWN0WydleHBlY3RhdGlv
bnMnXSA9IGV4cGVjdGF0aW9ucwpAQCAtMjg3LDcgKzI4OCw3IEBAIGNsYXNzIFNraXBwZWRUZXN0
cyhCYXNlKToKICAgICAgICAgICAgICAgICAgICBza2lwcz1bJ2ZhaWx1cmVzL2V4cGVjdGVkJ10p
CiAKICAgICBkZWYgdGVzdF9za2lwcGVkX2VudHJ5X2RvbnRfZXhpc3Qoc2VsZik6Ci0gICAgICAg
IHBvcnQgPSBNb2NrSG9zdCgpLnBvcnRfZmFjdG9yeS5nZXQoJ3F0JykKKyAgICAgICAgcG9ydCA9
IE1vY2tIb3N0KCkucG9ydF9mYWN0b3J5LmdldCgnbWFjJykKICAgICAgICAgZXhwZWN0YXRpb25z
X2RpY3QgPSBPcmRlcmVkRGljdCgpCiAgICAgICAgIGV4cGVjdGF0aW9uc19kaWN0WydleHBlY3Rh
dGlvbnMnXSA9ICcnCiAgICAgICAgIHBvcnQuZXhwZWN0YXRpb25zX2RpY3QgPSBsYW1iZGE6IGV4
cGVjdGF0aW9uc19kaWN0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkocmV2
aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHdv
cmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpA
QCAtOTUsNyArOTYsNyBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgZGVmIF9faW5pdF9fKHNl
bGYsIGhvc3QsIHBvcnRfbmFtZSwgb3B0aW9ucz1Ob25lLCAqKmt3YXJncyk6CiAKICAgICAgICAg
IyBUaGlzIHZhbHVlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSBjbHMucG9ydF9uYW1lIGJ5IGhhdmlu
ZyB2ZXJzaW9uIG1vZGlmaWVycwotICAgICAgICAjIGFuZCBvdGhlciBmaWVsZHMgYXBwZW5kZWQg
dG8gaXQgKGZvciBleGFtcGxlLCAncXQtYXJtJyBvciAnbWFjLXdrMicpLgorICAgICAgICAjIGFu
ZCBvdGhlciBmaWVsZHMgYXBwZW5kZWQgdG8gaXQgKGZvciBleGFtcGxlLCAnbWFjLXdrMicgb3Ig
J3dpbicpLgogICAgICAgICBzZWxmLl9uYW1lID0gcG9ydF9uYW1lCiAKICAgICAgICAgIyBUaGVz
ZSBhcmUgZGVmYXVsdCB2YWx1ZXMgdGhhdCBzaG91bGQgYmUgb3ZlcnJpZGRlbiBpbiBhIHN1YmNs
YXNzZXMuCkBAIC0xNDEwLDcgKzE0MTEsNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgIyB0
byB1c2UgZm9yIGFsbCBwb3J0IGNvbmZpZ3VyYXRpb25zIChpbmNsdWRpbmcgYXJjaGl0ZWN0dXJl
cywgZ3JhcGhpY3MgdHlwZXMsIGV0YykuCiAgICAgZGVmIF9wb3J0X2ZsYWdfZm9yX3NjcmlwdHMo
c2VsZik6CiAgICAgICAgICMgVGhpcyBpcyBvdmVycnJpZGVuIGJ5IHBvcnRzIHdoaWNoIG5lZWQg
YSBmbGFnIHBhc3NlZCB0byBzY3JpcHRzIHRvIGRpc3Rpbmd1aXNoIHRoZSB1c2Ugb2YgdGhhdCBw
b3J0LgotICAgICAgICAjIEZvciBleGFtcGxlIC0tcXQgb24gbGludXgsIHNpbmNlIGEgdXNlciBt
aWdodCBoYXZlIGJvdGggR3RrIGFuZCBRdCBsaWJyYXJpZXMgaW5zdGFsbGVkLgogICAgICAgICBy
ZXR1cm4gTm9uZQogCiAgICAgZGVmIHRvb2xpbmdfZmxhZyhzZWxmKToKQEAgLTE1MzYsNyArMTUz
Niw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKIAogICAgIGRlZiBfd2syX3BvcnRfbmFtZShzZWxm
KToKICAgICAgICAgIyBCeSBjdXJyZW50IGNvbnZlbnRpb24sIHRoZSBXZWJLaXQyIG5hbWUgaXMg
YWx3YXlzIG1hYy13azIsIHdpbi13azIsIG5vdCBtYWMtbGVvcGFyZC13azIsIGV0YywKLSAgICAg
ICAgIyBleGNlcHQgZm9yIFF0IGJlY2F1c2UgV2ViS2l0MiBpcyBvbmx5IHN1cHBvcnRlZCBieSBR
dCA1LjAgKHRoZXJlZm9yZTogcXQtNS4wLXdrMikuCiAgICAgICAgIHJldHVybiAiJXMtd2syIiAl
IHNlbGYucG9ydF9uYW1lCiAKICAgICAjIFdlIG1pZ2h0IG5lZWQgdG8gcGFzcyBzY20gaW50byB0
aGlzIGZ1bmN0aW9uIGZvciBzY20uY2hlY2tvdXRfcm9vdApJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcG9ydC9idWlsZGVycy5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBA
QAogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTY0LDkgKzY1LDYgQEAgX2V4YWN0X21h
dGNoZXMgPSB7CiAgICAgIkdUSyBMaW51eCA2NC1iaXQgUmVsZWFzZSI6IHsicG9ydF9uYW1lIjog
Imd0ayIsICJpc19kZWJ1ZyI6IEZhbHNlfSwKICAgICAiR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNl
IFdLMiAoVGVzdHMpIjogeyJwb3J0X25hbWUiOiAiZ3RrLXdrMiIsICJpc19kZWJ1ZyI6IEZhbHNl
fSwKIAotICAgICMgRklYTUU6IFJlbW92ZSByZWJhc2VsaW5lX292ZXJyaWRlX2RpciBvbmNlIHRo
ZXJlIGFyZSBRdCBib3RzIGZvciBhbGwgdGhlIHBsYXRmb3JtL3F0LSogZGlyZWN0b3JpZXMuCi0g
ICAgIlF0IExpbnV4IFJlbGVhc2UiOiB7InBvcnRfbmFtZSI6ICJxdC1saW51eCIsICJpc19kZWJ1
ZyI6IEZhbHNlLCAicmViYXNlbGluZV9vdmVycmlkZV9kaXIiOiAicXQifSwKLQogICAgICJFRkwg
TGludXggNjQtYml0IFJlbGVhc2UiOiB7InBvcnRfbmFtZSI6ICJlZmwiLCAiaXNfZGVidWciOiBG
YWxzZX0sCiAgICAgIkVGTCBMaW51eCA2NC1iaXQgUmVsZWFzZSBXSzIiOiB7InBvcnRfbmFtZSI6
ICJlZmwtd2syIiwgImlzX2RlYnVnIjogRmFsc2V9LAogICAgICJFRkwgTGludXggNjQtYml0IERl
YnVnIFdLMiI6IHsicG9ydF9uYW1lIjogImVmbC13azIiLCAiaXNfZGVidWciOiBUcnVlfSwKQEAg
LTc5LDE0ICs3NywxMCBAQCBfZnV6enlfbWF0Y2hlcyA9IHsKICAgICByIkFwcGxlIExpb24iOiAi
bWFjLWxpb24iLAogICAgIHIiV2luZG93cyI6ICJ3aW4iLAogICAgIHIiR1RLIjogImd0ayIsCi0g
ICAgciJRdCI6ICJxdCIsCiB9CiAKIAogX3BvcnRzX3dpdGhvdXRfYnVpbGRlcnMgPSBbCi0gICAg
InF0LW1hYyIsCi0gICAgInF0LXdpbiIsCi0gICAgInF0LXdrMiIsCiBdCiAKIApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2ZhY3RvcnkucHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0x
LDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTQ1LDkgKzQ2LDYgQEAg
ZGVmIHBsYXRmb3JtX29wdGlvbnModXNlX2dsb2JzPUZhbHNlKToKICAgICAgICAgb3B0cGFyc2Uu
bWFrZV9vcHRpb24oJy0tZ3RrJywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRlc3Q9J3BsYXRmb3Jt
JywKICAgICAgICAgICAgIGNvbnN0PSgnZ3RrKicgaWYgdXNlX2dsb2JzIGVsc2UgJ2d0aycpLAog
ICAgICAgICAgICAgaGVscD0oJ0FsaWFzIGZvciAtLXBsYXRmb3JtPWd0ayonIGlmIHVzZV9nbG9i
cyBlbHNlICdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1ndGsnKSksCi0gICAgICAgIG9wdHBhcnNlLm1h
a2Vfb3B0aW9uKCctLXF0JywgYWN0aW9uPSdzdG9yZV9jb25zdCcsIGRlc3Q9InBsYXRmb3JtIiwK
LSAgICAgICAgICAgIGNvbnN0PSgncXQqJyBpZiB1c2VfZ2xvYnMgZWxzZSAncXQnKSwKLSAgICAg
ICAgICAgIGhlbHA9KCdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1xdCcgaWYgdXNlX2dsb2JzIGVsc2Ug
J0FsaWFzIGZvciAtLXBsYXRmb3JtPXF0JykpLAogICAgICAgICBdCiAKIApAQCAtNzgsNyArNzYs
NiBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgICAgICAnZ3RrLkd0a1BvcnQnLAog
ICAgICAgICAnbWFjLk1hY1BvcnQnLAogICAgICAgICAnbW9ja19kcnQuTW9ja0RSVFBvcnQnLAot
ICAgICAgICAncXQuUXRQb3J0JywKICAgICAgICAgJ3Rlc3QuVGVzdFBvcnQnLAogICAgICAgICAn
d2luLldpblBvcnQnLAogICAgICkKQEAgLTg5LDcgKzg2LDcgQEAgY2xhc3MgUG9ydEZhY3Rvcnko
b2JqZWN0KToKICAgICBkZWYgX2RlZmF1bHRfcG9ydChzZWxmLCBvcHRpb25zKToKICAgICAgICAg
cGxhdGZvcm0gPSBzZWxmLl9ob3N0LnBsYXRmb3JtCiAgICAgICAgIGlmIHBsYXRmb3JtLmlzX2xp
bnV4KCkgb3IgcGxhdGZvcm0uaXNfZnJlZWJzZCgpOgotICAgICAgICAgICAgcmV0dXJuICdxdC1s
aW51eCcKKyAgICAgICAgICAgIHJldHVybiAnZ3RrJwogICAgICAgICBlbGlmIHBsYXRmb3JtLmlz
X21hYygpOgogICAgICAgICAgICAgcmV0dXJuICdtYWMnCiAgICAgICAgIGVsaWYgcGxhdGZvcm0u
aXNfd2luKCk6CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeV91bml0
dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9y
eV91bml0dGVzdC5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2ZhY3RvcnlfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBA
CiAjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
IyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwog
IyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMzQsNyArMzUsNiBAQCBmcm9tIHdlYmtp
dHB5LmNvbW1vbi5zeXN0ZW0uc3lzdGVtaG9zdF9tCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0
IGZhY3RvcnkKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZ3RrCiBmcm9tIHdlYmtpdHB5LnBv
cnQgaW1wb3J0IG1hYwotZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBxdAogZnJvbSB3ZWJraXRw
eS5wb3J0IGltcG9ydCB0ZXN0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHdpbgogCkBAIC02
OCw5ICs2OCw2IEBAIGNsYXNzIEZhY3RvcnlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBk
ZWYgdGVzdF9ndGsoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0X3BvcnQocG9ydF9uYW1lPSdn
dGsnLCBjbHM9Z3RrLkd0a1BvcnQpCiAKLSAgICBkZWYgdGVzdF9xdChzZWxmKToKLSAgICAgICAg
c2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J3F0JywgY2xzPXF0LlF0UG9ydCkKLQogICAgIGRl
ZiB0ZXN0X3Vua25vd25fc3BlY2lmaWVkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNl
cyhOb3RJbXBsZW1lbnRlZEVycm9yLCBmYWN0b3J5LlBvcnRGYWN0b3J5KE1vY2tTeXN0ZW1Ib3N0
KCkpLmdldCwgcG9ydF9uYW1lPSd1bmtub3duJykKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3F0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9xdC5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L3F0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDIwOSArMCwwIEBACi0jIENvcHlyaWdodCAoQykg
MjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIwotIyBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSMg
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zIGFyZQotIyBtZXQ6Ci0jCi0jICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAgICog
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQot
IyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJpYnV0aW9uLgotIyAgICAgKiBOZWl0aGVy
IHRoZSBHb29nbGUgbmFtZSBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQotIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBB
TkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0KLSIiIlF0
V2ViS2l0IGltcGxlbWVudGF0aW9uIG9mIHRoZSBQb3J0IGludGVyZmFjZS4iIiIKLQotaW1wb3J0
IGdsb2IKLWltcG9ydCBsb2dnaW5nCi1pbXBvcnQgcmUKLWltcG9ydCBzeXMKLWltcG9ydCBvcwot
aW1wb3J0IHBsYXRmb3JtCi0KLWZyb20gd2Via2l0cHkuY29tbW9uLm1lbW9pemVkIGltcG9ydCBt
ZW1vaXplZAotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfY29uZmlndXJh
dGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KLWZyb20gd2Via2l0cHkucG9ydC5iYXNlIGlt
cG9ydCBQb3J0Ci1mcm9tIHdlYmtpdHB5LnBvcnQueHZmYmRyaXZlciBpbXBvcnQgWHZmYkRyaXZl
cgotZnJvbSB3ZWJraXRweS5wb3J0LmxpbnV4X2dldF9jcmFzaF9sb2cgaW1wb3J0IEdEQkNyYXNo
TG9nR2VuZXJhdG9yCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKLQotCi1j
bGFzcyBRdFBvcnQoUG9ydCk6Ci0gICAgQUxMX1ZFUlNJT05TID0gWydsaW51eCcsICd3aW4nLCAn
bWFjJ10KLSAgICBwb3J0X25hbWUgPSAicXQiCi0KLSAgICBkZWYgX3drMl9wb3J0X25hbWUoc2Vs
Zik6Ci0gICAgICAgIHJldHVybiAicXQtd2syIgotCi0gICAgZGVmIF9wb3J0X2ZsYWdfZm9yX3Nj
cmlwdHMoc2VsZik6Ci0gICAgICAgIHJldHVybiAiLS1xdCIKLQotICAgIEBjbGFzc21ldGhvZAot
ICAgIGRlZiBkZXRlcm1pbmVfZnVsbF9wb3J0X25hbWUoY2xzLCBob3N0LCBvcHRpb25zLCBwb3J0
X25hbWUpOgotICAgICAgICBpZiBwb3J0X25hbWUgYW5kIHBvcnRfbmFtZSAhPSBjbHMucG9ydF9u
YW1lOgotICAgICAgICAgICAgcmV0dXJuIHBvcnRfbmFtZQotICAgICAgICByZXR1cm4gcG9ydF9u
YW1lICsgJy0nICsgaG9zdC5wbGF0Zm9ybS5vc19uYW1lCi0KLSAgICAjIHN5c19wbGF0Zm9ybSBl
eGlzdHMgb25seSBmb3IgdW5pdCB0ZXN0aW5nLgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0
LCBwb3J0X25hbWUsICoqa3dhcmdzKToKLSAgICAgICAgc3VwZXIoUXRQb3J0LCBzZWxmKS5fX2lu
aXRfXyhob3N0LCBwb3J0X25hbWUsICoqa3dhcmdzKQotCi0gICAgICAgIHNlbGYuX29wZXJhdGlu
Z19zeXN0ZW0gPSBwb3J0X25hbWUucmVwbGFjZSgncXQtJywgJycpCi0KLSAgICAgICAgIyBGSVhN
RTogV2h5IGlzIHRoaXMgYmVpbmcgc2V0IGF0IGFsbD8KLSAgICAgICAgc2VsZi5fdmVyc2lvbiA9
IHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpCi0KLSAgICBkZWYgX2dlbmVyYXRlX2FsbF90ZXN0X2Nv
bmZpZ3VyYXRpb25zKHNlbGYpOgotICAgICAgICBjb25maWd1cmF0aW9ucyA9IFtdCi0gICAgICAg
IGZvciB2ZXJzaW9uIGluIHNlbGYuQUxMX1ZFUlNJT05TOgotICAgICAgICAgICAgZm9yIGJ1aWxk
X3R5cGUgaW4gc2VsZi5BTExfQlVJTERfVFlQRVM6Ci0gICAgICAgICAgICAgICAgY29uZmlndXJh
dGlvbnMuYXBwZW5kKFRlc3RDb25maWd1cmF0aW9uKHZlcnNpb249dmVyc2lvbiwgYXJjaGl0ZWN0
dXJlPSd4ODYnLCBidWlsZF90eXBlPWJ1aWxkX3R5cGUpKQotICAgICAgICByZXR1cm4gY29uZmln
dXJhdGlvbnMKLQotICAgIGRlZiBfYnVpbGRfZHJpdmVyKHNlbGYpOgotICAgICAgICAjIFRoZSBR
dCBwb3J0IGJ1aWxkcyBEUlQgYXMgcGFydCBvZiB0aGUgbWFpbiBidWlsZCBzdGVwCi0gICAgICAg
IHJldHVybiBUcnVlCi0KLSAgICBkZWYgc3VwcG9ydHNfcGVyX3Rlc3RfdGltZW91dChzZWxmKToK
LSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiBfcGF0aF90b19kcml2ZXIoc2VsZik6Ci0g
ICAgICAgIHJldHVybiBzZWxmLl9idWlsZF9wYXRoKCdiaW4vJXMnICUgc2VsZi5kcml2ZXJfbmFt
ZSgpKQotCi0gICAgZGVmIF9wYXRoX3RvX2ltYWdlX2RpZmYoc2VsZik6Ci0gICAgICAgIHJldHVy
biBzZWxmLl9idWlsZF9wYXRoKCdiaW4vSW1hZ2VEaWZmJykKLQotICAgIGRlZiBfcGF0aF90b193
ZWJjb3JlX2xpYnJhcnkoc2VsZik6Ci0gICAgICAgIGlmIHNlbGYub3BlcmF0aW5nX3N5c3RlbSgp
ID09ICdtYWMnOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2xpYi9RdFdl
YktpdFdpZGdldHMuZnJhbWV3b3JrL1F0V2ViS2l0V2lkZ2V0cycpCi0gICAgICAgIGVsc2U6Ci0g
ICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnbGliL2xpYlF0NVdlYktpdFdpZGdl
dHMuc28nKQotCi0gICAgZGVmIF9tb2R1bGVzX3RvX3NlYXJjaF9mb3Jfc3ltYm9scyhzZWxmKToK
LSAgICAgICAgIyBXZSBzZWFyY2ggaW4gZXZlcnkgbGlicmFyeSB0byBiZSByZWxpYWJsZSBpbiB0
aGUgY2FzZSBvZiBidWlsZGluZyB3aXRoIENPTkZJRys9Zm9yY2Vfc3RhdGljX2xpYnNfYXNfc2hh
cmVkLgotICAgICAgICBpZiBzZWxmLm9wZXJhdGluZ19zeXN0ZW0oKSA9PSAnbWFjJzoKLSAgICAg
ICAgICAgIGZyYW1ld29ya3MgPSBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNlbGYuX2J1aWxkX3Bh
dGgoJ2xpYicpLCAnKi5mcmFtZXdvcmsnKSkKLSAgICAgICAgICAgIHJldHVybiBbb3MucGF0aC5q
b2luKGZyYW1ld29yaywgb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKGZyYW1ld29y
aykpWzBdKSBmb3IgZnJhbWV3b3JrIGluIGZyYW1ld29ya3NdCi0gICAgICAgIGVsc2U6Ci0gICAg
ICAgICAgICBzdWZmaXggPSAnZGxsJyBpZiBzZWxmLm9wZXJhdGluZ19zeXN0ZW0oKSA9PSAnd2lu
JyBlbHNlICdzbycKLSAgICAgICAgICAgIHJldHVybiBnbG9iLmdsb2Iob3MucGF0aC5qb2luKHNl
bGYuX2J1aWxkX3BhdGgoJ2xpYicpLCAnbGliKi4nICsgc3VmZml4KSkKLQotICAgIEBtZW1vaXpl
ZAotICAgIGRlZiBxdF92ZXJzaW9uKHNlbGYpOgotICAgICAgICB2ZXJzaW9uID0gJycKLSAgICAg
ICAgdHJ5OgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gc2VsZi5fZXhlY3V0aXZlLnJ1bl9jb21t
YW5kKFsncW1ha2UnLCAnLXYnXSkuc3BsaXQoJ1xuJyk6Ci0gICAgICAgICAgICAgICAgbWF0Y2gg
PSByZS5zZWFyY2goJ1F0XHN2ZXJzaW9uXHMoP1A8dmVyc2lvbj5cZFwuXGQpJywgbGluZSkKLSAg
ICAgICAgICAgICAgICBpZiBtYXRjaDoKLSAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IG1h
dGNoLmdyb3VwKCd2ZXJzaW9uJykKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAg
ZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICB2ZXJzaW9uID0gJzUuMCcKLSAgICAgICAgcmV0
dXJuIHZlcnNpb24KLQotICAgIGRlZiBfc2VhcmNoX3BhdGhzKHNlbGYpOgotICAgICAgICAjICAg
ICAgICAgICAgICAgICBxdC1tYWMtd2syCi0gICAgICAgICMgICAgICAgICAgICAgICAgLwotICAg
ICAgICAjICAgICAgIHF0LXdrMSAgcXQtd2syCi0gICAgICAgICMgICAgICAgICAgICAgXC8KLSAg
ICAgICAgIyAgICAgICAgICAgcXQtNS54Ci0gICAgICAgICMgICAgICAgICAgICAgICBcCi0gICAg
ICAgICMgICAgKHF0LWxpbnV4fHF0LW1hY3xxdC13aW4pCi0gICAgICAgICMgICAgICAgICAgICAg
ICAgfAotICAgICAgICAjICAgICAgICAgICAgICAgcXQKLSAgICAgICAgc2VhcmNoX3BhdGhzID0g
W10KLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKLSAg
ICAgICAgICAgIGlmIHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpID09ICdtYWMnOgotICAgICAgICAg
ICAgICAgIHNlYXJjaF9wYXRocy5hcHBlbmQoJ3F0LW1hYy13azInKQotICAgICAgICAgICAgc2Vh
cmNoX3BhdGhzLmFwcGVuZCgncXQtd2syJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNl
YXJjaF9wYXRocy5hcHBlbmQoJ3F0LXdrMScpCi0KLSAgICAgICAgc2VhcmNoX3BhdGhzLmFwcGVu
ZCgncXQtJyArIHNlbGYucXRfdmVyc2lvbigpKQotCi0gICAgICAgIHNlYXJjaF9wYXRocy5hcHBl
bmQoc2VsZi5wb3J0X25hbWUgKyAnLScgKyBzZWxmLm9wZXJhdGluZ19zeXN0ZW0oKSkKLSAgICAg
ICAgc2VhcmNoX3BhdGhzLmFwcGVuZChzZWxmLnBvcnRfbmFtZSkKLSAgICAgICAgcmV0dXJuIHNl
YXJjaF9wYXRocwotCi0gICAgZGVmIGRlZmF1bHRfYmFzZWxpbmVfc2VhcmNoX3BhdGgoc2VsZik6
Ci0gICAgICAgIHJldHVybiBtYXAoc2VsZi5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlbGYuX3Nl
YXJjaF9wYXRocygpKQotCi0gICAgZGVmIF9wb3J0X3NwZWNpZmljX2V4cGVjdGF0aW9uc19maWxl
cyhzZWxmKToKLSAgICAgICAgcGF0aHMgPSBzZWxmLl9zZWFyY2hfcGF0aHMoKQotICAgICAgICBp
ZiBzZWxmLmdldF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAgICAgICAgICAgcGF0
aHMuYXBwZW5kKCd3azInKQotCi0gICAgICAgICMgZXhwZWN0YXRpb25zX2ZpbGVzKCkgdXNlcyB0
aGUgZGlyZWN0b3JpZXMgbGlzdGVkIGluIF9zZWFyY2hfcGF0aHMgcmV2ZXJzZWQuCi0gICAgICAg
ICMgZS5nLiBxdCAtPiBxdC1saW51eCAtPiBxdC01LnggLT4gcXQtd2sxCi0gICAgICAgIHJldHVy
biBsaXN0KHJldmVyc2VkKFtzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fd2Via2l0X2Jhc2Vs
aW5lX3BhdGgocCksICdUZXN0RXhwZWN0YXRpb25zJykgZm9yIHAgaW4gcGF0aHNdKSkKLQotICAg
IGRlZiBzZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZiwgc2VydmVyX25hbWU9Tm9uZSk6Ci0g
ICAgICAgIGNsZWFuX2VudiA9IHN1cGVyKFF0UG9ydCwgc2VsZikuc2V0dXBfZW52aXJvbl9mb3Jf
c2VydmVyKHNlcnZlcl9uYW1lKQotICAgICAgICBjbGVhbl9lbnZbJ1FUV0VCS0lUX1BMVUdJTl9Q
QVRIJ10gPSBzZWxmLl9idWlsZF9wYXRoKCdsaWIvcGx1Z2lucycpCi0gICAgICAgIHNlbGYuX2Nv
cHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lmX3NldChjbGVhbl9lbnYsICdRVF9EUlRfV0VCVklFV19N
T0RFJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNsZWFu
X2VudiwgJ0RZTERfSU1BR0VfU1VGRklYJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9t
X2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ1FUX1dFQktJVF9MT0cnKQotICAgICAgICBzZWxm
Ll9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoY2xlYW5fZW52LCAnRElTQUJMRV9OSV9X
QVJOSU5HJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNs
ZWFuX2VudiwgJ1FUX1dFQktJVF9QQVVTRV9VSV9QUk9DRVNTJykKLSAgICAgICAgc2VsZi5fY29w
eV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ1FUX1FQQV9QTEFURk9STV9Q
TFVHSU5fUEFUSCcpCi0gICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZpcm9uX2lmX3Nl
dChjbGVhbl9lbnYsICdRVF9XRUJLSVRfRElTQUJMRV9VSVBST0NFU1NfRFVNUFBJWEVMUycpCi0g
ICAgICAgIHJldHVybiBjbGVhbl9lbnYKLQotICAgICMgRklYTUU6IFdlIHNob3VsZCBmaW5kIGEg
d2F5IHRvIHNoYXJlIHRoaXMgaW1wbG1lbnRhdGlvbiB3aXRoIEd0aywKLSAgICAjIG9yIHRlYWNo
IHJ1bi1sYXVuY2hlciBob3cgdG8gY2FsbCBydW4tc2FmYXJpIGFuZCBtb3ZlIHRoaXMgZG93biB0
byBQb3J0LgotICAgIGRlZiBzaG93X3Jlc3VsdHNfaHRtbF9maWxlKHNlbGYsIHJlc3VsdHNfZmls
ZW5hbWUpOgotICAgICAgICBydW5fbGF1bmNoZXJfYXJncyA9IFtdCi0gICAgICAgIGlmIHNlbGYu
Z2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICBydW5fbGF1bmNo
ZXJfYXJncy5hcHBlbmQoJy0yJykKLSAgICAgICAgcnVuX2xhdW5jaGVyX2FyZ3MuYXBwZW5kKCJm
aWxlOi8vJXMiICUgcmVzdWx0c19maWxlbmFtZSkKLSAgICAgICAgc2VsZi5fcnVuX3NjcmlwdCgi
cnVuLWxhdW5jaGVyIiwgcnVuX2xhdW5jaGVyX2FyZ3MpCi0KLSAgICBkZWYgb3BlcmF0aW5nX3N5
c3RlbShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX29wZXJhdGluZ19zeXN0ZW0KLQotICAg
IGRlZiBjaGVja19zeXNfZGVwcyhzZWxmLCBuZWVkc19odHRwKToKLSAgICAgICAgcmVzdWx0ID0g
c3VwZXIoUXRQb3J0LCBzZWxmKS5jaGVja19zeXNfZGVwcyhuZWVkc19odHRwKQotICAgICAgICBp
ZiBub3QgJ1dFQktJVF9URVNURk9OVFMnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICBfbG9n
LmVycm9yKCdcblRoZSBXRUJLSVRfVEVTVEZPTlRTIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5v
dCBkZWZpbmVkIG9yIG5vdCBzZXQgcHJvcGVybHkuJykKLSAgICAgICAgICAgIF9sb2cuZXJyb3Io
J1lvdSBtdXN0IHNldCBpdCBiZWZvcmUgcnVubmluZyB0aGUgdGVzdHMuJykKLSAgICAgICAgICAg
IF9sb2cuZXJyb3IoJ1VzZSBnaXQgdG8gZ3JhYiB0aGUgYWN0dWFsIGZvbnRzIGZyb20gaHR0cDov
L2dpdG9yaW91cy5vcmcvcXR3ZWJraXQvdGVzdGZvbnRzJykKLSAgICAgICAgICAgIHJldHVybiBG
YWxzZQotICAgICAgICByZXR1cm4gcmVzdWx0Ci0KLSAgICAjIFF0IHBvcnQgaXMgbm90IHJlYWR5
IGZvciBwYXJhbGxlbCB0ZXN0aW5nLCBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc3NzMwIGZvciBkZXRhaWxzLgotICAgIGRlZiBkZWZhdWx0X2NoaWxkX3Byb2Nl
c3NlcyhzZWxmKToKLSAgICAgICAgcmV0dXJuIDEKLQotICAgIGRlZiBidWlsZF93ZWJraXRfY29t
bWFuZChzZWxmLCBidWlsZF9zdHlsZT1Ob25lKToKLSAgICAgICAgY29tbWFuZCA9IHN1cGVyKFF0
UG9ydCwgc2VsZikuYnVpbGRfd2Via2l0X2NvbW1hbmQoYnVpbGRfc3R5bGUpCi0gICAgICAgIGNv
bW1hbmQuYXBwZW5kKCItLXF0IikKLSAgICAgICAgaWYgbm90IHNlbGYuZ2V0X29wdGlvbignd2Vi
a2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICBjb21tYW5kLmFwcGVuZCgiLS1uby13ZWJr
aXQyIikKLSAgICAgICAgY29tbWFuZC5hcHBlbmQoc3VwZXIoUXRQb3J0LCBzZWxmKS5tYWtlX2Fy
Z3MoKSkKLSAgICAgICAgcmV0dXJuIGNvbW1hbmQKLQotICAgIGRlZiBydW5fd2Via2l0X3Rlc3Rz
X2NvbW1hbmQoc2VsZik6Ci0gICAgICAgIGNvbW1hbmQgPSBzdXBlcihRdFBvcnQsIHNlbGYpLnJ1
bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpCi0gICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLXF0IikK
LSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKLSAgICAg
ICAgICAgIGNvbW1hbmQuYXBwZW5kKCItMiIpCi0gICAgICAgIHJldHVybiBjb21tYW5kCi0KLSAg
ICBkZWYgX2dldF9jcmFzaF9sb2coc2VsZiwgbmFtZSwgcGlkLCBzdGRvdXQsIHN0ZGVyciwgbmV3
ZXJfdGhhbik6Ci0gICAgICAgIHJldHVybiBHREJDcmFzaExvZ0dlbmVyYXRvcihuYW1lLCBwaWQs
IG5ld2VyX3RoYW4sIHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuX3BhdGhfdG9fZHJpdmVyKS5nZW5l
cmF0ZV9jcmFzaF9sb2coc3Rkb3V0LCBzdGRlcnIpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvcXRfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wb3J0L3F0X3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsMTU4
ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoKLSMKLSMgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotIyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0jICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQotIyBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCi0jIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKLSMgZGlzdHJp
YnV0aW9uLgotIyAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBu
YW1lcyBvZiBpdHMKLSMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNp
ZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotIyAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAotIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IKLSMgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSMgT1dORVIgT1IgQ09OVFJJQlVUT1JT
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCi0jIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QKLSMgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsCi0jIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQotIyBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0jIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0Yg
VEhFIFVTRQotIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotCi1pbXBvcnQgdW5pdHRlc3QyIGFzIHVuaXR0ZXN0Ci1p
bXBvcnQgb3MKLWZyb20gY29weSBpbXBvcnQgZGVlcGNvcHkKLQotZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlLCBNb2NrRXhlY3V0
aXZlMgotZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLm91dHB1dGNhcHR1cmUgaW1wb3J0IE91
dHB1dENhcHR1cmUKLWZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0ZW1ob3N0X21vY2sg
aW1wb3J0IE1vY2tTeXN0ZW1Ib3N0Ci1mcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHBvcnRfdGVz
dGNhc2UKLWZyb20gd2Via2l0cHkucG9ydC5iYXNlIGltcG9ydCBQb3J0Ci1mcm9tIHdlYmtpdHB5
LnBvcnQucXQgaW1wb3J0IFF0UG9ydAotZnJvbSB3ZWJraXRweS50b29sLm1vY2t0b29sIGltcG9y
dCBNb2NrT3B0aW9ucwotCi0KLWNsYXNzIFF0UG9ydFRlc3QocG9ydF90ZXN0Y2FzZS5Qb3J0VGVz
dENhc2UpOgotICAgIHBvcnRfbmFtZSA9ICdxdC1tYWMnCi0gICAgcG9ydF9tYWtlciA9IFF0UG9y
dAotICAgIHNlYXJjaF9wYXRoc19jYXNlcyA9IFsKLSAgICAgICAgeydzZWFyY2hfcGF0aHMnOlsn
cXQtbWFjLXdrMicsICdxdC13azInLCAncXQtNS4wJywgJ3F0LW1hYycsICdxdCddLCAnb3NfbmFt
ZSc6J21hYycsICd1c2Vfd2Via2l0Mic6VHJ1ZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwKLSAgICAg
ICAgeydzZWFyY2hfcGF0aHMnOlsncXQtd2syJywgJ3F0LTUuMCcsICdxdC13aW4nLCAncXQnXSwg
J29zX25hbWUnOid3aW4nLCAndXNlX3dlYmtpdDInOlRydWUsICdxdF92ZXJzaW9uJzonNS4wJ30s
Ci0gICAgICAgIHsnc2VhcmNoX3BhdGhzJzpbJ3F0LXdrMicsICdxdC01LjAnLCAncXQtbGludXgn
LCAncXQnXSwgJ29zX25hbWUnOidsaW51eCcsICd1c2Vfd2Via2l0Mic6VHJ1ZSwgJ3F0X3ZlcnNp
b24nOic1LjAnfSwKLQotICAgICAgICB7J3NlYXJjaF9wYXRocyc6WydxdC13azEnLCAncXQtNS4w
JywgJ3F0LW1hYycsICdxdCddLCAnb3NfbmFtZSc6J21hYycsICd1c2Vfd2Via2l0Mic6RmFsc2Us
ICdxdF92ZXJzaW9uJzonNS4wJ30sCi0gICAgICAgIHsnc2VhcmNoX3BhdGhzJzpbJ3F0LXdrMScs
ICdxdC01LjAnLCAncXQtd2luJywgJ3F0J10sICdvc19uYW1lJzond2luJywgJ3VzZV93ZWJraXQy
JzpGYWxzZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwKLSAgICAgICAgeydzZWFyY2hfcGF0aHMnOlsn
cXQtd2sxJywgJ3F0LTUuMCcsICdxdC1saW51eCcsICdxdCddLCAnb3NfbmFtZSc6J2xpbnV4Jywg
J3VzZV93ZWJraXQyJzpGYWxzZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwKLSAgICAgICAgeydzZWFy
Y2hfcGF0aHMnOlsncXQtd2sxJywgJ3F0LTUuMScsICdxdC1saW51eCcsICdxdCddLCAnb3NfbmFt
ZSc6J2xpbnV4JywgJ3VzZV93ZWJraXQyJzpGYWxzZSwgJ3F0X3ZlcnNpb24nOic1LjEnfSwKLSAg
ICBdCi0KLSAgICBkZWYgX2Fzc2VydF9zZWFyY2hfcGF0aChzZWxmLCBzZWFyY2hfcGF0aHMsIG9z
X25hbWUsIHVzZV93ZWJraXQyPUZhbHNlLCBxdF92ZXJzaW9uPSc1LjAnKToKLSAgICAgICAgIyBG
SVhNRTogUG9ydCBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCAicGFyc2UiIHRoZSBwb3J0IG5hbWUs
IGJ1dAotICAgICAgICAjIHJhdGhlciBiZSBwYXNzZWQgY29tcG9uZW50cyAoZGlyZWN0bHkgb3Ig
dmlhIHNldHRlcnMpLiAgT25jZQotICAgICAgICAjIHdlIGZpeCB0aGF0LCB0aGlzIG1ldGhvZCB3
aWxsIG5lZWQgYSByZS13cml0ZS4KLSAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1Ib3N0KG9zX25h
bWU9b3NfbmFtZSkKLSAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlMihzZWxm
Ll9xdF92ZXJzaW9uKHF0X3ZlcnNpb24pKQotICAgICAgICBwb3J0X25hbWUgPSAncXQtJyArIG9z
X25hbWUKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGhvc3Q9aG9zdCwgcXRfdmVyc2lv
bj1xdF92ZXJzaW9uLCBwb3J0X25hbWU9cG9ydF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9dXNlX3dlYmtp
dDIsIHBsYXRmb3JtPSdxdCcpKQotICAgICAgICBhYnNvbHV0ZV9zZWFyY2hfcGF0aHMgPSBtYXAo
cG9ydC5fd2Via2l0X2Jhc2VsaW5lX3BhdGgsIHNlYXJjaF9wYXRocykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbChwb3J0LmJhc2VsaW5lX3NlYXJjaF9wYXRoKCksIGFic29sdXRlX3NlYXJjaF9w
YXRocykKLQotICAgIGRlZiBfYXNzZXJ0X2V4cGVjdGF0aW9uc19maWxlcyhzZWxmLCBzZWFyY2hf
cGF0aHMsIG9zX25hbWUsIHVzZV93ZWJraXQyPUZhbHNlLCBxdF92ZXJzaW9uPSc1LjAnKToKLSAg
ICAgICAgIyBGSVhNRTogUG9ydCBjb25zdHJ1Y3RvcnMgc2hvdWxkIG5vdCAicGFyc2UiIHRoZSBw
b3J0IG5hbWUsIGJ1dAotICAgICAgICAjIHJhdGhlciBiZSBwYXNzZWQgY29tcG9uZW50cyAoZGly
ZWN0bHkgb3IgdmlhIHNldHRlcnMpLiAgT25jZQotICAgICAgICAjIHdlIGZpeCB0aGF0LCB0aGlz
IG1ldGhvZCB3aWxsIG5lZWQgYSByZS13cml0ZS4KLSAgICAgICAgaG9zdCA9IE1vY2tTeXN0ZW1I
b3N0KG9zX25hbWU9b3NfbmFtZSkKLSAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0
aXZlMihzZWxmLl9xdF92ZXJzaW9uKHF0X3ZlcnNpb24pKQotICAgICAgICBwb3J0X25hbWUgPSAn
cXQtJyArIG9zX25hbWUKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KGhvc3Q9aG9zdCwg
cXRfdmVyc2lvbj1xdF92ZXJzaW9uLCBwb3J0X25hbWU9cG9ydF9uYW1lLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9
dXNlX3dlYmtpdDIsIHBsYXRmb3JtPSdxdCcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQuZXhwZWN0YXRpb25zX2ZpbGVzKCksIHNlYXJjaF9wYXRocykKLQotICAgIGRlZiBfcXRfdmVy
c2lvbihzZWxmLCBxdF92ZXJzaW9uKToKLSAgICAgICAgaWYgcXRfdmVyc2lvbiBpbiAnNS4wJzoK
LSAgICAgICAgICAgIHJldHVybiAnUU1ha2UgdmVyc2lvbiAyLjAxYVxuVXNpbmcgUXQgdmVyc2lv
biA1LjAuMCBpbiAvdXNyL2xvY2FsL1Ryb2xsdGVjaC9RdC01LjAuMC9saWInCi0gICAgICAgIGlm
IHF0X3ZlcnNpb24gaW4gJzUuMSc6Ci0gICAgICAgICAgICByZXR1cm4gJ1FNYWtlIHZlcnNpb24g
My4wXG5Vc2luZyBRdCB2ZXJzaW9uIDUuMS4xIGluIC91c3IvbG9jYWwvUXQtNS4xL2xpYicKLQot
ICAgIGRlZiB0ZXN0X2Jhc2VsaW5lX3NlYXJjaF9wYXRoKHNlbGYpOgotICAgICAgICBmb3IgY2Fz
ZSBpbiBzZWxmLnNlYXJjaF9wYXRoc19jYXNlczoKLSAgICAgICAgICAgIHNlbGYuX2Fzc2VydF9z
ZWFyY2hfcGF0aCgqKmNhc2UpCi0KLSAgICBkZWYgdGVzdF9leHBlY3RhdGlvbnNfZmlsZXMoc2Vs
Zik6Ci0gICAgICAgIGZvciBjYXNlIGluIHNlbGYuc2VhcmNoX3BhdGhzX2Nhc2VzOgotICAgICAg
ICAgICAgZXhwZWN0YXRpb25zX2Nhc2UgPSBkZWVwY29weShjYXNlKQotICAgICAgICAgICAgaWYg
ZXhwZWN0YXRpb25zX2Nhc2VbJ3VzZV93ZWJraXQyJ106Ci0gICAgICAgICAgICAgICAgZXhwZWN0
YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddLmFwcGVuZCgid2syIikKLSAgICAgICAgICAgIGV4
cGVjdGF0aW9uc19jYXNlWydzZWFyY2hfcGF0aHMnXS5hcHBlbmQoJycpCi0gICAgICAgICAgICBl
eHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10ucmV2ZXJzZSgpCi0gICAgICAgICAgICBl
eHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10gPSBtYXAobGFtYmRhIHBhdGg6ICcvbW9j
ay1jaGVja291dC9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zJyBpZiBub3QgcGF0aCBlbHNl
ICcvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS8lcy9UZXN0RXhwZWN0YXRpb25z
JyAlIChwYXRoKSwgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJjaF9wYXRocyddKQotICAgICAgICAg
ICAgc2VsZi5fYXNzZXJ0X2V4cGVjdGF0aW9uc19maWxlcygqKmV4cGVjdGF0aW9uc19jYXNlKQot
Ci0gICAgZGVmIHRlc3Rfc2hvd19yZXN1bHRzX2h0bWxfZmlsZShzZWxmKToKLSAgICAgICAgcG9y
dCA9IHNlbGYubWFrZV9wb3J0KCkKLSAgICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1
dGl2ZShzaG91bGRfbG9nPVRydWUpCi0gICAgICAgIGV4cGVjdGVkX2xvZ3MgPSAiTU9DSyBydW5f
Y29tbWFuZDogWydUb29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcicsICctLXJlbGVhc2UnLCAnLS1x
dCcsICdmaWxlOi8vdGVzdC5odG1sJ10sIGN3ZD0vbW9jay1jaGVja291dFxuIgotICAgICAgICBP
dXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgcG9ydC5zaG93X3Jlc3VsdHNfaHRt
bF9maWxlLCBbInRlc3QuaHRtbCJdLCBleHBlY3RlZF9sb2dzPWV4cGVjdGVkX2xvZ3MpCi0KLSAg
ICBkZWYgdGVzdF9zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VsZik6Ci0gICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydCgpCi0gICAgICAgIGVudiA9IHBvcnQuc2V0dXBfZW52aXJvbl9mb3Jf
c2VydmVyKHBvcnQuZHJpdmVyX25hbWUoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnZb
J1FUV0VCS0lUX1BMVUdJTl9QQVRIJ10sICcvbW9jay1idWlsZC9saWIvcGx1Z2lucycpCi0KLSAg
ICBkZWYgdGVzdF9vcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKCdsaW51eCcsIHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0ncXQtbGludXgnLCBvc19uYW1l
PSdsaW51eCcpLm9wZXJhdGluZ19zeXN0ZW0oKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgn
bWFjJywgc2VsZi5tYWtlX3BvcnQob3NfbmFtZT0nbWFjJykub3BlcmF0aW5nX3N5c3RlbSgpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd3aW4nLCBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9
J3F0LXdpbicsIG9zX25hbWU9J3dpbicpLm9wZXJhdGluZ19zeXN0ZW0oKSkKLQotICAgIGRlZiB0
ZXN0X2NoZWNrX3N5c19kZXBzKHNlbGYpOgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQo
KQotCi0gICAgICAgICMgU3VjY2VzcwotICAgICAgICBvcy5lbnZpcm9uWydXRUJLSVRfVEVTVEZP
TlRTJ10gPSAnL3RtcC9mb28nCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRp
dmUyKGV4aXRfY29kZT0wKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9ydC5jaGVja19zeXNf
ZGVwcyhuZWVkc19odHRwPUZhbHNlKSkKLQotICAgICAgICAjIEZhaWx1cmUKLSAgICAgICAgZGVs
IG9zLmVudmlyb25bJ1dFQktJVF9URVNURk9OVFMnXQotICAgICAgICBwb3J0Ll9leGVjdXRpdmUg
PSBNb2NrRXhlY3V0aXZlMihleGl0X2NvZGU9MSwKLSAgICAgICAgICAgIG91dHB1dD0ndGVzdGlu
ZyBvdXRwdXQgZmFpbHVyZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocG9ydC5jaGVja19z
eXNfZGVwcyhuZWVkc19odHRwPUZhbHNlKSkKLQotICAgIGRlZiB0ZXN0X2NvbW1hbmRzKHNlbGYp
OgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSJxdCIpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWwocG9ydC50b29saW5nX2ZsYWcoKSwgIi0tcG9ydD1xdCIpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC51cGRhdGVfd2Via2l0X2NvbW1hbmQoKSwgUG9ydC5z
Y3JpcHRfc2hlbGxfY29tbWFuZCgidXBkYXRlLXdlYmtpdCIpKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFsKHBvcnQuY2hlY2tfd2Via2l0X3N0eWxlX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hl
bGxfY29tbWFuZCgiY2hlY2std2Via2l0LXN0eWxlIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5wcmVwYXJlX2NoYW5nZWxvZ19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2Nv
bW1hbmQoInByZXBhcmUtQ2hhbmdlTG9nIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9y
dC5idWlsZF93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJidWls
ZC13ZWJraXQiKSArIFsiLS1xdCIsICItLW5vLXdlYmtpdDIiLCBwb3J0Lm1ha2VfYXJncygpXSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9qYXZhc2NyaXB0Y29yZV90ZXN0c19j
b21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1qYXZhc2NyaXB0Y29yZS10
ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dlYmtpdF91bml0X3Rl
c3RzX2NvbW1hbmQoKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl93
ZWJraXRfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4td2Vi
a2l0LXRlc3RzIikgKyBbIi0tcXQiXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1
bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgi
dGVzdC13ZWJraXRweSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3Blcmxf
dW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJr
aXRwZXJsIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fYmluZGluZ3NfdGVz
dHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJydW4tYmluZGluZ3MtdGVz
dHMiKSkKLQotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQocG9ydF9uYW1lPSJxdCIsIG9w
dGlvbnM9TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPVRydWUpKQotICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHBvcnQudG9vbGluZ19mbGFnKCksICItLXBvcnQ9cXQtd2syIikKLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNj
cmlwdF9zaGVsbF9jb21tYW5kKCJ1cGRhdGUtd2Via2l0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWwocG9ydC5jaGVja193ZWJraXRfc3R5bGVfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVs
bF9jb21tYW5kKCJjaGVjay13ZWJraXQtc3R5bGUiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bChwb3J0LnByZXBhcmVfY2hhbmdlbG9nX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29t
bWFuZCgicHJlcGFyZS1DaGFuZ2VMb2ciKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
LmJ1aWxkX3dlYmtpdF9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1aWxk
LXdlYmtpdCIpICsgWyItLXF0IiwgcG9ydC5tYWtlX2FyZ3MoKV0pCi0gICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwocG9ydC5ydW5famF2YXNjcmlwdGNvcmVfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNj
cmlwdF9zaGVsbF9jb21tYW5kKCJydW4tamF2YXNjcmlwdGNvcmUtdGVzdHMiKSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl93ZWJraXRfdW5pdF90ZXN0c19jb21tYW5kKCksIE5v
bmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0X3Rlc3RzX2NvbW1h
bmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLXdlYmtpdC10ZXN0cyIpICsgWyIt
LXF0IiwgIi0yIl0pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fcHl0aG9uX3Vu
aXR0ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0
cHkiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9wZXJsX3VuaXR0ZXN0c19j
b21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInRlc3Qtd2Via2l0cGVybCIpKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX2JpbmRpbmdzX3Rlc3RzX2NvbW1hbmQo
KSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicnVuLWJpbmRpbmdzLXRlc3RzIikpCi0KLSAg
ICBkZWYgdGVzdF9nZXRfY3Jhc2hfbG9nKHNlbGYpOgotICAgICAgICAjIFRoaXMgZnVuY3Rpb24g
dGVzdGVkIGluIGxpbnV4X2dldF9jcmFzaF9sb2dfdW5pdHRlc3QucHkKLSAgICAgICAgcGFzcwpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlci5weQkocmV2aXNpb24gMTU2
ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVr
IChjaHJpcy5qZXJkb25la0BnbWFpbC5jb20pCiAjIENvcHlyaWdodCAoQykgMjAxMCBQcm9GVVNJ
T04gZW1iZWRkZWQgc3lzdGVtcworIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMTM0
LDM3ICsxMzUsMTMgQEAgX1BBVEhfUlVMRVNfU1BFQ0lGSUVSID0gWwogICAgICAgIyBUaGUgQVBJ
IHRlc3QgaGFybmVzc2VzIGhhdmUgbm8gY29uZmlnLmggYW5kIHVzZSBmdW5ueSBtYWNyb3MgbGlr
ZQogICAgICAgIyBURVNUX0NMQVNTX05BTUUuCiAgICAgICAiVG9vbHMvV2ViS2l0QVBJVGVzdC8i
LAotICAgICAgIlRvb2xzL1Rlc3RXZWJLaXRBUEkvIiwKLSAgICAgICJTb3VyY2UvV2ViS2l0L3F0
L3Rlc3RzL3FkZWNsYXJhdGl2ZXdlYnZpZXciXSwKKyAgICAgICJUb29scy9UZXN0V2ViS2l0QVBJ
LyJdLAogICAgICBbIi1idWlsZC9pbmNsdWRlIiwKICAgICAgICItcmVhZGFiaWxpdHkvbmFtaW5n
Il0pLAogICAgIChbIyBUaGVyZSBpcyBubyBjbGVhbiB3YXkgdG8gYXZvaWQgInl5XyoiIG5hbWVz
IHVzZWQgYnkgZmxleC4KLSAgICAgICJTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCIs
Ci0gICAgICAjIFF0IGNvZGUgdXNlcyAnXycgaW4gc29tZSBwbGFjZXMgKHN1Y2ggYXMgcHJpdmF0
ZSBzbG90cwotICAgICAgIyBhbmQgb24gdGVzdCB4eHhfZGF0YSBtZXRob3Mgb24gdGVzdHMpCi0g
ICAgICAiU291cmNlL0phdmFTY3JpcHRDb3JlL3F0LyIsCi0gICAgICAiU291cmNlL1dlYktpdC9x
dC90ZXN0cy8iLAotICAgICAgIlNvdXJjZS9XZWJLaXQvcXQvZGVjbGFyYXRpdmUvIiwKLSAgICAg
ICJTb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzLyJdLAorICAgICAgIlNvdXJjZS9XZWJDb3JlL2Nz
cy9DU1NQYXJzZXIuY3BwIl0sCiAgICAgIFsiLXJlYWRhYmlsaXR5L25hbWluZyJdKSwKIAotICAg
IChbIyBUaGUgUXQgQVBJcyB1c2UgUXQgZGVjbGFyYXRpb24gc3R5bGUsIGl0IHB1dHMgdGhlICog
dG8KLSAgICAgICMgdGhlIHZhcmlhYmxlIG5hbWUsIG5vdCB0byB0aGUgY2xhc3MuCi0gICAgICAi
U291cmNlL1dlYktpdC9xdC9BcGkvIiwKLSAgICAgICJTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFw
aS8iXSwKLSAgICAgWyItcmVhZGFiaWxpdHkvbmFtaW5nIiwKLSAgICAgICItd2hpdGVzcGFjZS9k
ZWNsYXJhdGlvbiJdKSwKLQotICAgICAoWyMgUXQncyBNaW5pQnJvd3NlciBoYXMgbm8gY29uZmln
LmgKLSAgICAgICAiVG9vbHMvTWluaUJyb3dzZXIvcXQiLAotICAgICAgICJUb29scy9NaW5pQnJv
d3Nlci9xdC9yYXciXSwKLSAgICAgIFsiLWJ1aWxkL2luY2x1ZGUiXSksCi0KLSAgICAoWyMgVGhl
IFF0IEFQSXMgdXNlIFF0L1FNTCBuYW1pbmcgc3R5bGUsIHdoaWNoIGluY2x1ZGVzCi0gICAgICAj
IG5hbWluZyBwYXJhbWV0ZXJzIGluIGggZmlsZXMuCi0gICAgICAiU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdCJdLAotICAgICBbIi1yZWFkYWJpbGl0eS9wYXJhbWV0ZXJfbmFtZSJdKSwK
LQogICAgIChbIyBUaGUgR1RLKyBwb3J0IHVzZXMgdGhlIGF1dG90b29sc2NvbmZpZy5oIGhlYWRl
ciBpbiBzb21lIEMgc291cmNlcwogICAgICAgIyB0byBzZXJ2ZSB0aGUgc2FtZSBwdXJwb3NlIG9m
IGNvbmZpZy5oLgogICAgICAgIlRvb2xzL0d0a0xhdW5jaGVyL21haW4uYyJdLApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcl91bml0dGVzdC5weQkocmV2
aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2VyX3Vu
aXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogIwogIyBDb3B5cmlnaHQg
KEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChD
KSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJk
b25layAoY2hyaXMuamVyZG9uZWtAZ21haWwuY29tKQogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTIyNSwz
MCArMjI1LDYgQEAgY2xhc3MgR2xvYmFsVmFyaWFibGVzVGVzdCh1bml0dGVzdC5UZXN0QwogICAg
ICAgICBhc3NlcnROb0NoZWNrKCJTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCIsCiAg
ICAgICAgICAgICAgICAgICAgICAgInJlYWRhYmlsaXR5L25hbWluZyIpCiAKLSAgICAgICAgIyBU
ZXN0IGlmIFF0IGV4Y2VwdGlvbnMgYXJlIGluZGVlZCB3b3JraW5nCi0gICAgICAgIGFzc2VydENo
ZWNrKCJTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAiLAotICAgICAgICAg
ICAgICAgICAgICAicmVhZGFiaWxpdHkvYnJhY2VzIikKLSAgICAgICAgYXNzZXJ0Q2hlY2soIlNv
dXJjZS9XZWJLaXQvcXQvdGVzdHMvcXdlYmVsZW1lbnQvdHN0X3F3ZWJlbGVtZW50LmNwcCIsCi0g
ICAgICAgICAgICAgICAgICAgICJyZWFkYWJpbGl0eS9icmFjZXMiKQotICAgICAgICBhc3NlcnRD
aGVjaygiU291cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVn
aW4uY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgInJlYWRhYmlsaXR5L2JyYWNlcyIpCi0gICAg
ICAgIGFzc2VydENoZWNrKCJTb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL3BsYXRmb3JtcGx1Z2lu
L1dlYlBsdWdpbi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAicmVhZGFiaWxpdHkvYnJhY2Vz
IikKLSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dlYktpdC9xdC9XaWRnZXRBcGkvcXdl
YnBhZ2UuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAicmVhZGFiaWxpdHkvbmFtaW5nIikK
LSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dlYktpdC9xdC90ZXN0cy9xd2ViZWxlbWVu
dC90c3RfcXdlYmVsZW1lbnQuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgICAicmVhZGFiaWxp
dHkvbmFtaW5nIikKLSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dlYktpdC9xdC9kZWNs
YXJhdGl2ZS9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAicmVhZGFiaWxpdHkvbmFtaW5nIikKLSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNl
L1dlYktpdC9xdC9leGFtcGxlcy9wbGF0Zm9ybXBsdWdpbi9XZWJQbHVnaW4uY3BwIiwKLSAgICAg
ICAgICAgICAgICAgICAgICAicmVhZGFiaWxpdHkvbmFtaW5nIikKLQotICAgICAgICBhc3NlcnRO
b0NoZWNrKCJUb29scy9NaW5pQnJvd3Nlci9xdC9VcmxMb2FkZXIuY3BwIiwKLSAgICAgICAgICAg
ICAgICAgICAgImJ1aWxkL2luY2x1ZGUiKQotCi0gICAgICAgIGFzc2VydE5vQ2hlY2soIlNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQiLAotICAgICAgICAgICAgICAgICAgICAicmVhZGFi
aWxpdHkvcGFyYW1ldGVyX25hbWUiKQotCiAgICAgICAgIGFzc2VydE5vQ2hlY2soIlNvdXJjZS9X
ZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2RlYnVnZ2VyL0RlYnVnZ2VyLmgiLAogICAgICAgICAg
ICAgICAgICAgICAgICJidWlsZC9oZWFkZXJfZ3VhcmQiKQogCkluZGV4OiBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHkJKHJldmlzaW9uIDE1Njg3NSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY21ha2UucHkJKHdvcmtp
bmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTY1LDcg
KzY2LDYgQEAgY2xhc3MgQ01ha2VDaGVja2VyKG9iamVjdCk6CiAgICAgICAgICNGcm9tIEZpbmRQ
a2dDb25maWcuY21ha2UKICAgICAgICAgJ3BrZ19jaGVja19tb2R1bGVzJywKICAgICAgICAgJ3By
b2plY3QnLAotICAgICAgICAncXRfd3JhcF9jcHAnLCAncXRfd3JhcF91aScsCiAgICAgICAgICdy
ZW1vdmVfZGVmaW5pdGlvbnMnLCAncmV0dXJuJywKICAgICAgICAgJ3NlcGFyYXRlX2FyZ3VtZW50
cycsICdzZXQnLCAnc2V0X2RpcmVjdG9yeV9wcm9wZXJ0aWVzJywgJ3NldF9wcm9wZXJ0eScsCiAg
ICAgICAgICdzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMnLCAnc2V0X3RhcmdldF9wcm9wZXJ0
aWVzJywKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3Bw
LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL2NwcC5weQkod29ya2luZyBjb3B5KQpAQCAtMiw3ICsyLDcgQEAKICMKICMgQ29weXJp
Z2h0IChDKSAyMDA5LCAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjIENvcHlyaWdodCAoQykgMjAwOSBUb3JjaCBNb2JpbGUgSW5jLgotIyBDb3B5cmlnaHQgKEMp
IDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIw
MDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMp
IDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNqZXJkb25la0B3ZWJraXQub3JnKQogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKQEAgLTI3MTgsMTMgKzI3MTgsNiBAQCBkZWYgX2NsYXNzaWZ5X2luY2x1ZGUoZmlsZW5hbWUs
IGluY2x1ZGUsCiAgICAgaWYgZmlsZW5hbWUuZW5kc3dpdGgoJy5oJykgYW5kIGZpbGVuYW1lICE9
IGluY2x1ZGU6CiAgICAgICAgIHJldHVybiBfT1RIRVJfSEVBREVSOwogCi0gICAgIyBRdCdzIG1v
YyBmaWxlcyBkbyBub3QgZm9sbG93IHRoZSBuYW1pbmcgYW5kIG9yZGVyaW5nIHJ1bGVzLCBzbyB0
aGV5IHNob3VsZCBiZSBza2lwcGVkCi0gICAgaWYgaW5jbHVkZS5zdGFydHN3aXRoKCdtb2NfJykg
YW5kIGluY2x1ZGUuZW5kc3dpdGgoJy5jcHAnKToKLSAgICAgICAgcmV0dXJuIF9NT0NfSEVBREVS
Ci0KLSAgICBpZiBpbmNsdWRlLmVuZHN3aXRoKCcubW9jJyk6Ci0gICAgICAgIHJldHVybiBfTU9D
X0hFQURFUgotCiAgICAgIyBJZiB0aGUgdGFyZ2V0IGZpbGUgYmFzZW5hbWUgc3RhcnRzIHdpdGgg
dGhlIGluY2x1ZGUgd2UncmUgY2hlY2tpbmcKICAgICAjIHRoZW4gd2UgY29uc2lkZXIgaXQgdGhl
IHByaW1hcnkgaGVhZGVyLgogICAgIHRhcmdldF9iYXNlID0gRmlsZUluZm8oZmlsZW5hbWUpLmJh
c2VfbmFtZSgpCkBAIC0yNzM0LDkgKzI3MjcsNiBAQCBkZWYgX2NsYXNzaWZ5X2luY2x1ZGUoZmls
ZW5hbWUsIGluY2x1ZGUsCiAgICAgaWYgbm90IGluY2x1ZGVfc3RhdGUudmlzaXRlZF9wcmltYXJ5
X3NlY3Rpb24oKToKICAgICAgICAgaWYgdGFyZ2V0X2Jhc2UuZmluZChpbmNsdWRlX2Jhc2UpICE9
IC0xOgogICAgICAgICAgICAgcmV0dXJuIF9QUklNQVJZX0hFQURFUgotICAgICAgICAjIFF0IHBy
aXZhdGUgQVBJcyB1c2UgX3AuaCBzdWZmaXguCi0gICAgICAgIGlmIGluY2x1ZGVfYmFzZS5maW5k
KHRhcmdldF9iYXNlKSAhPSAtMSBhbmQgaW5jbHVkZV9iYXNlLmVuZHN3aXRoKCdfcCcpOgotICAg
ICAgICAgICAgcmV0dXJuIF9QUklNQVJZX0hFQURFUgogCiAgICAgIyBJZiB3ZSBhbHJlYWR5IGVu
Y291bnRlcmVkIGEgcHJpbWFyeSBoZWFkZXIsIHBlcmZvcm0gYSBzdHJpY3QgY29tcGFyaXNvbi4K
ICAgICAjIEluIGNhc2UgdGhlIHR3byBmaWxlbmFtZSBiYXNlcyBhcmUgdGhlIHNhbWUgdGhlbiB0
aGUgYWJvdmUgbGVuaWVudCBjaGVjawpAQCAtMjgzNiw3ICsyODI2LDcgQEAgZGVmIGNoZWNrX2lu
Y2x1ZGVfbGluZShmaWxlbmFtZSwgZmlsZV9leAogICAgICAgICAgICAgICAgICAgJ1lvdSBzaG91
bGQgYWRkIGEgYmxhbmsgbGluZSBhZnRlciBpbXBsZW1lbnRhdGlvbiBmaWxlXCdzIG93biBoZWFk
ZXIuJykKIAogICAgICMgQ2hlY2sgdG8gbWFrZSBzdXJlIGFsbCBoZWFkZXJzIGJlc2lkZXMgY29u
ZmlnLmggYW5kIHRoZSBwcmltYXJ5IGhlYWRlciBhcmUKLSAgICAjIGFscGhhYmV0aWNhbGx5IHNv
cnRlZC4gU2tpcCBRdCdzIG1vYyBmaWxlcy4KKyAgICAjIGFscGhhYmV0aWNhbGx5IHNvcnRlZC4K
ICAgICBpZiBub3QgZXJyb3JfbWVzc2FnZSBhbmQgaGVhZGVyX3R5cGUgPT0gX09USEVSX0hFQURF
UjoKICAgICAgICAgIHByZXZpb3VzX2xpbmVfbnVtYmVyID0gbGluZV9udW1iZXIgLSAxOwogICAg
ICAgICAgcHJldmlvdXNfbGluZSA9IGNsZWFuX2xpbmVzLmxpbmVzW3ByZXZpb3VzX2xpbmVfbnVt
YmVyXQpAQCAtMzE5MSw3ICszMTgxLDYgQEAgZGVmIGNoZWNrX2lkZW50aWZpZXJfbmFtZV9pbl9k
ZWNsYXJhdGlvbgogICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5z
dGFydHN3aXRoKCdOUE5fJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50
aWZpZXIuc3RhcnRzd2l0aCgnTlBQXycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmll
ZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ05QXycpCi0gICAgICAgICAgICAgICAgYW5kIG5vdCBt
b2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ3F0XycpCiAgICAgICAgICAgICAgICAgYW5k
IG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ19xXycpCiAgICAgICAgICAgICAg
ICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ2NhaXJvXycpCiAgICAg
ICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ0Vjb3Jl
XycpCkBAIC0zMTk5LDcgKzMxODgsNiBAQCBkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2Rl
Y2xhcmF0aW9uCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0
YXJ0c3dpdGgoJ0V2YXNfJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50
aWZpZXIuc3RhcnRzd2l0aCgnRXdrXycpCiAgICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmll
ZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ2N0aV8nKQotICAgICAgICAgICAgICAgIGFuZCBub3Qg
bW9kaWZpZWRfaWRlbnRpZmllci5maW5kKCc6OnF0XycpID49IDAKICAgICAgICAgICAgICAgICBh
bmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuZmluZCgnOjpfcV8nKSA+PSAwCiAgICAgICAgICAg
ICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyID09ICJjb25zdF9pdGVyYXRvciIKICAg
ICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIgPT0gInZtX3Rocm93IgpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBfdW5pdHRlc3Qu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9j
cHBfdW5pdHRlc3QucHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yLDcg
KzIsNyBAQAogIwogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHly
aWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdo
dCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHly
aWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAoY2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dApAQCAtMjc4OSwxNCArMjc4OSw2IEBAIGNsYXNzIE9yZGVyT2ZJbmNsdWRlc1Rl
c3QoQ3BwU3R5bGVUZXN0QmEKICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNs
dWRlKCdQcmVmaXhGb29DdXN0b20uY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICdGb28uaCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwo
Y3BwX3N0eWxlLl9NT0NfSEVBREVSLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5
X2luY2x1ZGUoJ2Zvby5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgJ2Zvby5tb2MnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgRmFsc2UsIGluY2x1ZGVfc3RhdGUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNwcF9z
dHlsZS5fTU9DX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lmeV9pbmNs
dWRlKCdmb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICdtb2NfZm9vLmNwcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCiAgICAgICAgICMgPHB1YmxpYy9mb28uaD4gbXVzdCBi
ZSBjb25zaWRlcmVkIGFzIHByaW1hcnkgZXZlbiBpZiBpc19zeXN0ZW0gaXMgVHJ1ZS4KICAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5bGUuX1BSSU1BUllfSEVBREVSLAogICAgICAgICAg
ICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby9mb28uY3BwJywKQEAgLTI4MTAs
MTEgKzI4MDIsNiBAQCBjbGFzcyBPcmRlck9mSW5jbHVkZXNUZXN0KENwcFN0eWxlVGVzdEJhCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsCiAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHVibGljL2Zvb3AuaCcsCiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlLCBpbmNsdWRlX3N0
YXRlKSkKLSAgICAgICAgIyBRdCBwcml2YXRlIEFQSXMgdXNlIF9wLmggc3VmZml4LgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFsKGNwcF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsCi0gICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vX3AuaCcsCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0ZSkpCiAgICAgICAg
ICMgVHJpY2t5IGV4YW1wbGUgd2hlcmUgYm90aCBpbmNsdWRlcyBtaWdodCBiZSBjbGFzc2lmaWVk
IGFzIHByaW1hcnkuCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xhbmd1YWdlX3J1bGVzX2NoZWNrKCdT
Y3JvbGxiYXJUaGVtZVdpbmNlLmNwcCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICcjaW5jbHVkZSAiY29uZmlnLmgiXG4nCkBAIC00NzAzLDEyICs0NjkwLDYgQEAg
Y2xhc3MgV2ViS2l0U3R5bGVUZXN0KENwcFN0eWxlVGVzdEJhc2UpOgogICAgICAgICAjIFRoZXJl
IGlzIGFuIGV4Y2VwdGlvbiBmb3Igc29tZSB1bml0IHRlc3RzIHRoYXQgYmVnaW4gd2l0aCAidHN0
XyIuCiAgICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgdHN0X1FXZWJGcmFtZTo6YXJyYXlP
YmplY3RFbnVtZXJhYmxlKGludCB2YXIxLCBpbnQgdmFyMiknLCAnJykKIAotICAgICAgICAjIFRo
ZSBRdCBBUEkgdXNlcyBuYW1lcyB0aGF0IGJlZ2luIHdpdGggInF0XyIgb3IgIl9xXyIuCi0gICAg
ICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgUVRGcmFtZTo6cXRfZHJ0X2lzX2F3ZXNvbWUoaW50
IHZhcjEsIGludCB2YXIyKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIFFU
RnJhbWU6Ol9xX2RydF9pc19hd2Vzb21lKGludCB2YXIxLCBpbnQgdmFyMiknLCAnJykKLSAgICAg
ICAgc2VsZi5hc3NlcnRfbGludCgndm9pZCBxdF9kcnRfaXNfYXdlc29tZShpbnQgdmFyMSwgaW50
IHZhcjIpOycsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2b2lkIF9xX2RydF9pc19h
d2Vzb21lKGludCB2YXIxLCBpbnQgdmFyMik7JywgJycpCi0KICAgICAgICAgIyBDYWlybyBmb3J3
YXJkLWRlY2xhcmF0aW9ucyBzaG91bGQgbm90IGJlIGEgZmFpbHVyZS4KICAgICAgICAgc2VsZi5h
c3NlcnRfbGludCgndHlwZWRlZiBzdHJ1Y3QgX2NhaXJvIGNhaXJvX3Q7JywgJycpCiAgICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3R5cGVkZWYgc3RydWN0IF9jYWlyb19zdXJmYWNlIGNhaXJvX3N1
cmZhY2VfdDsnLCAnJykKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5w
eQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVj
a2Vycy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtNzks
MTAgKzc5LDYgQEAgY2xhc3MgVGVzdEV4cGVjdGF0aW9uc1Rlc3RDYXNlKHVuaXR0ZXN0LgogICAg
ICAgICBzZWxmLl9leHBlY3RfcG9ydF9mb3JfZXhwZWN0YXRpb25zX3BhdGgoJ2VmbCcsICdMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9lZmwvVGVzdEV4cGVjdGF0aW9ucycpCiAgICAgICAgIHNlbGYuX2V4
cGVjdF9wb3J0X2Zvcl9leHBlY3RhdGlvbnNfcGF0aCgnZWZsJywgJ0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC13azEvVGVzdEV4cGVjdGF0aW9ucycpCiAgICAgICAgIHNlbGYuX2V4cGVjdF9wb3J0
X2Zvcl9leHBlY3RhdGlvbnNfcGF0aCgnZWZsJywgJ0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC13
azIvVGVzdEV4cGVjdGF0aW9ucycpCi0gICAgICAgIHNlbGYuX2V4cGVjdF9wb3J0X2Zvcl9leHBl
Y3RhdGlvbnNfcGF0aCgncXQnLCAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtd2luL1Rlc3RFeHBl
Y3RhdGlvbnMnKQotICAgICAgICAjIEZJWE1FOiBjaGVjay13ZWJraXQtc3R5bGUgZG9lc24ndCBr
bm93IGhvdyB0byBjcmVhdGUgcG9ydCBvYmplY3RzIGZvciBhbGwgUXQgdmVyc2lvbiAoNC44LCA1
LjApIGFuZAotICAgICAgICAjIHdpbGwgb25seSBjaGVjayBmaWxlcyBiYXNlZCBvbiB0aGUgaW5z
dGFsbGVkIHZlcnNpb24gb2YgUXQuCi0gICAgICAgICNzZWxmLl9leHBlY3RfcG9ydF9mb3JfZXhw
ZWN0YXRpb25zX3BhdGgoJ3F0JywgJ0xheW91dFRlc3RzL3BsYXRmb3JtL3F0LTUuMC13azIvVGVz
dEV4cGVjdGF0aW9ucycpCiAKICAgICBkZWYgYXNzZXJ0X2xpbmVzX2xpbnQoc2VsZiwgbGluZXMs
IHNob3VsZF9wYXNzLCBleHBlY3RlZF9vdXRwdXQ9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2Vycm9y
X2NvbGxlY3Rvci5yZXNldF9lcnJvcnMoKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL21haW4ucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21h
aW4ucHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9t
YWluLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKGMpIDIw
MTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChjKSAyMDA5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChjKSAyMDA5LCAy
MDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucyBhcmUKQEAgLTQ5LDcgKzQ5LDcgQEAgY2xhc3MgV2ViS2l0UGF0Y2goTXVsdGlDb21t
YW5kVG9vbCwgSG9zdAogICAgICAgICBtYWtlX29wdGlvbigiLS1ib3QtaWQiLCBhY3Rpb249InN0
b3JlIiwgZGVzdD0iYm90X2lkIiwgdHlwZT0ic3RyaW5nIiwgaGVscD0iSWRlbnRpZmllciBmb3Ig
dGhpcyBib3QgKGlmIG11bHRpcGxlIGJvdHMgYXJlIHJ1bm5pbmcgZm9yIGEgcXVldWUpIiksCiAg
ICAgICAgIG1ha2Vfb3B0aW9uKCItLWlyYy1wYXNzd29yZCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0
PSJpcmNfcGFzc3dvcmQiLCB0eXBlPSJzdHJpbmciLCBoZWxwPSJQYXNzd29yZCB0byB1c2Ugd2hl
biBjb21tdW5pY2F0aW5nIHZpYSBJUkMuIiksCiAgICAgICAgIG1ha2Vfb3B0aW9uKCItLXNlY29u
ZHMtdG8tc2xlZXAiLCBhY3Rpb249InN0b3JlIiwgZGVmYXVsdD0xMjAsIHR5cGU9ImludCIsIGhl
bHA9Ik51bWJlciBvZiBzZWNvbmRzIHRvIHNsZWVwIGluIHRoZSB0YXNrIHF1ZXVlLiIpLAotICAg
ICAgICBtYWtlX29wdGlvbigiLS1wb3J0IiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9InBvcnQiLCBk
ZWZhdWx0PU5vbmUsIGhlbHA9IlNwZWNpZnkgYSBwb3J0IChlLmcuLCBtYWMsIHF0LCBndGssIC4u
LikuIiksCisgICAgICAgIG1ha2Vfb3B0aW9uKCItLXBvcnQiLCBhY3Rpb249InN0b3JlIiwgZGVz
dD0icG9ydCIsIGRlZmF1bHQ9Tm9uZSwgaGVscD0iU3BlY2lmeSBhIHBvcnQgKGUuZy4sIG1hYywg
Z3RrLCAuLi4pLiIpLAogICAgIF0KIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoKToKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9yZWJhc2VsaW5lX3VuaXR0
ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5k
cy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmViYXNlbGluZV91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC05
Miw3ICs5Myw2IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lVGVzdChfQmFzZVRlc3RDYXNlKToKICAg
ICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21tYW5kLl9iYXNlbGluZV9kaXJlY3Rv
cnkoIkdUSyBMaW51eCA2NC1iaXQgRGVidWciKSwgIi9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay13azEiKQogICAgICAgICBzZWxmLmFzc2VydE11bHRpTGluZUVxdWFsKGNv
bW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiR1RLIExpbnV4IDY0LWJpdCBSZWxlYXNlIFdLMiAo
VGVzdHMpIiksICIvbW9jay1jaGVja291dC9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGstd2syIikK
ICAgICAgICAgc2VsZi5hc3NlcnRNdWx0aUxpbmVFcXVhbChjb21tYW5kLl9iYXNlbGluZV9kaXJl
Y3RvcnkoIkVGTCBMaW51eCA2NC1iaXQgUmVsZWFzZSBXSzIiKSwgIi9tb2NrLWNoZWNrb3V0L0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC13azIiKQotICAgICAgICBzZWxmLmFzc2VydE11bHRpTGlu
ZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiUXQgTGludXggUmVsZWFzZSIpLCAi
L21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQiKQogCiAgICAgZGVmIHRlc3Rf
cmViYXNlbGluZV91cGRhdGVzX2V4cGVjdGF0aW9uc19maWxlX25vb3Aoc2VsZik6CiAgICAgICAg
IHNlbGYuX3plcm9fb3V0X3Rlc3RfZXhwZWN0YXRpb25zKCkKQEAgLTMzNiw3ICszMzYsNyBAQCBj
bGFzcyBUZXN0UmViYXNlbGluZUV4cGVjdGF0aW9ucyhfQmFzZVRlCiAgICAgICAgICMgRklYTUU6
IGNoYW5nZSB0aGlzIHRvIHVzZSB0aGUgdGVzdC0gcG9ydHMuCiAgICAgICAgIGNhbGxzID0gZmls
dGVyKGxhbWJkYSB4OiB4ICE9IFsncW1ha2UnLCAnLXYnXSwgc2VsZi50b29sLmV4ZWN1dGl2ZS5j
YWxscykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oY2FsbHMpLCAxKQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGxlbihjYWxsc1swXSksIDIyKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKGxlbihjYWxsc1swXSksIDIwKQogCiAgICAgZGVmIHRlc3RfcmViYXNlbGluZV9leHBlY3Rh
dGlvbnNfbm9vcChzZWxmKToKICAgICAgICAgc2VsZi5femVyb19vdXRfdGVzdF9leHBlY3RhdGlv
bnMoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213375</attachid>
            <date>2013-10-04 10:40:51 -0700</date>
            <delta_ts>2013-10-04 11:18:55 -0700</delta_ts>
            <desc>Modified based on dpranke&apos;s comments.</desc>
            <filename>bug-122312-20131004104051.patch</filename>
            <type>text/plain</type>
            <size>115636</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDc5IEBACisyMDEzLTEwLTAzICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29t
PgorCisgICAgICAgIFJlbW92ZSBRdCBmZWF0dXJlcyBmcm9tIGJ1aWxkIGFuZCB0ZXN0IHRvb2xz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIzMTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlw
dHMvYnVpbGQtZHVtcHJlbmRlcnRyZWU6CisgICAgICAgICogU2NyaXB0cy9idWlsZC1qc2M6Cisg
ICAgICAgICogU2NyaXB0cy9idWlsZC13ZWJraXQ6CisgICAgICAgICogU2NyaXB0cy9idWlsZC13
ZWJraXR0ZXN0cnVubmVyOgorICAgICAgICAqIFNjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHM6
CisgICAgICAgIChvcGVuRHVtcFRvb2wpOgorICAgICAgICAoYnVpbGRQbGF0Zm9ybVJlc3VsdEhp
ZXJhcmNoeSk6CisgICAgICAgIChidWlsZFBsYXRmb3JtVGVzdEhpZXJhcmNoeSk6CisgICAgICAg
IChyZWFkU2tpcHBlZEZpbGVzKToKKyAgICAgICAgKiBTY3JpcHRzL3J1bi1sYXVuY2hlcjoKKyAg
ICAgICAgKiBTY3JpcHRzL3J1bi1xdHdlYmtpdC10ZXN0czogUmVtb3ZlZC4KKyAgICAgICAgKiBT
Y3JpcHRzL3J1bi13ZWJraXQtdGVzdHM6CisgICAgICAgICh1c2VOZXdSdW5XZWJLaXRUZXN0cyk6
CisgICAgICAgICogU2NyaXB0cy91cGRhdGUtd2Via2l0OgorICAgICAgICAqIFNjcmlwdHMvd2Vi
a2l0LWJ1aWxkLWRpcmVjdG9yeToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdGRpcnMucG06Cisg
ICAgICAgIChhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKToKKyAgICAgICAgKGpzY1Byb2R1Y3RE
aXIpOgorICAgICAgICAoYnVpbHREeWxpYlBhdGhGb3JOYW1lKToKKyAgICAgICAgKGlzQXBwbGVX
ZWJLaXQpOgorICAgICAgICAobGF1bmNoZXJQYXRoKToKKyAgICAgICAgKGxhdW5jaGVyTmFtZSk6
CisgICAgICAgIChjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmlnKToKKyAgICAgICAgKHNldHVwQ3ln
d2luRW52KToKKyAgICAgICAgKGNvcHlJbnNwZWN0b3JGcm9udGVuZEZpbGVzKToKKyAgICAgICAg
KHNldFBhdGhGb3JSdW5uaW5nV2ViS2l0QXBwKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplci5weToKKyAgICAgICAgKiBTY3JpcHRz
L3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5weToK
KyAgICAgICAgKEJhc2VsaW5lT3B0aW1pemVyVGVzdC50ZXN0X21hY19mdXR1cmUpOgorICAgICAg
ICAoQmFzZWxpbmVPcHRpbWl6ZXJUZXN0LnRlc3Rfd2luX2RvZXNfbm90X2Ryb3BfdG9fd2luXzdz
cDApOgorICAgICAgICAoQmFzZWxpbmVPcHRpbWl6ZXJUZXN0LnRlc3RfY29tbW9uX2RpcmVjdG9y
eV9pbmNsdWRlc19yb290KToKKyAgICAgICAgKEJhc2VsaW5lT3B0aW1pemVyVGVzdC50ZXN0X3Zp
cnR1YWxfcG9ydHNfZmlsdGVyZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L2NoZWNrb3V0L2NoYW5nZWxvZ191bml0dGVzdC5weToKKyAgICAgICAgKHRlc3RfcGFyc2VfcmV2
aWV3ZXJfdGV4dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dh
dGNobGlzdDoKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Vi
a2l0X3Rlc3RzX2ludGVncmF0aW9udGVzdC5weToKKyAgICAgICAgKFBvcnRUZXN0LmRpc2FibGVk
X3Rlc3RfY2hyb21pdW1fbWFjX2xpb25faW5fdGVzdF9zaGVsbF9tb2RlKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQuX19pbml0X18pOgor
ICAgICAgICAoUG9ydC5fcG9ydF9mbGFnX2Zvcl9zY3JpcHRzKToKKyAgICAgICAgKFBvcnQuX3dr
Ml9wb3J0X25hbWUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9idWlsZGVycy5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeS5weToKKyAgICAgICAg
KHBsYXRmb3JtX29wdGlvbnMpOgorICAgICAgICAoUG9ydEZhY3RvcnkpOgorICAgICAgICAoUG9y
dEZhY3RvcnkuX2RlZmF1bHRfcG9ydCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0
L2ZhY3RvcnlfdW5pdHRlc3QucHk6CisgICAgICAgIChGYWN0b3J5VGVzdC50ZXN0X2d0ayk6Cisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5OiBSZW1vdmVkLgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5weTogUmVtb3ZlZC4KKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHk6CisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5OgorICAgICAgICAoR2xvYmFsVmFyaWFi
bGVzVGVzdC50ZXN0X3BhdGhfcnVsZXNfc3BlY2lmaWVyKToKKyAgICAgICAgKiBTY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NtYWtlLnB5OgorICAgICAgICAoQ01ha2VDaGVja2VyKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcC5weToKKyAgICAg
ICAgKF9jbGFzc2lmeV9pbmNsdWRlKToKKyAgICAgICAgKGNoZWNrX2luY2x1ZGVfbGluZSk6Cisg
ICAgICAgIChjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24pOgorICAgICAgICAq
IFNjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwX3VuaXR0ZXN0LnB5OgorICAgICAg
ICAoT3JkZXJPZkluY2x1ZGVzVGVzdC50ZXN0X2NsYXNzaWZ5X2luY2x1ZGUpOgorICAgICAgICAo
V2ViS2l0U3R5bGVUZXN0LnRlc3RfbmFtZXMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
c3R5bGUvY2hlY2tlcnMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3QucHk6CisgICAgICAgIChU
ZXN0RXhwZWN0YXRpb25zVGVzdENhc2UudGVzdF9kZXRlcm1pbmVfcG9ydF9mcm9tX2V4cGVjdGF0
aW9uc19wYXRoKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvcmVi
YXNlbGluZV91bml0dGVzdC5weToKKyAgICAgICAgKFRlc3RSZWJhc2VsaW5lVGVzdC50ZXN0X2Jh
c2VsaW5lX2RpcmVjdG9yeSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL21haW4u
cHk6CisgICAgICAgIChXZWJLaXRQYXRjaCk6CisKIDIwMTMtMTAtMDMgIFJ5b3N1a2UgTml3YSAg
PHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmVtb3ZlIFF0IGJ1aWxkZXJzIGZyb20gdGhl
IGZsYWtpbmVzcyBkYXNoYm9hcmQuCkluZGV4OiBUb29scy9TY3JpcHRzL2J1aWxkLWR1bXByZW5k
ZXJ0cmVlCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUJ
KHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvYnVpbGQtZHVtcHJlbmRlcnRyZWUJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw2IEBACiAjIS91c3IvYmluL3BlcmwgLXcKIAotIyBD
b3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgs
IDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC00Myw3ICs0Myw2IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29w
dGlvbnNdIFtvcHRpb25zIHQKICAgLS1oZWxwICAgICAgICBTaG93IHRoaXMgaGVscCBtZXNzYWdl
CiAgIC0tY2xlYW4gICAgICAgQ2xlYW4gdXAgdGhlIGJ1aWxkIGRpcmVjdG9yeQogICAtLWd0ayAg
ICAgICAgIEJ1aWxkIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICBCdWlsZCB0aGUgUXQg
cG9ydAogICAtLWVmbCAgICAgICAgIEJ1aWxkIHRoZSBFRkwgcG9ydAogRU9GCiAKQEAgLTcwLDgg
KzY5LDggQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogfSBlbHNpZiAoaXNBcHBsZVdpbldl
YktpdCgpKSB7CiAgICAgbXkgJGRydFNvbHV0aW9uUGF0aCA9ICJEdW1wUmVuZGVyVHJlZS52Y3hw
cm9qL0R1bXBSZW5kZXJUcmVlLnNsbiI7CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlzdWFsU3R1ZGlv
UHJvamVjdCgkZHJ0U29sdXRpb25QYXRoLCAkY2xlYW4pOwotfSBlbHNpZiAoaXNRdCgpIHx8IGlz
R3RrKCkgfHwgaXNFZmwoKSkgewotICAgICMgUXQsIEd0ayBhbmQgRUZMIGJ1aWxkIGV2ZXJ5dGhp
bmcgaW4gb25lIHNob3QuIE5vIG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaGVyZS4KK30gZWxzaWYg
KGlzR3RrKCkgfHwgaXNFZmwoKSkgeworICAgICMgR3RrIGFuZCBFRkwgYnVpbGQgZXZlcnl0aGlu
ZyBpbiBvbmUgc2hvdC4gTm8gbmVlZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1
bHQgPSAwOwogfSBlbHNlIHsKICAgICBkaWUgIkJ1aWxkaW5nIG5vdCBkZWZpbmVkIGZvciB0aGlz
IHBsYXRmb3JtIVxuIjsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvYnVpbGQtanNjCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtanNjCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9T
Y3JpcHRzL2J1aWxkLWpzYwkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9i
aW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAoQykgMjAwNSBBcHBsZSBDb21wdXRlciwgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDEzIEFwcGxlIENv
bXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDcg
RXJpYyBTZWlkZWwgPGVyaWNAd2Via2l0Lm9yZz4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC02NCwxNSAr
NjQsNyBAQCBjaGRpcldlYktpdCgpOwogbXkgQG9wdGlvbnMgPSBYY29kZU9wdGlvbnMoKTsKIG15
IEBjb3ZlcmFnZVN1cHBvcnRPcHRpb25zID0gKCRjb3ZlcmFnZVN1cHBvcnQpID8gWGNvZGVDb3Zl
cmFnZVN1cHBvcnRPcHRpb25zKCkgOiAoKTsKIAotaWYgKGlzUXQoKSkgewotICAgIGNoZWNrRm9y
QXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1xdCIpOwotICAgIG15IEBwcm9qZWN0cyA9ICgi
V1RGIiwgIkphdmFTY3JpcHRDb3JlIik7Ci0gICAgIyBQaWNrIHVwIHRoZSAtLW5vLXdlYmtpdDIg
b3B0aW9uIGZyb20gQlVJTERfV0VCS0lUX0FSR1MgaWYgaXQgaXMgbmVlZGVkCi0gICAgcHVzaCBA
QVJHViwgc3BsaXQoLyAvLCAkRU5WeydCVUlMRF9XRUJLSVRfQVJHUyd9KSBpZiAoJEVOVnsnQlVJ
TERfV0VCS0lUX0FSR1MnfSk7Ci0gICAgcHVzaCBAQVJHViwgIldFQktJVF9DT05GSUctPWJ1aWxk
X3dlYmtpdDIiIGlmIGNoZWNrRm9yQXJndW1lbnRBbmRSZW1vdmVGcm9tQVJHVigiLS1uby13ZWJr
aXQyIik7Ci0gICAgbXkgJHJlc3VsdCA9IGJ1aWxkUU1ha2VQcm9qZWN0cyhcQHByb2plY3RzLCAw
LCBAQVJHVik7Ci0gICAgZXhpdCBleGl0U3RhdHVzKCRyZXN1bHQpOwotfSBlbHNpZiAoY21ha2VC
YXNlZFBvcnROYW1lKCkpIHsKK2lmIChjbWFrZUJhc2VkUG9ydE5hbWUoKSkgewogICAgIGJ1aWxk
Q01ha2VQcm9qZWN0T3JFeGl0KDAsIGNtYWtlQmFzZWRQb3J0TmFtZSgpLCB1bmRlZiwgImpzYyIs
IGNtYWtlQmFzZWRQb3J0QXJndW1lbnRzKCkpOyAjIFRoaXMgY2FsbCBvbmx5IHJldHVybnMgaWYg
bm90aGluZyB3cm9uZyBoYXBwZW5lZAogICAgIGV4aXQgZXhpdFN0YXR1cygwKTsKIH0KSW5kZXg6
IFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMv
YnVpbGQtd2Via2l0CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL2J1aWxkLXdl
YmtpdAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vcGVybCAtdwog
Ci0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAx
MSwgMjAxMiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxMiwgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTAgbW9pamktbW9i
aWxlLmNvbSBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTEgUmVzZWFy
Y2ggSW4gTW90aW9uIExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC02NSwyOCArNjUs
NiBAQCBteSAkc3RhcnRUaW1lID0gdGltZSgpOwogCiBteSBAZmVhdHVyZXMgPSBnZXRGZWF0dXJl
T3B0aW9uTGlzdCgpOwogCi0jIFVwZGF0ZSBkZWZhdWx0cyBmcm9tIFF0J3MgcHJvamVjdCBmaWxl
Ci1pZiAoaXNRdCgpKSB7Ci0gICAgIyBUYWtlIGEgc25lZWsgcGVlayBhdCB0aGUgYXJndW1lbnRz
LCBzaW5jZSB3ZSB3aWxsIG5lZWQgdGhlIHFtYWtlIGJpbmFyeSBlYXJseQotICAgICMgb24gdG8g
ZG8gcHJvZmlsZSBwYXJzaW5nLiBXZSBhbHNvIG5lZWQgdG8ga25vdyBpZiB3ZSdyZSBzaG93aW5n
IHRoZSBoZWxwLXRleHQuCi0gICAgZm9yZWFjaCAoQEFSR1YpIHsKLSAgICAgICAgaWYgKC9eLS1x
bWFrZT0oLiopLykgewotICAgICAgICAgICAgc2V0UW1ha2VCaW5hcnlQYXRoKCQxKTsKLSAgICAg
ICAgfSBlbHNpZiAoL14tLWhlbHAkLykgewotICAgICAgICAgICAgJHNob3dIZWxwID0gMTsKLSAg
ICAgICAgfQotICAgIH0KLQotICAgIG15ICVxdERlZmF1bHRzOwotICAgIGlmICgkc2hvd0hlbHAp
IHsKLSAgICAgICAgJXF0RGVmYXVsdHMgPSBxdEZlYXR1cmVEZWZhdWx0cygpOwotICAgIH0KLQot
ICAgIGZvcmVhY2ggKEBmZWF0dXJlcykgewotICAgICAgICAkXy0+e2RlZmF1bHR9ID0gKCVxdERl
ZmF1bHRzID8gJHF0RGVmYXVsdHN7JF8tPntkZWZpbmV9fSB8fCAwIDogLTEpOwotICAgIH0KLX0K
LQogIyBBZGRpdGlvbmFsIGVudmlyb25tZW50IHBhcmFtZXRlcnMKIHB1c2ggQEFSR1YsIHNwbGl0
KC8gLywgJEVOVnsnQlVJTERfV0VCS0lUX0FSR1MnfSkgaWYgKCRFTlZ7J0JVSUxEX1dFQktJVF9B
UkdTJ30pOwogCkBAIC0xMTcsMjQgKzk1LDE5IEBAIFVzYWdlOiAkcHJvZ3JhbU5hbWUgW29wdGlv
bnNdIFtvcHRpb25zIHQKICAgLS1ibGFja2JlcnJ5ICAgICAgICAgICAgICAgICAgICAgIEJ1aWxk
IHRoZSBCbGFja0JlcnJ5IHBvcnQgb24gTWFjL0xpbnV4CiAgIC0tZWZsICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBCdWlsZCB0aGUgRUZMIHBvcnQKICAgLS1ndGsgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1aWxkIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIEJ1aWxkIHRoZSBRdCBwb3J0CiAgIC0td2luY2Fpcm8gICAgICAgICAgICAg
ICAgICAgICAgICBCdWlsZCB1c2luZyBDYWlybyAocmF0aGVyIHRoYW4gQ29yZUdyYXBoaWNzKSBv
biBXaW5kb3dzCiAgIC0td2luY2UgICAgICAgICAgICAgICAgICAgICAgICAgICBCdWlsZCB0aGUg
V2luQ0UgcG9ydAogCiAgIC0taW5zcGVjdG9yLWZyb250ZW5kICAgICAgICAgICAgICBDb3B5IGNo
YW5nZXMgdG8gdGhlIGluc3BlY3RvciBmcm9udC1lbmQgZmlsZXMgdG8gdGhlIGJ1aWxkIGRpcmVj
dG9yeQogCi0gIC0taW5zdGFsbC1oZWFkZXJzPTxwYXRoPiAgICAgICAgICBTZXQgaW5zdGFsbGF0
aW9uIHBhdGggZm9yIHRoZSBoZWFkZXJzIChRdCBvbmx5KQotICAtLWluc3RhbGwtbGlicz08cGF0
aD4gICAgICAgICAgICAgU2V0IGluc3RhbGxhdGlvbiBwYXRoIGZvciB0aGUgbGlicmFyaWVzIChR
dCBvbmx5KQotCiAgIC0tcHJlZml4PTxwYXRoPiAgICAgICAgICAgICAgICAgICBTZXQgaW5zdGFs
bGF0aW9uIHByZWZpeCB0byB0aGUgZ2l2ZW4gcGF0aCAoR3RrL0VmbC9CbGFja0JlcnJ5IG9ubHkp
CiAgIC0tbWFrZWFyZ3M9PGFyZ3VtZW50cz4gICAgICAgICAgICBPcHRpb25hbCBNYWtlZmlsZSBm
bGFncwotICAtLXFtYWtlYXJnPTxhcmd1bWVudHM+ICAgICAgICAgICAgT3B0aW9uYWwgcW1ha2Ug
ZmxhZ3MgKFF0IG9ubHksIGUuZy4gLS1xbWFrZWFyZz0iQ09ORklHKz13ZWJraXQyIiB0byBidWls
ZCBXZWJLaXQyKQogICAtLWNtYWtlYXJncz08YXJndW1lbnRzPiAgICAgICAgICAgT3B0aW9uYWwg
Q01ha2UgZmxhZ3MgKGUuZy4gLS1jbWFrZWFyZ3M9Ii1ERk9PPWJhciAtRENNQUtFX1BSRUZJWF9Q
QVRIPS91c3IvbG9jYWwiKQogCiAgIC0tbWluaW1hbCAgICAgICAgICAgICAgICAgICAgICAgICBO
byBvcHRpb25hbCBmZWF0dXJlcywgdW5sZXNzIGV4cGxpY2l0bHkgZW5hYmxlZAogCiAgIC0tb25s
eS13ZWJraXQgICAgICAgICAgICAgICAgICAgICBCdWlsZCBvbmx5IHRoZSBXZWJLaXQgcHJvamVj
dAotICAtLW5vLXdlYmtpdDEgICAgICAgICAgICAgICAgICAgICAgT21pdCBXZWJLaXQxIGNvZGUg
ZnJvbSB0aGUgYnVpbGQgKFF0L0VGTC9HVEsgb25seSkKKyAgLS1uby13ZWJraXQxICAgICAgICAg
ICAgICAgICAgICAgIE9taXQgV2ViS2l0MSBjb2RlIGZyb20gdGhlIGJ1aWxkIChFRkwvR1RLIG9u
bHkpCiAgIC0tbm8td2Via2l0MiAgICAgICAgICAgICAgICAgICAgICBPbWl0IFdlYktpdDIgY29k
ZSBmcm9tIHRoZSBidWlsZAogCiBFT0YKQEAgLTE3Myw5ICsxNDYsNiBAQCBzZXRDb25maWd1cmF0
aW9uKCk7CiAKIG15ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwogCi0jIFJlbW92ZSAwIGJ5
dGUgc2l6ZWQgZmlsZXMgZnJvbSBwcm9kdWN0RGlyIGFmdGVyIHNsYXZlIGxvc3QgZm9yIFF0IGJ1
aWxkYm90cy4KLUZpbGU6OkZpbmQ6OmZpbmQoXCZ1bmxpbmtaZXJvRmlsZXMsICRwcm9kdWN0RGly
KSBpZiAoaXNRdCgpICYmIC1lICRwcm9kdWN0RGlyKTsKLQogc3ViIHVubGlua1plcm9GaWxlcygp
CiB7CiAgICAgbXkgJGZpbGUgPSAkRmlsZTo6RmluZDo6bmFtZTsKQEAgLTIwMCw3ICsxNzAsNyBA
QCBmb3IgbXkgJGRpciAoQHByb2plY3RzKSB7CiAgICAgfQogfQogCi1pZiAoIWlzUXQoKSAmJiAh
LWQgIldlYktpdExpYnJhcmllcyIpIHsKK2lmICghLWQgIldlYktpdExpYnJhcmllcyIpIHsKICAg
ICBkaWUgIkVycm9yOiBObyBXZWJLaXRMaWJyYXJpZXMgZGlyZWN0b3J5IGZvdW5kLiBQbGVhc2Ug
ZG8gYSBmcmVzaCBjaGVja291dC5cbiI7CiB9CiAKQEAgLTI0MywyNiArMjEzLDYgQEAgaWYgKGlz
QXBwbGVNYWNXZWJLaXQoKSkgewogICAgICMgQ29weSBXZWJLaXRTdXBwb3J0TGlicmFyeSB0byB0
aGUgY29ycmVjdCBsb2NhdGlvbiBpbiBXZWJLaXRMaWJyYXJpZXMgc28gaXQgY2FuIGJlIGZvdW5k
LgogICAgICMgV2lsbCBmYWlsIGlmIFdlYktpdFN1cHBvcnRMaWJyYXJ5LnppcCBpcyBub3QgaW4g
c291cmNlIHJvb3QuCiAgICAgKHN5c3RlbSgicGVybCBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJr
aXQtc3VwcG9ydC1saWJzIikgPT0gMCkgb3IgZGllOwotfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAg
cHVzaCBAb3B0aW9ucywgIi0taW5zdGFsbC1oZWFkZXJzPSIgLiAkaW5zdGFsbEhlYWRlcnMgaWYg
ZGVmaW5lZCgkaW5zdGFsbEhlYWRlcnMpOwotICAgIHB1c2ggQG9wdGlvbnMsICItLWluc3RhbGwt
bGlicz0iIC4gJGluc3RhbGxMaWJzIGlmIGRlZmluZWQoJGluc3RhbGxMaWJzKTsKLSAgICBwdXNo
IEBvcHRpb25zLCAiLS1tYWtlYXJncz0iIC4gJG1ha2VBcmdzIGlmICRtYWtlQXJnczsKLSAgICBw
dXNoIEBvcHRpb25zLCAiV0VCS0lUX0NPTkZJRy09YnVpbGRfd2Via2l0MSIgaWYgJG5vV2ViS2l0
MTsKLSAgICBwdXNoIEBvcHRpb25zLCAiV0VCS0lUX0NPTkZJRy09YnVpbGRfd2Via2l0MiIgaWYg
JG5vV2ViS2l0MjsKLQotICAgIGlmIChjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1Yo
Ii0yIikpIHsKLSAgICAgICAgcHJpbnQgIk5vdGU6IFdlYktpdDIgaXMgbm93IGJ1aWx0IGJ5IGRl
ZmF1bHQsIHlvdSBkb24ndCBuZWVkIHRvIHBhc3MgLTIuIERpc2FibGUgdXNpbmcgLS1uby13ZWJr
aXQyXG4iOwotICAgIH0KLQotICAgIEBvcHRpb25zID0gKEBBUkdWLCBAb3B0aW9ucyk7Ci0KLSAg
ICBmb3JlYWNoIChAZmVhdHVyZXMpIHsKLSAgICAgICAgaWYgKCRfLT57ZGVmaW5lfSAmJiAkeyRf
LT57dmFsdWV9fSAhPSAkXy0+e2RlZmF1bHR9KSB7Ci0gICAgICAgICAgICBteSAkZGVmaW5lID0g
bGMoJF8tPntkZWZpbmV9KTsKLSAgICAgICAgICAgICRkZWZpbmUgPX4gcy9eZW5hYmxlXy8vOwot
ICAgICAgICAgICAgcHVzaCBAb3B0aW9ucywgIldFQktJVF9DT05GSUciIC4gKCR7JF8tPnt2YWx1
ZX19ID09IDEgPyAiKyIgOiAiLSIpIC4gIj0iIC4gJGRlZmluZTsKLSAgICAgICAgfQotICAgIH0K
IH0KIAogIyBJZiBhc2tlZCB0byBidWlsZCBqdXN0IHRoZSBXZWJLaXQgcHJvamVjdCwgb3Zlcndy
aXRlIHRoZSBwcm9qZWN0cwpAQCAtMzA3LDEyICsyNTcsNiBAQCBpZiAoaXNCbGFja0JlcnJ5KCkp
IHsKICAgICBidWlsZENNYWtlUHJvamVjdE9yRXhpdCgkY2xlYW4sICJCbGFja0JlcnJ5IiwgJHBy
ZWZpeFBhdGgsICRtYWtlQXJncywgKGNtYWtlQmFzZWRQb3J0QXJndW1lbnRzKCksIGNNYWtlQXJn
c0Zyb21GZWF0dXJlcygpKSwgJGNtYWtlQXJncyk7CiB9CiAKLWlmIChpc1F0KCkpIHsKLSAgICBA
cHJvamVjdHMgPSAoKTsgIyBBbiBlbXB0eSBwcm9qZWN0cyBsaXN0IHdpbGwgYnVpbGQgdGhlIGRl
ZmF1bHQgcHJvamVjdHMKLSAgICAkcmVzdWx0ID0gYnVpbGRRTWFrZVByb2plY3RzKFxAcHJvamVj
dHMsICRjbGVhbiwgQG9wdGlvbnMpOwotICAgIGV4aXQgZXhpdFN0YXR1cygkcmVzdWx0KSBpZiBl
eGl0U3RhdHVzKCRyZXN1bHQpOwotfQotCiAjIEJ1aWxkLCBhbmQgYWJvcnQgaWYgdGhlIGJ1aWxk
IGZhaWxzLgogZm9yIG15ICRkaXIgKEBwcm9qZWN0cykgewogICAgIGNoZGlyICRkaXIgb3IgZGll
OwpJbmRleDogVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFRvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0dGVzdHJ1bm5lcgkocmV2aXNpb24gMTU2ODc1
KQorKysgVG9vbHMvU2NyaXB0cy9idWlsZC13ZWJraXR0ZXN0cnVubmVyCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDYgKzEsNiBAQAogIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMgQ29weXJpZ2h0IChDKSAy
MDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEw
LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAj
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtNjMsOCArNjMsOCBAQCBpZiAoaXNBcHBsZU1hY1dlYktpdCgpKSB7CiAg
ICAgJHJlc3VsdCA9IGJ1aWxkWENvZGVQcm9qZWN0KCJXZWJLaXRUZXN0UnVubmVyIiwgJGNsZWFu
LCBYY29kZU9wdGlvbnMoKSwgQEFSR1YpOwogfSBlbHNpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7
CiAgICAgJHJlc3VsdCA9IGJ1aWxkVmlzdWFsU3R1ZGlvUHJvamVjdCgiV2ViS2l0VGVzdFJ1bm5l
ci5zbG4iLCAkY2xlYW4pOwotfSBlbHNpZiAoaXNRdCgpIHx8IGlzR3RrKCkgfHwgaXNFZmwoKSkg
ewotICAgICMgUXQgYW5kIEdUSysgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVl
ZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgorfSBlbHNpZiAoaXNHdGsoKSB8fCBpc0VmbCgpKSB7
CisgICAgIyBHVEsrIGFuZCBFRkwgYnVpbGQgZXZlcnl0aGluZyBpbiBvbmUgc2hvdC4gTm8gbmVl
ZCB0byBidWlsZCBhbnl0aGluZyBoZXJlLgogICAgICRyZXN1bHQgPSAwOwogfSBlbHNlIHsKICAg
ICBkaWUgIldlYktpdFRlc3RSdW5uZXIgaXMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHBsYXRmb3Jt
LlxuIjsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvb2xkLXJ1bi13ZWJraXQtdGVzdHMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkocmV2aXNpb24gMTU2ODc1
KQorKysgVG9vbHMvU2NyaXB0cy9vbGQtcnVuLXdlYmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpA
QCAtMSw2ICsxLDYgQEAKLSMhL3Vzci9iaW4vcGVybAorIyEvdXNyL2Jpbi9wZXJsIC13CiAKLSMg
Q29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3
LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMgQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFwQG55cG9wLmNvbSkK
ICMgQ29weXJpZ2h0IChDKSAyMDA3IE1hdHQgTGlsZWsgKHBld3Rlcm1vb3NlQGdtYWlsLmNvbSkK
ICMgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+CkBAIC0y
MzAsOCArMjMwLDYgQEAgaWYgKGlzQXBwbGVNYWNXZWJLaXQoKSkgewogICAgIH0gZWxzZSB7CiAg
ICAgICAgICRwbGF0Zm9ybSA9ICJtYWMiOwogICAgIH0KLX0gZWxzaWYgKGlzUXQoKSkgewotICAg
ICRwbGF0Zm9ybSA9ICJxdCI7CiB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAgJHBsYXRmb3JtID0g
Imd0ayI7CiB9IGVsc2lmIChpc1dpbkNhaXJvKCkpIHsKQEAgLTI0OCwxMiArMjQ2LDExIEBAIGlm
IChpc0FwcGxlTWFjV2ViS2l0KCkpIHsKICAgICB9CiB9CiAKLWlmIChpc1F0KCkgfHwgaXNBcHBs
ZVdpbldlYktpdCgpKSB7CitpZiAoaXNBcHBsZVdpbldlYktpdCgpKSB7CiAgICAgbXkgJHRlc3Rm
b250UGF0aCA9ICRFTlZ7IldFQktJVF9URVNURk9OVFMifTsKICAgICBpZiAoISR0ZXN0Zm9udFBh
dGggfHwgIS1kICIkdGVzdGZvbnRQYXRoIikgewogICAgICAgICBwcmludCAiVGhlIFdFQktJVF9U
RVNURk9OVFMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGRlZmluZWQgb3Igbm90IHNldCBw
cm9wZXJseVxuIjsKICAgICAgICAgcHJpbnQgIllvdSBtdXN0IHNldCBpdCBiZWZvcmUgcnVubmlu
ZyB0aGUgdGVzdHMuXG4iOwotICAgICAgICBwcmludCAiVXNlIGdpdCB0byBncmFiIHRoZSBhY3R1
YWwgZm9udHMgZnJvbSBodHRwOi8vZ2l0b3Jpb3VzLm9yZy9xdHdlYmtpdC90ZXN0Zm9udHNcbiI7
CiAgICAgICAgIGV4aXQgMTsKICAgICB9CiB9CkBAIC0zMTcsNyArMzE0LDcgQEAgVXNhZ2U6ICRw
cm9ncmFtTmFtZSBbb3B0aW9uc10gW3Rlc3RkaXJ8dAogICAtLVtuby1dc3RyaXAtZWRpdGluZy1j
YWxsYmFja3MgIFJlbW92ZSBlZGl0aW5nIGNhbGxiYWNrcyBmcm9tIGV4cGVjdGVkIHJlc3VsdHMK
ICAgLXR8LS10aHJlYWRlZCAgICAgICAgICAgICAgICAgICBSdW4gYSBjb25jdXJyZW50IEphdmFT
Y3JpcHQgdGhlYWQgd2l0aCBlYWNoIHRlc3QKICAgLS10aW1lb3V0IHQgICAgICAgICAgICAgICAg
ICAgICBTZXRzIHRoZSBudW1iZXIgb2Ygc2Vjb25kcyBiZWZvcmUgYSB0ZXN0IHRpbWVzIG91dCAo
ZGVmYXVsdDogJHRpbWVvdXRTZWNvbmRzKQotICAtLXZhbGdyaW5kICAgICAgICAgICAgICAgICAg
ICAgIFJ1biBEdW1wUmVuZGVyVHJlZSBpbnNpZGUgdmFsZ3JpbmQgKFF0L0xpbnV4IG9ubHkpCisg
IC0tdmFsZ3JpbmQgICAgICAgICAgICAgICAgICAgICAgUnVuIER1bXBSZW5kZXJUcmVlIGluc2lk
ZSB2YWxncmluZCAoTGludXggb25seSkKICAgLXZ8LS12ZXJib3NlICAgICAgICAgICAgICAgICAg
ICBNb3JlIHZlcmJvc2Ugb3V0cHV0IChvdmVycmlkZXMgLS1xdWlldCkKICAgLW18LS1tZXJnZS1s
ZWFrLWRlcHRoIGFyZyAgICAgICBNZXJnZXMgbGVhayBjYWxsU3RhY2tzIGFuZCBwcmludHMgdGhl
IG51bWJlciBvZiB1bmlxdWUgbGVha3MgYmVuZWF0aCBhIGNhbGxzdGFjayBkZXB0aCBvZiBhcmcu
ICBEZWZhdWx0cyB0byA1LgogICAtLXVzZS1yZW1vdGUtbGlua3MtdG8tdGVzdHMgICAgIExpbmsg
dG8gdGVzdCBmaWxlcyB3aXRoaW4gdGhlIFNWTiByZXBvc2l0b3J5IGluIHRoZSByZXN1bHRzLgpA
QCAtMzg5LDkgKzM4Niw2IEBAIGlmICgkdXNlV2ViS2l0VGVzdFJ1bm5lcikgewogICAgICAgICAk
c3RyaXBFZGl0aW5nQ2FsbGJhY2tzID0gMCB1bmxlc3MgZGVmaW5lZCAkc3RyaXBFZGl0aW5nQ2Fs
bGJhY2tzOwogICAgICAgICAkcmVhbFBsYXRmb3JtID0gJHBsYXRmb3JtOwogICAgICAgICAkcGxh
dGZvcm0gPSAid2luLXdrMiI7Ci0gICAgfSBlbHNpZiAoaXNRdCgpKSB7Ci0gICAgICAgICRyZWFs
UGxhdGZvcm0gPSAkcGxhdGZvcm07Ci0gICAgICAgICRwbGF0Zm9ybSA9ICJxdC01LjAtd2syIjsK
ICAgICB9IGVsc2lmIChpc0d0aygpKSB7CiAgICAgICAgICRyZWFsUGxhdGZvcm0gPSAkcGxhdGZv
cm07CiAgICAgICAgICRwbGF0Zm9ybSA9ICJndGstd2syIjsKQEAgLTQyMCw3ICs0MTQsNiBAQCAk
dXNlUmVtb3RlTGlua3NUb1Rlc3RzID0gMCBpZiBpc0d0aygpOwogCiBzZXRDb25maWd1cmF0aW9u
UHJvZHVjdERpcihDd2Q6OmFic19wYXRoKCRyb290KSkgaWYgKGRlZmluZWQoJHJvb3QpKTsKIG15
ICRwcm9kdWN0RGlyID0gcHJvZHVjdERpcigpOwotJHByb2R1Y3REaXIgLj0gIi9iaW4iIGlmIGlz
UXQoKTsKICRwcm9kdWN0RGlyIC49ICIvUHJvZ3JhbXMiIGlmIGlzR3RrKCk7CiAKICMgU2F2ZSB0
aGUgY3VycmVudCBkaXJlY3RvcnkgYmVmb3JlIGNoYWdpbmcgaXQgdmlhIGNoZGlyV2ViS2l0CkBA
IC0xMjA3LDE3ICsxMjAwLDYgQEAgbXkgQGNvbmZpZ3VyYXRpb25BcmdzID0gYXJndW1lbnRzRm9y
Q29uZgogaWYgKGlzR3RrKCkpIHsKICAgcHVzaChAY29uZmlndXJhdGlvbkFyZ3MsICctMicpIGlm
ICR1c2VXZWJLaXRUZXN0UnVubmVyOwogICBzeXN0ZW0gIlRvb2xzL1NjcmlwdHMvcnVuLWxhdW5j
aGVyIiwgQGNvbmZpZ3VyYXRpb25BcmdzLCAiZmlsZTovLyIuJHRlc3RSZXN1bHRzIGlmICRsYXVu
Y2hTYWZhcmk7Ci19IGVsc2lmIChpc1F0KCkpIHsKLSAgaWYgKGdldFF0VmVyc2lvbigpIGx0ICI1
LjAiKSB7Ci0gICAgdW5zaGlmdCBAY29uZmlndXJhdGlvbkFyZ3MsIHF3KC1zdHlsZSB3aW5kb3dz
KTsKLSAgICB1bnNoaWZ0IEBjb25maWd1cmF0aW9uQXJncywgcXcoLWdyYXBoaWNzc3lzdGVtIHJh
c3Rlcik7Ci0gIH0KLSAgaWYgKGlzQ3lnd2luKCkpIHsKLSAgICAkdGVzdFJlc3VsdHMgPSAiLyIg
LiB0b1dpbmRvd3NQYXRoKCR0ZXN0UmVzdWx0cyk7Ci0gICAgJHRlc3RSZXN1bHRzID1+IHMvXFwv
XC8vZzsKLSAgfQotICBwdXNoKEBjb25maWd1cmF0aW9uQXJncywgJy0yJykgaWYgJHVzZVdlYktp
dFRlc3RSdW5uZXI7Ci0gIHN5c3RlbSAiVG9vbHMvU2NyaXB0cy9ydW4tbGF1bmNoZXIiLCBAY29u
ZmlndXJhdGlvbkFyZ3MsICJmaWxlOi8vIi4kdGVzdFJlc3VsdHMgaWYgJGxhdW5jaFNhZmFyaTsK
IH0gZWxzaWYgKGlzQ3lnd2luKCkpIHsKICAgc3lzdGVtICJjeWdzdGFydCIsICR0ZXN0UmVzdWx0
cyBpZiAkbGF1bmNoU2FmYXJpOwogfSBlbHNpZiAoaXNXaW5kb3dzKCkpIHsKQEAgLTE1MTQsMjAg
KzE0OTYsMTEgQEAgc3ViIG9wZW5EdW1wVG9vbCgpCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBp
ZiAoaXNRdCgpKSB7Ci0gICAgICAgICRDTEVBTl9FTlZ7UVRXRUJLSVRfUExVR0lOX1BBVEh9ID0g
cHJvZHVjdERpcigpIC4gIi9saWIvcGx1Z2lucyI7Ci0gICAgICAgICRDTEVBTl9FTlZ7UVRfRFJU
X1dFQlZJRVdfTU9ERX0gPSAkRU5WeyJRVF9EUlRfV0VCVklFV19NT0RFIn07Ci0gICAgfQotICAg
IAogICAgIG15IEBhcmdzID0gKCRkdW1wVG9vbCwgQHRvb2xBcmdzKTsKICAgICBpZiAoaXNBcHBs
ZU1hY1dlYktpdCgpKSB7IAogICAgICAgICB1bnNoaWZ0IEBhcmdzLCAiYXJjaCIsICItIiAuIGFy
Y2hpdGVjdHVyZSgpOyAgICAgICAgICAgICAKICAgICB9CiAKLSAgICBpZiAoJHVzZVZhbGdyaW5k
KSB7Ci0gICAgICAgIHVuc2hpZnQgQGFyZ3MsICJ2YWxncmluZCIsICItLXN1cHByZXNzaW9ucz0k
cGxhdGZvcm1CYXNlRGlyZWN0b3J5L3F0L1N1cHByZXNzZWRWYWxncmluZEVycm9ycyI7Ci0gICAg
fSAKLQogICAgIGlmICgkdXNlV2ViS2l0VGVzdFJ1bm5lcikgewogICAgICAgICAjIE1ha2UgV2Vi
S2l0VGVzdFJ1bm5lciB1c2UgYSBzaW1pbGFyIHRpbWVvdXQuIFdlIGRvbid0IHVzZSB0aGUgZXhh
Y3Qgc2FtZSB0aW1lb3V0IHRvIGF2b2lkCiAgICAgICAgICMgcmFjZSBjb25kaXRpb25zLgpAQCAt
MjE2OSwzNiArMjE0Miw2IEBAIHN1YiBidWlsZFBsYXRmb3JtUmVzdWx0SGllcmFyY2h5KCkKICAg
ICAgICAgaWYgKCRwbGF0Zm9ybSBlcSAid2luY2Fpcm8iKSB7CiAgICAgICAgICAgICBAcGxhdGZv
cm1zID0gJHBsYXRmb3JtOwogICAgICAgICB9Ci0gICAgfSBlbHNpZiAoJHBsYXRmb3JtID1+IC9e
cXQvKSB7Ci0gICAgICAgIGlmICgkcGxhdGZvcm0gZXEgInF0LTUuMC13azIiIHx8IGdldFF0VmVy
c2lvbigpIGVxICI1LjAiICYmICR1c2VXZWJLaXRUZXN0UnVubmVyKSB7Ci0gICAgICAgICAgICBw
dXNoIEBwbGF0Zm9ybXMsICJxdC01LjAtd2syIjsKLSAgICAgICAgfQotICAgICAgICBlbHNpZiAo
JHBsYXRmb3JtIGVxICJxdC01LjAtd2sxIiB8fCBnZXRRdFZlcnNpb24oKSBlcSAiNS4wIiAmJiAh
JHVzZVdlYktpdFRlc3RSdW5uZXIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0
LTUuMC13azEiCi0gICAgICAgIH0KLQotICAgICAgICBpZiAoaXNBUk0oKSB8fCAkcGxhdGZvcm0g
ZXEgInF0LWFybSIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LWFybSI7Ci0g
ICAgICAgIH0KLQotICAgICAgICBpZiAoaXNEYXJ3aW4oKSB8fCAkcGxhdGZvcm0gZXEgInF0LW1h
YyIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LW1hYyI7Ci0gICAgICAgIH0K
LSAgICAgICAgZWxzaWYgKGlzV2luZG93cygpIHx8IGlzQ3lnd2luKCkgfHwgJHBsYXRmb3JtIGVx
ICJxdC13aW4iKSB7Ci0gICAgICAgICAgICBwdXNoIEBwbGF0Zm9ybXMsICJxdC13aW4iOwotICAg
ICAgICB9Ci0gICAgICAgIGVsc2lmIChpc0xpbnV4KCkgfHwgJHBsYXRmb3JtIGVxICJxdC1saW51
eCIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LWxpbnV4IjsKLSAgICAgICAg
fQotCi0gICAgICAgIGlmIChnZXRRdFZlcnNpb24oKSBlcSAiNC44IiB8fCAkcGxhdGZvcm0gZXEg
InF0LTQuOCIpIHsKLSAgICAgICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0LTQuOCI7Ci0gICAg
ICAgIH0KLSAgICAgICAgZWxzaWYgKGdldFF0VmVyc2lvbigpIGVxICI1LjAiIHx8ICRwbGF0Zm9y
bSBlcSAicXQtNS4wIikgewotICAgICAgICAgICAgcHVzaCBAcGxhdGZvcm1zLCAicXQtNS4wIjsK
LSAgICAgICAgfQotCi0gICAgICAgIHB1c2ggQHBsYXRmb3JtcywgInF0IjsKICAgICB9IGVsc2lm
ICgkcGxhdGZvcm0gPX4gL15ndGstLykgewogICAgICAgICBwdXNoIEBwbGF0Zm9ybXMsICRwbGF0
Zm9ybTsKICAgICAgICAgcHVzaCBAcGxhdGZvcm1zLCAiZ3RrIjsKQEAgLTIyMjIsMjQgKzIxNjUs
MTggQEAgc3ViIGJ1aWxkUGxhdGZvcm1UZXN0SGllcmFyY2h5KEApCiAgICAgbXkgKEBwbGF0Zm9y
bUhpZXJhcmNoeSkgPSBAXzsKIAogICAgIG15IEByZXN1bHQ7Ci0gICAgaWYgKCRwbGF0Zm9ybSA9
fiAvXnF0LykgewotICAgICAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAcGxhdGZvcm1IaWVyYXJj
aHk7ICsrJGkpIHsKLSAgICAgICAgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlb
JGldOwotICAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgbXkgJHdrMlBsYXRmb3JtOwot
ICAgICAgICBmb3IgKG15ICRpID0gMDsgJGkgPCBAcGxhdGZvcm1IaWVyYXJjaHk7ICsrJGkpIHsK
LSAgICAgICAgICAgIGlmICgkcGxhdGZvcm1IaWVyYXJjaHlbJGldID1+IC8td2syLykgewotICAg
ICAgICAgICAgICAgICR3azJQbGF0Zm9ybSA9IHNwbGljZSBAcGxhdGZvcm1IaWVyYXJjaHksICRp
LCAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICB9CisgICAgbXkgJHdrMlBs
YXRmb3JtOworICAgIGZvciAobXkgJGkgPSAwOyAkaSA8IEBwbGF0Zm9ybUhpZXJhcmNoeTsgKysk
aSkgeworICAgICAgICBpZiAoJHBsYXRmb3JtSGllcmFyY2h5WyRpXSA9fiAvLXdrMi8pIHsKKyAg
ICAgICAgICAgICR3azJQbGF0Zm9ybSA9IHNwbGljZSBAcGxhdGZvcm1IaWVyYXJjaHksICRpLCAx
OworICAgICAgICAgICAgbGFzdDsKICAgICAgICAgfQotCi0gICAgICAgcHVzaCBAcmVzdWx0LCAk
cGxhdGZvcm1IaWVyYXJjaHlbMF07Ci0gICAgICAgcHVzaCBAcmVzdWx0LCAkd2syUGxhdGZvcm0g
aWYgZGVmaW5lZCAkd2syUGxhdGZvcm07Ci0gICAgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1I
aWVyYXJjaHlbJCNwbGF0Zm9ybUhpZXJhcmNoeV0gaWYgQHBsYXRmb3JtSGllcmFyY2h5ID49IDI7
CiAgICAgfQogCisgICAgcHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlbMF07CisgICAg
cHVzaCBAcmVzdWx0LCAkd2syUGxhdGZvcm0gaWYgZGVmaW5lZCAkd2syUGxhdGZvcm07CisgICAg
cHVzaCBAcmVzdWx0LCAkcGxhdGZvcm1IaWVyYXJjaHlbJCNwbGF0Zm9ybUhpZXJhcmNoeV0gaWYg
QHBsYXRmb3JtSGllcmFyY2h5ID49IDI7CisKICAgICBpZiAoJHZlcmJvc2UpIHsKICAgICAgICAg
bXkgQHNlYXJjaFBhdGhzOwogICAgICAgICBmb3JlYWNoIG15ICRzZWFyY2hQYXRoIChAcmVzdWx0
KSB7CkBAIC0yNTAzLDkgKzI0NDAsOSBAQCBzdWIgcmVhZFNraXBwZWRGaWxlcygkKQogICAgIG15
IEBza2lwcGVkRmlsZURpcmVjdG9yaWVzID0gQHBsYXRmb3JtVGVzdEhpZXJhcmNoeTsKIAogICAg
ICMgQmVjYXVzZSBuZWFybHkgYWxsIG9mIHRoZSBza2lwcGVkIHRlc3RzIGZvciBXZWJLaXQgMiBv
biBNYWMgYXJlIGR1ZSB0bwotICAgICMgY3Jvc3MtcGxhdGZvcm0gaXNzdWVzLCB0aGUgV2luZG93
cyBhbmQgUXQgcG9ydHMgdXNlIHRoZSBNYWMgc2tpcHBlZCBsaXN0CisgICAgIyBjcm9zcy1wbGF0
Zm9ybSBpc3N1ZXMsIHRoZSBXaW5kb3dzIHBvcnRzIHVzZSB0aGUgTWFjIHNraXBwZWQgbGlzdAog
ICAgICMgYWRkaXRpb25hbGx5IHRvIHRoZWlyIG93biB0byBhdm9pZCBtYWludGFpbmluZyBzZXBh
cmF0ZSBsaXN0cy4KLSAgICBwdXNoKEBza2lwcGVkRmlsZURpcmVjdG9yaWVzLCBjYXRkaXIoJHBs
YXRmb3JtQmFzZURpcmVjdG9yeSwgIndrMiIpKSBpZiAoJHBsYXRmb3JtIGVxICJ3aW4td2syIiB8
fCAkcGxhdGZvcm0gZXEgInF0LTUuMC13azIiIHx8ICRwbGF0Zm9ybSBlcSAibWFjLXdrMiIgfHwg
JHBsYXRmb3JtIGVxICJndGstd2syIik7CisgICAgcHVzaChAc2tpcHBlZEZpbGVEaXJlY3Rvcmll
cywgY2F0ZGlyKCRwbGF0Zm9ybUJhc2VEaXJlY3RvcnksICJ3azIiKSkgaWYgKCRwbGF0Zm9ybSBl
cSAid2luLXdrMiIgfHwgJHBsYXRmb3JtIGVxICJtYWMtd2syIiB8fCAkcGxhdGZvcm0gZXEgImd0
ay13azIiKTsKIAogICAgIGlmICgkdmVyYm9zZSkgewogICAgICAgICBmb3JlYWNoIG15ICRza2lw
cGVkUGF0aCAoQHNraXBwZWRGaWxlRGlyZWN0b3JpZXMpIHsKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLWxhdW5jaGVyCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLWxhdW5jaGVyCShy
ZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi1sYXVuY2hlcgkod29ya2luZyBj
b3B5KQpAQCAtMSw2ICsxLDYgQEAKICMhL3Vzci9iaW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAo
QykgMjAwNyBBcHBsZSBDb21wdXRlciwgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDEzIEFwcGxlIENvbXB1dGVyLCBJbmMuICBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDcgU3RhaWtvcyBDb21wdXRpbmcgU2VydmljZXMs
IEluYy4gIDxpbmZvQHN0YWlrb3MubmV0PgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKQEAgLTQ0LDQ3ICs0NCwy
NyBAQCBteSAkbGF1bmNoZXJQYXRoID0gcHJvZHVjdERpcigpOwogY2hlY2tGcmFtZXdvcmtzKCk7
CiAKICMgU2V0IHBhdGhzIGFjY29yZGluZyB0byB0aGUgYnVpbGQgc3lzdGVtIHVzZWQKLWlmIChp
c1F0KCkpIHsKLSAgICBteSAkbGliRGlyID0gY2F0ZGlyKHByb2R1Y3REaXIoKSwgJ2xpYicpOwor
aWYgKGlzR3RrKCkpIHsKICAgICBpZiAoaXNXSzIoKSkgewotICAgICAgICAkbGF1bmNoZXJQYXRo
ID0gY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJyb3dzZXIiKTsKKyAgICAgICAg
dW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJQcm9ncmFtcyIsICJNaW5pQnJv
d3NlciIpKTsKICAgICB9IGVsc2UgewotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKCRs
YXVuY2hlclBhdGgsICJiaW4iLCAiUXRUZXN0QnJvd3NlciIpOworICAgICAgICB1bnNoaWZ0KEBB
UkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0aCwgIlByb2dyYW1zIiwgIkd0a0xhdW5jaGVyIikpOwog
ICAgIH0KKyAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGlyKHNvdXJjZURpcigpLCAiVG9vbHMiLCAi
amhidWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKKyAgICB1bnNoaWZ0KEBBUkdWLCAoIi0tZ3Rr
IiwgInJ1biIpKTsKK30KIAotICAgICRFTlZ7UVRXRUJLSVRfUExVR0lOX1BBVEh9ID0gY2F0ZGly
KCRsaWJEaXIsICdwbHVnaW5zJyk7Ci0KLSAgICBwcmludCAiU3RhcnRpbmcgd2Via2l0IGxhdW5j
aGVyLCBydW5uaW5nIGFnYWluc3QgdGhlIGJ1aWx0IFdlYktpdCBpbiAkbGliRGlyLi4uXG4iOwot
ICAgIGlmIChpc0RhcndpbigpKSB7Ci0gICAgICAgICRFTlZ7RFlMRF9MSUJSQVJZX1BBVEh9ID0g
JEVOVntEWUxEX0xJQlJBUllfUEFUSH0gPyAiJGxpYkRpcjokRU5We0RZTERfTElCUkFSWV9QQVRI
fSIgOiAkbGliRGlyOwotICAgICAgICAkRU5We0RZTERfRlJBTUVXT1JLX1BBVEh9ID0gJEVOVntE
WUxEX0ZSQU1FV09SS19QQVRIfSA/ICIkbGliRGlyOiRFTlZ7RFlMRF9GUkFNRVdPUktfUEFUSH0i
IDogJGxpYkRpcjsKK2lmIChpc0VmbCgpKSB7CisgICAgaWYgKGlzV0syKCkpIHsKKyAgICAgICAg
dW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJyb3dzZXIi
KSk7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgJEVOVntMRF9MSUJSQVJZX1BBVEh9ID0gJEVOVntM
RF9MSUJSQVJZX1BBVEh9ID8gIiRsaWJEaXI6JEVOVntMRF9MSUJSQVJZX1BBVEh9IiA6ICRsaWJE
aXI7Ci0gICAgfQotfSBlbHNlIHsKLQotICAgIGlmIChpc0d0aygpKSB7Ci0gICAgICAgIGlmIChp
c1dLMigpKSB7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBBUkdWLCBjYXRkaXIoJGxhdW5jaGVyUGF0
aCwgIlByb2dyYW1zIiwgIk1pbmlCcm93c2VyIikpOwotICAgICAgICB9IGVsc2UgewotICAgICAg
ICAgICAgdW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJQcm9ncmFtcyIsICJH
dGtMYXVuY2hlciIpKTsKLSAgICAgICAgfQotICAgICAgICAkbGF1bmNoZXJQYXRoID0gY2F0ZGly
KHNvdXJjZURpcigpLCAiVG9vbHMiLCAiamhidWlsZCIsICJqaGJ1aWxkLXdyYXBwZXIiKTsKLSAg
ICAgICAgdW5zaGlmdChAQVJHViwgKCItLWd0ayIsICJydW4iKSk7CisgICAgICAgIHVuc2hpZnQo
QEFSR1YsIGNhdGRpcigkbGF1bmNoZXJQYXRoLCAiYmluIiwgIkVXZWJMYXVuY2hlciIpKTsKICAg
ICB9Ci0KLSAgICBpZiAoaXNFZmwoKSkgewotICAgICAgICBpZiAoaXNXSzIoKSkgewotICAgICAg
ICAgICAgdW5zaGlmdChAQVJHViwgY2F0ZGlyKCRsYXVuY2hlclBhdGgsICJiaW4iLCAiTWluaUJy
b3dzZXIiKSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB1bnNoaWZ0KEBBUkdWLCBj
YXRkaXIoJGxhdW5jaGVyUGF0aCwgImJpbiIsICJFV2ViTGF1bmNoZXIiKSk7Ci0gICAgICAgIH0K
LSAgICAgICAgJGxhdW5jaGVyUGF0aCA9IGNhdGRpcihzb3VyY2VEaXIoKSwgIlRvb2xzIiwgImpo
YnVpbGQiLCAiamhidWlsZC13cmFwcGVyIik7Ci0gICAgICAgIHVuc2hpZnQoQEFSR1YsICgiLS1l
ZmwiLCAicnVuIikpOwotICAgIH0KLQotICAgIHByaW50ICJTdGFydGluZyB3ZWJraXQgbGF1bmNo
ZXIuXG4iOworICAgICRsYXVuY2hlclBhdGggPSBjYXRkaXIoc291cmNlRGlyKCksICJUb29scyIs
ICJqaGJ1aWxkIiwgImpoYnVpbGQtd3JhcHBlciIpOworICAgIHVuc2hpZnQoQEFSR1YsICgiLS1l
ZmwiLCAicnVuIikpOwogfQogCitwcmludCAiU3RhcnRpbmcgd2Via2l0IGxhdW5jaGVyLlxuIjsK
KwogZXhlYyAkbGF1bmNoZXJQYXRoLCBAQVJHViBvciBkaWU7CiAKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvcnVuLXF0d2Via2l0LXRlc3RzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvcnVuLXF0
d2Via2l0LXRlc3RzCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3J1bi1xdHdl
YmtpdC10ZXN0cwkod29ya2luZyBjb3B5KQpAQCAtMSw0MzcgKzAsMCBAQAotIyEvdXNyL2Jpbi9l
bnYgcHl0aG9uCi0jIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQotCi0jQ29weXJpZ2h0IChDKSAyMDEw
IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVzKQotCi0jVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
I21vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVi
bGljCi0jTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlv
bjsgZWl0aGVyCi0jdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24p
IGFueSBsYXRlciB2ZXJzaW9uLgotCi0jVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZ
OyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSNNRVJDSEFOVEFCSUxJVFkg
b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotI0xpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0jWW91IHNob3Vs
ZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMg
TGljZW5zZQotI2Fsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0jdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5j
LiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSNCb3N0b24sIE1BIDAyMTEwLTEz
MDEsIFVTQS4KLQotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCi1pbXBv
cnQgc3lzCi1pbXBvcnQgb3MKLWltcG9ydCByZQotaW1wb3J0IGxvZ2dpbmcKLWZyb20gc3VicHJv
Y2VzcyBpbXBvcnQgUG9wZW4sIFBJUEUsIFNURE9VVAotZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0
aW9uUGFyc2VyCi0KLQotY2xhc3MgTG9nKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUpOgotICAgICAgICBzZWxmLl9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihuYW1lKQotICAg
ICAgICBzZWxmLmRlYnVnID0gc2VsZi5fbG9nLmRlYnVnCi0gICAgICAgIHNlbGYud2FybiA9IHNl
bGYuX2xvZy53YXJuCi0gICAgICAgIHNlbGYuZXJyb3IgPSBzZWxmLl9sb2cuZXJyb3IKLSAgICAg
ICAgc2VsZi5leGNlcHRpb24gPSBzZWxmLl9sb2cuZXhjZXB0aW9uCi0gICAgICAgIHNlbGYuaW5m
byA9IHNlbGYuX2xvZy5pbmZvCi0KLQotY2xhc3MgT3B0aW9ucyhMb2cpOgotICAgICIiIiBPcHRp
b24gbWFuYWdlci4gSXQgcGFyc2VzIGFuZCBjaGVja3Mgc2NyaXB0J3MgcGFyYW1ldGVycywgc2V0
cyBhbiBpbnRlcm5hbCB2YXJpYWJsZS4gIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgYXJn
cyk6Ci0gICAgICAgIExvZy5fX2luaXRfXyhzZWxmLCAiT3B0aW9ucyIpCi0gICAgICAgIGxvZyA9
IHNlbGYuX2xvZwotICAgICAgICBvcHQgPSBPcHRpb25QYXJzZXIoIiVwcm9nIFtvcHRpb25zXSBb
UGF0aFRvU2VhcmNoXS5cblRyeSAtaCBvciAtLWhlbHAuIikKLSAgICAgICAgb3B0LmFkZF9vcHRp
b24oIi1qIiwgIi0tcGFyYWxsZWwtbGV2ZWwiLCBhY3Rpb249InN0b3JlIiwgdHlwZT0iaW50IiwK
LSAgICAgICAgICAgICAgZGVzdD0icGFyYWxsZWxfbGV2ZWwiLCBkZWZhdWx0PU5vbmUsCi0gICAg
ICAgICAgICAgIGhlbHA9Ik51bWJlciBvZiBwYXJhbGxlbCBwcm9jZXNzZXMgZXhlY3V0aW5nIHRo
ZSBRdCdzIHRlc3RzLiBEZWZhdWx0OiBjcHUgY291bnQuIikKLSAgICAgICAgb3B0LmFkZF9vcHRp
b24oIi12IiwgIi0tdmVyYm9zZSIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJpbnQiLAotICAgICAg
ICAgICAgICBkZXN0PSJ2ZXJib3NlIiwgZGVmYXVsdD0yLAotICAgICAgICAgICAgICBoZWxwPSJW
ZXJib3NlIGxldmVsICgwIC0gcXVpZXQsIDEgLSBlcnJvcnMgb25seSwgMiAtIGluZm9zIGFuZCB3
YXJuaW5ncywgMyAtIGRlYnVnIGluZm9ybWF0aW9uKS4gRGVmYXVsdDogJWRlZmF1bHQuIikKLSAg
ICAgICAgb3B0LmFkZF9vcHRpb24oIiIsICItLXRlc3RzLW9wdGlvbnMiLCBhY3Rpb249InN0b3Jl
IiwgdHlwZT0ic3RyaW5nIiwKLSAgICAgICAgICAgICAgZGVzdD0idGVzdHNfb3B0aW9ucyIsIGRl
ZmF1bHQ9IiIsCi0gICAgICAgICAgICAgIGhlbHA9IlBhcmFtZXRlcnMgcGFzc2VkIHRvIFF0J3Mg
dGVzdHMgKGZvciBleGFtcGxlICctZXZlbnRkZWxheSAxMjMnKS4iKQotICAgICAgICBvcHQuYWRk
X29wdGlvbigiLW8iLCAiLS1vdXRwdXQtZmlsZSIsIGFjdGlvbj0ic3RvcmUiLCB0eXBlPSJzdHJp
bmciLAotICAgICAgICAgICAgICBkZXN0PSJvdXRwdXRfZmlsZSIsIGRlZmF1bHQ9Ii90bXAvcXR3
ZWJraXR0ZXN0cy5odG1sIiwKLSAgICAgICAgICAgICAgaGVscD0iRmlsZSB3aGVyZSByZXN1bHRz
IHdpbGwgYmUgc3RvcmVkLiBUaGUgZmlsZSB3aWxsIGJlIG92ZXJ3cml0dGVuLiBEZWZhdWx0OiAl
ZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLWIiLCAiLS1icm93c2VyIiwgYWN0
aW9uPSJzdG9yZSIsIGRlc3Q9ImJyb3dzZXIiLAotICAgICAgICAgICAgICBkZWZhdWx0PSJ4ZGct
b3BlbiIsCi0gICAgICAgICAgICAgIGhlbHA9IkJyb3dzZXIgaW4gd2hpY2ggcmVzdWx0cyB3aWxs
IGJlIG9wZW5lZC4gRGVmYXVsdCAlZGVmYXVsdC4iKQotICAgICAgICBvcHQuYWRkX29wdGlvbigi
IiwgIi0tZG8tbm90LW9wZW4tcmVzdWx0cyIsIGFjdGlvbj0ic3RvcmVfZmFsc2UiLAotICAgICAg
ICAgICAgICBkZXN0PSJvcGVuX3Jlc3VsdHMiLCBkZWZhdWx0PVRydWUsCi0gICAgICAgICAgICAg
IGhlbHA9IlRoZSByZXN1bHRzIHNob3VsZG4ndCBwb3AtdXAgaW4gYSBicm93c2VyIGF1dG9tYXRp
Y2FsbHkiKQotICAgICAgICBvcHQuYWRkX29wdGlvbigiLWQiLCAiLS1kZXZlbG9wZXItbW9kZSIs
IGFjdGlvbj0ic3RvcmVfdHJ1ZSIsCi0gICAgICAgICAgICAgIGRlc3Q9ImRldmVsb3BlciIsIGRl
ZmF1bHQ9RmFsc2UsCi0gICAgICAgICAgICAgIGhlbHA9IlNwZWNpYWwgbW9kZSBmb3IgZGVidWdn
aW5nLiBJbiBnZW5lcmFsIGl0IHNpbXVsYXRlcyBodW1hbiBiZWhhdmlvciwgcnVubmluZyBhbGwg
YXV0b3Rlc3RzLiBJbiB0aGUgbW9kZSBldmVyeXRoaW5nIGlzIGV4ZWN1dGVkIHN5bmNocm9ub3Vz
bHksIG5vIGh0bWwgb3V0cHV0IHdpbGwgYmUgZ2VuZXJhdGVkLCBubyBjaGFuZ2VzIG9yIHRyYW5z
Zm9ybWF0aW9uIHdpbGwgYmUgYXBwbGllZCB0byBzdGRlcnIgb3Igc3Rkb3V0LiBJbiB0aGlzIG1v
ZGUgb3B0aW9uczsgcGFyYWxsZWwtbGV2ZWwsIG91dHB1dC1maWxlLCBicm93c2VyIGFuZCBkby1u
b3Qtb3Blbi1yZXN1bHRzIHdpbGwgYmUgaWdub3JlZC4iKQotICAgICAgICBvcHQuYWRkX29wdGlv
bigiLXQiLCAiLS10aW1lb3V0IiwgYWN0aW9uPSJzdG9yZSIsIHR5cGU9ImludCIsCi0gICAgICAg
ICAgICAgIGRlc3Q9InRpbWVvdXQiLCBkZWZhdWx0PTAsCi0gICAgICAgICAgICAgIGhlbHA9IlRp
bWVvdXQgaW4gc2Vjb25kcyBmb3IgZWFjaCB0ZXN0c3VpdGUuIFplcm8gdmFsdWUgbWVhbnMgdGhh
dCB0aGVyZSBpcyBub3QgdGltZW91dC4gRGVmYXVsdDogJWRlZmF1bHQuIikKLSAgICAgICAgb3B0
LmFkZF9vcHRpb24oIi0tcmVsZWFzZSIsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGRlc3Q9InJlbGVh
c2UiLCBkZWZhdWx0PVRydWUsCi0gICAgICAgICAgICAgIGhlbHA9IlJ1biBBUEkgdGVzdHMgaW4g
V2ViS2l0QnVpbGQvUmVsZWFzZS8uLi4gZGlyZWN0b3J5LiBJdCBpcyBpZ25vcmVkIGlmIFBhdGhU
b1NlYXJjaCBpcyBwYXNzZWQuIikKLSAgICAgICAgb3B0LmFkZF9vcHRpb24oIi0tZGVidWciLCBh
Y3Rpb249InN0b3JlX2ZhbHNlIiwgZGVzdD0icmVsZWFzZSIsCi0gICAgICAgICAgICAgIGhlbHA9
IlJ1biBBUEkgdGVzdHMgaW4gV2ViS2l0QnVpbGQvRGVidWcvLi4uIGRpcmVjdG9yeS4gSXQgaXMg
aWdub3JlZCBpZiBQYXRoVG9TZWFyY2ggaXMgcGFzc2VkLiIpCi0gICAgICAgIG9wdC5hZGRfb3B0
aW9uKCItMiIsICItLXdlYmtpdDIiLCBhY3Rpb249InN0b3JlX3RydWUiLCBkZXN0PSJ3ZWJraXQy
IiwgZGVmYXVsdD1GYWxzZSwKLSAgICAgICAgICAgICAgaGVscD0iUnVuIFdlYktpdDIgQVBJIHRl
c3RzLiBEZWZhdWx0OiBSdW4gV2ViS2l0MSBBUEkgdGVzdHMuIEl0IGlzIGlnbm9yZWQgaWYgUGF0
aFRvU2VhcmNoIGlzIHBhc3NlZC4iKQotCi0gICAgICAgIHNlbGYuX28sIHNlbGYuX2EgPSBvcHQu
cGFyc2VfYXJncyhhcmdzKQotICAgICAgICB2ZXJib3NlID0gc2VsZi5fby52ZXJib3NlCi0gICAg
ICAgIGlmIHZlcmJvc2UgPT0gMDoKLSAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2
ZWw9bG9nZ2luZy5DUklUSUNBTCwpCi0gICAgICAgIGVsaWYgdmVyYm9zZSA9PSAxOgotICAgICAg
ICAgICAgbG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkVSUk9SLCkKLSAgICAgICAg
ZWxpZiB2ZXJib3NlID09IDI6Ci0gICAgICAgICAgICBsb2dnaW5nLmJhc2ljQ29uZmlnKGxldmVs
PWxvZ2dpbmcuSU5GTywpCi0gICAgICAgIGVsaWYgdmVyYm9zZSA9PSAzOgotICAgICAgICAgICAg
bG9nZ2luZy5iYXNpY0NvbmZpZyhsZXZlbD1sb2dnaW5nLkRFQlVHLCkKLSAgICAgICAgZWxzZToK
LSAgICAgICAgICAgIGxvZ2dpbmcuYmFzaWNDb25maWcobGV2ZWw9bG9nZ2luZy5JTkZPLCkKLSAg
ICAgICAgICAgIGxvZy53YXJuKCJCYWQgdmVyYm9zZSBsZXZlbCwgc3dpdGNoaW5nIHRvIGRlZmF1
bHQuIikKLQotICAgICAgICBpZiBzZWxmLl9vLnJlbGVhc2U6Ci0gICAgICAgICAgICBjb25maWd1
cmF0aW9uID0gIlJlbGVhc2UiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBjb25maWd1cmF0
aW9uID0gIkRlYnVnIgotCi0gICAgICAgIGlmIHNlbGYuX28ud2Via2l0MjoKLSAgICAgICAgICAg
IHRlc3RfZGlyZWN0b3J5ID0gIldlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy8iCi0gICAg
ICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0X2RpcmVjdG9yeSA9ICJXZWJLaXQvcXQvdGVzdHMv
IgotCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIGxlbihzZWxmLl9hKSA9PSAwOgotICAg
ICAgICAgICAgICAgIHNlbGYuX28ucGF0aCA9ICJXZWJLaXRCdWlsZC8lcy9Tb3VyY2UvJXMiICUg
KGNvbmZpZ3VyYXRpb24sIHRlc3RfZGlyZWN0b3J5KQotICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBpZiBsZW4oc2VsZi5fYSkgPiAxOgotICAgICAgICAgICAgICAgICAgICByYWlz
ZSBJbmRleEVycm9yKCJPbmx5IG9uZSBkaXJlY3Rvcnkgc2hvdWxkIGJlIHByb3ZpZGVkLiIpCi0g
ICAgICAgICAgICAgICAgc2VsZi5fby5wYXRoID0gc2VsZi5fYVswXQotCi0gICAgICAgICAgICBp
ZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5fby5wYXRoKToKLSAgICAgICAgICAgICAgICByYWlz
ZSBFeGNlcHRpb24oIkdpdmVuIHBhdGggZG9lc24ndCBleGlzdC4iKQotICAgICAgICBleGNlcHQg
SW5kZXhFcnJvcjoKLSAgICAgICAgICAgIGxvZy5lcnJvcigiQmFkIHVzYWdlLiBQbGVhc2UgdHJ5
IC1oIG9yIC0taGVscC4iKQotICAgICAgICAgICAgc3lzLmV4aXQoMSkKLSAgICAgICAgZXhjZXB0
IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgIGxvZy5lcnJvcigiUGF0aCAnJXMnIGRvZXNuJ3QgZXhp
c3QiLCBzZWxmLl9vLnBhdGgpCi0gICAgICAgICAgICBzeXMuZXhpdCgyKQotCi0gICAgICAgIGlm
IHNlbGYuX28uZGV2ZWxvcGVyOgotICAgICAgICAgICAgaWYgbm90IHNlbGYuX28ucGFyYWxsZWxf
bGV2ZWwgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBsb2cud2FybigiRGV2ZWxvcGVyIG1vZGUg
c2V0cyBwYXJhbGxlbC1sZXZlbCBvcHRpb24gdG8gb25lLiIpCi0gICAgICAgICAgICBzZWxmLl9v
LnBhcmFsbGVsX2xldmVsID0gMQotICAgICAgICAgICAgc2VsZi5fby5vcGVuX3Jlc3VsdHMgPSBG
YWxzZQotCi0gICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIGF0dHIpOgotICAgICAgICAiIiIgTWFw
cyBhbGwgb3B0aW9ucyBwcm9wZXJ0aWVzIGludG8gdGhpcyBvYmplY3QgKHJlbW92ZSBvbmUgbGV2
ZWwgb2YgaW5kaXJlY3Rpb24pLiAiIiIKLSAgICAgICAgcmV0dXJuIGdldGF0dHIoc2VsZi5fbywg
YXR0cikKLQotCi1kZWYgcnVuX3Rlc3QoYXJncyk6Ci0gICAgIiIiIFJ1bnMgb25lIGdpdmVuIHRl
c3QuCi0gICAgYXJncyBzaG91bGQgY29udGFpbiBhIHR1cGxlIHdpdGggMyBlbGVtZW50czsKLSAg
ICAgIFRlc3RTdWl0ZVJlc3VsdCBjb250YWluaW5nIGZ1bGwgZmlsZSBuYW1lIG9mIGFuIGF1dG90
ZXN0IGV4ZWN1dGFibGUuCi0gICAgICBzdHIgd2l0aCBvcHRpb25zIHRoYXQgc2hvdWxkIGJlIHBh
c3NlZCB0byB0aGUgYXV0b3Rlc3QgZXhlY3V0YWJsZQotICAgICAgYm9vbCBpZiB0cnVlIHRoZW4g
dGhlIHN0ZG91dCB3aWxsIGJlIGJ1ZmZlcmVkIGFuZCBzZXBhcmF0ZWQgZnJvbSB0aGUgc3RkZXJy
LCBpZiBpdCBpcyBmYWxzZQotICAgICAgICB0aGVuIHRoZSBzdGRvdXQgYW5kIHRoZSBzdGRlcnIg
d2lsbCBiZSBtZXJnZWQgdG9nZXRoZXIgYW5kIGxlZnQgdW5idWZmZXJlZCAodGhlIFRlc3RTdWl0
ZVJlc3VsdCBvdXRwdXQgd2lsbCBiZSBOb25lKS4KLSAgICAgIGludCB0aW1lIGFmdGVyIHdoaWNo
IHRoZSBhdXRvdGVzdCBleGVjdXRhYmxlIHdvdWxkIGJlIGtpbGxlZAotICAgICIiIgotICAgIGxv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJFeGVjIikKLSAgICB0ZXN0X3N1aXRlLCBvcHRpb25zLCBi
dWZmZXJlZCwgdGltZW91dCA9IGFyZ3MKLSAgICB0aW1lciA9IE5vbmUKLSAgICB0cnk6Ci0gICAg
ICAgIGxvZy5pbmZvKCJSdW5uaW5nLi4uICVzIiwgdGVzdF9zdWl0ZS50ZXN0X2ZpbGVfbmFtZSgp
KQotICAgICAgICBpZiBidWZmZXJlZDoKLSAgICAgICAgICAgIHRzdCA9IFBvcGVuKFt0ZXN0X3N1
aXRlLnRlc3RfZmlsZV9uYW1lKCldICsgb3B0aW9ucy5zcGxpdCgpLCBzdGRvdXQ9UElQRSwgc3Rk
ZXJyPU5vbmUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0c3QgPSBQb3BlbihbdGVzdF9z
dWl0ZS50ZXN0X2ZpbGVfbmFtZSgpXSArIG9wdGlvbnMuc3BsaXQoKSwgc3Rkb3V0PU5vbmUsIHN0
ZGVycj1TVERPVVQpCi0gICAgICAgIGlmIHRpbWVvdXQ6Ci0gICAgICAgICAgICBmcm9tIHRocmVh
ZGluZyBpbXBvcnQgVGltZXIKLSAgICAgICAgICAgIGxvZy5kZWJ1ZygiU2V0dGluZyB0aW1lb3V0
IHRpbWVyICVpIHNlYyBvbiAlcyAocHJvY2VzcyAlcykiLCB0aW1lb3V0LCB0ZXN0X3N1aXRlLnRl
c3RfZmlsZV9uYW1lKCksIHRzdC5waWQpCi0gICAgICAgICAgICBkZWYgcHJvY2Vzc19raWxsZXIo
KToKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHRzdC50ZXJtaW5hdGUoKQotICAgICAgICAgICAgICAgICAgICBl
eGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIFdvcmthcm91
bmQgZm9yIHB5dGhvbiB2ZXJzaW9uIDwgMi42IGl0IGNhbiBiZSByZW1vdmVkIGFzIHNvb24gYXMg
d2UgZHJvcCBzdXBwb3J0IGZvciBweXRob24yLjUKLSAgICAgICAgICAgICAgICAgICAgICAgIHRy
eToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgY3R5cGVzCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUFJPQ0VTU19URVJNSU5BVEUgPSAxCi0gICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaGFuZGxlID0gY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5PcGVuUHJvY2VzcyhQ
Uk9DRVNTX1RFUk1JTkFURSwgRmFsc2UsIHRzdC5waWQpCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5UZXJtaW5hdGVQcm9jZXNzKGhhbmRsZSwgLTEp
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY3R5cGVzLndpbmRsbC5rZXJuZWwzMi5DbG9z
ZUhhbmRsZShoYW5kbGUpCi0gICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRl
RXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB3aW5kbGwgaXMgbm90IGFjY2Vz
c2libGUgc28gd2UgYXJlIG9uICpuaXggbGlrZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpbXBvcnQgc2lnbmFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Mua2ls
bCh0c3QucGlkLCBzaWduYWwuU0lHVEVSTSkKLSAgICAgICAgICAgICAgICAgICAgbG9nLmVycm9y
KCJUaW1lb3V0LCBwcm9jZXNzICclcycgKCVpKSB3YXMgdGVybWluYXRlZCIsIHRlc3Rfc3VpdGUu
dGVzdF9maWxlX25hbWUoKSwgdHN0LnBpZCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJv
ciwgZToKLSAgICAgICAgICAgICAgICAgICAgIyB0aGUgcHJvY2VzcyB3YXMgZmluaXNoZWQgYmVm
b3JlIGdvdCBraWxsZWQKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdGlt
ZXIgPSBUaW1lcih0aW1lb3V0LCBwcm9jZXNzX2tpbGxlcikKLSAgICAgICAgICAgIHRpbWVyLnN0
YXJ0KCkKLSAgICBleGNlcHQgT1NFcnJvciwgZToKLSAgICAgICAgbG9nLmV4Y2VwdGlvbigiQ2Fu
J3Qgb3BlbiBhbiBhdXRvdGVzdCBmaWxlOiAnJXMnLiBTa2lwcGluZyB0aGUgdGVzdC4uLiIsIGUu
ZmlsZW5hbWUpCi0gICAgZWxzZToKLSAgICAgICAgdGVzdF9zdWl0ZS5zZXRfb3V0cHV0KHRzdC5j
b21tdW5pY2F0ZSgpWzBdKSAgIyB0YWtlcyBzdGRvdXQgb25seSwgaW4gZGV2ZWxvcGVyIG1vZGUg
aXQgd291bGQgYmUgTm9uZS4KLSAgICBsb2cuaW5mbygiRmluaXNoZWQgJXMiLCB0ZXN0X3N1aXRl
LnRlc3RfZmlsZV9uYW1lKCkpCi0gICAgaWYgdGltZW91dDoKLSAgICAgICAgdGltZXIuY2FuY2Vs
KCkKLSAgICByZXR1cm4gdGVzdF9zdWl0ZQotCi0KLWNsYXNzIFRlc3RTdWl0ZVJlc3VsdChvYmpl
Y3QpOgotICAgICIiIiBLZWVwcyBpbmZvcm1hdGlvbiBhYm91dCBhIHRlc3QuICIiIgotCi0gICAg
ZGVmIF9faW5pdF9fKHNlbGYpOgotICAgICAgICBzZWxmLl9vdXRwdXQgPSBOb25lCi0gICAgICAg
IHNlbGYuX3Rlc3RfZmlsZV9uYW1lID0gTm9uZQotCi0gICAgZGVmIHNldF9vdXRwdXQoc2VsZiwg
eG1sKToKLSAgICAgICAgaWYgeG1sOgotICAgICAgICAgICAgc2VsZi5fb3V0cHV0ID0geG1sLnN0
cmlwKCkKLQotICAgIGRlZiBvdXRwdXQoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZWxmLl9vdXRw
dXQKLQotICAgIGRlZiBzZXRfdGVzdF9maWxlX25hbWUoc2VsZiwgZmlsZV9uYW1lKToKLSAgICAg
ICAgc2VsZi5fdGVzdF9maWxlX25hbWUgPSBmaWxlX25hbWUKLQotICAgIGRlZiB0ZXN0X2ZpbGVf
bmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX3Rlc3RfZmlsZV9uYW1lCi0KLQotY2xh
c3MgTWFpbihMb2cpOgotICAgICIiIiBUaGUgbWFpbiBzY3JpcHQuIEFsbCByZWFsIHdvcmsgaXMg
ZG9uZSBpbiBydW4oKSBtZXRob2QuICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9wdGlv
bnMpOgotICAgICAgICBMb2cuX19pbml0X18oc2VsZiwgIk1haW4iKQotICAgICAgICBzZWxmLl9v
cHRpb25zID0gb3B0aW9ucwotICAgICAgICBpZiBvcHRpb25zLnBhcmFsbGVsX2xldmVsID4gMSBv
ciBvcHRpb25zLnBhcmFsbGVsX2xldmVsIGlzIE5vbmU6Ci0gICAgICAgICAgICB0cnk6Ci0gICAg
ICAgICAgICAgICAgZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFBvb2wKLSAgICAgICAgICAg
IGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgICAgICBzZWxmLndhcm4oIkltcG9ydCBF
cnJvcjogdGhlIG11bHRpcHJvY2Vzc2luZyBtb2R1bGUgY291bGRuJ3QgYmUgbG9hZGVkIChtYXkg
YmUgbGFjayBvZiBweXRob24tbXVsdGlwcm9jZXNzaW5nIHBhY2thZ2U/KS4gVGhlIFF0IGF1dG90
ZXN0cyB3aWxsIGJlIGV4ZWN1dGVkIG9uZSBieSBvbmUuIikKLSAgICAgICAgICAgICAgICBvcHRp
b25zLnBhcmFsbGVsX2xldmVsID0gMQotICAgICAgICBpZiBvcHRpb25zLnBhcmFsbGVsX2xldmVs
ID09IDE6Ci0KLSAgICAgICAgICAgIGNsYXNzIFBvb2wob2JqZWN0KToKLSAgICAgICAgICAgICAg
ICAiIiIgQSBoYWNrLCBjcmVhdGVkIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggbXVsdGlwcm9jZXNz
aW5nIG1vZHVsZSwgdGhpcyBjbGFzcyBpcyBzaW5nbGUgdGhyZWFkIHJlcGxhY2VtZW50IGZvciB0
aGUgbXVsdGlwcm9jZXNzaW5nLlBvb2wgY2xhc3MuICIiIgotICAgICAgICAgICAgICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwcm9jZXNzZXMpOgotICAgICAgICAgICAgICAgICAgICBwYXNzCi0KLSAg
ICAgICAgICAgICAgICBkZWYgaW1hcF91bm9yZGVyZWQoc2VsZiwgZnVuYywgZmlsZXMpOgotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbWFwKGZ1bmMsIGZpbGVzKQotCi0gICAgICAgICAgICAg
ICAgZGVmIG1hcChzZWxmLCBmdW5jLCBmaWxlcyk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVy
biBtYXAoZnVuYywgZmlsZXMpCi0KLSAgICAgICAgc2VsZi5fUG9vbCA9IFBvb2wKLQotICAgIGRl
ZiBydW4oc2VsZik6Ci0gICAgICAgICIiIiBGaW5kICYmIGV4ZWN1dGUgJiYgcHVibGlzaCByZXN1
bHRzIG9mIGFsbCB0ZXN0LiAiQWxsIGluIG9uZSIgZnVuY3Rpb24uICIiIgotICAgICAgICAjIFRo
aXMgaXMgbmVlZGVkIGZvciBRdCBmaW5kaW5nIG91ciBRTUwgbW9kdWxlcy4gVGhlIGN1cnJlbnQg
Y29kZSBtYWtlcyBvdXIKLSAgICAgICAgIyB0d28gZXhpc3RpbmcgQVBJIHRlc3RzIChXSzEgQVBJ
IGFuZCBXSzIgVUkgcHJvY2VzcyBBUEkpIHdvcmsgY29ycmVjdGx5LgotICAgICAgICBxbWxfaW1w
b3J0X3BhdGggPSBzZWxmLl9vcHRpb25zLnBhdGggKyAiLi4vLi4vLi4vLi4vaW1wb3J0cyIKLSAg
ICAgICAgcW1sX2ltcG9ydF9wYXRoICs9ICI6IiArIHNlbGYuX29wdGlvbnMucGF0aCArICIuLi8u
Li8uLi8uLi8uLi8uLi9pbXBvcnRzIgotICAgICAgICBvcy5wdXRlbnYoIlFNTF9JTVBPUlRfUEFU
SCIsIHFtbF9pbXBvcnRfcGF0aCkKLSAgICAgICAgcGF0aCA9IG9zLmdldGVudigiUEFUSCIpCi0g
ICAgICAgIHBhdGggKz0gIjoiICsgc2VsZi5fb3B0aW9ucy5wYXRoICsgIi4uLy4uLy4uLy4uLy4u
Ly4uL2JpbiIKLSAgICAgICAgb3MucHV0ZW52KCJQQVRIIiwgcGF0aCkKLSAgICAgICAgc2VsZi5k
ZWJ1ZygiU2VhcmNoaW5nIGV4ZWN1dGFibGVzLi4uIikKLSAgICAgICAgdGVzdHNfZXhlY3V0YWJs
ZXMgPSBzZWxmLmZpbmRfdGVzdHNfcGF0aHMoc2VsZi5fb3B0aW9ucy5wYXRoKQotICAgICAgICBz
ZWxmLmRlYnVnKCJGb3VuZDogJXMiLCBsZW4odGVzdHNfZXhlY3V0YWJsZXMpKQotICAgICAgICBz
ZWxmLmRlYnVnKCJFeGVjdXRpbmcgdGVzdHMuLi4iKQotICAgICAgICByZXN1bHRzID0gc2VsZi5y
dW5fdGVzdHModGVzdHNfZXhlY3V0YWJsZXMpCi0gICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25z
LmRldmVsb3BlcjoKLSAgICAgICAgICAgIHNlbGYuZGVidWcoIlRyYW5zZm9ybWluZy4uLiIpCi0g
ICAgICAgICAgICB0cmFuc2Zvcm1lZF9yZXN1bHRzID0gc2VsZi50cmFuc2Zvcm0ocmVzdWx0cykK
LSAgICAgICAgICAgIHNlbGYuZGVidWcoIlB1Ymxpc2hpbmcuLi4iKQotICAgICAgICAgICAgc2Vs
Zi5hbm5vdW5jZV9yZXN1bHRzKHRyYW5zZm9ybWVkX3Jlc3VsdHMpCi0KLSAgICBkZWYgZmluZF90
ZXN0c19wYXRocyhzZWxmLCBwYXRoKToKLSAgICAgICAgIiIiIEZpbmRzIGFsbCB0ZXN0cyBleGVj
dXRhYmxlcyBpbnNpZGUgdGhlIGdpdmVuIHBhdGguICIiIgotICAgICAgICBleGVjdXRhYmxlcyA9
IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHBhdGgpOgotICAg
ICAgICAgICAgIyBDaGVjayBvbmx5IGZvciBhIGZpbGUgdGhhdCBuYW1lIHN0YXJ0cyBmcm9tICd0
c3RfJyBhbmQgdGhhdCB3ZSBjYW4gZXhlY3V0ZS4KLSAgICAgICAgICAgIGZpbHRlcmVkX3BhdGgg
PSBmaWx0ZXIobGFtYmRhIHc6IHcuc3RhcnRzd2l0aCgndHN0XycpIGFuZCBvcy5hY2Nlc3Mob3Mu
cGF0aC5qb2luKHJvb3QsIHcpLCBvcy5YX09LKSwgZmlsZXMpCi0gICAgICAgICAgICBmaWx0ZXJl
ZF9wYXRoID0gbWFwKGxhbWJkYSB3OiBvcy5wYXRoLmpvaW4ocm9vdCwgdyksIGZpbHRlcmVkX3Bh
dGgpCi0gICAgICAgICAgICBmb3IgZmlsZV9uYW1lIGluIGZpbHRlcmVkX3BhdGg6Ci0gICAgICAg
ICAgICAgICAgciA9IFRlc3RTdWl0ZVJlc3VsdCgpCi0gICAgICAgICAgICAgICAgci5zZXRfdGVz
dF9maWxlX25hbWUoZmlsZV9uYW1lKQotICAgICAgICAgICAgICAgIGV4ZWN1dGFibGVzLmFwcGVu
ZChyKQotICAgICAgICByZXR1cm4gZXhlY3V0YWJsZXMKLQotICAgIGRlZiBydW5fdGVzdHMoc2Vs
ZiwgZmlsZXMpOgotICAgICAgICAiIiIgRXhlY3V0ZXMgZ2l2ZW4gZmlsZXMgYnkgdXNpbmcgYSBw
b29sIG9mIHdvcmtlcnMuICIiIgotICAgICAgICB3b3JrZXJzID0gc2VsZi5fUG9vbChwcm9jZXNz
ZXM9c2VsZi5fb3B0aW9ucy5wYXJhbGxlbF9sZXZlbCkKLSAgICAgICAgIyB0byBlYWNoIGZpbGUg
YWRkIG9wdGlvbnMuCi0gICAgICAgIHNlbGYuZGVidWcoIlVzaW5nICVzIHRoZSB3b3JrZXJzIHBv
b2wsIG51bWJlciBvZiB3b3JrZXJzICVpIiwgcmVwcih3b3JrZXJzKSwgc2VsZi5fb3B0aW9ucy5w
YXJhbGxlbF9sZXZlbCkKLSAgICAgICAgcGFja2FnZSA9IG1hcChsYW1iZGEgdzogW3csIHNlbGYu
X29wdGlvbnMudGVzdHNfb3B0aW9ucywgbm90IHNlbGYuX29wdGlvbnMuZGV2ZWxvcGVyLCBzZWxm
Ll9vcHRpb25zLnRpbWVvdXRdLCBmaWxlcykKLSAgICAgICAgc2VsZi5kZWJ1ZygiR2VuZXJhdGVk
IHBhY2thZ2VzIGZvciB3b3JrZXJzOiAlcyIsIHJlcHIocGFja2FnZSkpCi0gICAgICAgIHJlc3Vs
dHMgPSB3b3JrZXJzLm1hcChydW5fdGVzdCwgcGFja2FnZSkgICMgQ29sbGVjdHMgcmVzdWx0cy4K
LSAgICAgICAgcmV0dXJuIHJlc3VsdHMKLQotICAgIGRlZiB0cmFuc2Zvcm0oc2VsZiwgcmVzdWx0
cyk6Ci0gICAgICAgICIiIiBUcmFuc2Zvcm1zIGxpc3Qgb2YgdGhlIHJlc3VsdHMgdG8gc3BlY2lh
bGl6ZWQgdmVyc2lvbnMuICIiIgotICAgICAgICBzdGRvdXQgPSBzZWxmLmNvbnZlcnRfdG9fc3Rk
b3V0KHJlc3VsdHMpCi0gICAgICAgIGh0bWwgPSBzZWxmLmNvbnZlcnRfdG9faHRtbChyZXN1bHRz
KQotICAgICAgICByZXR1cm4geyJzdGRvdXQiOiBzdGRvdXQsICJodG1sIjogaHRtbH0KLQotICAg
IGRlZiBhbm5vdW5jZV9yZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgotICAgICAgICAiIiIgU2hvd3Mg
dGhlIHJlc3VsdHMuICIiIgotICAgICAgICBzZWxmLmFubm91bmNlX3Jlc3VsdHNfc3Rkb3V0KHJl
c3VsdHNbJ3N0ZG91dCddKQotICAgICAgICBzZWxmLmFubm91bmNlX3Jlc3VsdHNfaHRtbChyZXN1
bHRzWydodG1sJ10pCi0KLSAgICBkZWYgYW5ub3VuY2VfcmVzdWx0c19zdGRvdXQoc2VsZiwgcmVz
dWx0cyk6Ci0gICAgICAgICIiIiBTaG93IHRoZSByZXN1bHRzIGJ5IHByaW50aW5nIHRvIHRoZSBz
dGRvdXQuIiIiCi0gICAgICAgIHByaW50KHJlc3VsdHMpCi0KLSAgICBkZWYgYW5ub3VuY2VfcmVz
dWx0c19odG1sKHNlbGYsIHJlc3VsdHMpOgotICAgICAgICAiIiIgU2hvd3MgdGhlIHJlc3VsdCBi
eSBjcmVhdGluZyBhIGh0bWwgZmlsZSBhbmQgY2FsbGluZyBhIHdlYiBicm93c2VyIHRvIHJlbmRl
ciBpdC4gIiIiCi0gICAgICAgIHdpdGggZmlsZShzZWxmLl9vcHRpb25zLm91dHB1dF9maWxlLCAn
dycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKHJlc3VsdHMpCi0gICAgICAgIGlmIHNlbGYu
X29wdGlvbnMub3Blbl9yZXN1bHRzOgotICAgICAgICAgICAgUG9wZW4oc2VsZi5fb3B0aW9ucy5i
cm93c2VyICsgIiAiICsgc2VsZi5fb3B0aW9ucy5vdXRwdXRfZmlsZSwgc3Rkb3V0PU5vbmUsIHN0
ZGVycj1Ob25lLCBzaGVsbD1UcnVlKQotCi0gICAgZGVmIGNoZWNrX2NyYXNoX29jY3VyZW5jZXMo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIiIiBDaGVja3MgaWYgYW55IHRlc3QgY3Jhc2hlcyBh
bmQgaXQgc3VtcyB0aGVtICAiIiIKLSAgICAgICAgdG90YWxzID0gWzAsMCwwXQotICAgICAgICBj
cmFzaF9jb3VudCA9IDAKLSAgICAgICAgdHh0ID0gW10KLSAgICAgICAgI2NvbGxlY3RpbmcgcmVz
dWx0cyBpbnRvIG9uZSBjb250YWluZXIgd2l0aCBjaGVja2luZyBjcmFzaAotICAgICAgICBmb3Ig
cmVzdWx0IGluIHJlc3VsdHM6Ci0gICAgICAgICAgICBmb3VuZCA9IE5vbmUKLSAgICAgICAgICAg
IGlmIHJlc3VsdC5vdXRwdXQoKToKLSAgICAgICAgICAgICAgICB0eHQuYXBwZW5kKHJlc3VsdC5v
dXRwdXQoKSkKLSAgICAgICAgICAgICAgICBmb3VuZCA9IHJlLnNlYXJjaChyIihbMC05XSspIHBh
c3NlZCwgKFswLTldKykgZmFpbGVkLCAoWzAtOV0rKSBza2lwcGVkIiwgcmVzdWx0Lm91dHB1dCgp
KQotCi0gICAgICAgICAgICBpZiBmb3VuZDoKLSAgICAgICAgICAgICAgICB0b3RhbHMgPSByZWR1
Y2UobGFtYmRhIHgsIHk6IChpbnQoeFswXSkgKyBpbnQoeVswXSksIGludCh4WzFdKSArIGludCh5
WzFdKSwgaW50KHhbMl0pICsgaW50KHlbMl0pKSwgKHRvdGFscywgZm91bmQuZ3JvdXBzKCkpKQot
ICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICB0eHQuYXBwZW5kKCdDUkFTSEVEOiAl
cycgJSByZXN1bHQudGVzdF9maWxlX25hbWUoKSkKLSAgICAgICAgICAgICAgICBjcmFzaF9jb3Vu
dCArPSAxCi0gICAgICAgICAgICAgICAgc2VsZi53YXJuKCJNaXNzaW5nIHN1Yi1zdW1tYXJ5OiAl
cyIgJSByZXN1bHQudGVzdF9maWxlX25hbWUoKSkKLQotICAgICAgICB0eHQ9J1xuXG4nLmpvaW4o
dHh0KQotCi0gICAgICAgIHRvdGFscyA9IGxpc3QodG90YWxzKQotICAgICAgICB0b3RhbHMuYXBw
ZW5kKGNyYXNoX2NvdW50KQotICAgICAgICB0b3RhbHMgPSBtYXAoc3RyLCB0b3RhbHMpCi0gICAg
ICAgIHJldHVybiB0eHQsIHRvdGFscwotCi0gICAgZGVmIGNvbnZlcnRfdG9fc3Rkb3V0KHNlbGYs
IHJlc3VsdHMpOgotICAgICAgICAiIiIgQ29udmVydHMgcmVzdWx0cywgdGhhdCB0aGV5IGNvdWxk
IGJlIG5pY2VseSBwcmVzZW50ZWQgaW4gdGhlIHN0ZG91dC4gIiIiCi0gICAgICAgIHR4dCwgdG90
YWxzID0gc2VsZi5jaGVja19jcmFzaF9vY2N1cmVuY2VzKHJlc3VsdHMpCi0KLSAgICAgICAgdG90
YWxzID0gIiVzIHBhc3NlZCwgJXMgZmFpbGVkLCAlcyBza2lwcGVkLCAlcyBjcmFzaGVkIiAlICh0
b3RhbHNbMF0sIHRvdGFsc1sxXSwgdG90YWxzWzJdLCB0b3RhbHNbM10pCi0KLSAgICAgICAgdHh0
ICs9ICdcbicgKyAnKicgKiA3MAotICAgICAgICB0eHQgKz0gIlxuKioiICsgKCJUT1RBTFM6ICIg
KyB0b3RhbHMpLmNlbnRlcig2NikgKyAnKionCi0gICAgICAgIHR4dCArPSAnXG4nICsgJyonICog
NzAgKyAnXG4nCi0gICAgICAgIHJldHVybiB0eHQKLQotICAgIGRlZiBjb252ZXJ0X3RvX2h0bWwo
c2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgICIiIiBDb252ZXJ0cyByZXN1bHRzLCB0aGF0IHRoZXkg
Y291bGQgc2hvd2VkIGFzIGEgaHRtbCBwYWdlLiAiIiIKLSAgICAgICAgdHh0LCB0b3RhbHMgPSBz
ZWxmLmNoZWNrX2NyYXNoX29jY3VyZW5jZXMocmVzdWx0cykKLSAgICAgICAgdHh0ID0gdHh0LnJl
cGxhY2UoJyYnLCAnJmFtcDsnKS5yZXBsYWNlKCc8JywgIiZsdDsiKS5yZXBsYWNlKCc+JywgIiZn
dDsiKQotICAgICAgICAjIEFkZCBhIGNvbG9yIGFuZCBhIHN0eWxlLgotICAgICAgICB0eHQgPSBy
ZS5zdWIociIoWyogXSsoRmluaXNoZWQpWyBhLXpfQS1aMC05XStbKl0rKSIsCi0gICAgICAgICAg
ICBsYW1iZGEgdzogciIiLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIo
ciIoWypdK1sgYS16X0EtWjAtOV0rWypdKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8Y2Fz
ZSBjbGFzcz0nZ29vZCc+PGJyPjxicj48Yj4iICsgdy5ncm91cCgwKSArIHIiPC9iPjwvY2FzZT4i
LAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociIoQ29uZmlnOiBVc2lu
ZyBRVGVzdCBsaWJyYXJ5KSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIlxuPGNhc2Ug
Y2xhc3M9J2dvb2QnPjxicj48aT4iICsgdy5ncm91cCgwKSArIHIiPC9pPiAgIiwKLSAgICAgICAg
ICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oUEFTUykoKC4pKykiLAotICAgICAg
ICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0dXMg
Y2xhc3M9J3Bhc3MnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwK
LSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oRkFJTCEpKCguKSsp
IiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2UgY2xhc3M9J2JhZCc+PGJy
PjxzdGF0dXMgY2xhc3M9J2ZhaWwnPiIgKyB3Lmdyb3VwKDEpICsgciI8L3N0YXR1cz4iICsgdy5n
cm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0ID0gcmUuc3ViKHIiXG4oWFBB
U1MpKCguKSspIiwKLSAgICAgICAgICAgIGxhbWJkYSB3OiAiPC9jYXNlPlxuPGNhc2UgY2xhc3M9
J2JhZCc+PGJyPjxzdGF0dXMgY2xhc3M9J3hwYXNzJz4iICsgdy5ncm91cCgxKSArIHIiPC9zdGF0
dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAgICAgICB0eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1
YihyIlxuKFhGQUlMKSgoLikrKSIsCi0gICAgICAgICAgICBsYW1iZGEgdzogIjwvY2FzZT5cbjxj
YXNlIGNsYXNzPSdnb29kJz48YnI+PHN0YXR1cyBjbGFzcz0neGZhaWwnPiIgKyB3Lmdyb3VwKDEp
ICsgciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAg
dHh0ID0gcmUuc3ViKHIiXG4oU0tJUCkoKC4pKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8
L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0dXMgY2xhc3M9J3hmYWlsJz4iICsg
dy5ncm91cCgxKSArIHIiPC9zdGF0dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAgICAgICB0eHQp
Ci0gICAgICAgIHR4dCA9IHJlLnN1YihyIlxuKFFXQVJOKSgoLikrKSIsCi0gICAgICAgICAgICBs
YW1iZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdiYWQnPjxicj48c3RhdHVzIGNsYXNzPSd3
YXJuJz4iICsgdy5ncm91cCgxKSArIHIiPC9zdGF0dXM+IiArIHcuZ3JvdXAoMiksCi0gICAgICAg
ICAgICB0eHQpCi0gICAgICAgIHR4dCA9IHJlLnN1YihyIlxuKFJFU1VMVCkoKC4pKykiLAotICAg
ICAgICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2FzZSBjbGFzcz0nZ29vZCc+PGJyPjxzdGF0
dXMgY2xhc3M9J2JlbmNobWFyayc+IiArIHcuZ3JvdXAoMSkgKyByIjwvc3RhdHVzPiIgKyB3Lmdy
b3VwKDIpLAotICAgICAgICAgICAgdHh0KQotICAgICAgICB0eHQgPSByZS5zdWIociJcbihRRkFU
QUx8Q1JBU0hFRCkoKC4pKykiLAotICAgICAgICAgICAgbGFtYmRhIHc6ICI8L2Nhc2U+XG48Y2Fz
ZSBjbGFzcz0nYmFkJz48YnI+PHN0YXR1cyBjbGFzcz0nY3Jhc2gnPiIgKyB3Lmdyb3VwKDEpICsg
ciI8L3N0YXR1cz4iICsgdy5ncm91cCgyKSwKLSAgICAgICAgICAgIHR4dCkKLSAgICAgICAgdHh0
ID0gcmUuc3ViKHIiXG4oVG90YWxzOikoWzAtOScsIGEtel0qKSIsCi0gICAgICAgICAgICBsYW1i
ZGEgdzogIjwvY2FzZT5cbjxjYXNlIGNsYXNzPSdnb29kJz48YnI+PGI+IiArIHcuZ3JvdXAoMSkg
KyByIjwvYj4iICsgdy5ncm91cCgyKSArICI8L2Nhc2U+IiwKLSAgICAgICAgICAgIHR4dCkKLSAg
ICAgICAgIyBGaW5kIHRvdGFsIGNvdW50IG9mIGZhaWxlZCwgc2tpcHBlZCwgcGFzc2VkIGFuZCBj
cmFzaGVkIHRlc3RzLgotICAgICAgICB0b3RhbHMgPSAiJXMgcGFzc2VkLCAlcyBmYWlsZWQsICVz
IHNraXBwZWQsICVzIGNyYXNoZWQuIiAlICh0b3RhbHNbMF0sIHRvdGFsc1sxXSwgdG90YWxzWzJd
LCB0b3RhbHNbM10pCi0gICAgICAgICMgQ3JlYXRlIGEgaGVhZGVyIG9mIHRoZSBodG1sIHNvdXJj
ZS4KLSAgICAgICAgdHh0ID0gIiIiCi0gICAgICAgIDxodG1sPgotICAgICAgICA8aGVhZD4KLSAg
ICAgICAgICA8c2NyaXB0PgotICAgICAgICAgIGZ1bmN0aW9uIGluaXQoKSB7Ci0gICAgICAgICAg
ICAgIC8vIFRyeSB0byBmaW5kIHRoZSByaWdodCBzdHlsZVNoZWV0ICh0aGlzIGRvY3VtZW50IGNv
dWxkIGJlIGVtYmVkZGVkIGluIGFuIG90aGVyIGh0bWwgZG9jKQotICAgICAgICAgICAgICBmb3Ig
KGkgPSBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgewotICAg
ICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnN0eWxlU2hlZXRzW2ldLmNzc1J1bGVzWzBdLnNl
bGVjdG9yVGV4dCA9PSAiY2FzZS5nb29kIikgewotICAgICAgICAgICAgICAgICAgICAgIHJlc3Vs
dFN0eWxlU2hlZXQgPSBpOwotICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAvLyBUaGUgc3R5bGVT
aGVldCBoYXNuJ3QgYmVlbiBmb3VuZCwgYnV0IGl0IHNob3VsZCBiZSB0aGUgbGFzdCBvbmUuCi0g
ICAgICAgICAgICAgIHJlc3VsdFN0eWxlU2hlZXQgPSBkb2N1bWVudC5zdHlsZVNoZWV0cy5sZW5n
dGggLSAxOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZ1bmN0aW9uIGhpZGUoKSB7Ci0gICAg
ICAgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzW3Jlc3VsdFN0eWxlU2hlZXRdLmNzc1J1bGVz
WzBdLnN0eWxlLmRpc3BsYXk9J25vbmUnOwotICAgICAgICAgIH0KLQotICAgICAgICAgIGZ1bmN0
aW9uIHNob3coKSB7Ci0gICAgICAgICAgICAgIGRvY3VtZW50LnN0eWxlU2hlZXRzW3Jlc3VsdFN0
eWxlU2hlZXRdLmNzc1J1bGVzWzBdLnN0eWxlLmRpc3BsYXk9Jyc7Ci0gICAgICAgICAgfQotCi0g
ICAgICAgICAgPC9zY3JpcHQ+Ci0gICAgICAgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KLSAg
ICAgICAgICAgIGNhc2UuZ29vZCB7Y29sb3I6YmxhY2t9Ci0gICAgICAgICAgICBjYXNlLmJhZCB7
Y29sb3I6YmxhY2t9Ci0gICAgICAgICAgICBzdGF0dXMucGFzcyB7Y29sb3I6Z3JlZW59Ci0gICAg
ICAgICAgICBzdGF0dXMuY3Jhc2gge2NvbG9yOnJlZH0KLSAgICAgICAgICAgIHN0YXR1cy5mYWls
IHtjb2xvcjpyZWR9Ci0gICAgICAgICAgICBzdGF0dXMueHBhc3Mge2NvbG9yOjY2MzMwMH0KLSAg
ICAgICAgICAgIHN0YXR1cy54ZmFpbCB7Y29sb3I6MDA0NTAwfQotICAgICAgICAgICAgc3RhdHVz
LmJlbmNobWFyayB7Y29sb3I6MDAwMDg4fQotICAgICAgICAgICAgc3RhdHVzLndhcm4ge2NvbG9y
Om9yYW5nZX0KLSAgICAgICAgICAgIHN0YXR1cy5jcmFzaCB7Y29sb3I6cmVkOyB0ZXh0LWRlY29y
YXRpb246Ymxpbms7IGJhY2tncm91bmQtY29sb3I6YmxhY2t9Ci0gICAgICAgICAgPC9zdHlsZT4K
LSAgICAgICAgPC9oZWFkPgotICAgICAgICA8Ym9keSBvbmxvYWQ9ImluaXQoKSI+Ci0gICAgICAg
IDxjZW50ZXI+Ci0gICAgICAgICAgPGgxPlF0J3MgYXV0b3Rlc3RzIHJlc3VsdHM8L2gxPiUodG90
YWxzKXM8YnI+Ci0gICAgICAgICAgPGhyPgotICAgICAgICAgIDxmb3JtPgotICAgICAgICAgICAg
PGlucHV0IHR5cGU9ImJ1dHRvbiIgdmFsdWU9IlNob3cgZmFpbHVyZXMgb25seSIgb25jbGljaz0i
aGlkZSgpIi8+Ci0gICAgICAgICAgICAmbmJzcDsKLSAgICAgICAgICAgIDxpbnB1dCB0eXBlPSJi
dXR0b24iIHZhbHVlPSJTaG93IGFsbCIgb25jbGljaz0ic2hvdygpIi8+Ci0gICAgICAgICAgPC9m
b3JtPgotICAgICAgICA8L2NlbnRlcj4KLSAgICAgICAgPGhyPgotICAgICAgICAlKHJlc3VsdHMp
cwotICAgICAgICA8L2JvZHk+Ci0gICAgICAgIDwvaHRtbD4iIiIgJSB7InRvdGFscyI6IHRvdGFs
cywgInJlc3VsdHMiOiB0eHR9Ci0gICAgICAgIHJldHVybiB0eHQKLQotCi1pZiBfX25hbWVfXyA9
PSAnX19tYWluX18nOgotICAgIG9wdGlvbnMgPSBPcHRpb25zKHN5cy5hcmd2WzE6XSkKLSAgICBt
YWluID0gTWFpbihvcHRpb25zKQotICAgIG1haW4ucnVuKCkKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
cnVuLXdlYmtpdC10ZXN0cwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3J1bi13ZWJraXQt
dGVzdHMJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvcnVuLXdlYmtpdC10ZXN0
cwkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKLSMhL3Vzci9iaW4vcGVybAorIyEvdXNy
L2Jpbi9wZXJsIC13CiAjIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNTcsOSArNTgsNyBA
QCBzdWIgcnVubmluZ09uQnVpbGRCb3QoKQogCiBzdWIgdXNlTmV3UnVuV2ViS2l0VGVzdHMoKQog
ewotICAgICMgTlJXVCBkb2VzIG5vdCBzdXBwb3J0IHF0LWFybTogaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTY0MDg2Ci0gICAgcmV0dXJuIDAgaWYgaXNRdCgpIGFuZCBp
c0FSTSgpOwotICAgICMgQWxsIG90aGVyIHBsYXRmb3JtcyBzaG91bGQgdXNlIE5SV1QgYnkgZGVm
YXVsdC4KKyAgICAjIEFsbCBwbGF0Zm9ybXMgc2hvdWxkIHVzZSBOUldUIGJ5IGRlZmF1bHQuCiAg
ICAgcmV0dXJuIDE7CiB9CiAKQEAgLTc1LDE4ICs3NCw5IEBAIGlmICh1c2VOZXdSdW5XZWJLaXRU
ZXN0cygpKSB7CiAgICAgfQogfQogCi0jIHdlYmtpdGRpcnMucG0gc3RyaXBzIC0tcXQgYW5kIC0t
Z3RrIGZyb20gQEFSR1Ygd2hlbiB3ZSBjYWxsIGlzUXQvaXNHdGsuCisjIHdlYmtpdGRpcnMucG0g
c3RyaXBzIC0tZ3RrIGZyb20gQEFSR1Ygd2hlbiB3ZSBjYWxsIGlzR3RrLgogIyBXZSBoYXZlIHRv
IGFkZCBiYWNrIGFueSAtLVBPUlQgYXJndW1lbnRzIHdoaWNoIG1heSBoYXZlIGJlZW4gcmVtb3Zl
ZCBieSBpc1BvcnQoKSBjaGVja3MgYWJvdmUuCi1pZiAoaXNRdCgpKSB7Ci0gICAgbXkgJGlzUGxh
dGZvcm1TZXQgPSAwOwotICAgIGZvciAoQEFSR1YpewotICAgICAgICAjIFBhc3MgLS1xdCBpZiBw
bGF0Zm9ybSBpc24ndCBwYXNzZWQgZXhwbGljaXRseSAoZWcuIHF0LTUuMCwgcXQtd2syLCAuLi4p
Ci0gICAgICAgIGlmKC9eLS1wbGF0Zm9ybS4qLyl7Ci0gICAgICAgICAgICAkaXNQbGF0Zm9ybVNl
dCA9IDE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgcHVzaChAQVJHViwgIi0tcXQiKSBpZighJGlz
UGxhdGZvcm1TZXQpOwotfSBlbHNpZiAoaXNHdGsoKSkgeworaWYgKGlzR3RrKCkpIHsKICAgICBw
dXNoKEBBUkdWLCAiLS1ndGsiKTsKIH0gZWxzaWYgKGlzRWZsKCkpIHsKICAgICBwdXNoKEBBUkdW
LCAiLS1lZmwiKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3VwZGF0ZS13ZWJraXQJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRv
b2xzL1NjcmlwdHMvdXBkYXRlLXdlYmtpdAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAK
ICMhL3Vzci9iaW4vcGVybCAtdwogCi0jIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywg
MjAwOCwgMjAwOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMTEgQnJlbnQgRnVsZ2hhbS4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICMKQEAgLTQ2LDcgKzQ2LDYgQEAgc3ViIHJ1bkdpdFVwZGF0ZSgpOwogbXkg
JHF1aWV0ID0gJyc7CiBteSAkc2hvd0hlbHA7CiAKLWRldGVybWluZUlzUXQoKTsKIGRldGVybWlu
ZUlzV2luQ2Fpcm8oKTsKIAogY2hkaXJXZWJLaXQoKTsKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Vi
a2l0LWJ1aWxkLWRpcmVjdG9yeQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdC1i
dWlsZC1kaXJlY3RvcnkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
LWJ1aWxkLWRpcmVjdG9yeQkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsxLDcgQEAKLSMhL3Vzci9i
aW4vcGVybAorIyEvdXNyL2Jpbi9wZXJsIC13CiAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2ds
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTQ5LDcgKzUwLDYgQEAgVXNhZ2U6ICRwcm9ncmFtTmFtZSBbb3B0aW9uc10KICAgLS1ibGFja2Jl
cnJ5ICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIEJsYWNrQmVycnkg
cG9ydCBvbiBNYWMvTGludXgKICAgLS1lZmwgICAgICAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxk
IGRpcmVjdG9yeSBmb3IgdGhlIEVGTCBwb3J0CiAgIC0tZ3RrICAgICAgICAgICAgICAgICBGaW5k
IHRoZSBidWlsZCBkaXJlY3RvcnkgZm9yIHRoZSBHVEsrIHBvcnQKLSAgLS1xdCAgICAgICAgICAg
ICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdGhlIFF0IHBvcnQKICAgLS13aW5j
YWlybyAgICAgICAgICAgIEZpbmQgdGhlIGJ1aWxkIGRpcmVjdG9yeSBmb3IgdXNpbmcgQ2Fpcm8g
KHJhdGhlciB0aGFuIENvcmVHcmFwaGljcykgb24gV2luZG93cwogICAtLXdpbmNlICAgICAgICAg
ICAgICAgRmluZCB0aGUgYnVpbGQgZGlyZWN0b3J5IGZvciB0aGUgV2luQ0UgcG9ydAogCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdGRpcnMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0
cy93ZWJraXRkaXJzLnBtCShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dGRpcnMucG0JKHdvcmtpbmcgY29weSkKQEAgLTg5LDggKzg5LDYgQEAgbXkgJGRlYnVnZ2VyOwog
bXkgJG5tUGF0aDsKIG15ICRvc1hWZXJzaW9uOwogbXkgJGdlbmVyYXRlRHN5bTsKLW15ICRpc1F0
OwotbXkgJHFtYWtlYmluID0gInFtYWtlIjsgIyBBbGxvdyBvdmVycmlkZSBvZiB0aGUgcW1ha2Ug
YmluYXJ5IGZyb20gJFBBVEgKIG15ICRpc0d0azsKIG15ICRpc1dpbkNFOwogbXkgJGlzV2luQ2Fp
cm87CkBAIC0xNDMsMTEgKzE0MSw2IEBAIHN1YiBjdXJyZW50UGVybFBhdGgoKQogICAgIHJldHVy
biAkdGhpc1Blcmw7CiB9CiAKLXN1YiBzZXRRbWFrZUJpbmFyeVBhdGgoJCkKLXsKLSAgICAoJHFt
YWtlYmluKSA9IEBfOwotfQotCiAjIHVzZWQgZm9yIHNjcmlwdHMgd2hpY2ggYXJlIHN0b3JlZCBp
biBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbgogc3ViIHNldFNvdXJjZURpcigkKQogewpAQCAtMzgw
LDcgKzM3Myw2IEBAIHN1YiBhcmd1bWVudHNGb3JDb25maWd1cmF0aW9uKCkKICAgICBwdXNoKEBh
cmdzLCAnLS1kZWJ1ZycpIGlmICRjb25maWd1cmF0aW9uIGVxICJEZWJ1ZyI7CiAgICAgcHVzaChA
YXJncywgJy0tcmVsZWFzZScpIGlmICRjb25maWd1cmF0aW9uIGVxICJSZWxlYXNlIjsKICAgICBw
dXNoKEBhcmdzLCAnLS0zMi1iaXQnKSBpZiAkYXJjaGl0ZWN0dXJlIG5lICJ4ODZfNjQiOwotICAg
IHB1c2goQGFyZ3MsICctLXF0JykgaWYgaXNRdCgpOwogICAgIHB1c2goQGFyZ3MsICctLWd0aycp
IGlmIGlzR3RrKCk7CiAgICAgcHVzaChAYXJncywgJy0tZWZsJykgaWYgaXNFZmwoKTsKICAgICBw
dXNoKEBhcmdzLCAnLS13aW5jYWlybycpIGlmIGlzV2luQ2Fpcm8oKTsKQEAgLTUzNyw3ICs1Mjks
NyBAQCBzdWIgcHJvZHVjdERpcgogc3ViIGpzY1Byb2R1Y3REaXIKIHsKICAgICBteSAkcHJvZHVj
dERpciA9IHByb2R1Y3REaXIoKTsKLSAgICAkcHJvZHVjdERpciAuPSAiL2JpbiIgaWYgKGlzUXQo
KSB8fCBpc0VmbCgpKTsKKyAgICAkcHJvZHVjdERpciAuPSAiL2JpbiIgaWYgaXNFZmwoKTsKICAg
ICAkcHJvZHVjdERpciAuPSAiL1Byb2dyYW1zIiBpZiBpc0d0aygpOwogCiAgICAgcmV0dXJuICRw
cm9kdWN0RGlyOwpAQCAtNzk3LDQ4ICs3ODksNiBAQCBzdWIgYnVpbHREeWxpYlBhdGhGb3JOYW1l
CiAgICAgICAgIG15ICRsaWJyYXJ5RXh0ZW5zaW9uID0gJGxpYnJhcnlOYW1lID1+IC9eV2ViS2l0
JC9pID8gIi5zbyIgOiAiLmEiOwogICAgICAgICByZXR1cm4gIiRjb25maWd1cmF0aW9uUHJvZHVj
dERpci8kbGlicmFyeU5hbWUvbGliIiAuIGxjKCRsaWJyYXJ5TmFtZSkgLiAkbGlicmFyeUV4dGVu
c2lvbjsKICAgICB9Ci0gICAgaWYgKGlzUXQoKSkgewotICAgICAgICBteSAkaXNTZWFyY2hpbmdG
b3JXZWJDb3JlID0gJGxpYnJhcnlOYW1lID1+ICJXZWJDb3JlIjsKLSAgICAgICAgaWYgKGlzRGFy
d2luKCkpIHsKLSAgICAgICAgICAgICRsaWJyYXJ5TmFtZSA9ICJRdFdlYktpdFdpZGdldHMiOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgJGxpYnJhcnlOYW1lID0gIlF0NVdlYktpdFdp
ZGdldHMiOwotICAgICAgICB9Ci0gICAgICAgIG15ICRyZXN1bHQ7Ci0gICAgICAgIGlmIChpc0Rh
cndpbigpIGFuZCAtZCAiJGNvbmZpZ3VyYXRpb25Qcm9kdWN0RGlyL2xpYi8kbGlicmFyeU5hbWUu
ZnJhbWV3b3JrIikgewotICAgICAgICAgICAgJHJlc3VsdCA9ICIkY29uZmlndXJhdGlvblByb2R1
Y3REaXIvbGliLyRsaWJyYXJ5TmFtZS5mcmFtZXdvcmsvJGxpYnJhcnlOYW1lIjsKLSAgICAgICAg
fSBlbHNpZiAoaXNEYXJ3aW4oKSBhbmQgLWQgIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIi
KSB7Ci0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIv
bGliJGxpYnJhcnlOYW1lLmR5bGliIjsKLSAgICAgICAgfSBlbHNpZiAoaXNXaW5kb3dzKCkpIHsK
LSAgICAgICAgICAgIGlmIChjb25maWd1cmF0aW9uKCkgZXEgIkRlYnVnIikgewotICAgICAgICAg
ICAgICAgICMgT24gV2luZG93cywgdGhlcmUgaXMgYSAiZCIgc3VmZml4IHRvIHRoZSBsaWJyYXJ5
IG5hbWUuIFNlZSA8aHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvNTM5MjQvPi4KLSAg
ICAgICAgICAgICAgICAkbGlicmFyeU5hbWUgLj0gImQiOwotICAgICAgICAgICAgfQotCi0gICAg
ICAgICAgICBjaG9tcChteSAkbWtzcGVjID0gYCRxbWFrZWJpbiAtcXVlcnkgUVRfSE9TVF9EQVRB
YCk7Ci0gICAgICAgICAgICAkbWtzcGVjIC49ICIvbWtzcGVjcyI7Ci0gICAgICAgICAgICBteSAk
cXRNYWpvclZlcnNpb24gPSByZXRyaWV2ZVFNYWtlc3BlY1ZhcigiJG1rc3BlYy9xY29uZmlnLnBy
aSIsICJRVF9NQUpPUl9WRVJTSU9OIik7Ci0gICAgICAgICAgICBpZiAobm90ICRxdE1ham9yVmVy
c2lvbikgewotICAgICAgICAgICAgICAgICRxdE1ham9yVmVyc2lvbiA9ICIiOwotICAgICAgICAg
ICAgfQotCi0gICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9s
aWIvJGxpYnJhcnlOYW1lJHF0TWFqb3JWZXJzaW9uLmRsbCI7Ci0gICAgICAgIH0gZWxzZSB7Ci0g
ICAgICAgICAgICAkcmVzdWx0ID0gIiRjb25maWd1cmF0aW9uUHJvZHVjdERpci9saWIvbGliJGxp
YnJhcnlOYW1lLnNvIjsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgkaXNTZWFyY2hpbmdGb3JX
ZWJDb3JlKSB7Ci0gICAgICAgICAgICAjIFdpdGggQ09ORklHKz1mb3JjZV9zdGF0aWNfbGlic19h
c19zaGFyZWQgd2UgaGF2ZSBhIHNoYXJlZCBsaWJyYXJ5IGZvciBlYWNoIHN1YmRpci4KLSAgICAg
ICAgICAgICMgRm9yIGZlYXR1cmUgZGV0ZWN0aW9uIHRvIHdvcmsgaXQgaXMgbmVjZXNzYXJ5IHRv
IHJldHVybiB0aGUgcGF0aCBvZiB0aGUgV2ViQ29yZSBsaWJyYXJ5IGhlcmUuCi0gICAgICAgICAg
ICBteSAkcmVwbGFjZWRXaXRoV2ViQ29yZSA9ICRyZXN1bHQ7Ci0gICAgICAgICAgICAkcmVwbGFj
ZWRXaXRoV2ViQ29yZSA9fiBzLyRsaWJyYXJ5TmFtZS9XZWJDb3JlL2c7Ci0gICAgICAgICAgICBp
ZiAoLWUgJHJlcGxhY2VkV2l0aFdlYkNvcmUpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gJHJl
cGxhY2VkV2l0aFdlYkNvcmU7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBy
ZXR1cm4gJHJlc3VsdDsKLSAgICB9CiAgICAgaWYgKGlzR3RrKCkpIHsKICAgICAgICAgIyBXZWJL
aXRHVEsrIGZvciBHVEsyLCBXZWJLaXRHVEsrIGZvciBHVEszLCBhbmQgV2ViS2l0MiByZXNwZWN0
aXZlbHkuCiAgICAgICAgIG15IEBsaWJyYXJpZXMgPSAoImxpYndlYmtpdGd0ay0xLjAiLCAibGli
d2Via2l0Z3RrLTMuMCIsICJsaWJ3ZWJraXQyZ3RrLTMuMCIpOwpAQCAtOTAwLDU2ICs4NTAsNiBA
QCBzdWIgZGV0ZXJtaW5lSXNJbnNwZWN0b3JGcm9udGVuZCgpCiAgICAgJGlzSW5zcGVjdG9yRnJv
bnRlbmQgPSBjaGVja0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0taW5zcGVjdG9yLWZy
b250ZW5kIik7CiB9CiAKLXN1YiBpc1F0KCkKLXsKLSAgICBkZXRlcm1pbmVJc1F0KCk7Ci0gICAg
cmV0dXJuICRpc1F0OwotfQotCi1zdWIgZ2V0UXRWZXJzaW9uKCkKLXsKLSAgICBteSAkcXRWZXJz
aW9uID0gYCRxbWFrZWJpbiAtLXZlcnNpb25gOwotICAgICRxdFZlcnNpb24gPX4gcy9eKC4qKVF0
IHZlcnNpb24gKFxkXC5cZCkoLiopLyQyL3MgOwotICAgIHJldHVybiAkcXRWZXJzaW9uOwotfQot
Ci1zdWIgcXRGZWF0dXJlRGVmYXVsdHMKLXsKLSAgICBkaWUgIkVSUk9SOiBxbWFrZSBtaXNzaW5n
IGJ1dCByZXF1aXJlZCB0byBidWlsZCBXZWJLaXQuXG4iIGlmIG5vdCBjb21tYW5kRXhpc3RzKCRx
bWFrZWJpbik7Ci0KLSAgICBteSAkb2xkUW1ha2VFdmFsID0gJEVOVntRTUFLRV9DQUNIRV9FVkFM
fTsKLSAgICAkRU5We1FNQUtFX0NBQ0hFX0VWQUx9ID0gIkNPTkZJRys9cHJpbnRfZGVmYXVsdHMi
OwotCi0gICAgbXkgJG9yaWdpbmFsQ3dkID0gZ2V0Y3dkKCk7Ci0gICAgbXkgJHFtYWtlcGF0aCA9
IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGlyKCksICJUb29scyIsICJxbWFrZSIpOwotICAg
IGNoZGlyICRxbWFrZXBhdGggb3IgZGllICJGYWlsZWQgdG8gY2QgaW50byAiIC4gJHFtYWtlcGF0
aCAuICJcbiI7Ci0KLSAgICBteSAkZmlsZSA9IEZpbGU6OlNwZWMtPmNhdGZpbGUoc291cmNlRGly
KCksICJXZWJLaXQucHJvIik7Ci0KLSAgICBteSBAYnVpbGRBcmdzOwotICAgIEBidWlsZEFyZ3Mg
PSAoQGJ1aWxkQXJncywgQHskX1swXX0pIGlmIChAXyk7Ci0KLSAgICBteSBAZGVmYXVsdHMgPSBg
JHFtYWtlYmluIEBidWlsZEFyZ3MgJGZpbGUgMj4mMWA7Ci0KLSAgICBteSAlcXRGZWF0dXJlRGVm
YXVsdHM7Ci0gICAgZm9yIChAZGVmYXVsdHMpIHsKLSAgICAgICAgaWYgKC9ERUZJTkVTOiAvKSB7
Ci0gICAgICAgICAgICB3aGlsZSAoLyhcUys/KT0oXFMrPykvZ2kpIHsKLSAgICAgICAgICAgICAg
ICAkcXRGZWF0dXJlRGVmYXVsdHN7JDF9PSQyOwotICAgICAgICAgICAgfQotICAgICAgICB9IGVs
c2lmICgvRG9uZSBjb21wdXRpbmcgZGVmYXVsdHMvKSB7Ci0gICAgICAgICAgICBsYXN0OwotICAg
ICAgICB9IGVsc2lmIChAXykgewotICAgICAgICAgICAgcHJpbnQgJF87Ci0gICAgICAgIH0KLSAg
ICB9Ci0KLSAgICBjaGRpciAkb3JpZ2luYWxDd2Q7Ci0gICAgJEVOVntRTUFLRV9DQUNIRV9FVkFM
fSA9ICRvbGRRbWFrZUV2YWw7Ci0KLSAgICByZXR1cm4gJXF0RmVhdHVyZURlZmF1bHRzOwotfQot
CiBzdWIgY29tbWFuZEV4aXN0cygkKQogewogICAgIG15ICRjb21tYW5kID0gc2hpZnQ7CkBAIC05
OTIsMjUgKzg5Miw2IEBAIHN1YiBpc1dLMigpCiAgICAgcmV0dXJuICRpc1dLMjsKIH0KIAotc3Vi
IGRldGVybWluZUlzUXQoKQotewotICAgIHJldHVybiBpZiBkZWZpbmVkKCRpc1F0KTsKLQotICAg
ICMgQWxsb3cgb3ZlcnJpZGUgaW4gY2FzZSBRVERJUiBpcyBub3Qgc2V0LgotICAgIGlmIChjaGVj
a0ZvckFyZ3VtZW50QW5kUmVtb3ZlRnJvbUFSR1YoIi0tcXQiKSkgewotICAgICAgICAkaXNRdCA9
IDE7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAjIFRoZSBwcmVzZW5jZSBvZiBRVERJ
UiBvbmx5IG1lYW5zIFF0IGlmIC0tZ3RrIG9yIC0tZWZsIG9yIC0tYmxhY2tiZXJyeSBvciAtLXdp
bmNhaXJvIGFyZSBub3Qgb24gdGhlIGNvbW1hbmQtbGluZQotICAgIGlmIChpc0d0aygpIHx8IGlz
RWZsKCkgfHwgaXNCbGFja0JlcnJ5KCkgfHwgaXNXaW5DYWlybygpKSB7Ci0gICAgICAgICRpc1F0
ID0gMDsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgICRpc1F0ID0gZGVmaW5lZCgkRU5W
eydRVERJUid9KTsKLX0KLQogc3ViIGlzQmxhY2tCZXJyeSgpCiB7CiAgICAgZGV0ZXJtaW5lSXNC
bGFja0JlcnJ5KCk7CkBAIC0xMzA0LDcgKzExODUsNyBAQCBzdWIgaXNDcm9zc0NvbXBpbGF0aW9u
KCkKIAogc3ViIGlzQXBwbGVXZWJLaXQoKQogewotICAgIHJldHVybiAhKGlzUXQoKSBvciBpc0d0
aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tCZXJyeSgpKTsKKyAgICByZXR1
cm4gIShpc0d0aygpIG9yIGlzRWZsKCkgb3IgaXNXaW5DRSgpIG9yIGlzQmxhY2tCZXJyeSgpKTsK
IH0KIAogc3ViIGlzQXBwbGVNYWNXZWJLaXQoKQpAQCAtMTQ5NSw3ICsxMzc2LDcgQEAgc3ViIHJl
bGF0aXZlU2NyaXB0c0RpcigpCiBzdWIgbGF1bmNoZXJQYXRoKCkKIHsKICAgICBteSAkcmVsYXRp
dmVTY3JpcHRzUGF0aCA9IHJlbGF0aXZlU2NyaXB0c0RpcigpOwotICAgIGlmIChpc0d0aygpIHx8
IGlzUXQoKSB8fCBpc0VmbCgpIHx8IGlzV2luQ0UoKSkgeworICAgIGlmIChpc0d0aygpIHx8IGlz
RWZsKCkgfHwgaXNXaW5DRSgpKSB7CiAgICAgICAgIHJldHVybiAiJHJlbGF0aXZlU2NyaXB0c1Bh
dGgvcnVuLWxhdW5jaGVyIjsKICAgICB9IGVsc2lmIChpc0FwcGxlV2ViS2l0KCkpIHsKICAgICAg
ICAgcmV0dXJuICIkcmVsYXRpdmVTY3JpcHRzUGF0aC9ydW4tc2FmYXJpIjsKQEAgLTE1MDYsOCAr
MTM4Nyw2IEBAIHN1YiBsYXVuY2hlck5hbWUoKQogewogICAgIGlmIChpc0d0aygpKSB7CiAgICAg
ICAgIHJldHVybiAiR3RrTGF1bmNoZXIiOwotICAgIH0gZWxzaWYgKGlzUXQoKSkgewotICAgICAg
ICByZXR1cm4gIlF0VGVzdEJyb3dzZXIiOwogICAgIH0gZWxzaWYgKGlzQXBwbGVXZWJLaXQoKSkg
ewogICAgICAgICByZXR1cm4gIlNhZmFyaSI7CiAgICAgfSBlbHNpZiAoaXNFZmwoKSkgewpAQCAt
MTUzNiwyMiArMTQxNSwxMCBAQCBzdWIgY2hlY2tSZXF1aXJlZFN5c3RlbUNvbmZpZwogICAgICAg
ICAgICAgcHJpbnQgIm1vc3QgbGlrZWx5IGZhaWwuIFRoZSBsYXRlc3QgWGNvZGUgaXMgYXZhaWxh
YmxlIGZyb20gdGhlIEFwcCBTdG9yZS5cbiI7CiAgICAgICAgICAgICBwcmludCAiKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuIjsK
ICAgICAgICAgfQotICAgIH0gZWxzaWYgKGlzR3RrKCkgb3IgaXNRdCgpIG9yIGlzRWZsKCkpIHsK
LSAgICAgICAgbXkgQGNtZHMgPSBxdyhiaXNvbiBncGVyZik7Ci0gICAgICAgIGlmIChpc1F0KCkg
YW5kIGlzV2luZG93cygpKSB7Ci0gICAgICAgICAgICBwdXNoIEBjbWRzLCAid2luX2ZsZXgiOwot
ICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcHVzaCBAY21kcywgImZsZXgiOwotICAgICAg
ICB9CisgICAgfSBlbHNpZiAoaXNHdGsoKSBvciBpc0VmbCgpKSB7CisgICAgICAgIG15IEBjbWRz
ID0gcXcoYmlzb24gZ3BlcmYgZmxleCk7CiAgICAgICAgIG15IEBtaXNzaW5nID0gKCk7CiAgICAg
ICAgIG15ICRvbGRQYXRoID0gJEVOVntQQVRIfTsKLSAgICAgICAgaWYgKGlzUXQoKSBhbmQgaXNX
aW5kb3dzKCkpIHsKLSAgICAgICAgICAgIGNob21wKG15ICRnbnVXaW4zMkRpciA9IGAkcW1ha2Vi
aW4gLXF1ZXJ5IFFUX0hPU1RfREFUQWApOwotICAgICAgICAgICAgJGdudVdpbjMyRGlyID0gRmls
ZTo6U3BlYy0+Y2F0ZmlsZSgkZ251V2luMzJEaXIsICIuLiIsICJnbnV3aW4zMiIsICJiaW4iKTsK
LSAgICAgICAgICAgIGlmICgtZCAiJGdudVdpbjMyRGlyIikgewotICAgICAgICAgICAgICAgICRF
TlZ7UEFUSH0gPSAkZ251V2luMzJEaXIgLiAiOyIgLiAkRU5We1BBVEh9OwotICAgICAgICAgICAg
fQotICAgICAgICB9CiAgICAgICAgIGZvcmVhY2ggbXkgJGNtZCAoQGNtZHMpIHsKICAgICAgICAg
ICAgIHB1c2ggQG1pc3NpbmcsICRjbWQgaWYgbm90IGNvbW1hbmRFeGlzdHMoJGNtZCk7CiAgICAg
ICAgIH0KQEAgLTE1NjAsOSArMTQyNyw2IEBAIHN1YiBjaGVja1JlcXVpcmVkU3lzdGVtQ29uZmln
CiAgICAgICAgICAgICBteSAkbGlzdCA9IGpvaW4gIiwgIiwgQG1pc3Npbmc7CiAgICAgICAgICAg
ICBkaWUgIkVSUk9SOiAkbGlzdCBtaXNzaW5nIGJ1dCByZXF1aXJlZCB0byBidWlsZCBXZWJLaXQu
XG4iOwogICAgICAgICB9Ci0gICAgICAgIGlmIChpc1F0KCkgYW5kIGlzV2luZG93cygpKSB7Ci0g
ICAgICAgICAgICAkRU5We1BBVEh9ID0gJG9sZFBhdGg7Ci0gICAgICAgIH0KICAgICB9CiAgICAg
IyBXaW4zMiBhbmQgb3RoZXIgcGxhdGZvcm1zIG1heSB3YW50IHRvIGNoZWNrIGZvciBtaW5pbXVt
IGNvbmZpZwogfQpAQCAtMTY3MSwxNiArMTUzNSw2IEBAIHN1YiBzZXR1cEN5Z3dpbkVudigpCiAg
ICAgICAgICR3aWxsVXNlVkNFeHByZXNzV2hlbkJ1aWxkaW5nID0gMTsKICAgICB9CiAKLSAgICBt
eSAkcXRTREtQYXRoID0gRmlsZTo6U3BlYy0+Y2F0ZGlyKCRwcm9ncmFtRmlsZXNQYXRoLCAiUXVp
Y2tUaW1lIFNESyIpOwotICAgIGlmICgwICYmICEgLWUgJHF0U0RLUGF0aCkgewotICAgICAgICBw
cmludCAiKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqKioqKlxuIjsKLSAgICAgICAgcHJpbnQgIkNhbm5vdCBmaW5kICckcXRTREtQYXRoJ1xu
IjsKLSAgICAgICAgcHJpbnQgIlBsZWFzZSBkb3dubG9hZCB0aGUgUXVpY2tUaW1lIFNESyBmb3Ig
V2luZG93cyBmcm9tXG4iOwotICAgICAgICBwcmludCAiaHR0cDovL2RldmVsb3Blci5hcHBsZS5j
b20vcXVpY2t0aW1lL2Rvd25sb2FkL1xuIjsKLSAgICAgICAgcHJpbnQgIioqKioqKioqKioqKioq
KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbiI7Ci0gICAg
ICAgIGRpZTsKLSAgICB9Ci0KICAgICBwcmludCAiQnVpbGRpbmcgcmVzdWx0cyBpbnRvOiAiLCBi
YXNlUHJvZHVjdERpcigpLCAiXG4iOwogICAgIHByaW50ICJXRUJLSVRfT1VUUFVURElSIGlzIHNl
dCB0bzogIiwgJEVOVnsiV0VCS0lUX09VVFBVVERJUiJ9LCAiXG4iOwogICAgIHByaW50ICJXRUJL
SVRfTElCUkFSSUVTIGlzIHNldCB0bzogIiwgJEVOVnsiV0VCS0lUX0xJQlJBUklFUyJ9LCAiXG4i
OwpAQCAtMTczNSw3ICsxNTg5LDcgQEAgc3ViIGNvcHlJbnNwZWN0b3JGcm9udGVuZEZpbGVzCiAg
ICAgICAgIH0KICAgICB9IGVsc2lmIChpc0FwcGxlV2luV2ViS2l0KCkpIHsKICAgICAgICAgJGlu
c3BlY3RvclJlc291cmNlc0RpclBhdGggPSAkcHJvZHVjdERpciAuICIvV2ViS2l0LnJlc291cmNl
cy9pbnNwZWN0b3IiOwotICAgIH0gZWxzaWYgKGlzUXQoKSB8fCBpc0d0aygpKSB7CisgICAgfSBl
bHNpZiAoaXNHdGsoKSkgewogICAgICAgICBteSAkcHJlZml4ID0gJEVOVnsiV2ViS2l0SW5zdGFs
bGF0aW9uUHJlZml4In07CiAgICAgICAgICRpbnNwZWN0b3JSZXNvdXJjZXNEaXJQYXRoID0gKGRl
ZmluZWQoJHByZWZpeCkgPyAkcHJlZml4IDogIi91c3Ivc2hhcmUiKSAuICIvd2Via2l0LTEuMC93
ZWJpbnNwZWN0b3IiOwogICAgIH0gZWxzaWYgKGlzRWZsKCkpIHsKQEAgLTE3NjUsNyArMTYxOSw3
IEBAIHN1YiBjb3B5SW5zcGVjdG9yRnJvbnRlbmRGaWxlcwogICAgICAgICBzeXN0ZW0gImRpdHRv
IiwgJHNvdXJjZUxvY2FsaXplZFN0cmluZ3MsICRkZXN0aW5hdGlvbkxvY2FsaXplZFN0cmluZ3M7
CiAgICAgfQogCi0gICAgbXkgJGV4aXRTdGF0dXMgPSBzeXN0ZW0gInJzeW5jIiwgIi1hdXQiLCAi
LS1leGNsdWRlPS8uRFNfU3RvcmUiLCAiLS1leGNsdWRlPSoucmUyanMiLCAiLS1leGNsdWRlPS5z
dm4vIiwgIWlzUXQoKSA/ICItLWV4Y2x1ZGU9L1dlYktpdC5xcmMiIDogIiIsICRzb3VyY2VJbnNw
ZWN0b3JQYXRoLCAkaW5zcGVjdG9yUmVzb3VyY2VzRGlyUGF0aDsKKyAgICBteSAkZXhpdFN0YXR1
cyA9IHN5c3RlbSAicnN5bmMiLCAiLWF1dCIsICItLWV4Y2x1ZGU9Ly5EU19TdG9yZSIsICItLWV4
Y2x1ZGU9Ki5yZTJqcyIsICItLWV4Y2x1ZGU9LnN2bi8iLCAkc291cmNlSW5zcGVjdG9yUGF0aCwg
JGluc3BlY3RvclJlc291cmNlc0RpclBhdGg7CiAgICAgcmV0dXJuICRleGl0U3RhdHVzIGlmICRl
eGl0U3RhdHVzOwogCiAgICAgaWYgKGlzSU9TV2ViS2l0KCkpIHsKQEAgLTE4NDQsMjcgKzE2OTgs
NiBAQCBzdWIgcmV0cmlldmVRTWFrZXNwZWNWYXIKICAgICByZXR1cm4gJHZhcnZhbHVlOwogfQog
Ci1zdWIgcXRNYWtlQ29tbWFuZCgkKQotewotICAgIG15ICgkcW1ha2ViaW4pID0gQF87Ci0gICAg
Y2hvbXAobXkgJGhvc3REYXRhUGF0aCA9IGAkcW1ha2ViaW4gLXF1ZXJ5IFFUX0hPU1RfREFUQWAp
OwotICAgIG15ICRta3NwZWNQYXRoID0gJGhvc3REYXRhUGF0aCAuICIvbWtzcGVjcy9kZWZhdWx0
L3FtYWtlLmNvbmYiOwotICAgIGlmICghIC1lICRta3NwZWNQYXRoKSB7Ci0gICAgICAgIGNob21w
KG15ICRta3NwZWM9IGAkcW1ha2ViaW4gLXF1ZXJ5IFFNQUtFX1hTUEVDYCk7Ci0gICAgICAgICRt
a3NwZWNQYXRoID0gJGhvc3REYXRhUGF0aCAuICIvbWtzcGVjcy8iIC4gJG1rc3BlYyAuICIvcW1h
a2UuY29uZiI7Ci0gICAgfQotICAgIG15ICRjb21waWxlciA9IHJldHJpZXZlUU1ha2VzcGVjVmFy
KCRta3NwZWNQYXRoLCAiUU1BS0VfQ0MiKTsKLQotICAgICNwcmludCAiZGVmYXVsdCBzcGVjOiAi
IC4gJG1rc3BlYyAuICJcbiI7Ci0gICAgI3ByaW50ICJjb21waWxlciBmb3VuZDogIiAuICRjb21w
aWxlciAuICJcbiI7Ci0KLSAgICBpZiAoJGNvbXBpbGVyICYmICRjb21waWxlciBlcSAiY2wiKSB7
Ci0gICAgICAgIHJldHVybiAibm1ha2UiOwotICAgIH0KLQotICAgIHJldHVybiAibWFrZSI7Ci19
Ci0KIHN1YiBhdXRvdG9vbHNGbGFnKCQkKQogewogICAgIG15ICgkZmxhZywgJGZlYXR1cmUpID0g
QF87CkBAIC0yMjI2LDE5OSArMjA1OSw2IEBAIHN1YiBwcm9tcHRVc2VyCiAgICAgcmV0dXJuICRp
bnB1dCA/ICRpbnB1dCA6ICRkZWZhdWx0OwogfQogCi1zdWIgYnVpbGRRTWFrZVByb2plY3RzCi17
Ci0gICAgbXkgKCRwcm9qZWN0cywgJGNsZWFuLCBAYnVpbGRQYXJhbXMpID0gQF87Ci0KLSAgICBt
eSBAYnVpbGRBcmdzID0gKCk7Ci0gICAgbXkgJHFjb25maWdzID0gIiI7Ci0KLSAgICBteSAkbWFr
ZSA9IHF0TWFrZUNvbW1hbmQoJHFtYWtlYmluKTsKLSAgICBteSAkbWFrZWFyZ3MgPSAiIjsKLSAg
ICBteSAkY29tbWFuZDsKLSAgICBteSAkaW5zdGFsbEhlYWRlcnM7Ci0gICAgbXkgJGluc3RhbGxM
aWJzOwotICAgIGZvciBteSAkaSAoMCAuLiAkI2J1aWxkUGFyYW1zKSB7Ci0gICAgICAgIG15ICRv
cHQgPSAkYnVpbGRQYXJhbXNbJGldOwotICAgICAgICBpZiAoJG9wdCA9fiAvXi0tcW1ha2U9KC4q
KS9pICkgewotICAgICAgICAgICAgJHFtYWtlYmluID0gJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRv
cHQgPX4gL14tLXFtYWtlYXJnPSguKikvaSApIHsKLSAgICAgICAgICAgIHB1c2ggQGJ1aWxkQXJn
cywgJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRvcHQgPX4gL14tLW1ha2VhcmdzPSguKikvaSApIHsK
LSAgICAgICAgICAgICRtYWtlYXJncyA9ICQxOwotICAgICAgICB9IGVsc2lmICgkb3B0ID1+IC9e
LS1pbnN0YWxsLWhlYWRlcnM9KC4qKS9pICkgewotICAgICAgICAgICAgJGluc3RhbGxIZWFkZXJz
ID0gJDE7Ci0gICAgICAgIH0gZWxzaWYgKCRvcHQgPX4gL14tLWluc3RhbGwtbGlicz0oLiopL2kg
KSB7Ci0gICAgICAgICAgICAkaW5zdGFsbExpYnMgPSAkMTsKLSAgICAgICAgfSBlbHNlIHsKLSAg
ICAgICAgICAgIHB1c2ggQGJ1aWxkQXJncywgJG9wdDsKLSAgICAgICAgfQotICAgIH0KLQotICAg
ICMgQXV0b21hdGljYWxseSBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFVzIGZvciBtYWtlIG9u
bHkgaWYgdGhpcyBtYWtlIGFyZ3VtZW50IGhhdmVuJ3QgYWxyZWFkeSBiZWVuIHNwZWNpZmllZC4K
LSAgICBpZiAoJG1ha2UgZXEgIm1ha2UiICYmICRtYWtlYXJncyAhfiAvLVteXHNdKj9qXHMqXGQr
L2kgJiYgKCFkZWZpbmVkICRFTlZ7Ik1BS0VGTEFHUyJ9IHx8ICgkRU5WeyJNQUtFRkxBR1MifSAh
fiAvLVteXHNdKj9qXHMqXGQrL2kgKSkpIHsKLSAgICAgICAgJG1ha2VhcmdzIC49ICIgLWoiIC4g
bnVtYmVyT2ZDUFVzKCk7Ci0gICAgfQotCi0gICAgJG1ha2UgPSAiJG1ha2UgJG1ha2VhcmdzIjsK
LSAgICAkbWFrZSA9fiBzL1xzKyQvLzsKLQotICAgIG15ICRvcmlnaW5hbEN3ZCA9IGdldGN3ZCgp
OwotICAgIG15ICRkaXIgPSBGaWxlOjpTcGVjLT5jYW5vbnBhdGgocHJvZHVjdERpcigpKTsKLSAg
ICBGaWxlOjpQYXRoOjpta3BhdGgoJGRpcik7Ci0gICAgY2hkaXIgJGRpciBvciBkaWUgIkZhaWxl
ZCB0byBjZCBpbnRvICIgLiAkZGlyIC4gIlxuIjsKLQotICAgIGlmICgkY2xlYW4pIHsKLSAgICAg
ICAgJGNvbW1hbmQgPSAiJG1ha2UgZGlzdGNsZWFuIjsKLSAgICAgICAgcHJpbnQgIlxuQ2FsbGlu
ZyAnJGNvbW1hbmQnIGluICIgLiAkZGlyIC4gIlxuXG4iOwotICAgICAgICByZXR1cm4gc3lzdGVt
ICRjb21tYW5kOwotICAgIH0KLQotICAgIG15ICRxbWFrZXBhdGggPSBGaWxlOjpTcGVjLT5jYXRm
aWxlKHNvdXJjZURpcigpLCAiVG9vbHMiLCAicW1ha2UiKTsKLSAgICBteSAkcW1ha2Vjb21tYW5k
ID0gJHFtYWtlYmluOwotCi0gICAgbXkgJGNvbmZpZyA9IGNvbmZpZ3VyYXRpb24oKTsKLSAgICBw
dXNoIEBidWlsZEFyZ3MsICJJTlNUQUxMX0hFQURFUlM9IiAuICRpbnN0YWxsSGVhZGVycyBpZiBk
ZWZpbmVkKCRpbnN0YWxsSGVhZGVycyk7Ci0gICAgcHVzaCBAYnVpbGRBcmdzLCAiSU5TVEFMTF9M
SUJTPSIgLiAkaW5zdGFsbExpYnMgaWYgZGVmaW5lZCgkaW5zdGFsbExpYnMpOwotCi0gICAgbXkg
JHBhc3NlZENvbmZpZyA9IHBhc3NlZENvbmZpZ3VyYXRpb24oKSB8fCAiIjsKLSAgICBpZiAoJHBh
c3NlZENvbmZpZyA9fiBtL2RlYnVnL2kpIHsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09O
RklHLT1yZWxlYXNlIjsKLSAgICAgICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09ORklHKz1kZWJ1ZyI7
Ci0gICAgfSBlbHNpZiAoJHBhc3NlZENvbmZpZyA9fiBtL3JlbGVhc2UvaSkgewotICAgICAgICBw
dXNoIEBidWlsZEFyZ3MsICJDT05GSUcrPXJlbGVhc2UiOwotICAgICAgICBwdXNoIEBidWlsZEFy
Z3MsICJDT05GSUctPWRlYnVnIjsKLSAgICB9IGVsc2lmICgkcGFzc2VkQ29uZmlnKSB7Ci0gICAg
ICAgIGRpZSAiQnVpbGQgdHlwZSAkcGFzc2VkQ29uZmlnIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCAt
LXF0LlxuIjsKLSAgICB9Ci0KLSAgICAjIFVzaW5nIGJ1aWxkLXdlYmtpdCB0byBidWlsZCBhc3N1
bWVzIHlvdSB3YW50IGEgZGV2ZWxvcGVyLWJ1aWxkCi0gICAgcHVzaCBAYnVpbGRBcmdzLCAiQ09O
RklHLT1wcm9kdWN0aW9uX2J1aWxkIjsKLQotICAgIG15ICRzdm5SZXZpc2lvbiA9IGN1cnJlbnRT
Vk5SZXZpc2lvbigpOwotICAgIG15ICRwcmV2aW91c1N2blJldmlzaW9uID0gInVua25vd24iOwot
Ci0gICAgbXkgJGJ1aWxkSGludCA9ICIiOwotCi0gICAgbXkgJHBhdGhUb0J1aWx0UmV2aXNpb25z
ID0gRmlsZTo6U3BlYy0+Y2F0ZmlsZSgkZGlyLCAiLmJ1aWx0UmV2aXNpb25zLmNhY2hlIik7Ci0g
ICAgaWYgKC1lICRwYXRoVG9CdWlsdFJldmlzaW9ucyAmJiBvcGVuKEJVSUxUUkVWSVNJT05TLCAk
cGF0aFRvQnVpbHRSZXZpc2lvbnMpKSB7Ci0gICAgICAgIHdoaWxlICg8QlVJTFRSRVZJU0lPTlM+
KSB7Ci0gICAgICAgICAgICBpZiAoJF8gPX4gbS9eU1ZOX1JFVklTSU9OXHM9XHMoXGQrKSQvKSB7
Ci0gICAgICAgICAgICAgICAgJHByZXZpb3VzU3ZuUmV2aXNpb24gPSAkMTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgfQotICAgICAgICBjbG9zZShCVUlMVFJFVklTSU9OUyk7Ci0gICAgfQotCi0g
ICAgbXkgJHJlc3VsdCA9IDA7Ci0KLSAgICAjIFJ1biBxbWFrZSwgcmVnYWRsZXNzIG9mIGhhdmlu
ZyBhIG1ha2VmaWxlIG9yIG5vdCwgc28gdGhhdCBxbWFrZSBjYW4KLSAgICAjIGRldGVjdCBjaGFu
Z2VzIHRvIHRoZSBjb25maWd1cmF0aW9uLgotCi0gICAgcHVzaCBAYnVpbGRBcmdzLCAiLWFmdGVy
IE9WRVJSSURFX1NVQkRJUlM9XCJAeyRwcm9qZWN0c31cIiIgaWYgQHskcHJvamVjdHN9OwotICAg
IHVuc2hpZnQgQGJ1aWxkQXJncywgRmlsZTo6U3BlYy0+Y2F0ZmlsZShzb3VyY2VEaXIoKSwgIldl
YktpdC5wcm8iKTsKLSAgICAkY29tbWFuZCA9ICIkcW1ha2Vjb21tYW5kIEBidWlsZEFyZ3MiOwot
ICAgIHByaW50ICJDYWxsaW5nICckY29tbWFuZCcgaW4gIiAuICRkaXIgLiAiXG5cbiI7Ci0gICAg
cHJpbnQgIkluc3RhbGxhdGlvbiBoZWFkZXJzIGRpcmVjdG9yeTogJGluc3RhbGxIZWFkZXJzXG4i
IGlmKGRlZmluZWQoJGluc3RhbGxIZWFkZXJzKSk7Ci0gICAgcHJpbnQgIkluc3RhbGxhdGlvbiBs
aWJyYXJpZXMgZGlyZWN0b3J5OiAkaW5zdGFsbExpYnNcbiIgaWYoZGVmaW5lZCgkaW5zdGFsbExp
YnMpKTsKLQotICAgIG15ICRjb25maWdDaGFuZ2VkID0gMDsKLSAgICBvcGVuKFFNQUtFLCAiJGNv
bW1hbmQgMj4mMSB8IikgfHwgZGllICJDb3VsZCBub3QgZXhlY3V0ZSBxbWFrZSI7Ci0gICAgd2hp
bGUgKDxRTUFLRT4pIHsKLSAgICAgICAgJGNvbmZpZ0NoYW5nZWQgPSAxIGlmICRfID1+IG0vVGhl
IGNvbmZpZ3VyYXRpb24gd2FzIGNoYW5nZWQgc2luY2UgdGhlIGxhc3QgYnVpbGQvOwotICAgICAg
ICBwcmludCAkXzsKLSAgICB9Ci0KLSAgICBjbG9zZShRTUFLRSk7Ci0gICAgJHJlc3VsdCA9ICQ/
OwotCi0gICAgaWYgKCRyZXN1bHQgbmUgMCkgewotICAgICAgIGRpZSAiXG5GYWlsZWQgdG8gc2V0
IHVwIGJ1aWxkIGVudmlyb25tZW50IHVzaW5nICRxbWFrZWJpbiFcbiI7Ci0gICAgfQotCi0gICAg
bXkgJG1heWJlTmVlZHNDbGVhbkJ1aWxkID0gMDsKLSAgICBteSAkbmVlZHNJbmNyZW1lbnRhbEJ1
aWxkID0gMDsKLQotICAgICMgRnVsbCBpbmNyZW1lbnRhbCBidWlsZCAocnVuIHFtYWtlKSBuZWVk
ZWQgb24gYnVpbGRib3RzIGFuZCBFV1MgYm90cyBhbHdheXMuCi0gICAgaWYgKGdyZXAoL0NPTkZJ
R1wrPWJ1aWxkYm90LyxAYnVpbGRQYXJhbXMpKSB7Ci0gICAgICAgICRuZWVkc0luY3JlbWVudGFs
QnVpbGQgPSAxOwotICAgIH0KLQotICAgIGlmICgkc3ZuUmV2aXNpb24gbmUgJHByZXZpb3VzU3Zu
UmV2aXNpb24pIHsKLSAgICAgICAgcHJpbnQgIkxhc3QgYnVpbHQgcmV2aXNpb24gd2FzICIgLiAk
cHJldmlvdXNTdm5SZXZpc2lvbiAuCi0gICAgICAgICAgICAiLCBub3cgYXQgcmV2aXNpb24gJHN2
blJldmlzaW9uLiBGdWxsIGluY3JlbWVudGFsIGJ1aWxkIG5lZWRlZC5cbiI7Ci0gICAgICAgICRu
ZWVkc0luY3JlbWVudGFsQnVpbGQgPSAxOwotCi0gICAgICAgIG15IEBmaWxlTGlzdCA9IGxpc3RP
ZkNoYW5nZWRGaWxlc0JldHdlZW5SZXZpc2lvbnMoc291cmNlRGlyKCksICRwcmV2aW91c1N2blJl
dmlzaW9uLCAkc3ZuUmV2aXNpb24pOwotCi0gICAgICAgIGZvcmVhY2ggKEBmaWxlTGlzdCkgewot
ICAgICAgICAgICAgaWYgKG0vXC5wcltvaWZdJC8gb3IKLSAgICAgICAgICAgICAgICBtL1wucW1h
a2UuY29uZiQvIG9yCi0gICAgICAgICAgICAgICAgbS9eVG9vbHNcL3FtYWtlXC8vCi0gICAgICAg
ICAgICAgICApIHsKLSAgICAgICAgICAgICAgICBwcmludCAiQ2hhbmdlIHRvICRfIGRldGVjdGVk
LCBjbGVhbiBidWlsZCBtYXkgYmUgbmVlZGVkLlxuIjsKLSAgICAgICAgICAgICAgICAkbWF5YmVO
ZWVkc0NsZWFuQnVpbGQgPSAxOwotICAgICAgICAgICAgICAgIGxhc3Q7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoJGNvbmZpZ0NoYW5nZWQpIHsKLSAgICAgICAg
cHJpbnQgIkNhbGxpbmcgJyRtYWtlIHdpcGVjbGVhbicgaW4gIiAuICRkaXIgLiAiXG5cbiI7Ci0g
ICAgICAgICRyZXN1bHQgPSBzeXN0ZW0gIiRtYWtlIHdpcGVjbGVhbiI7Ci0gICAgfQotCi0gICAg
JGNvbW1hbmQgPSAiJG1ha2UiOwotICAgIGlmICgkbmVlZHNJbmNyZW1lbnRhbEJ1aWxkKSB7Ci0g
ICAgICAgICRjb21tYW5kIC49ICIgaW5jcmVtZW50YWwiOwotICAgIH0KLQotICAgIHByaW50ICJc
bkNhbGxpbmcgJyRjb21tYW5kJyBpbiAiIC4gJGRpciAuICJcblxuIjsKLSAgICAkcmVzdWx0ID0g
c3lzdGVtICRjb21tYW5kOwotCi0gICAgY2hkaXIgIi4uIiBvciBkaWU7Ci0KLSAgICBpZiAoJHJl
c3VsdCBlcSAwKSB7Ci0gICAgICAgICMgTm93IHRoYXQgdGhlIGJ1aWxkIGNvbXBsZXRlZCBzdWNj
ZXNzZnVsbHkgd2UgY2FuIHNhdmUgdGhlIFNWTiByZXZpc2lvbgotICAgICAgICBvcGVuKEJVSUxU
UkVWSVNJT05TLCAiPj4kcGF0aFRvQnVpbHRSZXZpc2lvbnMiKTsKLSAgICAgICAgcHJpbnQgQlVJ
TFRSRVZJU0lPTlMgIlNWTl9SRVZJU0lPTiA9ICRzdm5SZXZpc2lvblxuIjsKLSAgICAgICAgY2xv
c2UoQlVJTFRSRVZJU0lPTlMpOwotICAgIH0gZWxzaWYgKCEkY29tbWFuZCA9fiAvaW5jcmVtZW50
YWwvICYmIGV4aXRTdGF0dXMoJHJlc3VsdCkpIHsKLSAgICAgICAgbXkgJGV4aXRDb2RlID0gZXhp
dFN0YXR1cygkcmVzdWx0KTsKLSAgICAgICAgbXkgJGZhaWxNZXNzYWdlID0gPDxFT0Y7Ci0KLT09
PT09IEJVSUxEIEZBSUxFRCA9PT09PT0KLQotVGhlIGJ1aWxkIGZhaWxlZCB3aXRoIGV4aXQgY29k
ZSAkZXhpdENvZGUuIFRoaXMgbWF5IGhhdmUgYmVlbiBiZWNhdXNlIHlvdQotCi0gIC0gYWRkZWQg
YW4gI2luY2x1ZGUgdG8gYSBzb3VyY2UvaGVhZGVyCi0gIC0gYWRkZWQgYSBRX09CSkVDVCBtYWNy
byB0byBhIGNsYXNzCi0gIC0gYWRkZWQgYSBuZXcgcmVzb3VyY2UgdG8gYSBxcmMgZmlsZQotCi1h
cyBkZXBlbmRlbmNpZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHJlLWNvbXB1dGVkIGZvciBsb2Nh
bCBkZXZlbG9wZXIgYnVpbGRzLgotWW91IG1heSB0cnkgY29tcHV0aW5nIGRlcGVuZGVuY2llcyBt
YW51YWxseSBieSBydW5uaW5nICdtYWtlIHFtYWtlX2FsbCcgaW46Ci0KLSAgJGRpcgotCi1vciBw
YXNzaW5nIC0tbWFrZWFyZ3M9InFtYWtlX2FsbCIgdG8gYnVpbGQtd2Via2l0LgotCi09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0KLUVPRgotICAgICAgICBwcmludCAiJGZhaWxNZXNzYWdlIjsK
LSAgICB9IGVsc2lmICgkbWF5YmVOZWVkc0NsZWFuQnVpbGQpIHsKLSAgICAgICAgcHJpbnQgIlxu
SW5jcmVtZW50YWwgYnVpbGQgZmFpbGVkLCBjbGVhbiBidWlsZCBuZWVkZWQuIFxuIjsKLSAgICAg
ICAgcHJpbnQgIkNhbGxpbmcgJyRtYWtlIHdpcGVjbGVhbicgaW4gIiAuICRkaXIgLiAiXG5cbiI7
Ci0gICAgICAgIGNoZGlyICRkaXIgb3IgZGllOwotICAgICAgICBzeXN0ZW0gIiRtYWtlIHdpcGVj
bGVhbiI7Ci0KLSAgICAgICAgcHJpbnQgIlxuQ2FsbGluZyAnJG1ha2UnIGluICIgLiAkZGlyIC4g
IlxuXG4iOwotICAgICAgICAkcmVzdWx0ID0gc3lzdGVtICRtYWtlOwotICAgIH0KLQotICAgIHJl
dHVybiAkcmVzdWx0OwotfQotCiBzdWIgYnVpbGRHdGtQcm9qZWN0CiB7CiAgICAgbXkgKCRwcm9q
ZWN0LCAkY2xlYW4sICRwcmVmaXgsICRtYWtlQXJncywgJG5vV2ViS2l0MSwgJG5vV2ViS2l0Miwg
QGZlYXR1cmVzKSA9IEBfOwpAQCAtMjQ0OCwxMCArMjA4OCw2IEBAIHN1YiBzZXRQYXRoRm9yUnVu
bmluZ1dlYktpdEFwcAogCiAgICAgaWYgKGlzQXBwbGVXaW5XZWJLaXQoKSkgewogICAgICAgICAk
ZW52LT57UEFUSH0gPSBqb2luKCc6JywgcHJvZHVjdERpcigpLCBkaXJuYW1lKGluc3RhbGxlZFNh
ZmFyaVBhdGgoKSksIGFwcGxlQXBwbGljYXRpb25TdXBwb3J0UGF0aCgpLCAkZW52LT57UEFUSH0g
fHwgIiIpOwotICAgIH0gZWxzaWYgKGlzUXQoKSkgewotICAgICAgICBteSAkcXRMaWJzID0gYCRx
bWFrZWJpbiAtcXVlcnkgUVRfSU5TVEFMTF9MSUJTYDsKLSAgICAgICAgJHF0TGlicyA9fiBzL1tc
bnxccl0kLy9nOwotICAgICAgICAkZW52LT57UEFUSH0gPSBqb2luKCc7JywgJHF0TGlicywgcHJv
ZHVjdERpcigpIC4gIi9saWIiLCAkZW52LT57UEFUSH0gfHwgIiIpOwogICAgIH0KIH0KIApJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tvdXQvYmFzZWxpbmVvcHRpbWl6
ZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY2hlY2tv
dXQvYmFzZWxpbmVvcHRpbWl6ZXIucHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDQgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEsIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMywgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAt
NTksNyArNjAsNiBAQCBkZWYgX2Jhc2VsaW5lX3NlYXJjaF9oeXBlcmdyYXBoKGhvc3QsIHBvCiBf
VklSVFVBTF9QT1JUUyA9IHsKICAgICAnbWFjLWZ1dHVyZSc6IFsnTGF5b3V0VGVzdHMvcGxhdGZv
cm0vbWFjLWZ1dHVyZScsICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnLCAnTGF5b3V0VGVzdHMn
XSwKICAgICAnd2luLWZ1dHVyZSc6IFsnTGF5b3V0VGVzdHMvcGxhdGZvcm0vd2luLWZ1dHVyZScs
ICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS93aW4nLCAnTGF5b3V0VGVzdHMnXSwKLSAgICAncXQtdW5r
bm93bic6IFsnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtdW5rbm93bicsICdMYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdCcsICdMYXlvdXRUZXN0cyddLAogfQogCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2VsaW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5Cj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NoZWNrb3V0L2Jhc2Vs
aW5lb3B0aW1pemVyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9iYXNlbGluZW9wdGltaXplcl91bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC05OSwyNCArMTAwLDE1IEBAIGNsYXNzIEJhc2VsaW5lT3B0aW1pemVyVGVzdCh1bml0
dGVzdC5UZXMKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMtbGlvbic6ICc0
NjJkMDNiOWMwMjVkYjFiMDM5MmQ3NDUzMzEwZGJlZTVmOWE5ZTc0JywKICAgICAgICAgfSkKIAot
ICAgIGRlZiB0ZXN0X3F0X3Vua25vd24oc2VsZik6Ci0gICAgICAgIHNlbGYuX2Fzc2VydE9wdGlt
aXphdGlvbih7Ci0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNDYyZDAz
YjljMDI1ZGIxYjAzOTJkNzQ1MzMxMGRiZWU1ZjlhOWU3NCcsCi0gICAgICAgIH0sIHsKLSAgICAg
ICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdCc6ICc0NjJkMDNiOWMwMjVkYjFiMDM5MmQ3
NDUzMzEwZGJlZTVmOWE5ZTc0JywKLSAgICAgICAgfSkKLQogICAgIGRlZiB0ZXN0X3dpbl9kb2Vz
X25vdF9kcm9wX3RvX3dpbl83c3AwKHNlbGYpOgogICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6
YXRpb24oewogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL3dpbic6ICcxJywKICAg
ICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnOiAnMicsCiAgICAgICAgICAgICAn
TGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrJzogJzMnLAotICAgICAgICAgICAgJ0xheW91dFRlc3Rz
L3BsYXRmb3JtL3F0JzogJzQnLAogICAgICAgICB9LCB7CiAgICAgICAgICAgICAnTGF5b3V0VGVz
dHMvcGxhdGZvcm0vd2luJzogJzEnLAogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3Jt
L21hYyc6ICcyJywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsnOiAnMycs
Ci0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcsCiAgICAgICAgIH0p
CiAKICAgICBkZWYgdGVzdF9jb21tb25fZGlyZWN0b3J5X2luY2x1ZGVzX3Jvb3Qoc2VsZik6CkBA
IC0xMjQsNyArMTE2LDYgQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXJUZXN0KHVuaXR0ZXN0LlRl
cwogICAgICAgICAjIHRvIG9wdGltaXplLgogICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6YXRp
b25GYWlsZWQoewogICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ayc6ICdlODYw
ODc2M2Y2MjQxZGRhY2RkNWMxZWYxOTczYmEyNzE3N2QwODQ2JywKLSAgICAgICAgICAgICdMYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdCc6ICdiY2JkNDU3ZDU0NTk4NmI3YWJmMTIyMTY1NWQ3MjIzNjMw
NzlhYzg3JywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnOiAnZTg2MDg3
NjNmNjI0MWRkYWNkZDVjMWVmMTk3M2JhMjcxNzdkMDg0NicsCiAgICAgICAgIH0pCiAKQEAgLTE1
MywxMCArMTQ0LDggQEAgY2xhc3MgQmFzZWxpbmVPcHRpbWl6ZXJUZXN0KHVuaXR0ZXN0LlRlcwog
ICAgICAgICBzZWxmLl9hc3NlcnRPcHRpbWl6YXRpb24oewogICAgICAgICAgICAgJ0xheW91dFRl
c3RzL3BsYXRmb3JtL2d0ayc6ICczJywKICAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwnOiAnMycsCi0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQnOiAnNCcs
Ci0gICAgICAgICAgICAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjJzogJzUnLAorICAgICAgICAg
ICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL21hYyc6ICc0JywKICAgICAgICAgfSwgewogICAgICAg
ICAgICAgJ0xheW91dFRlc3RzJzogJzMnLAotICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRm
b3JtL3F0JzogJzQnLAotICAgICAgICAgICAgJ0xheW91dFRlc3RzL3BsYXRmb3JtL21hYyc6ICc1
JywKKyAgICAgICAgICAgICdMYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMnOiAnNCcsCiAgICAgICAg
IH0pCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vs
b2dfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21t
b24vY2hlY2tvdXQvY2hhbmdlbG9nX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9jaGVja291dC9jaGFuZ2Vsb2dfdW5pdHRlc3Qu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAwOSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
IGFyZQpAQCAtMzc2LDcgKzM3Nyw2IEBAIGNsYXNzIENoYW5nZUxvZ1Rlc3QodW5pdHRlc3QuVGVz
dENhc2UpOgogICAgICAgICBzZWxmLl9hc3NlcnRfcGFyc2VfcmV2aWV3ZXJfdGV4dF9saXN0KCdS
ZXZpZXdlZCBieSBOT0JPRFkuJywgTm9uZSkKICAgICAgICAgc2VsZi5fYXNzZXJ0X3BhcnNlX3Jl
dmlld2VyX3RleHRfbGlzdCgnUmV2aWV3ZWQgYnkgTk9CT0RZIC0gQnVpbGQgRml4LicsIE5vbmUp
CiAgICAgICAgIHNlbGYuX2Fzc2VydF9wYXJzZV9yZXZpZXdlcl90ZXh0X2xpc3QoJ1Jldmlld2Vk
IGJ5IE5PQk9EWSwgbGF5b3V0IHRlc3RzIGZpeC4nLCBOb25lKQotICAgICAgICBzZWxmLl9hc3Nl
cnRfcGFyc2VfcmV2aWV3ZXJfdGV4dF9saXN0KCdSZXZpZXdlZCBieSBOT0JPRFkgKFF0IGJ1aWxk
IGZpeCBwdCAyKS4nLCBOb25lKQogICAgICAgICBzZWxmLl9hc3NlcnRfcGFyc2VfcmV2aWV3ZXJf
dGV4dF9saXN0KCdSZXZpZXdlZCBieSBOT0JPRFkocm9sbG91dCknLCBOb25lKQogICAgICAgICBz
ZWxmLl9hc3NlcnRfcGFyc2VfcmV2aWV3ZXJfdGV4dF9saXN0KCdSZXZpZXdlZCBieSBOT0JPRFkg
KEJ1aWxkIGZpeCwgZm9yZ290IHRvIHN2biBhZGQgdGhpcyBmaWxlKScsIE5vbmUpCiAgICAgICAg
IHNlbGYuX2Fzc2VydF9wYXJzZV9yZXZpZXdlcl90ZXh0X2xpc3QoJ1Jldmlld2VkIGJ5IG5vYm9k
eSAodHJpdmlhbCBmb2xsb3cgdXAgZml4KSwgSm9zZXBoIFBlY29yYXJvIExHVE0tZWQuJywgTm9u
ZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL2NvbmZpZy93YXRjaGxpc3QK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24vY29uZmlnL3dhdGNo
bGlzdAkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9jb21tb24v
Y29uZmlnL3dhdGNobGlzdAkod29ya2luZyBjb3B5KQpAQCAtNzUsMjAgKzc1LDYgQEAKICAgICAg
ICAgIkd0a1dlYktpdDJQdWJsaWNBUEkiOiB7CiAgICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrLyIsCiAgICAgICAgIH0sCi0gICAgICAgICJR
dEJ1aWxkU3lzdGVtIjogewotICAgICAgICAgICAgIyBQcm9qZWN0IGZpbGVzIGZvciBlYWNoIHRh
cmdldCBhcmUgaW50ZW50aW9uYWxseSBsZWZ0IG91dCwgYXMgdGhvc2UKLSAgICAgICAgICAgICMg
bW9zdGx5IGxpc3Qgc291cmNlIGFuZCBoZWFkZXIgZmlsZXMsIHdoaWNoIHdvdWxkIGp1c3QgYWRk
IG5vaXNlLgotICAgICAgICAgICAgImZpbGVuYW1lIjogciJUb29scy9xbWFrZS8iCi0gICAgICAg
ICAgICAgICAgICAgICAgICByInxXZWJLaXQucHJvIiwKLSAgICAgICAgfSwKLSAgICAgICAgIlF0
V2ViS2l0MlB1YmxpY0FQSSI6IHsKLSAgICAgICAgICAgICJmaWxlbmFtZSI6IHIiU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2NwcC9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAg
ICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvcXQvIiwKLSAgICAgICAgfSwKLSAg
ICAgICAgIlF0R3JhcGhpY3MiOiB7Ci0gICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3F0LyIKLSAgICAgICAgfSwKICAgICAgICAgIkNvb3Jk
aW5hdGVkR3JhcGhpY3MiOiB7CiAgICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9Db29yZGluYXRlZEdyYXBoaWNzLyIKICAgICAgICAgICAg
ICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBo
aWNzLyIKQEAgLTEwMSwyNiArODcsNiBAQAogICAgICAgICAiT3BlbkdMIjogewogICAgICAgICAg
ICAgImZpbGVuYW1lIjogciJTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
IiwKICAgICAgICAgfSwKLSAgICAgICAgIlF0V2ViS2l0MlBsYXRmb3JtU3BlY2lmaWMiOiB7Ci0g
ICAgICAgICAgICAiZmlsZW5hbWUiOiByIlNvdXJjZS9XZWJLaXQyLy4qXC4ocHJpfHBybykiCi0g
ICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybS9xdC8iCi0g
ICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9xdC8iCi0gICAgICAgICAg
ICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9QbHVnaW5Qcm9jZXNzL3F0LyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1BsYXRmb3JtL3F0LyIKLSAgICAg
ICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1NoYXJlZC9BUEkvYy9xdC8iCi0g
ICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvcXQvIgotICAg
ICAgICAgICAgICAgICAgICAgICAgciJ8U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3Rl
ZEJ1bmRsZS9xdC8iCi0gICAgICAgICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL0Z1bGxTY3JlZW4vcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8U291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL3F0LyIKLSAgICAgICAgICAgICAgICAgICAg
ICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvcXQvIgotICAgICAgICAgICAgICAgICAg
ICAgICAgciJ8U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL3F0LyIK
LSAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvRG93
bmxvYWRzL3F0LyIKLSAgICAgICAgICAgICAgICAgICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvcXQvIgotICAgICAgICAgICAgICAgICAgICAgICAgciJ8
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Db29raWVzL3F0LyIKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHIifFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC8iCi0gICAgICAgICAgICAgICAg
ICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy9xdC8iCi0gICAgICAg
ICAgICAgICAgICAgICAgICByInxTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTGF1bmNoZXIvcXQv
IiwKLSAgICAgICAgfSwKICAgICAgICAgIkNTUyI6IHsKICAgICAgICAgICAgICJmaWxlbmFtZSI6
IHIiU291cmNlL1dlYkNvcmUvY3NzLyIsCiAgICAgICAgIH0sCkBAIC0zNjYsMTAgKzMzMiw2IEBA
CiAgICAgICAgICJOZXR3b3JrSW5mbyI6IFsgImd5dXlvdW5nLmtpbUB3ZWJraXQub3JnIiwgImRj
aHJpc0BnbWFpbC5jb20iIF0sCiAgICAgICAgICJPcGVuR0wiIDogWyAibm9hbUB3ZWJraXQub3Jn
IiwgImRpbm9AYXBwbGUuY29tIiwgImtvbmRhcGFsbHlrYWx5YW5AZ21haWwuY29tIiBdLAogICAg
ICAgICAiUGVyZm9ybWFuY2VUZXN0cyI6IFsgInJuaXdhQHdlYmtpdC5vcmciIF0sCi0gICAgICAg
ICJRdEJ1aWxkU3lzdGVtIiA6IFsgImFiZWNzaUB3ZWJraXQub3JnIiBdLAotICAgICAgICAiUXRH
cmFwaGljcyIgOiBbICJub2FtQHdlYmtpdC5vcmciIF0sCi0gICAgICAgICJRdFdlYktpdDJQbGF0
Zm9ybVNwZWNpZmljIjogWyAiYWxleGlzQHdlYmtpdC5vcmciLCAiY21hcmNlbG9Ad2Via2l0Lm9y
ZyIsICJhYmVjc2lAd2Via2l0Lm9yZyIgXSwKLSAgICAgICAgIlF0V2ViS2l0MlB1YmxpY0FQSSI6
IFsgImFsZXhpc0B3ZWJraXQub3JnIiwgImNtYXJjZWxvQHdlYmtpdC5vcmciLCAiYWJlY3NpQHdl
YmtpdC5vcmciIF0sCiAgICAgICAgICJSZWdpb25zRGV2ZWxvcG1lbnR8UmVnaW9uc0V4cGVjdGF0
aW9uc01vcmV8UmVnaW9uc0V4cGVjdGF0aW9uc0xlc3N8UmVnaW9uc1VzYWdlIjogWyAiV2Via2l0
QnVnVHJhY2tlckBhZG9iZS5jb20iIF0sCiAgICAgICAgICJSZW5kZXJpbmciOiBbICJlc3ByZWhu
K2F1dG9jY0BjaHJvbWl1bS5vcmciLCAiZ2xlbm5Ac2t5bmF2LmNvbSIsICJrb25kYXBhbGx5a2Fs
eWFuQGdtYWlsLmNvbSIgXSwKICAgICAgICAgIlJlbmRlckxheWVycyIgOiBbICJzaW1vbi5mcmFz
ZXJAYXBwbGUuY29tIiwgImtvbmRhcGFsbHlrYWx5YW5AZ21haWwuY29tIiBdLApJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3Jh
dGlvbnRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkJKHJldmlzaW9uIDE1Njg3
NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHNfaW50ZWdyYXRpb250ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDYgKzEsNiBAQAogIyBD
b3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29w
eXJpZ2h0IChDKSAyMDEwIEdhYm9yIFJhcGNzYW55aSAocmdhYm9yQGluZi51LXN6ZWdlZC5odSks
IFVuaXZlcnNpdHkgb2YgU3plZ2VkCi0jIENvcHlyaWdodCAoQykgMjAxMSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMSwgMjAxMyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFy
ZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBA
IC05MjUsOSArOTI1LDYgQEAgY2xhc3MgUG9ydFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAg
IGRlZiBkaXNhYmxlZF90ZXN0X2Nocm9taXVtX21hY19saW9uX2luX3Rlc3Rfc2hlbGxfbW9kZShz
ZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbW9ja19wb3J0X3dvcmtzKCdjaHJvbWl1bS1tYWMt
bGlvbicsIGFyZ3M9WyctLWFkZGl0aW9uYWwtZHJ0LWZsYWc9LS10ZXN0LXNoZWxsJ10pCiAKLSAg
ICBkZWYgZGlzYWJsZWRfdGVzdF9xdF9saW51eChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRf
bW9ja19wb3J0X3dvcmtzKCdxdC1saW51eCcpCi0KICAgICBkZWYgZGlzYWJsZWRfdGVzdF9tYWNf
bGlvbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRfbW9ja19wb3J0X3dvcmtzKCdtYWMtbGlv
bicpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90
ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9leHBlY3RhdGlvbnNfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL21vZGVscy90ZXN0X2V4cGVjdGF0aW9uc191bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNDgsNyArMjQ5
LDcgQEAgY2xhc3MgTWlzY1Rlc3RzKEJhc2UpOgogCiBjbGFzcyBTa2lwcGVkVGVzdHMoQmFzZSk6
CiAgICAgZGVmIGNoZWNrKHNlbGYsIGV4cGVjdGF0aW9ucywgb3ZlcnJpZGVzLCBza2lwcywgbGlu
dD1GYWxzZSk6Ci0gICAgICAgIHBvcnQgPSBNb2NrSG9zdCgpLnBvcnRfZmFjdG9yeS5nZXQoJ3F0
JykKKyAgICAgICAgcG9ydCA9IE1vY2tIb3N0KCkucG9ydF9mYWN0b3J5LmdldCgnbWFjJykKICAg
ICAgICAgcG9ydC5fZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUocG9ydC5fZmlsZXN5c3RlbS5q
b2luKHBvcnQubGF5b3V0X3Rlc3RzX2RpcigpLCAnZmFpbHVyZXMvZXhwZWN0ZWQvdGV4dC5odG1s
JyksICdmb28nKQogICAgICAgICBleHBlY3RhdGlvbnNfZGljdCA9IE9yZGVyZWREaWN0KCkKICAg
ICAgICAgZXhwZWN0YXRpb25zX2RpY3RbJ2V4cGVjdGF0aW9ucyddID0gZXhwZWN0YXRpb25zCkBA
IC0yODcsNyArMjg4LDcgQEAgY2xhc3MgU2tpcHBlZFRlc3RzKEJhc2UpOgogICAgICAgICAgICAg
ICAgICAgIHNraXBzPVsnZmFpbHVyZXMvZXhwZWN0ZWQnXSkKIAogICAgIGRlZiB0ZXN0X3NraXBw
ZWRfZW50cnlfZG9udF9leGlzdChzZWxmKToKLSAgICAgICAgcG9ydCA9IE1vY2tIb3N0KCkucG9y
dF9mYWN0b3J5LmdldCgncXQnKQorICAgICAgICBwb3J0ID0gTW9ja0hvc3QoKS5wb3J0X2ZhY3Rv
cnkuZ2V0KCdtYWMnKQogICAgICAgICBleHBlY3RhdGlvbnNfZGljdCA9IE9yZGVyZWREaWN0KCkK
ICAgICAgICAgZXhwZWN0YXRpb25zX2RpY3RbJ2V4cGVjdGF0aW9ucyddID0gJycKICAgICAgICAg
cG9ydC5leHBlY3RhdGlvbnNfZGljdCA9IGxhbWJkYTogZXhwZWN0YXRpb25zX2RpY3QKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsx
LDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC05NSw3ICs5Niw3IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG9zdCwgcG9ydF9uYW1lLCBv
cHRpb25zPU5vbmUsICoqa3dhcmdzKToKIAogICAgICAgICAjIFRoaXMgdmFsdWUgbWF5IGJlIGRp
ZmZlcmVudCBmcm9tIGNscy5wb3J0X25hbWUgYnkgaGF2aW5nIHZlcnNpb24gbW9kaWZpZXJzCi0g
ICAgICAgICMgYW5kIG90aGVyIGZpZWxkcyBhcHBlbmRlZCB0byBpdCAoZm9yIGV4YW1wbGUsICdx
dC1hcm0nIG9yICdtYWMtd2syJykuCisgICAgICAgICMgYW5kIG90aGVyIGZpZWxkcyBhcHBlbmRl
ZCB0byBpdCAoZm9yIGV4YW1wbGUsICdtYWMtd2syJyBvciAnd2luJykuCiAgICAgICAgIHNlbGYu
X25hbWUgPSBwb3J0X25hbWUKIAogICAgICAgICAjIFRoZXNlIGFyZSBkZWZhdWx0IHZhbHVlcyB0
aGF0IHNob3VsZCBiZSBvdmVycmlkZGVuIGluIGEgc3ViY2xhc3Nlcy4KQEAgLTE0MTAsNyArMTQx
MSw2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAjIHRvIHVzZSBmb3IgYWxsIHBvcnQgY29u
ZmlndXJhdGlvbnMgKGluY2x1ZGluZyBhcmNoaXRlY3R1cmVzLCBncmFwaGljcyB0eXBlcywgZXRj
KS4KICAgICBkZWYgX3BvcnRfZmxhZ19mb3Jfc2NyaXB0cyhzZWxmKToKICAgICAgICAgIyBUaGlz
IGlzIG92ZXJycmlkZW4gYnkgcG9ydHMgd2hpY2ggbmVlZCBhIGZsYWcgcGFzc2VkIHRvIHNjcmlw
dHMgdG8gZGlzdGluZ3Vpc2ggdGhlIHVzZSBvZiB0aGF0IHBvcnQuCi0gICAgICAgICMgRm9yIGV4
YW1wbGUgLS1xdCBvbiBsaW51eCwgc2luY2UgYSB1c2VyIG1pZ2h0IGhhdmUgYm90aCBHdGsgYW5k
IFF0IGxpYnJhcmllcyBpbnN0YWxsZWQuCiAgICAgICAgIHJldHVybiBOb25lCiAKICAgICBkZWYg
dG9vbGluZ19mbGFnKHNlbGYpOgpAQCAtMTUzNiw3ICsxNTM2LDYgQEAgY2xhc3MgUG9ydChvYmpl
Y3QpOgogCiAgICAgZGVmIF93azJfcG9ydF9uYW1lKHNlbGYpOgogICAgICAgICAjIEJ5IGN1cnJl
bnQgY29udmVudGlvbiwgdGhlIFdlYktpdDIgbmFtZSBpcyBhbHdheXMgbWFjLXdrMiwgd2luLXdr
Miwgbm90IG1hYy1sZW9wYXJkLXdrMiwgZXRjLAotICAgICAgICAjIGV4Y2VwdCBmb3IgUXQgYmVj
YXVzZSBXZWJLaXQyIGlzIG9ubHkgc3VwcG9ydGVkIGJ5IFF0IDUuMCAodGhlcmVmb3JlOiBxdC01
LjAtd2syKS4KICAgICAgICAgcmV0dXJuICIlcy13azIiICUgc2VsZi5wb3J0X25hbWUKIAogICAg
ICMgV2UgbWlnaHQgbmVlZCB0byBwYXNzIHNjbSBpbnRvIHRoaXMgZnVuY3Rpb24gZm9yIHNjbS5j
aGVja291dF9yb290CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRlcnMu
cHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2J1aWxkZXJzLnB5
CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYnVpbGRl
cnMucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAx
MSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTMg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtNjQsOSArNjUsNiBAQCBfZXhhY3RfbWF0Y2hlcyA9IHsKICAgICAiR1RLIExp
bnV4IDY0LWJpdCBSZWxlYXNlIjogeyJwb3J0X25hbWUiOiAiZ3RrIiwgImlzX2RlYnVnIjogRmFs
c2V9LAogICAgICJHVEsgTGludXggNjQtYml0IFJlbGVhc2UgV0syIChUZXN0cykiOiB7InBvcnRf
bmFtZSI6ICJndGstd2syIiwgImlzX2RlYnVnIjogRmFsc2V9LAogCi0gICAgIyBGSVhNRTogUmVt
b3ZlIHJlYmFzZWxpbmVfb3ZlcnJpZGVfZGlyIG9uY2UgdGhlcmUgYXJlIFF0IGJvdHMgZm9yIGFs
bCB0aGUgcGxhdGZvcm0vcXQtKiBkaXJlY3Rvcmllcy4KLSAgICAiUXQgTGludXggUmVsZWFzZSI6
IHsicG9ydF9uYW1lIjogInF0LWxpbnV4IiwgImlzX2RlYnVnIjogRmFsc2UsICJyZWJhc2VsaW5l
X292ZXJyaWRlX2RpciI6ICJxdCJ9LAotCiAgICAgIkVGTCBMaW51eCA2NC1iaXQgUmVsZWFzZSI6
IHsicG9ydF9uYW1lIjogImVmbCIsICJpc19kZWJ1ZyI6IEZhbHNlfSwKICAgICAiRUZMIExpbnV4
IDY0LWJpdCBSZWxlYXNlIFdLMiI6IHsicG9ydF9uYW1lIjogImVmbC13azIiLCAiaXNfZGVidWci
OiBGYWxzZX0sCiAgICAgIkVGTCBMaW51eCA2NC1iaXQgRGVidWcgV0syIjogeyJwb3J0X25hbWUi
OiAiZWZsLXdrMiIsICJpc19kZWJ1ZyI6IFRydWV9LApAQCAtNzksMTQgKzc3LDEwIEBAIF9mdXp6
eV9tYXRjaGVzID0gewogICAgIHIiQXBwbGUgTGlvbiI6ICJtYWMtbGlvbiIsCiAgICAgciJXaW5k
b3dzIjogIndpbiIsCiAgICAgciJHVEsiOiAiZ3RrIiwKLSAgICByIlF0IjogInF0IiwKIH0KIAog
CiBfcG9ydHNfd2l0aG91dF9idWlsZGVycyA9IFsKLSAgICAicXQtbWFjIiwKLSAgICAicXQtd2lu
IiwKLSAgICAicXQtd2syIiwKIF0KIAogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZmFjdG9yeS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZmFjdG9yeS5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9w
b3J0L2ZhY3RvcnkucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw1IEBACiAjIENvcHlyaWdo
dCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQg
KEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQpAQCAtNDUsOSArNDYsNiBAQCBkZWYgcGxhdGZvcm1fb3B0aW9ucyh1
c2VfZ2xvYnM9RmFsc2UpOgogICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1ndGsnLCBh
Y3Rpb249J3N0b3JlX2NvbnN0JywgZGVzdD0ncGxhdGZvcm0nLAogICAgICAgICAgICAgY29uc3Q9
KCdndGsqJyBpZiB1c2VfZ2xvYnMgZWxzZSAnZ3RrJyksCiAgICAgICAgICAgICBoZWxwPSgnQWxp
YXMgZm9yIC0tcGxhdGZvcm09Z3RrKicgaWYgdXNlX2dsb2JzIGVsc2UgJ0FsaWFzIGZvciAtLXBs
YXRmb3JtPWd0aycpKSwKLSAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tcXQnLCBhY3Rp
b249J3N0b3JlX2NvbnN0JywgZGVzdD0icGxhdGZvcm0iLAotICAgICAgICAgICAgY29uc3Q9KCdx
dConIGlmIHVzZV9nbG9icyBlbHNlICdxdCcpLAotICAgICAgICAgICAgaGVscD0oJ0FsaWFzIGZv
ciAtLXBsYXRmb3JtPXF0JyBpZiB1c2VfZ2xvYnMgZWxzZSAnQWxpYXMgZm9yIC0tcGxhdGZvcm09
cXQnKSksCiAgICAgICAgIF0KIAogCkBAIC03OCw3ICs3Niw2IEBAIGNsYXNzIFBvcnRGYWN0b3J5
KG9iamVjdCk6CiAgICAgICAgICdndGsuR3RrUG9ydCcsCiAgICAgICAgICdtYWMuTWFjUG9ydCcs
CiAgICAgICAgICdtb2NrX2RydC5Nb2NrRFJUUG9ydCcsCi0gICAgICAgICdxdC5RdFBvcnQnLAog
ICAgICAgICAndGVzdC5UZXN0UG9ydCcsCiAgICAgICAgICd3aW4uV2luUG9ydCcsCiAgICAgKQpA
QCAtODksNyArODYsNyBAQCBjbGFzcyBQb3J0RmFjdG9yeShvYmplY3QpOgogICAgIGRlZiBfZGVm
YXVsdF9wb3J0KHNlbGYsIG9wdGlvbnMpOgogICAgICAgICBwbGF0Zm9ybSA9IHNlbGYuX2hvc3Qu
cGxhdGZvcm0KICAgICAgICAgaWYgcGxhdGZvcm0uaXNfbGludXgoKSBvciBwbGF0Zm9ybS5pc19m
cmVlYnNkKCk6Ci0gICAgICAgICAgICByZXR1cm4gJ3F0LWxpbnV4JworICAgICAgICAgICAgcmV0
dXJuICdndGsnCiAgICAgICAgIGVsaWYgcGxhdGZvcm0uaXNfbWFjKCk6CiAgICAgICAgICAgICBy
ZXR1cm4gJ21hYycKICAgICAgICAgZWxpZiBwbGF0Zm9ybS5pc193aW4oKToKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9mYWN0b3J5X3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZmFjdG9yeV91bml0dGVz
dC5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEw
IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMyBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0zNCw3ICszNSw2IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5zeXN0
ZW1ob3N0X20KIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgZmFjdG9yeQogZnJvbSB3ZWJraXRw
eS5wb3J0IGltcG9ydCBndGsKIGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgbWFjCi1mcm9tIHdl
YmtpdHB5LnBvcnQgaW1wb3J0IHF0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IHRlc3QKIGZy
b20gd2Via2l0cHkucG9ydCBpbXBvcnQgd2luCiAKQEAgLTY4LDkgKzY4LDYgQEAgY2xhc3MgRmFj
dG9yeVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2d0ayhzZWxmKToKICAg
ICAgICAgc2VsZi5hc3NlcnRfcG9ydChwb3J0X25hbWU9J2d0aycsIGNscz1ndGsuR3RrUG9ydCkK
IAotICAgIGRlZiB0ZXN0X3F0KHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydF9wb3J0KHBvcnRf
bmFtZT0ncXQnLCBjbHM9cXQuUXRQb3J0KQotCiAgICAgZGVmIHRlc3RfdW5rbm93bl9zcGVjaWZp
ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3Is
IGZhY3RvcnkuUG9ydEZhY3RvcnkoTW9ja1N5c3RlbUhvc3QoKSkuZ2V0LCBwb3J0X25hbWU9J3Vu
a25vd24nKQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L3F0LnB5CShyZXZpc2lvbiAxNTY4
NzUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXQucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsMjA5ICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCi0jIG1ldDoK
LSMKLSMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSMgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotIyAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCi0jIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKLSMgaW4g
dGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZQotIyBkaXN0cmlidXRpb24uCi0jICAgICAqIE5laXRoZXIgdGhlIEdvb2dsZSBuYW1lIG5vciB0
aGUgbmFtZXMgb2YgaXRzCi0jIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCi0jIHRoaXMgc29mdHdhcmUgd2l0aG91dCBz
cGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0jCi0jIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKLSMgIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SCi0jIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCi0jIE9XTkVSIE9SIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAotIyBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCi0jIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLAotIyBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSMgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotIyAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKLSMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIiIiUXRXZWJLaXQgaW1wbGVtZW50YXRpb24g
b2YgdGhlIFBvcnQgaW50ZXJmYWNlLiIiIgotCi1pbXBvcnQgZ2xvYgotaW1wb3J0IGxvZ2dpbmcK
LWltcG9ydCByZQotaW1wb3J0IHN5cwotaW1wb3J0IG9zCi1pbXBvcnQgcGxhdGZvcm0KLQotZnJv
bSB3ZWJraXRweS5jb21tb24ubWVtb2l6ZWQgaW1wb3J0IG1lbW9pemVkCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmln
dXJhdGlvbgotZnJvbSB3ZWJraXRweS5wb3J0LmJhc2UgaW1wb3J0IFBvcnQKLWZyb20gd2Via2l0
cHkucG9ydC54dmZiZHJpdmVyIGltcG9ydCBYdmZiRHJpdmVyCi1mcm9tIHdlYmtpdHB5LnBvcnQu
bGludXhfZ2V0X2NyYXNoX2xvZyBpbXBvcnQgR0RCQ3Jhc2hMb2dHZW5lcmF0b3IKLQotX2xvZyA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQotCi0KLWNsYXNzIFF0UG9ydChQb3J0KToKLSAg
ICBBTExfVkVSU0lPTlMgPSBbJ2xpbnV4JywgJ3dpbicsICdtYWMnXQotICAgIHBvcnRfbmFtZSA9
ICJxdCIKLQotICAgIGRlZiBfd2syX3BvcnRfbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICJx
dC13azIiCi0KLSAgICBkZWYgX3BvcnRfZmxhZ19mb3Jfc2NyaXB0cyhzZWxmKToKLSAgICAgICAg
cmV0dXJuICItLXF0IgotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGRldGVybWluZV9mdWxs
X3BvcnRfbmFtZShjbHMsIGhvc3QsIG9wdGlvbnMsIHBvcnRfbmFtZSk6Ci0gICAgICAgIGlmIHBv
cnRfbmFtZSBhbmQgcG9ydF9uYW1lICE9IGNscy5wb3J0X25hbWU6Ci0gICAgICAgICAgICByZXR1
cm4gcG9ydF9uYW1lCi0gICAgICAgIHJldHVybiBwb3J0X25hbWUgKyAnLScgKyBob3N0LnBsYXRm
b3JtLm9zX25hbWUKLQotICAgICMgc3lzX3BsYXRmb3JtIGV4aXN0cyBvbmx5IGZvciB1bml0IHRl
c3RpbmcuCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGhvc3QsIHBvcnRfbmFtZSwgKiprd2FyZ3Mp
OgotICAgICAgICBzdXBlcihRdFBvcnQsIHNlbGYpLl9faW5pdF9fKGhvc3QsIHBvcnRfbmFtZSwg
Kiprd2FyZ3MpCi0KLSAgICAgICAgc2VsZi5fb3BlcmF0aW5nX3N5c3RlbSA9IHBvcnRfbmFtZS5y
ZXBsYWNlKCdxdC0nLCAnJykKLQotICAgICAgICAjIEZJWE1FOiBXaHkgaXMgdGhpcyBiZWluZyBz
ZXQgYXQgYWxsPwotICAgICAgICBzZWxmLl92ZXJzaW9uID0gc2VsZi5vcGVyYXRpbmdfc3lzdGVt
KCkKLQotICAgIGRlZiBfZ2VuZXJhdGVfYWxsX3Rlc3RfY29uZmlndXJhdGlvbnMoc2VsZik6Ci0g
ICAgICAgIGNvbmZpZ3VyYXRpb25zID0gW10KLSAgICAgICAgZm9yIHZlcnNpb24gaW4gc2VsZi5B
TExfVkVSU0lPTlM6Ci0gICAgICAgICAgICBmb3IgYnVpbGRfdHlwZSBpbiBzZWxmLkFMTF9CVUlM
RF9UWVBFUzoKLSAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9ucy5hcHBlbmQoVGVzdENvbmZp
Z3VyYXRpb24odmVyc2lvbj12ZXJzaW9uLCBhcmNoaXRlY3R1cmU9J3g4NicsIGJ1aWxkX3R5cGU9
YnVpbGRfdHlwZSkpCi0gICAgICAgIHJldHVybiBjb25maWd1cmF0aW9ucwotCi0gICAgZGVmIF9i
dWlsZF9kcml2ZXIoc2VsZik6Ci0gICAgICAgICMgVGhlIFF0IHBvcnQgYnVpbGRzIERSVCBhcyBw
YXJ0IG9mIHRoZSBtYWluIGJ1aWxkIHN0ZXAKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRl
ZiBzdXBwb3J0c19wZXJfdGVzdF90aW1lb3V0KHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQot
Ci0gICAgZGVmIF9wYXRoX3RvX2RyaXZlcihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1
aWxkX3BhdGgoJ2Jpbi8lcycgJSBzZWxmLmRyaXZlcl9uYW1lKCkpCi0KLSAgICBkZWYgX3BhdGhf
dG9faW1hZ2VfZGlmZihzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2J1aWxkX3BhdGgoJ2Jp
bi9JbWFnZURpZmYnKQotCi0gICAgZGVmIF9wYXRoX3RvX3dlYmNvcmVfbGlicmFyeShzZWxmKToK
LSAgICAgICAgaWYgc2VsZi5vcGVyYXRpbmdfc3lzdGVtKCkgPT0gJ21hYyc6Ci0gICAgICAgICAg
ICByZXR1cm4gc2VsZi5fYnVpbGRfcGF0aCgnbGliL1F0V2ViS2l0V2lkZ2V0cy5mcmFtZXdvcmsv
UXRXZWJLaXRXaWRnZXRzJykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBzZWxm
Ll9idWlsZF9wYXRoKCdsaWIvbGliUXQ1V2ViS2l0V2lkZ2V0cy5zbycpCi0KLSAgICBkZWYgX21v
ZHVsZXNfdG9fc2VhcmNoX2Zvcl9zeW1ib2xzKHNlbGYpOgotICAgICAgICAjIFdlIHNlYXJjaCBp
biBldmVyeSBsaWJyYXJ5IHRvIGJlIHJlbGlhYmxlIGluIHRoZSBjYXNlIG9mIGJ1aWxkaW5nIHdp
dGggQ09ORklHKz1mb3JjZV9zdGF0aWNfbGlic19hc19zaGFyZWQuCi0gICAgICAgIGlmIHNlbGYu
b3BlcmF0aW5nX3N5c3RlbSgpID09ICdtYWMnOgotICAgICAgICAgICAgZnJhbWV3b3JrcyA9IGds
b2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5fYnVpbGRfcGF0aCgnbGliJyksICcqLmZyYW1ld29y
aycpKQotICAgICAgICAgICAgcmV0dXJuIFtvcy5wYXRoLmpvaW4oZnJhbWV3b3JrLCBvcy5wYXRo
LnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUoZnJhbWV3b3JrKSlbMF0pIGZvciBmcmFtZXdvcmsg
aW4gZnJhbWV3b3Jrc10KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHN1ZmZpeCA9ICdkbGwn
IGlmIHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpID09ICd3aW4nIGVsc2UgJ3NvJwotICAgICAgICAg
ICAgcmV0dXJuIGdsb2IuZ2xvYihvcy5wYXRoLmpvaW4oc2VsZi5fYnVpbGRfcGF0aCgnbGliJyks
ICdsaWIqLicgKyBzdWZmaXgpKQotCi0gICAgQG1lbW9pemVkCi0gICAgZGVmIHF0X3ZlcnNpb24o
c2VsZik6Ci0gICAgICAgIHZlcnNpb24gPSAnJwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBm
b3IgbGluZSBpbiBzZWxmLl9leGVjdXRpdmUucnVuX2NvbW1hbmQoWydxbWFrZScsICctdiddKS5z
cGxpdCgnXG4nKToKLSAgICAgICAgICAgICAgICBtYXRjaCA9IHJlLnNlYXJjaCgnUXRcc3ZlcnNp
b25ccyg/UDx2ZXJzaW9uPlxkXC5cZCknLCBsaW5lKQotICAgICAgICAgICAgICAgIGlmIG1hdGNo
OgotICAgICAgICAgICAgICAgICAgICB2ZXJzaW9uID0gbWF0Y2guZ3JvdXAoJ3ZlcnNpb24nKQot
ICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAg
ICAgICAgIHZlcnNpb24gPSAnNS4wJwotICAgICAgICByZXR1cm4gdmVyc2lvbgotCi0gICAgZGVm
IF9zZWFyY2hfcGF0aHMoc2VsZik6Ci0gICAgICAgICMgICAgICAgICAgICAgICAgIHF0LW1hYy13
azIKLSAgICAgICAgIyAgICAgICAgICAgICAgICAvCi0gICAgICAgICMgICAgICAgcXQtd2sxICBx
dC13azIKLSAgICAgICAgIyAgICAgICAgICAgICBcLwotICAgICAgICAjICAgICAgICAgICBxdC01
LngKLSAgICAgICAgIyAgICAgICAgICAgICAgIFwKLSAgICAgICAgIyAgICAocXQtbGludXh8cXQt
bWFjfHF0LXdpbikKLSAgICAgICAgIyAgICAgICAgICAgICAgICB8Ci0gICAgICAgICMgICAgICAg
ICAgICAgICBxdAotICAgICAgICBzZWFyY2hfcGF0aHMgPSBbXQotICAgICAgICBpZiBzZWxmLmdl
dF9vcHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAgICAgICAgICAgaWYgc2VsZi5vcGVy
YXRpbmdfc3lzdGVtKCkgPT0gJ21hYyc6Ci0gICAgICAgICAgICAgICAgc2VhcmNoX3BhdGhzLmFw
cGVuZCgncXQtbWFjLXdrMicpCi0gICAgICAgICAgICBzZWFyY2hfcGF0aHMuYXBwZW5kKCdxdC13
azInKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VhcmNoX3BhdGhzLmFwcGVuZCgncXQt
d2sxJykKLQotICAgICAgICBzZWFyY2hfcGF0aHMuYXBwZW5kKCdxdC0nICsgc2VsZi5xdF92ZXJz
aW9uKCkpCi0KLSAgICAgICAgc2VhcmNoX3BhdGhzLmFwcGVuZChzZWxmLnBvcnRfbmFtZSArICct
JyArIHNlbGYub3BlcmF0aW5nX3N5c3RlbSgpKQotICAgICAgICBzZWFyY2hfcGF0aHMuYXBwZW5k
KHNlbGYucG9ydF9uYW1lKQotICAgICAgICByZXR1cm4gc2VhcmNoX3BhdGhzCi0KLSAgICBkZWYg
ZGVmYXVsdF9iYXNlbGluZV9zZWFyY2hfcGF0aChzZWxmKToKLSAgICAgICAgcmV0dXJuIG1hcChz
ZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aCwgc2VsZi5fc2VhcmNoX3BhdGhzKCkpCi0KLSAgICBk
ZWYgX3BvcnRfc3BlY2lmaWNfZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYpOgotICAgICAgICBwYXRo
cyA9IHNlbGYuX3NlYXJjaF9wYXRocygpCi0gICAgICAgIGlmIHNlbGYuZ2V0X29wdGlvbignd2Vi
a2l0X3Rlc3RfcnVubmVyJyk6Ci0gICAgICAgICAgICBwYXRocy5hcHBlbmQoJ3drMicpCi0KLSAg
ICAgICAgIyBleHBlY3RhdGlvbnNfZmlsZXMoKSB1c2VzIHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQg
aW4gX3NlYXJjaF9wYXRocyByZXZlcnNlZC4KLSAgICAgICAgIyBlLmcuIHF0IC0+IHF0LWxpbnV4
IC0+IHF0LTUueCAtPiBxdC13azEKLSAgICAgICAgcmV0dXJuIGxpc3QocmV2ZXJzZWQoW3NlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLl93ZWJraXRfYmFzZWxpbmVfcGF0aChwKSwgJ1Rlc3RFeHBl
Y3RhdGlvbnMnKSBmb3IgcCBpbiBwYXRoc10pKQotCi0gICAgZGVmIHNldHVwX2Vudmlyb25fZm9y
X3NlcnZlcihzZWxmLCBzZXJ2ZXJfbmFtZT1Ob25lKToKLSAgICAgICAgY2xlYW5fZW52ID0gc3Vw
ZXIoUXRQb3J0LCBzZWxmKS5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIoc2VydmVyX25hbWUpCi0g
ICAgICAgIGNsZWFuX2VudlsnUVRXRUJLSVRfUExVR0lOX1BBVEgnXSA9IHNlbGYuX2J1aWxkX3Bh
dGgoJ2xpYi9wbHVnaW5zJykKLSAgICAgICAgc2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25f
aWZfc2V0KGNsZWFuX2VudiwgJ1FUX0RSVF9XRUJWSUVXX01PREUnKQotICAgICAgICBzZWxmLl9j
b3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoY2xlYW5fZW52LCAnRFlMRF9JTUFHRV9TVUZG
SVgnKQotICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoY2xlYW5f
ZW52LCAnUVRfV0VCS0lUX0xPRycpCi0gICAgICAgIHNlbGYuX2NvcHlfdmFsdWVfZnJvbV9lbnZp
cm9uX2lmX3NldChjbGVhbl9lbnYsICdESVNBQkxFX05JX1dBUk5JTkcnKQotICAgICAgICBzZWxm
Ll9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9pZl9zZXQoY2xlYW5fZW52LCAnUVRfV0VCS0lUX1BB
VVNFX1VJX1BST0NFU1MnKQotICAgICAgICBzZWxmLl9jb3B5X3ZhbHVlX2Zyb21fZW52aXJvbl9p
Zl9zZXQoY2xlYW5fZW52LCAnUVRfUVBBX1BMQVRGT1JNX1BMVUdJTl9QQVRIJykKLSAgICAgICAg
c2VsZi5fY29weV92YWx1ZV9mcm9tX2Vudmlyb25faWZfc2V0KGNsZWFuX2VudiwgJ1FUX1dFQktJ
VF9ESVNBQkxFX1VJUFJPQ0VTU19EVU1QUElYRUxTJykKLSAgICAgICAgcmV0dXJuIGNsZWFuX2Vu
dgotCi0gICAgIyBGSVhNRTogV2Ugc2hvdWxkIGZpbmQgYSB3YXkgdG8gc2hhcmUgdGhpcyBpbXBs
bWVudGF0aW9uIHdpdGggR3RrLAotICAgICMgb3IgdGVhY2ggcnVuLWxhdW5jaGVyIGhvdyB0byBj
YWxsIHJ1bi1zYWZhcmkgYW5kIG1vdmUgdGhpcyBkb3duIHRvIFBvcnQuCi0gICAgZGVmIHNob3df
cmVzdWx0c19odG1sX2ZpbGUoc2VsZiwgcmVzdWx0c19maWxlbmFtZSk6Ci0gICAgICAgIHJ1bl9s
YXVuY2hlcl9hcmdzID0gW10KLSAgICAgICAgaWYgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVz
dF9ydW5uZXInKToKLSAgICAgICAgICAgIHJ1bl9sYXVuY2hlcl9hcmdzLmFwcGVuZCgnLTInKQot
ICAgICAgICBydW5fbGF1bmNoZXJfYXJncy5hcHBlbmQoImZpbGU6Ly8lcyIgJSByZXN1bHRzX2Zp
bGVuYW1lKQotICAgICAgICBzZWxmLl9ydW5fc2NyaXB0KCJydW4tbGF1bmNoZXIiLCBydW5fbGF1
bmNoZXJfYXJncykKLQotICAgIGRlZiBvcGVyYXRpbmdfc3lzdGVtKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gc2VsZi5fb3BlcmF0aW5nX3N5c3RlbQotCi0gICAgZGVmIGNoZWNrX3N5c19kZXBzKHNl
bGYsIG5lZWRzX2h0dHApOgotICAgICAgICByZXN1bHQgPSBzdXBlcihRdFBvcnQsIHNlbGYpLmNo
ZWNrX3N5c19kZXBzKG5lZWRzX2h0dHApCi0gICAgICAgIGlmIG5vdCAnV0VCS0lUX1RFU1RGT05U
UycgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgIF9sb2cuZXJyb3IoJ1xuVGhlIFdFQktJVF9U
RVNURk9OVFMgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGRlZmluZWQgb3Igbm90IHNldCBw
cm9wZXJseS4nKQotICAgICAgICAgICAgX2xvZy5lcnJvcignWW91IG11c3Qgc2V0IGl0IGJlZm9y
ZSBydW5uaW5nIHRoZSB0ZXN0cy4nKQotICAgICAgICAgICAgX2xvZy5lcnJvcignVXNlIGdpdCB0
byBncmFiIHRoZSBhY3R1YWwgZm9udHMgZnJvbSBodHRwOi8vZ2l0b3Jpb3VzLm9yZy9xdHdlYmtp
dC90ZXN0Zm9udHMnKQotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIHJldHVybiBy
ZXN1bHQKLQotICAgICMgUXQgcG9ydCBpcyBub3QgcmVhZHkgZm9yIHBhcmFsbGVsIHRlc3Rpbmcs
IHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzc3MzAgZm9yIGRl
dGFpbHMuCi0gICAgZGVmIGRlZmF1bHRfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgotICAgICAgICBy
ZXR1cm4gMQotCi0gICAgZGVmIGJ1aWxkX3dlYmtpdF9jb21tYW5kKHNlbGYsIGJ1aWxkX3N0eWxl
PU5vbmUpOgotICAgICAgICBjb21tYW5kID0gc3VwZXIoUXRQb3J0LCBzZWxmKS5idWlsZF93ZWJr
aXRfY29tbWFuZChidWlsZF9zdHlsZSkKLSAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tcXQiKQot
ICAgICAgICBpZiBub3Qgc2VsZi5nZXRfb3B0aW9uKCd3ZWJraXRfdGVzdF9ydW5uZXInKToKLSAg
ICAgICAgICAgIGNvbW1hbmQuYXBwZW5kKCItLW5vLXdlYmtpdDIiKQotICAgICAgICBjb21tYW5k
LmFwcGVuZChzdXBlcihRdFBvcnQsIHNlbGYpLm1ha2VfYXJncygpKQotICAgICAgICByZXR1cm4g
Y29tbWFuZAotCi0gICAgZGVmIHJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZChzZWxmKToKLSAgICAg
ICAgY29tbWFuZCA9IHN1cGVyKFF0UG9ydCwgc2VsZikucnVuX3dlYmtpdF90ZXN0c19jb21tYW5k
KCkKLSAgICAgICAgY29tbWFuZC5hcHBlbmQoIi0tcXQiKQotICAgICAgICBpZiBzZWxmLmdldF9v
cHRpb24oJ3dlYmtpdF90ZXN0X3J1bm5lcicpOgotICAgICAgICAgICAgY29tbWFuZC5hcHBlbmQo
Ii0yIikKLSAgICAgICAgcmV0dXJuIGNvbW1hbmQKLQotICAgIGRlZiBfZ2V0X2NyYXNoX2xvZyhz
ZWxmLCBuYW1lLCBwaWQsIHN0ZG91dCwgc3RkZXJyLCBuZXdlcl90aGFuKToKLSAgICAgICAgcmV0
dXJuIEdEQkNyYXNoTG9nR2VuZXJhdG9yKG5hbWUsIHBpZCwgbmV3ZXJfdGhhbiwgc2VsZi5fZmls
ZXN5c3RlbSwgc2VsZi5fcGF0aF90b19kcml2ZXIpLmdlbmVyYXRlX2NyYXNoX2xvZyhzdGRvdXQs
IHN0ZGVycikKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91bml0dGVzdC5w
eQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvcXRfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9xdF91
bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtMSwxNTggKzAsMCBAQAotIyBDb3B5cmlnaHQg
KEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMKLSMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
Ci0jIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucyBhcmUKLSMgbWV0OgotIwotIyAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0jIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgICAg
KiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
Ci0jIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIKLSMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotIyBkaXN0cmlidXRpb24uCi0jICAgICogTmVpdGhl
ciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyBjb250cmli
dXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQg
ZnJvbQotIyB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJt
aXNzaW9uLgotIwotIyBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQg
SE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCi0jICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCi0jIExJTUlURUQgVE8sIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgotIyBB
IFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhF
IENPUFlSSUdIVAotIyBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKLSMgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVAotIyBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKLSMg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCi0jIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSMgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0jIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0KLWltcG9ydCB1bml0dGVzdDIgYXMgdW5pdHRlc3QKLWltcG9ydCBvcwotZnJvbSBjb3B5IGlt
cG9ydCBkZWVwY29weQotCi1mcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21v
Y2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUsIE1vY2tFeGVjdXRpdmUyCi1mcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQotZnJvbSB3ZWJr
aXRweS5jb21tb24uc3lzdGVtLnN5c3RlbWhvc3RfbW9jayBpbXBvcnQgTW9ja1N5c3RlbUhvc3QK
LWZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgcG9ydF90ZXN0Y2FzZQotZnJvbSB3ZWJraXRweS5w
b3J0LmJhc2UgaW1wb3J0IFBvcnQKLWZyb20gd2Via2l0cHkucG9ydC5xdCBpbXBvcnQgUXRQb3J0
Ci1mcm9tIHdlYmtpdHB5LnRvb2wubW9ja3Rvb2wgaW1wb3J0IE1vY2tPcHRpb25zCi0KLQotY2xh
c3MgUXRQb3J0VGVzdChwb3J0X3Rlc3RjYXNlLlBvcnRUZXN0Q2FzZSk6Ci0gICAgcG9ydF9uYW1l
ID0gJ3F0LW1hYycKLSAgICBwb3J0X21ha2VyID0gUXRQb3J0Ci0gICAgc2VhcmNoX3BhdGhzX2Nh
c2VzID0gWwotICAgICAgICB7J3NlYXJjaF9wYXRocyc6WydxdC1tYWMtd2syJywgJ3F0LXdrMics
ICdxdC01LjAnLCAncXQtbWFjJywgJ3F0J10sICdvc19uYW1lJzonbWFjJywgJ3VzZV93ZWJraXQy
JzpUcnVlLCAncXRfdmVyc2lvbic6JzUuMCd9LAotICAgICAgICB7J3NlYXJjaF9wYXRocyc6Wydx
dC13azInLCAncXQtNS4wJywgJ3F0LXdpbicsICdxdCddLCAnb3NfbmFtZSc6J3dpbicsICd1c2Vf
d2Via2l0Mic6VHJ1ZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwKLSAgICAgICAgeydzZWFyY2hfcGF0
aHMnOlsncXQtd2syJywgJ3F0LTUuMCcsICdxdC1saW51eCcsICdxdCddLCAnb3NfbmFtZSc6J2xp
bnV4JywgJ3VzZV93ZWJraXQyJzpUcnVlLCAncXRfdmVyc2lvbic6JzUuMCd9LAotCi0gICAgICAg
IHsnc2VhcmNoX3BhdGhzJzpbJ3F0LXdrMScsICdxdC01LjAnLCAncXQtbWFjJywgJ3F0J10sICdv
c19uYW1lJzonbWFjJywgJ3VzZV93ZWJraXQyJzpGYWxzZSwgJ3F0X3ZlcnNpb24nOic1LjAnfSwK
LSAgICAgICAgeydzZWFyY2hfcGF0aHMnOlsncXQtd2sxJywgJ3F0LTUuMCcsICdxdC13aW4nLCAn
cXQnXSwgJ29zX25hbWUnOid3aW4nLCAndXNlX3dlYmtpdDInOkZhbHNlLCAncXRfdmVyc2lvbic6
JzUuMCd9LAotICAgICAgICB7J3NlYXJjaF9wYXRocyc6WydxdC13azEnLCAncXQtNS4wJywgJ3F0
LWxpbnV4JywgJ3F0J10sICdvc19uYW1lJzonbGludXgnLCAndXNlX3dlYmtpdDInOkZhbHNlLCAn
cXRfdmVyc2lvbic6JzUuMCd9LAotICAgICAgICB7J3NlYXJjaF9wYXRocyc6WydxdC13azEnLCAn
cXQtNS4xJywgJ3F0LWxpbnV4JywgJ3F0J10sICdvc19uYW1lJzonbGludXgnLCAndXNlX3dlYmtp
dDInOkZhbHNlLCAncXRfdmVyc2lvbic6JzUuMSd9LAotICAgIF0KLQotICAgIGRlZiBfYXNzZXJ0
X3NlYXJjaF9wYXRoKHNlbGYsIHNlYXJjaF9wYXRocywgb3NfbmFtZSwgdXNlX3dlYmtpdDI9RmFs
c2UsIHF0X3ZlcnNpb249JzUuMCcpOgotICAgICAgICAjIEZJWE1FOiBQb3J0IGNvbnN0cnVjdG9y
cyBzaG91bGQgbm90ICJwYXJzZSIgdGhlIHBvcnQgbmFtZSwgYnV0Ci0gICAgICAgICMgcmF0aGVy
IGJlIHBhc3NlZCBjb21wb25lbnRzIChkaXJlY3RseSBvciB2aWEgc2V0dGVycykuICBPbmNlCi0g
ICAgICAgICMgd2UgZml4IHRoYXQsIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCBhIHJlLXdyaXRlLgot
ICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3Qob3NfbmFtZT1vc19uYW1lKQotICAgICAgICBo
b3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHNlbGYuX3F0X3ZlcnNpb24ocXRfdmVyc2lv
bikpCi0gICAgICAgIHBvcnRfbmFtZSA9ICdxdC0nICsgb3NfbmFtZQotICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoaG9zdD1ob3N0LCBxdF92ZXJzaW9uPXF0X3ZlcnNpb24sIHBvcnRfbmFt
ZT1wb3J0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb25zPU1vY2tP
cHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MiwgcGxhdGZvcm09J3F0JykpCi0g
ICAgICAgIGFic29sdXRlX3NlYXJjaF9wYXRocyA9IG1hcChwb3J0Ll93ZWJraXRfYmFzZWxpbmVf
cGF0aCwgc2VhcmNoX3BhdGhzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuYmFzZWxp
bmVfc2VhcmNoX3BhdGgoKSwgYWJzb2x1dGVfc2VhcmNoX3BhdGhzKQotCi0gICAgZGVmIF9hc3Nl
cnRfZXhwZWN0YXRpb25zX2ZpbGVzKHNlbGYsIHNlYXJjaF9wYXRocywgb3NfbmFtZSwgdXNlX3dl
YmtpdDI9RmFsc2UsIHF0X3ZlcnNpb249JzUuMCcpOgotICAgICAgICAjIEZJWE1FOiBQb3J0IGNv
bnN0cnVjdG9ycyBzaG91bGQgbm90ICJwYXJzZSIgdGhlIHBvcnQgbmFtZSwgYnV0Ci0gICAgICAg
ICMgcmF0aGVyIGJlIHBhc3NlZCBjb21wb25lbnRzIChkaXJlY3RseSBvciB2aWEgc2V0dGVycyku
ICBPbmNlCi0gICAgICAgICMgd2UgZml4IHRoYXQsIHRoaXMgbWV0aG9kIHdpbGwgbmVlZCBhIHJl
LXdyaXRlLgotICAgICAgICBob3N0ID0gTW9ja1N5c3RlbUhvc3Qob3NfbmFtZT1vc19uYW1lKQot
ICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKHNlbGYuX3F0X3ZlcnNpb24o
cXRfdmVyc2lvbikpCi0gICAgICAgIHBvcnRfbmFtZSA9ICdxdC0nICsgb3NfbmFtZQotICAgICAg
ICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoaG9zdD1ob3N0LCBxdF92ZXJzaW9uPXF0X3ZlcnNpb24s
IHBvcnRfbmFtZT1wb3J0X25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRp
b25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj11c2Vfd2Via2l0MiwgcGxhdGZvcm09
J3F0JykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5leHBlY3RhdGlvbnNfZmlsZXMo
KSwgc2VhcmNoX3BhdGhzKQotCi0gICAgZGVmIF9xdF92ZXJzaW9uKHNlbGYsIHF0X3ZlcnNpb24p
OgotICAgICAgICBpZiBxdF92ZXJzaW9uIGluICc1LjAnOgotICAgICAgICAgICAgcmV0dXJuICdR
TWFrZSB2ZXJzaW9uIDIuMDFhXG5Vc2luZyBRdCB2ZXJzaW9uIDUuMC4wIGluIC91c3IvbG9jYWwv
VHJvbGx0ZWNoL1F0LTUuMC4wL2xpYicKLSAgICAgICAgaWYgcXRfdmVyc2lvbiBpbiAnNS4xJzoK
LSAgICAgICAgICAgIHJldHVybiAnUU1ha2UgdmVyc2lvbiAzLjBcblVzaW5nIFF0IHZlcnNpb24g
NS4xLjEgaW4gL3Vzci9sb2NhbC9RdC01LjEvbGliJwotCi0gICAgZGVmIHRlc3RfYmFzZWxpbmVf
c2VhcmNoX3BhdGgoc2VsZik6Ci0gICAgICAgIGZvciBjYXNlIGluIHNlbGYuc2VhcmNoX3BhdGhz
X2Nhc2VzOgotICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X3NlYXJjaF9wYXRoKCoqY2FzZSkKLQot
ICAgIGRlZiB0ZXN0X2V4cGVjdGF0aW9uc19maWxlcyhzZWxmKToKLSAgICAgICAgZm9yIGNhc2Ug
aW4gc2VsZi5zZWFyY2hfcGF0aHNfY2FzZXM6Ci0gICAgICAgICAgICBleHBlY3RhdGlvbnNfY2Fz
ZSA9IGRlZXBjb3B5KGNhc2UpCi0gICAgICAgICAgICBpZiBleHBlY3RhdGlvbnNfY2FzZVsndXNl
X3dlYmtpdDInXToKLSAgICAgICAgICAgICAgICBleHBlY3RhdGlvbnNfY2FzZVsnc2VhcmNoX3Bh
dGhzJ10uYXBwZW5kKCJ3azIiKQotICAgICAgICAgICAgZXhwZWN0YXRpb25zX2Nhc2VbJ3NlYXJj
aF9wYXRocyddLmFwcGVuZCgnJykKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uc19jYXNlWydzZWFy
Y2hfcGF0aHMnXS5yZXZlcnNlKCkKLSAgICAgICAgICAgIGV4cGVjdGF0aW9uc19jYXNlWydzZWFy
Y2hfcGF0aHMnXSA9IG1hcChsYW1iZGEgcGF0aDogJy9tb2NrLWNoZWNrb3V0L0xheW91dFRlc3Rz
L1Rlc3RFeHBlY3RhdGlvbnMnIGlmIG5vdCBwYXRoIGVsc2UgJy9tb2NrLWNoZWNrb3V0L0xheW91
dFRlc3RzL3BsYXRmb3JtLyVzL1Rlc3RFeHBlY3RhdGlvbnMnICUgKHBhdGgpLCBleHBlY3RhdGlv
bnNfY2FzZVsnc2VhcmNoX3BhdGhzJ10pCi0gICAgICAgICAgICBzZWxmLl9hc3NlcnRfZXhwZWN0
YXRpb25zX2ZpbGVzKCoqZXhwZWN0YXRpb25zX2Nhc2UpCi0KLSAgICBkZWYgdGVzdF9zaG93X3Jl
c3VsdHNfaHRtbF9maWxlKHNlbGYpOgotICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQot
ICAgICAgICBwb3J0Ll9leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1ZSkK
LSAgICAgICAgZXhwZWN0ZWRfbG9ncyA9ICJNT0NLIHJ1bl9jb21tYW5kOiBbJ1Rvb2xzL1Njcmlw
dHMvcnVuLWxhdW5jaGVyJywgJy0tcmVsZWFzZScsICctLXF0JywgJ2ZpbGU6Ly90ZXN0Lmh0bWwn
XSwgY3dkPS9tb2NrLWNoZWNrb3V0XG4iCi0gICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRf
b3V0cHV0cyhzZWxmLCBwb3J0LnNob3dfcmVzdWx0c19odG1sX2ZpbGUsIFsidGVzdC5odG1sIl0s
IGV4cGVjdGVkX2xvZ3M9ZXhwZWN0ZWRfbG9ncykKLQotICAgIGRlZiB0ZXN0X3NldHVwX2Vudmly
b25fZm9yX3NlcnZlcihzZWxmKToKLSAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKLSAg
ICAgICAgZW52ID0gcG9ydC5zZXR1cF9lbnZpcm9uX2Zvcl9zZXJ2ZXIocG9ydC5kcml2ZXJfbmFt
ZSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudlsnUVRXRUJLSVRfUExVR0lOX1BBVEgn
XSwgJy9tb2NrLWJ1aWxkL2xpYi9wbHVnaW5zJykKLQotICAgIGRlZiB0ZXN0X29wZXJhdGluZ19z
eXN0ZW0oc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2xpbnV4Jywgc2VsZi5tYWtl
X3BvcnQocG9ydF9uYW1lPSdxdC1saW51eCcsIG9zX25hbWU9J2xpbnV4Jykub3BlcmF0aW5nX3N5
c3RlbSgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdtYWMnLCBzZWxmLm1ha2VfcG9ydChv
c19uYW1lPSdtYWMnKS5vcGVyYXRpbmdfc3lzdGVtKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoJ3dpbicsIHNlbGYubWFrZV9wb3J0KHBvcnRfbmFtZT0ncXQtd2luJywgb3NfbmFtZT0nd2lu
Jykub3BlcmF0aW5nX3N5c3RlbSgpKQotCi0gICAgZGVmIHRlc3RfY2hlY2tfc3lzX2RlcHMoc2Vs
Zik6Ci0gICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCi0KLSAgICAgICAgIyBTdWNjZXNz
Ci0gICAgICAgIG9zLmVudmlyb25bJ1dFQktJVF9URVNURk9OVFMnXSA9ICcvdG1wL2ZvbycKLSAg
ICAgICAgcG9ydC5fZXhlY3V0aXZlID0gTW9ja0V4ZWN1dGl2ZTIoZXhpdF9jb2RlPTApCi0gICAg
ICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3J0LmNoZWNrX3N5c19kZXBzKG5lZWRzX2h0dHA9RmFsc2Up
KQotCi0gICAgICAgICMgRmFpbHVyZQotICAgICAgICBkZWwgb3MuZW52aXJvblsnV0VCS0lUX1RF
U1RGT05UUyddCi0gICAgICAgIHBvcnQuX2V4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUyKGV4aXRf
Y29kZT0xLAotICAgICAgICAgICAgb3V0cHV0PSd0ZXN0aW5nIG91dHB1dCBmYWlsdXJlJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShwb3J0LmNoZWNrX3N5c19kZXBzKG5lZWRzX2h0dHA9RmFs
c2UpKQotCi0gICAgZGVmIHRlc3RfY29tbWFuZHMoc2VsZik6Ci0gICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydChwb3J0X25hbWU9InF0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0
LnRvb2xpbmdfZmxhZygpLCAiLS1wb3J0PXF0IikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0LnVwZGF0ZV93ZWJraXRfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ1
cGRhdGUtd2Via2l0IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5jaGVja193ZWJr
aXRfc3R5bGVfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJjaGVjay13ZWJr
aXQtc3R5bGUiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnByZXBhcmVfY2hhbmdl
bG9nX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgicHJlcGFyZS1DaGFuZ2VM
b2ciKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmJ1aWxkX3dlYmtpdF9jb21tYW5k
KCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImJ1aWxkLXdlYmtpdCIpICsgWyItLXF0Iiwg
Ii0tbm8td2Via2l0MiIsIHBvcnQubWFrZV9hcmdzKCldKQotICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKHBvcnQucnVuX2phdmFzY3JpcHRjb3JlX3Rlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRf
c2hlbGxfY29tbWFuZCgicnVuLWphdmFzY3JpcHRjb3JlLXRlc3RzIikpCi0gICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocG9ydC5ydW5fd2Via2l0X3VuaXRfdGVzdHNfY29tbWFuZCgpLCBOb25lKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3dlYmtpdF90ZXN0c19jb21tYW5kKCks
IFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1bi13ZWJraXQtdGVzdHMiKSArIFsiLS1xdCJd
KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucnVuX3B5dGhvbl91bml0dGVzdHNfY29t
bWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdlYmtpdHB5IikpCi0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5ydW5fcGVybF91bml0dGVzdHNfY29tbWFuZCgpLCBQ
b3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJ0ZXN0LXdlYmtpdHBlcmwiKSkKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9iaW5kaW5nc190ZXN0c19jb21tYW5kKCksIFBvcnQuc2Ny
aXB0X3NoZWxsX2NvbW1hbmQoInJ1bi1iaW5kaW5ncy10ZXN0cyIpKQotCi0gICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydChwb3J0X25hbWU9InF0Iiwgb3B0aW9ucz1Nb2NrT3B0aW9ucyh3ZWJr
aXRfdGVzdF9ydW5uZXI9VHJ1ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC50b29s
aW5nX2ZsYWcoKSwgIi0tcG9ydD1xdC13azIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBv
cnQudXBkYXRlX3dlYmtpdF9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInVw
ZGF0ZS13ZWJraXQiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmNoZWNrX3dlYmtp
dF9zdHlsZV9jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoImNoZWNrLXdlYmtp
dC1zdHlsZSIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQucHJlcGFyZV9jaGFuZ2Vs
b2dfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9jb21tYW5kKCJwcmVwYXJlLUNoYW5nZUxv
ZyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuYnVpbGRfd2Via2l0X2NvbW1hbmQo
KSwgUG9ydC5zY3JpcHRfc2hlbGxfY29tbWFuZCgiYnVpbGQtd2Via2l0IikgKyBbIi0tcXQiLCBw
b3J0Lm1ha2VfYXJncygpXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9qYXZh
c2NyaXB0Y29yZV90ZXN0c19jb21tYW5kKCksIFBvcnQuc2NyaXB0X3NoZWxsX2NvbW1hbmQoInJ1
bi1qYXZhc2NyaXB0Y29yZS10ZXN0cyIpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQu
cnVuX3dlYmtpdF91bml0X3Rlc3RzX2NvbW1hbmQoKSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbChwb3J0LnJ1bl93ZWJraXRfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVs
bF9jb21tYW5kKCJydW4td2Via2l0LXRlc3RzIikgKyBbIi0tcXQiLCAiLTIiXSkKLSAgICAgICAg
c2VsZi5hc3NlcnRFcXVhbChwb3J0LnJ1bl9weXRob25fdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9y
dC5zY3JpcHRfc2hlbGxfY29tbWFuZCgidGVzdC13ZWJraXRweSIpKQotICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKHBvcnQucnVuX3BlcmxfdW5pdHRlc3RzX2NvbW1hbmQoKSwgUG9ydC5zY3JpcHRf
c2hlbGxfY29tbWFuZCgidGVzdC13ZWJraXRwZXJsIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwocG9ydC5ydW5fYmluZGluZ3NfdGVzdHNfY29tbWFuZCgpLCBQb3J0LnNjcmlwdF9zaGVsbF9j
b21tYW5kKCJydW4tYmluZGluZ3MtdGVzdHMiKSkKLQotICAgIGRlZiB0ZXN0X2dldF9jcmFzaF9s
b2coc2VsZik6Ci0gICAgICAgICMgVGhpcyBmdW5jdGlvbiB0ZXN0ZWQgaW4gbGludXhfZ2V0X2Ny
YXNoX2xvZ191bml0dGVzdC5weQotICAgICAgICBwYXNzCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXIucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyLnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3N0eWxlL2NoZWNrZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNiArMSw3IEBA
CiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
IyBDb3B5cmlnaHQgKEMpIDIwMTAgQ2hyaXMgSmVyZG9uZWsgKGNocmlzLmplcmRvbmVrQGdtYWls
LmNvbSkKICMgQ29weXJpZ2h0IChDKSAyMDEwIFByb0ZVU0lPTiBlbWJlZGRlZCBzeXN0ZW1zCisj
IENvcHlyaWdodCAoQykgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAj
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0xMzQsMzcgKzEzNSwxMyBAQCBfUEFUSF9S
VUxFU19TUEVDSUZJRVIgPSBbCiAgICAgICAjIFRoZSBBUEkgdGVzdCBoYXJuZXNzZXMgaGF2ZSBu
byBjb25maWcuaCBhbmQgdXNlIGZ1bm55IG1hY3JvcyBsaWtlCiAgICAgICAjIFRFU1RfQ0xBU1Nf
TkFNRS4KICAgICAgICJUb29scy9XZWJLaXRBUElUZXN0LyIsCi0gICAgICAiVG9vbHMvVGVzdFdl
YktpdEFQSS8iLAotICAgICAgIlNvdXJjZS9XZWJLaXQvcXQvdGVzdHMvcWRlY2xhcmF0aXZld2Vi
dmlldyJdLAorICAgICAgIlRvb2xzL1Rlc3RXZWJLaXRBUEkvIl0sCiAgICAgIFsiLWJ1aWxkL2lu
Y2x1ZGUiLAogICAgICAgIi1yZWFkYWJpbGl0eS9uYW1pbmciXSksCiAgICAgKFsjIFRoZXJlIGlz
IG5vIGNsZWFuIHdheSB0byBhdm9pZCAieXlfKiIgbmFtZXMgdXNlZCBieSBmbGV4LgotICAgICAg
IlNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIiwKLSAgICAgICMgUXQgY29kZSB1c2Vz
ICdfJyBpbiBzb21lIHBsYWNlcyAoc3VjaCBhcyBwcml2YXRlIHNsb3RzCi0gICAgICAjIGFuZCBv
biB0ZXN0IHh4eF9kYXRhIG1ldGhvcyBvbiB0ZXN0cykKLSAgICAgICJTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcXQvIiwKLSAgICAgICJTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzLyIsCi0gICAgICAiU291
cmNlL1dlYktpdC9xdC9kZWNsYXJhdGl2ZS8iLAotICAgICAgIlNvdXJjZS9XZWJLaXQvcXQvZXhh
bXBsZXMvIl0sCisgICAgICAiU291cmNlL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAiXSwKICAg
ICAgWyItcmVhZGFiaWxpdHkvbmFtaW5nIl0pLAogCi0gICAgKFsjIFRoZSBRdCBBUElzIHVzZSBR
dCBkZWNsYXJhdGlvbiBzdHlsZSwgaXQgcHV0cyB0aGUgKiB0bwotICAgICAgIyB0aGUgdmFyaWFi
bGUgbmFtZSwgbm90IHRvIHRoZSBjbGFzcy4KLSAgICAgICJTb3VyY2UvV2ViS2l0L3F0L0FwaS8i
LAotICAgICAgIlNvdXJjZS9XZWJLaXQvcXQvV2lkZ2V0QXBpLyJdLAotICAgICBbIi1yZWFkYWJp
bGl0eS9uYW1pbmciLAotICAgICAgIi13aGl0ZXNwYWNlL2RlY2xhcmF0aW9uIl0pLAotCi0gICAg
IChbIyBRdCdzIE1pbmlCcm93c2VyIGhhcyBubyBjb25maWcuaAotICAgICAgICJUb29scy9NaW5p
QnJvd3Nlci9xdCIsCi0gICAgICAgIlRvb2xzL01pbmlCcm93c2VyL3F0L3JhdyJdLAotICAgICAg
WyItYnVpbGQvaW5jbHVkZSJdKSwKLQotICAgIChbIyBUaGUgUXQgQVBJcyB1c2UgUXQvUU1MIG5h
bWluZyBzdHlsZSwgd2hpY2ggaW5jbHVkZXMKLSAgICAgICMgbmFtaW5nIHBhcmFtZXRlcnMgaW4g
aCBmaWxlcy4KLSAgICAgICJTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0Il0sCi0gICAg
IFsiLXJlYWRhYmlsaXR5L3BhcmFtZXRlcl9uYW1lIl0pLAotCiAgICAgKFsjIFRoZSBHVEsrIHBv
cnQgdXNlcyB0aGUgYXV0b3Rvb2xzY29uZmlnLmggaGVhZGVyIGluIHNvbWUgQyBzb3VyY2VzCiAg
ICAgICAjIHRvIHNlcnZlIHRoZSBzYW1lIHB1cnBvc2Ugb2YgY29uZmlnLmguCiAgICAgICAiVG9v
bHMvR3RrTGF1bmNoZXIvbWFpbi5jIl0sCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0
eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2VyX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisrKyBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29w
eSkKQEAgLTIsNyArMiw3IEBACiAjCiAjIENvcHlyaWdodCAoQykgMjAwOSBHb29nbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQgKEMpIDIwMDkgVG9yY2ggTW9iaWxlIElu
Yy4KLSMgQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEplcmRvbmVrIChjaHJpcy5qZXJkb25la0Bn
bWFpbC5jb20pCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjI1LDMwICsyMjUsNiBAQCBjbGFzcyBHbG9i
YWxWYXJpYWJsZXNUZXN0KHVuaXR0ZXN0LlRlc3RDCiAgICAgICAgIGFzc2VydE5vQ2hlY2soIlNv
dXJjZS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwIiwKICAgICAgICAgICAgICAgICAgICAgICAi
cmVhZGFiaWxpdHkvbmFtaW5nIikKIAotICAgICAgICAjIFRlc3QgaWYgUXQgZXhjZXB0aW9ucyBh
cmUgaW5kZWVkIHdvcmtpbmcKLSAgICAgICAgYXNzZXJ0Q2hlY2soIlNvdXJjZS9XZWJLaXQvcXQv
V2lkZ2V0QXBpL3F3ZWJwYWdlLmNwcCIsCi0gICAgICAgICAgICAgICAgICAgICJyZWFkYWJpbGl0
eS9icmFjZXMiKQotICAgICAgICBhc3NlcnRDaGVjaygiU291cmNlL1dlYktpdC9xdC90ZXN0cy9x
d2ViZWxlbWVudC90c3RfcXdlYmVsZW1lbnQuY3BwIiwKLSAgICAgICAgICAgICAgICAgICAgInJl
YWRhYmlsaXR5L2JyYWNlcyIpCi0gICAgICAgIGFzc2VydENoZWNrKCJTb3VyY2UvV2ViS2l0L3F0
L2RlY2xhcmF0aXZlL3BsYXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAiLAotICAgICAgICAgICAg
ICAgICAgICAicmVhZGFiaWxpdHkvYnJhY2VzIikKLSAgICAgICAgYXNzZXJ0Q2hlY2soIlNvdXJj
ZS9XZWJLaXQvcXQvZXhhbXBsZXMvcGxhdGZvcm1wbHVnaW4vV2ViUGx1Z2luLmNwcCIsCi0gICAg
ICAgICAgICAgICAgICAgICJyZWFkYWJpbGl0eS9icmFjZXMiKQotICAgICAgICBhc3NlcnROb0No
ZWNrKCJTb3VyY2UvV2ViS2l0L3F0L1dpZGdldEFwaS9xd2VicGFnZS5jcHAiLAotICAgICAgICAg
ICAgICAgICAgICAgICJyZWFkYWJpbGl0eS9uYW1pbmciKQotICAgICAgICBhc3NlcnROb0NoZWNr
KCJTb3VyY2UvV2ViS2l0L3F0L3Rlc3RzL3F3ZWJlbGVtZW50L3RzdF9xd2ViZWxlbWVudC5jcHAi
LAotICAgICAgICAgICAgICAgICAgICAgICJyZWFkYWJpbGl0eS9uYW1pbmciKQotICAgICAgICBh
c3NlcnROb0NoZWNrKCJTb3VyY2UvV2ViS2l0L3F0L2RlY2xhcmF0aXZlL3BsYXRmb3JtcGx1Z2lu
L1dlYlBsdWdpbi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICJyZWFkYWJpbGl0eS9uYW1p
bmciKQotICAgICAgICBhc3NlcnROb0NoZWNrKCJTb3VyY2UvV2ViS2l0L3F0L2V4YW1wbGVzL3Bs
YXRmb3JtcGx1Z2luL1dlYlBsdWdpbi5jcHAiLAotICAgICAgICAgICAgICAgICAgICAgICJyZWFk
YWJpbGl0eS9uYW1pbmciKQotCi0gICAgICAgIGFzc2VydE5vQ2hlY2soIlRvb2xzL01pbmlCcm93
c2VyL3F0L1VybExvYWRlci5jcHAiLAotICAgICAgICAgICAgICAgICAgICAiYnVpbGQvaW5jbHVk
ZSIpCi0KLSAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9xdCIsCi0gICAgICAgICAgICAgICAgICAgICJyZWFkYWJpbGl0eS9wYXJhbWV0ZXJfbmFtZSIp
Ci0KICAgICAgICAgYXNzZXJ0Tm9DaGVjaygiU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRl
cnMvZGVidWdnZXIvRGVidWdnZXIuaCIsCiAgICAgICAgICAgICAgICAgICAgICAgImJ1aWxkL2hl
YWRlcl9ndWFyZCIpCiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tl
cnMvY21ha2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9j
aGVja2Vycy9jbWFrZS5weQkocmV2aXNpb24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9zdHlsZS9jaGVja2Vycy9jbWFrZS5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDUg
QEAKICMgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNjUsNyArNjYsNiBAQCBjbGFzcyBDTWFrZUNo
ZWNrZXIob2JqZWN0KToKICAgICAgICAgI0Zyb20gRmluZFBrZ0NvbmZpZy5jbWFrZQogICAgICAg
ICAncGtnX2NoZWNrX21vZHVsZXMnLAogICAgICAgICAncHJvamVjdCcsCi0gICAgICAgICdxdF93
cmFwX2NwcCcsICdxdF93cmFwX3VpJywKICAgICAgICAgJ3JlbW92ZV9kZWZpbml0aW9ucycsICdy
ZXR1cm4nLAogICAgICAgICAnc2VwYXJhdGVfYXJndW1lbnRzJywgJ3NldCcsICdzZXRfZGlyZWN0
b3J5X3Byb3BlcnRpZXMnLCAnc2V0X3Byb3BlcnR5JywKICAgICAgICAgJ3NldF9zb3VyY2VfZmls
ZXNfcHJvcGVydGllcycsICdzZXRfdGFyZ2V0X3Byb3BlcnRpZXMnLApJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHAucHkJKHJldmlzaW9uIDE1Njg3NSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvc3R5bGUvY2hlY2tlcnMvY3BwLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0yLDcgKzIsNyBAQAogIwogIyBDb3B5cmlnaHQgKEMpIDIwMDksIDIwMTAsIDIw
MTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDA5
IFRvcmNoIE1vYmlsZSBJbmMuCi0jIENvcHlyaWdodCAoQykgMjAwOSBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAwOSwgMjAxMyBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjIENvcHlyaWdodCAoQykgMjAxMCBDaHJpcyBKZXJkb25layAo
Y2plcmRvbmVrQHdlYmtpdC5vcmcpCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtMjcxOCwxMyArMjcxOCw2
IEBAIGRlZiBfY2xhc3NpZnlfaW5jbHVkZShmaWxlbmFtZSwgaW5jbHVkZSwKICAgICBpZiBmaWxl
bmFtZS5lbmRzd2l0aCgnLmgnKSBhbmQgZmlsZW5hbWUgIT0gaW5jbHVkZToKICAgICAgICAgcmV0
dXJuIF9PVEhFUl9IRUFERVI7CiAKLSAgICAjIFF0J3MgbW9jIGZpbGVzIGRvIG5vdCBmb2xsb3cg
dGhlIG5hbWluZyBhbmQgb3JkZXJpbmcgcnVsZXMsIHNvIHRoZXkgc2hvdWxkIGJlIHNraXBwZWQK
LSAgICBpZiBpbmNsdWRlLnN0YXJ0c3dpdGgoJ21vY18nKSBhbmQgaW5jbHVkZS5lbmRzd2l0aCgn
LmNwcCcpOgotICAgICAgICByZXR1cm4gX01PQ19IRUFERVIKLQotICAgIGlmIGluY2x1ZGUuZW5k
c3dpdGgoJy5tb2MnKToKLSAgICAgICAgcmV0dXJuIF9NT0NfSEVBREVSCi0KICAgICAjIElmIHRo
ZSB0YXJnZXQgZmlsZSBiYXNlbmFtZSBzdGFydHMgd2l0aCB0aGUgaW5jbHVkZSB3ZSdyZSBjaGVj
a2luZwogICAgICMgdGhlbiB3ZSBjb25zaWRlciBpdCB0aGUgcHJpbWFyeSBoZWFkZXIuCiAgICAg
dGFyZ2V0X2Jhc2UgPSBGaWxlSW5mbyhmaWxlbmFtZSkuYmFzZV9uYW1lKCkKQEAgLTI3MzQsOSAr
MjcyNyw2IEBAIGRlZiBfY2xhc3NpZnlfaW5jbHVkZShmaWxlbmFtZSwgaW5jbHVkZSwKICAgICBp
ZiBub3QgaW5jbHVkZV9zdGF0ZS52aXNpdGVkX3ByaW1hcnlfc2VjdGlvbigpOgogICAgICAgICBp
ZiB0YXJnZXRfYmFzZS5maW5kKGluY2x1ZGVfYmFzZSkgIT0gLTE6CiAgICAgICAgICAgICByZXR1
cm4gX1BSSU1BUllfSEVBREVSCi0gICAgICAgICMgUXQgcHJpdmF0ZSBBUElzIHVzZSBfcC5oIHN1
ZmZpeC4KLSAgICAgICAgaWYgaW5jbHVkZV9iYXNlLmZpbmQodGFyZ2V0X2Jhc2UpICE9IC0xIGFu
ZCBpbmNsdWRlX2Jhc2UuZW5kc3dpdGgoJ19wJyk6Ci0gICAgICAgICAgICByZXR1cm4gX1BSSU1B
UllfSEVBREVSCiAKICAgICAjIElmIHdlIGFscmVhZHkgZW5jb3VudGVyZWQgYSBwcmltYXJ5IGhl
YWRlciwgcGVyZm9ybSBhIHN0cmljdCBjb21wYXJpc29uLgogICAgICMgSW4gY2FzZSB0aGUgdHdv
IGZpbGVuYW1lIGJhc2VzIGFyZSB0aGUgc2FtZSB0aGVuIHRoZSBhYm92ZSBsZW5pZW50IGNoZWNr
CkBAIC0yODM2LDcgKzI4MjYsNyBAQCBkZWYgY2hlY2tfaW5jbHVkZV9saW5lKGZpbGVuYW1lLCBm
aWxlX2V4CiAgICAgICAgICAgICAgICAgICAnWW91IHNob3VsZCBhZGQgYSBibGFuayBsaW5lIGFm
dGVyIGltcGxlbWVudGF0aW9uIGZpbGVcJ3Mgb3duIGhlYWRlci4nKQogCiAgICAgIyBDaGVjayB0
byBtYWtlIHN1cmUgYWxsIGhlYWRlcnMgYmVzaWRlcyBjb25maWcuaCBhbmQgdGhlIHByaW1hcnkg
aGVhZGVyIGFyZQotICAgICMgYWxwaGFiZXRpY2FsbHkgc29ydGVkLiBTa2lwIFF0J3MgbW9jIGZp
bGVzLgorICAgICMgYWxwaGFiZXRpY2FsbHkgc29ydGVkLgogICAgIGlmIG5vdCBlcnJvcl9tZXNz
YWdlIGFuZCBoZWFkZXJfdHlwZSA9PSBfT1RIRVJfSEVBREVSOgogICAgICAgICAgcHJldmlvdXNf
bGluZV9udW1iZXIgPSBsaW5lX251bWJlciAtIDE7CiAgICAgICAgICBwcmV2aW91c19saW5lID0g
Y2xlYW5fbGluZXMubGluZXNbcHJldmlvdXNfbGluZV9udW1iZXJdCkBAIC0zMTkxLDcgKzMxODEs
NiBAQCBkZWYgY2hlY2tfaWRlbnRpZmllcl9uYW1lX2luX2RlY2xhcmF0aW9uCiAgICAgICAgICAg
ICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLnN0YXJ0c3dpdGgoJ05QTl8nKQogICAg
ICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCdOUFBf
JykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0
aCgnTlBfJykKLSAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3Rh
cnRzd2l0aCgncXRfJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZp
ZXIuc3RhcnRzd2l0aCgnX3FfJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lk
ZW50aWZpZXIuc3RhcnRzd2l0aCgnY2Fpcm9fJykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1v
ZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnRWNvcmVfJykKQEAgLTMxOTksNyArMzE4OCw2
IEBAIGRlZiBjaGVja19pZGVudGlmaWVyX25hbWVfaW5fZGVjbGFyYXRpb24KICAgICAgICAgICAg
ICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0aCgnRXZhc18nKQogICAg
ICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRpZmllci5zdGFydHN3aXRoKCdFd2tf
JykKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVkX2lkZW50aWZpZXIuc3RhcnRzd2l0
aCgnY3RpXycpCi0gICAgICAgICAgICAgICAgYW5kIG5vdCBtb2RpZmllZF9pZGVudGlmaWVyLmZp
bmQoJzo6cXRfJykgPj0gMAogICAgICAgICAgICAgICAgIGFuZCBub3QgbW9kaWZpZWRfaWRlbnRp
Zmllci5maW5kKCc6Ol9xXycpID49IDAKICAgICAgICAgICAgICAgICBhbmQgbm90IG1vZGlmaWVk
X2lkZW50aWZpZXIgPT0gImNvbnN0X2l0ZXJhdG9yIgogICAgICAgICAgICAgICAgIGFuZCBub3Qg
bW9kaWZpZWRfaWRlbnRpZmllciA9PSAidm1fdGhyb3ciCkluZGV4OiBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL2NwcF91bml0dGVzdC5weQkocmV2aXNp
b24gMTU2ODc1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy9jcHBf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTIsNyArMiw3IEBACiAjCiAjIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIyBDb3B5cmlnaHQg
KEMpIDIwMDkgVG9yY2ggTW9iaWxlIEluYy4KLSMgQ29weXJpZ2h0IChDKSAyMDA5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDA5LCAyMDEzIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMgQ29weXJpZ2h0IChDKSAyMDEwIENocmlzIEpl
cmRvbmVrIChjamVyZG9uZWtAd2Via2l0Lm9yZykKICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0yNzg5LDE0
ICsyNzg5LDYgQEAgY2xhc3MgT3JkZXJPZkluY2x1ZGVzVGVzdChDcHBTdHlsZVRlc3RCYQogICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ1ByZWZpeEZvb0N1c3RvbS5j
cHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Zvby5oJywK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRl
X3N0YXRlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjcHBfc3R5bGUuX01PQ19IRUFERVIs
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3NpZnlfaW5jbHVkZSgnZm9vLmNwcCcsCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZm9vLm1vYycsCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgaW5jbHVkZV9zdGF0
ZSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3BwX3N0eWxlLl9NT0NfSEVBREVSLAotICAg
ICAgICAgICAgICAgICAgICAgICAgIGNsYXNzaWZ5X2luY2x1ZGUoJ2Zvby5jcHAnLAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21vY19mb28uY3BwJywKLSAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRl
KSkKICAgICAgICAgIyA8cHVibGljL2Zvby5oPiBtdXN0IGJlIGNvbnNpZGVyZWQgYXMgcHJpbWFy
eSBldmVuIGlmIGlzX3N5c3RlbSBpcyBUcnVlLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNw
cF9zdHlsZS5fUFJJTUFSWV9IRUFERVIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3Np
ZnlfaW5jbHVkZSgnZm9vL2Zvby5jcHAnLApAQCAtMjgxMCwxMSArMjgwMiw2IEBAIGNsYXNzIE9y
ZGVyT2ZJbmNsdWRlc1Rlc3QoQ3BwU3R5bGVUZXN0QmEKICAgICAgICAgICAgICAgICAgICAgICAg
ICBjbGFzc2lmeV9pbmNsdWRlKCdmb28uY3BwJywKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICdwdWJsaWMvZm9vcC5oJywKICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFRydWUsIGluY2x1ZGVfc3RhdGUpKQotICAgICAgICAjIFF0IHBy
aXZhdGUgQVBJcyB1c2UgX3AuaCBzdWZmaXguCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3Bw
X3N0eWxlLl9QUklNQVJZX0hFQURFUiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc2lm
eV9pbmNsdWRlKCdmb28uY3BwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICdmb29fcC5oJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIEZhbHNlLCBpbmNsdWRlX3N0YXRlKSkKICAgICAgICAgIyBUcmlja3kgZXhhbXBsZSB3aGVy
ZSBib3RoIGluY2x1ZGVzIG1pZ2h0IGJlIGNsYXNzaWZpZWQgYXMgcHJpbWFyeS4KICAgICAgICAg
c2VsZi5hc3NlcnRfbGFuZ3VhZ2VfcnVsZXNfY2hlY2soJ1Njcm9sbGJhclRoZW1lV2luY2UuY3Bw
JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNpbmNsdWRlICJj
b25maWcuaCJcbicKQEAgLTQ3MDMsMTIgKzQ2OTAsNiBAQCBjbGFzcyBXZWJLaXRTdHlsZVRlc3Qo
Q3BwU3R5bGVUZXN0QmFzZSk6CiAgICAgICAgICMgVGhlcmUgaXMgYW4gZXhjZXB0aW9uIGZvciBz
b21lIHVuaXQgdGVzdHMgdGhhdCBiZWdpbiB3aXRoICJ0c3RfIi4KICAgICAgICAgc2VsZi5hc3Nl
cnRfbGludCgndm9pZCB0c3RfUVdlYkZyYW1lOjphcnJheU9iamVjdEVudW1lcmFibGUoaW50IHZh
cjEsIGludCB2YXIyKScsICcnKQogCi0gICAgICAgICMgVGhlIFF0IEFQSSB1c2VzIG5hbWVzIHRo
YXQgYmVnaW4gd2l0aCAicXRfIiBvciAiX3FfIi4KLSAgICAgICAgc2VsZi5hc3NlcnRfbGludCgn
dm9pZCBRVEZyYW1lOjpxdF9kcnRfaXNfYXdlc29tZShpbnQgdmFyMSwgaW50IHZhcjIpJywgJycp
Ci0gICAgICAgIHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgUVRGcmFtZTo6X3FfZHJ0X2lzX2F3ZXNv
bWUoaW50IHZhcjEsIGludCB2YXIyKScsICcnKQotICAgICAgICBzZWxmLmFzc2VydF9saW50KCd2
b2lkIHF0X2RydF9pc19hd2Vzb21lKGludCB2YXIxLCBpbnQgdmFyMik7JywgJycpCi0gICAgICAg
IHNlbGYuYXNzZXJ0X2xpbnQoJ3ZvaWQgX3FfZHJ0X2lzX2F3ZXNvbWUoaW50IHZhcjEsIGludCB2
YXIyKTsnLCAnJykKLQogICAgICAgICAjIENhaXJvIGZvcndhcmQtZGVjbGFyYXRpb25zIHNob3Vs
ZCBub3QgYmUgYSBmYWlsdXJlLgogICAgICAgICBzZWxmLmFzc2VydF9saW50KCd0eXBlZGVmIHN0
cnVjdCBfY2Fpcm8gY2Fpcm9fdDsnLCAnJykKICAgICAgICAgc2VsZi5hc3NlcnRfbGludCgndHlw
ZWRlZiBzdHJ1Y3QgX2NhaXJvX3N1cmZhY2UgY2Fpcm9fc3VyZmFjZV90OycsICcnKQpJbmRleDog
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9zdHlsZS9jaGVja2Vycy90ZXN0X2V4cGVjdGF0aW9uc191
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2No
ZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25zX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAxNTY4NzUpCisr
KyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3N0eWxlL2NoZWNrZXJzL3Rlc3RfZXhwZWN0YXRpb25z
X3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC03OSwxMCArNzksNiBAQCBjbGFzcyBUZXN0
RXhwZWN0YXRpb25zVGVzdENhc2UodW5pdHRlc3QuCiAgICAgICAgIHNlbGYuX2V4cGVjdF9wb3J0
X2Zvcl9leHBlY3RhdGlvbnNfcGF0aCgnZWZsJywgJ0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9U
ZXN0RXhwZWN0YXRpb25zJykKICAgICAgICAgc2VsZi5fZXhwZWN0X3BvcnRfZm9yX2V4cGVjdGF0
aW9uc19wYXRoKCdlZmwnLCAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMS9UZXN0RXhwZWN0
YXRpb25zJykKICAgICAgICAgc2VsZi5fZXhwZWN0X3BvcnRfZm9yX2V4cGVjdGF0aW9uc19wYXRo
KCdlZmwnLCAnTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsLXdrMi9UZXN0RXhwZWN0YXRpb25zJykK
LSAgICAgICAgc2VsZi5fZXhwZWN0X3BvcnRfZm9yX2V4cGVjdGF0aW9uc19wYXRoKCdxdCcsICdM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC13aW4vVGVzdEV4cGVjdGF0aW9ucycpCi0gICAgICAgICMg
RklYTUU6IGNoZWNrLXdlYmtpdC1zdHlsZSBkb2Vzbid0IGtub3cgaG93IHRvIGNyZWF0ZSBwb3J0
IG9iamVjdHMgZm9yIGFsbCBRdCB2ZXJzaW9uICg0LjgsIDUuMCkgYW5kCi0gICAgICAgICMgd2ls
bCBvbmx5IGNoZWNrIGZpbGVzIGJhc2VkIG9uIHRoZSBpbnN0YWxsZWQgdmVyc2lvbiBvZiBRdC4K
LSAgICAgICAgI3NlbGYuX2V4cGVjdF9wb3J0X2Zvcl9leHBlY3RhdGlvbnNfcGF0aCgncXQnLCAn
TGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQtNS4wLXdrMi9UZXN0RXhwZWN0YXRpb25zJykKIAogICAg
IGRlZiBhc3NlcnRfbGluZXNfbGludChzZWxmLCBsaW5lcywgc2hvdWxkX3Bhc3MsIGV4cGVjdGVk
X291dHB1dD1Ob25lKToKICAgICAgICAgc2VsZi5fZXJyb3JfY29sbGVjdG9yLnJlc2V0X2Vycm9y
cygpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvbWFpbi5weQkocmV2aXNpb24gMTU2ODc1
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL21haW4ucHkJKHdvcmtpbmcgY29weSkK
QEAgLTEsNSArMSw1IEBACiAjIENvcHlyaWdodCAoYykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKGMpIDIwMDkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKGMpIDIwMDksIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtNDksNyAr
NDksNyBAQCBjbGFzcyBXZWJLaXRQYXRjaChNdWx0aUNvbW1hbmRUb29sLCBIb3N0CiAgICAgICAg
IG1ha2Vfb3B0aW9uKCItLWJvdC1pZCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJib3RfaWQiLCB0
eXBlPSJzdHJpbmciLCBoZWxwPSJJZGVudGlmaWVyIGZvciB0aGlzIGJvdCAoaWYgbXVsdGlwbGUg
Ym90cyBhcmUgcnVubmluZyBmb3IgYSBxdWV1ZSkiKSwKICAgICAgICAgbWFrZV9vcHRpb24oIi0t
aXJjLXBhc3N3b3JkIiwgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImlyY19wYXNzd29yZCIsIHR5cGU9
InN0cmluZyIsIGhlbHA9IlBhc3N3b3JkIHRvIHVzZSB3aGVuIGNvbW11bmljYXRpbmcgdmlhIElS
Qy4iKSwKICAgICAgICAgbWFrZV9vcHRpb24oIi0tc2Vjb25kcy10by1zbGVlcCIsIGFjdGlvbj0i
c3RvcmUiLCBkZWZhdWx0PTEyMCwgdHlwZT0iaW50IiwgaGVscD0iTnVtYmVyIG9mIHNlY29uZHMg
dG8gc2xlZXAgaW4gdGhlIHRhc2sgcXVldWUuIiksCi0gICAgICAgIG1ha2Vfb3B0aW9uKCItLXBv
cnQiLCBhY3Rpb249InN0b3JlIiwgZGVzdD0icG9ydCIsIGRlZmF1bHQ9Tm9uZSwgaGVscD0iU3Bl
Y2lmeSBhIHBvcnQgKGUuZy4sIG1hYywgcXQsIGd0aywgLi4uKS4iKSwKKyAgICAgICAgbWFrZV9v
cHRpb24oIi0tcG9ydCIsIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJwb3J0IiwgZGVmYXVsdD1Ob25l
LCBoZWxwPSJTcGVjaWZ5IGEgcG9ydCAoZS5nLiwgbWFjLCBndGssIC4uLikuIiksCiAgICAgXQog
CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGgpOgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL3JlYmFzZWxpbmVfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDE1Njg3NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9yZWJhc2VsaW5lX3VuaXR0ZXN0LnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNSBA
QAogIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTkyLDcgKzkzLDYgQEAgY2xhc3MgVGVz
dFJlYmFzZWxpbmVUZXN0KF9CYXNlVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydE11bHRp
TGluZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiR1RLIExpbnV4IDY0LWJpdCBE
ZWJ1ZyIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrLXdrMSIpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY29tbWFuZC5fYmFzZWxpbmVfZGlyZWN0
b3J5KCJHVEsgTGludXggNjQtYml0IFJlbGVhc2UgV0syIChUZXN0cykiKSwgIi9tb2NrLWNoZWNr
b3V0L0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay13azIiKQogICAgICAgICBzZWxmLmFzc2VydE11
bHRpTGluZUVxdWFsKGNvbW1hbmQuX2Jhc2VsaW5lX2RpcmVjdG9yeSgiRUZMIExpbnV4IDY0LWJp
dCBSZWxlYXNlIFdLMiIpLCAiL21vY2stY2hlY2tvdXQvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZs
LXdrMiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0TXVsdGlMaW5lRXF1YWwoY29tbWFuZC5fYmFzZWxp
bmVfZGlyZWN0b3J5KCJRdCBMaW51eCBSZWxlYXNlIiksICIvbW9jay1jaGVja291dC9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9xdCIpCiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX3VwZGF0ZXNfZXhw
ZWN0YXRpb25zX2ZpbGVfbm9vcChzZWxmKToKICAgICAgICAgc2VsZi5femVyb19vdXRfdGVzdF9l
eHBlY3RhdGlvbnMoKQpAQCAtMzM2LDcgKzMzNiw3IEBAIGNsYXNzIFRlc3RSZWJhc2VsaW5lRXhw
ZWN0YXRpb25zKF9CYXNlVGUKICAgICAgICAgIyBGSVhNRTogY2hhbmdlIHRoaXMgdG8gdXNlIHRo
ZSB0ZXN0LSBwb3J0cy4KICAgICAgICAgY2FsbHMgPSBmaWx0ZXIobGFtYmRhIHg6IHggIT0gWydx
bWFrZScsICctdiddLCBzZWxmLnRvb2wuZXhlY3V0aXZlLmNhbGxzKQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGxlbihjYWxscyksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNh
bGxzWzBdKSwgMjIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGNhbGxzWzBdKSwgMjAp
CiAKICAgICBkZWYgdGVzdF9yZWJhc2VsaW5lX2V4cGVjdGF0aW9uc19ub29wKHNlbGYpOgogICAg
ICAgICBzZWxmLl96ZXJvX291dF90ZXN0X2V4cGVjdGF0aW9ucygpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>