<?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>196323</bug_id>
          
          <creation_ts>2019-03-27 15:36:43 -0700</creation_ts>
          <short_desc>run-api-tests: Upload test results</short_desc>
          <delta_ts>2019-04-01 19:57:12 -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>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Jonathan Bedard">jbedard</reporter>
          <assigned_to name="Jonathan Bedard">jbedard</assigned_to>
          <cc>aakash_jain</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>lforschler</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1521871</commentid>
    <comment_count>0</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-03-27 15:36:43 -0700</bug_when>
    <thetext>We need to upload API test results to the results database.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521874</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-03-27 15:38:56 -0700</bug_when>
    <thetext>&lt;rdar://problem/49356714&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521879</commentid>
    <comment_count>2</comment_count>
      <attachid>366114</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-03-27 15:43:24 -0700</bug_when>
    <thetext>Created attachment 366114
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521924</commentid>
    <comment_count>3</comment_count>
      <attachid>366130</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-03-27 17:03:07 -0700</bug_when>
    <thetext>Created attachment 366130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523053</commentid>
    <comment_count>4</comment_count>
      <attachid>366130</attachid>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-04-01 14:04:44 -0700</bug_when>
    <thetext>Comment on attachment 366130
Patch

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

&gt; Tools/Scripts/webkitpy/api_tests/manager.py:214
&gt; +            self._stream.writeln(&apos;&apos;)

is there any reason to have two statements here instead of:
self._stream.writeln(&apos;Test suite failed\n&apos;) ?

&gt; Tools/Scripts/webkitpy/port/base.py:1662
&gt; +        repos[&apos;webkit&apos;] = up(up(up(up(up(os.path.abspath(__file__))))))

I&apos;m not sure I&apos;ve seen this done before. I think in other places we use the ../ syntax, but I guess this is ok too!

&gt; Tools/Scripts/webkitpy/port/base.py:1666
&gt; +            scm = SCMDetector(self._filesystem, self._executive).detect_scm_system(path)

how many times are we going to run through this loop? This seems like it could be an expensive operation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523065</commentid>
    <comment_count>5</comment_count>
      <attachid>366130</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-04-01 14:24:21 -0700</bug_when>
    <thetext>Comment on attachment 366130
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/api_tests/manager.py:214
&gt;&gt; +            self._stream.writeln(&apos;&apos;)
&gt; 
&gt; is there any reason to have two statements here instead of:
&gt; self._stream.writeln(&apos;Test suite failed\n&apos;) ?

Because of this:

class MeteredStream(object):
    ...
    @staticmethod
    def _ensure_newline(txt):
        return txt if txt.endswith(&apos;\n&apos;) else txt + &apos;\n&apos;

    ....
    def writeln(self, txt, now=None, pid=None):
        self.write(self._ensure_newline(txt), now, pid)

&gt;&gt; Tools/Scripts/webkitpy/port/base.py:1662
&gt;&gt; +        repos[&apos;webkit&apos;] = up(up(up(up(up(os.path.abspath(__file__))))))
&gt; 
&gt; I&apos;m not sure I&apos;ve seen this done before. I think in other places we use the ../ syntax, but I guess this is ok too!

We do this a few other places:

Tools/Scripts/webkitpy//common/multiprocessing_bootstrap.py
Tools/Scripts/webkitpy//port/config_standalone.py
Tools/Scripts/webkitpy//test/main.py

I was adapting the code from Tools/Scripts/webkitpy/test/main.py....I can go either way, but that&apos;s why I used the &apos;up(...)&apos; approach.

&gt;&gt; Tools/Scripts/webkitpy/port/base.py:1666
&gt;&gt; +            scm = SCMDetector(self._filesystem, self._executive).detect_scm_system(path)
&gt; 
&gt; how many times are we going to run through this loop? This seems like it could be an expensive operation.

Hopefully not many! Yes, this could be an expensive operation (we maybe should memoize this, actually), this loop will be run for as many repositories appleadditions associates with the test run. We will usually run through this loop 1 or 2 times with the current code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523096</commentid>
    <comment_count>6</comment_count>
      <attachid>366130</attachid>
    <who name="Lucas Forschler">lforschler</who>
    <bug_when>2019-04-01 15:27:25 -0700</bug_when>
    <thetext>Comment on attachment 366130
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/api_tests/manager.py:214
&gt;&gt;&gt; +            self._stream.writeln(&apos;&apos;)
&gt;&gt; 
&gt;&gt; is there any reason to have two statements here instead of:
&gt;&gt; self._stream.writeln(&apos;Test suite failed\n&apos;) ?
&gt; 
&gt; Because of this:
&gt; 
&gt; class MeteredStream(object):
&gt;     ...
&gt;     @staticmethod
&gt;     def _ensure_newline(txt):
&gt;         return txt if txt.endswith(&apos;\n&apos;) else txt + &apos;\n&apos;
&gt; 
&gt;     ....
&gt;     def writeln(self, txt, now=None, pid=None):
&gt;         self.write(self._ensure_newline(txt), now, pid)

well... that&apos;s interesting...thanks!

&gt;&gt;&gt; Tools/Scripts/webkitpy/port/base.py:1666
&gt;&gt;&gt; +            scm = SCMDetector(self._filesystem, self._executive).detect_scm_system(path)
&gt;&gt; 
&gt;&gt; how many times are we going to run through this loop? This seems like it could be an expensive operation.
&gt; 
&gt; Hopefully not many! Yes, this could be an expensive operation (we maybe should memoize this, actually), this loop will be run for as many repositories appleadditions associates with the test run. We will usually run through this loop 1 or 2 times with the current code.

if we only expect 1 or 2 times, that is fine. in the future we may want to consider memorization..</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523117</commentid>
    <comment_count>7</comment_count>
      <attachid>366436</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-04-01 16:09:40 -0700</bug_when>
    <thetext>Created attachment 366436
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523135</commentid>
    <comment_count>8</comment_count>
      <attachid>366443</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-04-01 16:58:17 -0700</bug_when>
    <thetext>Created attachment 366443
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523140</commentid>
    <comment_count>9</comment_count>
      <attachid>366443</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-01 17:01:48 -0700</bug_when>
    <thetext>Comment on attachment 366443
Patch for landing

Rejecting attachment 366443 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;validate-changelog&apos;, &apos;--check-oops&apos;, &apos;--non-interactive&apos;, 366443, &apos;--port=mac&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

ChangeLog entry in Tools/ChangeLog contains OOPS!.

Full output: https://webkit-queues.webkit.org/results/11732990</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523173</commentid>
    <comment_count>10</comment_count>
      <attachid>366453</attachid>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2019-04-01 19:17:27 -0700</bug_when>
    <thetext>Created attachment 366453
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523189</commentid>
    <comment_count>11</comment_count>
      <attachid>366453</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-01 19:57:11 -0700</bug_when>
    <thetext>Comment on attachment 366453
Patch for landing

Clearing flags on attachment: 366453

Committed r243732: &lt;https://trac.webkit.org/changeset/243732&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1523190</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-04-01 19:57:12 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366114</attachid>
            <date>2019-03-27 15:43:24 -0700</date>
            <delta_ts>2019-03-27 17:02:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196323-20190327154318.patch</filename>
            <type>text/plain</type>
            <size>17581</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzU2NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM0IEBACisyMDE5LTAzLTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBydW4tYXBpLXRlc3RzOiBVcGxvYWQgdGVzdCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzMjMKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkvYXBpX3Rlc3RzL21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyKToKKyAgICAgICAgKE1h
bmFnZXIucnVuKTogVXBsb2FkIHJlc3VsdHMgdG8gYSByZXN1bHRzIGRhdGFiYXNlLgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bl9hcGlfdGVzdHMucHk6CisgICAgICAg
IChwYXJzZV9hcmdzKTogQWRkIHVwbG9hZCBhcmd1bWVudHMuCisgICAgICAgICogU2NyaXB0cy93
ZWJraXRweS9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0KToKKyAgICAgICAgKFBvcnQuY29u
ZmlndXJhdGlvbl9mb3JfdXBsb2FkKTogQ3JlYXRlcyBhIGNvbmZpZ3VyYXRpb24gZGljdGlvbmFy
eSBmb3IgdXBsb2FkaW5nIHJlc3VsdHMuCisgICAgICAgIChQb3J0LmNvbW1pdHNfZm9yX3VwbG9h
ZCk6IENyZWF0ZSBhIGxpc3Qgb2YgY29tbWl0cyBmcm9tIHRoZSBXZWJLaXQgcmVwb3NpdG9yeSB0
ZXN0cyBhcmUgcnVuIGZyb20gYWxvbmcKKyAgICAgICAgd2l0aCBjb21taXRzIGZyb20gYW55IG90
aGVyIGFzc29jaWF0ZWQgcmVwb3NpdG9yaWVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cG9ydC9kZXZpY2UucHk6CisgICAgICAgIChEZXZpY2UpOgorICAgICAgICAoRGV2aWNlLmJ1aWxk
X3ZlcnNpb24pOiBBY2Nlc3MgYnVpbGRfdmVyc29pbiBvZiB1bmRlcmx5aW5nIHBsYXRmb3JtIGRl
dmljZS4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHk6Cisg
ICAgICAgIChEZXZpY2VQb3J0KToKKyAgICAgICAgKERldmljZVBvcnQuY29uZmlndXJhdGlvbl9m
b3JfdXBsb2FkKTogRGV2aWNlcyBhcmUgdW5pcXVlIGJlY2F1c2UgdGhlaXIgY29uZmlndXJhdGlv
biBpcyBub3QKKyAgICAgICAgdGhlIHNhbWUgYXMgdGhlIG1hY2hpbmUgdXBsb2FkaW5nIHJlc3Vs
dHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weToKKyAgICAgICAgKE1h
Y1BvcnQpOgorICAgICAgICAoTWFjUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQpOiBEZWZp
bmUgU0RLIGluIHVwbG9hZCBjb25maWd1cmF0aW9uIGZvciBNYWMuCisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5OgorICAgICAgICAoU2ltdWxhdGVk
RGV2aWNlTWFuYWdlci5fY3JlYXRlX2RldmljZV93aXRoX3J1bnRpbWUpOgorICAgICAgICAoU2lt
dWxhdGVkRGV2aWNlLl9faW5pdF9fKTogQ3JlYXRlIHNpbXVsYXRlZCBkZXZpY2Ugd2l0aCBhIGJ1
aWxkX3ZlcnNpb24uCisKIDIwMTktMDMtMjcgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBw
bGUuY29tPgogCiAgICAgICAgIFtld3MtYXBwXSBVcGRhdGUgZGlzcGxheSB0ZXh0IG9mIFN1Ym1p
dCBmb3IgZXdzIGFuYWx5c2lzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0
cy9tYW5hZ2VyLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rl
c3RzL21hbmFnZXIucHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvYXBpX3Rlc3RzL21hbmFnZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0j
IENvcHlyaWdodCAoQykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENv
cHlyaWdodCAoQykgMjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMK
ICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjIsMTAgKzIyLDEyIEBACiAKIGltcG9ydCBq
c29uCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zCitpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtp
dHB5LmFwaV90ZXN0cy5ydW5uZXIgaW1wb3J0IFJ1bm5lcgogZnJvbSB3ZWJraXRweS5jb21tb24u
c3lzdGVtLmV4ZWN1dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkucmVzdWx0
cy51cGxvYWQgaW1wb3J0IFVwbG9hZAorCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLnNpbXVsYXRlZF9k
ZXZpY2UgaW1wb3J0IERldmljZVJlcXVlc3QsIFNpbXVsYXRlZERldmljZU1hbmFnZXIKIAogX2xv
ZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtMzksNiArNDEsNyBAQCBjbGFzcyBN
YW5hZ2VyKG9iamVjdCk6CiAgICAgRkFJTEVEX0JVSUxEX0NIRUNLID0gMQogICAgIEZBSUxFRF9D
T0xMRUNUX1RFU1RTID0gMgogICAgIEZBSUxFRF9URVNUUyA9IDMKKyAgICBGQUlMRURfVVBMT0FE
ID0gNAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHN0cmVhbSk6CiAg
ICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CkBAIC0xNTQsNiArMTU3LDggQEAgY2xhc3MgTWFuYWdl
cihvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90IHNlbGYuaG9zdC5maWxlc3lzdGVtLmlzZGly
KHNlbGYuaG9zdC5maWxlc3lzdGVtLmRpcm5hbWUoanNvbl9vdXRwdXQpKSBvciBzZWxmLmhvc3Qu
ZmlsZXN5c3RlbS5pc2Rpcihqc29uX291dHB1dCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVu
dGltZUVycm9yKCdDYW5ub3Qgd3JpdGUgdG8ge30nLmZvcm1hdChqc29uX291dHB1dCkpCiAKKyAg
ICAgICAgc3RhcnRfdGltZSA9IHRpbWUudGltZSgpCisKICAgICAgICAgc2VsZi5fc3RyZWFtLndy
aXRlX3VwZGF0ZSgnQ2hlY2tpbmcgYnVpbGQgLi4uJykKICAgICAgICAgaWYgbm90IHNlbGYuX3Bv
cnQuY2hlY2tfYXBpX3Rlc3RfYnVpbGQoc2VsZi5fYmluYXJpZXNfZm9yX2FyZ3VtZW50cyhhcmdz
KSk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCdCdWlsZCBjaGVjayBmYWlsZWQnKQpAQCAtMTg1
LDYgKzE5MCw4IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgICMgSWYgd2Ug
cmVjZWl2ZSBhIEtleWJvYXJkSW50ZXJydXB0LCBwcmludCByZXN1bHRzLgogICAgICAgICAgICAg
c2VsZi5fc3RyZWFtLndyaXRlbG4oJycpCiAKKyAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUo
KQorCiAgICAgICAgIHN1Y2Nlc3NmdWwgPSBydW5uZXIucmVzdWx0X21hcF9ieV9zdGF0dXMocnVu
bmVyLlNUQVRVU19QQVNTRUQpCiAgICAgICAgIGRpc2FibGVkID0gbGVuKHJ1bm5lci5yZXN1bHRf
bWFwX2J5X3N0YXR1cyhydW5uZXIuU1RBVFVTX0RJU0FCTEVEKSkKICAgICAgICAgX2xvZy5pbmZv
KCdSYW4ge30gdGVzdHMgb2Yge30gd2l0aCB7fSBzdWNjZXNzZnVsJy5mb3JtYXQobGVuKHJ1bm5l
ci5yZXN1bHRzKSAtIGRpc2FibGVkLCBsZW4odGVzdF9uYW1lcyksIGxlbihzdWNjZXNzZnVsKSkp
CkBAIC0xOTcsNDIgKzIwNCw3NCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIH0K
IAogICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignLScgKiAzMCkKKyAgICAgICAgcmVzdWx0
ID0gTWFuYWdlci5TVUNDRVNTCiAgICAgICAgIGlmIGxlbihzdWNjZXNzZnVsKSArIGRpc2FibGVk
ID09IGxlbih0ZXN0X25hbWVzKToKICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCdB
bGwgdGVzdHMgc3VjY2Vzc2Z1bGx5IHBhc3NlZCEnKQogICAgICAgICAgICAgaWYganNvbl9vdXRw
dXQ6CiAgICAgICAgICAgICAgICAgc2VsZi5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxl
KGpzb25fb3V0cHV0LCBqc29uLmR1bXBzKHJlc3VsdF9kaWN0aW9uYXJ5LCBpbmRlbnQ9NCkpCi0g
ICAgICAgICAgICByZXR1cm4gTWFuYWdlci5TVUNDRVNTCisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignVGVzdCBzdWl0ZSBmYWlsZWQnKQorICAgICAgICAg
ICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJycpCiAKLSAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRl
bG4oJ1Rlc3Qgc3VpdGUgZmFpbGVkJykKLSAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJycp
CisgICAgICAgICAgICBza2lwcGVkID0gW10KKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3Rf
bmFtZXM6CisgICAgICAgICAgICAgICAgaWYgdGVzdCBub3QgaW4gcnVubmVyLnJlc3VsdHM6Cisg
ICAgICAgICAgICAgICAgICAgIHNraXBwZWQuYXBwZW5kKHRlc3QpCisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdF9kaWN0aW9uYXJ5WydTa2lwcGVkJ10uYXBwZW5kKHsnbmFtZSc6IHRlc3QsICdv
dXRwdXQnOiBOb25lfSkKKyAgICAgICAgICAgIGlmIHNraXBwZWQ6CisgICAgICAgICAgICAgICAg
c2VsZi5fc3RyZWFtLndyaXRlbG4oJ1NraXBwZWQge30gdGVzdHMnLmZvcm1hdChsZW4oc2tpcHBl
ZCkpKQorICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCcnKQorICAgICAgICAg
ICAgICAgIGlmIHNlbGYuX29wdGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgZm9y
IHRlc3QgaW4gc2tpcHBlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53
cml0ZWxuKCcgICAge30nLmZvcm1hdCh0ZXN0KSkKKworICAgICAgICAgICAgc2VsZi5fcHJpbnRf
dGVzdHNfcmVzdWx0X3dpdGhfc3RhdHVzKHJ1bm5lci5TVEFUVVNfRkFJTEVELCBydW5uZXIpCisg
ICAgICAgICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNU
QVRVU19DUkFTSEVELCBydW5uZXIpCisgICAgICAgICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1
bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19USU1FT1VULCBydW5uZXIpCisKKyAgICAgICAg
ICAgIGZvciB0ZXN0LCByZXN1bHQgaW4gcnVubmVyLnJlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAg
ICAgICAgICAgICAgc3RhdHVzX3RvX3N0cmluZyA9IHsKKyAgICAgICAgICAgICAgICAgICAgcnVu
bmVyLlNUQVRVU19GQUlMRUQ6ICdGYWlsZWQnLAorICAgICAgICAgICAgICAgICAgICBydW5uZXIu
U1RBVFVTX0NSQVNIRUQ6ICdDcmFzaGVkJywKKyAgICAgICAgICAgICAgICAgICAgcnVubmVyLlNU
QVRVU19USU1FT1VUOiAnVGltZWRvdXQnLAorICAgICAgICAgICAgICAgIH0uZ2V0KHJlc3VsdFsw
XSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3RhdHVzX3RvX3N0cmluZzoKKyAgICAgICAgICAg
ICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICByZXN1bHRfZGljdGlvbmFyeVtzdGF0
dXNfdG9fc3RyaW5nXS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IHJlc3VsdFsxXX0p
CiAKLSAgICAgICAgc2tpcHBlZCA9IFtdCi0gICAgICAgIGZvciB0ZXN0IGluIHRlc3RfbmFtZXM6
Ci0gICAgICAgICAgICBpZiB0ZXN0IG5vdCBpbiBydW5uZXIucmVzdWx0czoKLSAgICAgICAgICAg
ICAgICBza2lwcGVkLmFwcGVuZCh0ZXN0KQotICAgICAgICAgICAgICAgIHJlc3VsdF9kaWN0aW9u
YXJ5WydTa2lwcGVkJ10uYXBwZW5kKHsnbmFtZSc6IHRlc3QsICdvdXRwdXQnOiBOb25lfSkKLSAg
ICAgICAgaWYgc2tpcHBlZDoKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCdTa2lw
cGVkIHt9IHRlc3RzJy5mb3JtYXQobGVuKHNraXBwZWQpKSkKLSAgICAgICAgICAgIHNlbGYuX3N0
cmVhbS53cml0ZWxuKCcnKQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgot
ICAgICAgICAgICAgICAgIGZvciB0ZXN0IGluIHNraXBwZWQ6Ci0gICAgICAgICAgICAgICAgICAg
IHNlbGYuX3N0cmVhbS53cml0ZWxuKCcgICAge30nLmZvcm1hdCh0ZXN0KSkKLQotICAgICAgICBz
ZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19GQUlMRUQs
IHJ1bm5lcikKLSAgICAgICAgc2VsZi5fcHJpbnRfdGVzdHNfcmVzdWx0X3dpdGhfc3RhdHVzKHJ1
bm5lci5TVEFUVVNfQ1JBU0hFRCwgcnVubmVyKQotICAgICAgICBzZWxmLl9wcmludF90ZXN0c19y
ZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19USU1FT1VULCBydW5uZXIpCi0KLSAgICAg
ICAgZm9yIHRlc3QsIHJlc3VsdCBpbiBydW5uZXIucmVzdWx0cy5pdGVyaXRlbXMoKToKLSAgICAg
ICAgICAgIHN0YXR1c190b19zdHJpbmcgPSB7Ci0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRV
U19GQUlMRUQ6ICdGYWlsZWQnLAotICAgICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hF
RDogJ0NyYXNoZWQnLAotICAgICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfVElNRU9VVDogJ1Rp
bWVkb3V0JywKLSAgICAgICAgICAgIH0uZ2V0KHJlc3VsdFswXSkKLSAgICAgICAgICAgIGlmIG5v
dCBzdGF0dXNfdG9fc3RyaW5nOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAg
ICByZXN1bHRfZGljdGlvbmFyeVtzdGF0dXNfdG9fc3RyaW5nXS5hcHBlbmQoeyduYW1lJzogdGVz
dCwgJ291dHB1dCc6IHJlc3VsdFsxXX0pCisgICAgICAgICAgICBpZiBqc29uX291dHB1dDoKKyAg
ICAgICAgICAgICAgICBzZWxmLmhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoanNvbl9v
dXRwdXQsIGpzb24uZHVtcHMocmVzdWx0X2RpY3Rpb25hcnksIGluZGVudD00KSkKIAotICAgICAg
ICBpZiBqc29uX291dHB1dDoKLSAgICAgICAgICAgIHNlbGYuaG9zdC5maWxlc3lzdGVtLndyaXRl
X3RleHRfZmlsZShqc29uX291dHB1dCwganNvbi5kdW1wcyhyZXN1bHRfZGljdGlvbmFyeSwgaW5k
ZW50PTQpKQorICAgICAgICAgICAgcmVzdWx0ID0gTWFuYWdlci5GQUlMRURfVEVTVFMKKworICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnJlcG9ydF91cmxzOgorICAgICAgICAgICAgc2VsZi5fc3Ry
ZWFtLndyaXRlbG4oJ1xuJykKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZV91cGRhdGUo
J1ByZXBhcmluZyB1cGxvYWQgZGF0YSAuLi4nKQorCisgICAgICAgICAgICBzdGF0dXNfdG9fdGVz
dF9yZXN1bHQgPSB7CisgICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19QQVNTRUQ6IE5vbmUs
CisgICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19GQUlMRUQ6IFVwbG9hZC5FeHBlY3RhdGlv
bnMuRkFJTCwKKyAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0NSQVNIRUQ6IFVwbG9hZC5F
eHBlY3RhdGlvbnMuQ1JBU0gsCisgICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19USU1FT1VU
OiBVcGxvYWQuRXhwZWN0YXRpb25zLlRJTUVPVVQsCisgICAgICAgICAgICB9CisgICAgICAgICAg
ICB1cGxvYWQgPSBVcGxvYWQoCisgICAgICAgICAgICAgICAgc3VpdGU9J2FwaS10ZXN0cycsCisg
ICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbj1zZWxmLl9wb3J0LmNvbmZpZ3VyYXRpb25fZm9y
X3VwbG9hZChzZWxmLl9wb3J0LnRhcmdldF9ob3N0KDApKSwKKyAgICAgICAgICAgICAgICBkZXRh
aWxzPVVwbG9hZC5jcmVhdGVfZGV0YWlscyhvcHRpb25zPXNlbGYuX29wdGlvbnMpLAorICAgICAg
ICAgICAgICAgIGNvbW1pdHM9c2VsZi5fcG9ydC5jb21taXRzX2Zvcl91cGxvYWQoKSwKKyAgICAg
ICAgICAgICAgICBydW5fc3RhdHM9VXBsb2FkLmNyZWF0ZV9ydW5fc3RhdHMoCisgICAgICAgICAg
ICAgICAgICAgIHN0YXJ0X3RpbWU9c3RhcnRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgZW5k
X3RpbWU9ZW5kX3RpbWUsCisgICAgICAgICAgICAgICAgICAgIHRlc3RzX3NraXBwZWQ9bGVuKHJl
c3VsdF9kaWN0aW9uYXJ5WydTa2lwcGVkJ10pLAorICAgICAgICAgICAgICAgICksCisgICAgICAg
ICAgICAgICAgcmVzdWx0cz17dGVzdDogVXBsb2FkLmNyZWF0ZV90ZXN0X3Jlc3VsdChhY3R1YWw9
c3RhdHVzX3RvX3Rlc3RfcmVzdWx0W3Jlc3VsdFswXV0pCisgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIHRlc3QsIHJlc3VsdCBpbiBydW5uZXIucmVzdWx0cy5pdGVyaXRlbXMoKSBpZiByZXN1
bHRbMF0gaW4gc3RhdHVzX3RvX3Rlc3RfcmVzdWx0fSwKKyAgICAgICAgICAgICkKKyAgICAgICAg
ICAgIHByaW50IGpzb24uZHVtcHModXBsb2FkLCBjbHM9VXBsb2FkLkVuY29kZXIsIGluZGVudD00
KQorICAgICAgICAgICAgZm9yIHVybCBpbiBzZWxmLl9vcHRpb25zLnJlcG9ydF91cmxzOgorICAg
ICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZV91cGRhdGUoJ1VwbG9hZGluZyB0byB7fSAu
Li4nLmZvcm1hdCh1cmwpKQorICAgICAgICAgICAgICAgIGlmIG5vdCB1cGxvYWQudXBsb2FkKHVy
bCwgbG9nX2xpbmVfZnVuYz1zZWxmLl9zdHJlYW0ud3JpdGVsbik6CisgICAgICAgICAgICAgICAg
ICAgIHJlc3VsdCA9IE1hbmFnZXIuRkFJTEVEX1VQTE9BRAorICAgICAgICAgICAgc2VsZi5fc3Ry
ZWFtLndyaXRlbG4oJ1VwbG9hZHMgY29tcGxldGVkIScpCiAKLSAgICAgICAgcmV0dXJuIE1hbmFn
ZXIuRkFJTEVEX1RFU1RTCisgICAgICAgIHJldHVybiByZXN1bHQKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bl9hcGlfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvcnVuX2FwaV90ZXN0cy5weQkocmV2aXNpb24g
MjQzNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvcnVuX2FwaV90ZXN0
cy5weQkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAsNyBAQCBmcm9tIHdlYmtpdHB5LmFwaV90
ZXN0cy5tYW5hZ2VyIGltcG9ydCBNCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBI
b3N0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cy5tZXRlcmVkX3N0cmVhbSBpbXBv
cnQgTWV0ZXJlZFN0cmVhbQogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBjb25maWd1cmF0aW9u
X29wdGlvbnMsIHBsYXRmb3JtX29wdGlvbnMsIGJhc2UsIHdpbgorZnJvbSB3ZWJraXRweS5yZXN1
bHRzLm9wdGlvbnMgaW1wb3J0IHVwbG9hZF9vcHRpb25zCiAKIEVYQ0VQVElPTkFMX0VYSVRfU1RB
VFVTID0gLTEKIElOVEVSUlVQVF9FWElUX1NUQVRVUyA9IC0yCkBAIC0xMzQsNiArMTM1LDcgQEAg
ZGVmIHBhcnNlX2FyZ3MoYXJncyk6CiAgICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLWZv
cmNlJywgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaGVscD0nUnVuIGFsbCB0ZXN0cywgZXZlbiBESVNBQkxFRCB0ZXN0cycp
LAogICAgIF0pKQorICAgIG9wdGlvbl9ncm91cF9kZWZpbml0aW9ucy5hcHBlbmQoKCdVcGxvYWQg
T3B0aW9ucycsIHVwbG9hZF9vcHRpb25zKCkpKQogCiAgICAgb3B0aW9uX3BhcnNlciA9IG9wdHBh
cnNlLk9wdGlvblBhcnNlcigKICAgICAgICAgdXNhZ2U9J3J1bi1hcGktdGVzdHMgW29wdGlvbnNd
IFs8dGVzdCBuYW1lcz4uLi5dJywKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9i
YXNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5
CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5w
eQkod29ya2luZyBjb3B5KQpAQCAtNDUsNiArNDUsNyBAQCBmcm9tIGZ1bmN0b29scyBpbXBvcnQg
cGFydGlhbAogCiBmcm9tIHdlYmtpdHB5LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwogZnJvbSB3
ZWJraXRweS5jb21tb24gaW1wb3J0IHJlYWRfY2hlY2tzdW1fZnJvbV9wbmcKK2Zyb20gd2Via2l0
cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5kZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCiBmcm9t
IHdlYmtpdHB5LmNvbW1vbi5tZW1vaXplZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHku
Y29tbW9uLnByZXR0eXBhdGNoIGltcG9ydCBQcmV0dHlQYXRjaAogZnJvbSB3ZWJraXRweS5jb21t
b24uc3lzdGVtIGltcG9ydCBwYXRoLCBwZW1maWxlCkBAIC02MSw2ICs2Miw3IEBAIGZyb20gd2Vi
a2l0cHkucG9ydC5mYWN0b3J5IGltcG9ydCBQb3J0RmEKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnNlcnZlcnMgaW1wb3J0IGFwYWNoZV9odHRwX3NlcnZlciwgaHR0cF9zZXJ2ZXIsIGh0dHBf
c2VydmVyX2Jhc2UKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdl
Yl9wbGF0Zm9ybV90ZXN0X3NlcnZlcgogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVy
cyBpbXBvcnQgd2Vic29ja2V0X3NlcnZlcgorZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVwbG9hZCBp
bXBvcnQgVXBsb2FkCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAt
MTYzNCwzICsxNjM2LDM3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgIyBUaGlzIGlz
IG92ZXJyaWRkZW4gYnkgcG9ydHMgdGhhdCBuZWVkIHRvIGRvIHdvcmsgaW4gdGhlIHBhcmVudCBw
cm9jZXNzIGFmdGVyIGEgd29ya2VyIHN1YnByb2Nlc3MgaXMgc3Bhd25lZCwKICAgICAgICAgIyBz
dWNoIGFzIGNsb3NpbmcgZmlsZSBkZXNjcmlwdG9ycyB0aGF0IHdlcmUgaW1wbGljaXRseSBjbG9u
ZWQgdG8gdGhlIHdvcmtlci4KICAgICAgICAgcGFzcworCisgICAgZGVmIGNvbmZpZ3VyYXRpb25f
Zm9yX3VwbG9hZChzZWxmLCBob3N0PU5vbmUpOgorICAgICAgICBjb25maWd1cmF0aW9uID0gc2Vs
Zi50ZXN0X2NvbmZpZ3VyYXRpb24oKQorICAgICAgICBob3N0ID0gc2VsZi5ob3N0IG9yIGhvc3QK
KworICAgICAgICByZXR1cm4gVXBsb2FkLmNyZWF0ZV9jb25maWd1cmF0aW9uKAorICAgICAgICAg
ICAgcGxhdGZvcm09aG9zdC5wbGF0Zm9ybS5vc19uYW1lLAorICAgICAgICAgICAgdmVyc2lvbj1z
dHIoaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uKSwKKyAgICAgICAgICAgIHZlcnNpb25fbmFtZT1o
b3N0LnBsYXRmb3JtLm9zX3ZlcnNpb25fbmFtZShJTlRFUk5BTF9UQUJMRSkgb3IgaG9zdC5wbGF0
Zm9ybS5vc192ZXJzaW9uX25hbWUoKSwKKyAgICAgICAgICAgIGFyY2hpdGVjdHVyZT1jb25maWd1
cmF0aW9uLmFyY2hpdGVjdHVyZSwKKyAgICAgICAgICAgIHN0eWxlPSdndWFyZC1tYWxsb2MnIGlm
IHNlbGYuZ2V0X29wdGlvbignZ3VhcmRfbWFsbG9jJykgZWxzZSBjb25maWd1cmF0aW9uLmJ1aWxk
X3R5cGUsCisgICAgICAgICAgICBzZGs9aG9zdC5wbGF0Zm9ybS5idWlsZF92ZXJzaW9uKCksCisg
ICAgICAgICkKKworICAgIGRlZiBjb21taXRzX2Zvcl91cGxvYWQoc2VsZik6CisgICAgICAgIHNl
bGYuaG9zdC5pbml0aWFsaXplX3NjbSgpCisKKyAgICAgICAgaWYgcG9ydF9jb25maWcuYXBwbGVf
YWRkaXRpb25zKCk6CisgICAgICAgICAgICByZXBvcyA9IHBvcnRfY29uZmlnLmFwcGxlX2FkZGl0
aW9ucygpLnJlcG9zKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcG9zID0ge30KKwor
ICAgICAgICB1cCA9IG9zLnBhdGguZGlybmFtZQorICAgICAgICByZXBvc1snd2Via2l0J10gPSB1
cCh1cCh1cCh1cCh1cChvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkpKSkKKworICAgICAgICBj
b21taXRzID0gW10KKyAgICAgICAgZm9yIHJlcG9faWQsIHBhdGggaW4gcmVwb3MuaXRlcml0ZW1z
KCk6CisgICAgICAgICAgICBzY20gPSBTQ01EZXRlY3RvcihzZWxmLl9maWxlc3lzdGVtLCBzZWxm
Ll9leGVjdXRpdmUpLmRldGVjdF9zY21fc3lzdGVtKHBhdGgpCisgICAgICAgICAgICBjb21taXRz
LmFwcGVuZChVcGxvYWQuY3JlYXRlX2NvbW1pdCgKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5
X2lkPXJlcG9faWQsCisgICAgICAgICAgICAgICAgaWQ9c2NtLm5hdGl2ZV9yZXZpc2lvbihwYXRo
KSwKKyAgICAgICAgICAgICAgICBicmFuY2g9c2NtLm5hdGl2ZV9icmFuY2gocGF0aCksCisgICAg
ICAgICAgICApKQorICAgICAgICByZXR1cm4gY29tbWl0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2RldmljZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3BvcnQvZGV2aWNlLnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvZGV2aWNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDEwIEBA
IGNsYXNzIERldmljZShvYmplY3QpOgogICAgIGRlZiBkZXZpY2VfdHlwZShzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYucGxhdGZvcm1fZGV2aWNlLmRldmljZV90eXBlCiAKKyAgICBAcHJvcGVy
dHkKKyAgICBkZWYgYnVpbGRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGxh
dGZvcm1fZGV2aWNlLmJ1aWxkX3ZlcnNpb24KKwogICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToK
ICAgICAgICAgcmV0dXJuIHNlbGYucGxhdGZvcm1fZGV2aWNlIGlzIG5vdCBOb25lCiAKSW5kZXg6
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkJKHJldmlzaW9uIDI0
MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQkod29y
a2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0yMyw5ICsyMywxMSBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB0cmFjZWJhY2sKIAorZnJv
bSB3ZWJraXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5hbWVNYXAs
IFBVQkxJQ19UQUJMRSwgSU5URVJOQUxfVEFCTEUKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
Lm1vZGVscy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9t
IHdlYmtpdHB5LnBvcnQuZGFyd2luIGltcG9ydCBEYXJ3aW5Qb3J0CiBmcm9tIHdlYmtpdHB5LnBv
cnQuc2ltdWxhdG9yX3Byb2Nlc3MgaW1wb3J0IFNpbXVsYXRvclByb2Nlc3MKK2Zyb20gd2Via2l0
cHkucmVzdWx0cy51cGxvYWQgaW1wb3J0IFVwbG9hZAogZnJvbSB3ZWJraXRweS54Y29kZS5kZXZp
Y2VfdHlwZSBpbXBvcnQgRGV2aWNlVHlwZQogZnJvbSB3ZWJraXRweS54Y29kZS5zaW11bGF0ZWRf
ZGV2aWNlIGltcG9ydCBEZXZpY2VSZXF1ZXN0LCBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyCiAKQEAg
LTIzOCwzICsyNDAsMzAgQEAgY2xhc3MgRGV2aWNlUG9ydChEYXJ3aW5Qb3J0KToKIAogICAgIGRl
ZiBkZXZpY2VfdmVyc2lvbihzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJv
cgorCisgICAgZGVmIGNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxmLCBob3N0PU5vbmUpOgor
ICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24oKQorCisgICAg
ICAgIGRldmljZV90eXBlID0gaG9zdC5kZXZpY2VfdHlwZSBpZiBob3N0IGVsc2Ugc2VsZi5ERVZJ
Q0VfVFlQRQorICAgICAgICBtb2RlbCA9IGRldmljZV90eXBlLmhhcmR3YXJlX2ZhbWlseQorICAg
ICAgICBpZiBtb2RlbCBhbmQgZGV2aWNlX3R5cGUuaGFyZHdhcmVfdHlwZToKKyAgICAgICAgICAg
IG1vZGVsICs9ICcge30nLmZvcm1hdChkZXZpY2VfdHlwZS5oYXJkd2FyZV90eXBlKQorCisgICAg
ICAgIHZlcnNpb24gPSBzZWxmLmRldmljZV92ZXJzaW9uKCkKKyAgICAgICAgdmVyc2lvbl9uYW1l
ID0gTm9uZQorICAgICAgICBmb3IgdGFibGUgaW4gW0lOVEVSTkFMX1RBQkxFLCBQVUJMSUNfVEFC
TEVdOgorICAgICAgICAgICAgdmVyc2lvbl9uYW1lID0gVmVyc2lvbk5hbWVNYXAubWFwKHNlbGYu
aG9zdC5wbGF0Zm9ybSkudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1kZXZpY2VfdHlwZS5zb2Z0
d2FyZV92YXJpYW50Lmxvd2VyKCksIHRhYmxlPXRhYmxlKQorICAgICAgICAgICAgaWYgdmVyc2lv
bl9uYW1lOgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0dXJuIFVwbG9hZC5j
cmVhdGVfY29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIHBsYXRmb3JtPWRldmljZV90eXBlLnNv
ZnR3YXJlX3ZhcmlhbnQubG93ZXIoKSwKKyAgICAgICAgICAgIGlzX3NpbXVsYXRvcj1zZWxmLkRF
VklDRV9NQU5BR0VSID09IFNpbXVsYXRlZERldmljZU1hbmFnZXIsCisgICAgICAgICAgICB2ZXJz
aW9uPXN0cih2ZXJzaW9uKSwKKyAgICAgICAgICAgIHZlcnNpb25fbmFtZT12ZXJzaW9uX25hbWUs
CisgICAgICAgICAgICBhcmNoaXRlY3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsCisg
ICAgICAgICAgICBzdHlsZT0nZ3VhcmQtbWFsbG9jJyBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJk
X21hbGxvYycpIGVsc2UgY29uZmlndXJhdGlvbi5idWlsZF90eXBlLAorICAgICAgICAgICAgZmxh
dm9yPSd3azInIGlmIHNlbGYuZ2V0X29wdGlvbignd2Via2l0X3Rlc3RfcnVubmVyJykgZWxzZSAn
d2sxJywKKyAgICAgICAgICAgIG1vZGVsPW1vZGVsLAorICAgICAgICAgICAgc2RrPWhvc3QuYnVp
bGRfdmVyc2lvbiBpZiBob3N0IGVsc2UgTm9uZSwKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wb3J0L21hYy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbWFjLnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3BvcnQvbWFjLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5
cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJp
Z2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjc5LDMgKzI3OSwxNCBAQCBj
bGFzcyBNYWNQb3J0KERhcndpblBvcnQpOgogICAgICAgICB3b3J0aGxlc3NfcGF0dGVybnMuYXBw
ZW5kKChyZS5jb21waWxlKCcuKjw8PDwgVk1DID4+Pj4uKlxuJyksICcnKSkKICAgICAgICAgd29y
dGhsZXNzX3BhdHRlcm5zLmFwcGVuZCgocmUuY29tcGlsZSgnLio8PDwgRkZSX0NvbW1vbiA+Pj4u
KlxuJyksICcnKSkKICAgICAgICAgcmV0dXJuIHdvcnRobGVzc19wYXR0ZXJucworCisgICAgZGVm
IGNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxmLCBob3N0PU5vbmUpOgorICAgICAgICBob3N0
ID0gaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgY29uZmlndXJhdGlvbiA9IHN1cGVyKE1hY1Bv
cnQsIHNlbGYpLmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChob3N0PWhvc3QpCisKKyAgICAgICAg
b3V0cHV0ID0gaG9zdC5leGVjdXRpdmUucnVuX2NvbW1hbmQoWycvdXNyL3NiaW4vc3lzY3RsJywg
J2h3Lm1vZGVsJ10pLnJzdHJpcCgpCisgICAgICAgIG1hdGNoID0gcmUubWF0Y2gocidody5tb2Rl
bDogKD9QPG1vZGVsPi4qKScsIG91dHB1dCkKKyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAg
ICBjb25maWd1cmF0aW9uWydtb2RlbCddID0gbWF0Y2guZ3JvdXAoJ21vZGVsJykKKworICAgICAg
ICByZXR1cm4gY29uZmlndXJhdGlvbgpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29k
ZS9zaW11bGF0ZWRfZGV2aWNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xMTMsNiArMTEzLDcgQEAgY2xhc3MgU2ltdWxhdGVkRGV2aWNlTWFuYWdlcihvYmplY3Qp
OgogICAgICAgICAgICAgdWRpZD1kZXZpY2VfaW5mb1sndWRpZCddLAogICAgICAgICAgICAgaG9z
dD1ob3N0LAogICAgICAgICAgICAgZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUsCisgICAgICAgICAg
ICBidWlsZF92ZXJzaW9uPXJ1bnRpbWUuYnVpbGRfdmVyc2lvbiwKICAgICAgICAgKSkKICAgICAg
ICAgU2ltdWxhdGVkRGV2aWNlTWFuYWdlci5BVkFJTEFCTEVfREVWSUNFUy5hcHBlbmQocmVzdWx0
KQogICAgICAgICByZXR1cm4gcmVzdWx0CkBAIC00ODgsMTIgKzQ4OSwxMyBAQCBjbGFzcyBTaW11
bGF0ZWREZXZpY2Uob2JqZWN0KToKICAgICAgICAgJ1NIVVRUSU5HIERPV04nLAogICAgIF0KIAot
ICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lLCB1ZGlkLCBob3N0LCBkZXZpY2VfdHlwZSk6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIHVkaWQsIGhvc3QsIGRldmljZV90eXBlLCBidWls
ZF92ZXJzaW9uKToKICAgICAgICAgYXNzZXJ0IGRldmljZV90eXBlLnNvZnR3YXJlX3ZlcnNpb24K
IAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYudWRpZCA9IHVkaWQKICAg
ICAgICAgc2VsZi5kZXZpY2VfdHlwZSA9IGRldmljZV90eXBlCisgICAgICAgIHNlbGYuYnVpbGRf
dmVyc2lvbiA9IGJ1aWxkX3ZlcnNpb24KICAgICAgICAgc2VsZi5fc3RhdGUgPSBTaW11bGF0ZWRE
ZXZpY2UuRGV2aWNlU3RhdGUuU0hVVFRJTkdfRE9XTgogICAgICAgICBzZWxmLl9sYXN0X3VwZGF0
ZWRfc3RhdGUgPSB0aW1lLnRpbWUoKQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366130</attachid>
            <date>2019-03-27 17:03:07 -0700</date>
            <delta_ts>2019-04-01 16:09:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196323-20190327170307.patch</filename>
            <type>text/plain</type>
            <size>21237</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzU5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDE5LTAzLTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBydW4tYXBpLXRlc3RzOiBVcGxvYWQgdGVzdCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzMjMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ5MzU2NzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvbWFuYWdlci5w
