<?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>60441</bug_id>
          
          <creation_ts>2011-05-07 15:58:57 -0700</creation_ts>
          <short_desc>Testing EWS spins on patches with a large number of failures</short_desc>
          <delta_ts>2011-05-07 19:50:46 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Adam Barth">abarth</reporter>
          <assigned_to name="Adam Barth">abarth</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>400114</commentid>
    <comment_count>0</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-07 15:58:57 -0700</bug_when>
    <thetext>Testing EWS spins on patches with a large number of failures</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400116</commentid>
    <comment_count>1</comment_count>
      <attachid>92699</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-07 16:04:20 -0700</bug_when>
    <thetext>Created attachment 92699
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400127</commentid>
    <comment_count>2</comment_count>
      <attachid>92699</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-07 16:41:09 -0700</bug_when>
    <thetext>Comment on attachment 92699
Patch

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

I think this is a great change, but I would like to see anothe rround.

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:33
&gt; +        self._failures_bounded = True

_failures_are_bounded would be better.  We need to clarify that this means that we can&apos;t use the _failures() set.  That we&apos;re treating the set of failures as infinite.  That was not clear in my first reading of this patch.

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:36
&gt; +    def _has_results(self, results):
&gt; +        return bool(results and len(results.failing_tests()) != 0)

I think you should call this _has_failures instead of _has_results

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:39
&gt; +        return bool(results.failure_limit_count() and len(results.failing_tests()) &lt; results.failure_limit_count())

maybe assert(results)?

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:41
&gt; +    def _has_trustworthy_results(self, results):

I would have left this as _can_trust_results (since I don&apos;t think the other two methods are really _results methods, but rather _failures methods.)

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:45
&gt; +        if not self._has_trustworthy_results(results):

You should note here why failures_were_expected does not need to check _failures_are_bounded.  I believe it&apos;s because we&apos;ll &quot;incorrectly&quot; return false negatives in the unbounded failures case, but our callers won&apos;t care.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400132</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-07 17:12:53 -0700</bug_when>
    <thetext>&gt; &gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:45
&gt; &gt; +        if not self._has_trustworthy_results(results):
&gt; 
&gt; You should note here why failures_were_expected does not need to check _failures_are_bounded.  I believe it&apos;s because we&apos;ll &quot;incorrectly&quot; return false negatives in the unbounded failures case, but our callers won&apos;t care.

I added the check.  I don&apos;t think it matters much either way.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400133</commentid>
    <comment_count>4</comment_count>
      <attachid>92701</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-07 17:14:08 -0700</bug_when>
    <thetext>Created attachment 92701
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400175</commentid>
    <comment_count>5</comment_count>
      <attachid>92701</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-07 19:43:01 -0700</bug_when>
    <thetext>Comment on attachment 92701
Patch

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

I think we need more testing here.  Again, the concept looks good.  It&apos;s a bit odd that we&apos;re storing the failure_limit outside this class, but kinda necessary.

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:40
&gt; +    def _has_bounded_results(self, results):

I would name this has_bounded_failures since it deals with failures.  But it&apos;s true, that failures is the way we limit results these days.

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:48
&gt; +        if not self._can_trust_results(results) or not self._failures_are_bounded:

Is this intentional?  Seems we want to test this.

&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:66
&gt; +            self._failures_are_bounded = True

_failures_are_bounded = False if we can&apos;t trust resutls here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400176</commentid>
    <comment_count>6</comment_count>
      <attachid>92701</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-07 19:45:28 -0700</bug_when>
    <thetext>Comment on attachment 92701
Patch

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

&gt;&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:40
&gt;&gt; +    def _has_bounded_results(self, results):
&gt; 
&gt; I would name this has_bounded_failures since it deals with failures.  But it&apos;s true, that failures is the way we limit results these days.

Done.

&gt;&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:48
&gt;&gt; -        if not self._can_trust_results(results):
&gt;&gt; +        if not self._can_trust_results(results) or not self._failures_are_bounded:
&gt; 
&gt; Is this intentional?  Seems we want to test this.

You asked me to add this in the previous iteration.  I can remove it again if you want.

&gt;&gt; Tools/Scripts/webkitpy/tool/bot/expectedfailures.py:66
&gt;&gt; +            self._failures_are_bounded = True
&gt; 
&gt; _failures_are_bounded = False if we can&apos;t trust resutls here?

That wouldn&apos;t shrink the expected failures, right?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400177</commentid>
    <comment_count>7</comment_count>
      <attachid>92719</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-07 19:46:03 -0700</bug_when>
    <thetext>Created attachment 92719
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400179</commentid>
    <comment_count>8</comment_count>
      <attachid>92719</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-07 19:49:07 -0700</bug_when>
    <thetext>Comment on attachment 92719
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>400180</commentid>
    <comment_count>9</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2011-05-07 19:50:14 -0700</bug_when>
    <thetext>Committed r86020: &lt;http://trac.webkit.org/changeset/86020&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92699</attachid>
            <date>2011-05-07 16:04:20 -0700</date>
            <delta_ts>2011-05-07 17:14:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60441-20110507160419.patch</filename>
            <type>text/plain</type>
            <size>9797</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg2MDA3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTEtMDUtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0aW5nIEVX
