<?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>70570</bug_id>
          
          <creation_ts>2011-10-20 18:46:58 -0700</creation_ts>
          <short_desc>Remove RenderTableSection::m_gridRows</short_desc>
          <delta_ts>2011-10-27 13:05:29 -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>Tables</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Julien Chaffraix">jchaffraix</reporter>
          <assigned_to name="Julien Chaffraix">jchaffraix</assigned_to>
          <cc>darin</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>488076</commentid>
    <comment_count>0</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-20 18:46:58 -0700</bug_when>
    <thetext>This field is:
1) confusing
2) an int when it should be an unsigned
3) already contained in m_grid.size()</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>488093</commentid>
    <comment_count>1</comment_count>
      <attachid>111889</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-20 19:28:31 -0700</bug_when>
    <thetext>Created attachment 111889
Proposed removal.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491681</commentid>
    <comment_count>2</comment_count>
      <attachid>111889</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-10-27 10:20:25 -0700</bug_when>
    <thetext>Comment on attachment 111889
Proposed removal.

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

&gt; Source/WebCore/rendering/RenderTableSection.cpp:180
&gt; +    if (numRows &gt; (int)m_grid.size()) {

This should be a C++ static_cast, not a C cast.

&gt; Source/WebCore/rendering/RenderTableSection.cpp:183
&gt; +        size_t maxSize = numeric_limits&lt;size_t&gt;::max() / sizeof(RowStruct);
&gt; +        if (static_cast&lt;size_t&gt;(numRows) &gt; maxSize)
&gt; +            return false;

If we plan to return false when a value would overflow what a Vector can hold, the computation about the limits of what fits in a Vector should not be done here, because it involves assumptions about how Vector is implemented. Vector might have a smaller limit than the one here. Instead, we should add a tryGrow function to Vector.

On the other hand, maybe we want a much smaller limit, because I am concerned this lets us create enormous data structures that fit in virtual memory, but put the engine into a very bad state.

&gt; Source/WebCore/rendering/RenderTableSection.cpp:1132
&gt; +    // Although it is possible for our row count to shrink (due to removeChild being called),
&gt; +    // it is more common for the count to stay the same. Let&apos;s just reallocate the old
&gt; +    // capacity upfront to avoid re-expanding it one row at a time.
&gt; +    m_grid.reserveCapacity(capacity);

It seems unfortunate to throw away and reallocate here. We should figure out a way to get clearGrid to lower the size and leave the already allocated memory alone, rather than re-reserving capacity. A good way to do that would be to factor clearGrid out into two pieces so you can use the deletion part and then do some other way of emptying the vector that does not throw away the excess capacity, rather than clear().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491723</commentid>
    <comment_count>3</comment_count>
      <attachid>111889</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-27 10:58:56 -0700</bug_when>
    <thetext>Comment on attachment 111889
Proposed removal.

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

&gt;&gt; Source/WebCore/rendering/RenderTableSection.cpp:180
&gt;&gt; +    if (numRows &gt; (int)m_grid.size()) {
&gt; 
&gt; This should be a C++ static_cast, not a C cast.

Will be changed.

&gt;&gt; Source/WebCore/rendering/RenderTableSection.cpp:183
&gt;&gt; +            return false;
&gt; 
&gt; If we plan to return false when a value would overflow what a Vector can hold, the computation about the limits of what fits in a Vector should not be done here, because it involves assumptions about how Vector is implemented. Vector might have a smaller limit than the one here. Instead, we should add a tryGrow function to Vector.
&gt; 
&gt; On the other hand, maybe we want a much smaller limit, because I am concerned this lets us create enormous data structures that fit in virtual memory, but put the engine into a very bad state.

Indeed, this is part of the old code that I kept intact as I did not want to change the behavior.

I would tend to agree with your second line of thoughts. Overflowing a Vector means the table is too huge to be handled in a good manner by the engine anyway. Limiting the column and row counts could help shrink some of data structures for the common cases.

&gt;&gt; Source/WebCore/rendering/RenderTableSection.cpp:1132
&gt;&gt; +    m_grid.reserveCapacity(capacity);
&gt; 
&gt; It seems unfortunate to throw away and reallocate here. We should figure out a way to get clearGrid to lower the size and leave the already allocated memory alone, rather than re-reserving capacity. A good way to do that would be to factor clearGrid out into two pieces so you can use the deletion part and then do some other way of emptying the vector that does not throw away the excess capacity, rather than clear().

I do agree.

To keep the memory, we would actually need a new method on Vector as the size cannot be changed while keeping the buffer around (currently clear also free the buffer). I will file a follow-up bug about that and fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491736</commentid>
    <comment_count>4</comment_count>
      <attachid>112711</attachid>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-27 11:11:02 -0700</bug_when>
    <thetext>Created attachment 112711
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491802</commentid>
    <comment_count>5</comment_count>
      <attachid>112711</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 12:12:57 -0700</bug_when>
    <thetext>Comment on attachment 112711
Patch for landing

Clearing flags on attachment: 112711

Committed r98614: &lt;http://trac.webkit.org/changeset/98614&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491804</commentid>
    <comment_count>6</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-10-27 12:13:03 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>491852</commentid>
    <comment_count>7</comment_count>
    <who name="Julien Chaffraix">jchaffraix</who>
    <bug_when>2011-10-27 13:05:29 -0700</bug_when>
    <thetext>Follow up bug for deallocating / reallocating the vector: bug 71056.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>111889</attachid>
            <date>2011-10-20 19:28:31 -0700</date>
            <delta_ts>2011-10-27 11:11:00 -0700</delta_ts>
            <desc>Proposed removal.</desc>
            <filename>bug-70570-20111020192830.patch</filename>
            <type>text/plain</type>
            <size>12071</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTgwMzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAzYTU3NThhOWZkYjRiZDdm
MDVhODBlYWFjNzc2YjllYWIyYjYyYmVmLi5iNDZhODUyZGFmMmYwNGE5MjViMmQ4Zjg1YzkzYzU5
ZDc1Y2QwMTNlIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDUgKzEsNDQgQEAKIDIwMTEtMTAtMjAgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CiAKKyAgICAgICAgUmVtb3ZlIFJl
bmRlclRhYmxlU2VjdGlvbjo6bV9ncmlkUm93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1NzAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBObyBuZXcgdGVzdCwgcmVmYWN0b3Jpbmcgb25seS4KKworICAg
ICAgICBKdXN0IG51a2UgdGhlIG9sZCBmaWVsZCB0aGF0IHdhcyBkdXBsaWNhdGluZworICAgICAg
ICBtX2dyaWQuc2l6ZSgpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlv
bi5oOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpudW1Sb3dzKToKKyAg
ICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6ZW5zdXJlUm93cyk6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUYWJsZVNlY3Rpb246OnNldENlbGxMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKToKKyAgICAgICAgKFdl
YkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQmVmb3JlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQWZ0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjT3V0ZXJCb3JkZXJTdGFy
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRl
ckVuZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJv
eEJhc2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpwYWludE9iamVjdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmNsZWFyR3JpZCk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246Om51bUNvbHVtbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjphcHBlbmRDb2x1bW4pOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgIHMvbV9ncmlkUm93
cy9tX2dyaWQuc2l6ZSgpLy4KKyAgICAgICAgQWxzbyB1cGRhdGVkIHRoZSBjb2RlIGFzIG1fZ3Jp
ZC5zaXplKCkgaXMgdW5zaWduZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2Vj
dGlvbjo6cmVjYWxjQ2VsbHMpOgorICAgICAgICBUaGUgb2xkIGNvZGUgd291bGQga2VlcCB0aGUg
Z3JpZCdzIG1lbW9yeSBidXQgd2UgaGF2ZSB0byBjbGVhciBpdCB0byBwcm9wZXJseQorICAgICAg
ICBjb3VudCB0aGUgZWxlbWVudHMuIFRvIGF2b2lkIGxvdHMgb2Ygc21hbGwgcmVhbGxvY2F0aW9u
cywgd2UgcmVhbGxvY2F0ZSB0aGUKKyAgICAgICAgYnVmZmVyIGF0IHRoZSBvbGQgY2FwYWNpdHkg
dXBmcm9udC4KKworMjAxMS0xMC0yMCAgSnVsaWVuIENoYWZmcmFpeCAgPGpjaGFmZnJhaXhAd2Vi
a2l0Lm9yZz4KKwogICAgICAgICBSZW5kZXJEZXByZWNhdGVkRmxleGlibGVCb3ggZG9lcyBub3Qg
Y2FsbCBpdHMgY2hpbGRyZW4ncyBsYXlvdXQgbWV0aG9kCiAgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02NDg0MgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24uY3BwCmluZGV4IDY5MGUxMDNlOGQwYmFmZDBjMzMw
ZTQzMzE2ZDUyOGNkZDcyMWQzMmEuLjdjODE1ZTg5ZTFlZGYyZjA2NDMxMWE4ZTgzZTgxYTU1YWE0
ZTMwN2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNl
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rp
b24uY3BwCkBAIC01OCw3ICs1OCw2IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBzZXRSb3dMb2dpY2Fs
SGVpZ2h0VG9Sb3dTdHlsZUxvZ2ljYWxIZWlnaHRJZk5vdFJlbGF0aXZlKFJlbmRlCiAKIFJlbmRl
clRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKE5vZGUqIG5vZGUpCiAgICAgOiBSZW5k
ZXJCb3gobm9kZSkKLSAgICAsIG1fZ3JpZFJvd3MoMCkKICAgICAsIG1fY0NvbCgwKQogICAgICwg
bV9jUm93KC0xKQogICAgICwgbV9vdXRlckJvcmRlclN0YXJ0KDApCkBAIC0xNzgsMTcgKzE3Nywx
NiBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cmVtb3ZlQ2hpbGQoUmVuZGVyT2JqZWN0KiBv
bGRDaGlsZCkKIAogYm9vbCBSZW5kZXJUYWJsZVNlY3Rpb246OmVuc3VyZVJvd3MoaW50IG51bVJv
d3MpCiB7Ci0gICAgaW50IG5Sb3dzID0gbV9ncmlkUm93czsKLSAgICBpZiAobnVtUm93cyA+IG5S
b3dzKSB7Ci0gICAgICAgIGlmIChudW1Sb3dzID4gc3RhdGljX2Nhc3Q8aW50PihtX2dyaWQuc2l6
ZSgpKSkgewotICAgICAgICAgICAgc2l6ZV90IG1heFNpemUgPSBudW1lcmljX2xpbWl0czxzaXpl
X3Q+OjptYXgoKSAvIHNpemVvZihSb3dTdHJ1Y3QpOwotICAgICAgICAgICAgaWYgKHN0YXRpY19j
YXN0PHNpemVfdD4obnVtUm93cykgPiBtYXhTaXplKQotICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgIG1fZ3JpZC5ncm93KG51bVJvd3MpOwotICAgICAgICB9Ci0gICAg
ICAgIG1fZ3JpZFJvd3MgPSBudW1Sb3dzOworICAgIGlmIChudW1Sb3dzID4gKGludCltX2dyaWQu
c2l6ZSgpKSB7CisgICAgICAgIHNpemVfdCBtYXhTaXplID0gbnVtZXJpY19saW1pdHM8c2l6ZV90
Pjo6bWF4KCkgLyBzaXplb2YoUm93U3RydWN0KTsKKyAgICAgICAgaWYgKHN0YXRpY19jYXN0PHNp
emVfdD4obnVtUm93cykgPiBtYXhTaXplKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgICAgIHVuc2lnbmVkIG9sZFNpemUgPSBtX2dyaWQuc2l6ZSgpOworICAgICAgICBtX2dyaWQu
Z3JvdyhudW1Sb3dzKTsKKwogICAgICAgICBpbnQgbkNvbHMgPSBtYXgoMSwgdGFibGUoKS0+bnVt
RWZmQ29scygpKTsKLSAgICAgICAgZm9yIChpbnQgciA9IG5Sb3dzOyByIDwgbnVtUm93czsgcisr
KSB7CisgICAgICAgIGZvciAoaW50IHIgPSBvbGRTaXplOyByIDwgbnVtUm93czsgcisrKSB7CiAg
ICAgICAgICAgICBtX2dyaWRbcl0ucm93ID0gbmV3IFJvdyhuQ29scyk7CiAgICAgICAgICAgICBt
X2dyaWRbcl0ucm93UmVuZGVyZXIgPSAwOwogICAgICAgICAgICAgbV9ncmlkW3JdLmJhc2VsaW5l
ID0gMDsKQEAgLTI4MCw4ICsyNzgsOCBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6c2V0Q2Vs
bExvZ2ljYWxXaWR0aHMoKQogICAgIFZlY3RvcjxMYXlvdXRVbml0PiYgY29sdW1uUG9zID0gdGFi
bGUoKS0+Y29sdW1uUG9zaXRpb25zKCk7CiAKICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3Rh
dGVQdXNoZXIodmlldygpKTsKLSAgICAKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG1fZ3JpZFJv
d3M7IGkrKykgeworCisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG1fZ3JpZC5zaXplKCk7
IGkrKykgewogICAgICAgICBSb3cmIHJvdyA9ICptX2dyaWRbaV0ucm93OwogICAgICAgICBpbnQg
Y29scyA9IHJvdy5zaXplKCk7CiAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgY29sczsgaisr
KSB7CkBAIC0zMzAsMTAgKzMyOCwxMCBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6
Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQoKQogCiAgICAgTGF5b3V0U3RhdGVNYWludGFpbmVyIHN0YXRl
UHVzaGVyKHZpZXcoKSk7CiAKLSAgICBtX3Jvd1Bvcy5yZXNpemUobV9ncmlkUm93cyArIDEpOwor
ICAgIG1fcm93UG9zLnJlc2l6ZShtX2dyaWQuc2l6ZSgpICsgMSk7CiAgICAgbV9yb3dQb3NbMF0g
PSBzcGFjaW5nOwogCi0gICAgZm9yIChpbnQgciA9IDA7IHIgPCBtX2dyaWRSb3dzOyByKyspIHsK
KyAgICBmb3IgKHVuc2lnbmVkIHIgPSAwOyByIDwgbV9ncmlkLnNpemUoKTsgcisrKSB7CiAgICAg
ICAgIG1fcm93UG9zW3IgKyAxXSA9IDA7CiAgICAgICAgIG1fZ3JpZFtyXS5iYXNlbGluZSA9IDA7
CiAgICAgICAgIExheW91dFVuaXQgYmFzZWxpbmUgPSAwOwpAQCAtMzUzLDEwICszNTEsMTAgQEAg
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCkKICAg
ICAgICAgICAgIGlmICghY2VsbCB8fCBjdXJyZW50LmluQ29sU3BhbikKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKIAotICAgICAgICAgICAgaWYgKChjZWxsLT5yb3coKSArIGNlbGwtPnJvd1Nw
YW4oKSAtIDEpID4gcikKKyAgICAgICAgICAgIGlmICgoY2VsbC0+cm93KCkgKyBjZWxsLT5yb3dT
cGFuKCkgLSAxKSA+IChpbnQpcikKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICAgICAgaW50IGluZHggPSBtYXgociAtIGNlbGwtPnJvd1NwYW4oKSArIDEsIDApOworICAgICAg
ICAgICAgdW5zaWduZWQgaW5keCA9IG1heChyIC0gY2VsbC0+cm93U3BhbigpICsgMSwgMHUpOwog
CiAgICAgICAgICAgICBpZiAoY2VsbC0+aGFzT3ZlcnJpZGVIZWlnaHQoKSkgewogICAgICAgICAg
ICAgICAgIGlmICghc3RhdGVQdXNoZXIuZGlkUHVzaCgpKSB7CkBAIC00MTQsNyArNDEyLDcgQEAg
TGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCkKIAog
ICAgIHN0YXRlUHVzaGVyLnBvcCgpOwogCi0gICAgcmV0dXJuIG1fcm93UG9zW21fZ3JpZFJvd3Nd
OworICAgIHJldHVybiBtX3Jvd1Bvc1ttX2dyaWQuc2l6ZSgpXTsKIH0KIAogdm9pZCBSZW5kZXJU
YWJsZVNlY3Rpb246OmxheW91dCgpCkBAIC00NDIsNyArNDQwLDcgQEAgTGF5b3V0VW5pdCBSZW5k
ZXJUYWJsZVNlY3Rpb246OmxheW91dFJvd3MoTGF5b3V0VW5pdCB0b0FkZCkKIAogICAgIExheW91
dFVuaXQgckhlaWdodDsKICAgICBpbnQgcmluZHg7Ci0gICAgaW50IHRvdGFsUm93cyA9IG1fZ3Jp
ZFJvd3M7CisgICAgaW50IHRvdGFsUm93cyA9IG1fZ3JpZC5zaXplKCk7CiAgICAgCiAgICAgLy8g
U2V0IHRoZSB3aWR0aCBvZiBvdXIgc2VjdGlvbiBub3cuICBUaGUgcm93cyB3aWxsIGFsc28gYmUg
dGhpcyB3aWR0aC4KICAgICBzZXRMb2dpY2FsV2lkdGgodGFibGUoKS0+Y29udGVudExvZ2ljYWxX
aWR0aCgpKTsKQEAgLTcxMyw3ICs3MTEsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlv
bjo6bGF5b3V0Um93cyhMYXlvdXRVbml0IHRvQWRkKQogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNl
Y3Rpb246OmNhbGNPdXRlckJvcmRlckJlZm9yZSgpIGNvbnN0CiB7CiAgICAgaW50IHRvdGFsQ29s
cyA9IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKLSAgICBpZiAoIW1fZ3JpZFJvd3MgfHwgIXRvdGFs
Q29scykKKyAgICBpZiAoIW1fZ3JpZC5zaXplKCkgfHwgIXRvdGFsQ29scykKICAgICAgICAgcmV0
dXJuIDA7CiAKICAgICB1bnNpZ25lZCBib3JkZXJXaWR0aCA9IDA7CkBAIC03NjQsNyArNzYyLDcg
QEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlckJlZm9yZSgp
IGNvbnN0CiBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQWZ0
ZXIoKSBjb25zdAogewogICAgIGludCB0b3RhbENvbHMgPSB0YWJsZSgpLT5udW1FZmZDb2xzKCk7
Ci0gICAgaWYgKCFtX2dyaWRSb3dzIHx8ICF0b3RhbENvbHMpCisgICAgaWYgKCFtX2dyaWQuc2l6
ZSgpIHx8ICF0b3RhbENvbHMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgYm9y
ZGVyV2lkdGggPSAwOwpAQCAtNzgzLDcgKzc4MSw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpjYWxjT3V0ZXJCb3JkZXJBZnRlcigpIGNvbnN0CiAKICAgICBib29sIGFsbEhpZGRl
biA9IHRydWU7CiAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCB0b3RhbENvbHM7IGMrKykgewotICAg
ICAgICBjb25zdCBDZWxsU3RydWN0JiBjdXJyZW50ID0gY2VsbEF0KG1fZ3JpZFJvd3MgLSAxLCBj
KTsKKyAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9IGNlbGxBdChtX2dyaWQuc2l6
ZSgpIC0gMSwgYyk7CiAgICAgICAgIGlmIChjdXJyZW50LmluQ29sU3BhbiB8fCAhY3VycmVudC5o
YXNDZWxscygpKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbnN0IEJvcmRlclZh
bHVlJiBjYiA9IGN1cnJlbnQucHJpbWFyeUNlbGwoKS0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKTsg
Ly8gRklYTUU6IE1ha2UgdGhpcyB3b3JrIHdpdGggcGVycGVuZGljdWxhciBhbmQgZmxpcHBlZCBj
ZWxscy4KQEAgLTgxNSw3ICs4MTMsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6
Y2FsY091dGVyQm9yZGVyQWZ0ZXIoKSBjb25zdAogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rp
b246OmNhbGNPdXRlckJvcmRlclN0YXJ0KCkgY29uc3QKIHsKICAgICBpbnQgdG90YWxDb2xzID0g
dGFibGUoKS0+bnVtRWZmQ29scygpOwotICAgIGlmICghbV9ncmlkUm93cyB8fCAhdG90YWxDb2xz
KQorICAgIGlmICghbV9ncmlkLnNpemUoKSB8fCAhdG90YWxDb2xzKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIHVuc2lnbmVkIGJvcmRlcldpZHRoID0gMDsKQEAgLTgzNSw3ICs4MzMsNyBAQCBM
YXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyU3RhcnQoKSBjb25z
dAogICAgIH0KIAogICAgIGJvb2wgYWxsSGlkZGVuID0gdHJ1ZTsKLSAgICBmb3IgKGludCByID0g
MDsgciA8IG1fZ3JpZFJvd3M7IHIrKykgeworICAgIGZvciAodW5zaWduZWQgciA9IDA7IHIgPCBt
X2dyaWQuc2l6ZSgpOyByKyspIHsKICAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9
IGNlbGxBdChyLCAwKTsKICAgICAgICAgaWYgKCFjdXJyZW50Lmhhc0NlbGxzKCkpCiAgICAgICAg
ICAgICBjb250aW51ZTsKQEAgLTg1OSw3ICs4NTcsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxl
U2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyU3RhcnQoKSBjb25zdAogTGF5b3V0VW5pdCBSZW5kZXJU
YWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlckVuZCgpIGNvbnN0CiB7CiAgICAgaW50IHRvdGFs
Q29scyA9IHRhYmxlKCktPm51bUVmZkNvbHMoKTsKLSAgICBpZiAoIW1fZ3JpZFJvd3MgfHwgIXRv
dGFsQ29scykKKyAgICBpZiAoIW1fZ3JpZC5zaXplKCkgfHwgIXRvdGFsQ29scykKICAgICAgICAg
cmV0dXJuIDA7CiAKICAgICB1bnNpZ25lZCBib3JkZXJXaWR0aCA9IDA7CkBAIC04NzksNyArODc3
LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlckVuZCgp
IGNvbnN0CiAgICAgfQogCiAgICAgYm9vbCBhbGxIaWRkZW4gPSB0cnVlOwotICAgIGZvciAoaW50
IHIgPSAwOyByIDwgbV9ncmlkUm93czsgcisrKSB7CisgICAgZm9yICh1bnNpZ25lZCByID0gMDsg
ciA8IG1fZ3JpZC5zaXplKCk7IHIrKykgewogICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjdXJy
ZW50ID0gY2VsbEF0KHIsIHRvdGFsQ29scyAtIDEpOwogICAgICAgICBpZiAoIWN1cnJlbnQuaGFz
Q2VsbHMoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTEwLDcgKzkwOCw3IEBAIHZvaWQg
UmVuZGVyVGFibGVTZWN0aW9uOjpyZWNhbGNPdXRlckJvcmRlcigpCiAKIExheW91dFVuaXQgUmVu
ZGVyVGFibGVTZWN0aW9uOjpmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2dyaWRSb3dzKQorICAgIGlmICghbV9ncmlkLnNpemUoKSkKICAgICAgICAgcmV0dXJuIC0x
OwogCiAgICAgTGF5b3V0VW5pdCBmaXJzdExpbmVCYXNlbGluZSA9IG1fZ3JpZFswXS5iYXNlbGlu
ZTsKQEAgLTkzNyw3ICs5MzUsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnQoUGFp
bnRJbmZvJiBwYWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZgogICAgIGlmIChu
ZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgdW5zaWduZWQgdG90YWxS
b3dzID0gbV9ncmlkUm93czsKKyAgICB1bnNpZ25lZCB0b3RhbFJvd3MgPSBtX2dyaWQuc2l6ZSgp
OwogICAgIHVuc2lnbmVkIHRvdGFsQ29scyA9IHRhYmxlKCktPmNvbHVtbnMoKS5zaXplKCk7CiAK
ICAgICBpZiAoIXRvdGFsUm93cyB8fCAhdG90YWxDb2xzKQpAQCAtMTAwNCw3ICsxMDAyLDcgQEAg
dm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50Q2VsbChSZW5kZXJUYWJsZUNlbGwqIGNlbGws
IFBhaW50SW5mbyYgcGFpbnRJbmZvLAogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50T2Jq
ZWN0KFBhaW50SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQp
CiB7CiAgICAgLy8gQ2hlY2sgd2hpY2ggcm93cyBhbmQgY29scyBhcmUgdmlzaWJsZSBhbmQgb25s
eSBwYWludCB0aGVzZS4KLSAgICB1bnNpZ25lZCB0b3RhbFJvd3MgPSBtX2dyaWRSb3dzOworICAg
IHVuc2lnbmVkIHRvdGFsUm93cyA9IG1fZ3JpZC5zaXplKCk7CiAgICAgdW5zaWduZWQgdG90YWxD
b2xzID0gdGFibGUoKS0+Y29sdW1ucygpLnNpemUoKTsKIAogICAgIFBhaW50UGhhc2UgcGFpbnRQ
aGFzZSA9IHBhaW50SW5mby5waGFzZTsKQEAgLTExMjYsOCArMTEyNCwxMiBAQCB2b2lkIFJlbmRl
clRhYmxlU2VjdGlvbjo6cmVjYWxjQ2VsbHMoKQogewogICAgIG1fY0NvbCA9IDA7CiAgICAgbV9j
Um93ID0gLTE7CisgICAgdW5zaWduZWQgY2FwYWNpdHkgPSBtX2dyaWQuc2l6ZSgpOwogICAgIGNs
ZWFyR3JpZCgpOwotICAgIG1fZ3JpZFJvd3MgPSAwOworICAgIC8vIEFsdGhvdWdoIGl0IGlzIHBv
c3NpYmxlIGZvciBvdXIgcm93IGNvdW50IHRvIHNocmluayAoZHVlIHRvIHJlbW92ZUNoaWxkIGJl
aW5nIGNhbGxlZCksCisgICAgLy8gaXQgaXMgbW9yZSBjb21tb24gZm9yIHRoZSBjb3VudCB0byBz
dGF5IHRoZSBzYW1lLiBMZXQncyBqdXN0IHJlYWxsb2NhdGUgdGhlIG9sZAorICAgIC8vIGNhcGFj
aXR5IHVwZnJvbnQgdG8gYXZvaWQgcmUtZXhwYW5kaW5nIGl0IG9uZSByb3cgYXQgYSB0aW1lLgor
ICAgIG1fZ3JpZC5yZXNlcnZlQ2FwYWNpdHkoY2FwYWNpdHkpOwogCiAgICAgZm9yIChSZW5kZXJP
YmplY3QqIHJvdyA9IGZpcnN0Q2hpbGQoKTsgcm93OyByb3cgPSByb3ctPm5leHRTaWJsaW5nKCkp
IHsKICAgICAgICAgaWYgKHJvdy0+aXNUYWJsZVJvdygpKSB7CkBAIC0xMTU5LDE2ICsxMTYxLDE3
IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXROZWVkc0NlbGxSZWNhbGMoKQogCiB2b2lk
IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2xlYXJHcmlkKCkKIHsKLSAgICBpbnQgcm93cyA9IG1fZ3Jp
ZFJvd3M7Ci0gICAgd2hpbGUgKHJvd3MtLSkKLSAgICAgICAgZGVsZXRlIG1fZ3JpZFtyb3dzXS5y
b3c7CisgICAgZm9yICh1bnNpZ25lZCByb3cgPSAwOyByb3cgPCBtX2dyaWQuc2l6ZSgpOyArK3Jv
dykKKyAgICAgICAgZGVsZXRlIG1fZ3JpZFtyb3ddLnJvdzsKKworICAgIG1fZ3JpZC5jbGVhcigp
OwogfQogCiBpbnQgUmVuZGVyVGFibGVTZWN0aW9uOjpudW1Db2x1bW5zKCkgY29uc3QKIHsKICAg
ICBpbnQgcmVzdWx0ID0gMDsKICAgICAKLSAgICBmb3IgKGludCByID0gMDsgciA8IG1fZ3JpZFJv
d3M7ICsrcikgeworICAgIGZvciAodW5zaWduZWQgciA9IDA7IHIgPCBtX2dyaWQuc2l6ZSgpOyAr
K3IpIHsKICAgICAgICAgZm9yIChpbnQgYyA9IHJlc3VsdDsgYyA8IHRhYmxlKCktPm51bUVmZkNv
bHMoKTsgKytjKSB7CiAgICAgICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjZWxsID0gY2VsbEF0
KHIsIGMpOwogICAgICAgICAgICAgaWYgKGNlbGwuaGFzQ2VsbHMoKSB8fCBjZWxsLmluQ29sU3Bh
bikKQEAgLTExODEsNyArMTE4NCw3IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246Om51bUNvbHVt
bnMoKSBjb25zdAogCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YXBwZW5kQ29sdW1uKGludCBw
b3MpCiB7Ci0gICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9ncmlkUm93czsgKytyb3cpCisg
ICAgZm9yICh1bnNpZ25lZCByb3cgPSAwOyByb3cgPCBtX2dyaWQuc2l6ZSgpOyArK3JvdykKICAg
ICAgICAgbV9ncmlkW3Jvd10ucm93LT5yZXNpemUocG9zICsgMSk7CiB9CiAKQEAgLTExOTEsNyAr
MTE5NCw3IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzcGxpdENvbHVtbihpbnQgcG9zLCBp
bnQgZmlyc3QpCiAKICAgICBpZiAobV9jQ29sID4gcG9zKQogICAgICAgICBtX2NDb2wrKzsKLSAg
ICBmb3IgKGludCByb3cgPSAwOyByb3cgPCBtX2dyaWRSb3dzOyArK3JvdykgeworICAgIGZvciAo
dW5zaWduZWQgcm93ID0gMDsgcm93IDwgbV9ncmlkLnNpemUoKTsgKytyb3cpIHsKICAgICAgICAg
Um93JiByID0gKm1fZ3JpZFtyb3ddLnJvdzsKICAgICAgICAgci5pbnNlcnQocG9zICsgMSwgQ2Vs
bFN0cnVjdCgpKTsKICAgICAgICAgaWYgKHJbcG9zXS5oYXNDZWxscygpKSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggNzYzZGI5NDVjYTRl
MjIwNjZmY2Q4MTNkMTU1MmRmNjk5MTBmZjZiYS4uNDI2MWNhZWI4NjZkNTFhOWEwYTNlOWY5NDU3
NTFhOTRmZTNiMGYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRhYmxlU2VjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJs
ZVNlY3Rpb24uaApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8
Q2VsbFN0cnVjdD4gUm93OwogCiAgICAgc3RydWN0IFJvd1N0cnVjdCB7CisgICAgICAgIC8vIEZJ
WE1FOiBUaGlzIGZpZWxkIHNob3VsZCBiZSBhbiBPd25QdHIuCiAgICAgICAgIFJvdyogcm93Owog
ICAgICAgICBSZW5kZXJUYWJsZVJvdyogcm93UmVuZGVyZXI7CiAgICAgICAgIExheW91dFVuaXQg
YmFzZWxpbmU7CkBAIC0xMDQsNyArMTA1LDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgb3V0
ZXJCb3JkZXJTdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0ZXJCb3JkZXJTdGFydDsgfQogICAg
IExheW91dFVuaXQgb3V0ZXJCb3JkZXJFbmQoKSBjb25zdCB7IHJldHVybiBtX291dGVyQm9yZGVy
RW5kOyB9CiAKLSAgICBpbnQgbnVtUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZFJvd3M7IH0K
KyAgICBpbnQgbnVtUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZC5zaXplKCk7IH0KICAgICBp
bnQgbnVtQ29sdW1ucygpIGNvbnN0OwogICAgIHZvaWQgcmVjYWxjQ2VsbHMoKTsKICAgICB2b2lk
IHJlY2FsY0NlbGxzSWZOZWVkZWQoKQpAQCAtMTUzLDggKzE1NCw2IEBAIHByaXZhdGU6CiAgICAg
VmVjdG9yPFJvd1N0cnVjdD4gbV9ncmlkOwogICAgIFZlY3RvcjxMYXlvdXRVbml0PiBtX3Jvd1Bv
czsKIAotICAgIGludCBtX2dyaWRSb3dzOwotCiAgICAgLy8gdGhlIGN1cnJlbnQgaW5zZXJ0aW9u
IHBvc2l0aW9uCiAgICAgaW50IG1fY0NvbDsKICAgICBpbnQgbV9jUm93Owo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>112711</attachid>
            <date>2011-10-27 11:11:02 -0700</date>
            <delta_ts>2011-10-27 12:12:57 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-70570-20111027111101.patch</filename>
            <type>text/plain</type>
            <size>12005</size>
            <attacher name="Julien Chaffraix">jchaffraix</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTg2MDcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAyYzAwZjk4ZWI1M2FlYmUy
MjlkODFjNzEwN2YwYTU5ZGRhODAxZWQ5Li45NjcwZDAzZTZiNzAyNGJiMmVlMTEyMjI3ZGExYjlm
YWMwZTg1OWU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDIgQEAKKzIwMTEtMTAtMjcgIEp1bGll
biBDaGFmZnJhaXggIDxqY2hhZmZyYWl4QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIFJl
bmRlclRhYmxlU2VjdGlvbjo6bV9ncmlkUm93cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzA1NzAKKworICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBB
ZGxlci4KKworICAgICAgICBObyBuZXcgdGVzdCwgcmVmYWN0b3Jpbmcgb25seS4KKworICAgICAg
ICBKdXN0IG51a2UgdGhlIG9sZCBmaWVsZCB0aGF0IHdhcyBkdXBsaWNhdGluZworICAgICAgICBt
X2dyaWQuc2l6ZSgpLgorCisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5o
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpudW1Sb3dzKToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclRhYmxlU2VjdGlvbjo6UmVuZGVyVGFibGVTZWN0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6ZW5zdXJlUm93cyk6CisgICAgICAgIChXZWJDb3JlOjpS
ZW5kZXJUYWJsZVNlY3Rpb246OnNldENlbGxMb2dpY2FsV2lkdGhzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQpOgorICAgICAgICAo
V2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpsYXlvdXRSb3dzKToKKyAgICAgICAgKFdlYkNv
cmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQmVmb3JlKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQWZ0ZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjT3V0ZXJCb3JkZXJTdGFydCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlckVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmZpcnN0TGluZUJveEJh
c2VsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVGFibGVTZWN0aW9uOjpwYWludE9iamVjdCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246OmNsZWFyR3JpZCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZW5kZXJUYWJsZVNlY3Rpb246Om51bUNvbHVtbnMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVuZGVyVGFibGVTZWN0aW9uOjphcHBlbmRDb2x1bW4pOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVGFibGVTZWN0aW9uOjpzcGxpdENvbHVtbik6CisgICAgICAgIHMvbV9ncmlkUm93cy9t
X2dyaWQuc2l6ZSgpLy4KKyAgICAgICAgQWxzbyB1cGRhdGVkIHRoZSBjb2RlIGFzIG1fZ3JpZC5z
aXplKCkgaXMgdW5zaWduZWQuCisKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRhYmxlU2VjdGlv
bjo6cmVjYWxjQ2VsbHMpOgorICAgICAgICBUaGUgb2xkIGNvZGUgd291bGQga2VlcCB0aGUgZ3Jp
ZCdzIG1lbW9yeSBidXQgd2UgaGF2ZSB0byBjbGVhciBpdCB0byBwcm9wZXJseQorICAgICAgICBj
b3VudCB0aGUgZWxlbWVudHMuIFRvIGF2b2lkIGxvdHMgb2Ygc21hbGwgcmVhbGxvY2F0aW9ucywg
d2UgcmVhbGxvY2F0ZSB0aGUKKyAgICAgICAgYnVmZmVyIGF0IHRoZSBvbGQgY2FwYWNpdHkgdXBm
cm9udC4KKwogMjAxMS0xMC0yNyAgTWlobmVhIE92aWRlbmllICA8bWlobmVhQGFkb2JlLmNvbT4K
IAogICAgICAgICBbQ1NTUmVnaW9uc11GbGFnIHJlZ2lvbnMgd2l0aCBjdXN0b20gc3R5bGluZwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2VjdGlvbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAppbmRl
eCBjYzUzOTNjOWQ1MjMxMTg5ZTZiYjJmYTAxZThhZTRlZTE0N2ZmZmFhLi4wNzVmODdkZmQ3N2Jl
YTVjNjRhYWJjZTU0ZTVhYzQ2NGFlZDU4NjNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmNwcApAQCAtNTgsNyArNTgsNiBAQCBzdGF0aWMgaW5s
aW5lIHZvaWQgc2V0Um93TG9naWNhbEhlaWdodFRvUm93U3R5bGVMb2dpY2FsSGVpZ2h0SWZOb3RS
ZWxhdGl2ZShSZW5kZQogCiBSZW5kZXJUYWJsZVNlY3Rpb246OlJlbmRlclRhYmxlU2VjdGlvbihO
b2RlKiBub2RlKQogICAgIDogUmVuZGVyQm94KG5vZGUpCi0gICAgLCBtX2dyaWRSb3dzKDApCiAg
ICAgLCBtX2NDb2woMCkKICAgICAsIG1fY1JvdygtMSkKICAgICAsIG1fb3V0ZXJCb3JkZXJTdGFy
dCgwKQpAQCAtMTc3LDE3ICsxNzYsMTYgQEAgdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnJlbW92
ZUNoaWxkKFJlbmRlck9iamVjdCogb2xkQ2hpbGQpCiAKIGJvb2wgUmVuZGVyVGFibGVTZWN0aW9u
OjplbnN1cmVSb3dzKGludCBudW1Sb3dzKQogewotICAgIGludCBuUm93cyA9IG1fZ3JpZFJvd3M7
Ci0gICAgaWYgKG51bVJvd3MgPiBuUm93cykgewotICAgICAgICBpZiAobnVtUm93cyA+IHN0YXRp
Y19jYXN0PGludD4obV9ncmlkLnNpemUoKSkpIHsKLSAgICAgICAgICAgIHNpemVfdCBtYXhTaXpl
ID0gbnVtZXJpY19saW1pdHM8c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YoUm93U3RydWN0KTsKLSAg
ICAgICAgICAgIGlmIChzdGF0aWNfY2FzdDxzaXplX3Q+KG51bVJvd3MpID4gbWF4U2l6ZSkKLSAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICBtX2dyaWQuZ3JvdyhudW1S
b3dzKTsKLSAgICAgICAgfQotICAgICAgICBtX2dyaWRSb3dzID0gbnVtUm93czsKKyAgICBpZiAo
bnVtUm93cyA+IHN0YXRpY19jYXN0PGludD4obV9ncmlkLnNpemUoKSkpIHsKKyAgICAgICAgc2l6
ZV90IG1heFNpemUgPSBudW1lcmljX2xpbWl0czxzaXplX3Q+OjptYXgoKSAvIHNpemVvZihSb3dT
dHJ1Y3QpOworICAgICAgICBpZiAoc3RhdGljX2Nhc3Q8c2l6ZV90PihudW1Sb3dzKSA+IG1heFNp
emUpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdW5zaWduZWQgb2xkU2l6
ZSA9IG1fZ3JpZC5zaXplKCk7CisgICAgICAgIG1fZ3JpZC5ncm93KG51bVJvd3MpOworCiAgICAg
ICAgIGludCBuQ29scyA9IG1heCgxLCB0YWJsZSgpLT5udW1FZmZDb2xzKCkpOwotICAgICAgICBm
b3IgKGludCByID0gblJvd3M7IHIgPCBudW1Sb3dzOyByKyspIHsKKyAgICAgICAgZm9yIChpbnQg
ciA9IG9sZFNpemU7IHIgPCBudW1Sb3dzOyByKyspIHsKICAgICAgICAgICAgIG1fZ3JpZFtyXS5y
b3cgPSBuZXcgUm93KG5Db2xzKTsKICAgICAgICAgICAgIG1fZ3JpZFtyXS5yb3dSZW5kZXJlciA9
IDA7CiAgICAgICAgICAgICBtX2dyaWRbcl0uYmFzZWxpbmUgPSAwOwpAQCAtMjc5LDggKzI3Nyw4
IEBAIHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzZXRDZWxsTG9naWNhbFdpZHRocygpCiAgICAg
VmVjdG9yPExheW91dFVuaXQ+JiBjb2x1bW5Qb3MgPSB0YWJsZSgpLT5jb2x1bW5Qb3NpdGlvbnMo
KTsKIAogICAgIExheW91dFN0YXRlTWFpbnRhaW5lciBzdGF0ZVB1c2hlcih2aWV3KCkpOwotICAg
IAotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbV9ncmlkUm93czsgaSsrKSB7CisKKyAgICBmb3Ig
KHVuc2lnbmVkIGkgPSAwOyBpIDwgbV9ncmlkLnNpemUoKTsgaSsrKSB7CiAgICAgICAgIFJvdyYg
cm93ID0gKm1fZ3JpZFtpXS5yb3c7CiAgICAgICAgIGludCBjb2xzID0gcm93LnNpemUoKTsKICAg
ICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCBjb2xzOyBqKyspIHsKQEAgLTMyOSwxMCArMzI3LDEw
IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVTZWN0aW9uOjpjYWxjUm93TG9naWNhbEhlaWdodCgp
CiAKICAgICBMYXlvdXRTdGF0ZU1haW50YWluZXIgc3RhdGVQdXNoZXIodmlldygpKTsKIAotICAg
IG1fcm93UG9zLnJlc2l6ZShtX2dyaWRSb3dzICsgMSk7CisgICAgbV9yb3dQb3MucmVzaXplKG1f
Z3JpZC5zaXplKCkgKyAxKTsKICAgICBtX3Jvd1Bvc1swXSA9IHNwYWNpbmc7CiAKLSAgICBmb3Ig
KGludCByID0gMDsgciA8IG1fZ3JpZFJvd3M7IHIrKykgeworICAgIGZvciAodW5zaWduZWQgciA9
IDA7IHIgPCBtX2dyaWQuc2l6ZSgpOyByKyspIHsKICAgICAgICAgbV9yb3dQb3NbciArIDFdID0g
MDsKICAgICAgICAgbV9ncmlkW3JdLmJhc2VsaW5lID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBi
YXNlbGluZSA9IDA7CkBAIC0zNTIsMTAgKzM1MCwxMCBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxl
U2VjdGlvbjo6Y2FsY1Jvd0xvZ2ljYWxIZWlnaHQoKQogICAgICAgICAgICAgaWYgKCFjZWxsIHx8
IGN1cnJlbnQuaW5Db2xTcGFuKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAg
ICAgICBpZiAoKGNlbGwtPnJvdygpICsgY2VsbC0+cm93U3BhbigpIC0gMSkgPiByKQorICAgICAg
ICAgICAgaWYgKChjZWxsLT5yb3coKSArIGNlbGwtPnJvd1NwYW4oKSAtIDEpID4gc3RhdGljX2Nh
c3Q8aW50PihyKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICAgICAgaW50
IGluZHggPSBtYXgociAtIGNlbGwtPnJvd1NwYW4oKSArIDEsIDApOworICAgICAgICAgICAgdW5z
aWduZWQgaW5keCA9IG1heChyIC0gY2VsbC0+cm93U3BhbigpICsgMSwgMHUpOwogCiAgICAgICAg
ICAgICBpZiAoY2VsbC0+aGFzT3ZlcnJpZGVIZWlnaHQoKSkgewogICAgICAgICAgICAgICAgIGlm
ICghc3RhdGVQdXNoZXIuZGlkUHVzaCgpKSB7CkBAIC00MTMsNyArNDExLDcgQEAgTGF5b3V0VW5p
dCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNSb3dMb2dpY2FsSGVpZ2h0KCkKIAogICAgIHN0YXRl
UHVzaGVyLnBvcCgpOwogCi0gICAgcmV0dXJuIG1fcm93UG9zW21fZ3JpZFJvd3NdOworICAgIHJl
dHVybiBtX3Jvd1Bvc1ttX2dyaWQuc2l6ZSgpXTsKIH0KIAogdm9pZCBSZW5kZXJUYWJsZVNlY3Rp
b246OmxheW91dCgpCkBAIC00NDEsNyArNDM5LDcgQEAgTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNl
Y3Rpb246OmxheW91dFJvd3MoTGF5b3V0VW5pdCB0b0FkZCkKIAogICAgIExheW91dFVuaXQgckhl
aWdodDsKICAgICBpbnQgcmluZHg7Ci0gICAgaW50IHRvdGFsUm93cyA9IG1fZ3JpZFJvd3M7Cisg
ICAgaW50IHRvdGFsUm93cyA9IG1fZ3JpZC5zaXplKCk7CiAgICAgCiAgICAgLy8gU2V0IHRoZSB3
aWR0aCBvZiBvdXIgc2VjdGlvbiBub3cuICBUaGUgcm93cyB3aWxsIGFsc28gYmUgdGhpcyB3aWR0
aC4KICAgICBzZXRMb2dpY2FsV2lkdGgodGFibGUoKS0+Y29udGVudExvZ2ljYWxXaWR0aCgpKTsK
QEAgLTcxMiw3ICs3MTAsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6bGF5b3V0
Um93cyhMYXlvdXRVbml0IHRvQWRkKQogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNh
bGNPdXRlckJvcmRlckJlZm9yZSgpIGNvbnN0CiB7CiAgICAgaW50IHRvdGFsQ29scyA9IHRhYmxl
KCktPm51bUVmZkNvbHMoKTsKLSAgICBpZiAoIW1fZ3JpZFJvd3MgfHwgIXRvdGFsQ29scykKKyAg
ICBpZiAoIW1fZ3JpZC5zaXplKCkgfHwgIXRvdGFsQ29scykKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICB1bnNpZ25lZCBib3JkZXJXaWR0aCA9IDA7CkBAIC03NjMsNyArNzYxLDcgQEAgTGF5b3V0
VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlckJlZm9yZSgpIGNvbnN0CiBM
YXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyQWZ0ZXIoKSBjb25z
dAogewogICAgIGludCB0b3RhbENvbHMgPSB0YWJsZSgpLT5udW1FZmZDb2xzKCk7Ci0gICAgaWYg
KCFtX2dyaWRSb3dzIHx8ICF0b3RhbENvbHMpCisgICAgaWYgKCFtX2dyaWQuc2l6ZSgpIHx8ICF0
b3RhbENvbHMpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgdW5zaWduZWQgYm9yZGVyV2lkdGgg
PSAwOwpAQCAtNzgyLDcgKzc4MCw3IEBAIExheW91dFVuaXQgUmVuZGVyVGFibGVTZWN0aW9uOjpj
YWxjT3V0ZXJCb3JkZXJBZnRlcigpIGNvbnN0CiAKICAgICBib29sIGFsbEhpZGRlbiA9IHRydWU7
CiAgICAgZm9yIChpbnQgYyA9IDA7IGMgPCB0b3RhbENvbHM7IGMrKykgewotICAgICAgICBjb25z
dCBDZWxsU3RydWN0JiBjdXJyZW50ID0gY2VsbEF0KG1fZ3JpZFJvd3MgLSAxLCBjKTsKKyAgICAg
ICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9IGNlbGxBdChtX2dyaWQuc2l6ZSgpIC0gMSwg
Yyk7CiAgICAgICAgIGlmIChjdXJyZW50LmluQ29sU3BhbiB8fCAhY3VycmVudC5oYXNDZWxscygp
KQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGNvbnN0IEJvcmRlclZhbHVlJiBjYiA9
IGN1cnJlbnQucHJpbWFyeUNlbGwoKS0+c3R5bGUoKS0+Ym9yZGVyQWZ0ZXIoKTsgLy8gRklYTUU6
IE1ha2UgdGhpcyB3b3JrIHdpdGggcGVycGVuZGljdWxhciBhbmQgZmxpcHBlZCBjZWxscy4KQEAg
LTgxNCw3ICs4MTIsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVy
Qm9yZGVyQWZ0ZXIoKSBjb25zdAogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNP
dXRlckJvcmRlclN0YXJ0KCkgY29uc3QKIHsKICAgICBpbnQgdG90YWxDb2xzID0gdGFibGUoKS0+
bnVtRWZmQ29scygpOwotICAgIGlmICghbV9ncmlkUm93cyB8fCAhdG90YWxDb2xzKQorICAgIGlm
ICghbV9ncmlkLnNpemUoKSB8fCAhdG90YWxDb2xzKQogICAgICAgICByZXR1cm4gMDsKIAogICAg
IHVuc2lnbmVkIGJvcmRlcldpZHRoID0gMDsKQEAgLTgzNCw3ICs4MzIsNyBAQCBMYXlvdXRVbml0
IFJlbmRlclRhYmxlU2VjdGlvbjo6Y2FsY091dGVyQm9yZGVyU3RhcnQoKSBjb25zdAogICAgIH0K
IAogICAgIGJvb2wgYWxsSGlkZGVuID0gdHJ1ZTsKLSAgICBmb3IgKGludCByID0gMDsgciA8IG1f
Z3JpZFJvd3M7IHIrKykgeworICAgIGZvciAodW5zaWduZWQgciA9IDA7IHIgPCBtX2dyaWQuc2l6
ZSgpOyByKyspIHsKICAgICAgICAgY29uc3QgQ2VsbFN0cnVjdCYgY3VycmVudCA9IGNlbGxBdChy
LCAwKTsKICAgICAgICAgaWYgKCFjdXJyZW50Lmhhc0NlbGxzKCkpCiAgICAgICAgICAgICBjb250
aW51ZTsKQEAgLTg1OCw3ICs4NTYsNyBAQCBMYXlvdXRVbml0IFJlbmRlclRhYmxlU2VjdGlvbjo6
Y2FsY091dGVyQm9yZGVyU3RhcnQoKSBjb25zdAogTGF5b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rp
b246OmNhbGNPdXRlckJvcmRlckVuZCgpIGNvbnN0CiB7CiAgICAgaW50IHRvdGFsQ29scyA9IHRh
YmxlKCktPm51bUVmZkNvbHMoKTsKLSAgICBpZiAoIW1fZ3JpZFJvd3MgfHwgIXRvdGFsQ29scykK
KyAgICBpZiAoIW1fZ3JpZC5zaXplKCkgfHwgIXRvdGFsQ29scykKICAgICAgICAgcmV0dXJuIDA7
CiAKICAgICB1bnNpZ25lZCBib3JkZXJXaWR0aCA9IDA7CkBAIC04NzgsNyArODc2LDcgQEAgTGF5
b3V0VW5pdCBSZW5kZXJUYWJsZVNlY3Rpb246OmNhbGNPdXRlckJvcmRlckVuZCgpIGNvbnN0CiAg
ICAgfQogCiAgICAgYm9vbCBhbGxIaWRkZW4gPSB0cnVlOwotICAgIGZvciAoaW50IHIgPSAwOyBy
IDwgbV9ncmlkUm93czsgcisrKSB7CisgICAgZm9yICh1bnNpZ25lZCByID0gMDsgciA8IG1fZ3Jp
ZC5zaXplKCk7IHIrKykgewogICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjdXJyZW50ID0gY2Vs
bEF0KHIsIHRvdGFsQ29scyAtIDEpOwogICAgICAgICBpZiAoIWN1cnJlbnQuaGFzQ2VsbHMoKSkK
ICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtOTA5LDcgKzkwNyw3IEBAIHZvaWQgUmVuZGVyVGFi
bGVTZWN0aW9uOjpyZWNhbGNPdXRlckJvcmRlcigpCiAKIExheW91dFVuaXQgUmVuZGVyVGFibGVT
ZWN0aW9uOjpmaXJzdExpbmVCb3hCYXNlbGluZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2dyaWRS
b3dzKQorICAgIGlmICghbV9ncmlkLnNpemUoKSkKICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAg
TGF5b3V0VW5pdCBmaXJzdExpbmVCYXNlbGluZSA9IG1fZ3JpZFswXS5iYXNlbGluZTsKQEAgLTkz
Niw3ICs5MzQsNyBAQCB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6cGFpbnQoUGFpbnRJbmZvJiBw
YWludEluZm8sIGNvbnN0IExheW91dFBvaW50JiBwYWludE9mZgogICAgIGlmIChuZWVkc0xheW91
dCgpKQogICAgICAgICByZXR1cm47CiAgICAgCi0gICAgdW5zaWduZWQgdG90YWxSb3dzID0gbV9n
cmlkUm93czsKKyAgICB1bnNpZ25lZCB0b3RhbFJvd3MgPSBtX2dyaWQuc2l6ZSgpOwogICAgIHVu
c2lnbmVkIHRvdGFsQ29scyA9IHRhYmxlKCktPmNvbHVtbnMoKS5zaXplKCk7CiAKICAgICBpZiAo
IXRvdGFsUm93cyB8fCAhdG90YWxDb2xzKQpAQCAtMTAwMyw3ICsxMDAxLDcgQEAgdm9pZCBSZW5k
ZXJUYWJsZVNlY3Rpb246OnBhaW50Q2VsbChSZW5kZXJUYWJsZUNlbGwqIGNlbGwsIFBhaW50SW5m
byYgcGFpbnRJbmZvLAogdm9pZCBSZW5kZXJUYWJsZVNlY3Rpb246OnBhaW50T2JqZWN0KFBhaW50
SW5mbyYgcGFpbnRJbmZvLCBjb25zdCBMYXlvdXRQb2ludCYgcGFpbnRPZmZzZXQpCiB7CiAgICAg
Ly8gQ2hlY2sgd2hpY2ggcm93cyBhbmQgY29scyBhcmUgdmlzaWJsZSBhbmQgb25seSBwYWludCB0
aGVzZS4KLSAgICB1bnNpZ25lZCB0b3RhbFJvd3MgPSBtX2dyaWRSb3dzOworICAgIHVuc2lnbmVk
IHRvdGFsUm93cyA9IG1fZ3JpZC5zaXplKCk7CiAgICAgdW5zaWduZWQgdG90YWxDb2xzID0gdGFi
bGUoKS0+Y29sdW1ucygpLnNpemUoKTsKIAogICAgIFBhaW50UGhhc2UgcGFpbnRQaGFzZSA9IHBh
aW50SW5mby5waGFzZTsKQEAgLTExMjUsOCArMTEyMywxMiBAQCB2b2lkIFJlbmRlclRhYmxlU2Vj
dGlvbjo6cmVjYWxjQ2VsbHMoKQogewogICAgIG1fY0NvbCA9IDA7CiAgICAgbV9jUm93ID0gLTE7
CisgICAgdW5zaWduZWQgY2FwYWNpdHkgPSBtX2dyaWQuc2l6ZSgpOwogICAgIGNsZWFyR3JpZCgp
OwotICAgIG1fZ3JpZFJvd3MgPSAwOworICAgIC8vIEFsdGhvdWdoIGl0IGlzIHBvc3NpYmxlIGZv
ciBvdXIgcm93IGNvdW50IHRvIHNocmluayAoZHVlIHRvIHJlbW92ZUNoaWxkIGJlaW5nIGNhbGxl
ZCksCisgICAgLy8gaXQgaXMgbW9yZSBjb21tb24gZm9yIHRoZSBjb3VudCB0byBzdGF5IHRoZSBz
YW1lLiBMZXQncyBqdXN0IHJlYWxsb2NhdGUgdGhlIG9sZAorICAgIC8vIGNhcGFjaXR5IHVwZnJv
bnQgdG8gYXZvaWQgcmUtZXhwYW5kaW5nIGl0IG9uZSByb3cgYXQgYSB0aW1lLgorICAgIG1fZ3Jp
ZC5yZXNlcnZlQ2FwYWNpdHkoY2FwYWNpdHkpOwogCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIHJv
dyA9IGZpcnN0Q2hpbGQoKTsgcm93OyByb3cgPSByb3ctPm5leHRTaWJsaW5nKCkpIHsKICAgICAg
ICAgaWYgKHJvdy0+aXNUYWJsZVJvdygpKSB7CkBAIC0xMTU4LDE2ICsxMTYwLDE3IEBAIHZvaWQg
UmVuZGVyVGFibGVTZWN0aW9uOjpzZXROZWVkc0NlbGxSZWNhbGMoKQogCiB2b2lkIFJlbmRlclRh
YmxlU2VjdGlvbjo6Y2xlYXJHcmlkKCkKIHsKLSAgICBpbnQgcm93cyA9IG1fZ3JpZFJvd3M7Ci0g
ICAgd2hpbGUgKHJvd3MtLSkKLSAgICAgICAgZGVsZXRlIG1fZ3JpZFtyb3dzXS5yb3c7CisgICAg
Zm9yICh1bnNpZ25lZCByb3cgPSAwOyByb3cgPCBtX2dyaWQuc2l6ZSgpOyArK3JvdykKKyAgICAg
ICAgZGVsZXRlIG1fZ3JpZFtyb3ddLnJvdzsKKworICAgIG1fZ3JpZC5jbGVhcigpOwogfQogCiBp
bnQgUmVuZGVyVGFibGVTZWN0aW9uOjpudW1Db2x1bW5zKCkgY29uc3QKIHsKICAgICBpbnQgcmVz
dWx0ID0gMDsKICAgICAKLSAgICBmb3IgKGludCByID0gMDsgciA8IG1fZ3JpZFJvd3M7ICsrcikg
eworICAgIGZvciAodW5zaWduZWQgciA9IDA7IHIgPCBtX2dyaWQuc2l6ZSgpOyArK3IpIHsKICAg
ICAgICAgZm9yIChpbnQgYyA9IHJlc3VsdDsgYyA8IHRhYmxlKCktPm51bUVmZkNvbHMoKTsgKytj
KSB7CiAgICAgICAgICAgICBjb25zdCBDZWxsU3RydWN0JiBjZWxsID0gY2VsbEF0KHIsIGMpOwog
ICAgICAgICAgICAgaWYgKGNlbGwuaGFzQ2VsbHMoKSB8fCBjZWxsLmluQ29sU3BhbikKQEAgLTEx
ODAsNyArMTE4Myw3IEBAIGludCBSZW5kZXJUYWJsZVNlY3Rpb246Om51bUNvbHVtbnMoKSBjb25z
dAogCiB2b2lkIFJlbmRlclRhYmxlU2VjdGlvbjo6YXBwZW5kQ29sdW1uKGludCBwb3MpCiB7Ci0g
ICAgZm9yIChpbnQgcm93ID0gMDsgcm93IDwgbV9ncmlkUm93czsgKytyb3cpCisgICAgZm9yICh1
bnNpZ25lZCByb3cgPSAwOyByb3cgPCBtX2dyaWQuc2l6ZSgpOyArK3JvdykKICAgICAgICAgbV9n
cmlkW3Jvd10ucm93LT5yZXNpemUocG9zICsgMSk7CiB9CiAKQEAgLTExOTAsNyArMTE5Myw3IEBA
IHZvaWQgUmVuZGVyVGFibGVTZWN0aW9uOjpzcGxpdENvbHVtbihpbnQgcG9zLCBpbnQgZmlyc3Qp
CiAKICAgICBpZiAobV9jQ29sID4gcG9zKQogICAgICAgICBtX2NDb2wrKzsKLSAgICBmb3IgKGlu
dCByb3cgPSAwOyByb3cgPCBtX2dyaWRSb3dzOyArK3JvdykgeworICAgIGZvciAodW5zaWduZWQg
cm93ID0gMDsgcm93IDwgbV9ncmlkLnNpemUoKTsgKytyb3cpIHsKICAgICAgICAgUm93JiByID0g
Km1fZ3JpZFtyb3ddLnJvdzsKICAgICAgICAgci5pbnNlcnQocG9zICsgMSwgQ2VsbFN0cnVjdCgp
KTsKICAgICAgICAgaWYgKHJbcG9zXS5oYXNDZWxscygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyVGFibGVTZWN0aW9uLmgKaW5kZXggNzYzZGI5NDVjYTRlMjIwNjZmY2Q4
MTNkMTU1MmRmNjk5MTBmZjZiYS4uNDI2MWNhZWI4NjZkNTFhOWEwYTNlOWY5NDU3NTFhOTRmZTNi
MGYzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRhYmxlU2Vj
dGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUYWJsZVNlY3Rpb24u
aApAQCAtNzYsNiArNzYsNyBAQCBwdWJsaWM6CiAgICAgdHlwZWRlZiBWZWN0b3I8Q2VsbFN0cnVj
dD4gUm93OwogCiAgICAgc3RydWN0IFJvd1N0cnVjdCB7CisgICAgICAgIC8vIEZJWE1FOiBUaGlz
IGZpZWxkIHNob3VsZCBiZSBhbiBPd25QdHIuCiAgICAgICAgIFJvdyogcm93OwogICAgICAgICBS
ZW5kZXJUYWJsZVJvdyogcm93UmVuZGVyZXI7CiAgICAgICAgIExheW91dFVuaXQgYmFzZWxpbmU7
CkBAIC0xMDQsNyArMTA1LDcgQEAgcHVibGljOgogICAgIExheW91dFVuaXQgb3V0ZXJCb3JkZXJT
dGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fb3V0ZXJCb3JkZXJTdGFydDsgfQogICAgIExheW91dFVu
aXQgb3V0ZXJCb3JkZXJFbmQoKSBjb25zdCB7IHJldHVybiBtX291dGVyQm9yZGVyRW5kOyB9CiAK
LSAgICBpbnQgbnVtUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZFJvd3M7IH0KKyAgICBpbnQg
bnVtUm93cygpIGNvbnN0IHsgcmV0dXJuIG1fZ3JpZC5zaXplKCk7IH0KICAgICBpbnQgbnVtQ29s
dW1ucygpIGNvbnN0OwogICAgIHZvaWQgcmVjYWxjQ2VsbHMoKTsKICAgICB2b2lkIHJlY2FsY0Nl
bGxzSWZOZWVkZWQoKQpAQCAtMTUzLDggKzE1NCw2IEBAIHByaXZhdGU6CiAgICAgVmVjdG9yPFJv
d1N0cnVjdD4gbV9ncmlkOwogICAgIFZlY3RvcjxMYXlvdXRVbml0PiBtX3Jvd1BvczsKIAotICAg
IGludCBtX2dyaWRSb3dzOwotCiAgICAgLy8gdGhlIGN1cnJlbnQgaW5zZXJ0aW9uIHBvc2l0aW9u
CiAgICAgaW50IG1fY0NvbDsKICAgICBpbnQgbV9jUm93Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>