<?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>103268</bug_id>
          
          <creation_ts>2012-11-26 09:26:18 -0800</creation_ts>
          <short_desc>Make it possible to run performance tests on Chromium Android</short_desc>
          <delta_ts>2016-01-10 06:49:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Peter Beverloo">peter</reporter>
          <assigned_to name="Peter Beverloo">peter</assigned_to>
          <cc>18runt88</cc>
    
    <cc>abarth</cc>
    
    <cc>bulach</cc>
    
    <cc>dpranke</cc>
    
    <cc>ojan</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>775547</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-26 09:26:18 -0800</bug_when>
    <thetext>Make it possible to run performance tests on Chromium Android</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775559</commentid>
    <comment_count>1</comment_count>
      <attachid>176019</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-26 09:35:21 -0800</bug_when>
    <thetext>Created attachment 176019
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775563</commentid>
    <comment_count>2</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-26 09:38:15 -0800</bug_when>
    <thetext>I&apos;m not happy about having to tell Port what kind of tests are being run, but the ChromiumAndroidPort uses this to forward the local requests to an external HTTP server. The forwarding is done in Android&apos;s platform_support, as shown in this patch:

https://codereview.chromium.org/11416182

That patch is required for this one to work, but I&apos;d like to be sure this approach is correct before landing it. Neither is blocked on the other.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775572</commentid>
    <comment_count>3</comment_count>
      <attachid>176019</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-26 09:46:14 -0800</bug_when>
    <thetext>Comment on attachment 176019
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:679
&gt; +            if self._port.running_perf_tests():

can you determine the directory from the command, rather than relying on a running_perf_tests() setting? As your fixme notes, it should be possible to run tests outside of LayoutTests/ and you might need a more generic way of handling this (through a directory map or something).

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:93
&gt; +                return False

It seems like logging to stderr shouldn&apos;t cause a test to fail on any platform, but I don&apos;t really know if that&apos;s by design or not. We should confirm w/ rniwa.

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:66
&gt; +        self._port.set_running_perf_tests(True)

see comment above; I&apos;m hoping this isn&apos;t actually needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775583</commentid>
    <comment_count>4</comment_count>
      <attachid>176019</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-26 09:53:49 -0800</bug_when>
    <thetext>Comment on attachment 176019
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:679
&gt;&gt; +            if self._port.running_perf_tests():
&gt; 
&gt; can you determine the directory from the command, rather than relying on a running_perf_tests() setting? As your fixme notes, it should be possible to run tests outside of LayoutTests/ and you might need a more generic way of handling this (through a directory map or something).

We could check the path itself:

if &apos;PerformanceTests&apos; in command:
    ..perf..
else:
    ..layout..

This still wouldn&apos;t address the FIXME. When the command lies outside of the LayoutTests directory it simply can&apos;t load the page, resulting in an empty DOM.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775598</commentid>
    <comment_count>5</comment_count>
      <attachid>176019</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-26 10:05:00 -0800</bug_when>
    <thetext>Comment on attachment 176019
Patch

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:134
&gt;  DEVICE_LAYOUT_TESTS_DIR = DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit/LayoutTests/&apos;
&gt; +DEVICE_PERF_TESTS_DIR = DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit/PerformanceTests/&apos;

This is crazy. You should be able to dynamically resolve the path by replacing the test path&apos;s root by DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit&apos;. Also, you should be using filesystem.join instead.
r- because of this.

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:266
&gt; +    def fail_perf_tests_on_stderr(self):
&gt; +        &quot;&quot;&quot;Chromium for Android can have warnings in the stderr output for not yet
&gt; +        implemented features. There is no reason to fail because of them.&quot;&quot;&quot;
&gt; +        return False
&gt; +

Please fix all those warnings before turning on performance tests.
Since webkit-perf.appspot.com is completely broken now, there isn&apos;t much point in rushing to land this patch.
r- because of this as well.

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:93
&gt;&gt; +                return False
&gt; 
&gt; It seems like logging to stderr shouldn&apos;t cause a test to fail on any platform, but I don&apos;t really know if that&apos;s by design or not. We should confirm w/ rniwa.

By design, a performance test fails if we see any line we don&apos;t recognize. That includes any line in stdout and sterr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775602</commentid>
    <comment_count>6</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-26 10:07:04 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 176019 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=176019&amp;action=review
&gt; 
&gt; &gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:679
&gt; &gt;&gt; +            if self._port.running_perf_tests():
&gt; &gt; 
&gt; &gt; can you determine the directory from the command, rather than relying on a running_perf_tests() setting? As your fixme notes, it should be possible to run tests outside of LayoutTests/ and you might need a more generic way of handling this (through a directory map or something).
&gt; 
&gt; We could check the path itself:
&gt; 
&gt; if &apos;PerformanceTests&apos; in command:
&gt;     ..perf..
&gt; else:
&gt;     ..layout..
&gt; 

Right, that&apos;s what I had in mind.

&gt; This still wouldn&apos;t address the FIXME. When the command lies outside of the LayoutTests directory it simply can&apos;t load the page, resulting in an empty DOM.

Yeah, I know, and I&apos;m not asking to fix that now, but, generally speaking, we should try to avoid making assumptions like &quot;all layout tests are under LayoutTests&quot;; that hasn&apos;t always been true.

The idea is that the Port class provides all the hooks needed to implement arbitrary lists of tests from anywhere, as long as they&apos;re all used consistently in a single Port implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775603</commentid>
    <comment_count>7</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-26 10:08:14 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; &gt; It seems like logging to stderr shouldn&apos;t cause a test to fail on any platform, but I don&apos;t really know if that&apos;s by design or not. We should confirm w/ rniwa.
&gt; 
&gt; By design, a performance test fails if we see any line we don&apos;t recognize. That includes any line in stdout and sterr.