UyBzcGlucyBvbiBwYXRjaGVzIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgZmFpbHVyZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDQxCisKKyAgICAg
ICAgSW4gY2FzZXMgd2hlcmUgdGhlIHRyZWUgaGFzIGEgc21hbGwgbnVtYmVyIG9mIHBlcnNpc3Rl
bnQgZmFpbHVyZXMgYnV0IGEKKyAgICAgICAgcGF0Y2ggaGFzIGEgbGFyZ2UgbnVtYmVyIG9mIGZh
aWx1cmVzLCB3ZSB3ZXJlbid0IGJlbGlldmluZyBhbnkgcmVzdWx0cy4KKyAgICAgICAgVGhhdCBs
ZWFkIHRvIHVzIHJldHJ5aW5nIHRoZSBwYXRjaCBmb3JldmVyIHdoaWxlIHdlIHdhaXRlZCBmb3IK
KyAgICAgICAgdHJ1c3R3b3J0aHkgcmVzdWx0cyB0aGF0IHdvdWxkIG5ldmVyIGNvbWUuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBsb29zZW5zIHRoZSBzZW1hbnRpY3Mgb2YgdW5leHBlY3RlZF9mYWls
dXJlcyB0byByZXR1cm4gYQorICAgICAgICBzdWJzZXQgKHJhdGhlciB0aGFuIHRoZSBleGFjdCBz
ZXQpIG9mIHVuZXhwZWN0ZWQgZmFpbHVyZXMuICBJbiB0aGUgY2FzZQorICAgICAgICB3aGVyZSB0
aGUgdHJlZSBoYXMgYSBib3VuZGVkIG51bWJlciBvZiBmYWlsdXJlcyBhbmQgdGhlIHBhdGNoIGhh
cyBhbgorICAgICAgICB1bmJvdW5kZWQgbnVtYmVyIG9mIGZhaWx1cmVzLCB3ZSBjYW4gYWNjdXJh
dGVseSBjb21wdXRlIHN1Y2ggYSBzdWJzZXQKKyAgICAgICAgYW5kIHJlamVjdCB0aGUgcGF0Y2gu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXMu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVz
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hh
bmFseXNpc3Rhc2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Vhcmx5d2FybmluZ3N5c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5OgorCiAyMDExLTA1LTA3ICBQ
cmF0aWsgU29sYW5raSAgPHBzb2xhbmtpQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhw
ZWN0ZWRmYWlsdXJlcy5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvYm90L2V4cGVjdGVkZmFpbHVyZXMucHkJKHJldmlzaW9uIDg2MDA3KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVzLnB5CSh3b3JraW5nIGNvcHkp
CkBAIC0zMCwzMSArMzAsNDIgQEAKIGNsYXNzIEV4cGVjdGVkRmFpbHVyZXMob2JqZWN0KToKICAg
ICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuX2ZhaWx1cmVzID0gc2V0KCkKKyAg
ICAgICAgc2VsZi5fZmFpbHVyZXNfYm91bmRlZCA9IFRydWUKIAotICAgIGRlZiBfY2FuX3RydXN0
X3Jlc3VsdHMoc2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgIGlmIG5vdCByZXN1bHRzIG9yIG5vdCBy
ZXN1bHRzLmZhaWx1cmVfbGltaXRfY291bnQoKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQot
ICAgICAgICByZXR1cm4gbGVuKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKSAhPSAwIGFuZCBsZW4o
cmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpIDwgcmVzdWx0cy5mYWlsdXJlX2xpbWl0X2NvdW50KCkK
KyAgICBkZWYgX2hhc19yZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgorICAgICAgICByZXR1cm4gYm9v
bChyZXN1bHRzIGFuZCBsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpICE9IDApCisKKyAgICBk
ZWYgX2hhc19ib3VuZGVkX3Jlc3VsdHMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAgIHJldHVybiBi
b29sKHJlc3VsdHMuZmFpbHVyZV9saW1pdF9jb3VudCgpIGFuZCBsZW4ocmVzdWx0cy5mYWlsaW5n
X3Rlc3RzKCkpIDwgcmVzdWx0cy5mYWlsdXJlX2xpbWl0X2NvdW50KCkpCisKKyAgICBkZWYgX2hh
c190cnVzdHdvcnRoeV9yZXN1bHRzKHNlbGYsIHJlc3VsdHMpOgorICAgICAgICByZXR1cm4gc2Vs
Zi5faGFzX3Jlc3VsdHMocmVzdWx0cykgYW5kIHNlbGYuX2hhc19ib3VuZGVkX3Jlc3VsdHMocmVz
dWx0cykKIAogICAgIGRlZiBmYWlsdXJlc193ZXJlX2V4cGVjdGVkKHNlbGYsIHJlc3VsdHMpOgot
ICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX3RydXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAgICAg
IGlmIG5vdCBzZWxmLl9oYXNfdHJ1c3R3b3J0aHlfcmVzdWx0cyhyZXN1bHRzKToKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gc2V0KHJlc3VsdHMuZmFpbGluZ190ZXN0
cygpKSA8PSBzZWxmLl9mYWlsdXJlcwogCi0gICAgZGVmIHVuZXhwZWN0ZWRfZmFpbHVyZXMoc2Vs
ZiwgcmVzdWx0cyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9jYW5fdHJ1c3RfcmVzdWx0cyhyZXN1
bHRzKToKKyAgICBkZWYgdW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZChzZWxmLCByZXN1bHRz
KToKKyAgICAgICAgaWYgbm90IHNlbGYuX2hhc19yZXN1bHRzKHJlc3VsdHMpOgorICAgICAgICAg
ICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaWYgbm90IHNlbGYuX2ZhaWx1cmVzX2JvdW5kZWQ6CiAg
ICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gc2V0KHJlc3VsdHMuZmFpbGlu
Z190ZXN0cygpKSAtIHNlbGYuX2ZhaWx1cmVzCiAKICAgICBkZWYgc2hyaW5rX2V4cGVjdGVkX2Zh
aWx1cmVzKHNlbGYsIHJlc3VsdHMsIHJ1bl9zdWNjZXNzKToKICAgICAgICAgaWYgcnVuX3N1Y2Nl
c3M6CiAgICAgICAgICAgICBzZWxmLl9mYWlsdXJlcyA9IHNldCgpCi0gICAgICAgIGVsaWYgc2Vs
Zi5fY2FuX3RydXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAgICAgICAgICBzZWxmLl9mYWlsdXJl
c19ib3VuZGVkID0gVHJ1ZQorICAgICAgICBlbGlmIHNlbGYuX2hhc190cnVzdHdvcnRoeV9yZXN1
bHRzKHJlc3VsdHMpOgogICAgICAgICAgICAgIyBSZW1vdmUgYWxsIGV4cGVjdGVkIGZhaWx1cmVz
IHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyBmYWlsaW5nIHJlc3VsdHMuCiAgICAgICAgICAgICBz
ZWxmLl9mYWlsdXJlcy5pbnRlcnNlY3Rpb25fdXBkYXRlKHNldChyZXN1bHRzLmZhaWxpbmdfdGVz
dHMoKSkpCisgICAgICAgICAgICBzZWxmLl9mYWlsdXJlc19ib3VuZGVkID0gVHJ1ZQogCiAgICAg
ZGVmIGdyb3dfZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgIGlmIG5v
dCBzZWxmLl9jYW5fdHJ1c3RfcmVzdWx0cyhyZXN1bHRzKToKKyAgICAgICAgaWYgbm90IHNlbGYu
X2hhc190cnVzdHdvcnRoeV9yZXN1bHRzKHJlc3VsdHMpOgorICAgICAgICAgICAgc2VsZi5fZmFp
bHVyZXNfYm91bmRlZCA9IEZhbHNlCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5f
ZmFpbHVyZXMudXBkYXRlKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKQorICAgICAgICBzZWxmLl9m
YWlsdXJlc19ib3VuZGVkID0gVHJ1ZQogICAgICAgICAjIEZJWE1FOiBTaG91bGQgd2UgYXNzZXJ0
KCkgaGVyZSB0aGF0IGV4cGVjdGVkX2ZhaWx1cmVzIG5ldmVyIGNyb3NzZXMgYSBjZXJ0YWluIHNp
emU/CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVy
ZXNfdW5pdHRlc3QucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29s
L2JvdC9leHBlY3RlZGZhaWx1cmVzX3VuaXR0ZXN0LnB5CShyZXZpc2lvbiA4NjAwNykKKysrIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlc191bml0dGVzdC5w
eQkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsOSBAQCBjbGFzcyBNb2NrUmVzdWx0cyhvYmpl
Y3QpOgogCiBjbGFzcyBFeHBlY3RlZEZhaWx1cmVzVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAg
ICAgZGVmIF9hc3NlcnRfY2FuX3RydXN0KHNlbGYsIHJlc3VsdHMsIGNhbl90cnVzdCk6Ci0gICAg
ICAgIHNlbGYuYXNzZXJ0RXF1YWxzKEV4cGVjdGVkRmFpbHVyZXMoKS5fY2FuX3RydXN0X3Jlc3Vs
dHMocmVzdWx0cyksIGNhbl90cnVzdCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoRXhwZWN0
ZWRGYWlsdXJlcygpLl9oYXNfdHJ1c3R3b3J0aHlfcmVzdWx0cyhyZXN1bHRzKSwgY2FuX3RydXN0
KQogCi0gICAgZGVmIHRlc3RfY2FuX3RydXN0X3Jlc3VsdHMoc2VsZik6CisgICAgZGVmIHRlc3Rf
aGFzX3RydXN0d29ydGh5X3Jlc3VsdHMoc2VsZik6CiAgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5f
dHJ1c3QoTm9uZSwgRmFsc2UpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9jYW5fdHJ1c3QoTW9ja1Jl
c3VsdHMoZmFpbGluZ190ZXN0cz1bXSwgZmFpbHVyZV9saW1pdD1Ob25lKSwgRmFsc2UpCiAgICAg
ICAgIHNlbGYuX2Fzc2VydF9jYW5fdHJ1c3QoTW9ja1Jlc3VsdHMoZmFpbGluZ190ZXN0cz1bXSwg
ZmFpbHVyZV9saW1pdD0xMCksIEZhbHNlKQpAQCAtNzMsOCArNzMsMjIgQEAgY2xhc3MgRXhwZWN0
ZWRGYWlsdXJlc1Rlc3QodW5pdHRlc3QuVGVzdAogICAgICAgICBmYWlsdXJlcy5zaHJpbmtfZXhw
ZWN0ZWRfZmFpbHVyZXMoTW9ja1Jlc3VsdHMoKSwgVHJ1ZSkKICAgICAgICAgc2VsZi5fYXNzZXJ0
X2V4cGVjdGVkKGZhaWx1cmVzLCBbJ2Jhei5odG1sJ10sIEZhbHNlKQogCi0gICAgZGVmIHRlc3Rf
dW5leHBlY3RlZF9mYWlsdXJlcyhzZWxmKToKKyAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1
cmVzX29ic2VydmVkKHNlbGYpOgogICAgICAgICBmYWlsdXJlcyA9IEV4cGVjdGVkRmFpbHVyZXMo
KQogICAgICAgICBmYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKFsn
Zm9vLmh0bWwnXSkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0
ZWRfZmFpbHVyZXMoTW9ja1Jlc3VsdHMoWydmb28uaHRtbCcsICdiYXIuaHRtbCddKSksIHNldChb
J2Jhci5odG1sJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmYWlsdXJlcy51bmV4cGVj
dGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKFsnYmF6Lmh0bWwnXSkpLCBzZXQoWydiYXouaHRtbCdd
KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJl
c19vYnNlcnZlZChNb2NrUmVzdWx0cyhbJ2Zvby5odG1sJywgJ2Jhci5odG1sJ10pKSwgc2V0KFsn
YmFyLmh0bWwnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0
ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQoTW9ja1Jlc3VsdHMoWydiYXouaHRtbCddKSksIHNldChbJ2Jh
ei5odG1sJ10pKQorICAgICAgICB1bmJvdW5kZWRfcmVzdWx0cyA9IE1vY2tSZXN1bHRzKFsnYmF6
Lmh0bWwnLCAncXV4Lmh0bWwnLCAndGFjby5odG1sJ10sIGZhaWx1cmVfbGltaXQ9MykKKyAgICAg
ICAgc2VsZi5hc3NlcnRFcXVhbHMoZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZl
ZCh1bmJvdW5kZWRfcmVzdWx0cyksIHNldChbJ2Jhei5odG1sJywgJ3F1eC5odG1sJywgJ3RhY28u
aHRtbCddKSkKKyAgICAgICAgdW5ib3VuZGVkX3Jlc3VsdHNfd2l0aF9leGlzdGluZ19mYWlsdXJl
ID0gTW9ja1Jlc3VsdHMoWydmb28uaHRtbCcsICdiYXouaHRtbCcsICdxdXguaHRtbCcsICd0YWNv
Lmh0bWwnXSwgZmFpbHVyZV9saW1pdD00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmYWls
dXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2VydmVkKHVuYm91bmRlZF9yZXN1bHRzX3dpdGhf
ZXhpc3RpbmdfZmFpbHVyZSksIHNldChbJ2Jhei5odG1sJywgJ3F1eC5odG1sJywgJ3RhY28uaHRt
bCddKSkKKworICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWRfd2hlbl90
cmVlX2lzX2hvc2VkKHNlbGYpOgorICAgICAgICBmYWlsdXJlcyA9IEV4cGVjdGVkRmFpbHVyZXMo
KQorICAgICAgICBmYWlsdXJlcy5ncm93X2V4cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKFsn
Zm9vLmh0bWwnLCAnYmFuYW5hLmh0bWwnXSwgZmFpbHVyZV9saW1pdD0yKSkKKyAgICAgICAgc2Vs
Zi5hc3NlcnRFcXVhbHMoZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZChNb2Nr
UmVzdWx0cyhbJ2Zvby5odG1sJywgJ2Jhci5odG1sJ10pKSwgTm9uZSkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZChNb2NrUmVz
dWx0cyhbJ2Jhei5odG1sJ10pKSwgTm9uZSkKKyAgICAgICAgdW5ib3VuZGVkX3Jlc3VsdHMgPSBN
b2NrUmVzdWx0cyhbJ2Jhei5odG1sJywgJ3F1eC5odG1sJywgJ3RhY28uaHRtbCddLCBmYWlsdXJl
X2xpbWl0PTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0ZWRf
ZmFpbHVyZXNfb2JzZXJ2ZWQodW5ib3VuZGVkX3Jlc3VsdHMpLCBOb25lKQorICAgICAgICB1bmJv
dW5kZWRfcmVzdWx0c193aXRoX2V4aXN0aW5nX2ZhaWx1cmUgPSBNb2NrUmVzdWx0cyhbJ2Zvby5o
dG1sJywgJ2Jhei5odG1sJywgJ3F1eC5odG1sJywgJ3RhY28uaHRtbCddLCBmYWlsdXJlX2xpbWl0
PTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVy
ZXNfb2JzZXJ2ZWQodW5ib3VuZGVkX3Jlc3VsdHNfd2l0aF9leGlzdGluZ19mYWlsdXJlKSwgTm9u
ZSkKSW5kZXg6IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rh
c2sucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRj
aGFuYWx5c2lzdGFzay5weQkocmV2aXNpb24gODYwMDcpCisrKyBUb29scy9TY3JpcHRzL3dlYmtp
dHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5CSh3b3JraW5nIGNvcHkpCkBAIC0yMjAs
NyArMjIwLDcgQEAgY2xhc3MgUGF0Y2hBbmFseXNpc1Rhc2sob2JqZWN0KToKIAogICAgICAgICAj
IE5vdyB0aGF0IHdlIGhhdmUgdXBkYXRlZCBpbmZvcm1hdGlvbiBhYm91dCBmYWlsaW5nIHRlc3Rz
IHdpdGggYSBjbGVhbiBjaGVja291dCwgd2UgY2FuCiAgICAgICAgICMgdGVsbCBpZiBvdXIgb3Jp
Z2luYWwgZmFpbHVyZXMgd2VyZSB1bmV4cGVjdGVkIGFuZCBmYWlsIHRoZSBwYXRjaCBpZiBuZWNl
c3NhcnkuCi0gICAgICAgIGlmIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFp
bHVyZXMoZmlyc3RfcmVzdWx0cyk6CisgICAgICAgIGlmIHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVz
LnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQoZmlyc3RfcmVzdWx0cyk6CiAgICAgICAgICAg
ICByZXR1cm4gc2VsZi5yZXBvcnRfZmFpbHVyZShmaXJzdF9yZXN1bHRzX2FyY2hpdmUsIGZpcnN0
X3Jlc3VsdHMpCiAKICAgICAgICAgIyBXZSBkb24ndCBrbm93IHdoYXQncyBnb2luZyBvbi4gIFRo
ZSB0cmVlIGlzIGxpa2VseSB2ZXJ5IHJlZCAoYmV5b25kIG91ciBsYXlvdXQtdGVzdC1yZXN1bHRz
CkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5n
c3lzdGVtLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21t
YW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkJKHJldmlzaW9uIDg2MDA3KQorKysgVG9vbHMvU2Ny
aXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMTMwLDcgKzEzMCw3IEBAIGNsYXNzIEFic3RyYWN0VGVzdGluZ0VXUyhBYnN0
cmFjdEVhcmx5V2EKIAogICAgIGRlZiBfZmFpbGluZ190ZXN0c19tZXNzYWdlKHNlbGYsIHRhc2ss
IHBhdGNoKToKICAgICAgICAgcmVzdWx0cyA9IHRhc2sucmVzdWx0c19mcm9tX3BhdGNoX3Rlc3Rf
cnVuKHBhdGNoKQotICAgICAgICB1bmV4cGVjdGVkX2ZhaWx1cmVzID0gc2VsZi5fZXhwZWN0ZWRf
ZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlcyhyZXN1bHRzKQorICAgICAgICB1bmV4cGVjdGVk
X2ZhaWx1cmVzID0gc2VsZi5fZXhwZWN0ZWRfZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlc19v
YnNlcnZlZChyZXN1bHRzKQogICAgICAgICBpZiBub3QgdW5leHBlY3RlZF9mYWlsdXJlczoKICAg
ICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiAiTmV3IGZhaWxpbmcgdGVzdHM6
XG4lcyIgJSAiXG4iLmpvaW4odW5leHBlY3RlZF9mYWlsdXJlcykKSW5kZXg6IFRvb2xzL1Njcmlw
dHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5
d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQkocmV2aXNpb24gODYwMDcpCisrKyBUb29scy9TY3Jp
cHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIGNsYXNzIEFic3RyYWN0VGVzdGluZ0VX
U1Rlc3QoUXVldWVzVGVzdCkKICAgICAgICAgZXdzLmJpbmRfdG9fdG9vbChNb2NrVG9vbCgpKQog
ICAgICAgICBld3MuX29wdGlvbnMgPSBNb2NrT3B0aW9ucyhwb3J0PU5vbmUsIGNvbmZpcm09RmFs
c2UpCiAgICAgICAgIE91dHB1dENhcHR1cmUoKS5hc3NlcnRfb3V0cHV0cyhzZWxmLCBld3MuYmVn
aW5fd29ya19xdWV1ZSwgZXhwZWN0ZWRfc3RkZXJyPXNlbGYuX2RlZmF1bHRfYmVnaW5fd29ya19x
dWV1ZV9zdGRlcnIoZXdzLm5hbWUsIGV3cy5fdG9vbC5zY20oKS5jaGVja291dF9yb290KSkKLSAg
ICAgICAgZXdzLl9leHBlY3RlZF9mYWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzID0gbGFtYmRh
IHJlc3VsdHM6IHNldChbImZvby5odG1sIiwgImJhci5odG1sIl0pCisgICAgICAgIGV3cy5fZXhw
ZWN0ZWRfZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZCA9IGxhbWJkYSByZXN1
bHRzOiBzZXQoWyJmb28uaHRtbCIsICJiYXIuaHRtbCJdKQogICAgICAgICB0YXNrID0gTW9jaygp
CiAgICAgICAgIHBhdGNoID0gZXdzLl90b29sLmJ1Z3MuZmV0Y2hfYXR0YWNobWVudCgxOTcpCiAg
ICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXdzLl9mYWlsaW5nX3Rlc3RzX21lc3NhZ2UodGFzaywg
cGF0Y2gpLCAiTmV3IGZhaWxpbmcgdGVzdHM6XG5iYXIuaHRtbFxuZm9vLmh0bWwiKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92701</attachid>
            <date>2011-05-07 17:14:08 -0700</date>
            <delta_ts>2011-05-07 19:45:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60441-20110507171407.patch</filename>
            <type>text/plain</type>
            <size>9270</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg2MDE1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTEtMDUtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0aW5nIEVX
