<?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>43997</bug_id>
          
          <creation_ts>2010-08-13 16:48:34 -0700</creation_ts>
          <short_desc>add ability to test order-of-magnitude performance in layout tests</short_desc>
          <delta_ts>2012-01-05 10:28:20 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ojan Vafai">ojan</reporter>
          <assigned_to name="Ojan Vafai">ojan</assigned_to>
          <cc>abarth</cc>
    
    <cc>darin</cc>
    
    <cc>dpranke</cc>
    
    <cc>eric</cc>
    
    <cc>mjs</cc>
    
    <cc>noel.gordon</cc>
    
    <cc>rniwa</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>264545</commentid>
    <comment_count>0</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-13 16:48:34 -0700</bug_when>
    <thetext>add ability to test order-of-magnitude in layout tests</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264548</commentid>
    <comment_count>1</comment_count>
      <attachid>64389</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-13 16:56:01 -0700</bug_when>
    <thetext>Created attachment 64389
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264553</commentid>
    <comment_count>2</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-13 17:28:15 -0700</bug_when>
    <thetext>I&apos;m glad these tests work they way they do, but the ChangeLog gives little insight into how or why you&apos;re doing these tests. Is it your intent to have the magnitude script be used by various perf tests to test expected performance? Should there be a page on webkit.org or something explaining this? 

Maybe at least a reference to magnitude-perf.js should be included into the ChangeLog?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264555</commentid>
    <comment_count>3</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-13 17:32:40 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Is it your intent to have the magnitude script be used by various perf tests to test expected performance?

Yes. There&apos;s precedent for this kind of testing with dump-as-markup.js.

&gt; Should there be a page on webkit.org or something explaining this? 

Eventually yes. For now, I want to get it reviewed and into the code base and have a few people other than me write some tests to work out the kinks. Then I&apos;ll write something up and email webkit-dev.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>264559</commentid>
    <comment_count>4</comment_count>
    <who name="Dirk Pranke">dpranke</who>
    <bug_when>2010-08-13 17:34:43 -0700</bug_when>
    <thetext>groovy :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>266212</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-08-18 10:35:03 -0700</bug_when>
    <thetext>Committed r65614: &lt;http://trac.webkit.org/changeset/65614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529924</commentid>
    <comment_count>6</comment_count>
    <who name="noel gordon">noel.gordon</who>
    <bug_when>2012-01-04 18:05:56 -0800</bug_when>
    <thetext>perf/array-reverse.html seems flaky
  http://test-results.appspot.com/dashboards/flakiness_dashboard.html#group=%40ToT%20-%20webkit.org&amp;tests=perf%2Farray-reverse.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>530397</commentid>
    <comment_count>7</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-01-05 10:28:20 -0800</bug_when>
    <thetext>Marked flaky in http://trac.webkit.org/changeset/104177 .</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>64389</attachid>
            <date>2010-08-13 16:56:01 -0700</date>
            <delta_ts>2010-08-17 15:30:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-43997-20100813165559.patch</filename>
            <type>text/plain</type>
            <size>19543</size>
            <attacher name="Ojan Vafai">ojan</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBiNDI4NTNmYWIwODNkMWQ2ZDY5MzA5OTQxNGUzNTMwOGE3MTdjODA0Li5hMjUxNjU5
