<?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>122154</bug_id>
          
          <creation_ts>2013-10-01 03:53:40 -0700</creation_ts>
          <short_desc>[Tools] User interruption (Ctrl+C) on run-webkit-tests should also generate results.html</short_desc>
          <delta_ts>2015-05-15 05:23:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>BlinkMergeCandidate</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ravi Kasibhatla">r.kasibhatla</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>dpranke</cc>
    
    <cc>glenn</cc>
    
    <cc>ossy</cc>
    
    <cc>r.kasibhatla</cc>
    
    <cc>rniwa</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>934966</commentid>
    <comment_count>0</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-01 03:53:40 -0700</bug_when>
    <thetext>Currently, results.html is generated from the results json file only on completion of entire layout tests run. Ideally, it should be created even when the execution has been interrupted - either by user (by Ctrl+C) or because of other interruption (exit-after-n-failures option). In both cases, all failures should be reported.

We need not throw the results.html onto the browser window in case of interruption, to avoid creation of browser session for all unwanted runs, but it should still dump the results into the html - just in case the user wants to go over them later (before next run).

This behavior change was reported in blink (https://code.google.com/p/chromium/issues/detail?id=263151) and got fixed through CL (http://src.chromium.org/viewvc/blink?view=rev&amp;rev=157769).

Any thoughts on the integration of the changes in WebKit repo?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934967</commentid>
    <comment_count>1</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-01 03:54:23 -0700</bug_when>
    <thetext>[Merging from Blink]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>934971</commentid>
    <comment_count>2</comment_count>
      <attachid>213073</attachid>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-01 04:05:32 -0700</bug_when>
    <thetext>Created attachment 213073
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935106</commentid>
    <comment_count>3</comment_count>
      <attachid>213073</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-01 11:35:06 -0700</bug_when>
    <thetext>Comment on attachment 213073
Patch

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

&gt; Tools/ChangeLog:4
&gt; +        User interruption (Ctrl+C) on run-webkit-tests should also generate
&gt; +        results.html

It doesn&apos;t seem like a good idea to wrap the line right before the last word.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:248
&gt; +                if self._options.show_results and (initial_results.unexpected_results_by_name or
&gt; +                                                   (self._options.full_results_html and initial_results.total_failures)):

Wrong indentation. In WebKit, we use 4 space indentation everywhere so
&quot;(self._options&quot; should appear exactly 4 spaces on the right of &quot;if self._options.show_results&quot;.

&gt; Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py:39
&gt; +INTERRUPTED_EXIT_STATUS = signal.SIGINT + 128

Why was this moved from run_webkit_tests.py?

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:78
&gt; +        if run_details.exit_code != -1 and not run_details.initial_results.keyboard_interrupted:

How about the regular interrupt?

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:83
&gt; +    # We need to still handle KeyboardInterrupt, atleast for webkitpy unittest cases.

Type: at least

&gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:960
&gt; -            self.assertEqual(res, run_webkit_tests.INTERRUPTED_EXIT_STATUS)
&gt; +            self.assertEqual(res, INTERRUPTED_EXIT_STATUS)

We need an assertion to make sure results.html is generated. r- due to the lack of tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935735</commentid>
    <comment_count>4</comment_count>
      <attachid>213235</attachid>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-03 00:43:37 -0700</bug_when>
    <thetext>Created attachment 213235
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935736</commentid>
    <comment_count>5</comment_count>
    <who name="Ravi Kasibhatla">r.kasibhatla</who>
    <bug_when>2013-10-03 00:56:23 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (From update of attachment 213073 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=213073&amp;action=review
&gt; 
&gt; &gt; Tools/ChangeLog:4
&gt; &gt; +        User interruption (Ctrl+C) on run-webkit-tests should also generate
&gt; &gt; +        results.html
&gt; 
&gt; It doesn&apos;t seem like a good idea to wrap the line right before the last word.
Done. Corrected.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:248
&gt; &gt; +                if self._options.show_results and (initial_results.unexpected_results_by_name or
&gt; &gt; +                                                   (self._options.full_results_html and initial_results.total_failures)):
&gt; 
&gt; Wrong indentation. In WebKit, we use 4 space indentation everywhere so
&gt; &quot;(self._options&quot; should appear exactly 4 spaces on the right of &quot;if self._options.show_results&quot;.
Done. Corrected.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/models/test_run_results.py:39
&gt; &gt; +INTERRUPTED_EXIT_STATUS = signal.SIGINT + 128
&gt; 
&gt; Why was this moved from run_webkit_tests.py?
I needed INTERRUPTED_EXIT_STATUS value in manager.py. It is wrong (from design view) to include run_webkit_tests.py from manager.py, since we include manager.py inside run_webkit_tests.py - it creates a loop. Rather I felt it was better to include it in test_run_results.py and use it at all places.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:78
&gt; &gt; +        if run_details.exit_code != -1 and not run_details.initial_results.keyboard_interrupted:
&gt; 
&gt; How about the regular interrupt?
As I understand, the regular interrupt is generated when the testing is stopped in between due to no. of failures reaching a limit specified by exit-after-n-failures option. On build bots, it is important to throw the failure result if the execution stopped due to failures hitting the limit. Hence, not adding that condition. The build bot printer shouldn&apos;t result in case of unittesting or keyboard interrupt.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:83
&gt; &gt; +    # We need to still handle KeyboardInterrupt, atleast for webkitpy unittest cases.
&gt; 
&gt; Type: at least
Done. Corrected.
&gt; 
&gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:960
&gt; &gt; -            self.assertEqual(res, run_webkit_tests.INTERRUPTED_EXIT_STATUS)
&gt; &gt; +            self.assertEqual(res, INTERRUPTED_EXIT_STATUS)
&gt; 
&gt; We need an assertion to make sure results.html is generated. 
How can we test for results.html in this unit test case - because it is not generated. Before start of this test case, we change the run() func pointer to point to a dummy run() which just raises the KeyboardInterrupt. So, in the testcase, we don&apos;t even read the test expectations to generate results json file, so no results.html. The only way to test for results.html generation is to run at least 1 actual test and then check for the file presence.
&gt; r- due to the lack of tests.
What other tests do you intend to see? I didn&apos;t add any new tests, because there are already tests to check the usecase of keyboard interrupt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>935740</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2013-10-03 01:21:55 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests.py:83
&gt; &gt; &gt; +    # We need to still handle KeyboardInterrupt, atleast for webkitpy unittest cases.
&gt; &gt; 
&gt; &gt; Type: at least
&gt; Done. Corrected.
&gt; &gt; 
&gt; &gt; &gt; Tools/Scripts/webkitpy/layout_tests/run_webkit_tests_integrationtest.py:960
&gt; &gt; &gt; -            self.assertEqual(res, run_webkit_tests.INTERRUPTED_EXIT_STATUS)
&gt; &gt; &gt; +            self.assertEqual(res, INTERRUPTED_EXIT_STATUS)
&gt; &gt; 
&gt; &gt; We need an assertion to make sure results.html is generated. 
&gt;
&gt; How can we test for results.html in this unit test case - because it is not generated. Before start of this test case, we change the run() func pointer to point to a dummy run() which just raises the KeyboardInterrupt. So, in the testcase, we don&apos;t even read the test expectations to generate results json file, so no results.html. The only way to test for results.html generation is to run at least 1 actual test and then check for the file presence.

There are tests for generating results.html.  Please take a look at them and add a new test case.

&gt; What other tests do you intend to see?

I don&apos;t think we need multiple test cases for this change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095100</commentid>
    <comment_count>7</comment_count>
      <attachid>213235</attachid>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-15 05:21:32 -0700</bug_when>
    <thetext>Comment on attachment 213235
Patch

I can&apos;t see how to test easily sending a ctrl+C during testing.

It patch works fine for me and in Blink too since 1.5 years ago.
We shouldn&apos;t waste our time for thinking about sophisticated testing
for this simple patch, let&apos;s land it and enjoy the results.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1095101</commentid>
    <comment_count>8</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2015-05-15 05:23:46 -0700</bug_when>
    <thetext>Committed r184382: &lt;http://trac.webkit.org/changeset/184382&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213073</attachid>
            <date>2013-10-01 04:05:32 -0700</date>
            <delta_ts>2013-10-03 00:43:27 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122154-20131001164213.patch</filename>
            <type>text/plain</type>
            <size>11291</size>
            <attacher name="Ravi Kasibhatla">r.kasibhatla</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDc0MGI3MTY3NmM2MTNmYjE0MjNlMTBkZTVkMjI5YTAz
ODMyZTU4YS4uMGZkOGU5OTA0YmYxM2U4NTcyNTMzZGQ1YmI1MmRiNzdjMjgxYzU1YyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI4
IEBACisyMDEzLTEwLTAxICBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHIua2FzaWJoYXRs
YUBzYW1zdW5nLmNvbT4KKworICAgICAgICBVc2VyIGludGVycnVwdGlvbiAoQ3RybCtDKSBvbiBy
dW4td2Via2l0LXRlc3RzIHNob3VsZCBhbHNvIGdlbmVyYXRlCisgICAgICAgIHJlc3VsdHMuaHRt
bAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTIyMTU0
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgT24gZG9p
bmcgQ3RybCtDIHdoaWxlIHJ1bm5pbmcgcnVuLXdlYmtpdC10ZXN0cywgcmVzdWx0cy5odG1sIGlz
IGdlbmVyYXRlZAorICAgICAgICBvbmx5IG9uIGNvbXBsZXRpb24gb2YgZW50aXJlIGxheW91dCB0
ZXN0cyBydW4uIEl0IHNob3VsZCBiZSBjcmVhdGVkIGV2ZW4KKyAgICAgICAgd2hlbiB0aGUgZXhl
Y3V0aW9uIGhhcyBiZWVuIGludGVycnVwdGVkIC0gZWl0aGVyIGJ5IHVzZXIgKGJ5IEN0cmwrQykg
b3IKKyAgICAgICAgYmVjYXVzZSBvZiBhbnkgb3RoZXIgaW50ZXJydXB0aW9uIChsaWtlIGV4aXQt
YWZ0ZXItbi1mYWlsdXJlcyBvcHRpb24pLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5OgorICAgICAgICAo
TGF5b3V0VGVzdFJ1bm5lci5ydW5fdGVzdHMpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLnJ1
bik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3Rf
cnVuX3Jlc3VsdHMucHk6CisgICAgICAgIChUZXN0UnVuUmVzdWx0cy5fX2luaXRfXyk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weToK
KyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5OgorICAgICAgICAoUnVuVGVzdC50
ZXN0X2tleWJvYXJkX2ludGVycnVwdCk6CisgICAgICAgIChNYWluVGVzdC50ZXN0X2V4Y2VwdGlv
bl9oYW5kbGluZyk6CisKIDIwMTMtMDktMjcgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAgPGFsbGFu
LmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGaXggZm9yY2Vfc3RhdGljX2xpYnNf
YXNfc2hhcmVkIGluIFdlYktpdDIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5l
ci5weQppbmRleCAzZmQ0MGUzOGZlYzc2NjhkYTcyZDI3YzY5OGI4NzJlZDg4ZGIzY2ViLi42MTI5
ODQyMzFkNTIyODk4MTdhOTczOWVkZWZhNDBiM2FhNTQ1NTUxIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5u
ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxl
cnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5CkBAIC0xMzYsNyArMTM2LDcgQEAgY2xhc3MgTGF5b3V0
VGVzdFJ1bm5lcihvYmplY3QpOgogICAgICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAg
ICAgICAgICAgICBzZWxmLl9wcmludGVyLmZsdXNoKCkKICAgICAgICAgICAgIHNlbGYuX3ByaW50
ZXIud3JpdGVsbignSW50ZXJydXB0ZWQsIGV4aXRpbmcgLi4uJykKLSAgICAgICAgICAgIHJhaXNl
CisgICAgICAgICAgICBydW5fcmVzdWx0cy5rZXlib2FyZF9pbnRlcnJ1cHRlZCA9IFRydWUKICAg
ICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKICAgICAgICAgICAgIF9sb2cuZGVidWcoJyVzKCIl
cyIpIHJhaXNlZCwgZXhpdGluZycgJSAoZS5fX2NsYXNzX18uX19uYW1lX18sIHN0cihlKSkpCiAg
ICAgICAgICAgICByYWlzZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXggNmJkZDdlOTUyN2M4NDAw
OThlYjg5MTNiN2FjMTkwYWMwMmFlNDZlOC4uNjQ4N2Y1MjI1YTAwY2ZjZDM3MjY4MzM1NTcxNjQx
ZDdkN2VkZDkxMiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvY29udHJvbGxlcnMvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC01MCw2ICs1MCw3IEBAIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9leHBlY3RhdGlvbnMKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQgdGVzdF9mYWlsdXJlcwogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X3J1bl9yZXN1bHRzCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9pbnB1dCBpbXBvcnQgVGVzdElu
cHV0Citmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMudGVzdF9ydW5fcmVzdWx0cyBp
bXBvcnQgSU5URVJSVVBURURfRVhJVF9TVEFUVVMKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2Vy
KF9fbmFtZV9fKQogCkBAIC0xOTksNyArMjAwLDkgQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgog
ICAgICAgICAgICAgICAgIGludChzZWxmLl9vcHRpb25zLmNoaWxkX3Byb2Nlc3NlcyksIHJldHJ5
aW5nPUZhbHNlKQogCiAgICAgICAgICAgICB0ZXN0c190b19yZXRyeSA9IHNlbGYuX3Rlc3RzX3Rv
X3JldHJ5KGluaXRpYWxfcmVzdWx0cywgaW5jbHVkZV9jcmFzaGVzPXNlbGYuX3BvcnQuc2hvdWxk
X3JldHJ5X2NyYXNoZXMoKSkKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucmV0cnlfZmFp
bHVyZXMgYW5kIHRlc3RzX3RvX3JldHJ5IGFuZCBub3QgaW5pdGlhbF9yZXN1bHRzLmludGVycnVw
dGVkOgorICAgICAgICAgICAgIyBEb24ndCByZXRyeSBmYWlsdXJlcyB3aGVuIGludGVycnVwdGVk
IGJ5IHVzZXIgb3IgZmFpbHVyZXMgbGltaXQgZXhjZXB0aW9uLgorICAgICAgICAgICAgcmV0cnlf
ZmFpbHVyZXMgPSBzZWxmLl9vcHRpb25zLnJldHJ5X2ZhaWx1cmVzIGFuZCBub3QgKGluaXRpYWxf
cmVzdWx0cy5pbnRlcnJ1cHRlZCBvciBpbml0aWFsX3Jlc3VsdHMua2V5Ym9hcmRfaW50ZXJydXB0
ZWQpCisgICAgICAgICAgICBpZiByZXRyeV9mYWlsdXJlcyBhbmQgdGVzdHNfdG9fcmV0cnk6CiAg
ICAgICAgICAgICAgICAgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSA9IHNlbGYuX2ZvcmNl
X3BpeGVsX3Rlc3RzX2lmX25lZWRlZCgpCiAKICAgICAgICAgICAgICAgICBfbG9nLmluZm8oJycp
CkBAIC0yMzEsMTggKzIzNCwyMSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAgICAgICAg
ICByZXN1bHRzX2luY2x1ZGluZ19wYXNzZXMgPSB0ZXN0X3J1bl9yZXN1bHRzLnN1bW1hcml6ZV9y
ZXN1bHRzKHNlbGYuX3BvcnQsIHNlbGYuX2V4cGVjdGF0aW9ucywgaW5pdGlhbF9yZXN1bHRzLCBy
ZXRyeV9yZXN1bHRzLCBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5LCBpbmNsdWRlX3Bhc3Nl
cz1UcnVlKQogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3Jlc3VsdHMoZW5kX3RpbWUgLSBz
dGFydF90aW1lLCBpbml0aWFsX3Jlc3VsdHMsIHN1bW1hcml6ZWRfcmVzdWx0cykKIAorICAgICAg
ICBleGl0X2NvZGUgPSAtMQogICAgICAgICBpZiBub3Qgc2VsZi5fb3B0aW9ucy5kcnlfcnVuOgog
ICAgICAgICAgICAgc2VsZi5fcG9ydC5wcmludF9sZWFrc19zdW1tYXJ5KCkKICAgICAgICAgICAg
IHNlbGYuX3VwbG9hZF9qc29uX2ZpbGVzKHN1bW1hcml6ZWRfcmVzdWx0cywgaW5pdGlhbF9yZXN1
bHRzLCByZXN1bHRzX2luY2x1ZGluZ19wYXNzZXMsIHN0YXJ0X3RpbWUsIGVuZF90aW1lKQogCiAg
ICAgICAgICAgICByZXN1bHRzX3BhdGggPSBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5fcmVz
dWx0c19kaXJlY3RvcnksICJyZXN1bHRzLmh0bWwiKQogICAgICAgICAgICAgc2VsZi5fY29weV9y
ZXN1bHRzX2h0bWxfZmlsZShyZXN1bHRzX3BhdGgpCi0gICAgICAgICAgICBpZiBzZWxmLl9vcHRp
b25zLnNob3dfcmVzdWx0cyBhbmQgKGluaXRpYWxfcmVzdWx0cy51bmV4cGVjdGVkX3Jlc3VsdHNf
YnlfbmFtZSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAoc2VsZi5fb3B0aW9ucy5mdWxsX3Jlc3VsdHNfaHRtbCBhbmQgaW5pdGlhbF9yZXN1bHRzLnRv
dGFsX2ZhaWx1cmVzKSk6Ci0gICAgICAgICAgICAgICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNf
aHRtbF9maWxlKHJlc3VsdHNfcGF0aCkKLQotICAgICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0
cy5SdW5EZXRhaWxzKHNlbGYuX3BvcnQuZXhpdF9jb2RlX2Zyb21fc3VtbWFyaXplZF9yZXN1bHRz
KHN1bW1hcml6ZWRfcmVzdWx0cyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgc3VtbWFyaXplZF9yZXN1bHRzLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3Vs
dHMsIGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnkpCisgICAgICAgICAgICBpZiBpbml0aWFs
X3Jlc3VsdHMua2V5Ym9hcmRfaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICAgICAgZXhpdF9jb2Rl
ID0gSU5URVJSVVBURURfRVhJVF9TVEFUVVMKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAg
ICAgICAgaWYgc2VsZi5fb3B0aW9ucy5zaG93X3Jlc3VsdHMgYW5kIChpbml0aWFsX3Jlc3VsdHMu
dW5leHBlY3RlZF9yZXN1bHRzX2J5X25hbWUgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLl9vcHRpb25zLmZ1bGxfcmVzdWx0c19odG1s
IGFuZCBpbml0aWFsX3Jlc3VsdHMudG90YWxfZmFpbHVyZXMpKToKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fcG9ydC5zaG93X3Jlc3VsdHNfaHRtbF9maWxlKHJlc3VsdHNfcGF0aCkKKyAgICAg
ICAgICAgICAgICBleGl0X2NvZGUgPSBzZWxmLl9wb3J0LmV4aXRfY29kZV9mcm9tX3N1bW1hcml6
ZWRfcmVzdWx0cyhzdW1tYXJpemVkX3Jlc3VsdHMpCisgICAgICAgIHJldHVybiB0ZXN0X3J1bl9y
ZXN1bHRzLlJ1bkRldGFpbHMoZXhpdF9jb2RlLCBzdW1tYXJpemVkX3Jlc3VsdHMsIGluaXRpYWxf
cmVzdWx0cywgcmV0cnlfcmVzdWx0cywgZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSkKIAog
ICAgIGRlZiBfcnVuX3Rlc3RzKHNlbGYsIHRlc3RzX3RvX3J1biwgdGVzdHNfdG9fc2tpcCwgcmVw
ZWF0X2VhY2gsIGl0ZXJhdGlvbnMsIG51bV93b3JrZXJzLCByZXRyeWluZyk6CiAgICAgICAgIG5l
ZWRzX2h0dHAgPSBhbnkoc2VsZi5faXNfaHR0cF90ZXN0KHRlc3QpIGZvciB0ZXN0IGluIHRlc3Rz
X3RvX3J1bikKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKaW5kZXggZmIwMzU3Mjg3NTkyNjE4
Mzk0OTc0NWE4M2E3ZDkwMmQ3ZDBkNzk2Zi4uNjRhMDYwYzQ0OGZlZWU3OGMyZmFmM2Y1M2UxZTkx
YzE5ZmIxZjM4YSAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvbW9kZWxzL3Rlc3RfcnVuX3Jlc3VsdHMucHkKQEAgLTI4LDYgKzI4LDcg
QEAKICMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KIAogaW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBzaWduYWwKIAogZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwog
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCkBA
IC0zNSw2ICszNiw3IEBAIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBvcnQg
dGVzdF9mYWlsdXJlcwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKK0lO
VEVSUlVQVEVEX0VYSVRfU1RBVFVTID0gc2lnbmFsLlNJR0lOVCArIDEyOAogCiBjbGFzcyBUZXN0
UnVuUmVzdWx0cyhvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBleHBlY3RhdGlvbnMs
IG51bV90ZXN0cyk6CkBAIC02MCw2ICs2Miw3IEBAIGNsYXNzIFRlc3RSdW5SZXN1bHRzKG9iamVj
dCk6CiAgICAgICAgICAgICBzZWxmLnRlc3RzX2J5X3RpbWVsaW5lW3RpbWVsaW5lXSA9IGV4cGVj
dGF0aW9ucy5nZXRfdGVzdHNfd2l0aF90aW1lbGluZSh0aW1lbGluZSkKICAgICAgICAgc2VsZi5z
bG93X3Rlc3RzID0gc2V0KCkKICAgICAgICAgc2VsZi5pbnRlcnJ1cHRlZCA9IEZhbHNlCisgICAg
ICAgIHNlbGYua2V5Ym9hcmRfaW50ZXJydXB0ZWQgPSBGYWxzZQogCiAgICAgZGVmIGFkZChzZWxm
LCB0ZXN0X3Jlc3VsdCwgZXhwZWN0ZWQsIHRlc3RfaXNfc2xvdyk6CiAgICAgICAgIHNlbGYudGVz
dHNfYnlfZXhwZWN0YXRpb25bdGVzdF9yZXN1bHQudHlwZV0uYWRkKHRlc3RfcmVzdWx0LnRlc3Rf
bmFtZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHMucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9y
dW5fd2Via2l0X3Rlc3RzLnB5CmluZGV4IGQ1NzQ4ZGI2NWQyYmU4OWRiZDJlODc1MGY3Y2ZmNTcx
MzEwZmE3MDMuLjA2YzRhNjhjZWRhMzRiMGIyMjlhNGRjZWMwYjc2OWM4NTE4MTRhMjEgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVz
dHMucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtp
dF90ZXN0cy5weQpAQCAtMzEsMTIgKzMxLDEyIEBACiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IG9w
dHBhcnNlCiBpbXBvcnQgb3MKLWltcG9ydCBzaWduYWwKIGltcG9ydCBzeXMKIGltcG9ydCB0cmFj
ZWJhY2sKIAogZnJvbSB3ZWJraXRweS5jb21tb24uaG9zdCBpbXBvcnQgSG9zdAogZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMuY29udHJvbGxlcnMubWFuYWdlciBpbXBvcnQgTWFuYWdlcgorZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0IElO
VEVSUlVQVEVEX0VYSVRfU1RBVFVTCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IGNvbmZpZ3Vy
YXRpb25fb3B0aW9ucywgcGxhdGZvcm1fb3B0aW9ucwogZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVz
dHMudmlld3MgaW1wb3J0IGJ1aWxkYm90X3Jlc3VsdHMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLnZpZXdzIGltcG9ydCBwcmludGluZwpAQCAtNDUsOSArNDUsNiBAQCBmcm9tIHdlYmtpdHB5
LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKIF9sb2cgPSBsb2dnaW5nLmdldExv
Z2dlcihfX25hbWVfXykKIAogCi0jIFRoaXMgbWlycm9ycyB3aGF0IHRoZSBzaGVsbCBub3JtYWxs
eSBkb2VzLgotSU5URVJSVVBURURfRVhJVF9TVEFUVVMgPSBzaWduYWwuU0lHSU5UICsgMTI4Ci0K
ICMgVGhpcyBpcyBhIHJhbmRvbWx5IGNob3NlbiBleGl0IGNvZGUgdGhhdCBjYW4gYmUgdGVzdGVk
IGFnYWluc3QgdG8KICMgaW5kaWNhdGUgdGhhdCBhbiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiBvY2N1
cnJlZC4KIEVYQ0VQVElPTkFMX0VYSVRfU1RBVFVTID0gMjU0CkBAIC03OCwxMSArNzUsMTIgQEAg
ZGVmIG1haW4oYXJndiwgc3Rkb3V0LCBzdGRlcnIpOgogCiAgICAgdHJ5OgogICAgICAgICBydW5f
ZGV0YWlscyA9IHJ1bihwb3J0LCBvcHRpb25zLCBhcmdzLCBzdGRlcnIpCi0gICAgICAgIGlmIHJ1
bl9kZXRhaWxzLmV4aXRfY29kZSAhPSAtMToKKyAgICAgICAgaWYgcnVuX2RldGFpbHMuZXhpdF9j
b2RlICE9IC0xIGFuZCBub3QgcnVuX2RldGFpbHMuaW5pdGlhbF9yZXN1bHRzLmtleWJvYXJkX2lu
dGVycnVwdGVkOgogICAgICAgICAgICAgYm90X3ByaW50ZXIgPSBidWlsZGJvdF9yZXN1bHRzLkJ1
aWxkQm90UHJpbnRlcihzdGRvdXQsIG9wdGlvbnMuZGVidWdfcnd0X2xvZ2dpbmcpCiAgICAgICAg
ICAgICBib3RfcHJpbnRlci5wcmludF9yZXN1bHRzKHJ1bl9kZXRhaWxzKQogCiAgICAgICAgIHJl
dHVybiBydW5fZGV0YWlscy5leGl0X2NvZGUKKyAgICAjIFdlIG5lZWQgdG8gc3RpbGwgaGFuZGxl
IEtleWJvYXJkSW50ZXJydXB0LCBhdGxlYXN0IGZvciB3ZWJraXRweSB1bml0dGVzdCBjYXNlcy4K
ICAgICBleGNlcHQgS2V5Ym9hcmRJbnRlcnJ1cHQ6CiAgICAgICAgIHJldHVybiBJTlRFUlJVUFRF
RF9FWElUX1NUQVRVUwogICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGU6CmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzX2lu
dGVncmF0aW9udGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1
bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CmluZGV4IGM4ZDM0OTVlNGEyNTUxZDVl
MmVhMWRkODg1MTNmMDU3NjBlZjQzZGIuLjcwOWExN2QwZmQyZDM4NTYyN2JiYzJjOGI4ZTllNjk4
MDdiZTJiNDggMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5
CkBAIC01MCw2ICs1MCw3IEBAIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3RfbW9jayBpbXBvcnQg
TW9ja0hvc3QKIAogZnJvbSB3ZWJraXRweSBpbXBvcnQgcG9ydAogZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMgaW1wb3J0IHJ1bl93ZWJraXRfdGVzdHMKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rl
c3RzLm1vZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9ydCBJTlRFUlJVUFRFRF9FWElUX1NUQVRV
UwogZnJvbSB3ZWJraXRweS5wb3J0IGltcG9ydCBQb3J0CiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1w
b3J0IHRlc3QKIGZyb20gd2Via2l0cHkudGVzdC5za2lwIGltcG9ydCBza2lwX2lmCkBAIC0yOTEs
MTEgKzI5MiwxMiBAQCBjbGFzcyBSdW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlLCBTdHJlYW1UZXN0
aW5nTWl4aW4pOgogICAgIGRlZiB0ZXN0X2tleWJvYXJkX2ludGVycnVwdChzZWxmKToKICAgICAg
ICAgIyBOb3RlIHRoYXQgdGhpcyBhbHNvIHRlc3RzIHJ1bm5pbmcgYSB0ZXN0IG1hcmtlZCBhcyBT
S0lQIGlmCiAgICAgICAgICMgeW91IHNwZWNpZnkgaXQgZXhwbGljaXRseS4KLSAgICAgICAgc2Vs
Zi5hc3NlcnRSYWlzZXMoS2V5Ym9hcmRJbnRlcnJ1cHQsIGxvZ2dpbmdfcnVuLCBbJ2ZhaWx1cmVz
L2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCAnLS1jaGlsZC1wcm9jZXNzZXMnLCAnMSddLCB0ZXN0
c19pbmNsdWRlZD1UcnVlKQorICAgICAgICBkZXRhaWxzLCBfLCBfID0gbG9nZ2luZ19ydW4oWydm
YWlsdXJlcy9leHBlY3RlZC9rZXlib2FyZC5odG1sJywgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzEn
XSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZXRhaWxz
LmV4aXRfY29kZSwgSU5URVJSVVBURURfRVhJVF9TVEFUVVMpCiAKICAgICAgICAgaWYgc2VsZi5z
aG91bGRfdGVzdF9wcm9jZXNzZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXli
b2FyZEludGVycnVwdCwgbG9nZ2luZ19ydW4sCi0gICAgICAgICAgICAgICAgWydmYWlsdXJlcy9l
eHBlY3RlZC9rZXlib2FyZC5odG1sJywgJ3Bhc3Nlcy90ZXh0Lmh0bWwnLCAnLS1jaGlsZC1wcm9j
ZXNzZXMnLCAnMicsICctLWZvcmNlJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUsIHNoYXJlZF9wb3J0
PUZhbHNlKQorICAgICAgICAgICAgXywgcmVndWxhcl9vdXRwdXQsIF8gPSBsb2dnaW5nX3J1bihb
J2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCAncGFzc2VzL3RleHQuaHRtbCcsICct
LWNoaWxkLXByb2Nlc3NlcycsICcyJywgJy0tZm9yY2UnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSwg
c2hhcmVkX3BvcnQ9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYW55KFsnSW50
ZXJydXB0ZWQsIGV4aXRpbmcnIGluIGxpbmUgZm9yIGxpbmUgaW4gcmVndWxhcl9vdXRwdXQuYnVm
bGlzdF0pKQogCiAgICAgZGVmIHRlc3Rfbm9fdGVzdHNfZm91bmQoc2VsZik6CiAgICAgICAgIGRl
dGFpbHMsIGVyciwgXyA9IGxvZ2dpbmdfcnVuKFsncmVzb3VyY2VzJ10sIHRlc3RzX2luY2x1ZGVk
PVRydWUpCkBAIC05NTUsNyArOTU3LDcgQEAgY2xhc3MgTWFpblRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBydW5fd2Via2l0X3Rlc3RzLnJ1biA9IGlu
dGVycnVwdGluZ19ydW4KICAgICAgICAgICAgIHJlcyA9IHJ1bl93ZWJraXRfdGVzdHMubWFpbihb
XSwgc3Rkb3V0LCBzdGRlcnIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgcnVu
X3dlYmtpdF90ZXN0cy5JTlRFUlJVUFRFRF9FWElUX1NUQVRVUykKKyAgICAgICAgICAgIHNlbGYu
YXNzZXJ0RXF1YWwocmVzLCBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUykKIAogICAgICAgICAgICAg
cnVuX3dlYmtpdF90ZXN0cy5ydW4gPSBzdWNjZXNzZnVsX3J1bgogICAgICAgICAgICAgcmVzID0g
cnVuX3dlYmtpdF90ZXN0cy5tYWluKFsnLS1wbGF0Zm9ybScsICd0ZXN0J10sIHN0ZG91dCwgc3Rk
ZXJyKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>213235</attachid>
            <date>2013-10-03 00:43:37 -0700</date>
            <delta_ts>2015-05-15 05:21:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-122154-20131003132019.patch</filename>
            <type>text/plain</type>
            <size>11257</size>
            <attacher name="Ravi Kasibhatla">r.kasibhatla</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTU2NTM1CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZDc0MGI3MTY3NmM2MTNmYjE0MjNlMTBkZTVkMjI5YTAz
ODMyZTU4YS4uYjdlZjIzMzI5NzAzODlhZTMzYTk2MjZkYmRjMjA1ZjEwN2QzNGExZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3
IEBACisyMDEzLTEwLTAxICBSYXZpIFBoYW5lZW5kcmEgS2FzaWJoYXRsYSAgPHIua2FzaWJoYXRs
YUBzYW1zdW5nLmNvbT4KKworICAgICAgICBVc2VyIGludGVycnVwdGlvbiB3aGlsZSBydW5uaW5n
IG9mIHJ1bi13ZWJraXQtdGVzdHMgc2hvdWxkIGFsc28gZ2VuZXJhdGUgcmVzdWx0cy5odG1sCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjIxNTQKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBHZW5lcmF0aW9u
IG9mIHJlc3VsdHMuaHRtbCBvbiBleGVjdXRpb24gb2YgcnVuLXdlYmtpdC10ZXN0cyBoYXBwZW5z
IG9ubHkKKyAgICAgICAgb24gY29tcGxldGlvbiBvZiBlbnRpcmUgbGF5b3V0IHRlc3RzIHJ1bi4g
SXQgc2hvdWxkIGJlIGNyZWF0ZWQgZXZlbiB3aGVuCisgICAgICAgIHRoZSBleGVjdXRpb24gaGFz
IGJlZW4gaW50ZXJydXB0ZWQgLSBlaXRoZXIgYnkgdXNlciAoYnkgcHJlc3NpbmcgQ3RybCtDKQor
ICAgICAgICBvciBiZWNhdXNlIG9mIG90aGVyIGludGVycnVwdGlvbnMgKGxpa2UgZXhpdC1hZnRl
ci1uLWZhaWx1cmVzIG9wdGlvbikuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9jb250cm9sbGVycy9sYXlvdXRfdGVzdF9ydW5uZXIucHk6CisgICAgICAgIChMYXlv
dXRUZXN0UnVubmVyLnJ1bl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weToKKyAgICAgICAgKE1hbmFnZXIucnVuKToK
KyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5f
cmVzdWx0cy5weToKKyAgICAgICAgKFRlc3RSdW5SZXN1bHRzLl9faW5pdF9fKToKKyAgICAgICAg
KiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5OgorICAg
ICAgICAobWFpbik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVu
X3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHk6CisgICAgICAgIChSdW5UZXN0LnRlc3Rf
a2V5Ym9hcmRfaW50ZXJydXB0KToKKyAgICAgICAgKE1haW5UZXN0LnRlc3RfZXhjZXB0aW9uX2hh
bmRsaW5nKToKKwogMjAxMy0wOS0yNyAgQWxsYW4gU2FuZGZlbGQgSmVuc2VuICA8YWxsYW4uamVu
c2VuQGRpZ2lhLmNvbT4KIAogICAgICAgICBbUXRdIEZpeCBmb3JjZV9zdGF0aWNfbGlic19hc19z
aGFyZWQgaW4gV2ViS2l0MgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbGF5b3V0X3Rlc3RfcnVubmVyLnB5
CmluZGV4IDNmZDQwZTM4ZmVjNzY2OGRhNzJkMjdjNjk4Yjg3MmVkODhkYjNjZWIuLjYxMjk4NDIz
MWQ1MjI4OTgxN2E5NzM5ZWRlZmE0MGIzYWE1NDU1NTEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL2xheW91dF90ZXN0X3J1bm5lci5w
eQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9s
YXlvdXRfdGVzdF9ydW5uZXIucHkKQEAgLTEzNiw3ICsxMzYsNyBAQCBjbGFzcyBMYXlvdXRUZXN0
UnVubmVyKG9iamVjdCk6CiAgICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAgICAg
ICAgICAgIHNlbGYuX3ByaW50ZXIuZmx1c2goKQogICAgICAgICAgICAgc2VsZi5fcHJpbnRlci53
cml0ZWxuKCdJbnRlcnJ1cHRlZCwgZXhpdGluZyAuLi4nKQotICAgICAgICAgICAgcmFpc2UKKyAg
ICAgICAgICAgIHJ1bl9yZXN1bHRzLmtleWJvYXJkX2ludGVycnVwdGVkID0gVHJ1ZQogICAgICAg
ICBleGNlcHQgRXhjZXB0aW9uLCBlOgogICAgICAgICAgICAgX2xvZy5kZWJ1ZygnJXMoIiVzIikg
cmFpc2VkLCBleGl0aW5nJyAlIChlLl9fY2xhc3NfXy5fX25hbWVfXywgc3RyKGUpKSkKICAgICAg
ICAgICAgIHJhaXNlCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQppbmRleCA2YmRkN2U5NTI3Yzg0MDA5OGVi
ODkxM2I3YWMxOTBhYzAyYWU0NmU4Li5hNzU0OGNmZWJlMjE5OGE3NzkzZGU2ZTY0NjBhMTQ5ZTU0
N2NhMmVhIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9j
b250cm9sbGVycy9tYW5hZ2VyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKQEAgLTUwLDYgKzUwLDcgQEAgZnJvbSB3ZWJr
aXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2V4cGVjdGF0aW9ucwogZnJvbSB3
ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzIGltcG9ydCB0ZXN0X2ZhaWx1cmVzCiBmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfcnVuX3Jlc3VsdHMKIGZyb20g
d2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X2lucHV0IGltcG9ydCBUZXN0SW5wdXQK
K2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0X3J1bl9yZXN1bHRzIGltcG9y
dCBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUwogCiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19u
YW1lX18pCiAKQEAgLTE5OSw3ICsyMDAsOSBAQCBjbGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAgICAg
ICAgICAgICAgICAgaW50KHNlbGYuX29wdGlvbnMuY2hpbGRfcHJvY2Vzc2VzKSwgcmV0cnlpbmc9
RmFsc2UpCiAKICAgICAgICAgICAgIHRlc3RzX3RvX3JldHJ5ID0gc2VsZi5fdGVzdHNfdG9fcmV0
cnkoaW5pdGlhbF9yZXN1bHRzLCBpbmNsdWRlX2NyYXNoZXM9c2VsZi5fcG9ydC5zaG91bGRfcmV0
cnlfY3Jhc2hlcygpKQotICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5yZXRyeV9mYWlsdXJl
cyBhbmQgdGVzdHNfdG9fcmV0cnkgYW5kIG5vdCBpbml0aWFsX3Jlc3VsdHMuaW50ZXJydXB0ZWQ6
CisgICAgICAgICAgICAjIERvbid0IHJldHJ5IGZhaWx1cmVzIHdoZW4gaW50ZXJydXB0ZWQgYnkg
dXNlciBvciBmYWlsdXJlcyBsaW1pdCBleGNlcHRpb24uCisgICAgICAgICAgICByZXRyeV9mYWls
dXJlcyA9IHNlbGYuX29wdGlvbnMucmV0cnlfZmFpbHVyZXMgYW5kIG5vdCAoaW5pdGlhbF9yZXN1
bHRzLmludGVycnVwdGVkIG9yIGluaXRpYWxfcmVzdWx0cy5rZXlib2FyZF9pbnRlcnJ1cHRlZCkK
KyAgICAgICAgICAgIGlmIHJldHJ5X2ZhaWx1cmVzIGFuZCB0ZXN0c190b19yZXRyeToKICAgICAg
ICAgICAgICAgICBlbmFibGVkX3BpeGVsX3Rlc3RzX2luX3JldHJ5ID0gc2VsZi5fZm9yY2VfcGl4
ZWxfdGVzdHNfaWZfbmVlZGVkKCkKIAogICAgICAgICAgICAgICAgIF9sb2cuaW5mbygnJykKQEAg
LTIzMSwxOCArMjM0LDIxIEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAgICAgICAgIHJl
c3VsdHNfaW5jbHVkaW5nX3Bhc3NlcyA9IHRlc3RfcnVuX3Jlc3VsdHMuc3VtbWFyaXplX3Jlc3Vs
dHMoc2VsZi5fcG9ydCwgc2VsZi5fZXhwZWN0YXRpb25zLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5
X3Jlc3VsdHMsIGVuYWJsZWRfcGl4ZWxfdGVzdHNfaW5fcmV0cnksIGluY2x1ZGVfcGFzc2VzPVRy
dWUpCiAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfcmVzdWx0cyhlbmRfdGltZSAtIHN0YXJ0
X3RpbWUsIGluaXRpYWxfcmVzdWx0cywgc3VtbWFyaXplZF9yZXN1bHRzKQogCisgICAgICAgIGV4
aXRfY29kZSA9IC0xCiAgICAgICAgIGlmIG5vdCBzZWxmLl9vcHRpb25zLmRyeV9ydW46CiAgICAg
ICAgICAgICBzZWxmLl9wb3J0LnByaW50X2xlYWtzX3N1bW1hcnkoKQogICAgICAgICAgICAgc2Vs
Zi5fdXBsb2FkX2pzb25fZmlsZXMoc3VtbWFyaXplZF9yZXN1bHRzLCBpbml0aWFsX3Jlc3VsdHMs
IHJlc3VsdHNfaW5jbHVkaW5nX3Bhc3Nlcywgc3RhcnRfdGltZSwgZW5kX3RpbWUpCiAKICAgICAg
ICAgICAgIHJlc3VsdHNfcGF0aCA9IHNlbGYuX2ZpbGVzeXN0ZW0uam9pbihzZWxmLl9yZXN1bHRz
X2RpcmVjdG9yeSwgInJlc3VsdHMuaHRtbCIpCiAgICAgICAgICAgICBzZWxmLl9jb3B5X3Jlc3Vs
dHNfaHRtbF9maWxlKHJlc3VsdHNfcGF0aCkKLSAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMu
c2hvd19yZXN1bHRzIGFuZCAoaW5pdGlhbF9yZXN1bHRzLnVuZXhwZWN0ZWRfcmVzdWx0c19ieV9u
YW1lIG9yCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChz
ZWxmLl9vcHRpb25zLmZ1bGxfcmVzdWx0c19odG1sIGFuZCBpbml0aWFsX3Jlc3VsdHMudG90YWxf
ZmFpbHVyZXMpKToKLSAgICAgICAgICAgICAgICBzZWxmLl9wb3J0LnNob3dfcmVzdWx0c19odG1s
X2ZpbGUocmVzdWx0c19wYXRoKQotCi0gICAgICAgIHJldHVybiB0ZXN0X3J1bl9yZXN1bHRzLlJ1
bkRldGFpbHMoc2VsZi5fcG9ydC5leGl0X2NvZGVfZnJvbV9zdW1tYXJpemVkX3Jlc3VsdHMoc3Vt
bWFyaXplZF9yZXN1bHRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBzdW1tYXJpemVkX3Jlc3VsdHMsIGluaXRpYWxfcmVzdWx0cywgcmV0cnlfcmVzdWx0cywg
ZW5hYmxlZF9waXhlbF90ZXN0c19pbl9yZXRyeSkKKyAgICAgICAgICAgIGlmIGluaXRpYWxfcmVz
dWx0cy5rZXlib2FyZF9pbnRlcnJ1cHRlZDoKKyAgICAgICAgICAgICAgICBleGl0X2NvZGUgPSBJ
TlRFUlJVUFRFRF9FWElUX1NUQVRVUworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBpZiBzZWxmLl9vcHRpb25zLnNob3dfcmVzdWx0cyBhbmQgKGluaXRpYWxfcmVzdWx0cy51bmV4
cGVjdGVkX3Jlc3VsdHNfYnlfbmFtZSBvcgorICAgICAgICAgICAgICAgICAgICAoc2VsZi5fb3B0
aW9ucy5mdWxsX3Jlc3VsdHNfaHRtbCBhbmQgaW5pdGlhbF9yZXN1bHRzLnRvdGFsX2ZhaWx1cmVz
KSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BvcnQuc2hvd19yZXN1bHRzX2h0bWxfZmls
ZShyZXN1bHRzX3BhdGgpCisgICAgICAgICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fcG9ydC5l
eGl0X2NvZGVfZnJvbV9zdW1tYXJpemVkX3Jlc3VsdHMoc3VtbWFyaXplZF9yZXN1bHRzKQorICAg
ICAgICByZXR1cm4gdGVzdF9ydW5fcmVzdWx0cy5SdW5EZXRhaWxzKGV4aXRfY29kZSwgc3VtbWFy
aXplZF9yZXN1bHRzLCBpbml0aWFsX3Jlc3VsdHMsIHJldHJ5X3Jlc3VsdHMsIGVuYWJsZWRfcGl4
ZWxfdGVzdHNfaW5fcmV0cnkpCiAKICAgICBkZWYgX3J1bl90ZXN0cyhzZWxmLCB0ZXN0c190b19y
dW4sIHRlc3RzX3RvX3NraXAsIHJlcGVhdF9lYWNoLCBpdGVyYXRpb25zLCBudW1fd29ya2Vycywg
cmV0cnlpbmcpOgogICAgICAgICBuZWVkc19odHRwID0gYW55KHNlbGYuX2lzX2h0dHBfdGVzdCh0
ZXN0KSBmb3IgdGVzdCBpbiB0ZXN0c190b19ydW4pCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L2xheW91dF90ZXN0cy9tb2RlbHMvdGVzdF9ydW5fcmVzdWx0cy5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5
CmluZGV4IGZiMDM1NzI4NzU5MjYxODM5NDk3NDVhODNhN2Q5MDJkN2QwZDc5NmYuLjY0YTA2MGM0
NDhmZWVlNzhjMmZhZjNmNTNlMWU5MWMxOWZiMWYzOGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1bHRzLnB5CisrKyBi
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL21vZGVscy90ZXN0X3J1bl9yZXN1
bHRzLnB5CkBAIC0yOCw2ICsyOCw3IEBACiAjIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAKIGltcG9ydCBsb2dnaW5n
CitpbXBvcnQgc2lnbmFsCiAKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBpbXBv
cnQgdGVzdF9leHBlY3RhdGlvbnMKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscyBp
bXBvcnQgdGVzdF9mYWlsdXJlcwpAQCAtMzUsNiArMzYsNyBAQCBmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5tb2RlbHMgaW1wb3J0IHRlc3RfZmFpbHVyZXMKIAogX2xvZyA9IGxvZ2dpbmcuZ2V0
TG9nZ2VyKF9fbmFtZV9fKQogCitJTlRFUlJVUFRFRF9FWElUX1NUQVRVUyA9IHNpZ25hbC5TSUdJ
TlQgKyAxMjgKIAogY2xhc3MgVGVzdFJ1blJlc3VsdHMob2JqZWN0KToKICAgICBkZWYgX19pbml0
X18oc2VsZiwgZXhwZWN0YXRpb25zLCBudW1fdGVzdHMpOgpAQCAtNjAsNiArNjIsNyBAQCBjbGFz
cyBUZXN0UnVuUmVzdWx0cyhvYmplY3QpOgogICAgICAgICAgICAgc2VsZi50ZXN0c19ieV90aW1l
bGluZVt0aW1lbGluZV0gPSBleHBlY3RhdGlvbnMuZ2V0X3Rlc3RzX3dpdGhfdGltZWxpbmUodGlt
ZWxpbmUpCiAgICAgICAgIHNlbGYuc2xvd190ZXN0cyA9IHNldCgpCiAgICAgICAgIHNlbGYuaW50
ZXJydXB0ZWQgPSBGYWxzZQorICAgICAgICBzZWxmLmtleWJvYXJkX2ludGVycnVwdGVkID0gRmFs
c2UKIAogICAgIGRlZiBhZGQoc2VsZiwgdGVzdF9yZXN1bHQsIGV4cGVjdGVkLCB0ZXN0X2lzX3Ns
b3cpOgogICAgICAgICBzZWxmLnRlc3RzX2J5X2V4cGVjdGF0aW9uW3Rlc3RfcmVzdWx0LnR5cGVd
LmFkZCh0ZXN0X3Jlc3VsdC50ZXN0X25hbWUpCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0cy5weQppbmRleCBkNTc0OGRiNjVk
MmJlODlkYmQyZTg3NTBmN2NmZjU3MTMxMGZhNzAzLi5kNzY4NGZmYTRiYmYxOTY4NjgyZTAzODdk
NzU2ZjNkNGE0YWE0ZmQwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9ydW5fd2Via2l0X3Rlc3RzLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3J1bl93ZWJraXRfdGVzdHMucHkKQEAgLTMxLDEyICszMSwxMiBAQAogaW1w
b3J0IGxvZ2dpbmcKIGltcG9ydCBvcHRwYXJzZQogaW1wb3J0IG9zCi1pbXBvcnQgc2lnbmFsCiBp
bXBvcnQgc3lzCiBpbXBvcnQgdHJhY2ViYWNrCiAKIGZyb20gd2Via2l0cHkuY29tbW9uLmhvc3Qg
aW1wb3J0IEhvc3QKIGZyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLmNvbnRyb2xsZXJzLm1hbmFn
ZXIgaW1wb3J0IE1hbmFnZXIKK2Zyb20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLm1vZGVscy50ZXN0
X3J1bl9yZXN1bHRzIGltcG9ydCBJTlRFUlJVUFRFRF9FWElUX1NUQVRVUwogZnJvbSB3ZWJraXRw
eS5wb3J0IGltcG9ydCBjb25maWd1cmF0aW9uX29wdGlvbnMsIHBsYXRmb3JtX29wdGlvbnMKIGZy
b20gd2Via2l0cHkubGF5b3V0X3Rlc3RzLnZpZXdzIGltcG9ydCBidWlsZGJvdF9yZXN1bHRzCiBm
cm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy52aWV3cyBpbXBvcnQgcHJpbnRpbmcKQEAgLTQ1LDkg
KzQ1LDYgQEAgZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMudmlld3MgaW1wb3J0IHByaW50aW5n
CiBfbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoX19uYW1lX18pCiAKIAotIyBUaGlzIG1pcnJvcnMg
d2hhdCB0aGUgc2hlbGwgbm9ybWFsbHkgZG9lcy4KLUlOVEVSUlVQVEVEX0VYSVRfU1RBVFVTID0g
c2lnbmFsLlNJR0lOVCArIDEyOAotCiAjIFRoaXMgaXMgYSByYW5kb21seSBjaG9zZW4gZXhpdCBj
b2RlIHRoYXQgY2FuIGJlIHRlc3RlZCBhZ2FpbnN0IHRvCiAjIGluZGljYXRlIHRoYXQgYW4gdW5l
eHBlY3RlZCBleGNlcHRpb24gb2NjdXJyZWQuCiBFWENFUFRJT05BTF9FWElUX1NUQVRVUyA9IDI1
NApAQCAtNzgsMTEgKzc1LDEyIEBAIGRlZiBtYWluKGFyZ3YsIHN0ZG91dCwgc3RkZXJyKToKIAog
ICAgIHRyeToKICAgICAgICAgcnVuX2RldGFpbHMgPSBydW4ocG9ydCwgb3B0aW9ucywgYXJncywg
c3RkZXJyKQotICAgICAgICBpZiBydW5fZGV0YWlscy5leGl0X2NvZGUgIT0gLTE6CisgICAgICAg
IGlmIHJ1bl9kZXRhaWxzLmV4aXRfY29kZSAhPSAtMSBhbmQgbm90IHJ1bl9kZXRhaWxzLmluaXRp
YWxfcmVzdWx0cy5rZXlib2FyZF9pbnRlcnJ1cHRlZDoKICAgICAgICAgICAgIGJvdF9wcmludGVy
ID0gYnVpbGRib3RfcmVzdWx0cy5CdWlsZEJvdFByaW50ZXIoc3Rkb3V0LCBvcHRpb25zLmRlYnVn
X3J3dF9sb2dnaW5nKQogICAgICAgICAgICAgYm90X3ByaW50ZXIucHJpbnRfcmVzdWx0cyhydW5f
ZGV0YWlscykKIAogICAgICAgICByZXR1cm4gcnVuX2RldGFpbHMuZXhpdF9jb2RlCisgICAgIyBX
ZSBzdGlsbCBuZWVkIHRvIGhhbmRsZSBLZXlib2FyZEludGVycnVwdCwgYXQgbGVhc3QgZm9yIHdl
YmtpdHB5IHVuaXR0ZXN0IGNhc2VzLgogICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKICAg
ICAgICAgcmV0dXJuIElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTCiAgICAgZXhjZXB0IEJhc2VFeGNl
cHRpb24gYXMgZToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3J1bl93ZWJraXRfdGVzdHNfaW50ZWdyYXRpb250ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkK
aW5kZXggYzhkMzQ5NWU0YTI1NTFkNWUyZWExZGQ4ODUxM2YwNTc2MGVmNDNkYi4uNzA5YTE3ZDBm
ZDJkMzg1NjI3YmJjMmM4YjhlOWU2OTgwN2JlMmI0OCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90ZXN0c19pbnRlZ3JhdGlvbnRlc3Qu
cHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcnVuX3dlYmtpdF90
ZXN0c19pbnRlZ3JhdGlvbnRlc3QucHkKQEAgLTUwLDYgKzUwLDcgQEAgZnJvbSB3ZWJraXRweS5j
b21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAogCiBmcm9tIHdlYmtpdHB5IGltcG9ydCBw
b3J0CiBmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cyBpbXBvcnQgcnVuX3dlYmtpdF90ZXN0cwor
ZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMubW9kZWxzLnRlc3RfcnVuX3Jlc3VsdHMgaW1wb3J0
IElOVEVSUlVQVEVEX0VYSVRfU1RBVFVTCiBmcm9tIHdlYmtpdHB5LnBvcnQgaW1wb3J0IFBvcnQK
IGZyb20gd2Via2l0cHkucG9ydCBpbXBvcnQgdGVzdAogZnJvbSB3ZWJraXRweS50ZXN0LnNraXAg
aW1wb3J0IHNraXBfaWYKQEAgLTI5MSwxMSArMjkyLDEyIEBAIGNsYXNzIFJ1blRlc3QodW5pdHRl
c3QuVGVzdENhc2UsIFN0cmVhbVRlc3RpbmdNaXhpbik6CiAgICAgZGVmIHRlc3Rfa2V5Ym9hcmRf
aW50ZXJydXB0KHNlbGYpOgogICAgICAgICAjIE5vdGUgdGhhdCB0aGlzIGFsc28gdGVzdHMgcnVu
bmluZyBhIHRlc3QgbWFya2VkIGFzIFNLSVAgaWYKICAgICAgICAgIyB5b3Ugc3BlY2lmeSBpdCBl
eHBsaWNpdGx5LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlib2FyZEludGVycnVwdCwg
bG9nZ2luZ19ydW4sIFsnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcsICctLWNoaWxk
LXByb2Nlc3NlcycsICcxJ10sIHRlc3RzX2luY2x1ZGVkPVRydWUpCisgICAgICAgIGRldGFpbHMs
IF8sIF8gPSBsb2dnaW5nX3J1bihbJ2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCAn
LS1jaGlsZC1wcm9jZXNzZXMnLCAnMSddLCB0ZXN0c19pbmNsdWRlZD1UcnVlKQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFsKGRldGFpbHMuZXhpdF9jb2RlLCBJTlRFUlJVUFRFRF9FWElUX1NUQVRV
UykKIAogICAgICAgICBpZiBzZWxmLnNob3VsZF90ZXN0X3Byb2Nlc3NlczoKLSAgICAgICAgICAg
IHNlbGYuYXNzZXJ0UmFpc2VzKEtleWJvYXJkSW50ZXJydXB0LCBsb2dnaW5nX3J1biwKLSAgICAg
ICAgICAgICAgICBbJ2ZhaWx1cmVzL2V4cGVjdGVkL2tleWJvYXJkLmh0bWwnLCAncGFzc2VzL3Rl
eHQuaHRtbCcsICctLWNoaWxkLXByb2Nlc3NlcycsICcyJywgJy0tZm9yY2UnXSwgdGVzdHNfaW5j
bHVkZWQ9VHJ1ZSwgc2hhcmVkX3BvcnQ9RmFsc2UpCisgICAgICAgICAgICBfLCByZWd1bGFyX291
dHB1dCwgXyA9IGxvZ2dpbmdfcnVuKFsnZmFpbHVyZXMvZXhwZWN0ZWQva2V5Ym9hcmQuaHRtbCcs
ICdwYXNzZXMvdGV4dC5odG1sJywgJy0tY2hpbGQtcHJvY2Vzc2VzJywgJzInLCAnLS1mb3JjZSdd
LCB0ZXN0c19pbmNsdWRlZD1UcnVlLCBzaGFyZWRfcG9ydD1GYWxzZSkKKyAgICAgICAgICAgIHNl
bGYuYXNzZXJ0VHJ1ZShhbnkoWydJbnRlcnJ1cHRlZCwgZXhpdGluZycgaW4gbGluZSBmb3IgbGlu
ZSBpbiByZWd1bGFyX291dHB1dC5idWZsaXN0XSkpCiAKICAgICBkZWYgdGVzdF9ub190ZXN0c19m
b3VuZChzZWxmKToKICAgICAgICAgZGV0YWlscywgZXJyLCBfID0gbG9nZ2luZ19ydW4oWydyZXNv
dXJjZXMnXSwgdGVzdHNfaW5jbHVkZWQ9VHJ1ZSkKQEAgLTk1NSw3ICs5NTcsNyBAQCBjbGFzcyBN
YWluVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJ1
bl93ZWJraXRfdGVzdHMucnVuID0gaW50ZXJydXB0aW5nX3J1bgogICAgICAgICAgICAgcmVzID0g
cnVuX3dlYmtpdF90ZXN0cy5tYWluKFtdLCBzdGRvdXQsIHN0ZGVycikKLSAgICAgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWwocmVzLCBydW5fd2Via2l0X3Rlc3RzLklOVEVSUlVQVEVEX0VYSVRfU1RB
VFVTKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIElOVEVSUlVQVEVEX0VYSVRf
U1RBVFVTKQogCiAgICAgICAgICAgICBydW5fd2Via2l0X3Rlc3RzLnJ1biA9IHN1Y2Nlc3NmdWxf
cnVuCiAgICAgICAgICAgICByZXMgPSBydW5fd2Via2l0X3Rlc3RzLm1haW4oWyctLXBsYXRmb3Jt
JywgJ3Rlc3QnXSwgc3Rkb3V0LCBzdGRlcnIpCg==
</data>
<flag name="review"
          id="235572"
          type_id="1"
          status="+"
          setter="ossy"
    />
          </attachment>
      

    </bug>

</bugzilla>