UyBzcGlucyBvbiBwYXRjaGVzIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgZmFpbHVyZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDQxCisKKyAgICAg
ICAgSW4gY2FzZXMgd2hlcmUgdGhlIHRyZWUgaGFzIGEgc21hbGwgbnVtYmVyIG9mIHBlcnNpc3Rl
bnQgZmFpbHVyZXMgYnV0IGEKKyAgICAgICAgcGF0Y2ggaGFzIGEgbGFyZ2UgbnVtYmVyIG9mIGZh
aWx1cmVzLCB3ZSB3ZXJlbid0IGJlbGlldmluZyBhbnkgcmVzdWx0cy4KKyAgICAgICAgVGhhdCBs
ZWFkIHRvIHVzIHJldHJ5aW5nIHRoZSBwYXRjaCBmb3JldmVyIHdoaWxlIHdlIHdhaXRlZCBmb3IK
KyAgICAgICAgdHJ1c3R3b3J0aHkgcmVzdWx0cyB0aGF0IHdvdWxkIG5ldmVyIGNvbWUuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBsb29zZW5zIHRoZSBzZW1hbnRpY3Mgb2YgdW5leHBlY3RlZF9mYWls
dXJlcyB0byByZXR1cm4gYQorICAgICAgICBzdWJzZXQgKHJhdGhlciB0aGFuIHRoZSBleGFjdCBz
ZXQpIG9mIHVuZXhwZWN0ZWQgZmFpbHVyZXMuICBJbiB0aGUgY2FzZQorICAgICAgICB3aGVyZSB0
aGUgdHJlZSBoYXMgYSBib3VuZGVkIG51bWJlciBvZiBmYWlsdXJlcyBhbmQgdGhlIHBhdGNoIGhh
cyBhbgorICAgICAgICB1bmJvdW5kZWQgbnVtYmVyIG9mIGZhaWx1cmVzLCB3ZSBjYW4gYWNjdXJh
dGVseSBjb21wdXRlIHN1Y2ggYSBzdWJzZXQKKyAgICAgICAgYW5kIHJlamVjdCB0aGUgcGF0Y2gu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXMu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVz
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hh
bmFseXNpc3Rhc2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Vhcmx5d2FybmluZ3N5c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5OgorCiAyMDExLTA1LTA3ICBK
b2UgTWFzb24gIDxqbWFzb25AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwg
QmF0ZXMuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFp
bHVyZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9l
eHBlY3RlZGZhaWx1cmVzLnB5CShyZXZpc2lvbiA4NjAxNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzAs
MzEgKzMwLDQ1IEBACiBjbGFzcyBFeHBlY3RlZEZhaWx1cmVzKG9iamVjdCk6CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLl9mYWlsdXJlcyA9IHNldCgpCisgICAgICAgICMg
SWYgdGhlIHNldCBvZiBmYWlsdXJlcyBpcyB1bmJvdW5kZWQsIHNlbGYuX2ZhaWx1cmVzIGlzbid0
IHZlcnkKKyAgICAgICAgIyBtZWFuaW5nZnVsIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYW4gdW5i
b3VuZGVkIHNldCBpbiBtZW1vcnkuCisgICAgICAgIHNlbGYuX2ZhaWx1cmVzX2FyZV9ib3VuZGVk
ID0gVHJ1ZQorCisgICAgZGVmIF9oYXNfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAg
IHJldHVybiBib29sKHJlc3VsdHMgYW5kIGxlbihyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkgIT0g
MCkKKworICAgIGRlZiBfaGFzX2JvdW5kZWRfcmVzdWx0cyhzZWxmLCByZXN1bHRzKToKKyAgICAg
ICAgYXNzZXJ0KHJlc3VsdHMpICAjIFlvdSBwcm9iYWJseSB3YW50IHRvIGNhbGwgX2hhc19mYWls
dXJlcyBmaXJzdCEKKyAgICAgICAgcmV0dXJuIGJvb2wocmVzdWx0cy5mYWlsdXJlX2xpbWl0X2Nv
dW50KCkgYW5kIGxlbihyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkgPCByZXN1bHRzLmZhaWx1cmVf
bGltaXRfY291bnQoKSkKIAogICAgIGRlZiBfY2FuX3RydXN0X3Jlc3VsdHMoc2VsZiwgcmVzdWx0
cyk6Ci0gICAgICAgIGlmIG5vdCByZXN1bHRzIG9yIG5vdCByZXN1bHRzLmZhaWx1cmVfbGltaXRf
Y291bnQoKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gbGVuKHJl
c3VsdHMuZmFpbGluZ190ZXN0cygpKSAhPSAwIGFuZCBsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3Rz
KCkpIDwgcmVzdWx0cy5mYWlsdXJlX2xpbWl0X2NvdW50KCkKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2hhc19mYWlsdXJlcyhyZXN1bHRzKSBhbmQgc2VsZi5faGFzX2JvdW5kZWRfcmVzdWx0cyhyZXN1
bHRzKQogCiAgICAgZGVmIGZhaWx1cmVzX3dlcmVfZXhwZWN0ZWQoc2VsZiwgcmVzdWx0cyk6Ci0g
ICAgICAgIGlmIG5vdCBzZWxmLl9jYW5fdHJ1c3RfcmVzdWx0cyhyZXN1bHRzKToKKyAgICAgICAg
aWYgbm90IHNlbGYuX2Nhbl90cnVzdF9yZXN1bHRzKHJlc3VsdHMpIG9yIG5vdCBzZWxmLl9mYWls
dXJlc19hcmVfYm91bmRlZDoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1
cm4gc2V0KHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKSA8PSBzZWxmLl9mYWlsdXJlcwogCi0gICAg
ZGVmIHVuZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cyk6Ci0gICAgICAgIGlmIG5vdCBz
ZWxmLl9jYW5fdHJ1c3RfcmVzdWx0cyhyZXN1bHRzKToKKyAgICBkZWYgdW5leHBlY3RlZF9mYWls
dXJlc19vYnNlcnZlZChzZWxmLCByZXN1bHRzKToKKyAgICAgICAgaWYgbm90IHNlbGYuX2hhc19m
YWlsdXJlcyhyZXN1bHRzKToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIG5v
dCBzZWxmLl9mYWlsdXJlc19hcmVfYm91bmRlZDoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAg
ICAgICAgIHJldHVybiBzZXQocmVzdWx0cy5mYWlsaW5nX3Rlc3RzKCkpIC0gc2VsZi5fZmFpbHVy
ZXMKIAogICAgIGRlZiBzaHJpbmtfZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cywgcnVu
X3N1Y2Nlc3MpOgogICAgICAgICBpZiBydW5fc3VjY2VzczoKICAgICAgICAgICAgIHNlbGYuX2Zh
aWx1cmVzID0gc2V0KCkKKyAgICAgICAgICAgIHNlbGYuX2ZhaWx1cmVzX2FyZV9ib3VuZGVkID0g
VHJ1ZQogICAgICAgICBlbGlmIHNlbGYuX2Nhbl90cnVzdF9yZXN1bHRzKHJlc3VsdHMpOgogICAg
ICAgICAgICAgIyBSZW1vdmUgYWxsIGV4cGVjdGVkIGZhaWx1cmVzIHdoaWNoIGFyZSBub3QgaW4g
dGhlIG5ldyBmYWlsaW5nIHJlc3VsdHMuCiAgICAgICAgICAgICBzZWxmLl9mYWlsdXJlcy5pbnRl
cnNlY3Rpb25fdXBkYXRlKHNldChyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkpCisgICAgICAgICAg
ICBzZWxmLl9mYWlsdXJlc19hcmVfYm91bmRlZCA9IFRydWUKIAogICAgIGRlZiBncm93X2V4cGVj
dGVkX2ZhaWx1cmVzKHNlbGYsIHJlc3VsdHMpOgogICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX3Ry
dXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAgICAgICAgICBzZWxmLl9mYWlsdXJlc19hcmVfYm91
bmRlZCA9IEZhbHNlCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgc2VsZi5fZmFpbHVyZXMu
dXBkYXRlKHJlc3VsdHMuZmFpbGluZ190ZXN0cygpKQorICAgICAgICBzZWxmLl9mYWlsdXJlc19h
cmVfYm91bmRlZCA9IFRydWUKICAgICAgICAgIyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCgpIGhl
cmUgdGhhdCBleHBlY3RlZF9mYWlsdXJlcyBuZXZlciBjcm9zc2VzIGEgY2VydGFpbiBzaXplPwpJ
bmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVzX3Vu
aXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3Qv
ZXhwZWN0ZWRmYWlsdXJlc191bml0dGVzdC5weQkocmV2aXNpb24gODYwMTUpCisrKyBUb29scy9T
Y3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkJKHdv
cmtpbmcgY29weSkKQEAgLTczLDggKzczLDIyIEBAIGNsYXNzIEV4cGVjdGVkRmFpbHVyZXNUZXN0
KHVuaXR0ZXN0LlRlc3QKICAgICAgICAgZmFpbHVyZXMuc2hyaW5rX2V4cGVjdGVkX2ZhaWx1cmVz
KE1vY2tSZXN1bHRzKCksIFRydWUpCiAgICAgICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChmYWls
dXJlcywgWydiYXouaHRtbCddLCBGYWxzZSkKIAotICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFp
bHVyZXMoc2VsZik6CisgICAgZGVmIHRlc3RfdW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZChz
ZWxmKToKICAgICAgICAgZmFpbHVyZXMgPSBFeHBlY3RlZEZhaWx1cmVzKCkKICAgICAgICAgZmFp
bHVyZXMuZ3Jvd19leHBlY3RlZF9mYWlsdXJlcyhNb2NrUmVzdWx0cyhbJ2Zvby5odG1sJ10pKQot
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmYWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzKE1v
Y2tSZXN1bHRzKFsnZm9vLmh0bWwnLCAnYmFyLmh0bWwnXSkpLCBzZXQoWydiYXIuaHRtbCddKSkK
LSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlcyhN
b2NrUmVzdWx0cyhbJ2Jhei5odG1sJ10pKSwgc2V0KFsnYmF6Lmh0bWwnXSkpCisgICAgICAgIHNl
bGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQoTW9j
a1Jlc3VsdHMoWydmb28uaHRtbCcsICdiYXIuaHRtbCddKSksIHNldChbJ2Jhci5odG1sJ10pKQor
ICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmYWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzX29i
c2VydmVkKE1vY2tSZXN1bHRzKFsnYmF6Lmh0bWwnXSkpLCBzZXQoWydiYXouaHRtbCddKSkKKyAg
ICAgICAgdW5ib3VuZGVkX3Jlc3VsdHMgPSBNb2NrUmVzdWx0cyhbJ2Jhei5odG1sJywgJ3F1eC5o
dG1sJywgJ3RhY28uaHRtbCddLCBmYWlsdXJlX2xpbWl0PTMpCisgICAgICAgIHNlbGYuYXNzZXJ0
RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQodW5ib3VuZGVkX3Jl
c3VsdHMpLCBzZXQoWydiYXouaHRtbCcsICdxdXguaHRtbCcsICd0YWNvLmh0bWwnXSkpCisgICAg
ICAgIHVuYm91bmRlZF9yZXN1bHRzX3dpdGhfZXhpc3RpbmdfZmFpbHVyZSA9IE1vY2tSZXN1bHRz
KFsnZm9vLmh0bWwnLCAnYmF6Lmh0bWwnLCAncXV4Lmh0bWwnLCAndGFjby5odG1sJ10sIGZhaWx1
cmVfbGltaXQ9NCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZmFpbHVyZXMudW5leHBlY3Rl
ZF9mYWlsdXJlc19vYnNlcnZlZCh1bmJvdW5kZWRfcmVzdWx0c193aXRoX2V4aXN0aW5nX2ZhaWx1
cmUpLCBzZXQoWydiYXouaHRtbCcsICdxdXguaHRtbCcsICd0YWNvLmh0bWwnXSkpCisKKyAgICBk
ZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2VydmVkX3doZW5fdHJlZV9pc19ob3NlZChz
ZWxmKToKKyAgICAgICAgZmFpbHVyZXMgPSBFeHBlY3RlZEZhaWx1cmVzKCkKKyAgICAgICAgZmFp
bHVyZXMuZ3Jvd19leHBlY3RlZF9mYWlsdXJlcyhNb2NrUmVzdWx0cyhbJ2Zvby5odG1sJywgJ2Jh
bmFuYS5odG1sJ10sIGZhaWx1cmVfbGltaXQ9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxz
KGZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQoTW9ja1Jlc3VsdHMoWydmb28u
aHRtbCcsICdiYXIuaHRtbCddKSksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZh
aWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQoTW9ja1Jlc3VsdHMoWydiYXouaHRt
bCddKSksIE5vbmUpCisgICAgICAgIHVuYm91bmRlZF9yZXN1bHRzID0gTW9ja1Jlc3VsdHMoWydi
YXouaHRtbCcsICdxdXguaHRtbCcsICd0YWNvLmh0bWwnXSwgZmFpbHVyZV9saW1pdD0zKQorICAg
ICAgICBzZWxmLmFzc2VydEVxdWFscyhmYWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2Vy
dmVkKHVuYm91bmRlZF9yZXN1bHRzKSwgTm9uZSkKKyAgICAgICAgdW5ib3VuZGVkX3Jlc3VsdHNf
d2l0aF9leGlzdGluZ19mYWlsdXJlID0gTW9ja1Jlc3VsdHMoWydmb28uaHRtbCcsICdiYXouaHRt
bCcsICdxdXguaHRtbCcsICd0YWNvLmh0bWwnXSwgZmFpbHVyZV9saW1pdD00KQorICAgICAgICBz
ZWxmLmFzc2VydEVxdWFscyhmYWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2VydmVkKHVu
Ym91bmRlZF9yZXN1bHRzX3dpdGhfZXhpc3RpbmdfZmFpbHVyZSksIE5vbmUpCkluZGV4OiBUb29s
cy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L3BhdGNoYW5hbHlzaXN0YXNrLnB5Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2su
cHkJKHJldmlzaW9uIDg2MDE1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9w
YXRjaGFuYWx5c2lzdGFzay5weQkod29ya2luZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIGNs
YXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVjdCk6CiAKICAgICAgICAgIyBOb3cgdGhhdCB3ZSBo
YXZlIHVwZGF0ZWQgaW5mb3JtYXRpb24gYWJvdXQgZmFpbGluZyB0ZXN0cyB3aXRoIGEgY2xlYW4g
Y2hlY2tvdXQsIHdlIGNhbgogICAgICAgICAjIHRlbGwgaWYgb3VyIG9yaWdpbmFsIGZhaWx1cmVz
IHdlcmUgdW5leHBlY3RlZCBhbmQgZmFpbCB0aGUgcGF0Y2ggaWYgbmVjZXNzYXJ5LgotICAgICAg
ICBpZiBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzKGZpcnN0X3Jl
c3VsdHMpOgorICAgICAgICBpZiBzZWxmLl9leHBlY3RlZF9mYWlsdXJlcy51bmV4cGVjdGVkX2Zh
aWx1cmVzX29ic2VydmVkKGZpcnN0X3Jlc3VsdHMpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYu
cmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0c19hcmNoaXZlLCBmaXJzdF9yZXN1bHRzKQogCiAg
ICAgICAgICMgV2UgZG9uJ3Qga25vdyB3aGF0J3MgZ29pbmcgb24uICBUaGUgdHJlZSBpcyBsaWtl
bHkgdmVyeSByZWQgKGJleW9uZCBvdXIgbGF5b3V0LXRlc3QtcmVzdWx0cwpJbmRleDogVG9vbHMv
U2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJu
aW5nc3lzdGVtLnB5CShyZXZpc2lvbiA4NjAxNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkv
dG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW0ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEz
MCw3ICsxMzAsNyBAQCBjbGFzcyBBYnN0cmFjdFRlc3RpbmdFV1MoQWJzdHJhY3RFYXJseVdhCiAK
ICAgICBkZWYgX2ZhaWxpbmdfdGVzdHNfbWVzc2FnZShzZWxmLCB0YXNrLCBwYXRjaCk6CiAgICAg
ICAgIHJlc3VsdHMgPSB0YXNrLnJlc3VsdHNfZnJvbV9wYXRjaF90ZXN0X3J1bihwYXRjaCkKLSAg
ICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9IHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLnVuZXhw
ZWN0ZWRfZmFpbHVyZXMocmVzdWx0cykKKyAgICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9IHNl
bGYuX2V4cGVjdGVkX2ZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQocmVzdWx0
cykKICAgICAgICAgaWYgbm90IHVuZXhwZWN0ZWRfZmFpbHVyZXM6CiAgICAgICAgICAgICByZXR1
cm4gTm9uZQogICAgICAgICByZXR1cm4gIk5ldyBmYWlsaW5nIHRlc3RzOlxuJXMiICUgIlxuIi5q
b2luKHVuZXhwZWN0ZWRfZmFpbHVyZXMpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rv
b2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1f
dW5pdHRlc3QucHkJKHJldmlzaW9uIDg2MDE1KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90
b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5c3RlbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5
KQpAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBBYnN0cmFjdFRlc3RpbmdFV1NUZXN0KFF1ZXVlc1Rl
c3QpCiAgICAgICAgIGV3cy5iaW5kX3RvX3Rvb2woTW9ja1Rvb2woKSkKICAgICAgICAgZXdzLl9v
cHRpb25zID0gTW9ja09wdGlvbnMocG9ydD1Ob25lLCBjb25maXJtPUZhbHNlKQogICAgICAgICBP
dXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1dHMoc2VsZiwgZXdzLmJlZ2luX3dvcmtfcXVldWUs
IGV4cGVjdGVkX3N0ZGVycj1zZWxmLl9kZWZhdWx0X2JlZ2luX3dvcmtfcXVldWVfc3RkZXJyKGV3
cy5uYW1lLCBld3MuX3Rvb2wuc2NtKCkuY2hlY2tvdXRfcm9vdCkpCi0gICAgICAgIGV3cy5fZXhw
ZWN0ZWRfZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlcyA9IGxhbWJkYSByZXN1bHRzOiBzZXQo
WyJmb28uaHRtbCIsICJiYXIuaHRtbCJdKQorICAgICAgICBld3MuX2V4cGVjdGVkX2ZhaWx1cmVz
LnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQgPSBsYW1iZGEgcmVzdWx0czogc2V0KFsiZm9v
Lmh0bWwiLCAiYmFyLmh0bWwiXSkKICAgICAgICAgdGFzayA9IE1vY2soKQogICAgICAgICBwYXRj
aCA9IGV3cy5fdG9vbC5idWdzLmZldGNoX2F0dGFjaG1lbnQoMTk3KQogICAgICAgICBzZWxmLmFz
c2VydEVxdWFsKGV3cy5fZmFpbGluZ190ZXN0c19tZXNzYWdlKHRhc2ssIHBhdGNoKSwgIk5ldyBm
YWlsaW5nIHRlc3RzOlxuYmFyLmh0bWxcbmZvby5odG1sIikK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92719</attachid>
            <date>2011-05-07 19:46:03 -0700</date>
            <delta_ts>2011-05-07 19:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60441-20110507194602.patch</filename>
            <type>text/plain</type>
            <size>9186</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDg2MDE1KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMg
KzEsMjcgQEAKKzIwMTEtMDUtMDcgIEFkYW0gQmFydGggIDxhYmFydGhAd2Via2l0Lm9yZz4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0aW5nIEVX
UyBzcGlucyBvbiBwYXRjaGVzIHdpdGggYSBsYXJnZSBudW1iZXIgb2YgZmFpbHVyZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwNDQxCisKKyAgICAg
ICAgSW4gY2FzZXMgd2hlcmUgdGhlIHRyZWUgaGFzIGEgc21hbGwgbnVtYmVyIG9mIHBlcnNpc3Rl
bnQgZmFpbHVyZXMgYnV0IGEKKyAgICAgICAgcGF0Y2ggaGFzIGEgbGFyZ2UgbnVtYmVyIG9mIGZh
aWx1cmVzLCB3ZSB3ZXJlbid0IGJlbGlldmluZyBhbnkgcmVzdWx0cy4KKyAgICAgICAgVGhhdCBs
ZWFkIHRvIHVzIHJldHJ5aW5nIHRoZSBwYXRjaCBmb3JldmVyIHdoaWxlIHdlIHdhaXRlZCBmb3IK
KyAgICAgICAgdHJ1c3R3b3J0aHkgcmVzdWx0cyB0aGF0IHdvdWxkIG5ldmVyIGNvbWUuCisKKyAg
ICAgICAgVGhpcyBwYXRjaCBsb29zZW5zIHRoZSBzZW1hbnRpY3Mgb2YgdW5leHBlY3RlZF9mYWls
dXJlcyB0byByZXR1cm4gYQorICAgICAgICBzdWJzZXQgKHJhdGhlciB0aGFuIHRoZSBleGFjdCBz
ZXQpIG9mIHVuZXhwZWN0ZWQgZmFpbHVyZXMuICBJbiB0aGUgY2FzZQorICAgICAgICB3aGVyZSB0
aGUgdHJlZSBoYXMgYSBib3VuZGVkIG51bWJlciBvZiBmYWlsdXJlcyBhbmQgdGhlIHBhdGNoIGhh
cyBhbgorICAgICAgICB1bmJvdW5kZWQgbnVtYmVyIG9mIGZhaWx1cmVzLCB3ZSBjYW4gYWNjdXJh
dGVseSBjb21wdXRlIHN1Y2ggYSBzdWJzZXQKKyAgICAgICAgYW5kIHJlamVjdCB0aGUgcGF0Y2gu
CisKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFpbHVyZXMu
cHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVz
X3VuaXR0ZXN0LnB5OgorICAgICAgICAqIFNjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvcGF0Y2hh
bmFseXNpc3Rhc2sucHk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRz
L2Vhcmx5d2FybmluZ3N5c3RlbS5weToKKyAgICAgICAgKiBTY3JpcHRzL3dlYmtpdHB5L3Rvb2wv
Y29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtX3VuaXR0ZXN0LnB5OgorCiAyMDExLTA1LTA3ICBK
b2UgTWFzb24gIDxqbWFzb25AcmltLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYW5pZWwg
QmF0ZXMuCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4cGVjdGVkZmFp
bHVyZXMucHkKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9l
eHBlY3RlZGZhaWx1cmVzLnB5CShyZXZpc2lvbiA4NjAxNSkKKysrIFRvb2xzL1NjcmlwdHMvd2Vi
a2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlcy5weQkod29ya2luZyBjb3B5KQpAQCAtMzAs
MzEgKzMwLDQ1IEBACiBjbGFzcyBFeHBlY3RlZEZhaWx1cmVzKG9iamVjdCk6CiAgICAgZGVmIF9f
aW5pdF9fKHNlbGYpOgogICAgICAgICBzZWxmLl9mYWlsdXJlcyA9IHNldCgpCisgICAgICAgICMg
SWYgdGhlIHNldCBvZiBmYWlsdXJlcyBpcyB1bmJvdW5kZWQsIHNlbGYuX2ZhaWx1cmVzIGlzbid0
IHZlcnkKKyAgICAgICAgIyBtZWFuaW5nZnVsIGJlY2F1c2Ugd2UgY2FuJ3Qgc3RvcmUgYW4gdW5i
b3VuZGVkIHNldCBpbiBtZW1vcnkuCisgICAgICAgIHNlbGYuX2ZhaWx1cmVzX2FyZV9ib3VuZGVk
ID0gVHJ1ZQorCisgICAgZGVmIF9oYXNfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cyk6CisgICAgICAg
IHJldHVybiBib29sKHJlc3VsdHMgYW5kIGxlbihyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkgIT0g
MCkKKworICAgIGRlZiBoYXNfYm91bmRlZF9mYWlsdXJlcyhzZWxmLCByZXN1bHRzKToKKyAgICAg
ICAgYXNzZXJ0KHJlc3VsdHMpICAjIFlvdSBwcm9iYWJseSB3YW50IHRvIGNhbGwgX2hhc19mYWls
dXJlcyBmaXJzdCEKKyAgICAgICAgcmV0dXJuIGJvb2wocmVzdWx0cy5mYWlsdXJlX2xpbWl0X2Nv
dW50KCkgYW5kIGxlbihyZXN1bHRzLmZhaWxpbmdfdGVzdHMoKSkgPCByZXN1bHRzLmZhaWx1cmVf
bGltaXRfY291bnQoKSkKIAogICAgIGRlZiBfY2FuX3RydXN0X3Jlc3VsdHMoc2VsZiwgcmVzdWx0
cyk6Ci0gICAgICAgIGlmIG5vdCByZXN1bHRzIG9yIG5vdCByZXN1bHRzLmZhaWx1cmVfbGltaXRf
Y291bnQoKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gbGVuKHJl
c3VsdHMuZmFpbGluZ190ZXN0cygpKSAhPSAwIGFuZCBsZW4ocmVzdWx0cy5mYWlsaW5nX3Rlc3Rz
KCkpIDwgcmVzdWx0cy5mYWlsdXJlX2xpbWl0X2NvdW50KCkKKyAgICAgICAgcmV0dXJuIHNlbGYu
X2hhc19mYWlsdXJlcyhyZXN1bHRzKSBhbmQgc2VsZi5oYXNfYm91bmRlZF9mYWlsdXJlcyhyZXN1
bHRzKQogCiAgICAgZGVmIGZhaWx1cmVzX3dlcmVfZXhwZWN0ZWQoc2VsZiwgcmVzdWx0cyk6CiAg
ICAgICAgIGlmIG5vdCBzZWxmLl9jYW5fdHJ1c3RfcmVzdWx0cyhyZXN1bHRzKToKICAgICAgICAg
ICAgIHJldHVybiBGYWxzZQogICAgICAgICByZXR1cm4gc2V0KHJlc3VsdHMuZmFpbGluZ190ZXN0
cygpKSA8PSBzZWxmLl9mYWlsdXJlcwogCi0gICAgZGVmIHVuZXhwZWN0ZWRfZmFpbHVyZXMoc2Vs
ZiwgcmVzdWx0cyk6Ci0gICAgICAgIGlmIG5vdCBzZWxmLl9jYW5fdHJ1c3RfcmVzdWx0cyhyZXN1
bHRzKToKKyAgICBkZWYgdW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZChzZWxmLCByZXN1bHRz
KToKKyAgICAgICAgaWYgbm90IHNlbGYuX2hhc19mYWlsdXJlcyhyZXN1bHRzKToKKyAgICAgICAg
ICAgIHJldHVybiBOb25lCisgICAgICAgIGlmIG5vdCBzZWxmLl9mYWlsdXJlc19hcmVfYm91bmRl
ZDoKICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIHJldHVybiBzZXQocmVzdWx0cy5m
YWlsaW5nX3Rlc3RzKCkpIC0gc2VsZi5fZmFpbHVyZXMKIAogICAgIGRlZiBzaHJpbmtfZXhwZWN0
ZWRfZmFpbHVyZXMoc2VsZiwgcmVzdWx0cywgcnVuX3N1Y2Nlc3MpOgogICAgICAgICBpZiBydW5f
c3VjY2VzczoKICAgICAgICAgICAgIHNlbGYuX2ZhaWx1cmVzID0gc2V0KCkKKyAgICAgICAgICAg
IHNlbGYuX2ZhaWx1cmVzX2FyZV9ib3VuZGVkID0gVHJ1ZQogICAgICAgICBlbGlmIHNlbGYuX2Nh
bl90cnVzdF9yZXN1bHRzKHJlc3VsdHMpOgogICAgICAgICAgICAgIyBSZW1vdmUgYWxsIGV4cGVj
dGVkIGZhaWx1cmVzIHdoaWNoIGFyZSBub3QgaW4gdGhlIG5ldyBmYWlsaW5nIHJlc3VsdHMuCiAg
ICAgICAgICAgICBzZWxmLl9mYWlsdXJlcy5pbnRlcnNlY3Rpb25fdXBkYXRlKHNldChyZXN1bHRz
LmZhaWxpbmdfdGVzdHMoKSkpCisgICAgICAgICAgICBzZWxmLl9mYWlsdXJlc19hcmVfYm91bmRl
ZCA9IFRydWUKIAogICAgIGRlZiBncm93X2V4cGVjdGVkX2ZhaWx1cmVzKHNlbGYsIHJlc3VsdHMp
OgogICAgICAgICBpZiBub3Qgc2VsZi5fY2FuX3RydXN0X3Jlc3VsdHMocmVzdWx0cyk6CisgICAg
ICAgICAgICBzZWxmLl9mYWlsdXJlc19hcmVfYm91bmRlZCA9IEZhbHNlCiAgICAgICAgICAgICBy
ZXR1cm4KICAgICAgICAgc2VsZi5fZmFpbHVyZXMudXBkYXRlKHJlc3VsdHMuZmFpbGluZ190ZXN0
cygpKQorICAgICAgICBzZWxmLl9mYWlsdXJlc19hcmVfYm91bmRlZCA9IFRydWUKICAgICAgICAg
IyBGSVhNRTogU2hvdWxkIHdlIGFzc2VydCgpIGhlcmUgdGhhdCBleHBlY3RlZF9mYWlsdXJlcyBu
ZXZlciBjcm9zc2VzIGEgY2VydGFpbiBzaXplPwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRw
eS90b29sL2JvdC9leHBlY3RlZGZhaWx1cmVzX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRv
b2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9ib3QvZXhwZWN0ZWRmYWlsdXJlc191bml0dGVzdC5w
eQkocmV2aXNpb24gODYwMTUpCisrKyBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90L2V4
cGVjdGVkZmFpbHVyZXNfdW5pdHRlc3QucHkJKHdvcmtpbmcgY29weSkKQEAgLTczLDggKzczLDIy
IEBAIGNsYXNzIEV4cGVjdGVkRmFpbHVyZXNUZXN0KHVuaXR0ZXN0LlRlc3QKICAgICAgICAgZmFp
bHVyZXMuc2hyaW5rX2V4cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKCksIFRydWUpCiAgICAg
ICAgIHNlbGYuX2Fzc2VydF9leHBlY3RlZChmYWlsdXJlcywgWydiYXouaHRtbCddLCBGYWxzZSkK
IAotICAgIGRlZiB0ZXN0X3VuZXhwZWN0ZWRfZmFpbHVyZXMoc2VsZik6CisgICAgZGVmIHRlc3Rf
dW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZChzZWxmKToKICAgICAgICAgZmFpbHVyZXMgPSBF
eHBlY3RlZEZhaWx1cmVzKCkKICAgICAgICAgZmFpbHVyZXMuZ3Jvd19leHBlY3RlZF9mYWlsdXJl
cyhNb2NrUmVzdWx0cyhbJ2Zvby5odG1sJ10pKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhm
YWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzKE1vY2tSZXN1bHRzKFsnZm9vLmh0bWwnLCAnYmFy
Lmh0bWwnXSkpLCBzZXQoWydiYXIuaHRtbCddKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMo
ZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlcyhNb2NrUmVzdWx0cyhbJ2Jhei5odG1sJ10pKSwg
c2V0KFsnYmF6Lmh0bWwnXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVu
ZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQoTW9ja1Jlc3VsdHMoWydmb28uaHRtbCcsICdiYXIu
aHRtbCddKSksIHNldChbJ2Jhci5odG1sJ10pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhm
YWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2VydmVkKE1vY2tSZXN1bHRzKFsnYmF6Lmh0
bWwnXSkpLCBzZXQoWydiYXouaHRtbCddKSkKKyAgICAgICAgdW5ib3VuZGVkX3Jlc3VsdHMgPSBN
b2NrUmVzdWx0cyhbJ2Jhei5odG1sJywgJ3F1eC5odG1sJywgJ3RhY28uaHRtbCddLCBmYWlsdXJl
X2xpbWl0PTMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0ZWRf
ZmFpbHVyZXNfb2JzZXJ2ZWQodW5ib3VuZGVkX3Jlc3VsdHMpLCBzZXQoWydiYXouaHRtbCcsICdx
dXguaHRtbCcsICd0YWNvLmh0bWwnXSkpCisgICAgICAgIHVuYm91bmRlZF9yZXN1bHRzX3dpdGhf
ZXhpc3RpbmdfZmFpbHVyZSA9IE1vY2tSZXN1bHRzKFsnZm9vLmh0bWwnLCAnYmF6Lmh0bWwnLCAn
cXV4Lmh0bWwnLCAndGFjby5odG1sJ10sIGZhaWx1cmVfbGltaXQ9NCkKKyAgICAgICAgc2VsZi5h
c3NlcnRFcXVhbHMoZmFpbHVyZXMudW5leHBlY3RlZF9mYWlsdXJlc19vYnNlcnZlZCh1bmJvdW5k
ZWRfcmVzdWx0c193aXRoX2V4aXN0aW5nX2ZhaWx1cmUpLCBzZXQoWydiYXouaHRtbCcsICdxdXgu
aHRtbCcsICd0YWNvLmh0bWwnXSkpCisKKyAgICBkZWYgdGVzdF91bmV4cGVjdGVkX2ZhaWx1cmVz
X29ic2VydmVkX3doZW5fdHJlZV9pc19ob3NlZChzZWxmKToKKyAgICAgICAgZmFpbHVyZXMgPSBF
eHBlY3RlZEZhaWx1cmVzKCkKKyAgICAgICAgZmFpbHVyZXMuZ3Jvd19leHBlY3RlZF9mYWlsdXJl
cyhNb2NrUmVzdWx0cyhbJ2Zvby5odG1sJywgJ2JhbmFuYS5odG1sJ10sIGZhaWx1cmVfbGltaXQ9
MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVy
ZXNfb2JzZXJ2ZWQoTW9ja1Jlc3VsdHMoWydmb28uaHRtbCcsICdiYXIuaHRtbCddKSksIE5vbmUp
CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXNf
b2JzZXJ2ZWQoTW9ja1Jlc3VsdHMoWydiYXouaHRtbCddKSksIE5vbmUpCisgICAgICAgIHVuYm91
bmRlZF9yZXN1bHRzID0gTW9ja1Jlc3VsdHMoWydiYXouaHRtbCcsICdxdXguaHRtbCcsICd0YWNv
Lmh0bWwnXSwgZmFpbHVyZV9saW1pdD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmYWls
dXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2VydmVkKHVuYm91bmRlZF9yZXN1bHRzKSwgTm9u
ZSkKKyAgICAgICAgdW5ib3VuZGVkX3Jlc3VsdHNfd2l0aF9leGlzdGluZ19mYWlsdXJlID0gTW9j
a1Jlc3VsdHMoWydmb28uaHRtbCcsICdiYXouaHRtbCcsICdxdXguaHRtbCcsICd0YWNvLmh0bWwn
XSwgZmFpbHVyZV9saW1pdD00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhmYWlsdXJlcy51
bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2VydmVkKHVuYm91bmRlZF9yZXN1bHRzX3dpdGhfZXhpc3Rp
bmdfZmFpbHVyZSksIE5vbmUpCkluZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvYm90
L3BhdGNoYW5hbHlzaXN0YXNrLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0
cHkvdG9vbC9ib3QvcGF0Y2hhbmFseXNpc3Rhc2sucHkJKHJldmlzaW9uIDg2MDE1KQorKysgVG9v
bHMvU2NyaXB0cy93ZWJraXRweS90b29sL2JvdC9wYXRjaGFuYWx5c2lzdGFzay5weQkod29ya2lu
ZyBjb3B5KQpAQCAtMjIwLDcgKzIyMCw3IEBAIGNsYXNzIFBhdGNoQW5hbHlzaXNUYXNrKG9iamVj
dCk6CiAKICAgICAgICAgIyBOb3cgdGhhdCB3ZSBoYXZlIHVwZGF0ZWQgaW5mb3JtYXRpb24gYWJv
dXQgZmFpbGluZyB0ZXN0cyB3aXRoIGEgY2xlYW4gY2hlY2tvdXQsIHdlIGNhbgogICAgICAgICAj
IHRlbGwgaWYgb3VyIG9yaWdpbmFsIGZhaWx1cmVzIHdlcmUgdW5leHBlY3RlZCBhbmQgZmFpbCB0
aGUgcGF0Y2ggaWYgbmVjZXNzYXJ5LgotICAgICAgICBpZiBzZWxmLl9leHBlY3RlZF9mYWlsdXJl
cy51bmV4cGVjdGVkX2ZhaWx1cmVzKGZpcnN0X3Jlc3VsdHMpOgorICAgICAgICBpZiBzZWxmLl9l
eHBlY3RlZF9mYWlsdXJlcy51bmV4cGVjdGVkX2ZhaWx1cmVzX29ic2VydmVkKGZpcnN0X3Jlc3Vs
dHMpOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYucmVwb3J0X2ZhaWx1cmUoZmlyc3RfcmVzdWx0
c19hcmNoaXZlLCBmaXJzdF9yZXN1bHRzKQogCiAgICAgICAgICMgV2UgZG9uJ3Qga25vdyB3aGF0
J3MgZ29pbmcgb24uICBUaGUgdHJlZSBpcyBsaWtlbHkgdmVyeSByZWQgKGJleW9uZCBvdXIgbGF5
b3V0LXRlc3QtcmVzdWx0cwpJbmRleDogVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1h
bmRzL2Vhcmx5d2FybmluZ3N5c3RlbS5weQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9TY3JpcHRzL3dl
YmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lzdGVtLnB5CShyZXZpc2lvbiA4NjAx
NSkKKysrIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9vbC9jb21tYW5kcy9lYXJseXdhcm5pbmdz
eXN0ZW0ucHkJKHdvcmtpbmcgY29weSkKQEAgLTEzMCw3ICsxMzAsNyBAQCBjbGFzcyBBYnN0cmFj
dFRlc3RpbmdFV1MoQWJzdHJhY3RFYXJseVdhCiAKICAgICBkZWYgX2ZhaWxpbmdfdGVzdHNfbWVz
c2FnZShzZWxmLCB0YXNrLCBwYXRjaCk6CiAgICAgICAgIHJlc3VsdHMgPSB0YXNrLnJlc3VsdHNf
ZnJvbV9wYXRjaF90ZXN0X3J1bihwYXRjaCkKLSAgICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9
IHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXMocmVzdWx0cykKKyAg
ICAgICAgdW5leHBlY3RlZF9mYWlsdXJlcyA9IHNlbGYuX2V4cGVjdGVkX2ZhaWx1cmVzLnVuZXhw
ZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2ZWQocmVzdWx0cykKICAgICAgICAgaWYgbm90IHVuZXhwZWN0
ZWRfZmFpbHVyZXM6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICByZXR1cm4gIk5l
dyBmYWlsaW5nIHRlc3RzOlxuJXMiICUgIlxuIi5qb2luKHVuZXhwZWN0ZWRfZmFpbHVyZXMpCklu
ZGV4OiBUb29scy9TY3JpcHRzL3dlYmtpdHB5L3Rvb2wvY29tbWFuZHMvZWFybHl3YXJuaW5nc3lz
dGVtX3VuaXR0ZXN0LnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1NjcmlwdHMvd2Via2l0cHkvdG9v
bC9jb21tYW5kcy9lYXJseXdhcm5pbmdzeXN0ZW1fdW5pdHRlc3QucHkJKHJldmlzaW9uIDg2MDE1
KQorKysgVG9vbHMvU2NyaXB0cy93ZWJraXRweS90b29sL2NvbW1hbmRzL2Vhcmx5d2FybmluZ3N5
c3RlbV91bml0dGVzdC5weQkod29ya2luZyBjb3B5KQpAQCAtOTEsNyArOTEsNyBAQCBjbGFzcyBB
YnN0cmFjdFRlc3RpbmdFV1NUZXN0KFF1ZXVlc1Rlc3QpCiAgICAgICAgIGV3cy5iaW5kX3RvX3Rv
b2woTW9ja1Rvb2woKSkKICAgICAgICAgZXdzLl9vcHRpb25zID0gTW9ja09wdGlvbnMocG9ydD1O
b25lLCBjb25maXJtPUZhbHNlKQogICAgICAgICBPdXRwdXRDYXB0dXJlKCkuYXNzZXJ0X291dHB1
dHMoc2VsZiwgZXdzLmJlZ2luX3dvcmtfcXVldWUsIGV4cGVjdGVkX3N0ZGVycj1zZWxmLl9kZWZh
dWx0X2JlZ2luX3dvcmtfcXVldWVfc3RkZXJyKGV3cy5uYW1lLCBld3MuX3Rvb2wuc2NtKCkuY2hl
Y2tvdXRfcm9vdCkpCi0gICAgICAgIGV3cy5fZXhwZWN0ZWRfZmFpbHVyZXMudW5leHBlY3RlZF9m
YWlsdXJlcyA9IGxhbWJkYSByZXN1bHRzOiBzZXQoWyJmb28uaHRtbCIsICJiYXIuaHRtbCJdKQor
ICAgICAgICBld3MuX2V4cGVjdGVkX2ZhaWx1cmVzLnVuZXhwZWN0ZWRfZmFpbHVyZXNfb2JzZXJ2
ZWQgPSBsYW1iZGEgcmVzdWx0czogc2V0KFsiZm9vLmh0bWwiLCAiYmFyLmh0bWwiXSkKICAgICAg
ICAgdGFzayA9IE1vY2soKQogICAgICAgICBwYXRjaCA9IGV3cy5fdG9vbC5idWdzLmZldGNoX2F0
dGFjaG1lbnQoMTk3KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV3cy5fZmFpbGluZ190ZXN0
c19tZXNzYWdlKHRhc2ssIHBhdGNoKSwgIk5ldyBmYWlsaW5nIHRlc3RzOlxuYmFyLmh0bWxcbmZv
by5odG1sIikK
</data>
<flag name="review"
          id="85737"
          type_id="1"
          status="+"
          setter="eric"
    />
    <flag name="commit-queue"
          id="85738"
          type_id="3"
          status="+"
          setter="eric"
    />
          </attachment>
      

    </bug>

</bugzilla>