<?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>61877</bug_id>
          
          <creation_ts>2011-06-01 12:19:56 -0700</creation_ts>
          <short_desc>TestFailures page doesn&apos;t show testers that use new-run-webkit-tests</short_desc>
          <delta_ts>2011-07-06 15:49:19 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://build.webkit.org/TestFailures/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>ToolsHitList</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Roben (:aroben)">aroben</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>ojan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>413565</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-01 12:19:56 -0700</bug_when>
    <thetext>The TestFailures page doesn&apos;t show information about testers that use new-run-webkit-tests. It should!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>413567</commentid>
    <comment_count>1</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-06-01 12:20:51 -0700</bug_when>
    <thetext>The most immediate issue is that new-run-webkit-tests bots don&apos;t seem to upload results to build.webkit.org/results. But the TestFailures code also doesn&apos;t know anything about NRWT&apos;s output format. We&apos;ll probably need to teach it to deal with NRWT&apos;s JSON files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432940</commentid>
    <comment_count>2</comment_count>
      <attachid>99861</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-06 12:52:49 -0700</bug_when>
    <thetext>Created attachment 99861
Extract code to parse ORWT&apos;s results.html file into its own class</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432948</commentid>
    <comment_count>3</comment_count>
      <attachid>99865</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-06 12:58:53 -0700</bug_when>
    <thetext>Created attachment 99865
Teach TestFailures how to load, parse, and interpret NRWT test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432957</commentid>
    <comment_count>4</comment_count>
      <attachid>99865</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-06 13:04:17 -0700</bug_when>
    <thetext>Comment on attachment 99865
Teach TestFailures how to load, parse, and interpret NRWT test results

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js:74
&gt; +            result.tests[test.name] = { failureType: convertNRWTResultString(test.actual) };

A couple things:

1) You&apos;ll need to split test.actual on &quot; &quot; because there can be multiple actual results for a given test in a given run.
2) You&apos;ll need to compare against test.expected otherwise you&apos;ll get a bunch of bogus failure reports about tests that we expect to fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432961</commentid>
    <comment_count>5</comment_count>
      <attachid>99865</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-06 13:05:28 -0700</bug_when>
    <thetext>Comment on attachment 99865
Teach TestFailures how to load, parse, and interpret NRWT test results

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js:74
&gt;&gt; +            result.tests[test.name] = { failureType: convertNRWTResultString(test.actual) };
&gt; 
&gt; A couple things:
&gt; 
&gt; 1) You&apos;ll need to split test.actual on &quot; &quot; because there can be multiple actual results for a given test in a given run.
&gt; 2) You&apos;ll need to compare against test.expected otherwise you&apos;ll get a bunch of bogus failure reports about tests that we expect to fail.

1) You can see in convertNRWTResultString that I explicitly handle the &quot; &quot; case and just call the test &quot;flaky&quot;.
2) We&apos;re loading unexpected_results.json, so I don&apos;t think we&apos;ll see any tests where we expect failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432975</commentid>
    <comment_count>6</comment_count>
      <attachid>99869</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-06 13:26:30 -0700</bug_when>
    <thetext>Created attachment 99869
Teach TestFailures how to load, parse, and interpret NRWT test results</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432984</commentid>
    <comment_count>7</comment_count>
      <attachid>99869</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-06 13:31:23 -0700</bug_when>
    <thetext>Comment on attachment 99869
Teach TestFailures how to load, parse, and interpret NRWT test results

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

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js:65
&gt; +                if (expectedArray.contains(&apos;FAIL&apos;) &amp;&amp; [&apos;IMAGE&apos;, &apos;TEXT&apos;, &apos;IMAGE+TEXT&apos;].contains(actualValue))

FAIL includes all of these:
http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js#L17

&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js:88
&gt; +            return &apos;unknown failure type &apos; + nrwtResult;

AUDIO will fall into this category, for example.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432991</commentid>
    <comment_count>8</comment_count>
      <attachid>99869</attachid>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-06 13:38:53 -0700</bug_when>
    <thetext>Comment on attachment 99869
Teach TestFailures how to load, parse, and interpret NRWT test results

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

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js:65
&gt;&gt; +                if (expectedArray.contains(&apos;FAIL&apos;) &amp;&amp; [&apos;IMAGE&apos;, &apos;TEXT&apos;, &apos;IMAGE+TEXT&apos;].contains(actualValue))
&gt; 
&gt; FAIL includes all of these:
&gt; http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/tool/servers/data/gardeningserver/results.js#L17

http://trac.webkit.org/browser/trunk/Tools/Scripts/webkitpy/layout_tests/layout_package/test_expectations.py#L53 and http://trac.webkit.org/browser/trunk/LayoutTests/fast/harness/results.html#L396 seem to disagree with you.

&gt;&gt; Tools/BuildSlaveSupport/build.webkit.org-config/public_html/TestFailures/NRWTResultsParser.js:88
&gt;&gt; +            return &apos;unknown failure type &apos; + nrwtResult;
&gt; 
&gt; AUDIO will fall into this category, for example.

Right. This is just a first pass, trying to get NRWT basically to the level of ORWT in TestFailures.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>432996</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-06 13:42:39 -0700</bug_when>
    <thetext>Committed r90489: &lt;http://trac.webkit.org/changeset/90489&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433067</commentid>
    <comment_count>10</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-06 15:23:26 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; 2) We&apos;re loading unexpected_results.json, so I don&apos;t think we&apos;ll see any tests where we expect failure.

This is fine. I&apos;ve been trying to get everyone to use full_results.json instead. That way we could kill unexpected_results.json and have one fewer json file to maintain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433068</commentid>
    <comment_count>11</comment_count>
    <who name="Adam Roben (:aroben)">aroben</who>
    <bug_when>2011-07-06 15:24:08 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #5)
&gt; &gt; 2) We&apos;re loading unexpected_results.json, so I don&apos;t think we&apos;ll see any tests where we expect failure.
&gt; 
&gt; This is fine. I&apos;ve been trying to get everyone to use full_results.json instead. That way we could kill unexpected_results.json and have one fewer json file to maintain.

The version of this patch that landed uses full_results.json, not unexpected_results.json.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433070</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-06 15:30:05 -0700</bug_when>
    <thetext>&gt; This is fine. I&apos;ve been trying to get everyone to use full_results.json instead. That way we could kill unexpected_results.json and have one fewer json file to maintain.

IMHO, we should just remove unexpected_results.json now before the situation gets worse.  If folks are using it, this will encourage them to stop.  :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433087</commentid>
    <comment_count>13</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2011-07-06 15:47:09 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; The version of this patch that landed uses full_results.json, not unexpected_results.json.

Whoops. Sorry. Should have ready more closely.

(In reply to comment #12)
&gt; &gt; This is fine. I&apos;ve been trying to get everyone to use full_results.json instead. That way we could kill unexpected_results.json and have one fewer json file to maintain.
&gt; 
&gt; IMHO, we should just remove unexpected_results.json now before the situation gets worse.  If folks are using it, this will encourage them to stop.  :)

I agree. I&apos;ve been slowly doing that over time, but haven&apos;t gotten rid of the last few usages of it and I don&apos;t want to break existing tooling:
http://codesearch.google.com/codesearch#search/&amp;exact_package=chromium&amp;q=unexpected_results.json(%5C%22%7C%5C&apos;)&amp;type=cs

They&apos;re all very easy to do, it just takes adding some extra code to filter out the expected results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>433090</commentid>
    <comment_count>14</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-07-06 15:49:19 -0700</bug_when>
    <thetext>I think the only real one of those is the rebaseline server, which is going to be scrapped for parts in relatively short order.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99861</attachid>
            <date>2011-07-06 12:52:49 -0700</date>
            <delta_ts>2011-07-06 13:00:21 -0700</delta_ts>
            <desc>Extract code to parse ORWT&apos;s results.html file into its own class</desc>
            <filename>bug-61877-20110706155247.patch</filename>
            <type>text/plain</type>
            <size>10503</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA0NjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9M
