<?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>73846</bug_id>
          
          <creation_ts>2011-12-05 11:10:23 -0800</creation_ts>
          <short_desc>clean up NRWT logging/metering, be less verbose</short_desc>
          <delta_ts>2012-03-26 12:41:09 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>82138</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>aroben</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>gustavo</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>515220</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-12-05 11:10:23 -0800</bug_when>
    <thetext>Looking at the following snippet of log output, most of it is useful, but the date and the logging level are not useful to me. Can we get rid of those?

2011-12-03 03:09:30,018 58036 printing.py:462 INFO       worker/9:  4696 tests, 1746.63 secs
2011-12-03 03:09:30,018 58036 printing.py:462 INFO       worker/8:  1177 tests, 1693.47 secs
2011-12-03 03:09:30,018 58036 printing.py:462 INFO       worker/3:  1408 tests, 2033.51 secs
2011-12-03 03:09:30,018 58036 printing.py:462 INFO       worker/2:   941 tests, 2119.65 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO       worker/1:  1121 tests, 2041.97 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO       worker/0:  1453 tests, 2515.75 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO       worker/7:  1189 tests, 1731.12 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO       worker/6:  3556 tests, 2114.37 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO       worker/5:   948 tests, 2097.13 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO       worker/4:  1411 tests, 1716.66 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO      worker/15:   795 tests, 2027.16 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO      worker/14:  1123 tests, 1732.72 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO      worker/13:   425 tests, 2021.25 secs
2011-12-03 03:09:30,019 58036 printing.py:462 INFO      worker/12:  1175 tests, 1710.09 secs
2011-12-03 03:09:30,020 58036 printing.py:462 INFO      worker/11:  3462 tests, 2096.30 secs
2011-12-03 03:09:30,020 58036 printing.py:462 INFO      worker/10:  1449 tests, 1722.68 secs
2011-12-03 03:09:30,020 58036 printing.py:462 INFO    31120.45 cumulative, 1945.03 optimal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>515286</commentid>
    <comment_count>1</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-12-05 12:25:21 -0800</bug_when>
    <thetext>I think it makes sense to get rid of some of the characters, but I&apos;m not sure that I&apos;d pick the same set you did. I&apos;d probably get rid of at least the year, and I&apos;d get rid of the filename and line number (since NRWT essentially funnels all of the logging through the single routine). 

I might compress the log level down (I/E/W/C or something), but I&apos;d like to keep it for now as I find it useful to grep for warnings and errors on occasion. I can&apos;t decide if I think the date is useful otherwise. We can certainly get rid of it for now and add it back if we find we miss it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586874</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-23 17:19:15 -0700</bug_when>
    <thetext>I&apos;m going to hijack this bug to use for landing a large refactoring of the printing and metered_stream modules. Much of this is to make the code cleaner, as the existing implement has several weird subleties, but it also makes the metered stream module reusable for test-webkitpy.

I will at least also make things less verbose, eliminating the date, file:lineno, and level parameters :).

Updating subject accordingly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586877</commentid>
    <comment_count>3</comment_count>
      <attachid>133592</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-23 17:19:59 -0700</bug_when>
    <thetext>Created attachment 133592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>586979</commentid>
    <comment_count>4</comment_count>
      <attachid>133592</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-03-23 19:27:22 -0700</bug_when>
    <thetext>Comment on attachment 133592
Patch

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

Feel free to ignore any of these suggestions.

&gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:50
&gt; +    def _newline(txt):

Nit: i&apos;d call this _ensure_newline

&gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:63
&gt; +        self._progress_delay_in_secs = 0.033 if self._erasing else 10.0

Nit: I think something like 0.1 would be fine here. Noone will notice the difference.

&gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:76
&gt; +        &quot;&quot;&quot;Restore / clean up any changes to the logging configuration.&quot;&quot;&quot;

Here and below, these function comments describe the obvious &quot;what&quot; the function does. I don&apos;t think they are useful.

&gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:81
&gt; +    def progress(self, txt):

s/progress/write_progress?

&gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:87
&gt; +    def update(self, txt, now=None):

s/update/write_overwritable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587165</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-24 12:35:09 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 133592 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=133592&amp;action=review
&gt; 
&gt; Feel free to ignore any of these suggestions.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:50
&gt; &gt; +    def _newline(txt):
&gt; 
&gt; Nit: i&apos;d call this _ensure_newline
&gt; 

Good. Done; I&apos;d been trying to come up with a better name, but my mind was blanking on ensure_*.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:63
&gt; &gt; +        self._progress_delay_in_secs = 0.033 if self._erasing else 10.0
&gt; 
&gt; Nit: I think something like 0.1 would be fine here. Noone will notice the difference.
&gt;

10 fps is slow enough to be noticable (at least to me). I changed it to 0.066 (15 fps) which seems like a fair compromise :).
 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:76
&gt; &gt; +        &quot;&quot;&quot;Restore / clean up any changes to the logging configuration.&quot;&quot;&quot;
&gt; 
&gt; Here and below, these function comments describe the obvious &quot;what&quot; the function does. I don&apos;t think they are useful.
&gt; 

Ok.

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:81
&gt; &gt; +    def progress(self, txt):
&gt; 
&gt; s/progress/write_progress?
&gt; 

renamed it to write_throttled_update(), because of the change below (and throttled seemed clearer).

&gt; &gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:87
&gt; &gt; +    def update(self, txt, now=None):
&gt; 
&gt; s/update/write_overwritable?

renamed it to write_update(). write_overwritable() seems awkward.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587176</commentid>
    <comment_count>6</comment_count>
      <attachid>133651</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-24 14:18:10 -0700</bug_when>
    <thetext>Created attachment 133651
more testing, update w/ review feedback, fix child process issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587177</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-24 14:22:51 -0700</bug_when>
    <thetext>Committed r112014: &lt;http://trac.webkit.org/changeset/112014&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587229</commentid>
    <comment_count>8</comment_count>
    <who name="Gustavo Noronha (kov)">gustavo</who>
    <bug_when>2012-03-24 20:53:06 -0700</bug_when>
    <thetext>I rolled this patch out in r112019; it broke SnowLeopard, Chromium and GTK+ bots. I could not reproduce the problem locally.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587317</commentid>
    <comment_count>9</comment_count>
      <attachid>133651</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-25 11:52:42 -0700</bug_when>
    <thetext>Comment on attachment 133651
more testing, update w/ review feedback, fix child process issues

This patch appears to be hanging the cr-linux EWS bots.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587346</commentid>
    <comment_count>10</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-25 13:58:07 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (From update of attachment 133651 [details])
&gt; This patch appears to be hanging the cr-linux EWS bots.

Not surprising, given comment #8 :). The patch shouldn&apos;t have been r? to begin with.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587347</commentid>
    <comment_count>11</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-25 13:58:29 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I rolled this patch out in r112019; it broke SnowLeopard, Chromium and GTK+ bots. I could not reproduce the problem locally.

Very odd, given the testing I did locally. Thanks for rolling it out! I&apos;ll look into it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>587963</commentid>
    <comment_count>12</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 11:56:56 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I rolled this patch out in r112019; it broke SnowLeopard, Chromium and GTK+ bots. I could not reproduce the problem locally.

Ah, it&apos;s a Python 2.6/2.7 issue. Here&apos;s a sample failure:

http://build.chromium.org/p/chromium.webkit/builders/Webkit%20Mac10.6/builds/13982/steps/webkit_tests/logs/stdio

should be easy enough to fix ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588000</commentid>
    <comment_count>13</comment_count>
      <attachid>133867</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 12:33:22 -0700</bug_when>
    <thetext>Created attachment 133867
Patch w/ fix for python 2.6 compatibility.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588004</commentid>
    <comment_count>14</comment_count>
      <attachid>133867</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 12:35:23 -0700</bug_when>
    <thetext>Comment on attachment 133867
Patch w/ fix for python 2.6 compatibility.

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:93
&gt; +            if getattr(h, &apos;name&apos;, &apos;&apos;) == metered_stream.LOG_HANDLER_NAME:

Turns out that LogHandlers grow a .name property in 2.7, but don&apos;t have it in 2.6.

&gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:122
&gt; +        self.name = LOG_HANDLER_NAME

Fix is to s/self._name/self.name/ and then wrap the name check in getattr(), as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588005</commentid>
    <comment_count>15</comment_count>
      <attachid>133867</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 12:35:23 -0700</bug_when>
    <thetext>Comment on attachment 133867
Patch w/ fix for python 2.6 compatibility.

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

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/worker.py:93
&gt; +            if getattr(h, &apos;name&apos;, &apos;&apos;) == metered_stream.LOG_HANDLER_NAME:

Turns out that LogHandlers grow a .name property in 2.7, but don&apos;t have it in 2.6.

&gt; Tools/Scripts/webkitpy/layout_tests/views/metered_stream.py:122
&gt; +        self.name = LOG_HANDLER_NAME

Fix is to s/self._name/self.name/ and then wrap the name check in getattr(), as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>588011</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-03-26 12:41:09 -0700</bug_when>
    <thetext>Committed r112140: &lt;http://trac.webkit.org/changeset/112140&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133592</attachid>
            <date>2012-03-23 17:19:59 -0700</date>
            <delta_ts>2012-03-24 14:18:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-73846-20120323171958.patch</filename>
            <type>text/plain</type>
            <size>35790</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzY1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmMzNjliNWJkOTE3MTg4NzZlNmUzYzZmMjQwNzAxZDVi
