<?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>224475</bug_id>
          
          <creation_ts>2021-04-13 01:55:06 -0700</creation_ts>
          <short_desc>[WTF] Add Vector&amp;&amp; move constructor / assignment to FixedVector and RefCountedArray</short_desc>
          <delta_ts>2021-04-13 13:08:13 -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>WebKit 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>InRadar</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>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1749596</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 01:55:06 -0700</bug_when>
    <thetext>[WTF] Add Vector&amp;&amp; move constructor / assignment to FixedVector and RefCountedArray</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749597</commentid>
    <comment_count>1</comment_count>
      <attachid>425848</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 01:56:29 -0700</bug_when>
    <thetext>Created attachment 425848
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749614</commentid>
    <comment_count>2</comment_count>
      <attachid>425848</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-13 02:33:20 -0700</bug_when>
    <thetext>Comment on attachment 425848
Patch

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

&gt; Source/WTF/wtf/RefCountedArray.h:131
&gt; +        for (unsigned index = 0; index &lt; vector.size(); ++index)
&gt; +            new (data + index) T(WTFMove(vector[index]));

Why not use VectorTypeOperations so that we can use memcpy when w don&apos;t need to call constructor?

&gt; Source/WTF/wtf/RefCountedArray.h:183
&gt; +            for (unsigned index = 0; index &lt; vector.size(); ++index)
&gt; +                new (data + index) T(WTFMove(vector[index]));

Ditto.

&gt; Source/WTF/wtf/RefCountedArray.h:188
&gt; +        if (--Header::fromPayload(oldData)-&gt;refCount)
&gt; +            return *this;

We want to leave the ref count at 1 because if we decremented to 0,
it&apos;s possible that someone else will try to store this in Ref/RefPtr,
and we can end up calling this destruction code again!
We should probably fix ~RefCountedArray() as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749615</commentid>
    <comment_count>3</comment_count>
      <attachid>425848</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 02:37:44 -0700</bug_when>
    <thetext>Comment on attachment 425848
Patch

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

&gt;&gt; Source/WTF/wtf/RefCountedArray.h:131
&gt;&gt; +            new (data + index) T(WTFMove(vector[index]));
&gt; 
&gt; Why not use VectorTypeOperations so that we can use memcpy when w don&apos;t need to call constructor?

VectorTypeOperations::move is not designed to be used outside of Vector.
That function relies on that the already-moved buffer will be freed without destroying entries.
So, if we use it here, we will see that the same object is destroyed twice (one in the Vector side, one in this RefCountedArray side).

&gt;&gt; Source/WTF/wtf/RefCountedArray.h:183
&gt;&gt; +                new (data + index) T(WTFMove(vector[index]));
&gt; 
&gt; Ditto.

Ditto. It didn&apos;t work.

&gt;&gt; Source/WTF/wtf/RefCountedArray.h:188
&gt;&gt; +            return *this;
&gt; 
&gt; We want to leave the ref count at 1 because if we decremented to 0,
&gt; it&apos;s possible that someone else will try to store this in Ref/RefPtr,
&gt; and we can end up calling this destruction code again!
&gt; We should probably fix ~RefCountedArray() as well.

I&apos;ll change that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749617</commentid>
    <comment_count>4</comment_count>
      <attachid>425848</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-13 02:42:06 -0700</bug_when>
    <thetext>Comment on attachment 425848
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/RefCountedArray.h:131
&gt;&gt;&gt; +            new (data + index) T(WTFMove(vector[index]));
&gt;&gt; 
&gt;&gt; Why not use VectorTypeOperations so that we can use memcpy when w don&apos;t need to call constructor?
&gt; 
&gt; VectorTypeOperations::move is not designed to be used outside of Vector.
&gt; That function relies on that the already-moved buffer will be freed without destroying entries.
&gt; So, if we use it here, we will see that the same object is destroyed twice (one in the Vector side, one in this RefCountedArray side).

Ah, ok. I guess it&apos;s outside the scope of this patch then
but we should probably come up with a way to use memcpy here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749618</commentid>
    <comment_count>5</comment_count>
      <attachid>425848</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-04-13 02:43:21 -0700</bug_when>
    <thetext>Comment on attachment 425848
Patch

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

&gt; Source/WTF/wtf/RefCountedArray.h:128
&gt; +        m_data = data;
&gt; +        Header::fromPayload(data)-&gt;refCount = 1;
&gt; +        Header::fromPayload(data)-&gt;length = vector.size();

It&apos;s really bad that this class keeps repeating this pattern everywhere!
It should be a helper function on Header although it&apos;s totally outside the scope of this patch as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749621</commentid>
    <comment_count>6</comment_count>
      <attachid>425848</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 02:58:43 -0700</bug_when>
    <thetext>Comment on attachment 425848
Patch

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

&gt;&gt; Source/WTF/wtf/RefCountedArray.h:128
&gt;&gt; +        Header::fromPayload(data)-&gt;length = vector.size();
&gt; 
&gt; It&apos;s really bad that this class keeps repeating this pattern everywhere!
&gt; It should be a helper function on Header although it&apos;s totally outside the scope of this patch as well.

Added allocateUninitializedData helper function.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749624</commentid>
    <comment_count>7</comment_count>
      <attachid>425853</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 03:04:47 -0700</bug_when>
    <thetext>Created attachment 425853
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749625</commentid>
    <comment_count>8</comment_count>
      <attachid>425854</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 03:07:54 -0700</bug_when>
    <thetext>Created attachment 425854
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749814</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-04-13 12:54:16 -0700</bug_when>
    <thetext>Committed r275901 (236466@main): &lt;https://commits.webkit.org/236466@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 425854.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749815</commentid>
    <comment_count>10</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-04-13 12:55:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/76605876&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749816</commentid>
    <comment_count>11</comment_count>
      <attachid>425854</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-13 12:55:32 -0700</bug_when>
    <thetext>Comment on attachment 425854
Patch

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

&gt; Source/WTF/wtf/FixedVector.h:88
&gt; +    template&lt;size_t inlineCapacity, typename OverflowHandler&gt;
&gt; +    explicit FixedVector(Vector&lt;T, inlineCapacity, OverflowHandler&gt;&amp;&amp; other)
&gt; +        : m_storage(WTFMove(other))
&gt; +    { }
&gt; +
&gt; +    template&lt;size_t inlineCapacity, typename OverflowHandler&gt;
&gt; +    FixedVector&amp; operator=(Vector&lt;T, inlineCapacity, OverflowHandler&gt;&amp;&amp; other)
&gt; +    {
&gt; +        m_storage = WTFMove(other);
&gt; +        return *this;
&gt; +    }

Don’t we need some calls to shrink to fit here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749818</commentid>
    <comment_count>12</comment_count>
      <attachid>425854</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 12:57:11 -0700</bug_when>
    <thetext>Comment on attachment 425854
Patch

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

&gt;&gt; Source/WTF/wtf/FixedVector.h:88
&gt;&gt; +    }
&gt; 
&gt; Don’t we need some calls to shrink to fit here?

FixedVector is fixed sized. We always allocate the just-fit size array. There is no shrink operations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749824</commentid>
    <comment_count>13</comment_count>
      <attachid>425854</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-04-13 13:05:25 -0700</bug_when>
    <thetext>Comment on attachment 425854
Patch

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

&gt;&gt;&gt; Source/WTF/wtf/FixedVector.h:88
&gt;&gt;&gt; +    }
&gt;&gt; 
&gt;&gt; Don’t we need some calls to shrink to fit here?
&gt; 
&gt; FixedVector is fixed sized. We always allocate the just-fit size array. There is no shrink operations.

Oh, I see now: The storage is RefCountedArray so it’s really the RefCountedArray implementation I need to look at, and that does correctly take only the items from the Vector, and not inherit its memory block, which is what I was hoping for.

That’s so strange! Why always use reference counts in a FixedVector implementation?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1749826</commentid>
    <comment_count>14</comment_count>
      <attachid>425854</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-04-13 13:08:13 -0700</bug_when>
    <thetext>Comment on attachment 425854
Patch

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

&gt;&gt;&gt;&gt; Source/WTF/wtf/FixedVector.h:88
&gt;&gt;&gt;&gt; +    }
&gt;&gt;&gt; 
&gt;&gt;&gt; Don’t we need some calls to shrink to fit here?
&gt;&gt; 
&gt;&gt; FixedVector is fixed sized. We always allocate the just-fit size array. There is no shrink operations.
&gt; 
&gt; Oh, I see now: The storage is RefCountedArray so it’s really the RefCountedArray implementation I need to look at, and that does correctly take only the items from the Vector, and not inherit its memory block, which is what I was hoping for.
&gt; 
&gt; That’s so strange! Why always use reference counts in a FixedVector implementation?