eToKKyAgICAgICAgKE1hbmFnZXIpOgorICAgICAgICAoTWFuYWdlci5ydW4pOiBVcGxvYWQgcmVz
dWx0cyB0byBhIHJlc3VsdHMgZGF0YWJhc2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9h
cGlfdGVzdHMvcnVuX2FwaV90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOiBBZGQgdXBs
b2FkIGFyZ3VtZW50cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToK
KyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQp
OiBDcmVhdGVzIGEgY29uZmlndXJhdGlvbiBkaWN0aW9uYXJ5IGZvciB1cGxvYWRpbmcgcmVzdWx0
cy4KKyAgICAgICAgKFBvcnQuY29tbWl0c19mb3JfdXBsb2FkKTogQ3JlYXRlIGEgbGlzdCBvZiBj
b21taXRzIGZyb20gdGhlIFdlYktpdCByZXBvc2l0b3J5IHRlc3RzIGFyZSBydW4gZnJvbSBhbG9u
ZworICAgICAgICB3aXRoIGNvbW1pdHMgZnJvbSBhbnkgb3RoZXIgYXNzb2NpYXRlZCByZXBvc2l0
b3JpZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZS5weToKKyAgICAg
ICAgKERldmljZSk6CisgICAgICAgIChEZXZpY2UuYnVpbGRfdmVyc2lvbik6IEFjY2VzcyBidWls
ZF92ZXJzb2luIG9mIHVuZGVybHlpbmcgcGxhdGZvcm0gZGV2aWNlLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5OgorICAgICAgICAoSU9T
U2ltdWxhdG9yVGVzdCk6CisgICAgICAgIChJT1NTaW11bGF0b3JUZXN0LnRlc3RfY29uZmlndXJh
dGlvbl9mb3JfdXBsb2FkKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNl
X3BvcnQucHk6CisgICAgICAgIChEZXZpY2VQb3J0KToKKyAgICAgICAgKERldmljZVBvcnQuY29u
ZmlndXJhdGlvbl9mb3JfdXBsb2FkKTogRGV2aWNlcyBhcmUgdW5pcXVlIGJlY2F1c2UgdGhlaXIg
Y29uZmlndXJhdGlvbiBpcyBub3QKKyAgICAgICAgdGhlIHNhbWUgYXMgdGhlIG1hY2hpbmUgdXBs
b2FkaW5nIHJlc3VsdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weToK
KyAgICAgICAgKE1hY1BvcnQpOgorICAgICAgICAoTWFjUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91
cGxvYWQpOiBEZWZpbmUgU0RLIGluIHVwbG9hZCBjb25maWd1cmF0aW9uIGZvciBNYWMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weToKKyAgICAgICAgKE1h
Y1Rlc3QpOgorICAgICAgICAoTWFjVGVzdC50ZXN0X2NvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5Ogor
ICAgICAgICAoU2ltdWxhdGVkRGV2aWNlTWFuYWdlci5fY3JlYXRlX2RldmljZV93aXRoX3J1bnRp
bWUpOgorICAgICAgICAoU2ltdWxhdGVkRGV2aWNlLl9faW5pdF9fKTogQ3JlYXRlIHNpbXVsYXRl
ZCBkZXZpY2Ugd2l0aCBhIGJ1aWxkX3ZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9leGlz
dGluZ19zaW11bGF0b3IpOgorCiAyMDE5LTAzLTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQyNjg2KTogcGFja2FnZS1yb290IGNyZWF0
ZXMgcm9vdHMgd2l0aCBicm9rZW4gc3ltbGlua3MgaW4gV2ViS2l0LmZyYW1ld29yay9YUENTZXJ2
aWNlcy8KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL21hbmFnZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvbWFuYWdlci5w
eQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMv
bWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMiwxMCArMjIsMTIgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBs
b2dnaW5nCi1pbXBvcnQgb3MKK2ltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkuYXBpX3Rlc3Rz
LnJ1bm5lciBpbXBvcnQgUnVubmVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVwbG9hZCBpbXBv
cnQgVXBsb2FkCisKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdGVkX2RldmljZSBpbXBvcnQg
RGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlcgogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCkBAIC0zOSw2ICs0MSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICBGQUlMRURfQlVJTERfQ0hFQ0sgPSAxCiAgICAgRkFJTEVEX0NPTExFQ1RfVEVTVFMg
PSAyCiAgICAgRkFJTEVEX1RFU1RTID0gMworICAgIEZBSUxFRF9VUExPQUQgPSA0CiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgc3RyZWFtKToKICAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKQEAgLTE1NCw2ICsxNTcsOCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgICAgICBpZiBub3Qgc2VsZi5ob3N0LmZpbGVzeXN0ZW0uaXNkaXIoc2VsZi5ob3N0LmZp
bGVzeXN0ZW0uZGlybmFtZShqc29uX291dHB1dCkpIG9yIHNlbGYuaG9zdC5maWxlc3lzdGVtLmlz
ZGlyKGpzb25fb3V0cHV0KToKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nh
bm5vdCB3cml0ZSB0byB7fScuZm9ybWF0KGpzb25fb3V0cHV0KSkKIAorICAgICAgICBzdGFydF90
aW1lID0gdGltZS50aW1lKCkKKwogICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVfdXBkYXRlKCdD
aGVja2luZyBidWlsZCAuLi4nKQogICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5jaGVja19hcGlf
dGVzdF9idWlsZChzZWxmLl9iaW5hcmllc19mb3JfYXJndW1lbnRzKGFyZ3MpKToKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJ0J1aWxkIGNoZWNrIGZhaWxlZCcpCkBAIC0xODUsNiArMTkwLDggQEAg
Y2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgIyBJZiB3ZSByZWNlaXZlIGEgS2V5
Ym9hcmRJbnRlcnJ1cHQsIHByaW50IHJlc3VsdHMuCiAgICAgICAgICAgICBzZWxmLl9zdHJlYW0u
d3JpdGVsbignJykKIAorICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCisKICAgICAgICAg
c3VjY2Vzc2Z1bCA9IHJ1bm5lci5yZXN1bHRfbWFwX2J5X3N0YXR1cyhydW5uZXIuU1RBVFVTX1BB
U1NFRCkKICAgICAgICAgZGlzYWJsZWQgPSBsZW4ocnVubmVyLnJlc3VsdF9tYXBfYnlfc3RhdHVz
KHJ1bm5lci5TVEFUVVNfRElTQUJMRUQpKQogICAgICAgICBfbG9nLmluZm8oJ1JhbiB7fSB0ZXN0
cyBvZiB7fSB3aXRoIHt9IHN1Y2Nlc3NmdWwnLmZvcm1hdChsZW4ocnVubmVyLnJlc3VsdHMpIC0g
ZGlzYWJsZWQsIGxlbih0ZXN0X25hbWVzKSwgbGVuKHN1Y2Nlc3NmdWwpKSkKQEAgLTE5Nyw0MiAr
MjA0LDc0IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgfQogCiAgICAgICAgIHNl
bGYuX3N0cmVhbS53cml0ZWxuKCctJyAqIDMwKQorICAgICAgICByZXN1bHQgPSBNYW5hZ2VyLlNV
Q0NFU1MKICAgICAgICAgaWYgbGVuKHN1Y2Nlc3NmdWwpICsgZGlzYWJsZWQgPT0gbGVuKHRlc3Rf
bmFtZXMpOgogICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ0FsbCB0ZXN0cyBzdWNj
ZXNzZnVsbHkgcGFzc2VkIScpCiAgICAgICAgICAgICBpZiBqc29uX291dHB1dDoKICAgICAgICAg
ICAgICAgICBzZWxmLmhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoanNvbl9vdXRwdXQs
IGpzb24uZHVtcHMocmVzdWx0X2RpY3Rpb25hcnksIGluZGVudD00KSkKLSAgICAgICAgICAgIHJl
dHVybiBNYW5hZ2VyLlNVQ0NFU1MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3N0
cmVhbS53cml0ZWxuKCdUZXN0IHN1aXRlIGZhaWxlZCcpCisgICAgICAgICAgICBzZWxmLl9zdHJl
YW0ud3JpdGVsbignJykKIAotICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignVGVzdCBzdWl0
ZSBmYWlsZWQnKQotICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignJykKKyAgICAgICAgICAg
IHNraXBwZWQgPSBbXQorICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9uYW1lczoKKyAgICAg
ICAgICAgICAgICBpZiB0ZXN0IG5vdCBpbiBydW5uZXIucmVzdWx0czoKKyAgICAgICAgICAgICAg
ICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2Rp
Y3Rpb25hcnlbJ1NraXBwZWQnXS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IE5vbmV9
KQorICAgICAgICAgICAgaWYgc2tpcHBlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0u
d3JpdGVsbignU2tpcHBlZCB7fSB0ZXN0cycuZm9ybWF0KGxlbihza2lwcGVkKSkpCisgICAgICAg
ICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJycpCisgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lw
cGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJyAgICB7
fScuZm9ybWF0KHRlc3QpKQorCisgICAgICAgICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRf
d2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19GQUlMRUQsIHJ1bm5lcikKKyAgICAgICAgICAgIHNl
bGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0YXR1cyhydW5uZXIuU1RBVFVTX0NSQVNIRUQs
IHJ1bm5lcikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0YXR1
cyhydW5uZXIuU1RBVFVTX1RJTUVPVVQsIHJ1bm5lcikKKworICAgICAgICAgICAgZm9yIHRlc3Qs
IHJlc3VsdCBpbiBydW5uZXIucmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICBz
dGF0dXNfdG9fc3RyaW5nID0geworICAgICAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0ZB
SUxFRDogJ0ZhaWxlZCcsCisgICAgICAgICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hF
RDogJ0NyYXNoZWQnLAorICAgICAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1RJTUVPVVQ6
ICdUaW1lZG91dCcsCisgICAgICAgICAgICAgICAgfS5nZXQocmVzdWx0WzBdKQorICAgICAgICAg
ICAgICAgIGlmIG5vdCBzdGF0dXNfdG9fc3RyaW5nOgorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgICAgIHJlc3VsdF9kaWN0aW9uYXJ5W3N0YXR1c190b19zdHJpbmdd
LmFwcGVuZCh7J25hbWUnOiB0ZXN0LCAnb3V0cHV0JzogcmVzdWx0WzFdfSkKIAotICAgICAgICBz
a2lwcGVkID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9uYW1lczoKLSAgICAgICAgICAg
IGlmIHRlc3Qgbm90IGluIHJ1bm5lci5yZXN1bHRzOgotICAgICAgICAgICAgICAgIHNraXBwZWQu
YXBwZW5kKHRlc3QpCi0gICAgICAgICAgICAgICAgcmVzdWx0X2RpY3Rpb25hcnlbJ1NraXBwZWQn
XS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IE5vbmV9KQotICAgICAgICBpZiBza2lw
cGVkOgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ1NraXBwZWQge30gdGVzdHMn
LmZvcm1hdChsZW4oc2tpcHBlZCkpKQotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4o
JycpCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gc2tpcHBlZDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFt
LndyaXRlbG4oJyAgICB7fScuZm9ybWF0KHRlc3QpKQotCi0gICAgICAgIHNlbGYuX3ByaW50X3Rl
c3RzX3Jlc3VsdF93aXRoX3N0YXR1cyhydW5uZXIuU1RBVFVTX0ZBSUxFRCwgcnVubmVyKQotICAg
ICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19D
UkFTSEVELCBydW5uZXIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0
YXR1cyhydW5uZXIuU1RBVFVTX1RJTUVPVVQsIHJ1bm5lcikKLQotICAgICAgICBmb3IgdGVzdCwg
cmVzdWx0IGluIHJ1bm5lci5yZXN1bHRzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgc3RhdHVz
X3RvX3N0cmluZyA9IHsKLSAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0ZBSUxFRDogJ0Zh
aWxlZCcsCi0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19DUkFTSEVEOiAnQ3Jhc2hlZCcs
Ci0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19USU1FT1VUOiAnVGltZWRvdXQnLAotICAg
ICAgICAgICAgfS5nZXQocmVzdWx0WzBdKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1c190b19z
dHJpbmc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJlc3VsdF9kaWN0
aW9uYXJ5W3N0YXR1c190b19zdHJpbmddLmFwcGVuZCh7J25hbWUnOiB0ZXN0LCAnb3V0cHV0Jzog
cmVzdWx0WzFdfSkKKyAgICAgICAgICAgIGlmIGpzb25fb3V0cHV0OgorICAgICAgICAgICAgICAg
IHNlbGYuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShqc29uX291dHB1dCwganNvbi5k
dW1wcyhyZXN1bHRfZGljdGlvbmFyeSwgaW5kZW50PTQpKQogCi0gICAgICAgIGlmIGpzb25fb3V0
cHV0OgotICAgICAgICAgICAgc2VsZi5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGpz
b25fb3V0cHV0LCBqc29uLmR1bXBzKHJlc3VsdF9kaWN0aW9uYXJ5LCBpbmRlbnQ9NCkpCisgICAg
ICAgICAgICByZXN1bHQgPSBNYW5hZ2VyLkZBSUxFRF9URVNUUworCisgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMucmVwb3J0X3VybHM6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbign
XG4nKQorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlX3VwZGF0ZSgnUHJlcGFyaW5nIHVw
bG9hZCBkYXRhIC4uLicpCisKKyAgICAgICAgICAgIHN0YXR1c190b190ZXN0X3Jlc3VsdCA9IHsK
KyAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1BBU1NFRDogTm9uZSwKKyAgICAgICAgICAg
ICAgICBydW5uZXIuU1RBVFVTX0ZBSUxFRDogVXBsb2FkLkV4cGVjdGF0aW9ucy5GQUlMLAorICAg
ICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hFRDogVXBsb2FkLkV4cGVjdGF0aW9ucy5D
UkFTSCwKKyAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1RJTUVPVVQ6IFVwbG9hZC5FeHBl
Y3RhdGlvbnMuVElNRU9VVCwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVwbG9hZCA9IFVw
bG9hZCgKKyAgICAgICAgICAgICAgICBzdWl0ZT0nYXBpLXRlc3RzJywKKyAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPXNlbGYuX3BvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYu
X3BvcnQudGFyZ2V0X2hvc3QoMCkpLAorICAgICAgICAgICAgICAgIGRldGFpbHM9VXBsb2FkLmNy
ZWF0ZV9kZXRhaWxzKG9wdGlvbnM9c2VsZi5fb3B0aW9ucyksCisgICAgICAgICAgICAgICAgY29t
bWl0cz1zZWxmLl9wb3J0LmNvbW1pdHNfZm9yX3VwbG9hZCgpLAorICAgICAgICAgICAgICAgIHJ1
bl9zdGF0cz1VcGxvYWQuY3JlYXRlX3J1bl9zdGF0cygKKyAgICAgICAgICAgICAgICAgICAgc3Rh
cnRfdGltZT1zdGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICBlbmRfdGltZT1lbmRfdGlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfc2tpcHBlZD1sZW4ocmVzdWx0X2RpY3Rpb25h
cnlbJ1NraXBwZWQnXSksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICByZXN1
bHRzPXt0ZXN0OiBVcGxvYWQuY3JlYXRlX3Rlc3RfcmVzdWx0KGFjdHVhbD1zdGF0dXNfdG9fdGVz
dF9yZXN1bHRbcmVzdWx0WzBdXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCwg
cmVzdWx0IGluIHJ1bm5lci5yZXN1bHRzLml0ZXJpdGVtcygpIGlmIHJlc3VsdFswXSBpbiBzdGF0
dXNfdG9fdGVzdF9yZXN1bHR9LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJpbnQganNv
bi5kdW1wcyh1cGxvYWQsIGNscz1VcGxvYWQuRW5jb2RlciwgaW5kZW50PTQpCisgICAgICAgICAg
ICBmb3IgdXJsIGluIHNlbGYuX29wdGlvbnMucmVwb3J0X3VybHM6CisgICAgICAgICAgICAgICAg
c2VsZi5fc3RyZWFtLndyaXRlX3VwZGF0ZSgnVXBsb2FkaW5nIHRvIHt9IC4uLicuZm9ybWF0KHVy
bCkpCisgICAgICAgICAgICAgICAgaWYgbm90IHVwbG9hZC51cGxvYWQodXJsLCBsb2dfbGluZV9m
dW5jPXNlbGYuX3N0cmVhbS53cml0ZWxuKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
TWFuYWdlci5GQUlMRURfVVBMT0FECisgICAgICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbign
VXBsb2FkcyBjb21wbGV0ZWQhJykKIAotICAgICAgICByZXR1cm4gTWFuYWdlci5GQUlMRURfVEVT
VFMKKyAgICAgICAgcmV0dXJuIHJlc3VsdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9h
cGlfdGVzdHMvcnVuX2FwaV90ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2FwaV90ZXN0cy9ydW5fYXBpX3Rlc3RzLnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9ydW5fYXBpX3Rlc3RzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIGZyb20gd2Via2l0cHkuYXBpX3Rlc3RzLm1hbmFnZXIg
aW1wb3J0IE0KIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzLm1ldGVyZWRfc3RyZWFtIGltcG9ydCBNZXRlcmVkU3Ry
ZWFtCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZ3VyYXRpb25fb3B0aW9ucywgcGxh
dGZvcm1fb3B0aW9ucywgYmFzZSwgd2luCitmcm9tIHdlYmtpdHB5LnJlc3VsdHMub3B0aW9ucyBp
bXBvcnQgdXBsb2FkX29wdGlvbnMKIAogRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAtMQogSU5U
RVJSVVBUX0VYSVRfU1RBVFVTID0gLTIKQEAgLTEzNCw2ICsxMzUsNyBAQCBkZWYgcGFyc2VfYXJn
cyhhcmdzKToKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tZm9yY2UnLCBhY3Rpb249
J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdSdW4gYWxsIHRlc3RzLCBldmVuIERJU0FCTEVEIHRlc3RzJyksCiAgICAgXSkpCisg
ICAgb3B0aW9uX2dyb3VwX2RlZmluaXRpb25zLmFwcGVuZCgoJ1VwbG9hZCBPcHRpb25zJywgdXBs
b2FkX29wdGlvbnMoKSkpCiAKICAgICBvcHRpb25fcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFy
c2VyKAogICAgICAgICB1c2FnZT0ncnVuLWFwaS10ZXN0cyBbb3B0aW9uc10gWzx0ZXN0IG5hbWVz
Pi4uLl0nLApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDI0
MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00NSw2ICs0NSw3IEBAIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5kX2ZpbGVzCiBmcm9tIHdlYmtpdHB5LmNvbW1v
biBpbXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZworZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgU0NNRGV0ZWN0b3IKIGZyb20gd2Via2l0cHkuY29t
bW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24ucHJldHR5
cGF0Y2ggaW1wb3J0IFByZXR0eVBhdGNoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1w
b3J0IHBhdGgsIHBlbWZpbGUKQEAgLTYxLDYgKzYyLDcgQEAgZnJvbSB3ZWJraXRweS5wb3J0LmZh
Y3RvcnkgaW1wb3J0IFBvcnRGYQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBp
bXBvcnQgYXBhY2hlX2h0dHBfc2VydmVyLCBodHRwX3NlcnZlciwgaHR0cF9zZXJ2ZXJfYmFzZQog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2ViX3BsYXRmb3JtX3Rl
c3Rfc2VydmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCB3ZWJz
b2NrZXRfc2VydmVyCitmcm9tIHdlYmtpdHB5LnJlc3VsdHMudXBsb2FkIGltcG9ydCBVcGxvYWQK
IAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC0xNjM0LDMgKzE2MzYs
MzcgQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAjIFRoaXMgaXMgb3ZlcnJpZGRlbiBi
eSBwb3J0cyB0aGF0IG5lZWQgdG8gZG8gd29yayBpbiB0aGUgcGFyZW50IHByb2Nlc3MgYWZ0ZXIg
YSB3b3JrZXIgc3VicHJvY2VzcyBpcyBzcGF3bmVkLAogICAgICAgICAjIHN1Y2ggYXMgY2xvc2lu
ZyBmaWxlIGRlc2NyaXB0b3JzIHRoYXQgd2VyZSBpbXBsaWNpdGx5IGNsb25lZCB0byB0aGUgd29y
a2VyLgogICAgICAgICBwYXNzCisKKyAgICBkZWYgY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNl
bGYsIGhvc3Q9Tm9uZSk6CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLnRlc3RfY29uZmln
dXJhdGlvbigpCisgICAgICAgIGhvc3QgPSBzZWxmLmhvc3Qgb3IgaG9zdAorCisgICAgICAgIHJl
dHVybiBVcGxvYWQuY3JlYXRlX2NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICBwbGF0Zm9ybT1o
b3N0LnBsYXRmb3JtLm9zX25hbWUsCisgICAgICAgICAgICB2ZXJzaW9uPXN0cihob3N0LnBsYXRm
b3JtLm9zX3ZlcnNpb24pLAorICAgICAgICAgICAgdmVyc2lvbl9uYW1lPWhvc3QucGxhdGZvcm0u
b3NfdmVyc2lvbl9uYW1lKElOVEVSTkFMX1RBQkxFKSBvciBob3N0LnBsYXRmb3JtLm9zX3ZlcnNp
b25fbmFtZSgpLAorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPWNvbmZpZ3VyYXRpb24uYXJjaGl0
ZWN0dXJlLAorICAgICAgICAgICAgc3R5bGU9J2d1YXJkLW1hbGxvYycgaWYgc2VsZi5nZXRfb3B0
aW9uKCdndWFyZF9tYWxsb2MnKSBlbHNlIGNvbmZpZ3VyYXRpb24uYnVpbGRfdHlwZSwKKyAgICAg
ICAgICAgIHNkaz1ob3N0LnBsYXRmb3JtLmJ1aWxkX3ZlcnNpb24oKSwKKyAgICAgICAgKQorCisg
ICAgZGVmIGNvbW1pdHNfZm9yX3VwbG9hZChzZWxmKToKKyAgICAgICAgc2VsZi5ob3N0LmluaXRp
YWxpemVfc2NtKCkKKworICAgICAgICBpZiBwb3J0X2NvbmZpZy5hcHBsZV9hZGRpdGlvbnMoKToK
KyAgICAgICAgICAgIHJlcG9zID0gcG9ydF9jb25maWcuYXBwbGVfYWRkaXRpb25zKCkucmVwb3Mo
KQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVwb3MgPSB7fQorCisgICAgICAgIHVwID0g
b3MucGF0aC5kaXJuYW1lCisgICAgICAgIHJlcG9zWyd3ZWJraXQnXSA9IHVwKHVwKHVwKHVwKHVw
KG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkpKQorCisgICAgICAgIGNvbW1pdHMgPSBbXQor
ICAgICAgICBmb3IgcmVwb19pZCwgcGF0aCBpbiByZXBvcy5pdGVyaXRlbXMoKToKKyAgICAgICAg
ICAgIHNjbSA9IFNDTURldGVjdG9yKHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuX2V4ZWN1dGl2ZSku
ZGV0ZWN0X3NjbV9zeXN0ZW0ocGF0aCkKKyAgICAgICAgICAgIGNvbW1pdHMuYXBwZW5kKFVwbG9h
ZC5jcmVhdGVfY29tbWl0KAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVwb19pZCwK
KyAgICAgICAgICAgICAgICBpZD1zY20ubmF0aXZlX3JldmlzaW9uKHBhdGgpLAorICAgICAgICAg
ICAgICAgIGJyYW5jaD1zY20ubmF0aXZlX2JyYW5jaChwYXRoKSwKKyAgICAgICAgICAgICkpCisg
ICAgICAgIHJldHVybiBjb21taXRzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQv
ZGV2aWNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZp
Y2UucHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9k
ZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsMTAgQEAgY2xhc3MgRGV2aWNl
KG9iamVjdCk6CiAgICAgZGVmIGRldmljZV90eXBlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2Vs
Zi5wbGF0Zm9ybV9kZXZpY2UuZGV2aWNlX3R5cGUKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBi
dWlsZF92ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5wbGF0Zm9ybV9kZXZpY2Uu
YnVpbGRfdmVyc2lvbgorCiAgICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgogICAgICAgICByZXR1
cm4gc2VsZi5wbGF0Zm9ybV9kZXZpY2UgaXMgbm90IE5vbmUKIApJbmRleDogVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5CSh3b3JraW5nIGNvcHkpCkBA
IC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkgKzIzLDEx
IEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHRyYWNlYmFjawogCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcCwgUFVCTElDX1RBQkxF
LCBJTlRFUk5BTF9UQUJMRQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3Rf
Y29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0cHkucG9y
dC5kYXJ3aW4gaW1wb3J0IERhcndpblBvcnQKIGZyb20gd2Via2l0cHkucG9ydC5zaW11bGF0b3Jf
cHJvY2VzcyBpbXBvcnQgU2ltdWxhdG9yUHJvY2VzcworZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVw
bG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLmRldmljZV90eXBlIGltcG9y
dCBEZXZpY2VUeXBlCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLnNpbXVsYXRlZF9kZXZpY2UgaW1wb3J0
IERldmljZVJlcXVlc3QsIFNpbXVsYXRlZERldmljZU1hbmFnZXIKIApAQCAtMjM4LDMgKzI0MCwy
OSBAQCBjbGFzcyBEZXZpY2VQb3J0KERhcndpblBvcnQpOgogCiAgICAgZGVmIGRldmljZV92ZXJz
aW9uKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAgICBkZWYg
Y29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYsIGhvc3Q9Tm9uZSk6CisgICAgICAgIGNvbmZp
Z3VyYXRpb24gPSBzZWxmLnRlc3RfY29uZmlndXJhdGlvbigpCisKKyAgICAgICAgZGV2aWNlX3R5
cGUgPSBob3N0LmRldmljZV90eXBlIGlmIGhvc3QgZWxzZSBzZWxmLkRFVklDRV9UWVBFCisgICAg
ICAgIG1vZGVsID0gZGV2aWNlX3R5cGUuaGFyZHdhcmVfZmFtaWx5CisgICAgICAgIGlmIG1vZGVs
IGFuZCBkZXZpY2VfdHlwZS5oYXJkd2FyZV90eXBlOgorICAgICAgICAgICAgbW9kZWwgKz0gJyB7
fScuZm9ybWF0KGRldmljZV90eXBlLmhhcmR3YXJlX3R5cGUpCisKKyAgICAgICAgdmVyc2lvbiA9
IHNlbGYuZGV2aWNlX3ZlcnNpb24oKQorICAgICAgICB2ZXJzaW9uX25hbWUgPSBOb25lCisgICAg
ICAgIGZvciB0YWJsZSBpbiBbSU5URVJOQUxfVEFCTEUsIFBVQkxJQ19UQUJMRV06CisgICAgICAg
ICAgICB2ZXJzaW9uX25hbWUgPSBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5ob3N0LnBsYXRmb3Jt
KS50b19uYW1lKHZlcnNpb24sIHBsYXRmb3JtPWRldmljZV90eXBlLnNvZnR3YXJlX3ZhcmlhbnQu
bG93ZXIoKSwgdGFibGU9dGFibGUpCisgICAgICAgICAgICBpZiB2ZXJzaW9uX25hbWU6CisgICAg
ICAgICAgICAgICAgYnJlYWsKKworICAgICAgICByZXR1cm4gVXBsb2FkLmNyZWF0ZV9jb25maWd1
cmF0aW9uKAorICAgICAgICAgICAgcGxhdGZvcm09ZGV2aWNlX3R5cGUuc29mdHdhcmVfdmFyaWFu
dC5sb3dlcigpLAorICAgICAgICAgICAgaXNfc2ltdWxhdG9yPXNlbGYuREVWSUNFX01BTkFHRVIg
PT0gU2ltdWxhdGVkRGV2aWNlTWFuYWdlciwKKyAgICAgICAgICAgIHZlcnNpb249c3RyKHZlcnNp
b24pLAorICAgICAgICAgICAgdmVyc2lvbl9uYW1lPXZlcnNpb25fbmFtZSwKKyAgICAgICAgICAg
IGFyY2hpdGVjdHVyZT1jb25maWd1cmF0aW9uLmFyY2hpdGVjdHVyZSwKKyAgICAgICAgICAgIHN0
eWxlPSdndWFyZC1tYWxsb2MnIGlmIHNlbGYuZ2V0X29wdGlvbignZ3VhcmRfbWFsbG9jJykgZWxz
ZSBjb25maWd1cmF0aW9uLmJ1aWxkX3R5cGUsCisgICAgICAgICAgICBtb2RlbD1tb2RlbCwKKyAg
ICAgICAgICAgIHNkaz1ob3N0LmJ1aWxkX3ZlcnNpb24gaWYgaG9zdCBlbHNlIE5vbmUsCisgICAg
ICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nf
c2ltdWxhdG9yX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRz
L3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpA
QCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE2MSwz
ICsxNjEsMTcgQEAgY2xhc3MgSU9TU2ltdWxhdG9yVGVzdChpb3NfdGVzdGNhc2UuSU9TVAogICAg
IGRlZiB0ZXN0X21heF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgIHBvcnQgPSBzZWxm
Lm1ha2VfcG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5tYXhfY2hpbGRfcHJv
Y2Vzc2VzKERldmljZVR5cGUuZnJvbV9zdHJpbmcoJ0FwcGxlIFdhdGNoJykpLCAwKQorCisgICAg
ZGVmIHRlc3RfY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYpOgorICAgICAgICBwb3J0ID0g
c2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAg
ZGljdCgKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybT0naW9zJywKKyAgICAgICAgICAgICAgICBp
c19zaW11bGF0b3I9VHJ1ZSwKKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmU9J3g4Nl82NCcs
CisgICAgICAgICAgICAgICAgdmVyc2lvbj0nMTEnLAorICAgICAgICAgICAgICAgIHZlcnNpb25f
bmFtZT0naU9TIDExJywKKyAgICAgICAgICAgICAgICBzdHlsZT0ncmVsZWFzZScsCisgICAgICAg
ICAgICApLAorICAgICAgICAgICAgcG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQoKSwKKyAg
ICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5CShyZXZpc2lvbiAyNDM1
NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQpAQCAtMjc5LDMgKzI3OSwxNCBAQCBjbGFzcyBNYWNQb3J0KERhcndpblBvcnQpOgogICAgICAg
ICB3b3J0aGxlc3NfcGF0dGVybnMuYXBwZW5kKChyZS5jb21waWxlKCcuKjw8PDwgVk1DID4+Pj4u
KlxuJyksICcnKSkKICAgICAgICAgd29ydGhsZXNzX3BhdHRlcm5zLmFwcGVuZCgocmUuY29tcGls
ZSgnLio8PDwgRkZSX0NvbW1vbiA+Pj4uKlxuJyksICcnKSkKICAgICAgICAgcmV0dXJuIHdvcnRo
bGVzc19wYXR0ZXJucworCisgICAgZGVmIGNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxmLCBo
b3N0PU5vbmUpOgorICAgICAgICBob3N0ID0gaG9zdCBvciBzZWxmLmhvc3QKKyAgICAgICAgY29u
ZmlndXJhdGlvbiA9IHN1cGVyKE1hY1BvcnQsIHNlbGYpLmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9h
ZChob3N0PWhvc3QpCisKKyAgICAgICAgb3V0cHV0ID0gaG9zdC5leGVjdXRpdmUucnVuX2NvbW1h
bmQoWycvdXNyL3NiaW4vc3lzY3RsJywgJ2h3Lm1vZGVsJ10pLnJzdHJpcCgpCisgICAgICAgIG1h
dGNoID0gcmUubWF0Y2gocidody5tb2RlbDogKD9QPG1vZGVsPi4qKScsIG91dHB1dCkKKyAgICAg
ICAgaWYgbWF0Y2g6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uWydtb2RlbCddID0gbWF0Y2gu
Z3JvdXAoJ21vZGVsJykKKworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgpJbmRleDogVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNDM1
NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5CSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMg
YXJlCkBAIC0yMjQsMyArMjI0LDE4IEBAIGNsYXNzIE1hY1Rlc3QoZGFyd2luX3Rlc3RjYXNlLkRh
cndpblRlc3QKIAogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1Nb2NrT3B0
aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9RmFsc2UpLCBwb3J0X25hbWU9J21hYy13azInKQogICAg
ICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZHJpdmVyX25hbWUoKSwgJ1dlYktpdFRlc3RSdW5u
ZXInKQorCisgICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYpOgorICAg
ICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAor
ICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nbWFjJywKKyAgICAg
ICAgICAgICAgICBpc19zaW11bGF0b3I9RmFsc2UsCisgICAgICAgICAgICAgICAgYXJjaGl0ZWN0
dXJlPSd4ODZfNjQnLAorICAgICAgICAgICAgICAgIHZlcnNpb249JzEwLjcnLAorICAgICAgICAg
ICAgICAgIHZlcnNpb25fbmFtZT0nTGlvbicsCisgICAgICAgICAgICAgICAgc2RrPScxN0E0MDUn
LAorICAgICAgICAgICAgICAgIHN0eWxlPSdyZWxlYXNlJywKKyAgICAgICAgICAgICksCisgICAg
ICAgICAgICBwb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZCgpLAorICAgICAgICApCkluZGV4
OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5
CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVs
YXRlZF9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBjbGFzcyBT
aW11bGF0ZWREZXZpY2VNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICB1ZGlkPWRldmljZV9p
bmZvWyd1ZGlkJ10sCiAgICAgICAgICAgICBob3N0PWhvc3QsCiAgICAgICAgICAgICBkZXZpY2Vf
dHlwZT1kZXZpY2VfdHlwZSwKKyAgICAgICAgICAgIGJ1aWxkX3ZlcnNpb249cnVudGltZS5idWls
ZF92ZXJzaW9uLAogICAgICAgICApKQogICAgICAgICBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLkFW
QUlMQUJMRV9ERVZJQ0VTLmFwcGVuZChyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1bHQKQEAg
LTQ4OCwxMiArNDg5LDEzIEBAIGNsYXNzIFNpbXVsYXRlZERldmljZShvYmplY3QpOgogICAgICAg
ICAnU0hVVFRJTkcgRE9XTicsCiAgICAgXQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUs
IHVkaWQsIGhvc3QsIGRldmljZV90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwg
dWRpZCwgaG9zdCwgZGV2aWNlX3R5cGUsIGJ1aWxkX3ZlcnNpb24pOgogICAgICAgICBhc3NlcnQg
ZGV2aWNlX3R5cGUuc29mdHdhcmVfdmVyc2lvbgogCiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUK
ICAgICAgICAgc2VsZi51ZGlkID0gdWRpZAogICAgICAgICBzZWxmLmRldmljZV90eXBlID0gZGV2
aWNlX3R5cGUKKyAgICAgICAgc2VsZi5idWlsZF92ZXJzaW9uID0gYnVpbGRfdmVyc2lvbgogICAg
ICAgICBzZWxmLl9zdGF0ZSA9IFNpbXVsYXRlZERldmljZS5EZXZpY2VTdGF0ZS5TSFVUVElOR19E
T1dOCiAgICAgICAgIHNlbGYuX2xhc3RfdXBkYXRlZF9zdGF0ZSA9IHRpbWUudGltZSgpCiAKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVz
dC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRl
ZF9kZXZpY2VfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMv
d2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtNjA1LDYgKzYwNSw3IEBAIGNsYXNzIFNpbXVsYXRlZERldmljZVRlc3QodW5pdHRlc3Qu
VGVzdEMKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4oU2ltdWxhdGVkRGV2aWNl
TWFuYWdlci5JTklUSUFMSVpFRF9ERVZJQ0VTKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
JzM0RkI0NzZDLTZGQTAtNDNDOC04OTQ1LTFCRDdBNEVCRjBERScsIFNpbXVsYXRlZERldmljZU1h
bmFnZXIuSU5JVElBTElaRURfREVWSUNFU1swXS51ZGlkKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFscygnMTVBODQwMScsIFNpbXVsYXRlZERldmljZU1hbmFnZXIuSU5JVElBTElaRURfREVWSUNF
U1swXS5idWlsZF92ZXJzaW9uKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhTaW11bGF0ZWRE
ZXZpY2UuRGV2aWNlU3RhdGUuQk9PVEVELCBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLklOSVRJQUxJ
WkVEX0RFVklDRVNbMF0ucGxhdGZvcm1fZGV2aWNlLnN0YXRlKCkpCiAKICAgICAgICAgU2ltdWxh
dGVkRGV2aWNlTWFuYWdlci50ZWFyX2Rvd24oaG9zdCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366436</attachid>
            <date>2019-04-01 16:09:40 -0700</date>
            <delta_ts>2019-04-01 16:58:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-196323-20190401160939.patch</filename>
            <type>text/plain</type>
            <size>21311</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzU5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDE5LTAzLTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBydW4tYXBpLXRlc3RzOiBVcGxvYWQgdGVzdCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzMjMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ5MzU2NzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvbWFuYWdlci5w