YWVkYjZkOS4uYTJmYzY0ZWIwYjUzMGJlODhiZTQ5MGUxNTkwMzkxMTM3MmYzN2FiNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1
IEBACisyMDEyLTAzLTIzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIGNsZWFuIHVwIE5SV1QgbG9nZ2luZy9tZXRlcmluZywgYmUgbGVzcyB2ZXJib3NlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
dG90YWxseSByZXdyaXRlcyB0aGUgbWV0ZXJlZF9zdHJlYW0gbW9kdWxlIGFuZAorICAgICAgICBj
aGFuZ2VzIHRoZSB3YXkgaXQgYW5kIHRoZSBwcmludGluZyBtb2R1bGUgbm93IGludGVyYWN0IHdp
dGggdGhlCisgICAgICAgIGxvZ2dpbmcgc3Vic3lzdGVtLgorCisgICAgICAgIFRoZSBwcmludGlu
ZyBtb2R1bGUgYmVjb21lcyBhIGR1bWIgbGF5b3V0X3Rlc3RzLXNwZWNpZmljIHdyYXBwZXIgYXJv
dW5kCisgICAgICAgIHRoZSBtZXRlcmVkIHN0cmVhbS4gQWxsIG9mIHRoZSBpbnRlbGxpZ2VuY2Ug
b2YgaG93IGFuZCB3aGVuIHRvCisgICAgICAgIGFjdHVhbGx5IHdyaXRlIChvciBlcmFzZSkgbGlu
ZXMgYW5kIGhvdyB0aGluZ3MgaW50ZXJhY3Qgd2l0aAorICAgICAgICBsb2dnaW5nIG1vdmVzIGlu
dG8gdGhlIG1ldGVyZWQgc3RyZWFtLgorCisgICAgICAgIEFzIG9mIG5vdywgYW55dGhpbmcgd3Jp
dHRlbiB0byB0aGUgbWV0ZXJlZCBzdHJlYW0gKmJ5cGFzc2VzIHRoZQorICAgICAgICBsb2dnaW5n
IHN5c3RlbSouIElmIGEgbG9nZ2VyIGlzIHBhc3NlZCB0byB0aGUgbWV0ZXIgY29uc3RydWN0b3Is
CisgICAgICAgIHRoZSBtZXRlcmVkIHN0cmVhbSB3aWxsIGFsc28gYXR0YWNoIGEgbG9nIGhhbmRs
ZXIgc28gdGhhdCBhbGwKKyAgICAgICAgbWVzc2FnZXMgZmVkIHRvIHRoZSBsb2dnZXIgd2lsbCBh
bHNvIGJlIHdyaXR0ZW4gdG8gdGhlIG1ldGVyZWQKKyAgICAgICAgc3RyZWFtLiBUaGlzIGRldGFu
Z2xlcyB0aGUgbG9naWMgdGhhdCB1c2VkIHRvIGV4aXN0IHdoZXJlCisgICAgICAgIHNvbWV0aW1l
cyB0aGUgbWV0ZXIgd291bGQgd3JpdGUgdG8gdGhlIGxvZ2dlciBhbmQgc29tZXRpbWVzIHRoZQor
ICAgICAgICBsb2dnZXIgd291bGQgd3JpdGUgdG8gdGhlIG1ldGVyLgorCisgICAgICAgIEFsbCBv
ZiB0aGlzIG1ha2VzIHRoZSBsb2dpYyBnZW5lcmljIGFuZCByZXVzYWJsZSBmb3IKKyAgICAgICAg
dGVzdC13ZWJraXRweSAoY29taW5nIGluIGFub3RoZXIgcGF0Y2gpLiBJdCBhbHNvIGhlbHBzIGNs
YXJpZnkKKyAgICAgICAgd2hhdCB0aGUgbXlzdGVyaW91cyAiY29uZmlndXJlX2xvZ2dpbmciIHBh
cmFtZXRlciB0byB0aGUgcHJpbnRlcgorICAgICAgICBjb25zdHJ1Y3RvciB1c2VkIHRvIGRvICh0
aGF0IHBhcmFtZXRlciBpdHNlbGYgaXMgZ29uZSBub3csIGFuZAorICAgICAgICBieSBkZWZhdWx0
IHRoZSBwcmludGVyIGFuZCBtZXRlcmVkX3N0cmVhbSB3aWxsIG5vdCBldmVyIHRvdWNoCisgICAg
ICAgIHRoZSBsb2dnaW5nIHN5c3RlbTsgdGhpcyBtYWtlcyBhIGJ1bmNoIG9mIHRlc3RzIGxlc3Mg
ZnJhZ2lsZSkuCisKKyAgICAgICAgQWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgcHJvZHVjZSBubyB1
c2VyLXZpc2libGUgY2hhbmdlcy4KKworICAgICAgICBIb3dldmVyLCB0byBhbHNvIGZpeCB0aGUg
YnVnIGluIHF1ZXN0aW9uLCB3ZSBjaGFuZ2UgdGhlIG1lc3NhZ2UKKyAgICAgICAgZm9ybWF0IGlu
IC0tdmVyYm9zZSBtb2RlIHRvICVIOiVNOiVTLiVmcmFjICVwaWQgJW1lc3NhZ2UsCisgICAgICAg
IGVsaW1pbmF0aW5nIHRoZSBkYXRlLCBmaWxlOmxpbmVubywgYW5kIGxldmVsIHBhcmFtZXRlcnMu
IEkgYW0KKyAgICAgICAgbWFraW5nIHRoaXMgY2hhbmdlIGF0IHRoZSBzYW1lIHRpbWUgYmVjYXVz
ZSBpdCB3b3VsZCBiZQorICAgICAgICBkaWZmaWN1bHQgdG8gd3JpdGUgdGhpbmdzIGNvbnNpc3Rl
bnRseSBiZXR3ZWVuIHRoZSBsb2dzIGFuZCB0aGUKKyAgICAgICAgbWV0ZXJlZCBzdHJlYW0gaWYg
d2Ugd2VyZSBzdGlsbCBsb2dnaW5nIHRoZSBmaWxlOmxpbmVuby4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHk6
CisgICAgICAgICAgUmVtb3ZlIHRoZSBjb25maWd1cmVfbG9nZ2luZyBwYXJhbWV0ZXIKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHk6
CisgICAgICAgICAgVXNlIG1ldGVyZWQgc3RyZWFtIHRvIGNvbmZpZ3VyZSB0aGUgbG9nZ2luZyAo
d2UgZG9uJ3QgbmVlZCBhIHByaW50ZXIpLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgICAgUGFzcyBpbiB0aGUgcm9v
dCBsb2dnZXIgc28gdGhhdCBsb2cgbWVzc2FnZXMgYXJlIGZvcm1hdHRlZCBwcm9wZXJseS4KKyAg
ICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVh
bS5weToKKyAgICAgICAgICBjb21wbGV0ZSByZXdyaXRlIDopLgorICAgICAgICAqIFNjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5Ogor
ICAgICAgICAgIGNvbXBsZXRlIHJld3JpdGUgOikuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHk6CisgICAgICAgICAgbW92ZSB0aGUgbG9n
Z2luZyBjb25maWd1cmF0aW9uIGludG8gbWV0ZXJlZF9zdHJlYW0sIGFuZCBhbHNvCisgICAgICAg
ICAgbW92ZSB0aGUgIndoZW4gc2hvdWxkIEkgbG9nIHByb2dyZXNzIG1lc3NhZ2VzIiBpbnRvIG1l
dGVyZWQgc3RyZWFtLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Zp
ZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIHJlbW92ZSB0ZXN0cyB0aGF0IGFy
ZSBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9y
bWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAgIHJlbW92ZSB0aGUgY29u
ZmlndXJlX2xvZ2dpbmcgcGFyYW1ldGVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIHVw
ZGF0ZSB0aGUgdGVzdDsgc2luY2UgdGhlIHByaW50ZXIgbm8gbG9uZ2VyIHdyaXRlcyB0byB0aGUg
bG9nLAorICAgICAgICAgIHdlIG5lZWQgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIHRoZSBy
ZWd1bGFyX291dHB1dCBpbnN0ZWFkLgorICAgICAgICAgICh0ZXN0X3J1bl90ZXN0X3BhdXNlX2Jl
Zm9yZV90ZXN0aW5nKToKKwogMjAxMi0wMy0yMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyBibGFtZXMgdGhlIHdyb25n
IHRlc3QgZm9yIGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQpp
bmRleCBhNWZjODk4OTA4ODY1YTY0MWQyNGRmYjQyNTZiOTUxZmY3NmRhNWVjLi4xNTU0ZjY2YTcw
NGE0YjBlOTZiMmNlZjg0NTM1YTY3NWVjYWQwNTI2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXJfdW5pdHRlc3QucHkKQEAgLTIxNCw3ICsyMTQsNyBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1bml0
dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHBvcnQg
PSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9wdGlv
bnM9b3B0aW9ucykKICAgICAgICAgcnVuX3dlYmtpdF90ZXN0cy5fc2V0X3VwX2Rlcml2ZWRfb3B0
aW9ucyhwb3J0LCBvcHRpb25zKQotICAgICAgICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihw
b3J0LCBvcHRpb25zLCBTdHJpbmdJTy5TdHJpbmdJTygpLCBTdHJpbmdJTy5TdHJpbmdJTygpLCBj
b25maWd1cmVfbG9nZ2luZz1GYWxzZSkKKyAgICAgICAgcHJpbnRlciA9IHByaW50aW5nLlByaW50
ZXIocG9ydCwgb3B0aW9ucywgU3RyaW5nSU8uU3RyaW5nSU8oKSwgU3RyaW5nSU8uU3RyaW5nSU8o
KSkKICAgICAgICAgbWFuYWdlciA9IExvY2tDaGVja2luZ01hbmFnZXIocG9ydCwgb3B0aW9ucywg
cHJpbnRlcikKICAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3RzKGFyZ3MpCiAgICAgICAgIG1h
bmFnZXIucGFyc2VfZXhwZWN0YXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQppbmRleCAyMmMwYTVm
MDQyMzEwNWUzMDkzOGI4ZWYzNTI3ZGM2N2UyMDI5YWEyLi5kYjIwNjM3OGEwYTcyOWIyMmFmZjYw
Zjc2MTM3YmI0ZTU0YTY2YmZmIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyLnB5CkBAIC0zOCw3ICszOCw3IEBA
IGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9ydCBtYW5hZ2VyX3dv
cmtlcl9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzIGltcG9y
dCBzaW5nbGVfdGVzdF9ydW5uZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVs
cyBpbXBvcnQgdGVzdF9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBp
bXBvcnQgcHJpbnRpbmcKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBt
ZXRlcmVkX3N0cmVhbQogCiAKIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVfXykKQEAg
LTY1LDcgKzY1LDcgQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFj
dFdvcmtlcik6CiAgICAgICAgIHNlbGYuX2RyaXZlciA9IE5vbmUKICAgICAgICAgc2VsZi5fdGVz
dHNfcnVuX2ZpbGUgPSBOb25lCiAgICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxlbmFtZSA9IE5v
bmUKLSAgICAgICAgc2VsZi5fcHJpbnRlciA9IE5vbmUKKyAgICAgICAgc2VsZi5fbWV0ZXIgPSBO
b25lCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgc2VsZi5jbGVhbnVwKCkKQEAg
LTEwMCwxMyArMTAwLDE1IEBAIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJz
dHJhY3RXb3JrZXIpOgogCiAgICAgICAgICAgICAjIFRoZSB1bml4IG11bHRpcHJvY2Vzc2luZyBp
bXBsZW1lbnRhdGlvbiBjbG9uZXMgdGhlCiAgICAgICAgICAgICAjIGxvZyBoYW5kbGVyIGNvbmZp
Z3VyYXRpb24gaW50byB0aGUgY2hpbGQgcHJvY2Vzc2VzLAotICAgICAgICAgICAgIyBidXQgdGhl
IHdpbiBpbXBsZW1lbnRhdGlvbiBkb2Vzbid0LgotICAgICAgICAgICAgY29uZmlndXJlX2xvZ2dp
bmcgPSAoc3lzLnBsYXRmb3JtID09ICd3aW4zMicpCi0KLSAgICAgICAgICAgICMgRklYTUU6IFRo
aXMgd29uJ3Qgd29yayBpZiB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGxvZ2dpbmcKLSAgICAgICAg
ICAgICMgc29tZXdoZXJlIG90aGVyIHRoYW4gc3lzLnN0ZGVyciBhbmQgc3lzLnN0ZG91dCwgYnV0
IEknbSBub3Qgc3VyZQotICAgICAgICAgICAgIyBpZiB0aGlzIHdpbGwgYmUgYW4gaXNzdWUgaW4g
cHJhY3RpY2UuCi0gICAgICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihz
ZWxmLl9wb3J0LCBvcHRpb25zLCBzeXMuc3RkZXJyLCBzeXMuc3Rkb3V0LCBjb25maWd1cmVfbG9n
Z2luZykKKyAgICAgICAgICAgICMgYnV0IHRoZSB3aW4gaW1wbGVtZW50YXRpb24gZG9lc24ndCwg
c28gd2UgbmVlZCB0byBzZXQgaXQgdXAgaGVyZS4KKyAgICAgICAgICAgIGlmIHN5cy5wbGF0Zm9y
bSA9PSAnd2luMzInOgorICAgICAgICAgICAgICAgICMgRklYTUU6IFRoaXMgd29uJ3Qgd29yayBp
ZiB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGxvZ2dpbmcKKyAgICAgICAgICAgICAgICAjIHNvbWV3
aGVyZSBvdGhlciB0aGFuIHN5cy5zdGRlcnIsIGJ1dCBJJ20gbm90IHN1cmUKKyAgICAgICAgICAg
ICAgICAjIGlmIHRoaXMgd2lsbCBiZSBhbiBpc3N1ZSBpbiBwcmFjdGljZS4gQWxzbywgaXQgd291
bGQgYmUKKyAgICAgICAgICAgICAgICAjIG5pY2UgaWYgd2UgdHJhcHBlZCBhbGwgb2YgdGhlIG1l
c3NhZ2VzIGZvciBhIGdpdmVuIHRlc3QKKyAgICAgICAgICAgICAgICAjIGFuZCBzZW50IHRoZW0g
YmFjayBpbiBmaW5pc2hlZF90ZXN0KCkgcmF0aGVyIHRoYW4gbG9nZ2luZworICAgICAgICAgICAg
ICAgICMgdGhlbSB0byBzdGRlcnIuCisgICAgICAgICAgICAgICAgc2VsZi5fbWV0ZXIgPSBtZXRl
cmVkX3N0cmVhbS5NZXRlcmVkU3RyZWFtKHN5cy5zdGRlcnIsIG9wdGlvbnMudmVyYm9zZSwgbG9n
Z2VyPWxvZ2dpbmcuZ2V0TG9nZ2VyKCkpCiAKICAgICAgICAgc2VsZi5zYWZlX2luaXQoKQogCkBA
IC0xNTMsOSArMTU1LDkgQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0
cmFjdFdvcmtlcik6CiAgICAgICAgIGlmIHNlbGYuX3Rlc3RzX3J1bl9maWxlOgogICAgICAgICAg
ICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUuY2xvc2UoKQogICAgICAgICAgICAgc2VsZi5fdGVzdHNf
cnVuX2ZpbGUgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuX3ByaW50ZXI6Ci0gICAgICAgICAgICBz
ZWxmLl9wcmludGVyLmNsZWFudXAoKQotICAgICAgICAgICAgc2VsZi5fcHJpbnRlciA9IE5vbmUK
KyAgICAgICAgaWYgc2VsZi5fbWV0ZXI6CisgICAgICAgICAgICBzZWxmLl9tZXRlci5jbGVhbnVw
KCkKKyAgICAgICAgICAgIHNlbGYuX21ldGVyID0gTm9uZQogCiAgICAgZGVmIHRpbWVvdXQoc2Vs
ZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgICIiIkNvbXB1dGUgdGhlIGFwcHJvcHJpYXRlIHRpbWVv
dXQgdmFsdWUgZm9yIGEgdGVzdC4iIiIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGVjYTYyZTcxZTgyMmIx
OTNlYTQ3OTIxZDk2NDMwMjZmMTFlNzkzZjAuLjA2N2RlNTVhOGQ3NzRkNWQ2NzI0MzFjMDUxNWYz
MDdhNzA0NzdhOWMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQpAQCAtODUsNyArODUsNyBAQCBkZWYgbGludChw
b3J0LCBvcHRpb25zLCBleHBlY3RhdGlvbnNfY2xhc3MpOgogZGVmIHJ1bihwb3J0LCBvcHRpb25z
LCBhcmdzLCByZWd1bGFyX291dHB1dD1zeXMuc3RkZXJyLCBidWlsZGJvdF9vdXRwdXQ9c3lzLnN0
ZG91dCk6CiAgICAgd2FybmluZ3MgPSBfc2V0X3VwX2Rlcml2ZWRfb3B0aW9ucyhwb3J0LCBvcHRp
b25zKQogCi0gICAgcHJpbnRlciA9IHByaW50aW5nLlByaW50ZXIocG9ydCwgb3B0aW9ucywgcmVn
dWxhcl9vdXRwdXQsIGJ1aWxkYm90X291dHB1dCwgY29uZmlndXJlX2xvZ2dpbmc9VHJ1ZSkKKyAg
ICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihwb3J0LCBvcHRpb25zLCByZWd1bGFyX291dHB1
dCwgYnVpbGRib3Rfb3V0cHV0LCBsb2dnZXI9bG9nZ2luZy5nZXRMb2dnZXIoKSkKIAogICAgIGZv
ciB3YXJuaW5nIGluIHdhcm5pbmdzOgogICAgICAgICBfbG9nLndhcm5pbmcod2FybmluZykKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVy
ZWRfc3RyZWFtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3Mv
bWV0ZXJlZF9zdHJlYW0ucHkKaW5kZXggYjVjMjMzYjEwNmE3M2UwNGE2MzU0MDQzNGU1MmZkNTRh
NmRhYjliOS4uMzFmMjRjMmI5Y2Q4NGMxNDk2ZTdmZDJkMzBiNzdlZjRiYmE2ZWZmOCAxMDA2NDQK
LS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9z
dHJlYW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3Mv
bWV0ZXJlZF9zdHJlYW0ucHkKQEAgLTEsNSArMSw1IEBACiAjIS91c3IvYmluL2VudiBweXRob24K
LSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisj
IENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsNTggKzI3LDk5IEBACiAj
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiIKLVBhY2thZ2UgdGhhdCBpbXBsZW1l
bnRzIGEgc3RyZWFtIHdyYXBwZXIgdGhhdCBoYXMgJ21ldGVycycgYXMgd2VsbCBhcwotcmVndWxh
ciBvdXRwdXQuIEEgJ21ldGVyJyBpcyBhIHNpbmdsZSBsaW5lIG9mIHRleHQgdGhhdCBjYW4gYmUg
ZXJhc2VkCi1hbmQgcmV3cml0dGVuIHJlcGVhdGVkbHksIHdpdGhvdXQgcHJvZHVjaW5nIG11bHRp
cGxlIGxpbmVzIG9mIG91dHB1dC4gSXQKLWNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgZWZmZWN0cyBs
aWtlIHByb2dyZXNzIGJhcnMuCi0KLVRoaXMgcGFja2FnZSBzaG91bGQgb25seSBiZSBjYWxsZWQg
YnkgdGhlIHByaW50aW5nIG1vZHVsZSBpbiB0aGUgbGF5b3V0X3Rlc3RzCi1wYWNrYWdlLgotIiIi
Ci0KLQotY2xhc3MgTWV0ZXJlZFN0cmVhbToKLSAgICAiIiJUaGlzIGNsYXNzIGlzIGEgd3JhcHBl
ciBhcm91bmQgYSBzdHJlYW0gdGhhdCBhbGxvd3MgeW91IHRvIGltcGxlbWVudAotICAgIG1ldGVy
cyAocHJvZ3Jlc3MgYmFycywgZXRjLikuCi0KLSAgICBJdCBjYW4gYmUgdXNlZCBkaXJlY3RseSBh
cyBhIHN0cmVhbSwgYnkgY2FsbGluZyB3cml0ZSgpLCBidXQgYWxzbyBwcm92aWRlcwotICAgIGEg
bWV0aG9kIGNhbGxlZCB1cGRhdGUoKSB0aGF0IHdpbGwgb3ZlcndpdGUgcHJpb3IgdXBkYXRlcygp
LgotICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtKToKLSAgICAgICAgIiIi
Ci0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgc3RyZWFtOiBvdXRwdXQgc3RyZWFtIHRvIHdyaXRl
IHRvCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9zdHJlYW0gPSBzdHJlYW0KLSAgICAgICAg
c2VsZi5fZGlydHkgPSBGYWxzZQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZSA9ICIiCi0KLSAg
ICBkZWYgd3JpdGUoc2VsZiwgdHh0KToKLSAgICAgICAgIiIiV3JpdGUgdG8gdGhlIHN0cmVhbSwg
b3ZlcndyaXRpbmcgYW5kIHJlc2V0dGluZyB0aGUgbWV0ZXIuIiIiCi0KLSAgICAgICAgIyBUaGlz
IHJvdXRpbmUgaXMgY2FsbGVkIGJ5IHRoZSBsb2dnaW5nIGluZnJhc3RydWN0dXJlLCBhbmQKLSAg
ICAgICAgIyBtdXN0IG5vdCBjYWxsIGJhY2sgaW50byBsb2dnaW5nLiBJdCBpcyBub3QgYSBwdWJs
aWMgZnVuY3Rpb24uCi0gICAgICAgIHNlbGYuX292ZXJ3cml0ZSh0eHQpCi0gICAgICAgIHNlbGYu
X3Jlc2V0KCkKLQotICAgIGRlZiB1cGRhdGUoc2VsZiwgdHh0KToKLSAgICAgICAgIiIiV3JpdGUg
YSBtZXNzYWdlIHRoYXQgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSBzdWJzZXF1ZW50IHVwZGF0ZSgp
IG9yIHdyaXRlKCkgY2FsbHMuIiIiCi0gICAgICAgIHNlbGYuX292ZXJ3cml0ZSh0eHQpCi0KLSAg
ICBkZWYgX292ZXJ3cml0ZShzZWxmLCB0eHQpOgotICAgICAgICAjIFByaW50IHRoZSBuZWNlc3Nh
cnkgbnVtYmVyIG9mIGJhY2tzcGFjZXMgdG8gZXJhc2UgdGhlIHByZXZpb3VzCi0gICAgICAgICMg
bWVzc2FnZS4KLSAgICAgICAgaWYgbGVuKHNlbGYuX2xhc3RfdXBkYXRlKToKLSAgICAgICAgICAg
IHNlbGYuX3N0cmVhbS53cml0ZSgiXGIiICogbGVuKHNlbGYuX2xhc3RfdXBkYXRlKSArCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICogbGVuKHNlbGYuX2xhc3RfdXBkYXRlKSAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxiIiAqIGxlbihzZWxmLl9sYXN0X3Vw
ZGF0ZSkpCi0gICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZSh0eHQpCi0gICAgICAgIGxhc3RfbmV3
bGluZSA9IHR4dC5yZmluZCgiXG4iKQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZSA9IHR4dFso
bGFzdF9uZXdsaW5lICsgMSk6XQotICAgICAgICBzZWxmLl9kaXJ0eSA9IFRydWUKLQotICAgIGRl
ZiBfcmVzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2RpcnR5ID0gRmFsc2UKLSAgICAgICAgc2Vs
Zi5fbGFzdF91cGRhdGUgPSAnJworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1wb3J0IHN5
cworaW1wb3J0IHRpbWUKKworCitjbGFzcyBNZXRlcmVkU3RyZWFtKG9iamVjdCk6CisgICAgIiIi
CisgICAgVGhpcyBjbGFzcyBpbXBsZW1lbnRzIGEgc3RyZWFtIHdyYXBwZXIgdGhhdCBoYXMgJ21l
dGVycycgYXMgd2VsbCBhcworICAgIHJlZ3VsYXIgb3V0cHV0LiBBICdtZXRlcicgaXMgYSBzaW5n
bGUgbGluZSBvZiB0ZXh0IHRoYXQgY2FuIGJlIGVyYXNlZAorICAgIGFuZCByZXdyaXR0ZW4gcmVw
ZWF0ZWRseSwgd2l0aG91dCBwcm9kdWNpbmcgbXVsdGlwbGUgbGluZXMgb2Ygb3V0cHV0LiBJdAor
ICAgIGNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgZWZmZWN0cyBsaWtlIHByb2dyZXNzIGJhcnMuCisg
ICAgIiIiCisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9lcmFzdXJlKHR4dCk6CisgICAg
ICAgIG51bV9jaGFycyA9IGxlbih0eHQpCisgICAgICAgIHJldHVybiAnXGInICogbnVtX2NoYXJz
ICsgJyAnICogbnVtX2NoYXJzICsgJ1xiJyAqIG51bV9jaGFycworCisgICAgQHN0YXRpY21ldGhv
ZAorICAgIGRlZiBfbmV3bGluZSh0eHQpOgorICAgICAgICByZXR1cm4gdHh0IGlmIHR4dC5lbmRz
d2l0aCgnXG4nKSBlbHNlIHR4dCArICdcbicKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdHJl
YW09Tm9uZSwgdmVyYm9zZT1GYWxzZSwgbG9nZ2VyPU5vbmUsIHRpbWVfZm49Tm9uZSwgcGlkPU5v
bmUpOgorICAgICAgICBzZWxmLl9zdHJlYW0gPSBzdHJlYW0gb3Igc3lzLnN0ZGVycgorICAgICAg
ICBzZWxmLl92ZXJib3NlID0gdmVyYm9zZQorICAgICAgICBzZWxmLl90aW1lX2ZuID0gdGltZV9m
biBvciB0aW1lLnRpbWUKKyAgICAgICAgc2VsZi5fcGlkID0gcGlkIG9yIG9zLmdldHBpZCgpCisK
KyAgICAgICAgc2VsZi5faXNhdHR5ID0gc2VsZi5fc3RyZWFtLmlzYXR0eSgpCisgICAgICAgIHNl
bGYuX2VyYXNpbmcgPSBzZWxmLl9pc2F0dHkgYW5kIG5vdCB2ZXJib3NlCisgICAgICAgIHNlbGYu
X2xhc3RfcGFydGlhbF9saW5lID0gJycKKyAgICAgICAgc2VsZi5fbGFzdF93cml0ZV90aW1lID0g
MC4wCisgICAgICAgIHNlbGYuX3Byb2dyZXNzX2RlbGF5X2luX3NlY3MgPSAwLjAzMyBpZiBzZWxm
Ll9lcmFzaW5nIGVsc2UgMTAuMAorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGxvZ2dlcgorICAg
ICAgICBzZWxmLl9sb2dfaGFuZGxlciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fbG9nZ2VyOgor
ICAgICAgICAgICAgc2VsZi5fbG9nX2hhbmRsZXIgPSBfTG9nSGFuZGxlcihzZWxmKQorICAgICAg
ICAgICAgc2VsZi5fbG9nX2hhbmRsZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiB2ZXJib3Nl
IGVsc2UgbG9nZ2luZy5JTkZPKQorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLmFkZEhhbmRsZXIo
c2VsZi5fbG9nX2hhbmRsZXIpCisKKyAgICBkZWYgX19kZWxfXyhzZWxmKToKKyAgICAgICAgc2Vs
Zi5jbGVhbnVwKCkKKworICAgIGRlZiBjbGVhbnVwKHNlbGYpOgorICAgICAgICAiIiJSZXN0b3Jl
IC8gY2xlYW4gdXAgYW55IGNoYW5nZXMgdG8gdGhlIGxvZ2dpbmcgY29uZmlndXJhdGlvbi4iIiIK
KyAgICAgICAgaWYgc2VsZi5fbG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5fbG9nZ2VyLnJlbW92
ZUhhbmRsZXIoc2VsZi5fbG9nX2hhbmRsZXIpCisgICAgICAgICAgICBzZWxmLl9sb2dfaGFuZGxl
ciA9IE5vbmUKKworICAgIGRlZiBwcm9ncmVzcyhzZWxmLCB0eHQpOgorICAgICAgICAiIiJXcml0
ZXMgYW4gb3ZlcndyaXRhYmxlIG1lc3NhZ2UgdG8gdGhlIHN0cmVhbSwgYnV0IG9ubHkgaWYgZW5v
dWdoIHRpbWUgaGFzIHBhc3NlZCBzaW5jZSB0aGUgbGFzdCB3cml0ZSwgZXJhc2luZyBhIHByZXZp
b3VzIG92ZXJ3cml0YWJsZSBtZXNzYWdlLCBpZiBhbnkuIiIiCisgICAgICAgIG5vdyA9IHNlbGYu
X3RpbWVfZm4oKQorICAgICAgICBpZiBub3cgLSBzZWxmLl9sYXN0X3dyaXRlX3RpbWUgPj0gc2Vs
Zi5fcHJvZ3Jlc3NfZGVsYXlfaW5fc2VjczoKKyAgICAgICAgICAgIHNlbGYudXBkYXRlKHR4dCwg
bm93KQorCisgICAgZGVmIHVwZGF0ZShzZWxmLCB0eHQsIG5vdz1Ob25lKToKKyAgICAgICAgIiIi
VW5jb25kaXRvbmFsbHkgd3JpdGVzIGFuIG92ZXJ3cml0YWJsZSBtZXNzYWdlIHRvIHRoZSBzdHJl
YW0sIGVyYXNpbmcgYSBwcmV2aW91cyBvdmVyd3JpdGFibGUgbWVzc2FnZSwgaWYgYW55LiIiIgor
ICAgICAgICBzZWxmLndyaXRlKHR4dCwgbm93KQorICAgICAgICBpZiBzZWxmLl9lcmFzaW5nOgor
ICAgICAgICAgICAgc2VsZi5fbGFzdF9wYXJ0aWFsX2xpbmUgPSB0eHRbdHh0LnJmaW5kKCdcbicp
ICsgMTpdCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgdHh0LCBub3c9Tm9uZSk6CisgICAgICAgICIi
IldyaXRlIHRoZSBtZXNzYWdlIHRvIHRoZSBzdHJlYW0sIGVyYXNpbmcgYSBwcmV2aW91cyBvdmVy
d3JpdGFibGUgbWVzc2FnZSBpZiBhbnkuIiIiCisgICAgICAgIG5vdyA9IG5vdyBvciBzZWxmLl90
aW1lX2ZuKCkKKyAgICAgICAgaWYgc2VsZi5fbGFzdF9wYXJ0aWFsX2xpbmU6CisgICAgICAgICAg
ICBzZWxmLl9lcmFzZV9sYXN0X3BhcnRpYWxfbGluZSgpCisgICAgICAgIGlmIHNlbGYuX3ZlcmJv
c2U6CisgICAgICAgICAgICBub3dfdHVwbGUgPSB0aW1lLmxvY2FsdGltZShub3cpCisgICAgICAg
ICAgICBtc2cgPSAnJTAyZDolMDJkOiUwMmQuJTAzZCAlZCAlcycgJSAobm93X3R1cGxlLnRtX2hv
dXIsIG5vd190dXBsZS50bV9taW4sIG5vd190dXBsZS50bV9zZWMsIGludCgobm93ICogMTAwMCkg
JSAxMDAwKSwgc2VsZi5fcGlkLCBzZWxmLl9uZXdsaW5lKHR4dCkpCisgICAgICAgIGVsaWYgc2Vs
Zi5faXNhdHR5OgorICAgICAgICAgICAgbXNnID0gdHh0CisgICAgICAgIGVsc2U6CisgICAgICAg
ICAgICBtc2cgPSBzZWxmLl9uZXdsaW5lKHR4dCkKKworICAgICAgICBzZWxmLl9zdHJlYW0ud3Jp
dGUobXNnKQorICAgICAgICBzZWxmLl9sYXN0X3dyaXRlX3RpbWUgPSBub3cKKworICAgIGRlZiB3
cml0ZWxuKHNlbGYsIHR4dCwgbm93PU5vbmUpOgorICAgICAgICAiIiJXcml0ZSB0aGUgbWVzc2Fn
ZSB0byB0aGUgc3RyZWFtLCBuZXdsaW5lLXRlcm1pbmF0aW5nIGl0IGlmIG5lY2Vzc2FyeSwgYW5k
IGVyYXNpbmcgYSBwcmV2aW91cyBvdmVyd3JpdGFibGUgbWVzc2FnZSwgaWYgYW55LiIiIgorICAg
ICAgICBzZWxmLndyaXRlKHNlbGYuX25ld2xpbmUodHh0KSwgbm93KQorCisgICAgZGVmIF9lcmFz
ZV9sYXN0X3BhcnRpYWxfbGluZShzZWxmKToKKyAgICAgICAgbnVtX2NoYXJzID0gbGVuKHNlbGYu
X2xhc3RfcGFydGlhbF9saW5lKQorICAgICAgICBzZWxmLl9zdHJlYW0ud3JpdGUoc2VsZi5fZXJh
c3VyZShzZWxmLl9sYXN0X3BhcnRpYWxfbGluZSkpCisgICAgICAgIHNlbGYuX2xhc3RfcGFydGlh
bF9saW5lID0gJycKKworCitjbGFzcyBfTG9nSGFuZGxlcihsb2dnaW5nLkhhbmRsZXIpOgorICAg
IGRlZiBfX2luaXRfXyhzZWxmLCBtZXRlcik6CisgICAgICAgIGxvZ2dpbmcuSGFuZGxlci5fX2lu
aXRfXyhzZWxmKQorICAgICAgICBzZWxmLl9tZXRlciA9IG1ldGVyCisKKyAgICBkZWYgZW1pdChz
ZWxmLCByZWNvcmQpOgorICAgICAgICBzZWxmLl9tZXRlci53cml0ZWxuKHJlY29yZC5tc2csIHJl
Y29yZC5jcmVhdGVkKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQppbmRl
eCAzNTljZmNmNjBmMTM5MzQzMGRiY2QzYWYxYzdiMTA5MmRlZGQxMzI5Li5mNDI2ZWI0YmQ5ZTBk
Zjg3YjU1Yjc5ZWQ0ZmZkMDIxMzViNDNlNmIzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVhbV91bml0dGVzdC5weQorKysg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0cmVh
bV91bml0dGVzdC5weQpAQCAtMSw1ICsxLDUgQEAKICMhL3Vzci9iaW4vcHl0aG9uCi0jIENvcHly
aWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmln
aHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMg
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI3LDU1ICsyNywxMTYgQEAKICMgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKK2ltcG9ydCBsb2dnaW5nCitpbXBvcnQgcmUKIGltcG9y
dCBTdHJpbmdJTwogaW1wb3J0IHVuaXR0ZXN0CiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3Rz
LnZpZXdzLm1ldGVyZWRfc3RyZWFtIGltcG9ydCBNZXRlcmVkU3RyZWFtCiAKIAotY2xhc3MgVGVz
dE1ldGVyZWRTdHJlYW0odW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiB0ZXN0X3JlZ3VsYXIo
c2VsZik6Ci0gICAgICAgIGEgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgICAgIG0gPSBNZXRl
cmVkU3RyZWFtKGEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoYS5nZXR2YWx1ZSgpKQotCi0g
ICAgICAgICMgYmFzaWMgdGVzdAotICAgICAgICBtLndyaXRlKCJmb28iKQotICAgICAgICBleHAg
PSBbJ2ZvbyddCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGEuYnVmbGlzdCwgZXhwKQotCi0g
ICAgICAgICMgbm93IGNoZWNrIHRoYXQgYSBzZWNvbmQgd3JpdGUoKSBkb2VzIG5vdCBvdmVyd3Jp
dGUgdGhlIGZpcnN0LgotICAgICAgICBtLndyaXRlKCJiYXIiKQotICAgICAgICBleHAuYXBwZW5k
KCdiYXInKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3QsIGV4cCkKLQotICAg
ICAgICBtLnVwZGF0ZSgiYmF0dGVyIikKLSAgICAgICAgZXhwLmFwcGVuZCgnYmF0dGVyJykKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYS5idWZsaXN0LCBleHApCi0KLSAgICAgICAgIyBUaGUg
bmV4dCB1cGRhdGUoKSBzaG91bGQgb3ZlcndyaXRlIHRoZSBsYXN0ZSB1cGRhdGUoKSBidXQgbm90
IHRoZQotICAgICAgICAjIG90aGVyIHRleHQuIE5vdGUgdGhhdCB0aGUgY3Vyc29yIGlzIGVmZmVj
dGl2ZWx5IHBvc2l0aW9uZWQgYXQgdGhlCi0gICAgICAgICMgZW5kIG9mICdmb28nLCBldmVuIHRo
b3VnaCB3ZSBoYWQgdG8gZXJhc2UgdGhyZWUgbW9yZSBjaGFyYWN0ZXJzLgotICAgICAgICBtLnVw
ZGF0ZSgiZm9vIikKLSAgICAgICAgZXhwLmFwcGVuZCgnXGJcYlxiXGJcYlxiICAgICAgXGJcYlxi
XGJcYlxiJykKLSAgICAgICAgZXhwLmFwcGVuZCgnZm9vJykKLSAgICAgICAgc2VsZi5hc3NlcnRF
cXVhbHMoYS5idWZsaXN0LCBleHApCi0KLSAgICAgICAgIyBub3cgY2hlY2sgdGhhdCBhIHdyaXRl
KCkgZG9lcyBvdmVyd3JpdGUgdGhlIHVwZGF0ZQotICAgICAgICBtLndyaXRlKCJmb28iKQotICAg
ICAgICBleHAuYXBwZW5kKCdcYlxiXGIgICBcYlxiXGInKQotICAgICAgICBleHAuYXBwZW5kKCdm
b28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3QsIGV4cCkKLQotICAgICAg
ICAjIE5vdyB0ZXN0IHRoYXQgd2Ugb25seSBiYWNrIHVwIHRvIHRoZSBtb3N0IHJlY2VudCBuZXds
aW5lLgotCi0gICAgICAgICMgTm90ZSBhbHNvIHRoYXQgd2UgZG8gbm90IGJhY2sgdXAgdG8gZXJh
c2UgdGhlIG1vc3QgcmVjZW50IHdyaXRlKCksCi0gICAgICAgICMgaS5lLiwgd3JpdGUoKXMgZG8g
bm90IGdldCBlcmFzZWQuCi0gICAgICAgIGEgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgICAg
IG0gPSBNZXRlcmVkU3RyZWFtKGEpCi0gICAgICAgIG0udXBkYXRlKCJmb29cbmJhciIpCi0gICAg
ICAgIG0udXBkYXRlKCJiYXoiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3Qs
IFsnZm9vXG5iYXInLCAnXGJcYlxiICAgXGJcYlxiJywgJ2JheiddKQorY2xhc3MgUmVndWxhclRl
c3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHZlcmJvc2UgPSBGYWxzZQorICAgIGlzYXR0eSA9
IEZhbHNlCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc3RyZWFtID0gU3Ry
aW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLmJ1Zmxpc3QgPSBzZWxmLnN0cmVhbS5idWZs
aXN0CisgICAgICAgIHNlbGYuc3RyZWFtLmlzYXR0eSA9IGxhbWJkYTogc2VsZi5pc2F0dHkKKwor
ICAgICAgICAjIGNvbmZpZ3VyZSBhIGxvZ2dlciB0byB0ZXN0IHRoYXQgbG9nIGNhbGxzIGRvIG5v
cm1hbGx5IGdldCBpbmNsdWRlZC4KKyAgICAgICAgc2VsZi5sb2dnZXIgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKKyAgICAgICAgc2VsZi5sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJV
RykKKyAgICAgICAgc2VsZi5sb2dnZXIucHJvcGFnYXRlID0gRmFsc2UKKworICAgICAgICAjIGFk
ZCBhIGR1bW15IHRpbWUgY291bnRlciBmb3IgYSBkZWZhdWx0IGJlaGF2aW9yLgorICAgICAgICBz
ZWxmLnRpbWVzID0gcmFuZ2UoMTApCisKKyAgICAgICAgc2VsZi5tZXRlciA9IE1ldGVyZWRTdHJl
YW0oc2VsZi5zdHJlYW0sIHNlbGYudmVyYm9zZSwgc2VsZi5sb2dnZXIsIHNlbGYudGltZV9mbiwg
ODY3NSkKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5tZXRlcjoK
KyAgICAgICAgICAgIHNlbGYubWV0ZXIuY2xlYW51cCgpCisgICAgICAgICAgICBzZWxmLm1ldGVy
ID0gTm9uZQorCisgICAgZGVmIHRpbWVfZm4oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLnRp
bWVzLnBvcCgwKQorCisgICAgZGVmIHRlc3RfbG9nZ2luZ19ub3RfaW5jbHVkZWQoc2VsZik6Cisg
ICAgICAgICMgVGhpcyB0ZXN0cyB0aGF0IGlmIHdlIGRvbid0IGhhbmQgYSBsb2dnZXIgdG8gdGhl
IE1ldGVyZWRTdHJlYW0sCisgICAgICAgICMgbm90aGluZyBpcyBsb2dnZWQuCisgICAgICAgIGxv
Z2dpbmdfc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBoYW5kbGVyID0gbG9n
Z2luZy5TdHJlYW1IYW5kbGVyKGxvZ2dpbmdfc3RyZWFtKQorICAgICAgICByb290X2xvZ2dlciA9
IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkKKyAgICAgICAgb3JpZ19sZXZlbCA9IHJvb3RfbG9nZ2VyLmxl
dmVsCisgICAgICAgIHJvb3RfbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAgICAgICAgcm9v
dF9sb2dnZXIuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRykKKyAgICAgICAgdHJ5OgorICAgICAgICAg
ICAgc2VsZi5tZXRlciA9IE1ldGVyZWRTdHJlYW0oc2VsZi5zdHJlYW0sIHNlbGYudmVyYm9zZSwg
Tm9uZSwgc2VsZi50aW1lX2ZuLCA4Njc1KQorICAgICAgICAgICAgc2VsZi5tZXRlci5wcm9ncmVz
cygnZm9vJykKKyAgICAgICAgICAgIHNlbGYubWV0ZXIudXBkYXRlKCdiYXInKQorICAgICAgICAg
ICAgc2VsZi5tZXRlci53cml0ZSgnYmF6JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGxvZ2dpbmdfc3RyZWFtLmJ1Zmxpc3QsIFtdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgcm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQorICAgICAgICAgICAgcm9vdF9s
b2dnZXIuc2V0TGV2ZWwob3JpZ19sZXZlbCkKKworICAgIGRlZiBfYmFzaWMoc2VsZiwgdGltZXMp
OgorICAgICAgICBzZWxmLnRpbWVzID0gdGltZXMKKyAgICAgICAgc2VsZi5tZXRlci51cGRhdGUo
J2ZvbycpCisgICAgICAgIHNlbGYubWV0ZXIudXBkYXRlKCdiYXInKQorICAgICAgICBzZWxmLm1l
dGVyLnByb2dyZXNzKCdiYXonKQorICAgICAgICBzZWxmLm1ldGVyLnByb2dyZXNzKCdiYXogMicp
CisgICAgICAgIHNlbGYubWV0ZXIud3JpdGVsbignZG9uZScpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKHNlbGYudGltZXMsIFtdKQorICAgICAgICByZXR1cm4gc2VsZi5idWZsaXN0CisKKyAg
ICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgYnVmbGlzdCA9IHNlbGYuX2Jhc2ljKFsw
LCAxLCAyLCAxMywgMTRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWZsaXN0LCBbJ2Zv
b1xuJywgJ2JhclxuJywgJ2JheiAyXG4nLCAnZG9uZVxuJ10pCisKKyAgICBkZWYgX2xvZ19hZnRl
cl91cGRhdGUoc2VsZik6CisgICAgICAgIHNlbGYubWV0ZXIudXBkYXRlKCdmb28nKQorICAgICAg
ICBzZWxmLmxvZ2dlci5pbmZvKCdiYXInKQorICAgICAgICByZXR1cm4gc2VsZi5idWZsaXN0CisK
KyAgICBkZWYgdGVzdF9sb2dfYWZ0ZXJfdXBkYXRlKHNlbGYpOgorICAgICAgICBidWZsaXN0ID0g
c2VsZi5fbG9nX2FmdGVyX3VwZGF0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJ1Zmxp
c3QsIFsnZm9vXG4nLCAnYmFyXG4nXSkKKworCitjbGFzcyBUdHlUZXN0KFJlZ3VsYXJUZXN0KToK
KyAgICB2ZXJib3NlID0gRmFsc2UKKyAgICBpc2F0dHkgPSBUcnVlCisKKyAgICBkZWYgdGVzdF9i
YXNpYyhzZWxmKToKKyAgICAgICAgYnVmbGlzdCA9IHNlbGYuX2Jhc2ljKFswLCAxLCAxLjAyLCAx
LjA0LCAyXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVmbGlzdCwgWydmb28nLAorICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1ldGVyZWRTdHJlYW0uX2VyYXN1cmUo
J2ZvbycpLCAnYmFyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRl
cmVkU3RyZWFtLl9lcmFzdXJlKCdiYXInKSwgJ2JheiAyJywKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBNZXRlcmVkU3RyZWFtLl9lcmFzdXJlKCdiYXogMicpLCAnZG9uZVxu
J10pCisKKyAgICBkZWYgdGVzdF9sb2dfYWZ0ZXJfdXBkYXRlKHNlbGYpOgorICAgICAgICBidWZs
aXN0ID0gc2VsZi5fbG9nX2FmdGVyX3VwZGF0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGJ1Zmxpc3QsIFsnZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBN
ZXRlcmVkU3RyZWFtLl9lcmFzdXJlKCdmb28nKSwgJ2JhclxuJ10pCisKKworY2xhc3MgVmVyYm9z
ZVRlc3QoUmVndWxhclRlc3QpOgorICAgIGlzYXR0eSA9IEZhbHNlCisgICAgdmVyYm9zZSA9IFRy
dWUKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBidWZsaXN0ID0gc2VsZi5f
YmFzaWMoWzAsIDEsIDIuMSwgMTMsIDE0LjEyMzRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhidWZsaXN0LCBbJzE2OjAwOjAwLjAwMCA4Njc1IGZvb1xuJywgJzE2OjAwOjAxLjAwMCA4Njc1
IGJhclxuJywgJzE2OjAwOjEzLjAwMCA4Njc1IGJheiAyXG4nLCAnMTY6MDA6MTQuMTIzIDg2NzUg
ZG9uZVxuJ10pCisKKyAgICBkZWYgdGVzdF9sb2dfYWZ0ZXJfdXBkYXRlKHNlbGYpOgorICAgICAg
ICBidWZsaXN0ID0gc2VsZi5fbG9nX2FmdGVyX3VwZGF0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGJ1Zmxpc3RbMF0sICcxNjowMDowMC4wMDAgODY3NSBmb29cbicpCisKKyAgICAgICAg
IyBUaGUgc2Vjb25kIGFyZ3VtZW50IHNob3VsZCBoYXZlIGEgcmVhbCB0aW1lc3RhbXAgYW5kIHBp
ZCwgc28gd2UganVzdCBjaGVjayB0aGUgZm9ybWF0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFs
cyhsZW4oYnVmbGlzdCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnXGRc
ZDpcZFxkOlxkXGQuXGRcZFxkIFxkKyBiYXJcbicsIGJ1Zmxpc3RbMV0pKQogCiAKIGlmIF9fbmFt
ZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5CmluZGV4IDc1MGM0OGRmOWUzMDk1MzQ2MDJhODg1
MDc4NmMzMzEwM2M4ZjBhNjcuLmVkZjE5NTljODUzZWZmNTg1N2JiYmM0ZDY2MWVlM2NlY2VjN2E4
NzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L3ByaW50aW5nLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Zp
ZXdzL3ByaW50aW5nLnB5CkBAIC0xLDUgKzEsNSBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0j
IENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBD
b3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI5LDIxICsyOSwxMyBAQAogCiAi
IiJQYWNrYWdlIHRoYXQgaGFuZGxlcyBub24tZGVidWcsIG5vbi1maWxlIG91dHB1dCBmb3IgcnVu
LXdlYmtpdC10ZXN0cy4iIiIKIAotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQotaW1w
b3J0IHRpbWUKIAogZnJvbSB3ZWJraXRweS5jb21tb24ubmV0IGltcG9ydCByZXN1bHRzanNvbnBh
cnNlcgotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1w
b3J0IE1ldGVyZWRTdHJlYW0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0
X2V4cGVjdGF0aW9ucyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9ucwotCi0KLV9sb2cgPSBsb2dnaW5n
LmdldExvZ2dlcihfX25hbWVfXykKLQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3Mu
bWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0KIAogTlVNX1NMT1dfVEVTVFNfVE9f
TE9HID0gMTAKLUZBU1RfVVBEQVRFU19TRUNPTkRTID0gMC4wMwotU0xPV19VUERBVEVTX1NFQ09O
RFMgPSAxMC4wCiAKIFBSSU5UX0RFRkFVTFQgPSAibWlzYyxvbmUtbGluZS1wcm9ncmVzcyxvbmUt
bGluZS1zdW1tYXJ5LHVuZXhwZWN0ZWQsdW5leHBlY3RlZC1yZXN1bHRzLHVwZGF0ZXMiCiBQUklO
VF9FVkVSWVRISU5HID0gImFjdHVhbCxjb25maWcsZXhwZWN0ZWQsbWlzYyxvbmUtbGluZS1wcm9n
cmVzcyxvbmUtbGluZS1zdW1tYXJ5LHNsb3dlc3QsdGltaW5nLHVuZXhwZWN0ZWQsdW5leHBlY3Rl
ZC1yZXN1bHRzLHVwZGF0ZXMiCkBAIC0xNTQsMjcgKzE0Niw2IEBAIGRlZiBwYXJzZV9wcmludF9v
cHRpb25zKHByaW50X29wdGlvbnMsIHZlcmJvc2UpOgogICAgIHJldHVybiBzd2l0Y2hlcwogCiAK
LWRlZiBfY29uZmlndXJlX2xvZ2dpbmcoc3RyZWFtLCB2ZXJib3NlKToKLSAgICBsb2dfZm10ID0g
JyUobWVzc2FnZSlzJwotICAgIGxvZ19kYXRlZm10ID0gJyV5JW0lZCAlSDolTTolUycKLSAgICBs
b2dfbGV2ZWwgPSBsb2dnaW5nLklORk8KLSAgICBpZiB2ZXJib3NlOgotICAgICAgICBsb2dfZm10
ID0gJyUoYXNjdGltZSlzICUocHJvY2VzcylkICUoZmlsZW5hbWUpczolKGxpbmVubylkICUobGV2
ZWxuYW1lKXMgJShtZXNzYWdlKXMnCi0gICAgICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcK
LQotICAgIHJvb3QgPSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAgaGFuZGxlciA9IGxvZ2dpbmcu
U3RyZWFtSGFuZGxlcihzdHJlYW0pCi0gICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5G
b3JtYXR0ZXIobG9nX2ZtdCwgTm9uZSkpCi0gICAgcm9vdC5hZGRIYW5kbGVyKGhhbmRsZXIpCi0g
ICAgcm9vdC5zZXRMZXZlbChsb2dfbGV2ZWwpCi0gICAgcmV0dXJuIGhhbmRsZXIKLQotCi1kZWYg
X3Jlc3RvcmVfbG9nZ2luZyhoYW5kbGVyX3RvX3JlbW92ZSk6Ci0gICAgcm9vdCA9IGxvZ2dpbmcu
Z2V0TG9nZ2VyKCkKLSAgICByb290LmhhbmRsZXJzLnJlbW92ZShoYW5kbGVyX3RvX3JlbW92ZSkK
LQotCiBjbGFzcyBQcmludGVyKG9iamVjdCk6CiAgICAgIiIiQ2xhc3MgaGFuZGxpbmcgYWxsIG5v
bi1kZWJ1Zy1sb2dnaW5nIHByaW50aW5nIGRvbmUgYnkgcnVuLXdlYmtpdC10ZXN0cy4KIApAQCAt
MTg3LDcgKzE1OCw3IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKIAogICAgIEJ5IGRlZmF1bHQg
dGhlIGJ1aWxkYm90LXBhcnNlZCBjb2RlIGdldHMgbG9nZ2VkIHRvIHN0ZG91dCwgYW5kIHJlZ3Vs
YXIKICAgICBvdXRwdXQgZ2V0cyBsb2dnZWQgdG8gc3RkZXJyLiIiIgotICAgIGRlZiBfX2luaXRf
XyhzZWxmLCBwb3J0LCBvcHRpb25zLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0LCBj
b25maWd1cmVfbG9nZ2luZyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMs
IHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQsIGxvZ2dlcj1Ob25lKToKICAgICAgICAg
IiIiCiAgICAgICAgIEFyZ3MKICAgICAgICAgICBwb3J0ICAgICAgICAgICAgICAgaW50ZXJmYWNl
IHRvIHBvcnQtc3BlY2lmaWMgcm91dGluZXMKQEAgLTE5NiwzNyArMTY3LDE2IEBAIGNsYXNzIFBy
aW50ZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHdy
aXR0ZW4KICAgICAgICAgICBidWlsZGJvdF9vdXRwdXQgICAgc3RyZWFtIHRvIHdoaWNoIG91dHB1
dCBpbnRlbmRlZCB0byBiZSByZWFkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRo
ZSBidWlsZGJvdHMgKGFuZCBodW1hbnMpIHNob3VsZCBiZSB3cml0dGVuCi0gICAgICAgICAgY29u
ZmlndXJlX2xvZ2dpZ24gIFdoZXRoZXIgYSBsb2dnaW5nIGhhbmRsZXIgc2hvdWxkIGJlIHJlZ2lz
dGVyZWQKLQorICAgICAgICAgIGxvZ2dlciAgICAgICAgICAgICBvcHRpb25hbCBsb2dnZXIgdG8g
aW50ZWdyYXRlIGludG8gdGhlIHN0cmVhbS4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX3Bv
cnQgPSBwb3J0CiAgICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYu
X3N0cmVhbSA9IHJlZ3VsYXJfb3V0cHV0CiAgICAgICAgIHNlbGYuX2J1aWxkYm90X3N0cmVhbSA9
IGJ1aWxkYm90X291dHB1dAotICAgICAgICBzZWxmLl9tZXRlciA9IE5vbmUKLQotICAgICAgICAj
IFRoZXNlIGFyZSB1c2VkIGZvciAtLXByaW50IG9uZS1saW5lLXByb2dyZXNzCi0gICAgICAgIHNl
bGYuX2xhc3RfcmVtYWluaW5nID0gTm9uZQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZV90aW1l
ID0gTm9uZQotCisgICAgICAgIHNlbGYuX21ldGVyID0gTWV0ZXJlZFN0cmVhbShyZWd1bGFyX291
dHB1dCwgb3B0aW9ucy52ZXJib3NlLCBsb2dnZXI9bG9nZ2VyKQogICAgICAgICBzZWxmLnN3aXRj
aGVzID0gcGFyc2VfcHJpbnRfb3B0aW9ucyhvcHRpb25zLnByaW50X29wdGlvbnMsIG9wdGlvbnMu
dmVyYm9zZSkKIAotICAgICAgICBzZWxmLl9sb2dnaW5nX2hhbmRsZXIgPSBOb25lCi0gICAgICAg
IGlmIHNlbGYuX3N0cmVhbS5pc2F0dHkoKSBhbmQgbm90IG9wdGlvbnMudmVyYm9zZToKLSAgICAg
ICAgICAgIHNlbGYuX3VwZGF0ZV9pbnRlcnZhbF9zZWNvbmRzID0gRkFTVF9VUERBVEVTX1NFQ09O
RFMKLSAgICAgICAgICAgIHNlbGYuX21ldGVyID0gTWV0ZXJlZFN0cmVhbShzZWxmLl9zdHJlYW0p
Ci0gICAgICAgICAgICBpZiBjb25maWd1cmVfbG9nZ2luZzoKLSAgICAgICAgICAgICAgICBzZWxm
Ll9sb2dnaW5nX2hhbmRsZXIgPSBfY29uZmlndXJlX2xvZ2dpbmcoc2VsZi5fbWV0ZXIsIG9wdGlv
bnMudmVyYm9zZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9pbnRl
cnZhbF9zZWNvbmRzID0gU0xPV19VUERBVEVTX1NFQ09ORFMKLSAgICAgICAgICAgIGlmIGNvbmZp
Z3VyZV9sb2dnaW5nOgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dpbmdfaGFuZGxlciA9IF9j
b25maWd1cmVfbG9nZ2luZyhzZWxmLl9zdHJlYW0sIG9wdGlvbnMudmVyYm9zZSkKLQogICAgIGRl
ZiBjbGVhbnVwKHNlbGYpOgotICAgICAgICAiIiJSZXN0b3JlIGxvZ2dpbmcgY29uZmlndXJhdGlv
biB0byBpdHMgaW5pdGlhbCBzZXR0aW5ncy4iIiIKLSAgICAgICAgaWYgc2VsZi5fbG9nZ2luZ19o
YW5kbGVyOgotICAgICAgICAgICAgX3Jlc3RvcmVfbG9nZ2luZyhzZWxmLl9sb2dnaW5nX2hhbmRs
ZXIpCi0gICAgICAgICAgICBzZWxmLl9sb2dnaW5nX2hhbmRsZXIgPSBOb25lCisgICAgICAgIHNl
bGYuX21ldGVyLmNsZWFudXAoKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNl
bGYuY2xlYW51cCgpCkBAIC0zNTAsMjcgKzMwMCwxOSBAQCBjbGFzcyBQcmludGVyKG9iamVjdCk6
CiAgICAgICAgIGlmIHNlbGYuZGlzYWJsZWQoJ29uZS1saW5lLXByb2dyZXNzJyk6CiAgICAgICAg
ICAgICByZXR1cm4KIAotICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQotICAgICAgICBpZiBzZWxm
Ll9sYXN0X3VwZGF0ZV90aW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9sYXN0X3VwZGF0
ZV90aW1lID0gbm93Ci0KLSAgICAgICAgdGltZV9zaW5jZV9sYXN0X3VwZGF0ZSA9IG5vdyAtIHNl
bGYuX2xhc3RfdXBkYXRlX3RpbWUKLSAgICAgICAgaWYgdGltZV9zaW5jZV9sYXN0X3VwZGF0ZSA8
PSBzZWxmLl91cGRhdGVfaW50ZXJ2YWxfc2Vjb25kczoKKyAgICAgICAgaWYgcmVzdWx0X3N1bW1h
cnkucmVtYWluaW5nID09IDA6CisgICAgICAgICAgICBzZWxmLl9tZXRlci51cGRhdGUoJycpCiAg
ICAgICAgICAgICByZXR1cm4KIAotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZV90aW1lID0gbm93
Ci0KICAgICAgICAgcGVyY2VudF9jb21wbGV0ZSA9IDEwMCAqIChyZXN1bHRfc3VtbWFyeS5leHBl
Y3RlZCArCiAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKSAvIHJlc3VsdF9z
dW1tYXJ5LnRvdGFsCiAgICAgICAgIGFjdGlvbiA9ICJUZXN0aW5nIgogICAgICAgICBpZiByZXRy
eWluZzoKICAgICAgICAgICAgIGFjdGlvbiA9ICJSZXRyeWluZyIKLSAgICAgICAgc2VsZi5fdXBk
YXRlKCIlcyAoJWQlJSk6ICVkIHJhbiBhcyBleHBlY3RlZCwgJWQgZGlkbid0LCAlZCBsZWZ0IiAl
Ci0gICAgICAgICAgICAgICAgICAgICAoYWN0aW9uLCBwZXJjZW50X2NvbXBsZXRlLCByZXN1bHRf
c3VtbWFyeS5leHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51
bmV4cGVjdGVkLCByZXN1bHRfc3VtbWFyeS5yZW1haW5pbmcpKQogCi0gICAgICAgIGlmIHJlc3Vs
dF9zdW1tYXJ5LnJlbWFpbmluZyA9PSAwOgotICAgICAgICAgICAgc2VsZi5fdXBkYXRlKCcnKQor
ICAgICAgICBzZWxmLl9tZXRlci5wcm9ncmVzcygiJXMgKCVkJSUpOiAlZCByYW4gYXMgZXhwZWN0
ZWQsICVkIGRpZG4ndCwgJWQgbGVmdCIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAo
YWN0aW9uLCBwZXJjZW50X2NvbXBsZXRlLCByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWQsIHJlc3Vs
dF9zdW1tYXJ5LnJlbWFpbmluZykpCiAKICAgICBkZWYgcHJpbnRfdW5leHBlY3RlZF9yZXN1bHRz
KHNlbGYsIHVuZXhwZWN0ZWRfcmVzdWx0cyk6CiAgICAgICAgICIiIlByaW50cyBhIGxpc3Qgb2Yg
dGhlIHVuZXhwZWN0ZWQgcmVzdWx0cyB0byB0aGUgYnVpbGRib3Qgc3RyZWFtLiIiIgpAQCAtNDU4
LDcgKzQwMCw3IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKICAgICBkZWYgcHJpbnRfdXBkYXRl
KHNlbGYsIG1zZyk6CiAgICAgICAgIGlmIHNlbGYuZGlzYWJsZWQoJ3VwZGF0ZXMnKToKICAgICAg
ICAgICAgIHJldHVybgotICAgICAgICBzZWxmLl91cGRhdGUobXNnKQorICAgICAgICBzZWxmLl9t
ZXRlci51cGRhdGUobXNnKQogCiAgICAgZGVmIHdyaXRlKHNlbGYsIG1zZywgb3B0aW9uPSJtaXNj
Iik6CiAgICAgICAgIGlmIHNlbGYuZGlzYWJsZWQob3B0aW9uKToKQEAgLTQ2NiwxMCArNDA4LDQg
QEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAgICBzZWxmLl93cml0ZShtc2cpCiAKICAg
ICBkZWYgX3dyaXRlKHNlbGYsIG1zZyk6Ci0gICAgICAgIF9sb2cuaW5mbyhtc2cpCi0KLSAgICBk
ZWYgX3VwZGF0ZShzZWxmLCBtc2cpOgotICAgICAgICBpZiBzZWxmLl9tZXRlcjoKLSAgICAgICAg
ICAgIHNlbGYuX21ldGVyLnVwZGF0ZShtc2cpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBz
ZWxmLl93cml0ZShtc2cpCisgICAgICAgIHNlbGYuX21ldGVyLndyaXRlbG4obXNnKQpkaWZmIC0t
Z2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdf
dW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9w
cmludGluZ191bml0dGVzdC5weQppbmRleCA2ODk5ZDJjNWQ0Y2RiMDQ1MjcwOWNkNGRmMGVkOTY5
MWZjNWJhZjdkLi44Nzc3ZmQ4ZDZlMzIyYmE2ZGUyMzU3YzQ0NGM4OGVlNjg2MWRkMzNiIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGlu
Z191bml0dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9wcmludGluZ191bml0dGVzdC5weQpAQCAtMSw1ICsxLDUgQEAKICMhL3Vzci9iaW4vcHl0
aG9uCi0jIENvcHlyaWdodCAoQykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorIyBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KICMKICMgUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI5LDcgKzI5LDYgQEAK
IAogIiIiVW5pdCB0ZXN0cyBmb3IgcHJpbnRpbmcucHkuIiIiCiAKLWltcG9ydCBsb2dnaW5nCiBp
bXBvcnQgb3B0cGFyc2UKIGltcG9ydCBTdHJpbmdJTwogaW1wb3J0IHRpbWUKQEAgLTU0LDM1ICs1
Myw2IEBAIGRlZiBnZXRfb3B0aW9ucyhhcmdzKToKIAogCiBjbGFzcyBUZXN0VXRpbGl0eUZ1bmN0
aW9ucyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIGFzc2VydEVtcHR5KHNlbGYsIHN0cmVh
bSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RyZWFtLmdldHZhbHVlKCkpCi0KLSAgICBk
ZWYgYXNzZXJ0Tm90RW1wdHkoc2VsZiwgc3RyZWFtKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVl
KHN0cmVhbS5nZXR2YWx1ZSgpKQotCi0gICAgZGVmIGFzc2VydFdyaXR0ZW4oc2VsZiwgc3RyZWFt
LCBjb250ZW50cyk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0cmVhbS5idWZsaXN0LCBj
b250ZW50cykKLQotICAgIGRlZiB0ZXN0X2NvbmZpZ3VyZV9sb2dnaW5nKHNlbGYpOgotICAgICAg
ICBvcHRpb25zLCBhcmdzID0gZ2V0X29wdGlvbnMoW10pCi0gICAgICAgIHN0cmVhbSA9IFN0cmlu
Z0lPLlN0cmluZ0lPKCkKLSAgICAgICAgaGFuZGxlciA9IHByaW50aW5nLl9jb25maWd1cmVfbG9n
Z2luZyhzdHJlYW0sIG9wdGlvbnMudmVyYm9zZSkKLSAgICAgICAgbG9nZ2luZy5pbmZvKCJ0aGlz
IHNob3VsZCBiZSBsb2dnZWQiKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KHN0cmVhbSkK
LQotICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgICAgIGxvZ2dpbmcu
ZGVidWcoInRoaXMgc2hvdWxkIG5vdCBiZSBsb2dnZWQiKQotICAgICAgICBzZWxmLmFzc2VydEVt
cHR5KHN0cmVhbSkKLQotICAgICAgICBwcmludGluZy5fcmVzdG9yZV9sb2dnaW5nKGhhbmRsZXIp
Ci0KLSAgICAgICAgc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICBvcHRpb25z
LCBhcmdzID0gZ2V0X29wdGlvbnMoWyctLXZlcmJvc2UnXSkKLSAgICAgICAgaGFuZGxlciA9IHBy
aW50aW5nLl9jb25maWd1cmVfbG9nZ2luZyhzdHJlYW0sIG9wdGlvbnMudmVyYm9zZSkKLSAgICAg
ICAgbG9nZ2luZy5kZWJ1ZygidGhpcyBzaG91bGQgYmUgbG9nZ2VkIikKLSAgICAgICAgc2VsZi5h
c3NlcnROb3RFbXB0eShzdHJlYW0pCi0gICAgICAgIHByaW50aW5nLl9yZXN0b3JlX2xvZ2dpbmco
aGFuZGxlcikKLQogICAgIGRlZiB0ZXN0X3ByaW50X29wdGlvbnMoc2VsZik6CiAgICAgICAgIG9w
dGlvbnMsIGFyZ3MgPSBnZXRfb3B0aW9ucyhbXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9w
dGlvbnMgaXMgbm90IE5vbmUpCkBAIC0xNDQsOCArMTE0LDcgQEAgY2xhc3MgIFRlc3RwcmludGVy
KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgcmVndWxhcl9vdXRwdXQgPSBTdHJpbmdJTy5T
dHJpbmdJTygpCiAgICAgICAgIHJlZ3VsYXJfb3V0cHV0LmlzYXR0eSA9IGxhbWJkYTogdHR5CiAg
ICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgcHJp
bnRlciA9IHByaW50aW5nLlByaW50ZXIoc2VsZi5fcG9ydCwgb3B0aW9ucywgcmVndWxhcl9vdXRw
dXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkYm90X291dHB1dCwg
Y29uZmlndXJlX2xvZ2dpbmc9VHJ1ZSkKKyAgICAgICAgcHJpbnRlciA9IHByaW50aW5nLlByaW50
ZXIoc2VsZi5fcG9ydCwgb3B0aW9ucywgcmVndWxhcl9vdXRwdXQsIGJ1aWxkYm90X291dHB1dCkK
ICAgICAgICAgcmV0dXJuIHByaW50ZXIsIHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQK
IAogICAgIGRlZiBnZXRfcmVzdWx0KHNlbGYsIHRlc3RfbmFtZSwgcmVzdWx0X3R5cGU9dGVzdF9l
eHBlY3RhdGlvbnMuUEFTUywgcnVuX3RpbWU9MCk6CkBAIC0zNTAsNyArMzE5LDcgQEAgY2xhc3Mg
IFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgICAgICAgJ2ZhaWx1
cmVzL2V4cGVjdGVkL2NyYXNoLmh0bWwnXQogICAgICAgICBwYXRocywgcnMsIGV4cCA9IHNlbGYu
Z2V0X3Jlc3VsdF9zdW1tYXJ5KHRlc3RzLCBleHBlY3RhdGlvbnMpCiAKLSAgICAgICAgIyBGaXJz
dCwgdGVzdCB0aGF0IHdlIHByaW50IG5vdGhpbmcuCisgICAgICAgICMgRmlyc3QsIHRlc3QgdGhh
dCB3ZSBwcmludCBub3RoaW5nIHdoZW4gd2Ugc2hvdWxkbid0IHByaW50IGFueXRoaW5nLgogICAg
ICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCiAgICAgICAgIHNl
bGYuYXNzZXJ0RW1wdHkob3V0KQogICAgICAgICBzZWxmLmFzc2VydEVtcHR5KGVycikKQEAgLTM1
OSw1NSArMzI4LDI4IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQogICAgICAgICBzZWxmLmFzc2VydEVtcHR5KGVy
cikKIAotICAgICAgICBzZWxmLnRpbWVzID0gWzEsIDIsIDEyLCAxMywgMTQsIDIzLCAzM10KLQot
ICAgICAgICBkZWYgbW9ja190aW1lKCk6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi50aW1lcy5w
b3AoMCkKLQotICAgICAgICBvcmlnX3RpbWUgPSB0aW1lLnRpbWUKLSAgICAgICAgdHJ5OgotICAg
ICAgICAgICAgdGltZS50aW1lID0gbW9ja190aW1lCi0KLSAgICAgICAgICAgICMgVGVzdCBwcmlu
dGluZyBwcm9ncmVzcyB1cGRhdGVzIHRvIGEgZmlsZS4KLSAgICAgICAgICAgIHByaW50ZXIsIGVy
ciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tcHJpbnQnLCAnb25lLWxpbmUtcHJvZ3Jlc3Mn
XSkKLSAgICAgICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykK
LSAgICAgICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRF
bXB0eShlcnIpCi0KLSAgICAgICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNl
LCBwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQotICAgICAgICAgICAg
c2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCi0KLSAgICAgICAgICAgIHNlbGYucmVzZXQoZXJyKQot
ICAgICAgICAgICAgc2VsZi5yZXNldChvdXQpCi0gICAgICAgICAgICBwcmludGVyLnByaW50X3By
b2dyZXNzKHJzLCBUcnVlLCBwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0
KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCi0KLSAgICAgICAgICAgIHByaW50
ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIFRydWUsIHBhdGhzKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFbXB0eShvdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKLQotICAg
ICAgICAgICAgIyBOb3cgcmVjb25maWd1cmUgdGhlIHByaW50ZXIgdG8gdGVzdCBwcmludGluZyB0
byBhIFRUWSBpbnN0ZWFkIG9mIGEgZmlsZS4KLSAgICAgICAgICAgIHNlbGYudGltZXMgPSBbMSwg
MS4wMSwgMiwgM10KLSAgICAgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJp
bnRlcihbJy0tcHJpbnQnLCAnb25lLWxpbmUtcHJvZ3Jlc3MnXSwgdHR5PVRydWUpCi0gICAgICAg
ICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCi0gICAgICAgICAg
ICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVtcHR5KG91dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQot
Ci0gICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCi0g
ICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0
Tm90RW1wdHkoZXJyKQotCi0gICAgICAgICAgICBzZWxmLnJlc2V0KGVycikKLSAgICAgICAgICAg
IHNlbGYucmVzZXQob3V0KQotICAgICAgICAgICAgcHJpbnRlci5wcmludF9wcm9ncmVzcyhycywg
VHJ1ZSwgcGF0aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKLSAgICAgICAg
ICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoZXJyKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgdGltZS50aW1lID0gb3JpZ190aW1lCisgICAgICAgICMgTm93IHRlc3QgdGhhdCB3ZSBkbyBw
cmludCB0aGluZ3MuCisgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRl
cihbJy0tcHJpbnQnLCAnb25lLWxpbmUtcHJvZ3Jlc3MnXSkKKyAgICAgICAgcHJpbnRlci5wcmlu
dF9wcm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91
dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCisKKyAgICAgICAgcHJpbnRlciwg
ZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdvbmUtbGluZS1wcm9ncmVz
cyddKQorICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBUcnVlLCBwYXRocykKKyAg
ICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHko
ZXJyKQorCisgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0t
cHJpbnQnLCAnb25lLWxpbmUtcHJvZ3Jlc3MnXSkKKyAgICAgICAgcnMucmVtYWluaW5nID0gMAor
ICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCisgICAgICAg
IHNlbGYuYXNzZXJ0RW1wdHkob3V0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikK
KworICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBUcnVlLCBwYXRocykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoZXJy
KQorCisKIAogICAgIGRlZiB0ZXN0X3dyaXRlX25vdGhpbmcoc2VsZik6CiAgICAgICAgIHByaW50
ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRfcHJpbnRlcihbJy0tcHJpbnQnLCAnbm90aGluZyddKQpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdHNydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lci5weQppbmRleCBjZTFjN2U5MDM4NTMyNGNiNTZkZGQ4NjA5MWY0ODFm
NjM3NjE2ZDlmLi5kYjE1ZWIzOGFiN2YxOTg1MGFlNmY4OTk0MjVmMzFlYWE3NWM0ZDgxIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
c3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3Rz
L3BlcmZ0ZXN0c3J1bm5lci5weQpAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBQZXJmVGVzdHNSdW5u
ZXIob2JqZWN0KToKICAgICAgICAgICAgIHNlbGYuX2hvc3QgPSBIb3N0KCkKICAgICAgICAgICAg
IHNlbGYuX3BvcnQgPSBzZWxmLl9ob3N0LnBvcnRfZmFjdG9yeS5nZXQoc2VsZi5fb3B0aW9ucy5w
bGF0Zm9ybSwgc2VsZi5fb3B0aW9ucykKICAgICAgICAgc2VsZi5faG9zdC5faW5pdGlhbGl6ZV9z
Y20oKQotICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihzZWxmLl9wb3J0
LCBzZWxmLl9vcHRpb25zLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0LCBjb25maWd1
cmVfbG9nZ2luZz1GYWxzZSkKKyAgICAgICAgc2VsZi5fcHJpbnRlciA9IHByaW50aW5nLlByaW50
ZXIoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgcmVndWxhcl9vdXRwdXQsIGJ1aWxkYm90X291
dHB1dCkKICAgICAgICAgc2VsZi5fd2Via2l0X2Jhc2VfZGlyX2xlbiA9IGxlbihzZWxmLl9wb3J0
LndlYmtpdF9iYXNlKCkpCiAgICAgICAgIHNlbGYuX2Jhc2VfcGF0aCA9IHNlbGYuX3BvcnQucGVy
Zl90ZXN0c19kaXIoKQogICAgICAgICBzZWxmLl9yZXN1bHRzID0ge30KZGlmZiAtLWdpdCBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3Vu
aXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdHNydW5uZXJfdW5pdHRlc3QucHkKaW5kZXggMWEyODdhN2NmNmFkYTNjYThiOWJhYjY0NjQy
ODc0OGIwMjk0ZTRlNi4uYzU4OTFkNDAxMzYxZmVjOTFjNzEwMzUwNzIxOWVjYTgxZDEwMTJkNyAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdHNydW5uZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkKQEAgLTE4Miw3ICsxODIs
OCBAQCBtYXggMTEyMAogICAgICAgICAgICAgICAgIFRlc3REcml2ZXJXaXRoU3RhcnRDb3VudC5z
dGFydF9jb3VudCArPSAxCiAKICAgICAgICAgYnVpbGRib3Rfb3V0cHV0ID0gU3RyaW5nSU8uU3Ry
aW5nSU8oKQotICAgICAgICBydW5uZXIgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYnVpbGRib3Rfb3V0
cHV0LCBhcmdzPVsiLS1wYXVzZS1iZWZvcmUtdGVzdGluZyJdLCBkcml2ZXJfY2xhc3M9VGVzdERy
aXZlcldpdGhTdGFydENvdW50KQorICAgICAgICByZWd1bGFyX291dHB1dCA9IFN0cmluZ0lPLlN0
cmluZ0lPKCkKKyAgICAgICAgcnVubmVyID0gc2VsZi5jcmVhdGVfcnVubmVyKGJ1aWxkYm90X291
dHB1dCwgYXJncz1bIi0tcGF1c2UtYmVmb3JlLXRlc3RpbmciXSwgcmVndWxhcl9vdXRwdXQ9cmVn
dWxhcl9vdXRwdXQsIGRyaXZlcl9jbGFzcz1UZXN0RHJpdmVyV2l0aFN0YXJ0Q291bnQpCiAKICAg
ICAgICAgZGlybmFtZSA9IHJ1bm5lci5fYmFzZV9wYXRoICsgJy9pbnNwZWN0b3IvJwogICAgICAg
ICB0ZXN0cyA9IFtkaXJuYW1lICsgJ3Bhc3MuaHRtbCddCkBAIC0xOTMsOSArMTk0LDkgQEAgbWF4
IDExMjAKICAgICAgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0X2NvdW50ID0gcnVubmVyLl9ydW5f
dGVzdHNfc2V0KHRlc3RzLCBydW5uZXIuX3BvcnQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFsKFRlc3REcml2ZXJXaXRoU3RhcnRDb3VudC5zdGFydF9jb3VudCwgMSkKICAgICAgICAgZmlu
YWxseToKLSAgICAgICAgICAgIF8sIHN0ZGVyciwgbG9ncyA9IG91dHB1dC5yZXN0b3JlX291dHB1
dCgpCisgICAgICAgICAgICBfLCBzdGRlcnIsIF8gPSBvdXRwdXQucmVzdG9yZV9vdXRwdXQoKQog
ICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRlcnIsICJSZWFkeSB0byBydW4gdGVzdD9c
biIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoIlJ1bm5pbmcgaW5zcGVjdG9yL3Bhc3Mu
aHRtbCAoMSBvZiAxKSIgaW4gbG9ncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiUnVu
bmluZyBpbnNwZWN0b3IvcGFzcy5odG1sICgxIG9mIDEpIiBpbiByZWd1bGFyX291dHB1dC5nZXR2
YWx1ZSgpKQogCiAgICAgZGVmIHRlc3RfcnVuX3Rlc3Rfc2V0X2Zvcl9wYXJzZXJfdGVzdHMoc2Vs
Zik6CiAgICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133651</attachid>
            <date>2012-03-24 14:18:10 -0700</date>
            <delta_ts>2012-03-26 12:33:19 -0700</delta_ts>
            <desc>more testing, update w/ review feedback, fix child process issues</desc>
            <filename>bug-73846-20120324141809.patch</filename>
            <type>text/plain</type>
            <size>40163</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTExNzY1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmMzNjliNWJkOTE3MTg4NzZlNmUzYzZmMjQwNzAxZDVi