Yes since we are using RefCountedArray internally. But it is always 1 or 0, so basically it does not matter.
And in terms of size, it does not matter too since we need to have 8byte offset for alignment and 4byte for length and 4byte for refCount.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425848</attachid>
            <date>2021-04-13 01:56:29 -0700</date>
            <delta_ts>2021-04-13 07:05:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224475-20210413015629.patch</filename>
            <type>text/plain</type>
            <size>7828</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODcwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg1YWNjOTM1YWMyOWNkNGIwNWJkMmQ2
MjY2MjlkOTkzODVjMGM4MmYuLmIwZDY4NDJhNTJkZmUyYWUwMmMyNzM5N2UyMzJmYzc2M2QwZjQ0
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMjEtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgVmVjdG9yJiYgbW92ZSBjb25zdHJ1
Y3RvciAvIGFzc2lnbm1lbnQgdG8gRml4ZWRWZWN0b3IgYW5kIFJlZkNvdW50ZWRBcnJheQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBh
ZGRzIG1vdmUgY29uc3RydWN0b3IgYW5kIG1vdmUtYXNzaWdubWVudCB0YWtpbmcgVmVjdG9yIHRv
IEZpeGVkVmVjdG9yIC8gUmVmQ291bnRlZEFycmF5LgorICAgICAgICBUaGlzIGFsbG93cyB0cmFu
c2ZlcnJpbmcgTW92ZU9ubHkgdGhpbmdzIGZyb20gVmVjdG9yIHRvIEZpeGVkVmVjdG9yLgorCisg
ICAgICAgICogd3RmL0ZpeGVkVmVjdG9yLmg6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpG
aXhlZFZlY3Rvcik6CisgICAgICAgIChXVEY6OkZpeGVkVmVjdG9yOjpvcGVyYXRvcj0pOgorICAg
ICAgICAqIHd0Zi9SZWZDb3VudGVkQXJyYXkuaDoKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFy
cmF5OjpSZWZDb3VudGVkQXJyYXkpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6Om9w
ZXJhdG9yPSk6CisKIDIwMjEtMDQtMTIgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNv
bnkuY29tPgogCiAgICAgICAgIFtQbGF5U3RhdGlvbl0gRW5hYmxlIFdURkNyYXNoV2l0aEluZm8g
aW1wbGVtZW50YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgg
Yi9Tb3VyY2UvV1RGL3d0Zi9GaXhlZFZlY3Rvci5oCmluZGV4IGUzZjBhOTM4NTQyN2QyNTk5NDNh
OWUyMzg1NWRjZmZhNzU5ZThjMTguLjMyOGY5ODE1MTBiZjdiNjRmNzMwZjFhYmI4ZWUxMTA4MzM3
NmMxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKKysrIGIvU291
cmNlL1dURi93dGYvRml4ZWRWZWN0b3IuaApAQCAtNzUsNiArNzUsMTggQEAgY2xhc3MgRml4ZWRW
ZWN0b3IgewogICAgICAgICByZXR1cm4gKnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8c2l6
ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgZXhwbGlj
aXQgRml4ZWRWZWN0b3IoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+
JiYgb3RoZXIpCisgICAgICAgIDogbV9zdG9yYWdlKFdURk1vdmUob3RoZXIpKQorICAgIHsgfQor
CisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hh
bmRsZXI+CisgICAgRml4ZWRWZWN0b3ImIG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZSA9
IFdURk1vdmUob3RoZXIpOworICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgc2l6
ZV90IHNpemUoKSBjb25zdCB7IHJldHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9CiAgICAgYm9vbCBp
c0VtcHR5KCkgY29uc3QgeyByZXR1cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQogICAgIHNpemVf
dCBieXRlU2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi9SZWZDb3VudGVkQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3Rm
L1JlZkNvdW50ZWRBcnJheS5oCmluZGV4IDY3YWQ3Nzc2ZTU4OTc3NGFhMWY0YmFhMDQ1ZDJhNzE0
Y2IwYmFjMGIuLmIwOWEzZjM2YWEwZTc0N2NkOTFjMGRlMTBiNzBmNTM3ZThhMjMwMGYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCisrKyBiL1NvdXJjZS9XVEYv
d3RmL1JlZkNvdW50ZWRBcnJheS5oCkBAIC0xMTIsNiArMTEyLDI0IEBAIGNsYXNzIFJlZkNvdW50
ZWRBcnJheSB7CiAgICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5n
dGggPT0gb3RoZXIuc2l6ZSgpKTsKICAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OnVu
aW5pdGlhbGl6ZWRDb3B5KG90aGVyLmJlZ2luKCksIG90aGVyLmVuZCgpLCBkYXRhKTsKICAgICB9
CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93
SGFuZGxlcj4KKyAgICBleHBsaWNpdCBSZWZDb3VudGVkQXJyYXkoVmVjdG9yPFQsIGlubGluZUNh
cGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgeworICAgICAgICBWZWN0b3I8
VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4gdmVjdG9yKFdURk1vdmUob3RoZXIp
KTsKKyAgICAgICAgaWYgKHZlY3Rvci5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgIFB0clRyYWl0
czo6ZXhjaGFuZ2UobV9kYXRhLCBudWxscHRyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8SGVhZGVyKj4oUmVmQ291bnRl
ZEFycmF5TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBzaXplb2YoVCkgKiB2ZWN0b3Iu
c2l6ZSgpKSkpLT5wYXlsb2FkKCk7CisgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgIEhl
YWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPnJlZkNvdW50ID0gMTsKKyAgICAgICAgSGVhZGVyOjpm
cm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID0gdmVjdG9yLnNpemUoKTsKKyAgICAgICAgQVNTRVJU
KEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aCA9PSB2ZWN0b3Iuc2l6ZSgpKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjdG9yLnNpemUoKTsgKytp
bmRleCkKKyAgICAgICAgICAgIG5ldyAoZGF0YSArIGluZGV4KSBUKFdURk1vdmUodmVjdG9yW2lu
ZGV4XSkpOworICAgIH0KICAgICAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBPdGhlclRyYWl0cyA9
IFB0clRyYWl0cz4KICAgICBSZWZDb3VudGVkQXJyYXkmIG9wZXJhdG9yPShjb25zdCBSZWZDb3Vu
dGVkQXJyYXk8VCwgT3RoZXJUcmFpdHM+JiBvdGhlcikKQEAgLTE0OCw2ICsxNjYsMzIgQEAgY2xh
c3MgUmVmQ291bnRlZEFycmF5IHsKICAgICAgICAgcmV0dXJuICp0aGlzOwogICAgIH0KIAorICAg
IHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5kbGVy
PgorICAgIFJlZkNvdW50ZWRBcnJheSYgb3BlcmF0b3I9KFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0
eSwgT3ZlcmZsb3dIYW5kbGVyPiYmIG90aGVyKQorICAgIHsKKyAgICAgICAgVmVjdG9yPFQsIGlu
bGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+IHZlY3RvcihXVEZNb3ZlKG90aGVyKSk7Cisg
ICAgICAgIFQqIG9sZERhdGEgPSBkYXRhKCk7CisgICAgICAgIGlmICh2ZWN0b3IuaXNFbXB0eSgp
KQorICAgICAgICAgICAgUHRyVHJhaXRzOjpleGNoYW5nZShtX2RhdGEsIG51bGxwdHIpOworICAg
ICAgICBlbHNlIHsKKyAgICAgICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8SGVhZGVyKj4o
UmVmQ291bnRlZEFycmF5TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBzaXplb2YoVCkg
KiB2ZWN0b3Iuc2l6ZSgpKSkpLT5wYXlsb2FkKCk7CisgICAgICAgICAgICBtX2RhdGEgPSBkYXRh
OworICAgICAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAxOwor
ICAgICAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID0gdmVjdG9yLnNp
emUoKTsKKyAgICAgICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5n
dGggPT0gdmVjdG9yLnNpemUoKSk7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0g
MDsgaW5kZXggPCB2ZWN0b3Iuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAgICAgIG5ldyAo
ZGF0YSArIGluZGV4KSBUKFdURk1vdmUodmVjdG9yW2luZGV4XSkpOworICAgICAgICB9CisgICAg
ICAgIGlmICghb2xkRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAgICAgICAgaWYg
KC0tSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291bnQpCisgICAgICAgICAgICBy
ZXR1cm4gKnRoaXM7CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0cnVjdChv
bGREYXRhLCBvbGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVuZ3RoKTsK
KworICAgICAgICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5bG9h
ZChvbGREYXRhKSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKICAgICB+UmVmQ291
bnRlZEFycmF5KCkKICAgICB7CiAgICAgICAgIGlmICghbV9kYXRhKQpkaWZmIC0tZ2l0IGEvVG9v
bHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGNhODEyNjk4M2FjZGEzOTFmMjA4
ZWZmYzZlYjUyZDAwYjI1MThhODIuLjg2MTMzOGM2NzRmMjkyZjY4Y2IyNzlmOTExN2RiZDNlMzlm
OTNhNDcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwxMyBAQAorMjAyMS0wNC0xMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtXVEZdIEFkZCBWZWN0b3ImJiBtb3ZlIGNvbnN0cnVjdG9yIC8g
YXNzaWdubWVudCB0byBGaXhlZFZlY3RvciBhbmQgUmVmQ291bnRlZEFycmF5CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjQ0NzUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV1RGL0ZpeGVkVmVjdG9yLmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgor
CiAyMDIxLTA0LTEyICBBYWthc2ggSmFpbiAgPGFha2FzaF9qYWluQGFwcGxlLmNvbT4KIAogICAg
ICAgICBNYWtlIENvbW1pdCBRdWV1ZSByb2J1c3QgYnkgYWRkaW5nIGZldyBnaXQgY29tbWFuZHMg
dG8gY2xlYW4gdXAgcmVwb3NpdG9yeQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYv
Rml4ZWRWZWN0b3IuY3BwCmluZGV4IGRmZDlmMDc1OWIxMTZjMjI5YzkxM2E5NmEwNDNkZTFkNWY4
MDIyYjYuLjE2MTUzZGFjOTcyNWQwYjU4ZGJmZmNjYjQ2ODI2ODc5NDc4MDE1NWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHAKQEAgLTE0Niw2ICsx
NDYsMzEgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVBc3NpZ24pCiAgICAgICAgIEVYUEVD
VF9FUSh2ZWMyW2ldLCBpKTsKIH0KIAorVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVWZWN0b3Ip
Cit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwg
TW92ZU9ubHkoMSksIE1vdmVPbmx5KDIpLCBNb3ZlT25seSgzKSk7CisgICAgRVhQRUNUX0VRKHZl
YzEuc2l6ZSgpLCA0VSk7CisgICAgRml4ZWRWZWN0b3I8TW92ZU9ubHk+IHZlYzIoV1RGTW92ZSh2
ZWMxKSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7CisgICAgRVhQRUNUX0VRKHZl
YzIuc2l6ZSgpLCA0VSk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVj
Mi5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2luZGV4XS52YWx1ZSgp
LCBpbmRleCk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVjdG9yLCBNb3ZlQXNzaWduVmVjdG9yKQor
eworICAgIEZpeGVkVmVjdG9yPE1vdmVPbmx5PiB2ZWMyOworICAgIHsKKyAgICAgICAgYXV0byB2
ZWMxID0gVmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwgTW92ZU9ubHkoMSksIE1v
dmVPbmx5KDIpLCBNb3ZlT25seSgzKSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwg
NFUpOworICAgICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMxKTsKKyAgICAgICAgRVhQRUNUX0VRKHZl
YzEuc2l6ZSgpLCAwVSk7CisgICAgfQorICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgNFUpOwor
ICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHZlYzIuc2l6ZSgpOyArK2luZGV4
KQorICAgICAgICBFWFBFQ1RfRVEodmVjMltpbmRleF0udmFsdWUoKSwgaW5kZXgpOworfQorCiBU
RVNUKFdURl9GaXhlZFZlY3RvciwgU3dhcCkKIHsKICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4g
dmVjMSgzKTsKQEAgLTI2Miw0ICsyODcsNDIgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIERlc3Ry
dWN0b3JBZnRlck1vdmUpCiAgICAgICAgIEVYUEVDVF9UUlVFKGZsYWdzW2ldKTsKIH0KIAorVEVT
VChXVEZfRml4ZWRWZWN0b3IsIE1vdmVLZWVwc0RhdGEpCit7CisgICAgeworICAgICAgICBGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKKyAgICAgICAgYXV0byogZGF0YTEgPSB2ZWMxLmRh
dGEoKTsKKyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7
CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyLmRhdGEoKSwgZGF0YTEpOworICAgIH0KKyAgICB7Cisg
ICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOworICAgICAgICBhdXRvKiBkYXRh
MSA9IHZlYzEuZGF0YSgpOworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMjsKKyAg
ICAgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyLmRhdGEo
KSwgZGF0YTEpOworICAgIH0KK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVLZWVwc0Rh
dGFOZXN0ZWQpCit7CisgICAgeworICAgICAgICBWZWN0b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+
PiB2ZWMxOworICAgICAgICB2ZWMxLmFwcGVuZChGaXhlZFZlY3Rvcjx1bnNpZ25lZD4oMykpOwor
ICAgICAgICBhdXRvKiBkYXRhMSA9IHZlYzFbMF0uZGF0YSgpOworICAgICAgICBGaXhlZFZlY3Rv
cjxGaXhlZFZlY3Rvcjx1bnNpZ25lZD4+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7CisgICAgICAgIEVY
UEVDVF9FUSh2ZWMyLnNpemUoKSwgMVUpOworICAgICAgICBFWFBFQ1RfRVEodmVjMlswXS5kYXRh
KCksIGRhdGExKTsKKyAgICB9CisgICAgeworICAgICAgICBWZWN0b3I8Rml4ZWRWZWN0b3I8dW5z
aWduZWQ+PiB2ZWMxOworICAgICAgICB2ZWMxLmFwcGVuZChGaXhlZFZlY3Rvcjx1bnNpZ25lZD4o
MykpOworICAgICAgICBhdXRvKiBkYXRhMSA9IHZlYzFbMF0uZGF0YSgpOworICAgICAgICBGaXhl
ZFZlY3RvcjxGaXhlZFZlY3Rvcjx1bnNpZ25lZD4+IHZlYzI7CisgICAgICAgIHZlYzIgPSBXVEZN
b3ZlKHZlYzEpOworICAgICAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDFVKTsKKyAgICAgICAg
RVhQRUNUX0VRKHZlYzJbMF0uZGF0YSgpLCBkYXRhMSk7CisgICAgfQorfQorCiB9IC8vIG5hbWVz
cGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>
<flag name="review"
          id="445924"
          type_id="1"
          status="+"
          setter="rniwa"
    />
    <flag name="commit-queue"
          id="445951"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425853</attachid>
            <date>2021-04-13 03:04:47 -0700</date>
            <delta_ts>2021-04-13 03:06:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224475-20210413030447.patch</filename>
            <type>text/plain</type>
            <size>11265</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg1YWNjOTM1YWMyOWNkNGIwNWJkMmQ2