eToKKyAgICAgICAgKE1hbmFnZXIpOgorICAgICAgICAoTWFuYWdlci5ydW4pOiBVcGxvYWQgcmVz
dWx0cyB0byBhIHJlc3VsdHMgZGF0YWJhc2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9h
cGlfdGVzdHMvcnVuX2FwaV90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOiBBZGQgdXBs
b2FkIGFyZ3VtZW50cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToK
KyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQp
OiBDcmVhdGVzIGEgY29uZmlndXJhdGlvbiBkaWN0aW9uYXJ5IGZvciB1cGxvYWRpbmcgcmVzdWx0
cy4KKyAgICAgICAgKFBvcnQuY29tbWl0c19mb3JfdXBsb2FkKTogQ3JlYXRlIGEgbGlzdCBvZiBj
b21taXRzIGZyb20gdGhlIFdlYktpdCByZXBvc2l0b3J5IHRlc3RzIGFyZSBydW4gZnJvbSBhbG9u
ZworICAgICAgICB3aXRoIGNvbW1pdHMgZnJvbSBhbnkgb3RoZXIgYXNzb2NpYXRlZCByZXBvc2l0
b3JpZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZS5weToKKyAgICAg
ICAgKERldmljZSk6CisgICAgICAgIChEZXZpY2UuYnVpbGRfdmVyc2lvbik6IEFjY2VzcyBidWls
ZF92ZXJzb2luIG9mIHVuZGVybHlpbmcgcGxhdGZvcm0gZGV2aWNlLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5OgorICAgICAgICAoSU9T
U2ltdWxhdG9yVGVzdCk6CisgICAgICAgIChJT1NTaW11bGF0b3JUZXN0LnRlc3RfY29uZmlndXJh
dGlvbl9mb3JfdXBsb2FkKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNl
X3BvcnQucHk6CisgICAgICAgIChEZXZpY2VQb3J0KToKKyAgICAgICAgKERldmljZVBvcnQuY29u
ZmlndXJhdGlvbl9mb3JfdXBsb2FkKTogRGV2aWNlcyBhcmUgdW5pcXVlIGJlY2F1c2UgdGhlaXIg
Y29uZmlndXJhdGlvbiBpcyBub3QKKyAgICAgICAgdGhlIHNhbWUgYXMgdGhlIG1hY2hpbmUgdXBs
b2FkaW5nIHJlc3VsdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weToK
KyAgICAgICAgKE1hY1BvcnQpOgorICAgICAgICAoTWFjUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91
cGxvYWQpOiBEZWZpbmUgU0RLIGluIHVwbG9hZCBjb25maWd1cmF0aW9uIGZvciBNYWMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weToKKyAgICAgICAgKE1h
Y1Rlc3QpOgorICAgICAgICAoTWFjVGVzdC50ZXN0X2NvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5Ogor
ICAgICAgICAoU2ltdWxhdGVkRGV2aWNlTWFuYWdlci5fY3JlYXRlX2RldmljZV93aXRoX3J1bnRp
bWUpOgorICAgICAgICAoU2ltdWxhdGVkRGV2aWNlLl9faW5pdF9fKTogQ3JlYXRlIHNpbXVsYXRl
ZCBkZXZpY2Ugd2l0aCBhIGJ1aWxkX3ZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9leGlz
dGluZ19zaW11bGF0b3IpOgorCiAyMDE5LTAzLTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQyNjg2KTogcGFja2FnZS1yb290IGNyZWF0
ZXMgcm9vdHMgd2l0aCBicm9rZW4gc3ltbGlua3MgaW4gV2ViS2l0LmZyYW1ld29yay9YUENTZXJ2
aWNlcy8KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL21hbmFnZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvbWFuYWdlci5w
eQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMv
bWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMiwxMCArMjIsMTIgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBs
b2dnaW5nCi1pbXBvcnQgb3MKK2ltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkuYXBpX3Rlc3Rz
LnJ1bm5lciBpbXBvcnQgUnVubmVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVwbG9hZCBpbXBv
cnQgVXBsb2FkCisKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdGVkX2RldmljZSBpbXBvcnQg
RGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlcgogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCkBAIC0zOSw2ICs0MSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICBGQUlMRURfQlVJTERfQ0hFQ0sgPSAxCiAgICAgRkFJTEVEX0NPTExFQ1RfVEVTVFMg
PSAyCiAgICAgRkFJTEVEX1RFU1RTID0gMworICAgIEZBSUxFRF9VUExPQUQgPSA0CiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgc3RyZWFtKToKICAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKQEAgLTE1NCw2ICsxNTcsOCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgICAgICBpZiBub3Qgc2VsZi5ob3N0LmZpbGVzeXN0ZW0uaXNkaXIoc2VsZi5ob3N0LmZp
bGVzeXN0ZW0uZGlybmFtZShqc29uX291dHB1dCkpIG9yIHNlbGYuaG9zdC5maWxlc3lzdGVtLmlz
ZGlyKGpzb25fb3V0cHV0KToKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nh
bm5vdCB3cml0ZSB0byB7fScuZm9ybWF0KGpzb25fb3V0cHV0KSkKIAorICAgICAgICBzdGFydF90
aW1lID0gdGltZS50aW1lKCkKKwogICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVfdXBkYXRlKCdD
aGVja2luZyBidWlsZCAuLi4nKQogICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5jaGVja19hcGlf
dGVzdF9idWlsZChzZWxmLl9iaW5hcmllc19mb3JfYXJndW1lbnRzKGFyZ3MpKToKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJ0J1aWxkIGNoZWNrIGZhaWxlZCcpCkBAIC0xODUsNiArMTkwLDggQEAg
Y2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgIyBJZiB3ZSByZWNlaXZlIGEgS2V5
Ym9hcmRJbnRlcnJ1cHQsIHByaW50IHJlc3VsdHMuCiAgICAgICAgICAgICBzZWxmLl9zdHJlYW0u
d3JpdGVsbignJykKIAorICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCisKICAgICAgICAg
c3VjY2Vzc2Z1bCA9IHJ1bm5lci5yZXN1bHRfbWFwX2J5X3N0YXR1cyhydW5uZXIuU1RBVFVTX1BB
U1NFRCkKICAgICAgICAgZGlzYWJsZWQgPSBsZW4ocnVubmVyLnJlc3VsdF9tYXBfYnlfc3RhdHVz
KHJ1bm5lci5TVEFUVVNfRElTQUJMRUQpKQogICAgICAgICBfbG9nLmluZm8oJ1JhbiB7fSB0ZXN0
cyBvZiB7fSB3aXRoIHt9IHN1Y2Nlc3NmdWwnLmZvcm1hdChsZW4ocnVubmVyLnJlc3VsdHMpIC0g
ZGlzYWJsZWQsIGxlbih0ZXN0X25hbWVzKSwgbGVuKHN1Y2Nlc3NmdWwpKSkKQEAgLTE5Nyw0MiAr
MjA0LDc0IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgfQogCiAgICAgICAgIHNl
bGYuX3N0cmVhbS53cml0ZWxuKCctJyAqIDMwKQorICAgICAgICByZXN1bHQgPSBNYW5hZ2VyLlNV
Q0NFU1MKICAgICAgICAgaWYgbGVuKHN1Y2Nlc3NmdWwpICsgZGlzYWJsZWQgPT0gbGVuKHRlc3Rf
bmFtZXMpOgogICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ0FsbCB0ZXN0cyBzdWNj
ZXNzZnVsbHkgcGFzc2VkIScpCiAgICAgICAgICAgICBpZiBqc29uX291dHB1dDoKICAgICAgICAg
ICAgICAgICBzZWxmLmhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoanNvbl9vdXRwdXQs
IGpzb24uZHVtcHMocmVzdWx0X2RpY3Rpb25hcnksIGluZGVudD00KSkKLSAgICAgICAgICAgIHJl
dHVybiBNYW5hZ2VyLlNVQ0NFU1MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3N0
cmVhbS53cml0ZWxuKCdUZXN0IHN1aXRlIGZhaWxlZCcpCisgICAgICAgICAgICBzZWxmLl9zdHJl
YW0ud3JpdGVsbignJykKIAotICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignVGVzdCBzdWl0
ZSBmYWlsZWQnKQotICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignJykKKyAgICAgICAgICAg
IHNraXBwZWQgPSBbXQorICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9uYW1lczoKKyAgICAg
ICAgICAgICAgICBpZiB0ZXN0IG5vdCBpbiBydW5uZXIucmVzdWx0czoKKyAgICAgICAgICAgICAg
ICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2Rp
Y3Rpb25hcnlbJ1NraXBwZWQnXS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IE5vbmV9
KQorICAgICAgICAgICAgaWYgc2tpcHBlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0u
d3JpdGVsbignU2tpcHBlZCB7fSB0ZXN0cycuZm9ybWF0KGxlbihza2lwcGVkKSkpCisgICAgICAg
ICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJycpCisgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lw
cGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJyAgICB7
fScuZm9ybWF0KHRlc3QpKQorCisgICAgICAgICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRf
d2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19GQUlMRUQsIHJ1bm5lcikKKyAgICAgICAgICAgIHNl
bGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0YXR1cyhydW5uZXIuU1RBVFVTX0NSQVNIRUQs
IHJ1bm5lcikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0YXR1
cyhydW5uZXIuU1RBVFVTX1RJTUVPVVQsIHJ1bm5lcikKKworICAgICAgICAgICAgZm9yIHRlc3Qs
IHJlc3VsdCBpbiBydW5uZXIucmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICBz
dGF0dXNfdG9fc3RyaW5nID0geworICAgICAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0ZB
SUxFRDogJ0ZhaWxlZCcsCisgICAgICAgICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hF
RDogJ0NyYXNoZWQnLAorICAgICAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1RJTUVPVVQ6
ICdUaW1lZG91dCcsCisgICAgICAgICAgICAgICAgfS5nZXQocmVzdWx0WzBdKQorICAgICAgICAg
ICAgICAgIGlmIG5vdCBzdGF0dXNfdG9fc3RyaW5nOgorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgICAgIHJlc3VsdF9kaWN0aW9uYXJ5W3N0YXR1c190b19zdHJpbmdd
LmFwcGVuZCh7J25hbWUnOiB0ZXN0LCAnb3V0cHV0JzogcmVzdWx0WzFdfSkKIAotICAgICAgICBz
a2lwcGVkID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9uYW1lczoKLSAgICAgICAgICAg
IGlmIHRlc3Qgbm90IGluIHJ1bm5lci5yZXN1bHRzOgotICAgICAgICAgICAgICAgIHNraXBwZWQu
YXBwZW5kKHRlc3QpCi0gICAgICAgICAgICAgICAgcmVzdWx0X2RpY3Rpb25hcnlbJ1NraXBwZWQn
XS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IE5vbmV9KQotICAgICAgICBpZiBza2lw
cGVkOgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ1NraXBwZWQge30gdGVzdHMn
LmZvcm1hdChsZW4oc2tpcHBlZCkpKQotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4o
JycpCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gc2tpcHBlZDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFt
LndyaXRlbG4oJyAgICB7fScuZm9ybWF0KHRlc3QpKQotCi0gICAgICAgIHNlbGYuX3ByaW50X3Rl
c3RzX3Jlc3VsdF93aXRoX3N0YXR1cyhydW5uZXIuU1RBVFVTX0ZBSUxFRCwgcnVubmVyKQotICAg
ICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19D
UkFTSEVELCBydW5uZXIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0
YXR1cyhydW5uZXIuU1RBVFVTX1RJTUVPVVQsIHJ1bm5lcikKLQotICAgICAgICBmb3IgdGVzdCwg
cmVzdWx0IGluIHJ1bm5lci5yZXN1bHRzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgc3RhdHVz
X3RvX3N0cmluZyA9IHsKLSAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0ZBSUxFRDogJ0Zh
aWxlZCcsCi0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19DUkFTSEVEOiAnQ3Jhc2hlZCcs
Ci0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19USU1FT1VUOiAnVGltZWRvdXQnLAotICAg
ICAgICAgICAgfS5nZXQocmVzdWx0WzBdKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1c190b19z
dHJpbmc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJlc3VsdF9kaWN0
aW9uYXJ5W3N0YXR1c190b19zdHJpbmddLmFwcGVuZCh7J25hbWUnOiB0ZXN0LCAnb3V0cHV0Jzog
cmVzdWx0WzFdfSkKKyAgICAgICAgICAgIGlmIGpzb25fb3V0cHV0OgorICAgICAgICAgICAgICAg
IHNlbGYuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShqc29uX291dHB1dCwganNvbi5k
dW1wcyhyZXN1bHRfZGljdGlvbmFyeSwgaW5kZW50PTQpKQogCi0gICAgICAgIGlmIGpzb25fb3V0
cHV0OgotICAgICAgICAgICAgc2VsZi5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGpz
b25fb3V0cHV0LCBqc29uLmR1bXBzKHJlc3VsdF9kaWN0aW9uYXJ5LCBpbmRlbnQ9NCkpCisgICAg
ICAgICAgICByZXN1bHQgPSBNYW5hZ2VyLkZBSUxFRF9URVNUUworCisgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMucmVwb3J0X3VybHM6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbign
XG4nKQorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlX3VwZGF0ZSgnUHJlcGFyaW5nIHVw
bG9hZCBkYXRhIC4uLicpCisKKyAgICAgICAgICAgIHN0YXR1c190b190ZXN0X3Jlc3VsdCA9IHsK
KyAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1BBU1NFRDogTm9uZSwKKyAgICAgICAgICAg
ICAgICBydW5uZXIuU1RBVFVTX0ZBSUxFRDogVXBsb2FkLkV4cGVjdGF0aW9ucy5GQUlMLAorICAg
ICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hFRDogVXBsb2FkLkV4cGVjdGF0aW9ucy5D
UkFTSCwKKyAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1RJTUVPVVQ6IFVwbG9hZC5FeHBl
Y3RhdGlvbnMuVElNRU9VVCwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVwbG9hZCA9IFVw
bG9hZCgKKyAgICAgICAgICAgICAgICBzdWl0ZT0nYXBpLXRlc3RzJywKKyAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPXNlbGYuX3BvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYu
X3BvcnQudGFyZ2V0X2hvc3QoMCkpLAorICAgICAgICAgICAgICAgIGRldGFpbHM9VXBsb2FkLmNy
ZWF0ZV9kZXRhaWxzKG9wdGlvbnM9c2VsZi5fb3B0aW9ucyksCisgICAgICAgICAgICAgICAgY29t
bWl0cz1zZWxmLl9wb3J0LmNvbW1pdHNfZm9yX3VwbG9hZCgpLAorICAgICAgICAgICAgICAgIHJ1
bl9zdGF0cz1VcGxvYWQuY3JlYXRlX3J1bl9zdGF0cygKKyAgICAgICAgICAgICAgICAgICAgc3Rh
cnRfdGltZT1zdGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICBlbmRfdGltZT1lbmRfdGlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfc2tpcHBlZD1sZW4ocmVzdWx0X2RpY3Rpb25h
cnlbJ1NraXBwZWQnXSksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICByZXN1
bHRzPXt0ZXN0OiBVcGxvYWQuY3JlYXRlX3Rlc3RfcmVzdWx0KGFjdHVhbD1zdGF0dXNfdG9fdGVz
dF9yZXN1bHRbcmVzdWx0WzBdXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCwg
cmVzdWx0IGluIHJ1bm5lci5yZXN1bHRzLml0ZXJpdGVtcygpIGlmIHJlc3VsdFswXSBpbiBzdGF0
dXNfdG9fdGVzdF9yZXN1bHR9LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgcHJpbnQganNv
bi5kdW1wcyh1cGxvYWQsIGNscz1VcGxvYWQuRW5jb2RlciwgaW5kZW50PTQpCisgICAgICAgICAg
ICBmb3IgdXJsIGluIHNlbGYuX29wdGlvbnMucmVwb3J0X3VybHM6CisgICAgICAgICAgICAgICAg
c2VsZi5fc3RyZWFtLndyaXRlX3VwZGF0ZSgnVXBsb2FkaW5nIHRvIHt9IC4uLicuZm9ybWF0KHVy
bCkpCisgICAgICAgICAgICAgICAgaWYgbm90IHVwbG9hZC51cGxvYWQodXJsLCBsb2dfbGluZV9m
dW5jPXNlbGYuX3N0cmVhbS53cml0ZWxuKToKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0g
TWFuYWdlci5GQUlMRURfVVBMT0FECisgICAgICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbign
VXBsb2FkcyBjb21wbGV0ZWQhJykKIAotICAgICAgICByZXR1cm4gTWFuYWdlci5GQUlMRURfVEVT
VFMKKyAgICAgICAgcmV0dXJuIHJlc3VsdApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9h
cGlfdGVzdHMvcnVuX2FwaV90ZXN0cy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L2FwaV90ZXN0cy9ydW5fYXBpX3Rlc3RzLnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9ydW5fYXBpX3Rlc3RzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0zMCw2ICszMCw3IEBAIGZyb20gd2Via2l0cHkuYXBpX3Rlc3RzLm1hbmFnZXIg
aW1wb3J0IE0KIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3QgaW1wb3J0IEhvc3QKIGZyb20gd2Vi
a2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzLm1ldGVyZWRfc3RyZWFtIGltcG9ydCBNZXRlcmVkU3Ry
ZWFtCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZ3VyYXRpb25fb3B0aW9ucywgcGxh
dGZvcm1fb3B0aW9ucywgYmFzZSwgd2luCitmcm9tIHdlYmtpdHB5LnJlc3VsdHMub3B0aW9ucyBp
bXBvcnQgdXBsb2FkX29wdGlvbnMKIAogRVhDRVBUSU9OQUxfRVhJVF9TVEFUVVMgPSAtMQogSU5U
RVJSVVBUX0VYSVRfU1RBVFVTID0gLTIKQEAgLTEzNCw2ICsxMzUsNyBAQCBkZWYgcGFyc2VfYXJn
cyhhcmdzKToKICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oJy0tZm9yY2UnLCBhY3Rpb249
J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBoZWxwPSdSdW4gYWxsIHRlc3RzLCBldmVuIERJU0FCTEVEIHRlc3RzJyksCiAgICAgXSkpCisg
ICAgb3B0aW9uX2dyb3VwX2RlZmluaXRpb25zLmFwcGVuZCgoJ1VwbG9hZCBPcHRpb25zJywgdXBs
b2FkX29wdGlvbnMoKSkpCiAKICAgICBvcHRpb25fcGFyc2VyID0gb3B0cGFyc2UuT3B0aW9uUGFy
c2VyKAogICAgICAgICB1c2FnZT0ncnVuLWFwaS10ZXN0cyBbb3B0aW9uc10gWzx0ZXN0IG5hbWVz
Pi4uLl0nLApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHJldmlzaW9uIDI0
MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CSh3b3JraW5nIGNv
cHkpCkBAIC00NSw2ICs0NSw3IEBAIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCiAKIGZy
b20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBmaW5kX2ZpbGVzCiBmcm9tIHdlYmtpdHB5LmNvbW1v
biBpbXBvcnQgcmVhZF9jaGVja3N1bV9mcm9tX3BuZworZnJvbSB3ZWJraXRweS5jb21tb24uY2hl
Y2tvdXQuc2NtLmRldGVjdGlvbiBpbXBvcnQgU0NNRGV0ZWN0b3IKIGZyb20gd2Via2l0cHkuY29t
bW9uLm1lbW9pemVkIGltcG9ydCBtZW1vaXplZAogZnJvbSB3ZWJraXRweS5jb21tb24ucHJldHR5
cGF0Y2ggaW1wb3J0IFByZXR0eVBhdGNoCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0gaW1w
b3J0IHBhdGgsIHBlbWZpbGUKQEAgLTYxLDYgKzYyLDcgQEAgZnJvbSB3ZWJraXRweS5wb3J0LmZh
Y3RvcnkgaW1wb3J0IFBvcnRGYQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBp
bXBvcnQgYXBhY2hlX2h0dHBfc2VydmVyLCBodHRwX3NlcnZlciwgaHR0cF9zZXJ2ZXJfYmFzZQog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2ViX3BsYXRmb3JtX3Rl
c3Rfc2VydmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCB3ZWJz
b2NrZXRfc2VydmVyCitmcm9tIHdlYmtpdHB5LnJlc3VsdHMudXBsb2FkIGltcG9ydCBVcGxvYWQK
IAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCkBAIC0xNjM0LDMgKzE2MzYs
MzggQEAgY2xhc3MgUG9ydChvYmplY3QpOgogICAgICAgICAjIFRoaXMgaXMgb3ZlcnJpZGRlbiBi
eSBwb3J0cyB0aGF0IG5lZWQgdG8gZG8gd29yayBpbiB0aGUgcGFyZW50IHByb2Nlc3MgYWZ0ZXIg
YSB3b3JrZXIgc3VicHJvY2VzcyBpcyBzcGF3bmVkLAogICAgICAgICAjIHN1Y2ggYXMgY2xvc2lu
ZyBmaWxlIGRlc2NyaXB0b3JzIHRoYXQgd2VyZSBpbXBsaWNpdGx5IGNsb25lZCB0byB0aGUgd29y
a2VyLgogICAgICAgICBwYXNzCisKKyAgICBkZWYgY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNl
bGYsIGhvc3Q9Tm9uZSk6CisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSBzZWxmLnRlc3RfY29uZmln
dXJhdGlvbigpCisgICAgICAgIGhvc3QgPSBzZWxmLmhvc3Qgb3IgaG9zdAorCisgICAgICAgIHJl
dHVybiBVcGxvYWQuY3JlYXRlX2NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICBwbGF0Zm9ybT1o
b3N0LnBsYXRmb3JtLm9zX25hbWUsCisgICAgICAgICAgICB2ZXJzaW9uPXN0cihob3N0LnBsYXRm
b3JtLm9zX3ZlcnNpb24pLAorICAgICAgICAgICAgdmVyc2lvbl9uYW1lPWhvc3QucGxhdGZvcm0u
b3NfdmVyc2lvbl9uYW1lKElOVEVSTkFMX1RBQkxFKSBvciBob3N0LnBsYXRmb3JtLm9zX3ZlcnNp
b25fbmFtZSgpLAorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPWNvbmZpZ3VyYXRpb24uYXJjaGl0
ZWN0dXJlLAorICAgICAgICAgICAgc3R5bGU9J2d1YXJkLW1hbGxvYycgaWYgc2VsZi5nZXRfb3B0
aW9uKCdndWFyZF9tYWxsb2MnKSBlbHNlIGNvbmZpZ3VyYXRpb24uYnVpbGRfdHlwZSwKKyAgICAg
ICAgICAgIHNkaz1ob3N0LnBsYXRmb3JtLmJ1aWxkX3ZlcnNpb24oKSwKKyAgICAgICAgKQorCisg
ICAgQG1lbW9pemVkCisgICAgZGVmIGNvbW1pdHNfZm9yX3VwbG9hZChzZWxmKToKKyAgICAgICAg
c2VsZi5ob3N0LmluaXRpYWxpemVfc2NtKCkKKworICAgICAgICBpZiBwb3J0X2NvbmZpZy5hcHBs
ZV9hZGRpdGlvbnMoKSBhbmQgZ2V0YXR0cihwb3J0X2NvbmZpZy5hcHBsZV9hZGRpdGlvbnMoKSwg
J3JlcG9zJywgRmFsc2UpOgorICAgICAgICAgICAgcmVwb3MgPSBwb3J0X2NvbmZpZy5hcHBsZV9h
ZGRpdGlvbnMoKS5yZXBvcygpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXBvcyA9IHt9
CisKKyAgICAgICAgdXAgPSBvcy5wYXRoLmRpcm5hbWUKKyAgICAgICAgcmVwb3NbJ3dlYmtpdCdd
ID0gdXAodXAodXAodXAodXAob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkpCisKKyAgICAg
ICAgY29tbWl0cyA9IFtdCisgICAgICAgIGZvciByZXBvX2lkLCBwYXRoIGluIHJlcG9zLml0ZXJp
dGVtcygpOgorICAgICAgICAgICAgc2NtID0gU0NNRGV0ZWN0b3Ioc2VsZi5fZmlsZXN5c3RlbSwg
c2VsZi5fZXhlY3V0aXZlKS5kZXRlY3Rfc2NtX3N5c3RlbShwYXRoKQorICAgICAgICAgICAgY29t
bWl0cy5hcHBlbmQoVXBsb2FkLmNyZWF0ZV9jb21taXQoCisgICAgICAgICAgICAgICAgcmVwb3Np
dG9yeV9pZD1yZXBvX2lkLAorICAgICAgICAgICAgICAgIGlkPXNjbS5uYXRpdmVfcmV2aXNpb24o
cGF0aCksCisgICAgICAgICAgICAgICAgYnJhbmNoPXNjbS5uYXRpdmVfYnJhbmNoKHBhdGgpLAor
ICAgICAgICAgICAgKSkKKyAgICAgICAgcmV0dXJuIGNvbW1pdHMKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcG9ydC9kZXZpY2UucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2RldmljZS5weQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wb3J0L2RldmljZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTAxLDYgKzEwMSwx
MCBAQCBjbGFzcyBEZXZpY2Uob2JqZWN0KToKICAgICBkZWYgZGV2aWNlX3R5cGUoc2VsZik6CiAg
ICAgICAgIHJldHVybiBzZWxmLnBsYXRmb3JtX2RldmljZS5kZXZpY2VfdHlwZQogCisgICAgQHBy
b3BlcnR5CisgICAgZGVmIGJ1aWxkX3ZlcnNpb24oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxm
LnBsYXRmb3JtX2RldmljZS5idWlsZF92ZXJzaW9uCisKICAgICBkZWYgX19ub256ZXJvX18oc2Vs
Zik6CiAgICAgICAgIHJldHVybiBzZWxmLnBsYXRmb3JtX2RldmljZSBpcyBub3QgTm9uZQogCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5CShyZXZpc2lv
biAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxOCBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxOC0yMDE5IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwpAQCAtMjMsOSArMjMsMTEgQEAKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdHJhY2ViYWNrCiAK
K2Zyb20gd2Via2l0cHkuY29tbW9uLnZlcnNpb25fbmFtZV9tYXAgaW1wb3J0IFZlcnNpb25OYW1l
TWFwLCBQVUJMSUNfVEFCTEUsIElOVEVSTkFMX1RBQkxFCiBmcm9tIHdlYmtpdHB5LmxheW91dF90
ZXN0cy5tb2RlbHMudGVzdF9jb25maWd1cmF0aW9uIGltcG9ydCBUZXN0Q29uZmlndXJhdGlvbgog
ZnJvbSB3ZWJraXRweS5wb3J0LmRhcndpbiBpbXBvcnQgRGFyd2luUG9ydAogZnJvbSB3ZWJraXRw
eS5wb3J0LnNpbXVsYXRvcl9wcm9jZXNzIGltcG9ydCBTaW11bGF0b3JQcm9jZXNzCitmcm9tIHdl
YmtpdHB5LnJlc3VsdHMudXBsb2FkIGltcG9ydCBVcGxvYWQKIGZyb20gd2Via2l0cHkueGNvZGUu
ZGV2aWNlX3R5cGUgaW1wb3J0IERldmljZVR5cGUKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxh
dGVkX2RldmljZSBpbXBvcnQgRGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlcgog
CkBAIC0yMzgsMyArMjQwLDI5IEBAIGNsYXNzIERldmljZVBvcnQoRGFyd2luUG9ydCk6CiAKICAg
ICBkZWYgZGV2aWNlX3ZlcnNpb24oc2VsZik6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVk
RXJyb3IKKworICAgIGRlZiBjb25maWd1cmF0aW9uX2Zvcl91cGxvYWQoc2VsZiwgaG9zdD1Ob25l
KToKKyAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYudGVzdF9jb25maWd1cmF0aW9uKCkKKwor
ICAgICAgICBkZXZpY2VfdHlwZSA9IGhvc3QuZGV2aWNlX3R5cGUgaWYgaG9zdCBlbHNlIHNlbGYu
REVWSUNFX1RZUEUKKyAgICAgICAgbW9kZWwgPSBkZXZpY2VfdHlwZS5oYXJkd2FyZV9mYW1pbHkK
KyAgICAgICAgaWYgbW9kZWwgYW5kIGRldmljZV90eXBlLmhhcmR3YXJlX3R5cGU6CisgICAgICAg
ICAgICBtb2RlbCArPSAnIHt9Jy5mb3JtYXQoZGV2aWNlX3R5cGUuaGFyZHdhcmVfdHlwZSkKKwor
ICAgICAgICB2ZXJzaW9uID0gc2VsZi5kZXZpY2VfdmVyc2lvbigpCisgICAgICAgIHZlcnNpb25f
bmFtZSA9IE5vbmUKKyAgICAgICAgZm9yIHRhYmxlIGluIFtJTlRFUk5BTF9UQUJMRSwgUFVCTElD
X1RBQkxFXToKKyAgICAgICAgICAgIHZlcnNpb25fbmFtZSA9IFZlcnNpb25OYW1lTWFwLm1hcChz
ZWxmLmhvc3QucGxhdGZvcm0pLnRvX25hbWUodmVyc2lvbiwgcGxhdGZvcm09ZGV2aWNlX3R5cGUu
c29mdHdhcmVfdmFyaWFudC5sb3dlcigpLCB0YWJsZT10YWJsZSkKKyAgICAgICAgICAgIGlmIHZl
cnNpb25fbmFtZToKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIHJldHVybiBVcGxv
YWQuY3JlYXRlX2NvbmZpZ3VyYXRpb24oCisgICAgICAgICAgICBwbGF0Zm9ybT1kZXZpY2VfdHlw
ZS5zb2Z0d2FyZV92YXJpYW50Lmxvd2VyKCksCisgICAgICAgICAgICBpc19zaW11bGF0b3I9c2Vs
Zi5ERVZJQ0VfTUFOQUdFUiA9PSBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLAorICAgICAgICAgICAg
dmVyc2lvbj1zdHIodmVyc2lvbiksCisgICAgICAgICAgICB2ZXJzaW9uX25hbWU9dmVyc2lvbl9u
YW1lLAorICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPWNvbmZpZ3VyYXRpb24uYXJjaGl0ZWN0dXJl
LAorICAgICAgICAgICAgc3R5bGU9J2d1YXJkLW1hbGxvYycgaWYgc2VsZi5nZXRfb3B0aW9uKCdn
dWFyZF9tYWxsb2MnKSBlbHNlIGNvbmZpZ3VyYXRpb24uYnVpbGRfdHlwZSwKKyAgICAgICAgICAg
IG1vZGVsPW1vZGVsLAorICAgICAgICAgICAgc2RrPWhvc3QuYnVpbGRfdmVyc2lvbiBpZiBob3N0
IGVsc2UgTm9uZSwKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0
L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI0MzU2MSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
NiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxNC0y
MDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1v
ZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29u
ZGl0aW9ucwpAQCAtMTYxLDMgKzE2MSwxNyBAQCBjbGFzcyBJT1NTaW11bGF0b3JUZXN0KGlvc190
ZXN0Y2FzZS5JT1NUCiAgICAgZGVmIHRlc3RfbWF4X2NoaWxkX3Byb2Nlc3NlcyhzZWxmKToKICAg
ICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChw
b3J0Lm1heF9jaGlsZF9wcm9jZXNzZXMoRGV2aWNlVHlwZS5mcm9tX3N0cmluZygnQXBwbGUgV2F0
Y2gnKSksIDApCisKKyAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQoc2VsZik6
CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWwoCisgICAgICAgICAgICBkaWN0KAorICAgICAgICAgICAgICAgIHBsYXRmb3JtPSdpb3MnLAor
ICAgICAgICAgICAgICAgIGlzX3NpbXVsYXRvcj1UcnVlLAorICAgICAgICAgICAgICAgIGFyY2hp
dGVjdHVyZT0neDg2XzY0JywKKyAgICAgICAgICAgICAgICB2ZXJzaW9uPScxMScsCisgICAgICAg
ICAgICAgICAgdmVyc2lvbl9uYW1lPSdpT1MgMTEnLAorICAgICAgICAgICAgICAgIHN0eWxlPSdy
ZWxlYXNlJywKKyAgICAgICAgICAgICksCisgICAgICAgICAgICBwb3J0LmNvbmZpZ3VyYXRpb25f
Zm9yX3VwbG9hZCgpLAorICAgICAgICApCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvbWFjLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWMu
cHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWMu
cHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAjIENvcHlyaWdodCAoQykgMjAxMSBH
b29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMpIDIwMTIsIDIw
MTMsIDIwMTYgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTItMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yNzksMyArMjc5LDE0IEBAIGNsYXNzIE1hY1BvcnQoRGFy
d2luUG9ydCk6CiAgICAgICAgIHdvcnRobGVzc19wYXR0ZXJucy5hcHBlbmQoKHJlLmNvbXBpbGUo
Jy4qPDw8PCBWTUMgPj4+Pi4qXG4nKSwgJycpKQogICAgICAgICB3b3J0aGxlc3NfcGF0dGVybnMu
YXBwZW5kKChyZS5jb21waWxlKCcuKjw8PCBGRlJfQ29tbW9uID4+Pi4qXG4nKSwgJycpKQogICAg
ICAgICByZXR1cm4gd29ydGhsZXNzX3BhdHRlcm5zCisKKyAgICBkZWYgY29uZmlndXJhdGlvbl9m
b3JfdXBsb2FkKHNlbGYsIGhvc3Q9Tm9uZSk6CisgICAgICAgIGhvc3QgPSBob3N0IG9yIHNlbGYu
aG9zdAorICAgICAgICBjb25maWd1cmF0aW9uID0gc3VwZXIoTWFjUG9ydCwgc2VsZikuY29uZmln
dXJhdGlvbl9mb3JfdXBsb2FkKGhvc3Q9aG9zdCkKKworICAgICAgICBvdXRwdXQgPSBob3N0LmV4
ZWN1dGl2ZS5ydW5fY29tbWFuZChbJy91c3Ivc2Jpbi9zeXNjdGwnLCAnaHcubW9kZWwnXSkucnN0
cmlwKCkKKyAgICAgICAgbWF0Y2ggPSByZS5tYXRjaChyJ2h3Lm1vZGVsOiAoP1A8bW9kZWw+Liop
Jywgb3V0cHV0KQorICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25b
J21vZGVsJ10gPSBtYXRjaC5ncm91cCgnbW9kZWwnKQorCisgICAgICAgIHJldHVybiBjb25maWd1
cmF0aW9uCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3Qu
cHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNf
dW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAjIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotIyBDb3B5cmlnaHQgKEMp
IDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxNC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTIyNCwzICsyMjQsMTggQEAgY2xhc3MgTWFjVGVzdChk
YXJ3aW5fdGVzdGNhc2UuRGFyd2luVGVzdAogCiAgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9y
dChvcHRpb25zPU1vY2tPcHRpb25zKHdlYmtpdF90ZXN0X3J1bm5lcj1GYWxzZSksIHBvcnRfbmFt
ZT0nbWFjLXdrMicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5kcml2ZXJfbmFtZSgp
LCAnV2ViS2l0VGVzdFJ1bm5lcicpCisKKyAgICBkZWYgdGVzdF9jb25maWd1cmF0aW9uX2Zvcl91
cGxvYWQoc2VsZik6CisgICAgICAgIHBvcnQgPSBzZWxmLm1ha2VfcG9ydCgpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBkaWN0KAorICAgICAgICAgICAgICAgIHBsYXRm
b3JtPSdtYWMnLAorICAgICAgICAgICAgICAgIGlzX3NpbXVsYXRvcj1GYWxzZSwKKyAgICAgICAg
ICAgICAgICBhcmNoaXRlY3R1cmU9J3g4Nl82NCcsCisgICAgICAgICAgICAgICAgdmVyc2lvbj0n
MTAuNycsCisgICAgICAgICAgICAgICAgdmVyc2lvbl9uYW1lPSdMaW9uJywKKyAgICAgICAgICAg
ICAgICBzZGs9JzE3QTQwNScsCisgICAgICAgICAgICAgICAgc3R5bGU9J3JlbGVhc2UnLAorICAg
ICAgICAgICAgKSwKKyAgICAgICAgICAgIHBvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKCks
CisgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVk
X2RldmljZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3Np
bXVsYXRlZF9kZXZpY2UucHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weQkod29ya2luZyBjb3B5KQpAQCAtMTEzLDYg
KzExMyw3IEBAIGNsYXNzIFNpbXVsYXRlZERldmljZU1hbmFnZXIob2JqZWN0KToKICAgICAgICAg
ICAgIHVkaWQ9ZGV2aWNlX2luZm9bJ3VkaWQnXSwKICAgICAgICAgICAgIGhvc3Q9aG9zdCwKICAg
ICAgICAgICAgIGRldmljZV90eXBlPWRldmljZV90eXBlLAorICAgICAgICAgICAgYnVpbGRfdmVy
c2lvbj1ydW50aW1lLmJ1aWxkX3ZlcnNpb24sCiAgICAgICAgICkpCiAgICAgICAgIFNpbXVsYXRl
ZERldmljZU1hbmFnZXIuQVZBSUxBQkxFX0RFVklDRVMuYXBwZW5kKHJlc3VsdCkKICAgICAgICAg
cmV0dXJuIHJlc3VsdApAQCAtNDg4LDEyICs0ODksMTMgQEAgY2xhc3MgU2ltdWxhdGVkRGV2aWNl
KG9iamVjdCk6CiAgICAgICAgICdTSFVUVElORyBET1dOJywKICAgICBdCiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgbmFtZSwgdWRpZCwgaG9zdCwgZGV2aWNlX3R5cGUpOgorICAgIGRlZiBfX2lu
aXRfXyhzZWxmLCBuYW1lLCB1ZGlkLCBob3N0LCBkZXZpY2VfdHlwZSwgYnVpbGRfdmVyc2lvbik6
CiAgICAgICAgIGFzc2VydCBkZXZpY2VfdHlwZS5zb2Z0d2FyZV92ZXJzaW9uCiAKICAgICAgICAg
c2VsZi5uYW1lID0gbmFtZQogICAgICAgICBzZWxmLnVkaWQgPSB1ZGlkCiAgICAgICAgIHNlbGYu
ZGV2aWNlX3R5cGUgPSBkZXZpY2VfdHlwZQorICAgICAgICBzZWxmLmJ1aWxkX3ZlcnNpb24gPSBi
dWlsZF92ZXJzaW9uCiAgICAgICAgIHNlbGYuX3N0YXRlID0gU2ltdWxhdGVkRGV2aWNlLkRldmlj
ZVN0YXRlLlNIVVRUSU5HX0RPV04KICAgICAgICAgc2VsZi5fbGFzdF91cGRhdGVkX3N0YXRlID0g
dGltZS50aW1lKCkKIApJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0
ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weQkocmV2aXNpb24gMjQzNTYxKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0
LnB5CSh3b3JraW5nIGNvcHkpCkBAIC02MDUsNiArNjA1LDcgQEAgY2xhc3MgU2ltdWxhdGVkRGV2
aWNlVGVzdCh1bml0dGVzdC5UZXN0QwogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKDEsIGxl
bihTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLklOSVRJQUxJWkVEX0RFVklDRVMpKQogICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscygnMzRGQjQ3NkMtNkZBMC00M0M4LTg5NDUtMUJEN0E0RUJGMERFJywg
U2ltdWxhdGVkRGV2aWNlTWFuYWdlci5JTklUSUFMSVpFRF9ERVZJQ0VTWzBdLnVkaWQpCisgICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcxNUE4NDAxJywgU2ltdWxhdGVkRGV2aWNlTWFuYWdlci5J
TklUSUFMSVpFRF9ERVZJQ0VTWzBdLmJ1aWxkX3ZlcnNpb24pCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKFNpbXVsYXRlZERldmljZS5EZXZpY2VTdGF0ZS5CT09URUQsIFNpbXVsYXRlZERldmlj
ZU1hbmFnZXIuSU5JVElBTElaRURfREVWSUNFU1swXS5wbGF0Zm9ybV9kZXZpY2Uuc3RhdGUoKSkK
IAogICAgICAgICBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLnRlYXJfZG93bihob3N0KQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366443</attachid>
            <date>2019-04-01 16:58:17 -0700</date>
            <delta_ts>2019-04-01 19:17:25 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-196323-20190401165816.patch</filename>
            <type>text/plain</type>
            <size>21243</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzU5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDE5LTAzLTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBydW4tYXBpLXRlc3RzOiBVcGxvYWQgdGVzdCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzMjMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ5MzU2NzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvbWFuYWdlci5w