YWVkYjZkOS4uMjZjZmZkMGU2YWQ0YmRiNGM5MTgxYTE3M2I1YjI5NTY3YmQ3ODhiOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcx
IEBACisyMDEyLTAzLTIzICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIGNsZWFuIHVwIE5SV1QgbG9nZ2luZy9tZXRlcmluZywgYmUgbGVzcyB2ZXJib3NlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2gg
dG90YWxseSByZXdyaXRlcyB0aGUgbWV0ZXJlZF9zdHJlYW0gbW9kdWxlIGFuZAorICAgICAgICBj
aGFuZ2VzIHRoZSB3YXkgaXQgYW5kIHRoZSBwcmludGluZyBtb2R1bGUgbm93IGludGVyYWN0IHdp
dGggdGhlCisgICAgICAgIGxvZ2dpbmcgc3Vic3lzdGVtLgorCisgICAgICAgIFRoZSBwcmludGlu
ZyBtb2R1bGUgYmVjb21lcyBhIGR1bWIgbGF5b3V0X3Rlc3RzLXNwZWNpZmljIHdyYXBwZXIgYXJv
dW5kCisgICAgICAgIHRoZSBtZXRlcmVkIHN0cmVhbS4gQWxsIG9mIHRoZSBpbnRlbGxpZ2VuY2Ug
b2YgaG93IGFuZCB3aGVuIHRvCisgICAgICAgIGFjdHVhbGx5IHdyaXRlIChvciBlcmFzZSkgbGlu
ZXMgYW5kIGhvdyB0aGluZ3MgaW50ZXJhY3Qgd2l0aAorICAgICAgICBsb2dnaW5nIG1vdmVzIGlu
dG8gdGhlIG1ldGVyZWQgc3RyZWFtLgorCisgICAgICAgIEFzIG9mIG5vdywgYW55dGhpbmcgd3Jp
dHRlbiB0byB0aGUgbWV0ZXJlZCBzdHJlYW0gKmJ5cGFzc2VzIHRoZQorICAgICAgICBsb2dnaW5n
IHN5c3RlbSouIElmIGEgbG9nZ2VyIGlzIHBhc3NlZCB0byB0aGUgbWV0ZXIgY29uc3RydWN0b3Is
CisgICAgICAgIHRoZSBtZXRlcmVkIHN0cmVhbSB3aWxsIGFsc28gYXR0YWNoIGEgbG9nIGhhbmRs
ZXIgc28gdGhhdCBhbGwKKyAgICAgICAgbWVzc2FnZXMgZmVkIHRvIHRoZSBsb2dnZXIgd2lsbCBh
bHNvIGJlIHdyaXR0ZW4gdG8gdGhlIG1ldGVyZWQKKyAgICAgICAgc3RyZWFtLiBUaGlzIGRldGFu
Z2xlcyB0aGUgbG9naWMgdGhhdCB1c2VkIHRvIGV4aXN0IHdoZXJlCisgICAgICAgIHNvbWV0aW1l
cyB0aGUgbWV0ZXIgd291bGQgd3JpdGUgdG8gdGhlIGxvZ2dlciBhbmQgc29tZXRpbWVzIHRoZQor
ICAgICAgICBsb2dnZXIgd291bGQgd3JpdGUgdG8gdGhlIG1ldGVyLgorCisgICAgICAgIEFsbCBv
ZiB0aGlzIG1ha2VzIHRoZSBsb2dpYyBnZW5lcmljIGFuZCByZXVzYWJsZSBmb3IKKyAgICAgICAg
dGVzdC13ZWJraXRweSAoY29taW5nIGluIGFub3RoZXIgcGF0Y2gpLiBJdCBhbHNvIGhlbHBzIGNs
YXJpZnkKKyAgICAgICAgd2hhdCB0aGUgbXlzdGVyaW91cyAiY29uZmlndXJlX2xvZ2dpbmciIHBh
cmFtZXRlciB0byB0aGUgcHJpbnRlcgorICAgICAgICBjb25zdHJ1Y3RvciB1c2VkIHRvIGRvICh0
aGF0IHBhcmFtZXRlciBpdHNlbGYgaXMgZ29uZSBub3csIGFuZAorICAgICAgICBieSBkZWZhdWx0
IHRoZSBwcmludGVyIGFuZCBtZXRlcmVkX3N0cmVhbSB3aWxsIG5vdCBldmVyIHRvdWNoCisgICAg
ICAgIHRoZSBsb2dnaW5nIHN5c3RlbTsgdGhpcyBtYWtlcyBhIGJ1bmNoIG9mIHRlc3RzIGxlc3Mg
ZnJhZ2lsZSkuCisKKyAgICAgICAgQWxsIG9mIHRoZSBhYm92ZSBzaG91bGQgcHJvZHVjZSBubyB1
c2VyLXZpc2libGUgY2hhbmdlcy4KKworICAgICAgICBIb3dldmVyLCB0byBhbHNvIGZpeCB0aGUg
YnVnIGluIHF1ZXN0aW9uLCB3ZSBjaGFuZ2UgdGhlIG1lc3NhZ2UKKyAgICAgICAgZm9ybWF0IGlu
IC0tdmVyYm9zZSBtb2RlIHRvICVIOiVNOiVTLiVmcmFjICVwaWQgJW1lc3NhZ2UsCisgICAgICAg
IGVsaW1pbmF0aW5nIHRoZSBkYXRlLCBmaWxlOmxpbmVubywgYW5kIGxldmVsIHBhcmFtZXRlcnMu
IEkgYW0KKyAgICAgICAgbWFraW5nIHRoaXMgY2hhbmdlIGF0IHRoZSBzYW1lIHRpbWUgYmVjYXVz
ZSBpdCB3b3VsZCBiZQorICAgICAgICBkaWZmaWN1bHQgdG8gd3JpdGUgdGhpbmdzIGNvbnNpc3Rl
bnRseSBiZXR3ZWVuIHRoZSBsb2dzIGFuZCB0aGUKKyAgICAgICAgbWV0ZXJlZCBzdHJlYW0gaWYg
d2Ugd2VyZSBzdGlsbCBsb2dnaW5nIHRoZSBmaWxlOmxpbmVuby4KKworICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHk6
CisgICAgICAgICAgUmVtb3ZlIHRoZSBjb25maWd1cmVfbG9nZ2luZyBwYXJhbWV0ZXIKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHk6
CisgICAgICAgICAgVXNlIG1ldGVyZWQgc3RyZWFtIHRvIGNvbmZpZ3VyZSB0aGUgbG9nZ2luZyAo
d2UgZG9uJ3QgbmVlZCBhIHByaW50ZXIpCisgICAgICAgICAgYW5kIGJlIGNhcmVmdWwgYWJvdXQg
d2hlbiBhbmQgaG93IHdlIG1hbmlwdWxhdGUgdGhlIGxvZyBsZXZlbAorICAgICAgICAgIGFuZCBo
YW5kbGVycyBvbiB0aGUgcm9vdCBsb2dnZXIuCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToKKyAgICAgICAgICBQYXNzIGluIHRoZSBy
b290IGxvZ2dlciBzbyB0aGF0IGxvZyBtZXNzYWdlcyBhcmUgZm9ybWF0dGVkCisgICAgICAgICAg
cHJvcGVybHksIGFuZCBzZXQgdGhlIGxvZyBsZXZlbCBvdXRzaWRlIG9mIGFueSByb3V0aW5lcyBj
YWxsZWQKKyAgICAgICAgICBieSB1bml0IHRlc3RzIHNvIGFzIHRvIG5vdCBpbnRlcmZlcmUuCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWFuYWdlcl93b3Jr
ZXJfYnJva2VyLnB5OgorICAgICAgICAgIHJlbW92ZSBhIGR1cGxpY2F0ZSBsb2cgbWVzc2FnZS4K
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRlcmVkX3N0
cmVhbS5weToKKyAgICAgICAgICBjb21wbGV0ZSByZXdyaXRlIDopLgorICAgICAgICAqIFNjcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5
OgorICAgICAgICAgIGNvbXBsZXRlIHJld3JpdGUgOikuCisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmcucHk6CisgICAgICAgICAgbW92ZSB0aGUg
bG9nZ2luZyBjb25maWd1cmF0aW9uIGludG8gbWV0ZXJlZF9zdHJlYW0sIGFuZCBhbHNvCisgICAg
ICAgICAgbW92ZSB0aGUgIndoZW4gc2hvdWxkIEkgbG9nIHByb2dyZXNzIG1lc3NhZ2VzIiBpbnRv
IG1ldGVyZWQgc3RyZWFtLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5OgorICAgICAgICAgIHJlbW92ZSB0ZXN0cyB0aGF0
IGFyZSBubyBsb25nZXIgbmVjZXNzYXJ5LgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVy
Zm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAgIHJlbW92ZSB0aGUg
Y29uZmlndXJlX2xvZ2dpbmcgcGFyYW1ldGVyLgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0LnB5OgorICAgICAgICAg
IHVwZGF0ZSB0aGUgdGVzdDsgc2luY2UgdGhlIHByaW50ZXIgbm8gbG9uZ2VyIHdyaXRlcyB0byB0
aGUgbG9nLAorICAgICAgICAgIHdlIG5lZWQgdG8gY2hlY2sgd2hhdCBpcyB3cml0dGVuIHRvIHRo
ZSByZWd1bGFyX291dHB1dCBpbnN0ZWFkLgorICAgICAgICAgICh0ZXN0X3J1bl90ZXN0X3BhdXNl
X2JlZm9yZV90ZXN0aW5nKToKKwogMjAxMi0wMy0yMiAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNo
cm9taXVtLm9yZz4KIAogICAgICAgICBuZXctcnVuLXdlYmtpdC10ZXN0cyBibGFtZXMgdGhlIHdy
b25nIHRlc3QgZm9yIGNyYXNoaW5nCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5w
eQppbmRleCBhNWZjODk4OTA4ODY1YTY0MWQyNGRmYjQyNTZiOTUxZmY3NmRhNWVjLi4xNTU0ZjY2
YTcwNGE0YjBlOTZiMmNlZjg0NTM1YTY3NWVjYWQwNTI2IDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21h
bmFnZXJfdW5pdHRlc3QucHkKQEAgLTIxNCw3ICsyMTQsNyBAQCBjbGFzcyBNYW5hZ2VyVGVzdCh1
bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIGhvc3QgPSBNb2NrSG9zdCgpCiAgICAgICAgIHBv
cnQgPSBob3N0LnBvcnRfZmFjdG9yeS5nZXQocG9ydF9uYW1lPW9wdGlvbnMucGxhdGZvcm0sIG9w
dGlvbnM9b3B0aW9ucykKICAgICAgICAgcnVuX3dlYmtpdF90ZXN0cy5fc2V0X3VwX2Rlcml2ZWRf
b3B0aW9ucyhwb3J0LCBvcHRpb25zKQotICAgICAgICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRl
cihwb3J0LCBvcHRpb25zLCBTdHJpbmdJTy5TdHJpbmdJTygpLCBTdHJpbmdJTy5TdHJpbmdJTygp
LCBjb25maWd1cmVfbG9nZ2luZz1GYWxzZSkKKyAgICAgICAgcHJpbnRlciA9IHByaW50aW5nLlBy
aW50ZXIocG9ydCwgb3B0aW9ucywgU3RyaW5nSU8uU3RyaW5nSU8oKSwgU3RyaW5nSU8uU3RyaW5n
SU8oKSkKICAgICAgICAgbWFuYWdlciA9IExvY2tDaGVja2luZ01hbmFnZXIocG9ydCwgb3B0aW9u
cywgcHJpbnRlcikKICAgICAgICAgbWFuYWdlci5jb2xsZWN0X3Rlc3RzKGFyZ3MpCiAgICAgICAg
IG1hbmFnZXIucGFyc2VfZXhwZWN0YXRpb25zKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXJfd29ya2VyX2Jyb2tlci5weQppbmRleCA3MGM0M2E2ZDQxNWQzNDA2NWIxNGE3M2UzZTFkZWY3
ODFmZmEyM2ZmLi4wOGMwNTlhOTU3NmM5MTlkMzQ4NjllZWMyNmI0YjJjYjdhOGQxY2M1IDEwMDc1
NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyX3dvcmtlcl9icm9rZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CkBAIC0yNzQsNyAr
Mjc0LDYgQEAgY2xhc3MgQWJzdHJhY3RXb3JrZXIoQnJva2VyQ2xpZW50KToKICAgICAgICAgIiIi
Q2FsbGJhY2sgZm9yIHRoZSB3b3JrZXIgdG8gc3RhcnQgZXhlY3V0aW5nLiBUeXBpY2FsbHkgZG9l
cyBhbnkKICAgICAgICAgcmVtYWluaW5nIGluaXRpYWxpemF0aW9uIGFuZCB0aGVuIGNhbGxzIGJy
b2tlcl9jb25uZWN0aW9uLnJ1bl9tZXNzYWdlX2xvb3AoKS4iIiIKICAgICAgICAgZXhjZXB0aW9u
X21zZyA9ICIiCi0gICAgICAgIF9sb2cuZGVidWcoIiVzIHN0YXJ0aW5nIiAlIHNlbGYuX25hbWUp
CiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5fd29ya2VyX2Nvbm5lY3Rpb24ucnVu
X21lc3NhZ2VfbG9vcCgpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKaW5kZXggMjJjMGE1ZjA0MjMxMDVlMzA5
MzhiOGVmMzUyN2RjNjdlMjAyOWFhMi4uMDdhMjBjOWMzMDVhYmQ3ZWMxZWRhZDhkZGRkYzk0Yzhm
MzNiNzhiYyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvd29ya2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtlci5weQpAQCAtMzgsNyArMzgsNyBAQCBmcm9tIHdlYmtp
dHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgbWFuYWdlcl93b3JrZXJfYnJva2Vy
CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5jb250cm9sbGVycyBpbXBvcnQgc2luZ2xlX3Rl
c3RfcnVubmVyCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3Rf
ZXhwZWN0YXRpb25zCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRl
c3RfcmVzdWx0cwotZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MgaW1wb3J0IHByaW50
aW5nCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgbWV0ZXJlZF9zdHJl
YW0KIAogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCkBAIC02NSw3ICs2NSw3
IEBAIGNsYXNzIFdvcmtlcihtYW5hZ2VyX3dvcmtlcl9icm9rZXIuQWJzdHJhY3RXb3JrZXIpOgog
ICAgICAgICBzZWxmLl9kcml2ZXIgPSBOb25lCiAgICAgICAgIHNlbGYuX3Rlc3RzX3J1bl9maWxl
ID0gTm9uZQogICAgICAgICBzZWxmLl90ZXN0c19ydW5fZmlsZW5hbWUgPSBOb25lCi0gICAgICAg
IHNlbGYuX3ByaW50ZXIgPSBOb25lCisgICAgICAgIHNlbGYuX21ldGVyID0gTm9uZQogCiAgICAg
ZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuY2xlYW51cCgpCkBAIC04Miw0MSArODIs
NTggQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6
CiAgICAgICAgIHRlc3RzX3J1bl9maWxlbmFtZSA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxm
Ll9yZXN1bHRzX2RpcmVjdG9yeSwgInRlc3RzX3J1biVkLnR4dCIgJSBzZWxmLl93b3JrZXJfbnVt
YmVyKQogICAgICAgICBzZWxmLl90ZXN0c19ydW5fZmlsZSA9IHNlbGYuX2ZpbGVzeXN0ZW0ub3Bl
bl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcodGVzdHNfcnVuX2ZpbGVuYW1lKQogCisgICAgZGVmIF9z
ZXRfdXBfbG9nZ2luZyhzZWxmKToKKyAgICAgICAgIyBUaGUgdW5peCBtdWx0aXByb2Nlc3Npbmcg
aW1wbGVtZW50YXRpb24gY2xvbmVzIHRoZSBNZXRlcmVkU3RyZWFtIGxvZyBoYW5kbGVyCisgICAg
ICAgICMgaW50byB0aGUgY2hpbGQgcHJvY2Vzcywgc28gd2UgbmVlZCB0byByZW1vdmUgaXQgYmVm
b3JlIHdlIGNhbgorICAgICAgICAjIGFkZCBhIG5ldyBvbmUgdG8gZ2V0IHRoZSBjb3JyZWN0IHBp
ZCBsb2dnZWQuCisgICAgICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoKQorICAg
ICAgICBoYW5kbGVyX3RvX3JlbW92ZSA9IE5vbmUKKyAgICAgICAgZm9yIGggaW4gcm9vdF9sb2dn
ZXIuaGFuZGxlcnM6CisgICAgICAgICAgICBpZiBoLm5hbWUgPT0gbWV0ZXJlZF9zdHJlYW0uTE9H
X0hBTkRMRVJfTkFNRToKKyAgICAgICAgICAgICAgICBoYW5kbGVyX3RvX3JlbW92ZSA9IGgKKyAg
ICAgICAgICAgICAgICBicmVhaworICAgICAgICBpZiBoYW5kbGVyX3RvX3JlbW92ZToKKyAgICAg
ICAgICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcl90b19yZW1vdmUpCisKKyAg
ICAgICAgIyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMg
bG9nZ2luZworICAgICAgICAjIHNvbWV3aGVyZSBvdGhlciB0aGFuIHN5cy5zdGRlcnIsIGJ1dCBJ
J20gbm90IHN1cmUKKyAgICAgICAgIyBpZiB0aGlzIHdpbGwgYmUgYW4gaXNzdWUgaW4gcHJhY3Rp
Y2UuIEFsc28sIGl0IHdvdWxkIGJlCisgICAgICAgICMgbmljZSBpZiB3ZSB0cmFwcGVkIGFsbCBv
ZiB0aGUgbWVzc2FnZXMgZm9yIGEgZ2l2ZW4gdGVzdAorICAgICAgICAjIGFuZCBzZW50IHRoZW0g
YmFjayBpbiBmaW5pc2hlZF90ZXN0KCkgcmF0aGVyIHRoYW4gbG9nZ2luZworICAgICAgICAjIHRo
ZW0gdG8gc3RkZXJyLgorICAgICAgICBpZiBub3Qgcm9vdF9sb2dnZXIuaGFuZGxlcnM6CisgICAg
ICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucworICAgICAgICAgICAgcm9vdF9sb2dnZXIu
c2V0TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiBvcHRpb25zLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklO
Rk8pCisgICAgICAgICAgICBzZWxmLl9tZXRlciA9IG1ldGVyZWRfc3RyZWFtLk1ldGVyZWRTdHJl
YW0oc3lzLnN0ZGVyciwgb3B0aW9ucy52ZXJib3NlLCBsb2dnZXI9cm9vdF9sb2dnZXIpCisKKyAg
ICBkZWYgX3NldF91cF9ob3N0X2FuZF9wb3J0KHNlbGYpOgorICAgICAgICBvcHRpb25zID0gc2Vs
Zi5fb3B0aW9ucworICAgICAgICBpZiBvcHRpb25zLnBsYXRmb3JtIGFuZCAndGVzdCcgaW4gb3B0
aW9ucy5wbGF0Zm9ybToKKyAgICAgICAgICAgICMgSXQgaXMgbGFtZSB0byBpbXBvcnQgbW9ja3Mg
aW50byByZWFsIGNvZGUsIGJ1dCB0aGlzIGFsbG93cyB1cyB0byB1c2UgdGhlIHRlc3QgcG9ydCBp
biBtdWx0aS1wcm9jZXNzIHRlc3RzIGFzIHdlbGwuCisgICAgICAgICAgICBmcm9tIHdlYmtpdHB5
LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CisgICAgICAgICAgICBob3N0ID0gTW9j
a0hvc3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQorICAgICAg
ICBzZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG9wdGlvbnMucGxhdGZvcm0sIG9w
dGlvbnMpCisKICAgICBkZWYgc2V0X2lubGluZV9hcmd1bWVudHMoc2VsZiwgcG9ydCk6CiAgICAg
ICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBpZiBu
b3Qgc2VsZi5fcG9ydDoKLSAgICAgICAgICAgICMgV2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBw
cm9jZXNzIGFuZCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBIb3N0LgotICAgICAgICAgICAgaWYgc2Vs
Zi5fb3B0aW9ucy5wbGF0Zm9ybSBhbmQgJ3Rlc3QnIGluIHNlbGYuX29wdGlvbnMucGxhdGZvcm06
Ci0gICAgICAgICAgICAgICAgIyBJdCBpcyBsYW1lIHRvIGltcG9ydCBtb2NrcyBpbnRvIHJlYWwg
Y29kZSwgYnV0IHRoaXMgYWxsb3dzIHVzIHRvIHVzZSB0aGUgdGVzdCBwb3J0IGluIG11bHRpLXBy
b2Nlc3MgdGVzdHMgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICBmcm9tIHdlYmtpdHB5LmNvbW1v
bi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci0gICAgICAgICAgICAgICAgaG9zdCA9IE1vY2tI
b3N0KCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQot
Ci0gICAgICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwotICAgICAgICAgICAgc2VsZi5f
cG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zKQot
Ci0gICAgICAgICAgICAjIFRoZSB1bml4IG11bHRpcHJvY2Vzc2luZyBpbXBsZW1lbnRhdGlvbiBj
bG9uZXMgdGhlCi0gICAgICAgICAgICAjIGxvZyBoYW5kbGVyIGNvbmZpZ3VyYXRpb24gaW50byB0
aGUgY2hpbGQgcHJvY2Vzc2VzLAotICAgICAgICAgICAgIyBidXQgdGhlIHdpbiBpbXBsZW1lbnRh
dGlvbiBkb2Vzbid0LgotICAgICAgICAgICAgY29uZmlndXJlX2xvZ2dpbmcgPSAoc3lzLnBsYXRm
b3JtID09ICd3aW4zMicpCi0KLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgd29uJ3Qgd29yayBp
ZiB0aGUgY2FsbGluZyBwcm9jZXNzIGlzIGxvZ2dpbmcKLSAgICAgICAgICAgICMgc29tZXdoZXJl
IG90aGVyIHRoYW4gc3lzLnN0ZGVyciBhbmQgc3lzLnN0ZG91dCwgYnV0IEknbSBub3Qgc3VyZQot
ICAgICAgICAgICAgIyBpZiB0aGlzIHdpbGwgYmUgYW4gaXNzdWUgaW4gcHJhY3RpY2UuCi0gICAg
ICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihzZWxmLl9wb3J0LCBvcHRp
b25zLCBzeXMuc3RkZXJyLCBzeXMuc3Rkb3V0LCBjb25maWd1cmVfbG9nZ2luZykKKyAgICAgICAg
ICAgICMgV2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBwcm9jZXNzIGFuZCBuZWVkIHRvIGluaXRp
YWxpemUgdGhpbmdzLgorICAgICAgICAgICAgc2VsZi5fc2V0X3VwX2xvZ2dpbmcoKQorICAgICAg
ICAgICAgc2VsZi5fc2V0X3VwX2hvc3RfYW5kX3BvcnQoKQogCiAgICAgICAgIHNlbGYuc2FmZV9p
bml0KCkKLQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyBzdGFydGlu
ZyIgJSBzZWxmLl9uYW1lKQogICAgICAgICAgICAgc3VwZXIoV29ya2VyLCBzZWxmKS5ydW4oKQog
ICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5raWxsX2RyaXZlcigpCiAgICAgICAg
ICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2RvbmUnKQotICAgICAg
ICAgICAgc2VsZi5jbGVhbnVwKCkKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGV4aXRpbmci
ICUgc2VsZi5fbmFtZSkKKyAgICAgICAgICAgIHNlbGYuY2xlYW51cCgpCiAKICAgICBkZWYgaGFu
ZGxlX3Rlc3RfbGlzdChzZWxmLCBzcmMsIGxpc3RfbmFtZSwgdGVzdF9saXN0KToKICAgICAgICAg
c3RhcnRfdGltZSA9IHRpbWUudGltZSgpCkBAIC0xNTMsOSArMTcwLDkgQEAgY2xhc3MgV29ya2Vy
KG1hbmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgICAgIGlmIHNlbGYu
X3Rlc3RzX3J1bl9maWxlOgogICAgICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUuY2xvc2Uo
KQogICAgICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUgPSBOb25lCi0gICAgICAgIGlmIHNl
bGYuX3ByaW50ZXI6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLmNsZWFudXAoKQotICAgICAg
ICAgICAgc2VsZi5fcHJpbnRlciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fbWV0ZXI6CisgICAg
ICAgICAgICBzZWxmLl9tZXRlci5jbGVhbnVwKCkKKyAgICAgICAgICAgIHNlbGYuX21ldGVyID0g
Tm9uZQogCiAgICAgZGVmIHRpbWVvdXQoc2VsZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgICIiIkNv
bXB1dGUgdGhlIGFwcHJvcHJpYXRlIHRpbWVvdXQgdmFsdWUgZm9yIGEgdGVzdC4iIiIKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dv
cmtlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2Nv
bnRyb2xsZXJzL3dvcmtlcl91bml0dGVzdC5weQppbmRleCA2ZmQ1MjAyZDljNDAwN2YwZWU4NGQ5
YzEzNTZhZmNmYWEwZDlmNTkxLi5lYmI0ZTdhNWJiNWFlNjg3NDcxY2JhMzIwMGEwOGIzMWI1OGIx
MzZiIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250
cm9sbGVycy93b3JrZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyX3VuaXR0ZXN0LnB5CkBAIC00Niw4ICs0Niw3
IEBAIGNsYXNzIFdvcmtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIGlmIHdl
IGRpZG4ndCBzcGVjaWZ5IGEgcG9ydCB3aXRoIHRoZSAtLXBsYXRmb3JtIGZsYWcuCiAgICAgICAg
IHdvcmtlcl9jb25uZWN0aW9uID0gRmFrZUNvbm5lY3Rpb24oKQogICAgICAgICB3b3JrZXIgPSBX
b3JrZXIod29ya2VyX2Nvbm5lY3Rpb24sIFdvcmtlckFyZ3VtZW50cygxLCAnL3RtcCcsIE1vY2tP
cHRpb25zKHBsYXRmb3JtPU5vbmUsIHByaW50X29wdGlvbnM9Tm9uZSwgdmVyYm9zZT1GYWxzZSwg
YmF0Y2hfc2l6ZT0wKSkpCi0gICAgICAgIHdvcmtlci5fZG9uZSA9IFRydWUKLSAgICAgICAgd29y
a2VyLnJ1bigpCisgICAgICAgIHdvcmtlci5fc2V0X3VwX2hvc3RfYW5kX3BvcnQoKQogICAgICAg
ICBzZWxmLmFzc2VydE5vdEVxdWFscyh3b3JrZXIuX3BvcnQsIE5vbmUpCiAKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5w
eSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMu
cHkKaW5kZXggZWNhNjJlNzFlODIyYjE5M2VhNDc5MjFkOTY0MzAyNmYxMWU3OTNmMC4uNGY5MTBj
ZjhjOGY4Y2NiYmFiOTU0NDQ2MzZiMjQ2MDFmZmU0YzY2YSAxMDA3NTUKLS0tIGEvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC04
NSw3ICs4NSw3IEBAIGRlZiBsaW50KHBvcnQsIG9wdGlvbnMsIGV4cGVjdGF0aW9uc19jbGFzcyk6
CiBkZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIs
IGJ1aWxkYm90X291dHB1dD1zeXMuc3Rkb3V0KToKICAgICB3YXJuaW5ncyA9IF9zZXRfdXBfZGVy
aXZlZF9vcHRpb25zKHBvcnQsIG9wdGlvbnMpCiAKLSAgICBwcmludGVyID0gcHJpbnRpbmcuUHJp
bnRlcihwb3J0LCBvcHRpb25zLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0LCBjb25m
aWd1cmVfbG9nZ2luZz1UcnVlKQorICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHBvcnQs
IG9wdGlvbnMsIHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQsIGxvZ2dlcj1sb2dnaW5n
LmdldExvZ2dlcigpKQogCiAgICAgZm9yIHdhcm5pbmcgaW4gd2FybmluZ3M6CiAgICAgICAgIF9s
b2cud2FybmluZyh3YXJuaW5nKQpAQCAtNDgyLDYgKzQ4Miw3IEBAIGRlZiBtYWluKCk6CiAgICAg
ICAgIGhvc3QgPSBIb3N0KCkKICAgICBob3N0Ll9pbml0aWFsaXplX3NjbSgpCiAgICAgcG9ydCA9
IGhvc3QucG9ydF9mYWN0b3J5LmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zKQorICAgIGxv
Z2dpbmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiBvcHRpb25zLnZlcmJv
c2UgZWxzZSBsb2dnaW5nLklORk8pCiAgICAgcmV0dXJuIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdz
KQogCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Zp
ZXdzL21ldGVyZWRfc3RyZWFtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHkKaW5kZXggYjVjMjMzYjEwNmE3M2UwNGE2MzU0MDQz
NGU1MmZkNTRhNmRhYjliOS4uZGZhNDllNGU4MTBmYjZjN2M1MjM5OGU3OGE1ZjNhMmQ2ZDY0Mjk1
MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3Mv
bWV0ZXJlZF9zdHJlYW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0ucHkKQEAgLTEsNSArMSw1IEBACiAjIS91c3IvYmluL2Vu
diBweXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsNTggKzI3
LDk5IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4g
QU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiIKLVBhY2thZ2UgdGhh
dCBpbXBsZW1lbnRzIGEgc3RyZWFtIHdyYXBwZXIgdGhhdCBoYXMgJ21ldGVycycgYXMgd2VsbCBh
cwotcmVndWxhciBvdXRwdXQuIEEgJ21ldGVyJyBpcyBhIHNpbmdsZSBsaW5lIG9mIHRleHQgdGhh
dCBjYW4gYmUgZXJhc2VkCi1hbmQgcmV3cml0dGVuIHJlcGVhdGVkbHksIHdpdGhvdXQgcHJvZHVj
aW5nIG11bHRpcGxlIGxpbmVzIG9mIG91dHB1dC4gSXQKLWNhbiBiZSB1c2VkIHRvIHByb2R1Y2Ug
ZWZmZWN0cyBsaWtlIHByb2dyZXNzIGJhcnMuCi0KLVRoaXMgcGFja2FnZSBzaG91bGQgb25seSBi
ZSBjYWxsZWQgYnkgdGhlIHByaW50aW5nIG1vZHVsZSBpbiB0aGUgbGF5b3V0X3Rlc3RzCi1wYWNr
YWdlLgotIiIiCi0KLQotY2xhc3MgTWV0ZXJlZFN0cmVhbToKLSAgICAiIiJUaGlzIGNsYXNzIGlz
IGEgd3JhcHBlciBhcm91bmQgYSBzdHJlYW0gdGhhdCBhbGxvd3MgeW91IHRvIGltcGxlbWVudAot
ICAgIG1ldGVycyAocHJvZ3Jlc3MgYmFycywgZXRjLikuCi0KLSAgICBJdCBjYW4gYmUgdXNlZCBk
aXJlY3RseSBhcyBhIHN0cmVhbSwgYnkgY2FsbGluZyB3cml0ZSgpLCBidXQgYWxzbyBwcm92aWRl
cwotICAgIGEgbWV0aG9kIGNhbGxlZCB1cGRhdGUoKSB0aGF0IHdpbGwgb3ZlcndpdGUgcHJpb3Ig
dXBkYXRlcygpLgotICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtKToKLSAg
ICAgICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgc3RyZWFtOiBvdXRwdXQgc3RyZWFt
IHRvIHdyaXRlIHRvCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9zdHJlYW0gPSBzdHJlYW0K
LSAgICAgICAgc2VsZi5fZGlydHkgPSBGYWxzZQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZSA9
ICIiCi0KLSAgICBkZWYgd3JpdGUoc2VsZiwgdHh0KToKLSAgICAgICAgIiIiV3JpdGUgdG8gdGhl
IHN0cmVhbSwgb3ZlcndyaXRpbmcgYW5kIHJlc2V0dGluZyB0aGUgbWV0ZXIuIiIiCi0KLSAgICAg
ICAgIyBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIGJ5IHRoZSBsb2dnaW5nIGluZnJhc3RydWN0dXJl
LCBhbmQKLSAgICAgICAgIyBtdXN0IG5vdCBjYWxsIGJhY2sgaW50byBsb2dnaW5nLiBJdCBpcyBu
b3QgYSBwdWJsaWMgZnVuY3Rpb24uCi0gICAgICAgIHNlbGYuX292ZXJ3cml0ZSh0eHQpCi0gICAg
ICAgIHNlbGYuX3Jlc2V0KCkKLQotICAgIGRlZiB1cGRhdGUoc2VsZiwgdHh0KToKLSAgICAgICAg
IiIiV3JpdGUgYSBtZXNzYWdlIHRoYXQgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSBzdWJzZXF1ZW50
IHVwZGF0ZSgpIG9yIHdyaXRlKCkgY2FsbHMuIiIiCi0gICAgICAgIHNlbGYuX292ZXJ3cml0ZSh0
eHQpCi0KLSAgICBkZWYgX292ZXJ3cml0ZShzZWxmLCB0eHQpOgotICAgICAgICAjIFByaW50IHRo
ZSBuZWNlc3NhcnkgbnVtYmVyIG9mIGJhY2tzcGFjZXMgdG8gZXJhc2UgdGhlIHByZXZpb3VzCi0g
ICAgICAgICMgbWVzc2FnZS4KLSAgICAgICAgaWYgbGVuKHNlbGYuX2xhc3RfdXBkYXRlKToKLSAg
ICAgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZSgiXGIiICogbGVuKHNlbGYuX2xhc3RfdXBkYXRl
KSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICogbGVuKHNlbGYuX2xhc3Rf
dXBkYXRlKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxiIiAqIGxlbihzZWxm
Ll9sYXN0X3VwZGF0ZSkpCi0gICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZSh0eHQpCi0gICAgICAg
IGxhc3RfbmV3bGluZSA9IHR4dC5yZmluZCgiXG4iKQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0
ZSA9IHR4dFsobGFzdF9uZXdsaW5lICsgMSk6XQotICAgICAgICBzZWxmLl9kaXJ0eSA9IFRydWUK
LQotICAgIGRlZiBfcmVzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2RpcnR5ID0gRmFsc2UKLSAg
ICAgICAgc2VsZi5fbGFzdF91cGRhdGUgPSAnJworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcwor
aW1wb3J0IHN5cworaW1wb3J0IHRpbWUKKworCitMT0dfSEFORExFUl9OQU1FID0gJ01ldGVyZWRT
dHJlYW1Mb2dIYW5kbGVyJworCisKK2NsYXNzIE1ldGVyZWRTdHJlYW0ob2JqZWN0KToKKyAgICAi
IiIKKyAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBzdHJlYW0gd3JhcHBlciB0aGF0IGhhcyAn
bWV0ZXJzJyBhcyB3ZWxsIGFzCisgICAgcmVndWxhciBvdXRwdXQuIEEgJ21ldGVyJyBpcyBhIHNp
bmdsZSBsaW5lIG9mIHRleHQgdGhhdCBjYW4gYmUgZXJhc2VkCisgICAgYW5kIHJld3JpdHRlbiBy
ZXBlYXRlZGx5LCB3aXRob3V0IHByb2R1Y2luZyBtdWx0aXBsZSBsaW5lcyBvZiBvdXRwdXQuIEl0
CisgICAgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZSBlZmZlY3RzIGxpa2UgcHJvZ3Jlc3MgYmFycy4K
KyAgICAiIiIKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2VyYXN1cmUodHh0KToKKyAg
ICAgICAgbnVtX2NoYXJzID0gbGVuKHR4dCkKKyAgICAgICAgcmV0dXJuICdcYicgKiBudW1fY2hh
cnMgKyAnICcgKiBudW1fY2hhcnMgKyAnXGInICogbnVtX2NoYXJzCisKKyAgICBAc3RhdGljbWV0
aG9kCisgICAgZGVmIF9lbnN1cmVfbmV3bGluZSh0eHQpOgorICAgICAgICByZXR1cm4gdHh0IGlm
IHR4dC5lbmRzd2l0aCgnXG4nKSBlbHNlIHR4dCArICdcbicKKworICAgIGRlZiBfX2luaXRfXyhz
ZWxmLCBzdHJlYW09Tm9uZSwgdmVyYm9zZT1GYWxzZSwgbG9nZ2VyPU5vbmUsIHRpbWVfZm49Tm9u
ZSwgcGlkPU5vbmUpOgorICAgICAgICBzZWxmLl9zdHJlYW0gPSBzdHJlYW0gb3Igc3lzLnN0ZGVy
cgorICAgICAgICBzZWxmLl92ZXJib3NlID0gdmVyYm9zZQorICAgICAgICBzZWxmLl90aW1lX2Zu
ID0gdGltZV9mbiBvciB0aW1lLnRpbWUKKyAgICAgICAgc2VsZi5fcGlkID0gcGlkIG9yIG9zLmdl
dHBpZCgpCisKKyAgICAgICAgc2VsZi5faXNhdHR5ID0gc2VsZi5fc3RyZWFtLmlzYXR0eSgpCisg
ICAgICAgIHNlbGYuX2VyYXNpbmcgPSBzZWxmLl9pc2F0dHkgYW5kIG5vdCB2ZXJib3NlCisgICAg
ICAgIHNlbGYuX2xhc3RfcGFydGlhbF9saW5lID0gJycKKyAgICAgICAgc2VsZi5fbGFzdF93cml0
ZV90aW1lID0gMC4wCisgICAgICAgIHNlbGYuX3Rocm90dGxlX2RlbGF5X2luX3NlY3MgPSAwLjA2
NiBpZiBzZWxmLl9lcmFzaW5nIGVsc2UgMTAuMAorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGxv
Z2dlcgorICAgICAgICBzZWxmLl9sb2dfaGFuZGxlciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5f
bG9nZ2VyOgorICAgICAgICAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5ERUJVRyBpZiB2ZXJib3Nl
IGVsc2UgbG9nZ2luZy5JTkZPCisgICAgICAgICAgICBzZWxmLl9sb2dfaGFuZGxlciA9IF9Mb2dI
YW5kbGVyKHNlbGYpCisgICAgICAgICAgICBzZWxmLl9sb2dfaGFuZGxlci5zZXRMZXZlbChsb2df
bGV2ZWwpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLl9sb2dfaGFu
ZGxlcikKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLmNsZWFudXAoKQor
CisgICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2xvZ2dlcjoKKyAgICAg
ICAgICAgIHNlbGYuX2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuX2xvZ19oYW5kbGVyKQorICAg
ICAgICAgICAgc2VsZi5fbG9nX2hhbmRsZXIgPSBOb25lCisKKyAgICBkZWYgd3JpdGVfdGhyb3R0
bGVkX3VwZGF0ZShzZWxmLCB0eHQpOgorICAgICAgICBub3cgPSBzZWxmLl90aW1lX2ZuKCkKKyAg
ICAgICAgaWYgbm93IC0gc2VsZi5fbGFzdF93cml0ZV90aW1lID49IHNlbGYuX3Rocm90dGxlX2Rl
bGF5X2luX3NlY3M6CisgICAgICAgICAgICBzZWxmLndyaXRlX3VwZGF0ZSh0eHQsIG5vdykKKwor
ICAgIGRlZiB3cml0ZV91cGRhdGUoc2VsZiwgdHh0LCBub3c9Tm9uZSk6CisgICAgICAgIHNlbGYu
d3JpdGUodHh0LCBub3cpCisgICAgICAgIGlmIHNlbGYuX2VyYXNpbmc6CisgICAgICAgICAgICBz
ZWxmLl9sYXN0X3BhcnRpYWxfbGluZSA9IHR4dFt0eHQucmZpbmQoJ1xuJykgKyAxOl0KKworICAg
IGRlZiB3cml0ZShzZWxmLCB0eHQsIG5vdz1Ob25lKToKKyAgICAgICAgbm93ID0gbm93IG9yIHNl
bGYuX3RpbWVfZm4oKQorICAgICAgICBzZWxmLl9sYXN0X3dyaXRlX3RpbWUgPSBub3cKKyAgICAg
ICAgaWYgc2VsZi5fbGFzdF9wYXJ0aWFsX2xpbmU6CisgICAgICAgICAgICBzZWxmLl9lcmFzZV9s
YXN0X3BhcnRpYWxfbGluZSgpCisgICAgICAgIGlmIHNlbGYuX3ZlcmJvc2U6CisgICAgICAgICAg
ICBub3dfdHVwbGUgPSB0aW1lLmxvY2FsdGltZShub3cpCisgICAgICAgICAgICBtc2cgPSAnJTAy
ZDolMDJkOiUwMmQuJTAzZCAlZCAlcycgJSAobm93X3R1cGxlLnRtX2hvdXIsIG5vd190dXBsZS50
bV9taW4sIG5vd190dXBsZS50bV9zZWMsIGludCgobm93ICogMTAwMCkgJSAxMDAwKSwgc2VsZi5f
cGlkLCBzZWxmLl9lbnN1cmVfbmV3bGluZSh0eHQpKQorICAgICAgICBlbGlmIHNlbGYuX2lzYXR0
eToKKyAgICAgICAgICAgIG1zZyA9IHR4dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNn
ID0gc2VsZi5fZW5zdXJlX25ld2xpbmUodHh0KQorCisgICAgICAgIHNlbGYuX3N0cmVhbS53cml0
ZShtc2cpCisKKyAgICBkZWYgd3JpdGVsbihzZWxmLCB0eHQsIG5vdz1Ob25lKToKKyAgICAgICAg
c2VsZi53cml0ZShzZWxmLl9lbnN1cmVfbmV3bGluZSh0eHQpLCBub3cpCisKKyAgICBkZWYgX2Vy
YXNlX2xhc3RfcGFydGlhbF9saW5lKHNlbGYpOgorICAgICAgICBudW1fY2hhcnMgPSBsZW4oc2Vs
Zi5fbGFzdF9wYXJ0aWFsX2xpbmUpCisgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZShzZWxmLl9l
cmFzdXJlKHNlbGYuX2xhc3RfcGFydGlhbF9saW5lKSkKKyAgICAgICAgc2VsZi5fbGFzdF9wYXJ0
aWFsX2xpbmUgPSAnJworCisKK2NsYXNzIF9Mb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6Cisg
ICAgZGVmIF9faW5pdF9fKHNlbGYsIG1ldGVyKToKKyAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9f
aW5pdF9fKHNlbGYpCisgICAgICAgIHNlbGYuX21ldGVyID0gbWV0ZXIKKyAgICAgICAgc2VsZi5f
bmFtZSA9IExPR19IQU5ETEVSX05BTUUKKworICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6Cisg
ICAgICAgIHNlbGYuX21ldGVyLndyaXRlbG4ocmVjb3JkLm1zZywgcmVjb3JkLmNyZWF0ZWQpCmRp
ZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9tZXRl
cmVkX3N0cmVhbV91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5CmluZGV4IDM1OWNmY2Y2MGYxMzkz
NDMwZGJjZDNhZjFjN2IxMDkyZGVkZDEzMjkuLjRiMzc2NDYwYmZiMWIxNGI0ZjZiZjE2MzgzZjcz
ZTNkZWMzYjcxZTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRfc3RyZWFtX3VuaXR0ZXN0LnB5CkBA
IC0xLDUgKzEsNSBAQAogIyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAx
MiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBh
bmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zIGFyZQpAQCAtMjcsNTUgKzI3LDExNiBAQAogIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICMgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KIAoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCByZQogaW1wb3J0IFN0cmluZ0lPCiBpbXBv
cnQgdW5pdHRlc3QKIAogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9z
dHJlYW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0KIAogCi1jbGFzcyBUZXN0TWV0ZXJlZFN0cmVhbSh1
bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcmVndWxhcihzZWxmKToKLSAgICAgICAg
YSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgbSA9IE1ldGVyZWRTdHJlYW0oYSkKLSAg
ICAgICAgc2VsZi5hc3NlcnRGYWxzZShhLmdldHZhbHVlKCkpCi0KLSAgICAgICAgIyBiYXNpYyB0
ZXN0Ci0gICAgICAgIG0ud3JpdGUoImZvbyIpCi0gICAgICAgIGV4cCA9IFsnZm9vJ10KLSAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoYS5idWZsaXN0LCBleHApCi0KLSAgICAgICAgIyBub3cgY2hl
Y2sgdGhhdCBhIHNlY29uZCB3cml0ZSgpIGRvZXMgbm90IG92ZXJ3cml0ZSB0aGUgZmlyc3QuCi0g
ICAgICAgIG0ud3JpdGUoImJhciIpCi0gICAgICAgIGV4cC5hcHBlbmQoJ2JhcicpCi0gICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKGEuYnVmbGlzdCwgZXhwKQotCi0gICAgICAgIG0udXBkYXRlKCJi
YXR0ZXIiKQotICAgICAgICBleHAuYXBwZW5kKCdiYXR0ZXInKQotICAgICAgICBzZWxmLmFzc2Vy
dEVxdWFscyhhLmJ1Zmxpc3QsIGV4cCkKLQotICAgICAgICAjIFRoZSBuZXh0IHVwZGF0ZSgpIHNo
b3VsZCBvdmVyd3JpdGUgdGhlIGxhc3RlIHVwZGF0ZSgpIGJ1dCBub3QgdGhlCi0gICAgICAgICMg
b3RoZXIgdGV4dC4gTm90ZSB0aGF0IHRoZSBjdXJzb3IgaXMgZWZmZWN0aXZlbHkgcG9zaXRpb25l
ZCBhdCB0aGUKLSAgICAgICAgIyBlbmQgb2YgJ2ZvbycsIGV2ZW4gdGhvdWdoIHdlIGhhZCB0byBl
cmFzZSB0aHJlZSBtb3JlIGNoYXJhY3RlcnMuCi0gICAgICAgIG0udXBkYXRlKCJmb28iKQotICAg
ICAgICBleHAuYXBwZW5kKCdcYlxiXGJcYlxiXGIgICAgICBcYlxiXGJcYlxiXGInKQotICAgICAg
ICBleHAuYXBwZW5kKCdmb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3Qs
IGV4cCkKLQotICAgICAgICAjIG5vdyBjaGVjayB0aGF0IGEgd3JpdGUoKSBkb2VzIG92ZXJ3cml0
ZSB0aGUgdXBkYXRlCi0gICAgICAgIG0ud3JpdGUoImZvbyIpCi0gICAgICAgIGV4cC5hcHBlbmQo
J1xiXGJcYiAgIFxiXGJcYicpCi0gICAgICAgIGV4cC5hcHBlbmQoJ2ZvbycpCi0gICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGEuYnVmbGlzdCwgZXhwKQotCi0gICAgICAgICMgTm93IHRlc3QgdGhh
dCB3ZSBvbmx5IGJhY2sgdXAgdG8gdGhlIG1vc3QgcmVjZW50IG5ld2xpbmUuCi0KLSAgICAgICAg
IyBOb3RlIGFsc28gdGhhdCB3ZSBkbyBub3QgYmFjayB1cCB0byBlcmFzZSB0aGUgbW9zdCByZWNl
bnQgd3JpdGUoKSwKLSAgICAgICAgIyBpLmUuLCB3cml0ZSgpcyBkbyBub3QgZ2V0IGVyYXNlZC4K
LSAgICAgICAgYSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgbSA9IE1ldGVyZWRTdHJl
YW0oYSkKLSAgICAgICAgbS51cGRhdGUoImZvb1xuYmFyIikKLSAgICAgICAgbS51cGRhdGUoImJh
eiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGEuYnVmbGlzdCwgWydmb29cbmJhcicsICdc
YlxiXGIgICBcYlxiXGInLCAnYmF6J10pCitjbGFzcyBSZWd1bGFyVGVzdCh1bml0dGVzdC5UZXN0
Q2FzZSk6CisgICAgdmVyYm9zZSA9IEZhbHNlCisgICAgaXNhdHR5ID0gRmFsc2UKKworICAgIGRl
ZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5zdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygp
CisgICAgICAgIHNlbGYuYnVmbGlzdCA9IHNlbGYuc3RyZWFtLmJ1Zmxpc3QKKyAgICAgICAgc2Vs
Zi5zdHJlYW0uaXNhdHR5ID0gbGFtYmRhOiBzZWxmLmlzYXR0eQorCisgICAgICAgICMgY29uZmln
dXJlIGEgbG9nZ2VyIHRvIHRlc3QgdGhhdCBsb2cgY2FsbHMgZG8gbm9ybWFsbHkgZ2V0IGluY2x1
ZGVkLgorICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQor
ICAgICAgICBzZWxmLmxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorICAgICAgICBzZWxm
LmxvZ2dlci5wcm9wYWdhdGUgPSBGYWxzZQorCisgICAgICAgICMgYWRkIGEgZHVtbXkgdGltZSBj
b3VudGVyIGZvciBhIGRlZmF1bHQgYmVoYXZpb3IuCisgICAgICAgIHNlbGYudGltZXMgPSByYW5n
ZSgxMCkKKworICAgICAgICBzZWxmLm1ldGVyID0gTWV0ZXJlZFN0cmVhbShzZWxmLnN0cmVhbSwg
c2VsZi52ZXJib3NlLCBzZWxmLmxvZ2dlciwgc2VsZi50aW1lX2ZuLCA4Njc1KQorCisgICAgZGVm
IHRlYXJEb3duKHNlbGYpOgorICAgICAgICBpZiBzZWxmLm1ldGVyOgorICAgICAgICAgICAgc2Vs
Zi5tZXRlci5jbGVhbnVwKCkKKyAgICAgICAgICAgIHNlbGYubWV0ZXIgPSBOb25lCisKKyAgICBk
ZWYgdGltZV9mbihzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGltZXMucG9wKDApCisKKyAg
ICBkZWYgdGVzdF9sb2dnaW5nX25vdF9pbmNsdWRlZChzZWxmKToKKyAgICAgICAgIyBUaGlzIHRl
c3RzIHRoYXQgaWYgd2UgZG9uJ3QgaGFuZCBhIGxvZ2dlciB0byB0aGUgTWV0ZXJlZFN0cmVhbSwK
KyAgICAgICAgIyBub3RoaW5nIGlzIGxvZ2dlZC4KKyAgICAgICAgbG9nZ2luZ19zdHJlYW0gPSBT
dHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhhbmRs
ZXIobG9nZ2luZ19zdHJlYW0pCisgICAgICAgIHJvb3RfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dn
ZXIoKQorICAgICAgICBvcmlnX2xldmVsID0gcm9vdF9sb2dnZXIubGV2ZWwKKyAgICAgICAgcm9v
dF9sb2dnZXIuYWRkSGFuZGxlcihoYW5kbGVyKQorICAgICAgICByb290X2xvZ2dlci5zZXRMZXZl
bChsb2dnaW5nLkRFQlVHKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLm1ldGVyID0g
TWV0ZXJlZFN0cmVhbShzZWxmLnN0cmVhbSwgc2VsZi52ZXJib3NlLCBOb25lLCBzZWxmLnRpbWVf
Zm4sIDg2NzUpCisgICAgICAgICAgICBzZWxmLm1ldGVyLndyaXRlX3Rocm90dGxlZF91cGRhdGUo
J2ZvbycpCisgICAgICAgICAgICBzZWxmLm1ldGVyLndyaXRlX3VwZGF0ZSgnYmFyJykKKyAgICAg
ICAgICAgIHNlbGYubWV0ZXIud3JpdGUoJ2JheicpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVx
dWFscyhsb2dnaW5nX3N0cmVhbS5idWZsaXN0LCBbXSkKKyAgICAgICAgZmluYWxseToKKyAgICAg
ICAgICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcikKKyAgICAgICAgICAgIHJv
b3RfbG9nZ2VyLnNldExldmVsKG9yaWdfbGV2ZWwpCisKKyAgICBkZWYgX2Jhc2ljKHNlbGYsIHRp
bWVzKToKKyAgICAgICAgc2VsZi50aW1lcyA9IHRpbWVzCisgICAgICAgIHNlbGYubWV0ZXIud3Jp
dGVfdXBkYXRlKCdmb28nKQorICAgICAgICBzZWxmLm1ldGVyLndyaXRlX3VwZGF0ZSgnYmFyJykK
KyAgICAgICAgc2VsZi5tZXRlci53cml0ZV90aHJvdHRsZWRfdXBkYXRlKCdiYXonKQorICAgICAg
ICBzZWxmLm1ldGVyLndyaXRlX3Rocm90dGxlZF91cGRhdGUoJ2JheiAyJykKKyAgICAgICAgc2Vs
Zi5tZXRlci53cml0ZWxuKCdkb25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi50
aW1lcywgW10pCisgICAgICAgIHJldHVybiBzZWxmLmJ1Zmxpc3QKKworICAgIGRlZiB0ZXN0X2Jh
c2ljKHNlbGYpOgorICAgICAgICBidWZsaXN0ID0gc2VsZi5fYmFzaWMoWzAsIDEsIDIsIDEzLCAx
NF0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJ1Zmxpc3QsIFsnZm9vXG4nLCAnYmFyXG4n
LCAnYmF6IDJcbicsICdkb25lXG4nXSkKKworICAgIGRlZiBfbG9nX2FmdGVyX3VwZGF0ZShzZWxm
KToKKyAgICAgICAgc2VsZi5tZXRlci53cml0ZV91cGRhdGUoJ2ZvbycpCisgICAgICAgIHNlbGYu
bG9nZ2VyLmluZm8oJ2JhcicpCisgICAgICAgIHJldHVybiBzZWxmLmJ1Zmxpc3QKKworICAgIGRl
ZiB0ZXN0X2xvZ19hZnRlcl91cGRhdGUoc2VsZik6CisgICAgICAgIGJ1Zmxpc3QgPSBzZWxmLl9s
b2dfYWZ0ZXJfdXBkYXRlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVmbGlzdCwgWydm
b29cbicsICdiYXJcbiddKQorCisKK2NsYXNzIFR0eVRlc3QoUmVndWxhclRlc3QpOgorICAgIHZl
cmJvc2UgPSBGYWxzZQorICAgIGlzYXR0eSA9IFRydWUKKworICAgIGRlZiB0ZXN0X2Jhc2ljKHNl
bGYpOgorICAgICAgICBidWZsaXN0ID0gc2VsZi5fYmFzaWMoWzAsIDEsIDEuMDUsIDEuMSwgMl0p
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJ1Zmxpc3QsIFsnZm9vJywKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRlcmVkU3RyZWFtLl9lcmFzdXJlKCdmb28nKSwg
J2JhcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0ZXJlZFN0cmVh
bS5fZXJhc3VyZSgnYmFyJyksICdiYXogMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgTWV0ZXJlZFN0cmVhbS5fZXJhc3VyZSgnYmF6IDInKSwgJ2RvbmVcbiddKQorCisg
ICAgZGVmIHRlc3RfbG9nX2FmdGVyX3VwZGF0ZShzZWxmKToKKyAgICAgICAgYnVmbGlzdCA9IHNl
bGYuX2xvZ19hZnRlcl91cGRhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWZsaXN0
LCBbJ2ZvbycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTWV0ZXJlZFN0
cmVhbS5fZXJhc3VyZSgnZm9vJyksICdiYXJcbiddKQorCisKK2NsYXNzIFZlcmJvc2VUZXN0KFJl
Z3VsYXJUZXN0KToKKyAgICBpc2F0dHkgPSBGYWxzZQorICAgIHZlcmJvc2UgPSBUcnVlCisKKyAg
ICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgYnVmbGlzdCA9IHNlbGYuX2Jhc2ljKFsw
LCAxLCAyLjEsIDEzLCAxNC4xMjM0XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVmbGlz
dCwgWycxNjowMDowMC4wMDAgODY3NSBmb29cbicsICcxNjowMDowMS4wMDAgODY3NSBiYXJcbics
ICcxNjowMDoxMy4wMDAgODY3NSBiYXogMlxuJywgJzE2OjAwOjE0LjEyMyA4Njc1IGRvbmVcbidd
KQorCisgICAgZGVmIHRlc3RfbG9nX2FmdGVyX3VwZGF0ZShzZWxmKToKKyAgICAgICAgYnVmbGlz
dCA9IHNlbGYuX2xvZ19hZnRlcl91cGRhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhi
dWZsaXN0WzBdLCAnMTY6MDA6MDAuMDAwIDg2NzUgZm9vXG4nKQorCisgICAgICAgICMgVGhlIHNl
Y29uZCBhcmd1bWVudCBzaG91bGQgaGF2ZSBhIHJlYWwgdGltZXN0YW1wIGFuZCBwaWQsIHNvIHdl
IGp1c3QgY2hlY2sgdGhlIGZvcm1hdC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMobGVuKGJ1
Zmxpc3QpLCAyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJ1xkXGQ6XGRcZDpc
ZFxkLlxkXGRcZCBcZCsgYmFyXG4nLCBidWZsaXN0WzFdKSkKIAogCiBpZiBfX25hbWVfXyA9PSAn
X19tYWluX18nOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvdmlld3MvcHJpbnRpbmcucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy92aWV3cy9wcmludGluZy5weQppbmRleCA3NTBjNDhkZjllMzA5NTM0NjAyYTg4NTA3ODZjMzMx
MDNjOGYwYTY3Li4zZGYyOTU2YzE4MjYxOGVkMGRjZjEzZWQ2ZjE4NWU1MTBlNDg3ZmJhIDEwMDY0
NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGlu
Zy5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmlu
dGluZy5weQpAQCAtMSw1ICsxLDUgQEAKICMhL3Vzci9iaW4vZW52IHB5dGhvbgotIyBDb3B5cmln
aHQgKEMpIDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0
IChDKSAyMDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSwyMSArMjksMTMgQEAKIAogIiIiUGFja2Fn
ZSB0aGF0IGhhbmRsZXMgbm9uLWRlYnVnLCBub24tZmlsZSBvdXRwdXQgZm9yIHJ1bi13ZWJraXQt
dGVzdHMuIiIiCiAKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgb3B0cGFyc2UKLWltcG9ydCB0aW1l
CiAKIGZyb20gd2Via2l0cHkuY29tbW9uLm5ldCBpbXBvcnQgcmVzdWx0c2pzb25wYXJzZXIKLWZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzLm1ldGVyZWRfc3RyZWFtIGltcG9ydCBNZXRl
cmVkU3RyZWFtCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9leHBlY3Rh
dGlvbnMgaW1wb3J0IFRlc3RFeHBlY3RhdGlvbnMKLQotCi1fbG9nID0gbG9nZ2luZy5nZXRMb2dn
ZXIoX19uYW1lX18pCi0KK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzLm1ldGVyZWRf
c3RyZWFtIGltcG9ydCBNZXRlcmVkU3RyZWFtCiAKIE5VTV9TTE9XX1RFU1RTX1RPX0xPRyA9IDEw
Ci1GQVNUX1VQREFURVNfU0VDT05EUyA9IDAuMDMKLVNMT1dfVVBEQVRFU19TRUNPTkRTID0gMTAu
MAogCiBQUklOVF9ERUZBVUxUID0gIm1pc2Msb25lLWxpbmUtcHJvZ3Jlc3Msb25lLWxpbmUtc3Vt
bWFyeSx1bmV4cGVjdGVkLHVuZXhwZWN0ZWQtcmVzdWx0cyx1cGRhdGVzIgogUFJJTlRfRVZFUllU
SElORyA9ICJhY3R1YWwsY29uZmlnLGV4cGVjdGVkLG1pc2Msb25lLWxpbmUtcHJvZ3Jlc3Msb25l
LWxpbmUtc3VtbWFyeSxzbG93ZXN0LHRpbWluZyx1bmV4cGVjdGVkLHVuZXhwZWN0ZWQtcmVzdWx0
cyx1cGRhdGVzIgpAQCAtMTU0LDI3ICsxNDYsNiBAQCBkZWYgcGFyc2VfcHJpbnRfb3B0aW9ucyhw
cmludF9vcHRpb25zLCB2ZXJib3NlKToKICAgICByZXR1cm4gc3dpdGNoZXMKIAogCi1kZWYgX2Nv
bmZpZ3VyZV9sb2dnaW5nKHN0cmVhbSwgdmVyYm9zZSk6Ci0gICAgbG9nX2ZtdCA9ICclKG1lc3Nh
Z2UpcycKLSAgICBsb2dfZGF0ZWZtdCA9ICcleSVtJWQgJUg6JU06JVMnCi0gICAgbG9nX2xldmVs
ID0gbG9nZ2luZy5JTkZPCi0gICAgaWYgdmVyYm9zZToKLSAgICAgICAgbG9nX2ZtdCA9ICclKGFz
Y3RpbWUpcyAlKHByb2Nlc3MpZCAlKGZpbGVuYW1lKXM6JShsaW5lbm8pZCAlKGxldmVsbmFtZSlz
ICUobWVzc2FnZSlzJwotICAgICAgICBsb2dfbGV2ZWwgPSBsb2dnaW5nLkRFQlVHCi0KLSAgICBy
b290ID0gbG9nZ2luZy5nZXRMb2dnZXIoKQotICAgIGhhbmRsZXIgPSBsb2dnaW5nLlN0cmVhbUhh
bmRsZXIoc3RyZWFtKQotICAgIGhhbmRsZXIuc2V0Rm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVy
KGxvZ19mbXQsIE5vbmUpKQotICAgIHJvb3QuYWRkSGFuZGxlcihoYW5kbGVyKQotICAgIHJvb3Qu
c2V0TGV2ZWwobG9nX2xldmVsKQotICAgIHJldHVybiBoYW5kbGVyCi0KLQotZGVmIF9yZXN0b3Jl
X2xvZ2dpbmcoaGFuZGxlcl90b19yZW1vdmUpOgotICAgIHJvb3QgPSBsb2dnaW5nLmdldExvZ2dl
cigpCi0gICAgcm9vdC5oYW5kbGVycy5yZW1vdmUoaGFuZGxlcl90b19yZW1vdmUpCi0KLQogY2xh
c3MgUHJpbnRlcihvYmplY3QpOgogICAgICIiIkNsYXNzIGhhbmRsaW5nIGFsbCBub24tZGVidWct
bG9nZ2luZyBwcmludGluZyBkb25lIGJ5IHJ1bi13ZWJraXQtdGVzdHMuCiAKQEAgLTE4Nyw3ICsx
NTgsNyBAQCBjbGFzcyBQcmludGVyKG9iamVjdCk6CiAKICAgICBCeSBkZWZhdWx0IHRoZSBidWls
ZGJvdC1wYXJzZWQgY29kZSBnZXRzIGxvZ2dlZCB0byBzdGRvdXQsIGFuZCByZWd1bGFyCiAgICAg
b3V0cHV0IGdldHMgbG9nZ2VkIHRvIHN0ZGVyci4iIiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwg
cG9ydCwgb3B0aW9ucywgcmVndWxhcl9vdXRwdXQsIGJ1aWxkYm90X291dHB1dCwgY29uZmlndXJl
X2xvZ2dpbmcpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0LCBvcHRpb25zLCByZWd1bGFy
X291dHB1dCwgYnVpbGRib3Rfb3V0cHV0LCBsb2dnZXI9Tm9uZSk6CiAgICAgICAgICIiIgogICAg
ICAgICBBcmdzCiAgICAgICAgICAgcG9ydCAgICAgICAgICAgICAgIGludGVyZmFjZSB0byBwb3J0
LXNwZWNpZmljIHJvdXRpbmVzCkBAIC0xOTYsMzcgKzE2NywxNiBAQCBjbGFzcyBQcmludGVyKG9i
amVjdCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3VsZCBiZSB3cml0dGVuCiAg
ICAgICAgICAgYnVpbGRib3Rfb3V0cHV0ICAgIHN0cmVhbSB0byB3aGljaCBvdXRwdXQgaW50ZW5k
ZWQgdG8gYmUgcmVhZCBieQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgYnVpbGRi
b3RzIChhbmQgaHVtYW5zKSBzaG91bGQgYmUgd3JpdHRlbgotICAgICAgICAgIGNvbmZpZ3VyZV9s
b2dnaWduICBXaGV0aGVyIGEgbG9nZ2luZyBoYW5kbGVyIHNob3VsZCBiZSByZWdpc3RlcmVkCi0K
KyAgICAgICAgICBsb2dnZXIgICAgICAgICAgICAgb3B0aW9uYWwgbG9nZ2VyIHRvIGludGVncmF0
ZSBpbnRvIHRoZSBzdHJlYW0uCiAgICAgICAgICIiIgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9y
dAogICAgICAgICBzZWxmLl9vcHRpb25zID0gb3B0aW9ucwotICAgICAgICBzZWxmLl9zdHJlYW0g
PSByZWd1bGFyX291dHB1dAogICAgICAgICBzZWxmLl9idWlsZGJvdF9zdHJlYW0gPSBidWlsZGJv
dF9vdXRwdXQKLSAgICAgICAgc2VsZi5fbWV0ZXIgPSBOb25lCi0KLSAgICAgICAgIyBUaGVzZSBh
cmUgdXNlZCBmb3IgLS1wcmludCBvbmUtbGluZS1wcm9ncmVzcwotICAgICAgICBzZWxmLl9sYXN0
X3JlbWFpbmluZyA9IE5vbmUKLSAgICAgICAgc2VsZi5fbGFzdF91cGRhdGVfdGltZSA9IE5vbmUK
LQorICAgICAgICBzZWxmLl9tZXRlciA9IE1ldGVyZWRTdHJlYW0ocmVndWxhcl9vdXRwdXQsIG9w
dGlvbnMudmVyYm9zZSwgbG9nZ2VyPWxvZ2dlcikKICAgICAgICAgc2VsZi5zd2l0Y2hlcyA9IHBh
cnNlX3ByaW50X29wdGlvbnMob3B0aW9ucy5wcmludF9vcHRpb25zLCBvcHRpb25zLnZlcmJvc2Up
CiAKLSAgICAgICAgc2VsZi5fbG9nZ2luZ19oYW5kbGVyID0gTm9uZQotICAgICAgICBpZiBzZWxm
Ll9zdHJlYW0uaXNhdHR5KCkgYW5kIG5vdCBvcHRpb25zLnZlcmJvc2U6Ci0gICAgICAgICAgICBz
ZWxmLl91cGRhdGVfaW50ZXJ2YWxfc2Vjb25kcyA9IEZBU1RfVVBEQVRFU19TRUNPTkRTCi0gICAg
ICAgICAgICBzZWxmLl9tZXRlciA9IE1ldGVyZWRTdHJlYW0oc2VsZi5fc3RyZWFtKQotICAgICAg
ICAgICAgaWYgY29uZmlndXJlX2xvZ2dpbmc6Ci0gICAgICAgICAgICAgICAgc2VsZi5fbG9nZ2lu
Z19oYW5kbGVyID0gX2NvbmZpZ3VyZV9sb2dnaW5nKHNlbGYuX21ldGVyLCBvcHRpb25zLnZlcmJv
c2UpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl91cGRhdGVfaW50ZXJ2YWxfc2Vj
b25kcyA9IFNMT1dfVVBEQVRFU19TRUNPTkRTCi0gICAgICAgICAgICBpZiBjb25maWd1cmVfbG9n
Z2luZzoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnaW5nX2hhbmRsZXIgPSBfY29uZmlndXJl
X2xvZ2dpbmcoc2VsZi5fc3RyZWFtLCBvcHRpb25zLnZlcmJvc2UpCi0KICAgICBkZWYgY2xlYW51
cChzZWxmKToKLSAgICAgICAgIiIiUmVzdG9yZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gdG8gaXRz
IGluaXRpYWwgc2V0dGluZ3MuIiIiCi0gICAgICAgIGlmIHNlbGYuX2xvZ2dpbmdfaGFuZGxlcjoK
LSAgICAgICAgICAgIF9yZXN0b3JlX2xvZ2dpbmcoc2VsZi5fbG9nZ2luZ19oYW5kbGVyKQotICAg
ICAgICAgICAgc2VsZi5fbG9nZ2luZ19oYW5kbGVyID0gTm9uZQorICAgICAgICBzZWxmLl9tZXRl
ci5jbGVhbnVwKCkKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBzZWxmLmNsZWFu
dXAoKQpAQCAtMzUwLDI3ICszMDAsMTkgQEAgY2xhc3MgUHJpbnRlcihvYmplY3QpOgogICAgICAg
ICBpZiBzZWxmLmRpc2FibGVkKCdvbmUtbGluZS1wcm9ncmVzcycpOgogICAgICAgICAgICAgcmV0
dXJuCiAKLSAgICAgICAgbm93ID0gdGltZS50aW1lKCkKLSAgICAgICAgaWYgc2VsZi5fbGFzdF91
cGRhdGVfdGltZSBpcyBOb25lOgotICAgICAgICAgICAgc2VsZi5fbGFzdF91cGRhdGVfdGltZSA9
IG5vdwotCi0gICAgICAgIHRpbWVfc2luY2VfbGFzdF91cGRhdGUgPSBub3cgLSBzZWxmLl9sYXN0
X3VwZGF0ZV90aW1lCi0gICAgICAgIGlmIHRpbWVfc2luY2VfbGFzdF91cGRhdGUgPD0gc2VsZi5f
dXBkYXRlX2ludGVydmFsX3NlY29uZHM6CisgICAgICAgIGlmIHJlc3VsdF9zdW1tYXJ5LnJlbWFp
bmluZyA9PSAwOgorICAgICAgICAgICAgc2VsZi5fbWV0ZXIud3JpdGVfdXBkYXRlKCcnKQogICAg
ICAgICAgICAgcmV0dXJuCiAKLSAgICAgICAgc2VsZi5fbGFzdF91cGRhdGVfdGltZSA9IG5vdwot
CiAgICAgICAgIHBlcmNlbnRfY29tcGxldGUgPSAxMDAgKiAocmVzdWx0X3N1bW1hcnkuZXhwZWN0
ZWQgKwogICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZCkgLyByZXN1bHRfc3Vt
bWFyeS50b3RhbAogICAgICAgICBhY3Rpb24gPSAiVGVzdGluZyIKICAgICAgICAgaWYgcmV0cnlp
bmc6CiAgICAgICAgICAgICBhY3Rpb24gPSAiUmV0cnlpbmciCi0gICAgICAgIHNlbGYuX3VwZGF0
ZSgiJXMgKCVkJSUpOiAlZCByYW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4ndCwgJWQgbGVmdCIgJQot
ICAgICAgICAgICAgICAgICAgICAgKGFjdGlvbiwgcGVyY2VudF9jb21wbGV0ZSwgcmVzdWx0X3N1
bW1hcnkuZXhwZWN0ZWQsCi0gICAgICAgICAgICAgICAgICAgICAgcmVzdWx0X3N1bW1hcnkudW5l
eHBlY3RlZCwgcmVzdWx0X3N1bW1hcnkucmVtYWluaW5nKSkKIAotICAgICAgICBpZiByZXN1bHRf
c3VtbWFyeS5yZW1haW5pbmcgPT0gMDoKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZSgnJykKKyAg
ICAgICAgc2VsZi5fbWV0ZXIud3JpdGVfdGhyb3R0bGVkX3VwZGF0ZSgiJXMgKCVkJSUpOiAlZCBy
YW4gYXMgZXhwZWN0ZWQsICVkIGRpZG4ndCwgJWQgbGVmdCIgJQorICAgICAgICAgICAgKGFjdGlv
biwgcGVyY2VudF9jb21wbGV0ZSwgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQsCisgICAgICAgICAg
ICAgcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZCwgcmVzdWx0X3N1bW1hcnkucmVtYWluaW5nKSkK
IAogICAgIGRlZiBwcmludF91bmV4cGVjdGVkX3Jlc3VsdHMoc2VsZiwgdW5leHBlY3RlZF9yZXN1
bHRzKToKICAgICAgICAgIiIiUHJpbnRzIGEgbGlzdCBvZiB0aGUgdW5leHBlY3RlZCByZXN1bHRz
IHRvIHRoZSBidWlsZGJvdCBzdHJlYW0uIiIiCkBAIC00NTgsNyArNDAwLDcgQEAgY2xhc3MgUHJp
bnRlcihvYmplY3QpOgogICAgIGRlZiBwcmludF91cGRhdGUoc2VsZiwgbXNnKToKICAgICAgICAg
aWYgc2VsZi5kaXNhYmxlZCgndXBkYXRlcycpOgogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAg
IHNlbGYuX3VwZGF0ZShtc2cpCisgICAgICAgIHNlbGYuX21ldGVyLndyaXRlX3VwZGF0ZShtc2cp
CiAKICAgICBkZWYgd3JpdGUoc2VsZiwgbXNnLCBvcHRpb249Im1pc2MiKToKICAgICAgICAgaWYg
c2VsZi5kaXNhYmxlZChvcHRpb24pOgpAQCAtNDY2LDEwICs0MDgsNCBAQCBjbGFzcyBQcmludGVy
KG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3dyaXRlKG1zZykKIAogICAgIGRlZiBfd3JpdGUoc2Vs
ZiwgbXNnKToKLSAgICAgICAgX2xvZy5pbmZvKG1zZykKLQotICAgIGRlZiBfdXBkYXRlKHNlbGYs
IG1zZyk6Ci0gICAgICAgIGlmIHNlbGYuX21ldGVyOgotICAgICAgICAgICAgc2VsZi5fbWV0ZXIu
dXBkYXRlKG1zZykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3dyaXRlKG1zZykK
KyAgICAgICAgc2VsZi5fbWV0ZXIud3JpdGVsbihtc2cpCmRpZmYgLS1naXQgYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZ191bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0
LnB5CmluZGV4IDY4OTlkMmM1ZDRjZGIwNDUyNzA5Y2Q0ZGYwZWQ5NjkxZmM1YmFmN2QuLjg3Nzdm
ZDhkNmUzMjJiYTZkZTIzNTdjNDQ0Yzg4ZWU2ODYxZGQzM2IgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5Cisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3Vu
aXR0ZXN0LnB5CkBAIC0xLDUgKzEsNSBAQAogIyEvdXNyL2Jpbi9weXRob24KLSMgQ29weXJpZ2h0
IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjIENvcHlyaWdodCAo
QykgMjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogIwogIyBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjksNyArMjksNiBAQAogCiAiIiJVbml0IHRlc3Rz
IGZvciBwcmludGluZy5weS4iIiIKIAotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQog
aW1wb3J0IFN0cmluZ0lPCiBpbXBvcnQgdGltZQpAQCAtNTQsMzUgKzUzLDYgQEAgZGVmIGdldF9v
cHRpb25zKGFyZ3MpOgogCiAKIGNsYXNzIFRlc3RVdGlsaXR5RnVuY3Rpb25zKHVuaXR0ZXN0LlRl
c3RDYXNlKToKLSAgICBkZWYgYXNzZXJ0RW1wdHkoc2VsZiwgc3RyZWFtKToKLSAgICAgICAgc2Vs
Zi5hc3NlcnRGYWxzZShzdHJlYW0uZ2V0dmFsdWUoKSkKLQotICAgIGRlZiBhc3NlcnROb3RFbXB0
eShzZWxmLCBzdHJlYW0pOgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RyZWFtLmdldHZhbHVl
KCkpCi0KLSAgICBkZWYgYXNzZXJ0V3JpdHRlbihzZWxmLCBzdHJlYW0sIGNvbnRlbnRzKToKLSAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc3RyZWFtLmJ1Zmxpc3QsIGNvbnRlbnRzKQotCi0gICAg
ZGVmIHRlc3RfY29uZmlndXJlX2xvZ2dpbmcoc2VsZik6Ci0gICAgICAgIG9wdGlvbnMsIGFyZ3Mg
PSBnZXRfb3B0aW9ucyhbXSkKLSAgICAgICAgc3RyZWFtID0gU3RyaW5nSU8uU3RyaW5nSU8oKQot
ICAgICAgICBoYW5kbGVyID0gcHJpbnRpbmcuX2NvbmZpZ3VyZV9sb2dnaW5nKHN0cmVhbSwgb3B0
aW9ucy52ZXJib3NlKQotICAgICAgICBsb2dnaW5nLmluZm8oInRoaXMgc2hvdWxkIGJlIGxvZ2dl
ZCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoc3RyZWFtKQotCi0gICAgICAgIHN0cmVh
bSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgbG9nZ2luZy5kZWJ1ZygidGhpcyBzaG91
bGQgbm90IGJlIGxvZ2dlZCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoc3RyZWFtKQotCi0g
ICAgICAgIHByaW50aW5nLl9yZXN0b3JlX2xvZ2dpbmcoaGFuZGxlcikKLQotICAgICAgICBzdHJl
YW0gPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgICAgIG9wdGlvbnMsIGFyZ3MgPSBnZXRfb3B0
aW9ucyhbJy0tdmVyYm9zZSddKQotICAgICAgICBoYW5kbGVyID0gcHJpbnRpbmcuX2NvbmZpZ3Vy
ZV9sb2dnaW5nKHN0cmVhbSwgb3B0aW9ucy52ZXJib3NlKQotICAgICAgICBsb2dnaW5nLmRlYnVn
KCJ0aGlzIHNob3VsZCBiZSBsb2dnZWQiKQotICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KHN0
cmVhbSkKLSAgICAgICAgcHJpbnRpbmcuX3Jlc3RvcmVfbG9nZ2luZyhoYW5kbGVyKQotCiAgICAg
ZGVmIHRlc3RfcHJpbnRfb3B0aW9ucyhzZWxmKToKICAgICAgICAgb3B0aW9ucywgYXJncyA9IGdl
dF9vcHRpb25zKFtdKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3B0aW9ucyBpcyBub3QgTm9u
ZSkKQEAgLTE0NCw4ICsxMTQsNyBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICByZWd1bGFyX291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKICAgICAg
ICAgcmVndWxhcl9vdXRwdXQuaXNhdHR5ID0gbGFtYmRhOiB0dHkKICAgICAgICAgYnVpbGRib3Rf
b3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICBwcmludGVyID0gcHJpbnRpbmcu
UHJpbnRlcihzZWxmLl9wb3J0LCBvcHRpb25zLCByZWd1bGFyX291dHB1dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgYnVpbGRib3Rfb3V0cHV0LCBjb25maWd1cmVfbG9nZ2lu
Zz1UcnVlKQorICAgICAgICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihzZWxmLl9wb3J0LCBv
cHRpb25zLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0KQogICAgICAgICByZXR1cm4g
cHJpbnRlciwgcmVndWxhcl9vdXRwdXQsIGJ1aWxkYm90X291dHB1dAogCiAgICAgZGVmIGdldF9y
ZXN1bHQoc2VsZiwgdGVzdF9uYW1lLCByZXN1bHRfdHlwZT10ZXN0X2V4cGVjdGF0aW9ucy5QQVNT
LCBydW5fdGltZT0wKToKQEAgLTM1MCw3ICszMTksNyBAQCBjbGFzcyAgVGVzdHByaW50ZXIodW5p
dHRlc3QuVGVzdENhc2UpOgogICAgICAgICAgICAgICAgICAnZmFpbHVyZXMvZXhwZWN0ZWQvY3Jh
c2guaHRtbCddCiAgICAgICAgIHBhdGhzLCBycywgZXhwID0gc2VsZi5nZXRfcmVzdWx0X3N1bW1h
cnkodGVzdHMsIGV4cGVjdGF0aW9ucykKIAotICAgICAgICAjIEZpcnN0LCB0ZXN0IHRoYXQgd2Ug
cHJpbnQgbm90aGluZy4KKyAgICAgICAgIyBGaXJzdCwgdGVzdCB0aGF0IHdlIHByaW50IG5vdGhp
bmcgd2hlbiB3ZSBzaG91bGRuJ3QgcHJpbnQgYW55dGhpbmcuCiAgICAgICAgIHByaW50ZXIucHJp
bnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShv
dXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQpAQCAtMzU5LDU1ICszMjgsMjggQEAg
Y2xhc3MgIFRlc3RwcmludGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5hc3Nl
cnRFbXB0eShvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQogCi0gICAgICAgIHNl
bGYudGltZXMgPSBbMSwgMiwgMTIsIDEzLCAxNCwgMjMsIDMzXQotCi0gICAgICAgIGRlZiBtb2Nr
X3RpbWUoKToKLSAgICAgICAgICAgIHJldHVybiBzZWxmLnRpbWVzLnBvcCgwKQotCi0gICAgICAg
IG9yaWdfdGltZSA9IHRpbWUudGltZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0aW1lLnRp
bWUgPSBtb2NrX3RpbWUKLQotICAgICAgICAgICAgIyBUZXN0IHByaW50aW5nIHByb2dyZXNzIHVw
ZGF0ZXMgdG8gYSBmaWxlLgotICAgICAgICAgICAgcHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdl
dF9wcmludGVyKFsnLS1wcmludCcsICdvbmUtbGluZS1wcm9ncmVzcyddKQotICAgICAgICAgICAg
cHJpbnRlci5wcmludF9wcm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQotICAgICAgICAgICAgcHJp
bnRlci5wcmludF9wcm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQotICAgICAgICAgICAgc2VsZi5h
c3NlcnRFbXB0eShvdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KGVycikKLQotICAg
ICAgICAgICAgcHJpbnRlci5wcmludF9wcm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVt
cHR5KGVycikKLQotICAgICAgICAgICAgc2VsZi5yZXNldChlcnIpCi0gICAgICAgICAgICBzZWxm
LnJlc2V0KG91dCkKLSAgICAgICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIFRydWUs
IHBhdGhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCi0gICAgICAgICAgICBz
ZWxmLmFzc2VydEVtcHR5KGVycikKLQotICAgICAgICAgICAgcHJpbnRlci5wcmludF9wcm9ncmVz
cyhycywgVHJ1ZSwgcGF0aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoZXJyKQotCi0gICAgICAgICAgICAjIE5vdyBy
ZWNvbmZpZ3VyZSB0aGUgcHJpbnRlciB0byB0ZXN0IHByaW50aW5nIHRvIGEgVFRZIGluc3RlYWQg
b2YgYSBmaWxlLgotICAgICAgICAgICAgc2VsZi50aW1lcyA9IFsxLCAxLjAxLCAyLCAzXQotICAg
ICAgICAgICAgcHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcs
ICdvbmUtbGluZS1wcm9ncmVzcyddLCB0dHk9VHJ1ZSkKLSAgICAgICAgICAgIHByaW50ZXIucHJp
bnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKLSAgICAgICAgICAgIHByaW50ZXIucHJpbnRf
cHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHko
b3V0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCi0KLSAgICAgICAgICAgIHBy
aW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RW1wdHkob3V0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCi0K
LSAgICAgICAgICAgIHNlbGYucmVzZXQoZXJyKQotICAgICAgICAgICAgc2VsZi5yZXNldChvdXQp
Ci0gICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBUcnVlLCBwYXRocykKLSAg
ICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRO
b3RFbXB0eShlcnIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICB0aW1lLnRpbWUgPSBv
cmlnX3RpbWUKKyAgICAgICAgIyBOb3cgdGVzdCB0aGF0IHdlIGRvIHByaW50IHRoaW5ncy4KKyAg
ICAgICAgcHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdv
bmUtbGluZS1wcm9ncmVzcyddKQorICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBG
YWxzZSwgcGF0aHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQorICAgICAgICBzZWxm
LmFzc2VydE5vdEVtcHR5KGVycikKKworICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYu
Z2V0X3ByaW50ZXIoWyctLXByaW50JywgJ29uZS1saW5lLXByb2dyZXNzJ10pCisgICAgICAgIHBy
aW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIFRydWUsIHBhdGhzKQorICAgICAgICBzZWxmLmFzc2Vy
dEVtcHR5KG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCisKKyAgICAgICAg
cHJpbnRlciwgZXJyLCBvdXQgPSBzZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdvbmUtbGlu
ZS1wcm9ncmVzcyddKQorICAgICAgICBycy5yZW1haW5pbmcgPSAwCisgICAgICAgIHByaW50ZXIu
cHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNlLCBwYXRocykKKyAgICAgICAgc2VsZi5hc3NlcnRFbXB0
eShvdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoZXJyKQorCisgICAgICAgIHByaW50
ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIFRydWUsIHBhdGhzKQorICAgICAgICBzZWxmLmFzc2VydEVt
cHR5KG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCisKKwogCiAgICAgZGVm
IHRlc3Rfd3JpdGVfbm90aGluZyhzZWxmKToKICAgICAgICAgcHJpbnRlciwgZXJyLCBvdXQgPSBz
ZWxmLmdldF9wcmludGVyKFsnLS1wcmludCcsICdub3RoaW5nJ10pCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVy
LnB5CmluZGV4IGNlMWM3ZTkwMzg1MzI0Y2I1NmRkZDg2MDkxZjQ4MWY2Mzc2MTZkOWYuLmRiMTVl
YjM4YWI3ZjE5ODUwYWU2Zjg5OTQyNWYzMWVhYTc1YzRkODEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVy
LnB5CkBAIC02Miw3ICs2Miw3IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAg
ICAgICAgICAgc2VsZi5faG9zdCA9IEhvc3QoKQogICAgICAgICAgICAgc2VsZi5fcG9ydCA9IHNl
bGYuX2hvc3QucG9ydF9mYWN0b3J5LmdldChzZWxmLl9vcHRpb25zLnBsYXRmb3JtLCBzZWxmLl9v
cHRpb25zKQogICAgICAgICBzZWxmLl9ob3N0Ll9pbml0aWFsaXplX3NjbSgpCi0gICAgICAgIHNl
bGYuX3ByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHNlbGYuX3BvcnQsIHNlbGYuX29wdGlvbnMs
IHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQsIGNvbmZpZ3VyZV9sb2dnaW5nPUZhbHNl
KQorICAgICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihzZWxmLl9wb3J0LCBz
ZWxmLl9vcHRpb25zLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0KQogICAgICAgICBz
ZWxmLl93ZWJraXRfYmFzZV9kaXJfbGVuID0gbGVuKHNlbGYuX3BvcnQud2Via2l0X2Jhc2UoKSkK
ICAgICAgICAgc2VsZi5fYmFzZV9wYXRoID0gc2VsZi5fcG9ydC5wZXJmX3Rlc3RzX2RpcigpCiAg
ICAgICAgIHNlbGYuX3Jlc3VsdHMgPSB7fQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHkgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0
dGVzdC5weQppbmRleCAxYTI4N2E3Y2Y2YWRhM2NhOGI5YmFiNjQ2NDI4NzQ4YjAyOTRlNGU2Li5j
NTg5MWQ0MDEzNjFmZWM5MWM3MTAzNTA3MjE5ZWNhODFkMTAxMmQ3IDEwMDc1NQotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0
dGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weQpAQCAtMTgyLDcgKzE4Miw4IEBAIG1heCAxMTIwCiAg
ICAgICAgICAgICAgICAgVGVzdERyaXZlcldpdGhTdGFydENvdW50LnN0YXJ0X2NvdW50ICs9IDEK
IAogICAgICAgICBidWlsZGJvdF9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgICAg
IHJ1bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5lcihidWlsZGJvdF9vdXRwdXQsIGFyZ3M9WyItLXBh
dXNlLWJlZm9yZS10ZXN0aW5nIl0sIGRyaXZlcl9jbGFzcz1UZXN0RHJpdmVyV2l0aFN0YXJ0Q291
bnQpCisgICAgICAgIHJlZ3VsYXJfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAg
ICBydW5uZXIgPSBzZWxmLmNyZWF0ZV9ydW5uZXIoYnVpbGRib3Rfb3V0cHV0LCBhcmdzPVsiLS1w
YXVzZS1iZWZvcmUtdGVzdGluZyJdLCByZWd1bGFyX291dHB1dD1yZWd1bGFyX291dHB1dCwgZHJp
dmVyX2NsYXNzPVRlc3REcml2ZXJXaXRoU3RhcnRDb3VudCkKIAogICAgICAgICBkaXJuYW1lID0g
cnVubmVyLl9iYXNlX3BhdGggKyAnL2luc3BlY3Rvci8nCiAgICAgICAgIHRlc3RzID0gW2Rpcm5h
bWUgKyAncGFzcy5odG1sJ10KQEAgLTE5Myw5ICsxOTQsOSBAQCBtYXggMTEyMAogICAgICAgICAg
ICAgdW5leHBlY3RlZF9yZXN1bHRfY291bnQgPSBydW5uZXIuX3J1bl90ZXN0c19zZXQodGVzdHMs
IHJ1bm5lci5fcG9ydCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVGVzdERyaXZlcldp
dGhTdGFydENvdW50LnN0YXJ0X2NvdW50LCAxKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAg
ICAgXywgc3RkZXJyLCBsb2dzID0gb3V0cHV0LnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgICAg
IF8sIHN0ZGVyciwgXyA9IG91dHB1dC5yZXN0b3JlX291dHB1dCgpCiAgICAgICAgICAgICBzZWxm
LmFzc2VydEVxdWFsKHN0ZGVyciwgIlJlYWR5IHRvIHJ1biB0ZXN0P1xuIikKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0VHJ1ZSgiUnVubmluZyBpbnNwZWN0b3IvcGFzcy5odG1sICgxIG9mIDEpIiBp
biBsb2dzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJSdW5uaW5nIGluc3BlY3Rvci9w
YXNzLmh0bWwgKDEgb2YgMSkiIGluIHJlZ3VsYXJfb3V0cHV0LmdldHZhbHVlKCkpCiAKICAgICBk
ZWYgdGVzdF9ydW5fdGVzdF9zZXRfZm9yX3BhcnNlcl90ZXN0cyhzZWxmKToKICAgICAgICAgYnVp
bGRib3Rfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>133867</attachid>
            <date>2012-03-26 12:33:22 -0700</date>
            <delta_ts>2012-03-26 12:35:23 -0700</delta_ts>
            <desc>Patch w/ fix for python 2.6 compatibility.</desc>
            <filename>bug-73846-20120326123321.patch</filename>
            <type>text/plain</type>
            <size>39304</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyMTMyCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggODkwNzQ4MDk4MjIyMDJjZWMxYTJkMjVjODRiZWZhZGVj
