<?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>52267</bug_id>
          
          <creation_ts>2011-01-11 17:55:02 -0800</creation_ts>
          <short_desc>Change results.json format to the one used by unexpected_results.json</short_desc>
          <delta_ts>2011-03-01 22:50:24 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mihai Parparita">mihaip</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>mihaip</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>332831</commentid>
    <comment_count>0</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-11 17:55:02 -0800</bug_when>
    <thetext>Right now results.json uses a JSON-like format that&apos;s meant for the flakiness dashboard (it has a custom compression scheme, wraps the JSON in an ADD_RESULT method, etc.).

Since we don&apos;t actually need it for the flakiness dashboard anymore (it uses incremental_results.json), we should repurpose results.json to have a format closed to unexpected_results.json (which is a straightforward mapping from test name to expected and actual result). That would then make it easier to programatically parse the results of a NRWT run (the way webkitpy.common.net.layouttestresults.LayoutTestResults parses results.html for old-RWT - we should make that class handle either result type).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332833</commentid>
    <comment_count>1</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 17:56:23 -0800</bug_when>
    <thetext>sgtm.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332848</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 18:22:43 -0800</bug_when>
    <thetext>This sounds reasonable. Who do you imagine parsing the results files? Do the webkit.org bots parse the results files directly?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332849</commentid>
    <comment_count>3</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-11 18:26:22 -0800</bug_when>
    <thetext>Besides the various rebaselining tools (which should let you pick amongst failing tests), there are bunch of webkit-patch commands that use webkitpy.common.net.layouttestresults.LayoutTestResults (failure-reason, find-flaky-tests, etc.). Right now they don&apos;t work with bots that use NRWT, but if we output an easily parseable results.json then it should be reasonable to load it into the Python LayoutTestResults representation too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332850</commentid>
    <comment_count>4</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-01-11 18:28:32 -0800</bug_when>
    <thetext>Eventually, I&apos;d also like to see results.html pull in results.json and use that to generate that page from JS. That would let us make that page a richer experience.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332851</commentid>
    <comment_count>5</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 18:29:50 -0800</bug_when>
    <thetext>I have on my TODO list somewhere the task to unify results.html with the html generated by ORWT, so it seems reasonable to do that and pull in results.json at the same time.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332854</commentid>
    <comment_count>6</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-01-11 18:40:14 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; Eventually, I&apos;d also like to see results.html pull in results.json and use that to generate that page from JS. That would let us make that page a richer experience.

I am *strong* in favor of this.  If for no other reason than it separates model and view.  It would also make it trivial to unify the results.html experience between ORWT and NRWT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332856</commentid>
    <comment_count>7</comment_count>
    <who name="Mihai Parparita">mihaip</who>
    <bug_when>2011-01-11 18:43:34 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; I am *strong* in favor of this.  If for no other reason than it separates model and view.  It would also make it trivial to unify the results.html experience between ORWT and NRWT.

+1. Is there a bug filed?

Dirk, mind if I work on this bug in the meantime?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332861</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 18:59:29 -0800</bug_when>
    <thetext>Not at all. Feel free to do the other thing as well ;)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>332868</commentid>
    <comment_count>9</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-01-11 19:04:32 -0800</bug_when>
    <thetext>I think bug 37736 is Maciej&apos;s original request to unify the html output. There isn&apos;t a bug to have that file pull results.json, obviously.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357734</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-02-24 23:45:10 -0800</bug_when>
    <thetext>*** Bug 55116 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357744</commentid>
    <comment_count>11</comment_count>
      <attachid>83778</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-02-25 00:16:42 -0800</bug_when>
    <thetext>Created attachment 83778
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>357993</commentid>
    <comment_count>12</comment_count>
      <attachid>83778</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-25 10:07:04 -0800</bug_when>
    <thetext>Comment on attachment 83778
Patch

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

Looks fine to me, although Mihai is more familiar with this code so maybe he wants to take a look too.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:174
&gt; +    def generator_full_results_file(self):

Nit: Maybe generate_full_results_file to match generate_json_output?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:177
&gt; +        # For now we only include the times as this is only used for treemaps and
&gt; +        # expected/actual don&apos;t make test for gtests.

Nit: don&apos;t make sense for gtests?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:98
&gt; +    test_timings_map = dict((test_tuple.filename, test_tuple.test_run_time) for test_tuple in test_timings)

Nit: test_tuple -&gt; test_result?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:115
&gt;      for k, v in TestExpectationsFile.EXPECTATIONS.iteritems():
&gt;          keywords[v] = k.upper()
&gt;  
&gt; +    for k, v in TestExpectationsFile.MODIFIERS.iteritems():
&gt; +        keywords[v] = k.upper()

Nit: k -&gt; modifier? v-&gt; code_string?  Even key, value would be better.

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:151
&gt; +            time_seconds = test_timings_map[filename]
&gt; +            tests[test][&apos;time&apos;] = int(1000 * time_seconds)

Can we name the dict key time_ms to make the units clear?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:815
&gt; +    def _dump_summarized_result(self, filename, results):

Nit: docstring (mainly, it&apos;s not clear what results is).  Also, should there be a unittest for this?

&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:820
&gt; +        # Compact the results since we&apos;ll be uploading this to the test-results server.
&gt; +        # This shrinks the file size by ~20%.
&gt; +        # actual --&gt; a

In a future patch, maybe we can just zip the file.  I bet you get a &gt; 20% savings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358850</commentid>
    <comment_count>13</comment_count>
      <attachid>83778</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-02-27 19:51:36 -0800</bug_when>
    <thetext>Comment on attachment 83778
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/json_results_generator.py:174
&gt;&gt; +    def generator_full_results_file(self):
&gt; 
&gt; Nit: Maybe generate_full_results_file to match generate_json_output?

whoops. just a typo.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:115
&gt;&gt; +        keywords[v] = k.upper()
&gt; 
&gt; Nit: k -&gt; modifier? v-&gt; code_string?  Even key, value would be better.

Sorry. Was just mimicking the code above. Will fix both.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:151
&gt;&gt; +            tests[test][&apos;time&apos;] = int(1000 * time_seconds)
&gt; 
&gt; Can we name the dict key time_ms to make the units clear?

yes.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:820
&gt;&gt; +        # actual --&gt; a
&gt; 
&gt; In a future patch, maybe we can just zip the file.  I bet you get a &gt; 20% savings.

The downside is that we&apos;d have to unzip it on the receiving end since we&apos;re ultimately serving up a JS file to the browser.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358853</commentid>
    <comment_count>14</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-02-27 19:55:35 -0800</bug_when>
    <thetext>Committed r79837: &lt;http://trac.webkit.org/changeset/79837&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>358875</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-02-27 20:25:12 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/79837 might have broken SnowLeopard Intel Release (Tests)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>360598</commentid>
    <comment_count>16</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2011-03-01 22:50:24 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/layout_package/test_runner.py:820