Thanks for clarifying. This seems a little fragile and not consistent with how we do layout tests (where stdout fails but stderr generates warnings). Any downside to ignoring stderr output?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775607</commentid>
    <comment_count>8</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-26 10:10:43 -0800</bug_when>
    <thetext>(In reply to comment #7)
&gt; (In reply to comment #5)
&gt; &gt; &gt; It seems like logging to stderr shouldn&apos;t cause a test to fail on any platform, but I don&apos;t really know if that&apos;s by design or not. We should confirm w/ rniwa.
&gt; &gt; 
&gt; &gt; By design, a performance test fails if we see any line we don&apos;t recognize. That includes any line in stdout and sterr.
&gt; 
&gt; Thanks for clarifying. This seems a little fragile and not consistent with how we do layout tests (where stdout fails but stderr generates warnings). Any downside to ignoring stderr output?

That&apos;s because layout tests have expected results. Performance tests don&apos;t. If we ignore any lines in stdout, then tests signal a failure on its own. If we ignore stderr, we might miss serious correctness failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775642</commentid>
    <comment_count>9</comment_count>
      <attachid>176019</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-26 10:44:20 -0800</bug_when>
    <thetext>Comment on attachment 176019
Patch

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

Thank you for the review so far! Please see my replies.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:134
&gt;&gt; +DEVICE_PERF_TESTS_DIR = DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit/PerformanceTests/&apos;
&gt; 
&gt; This is crazy. You should be able to dynamically resolve the path by replacing the test path&apos;s root by DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit&apos;. Also, you should be using filesystem.join instead.
&gt; r- because of this.

We need to manually forward the requests on the Chromium side. We cannot do this based on the &quot;LayoutTests&quot; or &quot;PerformanceTests&quot; prefix as there also are files in LayoutTests/ that are being pushed to the device (which would end up getting redirected if we&apos;d implement your proposal). See the comment above these lines.

See https://codereview.chromium.org/11416182/ for the PerformanceTests-specific addition.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:266
&gt;&gt; +
&gt; 
&gt; Please fix all those warnings before turning on performance tests.
&gt; Since webkit-perf.appspot.com is completely broken now, there isn&apos;t much point in rushing to land this patch.
&gt; r- because of this as well.

There are warnings and there will be warnings. Fixing them all is out of scope here.

&gt;&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:679
&gt;&gt;&gt;&gt; +            if self._port.running_perf_tests():
&gt;&gt;&gt; 
&gt;&gt;&gt; can you determine the directory from the command, rather than relying on a running_perf_tests() setting? As your fixme notes, it should be possible to run tests outside of LayoutTests/ and you might need a more generic way of handling this (through a directory map or something).
&gt;&gt; 
&gt;&gt; We could check the path itself:
&gt;&gt; 
&gt;&gt; if &apos;PerformanceTests&apos; in command:
&gt;&gt;     ..perf..
&gt;&gt; else:
&gt;&gt;     ..layout..
&gt;&gt; 
&gt;&gt; This still wouldn&apos;t address the FIXME. When the command lies outside of the LayoutTests directory it simply can&apos;t load the page, resulting in an empty DOM.
&gt; 
&gt; Right, that&apos;s what I had in mind.

Ok, I&apos;ll upload a new patch with that addition and won&apos;t mark it as review until rniwa&apos;s concerns have been addressed. This also allowed me to remove some more code from perftestsrunner.py.

&gt;&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:93
&gt;&gt;&gt; +                return False
&gt;&gt; 
&gt;&gt; It seems like logging to stderr shouldn&apos;t cause a test to fail on any platform, but I don&apos;t really know if that&apos;s by design or not. We should confirm w/ rniwa.
&gt; 
&gt; By design, a performance test fails if we see any line we don&apos;t recognize. That includes any line in stdout and sterr.

The stderr output is separate from stdout. The runner fails on *any* output in stderr. This makes the tests much too fragile on external factors, as the occasional warning will show up for Android. It&apos;s not worth failing all performance tests on completely unrelated warnings.

This is the current warning showing up:
[WARNING:proxy_service.cc(885)] PAC support disabled because there is no system implementation

I understand that this is not desirable for all ports, hence why I made it an option. They are still being logged, too.

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:66
&gt;&gt; +        self._port.set_running_perf_tests(True)
&gt; 
&gt; see comment above; I&apos;m hoping this isn&apos;t actually needed.

Removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775644</commentid>
    <comment_count>10</comment_count>
      <attachid>176031</attachid>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-26 10:45:45 -0800</bug_when>
    <thetext>Created attachment 176031
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775662</commentid>
    <comment_count>11</comment_count>
      <attachid>176019</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-26 10:52:56 -0800</bug_when>
    <thetext>Comment on attachment 176019
Patch

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

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:134
&gt;&gt;&gt; +DEVICE_PERF_TESTS_DIR = DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit/PerformanceTests/&apos;
&gt;&gt; 
&gt;&gt; This is crazy. You should be able to dynamically resolve the path by replacing the test path&apos;s root by DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit&apos;. Also, you should be using filesystem.join instead.
&gt;&gt; r- because of this.
&gt; 
&gt; We need to manually forward the requests on the Chromium side. We cannot do this based on the &quot;LayoutTests&quot; or &quot;PerformanceTests&quot; prefix as there also are files in LayoutTests/ that are being pushed to the device (which would end up getting redirected if we&apos;d implement your proposal). See the comment above these lines.
&gt; 
&gt; See https://codereview.chromium.org/11416182/ for the PerformanceTests-specific addition.

I understand that. What I&apos;m suggesting is to replace the postfix part (rootDirectory) of your path instead of hard-coding the full path to LayoutTests or PerformanceTests here.

&gt;&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:266
&gt;&gt;&gt; +
&gt;&gt; 
&gt;&gt; Please fix all those warnings before turning on performance tests.
&gt;&gt; Since webkit-perf.appspot.com is completely broken now, there isn&apos;t much point in rushing to land this patch.
&gt;&gt; r- because of this as well.
&gt; 
&gt; There are warnings and there will be warnings. Fixing them all is out of scope here.

Then supporting perf. tests on Android port is out of scope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775667</commentid>
    <comment_count>12</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-26 10:55:49 -0800</bug_when>
    <thetext>If there are specific warnings that are expected to persist on Android port, then we should hard-code those specific warnings in perf_test.py and ignore them manually. Ignoring all stderr is completely out of question.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775686</commentid>
    <comment_count>13</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-26 11:08:33 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #7)
&gt; &gt; (In reply to comment #5)
&gt; &gt; &gt; &gt; It seems like logging to stderr shouldn&apos;t cause a test to fail on any platform, but I don&apos;t really know if that&apos;s by design or not. We should confirm w/ rniwa.
&gt; &gt; &gt; 
&gt; &gt; &gt; By design, a performance test fails if we see any line we don&apos;t recognize. That includes any line in stdout and sterr.
&gt; &gt; 
&gt; &gt; Thanks for clarifying. This seems a little fragile and not consistent with how we do layout tests (where stdout fails but stderr generates warnings). Any downside to ignoring stderr output?
&gt; 
&gt; That&apos;s because layout tests have expected results. Performance tests don&apos;t. If we ignore any lines in stdout, then tests signal a failure on its own. If we ignore stderr, we might miss serious correctness failure.

I&apos;m not sure I follow you here. I get the part about stdout (I think), but why are we more sensitive to stderr output in perf tests than in layout tests? Wouldn&apos;t we be likely to generate the same sort of messages in either case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775690</commentid>
    <comment_count>14</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-26 11:12:27 -0800</bug_when>
    <thetext>(In reply to comment #13)
&gt; (In reply to comment #8)
&gt; &gt; 
&gt; &gt; That&apos;s because layout tests have expected results. Performance tests don&apos;t. If we ignore any lines in stdout, then tests signal a failure on its own. If we ignore stderr, we might miss serious correctness failure.
&gt; 
&gt; I&apos;m not sure I follow you here. I get the part about stdout (I think), but why are we more sensitive to stderr output in perf tests than in layout tests? Wouldn&apos;t we be likely to generate the same sort of messages in either case?

Yes but perf. tests&apos; output is not saved anywhere. The actual result is not compared with anything. So unless we fail the test, we can&apos;t tell if tests are passing (no stderr messages) or not.

If there are specific stderr messages we want to ignore, we should be hard-coding that in perf_test.py. However, it&apos;s hard to believe that there is no way to remove those superflous stderr messages in the first place.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775701</commentid>
    <comment_count>15</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-26 11:22:43 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; (In reply to comment #13)
&gt; &gt; (In reply to comment #8)
&gt; &gt; &gt; 
&gt; &gt; &gt; That&apos;s because layout tests have expected results. Performance tests don&apos;t. If we ignore any lines in stdout, then tests signal a failure on its own. If we ignore stderr, we might miss serious correctness failure.
&gt; &gt; 
&gt; &gt; I&apos;m not sure I follow you here. I get the part about stdout (I think), but why are we more sensitive to stderr output in perf tests than in layout tests? Wouldn&apos;t we be likely to generate the same sort of messages in either case?
&gt; 
&gt; Yes but perf. tests&apos; output is not saved anywhere. The actual result is not compared with anything. So unless we fail the test, we can&apos;t tell if tests are passing (no stderr messages) or not.
&gt; 

Without having really run the perf tests much or looked at the output, it feels to me like you&apos;re trying to be more careful about failures in the perf tests than we are in the layout tests (since we don&apos;t have the reference output, as you say). I wonder if this additional level of caution is justified or is just causing more unnecessary work.

That said, I tend to agree that we shouldn&apos;t be generating stderr warnings for any tests, period.

Perhaps we can get around this at the moment by filtering out the stderr messages in the android-specific driver run_test method for now and add a fixme to clean up the code later. I tend to agree with Peter that we shouldn&apos;t gate running the perf tests at all on android on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775710</commentid>
    <comment_count>16</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-26 11:32:39 -0800</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; 
&gt; &gt; Yes but perf. tests&apos; output is not saved anywhere. The actual result is not compared with anything. So unless we fail the test, we can&apos;t tell if tests are passing (no stderr messages) or not.
&gt; &gt; 
&gt; 
&gt; Without having really run the perf tests much or looked at the output, it feels to me like you&apos;re trying to be more careful about failures in the perf tests than we are in the layout tests (since we don&apos;t have the reference output, as you say). I wonder if this additional level of caution is justified or is just causing more unnecessary work.

I don&apos;t think there is any additional level of caution here. Tests with stderr are reported on the results page for layout tests.

&gt; Perhaps we can get around this at the moment by filtering out the stderr messages in the android-specific driver run_test method for now and add a fixme to clean up the code later. I tend to agree with Peter that we shouldn&apos;t gate running the perf tests at all on android on this.

That would be a better solution. This is a design issue with Android DRT that needs to be fixed, and I would not want to see us adding specific code to work around that in perf_test.py or perf_test_runner.py.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>775715</commentid>
    <comment_count>17</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-11-26 11:34:52 -0800</bug_when>
    <thetext>(In reply to comment #16)
&gt; (In reply to comment #15)
&gt; &gt; (In reply to comment #14)
&gt; &gt; &gt; 
&gt; &gt; &gt; Yes but perf. tests&apos; output is not saved anywhere. The actual result is not compared with anything. So unless we fail the test, we can&apos;t tell if tests are passing (no stderr messages) or not.
&gt; &gt; &gt; 
&gt; &gt; 
&gt; &gt; Without having really run the perf tests much or looked at the output, it feels to me like you&apos;re trying to be more careful about failures in the perf tests than we are in the layout tests (since we don&apos;t have the reference output, as you say). I wonder if this additional level of caution is justified or is just causing more unnecessary work.
&gt; 
&gt; I don&apos;t think there is any additional level of caution here. Tests with stderr are reported on the results page for layout tests.
&gt; 

Yeah, but that&apos;s basically ignored and doesn&apos;t cause a build step to either fail or generate warnings; if you don&apos;t have actual failures or flakiness, we don&apos;t generate a results.html at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777185</commentid>
    <comment_count>18</comment_count>
      <attachid>176031</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 13:49:22 -0800</bug_when>
    <thetext>Comment on attachment 176031
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftestsrunner.py:293
&gt; +        if port.requires_http_server():
&gt; +            port.start_http_server()

This leaks the HTTP server, but that&apos;s easy to fix.  Also, you need to pass requires_http to check_build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777186</commentid>
    <comment_count>19</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 13:51:03 -0800</bug_when>
    <thetext>&gt; Please fix all those warnings before turning on performance tests.

That seems like an unreasonable precondition for this pathc.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777193</commentid>
    <comment_count>20</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-27 13:53:33 -0800</bug_when>
    <thetext>(In reply to comment #19)
&gt; &gt; Please fix all those warnings before turning on performance tests.
&gt; 
&gt; That seems like an unreasonable precondition for this pathc.

It’s not. We wouldn’t know if a test passed or not if we ignore all stderr. I’m fine with hard-coding specific lines to ignore but ignoring the entirely of stderr is never okay.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777195</commentid>
    <comment_count>21</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 13:55:23 -0800</bug_when>
    <thetext>&gt; It’s not. We wouldn’t know if a test passed or not if we ignore all stderr.

What does it mean for a perf test to pass or fail?  I just want to know how long it took to run.

&gt; Then supporting perf. tests on Android port is out of scope.

I would like to run perf tests on Android locally.  It&apos;s clearly in scope for the WebKit project, regardless of the status of dashboard.

Requiring Peter to fix all warning messages everyone on chromium-android before being able to run the perf test is silly.  There&apos;s got to be a solution here that doesn&apos;t involve boiling the warning ocean.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777197</commentid>
    <comment_count>22</comment_count>
      <attachid>176031</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 13:56:37 -0800</bug_when>
    <thetext>Comment on attachment 176031
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:91
&gt;              _log.error(&apos;error: %s\n%s&apos; % (self.test_name(), output.error))

We&apos;re already logging the error here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777201</commentid>
    <comment_count>23</comment_count>
      <attachid>176031</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-27 14:00:15 -0800</bug_when>
    <thetext>Comment on attachment 176031
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:91
&gt;&gt;              _log.error(&apos;error: %s\n%s&apos; % (self.test_name(), output.error))
&gt; 
&gt; We&apos;re already logging the error here.

Right.

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:93
&gt; +            if not self._port.fail_perf_tests_on_stderr():
&gt; +                return False

That’s why we should never add the line below. If you’re only interested in running perf. tests locally then it shouldn’t matter whether run-perf-tests exits non-zero exit code or not.
I don’t object to this patch, if we removed these two lines so that run-perf-tests continues to fail on stderr.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777203</commentid>
    <comment_count>24</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 14:01:11 -0800</bug_when>
    <thetext>Ok.  I&apos;ll post a version that doesn&apos;t mess with stderr.  Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777204</commentid>
    <comment_count>25</comment_count>
      <attachid>176335</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 14:02:07 -0800</bug_when>
    <thetext>Created attachment 176335
not yet tested</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777205</commentid>
    <comment_count>26</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-27 14:02:41 -0800</bug_when>
    <thetext>(In reply to comment #24)
&gt; Ok.  I&apos;ll post a version that doesn&apos;t mess with stderr.  Thanks!

Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777219</commentid>
    <comment_count>27</comment_count>
      <attachid>176335</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-27 14:18:34 -0800</bug_when>
    <thetext>Comment on attachment 176335
not yet tested

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

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:677
&gt; +            if &apos;PerformanceTests&apos; in command:
&gt; +                command = DEVICE_PERF_TESTS_DIR + self._port.relative_test_filename(command.split(&apos;PerformanceTests&apos;)[1])
&gt; +            else:
&gt; +                command = DEVICE_LAYOUT_TESTS_DIR + self._port.relative_test_filename(command)

As I commented on the previous patch, we should be able to swap-out the root directory part of command by DEVICE_SOURCE_ROOT_DIR + &apos;third_party/WebKit&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777229</commentid>
    <comment_count>28</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 14:26:16 -0800</bug_when>
    <thetext>Yes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777248</commentid>
    <comment_count>29</comment_count>
      <attachid>176344</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 14:52:19 -0800</bug_when>
    <thetext>Created attachment 176344
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777249</commentid>
    <comment_count>30</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 14:52:55 -0800</bug_when>
    <thetext>@rniwa, there&apos;s still an issue with stderr, but we can discuss that separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777252</commentid>
    <comment_count>31</comment_count>
      <attachid>176344</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-11-27 14:59:07 -0800</bug_when>
    <thetext>Comment on attachment 176344
Patch

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

&gt; Tools/ChangeLog:11
&gt; +        on the Â Chromium port for Android. There are a few things I had to do

&quot;Â&quot;

&gt; Tools/Scripts/webkitpy/layout_tests/port/chromium_android.py:674
&gt; +            relative_test_filename = fs.relpath(command, fs.dirname(self._port.layout_tests_dir()))

This doesn’t work for performance tests, does it? (since it starts in PerformanceTests).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777256</commentid>
    <comment_count>32</comment_count>
      <attachid>176346</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 15:02:14 -0800</bug_when>
    <thetext>Created attachment 176346
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777272</commentid>
    <comment_count>33</comment_count>
      <attachid>176346</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 15:27:53 -0800</bug_when>
    <thetext>Comment on attachment 176346
Patch for landing

Clearing flags on attachment: 176346

Committed r135930: &lt;http://trac.webkit.org/changeset/135930&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777273</commentid>
    <comment_count>34</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-11-27 15:27:59 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>777316</commentid>
    <comment_count>35</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-11-27 16:10:25 -0800</bug_when>
    <thetext>I posted a followup patch dealing with the stderr issue in bug 103462.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>778016</commentid>
    <comment_count>36</comment_count>
    <who name="Peter Beverloo">peter</who>
    <bug_when>2012-11-28 10:15:02 -0800</bug_when>
    <thetext>Thank you for landing the patch, Adam!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176019</attachid>
            <date>2012-11-26 09:35:21 -0800</date>
            <delta_ts>2012-11-26 10:52:56 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103268-20121126173259.patch</filename>
            <type>text/plain</type>
            <size>10236</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzE5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2NjOWM3ODA3YzBhZDViODQwZDRkMjZhMjFmNWNlOGUx
YmQ2OWFlYy4uNGI4YzI1MjE3MTQwMGY5NzU4ZmMwY2MwZjU5OTAyNmJkNGNkZDA2OCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3
IEBACisyMDEyLTExLTI2ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBwZXJmb3JtYW5jZSB0ZXN0cyBvbiBDaHJv
bWl1bSBBbmRyb2lkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDMyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJ1biBXZWJLaXQgcGVyZm9ybWFu
Y2UgdGVzdHMgb24gdGhlCisgICAgICAgIENocm9taXVtIHBvcnQgZm9yIEFuZHJvaWQuIFRoZXJl
IGFyZSBhIGZldyB0aGluZ3MgSSBoYWQgdG8gZG8gaW4gb3JkZXIKKyAgICAgICAgdG8gbWFrZSB0
aGlzIGhhcHBlbjoKKworICAgICAgICAxKSBUaGUgd29ya2VyIG51bWJlciB3aGVuIGNyZWF0aW5n
IGEgZHJpdmVyIGZvciBhIHBvcnQgaXMgemVyby1iYXNlZAorICAgICAgICAgICBmb3IgbGF5b3V0
IHRlc3RzIGFuZCBlbHNld2hlcmUuIEFuZHJvaWQgdXNlcyB0aGlzIHRvIGRldGVybWluZQorICAg
ICAgICAgICB3aGljaCBkZXZpY2UgaXQgaGFzIHRvIHJ1biBvbiwgc28gbWFrZSBpdCB6ZXJvIGJh
c2VkIGZvciBwZXJmb3JtYW5jZQorICAgICAgICAgICB0ZXN0cyBhcyB3ZWxsLgorCisgICAgICAg
IDIpIFRlc3RzIGNhbiBoYXZlIHN0ZGVyciBvdXRwdXQgb24gQW5kcm9pZC4gVGhlcmUncyB0aGUg
b2NjYXNzaW9uYWwKKyAgICAgICAgICAgcHJvYmxlbSAodXN1YWxseSBub3QgaW1wbGVtZW50ZWQg
ZmVhdHVyZXMpIHRoYXQgZG9lcyB0aGlzLCBhbmQgaXQncworICAgICAgICAgICBub3Qgd29ydGgg
ZmFpbGluZyBhbGwgcGVyZm9ybWFuY2UgdGVzdHMgYmVjYXVzZSBvZiB0aGF0LiBUaGVyZQorICAg
ICAgICAgICBpcyBub3cgYSBuZXcgb3B0aW9uIG9uIFBvcnQgYWxsb3dpbmcgQW5kcm9pZCB0byBu
b3QgZmFpbCBvbiBzdGRlcnIuCisKKyAgICAgICAgMykgVGVzdHMgYXJlbid0IGF2YWlsYWJsZSBv
biB0aGUgQW5kcm9pZCBkZXZpY2UsIHNvIHdlIHN0YXJ0IGFuIEhUVFAKKyAgICAgICAgICAgc2Vy
dmVyIHRoYXQgc2VydmVzIHRoZSB0ZXN0cyB0byB0aGUgZGV2aWNlIG9yIGVtdWxhdG9yLgorCisg
ICAgICAgIEZvciB0aGlzIGxhc3QgYWRqdXN0bWVudCB0aGUgUG9ydCBjbGFzcyBoYXMgdG8ga25v
dyB3aGV0aGVyIGl0J3MgcnVubmluZworICAgICAgICBsYXlvdXQgb3IgcGVyZm9ybWFuY2UgdGVz
dHMsIGFzIHRoZSBwYXRoIGlzIGRpZmZlcmVudC4uCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHk6CisgICAgICAgIChQb3J0Ll9faW5pdF9fKToK
KyAgICAgICAgKFBvcnQuZmFpbF9wZXJmX3Rlc3RzX29uX3N0ZGVycik6CisgICAgICAgIChQb3J0
LnJ1bm5pbmdfcGVyZl90ZXN0cyk6CisgICAgICAgIChQb3J0KToKKyAgICAgICAgKFBvcnQuc2V0
X3J1bm5pbmdfcGVyZl90ZXN0cyk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lk
UG9ydC5zdGFydF9odHRwX3NlcnZlcik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0LmZh
aWxfcGVyZl90ZXN0c19vbl9zdGRlcnIpOgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lkRHJpdmVy
Ll9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5
L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5OgorICAgICAgICAoUGVyZlRlc3QucnVuX2Zh
aWxlZCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdHNydW5uZXIucHk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX19pbml0X18pOgorICAg
ICAgICAoUGVyZlRlc3RzUnVubmVyLl9jb2xsZWN0X3Rlc3RzKToKKyAgICAgICAgKFBlcmZUZXN0
c1J1bm5lci5fcnVuX3Rlc3RzX3NldCk6CisKIDIwMTItMTEtMjYgIEphZWh1biBMaW0gIDxsamFl
aHVuLmxpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBUZXh0IEF1dG9zaXppbmc6IEFkZCBUZXh0
IEF1dG9zaXppbmcgQVBJcyBmb3IgV0syCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKaW5kZXggOGM0NTc4ZGJmYTdjMzgzMmJmNWI3OTc4MDQw
MTE0NTkyZGEyZGJhOS4uMWFiOTQ1YTA2MTY0YzlhNzBiNjA5YWVhNmU5ZWU1YzJkY2RlZjk3OSAx
MDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNl
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5w
eQpAQCAtMTIwLDYgKzEyMCw3IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAgc2VsZi5f
aW1hZ2VfZGlmZmVyID0gTm9uZQogICAgICAgICBzZWxmLl9zZXJ2ZXJfcHJvY2Vzc19jb25zdHJ1
Y3RvciA9IHNlcnZlcl9wcm9jZXNzLlNlcnZlclByb2Nlc3MgICMgb3ZlcnJpZGFibGUgZm9yIHRl
c3RpbmcKICAgICAgICAgc2VsZi5faHR0cF9sb2NrID0gTm9uZSAgIyBGSVhNRTogV2h5IGRvZXMg
dGhpcyBsaXZlIG9uIHRoZSBwb3J0IG9iamVjdD8KKyAgICAgICAgc2VsZi5fcnVubmluZ19wZXJm
X3Rlc3RzID0gRmFsc2UKIAogICAgICAgICAjIFB5dGhvbidzIFBvcGVuIGhhcyBhIGJ1ZyB0aGF0
IGNhdXNlcyBhbnkgcGlwZXMgb3BlbmVkIHRvIGEKICAgICAgICAgIyBwcm9jZXNzIHRoYXQgY2Fu
J3QgYmUgZXhlY3V0ZWQgdG8gYmUgbGVha2VkLiAgU2luY2UgdGhpcwpAQCAtNzY3LDYgKzc2OCwx
MCBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAg
ICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgZmFpbF9wZXJmX3Rlc3RzX29uX3N0ZGVycihz
ZWxmKToKKyAgICAgICAgIiIiRmFpbCBwZXJmb3JtYW5jZSB0ZXN0cyB3aGVuIHRoZXJlIGlzIHN0
ZGVyciBvdXRwdXQuIiIiCisgICAgICAgIHJldHVybiBUcnVlCisKICAgICBkZWYgaXNfY2hyb21p
dW0oc2VsZik6CiAgICAgICAgIHJldHVybiBGYWxzZQogCkBAIC03OTcsNiArODAyLDEyIEBAIGNs
YXNzIFBvcnQob2JqZWN0KToKICAgICBkZWYgc2V0X29wdGlvbl9kZWZhdWx0KHNlbGYsIG5hbWUs
IGRlZmF1bHRfdmFsdWUpOgogICAgICAgICByZXR1cm4gc2VsZi5fb3B0aW9ucy5lbnN1cmVfdmFs
dWUobmFtZSwgZGVmYXVsdF92YWx1ZSkKIAorICAgIGRlZiBydW5uaW5nX3BlcmZfdGVzdHMoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9ydW5uaW5nX3BlcmZfdGVzdHMKKworICAgIGRlZiBz
ZXRfcnVubmluZ19wZXJmX3Rlc3RzKHNlbGYsIHJ1bm5pbmdfcGVyZl90ZXN0cyk6CisgICAgICAg
IHNlbGYuX3J1bm5pbmdfcGVyZl90ZXN0cyA9IHJ1bm5pbmdfcGVyZl90ZXN0cworCiAgICAgQG1l
bW9pemVkCiAgICAgZGVmIHBhdGhfdG9fdGVzdF9leHBlY3RhdGlvbnNfZmlsZShzZWxmKToKICAg
ICAgICAgIiIiVXBkYXRlIHRoZSB0ZXN0IGV4cGVjdGF0aW9ucyB0byB0aGUgcGFzc2VkLWluIHN0
cmluZy4KZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCBhMDc3ZGM5MmU0MmYwY2JlYjQ5NmQ5
YjZiMjIxMjI2OGVhNjA5YTNjLi4zMzQzMzFmN2MyMDg3MWI2YTljZjFhNzQ5MjJjOTdiZWY0ODUz
NzkzIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0
L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC02OCw3ICs2OCw4IEBAIFNDQUxJTkdf
R09WRVJOT1JTX1BBVFRFUk4gPSAiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1Ki9jcHVmcmVx
L3NjYWxpbmdfZ292ZXJuCiAjIEFsbCB0aGUgdGVzdCBjYXNlcyBhcmUgc3RpbGwgc2VydmVkIHRv
IER1bXBSZW5kZXJUcmVlIHRocm91Z2ggZmlsZSBwcm90b2NvbCwKICMgYnV0IHdlIHVzZSBhIGZp
bGUtdG8taHR0cCBmZWF0dXJlIHRvIGJyaWRnZSB0aGUgZmlsZSByZXF1ZXN0IHRvIGhvc3QncyBo
dHRwCiAjIHNlcnZlciB0byBnZXQgdGhlIHJlYWwgdGVzdCBmaWxlcyBhbmQgY29ycmVzcG9uZGlu
ZyByZXNvdXJjZXMuCi1URVNUX1BBVEhfUFJFRklYID0gJy9hbGwtdGVzdHMnCitMQVlPVVRfVEVT
VF9QQVRIX1BSRUZJWCA9ICcvYWxsLXRlc3RzJworUEVSRl9URVNUX1BBVEhfUFJFRklYID0gJy9h
bGwtcGVyZi10ZXN0cycKIAogIyBBbGwgcG9ydHMgdGhlIEFuZHJvaWQgZm9yd2FyZGVyIHRvIGZv
cndhcmQuCiAjIDgwMDAsIDgwODAgYW5kIDg0NDMgYXJlIGZvciBodHRwL2h0dHBzIHRlc3RzLgpA
QCAtMTMwLDYgKzEzMSw3IEBAIERFVklDRV9GT05UU19ESVIgPSBERVZJQ0VfRFJUX0RJUiArICdm
b250cy8nCiAjIDIuIHBvaW50aW5nIHRvIHNvbWUgZmlsZXMgdGhhdCBhcmUgcHVzaGVkIHRvIHRo
ZSBkZXZpY2UgZm9yIHRlc3RzIHRoYXQKICMgZG9uJ3Qgd29yayBvbiBmaWxlLW92ZXItaHR0cCAo
ZS5nLiBibG9iIHByb3RvY29sIHRlc3RzKS4KIERFVklDRV9MQVlPVVRfVEVTVFNfRElSID0gREVW
SUNFX1NPVVJDRV9ST09UX0RJUiArICd0aGlyZF9wYXJ0eS9XZWJLaXQvTGF5b3V0VGVzdHMvJwor
REVWSUNFX1BFUkZfVEVTVFNfRElSID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICd0aGlyZF9w
YXJ0eS9XZWJLaXQvUGVyZm9ybWFuY2VUZXN0cy8nCiAKICMgVGVzdCByZXNvdXJjZXMgdGhhdCBu
ZWVkIHRvIGJlIGFjY2Vzc2VkIGFzIGZpbGVzIGRpcmVjdGx5LgogIyBFYWNoIGl0ZW0gY2FuIGJl
IHRoZSByZWxhdGl2ZSBwYXRoIG9mIGEgZGlyZWN0b3J5IG9yIGEgZmlsZS4KQEAgLTI0Miw3ICsy
NDQsOCBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWRQb3J0KGNocm9taXVtLkNocm9taXVtUG9ydCk6
CiAgICAgZGVmIHN0YXJ0X2h0dHBfc2VydmVyKHNlbGYsIGFkZGl0aW9uYWxfZGlycz1Ob25lLCBu
dW1iZXJfb2Zfc2VydmVycz0wKToKICAgICAgICAgaWYgbm90IGFkZGl0aW9uYWxfZGlyczoKICAg
ICAgICAgICAgIGFkZGl0aW9uYWxfZGlycyA9IHt9Ci0gICAgICAgIGFkZGl0aW9uYWxfZGlyc1tU
RVNUX1BBVEhfUFJFRklYXSA9IHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpCisgICAgICAgIGFkZGl0
aW9uYWxfZGlyc1tQRVJGX1RFU1RfUEFUSF9QUkVGSVhdID0gc2VsZi5wZXJmX3Rlc3RzX2Rpcigp
CisgICAgICAgIGFkZGl0aW9uYWxfZGlyc1tMQVlPVVRfVEVTVF9QQVRIX1BSRUZJWF0gPSBzZWxm
LmxheW91dF90ZXN0c19kaXIoKQogICAgICAgICBzdXBlcihDaHJvbWl1bUFuZHJvaWRQb3J0LCBz
ZWxmKS5zdGFydF9odHRwX3NlcnZlcihhZGRpdGlvbmFsX2RpcnMsIG51bWJlcl9vZl9zZXJ2ZXJz
KQogCiAgICAgZGVmIGNyZWF0ZV9kcml2ZXIoc2VsZiwgd29ya2VyX251bWJlciwgbm9fdGltZW91
dD1GYWxzZSk6CkBAIC0yNTYsNiArMjU5LDExIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQo
Y2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICAgICAgIyBPdmVycmlkZSB0byByZXR1cm4gdGhl
IGFjdHVhbCBEdW1wUmVuZGVyVHJlZSBjb21tYW5kIGxpbmUuCiAgICAgICAgIHJldHVybiBzZWxm
LmNyZWF0ZV9kcml2ZXIoMCkuX2RydF9jbWRfbGluZShzZWxmLmdldF9vcHRpb24oJ3BpeGVsX3Rl
c3RzJyksIFtdKQogCisgICAgZGVmIGZhaWxfcGVyZl90ZXN0c19vbl9zdGRlcnIoc2VsZik6Cisg
ICAgICAgICIiIkNocm9taXVtIGZvciBBbmRyb2lkIGNhbiBoYXZlIHdhcm5pbmdzIGluIHRoZSBz
dGRlcnIgb3V0cHV0IGZvciBub3QgeWV0CisgICAgICAgIGltcGxlbWVudGVkIGZlYXR1cmVzLiBU
aGVyZSBpcyBubyByZWFzb24gdG8gZmFpbCBiZWNhdXNlIG9mIHRoZW0uIiIiCisgICAgICAgIHJl
dHVybiBGYWxzZQorCiAgICAgIyBPdmVycmlkZGVuIHByaXZhdGUgZnVuY3Rpb25zLgogCiAgICAg
ZGVmIF9idWlsZF9wYXRoKHNlbGYsICpjb21wcyk6CkBAIC02NjYsOSArNjc0LDEyIEBAIGNsYXNz
IENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVyKToKICAgICAgICAgY29tbWFuZCA9
IHN1cGVyKENocm9taXVtQW5kcm9pZERyaXZlciwgc2VsZikuX2NvbW1hbmRfZnJvbV9kcml2ZXJf
aW5wdXQoZHJpdmVyX2lucHV0KQogICAgICAgICBpZiBjb21tYW5kLnN0YXJ0c3dpdGgoJy8nKToK
ICAgICAgICAgICAgICMgQ29udmVydCB0aGUgaG9zdCBmaWxlIHBhdGggdG8gYSBkZXZpY2UgZmls
ZSBwYXRoLiBTZWUgY29tbWVudCBvZgotICAgICAgICAgICAgIyBERVZJQ0VfTEFZT1VUX1RFU1RT
X0RJUiBmb3IgZGV0YWlscy4KKyAgICAgICAgICAgICMgREVWSUNFX0xBWU9VVF9URVNUU19ESVIg
Zm9yIGRldGFpbHMuIFRoaXMgYWxzbyBhcHBsaWVzIHRvIHBlcmZvcm1hbmNlIHRlc3RzLgogICAg
ICAgICAgICAgIyBGSVhNRTogd2hhdCBoYXBwZW5zIGlmIGNvbW1hbmQgbGllcyBvdXRzaWRlIG9m
IHRoZSBsYXlvdXRfdGVzdHNfZGlyIG9uIHRoZSBob3N0PwotICAgICAgICAgICAgY29tbWFuZCA9
IERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgc2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVu
YW1lKGNvbW1hbmQpCisgICAgICAgICAgICBpZiBzZWxmLl9wb3J0LnJ1bm5pbmdfcGVyZl90ZXN0
cygpOgorICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBERVZJQ0VfUEVSRl9URVNUU19ESVIgKyBz
ZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoY29tbWFuZCkKKyAgICAgICAgICAgIGVs
c2U6CisgICAgICAgICAgICAgICAgY29tbWFuZCA9IERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsg
c2VsZi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGNvbW1hbmQpCiAgICAgICAgIHJldHVy
biBjb21tYW5kCiAKICAgICBkZWYgX3JlYWRfcHJvbXB0KHNlbGYsIGRlYWRsaW5lKToKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3Qu
cHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5
CmluZGV4IDllMmY4N2Q0N2UyNDg3MDM2Yzc5OGMzNTlmN2Q1M2MyZmM0MDJkMmYuLmI0NDU5MWIz
YmQwMmVhMGI3OWFmOTlhZGJkOTI0ZGQ4NmRhZTRkM2QgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKKysrIGIvVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQpAQCAtODksNiArODks
OCBAQCBjbGFzcyBQZXJmVGVzdChvYmplY3QpOgogCiAgICAgICAgIGlmIG91dHB1dC5lcnJvcjoK
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoJ2Vycm9yOiAlc1xuJXMnICUgKHNlbGYudGVzdF9uYW1l
KCksIG91dHB1dC5lcnJvcikpCisgICAgICAgICAgICBpZiBub3Qgc2VsZi5fcG9ydC5mYWlsX3Bl
cmZfdGVzdHNfb25fc3RkZXJyKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAg
ICAgICAgcmV0dXJuIFRydWUKIApAQCAtMzI3LDcgKzMyOSw3IEBAIGNsYXNzIFJlcGxheVBlcmZU
ZXN0KFBhZ2VMb2FkaW5nUGVyZlRlc3QpOgogCiAgICAgICAgIF9sb2cuaW5mbygiUHJlcGFyaW5n
IHJlcGxheSBmb3IgJXMiICUgc2VsZi50ZXN0X25hbWUoKSkKIAotICAgICAgICBkcml2ZXIgPSBz
ZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0xLCBub190aW1lb3V0PVRydWUp
CisgICAgICAgIGRyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2RyaXZlcih3b3JrZXJfbnVtYmVy
PTAsIG5vX3RpbWVvdXQ9VHJ1ZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgb3V0cHV0ID0g
c2VsZi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi5fYXJjaGl2ZV9wYXRoLCB0aW1lX291dF9tcywg
cmVjb3JkPVRydWUpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CmluZGV4
IDQyZTBkOTZlMTFhNjUyMDVkMThjMDY5OGMyOGNlMGY4YzYzYzFmMmMuLjdmNTdkMTQ5ZWYzZmJj
Y2JkYzdhOGE5NmE5YjNhNDQzMzZmYWIyNWIgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5CkBAIC02
Myw2ICs2Myw3IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICBlbHNl
OgogICAgICAgICAgICAgc2VsZi5faG9zdCA9IEhvc3QoKQogICAgICAgICAgICAgc2VsZi5fcG9y
dCA9IHNlbGYuX2hvc3QucG9ydF9mYWN0b3J5LmdldChzZWxmLl9vcHRpb25zLnBsYXRmb3JtLCBz
ZWxmLl9vcHRpb25zKQorICAgICAgICBzZWxmLl9wb3J0LnNldF9ydW5uaW5nX3BlcmZfdGVzdHMo
VHJ1ZSkKICAgICAgICAgc2VsZi5faG9zdC5pbml0aWFsaXplX3NjbSgpCiAgICAgICAgIHNlbGYu
X3dlYmtpdF9iYXNlX2Rpcl9sZW4gPSBsZW4oc2VsZi5fcG9ydC53ZWJraXRfYmFzZSgpKQogICAg
ICAgICBzZWxmLl9iYXNlX3BhdGggPSBzZWxmLl9wb3J0LnBlcmZfdGVzdHNfZGlyKCkKQEAgLTE0
NCw5ICsxNDUsMTIgQEAgY2xhc3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgIHRl
c3RzID0gW10KICAgICAgICAgZm9yIHBhdGggaW4gdGVzdF9maWxlczoKICAgICAgICAgICAgIHJl
bGF0aXZlX3BhdGggPSBzZWxmLl9wb3J0LnJlbGF0aXZlX3BlcmZfdGVzdF9maWxlbmFtZShwYXRo
KS5yZXBsYWNlKCdcXCcsICcvJykKKyAgICAgICAgICAgIHBhdGhfb3JfdXJsID0gcGF0aAogICAg
ICAgICAgICAgaWYgc2VsZi5fcG9ydC5za2lwc19wZXJmX3Rlc3QocmVsYXRpdmVfcGF0aCkgYW5k
IG5vdCBzZWxmLl9vcHRpb25zLnNraXBwZWQ6CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAg
ICAgICAgICAgIHRlc3QgPSBQZXJmVGVzdEZhY3RvcnkuY3JlYXRlX3BlcmZfdGVzdChzZWxmLl9w
b3J0LCByZWxhdGl2ZV9wYXRoLCBwYXRoKQorICAgICAgICAgICAgaWYgc2VsZi5fcG9ydC5yZXF1
aXJlc19odHRwX3NlcnZlcigpOgorICAgICAgICAgICAgICAgIHBhdGhfb3JfdXJsID0gcmVsYXRp
dmVfcGF0aAorICAgICAgICAgICAgdGVzdCA9IFBlcmZUZXN0RmFjdG9yeS5jcmVhdGVfcGVyZl90
ZXN0KHNlbGYuX3BvcnQsIHJlbGF0aXZlX3BhdGgsIHBhdGhfb3JfdXJsKQogICAgICAgICAgICAg
dGVzdHMuYXBwZW5kKHRlc3QpCiAKICAgICAgICAgcmV0dXJuIHRlc3RzCkBAIC0yODksOCArMjkz
LDExIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogICAgICAgICB1bmV4cGVjdGVk
ID0gMAogICAgICAgICBkcml2ZXIgPSBOb25lCiAKKyAgICAgICAgaWYgcG9ydC5yZXF1aXJlc19o
dHRwX3NlcnZlcigpOgorICAgICAgICAgICAgcG9ydC5zdGFydF9odHRwX3NlcnZlcigpCisKICAg
ICAgICAgZm9yIHRlc3QgaW4gdGVzdHM6Ci0gICAgICAgICAgICBkcml2ZXIgPSBwb3J0LmNyZWF0
ZV9kcml2ZXIod29ya2VyX251bWJlcj0xLCBub190aW1lb3V0PVRydWUpCisgICAgICAgICAgICBk
cml2ZXIgPSBwb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0wLCBub190aW1lb3V0PVRy
dWUpCiAKICAgICAgICAgICAgIGlmIHNlbGYuX29wdGlvbnMucGF1c2VfYmVmb3JlX3Rlc3Rpbmc6
CiAgICAgICAgICAgICAgICAgZHJpdmVyLnN0YXJ0KCkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176031</attachid>
            <date>2012-11-26 10:45:45 -0800</date>
            <delta_ts>2012-11-27 14:02:02 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103268-20121126184323.patch</filename>
            <type>text/plain</type>
            <size>8117</size>
            <attacher name="Peter Beverloo">peter</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1NzE5CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggM2NjOWM3ODA3YzBhZDViODQwZDRkMjZhMjFmNWNlOGUx
YmQ2OWFlYy4uNTQ0ODM4ZTJhNjk5MzZiYWM3ZGVmODc3MzcyNDU0MTc3ZGJiOTMxYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDEyLTExLTI2ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBwZXJmb3JtYW5jZSB0ZXN0cyBvbiBDaHJv
bWl1bSBBbmRyb2lkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDMyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJ1biBXZWJLaXQgcGVyZm9ybWFu
Y2UgdGVzdHMgb24gdGhlCisgICAgICAgIENocm9taXVtIHBvcnQgZm9yIEFuZHJvaWQuIFRoZXJl
IGFyZSBhIGZldyB0aGluZ3MgSSBoYWQgdG8gZG8gaW4gb3JkZXIKKyAgICAgICAgdG8gbWFrZSB0
aGlzIGhhcHBlbjoKKworICAgICAgICAxKSBUaGUgd29ya2VyIG51bWJlciB3aGVuIGNyZWF0aW5n
IGEgZHJpdmVyIGZvciBhIHBvcnQgaXMgemVyby1iYXNlZAorICAgICAgICAgICBmb3IgbGF5b3V0
IHRlc3RzIGFuZCBlbHNld2hlcmUuIEFuZHJvaWQgdXNlcyB0aGlzIHRvIGRldGVybWluZQorICAg
ICAgICAgICB3aGljaCBkZXZpY2UgaXQgaGFzIHRvIHJ1biBvbiwgc28gbWFrZSBpdCB6ZXJvIGJh
c2VkIGZvciBwZXJmb3JtYW5jZQorICAgICAgICAgICB0ZXN0cyBhcyB3ZWxsLgorCisgICAgICAg
IDIpIFRlc3RzIGNhbiBoYXZlIHN0ZGVyciBvdXRwdXQgb24gQW5kcm9pZC4gVGhlcmUncyB0aGUg
b2NjYXNzaW9uYWwKKyAgICAgICAgICAgcHJvYmxlbSAodXN1YWxseSBub3QgaW1wbGVtZW50ZWQg
ZmVhdHVyZXMpIHRoYXQgZG9lcyB0aGlzLCBhbmQgaXQncworICAgICAgICAgICBub3Qgd29ydGgg
ZmFpbGluZyBhbGwgcGVyZm9ybWFuY2UgdGVzdHMgYmVjYXVzZSBvZiB0aGF0LiBUaGVyZQorICAg
ICAgICAgICBpcyBub3cgYSBuZXcgb3B0aW9uIG9uIFBvcnQgYWxsb3dpbmcgQW5kcm9pZCB0byBu
b3QgZmFpbCBvbiBzdGRlcnIuCisKKyAgICAgICAgMykgVGVzdHMgYXJlbid0IGF2YWlsYWJsZSBv
biB0aGUgQW5kcm9pZCBkZXZpY2UsIHNvIHdlIHN0YXJ0IGFuIEhUVFAKKyAgICAgICAgICAgc2Vy
dmVyIHRoYXQgc2VydmVzIHRoZSB0ZXN0cyB0byB0aGUgZGV2aWNlIG9yIGVtdWxhdG9yLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAg
ICAgICAoUG9ydC5fX2luaXRfXyk6CisgICAgICAgIChQb3J0LmZhaWxfcGVyZl90ZXN0c19vbl9z
dGRlcnIpOgorICAgICAgICAoUG9ydC5ydW5uaW5nX3BlcmZfdGVzdHMpOgorICAgICAgICAoUG9y
dCk6CisgICAgICAgIChQb3J0LnNldF9ydW5uaW5nX3BlcmZfdGVzdHMpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weToKKyAg
ICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIpOgorICAgICAgICAo
Q2hyb21pdW1BbmRyb2lkUG9ydC5mYWlsX3BlcmZfdGVzdHNfb25fc3RkZXJyKToKKyAgICAgICAg
KENocm9taXVtQW5kcm9pZERyaXZlci5fY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weToKKyAg
ICAgICAgKFBlcmZUZXN0LnJ1bl9mYWlsZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAoUGVyZlRlc3Rz
UnVubmVyLl9faW5pdF9fKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fY29sbGVjdF90ZXN0
cyk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3J1bl90ZXN0c19zZXQpOgorCiAyMDEyLTEx
LTI2ICBKYWVodW4gTGltICA8bGphZWh1bi5saW1Ac2Ftc3VuZy5jb20+CiAKICAgICAgICAgVGV4
dCBBdXRvc2l6aW5nOiBBZGQgVGV4dCBBdXRvc2l6aW5nIEFQSXMgZm9yIFdLMgpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDhjNDU3
OGRiZmE3YzM4MzJiZjViNzk3ODA0MDExNDU5MmRhMmRiYTkuLjQzZTc3YTVlZmJiMTljMWQ4Njk5
NzNmMTcwN2Y5NTkzODQ0NmNiZGMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKQEAgLTc2Nyw2ICs3NjcsMTAgQEAgY2xhc3MgUG9ydChv
YmplY3QpOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxz
ZQogCisgICAgZGVmIGZhaWxfcGVyZl90ZXN0c19vbl9zdGRlcnIoc2VsZik6CisgICAgICAgICIi
IkZhaWwgcGVyZm9ybWFuY2UgdGVzdHMgd2hlbiB0aGVyZSBpcyBzdGRlcnIgb3V0cHV0LiIiIgor
ICAgICAgICByZXR1cm4gVHJ1ZQorCiAgICAgZGVmIGlzX2Nocm9taXVtKHNlbGYpOgogICAgICAg
ICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGEwNzdkYzkyZTQy
ZjBjYmViNDk2ZDliNmIyMjEyMjY4ZWE2MDlhM2MuLjQ0Zjk3ZTI1ODNjZDk4YjVlNjFlYzFkMzNj
ODUzY2EyMzdmNGNlYzkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTY4LDcgKzY4LDgg
QEAgU0NBTElOR19HT1ZFUk5PUlNfUEFUVEVSTiA9ICIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9j
cHUqL2NwdWZyZXEvc2NhbGluZ19nb3Zlcm4KICMgQWxsIHRoZSB0ZXN0IGNhc2VzIGFyZSBzdGls
bCBzZXJ2ZWQgdG8gRHVtcFJlbmRlclRyZWUgdGhyb3VnaCBmaWxlIHByb3RvY29sLAogIyBidXQg
d2UgdXNlIGEgZmlsZS10by1odHRwIGZlYXR1cmUgdG8gYnJpZGdlIHRoZSBmaWxlIHJlcXVlc3Qg
dG8gaG9zdCdzIGh0dHAKICMgc2VydmVyIHRvIGdldCB0aGUgcmVhbCB0ZXN0IGZpbGVzIGFuZCBj
b3JyZXNwb25kaW5nIHJlc291cmNlcy4KLVRFU1RfUEFUSF9QUkVGSVggPSAnL2FsbC10ZXN0cycK
K1BFUkZfVEVTVF9QQVRIX1BSRUZJWCA9ICcvYWxsLXBlcmYtdGVzdHMnCitMQVlPVVRfVEVTVF9Q
QVRIX1BSRUZJWCA9ICcvYWxsLXRlc3RzJwogCiAjIEFsbCBwb3J0cyB0aGUgQW5kcm9pZCBmb3J3
YXJkZXIgdG8gZm9yd2FyZC4KICMgODAwMCwgODA4MCBhbmQgODQ0MyBhcmUgZm9yIGh0dHAvaHR0
cHMgdGVzdHMuCkBAIC0xMzAsNiArMTMxLDcgQEAgREVWSUNFX0ZPTlRTX0RJUiA9IERFVklDRV9E
UlRfRElSICsgJ2ZvbnRzLycKICMgMi4gcG9pbnRpbmcgdG8gc29tZSBmaWxlcyB0aGF0IGFyZSBw
dXNoZWQgdG8gdGhlIGRldmljZSBmb3IgdGVzdHMgdGhhdAogIyBkb24ndCB3b3JrIG9uIGZpbGUt
b3Zlci1odHRwIChlLmcuIGJsb2IgcHJvdG9jb2wgdGVzdHMpLgogREVWSUNFX0xBWU9VVF9URVNU
U19ESVIgPSBERVZJQ0VfU09VUkNFX1JPT1RfRElSICsgJ3RoaXJkX3BhcnR5L1dlYktpdC9MYXlv
dXRUZXN0cy8nCitERVZJQ0VfUEVSRl9URVNUU19ESVIgPSBERVZJQ0VfU09VUkNFX1JPT1RfRElS
ICsgJ3RoaXJkX3BhcnR5L1dlYktpdC9QZXJmb3JtYW5jZVRlc3RzLycKIAogIyBUZXN0IHJlc291
cmNlcyB0aGF0IG5lZWQgdG8gYmUgYWNjZXNzZWQgYXMgZmlsZXMgZGlyZWN0bHkuCiAjIEVhY2gg
aXRlbSBjYW4gYmUgdGhlIHJlbGF0aXZlIHBhdGggb2YgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlLgpA
QCAtMjQyLDcgKzI0NCw4IEBAIGNsYXNzIENocm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hy
b21pdW1Qb3J0KToKICAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2VsZiwgYWRkaXRpb25hbF9k
aXJzPU5vbmUsIG51bWJlcl9vZl9zZXJ2ZXJzPTApOgogICAgICAgICBpZiBub3QgYWRkaXRpb25h
bF9kaXJzOgogICAgICAgICAgICAgYWRkaXRpb25hbF9kaXJzID0ge30KLSAgICAgICAgYWRkaXRp
b25hbF9kaXJzW1RFU1RfUEFUSF9QUkVGSVhdID0gc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkKKyAg
ICAgICAgYWRkaXRpb25hbF9kaXJzW1BFUkZfVEVTVF9QQVRIX1BSRUZJWF0gPSBzZWxmLnBlcmZf
dGVzdHNfZGlyKCkKKyAgICAgICAgYWRkaXRpb25hbF9kaXJzW0xBWU9VVF9URVNUX1BBVEhfUFJF
RklYXSA9IHNlbGYubGF5b3V0X3Rlc3RzX2RpcigpCiAgICAgICAgIHN1cGVyKENocm9taXVtQW5k
cm9pZFBvcnQsIHNlbGYpLnN0YXJ0X2h0dHBfc2VydmVyKGFkZGl0aW9uYWxfZGlycywgbnVtYmVy
X29mX3NlcnZlcnMpCiAKICAgICBkZWYgY3JlYXRlX2RyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVy
LCBub190aW1lb3V0PUZhbHNlKToKQEAgLTI1Niw2ICsyNTksMTEgQEAgY2xhc3MgQ2hyb21pdW1B
bmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgICAgICAjIE92ZXJyaWRlIHRv
IHJldHVybiB0aGUgYWN0dWFsIER1bXBSZW5kZXJUcmVlIGNvbW1hbmQgbGluZS4KICAgICAgICAg
cmV0dXJuIHNlbGYuY3JlYXRlX2RyaXZlcigwKS5fZHJ0X2NtZF9saW5lKHNlbGYuZ2V0X29wdGlv
bigncGl4ZWxfdGVzdHMnKSwgW10pCiAKKyAgICBkZWYgZmFpbF9wZXJmX3Rlc3RzX29uX3N0ZGVy
cihzZWxmKToKKyAgICAgICAgIiIiQ2hyb21pdW0gZm9yIEFuZHJvaWQgY2FuIGhhdmUgd2Fybmlu
Z3MgaW4gdGhlIHN0ZGVyciBvdXRwdXQgZm9yIG5vdCB5ZXQKKyAgICAgICAgaW1wbGVtZW50ZWQg
ZmVhdHVyZXMuIFRoZXJlIGlzIG5vIHJlYXNvbiB0byBmYWlsIGJlY2F1c2Ugb2YgdGhlbS4iIiIK
KyAgICAgICAgcmV0dXJuIEZhbHNlCisKICAgICAjIE92ZXJyaWRkZW4gcHJpdmF0ZSBmdW5jdGlv
bnMuCiAKICAgICBkZWYgX2J1aWxkX3BhdGgoc2VsZiwgKmNvbXBzKToKQEAgLTY2Niw5ICs2NzQs
MTIgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgogICAgICAg
ICBjb21tYW5kID0gc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fY29tbWFuZF9m
cm9tX2RyaXZlcl9pbnB1dChkcml2ZXJfaW5wdXQpCiAgICAgICAgIGlmIGNvbW1hbmQuc3RhcnRz
d2l0aCgnLycpOgogICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBob3N0IGZpbGUgcGF0aCB0byBh
IGRldmljZSBmaWxlIHBhdGguIFNlZSBjb21tZW50IG9mCi0gICAgICAgICAgICAjIERFVklDRV9M
QVlPVVRfVEVTVFNfRElSIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyBERVZJQ0VfTEFZT1VU
X1RFU1RTX0RJUiBmb3IgZGV0YWlscy4gVGhpcyBhbHNvIGFwcGxpZXMgdG8gcGVyZm9ybWFuY2Ug
dGVzdHMuCiAgICAgICAgICAgICAjIEZJWE1FOiB3aGF0IGhhcHBlbnMgaWYgY29tbWFuZCBsaWVz
IG91dHNpZGUgb2YgdGhlIGxheW91dF90ZXN0c19kaXIgb24gdGhlIGhvc3Q/Ci0gICAgICAgICAg
ICBjb21tYW5kID0gREVWSUNFX0xBWU9VVF9URVNUU19ESVIgKyBzZWxmLl9wb3J0LnJlbGF0aXZl
X3Rlc3RfZmlsZW5hbWUoY29tbWFuZCkKKyAgICAgICAgICAgIGlmICdQZXJmb3JtYW5jZVRlc3Rz
JyBpbiBjb21tYW5kOgorICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBERVZJQ0VfUEVSRl9URVNU
U19ESVIgKyBzZWxmLl9wb3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoY29tbWFuZC5zcGxpdCgn
UGVyZm9ybWFuY2VUZXN0cycpWzFdKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICBjb21tYW5kID0gREVWSUNFX0xBWU9VVF9URVNUU19ESVIgKyBzZWxmLl9wb3J0LnJlbGF0aXZl
X3Rlc3RfZmlsZW5hbWUoY29tbWFuZCkKICAgICAgICAgcmV0dXJuIGNvbW1hbmQKIAogICAgIGRl
ZiBfcmVhZF9wcm9tcHQoc2VsZiwgZGVhZGxpbmUpOgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKaW5kZXggOWUyZjg3ZDQ3ZTI0
ODcwMzZjNzk4YzM1OWY3ZDUzYzJmYzQwMmQyZi4uYjQ0NTkxYjNiZDAyZWEwYjc5YWY5OWFkYmQ5
MjRkZDg2ZGFlNGQzZCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3Jt
YW5jZV90ZXN0cy9wZXJmdGVzdC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZv
cm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CkBAIC04OSw2ICs4OSw4IEBAIGNsYXNzIFBlcmZUZXN0
KG9iamVjdCk6CiAKICAgICAgICAgaWYgb3V0cHV0LmVycm9yOgogICAgICAgICAgICAgX2xvZy5l
cnJvcignZXJyb3I6ICVzXG4lcycgJSAoc2VsZi50ZXN0X25hbWUoKSwgb3V0cHV0LmVycm9yKSkK
KyAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9wb3J0LmZhaWxfcGVyZl90ZXN0c19vbl9zdGRlcnIo
KToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKIAogICAgICAgICByZXR1cm4gVHJ1ZQog
CkBAIC0zMjcsNyArMzI5LDcgQEAgY2xhc3MgUmVwbGF5UGVyZlRlc3QoUGFnZUxvYWRpbmdQZXJm
VGVzdCk6CiAKICAgICAgICAgX2xvZy5pbmZvKCJQcmVwYXJpbmcgcmVwbGF5IGZvciAlcyIgJSBz
ZWxmLnRlc3RfbmFtZSgpKQogCi0gICAgICAgIGRyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2Ry
aXZlcih3b3JrZXJfbnVtYmVyPTEsIG5vX3RpbWVvdXQ9VHJ1ZSkKKyAgICAgICAgZHJpdmVyID0g
c2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtlcl9udW1iZXI9MCwgbm9fdGltZW91dD1UcnVl
KQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9zaW5nbGUoZHJp
dmVyLCBzZWxmLl9hcmNoaXZlX3BhdGgsIHRpbWVfb3V0X21zLCByZWNvcmQ9VHJ1ZSkKICAgICAg
ICAgZmluYWxseToKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFu
Y2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKaW5kZXggNDJlMGQ5NmUxMWE2NTIwNWQx
OGMwNjk4YzI4Y2UwZjhjNjNjMWYyYy4uMWRhOTFjMmYxYTU3MzZhZDFhOTQ3ZDk2MTg4YWFkYjU3
ZmUwYjY1OCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90
ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdHNydW5uZXIucHkKQEAgLTI4OSw4ICsyODksMTEgQEAgY2xh
c3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgIHVuZXhwZWN0ZWQgPSAwCiAgICAg
ICAgIGRyaXZlciA9IE5vbmUKIAorICAgICAgICBpZiBwb3J0LnJlcXVpcmVzX2h0dHBfc2VydmVy
KCk6CisgICAgICAgICAgICBwb3J0LnN0YXJ0X2h0dHBfc2VydmVyKCkKKwogICAgICAgICBmb3Ig
dGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgIGRyaXZlciA9IHBvcnQuY3JlYXRlX2RyaXZlcih3
b3JrZXJfbnVtYmVyPTEsIG5vX3RpbWVvdXQ9VHJ1ZSkKKyAgICAgICAgICAgIGRyaXZlciA9IHBv
cnQuY3JlYXRlX2RyaXZlcih3b3JrZXJfbnVtYmVyPTAsIG5vX3RpbWVvdXQ9VHJ1ZSkKIAogICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5wYXVzZV9iZWZvcmVfdGVzdGluZzoKICAgICAgICAg
ICAgICAgICBkcml2ZXIuc3RhcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176335</attachid>
            <date>2012-11-27 14:02:07 -0800</date>
            <delta_ts>2012-11-27 14:52:16 -0800</delta_ts>
            <desc>not yet tested</desc>
            <filename>bug-103268-20121127135943.patch</filename>
            <type>text/plain</type>
            <size>9038</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjE5MzFlZmJlODE1NGY1Mjc3OTZkOGIwNzFmNGIwOWQy
Y2I0MDc3OS4uYzM4YzNkYmZlNzVkMDM0ZGJhMzU4MDBmMzA5ZWI1YzM3MzBiMTY1ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0
IEBACisyMDEyLTExLTI3ICBQZXRlciBCZXZlcmxvbyAgPHBldGVyQGNocm9taXVtLm9yZz4KKwor
ICAgICAgICBNYWtlIGl0IHBvc3NpYmxlIHRvIHJ1biBwZXJmb3JtYW5jZSB0ZXN0cyBvbiBDaHJv
bWl1bSBBbmRyb2lkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDMyNjgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJ1biBXZWJLaXQgcGVyZm9ybWFu
Y2UgdGVzdHMgb24gdGhlCisgICAgICAgIENocm9taXVtIHBvcnQgZm9yIEFuZHJvaWQuIFRoZXJl
IGFyZSBhIGZldyB0aGluZ3MgSSBoYWQgdG8gZG8gaW4gb3JkZXIKKyAgICAgICAgdG8gbWFrZSB0
aGlzIGhhcHBlbjoKKworICAgICAgICAxKSBUaGUgd29ya2VyIG51bWJlciB3aGVuIGNyZWF0aW5n
IGEgZHJpdmVyIGZvciBhIHBvcnQgaXMgemVyby1iYXNlZAorICAgICAgICAgICBmb3IgbGF5b3V0
IHRlc3RzIGFuZCBlbHNld2hlcmUuIEFuZHJvaWQgdXNlcyB0aGlzIHRvIGRldGVybWluZQorICAg
ICAgICAgICB3aGljaCBkZXZpY2UgaXQgaGFzIHRvIHJ1biBvbiwgc28gbWFrZSBpdCB6ZXJvIGJh
c2VkIGZvciBwZXJmb3JtYW5jZQorICAgICAgICAgICB0ZXN0cyBhcyB3ZWxsLgorCisgICAgICAg
IDIpIFRlc3RzIGNhbiBoYXZlIHN0ZGVyciBvdXRwdXQgb24gQW5kcm9pZC4gVGhlcmUncyB0aGUg
b2NjYXNzaW9uYWwKKyAgICAgICAgICAgcHJvYmxlbSAodXN1YWxseSBub3QgaW1wbGVtZW50ZWQg
ZmVhdHVyZXMpIHRoYXQgZG9lcyB0aGlzLCBhbmQgaXQncworICAgICAgICAgICBub3Qgd29ydGgg
ZmFpbGluZyBhbGwgcGVyZm9ybWFuY2UgdGVzdHMgYmVjYXVzZSBvZiB0aGF0LiBUaGVyZQorICAg
ICAgICAgICBpcyBub3cgYSBuZXcgb3B0aW9uIG9uIFBvcnQgYWxsb3dpbmcgQW5kcm9pZCB0byBu
b3QgZmFpbCBvbiBzdGRlcnIuCisKKyAgICAgICAgMykgVGVzdHMgYXJlbid0IGF2YWlsYWJsZSBv
biB0aGUgQW5kcm9pZCBkZXZpY2UsIHNvIHdlIHN0YXJ0IGFuIEhUVFAKKyAgICAgICAgICAgc2Vy
dmVyIHRoYXQgc2VydmVzIHRoZSB0ZXN0cyB0byB0aGUgZGV2aWNlIG9yIGVtdWxhdG9yLgorCisg
ICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAg
ICAgICAoUG9ydC5fX2luaXRfXyk6CisgICAgICAgIChQb3J0LmZhaWxfcGVyZl90ZXN0c19vbl9z
dGRlcnIpOgorICAgICAgICAoUG9ydC5ydW5uaW5nX3BlcmZfdGVzdHMpOgorICAgICAgICAoUG9y
dCk6CisgICAgICAgIChQb3J0LnNldF9ydW5uaW5nX3BlcmZfdGVzdHMpOgorICAgICAgICAqIFNj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weToKKyAg
ICAgICAgKENocm9taXVtQW5kcm9pZFBvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIpOgorICAgICAgICAo
Q2hyb21pdW1BbmRyb2lkUG9ydC5mYWlsX3BlcmZfdGVzdHNfb25fc3RkZXJyKToKKyAgICAgICAg
KENocm9taXVtQW5kcm9pZERyaXZlci5fY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dCk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weToKKyAg
ICAgICAgKFBlcmZUZXN0LnJ1bl9mYWlsZWQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVyLnB5OgorICAgICAgICAoUGVyZlRlc3Rz
UnVubmVyLl9faW5pdF9fKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fY29sbGVjdF90ZXN0
cyk6CisgICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3J1bl90ZXN0c19zZXQpOgorCiAyMDEyLTEx
LTI3ICBNYXJqYSBIw7ZsdHTDpCAgPG1hcmphQGNocm9taXVtLm9yZz4KIAogICAgICAgICBBZGQg
Y2FsbGJhY2tzIHRvIHRoZSBGcmFtZUxvYWRlckNsaWVudCB3aGVuIGEgcmVzb3VyY2UgaXMgcmVx
dWVzdGVkCmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9w
b3J0L2Nocm9taXVtX2FuZHJvaWQucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKaW5kZXggYTA3N2RjOTJlNDJmMGNiZWI0OTZk
OWI2YjIyMTIyNjhlYTYwOWEzYy4uMWM1MWFjMTk0OGYwOGJiZmRhMTU3YzgyOWQ4ZjEwMDQ1NWM1
MGY1NCAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC9jaHJvbWl1bV9hbmRyb2lkLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQpAQCAtNjgsNyArNjgsOCBAQCBTQ0FMSU5H
X0dPVkVSTk9SU19QQVRURVJOID0gIi9zeXMvZGV2aWNlcy9zeXN0ZW0vY3B1L2NwdSovY3B1ZnJl
cS9zY2FsaW5nX2dvdmVybgogIyBBbGwgdGhlIHRlc3QgY2FzZXMgYXJlIHN0aWxsIHNlcnZlZCB0
byBEdW1wUmVuZGVyVHJlZSB0aHJvdWdoIGZpbGUgcHJvdG9jb2wsCiAjIGJ1dCB3ZSB1c2UgYSBm
aWxlLXRvLWh0dHAgZmVhdHVyZSB0byBicmlkZ2UgdGhlIGZpbGUgcmVxdWVzdCB0byBob3N0J3Mg
aHR0cAogIyBzZXJ2ZXIgdG8gZ2V0IHRoZSByZWFsIHRlc3QgZmlsZXMgYW5kIGNvcnJlc3BvbmRp
bmcgcmVzb3VyY2VzLgotVEVTVF9QQVRIX1BSRUZJWCA9ICcvYWxsLXRlc3RzJworUEVSRl9URVNU
X1BBVEhfUFJFRklYID0gJy9hbGwtcGVyZi10ZXN0cycKK0xBWU9VVF9URVNUX1BBVEhfUFJFRklY
ID0gJy9hbGwtdGVzdHMnCiAKICMgQWxsIHBvcnRzIHRoZSBBbmRyb2lkIGZvcndhcmRlciB0byBm
b3J3YXJkLgogIyA4MDAwLCA4MDgwIGFuZCA4NDQzIGFyZSBmb3IgaHR0cC9odHRwcyB0ZXN0cy4K
QEAgLTEzMCw2ICsxMzEsNyBAQCBERVZJQ0VfRk9OVFNfRElSID0gREVWSUNFX0RSVF9ESVIgKyAn
Zm9udHMvJwogIyAyLiBwb2ludGluZyB0byBzb21lIGZpbGVzIHRoYXQgYXJlIHB1c2hlZCB0byB0
aGUgZGV2aWNlIGZvciB0ZXN0cyB0aGF0CiAjIGRvbid0IHdvcmsgb24gZmlsZS1vdmVyLWh0dHAg
KGUuZy4gYmxvYiBwcm90b2NvbCB0ZXN0cykuCiBERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUiA9IERF
VklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAndGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzLycK
K0RFVklDRV9QRVJGX1RFU1RTX0RJUiA9IERFVklDRV9TT1VSQ0VfUk9PVF9ESVIgKyAndGhpcmRf
cGFydHkvV2ViS2l0L1BlcmZvcm1hbmNlVGVzdHMvJwogCiAjIFRlc3QgcmVzb3VyY2VzIHRoYXQg
bmVlZCB0byBiZSBhY2Nlc3NlZCBhcyBmaWxlcyBkaXJlY3RseS4KICMgRWFjaCBpdGVtIGNhbiBi
ZSB0aGUgcmVsYXRpdmUgcGF0aCBvZiBhIGRpcmVjdG9yeSBvciBhIGZpbGUuCkBAIC0yNDIsNyAr
MjQ0LDggQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQp
OgogICAgIGRlZiBzdGFydF9odHRwX3NlcnZlcihzZWxmLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwg
bnVtYmVyX29mX3NlcnZlcnM9MCk6CiAgICAgICAgIGlmIG5vdCBhZGRpdGlvbmFsX2RpcnM6CiAg
ICAgICAgICAgICBhZGRpdGlvbmFsX2RpcnMgPSB7fQotICAgICAgICBhZGRpdGlvbmFsX2RpcnNb
VEVTVF9QQVRIX1BSRUZJWF0gPSBzZWxmLmxheW91dF90ZXN0c19kaXIoKQorICAgICAgICBhZGRp
dGlvbmFsX2RpcnNbUEVSRl9URVNUX1BBVEhfUFJFRklYXSA9IHNlbGYucGVyZl90ZXN0c19kaXIo
KQorICAgICAgICBhZGRpdGlvbmFsX2RpcnNbTEFZT1VUX1RFU1RfUEFUSF9QUkVGSVhdID0gc2Vs
Zi5sYXlvdXRfdGVzdHNfZGlyKCkKICAgICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkUG9ydCwg
c2VsZikuc3RhcnRfaHR0cF9zZXJ2ZXIoYWRkaXRpb25hbF9kaXJzLCBudW1iZXJfb2Zfc2VydmVy
cykKIAogICAgIGRlZiBjcmVhdGVfZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIsIG5vX3RpbWVv
dXQ9RmFsc2UpOgpAQCAtNjY2LDkgKzY2OSwxMiBAQCBjbGFzcyBDaHJvbWl1bUFuZHJvaWREcml2
ZXIoZHJpdmVyLkRyaXZlcik6CiAgICAgICAgIGNvbW1hbmQgPSBzdXBlcihDaHJvbWl1bUFuZHJv
aWREcml2ZXIsIHNlbGYpLl9jb21tYW5kX2Zyb21fZHJpdmVyX2lucHV0KGRyaXZlcl9pbnB1dCkK
ICAgICAgICAgaWYgY29tbWFuZC5zdGFydHN3aXRoKCcvJyk6CiAgICAgICAgICAgICAjIENvbnZl
cnQgdGhlIGhvc3QgZmlsZSBwYXRoIHRvIGEgZGV2aWNlIGZpbGUgcGF0aC4gU2VlIGNvbW1lbnQg
b2YKLSAgICAgICAgICAgICMgREVWSUNFX0xBWU9VVF9URVNUU19ESVIgZm9yIGRldGFpbHMuCisg
ICAgICAgICAgICAjIERFVklDRV9MQVlPVVRfVEVTVFNfRElSIGZvciBkZXRhaWxzLiBUaGlzIGFs
c28gYXBwbGllcyB0byBwZXJmb3JtYW5jZSB0ZXN0cy4KICAgICAgICAgICAgICMgRklYTUU6IHdo
YXQgaGFwcGVucyBpZiBjb21tYW5kIGxpZXMgb3V0c2lkZSBvZiB0aGUgbGF5b3V0X3Rlc3RzX2Rp
ciBvbiB0aGUgaG9zdD8KLSAgICAgICAgICAgIGNvbW1hbmQgPSBERVZJQ0VfTEFZT1VUX1RFU1RT
X0RJUiArIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShjb21tYW5kKQorICAgICAg
ICAgICAgaWYgJ1BlcmZvcm1hbmNlVGVzdHMnIGluIGNvbW1hbmQ6CisgICAgICAgICAgICAgICAg
Y29tbWFuZCA9IERFVklDRV9QRVJGX1RFU1RTX0RJUiArIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVz
dF9maWxlbmFtZShjb21tYW5kLnNwbGl0KCdQZXJmb3JtYW5jZVRlc3RzJylbMV0pCisgICAgICAg
ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbW1hbmQgPSBERVZJQ0VfTEFZT1VUX1RFU1RT
X0RJUiArIHNlbGYuX3BvcnQucmVsYXRpdmVfdGVzdF9maWxlbmFtZShjb21tYW5kKQogICAgICAg
ICByZXR1cm4gY29tbWFuZAogCiAgICAgZGVmIF9yZWFkX3Byb21wdChzZWxmLCBkZWFkbGluZSk6
CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdC5weQppbmRleCA5ZTJmODdkNDdlMjQ4NzAzNmM3OThjMzU5ZjdkNTNjMmZjNDAyZDJmLi4y
YmMxNjQ0Njc5MWMzN2JkMmM4MGRmMWZiMmY0Yzk4NTgwNmYxYTkyIDEwMDY0NAotLS0gYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKQEAgLTMy
Nyw3ICszMjcsNyBAQCBjbGFzcyBSZXBsYXlQZXJmVGVzdChQYWdlTG9hZGluZ1BlcmZUZXN0KToK
IAogICAgICAgICBfbG9nLmluZm8oIlByZXBhcmluZyByZXBsYXkgZm9yICVzIiAlIHNlbGYudGVz
dF9uYW1lKCkpCiAKLSAgICAgICAgZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHdv
cmtlcl9udW1iZXI9MSwgbm9fdGltZW91dD1UcnVlKQorICAgICAgICBkcml2ZXIgPSBzZWxmLl9w
b3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0wLCBub190aW1lb3V0PVRydWUpCiAgICAg
ICAgIHRyeToKICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NpbmdsZShkcml2ZXIsIHNl
bGYuX2FyY2hpdmVfcGF0aCwgdGltZV9vdXRfbXMsIHJlY29yZD1UcnVlKQogICAgICAgICBmaW5h
bGx5OgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0
cy9wZXJmdGVzdHNydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNl
X3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQppbmRleCA0MmUwZDk2ZTExYTY1MjA1ZDE4YzA2OThj
MjhjZTBmOGM2M2MxZjJjLi4wZmUwM2JlYjYxNWQwMDQzMTczYWZiMzA3Y2ZlMTFlNDMwMjFjMzNj
IDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNl
X3Rlc3RzL3BlcmZ0ZXN0c3J1bm5lci5weQpAQCAtNjgsNiArNjgsOCBAQCBjbGFzcyBQZXJmVGVz
dHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgc2VsZi5fYmFzZV9wYXRoID0gc2VsZi5fcG9ydC5w
ZXJmX3Rlc3RzX2RpcigpCiAgICAgICAgIHNlbGYuX3Jlc3VsdHMgPSB7fQogICAgICAgICBzZWxm
Ll90aW1lc3RhbXAgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLl9uZWVkc19odHRwID0gTm9u
ZQorICAgICAgICBzZWxmLl9oYXNfaHR0cF9sb2NrID0gRmFsc2UKIAogICAgIEBzdGF0aWNtZXRo
b2QKICAgICBkZWYgX3BhcnNlX2FyZ3MoYXJncz1Ob25lKToKQEAgLTgzLDYgKzg1LDggQEAgY2xh
c3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaGVscD0iU3BlY2lm
eSBwb3J0L3BsYXRmb3JtIGJlaW5nIHRlc3RlZCAoaS5lLiBjaHJvbWl1bS1tYWMpIiksCiAgICAg
ICAgICAgICBvcHRwYXJzZS5tYWtlX29wdGlvbigiLS1jaHJvbWl1bSIsCiAgICAgICAgICAgICAg
ICAgYWN0aW9uPSJzdG9yZV9jb25zdCIsIGNvbnN0PSdjaHJvbWl1bScsIGRlc3Q9J3BsYXRmb3Jt
JywgaGVscD0nQWxpYXMgZm9yIC0tcGxhdGZvcm09Y2hyb21pdW0nKSwKKyAgICAgICAgICAgIG9w
dHBhcnNlLm1ha2Vfb3B0aW9uKCItLWNocm9taXVtLWFuZHJvaWQiLAorICAgICAgICAgICAgICAg
IGFjdGlvbj0ic3RvcmVfY29uc3QiLCBjb25zdD0nY2hyb21pdW0tYW5kcm9pZCcsIGRlc3Q9J3Bs
YXRmb3JtJywgaGVscD0nQWxpYXMgZm9yIC0tcGxhdGZvcm09Y2hyb21pdW0tYW5kcm9pZCcpLAog
ICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tYnVpbGRlci1uYW1lIiwKICAgICAg
ICAgICAgICAgICBoZWxwPSgiVGhlIG5hbWUgb2YgdGhlIGJ1aWxkZXIgc2hvd24gb24gdGhlIHdh
dGVyZmFsbCBydW5uaW5nIHRoaXMgc2NyaXB0IGUuZy4gZ29vZ2xlLW1hYy0yLiIpKSwKICAgICAg
ICAgICAgIG9wdHBhcnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkLW51bWJlciIsCkBAIC0xNTEsOCAr
MTU1LDIxIEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogCiAgICAgICAgIHJldHVy
biB0ZXN0cwogCisgICAgZGVmIF9zdGFydF9zZXJ2ZXJzKHNlbGYpOgorICAgICAgICBpZiBzZWxm
Ll9uZWVkc19odHRwOgorICAgICAgICAgICAgc2VsZi5fcG9ydC5hY3F1aXJlX2h0dHBfbG9jaygp
CisgICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2h0dHBfc2VydmVyKG51bWJlcl9vZl9zZXJ2
ZXJzPTIpCisgICAgICAgICAgICBzZWxmLl9oYXNfaHR0cF9sb2NrID0gVHJ1ZQorCisgICAgZGVm
IF9zdG9wX3NlcnZlcnMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2hhc19odHRwX2xvY2s6Cisg
ICAgICAgICAgICBzZWxmLl9wb3J0LnN0b3BfaHR0cF9zZXJ2ZXIoKQorICAgICAgICAgICAgc2Vs
Zi5fcG9ydC5yZWxlYXNlX2h0dHBfbG9jaygpCisKICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAg
ICBpZiBub3Qgc2VsZi5fcG9ydC5jaGVja19idWlsZChuZWVkc19odHRwPUZhbHNlKToKKyAgICAg
ICAgc2VsZi5fbmVlZHNfaHR0cCA9IHNlbGYuX3BvcnQucmVxdWlyZXNfaHR0cF9zZXJ2ZXIoKQor
CisgICAgICAgIGlmIG5vdCBzZWxmLl9wb3J0LmNoZWNrX2J1aWxkKG5lZWRzX2h0dHA9c2VsZi5f
bmVlZHNfaHR0cCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJCdWlsZCBub3QgdXAgdG8gZGF0
ZSBmb3IgJXMiICUgc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKICAgICAgICAgICAgIHJl
dHVybiBzZWxmLkVYSVRfQ09ERV9CQURfQlVJTEQKIApAQCAtMTYzLDcgKzE4MCwxMyBAQCBjbGFz
cyBQZXJmVGVzdHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIG5vdCB0ZXN0LnByZXBh
cmUoc2VsZi5fb3B0aW9ucy50aW1lX291dF9tcyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNl
bGYuRVhJVF9DT0RFX0JBRF9QUkVQQVJBVElPTgogCi0gICAgICAgIHVuZXhwZWN0ZWQgPSBzZWxm
Ll9ydW5fdGVzdHNfc2V0KHNvcnRlZChsaXN0KHRlc3RzKSwga2V5PWxhbWJkYSB0ZXN0OiB0ZXN0
LnRlc3RfbmFtZSgpKSwgc2VsZi5fcG9ydCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2Vs
Zi5fc3RhcnRfc2VydmVycygpCisgICAgICAgICAgICB1bmV4cGVjdGVkID0gc2VsZi5fcnVuX3Rl
c3RzX3NldChzb3J0ZWQobGlzdCh0ZXN0cyksIGtleT1sYW1iZGEgdGVzdDogdGVzdC50ZXN0X25h
bWUoKSksIHNlbGYuX3BvcnQpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYu
X3N0b3Bfc2VydmVycygpCisKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5nZW5lcmF0ZV9yZXN1
bHRzOgogICAgICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZ2VuZXJhdGVfYW5kX3Nob3dfcmVz
dWx0cygpCiAgICAgICAgICAgICBpZiBleGl0X2NvZGU6CkBAIC0yOTAsNyArMzEzLDcgQEAgY2xh
c3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgIGRyaXZlciA9IE5vbmUKIAogICAg
ICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgIGRyaXZlciA9IHBvcnQuY3JlYXRl
X2RyaXZlcih3b3JrZXJfbnVtYmVyPTEsIG5vX3RpbWVvdXQ9VHJ1ZSkKKyAgICAgICAgICAgIGRy
aXZlciA9IHBvcnQuY3JlYXRlX2RyaXZlcih3b3JrZXJfbnVtYmVyPTAsIG5vX3RpbWVvdXQ9VHJ1
ZSkKIAogICAgICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5wYXVzZV9iZWZvcmVfdGVzdGluZzoK
ICAgICAgICAgICAgICAgICBkcml2ZXIuc3RhcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176344</attachid>
            <date>2012-11-27 14:52:19 -0800</date>
            <delta_ts>2012-11-27 15:02:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103268-20121127144956.patch</filename>
            <type>text/plain</type>
            <size>9029</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjE5MzFlZmJlODE1NGY1Mjc3OTZkOGIwNzFmNGIwOWQy
Y2I0MDc3OS4uYjg0ZTBhODFhYTY3ZjM3ZDJhZmE0NTM2NTRkYzZhMzMyYzA0N2FlNyAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEyLTExLTI3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTWFrZSBpdCBwb3NzaWJsZSB0byBydW4gcGVyZm9ybWFuY2UgdGVzdHMgb24gQ2hyb21pdW0g
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QmFzZWQgb24gYSBwYXRjaCBieSBQZXRlciBCZXZlcmxvby4KKworICAgICAgICBUaGlzIHBhdGNo
IChhbG1vc3QpIG1ha2VzIGl0IHBvc3NpYmxlIHRvIHJ1biBXZWJLaXQgcGVyZm9ybWFuY2UgdGVz
dHMKKyAgICAgICAgb24gdGhlIMKgQ2hyb21pdW0gcG9ydCBmb3IgQW5kcm9pZC4gVGhlcmUgYXJl
IGEgZmV3IHRoaW5ncyBJIGhhZCB0byBkbworICAgICAgICBpbiBvcmRlciB0byBtYWtlIHRoaXMg
aGFwcGVuOgorCisgICAgICAgIDEpIFRoZSB3b3JrZXIgbnVtYmVyIHdoZW4gY3JlYXRpbmcgYSBk
cml2ZXIgZm9yIGEgcG9ydCBpcyB6ZXJvLWJhc2VkCisgICAgICAgICAgIGZvciBsYXlvdXQgdGVz
dHMgYW5kIGVsc2V3aGVyZS4gQW5kcm9pZCB1c2VzIHRoaXMgdG8gZGV0ZXJtaW5lCisgICAgICAg
ICAgIHdoaWNoIGRldmljZSBpdCBoYXMgdG8gcnVuIG9uLCBzbyBtYWtlIGl0IHplcm8gYmFzZWQg
Zm9yIHBlcmZvcm1hbmNlCisgICAgICAgICAgIHRlc3RzIGFzIHdlbGwuCisKKyAgICAgICAgMikg
VGVzdHMgYXJlbid0IGF2YWlsYWJsZSBvbiB0aGUgQW5kcm9pZCBkZXZpY2UsIHNvIHdlIHN0YXJ0
IGFuIEhUVFAKKyAgICAgICAgICAgc2VydmVyIHRoYXQgc2VydmVzIHRoZSB0ZXN0cyB0byB0aGUg
ZGV2aWNlIG9yIGVtdWxhdG9yLgorCisgICAgICAgIFRoZSBvbmUgc2hvcnRjb21pbmcgb2YgdGhp
cyBwYXRjaCBpcyB0aGF0IGNocm9taXVtLWFuZHJvaWQgcHJvZHVjZXMKKyAgICAgICAgc29tZSBz
dGRlcnIgb3V0cHV0IHRoYXQgY29uZnVzZXMgcnVuLXBlcmYtdGVzdHMuIEknbGwgYWRkcmVzcyB0
aGF0CisgICAgICAgIGlzc3VlIGluIGEgc3Vic2VxdWVudCBDTC4gVGhpcyBwYXRjaCBhbHNvIGRl
cGVuZHMgb24KKyAgICAgICAgaHR0cHM6Ly9jb2RlcmV2aWV3LmNocm9taXVtLm9yZy8xMTQxNjE4
MiBpbiBvcmRlciB0byB3b3JrLgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5OgorICAgICAgICAoQ2hyb21pdW1BbmRyb2lk
UG9ydC5zdGFydF9odHRwX3NlcnZlcik6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWREcml2ZXIu
X2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkv
cGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHk6CisgICAgICAgIChSZXBsYXlQZXJmVGVzdC5w
cmVwYXJlKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fX2luaXRfXyk6Cisg
ICAgICAgIChQZXJmVGVzdHNSdW5uZXIuX3BhcnNlX2FyZ3MpOgorICAgICAgICAoUGVyZlRlc3Rz
UnVubmVyLl9zdGFydF9zZXJ2ZXJzKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lcik6CisgICAg
ICAgIChQZXJmVGVzdHNSdW5uZXIuX3N0b3Bfc2VydmVycyk6CisgICAgICAgIChQZXJmVGVzdHNS
dW5uZXIucnVuKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5lci5fcnVuX3Rlc3RzX3NldCk6CisK
IDIwMTItMTEtMjcgIE1hcmphIEjDtmx0dMOkICA8bWFyamFAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZCBjYWxsYmFja3MgdG8gdGhlIEZyYW1lTG9hZGVyQ2xpZW50IHdoZW4gYSByZXNvdXJj
ZSBpcyByZXF1ZXN0ZWQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQppbmRleCBhMDc3ZGM5MmU0MmYw
Y2JlYjQ5NmQ5YjZiMjIxMjI2OGVhNjA5YTNjLi5jMThjZDA5NDE4NDNiMDMwNTEzNDRjODVlNjU0
MThiMDA1N2ZkMDgwIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CkBAIC02OCw3ICs2OCw5IEBA
IFNDQUxJTkdfR09WRVJOT1JTX1BBVFRFUk4gPSAiL3N5cy9kZXZpY2VzL3N5c3RlbS9jcHUvY3B1
Ki9jcHVmcmVxL3NjYWxpbmdfZ292ZXJuCiAjIEFsbCB0aGUgdGVzdCBjYXNlcyBhcmUgc3RpbGwg
c2VydmVkIHRvIER1bXBSZW5kZXJUcmVlIHRocm91Z2ggZmlsZSBwcm90b2NvbCwKICMgYnV0IHdl
IHVzZSBhIGZpbGUtdG8taHR0cCBmZWF0dXJlIHRvIGJyaWRnZSB0aGUgZmlsZSByZXF1ZXN0IHRv
IGhvc3QncyBodHRwCiAjIHNlcnZlciB0byBnZXQgdGhlIHJlYWwgdGVzdCBmaWxlcyBhbmQgY29y
cmVzcG9uZGluZyByZXNvdXJjZXMuCi1URVNUX1BBVEhfUFJFRklYID0gJy9hbGwtdGVzdHMnCisj
IFNlZSB3ZWJraXQvc3VwcG9ydC9wbGF0Zm9ybV9zdXBwb3J0X2FuZHJvaWQuY2MgZm9yIHRoZSBv
dGhlciBzaWRlIG9mIHRoaXMgYnJpZGdlLgorUEVSRl9URVNUX1BBVEhfUFJFRklYID0gJy9hbGwt
cGVyZi10ZXN0cycKK0xBWU9VVF9URVNUX1BBVEhfUFJFRklYID0gJy9hbGwtdGVzdHMnCiAKICMg
QWxsIHBvcnRzIHRoZSBBbmRyb2lkIGZvcndhcmRlciB0byBmb3J3YXJkLgogIyA4MDAwLCA4MDgw
IGFuZCA4NDQzIGFyZSBmb3IgaHR0cC9odHRwcyB0ZXN0cy4KQEAgLTEyOSw3ICsxMzEsOCBAQCBE
RVZJQ0VfRk9OVFNfRElSID0gREVWSUNFX0RSVF9ESVIgKyAnZm9udHMvJwogIyAxLiBhcyBhIHZp
cnR1YWwgcGF0aCBpbiBmaWxlIHVybHMgdGhhdCB3aWxsIGJlIGJyaWRnZWQgdG8gSFRUUC4KICMg
Mi4gcG9pbnRpbmcgdG8gc29tZSBmaWxlcyB0aGF0IGFyZSBwdXNoZWQgdG8gdGhlIGRldmljZSBm
b3IgdGVzdHMgdGhhdAogIyBkb24ndCB3b3JrIG9uIGZpbGUtb3Zlci1odHRwIChlLmcuIGJsb2Ig
cHJvdG9jb2wgdGVzdHMpLgotREVWSUNFX0xBWU9VVF9URVNUU19ESVIgPSBERVZJQ0VfU09VUkNF
X1JPT1RfRElSICsgJ3RoaXJkX3BhcnR5L1dlYktpdC9MYXlvdXRUZXN0cy8nCitERVZJQ0VfV0VC
S0lUX0JBU0VfRElSID0gREVWSUNFX1NPVVJDRV9ST09UX0RJUiArICd0aGlyZF9wYXJ0eS9XZWJL
aXQvJworREVWSUNFX0xBWU9VVF9URVNUU19ESVIgPSBERVZJQ0VfV0VCS0lUX0JBU0VfRElSICsg
J0xheW91dFRlc3RzLycKIAogIyBUZXN0IHJlc291cmNlcyB0aGF0IG5lZWQgdG8gYmUgYWNjZXNz
ZWQgYXMgZmlsZXMgZGlyZWN0bHkuCiAjIEVhY2ggaXRlbSBjYW4gYmUgdGhlIHJlbGF0aXZlIHBh
dGggb2YgYSBkaXJlY3Rvcnkgb3IgYSBmaWxlLgpAQCAtMjQyLDcgKzI0NSw4IEBAIGNsYXNzIENo
cm9taXVtQW5kcm9pZFBvcnQoY2hyb21pdW0uQ2hyb21pdW1Qb3J0KToKICAgICBkZWYgc3RhcnRf
aHR0cF9zZXJ2ZXIoc2VsZiwgYWRkaXRpb25hbF9kaXJzPU5vbmUsIG51bWJlcl9vZl9zZXJ2ZXJz
PTApOgogICAgICAgICBpZiBub3QgYWRkaXRpb25hbF9kaXJzOgogICAgICAgICAgICAgYWRkaXRp
b25hbF9kaXJzID0ge30KLSAgICAgICAgYWRkaXRpb25hbF9kaXJzW1RFU1RfUEFUSF9QUkVGSVhd
ID0gc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkKKyAgICAgICAgYWRkaXRpb25hbF9kaXJzW1BFUkZf
VEVTVF9QQVRIX1BSRUZJWF0gPSBzZWxmLnBlcmZfdGVzdHNfZGlyKCkKKyAgICAgICAgYWRkaXRp
b25hbF9kaXJzW0xBWU9VVF9URVNUX1BBVEhfUFJFRklYXSA9IHNlbGYubGF5b3V0X3Rlc3RzX2Rp
cigpCiAgICAgICAgIHN1cGVyKENocm9taXVtQW5kcm9pZFBvcnQsIHNlbGYpLnN0YXJ0X2h0dHBf
c2VydmVyKGFkZGl0aW9uYWxfZGlycywgbnVtYmVyX29mX3NlcnZlcnMpCiAKICAgICBkZWYgY3Jl
YXRlX2RyaXZlcihzZWxmLCB3b3JrZXJfbnVtYmVyLCBub190aW1lb3V0PUZhbHNlKToKQEAgLTY2
NSwxMCArNjY5LDEwIEBAIGNsYXNzIENocm9taXVtQW5kcm9pZERyaXZlcihkcml2ZXIuRHJpdmVy
KToKICAgICBkZWYgX2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQoc2VsZiwgZHJpdmVyX2lucHV0
KToKICAgICAgICAgY29tbWFuZCA9IHN1cGVyKENocm9taXVtQW5kcm9pZERyaXZlciwgc2VsZiku
X2NvbW1hbmRfZnJvbV9kcml2ZXJfaW5wdXQoZHJpdmVyX2lucHV0KQogICAgICAgICBpZiBjb21t
YW5kLnN0YXJ0c3dpdGgoJy8nKToKLSAgICAgICAgICAgICMgQ29udmVydCB0aGUgaG9zdCBmaWxl
IHBhdGggdG8gYSBkZXZpY2UgZmlsZSBwYXRoLiBTZWUgY29tbWVudCBvZgotICAgICAgICAgICAg
IyBERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUiBmb3IgZGV0YWlscy4KKyAgICAgICAgICAgIGZzID0g
c2VsZi5fcG9ydC5fZmlsZXN5c3RlbQogICAgICAgICAgICAgIyBGSVhNRTogd2hhdCBoYXBwZW5z
IGlmIGNvbW1hbmQgbGllcyBvdXRzaWRlIG9mIHRoZSBsYXlvdXRfdGVzdHNfZGlyIG9uIHRoZSBo
b3N0PwotICAgICAgICAgICAgY29tbWFuZCA9IERFVklDRV9MQVlPVVRfVEVTVFNfRElSICsgc2Vs
Zi5fcG9ydC5yZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lKGNvbW1hbmQpCisgICAgICAgICAgICByZWxh
dGl2ZV90ZXN0X2ZpbGVuYW1lID0gZnMucmVscGF0aChjb21tYW5kLCBmcy5kaXJuYW1lKHNlbGYu
X3BvcnQubGF5b3V0X3Rlc3RzX2RpcigpKSkKKyAgICAgICAgICAgIGNvbW1hbmQgPSBERVZJQ0Vf
V0VCS0lUX0JBU0VfRElSICsgcmVsYXRpdmVfdGVzdF9maWxlbmFtZQogICAgICAgICByZXR1cm4g
Y29tbWFuZAogCiAgICAgZGVmIF9yZWFkX3Byb21wdChzZWxmLCBkZWFkbGluZSk6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5
IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQpp
bmRleCA5ZTJmODdkNDdlMjQ4NzAzNmM3OThjMzU5ZjdkNTNjMmZjNDAyZDJmLi4yYmMxNjQ0Njc5
MWMzN2JkMmM4MGRmMWZiMmY0Yzk4NTgwNmYxYTkyIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRz
L3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CisrKyBiL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKQEAgLTMyNyw3ICszMjcs
NyBAQCBjbGFzcyBSZXBsYXlQZXJmVGVzdChQYWdlTG9hZGluZ1BlcmZUZXN0KToKIAogICAgICAg
ICBfbG9nLmluZm8oIlByZXBhcmluZyByZXBsYXkgZm9yICVzIiAlIHNlbGYudGVzdF9uYW1lKCkp
CiAKLSAgICAgICAgZHJpdmVyID0gc2VsZi5fcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtlcl9udW1i
ZXI9MSwgbm9fdGltZW91dD1UcnVlKQorICAgICAgICBkcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0
ZV9kcml2ZXIod29ya2VyX251bWJlcj0wLCBub190aW1lb3V0PVRydWUpCiAgICAgICAgIHRyeToK
ICAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3NpbmdsZShkcml2ZXIsIHNlbGYuX2FyY2hp
dmVfcGF0aCwgdGltZV9vdXRfbXMsIHJlY29yZD1UcnVlKQogICAgICAgICBmaW5hbGx5OgpkaWZm
IC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVz
dHNydW5uZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weQppbmRleCA0MmUwZDk2ZTExYTY1MjA1ZDE4YzA2OThjMjhjZTBmOGM2
M2MxZjJjLi4wZmUwM2JlYjYxNWQwMDQzMTczYWZiMzA3Y2ZlMTFlNDMwMjFjMzNjIDEwMDc1NQot
LS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lci5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3Bl
cmZ0ZXN0c3J1bm5lci5weQpAQCAtNjgsNiArNjgsOCBAQCBjbGFzcyBQZXJmVGVzdHNSdW5uZXIo
b2JqZWN0KToKICAgICAgICAgc2VsZi5fYmFzZV9wYXRoID0gc2VsZi5fcG9ydC5wZXJmX3Rlc3Rz
X2RpcigpCiAgICAgICAgIHNlbGYuX3Jlc3VsdHMgPSB7fQogICAgICAgICBzZWxmLl90aW1lc3Rh
bXAgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLl9uZWVkc19odHRwID0gTm9uZQorICAgICAg
ICBzZWxmLl9oYXNfaHR0cF9sb2NrID0gRmFsc2UKIAogICAgIEBzdGF0aWNtZXRob2QKICAgICBk
ZWYgX3BhcnNlX2FyZ3MoYXJncz1Ob25lKToKQEAgLTgzLDYgKzg1LDggQEAgY2xhc3MgUGVyZlRl
c3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgICAgICAgICAgaGVscD0iU3BlY2lmeSBwb3J0L3Bs
YXRmb3JtIGJlaW5nIHRlc3RlZCAoaS5lLiBjaHJvbWl1bS1tYWMpIiksCiAgICAgICAgICAgICBv
cHRwYXJzZS5tYWtlX29wdGlvbigiLS1jaHJvbWl1bSIsCiAgICAgICAgICAgICAgICAgYWN0aW9u
PSJzdG9yZV9jb25zdCIsIGNvbnN0PSdjaHJvbWl1bScsIGRlc3Q9J3BsYXRmb3JtJywgaGVscD0n
QWxpYXMgZm9yIC0tcGxhdGZvcm09Y2hyb21pdW0nKSwKKyAgICAgICAgICAgIG9wdHBhcnNlLm1h
a2Vfb3B0aW9uKCItLWNocm9taXVtLWFuZHJvaWQiLAorICAgICAgICAgICAgICAgIGFjdGlvbj0i
c3RvcmVfY29uc3QiLCBjb25zdD0nY2hyb21pdW0tYW5kcm9pZCcsIGRlc3Q9J3BsYXRmb3JtJywg
aGVscD0nQWxpYXMgZm9yIC0tcGxhdGZvcm09Y2hyb21pdW0tYW5kcm9pZCcpLAogICAgICAgICAg
ICAgb3B0cGFyc2UubWFrZV9vcHRpb24oIi0tYnVpbGRlci1uYW1lIiwKICAgICAgICAgICAgICAg
ICBoZWxwPSgiVGhlIG5hbWUgb2YgdGhlIGJ1aWxkZXIgc2hvd24gb24gdGhlIHdhdGVyZmFsbCBy
dW5uaW5nIHRoaXMgc2NyaXB0IGUuZy4gZ29vZ2xlLW1hYy0yLiIpKSwKICAgICAgICAgICAgIG9w
dHBhcnNlLm1ha2Vfb3B0aW9uKCItLWJ1aWxkLW51bWJlciIsCkBAIC0xNTEsOCArMTU1LDIxIEBA
IGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiB0ZXN0cwog
CisgICAgZGVmIF9zdGFydF9zZXJ2ZXJzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9uZWVkc19o
dHRwOgorICAgICAgICAgICAgc2VsZi5fcG9ydC5hY3F1aXJlX2h0dHBfbG9jaygpCisgICAgICAg
ICAgICBzZWxmLl9wb3J0LnN0YXJ0X2h0dHBfc2VydmVyKG51bWJlcl9vZl9zZXJ2ZXJzPTIpCisg
ICAgICAgICAgICBzZWxmLl9oYXNfaHR0cF9sb2NrID0gVHJ1ZQorCisgICAgZGVmIF9zdG9wX3Nl
cnZlcnMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX2hhc19odHRwX2xvY2s6CisgICAgICAgICAg
ICBzZWxmLl9wb3J0LnN0b3BfaHR0cF9zZXJ2ZXIoKQorICAgICAgICAgICAgc2VsZi5fcG9ydC5y
ZWxlYXNlX2h0dHBfbG9jaygpCisKICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBpZiBub3Qg
c2VsZi5fcG9ydC5jaGVja19idWlsZChuZWVkc19odHRwPUZhbHNlKToKKyAgICAgICAgc2VsZi5f
bmVlZHNfaHR0cCA9IHNlbGYuX3BvcnQucmVxdWlyZXNfaHR0cF9zZXJ2ZXIoKQorCisgICAgICAg
IGlmIG5vdCBzZWxmLl9wb3J0LmNoZWNrX2J1aWxkKG5lZWRzX2h0dHA9c2VsZi5fbmVlZHNfaHR0
cCk6CiAgICAgICAgICAgICBfbG9nLmVycm9yKCJCdWlsZCBub3QgdXAgdG8gZGF0ZSBmb3IgJXMi
ICUgc2VsZi5fcG9ydC5fcGF0aF90b19kcml2ZXIoKSkKICAgICAgICAgICAgIHJldHVybiBzZWxm
LkVYSVRfQ09ERV9CQURfQlVJTEQKIApAQCAtMTYzLDcgKzE4MCwxMyBAQCBjbGFzcyBQZXJmVGVz
dHNSdW5uZXIob2JqZWN0KToKICAgICAgICAgICAgIGlmIG5vdCB0ZXN0LnByZXBhcmUoc2VsZi5f
b3B0aW9ucy50aW1lX291dF9tcyk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuRVhJVF9D
T0RFX0JBRF9QUkVQQVJBVElPTgogCi0gICAgICAgIHVuZXhwZWN0ZWQgPSBzZWxmLl9ydW5fdGVz
dHNfc2V0KHNvcnRlZChsaXN0KHRlc3RzKSwga2V5PWxhbWJkYSB0ZXN0OiB0ZXN0LnRlc3RfbmFt
ZSgpKSwgc2VsZi5fcG9ydCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5fc3RhcnRf
c2VydmVycygpCisgICAgICAgICAgICB1bmV4cGVjdGVkID0gc2VsZi5fcnVuX3Rlc3RzX3NldChz
b3J0ZWQobGlzdCh0ZXN0cyksIGtleT1sYW1iZGEgdGVzdDogdGVzdC50ZXN0X25hbWUoKSksIHNl
bGYuX3BvcnQpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIHNlbGYuX3N0b3Bfc2Vy
dmVycygpCisKICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5nZW5lcmF0ZV9yZXN1bHRzOgogICAg
ICAgICAgICAgZXhpdF9jb2RlID0gc2VsZi5fZ2VuZXJhdGVfYW5kX3Nob3dfcmVzdWx0cygpCiAg
ICAgICAgICAgICBpZiBleGl0X2NvZGU6CkBAIC0yOTAsNyArMzEzLDcgQEAgY2xhc3MgUGVyZlRl
c3RzUnVubmVyKG9iamVjdCk6CiAgICAgICAgIGRyaXZlciA9IE5vbmUKIAogICAgICAgICBmb3Ig
dGVzdCBpbiB0ZXN0czoKLSAgICAgICAgICAgIGRyaXZlciA9IHBvcnQuY3JlYXRlX2RyaXZlcih3
b3JrZXJfbnVtYmVyPTEsIG5vX3RpbWVvdXQ9VHJ1ZSkKKyAgICAgICAgICAgIGRyaXZlciA9IHBv
cnQuY3JlYXRlX2RyaXZlcih3b3JrZXJfbnVtYmVyPTAsIG5vX3RpbWVvdXQ9VHJ1ZSkKIAogICAg
ICAgICAgICAgaWYgc2VsZi5fb3B0aW9ucy5wYXVzZV9iZWZvcmVfdGVzdGluZzoKICAgICAgICAg
ICAgICAgICBkcml2ZXIuc3RhcnQoKQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>176346</attachid>
            <date>2012-11-27 15:02:14 -0800</date>
            <delta_ts>2012-11-27 15:27:53 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-103268-20121127145951.patch</filename>
            <type>text/plain</type>
            <size>9025</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1ODgxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjE5MzFlZmJlODE1NGY1Mjc3OTZkOGIwNzFmNGIwOWQy
Y2I0MDc3OS4uYmM0NGM2MjFhMWRhZjg3NzBkZDJmM2QxMjFkOWMwZGU3ZTRiMjg4MiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQz
IEBACisyMDEyLTExLTI3ICBBZGFtIEJhcnRoICA8YWJhcnRoQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgTWFrZSBpdCBwb3NzaWJsZSB0byBydW4gcGVyZm9ybWFuY2UgdGVzdHMgb24gQ2hyb21pdW0g
QW5kcm9pZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAzMjY4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIEJh
c2VkIG9uIGEgcGF0Y2ggYnkgUGV0ZXIgQmV2ZXJsb28uCisKKyAgICAgICAgVGhpcyBwYXRjaCAo
YWxtb3N0KSBtYWtlcyBpdCBwb3NzaWJsZSB0byBydW4gV2ViS2l0IHBlcmZvcm1hbmNlIHRlc3Rz
CisgICAgICAgIG9uIHRoZSBDaHJvbWl1bSBwb3J0IGZvciBBbmRyb2lkLiBUaGVyZSBhcmUgYSBm
ZXcgdGhpbmdzIEkgaGFkIHRvIGRvCisgICAgICAgIGluIG9yZGVyIHRvIG1ha2UgdGhpcyBoYXBw
ZW46CisKKyAgICAgICAgMSkgVGhlIHdvcmtlciBudW1iZXIgd2hlbiBjcmVhdGluZyBhIGRyaXZl
ciBmb3IgYSBwb3J0IGlzIHplcm8tYmFzZWQKKyAgICAgICAgICAgZm9yIGxheW91dCB0ZXN0cyBh
bmQgZWxzZXdoZXJlLiBBbmRyb2lkIHVzZXMgdGhpcyB0byBkZXRlcm1pbmUKKyAgICAgICAgICAg
d2hpY2ggZGV2aWNlIGl0IGhhcyB0byBydW4gb24sIHNvIG1ha2UgaXQgemVybyBiYXNlZCBmb3Ig
cGVyZm9ybWFuY2UKKyAgICAgICAgICAgdGVzdHMgYXMgd2VsbC4KKworICAgICAgICAyKSBUZXN0
cyBhcmVuJ3QgYXZhaWxhYmxlIG9uIHRoZSBBbmRyb2lkIGRldmljZSwgc28gd2Ugc3RhcnQgYW4g
SFRUUAorICAgICAgICAgICBzZXJ2ZXIgdGhhdCBzZXJ2ZXMgdGhlIHRlc3RzIHRvIHRoZSBkZXZp
Y2Ugb3IgZW11bGF0b3IuCisKKyAgICAgICAgVGhlIG9uZSBzaG9ydGNvbWluZyBvZiB0aGlzIHBh
dGNoIGlzIHRoYXQgY2hyb21pdW0tYW5kcm9pZCBwcm9kdWNlcworICAgICAgICBzb21lIHN0ZGVy
ciBvdXRwdXQgdGhhdCBjb25mdXNlcyBydW4tcGVyZi10ZXN0cy4gSSdsbCBhZGRyZXNzIHRoYXQK
KyAgICAgICAgaXNzdWUgaW4gYSBzdWJzZXF1ZW50IENMLiBUaGlzIHBhdGNoIGFsc28gZGVwZW5k
cyBvbgorICAgICAgICBodHRwczovL2NvZGVyZXZpZXcuY2hyb21pdW0ub3JnLzExNDE2MTgyIGlu
IG9yZGVyIHRvIHdvcmsuCisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0
cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHk6CisgICAgICAgIChDaHJvbWl1bUFuZHJvaWRQb3J0
LnN0YXJ0X2h0dHBfc2VydmVyKToKKyAgICAgICAgKENocm9taXVtQW5kcm9pZERyaXZlci5fY29t
bWFuZF9mcm9tX2RyaXZlcl9pbnB1dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJm
b3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weToKKyAgICAgICAgKFJlcGxheVBlcmZUZXN0LnByZXBh
cmUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyLnB5OgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9faW5pdF9fKToKKyAgICAg
ICAgKFBlcmZUZXN0c1J1bm5lci5fcGFyc2VfYXJncyk6CisgICAgICAgIChQZXJmVGVzdHNSdW5u
ZXIuX3N0YXJ0X3NlcnZlcnMpOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyKToKKyAgICAgICAg
KFBlcmZUZXN0c1J1bm5lci5fc3RvcF9zZXJ2ZXJzKToKKyAgICAgICAgKFBlcmZUZXN0c1J1bm5l
ci5ydW4pOgorICAgICAgICAoUGVyZlRlc3RzUnVubmVyLl9ydW5fdGVzdHNfc2V0KToKKwogMjAx
Mi0xMS0yNyAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
QWRkIGNhbGxiYWNrcyB0byB0aGUgRnJhbWVMb2FkZXJDbGllbnQgd2hlbiBhIHJlc291cmNlIGlz
IHJlcXVlc3RlZApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvcG9ydC9jaHJvbWl1bV9hbmRyb2lkLnB5CmluZGV4IGEwNzdkYzkyZTQyZjBjYmVi
NDk2ZDliNmIyMjEyMjY4ZWE2MDlhM2MuLmMxOGNkMDk0MTg0M2IwMzA1MTM0NGM4NWU2NTQxOGIw
MDU3ZmQwODAgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvY2hyb21pdW1fYW5kcm9pZC5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9wb3J0L2Nocm9taXVtX2FuZHJvaWQucHkKQEAgLTY4LDcgKzY4LDkgQEAgU0NB
TElOR19HT1ZFUk5PUlNfUEFUVEVSTiA9ICIvc3lzL2RldmljZXMvc3lzdGVtL2NwdS9jcHUqL2Nw
dWZyZXEvc2NhbGluZ19nb3Zlcm4KICMgQWxsIHRoZSB0ZXN0IGNhc2VzIGFyZSBzdGlsbCBzZXJ2
ZWQgdG8gRHVtcFJlbmRlclRyZWUgdGhyb3VnaCBmaWxlIHByb3RvY29sLAogIyBidXQgd2UgdXNl
IGEgZmlsZS10by1odHRwIGZlYXR1cmUgdG8gYnJpZGdlIHRoZSBmaWxlIHJlcXVlc3QgdG8gaG9z
dCdzIGh0dHAKICMgc2VydmVyIHRvIGdldCB0aGUgcmVhbCB0ZXN0IGZpbGVzIGFuZCBjb3JyZXNw
b25kaW5nIHJlc291cmNlcy4KLVRFU1RfUEFUSF9QUkVGSVggPSAnL2FsbC10ZXN0cycKKyMgU2Vl
IHdlYmtpdC9zdXBwb3J0L3BsYXRmb3JtX3N1cHBvcnRfYW5kcm9pZC5jYyBmb3IgdGhlIG90aGVy
IHNpZGUgb2YgdGhpcyBicmlkZ2UuCitQRVJGX1RFU1RfUEFUSF9QUkVGSVggPSAnL2FsbC1wZXJm
LXRlc3RzJworTEFZT1VUX1RFU1RfUEFUSF9QUkVGSVggPSAnL2FsbC10ZXN0cycKIAogIyBBbGwg
cG9ydHMgdGhlIEFuZHJvaWQgZm9yd2FyZGVyIHRvIGZvcndhcmQuCiAjIDgwMDAsIDgwODAgYW5k
IDg0NDMgYXJlIGZvciBodHRwL2h0dHBzIHRlc3RzLgpAQCAtMTI5LDcgKzEzMSw4IEBAIERFVklD
RV9GT05UU19ESVIgPSBERVZJQ0VfRFJUX0RJUiArICdmb250cy8nCiAjIDEuIGFzIGEgdmlydHVh
bCBwYXRoIGluIGZpbGUgdXJscyB0aGF0IHdpbGwgYmUgYnJpZGdlZCB0byBIVFRQLgogIyAyLiBw
b2ludGluZyB0byBzb21lIGZpbGVzIHRoYXQgYXJlIHB1c2hlZCB0byB0aGUgZGV2aWNlIGZvciB0
ZXN0cyB0aGF0CiAjIGRvbid0IHdvcmsgb24gZmlsZS1vdmVyLWh0dHAgKGUuZy4gYmxvYiBwcm90
b2NvbCB0ZXN0cykuCi1ERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUiA9IERFVklDRV9TT1VSQ0VfUk9P
VF9ESVIgKyAndGhpcmRfcGFydHkvV2ViS2l0L0xheW91dFRlc3RzLycKK0RFVklDRV9XRUJLSVRf
QkFTRV9ESVIgPSBERVZJQ0VfU09VUkNFX1JPT1RfRElSICsgJ3RoaXJkX3BhcnR5L1dlYktpdC8n
CitERVZJQ0VfTEFZT1VUX1RFU1RTX0RJUiA9IERFVklDRV9XRUJLSVRfQkFTRV9ESVIgKyAnTGF5
b3V0VGVzdHMvJwogCiAjIFRlc3QgcmVzb3VyY2VzIHRoYXQgbmVlZCB0byBiZSBhY2Nlc3NlZCBh
cyBmaWxlcyBkaXJlY3RseS4KICMgRWFjaCBpdGVtIGNhbiBiZSB0aGUgcmVsYXRpdmUgcGF0aCBv
ZiBhIGRpcmVjdG9yeSBvciBhIGZpbGUuCkBAIC0yNDIsNyArMjQ1LDggQEAgY2xhc3MgQ2hyb21p
dW1BbmRyb2lkUG9ydChjaHJvbWl1bS5DaHJvbWl1bVBvcnQpOgogICAgIGRlZiBzdGFydF9odHRw
X3NlcnZlcihzZWxmLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwgbnVtYmVyX29mX3NlcnZlcnM9MCk6
CiAgICAgICAgIGlmIG5vdCBhZGRpdGlvbmFsX2RpcnM6CiAgICAgICAgICAgICBhZGRpdGlvbmFs
X2RpcnMgPSB7fQotICAgICAgICBhZGRpdGlvbmFsX2RpcnNbVEVTVF9QQVRIX1BSRUZJWF0gPSBz
ZWxmLmxheW91dF90ZXN0c19kaXIoKQorICAgICAgICBhZGRpdGlvbmFsX2RpcnNbUEVSRl9URVNU
X1BBVEhfUFJFRklYXSA9IHNlbGYucGVyZl90ZXN0c19kaXIoKQorICAgICAgICBhZGRpdGlvbmFs
X2RpcnNbTEFZT1VUX1RFU1RfUEFUSF9QUkVGSVhdID0gc2VsZi5sYXlvdXRfdGVzdHNfZGlyKCkK
ICAgICAgICAgc3VwZXIoQ2hyb21pdW1BbmRyb2lkUG9ydCwgc2VsZikuc3RhcnRfaHR0cF9zZXJ2
ZXIoYWRkaXRpb25hbF9kaXJzLCBudW1iZXJfb2Zfc2VydmVycykKIAogICAgIGRlZiBjcmVhdGVf
ZHJpdmVyKHNlbGYsIHdvcmtlcl9udW1iZXIsIG5vX3RpbWVvdXQ9RmFsc2UpOgpAQCAtNjY1LDEw
ICs2NjksMTAgQEAgY2xhc3MgQ2hyb21pdW1BbmRyb2lkRHJpdmVyKGRyaXZlci5Ecml2ZXIpOgog
ICAgIGRlZiBfY29tbWFuZF9mcm9tX2RyaXZlcl9pbnB1dChzZWxmLCBkcml2ZXJfaW5wdXQpOgog
ICAgICAgICBjb21tYW5kID0gc3VwZXIoQ2hyb21pdW1BbmRyb2lkRHJpdmVyLCBzZWxmKS5fY29t
bWFuZF9mcm9tX2RyaXZlcl9pbnB1dChkcml2ZXJfaW5wdXQpCiAgICAgICAgIGlmIGNvbW1hbmQu
c3RhcnRzd2l0aCgnLycpOgotICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBob3N0IGZpbGUgcGF0
aCB0byBhIGRldmljZSBmaWxlIHBhdGguIFNlZSBjb21tZW50IG9mCi0gICAgICAgICAgICAjIERF
VklDRV9MQVlPVVRfVEVTVFNfRElSIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgZnMgPSBzZWxm
Ll9wb3J0Ll9maWxlc3lzdGVtCiAgICAgICAgICAgICAjIEZJWE1FOiB3aGF0IGhhcHBlbnMgaWYg
Y29tbWFuZCBsaWVzIG91dHNpZGUgb2YgdGhlIGxheW91dF90ZXN0c19kaXIgb24gdGhlIGhvc3Q/
Ci0gICAgICAgICAgICBjb21tYW5kID0gREVWSUNFX0xBWU9VVF9URVNUU19ESVIgKyBzZWxmLl9w
b3J0LnJlbGF0aXZlX3Rlc3RfZmlsZW5hbWUoY29tbWFuZCkKKyAgICAgICAgICAgIHJlbGF0aXZl
X3Rlc3RfZmlsZW5hbWUgPSBmcy5yZWxwYXRoKGNvbW1hbmQsIGZzLmRpcm5hbWUoc2VsZi5fcG9y
dC5sYXlvdXRfdGVzdHNfZGlyKCkpKQorICAgICAgICAgICAgY29tbWFuZCA9IERFVklDRV9XRUJL
SVRfQkFTRV9ESVIgKyByZWxhdGl2ZV90ZXN0X2ZpbGVuYW1lCiAgICAgICAgIHJldHVybiBjb21t
YW5kCiAKICAgICBkZWYgX3JlYWRfcHJvbXB0KHNlbGYsIGRlYWRsaW5lKToKZGlmZiAtLWdpdCBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkgYi9U
b29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CmluZGV4
IDllMmY4N2Q0N2UyNDg3MDM2Yzc5OGMzNTlmN2Q1M2MyZmM0MDJkMmYuLjJiYzE2NDQ2NzkxYzM3
YmQyYzgwZGYxZmIyZjRjOTg1ODA2ZjFhOTIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQpAQCAtMzI3LDcgKzMyNyw3IEBA
IGNsYXNzIFJlcGxheVBlcmZUZXN0KFBhZ2VMb2FkaW5nUGVyZlRlc3QpOgogCiAgICAgICAgIF9s
b2cuaW5mbygiUHJlcGFyaW5nIHJlcGxheSBmb3IgJXMiICUgc2VsZi50ZXN0X25hbWUoKSkKIAot
ICAgICAgICBkcml2ZXIgPSBzZWxmLl9wb3J0LmNyZWF0ZV9kcml2ZXIod29ya2VyX251bWJlcj0x
LCBub190aW1lb3V0PVRydWUpCisgICAgICAgIGRyaXZlciA9IHNlbGYuX3BvcnQuY3JlYXRlX2Ry
aXZlcih3b3JrZXJfbnVtYmVyPTAsIG5vX3RpbWVvdXQ9VHJ1ZSkKICAgICAgICAgdHJ5OgogICAg
ICAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fc2luZ2xlKGRyaXZlciwgc2VsZi5fYXJjaGl2ZV9w
YXRoLCB0aW1lX291dF9tcywgcmVjb3JkPVRydWUpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0c3J1
bm5lci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyLnB5CmluZGV4IDQyZTBkOTZlMTFhNjUyMDVkMThjMDY5OGMyOGNlMGY4YzYzYzFm
MmMuLjBmZTAzYmViNjE1ZDAwNDMxNzNhZmIzMDdjZmUxMWU0MzAyMWMzM2MgMTAwNzU1Ci0tLSBh
L1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3RzcnVubmVy
LnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3RzcnVubmVyLnB5CkBAIC02OCw2ICs2OCw4IEBAIGNsYXNzIFBlcmZUZXN0c1J1bm5lcihvYmpl
Y3QpOgogICAgICAgICBzZWxmLl9iYXNlX3BhdGggPSBzZWxmLl9wb3J0LnBlcmZfdGVzdHNfZGly
KCkKICAgICAgICAgc2VsZi5fcmVzdWx0cyA9IHt9CiAgICAgICAgIHNlbGYuX3RpbWVzdGFtcCA9
IHRpbWUudGltZSgpCisgICAgICAgIHNlbGYuX25lZWRzX2h0dHAgPSBOb25lCisgICAgICAgIHNl
bGYuX2hhc19odHRwX2xvY2sgPSBGYWxzZQogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBf
cGFyc2VfYXJncyhhcmdzPU5vbmUpOgpAQCAtODMsNiArODUsOCBAQCBjbGFzcyBQZXJmVGVzdHNS
dW5uZXIob2JqZWN0KToKICAgICAgICAgICAgICAgICBoZWxwPSJTcGVjaWZ5IHBvcnQvcGxhdGZv
cm0gYmVpbmcgdGVzdGVkIChpLmUuIGNocm9taXVtLW1hYykiKSwKICAgICAgICAgICAgIG9wdHBh
cnNlLm1ha2Vfb3B0aW9uKCItLWNocm9taXVtIiwKICAgICAgICAgICAgICAgICBhY3Rpb249InN0
b3JlX2NvbnN0IiwgY29uc3Q9J2Nocm9taXVtJywgZGVzdD0ncGxhdGZvcm0nLCBoZWxwPSdBbGlh
cyBmb3IgLS1wbGF0Zm9ybT1jaHJvbWl1bScpLAorICAgICAgICAgICAgb3B0cGFyc2UubWFrZV9v
cHRpb24oIi0tY2hyb21pdW0tYW5kcm9pZCIsCisgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9y
ZV9jb25zdCIsIGNvbnN0PSdjaHJvbWl1bS1hbmRyb2lkJywgZGVzdD0ncGxhdGZvcm0nLCBoZWxw
PSdBbGlhcyBmb3IgLS1wbGF0Zm9ybT1jaHJvbWl1bS1hbmRyb2lkJyksCiAgICAgICAgICAgICBv
cHRwYXJzZS5tYWtlX29wdGlvbigiLS1idWlsZGVyLW5hbWUiLAogICAgICAgICAgICAgICAgIGhl
bHA9KCJUaGUgbmFtZSBvZiB0aGUgYnVpbGRlciBzaG93biBvbiB0aGUgd2F0ZXJmYWxsIHJ1bm5p
bmcgdGhpcyBzY3JpcHQgZS5nLiBnb29nbGUtbWFjLTIuIikpLAogICAgICAgICAgICAgb3B0cGFy
c2UubWFrZV9vcHRpb24oIi0tYnVpbGQtbnVtYmVyIiwKQEAgLTE1MSw4ICsxNTUsMjEgQEAgY2xh
c3MgUGVyZlRlc3RzUnVubmVyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHRlc3RzCiAKKyAg
ICBkZWYgX3N0YXJ0X3NlcnZlcnMoc2VsZik6CisgICAgICAgIGlmIHNlbGYuX25lZWRzX2h0dHA6
CisgICAgICAgICAgICBzZWxmLl9wb3J0LmFjcXVpcmVfaHR0cF9sb2NrKCkKKyAgICAgICAgICAg
IHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIobnVtYmVyX29mX3NlcnZlcnM9MikKKyAgICAg
ICAgICAgIHNlbGYuX2hhc19odHRwX2xvY2sgPSBUcnVlCisKKyAgICBkZWYgX3N0b3Bfc2VydmVy
cyhzZWxmKToKKyAgICAgICAgaWYgc2VsZi5faGFzX2h0dHBfbG9jazoKKyAgICAgICAgICAgIHNl
bGYuX3BvcnQuc3RvcF9odHRwX3NlcnZlcigpCisgICAgICAgICAgICBzZWxmLl9wb3J0LnJlbGVh
c2VfaHR0cF9sb2NrKCkKKwogICAgIGRlZiBydW4oc2VsZik6Ci0gICAgICAgIGlmIG5vdCBzZWxm
Ll9wb3J0LmNoZWNrX2J1aWxkKG5lZWRzX2h0dHA9RmFsc2UpOgorICAgICAgICBzZWxmLl9uZWVk
c19odHRwID0gc2VsZi5fcG9ydC5yZXF1aXJlc19odHRwX3NlcnZlcigpCisKKyAgICAgICAgaWYg
bm90IHNlbGYuX3BvcnQuY2hlY2tfYnVpbGQobmVlZHNfaHR0cD1zZWxmLl9uZWVkc19odHRwKToK
ICAgICAgICAgICAgIF9sb2cuZXJyb3IoIkJ1aWxkIG5vdCB1cCB0byBkYXRlIGZvciAlcyIgJSBz
ZWxmLl9wb3J0Ll9wYXRoX3RvX2RyaXZlcigpKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuRVhJ
VF9DT0RFX0JBRF9CVUlMRAogCkBAIC0xNjMsNyArMTgwLDEzIEBAIGNsYXNzIFBlcmZUZXN0c1J1
bm5lcihvYmplY3QpOgogICAgICAgICAgICAgaWYgbm90IHRlc3QucHJlcGFyZShzZWxmLl9vcHRp
b25zLnRpbWVfb3V0X21zKToKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5FWElUX0NPREVf
QkFEX1BSRVBBUkFUSU9OCiAKLSAgICAgICAgdW5leHBlY3RlZCA9IHNlbGYuX3J1bl90ZXN0c19z
ZXQoc29ydGVkKGxpc3QodGVzdHMpLCBrZXk9bGFtYmRhIHRlc3Q6IHRlc3QudGVzdF9uYW1lKCkp
LCBzZWxmLl9wb3J0KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzZWxmLl9zdGFydF9zZXJ2
ZXJzKCkKKyAgICAgICAgICAgIHVuZXhwZWN0ZWQgPSBzZWxmLl9ydW5fdGVzdHNfc2V0KHNvcnRl
ZChsaXN0KHRlc3RzKSwga2V5PWxhbWJkYSB0ZXN0OiB0ZXN0LnRlc3RfbmFtZSgpKSwgc2VsZi5f
cG9ydCkKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VsZi5fc3RvcF9zZXJ2ZXJz
KCkKKwogICAgICAgICBpZiBzZWxmLl9vcHRpb25zLmdlbmVyYXRlX3Jlc3VsdHM6CiAgICAgICAg
ICAgICBleGl0X2NvZGUgPSBzZWxmLl9nZW5lcmF0ZV9hbmRfc2hvd19yZXN1bHRzKCkKICAgICAg
ICAgICAgIGlmIGV4aXRfY29kZToKQEAgLTI5MCw3ICszMTMsNyBAQCBjbGFzcyBQZXJmVGVzdHNS
dW5uZXIob2JqZWN0KToKICAgICAgICAgZHJpdmVyID0gTm9uZQogCiAgICAgICAgIGZvciB0ZXN0
IGluIHRlc3RzOgotICAgICAgICAgICAgZHJpdmVyID0gcG9ydC5jcmVhdGVfZHJpdmVyKHdvcmtl
cl9udW1iZXI9MSwgbm9fdGltZW91dD1UcnVlKQorICAgICAgICAgICAgZHJpdmVyID0gcG9ydC5j
cmVhdGVfZHJpdmVyKHdvcmtlcl9udW1iZXI9MCwgbm9fdGltZW91dD1UcnVlKQogCiAgICAgICAg
ICAgICBpZiBzZWxmLl9vcHRpb25zLnBhdXNlX2JlZm9yZV90ZXN0aW5nOgogICAgICAgICAgICAg
ICAgIGRyaXZlci5zdGFydCgpCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>