MjY2MjlkOTkzODVjMGM4MmYuLjUzOTE3OTU2YmY4YmM1M2I4ZjJmZDI3YTlhNjIxZjUwNTIzNmM5
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgVmVjdG9yJiYgbW92ZSBjb25zdHJ1
Y3RvciAvIGFzc2lnbm1lbnQgdG8gRml4ZWRWZWN0b3IgYW5kIFJlZkNvdW50ZWRBcnJheQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBtb3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgdGFraW5nIFZlY3RvciB0byBG
aXhlZFZlY3RvciAvIFJlZkNvdW50ZWRBcnJheS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdHJhbnNm
ZXJyaW5nIE1vdmVPbmx5IHRoaW5ncyBmcm9tIFZlY3RvciB0byBGaXhlZFZlY3Rvci4KKworICAg
ICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Rml4
ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJh
eTo6UmVmQ291bnRlZEFycmF5KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpvcGVy
YXRvcj0pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6On5SZWZDb3VudGVkQXJyYXkp
OgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmFsbG9jYXRlVW5pbml0aWFsaXplZERh
dGEpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmFzc2lnbik6CisKIDIwMjEtMDQt
MTIgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gRW5hYmxlIFdURkNyYXNoV2l0aEluZm8gaW1wbGVtZW50YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhl
ZFZlY3Rvci5oCmluZGV4IGUzZjBhOTM4NTQyN2QyNTk5NDNhOWUyMzg1NWRjZmZhNzU5ZThjMTgu
LjMyOGY5ODE1MTBiZjdiNjRmNzMwZjFhYmI4ZWUxMTA4MzM3NmMxZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0
b3IuaApAQCAtNzUsNiArNzUsMTggQEAgY2xhc3MgRml4ZWRWZWN0b3IgewogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgZXhwbGljaXQgRml4ZWRWZWN0b3IoVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgICAgIDog
bV9zdG9yYWdlKFdURk1vdmUob3RoZXIpKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgRml4ZWRWZWN0
b3ImIG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4m
JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZSA9IFdURk1vdmUob3RoZXIpOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9SZWZDb3VudGVkQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCmlu
ZGV4IDY3YWQ3Nzc2ZTU4OTc3NGFhMWY0YmFhMDQ1ZDJhNzE0Y2IwYmFjMGIuLjJkZGQyYjMyYmVm
NDE5NGE1YmI3NWJhNTdiNGZiZTVlYTM4ZDQ4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1JlZkNvdW50ZWRBcnJheS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5o
CkBAIC03OCwxMSArNzgsNyBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVCogZGF0YSA9IChzdGF0aWNfY2FzdDxIZWFk
ZXIqPihSZWZDb3VudGVkQXJyYXlNYWxsb2M6Om1hbGxvYyhIZWFkZXI6OnNpemUoKSArIHNpemVv
ZihUKSAqIHNpemUpKSktPnBheWxvYWQoKTsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLSAgICAg
ICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAxOwotICAgICAgICBIZWFk
ZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPSBzaXplOwotICAgICAgICBBU1NFUlQoSGVh
ZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID09IHNpemUpOworICAgICAgICBtX2RhdGEg
PSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWREYXRhKHNpemUpOwogICAgICAgICBWZWN0b3JUeXBlT3Bl
cmF0aW9uczxUPjo6aW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luKCksIGVuZCgpKTsKICAgICB9CiAK
QEAgLTEwNCwxMyArMTAwLDI0IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgICAgICAg
ICBQdHJUcmFpdHM6OmV4Y2hhbmdlKG1fZGF0YSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8
SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBz
aXplb2YoVCkgKiBvdGhlci5zaXplKCkpKSktPnBheWxvYWQoKTsKKworICAgICAgICBtX2RhdGEg
PSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWREYXRhKG90aGVyLnNpemUoKSk7CisgICAgICAgIFZlY3Rv
clR5cGVPcGVyYXRpb25zPFQ+Ojp1bmluaXRpYWxpemVkQ29weShvdGhlci5iZWdpbigpLCBvdGhl
ci5lbmQoKSwgbV9kYXRhKTsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3QgaW5saW5lQ2Fw
YWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBleHBsaWNpdCBSZWZDb3VudGVk
QXJyYXkoVmVjdG9yPFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIp
CisgICAgeworICAgICAgICBWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4gdmVjdG9yKFdURk1vdmUob3RoZXIpKTsKKyAgICAgICAgaWYgKHZlY3Rvci5pc0VtcHR5KCkp
IHsKKyAgICAgICAgICAgIFB0clRyYWl0czo6ZXhjaGFuZ2UobV9kYXRhLCBudWxscHRyKTsKKyAg
ICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIFQqIGRhdGEgPSBhbGxvY2F0
ZVVuaW5pdGlhbGl6ZWREYXRhKHZlY3Rvci5zaXplKCkpOwogICAgICAgICBtX2RhdGEgPSBkYXRh
OwotICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5yZWZDb3VudCA9IDE7Ci0gICAg
ICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aCA9IG90aGVyLnNpemUoKTsKLSAg
ICAgICAgQVNTRVJUKEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aCA9PSBvdGhlci5z
aXplKCkpOwotICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6dW5pbml0aWFsaXplZENv
cHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIGRhdGEpOworICAgICAgICBmb3IgKHVuc2ln
bmVkIGluZGV4ID0gMDsgaW5kZXggPCB2ZWN0b3Iuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAg
ICAgbmV3IChkYXRhICsgaW5kZXgpIFQoV1RGTW92ZSh2ZWN0b3JbaW5kZXhdKSk7CiAgICAgfQog
ICAgIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIE90aGVyVHJhaXRzID0gUHRyVHJhaXRzPgpAQCAt
MTMxLDE3ICsxMzgsNDIgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICAgICAgaWYgKG90
aGVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgIFB0clRyYWl0czo6ZXhjaGFuZ2UobV9kYXRhLCBu
dWxscHRyKTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBUKiBkYXRhID0gKHN0YXRpY19j
YXN0PEhlYWRlcio+KFJlZkNvdW50ZWRBcnJheU1hbGxvYzo6bWFsbG9jKEhlYWRlcjo6c2l6ZSgp
ICsgc2l6ZW9mKFQpICogb3RoZXIuc2l6ZSgpKSkpLT5wYXlsb2FkKCk7CisgICAgICAgICAgICBt
X2RhdGEgPSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWREYXRhKG90aGVyLnNpemUoKSk7CisgICAgICAg
ICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVn
aW4oKSwgb3RoZXIuZW5kKCksIG1fZGF0YSk7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFvbGRE
YXRhKQorICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAgICB1bnNpZ25lZCByZWZDb3Vu
dCA9IEhlYWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0YSktPnJlZkNvdW50IC0gMTsKKyAgICAgICAg
aWYgKHJlZkNvdW50KSB7CisgICAgICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKG9sZERhdGEp
LT5yZWZDb3VudCA9IHJlZkNvdW50OworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAg
ICB9CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0cnVjdChvbGREYXRhLCBv
bGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVuZ3RoKTsKKworICAgICAg
ICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRh
KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBSZWZDb3VudGVk
QXJyYXkmIG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyPiB2ZWN0b3IoV1RGTW92ZShvdGhlcikpOworICAgICAgICBUKiBvbGREYXRh
ID0gZGF0YSgpOworICAgICAgICBpZiAodmVjdG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIFB0
clRyYWl0czo6ZXhjaGFuZ2UobV9kYXRhLCBudWxscHRyKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBUKiBkYXRhID0gYWxsb2NhdGVVbmluaXRpYWxpemVkRGF0YSh2ZWN0b3Iuc2l6ZSgp
KTsKICAgICAgICAgICAgIG1fZGF0YSA9IGRhdGE7Ci0gICAgICAgICAgICBIZWFkZXI6OmZyb21Q
YXlsb2FkKGRhdGEpLT5yZWZDb3VudCA9IDE7Ci0gICAgICAgICAgICBIZWFkZXI6OmZyb21QYXls
b2FkKGRhdGEpLT5sZW5ndGggPSBvdGhlci5zaXplKCk7Ci0gICAgICAgICAgICBBU1NFUlQoSGVh
ZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID09IG90aGVyLnNpemUoKSk7Ci0gICAgICAg
ICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6dW5pbml0aWFsaXplZENvcHkob3RoZXIuYmVn
aW4oKSwgb3RoZXIuZW5kKCksIGRhdGEpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRl
eCA9IDA7IGluZGV4IDwgdmVjdG9yLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgICAgICAgICBu
ZXcgKGRhdGEgKyBpbmRleCkgVChXVEZNb3ZlKHZlY3RvcltpbmRleF0pKTsKICAgICAgICAgfQog
ICAgICAgICBpZiAoIW9sZERhdGEpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAg
IGlmICgtLUhlYWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0YSktPnJlZkNvdW50KQorICAgICAgICB1
bnNpZ25lZCByZWZDb3VudCA9IEhlYWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0YSktPnJlZkNvdW50
IC0gMTsKKyAgICAgICAgaWYgKHJlZkNvdW50KSB7CisgICAgICAgICAgICBIZWFkZXI6OmZyb21Q
YXlsb2FkKG9sZERhdGEpLT5yZWZDb3VudCA9IHJlZkNvdW50OwogICAgICAgICAgICAgcmV0dXJu
ICp0aGlzOworICAgICAgICB9CiAgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0
cnVjdChvbGREYXRhLCBvbGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVu
Z3RoKTsKIAogICAgICAgICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9t
UGF5bG9hZChvbGREYXRhKSk7CkBAIC0xNTMsOCArMTg1LDExIEBAIGNsYXNzIFJlZkNvdW50ZWRB
cnJheSB7CiAgICAgICAgIGlmICghbV9kYXRhKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBUKiBkYXRhID0gdGhpcy0+ZGF0YSgpOwotICAgICAgICBpZiAoLS1IZWFkZXI6OmZyb21QYXls
b2FkKGRhdGEpLT5yZWZDb3VudCkKKyAgICAgICAgdW5zaWduZWQgcmVmQ291bnQgPSBIZWFkZXI6
OmZyb21QYXlsb2FkKGRhdGEpLT5yZWZDb3VudCAtIDE7CisgICAgICAgIGlmIChyZWZDb3VudCkg
eworICAgICAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSByZWZD
b3VudDsKICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgICAgICBWZWN0b3JUeXBl
T3BlcmF0aW9uczxUPjo6ZGVzdHJ1Y3QoYmVnaW4oKSwgZW5kKCkpOwogICAgICAgICBSZWZDb3Vu
dGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKSk7CiAgICAgfQpA
QCAtMjQ4LDYgKzI4MywxNSBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgIGJvb2wgb3Bl
cmF0b3I9PShjb25zdCBSZWZDb3VudGVkQXJyYXkmIG90aGVyKSBjb25zdCB7IHJldHVybiB0aGlz
LT5vcGVyYXRvcj09PFB0clRyYWl0cz4ob3RoZXIpOyB9CiAgICAgCiBwcml2YXRlOgorICAgIHN0
YXRpYyBUKiBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWREYXRhKHVuc2lnbmVkIGxlbmd0aCkKKyAgICB7
CisgICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5
TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBzaXplb2YoVCkgKiBsZW5ndGgpKSktPnBh
eWxvYWQoKTsKKyAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAx
OworICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPSBsZW5ndGg7Cisg
ICAgICAgIEFTU0VSVChIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPT0gbGVuZ3Ro
KTsKKyAgICAgICAgcmV0dXJuIGRhdGE7CisgICAgfQorCiAgICAgdGVtcGxhdGU8dHlwZW5hbWUg
T3RoZXJUcmFpdHMgPSBQdHJUcmFpdHM+CiAgICAgUmVmQ291bnRlZEFycmF5JiBhc3NpZ24oY29u
c3QgUmVmQ291bnRlZEFycmF5PFQsIE90aGVyVHJhaXRzPiYgb3RoZXIpCiAgICAgewpAQCAtMjU5
LDggKzMwMywxMSBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewogCiAgICAgICAgIGlmICghb2xk
RGF0YSkKICAgICAgICAgICAgIHJldHVybiAqdGhpczsKLSAgICAgICAgaWYgKC0tSGVhZGVyOjpm
cm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291bnQpCisgICAgICAgIHVuc2lnbmVkIHJlZkNvdW50
ID0gSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291bnQgLSAxOworICAgICAgICBp
ZiAocmVmQ291bnQpIHsKKyAgICAgICAgICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0YSkt
PnJlZkNvdW50ID0gcmVmQ291bnQ7CiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7CisgICAgICAg
IH0KICAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OmRlc3RydWN0KG9sZERhdGEsIG9s
ZERhdGEgKyBIZWFkZXI6OmZyb21QYXlsb2FkKG9sZERhdGEpLT5sZW5ndGgpOwogCiAgICAgICAg
IFJlZkNvdW50ZWRBcnJheU1hbGxvYzo6ZnJlZShIZWFkZXI6OmZyb21QYXlsb2FkKG9sZERhdGEp
KTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxvZwppbmRleCBj
YTgxMjY5ODNhY2RhMzkxZjIwOGVmZmM2ZWI1MmQwMGIyNTE4YTgyLi5lYWZjNDFkZDBhNDE2Y2Qz
ODM0MjBlMmYzY2MyNjg5MWQyOWM5YjY0IDEwMDY0NAotLS0gYS9Ub29scy9DaGFuZ2VMb2cKKysr
IGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjEtMDQtMTMgIFl1c3VrZSBT
dXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgVmVjdG9yJiYg
bW92ZSBjb25zdHJ1Y3RvciAvIGFzc2lnbm1lbnQgdG8gRml4ZWRWZWN0b3IgYW5kIFJlZkNvdW50
ZWRBcnJheQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI0NDc1CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgICog
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwOgorICAgICAgICAoVGVzdFdl
YktpdEFQSTo6VEVTVCk6CisKIDIwMjEtMDQtMTIgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIE1ha2UgQ29tbWl0IFF1ZXVlIHJvYnVzdCBieSBhZGRpbmcg
ZmV3IGdpdCBjb21tYW5kcyB0byBjbGVhbiB1cCByZXBvc2l0b3J5CmRpZmYgLS1naXQgYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHAgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1Rlc3RzL1dURi9GaXhlZFZlY3Rvci5jcHAKaW5kZXggZGZkOWYwNzU5YjExNmMyMjlj
OTEzYTk2YTA0M2RlMWQ1ZjgwMjJiNi4uMTYxNTNkYWM5NzI1ZDBiNThkYmZmY2NiNDY4MjY4Nzk0
NzgwMTU1YSAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRW
ZWN0b3IuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9y
LmNwcApAQCAtMTQ2LDYgKzE0NiwzMSBAQCBURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUFzc2ln
bikKICAgICAgICAgRVhQRUNUX0VRKHZlYzJbaV0sIGkpOwogfQogCitURVNUKFdURl9GaXhlZFZl
Y3RvciwgTW92ZVZlY3RvcikKK3sKKyAgICBhdXRvIHZlYzEgPSBWZWN0b3I8TW92ZU9ubHk+Ojpm
cm9tKE1vdmVPbmx5KDApLCBNb3ZlT25seSgxKSwgTW92ZU9ubHkoMiksIE1vdmVPbmx5KDMpKTsK
KyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDRVKTsKKyAgICBGaXhlZFZlY3RvcjxNb3ZlT25s
eT4gdmVjMihXVEZNb3ZlKHZlYzEpKTsKKyAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsK
KyAgICBFWFBFQ1RfRVEodmVjMi5zaXplKCksIDRVKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCB2ZWMyLnNpemUoKTsgKytpbmRleCkKKyAgICAgICAgRVhQRUNUX0VRKHZl
YzJbaW5kZXhdLnZhbHVlKCksIGluZGV4KTsKK30KKworVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1v
dmVBc3NpZ25WZWN0b3IpCit7CisgICAgRml4ZWRWZWN0b3I8TW92ZU9ubHk+IHZlYzI7CisgICAg
eworICAgICAgICBhdXRvIHZlYzEgPSBWZWN0b3I8TW92ZU9ubHk+Ojpmcm9tKE1vdmVPbmx5KDAp
LCBNb3ZlT25seSgxKSwgTW92ZU9ubHkoMiksIE1vdmVPbmx5KDMpKTsKKyAgICAgICAgRVhQRUNU
X0VRKHZlYzEuc2l6ZSgpLCA0VSk7CisgICAgICAgIHZlYzIgPSBXVEZNb3ZlKHZlYzEpOworICAg
ICAgICBFWFBFQ1RfRVEodmVjMS5zaXplKCksIDBVKTsKKyAgICB9CisgICAgRVhQRUNUX0VRKHZl
YzIuc2l6ZSgpLCA0VSk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdmVj
Mi5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2luZGV4XS52YWx1ZSgp
LCBpbmRleCk7Cit9CisKIFRFU1QoV1RGX0ZpeGVkVmVjdG9yLCBTd2FwKQogewogICAgIEZpeGVk
VmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOwpAQCAtMjYyLDQgKzI4Nyw0MiBAQCBURVNUKFdURl9G
aXhlZFZlY3RvciwgRGVzdHJ1Y3RvckFmdGVyTW92ZSkKICAgICAgICAgRVhQRUNUX1RSVUUoZmxh
Z3NbaV0pOwogfQogCitURVNUKFdURl9GaXhlZFZlY3RvciwgTW92ZUtlZXBzRGF0YSkKK3sKKyAg
ICB7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMxKDMpOworICAgICAgICBhdXRv
KiBkYXRhMSA9IHZlYzEuZGF0YSgpOworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVj
MihXVEZNb3ZlKHZlYzEpKTsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzIuZGF0YSgpLCBkYXRhMSk7
CisgICAgfQorICAgIHsKKyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWduZWQ+IHZlYzEoMyk7Cisg
ICAgICAgIGF1dG8qIGRhdGExID0gdmVjMS5kYXRhKCk7CisgICAgICAgIEZpeGVkVmVjdG9yPHVu
c2lnbmVkPiB2ZWMyOworICAgICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMxKTsKKyAgICAgICAgRVhQ
RUNUX0VRKHZlYzIuZGF0YSgpLCBkYXRhMSk7CisgICAgfQorfQorCitURVNUKFdURl9GaXhlZFZl
Y3RvciwgTW92ZUtlZXBzRGF0YU5lc3RlZCkKK3sKKyAgICB7CisgICAgICAgIFZlY3RvcjxGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD4+IHZlYzE7CisgICAgICAgIHZlYzEuYXBwZW5kKEZpeGVkVmVjdG9y
PHVuc2lnbmVkPigzKSk7CisgICAgICAgIGF1dG8qIGRhdGExID0gdmVjMVswXS5kYXRhKCk7Cisg
ICAgICAgIEZpeGVkVmVjdG9yPEZpeGVkVmVjdG9yPHVuc2lnbmVkPj4gdmVjMihXVEZNb3ZlKHZl
YzEpKTsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCAxVSk7CisgICAgICAgIEVYUEVD
VF9FUSh2ZWMyWzBdLmRhdGEoKSwgZGF0YTEpOworICAgIH0KKyAgICB7CisgICAgICAgIFZlY3Rv
cjxGaXhlZFZlY3Rvcjx1bnNpZ25lZD4+IHZlYzE7CisgICAgICAgIHZlYzEuYXBwZW5kKEZpeGVk
VmVjdG9yPHVuc2lnbmVkPigzKSk7CisgICAgICAgIGF1dG8qIGRhdGExID0gdmVjMVswXS5kYXRh
KCk7CisgICAgICAgIEZpeGVkVmVjdG9yPEZpeGVkVmVjdG9yPHVuc2lnbmVkPj4gdmVjMjsKKyAg
ICAgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUo
KSwgMVUpOworICAgICAgICBFWFBFQ1RfRVEodmVjMlswXS5kYXRhKCksIGRhdGExKTsKKyAgICB9
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>425854</attachid>
            <date>2021-04-13 03:07:54 -0700</date>
            <delta_ts>2021-04-13 12:54:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-224475-20210413030753.patch</filename>
            <type>text/plain</type>
            <size>11215</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjc1ODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg1YWNjOTM1YWMyOWNkNGIwNWJkMmQ2
