<?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>88134</bug_id>
          
          <creation_ts>2012-06-01 14:12:17 -0700</creation_ts>
          <short_desc>new-run-webkit-tests should spin-up enough httpd processes to avoid timeouts</short_desc>
          <delta_ts>2012-06-20 12:58:17 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>NRWT</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ami Fischman">fischman</reporter>
          <assigned_to name="Dirk Pranke">dpranke</assigned_to>
          <cc>abarth</cc>
    
    <cc>dpranke</cc>
    
    <cc>fischman</cc>
    
    <cc>ojan</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>639705</commentid>
    <comment_count>0</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 14:12:17 -0700</bug_when>
    <thetext>I noticed recently that on my z600/chromium/linux/16-core setup if I run a test (e.g. http/tests/media/video-buffered.html) with --iterations=100 (or 1000), the first 1-3 runs pass, then the next 13-15 runs timeout, and then the rest pass.  If I bump the {{Min,Max}Spare},Start}Servers to 16 in http://trac.webkit.org/browser/trunk/LayoutTests/http/conf/apache2-debian-httpd.conf then I get a 100% pass rate.  My guess is that spinning up the new apache processes is eating too much of the test&apos;s timeout budget, but once they&apos;re spun up the test does fine.

Is there a reason not to always run with extra processes?  (what&apos;s the minimum machine footprint n-r-w-t is expected to work on?)
IWBN if n-r-w-t could configure its httpd to run as many apache processes as DRT processes, but absent that kind of setup, would bumping the counts to 32 (or something else likely to be &gt;= #cores on dev machines) be acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639710</commentid>
    <comment_count>1</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 14:17:24 -0700</bug_when>
    <thetext>Apache is started from Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py. If you can set {{Min,Max}Spare},Start}Servers from the apache commandline, then we could make it use the same number of processes as DRT processes.

Seems worth a try.

(In reply to comment #0)
&gt; My guess is that spinning up the new apache processes is eating too much of the test&apos;s timeout budget, but once they&apos;re spun up the test does fine.

If we&apos;re including the time to start apache in the test&apos;s timeout budget that&apos;s also just a bug we should fix.

Dirk, WDYT?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639712</commentid>
    <comment_count>2</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 14:22:03 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; Apache is started from Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server.py. If you can set {{Min,Max}Spare},Start}Servers from the apache commandline, then we could make it use the same number of processes as DRT processes.
&gt; Seems worth a try.

