<?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>78789</bug_id>
          
          <creation_ts>2012-02-16 01:57:59 -0800</creation_ts>
          <short_desc>Import themaninblue.com/experiment/AnimationBenchmark/ as performance tests</short_desc>
          <delta_ts>2012-06-20 08:45:18 -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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>77037</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Tom Zakrajsek">tomz</assigned_to>
          <cc>abarth</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dpranke</cc>
    
    <cc>menard</cc>
    
    <cc>morrita</cc>
    
    <cc>ojan</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thorton</cc>
    
    <cc>tomz</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>557992</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-02-16 01:57:59 -0800</bug_when>
    <thetext>Per my request, the author of http://themaninblue.com/experiment/AnimationBenchmark/html/ have LGPL-licensed his animation benchmarks: http://themaninblue.com/writing/perspective/2010/03/22/
We should import them as performance tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640953</commentid>
    <comment_count>1</comment_count>
      <attachid>145649</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-04 16:14:12 -0700</bug_when>
    <thetext>Created attachment 145649
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640964</commentid>
    <comment_count>2</comment_count>
      <attachid>145649</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-04 16:24:33 -0700</bug_when>
    <thetext>Comment on attachment 145649
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:95
&gt; +        re.compile(r&apos;^\d+(.\d+)?(\s*(runs\/s|ms|FPS|fps))?$&apos;),

Why do we need to support both FPS and fps? To be consistent, I&apos;d prefer just supporting the lowercase fps.

&gt; PerformanceTests/Animation/balls.html:272
&gt; +        // Get the balls and FPS out of our way

I don&apos;t think this comment is helpful.

&gt; PerformanceTests/Animation/balls.html:278
&gt; +        for (var particle in particles)
&gt; +        {
&gt; +            var p = particles[particle];
&gt; +            particles[particle] = 0;
&gt; +            p.destroy();
&gt; +        }