YXlvdXRUZXN0UmVzdWx0c0xvYWRlci5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxk
LndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9MYXlvdXRUZXN0UmVz
dWx0c0xvYWRlci5qcwppbmRleCBmMDZkZGI3NzAyNDEyOTc1YTI3Mjk2OGY5NWMzYmFjODNjMGM1
ZDNiLi5iNzk4MmUzOTdhNWNkNTRiYWQwZTRlMWQ3YjI1YWMzZjRiNTJkYWJlIDEwMDY0NAotLS0g
YS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMKKysrIGIvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL0xheW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzCkBAIC01MCw1NCArNTAsMTAgQEAg
TGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIucHJvdG90eXBlID0gewogCiAgICAgICAgIGZ1bmN0aW9u
IGZldGNoQW5kUGFyc2VSZXN1bHRzSFRNTEFuZENhbGxDYWxsYmFjayhjYWxsYmFjaykgewogICAg
ICAgICAgICAgZ2V0UmVzb3VyY2Uoc2VsZi5fYnVpbGRlci5yZXN1bHRzUGFnZVVSTChidWlsZE5h
bWUpLCBmdW5jdGlvbih4aHIpIHsKLSAgICAgICAgICAgICAgICB2YXIgcm9vdCA9IGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKLSAgICAgICAgICAgICAgICByb290LmlubmVySFRNTCA9
IHhoci5yZXNwb25zZVRleHQ7Ci0KKyAgICAgICAgICAgICAgICB2YXIgcGFyc2VSZXN1bHQgPSAo
bmV3IE9SV1RSZXN1bHRzUGFyc2VyKCkpLnBhcnNlKHhoci5yZXNwb25zZVRleHQpOworICAgICAg
ICAgICAgICAgIHJlc3VsdC50ZXN0cyA9IHBhcnNlUmVzdWx0LnRlc3RzOwogICAgICAgICAgICAg
ICAgIGlmIChyZXN1bHRzSFRNTFN1cHBvcnRzVG9vTWFueUZhaWx1cmVzSW5mbykKLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHJvb3QuZ2V0RWxlbWVudHNCeUNs
YXNzTmFtZSgnc3RvcHBlZC1ydW5uaW5nLWVhcmx5LW1lc3NhZ2UnKS5sZW5ndGggPiAwOwotCi0g
ICAgICAgICAgICAgICAgZnVuY3Rpb24gcGFyc2VSZXN1bHRUYWJsZShyZWdleCkgewotICAgICAg
ICAgICAgICAgICAgICB2YXIgcGFyYWdyYXBoID0gQXJyYXkucHJvdG90eXBlLmZpbmRGaXJzdC5j
YWxsKHJvb3QucXVlcnlTZWxlY3RvckFsbCgncCcpLCBmdW5jdGlvbihwYXJhZ3JhcGgpIHsKLSAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByZWdleC50ZXN0KHBhcmFncmFwaC5pbm5lclRl
eHQpOwotICAgICAgICAgICAgICAgICAgICB9KTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFw
YXJhZ3JhcGgpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW107Ci0gICAgICAgICAg
ICAgICAgICAgIHZhciB0YWJsZSA9IHBhcmFncmFwaC5uZXh0RWxlbWVudFNpYmxpbmc7Ci0gICAg
ICAgICAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRhYmxlLm5vZGVOYW1lID09PSAnVEFCTEUn
KTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFycmF5LnByb3RvdHlwZS5tYXAuY2FsbCh0
YWJsZS5yb3dzLCBmdW5jdGlvbihyb3cpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhciBs
aW5rcyA9IHJvdy5nZXRFbGVtZW50c0J5VGFnTmFtZSgnYScpOwotICAgICAgICAgICAgICAgICAg
ICAgICAgdmFyIHJlc3VsdCA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lOiBs
aW5rc1swXS5pbm5lclRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAg
ICAgICAgICAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBsaW5rcy5sZW5ndGg7ICsraSkgewot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eY3Jhc2ggbG9nIFwoKC4q
KVwpJC8uZXhlYyhsaW5rc1tpXS5pbm5lclRleHQpOwotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGlmICghbWF0Y2gpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdC5jcmFzaGluZ1N5bWJvbCA9IG1h
dGNoWzFdOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAg
ICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdDsKLSAg
ICAgICAgICAgICAgICAgICAgfSk7Ci0gICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAg
ICAgcGFyc2VSZXN1bHRUYWJsZSgvZGlkIG5vdCBtYXRjaCBleHBlY3RlZCByZXN1bHRzLykuZm9y
RWFjaChmdW5jdGlvbih0ZXN0RGF0YSkgewotICAgICAgICAgICAgICAgICAgICByZXN1bHQudGVz
dHNbdGVzdERhdGEubmFtZV0gPSB7IGZhaWx1cmVUeXBlOiAnZmFpbCcgfTsKLSAgICAgICAgICAg
ICAgICB9KTsKLSAgICAgICAgICAgICAgICBwYXJzZVJlc3VsdFRhYmxlKC90aW1lZCBvdXQvKS5m
b3JFYWNoKGZ1bmN0aW9uKHRlc3REYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAgIHJlc3VsdC50
ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsgZmFpbHVyZVR5cGU6ICd0aW1lb3V0JyB9OwotICAgICAg
ICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHBhcnNlUmVzdWx0VGFibGUoL3Rvb2wgdG8g
Y3Jhc2gvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3REYXRhKSB7Ci0gICAgICAgICAgICAgICAgICAg
IHJlc3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsKLSAgICAgICAgICAgICAgICAgICAgICAg
IGZhaWx1cmVUeXBlOiAnY3Jhc2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgY3Jhc2hpbmdT
eW1ib2w6IHRlc3REYXRhLmNyYXNoaW5nU3ltYm9sLAotICAgICAgICAgICAgICAgICAgICB9Owot
ICAgICAgICAgICAgICAgIH0pOwotICAgICAgICAgICAgICAgIHBhcnNlUmVzdWx0VGFibGUoL1dl
YiBwcm9jZXNzIHRvIGNyYXNoLykuZm9yRWFjaChmdW5jdGlvbih0ZXN0RGF0YSkgewotICAgICAg
ICAgICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7Ci0gICAgICAgICAg
ICAgICAgICAgICAgICBmYWlsdXJlVHlwZTogJ3dlYnByb2Nlc3MgY3Jhc2gnLAotICAgICAgICAg
ICAgICAgICAgICAgICAgY3Jhc2hpbmdTeW1ib2w6IHRlc3REYXRhLmNyYXNoaW5nU3ltYm9sLAot
ICAgICAgICAgICAgICAgICAgICB9OwotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAg
ICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1cmVzID0gcGFyc2VSZXN1bHQudG9vTWFueUZhaWx1
cmVzOwogCiAgICAgICAgICAgICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVz
dWx0KTsKICAgICAgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29N
YW55RmFpbHVyZXMpOwpAQCAtMTEwLDcgKzY2LDcgQEAgTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIu
cHJvdG90eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlc3VsdHNIVE1MU3VwcG9y
dHNUb29NYW55RmFpbHVyZXNJbmZvKSB7Ci0gICAgICAgICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0
c0hUTUxBbmRDYWxsQ2FsbGJhY2soY2FsbGJhY2ssIGZhbHNlKTsKKyAgICAgICAgICAgIGZldGNo
QW5kUGFyc2VSZXN1bHRzSFRNTEFuZENhbGxDYWxsYmFjayhjYWxsYmFjayk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtMTMyLDcgKzg4LDcgQEAgTGF5b3V0VGVzdFJlc3Vs
dHNMb2FkZXIucHJvdG90eXBlID0gewogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBG
aW5kIG91dCB3aGljaCB0ZXN0cyBmYWlsZWQuCi0gICAgICAgICAgICBmZXRjaEFuZFBhcnNlUmVz
dWx0c0hUTUxBbmRDYWxsQ2FsbGJhY2soY2FsbGJhY2ssIHRvb01hbnlGYWlsdXJlcyk7CisgICAg
ICAgICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUxBbmRDYWxsQ2FsbGJhY2soY2FsbGJhY2sp
OwogICAgICAgICB9KTsKICAgICB9LAogfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9P
UldUUmVzdWx0c1BhcnNlci5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtp
dC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9PUldUUmVzdWx0c1BhcnNlci5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42ODE3MGE4NTA0NmIxMGQzNGFkN2RkYTAzZTljZWZkY2ViMGY1MmZkCi0t
LSAvZGV2L251bGwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL09SV1RSZXN1bHRzUGFyc2VyLmpzCkBA
IC0wLDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitmdW5jdGlvbiBPUldUUmVzdWx0c1BhcnNlcigp
IHsKK30KKworT1JXVFJlc3VsdHNQYXJzZXIucHJvdG90eXBlID0geworICAgIHBhcnNlOiBmdW5j
dGlvbihyZXN1bHRzSFRNTFN0cmluZykgeworICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czog
e30sIHRvb01hbnlGYWlsdXJlczogZmFsc2UgfTsKKworICAgICAgICB2YXIgcm9vdCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2h0bWwnKTsKKyAgICAgICAgcm9vdC5pbm5lckhUTUwgPSByZXN1
bHRzSFRNTFN0cmluZzsKKworICAgICAgICAvLyBOb3RlIHRoYXQgc29tZSBvbGQgcmVzdWx0cy5o
dG1sIGZpbGVzIHdvbid0IGNvbnRhaW4gdGhpcyBlbGVtZW50IGV2ZW4gaWYgd2UgaGFkIHRvIHN0
b3AKKyAgICAgICAgLy8gcnVubmluZyBlYXJseSBkdWUgdG8gdG9vIG1hbnkgZmFpbHVyZXMuIE91
ciBjYWxsZXIgd2lsbCBoYXZlIHRvIGZpZ3VyZSB0aGF0IG91dAorICAgICAgICAvLyB0aGVtc2Vs
dmVzLgorICAgICAgICByZXN1bHQudG9vTWFueUZhaWx1cmVzID0gcm9vdC5nZXRFbGVtZW50c0J5
Q2xhc3NOYW1lKCdzdG9wcGVkLXJ1bm5pbmctZWFybHktbWVzc2FnZScpLmxlbmd0aCA+IDA7CisK
KyAgICAgICAgZnVuY3Rpb24gcGFyc2VSZXN1bHRUYWJsZShyZWdleCkgeworICAgICAgICAgICAg
dmFyIHBhcmFncmFwaCA9IEFycmF5LnByb3RvdHlwZS5maW5kRmlyc3QuY2FsbChyb290LnF1ZXJ5
U2VsZWN0b3JBbGwoJ3AnKSwgZnVuY3Rpb24ocGFyYWdyYXBoKSB7CisgICAgICAgICAgICAgICAg
cmV0dXJuIHJlZ2V4LnRlc3QocGFyYWdyYXBoLmlubmVyVGV4dCk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgICAgIGlmICghcGFyYWdyYXBoKQorICAgICAgICAgICAgICAgIHJldHVybiBbXTsK
KyAgICAgICAgICAgIHZhciB0YWJsZSA9IHBhcmFncmFwaC5uZXh0RWxlbWVudFNpYmxpbmc7Cisg
ICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0YWJsZS5ub2RlTmFtZSA9PT0gJ1RBQkxFJyk7Cisg
ICAgICAgICAgICByZXR1cm4gQXJyYXkucHJvdG90eXBlLm1hcC5jYWxsKHRhYmxlLnJvd3MsIGZ1
bmN0aW9uKHJvdykgeworICAgICAgICAgICAgICAgIHZhciBsaW5rcyA9IHJvdy5nZXRFbGVtZW50
c0J5VGFnTmFtZSgnYScpOworICAgICAgICAgICAgICAgIHZhciByZXN1bHQgPSB7CisgICAgICAg
ICAgICAgICAgICAgIG5hbWU6IGxpbmtzWzBdLmlubmVyVGV4dCwKKyAgICAgICAgICAgICAgICB9
OworICAgICAgICAgICAgICAgIGZvciAodmFyIGkgPSAxOyBpIDwgbGlua3MubGVuZ3RoOyArK2kp
IHsKKyAgICAgICAgICAgICAgICAgICAgdmFyIG1hdGNoID0gL15jcmFzaCBsb2cgXCgoLiopXCkk
Ly5leGVjKGxpbmtzW2ldLmlubmVyVGV4dCk7CisgICAgICAgICAgICAgICAgICAgIGlmICghbWF0
Y2gpCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAg
ICAgcmVzdWx0LmNyYXNoaW5nU3ltYm9sID0gbWF0Y2hbMV07CisgICAgICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBwYXJzZVJlc3VsdFRhYmxl
KC9kaWQgbm90IG1hdGNoIGV4cGVjdGVkIHJlc3VsdHMvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3RE
YXRhKSB7CisgICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7IGZhaWx1
cmVUeXBlOiAnZmFpbCcgfTsKKyAgICAgICAgfSk7CisgICAgICAgIHBhcnNlUmVzdWx0VGFibGUo
L3RpbWVkIG91dC8pLmZvckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsKKyAgICAgICAgICAgIHJl
c3VsdC50ZXN0c1t0ZXN0RGF0YS5uYW1lXSA9IHsgZmFpbHVyZVR5cGU6ICd0aW1lb3V0JyB9Owor
ICAgICAgICB9KTsKKyAgICAgICAgcGFyc2VSZXN1bHRUYWJsZSgvdG9vbCB0byBjcmFzaC8pLmZv
ckVhY2goZnVuY3Rpb24odGVzdERhdGEpIHsKKyAgICAgICAgICAgIHJlc3VsdC50ZXN0c1t0ZXN0
RGF0YS5uYW1lXSA9IHsKKyAgICAgICAgICAgICAgICBmYWlsdXJlVHlwZTogJ2NyYXNoJywKKyAg
ICAgICAgICAgICAgICBjcmFzaGluZ1N5bWJvbDogdGVzdERhdGEuY3Jhc2hpbmdTeW1ib2wsCisg
ICAgICAgICAgICB9OworICAgICAgICB9KTsKKyAgICAgICAgcGFyc2VSZXN1bHRUYWJsZSgvV2Vi
IHByb2Nlc3MgdG8gY3Jhc2gvKS5mb3JFYWNoKGZ1bmN0aW9uKHRlc3REYXRhKSB7CisgICAgICAg
ICAgICByZXN1bHQudGVzdHNbdGVzdERhdGEubmFtZV0gPSB7CisgICAgICAgICAgICAgICAgZmFp
bHVyZVR5cGU6ICd3ZWJwcm9jZXNzIGNyYXNoJywKKyAgICAgICAgICAgICAgICBjcmFzaGluZ1N5
bWJvbDogdGVzdERhdGEuY3Jhc2hpbmdTeW1ib2wsCisgICAgICAgICAgICB9OworICAgICAgICB9
KTsKKworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCit9OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW5kZXguaHRtbAppbmRl
eCAxY2I1OWFiNzQ1MWM3Njk0OTQ3YjA2Mjk3YmNmZjYwZjE0YzI3ZTZiLi4wNzAzMDlkM2EwZTIy
YzBlYTg1YmM1ZGI5YjFkYjE1NmNjMTNlOWZjIDEwMDY0NAotLS0gYS9Ub29scy9CdWlsZFNsYXZl
U3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMv
aW5kZXguaHRtbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3Jn
LWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW5kZXguaHRtbApAQCAtMzMsNiArMzMs
NyBAQCBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCBzcmM9IkZs
YWt5TGF5b3V0VGVzdERldGVjdG9yLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iTGF5
b3V0VGVzdEhpc3RvcnlBbmFseXplci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9Ikxh
eW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzIj48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iT1JX
VFJlc3VsdHNQYXJzZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJQZXJzaXN0ZW50
Q2FjaGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUcmFjLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVXRpbGl0aWVzLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rv
b2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCA2YjRkNzE3NjNiZjgyNjA1YTMz
YjZkYmJiOGU2YzZjNjIyNDI2Nzc4Li4xNTkzODI4ODAzZGRlZjk1OTcyMWIxNzM2OGFhZjRlZGU1
NzVhZDM3IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMjUgQEAKIDIwMTEtMDctMDYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUu
Y29tPgogCisgICAgICAgIEV4dHJhY3QgY29kZSB0byBwYXJzZSBPUldUJ3MgcmVzdWx0cy5odG1s
IGZpbGUgaW50byBpdHMgb3duIGNsYXNzCisKKyAgICAgICAgUHJlcCB3b3JrIGZvciBmaXhpbmcg
PGh0dHA6Ly93ZWJraXQub3JnL2IvNjE4Nzc+IFRlc3RGYWlsdXJlcyBwYWdlIGRvZXNuJ3Qgc2hv
dyB0ZXN0ZXJzIHRoYXQKKyAgICAgICAgdXNlIG5ldy1ydW4td2Via2l0LXRlc3RzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTGF5
b3V0VGVzdFJlc3VsdHNMb2FkZXIuanM6CisgICAgICAgIChMYXlvdXRUZXN0UmVzdWx0c0xvYWRl
ci5wcm90b3R5cGUuc3RhcnQpOiBNb3ZlZCBhIGJ1bmNoIG9mIGNvZGUgZnJvbSBoZXJlLi4uCisK
KyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJs
aWNfaHRtbC9UZXN0RmFpbHVyZXMvT1JXVFJlc3VsdHNQYXJzZXIuanM6IEFkZGVkLgorICAgICAg
ICAoT1JXVFJlc3VsdHNQYXJzZXIpOgorICAgICAgICAoT1JXVFJlc3VsdHNQYXJzZXIucHJvdG90
eXBlLnBhcnNlKToKKyAgICAgICAgLi4udG8gaGVyZS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9p
bmRleC5odG1sOiBQdWxsIGluCisgICAgICAgIE9SV1RSZXN1bHRzUGFyc2VyLmpzLgorCisyMDEx
LTA3LTA2ICBBZGFtIFJvYmVuICA8YXJvYmVuQGFwcGxlLmNvbT4KKwogICAgICAgICBNYWtlIHJ1
bi1hcGktdGVzdHMgb3V0cHV0IGludGVsbGlnaWJsZSBvbiB0aGUgYm90cwogCiAgICAgICAgIHJ1
bi1hcGktdGVzdHMncyBvdXRwdXQgb24gdGhlIGJvdHMgd2FzIHZlcnkgaGFyZCB0byByZWFkIGZv
ciB0d28gcmVhc29uczoK
</data>
<flag name="review"
          id="94439"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99865</attachid>
            <date>2011-07-06 12:58:53 -0700</date>
            <delta_ts>2011-07-06 13:26:40 -0700</delta_ts>
            <desc>Teach TestFailures how to load, parse, and interpret NRWT test results</desc>
            <filename>bug-61877-20110706155851.patch</filename>
            <type>text/plain</type>
            <size>13601</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA0NjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9C
dWlsZGVyLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanMKaW5kZXggYWJhYzFiNjdmMzdl
NTlkN2E2NjA4MDliNmE1N2Y4MmI5YmMwZDQzZC4uYjM1NDgwZTE2OTRiZjM5ZDY2NTNjYjA1M2Nl
MjAzZDc1Nzg0MWM3MCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanMKKysr
IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanMKQEAgLTQxLDYgKzQxLDEwIEBAIEJ1aWxkZXIu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRleHQ6ICdwcmV0dHkgZGlmZicsCiAgICAg
ICAgICAgICAgICAgdXJsOiB1cmxTdGVtICsgJy1wcmV0dHktZGlmZi5odG1sJywKICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBmbGFreTogeworICAgICAgICAgICAgICAgIHRleHQ6ICdwcmV0
dHkgZGlmZiAoZmxha3kpJywKKyAgICAgICAgICAgICAgICB1cmw6IHVybFN0ZW0gKyAnLXByZXR0
eS1kaWZmLmh0bWwnLAorICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHRpbWVvdXQ6IHsKICAg
ICAgICAgICAgICAgICB0ZXh0OiAndGltZWQgb3V0JywKICAgICAgICAgICAgIH0sCkBAIC0xMzYs
MTEgKzE0MCwxMSBAQCBCdWlsZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXN1
bHQudG9vTWFueUZhaWx1cmVzID0gdHJ1ZTsKIAogICAgICAgICAgICAgcmVzdWx0LmZhaWx1cmVD
b3VudCA9IGxheW91dFRlc3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKGZ1bmN0aW9uKHN1bSwgb3V0
cHV0TGluZSkgewotICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFxkKykgdGVzdCBjYXNl
Ly5leGVjKG91dHB1dExpbmUpOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFxkKykv
LmV4ZWMob3V0cHV0TGluZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBjb3VudCBu
ZXcgdGVzdHMgYXMgZmFpbHVyZXMuCi0gICAgICAgICAgICAgICAgaWYgKG91dHB1dExpbmUuaW5k
ZXhPZignd2VyZSBuZXcnKSA+PSAwKQorICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IG5l
dyB0ZXN0cyBvciBwYXNzZXMgYXMgZmFpbHVyZXMuCisgICAgICAgICAgICAgICAgaWYgKG91dHB1
dExpbmUuY29udGFpbnMoJ3dlcmUgbmV3JykgfHwgb3V0cHV0TGluZS5jb250YWlucygnbmV3IHBh
c3NlcycpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtOwogICAgICAgICAgICAgICAg
IHJldHVybiBzdW0gKyBwYXJzZUludChtYXRjaFsxXSwgMTApOwogICAgICAgICAgICAgfSwgMCk7
CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMKaW5kZXggYjc5ODJl
Mzk3YTVjZDU0YmFkMGU0ZTFkN2IyNWFjM2Y0YjUyZGFiZS4uY2Q5ODZhNmVjZTMzMDBjNGE1MWVk
YjYxYzk2NDMwMGQzY2FjNWNhYiAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRl
c3RSZXN1bHRzTG9hZGVyLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9MYXlvdXRUZXN0UmVzdWx0
c0xvYWRlci5qcwpAQCAtNDEsMzIgKzQxLDYwIEBAIExheW91dFRlc3RSZXN1bHRzTG9hZGVyLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czoge30sIHRvb01hbnlG
YWlsdXJlczogZmFsc2UsIHZlcnNpb246IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiB9OwogCisg
ICAgICAgIGZ1bmN0aW9uIGNhY2hlUGFyc2VSZXN1bHRzQW5kQ2FsbENhbGxiYWNrKHBhcnNlUmVz
dWx0KSB7CisgICAgICAgICAgICByZXN1bHQudGVzdHMgPSBwYXJzZVJlc3VsdC50ZXN0czsKKyAg
ICAgICAgICAgIHJlc3VsdC50b29NYW55RmFpbHVyZXMgPSBwYXJzZVJlc3VsdC50b29NYW55RmFp
bHVyZXM7CisKKyAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3Vs
dCk7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFp
bHVyZXMpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBz
ZWxmLl9mZXRjaEFuZFBhcnNlTlJXVFJlc3VsdHMoYnVpbGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0
c0FuZENhbGxDYWxsYmFjaywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZWxmLl9mZXRjaEFu
ZFBhcnNlT1JXVFJlc3VsdHMoYnVpbGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0c0FuZENhbGxDYWxs
YmFjaywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmV0Y2gg
cmVzdWx0cyBmb3IgdGhpcyBidWlsZC4KKyAgICAgICAgICAgICAgICBQZXJzaXN0ZW50Q2FjaGUu
c2V0KGNhY2hlS2V5LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2socmVz
dWx0LnRlc3RzLCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9LAorCisgICAgX2ZldGNoQW5kUGFyc2VOUldUUmVzdWx0czogZnVuY3Rp
b24oYnVpbGROYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAg
Z2V0UmVzb3VyY2UodGhpcy5fYnVpbGRlci5yZXN1bHRzRGlyZWN0b3J5VVJMKGJ1aWxkTmFtZSkg
KyAndW5leHBlY3RlZF9yZXN1bHRzLmpzb24nLCBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAg
IHN1Y2Nlc3NDYWxsYmFjaygobmV3IE5SV1RSZXN1bHRzUGFyc2VyKCkpLnBhcnNlKHhoci5yZXNw
b25zZVRleHQpKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24oeGhyKSB7CisgICAgICAg
ICAgICBlcnJvckNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0sCisKKyAgICBfZmV0Y2hB
bmRQYXJzZU9SV1RSZXN1bHRzOiBmdW5jdGlvbihidWlsZE5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywg
ZXJyb3JDYWxsYmFjaykgewogICAgICAgICB2YXIgcGFyc2VkQnVpbGROYW1lID0gdGhpcy5fYnVp
bGRlci5idWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShidWlsZE5hbWUpOwogCiAgICAgICAgIC8vIGh0
dHA6Ly93ZWJraXQub3JnL2IvNjIzODAgd2FzIGZpeGVkIGluIHI4OTYxMC4KICAgICAgICAgdmFy
IHJlc3VsdHNIVE1MU3VwcG9ydHNUb29NYW55RmFpbHVyZXNJbmZvID0gcGFyc2VkQnVpbGROYW1l
LnJldmlzaW9uID49IDg5NjEwOwogCisgICAgICAgIHZhciByZXN1bHQgPSB7IHRlc3RzOiB7fSwg
dG9vTWFueUZhaWx1cmVzOiBmYWxzZSB9OworCiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKIAot
ICAgICAgICBmdW5jdGlvbiBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUxBbmRDYWxsQ2FsbGJhY2so
Y2FsbGJhY2spIHsKKyAgICAgICAgZnVuY3Rpb24gZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MQW5k
Q2FsbENhbGxiYWNrKCkgewogICAgICAgICAgICAgZ2V0UmVzb3VyY2Uoc2VsZi5fYnVpbGRlci5y
ZXN1bHRzUGFnZVVSTChidWlsZE5hbWUpLCBmdW5jdGlvbih4aHIpIHsKICAgICAgICAgICAgICAg
ICB2YXIgcGFyc2VSZXN1bHQgPSAobmV3IE9SV1RSZXN1bHRzUGFyc2VyKCkpLnBhcnNlKHhoci5y
ZXNwb25zZVRleHQpOwogICAgICAgICAgICAgICAgIHJlc3VsdC50ZXN0cyA9IHBhcnNlUmVzdWx0
LnRlc3RzOwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzSFRNTFN1cHBvcnRzVG9vTWFueUZh
aWx1cmVzSW5mbykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9
IHBhcnNlUmVzdWx0LnRvb01hbnlGYWlsdXJlczsKIAotICAgICAgICAgICAgICAgIFBlcnNpc3Rl
bnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2so
cmVzdWx0LnRlc3RzLCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgICAgICBz
dWNjZXNzQ2FsbGJhY2socmVzdWx0KTsKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5j
dGlvbih4aHIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBmYWlsZWQgdG8gZmV0Y2ggcmVzdWx0
cy5odG1sLiBydW4td2Via2l0LXRlc3RzIG11c3QgaGF2ZSBhYm9ydGVkIGVhcmx5LgotICAgICAg
ICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAg
ICAgICAgICAgZXJyb3JDYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFpbHVy
ZXMpOworICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKICAgICAgICAgICAgIH0pOwog
ICAgICAgICB9CiAKICAgICAgICAgaWYgKHJlc3VsdHNIVE1MU3VwcG9ydHNUb29NYW55RmFpbHVy
ZXNJbmZvKSB7Ci0gICAgICAgICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUxBbmRDYWxsQ2Fs
bGJhY2soY2FsbGJhY2spOworICAgICAgICAgICAgZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MQW5k
Q2FsbENhbGxiYWNrKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzUs
MjAgKzEwMywxOCBAQCBMYXlvdXRUZXN0UmVzdWx0c0xvYWRlci5wcm90b3R5cGUgPSB7CiAKICAg
ICAgICAgICAgIGlmIChmYWlsaW5nVGVzdENvdW50IDwgMCkgewogICAgICAgICAgICAgICAgIC8v
IFRoZSBudW1iZXIgb2YgZmFpbGluZyB0ZXN0cyBjb3VsZG4ndCBiZSBkZXRlcm1pbmVkLgotICAg
ICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAg
ICAgICAgICAgICAgZXJyb3JDYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFp
bHVyZXMpOworICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZmFpbGluZ1Rlc3RD
b3VudCkgewogICAgICAgICAgICAgICAgIC8vIEFsbCB0ZXN0cyBwYXNzZWQuCi0gICAgICAgICAg
ICAgICAgUGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVzdWx0KTsKLSAgICAgICAgICAg
ICAgICBlcnJvckNhbGxiYWNrKHJlc3VsdC50ZXN0cywgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7
CisgICAgICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBGaW5kIG91dCB3aGlj
aCB0ZXN0cyBmYWlsZWQuCi0gICAgICAgICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUxBbmRD
YWxsQ2FsbGJhY2soY2FsbGJhY2spOworICAgICAgICAgICAgZmV0Y2hBbmRQYXJzZVJlc3VsdHNI
VE1MQW5kQ2FsbENhbGxiYWNrKCk7CiAgICAgICAgIH0pOwogICAgIH0sCiB9OwpkaWZmIC0tZ2l0
IGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL05SV1RSZXN1bHRzUGFyc2VyLmpzIGIvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L05SV1RSZXN1bHRzUGFyc2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmYxNDRmMGFiMzI3NDI2YjI3NDg3YTc5
MmFkZDhiZDFkOGJjMTM1ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3Vw
cG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTlJX
VFJlc3VsdHNQYXJzZXIuanMKQEAgLTAsMCArMSw3OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9u
IE5SV1RSZXN1bHRzUGFyc2VyKCkgeworfQorCitOUldUUmVzdWx0c1BhcnNlci5wcm90b3R5cGUg
PSB7CisgICAgcGFyc2U6IGZ1bmN0aW9uKHVuZXhwZWN0ZWRSZXN1bHRzSlMpIHsKKyAgICAgICAg
dmFyIGRhdGE7CisgICAgICAgIGZ1bmN0aW9uIEFERF9SRVNVTFRTKHgpIHsKKyAgICAgICAgICAg
IGRhdGEgPSB4OworICAgICAgICB9CisKKyAgICAgICAgZXZhbCh1bmV4cGVjdGVkUmVzdWx0c0pT
KTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoZGF0YSk7CisKKyAgICAgICAgdmFyIHJlc3VsdCA9
IHsgdGVzdHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGRhdGEuaW50ZXJydXB0ZWQgfTsKKworICAg
ICAgICBmdW5jdGlvbiBmb3JFYWNoVGVzdCh0cmVlLCBoYW5kbGVyLCBvcHRfcHJlZml4KSB7Cisg
ICAgICAgICAgICB2YXIgcHJlZml4ID0gb3B0X3ByZWZpeCB8fCAnJzsKKworICAgICAgICAgICAg
Zm9yICh2YXIga2V5IGluIHRyZWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgbmV3UHJlZml4ID0g
cHJlZml4ID8gKHByZWZpeCArICcvJyArIGtleSkgOiBrZXk7CisgICAgICAgICAgICAgICAgaWYg
KCdhY3R1YWwnIGluIHRyZWVba2V5XSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgdGVzdE9i
amVjdCA9IHRyZWVba2V5XTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdE9iamVjdC5uYW1lID0g
bmV3UHJlZml4OworICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKHRlc3RPYmplY3QpOworICAg
ICAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBmb3JFYWNoVGVzdCh0cmVl
W2tleV0sIGhhbmRsZXIsIG5ld1ByZWZpeCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKwor
ICAgICAgICBmdW5jdGlvbiBjb252ZXJ0TlJXVFJlc3VsdFN0cmluZyhucnd0UmVzdWx0KSB7Cisg
ICAgICAgICAgICBjb25zdCB0cmFuc2xhdGlvbnMgPSB7CisgICAgICAgICAgICAgICAgQ1JBU0g6
ICdjcmFzaCcsCisgICAgICAgICAgICAgICAgJ0lNQUdFK1RFWFQnOiAnZmFpbCcsCisgICAgICAg
ICAgICAgICAgSU1BR0U6ICdmYWlsJywKKyAgICAgICAgICAgICAgICBURVhUOiAnZmFpbCcsCisg
ICAgICAgICAgICAgICAgVElNRU9VVDogJ3RpbWVvdXQnLAorICAgICAgICAgICAgfTsKKworICAg
ICAgICAgICAgaWYgKG5yd3RSZXN1bHQgaW4gdHJhbnNsYXRpb25zKQorICAgICAgICAgICAgICAg
IHJldHVybiB0cmFuc2xhdGlvbnNbbnJ3dFJlc3VsdF07CisKKyAgICAgICAgICAgIGlmIChucnd0
UmVzdWx0LmNvbnRhaW5zKCcgJykpCisgICAgICAgICAgICAgICAgcmV0dXJuICdmbGFreSc7CisK
KyAgICAgICAgICAgIHJldHVybiAndW5rbm93biBmYWlsdXJlIHR5cGUgJyArIG5yd3RSZXN1bHQ7
CisgICAgICAgIH0KKworICAgICAgICBmb3JFYWNoVGVzdChkYXRhLnRlc3RzLCBmdW5jdGlvbih0
ZXN0KSB7CisgICAgICAgICAgICByZXN1bHQudGVzdHNbdGVzdC5uYW1lXSA9IHsgZmFpbHVyZVR5
cGU6IGNvbnZlcnROUldUUmVzdWx0U3RyaW5nKHRlc3QuYWN0dWFsKSB9OworICAgICAgICB9KTsK
KworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0sCit9OwpkaWZmIC0tZ2l0IGEvVG9vbHMv
QnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVz
dEZhaWx1cmVzL1V0aWxpdGllcy5qcyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9VdGlsaXRpZXMuanMKaW5k
ZXggZjllMTY1ZTQ4ZjM2MDhmYWJlZjEyM2YyYTkyOTBiY2EzNWNkOTk1MS4uOGZhNWIwNDY5NWNh
MjRkOGZjNWM5YWJiNjQ2MmJiM2U2NTA3NjZkYyAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L1V0aWxpdGllcy5qcworKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQu
b3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVXRpbGl0aWVzLmpzCkBAIC0xNDUs
MyArMTQ1LDcgQEAgTm9kZS5wcm90b3R5cGUucmVtb3ZlQWxsQ2hpbGRyZW4gPSBmdW5jdGlvbigp
IHsKICAgICB3aGlsZSAodGhpcy5maXJzdENoaWxkKQogICAgICAgICB0aGlzLnJlbW92ZUNoaWxk
KHRoaXMuZmlyc3RDaGlsZCk7CiB9CisKK1N0cmluZy5wcm90b3R5cGUuY29udGFpbnMgPSBmdW5j
dGlvbihzdWJzdHJpbmcpIHsKKyAgICByZXR1cm4gdGhpcy5pbmRleE9mKHN1YnN0cmluZykgPj0g
MDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbmRleC5odG1sIGIvVG9vbHMvQnVp
bGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZh
aWx1cmVzL2luZGV4Lmh0bWwKaW5kZXggMDcwMzA5ZDNhMGUyMmMwZWE4NWJjNWRiOWIxZGIxNTZj
YzEzZTlmYy4uMTI0NzgxMjJkMTA0ZWRlOGM5M2RhYzAyMjhiZDk0Y2RjMmI2OTFkYSAxMDA2NDQK
LS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1
cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2lu
ZGV4Lmh0bWwKQEAgLTMzLDYgKzMzLDcgQEAgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICAgIDxzY3JpcHQgc3JjPSJGbGFreUxheW91dFRlc3REZXRlY3Rvci5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IkxheW91dFRlc3RIaXN0b3J5QW5hbHl6ZXIuanMiPjwvc2NyaXB0
PgogICAgIDxzY3JpcHQgc3JjPSJMYXlvdXRUZXN0UmVzdWx0c0xvYWRlci5qcyI+PC9zY3JpcHQ+
CisgICAgPHNjcmlwdCBzcmM9Ik5SV1RSZXN1bHRzUGFyc2VyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iT1JXVFJlc3VsdHNQYXJzZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQg
c3JjPSJQZXJzaXN0ZW50Q2FjaGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJUcmFj
LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCAxNTkzODI4ODAzZGRlZjk1OTcyMWIxNzM2OGFhZjRlZGU1NzVhZDM3Li5jNjFm
ZDcyMjE1YTE4M2JjNGM1YzlmMjE5M2VkOGUzZGI5MmQ4NTRlIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDQgQEAKIDIwMTEtMDct
MDYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisgICAgICAgIFRlYWNoIFRlc3RG
YWlsdXJlcyBob3cgdG8gbG9hZCwgcGFyc2UsIGFuZCBpbnRlcnByZXQgTlJXVCB0ZXN0IHJlc3Vs
dHMKKworICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtpdC5vcmcvYi82MTg3Nz4gVGVzdEZhaWx1
cmVzIHBhZ2UgZG9lc24ndCBzaG93IHRlc3RlcnMgdGhhdCB1c2UKKyAgICAgICAgbmV3LXJ1bi13
ZWJraXQtdGVzdHMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19o
dG1sL1Rlc3RGYWlsdXJlcy9CdWlsZGVyLmpzOgorICAgICAgICAoQnVpbGRlci5wcm90b3R5cGUu
ZmFpbHVyZURpYWdub3Npc1RleHRBbmRVUkwpOiBBZGRlZCBzdXBwb3J0IGZvciB0aGUgbmV3ICdm
bGFreScgZmFpbHVyZQorICAgICAgICB0eXBlLiBGb3Igbm93IHdlIGRvbid0IGFjY291bnQgZm9y
IGltYWdlLW9ubHkgZmxha2VzIChidXQgVGVzdEZhaWx1cmVzIGRvZXNuJ3QgZGVhbCB3aXRoCisg
ICAgICAgIHBpeGVsIHRlc3RzIGF0IGFsbCBjdXJyZW50bHkpLgorICAgICAgICAoQnVpbGRlci5w
cm90b3R5cGUuZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHMpOiBSZWxheGVkIHRoZSByZWdleCB1c2Vk
IGZvciBwYXJzaW5nIHRoZSBudW1iZXIKKyAgICAgICAgb2YgZmFpbGluZyB0ZXN0cyBmcm9tIHRo
ZSBidWlsZGJvdCBvdXRwdXQuIE1ha2Ugc3VyZSBub3QgdG8gY291bnQgIm5ldyBwYXNzZXMiIChh
IG5ldworICAgICAgICBjYXRlZ29yeSBpbnRyb2R1Y2VkIGJ5IE5SV1QpIGFzIGZhaWx1cmVzLgor
CisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVi
bGljX2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRlc3RSZXN1bHRzTG9hZGVyLmpzOgorICAgICAg
ICAoTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIucHJvdG90eXBlLnN0YXJ0KTogTW92ZWQgYSBidW5j
aCBvZiBjb2RlIGZyb20gaGVyZSB0bworICAgICAgICBfZmV0Y2hBbmRQYXJzZU9SV1RSZXN1bHRz
LiBUaGlzIGZ1bmN0aW9uIG5vdyBhdHRlbXB0cyB0byBsb2FkIE5SV1QgcmVzdWx0cywgdGhlbiBm
YWxscyBiYWNrCisgICAgICAgIHRvIGxvYWRpbmcgT1JXVCByZXN1bHRzLgorICAgICAgICAoTGF5
b3V0VGVzdFJlc3VsdHNMb2FkZXIucHJvdG90eXBlLl9mZXRjaEFuZFBhcnNlTlJXVFJlc3VsdHMp
OiBBZGRlZC4gVHJpZXMgdG8gbG9hZCBhbmQKKyAgICAgICAgcGFyc2UgdGhlIHVuZXhwZWN0ZWRf
cmVzdWx0cy5qc29uIGZpbGUgZm9yIHRoZSBnaXZlbiBidWlsZC4KKyAgICAgICAgKExheW91dFRl
c3RSZXN1bHRzTG9hZGVyLnByb3RvdHlwZS5fZmV0Y2hBbmRQYXJzZU9SV1RSZXN1bHRzKTogQWRk
ZWQuIENvZGUgY2FtZSBmcm9tIHN0YXJ0LgorICAgICAgICBGaXhlZCBhIGJ1ZyBhbG9uZyB0aGUg
d2F5IHdoZXJlIHdlIHdlcmUgc29tZXRpbWVzIGNhbGxpbmcgdGhlIGVycm9yIGNhbGxiYWNrIGlu
c3RlYWQgb2YgdGhlCisgICAgICAgIHN1Y2Nlc3MgY2FsbGJhY2sgd2hlbiBhbGwgdGVzdHMgcGFz
c2VkLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL05SV1RSZXN1bHRzUGFyc2VyLmpzOiBBZGRlZC4K
KyAgICAgICAgKE5SV1RSZXN1bHRzUGFyc2VyKTogRG8tbm90aGluZyBjb25zdHJ1Y3Rvci4KKyAg
ICAgICAgKE5SV1RSZXN1bHRzUGFyc2VyLnByb3RvdHlwZS5wYXJzZSk6IFVzZXMgZXZhbCgpIChl
d3chKSB0byBnZXQgdGhlIHRlc3QgcmVzdWx0cyBvdXQgb2YgdGhlCisgICAgICAgIEpTIHN0cmlu
ZywgdGhlbiBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgdGVzdHMgaW4gdGhlIHJlc3VsdHMgZGF0YSBh
bmQgYnVpbGRzIHVwIGEgZGF0YQorICAgICAgICBzdHJ1Y3R1cmUgbWF0Y2hpbmcgd2hhdCBPUldU
UmVzdWx0c1BhcnNlciByZXR1cm5zLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVp
bGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1V0aWxpdGllcy5q
czoKKyAgICAgICAgKFN0cmluZy5wcm90b3R5cGUuY29udGFpbnMpOiBBZGRlZCB0aGlzIHNpbXBs
ZSBoZWxwZXIgZnVuY3Rpb24uCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53
ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW5kZXguaHRtbDogUHVs
bCBpbgorICAgICAgICBOUldUUmVzdWx0c1BhcnNlci5qcy4KKworMjAxMS0wNy0wNiAgQWRhbSBS
b2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKICAgICAgICAgRXh0cmFjdCBjb2RlIHRvIHBhcnNl
IE9SV1QncyByZXN1bHRzLmh0bWwgZmlsZSBpbnRvIGl0cyBvd24gY2xhc3MKIAogICAgICAgICBQ
cmVwIHdvcmsgZm9yIGZpeGluZyA8aHR0cDovL3dlYmtpdC5vcmcvYi82MTg3Nz4gVGVzdEZhaWx1
cmVzIHBhZ2UgZG9lc24ndCBzaG93IHRlc3RlcnMgdGhhdAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>99869</attachid>
            <date>2011-07-06 13:26:30 -0700</date>
            <delta_ts>2011-07-06 13:38:53 -0700</delta_ts>
            <desc>Teach TestFailures how to load, parse, and interpret NRWT test results</desc>
            <filename>bug-61877-20110706162624.patch</filename>
            <type>text/plain</type>
            <size>14687</size>
            <attacher name="Adam Roben (:aroben)">aroben</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA0NjEKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9C
dWlsZGVyLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25m
aWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanMKaW5kZXggYWJhYzFiNjdmMzdl
NTlkN2E2NjA4MDliNmE1N2Y4MmI5YmMwZDQzZC4uYjM1NDgwZTE2OTRiZjM5ZDY2NTNjYjA1M2Nl
MjAzZDc1Nzg0MWM3MCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQu
d2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanMKKysr
IGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGlj
X2h0bWwvVGVzdEZhaWx1cmVzL0J1aWxkZXIuanMKQEAgLTQxLDYgKzQxLDEwIEBAIEJ1aWxkZXIu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgICAgIHRleHQ6ICdwcmV0dHkgZGlmZicsCiAgICAg
ICAgICAgICAgICAgdXJsOiB1cmxTdGVtICsgJy1wcmV0dHktZGlmZi5odG1sJywKICAgICAgICAg
ICAgIH0sCisgICAgICAgICAgICBmbGFreTogeworICAgICAgICAgICAgICAgIHRleHQ6ICdwcmV0
dHkgZGlmZiAoZmxha3kpJywKKyAgICAgICAgICAgICAgICB1cmw6IHVybFN0ZW0gKyAnLXByZXR0
eS1kaWZmLmh0bWwnLAorICAgICAgICAgICAgfSwKICAgICAgICAgICAgIHRpbWVvdXQ6IHsKICAg
ICAgICAgICAgICAgICB0ZXh0OiAndGltZWQgb3V0JywKICAgICAgICAgICAgIH0sCkBAIC0xMzYs
MTEgKzE0MCwxMSBAQCBCdWlsZGVyLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICByZXN1
bHQudG9vTWFueUZhaWx1cmVzID0gdHJ1ZTsKIAogICAgICAgICAgICAgcmVzdWx0LmZhaWx1cmVD
b3VudCA9IGxheW91dFRlc3RTdGVwLnJlc3VsdHNbMV0ucmVkdWNlKGZ1bmN0aW9uKHN1bSwgb3V0
cHV0TGluZSkgewotICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFxkKykgdGVzdCBjYXNl
Ly5leGVjKG91dHB1dExpbmUpOworICAgICAgICAgICAgICAgIHZhciBtYXRjaCA9IC9eKFxkKykv
LmV4ZWMob3V0cHV0TGluZSk7CiAgICAgICAgICAgICAgICAgaWYgKCFtYXRjaCkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHN1bTsKLSAgICAgICAgICAgICAgICAvLyBEb24ndCBjb3VudCBu
ZXcgdGVzdHMgYXMgZmFpbHVyZXMuCi0gICAgICAgICAgICAgICAgaWYgKG91dHB1dExpbmUuaW5k
ZXhPZignd2VyZSBuZXcnKSA+PSAwKQorICAgICAgICAgICAgICAgIC8vIERvbid0IGNvdW50IG5l
dyB0ZXN0cyBvciBwYXNzZXMgYXMgZmFpbHVyZXMuCisgICAgICAgICAgICAgICAgaWYgKG91dHB1
dExpbmUuY29udGFpbnMoJ3dlcmUgbmV3JykgfHwgb3V0cHV0TGluZS5jb250YWlucygnbmV3IHBh
c3NlcycpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3VtOwogICAgICAgICAgICAgICAg
IHJldHVybiBzdW0gKyBwYXJzZUludChtYXRjaFsxXSwgMTApOwogICAgICAgICAgICAgfSwgMCk7
CmRpZmYgLS1naXQgYS9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNv
bmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMg
Yi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNf
aHRtbC9UZXN0RmFpbHVyZXMvTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIuanMKaW5kZXggYjc5ODJl
Mzk3YTVjZDU0YmFkMGU0ZTFkN2IyNWFjM2Y0YjUyZGFiZS4uNDhiYjM4Nzc1MDJjMjc1MTM3MjY4
OGM5MGEzNWY5OGViM2RkZTgxMCAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQv
YnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRl
c3RSZXN1bHRzTG9hZGVyLmpzCisrKyBiL1Rvb2xzL0J1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndl
YmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9MYXlvdXRUZXN0UmVzdWx0
c0xvYWRlci5qcwpAQCAtNDEsMzIgKzQxLDYwIEBAIExheW91dFRlc3RSZXN1bHRzTG9hZGVyLnBy
b3RvdHlwZSA9IHsKIAogICAgICAgICB2YXIgcmVzdWx0ID0geyB0ZXN0czoge30sIHRvb01hbnlG
YWlsdXJlczogZmFsc2UsIHZlcnNpb246IGN1cnJlbnRDYWNoZWREYXRhVmVyc2lvbiB9OwogCisg
ICAgICAgIGZ1bmN0aW9uIGNhY2hlUGFyc2VSZXN1bHRzQW5kQ2FsbENhbGxiYWNrKHBhcnNlUmVz
dWx0KSB7CisgICAgICAgICAgICByZXN1bHQudGVzdHMgPSBwYXJzZVJlc3VsdC50ZXN0czsKKyAg
ICAgICAgICAgIHJlc3VsdC50b29NYW55RmFpbHVyZXMgPSBwYXJzZVJlc3VsdC50b29NYW55RmFp
bHVyZXM7CisKKyAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3Vs
dCk7CisgICAgICAgICAgICBjYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFp
bHVyZXMpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOworICAgICAgICBz
ZWxmLl9mZXRjaEFuZFBhcnNlTlJXVFJlc3VsdHMoYnVpbGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0
c0FuZENhbGxDYWxsYmFjaywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICBzZWxmLl9mZXRjaEFu
ZFBhcnNlT1JXVFJlc3VsdHMoYnVpbGROYW1lLCBjYWNoZVBhcnNlUmVzdWx0c0FuZENhbGxDYWxs
YmFjaywgZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgLy8gV2UgY291bGRuJ3QgZmV0Y2gg
cmVzdWx0cyBmb3IgdGhpcyBidWlsZC4KKyAgICAgICAgICAgICAgICBQZXJzaXN0ZW50Q2FjaGUu
c2V0KGNhY2hlS2V5LCByZXN1bHQpOworICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2socmVz
dWx0LnRlc3RzLCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9KTsKKyAgICB9LAorCisgICAgX2ZldGNoQW5kUGFyc2VOUldUUmVzdWx0czogZnVuY3Rp
b24oYnVpbGROYW1lLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2spIHsKKyAgICAgICAg
Z2V0UmVzb3VyY2UodGhpcy5fYnVpbGRlci5yZXN1bHRzRGlyZWN0b3J5VVJMKGJ1aWxkTmFtZSkg
KyAnZnVsbF9yZXN1bHRzLmpzb24nLCBmdW5jdGlvbih4aHIpIHsKKyAgICAgICAgICAgIHN1Y2Nl
c3NDYWxsYmFjaygobmV3IE5SV1RSZXN1bHRzUGFyc2VyKCkpLnBhcnNlKHhoci5yZXNwb25zZVRl
eHQpKTsKKyAgICAgICAgfSwKKyAgICAgICAgZnVuY3Rpb24oeGhyKSB7CisgICAgICAgICAgICBl
cnJvckNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAgIH0sCisKKyAgICBfZmV0Y2hBbmRQYXJz
ZU9SV1RSZXN1bHRzOiBmdW5jdGlvbihidWlsZE5hbWUsIHN1Y2Nlc3NDYWxsYmFjaywgZXJyb3JD
YWxsYmFjaykgewogICAgICAgICB2YXIgcGFyc2VkQnVpbGROYW1lID0gdGhpcy5fYnVpbGRlci5i
dWlsZGJvdC5wYXJzZUJ1aWxkTmFtZShidWlsZE5hbWUpOwogCiAgICAgICAgIC8vIGh0dHA6Ly93
ZWJraXQub3JnL2IvNjIzODAgd2FzIGZpeGVkIGluIHI4OTYxMC4KICAgICAgICAgdmFyIHJlc3Vs
dHNIVE1MU3VwcG9ydHNUb29NYW55RmFpbHVyZXNJbmZvID0gcGFyc2VkQnVpbGROYW1lLnJldmlz
aW9uID49IDg5NjEwOwogCisgICAgICAgIHZhciByZXN1bHQgPSB7IHRlc3RzOiB7fSwgdG9vTWFu
eUZhaWx1cmVzOiBmYWxzZSB9OworCiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKIAotICAgICAg
ICBmdW5jdGlvbiBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUxBbmRDYWxsQ2FsbGJhY2soY2FsbGJh
Y2spIHsKKyAgICAgICAgZnVuY3Rpb24gZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MQW5kQ2FsbENh
bGxiYWNrKCkgewogICAgICAgICAgICAgZ2V0UmVzb3VyY2Uoc2VsZi5fYnVpbGRlci5yZXN1bHRz
UGFnZVVSTChidWlsZE5hbWUpLCBmdW5jdGlvbih4aHIpIHsKICAgICAgICAgICAgICAgICB2YXIg
cGFyc2VSZXN1bHQgPSAobmV3IE9SV1RSZXN1bHRzUGFyc2VyKCkpLnBhcnNlKHhoci5yZXNwb25z
ZVRleHQpOwogICAgICAgICAgICAgICAgIHJlc3VsdC50ZXN0cyA9IHBhcnNlUmVzdWx0LnRlc3Rz
OwogICAgICAgICAgICAgICAgIGlmIChyZXN1bHRzSFRNTFN1cHBvcnRzVG9vTWFueUZhaWx1cmVz
SW5mbykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyA9IHBhcnNl
UmVzdWx0LnRvb01hbnlGYWlsdXJlczsKIAotICAgICAgICAgICAgICAgIFBlcnNpc3RlbnRDYWNo
ZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgY2FsbGJhY2socmVzdWx0
LnRlc3RzLCByZXN1bHQudG9vTWFueUZhaWx1cmVzKTsKKyAgICAgICAgICAgICAgICBzdWNjZXNz
Q2FsbGJhY2socmVzdWx0KTsKICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICBmdW5jdGlvbih4
aHIpIHsKICAgICAgICAgICAgICAgICAvLyBXZSBmYWlsZWQgdG8gZmV0Y2ggcmVzdWx0cy5odG1s
LiBydW4td2Via2l0LXRlc3RzIG11c3QgaGF2ZSBhYm9ydGVkIGVhcmx5LgotICAgICAgICAgICAg
ICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAgICAg
ICAgZXJyb3JDYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFpbHVyZXMpOwor
ICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKICAgICAgICAgICAgIH0pOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKHJlc3VsdHNIVE1MU3VwcG9ydHNUb29NYW55RmFpbHVyZXNJbmZv
KSB7Ci0gICAgICAgICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUxBbmRDYWxsQ2FsbGJhY2so
Y2FsbGJhY2spOworICAgICAgICAgICAgZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MQW5kQ2FsbENh
bGxiYWNrKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIApAQCAtNzUsMjAgKzEw
MywxOCBAQCBMYXlvdXRUZXN0UmVzdWx0c0xvYWRlci5wcm90b3R5cGUgPSB7CiAKICAgICAgICAg
ICAgIGlmIChmYWlsaW5nVGVzdENvdW50IDwgMCkgewogICAgICAgICAgICAgICAgIC8vIFRoZSBu
dW1iZXIgb2YgZmFpbGluZyB0ZXN0cyBjb3VsZG4ndCBiZSBkZXRlcm1pbmVkLgotICAgICAgICAg
ICAgICAgIFBlcnNpc3RlbnRDYWNoZS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7Ci0gICAgICAgICAg
ICAgICAgZXJyb3JDYWxsYmFjayhyZXN1bHQudGVzdHMsIHJlc3VsdC50b29NYW55RmFpbHVyZXMp
OworICAgICAgICAgICAgICAgIGVycm9yQ2FsbGJhY2soKTsKICAgICAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmICghZmFpbGluZ1Rlc3RDb3VudCkg
ewogICAgICAgICAgICAgICAgIC8vIEFsbCB0ZXN0cyBwYXNzZWQuCi0gICAgICAgICAgICAgICAg
UGVyc2lzdGVudENhY2hlLnNldChjYWNoZUtleSwgcmVzdWx0KTsKLSAgICAgICAgICAgICAgICBl
cnJvckNhbGxiYWNrKHJlc3VsdC50ZXN0cywgcmVzdWx0LnRvb01hbnlGYWlsdXJlcyk7CisgICAg
ICAgICAgICAgICAgc3VjY2Vzc0NhbGxiYWNrKHJlc3VsdCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAvLyBGaW5kIG91dCB3aGljaCB0ZXN0
cyBmYWlsZWQuCi0gICAgICAgICAgICBmZXRjaEFuZFBhcnNlUmVzdWx0c0hUTUxBbmRDYWxsQ2Fs
bGJhY2soY2FsbGJhY2spOworICAgICAgICAgICAgZmV0Y2hBbmRQYXJzZVJlc3VsdHNIVE1MQW5k
Q2FsbENhbGxiYWNrKCk7CiAgICAgICAgIH0pOwogICAgIH0sCiB9OwpkaWZmIC0tZ2l0IGEvVG9v
bHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwv
VGVzdEZhaWx1cmVzL05SV1RSZXN1bHRzUGFyc2VyLmpzIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBv
cnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL05SV1RS
ZXN1bHRzUGFyc2VyLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIwMmUwNmM5NjQzZTFlZGVmMzUxZGNmMTAxZTRj
OWE1ZDEzZTU1ZWEKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9i
dWlsZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvTlJXVFJlc3Vs
dHNQYXJzZXIuanMKQEAgLTAsMCArMSw5OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMg
SVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRP
UlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MK
KyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgor
ICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK2Z1bmN0aW9uIE5SV1RS
ZXN1bHRzUGFyc2VyKCkgeworfQorCitOUldUUmVzdWx0c1BhcnNlci5wcm90b3R5cGUgPSB7Cisg
ICAgcGFyc2U6IGZ1bmN0aW9uKHVuZXhwZWN0ZWRSZXN1bHRzSlMpIHsKKyAgICAgICAgdmFyIGRh
dGE7CisgICAgICAgIGZ1bmN0aW9uIEFERF9SRVNVTFRTKHgpIHsKKyAgICAgICAgICAgIGRhdGEg
PSB4OworICAgICAgICB9CisKKyAgICAgICAgZXZhbCh1bmV4cGVjdGVkUmVzdWx0c0pTKTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoZGF0YSk7CisKKyAgICAgICAgdmFyIHJlc3VsdCA9IHsgdGVz
dHM6IHt9LCB0b29NYW55RmFpbHVyZXM6IGRhdGEuaW50ZXJydXB0ZWQgfTsKKworICAgICAgICBm
dW5jdGlvbiBmb3JFYWNoVGVzdCh0cmVlLCBoYW5kbGVyLCBvcHRfcHJlZml4KSB7CisgICAgICAg
ICAgICB2YXIgcHJlZml4ID0gb3B0X3ByZWZpeCB8fCAnJzsKKworICAgICAgICAgICAgZm9yICh2
YXIga2V5IGluIHRyZWUpIHsKKyAgICAgICAgICAgICAgICB2YXIgbmV3UHJlZml4ID0gcHJlZml4
ID8gKHByZWZpeCArICcvJyArIGtleSkgOiBrZXk7CisgICAgICAgICAgICAgICAgaWYgKCdhY3R1
YWwnIGluIHRyZWVba2V5XSkgeworICAgICAgICAgICAgICAgICAgICB2YXIgdGVzdE9iamVjdCA9
IHRyZWVba2V5XTsKKyAgICAgICAgICAgICAgICAgICAgdGVzdE9iamVjdC5uYW1lID0gbmV3UHJl
Zml4OworICAgICAgICAgICAgICAgICAgICBoYW5kbGVyKHRlc3RPYmplY3QpOworICAgICAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICBmb3JFYWNoVGVzdCh0cmVlW2tleV0s
IGhhbmRsZXIsIG5ld1ByZWZpeCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAg
ICBmdW5jdGlvbiBpc0ZhaWx1cmVFeHBlY3RlZChleHBlY3RlZCwgYWN0dWFsKSB7CisgICAgICAg
ICAgICBpZiAoYWN0dWFsID09PSAnU0tJUCcpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7
CisKKyAgICAgICAgICAgIHZhciBleHBlY3RlZEFycmF5ID0gZXhwZWN0ZWQuc3BsaXQoJyAnKTsK
KyAgICAgICAgICAgIHZhciBhY3R1YWxBcnJheSA9IGFjdHVhbC5zcGxpdCgnICcpOworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhY3R1YWxBcnJheS5sZW5ndGg7IGkrKykgeworICAg
ICAgICAgICAgICAgIHZhciBhY3R1YWxWYWx1ZSA9IGFjdHVhbEFycmF5W2ldOworICAgICAgICAg
ICAgICAgIGlmIChleHBlY3RlZEFycmF5LmNvbnRhaW5zKGFjdHVhbFZhbHVlKSkKKyAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAgICAgaWYgKGV4cGVjdGVkQXJyYXku
Y29udGFpbnMoJ0ZBSUwnKSAmJiBbJ0lNQUdFJywgJ1RFWFQnLCAnSU1BR0UrVEVYVCddLmNvbnRh
aW5zKGFjdHVhbFZhbHVlKSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGNvbnZlcnROUldUUmVzdWx0
U3RyaW5nKG5yd3RSZXN1bHQpIHsKKyAgICAgICAgICAgIGNvbnN0IHRyYW5zbGF0aW9ucyA9IHsK
KyAgICAgICAgICAgICAgICBDUkFTSDogJ2NyYXNoJywKKyAgICAgICAgICAgICAgICAnSU1BR0Ur
VEVYVCc6ICdmYWlsJywKKyAgICAgICAgICAgICAgICBJTUFHRTogJ2ZhaWwnLAorICAgICAgICAg
ICAgICAgIFRFWFQ6ICdmYWlsJywKKyAgICAgICAgICAgICAgICBUSU1FT1VUOiAndGltZW91dCcs
CisgICAgICAgICAgICB9OworCisgICAgICAgICAgICBpZiAobnJ3dFJlc3VsdCBpbiB0cmFuc2xh
dGlvbnMpCisgICAgICAgICAgICAgICAgcmV0dXJuIHRyYW5zbGF0aW9uc1tucnd0UmVzdWx0XTsK
KworICAgICAgICAgICAgaWYgKG5yd3RSZXN1bHQuY29udGFpbnMoJyAnKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gJ2ZsYWt5JzsKKworICAgICAgICAgICAgcmV0dXJuICd1bmtub3duIGZhaWx1
cmUgdHlwZSAnICsgbnJ3dFJlc3VsdDsKKyAgICAgICAgfQorCisgICAgICAgIGZvckVhY2hUZXN0
KGRhdGEudGVzdHMsIGZ1bmN0aW9uKHRlc3QpIHsKKyAgICAgICAgICAgIGlmIChpc0ZhaWx1cmVF
eHBlY3RlZCh0ZXN0LmV4cGVjdGVkLCB0ZXN0LmFjdHVhbCkpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICAgICAgcmVzdWx0LnRlc3RzW3Rlc3QubmFtZV0gPSB7IGZhaWx1cmVUeXBl
OiBjb252ZXJ0TlJXVFJlc3VsdFN0cmluZyh0ZXN0LmFjdHVhbCkgfTsKKyAgICAgICAgfSk7CisK
KyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorfTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0J1
aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RG
YWlsdXJlcy9VdGlsaXRpZXMuanMgYi9Ub29scy9CdWlsZFNsYXZlU3VwcG9ydC9idWlsZC53ZWJr
aXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvVXRpbGl0aWVzLmpzCmluZGV4
IGY5ZTE2NWU0OGYzNjA4ZmFiZWYxMjNmMmE5MjkwYmNhMzVjZDk5NTEuLjJjOTYwZTZlMjY4M2Zm
MjJmMjVjYmQ5NzE5Y2JhODgzOTAzNDVjZjQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0J1aWxkU2xhdmVT
dXBwb3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9V
dGlsaXRpZXMuanMKKysrIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9y
Zy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL1V0aWxpdGllcy5qcwpAQCAtMTE0LDYg
KzExNCwxMCBAQCBmdW5jdGlvbiBzb3J0ZWQoYXJyYXksIHNvcnRGdW5jdGlvbikgewogICAgIHJl
dHVybiBuZXdBcnJheTsKIH0KIAorQXJyYXkucHJvdG90eXBlLmNvbnRhaW5zID0gZnVuY3Rpb24o
dmFsdWUpIHsKKyAgICByZXR1cm4gdGhpcy5pbmRleE9mKHZhbHVlKSA+PSAwOworfQorCiBBcnJh
eS5wcm90b3R5cGUuZmluZEZpcnN0ID0gZnVuY3Rpb24ocHJlZGljYXRlKSB7CiAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCB0aGlzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgIGlmIChwcmVkaWNhdGUo
dGhpc1tpXSkpCkBAIC0xNDUsMyArMTQ5LDcgQEAgTm9kZS5wcm90b3R5cGUucmVtb3ZlQWxsQ2hp
bGRyZW4gPSBmdW5jdGlvbigpIHsKICAgICB3aGlsZSAodGhpcy5maXJzdENoaWxkKQogICAgICAg
ICB0aGlzLnJlbW92ZUNoaWxkKHRoaXMuZmlyc3RDaGlsZCk7CiB9CisKK1N0cmluZy5wcm90b3R5
cGUuY29udGFpbnMgPSBmdW5jdGlvbihzdWJzdHJpbmcpIHsKKyAgICByZXR1cm4gdGhpcy5pbmRl
eE9mKHN1YnN0cmluZykgPj0gMDsKK30KZGlmZiAtLWdpdCBhL1Rvb2xzL0J1aWxkU2xhdmVTdXBw
b3J0L2J1aWxkLndlYmtpdC5vcmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9pbmRl
eC5odG1sIGIvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcv
cHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKaW5kZXggMDcwMzA5ZDNhMGUyMmMw
ZWE4NWJjNWRiOWIxZGIxNTZjYzEzZTlmYy4uMTI0NzgxMjJkMTA0ZWRlOGM5M2RhYzAyMjhiZDk0
Y2RjMmI2OTFkYSAxMDA2NDQKLS0tIGEvVG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKKysrIGIv
VG9vbHMvQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0
bWwvVGVzdEZhaWx1cmVzL2luZGV4Lmh0bWwKQEAgLTMzLDYgKzMzLDcgQEAgVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgogICAgIDxzY3JpcHQgc3JjPSJGbGFreUxheW91dFRlc3REZXRl
Y3Rvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IkxheW91dFRlc3RIaXN0b3J5QW5h
bHl6ZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJMYXlvdXRUZXN0UmVzdWx0c0xv
YWRlci5qcyI+PC9zY3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9Ik5SV1RSZXN1bHRzUGFyc2VyLmpz
Ij48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iT1JXVFJlc3VsdHNQYXJzZXIuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJQZXJzaXN0ZW50Q2FjaGUuanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJUcmFjLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5n
ZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCAxNTkzODI4ODAzZGRlZjk1OTcyMWIxNzM2OGFh
ZjRlZGU1NzVhZDM3Li5lYjJlYTA1NmViMDBlMDU4ZTk0MjBiNWM1ZGU3NzJlYTNlNTM4NWIwIDEw
MDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDUg
KzEsNDYgQEAKIDIwMTEtMDctMDYgIEFkYW0gUm9iZW4gIDxhcm9iZW5AYXBwbGUuY29tPgogCisg
ICAgICAgIFRlYWNoIFRlc3RGYWlsdXJlcyBob3cgdG8gbG9hZCwgcGFyc2UsIGFuZCBpbnRlcnBy
ZXQgTlJXVCB0ZXN0IHJlc3VsdHMKKworICAgICAgICBGaXhlcyA8aHR0cDovL3dlYmtpdC5vcmcv
Yi82MTg3Nz4gVGVzdEZhaWx1cmVzIHBhZ2UgZG9lc24ndCBzaG93IHRlc3RlcnMgdGhhdCB1c2UK
KyAgICAgICAgbmV3LXJ1bi13ZWJraXQtdGVzdHMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIEJ1aWxkU2xhdmVTdXBwb3J0L2J1aWxkLndlYmtpdC5v
cmctY29uZmlnL3B1YmxpY19odG1sL1Rlc3RGYWlsdXJlcy9CdWlsZGVyLmpzOgorICAgICAgICAo
QnVpbGRlci5wcm90b3R5cGUuZmFpbHVyZURpYWdub3Npc1RleHRBbmRVUkwpOiBBZGRlZCBzdXBw
b3J0IGZvciB0aGUgbmV3ICdmbGFreScgZmFpbHVyZQorICAgICAgICB0eXBlLiBGb3Igbm93IHdl
IGRvbid0IGFjY291bnQgZm9yIGltYWdlLW9ubHkgZmxha2VzIChidXQgVGVzdEZhaWx1cmVzIGRv
ZXNuJ3QgZGVhbCB3aXRoCisgICAgICAgIHBpeGVsIHRlc3RzIGF0IGFsbCBjdXJyZW50bHkpLgor
ICAgICAgICAoQnVpbGRlci5wcm90b3R5cGUuZ2V0TnVtYmVyT2ZGYWlsaW5nVGVzdHMpOiBSZWxh
eGVkIHRoZSByZWdleCB1c2VkIGZvciBwYXJzaW5nIHRoZSBudW1iZXIKKyAgICAgICAgb2YgZmFp
bGluZyB0ZXN0cyBmcm9tIHRoZSBidWlsZGJvdCBvdXRwdXQuIE1ha2Ugc3VyZSBub3QgdG8gY291
bnQgIm5ldyBwYXNzZXMiIChhIG5ldworICAgICAgICBjYXRlZ29yeSBpbnRyb2R1Y2VkIGJ5IE5S
V1QpIGFzIGZhaWx1cmVzLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL0xheW91dFRlc3RSZXN1bHRz
TG9hZGVyLmpzOgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIucHJvdG90eXBlLnN0
YXJ0KTogTW92ZWQgYSBidW5jaCBvZiBjb2RlIGZyb20gaGVyZSB0bworICAgICAgICBfZmV0Y2hB
bmRQYXJzZU9SV1RSZXN1bHRzLiBUaGlzIGZ1bmN0aW9uIG5vdyBhdHRlbXB0cyB0byBsb2FkIE5S
V1QgcmVzdWx0cywgdGhlbiBmYWxscyBiYWNrCisgICAgICAgIHRvIGxvYWRpbmcgT1JXVCByZXN1
bHRzLgorICAgICAgICAoTGF5b3V0VGVzdFJlc3VsdHNMb2FkZXIucHJvdG90eXBlLl9mZXRjaEFu
ZFBhcnNlTlJXVFJlc3VsdHMpOiBBZGRlZC4gVHJpZXMgdG8gbG9hZCBhbmQKKyAgICAgICAgcGFy
c2UgdGhlIGZ1bGxfcmVzdWx0cy5qc29uIGZpbGUgZm9yIHRoZSBnaXZlbiBidWlsZC4KKyAgICAg
ICAgKExheW91dFRlc3RSZXN1bHRzTG9hZGVyLnByb3RvdHlwZS5fZmV0Y2hBbmRQYXJzZU9SV1RS
ZXN1bHRzKTogQWRkZWQuIENvZGUgY2FtZSBmcm9tIHN0YXJ0LgorICAgICAgICBGaXhlZCBhIGJ1
ZyBhbG9uZyB0aGUgd2F5IHdoZXJlIHdlIHdlcmUgc29tZXRpbWVzIGNhbGxpbmcgdGhlIGVycm9y
IGNhbGxiYWNrIGluc3RlYWQgb2YgdGhlCisgICAgICAgIHN1Y2Nlc3MgY2FsbGJhY2sgd2hlbiBh
bGwgdGVzdHMgcGFzc2VkLgorCisgICAgICAgICogQnVpbGRTbGF2ZVN1cHBvcnQvYnVpbGQud2Vi
a2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVzL05SV1RSZXN1bHRzUGFyc2Vy
LmpzOiBBZGRlZC4KKyAgICAgICAgKE5SV1RSZXN1bHRzUGFyc2VyKTogRG8tbm90aGluZyBjb25z
dHJ1Y3Rvci4KKyAgICAgICAgKE5SV1RSZXN1bHRzUGFyc2VyLnByb3RvdHlwZS5wYXJzZSk6IFVz
ZXMgZXZhbCgpIChld3chKSB0byBnZXQgdGhlIHRlc3QgcmVzdWx0cyBvdXQgb2YgdGhlCisgICAg
ICAgIEpTIHN0cmluZywgdGhlbiBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgdGVzdHMgaW4gdGhlIHJl
c3VsdHMgZGF0YSBhbmQgYnVpbGRzIHVwIGEgZGF0YQorICAgICAgICBzdHJ1Y3R1cmUgbWF0Y2hp
bmcgd2hhdCBPUldUUmVzdWx0c1BhcnNlciByZXR1cm5zLgorCisgICAgICAgICogQnVpbGRTbGF2
ZVN1cHBvcnQvYnVpbGQud2Via2l0Lm9yZy1jb25maWcvcHVibGljX2h0bWwvVGVzdEZhaWx1cmVz
L1V0aWxpdGllcy5qczoKKyAgICAgICAgKEFycmF5LnByb3RvdHlwZS5jb250YWlucyk6CisgICAg
ICAgIChTdHJpbmcucHJvdG90eXBlLmNvbnRhaW5zKToKKyAgICAgICAgQWRkZWQgdGhlc2Ugc2lt
cGxlIGhlbHBlciBmdW5jdGlvbnMuCisKKyAgICAgICAgKiBCdWlsZFNsYXZlU3VwcG9ydC9idWls
ZC53ZWJraXQub3JnLWNvbmZpZy9wdWJsaWNfaHRtbC9UZXN0RmFpbHVyZXMvaW5kZXguaHRtbDog
UHVsbCBpbgorICAgICAgICBOUldUUmVzdWx0c1BhcnNlci5qcy4KKworMjAxMS0wNy0wNiAgQWRh
bSBSb2JlbiAgPGFyb2JlbkBhcHBsZS5jb20+CisKICAgICAgICAgRXh0cmFjdCBjb2RlIHRvIHBh
cnNlIE9SV1QncyByZXN1bHRzLmh0bWwgZmlsZSBpbnRvIGl0cyBvd24gY2xhc3MKIAogICAgICAg
ICBQcmVwIHdvcmsgZm9yIGZpeGluZyA8aHR0cDovL3dlYmtpdC5vcmcvYi82MTg3Nz4gVGVzdEZh
aWx1cmVzIHBhZ2UgZG9lc24ndCBzaG93IHRlc3RlcnMgdGhhdAo=
</data>
<flag name="review"
          id="94451"
          type_id="1"
          status="+"
          setter="abarth"
    />
          </attachment>
      

    </bug>

</bugzilla>