eToKKyAgICAgICAgKE1hbmFnZXIpOgorICAgICAgICAoTWFuYWdlci5ydW4pOiBVcGxvYWQgcmVz
dWx0cyB0byBhIHJlc3VsdHMgZGF0YWJhc2UuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9h
cGlfdGVzdHMvcnVuX2FwaV90ZXN0cy5weToKKyAgICAgICAgKHBhcnNlX2FyZ3MpOiBBZGQgdXBs
b2FkIGFyZ3VtZW50cy4KKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weToK
KyAgICAgICAgKFBvcnQpOgorICAgICAgICAoUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQp
OiBDcmVhdGVzIGEgY29uZmlndXJhdGlvbiBkaWN0aW9uYXJ5IGZvciB1cGxvYWRpbmcgcmVzdWx0
cy4KKyAgICAgICAgKFBvcnQuY29tbWl0c19mb3JfdXBsb2FkKTogQ3JlYXRlIGEgbGlzdCBvZiBj
b21taXRzIGZyb20gdGhlIFdlYktpdCByZXBvc2l0b3J5IHRlc3RzIGFyZSBydW4gZnJvbSBhbG9u
ZworICAgICAgICB3aXRoIGNvbW1pdHMgZnJvbSBhbnkgb3RoZXIgYXNzb2NpYXRlZCByZXBvc2l0
b3JpZXMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZS5weToKKyAgICAg
ICAgKERldmljZSk6CisgICAgICAgIChEZXZpY2UuYnVpbGRfdmVyc2lvbik6IEFjY2VzcyBidWls
ZF92ZXJzb2luIG9mIHVuZGVybHlpbmcgcGxhdGZvcm0gZGV2aWNlLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5OgorICAgICAgICAoSU9T
U2ltdWxhdG9yVGVzdCk6CisgICAgICAgIChJT1NTaW11bGF0b3JUZXN0LnRlc3RfY29uZmlndXJh
dGlvbl9mb3JfdXBsb2FkKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNl
X3BvcnQucHk6CisgICAgICAgIChEZXZpY2VQb3J0KToKKyAgICAgICAgKERldmljZVBvcnQuY29u
ZmlndXJhdGlvbl9mb3JfdXBsb2FkKTogRGV2aWNlcyBhcmUgdW5pcXVlIGJlY2F1c2UgdGhlaXIg
Y29uZmlndXJhdGlvbiBpcyBub3QKKyAgICAgICAgdGhlIHNhbWUgYXMgdGhlIG1hY2hpbmUgdXBs
b2FkaW5nIHJlc3VsdHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weToK
KyAgICAgICAgKE1hY1BvcnQpOgorICAgICAgICAoTWFjUG9ydC5jb25maWd1cmF0aW9uX2Zvcl91
cGxvYWQpOiBEZWZpbmUgU0RLIGluIHVwbG9hZCBjb25maWd1cmF0aW9uIGZvciBNYWMuCisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weToKKyAgICAgICAgKE1h
Y1Rlc3QpOgorICAgICAgICAoTWFjVGVzdC50ZXN0X2NvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZCk6
CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5Ogor
ICAgICAgICAoU2ltdWxhdGVkRGV2aWNlTWFuYWdlci5fY3JlYXRlX2RldmljZV93aXRoX3J1bnRp
bWUpOgorICAgICAgICAoU2ltdWxhdGVkRGV2aWNlLl9faW5pdF9fKTogQ3JlYXRlIHNpbXVsYXRl
ZCBkZXZpY2Ugd2l0aCBhIGJ1aWxkX3ZlcnNpb24uCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5OgorICAgICAgICAodGVzdF9leGlz
dGluZ19zaW11bGF0b3IpOgorCiAyMDE5LTAzLTI3ICBBbmR5IEVzdGVzICA8YWVzdGVzQGFwcGxl
LmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OIChyMjQyNjg2KTogcGFja2FnZS1yb290IGNyZWF0
ZXMgcm9vdHMgd2l0aCBicm9rZW4gc3ltbGlua3MgaW4gV2ViS2l0LmZyYW1ld29yay9YUENTZXJ2
aWNlcy8KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL21hbmFnZXIucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMvbWFuYWdlci5w
eQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlfdGVzdHMv
bWFuYWdlci5weQkod29ya2luZyBjb3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChD
KSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDE4LTIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0yMiwxMCArMjIsMTIgQEAKIAogaW1wb3J0IGpzb24KIGltcG9ydCBs
b2dnaW5nCi1pbXBvcnQgb3MKK2ltcG9ydCB0aW1lCiAKIGZyb20gd2Via2l0cHkuYXBpX3Rlc3Rz
LnJ1bm5lciBpbXBvcnQgUnVubmVyCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0
aXZlIGltcG9ydCBTY3JpcHRFcnJvcgorZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVwbG9hZCBpbXBv
cnQgVXBsb2FkCisKIGZyb20gd2Via2l0cHkueGNvZGUuc2ltdWxhdGVkX2RldmljZSBpbXBvcnQg
RGV2aWNlUmVxdWVzdCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlcgogCiBfbG9nID0gbG9nZ2luZy5n
ZXRMb2dnZXIoX19uYW1lX18pCkBAIC0zOSw2ICs0MSw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0
KToKICAgICBGQUlMRURfQlVJTERfQ0hFQ0sgPSAxCiAgICAgRkFJTEVEX0NPTExFQ1RfVEVTVFMg
PSAyCiAgICAgRkFJTEVEX1RFU1RTID0gMworICAgIEZBSUxFRF9VUExPQUQgPSA0CiAKICAgICBk
ZWYgX19pbml0X18oc2VsZiwgcG9ydCwgb3B0aW9ucywgc3RyZWFtKToKICAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKQEAgLTE1NCw2ICsxNTcsOCBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAg
ICAgICAgICAgICBpZiBub3Qgc2VsZi5ob3N0LmZpbGVzeXN0ZW0uaXNkaXIoc2VsZi5ob3N0LmZp
bGVzeXN0ZW0uZGlybmFtZShqc29uX291dHB1dCkpIG9yIHNlbGYuaG9zdC5maWxlc3lzdGVtLmlz
ZGlyKGpzb25fb3V0cHV0KToKICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ0Nh
bm5vdCB3cml0ZSB0byB7fScuZm9ybWF0KGpzb25fb3V0cHV0KSkKIAorICAgICAgICBzdGFydF90
aW1lID0gdGltZS50aW1lKCkKKwogICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVfdXBkYXRlKCdD
aGVja2luZyBidWlsZCAuLi4nKQogICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5jaGVja19hcGlf
dGVzdF9idWlsZChzZWxmLl9iaW5hcmllc19mb3JfYXJndW1lbnRzKGFyZ3MpKToKICAgICAgICAg
ICAgIF9sb2cuZXJyb3IoJ0J1aWxkIGNoZWNrIGZhaWxlZCcpCkBAIC0xODUsNiArMTkwLDggQEAg
Y2xhc3MgTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgIyBJZiB3ZSByZWNlaXZlIGEgS2V5
Ym9hcmRJbnRlcnJ1cHQsIHByaW50IHJlc3VsdHMuCiAgICAgICAgICAgICBzZWxmLl9zdHJlYW0u
d3JpdGVsbignJykKIAorICAgICAgICBlbmRfdGltZSA9IHRpbWUudGltZSgpCisKICAgICAgICAg
c3VjY2Vzc2Z1bCA9IHJ1bm5lci5yZXN1bHRfbWFwX2J5X3N0YXR1cyhydW5uZXIuU1RBVFVTX1BB
U1NFRCkKICAgICAgICAgZGlzYWJsZWQgPSBsZW4ocnVubmVyLnJlc3VsdF9tYXBfYnlfc3RhdHVz
KHJ1bm5lci5TVEFUVVNfRElTQUJMRUQpKQogICAgICAgICBfbG9nLmluZm8oJ1JhbiB7fSB0ZXN0
cyBvZiB7fSB3aXRoIHt9IHN1Y2Nlc3NmdWwnLmZvcm1hdChsZW4ocnVubmVyLnJlc3VsdHMpIC0g
ZGlzYWJsZWQsIGxlbih0ZXN0X25hbWVzKSwgbGVuKHN1Y2Nlc3NmdWwpKSkKQEAgLTE5Nyw0MiAr
MjA0LDczIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgfQogCiAgICAgICAgIHNl
bGYuX3N0cmVhbS53cml0ZWxuKCctJyAqIDMwKQorICAgICAgICByZXN1bHQgPSBNYW5hZ2VyLlNV
Q0NFU1MKICAgICAgICAgaWYgbGVuKHN1Y2Nlc3NmdWwpICsgZGlzYWJsZWQgPT0gbGVuKHRlc3Rf
bmFtZXMpOgogICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ0FsbCB0ZXN0cyBzdWNj
ZXNzZnVsbHkgcGFzc2VkIScpCiAgICAgICAgICAgICBpZiBqc29uX291dHB1dDoKICAgICAgICAg
ICAgICAgICBzZWxmLmhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoanNvbl9vdXRwdXQs
IGpzb24uZHVtcHMocmVzdWx0X2RpY3Rpb25hcnksIGluZGVudD00KSkKLSAgICAgICAgICAgIHJl
dHVybiBNYW5hZ2VyLlNVQ0NFU1MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3N0
cmVhbS53cml0ZWxuKCdUZXN0IHN1aXRlIGZhaWxlZCcpCisgICAgICAgICAgICBzZWxmLl9zdHJl
YW0ud3JpdGVsbignJykKIAotICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignVGVzdCBzdWl0
ZSBmYWlsZWQnKQotICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbignJykKKyAgICAgICAgICAg
IHNraXBwZWQgPSBbXQorICAgICAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9uYW1lczoKKyAgICAg
ICAgICAgICAgICBpZiB0ZXN0IG5vdCBpbiBydW5uZXIucmVzdWx0czoKKyAgICAgICAgICAgICAg
ICAgICAgc2tpcHBlZC5hcHBlbmQodGVzdCkKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0X2Rp
Y3Rpb25hcnlbJ1NraXBwZWQnXS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IE5vbmV9
KQorICAgICAgICAgICAgaWYgc2tpcHBlZDoKKyAgICAgICAgICAgICAgICBzZWxmLl9zdHJlYW0u
d3JpdGVsbignU2tpcHBlZCB7fSB0ZXN0cycuZm9ybWF0KGxlbihza2lwcGVkKSkpCisgICAgICAg
ICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJycpCisgICAgICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy52ZXJib3NlOgorICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCBpbiBza2lw
cGVkOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJyAgICB7
fScuZm9ybWF0KHRlc3QpKQorCisgICAgICAgICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRf
d2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19GQUlMRUQsIHJ1bm5lcikKKyAgICAgICAgICAgIHNl
bGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0YXR1cyhydW5uZXIuU1RBVFVTX0NSQVNIRUQs
IHJ1bm5lcikKKyAgICAgICAgICAgIHNlbGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0YXR1
cyhydW5uZXIuU1RBVFVTX1RJTUVPVVQsIHJ1bm5lcikKKworICAgICAgICAgICAgZm9yIHRlc3Qs
IHJlc3VsdCBpbiBydW5uZXIucmVzdWx0cy5pdGVyaXRlbXMoKToKKyAgICAgICAgICAgICAgICBz
dGF0dXNfdG9fc3RyaW5nID0geworICAgICAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0ZB
SUxFRDogJ0ZhaWxlZCcsCisgICAgICAgICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hF
RDogJ0NyYXNoZWQnLAorICAgICAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1RJTUVPVVQ6
ICdUaW1lZG91dCcsCisgICAgICAgICAgICAgICAgfS5nZXQocmVzdWx0WzBdKQorICAgICAgICAg
ICAgICAgIGlmIG5vdCBzdGF0dXNfdG9fc3RyaW5nOgorICAgICAgICAgICAgICAgICAgICBjb250
aW51ZQorICAgICAgICAgICAgICAgIHJlc3VsdF9kaWN0aW9uYXJ5W3N0YXR1c190b19zdHJpbmdd
LmFwcGVuZCh7J25hbWUnOiB0ZXN0LCAnb3V0cHV0JzogcmVzdWx0WzFdfSkKIAotICAgICAgICBz
a2lwcGVkID0gW10KLSAgICAgICAgZm9yIHRlc3QgaW4gdGVzdF9uYW1lczoKLSAgICAgICAgICAg
IGlmIHRlc3Qgbm90IGluIHJ1bm5lci5yZXN1bHRzOgotICAgICAgICAgICAgICAgIHNraXBwZWQu
YXBwZW5kKHRlc3QpCi0gICAgICAgICAgICAgICAgcmVzdWx0X2RpY3Rpb25hcnlbJ1NraXBwZWQn
XS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IE5vbmV9KQotICAgICAgICBpZiBza2lw
cGVkOgotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ1NraXBwZWQge30gdGVzdHMn
LmZvcm1hdChsZW4oc2tpcHBlZCkpKQotICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4o
JycpCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICAg
ICAgZm9yIHRlc3QgaW4gc2tpcHBlZDoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFt
LndyaXRlbG4oJyAgICB7fScuZm9ybWF0KHRlc3QpKQotCi0gICAgICAgIHNlbGYuX3ByaW50X3Rl
c3RzX3Jlc3VsdF93aXRoX3N0YXR1cyhydW5uZXIuU1RBVFVTX0ZBSUxFRCwgcnVubmVyKQotICAg
ICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19D
UkFTSEVELCBydW5uZXIpCi0gICAgICAgIHNlbGYuX3ByaW50X3Rlc3RzX3Jlc3VsdF93aXRoX3N0
YXR1cyhydW5uZXIuU1RBVFVTX1RJTUVPVVQsIHJ1bm5lcikKLQotICAgICAgICBmb3IgdGVzdCwg
cmVzdWx0IGluIHJ1bm5lci5yZXN1bHRzLml0ZXJpdGVtcygpOgotICAgICAgICAgICAgc3RhdHVz
X3RvX3N0cmluZyA9IHsKLSAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0ZBSUxFRDogJ0Zh
aWxlZCcsCi0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19DUkFTSEVEOiAnQ3Jhc2hlZCcs
Ci0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19USU1FT1VUOiAnVGltZWRvdXQnLAotICAg
ICAgICAgICAgfS5nZXQocmVzdWx0WzBdKQotICAgICAgICAgICAgaWYgbm90IHN0YXR1c190b19z
dHJpbmc6Ci0gICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHJlc3VsdF9kaWN0
aW9uYXJ5W3N0YXR1c190b19zdHJpbmddLmFwcGVuZCh7J25hbWUnOiB0ZXN0LCAnb3V0cHV0Jzog
cmVzdWx0WzFdfSkKKyAgICAgICAgICAgIGlmIGpzb25fb3V0cHV0OgorICAgICAgICAgICAgICAg
IHNlbGYuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShqc29uX291dHB1dCwganNvbi5k
dW1wcyhyZXN1bHRfZGljdGlvbmFyeSwgaW5kZW50PTQpKQogCi0gICAgICAgIGlmIGpzb25fb3V0
cHV0OgotICAgICAgICAgICAgc2VsZi5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGpz
b25fb3V0cHV0LCBqc29uLmR1bXBzKHJlc3VsdF9kaWN0aW9uYXJ5LCBpbmRlbnQ9NCkpCisgICAg
ICAgICAgICByZXN1bHQgPSBNYW5hZ2VyLkZBSUxFRF9URVNUUworCisgICAgICAgIGlmIHNlbGYu
X29wdGlvbnMucmVwb3J0X3VybHM6CisgICAgICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGVsbign
XG4nKQorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlX3VwZGF0ZSgnUHJlcGFyaW5nIHVw
bG9hZCBkYXRhIC4uLicpCisKKyAgICAgICAgICAgIHN0YXR1c190b190ZXN0X3Jlc3VsdCA9IHsK
KyAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1BBU1NFRDogTm9uZSwKKyAgICAgICAgICAg
ICAgICBydW5uZXIuU1RBVFVTX0ZBSUxFRDogVXBsb2FkLkV4cGVjdGF0aW9ucy5GQUlMLAorICAg
ICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hFRDogVXBsb2FkLkV4cGVjdGF0aW9ucy5D
UkFTSCwKKyAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX1RJTUVPVVQ6IFVwbG9hZC5FeHBl
Y3RhdGlvbnMuVElNRU9VVCwKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHVwbG9hZCA9IFVw
bG9hZCgKKyAgICAgICAgICAgICAgICBzdWl0ZT0nYXBpLXRlc3RzJywKKyAgICAgICAgICAgICAg
ICBjb25maWd1cmF0aW9uPXNlbGYuX3BvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYu
X3BvcnQudGFyZ2V0X2hvc3QoMCkpLAorICAgICAgICAgICAgICAgIGRldGFpbHM9VXBsb2FkLmNy
ZWF0ZV9kZXRhaWxzKG9wdGlvbnM9c2VsZi5fb3B0aW9ucyksCisgICAgICAgICAgICAgICAgY29t
bWl0cz1zZWxmLl9wb3J0LmNvbW1pdHNfZm9yX3VwbG9hZCgpLAorICAgICAgICAgICAgICAgIHJ1
bl9zdGF0cz1VcGxvYWQuY3JlYXRlX3J1bl9zdGF0cygKKyAgICAgICAgICAgICAgICAgICAgc3Rh
cnRfdGltZT1zdGFydF90aW1lLAorICAgICAgICAgICAgICAgICAgICBlbmRfdGltZT1lbmRfdGlt
ZSwKKyAgICAgICAgICAgICAgICAgICAgdGVzdHNfc2tpcHBlZD1sZW4ocmVzdWx0X2RpY3Rpb25h
cnlbJ1NraXBwZWQnXSksCisgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICByZXN1
bHRzPXt0ZXN0OiBVcGxvYWQuY3JlYXRlX3Rlc3RfcmVzdWx0KGFjdHVhbD1zdGF0dXNfdG9fdGVz
dF9yZXN1bHRbcmVzdWx0WzBdXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGVzdCwg
cmVzdWx0IGluIHJ1bm5lci5yZXN1bHRzLml0ZXJpdGVtcygpIGlmIHJlc3VsdFswXSBpbiBzdGF0
dXNfdG9fdGVzdF9yZXN1bHR9LAorICAgICAgICAgICAgKQorICAgICAgICAgICAgZm9yIHVybCBp
biBzZWxmLl9vcHRpb25zLnJlcG9ydF91cmxzOgorICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVh
bS53cml0ZV91cGRhdGUoJ1VwbG9hZGluZyB0byB7fSAuLi4nLmZvcm1hdCh1cmwpKQorICAgICAg
ICAgICAgICAgIGlmIG5vdCB1cGxvYWQudXBsb2FkKHVybCwgbG9nX2xpbmVfZnVuYz1zZWxmLl9z
dHJlYW0ud3JpdGVsbik6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IE1hbmFnZXIuRkFJ
TEVEX1VQTE9BRAorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ1VwbG9hZHMgY29t
cGxldGVkIScpCiAKLSAgICAgICAgcmV0dXJuIE1hbmFnZXIuRkFJTEVEX1RFU1RTCisgICAgICAg
IHJldHVybiByZXN1bHQKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1
bl9hcGlfdGVzdHMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9hcGlf
dGVzdHMvcnVuX2FwaV90ZXN0cy5weQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9hcGlfdGVzdHMvcnVuX2FwaV90ZXN0cy5weQkod29ya2luZyBjb3B5KQpAQCAt
MzAsNiArMzAsNyBAQCBmcm9tIHdlYmtpdHB5LmFwaV90ZXN0cy5tYW5hZ2VyIGltcG9ydCBNCiBm
cm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0IGltcG9ydCBIb3N0CiBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy52aWV3cy5tZXRlcmVkX3N0cmVhbSBpbXBvcnQgTWV0ZXJlZFN0cmVhbQogZnJvbSB3
ZWJraXRweS5wb3J0IGltcG9ydCBjb25maWd1cmF0aW9uX29wdGlvbnMsIHBsYXRmb3JtX29wdGlv
bnMsIGJhc2UsIHdpbgorZnJvbSB3ZWJraXRweS5yZXN1bHRzLm9wdGlvbnMgaW1wb3J0IHVwbG9h
ZF9vcHRpb25zCiAKIEVYQ0VQVElPTkFMX0VYSVRfU1RBVFVTID0gLTEKIElOVEVSUlVQVF9FWElU
X1NUQVRVUyA9IC0yCkBAIC0xMzQsNiArMTM1LDcgQEAgZGVmIHBhcnNlX2FyZ3MoYXJncyk6CiAg
ICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCctLWZvcmNlJywgYWN0aW9uPSdzdG9yZV90cnVl
JywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nUnVu
IGFsbCB0ZXN0cywgZXZlbiBESVNBQkxFRCB0ZXN0cycpLAogICAgIF0pKQorICAgIG9wdGlvbl9n
cm91cF9kZWZpbml0aW9ucy5hcHBlbmQoKCdVcGxvYWQgT3B0aW9ucycsIHVwbG9hZF9vcHRpb25z
KCkpKQogCiAgICAgb3B0aW9uX3BhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcigKICAgICAg
ICAgdXNhZ2U9J3J1bi1hcGktdGVzdHMgW29wdGlvbnNdIFs8dGVzdCBuYW1lcz4uLi5dJywKSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9iYXNlLnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkod29ya2luZyBjb3B5KQpAQCAtNDUs
NiArNDUsNyBAQCBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogCiBmcm9tIHdlYmtpdHB5
LmNvbW1vbiBpbXBvcnQgZmluZF9maWxlcwogZnJvbSB3ZWJraXRweS5jb21tb24gaW1wb3J0IHJl
YWRfY2hlY2tzdW1fZnJvbV9wbmcKK2Zyb20gd2Via2l0cHkuY29tbW9uLmNoZWNrb3V0LnNjbS5k
ZXRlY3Rpb24gaW1wb3J0IFNDTURldGVjdG9yCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5tZW1vaXpl
ZCBpbXBvcnQgbWVtb2l6ZWQKIGZyb20gd2Via2l0cHkuY29tbW9uLnByZXR0eXBhdGNoIGltcG9y
dCBQcmV0dHlQYXRjaAogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtIGltcG9ydCBwYXRoLCBw
ZW1maWxlCkBAIC02MSw2ICs2Miw3IEBAIGZyb20gd2Via2l0cHkucG9ydC5mYWN0b3J5IGltcG9y
dCBQb3J0RmEKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IGFwYWNo
ZV9odHRwX3NlcnZlciwgaHR0cF9zZXJ2ZXIsIGh0dHBfc2VydmVyX2Jhc2UKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdlYl9wbGF0Zm9ybV90ZXN0X3NlcnZlcgog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycyBpbXBvcnQgd2Vic29ja2V0X3NlcnZl
cgorZnJvbSB3ZWJraXRweS5yZXN1bHRzLnVwbG9hZCBpbXBvcnQgVXBsb2FkCiAKIF9sb2cgPSBs
b2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKIApAQCAtMTYzNCwzICsxNjM2LDM4IEBAIGNsYXNz
IFBvcnQob2JqZWN0KToKICAgICAgICAgIyBUaGlzIGlzIG92ZXJyaWRkZW4gYnkgcG9ydHMgdGhh
dCBuZWVkIHRvIGRvIHdvcmsgaW4gdGhlIHBhcmVudCBwcm9jZXNzIGFmdGVyIGEgd29ya2VyIHN1
YnByb2Nlc3MgaXMgc3Bhd25lZCwKICAgICAgICAgIyBzdWNoIGFzIGNsb3NpbmcgZmlsZSBkZXNj
cmlwdG9ycyB0aGF0IHdlcmUgaW1wbGljaXRseSBjbG9uZWQgdG8gdGhlIHdvcmtlci4KICAgICAg
ICAgcGFzcworCisgICAgZGVmIGNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxmLCBob3N0PU5v
bmUpOgorICAgICAgICBjb25maWd1cmF0aW9uID0gc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24oKQor
ICAgICAgICBob3N0ID0gc2VsZi5ob3N0IG9yIGhvc3QKKworICAgICAgICByZXR1cm4gVXBsb2Fk
LmNyZWF0ZV9jb25maWd1cmF0aW9uKAorICAgICAgICAgICAgcGxhdGZvcm09aG9zdC5wbGF0Zm9y
bS5vc19uYW1lLAorICAgICAgICAgICAgdmVyc2lvbj1zdHIoaG9zdC5wbGF0Zm9ybS5vc192ZXJz
aW9uKSwKKyAgICAgICAgICAgIHZlcnNpb25fbmFtZT1ob3N0LnBsYXRmb3JtLm9zX3ZlcnNpb25f
bmFtZShJTlRFUk5BTF9UQUJMRSkgb3IgaG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9uX25hbWUoKSwK
KyAgICAgICAgICAgIGFyY2hpdGVjdHVyZT1jb25maWd1cmF0aW9uLmFyY2hpdGVjdHVyZSwKKyAg
ICAgICAgICAgIHN0eWxlPSdndWFyZC1tYWxsb2MnIGlmIHNlbGYuZ2V0X29wdGlvbignZ3VhcmRf
bWFsbG9jJykgZWxzZSBjb25maWd1cmF0aW9uLmJ1aWxkX3R5cGUsCisgICAgICAgICAgICBzZGs9
aG9zdC5wbGF0Zm9ybS5idWlsZF92ZXJzaW9uKCksCisgICAgICAgICkKKworICAgIEBtZW1vaXpl
ZAorICAgIGRlZiBjb21taXRzX2Zvcl91cGxvYWQoc2VsZik6CisgICAgICAgIHNlbGYuaG9zdC5p
bml0aWFsaXplX3NjbSgpCisKKyAgICAgICAgaWYgcG9ydF9jb25maWcuYXBwbGVfYWRkaXRpb25z
KCkgYW5kIGdldGF0dHIocG9ydF9jb25maWcuYXBwbGVfYWRkaXRpb25zKCksICdyZXBvcycsIEZh
bHNlKToKKyAgICAgICAgICAgIHJlcG9zID0gcG9ydF9jb25maWcuYXBwbGVfYWRkaXRpb25zKCku
cmVwb3MoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVwb3MgPSB7fQorCisgICAgICAg
IHVwID0gb3MucGF0aC5kaXJuYW1lCisgICAgICAgIHJlcG9zWyd3ZWJraXQnXSA9IHVwKHVwKHVw
KHVwKHVwKG9zLnBhdGguYWJzcGF0aChfX2ZpbGVfXykpKSkpKQorCisgICAgICAgIGNvbW1pdHMg
PSBbXQorICAgICAgICBmb3IgcmVwb19pZCwgcGF0aCBpbiByZXBvcy5pdGVyaXRlbXMoKToKKyAg
ICAgICAgICAgIHNjbSA9IFNDTURldGVjdG9yKHNlbGYuX2ZpbGVzeXN0ZW0sIHNlbGYuX2V4ZWN1
dGl2ZSkuZGV0ZWN0X3NjbV9zeXN0ZW0ocGF0aCkKKyAgICAgICAgICAgIGNvbW1pdHMuYXBwZW5k
KFVwbG9hZC5jcmVhdGVfY29tbWl0KAorICAgICAgICAgICAgICAgIHJlcG9zaXRvcnlfaWQ9cmVw
b19pZCwKKyAgICAgICAgICAgICAgICBpZD1zY20ubmF0aXZlX3JldmlzaW9uKHBhdGgpLAorICAg
ICAgICAgICAgICAgIGJyYW5jaD1zY20ubmF0aXZlX2JyYW5jaChwYXRoKSwKKyAgICAgICAgICAg
ICkpCisgICAgICAgIHJldHVybiBjb21taXRzCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZGV2aWNlLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9kZXZpY2UucHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
cG9ydC9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTEwMSw2ICsxMDEsMTAgQEAgY2xhc3Mg
RGV2aWNlKG9iamVjdCk6CiAgICAgZGVmIGRldmljZV90eXBlKHNlbGYpOgogICAgICAgICByZXR1
cm4gc2VsZi5wbGF0Zm9ybV9kZXZpY2UuZGV2aWNlX3R5cGUKIAorICAgIEBwcm9wZXJ0eQorICAg
IGRlZiBidWlsZF92ZXJzaW9uKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5wbGF0Zm9ybV9k
ZXZpY2UuYnVpbGRfdmVyc2lvbgorCiAgICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgogICAgICAg
ICByZXR1cm4gc2VsZi5wbGF0Zm9ybV9kZXZpY2UgaXMgbm90IE5vbmUKIApJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQkocmV2aXNpb24gMjQzNTYxKQor
KysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2RldmljZV9wb3J0LnB5CSh3b3JraW5nIGNv
cHkpCkBAIC0xLDQgKzEsNCBAQAotIyBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAxOSBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTIzLDkg
KzIzLDExIEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHRyYWNlYmFjawogCitmcm9tIHdlYmtp
dHB5LmNvbW1vbi52ZXJzaW9uX25hbWVfbWFwIGltcG9ydCBWZXJzaW9uTmFtZU1hcCwgUFVCTElD
X1RBQkxFLCBJTlRFUk5BTF9UQUJMRQogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxz
LnRlc3RfY29uZmlndXJhdGlvbiBpbXBvcnQgVGVzdENvbmZpZ3VyYXRpb24KIGZyb20gd2Via2l0
cHkucG9ydC5kYXJ3aW4gaW1wb3J0IERhcndpblBvcnQKIGZyb20gd2Via2l0cHkucG9ydC5zaW11
bGF0b3JfcHJvY2VzcyBpbXBvcnQgU2ltdWxhdG9yUHJvY2VzcworZnJvbSB3ZWJraXRweS5yZXN1
bHRzLnVwbG9hZCBpbXBvcnQgVXBsb2FkCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLmRldmljZV90eXBl
IGltcG9ydCBEZXZpY2VUeXBlCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLnNpbXVsYXRlZF9kZXZpY2Ug
aW1wb3J0IERldmljZVJlcXVlc3QsIFNpbXVsYXRlZERldmljZU1hbmFnZXIKIApAQCAtMjM4LDMg
KzI0MCwyOSBAQCBjbGFzcyBEZXZpY2VQb3J0KERhcndpblBvcnQpOgogCiAgICAgZGVmIGRldmlj
ZV92ZXJzaW9uKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZEVycm9yCisKKyAg
ICBkZWYgY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYsIGhvc3Q9Tm9uZSk6CisgICAgICAg
IGNvbmZpZ3VyYXRpb24gPSBzZWxmLnRlc3RfY29uZmlndXJhdGlvbigpCisKKyAgICAgICAgZGV2
aWNlX3R5cGUgPSBob3N0LmRldmljZV90eXBlIGlmIGhvc3QgZWxzZSBzZWxmLkRFVklDRV9UWVBF
CisgICAgICAgIG1vZGVsID0gZGV2aWNlX3R5cGUuaGFyZHdhcmVfZmFtaWx5CisgICAgICAgIGlm
IG1vZGVsIGFuZCBkZXZpY2VfdHlwZS5oYXJkd2FyZV90eXBlOgorICAgICAgICAgICAgbW9kZWwg
Kz0gJyB7fScuZm9ybWF0KGRldmljZV90eXBlLmhhcmR3YXJlX3R5cGUpCisKKyAgICAgICAgdmVy
c2lvbiA9IHNlbGYuZGV2aWNlX3ZlcnNpb24oKQorICAgICAgICB2ZXJzaW9uX25hbWUgPSBOb25l
CisgICAgICAgIGZvciB0YWJsZSBpbiBbSU5URVJOQUxfVEFCTEUsIFBVQkxJQ19UQUJMRV06Cisg
ICAgICAgICAgICB2ZXJzaW9uX25hbWUgPSBWZXJzaW9uTmFtZU1hcC5tYXAoc2VsZi5ob3N0LnBs
YXRmb3JtKS50b19uYW1lKHZlcnNpb24sIHBsYXRmb3JtPWRldmljZV90eXBlLnNvZnR3YXJlX3Zh
cmlhbnQubG93ZXIoKSwgdGFibGU9dGFibGUpCisgICAgICAgICAgICBpZiB2ZXJzaW9uX25hbWU6
CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICByZXR1cm4gVXBsb2FkLmNyZWF0ZV9j
b25maWd1cmF0aW9uKAorICAgICAgICAgICAgcGxhdGZvcm09ZGV2aWNlX3R5cGUuc29mdHdhcmVf
dmFyaWFudC5sb3dlcigpLAorICAgICAgICAgICAgaXNfc2ltdWxhdG9yPXNlbGYuREVWSUNFX01B
TkFHRVIgPT0gU2ltdWxhdGVkRGV2aWNlTWFuYWdlciwKKyAgICAgICAgICAgIHZlcnNpb249c3Ry
KHZlcnNpb24pLAorICAgICAgICAgICAgdmVyc2lvbl9uYW1lPXZlcnNpb25fbmFtZSwKKyAgICAg
ICAgICAgIGFyY2hpdGVjdHVyZT1jb25maWd1cmF0aW9uLmFyY2hpdGVjdHVyZSwKKyAgICAgICAg
ICAgIHN0eWxlPSdndWFyZC1tYWxsb2MnIGlmIHNlbGYuZ2V0X29wdGlvbignZ3VhcmRfbWFsbG9j
JykgZWxzZSBjb25maWd1cmF0aW9uLmJ1aWxkX3R5cGUsCisgICAgICAgICAgICBtb2RlbD1tb2Rl
bCwKKyAgICAgICAgICAgIHNkaz1ob3N0LmJ1aWxkX3ZlcnNpb24gaWYgaG9zdCBlbHNlIE5vbmUs
CisgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9pb3Nfc2ltdWxh
dG9yX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9y
dC9pb3Nfc2ltdWxhdG9yX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTE2MSwzICsxNjEsMTcgQEAgY2xhc3MgSU9TU2ltdWxhdG9yVGVzdChpb3NfdGVzdGNhc2UuSU9T
VAogICAgIGRlZiB0ZXN0X21heF9jaGlsZF9wcm9jZXNzZXMoc2VsZik6CiAgICAgICAgIHBvcnQg
PSBzZWxmLm1ha2VfcG9ydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocG9ydC5tYXhfY2hp
bGRfcHJvY2Vzc2VzKERldmljZVR5cGUuZnJvbV9zdHJpbmcoJ0FwcGxlIFdhdGNoJykpLCAwKQor
CisgICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYpOgorICAgICAgICBw
b3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAg
ICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybT0naW9zJywKKyAgICAgICAgICAg
ICAgICBpc19zaW11bGF0b3I9VHJ1ZSwKKyAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmU9J3g4
Nl82NCcsCisgICAgICAgICAgICAgICAgdmVyc2lvbj0nMTEnLAorICAgICAgICAgICAgICAgIHZl
cnNpb25fbmFtZT0naU9TIDExJywKKyAgICAgICAgICAgICAgICBzdHlsZT0ncmVsZWFzZScsCisg
ICAgICAgICAgICApLAorICAgICAgICAgICAgcG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQo
KSwKKyAgICAgICAgKQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5CShyZXZpc2lv
biAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzLCAyMDE2IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEyLTIwMTkg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zIGFyZQpAQCAtMjc5LDMgKzI3OSwxNCBAQCBjbGFzcyBNYWNQb3J0KERhcndpblBvcnQpOgog
ICAgICAgICB3b3J0aGxlc3NfcGF0dGVybnMuYXBwZW5kKChyZS5jb21waWxlKCcuKjw8PDwgVk1D
ID4+Pj4uKlxuJyksICcnKSkKICAgICAgICAgd29ydGhsZXNzX3BhdHRlcm5zLmFwcGVuZCgocmUu
Y29tcGlsZSgnLio8PDwgRkZSX0NvbW1vbiA+Pj4uKlxuJyksICcnKSkKICAgICAgICAgcmV0dXJu
IHdvcnRobGVzc19wYXR0ZXJucworCisgICAgZGVmIGNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChz
ZWxmLCBob3N0PU5vbmUpOgorICAgICAgICBob3N0ID0gaG9zdCBvciBzZWxmLmhvc3QKKyAgICAg
ICAgY29uZmlndXJhdGlvbiA9IHN1cGVyKE1hY1BvcnQsIHNlbGYpLmNvbmZpZ3VyYXRpb25fZm9y
X3VwbG9hZChob3N0PWhvc3QpCisKKyAgICAgICAgb3V0cHV0ID0gaG9zdC5leGVjdXRpdmUucnVu
X2NvbW1hbmQoWycvdXNyL3NiaW4vc3lzY3RsJywgJ2h3Lm1vZGVsJ10pLnJzdHJpcCgpCisgICAg
ICAgIG1hdGNoID0gcmUubWF0Y2gocidody5tb2RlbDogKD9QPG1vZGVsPi4qKScsIG91dHB1dCkK
KyAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICBjb25maWd1cmF0aW9uWydtb2RlbCddID0g
bWF0Y2guZ3JvdXAoJ21vZGVsJykKKworICAgICAgICByZXR1cm4gY29uZmlndXJhdGlvbgpJbmRl
eDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weQo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5CShyZXZpc2lv
biAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvbWFjX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29v
Z2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTYg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMpIDIwMTQtMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMgYXJlCkBAIC0yMjQsMyArMjI0LDE4IEBAIGNsYXNzIE1hY1Rlc3QoZGFyd2luX3Rlc3Rj
YXNlLkRhcndpblRlc3QKIAogICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQob3B0aW9ucz1N
b2NrT3B0aW9ucyh3ZWJraXRfdGVzdF9ydW5uZXI9RmFsc2UpLCBwb3J0X25hbWU9J21hYy13azIn
KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQuZHJpdmVyX25hbWUoKSwgJ1dlYktpdFRl
c3RSdW5uZXInKQorCisgICAgZGVmIHRlc3RfY29uZmlndXJhdGlvbl9mb3JfdXBsb2FkKHNlbGYp
OgorICAgICAgICBwb3J0ID0gc2VsZi5tYWtlX3BvcnQoKQorICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKAorICAgICAgICAgICAgZGljdCgKKyAgICAgICAgICAgICAgICBwbGF0Zm9ybT0nbWFjJywK
KyAgICAgICAgICAgICAgICBpc19zaW11bGF0b3I9RmFsc2UsCisgICAgICAgICAgICAgICAgYXJj
aGl0ZWN0dXJlPSd4ODZfNjQnLAorICAgICAgICAgICAgICAgIHZlcnNpb249JzEwLjcnLAorICAg
ICAgICAgICAgICAgIHZlcnNpb25fbmFtZT0nTGlvbicsCisgICAgICAgICAgICAgICAgc2RrPScx
N0E0MDUnLAorICAgICAgICAgICAgICAgIHN0eWxlPSdyZWxlYXNlJywKKyAgICAgICAgICAgICks
CisgICAgICAgICAgICBwb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZCgpLAorICAgICAgICAp
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2UucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2
aWNlLnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2Rl
L3NpbXVsYXRlZF9kZXZpY2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTExMyw2ICsxMTMsNyBAQCBj
bGFzcyBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAgICB1ZGlkPWRl
dmljZV9pbmZvWyd1ZGlkJ10sCiAgICAgICAgICAgICBob3N0PWhvc3QsCiAgICAgICAgICAgICBk
ZXZpY2VfdHlwZT1kZXZpY2VfdHlwZSwKKyAgICAgICAgICAgIGJ1aWxkX3ZlcnNpb249cnVudGlt
ZS5idWlsZF92ZXJzaW9uLAogICAgICAgICApKQogICAgICAgICBTaW11bGF0ZWREZXZpY2VNYW5h
Z2VyLkFWQUlMQUJMRV9ERVZJQ0VTLmFwcGVuZChyZXN1bHQpCiAgICAgICAgIHJldHVybiByZXN1
bHQKQEAgLTQ4OCwxMiArNDg5LDEzIEBAIGNsYXNzIFNpbXVsYXRlZERldmljZShvYmplY3QpOgog
ICAgICAgICAnU0hVVFRJTkcgRE9XTicsCiAgICAgXQogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHVkaWQsIGhvc3QsIGRldmljZV90eXBlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwg
bmFtZSwgdWRpZCwgaG9zdCwgZGV2aWNlX3R5cGUsIGJ1aWxkX3ZlcnNpb24pOgogICAgICAgICBh
c3NlcnQgZGV2aWNlX3R5cGUuc29mdHdhcmVfdmVyc2lvbgogCiAgICAgICAgIHNlbGYubmFtZSA9
IG5hbWUKICAgICAgICAgc2VsZi51ZGlkID0gdWRpZAogICAgICAgICBzZWxmLmRldmljZV90eXBl
ID0gZGV2aWNlX3R5cGUKKyAgICAgICAgc2VsZi5idWlsZF92ZXJzaW9uID0gYnVpbGRfdmVyc2lv
bgogICAgICAgICBzZWxmLl9zdGF0ZSA9IFNpbXVsYXRlZERldmljZS5EZXZpY2VTdGF0ZS5TSFVU
VElOR19ET1dOCiAgICAgICAgIHNlbGYuX2xhc3RfdXBkYXRlZF9zdGF0ZSA9IHRpbWUudGltZSgp
CiAKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91
bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3Np
bXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1Nj
cmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weQkod29ya2lu
ZyBjb3B5KQpAQCAtNjA1LDYgKzYwNSw3IEBAIGNsYXNzIFNpbXVsYXRlZERldmljZVRlc3QodW5p
dHRlc3QuVGVzdEMKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFscygxLCBsZW4oU2ltdWxhdGVk
RGV2aWNlTWFuYWdlci5JTklUSUFMSVpFRF9ERVZJQ0VTKSkKICAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoJzM0RkI0NzZDLTZGQTAtNDNDOC04OTQ1LTFCRDdBNEVCRjBERScsIFNpbXVsYXRlZERl
dmljZU1hbmFnZXIuSU5JVElBTElaRURfREVWSUNFU1swXS51ZGlkKQorICAgICAgICBzZWxmLmFz
c2VydEVxdWFscygnMTVBODQwMScsIFNpbXVsYXRlZERldmljZU1hbmFnZXIuSU5JVElBTElaRURf
REVWSUNFU1swXS5idWlsZF92ZXJzaW9uKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhTaW11
bGF0ZWREZXZpY2UuRGV2aWNlU3RhdGUuQk9PVEVELCBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLklO
SVRJQUxJWkVEX0RFVklDRVNbMF0ucGxhdGZvcm1fZGV2aWNlLnN0YXRlKCkpCiAKICAgICAgICAg
U2ltdWxhdGVkRGV2aWNlTWFuYWdlci50ZWFyX2Rvd24oaG9zdCkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>366453</attachid>
            <date>2019-04-01 19:17:27 -0700</date>
            <delta_ts>2019-04-01 19:57:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-196323-20190401191726.patch</filename>
            <type>text/plain</type>
            <size>21244</size>
            <attacher name="Jonathan Bedard">jbedard</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI0MzU5MykKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDQzIEBACisyMDE5LTAzLTI3ICBKb25hdGhhbiBCZWRhcmQgIDxqYmVkYXJkQGFwcGxlLmNv