Please use WebKit style for { and } (e.g. for (...) {).

&gt; PerformanceTests/Animation/balls.html:289
&gt; +        for (var rate in frameRates)
&gt; +        {
&gt; +            PerfTestRunner.log(frameRates[rate].toFixed(2) + &quot; FPS&quot;);
&gt; +        }

No curly brackets around a single line statement.

&gt; PerformanceTests/Animation/balls.html:305
&gt; +        if (++run &lt; maxRuns)
&gt; +        {
&gt; +            init();
&gt; +        }
&gt; +        else
&gt; +        {
&gt; +            if (window.layoutTestController) {
&gt; +                layoutTestController.notifyDone();
&gt; +            }
&gt; +        }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640980</commentid>
    <comment_count>3</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-04 16:35:09 -0700</bug_when>
    <thetext>Thanks for the feedback.  I thought minimizing change was more important than fitting our style. I&apos;ll fix it.  And, i&apos;ll restrict to fps.  I also realized that the stdev goes down *significantly* if I widen the resolution of the timing to every ten screen updates.  Average and Median frame rates stay about the same.  Any moral problems with that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>640983</commentid>
    <comment_count>4</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-04 16:38:40 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Thanks for the feedback.  I thought minimizing change was more important than fitting our style. I&apos;ll fix it.  And, i&apos;ll restrict to fps.  I also realized that the stdev goes down *significantly* if I widen the resolution of the timing to every ten screen updates.  Average and Median frame rates stay about the same.  Any moral problems with that?

Whatever works for you. Could you also report post the sample results (4-5 runs) somewhere and tell us how long it takes to run the test?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651661</commentid>
    <comment_count>5</comment_count>
      <attachid>148161</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-18 13:29:24 -0700</bug_when>
    <thetext>Created attachment 148161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651665</commentid>
    <comment_count>6</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-18 13:34:47 -0700</bug_when>
    <thetext>[tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
Running 1 tests
Running Animation/balls.html (1 of 1)
RESULT Animation: balls= 169.223297408 fps
median= 168.918918919 fps, stdev= 7.89349356211 fps, min= 160.0 fps, max= 192.307692308 fps
real 2.749	user 2.464	sys 0.485	pcpu 100.00

[tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
Running 1 tests
Running Animation/balls.html (1 of 1)
RESULT Animation: balls= 167.750742674 fps
median= 166.270783848 fps, stdev= 8.07382328862 fps, min= 160.0 fps, max= 192.307692308 fps
real 2.759	user 2.485	sys 0.486	pcpu 100.00

[tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
Running 1 tests
Running Animation/balls.html (1 of 1)
RESULT Animation: balls= 168.481646673 fps
median= 167.714884696 fps, stdev= 8.06403523694 fps, min= 158.73015873 fps, max= 192.307692308 fps
real 2.739	user 2.469	sys 0.486	pcpu 100.00

[tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
Running 1 tests
Running Animation/balls.html (1 of 1)
RESULT Animation: balls= 165.902753749 fps
median= 164.705882353 fps, stdev= 7.51791081831 fps, min= 158.73015873 fps, max= 188.679245283 fps
real 2.760	user 2.476	sys 0.489	pcpu 100.00

[tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
Running 1 tests
Running Animation/balls.html (1 of 1)
RESULT Animation: balls= 171.81506867 fps
median= 171.30620985 fps, stdev= 8.34146408445 fps, min= 161.290322581 fps, max= 196.078431373 fps
real 2.728	user 2.455	sys 0.487	pcpu 100.00</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651672</commentid>
    <comment_count>7</comment_count>
      <attachid>148161</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-18 13:38:42 -0700</bug_when>
    <thetext>Comment on attachment 148161
Patch

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

&gt; PerformanceTests/Animation/balls.html:263
&gt; +        else
&gt; +            if (window.layoutTestController)
&gt; +                layoutTestController.notifyDone();

Please put if &amp; else on the same line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651673</commentid>
    <comment_count>8</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-06-18 13:39:52 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; [tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
&gt; RESULT Animation: balls= 169.223297408 fps
&gt; median= 168.918918919 fps, stdev= 7.89349356211 fps, min= 160.0 fps, max= 192.307692308 fps

What&apos;s the WebKit performance test policy on importing tests that are ridiculously fast? 160fps is crazy, and some systems might have optimizations that perhaps make the testing unfair. Do we have a &quot;target&quot; fps, or a mechanism for scaling tests, or anything?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651679</commentid>
    <comment_count>9</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-18 13:42:13 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (In reply to comment #6)
&gt; &gt; [tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
&gt; &gt; RESULT Animation: balls= 169.223297408 fps
&gt; &gt; median= 168.918918919 fps, stdev= 7.89349356211 fps, min= 160.0 fps, max= 192.307692308 fps
&gt; 
&gt; What&apos;s the WebKit performance test policy on importing tests that are ridiculously fast? 160fps is crazy, and some systems might have optimizations that perhaps make the testing unfair. Do we have a &quot;target&quot; fps, or a mechanism for scaling tests, or anything?

We don&apos;t have a policy :) If we think that&apos;s too fast, maybe we can tweak it to add more load?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651684</commentid>
    <comment_count>10</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2012-06-18 13:46:31 -0700</bug_when>
    <thetext>Any test that runs &gt; 60fps is useless as a perf test. It&apos;s just testing throttling at various places in the whole stack.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651685</commentid>
    <comment_count>11</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2012-06-18 13:46:43 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; (In reply to comment #8)
&gt; &gt; (In reply to comment #6)
&gt; &gt; &gt; [tomz-mac-pro] WebKit&gt; time run-perf-tests PerformanceTests/Animation/balls.html
&gt; &gt; &gt; RESULT Animation: balls= 169.223297408 fps
&gt; &gt; &gt; median= 168.918918919 fps, stdev= 7.89349356211 fps, min= 160.0 fps, max= 192.307692308 fps
&gt; &gt; 
&gt; &gt; What&apos;s the WebKit performance test policy on importing tests that are ridiculously fast? 160fps is crazy, and some systems might have optimizations that perhaps make the testing unfair. Do we have a &quot;target&quot; fps, or a mechanism for scaling tests, or anything?
&gt; 
&gt; We don&apos;t have a policy :) If we think that&apos;s too fast, maybe we can tweak it to add more load?

I use this test (and its siblings) with MAX_PARTICLES set to 10,000 :P

This (having a target speed, etc.) is probably something we should look into sooner rather than later; as graphics subsystems get smarter, there&apos;s no reason they can&apos;t throw out or defer work that won&apos;t make it to the screen immediately (or ever), and there&apos;s potential for system-level fps capping that we should watch out for.

In any case, something to think about.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>651696</commentid>
    <comment_count>12</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-18 13:55:24 -0700</bug_when>
    <thetext>One note about the high FPS... this actually runs slower (like 1/3 -1/2 the speed) when you run it in a browser.  But scaling the FPS is trivial.  If you triple MAX_PARTICLES, the rate goes down proportionally.  I&apos;ll update with the nit fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653133</commentid>
    <comment_count>13</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2012-06-19 20:27:45 -0700</bug_when>
    <thetext>So... should we land this patch? Or should we tweak it first?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653435</commentid>
    <comment_count>14</comment_count>
      <attachid>148558</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-20 07:07:16 -0700</bug_when>
    <thetext>Created attachment 148558
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653477</commentid>
    <comment_count>15</comment_count>
      <attachid>148558</attachid>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-20 08:09:25 -0700</bug_when>
    <thetext>Comment on attachment 148558
Patch

Clearing flags on attachment: 148558

Committed r120823: &lt;http://trac.webkit.org/changeset/120823&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653478</commentid>
    <comment_count>16</comment_count>
    <who name="Tom Zakrajsek">tomz</who>
    <bug_when>2012-06-20 08:09:31 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653510</commentid>
    <comment_count>17</comment_count>
      <attachid>148558</attachid>
    <who name="Dominik Röttsches (drott)">d-r</who>
    <bug_when>2012-06-20 08:45:18 -0700</bug_when>
    <thetext>Comment on attachment 148558
Patch

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

&gt; Tools/Scripts/webkitpy/performance_tests/perftest.py:138
&gt; +                _log.error(&quot;PerfTest can&apos;t parse line [&quot; + line + &quot;]&quot;)

Looks like this causes a python tests regression:
http://build.webkit.org/builders/EFL%20Linux%2064-bit%20Debug/builds/1653/steps/webkitpy-test/logs/stdio</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>145649</attachid>
            <date>2012-06-04 16:14:12 -0700</date>
            <delta_ts>2012-06-18 13:29:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78789-20120604161412.patch</filename>
            <type>text/plain</type>
            <size>12280</size>
            <attacher name="Tom Zakrajsek">tomz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTE5NDIxCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMWE3OWM0ZWJjNDcxYmU3YzQ0NTcyMDNkZjY1ZjRjOTA4
NjExYzRmZi4uMDRlYmNiOTk2NDQ0OTllOGVhNzgwNjI1NjZmMjBjNTVlYjU3NGEyZiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEyLTA2LTA0ICBUb20gWmFrcmFqc2VrICA8dG9tekBjb2RlYXVyb3JhLm9yZz4KKwor
ICAgICAgICBJbXBvcnQgdGhlbWFuaW5ibHVlLmNvbS9leHBlcmltZW50L0FuaW1hdGlvbkJlbmNo
bWFyay8gYXMgcGVyZm9ybWFuY2UgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlZCBwYXJzZXIgdG8gaW5jbHVkZSBGUFMgYW5kIGZwcyBh
cyB2YWxpZCB1bml0cy4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3QucHk6CisgICAgICAgIChQZXJmVGVzdCk6CisgICAgICAgIChQZXJmVGVz
dC5wYXJzZV9vdXRwdXQpOgorCiAyMDEyLTA2LTA0ICBTdWRhcnNhbmEgTmFnaW5lbmkgIDxzdWRh
cnNhbmEubmFnaW5lbmlAbGludXguaW50ZWwuY29tPgogCiAgICAgICAgIFtHVEtdIE1lbW9yeSBs
ZWFrcyBpbiBEdW1wUmVuZGVyVHJlZS5jcHAKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkgYi9Ub29scy9TY3JpcHRzL3dlYmtp
dHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CmluZGV4IDIwZDNkNTgzOGQ0YzhiZjll
N2RhNzNiZGU0ZWI0YWFhZjgyNThmOWQuLmM4YzQxMWE1ZDQ3NGVlOGQ3Zjc4MDRkZDZjOTEyNTE2
OTQwOTk2NjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2Vf
dGVzdHMvcGVyZnRlc3QucHkKKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5j
ZV90ZXN0cy9wZXJmdGVzdC5weQpAQCAtOTIsNyArOTIsNyBAQCBjbGFzcyBQZXJmVGVzdChvYmpl
Y3QpOgogICAgICAgICByZS5jb21waWxlKHInXlJ1bm5pbmcgXGQrIHRpbWVzJCcpLAogICAgICAg
ICByZS5jb21waWxlKHInXklnbm9yaW5nIHdhcm0tdXAgJyksCiAgICAgICAgIHJlLmNvbXBpbGUo
cideSW5mbzonKSwKLSAgICAgICAgcmUuY29tcGlsZShyJ15cZCsoLlxkKyk/KFxzKihydW5zXC9z
fG1zKSk/JCcpLAorICAgICAgICByZS5jb21waWxlKHInXlxkKyguXGQrKT8oXHMqKHJ1bnNcL3N8
bXN8RlBTfGZwcykpPyQnKSwKICAgICAgICAgIyBGb2xsb3dpbmcgYXJlIGZvciBoYW5kbGUgZXhp
c3RpbmcgdGVzdCBsaWtlIERyb21hZW8KICAgICAgICAgcmUuY29tcGlsZShyZS5lc2NhcGUoIiIi
bWFpbiBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykiIiIpKSwKICAgICAgICAgcmUu
Y29tcGlsZShyZS5lc2NhcGUoIiIiZnJhbWUgIjwhLS1mcmFtZVBhdGggLy88IS0tZnJhbWUwLS0+
LS0+IiAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykiIiIpKSwKQEAgLTEzMiw3ICsxMzIsNyBA
QCBjbGFzcyBQZXJmVGVzdChvYmplY3QpOgogCiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fc2hv
dWxkX2lnbm9yZV9saW5lX2luX3BhcnNlcl90ZXN0X3Jlc3VsdChsaW5lKToKICAgICAgICAgICAg
ICAgICB0ZXN0X2ZhaWxlZCA9IFRydWUKLSAgICAgICAgICAgICAgICBfbG9nLmVycm9yKGxpbmUp
CisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiUGVyZlRlc3QgY2FuJ3QgcGFyc2UgbGluZSBb
IiArIGxpbmUgKyAiXSIpCiAKICAgICAgICAgaWYgdGVzdF9mYWlsZWQgb3Igc2V0KHNlbGYuX3N0
YXRpc3RpY3Nfa2V5cykgIT0gc2V0KHJlc3VsdHMua2V5cygpKToKICAgICAgICAgICAgIHJldHVy
biBOb25lCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0FuaW1hdGlvbi9iYWxscy5odG1s
IGIvUGVyZm9ybWFuY2VUZXN0cy9BbmltYXRpb24vYmFsbHMuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lYzBm
YzJjYTgxOGNlM2JkZDZkZTIwM2EzZWJjMzg2NzYwOGUzN2NmCi0tLSAvZGV2L251bGwKKysrIGIv
UGVyZm9ybWFuY2VUZXN0cy9BbmltYXRpb24vYmFsbHMuaHRtbApAQCAtMCwwICsxLDMyMiBAQAor
PCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgU3RyaWN0Ly9FTiIg
Imh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXN0cmljdC5kdGQiPgorPGh0
bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiIHhtbDpsYW5nPSJlbiIgbGFu
Zz0iZW4iPgorCis8IS0tCisgIFRoaXMgdGVzdCB3YXMgd3JpdHRlbiBieSBDYW1lcm9uIEFkYW1z
IGFuZCBpbXBvcnRlZCBmcm9tCisgICAgaHR0cDovL3RoZW1hbmluYmx1ZS5jb20vZXhwZXJpbWVu
dC9BbmltYXRpb25CZW5jaG1hcmsvaHRtbAorCisgIE1vZGlmaWNhdGlvbnM6CisgICAgKiBsb2Nr
ZWQgdGhlIGhlaWdodCBhbmQgd2lkdGggb2YgdGhlIHdpbmRvdyB0byA4MDB4NjAwCisgICAgKiBh
ZGRlZCBzdGFuZGFyZCBib3JkZXItcmFkaXVzIGFuZCBib3gtc2hhZG93IGZvciBjcm9zcy1icm93
c2VyIGNvbXBhcmlzb25zCisgICAgKiBhZGRlZCBQZXJmVGVzdFJ1bm5lciB3aXRoIHN0YXRpc3Rp
Y3MgY2FwdHVyZQorICAgICogYWRkZWQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgcnVucworICAgICog
Y2xlYW5lZCBzY3JlZW4gYXQgZW5kIG9mIHRlc3QgcnVuLCBhbmQgcHJlc2VudGVkIHN0YXRzCist
LT4KKworPGhlYWQ+CisKKyAgICA8dGl0bGU+QmVuY2htYXJrIC0gSFRNTCAmYW1wOyBKYXZhU2Ny
aXB0PC90aXRsZT4KKworICAgIDxtZXRhIGh0dHAtZXF1aXY9ImNvbnRlbnQtdHlwZSIgY29udGVu
dD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04IiAvPgorICAgIDxtZXRhIG5hbWU9ImF1dGhvciIg
Y29udGVudD0iVGhlIE1hbiBpbiBCbHVlIiAvPgorICAgIDxtZXRhIG5hbWU9InJvYm90cyIgY29u
dGVudD0iYWxsIiAvPgorICAgIDxtZXRhIG5hbWU9Ik1TU21hcnRUYWdzUHJldmVudFBhcnNpbmci
IGNvbnRlbnQ9InRydWUiIC8+CisgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9
IiIgLz4KKyAgICA8bWV0YSBuYW1lPSJrZXl3b3JkcyIgY29udGVudD0iIiAvPgorCisgICAgPHN0
eWxlIHR5cGU9InRleHQvY3NzIj4KKworICAgIGh0bWwKKyAgICB7CisgICAgICAgIGhlaWdodDog
MTAwJTsKKyAgICB9CisKKyAgICBib2R5CisgICAgeworICAgICAgICB3aWR0aDogMTAwJTsKKyAg
ICAgICAgaGVpZ2h0OiAxMDAlOworICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICBt
YXJnaW46IDA7CisgICAgICAgIHBhZGRpbmc6IDA7CisgICAgfQorCisgICAgc3BhbgorICAgIHsK
KyAgICAgICAgcG9zaXRpb246IGFic29sdXRlOworICAgICAgICB3aWR0aDogMTJweDsKKyAgICAg
ICAgaGVpZ2h0OiAxMnB4OworICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICAtd2Vi
a2l0LWJvcmRlci1yYWRpdXM6IDZweDsKKyAgICAgICAgLW1vei1ib3JkZXItcmFkaXVzOiA2cHg7
CisgICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDsKKyAgICAgICAgYmFja2dyb3VuZC1jb2xvcjog
IzAwMDAwMDsKKyAgICB9CisKKyAgICAuc2hhZG93cyBzcGFuCisgICAgeworICAgICAgICAtd2Vi
a2l0LWJveC1zaGFkb3c6IDRweCA0cHggM3B4IHJnYmEoMCwwLDAsMC4zMyk7CisgICAgICAgIC1t
b3otYm94LXNoYWRvdzogNHB4IDRweCAzcHggcmdiYSgwLDAsMCwwLjMzKTsKKyAgICAgICAgYm94
LXNoYWRvdzogNHB4IDRweCAzcHggcmdiYSgwLDAsMCwwLjMzKTsKKyAgICB9CisKKyAgICAjZnJh
bWVSYXRlCisgICAgeworICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgICAgIHJpZ2h0
OiAxMHB4OworICAgICAgICBib3R0b206IDEwcHg7CisgICAgICAgIHotaW5kZXg6IDEwMDsKKyAg
ICAgICAgZm9udC1zaXplOiAyNXB4OworICAgICAgICBmb250LWZhbWlseTogQXJpYWwsIEhlbHZl
dGljYSwgc2Fucy1zZXJpZjsKKyAgICB9CisKKyAgICA8L3N0eWxlPgorCisgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgICAgdmFyIE1BWF9QQVJUSUNMRVMgPSA1MDA7Cisg
ICAgdmFyIE1BWF9WRUxPQ0lUWSA9IDUwMDsKKyAgICB2YXIgUEFSVElDTEVfUkFESVVTID0gNjsK
KyAgICB2YXIgU1RBR0VfV0lEVEggPSAxMDI0OworICAgIHZhciBTVEFHRV9IRUlHSFQgPSA3Njg7
CisgICAgdmFyIENPTE9SUyA9IFsiI2NjMDAwMCIsICIjZmZjYzAwIiwgIiNhYWZmMDAiLCAiIzAw
OTljYyIsICIjMTk0Yzk5IiwgIiM2NjE5OTkiXTsKKyAgICB2YXIgRlJBTUVfVElNRVMgPSBbXTsK
KworICAgIHZhciBtYXhJdGVyYXRpb25zID0gMTAwOworICAgIHZhciBpdGVyYXRpb25zID0gMDsK
KyAgICB2YXIgbWF4UnVucyA9IDE7CisgICAgdmFyIHJ1biA9IDA7CisgICAgdmFyIGFuaW1hdGVJ
bnRlcnZhbElkID0gMDsKKyAgICB2YXIgc3RhdGlzdGljcyA9IFtdOworICAgIHZhciBmcmFtZVJh
dGVzID0gW107CisgICAgdmFyIHBhcnRpY2xlcyA9IFtdOworCisgICAgd2luZG93Lm9ubG9hZCA9
IGluaXQ7CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIFBlcmZUZXN0UnVu
bmVyLnJlc2V0UmFuZG9tU2VlZCgpOworCisgICAgICAgIHZhciBsb2NhdGlvbiA9IHdpbmRvdy5s
b2NhdGlvbi5ocmVmOworICAgICAgICBmcmFtZVJhdGVzID0gW107CisgICAgICAgIGl0ZXJhdGlv
bnMgPSAwOworICAgICAgICBhbmltYXRlSW50ZXJ2YWxJZCA9IDA7CisgICAgICAgIHBhcnRpY2xl
cyA9IFtdOworCisgICAgICAgIC8vIElmIHNoYWRvd3MgYXJlIHR1cm5lZCBvbgorICAgICAgICBp
ZiAobG9jYXRpb24ubWF0Y2goL3NoYWRvd3M9dHJ1ZS8pKQorICAgICAgICB7CisgICAgICAgICAg
ICBkb2N1bWVudC5ib2R5LmNsYXNzTmFtZSA9ICJzaGFkb3dzIjsKKyAgICAgICAgfQorCisgICAg
ICAgIC8vIElmIG1heF9wYXJ0aWNsZXMgaXMgc3BlY2lmaWVkCisgICAgICAgIGlmIChsb2NhdGlv
bi5tYXRjaCgvcGFydGljbGVzPS8pKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIgbWF4UGFy
dGljbGVzID0gbG9jYXRpb24ubWF0Y2goL3BhcnRpY2xlcz0oW14mXSspLylbMV07CisgICAgICAg
ICAgICBtYXhQYXJ0aWNsZXMgPSBwYXJzZUludChtYXhQYXJ0aWNsZXMpOworCisgICAgICAgICAg
ICBpZiAoIWlzTmFOKG1heFBhcnRpY2xlcykpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAg
ICAgTUFYX1BBUlRJQ0xFUyA9IG1heFBhcnRpY2xlczsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorCisgICAgICAgIFNUQUdFX1dJRFRIID0gNjAwOyAgIC8vIHdhcyBkb2N1bWVudC5ib2R5Lm9m
ZnNldFdpZHRoOworICAgICAgICBTVEFHRV9IRUlHSFQgPSA2MDA7ICAvLyB3YXMgZG9jdW1lbnQu
Ym9keS5vZmZzZXRIZWlnaHQ7CisKKyAgICAgICAgLy8gQ3JlYXRlIHRoZSBwYXJ0aWNsZXMKKyAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBNQVhfUEFSVElDTEVTOyBpKyspCisgICAgICAgIHsK
KyAgICAgICAgICAgIHBhcnRpY2xlcy5wdXNoKG5ldyBQYXJ0aWNsZSgpKTsKKyAgICAgICAgfQor
CisgICAgICAgIC8vIFN0YXJ0IHRoZSBhbmltYXRpb24KKyAgICAgICAgYW5pbWF0ZUludGVydmFs
SWQgPSBzZXRJbnRlcnZhbChhbmltYXRlLCAxKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhbmlt
YXRlKCkKKyAgICB7CisgICAgICAgIC8vIExpbWl0IHRoZSBmcmFtZSB0aW1lIGFycmF5IHRvIHRo
ZSBsYXN0IDMwIGZyYW1lcworICAgICAgICBpZiAoRlJBTUVfVElNRVMubGVuZ3RoID4gMzApCisg
ICAgICAgIHsKKyAgICAgICAgICAgIEZSQU1FX1RJTUVTLnNwbGljZSgwLCAxKTsKKyAgICAgICAg
fQorCisgICAgICAgIHZhciBjdXJyVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpOworCisgICAg
ICAgIEZSQU1FX1RJTUVTLnB1c2goY3VyclRpbWUpOworCisgICAgICAgIC8vIENhbGN1bGF0ZSB0
aGUgZnJhbWVyYXRlIGJhc2VkIHVwb24gdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYWJzb2x1
dGUgdGltZXMgb2YgdGhlIG9sZGVzdCBhbmQgbmV3ZXN0IGZyYW1lcywgc3ViZGl2aWRlZCBieSBo
b3cgbWFueSBmcmFtZXMgd2VyZSBkcmF3biBpbmJldHdlZW4KKyAgICAgICAgdmFyIGZyYW1lUmF0
ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJmcmFtZVJhdGUiKTsKKyAgICAgICAgdmFyIGZy
YW1lUmF0ZVZhbCA9IDEwMDAgLyAoKGN1cnJUaW1lIC0gRlJBTUVfVElNRVNbMF0pIC8gKEZSQU1F
X1RJTUVTLmxlbmd0aCAtIDEpKTsKKworICAgICAgICBpdGVyYXRpb25zKys7CisgICAgICAgIGZy
YW1lUmF0ZXMucHVzaChmcmFtZVJhdGVWYWwpOworICAgICAgICB2YXIgZnJhbWVSYXRlVGV4dCA9
IGZyYW1lUmF0ZVZhbCArICIiOworICAgICAgICBmcmFtZVJhdGVUZXh0ID0gZnJhbWVSYXRlVGV4
dC5yZXBsYWNlKC8oXlteLl0rXC4uLikuKi8sICIkMSIpOworICAgICAgICBmcmFtZVJhdGVUZXh0
ICs9ICIgRlBTIjsKKyAgICAgICAgZnJhbWVSYXRlLmlubmVySFRNTCA9IGZyYW1lUmF0ZVRleHQ7
CisKKyAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJUaW1lIC0gRlJBTUVfVElNRVNbRlJBTUVf
VElNRVMubGVuZ3RoIC0gMl07CisKKyAgICAgICAgaWYgKGlzTmFOKHRpbWVEZWx0YSkpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIHRpbWVEZWx0YSA9IDA7CisgICAgICAgIH0KKworICAgICAgICAv
LyBEcmF3IGVhY2ggcGFydGljbGUKKyAgICAgICAgZm9yICh2YXIgcGFydGljbGUgaW4gcGFydGlj
bGVzKQorICAgICAgICB7CisgICAgICAgICAgICBwYXJ0aWNsZXNbcGFydGljbGVdLmRyYXcodGlt
ZURlbHRhKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChpdGVyYXRpb25zID4gbWF4SXRlcmF0
aW9ucykKKyAgICAgICAgeworICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChhbmltYXRlSW50ZXJ2
YWxJZCk7CisgICAgICAgICAgICBvbkNvbXBsZXRlZFJ1bigpOworICAgICAgICB9CisgICAgfQor
CisgICAgZnVuY3Rpb24gUGFydGljbGUoKQorICAgIHsKKyAgICAgICAgdmFyIGFuZ2xlID0gTWF0
aC5QSSAqIDIgKiBQZXJmVGVzdFJ1bm5lci5yYW5kb20oKTsKKyAgICAgICAgdmFyIHZlbG9jaXR5
ID0gTUFYX1ZFTE9DSVRZIC8gOCAqIDcgKiBQZXJmVGVzdFJ1bm5lci5yYW5kb20oKSArIE1BWF9W
RUxPQ0lUWSAvIDg7CisgICAgICAgIHZhciB4ID0gU1RBR0VfV0lEVEggLyAyIC0gUEFSVElDTEVf
UkFESVVTOworICAgICAgICB2YXIgeSA9IFNUQUdFX0hFSUdIVCAvIDIgLSBQQVJUSUNMRV9SQURJ
VVM7CisKKyAgICAgICAgLy8gQ3JlYXRlIHZpc3VhbCBlbGVtZW50IGZvciB0aGUgcGFydGljbGUK
KyAgICAgICAgdmFyIGRvbU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzcGFuJyk7Cisg
ICAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZG9tTm9kZSk7CisKKyAgICAgICAgLy8g
U2V0IGluaXRpYWwgcG9zaXRpb24gdG8gbWlkZGxlIG9mIHNjcmVlbgorICAgICAgICBkb21Ob2Rl
LnN0eWxlLmxlZnQgPSB4ICsgInB4IjsKKyAgICAgICAgZG9tTm9kZS5zdHlsZS50b3AgPSB5ICsg
InB4IjsKKworICAgICAgICAvLyBTZXQgY29sb3VyIG9mIGVsZW1lbnQKKyAgICAgICAgZG9tTm9k
ZS5zdHlsZS5iYWNrZ3JvdW5kQ29sb3IgPSBDT0xPUlNbTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgp
ICogQ09MT1JTLmxlbmd0aCldOworCisgICAgICAgIGZ1bmN0aW9uIGRlc3Ryb3koKQorICAgICAg
ICB7CisgICAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGRvbU5vZGUpOworICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gZHJhdyh0aW1l
RGVsdGEpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSBuZXh0IHBvc2l0aW9u
IG9mIHBhcnRpY2xlCisgICAgICAgICAgICB2YXIgbmV4dFggPSB4ICsgTWF0aC5jb3MoYW5nbGUp
ICogdmVsb2NpdHkgKiAodGltZURlbHRhIC8gMTAwMCk7CisgICAgICAgICAgICB2YXIgbmV4dFkg
PSB5ICsgTWF0aC5zaW4oYW5nbGUpICogdmVsb2NpdHkgKiAodGltZURlbHRhIC8gMTAwMCk7CisK
KyAgICAgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2ZmIHJpZ2h0IHNp
ZGUgb2Ygc2NyZWVuCisgICAgICAgICAgICBpZiAobmV4dFggKyBQQVJUSUNMRV9SQURJVVMgKiAy
ID4gU1RBR0VfV0lEVEgpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgLy8gSWYgYW5n
bGUgaXMgYmV0d2VlbiAzIG8nY2xvY2sgYW5kIDYgbydjbG9jaworICAgICAgICAgICAgICAgIGlm
ICgoYW5nbGUgPj0gMCAmJiBhbmdsZSA8IE1hdGguUEkgLyAyKSkKKyAgICAgICAgICAgICAgICB7
CisgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5QSSAtIGFuZ2xlOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBiZXR3ZWVuIDEyIG8nY2xv
Y2sgYW5kIDMgbydjbG9jaworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFuZ2xlID4gTWF0aC5Q
SSAvIDIgKiAzKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYW5nbGUg
PSBhbmdsZSAtIChhbmdsZSAtIE1hdGguUEkgLyAyICogMykgKiAyCisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0
byBtb3ZlIG9mZiBsZWZ0IHNpZGUgb2Ygc2NyZWVuCisgICAgICAgICAgICBpZiAobmV4dFggPCAw
KQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4g
NiBvJ2Nsb2NrIGFuZCA5IG8nY2xvY2sKKyAgICAgICAgICAgICAgICBpZiAoKGFuZ2xlID4gTWF0
aC5QSSAvIDIgJiYgYW5nbGUgPCBNYXRoLlBJKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAg
ICAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5QSSAtIGFuZ2xlOworICAgICAgICAgICAgICAgIH0K
KyAgICAgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBiZXR3ZWVuIDkgbydjbG9jayBhbmQgMTIg
bydjbG9jaworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFuZ2xlID4gTWF0aC5QSSAmJiBhbmds
ZSA8IE1hdGguUEkgLyAyICogMykKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAg
ICAgIGFuZ2xlID0gYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gYW5nbGUpICogMgorICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLy8gSWYgcGFydGljbGUg
aXMgZ29pbmcgdG8gbW92ZSBvZmYgYm90dG9tIHNpZGUgb2Ygc2NyZWVuCisgICAgICAgICAgICBp
ZiAobmV4dFkgKyBQQVJUSUNMRV9SQURJVVMgKiAyID4gU1RBR0VfSEVJR0hUKQorICAgICAgICAg
ICAgeworICAgICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4gMyBvJ2Nsb2NrIGFu
ZCA5IG8nY2xvY2sKKyAgICAgICAgICAgICAgICBpZiAoKGFuZ2xlID4gMCAmJiBhbmdsZSA8IE1h
dGguUEkpKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBN
YXRoLlBJICogMiAtIGFuZ2xlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKwor
ICAgICAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgdG9wIHNpZGUg
b2Ygc2NyZWVuCisgICAgICAgICAgICBpZiAobmV4dFkgPCAwKQorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4gOSBvJ2Nsb2NrIGFuZCAzIG8nY2xv
Y2sKKyAgICAgICAgICAgICAgICBpZiAoKGFuZ2xlID4gTWF0aC5QSSAmJiBhbmdsZSA8IE1hdGgu
UEkgKiAyKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0g
YW5nbGUgLSAoYW5nbGUgLSBNYXRoLlBJKSAqIDI7CisgICAgICAgICAgICAgICAgfQorICAgICAg
ICAgICAgfQorCisgICAgICAgICAgICBkb21Ob2RlLnN0eWxlLmxlZnQgPSBuZXh0WCArICJweCI7
CisgICAgICAgICAgICBkb21Ob2RlLnN0eWxlLnRvcCA9IG5leHRZICsgInB4IjsKKworICAgICAg
ICAgICAgeCA9IG5leHRYOworICAgICAgICAgICAgeSA9IG5leHRZOworICAgICAgICB9CisKKyAg
ICAgICAgcmV0dXJuIHsKKyAgICAgICAgICAgIGRyYXc6IGRyYXcsIGRlc3Ryb3k6IGRlc3Ryb3kK
KyAgICAgICAgfQorICAgIH0KKworICAgIGZ1bmN0aW9uIG9uQ29tcGxldGVkUnVuKCkgeworICAg
ICAgICAvLyBHZXQgdGhlIGJhbGxzIGFuZCBGUFMgb3V0IG9mIG91ciB3YXkKKyAgICAgICAgZm9y
ICh2YXIgcGFydGljbGUgaW4gcGFydGljbGVzKQorICAgICAgICB7CisgICAgICAgICAgICB2YXIg
cCA9IHBhcnRpY2xlc1twYXJ0aWNsZV07CisgICAgICAgICAgICBwYXJ0aWNsZXNbcGFydGljbGVd
ID0gMDsKKyAgICAgICAgICAgIHAuZGVzdHJveSgpOworICAgICAgICB9CisgICAgICAgIHBhcnRp
Y2xlcyA9IFtdOworCisgICAgICAgIGZyYW1lUmF0ZS5pbm5lckhUTUwgPSAiIjsKKworICAgICAg
ICAvLyBSZW1vdmUgZmlyc3QgZnJhbWVSYXRlIChOYU4pCisgICAgICAgIGZyYW1lUmF0ZXMuc3Bs
aWNlKDAsIDEpOworCisgICAgICAgIGZvciAodmFyIHJhdGUgaW4gZnJhbWVSYXRlcykKKyAgICAg
ICAgeworICAgICAgICAgICAgUGVyZlRlc3RSdW5uZXIubG9nKGZyYW1lUmF0ZXNbcmF0ZV0udG9G
aXhlZCgyKSArICIgRlBTIik7CisgICAgICAgIH0KKworICAgICAgICB2YXIgc3RhdHMgPSBQZXJm
VGVzdFJ1bm5lci5jb21wdXRlU3RhdGlzdGljcyhmcmFtZVJhdGVzKTsKKyAgICAgICAgc3RhdGlz
dGljcy5wdXNoKHN0YXRzKTsKKworICAgICAgICBQZXJmVGVzdFJ1bm5lci5wcmludFN0YXRpc3Rp
Y3Moc3RhdHMsICJGUFMiKTsKKworICAgICAgICBpZiAoKytydW4gPCBtYXhSdW5zKQorICAgICAg
ICB7CisgICAgICAgICAgICBpbml0KCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAg
ICB7CisgICAgICAgICAgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAg
ICAgICAgICAgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIubm90aWZ5RG9uZSgpOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgfQorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvcnVubmVyLmpzIj48L3NjcmlwdD4KKzwvaGVhZD4KKworCisKKworPGJvZHk+
CisgICAgPGRpdiBpZD0iZnJhbWVSYXRlIj4KKyAgICA8L2Rpdj4KKzwvYm9keT4KKworCisKKwor
PC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VUZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3Jt
YW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBjZjdhZGM3YjJjMTA0MWRkMWJlZWY1ZmFmNzZkMTZk
ZWUzNzRhMTc2Li5hMTRkMzZkM2FjYTQyYmQ4YTQyNWJjYzQ4ZDE3YWFkYTY4YTZiZWQxIDEwMDY0
NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZworKysgYi9QZXJmb3JtYW5jZVRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDEyLTA2LTA0ICBUb20gWmFrcmFqc2VrICA8
dG9tekBjb2RlYXVyb3JhLm9yZz4KKworICAgICAgICBJbXBvcnQgdGhlbWFuaW5ibHVlLmNvbS9l
eHBlcmltZW50L0FuaW1hdGlvbkJlbmNobWFyay8gYXMgcGVyZm9ybWFuY2UgdGVzdHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4Nzg5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSSB0cmllZCB0byBmaXQg
dGhpcyBpbiB3aXRoIG1pbmltYWwgY2hhbmdlcyBmcm9tIHRoZSBvcmlnaW5hbC4KKyAgICAgICAg
VGhlIHRlc3Qgbm93IGxvZ3MgaXRzIG91dHB1dCB0byB0aGUgc2NyZWVuIGFuZCBkaXNwbGF5cyBz
dGF0aXN0aWNzCisgICAgICAgIGF0IHRoZSBlbmQuCisKKyAgICAgICAgKiBBbmltYXRpb24vYmFs
bHMuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMDQgIEFsZXhlaSBGaWxpcHBvdiAgPGFsZXhlaWZA
Y2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHNwZWVkIHVwIF9jYWxjdWxh
dGVSZXRhaW5lZFNpemVzIGZ1bmN0aW9uCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148161</attachid>
            <date>2012-06-18 13:29:24 -0700</date>
            <delta_ts>2012-06-20 07:07:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78789-20120618132923.patch</filename>
            <type>text/plain</type>
            <size>12599</size>
            <attacher name="Tom Zakrajsek">tomz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwNjA4CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggYjQzZjM5ZjJhMWU0YTdmYmM1YzU1ZDc1NzE1ZGI5NGIz
NTk2Yzc5Yi4uZTcyYmJmYTYxOWI5ODk4ZjUwZDM2YTJjYzU4NTk4MTZjMzQ3Y2FhYiAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEyLTA2LTE4ICBUb20gWmFrcmFqc2VrICA8dG9tekBjb2RlYXVyb3JhLm9yZz4KKwor
ICAgICAgICBJbXBvcnQgdGhlbWFuaW5ibHVlLmNvbS9leHBlcmltZW50L0FuaW1hdGlvbkJlbmNo
bWFyay8gYXMgcGVyZm9ybWFuY2UgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgVXBkYXRlZCBwYXJzZXIgdG8gaW5jbHVkZSBmcHMgYXMgYSB2YWxp
ZCB1bml0LgorCisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9w
ZXJmdGVzdC5weToKKyAgICAgICAgKFBlcmZUZXN0KToKKyAgICAgICAgKFBlcmZUZXN0LnBhcnNl
X291dHB1dCk6CisKIDIwMTItMDYtMTggIFhpYW56aHUgV2FuZyAgPHdhbmd4aWFuemh1QGNocm9t
aXVtLm9yZz4KIAogICAgICAgICBbQ2hyb21pdW1dIENoYW5nZSBiYWNrICJsaW51eGlzaCIgdG8g
ImxpbnV4IiBhbmQgaW5jbHVkZSBXZWJGb250UmVuZGVyaW5nLmNwcCBvbiBBbmRyb2lkCmRpZmYg
LS1naXQgYS9Ub29scy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0
LnB5IGIvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5w
eQppbmRleCBlYjYyZDg5ZTVkOTIwZDgxNWEyOTc5MzRkM2IyMjQ4YmEyOTcwZTJiLi5mMDE4M2Zj
NjYwM2M4MmU5MzNkODExZjE2ZjU4YTFlZDc4MjcyYzRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3Jp
cHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CisrKyBiL1Rvb2xzL1Nj
cmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRlc3QucHkKQEAgLTk1LDcgKzk1
LDcgQEAgY2xhc3MgUGVyZlRlc3Qob2JqZWN0KToKICAgICAgICAgcmUuY29tcGlsZShyJ15SdW5u
aW5nIFxkKyB0aW1lcyQnKSwKICAgICAgICAgcmUuY29tcGlsZShyJ15JZ25vcmluZyB3YXJtLXVw
ICcpLAogICAgICAgICByZS5jb21waWxlKHInXkluZm86JyksCi0gICAgICAgIHJlLmNvbXBpbGUo
cideXGQrKC5cZCspPyhccyoocnVuc1wvc3xtcykpPyQnKSwKKyAgICAgICAgcmUuY29tcGlsZShy
J15cZCsoLlxkKyk/KFxzKihydW5zXC9zfG1zfGZwcykpPyQnKSwKICAgICAgICAgIyBGb2xsb3dp
bmcgYXJlIGZvciBoYW5kbGUgZXhpc3RpbmcgdGVzdCBsaWtlIERyb21hZW8KICAgICAgICAgcmUu
Y29tcGlsZShyZS5lc2NhcGUoIiIibWFpbiBmcmFtZSAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIo
cykiIiIpKSwKICAgICAgICAgcmUuY29tcGlsZShyZS5lc2NhcGUoIiIiZnJhbWUgIjwhLS1mcmFt
ZVBhdGggLy88IS0tZnJhbWUwLS0+LS0+IiAtIGhhcyAxIG9udW5sb2FkIGhhbmRsZXIocykiIiIp
KSwKQEAgLTEzNSw3ICsxMzUsNyBAQCBjbGFzcyBQZXJmVGVzdChvYmplY3QpOgogCiAgICAgICAg
ICAgICBpZiBub3Qgc2VsZi5fc2hvdWxkX2lnbm9yZV9saW5lX2luX3BhcnNlcl90ZXN0X3Jlc3Vs
dChsaW5lKToKICAgICAgICAgICAgICAgICB0ZXN0X2ZhaWxlZCA9IFRydWUKLSAgICAgICAgICAg
ICAgICBfbG9nLmVycm9yKGxpbmUpCisgICAgICAgICAgICAgICAgX2xvZy5lcnJvcigiUGVyZlRl
c3QgY2FuJ3QgcGFyc2UgbGluZSBbIiArIGxpbmUgKyAiXSIpCiAKICAgICAgICAgaWYgdGVzdF9m
YWlsZWQgb3Igc2V0KHNlbGYuX3N0YXRpc3RpY3Nfa2V5cykgIT0gc2V0KHJlc3VsdHMua2V5cygp
KToKICAgICAgICAgICAgIHJldHVybiBOb25lCmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3Rz
L0FuaW1hdGlvbi9iYWxscy5odG1sIGIvUGVyZm9ybWFuY2VUZXN0cy9BbmltYXRpb24vYmFsbHMu
aHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4xMDJkOGIwZDc2YzNmNmE5NmNhY2EyM2Y3YmY3YTMyZWIxZjNmODVm
Ci0tLSAvZGV2L251bGwKKysrIGIvUGVyZm9ybWFuY2VUZXN0cy9BbmltYXRpb24vYmFsbHMuaHRt
bApAQCAtMCwwICsxLDI3NCBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBY
SFRNTCAxLjAgU3RyaWN0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0
bWwxLXN0cmljdC5kdGQiPgorPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0
bWwiIHhtbDpsYW5nPSJlbiIgbGFuZz0iZW4iPgorCis8IS0tCisgICAgQ29weXJpZ2h0IChjKSAy
MDEyIENhbWVyb24gQWRhbXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgICAgQ29weXJpZ2h0IChj
KSAyMDEyIENvZGUgQXVyb3JhIEZvcnVtLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorCisgICAgUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgICAgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICAgIG1ldDoKKyAgICAgICAgKiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICAg
ICAgICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAgICAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlCisgICAgICAgICAgY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgICBkaXNjbGFpbWVy
IGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAg
ICAgICAgICB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgICAgICAgICogTmVpdGhlciB0aGUgbmFt
ZSBvZiBDb2RlIEF1cm9yYSBGb3J1bSwgSW5jLiBub3IgdGhlIG5hbWVzIG9mIGl0cworICAgICAg
ICAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVj
dHMgZGVyaXZlZAorICAgICAgICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKworICAgIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRAorICAgIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GCisg
ICAgTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg
Tk9OLUlORlJJTkdFTUVOVAorICAgIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
VEhFIENPUFlSSUdIVCBPV05FUiBPUiBDT05UUklCVVRPUlMKKyAgICBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
ICAgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAgICBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IKKyAgICBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwKKyAgICBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRQorICAgIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4KKyAgICBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKworICAgIFRoaXMgdGVzdCBpcyBiYXNlZCBvbiBjb2RlIHdyaXR0
ZW4gYnkgQ2FtZXJvbiBBZGFtcyBhbmQgaW1wb3J0ZWQgZnJvbQorICAgICAgaHR0cDovL3RoZW1h
bmluYmx1ZS5jb20vZXhwZXJpbWVudC9BbmltYXRpb25CZW5jaG1hcmsvaHRtbAorLS0+CisKKzxo
ZWFkPgorCisgICAgPHRpdGxlPkJlbmNobWFyayAtIEhUTUwgJmFtcDsgSmF2YVNjcmlwdDwvdGl0
bGU+CisKKyAgICA8bWV0YSBodHRwLWVxdWl2PSJjb250ZW50LXR5cGUiIGNvbnRlbnQ9InRleHQv
aHRtbDsgY2hhcnNldD1VVEYtOCIgLz4KKyAgICA8bWV0YSBuYW1lPSJhdXRob3IiIGNvbnRlbnQ9
IlRoZSBNYW4gaW4gQmx1ZSIgLz4KKyAgICA8bWV0YSBuYW1lPSJyb2JvdHMiIGNvbnRlbnQ9ImFs
bCIgLz4KKyAgICA8bWV0YSBuYW1lPSJNU1NtYXJ0VGFnc1ByZXZlbnRQYXJzaW5nIiBjb250ZW50
PSJ0cnVlIiAvPgorICAgIDxtZXRhIG5hbWU9ImRlc2NyaXB0aW9uIiBjb250ZW50PSIiIC8+Cisg
ICAgPG1ldGEgbmFtZT0ia2V5d29yZHMiIGNvbnRlbnQ9IiIgLz4KKworICAgIDxzdHlsZSB0eXBl
PSJ0ZXh0L2NzcyI+CisKKyAgICBodG1sIHsKKyAgICAgICAgaGVpZ2h0OiAxMDAlOworICAgIH0K
KworICAgIGJvZHkgeworICAgICAgICB3aWR0aDogMTAwJTsKKyAgICAgICAgaGVpZ2h0OiAxMDAl
OworICAgICAgICBvdmVyZmxvdzogaGlkZGVuOworICAgICAgICBtYXJnaW46IDA7CisgICAgICAg
IHBhZGRpbmc6IDA7CisgICAgfQorCisgICAgc3BhbiB7CisgICAgICAgIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKKyAgICAgICAgd2lkdGg6IDEycHg7CisgICAgICAgIGhlaWdodDogMTJweDsKKyAgICAg
ICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA2cHg7
CisgICAgICAgIC1tb3otYm9yZGVyLXJhZGl1czogNnB4OworICAgICAgICBib3JkZXItcmFkaXVz
OiA2cHg7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMDAwMDA7CisgICAgfQorCisgICAg
LnNoYWRvd3Mgc3BhbiB7CisgICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogNHB4IDRweCAzcHgg
cmdiYSgwLDAsMCwwLjMzKTsKKyAgICAgICAgLW1vei1ib3gtc2hhZG93OiA0cHggNHB4IDNweCBy
Z2JhKDAsMCwwLDAuMzMpOworICAgICAgICBib3gtc2hhZG93OiA0cHggNHB4IDNweCByZ2JhKDAs
MCwwLDAuMzMpOworICAgIH0KKworICAgICNmcmFtZVJhdGUgeworICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgIHJpZ2h0OiAxMHB4OworICAgICAgICBib3R0b206IDEwcHg7Cisg
ICAgICAgIHotaW5kZXg6IDEwMDsKKyAgICAgICAgZm9udC1zaXplOiAyNXB4OworICAgICAgICBm
b250LWZhbWlseTogQXJpYWwsIEhlbHZldGljYSwgc2Fucy1zZXJpZjsKKyAgICB9CisKKyAgICA8
L3N0eWxlPgorCisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgorCisgICAgdmFy
IEZSQU1FU19QRVJfVElNRVJfUkVBRElORyA9IDEwOworICAgIHZhciBNQVhfSVRFUkFUSU9OUyA9
IDExMDsKKyAgICB2YXIgTUFYX1JVTlMgPSAxOworICAgIHZhciBNQVhfUEFSVElDTEVTID0gNTAw
OworICAgIHZhciBNQVhfVkVMT0NJVFkgPSA1MDA7CisgICAgdmFyIFBBUlRJQ0xFX1JBRElVUyA9
IDY7CisgICAgdmFyIFNUQUdFX1dJRFRIID0gNjAwOworICAgIHZhciBTVEFHRV9IRUlHSFQgPSA2
MDA7CisgICAgdmFyIENPTE9SUyA9IFsiI2NjMDAwMCIsICIjZmZjYzAwIiwgIiNhYWZmMDAiLCAi
IzAwOTljYyIsICIjMTk0Yzk5IiwgIiM2NjE5OTkiXTsKKworICAgIHZhciBmcmFtZVRpbWVzID0g
W107CisgICAgdmFyIGl0ZXJhdGlvbiA9IDA7CisgICAgdmFyIHJ1biA9IDA7CisgICAgdmFyIGFu
aW1hdGVJbnRlcnZhbElkID0gMDsKKyAgICB2YXIgc3RhdGlzdGljcyA9IFtdOworICAgIHZhciBm
cmFtZVJhdGVzID0gW107CisgICAgdmFyIHBhcnRpY2xlcyA9IFtdOworCisgICAgd2luZG93Lm9u
bG9hZCA9IGluaXQ7CisKKyAgICBmdW5jdGlvbiBpbml0KCkKKyAgICB7CisgICAgICAgIFBlcmZU
ZXN0UnVubmVyLnJlc2V0UmFuZG9tU2VlZCgpOworCisgICAgICAgIHZhciBsb2NhdGlvbiA9IHdp
bmRvdy5sb2NhdGlvbi5ocmVmOworICAgICAgICBmcmFtZVJhdGVzID0gW107CisgICAgICAgIGZy
YW1lVGltZXMgPSBbXTsKKyAgICAgICAgaXRlcmF0aW9uID0gMDsKKyAgICAgICAgYW5pbWF0ZUlu
dGVydmFsSWQgPSAwOworICAgICAgICBwYXJ0aWNsZXMgPSBbXTsKKworICAgICAgICAvLyBDcmVh
dGUgdGhlIHBhcnRpY2xlcworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IE1BWF9QQVJUSUNM
RVM7IGkrKykKKyAgICAgICAgICAgIHBhcnRpY2xlcy5wdXNoKG5ldyBQYXJ0aWNsZSgpKTsKKwor
ICAgICAgICAvLyBTdGFydCB0aGUgYW5pbWF0aW9uCisgICAgICAgIGFuaW1hdGVJbnRlcnZhbElk
ID0gc2V0SW50ZXJ2YWwoYW5pbWF0ZSwgMSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYW5pbWF0
ZSgpCisgICAgeworICAgICAgICB2YXIgY3VyclRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTsK
KyAgICAgICAgdmFyIHRpbWVEZWx0YSA9IGN1cnJUaW1lIC0gZnJhbWVUaW1lc1tmcmFtZVRpbWVz
Lmxlbmd0aCAtIDFdOworCisgICAgICAgIGlmIChpc05hTih0aW1lRGVsdGEpKQorICAgICAgICAg
ICAgdGltZURlbHRhID0gMDsKKworICAgICAgICAvLyBEcmF3IGVhY2ggcGFydGljbGUKKyAgICAg
ICAgZm9yICh2YXIgcGFydGljbGUgaW4gcGFydGljbGVzKQorICAgICAgICAgICAgcGFydGljbGVz
W3BhcnRpY2xlXS5kcmF3KHRpbWVEZWx0YSk7CisKKyAgICAgICAgaWYgKChpdGVyYXRpb24rKyAl
IEZSQU1FU19QRVJfVElNRVJfUkVBRElORykgPT0gMCkgeworICAgICAgICAgICAgLy8gTGltaXQg
dGhlIGZyYW1lIHRpbWUgYXJyYXkgdG8gdGhlIGxhc3QgMzAgZnJhbWVzCisgICAgICAgICAgICBp
ZiAoZnJhbWVUaW1lcy5sZW5ndGggPiAzMCkKKyAgICAgICAgICAgICAgICBmcmFtZVRpbWVzLnNw
bGljZSgwLCAxKTsKKworICAgICAgICAgICAgZnJhbWVUaW1lcy5wdXNoKGN1cnJUaW1lKTsKKwor
ICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSBmcmFtZXJhdGUgYmFzZWQgdXBvbiB0aGUgZGlm
ZmVyZW5jZSBiZXR3ZWVuIHRoZSBhYnNvbHV0ZSB0aW1lcyBvZiB0aGUgb2xkZXN0IGFuZCBuZXdl
c3QgZnJhbWVzLCBzdWJkaXZpZGVkIGJ5IGhvdyBtYW55IGZyYW1lcyB3ZXJlIGRyYXduIGluYmV0
d2VlbgorICAgICAgICAgICAgdmFyIGZyYW1lUmF0ZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCJmcmFtZVJhdGUiKTsKKyAgICAgICAgICAgIHZhciBmcmFtZVJhdGVWYWwgPSBGUkFNRVNfUEVS
X1RJTUVSX1JFQURJTkcgKiAxMDAwIC8gKChjdXJyVGltZSAtIGZyYW1lVGltZXNbMF0pIC8gKGZy
YW1lVGltZXMubGVuZ3RoIC0gMSkpOworCisgICAgICAgICAgICBpZiAoIWlzTmFOKGZyYW1lUmF0
ZVZhbCkpIHsKKyAgICAgICAgICAgICAgICBmcmFtZVJhdGVzLnB1c2goZnJhbWVSYXRlVmFsKTsK
KyAgICAgICAgICAgICAgICB2YXIgZnJhbWVSYXRlVGV4dCA9IGZyYW1lUmF0ZVZhbCArICIiOwor
ICAgICAgICAgICAgICAgIGZyYW1lUmF0ZVRleHQgPSBmcmFtZVJhdGVUZXh0LnJlcGxhY2UoLyhe
W14uXStcLi4uKS4qLywgIiQxIik7CisgICAgICAgICAgICAgICAgZnJhbWVSYXRlVGV4dCArPSAi
IGZwcyI7CisgICAgICAgICAgICAgICAgZnJhbWVSYXRlLmlubmVySFRNTCA9IGZyYW1lUmF0ZVRl
eHQ7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoaXRlcmF0aW9uID4g
TUFYX0lURVJBVElPTlMpIHsKKyAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwoYW5pbWF0ZUludGVy
dmFsSWQpOworICAgICAgICAgICAgb25Db21wbGV0ZWRSdW4oKTsKKyAgICAgICAgfQorICAgIH0K
KworICAgIGZ1bmN0aW9uIFBhcnRpY2xlKCkKKyAgICB7CisgICAgICAgIHZhciBhbmdsZSA9IE1h
dGguUEkgKiAyICogUGVyZlRlc3RSdW5uZXIucmFuZG9tKCk7CisgICAgICAgIHZhciB2ZWxvY2l0
eSA9IE1BWF9WRUxPQ0lUWSAvIDggKiA3ICogUGVyZlRlc3RSdW5uZXIucmFuZG9tKCkgKyBNQVhf
VkVMT0NJVFkgLyA4OworICAgICAgICB2YXIgeCA9IFNUQUdFX1dJRFRIIC8gMiAtIFBBUlRJQ0xF
X1JBRElVUzsKKyAgICAgICAgdmFyIHkgPSBTVEFHRV9IRUlHSFQgLyAyIC0gUEFSVElDTEVfUkFE
SVVTOworCisgICAgICAgIC8vIENyZWF0ZSB2aXN1YWwgZWxlbWVudCBmb3IgdGhlIHBhcnRpY2xl
CisgICAgICAgIHZhciBkb21Ob2RlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwor
ICAgICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGRvbU5vZGUpOworCisgICAgICAgIC8v
IFNldCBpbml0aWFsIHBvc2l0aW9uIHRvIG1pZGRsZSBvZiBzY3JlZW4KKyAgICAgICAgZG9tTm9k
ZS5zdHlsZS5sZWZ0ID0geCArICJweCI7CisgICAgICAgIGRvbU5vZGUuc3R5bGUudG9wID0geSAr
ICJweCI7CisKKyAgICAgICAgLy8gU2V0IGNvbG91ciBvZiBlbGVtZW50CisgICAgICAgIGRvbU5v
ZGUuc3R5bGUuYmFja2dyb3VuZENvbG9yID0gQ09MT1JTW01hdGguZmxvb3IoTWF0aC5yYW5kb20o
KSAqIENPTE9SUy5sZW5ndGgpXTsKKworICAgICAgICBmdW5jdGlvbiBkZXN0cm95KCkKKyAgICAg
ICAgeworICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChkb21Ob2RlKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGRyYXcodGlt
ZURlbHRhKQorICAgICAgICB7CisgICAgICAgICAgICAvLyBDYWxjdWxhdGUgbmV4dCBwb3NpdGlv
biBvZiBwYXJ0aWNsZQorICAgICAgICAgICAgdmFyIG5leHRYID0geCArIE1hdGguY29zKGFuZ2xl
KSAqIHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDApOworICAgICAgICAgICAgdmFyIG5leHRZ
ID0geSArIE1hdGguc2luKGFuZ2xlKSAqIHZlbG9jaXR5ICogKHRpbWVEZWx0YSAvIDEwMDApOwor
CisgICAgICAgICAgICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiByaWdodCBz
aWRlIG9mIHNjcmVlbgorICAgICAgICAgICAgaWYgKG5leHRYICsgUEFSVElDTEVfUkFESVVTICog
MiA+IFNUQUdFX1dJRFRIKQorICAgICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4g
MyBvJ2Nsb2NrIGFuZCA2IG8nY2xvY2sKKyAgICAgICAgICAgICAgICBpZiAoKGFuZ2xlID49IDAg
JiYgYW5nbGUgPCBNYXRoLlBJIC8gMikpCisgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gTWF0
aC5QSSAtIGFuZ2xlOworICAgICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4gMTIg
bydjbG9jayBhbmQgMyBvJ2Nsb2NrCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYW5nbGUgPiBN
YXRoLlBJIC8gMiAqIDMpCisgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gYW5nbGUgLSAoYW5n
bGUgLSBNYXRoLlBJIC8gMiAqIDMpICogMgorCisgICAgICAgICAgICAvLyBJZiBwYXJ0aWNsZSBp
cyBnb2luZyB0byBtb3ZlIG9mZiBsZWZ0IHNpZGUgb2Ygc2NyZWVuCisgICAgICAgICAgICBpZiAo
bmV4dFggPCAwKQorICAgICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4gNiBvJ2Ns
b2NrIGFuZCA5IG8nY2xvY2sKKyAgICAgICAgICAgICAgICBpZiAoKGFuZ2xlID4gTWF0aC5QSSAv
IDIgJiYgYW5nbGUgPCBNYXRoLlBJKSkKKyAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBNYXRo
LlBJIC0gYW5nbGU7CisgICAgICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgYmV0d2VlbiA5IG8n
Y2xvY2sgYW5kIDEyIG8nY2xvY2sKKyAgICAgICAgICAgICAgICBlbHNlIGlmIChhbmdsZSA+IE1h
dGguUEkgJiYgYW5nbGUgPCBNYXRoLlBJIC8gMiAqIDMpCisgICAgICAgICAgICAgICAgICAgIGFu
Z2xlID0gYW5nbGUgKyAoTWF0aC5QSSAvIDIgKiAzIC0gYW5nbGUpICogMgorCisgICAgICAgICAg
ICAvLyBJZiBwYXJ0aWNsZSBpcyBnb2luZyB0byBtb3ZlIG9mZiBib3R0b20gc2lkZSBvZiBzY3Jl
ZW4KKyAgICAgICAgICAgIGlmIChuZXh0WSArIFBBUlRJQ0xFX1JBRElVUyAqIDIgPiBTVEFHRV9I
RUlHSFQpCisgICAgICAgICAgICAgICAgLy8gSWYgYW5nbGUgaXMgYmV0d2VlbiAzIG8nY2xvY2sg
YW5kIDkgbydjbG9jaworICAgICAgICAgICAgICAgIGlmICgoYW5nbGUgPiAwICYmIGFuZ2xlIDwg
TWF0aC5QSSkpCisgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gTWF0aC5QSSAqIDIgLSBhbmds
ZTsKKworICAgICAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgdG9w
IHNpZGUgb2Ygc2NyZWVuCisgICAgICAgICAgICBpZiAobmV4dFkgPCAwKQorICAgICAgICAgICAg
ICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4gOSBvJ2Nsb2NrIGFuZCAzIG8nY2xvY2sKKyAgICAg
ICAgICAgICAgICBpZiAoKGFuZ2xlID4gTWF0aC5QSSAmJiBhbmdsZSA8IE1hdGguUEkgKiAyKSkK
KyAgICAgICAgICAgICAgICAgICAgYW5nbGUgPSBhbmdsZSAtIChhbmdsZSAtIE1hdGguUEkpICog
MjsKKworICAgICAgICAgICAgZG9tTm9kZS5zdHlsZS5sZWZ0ID0gbmV4dFggKyAicHgiOworICAg
ICAgICAgICAgZG9tTm9kZS5zdHlsZS50b3AgPSBuZXh0WSArICJweCI7CisKKyAgICAgICAgICAg
IHggPSBuZXh0WDsKKyAgICAgICAgICAgIHkgPSBuZXh0WTsKKyAgICAgICAgfQorCisgICAgICAg
IHJldHVybiB7IGRyYXc6IGRyYXcsIGRlc3Ryb3k6IGRlc3Ryb3kgfQorICAgIH0KKworICAgIGZ1
bmN0aW9uIG9uQ29tcGxldGVkUnVuKCkgeworICAgICAgICBmb3IgKHZhciBwYXJ0aWNsZSBpbiBw
YXJ0aWNsZXMpIHsKKyAgICAgICAgICAgIHZhciBwID0gcGFydGljbGVzW3BhcnRpY2xlXTsKKyAg
ICAgICAgICAgIHBhcnRpY2xlc1twYXJ0aWNsZV0gPSAwOworICAgICAgICAgICAgcC5kZXN0cm95
KCk7CisgICAgICAgIH0KKyAgICAgICAgcGFydGljbGVzID0gW107CisKKyAgICAgICAgZnJhbWVS
YXRlLmlubmVySFRNTCA9ICIiOworCisgICAgICAgIGZvciAodmFyIHJhdGUgaW4gZnJhbWVSYXRl
cykKKyAgICAgICAgICAgIFBlcmZUZXN0UnVubmVyLmxvZyhmcmFtZVJhdGVzW3JhdGVdLnRvRml4
ZWQoMikgKyAiIGZwcyIpOworCisgICAgICAgIHZhciBzdGF0cyA9IFBlcmZUZXN0UnVubmVyLmNv
bXB1dGVTdGF0aXN0aWNzKGZyYW1lUmF0ZXMsICJmcHMiKTsKKyAgICAgICAgc3RhdGlzdGljcy5w
dXNoKHN0YXRzKTsKKworICAgICAgICBQZXJmVGVzdFJ1bm5lci5wcmludFN0YXRpc3RpY3Moc3Rh
dHMpOworCisgICAgICAgIGlmICgrK3J1biA8IE1BWF9SVU5TKSB7CisgICAgICAgICAgICBQZXJm
VGVzdFJ1bm5lci5sb2coIjxicj49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT08YnI+Iik7CisgICAgICAgICAgICBpbml0KCk7CisgICAgICAgIH0KKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikK
KyAgICAgICAgICAgICAgICBsYXlvdXRUZXN0Q29udHJvbGxlci5ub3RpZnlEb25lKCk7CisgICAg
fQorICAgIDwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSIuLi9yZXNvdXJjZXMvcnVubmVyLmpz
Ij48L3NjcmlwdD4KKzwvaGVhZD4KKworPGJvZHk+CisgICAgPGRpdiBpZD0iZnJhbWVSYXRlIj4K
KyAgICA8L2Rpdj4KKzwvYm9keT4KKworPC9odG1sPgpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9DaGFuZ2VMb2cgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwppbmRleCBlM2E4Mjk4
MTdhODAyZDVmODcxY2M2ZjY3MGM0YjlhNjM2MGFjYWZjLi4yYWVlNTQ0YTNkOTU5M2I5N2IyMmIz
ZDUzMzlkMTdlZjAxNTAwOWE0IDEwMDY0NAotLS0gYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZworKysgYi9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDEy
LTA2LTE4ICBUb20gWmFrcmFqc2VrICA8dG9tekBjb2RlYXVyb3JhLm9yZz4KKworICAgICAgICBJ
bXBvcnQgdGhlbWFuaW5ibHVlLmNvbS9leHBlcmltZW50L0FuaW1hdGlvbkJlbmNobWFyay8gYXMg
cGVyZm9ybWFuY2UgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc4Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWRkZWQgUGVyZlRlc3RSdW5uZXIgZml4dHVyZSBhcm91bmQgaXQuCisKKyAgICAg
ICAgKiBBbmltYXRpb24vYmFsbHMuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMDUgIEFsZXhlaSBG
aWxpcHBvdiAgPGFsZXhlaWZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IHNlcmlhbGl6ZSBlZGdlIGNvdW50cyBpbnN0ZWFkIG9mIGluZGV4ZXMgaW4gaGVhcCBzbmFwc2hv
dAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>148558</attachid>
            <date>2012-06-20 07:07:16 -0700</date>
            <delta_ts>2012-06-20 08:45:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78789-20120620070716.patch</filename>
            <type>text/plain</type>
            <size>12538</size>
            <attacher name="Tom Zakrajsek">tomz</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIwODIwCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cg
Yi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggZjk4MzJmNzY5NWMwOGYzZDIyNmE2ZjIzMjkyNWQ3MzU2
Njc1NmVmMy4uODhlZjYzNTU0YTVmMWNkYWI5MjcxYWEzNDJmYTI4Nzc2NGUxMGI0ZSAxMDA2NDQK
LS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2
IEBACisyMDEyLTA2LTIwICBUb20gWmFrcmFqc2VrICA8dG9tekBjb2RlYXVyb3JhLm9yZz4KKwor
ICAgICAgICBJbXBvcnQgdGhlbWFuaW5ibHVlLmNvbS9leHBlcmltZW50L0FuaW1hdGlvbkJlbmNo
bWFyay8gYXMgcGVyZm9ybWFuY2UgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTc4Nzg5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBO
aXdhLgorCisgICAgICAgIFVwZGF0ZWQgcGFyc2VyIHRvIGluY2x1ZGUgZnBzIGFzIGEgdmFsaWQg
dW5pdC4KKworICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVy
ZnRlc3QucHk6CisgICAgICAgIChQZXJmVGVzdCk6CisgICAgICAgIChQZXJmVGVzdC5wYXJzZV9v
dXRwdXQpOgorCiAyMDEyLTA2LTIwICBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5v
a2lhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkIHRyaXZpYWwgcGVybWlzc2lvbnMgZml4Lgpk
aWZmIC0tZ2l0IGEvVG9vbHMvU2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJm
dGVzdC5weSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cHkvcGVyZm9ybWFuY2VfdGVzdHMvcGVyZnRl
c3QucHkKaW5kZXggODk2YmFkNGZhZTk1NWExOGQ4YjVhN2VkMjVkNDg5NmY4ZjAzZTAyYi4uZTVi
YTAxZTQ3MzFiMGJhZWNlY2RhZWQ0NGY3N2IxYTBjNzc3NjAzMiAxMDA2NDQKLS0tIGEvVG9vbHMv
U2NyaXB0cy93ZWJraXRweS9wZXJmb3JtYW5jZV90ZXN0cy9wZXJmdGVzdC5weQorKysgYi9Ub29s
cy9TY3JpcHRzL3dlYmtpdHB5L3BlcmZvcm1hbmNlX3Rlc3RzL3BlcmZ0ZXN0LnB5CkBAIC05NSw3
ICs5NSw3IEBAIGNsYXNzIFBlcmZUZXN0KG9iamVjdCk6CiAgICAgICAgIHJlLmNvbXBpbGUocide
UnVubmluZyBcZCsgdGltZXMkJyksCiAgICAgICAgIHJlLmNvbXBpbGUocideSWdub3Jpbmcgd2Fy
bS11cCAnKSwKICAgICAgICAgcmUuY29tcGlsZShyJ15JbmZvOicpLAotICAgICAgICByZS5jb21w
aWxlKHInXlxkKyguXGQrKT8oXHMqKHJ1bnNcL3N8bXMpKT8kJyksCisgICAgICAgIHJlLmNvbXBp
bGUocideXGQrKC5cZCspPyhccyoocnVuc1wvc3xtc3xmcHMpKT8kJyksCiAgICAgICAgICMgRm9s
bG93aW5nIGFyZSBmb3IgaGFuZGxlIGV4aXN0aW5nIHRlc3QgbGlrZSBEcm9tYWVvCiAgICAgICAg
IHJlLmNvbXBpbGUocmUuZXNjYXBlKCIiIm1haW4gZnJhbWUgLSBoYXMgMSBvbnVubG9hZCBoYW5k
bGVyKHMpIiIiKSksCiAgICAgICAgIHJlLmNvbXBpbGUocmUuZXNjYXBlKCIiImZyYW1lICI8IS0t
ZnJhbWVQYXRoIC8vPCEtLWZyYW1lMC0tPi0tPiIgLSBoYXMgMSBvbnVubG9hZCBoYW5kbGVyKHMp
IiIiKSksCkBAIC0xMzUsNyArMTM1LDcgQEAgY2xhc3MgUGVyZlRlc3Qob2JqZWN0KToKIAogICAg
ICAgICAgICAgaWYgbm90IHNlbGYuX3Nob3VsZF9pZ25vcmVfbGluZV9pbl9wYXJzZXJfdGVzdF9y
ZXN1bHQobGluZSk6CiAgICAgICAgICAgICAgICAgdGVzdF9mYWlsZWQgPSBUcnVlCi0gICAgICAg
ICAgICAgICAgX2xvZy5lcnJvcihsaW5lKQorICAgICAgICAgICAgICAgIF9sb2cuZXJyb3IoIlBl
cmZUZXN0IGNhbid0IHBhcnNlIGxpbmUgWyIgKyBsaW5lICsgIl0iKQogCiAgICAgICAgIGlmIHRl
c3RfZmFpbGVkIG9yIHNldChzZWxmLl9zdGF0aXN0aWNzX2tleXMpICE9IHNldChyZXN1bHRzLmtl
eXMoKSk6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvUGVyZm9ybWFuY2VU
ZXN0cy9BbmltYXRpb24vYmFsbHMuaHRtbCBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbWF0aW9uL2Jh
bGxzLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uZGE0ZGZkYTU3N2JmYWY2ZjVlMTRiZmQ4NDU5NjlkMGVkM2Yy
M2UwOQotLS0gL2Rldi9udWxsCisrKyBiL1BlcmZvcm1hbmNlVGVzdHMvQW5pbWF0aW9uL2JhbGxz
Lmh0bWwKQEAgLTAsMCArMSwyNzMgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9E
VEQgWEhUTUwgMS4wIFN0cmljdC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFRE
L3hodG1sMS1zdHJpY3QuZHRkIj4KKzxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5
L3hodG1sIiB4bWw6bGFuZz0iZW4iIGxhbmc9ImVuIj4KKworPCEtLQorICAgIENvcHlyaWdodCAo
YykgMjAxMiBDYW1lcm9uIEFkYW1zLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICAgIENvcHlyaWdo
dCAoYykgMjAxMiBDb2RlIEF1cm9yYSBGb3J1bS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworICAg
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICAgIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAgICBtZXQ6CisgICAgICAgICogUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAgICAgICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgICAgICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICAgICAgICAgIGNvcHlyaWdodCBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nCisgICAgICAgICAgZGlzY2xh
aW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
CisgICAgICAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICAgICAgICAqIE5laXRoZXIgdGhl
IG5hbWUgb2YgQ29kZSBBdXJvcmEgRm9ydW0sIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAg
ICAgICAgICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHBy
b2R1Y3RzIGRlcml2ZWQKKyAgICAgICAgICBmcm9tIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKKyAgICBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQKKyAgICBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RgorICAgIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Ug
QU5EIE5PTi1JTkZSSU5HRU1FTlQKKyAgICBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIFRIRSBDT1BZUklHSFQgT1dORVIgT1IgQ09OVFJJQlVUT1JTCisgICAgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICAgIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgICAgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SCisgICAgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksCisgICAgV0hF
VEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UKKyAgICBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOCisgICAgSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisKKyAgICBUaGlzIHRlc3QgaXMgYmFzZWQgb24gY29kZSB3
cml0dGVuIGJ5IENhbWVyb24gQWRhbXMgYW5kIGltcG9ydGVkIGZyb20KKyAgICAgIGh0dHA6Ly90
aGVtYW5pbmJsdWUuY29tL2V4cGVyaW1lbnQvQW5pbWF0aW9uQmVuY2htYXJrL2h0bWwKKy0tPgor
Cis8aGVhZD4KKworICAgIDx0aXRsZT5CZW5jaG1hcmsgLSBIVE1MICZhbXA7IEphdmFTY3JpcHQ8
L3RpdGxlPgorCisgICAgPG1ldGEgaHR0cC1lcXVpdj0iY29udGVudC10eXBlIiBjb250ZW50PSJ0
ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiIC8+CisgICAgPG1ldGEgbmFtZT0iYXV0aG9yIiBjb250
ZW50PSJUaGUgTWFuIGluIEJsdWUiIC8+CisgICAgPG1ldGEgbmFtZT0icm9ib3RzIiBjb250ZW50
PSJhbGwiIC8+CisgICAgPG1ldGEgbmFtZT0iTVNTbWFydFRhZ3NQcmV2ZW50UGFyc2luZyIgY29u
dGVudD0idHJ1ZSIgLz4KKyAgICA8bWV0YSBuYW1lPSJkZXNjcmlwdGlvbiIgY29udGVudD0iIiAv
PgorICAgIDxtZXRhIG5hbWU9ImtleXdvcmRzIiBjb250ZW50PSIiIC8+CisKKyAgICA8c3R5bGUg
dHlwZT0idGV4dC9jc3MiPgorCisgICAgaHRtbCB7CisgICAgICAgIGhlaWdodDogMTAwJTsKKyAg
ICB9CisKKyAgICBib2R5IHsKKyAgICAgICAgd2lkdGg6IDEwMCU7CisgICAgICAgIGhlaWdodDog
MTAwJTsKKyAgICAgICAgb3ZlcmZsb3c6IGhpZGRlbjsKKyAgICAgICAgbWFyZ2luOiAwOworICAg
ICAgICBwYWRkaW5nOiAwOworICAgIH0KKworICAgIHNwYW4geworICAgICAgICBwb3NpdGlvbjog
YWJzb2x1dGU7CisgICAgICAgIHdpZHRoOiAxMnB4OworICAgICAgICBoZWlnaHQ6IDEycHg7Cisg
ICAgICAgIG92ZXJmbG93OiBoaWRkZW47CisgICAgICAgIC13ZWJraXQtYm9yZGVyLXJhZGl1czog
NnB4OworICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDZweDsKKyAgICAgICAgYm9yZGVyLXJh
ZGl1czogNnB4OworICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjMDAwMDAwOworICAgIH0KKwor
ICAgIC5zaGFkb3dzIHNwYW4geworICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDRweCA0cHgg
M3B4IHJnYmEoMCwwLDAsMC4zMyk7CisgICAgICAgIC1tb3otYm94LXNoYWRvdzogNHB4IDRweCAz
cHggcmdiYSgwLDAsMCwwLjMzKTsKKyAgICAgICAgYm94LXNoYWRvdzogNHB4IDRweCAzcHggcmdi
YSgwLDAsMCwwLjMzKTsKKyAgICB9CisKKyAgICAjZnJhbWVSYXRlIHsKKyAgICAgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgICAgICByaWdodDogMTBweDsKKyAgICAgICAgYm90dG9tOiAxMHB4
OworICAgICAgICB6LWluZGV4OiAxMDA7CisgICAgICAgIGZvbnQtc2l6ZTogMjVweDsKKyAgICAg
ICAgZm9udC1mYW1pbHk6IEFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7CisgICAgfQorCisg
ICAgPC9zdHlsZT4KKworICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KKworICAg
IHZhciBGUkFNRVNfUEVSX1RJTUVSX1JFQURJTkcgPSAxMDsKKyAgICB2YXIgTUFYX0lURVJBVElP
TlMgPSAxMTA7CisgICAgdmFyIE1BWF9SVU5TID0gMTsKKyAgICB2YXIgTUFYX1BBUlRJQ0xFUyA9
IDI1MDA7CisgICAgdmFyIE1BWF9WRUxPQ0lUWSA9IDUwOworICAgIHZhciBQQVJUSUNMRV9SQURJ
VVMgPSA2OworICAgIHZhciBTVEFHRV9XSURUSCA9IDYwMDsKKyAgICB2YXIgU1RBR0VfSEVJR0hU
ID0gNjAwOworICAgIHZhciBDT0xPUlMgPSBbIiNjYzAwMDAiLCAiI2ZmY2MwMCIsICIjYWFmZjAw
IiwgIiMwMDk5Y2MiLCAiIzE5NGM5OSIsICIjNjYxOTk5Il07CisKKyAgICB2YXIgZnJhbWVUaW1l
cyA9IFtdOworICAgIHZhciBpdGVyYXRpb24gPSAwOworICAgIHZhciBydW4gPSAwOworICAgIHZh
ciBhbmltYXRlSW50ZXJ2YWxJZCA9IDA7CisgICAgdmFyIHN0YXRpc3RpY3MgPSBbXTsKKyAgICB2
YXIgZnJhbWVSYXRlcyA9IFtdOworICAgIHZhciBwYXJ0aWNsZXMgPSBbXTsKKworICAgIHdpbmRv
dy5vbmxvYWQgPSBpbml0OworCisgICAgZnVuY3Rpb24gaW5pdCgpCisgICAgeworICAgICAgICBQ
ZXJmVGVzdFJ1bm5lci5yZXNldFJhbmRvbVNlZWQoKTsKKworICAgICAgICB2YXIgbG9jYXRpb24g
PSB3aW5kb3cubG9jYXRpb24uaHJlZjsKKyAgICAgICAgZnJhbWVSYXRlcyA9IFtdOworICAgICAg
ICBmcmFtZVRpbWVzID0gW107CisgICAgICAgIGl0ZXJhdGlvbiA9IDA7CisgICAgICAgIGFuaW1h
dGVJbnRlcnZhbElkID0gMDsKKyAgICAgICAgcGFydGljbGVzID0gW107CisKKyAgICAgICAgLy8g
Q3JlYXRlIHRoZSBwYXJ0aWNsZXMKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBNQVhfUEFS
VElDTEVTOyBpKyspCisgICAgICAgICAgICBwYXJ0aWNsZXMucHVzaChuZXcgUGFydGljbGUoKSk7
CisKKyAgICAgICAgLy8gU3RhcnQgdGhlIGFuaW1hdGlvbgorICAgICAgICBhbmltYXRlSW50ZXJ2
YWxJZCA9IHNldEludGVydmFsKGFuaW1hdGUsIDEpOworICAgIH0KKworICAgIGZ1bmN0aW9uIGFu
aW1hdGUoKQorICAgIHsKKyAgICAgICAgdmFyIGN1cnJUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1l
KCk7CisgICAgICAgIHZhciB0aW1lRGVsdGEgPSBjdXJyVGltZSAtIGZyYW1lVGltZXNbZnJhbWVU
aW1lcy5sZW5ndGggLSAxXTsKKworICAgICAgICBpZiAoaXNOYU4odGltZURlbHRhKSkKKyAgICAg
ICAgICAgIHRpbWVEZWx0YSA9IDA7CisKKyAgICAgICAgLy8gRHJhdyBlYWNoIHBhcnRpY2xlCisg
ICAgICAgIGZvciAodmFyIHBhcnRpY2xlIGluIHBhcnRpY2xlcykKKyAgICAgICAgICAgIHBhcnRp
Y2xlc1twYXJ0aWNsZV0uZHJhdyh0aW1lRGVsdGEpOworCisgICAgICAgIGlmICgoaXRlcmF0aW9u
KysgJSBGUkFNRVNfUEVSX1RJTUVSX1JFQURJTkcpID09IDApIHsKKyAgICAgICAgICAgIC8vIExp
bWl0IHRoZSBmcmFtZSB0aW1lIGFycmF5IHRvIHRoZSBsYXN0IDMwIGZyYW1lcworICAgICAgICAg
ICAgaWYgKGZyYW1lVGltZXMubGVuZ3RoID4gMzApCisgICAgICAgICAgICAgICAgZnJhbWVUaW1l
cy5zcGxpY2UoMCwgMSk7CisKKyAgICAgICAgICAgIGZyYW1lVGltZXMucHVzaChjdXJyVGltZSk7
CisKKyAgICAgICAgICAgIC8vIENhbGN1bGF0ZSB0aGUgZnJhbWVyYXRlIGJhc2VkIHVwb24gdGhl
IGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgYWJzb2x1dGUgdGltZXMgb2YgdGhlIG9sZGVzdCBhbmQg
bmV3ZXN0IGZyYW1lcywgc3ViZGl2aWRlZCBieSBob3cgbWFueSBmcmFtZXMgd2VyZSBkcmF3biBp
bmJldHdlZW4KKyAgICAgICAgICAgIHZhciBmcmFtZVJhdGUgPSBkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZnJhbWVSYXRlIik7CisgICAgICAgICAgICB2YXIgZnJhbWVSYXRlVmFsID0gRlJBTUVT
X1BFUl9USU1FUl9SRUFESU5HICogMTAwMCAvICgoY3VyclRpbWUgLSBmcmFtZVRpbWVzWzBdKSAv
IChmcmFtZVRpbWVzLmxlbmd0aCAtIDEpKTsKKworICAgICAgICAgICAgaWYgKCFpc05hTihmcmFt
ZVJhdGVWYWwpKSB7CisgICAgICAgICAgICAgICAgZnJhbWVSYXRlcy5wdXNoKGZyYW1lUmF0ZVZh
bCk7CisgICAgICAgICAgICAgICAgdmFyIGZyYW1lUmF0ZVRleHQgPSBmcmFtZVJhdGVWYWwgKyAi
IjsKKyAgICAgICAgICAgICAgICBmcmFtZVJhdGVUZXh0ID0gZnJhbWVSYXRlVGV4dC5yZXBsYWNl
KC8oXlteLl0rXC4uLikuKi8sICIkMSIpOworICAgICAgICAgICAgICAgIGZyYW1lUmF0ZVRleHQg
Kz0gIiBmcHMiOworICAgICAgICAgICAgICAgIGZyYW1lUmF0ZS5pbm5lckhUTUwgPSBmcmFtZVJh
dGVUZXh0OworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGl0ZXJhdGlv
biA+IE1BWF9JVEVSQVRJT05TKSB7CisgICAgICAgICAgICBjbGVhckludGVydmFsKGFuaW1hdGVJ
bnRlcnZhbElkKTsKKyAgICAgICAgICAgIG9uQ29tcGxldGVkUnVuKCk7CisgICAgICAgIH0KKyAg
ICB9CisKKyAgICBmdW5jdGlvbiBQYXJ0aWNsZSgpCisgICAgeworICAgICAgICB2YXIgYW5nbGUg
PSBNYXRoLlBJICogMiAqIFBlcmZUZXN0UnVubmVyLnJhbmRvbSgpOworICAgICAgICB2YXIgdmVs
b2NpdHkgPSBNQVhfVkVMT0NJVFkgLyA4ICogNyAqIFBlcmZUZXN0UnVubmVyLnJhbmRvbSgpICsg
TUFYX1ZFTE9DSVRZIC8gODsKKyAgICAgICAgdmFyIHggPSBTVEFHRV9XSURUSCAvIDIgLSBQQVJU
SUNMRV9SQURJVVM7CisgICAgICAgIHZhciB5ID0gU1RBR0VfSEVJR0hUIC8gMiAtIFBBUlRJQ0xF
X1JBRElVUzsKKworICAgICAgICAvLyBDcmVhdGUgdmlzdWFsIGVsZW1lbnQgZm9yIHRoZSBwYXJ0
aWNsZQorICAgICAgICB2YXIgZG9tTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3NwYW4n
KTsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkb21Ob2RlKTsKKworICAgICAg
ICAvLyBTZXQgaW5pdGlhbCBwb3NpdGlvbiB0byBtaWRkbGUgb2Ygc2NyZWVuCisgICAgICAgIGRv
bU5vZGUuc3R5bGUubGVmdCA9IHggKyAicHgiOworICAgICAgICBkb21Ob2RlLnN0eWxlLnRvcCA9
IHkgKyAicHgiOworCisgICAgICAgIC8vIFNldCBjb2xvdXIgb2YgZWxlbWVudAorICAgICAgICBk
b21Ob2RlLnN0eWxlLmJhY2tncm91bmRDb2xvciA9IENPTE9SU1tNYXRoLmZsb29yKE1hdGgucmFu
ZG9tKCkgKiBDT0xPUlMubGVuZ3RoKV07CisKKyAgICAgICAgZnVuY3Rpb24gZGVzdHJveSgpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIGRvY3VtZW50LmJvZHkucmVtb3ZlQ2hpbGQoZG9tTm9kZSk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBkcmF3
KHRpbWVEZWx0YSkKKyAgICAgICAgeworICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIG5leHQgcG9z
aXRpb24gb2YgcGFydGljbGUKKyAgICAgICAgICAgIHZhciBuZXh0WCA9IHggKyBNYXRoLmNvcyhh
bmdsZSkgKiB2ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAwKTsKKyAgICAgICAgICAgIHZhciBu
ZXh0WSA9IHkgKyBNYXRoLnNpbihhbmdsZSkgKiB2ZWxvY2l0eSAqICh0aW1lRGVsdGEgLyAxMDAw
KTsKKworICAgICAgICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgcmln
aHQgc2lkZSBvZiBzY3JlZW4KKyAgICAgICAgICAgIGlmIChuZXh0WCArIFBBUlRJQ0xFX1JBRElV
UyAqIDIgPiBTVEFHRV9XSURUSCkKKyAgICAgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBiZXR3
ZWVuIDMgbydjbG9jayBhbmQgNiBvJ2Nsb2NrCisgICAgICAgICAgICAgICAgaWYgKChhbmdsZSA+
PSAwICYmIGFuZ2xlIDwgTWF0aC5QSSAvIDIpKQorICAgICAgICAgICAgICAgICAgICBhbmdsZSA9
IE1hdGguUEkgLSBhbmdsZTsKKyAgICAgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBiZXR3ZWVu
IDEyIG8nY2xvY2sgYW5kIDMgbydjbG9jaworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGFuZ2xl
ID4gTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IGFuZ2xlIC0g
KGFuZ2xlIC0gTWF0aC5QSSAvIDIgKiAzKSAqIDIKKworICAgICAgICAgICAgLy8gSWYgcGFydGlj
bGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgbGVmdCBzaWRlIG9mIHNjcmVlbgorICAgICAgICAgICAg
aWYgKG5leHRYIDwgMCkKKyAgICAgICAgICAgICAgICAvLyBJZiBhbmdsZSBpcyBiZXR3ZWVuIDYg
bydjbG9jayBhbmQgOSBvJ2Nsb2NrCisgICAgICAgICAgICAgICAgaWYgKChhbmdsZSA+IE1hdGgu
UEkgLyAyICYmIGFuZ2xlIDwgTWF0aC5QSSkpCisgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0g
TWF0aC5QSSAtIGFuZ2xlOworICAgICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4g
OSBvJ2Nsb2NrIGFuZCAxMiBvJ2Nsb2NrCisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYW5nbGUg
PiBNYXRoLlBJICYmIGFuZ2xlIDwgTWF0aC5QSSAvIDIgKiAzKQorICAgICAgICAgICAgICAgICAg
ICBhbmdsZSA9IGFuZ2xlICsgKE1hdGguUEkgLyAyICogMyAtIGFuZ2xlKSAqIDIKKworICAgICAg
ICAgICAgLy8gSWYgcGFydGljbGUgaXMgZ29pbmcgdG8gbW92ZSBvZmYgYm90dG9tIHNpZGUgb2Yg
c2NyZWVuCisgICAgICAgICAgICBpZiAobmV4dFkgKyBQQVJUSUNMRV9SQURJVVMgKiAyID4gU1RB
R0VfSEVJR0hUKQorICAgICAgICAgICAgICAgIC8vIElmIGFuZ2xlIGlzIGJldHdlZW4gMyBvJ2Ns
b2NrIGFuZCA5IG8nY2xvY2sKKyAgICAgICAgICAgICAgICBpZiAoKGFuZ2xlID4gMCAmJiBhbmds
ZSA8IE1hdGguUEkpKQorICAgICAgICAgICAgICAgICAgICBhbmdsZSA9IE1hdGguUEkgKiAyIC0g
YW5nbGU7CisKKyAgICAgICAgICAgIC8vIElmIHBhcnRpY2xlIGlzIGdvaW5nIHRvIG1vdmUgb2Zm
IHRvcCBzaWRlIG9mIHNjcmVlbgorICAgICAgICAgICAgaWYgKG5leHRZIDwgMCkKKyAgICAgICAg
ICAgICAgICAvLyBJZiBhbmdsZSBpcyBiZXR3ZWVuIDkgbydjbG9jayBhbmQgMyBvJ2Nsb2NrCisg
ICAgICAgICAgICAgICAgaWYgKChhbmdsZSA+IE1hdGguUEkgJiYgYW5nbGUgPCBNYXRoLlBJICog
MikpCisgICAgICAgICAgICAgICAgICAgIGFuZ2xlID0gYW5nbGUgLSAoYW5nbGUgLSBNYXRoLlBJ
KSAqIDI7CisKKyAgICAgICAgICAgIGRvbU5vZGUuc3R5bGUubGVmdCA9IG5leHRYICsgInB4IjsK
KyAgICAgICAgICAgIGRvbU5vZGUuc3R5bGUudG9wID0gbmV4dFkgKyAicHgiOworCisgICAgICAg
ICAgICB4ID0gbmV4dFg7CisgICAgICAgICAgICB5ID0gbmV4dFk7CisgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4geyBkcmF3OiBkcmF3LCBkZXN0cm95OiBkZXN0cm95IH0KKyAgICB9CisKKyAg
ICBmdW5jdGlvbiBvbkNvbXBsZXRlZFJ1bigpIHsKKyAgICAgICAgZm9yICh2YXIgcGFydGljbGUg
aW4gcGFydGljbGVzKSB7CisgICAgICAgICAgICB2YXIgcCA9IHBhcnRpY2xlc1twYXJ0aWNsZV07
CisgICAgICAgICAgICBwYXJ0aWNsZXNbcGFydGljbGVdID0gMDsKKyAgICAgICAgICAgIHAuZGVz
dHJveSgpOworICAgICAgICB9CisgICAgICAgIHBhcnRpY2xlcyA9IFtdOworCisgICAgICAgIGZy
YW1lUmF0ZS5pbm5lckhUTUwgPSAiIjsKKworICAgICAgICBmb3IgKHZhciByYXRlIGluIGZyYW1l
UmF0ZXMpCisgICAgICAgICAgICBQZXJmVGVzdFJ1bm5lci5sb2coZnJhbWVSYXRlc1tyYXRlXS50
b0ZpeGVkKDIpICsgIiBmcHMiKTsKKworICAgICAgICB2YXIgc3RhdHMgPSBQZXJmVGVzdFJ1bm5l
ci5jb21wdXRlU3RhdGlzdGljcyhmcmFtZVJhdGVzLCAiZnBzIik7CisgICAgICAgIHN0YXRpc3Rp
Y3MucHVzaChzdGF0cyk7CisKKyAgICAgICAgUGVyZlRlc3RSdW5uZXIucHJpbnRTdGF0aXN0aWNz
KHN0YXRzKTsKKworICAgICAgICBpZiAoKytydW4gPCBNQVhfUlVOUykgeworICAgICAgICAgICAg
UGVyZlRlc3RSdW5uZXIubG9nKCI8YnI+PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PGJyPiIpOworICAgICAgICAgICAgaW5pdCgpOworICAgICAgICB9
CisgICAgICAgIGVsc2UgaWYgKHdpbmRvdy5sYXlvdXRUZXN0Q29udHJvbGxlcikKKyAgICAgICAg
ICAgIGxheW91dFRlc3RDb250cm9sbGVyLm5vdGlmeURvbmUoKTsKKyAgICB9CisgICAgPC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9ydW5uZXIuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorCis8Ym9keT4KKyAgICA8ZGl2IGlkPSJmcmFtZVJhdGUiPgorICAgIDwvZGl2Pgor
PC9ib2R5PgorCis8L2h0bWw+CmRpZmYgLS1naXQgYS9QZXJmb3JtYW5jZVRlc3RzL0NoYW5nZUxv
ZyBiL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCmluZGV4IGVmYjU4N2JhYTMxYzYxYWM3MGEy
ZGNlODFmZDg4N2E0OGUwZWRkYjkuLmQzOWJkYTgwZTRhYWUzNjQ5ZTZjMjlmN2JhMmE1ZWZjNDQy
NjJkOTYgMTAwNjQ0Ci0tLSBhL1BlcmZvcm1hbmNlVGVzdHMvQ2hhbmdlTG9nCisrKyBiL1BlcmZv
cm1hbmNlVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTItMDYtMjAgIFRvbSBa
YWtyYWpzZWsgIDx0b216QGNvZGVhdXJvcmEub3JnPgorCisgICAgICAgIEltcG9ydCB0aGVtYW5p
bmJsdWUuY29tL2V4cGVyaW1lbnQvQW5pbWF0aW9uQmVuY2htYXJrLyBhcyBwZXJmb3JtYW5jZSB0
ZXN0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg3
ODkKKworICAgICAgICBSZXZpZXdlZCBieSBSeW9zdWtlIE5pd2EuCisKKyAgICAgICAgQWRkZWQg
UGVyZlRlc3RSdW5uZXIgZml4dHVyZSBhcm91bmQgaXQuCisKKyAgICAgICAgKiBBbmltYXRpb24v
YmFsbHMuaHRtbDogQWRkZWQuCisKIDIwMTItMDYtMTggIElseWEgVGlraG9ub3Zza3kgIDxsb2lz
bG9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IG5hdGl2ZSBtZW1vcnkg
c25hcHNob3QgcGVyZm9ybWFuY2UgYW5kIGNvdmVyYWdlIHRlc3QgaW1wbGVtZW50YXRpb24uCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>