ODdhNDIzMS4uMGVhYmFmODkwZmQ5NGMxOTljMTM3NmQyMjY4YWMzMjczYWQ3MjgyYyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDc1
IEBACisyMDEyLTAzLTI2ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIGNsZWFuIHVwIE5SV1QgbG9nZ2luZy9tZXRlcmluZywgYmUgbGVzcyB2ZXJib3NlCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03Mzg0NgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgUmUtbGFuZCByMTEyMDE0
IHdpdGggYSBidWlsZCBmaXggZm9yIFB5dGhvbiAyLjYgY29tcGF0aWJpbGl0eS4KKworICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5p
dHRlc3QucHk6CisgICAgICAgIChNYW5hZ2VyVGVzdC50ZXN0X2h0dHBfbG9ja2luZyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93
b3JrZXJfYnJva2VyLnB5OgorICAgICAgICAoQWJzdHJhY3RXb3JrZXIucnVuKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHk6Cisg
ICAgICAgIChXb3JrZXIuX19pbml0X18pOgorICAgICAgICAoV29ya2VyLl9zZXRfdXBfbG9nZ2lu
Zyk6CisgICAgICAgIChXb3JrZXIpOgorICAgICAgICAoV29ya2VyLl9zZXRfdXBfaG9zdF9hbmRf
cG9ydCk6CisgICAgICAgIChXb3JrZXIucnVuKToKKyAgICAgICAgKFdvcmtlci5jbGVhbnVwKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3Jr
ZXJfdW5pdHRlc3QucHk6CisgICAgICAgIChXb3JrZXJUZXN0LnRlc3RfZGVmYXVsdF9wbGF0Zm9y
bV9pbl93b3JrZXIpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHk6CisgICAgICAgIChydW4pOgorICAgICAgICAobWFpbik6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW0u
cHk6CisgICAgICAgIChNZXRlcmVkU3RyZWFtKToKKyAgICAgICAgKE1ldGVyZWRTdHJlYW0uaW1w
bGVtZW50cyk6CisgICAgICAgIChNZXRlcmVkU3RyZWFtLl9lcmFzdXJlKToKKyAgICAgICAgKE1l
dGVyZWRTdHJlYW0uX2Vuc3VyZV9uZXdsaW5lKToKKyAgICAgICAgKE1ldGVyZWRTdHJlYW0uX19p
bml0X18pOgorICAgICAgICAoTWV0ZXJlZFN0cmVhbS5fX2RlbF9fKToKKyAgICAgICAgKE1ldGVy
ZWRTdHJlYW0uY2xlYW51cCk6CisgICAgICAgIChNZXRlcmVkU3RyZWFtLndyaXRlX3Rocm90dGxl
ZF91cGRhdGUpOgorICAgICAgICAoTWV0ZXJlZFN0cmVhbS53cml0ZV91cGRhdGUpOgorICAgICAg
ICAoTWV0ZXJlZFN0cmVhbS53cml0ZSk6CisgICAgICAgIChNZXRlcmVkU3RyZWFtLndyaXRlbG4p
OgorICAgICAgICAoTWV0ZXJlZFN0cmVhbS5fZXJhc2VfbGFzdF9wYXJ0aWFsX2xpbmUpOgorICAg
ICAgICAoX0xvZ0hhbmRsZXIpOgorICAgICAgICAoX0xvZ0hhbmRsZXIuX19pbml0X18pOgorICAg
ICAgICAoX0xvZ0hhbmRsZXIuZW1pdCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHk6CisgICAgICAgIChSZWd1
bGFyVGVzdCk6CisgICAgICAgIChSZWd1bGFyVGVzdC5zZXRVcCk6CisgICAgICAgIChSZWd1bGFy
VGVzdC50ZWFyRG93bik6CisgICAgICAgIChSZWd1bGFyVGVzdC50aW1lX2ZuKToKKyAgICAgICAg
KFJlZ3VsYXJUZXN0LnRlc3RfbG9nZ2luZ19ub3RfaW5jbHVkZWQpOgorICAgICAgICAoUmVndWxh
clRlc3QuX2Jhc2ljKToKKyAgICAgICAgKFJlZ3VsYXJUZXN0LnRlc3RfYmFzaWMpOgorICAgICAg
ICAoUmVndWxhclRlc3QuX2xvZ19hZnRlcl91cGRhdGUpOgorICAgICAgICAoUmVndWxhclRlc3Qu
dGVzdF9sb2dfYWZ0ZXJfdXBkYXRlKToKKyAgICAgICAgKFR0eVRlc3QpOgorICAgICAgICAoVHR5
VGVzdC50ZXN0X2Jhc2ljKToKKyAgICAgICAgKFR0eVRlc3QudGVzdF9sb2dfYWZ0ZXJfdXBkYXRl
KToKKyAgICAgICAgKFZlcmJvc2VUZXN0KToKKyAgICAgICAgKFZlcmJvc2VUZXN0LnRlc3RfYmFz
aWMpOgorICAgICAgICAoVmVyYm9zZVRlc3QudGVzdF9sb2dfYWZ0ZXJfdXBkYXRlKToKKyAgICAg
ICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92aWV3cy9wcmludGluZy5weToKKyAg
ICAgICAgKHBhcnNlX3ByaW50X29wdGlvbnMpOgorICAgICAgICAoUHJpbnRlci5fX2luaXRfXyk6
CisgICAgICAgIChQcmludGVyLmNsZWFudXApOgorICAgICAgICAoUHJpbnRlci5wcmludF9wcm9n
cmVzcyk6CisgICAgICAgIChQcmludGVyLnByaW50X3VwZGF0ZSk6CisgICAgICAgIChQcmludGVy
Ll93cml0ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3Mv
cHJpbnRpbmdfdW5pdHRlc3QucHk6CisgICAgICAgIChUZXN0cHJpbnRlci5nZXRfcHJpbnRlcik6
CisgICAgICAgIChUZXN0cHJpbnRlci50ZXN0X3ByaW50X3Byb2dyZXNzKToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weToKKyAg
ICAgICAgKFBlcmZUZXN0c1J1bm5lci5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0cy93ZWJr
aXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXJfdW5pdHRlc3QucHk6CisgICAg
ICAgICh0ZXN0X3J1bl90ZXN0X3BhdXNlX2JlZm9yZV90ZXN0aW5nKToKKwogMjAxMi0wMy0yNiAg
TGVvIFlhbmcgIDxsZW8ueWFuZ0B0b3JjaG1vYmlsZS5jb20uY24+CiAKICAgICAgICAgW0JsYWNr
QmVycnldIFNrZWxldG9uIGNvZGUgb2YgQXN5bmNGaWxlU3lzdGVtQmxhY2tCZXJyeS5jcHAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJz
L21hbmFnZXJfdW5pdHRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0LnB5CmluZGV4IDhiYzZhZmZmZTEzODZlYTUx
NTNlZDM5NjkxN2JlNjIxNDg5OWM2MGYuLjNmNThlN2I0YzUxYjFhODdlZWQwNWZiMTA4YTA1M2Ri
MDM4NGYyNWYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQpAQCAtMjE0
LDcgKzIxNCw3IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAg
ICAgaG9zdCA9IE1vY2tIb3N0KCkKICAgICAgICAgcG9ydCA9IGhvc3QucG9ydF9mYWN0b3J5Lmdl
dChwb3J0X25hbWU9b3B0aW9ucy5wbGF0Zm9ybSwgb3B0aW9ucz1vcHRpb25zKQogICAgICAgICBy
dW5fd2Via2l0X3Rlc3RzLl9zZXRfdXBfZGVyaXZlZF9vcHRpb25zKHBvcnQsIG9wdGlvbnMpCi0g
ICAgICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHBvcnQsIG9wdGlvbnMsIFN0cmluZ0lP
LlN0cmluZ0lPKCksIFN0cmluZ0lPLlN0cmluZ0lPKCksIGNvbmZpZ3VyZV9sb2dnaW5nPUZhbHNl
KQorICAgICAgICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihwb3J0LCBvcHRpb25zLCBTdHJp
bmdJTy5TdHJpbmdJTygpLCBTdHJpbmdJTy5TdHJpbmdJTygpKQogICAgICAgICBtYW5hZ2VyID0g
TG9ja0NoZWNraW5nTWFuYWdlcihwb3J0LCBvcHRpb25zLCBwcmludGVyKQogICAgICAgICBtYW5h
Z2VyLmNvbGxlY3RfdGVzdHMoYXJncykKICAgICAgICAgbWFuYWdlci5wYXJzZV9leHBlY3RhdGlv
bnMoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29u
dHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl93b3JrZXJfYnJva2VyLnB5CmluZGV4
IDcwYzQzYTZkNDE1ZDM0MDY1YjE0YTczZTNlMWRlZjc4MWZmYTIzZmYuLjA4YzA1OWE5NTc2Yzkx
OWQzNDg2OWVlYzI2YjRiMmNiN2E4ZDFjYzUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfd29ya2VyX2Jyb2tlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5h
Z2VyX3dvcmtlcl9icm9rZXIucHkKQEAgLTI3NCw3ICsyNzQsNiBAQCBjbGFzcyBBYnN0cmFjdFdv
cmtlcihCcm9rZXJDbGllbnQpOgogICAgICAgICAiIiJDYWxsYmFjayBmb3IgdGhlIHdvcmtlciB0
byBzdGFydCBleGVjdXRpbmcuIFR5cGljYWxseSBkb2VzIGFueQogICAgICAgICByZW1haW5pbmcg
aW5pdGlhbGl6YXRpb24gYW5kIHRoZW4gY2FsbHMgYnJva2VyX2Nvbm5lY3Rpb24ucnVuX21lc3Nh
Z2VfbG9vcCgpLiIiIgogICAgICAgICBleGNlcHRpb25fbXNnID0gIiIKLSAgICAgICAgX2xvZy5k
ZWJ1ZygiJXMgc3RhcnRpbmciICUgc2VsZi5fbmFtZSkKIAogICAgICAgICB0cnk6CiAgICAgICAg
ICAgICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5ydW5fbWVzc2FnZV9sb29wKCkKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dv
cmtlci5weQppbmRleCAyMmMwYTVmMDQyMzEwNWUzMDkzOGI4ZWYzNTI3ZGM2N2UyMDI5YWEyLi5i
MDU4OGFiZGYyMzI2M2MzYzk3Y2I0ZGE5N2Q5YjA3MmMyZDQ4MGY3IDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy93b3JrZXIucHkKKysr
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2Vy
LnB5CkBAIC0zOCw3ICszOCw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xs
ZXJzIGltcG9ydCBtYW5hZ2VyX3dvcmtlcl9icm9rZXIKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLmNvbnRyb2xsZXJzIGltcG9ydCBzaW5nbGVfdGVzdF9ydW5uZXIKIGZyb20gd2Via2l0cHku
bGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0
cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9yZXN1bHRzCi1mcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKK2Zyb20gd2Via2l0cHkubGF5b3V0
X3Rlc3RzLnZpZXdzIGltcG9ydCBtZXRlcmVkX3N0cmVhbQogCiAKIF9sb2cgPSBsb2dnaW5nLmdl
dExvZ2dlcihfX25hbWVfXykKQEAgLTY1LDcgKzY1LDcgQEAgY2xhc3MgV29ya2VyKG1hbmFnZXJf
d29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgICAgIHNlbGYuX2RyaXZlciA9IE5v
bmUKICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUgPSBOb25lCiAgICAgICAgIHNlbGYuX3Rl
c3RzX3J1bl9maWxlbmFtZSA9IE5vbmUKLSAgICAgICAgc2VsZi5fcHJpbnRlciA9IE5vbmUKKyAg
ICAgICAgc2VsZi5fbWV0ZXIgPSBOb25lCiAKICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAg
ICAgc2VsZi5jbGVhbnVwKCkKQEAgLTgyLDQxICs4Miw1OSBAQCBjbGFzcyBXb3JrZXIobWFuYWdl
cl93b3JrZXJfYnJva2VyLkFic3RyYWN0V29ya2VyKToKICAgICAgICAgdGVzdHNfcnVuX2ZpbGVu
YW1lID0gc2VsZi5fZmlsZXN5c3RlbS5qb2luKHNlbGYuX3Jlc3VsdHNfZGlyZWN0b3J5LCAidGVz
dHNfcnVuJWQudHh0IiAlIHNlbGYuX3dvcmtlcl9udW1iZXIpCiAgICAgICAgIHNlbGYuX3Rlc3Rz
X3J1bl9maWxlID0gc2VsZi5fZmlsZXN5c3RlbS5vcGVuX3RleHRfZmlsZV9mb3Jfd3JpdGluZyh0
ZXN0c19ydW5fZmlsZW5hbWUpCiAKKyAgICBkZWYgX3NldF91cF9sb2dnaW5nKHNlbGYpOgorICAg
ICAgICAjIFRoZSB1bml4IG11bHRpcHJvY2Vzc2luZyBpbXBsZW1lbnRhdGlvbiBjbG9uZXMgdGhl
IE1ldGVyZWRTdHJlYW0gbG9nIGhhbmRsZXIKKyAgICAgICAgIyBpbnRvIHRoZSBjaGlsZCBwcm9j
ZXNzLCBzbyB3ZSBuZWVkIHRvIHJlbW92ZSBpdCBiZWZvcmUgd2UgY2FuCisgICAgICAgICMgYWRk
IGEgbmV3IG9uZSB0byBnZXQgdGhlIGNvcnJlY3QgcGlkIGxvZ2dlZC4KKyAgICAgICAgcm9vdF9s
b2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIGhhbmRsZXJfdG9fcmVtb3ZlID0g
Tm9uZQorICAgICAgICBmb3IgaCBpbiByb290X2xvZ2dlci5oYW5kbGVyczoKKyAgICAgICAgICAg
ICMgbG9nIGhhbmRsZXJzIGRvbid0IGhhdmUgbmFtZXMgdW50aWwgcHl0aG9uIDIuNy4KKyAgICAg
ICAgICAgIGlmIGdldGF0dHIoaCwgJ25hbWUnLCAnJykgPT0gbWV0ZXJlZF9zdHJlYW0uTE9HX0hB
TkRMRVJfTkFNRToKKyAgICAgICAgICAgICAgICBoYW5kbGVyX3RvX3JlbW92ZSA9IGgKKyAgICAg
ICAgICAgICAgICBicmVhaworICAgICAgICBpZiBoYW5kbGVyX3RvX3JlbW92ZToKKyAgICAgICAg
ICAgIHJvb3RfbG9nZ2VyLnJlbW92ZUhhbmRsZXIoaGFuZGxlcl90b19yZW1vdmUpCisKKyAgICAg
ICAgIyBGSVhNRTogVGhpcyB3b24ndCB3b3JrIGlmIHRoZSBjYWxsaW5nIHByb2Nlc3MgaXMgbG9n
Z2luZworICAgICAgICAjIHNvbWV3aGVyZSBvdGhlciB0aGFuIHN5cy5zdGRlcnIsIGJ1dCBJJ20g
bm90IHN1cmUKKyAgICAgICAgIyBpZiB0aGlzIHdpbGwgYmUgYW4gaXNzdWUgaW4gcHJhY3RpY2Uu
IEFsc28sIGl0IHdvdWxkIGJlCisgICAgICAgICMgbmljZSBpZiB3ZSB0cmFwcGVkIGFsbCBvZiB0
aGUgbWVzc2FnZXMgZm9yIGEgZ2l2ZW4gdGVzdAorICAgICAgICAjIGFuZCBzZW50IHRoZW0gYmFj
ayBpbiBmaW5pc2hlZF90ZXN0KCkgcmF0aGVyIHRoYW4gbG9nZ2luZworICAgICAgICAjIHRoZW0g
dG8gc3RkZXJyLgorICAgICAgICBpZiBub3Qgcm9vdF9sb2dnZXIuaGFuZGxlcnM6CisgICAgICAg
ICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucworICAgICAgICAgICAgcm9vdF9sb2dnZXIuc2V0
TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiBvcHRpb25zLnZlcmJvc2UgZWxzZSBsb2dnaW5nLklORk8p
CisgICAgICAgICAgICBzZWxmLl9tZXRlciA9IG1ldGVyZWRfc3RyZWFtLk1ldGVyZWRTdHJlYW0o
c3lzLnN0ZGVyciwgb3B0aW9ucy52ZXJib3NlLCBsb2dnZXI9cm9vdF9sb2dnZXIpCisKKyAgICBk
ZWYgX3NldF91cF9ob3N0X2FuZF9wb3J0KHNlbGYpOgorICAgICAgICBvcHRpb25zID0gc2VsZi5f
b3B0aW9ucworICAgICAgICBpZiBvcHRpb25zLnBsYXRmb3JtIGFuZCAndGVzdCcgaW4gb3B0aW9u
cy5wbGF0Zm9ybToKKyAgICAgICAgICAgICMgSXQgaXMgbGFtZSB0byBpbXBvcnQgbW9ja3MgaW50
byByZWFsIGNvZGUsIGJ1dCB0aGlzIGFsbG93cyB1cyB0byB1c2UgdGhlIHRlc3QgcG9ydCBpbiBt
dWx0aS1wcm9jZXNzIHRlc3RzIGFzIHdlbGwuCisgICAgICAgICAgICBmcm9tIHdlYmtpdHB5LmNv
bW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0CisgICAgICAgICAgICBob3N0ID0gTW9ja0hv
c3QoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQorICAgICAgICBz
ZWxmLl9wb3J0ID0gaG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KG9wdGlvbnMucGxhdGZvcm0sIG9wdGlv
bnMpCisKICAgICBkZWYgc2V0X2lubGluZV9hcmd1bWVudHMoc2VsZiwgcG9ydCk6CiAgICAgICAg
IHNlbGYuX3BvcnQgPSBwb3J0CiAKICAgICBkZWYgcnVuKHNlbGYpOgogICAgICAgICBpZiBub3Qg
c2VsZi5fcG9ydDoKLSAgICAgICAgICAgICMgV2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBwcm9j
ZXNzIGFuZCBuZWVkIHRvIGNyZWF0ZSBhIG5ldyBIb3N0LgotICAgICAgICAgICAgaWYgc2VsZi5f
b3B0aW9ucy5wbGF0Zm9ybSBhbmQgJ3Rlc3QnIGluIHNlbGYuX29wdGlvbnMucGxhdGZvcm06Ci0g
ICAgICAgICAgICAgICAgIyBJdCBpcyBsYW1lIHRvIGltcG9ydCBtb2NrcyBpbnRvIHJlYWwgY29k
ZSwgYnV0IHRoaXMgYWxsb3dzIHVzIHRvIHVzZSB0aGUgdGVzdCBwb3J0IGluIG11bHRpLXByb2Nl
c3MgdGVzdHMgYXMgd2VsbC4KLSAgICAgICAgICAgICAgICBmcm9tIHdlYmtpdHB5LmNvbW1vbi5o
b3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Ci0gICAgICAgICAgICAgICAgaG9zdCA9IE1vY2tIb3N0
KCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgaG9zdCA9IEhvc3QoKQotCi0g
ICAgICAgICAgICBvcHRpb25zID0gc2VsZi5fb3B0aW9ucwotICAgICAgICAgICAgc2VsZi5fcG9y
dCA9IGhvc3QucG9ydF9mYWN0b3J5LmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zKQotCi0g
ICAgICAgICAgICAjIFRoZSB1bml4IG11bHRpcHJvY2Vzc2luZyBpbXBsZW1lbnRhdGlvbiBjbG9u
ZXMgdGhlCi0gICAgICAgICAgICAjIGxvZyBoYW5kbGVyIGNvbmZpZ3VyYXRpb24gaW50byB0aGUg
Y2hpbGQgcHJvY2Vzc2VzLAotICAgICAgICAgICAgIyBidXQgdGhlIHdpbiBpbXBsZW1lbnRhdGlv
biBkb2Vzbid0LgotICAgICAgICAgICAgY29uZmlndXJlX2xvZ2dpbmcgPSAoc3lzLnBsYXRmb3Jt
ID09ICd3aW4zMicpCi0KLSAgICAgICAgICAgICMgRklYTUU6IFRoaXMgd29uJ3Qgd29yayBpZiB0
aGUgY2FsbGluZyBwcm9jZXNzIGlzIGxvZ2dpbmcKLSAgICAgICAgICAgICMgc29tZXdoZXJlIG90
aGVyIHRoYW4gc3lzLnN0ZGVyciBhbmQgc3lzLnN0ZG91dCwgYnV0IEknbSBub3Qgc3VyZQotICAg
ICAgICAgICAgIyBpZiB0aGlzIHdpbGwgYmUgYW4gaXNzdWUgaW4gcHJhY3RpY2UuCi0gICAgICAg
ICAgICBzZWxmLl9wcmludGVyID0gcHJpbnRpbmcuUHJpbnRlcihzZWxmLl9wb3J0LCBvcHRpb25z
LCBzeXMuc3RkZXJyLCBzeXMuc3Rkb3V0LCBjb25maWd1cmVfbG9nZ2luZykKKyAgICAgICAgICAg
ICMgV2UgYXJlIHJ1bm5pbmcgaW4gYSBjaGlsZCBwcm9jZXNzIGFuZCBuZWVkIHRvIGluaXRpYWxp
emUgdGhpbmdzLgorICAgICAgICAgICAgc2VsZi5fc2V0X3VwX2xvZ2dpbmcoKQorICAgICAgICAg
ICAgc2VsZi5fc2V0X3VwX2hvc3RfYW5kX3BvcnQoKQogCiAgICAgICAgIHNlbGYuc2FmZV9pbml0
KCkKLQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfbG9nLmRlYnVnKCIlcyBzdGFydGluZyIg
JSBzZWxmLl9uYW1lKQogICAgICAgICAgICAgc3VwZXIoV29ya2VyLCBzZWxmKS5ydW4oKQogICAg
ICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5raWxsX2RyaXZlcigpCiAgICAgICAgICAg
ICBzZWxmLl93b3JrZXJfY29ubmVjdGlvbi5wb3N0X21lc3NhZ2UoJ2RvbmUnKQotICAgICAgICAg
ICAgc2VsZi5jbGVhbnVwKCkKICAgICAgICAgICAgIF9sb2cuZGVidWcoIiVzIGV4aXRpbmciICUg
c2VsZi5fbmFtZSkKKyAgICAgICAgICAgIHNlbGYuY2xlYW51cCgpCiAKICAgICBkZWYgaGFuZGxl
X3Rlc3RfbGlzdChzZWxmLCBzcmMsIGxpc3RfbmFtZSwgdGVzdF9saXN0KToKICAgICAgICAgc3Rh
cnRfdGltZSA9IHRpbWUudGltZSgpCkBAIC0xNTMsOSArMTcxLDkgQEAgY2xhc3MgV29ya2VyKG1h
bmFnZXJfd29ya2VyX2Jyb2tlci5BYnN0cmFjdFdvcmtlcik6CiAgICAgICAgIGlmIHNlbGYuX3Rl
c3RzX3J1bl9maWxlOgogICAgICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUuY2xvc2UoKQog
ICAgICAgICAgICAgc2VsZi5fdGVzdHNfcnVuX2ZpbGUgPSBOb25lCi0gICAgICAgIGlmIHNlbGYu
X3ByaW50ZXI6Ci0gICAgICAgICAgICBzZWxmLl9wcmludGVyLmNsZWFudXAoKQotICAgICAgICAg
ICAgc2VsZi5fcHJpbnRlciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fbWV0ZXI6CisgICAgICAg
ICAgICBzZWxmLl9tZXRlci5jbGVhbnVwKCkKKyAgICAgICAgICAgIHNlbGYuX21ldGVyID0gTm9u
ZQogCiAgICAgZGVmIHRpbWVvdXQoc2VsZiwgdGVzdF9pbnB1dCk6CiAgICAgICAgICIiIkNvbXB1
dGUgdGhlIGFwcHJvcHJpYXRlIHRpbWVvdXQgdmFsdWUgZm9yIGEgdGVzdC4iIiIKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL3dvcmtl
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRy
b2xsZXJzL3dvcmtlcl91bml0dGVzdC5weQppbmRleCA2ZmQ1MjAyZDljNDAwN2YwZWU4NGQ5YzEz
NTZhZmNmYWEwZDlmNTkxLi5lYmI0ZTdhNWJiNWFlNjg3NDcxY2JhMzIwMGEwOGIzMWI1OGIxMzZi
IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9s
bGVycy93b3JrZXJfdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvd29ya2VyX3VuaXR0ZXN0LnB5CkBAIC00Niw4ICs0Niw3IEBA
IGNsYXNzIFdvcmtlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICAjIGlmIHdlIGRp
ZG4ndCBzcGVjaWZ5IGEgcG9ydCB3aXRoIHRoZSAtLXBsYXRmb3JtIGZsYWcuCiAgICAgICAgIHdv
cmtlcl9jb25uZWN0aW9uID0gRmFrZUNvbm5lY3Rpb24oKQogICAgICAgICB3b3JrZXIgPSBXb3Jr
ZXIod29ya2VyX2Nvbm5lY3Rpb24sIFdvcmtlckFyZ3VtZW50cygxLCAnL3RtcCcsIE1vY2tPcHRp
b25zKHBsYXRmb3JtPU5vbmUsIHByaW50X29wdGlvbnM9Tm9uZSwgdmVyYm9zZT1GYWxzZSwgYmF0
Y2hfc2l6ZT0wKSkpCi0gICAgICAgIHdvcmtlci5fZG9uZSA9IFRydWUKLSAgICAgICAgd29ya2Vy
LnJ1bigpCisgICAgICAgIHdvcmtlci5fc2V0X3VwX2hvc3RfYW5kX3BvcnQoKQogICAgICAgICBz
ZWxmLmFzc2VydE5vdEVxdWFscyh3b3JrZXIuX3BvcnQsIE5vbmUpCiAKIApkaWZmIC0tZ2l0IGEv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weSBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkK
aW5kZXggNmIwZTM2NzdkOWFhNmMzMTQ3MTM4OTI1YTJkNDExMDA1MzgxZWNjYy4uYzI4YjkxMTM3
MzhlMmY4ZmY4ODNlMmEwMDBmNjYwMTM0NTgyMmEzYSAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CkBAIC04NSw3
ICs4NSw3IEBAIGRlZiBsaW50KHBvcnQsIG9wdGlvbnMsIGV4cGVjdGF0aW9uc19jbGFzcyk6CiBk
ZWYgcnVuKHBvcnQsIG9wdGlvbnMsIGFyZ3MsIHJlZ3VsYXJfb3V0cHV0PXN5cy5zdGRlcnIsIGJ1
aWxkYm90X291dHB1dD1zeXMuc3Rkb3V0KToKICAgICB3YXJuaW5ncyA9IF9zZXRfdXBfZGVyaXZl
ZF9vcHRpb25zKHBvcnQsIG9wdGlvbnMpCiAKLSAgICBwcmludGVyID0gcHJpbnRpbmcuUHJpbnRl
cihwb3J0LCBvcHRpb25zLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0LCBjb25maWd1
cmVfbG9nZ2luZz1UcnVlKQorICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHBvcnQsIG9w
dGlvbnMsIHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQsIGxvZ2dlcj1sb2dnaW5nLmdl
dExvZ2dlcigpKQogCiAgICAgZm9yIHdhcm5pbmcgaW4gd2FybmluZ3M6CiAgICAgICAgIF9sb2cu
d2FybmluZyh3YXJuaW5nKQpAQCAtNDc5LDYgKzQ3OSw3IEBAIGRlZiBtYWluKCk6CiAgICAgICAg
IGhvc3QgPSBIb3N0KCkKICAgICBob3N0Ll9pbml0aWFsaXplX3NjbSgpCiAgICAgcG9ydCA9IGhv
c3QucG9ydF9mYWN0b3J5LmdldChvcHRpb25zLnBsYXRmb3JtLCBvcHRpb25zKQorICAgIGxvZ2dp
bmcuZ2V0TG9nZ2VyKCkuc2V0TGV2ZWwobG9nZ2luZy5ERUJVRyBpZiBvcHRpb25zLnZlcmJvc2Ug
ZWxzZSBsb2dnaW5nLklORk8pCiAgICAgcmV0dXJuIHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzKQog
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdz
L21ldGVyZWRfc3RyZWFtLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dmlld3MvbWV0ZXJlZF9zdHJlYW0ucHkKaW5kZXggYjVjMjMzYjEwNmE3M2UwNGE2MzU0MDQzNGU1
MmZkNTRhNmRhYjliOS4uMGQ1ZTY2Y2QyOWRjY2U5ZWQ1N2UyYzJmZDNiOTNiMmIzNTk3OTZkZiAx
MDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0
ZXJlZF9zdHJlYW0ucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dmlld3MvbWV0ZXJlZF9zdHJlYW0ucHkKQEAgLTEsNSArMSw1IEBACiAjIS91c3IvYmluL2VudiBw
eXRob24KLSMgQ29weXJpZ2h0IChDKSAyMDEwIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisjIENvcHlyaWdodCAoQykgMjAxMCwgMjAxMiBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogIwogIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQpAQCAtMjcsNTggKzI3LDk5
IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogCi0iIiIKLVBhY2thZ2UgdGhhdCBp
bXBsZW1lbnRzIGEgc3RyZWFtIHdyYXBwZXIgdGhhdCBoYXMgJ21ldGVycycgYXMgd2VsbCBhcwot
cmVndWxhciBvdXRwdXQuIEEgJ21ldGVyJyBpcyBhIHNpbmdsZSBsaW5lIG9mIHRleHQgdGhhdCBj
YW4gYmUgZXJhc2VkCi1hbmQgcmV3cml0dGVuIHJlcGVhdGVkbHksIHdpdGhvdXQgcHJvZHVjaW5n
IG11bHRpcGxlIGxpbmVzIG9mIG91dHB1dC4gSXQKLWNhbiBiZSB1c2VkIHRvIHByb2R1Y2UgZWZm
ZWN0cyBsaWtlIHByb2dyZXNzIGJhcnMuCi0KLVRoaXMgcGFja2FnZSBzaG91bGQgb25seSBiZSBj
YWxsZWQgYnkgdGhlIHByaW50aW5nIG1vZHVsZSBpbiB0aGUgbGF5b3V0X3Rlc3RzCi1wYWNrYWdl
LgotIiIiCi0KLQotY2xhc3MgTWV0ZXJlZFN0cmVhbToKLSAgICAiIiJUaGlzIGNsYXNzIGlzIGEg
d3JhcHBlciBhcm91bmQgYSBzdHJlYW0gdGhhdCBhbGxvd3MgeW91IHRvIGltcGxlbWVudAotICAg
IG1ldGVycyAocHJvZ3Jlc3MgYmFycywgZXRjLikuCi0KLSAgICBJdCBjYW4gYmUgdXNlZCBkaXJl
Y3RseSBhcyBhIHN0cmVhbSwgYnkgY2FsbGluZyB3cml0ZSgpLCBidXQgYWxzbyBwcm92aWRlcwot
ICAgIGEgbWV0aG9kIGNhbGxlZCB1cGRhdGUoKSB0aGF0IHdpbGwgb3ZlcndpdGUgcHJpb3IgdXBk
YXRlcygpLgotICAgIiIiCi0KLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3RyZWFtKToKLSAgICAg
ICAgIiIiCi0gICAgICAgIEFyZ3M6Ci0gICAgICAgICAgc3RyZWFtOiBvdXRwdXQgc3RyZWFtIHRv
IHdyaXRlIHRvCi0gICAgICAgICIiIgotICAgICAgICBzZWxmLl9zdHJlYW0gPSBzdHJlYW0KLSAg
ICAgICAgc2VsZi5fZGlydHkgPSBGYWxzZQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZSA9ICIi
Ci0KLSAgICBkZWYgd3JpdGUoc2VsZiwgdHh0KToKLSAgICAgICAgIiIiV3JpdGUgdG8gdGhlIHN0
cmVhbSwgb3ZlcndyaXRpbmcgYW5kIHJlc2V0dGluZyB0aGUgbWV0ZXIuIiIiCi0KLSAgICAgICAg
IyBUaGlzIHJvdXRpbmUgaXMgY2FsbGVkIGJ5IHRoZSBsb2dnaW5nIGluZnJhc3RydWN0dXJlLCBh
bmQKLSAgICAgICAgIyBtdXN0IG5vdCBjYWxsIGJhY2sgaW50byBsb2dnaW5nLiBJdCBpcyBub3Qg
YSBwdWJsaWMgZnVuY3Rpb24uCi0gICAgICAgIHNlbGYuX292ZXJ3cml0ZSh0eHQpCi0gICAgICAg
IHNlbGYuX3Jlc2V0KCkKLQotICAgIGRlZiB1cGRhdGUoc2VsZiwgdHh0KToKLSAgICAgICAgIiIi
V3JpdGUgYSBtZXNzYWdlIHRoYXQgd2lsbCBiZSBvdmVyd3JpdHRlbiBieSBzdWJzZXF1ZW50IHVw
ZGF0ZSgpIG9yIHdyaXRlKCkgY2FsbHMuIiIiCi0gICAgICAgIHNlbGYuX292ZXJ3cml0ZSh0eHQp
Ci0KLSAgICBkZWYgX292ZXJ3cml0ZShzZWxmLCB0eHQpOgotICAgICAgICAjIFByaW50IHRoZSBu
ZWNlc3NhcnkgbnVtYmVyIG9mIGJhY2tzcGFjZXMgdG8gZXJhc2UgdGhlIHByZXZpb3VzCi0gICAg
ICAgICMgbWVzc2FnZS4KLSAgICAgICAgaWYgbGVuKHNlbGYuX2xhc3RfdXBkYXRlKToKLSAgICAg
ICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZSgiXGIiICogbGVuKHNlbGYuX2xhc3RfdXBkYXRlKSAr
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiICogbGVuKHNlbGYuX2xhc3RfdXBk
YXRlKSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlxiIiAqIGxlbihzZWxmLl9s
YXN0X3VwZGF0ZSkpCi0gICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZSh0eHQpCi0gICAgICAgIGxh
c3RfbmV3bGluZSA9IHR4dC5yZmluZCgiXG4iKQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZSA9
IHR4dFsobGFzdF9uZXdsaW5lICsgMSk6XQotICAgICAgICBzZWxmLl9kaXJ0eSA9IFRydWUKLQot
ICAgIGRlZiBfcmVzZXQoc2VsZik6Ci0gICAgICAgIHNlbGYuX2RpcnR5ID0gRmFsc2UKLSAgICAg
ICAgc2VsZi5fbGFzdF91cGRhdGUgPSAnJworaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBvcworaW1w
b3J0IHN5cworaW1wb3J0IHRpbWUKKworCitMT0dfSEFORExFUl9OQU1FID0gJ01ldGVyZWRTdHJl
YW1Mb2dIYW5kbGVyJworCisKK2NsYXNzIE1ldGVyZWRTdHJlYW0ob2JqZWN0KToKKyAgICAiIiIK
KyAgICBUaGlzIGNsYXNzIGltcGxlbWVudHMgYSBzdHJlYW0gd3JhcHBlciB0aGF0IGhhcyAnbWV0
ZXJzJyBhcyB3ZWxsIGFzCisgICAgcmVndWxhciBvdXRwdXQuIEEgJ21ldGVyJyBpcyBhIHNpbmds
ZSBsaW5lIG9mIHRleHQgdGhhdCBjYW4gYmUgZXJhc2VkCisgICAgYW5kIHJld3JpdHRlbiByZXBl
YXRlZGx5LCB3aXRob3V0IHByb2R1Y2luZyBtdWx0aXBsZSBsaW5lcyBvZiBvdXRwdXQuIEl0Cisg
ICAgY2FuIGJlIHVzZWQgdG8gcHJvZHVjZSBlZmZlY3RzIGxpa2UgcHJvZ3Jlc3MgYmFycy4KKyAg
ICAiIiIKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2VyYXN1cmUodHh0KToKKyAgICAg
ICAgbnVtX2NoYXJzID0gbGVuKHR4dCkKKyAgICAgICAgcmV0dXJuICdcYicgKiBudW1fY2hhcnMg
KyAnICcgKiBudW1fY2hhcnMgKyAnXGInICogbnVtX2NoYXJzCisKKyAgICBAc3RhdGljbWV0aG9k
CisgICAgZGVmIF9lbnN1cmVfbmV3bGluZSh0eHQpOgorICAgICAgICByZXR1cm4gdHh0IGlmIHR4
dC5lbmRzd2l0aCgnXG4nKSBlbHNlIHR4dCArICdcbicKKworICAgIGRlZiBfX2luaXRfXyhzZWxm
LCBzdHJlYW09Tm9uZSwgdmVyYm9zZT1GYWxzZSwgbG9nZ2VyPU5vbmUsIHRpbWVfZm49Tm9uZSwg
cGlkPU5vbmUpOgorICAgICAgICBzZWxmLl9zdHJlYW0gPSBzdHJlYW0gb3Igc3lzLnN0ZGVycgor
ICAgICAgICBzZWxmLl92ZXJib3NlID0gdmVyYm9zZQorICAgICAgICBzZWxmLl90aW1lX2ZuID0g
dGltZV9mbiBvciB0aW1lLnRpbWUKKyAgICAgICAgc2VsZi5fcGlkID0gcGlkIG9yIG9zLmdldHBp
ZCgpCisKKyAgICAgICAgc2VsZi5faXNhdHR5ID0gc2VsZi5fc3RyZWFtLmlzYXR0eSgpCisgICAg
ICAgIHNlbGYuX2VyYXNpbmcgPSBzZWxmLl9pc2F0dHkgYW5kIG5vdCB2ZXJib3NlCisgICAgICAg
IHNlbGYuX2xhc3RfcGFydGlhbF9saW5lID0gJycKKyAgICAgICAgc2VsZi5fbGFzdF93cml0ZV90
aW1lID0gMC4wCisgICAgICAgIHNlbGYuX3Rocm90dGxlX2RlbGF5X2luX3NlY3MgPSAwLjA2NiBp
ZiBzZWxmLl9lcmFzaW5nIGVsc2UgMTAuMAorCisgICAgICAgIHNlbGYuX2xvZ2dlciA9IGxvZ2dl
cgorICAgICAgICBzZWxmLl9sb2dfaGFuZGxlciA9IE5vbmUKKyAgICAgICAgaWYgc2VsZi5fbG9n
Z2VyOgorICAgICAgICAgICAgbG9nX2xldmVsID0gbG9nZ2luZy5ERUJVRyBpZiB2ZXJib3NlIGVs
c2UgbG9nZ2luZy5JTkZPCisgICAgICAgICAgICBzZWxmLl9sb2dfaGFuZGxlciA9IF9Mb2dIYW5k
bGVyKHNlbGYpCisgICAgICAgICAgICBzZWxmLl9sb2dfaGFuZGxlci5zZXRMZXZlbChsb2dfbGV2
ZWwpCisgICAgICAgICAgICBzZWxmLl9sb2dnZXIuYWRkSGFuZGxlcihzZWxmLl9sb2dfaGFuZGxl
cikKKworICAgIGRlZiBfX2RlbF9fKHNlbGYpOgorICAgICAgICBzZWxmLmNsZWFudXAoKQorCisg
ICAgZGVmIGNsZWFudXAoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2xvZ2dlcjoKKyAgICAgICAg
ICAgIHNlbGYuX2xvZ2dlci5yZW1vdmVIYW5kbGVyKHNlbGYuX2xvZ19oYW5kbGVyKQorICAgICAg
ICAgICAgc2VsZi5fbG9nX2hhbmRsZXIgPSBOb25lCisKKyAgICBkZWYgd3JpdGVfdGhyb3R0bGVk
X3VwZGF0ZShzZWxmLCB0eHQpOgorICAgICAgICBub3cgPSBzZWxmLl90aW1lX2ZuKCkKKyAgICAg
ICAgaWYgbm93IC0gc2VsZi5fbGFzdF93cml0ZV90aW1lID49IHNlbGYuX3Rocm90dGxlX2RlbGF5
X2luX3NlY3M6CisgICAgICAgICAgICBzZWxmLndyaXRlX3VwZGF0ZSh0eHQsIG5vdykKKworICAg
IGRlZiB3cml0ZV91cGRhdGUoc2VsZiwgdHh0LCBub3c9Tm9uZSk6CisgICAgICAgIHNlbGYud3Jp
dGUodHh0LCBub3cpCisgICAgICAgIGlmIHNlbGYuX2VyYXNpbmc6CisgICAgICAgICAgICBzZWxm
Ll9sYXN0X3BhcnRpYWxfbGluZSA9IHR4dFt0eHQucmZpbmQoJ1xuJykgKyAxOl0KKworICAgIGRl
ZiB3cml0ZShzZWxmLCB0eHQsIG5vdz1Ob25lKToKKyAgICAgICAgbm93ID0gbm93IG9yIHNlbGYu
X3RpbWVfZm4oKQorICAgICAgICBzZWxmLl9sYXN0X3dyaXRlX3RpbWUgPSBub3cKKyAgICAgICAg
aWYgc2VsZi5fbGFzdF9wYXJ0aWFsX2xpbmU6CisgICAgICAgICAgICBzZWxmLl9lcmFzZV9sYXN0
X3BhcnRpYWxfbGluZSgpCisgICAgICAgIGlmIHNlbGYuX3ZlcmJvc2U6CisgICAgICAgICAgICBu
b3dfdHVwbGUgPSB0aW1lLmxvY2FsdGltZShub3cpCisgICAgICAgICAgICBtc2cgPSAnJTAyZDol
MDJkOiUwMmQuJTAzZCAlZCAlcycgJSAobm93X3R1cGxlLnRtX2hvdXIsIG5vd190dXBsZS50bV9t
aW4sIG5vd190dXBsZS50bV9zZWMsIGludCgobm93ICogMTAwMCkgJSAxMDAwKSwgc2VsZi5fcGlk
LCBzZWxmLl9lbnN1cmVfbmV3bGluZSh0eHQpKQorICAgICAgICBlbGlmIHNlbGYuX2lzYXR0eToK
KyAgICAgICAgICAgIG1zZyA9IHR4dAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgbXNnID0g
c2VsZi5fZW5zdXJlX25ld2xpbmUodHh0KQorCisgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZSht
c2cpCisKKyAgICBkZWYgd3JpdGVsbihzZWxmLCB0eHQsIG5vdz1Ob25lKToKKyAgICAgICAgc2Vs
Zi53cml0ZShzZWxmLl9lbnN1cmVfbmV3bGluZSh0eHQpLCBub3cpCisKKyAgICBkZWYgX2VyYXNl
X2xhc3RfcGFydGlhbF9saW5lKHNlbGYpOgorICAgICAgICBudW1fY2hhcnMgPSBsZW4oc2VsZi5f
bGFzdF9wYXJ0aWFsX2xpbmUpCisgICAgICAgIHNlbGYuX3N0cmVhbS53cml0ZShzZWxmLl9lcmFz
dXJlKHNlbGYuX2xhc3RfcGFydGlhbF9saW5lKSkKKyAgICAgICAgc2VsZi5fbGFzdF9wYXJ0aWFs
X2xpbmUgPSAnJworCisKK2NsYXNzIF9Mb2dIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6CisgICAg
ZGVmIF9faW5pdF9fKHNlbGYsIG1ldGVyKToKKyAgICAgICAgbG9nZ2luZy5IYW5kbGVyLl9faW5p
dF9fKHNlbGYpCisgICAgICAgIHNlbGYuX21ldGVyID0gbWV0ZXIKKyAgICAgICAgc2VsZi5uYW1l
ID0gTE9HX0hBTkRMRVJfTkFNRQorCisgICAgZGVmIGVtaXQoc2VsZiwgcmVjb3JkKToKKyAgICAg
ICAgc2VsZi5fbWV0ZXIud3JpdGVsbihyZWNvcmQubXNnLCByZWNvcmQuY3JlYXRlZCkKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL21ldGVyZWRf
c3RyZWFtX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkKaW5kZXggMzU5Y2ZjZjYwZjEzOTM0MzBk
YmNkM2FmMWM3YjEwOTJkZWRkMTMyOS4uNGIzNzY0NjBiZmIxYjE0YjRmNmJmMTYzODNmNzNlM2Rl
YzNiNzFlNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
dmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvdmlld3MvbWV0ZXJlZF9zdHJlYW1fdW5pdHRlc3QucHkKQEAgLTEs
NSArMSw1IEBACiAjIS91c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMpIDIwMTAgR29vZ2xl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAyMDEwLCAyMDEyIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogIyBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMgYXJlCkBAIC0yNyw1NSArMjcsMTE2IEBACiAjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQogIyBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IHJlCiBpbXBvcnQgU3RyaW5nSU8KIGltcG9ydCB1
bml0dGVzdAogCiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cy5tZXRlcmVkX3N0cmVh
bSBpbXBvcnQgTWV0ZXJlZFN0cmVhbQogCiAKLWNsYXNzIFRlc3RNZXRlcmVkU3RyZWFtKHVuaXR0
ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9yZWd1bGFyKHNlbGYpOgotICAgICAgICBhID0g
U3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICBtID0gTWV0ZXJlZFN0cmVhbShhKQotICAgICAg
ICBzZWxmLmFzc2VydEZhbHNlKGEuZ2V0dmFsdWUoKSkKLQotICAgICAgICAjIGJhc2ljIHRlc3QK
LSAgICAgICAgbS53cml0ZSgiZm9vIikKLSAgICAgICAgZXhwID0gWydmb28nXQotICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhhLmJ1Zmxpc3QsIGV4cCkKLQotICAgICAgICAjIG5vdyBjaGVjayB0
aGF0IGEgc2Vjb25kIHdyaXRlKCkgZG9lcyBub3Qgb3ZlcndyaXRlIHRoZSBmaXJzdC4KLSAgICAg
ICAgbS53cml0ZSgiYmFyIikKLSAgICAgICAgZXhwLmFwcGVuZCgnYmFyJykKLSAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoYS5idWZsaXN0LCBleHApCi0KLSAgICAgICAgbS51cGRhdGUoImJhdHRl
ciIpCi0gICAgICAgIGV4cC5hcHBlbmQoJ2JhdHRlcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1
YWxzKGEuYnVmbGlzdCwgZXhwKQotCi0gICAgICAgICMgVGhlIG5leHQgdXBkYXRlKCkgc2hvdWxk
IG92ZXJ3cml0ZSB0aGUgbGFzdGUgdXBkYXRlKCkgYnV0IG5vdCB0aGUKLSAgICAgICAgIyBvdGhl
ciB0ZXh0LiBOb3RlIHRoYXQgdGhlIGN1cnNvciBpcyBlZmZlY3RpdmVseSBwb3NpdGlvbmVkIGF0
IHRoZQotICAgICAgICAjIGVuZCBvZiAnZm9vJywgZXZlbiB0aG91Z2ggd2UgaGFkIHRvIGVyYXNl
IHRocmVlIG1vcmUgY2hhcmFjdGVycy4KLSAgICAgICAgbS51cGRhdGUoImZvbyIpCi0gICAgICAg
IGV4cC5hcHBlbmQoJ1xiXGJcYlxiXGJcYiAgICAgIFxiXGJcYlxiXGJcYicpCi0gICAgICAgIGV4
cC5hcHBlbmQoJ2ZvbycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGEuYnVmbGlzdCwgZXhw
KQotCi0gICAgICAgICMgbm93IGNoZWNrIHRoYXQgYSB3cml0ZSgpIGRvZXMgb3ZlcndyaXRlIHRo
ZSB1cGRhdGUKLSAgICAgICAgbS53cml0ZSgiZm9vIikKLSAgICAgICAgZXhwLmFwcGVuZCgnXGJc
YlxiICAgXGJcYlxiJykKLSAgICAgICAgZXhwLmFwcGVuZCgnZm9vJykKLSAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoYS5idWZsaXN0LCBleHApCi0KLSAgICAgICAgIyBOb3cgdGVzdCB0aGF0IHdl
IG9ubHkgYmFjayB1cCB0byB0aGUgbW9zdCByZWNlbnQgbmV3bGluZS4KLQotICAgICAgICAjIE5v
dGUgYWxzbyB0aGF0IHdlIGRvIG5vdCBiYWNrIHVwIHRvIGVyYXNlIHRoZSBtb3N0IHJlY2VudCB3
cml0ZSgpLAotICAgICAgICAjIGkuZS4sIHdyaXRlKClzIGRvIG5vdCBnZXQgZXJhc2VkLgotICAg
ICAgICBhID0gU3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICBtID0gTWV0ZXJlZFN0cmVhbShh
KQotICAgICAgICBtLnVwZGF0ZSgiZm9vXG5iYXIiKQotICAgICAgICBtLnVwZGF0ZSgiYmF6IikK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYS5idWZsaXN0LCBbJ2Zvb1xuYmFyJywgJ1xiXGJc
YiAgIFxiXGJcYicsICdiYXonXSkKK2NsYXNzIFJlZ3VsYXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNl
KToKKyAgICB2ZXJib3NlID0gRmFsc2UKKyAgICBpc2F0dHkgPSBGYWxzZQorCisgICAgZGVmIHNl
dFVwKHNlbGYpOgorICAgICAgICBzZWxmLnN0cmVhbSA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKKyAg
ICAgICAgc2VsZi5idWZsaXN0ID0gc2VsZi5zdHJlYW0uYnVmbGlzdAorICAgICAgICBzZWxmLnN0
cmVhbS5pc2F0dHkgPSBsYW1iZGE6IHNlbGYuaXNhdHR5CisKKyAgICAgICAgIyBjb25maWd1cmUg
YSBsb2dnZXIgdG8gdGVzdCB0aGF0IGxvZyBjYWxscyBkbyBub3JtYWxseSBnZXQgaW5jbHVkZWQu
CisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCisgICAg
ICAgIHNlbGYubG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuREVCVUcpCisgICAgICAgIHNlbGYubG9n
Z2VyLnByb3BhZ2F0ZSA9IEZhbHNlCisKKyAgICAgICAgIyBhZGQgYSBkdW1teSB0aW1lIGNvdW50
ZXIgZm9yIGEgZGVmYXVsdCBiZWhhdmlvci4KKyAgICAgICAgc2VsZi50aW1lcyA9IHJhbmdlKDEw
KQorCisgICAgICAgIHNlbGYubWV0ZXIgPSBNZXRlcmVkU3RyZWFtKHNlbGYuc3RyZWFtLCBzZWxm
LnZlcmJvc2UsIHNlbGYubG9nZ2VyLCBzZWxmLnRpbWVfZm4sIDg2NzUpCisKKyAgICBkZWYgdGVh
ckRvd24oc2VsZik6CisgICAgICAgIGlmIHNlbGYubWV0ZXI6CisgICAgICAgICAgICBzZWxmLm1l
dGVyLmNsZWFudXAoKQorICAgICAgICAgICAgc2VsZi5tZXRlciA9IE5vbmUKKworICAgIGRlZiB0
aW1lX2ZuKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi50aW1lcy5wb3AoMCkKKworICAgIGRl
ZiB0ZXN0X2xvZ2dpbmdfbm90X2luY2x1ZGVkKHNlbGYpOgorICAgICAgICAjIFRoaXMgdGVzdHMg
dGhhdCBpZiB3ZSBkb24ndCBoYW5kIGEgbG9nZ2VyIHRvIHRoZSBNZXRlcmVkU3RyZWFtLAorICAg
ICAgICAjIG5vdGhpbmcgaXMgbG9nZ2VkLgorICAgICAgICBsb2dnaW5nX3N0cmVhbSA9IFN0cmlu
Z0lPLlN0cmluZ0lPKCkKKyAgICAgICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxlcihs
b2dnaW5nX3N0cmVhbSkKKyAgICAgICAgcm9vdF9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigp
CisgICAgICAgIG9yaWdfbGV2ZWwgPSByb290X2xvZ2dlci5sZXZlbAorICAgICAgICByb290X2xv
Z2dlci5hZGRIYW5kbGVyKGhhbmRsZXIpCisgICAgICAgIHJvb3RfbG9nZ2VyLnNldExldmVsKGxv
Z2dpbmcuREVCVUcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlbGYubWV0ZXIgPSBNZXRl
cmVkU3RyZWFtKHNlbGYuc3RyZWFtLCBzZWxmLnZlcmJvc2UsIE5vbmUsIHNlbGYudGltZV9mbiwg
ODY3NSkKKyAgICAgICAgICAgIHNlbGYubWV0ZXIud3JpdGVfdGhyb3R0bGVkX3VwZGF0ZSgnZm9v
JykKKyAgICAgICAgICAgIHNlbGYubWV0ZXIud3JpdGVfdXBkYXRlKCdiYXInKQorICAgICAgICAg
ICAgc2VsZi5tZXRlci53cml0ZSgnYmF6JykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGxvZ2dpbmdfc3RyZWFtLmJ1Zmxpc3QsIFtdKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAg
ICAgcm9vdF9sb2dnZXIucmVtb3ZlSGFuZGxlcihoYW5kbGVyKQorICAgICAgICAgICAgcm9vdF9s
b2dnZXIuc2V0TGV2ZWwob3JpZ19sZXZlbCkKKworICAgIGRlZiBfYmFzaWMoc2VsZiwgdGltZXMp
OgorICAgICAgICBzZWxmLnRpbWVzID0gdGltZXMKKyAgICAgICAgc2VsZi5tZXRlci53cml0ZV91
cGRhdGUoJ2ZvbycpCisgICAgICAgIHNlbGYubWV0ZXIud3JpdGVfdXBkYXRlKCdiYXInKQorICAg
ICAgICBzZWxmLm1ldGVyLndyaXRlX3Rocm90dGxlZF91cGRhdGUoJ2JheicpCisgICAgICAgIHNl
bGYubWV0ZXIud3JpdGVfdGhyb3R0bGVkX3VwZGF0ZSgnYmF6IDInKQorICAgICAgICBzZWxmLm1l
dGVyLndyaXRlbG4oJ2RvbmUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhzZWxmLnRpbWVz
LCBbXSkKKyAgICAgICAgcmV0dXJuIHNlbGYuYnVmbGlzdAorCisgICAgZGVmIHRlc3RfYmFzaWMo
c2VsZik6CisgICAgICAgIGJ1Zmxpc3QgPSBzZWxmLl9iYXNpYyhbMCwgMSwgMiwgMTMsIDE0XSkK
KyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVmbGlzdCwgWydmb29cbicsICdiYXJcbicsICdi
YXogMlxuJywgJ2RvbmVcbiddKQorCisgICAgZGVmIF9sb2dfYWZ0ZXJfdXBkYXRlKHNlbGYpOgor
ICAgICAgICBzZWxmLm1ldGVyLndyaXRlX3VwZGF0ZSgnZm9vJykKKyAgICAgICAgc2VsZi5sb2dn
ZXIuaW5mbygnYmFyJykKKyAgICAgICAgcmV0dXJuIHNlbGYuYnVmbGlzdAorCisgICAgZGVmIHRl
c3RfbG9nX2FmdGVyX3VwZGF0ZShzZWxmKToKKyAgICAgICAgYnVmbGlzdCA9IHNlbGYuX2xvZ19h
ZnRlcl91cGRhdGUoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWZsaXN0LCBbJ2Zvb1xu
JywgJ2JhclxuJ10pCisKKworY2xhc3MgVHR5VGVzdChSZWd1bGFyVGVzdCk6CisgICAgdmVyYm9z
ZSA9IEZhbHNlCisgICAgaXNhdHR5ID0gVHJ1ZQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6
CisgICAgICAgIGJ1Zmxpc3QgPSBzZWxmLl9iYXNpYyhbMCwgMSwgMS4wNSwgMS4xLCAyXSkKKyAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoYnVmbGlzdCwgWydmb28nLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIE1ldGVyZWRTdHJlYW0uX2VyYXN1cmUoJ2ZvbycpLCAnYmFy
JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRlcmVkU3RyZWFtLl9l
cmFzdXJlKCdiYXInKSwgJ2JheiAyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBNZXRlcmVkU3RyZWFtLl9lcmFzdXJlKCdiYXogMicpLCAnZG9uZVxuJ10pCisKKyAgICBk
ZWYgdGVzdF9sb2dfYWZ0ZXJfdXBkYXRlKHNlbGYpOgorICAgICAgICBidWZsaXN0ID0gc2VsZi5f
bG9nX2FmdGVyX3VwZGF0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJ1Zmxpc3QsIFsn
Zm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXRlcmVkU3RyZWFt
Ll9lcmFzdXJlKCdmb28nKSwgJ2JhclxuJ10pCisKKworY2xhc3MgVmVyYm9zZVRlc3QoUmVndWxh
clRlc3QpOgorICAgIGlzYXR0eSA9IEZhbHNlCisgICAgdmVyYm9zZSA9IFRydWUKKworICAgIGRl
ZiB0ZXN0X2Jhc2ljKHNlbGYpOgorICAgICAgICBidWZsaXN0ID0gc2VsZi5fYmFzaWMoWzAsIDEs
IDIuMSwgMTMsIDE0LjEyMzRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhidWZsaXN0LCBb
JzE2OjAwOjAwLjAwMCA4Njc1IGZvb1xuJywgJzE2OjAwOjAxLjAwMCA4Njc1IGJhclxuJywgJzE2
OjAwOjEzLjAwMCA4Njc1IGJheiAyXG4nLCAnMTY6MDA6MTQuMTIzIDg2NzUgZG9uZVxuJ10pCisK
KyAgICBkZWYgdGVzdF9sb2dfYWZ0ZXJfdXBkYXRlKHNlbGYpOgorICAgICAgICBidWZsaXN0ID0g
c2VsZi5fbG9nX2FmdGVyX3VwZGF0ZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGJ1Zmxp
c3RbMF0sICcxNjowMDowMC4wMDAgODY3NSBmb29cbicpCisKKyAgICAgICAgIyBUaGUgc2Vjb25k
IGFyZ3VtZW50IHNob3VsZCBoYXZlIGEgcmVhbCB0aW1lc3RhbXAgYW5kIHBpZCwgc28gd2UganVz
dCBjaGVjayB0aGUgZm9ybWF0LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oYnVmbGlz
dCksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnXGRcZDpcZFxkOlxkXGQu
XGRcZFxkIFxkKyBiYXJcbicsIGJ1Zmxpc3RbMV0pKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21h
aW5fXyc6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy92
aWV3cy9wcmludGluZy5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Zp
ZXdzL3ByaW50aW5nLnB5CmluZGV4IDc1MGM0OGRmOWUzMDk1MzQ2MDJhODg1MDc4NmMzMzEwM2M4
ZjBhNjcuLjNkZjI5NTZjMTgyNjE4ZWQwZGNmMTNlZDZmMTg1ZTUxMGU0ODdmYmEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nLnB5
CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5n
LnB5CkBAIC0xLDUgKzEsNSBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0jIENvcHlyaWdodCAo
QykgMjAxMCBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyBDb3B5cmlnaHQgKEMp
IDIwMTAsIDIwMTIgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICMKICMgUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAjIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucyBhcmUKQEAgLTI5LDIxICsyOSwxMyBAQAogCiAiIiJQYWNrYWdlIHRo
YXQgaGFuZGxlcyBub24tZGVidWcsIG5vbi1maWxlIG91dHB1dCBmb3IgcnVuLXdlYmtpdC10ZXN0
cy4iIiIKIAotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQotaW1wb3J0IHRpbWUKIAog
ZnJvbSB3ZWJraXRweS5jb21tb24ubmV0IGltcG9ydCByZXN1bHRzanNvbnBhcnNlcgotZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJlYW0gaW1wb3J0IE1ldGVyZWRT
dHJlYW0KIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2V4cGVjdGF0aW9u
cyBpbXBvcnQgVGVzdEV4cGVjdGF0aW9ucwotCi0KLV9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihf
X25hbWVfXykKLQorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MubWV0ZXJlZF9zdHJl
YW0gaW1wb3J0IE1ldGVyZWRTdHJlYW0KIAogTlVNX1NMT1dfVEVTVFNfVE9fTE9HID0gMTAKLUZB
U1RfVVBEQVRFU19TRUNPTkRTID0gMC4wMwotU0xPV19VUERBVEVTX1NFQ09ORFMgPSAxMC4wCiAK
IFBSSU5UX0RFRkFVTFQgPSAibWlzYyxvbmUtbGluZS1wcm9ncmVzcyxvbmUtbGluZS1zdW1tYXJ5
LHVuZXhwZWN0ZWQsdW5leHBlY3RlZC1yZXN1bHRzLHVwZGF0ZXMiCiBQUklOVF9FVkVSWVRISU5H
ID0gImFjdHVhbCxjb25maWcsZXhwZWN0ZWQsbWlzYyxvbmUtbGluZS1wcm9ncmVzcyxvbmUtbGlu
ZS1zdW1tYXJ5LHNsb3dlc3QsdGltaW5nLHVuZXhwZWN0ZWQsdW5leHBlY3RlZC1yZXN1bHRzLHVw
ZGF0ZXMiCkBAIC0xNTQsMjcgKzE0Niw2IEBAIGRlZiBwYXJzZV9wcmludF9vcHRpb25zKHByaW50
X29wdGlvbnMsIHZlcmJvc2UpOgogICAgIHJldHVybiBzd2l0Y2hlcwogCiAKLWRlZiBfY29uZmln
dXJlX2xvZ2dpbmcoc3RyZWFtLCB2ZXJib3NlKToKLSAgICBsb2dfZm10ID0gJyUobWVzc2FnZSlz
JwotICAgIGxvZ19kYXRlZm10ID0gJyV5JW0lZCAlSDolTTolUycKLSAgICBsb2dfbGV2ZWwgPSBs
b2dnaW5nLklORk8KLSAgICBpZiB2ZXJib3NlOgotICAgICAgICBsb2dfZm10ID0gJyUoYXNjdGlt
ZSlzICUocHJvY2VzcylkICUoZmlsZW5hbWUpczolKGxpbmVubylkICUobGV2ZWxuYW1lKXMgJSht
ZXNzYWdlKXMnCi0gICAgICAgIGxvZ19sZXZlbCA9IGxvZ2dpbmcuREVCVUcKLQotICAgIHJvb3Qg
PSBsb2dnaW5nLmdldExvZ2dlcigpCi0gICAgaGFuZGxlciA9IGxvZ2dpbmcuU3RyZWFtSGFuZGxl
cihzdHJlYW0pCi0gICAgaGFuZGxlci5zZXRGb3JtYXR0ZXIobG9nZ2luZy5Gb3JtYXR0ZXIobG9n
X2ZtdCwgTm9uZSkpCi0gICAgcm9vdC5hZGRIYW5kbGVyKGhhbmRsZXIpCi0gICAgcm9vdC5zZXRM
ZXZlbChsb2dfbGV2ZWwpCi0gICAgcmV0dXJuIGhhbmRsZXIKLQotCi1kZWYgX3Jlc3RvcmVfbG9n
Z2luZyhoYW5kbGVyX3RvX3JlbW92ZSk6Ci0gICAgcm9vdCA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCkK
LSAgICByb290LmhhbmRsZXJzLnJlbW92ZShoYW5kbGVyX3RvX3JlbW92ZSkKLQotCiBjbGFzcyBQ
cmludGVyKG9iamVjdCk6CiAgICAgIiIiQ2xhc3MgaGFuZGxpbmcgYWxsIG5vbi1kZWJ1Zy1sb2dn
aW5nIHByaW50aW5nIGRvbmUgYnkgcnVuLXdlYmtpdC10ZXN0cy4KIApAQCAtMTg3LDcgKzE1OCw3
IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0KToKIAogICAgIEJ5IGRlZmF1bHQgdGhlIGJ1aWxkYm90
LXBhcnNlZCBjb2RlIGdldHMgbG9nZ2VkIHRvIHN0ZG91dCwgYW5kIHJlZ3VsYXIKICAgICBvdXRw
dXQgZ2V0cyBsb2dnZWQgdG8gc3RkZXJyLiIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0
LCBvcHRpb25zLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0LCBjb25maWd1cmVfbG9n
Z2luZyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnQsIG9wdGlvbnMsIHJlZ3VsYXJfb3V0
cHV0LCBidWlsZGJvdF9vdXRwdXQsIGxvZ2dlcj1Ob25lKToKICAgICAgICAgIiIiCiAgICAgICAg
IEFyZ3MKICAgICAgICAgICBwb3J0ICAgICAgICAgICAgICAgaW50ZXJmYWNlIHRvIHBvcnQtc3Bl
Y2lmaWMgcm91dGluZXMKQEAgLTE5NiwzNyArMTY3LDE2IEBAIGNsYXNzIFByaW50ZXIob2JqZWN0
KToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hvdWxkIGJlIHdyaXR0ZW4KICAgICAg
ICAgICBidWlsZGJvdF9vdXRwdXQgICAgc3RyZWFtIHRvIHdoaWNoIG91dHB1dCBpbnRlbmRlZCB0
byBiZSByZWFkIGJ5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZGJvdHMg
KGFuZCBodW1hbnMpIHNob3VsZCBiZSB3cml0dGVuCi0gICAgICAgICAgY29uZmlndXJlX2xvZ2dp
Z24gIFdoZXRoZXIgYSBsb2dnaW5nIGhhbmRsZXIgc2hvdWxkIGJlIHJlZ2lzdGVyZWQKLQorICAg
ICAgICAgIGxvZ2dlciAgICAgICAgICAgICBvcHRpb25hbCBsb2dnZXIgdG8gaW50ZWdyYXRlIGlu
dG8gdGhlIHN0cmVhbS4KICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX3BvcnQgPSBwb3J0CiAg
ICAgICAgIHNlbGYuX29wdGlvbnMgPSBvcHRpb25zCi0gICAgICAgIHNlbGYuX3N0cmVhbSA9IHJl
Z3VsYXJfb3V0cHV0CiAgICAgICAgIHNlbGYuX2J1aWxkYm90X3N0cmVhbSA9IGJ1aWxkYm90X291
dHB1dAotICAgICAgICBzZWxmLl9tZXRlciA9IE5vbmUKLQotICAgICAgICAjIFRoZXNlIGFyZSB1
c2VkIGZvciAtLXByaW50IG9uZS1saW5lLXByb2dyZXNzCi0gICAgICAgIHNlbGYuX2xhc3RfcmVt
YWluaW5nID0gTm9uZQotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZV90aW1lID0gTm9uZQotCisg
ICAgICAgIHNlbGYuX21ldGVyID0gTWV0ZXJlZFN0cmVhbShyZWd1bGFyX291dHB1dCwgb3B0aW9u
cy52ZXJib3NlLCBsb2dnZXI9bG9nZ2VyKQogICAgICAgICBzZWxmLnN3aXRjaGVzID0gcGFyc2Vf
cHJpbnRfb3B0aW9ucyhvcHRpb25zLnByaW50X29wdGlvbnMsIG9wdGlvbnMudmVyYm9zZSkKIAot
ICAgICAgICBzZWxmLl9sb2dnaW5nX2hhbmRsZXIgPSBOb25lCi0gICAgICAgIGlmIHNlbGYuX3N0
cmVhbS5pc2F0dHkoKSBhbmQgbm90IG9wdGlvbnMudmVyYm9zZToKLSAgICAgICAgICAgIHNlbGYu
X3VwZGF0ZV9pbnRlcnZhbF9zZWNvbmRzID0gRkFTVF9VUERBVEVTX1NFQ09ORFMKLSAgICAgICAg
ICAgIHNlbGYuX21ldGVyID0gTWV0ZXJlZFN0cmVhbShzZWxmLl9zdHJlYW0pCi0gICAgICAgICAg
ICBpZiBjb25maWd1cmVfbG9nZ2luZzoKLSAgICAgICAgICAgICAgICBzZWxmLl9sb2dnaW5nX2hh
bmRsZXIgPSBfY29uZmlndXJlX2xvZ2dpbmcoc2VsZi5fbWV0ZXIsIG9wdGlvbnMudmVyYm9zZSkK
LSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3VwZGF0ZV9pbnRlcnZhbF9zZWNvbmRz
ID0gU0xPV19VUERBVEVTX1NFQ09ORFMKLSAgICAgICAgICAgIGlmIGNvbmZpZ3VyZV9sb2dnaW5n
OgotICAgICAgICAgICAgICAgIHNlbGYuX2xvZ2dpbmdfaGFuZGxlciA9IF9jb25maWd1cmVfbG9n
Z2luZyhzZWxmLl9zdHJlYW0sIG9wdGlvbnMudmVyYm9zZSkKLQogICAgIGRlZiBjbGVhbnVwKHNl
bGYpOgotICAgICAgICAiIiJSZXN0b3JlIGxvZ2dpbmcgY29uZmlndXJhdGlvbiB0byBpdHMgaW5p
dGlhbCBzZXR0aW5ncy4iIiIKLSAgICAgICAgaWYgc2VsZi5fbG9nZ2luZ19oYW5kbGVyOgotICAg
ICAgICAgICAgX3Jlc3RvcmVfbG9nZ2luZyhzZWxmLl9sb2dnaW5nX2hhbmRsZXIpCi0gICAgICAg
ICAgICBzZWxmLl9sb2dnaW5nX2hhbmRsZXIgPSBOb25lCisgICAgICAgIHNlbGYuX21ldGVyLmNs
ZWFudXAoKQogCiAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgIHNlbGYuY2xlYW51cCgp
CkBAIC0zNTAsMjcgKzMwMCwxOSBAQCBjbGFzcyBQcmludGVyKG9iamVjdCk6CiAgICAgICAgIGlm
IHNlbGYuZGlzYWJsZWQoJ29uZS1saW5lLXByb2dyZXNzJyk6CiAgICAgICAgICAgICByZXR1cm4K
IAotICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQotICAgICAgICBpZiBzZWxmLl9sYXN0X3VwZGF0
ZV90aW1lIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZV90aW1lID0gbm93
Ci0KLSAgICAgICAgdGltZV9zaW5jZV9sYXN0X3VwZGF0ZSA9IG5vdyAtIHNlbGYuX2xhc3RfdXBk
YXRlX3RpbWUKLSAgICAgICAgaWYgdGltZV9zaW5jZV9sYXN0X3VwZGF0ZSA8PSBzZWxmLl91cGRh
dGVfaW50ZXJ2YWxfc2Vjb25kczoKKyAgICAgICAgaWYgcmVzdWx0X3N1bW1hcnkucmVtYWluaW5n
ID09IDA6CisgICAgICAgICAgICBzZWxmLl9tZXRlci53cml0ZV91cGRhdGUoJycpCiAgICAgICAg
ICAgICByZXR1cm4KIAotICAgICAgICBzZWxmLl9sYXN0X3VwZGF0ZV90aW1lID0gbm93Ci0KICAg
ICAgICAgcGVyY2VudF9jb21wbGV0ZSA9IDEwMCAqIChyZXN1bHRfc3VtbWFyeS5leHBlY3RlZCAr
CiAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKSAvIHJlc3VsdF9zdW1tYXJ5
LnRvdGFsCiAgICAgICAgIGFjdGlvbiA9ICJUZXN0aW5nIgogICAgICAgICBpZiByZXRyeWluZzoK
ICAgICAgICAgICAgIGFjdGlvbiA9ICJSZXRyeWluZyIKLSAgICAgICAgc2VsZi5fdXBkYXRlKCIl
cyAoJWQlJSk6ICVkIHJhbiBhcyBleHBlY3RlZCwgJWQgZGlkbid0LCAlZCBsZWZ0IiAlCi0gICAg
ICAgICAgICAgICAgICAgICAoYWN0aW9uLCBwZXJjZW50X2NvbXBsZXRlLCByZXN1bHRfc3VtbWFy
eS5leHBlY3RlZCwKLSAgICAgICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVj
dGVkLCByZXN1bHRfc3VtbWFyeS5yZW1haW5pbmcpKQogCi0gICAgICAgIGlmIHJlc3VsdF9zdW1t
YXJ5LnJlbWFpbmluZyA9PSAwOgotICAgICAgICAgICAgc2VsZi5fdXBkYXRlKCcnKQorICAgICAg
ICBzZWxmLl9tZXRlci53cml0ZV90aHJvdHRsZWRfdXBkYXRlKCIlcyAoJWQlJSk6ICVkIHJhbiBh
cyBleHBlY3RlZCwgJWQgZGlkbid0LCAlZCBsZWZ0IiAlCisgICAgICAgICAgICAoYWN0aW9uLCBw
ZXJjZW50X2NvbXBsZXRlLCByZXN1bHRfc3VtbWFyeS5leHBlY3RlZCwKKyAgICAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkLCByZXN1bHRfc3VtbWFyeS5yZW1haW5pbmcpKQogCiAg
ICAgZGVmIHByaW50X3VuZXhwZWN0ZWRfcmVzdWx0cyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMp
OgogICAgICAgICAiIiJQcmludHMgYSBsaXN0IG9mIHRoZSB1bmV4cGVjdGVkIHJlc3VsdHMgdG8g
dGhlIGJ1aWxkYm90IHN0cmVhbS4iIiIKQEAgLTQ1OCw3ICs0MDAsNyBAQCBjbGFzcyBQcmludGVy
KG9iamVjdCk6CiAgICAgZGVmIHByaW50X3VwZGF0ZShzZWxmLCBtc2cpOgogICAgICAgICBpZiBz
ZWxmLmRpc2FibGVkKCd1cGRhdGVzJyk6CiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgc2Vs
Zi5fdXBkYXRlKG1zZykKKyAgICAgICAgc2VsZi5fbWV0ZXIud3JpdGVfdXBkYXRlKG1zZykKIAog
ICAgIGRlZiB3cml0ZShzZWxmLCBtc2csIG9wdGlvbj0ibWlzYyIpOgogICAgICAgICBpZiBzZWxm
LmRpc2FibGVkKG9wdGlvbik6CkBAIC00NjYsMTAgKzQwOCw0IEBAIGNsYXNzIFByaW50ZXIob2Jq
ZWN0KToKICAgICAgICAgc2VsZi5fd3JpdGUobXNnKQogCiAgICAgZGVmIF93cml0ZShzZWxmLCBt
c2cpOgotICAgICAgICBfbG9nLmluZm8obXNnKQotCi0gICAgZGVmIF91cGRhdGUoc2VsZiwgbXNn
KToKLSAgICAgICAgaWYgc2VsZi5fbWV0ZXI6Ci0gICAgICAgICAgICBzZWxmLl9tZXRlci51cGRh
dGUobXNnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5fd3JpdGUobXNnKQorICAg
ICAgICBzZWxmLl9tZXRlci53cml0ZWxuKG1zZykKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3ZpZXdzL3ByaW50aW5nX3VuaXR0ZXN0LnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkK
aW5kZXggNjg5OWQyYzVkNGNkYjA0NTI3MDljZDRkZjBlZDk2OTFmYzViYWY3ZC4uODc3N2ZkOGQ2
ZTMyMmJhNmRlMjM1N2M0NDRjODhlZTY4NjFkZDMzYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvdmlld3MvcHJpbnRpbmdfdW5pdHRl
c3QucHkKQEAgLTEsNSArMSw1IEBACiAjIS91c3IvYmluL3B5dGhvbgotIyBDb3B5cmlnaHQgKEMp
IDIwMTAgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgQ29weXJpZ2h0IChDKSAy
MDEwLCAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCiAjIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMgYXJlCkBAIC0yOSw3ICsyOSw2IEBACiAKICIiIlVuaXQgdGVzdHMgZm9y
IHByaW50aW5nLnB5LiIiIgogCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9wdHBhcnNlCiBpbXBv
cnQgU3RyaW5nSU8KIGltcG9ydCB0aW1lCkBAIC01NCwzNSArNTMsNiBAQCBkZWYgZ2V0X29wdGlv
bnMoYXJncyk6CiAKIAogY2xhc3MgVGVzdFV0aWxpdHlGdW5jdGlvbnModW5pdHRlc3QuVGVzdENh
c2UpOgotICAgIGRlZiBhc3NlcnRFbXB0eShzZWxmLCBzdHJlYW0pOgotICAgICAgICBzZWxmLmFz
c2VydEZhbHNlKHN0cmVhbS5nZXR2YWx1ZSgpKQotCi0gICAgZGVmIGFzc2VydE5vdEVtcHR5KHNl
bGYsIHN0cmVhbSk6Ci0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdHJlYW0uZ2V0dmFsdWUoKSkK
LQotICAgIGRlZiBhc3NlcnRXcml0dGVuKHNlbGYsIHN0cmVhbSwgY29udGVudHMpOgotICAgICAg
ICBzZWxmLmFzc2VydEVxdWFscyhzdHJlYW0uYnVmbGlzdCwgY29udGVudHMpCi0KLSAgICBkZWYg
dGVzdF9jb25maWd1cmVfbG9nZ2luZyhzZWxmKToKLSAgICAgICAgb3B0aW9ucywgYXJncyA9IGdl
dF9vcHRpb25zKFtdKQotICAgICAgICBzdHJlYW0gPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAg
ICAgIGhhbmRsZXIgPSBwcmludGluZy5fY29uZmlndXJlX2xvZ2dpbmcoc3RyZWFtLCBvcHRpb25z
LnZlcmJvc2UpCi0gICAgICAgIGxvZ2dpbmcuaW5mbygidGhpcyBzaG91bGQgYmUgbG9nZ2VkIikK
LSAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShzdHJlYW0pCi0KLSAgICAgICAgc3RyZWFtID0g
U3RyaW5nSU8uU3RyaW5nSU8oKQotICAgICAgICBsb2dnaW5nLmRlYnVnKCJ0aGlzIHNob3VsZCBu
b3QgYmUgbG9nZ2VkIikKLSAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShzdHJlYW0pCi0KLSAgICAg
ICAgcHJpbnRpbmcuX3Jlc3RvcmVfbG9nZ2luZyhoYW5kbGVyKQotCi0gICAgICAgIHN0cmVhbSA9
IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgb3B0aW9ucywgYXJncyA9IGdldF9vcHRpb25z
KFsnLS12ZXJib3NlJ10pCi0gICAgICAgIGhhbmRsZXIgPSBwcmludGluZy5fY29uZmlndXJlX2xv
Z2dpbmcoc3RyZWFtLCBvcHRpb25zLnZlcmJvc2UpCi0gICAgICAgIGxvZ2dpbmcuZGVidWcoInRo
aXMgc2hvdWxkIGJlIGxvZ2dlZCIpCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHkoc3RyZWFt
KQotICAgICAgICBwcmludGluZy5fcmVzdG9yZV9sb2dnaW5nKGhhbmRsZXIpCi0KICAgICBkZWYg
dGVzdF9wcmludF9vcHRpb25zKHNlbGYpOgogICAgICAgICBvcHRpb25zLCBhcmdzID0gZ2V0X29w
dGlvbnMoW10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb25zIGlzIG5vdCBOb25lKQpA
QCAtMTQ0LDggKzExNCw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVzdC5UZXN0Q2FzZSk6
CiAgICAgICAgIHJlZ3VsYXJfb3V0cHV0ID0gU3RyaW5nSU8uU3RyaW5nSU8oKQogICAgICAgICBy
ZWd1bGFyX291dHB1dC5pc2F0dHkgPSBsYW1iZGE6IHR0eQogICAgICAgICBidWlsZGJvdF9vdXRw
dXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCi0gICAgICAgIHByaW50ZXIgPSBwcmludGluZy5Qcmlu
dGVyKHNlbGYuX3BvcnQsIG9wdGlvbnMsIHJlZ3VsYXJfb3V0cHV0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBidWlsZGJvdF9vdXRwdXQsIGNvbmZpZ3VyZV9sb2dnaW5nPVRy
dWUpCisgICAgICAgIHByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHNlbGYuX3BvcnQsIG9wdGlv
bnMsIHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQpCiAgICAgICAgIHJldHVybiBwcmlu
dGVyLCByZWd1bGFyX291dHB1dCwgYnVpbGRib3Rfb3V0cHV0CiAKICAgICBkZWYgZ2V0X3Jlc3Vs
dChzZWxmLCB0ZXN0X25hbWUsIHJlc3VsdF90eXBlPXRlc3RfZXhwZWN0YXRpb25zLlBBU1MsIHJ1
bl90aW1lPTApOgpAQCAtMzUwLDcgKzMxOSw3IEBAIGNsYXNzICBUZXN0cHJpbnRlcih1bml0dGVz
dC5UZXN0Q2FzZSk6CiAgICAgICAgICAgICAgICAgICdmYWlsdXJlcy9leHBlY3RlZC9jcmFzaC5o
dG1sJ10KICAgICAgICAgcGF0aHMsIHJzLCBleHAgPSBzZWxmLmdldF9yZXN1bHRfc3VtbWFyeSh0
ZXN0cywgZXhwZWN0YXRpb25zKQogCi0gICAgICAgICMgRmlyc3QsIHRlc3QgdGhhdCB3ZSBwcmlu
dCBub3RoaW5nLgorICAgICAgICAjIEZpcnN0LCB0ZXN0IHRoYXQgd2UgcHJpbnQgbm90aGluZyB3
aGVuIHdlIHNob3VsZG4ndCBwcmludCBhbnl0aGluZy4KICAgICAgICAgcHJpbnRlci5wcmludF9w
cm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQogICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkK
ICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCkBAIC0zNTksNTUgKzMyOCwyOCBAQCBjbGFz
cyAgVGVzdHByaW50ZXIodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICAgICBzZWxmLmFzc2VydEVt
cHR5KG91dCkKICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShlcnIpCiAKLSAgICAgICAgc2VsZi50
aW1lcyA9IFsxLCAyLCAxMiwgMTMsIDE0LCAyMywgMzNdCi0KLSAgICAgICAgZGVmIG1vY2tfdGlt
ZSgpOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYudGltZXMucG9wKDApCi0KLSAgICAgICAgb3Jp
Z190aW1lID0gdGltZS50aW1lCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRpbWUudGltZSA9
IG1vY2tfdGltZQotCi0gICAgICAgICAgICAjIFRlc3QgcHJpbnRpbmcgcHJvZ3Jlc3MgdXBkYXRl
cyB0byBhIGZpbGUuCi0gICAgICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3By
aW50ZXIoWyctLXByaW50JywgJ29uZS1saW5lLXByb2dyZXNzJ10pCi0gICAgICAgICAgICBwcmlu
dGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCi0gICAgICAgICAgICBwcmludGVy
LnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2Vy
dEVtcHR5KG91dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkoZXJyKQotCi0gICAgICAg
ICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJzLCBGYWxzZSwgcGF0aHMpCi0gICAgICAgICAg
ICBzZWxmLmFzc2VydEVtcHR5KG91dCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RW1wdHko
ZXJyKQotCi0gICAgICAgICAgICBzZWxmLnJlc2V0KGVycikKLSAgICAgICAgICAgIHNlbGYucmVz
ZXQob3V0KQotICAgICAgICAgICAgcHJpbnRlci5wcmludF9wcm9ncmVzcyhycywgVHJ1ZSwgcGF0
aHMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91dCkKLSAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RW1wdHkoZXJyKQotCi0gICAgICAgICAgICBwcmludGVyLnByaW50X3Byb2dyZXNzKHJz
LCBUcnVlLCBwYXRocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHkob3V0KQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCi0KLSAgICAgICAgICAgICMgTm93IHJlY29u
ZmlndXJlIHRoZSBwcmludGVyIHRvIHRlc3QgcHJpbnRpbmcgdG8gYSBUVFkgaW5zdGVhZCBvZiBh
IGZpbGUuCi0gICAgICAgICAgICBzZWxmLnRpbWVzID0gWzEsIDEuMDEsIDIsIDNdCi0gICAgICAg
ICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ29u
ZS1saW5lLXByb2dyZXNzJ10sIHR0eT1UcnVlKQotICAgICAgICAgICAgcHJpbnRlci5wcmludF9w
cm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQotICAgICAgICAgICAgcHJpbnRlci5wcmludF9wcm9n
cmVzcyhycywgRmFsc2UsIHBhdGhzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQp
Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVtcHR5KGVycikKLQotICAgICAgICAgICAgcHJpbnRl
ci5wcmludF9wcm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQotICAgICAgICAgICAgc2VsZi5hc3Nl
cnRFbXB0eShvdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKLQotICAg
ICAgICAgICAgc2VsZi5yZXNldChlcnIpCi0gICAgICAgICAgICBzZWxmLnJlc2V0KG91dCkKLSAg
ICAgICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIFRydWUsIHBhdGhzKQotICAgICAg
ICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVt
cHR5KGVycikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIHRpbWUudGltZSA9IG9yaWdf
dGltZQorICAgICAgICAjIE5vdyB0ZXN0IHRoYXQgd2UgZG8gcHJpbnQgdGhpbmdzLgorICAgICAg
ICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ29uZS1s
aW5lLXByb2dyZXNzJ10pCisgICAgICAgIHByaW50ZXIucHJpbnRfcHJvZ3Jlc3MocnMsIEZhbHNl
LCBwYXRocykKKyAgICAgICAgc2VsZi5hc3NlcnRFbXB0eShvdXQpCisgICAgICAgIHNlbGYuYXNz
ZXJ0Tm90RW1wdHkoZXJyKQorCisgICAgICAgIHByaW50ZXIsIGVyciwgb3V0ID0gc2VsZi5nZXRf
cHJpbnRlcihbJy0tcHJpbnQnLCAnb25lLWxpbmUtcHJvZ3Jlc3MnXSkKKyAgICAgICAgcHJpbnRl
ci5wcmludF9wcm9ncmVzcyhycywgVHJ1ZSwgcGF0aHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RW1w
dHkob3V0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKKworICAgICAgICBwcmlu
dGVyLCBlcnIsIG91dCA9IHNlbGYuZ2V0X3ByaW50ZXIoWyctLXByaW50JywgJ29uZS1saW5lLXBy
b2dyZXNzJ10pCisgICAgICAgIHJzLnJlbWFpbmluZyA9IDAKKyAgICAgICAgcHJpbnRlci5wcmlu
dF9wcm9ncmVzcyhycywgRmFsc2UsIHBhdGhzKQorICAgICAgICBzZWxmLmFzc2VydEVtcHR5KG91
dCkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFbXB0eShlcnIpCisKKyAgICAgICAgcHJpbnRlci5w
cmludF9wcm9ncmVzcyhycywgVHJ1ZSwgcGF0aHMpCisgICAgICAgIHNlbGYuYXNzZXJ0RW1wdHko
b3V0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEVtcHR5KGVycikKKworCiAKICAgICBkZWYgdGVz
dF93cml0ZV9ub3RoaW5nKHNlbGYpOgogICAgICAgICBwcmludGVyLCBlcnIsIG91dCA9IHNlbGYu
Z2V0X3ByaW50ZXIoWyctLXByaW50JywgJ25vdGhpbmcnXSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkK
aW5kZXggY2UxYzdlOTAzODUzMjRjYjU2ZGRkODYwOTFmNDgxZjYzNzYxNmQ5Zi4uZGIxNWViMzhh
YjdmMTk4NTBhZTZmODk5NDI1ZjMxZWFhNzVjNGQ4MSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKKysrIGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkK
QEAgLTYyLDcgKzYyLDcgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAg
ICAgICBzZWxmLl9ob3N0ID0gSG9zdCgpCiAgICAgICAgICAgICBzZWxmLl9wb3J0ID0gc2VsZi5f
aG9zdC5wb3J0X2ZhY3RvcnkuZ2V0KHNlbGYuX29wdGlvbnMucGxhdGZvcm0sIHNlbGYuX29wdGlv
bnMpCiAgICAgICAgIHNlbGYuX2hvc3QuX2luaXRpYWxpemVfc2NtKCkKLSAgICAgICAgc2VsZi5f
cHJpbnRlciA9IHByaW50aW5nLlByaW50ZXIoc2VsZi5fcG9ydCwgc2VsZi5fb3B0aW9ucywgcmVn
dWxhcl9vdXRwdXQsIGJ1aWxkYm90X291dHB1dCwgY29uZmlndXJlX2xvZ2dpbmc9RmFsc2UpCisg
ICAgICAgIHNlbGYuX3ByaW50ZXIgPSBwcmludGluZy5QcmludGVyKHNlbGYuX3BvcnQsIHNlbGYu
X29wdGlvbnMsIHJlZ3VsYXJfb3V0cHV0LCBidWlsZGJvdF9vdXRwdXQpCiAgICAgICAgIHNlbGYu
X3dlYmtpdF9iYXNlX2Rpcl9sZW4gPSBsZW4oc2VsZi5fcG9ydC53ZWJraXRfYmFzZSgpKQogICAg
ICAgICBzZWxmLl9iYXNlX3BhdGggPSBzZWxmLl9wb3J0LnBlcmZfdGVzdHNfZGlyKCkKICAgICAg
ICAgc2VsZi5fcmVzdWx0cyA9IHt9CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lcl91bml0dGVzdC5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0
LnB5CmluZGV4IDFhMjg3YTdjZjZhZGEzY2E4YjliYWI2NDY0Mjg3NDhiMDI5NGU0ZTYuLmM1ODkx
ZDQwMTM2MWZlYzkxYzcxMDM1MDcyMTllY2E4MWQxMDEyZDcgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyX3VuaXR0ZXN0
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyX3VuaXR0ZXN0LnB5CkBAIC0xODIsNyArMTgyLDggQEAgbWF4IDExMjAKICAgICAg
ICAgICAgICAgICBUZXN0RHJpdmVyV2l0aFN0YXJ0Q291bnQuc3RhcnRfY291bnQgKz0gMQogCiAg
ICAgICAgIGJ1aWxkYm90X291dHB1dCA9IFN0cmluZ0lPLlN0cmluZ0lPKCkKLSAgICAgICAgcnVu
bmVyID0gc2VsZi5jcmVhdGVfcnVubmVyKGJ1aWxkYm90X291dHB1dCwgYXJncz1bIi0tcGF1c2Ut
YmVmb3JlLXRlc3RpbmciXSwgZHJpdmVyX2NsYXNzPVRlc3REcml2ZXJXaXRoU3RhcnRDb3VudCkK
KyAgICAgICAgcmVndWxhcl9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisgICAgICAgIHJ1
bm5lciA9IHNlbGYuY3JlYXRlX3J1bm5lcihidWlsZGJvdF9vdXRwdXQsIGFyZ3M9WyItLXBhdXNl
LWJlZm9yZS10ZXN0aW5nIl0sIHJlZ3VsYXJfb3V0cHV0PXJlZ3VsYXJfb3V0cHV0LCBkcml2ZXJf
Y2xhc3M9VGVzdERyaXZlcldpdGhTdGFydENvdW50KQogCiAgICAgICAgIGRpcm5hbWUgPSBydW5u
ZXIuX2Jhc2VfcGF0aCArICcvaW5zcGVjdG9yLycKICAgICAgICAgdGVzdHMgPSBbZGlybmFtZSAr
ICdwYXNzLmh0bWwnXQpAQCAtMTkzLDkgKzE5NCw5IEBAIG1heCAxMTIwCiAgICAgICAgICAgICB1
bmV4cGVjdGVkX3Jlc3VsdF9jb3VudCA9IHJ1bm5lci5fcnVuX3Rlc3RzX3NldCh0ZXN0cywgcnVu
bmVyLl9wb3J0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUZXN0RHJpdmVyV2l0aFN0
YXJ0Q291bnQuc3RhcnRfY291bnQsIDEpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBf
LCBzdGRlcnIsIGxvZ3MgPSBvdXRwdXQucmVzdG9yZV9vdXRwdXQoKQorICAgICAgICAgICAgXywg
c3RkZXJyLCBfID0gb3V0cHV0LnJlc3RvcmVfb3V0cHV0KCkKICAgICAgICAgICAgIHNlbGYuYXNz
ZXJ0RXF1YWwoc3RkZXJyLCAiUmVhZHkgdG8gcnVuIHRlc3Q/XG4iKQotICAgICAgICAgICAgc2Vs
Zi5hc3NlcnRUcnVlKCJSdW5uaW5nIGluc3BlY3Rvci9wYXNzLmh0bWwgKDEgb2YgMSkiIGluIGxv
Z3MpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoIlJ1bm5pbmcgaW5zcGVjdG9yL3Bhc3Mu
aHRtbCAoMSBvZiAxKSIgaW4gcmVndWxhcl9vdXRwdXQuZ2V0dmFsdWUoKSkKIAogICAgIGRlZiB0
ZXN0X3J1bl90ZXN0X3NldF9mb3JfcGFyc2VyX3Rlc3RzKHNlbGYpOgogICAgICAgICBidWlsZGJv
dF9vdXRwdXQgPSBTdHJpbmdJTy5TdHJpbmdJTygpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>