bT4KKworICAgICAgICBydW4tYXBpLXRlc3RzOiBVcGxvYWQgdGVzdCByZXN1bHRzCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTYzMjMKKyAgICAgICAg
PHJkYXI6Ly9wcm9ibGVtLzQ5MzU2NzE0PgorCisgICAgICAgIFJldmlld2VkIGJ5IEx1Y2FzIEZv
cnNjaGxlci4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL21hbmFnZXIu
cHk6CisgICAgICAgIChNYW5hZ2VyKToKKyAgICAgICAgKE1hbmFnZXIucnVuKTogVXBsb2FkIHJl
c3VsdHMgdG8gYSByZXN1bHRzIGRhdGFiYXNlLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
YXBpX3Rlc3RzL3J1bl9hcGlfdGVzdHMucHk6CisgICAgICAgIChwYXJzZV9hcmdzKTogQWRkIHVw
bG9hZCBhcmd1bWVudHMuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHk6
CisgICAgICAgIChQb3J0KToKKyAgICAgICAgKFBvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2Fk
KTogQ3JlYXRlcyBhIGNvbmZpZ3VyYXRpb24gZGljdGlvbmFyeSBmb3IgdXBsb2FkaW5nIHJlc3Vs
dHMuCisgICAgICAgIChQb3J0LmNvbW1pdHNfZm9yX3VwbG9hZCk6IENyZWF0ZSBhIGxpc3Qgb2Yg
Y29tbWl0cyBmcm9tIHRoZSBXZWJLaXQgcmVwb3NpdG9yeSB0ZXN0cyBhcmUgcnVuIGZyb20gYWxv
bmcKKyAgICAgICAgd2l0aCBjb21taXRzIGZyb20gYW55IG90aGVyIGFzc29jaWF0ZWQgcmVwb3Np
dG9yaWVzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2UucHk6CisgICAg
ICAgIChEZXZpY2UpOgorICAgICAgICAoRGV2aWNlLmJ1aWxkX3ZlcnNpb24pOiBBY2Nlc3MgYnVp
bGRfdmVyc29pbiBvZiB1bmRlcmx5aW5nIHBsYXRmb3JtIGRldmljZS4KKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weToKKyAgICAgICAgKElP
U1NpbXVsYXRvclRlc3QpOgorICAgICAgICAoSU9TU2ltdWxhdG9yVGVzdC50ZXN0X2NvbmZpZ3Vy
YXRpb25fZm9yX3VwbG9hZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wb3J0L2Rldmlj
ZV9wb3J0LnB5OgorICAgICAgICAoRGV2aWNlUG9ydCk6CisgICAgICAgIChEZXZpY2VQb3J0LmNv
bmZpZ3VyYXRpb25fZm9yX3VwbG9hZCk6IERldmljZXMgYXJlIHVuaXF1ZSBiZWNhdXNlIHRoZWly
IGNvbmZpZ3VyYXRpb24gaXMgbm90CisgICAgICAgIHRoZSBzYW1lIGFzIHRoZSBtYWNoaW5lIHVw
bG9hZGluZyByZXN1bHRzLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWMucHk6
CisgICAgICAgIChNYWNQb3J0KToKKyAgICAgICAgKE1hY1BvcnQuY29uZmlndXJhdGlvbl9mb3Jf
dXBsb2FkKTogRGVmaW5lIFNESyBpbiB1cGxvYWQgY29uZmlndXJhdGlvbiBmb3IgTWFjLgorICAg
ICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHk6CisgICAgICAgIChN
YWNUZXN0KToKKyAgICAgICAgKE1hY1Rlc3QudGVzdF9jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQp
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZS5weToK
KyAgICAgICAgKFNpbXVsYXRlZERldmljZU1hbmFnZXIuX2NyZWF0ZV9kZXZpY2Vfd2l0aF9ydW50
aW1lKToKKyAgICAgICAgKFNpbXVsYXRlZERldmljZS5fX2luaXRfXyk6IENyZWF0ZSBzaW11bGF0
ZWQgZGV2aWNlIHdpdGggYSBidWlsZF92ZXJzaW9uLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0
cHkveGNvZGUvc2ltdWxhdGVkX2RldmljZV91bml0dGVzdC5weToKKyAgICAgICAgKHRlc3RfZXhp
c3Rpbmdfc2ltdWxhdG9yKToKKwogMjAxOS0wMy0yNyAgQW5keSBFc3RlcyAgPGFlc3Rlc0BhcHBs
ZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTiAocjI0MjY4Nik6IHBhY2thZ2Utcm9vdCBjcmVh
dGVzIHJvb3RzIHdpdGggYnJva2VuIHN5bWxpbmtzIGluIFdlYktpdC5mcmFtZXdvcmsvWFBDU2Vy
dmljZXMvCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9tYW5hZ2VyLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3RzL21hbmFnZXIu
cHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBpX3Rlc3Rz
L21hbmFnZXIucHkJKHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAo
QykgMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykg
MjAxOC0yMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtMjIsMTAgKzIyLDEyIEBACiAKIGltcG9ydCBqc29uCiBpbXBvcnQg
bG9nZ2luZwotaW1wb3J0IG9zCitpbXBvcnQgdGltZQogCiBmcm9tIHdlYmtpdHB5LmFwaV90ZXN0
cy5ydW5uZXIgaW1wb3J0IFJ1bm5lcgogZnJvbSB3ZWJraXRweS5jb21tb24uc3lzdGVtLmV4ZWN1
dGl2ZSBpbXBvcnQgU2NyaXB0RXJyb3IKK2Zyb20gd2Via2l0cHkucmVzdWx0cy51cGxvYWQgaW1w
b3J0IFVwbG9hZAorCiBmcm9tIHdlYmtpdHB5Lnhjb2RlLnNpbXVsYXRlZF9kZXZpY2UgaW1wb3J0
IERldmljZVJlcXVlc3QsIFNpbXVsYXRlZERldmljZU1hbmFnZXIKIAogX2xvZyA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKF9fbmFtZV9fKQpAQCAtMzksNiArNDEsNyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVj
dCk6CiAgICAgRkFJTEVEX0JVSUxEX0NIRUNLID0gMQogICAgIEZBSUxFRF9DT0xMRUNUX1RFU1RT
ID0gMgogICAgIEZBSUxFRF9URVNUUyA9IDMKKyAgICBGQUlMRURfVVBMT0FEID0gNAogCiAgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHN0cmVhbSk6CiAgICAgICAgIHNlbGYu
X3BvcnQgPSBwb3J0CkBAIC0xNTQsNiArMTU3LDggQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgog
ICAgICAgICAgICAgaWYgbm90IHNlbGYuaG9zdC5maWxlc3lzdGVtLmlzZGlyKHNlbGYuaG9zdC5m
aWxlc3lzdGVtLmRpcm5hbWUoanNvbl9vdXRwdXQpKSBvciBzZWxmLmhvc3QuZmlsZXN5c3RlbS5p
c2Rpcihqc29uX291dHB1dCk6CiAgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCdD
YW5ub3Qgd3JpdGUgdG8ge30nLmZvcm1hdChqc29uX291dHB1dCkpCiAKKyAgICAgICAgc3RhcnRf
dGltZSA9IHRpbWUudGltZSgpCisKICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlX3VwZGF0ZSgn
Q2hlY2tpbmcgYnVpbGQgLi4uJykKICAgICAgICAgaWYgbm90IHNlbGYuX3BvcnQuY2hlY2tfYXBp
X3Rlc3RfYnVpbGQoc2VsZi5fYmluYXJpZXNfZm9yX2FyZ3VtZW50cyhhcmdzKSk6CiAgICAgICAg
ICAgICBfbG9nLmVycm9yKCdCdWlsZCBjaGVjayBmYWlsZWQnKQpAQCAtMTg1LDYgKzE5MCw4IEBA
IGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgICMgSWYgd2UgcmVjZWl2ZSBhIEtl
eWJvYXJkSW50ZXJydXB0LCBwcmludCByZXN1bHRzLgogICAgICAgICAgICAgc2VsZi5fc3RyZWFt
LndyaXRlbG4oJycpCiAKKyAgICAgICAgZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQorCiAgICAgICAg
IHN1Y2Nlc3NmdWwgPSBydW5uZXIucmVzdWx0X21hcF9ieV9zdGF0dXMocnVubmVyLlNUQVRVU19Q
QVNTRUQpCiAgICAgICAgIGRpc2FibGVkID0gbGVuKHJ1bm5lci5yZXN1bHRfbWFwX2J5X3N0YXR1
cyhydW5uZXIuU1RBVFVTX0RJU0FCTEVEKSkKICAgICAgICAgX2xvZy5pbmZvKCdSYW4ge30gdGVz
dHMgb2Yge30gd2l0aCB7fSBzdWNjZXNzZnVsJy5mb3JtYXQobGVuKHJ1bm5lci5yZXN1bHRzKSAt
IGRpc2FibGVkLCBsZW4odGVzdF9uYW1lcyksIGxlbihzdWNjZXNzZnVsKSkpCkBAIC0xOTcsNDIg
KzIwNCw3MyBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgIH0KIAogICAgICAgICBz
ZWxmLl9zdHJlYW0ud3JpdGVsbignLScgKiAzMCkKKyAgICAgICAgcmVzdWx0ID0gTWFuYWdlci5T
VUNDRVNTCiAgICAgICAgIGlmIGxlbihzdWNjZXNzZnVsKSArIGRpc2FibGVkID09IGxlbih0ZXN0
X25hbWVzKToKICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCdBbGwgdGVzdHMgc3Vj
Y2Vzc2Z1bGx5IHBhc3NlZCEnKQogICAgICAgICAgICAgaWYganNvbl9vdXRwdXQ6CiAgICAgICAg
ICAgICAgICAgc2VsZi5ob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKGpzb25fb3V0cHV0
LCBqc29uLmR1bXBzKHJlc3VsdF9kaWN0aW9uYXJ5LCBpbmRlbnQ9NCkpCi0gICAgICAgICAgICBy
ZXR1cm4gTWFuYWdlci5TVUNDRVNTCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl9z
dHJlYW0ud3JpdGVsbignVGVzdCBzdWl0ZSBmYWlsZWQnKQorICAgICAgICAgICAgc2VsZi5fc3Ry
ZWFtLndyaXRlbG4oJycpCiAKLSAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJ1Rlc3Qgc3Vp
dGUgZmFpbGVkJykKLSAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4oJycpCisgICAgICAgICAg
ICBza2lwcGVkID0gW10KKyAgICAgICAgICAgIGZvciB0ZXN0IGluIHRlc3RfbmFtZXM6CisgICAg
ICAgICAgICAgICAgaWYgdGVzdCBub3QgaW4gcnVubmVyLnJlc3VsdHM6CisgICAgICAgICAgICAg
ICAgICAgIHNraXBwZWQuYXBwZW5kKHRlc3QpCisgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9k
aWN0aW9uYXJ5WydTa2lwcGVkJ10uYXBwZW5kKHsnbmFtZSc6IHRlc3QsICdvdXRwdXQnOiBOb25l
fSkKKyAgICAgICAgICAgIGlmIHNraXBwZWQ6CisgICAgICAgICAgICAgICAgc2VsZi5fc3RyZWFt
LndyaXRlbG4oJ1NraXBwZWQge30gdGVzdHMnLmZvcm1hdChsZW4oc2tpcHBlZCkpKQorICAgICAg
ICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCcnKQorICAgICAgICAgICAgICAgIGlmIHNl
bGYuX29wdGlvbnMudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3QgaW4gc2tp
cHBlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCcgICAg
e30nLmZvcm1hdCh0ZXN0KSkKKworICAgICAgICAgICAgc2VsZi5fcHJpbnRfdGVzdHNfcmVzdWx0
X3dpdGhfc3RhdHVzKHJ1bm5lci5TVEFUVVNfRkFJTEVELCBydW5uZXIpCisgICAgICAgICAgICBz
ZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19DUkFTSEVE
LCBydW5uZXIpCisgICAgICAgICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9zdGF0
dXMocnVubmVyLlNUQVRVU19USU1FT1VULCBydW5uZXIpCisKKyAgICAgICAgICAgIGZvciB0ZXN0
LCByZXN1bHQgaW4gcnVubmVyLnJlc3VsdHMuaXRlcml0ZW1zKCk6CisgICAgICAgICAgICAgICAg
c3RhdHVzX3RvX3N0cmluZyA9IHsKKyAgICAgICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19G
QUlMRUQ6ICdGYWlsZWQnLAorICAgICAgICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0NSQVNI
RUQ6ICdDcmFzaGVkJywKKyAgICAgICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19USU1FT1VU
OiAnVGltZWRvdXQnLAorICAgICAgICAgICAgICAgIH0uZ2V0KHJlc3VsdFswXSkKKyAgICAgICAg
ICAgICAgICBpZiBub3Qgc3RhdHVzX3RvX3N0cmluZzoKKyAgICAgICAgICAgICAgICAgICAgY29u
dGludWUKKyAgICAgICAgICAgICAgICByZXN1bHRfZGljdGlvbmFyeVtzdGF0dXNfdG9fc3RyaW5n
XS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6IHJlc3VsdFsxXX0pCiAKLSAgICAgICAg
c2tpcHBlZCA9IFtdCi0gICAgICAgIGZvciB0ZXN0IGluIHRlc3RfbmFtZXM6Ci0gICAgICAgICAg
ICBpZiB0ZXN0IG5vdCBpbiBydW5uZXIucmVzdWx0czoKLSAgICAgICAgICAgICAgICBza2lwcGVk
LmFwcGVuZCh0ZXN0KQotICAgICAgICAgICAgICAgIHJlc3VsdF9kaWN0aW9uYXJ5WydTa2lwcGVk
J10uYXBwZW5kKHsnbmFtZSc6IHRlc3QsICdvdXRwdXQnOiBOb25lfSkKLSAgICAgICAgaWYgc2tp
cHBlZDoKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCdTa2lwcGVkIHt9IHRlc3Rz
Jy5mb3JtYXQobGVuKHNraXBwZWQpKSkKLSAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxu
KCcnKQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy52ZXJib3NlOgotICAgICAgICAgICAg
ICAgIGZvciB0ZXN0IGluIHNraXBwZWQ6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3N0cmVh
bS53cml0ZWxuKCcgICAge30nLmZvcm1hdCh0ZXN0KSkKLQotICAgICAgICBzZWxmLl9wcmludF90
ZXN0c19yZXN1bHRfd2l0aF9zdGF0dXMocnVubmVyLlNUQVRVU19GQUlMRUQsIHJ1bm5lcikKLSAg
ICAgICAgc2VsZi5fcHJpbnRfdGVzdHNfcmVzdWx0X3dpdGhfc3RhdHVzKHJ1bm5lci5TVEFUVVNf
Q1JBU0hFRCwgcnVubmVyKQotICAgICAgICBzZWxmLl9wcmludF90ZXN0c19yZXN1bHRfd2l0aF9z
dGF0dXMocnVubmVyLlNUQVRVU19USU1FT1VULCBydW5uZXIpCi0KLSAgICAgICAgZm9yIHRlc3Qs
IHJlc3VsdCBpbiBydW5uZXIucmVzdWx0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIHN0YXR1
c190b19zdHJpbmcgPSB7Ci0gICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19GQUlMRUQ6ICdG
YWlsZWQnLAotICAgICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfQ1JBU0hFRDogJ0NyYXNoZWQn
LAotICAgICAgICAgICAgICAgIHJ1bm5lci5TVEFUVVNfVElNRU9VVDogJ1RpbWVkb3V0JywKLSAg
ICAgICAgICAgIH0uZ2V0KHJlc3VsdFswXSkKLSAgICAgICAgICAgIGlmIG5vdCBzdGF0dXNfdG9f
c3RyaW5nOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICAgICByZXN1bHRfZGlj
dGlvbmFyeVtzdGF0dXNfdG9fc3RyaW5nXS5hcHBlbmQoeyduYW1lJzogdGVzdCwgJ291dHB1dCc6
IHJlc3VsdFsxXX0pCisgICAgICAgICAgICBpZiBqc29uX291dHB1dDoKKyAgICAgICAgICAgICAg
ICBzZWxmLmhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUoanNvbl9vdXRwdXQsIGpzb24u
ZHVtcHMocmVzdWx0X2RpY3Rpb25hcnksIGluZGVudD00KSkKIAotICAgICAgICBpZiBqc29uX291
dHB1dDoKLSAgICAgICAgICAgIHNlbGYuaG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZShq
c29uX291dHB1dCwganNvbi5kdW1wcyhyZXN1bHRfZGljdGlvbmFyeSwgaW5kZW50PTQpKQorICAg
ICAgICAgICAgcmVzdWx0ID0gTWFuYWdlci5GQUlMRURfVEVTVFMKKworICAgICAgICBpZiBzZWxm
Ll9vcHRpb25zLnJlcG9ydF91cmxzOgorICAgICAgICAgICAgc2VsZi5fc3RyZWFtLndyaXRlbG4o
J1xuJykKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZV91cGRhdGUoJ1ByZXBhcmluZyB1
cGxvYWQgZGF0YSAuLi4nKQorCisgICAgICAgICAgICBzdGF0dXNfdG9fdGVzdF9yZXN1bHQgPSB7
CisgICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19QQVNTRUQ6IE5vbmUsCisgICAgICAgICAg
ICAgICAgcnVubmVyLlNUQVRVU19GQUlMRUQ6IFVwbG9hZC5FeHBlY3RhdGlvbnMuRkFJTCwKKyAg
ICAgICAgICAgICAgICBydW5uZXIuU1RBVFVTX0NSQVNIRUQ6IFVwbG9hZC5FeHBlY3RhdGlvbnMu
Q1JBU0gsCisgICAgICAgICAgICAgICAgcnVubmVyLlNUQVRVU19USU1FT1VUOiBVcGxvYWQuRXhw
ZWN0YXRpb25zLlRJTUVPVVQsCisgICAgICAgICAgICB9CisgICAgICAgICAgICB1cGxvYWQgPSBV
cGxvYWQoCisgICAgICAgICAgICAgICAgc3VpdGU9J2FwaS10ZXN0cycsCisgICAgICAgICAgICAg
ICAgY29uZmlndXJhdGlvbj1zZWxmLl9wb3J0LmNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxm
Ll9wb3J0LnRhcmdldF9ob3N0KDApKSwKKyAgICAgICAgICAgICAgICBkZXRhaWxzPVVwbG9hZC5j
cmVhdGVfZGV0YWlscyhvcHRpb25zPXNlbGYuX29wdGlvbnMpLAorICAgICAgICAgICAgICAgIGNv
bW1pdHM9c2VsZi5fcG9ydC5jb21taXRzX2Zvcl91cGxvYWQoKSwKKyAgICAgICAgICAgICAgICBy
dW5fc3RhdHM9VXBsb2FkLmNyZWF0ZV9ydW5fc3RhdHMoCisgICAgICAgICAgICAgICAgICAgIHN0
YXJ0X3RpbWU9c3RhcnRfdGltZSwKKyAgICAgICAgICAgICAgICAgICAgZW5kX3RpbWU9ZW5kX3Rp
bWUsCisgICAgICAgICAgICAgICAgICAgIHRlc3RzX3NraXBwZWQ9bGVuKHJlc3VsdF9kaWN0aW9u
YXJ5WydTa2lwcGVkJ10pLAorICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAgICAgcmVz
dWx0cz17dGVzdDogVXBsb2FkLmNyZWF0ZV90ZXN0X3Jlc3VsdChhY3R1YWw9c3RhdHVzX3RvX3Rl
c3RfcmVzdWx0W3Jlc3VsdFswXV0pCisgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRlc3Qs
IHJlc3VsdCBpbiBydW5uZXIucmVzdWx0cy5pdGVyaXRlbXMoKSBpZiByZXN1bHRbMF0gaW4gc3Rh
dHVzX3RvX3Rlc3RfcmVzdWx0fSwKKyAgICAgICAgICAgICkKKyAgICAgICAgICAgIGZvciB1cmwg
aW4gc2VsZi5fb3B0aW9ucy5yZXBvcnRfdXJsczoKKyAgICAgICAgICAgICAgICBzZWxmLl9zdHJl
YW0ud3JpdGVfdXBkYXRlKCdVcGxvYWRpbmcgdG8ge30gLi4uJy5mb3JtYXQodXJsKSkKKyAgICAg
ICAgICAgICAgICBpZiBub3QgdXBsb2FkLnVwbG9hZCh1cmwsIGxvZ19saW5lX2Z1bmM9c2VsZi5f
c3RyZWFtLndyaXRlbG4pOgorICAgICAgICAgICAgICAgICAgICByZXN1bHQgPSBNYW5hZ2VyLkZB
SUxFRF9VUExPQUQKKyAgICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZWxuKCdVcGxvYWRzIGNv
bXBsZXRlZCEnKQogCi0gICAgICAgIHJldHVybiBNYW5hZ2VyLkZBSUxFRF9URVNUUworICAgICAg
ICByZXR1cm4gcmVzdWx0CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L2FwaV90ZXN0cy9y
dW5fYXBpX3Rlc3RzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvYXBp
X3Rlc3RzL3J1bl9hcGlfdGVzdHMucHkJKHJldmlzaW9uIDI0MzU2MSkKKysrIFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvYXBpX3Rlc3RzL3J1bl9hcGlfdGVzdHMucHkJKHdvcmtpbmcgY29weSkKQEAg
LTMwLDYgKzMwLDcgQEAgZnJvbSB3ZWJraXRweS5hcGlfdGVzdHMubWFuYWdlciBpbXBvcnQgTQog
ZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0KIGZyb20g
d2Via2l0cHkucG9ydCBpbXBvcnQgY29uZmlndXJhdGlvbl9vcHRpb25zLCBwbGF0Zm9ybV9vcHRp
b25zLCBiYXNlLCB3aW4KK2Zyb20gd2Via2l0cHkucmVzdWx0cy5vcHRpb25zIGltcG9ydCB1cGxv
YWRfb3B0aW9ucwogCiBFWENFUFRJT05BTF9FWElUX1NUQVRVUyA9IC0xCiBJTlRFUlJVUFRfRVhJ
VF9TVEFUVVMgPSAtMgpAQCAtMTM0LDYgKzEzNSw3IEBAIGRlZiBwYXJzZV9hcmdzKGFyZ3MpOgog
ICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbignLS1mb3JjZScsIGFjdGlvbj0nc3RvcmVfdHJ1
ZScsIGRlZmF1bHQ9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1J1
biBhbGwgdGVzdHMsIGV2ZW4gRElTQUJMRUQgdGVzdHMnKSwKICAgICBdKSkKKyAgICBvcHRpb25f
Z3JvdXBfZGVmaW5pdGlvbnMuYXBwZW5kKCgnVXBsb2FkIE9wdGlvbnMnLCB1cGxvYWRfb3B0aW9u
cygpKSkKIAogICAgIG9wdGlvbl9wYXJzZXIgPSBvcHRwYXJzZS5PcHRpb25QYXJzZXIoCiAgICAg
ICAgIHVzYWdlPSdydW4tYXBpLXRlc3RzIFtvcHRpb25zXSBbPHRlc3QgbmFtZXM+Li4uXScsCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBU
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvYmFzZS5weQkocmV2aXNpb24gMjQzNTYxKQorKysg
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L2Jhc2UucHkJKHdvcmtpbmcgY29weSkKQEAgLTQ1
LDYgKzQ1LDcgQEAgZnJvbSBmdW5jdG9vbHMgaW1wb3J0IHBhcnRpYWwKIAogZnJvbSB3ZWJraXRw
eS5jb21tb24gaW1wb3J0IGZpbmRfZmlsZXMKIGZyb20gd2Via2l0cHkuY29tbW9uIGltcG9ydCBy
ZWFkX2NoZWNrc3VtX2Zyb21fcG5nCitmcm9tIHdlYmtpdHB5LmNvbW1vbi5jaGVja291dC5zY20u
ZGV0ZWN0aW9uIGltcG9ydCBTQ01EZXRlY3RvcgogZnJvbSB3ZWJraXRweS5jb21tb24ubWVtb2l6
ZWQgaW1wb3J0IG1lbW9pemVkCiBmcm9tIHdlYmtpdHB5LmNvbW1vbi5wcmV0dHlwYXRjaCBpbXBv
cnQgUHJldHR5UGF0Y2gKIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbSBpbXBvcnQgcGF0aCwg
cGVtZmlsZQpAQCAtNjEsNiArNjIsNyBAQCBmcm9tIHdlYmtpdHB5LnBvcnQuZmFjdG9yeSBpbXBv
cnQgUG9ydEZhCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCBhcGFj
aGVfaHR0cF9zZXJ2ZXIsIGh0dHBfc2VydmVyLCBodHRwX3NlcnZlcl9iYXNlCiBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzIGltcG9ydCB3ZWJfcGxhdGZvcm1fdGVzdF9zZXJ2ZXIK
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnNlcnZlcnMgaW1wb3J0IHdlYnNvY2tldF9zZXJ2
ZXIKK2Zyb20gd2Via2l0cHkucmVzdWx0cy51cGxvYWQgaW1wb3J0IFVwbG9hZAogCiBfbG9nID0g
bG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKQEAgLTE2MzQsMyArMTYzNiwzOCBAQCBjbGFz
cyBQb3J0KG9iamVjdCk6CiAgICAgICAgICMgVGhpcyBpcyBvdmVycmlkZGVuIGJ5IHBvcnRzIHRo
YXQgbmVlZCB0byBkbyB3b3JrIGluIHRoZSBwYXJlbnQgcHJvY2VzcyBhZnRlciBhIHdvcmtlciBz
dWJwcm9jZXNzIGlzIHNwYXduZWQsCiAgICAgICAgICMgc3VjaCBhcyBjbG9zaW5nIGZpbGUgZGVz
Y3JpcHRvcnMgdGhhdCB3ZXJlIGltcGxpY2l0bHkgY2xvbmVkIHRvIHRoZSB3b3JrZXIuCiAgICAg
ICAgIHBhc3MKKworICAgIGRlZiBjb25maWd1cmF0aW9uX2Zvcl91cGxvYWQoc2VsZiwgaG9zdD1O
b25lKToKKyAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYudGVzdF9jb25maWd1cmF0aW9uKCkK
KyAgICAgICAgaG9zdCA9IHNlbGYuaG9zdCBvciBob3N0CisKKyAgICAgICAgcmV0dXJuIFVwbG9h
ZC5jcmVhdGVfY29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIHBsYXRmb3JtPWhvc3QucGxhdGZv
cm0ub3NfbmFtZSwKKyAgICAgICAgICAgIHZlcnNpb249c3RyKGhvc3QucGxhdGZvcm0ub3NfdmVy
c2lvbiksCisgICAgICAgICAgICB2ZXJzaW9uX25hbWU9aG9zdC5wbGF0Zm9ybS5vc192ZXJzaW9u
X25hbWUoSU5URVJOQUxfVEFCTEUpIG9yIGhvc3QucGxhdGZvcm0ub3NfdmVyc2lvbl9uYW1lKCks
CisgICAgICAgICAgICBhcmNoaXRlY3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsCisg
ICAgICAgICAgICBzdHlsZT0nZ3VhcmQtbWFsbG9jJyBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJk
X21hbGxvYycpIGVsc2UgY29uZmlndXJhdGlvbi5idWlsZF90eXBlLAorICAgICAgICAgICAgc2Rr
PWhvc3QucGxhdGZvcm0uYnVpbGRfdmVyc2lvbigpLAorICAgICAgICApCisKKyAgICBAbWVtb2l6
ZWQKKyAgICBkZWYgY29tbWl0c19mb3JfdXBsb2FkKHNlbGYpOgorICAgICAgICBzZWxmLmhvc3Qu
aW5pdGlhbGl6ZV9zY20oKQorCisgICAgICAgIGlmIHBvcnRfY29uZmlnLmFwcGxlX2FkZGl0aW9u
cygpIGFuZCBnZXRhdHRyKHBvcnRfY29uZmlnLmFwcGxlX2FkZGl0aW9ucygpLCAncmVwb3MnLCBG
YWxzZSk6CisgICAgICAgICAgICByZXBvcyA9IHBvcnRfY29uZmlnLmFwcGxlX2FkZGl0aW9ucygp
LnJlcG9zKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJlcG9zID0ge30KKworICAgICAg
ICB1cCA9IG9zLnBhdGguZGlybmFtZQorICAgICAgICByZXBvc1snd2Via2l0J10gPSB1cCh1cCh1
cCh1cCh1cChvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSkpKSkKKworICAgICAgICBjb21taXRz
ID0gW10KKyAgICAgICAgZm9yIHJlcG9faWQsIHBhdGggaW4gcmVwb3MuaXRlcml0ZW1zKCk6Cisg
ICAgICAgICAgICBzY20gPSBTQ01EZXRlY3RvcihzZWxmLl9maWxlc3lzdGVtLCBzZWxmLl9leGVj
dXRpdmUpLmRldGVjdF9zY21fc3lzdGVtKHBhdGgpCisgICAgICAgICAgICBjb21taXRzLmFwcGVu
ZChVcGxvYWQuY3JlYXRlX2NvbW1pdCgKKyAgICAgICAgICAgICAgICByZXBvc2l0b3J5X2lkPXJl
cG9faWQsCisgICAgICAgICAgICAgICAgaWQ9c2NtLm5hdGl2ZV9yZXZpc2lvbihwYXRoKSwKKyAg
ICAgICAgICAgICAgICBicmFuY2g9c2NtLm5hdGl2ZV9icmFuY2gocGF0aCksCisgICAgICAgICAg
ICApKQorICAgICAgICByZXR1cm4gY29tbWl0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9wb3J0L2RldmljZS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvZGV2aWNlLnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5
L3BvcnQvZGV2aWNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMDEsNiArMTAxLDEwIEBAIGNsYXNz
IERldmljZShvYmplY3QpOgogICAgIGRlZiBkZXZpY2VfdHlwZShzZWxmKToKICAgICAgICAgcmV0
dXJuIHNlbGYucGxhdGZvcm1fZGV2aWNlLmRldmljZV90eXBlCiAKKyAgICBAcHJvcGVydHkKKyAg
ICBkZWYgYnVpbGRfdmVyc2lvbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYucGxhdGZvcm1f
ZGV2aWNlLmJ1aWxkX3ZlcnNpb24KKwogICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKICAgICAg
ICAgcmV0dXJuIHNlbGYucGxhdGZvcm1fZGV2aWNlIGlzIG5vdCBOb25lCiAKSW5kZXg6IFRvb2xz
L1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvZGV2aWNlX3BvcnQucHkJKHJldmlzaW9uIDI0MzU2MSkK
KysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9kZXZpY2VfcG9ydC5weQkod29ya2luZyBj
b3B5KQpAQCAtMSw0ICsxLDQgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE4LTIwMTkgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMyw5
ICsyMywxMSBAQAogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCB0cmFjZWJhY2sKIAorZnJvbSB3ZWJr
aXRweS5jb21tb24udmVyc2lvbl9uYW1lX21hcCBpbXBvcnQgVmVyc2lvbk5hbWVNYXAsIFBVQkxJ
Q19UQUJMRSwgSU5URVJOQUxfVEFCTEUKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cy50ZXN0X2NvbmZpZ3VyYXRpb24gaW1wb3J0IFRlc3RDb25maWd1cmF0aW9uCiBmcm9tIHdlYmtp
dHB5LnBvcnQuZGFyd2luIGltcG9ydCBEYXJ3aW5Qb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQuc2lt
dWxhdG9yX3Byb2Nlc3MgaW1wb3J0IFNpbXVsYXRvclByb2Nlc3MKK2Zyb20gd2Via2l0cHkucmVz
dWx0cy51cGxvYWQgaW1wb3J0IFVwbG9hZAogZnJvbSB3ZWJraXRweS54Y29kZS5kZXZpY2VfdHlw
ZSBpbXBvcnQgRGV2aWNlVHlwZQogZnJvbSB3ZWJraXRweS54Y29kZS5zaW11bGF0ZWRfZGV2aWNl
IGltcG9ydCBEZXZpY2VSZXF1ZXN0LCBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyCiAKQEAgLTIzOCwz
ICsyNDAsMjkgQEAgY2xhc3MgRGV2aWNlUG9ydChEYXJ3aW5Qb3J0KToKIAogICAgIGRlZiBkZXZp
Y2VfdmVyc2lvbihzZWxmKToKICAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgorCisg
ICAgZGVmIGNvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxmLCBob3N0PU5vbmUpOgorICAgICAg
ICBjb25maWd1cmF0aW9uID0gc2VsZi50ZXN0X2NvbmZpZ3VyYXRpb24oKQorCisgICAgICAgIGRl
dmljZV90eXBlID0gaG9zdC5kZXZpY2VfdHlwZSBpZiBob3N0IGVsc2Ugc2VsZi5ERVZJQ0VfVFlQ
RQorICAgICAgICBtb2RlbCA9IGRldmljZV90eXBlLmhhcmR3YXJlX2ZhbWlseQorICAgICAgICBp
ZiBtb2RlbCBhbmQgZGV2aWNlX3R5cGUuaGFyZHdhcmVfdHlwZToKKyAgICAgICAgICAgIG1vZGVs
ICs9ICcge30nLmZvcm1hdChkZXZpY2VfdHlwZS5oYXJkd2FyZV90eXBlKQorCisgICAgICAgIHZl
cnNpb24gPSBzZWxmLmRldmljZV92ZXJzaW9uKCkKKyAgICAgICAgdmVyc2lvbl9uYW1lID0gTm9u
ZQorICAgICAgICBmb3IgdGFibGUgaW4gW0lOVEVSTkFMX1RBQkxFLCBQVUJMSUNfVEFCTEVdOgor
ICAgICAgICAgICAgdmVyc2lvbl9uYW1lID0gVmVyc2lvbk5hbWVNYXAubWFwKHNlbGYuaG9zdC5w
bGF0Zm9ybSkudG9fbmFtZSh2ZXJzaW9uLCBwbGF0Zm9ybT1kZXZpY2VfdHlwZS5zb2Z0d2FyZV92
YXJpYW50Lmxvd2VyKCksIHRhYmxlPXRhYmxlKQorICAgICAgICAgICAgaWYgdmVyc2lvbl9uYW1l
OgorICAgICAgICAgICAgICAgIGJyZWFrCisKKyAgICAgICAgcmV0dXJuIFVwbG9hZC5jcmVhdGVf
Y29uZmlndXJhdGlvbigKKyAgICAgICAgICAgIHBsYXRmb3JtPWRldmljZV90eXBlLnNvZnR3YXJl
X3ZhcmlhbnQubG93ZXIoKSwKKyAgICAgICAgICAgIGlzX3NpbXVsYXRvcj1zZWxmLkRFVklDRV9N
QU5BR0VSID09IFNpbXVsYXRlZERldmljZU1hbmFnZXIsCisgICAgICAgICAgICB2ZXJzaW9uPXN0
cih2ZXJzaW9uKSwKKyAgICAgICAgICAgIHZlcnNpb25fbmFtZT12ZXJzaW9uX25hbWUsCisgICAg
ICAgICAgICBhcmNoaXRlY3R1cmU9Y29uZmlndXJhdGlvbi5hcmNoaXRlY3R1cmUsCisgICAgICAg
ICAgICBzdHlsZT0nZ3VhcmQtbWFsbG9jJyBpZiBzZWxmLmdldF9vcHRpb24oJ2d1YXJkX21hbGxv
YycpIGVsc2UgY29uZmlndXJhdGlvbi5idWlsZF90eXBlLAorICAgICAgICAgICAgbW9kZWw9bW9k
ZWwsCisgICAgICAgICAgICBzZGs9aG9zdC5idWlsZF92ZXJzaW9uIGlmIGhvc3QgZWxzZSBOb25l
LAorICAgICAgICApCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3BvcnQvaW9zX3NpbXVs
YXRvcl91bml0dGVzdC5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Bv
cnQvaW9zX3NpbXVsYXRvcl91bml0dGVzdC5weQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wb3J0L2lvc19zaW11bGF0b3JfdW5pdHRlc3QucHkJKHdvcmtpbmcg
Y29weSkKQEAgLTEsNCArMSw0IEBACi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE2IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBA
IC0xNjEsMyArMTYxLDE3IEBAIGNsYXNzIElPU1NpbXVsYXRvclRlc3QoaW9zX3Rlc3RjYXNlLklP
U1QKICAgICBkZWYgdGVzdF9tYXhfY2hpbGRfcHJvY2Vzc2VzKHNlbGYpOgogICAgICAgICBwb3J0
ID0gc2VsZi5tYWtlX3BvcnQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvcnQubWF4X2No
aWxkX3Byb2Nlc3NlcyhEZXZpY2VUeXBlLmZyb21fc3RyaW5nKCdBcHBsZSBXYXRjaCcpKSwgMCkK
KworICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxmKToKKyAgICAgICAg
cG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAg
ICAgICAgIGRpY3QoCisgICAgICAgICAgICAgICAgcGxhdGZvcm09J2lvcycsCisgICAgICAgICAg
ICAgICAgaXNfc2ltdWxhdG9yPVRydWUsCisgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlPSd4
ODZfNjQnLAorICAgICAgICAgICAgICAgIHZlcnNpb249JzExJywKKyAgICAgICAgICAgICAgICB2
ZXJzaW9uX25hbWU9J2lPUyAxMScsCisgICAgICAgICAgICAgICAgc3R5bGU9J3JlbGVhc2UnLAor
ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgIHBvcnQuY29uZmlndXJhdGlvbl9mb3JfdXBsb2Fk
KCksCisgICAgICAgICkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWMucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkocmV2aXNp
b24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hYy5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxMiwgMjAxMywgMjAxNiBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMi0yMDE5
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucyBhcmUKQEAgLTI3OSwzICsyNzksMTQgQEAgY2xhc3MgTWFjUG9ydChEYXJ3aW5Qb3J0KToK
ICAgICAgICAgd29ydGhsZXNzX3BhdHRlcm5zLmFwcGVuZCgocmUuY29tcGlsZSgnLio8PDw8IFZN
QyA+Pj4+LipcbicpLCAnJykpCiAgICAgICAgIHdvcnRobGVzc19wYXR0ZXJucy5hcHBlbmQoKHJl
LmNvbXBpbGUoJy4qPDw8IEZGUl9Db21tb24gPj4+LipcbicpLCAnJykpCiAgICAgICAgIHJldHVy
biB3b3J0aGxlc3NfcGF0dGVybnMKKworICAgIGRlZiBjb25maWd1cmF0aW9uX2Zvcl91cGxvYWQo
c2VsZiwgaG9zdD1Ob25lKToKKyAgICAgICAgaG9zdCA9IGhvc3Qgb3Igc2VsZi5ob3N0CisgICAg
ICAgIGNvbmZpZ3VyYXRpb24gPSBzdXBlcihNYWNQb3J0LCBzZWxmKS5jb25maWd1cmF0aW9uX2Zv
cl91cGxvYWQoaG9zdD1ob3N0KQorCisgICAgICAgIG91dHB1dCA9IGhvc3QuZXhlY3V0aXZlLnJ1
bl9jb21tYW5kKFsnL3Vzci9zYmluL3N5c2N0bCcsICdody5tb2RlbCddKS5yc3RyaXAoKQorICAg
ICAgICBtYXRjaCA9IHJlLm1hdGNoKHInaHcubW9kZWw6ICg/UDxtb2RlbD4uKiknLCBvdXRwdXQp
CisgICAgICAgIGlmIG1hdGNoOgorICAgICAgICAgICAgY29uZmlndXJhdGlvblsnbW9kZWwnXSA9
IG1hdGNoLmdyb3VwKCdtb2RlbCcpCisKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KSW5k
ZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvcG9ydC9tYWNfdW5pdHRlc3QucHkKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5weQkocmV2aXNp
b24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wb3J0L21hY191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0jIENvcHlyaWdodCAoQykgMjAxNC0yMDE2
IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDE0LTIw
MTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtMjI0LDMgKzIyNCwxOCBAQCBjbGFzcyBNYWNUZXN0KGRhcndpbl90ZXN0
Y2FzZS5EYXJ3aW5UZXN0CiAKICAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KG9wdGlvbnM9
TW9ja09wdGlvbnMod2Via2l0X3Rlc3RfcnVubmVyPUZhbHNlKSwgcG9ydF9uYW1lPSdtYWMtd2sy
JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwb3J0LmRyaXZlcl9uYW1lKCksICdXZWJLaXRU
ZXN0UnVubmVyJykKKworICAgIGRlZiB0ZXN0X2NvbmZpZ3VyYXRpb25fZm9yX3VwbG9hZChzZWxm
KToKKyAgICAgICAgcG9ydCA9IHNlbGYubWFrZV9wb3J0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbCgKKyAgICAgICAgICAgIGRpY3QoCisgICAgICAgICAgICAgICAgcGxhdGZvcm09J21hYycs
CisgICAgICAgICAgICAgICAgaXNfc2ltdWxhdG9yPUZhbHNlLAorICAgICAgICAgICAgICAgIGFy
Y2hpdGVjdHVyZT0neDg2XzY0JywKKyAgICAgICAgICAgICAgICB2ZXJzaW9uPScxMC43JywKKyAg
ICAgICAgICAgICAgICB2ZXJzaW9uX25hbWU9J0xpb24nLAorICAgICAgICAgICAgICAgIHNkaz0n
MTdBNDA1JywKKyAgICAgICAgICAgICAgICBzdHlsZT0ncmVsZWFzZScsCisgICAgICAgICAgICAp
LAorICAgICAgICAgICAgcG9ydC5jb25maWd1cmF0aW9uX2Zvcl91cGxvYWQoKSwKKyAgICAgICAg
KQpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9zaW11bGF0ZWRfZGV2aWNlLnB5
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkveGNvZGUvc2ltdWxhdGVkX2Rl
dmljZS5weQkocmV2aXNpb24gMjQzNTYxKQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29k
ZS9zaW11bGF0ZWRfZGV2aWNlLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsNiArMTEzLDcgQEAg
Y2xhc3MgU2ltdWxhdGVkRGV2aWNlTWFuYWdlcihvYmplY3QpOgogICAgICAgICAgICAgdWRpZD1k
ZXZpY2VfaW5mb1sndWRpZCddLAogICAgICAgICAgICAgaG9zdD1ob3N0LAogICAgICAgICAgICAg
ZGV2aWNlX3R5cGU9ZGV2aWNlX3R5cGUsCisgICAgICAgICAgICBidWlsZF92ZXJzaW9uPXJ1bnRp
bWUuYnVpbGRfdmVyc2lvbiwKICAgICAgICAgKSkKICAgICAgICAgU2ltdWxhdGVkRGV2aWNlTWFu
YWdlci5BVkFJTEFCTEVfREVWSUNFUy5hcHBlbmQocmVzdWx0KQogICAgICAgICByZXR1cm4gcmVz
dWx0CkBAIC00ODgsMTIgKzQ4OSwxMyBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2Uob2JqZWN0KToK
ICAgICAgICAgJ1NIVVRUSU5HIERPV04nLAogICAgIF0KIAotICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBuYW1lLCB1ZGlkLCBob3N0LCBkZXZpY2VfdHlwZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IG5hbWUsIHVkaWQsIGhvc3QsIGRldmljZV90eXBlLCBidWlsZF92ZXJzaW9uKToKICAgICAgICAg
YXNzZXJ0IGRldmljZV90eXBlLnNvZnR3YXJlX3ZlcnNpb24KIAogICAgICAgICBzZWxmLm5hbWUg
PSBuYW1lCiAgICAgICAgIHNlbGYudWRpZCA9IHVkaWQKICAgICAgICAgc2VsZi5kZXZpY2VfdHlw
ZSA9IGRldmljZV90eXBlCisgICAgICAgIHNlbGYuYnVpbGRfdmVyc2lvbiA9IGJ1aWxkX3ZlcnNp
b24KICAgICAgICAgc2VsZi5fc3RhdGUgPSBTaW11bGF0ZWREZXZpY2UuRGV2aWNlU3RhdGUuU0hV
VFRJTkdfRE9XTgogICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZWRfc3RhdGUgPSB0aW1lLnRpbWUo
KQogCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2Vf
dW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS94Y29kZS9z
aW11bGF0ZWRfZGV2aWNlX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiAyNDM1NjEpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3hjb2RlL3NpbXVsYXRlZF9kZXZpY2VfdW5pdHRlc3QucHkJKHdvcmtp
bmcgY29weSkKQEAgLTYwNSw2ICs2MDUsNyBAQCBjbGFzcyBTaW11bGF0ZWREZXZpY2VUZXN0KHVu
aXR0ZXN0LlRlc3RDCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoMSwgbGVuKFNpbXVsYXRl
ZERldmljZU1hbmFnZXIuSU5JVElBTElaRURfREVWSUNFUykpCiAgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKCczNEZCNDc2Qy02RkEwLTQzQzgtODk0NS0xQkQ3QTRFQkYwREUnLCBTaW11bGF0ZWRE
ZXZpY2VNYW5hZ2VyLklOSVRJQUxJWkVEX0RFVklDRVNbMF0udWRpZCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoJzE1QTg0MDEnLCBTaW11bGF0ZWREZXZpY2VNYW5hZ2VyLklOSVRJQUxJWkVE
X0RFVklDRVNbMF0uYnVpbGRfdmVyc2lvbikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoU2lt
dWxhdGVkRGV2aWNlLkRldmljZVN0YXRlLkJPT1RFRCwgU2ltdWxhdGVkRGV2aWNlTWFuYWdlci5J
TklUSUFMSVpFRF9ERVZJQ0VTWzBdLnBsYXRmb3JtX2RldmljZS5zdGF0ZSgpKQogCiAgICAgICAg
IFNpbXVsYXRlZERldmljZU1hbmFnZXIudGVhcl9kb3duKGhvc3QpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>