<?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>133506</bug_id>
          
          <creation_ts>2014-06-04 02:03:47 -0700</creation_ts>
          <short_desc>CSS JIT: Clean up StackAllocator</short_desc>
          <delta_ts>2014-06-05 11:40:56 -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>CSS</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="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>benjamin</cc>
    
    <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1013272</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-06-04 02:03:47 -0700</bug_when>
    <thetext>Cleaning up CSS JIT SatkcAcllocator code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013273</commentid>
    <comment_count>1</comment_count>
      <attachid>232469</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-06-04 02:06:19 -0700</bug_when>
    <thetext>Created attachment 232469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013411</commentid>
    <comment_count>2</comment_count>
      <attachid>232469</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-04 16:51:23 -0700</bug_when>
    <thetext>Comment on attachment 232469
Patch

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

Looks good to me.

&gt; Source/WebCore/cssjit/StackAllocator.h:85
&gt;          if (registerCount % 2) {
&gt; -            m_assembler.pushToSave(registerIDs[registerCount - 1]);
&gt; -            m_offsetFromTop += stackUnitInBytes;
&gt; -            stackReferences.append(StackReference(m_offsetFromTop));
&gt; +            stackReferences.append(push(registerIDs[registerCount - 1]));

WebKit coding style: the brackets should go away when the block only has one line.

&gt; Source/WebCore/cssjit/StackAllocator.h:90
&gt;          for (auto registerID : registerIDs) {
&gt; -            m_assembler.pushToSave(registerID);
&gt; -            m_offsetFromTop += stackUnitInBytes;
&gt; -            stackReferences.append(StackReference(m_offsetFromTop));
&gt; +            stackReferences.append(push(registerID));
&gt;          }

Ditto.

&gt; Source/WebCore/cssjit/StackAllocator.h:114
&gt;          if (registerCountOdd) {
&gt; -            RELEASE_ASSERT(stackReferences[registerCount - 1] == m_offsetFromTop);
&gt; -            RELEASE_ASSERT(m_offsetFromTop &gt;= stackUnitInBytes);
&gt; -            m_offsetFromTop -= stackUnitInBytes;
&gt; -            m_assembler.popToRestore(registerIDs[registerCount - 1]);
&gt; +            pop(stackReferences[registerCount - 1], registerIDs[registerCount - 1]);
&gt;          }

Ditto.

&gt; Source/WebCore/cssjit/StackAllocator.h:126
&gt;          for (unsigned i = registerCount; i &gt; 0; --i) {
&gt; -            RELEASE_ASSERT(stackReferences[i - 1] == m_offsetFromTop);
&gt; -            RELEASE_ASSERT(m_offsetFromTop &gt;= stackUnitInBytes);
&gt; -            m_offsetFromTop -= stackUnitInBytes;
&gt; -            m_assembler.popToRestore(registerIDs[i - 1]);
&gt; +            pop(stackReferences[i - 1], registerIDs[i - 1]);
&gt;          }

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013537</commentid>
    <comment_count>3</comment_count>
      <attachid>232551</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-06-05 08:34:38 -0700</bug_when>
    <thetext>Created attachment 232551
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013538</commentid>
    <comment_count>4</comment_count>
      <attachid>232469</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2014-06-05 08:34:58 -0700</bug_when>
    <thetext>Comment on attachment 232469
Patch

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

Thank you for your review.

&gt;&gt; Source/WebCore/cssjit/StackAllocator.h:85
&gt;&gt; +            stackReferences.append(push(registerIDs[registerCount - 1]));
&gt; 
&gt; WebKit coding style: the brackets should go away when the block only has one line.

Oh! I&apos;ve missed it. Thank you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013606</commentid>
    <comment_count>5</comment_count>
      <attachid>232551</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2014-06-05 11:10:36 -0700</bug_when>
    <thetext>Comment on attachment 232551
Patch

Looks good to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013613</commentid>
    <comment_count>6</comment_count>
      <attachid>232551</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-05 11:40:54 -0700</bug_when>
    <thetext>Comment on attachment 232551
Patch

Clearing flags on attachment: 232551

Committed r169621: &lt;http://trac.webkit.org/changeset/169621&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1013614</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-06-05 11:40:56 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232469</attachid>
            <date>2014-06-04 02:06:19 -0700</date>
            <delta_ts>2014-06-05 08:34:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133506-20140604180633.patch</filename>
            <type>text/plain</type>
            <size>8556</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NTc5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDUwMDk5MDZiYTYxOTM5
MWU4NTA4MzY1MGQ4OGJjMzIxNWIxMjY1OC4uZWJmZjQyNDJkNGFjZjE3N2EzNDg3OWRkYTg4NGM3
ZmM2NTUwOGM1MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTA2LTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIENTUyBKSVQ6IENs
ZWFuIHVwIFN0YWNrQWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzM1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbmluZyB1cCBDU1MgSkl0IFN0YWNrQWxsb2NhdG9yIGNvZGUuIFNo
YXJpbmcgcHVzaCAvIHBvcCBjb2RlIGFuZAorICAgICAgICB1c2luZyBpbmZvcm1hdGlvbiBwcm92
aWRlZCBieSBNYWNyb0Fzc2VtYmxlciBtb3JlIGFnZ3Jlc3NpdmVseQorICAgICAgICB0byBkcm9w
IGlmZGVmcy4KKworICAgICAgICAqIGNzc2ppdC9TdGFja0FsbG9jYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3RhY2tBbGxvY2F0b3I6OmFsbG9jYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAg
IChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpTdGFj
a0FsbG9jYXRvcjo6cG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YWNrQWxsb2NhdG9yOjpwb3BB
bmREaXNjYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YWNrQWxsb2NhdG9yOjpwb3BBbmREaXNj
YXJkVXBUbyk6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6YWxpZ25TdGFja1By
ZUZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6dW5hbGln
blN0YWNrUG9zdEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRv
cjo6c3RhY2tVbml0SW5CeXRlcyk6CisKIDIwMTQtMDYtMDMgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBOZWVkIHRvIGNoZWNrIGludmFsaWQgc2No
ZW1lIGluIG5hdmlnYXRvciBjb250ZW50IHV0aWxzIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvY3Nzaml0L1N0YWNrQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU3RhY2tB
bGxvY2F0b3IuaAppbmRleCA5MDJmMjkwMDgwOWM5NjU3MzgwMjIzZTBiMDYyNDA5MTcwMmE3OGE2
Li5hNDRiMjE0MzRlZGRiMzk1OTBhYWNkMTYyNWRhNjZhZWI2ZjgxMTI4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU3RhY2tBbGxvY2F0b3IuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9jc3NqaXQvU3RhY2tBbGxvY2F0b3IuaApAQCAtNjMsOCArNjMsOCBAQCBjbGFzcyBTdGFja0Fs
bG9jYXRvciB7CiAgICAgU3RhY2tSZWZlcmVuY2UgYWxsb2NhdGVVbmluaXRpYWxpemVkKCkKICAg
ICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2hhc0Z1bmN0aW9uQ2FsbFBhZGRpbmcpOwot
ICAgICAgICBtX2Fzc2VtYmxlci5hZGRQdHJOb0ZsYWdzKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlRy
dXN0ZWRJbW0zMigtc3RhY2tVbml0SW5CeXRlcyksIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0YWNr
UG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9vZmZzZXRGcm9tVG9wICs9IHN0YWNrVW5pdElu
Qnl0ZXM7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0ck5vRmxhZ3MoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKC1zdGFja1VuaXRJbkJ5dGVzKCkpLCBKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCArPSBz
dGFja1VuaXRJbkJ5dGVzKCk7CiAgICAgICAgIHJldHVybiBTdGFja1JlZmVyZW5jZShtX29mZnNl
dEZyb21Ub3ApOwogICAgIH0KIApAQCAtNzcsMjAgKzc3LDE2IEBAIGNsYXNzIFN0YWNrQWxsb2Nh
dG9yIHsKICNpZiBDUFUoQVJNNjQpCiAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBy
ZWdpc3RlckNvdW50IC0gMTsgaSArPSAyKSB7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5wdXNo
UGFpcihyZWdpc3RlcklEc1tpICsgMV0sIHJlZ2lzdGVySURzW2ldKTsKLSAgICAgICAgICAgIG1f
b2Zmc2V0RnJvbVRvcCArPSBzdGFja1VuaXRJbkJ5dGVzOwotICAgICAgICAgICAgc3RhY2tSZWZl
cmVuY2VzLmFwcGVuZChTdGFja1JlZmVyZW5jZShtX29mZnNldEZyb21Ub3AgLSBzdGFja1VuaXRJ
bkJ5dGVzIC8gMikpOworICAgICAgICAgICAgbV9vZmZzZXRGcm9tVG9wICs9IHN0YWNrVW5pdElu
Qnl0ZXMoKTsKKyAgICAgICAgICAgIHN0YWNrUmVmZXJlbmNlcy5hcHBlbmQoU3RhY2tSZWZlcmVu
Y2UobV9vZmZzZXRGcm9tVG9wIC0gc3RhY2tVbml0SW5CeXRlcygpIC8gMikpOwogICAgICAgICAg
ICAgc3RhY2tSZWZlcmVuY2VzLmFwcGVuZChTdGFja1JlZmVyZW5jZShtX29mZnNldEZyb21Ub3Ap
KTsKICAgICAgICAgfQogICAgICAgICBpZiAocmVnaXN0ZXJDb3VudCAlIDIpIHsKLSAgICAgICAg
ICAgIG1fYXNzZW1ibGVyLnB1c2hUb1NhdmUocmVnaXN0ZXJJRHNbcmVnaXN0ZXJDb3VudCAtIDFd
KTsKLSAgICAgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCArPSBzdGFja1VuaXRJbkJ5dGVzOwotICAg
ICAgICAgICAgc3RhY2tSZWZlcmVuY2VzLmFwcGVuZChTdGFja1JlZmVyZW5jZShtX29mZnNldEZy
b21Ub3ApKTsKKyAgICAgICAgICAgIHN0YWNrUmVmZXJlbmNlcy5hcHBlbmQocHVzaChyZWdpc3Rl
cklEc1tyZWdpc3RlckNvdW50IC0gMV0pKTsKICAgICAgICAgfQogI2Vsc2UKICAgICAgICAgZm9y
IChhdXRvIHJlZ2lzdGVySUQgOiByZWdpc3RlcklEcykgewotICAgICAgICAgICAgbV9hc3NlbWJs
ZXIucHVzaFRvU2F2ZShyZWdpc3RlcklEKTsKLSAgICAgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCAr
PSBzdGFja1VuaXRJbkJ5dGVzOwotICAgICAgICAgICAgc3RhY2tSZWZlcmVuY2VzLmFwcGVuZChT
dGFja1JlZmVyZW5jZShtX29mZnNldEZyb21Ub3ApKTsKKyAgICAgICAgICAgIHN0YWNrUmVmZXJl
bmNlcy5hcHBlbmQocHVzaChyZWdpc3RlcklEKSk7CiAgICAgICAgIH0KICNlbmRpZgogICAgICAg
ICByZXR1cm4gc3RhY2tSZWZlcmVuY2VzOwpAQCAtMTAwLDYyICs5Niw1NiBAQCBjbGFzcyBTdGFj
a0FsbG9jYXRvciB7CiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9oYXNGdW5jdGlv
bkNhbGxQYWRkaW5nKTsKICAgICAgICAgbV9hc3NlbWJsZXIucHVzaFRvU2F2ZShyZWdpc3RlcklE
KTsKLSAgICAgICAgbV9vZmZzZXRGcm9tVG9wICs9IHN0YWNrVW5pdEluQnl0ZXM7CisgICAgICAg
IG1fb2Zmc2V0RnJvbVRvcCArPSBzdGFja1VuaXRJbkJ5dGVzKCk7CiAgICAgICAgIHJldHVybiBT
dGFja1JlZmVyZW5jZShtX29mZnNldEZyb21Ub3ApOwogICAgIH0KIAogICAgIHZvaWQgcG9wKGNv
bnN0IFZlY3RvcjxTdGFja1JlZmVyZW5jZT4mIHN0YWNrUmVmZXJlbmNlcywgY29uc3QgVmVjdG9y
PEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQ+JiByZWdpc3RlcklEcykKICAgICB7CiAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2hhc0Z1bmN0aW9uQ2FsbFBhZGRpbmcpOwotICAgICAg
ICAKKwogICAgICAgICB1bnNpZ25lZCByZWdpc3RlckNvdW50ID0gcmVnaXN0ZXJJRHMuc2l6ZSgp
OwogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGFja1JlZmVyZW5jZXMuc2l6ZSgpID09IHJlZ2lz
dGVyQ291bnQpOwogI2lmIENQVShBUk02NCkKLSAgICAgICAgQVNTRVJUKG1fb2Zmc2V0RnJvbVRv
cCA+PSBzdGFja1VuaXRJbkJ5dGVzICogKChyZWdpc3RlckNvdW50ICsgMSkgLyAyKSk7CisgICAg
ICAgIEFTU0VSVChtX29mZnNldEZyb21Ub3AgPj0gc3RhY2tVbml0SW5CeXRlcygpICogKChyZWdp
c3RlckNvdW50ICsgMSkgLyAyKSk7CiAgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnRPZGQg
PSByZWdpc3RlckNvdW50ICUgMjsKICAgICAgICAgaWYgKHJlZ2lzdGVyQ291bnRPZGQpIHsKLSAg
ICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrUmVmZXJlbmNlc1tyZWdpc3RlckNvdW50IC0g
MV0gPT0gbV9vZmZzZXRGcm9tVG9wKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb2Zm
c2V0RnJvbVRvcCA+PSBzdGFja1VuaXRJbkJ5dGVzKTsKLSAgICAgICAgICAgIG1fb2Zmc2V0RnJv
bVRvcCAtPSBzdGFja1VuaXRJbkJ5dGVzOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIucG9wVG9S
ZXN0b3JlKHJlZ2lzdGVySURzW3JlZ2lzdGVyQ291bnQgLSAxXSk7CisgICAgICAgICAgICBwb3Ao
c3RhY2tSZWZlcmVuY2VzW3JlZ2lzdGVyQ291bnQgLSAxXSwgcmVnaXN0ZXJJRHNbcmVnaXN0ZXJD
b3VudCAtIDFdKTsKICAgICAgICAgfQogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSByZWdpc3Rl
ckNvdW50IC0gcmVnaXN0ZXJDb3VudE9kZDsgaSA+IDA7IGkgLT0gMikgewogICAgICAgICAgICAg
UkVMRUFTRV9BU1NFUlQoc3RhY2tSZWZlcmVuY2VzW2kgLSAxXSA9PSBtX29mZnNldEZyb21Ub3Ap
OwotICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoc3RhY2tSZWZlcmVuY2VzW2kgLSAyXSA9PSBt
X29mZnNldEZyb21Ub3AgLSBzdGFja1VuaXRJbkJ5dGVzIC8gMik7Ci0gICAgICAgICAgICBSRUxF
QVNFX0FTU0VSVChtX29mZnNldEZyb21Ub3AgPj0gc3RhY2tVbml0SW5CeXRlcyk7Ci0gICAgICAg
ICAgICBtX29mZnNldEZyb21Ub3AgLT0gc3RhY2tVbml0SW5CeXRlczsKKyAgICAgICAgICAgIFJF
TEVBU0VfQVNTRVJUKHN0YWNrUmVmZXJlbmNlc1tpIC0gMl0gPT0gbV9vZmZzZXRGcm9tVG9wIC0g
c3RhY2tVbml0SW5CeXRlcygpIC8gMik7CisgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChtX29m
ZnNldEZyb21Ub3AgPj0gc3RhY2tVbml0SW5CeXRlcygpKTsKKyAgICAgICAgICAgIG1fb2Zmc2V0
RnJvbVRvcCAtPSBzdGFja1VuaXRJbkJ5dGVzKCk7CiAgICAgICAgICAgICBtX2Fzc2VtYmxlci5w
b3BQYWlyKHJlZ2lzdGVySURzW2kgLSAxXSwgcmVnaXN0ZXJJRHNbaSAtIDJdKTsKICAgICAgICAg
fQogI2Vsc2UKLSAgICAgICAgQVNTRVJUKG1fb2Zmc2V0RnJvbVRvcCA+PSBzdGFja1VuaXRJbkJ5
dGVzICogcmVnaXN0ZXJDb3VudCk7CisgICAgICAgIEFTU0VSVChtX29mZnNldEZyb21Ub3AgPj0g
c3RhY2tVbml0SW5CeXRlcygpICogcmVnaXN0ZXJDb3VudCk7CiAgICAgICAgIGZvciAodW5zaWdu
ZWQgaSA9IHJlZ2lzdGVyQ291bnQ7IGkgPiAwOyAtLWkpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YWNrUmVmZXJlbmNlc1tpIC0gMV0gPT0gbV9vZmZzZXRGcm9tVG9wKTsKLSAgICAg
ICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb2Zmc2V0RnJvbVRvcCA+PSBzdGFja1VuaXRJbkJ5dGVz
KTsKLSAgICAgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCAtPSBzdGFja1VuaXRJbkJ5dGVzOwotICAg
ICAgICAgICAgbV9hc3NlbWJsZXIucG9wVG9SZXN0b3JlKHJlZ2lzdGVySURzW2kgLSAxXSk7Cisg
ICAgICAgICAgICBwb3Aoc3RhY2tSZWZlcmVuY2VzW2kgLSAxXSwgcmVnaXN0ZXJJRHNbaSAtIDFd
KTsKICAgICAgICAgfQogI2VuZGlmCiAgICAgfQotICAgIAorCiAgICAgdm9pZCBwb3AoU3RhY2tS
ZWZlcmVuY2Ugc3RhY2tSZWZlcmVuY2UsIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlJlZ2lzdGVySUQg
cmVnaXN0ZXJJRCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrUmVmZXJlbmNl
ID09IG1fb2Zmc2V0RnJvbVRvcCk7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2hhc0Z1bmN0
aW9uQ2FsbFBhZGRpbmcpOwotICAgICAgICBSRUxFQVNFX0FTU0VSVChtX29mZnNldEZyb21Ub3Ag
Pj0gc3RhY2tVbml0SW5CeXRlcyk7Ci0gICAgICAgIG1fb2Zmc2V0RnJvbVRvcCAtPSBzdGFja1Vu
aXRJbkJ5dGVzOworICAgICAgICBSRUxFQVNFX0FTU0VSVChtX29mZnNldEZyb21Ub3AgPj0gc3Rh
Y2tVbml0SW5CeXRlcygpKTsKKyAgICAgICAgbV9vZmZzZXRGcm9tVG9wIC09IHN0YWNrVW5pdElu
Qnl0ZXMoKTsKICAgICAgICAgbV9hc3NlbWJsZXIucG9wVG9SZXN0b3JlKHJlZ2lzdGVySUQpOwog
ICAgIH0KIAogICAgIHZvaWQgcG9wQW5kRGlzY2FyZChTdGFja1JlZmVyZW5jZSBzdGFja1JlZmVy
ZW5jZSkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrUmVmZXJlbmNlID09IG1f
b2Zmc2V0RnJvbVRvcCk7Ci0gICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0cihKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhY2tVbml0SW5CeXRlcyksIEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9vZmZzZXRGcm9tVG9wIC09IHN0
YWNrVW5pdEluQnl0ZXM7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0cihKU0M6Ok1hY3JvQXNz
ZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhY2tVbml0SW5CeXRlcygpKSwgSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICBtX29mZnNldEZyb21Ub3AgLT0g
c3RhY2tVbml0SW5CeXRlcygpOwogICAgIH0KIAogICAgIHZvaWQgcG9wQW5kRGlzY2FyZFVwVG8o
U3RhY2tSZWZlcmVuY2Ugc3RhY2tSZWZlcmVuY2UpCiAgICAgewotICAgICAgICB1bnNpZ25lZCBw
b3NpdGlvbkJlZm9yZVN0YWNrUmVmZXJlbmNlID0gc3RhY2tSZWZlcmVuY2UgLSBzdGFja1VuaXRJ
bkJ5dGVzOworICAgICAgICB1bnNpZ25lZCBwb3NpdGlvbkJlZm9yZVN0YWNrUmVmZXJlbmNlID0g
c3RhY2tSZWZlcmVuY2UgLSBzdGFja1VuaXRJbkJ5dGVzKCk7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKHBvc2l0aW9uQmVmb3JlU3RhY2tSZWZlcmVuY2UgPCBtX29mZnNldEZyb21Ub3ApOwogCiAg
ICAgICAgIHVuc2lnbmVkIHN0YWNrRGVsdGEgPSBtX29mZnNldEZyb21Ub3AgLSBwb3NpdGlvbkJl
Zm9yZVN0YWNrUmVmZXJlbmNlOwpAQCAtMTY3LDEwICsxNTcsMTAgQEAgY2xhc3MgU3RhY2tBbGxv
Y2F0b3IgewogICAgIHsKICNpZiBDUFUoWDg2XzY0KQogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9oYXNGdW5jdGlvbkNhbGxQYWRkaW5nKTsKLSAgICAgICAgdW5zaWduZWQgdG9wQWxpZ25tZW50
ID0gc3RhY2tVbml0SW5CeXRlczsKKyAgICAgICAgdW5zaWduZWQgdG9wQWxpZ25tZW50ID0gc3Rh
Y2tVbml0SW5CeXRlcygpOwogICAgICAgICBpZiAoKHRvcEFsaWdubWVudCArIG1fb2Zmc2V0RnJv
bVRvcCkgJSAxNikgewogICAgICAgICAgICAgbV9oYXNGdW5jdGlvbkNhbGxQYWRkaW5nID0gdHJ1
ZTsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0ck5vRmxhZ3MoSlNDOjpNYWNyb0Fzc2Vt
Ymxlcjo6VHJ1c3RlZEltbTMyKC1zdGFja1VuaXRJbkJ5dGVzKSwgSlNDOjpNYWNyb0Fzc2VtYmxl
cjo6c3RhY2tQb2ludGVyUmVnaXN0ZXIpOworICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkUHRy
Tm9GbGFncyhKU0M6Ok1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoLXN0YWNrVW5pdEluQnl0
ZXMoKSksIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKICAgICAg
ICAgfQogI2VuZGlmCiAgICAgfQpAQCAtMTc5LDcgKzE2OSw3IEBAIGNsYXNzIFN0YWNrQWxsb2Nh
dG9yIHsKICAgICB7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgaWYgKG1faGFzRnVuY3Rpb25D
YWxsUGFkZGluZykgewotICAgICAgICAgICAgbV9hc3NlbWJsZXIuYWRkUHRyTm9GbGFncyhKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpUcnVzdGVkSW1tMzIoc3RhY2tVbml0SW5CeXRlcyksIEpTQzo6TWFj
cm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZFB0ck5vRmxhZ3MoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNr
VW5pdEluQnl0ZXMoKSksIEpTQzo6TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVy
KTsKICAgICAgICAgICAgIG1faGFzRnVuY3Rpb25DYWxsUGFkZGluZyA9IGZhbHNlOwogICAgICAg
ICB9CiAjZW5kaWYKQEAgLTIyNCwxMyArMjE0LDEwIEBAIGNsYXNzIFN0YWNrQWxsb2NhdG9yIHsK
ICAgICB9CiAKIHByaXZhdGU6Ci0jaWYgQ1BVKEFSTTY0KQotICAgIHN0YXRpYyBjb25zdCB1bnNp
Z25lZCBzdGFja1VuaXRJbkJ5dGVzID0gMTY7Ci0jZWxpZiBDUFUoWDg2XzY0KQotICAgIHN0YXRp
YyBjb25zdCB1bnNpZ25lZCBzdGFja1VuaXRJbkJ5dGVzID0gODsKLSNlbHNlCi0jZXJyb3IgU3Rh
Y2sgVW5pdCBTaXplIGlzIHVuZGVmaW5lZC4KLSNlbmRpZgorICAgIHN0YXRpYyB1bnNpZ25lZCBz
dGFja1VuaXRJbkJ5dGVzKCkKKyAgICB7CisgICAgICAgIHJldHVybiBKU0M6Ok1hY3JvQXNzZW1i
bGVyOjpwdXNoVG9TYXZlQnl0ZU9mZnNldCgpOworICAgIH0KIAogICAgIHZvaWQgcmVzZXQoKQog
ICAgIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>232551</attachid>
            <date>2014-06-05 08:34:38 -0700</date>
            <delta_ts>2014-06-05 11:40:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-133506-20140606003455.patch</filename>
            <type>text/plain</type>
            <size>8737</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTY5NjE0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOTRlYWY0YzM4MmUxMzE3
NDI3ZmI5MDI3MmQ2MWY0Mjk2YTRiZjNkMi4uYTgyODdjNTY2YThhZjZkM2YwNzYyZWFmYTk4MjY1
OWQ4Y2JjYWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDE0LTA2LTA0ICBZdXN1
a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCisgICAgICAgIENTUyBKSVQ6IENs
ZWFuIHVwIFN0YWNrQWxsb2NhdG9yCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xMzM1MDYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBDbGVhbmluZyB1cCBDU1MgSkl0IFN0YWNrQWxsb2NhdG9yIGNvZGUuIFNo
YXJpbmcgcHVzaCAvIHBvcCBjb2RlIGFuZAorICAgICAgICB1c2luZyBpbmZvcm1hdGlvbiBwcm92
aWRlZCBieSBNYWNyb0Fzc2VtYmxlciBtb3JlIGFnZ3Jlc3NpdmVseQorICAgICAgICB0byBkcm9w
IGlmZGVmcy4KKworICAgICAgICAqIGNzc2ppdC9TdGFja0FsbG9jYXRvci5oOgorICAgICAgICAo
V2ViQ29yZTo6U3RhY2tBbGxvY2F0b3I6OmFsbG9jYXRlVW5pbml0aWFsaXplZCk6CisgICAgICAg
IChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6cHVzaCk6CisgICAgICAgIChXZWJDb3JlOjpTdGFj
a0FsbG9jYXRvcjo6cG9wKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YWNrQWxsb2NhdG9yOjpwb3BB
bmREaXNjYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlN0YWNrQWxsb2NhdG9yOjpwb3BBbmREaXNj
YXJkVXBUbyk6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6YWxpZ25TdGFja1By
ZUZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRvcjo6dW5hbGln
blN0YWNrUG9zdEZ1bmN0aW9uQ2FsbCk6CisgICAgICAgIChXZWJDb3JlOjpTdGFja0FsbG9jYXRv
cjo6c3RhY2tVbml0SW5CeXRlcyk6CisKIDIwMTQtMDYtMDUgIEtpcmFuICA8a2lyYW4uZ3VkdXJ1
QHNhbXN1bmcuY29tPgogCiAgICAgICAgIFtNZWRpYVN0cmVhbV0gTWVkaWFTdHJlYW0uYWRkVHJh
Y2sgc2hvdWxkIG5vdCBjaGVjayBmb3IgdHJhY2tzIGVuZGVkIHN0YXRlLgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3Nzaml0L1N0YWNrQWxsb2NhdG9yLmggYi9Tb3VyY2UvV2ViQ29yZS9j
c3NqaXQvU3RhY2tBbGxvY2F0b3IuaAppbmRleCA5MDJmMjkwMDgwOWM5NjU3MzgwMjIzZTBiMDYy
NDA5MTcwMmE3OGE2Li4xMGNkYmZlZWZjZjA4MmQwMGQzOTQwMmNlYTNjODEyN2QyNzM1ZjVmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3NqaXQvU3RhY2tBbGxvY2F0b3IuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3NqaXQvU3RhY2tBbGxvY2F0b3IuaApAQCAtNjMsOCArNjMsOCBAQCBj
bGFzcyBTdGFja0FsbG9jYXRvciB7CiAgICAgU3RhY2tSZWZlcmVuY2UgYWxsb2NhdGVVbmluaXRp
YWxpemVkKCkKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFtX2hhc0Z1bmN0aW9uQ2Fs
bFBhZGRpbmcpOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGRQdHJOb0ZsYWdzKEpTQzo6TWFjcm9B
c3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtc3RhY2tVbml0SW5CeXRlcyksIEpTQzo6TWFjcm9Bc3Nl
bWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKLSAgICAgICAgbV9vZmZzZXRGcm9tVG9wICs9
IHN0YWNrVW5pdEluQnl0ZXM7CisgICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0ck5vRmxhZ3MoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1zdGFja1VuaXRJbkJ5dGVzKCkpLCBKU0M6
Ok1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgIG1fb2Zmc2V0
RnJvbVRvcCArPSBzdGFja1VuaXRJbkJ5dGVzKCk7CiAgICAgICAgIHJldHVybiBTdGFja1JlZmVy
ZW5jZShtX29mZnNldEZyb21Ub3ApOwogICAgIH0KIApAQCAtNzcsMjEgKzc3LDE1IEBAIGNsYXNz
IFN0YWNrQWxsb2NhdG9yIHsKICNpZiBDUFUoQVJNNjQpCiAgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCByZWdpc3RlckNvdW50IC0gMTsgaSArPSAyKSB7CiAgICAgICAgICAgICBtX2Fz
c2VtYmxlci5wdXNoUGFpcihyZWdpc3RlcklEc1tpICsgMV0sIHJlZ2lzdGVySURzW2ldKTsKLSAg
ICAgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCArPSBzdGFja1VuaXRJbkJ5dGVzOwotICAgICAgICAg
ICAgc3RhY2tSZWZlcmVuY2VzLmFwcGVuZChTdGFja1JlZmVyZW5jZShtX29mZnNldEZyb21Ub3Ag
LSBzdGFja1VuaXRJbkJ5dGVzIC8gMikpOwotICAgICAgICAgICAgc3RhY2tSZWZlcmVuY2VzLmFw
cGVuZChTdGFja1JlZmVyZW5jZShtX29mZnNldEZyb21Ub3ApKTsKLSAgICAgICAgfQotICAgICAg
ICBpZiAocmVnaXN0ZXJDb3VudCAlIDIpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLnB1c2hU
b1NhdmUocmVnaXN0ZXJJRHNbcmVnaXN0ZXJDb3VudCAtIDFdKTsKLSAgICAgICAgICAgIG1fb2Zm
c2V0RnJvbVRvcCArPSBzdGFja1VuaXRJbkJ5dGVzOworICAgICAgICAgICAgbV9vZmZzZXRGcm9t
VG9wICs9IHN0YWNrVW5pdEluQnl0ZXMoKTsKKyAgICAgICAgICAgIHN0YWNrUmVmZXJlbmNlcy5h
cHBlbmQoU3RhY2tSZWZlcmVuY2UobV9vZmZzZXRGcm9tVG9wIC0gc3RhY2tVbml0SW5CeXRlcygp
IC8gMikpOwogICAgICAgICAgICAgc3RhY2tSZWZlcmVuY2VzLmFwcGVuZChTdGFja1JlZmVyZW5j
ZShtX29mZnNldEZyb21Ub3ApKTsKICAgICAgICAgfQorICAgICAgICBpZiAocmVnaXN0ZXJDb3Vu
dCAlIDIpCisgICAgICAgICAgICBzdGFja1JlZmVyZW5jZXMuYXBwZW5kKHB1c2gocmVnaXN0ZXJJ
RHNbcmVnaXN0ZXJDb3VudCAtIDFdKSk7CiAjZWxzZQotICAgICAgICBmb3IgKGF1dG8gcmVnaXN0
ZXJJRCA6IHJlZ2lzdGVySURzKSB7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5wdXNoVG9TYXZl
KHJlZ2lzdGVySUQpOwotICAgICAgICAgICAgbV9vZmZzZXRGcm9tVG9wICs9IHN0YWNrVW5pdElu
Qnl0ZXM7Ci0gICAgICAgICAgICBzdGFja1JlZmVyZW5jZXMuYXBwZW5kKFN0YWNrUmVmZXJlbmNl
KG1fb2Zmc2V0RnJvbVRvcCkpOwotICAgICAgICB9CisgICAgICAgIGZvciAoYXV0byByZWdpc3Rl
cklEIDogcmVnaXN0ZXJJRHMpCisgICAgICAgICAgICBzdGFja1JlZmVyZW5jZXMuYXBwZW5kKHB1
c2gocmVnaXN0ZXJJRCkpOwogI2VuZGlmCiAgICAgICAgIHJldHVybiBzdGFja1JlZmVyZW5jZXM7
CiAgICAgfQpAQCAtMTAwLDYyICs5NCw1NCBAQCBjbGFzcyBTdGFja0FsbG9jYXRvciB7CiAgICAg
ewogICAgICAgICBSRUxFQVNFX0FTU0VSVCghbV9oYXNGdW5jdGlvbkNhbGxQYWRkaW5nKTsKICAg
ICAgICAgbV9hc3NlbWJsZXIucHVzaFRvU2F2ZShyZWdpc3RlcklEKTsKLSAgICAgICAgbV9vZmZz
ZXRGcm9tVG9wICs9IHN0YWNrVW5pdEluQnl0ZXM7CisgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCAr
PSBzdGFja1VuaXRJbkJ5dGVzKCk7CiAgICAgICAgIHJldHVybiBTdGFja1JlZmVyZW5jZShtX29m
ZnNldEZyb21Ub3ApOwogICAgIH0KIAogICAgIHZvaWQgcG9wKGNvbnN0IFZlY3RvcjxTdGFja1Jl
ZmVyZW5jZT4mIHN0YWNrUmVmZXJlbmNlcywgY29uc3QgVmVjdG9yPEpTQzo6TWFjcm9Bc3NlbWJs
ZXI6OlJlZ2lzdGVySUQ+JiByZWdpc3RlcklEcykKICAgICB7CiAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFtX2hhc0Z1bmN0aW9uQ2FsbFBhZGRpbmcpOwotICAgICAgICAKKwogICAgICAgICB1bnNp
Z25lZCByZWdpc3RlckNvdW50ID0gcmVnaXN0ZXJJRHMuc2l6ZSgpOwogICAgICAgICBSRUxFQVNF
X0FTU0VSVChzdGFja1JlZmVyZW5jZXMuc2l6ZSgpID09IHJlZ2lzdGVyQ291bnQpOwogI2lmIENQ
VShBUk02NCkKLSAgICAgICAgQVNTRVJUKG1fb2Zmc2V0RnJvbVRvcCA+PSBzdGFja1VuaXRJbkJ5
dGVzICogKChyZWdpc3RlckNvdW50ICsgMSkgLyAyKSk7CisgICAgICAgIEFTU0VSVChtX29mZnNl
dEZyb21Ub3AgPj0gc3RhY2tVbml0SW5CeXRlcygpICogKChyZWdpc3RlckNvdW50ICsgMSkgLyAy
KSk7CiAgICAgICAgIHVuc2lnbmVkIHJlZ2lzdGVyQ291bnRPZGQgPSByZWdpc3RlckNvdW50ICUg
MjsKLSAgICAgICAgaWYgKHJlZ2lzdGVyQ291bnRPZGQpIHsKLSAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKHN0YWNrUmVmZXJlbmNlc1tyZWdpc3RlckNvdW50IC0gMV0gPT0gbV9vZmZzZXRGcm9t
VG9wKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKG1fb2Zmc2V0RnJvbVRvcCA+PSBzdGFj
a1VuaXRJbkJ5dGVzKTsKLSAgICAgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCAtPSBzdGFja1VuaXRJ
bkJ5dGVzOwotICAgICAgICAgICAgbV9hc3NlbWJsZXIucG9wVG9SZXN0b3JlKHJlZ2lzdGVySURz
W3JlZ2lzdGVyQ291bnQgLSAxXSk7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKHJlZ2lzdGVyQ291
bnRPZGQpCisgICAgICAgICAgICBwb3Aoc3RhY2tSZWZlcmVuY2VzW3JlZ2lzdGVyQ291bnQgLSAx
XSwgcmVnaXN0ZXJJRHNbcmVnaXN0ZXJDb3VudCAtIDFdKTsKICAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gcmVnaXN0ZXJDb3VudCAtIHJlZ2lzdGVyQ291bnRPZGQ7IGkgPiAwOyBpIC09IDIpIHsK
ICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrUmVmZXJlbmNlc1tpIC0gMV0gPT0gbV9v
ZmZzZXRGcm9tVG9wKTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHN0YWNrUmVmZXJlbmNl
c1tpIC0gMl0gPT0gbV9vZmZzZXRGcm9tVG9wIC0gc3RhY2tVbml0SW5CeXRlcyAvIDIpOwotICAg
ICAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vZmZzZXRGcm9tVG9wID49IHN0YWNrVW5pdEluQnl0
ZXMpOwotICAgICAgICAgICAgbV9vZmZzZXRGcm9tVG9wIC09IHN0YWNrVW5pdEluQnl0ZXM7Cisg
ICAgICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGFja1JlZmVyZW5jZXNbaSAtIDJdID09IG1fb2Zm
c2V0RnJvbVRvcCAtIHN0YWNrVW5pdEluQnl0ZXMoKSAvIDIpOworICAgICAgICAgICAgUkVMRUFT
RV9BU1NFUlQobV9vZmZzZXRGcm9tVG9wID49IHN0YWNrVW5pdEluQnl0ZXMoKSk7CisgICAgICAg
ICAgICBtX29mZnNldEZyb21Ub3AgLT0gc3RhY2tVbml0SW5CeXRlcygpOwogICAgICAgICAgICAg
bV9hc3NlbWJsZXIucG9wUGFpcihyZWdpc3RlcklEc1tpIC0gMV0sIHJlZ2lzdGVySURzW2kgLSAy
XSk7CiAgICAgICAgIH0KICNlbHNlCi0gICAgICAgIEFTU0VSVChtX29mZnNldEZyb21Ub3AgPj0g
c3RhY2tVbml0SW5CeXRlcyAqIHJlZ2lzdGVyQ291bnQpOwotICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSByZWdpc3RlckNvdW50OyBpID4gMDsgLS1pKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVChzdGFja1JlZmVyZW5jZXNbaSAtIDFdID09IG1fb2Zmc2V0RnJvbVRvcCk7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVChtX29mZnNldEZyb21Ub3AgPj0gc3RhY2tVbml0SW5CeXRlcyk7
Ci0gICAgICAgICAgICBtX29mZnNldEZyb21Ub3AgLT0gc3RhY2tVbml0SW5CeXRlczsKLSAgICAg
ICAgICAgIG1fYXNzZW1ibGVyLnBvcFRvUmVzdG9yZShyZWdpc3RlcklEc1tpIC0gMV0pOwotICAg
ICAgICB9CisgICAgICAgIEFTU0VSVChtX29mZnNldEZyb21Ub3AgPj0gc3RhY2tVbml0SW5CeXRl
cygpICogcmVnaXN0ZXJDb3VudCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IHJlZ2lzdGVy
Q291bnQ7IGkgPiAwOyAtLWkpCisgICAgICAgICAgICBwb3Aoc3RhY2tSZWZlcmVuY2VzW2kgLSAx
XSwgcmVnaXN0ZXJJRHNbaSAtIDFdKTsKICNlbmRpZgogICAgIH0KLSAgICAKKwogICAgIHZvaWQg
cG9wKFN0YWNrUmVmZXJlbmNlIHN0YWNrUmVmZXJlbmNlLCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpS
ZWdpc3RlcklEIHJlZ2lzdGVySUQpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGFj
a1JlZmVyZW5jZSA9PSBtX29mZnNldEZyb21Ub3ApOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
bV9oYXNGdW5jdGlvbkNhbGxQYWRkaW5nKTsKLSAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vZmZz
ZXRGcm9tVG9wID49IHN0YWNrVW5pdEluQnl0ZXMpOwotICAgICAgICBtX29mZnNldEZyb21Ub3Ag
LT0gc3RhY2tVbml0SW5CeXRlczsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9vZmZzZXRGcm9t
VG9wID49IHN0YWNrVW5pdEluQnl0ZXMoKSk7CisgICAgICAgIG1fb2Zmc2V0RnJvbVRvcCAtPSBz
dGFja1VuaXRJbkJ5dGVzKCk7CiAgICAgICAgIG1fYXNzZW1ibGVyLnBvcFRvUmVzdG9yZShyZWdp
c3RlcklEKTsKICAgICB9CiAKICAgICB2b2lkIHBvcEFuZERpc2NhcmQoU3RhY2tSZWZlcmVuY2Ug
c3RhY2tSZWZlcmVuY2UpCiAgICAgewogICAgICAgICBSRUxFQVNFX0FTU0VSVChzdGFja1JlZmVy
ZW5jZSA9PSBtX29mZnNldEZyb21Ub3ApOwotICAgICAgICBtX2Fzc2VtYmxlci5hZGRQdHIoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNrVW5pdEluQnl0ZXMpLCBKU0M6Ok1h
Y3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7Ci0gICAgICAgIG1fb2Zmc2V0RnJv
bVRvcCAtPSBzdGFja1VuaXRJbkJ5dGVzOworICAgICAgICBtX2Fzc2VtYmxlci5hZGRQdHIoSlND
OjpNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNrVW5pdEluQnl0ZXMoKSksIEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgbV9vZmZzZXRG
cm9tVG9wIC09IHN0YWNrVW5pdEluQnl0ZXMoKTsKICAgICB9CiAKICAgICB2b2lkIHBvcEFuZERp
c2NhcmRVcFRvKFN0YWNrUmVmZXJlbmNlIHN0YWNrUmVmZXJlbmNlKQogICAgIHsKLSAgICAgICAg
dW5zaWduZWQgcG9zaXRpb25CZWZvcmVTdGFja1JlZmVyZW5jZSA9IHN0YWNrUmVmZXJlbmNlIC0g
c3RhY2tVbml0SW5CeXRlczsKKyAgICAgICAgdW5zaWduZWQgcG9zaXRpb25CZWZvcmVTdGFja1Jl
ZmVyZW5jZSA9IHN0YWNrUmVmZXJlbmNlIC0gc3RhY2tVbml0SW5CeXRlcygpOwogICAgICAgICBS
RUxFQVNFX0FTU0VSVChwb3NpdGlvbkJlZm9yZVN0YWNrUmVmZXJlbmNlIDwgbV9vZmZzZXRGcm9t
VG9wKTsKIAogICAgICAgICB1bnNpZ25lZCBzdGFja0RlbHRhID0gbV9vZmZzZXRGcm9tVG9wIC0g
cG9zaXRpb25CZWZvcmVTdGFja1JlZmVyZW5jZTsKQEAgLTE2NywxMCArMTUzLDEwIEBAIGNsYXNz
IFN0YWNrQWxsb2NhdG9yIHsKICAgICB7CiAjaWYgQ1BVKFg4Nl82NCkKICAgICAgICAgUkVMRUFT
RV9BU1NFUlQoIW1faGFzRnVuY3Rpb25DYWxsUGFkZGluZyk7Ci0gICAgICAgIHVuc2lnbmVkIHRv
cEFsaWdubWVudCA9IHN0YWNrVW5pdEluQnl0ZXM7CisgICAgICAgIHVuc2lnbmVkIHRvcEFsaWdu
bWVudCA9IHN0YWNrVW5pdEluQnl0ZXMoKTsKICAgICAgICAgaWYgKCh0b3BBbGlnbm1lbnQgKyBt
X29mZnNldEZyb21Ub3ApICUgMTYpIHsKICAgICAgICAgICAgIG1faGFzRnVuY3Rpb25DYWxsUGFk
ZGluZyA9IHRydWU7Ci0gICAgICAgICAgICBtX2Fzc2VtYmxlci5hZGRQdHJOb0ZsYWdzKEpTQzo6
TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJbW0zMigtc3RhY2tVbml0SW5CeXRlcyksIEpTQzo6TWFj
cm9Bc3NlbWJsZXI6OnN0YWNrUG9pbnRlclJlZ2lzdGVyKTsKKyAgICAgICAgICAgIG1fYXNzZW1i
bGVyLmFkZFB0ck5vRmxhZ3MoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKC1zdGFj
a1VuaXRJbkJ5dGVzKCkpLCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rl
cik7CiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KQEAgLTE3OSw3ICsxNjUsNyBAQCBjbGFzcyBT
dGFja0FsbG9jYXRvciB7CiAgICAgewogI2lmIENQVShYODZfNjQpCiAgICAgICAgIGlmIChtX2hh
c0Z1bmN0aW9uQ2FsbFBhZGRpbmcpIHsKLSAgICAgICAgICAgIG1fYXNzZW1ibGVyLmFkZFB0ck5v
RmxhZ3MoSlNDOjpNYWNyb0Fzc2VtYmxlcjo6VHJ1c3RlZEltbTMyKHN0YWNrVW5pdEluQnl0ZXMp
LCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50ZXJSZWdpc3Rlcik7CisgICAgICAgICAg
ICBtX2Fzc2VtYmxlci5hZGRQdHJOb0ZsYWdzKEpTQzo6TWFjcm9Bc3NlbWJsZXI6OlRydXN0ZWRJ
bW0zMihzdGFja1VuaXRJbkJ5dGVzKCkpLCBKU0M6Ok1hY3JvQXNzZW1ibGVyOjpzdGFja1BvaW50
ZXJSZWdpc3Rlcik7CiAgICAgICAgICAgICBtX2hhc0Z1bmN0aW9uQ2FsbFBhZGRpbmcgPSBmYWxz
ZTsKICAgICAgICAgfQogI2VuZGlmCkBAIC0yMjQsMTMgKzIxMCwxMCBAQCBjbGFzcyBTdGFja0Fs
bG9jYXRvciB7CiAgICAgfQogCiBwcml2YXRlOgotI2lmIENQVShBUk02NCkKLSAgICBzdGF0aWMg
Y29uc3QgdW5zaWduZWQgc3RhY2tVbml0SW5CeXRlcyA9IDE2OwotI2VsaWYgQ1BVKFg4Nl82NCkK
LSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgc3RhY2tVbml0SW5CeXRlcyA9IDg7Ci0jZWxzZQot
I2Vycm9yIFN0YWNrIFVuaXQgU2l6ZSBpcyB1bmRlZmluZWQuCi0jZW5kaWYKKyAgICBzdGF0aWMg
dW5zaWduZWQgc3RhY2tVbml0SW5CeXRlcygpCisgICAgeworICAgICAgICByZXR1cm4gSlNDOjpN
YWNyb0Fzc2VtYmxlcjo6cHVzaFRvU2F2ZUJ5dGVPZmZzZXQoKTsKKyAgICB9CiAKICAgICB2b2lk
IHJlc2V0KCkKICAgICB7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>