<?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>213819</bug_id>
          
          <creation_ts>2020-06-30 15:08:03 -0700</creation_ts>
          <short_desc>ReadableStream::create() should handle any exceptions that may be thrown during construction.</short_desc>
          <delta_ts>2020-07-03 00:45:58 -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>WebCore JavaScript</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=213917</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="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>darin</cc>
    
    <cc>fujii</cc>
    
    <cc>ggaren</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>1667758</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-30 15:08:03 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667760</commentid>
    <comment_count>1</comment_count>
      <attachid>403246</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-30 15:11:17 -0700</bug_when>
    <thetext>Created attachment 403246
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667761</commentid>
    <comment_count>2</comment_count>
      <attachid>403246</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-30 15:13:50 -0700</bug_when>
    <thetext>Comment on attachment 403246
proposed patch.

Taking out of review.  Let&apos;s see what the EWS says.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667765</commentid>
    <comment_count>3</comment_count>
      <attachid>403246</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-06-30 15:30:52 -0700</bug_when>
    <thetext>Comment on attachment 403246
proposed patch.

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

&gt; Source/WebCore/bindings/js/ReadableStream.cpp:56
&gt; +    RELEASE_ASSERT(!scope.exception() &amp;&amp; object);

I suggest two separate RELEASE_ASSERT so it’s clearer which one failed if only one did instead of a single with &amp;&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1667767</commentid>
    <comment_count>4</comment_count>
      <attachid>403248</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-06-30 15:37:58 -0700</bug_when>
    <thetext>Created attachment 403248
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668302</commentid>
    <comment_count>5</comment_count>
      <attachid>403382</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-02 11:40:35 -0700</bug_when>
    <thetext>Created attachment 403382
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668305</commentid>
    <comment_count>6</comment_count>
      <attachid>403382</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-07-02 11:44:04 -0700</bug_when>
    <thetext>Comment on attachment 403382
proposed patch.

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

&gt; Source/WebCore/Modules/cache/DOMCache.cpp:369
&gt; +        auto streamOfException = response-&gt;readableStream(*scriptExecutionContext()-&gt;execState());

I think you meant streamOrException?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668307</commentid>
    <comment_count>7</comment_count>
      <attachid>403382</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-02 11:45:20 -0700</bug_when>
    <thetext>Comment on attachment 403382
proposed patch.

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

&gt;&gt; Source/WebCore/Modules/cache/DOMCache.cpp:369
&gt;&gt; +        auto streamOfException = response-&gt;readableStream(*scriptExecutionContext()-&gt;execState());
&gt; 
&gt; I think you meant streamOrException?

Thanks for catching that.  A streamOfException would actually be funny.  Will fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668310</commentid>
    <comment_count>8</comment_count>
      <attachid>403384</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-02 11:50:15 -0700</bug_when>
    <thetext>Created attachment 403384
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668314</commentid>
    <comment_count>9</comment_count>
      <attachid>403384</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-07-02 12:07:20 -0700</bug_when>
    <thetext>Comment on attachment 403384
proposed patch.

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Win EWS detected that ReadableStream::create() can throw exceptions, and we were

Looking at Win EWS, it seems creating a ReadableStream has an issue as @setupReadableStreamDefaultController is not available.
This seems to indicate an underlying bug that would be nice to investigate.
That said, I would think that creation of a ReadableStream can throw an exception, for instance when a worker is getting terminated, so this patch looks good to me.

