<?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>203990</bug_id>
          
          <creation_ts>2019-11-07 22:14:24 -0800</creation_ts>
          <short_desc>MessageEvent should tell its memory cost to GC</short_desc>
          <delta_ts>2020-06-04 15:36:19 -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>Safari Technology Preview</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.14</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=194268</see_also>
          <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="Konstantin Kaefer">mail</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>achristensen</cc>
    
    <cc>alecflett</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>jsbell</cc>
    
    <cc>kangil.han</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>mark.lam</cc>
    
    <cc>rniwa</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1588574</commentid>
    <comment_count>0</comment_count>
      <attachid>383109</attachid>
    <who name="Konstantin Kaefer">mail</who>
    <bug_when>2019-11-07 22:14:24 -0800</bug_when>
    <thetext>Created attachment 383109
Memory leak with web workers

Safari leaks memory when sending objects with `postMessage`. It happens when the message isn&apos;t accessed in any way on the receiver&apos;s side. As soon as the message object is referenced, even without modifying or actually reading its contents, the memory leak goes away. This applies to both webworkers and MessageChannel.

In the attached reproduction HTML pages, memory use grows to several gigabytes in the span of a few seconds. Uncommenting the `message.data;` statement removes the memory leak.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588575</commentid>
    <comment_count>1</comment_count>
      <attachid>383110</attachid>
    <who name="Konstantin Kaefer">mail</who>
    <bug_when>2019-11-07 22:15:00 -0800</bug_when>
    <thetext>Created attachment 383110
Memory leak with MessageChannel</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1588578</commentid>
    <comment_count>2</comment_count>
    <who name="Konstantin Kaefer">mail</who>
    <bug_when>2019-11-07 22:40:18 -0800</bug_when>
    <thetext>A similar bug was reported in https://bugs.webkit.org/show_bug.cgi?id=194268.

The current bug occurs with or without buffer transfer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1589109</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-11-10 13:08:25 -0800</bug_when>
    <thetext>&lt;rdar://problem/57059365&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604596</commentid>
    <comment_count>4</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-01-09 06:56:56 -0800</bug_when>
    <thetext>Testing the MessageChannel repro page, page consumes up to 8GB of memory, then GC kicks in and it continues over and over. This seems fine, not sure whether we could try to optimise things here.

Similarly, the web workers page is not crashing, although it eats up to 30GB of memory until GC happens and memory is down to a few MBs and does not increase anymore.
Not exactly sure why this behaviour happens, there might be things we could improve.
This does not seem critical though.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1604598</commentid>
    <comment_count>5</comment_count>
    <who name="Konstantin Kaefer">mail</who>
    <bug_when>2020-01-09 07:07:16 -0800</bug_when>
    <thetext>Thanks for looking into this. Using 8 GB of memory might work on a desktop machine, but it generally doesn&apos;t work well on iOS devices, in particular because they don&apos;t have swap space. While I generally don&apos;t observe page crashes on desktop Safari, I have seen a few on iOS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658967</commentid>
    <comment_count>6</comment_count>
      <attachid>400990</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-03 20:59:26 -0700</bug_when>
    <thetext>Created attachment 400990
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658969</commentid>
    <comment_count>7</comment_count>
      <attachid>400990</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 21:18:58 -0700</bug_when>
    <thetext>Comment on attachment 400990
Patch

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

LGTM but can you rebase the bindings results?  It&apos;s a bit difficult to see the changes to the emitted finishCreation()s.  It&apos;d be easier to audit it from the bindings test results.  Thanks.

&gt; Source/WebCore/ChangeLog:3
&gt; +        Safari leaks memory of objects send through postMessage

/send/sent/?

&gt; Source/WebCore/ChangeLog:11
&gt; +           it does not tell this memory pressure to GC. This patch adds ReportExtraMemoryCost to MessageEvent.idl and memoryCost

I suggest /tell this/communicate/.

&gt; Source/WebCore/ChangeLog:17
&gt; +           But it can be also created from toJSNewlyCreated for Event through EventFactory. If the latter path is taken, we didn&apos;t properly

/also created/also be created/
/didn&apos;t properly/won&apos;t properly/

&gt; Source/WebCore/ChangeLog:19
&gt; +           IDL code should follow to this convention.

/follow to this/follow this/.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658970</commentid>
    <comment_count>8</comment_count>
      <attachid>400990</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-03 21:22:37 -0700</bug_when>
    <thetext>Comment on attachment 400990
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:11
&gt;&gt; +           it does not tell this memory pressure to GC. This patch adds ReportExtraMemoryCost to MessageEvent.idl and memoryCost
&gt; 
&gt; I suggest /tell this/communicate/.

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:17
&gt;&gt; +           But it can be also created from toJSNewlyCreated for Event through EventFactory. If the latter path is taken, we didn&apos;t properly
&gt; 
&gt; /also created/also be created/
&gt; /didn&apos;t properly/won&apos;t properly/

Fixed.