MjY2MjlkOTkzODVjMGM4MmYuLjUzOTE3OTU2YmY4YmM1M2I4ZjJmZDI3YTlhNjIxZjUwNTIzNmM5
NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMjEtMDQtMTMgIFl1c3VrZSBTdXp1a2kgIDx5c3V6
dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbV1RGXSBBZGQgVmVjdG9yJiYgbW92ZSBjb25zdHJ1
Y3RvciAvIGFzc2lnbm1lbnQgdG8gRml4ZWRWZWN0b3IgYW5kIFJlZkNvdW50ZWRBcnJheQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI0NDc1CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgUnlvc3VrZSBOaXdhLgorCisgICAgICAgIFRoaXMgcGF0Y2ggYWRk
cyBtb3ZlIGNvbnN0cnVjdG9yIGFuZCBtb3ZlLWFzc2lnbm1lbnQgdGFraW5nIFZlY3RvciB0byBG
aXhlZFZlY3RvciAvIFJlZkNvdW50ZWRBcnJheS4KKyAgICAgICAgVGhpcyBhbGxvd3MgdHJhbnNm
ZXJyaW5nIE1vdmVPbmx5IHRoaW5ncyBmcm9tIFZlY3RvciB0byBGaXhlZFZlY3Rvci4KKworICAg
ICAgICAqIHd0Zi9GaXhlZFZlY3Rvci5oOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6Rml4
ZWRWZWN0b3IpOgorICAgICAgICAoV1RGOjpGaXhlZFZlY3Rvcjo6b3BlcmF0b3I9KToKKyAgICAg
ICAgKiB3dGYvUmVmQ291bnRlZEFycmF5Lmg6CisgICAgICAgIChXVEY6OlJlZkNvdW50ZWRBcnJh
eTo6UmVmQ291bnRlZEFycmF5KToKKyAgICAgICAgKFdURjo6UmVmQ291bnRlZEFycmF5OjpvcGVy
YXRvcj0pOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6On5SZWZDb3VudGVkQXJyYXkp
OgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmFsbG9jYXRlVW5pbml0aWFsaXplZERh
dGEpOgorICAgICAgICAoV1RGOjpSZWZDb3VudGVkQXJyYXk6OmFzc2lnbik6CisKIDIwMjEtMDQt
MTIgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uuc3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFtQ
bGF5U3RhdGlvbl0gRW5hYmxlIFdURkNyYXNoV2l0aEluZm8gaW1wbGVtZW50YXRpb24KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmggYi9Tb3VyY2UvV1RGL3d0Zi9GaXhl
ZFZlY3Rvci5oCmluZGV4IGUzZjBhOTM4NTQyN2QyNTk5NDNhOWUyMzg1NWRjZmZhNzU5ZThjMTgu
LjMyOGY5ODE1MTBiZjdiNjRmNzMwZjFhYmI4ZWUxMTA4MzM3NmMxZDQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XVEYvd3RmL0ZpeGVkVmVjdG9yLmgKKysrIGIvU291cmNlL1dURi93dGYvRml4ZWRWZWN0
b3IuaApAQCAtNzUsNiArNzUsMTggQEAgY2xhc3MgRml4ZWRWZWN0b3IgewogICAgICAgICByZXR1
cm4gKnRoaXM7CiAgICAgfQogCisgICAgdGVtcGxhdGU8c2l6ZV90IGlubGluZUNhcGFjaXR5LCB0
eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgZXhwbGljaXQgRml4ZWRWZWN0b3IoVmVjdG9y
PFQsIGlubGluZUNhcGFjaXR5LCBPdmVyZmxvd0hhbmRsZXI+JiYgb3RoZXIpCisgICAgICAgIDog
bV9zdG9yYWdlKFdURk1vdmUob3RoZXIpKQorICAgIHsgfQorCisgICAgdGVtcGxhdGU8c2l6ZV90
IGlubGluZUNhcGFjaXR5LCB0eXBlbmFtZSBPdmVyZmxvd0hhbmRsZXI+CisgICAgRml4ZWRWZWN0
b3ImIG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxlcj4m
JiBvdGhlcikKKyAgICB7CisgICAgICAgIG1fc3RvcmFnZSA9IFdURk1vdmUob3RoZXIpOworICAg
ICAgICByZXR1cm4gKnRoaXM7CisgICAgfQorCiAgICAgc2l6ZV90IHNpemUoKSBjb25zdCB7IHJl
dHVybiBtX3N0b3JhZ2Uuc2l6ZSgpOyB9CiAgICAgYm9vbCBpc0VtcHR5KCkgY29uc3QgeyByZXR1
cm4gbV9zdG9yYWdlLmlzRW1wdHkoKTsgfQogICAgIHNpemVfdCBieXRlU2l6ZSgpIGNvbnN0IHsg
cmV0dXJuIG1fc3RvcmFnZS5ieXRlU2l6ZSgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0
Zi9SZWZDb3VudGVkQXJyYXkuaCBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5oCmlu
ZGV4IDY3YWQ3Nzc2ZTU4OTc3NGFhMWY0YmFhMDQ1ZDJhNzE0Y2IwYmFjMGIuLjUwMzMyNTM0MDQw
NjJjNDZlNGI1ZTg1MGJlNjYwNjliMDdjNDc5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3Rm
L1JlZkNvdW50ZWRBcnJheS5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1JlZkNvdW50ZWRBcnJheS5o
CkBAIC03OCwxMSArNzgsNyBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgVCogZGF0YSA9IChzdGF0aWNfY2FzdDxIZWFk
ZXIqPihSZWZDb3VudGVkQXJyYXlNYWxsb2M6Om1hbGxvYyhIZWFkZXI6OnNpemUoKSArIHNpemVv
ZihUKSAqIHNpemUpKSktPnBheWxvYWQoKTsKLSAgICAgICAgbV9kYXRhID0gZGF0YTsKLSAgICAg
ICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAxOwotICAgICAgICBIZWFk
ZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5sZW5ndGggPSBzaXplOwotICAgICAgICBBU1NFUlQoSGVh
ZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID09IHNpemUpOworICAgICAgICBtX2RhdGEg
PSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWREYXRhKHNpemUpOwogICAgICAgICBWZWN0b3JUeXBlT3Bl
cmF0aW9uczxUPjo6aW5pdGlhbGl6ZUlmTm9uUE9EKGJlZ2luKCksIGVuZCgpKTsKICAgICB9CiAK
QEAgLTEwNCwxNCArMTAwLDI2IEBAIGNsYXNzIFJlZkNvdW50ZWRBcnJheSB7CiAgICAgICAgICAg
ICBQdHJUcmFpdHM6OmV4Y2hhbmdlKG1fZGF0YSwgbnVsbHB0cik7CiAgICAgICAgICAgICByZXR1
cm47CiAgICAgICAgIH0KLSAgICAgICAgCi0gICAgICAgIFQqIGRhdGEgPSAoc3RhdGljX2Nhc3Q8
SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5TWFsbG9jOjptYWxsb2MoSGVhZGVyOjpzaXplKCkgKyBz
aXplb2YoVCkgKiBvdGhlci5zaXplKCkpKSktPnBheWxvYWQoKTsKKworICAgICAgICBUKiBkYXRh
ID0gYWxsb2NhdGVVbmluaXRpYWxpemVkRGF0YShvdGhlci5zaXplKCkpOwogICAgICAgICBtX2Rh
dGEgPSBkYXRhOwotICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKGRhdGEpLT5yZWZDb3VudCA9
IDE7Ci0gICAgICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aCA9IG90aGVyLnNp
emUoKTsKLSAgICAgICAgQVNTRVJUKEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aCA9
PSBvdGhlci5zaXplKCkpOwogICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxUPjo6dW5pbml0
aWFsaXplZENvcHkob3RoZXIuYmVnaW4oKSwgb3RoZXIuZW5kKCksIGRhdGEpOwogICAgIH0KKwor
ICAgIHRlbXBsYXRlPHNpemVfdCBpbmxpbmVDYXBhY2l0eSwgdHlwZW5hbWUgT3ZlcmZsb3dIYW5k
bGVyPgorICAgIGV4cGxpY2l0IFJlZkNvdW50ZWRBcnJheShWZWN0b3I8VCwgaW5saW5lQ2FwYWNp
dHksIE92ZXJmbG93SGFuZGxlcj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxULCBp
bmxpbmVDYXBhY2l0eSwgT3ZlcmZsb3dIYW5kbGVyPiB2ZWN0b3IoV1RGTW92ZShvdGhlcikpOwor
ICAgICAgICBpZiAodmVjdG9yLmlzRW1wdHkoKSkgeworICAgICAgICAgICAgUHRyVHJhaXRzOjpl
eGNoYW5nZShtX2RhdGEsIG51bGxwdHIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgVCogZGF0YSA9IGFsbG9jYXRlVW5pbml0aWFsaXplZERhdGEodmVjdG9yLnNp
emUoKSk7CisgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IHZlY3Rvci5zaXplKCk7ICsraW5kZXgpCisgICAgICAgICAgICBuZXcg
KGRhdGEgKyBpbmRleCkgVChXVEZNb3ZlKHZlY3RvcltpbmRleF0pKTsKKyAgICB9CiAgICAgCiAg
ICAgdGVtcGxhdGU8dHlwZW5hbWUgT3RoZXJUcmFpdHMgPSBQdHJUcmFpdHM+CiAgICAgUmVmQ291
bnRlZEFycmF5JiBvcGVyYXRvcj0oY29uc3QgUmVmQ291bnRlZEFycmF5PFQsIE90aGVyVHJhaXRz
PiYgb3RoZXIpCkBAIC0xMzEsMTcgKzEzOSw0MyBAQCBjbGFzcyBSZWZDb3VudGVkQXJyYXkgewog
ICAgICAgICBpZiAob3RoZXIuaXNFbXB0eSgpKQogICAgICAgICAgICAgUHRyVHJhaXRzOjpleGNo
YW5nZShtX2RhdGEsIG51bGxwdHIpOwogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFQqIGRh
dGEgPSAoc3RhdGljX2Nhc3Q8SGVhZGVyKj4oUmVmQ291bnRlZEFycmF5TWFsbG9jOjptYWxsb2Mo
SGVhZGVyOjpzaXplKCkgKyBzaXplb2YoVCkgKiBvdGhlci5zaXplKCkpKSktPnBheWxvYWQoKTsK
KyAgICAgICAgICAgIFQqIGRhdGEgPSBhbGxvY2F0ZVVuaW5pdGlhbGl6ZWREYXRhKG90aGVyLnNp
emUoKSk7CiAgICAgICAgICAgICBtX2RhdGEgPSBkYXRhOwotICAgICAgICAgICAgSGVhZGVyOjpm
cm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgPSAxOwotICAgICAgICAgICAgSGVhZGVyOjpmcm9t
UGF5bG9hZChkYXRhKS0+bGVuZ3RoID0gb3RoZXIuc2l6ZSgpOwotICAgICAgICAgICAgQVNTRVJU
KEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPmxlbmd0aCA9PSBvdGhlci5zaXplKCkpOwogICAg
ICAgICAgICAgVmVjdG9yVHlwZU9wZXJhdGlvbnM8VD46OnVuaW5pdGlhbGl6ZWRDb3B5KG90aGVy
LmJlZ2luKCksIG90aGVyLmVuZCgpLCBkYXRhKTsKICAgICAgICAgfQogICAgICAgICBpZiAoIW9s
ZERhdGEpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIGlmICgtLUhlYWRlcjo6
ZnJvbVBheWxvYWQob2xkRGF0YSktPnJlZkNvdW50KQorICAgICAgICB1bnNpZ25lZCByZWZDb3Vu
dCA9IEhlYWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0YSktPnJlZkNvdW50IC0gMTsKKyAgICAgICAg
aWYgKHJlZkNvdW50KSB7CisgICAgICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKG9sZERhdGEp
LT5yZWZDb3VudCA9IHJlZkNvdW50OworICAgICAgICAgICAgcmV0dXJuICp0aGlzOworICAgICAg
ICB9CisgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0cnVjdChvbGREYXRhLCBv
bGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVuZ3RoKTsKKworICAgICAg
ICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRh
KSk7CisgICAgICAgIHJldHVybiAqdGhpczsKKyAgICB9CisKKyAgICB0ZW1wbGF0ZTxzaXplX3Qg
aW5saW5lQ2FwYWNpdHksIHR5cGVuYW1lIE92ZXJmbG93SGFuZGxlcj4KKyAgICBSZWZDb3VudGVk
QXJyYXkmIG9wZXJhdG9yPShWZWN0b3I8VCwgaW5saW5lQ2FwYWNpdHksIE92ZXJmbG93SGFuZGxl
cj4mJiBvdGhlcikKKyAgICB7CisgICAgICAgIFZlY3RvcjxULCBpbmxpbmVDYXBhY2l0eSwgT3Zl
cmZsb3dIYW5kbGVyPiB2ZWN0b3IoV1RGTW92ZShvdGhlcikpOworICAgICAgICBUKiBvbGREYXRh
ID0gZGF0YSgpOworICAgICAgICBpZiAodmVjdG9yLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIFB0
clRyYWl0czo6ZXhjaGFuZ2UobV9kYXRhLCBudWxscHRyKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICBUKiBkYXRhID0gYWxsb2NhdGVVbmluaXRpYWxpemVkRGF0YSh2ZWN0b3Iuc2l6ZSgp
KTsKKyAgICAgICAgICAgIG1fZGF0YSA9IGRhdGE7CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVk
IGluZGV4ID0gMDsgaW5kZXggPCB2ZWN0b3Iuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICAgICAg
ICAgIG5ldyAoZGF0YSArIGluZGV4KSBUKFdURk1vdmUodmVjdG9yW2luZGV4XSkpOworICAgICAg
ICB9CisgICAgICAgIGlmICghb2xkRGF0YSkKKyAgICAgICAgICAgIHJldHVybiAqdGhpczsKKyAg
ICAgICAgdW5zaWduZWQgcmVmQ291bnQgPSBIZWFkZXI6OmZyb21QYXlsb2FkKG9sZERhdGEpLT5y
ZWZDb3VudCAtIDE7CisgICAgICAgIGlmIChyZWZDb3VudCkgeworICAgICAgICAgICAgSGVhZGVy
Ojpmcm9tUGF5bG9hZChvbGREYXRhKS0+cmVmQ291bnQgPSByZWZDb3VudDsKICAgICAgICAgICAg
IHJldHVybiAqdGhpczsKKyAgICAgICAgfQogICAgICAgICBWZWN0b3JUeXBlT3BlcmF0aW9uczxU
Pjo6ZGVzdHJ1Y3Qob2xkRGF0YSwgb2xkRGF0YSArIEhlYWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0
YSktPmxlbmd0aCk7CiAKICAgICAgICAgUmVmQ291bnRlZEFycmF5TWFsbG9jOjpmcmVlKEhlYWRl
cjo6ZnJvbVBheWxvYWQob2xkRGF0YSkpOwpAQCAtMTUzLDggKzE4NywxMSBAQCBjbGFzcyBSZWZD
b3VudGVkQXJyYXkgewogICAgICAgICBpZiAoIW1fZGF0YSkKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgVCogZGF0YSA9IHRoaXMtPmRhdGEoKTsKLSAgICAgICAgaWYgKC0tSGVhZGVyOjpm
cm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQpCisgICAgICAgIHVuc2lnbmVkIHJlZkNvdW50ID0g
SGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+cmVmQ291bnQgLSAxOworICAgICAgICBpZiAocmVm
Q291bnQpIHsKKyAgICAgICAgICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPnJlZkNvdW50
ID0gcmVmQ291bnQ7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KICAgICAgICAgVmVj
dG9yVHlwZU9wZXJhdGlvbnM8VD46OmRlc3RydWN0KGJlZ2luKCksIGVuZCgpKTsKICAgICAgICAg
UmVmQ291bnRlZEFycmF5TWFsbG9jOjpmcmVlKEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSkpOwog
ICAgIH0KQEAgLTI0OCw2ICsyODUsMTUgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKICAgICBi
b29sIG9wZXJhdG9yPT0oY29uc3QgUmVmQ291bnRlZEFycmF5JiBvdGhlcikgY29uc3QgeyByZXR1
cm4gdGhpcy0+b3BlcmF0b3I9PTxQdHJUcmFpdHM+KG90aGVyKTsgfQogICAgIAogcHJpdmF0ZToK
KyAgICBzdGF0aWMgVCogYWxsb2NhdGVVbmluaXRpYWxpemVkRGF0YSh1bnNpZ25lZCBsZW5ndGgp
CisgICAgeworICAgICAgICBUKiBkYXRhID0gKHN0YXRpY19jYXN0PEhlYWRlcio+KFJlZkNvdW50
ZWRBcnJheU1hbGxvYzo6bWFsbG9jKEhlYWRlcjo6c2l6ZSgpICsgc2l6ZW9mKFQpICogbGVuZ3Ro
KSkpLT5wYXlsb2FkKCk7CisgICAgICAgIEhlYWRlcjo6ZnJvbVBheWxvYWQoZGF0YSktPnJlZkNv
dW50ID0gMTsKKyAgICAgICAgSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID0gbGVu
Z3RoOworICAgICAgICBBU1NFUlQoSGVhZGVyOjpmcm9tUGF5bG9hZChkYXRhKS0+bGVuZ3RoID09
IGxlbmd0aCk7CisgICAgICAgIHJldHVybiBkYXRhOworICAgIH0KKwogICAgIHRlbXBsYXRlPHR5
cGVuYW1lIE90aGVyVHJhaXRzID0gUHRyVHJhaXRzPgogICAgIFJlZkNvdW50ZWRBcnJheSYgYXNz
aWduKGNvbnN0IFJlZkNvdW50ZWRBcnJheTxULCBPdGhlclRyYWl0cz4mIG90aGVyKQogICAgIHsK
QEAgLTI1OSw4ICszMDUsMTEgQEAgY2xhc3MgUmVmQ291bnRlZEFycmF5IHsKIAogICAgICAgICBp
ZiAoIW9sZERhdGEpCiAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0gICAgICAgIGlmICgtLUhl
YWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0YSktPnJlZkNvdW50KQorICAgICAgICB1bnNpZ25lZCBy
ZWZDb3VudCA9IEhlYWRlcjo6ZnJvbVBheWxvYWQob2xkRGF0YSktPnJlZkNvdW50IC0gMTsKKyAg
ICAgICAgaWYgKHJlZkNvdW50KSB7CisgICAgICAgICAgICBIZWFkZXI6OmZyb21QYXlsb2FkKG9s
ZERhdGEpLT5yZWZDb3VudCA9IHJlZkNvdW50OwogICAgICAgICAgICAgcmV0dXJuICp0aGlzOwor
ICAgICAgICB9CiAgICAgICAgIFZlY3RvclR5cGVPcGVyYXRpb25zPFQ+OjpkZXN0cnVjdChvbGRE
YXRhLCBvbGREYXRhICsgSGVhZGVyOjpmcm9tUGF5bG9hZChvbGREYXRhKS0+bGVuZ3RoKTsKIAog
ICAgICAgICBSZWZDb3VudGVkQXJyYXlNYWxsb2M6OmZyZWUoSGVhZGVyOjpmcm9tUGF5bG9hZChv
bGREYXRhKSk7CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cK
aW5kZXggY2E4MTI2OTgzYWNkYTM5MWYyMDhlZmZjNmViNTJkMDBiMjUxOGE4Mi4uZWFmYzQxZGQw
YTQxNmNkMzgzNDIwZTJmM2NjMjY4OTFkMjljOWI2NCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdl
TG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIxLTA0LTEzICBZ
dXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW1dURl0gQWRkIFZl
Y3RvciYmIG1vdmUgY29uc3RydWN0b3IgLyBhc3NpZ25tZW50IHRvIEZpeGVkVmVjdG9yIGFuZCBS
ZWZDb3VudGVkQXJyYXkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIyNDQ3NQorCisgICAgICAgIFJldmlld2VkIGJ5IFJ5b3N1a2UgTml3YS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV1RGL0ZpeGVkVmVjdG9yLmNwcDoKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorCiAyMDIxLTA0LTEyICBBYWthc2ggSmFpbiAgPGFha2Fz
aF9qYWluQGFwcGxlLmNvbT4KIAogICAgICAgICBNYWtlIENvbW1pdCBRdWV1ZSByb2J1c3QgYnkg
YWRkaW5nIGZldyBnaXQgY29tbWFuZHMgdG8gY2xlYW4gdXAgcmVwb3NpdG9yeQpkaWZmIC0tZ2l0
IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwIGIvVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XVEYvRml4ZWRWZWN0b3IuY3BwCmluZGV4IGRmZDlmMDc1OWIx
MTZjMjI5YzkxM2E5NmEwNDNkZTFkNWY4MDIyYjYuLjE2MTUzZGFjOTcyNWQwYjU4ZGJmZmNjYjQ2
ODI2ODc5NDc4MDE1NWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV1RG
L0ZpeGVkVmVjdG9yLmNwcAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dURi9GaXhl
ZFZlY3Rvci5jcHAKQEAgLTE0Niw2ICsxNDYsMzEgQEAgVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1v
dmVBc3NpZ24pCiAgICAgICAgIEVYUEVDVF9FUSh2ZWMyW2ldLCBpKTsKIH0KIAorVEVTVChXVEZf
Rml4ZWRWZWN0b3IsIE1vdmVWZWN0b3IpCit7CisgICAgYXV0byB2ZWMxID0gVmVjdG9yPE1vdmVP
bmx5Pjo6ZnJvbShNb3ZlT25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVPbmx5KDIpLCBNb3ZlT25s
eSgzKSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCA0VSk7CisgICAgRml4ZWRWZWN0b3I8
TW92ZU9ubHk+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7CisgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgp
LCAwVSk7CisgICAgRVhQRUNUX0VRKHZlYzIuc2l6ZSgpLCA0VSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgdmVjMi5zaXplKCk7ICsraW5kZXgpCisgICAgICAgIEVYUEVD
VF9FUSh2ZWMyW2luZGV4XS52YWx1ZSgpLCBpbmRleCk7Cit9CisKK1RFU1QoV1RGX0ZpeGVkVmVj
dG9yLCBNb3ZlQXNzaWduVmVjdG9yKQoreworICAgIEZpeGVkVmVjdG9yPE1vdmVPbmx5PiB2ZWMy
OworICAgIHsKKyAgICAgICAgYXV0byB2ZWMxID0gVmVjdG9yPE1vdmVPbmx5Pjo6ZnJvbShNb3Zl
T25seSgwKSwgTW92ZU9ubHkoMSksIE1vdmVPbmx5KDIpLCBNb3ZlT25seSgzKSk7CisgICAgICAg
IEVYUEVDVF9FUSh2ZWMxLnNpemUoKSwgNFUpOworICAgICAgICB2ZWMyID0gV1RGTW92ZSh2ZWMx
KTsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzEuc2l6ZSgpLCAwVSk7CisgICAgfQorICAgIEVYUEVD
VF9FUSh2ZWMyLnNpemUoKSwgNFUpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IHZlYzIuc2l6ZSgpOyArK2luZGV4KQorICAgICAgICBFWFBFQ1RfRVEodmVjMltpbmRleF0u
dmFsdWUoKSwgaW5kZXgpOworfQorCiBURVNUKFdURl9GaXhlZFZlY3RvciwgU3dhcCkKIHsKICAg
ICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKQEAgLTI2Miw0ICsyODcsNDIgQEAgVEVT
VChXVEZfRml4ZWRWZWN0b3IsIERlc3RydWN0b3JBZnRlck1vdmUpCiAgICAgICAgIEVYUEVDVF9U
UlVFKGZsYWdzW2ldKTsKIH0KIAorVEVTVChXVEZfRml4ZWRWZWN0b3IsIE1vdmVLZWVwc0RhdGEp
Cit7CisgICAgeworICAgICAgICBGaXhlZFZlY3Rvcjx1bnNpZ25lZD4gdmVjMSgzKTsKKyAgICAg
ICAgYXV0byogZGF0YTEgPSB2ZWMxLmRhdGEoKTsKKyAgICAgICAgRml4ZWRWZWN0b3I8dW5zaWdu
ZWQ+IHZlYzIoV1RGTW92ZSh2ZWMxKSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyLmRhdGEoKSwg
ZGF0YTEpOworICAgIH0KKyAgICB7CisgICAgICAgIEZpeGVkVmVjdG9yPHVuc2lnbmVkPiB2ZWMx
KDMpOworICAgICAgICBhdXRvKiBkYXRhMSA9IHZlYzEuZGF0YSgpOworICAgICAgICBGaXhlZFZl
Y3Rvcjx1bnNpZ25lZD4gdmVjMjsKKyAgICAgICAgdmVjMiA9IFdURk1vdmUodmVjMSk7CisgICAg
ICAgIEVYUEVDVF9FUSh2ZWMyLmRhdGEoKSwgZGF0YTEpOworICAgIH0KK30KKworVEVTVChXVEZf
Rml4ZWRWZWN0b3IsIE1vdmVLZWVwc0RhdGFOZXN0ZWQpCit7CisgICAgeworICAgICAgICBWZWN0
b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMxOworICAgICAgICB2ZWMxLmFwcGVuZChGaXhl
ZFZlY3Rvcjx1bnNpZ25lZD4oMykpOworICAgICAgICBhdXRvKiBkYXRhMSA9IHZlYzFbMF0uZGF0
YSgpOworICAgICAgICBGaXhlZFZlY3RvcjxGaXhlZFZlY3Rvcjx1bnNpZ25lZD4+IHZlYzIoV1RG
TW92ZSh2ZWMxKSk7CisgICAgICAgIEVYUEVDVF9FUSh2ZWMyLnNpemUoKSwgMVUpOworICAgICAg
ICBFWFBFQ1RfRVEodmVjMlswXS5kYXRhKCksIGRhdGExKTsKKyAgICB9CisgICAgeworICAgICAg
ICBWZWN0b3I8Rml4ZWRWZWN0b3I8dW5zaWduZWQ+PiB2ZWMxOworICAgICAgICB2ZWMxLmFwcGVu
ZChGaXhlZFZlY3Rvcjx1bnNpZ25lZD4oMykpOworICAgICAgICBhdXRvKiBkYXRhMSA9IHZlYzFb
MF0uZGF0YSgpOworICAgICAgICBGaXhlZFZlY3RvcjxGaXhlZFZlY3Rvcjx1bnNpZ25lZD4+IHZl
YzI7CisgICAgICAgIHZlYzIgPSBXVEZNb3ZlKHZlYzEpOworICAgICAgICBFWFBFQ1RfRVEodmVj
Mi5zaXplKCksIDFVKTsKKyAgICAgICAgRVhQRUNUX0VRKHZlYzJbMF0uZGF0YSgpLCBkYXRhMSk7
CisgICAgfQorfQorCiB9IC8vIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>