Configuration directives can be passed on the apache2 command-line using -c (to override the httpd.conf) or -C (to allow httpd.conf to override cmdline).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639713</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 14:22:42 -0700</bug_when>
    <thetext>&gt; (In reply to comment #0)
&gt; &gt; My guess is that spinning up the new apache processes is eating too much of the test&apos;s timeout budget, but once they&apos;re spun up the test does fine.
&gt; 
&gt; If we&apos;re including the time to start apache in the test&apos;s timeout budget that&apos;s also just a bug we should fix.

At a quick glance at the code, we wait and check that the http server is correctly started up and responding to requests before we try to run any http tests, so I doubt this is what&apos;s going on.

Unless our logic for testing whether the server is up and running is wrong. See _is_server_running_on_all_ports in Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py to see that code. It seems to me that connecting to the server via a socket should be a sufficient test, but maybe it&apos;s not.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639716</commentid>
    <comment_count>4</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 14:26:21 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; &gt; (In reply to comment #0)
&gt; &gt; &gt; My guess is that spinning up the new apache processes is eating too much of the test&apos;s timeout budget, but once they&apos;re spun up the test does fine.
&gt; &gt; 
&gt; &gt; If we&apos;re including the time to start apache in the test&apos;s timeout budget that&apos;s also just a bug we should fix.
&gt; 
&gt; At a quick glance at the code, we wait and check that the http server is correctly started up and responding to requests before we try to run any http tests, so I doubt this is what&apos;s going on.
&gt; 
&gt; Unless our logic for testing whether the server is up and running is wrong. See _is_server_running_on_all_ports in Tools/Scripts/webkitpy/layout_tests/servers/http_server_base.py to see that code. It seems to me that connecting to the server via a socket should be a sufficient test, but maybe it&apos;s not.

The httpd.conf only requests a single httpd process to be started initially.
Apache uses a whole process (&quot;Server&quot; in httpd.conf-speak) to serve a request, and the only parallelism it supports is multi-process (one process per request).
So the existing conf requests a single process to start up, and the controller declares it started up when it can connect to the socket, which is all well and good, but as soon as the other 15 DRTs pile on their own requests, apache has to spin up 15 more httpd processes.  It&apos;s this spin-up that is currently (incorrectly) counted against the test&apos;s timeout budget.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639727</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 14:36:43 -0700</bug_when>
    <thetext>I didn&apos;t know that! That would clearly lead to flaky http tests! Please put together a patch (plus unittests) if you&apos;re willing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639729</commentid>
    <comment_count>6</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 14:37:44 -0700</bug_when>
    <thetext>This might even mean we could switch windows back to using Apache instead of lighttpd. Last time we tried to make that switch, it made the http tests more flaky. Would be great to get rid of the lighttpd configuration entirely (only chromium-win uses it now, we moved chromium-mac/linux back to Apache ages ago).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639731</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-01 14:38:56 -0700</bug_when>
    <thetext>I thought we ran http tests in serial?

Anyway, I think it would be good to bump the StartServers value to somewhere around 4 range and bump the MinSpareServers to a similar value.  It&apos;s probably common for a test to load 1 or 2 extra resources or make a few concurrent requests.

Do we actually get as high as 32 requests at once on a 32 core machine?  It would be nice if we could get Apache to log information about how many requests it&apos;s handling and pick a reasonable number based on that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639762</commentid>
    <comment_count>8</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-01 15:05:26 -0700</bug_when>
    <thetext>I think it makes sense to bump up StartServers to some smallish N * floor(--max-locked-shards, --child-processes) (since that controls the number of concurrent HTTP tests), since I agree it&apos;s likely there is more than one http request in flight per test. I have definitely seen the initial timeout issues on Linux (although, oddly, only on Linux). If that would solve the timeout issues then perhaps we could also increase the default -max-locked-shards beyond one, since that would be a big win on the bigger multicore machines.

I will play around with some approaches and post something.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639770</commentid>
    <comment_count>9</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 15:12:38 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I think it makes sense to bump up StartServers to some smallish N * floor(--max-locked-shards, --child-processes) (since that controls the number of concurrent HTTP tests), since I agree it&apos;s likely there is more than one http request in flight per test. I have definitely seen the initial timeout issues on Linux (although, oddly, only on Linux). If that would solve the timeout issues then perhaps we could also increase the default -max-locked-shards beyond one, since that would be a big win on the bigger multicore machines.
&gt; 
&gt; I will play around with some approaches and post something.

SGTM. Tony also mentioned that we could try running all the http tests with max-locked-shards=1 and see how many processes Apache starts up and set N to that (or maybe to that + 1 or 2).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639773</commentid>
    <comment_count>10</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 15:15:23 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; I thought we ran http tests in serial?

Nope; access_log confirms lots of requests coming in in the same second (for the same file).

&gt; Anyway, I think it would be good to bump the StartServers value to somewhere around 4 range and bump the MinSpareServers to a similar value.  It&apos;s probably common for a test to load 1 or 2 extra resources or make a few concurrent requests.

That&apos;s a good point - 2x#cores SGTM.

&gt; Do we actually get as high as 32 requests at once on a 32 core machine?  It would be nice if we could get Apache to log information about how many requests it&apos;s handling and pick a reasonable number based on that.

It&apos;s not easy to get that information from a conf change, but looking at the timestamps on the access log definitely confirms that it&apos;s serving a lot of concurrent DRTs (the test I pointed to above, video-buffered.html, uses the throttling CGI so each request ends up taking more than a second to serve, so I know the second-resolution timestamp is good enough to make this inference).

(In reply to comment #8)
&gt; I think it makes sense to bump up StartServers

Note that the other directives should also be bumped, or else you&apos;ll get reaping.

&gt; to some smallish N * floor(--max-locked-shards, --child-processes)

OOC, what&apos;s a &quot;locked shard&quot;?  I&apos;m esp. curious because here:

&gt; If that would solve the timeout issues then perhaps we could also increase the default -max-locked-shards beyond one, since that would be a big win on the bigger multicore machines.

I read you to say that max-locked-shards defaults to 1 on my machine, and that that means HTTP tests should run serially, but they clearly don&apos;t.

&gt; I will play around with some approaches and post something.

Thanks!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639780</commentid>
    <comment_count>11</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 15:19:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #7)
&gt; &gt; I thought we ran http tests in serial?
&gt; 
&gt; Nope; access_log confirms lots of requests coming in in the same second (for the same file).

Are these all sub-resources?

In theory, we run the http tests serially, but each test can load sub-resources in parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639781</commentid>
    <comment_count>12</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 15:20:02 -0700</bug_when>
    <thetext>&gt; In theory, we run the http tests serially, but each test can load sub-resources in parallel.

We&apos;ve love to run the http tests in parallel as well, but historically everytime we&apos;ve tried it&apos;s increased flakiness. Upping the number of processes might just be what we need to make it work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639783</commentid>
    <comment_count>13</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 15:23:28 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; (In reply to comment #10)
&gt; &gt; (In reply to comment #7)
&gt; &gt; &gt; I thought we ran http tests in serial?
&gt; &gt; 
&gt; &gt; Nope; access_log confirms lots of requests coming in in the same second (for the same file).
&gt; 
&gt; Are these all sub-resources?
&gt; 
&gt; In theory, we run the http tests serially, but each test can load sub-resources in parallel.

Each test loads a single .wav file through the throttle CGI.  I think this proves that multiple instances of the test are running in parallel:

127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138
127.0.0.1 - - [01/Jun/2012:14:59:46 -0700] &quot;GET /media/video-throttled-load.cgi?nph=1&amp;name=../../../media/content/test.wav&amp;throttle=100&amp;type=audio/wav HTTP/1.1&quot; 206 121138


Perhaps the distinction is that I&apos;m running a single test with --iterations=100, and that if I was running 100 distinct tests they&apos;d be serialized?
(and that the lack of serialization is considered a bug?)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639785</commentid>
    <comment_count>14</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-01 15:26:04 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; to some smallish N * floor(--max-locked-shards, --child-processes)
&gt; 
&gt; OOC, what&apos;s a &quot;locked shard&quot;?  I&apos;m esp. curious because here:
&gt;

a &quot;locked shard&quot; is a shard that contains tests that require us to have the &quot;global lock&quot;, meaning that only one NRWT can be running those tests at once (that&apos;s one manager, not one child process / DRT). This is designed to accomodate people like the Qt port that actually run multiple bots at a time on the same hardware.

That said, we also default to only one locked shard running at a time, and only one run one test at a time per shard. So, there should only be one HTTP test running at a time. It is certainly possible that we&apos;re issuing multiple requests per test, and it&apos;s possible that since we&apos;re running multiple tests per second you could get multiple requests for the same subresources in the same second.

Note that if you run with -f/--experimental-fully-parallel, that overrides the default calculation, so, yeah, we&apos;d be getting multiple http tests simultaneously, but you didn&apos;t mention that flag before.

Failing that, running with --verbose (or at least --print config) will tell you how many locked shards will run concurrently.

If you have access logs showing something other than one test being run concurrently with locked shards == 1, I would be highly curious. That shouldn&apos;t be possible. (I&apos;d be happy to look at / interpret / analyze the logs regardless).

--iterations shouldn&apos;t affect anything I&apos;m talking about. Do you by chance have (or can make) an excerpt from the --verbose logging for the same time period of the testing?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639793</commentid>
    <comment_count>15</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 15:37:23 -0700</bug_when>
    <thetext>(In reply to comment #14)
&gt; Note that if you run with -f/--experimental-fully-parallel, that overrides the default calculation, so, yeah, we&apos;d be getting multiple http tests simultaneously, but you didn&apos;t mention that flag before.

Bingo.  I&apos;m using -f.
Let me know if you want me to generate any logs (assuming not since -f explains mismatch; 100 locked shards).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639795</commentid>
    <comment_count>16</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 15:42:14 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (In reply to comment #14)
&gt; &gt; Note that if you run with -f/--experimental-fully-parallel, that overrides the default calculation, so, yeah, we&apos;d be getting multiple http tests simultaneously, but you didn&apos;t mention that flag before.
&gt; 
&gt; Bingo.  I&apos;m using -f.
&gt; Let me know if you want me to generate any logs (assuming not since -f explains mismatch; 100 locked shards).

Yes, -f runs everything in parallel, but increases flakiness. If we can get the http tests non-flaky with -f, then we can definitely start running them in parallel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639801</commentid>
    <comment_count>17</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 15:45:39 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; Yes, -f runs everything in parallel, but increases flakiness. If we can get the http tests non-flaky with -f, then we can definitely start running them in parallel.

FWIW I always run -f and this issue (#servers) is the only consistent source of flake I see, I think.
Although I do tend to restrict myself to media/ http/tests/media/ fast/canvas/webgl/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639829</commentid>
    <comment_count>18</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-01 16:10:02 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; Yes, -f runs everything in parallel, but increases flakiness. If we can get the http tests non-flaky with -f, then we can definitely start running them in parallel.
&gt; 
&gt; FWIW I always run -f and this issue (#servers) is the only consistent source of flake I see, I think.
&gt; Although I do tend to restrict myself to media/ http/tests/media/ fast/canvas/webgl/

There&apos;s flakiness elsewhere :). Yeah, no need to add more logs.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639850</commentid>
    <comment_count>19</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-01 16:23:36 -0700</bug_when>
    <thetext>I tried &apos;new-run-webkit-tests -f http&apos; with MinSpareServers 300, StartServers 300 and MaxSpareServers 300 and I get about the same flakiness as with the current values (~20-22 unexpected failures).  Note that some of these failures are against the websocket server, which is separate.

I&apos;m on running on Lucid and I have 16 DRT processes.

I wonder if --iterations=100 is causing some sort of unrelated flakiness.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639860</commentid>
    <comment_count>20</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-06-01 16:39:39 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; I tried &apos;new-run-webkit-tests -f http&apos; with MinSpareServers 300, StartServers 300 and MaxSpareServers 300 and I get about the same flakiness as with the current values (~20-22 unexpected failures).  Note that some of these failures are against the websocket server, which is separate.
&gt; 
&gt; I&apos;m on running on Lucid and I have 16 DRT processes.
&gt; 
&gt; I wonder if --iterations=100 is causing some sort of unrelated flakiness.

It&apos;s hard to evaluate what this means. You don&apos;t have data on the long tail of http tests that we have marked as flaky in test_expectations.txt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>639868</commentid>
    <comment_count>21</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-01 16:49:30 -0700</bug_when>
    <thetext>(In reply to comment #20)
&gt; (In reply to comment #19)
&gt; &gt; I tried &apos;new-run-webkit-tests -f http&apos; with MinSpareServers 300, StartServers 300 and MaxSpareServers 300 and I get about the same flakiness as with the current values (~20-22 unexpected failures).  Note that some of these failures are against the websocket server, which is separate.
&gt; &gt; 
&gt; &gt; I&apos;m on running on Lucid and I have 16 DRT processes.
&gt; &gt; 
&gt; &gt; I wonder if --iterations=100 is causing some sort of unrelated flakiness.
&gt; 
&gt; It&apos;s hard to evaluate what this means. You don&apos;t have data on the long tail of http tests that we have marked as flaky in test_expectations.txt.

For concreteness, this is my cmdline:
./Tools/Scripts/new-run-webkit-tests -f --no-retry --exit-after-n-crashes-or-timeouts=1 --iterations=100 -f --results-directory=/tmp/x2 http/tests/media/video-buffered.html

With default *Servers configuration I see 13-15 failures (all up-front).
With *Servers set to 16 I see no failures.  Consistently on both counts.

(note webkit has to be at or beyond r119268 for that particular test to work on the chromium port)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645615</commentid>
    <comment_count>22</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-10 13:19:21 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; I will play around with some approaches and post something.

dpranke: any updates on this?  Are you still planning to post a patch?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>645637</commentid>
    <comment_count>23</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-10 15:58:43 -0700</bug_when>
    <thetext>(In reply to comment #22)
&gt; (In reply to comment #8)
&gt; &gt; I will play around with some approaches and post something.
&gt; 
&gt; dpranke: any updates on this?  Are you still planning to post a patch?

It&apos;s still in my to-do queue, but has been getting bumped by other things ... if you or someone else wanted to take a stab at it, that would be great.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651627</commentid>
    <comment_count>24</comment_count>
      <attachid>148152</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-18 12:45:54 -0700</bug_when>
    <thetext>Created attachment 148152
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651640</commentid>
    <comment_count>25</comment_count>
      <attachid>148155</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-18 13:04:20 -0700</bug_when>
    <thetext>Created attachment 148155
add missing unittest file</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651689</commentid>
    <comment_count>26</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-18 13:50:03 -0700</bug_when>
    <thetext>Dirk, were you able to repro the improvements that Ami saw?  I would like to understand why I&apos;m not seeing any differences.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651735</commentid>
    <comment_count>27</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-18 14:34:12 -0700</bug_when>
    <thetext>(In reply to comment #26)
&gt; Dirk, were you able to repro the improvements that Ami saw?  I would like to understand why I&apos;m not seeing any differences.

I haven&apos;t actually tried to reproduce his results. The change seemed like the right thing to do (or at least conservatively more correct) regardless.

I can bang on it a bit on linux and report if I see any real differences if you like ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651742</commentid>
    <comment_count>28</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-18 14:38:14 -0700</bug_when>
    <thetext>(In reply to comment #27)
&gt; (In reply to comment #26)
&gt; &gt; Dirk, were you able to repro the improvements that Ami saw?  I would like to understand why I&apos;m not seeing any differences.
&gt; 
&gt; I haven&apos;t actually tried to reproduce his results. The change seemed like the right thing to do (or at least conservatively more correct) regardless.

Maybe.  I&apos;m hesitant to add code and complexity if it doesn&apos;t improve behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651976</commentid>
    <comment_count>29</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-18 19:41:21 -0700</bug_when>
    <thetext>Ami, can you try this patch and see if it makes any difference for you?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653033</commentid>
    <comment_count>30</comment_count>
    <who name="Ami Fischman">fischman</who>
    <bug_when>2012-06-19 17:30:29 -0700</bug_when>
    <thetext>(In reply to comment #29)
&gt; Ami, can you try this patch and see if it makes any difference for you?

It does, but it needs a bit of finessing to see the difference.

For example, modify http/tests/media/video-cancel-load.html to change s/throttle=40/throttle=4/ and run:
./Tools/Scripts/new-run-webkit-tests -f --debug --results-directory=/tmp/x2 --iterations=100  http/tests/media/video-cancel-load.html
Without the patch I get 15/100 failures.  With the patch, I get no failures.

Alternatively, without the patch and reverting the above test to ToT, running:
./Tools/Scripts/new-run-webkit-tests --time-out-ms=6000 -f --debug --results-directory=/tmp/x2 --iterations=100  http/tests/media/video-cancel-load.html
sees 15/100 failures, but applying the patch makes the ALL the iterations pass.

Basically what this comes down to is that spinning up the extra httpd&apos;s takes non-trivial time.  Counting that time against a particular test&apos;s execution is &quot;unfair&quot; and causes flakiness.  Spinning up the httpd&apos;s in advance makes the time each test gets to run more predictable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653683</commentid>
    <comment_count>31</comment_count>
      <attachid>148155</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-06-20 11:25:13 -0700</bug_when>
    <thetext>Comment on attachment 148155
add missing unittest file

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

I was able to repro Ami&apos;s results on my machine. I think the key was to use a debug build of DRT.

On an unrelated note, new-run-webkit-httpd is broken (it always uses lighttpd), but that&apos;s a separate bug.

&gt; Tools/Scripts/webkitpy/common/system/executive_mock.py:40
&gt; -    def __init__(self, stdout=&apos;MOCK STDOUT\n&apos;):
&gt; +    def __init__(self, stdout=&apos;MOCK STDOUT\n&apos;, stderr=&apos;&apos;):
&gt;          self.pid = 42
&gt;          self.stdout = StringIO.StringIO(stdout)
&gt; +        self.stderr = StringIO.StringIO(stderr)

Why is this change necessary?  Can you mention it in the ChangeLog?

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:763
&gt; +            self.start_servers_with_lock(num_servers=2 * min(num_workers, len(locked_shards)))

Nit: It&apos;s weird to me to name the param when it&apos;s not an optional param.  It you want to make it clear what this is for, you could make num_servers a local var.

&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:972
&gt;          self._printer.print_update(&apos;Starting HTTP server ...&apos;)
&gt; -        self._port.start_http_server()
&gt; +        self._port.start_http_server(num_servers=num_servers)
&gt;          self._printer.print_update(&apos;Starting WebSocket server ...&apos;)

You probably need to rebase.

&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:790
&gt; +    def start_http_server(self, additional_dirs=None, num_servers=None):

Nit: num_servers -&gt; number_of_servers

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:31
&gt; +import unittest
&gt; +import re
&gt; +import sys

Nit: sort.

&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:35
&gt; +from webkitpy.common.system.outputcapture import OutputCapture
&gt; +from webkitpy.common.host_mock import MockHost

Nit: sort.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653720</commentid>
    <comment_count>32</comment_count>
      <attachid>148155</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-20 11:45:41 -0700</bug_when>
    <thetext>Comment on attachment 148155
add missing unittest file

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

&gt;&gt; Tools/Scripts/webkitpy/common/system/executive_mock.py:40
&gt;&gt; +        self.stderr = StringIO.StringIO(stderr)
&gt; 
&gt; Why is this change necessary?  Can you mention it in the ChangeLog?

We need this because we try to read stderr when starting httpd in apache_http_server.py. I will add a comment.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:763
&gt;&gt; +            self.start_servers_with_lock(num_servers=2 * min(num_workers, len(locked_shards)))
&gt; 
&gt; Nit: It&apos;s weird to me to name the param when it&apos;s not an optional param.  It you want to make it clear what this is for, you could make num_servers a local var.

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/controllers/manager.py:972
&gt;&gt;          self._printer.print_update(&apos;Starting WebSocket server ...&apos;)
&gt; 
&gt; You probably need to rebase.

Yeah, will do.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/port/base.py:790
&gt;&gt; +    def start_http_server(self, additional_dirs=None, num_servers=None):
&gt; 
&gt; Nit: num_servers -&gt; number_of_servers

Will fix.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:31
&gt;&gt; +import sys
&gt; 
&gt; Nit: sort.

will fix.

&gt;&gt; Tools/Scripts/webkitpy/layout_tests/servers/apache_http_server_unittest.py:35
&gt;&gt; +from webkitpy.common.host_mock import MockHost
&gt; 
&gt; Nit: sort.

will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653734</commentid>
    <comment_count>33</comment_count>
      <attachid>148620</attachid>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-20 11:59:51 -0700</bug_when>
    <thetext>Created attachment 148620
patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653738</commentid>
    <comment_count>34</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2012-06-20 12:01:11 -0700</bug_when>
    <thetext>Committed r120846: &lt;http://trac.webkit.org/changeset/120846&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148152</attachid>
            <date>2012-06-18 12:45:54 -0700</date>
            <delta_ts>2012-06-18 13:04:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-88134-20120618124553.patch</filename>
            <type>text/plain</type>
            <size>11716</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjExCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzllYThhOWU4NzgwNDY1ZTM0ZTg5MDAzZDZmOWYyMzAz
MDVjNGZjZS4uNjhlZTUyOGMyNGU5YWYyODdjZjI0ZGMzNWRjY2MxY2ZkOWI2OGNkOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4
IEBACiAyMDEyLTA2LTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzcGluLXVwIGVub3VnaCBodHRwZCBw
cm9jZXNzZXMgdG8gYXZvaWQgdGltZW91dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIE5SV1QgdG8gc3BpbiB1cCAyKm1pbihjaGlsZF9wcm9j
ZXNzZXMsIGxvY2tlZF9zaGFyZHMpCisgICAgICAgIGh0dHAgc2VydmVycyBieSBkZWZhdWx0IHNv
IHRoYXQgd2UgYXJlIGxlc3MgbGlrZWx5IHRvIGdldCBhCisgICAgICAgIGJ1bmNoIG9mIGh0dHAg
dGltZW91dHMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHRlc3QgcnVuLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5OgorICAgICAgICAo
TW9ja1Byb2Nlc3MuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9ydW5f
dGVzdHMpOgorICAgICAgICAoTWFuYWdlci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAg
ICAoUG9ydC50by5zdGFydF9odHRwX3NlcnZlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAoVGVzdFBvcnQuc3RhcnRfaHR0
cF9zZXJ2ZXIpOgorICAgICAgICAoVGVzdFBvcnQuX3BhdGhfdG9fYXBhY2hlKToKKyAgICAgICAg
KFRlc3RQb3J0KToKKyAgICAgICAgKFRlc3RQb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmls
ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFj
aGVfaHR0cF9zZXJ2ZXIucHk6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hlSHR0cGQuX19pbml0
X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBh
Y2hlX2h0dHBfc2VydmVyX3VuaXR0ZXN0LnB5OiBBZGRlZAorICAgICAgICAoTGF5b3V0VGVzdEFw
YWNoZUh0dHBkLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5OgorICAgICAgICAoTGlnaHR0cGQuX19pbml0X18p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9z
ZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKEh0dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKToKKworMjAx
Mi0wNi0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBu
cnd0OiBtZXRlcmVkIG91dHB1dCBkb2Vzbid0IGhhbmRsZSBeQyBjbGVhbmx5CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTI0OQogCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkK
aW5kZXggYjBkYjQ4Y2EzY2E0NWFhYzE4Mzk1NTBjYjkzZDUwNDg2ZDNhMWFmNC4uYTE1YzM2NTRk
MzEzYzI5ZDA2MzZiMDU5YjZiMGNiZWQyYjQzNzliYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQpAQCAtMzQsMTAg
KzM0LDEyIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNj
cmlwdEVycm9yCiAKIAogY2xhc3MgTW9ja1Byb2Nlc3Mob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgc3Rkb3V0PSdNT0NLIFNURE9VVFxuJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHN0ZG91dD0nTU9DSyBTVERPVVRcbicsIHN0ZGVycj0nJyk6CiAgICAgICAgIHNlbGYucGlkID0g
NDIKICAgICAgICAgc2VsZi5zdGRvdXQgPSBTdHJpbmdJTy5TdHJpbmdJTyhzdGRvdXQpCisgICAg
ICAgIHNlbGYuc3RkZXJyID0gU3RyaW5nSU8uU3RyaW5nSU8oc3RkZXJyKQogICAgICAgICBzZWxm
LnN0ZGluID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnJldHVybmNvZGUgPSAw
CiAKICAgICBkZWYgd2FpdChzZWxmKToKICAgICAgICAgcmV0dXJuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CmluZGV4IDY2
MTg4YzBjYmU3N2UwMDNiYjU0YTQ1NjczYmVlYjM0OTlhYzA3MjIuLmJiYTQ2Y2Q5YmFlNjAzNGUw
OTFmZjkwMWQ3ZDg1N2E0ZGMwOGZlNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CkBAIC0zLDcgKzMsNyBAQAogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAog
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IyAKKyMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5CmluZGV4IGVlNmQ1YWZjOTYyNjc4ZjYwNDM2Y2Q2N2JlNDRhZWJlZmM0YTMxN2Yu
LjQzOWFiNzBhYjg0MjRiZTIxOGM2ZTNlNzkwOTllM2ZhMDdhMGI2NDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQpAQCAtNzYwLDcgKzc2MCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAg
ICAgYWxsX3NoYXJkcyA9IGxvY2tlZF9zaGFyZHMgKyB1bmxvY2tlZF9zaGFyZHMKICAgICAgICAg
c2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFyZHMgPSBsb2NrZWRfc2hhcmRzCiAgICAgICAgIGlm
IGxvY2tlZF9zaGFyZHMgYW5kIHNlbGYuX29wdGlvbnMuaHR0cDoKLSAgICAgICAgICAgIHNlbGYu
c3RhcnRfc2VydmVyc193aXRoX2xvY2soKQorICAgICAgICAgICAgc2VsZi5zdGFydF9zZXJ2ZXJz
X3dpdGhfbG9jayhudW1fc2VydmVycz0yICogbWluKG51bV93b3JrZXJzLCBsZW4obG9ja2VkX3No
YXJkcykpKQogCiAgICAgICAgIG51bV93b3JrZXJzID0gbWluKG51bV93b3JrZXJzLCBsZW4oYWxs
X3NoYXJkcykpCiAgICAgICAgIHNlbGYuX2xvZ19udW1fd29ya2VycyhudW1fd29ya2VycywgbGVu
KGFsbF9zaGFyZHMpLCBsZW4obG9ja2VkX3NoYXJkcykpCkBAIC05NjMsMTIgKzk2MywxMiBAQCBj
bGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuZXhpdF9j
b2RlX2Zyb21fc3VtbWFyaXplZF9yZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKIAotICAgIGRl
ZiBzdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhzZWxmKToKKyAgICBkZWYgc3RhcnRfc2VydmVyc193
aXRoX2xvY2soc2VsZiwgbnVtX3NlcnZlcnMpOgogICAgICAgICBhc3NlcnQoc2VsZi5fb3B0aW9u
cy5odHRwKQogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnQWNxdWlyaW5nIGh0
dHAgbG9jayAuLi4nKQogICAgICAgICBzZWxmLl9wb3J0LmFjcXVpcmVfaHR0cF9sb2NrKCkKICAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nIEhUVFAgc2VydmVyIC4u
LicpCi0gICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQorICAgICAgICBzZWxm
Ll9wb3J0LnN0YXJ0X2h0dHBfc2VydmVyKG51bV9zZXJ2ZXJzPW51bV9zZXJ2ZXJzKQogICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgV2ViU29ja2V0IHNlcnZlciAu
Li4nKQogICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoKQogICAgICAg
ICBzZWxmLl9oYXNfaHR0cF9sb2NrID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDYyZmJkY2VlZDYxODcyNGEzMTYwNDM1
M2U4ZGM5MDk5NzU0OWNmOTUuLjBhZjkxYjNkOWM1MjA3YzFkMjlkYzU2MzBmZmU2NjcxODc2MjJl
YzAgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKQEAgLTc4NywxNiArNzg3LDE2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
bWV0aG9kLiIiIgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2Vs
ZiwgYWRkaXRpb25hbF9kaXJzPU5vbmUpOgorICAgIGRlZiBzdGFydF9odHRwX3NlcnZlcihzZWxm
LCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwgbnVtX3NlcnZlcnM9Tm9uZSk6CiAgICAgICAgICIiIlN0
YXJ0IGEgd2ViIHNlcnZlci4gUmFpc2UgYW4gZXJyb3IgaWYgaXQgY2FuJ3Qgc3RhcnQgb3IgaXMg
YWxyZWFkeSBydW5uaW5nLgogCiAgICAgICAgIFBvcnRzIGNhbiBzdHViIHRoaXMgb3V0IGlmIHRo
ZXkgZG9uJ3QgbmVlZCBhIHdlYiBzZXJ2ZXIgdG8gYmUgcnVubmluZy4iIiIKICAgICAgICAgYXNz
ZXJ0IG5vdCBzZWxmLl9odHRwX3NlcnZlciwgJ0FscmVhZHkgcnVubmluZyBhbiBodHRwIHNlcnZl
ci4nCiAKICAgICAgICAgaWYgc2VsZi5fdXNlc19hcGFjaGUoKToKLSAgICAgICAgICAgIHNlcnZl
ciA9IGFwYWNoZV9odHRwX3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwgc2VsZi5y
ZXN1bHRzX2RpcmVjdG9yeSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzKQorICAg
ICAgICAgICAgc2VydmVyID0gYXBhY2hlX2h0dHBfc2VydmVyLkxheW91dFRlc3RBcGFjaGVIdHRw
ZChzZWxmLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksIGFkZGl0aW9uYWxfZGlycz1hZGRpdGlv
bmFsX2RpcnMsIG51bV9zZXJ2ZXJzPW51bV9zZXJ2ZXJzKQogICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VydmVyID0gaHR0cF9zZXJ2ZXIuTGlnaHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRzX2Rp
cmVjdG9yeSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzKQorICAgICAgICAgICAg
c2VydmVyID0gaHR0cF9zZXJ2ZXIuTGlnaHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRzX2RpcmVjdG9y
eSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzLCBudW1fc2VydmVycz1udW1fc2Vy
dmVycykKIAogICAgICAgICBzZXJ2ZXIuc3RhcnQoKQogICAgICAgICBzZWxmLl9odHRwX3NlcnZl
ciA9IHNlcnZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5CmluZGV4IDI1YzZhMTNiZTlkYWEwMjA0NjM5ODk1ZDEyOGI0MWRmOTM3NTE0NTYu
LjM2NzkzYzI5MWRiNDI1MzczZGY5YmMxNDI4ZmE1NWViNDI2MDI5MmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTQyOCw3ICs0
MjgsNyBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgX2RyaXZlcl9jbGFzcyhzZWxm
KToKICAgICAgICAgcmV0dXJuIFRlc3REcml2ZXIKIAotICAgIGRlZiBzdGFydF9odHRwX3NlcnZl
cihzZWxmKToKKyAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2VsZiwgbnVtX3NlcnZlcnM9Tm9u
ZSk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBzdGFydF93ZWJzb2NrZXRfc2VydmVyKHNlbGYp
OgpAQCAtNDU1LDYgKzQ1NSwxMiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgX3Bh
dGhfdG9fbGlnaHR0cGRfcGhwKHNlbGYpOgogICAgICAgICByZXR1cm4gIi91c3IvYmluL3BocC1j
Z2kiCiAKKyAgICBkZWYgX3BhdGhfdG9fYXBhY2hlKHNlbGYpOgorICAgICAgICByZXR1cm4gIi91
c3Ivc2Jpbi9odHRwZCIKKworICAgIGRlZiBfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVz
dHNfZGlyKCksICdodHRwJywgJ2NvbmYnLCAnaHR0cGQuY29uZicpCisKICAgICBkZWYgcGF0aF90
b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhw
ZWN0YXRpb25zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQppbmRleCBm
ZWNjNWFkZTNkNDNkZGY2NjFiZjAzY2ZjZTExZjcxYjYzNTE0OTA5Li41ZGY0N2JiOWE1NTZjMTI2
OWRkYzljNWZkM2NmMmVhZGExYWQ2NmU2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZl
ci5weQpAQCAtNDMsMTIgKzQzLDEyIEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNl
cnZlckJhc2UpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGly
LCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2Jq
LCBvdXRwdXRfZGlyLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwgbnVtX3NlcnZlcnM9Tm9uZSk6CiAg
ICAgICAgICIiIkFyZ3M6CiAgICAgICAgICAgcG9ydF9vYmo6IGhhbmRsZSB0byB0aGUgcGxhdGZv
cm0tc3BlY2lmaWMgcm91dGluZXMKICAgICAgICAgICBvdXRwdXRfZGlyOiB0aGUgYWJzb2x1dGUg
cGF0aCB0byB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0IGRpcmVjdG9yeQogICAgICAgICAiIiIKLSAg
ICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0
X29iaikKKyAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2luaXRfXyhz
ZWxmLCBwb3J0X29iaiwgbnVtX3NlcnZlcnMpCiAgICAgICAgICMgV2UgdXNlIHRoZSBuYW1lICJo
dHRwZCIgaW5zdGVhZCBvZiAiYXBhY2hlIiB0byBtYWtlIG91ciBwYXRocyAoZS5nLiB0aGUgcGlk
IGZpbGU6IC90bXAvV2ViS2l0L2h0dHBkLnBpZCkKICAgICAgICAgIyBtYXRjaCBvbGQtcnVuLXdl
YmtpdC10ZXN0czogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzOTU2
CiAgICAgICAgIHNlbGYuX25hbWUgPSAnaHR0cGQnCkBAIC05NSw2ICs5NSwxMiBAQCBjbGFzcyBM
YXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAnLWMnLCAiXCdSZW1vdmVIYW5kbGVyIC5jZ2kgLnBsXCci
LAogICAgICAgICAgICAgICAgICAgICAgICAgJy1jJywgIlwnPC9Mb2NhdGlvbj5cJyJdCiAKKyAg
ICAgICAgaWYgc2VsZi5fbnVtX3NlcnZlcnM6CisgICAgICAgICAgICBzdGFydF9jbWQgKz0gWyct
YycsICJcJ1N0YXJ0U2VydmVycyAlZFwnIiAlIHNlbGYuX251bV9zZXJ2ZXJzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLWMnLCAiXCdNaW5TcGFyZVNlcnZlcnMgJWRcJyIgJSBzZWxmLl9u
dW1fc2VydmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJy1jJywgIlwnTWF4U3BhcmVT
ZXJ2ZXJzICVkXCciICUgc2VsZi5fbnVtX3NlcnZlcnNdCisKKwogICAgICAgICBzdG9wX2NtZCA9
IFtleGVjdXRhYmxlLAogICAgICAgICAgICAgJy1mJywgIlwiJXNcIiIgJSBzZWxmLl9nZXRfYXBh
Y2hlX2NvbmZpZ19maWxlX3BhdGgodGVzdF9kaXIsIG91dHB1dF9kaXIpLAogICAgICAgICAgICAg
Jy1jJywgIlwnUGlkRmlsZSAlcyciICUgc2VsZi5fcGlkX2ZpbGUsCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5IGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlci5w
eQppbmRleCA3NWFkMjE0M2MyODc3YjNkZDFjODI2YWY0ZjdiMjAwZDc0YzBmNjA0Li5hMWI2ODUy
OGMxNTdjYjc2MDkzZTg1ODA0YjJiZTg3NzY3MWMxYmFlIDEwMDc1NQotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5CisrKyBiL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXIucHkK
QEAgLTQzLDEyICs0MywxMiBAQCBjbGFzcyBMaWdodHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBT
ZXJ2ZXJCYXNlKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwb3J0X29iaiwgb3V0cHV0X2Rp
ciwgYmFja2dyb3VuZD1GYWxzZSwgcG9ydD1Ob25lLAogICAgICAgICAgICAgICAgICByb290PU5v
bmUsIHJ1bl9iYWNrZ3JvdW5kPU5vbmUsIGFkZGl0aW9uYWxfZGlycz1Ob25lLAotICAgICAgICAg
ICAgICAgICBsYXlvdXRfdGVzdHNfZGlyPU5vbmUpOgorICAgICAgICAgICAgICAgICBsYXlvdXRf
dGVzdHNfZGlyPU5vbmUsIG51bV9zZXJ2ZXJzPU5vbmUpOgogICAgICAgICAiIiJBcmdzOgogICAg
ICAgICAgIG91dHB1dF9kaXI6IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsYXlvdXQgdGVzdCBy
ZXN1bHQgZGlyZWN0b3J5CiAgICAgICAgICIiIgogICAgICAgICAjIFdlYmtpdCB0ZXN0cwotICAg
ICAgICBodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKHNlbGYsIHBvcnRf
b2JqKQorICAgICAgICBodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKHNl
bGYsIHBvcnRfb2JqLCBudW1fc2VydmVycykKICAgICAgICAgc2VsZi5fbmFtZSA9ICdsaWdodHRw
ZCcKICAgICAgICAgc2VsZi5fb3V0cHV0X2RpciA9IG91dHB1dF9kaXIKICAgICAgICAgc2VsZi5f
cG9ydCA9IHBvcnQKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rl
c3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZS5weQppbmRleCA0NzgzNmZjZWNk
NTFhOTkzNzM3ZTEyNzk5NzQ3YTcxODFlNzcyMGEyLi42NDgyNTdiNGMxZWQ3MGZkNGZlMGFkNzQ3
NGI2MGQ3NDc1OTU1ZDNjIDEwMDc1NQotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CkBAIC00Nyw3
ICs0Nyw3IEBAIGNsYXNzIFNlcnZlckVycm9yKEV4Y2VwdGlvbik6CiBjbGFzcyBIdHRwU2VydmVy
QmFzZShvYmplY3QpOgogICAgICIiIkEgc2tlbGV0b24gY2xhc3MgZm9yIHN0YXJ0aW5nIGFuZCBz
dG9wcGluZyBzZXJ2ZXJzIHVzZWQgYnkgdGhlIGxheW91dCB0ZXN0cy4iIiIKIAotICAgIGRlZiBf
X2luaXRfXyhzZWxmLCBwb3J0X29iaik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2Jq
LCBudW1fc2VydmVycz1Ob25lKToKICAgICAgICAgc2VsZi5fZXhlY3V0aXZlID0gcG9ydF9vYmou
X2V4ZWN1dGl2ZQogICAgICAgICBzZWxmLl9maWxlc3lzdGVtID0gcG9ydF9vYmouX2ZpbGVzeXN0
ZW0KICAgICAgICAgc2VsZi5fbmFtZSA9ICc8dmlydHVhbD4nCkBAIC01NSw2ICs1NSw3IEBAIGNs
YXNzIEh0dHBTZXJ2ZXJCYXNlKG9iamVjdCk6CiAgICAgICAgIHNlbGYuX3BpZCA9IE5vbmUKICAg
ICAgICAgc2VsZi5fcGlkX2ZpbGUgPSBOb25lCiAgICAgICAgIHNlbGYuX3BvcnRfb2JqID0gcG9y
dF9vYmoKKyAgICAgICAgc2VsZi5fbnVtX3NlcnZlcnMgPSBudW1fc2VydmVycwogCiAgICAgICAg
ICMgV2UgbmVlZCBhIG5vbi1jaGVja291dC1kZXBlbmRlbnQgcGxhY2UgdG8gcHV0IGxvY2sgZmls
ZXMsIGV0Yy4gV2UKICAgICAgICAgIyBkb24ndCB1c2UgdGhlIFB5dGhvbiBkZWZhdWx0IG9uIHRo
ZSBNYWMgYmVjYXVzZSBpdCBkZWZhdWx0cyB0byBhCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148155</attachid>
            <date>2012-06-18 13:04:20 -0700</date>
            <delta_ts>2012-06-20 11:59:44 -0700</delta_ts>
            <desc>add missing unittest file</desc>
            <filename>bug-88134-20120618130419.patch</filename>
            <type>text/plain</type>
            <size>15354</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjExCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggNzllYThhOWU4NzgwNDY1ZTM0ZTg5MDAzZDZmOWYyMzAz
MDVjNGZjZS4uNjhlZTUyOGMyNGU5YWYyODdjZjI0ZGMzNWRjY2MxY2ZkOWI2OGNkOSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDM4
IEBACiAyMDEyLTA2LTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgogCisg
ICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzcGluLXVwIGVub3VnaCBodHRwZCBw
cm9jZXNzZXMgdG8gYXZvaWQgdGltZW91dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQ2hhbmdlIE5SV1QgdG8gc3BpbiB1cCAyKm1pbihjaGlsZF9wcm9j
ZXNzZXMsIGxvY2tlZF9zaGFyZHMpCisgICAgICAgIGh0dHAgc2VydmVycyBieSBkZWZhdWx0IHNv
IHRoYXQgd2UgYXJlIGxlc3MgbGlrZWx5IHRvIGdldCBhCisgICAgICAgIGJ1bmNoIG9mIGh0dHAg
dGltZW91dHMgYXQgdGhlIGJlZ2lubmluZyBvZiBhIHRlc3QgcnVuLgorCisgICAgICAgICogU2Ny
aXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5OgorICAgICAgICAo
TW9ja1Byb2Nlc3MuX19pbml0X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9u
L3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5
b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHk6CisgICAgICAgIChNYW5hZ2VyLl9ydW5f
dGVzdHMpOgorICAgICAgICAoTWFuYWdlci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayk6CisgICAg
ICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5OgorICAgICAg
ICAoUG9ydC50by5zdGFydF9odHRwX3NlcnZlcik6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5OgorICAgICAgICAoVGVzdFBvcnQuc3RhcnRfaHR0
cF9zZXJ2ZXIpOgorICAgICAgICAoVGVzdFBvcnQuX3BhdGhfdG9fYXBhY2hlKToKKyAgICAgICAg
KFRlc3RQb3J0KToKKyAgICAgICAgKFRlc3RQb3J0Ll9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmls
ZSk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9hcGFj
aGVfaHR0cF9zZXJ2ZXIucHk6CisgICAgICAgIChMYXlvdXRUZXN0QXBhY2hlSHR0cGQuX19pbml0
X18pOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBh
Y2hlX2h0dHBfc2VydmVyX3VuaXR0ZXN0LnB5OiBBZGRlZAorICAgICAgICAoTGF5b3V0VGVzdEFw
YWNoZUh0dHBkLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5OgorICAgICAgICAoTGlnaHR0cGQuX19pbml0X18p
OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9z
ZXJ2ZXJfYmFzZS5weToKKyAgICAgICAgKEh0dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKToKKworMjAx
Mi0wNi0xOCAgRGlyayBQcmFua2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KKwogICAgICAgICBu
cnd0OiBtZXRlcmVkIG91dHB1dCBkb2Vzbid0IGhhbmRsZSBeQyBjbGVhbmx5CiAgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD04OTI0OQogCmRpZmYgLS1naXQg
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkg
Yi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkK
aW5kZXggYjBkYjQ4Y2EzY2E0NWFhYzE4Mzk1NTBjYjkzZDUwNDg2ZDNhMWFmNC4uYTE1YzM2NTRk
MzEzYzI5ZDA2MzZiMDU5YjZiMGNiZWQyYjQzNzliYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQpAQCAtMzQsMTAg
KzM0LDEyIEBAIGZyb20gd2Via2l0cHkuY29tbW9uLnN5c3RlbS5leGVjdXRpdmUgaW1wb3J0IFNj
cmlwdEVycm9yCiAKIAogY2xhc3MgTW9ja1Byb2Nlc3Mob2JqZWN0KToKLSAgICBkZWYgX19pbml0
X18oc2VsZiwgc3Rkb3V0PSdNT0NLIFNURE9VVFxuJyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYs
IHN0ZG91dD0nTU9DSyBTVERPVVRcbicsIHN0ZGVycj0nJyk6CiAgICAgICAgIHNlbGYucGlkID0g
NDIKICAgICAgICAgc2VsZi5zdGRvdXQgPSBTdHJpbmdJTy5TdHJpbmdJTyhzdGRvdXQpCisgICAg
ICAgIHNlbGYuc3RkZXJyID0gU3RyaW5nSU8uU3RyaW5nSU8oc3RkZXJyKQogICAgICAgICBzZWxm
LnN0ZGluID0gU3RyaW5nSU8uU3RyaW5nSU8oKQorICAgICAgICBzZWxmLnJldHVybmNvZGUgPSAw
CiAKICAgICBkZWYgd2FpdChzZWxmKToKICAgICAgICAgcmV0dXJuCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weSBiL1Rvb2xz
L1NjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CmluZGV4IDY2
MTg4YzBjYmU3N2UwMDNiYjU0YTQ1NjczYmVlYjM0OTlhYzA3MjIuLmJiYTQ2Y2Q5YmFlNjAzNGUw
OTFmZjkwMWQ3ZDg1N2E0ZGMwOGZlNzcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvY29tbW9uL3N5c3RlbS9vdXRwdXRjYXB0dXJlLnB5CkBAIC0zLDcgKzMsNyBAQAogIyBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICMgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQogIyBtZXQ6Ci0jIAorIwogIyAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAog
IyBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCiAjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKQEAgLTEzLDcgKzEzLDcgQEAKICMgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cwogIyBjb250cmlidXRvcnMgbWF5
IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQogIyB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgot
IyAKKyMKICMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERF
UlMgQU5EIENPTlRSSUJVVE9SUwogIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAogIyBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKZGlmZiAtLWdp
dCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFn
ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9t
YW5hZ2VyLnB5CmluZGV4IGVlNmQ1YWZjOTYyNjc4ZjYwNDM2Y2Q2N2JlNDRhZWJlZmM0YTMxN2Yu
LjQzOWFiNzBhYjg0MjRiZTIxOGM2ZTNlNzkwOTllM2ZhMDdhMGI2NDkgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkK
KysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFu
YWdlci5weQpAQCAtNzYwLDcgKzc2MCw3IEBAIGNsYXNzIE1hbmFnZXIob2JqZWN0KToKICAgICAg
ICAgYWxsX3NoYXJkcyA9IGxvY2tlZF9zaGFyZHMgKyB1bmxvY2tlZF9zaGFyZHMKICAgICAgICAg
c2VsZi5fcmVtYWluaW5nX2xvY2tlZF9zaGFyZHMgPSBsb2NrZWRfc2hhcmRzCiAgICAgICAgIGlm
IGxvY2tlZF9zaGFyZHMgYW5kIHNlbGYuX29wdGlvbnMuaHR0cDoKLSAgICAgICAgICAgIHNlbGYu
c3RhcnRfc2VydmVyc193aXRoX2xvY2soKQorICAgICAgICAgICAgc2VsZi5zdGFydF9zZXJ2ZXJz
X3dpdGhfbG9jayhudW1fc2VydmVycz0yICogbWluKG51bV93b3JrZXJzLCBsZW4obG9ja2VkX3No
YXJkcykpKQogCiAgICAgICAgIG51bV93b3JrZXJzID0gbWluKG51bV93b3JrZXJzLCBsZW4oYWxs
X3NoYXJkcykpCiAgICAgICAgIHNlbGYuX2xvZ19udW1fd29ya2VycyhudW1fd29ya2VycywgbGVu
KGFsbF9zaGFyZHMpLCBsZW4obG9ja2VkX3NoYXJkcykpCkBAIC05NjMsMTIgKzk2MywxMiBAQCBj
bGFzcyBNYW5hZ2VyKG9iamVjdCk6CiAKICAgICAgICAgcmV0dXJuIHNlbGYuX3BvcnQuZXhpdF9j
b2RlX2Zyb21fc3VtbWFyaXplZF9yZXN1bHRzKHVuZXhwZWN0ZWRfcmVzdWx0cykKIAotICAgIGRl
ZiBzdGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhzZWxmKToKKyAgICBkZWYgc3RhcnRfc2VydmVyc193
aXRoX2xvY2soc2VsZiwgbnVtX3NlcnZlcnMpOgogICAgICAgICBhc3NlcnQoc2VsZi5fb3B0aW9u
cy5odHRwKQogICAgICAgICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnQWNxdWlyaW5nIGh0
dHAgbG9jayAuLi4nKQogICAgICAgICBzZWxmLl9wb3J0LmFjcXVpcmVfaHR0cF9sb2NrKCkKICAg
ICAgICAgc2VsZi5fcHJpbnRlci5wcmludF91cGRhdGUoJ1N0YXJ0aW5nIEhUVFAgc2VydmVyIC4u
LicpCi0gICAgICAgIHNlbGYuX3BvcnQuc3RhcnRfaHR0cF9zZXJ2ZXIoKQorICAgICAgICBzZWxm
Ll9wb3J0LnN0YXJ0X2h0dHBfc2VydmVyKG51bV9zZXJ2ZXJzPW51bV9zZXJ2ZXJzKQogICAgICAg
ICBzZWxmLl9wcmludGVyLnByaW50X3VwZGF0ZSgnU3RhcnRpbmcgV2ViU29ja2V0IHNlcnZlciAu
Li4nKQogICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoKQogICAgICAg
ICBzZWxmLl9oYXNfaHR0cF9sb2NrID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93
ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CmluZGV4IDYyZmJkY2VlZDYxODcyNGEzMTYwNDM1
M2U4ZGM5MDk5NzU0OWNmOTUuLjBhZjkxYjNkOWM1MjA3YzFkMjlkYzU2MzBmZmU2NjcxODc2MjJl
YzAgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQv
YmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jh
c2UucHkKQEAgLTc4NywxNiArNzg3LDE2IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKICAgICAgICAg
bWV0aG9kLiIiIgogICAgICAgICBwYXNzCiAKLSAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2Vs
ZiwgYWRkaXRpb25hbF9kaXJzPU5vbmUpOgorICAgIGRlZiBzdGFydF9odHRwX3NlcnZlcihzZWxm
LCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwgbnVtX3NlcnZlcnM9Tm9uZSk6CiAgICAgICAgICIiIlN0
YXJ0IGEgd2ViIHNlcnZlci4gUmFpc2UgYW4gZXJyb3IgaWYgaXQgY2FuJ3Qgc3RhcnQgb3IgaXMg
YWxyZWFkeSBydW5uaW5nLgogCiAgICAgICAgIFBvcnRzIGNhbiBzdHViIHRoaXMgb3V0IGlmIHRo
ZXkgZG9uJ3QgbmVlZCBhIHdlYiBzZXJ2ZXIgdG8gYmUgcnVubmluZy4iIiIKICAgICAgICAgYXNz
ZXJ0IG5vdCBzZWxmLl9odHRwX3NlcnZlciwgJ0FscmVhZHkgcnVubmluZyBhbiBodHRwIHNlcnZl
ci4nCiAKICAgICAgICAgaWYgc2VsZi5fdXNlc19hcGFjaGUoKToKLSAgICAgICAgICAgIHNlcnZl
ciA9IGFwYWNoZV9odHRwX3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwgc2VsZi5y
ZXN1bHRzX2RpcmVjdG9yeSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzKQorICAg
ICAgICAgICAgc2VydmVyID0gYXBhY2hlX2h0dHBfc2VydmVyLkxheW91dFRlc3RBcGFjaGVIdHRw
ZChzZWxmLCBzZWxmLnJlc3VsdHNfZGlyZWN0b3J5KCksIGFkZGl0aW9uYWxfZGlycz1hZGRpdGlv
bmFsX2RpcnMsIG51bV9zZXJ2ZXJzPW51bV9zZXJ2ZXJzKQogICAgICAgICBlbHNlOgotICAgICAg
ICAgICAgc2VydmVyID0gaHR0cF9zZXJ2ZXIuTGlnaHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRzX2Rp
cmVjdG9yeSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzKQorICAgICAgICAgICAg
c2VydmVyID0gaHR0cF9zZXJ2ZXIuTGlnaHR0cGQoc2VsZiwgc2VsZi5yZXN1bHRzX2RpcmVjdG9y
eSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJzLCBudW1fc2VydmVycz1udW1fc2Vy
dmVycykKIAogICAgICAgICBzZXJ2ZXIuc3RhcnQoKQogICAgICAgICBzZWxmLl9odHRwX3NlcnZl
ciA9IHNlcnZlcgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvcG9ydC90ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9y
dC90ZXN0LnB5CmluZGV4IDI1YzZhMTNiZTlkYWEwMjA0NjM5ODk1ZDEyOGI0MWRmOTM3NTE0NTYu
LjM2NzkzYzI5MWRiNDI1MzczZGY5YmMxNDI4ZmE1NWViNDI2MDI5MmQgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKQEAgLTQyOCw3ICs0
MjgsNyBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgX2RyaXZlcl9jbGFzcyhzZWxm
KToKICAgICAgICAgcmV0dXJuIFRlc3REcml2ZXIKIAotICAgIGRlZiBzdGFydF9odHRwX3NlcnZl
cihzZWxmKToKKyAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2VsZiwgbnVtX3NlcnZlcnM9Tm9u
ZSk6CiAgICAgICAgIHBhc3MKIAogICAgIGRlZiBzdGFydF93ZWJzb2NrZXRfc2VydmVyKHNlbGYp
OgpAQCAtNDU1LDYgKzQ1NSwxMiBAQCBjbGFzcyBUZXN0UG9ydChQb3J0KToKICAgICBkZWYgX3Bh
dGhfdG9fbGlnaHR0cGRfcGhwKHNlbGYpOgogICAgICAgICByZXR1cm4gIi91c3IvYmluL3BocC1j
Z2kiCiAKKyAgICBkZWYgX3BhdGhfdG9fYXBhY2hlKHNlbGYpOgorICAgICAgICByZXR1cm4gIi91
c3Ivc2Jpbi9odHRwZCIKKworICAgIGRlZiBfcGF0aF90b19hcGFjaGVfY29uZmlnX2ZpbGUoc2Vs
Zik6CisgICAgICAgIHJldHVybiBzZWxmLl9maWxlc3lzdGVtLmpvaW4oc2VsZi5sYXlvdXRfdGVz
dHNfZGlyKCksICdodHRwJywgJ2NvbmYnLCAnaHR0cGQuY29uZicpCisKICAgICBkZWYgcGF0aF90
b190ZXN0X2V4cGVjdGF0aW9uc19maWxlKHNlbGYpOgogICAgICAgICByZXR1cm4gc2VsZi5fZXhw
ZWN0YXRpb25zX3BhdGgKIApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlv
dXRfdGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQppbmRleCBm
ZWNjNWFkZTNkNDNkZGY2NjFiZjAzY2ZjZTExZjcxYjYzNTE0OTA5Li41ZGY0N2JiOWE1NTZjMTI2
OWRkYzljNWZkM2NmMmVhZGExYWQ2NmU2IDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlci5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZl
ci5weQpAQCAtNDMsMTIgKzQzLDEyIEBAIF9sb2cgPSBsb2dnaW5nLmdldExvZ2dlcihfX25hbWVf
XykKIAogY2xhc3MgTGF5b3V0VGVzdEFwYWNoZUh0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNl
cnZlckJhc2UpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGly
LCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2Jq
LCBvdXRwdXRfZGlyLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwgbnVtX3NlcnZlcnM9Tm9uZSk6CiAg
ICAgICAgICIiIkFyZ3M6CiAgICAgICAgICAgcG9ydF9vYmo6IGhhbmRsZSB0byB0aGUgcGxhdGZv
cm0tc3BlY2lmaWMgcm91dGluZXMKICAgICAgICAgICBvdXRwdXRfZGlyOiB0aGUgYWJzb2x1dGUg
cGF0aCB0byB0aGUgbGF5b3V0IHRlc3QgcmVzdWx0IGRpcmVjdG9yeQogICAgICAgICAiIiIKLSAg
ICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxmLCBwb3J0
X29iaikKKyAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2luaXRfXyhz
ZWxmLCBwb3J0X29iaiwgbnVtX3NlcnZlcnMpCiAgICAgICAgICMgV2UgdXNlIHRoZSBuYW1lICJo
dHRwZCIgaW5zdGVhZCBvZiAiYXBhY2hlIiB0byBtYWtlIG91ciBwYXRocyAoZS5nLiB0aGUgcGlk
IGZpbGU6IC90bXAvV2ViS2l0L2h0dHBkLnBpZCkKICAgICAgICAgIyBtYXRjaCBvbGQtcnVuLXdl
YmtpdC10ZXN0czogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYzOTU2
CiAgICAgICAgIHNlbGYuX25hbWUgPSAnaHR0cGQnCkBAIC05NSw2ICs5NSwxMiBAQCBjbGFzcyBM
YXlvdXRUZXN0QXBhY2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAg
ICAgICAgICAgICAgICAgICAgICAgICAnLWMnLCAiXCdSZW1vdmVIYW5kbGVyIC5jZ2kgLnBsXCci
LAogICAgICAgICAgICAgICAgICAgICAgICAgJy1jJywgIlwnPC9Mb2NhdGlvbj5cJyJdCiAKKyAg
ICAgICAgaWYgc2VsZi5fbnVtX3NlcnZlcnM6CisgICAgICAgICAgICBzdGFydF9jbWQgKz0gWyct
YycsICJcJ1N0YXJ0U2VydmVycyAlZFwnIiAlIHNlbGYuX251bV9zZXJ2ZXJzLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAnLWMnLCAiXCdNaW5TcGFyZVNlcnZlcnMgJWRcJyIgJSBzZWxmLl9u
dW1fc2VydmVycywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJy1jJywgIlwnTWF4U3BhcmVT
ZXJ2ZXJzICVkXCciICUgc2VsZi5fbnVtX3NlcnZlcnNdCisKKwogICAgICAgICBzdG9wX2NtZCA9
IFtleGVjdXRhYmxlLAogICAgICAgICAgICAgJy1mJywgIlwiJXNcIiIgJSBzZWxmLl9nZXRfYXBh
Y2hlX2NvbmZpZ19maWxlX3BhdGgodGVzdF9kaXIsIG91dHB1dF9kaXIpLAogICAgICAgICAgICAg
Jy1jJywgIlwnUGlkRmlsZSAlcyciICUgc2VsZi5fcGlkX2ZpbGUsCmRpZmYgLS1naXQgYS9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZl
cl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZl
cnMvYXBhY2hlX2h0dHBfc2VydmVyX3VuaXR0ZXN0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjU0NjE4ODY4OWE4
MTkzZTgyNzYxNjZiMjE1ZDUxYTc5ZWZhMTgyYzIKLS0tIC9kZXYvbnVsbAorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlcl91
bml0dGVzdC5weQpAQCAtMCwwICsxLDcwIEBACisjIENvcHlyaWdodCAoQykgMjAxMiBHb29nbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIworIyBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyMgbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFy
ZQorIyBtZXQ6CisjCisjICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisjIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyMgICAgICogUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorIyBjb3B5cmlnaHQg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyCisjIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyMgZGlzdHJpYnV0aW9uLgorIyAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9m
IEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisjIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisjIHRoaXMg
c29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisjCisj
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBD
T05UUklCVVRPUlMKKyMgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisjIEEgUEFSVElDVUxBUiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisj
IE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLAorIyBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisjIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorIyBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyMgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorIyAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyMgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKworaW1wb3J0IHVu
aXR0ZXN0CitpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKworZnJvbSB3ZWJraXRweS5jb21tb24uc3lz
dGVtLmV4ZWN1dGl2ZV9tb2NrIGltcG9ydCBNb2NrRXhlY3V0aXZlCitmcm9tIHdlYmtpdHB5LmNv
bW1vbi5zeXN0ZW0ub3V0cHV0Y2FwdHVyZSBpbXBvcnQgT3V0cHV0Q2FwdHVyZQorZnJvbSB3ZWJr
aXRweS5jb21tb24uaG9zdF9tb2NrIGltcG9ydCBNb2NrSG9zdAorZnJvbSB3ZWJraXRweS5sYXlv
dXRfdGVzdHMucG9ydCBpbXBvcnQgdGVzdAorZnJvbSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2Vy
dmVycy5hcGFjaGVfaHR0cF9zZXJ2ZXIgaW1wb3J0IExheW91dFRlc3RBcGFjaGVIdHRwZAorZnJv
bSB3ZWJraXRweS5sYXlvdXRfdGVzdHMuc2VydmVycy5odHRwX3NlcnZlcl9iYXNlIGltcG9ydCBT
ZXJ2ZXJFcnJvcgorCisKK2NsYXNzIFRlc3RMYXlvdXRUZXN0QXBhY2hlSHR0cGQodW5pdHRlc3Qu
VGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X3N0YXJ0X2NtZChzZWxmKToKKyAgICAgICAgIyBGYWls
cyBvbiB3aW4gLSBzZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTg0
NzI2CisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSBpbiAoJ2N5Z3dpbicsICd3aW4zMicpOgorICAg
ICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgZGVmIGZha2VfcGlkKF8pOgorICAgICAgICAgICAg
aG9zdC5maWxlc3lzdGVtLndyaXRlX3RleHRfZmlsZSgnL3RtcC9XZWJLaXQvaHR0cGQucGlkJywg
JzQyJykKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICAgICAgaG9zdCA9IE1vY2tIb3N0
KCkKKyAgICAgICAgaG9zdC5leGVjdXRpdmUgPSBNb2NrRXhlY3V0aXZlKHNob3VsZF9sb2c9VHJ1
ZSkKKyAgICAgICAgdGVzdF9wb3J0ID0gdGVzdC5UZXN0UG9ydChob3N0KQorICAgICAgICBob3N0
LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKHRlc3RfcG9ydC5fcGF0aF90b19hcGFjaGVfY29u
ZmlnX2ZpbGUoKSwgJycpCisKKyAgICAgICAgc2VydmVyID0gTGF5b3V0VGVzdEFwYWNoZUh0dHBk
KHRlc3RfcG9ydCwgIi9tb2NrL291dHB1dF9kaXIiLCBudW1fc2VydmVycz00KQorICAgICAgICBz
ZXJ2ZXIuX2NoZWNrX3RoYXRfYWxsX3BvcnRzX2FyZV9hdmFpbGFibGUgPSBsYW1iZGE6IFRydWUK
KyAgICAgICAgc2VydmVyLl9pc19zZXJ2ZXJfcnVubmluZ19vbl9hbGxfcG9ydHMgPSBsYW1iZGE6
IFRydWUKKyAgICAgICAgc2VydmVyLl93YWl0X2Zvcl9hY3Rpb24gPSBmYWtlX3BpZAorICAgICAg
ICBvYyA9IE91dHB1dENhcHR1cmUoKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBvYy5jYXB0
dXJlX291dHB1dCgpCisgICAgICAgICAgICBzZXJ2ZXIuc3RhcnQoKQorICAgICAgICAgICAgc2Vy
dmVyLnN0b3AoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3V0LCBlcnIsIGxvZ3Mg
PSBvYy5yZXN0b3JlX291dHB1dCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiU3RhcnRTZXJ2
ZXJzIDQiIGluIGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCJNaW5TcGFyZVNlcnZlcnMg
NCIgaW4gZXJyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoIk1heFNwYXJlU2VydmVycyA0IiBp
biBlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShob3N0LmZpbGVzeXN0ZW0uZXhpc3RzKCIv
bW9jay9vdXRwdXRfZGlyL2h0dHBkLmNvbmYiKSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMv
d2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXIucHkgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyLnB5CmluZGV4IDc1
YWQyMTQzYzI4NzdiM2RkMWM4MjZhZjRmN2IyMDBkNzRjMGY2MDQuLmExYjY4NTI4YzE1N2NiNzYw
OTNlODU4MDRiMmJlODc3NjcxYzFiYWUgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXIucHkKKysrIGIvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlci5weQpAQCAtNDMsMTIg
KzQzLDEyIEBAIGNsYXNzIExpZ2h0dHBkKGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2Up
OgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBvdXRwdXRfZGlyLCBiYWNrZ3Jv
dW5kPUZhbHNlLCBwb3J0PU5vbmUsCiAgICAgICAgICAgICAgICAgIHJvb3Q9Tm9uZSwgcnVuX2Jh
Y2tncm91bmQ9Tm9uZSwgYWRkaXRpb25hbF9kaXJzPU5vbmUsCi0gICAgICAgICAgICAgICAgIGxh
eW91dF90ZXN0c19kaXI9Tm9uZSk6CisgICAgICAgICAgICAgICAgIGxheW91dF90ZXN0c19kaXI9
Tm9uZSwgbnVtX3NlcnZlcnM9Tm9uZSk6CiAgICAgICAgICIiIkFyZ3M6CiAgICAgICAgICAgb3V0
cHV0X2RpcjogdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGxheW91dCB0ZXN0IHJlc3VsdCBkaXJl
Y3RvcnkKICAgICAgICAgIiIiCiAgICAgICAgICMgV2Via2l0IHRlc3RzCi0gICAgICAgIGh0dHBf
c2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UuX19pbml0X18oc2VsZiwgcG9ydF9vYmopCisgICAg
ICAgIGh0dHBfc2VydmVyX2Jhc2UuSHR0cFNlcnZlckJhc2UuX19pbml0X18oc2VsZiwgcG9ydF9v
YmosIG51bV9zZXJ2ZXJzKQogICAgICAgICBzZWxmLl9uYW1lID0gJ2xpZ2h0dHBkJwogICAgICAg
ICBzZWxmLl9vdXRwdXRfZGlyID0gb3V0cHV0X2RpcgogICAgICAgICBzZWxmLl9wb3J0ID0gcG9y
dApkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVy
cy9odHRwX3NlcnZlcl9iYXNlLnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVz
dHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CmluZGV4IDQ3ODM2ZmNlY2Q1MWE5OTM3Mzdl
MTI3OTk3NDdhNzE4MWU3NzIwYTIuLjY0ODI1N2I0YzFlZDcwZmQ0ZmUwYWQ3NDc0YjYwZDc0NzU5
NTVkM2MgMTAwNzU1Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Nl
cnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZS5weQorKysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKQEAgLTQ3LDcgKzQ3LDcgQEAg
Y2xhc3MgU2VydmVyRXJyb3IoRXhjZXB0aW9uKToKIGNsYXNzIEh0dHBTZXJ2ZXJCYXNlKG9iamVj
dCk6CiAgICAgIiIiQSBza2VsZXRvbiBjbGFzcyBmb3Igc3RhcnRpbmcgYW5kIHN0b3BwaW5nIHNl
cnZlcnMgdXNlZCBieSB0aGUgbGF5b3V0IHRlc3RzLiIiIgogCi0gICAgZGVmIF9faW5pdF9fKHNl
bGYsIHBvcnRfb2JqKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG51bV9zZXJ2
ZXJzPU5vbmUpOgogICAgICAgICBzZWxmLl9leGVjdXRpdmUgPSBwb3J0X29iai5fZXhlY3V0aXZl
CiAgICAgICAgIHNlbGYuX2ZpbGVzeXN0ZW0gPSBwb3J0X29iai5fZmlsZXN5c3RlbQogICAgICAg
ICBzZWxmLl9uYW1lID0gJzx2aXJ0dWFsPicKQEAgLTU1LDYgKzU1LDcgQEAgY2xhc3MgSHR0cFNl
cnZlckJhc2Uob2JqZWN0KToKICAgICAgICAgc2VsZi5fcGlkID0gTm9uZQogICAgICAgICBzZWxm
Ll9waWRfZmlsZSA9IE5vbmUKICAgICAgICAgc2VsZi5fcG9ydF9vYmogPSBwb3J0X29iagorICAg
ICAgICBzZWxmLl9udW1fc2VydmVycyA9IG51bV9zZXJ2ZXJzCiAKICAgICAgICAgIyBXZSBuZWVk
IGEgbm9uLWNoZWNrb3V0LWRlcGVuZGVudCBwbGFjZSB0byBwdXQgbG9jayBmaWxlcywgZXRjLiBX
ZQogICAgICAgICAjIGRvbid0IHVzZSB0aGUgUHl0aG9uIGRlZmF1bHQgb24gdGhlIE1hYyBiZWNh
dXNlIGl0IGRlZmF1bHRzIHRvIGEK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148620</attachid>
            <date>2012-06-20 11:59:51 -0700</date>
            <delta_ts>2012-06-20 12:58:17 -0700</delta_ts>
            <desc>patch for landing</desc>
            <filename>bug-88134-20120620115950.patch</filename>
            <type>text/plain</type>
            <size>16928</size>
            <attacher name="Dirk Pranke">dpranke</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODQ0CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMTE4MDhmNmZjYzcwNTQ4NWZhZjBlODFkN2I1ZjdjNmIy
Nzg0ZGU1OS4uNWJkZGY2MWI1ZWM5ZWJlMDNmYzIxY2UzYjkxNzg4YThjMzMzZGQ1ZCAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQw
IEBACisyMDEyLTA2LTE4ICBEaXJrIFByYW5rZSAgPGRwcmFua2VAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIG5ldy1ydW4td2Via2l0LXRlc3RzIHNob3VsZCBzcGluLXVwIGVub3VnaCBodHRwZCBw
cm9jZXNzZXMgdG8gYXZvaWQgdGltZW91dHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTg4MTM0CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgVG9ueSBDaGFu
Zy4KKworICAgICAgICBDaGFuZ2UgTlJXVCB0byBzcGluIHVwIDIqbWluKGNoaWxkX3Byb2Nlc3Nl
cywgbG9ja2VkX3NoYXJkcykKKyAgICAgICAgaHR0cCBzZXJ2ZXJzIGJ5IGRlZmF1bHQgc28gdGhh
dCB3ZSBhcmUgbGVzcyBsaWtlbHkgdG8gZ2V0IGEKKyAgICAgICAgYnVuY2ggb2YgaHR0cCB0aW1l
b3V0cyBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgdGVzdCBydW4uCisKKyAgICAgICAgTm90ZSB0aGF0
IEkgaGFkIHRvIHR3ZWFrIGV4ZWN1dGl2ZV9tb2NrIHRvIHN1cHBvcnQgbW9ja2VkIHN0ZGVycgor
ICAgICAgICBiZWNhdXNlIHRoZSBhcGFjaGVfaHR0cF9zZXJ2ZXIgY29kZSByZWFkcyBzdGRlcnIg
d2hlbiBzdGFydGluZyBhCisgICAgICAgIHByb2Nlc3MgdG8gZW5zdXJlIGl0IHN0YXJ0ZWQgb2th
eS4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVf
bW9jay5weToKKyAgICAgICAgKE1vY2tQcm9jZXNzLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3Jp
cHRzL3dlYmtpdHB5L2NvbW1vbi9zeXN0ZW0vb3V0cHV0Y2FwdHVyZS5weToKKyAgICAgICAgKiBT
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5OgorICAg
ICAgICAoTWFuYWdlci5fcnVuX3Rlc3RzKToKKyAgICAgICAgKE1hbmFnZXIuc3RhcnRfc2VydmVy
c193aXRoX2xvY2spOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3Bv
cnQvYmFzZS5weToKKyAgICAgICAgKFBvcnQudG8uc3RhcnRfaHR0cF9zZXJ2ZXIpOgorICAgICAg
ICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3BvcnQvdGVzdC5weToKKyAgICAgICAg
KFRlc3RQb3J0LnN0YXJ0X2h0dHBfc2VydmVyKToKKyAgICAgICAgKFRlc3RQb3J0Ll9wYXRoX3Rv
X2FwYWNoZSk6CisgICAgICAgIChUZXN0UG9ydCk6CisgICAgICAgIChUZXN0UG9ydC5fcGF0aF90
b19hcGFjaGVfY29uZmlnX2ZpbGUpOgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5OgorICAgICAgICAoTGF5b3V0VGVz
dEFwYWNoZUh0dHBkLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91
dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9odHRwX3NlcnZlcl91bml0dGVzdC5weTogQWRkZWQKKyAg
ICAgICAgKExheW91dFRlc3RBcGFjaGVIdHRwZC5fX2luaXRfXyk6CisgICAgICAgICogU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlci5weToKKyAgICAgICAg
KExpZ2h0dHBkLl9faW5pdF9fKToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L2xheW91dF90
ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHk6CisgICAgICAgIChIdHRwU2VydmVyQmFz
ZS5fX2luaXRfXyk6CisKIDIwMTItMDYtMjAgIFRvbSBaYWtyYWpzZWsgIDx0b216QGNvZGVhdXJv
cmEub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQ6IEJhY2sgb3V0IGFjY2lkZW50YWxseSBjaGVj
a2VkIGluIGRlYnVnIHByaW50IHdoaWNoIGJyb2tlIGEgdGVzdApkaWZmIC0tZ2l0IGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5IGIvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9jb21tb24vc3lzdGVtL2V4ZWN1dGl2ZV9tb2NrLnB5CmluZGV4IGIw
ZGI0OGNhM2NhNDVhYWMxODM5NTUwY2I5M2Q1MDQ4NmQzYTFhZjQuLmExNWMzNjU0ZDMxM2MyOWQw
NjM2YjA1OWI2YjBjYmVkMmI0Mzc5YmIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0
cHkvY29tbW9uL3N5c3RlbS9leGVjdXRpdmVfbW9jay5weQorKysgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2NvbW1vbi9zeXN0ZW0vZXhlY3V0aXZlX21vY2sucHkKQEAgLTM0LDEwICszNCwxMiBA
QCBmcm9tIHdlYmtpdHB5LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlIGltcG9ydCBTY3JpcHRFcnJv
cgogCiAKIGNsYXNzIE1vY2tQcm9jZXNzKG9iamVjdCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYs
IHN0ZG91dD0nTU9DSyBTVERPVVRcbicpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzdGRvdXQ9
J01PQ0sgU1RET1VUXG4nLCBzdGRlcnI9JycpOgogICAgICAgICBzZWxmLnBpZCA9IDQyCiAgICAg
ICAgIHNlbGYuc3Rkb3V0ID0gU3RyaW5nSU8uU3RyaW5nSU8oc3Rkb3V0KQorICAgICAgICBzZWxm
LnN0ZGVyciA9IFN0cmluZ0lPLlN0cmluZ0lPKHN0ZGVycikKICAgICAgICAgc2VsZi5zdGRpbiA9
IFN0cmluZ0lPLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5yZXR1cm5jb2RlID0gMAogCiAgICAg
ZGVmIHdhaXQoc2VsZik6CiAgICAgICAgIHJldHVybgpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0
cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weSBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXIucHkKaW5kZXgg
MzE4OTU2M2QyNTM3M2QwYzAwZjFhOTk1MjRiYzliNmQzN2JlYjgxYy4uYTYzYzFlZmI4N2QyOGRk
ZjFmNzZmZWJkZGYxMWJkY2UxODZhNjdlZiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJr
aXRweS9sYXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlci5weQorKysgYi9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyLnB5CkBAIC03NjUs
OCArNzY1LDggQEAgY2xhc3MgTWFuYWdlcihvYmplY3QpOgogCiAgICAgICAgIGFsbF9zaGFyZHMg
PSBsb2NrZWRfc2hhcmRzICsgdW5sb2NrZWRfc2hhcmRzCiAgICAgICAgIHNlbGYuX3JlbWFpbmlu
Z19sb2NrZWRfc2hhcmRzID0gbG9ja2VkX3NoYXJkcwotICAgICAgICBpZiBzZWxmLl9vcHRpb25z
Lmh0dHAgYW5kIChzZWxmLl9odHRwX3Rlc3RzKCkgb3Igc2VsZi5fd2Vic29ja2V0X3Rlc3RzKCkp
OgotICAgICAgICAgICAgc2VsZi5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygpCisgICAgICAgIGlm
IGxvY2tlZF9zaGFyZHMgYW5kIHNlbGYuX29wdGlvbnMuaHR0cDoKKyAgICAgICAgICAgIHNlbGYu
c3RhcnRfc2VydmVyc193aXRoX2xvY2soMiAqIG1pbihudW1fd29ya2VycywgbGVuKGxvY2tlZF9z
aGFyZHMpKSkKIAogICAgICAgICBudW1fd29ya2VycyA9IG1pbihudW1fd29ya2VycywgbGVuKGFs
bF9zaGFyZHMpKQogICAgICAgICBzZWxmLl9sb2dfbnVtX3dvcmtlcnMobnVtX3dvcmtlcnMsIGxl
bihhbGxfc2hhcmRzKSwgbGVuKGxvY2tlZF9zaGFyZHMpKQpAQCAtOTY5LDEyICs5NjksMTIgQEAg
Y2xhc3MgTWFuYWdlcihvYmplY3QpOgogCiAgICAgICAgIHJldHVybiBzZWxmLl9wb3J0LmV4aXRf
Y29kZV9mcm9tX3N1bW1hcml6ZWRfcmVzdWx0cyh1bmV4cGVjdGVkX3Jlc3VsdHMpCiAKLSAgICBk
ZWYgc3RhcnRfc2VydmVyc193aXRoX2xvY2soc2VsZik6CisgICAgZGVmIHN0YXJ0X3NlcnZlcnNf
d2l0aF9sb2NrKHNlbGYsIG51bWJlcl9vZl9zZXJ2ZXJzKToKICAgICAgICAgc2VsZi5fcHJpbnRl
ci5wcmludF91cGRhdGUoJ0FjcXVpcmluZyBodHRwIGxvY2sgLi4uJykKICAgICAgICAgc2VsZi5f
cG9ydC5hY3F1aXJlX2h0dHBfbG9jaygpCiAgICAgICAgIGlmIHNlbGYuX2h0dHBfdGVzdHMoKToK
ICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGluZyBIVFRQIHNl
cnZlciAuLi4nKQotICAgICAgICAgICAgc2VsZi5fcG9ydC5zdGFydF9odHRwX3NlcnZlcigpCisg
ICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X2h0dHBfc2VydmVyKG51bWJlcl9vZl9zZXJ2ZXJz
PW51bWJlcl9vZl9zZXJ2ZXJzKQogICAgICAgICBpZiBzZWxmLl93ZWJzb2NrZXRfdGVzdHMoKToK
ICAgICAgICAgICAgIHNlbGYuX3ByaW50ZXIucHJpbnRfdXBkYXRlKCdTdGFydGluZyBXZWJTb2Nr
ZXQgc2VydmVyIC4uLicpCiAgICAgICAgICAgICBzZWxmLl9wb3J0LnN0YXJ0X3dlYnNvY2tldF9z
ZXJ2ZXIoKQpkaWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMv
Y29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkv
bGF5b3V0X3Rlc3RzL2NvbnRyb2xsZXJzL21hbmFnZXJfdW5pdHRlc3QucHkKaW5kZXggMTMwMTE4
ODNmYmI2ZDNlMzUwYjI3NTZjNDA2NDUwMWIyYTlmYzE4ZC4uNGFjYjM5NzY1NjQ0MDMxOTliNzE0
MjdjMDYwNmVhMDFlYmQ3ODQzYiAxMDA2NDQKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9s
YXlvdXRfdGVzdHMvY29udHJvbGxlcnMvbWFuYWdlcl91bml0dGVzdC5weQorKysgYi9Ub29scy9T
Y3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9jb250cm9sbGVycy9tYW5hZ2VyX3VuaXR0ZXN0
LnB5CkBAIC0zNDQsNyArMzQ0LDcgQEAgY2xhc3MgTWFuYWdlclRlc3QodW5pdHRlc3QuVGVzdENh
c2UpOgogCiAgICAgZGVmIHRlc3Rfc2VydmVyc19zdGFydGVkKHNlbGYpOgogCi0gICAgICAgIGRl
ZiBzdGFydF9odHRwX3NlcnZlcigpOgorICAgICAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIobnVt
YmVyX29mX3NlcnZlcnM9Tm9uZSk6CiAgICAgICAgICAgICBzZWxmLmh0dHBfc3RhcnRlZCA9IFRy
dWUKIAogICAgICAgICBkZWYgc3RhcnRfd2Vic29ja2V0X3NlcnZlcigpOgpAQCAtMzY2LDcgKzM2
Niw3IEBAIGNsYXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2Vs
Zi5odHRwX3N0YXJ0ZWQgPSBzZWxmLmh0dHBfc3RvcHBlZCA9IHNlbGYud2Vic29ja2V0X3N0YXJ0
ZWQgPSBzZWxmLndlYnNvY2tldF9zdG9wcGVkID0gRmFsc2UKICAgICAgICAgbWFuYWdlciA9IE1h
bmFnZXIocG9ydD1wb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKGh0dHA9VHJ1ZSksIHByaW50ZXI9
TW9jaygpKQogICAgICAgICBtYW5hZ2VyLl90ZXN0X2ZpbGVzID0gWydodHRwL3Rlc3RzL3Bhc3Mu
dHh0J10KLSAgICAgICAgbWFuYWdlci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygpCisgICAgICAg
IG1hbmFnZXIuc3RhcnRfc2VydmVyc193aXRoX2xvY2sobnVtYmVyX29mX3NlcnZlcnM9NCkKICAg
ICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoc2VsZi5odHRwX3N0YXJ0ZWQsIFRydWUpCiAgICAgICAg
IHNlbGYuYXNzZXJ0RXF1YWxzKHNlbGYud2Vic29ja2V0X3N0YXJ0ZWQsIEZhbHNlKQogICAgICAg
ICBtYW5hZ2VyLnN0b3Bfc2VydmVyc193aXRoX2xvY2soKQpAQCAtMzc2LDcgKzM3Niw3IEBAIGNs
YXNzIE1hbmFnZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgc2VsZi5odHRwX3N0
YXJ0ZWQgPSBzZWxmLmh0dHBfc3RvcHBlZCA9IHNlbGYud2Vic29ja2V0X3N0YXJ0ZWQgPSBzZWxm
LndlYnNvY2tldF9zdG9wcGVkID0gRmFsc2UKICAgICAgICAgbWFuYWdlciA9IE1hbmFnZXIocG9y
dD1wb3J0LCBvcHRpb25zPU1vY2tPcHRpb25zKGh0dHA9VHJ1ZSksIHByaW50ZXI9TW9jaygpKQog
ICAgICAgICBtYW5hZ2VyLl90ZXN0X2ZpbGVzID0gWyd3ZWJzb2NrZXQvcGFzcy50eHQnXQotICAg
ICAgICBtYW5hZ2VyLnN0YXJ0X3NlcnZlcnNfd2l0aF9sb2NrKCkKKyAgICAgICAgbWFuYWdlci5z
dGFydF9zZXJ2ZXJzX3dpdGhfbG9jayhudW1iZXJfb2Zfc2VydmVycz00KQogICAgICAgICBzZWxm
LmFzc2VydEVxdWFscyhzZWxmLmh0dHBfc3RhcnRlZCwgVHJ1ZSkKICAgICAgICAgc2VsZi5hc3Nl
cnRFcXVhbHMoc2VsZi53ZWJzb2NrZXRfc3RhcnRlZCwgVHJ1ZSkKICAgICAgICAgbWFuYWdlci5z
dG9wX3NlcnZlcnNfd2l0aF9sb2NrKCkKQEAgLTM4Niw3ICszODYsNyBAQCBjbGFzcyBNYW5hZ2Vy
VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgICAgIHNlbGYuaHR0cF9zdGFydGVkID0gc2Vs
Zi5odHRwX3N0b3BwZWQgPSBzZWxmLndlYnNvY2tldF9zdGFydGVkID0gc2VsZi53ZWJzb2NrZXRf
c3RvcHBlZCA9IEZhbHNlCiAgICAgICAgIG1hbmFnZXIgPSBNYW5hZ2VyKHBvcnQ9cG9ydCwgb3B0
aW9ucz1Nb2NrT3B0aW9ucyhodHRwPVRydWUpLCBwcmludGVyPU1vY2soKSkKICAgICAgICAgbWFu
YWdlci5fdGVzdF9maWxlcyA9IFsncGVyZi9mb28vdGVzdC5odG1sJ10KLSAgICAgICAgbWFuYWdl
ci5zdGFydF9zZXJ2ZXJzX3dpdGhfbG9jaygpCisgICAgICAgIG1hbmFnZXIuc3RhcnRfc2VydmVy
c193aXRoX2xvY2sobnVtYmVyX29mX3NlcnZlcnM9NCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVh
bHMoc2VsZi5odHRwX3N0YXJ0ZWQsIEZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhz
ZWxmLndlYnNvY2tldF9zdGFydGVkLCBGYWxzZSkKICAgICAgICAgbWFuYWdlci5zdG9wX3NlcnZl
cnNfd2l0aF9sb2NrKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvYmFzZS5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvYmFzZS5weQppbmRleCA5ZTczYjJjNTVmZTgzYTQ0OTNjZGRkNjMzZmE5YTQ5MDcxMDg2
OWJjLi5lYmY3YTdmMTA5Nzk2MDMzZTExNmQ0ZDQxNTQ0MjE2M2UwNGRjNGY3IDEwMDc1NQotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L2Jhc2UucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC9iYXNlLnB5CkBAIC03ODYs
MTYgKzc4NiwxNiBAQCBjbGFzcyBQb3J0KG9iamVjdCk6CiAgICAgICAgIG1ldGhvZC4iIiIKICAg
ICAgICAgcGFzcwogCi0gICAgZGVmIHN0YXJ0X2h0dHBfc2VydmVyKHNlbGYsIGFkZGl0aW9uYWxf
ZGlycz1Ob25lKToKKyAgICBkZWYgc3RhcnRfaHR0cF9zZXJ2ZXIoc2VsZiwgYWRkaXRpb25hbF9k
aXJzPU5vbmUsIG51bWJlcl9vZl9zZXJ2ZXJzPU5vbmUpOgogICAgICAgICAiIiJTdGFydCBhIHdl
YiBzZXJ2ZXIuIFJhaXNlIGFuIGVycm9yIGlmIGl0IGNhbid0IHN0YXJ0IG9yIGlzIGFscmVhZHkg
cnVubmluZy4KIAogICAgICAgICBQb3J0cyBjYW4gc3R1YiB0aGlzIG91dCBpZiB0aGV5IGRvbid0
IG5lZWQgYSB3ZWIgc2VydmVyIHRvIGJlIHJ1bm5pbmcuIiIiCiAgICAgICAgIGFzc2VydCBub3Qg
c2VsZi5faHR0cF9zZXJ2ZXIsICdBbHJlYWR5IHJ1bm5pbmcgYW4gaHR0cCBzZXJ2ZXIuJwogCiAg
ICAgICAgIGlmIHNlbGYuX3VzZXNfYXBhY2hlKCk6Ci0gICAgICAgICAgICBzZXJ2ZXIgPSBhcGFj
aGVfaHR0cF9zZXJ2ZXIuTGF5b3V0VGVzdEFwYWNoZUh0dHBkKHNlbGYsIHNlbGYucmVzdWx0c19k
aXJlY3RvcnkoKSwgYWRkaXRpb25hbF9kaXJzPWFkZGl0aW9uYWxfZGlycykKKyAgICAgICAgICAg
IHNlcnZlciA9IGFwYWNoZV9odHRwX3NlcnZlci5MYXlvdXRUZXN0QXBhY2hlSHR0cGQoc2VsZiwg
c2VsZi5yZXN1bHRzX2RpcmVjdG9yeSgpLCBhZGRpdGlvbmFsX2RpcnM9YWRkaXRpb25hbF9kaXJz
LCBudW1iZXJfb2Zfc2VydmVycz1udW1iZXJfb2Zfc2VydmVycykKICAgICAgICAgZWxzZToKLSAg
ICAgICAgICAgIHNlcnZlciA9IGh0dHBfc2VydmVyLkxpZ2h0dHBkKHNlbGYsIHNlbGYucmVzdWx0
c19kaXJlY3RvcnkoKSwgYWRkaXRpb25hbF9kaXJzPWFkZGl0aW9uYWxfZGlycykKKyAgICAgICAg
ICAgIHNlcnZlciA9IGh0dHBfc2VydmVyLkxpZ2h0dHBkKHNlbGYsIHNlbGYucmVzdWx0c19kaXJl
Y3RvcnkoKSwgYWRkaXRpb25hbF9kaXJzPWFkZGl0aW9uYWxfZGlycywgbnVtX3NlcnZlcnM9bnVt
X3NlcnZlcnMpCiAKICAgICAgICAgc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5faHR0cF9z
ZXJ2ZXIgPSBzZXJ2ZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3BvcnQvdGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3Rz
L3BvcnQvdGVzdC5weQppbmRleCAyNWM2YTEzYmU5ZGFhMDIwNDYzOTg5NWQxMjhiNDFkZjkzNzUx
NDU2Li5iODJlZTA2YWY1ZDg0YjAyNWRlZTZlNGYwYjk3YzdhMDRmODBjM2VhIDEwMDY0NAotLS0g
YS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9wb3J0L3Rlc3QucHkKKysrIGIv
VG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvcG9ydC90ZXN0LnB5CkBAIC00Mjgs
NyArNDI4LDcgQEAgY2xhc3MgVGVzdFBvcnQoUG9ydCk6CiAgICAgZGVmIF9kcml2ZXJfY2xhc3Mo
c2VsZik6CiAgICAgICAgIHJldHVybiBUZXN0RHJpdmVyCiAKLSAgICBkZWYgc3RhcnRfaHR0cF9z
ZXJ2ZXIoc2VsZik6CisgICAgZGVmIHN0YXJ0X2h0dHBfc2VydmVyKHNlbGYsIGFkZGl0aW9uYWxf
ZGlycz1Ob25lLCBudW1iZXJfb2Zfc2VydmVycz1Ob25lKToKICAgICAgICAgcGFzcwogCiAgICAg
ZGVmIHN0YXJ0X3dlYnNvY2tldF9zZXJ2ZXIoc2VsZik6CkBAIC00NTUsNiArNDU1LDEyIEBAIGNs
YXNzIFRlc3RQb3J0KFBvcnQpOgogICAgIGRlZiBfcGF0aF90b19saWdodHRwZF9waHAoc2VsZik6
CiAgICAgICAgIHJldHVybiAiL3Vzci9iaW4vcGhwLWNnaSIKIAorICAgIGRlZiBfcGF0aF90b19h
cGFjaGUoc2VsZik6CisgICAgICAgIHJldHVybiAiL3Vzci9zYmluL2h0dHBkIgorCisgICAgZGVm
IF9wYXRoX3RvX2FwYWNoZV9jb25maWdfZmlsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2ZpbGVzeXN0ZW0uam9pbihzZWxmLmxheW91dF90ZXN0c19kaXIoKSwgJ2h0dHAnLCAnY29uZics
ICdodHRwZC5jb25mJykKKwogICAgIGRlZiBwYXRoX3RvX3Rlc3RfZXhwZWN0YXRpb25zX2ZpbGUo
c2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLl9leHBlY3RhdGlvbnNfcGF0aAogCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2FwYWNoZV9o
dHRwX3NlcnZlci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZl
cnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CmluZGV4IGZlY2M1YWRlM2Q0M2RkZjY2MWJmMDNjZmNl
MTFmNzFiNjM1MTQ5MDkuLjdjZDRhZjUzODMzYjg0NTE0ZWE4YWVmOWRjYzdhYTliNzM5MjQyYmIg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMv
YXBhY2hlX2h0dHBfc2VydmVyLnB5CisrKyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0
X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0dHBfc2VydmVyLnB5CkBAIC00MywxMiArNDMsMTIgQEAg
X2xvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKF9fbmFtZV9fKQogCiBjbGFzcyBMYXlvdXRUZXN0QXBh
Y2hlSHR0cGQoaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZSk6CiAKLSAgICBkZWYgX19p
bml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1dF9kaXIsIGFkZGl0aW9uYWxfZGlycz1Ob25lKToK
KyAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91dHB1dF9kaXIsIGFkZGl0aW9uYWxf
ZGlycz1Ob25lLCBudW1iZXJfb2Zfc2VydmVycz1Ob25lKToKICAgICAgICAgIiIiQXJnczoKICAg
ICAgICAgICBwb3J0X29iajogaGFuZGxlIHRvIHRoZSBwbGF0Zm9ybS1zcGVjaWZpYyByb3V0aW5l
cwogICAgICAgICAgIG91dHB1dF9kaXI6IHRoZSBhYnNvbHV0ZSBwYXRoIHRvIHRoZSBsYXlvdXQg
dGVzdCByZXN1bHQgZGlyZWN0b3J5CiAgICAgICAgICIiIgotICAgICAgICBodHRwX3NlcnZlcl9i
YXNlLkh0dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKHNlbGYsIHBvcnRfb2JqKQorICAgICAgICBodHRw
X3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlLl9faW5pdF9fKHNlbGYsIHBvcnRfb2JqLCBudW1i
ZXJfb2Zfc2VydmVycykKICAgICAgICAgIyBXZSB1c2UgdGhlIG5hbWUgImh0dHBkIiBpbnN0ZWFk
IG9mICJhcGFjaGUiIHRvIG1ha2Ugb3VyIHBhdGhzIChlLmcuIHRoZSBwaWQgZmlsZTogL3RtcC9X
ZWJLaXQvaHR0cGQucGlkKQogICAgICAgICAjIG1hdGNoIG9sZC1ydW4td2Via2l0LXRlc3RzOiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjM5NTYKICAgICAgICAgc2Vs
Zi5fbmFtZSA9ICdodHRwZCcKQEAgLTk1LDYgKzk1LDEyIEBAIGNsYXNzIExheW91dFRlc3RBcGFj
aGVIdHRwZChodHRwX3NlcnZlcl9iYXNlLkh0dHBTZXJ2ZXJCYXNlKToKICAgICAgICAgICAgICAg
ICAgICAgICAgICctYycsICJcJ1JlbW92ZUhhbmRsZXIgLmNnaSAucGxcJyIsCiAgICAgICAgICAg
ICAgICAgICAgICAgICAnLWMnLCAiXCc8L0xvY2F0aW9uPlwnIl0KIAorICAgICAgICBpZiBzZWxm
Ll9udW1iZXJfb2Zfc2VydmVyczoKKyAgICAgICAgICAgIHN0YXJ0X2NtZCArPSBbJy1jJywgIlwn
U3RhcnRTZXJ2ZXJzICVkXCciICUgc2VsZi5fbnVtYmVyX29mX3NlcnZlcnMsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICctYycsICJcJ01pblNwYXJlU2VydmVycyAlZFwnIiAlIHNlbGYuX251
bWJlcl9vZl9zZXJ2ZXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnLWMnLCAiXCdNYXhT
cGFyZVNlcnZlcnMgJWRcJyIgJSBzZWxmLl9udW1iZXJfb2Zfc2VydmVyc10KKworCiAgICAgICAg
IHN0b3BfY21kID0gW2V4ZWN1dGFibGUsCiAgICAgICAgICAgICAnLWYnLCAiXCIlc1wiIiAlIHNl
bGYuX2dldF9hcGFjaGVfY29uZmlnX2ZpbGVfcGF0aCh0ZXN0X2Rpciwgb3V0cHV0X2RpciksCiAg
ICAgICAgICAgICAnLWMnLCAiXCdQaWRGaWxlICVzJyIgJSBzZWxmLl9waWRfZmlsZSwKZGlmZiAt
LWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hl
X2h0dHBfc2VydmVyX3VuaXR0ZXN0LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRf
dGVzdHMvc2VydmVycy9hcGFjaGVfaHR0cF9zZXJ2ZXJfdW5pdHRlc3QucHkKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MDU4NTFiZjU4NjA4Y2U3MmE4ODczNGJiMGZiOTBlMDM1NTY3ZjBlNAotLS0gL2Rldi9udWxsCisr
KyBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvYXBhY2hlX2h0
dHBfc2VydmVyX3VuaXR0ZXN0LnB5CkBAIC0wLDAgKzEsNzAgQEAKKyMgQ29weXJpZ2h0IChDKSAy
MDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisjCisjIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorIyBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMgYXJlCisjIG1ldDoKKyMKKyMgICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyMgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorIyAgICAgKiBS
ZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisj
IGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIKKyMgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZQorIyBkaXN0cmlidXRpb24uCisjICAgICAqIE5laXRoZXIg
dGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyMgY29udHJpYnV0
b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZy
b20KKyMgdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlz
c2lvbi4KKyMKKyMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhP
TERFUlMgQU5EIENPTlRSSUJVVE9SUworIyAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorIyBMSU1JVEVEIFRPLCBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyMgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBD
T1BZUklHSFQKKyMgT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisjIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyMgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisjIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWQorIyBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisjIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorIyBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
CitpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCByZQoraW1wb3J0IHN5cworCitmcm9tIHdlYmtpdHB5
LmNvbW1vbi5zeXN0ZW0uZXhlY3V0aXZlX21vY2sgaW1wb3J0IE1vY2tFeGVjdXRpdmUKK2Zyb20g
d2Via2l0cHkuY29tbW9uLnN5c3RlbS5vdXRwdXRjYXB0dXJlIGltcG9ydCBPdXRwdXRDYXB0dXJl
Citmcm9tIHdlYmtpdHB5LmNvbW1vbi5ob3N0X21vY2sgaW1wb3J0IE1vY2tIb3N0Citmcm9tIHdl
YmtpdHB5LmxheW91dF90ZXN0cy5wb3J0IGltcG9ydCB0ZXN0Citmcm9tIHdlYmtpdHB5LmxheW91
dF90ZXN0cy5zZXJ2ZXJzLmFwYWNoZV9odHRwX3NlcnZlciBpbXBvcnQgTGF5b3V0VGVzdEFwYWNo
ZUh0dHBkCitmcm9tIHdlYmtpdHB5LmxheW91dF90ZXN0cy5zZXJ2ZXJzLmh0dHBfc2VydmVyX2Jh
c2UgaW1wb3J0IFNlcnZlckVycm9yCisKKworY2xhc3MgVGVzdExheW91dFRlc3RBcGFjaGVIdHRw
ZCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3Rfc3RhcnRfY21kKHNlbGYpOgorICAg
ICAgICAjIEZhaWxzIG9uIHdpbiAtIHNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9ODQ3MjYKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnY3lnd2luJywgJ3dp
bjMyJyk6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBkZWYgZmFrZV9waWQoXyk6Cisg
ICAgICAgICAgICBob3N0LmZpbGVzeXN0ZW0ud3JpdGVfdGV4dF9maWxlKCcvdG1wL1dlYktpdC9o
dHRwZC5waWQnLCAnNDInKQorICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICBob3N0
ID0gTW9ja0hvc3QoKQorICAgICAgICBob3N0LmV4ZWN1dGl2ZSA9IE1vY2tFeGVjdXRpdmUoc2hv
dWxkX2xvZz1UcnVlKQorICAgICAgICB0ZXN0X3BvcnQgPSB0ZXN0LlRlc3RQb3J0KGhvc3QpCisg
ICAgICAgIGhvc3QuZmlsZXN5c3RlbS53cml0ZV90ZXh0X2ZpbGUodGVzdF9wb3J0Ll9wYXRoX3Rv
X2FwYWNoZV9jb25maWdfZmlsZSgpLCAnJykKKworICAgICAgICBzZXJ2ZXIgPSBMYXlvdXRUZXN0
QXBhY2hlSHR0cGQodGVzdF9wb3J0LCAiL21vY2svb3V0cHV0X2RpciIsIG51bWJlcl9vZl9zZXJ2
ZXJzPTQpCisgICAgICAgIHNlcnZlci5fY2hlY2tfdGhhdF9hbGxfcG9ydHNfYXJlX2F2YWlsYWJs
ZSA9IGxhbWJkYTogVHJ1ZQorICAgICAgICBzZXJ2ZXIuX2lzX3NlcnZlcl9ydW5uaW5nX29uX2Fs
bF9wb3J0cyA9IGxhbWJkYTogVHJ1ZQorICAgICAgICBzZXJ2ZXIuX3dhaXRfZm9yX2FjdGlvbiA9
IGZha2VfcGlkCisgICAgICAgIG9jID0gT3V0cHV0Q2FwdHVyZSgpCisgICAgICAgIHRyeToKKyAg
ICAgICAgICAgIG9jLmNhcHR1cmVfb3V0cHV0KCkKKyAgICAgICAgICAgIHNlcnZlci5zdGFydCgp
CisgICAgICAgICAgICBzZXJ2ZXIuc3RvcCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAg
ICBvdXQsIGVyciwgbG9ncyA9IG9jLnJlc3RvcmVfb3V0cHV0KCkKKyAgICAgICAgc2VsZi5hc3Nl
cnRUcnVlKCJTdGFydFNlcnZlcnMgNCIgaW4gZXJyKQorICAgICAgICBzZWxmLmFzc2VydFRydWUo
Ik1pblNwYXJlU2VydmVycyA0IiBpbiBlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiTWF4
U3BhcmVTZXJ2ZXJzIDQiIGluIGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhvc3QuZmls
ZXN5c3RlbS5leGlzdHMoIi9tb2NrL291dHB1dF9kaXIvaHR0cGQuY29uZiIpKQpkaWZmIC0tZ2l0
IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZl
ci5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9z
ZXJ2ZXIucHkKaW5kZXggNzVhZDIxNDNjMjg3N2IzZGQxYzgyNmFmNGY3YjIwMGQ3NGMwZjYwNC4u
YTFiNjg1MjhjMTU3Y2I3NjA5M2U4NTgwNGIyYmU4Nzc2NzFjMWJhZSAxMDA3NTUKLS0tIGEvVG9v
bHMvU2NyaXB0cy93ZWJraXRweS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlci5weQor
KysgYi9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2Vy
dmVyLnB5CkBAIC00MywxMiArNDMsMTIgQEAgY2xhc3MgTGlnaHR0cGQoaHR0cF9zZXJ2ZXJfYmFz
ZS5IdHRwU2VydmVyQmFzZSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmosIG91
dHB1dF9kaXIsIGJhY2tncm91bmQ9RmFsc2UsIHBvcnQ9Tm9uZSwKICAgICAgICAgICAgICAgICAg
cm9vdD1Ob25lLCBydW5fYmFja2dyb3VuZD1Ob25lLCBhZGRpdGlvbmFsX2RpcnM9Tm9uZSwKLSAg
ICAgICAgICAgICAgICAgbGF5b3V0X3Rlc3RzX2Rpcj1Ob25lKToKKyAgICAgICAgICAgICAgICAg
bGF5b3V0X3Rlc3RzX2Rpcj1Ob25lLCBudW1fc2VydmVycz1Ob25lKToKICAgICAgICAgIiIiQXJn
czoKICAgICAgICAgICBvdXRwdXRfZGlyOiB0aGUgYWJzb2x1dGUgcGF0aCB0byB0aGUgbGF5b3V0
IHRlc3QgcmVzdWx0IGRpcmVjdG9yeQogICAgICAgICAiIiIKICAgICAgICAgIyBXZWJraXQgdGVz
dHMKLSAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2luaXRfXyhzZWxm
LCBwb3J0X29iaikKKyAgICAgICAgaHR0cF9zZXJ2ZXJfYmFzZS5IdHRwU2VydmVyQmFzZS5fX2lu
aXRfXyhzZWxmLCBwb3J0X29iaiwgbnVtX3NlcnZlcnMpCiAgICAgICAgIHNlbGYuX25hbWUgPSAn
bGlnaHR0cGQnCiAgICAgICAgIHNlbGYuX291dHB1dF9kaXIgPSBvdXRwdXRfZGlyCiAgICAgICAg
IHNlbGYuX3BvcnQgPSBwb3J0CmRpZmYgLS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L2xh
eW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkgYi9Ub29scy9TY3JpcHRzL3dl
YmtpdHB5L2xheW91dF90ZXN0cy9zZXJ2ZXJzL2h0dHBfc2VydmVyX2Jhc2UucHkKaW5kZXggNDc4
MzZmY2VjZDUxYTk5MzczN2UxMjc5OTc0N2E3MTgxZTc3MjBhMi4uYzFjM2RhODI3YjQzMjk1YTc0
MjU5MjIzZTY5ZGY1NzMyMmE3MDVhZCAxMDA3NTUKLS0tIGEvVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS9sYXlvdXRfdGVzdHMvc2VydmVycy9odHRwX3NlcnZlcl9iYXNlLnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvbGF5b3V0X3Rlc3RzL3NlcnZlcnMvaHR0cF9zZXJ2ZXJfYmFzZS5weQpA
QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBTZXJ2ZXJFcnJvcihFeGNlcHRpb24pOgogY2xhc3MgSHR0
cFNlcnZlckJhc2Uob2JqZWN0KToKICAgICAiIiJBIHNrZWxldG9uIGNsYXNzIGZvciBzdGFydGlu
ZyBhbmQgc3RvcHBpbmcgc2VydmVycyB1c2VkIGJ5IHRoZSBsYXlvdXQgdGVzdHMuIiIiCiAKLSAg
ICBkZWYgX19pbml0X18oc2VsZiwgcG9ydF9vYmopOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBw
b3J0X29iaiwgbnVtYmVyX29mX3NlcnZlcnM9Tm9uZSk6CiAgICAgICAgIHNlbGYuX2V4ZWN1dGl2
ZSA9IHBvcnRfb2JqLl9leGVjdXRpdmUKICAgICAgICAgc2VsZi5fZmlsZXN5c3RlbSA9IHBvcnRf
b2JqLl9maWxlc3lzdGVtCiAgICAgICAgIHNlbGYuX25hbWUgPSAnPHZpcnR1YWw+JwpAQCAtNTUs
NiArNTUsNyBAQCBjbGFzcyBIdHRwU2VydmVyQmFzZShvYmplY3QpOgogICAgICAgICBzZWxmLl9w
aWQgPSBOb25lCiAgICAgICAgIHNlbGYuX3BpZF9maWxlID0gTm9uZQogICAgICAgICBzZWxmLl9w
b3J0X29iaiA9IHBvcnRfb2JqCisgICAgICAgIHNlbGYuX251bWJlcl9vZl9zZXJ2ZXJzID0gbnVt
YmVyX29mX3NlcnZlcnMKIAogICAgICAgICAjIFdlIG5lZWQgYSBub24tY2hlY2tvdXQtZGVwZW5k
ZW50IHBsYWNlIHRvIHB1dCBsb2NrIGZpbGVzLCBldGMuIFdlCiAgICAgICAgICMgZG9uJ3QgdXNl
IHRoZSBQeXRob24gZGVmYXVsdCBvbiB0aGUgTWFjIGJlY2F1c2UgaXQgZGVmYXVsdHMgdG8gYQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>