<?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>213910</bug_id>
          
          <creation_ts>2020-07-02 17:46:07 -0700</creation_ts>
          <short_desc>Storage Access API: Add the capability to open a popup and get user interaction so we can call the Storage Access API as a quirk, on behalf of websites that should be doing it themselves</short_desc>
          <delta_ts>2020-08-11 10:58:55 -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 Misc.</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=214015</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="John Wilander">wilander</reporter>
          <assigned_to name="John Wilander">wilander</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mjs</cc>
    
    <cc>saam</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1668431</commentid>
    <comment_count>0</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-02 17:46:07 -0700</bug_when>
    <thetext>If the third-party requesting storage access has not yet received user interaction, we should help them by opening a popup to them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668432</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-07-02 17:46:52 -0700</bug_when>
    <thetext>&lt;rdar://problem/65058017&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668440</commentid>
    <comment_count>2</comment_count>
      <attachid>403425</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-02 18:02:40 -0700</bug_when>
    <thetext>Created attachment 403425
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668733</commentid>
    <comment_count>3</comment_count>
      <attachid>403425</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-03 21:58:31 -0700</bug_when>
    <thetext>Comment on attachment 403425
Patch

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

&gt; Source/WebCore/ChangeLog:11
&gt; +        This patch not only adds the capability but also adds a site-specific quirk for
&gt; +        the family of Kinja sites so that no previous user interaction with kinja.com
&gt; +        results in a login popup for kinja.com.

This is a particular long and elaborate quirk. We should figure out how to make it simpler and less sensitively dependent on the precise details of the current version of kinja.com, or we are likely to have to revise it.

&gt; Source/WebCore/ChangeLog:13
&gt; +        No new tests. This is for site-specific quirks.

Need to create a way to test these kinds of site-specific quirks with our automated regression tests. Not OK to just have them untested, especially when they are complex enough that someone could easily break them.

&gt; Source/WebCore/ChangeLog:17
&gt; +        * dom/Document.cpp:
&gt; +        (WebCore::Document::openForUserInteractionQuirk):
&gt; +            New function for quirk popups. It&apos;s basically a wrapper for DOMWindow::open().

We don’t need this wrapper in Document. The code in Quirks.cpp can call DOMWindow::open. Flowing through Document isn’t helpful.

&gt; Source/WebCore/page/Quirks.cpp:892
&gt; +                        // FIXME: Add appropriate logging.

I don’t think this FIXME should be here unless the logging is particularly important. We could add it, but why is it important?

&gt; Source/WebCore/page/Quirks.cpp:908
&gt; +                if (classNames.contains(&quot;js_switch-to-burner-login&quot;)
&gt; +                    || classNames.contains(&quot;js_header-userbutton&quot;)
&gt; +                    || classNames.contains(&quot;sc-1il3uru-3&quot;) || classNames.contains(&quot;cIhKfd&quot;)
&gt; +                    || classNames.contains(&quot;iyvn34-0&quot;) || classNames.contains(&quot;bYIjtl&quot;))

Formatting here seems a bit peculiar. Might be useful t have some comments explaining how we determined this is the correct list.

&gt; Source/WebCore/page/Quirks.cpp:914
&gt; +                if (element.tagName() == &quot;svg&quot;)

There is a more efficient way to do this check inside WebKit than calling tagName. I think it’s is&lt;SVGSVGElement&gt;.

&gt; Source/WebCore/page/Quirks.cpp:916
&gt; +                else if (element.tagName() == &quot;path&quot; &amp;&amp; element.parentElement() &amp;&amp; element.parentElement()-&gt;tagName() == &quot;svg&quot;)

is&lt;???PathElement&gt; should work here too.

Another benefit of is&lt;SVGSVGElement&gt; is that it will do a null check for you if you pass it a pointer.

&gt; Source/WebCore/page/Quirks.cpp:929
&gt; +                        // FIXME: Add appropriate logging.

I don’t think this FIXME should be here unless the logging is particularly important. We could add it, but why is it important?

&gt; Source/WebCore/page/Quirks.cpp:936
&gt; +                ExceptionOr&lt;RefPtr&lt;WindowProxy&gt;&gt; proxyOrException = m_document-&gt;openForUserInteractionQuirk(kinjaURL, loginPopupWindowFeatureString);
&gt; +                if (proxyOrException.hasException())
&gt; +                    return Quirks::StorageAccessResult::ShouldNotCancelEvent;

Putting the call to DOMWindow::open here would make not make the code appreciably more complex; perhaps simpler.

&gt; Source/WebCore/page/Quirks.cpp:943
&gt; +                        Ref&lt;DOMWrapperWorld&gt; world = ScriptController::createWorld(&quot;kinjaComQuirkWorld&quot;, ScriptController::WorldType::User);

auto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668734</commentid>
    <comment_count>4</comment_count>
      <attachid>403425</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-03 21:59:48 -0700</bug_when>
    <thetext>Comment on attachment 403425
Patch

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

&gt; Source/WebCore/page/Quirks.cpp:902
&gt; +            bool isRightElement = false;

Since the &quot;should apply quirk&quot; code is getting complex, I suggest factoring it into its own separate function. Then we’d use return statements instead of &quot;isRightElement&quot;. I think that would help separate concerns and make this easier to read.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1668928</commentid>
    <comment_count>5</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-05 14:49:22 -0700</bug_when>
    <thetext>Thanks, Darin! Your requests are all good enhancements and I will address them (except test which is more of an open question) before landing. I will also have a look at the Windows bot failure.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669162</commentid>
    <comment_count>6</comment_count>
      <attachid>403621</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-06 14:29:01 -0700</bug_when>
    <thetext>Created attachment 403621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669163</commentid>
    <comment_count>7</comment_count>
      <attachid>403621</attachid>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-06 14:29:27 -0700</bug_when>
    <thetext>Comment on attachment 403621
Patch

No review requested. Just waiting for EWS feedback.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669206</commentid>
    <comment_count>8</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-06 15:54:00 -0700</bug_when>
    <thetext>The Windows layout test failures look unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669208</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-07-06 16:01:22 -0700</bug_when>
    <thetext>Committed r263992: &lt;https://trac.webkit.org/changeset/263992&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 403621.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669213</commentid>
    <comment_count>10</comment_count>
      <attachid>403621</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-07-06 16:04:44 -0700</bug_when>
    <thetext>Comment on attachment 403621
Patch

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

&gt; Source/WebCore/page/Quirks.cpp:855
&gt; +bool Quirks::isKinjaLoginAvatarElement(const Element&amp; element) const

This should be a free function, not a Quirks member function.

    static bool isKinjaLoginAvatarElement(const Element&amp; element)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1669280</commentid>
    <comment_count>11</comment_count>
    <who name="John Wilander">wilander</who>
    <bug_when>2020-07-06 17:53:40 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #10)
&gt; Comment on attachment 403621 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=403621&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/page/Quirks.cpp:855
&gt; &gt; +bool Quirks::isKinjaLoginAvatarElement(const Element&amp; element) const
&gt; 
&gt; This should be a free function, not a Quirks member function.
&gt; 
&gt;     static bool isKinjaLoginAvatarElement(const Element&amp; element)

Fixed in https://trac.webkit.org/changeset/264001.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1679466</commentid>
    <comment_count>12</comment_count>
      <attachid>403621</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-08-11 10:58:55 -0700</bug_when>
    <thetext>Comment on attachment 403621
Patch

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