&gt;&gt; Source/WebCore/ChangeLog:19
&gt;&gt; +           IDL code should follow to this convention.
&gt; 
&gt; /follow to this/follow this/.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658971</commentid>
    <comment_count>9</comment_count>
      <attachid>400992</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-03 21:26:06 -0700</bug_when>
    <thetext>Created attachment 400992
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1658982</commentid>
    <comment_count>10</comment_count>
      <attachid>400992</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-03 22:00:27 -0700</bug_when>
    <thetext>Comment on attachment 400992
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659010</commentid>
    <comment_count>11</comment_count>
    <who name="Konstantin Kaefer">mail</who>
    <bug_when>2020-06-04 00:51:25 -0700</bug_when>
    <thetext>It looks like this patch also addresses https://bugs.webkit.org/show_bug.cgi?id=204515 and fixes the exact problem described there.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659205</commentid>
    <comment_count>12</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 11:28:03 -0700</bug_when>
    <thetext>(In reply to Konstantin Kaefer from comment #11)
&gt; It looks like this patch also addresses
&gt; https://bugs.webkit.org/show_bug.cgi?id=204515 and fixes the exact problem
&gt; described there.

Right! Nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659240</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 12:12:40 -0700</bug_when>
    <thetext>*** Bug 204515 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659301</commentid>
    <comment_count>14</comment_count>
      <attachid>400992</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-06-04 13:42:50 -0700</bug_when>
    <thetext>Comment on attachment 400992
Patch

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

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3640
&gt; +    m_memoryCost = computeMemoryCost();

Couldn&apos;t this go in the initializers instead of the body of the constructor?
Also, wouldn&apos;t it be better to compute this lazily, in case it is never requested?

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3647
&gt; +    m_memoryCost = computeMemoryCost();

ditto

&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3679
&gt; +    size_t cost = m_data.size();

Should we add sizeof(*this)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659323</commentid>
    <comment_count>15</comment_count>
      <attachid>400992</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-06-04 14:12:01 -0700</bug_when>
    <thetext>Comment on attachment 400992
Patch

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

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3640
&gt;&gt; +    m_memoryCost = computeMemoryCost();
&gt; 
&gt; Couldn&apos;t this go in the initializers instead of the body of the constructor?
&gt; Also, wouldn&apos;t it be better to compute this lazily, in case it is never requested?

Lazy calculation does not work because this memoryCost function can be called concurrently from GC concurrent marking thread, and SerializedScriptValue&apos;s fields can be sometimes nulled after the creation.
If we call this function lazily, this can cause GC crash.

I think the current form is better since it is consistent to the other constructors. For example, in `SerializedScriptValue::SerializedScriptValue(Vector&lt;uint8_t&gt;&amp;&amp; buffer, const Vector ...)` constructor, we cannot call this function as a part of initializers since the body is calculating fields that computeMemoryCost relies on.
Since computeMemoryCost() depends on the other fields of SerializedScriptValue, putting this in body can prevent a bug like this.

SerializedScriptValue::SerializedScriptValue(Vector&lt;uint8_t&gt;&amp;&amp; buffer, std::unique_ptr&lt;ArrayBufferContentsArray&gt; arrayBufferContentsArray)
    : m_data(WTFMove(buffer))
    , m_arrayBufferContentsArray(WTFMove(arrayBufferContentsArray))
    , m_memoryCost(computeMemoryCost())
{
}

And if some change reorders fields,

SerializedScriptValue::SerializedScriptValue(Vector&lt;uint8_t&gt;&amp;&amp; buffer, std::unique_ptr&lt;ArrayBufferContentsArray&gt; arrayBufferContentsArray)
    : m_data(WTFMove(buffer))
    , m_memoryCost(computeMemoryCost())
    , m_arrayBufferContentsArray(WTFMove(arrayBufferContentsArray))
{
}

this leads to a bug.

&gt;&gt; Source/WebCore/bindings/js/SerializedScriptValue.cpp:3679
&gt;&gt; +    size_t cost = m_data.size();
&gt; 
&gt; Should we add sizeof(*this)?

It does not need to take it. For example, StringImpl::costDuringGC is not adding sizeof(StringImpl) to the result. 
memoryCost function does not need to be precise. The goal of this function is getting rough estimated size and reporting it to GC as a memory-pressure, and the critical part of this function is that we should report super-large-sized cost.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1659357</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-04 15:36:17 -0700</bug_when>
    <thetext>Committed r262581: &lt;https://trac.webkit.org/changeset/262581&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 400992.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>383109</attachid>
            <date>2019-11-07 22:14:24 -0800</date>
            <delta_ts>2019-11-07 22:14:24 -0800</delta_ts>
            <desc>Memory leak with web workers</desc>
            <filename>worker-memory-leak.html</filename>
            <type>text/html</type>
            <size>724</size>
            <attacher name="Konstantin Kaefer">mail</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9J3V0Zi04JyAv
PgogICAgPHRpdGxlPldvcmtlci9BcnJheUJ1ZmZlciBtZW1vcnkgbGVhazwvdGl0bGU+CjwvaGVh
ZD4KPGJvZHk+Cgo8c2NyaXB0PgoKLy8gRnVuY3Rpb24gd2lsbCBiZSBzdHJpbmdpZmllZCBhbmQg
dXNlZCBhcyBXb3JrZXIgc291cmNlLgpjb25zdCBvbm1lc3NhZ2UgPSAoKSA9PiB7CiAgICBjb25z
dCBidWZmZXIgPSBuZXcgQXJyYXlCdWZmZXIoMTAyNCAqIDEwMjQpOwogICAgc2VsZi5wb3N0TWVz
c2FnZSh7IGRhdGE6IFtidWZmZXJdIH0sIFtidWZmZXJdKTsKfTsKCmNvbnN0IGJsb2IgPSBuZXcg
QmxvYihbYG9ubWVzc2FnZSA9ICR7b25tZXNzYWdlfTtgXSwgeyB0eXBlOiAnYXBwbGljYXRpb24v
amF2YXNjcmlwdCcgfSk7Cgpjb25zdCB3b3JrZXIgPSBuZXcgV29ya2VyKFVSTC5jcmVhdGVPYmpl
Y3RVUkwoYmxvYikpOwoKd29ya2VyLm9ubWVzc2FnZSA9IG1lc3NhZ2UgPT4gewogICAgLy8gVW5j
b21tZW50IHRoaXMgbGluZSB0byBhdm9pZCB0aGUgbWVtb3J5IGxlYWsuCiAgICAvLyBtZXNzYWdl
LmRhdGE7CgogICAgLy8gVHJpZ2dlciBhbm90aGVyIHJvdW5kdHJpcC4KICAgIHdvcmtlci5wb3N0
TWVzc2FnZSgic2VuZCIpOwp9OwoKLy8gU3RhcnQgbWVzc2FnaW5nLgp3b3JrZXIucG9zdE1lc3Nh
Z2UoInNlbmQiKTsKCjwvc2NyaXB0PgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>383110</attachid>
            <date>2019-11-07 22:15:00 -0800</date>
            <delta_ts>2019-11-07 22:15:00 -0800</delta_ts>
            <desc>Memory leak with MessageChannel</desc>
            <filename>messagechannel-memory-leak.html</filename>
            <type>text/html</type>
            <size>603</size>
            <attacher name="Konstantin Kaefer">mail</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9J3V0Zi04JyAv
PgogICAgPHRpdGxlPk1lc3NhZ2VDaGFubmVsL0FycmF5QnVmZmVyIG1lbW9yeSBsZWFrPC90aXRs
ZT4KPC9oZWFkPgo8Ym9keT4KCjxzY3JpcHQ+Cgpjb25zdCBjaGFubmVsID0gbmV3IE1lc3NhZ2VD
aGFubmVsKCk7CgpjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9ICgpID0+IHsKICAgIGNvbnN0IGJ1
ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcigxMDI0ICogMTAyNCk7CiAgICBjaGFubmVsLnBvcnQxLnBv
c3RNZXNzYWdlKHsgZGF0YTogW2J1ZmZlcl0gfSwgW2J1ZmZlcl0pOwp9CgpjaGFubmVsLnBvcnQy
Lm9ubWVzc2FnZSA9IG1lc3NhZ2UgPT4gewogICAgLy8gVW5jb21tZW50IHRoaXMgbGluZSB0byBh
dm9pZCB0aGUgbWVtb3J5IGxlYWsuCiAgICAvLyBtZXNzYWdlLmRhdGE7CgogICAgLy8gVHJpZ2dl
ciBhbm90aGVyIHJvdW5kdHJpcC4KICAgIGNoYW5uZWwucG9ydDIucG9zdE1lc3NhZ2UoInNlbmQi
KTsKfTsKCi8vIFN0YXJ0IG1lc3NhZ2luZy4KY2hhbm5lbC5wb3J0Mi5wb3N0TWVzc2FnZSgic2Vu
ZCIpOwoKPC9zY3JpcHQ+Cgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400990</attachid>
            <date>2020-06-03 20:59:26 -0700</date>
            <delta_ts>2020-06-03 21:26:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203990-20200603205925.patch</filename>
            <type>text/plain</type>
            <size>10207</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA0MDk3ZjBlMTU1NzY1
NjU5YWI0ZDgzMGU3YTc3NWVjZWZjMjUwNy4uZWI1NTZkMTk0YjQ1M2QwMWRmYjBmZDU4MDVlMjIw
ZjhmZmYxODQ0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM3IEBACisyMDIwLTA2LTAzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgU2FmYXJpIGxlYWtzIG1l
bW9yeSBvZiBvYmplY3RzIHNlbmQgdGhyb3VnaCBwb3N0TWVzc2FnZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTkwCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0d28gaXNz
dWVzIHRvIG1ha2UgTWVzc2FnZUV2ZW50J3MgbWVtb3J5Q29zdCB3b3JraW5nLgorCisgICAgICAg
IDEuIE1lc3NhZ2VFdmVudCBkb2VzIG5vdCBoYXZlIG1lbW9yeUNvc3QgZnVuY3Rpb24uIFNvIGV2
ZW4gaWYgQXJyYXlCdWZmZXIgZXRjLiBpcyBoZWxkIGFzIGEgU2VyaWFsaXplZFNjcmlwdFZhbHVl
LAorICAgICAgICAgICBpdCBkb2VzIG5vdCB0ZWxsIHRoaXMgbWVtb3J5IHByZXNzdXJlIHRvIEdD
LiBUaGlzIHBhdGNoIGFkZHMgUmVwb3J0RXh0cmFNZW1vcnlDb3N0IHRvIE1lc3NhZ2VFdmVudC5p
ZGwgYW5kIG1lbW9yeUNvc3QKKyAgICAgICAgICAgZnVuY3Rpb24gdG8gTWVzc2FnZUV2ZW50LiBB
bmQgd2UgaW1wbGVtZW50IFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6bWVtb3J5Q29zdCBmdW5jdGlv
biB0byBvYnRhaW4gcm91Z2ggbWVtb3J5IGNvc3QKKyAgICAgICAgICAgZm9yIFNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZS4KKworICAgICAgICAyLiBJREwgY29kZSBnZW5lcmF0b3IgcHV0cyBgcmVwb3J0
RXh0cmFNZW1vcnlBbGxvY2F0ZWRgIGZ1bmN0aW9uIGNhbGwgaW4gYHRvSlNOZXdseUNyZWF0ZWRg
LiBIb3dldmVyLCBgdG9KU05ld2x5Q3JlYXRlZGAKKyAgICAgICAgICAgaXMgbm90IGFsd2F5cyB1
c2VkIHdoZW4gY3JlYXRpbmcgSlMgd3JhcHBlci4gRm9yIGV4YW1wbGUsIEpTTWVzc2FnZUV2ZW50
IGNhbiBiZSBjcmVhdGVkIGZyb20gdG9KU05ld2x5Q3JlYXRlZCBmb3IgTWVzc2FnZUV2ZW50Lgor
ICAgICAgICAgICBCdXQgaXQgY2FuIGJlIGFsc28gY3JlYXRlZCBmcm9tIHRvSlNOZXdseUNyZWF0
ZWQgZm9yIEV2ZW50IHRocm91Z2ggRXZlbnRGYWN0b3J5LiBJZiB0aGUgbGF0dGVyIHBhdGggaXMg
dGFrZW4sIHdlIGRpZG4ndCBwcm9wZXJseQorICAgICAgICAgICByZXBvcnQgbWVtb3J5IGNvc3Qg
ZXZlbiBpZiBJREwgaGFzIFJlcG9ydEV4dHJhTWVtb3J5Q29zdC4gSW4gSlNDLCB3ZSBwdXQgYHJl
cG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkYCBhdCB0aGUgZW5kIG9mIEpTWFhYOjpmaW5pc2hDcmVh
dGlvbi4KKyAgICAgICAgICAgSURMIGNvZGUgc2hvdWxkIGZvbGxvdyB0byB0aGlzIGNvbnZlbnRp
b24uCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRl
TWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmg6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU6Om1lbW9y
eUNvc3QgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtOgorICAgICAgICAoR2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogZG9tL01l
c3NhZ2VFdmVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlRXZlbnQ6Om1lbW9yeUNv
c3QgY29uc3QpOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaDoKKyAgICAgICAgKiBkb20v
TWVzc2FnZUV2ZW50LmlkbDoKKyAgICAgICAgKiBodG1sL09mZnNjcmVlbkNhbnZhcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6RGV0YWNoZWRPZmZzY3JlZW5DYW52YXM6Om1lbW9yeUNvc3QgY29uc3Qp
OgorCiAyMDIwLTA2LTAzICBEYW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAg
ICAgICBJbnNlcnRlZCB0ZXh0IHBsYWNlaG9sZGVyIHNob3VsZCB2ZXJ0aWNhbGx5IGFsaWduIHRv
IHRvcCBhbmQgYmVoYXZlIGxpa2UgYmxvY2stbGV2ZWwgZWxlbWVudCB3aGVuIGl0IGhhcyAwIHdp
ZHRoCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlw
dFZhbHVlLmNwcAppbmRleCAzZWI0YzVkMTA5NzcwZDFiZjU4NmNiODA5MzBjNDU0MDQ2YzBhMWZl
Li5lNjcwYzk4MzZlYzhlZjgzN2E5MDgwNDZjNWU5ZjI5Nzc2ODc3OWE2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAKQEAg
LTM2MzcsMTIgKzM2MzcsMTQgQEAgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjp+U2VyaWFsaXplZFNj
cmlwdFZhbHVlKCkgPSBkZWZhdWx0OwogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVk
U2NyaXB0VmFsdWUoVmVjdG9yPHVpbnQ4X3Q+JiYgYnVmZmVyKQogICAgIDogbV9kYXRhKFdURk1v
dmUoYnVmZmVyKSkKIHsKKyAgICBtX21lbW9yeUNvc3QgPSBjb21wdXRlTWVtb3J5Q29zdCgpOwog
fQogCiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8
dWludDhfdD4mJiBidWZmZXIsIHN0ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJy
YXk+IGFycmF5QnVmZmVyQ29udGVudHNBcnJheSkKICAgICA6IG1fZGF0YShXVEZNb3ZlKGJ1ZmZl
cikpCiAgICAgLCBtX2FycmF5QnVmZmVyQ29udGVudHNBcnJheShXVEZNb3ZlKGFycmF5QnVmZmVy
Q29udGVudHNBcnJheSkpCiB7CisgICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNvc3Qo
KTsKIH0KIAogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWUoVmVj
dG9yPHVpbnQ4X3Q+JiYgYnVmZmVyLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgYmxvYlVSTHMsIHN0
ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IGFycmF5QnVmZmVyQ29udGVu
dHNBcnJheSwgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gc2hhcmVk
QnVmZmVyQ29udGVudHNBcnJheSwgVmVjdG9yPHN0ZDo6cGFpcjxzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+LCBib29sPj4mJiBpbWFnZUJ1ZmZlcnMKQEAgLTM2NjksNiArMzY3MSw0MyBAQCBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhf
dD4mJiBidWZmZXIsIGNvbnN0IFZlYwogICAgIG1fYmxvYlVSTHMucmVzZXJ2ZUluaXRpYWxDYXBh
Y2l0eShibG9iVVJMcy5zaXplKCkpOwogICAgIGZvciAoYXV0byYgdXJsIDogYmxvYlVSTHMpCiAg
ICAgICAgIG1fYmxvYlVSTHMudW5jaGVja2VkQXBwZW5kKHVybC5pc29sYXRlZENvcHkoKSk7Cisg
ICAgbV9tZW1vcnlDb3N0ID0gY29tcHV0ZU1lbW9yeUNvc3QoKTsKK30KKworc2l6ZV90IFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIHNpemVf
dCBjb3N0ID0gbV9kYXRhLnNpemUoKTsKKworICAgIGlmIChtX2FycmF5QnVmZmVyQ29udGVudHNB
cnJheSkgeworICAgICAgICBmb3IgKGF1dG8mIGNvbnRlbnQgOiAqbV9hcnJheUJ1ZmZlckNvbnRl
bnRzQXJyYXkpCisgICAgICAgICAgICBjb3N0ICs9IGNvbnRlbnQuc2l6ZUluQnl0ZXMoKTsKKyAg
ICB9CisKKyAgICBpZiAobV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5KSB7CisgICAgICAgIGZv
ciAoYXV0byYgY29udGVudCA6ICptX3NoYXJlZEJ1ZmZlckNvbnRlbnRzQXJyYXkpCisgICAgICAg
ICAgICBjb3N0ICs9IGNvbnRlbnQuc2l6ZUluQnl0ZXMoKTsKKyAgICB9CisKKyAgICBmb3IgKGF1
dG8mIHBhaXIgOiBtX2ltYWdlQnVmZmVycykgeworICAgICAgICBpZiAocGFpci5maXJzdCkKKyAg
ICAgICAgICAgIGNvc3QgKz0gcGFpci5maXJzdC0+bWVtb3J5Q29zdCgpOworICAgIH0KKworI2lm
IEVOQUJMRShPRkZTQ1JFRU5fQ0FOVkFTKQorICAgIGZvciAoYXV0byYgY2FudmFzIDogbV9kZXRh
Y2hlZE9mZnNjcmVlbkNhbnZhc2VzKSB7CisgICAgICAgIGlmIChjYW52YXMpCisgICAgICAgICAg
ICBjb3N0ICs9IGNhbnZhcy0+bWVtb3J5Q29zdCgpOworICAgIH0KKyNlbmRpZgorCisjaWYgRU5B
QkxFKFdFQkFTU0VNQkxZKQorICAgIC8vIFdlIGFyZSBub3Qgc3VwcG9ydGluZyBXZWJBc3NlbWJs
eSBNb2R1bGUgbWVtb3J5IGVzdGltYXRpb24geWV0LgorI2VuZGlmCisKKyAgICBmb3IgKGF1dG8m
IHVybHMgOiBtX2Jsb2JVUkxzKQorICAgICAgICBjb3N0ICs9IHVybHMuc2l6ZUluQnl0ZXMoKTsK
KworICAgIHJldHVybiBjb3N0OwogfQogCiBzdGF0aWMgRXhjZXB0aW9uT3I8c3RkOjp1bmlxdWVf
cHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4+IHRyYW5zZmVyQXJyYXlCdWZmZXJzKFZNJiB2
bSwgY29uc3QgVmVjdG9yPFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPj4mIGFycmF5QnVmZmVycykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRW
YWx1ZS5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVl
LmgKaW5kZXggNzA2ZDE2YzFlY2ExYTNiYWViODg1N2VjMDQ4YWYzOGZmMDI2ZTliZS4uOGRmZTg5
ZGU0NTkxMDc3NzBkZDMxMzE5MmU5NTk4MDIzMDAwMTFhYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmgKQEAgLTExMCw2ICsxMTAs
OCBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPgogICAgIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+
IHZvaWQgZW5jb2RlKEVuY29kZXImKSBjb25zdDsKICAgICB0ZW1wbGF0ZTxjbGFzcyBEZWNvZGVy
PiBzdGF0aWMgUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGVjb2RlKERlY29kZXImKTsK
IAorICAgIHNpemVfdCBtZW1vcnlDb3N0KCkgY29uc3QgeyByZXR1cm4gbV9tZW1vcnlDb3N0OyB9
CisKICAgICBXRUJDT1JFX0VYUE9SVCB+U2VyaWFsaXplZFNjcmlwdFZhbHVlKCk7CiAKIHByaXZh
dGU6CkBAIC0xMjQsNiArMTI2LDggQEAgY2xhc3MgU2VyaWFsaXplZFNjcmlwdFZhbHVlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4KICNlbmRpZgog
ICAgICAgICApOwogCisgICAgc2l6ZV90IGNvbXB1dGVNZW1vcnlDb3N0KCkgY29uc3Q7CisKICAg
ICBWZWN0b3I8dW5zaWduZWQgY2hhcj4gbV9kYXRhOwogICAgIHN0ZDo6dW5pcXVlX3B0cjxBcnJh
eUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5OwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxBcnJheUJ1ZmZlckNvbnRlbnRzQXJyYXk+IG1fc2hhcmVkQnVmZmVyQ29u
dGVudHNBcnJheTsKQEAgLTEzNSw2ICsxMzksNyBAQCBjbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFs
dWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFsaXplZFNjcmlwdFZhbHVlPgog
ICAgIHN0ZDo6dW5pcXVlX3B0cjxXYXNtTW9kdWxlQXJyYXk+IG1fd2FzbU1vZHVsZXNBcnJheTsK
ICNlbmRpZgogICAgIFZlY3RvcjxTdHJpbmc+IG1fYmxvYlVSTHM7CisgICAgc2l6ZV90IG1fbWVt
b3J5Q29zdCB7IDAgfTsKIH07CiAKIHRlbXBsYXRlPGNsYXNzIEVuY29kZXI+CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbSBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCmluZGV4IDk4
MGI5MjlhMTJjMGVmMzY0MTlmODE1YjAwNmNiYjUzNmI3MTRiMDguLmNlNWNiMTU4OGRmZGUxMjRj
ZGE5ZDZlMzhiMTYzNWM5MTk5MWJlM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtCkBAIC00NTAyLDYgKzQ1MDIsNyBAQCBzdWIg
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbgogICAgICAgICB9CiAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiI2VuZGlmXG4iKSBpZiAkY29uZGl0aW9uYWxTdHJpbmc7CiAgICAgfQorICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIHZtLmhlYXAucmVwb3J0RXh0cmFNZW1vcnlBbGxvY2F0ZWQod3Jh
cHBlZCgpLm1lbW9yeUNvc3QoKSk7XG4iKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0dHJpYnV0
ZXMtPntSZXBvcnRFeHRyYU1lbW9yeUNvc3R9OwogICAgIHB1c2goQGltcGxDb250ZW50LCAifVxu
XG4iKTsKIAogICAgIHVubGVzcyAoU2hvdWxkVXNlR2xvYmFsT2JqZWN0UHJvdG90eXBlKCRpbnRl
cmZhY2UpKSB7CkBAIC00OTIxLDkgKzQ5MjIsNiBAQCBFTkQKICAgICAvLyBhdHRyaWJ1dGUgdG8g
JGludGVyZmFjZU5hbWUuCiAgICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19wb2x5bW9ycGhpYzwk
e2ltcGxUeXBlfT46OnZhbHVlLCAiJHtpbXBsVHlwZX0gaXMgcG9seW1vcnBoaWMgYnV0IHRoZSBJ
REwgY2xhaW1zIGl0IGlzIG5vdCIpOwogRU5ECi0gICAgICAgIHB1c2goQGltcGxDb250ZW50LCA8
PEVORCkgaWYgJGludGVyZmFjZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57UmVwb3J0RXh0cmFNZW1v
cnlDb3N0fTsKLSAgICBnbG9iYWxPYmplY3QtPnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFs
bG9jYXRlZChpbXBsLT5tZW1vcnlDb3N0KCkpOwotRU5ECiAKICAgICAgICAgcHVzaChAaW1wbENv
bnRlbnQsICIgICAgcmV0dXJuIGNyZWF0ZVdyYXBwZXI8JHtpbXBsVHlwZX0+KGdsb2JhbE9iamVj
dCwgV1RGTW92ZShpbXBsKSk7XG4iKTsKICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5c
biIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcAppbmRleCAwNWZlY2Y3Y2QyMzFkMmU2
ODNlOThkOTM3NGE4YzQ1Mjk0ZmVkNjEzLi5mNWZmZmI5MDM3YmU5MzQ0MjZlODhjMjZmZWZmODk0
YjY3OGJiOTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmNwcApAQCAtMTI3LDQgKzEy
NywxOSBAQCBFdmVudEludGVyZmFjZSBNZXNzYWdlRXZlbnQ6OmV2ZW50SW50ZXJmYWNlKCkgY29u
c3QKICAgICByZXR1cm4gTWVzc2FnZUV2ZW50SW50ZXJmYWNlVHlwZTsKIH0KIAorc2l6ZV90IE1l
c3NhZ2VFdmVudDo6bWVtb3J5Q29zdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFdURjo6c3dpdGNo
T24obV9kYXRhLCBbXSAoY29uc3QgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYpIHsKKyAgICAgICAg
cmV0dXJuIDA7CisgICAgfSwgW10gKGNvbnN0IFJlZjxTZXJpYWxpemVkU2NyaXB0VmFsdWU+JiBk
YXRhKSB7CisgICAgICAgIHJldHVybiBkYXRhLT5tZW1vcnlDb3N0KCk7CisgICAgfSwgW10gKGNv
bnN0IFN0cmluZyYgc3RyaW5nKSB7CisgICAgICAgIHJldHVybiBzdHJpbmcuc2l6ZUluQnl0ZXMo
KTsKKyAgICB9LCBbXSAoY29uc3QgUmVmPEJsb2I+JiBibG9iKSB7CisgICAgICAgIHJldHVybiBi
bG9iLT5zaXplKCk7CisgICAgfSwgW10gKGNvbnN0IFJlZjxBcnJheUJ1ZmZlcj4mIGJ1ZmZlcikg
eworICAgICAgICByZXR1cm4gYnVmZmVyLT5ieXRlTGVuZ3RoKCk7CisgICAgfSk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaAppbmRleCBmNWUx
YjU5OTQxNzVlMjFhMzQ2OWUyMGE5NDk3ZGQ5NWI2OTE5ZWYwLi42OGQzODMwZjdlYzMzMjllYjc5
M2YyODA5YWY0ZWQ5ZDE2MDczZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZUV2ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCkBAIC03
OSw2ICs3OSw4IEBAIGNsYXNzIE1lc3NhZ2VFdmVudCBmaW5hbCA6IHB1YmxpYyBFdmVudCB7CiAg
ICAgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCYgY2FjaGVkRGF0YSgpIHsgcmV0dXJuIG1fY2FjaGVk
RGF0YTsgfQogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hlZFBvcnRzKCkgeyByZXR1
cm4gbV9jYWNoZWRQb3J0czsgfQogCisgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdDsKKwog
cHJpdmF0ZToKICAgICBNZXNzYWdlRXZlbnQoKTsKICAgICBNZXNzYWdlRXZlbnQoY29uc3QgQXRv
bVN0cmluZyYgdHlwZSwgSW5pdCYmLCBJc1RydXN0ZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmlkbAppbmRleCBiODJhZWE3NTMzMzExMmRlZDY1YzY5ZjU1MzZjZWVhZDhkYmIxZTcwLi5k
ZWU1ZTJmNWE4MzVkOWZlMzY3ODNkZDgzMWE3MmRmZmEzODljODM1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmlkbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
TWVzc2FnZUV2ZW50LmlkbApAQCAtMzYsNiArMzYsNyBAQCB0eXBlZGVmIChXaW5kb3dQcm94eSBv
ciBNZXNzYWdlUG9ydCkgTWVzc2FnZUV2ZW50U291cmNlOwogICAgIENvbnN0cnVjdG9yKERPTVN0
cmluZyB0eXBlLCBvcHRpb25hbCBNZXNzYWdlRXZlbnRJbml0IGV2ZW50SW5pdERpY3QpLAogICAg
IEV4cG9zZWQ9KFdpbmRvdyxXb3JrZXIpLAogICAgIEpTQ3VzdG9tTWFya0Z1bmN0aW9uLAorICAg
IFJlcG9ydEV4dHJhTWVtb3J5Q29zdCwKIF0gaW50ZXJmYWNlIE1lc3NhZ2VFdmVudCA6IEV2ZW50
IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUgVVNWU3RyaW5nIG9yaWdpbjsKICAgICByZWFkb25s
eSBhdHRyaWJ1dGUgRE9NU3RyaW5nIGxhc3RFdmVudElkOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2Ny
ZWVuQ2FudmFzLmgKaW5kZXggM2U1ZTMwYTU3NmUzMWE5MzJhNmYxNDZhOTdlYmYwOGRlOWEyNWYz
OS4uN2MzNjgzMGVkNjVhN2I0MjhkMmEyZWI4ZTRlYzU2YzAxYjc5ODE4ZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCkBAIC02Myw2ICs2MywxMyBAQCBjbGFzcyBEZXRhY2hl
ZE9mZnNjcmVlbkNhbnZhcyB7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVmZmVyPiB0YWtl
SW1hZ2VCdWZmZXIoKTsKICAgICBjb25zdCBJbnRTaXplJiBzaXplKCkgY29uc3QgeyByZXR1cm4g
bV9zaXplOyB9CiAgICAgYm9vbCBvcmlnaW5DbGVhbigpIGNvbnN0IHsgcmV0dXJuIG1fb3JpZ2lu
Q2xlYW47IH0KKyAgICBzaXplX3QgbWVtb3J5Q29zdCgpIGNvbnN0CisgICAgeworICAgICAgICBh
dXRvKiBidWZmZXIgPSBtX2J1ZmZlci5nZXQoKTsKKyAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAg
ICAgICAgIHJldHVybiBidWZmZXItPm1lbW9yeUNvc3QoKTsKKyAgICAgICAgcmV0dXJuIDA7Cisg
ICAgfQogCiBwcml2YXRlOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4gbV9idWZm
ZXI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>400992</attachid>
            <date>2020-06-03 21:26:06 -0700</date>
            <delta_ts>2020-06-04 15:36:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203990-20200603212605.patch</filename>
            <type>text/plain</type>
            <size>11534</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYyNTI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjA0MDk3ZjBlMTU1NzY1
NjU5YWI0ZDgzMGU3YTc3NWVjZWZjMjUwNy4uYWY4YmRkY2FiYjNhYzYxMzNjZDVhODFiNGJkNTY5
MDU3MjBjZWZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQwIEBACisyMDIwLTA2LTAzICBZdXN1
a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgTWVzc2FnZUV2ZW50IHNo
b3VsZCB0ZWxsIGl0cyBtZW1vcnkgY29zdCB0byBHQworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzOTkwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyB0d28gaXNzdWVzIHRvIG1h
a2UgTWVzc2FnZUV2ZW50J3MgbWVtb3J5Q29zdCB3b3JraW5nLgorCisgICAgICAgIDEuIE1lc3Nh
Z2VFdmVudCBkb2VzIG5vdCBoYXZlIG1lbW9yeUNvc3QgZnVuY3Rpb24uIFNvIGV2ZW4gaWYgQXJy
YXlCdWZmZXIgZXRjLiBpcyBoZWxkIGFzIGEgU2VyaWFsaXplZFNjcmlwdFZhbHVlLAorICAgICAg
ICAgICBpdCBkb2VzIG5vdCBjb21tdW5pY2F0ZSBtZW1vcnkgcHJlc3N1cmUgdG8gR0MuIFRoaXMg
cGF0Y2ggYWRkcyBSZXBvcnRFeHRyYU1lbW9yeUNvc3QgdG8gTWVzc2FnZUV2ZW50LmlkbCBhbmQg
bWVtb3J5Q29zdAorICAgICAgICAgICBmdW5jdGlvbiB0byBNZXNzYWdlRXZlbnQuIEFuZCB3ZSBp
bXBsZW1lbnQgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjptZW1vcnlDb3N0IGZ1bmN0aW9uIHRvIG9i
dGFpbiByb3VnaCBtZW1vcnkgY29zdAorICAgICAgICAgICBmb3IgU2VyaWFsaXplZFNjcmlwdFZh
bHVlLgorCisgICAgICAgIDIuIElETCBjb2RlIGdlbmVyYXRvciBwdXRzIGByZXBvcnRFeHRyYU1l
bW9yeUFsbG9jYXRlZGAgZnVuY3Rpb24gY2FsbCBpbiBgdG9KU05ld2x5Q3JlYXRlZGAuIEhvd2V2
ZXIsIGB0b0pTTmV3bHlDcmVhdGVkYAorICAgICAgICAgICBpcyBub3QgYWx3YXlzIHVzZWQgd2hl
biBjcmVhdGluZyBKUyB3cmFwcGVyLiBGb3IgZXhhbXBsZSwgSlNNZXNzYWdlRXZlbnQgY2FuIGJl
IGNyZWF0ZWQgZnJvbSB0b0pTTmV3bHlDcmVhdGVkIGZvciBNZXNzYWdlRXZlbnQuCisgICAgICAg
ICAgIEJ1dCBpdCBjYW4gYmUgYWxzbyBiZSBjcmVhdGVkIGZyb20gdG9KU05ld2x5Q3JlYXRlZCBm
b3IgRXZlbnQgdGhyb3VnaCBFdmVudEZhY3RvcnkuIElmIHRoZSBsYXR0ZXIgcGF0aCBpcyB0YWtl
biwgd2Ugd29uJ3QgcHJvcGVybHkKKyAgICAgICAgICAgcmVwb3J0IG1lbW9yeSBjb3N0IGV2ZW4g
aWYgSURMIGhhcyBSZXBvcnRFeHRyYU1lbW9yeUNvc3QuIEluIEpTQywgd2UgcHV0IGByZXBvcnRF
eHRyYU1lbW9yeUFsbG9jYXRlZGAgYXQgdGhlIGVuZCBvZiBKU1hYWDo6ZmluaXNoQ3JlYXRpb24u
CisgICAgICAgICAgIElETCBjb2RlIHNob3VsZCBmb2xsb3cgdGhpcyBjb252ZW50aW9uLgorCisg
ICAgICAgICogYmluZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y29tcHV0ZU1lbW9yeUNv
c3QgY29uc3QpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5o
OgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjptZW1vcnlDb3N0IGNv
bnN0KToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JKUy5wbToKKyAg
ICAgICAgKEdlbmVyYXRlSW1wbGVtZW50YXRpb24pOgorICAgICAgICAqIGJpbmRpbmdzL3Njcmlw
dHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbnRl
cmZhY2VOYW1lOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjp0b0pTTmV3bHlD
cmVhdGVkKToKKyAgICAgICAgKiBkb20vTWVzc2FnZUV2ZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VFdmVudDo6bWVtb3J5Q29zdCBjb25zdCk6CisgICAgICAgICogZG9tL01lc3Nh
Z2VFdmVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlRXZlbnQuaWRsOgorICAgICAgICAqIGh0
bWwvT2Zmc2NyZWVuQ2FudmFzLmg6CisgICAgICAgIChXZWJDb3JlOjpEZXRhY2hlZE9mZnNjcmVl
bkNhbnZhczo6bWVtb3J5Q29zdCBjb25zdCk6CisKIDIwMjAtMDYtMDMgIERhbmllbCBCYXRlcyAg
PGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIEluc2VydGVkIHRleHQgcGxhY2Vob2xkZXIg
c2hvdWxkIHZlcnRpY2FsbHkgYWxpZ24gdG8gdG9wIGFuZCBiZWhhdmUgbGlrZSBibG9jay1sZXZl
bCBlbGVtZW50IHdoZW4gaXQgaGFzIDAgd2lkdGgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuY3BwCmluZGV4IDNlYjRjNWQxMDk3NzBk
MWJmNTg2Y2I4MDkzMGM0NTQwNDZjMGExZmUuLmU2NzBjOTgzNmVjOGVmODM3YTkwODA0NmM1ZTlm
Mjk3NzY4Nzc5YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1Nlcmlh
bGl6ZWRTY3JpcHRWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2Vy
aWFsaXplZFNjcmlwdFZhbHVlLmNwcApAQCAtMzYzNywxMiArMzYzNywxNCBAQCBTZXJpYWxpemVk
U2NyaXB0VmFsdWU6On5TZXJpYWxpemVkU2NyaXB0VmFsdWUoKSA9IGRlZmF1bHQ7CiBTZXJpYWxp
emVkU2NyaXB0VmFsdWU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBi
dWZmZXIpCiAgICAgOiBtX2RhdGEoV1RGTW92ZShidWZmZXIpKQogeworICAgIG1fbWVtb3J5Q29z
dCA9IGNvbXB1dGVNZW1vcnlDb3N0KCk7CiB9CiAKIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2Vy
aWFsaXplZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgc3RkOjp1bmlxdWVf
cHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KQog
ICAgIDogbV9kYXRhKFdURk1vdmUoYnVmZmVyKSkKICAgICAsIG1fYXJyYXlCdWZmZXJDb250ZW50
c0FycmF5KFdURk1vdmUoYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSkKIHsKKyAgICBtX21lbW9y
eUNvc3QgPSBjb21wdXRlTWVtb3J5Q29zdCgpOwogfQogCiBTZXJpYWxpemVkU2NyaXB0VmFsdWU6
OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZShWZWN0b3I8dWludDhfdD4mJiBidWZmZXIsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiBibG9iVVJMcywgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4gYXJyYXlCdWZmZXJDb250ZW50c0FycmF5LCBzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlC
dWZmZXJDb250ZW50c0FycmF5PiBzaGFyZWRCdWZmZXJDb250ZW50c0FycmF5LCBWZWN0b3I8c3Rk
OjpwYWlyPHN0ZDo6dW5pcXVlX3B0cjxJbWFnZUJ1ZmZlcj4sIGJvb2w+PiYmIGltYWdlQnVmZmVy
cwpAQCAtMzY2OSw2ICszNjcxLDQzIEBAIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlKFZlY3Rvcjx1aW50OF90PiYmIGJ1ZmZlciwgY29uc3QgVmVjCiAgICAgbV9i
bG9iVVJMcy5yZXNlcnZlSW5pdGlhbENhcGFjaXR5KGJsb2JVUkxzLnNpemUoKSk7CiAgICAgZm9y
IChhdXRvJiB1cmwgOiBibG9iVVJMcykKICAgICAgICAgbV9ibG9iVVJMcy51bmNoZWNrZWRBcHBl
bmQodXJsLmlzb2xhdGVkQ29weSgpKTsKKyAgICBtX21lbW9yeUNvc3QgPSBjb21wdXRlTWVtb3J5
Q29zdCgpOworfQorCitzaXplX3QgU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjb21wdXRlTWVtb3J5
Q29zdCgpIGNvbnN0Cit7CisgICAgc2l6ZV90IGNvc3QgPSBtX2RhdGEuc2l6ZSgpOworCisgICAg
aWYgKG1fYXJyYXlCdWZmZXJDb250ZW50c0FycmF5KSB7CisgICAgICAgIGZvciAoYXV0byYgY29u
dGVudCA6ICptX2FycmF5QnVmZmVyQ29udGVudHNBcnJheSkKKyAgICAgICAgICAgIGNvc3QgKz0g
Y29udGVudC5zaXplSW5CeXRlcygpOworICAgIH0KKworICAgIGlmIChtX3NoYXJlZEJ1ZmZlckNv
bnRlbnRzQXJyYXkpIHsKKyAgICAgICAgZm9yIChhdXRvJiBjb250ZW50IDogKm1fc2hhcmVkQnVm
ZmVyQ29udGVudHNBcnJheSkKKyAgICAgICAgICAgIGNvc3QgKz0gY29udGVudC5zaXplSW5CeXRl
cygpOworICAgIH0KKworICAgIGZvciAoYXV0byYgcGFpciA6IG1faW1hZ2VCdWZmZXJzKSB7Cisg
ICAgICAgIGlmIChwYWlyLmZpcnN0KQorICAgICAgICAgICAgY29zdCArPSBwYWlyLmZpcnN0LT5t
ZW1vcnlDb3N0KCk7CisgICAgfQorCisjaWYgRU5BQkxFKE9GRlNDUkVFTl9DQU5WQVMpCisgICAg
Zm9yIChhdXRvJiBjYW52YXMgOiBtX2RldGFjaGVkT2Zmc2NyZWVuQ2FudmFzZXMpIHsKKyAgICAg
ICAgaWYgKGNhbnZhcykKKyAgICAgICAgICAgIGNvc3QgKz0gY2FudmFzLT5tZW1vcnlDb3N0KCk7
CisgICAgfQorI2VuZGlmCisKKyNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCisgICAgLy8gV2UgYXJl
IG5vdCBzdXBwb3J0aW5nIFdlYkFzc2VtYmx5IE1vZHVsZSBtZW1vcnkgZXN0aW1hdGlvbiB5ZXQu
CisjZW5kaWYKKworICAgIGZvciAoYXV0byYgdXJscyA6IG1fYmxvYlVSTHMpCisgICAgICAgIGNv
c3QgKz0gdXJscy5zaXplSW5CeXRlcygpOworCisgICAgcmV0dXJuIGNvc3Q7CiB9CiAKIHN0YXRp
YyBFeGNlcHRpb25PcjxzdGQ6OnVuaXF1ZV9wdHI8QXJyYXlCdWZmZXJDb250ZW50c0FycmF5Pj4g
dHJhbnNmZXJBcnJheUJ1ZmZlcnMoVk0mIHZtLCBjb25zdCBWZWN0b3I8UmVmUHRyPEpTQzo6QXJy
YXlCdWZmZXI+PiYgYXJyYXlCdWZmZXJzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9TZXJpYWxpemVkU2NyaXB0VmFsdWUuaAppbmRleCA3MDZkMTZjMWVjYTFhM2JhZWI4ODU3
ZWMwNDhhZjM4ZmYwMjZlOWJlLi44ZGZlODlkZTQ1OTEwNzc3MGRkMzEzMTkyZTk1OTgwMjMwMDAx
MWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9TZXJpYWxpemVkU2Ny
aXB0VmFsdWUuaApAQCAtMTEwLDYgKzExMCw4IEBAIGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+CiAg
ICAgdGVtcGxhdGU8Y2xhc3MgRW5jb2Rlcj4gdm9pZCBlbmNvZGUoRW5jb2RlciYpIGNvbnN0Owog
ICAgIHRlbXBsYXRlPGNsYXNzIERlY29kZXI+IHN0YXRpYyBSZWZQdHI8U2VyaWFsaXplZFNjcmlw
dFZhbHVlPiBkZWNvZGUoRGVjb2RlciYpOwogCisgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25z
dCB7IHJldHVybiBtX21lbW9yeUNvc3Q7IH0KKwogICAgIFdFQkNPUkVfRVhQT1JUIH5TZXJpYWxp
emVkU2NyaXB0VmFsdWUoKTsKIAogcHJpdmF0ZToKQEAgLTEyNCw2ICsxMjYsOCBAQCBjbGFzcyBT
ZXJpYWxpemVkU2NyaXB0VmFsdWUgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8U2VyaWFs
aXplZFNjcmlwdFZhbHVlPgogI2VuZGlmCiAgICAgICAgICk7CiAKKyAgICBzaXplX3QgY29tcHV0
ZU1lbW9yeUNvc3QoKSBjb25zdDsKKwogICAgIFZlY3Rvcjx1bnNpZ25lZCBjaGFyPiBtX2RhdGE7
CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVudHNBcnJheT4gbV9hcnJheUJ1
ZmZlckNvbnRlbnRzQXJyYXk7CiAgICAgc3RkOjp1bmlxdWVfcHRyPEFycmF5QnVmZmVyQ29udGVu
dHNBcnJheT4gbV9zaGFyZWRCdWZmZXJDb250ZW50c0FycmF5OwpAQCAtMTM1LDYgKzEzOSw3IEBA
IGNsYXNzIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxTZXJpYWxpemVkU2NyaXB0VmFsdWU+CiAgICAgc3RkOjp1bmlxdWVfcHRyPFdhc21Nb2R1bGVB
cnJheT4gbV93YXNtTW9kdWxlc0FycmF5OwogI2VuZGlmCiAgICAgVmVjdG9yPFN0cmluZz4gbV9i
bG9iVVJMczsKKyAgICBzaXplX3QgbV9tZW1vcnlDb3N0IHsgMCB9OwogfTsKIAogdGVtcGxhdGU8
Y2xhc3MgRW5jb2Rlcj4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvckpTLnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9ySlMucG0KaW5kZXggOTgwYjkyOWExMmMwZWYzNjQxOWY4MTViMDA2Y2JiNTM2
YjcxNGIwOC4uY2U1Y2IxNTg4ZGZkZTEyNGNkYTlkNmUzOGIxNjM1YzkxOTkxYmUzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0K
QEAgLTQ1MDIsNiArNDUwMiw3IEBAIHN1YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAg
IH0KICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIjZW5kaWZcbiIpIGlmICRjb25kaXRpb25h
bFN0cmluZzsKICAgICB9CisgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgdm0uaGVhcC5yZXBv
cnRFeHRyYU1lbW9yeUFsbG9jYXRlZCh3cmFwcGVkKCkubWVtb3J5Q29zdCgpKTtcbiIpIGlmICRp
bnRlcmZhY2UtPmV4dGVuZGVkQXR0cmlidXRlcy0+e1JlcG9ydEV4dHJhTWVtb3J5Q29zdH07CiAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICJ9XG5cbiIpOwogCiAgICAgdW5sZXNzIChTaG91bGRVc2VH
bG9iYWxPYmplY3RQcm90b3R5cGUoJGludGVyZmFjZSkpIHsKQEAgLTQ5MjEsOSArNDkyMiw2IEBA
IEVORAogICAgIC8vIGF0dHJpYnV0ZSB0byAkaW50ZXJmYWNlTmFtZS4KICAgICBzdGF0aWNfYXNz
ZXJ0KCFzdGQ6OmlzX3BvbHltb3JwaGljPCR7aW1wbFR5cGV9Pjo6dmFsdWUsICIke2ltcGxUeXBl
fSBpcyBwb2x5bW9ycGhpYyBidXQgdGhlIElETCBjbGFpbXMgaXQgaXMgbm90Iik7CiBFTkQKLSAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKSBpZiAkaW50ZXJmYWNlLT5leHRlbmRlZEF0
dHJpYnV0ZXMtPntSZXBvcnRFeHRyYU1lbW9yeUNvc3R9OwotICAgIGdsb2JhbE9iamVjdC0+dm0o
KS5oZWFwLnJlcG9ydEV4dHJhTWVtb3J5QWxsb2NhdGVkKGltcGwtPm1lbW9yeUNvc3QoKSk7Ci1F
TkQKIAogICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICByZXR1cm4gY3JlYXRlV3JhcHBl
cjwke2ltcGxUeXBlfT4oZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGltcGwpKTtcbiIpOwogICAgICAg
ICBwdXNoKEBpbXBsQ29udGVudCwgIn1cblxuIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvSlMvSlNJbnRlcmZhY2VOYW1lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCmluZGV4
IGZkZjYwYjRjNzkxODUyNGJmOTRhNGM1YTJmZThiNWRkYjZjNDg2MjguLjAwYjFjMDFhNzE1ZTIw
MjRlYzM1MzEzNDhjMjMwOTVmMDk2MzMzMzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9KUy9KU0ludGVyZmFjZU5hbWUuY3BwCkBAIC0x
MjYsNiArMTI2LDcgQEAgdm9pZCBKU0ludGVyZmFjZU5hbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSkKIAogICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfYmFzZV9vZjxBY3RpdmVET01PYmplY3Qs
IEludGVyZmFjZU5hbWU+Ojp2YWx1ZSwgIkludGVyZmFjZSBpcyBub3QgbWFya2VkIGFzIFtBY3Rp
dmVET01PYmplY3RdIGV2ZW4gdGhvdWdoIGltcGxlbWVudGF0aW9uIGNsYXNzIHN1YmNsYXNzZXMg
QWN0aXZlRE9NT2JqZWN0LiIpOwogCisgICAgdm0uaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9j
YXRlZCh3cmFwcGVkKCkubWVtb3J5Q29zdCgpKTsKIH0KIAogSlNPYmplY3QqIEpTSW50ZXJmYWNl
TmFtZTo6Y3JlYXRlUHJvdG90eXBlKFZNJiB2bSwgSlNET01HbG9iYWxPYmplY3QmIGdsb2JhbE9i
amVjdCkKQEAgLTI2MSw3ICsyNjIsNiBAQCBKU0M6OkpTVmFsdWUgdG9KU05ld2x5Q3JlYXRlZChK
U0M6OkpTR2xvYmFsT2JqZWN0KiwgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iagogICAgIC8v
IGJ5IGFkZGluZyB0aGUgU2tpcFZUYWJsZVZhbGlkYXRpb24gYXR0cmlidXRlIHRvIHRoZSBpbnRl
cmZhY2UgSURMIGRlZmluaXRpb24KICAgICBSRUxFQVNFX0FTU0VSVChhY3R1YWxWVGFibGVQb2lu
dGVyID09IGV4cGVjdGVkVlRhYmxlUG9pbnRlcik7CiAjZW5kaWYKLSAgICBnbG9iYWxPYmplY3Qt
PnZtKCkuaGVhcC5yZXBvcnRFeHRyYU1lbW9yeUFsbG9jYXRlZChpbXBsLT5tZW1vcnlDb3N0KCkp
OwogICAgIHJldHVybiBjcmVhdGVXcmFwcGVyPEludGVyZmFjZU5hbWU+KGdsb2JhbE9iamVjdCwg
V1RGTW92ZShpbXBsKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5jcHAKaW5kZXgg
MDVmZWNmN2NkMjMxZDJlNjgzZTk4ZDkzNzRhOGM0NTI5NGZlZDYxMy4uZjVmZmZiOTAzN2JlOTM0
NDI2ZTg4YzI2ZmVmZjg5NGI2NzhiYjkyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L01lc3NhZ2VFdmVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5j
cHAKQEAgLTEyNyw0ICsxMjcsMTkgQEAgRXZlbnRJbnRlcmZhY2UgTWVzc2FnZUV2ZW50OjpldmVu
dEludGVyZmFjZSgpIGNvbnN0CiAgICAgcmV0dXJuIE1lc3NhZ2VFdmVudEludGVyZmFjZVR5cGU7
CiB9CiAKK3NpemVfdCBNZXNzYWdlRXZlbnQ6Om1lbW9yeUNvc3QoKSBjb25zdAoreworICAgIHJl
dHVybiBXVEY6OnN3aXRjaE9uKG1fZGF0YSwgW10gKGNvbnN0IEpTVmFsdWVJbldyYXBwZWRPYmpl
Y3QmKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0sIFtdIChjb25zdCBSZWY8U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlPiYgZGF0YSkgeworICAgICAgICByZXR1cm4gZGF0YS0+bWVtb3J5Q29zdCgp
OworICAgIH0sIFtdIChjb25zdCBTdHJpbmcmIHN0cmluZykgeworICAgICAgICByZXR1cm4gc3Ry
aW5nLnNpemVJbkJ5dGVzKCk7CisgICAgfSwgW10gKGNvbnN0IFJlZjxCbG9iPiYgYmxvYikgewor
ICAgICAgICByZXR1cm4gYmxvYi0+c2l6ZSgpOworICAgIH0sIFtdIChjb25zdCBSZWY8QXJyYXlC
dWZmZXI+JiBidWZmZXIpIHsKKyAgICAgICAgcmV0dXJuIGJ1ZmZlci0+Ynl0ZUxlbmd0aCgpOwor
ICAgIH0pOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vTWVzc2FnZUV2ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUV2
ZW50LmgKaW5kZXggZjVlMWI1OTk0MTc1ZTIxYTM0NjllMjBhOTQ5N2RkOTViNjkxOWVmMC4uNjhk
MzgzMGY3ZWMzMzI5ZWI3OTNmMjgwOWFmNGVkOWQxNjA3M2RkZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNz
YWdlRXZlbnQuaApAQCAtNzksNiArNzksOCBAQCBjbGFzcyBNZXNzYWdlRXZlbnQgZmluYWwgOiBw
dWJsaWMgRXZlbnQgewogICAgIEpTVmFsdWVJbldyYXBwZWRPYmplY3QmIGNhY2hlZERhdGEoKSB7
IHJldHVybiBtX2NhY2hlZERhdGE7IH0KICAgICBKU1ZhbHVlSW5XcmFwcGVkT2JqZWN0JiBjYWNo
ZWRQb3J0cygpIHsgcmV0dXJuIG1fY2FjaGVkUG9ydHM7IH0KIAorICAgIHNpemVfdCBtZW1vcnlD
b3N0KCkgY29uc3Q7CisKIHByaXZhdGU6CiAgICAgTWVzc2FnZUV2ZW50KCk7CiAgICAgTWVzc2Fn
ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIHR5cGUsIEluaXQmJiwgSXNUcnVzdGVkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlRXZlbnQuaWRsIGIvU291cmNlL1dlYkNv
cmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKaW5kZXggYjgyYWVhNzUzMzMxMTJkZWQ2NWM2OWY1NTM2
Y2VlYWQ4ZGJiMWU3MC4uZGVlNWUyZjVhODM1ZDlmZTM2NzgzZGQ4MzFhNzJkZmZhMzg5YzgzNSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VFdmVudC5pZGwKQEAgLTM2LDYgKzM2LDcgQEAgdHlwZWRl
ZiAoV2luZG93UHJveHkgb3IgTWVzc2FnZVBvcnQpIE1lc3NhZ2VFdmVudFNvdXJjZTsKICAgICBD
b25zdHJ1Y3RvcihET01TdHJpbmcgdHlwZSwgb3B0aW9uYWwgTWVzc2FnZUV2ZW50SW5pdCBldmVu
dEluaXREaWN0KSwKICAgICBFeHBvc2VkPShXaW5kb3csV29ya2VyKSwKICAgICBKU0N1c3RvbU1h
cmtGdW5jdGlvbiwKKyAgICBSZXBvcnRFeHRyYU1lbW9yeUNvc3QsCiBdIGludGVyZmFjZSBNZXNz
YWdlRXZlbnQgOiBFdmVudCB7CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFVTVlN0cmluZyBvcmln
aW47CiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBsYXN0RXZlbnRJZDsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmggYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL09mZnNjcmVlbkNhbnZhcy5oCmluZGV4IDNlNWUzMGE1NzZlMzFhOTMyYTZmMTQ2
YTk3ZWJmMDhkZTlhMjVmMzkuLjdjMzY4MzBlZDY1YTdiNDI4ZDJhMmViOGU0ZWM1NmMwMWI3OTgx
OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvT2Zmc2NyZWVuQ2FudmFzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9PZmZzY3JlZW5DYW52YXMuaApAQCAtNjMsNiArNjMsMTMg
QEAgY2xhc3MgRGV0YWNoZWRPZmZzY3JlZW5DYW52YXMgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bWFnZUJ1ZmZlcj4gdGFrZUltYWdlQnVmZmVyKCk7CiAgICAgY29uc3QgSW50U2l6ZSYgc2l6ZSgp
IGNvbnN0IHsgcmV0dXJuIG1fc2l6ZTsgfQogICAgIGJvb2wgb3JpZ2luQ2xlYW4oKSBjb25zdCB7
IHJldHVybiBtX29yaWdpbkNsZWFuOyB9CisgICAgc2l6ZV90IG1lbW9yeUNvc3QoKSBjb25zdAor
ICAgIHsKKyAgICAgICAgYXV0byogYnVmZmVyID0gbV9idWZmZXIuZ2V0KCk7CisgICAgICAgIGlm
IChidWZmZXIpCisgICAgICAgICAgICByZXR1cm4gYnVmZmVyLT5tZW1vcnlDb3N0KCk7CisgICAg
ICAgIHJldHVybiAwOworICAgIH0KIAogcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8SW1h
Z2VCdWZmZXI+IG1fYnVmZmVyOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>