&gt; &gt;&gt; +        # actual --&gt; a
&gt; &gt; 
&gt; &gt; In a future patch, maybe we can just zip the file.  I bet you get a &gt; 20% savings.
&gt; 
&gt; The downside is that we&apos;d have to unzip it on the receiving end since we&apos;re ultimately serving up a JS file to the browser.

Can we gzip the file and then just respond to the raw script URL with the gzipped content?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>83778</attachid>
            <date>2011-02-25 00:16:42 -0800</date>
            <delta_ts>2011-02-27 19:51:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-52267-20110225191639.patch</filename>
            <type>text/plain</type>
            <size>18585</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogNzk1MjAKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBi
L1Rvb2xzL0NoYW5nZUxvZwppbmRleCBhYjM0ODVkODBmMzlhZDI0M2EzMDQ2ZTkxZGI1NjQxOGY0
NTAxZWE1Li44ZjdjN2QyNzkxOWViMjBmNWRmZmJmZmM4ZWYyZGNhOTliZDI3YWI1IDEwMDY0NAot
LS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTEtMDItMjUgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDaGFuZ2UgcmVzdWx0cy5q
c29uIGZvcm1hdCB0byB0aGUgb25lIHVzZWQgYnkgdW5leHBlY3RlZF9yZXN1bHRzLmpzb24KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUyMjY3CisKKyAg
ICAgICAgQWxzbyBhZGQgcnVudGltZXMgaW4gbWlsbGlzZWNvbmRzIHRvIHRoZSBKU09OIGFuZCBt
YWtlIHRoZSBvdXRwdXQgZm9ybWF0IG1vcmUgY29tcGFjdC4KKyAgICAgICAgTmFtZWQgdGhlIGZp
bGUgZnVsbF9yZXN1bHRzLmpzb24gdG8gYXZvaWQgY29uZmxpY3Rpbmcgd2l0aCB0aGUgcmVzdWx0
cy5qc29uCisgICAgICAgIGZpbGUgdGhlIHRlc3QtcmVzdWx0cyBzZXJ2ZXIgY3VycmVudGx5IHNl
cnZlcyB1cC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5OgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVzdWx0c19n
ZW5lcmF0b3IucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9wcmludGluZy5w
eToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS9yZXN1bHRfc3VtbWFyeS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9sYXlvdXRfcGFja2FnZS90ZXN0X3J1bm5lci5weToKKwogMjAxMS0wMi0yMiAgT2phbiBW
YWZhaSAgPG9qYW5AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFRvbnkgQ2hh
bmcuCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlv
dXRfcGFja2FnZS9qc29uX2xheW91dF9yZXN1bHRzX2dlbmVyYXRvci5weSBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3Vs
dHNfZ2VuZXJhdG9yLnB5CmluZGV4IDgyMjZlZDAzOTdhNjZlYWIyNTVkMTA3MThmM2I1NjYxZjhj
NGFhNDcuLjE5YjAyZTg1NjYzN2I3NjM1NjAzZjhhYTY3MWMwN2QzNGIwY2FlNDggMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pz
b25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJhdG9yLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fbGF5b3V0X3Jlc3VsdHNfZ2VuZXJh
dG9yLnB5CkBAIC00MiwxMCArNDIsMTAgQEAgY2xhc3MgSlNPTkxheW91dFJlc3VsdHNHZW5lcmF0
b3IoanNvbl9yZXN1bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVyYXRvckJhc2UKICAgICAj
IEFkZGl0aW9uYWwgSlNPTiBmaWVsZHMuCiAgICAgV09OVEZJWCA9ICJ3b250Zml4Q291bnRzIgog
Ci0gICAgIyBOb3RlIHRoYXQgd2Ugb21pdCB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMIGZyb20gdGhp
cyBsaXN0IGJlY2F1c2UKLSAgICAjIGl0IHNob3VsZCBuZXZlciBzaG93IHVwIChpdCdzIGEgbGVn
YWN5IGlucHV0IGV4cGVjdGF0aW9uLCBuZXZlcgotICAgICMgYW4gb3V0cHV0IGV4cGVjdGF0aW9u
KS4KLSAgICBGQUlMVVJFX1RPX0NIQVIgPSB7dGVzdF9leHBlY3RhdGlvbnMuQ1JBU0g6ICJDIiwK
KyAgICBGQUlMVVJFX1RPX0NIQVIgPSB7dGVzdF9leHBlY3RhdGlvbnMuUEFTUzoganNvbl9yZXN1
bHRzX2dlbmVyYXRvci5KU09OUmVzdWx0c0dlbmVyYXRvckJhc2UuUEFTU19SRVNVTFQsCisgICAg
ICAgICAgICAgICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlNLSVA6IGpzb25fcmVzdWx0c19n
ZW5lcmF0b3IuSlNPTlJlc3VsdHNHZW5lcmF0b3JCYXNlLlNLSVBfUkVTVUxULAorICAgICAgICAg
ICAgICAgICAgICAgICB0ZXN0X2V4cGVjdGF0aW9ucy5GQUlMOiAiWSIsCisgICAgICAgICAgICAg
ICAgICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIOiAiQyIsCiAgICAgICAgICAgICAgICAg
ICAgICAgIHRlc3RfZXhwZWN0YXRpb25zLlRJTUVPVVQ6ICJUIiwKICAgICAgICAgICAgICAgICAg
ICAgICAgdGVzdF9leHBlY3RhdGlvbnMuSU1BR0U6ICJJIiwKICAgICAgICAgICAgICAgICAgICAg
ICAgdGVzdF9leHBlY3RhdGlvbnMuVEVYVDogIkYiLApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVy
YXRvci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNr
YWdlL2pzb25fcmVzdWx0c19nZW5lcmF0b3IucHkKaW5kZXggMDU2NjJjMjFiZTJiMzRhNjc2NTEx
ZDRlNDllZDAwMWJjNDJhNzRhNy4uMmE3N2RlYjI5MTA5NjNiMzU3MWUxMGZhY2FmYjczZmYxYjY1
MmQ2MyAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5
b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvci5weQorKysgYi9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNfZ2VuZXJh
dG9yLnB5CkBAIC0xMDksNiArMTA5LDcgQEAgY2xhc3MgSlNPTlJlc3VsdHNHZW5lcmF0b3JCYXNl
KG9iamVjdCk6CiAgICAgQUxMX0ZJWEFCTEVfQ09VTlQgPSAiYWxsRml4YWJsZUNvdW50IgogCiAg
ICAgUkVTVUxUU19GSUxFTkFNRSA9ICJyZXN1bHRzLmpzb24iCisgICAgRlVMTF9SRVNVTFRTX0ZJ
TEVOQU1FID0gImZ1bGxfcmVzdWx0cy5qc29uIgogICAgIElOQ1JFTUVOVEFMX1JFU1VMVFNfRklM
RU5BTUUgPSAiaW5jcmVtZW50YWxfcmVzdWx0cy5qc29uIgogCiAgICAgVVJMX0ZPUl9URVNUX0xJ
U1RfSlNPTiA9IFwKQEAgLTE1MSwxMCArMTUyLDYgQEAgY2xhc3MgSlNPTlJlc3VsdHNHZW5lcmF0
b3JCYXNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX2J1aWxkX251bWJlciA9IGJ1aWxkX251bWJl
cgogICAgICAgICBzZWxmLl9idWlsZGVyX2Jhc2VfdXJsID0gYnVpbGRlcl9iYXNlX3VybAogICAg
ICAgICBzZWxmLl9yZXN1bHRzX2RpcmVjdG9yeSA9IHJlc3VsdHNfZmlsZV9iYXNlX3BhdGgKLSAg
ICAgICAgc2VsZi5fcmVzdWx0c19maWxlX3BhdGggPSBzZWxmLl9mcy5qb2luKHJlc3VsdHNfZmls
ZV9iYXNlX3BhdGgsCi0gICAgICAgICAgICBzZWxmLlJFU1VMVFNfRklMRU5BTUUpCi0gICAgICAg
IHNlbGYuX2luY3JlbWVudGFsX3Jlc3VsdHNfZmlsZV9wYXRoID0gc2VsZi5fZnMuam9pbigKLSAg
ICAgICAgICAgIHJlc3VsdHNfZmlsZV9iYXNlX3BhdGgsIHNlbGYuSU5DUkVNRU5UQUxfUkVTVUxU
U19GSUxFTkFNRSkKIAogICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHNfbWFwID0gdGVzdF9yZXN1
bHRzX21hcAogICAgICAgICBzZWxmLl90ZXN0X3Jlc3VsdHMgPSB0ZXN0X3Jlc3VsdHNfbWFwLnZh
bHVlcygpCkBAIC0xNzIsOCArMTY5LDI0IEBAIGNsYXNzIEpTT05SZXN1bHRzR2VuZXJhdG9yQmFz
ZShvYmplY3QpOgogICAgIGRlZiBnZW5lcmF0ZV9qc29uX291dHB1dChzZWxmKToKICAgICAgICAg
anNvbiA9IHNlbGYuZ2V0X2pzb24oKQogICAgICAgICBpZiBqc29uOgotICAgICAgICAgICAgc2Vs
Zi5fZ2VuZXJhdGVfanNvbl9maWxlKAotICAgICAgICAgICAgICAgIGpzb24sIHNlbGYuX2luY3Jl
bWVudGFsX3Jlc3VsdHNfZmlsZV9wYXRoKQorICAgICAgICAgICAgc2VsZi5fZ2VuZXJhdGVfanNv
bl9maWxlKGpzb24sIHNlbGYuSU5DUkVNRU5UQUxfUkVTVUxUU19GSUxFTkFNRSkKKworICAgIGRl
ZiBnZW5lcmF0b3JfZnVsbF9yZXN1bHRzX2ZpbGUoc2VsZik6CisgICAgICAgICMgVXNlIHRoZSBz
YW1lIHN0cnVjdHVyZSBhcyB0aGUgY29tcGFjdGVkIHZlcnNpb24gb2YgVGVzdFJ1bm5lci5zdW1t
YXJpemVfcmVzdWx0cy4KKyAgICAgICAgIyBGb3Igbm93IHdlIG9ubHkgaW5jbHVkZSB0aGUgdGlt
ZXMgYXMgdGhpcyBpcyBvbmx5IHVzZWQgZm9yIHRyZWVtYXBzIGFuZAorICAgICAgICAjIGV4cGVj
dGVkL2FjdHVhbCBkb24ndCBtYWtlIHRlc3QgZm9yIGd0ZXN0cy4KKyAgICAgICAgcmVzdWx0cyA9
IHt9CisgICAgICAgIHJlc3VsdHNbJ3ZlcnNpb24nXSA9IDEKKworICAgICAgICB0ZXN0cyA9IHt9
CisKKyAgICAgICAgZm9yIHRlc3QgaW4gc2VsZi5fdGVzdF9yZXN1bHRzX21hcDoKKyAgICAgICAg
ICAgIHRpbWVfc2Vjb25kcyA9IHNlbGYuX3Rlc3RfcmVzdWx0c19tYXBbdGVzdF0udGltZQorICAg
ICAgICAgICAgdGVzdHNbdGVzdF0gPSB7fQorICAgICAgICAgICAgdGVzdHNbdGVzdF1bJ3QnXSA9
IGludCgxMDAwICogdGltZV9zZWNvbmRzKQorCisgICAgICAgIHJlc3VsdHNbJ3Rlc3RzJ10gPSB0
ZXN0cworICAgICAgICBzZWxmLl9nZW5lcmF0ZV9qc29uX2ZpbGUocmVzdWx0cywgc2VsZi5GVUxM
X1JFU1VMVFNfRklMRU5BTUUpCiAKICAgICBkZWYgZ2V0X2pzb24oc2VsZik6CiAgICAgICAgICIi
IkdldHMgdGhlIHJlc3VsdHMgZm9yIHRoZSByZXN1bHRzLmpzb24gZmlsZS4iIiIKQEAgLTI0OSwx
MCArMjYyLDExIEBAIGNsYXNzIEpTT05SZXN1bHRzR2VuZXJhdG9yQmFzZShvYmplY3QpOgogCiAg
ICAgICAgIF9sb2cuaW5mbygiSlNPTiBmaWxlcyB1cGxvYWRlZC4iKQogCi0gICAgZGVmIF9nZW5l
cmF0ZV9qc29uX2ZpbGUoc2VsZiwganNvbiwgZmlsZV9wYXRoKToKKyAgICBkZWYgX2dlbmVyYXRl
X2pzb25fZmlsZShzZWxmLCBqc29uLCBmaWxlbmFtZSk6CiAgICAgICAgICMgU3BlY2lmeSBzZXBh
cmF0b3JzIGluIG9yZGVyIHRvIGdldCBjb21wYWN0IGVuY29kaW5nLgogICAgICAgICBqc29uX2Rh
dGEgPSBzaW1wbGVqc29uLmR1bXBzKGpzb24sIHNlcGFyYXRvcnM9KCcsJywgJzonKSkKICAgICAg
ICAganNvbl9zdHJpbmcgPSBzZWxmLkpTT05fUFJFRklYICsganNvbl9kYXRhICsgc2VsZi5KU09O
X1NVRkZJWAorICAgICAgICBmaWxlX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX3Jlc3VsdHNf
ZGlyZWN0b3J5LCBmaWxlbmFtZSkKICAgICAgICAgc2VsZi5fZnMud3JpdGVfdGV4dF9maWxlKGZp
bGVfcGF0aCwganNvbl9zdHJpbmcpCiAKICAgICBkZWYgX2dldF90ZXN0X3RpbWluZyhzZWxmLCB0
ZXN0X25hbWUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbGF5b3V0X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL2pzb25fcmVz
dWx0c19nZW5lcmF0b3JfdW5pdHRlc3QucHkKaW5kZXggOTVkYThmYjQ2MzNmODBhYTFjZGM4OGM2
ZjZiOTgxNjcxMGRjYWYyMy4uOWFjNDJhZDBjMDY0ODBjNWEyOTI0YWJlYTU0ZDZmZWY4Y2I0MDZl
YiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0
X3BhY2thZ2UvanNvbl9yZXN1bHRzX2dlbmVyYXRvcl91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9qc29uX3Jlc3VsdHNf
Z2VuZXJhdG9yX3VuaXR0ZXN0LnB5CkBAIC0xMDYsNiArMTA2LDEwIEBAIGNsYXNzIEpTT05HZW5l
cmF0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgICAgIGluY3JlbWVudGFsX2pz
b24sCiAgICAgICAgICAgICAxKQogCisgICAgICAgICMgV2UgZG9uJ3QgdmVyaWZ5IHRoZSByZXN1
bHRzIGhlcmUsIGJ1dCBhdCBsZWFzdCB3ZSBtYWtlIHN1cmUgdGhlIGNvZGUgcnVucyB3aXRob3V0
IGVycm9ycy4KKyAgICAgICAgZ2VuZXJhdG9yLmdlbmVyYXRlX2pzb25fb3V0cHV0KCkKKyAgICAg
ICAgZ2VuZXJhdG9yLmdlbmVyYXRvcl9mdWxsX3Jlc3VsdHNfZmlsZSgpCisKICAgICBkZWYgX3Zl
cmlmeV9qc29uX3Jlc3VsdHMoc2VsZiwgdGVzdHNfc2V0LCB0ZXN0X3RpbWluZ3MsIGZhaWxlZF9j
b3VudF9tYXAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBU1NfY291bnQsIERJU0FC
TEVEX2NvdW50LCBGTEFLWV9jb3VudCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZml4
YWJsZV9jb3VudCwKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL2xheW91dF9wYWNrYWdlL3ByaW50aW5nLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmcucHkKaW5kZXggZTEwYWQ5OTA3ZWIy
YWMxMzRjNTE5YTQ1OWEyOWVkYzYxOWIwMzgwMS4uNTg4YzEwMzE4ZDk1Y2IxMmJhZjE1OTU5YTkx
ZTM0ZTMyMTM0YjNkNCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmcucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvbGF5b3V0X3BhY2thZ2UvcHJpbnRpbmcucHkKQEAgLTQyMyw3ICs0
MjMsNyBAQCBjbGFzcyBQcmludGVyKG9iamVjdCk6CiAgICAgICAgICAgICBlbHNlOgogICAgICAg
ICAgICAgICAgIHNlbGYuX2N1cnJlbnRfcHJvZ3Jlc3Nfc3RyICs9ICIuIgogCi0gICAgICAgICAg
ICBpZiAobmV4dF90ZXN0IGluIHJlc3VsdF9zdW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0cyBhbmQK
KyAgICAgICAgICAgIGlmIChuZXh0X3Rlc3QgaW4gcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9y
ZXN1bHRzLnR5cGUgYW5kCiAgICAgICAgICAgICAgICAgc2VsZi5lbmFibGVkKCd1bmV4cGVjdGVk
JykpOgogICAgICAgICAgICAgICAgIHNlbGYuX21ldGVyLndyaXRlKCIlc1xuIiAlIHNlbGYuX2N1
cnJlbnRfcHJvZ3Jlc3Nfc3RyKQogICAgICAgICAgICAgICAgIHRlc3RfcmVzdWx0ID0gcmVzdWx0
X3N1bW1hcnkucmVzdWx0c1tuZXh0X3Rlc3RdCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2FnZS9yZXN1bHRfc3VtbWFyeS5weSBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Jlc3VsdF9z
dW1tYXJ5LnB5CmluZGV4IDgwZmQ2YWNiZjVhZmQ4NzBkODYwMjU1ZDg2MjE5NzYwOWUyZTBjNjAu
LjBjZWU0ZjE5ZDA3M2ZiZjIzOTM1MjJlYTk2NjdhNzA4YzIzNzA3N2IgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Jlc3VsdF9z
dW1tYXJ5LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Jlc3VsdF9zdW1tYXJ5LnB5CkBAIC04MSw3ICs4MSw3IEBAIGNsYXNzIFJlc3Vs
dFN1bW1hcnkob2JqZWN0KToKICAgICAgICAgaWYgZXhwZWN0ZWQ6CiAgICAgICAgICAgICBzZWxm
LmV4cGVjdGVkICs9IDEKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYudW5leHBlY3Rl
ZF9yZXN1bHRzW3Jlc3VsdC5maWxlbmFtZV0gPSByZXN1bHQudHlwZQorICAgICAgICAgICAgc2Vs
Zi51bmV4cGVjdGVkX3Jlc3VsdHNbcmVzdWx0LmZpbGVuYW1lXSA9IHJlc3VsdAogICAgICAgICAg
ICAgc2VsZi51bmV4cGVjdGVkICs9IDEKICAgICAgICAgICAgIGlmIGxlbihyZXN1bHQuZmFpbHVy
ZXMpOgogICAgICAgICAgICAgICAgIHNlbGYudW5leHBlY3RlZF9mYWlsdXJlcyArPSAxCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9sYXlvdXRfcGFja2Fn
ZS90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xh
eW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CmluZGV4IGUzYmQ0YWQyNmFmMDhhMGE2ODExZTRm
MDZhNzhhNWI2NTI4MjIyNGUuLmEwMjFhZTlkNDJiODFjZWQwZGEyNDNiMmEzY2I3YThjNDUxOTNh
OTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2xheW91
dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2xheW91dF9wYWNrYWdlL3Rlc3RfcnVubmVyLnB5CkBAIC0zNyw2ICszNyw3IEBA
IGNyZWF0ZSBhIGZpbmFsIHJlcG9ydC4KIAogZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0
YXRlbWVudAogCitpbXBvcnQgY29weQogaW1wb3J0IGVycm5vCiBpbXBvcnQgbG9nZ2luZwogaW1w
b3J0IG1hdGgKQEAgLTY4LDggKzY5LDcgQEAgQlVJTERFUl9CQVNFX1VSTCA9ICJodHRwOi8vYnVp
bGQuY2hyb21pdW0ub3JnL2J1aWxkYm90L2xheW91dF90ZXN0X3Jlc3VsdHMvIgogVGVzdEV4cGVj
dGF0aW9uc0ZpbGUgPSB0ZXN0X2V4cGVjdGF0aW9ucy5UZXN0RXhwZWN0YXRpb25zRmlsZQogCiAK
LWRlZiBzdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1bHRzKHBvcnRfb2JqLCBleHBlY3RhdGlvbnMs
IHJlc3VsdF9zdW1tYXJ5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0cnlf
c3VtbWFyeSk6CitkZWYgc3VtbWFyaXplX3Jlc3VsdHMocG9ydF9vYmosIGV4cGVjdGF0aW9ucywg
cmVzdWx0X3N1bW1hcnksIHJldHJ5X3N1bW1hcnksIHRlc3RfdGltaW5ncywgb25seV91bmV4cGVj
dGVkKToKICAgICAiIiJTdW1tYXJpemUgYW55IHVuZXhwZWN0ZWQgcmVzdWx0cyBhcyBhIGRpY3Qu
CiAKICAgICBGSVhNRTogc3BsaXQgdGhpcyBkYXRhIHN0cnVjdHVyZSBpbnRvIGEgc2VwYXJhdGUg
Y2xhc3M/CkBAIC03OSw2ICs3OSw4IEBAIGRlZiBzdW1tYXJpemVfdW5leHBlY3RlZF9yZXN1bHRz
KHBvcnRfb2JqLCBleHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1tYXJ5LAogICAgICAgICBleHBlY3Rh
dGlvbnM6IHRlc3RfZXhwZWN0YXRpb25zLlRlc3RFeHBlY3RhdGlvbnMgb2JqZWN0CiAgICAgICAg
IHJlc3VsdF9zdW1tYXJ5OiBzdW1tYXJ5IG9iamVjdCBmcm9tIGluaXRpYWwgdGVzdCBydW5zCiAg
ICAgICAgIHJldHJ5X3N1bW1hcnk6IHN1bW1hcnkgb2JqZWN0IGZyb20gZmluYWwgdGVzdCBydW4g
b2YgcmV0cmllZCB0ZXN0cworICAgICAgICB0ZXN0X3RpbWluZ3M6IGEgbGlzdCBvZiBUZXN0UmVz
dWx0IG9iamVjdHMgd2hpY2ggY29udGFpbiB0ZXN0IHJ1bnRpbWVzIGluIHNlY29uZHMKKyAgICAg
ICAgb25seV91bmV4cGVjdGVkOiB3aGV0aGVyIHRvIHJldHVybiBhIHN1bW1hcnkgb25seSBmb3Ig
dGhlIHVuZXhwZWN0ZWQgcmVzdWx0cwogICAgIFJldHVybnM6CiAgICAgICAgIEEgZGljdGlvbmFy
eSBjb250YWluaW5nIGEgc3VtbWFyeSBvZiB0aGUgdW5leHBlY3RlZCByZXN1bHRzIGZyb20gdGhl
CiAgICAgICAgIHJ1biwgd2l0aCB0aGUgZm9sbG93aW5nIGZpZWxkczoKQEAgLTg4LDExICs5MCwx
MyBAQCBkZWYgc3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRp
b25zLCByZXN1bHRfc3VtbWFyeSwKICAgICAgICAgJ251bV9yZWdyZXNzaW9ucyc6ICMgb2Ygbm9u
LWZsYWt5IGZhaWx1cmVzCiAgICAgICAgICdudW1fZmxha3knOiAjIG9mIGZsYWt5IGZhaWx1cmVz
CiAgICAgICAgICdudW1fcGFzc2VzJzogIyBvZiB1bmV4cGVjdGVkIHBhc3NlcwotICAgICAgICAn
dGVzdHMnOiBhIGRpY3Qgb2YgdGVzdHMgLT4geydleHBlY3RlZCc6ICcuLi4nLCAnYWN0dWFsJzog
Jy4uLid9CisgICAgICAgICd0ZXN0cyc6IGEgZGljdCBvZiB0ZXN0cyAtPiB7J2V4cGVjdGVkJzog
Jy4uLicsICdhY3R1YWwnOiAnLi4uJywgJ3RpbWUnOiAuLi59CiAgICAgIiIiCiAgICAgcmVzdWx0
cyA9IHt9CiAgICAgcmVzdWx0c1sndmVyc2lvbiddID0gMQogCisgICAgdGVzdF90aW1pbmdzX21h
cCA9IGRpY3QoKHRlc3RfdHVwbGUuZmlsZW5hbWUsIHRlc3RfdHVwbGUudGVzdF9ydW5fdGltZSkg
Zm9yIHRlc3RfdHVwbGUgaW4gdGVzdF90aW1pbmdzKQorCiAgICAgdGJlID0gcmVzdWx0X3N1bW1h
cnkudGVzdHNfYnlfZXhwZWN0YXRpb24KICAgICB0YnQgPSByZXN1bHRfc3VtbWFyeS50ZXN0c19i
eV90aW1lbGluZQogICAgIHJlc3VsdHNbJ2ZpeGFibGUnXSA9IGxlbih0YnRbdGVzdF9leHBlY3Rh
dGlvbnMuTk9XXSAtCkBAIC0xMDcsMjggKzExMSwzMyBAQCBkZWYgc3VtbWFyaXplX3VuZXhwZWN0
ZWRfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwKICAgICBm
b3IgaywgdiBpbiBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlMuaXRlcml0ZW1zKCk6
CiAgICAgICAgIGtleXdvcmRzW3ZdID0gay51cHBlcigpCiAKKyAgICBmb3IgaywgdiBpbiBUZXN0
RXhwZWN0YXRpb25zRmlsZS5NT0RJRklFUlMuaXRlcml0ZW1zKCk6CisgICAgICAgIGtleXdvcmRz
W3ZdID0gay51cHBlcigpCisKICAgICB0ZXN0cyA9IHt9Ci0gICAgZm9yIGZpbGVuYW1lLCByZXN1
bHQgaW4gcmVzdWx0X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzLml0ZXJpdGVtcygpOgorICAg
IG9yaWdpbmFsX3Jlc3VsdHMgPSByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkX3Jlc3VsdHMgaWYg
b25seV91bmV4cGVjdGVkIGVsc2UgcmVzdWx0X3N1bW1hcnkucmVzdWx0cworCisgICAgZm9yIGZp
bGVuYW1lLCByZXN1bHQgaW4gb3JpZ2luYWxfcmVzdWx0cy5pdGVyaXRlbXMoKToKICAgICAgICAg
IyBOb3RlIHRoYXQgaWYgYSB0ZXN0IGNyYXNoZWQgaW4gdGhlIG9yaWdpbmFsIHJ1biwgd2UgaWdu
b3JlCiAgICAgICAgICMgd2hldGhlciBvciBub3QgaXQgY3Jhc2hlZCB3aGVuIHdlIHJldHJpZWQg
aXQgKGlmIHdlIHJldHJpZWQgaXQpLAogICAgICAgICAjIGFuZCBhbHdheXMgY29uc2lkZXIgdGhl
IHJlc3VsdCBub3QgZmxha3kuCiAgICAgICAgIHRlc3QgPSBwb3J0X29iai5yZWxhdGl2ZV90ZXN0
X2ZpbGVuYW1lKGZpbGVuYW1lKQogICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGF0aW9ucy5nZXRf
ZXhwZWN0YXRpb25zX3N0cmluZyhmaWxlbmFtZSkKLSAgICAgICAgYWN0dWFsID0gW2tleXdvcmRz
W3Jlc3VsdF1dCisgICAgICAgIHJlc3VsdF90eXBlID0gcmVzdWx0LnR5cGUKKyAgICAgICAgYWN0
dWFsID0gW2tleXdvcmRzW3Jlc3VsdF90eXBlXV0KIAotICAgICAgICBpZiByZXN1bHQgPT0gdGVz
dF9leHBlY3RhdGlvbnMuUEFTUzoKKyAgICAgICAgaWYgcmVzdWx0X3R5cGUgPT0gdGVzdF9leHBl
Y3RhdGlvbnMuUEFTUzoKICAgICAgICAgICAgIG51bV9wYXNzZXMgKz0gMQotICAgICAgICBlbGlm
IHJlc3VsdCA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSDoKKyAgICAgICAgZWxpZiByZXN1bHRf
dHlwZSA9PSB0ZXN0X2V4cGVjdGF0aW9ucy5DUkFTSDoKICAgICAgICAgICAgIG51bV9yZWdyZXNz
aW9ucyArPSAxCi0gICAgICAgIGVsc2U6CisgICAgICAgIGVsaWYgZmlsZW5hbWUgaW4gcmVzdWx0
X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzOgogICAgICAgICAgICAgaWYgZmlsZW5hbWUgbm90
IGluIHJldHJ5X3N1bW1hcnkudW5leHBlY3RlZF9yZXN1bHRzOgotICAgICAgICAgICAgICAgIGFj
dHVhbC5leHRlbmQoZXhwZWN0YXRpb25zLmdldF9leHBlY3RhdGlvbnNfc3RyaW5nKAotICAgICAg
ICAgICAgICAgICAgICBmaWxlbmFtZSkuc3BsaXQoIiAiKSkKKyAgICAgICAgICAgICAgICBhY3R1
YWwuZXh0ZW5kKGV4cGVjdGF0aW9ucy5nZXRfZXhwZWN0YXRpb25zX3N0cmluZyhmaWxlbmFtZSku
c3BsaXQoIiAiKSkKICAgICAgICAgICAgICAgICBudW1fZmxha3kgKz0gMQogICAgICAgICAgICAg
ZWxzZToKLSAgICAgICAgICAgICAgICByZXRyeV9yZXN1bHQgPSByZXRyeV9zdW1tYXJ5LnVuZXhw
ZWN0ZWRfcmVzdWx0c1tmaWxlbmFtZV0KLSAgICAgICAgICAgICAgICBpZiByZXN1bHQgIT0gcmV0
cnlfcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICBhY3R1YWwuYXBwZW5kKGtleXdvcmRzW3Jl
dHJ5X3Jlc3VsdF0pCisgICAgICAgICAgICAgICAgcmV0cnlfcmVzdWx0X3R5cGUgPSByZXRyeV9z
dW1tYXJ5LnVuZXhwZWN0ZWRfcmVzdWx0c1tmaWxlbmFtZV0udHlwZQorICAgICAgICAgICAgICAg
IGlmIHJlc3VsdF90eXBlICE9IHJldHJ5X3Jlc3VsdF90eXBlOgorICAgICAgICAgICAgICAgICAg
ICBhY3R1YWwuYXBwZW5kKGtleXdvcmRzW3JldHJ5X3Jlc3VsdF90eXBlXSkKICAgICAgICAgICAg
ICAgICAgICAgbnVtX2ZsYWt5ICs9IDEKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAg
ICAgICAgICAgICBudW1fcmVncmVzc2lvbnMgKz0gMQpAQCAtMTM3LDYgKzE0NiwxMCBAQCBkZWYg
c3VtbWFyaXplX3VuZXhwZWN0ZWRfcmVzdWx0cyhwb3J0X29iaiwgZXhwZWN0YXRpb25zLCByZXN1
bHRfc3VtbWFyeSwKICAgICAgICAgdGVzdHNbdGVzdF1bJ2V4cGVjdGVkJ10gPSBleHBlY3RlZAog
ICAgICAgICB0ZXN0c1t0ZXN0XVsnYWN0dWFsJ10gPSAiICIuam9pbihhY3R1YWwpCiAKKyAgICAg
ICAgaWYgZmlsZW5hbWUgaW4gdGVzdF90aW1pbmdzX21hcDoKKyAgICAgICAgICAgIHRpbWVfc2Vj
b25kcyA9IHRlc3RfdGltaW5nc19tYXBbZmlsZW5hbWVdCisgICAgICAgICAgICB0ZXN0c1t0ZXN0
XVsndGltZSddID0gaW50KDEwMDAgKiB0aW1lX3NlY29uZHMpCisKICAgICByZXN1bHRzWyd0ZXN0
cyddID0gdGVzdHMKICAgICByZXN1bHRzWydudW1fcGFzc2VzJ10gPSBudW1fcGFzc2VzCiAgICAg
cmVzdWx0c1snbnVtX2ZsYWt5J10gPSBudW1fZmxha3kKQEAgLTY4Myw4ICs2OTYsOCBAQCBjbGFz
cyBUZXN0UnVubmVyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0X3N1bW1hcnkuZXhwZWN0ZWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXN1bHRfc3VtbWFyeS51bmV4cGVjdGVkKQogCi0gICAgICAgIHVu
ZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV91bmV4cGVjdGVkX3Jlc3VsdHMoc2VsZi5fcG9y
dCwKLSAgICAgICAgICAgIHNlbGYuX2V4cGVjdGF0aW9ucywgcmVzdWx0X3N1bW1hcnksIHJldHJ5
X3N1bW1hcnkpCisgICAgICAgIHVuZXhwZWN0ZWRfcmVzdWx0cyA9IHN1bW1hcml6ZV9yZXN1bHRz
KHNlbGYuX3BvcnQsCisgICAgICAgICAgICBzZWxmLl9leHBlY3RhdGlvbnMsIHJlc3VsdF9zdW1t
YXJ5LCByZXRyeV9zdW1tYXJ5LCBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncywgb25seV91bmV4cGVj
dGVkPVRydWUpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdW5leHBlY3RlZF9yZXN1bHRz
KHVuZXhwZWN0ZWRfcmVzdWx0cykKIAogICAgICAgICAjIEZJWE1FOiByZW1vdmUgcmVjb3JkX3Jl
c3VsdHMuIEl0J3MganVzdCB1c2VkIGZvciB0ZXN0aW5nLiBUaGVyZSdzIG5vIG5lZWQKQEAgLTY5
Myw3ICs3MDYsOSBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAgICAgbm90IGludGVycnVw
dGVkKToKICAgICAgICAgICAgICMgV3JpdGUgdGhlIHNhbWUgZGF0YSB0byBsb2cgZmlsZXMgYW5k
IHVwbG9hZCBnZW5lcmF0ZWQgSlNPTiBmaWxlcwogICAgICAgICAgICAgIyB0byBhcHBlbmdpbmUg
c2VydmVyLgotICAgICAgICAgICAgc2VsZi5fdXBsb2FkX2pzb25fZmlsZXModW5leHBlY3RlZF9y
ZXN1bHRzLCByZXN1bHRfc3VtbWFyeSwKKyAgICAgICAgICAgIHN1bW1hcml6ZWRfcmVzdWx0cyA9
IHN1bW1hcml6ZV9yZXN1bHRzKHNlbGYuX3BvcnQsCisgICAgICAgICAgICAgICAgc2VsZi5fZXhw
ZWN0YXRpb25zLCByZXN1bHRfc3VtbWFyeSwgcmV0cnlfc3VtbWFyeSwgaW5kaXZpZHVhbF90ZXN0
X3RpbWluZ3MsIG9ubHlfdW5leHBlY3RlZD1GYWxzZSkKKyAgICAgICAgICAgIHNlbGYuX3VwbG9h
ZF9qc29uX2ZpbGVzKHVuZXhwZWN0ZWRfcmVzdWx0cywgc3VtbWFyaXplZF9yZXN1bHRzLCByZXN1
bHRfc3VtbWFyeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluZGl2aWR1
YWxfdGVzdF90aW1pbmdzKQogCiAgICAgICAgICMgV3JpdGUgdGhlIHN1bW1hcnkgdG8gZGlzayAo
cmVzdWx0cy5odG1sKSBhbmQgZGlzcGxheSBpdCBpZiByZXF1ZXN0ZWQuCkBAIC03ODIsMTQgKzc5
Nyw0OCBAQCBjbGFzcyBUZXN0UnVubmVyOgogICAgICAgICAiIiIKICAgICAgICAgZmFpbGVkX3Jl
c3VsdHMgPSB7fQogICAgICAgICBmb3IgdGVzdCwgcmVzdWx0IGluIHJlc3VsdF9zdW1tYXJ5LnVu
ZXhwZWN0ZWRfcmVzdWx0cy5pdGVyaXRlbXMoKToKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0g
dGVzdF9leHBlY3RhdGlvbnMuUEFTUyBvcgotICAgICAgICAgICAgICAgIHJlc3VsdCA9PSB0ZXN0
X2V4cGVjdGF0aW9ucy5DUkFTSCBhbmQgbm90IGluY2x1ZGVfY3Jhc2hlcyk6CisgICAgICAgICAg
ICBpZiAocmVzdWx0LnR5cGUgPT0gdGVzdF9leHBlY3RhdGlvbnMuUEFTUyBvcgorICAgICAgICAg
ICAgICAgIHJlc3VsdC50eXBlID09IHRlc3RfZXhwZWN0YXRpb25zLkNSQVNIIGFuZCBub3QgaW5j
bHVkZV9jcmFzaGVzKToKICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgZmFp
bGVkX3Jlc3VsdHNbdGVzdF0gPSByZXN1bHQKKyAgICAgICAgICAgIGZhaWxlZF9yZXN1bHRzW3Rl
c3RdID0gcmVzdWx0LnR5cGUKIAogICAgICAgICByZXR1cm4gZmFpbGVkX3Jlc3VsdHMKIAotICAg
IGRlZiBfdXBsb2FkX2pzb25fZmlsZXMoc2VsZiwgdW5leHBlY3RlZF9yZXN1bHRzLCByZXN1bHRf
c3VtbWFyeSwKKyAgICBkZWYgX2NoYXJfZm9yX3Jlc3VsdChzZWxmLCByZXN1bHQpOgorICAgICAg
ICByZXN1bHQgPSByZXN1bHQubG93ZXIoKQorICAgICAgICBpZiByZXN1bHQgaW4gVGVzdEV4cGVj
dGF0aW9uc0ZpbGUuRVhQRUNUQVRJT05TOgorICAgICAgICAgICAgcmVzdWx0X2VudW1fdmFsdWUg
PSBUZXN0RXhwZWN0YXRpb25zRmlsZS5FWFBFQ1RBVElPTlNbcmVzdWx0XQorICAgICAgICBlbHNl
OgorICAgICAgICAgICAgcmVzdWx0X2VudW1fdmFsdWUgPSBUZXN0RXhwZWN0YXRpb25zRmlsZS5N
T0RJRklFUlNbcmVzdWx0XQorICAgICAgICByZXR1cm4ganNvbl9sYXlvdXRfcmVzdWx0c19nZW5l
cmF0b3IuSlNPTkxheW91dFJlc3VsdHNHZW5lcmF0b3IuRkFJTFVSRV9UT19DSEFSW3Jlc3VsdF9l
bnVtX3ZhbHVlXQorCisgICAgZGVmIF9kdW1wX3N1bW1hcml6ZWRfcmVzdWx0KHNlbGYsIGZpbGVu
YW1lLCByZXN1bHRzKToKKyAgICAgICAgbmV3X3Jlc3VsdHMgPSBjb3B5LmRlZXBjb3B5KHJlc3Vs
dHMpCisKKyAgICAgICAgIyBDb21wYWN0IHRoZSByZXN1bHRzIHNpbmNlIHdlJ2xsIGJlIHVwbG9h
ZGluZyB0aGlzIHRvIHRoZSB0ZXN0LXJlc3VsdHMgc2VydmVyLgorICAgICAgICAjIFRoaXMgc2hy
aW5rcyB0aGUgZmlsZSBzaXplIGJ5IH4yMCUuCisgICAgICAgICMgYWN0dWFsIC0tPiBhCisgICAg
ICAgICMgZXhwZWN0ZWQgLS0+IGUKKyAgICAgICAgIyB0aW1lIC0tPiB0CisgICAgICAgICMgVGhl
IHJlc3VsdHMgYXJlIHNocnVua2VuIGFzIHBlciB0aGUgRkFJTFVSRV9UT19DSEFSIG1hcCwgZS5n
LiwgIlBBU1MgQ1JBU0giIC0tPiAiUEMiCisgICAgICAgIGZvciB0ZXN0IGluIG5ld19yZXN1bHRz
Wyd0ZXN0cyddOgorICAgICAgICAgICAgcmVzdWx0ID0gbmV3X3Jlc3VsdHNbJ3Rlc3RzJ11bdGVz
dF0KKworICAgICAgICAgICAgcmVzdWx0WydhJ10gPSAiIi5qb2luKFtzZWxmLl9jaGFyX2Zvcl9y
ZXN1bHQoYWN0dWFsKSBmb3IgYWN0dWFsIGluIHJlc3VsdFsnYWN0dWFsJ10uc3BsaXQoJyAnKV0p
CisgICAgICAgICAgICBkZWwocmVzdWx0WydhY3R1YWwnXSkKKworICAgICAgICAgICAgcmVzdWx0
WydlJ10gPSAiIi5qb2luKFtzZWxmLl9jaGFyX2Zvcl9yZXN1bHQoZXhwZWN0ZWQpIGZvciBleHBl
Y3RlZCBpbiByZXN1bHRbJ2V4cGVjdGVkJ10uc3BsaXQoJyAnKV0pCisgICAgICAgICAgICBkZWwo
cmVzdWx0WydleHBlY3RlZCddKQorCisgICAgICAgICAgICBpZiAidGltZSIgaW4gcmVzdWx0Ogor
ICAgICAgICAgICAgICAgIHJlc3VsdFsndCddID0gcmVzdWx0Wyd0aW1lJ10KKyAgICAgICAgICAg
ICAgICBkZWwocmVzdWx0Wyd0aW1lJ10pCisKKyAgICAgICAgdW5leHBlY3RlZF9qc29uX3BhdGgg
PSBzZWxmLl9mcy5qb2luKHNlbGYuX29wdGlvbnMucmVzdWx0c19kaXJlY3RvcnksIGZpbGVuYW1l
KQorICAgICAgICB3aXRoIHNlbGYuX2ZzLm9wZW5fdGV4dF9maWxlX2Zvcl93cml0aW5nKHVuZXhw
ZWN0ZWRfanNvbl9wYXRoKSBhcyBmaWxlOgorICAgICAgICAgICAgc2ltcGxlanNvbi5kdW1wKG5l
d19yZXN1bHRzLCBmaWxlLCBzb3J0X2tleXM9VHJ1ZSwgc2VwYXJhdG9ycz0oJywnLCAnOicpKQor
CisgICAgZGVmIF91cGxvYWRfanNvbl9maWxlcyhzZWxmLCB1bmV4cGVjdGVkX3Jlc3VsdHMsIHN1
bW1hcml6ZWRfcmVzdWx0cywgcmVzdWx0X3N1bW1hcnksCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpbmRpdmlkdWFsX3Rlc3RfdGltaW5ncyk6CiAgICAgICAgICIiIldyaXRlcyB0aGUgcmVz
dWx0cyBvZiB0aGUgdGVzdCBydW4gYXMgSlNPTiBmaWxlcyBpbnRvIHRoZSByZXN1bHRzCiAgICAg
ICAgIGRpciBhbmQgdXBsb2FkIHRoZSBmaWxlcyB0byB0aGUgYXBwZW5naW5lIHNlcnZlci4KQEAg
LTgwMywxOSArODUyLDE5IEBAIGNsYXNzIFRlc3RSdW5uZXI6CiAKICAgICAgICAgQXJnczoKICAg
ICAgICAgICB1bmV4cGVjdGVkX3Jlc3VsdHM6IGRpY3Qgb2YgdW5leHBlY3RlZCByZXN1bHRzCisg
ICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzOiBkaWN0IG9mIHJlc3VsdHMKICAgICAgICAgICBy
ZXN1bHRfc3VtbWFyeTogZnVsbCBzdW1tYXJ5IG9iamVjdAogICAgICAgICAgIGluZGl2aWR1YWxf
dGVzdF90aW1pbmdzOiBsaXN0IG9mIHRlc3QgdGltZXMgKHVzZWQgYnkgdGhlIGZsYWtpbmVzcwog
ICAgICAgICAgICAgZGFzaGJvYXJkKS4KICAgICAgICAgIiIiCi0gICAgICAgIHJlc3VsdHNfZGly
ZWN0b3J5ID0gc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeQotICAgICAgICBfbG9nLmRl
YnVnKCJXcml0aW5nIEpTT04gZmlsZXMgaW4gJXMuIiAlIHJlc3VsdHNfZGlyZWN0b3J5KQotICAg
ICAgICB1bmV4cGVjdGVkX2pzb25fcGF0aCA9IHNlbGYuX2ZzLmpvaW4ocmVzdWx0c19kaXJlY3Rv
cnksICJ1bmV4cGVjdGVkX3Jlc3VsdHMuanNvbiIpCi0gICAgICAgIHdpdGggc2VsZi5fZnMub3Bl
bl90ZXh0X2ZpbGVfZm9yX3dyaXRpbmcodW5leHBlY3RlZF9qc29uX3BhdGgpIGFzIGZpbGU6Ci0g
ICAgICAgICAgICBzaW1wbGVqc29uLmR1bXAodW5leHBlY3RlZF9yZXN1bHRzLCBmaWxlLCBzb3J0
X2tleXM9VHJ1ZSwgaW5kZW50PTIpCisgICAgICAgIF9sb2cuZGVidWcoIldyaXRpbmcgSlNPTiBm
aWxlcyBpbiAlcy4iICUgc2VsZi5fb3B0aW9ucy5yZXN1bHRzX2RpcmVjdG9yeSkKKworICAgICAg
ICBzZWxmLl9kdW1wX3N1bW1hcml6ZWRfcmVzdWx0KCJ1bmV4cGVjdGVkX3Jlc3VsdHMuanNvbiIs
IHVuZXhwZWN0ZWRfcmVzdWx0cykKKyAgICAgICAgc2VsZi5fZHVtcF9zdW1tYXJpemVkX3Jlc3Vs
dCgiZnVsbF9yZXN1bHRzLmpzb24iLCBzdW1tYXJpemVkX3Jlc3VsdHMpCiAKICAgICAgICAgIyBX
cml0ZSBhIGpzb24gZmlsZSBvZiB0aGUgdGVzdF9leHBlY3RhdGlvbnMudHh0IGZpbGUgZm9yIHRo
ZSBsYXlvdXQKICAgICAgICAgIyB0ZXN0cyBkYXNoYm9hcmQuCi0gICAgICAgIGV4cGVjdGF0aW9u
c19wYXRoID0gc2VsZi5fZnMuam9pbihyZXN1bHRzX2RpcmVjdG9yeSwgImV4cGVjdGF0aW9ucy5q
c29uIikKKyAgICAgICAgZXhwZWN0YXRpb25zX3BhdGggPSBzZWxmLl9mcy5qb2luKHNlbGYuX29w
dGlvbnMucmVzdWx0c19kaXJlY3RvcnksICJleHBlY3RhdGlvbnMuanNvbiIpCiAgICAgICAgIGV4
cGVjdGF0aW9uc19qc29uID0gXAogICAgICAgICAgICAgc2VsZi5fZXhwZWN0YXRpb25zLmdldF9l
eHBlY3RhdGlvbnNfanNvbl9mb3JfYWxsX3BsYXRmb3JtcygpCiAgICAgICAgIHNlbGYuX2ZzLndy
aXRlX3RleHRfZmlsZShleHBlY3RhdGlvbnNfcGF0aCwKQEAgLTgzMiw3ICs4ODEsNyBAQCBjbGFz
cyBUZXN0UnVubmVyOgogCiAgICAgICAgIF9sb2cuZGVidWcoIkZpbmlzaGVkIHdyaXRpbmcgSlNP
TiBmaWxlcy4iKQogCi0gICAgICAgIGpzb25fZmlsZXMgPSBbImV4cGVjdGF0aW9ucy5qc29uIiwg
ImluY3JlbWVudGFsX3Jlc3VsdHMuanNvbiJdCisgICAgICAgIGpzb25fZmlsZXMgPSBbImV4cGVj
dGF0aW9ucy5qc29uIiwgImluY3JlbWVudGFsX3Jlc3VsdHMuanNvbiIsICJmdWxsX3Jlc3VsdHMu
anNvbiJdCiAKICAgICAgICAgZ2VuZXJhdG9yLnVwbG9hZF9qc29uX2ZpbGVzKGpzb25fZmlsZXMp
CiAK
</data>
<flag name="review"
          id="75656"
          type_id="1"
          status="+"
          setter="tony"
    />
          </attachment>
      

    </bug>

</bugzilla>