&gt; Source/WebCore/page/Quirks.cpp:951
&gt; +                    page-&gt;addUserScriptAwaitingNotification(world.get(), kinjaLoginUserScript);

I&apos;m curious why you used a user script awaiting notification here and WaitForNotificationBeforeInjecting::Yes.  That is a strange feature introduced for web extensions, and they are only notified in Mac Safari for the possibility that web extensions are installed.  Would using WaitForNotificationBeforeInjecting::No work?</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403425</attachid>
            <date>2020-07-02 18:02:40 -0700</date>
            <delta_ts>2020-07-06 14:28:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213910-20200702180240.patch</filename>
            <type>text/plain</type>
            <size>12841</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzODc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmYxOTliODY1NzEyN2Fm
Y2VkYjdiN2NjNzg1NGNlYTU4MDE5Y2VlZS4uYzUxOTQzOTU2NjcxMjdlZTFlODMwZmQ3NmU2NDhm
MDcxOWZlZDdkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDIwLTA3LTAyICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogQWRkIHRoZSBjYXBhYmlsaXR5IHRvIG9wZW4gYSBwb3B1cCBhbmQgZ2V0IHVzZXIgaW50
ZXJhY3Rpb24gc28gd2UgY2FuIGNhbGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBhcyBhIHF1aXJr
LCBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXMgdGhhdCBzaG91bGQgYmUgZG9pbmcgaXQgdGhlbXNlbHZl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTEw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTA1ODAxNz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG5vdCBvbmx5IGFkZHMgdGhl
IGNhcGFiaWxpdHkgYnV0IGFsc28gYWRkcyBhIHNpdGUtc3BlY2lmaWMgcXVpcmsgZm9yCisgICAg
ICAgIHRoZSBmYW1pbHkgb2YgS2luamEgc2l0ZXMgc28gdGhhdCBubyBwcmV2aW91cyB1c2VyIGlu
dGVyYWN0aW9uIHdpdGgga2luamEuY29tCisgICAgICAgIHJlc3VsdHMgaW4gYSBsb2dpbiBwb3B1
cCBmb3Iga2luamEuY29tLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBmb3Igc2l0
ZS1zcGVjaWZpYyBxdWlya3MuCisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om9wZW5Gb3JVc2VySW50ZXJhY3Rpb25RdWlyayk6CisgICAg
ICAgICAgICBOZXcgZnVuY3Rpb24gZm9yIHF1aXJrIHBvcHVwcy4gSXQncyBiYXNpY2FsbHkgYSB3
cmFwcGVyIGZvciBET01XaW5kb3c6Om9wZW4oKS4KKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoK
KyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpk
aXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAgICAgSnVzdCBhIGNoYW5nZSBpbiB0aGUgY2Fs
bCBpbnRvIHRoZSBxdWlyayBmdW5jdGlvbi4KKyAgICAgICAgKiBwYWdlL1F1aXJrcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWly
ayBjb25zdCk6CisgICAgICAgICAgICBOb3cgdGFrZXMgdGhlIHdob2xlIEVsZW1lbnQgdG8gYmUg
YWJsZSB0byBsb29rIGF0IGJvdGggY2xhc3NlcyBhbmQgYXR0cmlidXRlcy4KKyAgICAgICAgKiBw
YWdlL1F1aXJrcy5oOgorCiAyMDIwLTA3LTAyICBTaW1vbiBGcmFzZXIgIDxzaW1vbi5mcmFzZXJA
YXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JFU1NJT04ocjI2MDI3Nik6IG1lbnUgaXRlbXMgaW4g
Zm9vdGVyIG9mIGh0dHBzOi8vc2Fsby5haSBhcmUgaW52aXNpYmxlIHVudGlsIHlvdSBob3ZlciBv
ciByZXNpemUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IDViNjJlMmQ5NjAyNzE1YTYxNzE2
NzZkNzI4ZTg1OGM2NTQwNDQyNGUuLjBiOGZhMDQ4YzVmNDE3N2JjYjdiMWMzMTYxNzM2YWQ2M2Zk
ZTI3YjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtMjgxOSw2ICsyODE5LDE0IEBAIEV4
Y2VwdGlvbk9yPERvY3VtZW50Jj4gRG9jdW1lbnQ6Om9wZW5Gb3JCaW5kaW5ncyhEb2N1bWVudCog
cmVzcG9uc2libGVEb2N1bWVudCwKICAgICByZXR1cm4gKnRoaXM7CiB9CiAKK0V4Y2VwdGlvbk9y
PFJlZlB0cjxXaW5kb3dQcm94eT4+IERvY3VtZW50OjpvcGVuRm9yVXNlckludGVyYWN0aW9uUXVp
cmsoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgd2luZG93RmVhdHVyZXNTdHJpbmcpCit7
CisgICAgaWYgKCFtX2RvbVdpbmRvdykKKyAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IEludmFs
aWRBY2Nlc3NFcnJvciB9OworCisgICAgcmV0dXJuIG1fZG9tV2luZG93LT5vcGVuKCptX2RvbVdp
bmRvdywgKm1fZG9tV2luZG93LCB1cmwuc3RyaW5nKCksIGVtcHR5U3RyaW5nKCksIHdpbmRvd0Zl
YXR1cmVzU3RyaW5nKTsKK30KKwogRXhjZXB0aW9uT3I8dm9pZD4gRG9jdW1lbnQ6Om9wZW4oRG9j
dW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1lbnQpCiB7CiAgICAgaWYgKHJlc3BvbnNpYmxlRG9jdW1l
bnQgJiYgIXJlc3BvbnNpYmxlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkuaXNTYW1lT3JpZ2lu
QXMoc2VjdXJpdHlPcmlnaW4oKSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGJiNTQ5NzAwZWU2
ZmRkNmViOTgyNTNhZjM3MjY0NTM0ZDhkOTBhNWEuLmNhNmIwNzcwNmZjZjQ4NWUyMzk0YTE2ODZk
ODY1NDg0NWJlY2E3OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC02NjQsNiArNjY0LDcgQEAg
cHVibGljOgogCiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9uT3I8UmVmUHRyPFdpbmRvd1By
b3h5Pj4gb3BlbkZvckJpbmRpbmdzKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cm
IGZpcnN0RE9NV2luZG93LCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgQXRvbVN0cmluZyYgbmFt
ZSwgY29uc3QgU3RyaW5nJiBmZWF0dXJlcyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgRXhjZXB0aW9u
T3I8RG9jdW1lbnQmPiBvcGVuRm9yQmluZGluZ3MoRG9jdW1lbnQqIHJlc3BvbnNpYmxlRG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYpOworICAgIEV4Y2VwdGlvbk9yPFJlZlB0
cjxXaW5kb3dQcm94eT4+IG9wZW5Gb3JVc2VySW50ZXJhY3Rpb25RdWlyayhjb25zdCBVUkwmLCBj
b25zdCBTdHJpbmcmIHdpbmRvd0ZlYXR1cmVzU3RyaW5nKTsKIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgcmVuYW1lIHRoaXMgYXQgc29tZSBwb2ludCBhbmQgZ2l2ZSBiYWNrIHRoZSBuYW1lICdv
cGVuJyB0byB0aGUgSFRNTCBzcGVjaWZpZWQgb25lcy4KICAgICBXRUJDT1JFX0VYUE9SVCBFeGNl
cHRpb25Pcjx2b2lkPiBvcGVuKERvY3VtZW50KiByZXNwb25zaWJsZURvY3VtZW50ID0gbnVsbHB0
cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggNzU3OGQwY2M1MGQ1NWNmNzhiZjFlMjFjZTdi
MTE3ZDY0YjA4YjVkNS4uNGEwZWZlMjllNDgyNmIyNTA2YWQ0NjI1ZjQ5ZDJhNGVmNGNiMGY4MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMzYyLDcgKzM2Miw3IEBAIGJvb2wgRWxlbWVudDo6
ZGlzcGF0Y2hNb3VzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgcGxhdGZvcm1FdmVu
dCwgY29uc3QKICAgICBpZiAoZGlzcGF0Y2hQb2ludGVyRXZlbnRJZk5lZWRlZCgqdGhpcywgbW91
c2VFdmVudC5nZXQoKSwgcGxhdGZvcm1FdmVudCwgZGlkTm90U3dhbGxvd0V2ZW50KSA9PSBTaG91
bGRJZ25vcmVNb3VzZUV2ZW50OjpZZXMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlm
IChoYXNDbGFzcygpICYmIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkQ2FuY2Vs
RXZlbnQgPT0gZG9jdW1lbnQoKS5xdWlya3MoKS50cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNz
UXVpcmsoZXZlbnRUeXBlLCBjbGFzc05hbWVzKCkpKQorICAgIGlmIChRdWlya3M6OlN0b3JhZ2VB
Y2Nlc3NSZXN1bHQ6OlNob3VsZENhbmNlbEV2ZW50ID09IGRvY3VtZW50KCkucXVpcmtzKCkudHJp
Z2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1aXJrKCp0aGlzLCBldmVudFR5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKICAgICBBU1NFUlQoIW1vdXNlRXZlbnQtPnRhcmdldCgpIHx8IG1v
dXNlRXZlbnQtPnRhcmdldCgpICE9IHJlbGF0ZWRUYXJnZXQpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3Bw
CmluZGV4IDg5MTFmOWUxMWI0MDNmZWFhYTlkZWVhN2ZmMDhmODA5ZDgzZmFjMTcuLmI1YmE3NWMw
Y2MwODg1OWJhODBkYWIwYjBjOGY0NTFmMjk0ZDI1NGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUXVpcmtzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAK
QEAgLTI2LDYgKzI2LDcgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJRdWlya3Mu
aCIKIAorI2luY2x1ZGUgIkF0dHIuaCIKICNpbmNsdWRlICJET01Ub2tlbkxpc3QuaCIKICNpbmNs
dWRlICJET01XaW5kb3cuaCIKICNpbmNsdWRlICJEb2N1bWVudC5oIgpAQCAtMzksMTEgKzQwLDE3
IEBACiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNsdWRlICJKU0V2ZW50TGlz
dGVuZXIuaCIKICNpbmNsdWRlICJMYXlvdXRVbml0LmgiCisjaW5jbHVkZSAiTmFtZWROb2RlTWFw
LmgiCiAjaW5jbHVkZSAiUmVzb3VyY2VMb2FkT2JzZXJ2ZXIuaCIKICNpbmNsdWRlICJSdW50aW1l
RW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgorI2luY2x1
ZGUgIlNjcmlwdFNvdXJjZUNvZGUuaCIKICNpbmNsdWRlICJTZXR0aW5ncy5oIgogI2luY2x1ZGUg
IlNwYWNlU3BsaXRTdHJpbmcuaCIKICNpbmNsdWRlICJVc2VyQWdlbnQuaCIKKyNpbmNsdWRlICJV
c2VyQ29udGVudFR5cGVzLmgiCisjaW5jbHVkZSAiVXNlclNjcmlwdC5oIgorI2luY2x1ZGUgIlVz
ZXJTY3JpcHRUeXBlcy5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTg0Miw3ICs4NDks
NyBAQCBib29sIFF1aXJrczo6c2hvdWxkQXZvaWRQYXN0aW5nSW1hZ2VzQXNXZWJDb250ZW50KCkg
Y29uc3QKICNlbmRpZgogfQogCi1RdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQgUXVpcmtzOjp0
cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRU
eXBlLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKSBjb25zdAorUXVpcmtzOjpT
dG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSkg
Y29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlmICgh
bmVlZHNRdWlya3MoKSkKQEAgLTg2NSwzMSArODcyLDgyIEBAIFF1aXJrczo6U3RvcmFnZUFjY2Vz
c1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBB
dG9tCiAgICAgICAgIHNldC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0ZUZy
b21SZWdpc3RyYWJsZURvbWFpblN0cmluZygidGhlaW52ZW50b3J5LmNvbSJfcykpOwogICAgICAg
ICByZXR1cm4gc2V0OwogICAgIH0oKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVnaXN0
cmFibGVEb21haW4+IGtpbmphRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENy
ZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygia2luamEuY29tIl9zKTsKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBraW5qYVVSTCA9IFVSTChVUkwoKSwgImh0dHBzOi8va2lu
amEuY29tIik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWluPiBr
aW5qYURvbWFpbiB7IGtpbmphVVJMIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVn
aXN0cmFibGVEb21haW4+IHlvdVR1YmVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5jaGVj
a2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ5b3V0dWJlLmNvbSJfcyk7Cisg
ICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbG9naW5Qb3B1cFdpbmRvd0Zl
YXR1cmVTdHJpbmcgPSAidG9vbGJhcj1ubyxsb2NhdGlvbj15ZXMsZGlyZWN0b3JpZXM9bm8sc3Rh
dHVzPW5vLG1lbnViYXI9bm8sc2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcyxjb3B5aGlzdG9y
eT1ubyx3aWR0aD01OTksaGVpZ2h0PTYwMCx0b3A9NDIwLGxlZnQ9OTgwLjUiX3M7CisKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJTY3JpcHQgeyAi
ZnVuY3Rpb24gdHJpZ2dlckxvZ2luRm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQuZ2V0
RWxlbWVudHNCeUNsYXNzTmFtZSgnanNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYgKGVsZW1lbnRz
ICYmIGVsZW1lbnRzWzBdKSB7IGVsZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50ZXJ2YWwoaW50
ZXJ2YWwpOyB9IH0gbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxvZ2luRm9ybSwg
MjAwKTsiLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9yPFN0
cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29udGVu
dEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNhdGlv
bkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKICAgICBpZiAoZXZlbnRUeXBlID09ICJjbGljayIp
IHsKIAogICAgICAgICAvLyBFbWJlZGRlZCBZb3VUdWJlIGNhc2UuCi0gICAgICAgIGlmIChkb21h
aW4gPT0geW91VHViZURvbWFpbiAmJiAhbV9kb2N1bWVudC0+aXNUb3BEb2N1bWVudCgpICYmIFJl
c291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oeW91VHVi
ZURvbWFpbikgJiYgKGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikg
fHwgY2xhc3NOYW1lcy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSkpIHsKLSAgICAg
ICAgICAgIGlmIChSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlckludGVy
YWN0aW9uKHlvdVR1YmVEb21haW4pKSB7Ci0gICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9yYWdl
QWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmsoKm1fZG9jdW1lbnQs
IFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8vIEZJ
WE1FOiBBZGQgYXBwcm9wcmlhdGUgbG9nZ2luZy4KLSAgICAgICAgICAgICAgICB9KTsKLSAgICAg
ICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGROb3RD
YW5jZWxFdmVudDsKKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBkb21haW4gPT0g
eW91VHViZURvbWFpbiAmJiAhbV9kb2N1bWVudC0+aXNUb3BEb2N1bWVudCgpICYmIFJlc291cmNl
TG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oeW91VHViZURvbWFp
bikpIHsKKyAgICAgICAgICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFtZXMo
KTsKKyAgICAgICAgICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0ZXIt
aWNvbiIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikpIHsK
KyAgICAgICAgICAgICAgICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhhc0hh
ZFVzZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgeworICAgICAgICAgICAgICAgICAgICBE
b2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRRdWly
aygqbV9kb2N1bWVudCwgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIEZJWE1FOiBBZGQgYXBwcm9wcmlhdGUgbG9nZ2luZy4KKyAgICAgICAg
ICAgICAgICAgICAgfSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3Jh
Z2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50OworICAgICAgICAgICAgICAgIH0K
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NS
ZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gS2lu
amEgYnVybmVyIGFjY291bnQgbG9naW4gY2FzZS4KLSAgICAgICAgaWYgKGtpbmphUXVpcmtzLmdl
dCgpLmNvbnRhaW5zKGRvbWFpbikgJiYgY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRv
LWJ1cm5lci1sb2dpbiIpKSB7Ci0gICAgICAgICAgICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6
OnNoYXJlZCgpLmhhc0hhZFVzZXJJbnRlcmFjdGlvbihraW5qYURvbWFpbikpIHsKLSAgICAgICAg
ICAgICAgICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yTm9u
RG9jdW1lbnRRdWlyaygqbV9kb2N1bWVudCwga2luamFEb21haW4uZ2V0KCkuaXNvbGF0ZWRDb3B5
KCksIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgYXBwcm9wcmlhdGUgbG9nZ2luZy4KLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRO
b3RDYW5jZWxFdmVudDsKKyAgICAgICAgLy8gS2luamEgbG9naW4gY2FzZS4KKyAgICAgICAgaWYg
KGtpbmphUXVpcmtzLmdldCgpLmNvbnRhaW5zKGRvbWFpbikpIHsKKyAgICAgICAgICAgIGJvb2wg
aXNSaWdodEVsZW1lbnQgPSBmYWxzZTsKKyAgICAgICAgICAgIGlmIChlbGVtZW50Lmhhc0NsYXNz
KCkpIHsKKyAgICAgICAgICAgICAgICBhdXRvJiBjbGFzc05hbWVzID0gZWxlbWVudC5jbGFzc05h
bWVzKCk7CisgICAgICAgICAgICAgICAgaWYgKGNsYXNzTmFtZXMuY29udGFpbnMoImpzX3N3aXRj
aC10by1idXJuZXItbG9naW4iKQorICAgICAgICAgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNv
bnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRvbiIpCisgICAgICAgICAgICAgICAgICAgIHx8IGNs
YXNzTmFtZXMuY29udGFpbnMoInNjLTFpbDN1cnUtMyIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMo
ImNJaEtmZCIpCisgICAgICAgICAgICAgICAgICAgIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoIml5
dm4zNC0wIikgfHwgY2xhc3NOYW1lcy5jb250YWlucygiYllJanRsIikpCisgICAgICAgICAgICAg
ICAgICAgIGlzUmlnaHRFbGVtZW50ID0gdHJ1ZTsKKyAgICAgICAgICAgIH0KKworICAgICAgICAg
ICAgaWYgKCFpc1JpZ2h0RWxlbWVudCkgeworICAgICAgICAgICAgICAgIGNvbnN0IEVsZW1lbnQq
IHN2Z0VsZW1lbnQgPSBudWxscHRyOworICAgICAgICAgICAgICAgIGlmIChlbGVtZW50LnRhZ05h
bWUoKSA9PSAic3ZnIikKKyAgICAgICAgICAgICAgICAgICAgc3ZnRWxlbWVudCA9ICZlbGVtZW50
OworICAgICAgICAgICAgICAgIGVsc2UgaWYgKGVsZW1lbnQudGFnTmFtZSgpID09ICJwYXRoIiAm
JiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKSAmJiBlbGVtZW50LnBhcmVudEVsZW1lbnQoKS0+dGFn
TmFtZSgpID09ICJzdmciKQorICAgICAgICAgICAgICAgICAgICBzdmdFbGVtZW50ID0gZWxlbWVu
dC5wYXJlbnRFbGVtZW50KCk7CisKKyAgICAgICAgICAgICAgICBpZiAoc3ZnRWxlbWVudCAmJiBz
dmdFbGVtZW50LT5oYXNBdHRyaWJ1dGVzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBh
cmlhTGFiZWxBdHRyID0gc3ZnRWxlbWVudC0+YXR0cmlidXRlcygpLmdldE5hbWVkSXRlbSgiYXJp
YS1sYWJlbCIpOworICAgICAgICAgICAgICAgICAgICBpZiAoYXJpYUxhYmVsQXR0ciAmJiBhcmlh
TGFiZWxBdHRyLT52YWx1ZSgpID09ICJVc2VyRmlsbGVkIGljb24iKQorICAgICAgICAgICAgICAg
ICAgICAgICAgaXNSaWdodEVsZW1lbnQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgaWYgKGlzUmlnaHRFbGVtZW50KSB7
CisgICAgICAgICAgICAgICAgaWYgKFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNI
YWRVc2VySW50ZXJhY3Rpb24oa2luamFEb21haW4pKSB7CisgICAgICAgICAgICAgICAgICAgIERv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1
aXJrKCptX2RvY3VtZW50LCBraW5qYURvbWFpbi5nZXQoKS5pc29sYXRlZENvcHkoKSwgW10oU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1F
OiBBZGQgYXBwcm9wcmlhdGUgbG9nZ2luZy4KKyAgICAgICAgICAgICAgICAgICAgfSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3Vs
ZE5vdENhbmNlbEV2ZW50OworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIEV4
Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IHByb3h5T3JFeGNlcHRpb24gPSBtX2RvY3Vt
ZW50LT5vcGVuRm9yVXNlckludGVyYWN0aW9uUXVpcmsoa2luamFVUkwsIGxvZ2luUG9wdXBXaW5k
b3dGZWF0dXJlU3RyaW5nKTsKKyAgICAgICAgICAgICAgICBpZiAocHJveHlPckV4Y2VwdGlvbi5o
YXNFeGNlcHRpb24oKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFn
ZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisgICAgICAgICAgICAgICAgYXV0
byBwcm94eSA9IHByb3h5T3JFeGNlcHRpb24ucmVsZWFzZVJldHVyblZhbHVlKCk7CisKKyAgICAg
ICAgICAgICAgICBhdXRvKiBhYnN0cmFjdEZyYW1lID0gcHJveHktPmZyYW1lKCk7CisgICAgICAg
ICAgICAgICAgaWYgKGFic3RyYWN0RnJhbWUgJiYgaXM8RnJhbWU+KCphYnN0cmFjdEZyYW1lKSkg
eworICAgICAgICAgICAgICAgICAgICBhdXRvJiBmcmFtZSA9IGRvd25jYXN0PEZyYW1lPigqYWJz
dHJhY3RGcmFtZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChhdXRvKiBwYWdlID0gZnJhbWUu
cGFnZSgpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBSZWY8RE9NV3JhcHBlcldvcmxkPiB3
b3JsZCA9IFNjcmlwdENvbnRyb2xsZXI6OmNyZWF0ZVdvcmxkKCJraW5qYUNvbVF1aXJrV29ybGQi
LCBTY3JpcHRDb250cm9sbGVyOjpXb3JsZFR5cGU6OlVzZXIpOworICAgICAgICAgICAgICAgICAg
ICAgICAgcGFnZS0+YWRkVXNlclNjcmlwdEF3YWl0aW5nTm90aWZpY2F0aW9uKHdvcmxkLmdldCgp
LCBraW5qYUxvZ2luVXNlclNjcmlwdCk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICB9CisKKyAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNz
UmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8v
IEZJWE1FOiBUYWtlIHRoZSB1c2VyIHRvIGtpbmphLmNvbSBpbiB0aGUgZWxzZSBjYXNlLgorICAg
ICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2Fu
Y2VsRXZlbnQ7CiAgICAgICAgIH0KICAgICB9CiAjZWxzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXgg
MDU2MDk3ODBhZTliYTBiNGQ4MjViYjk5YTBiY2ViYjU3ZjA5NTliYy4uYmVhNzc2NTdhYjk3ZGUw
M2YxZWViODY2MzA1MTJiMGZkYjRlMGNiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0zNiw3ICsz
Niw2IEBAIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEhU
TUxFbGVtZW50OwogY2xhc3MgTGF5b3V0VW5pdDsKLWNsYXNzIFNwYWNlU3BsaXRTdHJpbmc7CiAK
IGNsYXNzIFF1aXJrcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUXVpcmtzKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMDcsNyArMTA2LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c2hvdWxkQXZvaWRQYXN0aW5nSW1hZ2VzQXNXZWJDb250ZW50KCkgY29uc3Q7CiAKICAgICBlbnVt
IFN0b3JhZ2VBY2Nlc3NSZXN1bHQgOiBib29sIHsgU2hvdWxkTm90Q2FuY2VsRXZlbnQsIFNob3Vs
ZENhbmNlbEV2ZW50IH07Ci0gICAgU3RvcmFnZUFjY2Vzc1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxT
dG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTcGFj
ZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKSBjb25zdDsKKyAgICBTdG9yYWdlQWNjZXNzUmVzdWx0
IHRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBFbGVtZW50JiwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIG5lZWRz
UXVpcmtzKCkgY29uc3Q7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>403621</attachid>
            <date>2020-07-06 14:29:01 -0700</date>
            <delta_ts>2020-07-06 16:01:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213910-20200706142900.patch</filename>
            <type>text/plain</type>
            <size>11132</size>
            <attacher name="John Wilander">wilander</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzOTg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDIwMmUxZjUzNWRlNzIw
M2Y3OWE1NWI5ODRlMjY3NjMzZWE2NWEzMy4uNzBmNzFmYzc0NTkwNDk2MDdiNDc1MGRkNzIzY2U0
YWU2YjdhMjIyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDIwLTA3LTA2ICBKb2hu
IFdpbGFuZGVyICA8d2lsYW5kZXJAYXBwbGUuY29tPgorCisgICAgICAgIFN0b3JhZ2UgQWNjZXNz
IEFQSTogQWRkIHRoZSBjYXBhYmlsaXR5IHRvIG9wZW4gYSBwb3B1cCBhbmQgZ2V0IHVzZXIgaW50
ZXJhY3Rpb24gc28gd2UgY2FuIGNhbGwgdGhlIFN0b3JhZ2UgQWNjZXNzIEFQSSBhcyBhIHF1aXJr
LCBvbiBiZWhhbGYgb2Ygd2Vic2l0ZXMgdGhhdCBzaG91bGQgYmUgZG9pbmcgaXQgdGhlbXNlbHZl
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEzOTEw
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82NTA1ODAxNz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBEYXJpbiBBZGxlci4KKworICAgICAgICBUaGlzIHBhdGNoIG5vdCBvbmx5IGFkZHMgdGhlIGNh
cGFiaWxpdHkgYnV0IGFsc28gYWRkcyBhIHNpdGUtc3BlY2lmaWMgcXVpcmsgZm9yCisgICAgICAg
IHRoZSBmYW1pbHkgb2YgS2luamEgc2l0ZXMgc28gdGhhdCBubyBwcmV2aW91cyB1c2VyIGludGVy
YWN0aW9uIHdpdGgga2luamEuY29tCisgICAgICAgIHJlc3VsdHMgaW4gYSBsb2dpbiBwb3B1cCBm
b3Iga2luamEuY29tLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cy4gVGhpcyBpcyBmb3Igc2l0ZS1z
cGVjaWZpYyBxdWlya3MuCisKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpFbGVtZW50OjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAgICAgSnVzdCBh
IGNoYW5nZSBpbiB0aGUgY2FsbCBpbnRvIHRoZSBxdWlyayBmdW5jdGlvbi4KKyAgICAgICAgKiBw
YWdlL1F1aXJrcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpRdWlya3M6OmlzS2luamFMb2dpbkF2
YXRhckVsZW1lbnQgY29uc3QpOgorICAgICAgICAgICAgQ29udmVuaWVuY2UgZnVuY3Rpb24gZm9y
IHRlbGxpbmcgaWYgdGhlIGdpdmVuIGVsZW1lbnQgaXMgdGhlIEtpbmphIGxvZ2luIGF2YXRhci4K
KyAgICAgICAgKFdlYkNvcmU6OlF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vzc1F1
aXJrIGNvbnN0KToKKyAgICAgICAgICAgIE5vdyB0YWtlcyB0aGUgd2hvbGUgRWxlbWVudCB0byBi
ZSBhYmxlIHRvIGxvb2sgYXQgYm90aCBjbGFzc2VzIGFuZCBhdHRyaWJ1dGVzLgorICAgICAgICAq
IHBhZ2UvUXVpcmtzLmg6CisKIDIwMjAtMDctMDYgIFNpbW9uIEZyYXNlciAgPHNpbW9uLmZyYXNl
ckBhcHBsZS5jb20+CiAKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCkgaW4gRXZlbnRSZWdp
b25Db250ZXh0Ojpwb3BDbGlwKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAppbmRleCA3NTc4ZDBjYzUw
ZDU1Y2Y3OGJmMWUyMWNlN2IxMTdkNjRiMDhiNWQ1Li40YTBlZmUyOWU0ODI2YjI1MDZhZDQ2MjVm
NDlkMmE0ZWY0Y2IwZjgyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCkBAIC0zNjIsNyArMzYyLDcg
QEAgYm9vbCBFbGVtZW50OjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgUGxhdGZvcm1Nb3VzZUV2
ZW50JiBwbGF0Zm9ybUV2ZW50LCBjb25zdAogICAgIGlmIChkaXNwYXRjaFBvaW50ZXJFdmVudElm
TmVlZGVkKCp0aGlzLCBtb3VzZUV2ZW50LmdldCgpLCBwbGF0Zm9ybUV2ZW50LCBkaWROb3RTd2Fs
bG93RXZlbnQpID09IFNob3VsZElnbm9yZU1vdXNlRXZlbnQ6OlllcykKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKGhhc0NsYXNzKCkgJiYgUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVz
dWx0OjpTaG91bGRDYW5jZWxFdmVudCA9PSBkb2N1bWVudCgpLnF1aXJrcygpLnRyaWdnZXJPcHRp
b25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhldmVudFR5cGUsIGNsYXNzTmFtZXMoKSkpCisgICAgaWYg
KFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkQ2FuY2VsRXZlbnQgPT0gZG9jdW1l
bnQoKS5xdWlya3MoKS50cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoKnRoaXMsIGV2
ZW50VHlwZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEFTU0VSVCghbW91c2VFdmVu
dC0+dGFyZ2V0KCkgfHwgbW91c2VFdmVudC0+dGFyZ2V0KCkgIT0gcmVsYXRlZFRhcmdldCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1F1aXJrcy5jcHAKaW5kZXggODkxMWY5ZTExYjQwM2ZlYWFhOWRlZWE3ZmYwOGY4MDlk
ODNmYWMxNy4uYjQxMjhiNWFkMDY1ZDhlYWI3MTJiNDQ2YjRiOTdhYmNhMTdmNDhhNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9RdWlya3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvUXVpcmtzLmNwcApAQCAtMjYsNiArMjYsNyBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgog
I2luY2x1ZGUgIlF1aXJrcy5oIgogCisjaW5jbHVkZSAiQXR0ci5oIgogI2luY2x1ZGUgIkRPTVRv
a2VuTGlzdC5oIgogI2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkRvY3VtZW50Lmgi
CkBAIC0zOSwxMSArNDAsMTkgQEAKICNpbmNsdWRlICJIVE1MT2JqZWN0RWxlbWVudC5oIgogI2lu
Y2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgogI2luY2x1ZGUgIkxheW91dFVuaXQuaCIKKyNpbmNs
dWRlICJOYW1lZE5vZGVNYXAuaCIKICNpbmNsdWRlICJSZXNvdXJjZUxvYWRPYnNlcnZlci5oIgog
I2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTVkdQYXRoRWxl
bWVudC5oIgorI2luY2x1ZGUgIlNWR1NWR0VsZW1lbnQuaCIKKyNpbmNsdWRlICJTY3JpcHRDb250
cm9sbGVyLmgiCisjaW5jbHVkZSAiU2NyaXB0U291cmNlQ29kZS5oIgogI2luY2x1ZGUgIlNldHRp
bmdzLmgiCiAjaW5jbHVkZSAiU3BhY2VTcGxpdFN0cmluZy5oIgogI2luY2x1ZGUgIlVzZXJBZ2Vu
dC5oIgorI2luY2x1ZGUgIlVzZXJDb250ZW50VHlwZXMuaCIKKyNpbmNsdWRlICJVc2VyU2NyaXB0
LmgiCisjaW5jbHVkZSAiVXNlclNjcmlwdFR5cGVzLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IApAQCAtODQyLDcgKzg1MSwzNyBAQCBib29sIFF1aXJrczo6c2hvdWxkQXZvaWRQYXN0aW5nSW1h
Z2VzQXNXZWJDb250ZW50KCkgY29uc3QKICNlbmRpZgogfQogCi1RdWlya3M6OlN0b3JhZ2VBY2Nl
c3NSZXN1bHQgUXVpcmtzOjp0cmlnZ2VyT3B0aW9uYWxTdG9yYWdlQWNjZXNzUXVpcmsoY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTcGFjZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVz
KSBjb25zdAorI2lmIEVOQUJMRShSRVNPVVJDRV9MT0FEX1NUQVRJU1RJQ1MpCitib29sIFF1aXJr
czo6aXNLaW5qYUxvZ2luQXZhdGFyRWxlbWVudChjb25zdCBFbGVtZW50JiBlbGVtZW50KSBjb25z
dAoreworICAgIC8vIFRoZSBjbGljayBldmVudCBoYW5kbGVyIGhhcyBiZWVuIGZvdW5kIHRvIHRy
aWdnZXIgb24gYSBkaXYgb3IKKyAgICAvLyBzcGFuIHdpdGggdGhlc2UgY2xhc3MgbmFtZXMsIG9y
IHRoZSBzdmcsIG9yIHRoZSBzdmcncyBwYXRoLgorICAgIGlmIChlbGVtZW50Lmhhc0NsYXNzKCkp
IHsKKyAgICAgICAgYXV0byYgY2xhc3NOYW1lcyA9IGVsZW1lbnQuY2xhc3NOYW1lcygpOworICAg
ICAgICBpZiAoY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dpbiIp
CisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJqc19oZWFkZXItdXNlcmJ1dHRv
biIpCisgICAgICAgICAgICB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJzYy0xaWwzdXJ1LTMiKSB8
fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJjSWhLZmQiKQorICAgICAgICAgICAgfHwgY2xhc3NOYW1l
cy5jb250YWlucygiaXl2bjM0LTAiKSB8fCBjbGFzc05hbWVzLmNvbnRhaW5zKCJiWUlqdGwiKSkK
KyAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIGNvbnN0IEVsZW1lbnQqIHN2
Z0VsZW1lbnQgPSBudWxscHRyOworICAgIGlmIChpczxTVkdTVkdFbGVtZW50PihlbGVtZW50KSkK
KyAgICAgICAgc3ZnRWxlbWVudCA9ICZlbGVtZW50OworICAgIGVsc2UgaWYgKGlzPFNWR1BhdGhF
bGVtZW50PihlbGVtZW50KSAmJiBpczxTVkdTVkdFbGVtZW50PihlbGVtZW50LnBhcmVudEVsZW1l
bnQoKSkpCisgICAgICAgIHN2Z0VsZW1lbnQgPSBlbGVtZW50LnBhcmVudEVsZW1lbnQoKTsKKwor
ICAgIGlmIChzdmdFbGVtZW50ICYmIHN2Z0VsZW1lbnQtPmhhc0F0dHJpYnV0ZXMoKSkgeworICAg
ICAgICBhdXRvIGFyaWFMYWJlbEF0dHIgPSBzdmdFbGVtZW50LT5hdHRyaWJ1dGVzKCkuZ2V0TmFt
ZWRJdGVtKCJhcmlhLWxhYmVsIik7CisgICAgICAgIGlmIChhcmlhTGFiZWxBdHRyICYmIGFyaWFM
YWJlbEF0dHItPnZhbHVlKCkgPT0gIlVzZXJGaWxsZWQgaWNvbiIpCisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICB9CisKKyAgICByZXR1cm4gZmFsc2U7Cit9CisjZW5kaWYKKworUXVpcmtz
OjpTdG9yYWdlQWNjZXNzUmVzdWx0IFF1aXJrczo6dHJpZ2dlck9wdGlvbmFsU3RvcmFnZUFjY2Vz
c1F1aXJrKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlw
ZSkgY29uc3QKIHsKICNpZiBFTkFCTEUoUkVTT1VSQ0VfTE9BRF9TVEFUSVNUSUNTKQogICAgIGlm
ICghbmVlZHNRdWlya3MoKSkKQEAgLTg2NSwzNiArOTA0LDU5IEBAIFF1aXJrczo6U3RvcmFnZUFj
Y2Vzc1Jlc3VsdCBRdWlya3M6OnRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25z
dCBBdG9tCiAgICAgICAgIHNldC5hZGQoUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tlZENyZWF0
ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygidGhlaW52ZW50b3J5LmNvbSJfcykpOwogICAg
ICAgICByZXR1cm4gc2V0OwogICAgIH0oKTsKLSAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8UmVn
aXN0cmFibGVEb21haW4+IGtpbmphRG9tYWluID0gUmVnaXN0cmFibGVEb21haW46OnVuY2hlY2tl
ZENyZWF0ZUZyb21SZWdpc3RyYWJsZURvbWFpblN0cmluZygia2luamEuY29tIl9zKTsKKyAgICBz
dGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VVJMPiBraW5qYVVSTCA9IFVSTChVUkwoKSwgImh0dHBzOi8v
a2luamEuY29tIik7CisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFJlZ2lzdHJhYmxlRG9tYWlu
PiBraW5qYURvbWFpbiB7IGtpbmphVVJMIH07CiAKICAgICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8
UmVnaXN0cmFibGVEb21haW4+IHlvdVR1YmVEb21haW4gPSBSZWdpc3RyYWJsZURvbWFpbjo6dW5j
aGVja2VkQ3JlYXRlRnJvbVJlZ2lzdHJhYmxlRG9tYWluU3RyaW5nKCJ5b3V0dWJlLmNvbSJfcyk7
CisgICAgCisgICAgc3RhdGljIE5ldmVyRGVzdHJveWVkPFN0cmluZz4gbG9naW5Qb3B1cFdpbmRv
d0ZlYXR1cmVTdHJpbmcgPSAidG9vbGJhcj1ubyxsb2NhdGlvbj15ZXMsZGlyZWN0b3JpZXM9bm8s
c3RhdHVzPW5vLG1lbnViYXI9bm8sc2Nyb2xsYmFycz15ZXMscmVzaXphYmxlPXllcyxjb3B5aGlz
dG9yeT1ubyx3aWR0aD01OTksaGVpZ2h0PTYwMCx0b3A9NDIwLGxlZnQ9OTgwLjUiX3M7CisKKyAg
ICBzdGF0aWMgTmV2ZXJEZXN0cm95ZWQ8VXNlclNjcmlwdD4ga2luamFMb2dpblVzZXJTY3JpcHQg
eyAiZnVuY3Rpb24gdHJpZ2dlckxvZ2luRm9ybSgpIHsgbGV0IGVsZW1lbnRzID0gZG9jdW1lbnQu
Z2V0RWxlbWVudHNCeUNsYXNzTmFtZSgnanNfaGVhZGVyLXVzZXJidXR0b24nKTsgaWYgKGVsZW1l
bnRzICYmIGVsZW1lbnRzWzBdKSB7IGVsZW1lbnRzWzBdLmNsaWNrKCk7IGNsZWFySW50ZXJ2YWwo
aW50ZXJ2YWwpOyB9IH0gbGV0IGludGVydmFsID0gc2V0SW50ZXJ2YWwodHJpZ2dlckxvZ2luRm9y
bSwgMjAwKTsiLCBVUkwoYWJvdXRCbGFua1VSTCgpKSwgVmVjdG9yPFN0cmluZz4oKSwgVmVjdG9y
PFN0cmluZz4oKSwgVXNlclNjcmlwdEluamVjdGlvblRpbWU6OkRvY3VtZW50RW5kLCBVc2VyQ29u
dGVudEluamVjdGVkRnJhbWVzOjpJbmplY3RJblRvcEZyYW1lT25seSwgV2FpdEZvck5vdGlmaWNh
dGlvbkJlZm9yZUluamVjdGluZzo6WWVzIH07CiAKICAgICBpZiAoZXZlbnRUeXBlID09ICJjbGlj
ayIpIHsKIAogICAgICAgICAvLyBFbWJlZGRlZCBZb3VUdWJlIGNhc2UuCi0gICAgICAgIGlmIChk
b21haW4gPT0geW91VHViZURvbWFpbiAmJiAhbV9kb2N1bWVudC0+aXNUb3BEb2N1bWVudCgpICYm
IFJlc291cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oeW91
VHViZURvbWFpbikgJiYgKGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29u
IikgfHwgY2xhc3NOYW1lcy5jb250YWlucygieXRwLXdhdGNoLWxhdGVyLWljb24iKSkpIHsKLSAg
ICAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFkVXNlcklu
dGVyYWN0aW9uKHlvdVR1YmVEb21haW4pKSB7Ci0gICAgICAgICAgICAgICAgRG9jdW1lbnRTdG9y
YWdlQWNjZXNzOjpyZXF1ZXN0U3RvcmFnZUFjY2Vzc0ZvckRvY3VtZW50UXVpcmsoKm1fZG9jdW1l
bnQsIFtdKFN0b3JhZ2VBY2Nlc3NXYXNHcmFudGVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8v
IEZJWE1FOiBBZGQgYXBwcm9wcmlhdGUgbG9nZ2luZy4KLSAgICAgICAgICAgICAgICB9KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNjZXNzUmVzdWx0OjpTaG91bGRO
b3RDYW5jZWxFdmVudDsKKyAgICAgICAgaWYgKGVsZW1lbnQuaGFzQ2xhc3MoKSAmJiBkb21haW4g
PT0geW91VHViZURvbWFpbiAmJiAhbV9kb2N1bWVudC0+aXNUb3BEb2N1bWVudCgpICYmIFJlc291
cmNlTG9hZE9ic2VydmVyOjpzaGFyZWQoKS5oYXNIYWRVc2VySW50ZXJhY3Rpb24oeW91VHViZURv
bWFpbikpIHsKKyAgICAgICAgICAgIGF1dG8mIGNsYXNzTmFtZXMgPSBlbGVtZW50LmNsYXNzTmFt
ZXMoKTsKKyAgICAgICAgICAgIGlmIChjbGFzc05hbWVzLmNvbnRhaW5zKCJ5dHAtd2F0Y2gtbGF0
ZXItaWNvbiIpIHx8IGNsYXNzTmFtZXMuY29udGFpbnMoInl0cC13YXRjaC1sYXRlci1pY29uIikp
IHsKKyAgICAgICAgICAgICAgICBpZiAoUmVzb3VyY2VMb2FkT2JzZXJ2ZXI6OnNoYXJlZCgpLmhh
c0hhZFVzZXJJbnRlcmFjdGlvbih5b3VUdWJlRG9tYWluKSkgeworICAgICAgICAgICAgICAgICAg
ICBEb2N1bWVudFN0b3JhZ2VBY2Nlc3M6OnJlcXVlc3RTdG9yYWdlQWNjZXNzRm9yRG9jdW1lbnRR
dWlyaygqbV9kb2N1bWVudCwgW10oU3RvcmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3Vs
ZE5vdENhbmNlbEV2ZW50OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nlc3NSZXN1bHQ6OlNob3VsZE5vdENhbmNl
bEV2ZW50OwogICAgICAgICB9CiAKLSAgICAgICAgLy8gS2luamEgYnVybmVyIGFjY291bnQgbG9n
aW4gY2FzZS4KLSAgICAgICAgaWYgKGtpbmphUXVpcmtzLmdldCgpLmNvbnRhaW5zKGRvbWFpbikg
JiYgY2xhc3NOYW1lcy5jb250YWlucygianNfc3dpdGNoLXRvLWJ1cm5lci1sb2dpbiIpKSB7Cisg
ICAgICAgIC8vIEtpbmphIGxvZ2luIGNhc2UuCisgICAgICAgIGlmIChraW5qYVF1aXJrcy5nZXQo
KS5jb250YWlucyhkb21haW4pICYmIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoZWxlbWVudCkp
IHsKICAgICAgICAgICAgIGlmIChSZXNvdXJjZUxvYWRPYnNlcnZlcjo6c2hhcmVkKCkuaGFzSGFk
VXNlckludGVyYWN0aW9uKGtpbmphRG9tYWluKSkgewotICAgICAgICAgICAgICAgIERvY3VtZW50
U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1aXJrKCpt
X2RvY3VtZW50LCBraW5qYURvbWFpbi5nZXQoKS5pc29sYXRlZENvcHkoKSwgW10oU3RvcmFnZUFj
Y2Vzc1dhc0dyYW50ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IEFkZCBhcHBy
b3ByaWF0ZSBsb2dnaW5nLgotICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAgIERv
Y3VtZW50U3RvcmFnZUFjY2Vzczo6cmVxdWVzdFN0b3JhZ2VBY2Nlc3NGb3JOb25Eb2N1bWVudFF1
aXJrKCptX2RvY3VtZW50LCBraW5qYURvbWFpbi5nZXQoKS5pc29sYXRlZENvcHkoKSwgW10oU3Rv
cmFnZUFjY2Vzc1dhc0dyYW50ZWQpIHsgfSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIFF1aXJr
czo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIGF1dG8qIGRvbVdpbmRvdyA9IG1fZG9jdW1lbnQtPmRvbVdpbmRv
dygpOworICAgICAgICAgICAgaWYgKCFkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgcmV0dXJu
IFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2FuY2VsRXZlbnQ7CisKKyAg
ICAgICAgICAgIEV4Y2VwdGlvbk9yPFJlZlB0cjxXaW5kb3dQcm94eT4+IHByb3h5T3JFeGNlcHRp
b24gPSAgZG9tV2luZG93LT5vcGVuKCpkb21XaW5kb3csICpkb21XaW5kb3csIGtpbmphVVJMLT5z
dHJpbmcoKSwgZW1wdHlTdHJpbmcoKSwgbG9naW5Qb3B1cFdpbmRvd0ZlYXR1cmVTdHJpbmcpOwor
ICAgICAgICAgICAgaWYgKHByb3h5T3JFeGNlcHRpb24uaGFzRXhjZXB0aW9uKCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuIFF1aXJrczo6U3RvcmFnZUFjY2Vzc1Jlc3VsdDo6U2hvdWxkTm90Q2Fu
Y2VsRXZlbnQ7CisgICAgICAgICAgICBhdXRvIHByb3h5ID0gcHJveHlPckV4Y2VwdGlvbi5yZWxl
YXNlUmV0dXJuVmFsdWUoKTsKKworICAgICAgICAgICAgYXV0byogYWJzdHJhY3RGcmFtZSA9IHBy
b3h5LT5mcmFtZSgpOworICAgICAgICAgICAgaWYgKGFic3RyYWN0RnJhbWUgJiYgaXM8RnJhbWU+
KCphYnN0cmFjdEZyYW1lKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGZyYW1lID0gZG93bmNh
c3Q8RnJhbWU+KCphYnN0cmFjdEZyYW1lKTsKKyAgICAgICAgICAgICAgICBpZiAoYXV0byogcGFn
ZSA9IGZyYW1lLnBhZ2UoKSkgeworICAgICAgICAgICAgICAgICAgICBhdXRvIHdvcmxkID0gU2Ny
aXB0Q29udHJvbGxlcjo6Y3JlYXRlV29ybGQoImtpbmphQ29tUXVpcmtXb3JsZCIsIFNjcmlwdENv
bnRyb2xsZXI6OldvcmxkVHlwZTo6VXNlcik7CisgICAgICAgICAgICAgICAgICAgIHBhZ2UtPmFk
ZFVzZXJTY3JpcHRBd2FpdGluZ05vdGlmaWNhdGlvbih3b3JsZC5nZXQoKSwga2luamFMb2dpblVz
ZXJTY3JpcHQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gUXVpcmtzOjpTdG9yYWdlQWNj
ZXNzUmVzdWx0OjpTaG91bGRDYW5jZWxFdmVudDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICAvLyBGSVhNRTogVGFrZSB0aGUgdXNlciB0byBraW5qYS5jb20g
aW4gdGhlIGVsc2UgY2FzZS4KICAgICAgICAgfQogICAgIH0KICNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKGVsZW1lbnQpOwogICAgIFVOVVNFRF9QQVJBTShldmVudFR5cGUpOwotICAgIFVOVVNFRF9Q
QVJBTShjbGFzc05hbWVzKTsKICNlbmRpZgogICAgIHJldHVybiBRdWlya3M6OlN0b3JhZ2VBY2Nl
c3NSZXN1bHQ6OlNob3VsZE5vdENhbmNlbEV2ZW50OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9RdWlya3MuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUXVpcmtzLmgKaW5kZXgg
MDU2MDk3ODBhZTliYTBiNGQ4MjViYjk5YTBiY2ViYjU3ZjA5NTliYy4uOGUyZGVlYzAyZDQ4YmZi
NjRhNjkxZTBjNzg5N2Y5N2Q0OTVlMmI0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9RdWlya3MuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1F1aXJrcy5oCkBAIC0zNiw3ICsz
Niw2IEBAIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiBjbGFzcyBFdmVudFRhcmdldDsKIGNsYXNzIEhU
TUxFbGVtZW50OwogY2xhc3MgTGF5b3V0VW5pdDsKLWNsYXNzIFNwYWNlU3BsaXRTdHJpbmc7CiAK
IGNsYXNzIFF1aXJrcyB7CiAgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoUXVpcmtzKTsgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CkBAIC0xMDcsNyArMTA2LDcgQEAgcHVibGljOgogICAgIGJvb2wg
c2hvdWxkQXZvaWRQYXN0aW5nSW1hZ2VzQXNXZWJDb250ZW50KCkgY29uc3Q7CiAKICAgICBlbnVt
IFN0b3JhZ2VBY2Nlc3NSZXN1bHQgOiBib29sIHsgU2hvdWxkTm90Q2FuY2VsRXZlbnQsIFNob3Vs
ZENhbmNlbEV2ZW50IH07Ci0gICAgU3RvcmFnZUFjY2Vzc1Jlc3VsdCB0cmlnZ2VyT3B0aW9uYWxT
dG9yYWdlQWNjZXNzUXVpcmsoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBjb25zdCBTcGFj
ZVNwbGl0U3RyaW5nJiBjbGFzc05hbWVzKSBjb25zdDsKKyAgICBTdG9yYWdlQWNjZXNzUmVzdWx0
IHRyaWdnZXJPcHRpb25hbFN0b3JhZ2VBY2Nlc3NRdWlyayhjb25zdCBFbGVtZW50JiwgY29uc3Qg
QXRvbVN0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIAogcHJpdmF0ZToKICAgICBib29sIG5lZWRz
UXVpcmtzKCkgY29uc3Q7CkBAIC0xMTcsNiArMTE2LDEwIEBAIHByaXZhdGU6CiAgICAgYm9vbCBp
c0dvb2dsZU1hcHMoKSBjb25zdDsKICNlbmRpZgogCisjaWYgRU5BQkxFKFJFU09VUkNFX0xPQURf
U1RBVElTVElDUykKKyAgICBib29sIGlzS2luamFMb2dpbkF2YXRhckVsZW1lbnQoY29uc3QgRWxl
bWVudCYpIGNvbnN0OworI2VuZGlmCisKICAgICBXZWFrUHRyPERvY3VtZW50PiBtX2RvY3VtZW50
OwogCiAgICAgbXV0YWJsZSBPcHRpb25hbDxib29sPiBtX2hhc0Jyb2tlbkVuY3J5cHRlZE1lZGlh
QVBJU3VwcG9ydFF1aXJrOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>