YzExMDQxMjZmYWJhNGNmNGE5ZmI3YmFiYTRiNTYwMzc3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDQgQEAK
KzIwMTAtMDgtMTMgIE9qYW4gVmFmYWkgIDxvamFuQGNocm9taXVtLm9yZz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBhZGQgYWJpbGl0eSB0byB0ZXN0
IG9yZGVyLW9mLW1hZ25pdHVkZSBpbiBsYXlvdXQgdGVzdHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTQzOTk3CisKKyAgICAgICAgVXNlcyB0aGUgUl4y
IHZhbHVlIHRvIGRldGVybWluZSBsaWtlbGlob29kIHRoZSBwZXJmb3JtYW5jZQorICAgICAgICBp
cyBsaW5lYXIgYW5kIHRoZW4gbG9ncyB0aGUgeCBhbmQgeSBheGlzIGFwcHJvcHJpYXRlbHkgdG8g
ZGV0ZXJtaW5lCisgICAgICAgIGxvZyBuIGFuZCBuXjIgY2FzZXMuIFRoZXNlIGFyZSBhbGwgZXN0
aW1hdGVzIHRob3VnaCwgc28gd2UgdHJ5CisgICAgICAgIHVwIHRvIHRocmVlIHRpbWVzIGlmIHdl
IGRvbid0IGdldCB0aGUgY29ycmVjdCBleHBlY3RlZCByZXN1bHQuCisKKyAgICAgICAgSW4gcHJh
Y3RpY2UsIHdpdGggdGhlIHRlc3RzIGJlbG93LCB3ZSBhbG1vc3QgYWx3YXlzIGdldCB0aGUgY29y
cmVjdAorICAgICAgICByZXN1bHQsIGJ1dCBzb21ldGltZXMgdGhlIE8oMSkgdGVzdHMgZ2V0IHJl
Z2lzdGVyZWQgYXMgTyhuKSBvciBpbmRldGVybWluYXRlLgorCisgICAgICAgICogcGVyZi9hcnJh
eS1iaW5hcnktc2VhcmNoLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGVyZi9hcnJh
eS1iaW5hcnktc2VhcmNoLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBlcmYvYXJyYXktbmVzdGVk
LWxvb3AtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBwZXJmL2FycmF5LW5lc3RlZC1s
b29wLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBlcmYvYXJyYXktcHVzaC1wb3AtZXhwZWN0ZWQu
dHh0OiBBZGRlZC4KKyAgICAgICAgKiBwZXJmL2FycmF5LXB1c2gtcG9wLmh0bWw6IEFkZGVkLgor
ICAgICAgICAqIHBlcmYvYXJyYXktcmV2ZXJzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIHBlcmYvYXJyYXktcmV2ZXJzZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwZXJmL29iamVj
dC1rZXlzLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogcGVyZi9vYmplY3Qta2V5cy5o
dG1sOiBBZGRlZC4KKyAgICAgICAgKiBwZXJmL3NldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKyAgICAgICAgKiBwZXJmL3NldC1hdHRyaWJ1dGUuaHRtbDogQWRkZWQuCisgICAgICAg
ICogcGVyZi90eXBpbmctYXQtZW5kLW9mLWxpbmUtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAg
ICAgKiBwZXJmL3R5cGluZy1hdC1lbmQtb2YtbGluZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBy
ZXNvdXJjZXMvbWFnbml0dWRlLXBlcmYuanM6IEFkZGVkLgorICAgICAgICAoTWFnbml0dWRlLmRl
c2NyaXB0aW9uKToKKyAgICAgICAgKE1hZ25pdHVkZS5fbG9nKToKKyAgICAgICAgKE1hZ25pdHVk
ZS5fZGVidWcpOgorICAgICAgICAoTWFnbml0dWRlLnJ1bik6CisgICAgICAgIChNYWduaXR1ZGUu
X3J1bik6CisgICAgICAgIChNYWduaXR1ZGUuX3JTcXVhcmVkKToKKyAgICAgICAgKE1hZ25pdHVk
ZS5fbG9nSXRlcmF0aW9uSW5mbyk6CisgICAgICAgIChNYWduaXR1ZGUuX2JpZ09HdWVzcyk6Cisg
ICAgICAgIChNYWduaXR1ZGUuX3J1bkl0ZXJhdGlvbik6CisgICAgICAgIChNYWduaXR1ZGUpOgor
CiAyMDEwLTA4LTA5ICBSeW9zdWtlIE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgogCiAgICAgICAg
IFJldmlld2VkIGJ5IEp1c3RpbiBHYXJjaWEuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wZXJm
L2FycmF5LWJpbmFyeS1zZWFyY2gtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGVyZi9hcnJh
eS1iaW5hcnktc2VhcmNoLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5mNTNlMDQyOWFjN2U4ZDMw
OGRhYjcyZjNjNDRiZDFlNDc1Y2RmOTA5Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
cGVyZi9hcnJheS1iaW5hcnktc2VhcmNoLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDMgQEAKK1Rl
c3RzIHRoYXQgYmluYXJ5IHNlYXJjaCBvdmVyIGFuIGFycmF5IGlzIGxvZ2FyaXRobWljLgorUEFT
UworCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wZXJmL2FycmF5LWJpbmFyeS1zZWFyY2guaHRt
bCBiL0xheW91dFRlc3RzL3BlcmYvYXJyYXktYmluYXJ5LXNlYXJjaC5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjMzZjQ3ZjE2MzllMDliZTdiZTIxZTFmMWQxNTg0NGU1OWE0OWMwMGUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wZXJmL2FycmF5LWJpbmFyeS1zZWFyY2guaHRtbApAQCAtMCwwICsx
LDQ4IEBACis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2VzL21hZ25pdHVkZS1wZXJmLmpzIj48L3Nj
cmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZXR1cEZ1bmN0aW9uKG1hZ25pdHVkZSkKK3sKKyAg
ICBhcnJheSA9IFtdOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbWFnbml0dWRlOyBpKyspIHsK
KyAgICAgICAgYXJyYXlbaV0gPSBpOworICAgIH0KK30KKworZnVuY3Rpb24gYmluYXJ5U2VhcmNo
KGFycnksIHZhbCkgeworICAgIGlmICghYXJyeS5sZW5ndGgpCisgICAgICAgIHJldHVybiAtMTsK
KyAgICByZXR1cm4gaGVscChhcnJ5LCB2YWwsIDAsIGFycnkubGVuZ3RoIC0gMSk7Cit9CisKK2Z1
bmN0aW9uIGhlbHAoYXJyeSwgdmFsLCBzdGFydCwgZW5kKSB7CisgICAgaWYgKGVuZCA9PSBzdGFy
dCkgeworICAgICAgICBpZiAoYXJyeVtlbmRdID09IHZhbCkKKyAgICAgICAgICAgIHJldHVybiBl
bmQ7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICB2
YXIgaW5kZXggPSBzdGFydCArIE1hdGguZmxvb3IoKGVuZCAtIHN0YXJ0KSAvIDIpOworICAgIGlm
IChhcnJ5W2luZGV4XSA9PSB2YWwpCisgICAgICAgIHJldHVybiBpbmRleDsKKworICAgIGlmIChh
cnJ5W2luZGV4XSA+IHZhbCkgeworICAgICAgICBpZiAoaW5kZXggPT0gc3RhcnQpCisgICAgICAg
ICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiBhcmd1bWVudHMuY2FsbGVlKGFycnksIHZh
bCwgc3RhcnQsIGluZGV4IC0gMSk7CisgICAgfQorCisgICAgaWYgKGluZGV4ID09IGVuZCkKKyAg
ICAgICAgcmV0dXJuIC0xOworCisgICAgcmV0dXJuIGFyZ3VtZW50cy5jYWxsZWUoYXJyeSwgdmFs
LCBpbmRleCArIDEsIGVuZCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QobWFnbml0dWRlKQoreworICAg
IGJpbmFyeVNlYXJjaChhcnJheSwgNSk7Cit9CisKK01hZ25pdHVkZS5kZXNjcmlwdGlvbigiVGVz
dHMgdGhhdCBiaW5hcnkgc2VhcmNoIG92ZXIgYW4gYXJyYXkgaXMgbG9nYXJpdGhtaWMuIik7CitN
YWduaXR1ZGUucnVuKHNldHVwRnVuY3Rpb24sIHRlc3QsIE1hZ25pdHVkZS5MT0dBUklUSE1JQyk7
Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BlcmYvYXJyYXktbmVzdGVkLWxv
b3AtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGVyZi9hcnJheS1uZXN0ZWQtbG9vcC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE2YzMxM2RjODdjYzRiNGZmNjdiMzQxYzc4YmNhZGEyM2I4
Y2ExYwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BlcmYvYXJyYXktbmVzdGVkLWxv
b3AtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdHMgdGhhdCBkb2luZyBhIG5lc3Rl
ZCBsb29wIG92ZXIgYW4gYXJyYXkgaXMgcXVhZHJhdGljLgorUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wZXJmL2FycmF5LW5lc3RlZC1sb29wLmh0bWwgYi9MYXlvdXRUZXN0cy9wZXJm
L2FycmF5LW5lc3RlZC1sb29wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGViNTIyMTIzN2U5MDBjZmRkOTNi
ZWYwZmE4OWVmMmJkNTVlZGI5YwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BlcmYv
YXJyYXktbmVzdGVkLWxvb3AuaHRtbApAQCAtMCwwICsxLDIyIEBACis8c2NyaXB0IHNyYz0iLi4v
cmVzb3VyY2VzL21hZ25pdHVkZS1wZXJmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlv
biBzZXR1cEZ1bmN0aW9uKG1hZ25pdHVkZSkKK3sKKyAgICBhcnJheSA9IFtdOworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgbWFnbml0dWRlOyBpKyspIHsKKyAgICAgICAgYXJyYXlbaV0gPSBpOwor
ICAgIH0KK30KKworZnVuY3Rpb24gdGVzdChtYWduaXR1ZGUpCit7CisgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCBhcnJheS5sZW5ndGg7IGkrKykgeworICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8
IGFycmF5Lmxlbmd0aDsgaisrKSB7CisgICAgICAgICAgICB2YXIgZm9vID0gYXJyYXlbaV0gKyBh
cnJheVtqXTsKKyAgICAgICAgfQorICAgIH0KK30KKworTWFnbml0dWRlLmRlc2NyaXB0aW9uKCJU
ZXN0cyB0aGF0IGRvaW5nIGEgbmVzdGVkIGxvb3Agb3ZlciBhbiBhcnJheSBpcyBxdWFkcmF0aWMu
Iik7CitNYWduaXR1ZGUucnVuKHNldHVwRnVuY3Rpb24sIHRlc3QsIE1hZ25pdHVkZS5QT0xZTk9N
SUFMKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGVyZi9hcnJheS1wdXNo
LXBvcC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wZXJmL2FycmF5LXB1c2gtcG9wLWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5kMDdkNGQ4YzMzYzViMzcyODJkYzUwNGE1MDNjODg0OTAzNWU4
MjJhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGVyZi9hcnJheS1wdXNoLXBvcC1l
eHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0cyB0aGF0IHB1c2hpbmcgYW5kIHBvcHBp
bmcgZnJvbSBhbiBhcnJheSBpcyBjb25zdGFudCB0aW1lLgorUEFTUworCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9wZXJmL2FycmF5LXB1c2gtcG9wLmh0bWwgYi9MYXlvdXRUZXN0cy9wZXJmL2Fy
cmF5LXB1c2gtcG9wLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWMxZjM0ZTYwZDk0M2JiMDc0ZjBhZGE1NzQ3
YWMzNmNiNDMxMjc2MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BlcmYvYXJyYXkt
cHVzaC1wb3AuaHRtbApAQCAtMCwwICsxLDE5IEBACis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21hZ25pdHVkZS1wZXJmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiBzZXR1cEZ1
bmN0aW9uKG1hZ25pdHVkZSkKK3sKKyAgICBhcnJheSA9IFtdOworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbWFnbml0dWRlOyBpKyspIHsKKyAgICAgICAgYXJyYXlbaV0gPSBpOworICAgIH0KK30K
KworZnVuY3Rpb24gdGVzdChtYWduaXR1ZGUpCit7CisgICAgYXJyYXkucHVzaCgxKTsKKyAgICBh
cnJheS5wb3AoKTsKK30KKworTWFnbml0dWRlLmRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IHB1c2hp
bmcgYW5kIHBvcHBpbmcgZnJvbSBhbiBhcnJheSBpcyBjb25zdGFudCB0aW1lLiIpOworTWFnbml0
dWRlLnJ1bihzZXR1cEZ1bmN0aW9uLCB0ZXN0LCBNYWduaXR1ZGUuQ09OU1RBTlQpOworPC9zY3Jp
cHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wZXJmL2FycmF5LXJldmVyc2UtZXhwZWN0ZWQu
dHh0IGIvTGF5b3V0VGVzdHMvcGVyZi9hcnJheS1yZXZlcnNlLWV4cGVjdGVkLnR4dApuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wMjlkNjlkZDg3NTdiYTQxMjU3OTMyYWM2N2MxZDIyNDEwOWI2NmJiCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvcGVyZi9hcnJheS1yZXZlcnNlLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKK1Rlc3RzIHRoYXQgQXJyYXkgcmV2ZXJzZSBpcyBsaW5lYXIuCitQQVNTCisK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BlcmYvYXJyYXktcmV2ZXJzZS5odG1sIGIvTGF5b3V0
VGVzdHMvcGVyZi9hcnJheS1yZXZlcnNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFmYzAzZWZlYjFkNTg5
YWVkNzczOTE3Y2M5OTVjZWM5OTNiZTUyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3BlcmYvYXJyYXktcmV2ZXJzZS5odG1sCkBAIC0wLDAgKzEsMTggQEAKKzxzY3JpcHQgc3JjPSIu
Li9yZXNvdXJjZXMvbWFnbml0dWRlLXBlcmYuanMiPjwvc2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0
aW9uIHNldHVwRnVuY3Rpb24obWFnbml0dWRlKQoreworICAgIGFycmF5ID0gW107CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBtYWduaXR1ZGU7IGkrKykgeworICAgICAgICBhcnJheVtpXSA9IGk7
CisgICAgfQorfQorCitmdW5jdGlvbiB0ZXN0KG1hZ25pdHVkZSkKK3sKKyAgICBhcnJheS5sYXN0
SW5kZXhPZigxKTsKK30KKworTWFnbml0dWRlLmRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0IEFycmF5
IHJldmVyc2UgaXMgbGluZWFyLiIpOworTWFnbml0dWRlLnJ1bihzZXR1cEZ1bmN0aW9uLCB0ZXN0
LCBNYWduaXR1ZGUuTElORUFSKTsKKzwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
cGVyZi9vYmplY3Qta2V5cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wZXJmL29iamVjdC1r
ZXlzLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44Zjc4OTFmZDU2ZjgzNGY4Zjk2MjNjNWQ5ZmM0
OTA1ZTJhZWUyYjJkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGVyZi9vYmplY3Qt
a2V5cy1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwzIEBACitUZXN0cyB0aGF0IE9iamVjdC5rZXlz
IGlzIGxpbmVhci4KK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGVyZi9vYmplY3Qt
a2V5cy5odG1sIGIvTGF5b3V0VGVzdHMvcGVyZi9vYmplY3Qta2V5cy5odG1sCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjdlZThmNjk1MmU1YzE4YjYyOWY0MGYzNzI2YzIwYzFhNmJmMjQxMzUKLS0tIC9kZXYvbnVsbAor
KysgYi9MYXlvdXRUZXN0cy9wZXJmL29iamVjdC1rZXlzLmh0bWwKQEAgLTAsMCArMSwxOCBAQAor
PHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWduaXR1ZGUtcGVyZi5qcyI+PC9zY3JpcHQ+Cis8
c2NyaXB0PgorZnVuY3Rpb24gc2V0dXBGdW5jdGlvbihtYWduaXR1ZGUpCit7CisgICAgb2JqID0g
e307CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBtYWduaXR1ZGU7IGkrKykgeworICAgICAgICBv
YmpbaV0gPSBpOworICAgIH0KK30KKworZnVuY3Rpb24gdGVzdChtYWduaXR1ZGUpCit7CisgICAg
T2JqZWN0LmtleXMob2JqKTsKK30KKworTWFnbml0dWRlLmRlc2NyaXB0aW9uKCJUZXN0cyB0aGF0
IE9iamVjdC5rZXlzIGlzIGxpbmVhci4iKTsKK01hZ25pdHVkZS5ydW4oc2V0dXBGdW5jdGlvbiwg
dGVzdCwgTWFnbml0dWRlLkxJTkVBUik7Cis8L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3BlcmYvc2V0LWF0dHJpYnV0ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wZXJmL3Nl
dC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmZiOGIwZmI3OWQyMTAyODNmODNi
YzVjNzg3Nzk0YmZiMmE5NDkxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9wZXJm
L3NldC1hdHRyaWJ1dGUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsMyBAQAorVGVzdHMgdGhhdCBz
ZXRBdHRyaWJ1dGUgaXMgY29uc3RhbnQgdGltZS4KK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGVyZi9zZXQtYXR0cmlidXRlLmh0bWwgYi9MYXlvdXRUZXN0cy9wZXJmL3NldC1hdHRy
aWJ1dGUuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi41MzQ4MDFiZjM2NDU1ZWI1YmU3ZDA4NWMxZWE4YzA4ZmIy
OTViNDNlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvcGVyZi9zZXQtYXR0cmlidXRl
Lmh0bWwKQEAgLTAsMCArMSwxOSBAQAorPHNjcmlwdCBzcmM9Ii4uL3Jlc291cmNlcy9tYWduaXR1
ZGUtcGVyZi5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgordmFyIGtleSA9ICdjb3VudGVyJzsKKwor
ZnVuY3Rpb24gc2V0dXBGdW5jdGlvbihtYWduaXR1ZGUpCit7CisgICAgZWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOworICAgIGNvdW50ZXIgPSAwOworfQorCitmdW5jdGlv
biB0ZXN0KG1hZ25pdHVkZSkKK3sKKyAgICBlbGVtZW50LnNldEF0dHJpYnV0ZShrZXksIGNvdW50
ZXIgPyBjb3VudGVyLS0gOiBjb3VudGVyKyspOworfQorCitNYWduaXR1ZGUuZGVzY3JpcHRpb24o
IlRlc3RzIHRoYXQgc2V0QXR0cmlidXRlIGlzIGNvbnN0YW50IHRpbWUuIik7CitNYWduaXR1ZGUu
cnVuKHNldHVwRnVuY3Rpb24sIHRlc3QsIE1hZ25pdHVkZS5DT05TVEFOVCk7Cis8L3NjcmlwdD4K
KzwvYm9keT4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9wZXJmL3R5cGluZy1hdC1lbmQtb2YtbGluZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9wZXJmL3R5cGluZy1hdC1lbmQtb2YtbGluZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNTRk
NmY3YTA2MzQ4MTFjNjg5ODE4Y2YxMGVjNDExNTAyZDE0NDlhYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3BlcmYvdHlwaW5nLWF0LWVuZC1vZi1saW5lLWV4cGVjdGVkLnR4dApAQCAt
MCwwICsxLDMgQEAKK1Rlc3RzIHRoYXQgdHlwaW5nIGF0IHRoZSBlbmQgb2YgYSBsaW5lIHdoZXJl
IHRoZSBsaW5lLWJyZWFrcyBhcmUgYWxsIEJScyBpcyBsaW5lYXIgaW4gdGhlIG51bWJlciBvZiBs
aW5lcy4KK1BBU1MKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGVyZi90eXBpbmctYXQtZW5k
LW9mLWxpbmUuaHRtbCBiL0xheW91dFRlc3RzL3BlcmYvdHlwaW5nLWF0LWVuZC1vZi1saW5lLmh0
bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTU3MjNmYWE3OGE2YWMxMjJkMGRiMTlkN2Y2NjJkNmRiNjE3OTFmMwot
LS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BlcmYvdHlwaW5nLWF0LWVuZC1vZi1saW5l
Lmh0bWwKQEAgLTAsMCArMSwzMiBAQAorPGJvZHk+Cis8c2NyaXB0IHNyYz0iLi4vcmVzb3VyY2Vz
L21hZ25pdHVkZS1wZXJmLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+Citkb2N1bWVudC5kZXNpZ25N
b2RlID0gJ29uJzsKKworZnVuY3Rpb24gcGxhY2VTZWxlY3Rpb25BZnRlckZpcnN0QnIoKQorewor
ICAgIHZhciBjaGlsZHJlbiA9IGRvY3VtZW50LmJvZHkuY2hpbGROb2RlczsKKyAgICBmb3IgKHZh
ciBpID0gMCwgbGVuID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAg
aWYgKGNoaWxkcmVuW2ldLmxvY2FsTmFtZSA9PSAnYnInKSB7CisgICAgICAgICAgICB3aW5kb3cu
Z2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFuZEV4dGVudChkb2N1bWVudC5ib2R5LCBpLCBkb2N1bWVu
dC5ib2R5LCBpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0KK30KKwor
ZnVuY3Rpb24gc2V0dXBGdW5jdGlvbihtYWduaXR1ZGUpCit7CisgICAgZG9jdW1lbnQuYm9keS5p
bm5lckhUTUwgPSBuZXcgQXJyYXkobWFnbml0dWRlICsgMSkuam9pbignYTxicj4nKTsKKyAgICBw
bGFjZVNlbGVjdGlvbkFmdGVyRmlyc3RCcigpOworfQorCitmdW5jdGlvbiB0ZXN0KG1hZ25pdHVk
ZSkKK3sKKyAgICBpZiAod2luZG93LmV2ZW50U2VuZGVyKQorICAgICAgICBldmVudFNlbmRlci5r
ZXlEb3duKCd6Jyk7Cit9CisKK01hZ25pdHVkZS5kZXNjcmlwdGlvbigiVGVzdHMgdGhhdCB0eXBp
bmcgYXQgdGhlIGVuZCBvZiBhIGxpbmUgd2hlcmUgdGhlIGxpbmUtYnJlYWtzIGFyZSBhbGwgQlJz
IGlzIGxpbmVhciBpbiB0aGUgbnVtYmVyIG9mIGxpbmVzLiIpOworTWFnbml0dWRlLnJ1bihzZXR1
cEZ1bmN0aW9uLCB0ZXN0LCBNYWduaXR1ZGUuTElORUFSKTsKKzwvc2NyaXB0PgorPC9ib2R5Pgpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcmVzb3VyY2VzL21hZ25pdHVkZS1wZXJmLmpzIGIvTGF5
b3V0VGVzdHMvcmVzb3VyY2VzL21hZ25pdHVkZS1wZXJmLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE4YzcyNzM4
ZjYzYTRjZWFjYmJhM2M1ZDE4MDBlMjQ2M2VmZGVhOTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlv
dXRUZXN0cy9yZXNvdXJjZXMvbWFnbml0dWRlLXBlcmYuanMKQEAgLTAsMCArMSwyMjMgQEAKKy8v
IE1hZ25pdHVkZSBnaXZlcyBhIGJlc3QgZ3Vlc3MgZXN0aW1hdGUgb2YgdGhlIHJ1bnRpbWUgb2Yg
YSBmdW5jdGlvbi4KKy8vIE1hZ25pdHVkZS5ydW4gY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1l
cyBpbiBhIHNpbmdsZSB0ZXN0IGlmIGRlc2lyZWQuCisvLworLy8gVXNhZ2U6CisvLyA8c2NyaXB0
IHNyYz0iLi4vcmVzb3VyY2VzL21hZ25pdHVkZS1wZXJmLmpzIj48L3NjcmlwdD4KKy8vIDxzY3Jp
cHQ+CisvLyAuLi4KKy8vIE1hZ25pdHVkZS5ydW4oc2V0dXAsIHRlc3QsIGV4cGVjdGVkKQorLy8g
PC9zY3JpcHQ+CisvLworLy8gLXNldHVwIGlzIHRoZSBmdW5jdGlvbiB0byBydW4gb25jZSBiZWZv
cmUgdGhlIHRlc3QtbG9vcC4gSXQgdGFrZXMgYSBtYWduaXR1ZGUgYXJndW1lbnQKKy8vIHRoYXQg
aXMgdGhlIHZhbHVlIG9mICJuIi4KKy8vIC10ZXN0IGlzIHRoZSBjb2RlIHdob3NlIHJ1bnRpbWUg
aXMgYmVpbmcgdGVzdHMuIEl0IGFsc28gdGFrZXMgYSBtYWduaXR1ZGUgYXJndW1lbnQuCisvLyAt
ZXhwZWN0ZWQgaXMgb25lIG9mIHRoZSBydW4tdGltZSBjb25zdGFudHMgbGlzdGVkIGJlbG93IChl
LmcuIE1hZ25pdHVkZS5DT05TVEFOVCkuCisKK2lmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xs
ZXIpCisgICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgpOworCisvLyBOYW1lc3Bh
Y2UuCit2YXIgTWFnbml0dWRlID0ge307CisKKy8vIFRoZSBkZXNjcmlwdGlvbiBvZiB3aGF0IHRo
aXMgdGVzdCBpcyB0ZXN0aW5nLiBHZXRzIHByZXBlbmRlZCB0byB0aGUgZHVtcGVkIG1hcmt1cC4K
K01hZ25pdHVkZS5kZXNjcmlwdGlvbiA9IGZ1bmN0aW9uKGRlc2NyaXB0aW9uKQoreworICAgIE1h
Z25pdHVkZS5fbG9nKGRlc2NyaXB0aW9uKTsKK30KKworTWFnbml0dWRlLl9udW1Qb2ludHMgPSAx
MDsKK01hZ25pdHVkZS5fbWluSXRlcmF0aW9ucyA9IDU7CitNYWduaXR1ZGUuX21heEl0ZXJhdGlv
bnMgPSAxMDAwOworCitNYWduaXR1ZGUuQ09OU1RBTlQgPSAiTygxKSI7CitNYWduaXR1ZGUuTElO
RUFSID0gIk8obikiOworTWFnbml0dWRlLkxPR0FSSVRITUlDID0gIk8obG9nIG4pIjsKK01hZ25p
dHVkZS5QT0xZTk9NSUFMID0gIj49TyhuXjIpIjsKK01hZ25pdHVkZS5JTkRFVEVSTUlOQVRFID0g
ImluZGV0ZXJtaW5hdGUgcmVzdWx0IjsKKworTWFnbml0dWRlLl9sb2cgPSBmdW5jdGlvbihtc2cp
Cit7CisgICAgaWYgKCFNYWduaXR1ZGUuX2NvbnRhaW5lcikKKyAgICAgICAgTWFnbml0dWRlLl9j
b250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdwcmUnKTsKKyAgICBNYWduaXR1ZGUu
X2NvbnRhaW5lci5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShtc2cgKyAnXG4n
KSk7Cit9CisKK01hZ25pdHVkZS5fZGVidWcgPSBmdW5jdGlvbihtc2cpCit7CisgICAgTWFnbml0
dWRlLl9kZWJ1Z0xvZyArPSBtc2cgKyAnXG4nOworfQorCitNYWduaXR1ZGUucnVuID0gZnVuY3Rp
b24oc2V0dXAsIHRlc3QsIGV4cGVjdGVkKQoreworICAgIE1hZ25pdHVkZS5fZGVidWdMb2cgPSAi
XG5ERUJVRyBMT0c6XG4iOworCisgICAgTWFnbml0dWRlLl9tYWduaXR1ZGVzID0gW107CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBNYWduaXR1ZGUuX251bVBvaW50czsgaSsrKSB7CisgICAgICAg
IE1hZ25pdHVkZS5fbWFnbml0dWRlcy5wdXNoKE1hdGgucG93KDIsIGkpKTsKKyAgICB9CisKKyAg
ICB2YXIgbWlsbGlzZWNvbmRzID0gNTA7CisgICAgdmFyIHJ1bnNQZXJJdGVyYXRpb24gPSAxOwor
ICAgIHZhciBudW1UcmllcyA9IDM7CisgICAgTWFnbml0dWRlLl9ydW4oc2V0dXAsIHRlc3QsIGV4
cGVjdGVkLCBtaWxsaXNlY29uZHMsIHJ1bnNQZXJJdGVyYXRpb24sIG51bVRyaWVzKTsKK30KKwor
TWFnbml0dWRlLl9ydW4gPSBmdW5jdGlvbihzZXR1cCwgdGVzdCwgZXhwZWN0ZWQsIG1pbGxpc2Vj
b25kcywgcnVuc1Blckl0ZXJhdGlvbiwgbnVtVHJpZXNMZWZ0KQoreworICAgIE1hZ25pdHVkZS5f
aXRlcmF0aW9ucyA9IHt9OworICAgIHZhciBtYXhNYWduaXR1ZGUgPSBNYWduaXR1ZGUuX21hZ25p
dHVkZXNbTWFnbml0dWRlLl9tYWduaXR1ZGVzLmxlbmd0aCAtIDFdOworCisgICAgLy8gV2Ugd2Fu
dCB0aGUgbGFyZ2VzdCBtYWduaXR1ZGUgdG8gZG8gYmV0d2VlbiBNYWduaXR1ZGUuX21pbkl0ZXJh
dGlvbnMgYW5kIE1hZ25pdHVkZS5fbWF4SXRlcmF0aW9ucyBpdGVyYXRpb25zLgorICAgIC8vIElm
IGl0J3MgdG9vIGZhc3QsIHdlIGluY3JlYXNlIHRoZSBydW5zUGVySXRlcmF0aW9uIHRvIGRvIG1v
cmUgcnVucyBwZXIgaXRlcmF0aW9uLgorICAgIC8vIElmIGl0J3MgdG9vIHNsb3csIHdlIGluY3Jl
YXNlIG1pbGxpc2Vjb25kcyB0byBnaXZlIGVhY2ggaXRlcmF0aW9uIG1vcmUgdGltZS4KKyAgICB3
aGlsZSAodHJ1ZSkgeworICAgICAgICB2YXIgaXRlcmF0aW9ucyA9IE1hZ25pdHVkZS5fcnVuSXRl
cmF0aW9uKHNldHVwLCB0ZXN0LCBtYXhNYWduaXR1ZGUsIG1pbGxpc2Vjb25kcywgcnVuc1Blckl0
ZXJhdGlvbik7CisgICAgICAgIE1hZ25pdHVkZS5fZGVidWcoIml0ZXJhdGlvbnMgIiArIGl0ZXJh
dGlvbnMpOworCisgICAgICAgIC8vIElmIHdlIGdldCB0b28gZmV3IG9yIHRvbyBtYW55IG9uIHRo
ZSBsYXJnZXN0IG1hZ25pdHVkZSBpdGVyYXRpb25zLCB0aGVuIHdlIGNhbid0IHRydXN0IHRoaXMg
cnVuLgorICAgICAgICAvLyBUb28gbWFueSBydW5zIG1lYW5zIHRoZSB0aGUgdGVzdCBsb29wIGl0
c2VsZiBtYXkgYmUgdGFraW5nIG1vcmUgdGltZSB0aGFuIHJ1bm5pbmcgdGhlIHRlc3QuCisgICAg
ICAgIGlmIChpdGVyYXRpb25zIDw9IE1hZ25pdHVkZS5fbWluSXRlcmF0aW9ucykKKyAgICAgICAg
ICAgIG1pbGxpc2Vjb25kcyA9IE1hdGgubWF4KDIsIE1hdGguZmxvb3IoTWFnbml0dWRlLl9taW5J
dGVyYXRpb25zIC8gaXRlcmF0aW9ucykpICogbWlsbGlzZWNvbmRzOworICAgICAgICBlbHNlIGlm
IChpdGVyYXRpb25zID4gTWFnbml0dWRlLl9tYXhJdGVyYXRpb25zKQorICAgICAgICAgICAgcnVu
c1Blckl0ZXJhdGlvbiA9IE1hdGgubWF4KDIsIE1hdGguZmxvb3IoaXRlcmF0aW9ucyAvIE1hZ25p
dHVkZS5fbWF4SXRlcmF0aW9ucykpICogcnVuc1Blckl0ZXJhdGlvbjsKKyAgICAgICAgZWxzZSB7
CisgICAgICAgICAgICBNYWduaXR1ZGUuX2l0ZXJhdGlvbnNbbWF4TWFnbml0dWRlXSA9IGl0ZXJh
dGlvbnM7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgTWFnbml0dWRlLl9tYWduaXR1ZGVzLmxlbmd0aCAtIDE7IGkrKykgewor
ICAgICAgICB2YXIgbWFnbml0dWRlID0gTWFnbml0dWRlLl9tYWduaXR1ZGVzW2ldOworICAgICAg
ICBNYWduaXR1ZGUuX2l0ZXJhdGlvbnNbbWFnbml0dWRlXSA9IE1hZ25pdHVkZS5fcnVuSXRlcmF0
aW9uKHNldHVwLCB0ZXN0LCBtYWduaXR1ZGUsIG1pbGxpc2Vjb25kcywgcnVuc1Blckl0ZXJhdGlv
bik7CisgICAgfQorCisgICAgTWFnbml0dWRlLl9sb2dJdGVyYXRpb25JbmZvKG1pbGxpc2Vjb25k
cywgcnVuc1Blckl0ZXJhdGlvbik7CisKKyAgICBudW1Ucmllc0xlZnQtLTsKKyAgICB2YXIgYmln
TyA9IE1hZ25pdHVkZS5fYmlnT0d1ZXNzKG1pbGxpc2Vjb25kcyk7CisgICAgaWYgKGJpZ08gPT0g
ZXhwZWN0ZWQgfHwgbnVtVHJpZXNMZWZ0IDwgMSkgeworICAgICAgICBNYWduaXR1ZGUuX2xvZyhi
aWdPID09IGV4cGVjdGVkID8gIlBBU1MiIDogIkZBSUw6IGdvdCAiICsgYmlnTyArICIgZXhwZWN0
ZWQgIiArIGV4cGVjdGVkKTsKKworICAgICAgICAvLyBCeSBkZWZhdWx0IGRvbid0IGxvZyBkZXRh
aWxlZCBpbmZvcm1hdGlvbiB0byBsYXlvdXQgdGVzdCByZXN1bHRzIHRvIGtlZXAgZXhwZWN0ZWQg
cmVzdWx0cworICAgICAgICAvLyBjb25zaXN0ZW50IGZyb20gcnVuIHRvIHJ1bi4KKyAgICAgICAg
aWYgKCF3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIgfHwgYmlnTyAhPSBleHBlY3RlZCkKKyAg
ICAgICAgICAgIE1hZ25pdHVkZS5fbG9nKE1hZ25pdHVkZS5fZGVidWdMb2cpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIE1hZ25pdHVkZS5fZGVidWcoIm51bVRyaWVzTGVmdDogIiArIG51bVRyaWVz
TGVmdCk7CisgICAgICAgIGFyZ3VtZW50cy5jYWxsZWUoc2V0dXAsIHRlc3QsIGV4cGVjdGVkLCBt
aWxsaXNlY29uZHMsIHJ1bnNQZXJJdGVyYXRpb24sIG51bVRyaWVzTGVmdCk7CisgICAgfQorfQor
CitNYWduaXR1ZGUuX3JTcXVhcmVkID0gZnVuY3Rpb24obWlsbGlzZWNvbmRzLCBvcHRfeFRyYW5z
Zm9ybSwgb3B0X3lUcmFuc2Zvcm0pCit7CisgICAgLy8gSW1wbGVtZW50IGh0dHA6Ly93d3cuZWFz
eWNhbGN1bGF0aW9uLmNvbS9zdGF0aXN0aWNzL2xlYXJuLWNvcnJlbGF0aW9uLnBocC4KKyAgICAv
LyB4ID0gbWFnbml0dWRlCisgICAgLy8geSA9IGl0ZXJhdGlvbnMKKyAgICB2YXIgc3VtWCA9IDA7
CisgICAgdmFyIHN1bVkgPSAwOworICAgIHZhciBzdW1YU3F1YXJlZCA9IDA7CisgICAgdmFyIHN1
bVlTcXVhcmVkID0gMDsKKyAgICB2YXIgc3VtWFRpbWVzWSA9IDA7CisKKyAgICB2YXIgbnVtUG9p
bnRzID0gTWFnbml0dWRlLl9tYWduaXR1ZGVzLmxlbmd0aDsKKworICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgbnVtUG9pbnRzOyBpKyspIHsKKyAgICAgICAgdmFyIHggPSBNYWduaXR1ZGUuX21hZ25p
dHVkZXNbaV07CisgICAgICAgIGlmIChvcHRfeFRyYW5zZm9ybSkKKyAgICAgICAgICAgIHggPSBv
cHRfeFRyYW5zZm9ybSh4KTsKKworICAgICAgICB2YXIgeSA9IG1pbGxpc2Vjb25kcyAvIE1hZ25p
dHVkZS5faXRlcmF0aW9uc1tNYWduaXR1ZGUuX21hZ25pdHVkZXNbaV1dOworICAgICAgICBpZiAo
b3B0X3lUcmFuc2Zvcm0pCisgICAgICAgICAgICB5ID0gb3B0X3lUcmFuc2Zvcm0oeSk7CisKKyAg
ICAgICAgc3VtWCArPSB4OworICAgICAgICBzdW1ZICs9IHk7CisgICAgICAgIHN1bVhTcXVhcmVk
ICs9IHggKiB4OworICAgICAgICBzdW1ZU3F1YXJlZCArPSB5ICogeTsKKyAgICAgICAgc3VtWFRp
bWVzWSArPSB4ICogeTsKKyAgICB9CisKKyAgICB2YXIgciA9IChudW1Qb2ludHMgKiBzdW1YVGlt
ZXNZIC0gc3VtWCAqIHN1bVkpIC8KKyAgICAgICAgTWF0aC5zcXJ0KChudW1Qb2ludHMgKiBzdW1Y
U3F1YXJlZCAtIHN1bVggKiBzdW1YKSAqCisgICAgICAgICAgICAgICAgICAobnVtUG9pbnRzICog
c3VtWVNxdWFyZWQgLSBzdW1ZICogc3VtWSkpOworCisgICAgaWYgKGlzTmFOKHIpIHx8IHIgPT0g
TWF0aC5JbmZpbml0eSkKKyAgICAgICAgciA9IDA7CisKKyAgICByU3F1YXJlZCA9IHIgKiByOwor
CisgICAgdmFyIHNsb3BlID0gKG51bVBvaW50cyAqIHN1bVhUaW1lc1kgLSBzdW1YICogc3VtWSkg
LworICAgICAgICAobnVtUG9pbnRzICogc3VtWFNxdWFyZWQgLSBzdW1YICogc3VtWCk7CisgICAg
dmFyIGludGVyY2VwdCA9IHN1bVkgLyBudW1Qb2ludHMgLSBzbG9wZSAqIHN1bVggLyBudW1Qb2lu
dHM7CisgICAgTWFnbml0dWRlLl9kZWJ1ZygibnVtUG9pbnRzICIgKyBudW1Qb2ludHMgKyAiIHNs
b3BlICIgKyBzbG9wZSArICIgaW50ZXJjZXB0ICIgKyBpbnRlcmNlcHQgKyAiIHJTcXVhcmVkICIg
KyByU3F1YXJlZCk7CisKKyAgICByZXR1cm4gclNxdWFyZWQ7Cit9CisKK01hZ25pdHVkZS5fbG9n
SXRlcmF0aW9uSW5mbyA9IGZ1bmN0aW9uKG1pbGxpc2Vjb25kcywgcnVuc1Blckl0ZXJhdGlvbikK
K3sKKyAgICB2YXIgaXRlcmF0aW9uc0FycmF5ID0gW107CisgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBNYWduaXR1ZGUuX21hZ25pdHVkZXMubGVuZ3RoOyBpKyspIHsKKyAgICAgICAgdmFyIG1hZ25p
dHVkZSA9IE1hZ25pdHVkZS5fbWFnbml0dWRlc1tpXTsKKyAgICAgICAgdmFyIGl0ZXJhdGlvbnMg
PSBNYWduaXR1ZGUuX2l0ZXJhdGlvbnNbbWFnbml0dWRlXTsKKyAgICAgICAgaXRlcmF0aW9uc0Fy
cmF5LnB1c2goaXRlcmF0aW9ucyk7CisgICAgICAgIE1hZ25pdHVkZS5fZGVidWcoIm1hZ25pdHVk
ZTogIiArIG1hZ25pdHVkZSArICIgaXRlcmF0aW9uczogIiArIGl0ZXJhdGlvbnMgKyAiIHJ1bnNQ
ZXJJdGVyYXRpb24gIiArIHJ1bnNQZXJJdGVyYXRpb24gKworICAgICAgICAgICAgICAgICIgbG9v
cC10aW1lICIgKyBtaWxsaXNlY29uZHMgKyAiIHRpbWUvaXRlcmF0aW9uKG1zKTogIiArIG1pbGxp
c2Vjb25kcyAvIGl0ZXJhdGlvbnMpOworICAgIH0KKworICAgIC8vIFByaW50IG91dCB0aGUgbWFn
bml0dWRlcy9hcnJheXMgaW4gQ1NWIHRvIGFmZm9yZCBlYXN5IGNvcHktcGFzdGUgdG8gYSBjaGFy
dGluZyBhcHBsaWNhdGlvbi4KKyAgICBNYWduaXR1ZGUuX2RlYnVnKCJtYWduaXR1ZGVzOiAiICsg
TWFnbml0dWRlLl9tYWduaXR1ZGVzLmpvaW4oJywnKSk7CisgICAgTWFnbml0dWRlLl9kZWJ1Zygi
aXRlcmF0aW9uczogIiArIGl0ZXJhdGlvbnNBcnJheS5qb2luKCcsJykpOworICAgIE1hZ25pdHVk
ZS5fZGVidWcoIm1pbGxpc2Vjb25kcy9pdGVyYXRpb246ICIgKyBpdGVyYXRpb25zQXJyYXkubWFw
KGZ1bmN0aW9uKGl0ZXJhdGlvbnMpIHtyZXR1cm4gbWlsbGlzZWNvbmRzIC8gaXRlcmF0aW9uc30p
LmpvaW4oJywnKSk7Cit9CisKK01hZ25pdHVkZS5fYmlnT0d1ZXNzID0gZnVuY3Rpb24obWlsbGlz
ZWNvbmRzKQoreworICAgIHZhciByU3F1YXJlZCA9IE1hZ25pdHVkZS5fclNxdWFyZWQobWlsbGlz
ZWNvbmRzKTsKKyAgICB2YXIgclNxdWFyZWRYTG9nID0gTWFnbml0dWRlLl9yU3F1YXJlZChtaWxs
aXNlY29uZHMsIE1hdGgubG9nKTsKKyAgICB2YXIgclNxdWFyZWRYWUxvZyA9IE1hZ25pdHVkZS5f
clNxdWFyZWQobWlsbGlzZWNvbmRzLCBNYXRoLmxvZywgTWF0aC5sb2cpOworICAgIE1hZ25pdHVk
ZS5fZGVidWcoInJTcXVhcmVkICIgKyByU3F1YXJlZCArICIgclNxdWFyZWRYTG9nICIgKyByU3F1
YXJlZFhMb2cgKyAiIHJTcXVhcmVkWFlMb2cgIiArIHJTcXVhcmVkWFlMb2cpOworCisgICAgdmFy
IHJTcXVhcmVkTWF4ID0gTWF0aC5tYXgoclNxdWFyZWQsIHJTcXVhcmVkWExvZywgclNxdWFyZWRY
WUxvZyk7CisKKyAgICB2YXIgYmlnTyA9IE1hZ25pdHVkZS5JTkRFVEVSTUlOQVRFOworCisgICAg
Ly8gRklYTUU6IFRoZXNlIG51bWJlcnMgd2VyZSBjaG9zZW4gYXJiaXRyYXJpbHkuCisgICAgLy8g
QXJlIHRoZXJlIGEgYmV0dGVyIHZhbHVlIHRvIGNoZWNrIGFnYWluc3Q/IERvIHdlIG5lZWQgdG8g
Y2hlY2sgclNxdWFyZWRNYXg/CisgICAgaWYgKHJTcXVhcmVkIDwgMC44ICYmIHJTcXVhcmVkTWF4
IDwgMC45KQorICAgICAgICBiaWdPID0gTWFnbml0dWRlLkNPTlNUQU5UOworICAgIGVsc2UgaWYg
KHJTcXVhcmVkTWF4ID4gMC45KSB7CisgICAgICAgIGlmIChyU3F1YXJlZCA9PSByU3F1YXJlZE1h
eCkKKyAgICAgICAgICAgIGJpZ08gPSBNYWduaXR1ZGUuTElORUFSOworICAgICAgICBlbHNlIGlm
IChyU3F1YXJlZFhMb2cgPT0gclNxdWFyZWRNYXgpCisgICAgICAgICAgICBiaWdPID0gTWFnbml0
dWRlLkxPR0FSSVRITUlDOworICAgICAgICBlbHNlIGlmIChyU3F1YXJlZFhZTG9nID09IHJTcXVh
cmVkTWF4KQorICAgICAgICAgICAgYmlnTyA9IE1hZ25pdHVkZS5QT0xZTk9NSUFMOworICAgIH0K
KworICAgIHJldHVybiBiaWdPOworfQorCitNYWduaXR1ZGUuX3J1bkl0ZXJhdGlvbiA9IGZ1bmN0
aW9uKHNldHVwLCB0ZXN0LCBtYWduaXR1ZGUsIG1pbGxpc2Vjb25kcywgcnVuc1Blckl0ZXJhdGlv
bikKK3sKKyAgICBNYWduaXR1ZGUuX2RlYnVnKCdydW4gaXRlcmF0aW9uLiBtYWduaXR1ZGUgJyAr
IG1hZ25pdHVkZSArICIgbWlsbGlzZWNvbmRzICIgKyBtaWxsaXNlY29uZHMgKyAiIHJ1bnNQZXJJ
dGVyYXRpb24gIiArIHJ1bnNQZXJJdGVyYXRpb24pOworICAgIHNldHVwKG1hZ25pdHVkZSk7CisK
KyAgICB2YXIgc3RhcnQgPSBEYXRlLm5vdygpOworICAgIHZhciBpdGVyYXRpb25zID0gMDsKKyAg
ICB3aGlsZSAoRGF0ZS5ub3coKSAtIHN0YXJ0IDwgbWlsbGlzZWNvbmRzKSB7CisgICAgICAgIC8v
IExvb3AgcnVuc1Blckl0ZXJhdGlvbiB0aW1lcyB0byByZWR1Y2UgZXJyb3JzIGR1ZSB0byB0aGUg
b3ZlcmhlYWQgYW5kIGdyYW51bGFyaXR5IG9mIHRoZSBEYXRlIG9iamVjdC4KKyAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBydW5zUGVySXRlcmF0aW9uOyBpKyspIHsKKyAgICAgICAgICAgIHRl
c3QobWFnbml0dWRlKTsKKyAgICAgICAgfQorICAgICAgICBpdGVyYXRpb25zKys7CisgICAgfQor
ICAgIHJldHVybiBpdGVyYXRpb25zOworfQorCit3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignbG9h
ZCcsIGZ1bmN0aW9uKCkgeworICAgIC8vIEZJWE1FOiBBZGQgTWFnbml0dWRlLndhaXRVbnRpbERv
bmUvbm90aWZ5RG9uZSBmb3IgdGVzdHMgdGhhdCBuZWVkIHRvIG9wZXJhdGUgYWZ0ZXIgdGhlIGxv
YWQgZXZlbnQgaGFzIGZpcmVkLgorICAgIGlmICh3aW5kb3cubGF5b3V0VGVzdENvbnRyb2xsZXIp
CisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJIVE1MID0gJyc7CisgICAgZG9jdW1lbnQuYm9k
eS5hcHBlbmRDaGlsZChNYWduaXR1ZGUuX2NvbnRhaW5lcik7Cit9LCBmYWxzZSk7Cg==
</data>
<flag name="review"
          id="52941"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>