&gt; Source/WebCore/Modules/fetch/FetchBodyOwner.cpp:320
&gt; +    if (!m_body-&gt;hasReadableStream()) {

It seems we will retry creating a readable stream every time FetchBodyOwner::readableStream is called, while before the patch, we would do it once (since after that we are disturbed).
I do not think this is a big deal though.

&gt; Source/WebCore/Modules/fetch/FetchBodyOwner.cpp:337
&gt;          m_body-&gt;readableStream()-&gt;lock();

Maybe early return { } so that there is no else.

&gt; Source/WebCore/Modules/fetch/FetchBodyOwner.cpp:340
&gt; +        auto streamOrException = ReadableStream::create(state, m_readableStreamSource);

If creation fails, we should probably set m_readableStreamSource back to nullptr to keep a consistent state.

&gt; Source/WebCore/bindings/js/ReadableStream.cpp:57
&gt; +    JSObject* object = JSC::construct(&amp;lexicalGlobalObject, constructor, constructData, args);

auto*

&gt; Source/WebCore/bindings/js/ReadableStream.cpp:62
&gt;      return create(globalObject, *newReadableStream);

Combine both lines?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668317</commentid>
    <comment_count>10</comment_count>
      <attachid>403384</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-07-02 12:23:31 -0700</bug_when>
    <thetext>Comment on attachment 403384
proposed patch.

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

&gt;&gt; Source/WebCore/bindings/js/ReadableStream.cpp:62
&gt;&gt;      return create(globalObject, *newReadableStream);
&gt; 
&gt; Combine both lines?

Let&apos;s use jsCast instead of jsDynamicCast since here we are not assuming that this would fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668356</commentid>
    <comment_count>11</comment_count>
      <attachid>403384</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-02 13:47:30 -0700</bug_when>
    <thetext>Comment on attachment 403384
proposed patch.

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

Thanks for the reviews.

&gt;&gt; Source/WebCore/Modules/fetch/FetchBodyOwner.cpp:337
&gt;&gt;          m_body-&gt;readableStream()-&gt;lock();
&gt; 
&gt; Maybe early return { } so that there is no else.

Fixed.

&gt;&gt; Source/WebCore/Modules/fetch/FetchBodyOwner.cpp:340
&gt;&gt; +        auto streamOrException = ReadableStream::create(state, m_readableStreamSource);
&gt; 
&gt; If creation fails, we should probably set m_readableStreamSource back to nullptr to keep a consistent state.

Fixed.

&gt;&gt; Source/WebCore/bindings/js/ReadableStream.cpp:57
&gt;&gt; +    JSObject* object = JSC::construct(&amp;lexicalGlobalObject, constructor, constructData, args);
&gt; 
&gt; auto*

It is not clear from reading this code that JSC::construct() returns a JSObject*.  I think there&apos;s value here in documenting this by declaring it explicitly.

&gt;&gt;&gt; Source/WebCore/bindings/js/ReadableStream.cpp:62
&gt;&gt;&gt;      return create(globalObject, *newReadableStream);
&gt;&gt; 
&gt;&gt; Combine both lines?
&gt; 
&gt; Let&apos;s use jsCast instead of jsDynamicCast since here we are not assuming that this would fail.

Fixed and fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668476</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-02 21:06:40 -0700</bug_when>
    <thetext>It looks like this patch is successful in fixing the majority of crashes due to the unhandled exception.  However, there appears to be 1 more test failures:

http/tests/fetch/clone-response-body.html

... with the following crash stack:

 # Child-SP          RetAddr           Call Site
00 000000f3`d88fcbd0 00007fff`364e5439 WebKit!abort(void)+0x35 [minkernel\crts\ucrt\src\appcrt\startup\abort.cpp @ 77]
01 (Inline Function) --------`-------- WebKit!WTF::Optional&lt;WebCore::ReadableStreamDefaultController&gt;::value+0xa0 [C:\cygwin\home\buildbot\worker\Windows-EWS\build\WebKitBuild\Release\DerivedSources\ForwardingHeaders\wtf\Optional.h @ 550]
02 (Inline Function) --------`-------- WebKit!WebCore::ReadableStreamSource::controller+0xa0 [C:\cygwin\home\buildbot\worker\Windows-EWS\build\Source\WebCore\Modules\streams\ReadableStreamSource.h @ 49]
03 000000f3`d88fcc00 00007fff`35de16a8 WebKit!WebCore::FetchBodySource::error(class WebCore::Exception * value = 0x000000f3`d88fcc88)+0xb9 [C:\cygwin\home\buildbot\worker\Windows-EWS\build\Source\WebCore\Modules\fetch\FetchBodySource.cpp @ 92]
04 000000f3`d88fcc60 00007fff`360e0aad WebKit!WebCore::FetchResponse::BodyLoader::didFail(class WebCore::ResourceError * error = &lt;Value unavailable error&gt;)+0x238 [C:\cygwin\home\buildbot\worker\Windows-EWS\build\Source\WebCore\Modules\fetch\FetchResponse.cpp @ 308]
05 000000f3`d88fcd10 00007fff`360e0536 WebKit!WebCore::CachedResource::checkNotify(class WebCore::NetworkLoadMetrics * metrics = 0x000000f3`d88fce08)+0x11d [C:\cygwin\home\buildbot\worker\Windows-EWS\build\Source\WebCore\loader\cache\CachedResource.cpp @ 375]
06 000000f3`d88fcd90 00007fff`35a79abe WebKit!WebCore::CachedResource::cancelLoad(void)+0x246 [C:\cygwin\home\buildbot\worker\Windows-EWS\build\Source\WebCore\loader\cache\CachedResource.cpp @ 417]
07 000000f3`d88fcee0 00007fff`35a6ae50 WebKit!WebCore::SubresourceLoader::didCancel(class WebCore::ResourceError * __formal = 0x000000f3`d88fd010)+0x1e [C:\cygwin\home\buildbot\worker\Windows-EWS\build\Source\WebCore\loader\SubresourceLoader.cpp @ 831]
08 000000f3`d88fcf10 00007fff`35a6af7f WebKit!WebCore::ResourceLoader::cancel(class WebCore::ResourceError * error = &lt;Value unavailable error&gt;)+0x390 [C:\cygwin\home\buildbot\worker\Windows-EWS\build\Source\WebCore\loader\ResourceLoader.cpp @ 665]

The reason for the crash is due to Optional&lt;ReadableStreamDefaultController&gt; m_controller (used in controller()) being uninitialized here:

void FetchBodySource::error(const Exception&amp; value)
{
    controller().error(value);
    clean();
    m_bodyOwner = nullptr;
}

I&apos;ll file a separate bug to handle this since it&apos;s a different issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668478</commentid>
    <comment_count>13</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-02 21:09:32 -0700</bug_when>
    <thetext>Filed https://bugs.webkit.org/show_bug.cgi?id=213917 to handle the remaining crash.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668490</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2020-07-02 22:52:59 -0700</bug_when>
    <thetext>Landed in r263883: &lt;http://trac.webkit.org/r263883&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668491</commentid>
    <comment_count>15</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-02 22:53:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/65064585&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668508</commentid>
    <comment_count>16</comment_count>
      <attachid>403384</attachid>
    <who name="Fujii Hironori">fujii</who>
    <bug_when>2020-07-03 00:45:58 -0700</bug_when>
    <thetext>Comment on attachment 403384
proposed patch.

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

&gt;&gt; Source/WebCore/ChangeLog:8
&gt;&gt; +        Win EWS detected that ReadableStream::create() can throw exceptions, and we were
&gt; 
&gt; Looking at Win EWS, it seems creating a ReadableStream has an issue as @setupReadableStreamDefaultController is not available.
&gt; This seems to indicate an underlying bug that would be nice to investigate.
&gt; That said, I would think that creation of a ReadableStream can throw an exception, for instance when a worker is getting terminated, so this patch looks good to me.

The @setupReadableStreamDefaultController issue is tracked by Bug 213792.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403246</attachid>
            <date>2020-06-30 15:11:17 -0700</date>
            <delta_ts>2020-06-30 15:37:58 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-213819.patch</filename>
            <type>text/plain</type>
            <size>1573</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA2LTMwICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBSRUxFQVNFX0FTU0VSVCBp
biBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCkgdG8gaGVscCBkaWFnbm9zZSBhbiBpc3N1ZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzgxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06
OmNyZWF0ZSk6CisKIDIwMjAtMDYtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBoYW5kbGluZyBmb3IgYSBjYXNlIG9mIE9PTUUgaW4gQ1NTVG9rZW5pemVy
IGFuZCBDU1NQYXJzZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW0uY3BwCShyZXZpc2lvbiAyNjM3NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDkg
QEAgUmVmPFJlYWRhYmxlU3RyZWFtPiBSZWFkYWJsZVN0cmVhbTo6Y3JlYQogICAgIGFyZ3MuYXBw
ZW5kKHNvdXJjZSA/IHRvSlNOZXdseUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9i
YWxPYmplY3QsIHNvdXJjZS5yZWxlYXNlTm9uTnVsbCgpKSA6IEpTQzo6anNVbmRlZmluZWQoKSk7
CiAgICAgQVNTRVJUKCFhcmdzLmhhc092ZXJmbG93ZWQoKSk7CiAKLSAgICBhdXRvIG5ld1JlYWRh
YmxlU3RyZWFtID0ganNEeW5hbWljQ2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4odm0sIEpTQzo6Y29u
c3RydWN0KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwg
YXJncykpOworICAgIEpTT2JqZWN0KiBvYmplY3QgPSBKU0M6OmNvbnN0cnVjdCgmbGV4aWNhbEds
b2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEsIGFyZ3MpOworICAgIFJFTEVB
U0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSAmJiBvYmplY3QpOworICAgIGF1dG8gbmV3UmVh
ZGFibGVTdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFibGVTdHJlYW0qPih2bSwgb2JqZWN0
KTsKICAgICBzY29wZS5hc3NlcnROb0V4Y2VwdGlvbigpOwogCiAgICAgcmV0dXJuIGNyZWF0ZShn
bG9iYWxPYmplY3QsICpuZXdSZWFkYWJsZVN0cmVhbSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403248</attachid>
            <date>2020-06-30 15:37:58 -0700</date>
            <delta_ts>2020-07-01 22:53:50 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-213819.patch</filename>
            <type>text/plain</type>
            <size>1593</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzc3MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA2LTMwICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgYSBSRUxFQVNFX0FTU0VSVCBp
biBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCkgdG8gaGVscCBkaWFnbm9zZSBhbiBpc3N1ZS4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMzgxOQorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVhZGFibGVTdHJlYW06
OmNyZWF0ZSk6CisKIDIwMjAtMDYtMzAgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgog
CiAgICAgICAgIEFkZCBoYW5kbGluZyBmb3IgYSBjYXNlIG9mIE9PTUUgaW4gQ1NTVG9rZW5pemVy
IGFuZCBDU1NQYXJzZXIuCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZVN0cmVhbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvUmVh
ZGFibGVTdHJlYW0uY3BwCShyZXZpc2lvbiAyNjM3NzApCisrKyBTb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUyLDcgKzUyLDEw
IEBAIFJlZjxSZWFkYWJsZVN0cmVhbT4gUmVhZGFibGVTdHJlYW06OmNyZWEKICAgICBhcmdzLmFw
cGVuZChzb3VyY2UgPyB0b0pTTmV3bHlDcmVhdGVkKCZsZXhpY2FsR2xvYmFsT2JqZWN0LCAmZ2xv
YmFsT2JqZWN0LCBzb3VyY2UucmVsZWFzZU5vbk51bGwoKSkgOiBKU0M6OmpzVW5kZWZpbmVkKCkp
OwogICAgIEFTU0VSVCghYXJncy5oYXNPdmVyZmxvd2VkKCkpOwogCi0gICAgYXV0byBuZXdSZWFk
YWJsZVN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJsZVN0cmVhbSo+KHZtLCBKU0M6OmNv
bnN0cnVjdCgmbGV4aWNhbEdsb2JhbE9iamVjdCwgY29uc3RydWN0b3IsIGNvbnN0cnVjdERhdGEs
IGFyZ3MpKTsKKyAgICBKU09iamVjdCogb2JqZWN0ID0gSlNDOjpjb25zdHJ1Y3QoJmxleGljYWxH
bG9iYWxPYmplY3QsIGNvbnN0cnVjdG9yLCBjb25zdHJ1Y3REYXRhLCBhcmdzKTsKKyAgICBSRUxF
QVNFX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgIFJFTEVBU0VfQVNTRVJUKG9iamVj
dCk7CisgICAgYXV0byBuZXdSZWFkYWJsZVN0cmVhbSA9IGpzRHluYW1pY0Nhc3Q8SlNSZWFkYWJs
ZVN0cmVhbSo+KHZtLCBvYmplY3QpOwogICAgIHNjb3BlLmFzc2VydE5vRXhjZXB0aW9uKCk7CiAK
ICAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwgKm5ld1JlYWRhYmxlU3RyZWFtKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403382</attachid>
            <date>2020-07-02 11:40:35 -0700</date>
            <delta_ts>2020-07-02 11:50:15 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-213819.patch</filename>
            <type>text/plain</type>
            <size>10700</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA3LTAyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRl
KCkgc2hvdWxkIGhhbmRsZSBhbnkgZXhjZXB0aW9ucyB0aGF0IG1heSBiZSB0aHJvd24gZHVyaW5n
IGNvbnN0cnVjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdpbiBFV1MgZGV0ZWN0ZWQgdGhhdCBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCkgY2Fu
IHRocm93IGV4Y2VwdGlvbnMsIGFuZCB3ZSB3ZXJlCisgICAgICAgIGZhaWxpbmcgdG8gaGFuZGxl
IGl0LiAgVGhpcyBwYXRjaCBmaXhlcyB0aGF0LgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keU93bmVyOjpyZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6Y3JlYXRlUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
Lmg6CisKIDIwMjAtMDctMDIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtCRkNdIFJlbW92ZSByZWR1bmRhbnQgbWFyZ2luLWJvcmRlci1wYWRkaW5nIHdo
ZW4gY29tcHV0aW5nIHRoZSBpbnRyaW5zaWMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCShyZXZpc2lvbiAyNjM3NzApCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjUsOCArMzY1
LDEzIEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFIKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogZm9yIGVmZmljaWVuY3ksIHdlIHNob3VsZCBsb2FkIGJsb2JzIGRpcmVj
dGx5IGluc3RlYWQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgcmVhZGFibGVTdHJlYW0gcGF0aC4KLSAg
ICBpZiAocmVzcG9uc2UtPmlzQmxvYkJvZHkoKSkKLSAgICAgICAgcmVzcG9uc2UtPnJlYWRhYmxl
U3RyZWFtKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpKTsKKyAgICBpZiAo
cmVzcG9uc2UtPmlzQmxvYkJvZHkoKSkgeworICAgICAgICBhdXRvIHN0cmVhbU9mRXhjZXB0aW9u
ID0gcmVzcG9uc2UtPnJlYWRhYmxlU3RyZWFtKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4
ZWNTdGF0ZSgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0cmVhbU9mRXhjZXB0aW9uLmhhc0V4
Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qoc3RyZWFtT2ZFeGNlcHRp
b24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCShyZXZpc2lvbiAy
NjM3NzApCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2Fub24gSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMSwyNyAr
MzEyLDM3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OkJsb2JMb2FkZXI6OmRpZEZhaWwKICAgICAg
ICAgb3duZXIuYmxvYkxvYWRpbmdGYWlsZWQoKTsKIH0KIAotUmVmUHRyPFJlYWRhYmxlU3RyZWFt
PiBGZXRjaEJvZHlPd25lcjo6cmVhZGFibGVTdHJlYW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3Rh
dGUpCitFeGNlcHRpb25PcjxSZWZQdHI8UmVhZGFibGVTdHJlYW0+PiBGZXRjaEJvZHlPd25lcjo6
cmVhZGFibGVTdHJlYW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUpCiB7CiAgICAgaWYgKGlz
Qm9keU51bGxPck9wYXF1ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICgh
bV9ib2R5LT5oYXNSZWFkYWJsZVN0cmVhbSgpKQotICAgICAgICBjcmVhdGVSZWFkYWJsZVN0cmVh
bShzdGF0ZSk7CisgICAgaWYgKCFtX2JvZHktPmhhc1JlYWRhYmxlU3RyZWFtKCkpIHsKKyAgICAg
ICAgYXV0byB2b2lkT3JFeGNlcHRpb24gPSBjcmVhdGVSZWFkYWJsZVN0cmVhbShzdGF0ZSk7Cisg
ICAgICAgIGlmIChVTkxJS0VMWSh2b2lkT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIHZvaWRPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAg
fQogCiAgICAgcmV0dXJuIG1fYm9keS0+cmVhZGFibGVTdHJlYW0oKTsKIH0KIAotdm9pZCBGZXRj
aEJvZHlPd25lcjo6Y3JlYXRlUmVhZGFibGVTdHJlYW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3Rh
dGUpCitFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaEJvZHlPd25lcjo6Y3JlYXRlUmVhZGFibGVTdHJl
YW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKCFtX3JlYWRhYmxl
U3RyZWFtU291cmNlKTsKICAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBtX2JvZHkt
PnNldFJlYWRhYmxlU3RyZWFtKFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoc3RhdGUsIG51bGxwdHIp
KTsKKyAgICAgICAgYXV0byBzdHJlYW1PckV4Y2VwdGlvbiA9IFJlYWRhYmxlU3RyZWFtOjpjcmVh
dGUoc3RhdGUsIG51bGxwdHIpOworICAgICAgICBpZiAoVU5MSUtFTFkoc3RyZWFtT3JFeGNlcHRp
b24uaGFzRXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmVhbU9yRXhjZXB0aW9u
LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgbV9ib2R5LT5zZXRSZWFkYWJsZVN0cmVhbShz
dHJlYW1PckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgICAgIG1fYm9keS0+
cmVhZGFibGVTdHJlYW0oKS0+bG9jaygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UgPSBhZG9wdFJlZigqbmV3IEZldGNoQm9keVNvdXJjZSgqdGhpcykpOwot
ICAgICAgICBtX2JvZHktPnNldFJlYWRhYmxlU3RyZWFtKFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUo
c3RhdGUsIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpKTsKKyAgICAgICAgYXV0byBzdHJlYW1PckV4
Y2VwdGlvbiA9IFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoc3RhdGUsIG1fcmVhZGFibGVTdHJlYW1T
b3VyY2UpOworICAgICAgICBpZiAoVU5MSUtFTFkoc3RyZWFtT3JFeGNlcHRpb24uaGFzRXhjZXB0
aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmVhbU9yRXhjZXB0aW9uLnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICAgICAgbV9ib2R5LT5zZXRSZWFkYWJsZVN0cmVhbShzdHJlYW1PckV4Y2Vw
dGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgfQorICAgIHJldHVybiB7IH07CiB9CiAK
IHZvaWQgRmV0Y2hCb2R5T3duZXI6OmNvbnN1bWVCb2R5QXNTdHJlYW0oKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAkocmV2aXNpb24gMjYz
NzcwKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBD
YW5vbiBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
LCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMzAsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgogI2luY2x1ZGUgIkZldGNo
Qm9keVNvdXJjZS5oIgogI2luY2x1ZGUgIkZldGNoSGVhZGVycy5oIgpAQCAtNTcsNyArNTksNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2Jsb2JM
b2FkZXI7IH0KIAotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gcmVhZGFibGVTdHJlYW0oSlND
OjpKU0dsb2JhbE9iamVjdCYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0cmVh
bT4+IHJlYWRhYmxlU3RyZWFtKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICBib29sIGhhc1Jl
YWRhYmxlU3RyZWFtQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9keSAmJiBtX2JvZHktPmhhc1Jl
YWRhYmxlU3RyZWFtKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb25zdW1lQm9keUFzU3RyZWFt
KCk7CkBAIC04MCw3ICs4Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbnN1bWVPbmNlTG9h
ZGluZ0ZpbmlzaGVkKEZldGNoQm9keUNvbnN1bWVyOjpUeXBlLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKIAogICAgIHZvaWQgc2V0Qm9keShGZXRjaEJvZHkmJiBib2R5KSB7IG1fYm9keSA9IFdU
Rk1vdmUoYm9keSk7IH0KLSAgICB2b2lkIGNyZWF0ZVJlYWRhYmxlU3RyZWFtKEpTQzo6SlNHbG9i
YWxPYmplY3QmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjcmVhdGVSZWFkYWJsZVN0cmVhbShK
U0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJCiAgICAg
dm9pZCBzdG9wKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAJKHJldmlzaW9uIDI2Mzc3MCkKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzYsOCArMTc3LDExIEBAIEV4Y2VwdGlvbk9yPFJl
ZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXMKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKIAogICAgIC8vIElmIGxvYWRpbmcsIGxldCdzIGNyZWF0ZSBhIHN0cmVhbSBzbyB0
aGF0IGRhdGEgaXMgdGVlZCBvbiBib3RoIGNsb25lcy4KLSAgICBpZiAoaXNMb2FkaW5nKCkgJiYg
IW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpCi0gICAgICAgIGNyZWF0ZVJlYWRhYmxlU3RyZWFtKCpj
b250ZXh0LmV4ZWNTdGF0ZSgpKTsKKyAgICBpZiAoaXNMb2FkaW5nKCkgJiYgIW1fcmVhZGFibGVT
dHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgYXV0byB2b2lkT3JFeGNlcHRpb24gPSBjcmVhdGVSZWFk
YWJsZVN0cmVhbSgqY29udGV4dC5leGVjU3RhdGUoKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSh2
b2lkT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIHZvaWRP
ckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgfQogCiAgICAgLy8gU3ludGhldGlj
IHJlc3BvbnNlcyBkbyBub3Qgc3RvcmUgaGVhZGVycyBpbiBtX2ludGVybmFsUmVzcG9uc2UuCiAg
ICAgaWYgKG1faW50ZXJuYWxSZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlw
ZTo6RGVmYXVsdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZVN0cmVhbS5jcHAJKHJldmlzaW9uIDI2Mzc3MCkKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKIAorI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnRTZXF1ZW5jZXMuaCIKICNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtU2luay5oIgog
I2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKQEAgLTM1LDEwICszNywxMCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmPFJlYWRhYmxl
U3RyZWFtPiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4mJiBzb3VyY2UpCitF
eGNlcHRpb25PcjxSZWY8UmVhZGFibGVTdHJlYW0+PiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZlB0cjxSZWFkYWJsZVN0
cmVhbVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvJiBjbGllbnRE
YXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CiAgICAg
YXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwpAQCAtNTIsOSArNTQsMTEgQEAgUmVmPFJlYWRhYmxlU3RyZWFt
PiBSZWFkYWJsZVN0cmVhbTo6Y3JlYQogICAgIGFyZ3MuYXBwZW5kKHNvdXJjZSA/IHRvSlNOZXds
eUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKSA6IEpTQzo6anNVbmRlZmluZWQoKSk7CiAgICAgQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7CiAKLSAgICBhdXRvIG5ld1JlYWRhYmxlU3RyZWFtID0ganNEeW5hbWlj
Q2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4odm0sIEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJncykpOwotICAgIHNjb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJncyk7
CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKIAorICAgIGF1dG8gbmV3UmVhZGFibGVTdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFi
bGVTdHJlYW0qPih2bSwgb2JqZWN0KTsKICAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwg
Km5ld1JlYWRhYmxlU3RyZWFtKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbS5oCShyZXZpc2lvbiAyNjM3NzApCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpT
RE9NR3VhcmRlZE9iamVjdC5oIgpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBSZWFkYWJsZVN0cmVh
bSBmaW5hbCA6IHB1YmxpYyBET01HCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0
cmVhbT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUmVhZGFibGVT
dHJlYW0mIHJlYWRhYmxlU3RyZWFtKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRhYmxlU3Ry
ZWFtKGdsb2JhbE9iamVjdCwgcmVhZGFibGVTdHJlYW0pKTsgfQogCi0gICAgc3RhdGljIFJlZjxS
ZWFkYWJsZVN0cmVhbT4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8UmVhZGFi
bGVTdHJlYW1Tb3VyY2U+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8UmVhZGFibGVT
dHJlYW0+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bVNvdXJjZT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Rpc3R1cmJl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403384</attachid>
            <date>2020-07-02 11:50:15 -0700</date>
            <delta_ts>2020-07-02 12:07:20 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-213819.patch</filename>
            <type>text/plain</type>
            <size>10700</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2Mzg1MikKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDIwLTA3LTAyICBNYXJrIExh
bSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRl
KCkgc2hvdWxkIGhhbmRsZSBhbnkgZXhjZXB0aW9ucyB0aGF0IG1heSBiZSB0aHJvd24gZHVyaW5n
IGNvbnN0cnVjdGlvbi4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMzgxOQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIFdpbiBFV1MgZGV0ZWN0ZWQgdGhhdCBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKCkgY2Fu
IHRocm93IGV4Y2VwdGlvbnMsIGFuZCB3ZSB3ZXJlCisgICAgICAgIGZhaWxpbmcgdG8gaGFuZGxl
IGl0LiAgVGhpcyBwYXRjaCBmaXhlcyB0aGF0LgorCisgICAgICAgICogTW9kdWxlcy9jYWNoZS9E
T01DYWNoZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01DYWNoZTo6cHV0KToKKyAgICAgICAg
KiBNb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZl
dGNoQm9keU93bmVyOjpyZWFkYWJsZVN0cmVhbSk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJv
ZHlPd25lcjo6Y3JlYXRlUmVhZGFibGVTdHJlYW0pOgorICAgICAgICAqIE1vZHVsZXMvZmV0Y2gv
RmV0Y2hCb2R5T3duZXIuaDoKKyAgICAgICAgKiBNb2R1bGVzL2ZldGNoL0ZldGNoUmVzcG9uc2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hSZXNwb25zZTo6Y2xvbmUpOgorICAgICAgICAq
IGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFtLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRh
YmxlU3RyZWFtOjpjcmVhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL1JlYWRhYmxlU3RyZWFt
Lmg6CisKIDIwMjAtMDctMDIgIFphbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXVtCRkNdIFJlbW92ZSByZWR1bmRhbnQgbWFyZ2luLWJvcmRlci1wYWRkaW5nIHdo
ZW4gY29tcHV0aW5nIHRoZSBpbnRyaW5zaWMgd2lkdGgKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01v
ZHVsZXMvY2FjaGUvRE9NQ2FjaGUuY3BwCShyZXZpc2lvbiAyNjM4NTIpCisrKyBTb3VyY2UvV2Vi
Q29yZS9Nb2R1bGVzL2NhY2hlL0RPTUNhY2hlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsx
LDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0zNjUsOCArMzY1
LDEzIEBAIHZvaWQgRE9NQ2FjaGU6OnB1dChSZXF1ZXN0SW5mbyYmIGluZm8sIFIKICAgICB9CiAK
ICAgICAvLyBGSVhNRTogZm9yIGVmZmljaWVuY3ksIHdlIHNob3VsZCBsb2FkIGJsb2JzIGRpcmVj
dGx5IGluc3RlYWQgb2YgZ29pbmcgdGhyb3VnaCB0aGUgcmVhZGFibGVTdHJlYW0gcGF0aC4KLSAg
ICBpZiAocmVzcG9uc2UtPmlzQmxvYkJvZHkoKSkKLSAgICAgICAgcmVzcG9uc2UtPnJlYWRhYmxl
U3RyZWFtKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4ZWNTdGF0ZSgpKTsKKyAgICBpZiAo
cmVzcG9uc2UtPmlzQmxvYkJvZHkoKSkgeworICAgICAgICBhdXRvIHN0cmVhbU9yRXhjZXB0aW9u
ID0gcmVzcG9uc2UtPnJlYWRhYmxlU3RyZWFtKCpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCktPmV4
ZWNTdGF0ZSgpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKHN0cmVhbU9yRXhjZXB0aW9uLmhhc0V4
Y2VwdGlvbigpKSkgeworICAgICAgICAgICAgcHJvbWlzZS5yZWplY3Qoc3RyZWFtT3JFeGNlcHRp
b24ucmVsZWFzZUV4Y2VwdGlvbigpKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQor
ICAgIH0KIAogICAgIGlmIChyZXNwb25zZS0+aXNCb2R5UmVjZWl2ZWRCeUNodW5rKCkpIHsKICAg
ICAgICAgYXV0byYgcmVzcG9uc2VSZWYgPSByZXNwb25zZS5nZXQoKTsKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuY3BwCShyZXZpc2lvbiAy
NjM4NTIpCisrKyBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keU93bmVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIw
MTYgQ2Fub24gSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMxMSwyNyAr
MzEyLDM3IEBAIHZvaWQgRmV0Y2hCb2R5T3duZXI6OkJsb2JMb2FkZXI6OmRpZEZhaWwKICAgICAg
ICAgb3duZXIuYmxvYkxvYWRpbmdGYWlsZWQoKTsKIH0KIAotUmVmUHRyPFJlYWRhYmxlU3RyZWFt
PiBGZXRjaEJvZHlPd25lcjo6cmVhZGFibGVTdHJlYW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3Rh
dGUpCitFeGNlcHRpb25PcjxSZWZQdHI8UmVhZGFibGVTdHJlYW0+PiBGZXRjaEJvZHlPd25lcjo6
cmVhZGFibGVTdHJlYW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUpCiB7CiAgICAgaWYgKGlz
Qm9keU51bGxPck9wYXF1ZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIGlmICgh
bV9ib2R5LT5oYXNSZWFkYWJsZVN0cmVhbSgpKQotICAgICAgICBjcmVhdGVSZWFkYWJsZVN0cmVh
bShzdGF0ZSk7CisgICAgaWYgKCFtX2JvZHktPmhhc1JlYWRhYmxlU3RyZWFtKCkpIHsKKyAgICAg
ICAgYXV0byB2b2lkT3JFeGNlcHRpb24gPSBjcmVhdGVSZWFkYWJsZVN0cmVhbShzdGF0ZSk7Cisg
ICAgICAgIGlmIChVTkxJS0VMWSh2b2lkT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpKQorICAg
ICAgICAgICAgcmV0dXJuIHZvaWRPckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAg
fQogCiAgICAgcmV0dXJuIG1fYm9keS0+cmVhZGFibGVTdHJlYW0oKTsKIH0KIAotdm9pZCBGZXRj
aEJvZHlPd25lcjo6Y3JlYXRlUmVhZGFibGVTdHJlYW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3Rh
dGUpCitFeGNlcHRpb25Pcjx2b2lkPiBGZXRjaEJvZHlPd25lcjo6Y3JlYXRlUmVhZGFibGVTdHJl
YW0oSlNDOjpKU0dsb2JhbE9iamVjdCYgc3RhdGUpCiB7CiAgICAgQVNTRVJUKCFtX3JlYWRhYmxl
U3RyZWFtU291cmNlKTsKICAgICBpZiAoaXNEaXN0dXJiZWQoKSkgewotICAgICAgICBtX2JvZHkt
PnNldFJlYWRhYmxlU3RyZWFtKFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoc3RhdGUsIG51bGxwdHIp
KTsKKyAgICAgICAgYXV0byBzdHJlYW1PckV4Y2VwdGlvbiA9IFJlYWRhYmxlU3RyZWFtOjpjcmVh
dGUoc3RhdGUsIG51bGxwdHIpOworICAgICAgICBpZiAoVU5MSUtFTFkoc3RyZWFtT3JFeGNlcHRp
b24uaGFzRXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmVhbU9yRXhjZXB0aW9u
LnJlbGVhc2VFeGNlcHRpb24oKTsKKyAgICAgICAgbV9ib2R5LT5zZXRSZWFkYWJsZVN0cmVhbShz
dHJlYW1PckV4Y2VwdGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgICAgIG1fYm9keS0+
cmVhZGFibGVTdHJlYW0oKS0+bG9jaygpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIG1fcmVhZGFi
bGVTdHJlYW1Tb3VyY2UgPSBhZG9wdFJlZigqbmV3IEZldGNoQm9keVNvdXJjZSgqdGhpcykpOwot
ICAgICAgICBtX2JvZHktPnNldFJlYWRhYmxlU3RyZWFtKFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUo
c3RhdGUsIG1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpKTsKKyAgICAgICAgYXV0byBzdHJlYW1PckV4
Y2VwdGlvbiA9IFJlYWRhYmxlU3RyZWFtOjpjcmVhdGUoc3RhdGUsIG1fcmVhZGFibGVTdHJlYW1T
b3VyY2UpOworICAgICAgICBpZiAoVU5MSUtFTFkoc3RyZWFtT3JFeGNlcHRpb24uaGFzRXhjZXB0
aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIHN0cmVhbU9yRXhjZXB0aW9uLnJlbGVhc2VFeGNl
cHRpb24oKTsKKyAgICAgICAgbV9ib2R5LT5zZXRSZWFkYWJsZVN0cmVhbShzdHJlYW1PckV4Y2Vw
dGlvbi5yZWxlYXNlUmV0dXJuVmFsdWUoKSk7CiAgICAgfQorICAgIHJldHVybiB7IH07CiB9CiAK
IHZvaWQgRmV0Y2hCb2R5T3duZXI6OmNvbnN1bWVCb2R5QXNTdHJlYW0oKQpJbmRleDogU291cmNl
L1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5T3duZXIuaAkocmV2aXNpb24gMjYz
ODUyKQorKysgU291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHlPd25lci5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAxNiBD
YW5vbiBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
LCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjksNiArMzAsNyBA
QAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIkZldGNoQm9keS5oIgogI2luY2x1ZGUgIkZldGNo
Qm9keVNvdXJjZS5oIgogI2luY2x1ZGUgIkZldGNoSGVhZGVycy5oIgpAQCAtNTcsNyArNTksNyBA
QCBwdWJsaWM6CiAKICAgICBib29sIGlzQWN0aXZlKCkgY29uc3QgeyByZXR1cm4gISFtX2Jsb2JM
b2FkZXI7IH0KIAotICAgIFJlZlB0cjxSZWFkYWJsZVN0cmVhbT4gcmVhZGFibGVTdHJlYW0oSlND
OjpKU0dsb2JhbE9iamVjdCYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxSZWFkYWJsZVN0cmVh
bT4+IHJlYWRhYmxlU3RyZWFtKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICBib29sIGhhc1Jl
YWRhYmxlU3RyZWFtQm9keSgpIGNvbnN0IHsgcmV0dXJuIG1fYm9keSAmJiBtX2JvZHktPmhhc1Jl
YWRhYmxlU3RyZWFtKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBjb25zdW1lQm9keUFzU3RyZWFt
KCk7CkBAIC04MCw3ICs4Miw3IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNvbnN1bWVPbmNlTG9h
ZGluZ0ZpbmlzaGVkKEZldGNoQm9keUNvbnN1bWVyOjpUeXBlLCBSZWY8RGVmZXJyZWRQcm9taXNl
PiYmKTsKIAogICAgIHZvaWQgc2V0Qm9keShGZXRjaEJvZHkmJiBib2R5KSB7IG1fYm9keSA9IFdU
Rk1vdmUoYm9keSk7IH0KLSAgICB2b2lkIGNyZWF0ZVJlYWRhYmxlU3RyZWFtKEpTQzo6SlNHbG9i
YWxPYmplY3QmKTsKKyAgICBFeGNlcHRpb25Pcjx2b2lkPiBjcmVhdGVSZWFkYWJsZVN0cmVhbShK
U0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAKICAgICAvLyBBY3RpdmVET01PYmplY3QgQVBJCiAgICAg
dm9pZCBzdG9wKCkgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNo
L0ZldGNoUmVzcG9uc2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAJKHJldmlzaW9uIDI2Mzg1MikKKysrIFNvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hSZXNwb25zZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEs
NSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDE2IENhbm9uIEluYy4KKyAqIENvcHly
aWdodCAoQykgMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQsIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0xNzYsOCArMTc3LDExIEBAIEV4Y2VwdGlvbk9yPFJl
ZjxGZXRjaFJlc3BvbnNlPj4gRmV0Y2hSZXMKICAgICBBU1NFUlQoc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCgpKTsKIAogICAgIC8vIElmIGxvYWRpbmcsIGxldCdzIGNyZWF0ZSBhIHN0cmVhbSBzbyB0
aGF0IGRhdGEgaXMgdGVlZCBvbiBib3RoIGNsb25lcy4KLSAgICBpZiAoaXNMb2FkaW5nKCkgJiYg
IW1fcmVhZGFibGVTdHJlYW1Tb3VyY2UpCi0gICAgICAgIGNyZWF0ZVJlYWRhYmxlU3RyZWFtKCpj
b250ZXh0LmV4ZWNTdGF0ZSgpKTsKKyAgICBpZiAoaXNMb2FkaW5nKCkgJiYgIW1fcmVhZGFibGVT
dHJlYW1Tb3VyY2UpIHsKKyAgICAgICAgYXV0byB2b2lkT3JFeGNlcHRpb24gPSBjcmVhdGVSZWFk
YWJsZVN0cmVhbSgqY29udGV4dC5leGVjU3RhdGUoKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSh2
b2lkT3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpKQorICAgICAgICAgICAgcmV0dXJuIHZvaWRP
ckV4Y2VwdGlvbi5yZWxlYXNlRXhjZXB0aW9uKCk7CisgICAgfQogCiAgICAgLy8gU3ludGhldGlj
IHJlc3BvbnNlcyBkbyBub3Qgc3RvcmUgaGVhZGVycyBpbiBtX2ludGVybmFsUmVzcG9uc2UuCiAg
ICAgaWYgKG1faW50ZXJuYWxSZXNwb25zZS50eXBlKCkgPT0gUmVzb3VyY2VSZXNwb25zZTo6VHlw
ZTo6RGVmYXVsdCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1JlYWRhYmxlU3Ry
ZWFtLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9SZWFkYWJs
ZVN0cmVhbS5jcHAJKHJldmlzaW9uIDI2Mzg1MikKKysrIFNvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL1JlYWRhYmxlU3RyZWFtLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNiw2ICsyNiw4IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUmVhZGFibGVTdHJlYW0uaCIKIAorI2luY2x1ZGUg
IkV4Y2VwdGlvbi5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKICNpbmNsdWRlICJKU0RP
TUNvbnZlcnRTZXF1ZW5jZXMuaCIKICNpbmNsdWRlICJKU1JlYWRhYmxlU3RyZWFtU2luay5oIgog
I2luY2x1ZGUgIkpTUmVhZGFibGVTdHJlYW1Tb3VyY2UuaCIKQEAgLTM1LDEwICszNywxMCBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotUmVmPFJlYWRhYmxl
U3RyZWFtPiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmIGxleGlj
YWxHbG9iYWxPYmplY3QsIFJlZlB0cjxSZWFkYWJsZVN0cmVhbVNvdXJjZT4mJiBzb3VyY2UpCitF
eGNlcHRpb25PcjxSZWY8UmVhZGFibGVTdHJlYW0+PiBSZWFkYWJsZVN0cmVhbTo6Y3JlYXRlKEpT
Qzo6SlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIFJlZlB0cjxSZWFkYWJsZVN0
cmVhbVNvdXJjZT4mJiBzb3VyY2UpCiB7CiAgICAgVk0mIHZtID0gbGV4aWNhbEdsb2JhbE9iamVj
dC52bSgpOwotICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NBVENIX1NDT1BFKHZtKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKICAgICBhdXRvJiBjbGllbnRE
YXRhID0gKnN0YXRpY19jYXN0PEpTVk1DbGllbnREYXRhKj4odm0uY2xpZW50RGF0YSk7CiAgICAg
YXV0byYgZ2xvYmFsT2JqZWN0ID0gKkpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4oJmxl
eGljYWxHbG9iYWxPYmplY3QpOwpAQCAtNTIsOSArNTQsMTEgQEAgUmVmPFJlYWRhYmxlU3RyZWFt
PiBSZWFkYWJsZVN0cmVhbTo6Y3JlYQogICAgIGFyZ3MuYXBwZW5kKHNvdXJjZSA/IHRvSlNOZXds
eUNyZWF0ZWQoJmxleGljYWxHbG9iYWxPYmplY3QsICZnbG9iYWxPYmplY3QsIHNvdXJjZS5yZWxl
YXNlTm9uTnVsbCgpKSA6IEpTQzo6anNVbmRlZmluZWQoKSk7CiAgICAgQVNTRVJUKCFhcmdzLmhh
c092ZXJmbG93ZWQoKSk7CiAKLSAgICBhdXRvIG5ld1JlYWRhYmxlU3RyZWFtID0ganNEeW5hbWlj
Q2FzdDxKU1JlYWRhYmxlU3RyZWFtKj4odm0sIEpTQzo6Y29uc3RydWN0KCZsZXhpY2FsR2xvYmFs
T2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJncykpOwotICAgIHNjb3BlLmFz
c2VydE5vRXhjZXB0aW9uKCk7CisgICAgSlNPYmplY3QqIG9iamVjdCA9IEpTQzo6Y29uc3RydWN0
KCZsZXhpY2FsR2xvYmFsT2JqZWN0LCBjb25zdHJ1Y3RvciwgY29uc3RydWN0RGF0YSwgYXJncyk7
CisgICAgQVNTRVJUKCEhc2NvcGUuZXhjZXB0aW9uKCkgPT0gIW9iamVjdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgRXhjZXB0aW9uIHsgRXhpc3RpbmdFeGNlcHRpb25FcnJvciB9
KTsKIAorICAgIGF1dG8gbmV3UmVhZGFibGVTdHJlYW0gPSBqc0R5bmFtaWNDYXN0PEpTUmVhZGFi
bGVTdHJlYW0qPih2bSwgb2JqZWN0KTsKICAgICByZXR1cm4gY3JlYXRlKGdsb2JhbE9iamVjdCwg
Km5ld1JlYWRhYmxlU3RyZWFtKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvUmVhZGFibGVTdHJlYW0uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9SZWFkYWJsZVN0cmVhbS5oCShyZXZpc2lvbiAyNjM4NTIpCisrKyBTb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9SZWFkYWJsZVN0cmVhbS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTctMjAyMCBBcHBsZSBJbmMuIEFsbCByaWdodHMg
cmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI1LDYgKzI1LDcg
QEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUg
IkpTRE9NQmluZGluZy5oIgogI2luY2x1ZGUgIkpTRE9NQ29udmVydC5oIgogI2luY2x1ZGUgIkpT
RE9NR3VhcmRlZE9iamVjdC5oIgpAQCAtMzksNyArNDAsNyBAQCBjbGFzcyBSZWFkYWJsZVN0cmVh
bSBmaW5hbCA6IHB1YmxpYyBET01HCiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxSZWFkYWJsZVN0
cmVhbT4gY3JlYXRlKEpTRE9NR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QsIEpTUmVhZGFibGVT
dHJlYW0mIHJlYWRhYmxlU3RyZWFtKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IFJlYWRhYmxlU3Ry
ZWFtKGdsb2JhbE9iamVjdCwgcmVhZGFibGVTdHJlYW0pKTsgfQogCi0gICAgc3RhdGljIFJlZjxS
ZWFkYWJsZVN0cmVhbT4gY3JlYXRlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBSZWZQdHI8UmVhZGFi
bGVTdHJlYW1Tb3VyY2U+JiYpOworICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8UmVhZGFibGVT
dHJlYW0+PiBjcmVhdGUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIFJlZlB0cjxSZWFkYWJsZVN0cmVh
bVNvdXJjZT4mJik7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0Rpc3R1cmJl
ZChKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKIAo=
</data>
<flag name="review"
          id="418752"
          type_id="1"
          status="+"
          setter="youennf"
    />
          </attachment>
      

    </bug>

</bugzilla>