<?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>221535</bug_id>
          
          <creation_ts>2021-02-07 19:44:28 -0800</creation_ts>
          <short_desc>Reduce the overhead of DocumentFragment in innerHTML &amp; outerHTML</short_desc>
          <delta_ts>2021-02-10 19:18:48 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>kangil.han</cc>
    
    <cc>mifenton</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1726532</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-07 19:44:28 -0800</bug_when>
    <thetext>We should cache DocumentFragment used in innerHTML and outerHTML,
and avoid calling removedFromAncestor on each node when removing from DocumentFragment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726533</commentid>
    <comment_count>1</comment_count>
      <attachid>419552</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-07 19:48:15 -0800</bug_when>
    <thetext>Created attachment 419552
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1726534</commentid>
    <comment_count>2</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-07 19:49:26 -0800</bug_when>
    <thetext>&lt;rdar://problem/73861015&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727369</commentid>
    <comment_count>3</comment_count>
      <attachid>419797</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-09 17:36:53 -0800</bug_when>
    <thetext>Created attachment 419797
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727379</commentid>
    <comment_count>4</comment_count>
      <attachid>419802</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-09 18:20:05 -0800</bug_when>
    <thetext>Created attachment 419802
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727413</commentid>
    <comment_count>5</comment_count>
      <attachid>419802</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2021-02-09 20:56:03 -0800</bug_when>
    <thetext>Comment on attachment 419802
Patch

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

r=me

&gt; Source/WTF/wtf/WeakPtr.h:180
&gt; +    bool hasWeakReferences() const { return m_impl; }

I would call this isInitialized().

Knowing that m_impl is non-null only tells us that someone created a reference at some point - not that the reference still exists.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727417</commentid>
    <comment_count>6</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-09 21:19:09 -0800</bug_when>
    <thetext>(In reply to Geoffrey Garen from comment #5)
&gt; Comment on attachment 419802 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=419802&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; &gt; Source/WTF/wtf/WeakPtr.h:180
&gt; &gt; +    bool hasWeakReferences() const { return m_impl; }
&gt; 
&gt; I would call this isInitialized().
&gt; 
&gt; Knowing that m_impl is non-null only tells us that someone created a
&gt; reference at some point - not that the reference still exists.

Good point. The alternative name I had considered as hasEverCreatedWeakPtr but maybe isInitialized okay although it&apos;s really hasBeenInitialized</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1727924</commentid>
    <comment_count>7</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2021-02-10 19:18:48 -0800</bug_when>
    <thetext>Committed r272703: &lt;https://trac.webkit.org/changeset/272703&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419552</attachid>
            <date>2021-02-07 19:48:15 -0800</date>
            <delta_ts>2021-02-09 17:36:49 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>wip221535.patch</filename>
            <type>text/plain</type>
            <size>8725</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAppbmRleCBiOWNiZjY5NzBlZmIuLjZiZmU4
ZTQwN2ExMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcApAQCAtODIsNiArODIs
MTUgQEAgQUxXQVlTX0lOTElORSBOb2RlVmVjdG9yIENvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENo
aWxkcmVuV2l0aFNjcmlwdEFzc2VydGlvbihDaGkKIHsKICAgICBhdXRvIGNoaWxkcmVuID0gY29s
bGVjdENoaWxkTm9kZXMoKnRoaXMpOwogCisgICAgaWYgKFVOTElLRUxZKGlzRG9jdW1lbnRGcmFn
bWVudEZvcklubmVyT3V0ZXJIVE1MKCkpKSB7CisgICAgICAgIFNjcmlwdERpc2FsbG93ZWRTY29w
ZTo6SW5NYWluVGhyZWFkIHNjcmlwdERpc2FsbG93ZWRTY29wZTsKKyAgICAgICAgUkVMRUFTRV9B
U1NFUlQoIWNvbm5lY3RlZFN1YmZyYW1lQ291bnQoKSAmJiAhd3JhcHBlcigpKTsKKyAgICAgICAg
d2hpbGUgKFJlZlB0cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkKKyAgICAgICAgICAgIHJl
bW92ZUJldHdlZW4obnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7CisgICAg
ICAgIGRvY3VtZW50KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsKKyAgICAgICAgcmV0dXJuIGNoaWxk
cmVuOworICAgIH0KKwogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJ
KSB7CiAgICAgICAgIENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwogICAg
ICAgICBmb3IgKGF1dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3Bw
CmluZGV4IGVhMmE1OWYzNDI1OS4uZDFlZmEwZGQyMDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5j
cHAKQEAgLTg1Miw3ICs4NTIsOSBAQCB2b2lkIERvY3VtZW50Ojpjb21tb25UZWFyZG93bigpCiAg
ICAgICAgIGFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5wYXVzZUFuaW1hdGlvbnMoKTsKIAogICAgIGNs
ZWFyU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyKCk7Ci0gICAgCisKKyAgICBtX2RvY3VtZW50
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCA9IG51bGxwdHI7CisKICAgICBpZiAobV9oaWdobGln
aHRSZWdpc3RlcikKICAgICAgICAgbV9oaWdobGlnaHRSZWdpc3Rlci0+Y2xlYXIoKTsKICNpZiBF
TkFCTEUoQVBQX0hJR0hMSUdIVFMpCkBAIC03MjUxLDYgKzcyNTMsMTYgQEAgRG9jdW1lbnQmIERv
Y3VtZW50OjplbnN1cmVUZW1wbGF0ZURvY3VtZW50KCkKICAgICByZXR1cm4gKm1fdGVtcGxhdGVE
b2N1bWVudDsKIH0KIAorUmVmPERvY3VtZW50RnJhZ21lbnQ+IERvY3VtZW50Ojpkb2N1bWVudEZy
YWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoKQoreworICAgIGlmIChVTkxJS0VMWSghbV9kb2N1bWVu
dEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwpKSB7CisgICAgICAgIG1fZG9jdW1lbnRGcmFnbWVu
dEZvcklubmVyT3V0ZXJIVE1MID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCp0aGlzKTsKKyAg
ICAgICAgbV9kb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwtPnNldElzRG9jdW1lbnRG
cmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKCk7CisgICAgfSBlbHNlIGlmIChVTkxJS0VMWShtX2Rv
Y3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTC0+aGFzQ2hpbGROb2RlcygpKSkKKyAgICAg
ICAgbV9kb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwtPnJlbW92ZUNoaWxkcmVuKCk7
CisgICAgcmV0dXJuICptX2RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTDsKK30KKwog
UmVmPEZvbnRGYWNlU2V0PiBEb2N1bWVudDo6Zm9udHMoKQogewogICAgIHVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMDZhZGExYjY0ODFkLi40NTcxY2U5ZmY5
MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMzI2LDYgKzEzMjYsOCBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBzZXRUZW1wbGF0ZURvY3VtZW50SG9zdChEb2N1bWVudCogdGVtcGxhdGVEb2N1bWVu
dEhvc3QpIHsgbV90ZW1wbGF0ZURvY3VtZW50SG9zdCA9IG1ha2VXZWFrUHRyKHRlbXBsYXRlRG9j
dW1lbnRIb3N0KTsgfQogICAgIERvY3VtZW50KiB0ZW1wbGF0ZURvY3VtZW50SG9zdCgpIHsgcmV0
dXJuIG1fdGVtcGxhdGVEb2N1bWVudEhvc3QuZ2V0KCk7IH0KIAorICAgIFJlZjxEb2N1bWVudEZy
YWdtZW50PiBkb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoKTsKKwogICAgIHZvaWQg
ZGlkQXNzb2NpYXRlRm9ybUNvbnRyb2woRWxlbWVudCYpOwogICAgIGJvb2wgaGFzRGlzYWJsZWRG
aWVsZHNldEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50
c0NvdW50OyB9CiAgICAgdm9pZCBhZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgbV9kaXNh
YmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudCsrOyB9CkBAIC0xOTY1LDYgKzE5NjcsOCBAQCBwcml2
YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudD4gbV90ZW1wbGF0ZURvY3VtZW50OwogICAgIFdlYWtQ
dHI8RG9jdW1lbnQ+IG1fdGVtcGxhdGVEb2N1bWVudEhvc3Q7IC8vIE1hbnVhbGx5IG1hbmFnZWQg
d2Vha3JlZiAoYmFja3BvaW50ZXIgZnJvbSBtX3RlbXBsYXRlRG9jdW1lbnQpLgogCisgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1M
OworCiAgICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7CiAKICAgICBXZWFr
SGFzaFNldDxNZWRpYVByb2R1Y2VyPiBtX2F1ZGlvUHJvZHVjZXJzOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudEZyYWdtZW50LmgKaW5kZXggZjlmOWJhMDhjMWE4Li5hZWEwYjczYjExMjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaApAQCAtMzUsMTAgKzM1LDEyIEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgcGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRF
bGVtZW50LCBQYXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKICAg
ICBib29sIHBhcnNlWE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQ
YXJzZXJDb250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKLSAgICAKKwogICAg
IGJvb2wgY2FuQ29udGFpblJhbmdlRW5kUG9pbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAgICAgdmlydHVhbCBib29sIGlzVGVtcGxhdGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4g
ZmFsc2U7IH0KIAorICAgIHZvaWQgc2V0SXNEb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRlckhU
TUwoKSB7IHNldE5vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91
dGVySFRNTCk7IH0KKwogICAgIC8vIEZyb20gdGhlIE5vbkVsZW1lbnRQYXJlbnROb2RlIGludGVy
ZmFjZSAtIGh0dHBzOi8vZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5vbmVsZW1lbnRw
YXJlbnRub2RlCiAgICAgV0VCQ09SRV9FWFBPUlQgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29u
c3QgQXRvbVN0cmluZyYpIGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
Tm9kZS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCA1MDllMGViNmUzNmUuLjZh
YjhkNWVmODJlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL05vZGUuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCkBAIC0yOTUsNiArMjk1LDggQEAgcHVibGljOgogICAg
IGJvb2wgY2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgY29uc3QgeyByZXR1cm4gaGFzU3R5bGVGbGFn
KE5vZGVTdHlsZUZsYWc6OkRlc2NlbmRhbnROZWVkc1N0eWxlUmVzb2x1dGlvbik7IH0KICAgICBi
b29sIGlzRWRpdGluZ1RleHQoKSBjb25zdCB7IHJldHVybiBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6
SXNFZGl0aW5nVGV4dCk7IH0KIAorICAgIGJvb2wgaXNEb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJP
dXRlckhUTUwoKSBjb25zdCB7IHJldHVybiBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6SXNEb2N1bWVu
dEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwpOyB9CisKICAgICB2b2lkIHNldENoaWxkTmVlZHNT
dHlsZVJlY2FsYygpIHsgc2V0U3R5bGVGbGFnKE5vZGVTdHlsZUZsYWc6OkRlc2NlbmRhbnROZWVk
c1N0eWxlUmVzb2x1dGlvbik7IH0KICAgICB2b2lkIGNsZWFyQ2hpbGROZWVkc1N0eWxlUmVjYWxj
KCk7CiAKQEAgLTUyOCwxMCArNTMwLDEwIEBAIHByb3RlY3RlZDoKICAgICAgICAgSXNJblNoYWRv
d1RyZWUgPSAxIDw8IDExLAogICAgICAgICBIYXNFdmVudFRhcmdldERhdGEgPSAxIDw8IDEyLAog
ICAgICAgICAvLyBVbnVzZWRGbGFnID0gMSA8PCAxMywKLSAgICAgICAgLy8gVW51c2VkRmxhZyA9
IDEgPDwgMTQsCiAKICAgICAgICAgLy8gVGhlc2UgYml0cyBhcmUgdXNlZCBieSBkZXJpdmVkIGNs
YXNzZXMsIHB1bGxlZCB1cCBoZXJlIHNvIHRoZXkgY2FuCiAgICAgICAgIC8vIGJlIHN0b3JlZCBp
biB0aGUgc2FtZSBtZW1vcnkgd29yZCBhcyB0aGUgTm9kZSBiaXRzIGFib3ZlLgorICAgICAgICBJ
c0RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCA9IDEgPDwgMTQsIC8vIERvY3VtZW50
RnJhZ21lbnQKICAgICAgICAgSXNFZGl0aW5nVGV4dCA9IDEgPDwgMTUsIC8vIFRleHQKICAgICAg
ICAgSGFzRm9jdXNXaXRoaW4gPSAxIDw8IDE2LCAvLyBFbGVtZW50CiAgICAgICAgIElzTGluayA9
IDEgPDwgMTcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKaW5kZXggZDFiZTY0NTUyNzFiLi4w
MzcyMTdmYzAyYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEyNDQsMTMgKzEy
NDQsMTIgQEAgU3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IHRpdGxlKQogICAgIHJldHVybiBtYXJrdXAudG9TdHJpbmcoKTsKIH0KIAotRXhjZXB0aW9uT3I8
UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVs
ZW1lbnQmIGNvbnRleHRFbGVtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgUGFyc2VyQ29udGVu
dFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQorZW51bSBjbGFzcyBEb2N1bWVudEZyYWdtZW50
TW9kZSB7IE5ldywgUmV1c2VGb3JJbm5lck91dGVySFRNTCB9Oworc3RhdGljIEFMV0FZU19JTkxJ
TkUgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvck1h
cmt1cChFbGVtZW50JiBjb250ZXh0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIERvY3Vt
ZW50RnJhZ21lbnRNb2RlIG1vZGUsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBv
bGljeSkKIHsKLSAgICBhdXRvKiBkb2N1bWVudCA9ICZjb250ZXh0RWxlbWVudC5kb2N1bWVudCgp
OwotICAgIGlmIChjb250ZXh0RWxlbWVudC5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkKLSAgICAg
ICAgZG9jdW1lbnQgPSAmZG9jdW1lbnQtPmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKTsKLSAgICBh
dXRvIGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpkb2N1bWVudCk7Ci0KKyAg
ICBhdXRvIGRvY3VtZW50ID0gbWFrZVJlZihjb250ZXh0RWxlbWVudC5oYXNUYWdOYW1lKHRlbXBs
YXRlVGFnKSA/IGNvbnRleHRFbGVtZW50LmRvY3VtZW50KCkuZW5zdXJlVGVtcGxhdGVEb2N1bWVu
dCgpIDogY29udGV4dEVsZW1lbnQuZG9jdW1lbnQoKSk7CisgICAgYXV0byBmcmFnbWVudCA9IG1v
ZGUgPT0gRG9jdW1lbnRGcmFnbWVudE1vZGU6Ok5ldyA/IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0
ZShkb2N1bWVudC5nZXQoKSkgOiBkb2N1bWVudC0+ZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0
ZXJIVE1MKCk7CisgICAgQVNTRVJUKCFmcmFnbWVudC0+aGFzQ2hpbGROb2RlcygpKTsKICAgICBp
ZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgZnJhZ21lbnQtPnBhcnNl
SFRNTChtYXJrdXAsICZjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAg
ICAgIHJldHVybiBmcmFnbWVudDsKQEAgLTEyNjIsNiArMTI2MSwxMSBAQCBFeGNlcHRpb25PcjxS
ZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoRWxl
bWVudCYgY29udAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAorRXhjZXB0aW9uT3I8UmVmPERv
Y3VtZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1lbnQm
IGNvbnRleHRFbGVtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGlj
eSBwYXJzZXJDb250ZW50UG9saWN5KQoreworICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZvck1h
cmt1cChjb250ZXh0RWxlbWVudCwgbWFya3VwLCBEb2N1bWVudEZyYWdtZW50TW9kZTo6UmV1c2VG
b3JJbm5lck91dGVySFRNTCwgcGFyc2VyQ29udGVudFBvbGljeSk7Cit9CisKIFJlZlB0cjxEb2N1
bWVudEZyYWdtZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1l
bnQmIG91dHB1dERvYywgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYg
c291cmNlTUlNRVR5cGUpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
ID0gb3V0cHV0RG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKQEAgLTEzMjgsNyArMTMzMiw3
IEBAIHN0YXRpYyB2b2lkIHJlbW92ZUVsZW1lbnRGcm9tRnJhZ21lbnRQcmVzZXJ2aW5nQ2hpbGRy
ZW4oRG9jdW1lbnRGcmFnbWVudCYgZnJhZ21lCiAKIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZy
YWdtZW50Pj4gY3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0
IFN0cmluZyYgbWFya3VwLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kp
CiB7Ci0gICAgYXV0byByZXN1bHQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGVs
ZW1lbnQsIG1hcmt1cCwgcGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgYXV0byByZXN1bHQgPSBj
cmVhdGVGcmFnbWVudEZvck1hcmt1cChlbGVtZW50LCBtYXJrdXAsIERvY3VtZW50RnJhZ21lbnRN
b2RlOjpOZXcsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0
aW9uKCkpCiAgICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC0x
MzQ0LDE1ICsxMzQ4LDkgQEAgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBjcmVh
dGVDb250ZXh0dWFsRnJhZ21lbnQoRWxlbWVudCYgZWxlbWVudCwgY28KICAgICByZXR1cm4gZnJh
Z21lbnQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNPbmVDaGlsZChDb250YWluZXJOb2Rl
JiBub2RlKQotewotICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQoKTsKLSAg
ICByZXR1cm4gZmlyc3RDaGlsZCAmJiAhZmlyc3RDaGlsZC0+bmV4dFNpYmxpbmcoKTsKLX0KLQog
c3RhdGljIGlubGluZSBib29sIGhhc09uZVRleHRDaGlsZChDb250YWluZXJOb2RlJiBub2RlKQog
ewotICAgIHJldHVybiBoYXNPbmVDaGlsZChub2RlKSAmJiBub2RlLmZpcnN0Q2hpbGQoKS0+aXNU
ZXh0Tm9kZSgpOworICAgIHJldHVybiBub2RlLmhhc09uZUNoaWxkKCkgJiYgbm9kZS5maXJzdENo
aWxkKCktPmlzVGV4dE5vZGUoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGhhc011dGF0aW9u
RXZlbnRMaXN0ZW5lcnMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTM5Myw3ICsxMzkx
LDEwIEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250
YWluZXJOb2RlJiBjb250YWluZXIsIFJlZjxEb2N1CiAgICAgfQogCiAgICAgY29udGFpbmVyTm9k
ZS0+cmVtb3ZlQ2hpbGRyZW4oKTsKLSAgICByZXR1cm4gY29udGFpbmVyTm9kZS0+YXBwZW5kQ2hp
bGQoZnJhZ21lbnQpOworICAgIGF1dG8gcmVzdWx0ID0gY29udGFpbmVyTm9kZS0+YXBwZW5kQ2hp
bGQoZnJhZ21lbnQpOworICAgIEFTU0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9kZXMoKSk7Cisg
ICAgQVNTRVJUKCFmcmFnbWVudC0+d3JhcHBlcigpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQog
CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419797</attachid>
            <date>2021-02-09 17:36:53 -0800</date>
            <delta_ts>2021-02-09 18:24:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221535-20210209173652.patch</filename>
            <type>text/plain</type>
            <size>13618</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLmRlYWRjODczZGZlMTdjZDk2ZjNkMjQzZjQwN2NiNzQ0NmI1OGFm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBEb2N1bWVudEZy
YWdtZW50IGluIGlubmVySFRNTCAmIG91dGVySFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
Mzg2MTAxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiBmb3Igd3JpdGluZyBhc3NlcnRpb25zLgorCisgICAg
ICAgICogd3RmL1dlYWtQdHIuaDoKKyAgICAgICAgKFdURjo6V2Vha1B0ckZhY3Rvcnk6Omhhc1dl
YWtSZWZlcmVuY2VzIGNvbnN0KTogQWRkZWQuCisKIDIwMjEtMDItMDYgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBOb24tc3BlY2lhbCBVUkxz
IHNob3VsZCBoYXZlIGFuIG9wYXF1ZSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNjEzZGVmZjQyZmE2
MTQ4ZmM3ZWU1YTU2YzM5MWM5ZDkzZjUxMzM1Li4yYmJiYWVmM2YxN2MzYTcwM2M1NjdjMThkMGY3
MmY1MzQyMTE5ODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDItMDkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSBvdmVy
aGVhZCBvZiBEb2N1bWVudEZyYWdtZW50IGluIGlubmVySFRNTCAmIG91dGVySFRNTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTM1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83Mzg2MTAxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZHVjZXMgdGhlIG92ZXJoZWFkIG9mIHVz
aW5nIERvY3VtZW50RnJhZ21lbnQgaW4gaW5uZXJIVE1sIGFuZCBvdXRlckhUTUwgc2V0dGVycyBi
eQorICAgICAgICAxLiBDYWNoZSBEb2N1bWVudEZyYWdtZW50IHVzZWQgZm9yIGlubmVySFRNTCBh
bmQgb3V0ZXJIVE1MLgorICAgICAgICAyLiBBZGRpbmcgYSBmYXN0IHBhdGggdG8gcmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uIHdoZW4gcmVtb3ZpbmcgY2hpbGQgbm9kZXMgZnJv
bSAoMSkKKyAgICAgICAgaW1tZWRpYXRlbHkgYmVmb3JlIGFwcGVuZGluZyBpdCB0byB0aGUgbmV3
IHBhcmVudC4gVGhpcyBpcyBzYWZlIGZvciBub3cgc2luY2Ugbm8gRE9NIG5vZGVzIG9yIEFQSQor
ICAgICAgICBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcm9vdCBub2RlIG9yIHBhcmVudCBu
b2RlIHdoZW4gaXQncyBEb2N1bWVudEZyYWdtZW50LCBhbmQgYW5kIHRoZXJlCisgICAgICAgIGFy
ZSBubyBub2RlIGZsYWdzIHRvIGJlIHVwZGF0ZWQgb3IgaW52YWxpZGF0ZWQgc2luY2Ugd2UncmUg
cmVtb3ZpbmcgYWxyZWFkeS1kaXNjb25uZWN0ZWQgbm9kZXMKKyAgICAgICAgdG8gd2hpY2ggbm8g
c2NyaXB0IGV2ZXIgaGFkIGFjY2VzcyB1cCB1bnRpbCB0aGlzIHBvaW50LiBXZSByZWxlYXNlLWFz
c2VydCB0aGVzZSBjb25kaXRpb25zIGJlZm9yZQorICAgICAgICBnb2luZyBpbnRvIHRoZSBmYXN0
IHBhdGguCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBv
YnNlcnZhYmxlIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVu
V2l0aFNjcmlwdEFzc2VydGlvbik6IEFkZGVkIGEgZmFzdCBwYXRoLiBTZWUgYWJvdmUuCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb21t
b25UZWFyZG93bik6IENsZWFyIG1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MIGFz
IGl0IHdvdWxkIGtlZXAKKyAgICAgICAgdGhlIG93bmV3ciBkb2N1bWVudCAodGhpcyBEb2N1bWVu
dCkgYWxpdmUgb3RoZXJ3aXNlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCk6IEFkZGVkLiBMYXppbHkgY3JlYXRlIGEgRG9jdW1l
bnRGcmFnbWVudAorICAgICAgICB1c2VkIHRvIHBhcnNlIHRoZSBmcmFnbWVudCBmb3IgaW5uZXJI
VE1MIGFuZCBvdXRlckhUTUwgc2V0dGVycy4gUmVtb3ZlIGFueSBjaGlsZCBub2RlcyBsZWZ0IGlu
CisgICAgICAgIHRoZSBkb2N1bWVudCBmcmFnbWVudCBpbiB0aGUgY2FzZSB0aGUgbGFzdCBjYWxs
IHRvIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCB0b29rIGEgZmFzdCBwYXRoCisgICAgICAg
IGZvciBhIHNpbmdsZSB0ZXh0IG5vZGUsIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgcmVtb3ZlIGFueSBj
aGlsZCBub2RlcyBmcm9tIERvY3VtZW50RnJhZ21lbnQuCisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50RnJhZ21lbnQ6OnNldElzRG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1M
KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzRG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21l
bnRGb3JNYXJrdXApOiBFeHRyYWN0ZWQgZnJvbSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJI
VE1MIHRvIHNoYXJlIGNvZGUKKyAgICAgICAgYmV0d2VlbiBjcmVhdGVGcmFnbWVudEZvcklubmVy
T3V0ZXJIVE1MIGFuZCBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKTogUmV1c2UgdGhlIGZyYWdtZW50IGlu
IGNyZWF0ZUZyYWdtZW50Rm9yTWFya3VwLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29udGV4
dHVhbEZyYWdtZW50KTogRG9uJ3QgcmV1c2UgdGhlIGZyYWdtZW50IGluIGNyZWF0ZUZyYWdtZW50
Rm9yTWFya3VwIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXMgdXNlZCBieSBSYW5nZTo6Y3Jl
YXRlQ29udGV4dHVhbEZyYWdtZW50IHdoaWNoIGV4cG9zZXMgdGhlIGRvY3VtZW50IGZyYWdtZW50
IHRvCisgICAgICAgIGFyYml0cmFyeSBhdXRob3Igc2NyaXB0cy4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc09uZUNoaWxkKTogRGVsZXRlZCBzaW5jZSB3ZSBub3cgaGF2ZSBOb2RlOjpoYXNPbmVDaGls
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc09uZVRleHRDaGlsZCk6IFVzZSBOb2RlOjpoYXNPbmVD
aGlsZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCk6IEFk
ZGVkIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkIG5vZGVz
CisgICAgICAgIGxlZnQgYWZ0ZXIgcmVwbGFjaW5nIHRoZSBjaGlsZHJlbi4KKwogMjAyMS0wMi0w
OCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gQ2xlYW51cCBFTkFCTEVfRU5DUllQVEVEX01FRElBIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9XZWFrUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKaW5kZXggMTQz
MmMyZjI1Yjc0N2I1MmVjNmZmZDU2MWY1NDkwOGEzZjQwNjRlMy4uNmUwMmQxYTViNjdmNWJjMWY1
M2RjYjAwYTAyZDAwODJlYWEyMjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2Vha1B0
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaApAQCAtMTc2LDYgKzE3NiwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIG1faW1wbCA9IG51bGxwdHI7CiAgICAgfQogCisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBib29sIGhhc1dlYWtSZWZlcmVuY2VzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+
IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCmluZGV4IGU4MjBkYTY4MWQ3ZjI2NGFiNjE1YzAwMzM3MzYxNjk2YjQ4ZmU2N2IuLmNmMGUx
ZDdhZTgxMGFjN2Q3Yjc5MWM5MjUxMzk2YjAyNzA2NWRjZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKQEAgLTgyLDYgKzgyLDE2IEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3Rv
ciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hp
CiB7CiAgICAgYXV0byBjaGlsZHJlbiA9IGNvbGxlY3RDaGlsZE5vZGVzKCp0aGlzKTsKIAorICAg
IGlmIChVTkxJS0VMWShpc0RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgpKSkgewor
ICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxv
d2VkU2NvcGU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjb25uZWN0ZWRTdWJmcmFtZUNvdW50
KCkgJiYgIXdyYXBwZXIoKSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFoYXNSYXJlRGF0YSgp
ICYmICF3ZWFrUHRyRmFjdG9yeSgpLmhhc1dlYWtSZWZlcmVuY2VzKCkpOworICAgICAgICB3aGls
ZSAoUmVmUHRyPE5vZGU+IGNoaWxkID0gbV9maXJzdENoaWxkKQorICAgICAgICAgICAgcmVtb3Zl
QmV0d2VlbihudWxscHRyLCBjaGlsZC0+bmV4dFNpYmxpbmcoKSwgKmNoaWxkKTsKKyAgICAgICAg
ZG9jdW1lbnQoKS5pbmNET01UcmVlVmVyc2lvbigpOworICAgICAgICByZXR1cm4gY2hpbGRyZW47
CisgICAgfQorCiAgICAgaWYgKHNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpBUEkpIHsK
ICAgICAgICAgQ2hpbGRMaXN0TXV0YXRpb25TY29wZSBtdXRhdGlvbigqdGhpcyk7CiAgICAgICAg
IGZvciAoYXV0byYgY2hpbGQgOiBjaGlsZHJlbikgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5k
ZXggZGNkM2FhMWM3YzU3MmU2ODM5NWNjMDVkYThjODNmZjIwYjI2YjAzOC4uM2ZiMzdjZjA5MjVi
ZDQyM2I4NmIwMDIyYTJjZmI1MTkyNjdkMWM5OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBA
IC04NTIsNyArODUyLDkgQEAgdm9pZCBEb2N1bWVudDo6Y29tbW9uVGVhcmRvd24oKQogICAgICAg
ICBhY2Nlc3NTVkdFeHRlbnNpb25zKCkucGF1c2VBbmltYXRpb25zKCk7CiAKICAgICBjbGVhclNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlcigpOwotICAgIAorCisgICAgbV9kb2N1bWVudEZyYWdt
ZW50Rm9ySW5uZXJPdXRlckhUTUwgPSBudWxscHRyOworCiAgICAgaWYgKG1faGlnaGxpZ2h0UmVn
aXN0ZXIpCiAgICAgICAgIG1faGlnaGxpZ2h0UmVnaXN0ZXItPmNsZWFyKCk7CiAjaWYgRU5BQkxF
KEFQUF9ISUdITElHSFRTKQpAQCAtNzI1MSw2ICs3MjUzLDE2IEBAIERvY3VtZW50JiBEb2N1bWVu
dDo6ZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpCiAgICAgcmV0dXJuICptX3RlbXBsYXRlRG9jdW1l
bnQ7CiB9CiAKK1JlZjxEb2N1bWVudEZyYWdtZW50PiBEb2N1bWVudDo6ZG9jdW1lbnRGcmFnbWVu
dEZvcklubmVyT3V0ZXJIVE1MKCkKK3sKKyAgICBpZiAoVU5MSUtFTFkoIW1fZG9jdW1lbnRGcmFn
bWVudEZvcklubmVyT3V0ZXJIVE1MKSkgeworICAgICAgICBtX2RvY3VtZW50RnJhZ21lbnRGb3JJ
bm5lck91dGVySFRNTCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZSgqdGhpcyk7CisgICAgICAg
IG1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MLT5zZXRJc0RvY3VtZW50RnJhZ21l
bnRGb3JJbm5lck91dGVySFRNTCgpOworICAgIH0gZWxzZSBpZiAoVU5MSUtFTFkobV9kb2N1bWVu
dEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwtPmhhc0NoaWxkTm9kZXMoKSkpCisgICAgICAgIG1f
ZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MLT5yZW1vdmVDaGlsZHJlbigpOworICAg
IHJldHVybiAqbV9kb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUw7Cit9CisKIFJlZjxG
b250RmFjZVNldD4gRG9jdW1lbnQ6OmZvbnRzKCkKIHsKICAgICB1cGRhdGVTdHlsZUlmTmVlZGVk
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5oCmluZGV4IGUwMWFkNTAwNTU5ZTUzOTdjMGRkNDlkZTYzYTUw
YzVhMjczNGZlYWEuLmYxNWIwNjQ5NWEzMDJjYjZkYmQyZTE5NGU3MDQ2NjI3OWVlYjA1YWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5oCkBAIC0xMzI2LDYgKzEzMjYsOCBAQCBwdWJsaWM6CiAgICAgdm9p
ZCBzZXRUZW1wbGF0ZURvY3VtZW50SG9zdChEb2N1bWVudCogdGVtcGxhdGVEb2N1bWVudEhvc3Qp
IHsgbV90ZW1wbGF0ZURvY3VtZW50SG9zdCA9IG1ha2VXZWFrUHRyKHRlbXBsYXRlRG9jdW1lbnRI
b3N0KTsgfQogICAgIERvY3VtZW50KiB0ZW1wbGF0ZURvY3VtZW50SG9zdCgpIHsgcmV0dXJuIG1f
dGVtcGxhdGVEb2N1bWVudEhvc3QuZ2V0KCk7IH0KIAorICAgIFJlZjxEb2N1bWVudEZyYWdtZW50
PiBkb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoKTsKKwogICAgIHZvaWQgZGlkQXNz
b2NpYXRlRm9ybUNvbnRyb2woRWxlbWVudCYpOwogICAgIGJvb2wgaGFzRGlzYWJsZWRGaWVsZHNl
dEVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX2Rpc2FibGVkRmllbGRzZXRFbGVtZW50c0NvdW50
OyB9CiAgICAgdm9pZCBhZGREaXNhYmxlZEZpZWxkc2V0RWxlbWVudCgpIHsgbV9kaXNhYmxlZEZp
ZWxkc2V0RWxlbWVudHNDb3VudCsrOyB9CkBAIC0xOTY5LDYgKzE5NzEsOCBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxEb2N1bWVudD4gbV90ZW1wbGF0ZURvY3VtZW50OwogICAgIFdlYWtQdHI8RG9j
dW1lbnQ+IG1fdGVtcGxhdGVEb2N1bWVudEhvc3Q7IC8vIE1hbnVhbGx5IG1hbmFnZWQgd2Vha3Jl
ZiAoYmFja3BvaW50ZXIgZnJvbSBtX3RlbXBsYXRlRG9jdW1lbnQpLgogCisgICAgUmVmUHRyPERv
Y3VtZW50RnJhZ21lbnQ+IG1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MOworCiAg
ICAgUmVmPENTU0ZvbnRTZWxlY3Rvcj4gbV9mb250U2VsZWN0b3I7CiAKICAgICBXZWFrSGFzaFNl
dDxNZWRpYVByb2R1Y2VyPiBtX2F1ZGlvUHJvZHVjZXJzOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVu
dEZyYWdtZW50LmgKaW5kZXggZjlmOWJhMDhjMWE4NmY1MmY3ZTU3ZGJhODBkYjNkMWU4NDJkZDE1
NC4uYWVhMGI3M2IxMTI1NzBkZThiYmEzMDRlYTJiZGExMGRmZDUxYmM2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50RnJhZ21lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnRGcmFnbWVudC5oCkBAIC0zNSwxMCArMzUsMTIgQEAgcHVibGljOgogCiAg
ICAgdm9pZCBwYXJzZUhUTUwoY29uc3QgU3RyaW5nJiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQs
IFBhcnNlckNvbnRlbnRQb2xpY3kgPSBBbGxvd1NjcmlwdGluZ0NvbnRlbnQpOwogICAgIGJvb2wg
cGFyc2VYTUwoY29uc3QgU3RyaW5nJiwgRWxlbWVudCogY29udGV4dEVsZW1lbnQsIFBhcnNlckNv
bnRlbnRQb2xpY3kgPSBBbGxvd1NjcmlwdGluZ0NvbnRlbnQpOwotICAgIAorCiAgICAgYm9vbCBj
YW5Db250YWluUmFuZ2VFbmRQb2ludCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICAg
ICB2aXJ0dWFsIGJvb2wgaXNUZW1wbGF0ZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiBmYWxzZTsg
fQogCisgICAgdm9pZCBzZXRJc0RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgpIHsg
c2V0Tm9kZUZsYWcoTm9kZUZsYWc6OklzRG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1M
KTsgfQorCiAgICAgLy8gRnJvbSB0aGUgTm9uRWxlbWVudFBhcmVudE5vZGUgaW50ZXJmYWNlIC0g
aHR0cHM6Ly9kb20uc3BlYy53aGF0d2cub3JnLyNpbnRlcmZhY2Utbm9uZWxlbWVudHBhcmVudG5v
ZGUKICAgICBXRUJDT1JFX0VYUE9SVCBFbGVtZW50KiBnZXRFbGVtZW50QnlJZChjb25zdCBBdG9t
U3RyaW5nJikgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCmluZGV4IDEwNjU3ZTEzZDdmYzIxYjQxYTMzY2U0
ZTgzMTE5Mzk1MWFmZmM1NmYuLjJlY2QxNWQ2ZDk0ZDVhOTRhZjc1OWZiZDU1NzY1MjU3YWY0ZDY2
ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Ob2RlLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvZG9tL05vZGUuaApAQCAtMjk1LDYgKzI5NSw4IEBAIHB1YmxpYzoKICAgICBib29sIGNo
aWxkTmVlZHNTdHlsZVJlY2FsYygpIGNvbnN0IHsgcmV0dXJuIGhhc1N0eWxlRmxhZyhOb2RlU3R5
bGVGbGFnOjpEZXNjZW5kYW50TmVlZHNTdHlsZVJlc29sdXRpb24pOyB9CiAgICAgYm9vbCBpc0Vk
aXRpbmdUZXh0KCkgY29uc3QgeyByZXR1cm4gaGFzTm9kZUZsYWcoTm9kZUZsYWc6OklzRWRpdGlu
Z1RleHQpOyB9CiAKKyAgICBib29sIGlzRG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1M
KCkgY29uc3QgeyByZXR1cm4gaGFzTm9kZUZsYWcoTm9kZUZsYWc6OklzRG9jdW1lbnRGcmFnbWVu
dEZvcklubmVyT3V0ZXJIVE1MKTsgfQorCiAgICAgdm9pZCBzZXRDaGlsZE5lZWRzU3R5bGVSZWNh
bGMoKSB7IHNldFN0eWxlRmxhZyhOb2RlU3R5bGVGbGFnOjpEZXNjZW5kYW50TmVlZHNTdHlsZVJl
c29sdXRpb24pOyB9CiAgICAgdm9pZCBjbGVhckNoaWxkTmVlZHNTdHlsZVJlY2FsYygpOwogCkBA
IC01MjgsMTAgKzUzMCwxMCBAQCBwcm90ZWN0ZWQ6CiAgICAgICAgIElzSW5TaGFkb3dUcmVlID0g
MSA8PCAxMSwKICAgICAgICAgSGFzRXZlbnRUYXJnZXREYXRhID0gMSA8PCAxMiwKICAgICAgICAg
Ly8gVW51c2VkRmxhZyA9IDEgPDwgMTMsCi0gICAgICAgIC8vIFVudXNlZEZsYWcgPSAxIDw8IDE0
LAogCiAgICAgICAgIC8vIFRoZXNlIGJpdHMgYXJlIHVzZWQgYnkgZGVyaXZlZCBjbGFzc2VzLCBw
dWxsZWQgdXAgaGVyZSBzbyB0aGV5IGNhbgogICAgICAgICAvLyBiZSBzdG9yZWQgaW4gdGhlIHNh
bWUgbWVtb3J5IHdvcmQgYXMgdGhlIE5vZGUgYml0cyBhYm92ZS4KKyAgICAgICAgSXNEb2N1bWVu
dEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwgPSAxIDw8IDE0LCAvLyBEb2N1bWVudEZyYWdtZW50
CiAgICAgICAgIElzRWRpdGluZ1RleHQgPSAxIDw8IDE1LCAvLyBUZXh0CiAgICAgICAgIEhhc0Zv
Y3VzV2l0aGluID0gMSA8PCAxNiwgLy8gRWxlbWVudAogICAgICAgICBJc0xpbmsgPSAxIDw8IDE3
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCmluZGV4IGQxYmU2NDU1MjcxYjBiYTBhYjY3Njhk
NmMyZGIwYTNkNTdkNTg2Y2EuLjAzNzIxN2ZjMDJjMTA1ODhmZDMzM2YyYzhhNGNmMDc0NTg4OGMy
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKQEAgLTEyNDQsMTMgKzEyNDQsMTIgQEAg
U3RyaW5nIHVybFRvTWFya3VwKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHRpdGxlKQog
ICAgIHJldHVybiBtYXJrdXAudG9TdHJpbmcoKTsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERvY3Vt
ZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1lbnQmIGNv
bnRleHRFbGVtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSBw
YXJzZXJDb250ZW50UG9saWN5KQorZW51bSBjbGFzcyBEb2N1bWVudEZyYWdtZW50TW9kZSB7IE5l
dywgUmV1c2VGb3JJbm5lck91dGVySFRNTCB9Oworc3RhdGljIEFMV0FZU19JTkxJTkUgRXhjZXB0
aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvck1hcmt1cChFbGVt
ZW50JiBjb250ZXh0RWxlbWVudCwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIERvY3VtZW50RnJhZ21l
bnRNb2RlIG1vZGUsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBvbGljeSkKIHsK
LSAgICBhdXRvKiBkb2N1bWVudCA9ICZjb250ZXh0RWxlbWVudC5kb2N1bWVudCgpOwotICAgIGlm
IChjb250ZXh0RWxlbWVudC5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSkKLSAgICAgICAgZG9jdW1l
bnQgPSAmZG9jdW1lbnQtPmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKTsKLSAgICBhdXRvIGZyYWdt
ZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRlKCpkb2N1bWVudCk7Ci0KKyAgICBhdXRvIGRv
Y3VtZW50ID0gbWFrZVJlZihjb250ZXh0RWxlbWVudC5oYXNUYWdOYW1lKHRlbXBsYXRlVGFnKSA/
IGNvbnRleHRFbGVtZW50LmRvY3VtZW50KCkuZW5zdXJlVGVtcGxhdGVEb2N1bWVudCgpIDogY29u
dGV4dEVsZW1lbnQuZG9jdW1lbnQoKSk7CisgICAgYXV0byBmcmFnbWVudCA9IG1vZGUgPT0gRG9j
dW1lbnRGcmFnbWVudE1vZGU6Ok5ldyA/IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZShkb2N1bWVu
dC5nZXQoKSkgOiBkb2N1bWVudC0+ZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKCk7
CisgICAgQVNTRVJUKCFmcmFnbWVudC0+aGFzQ2hpbGROb2RlcygpKTsKICAgICBpZiAoZG9jdW1l
bnQtPmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAgZnJhZ21lbnQtPnBhcnNlSFRNTChtYXJr
dXAsICZjb250ZXh0RWxlbWVudCwgcGFyc2VyQ29udGVudFBvbGljeSk7CiAgICAgICAgIHJldHVy
biBmcmFnbWVudDsKQEAgLTEyNjIsNiArMTI2MSwxMSBAQCBFeGNlcHRpb25PcjxSZWY8RG9jdW1l
bnRGcmFnbWVudD4+IGNyZWF0ZUZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoRWxlbWVudCYgY29u
dAogICAgIHJldHVybiBmcmFnbWVudDsKIH0KIAorRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJh
Z21lbnQ+PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1lbnQmIGNvbnRleHRF
bGVtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCwgUGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJD
b250ZW50UG9saWN5KQoreworICAgIHJldHVybiBjcmVhdGVGcmFnbWVudEZvck1hcmt1cChjb250
ZXh0RWxlbWVudCwgbWFya3VwLCBEb2N1bWVudEZyYWdtZW50TW9kZTo6UmV1c2VGb3JJbm5lck91
dGVySFRNTCwgcGFyc2VyQ29udGVudFBvbGljeSk7Cit9CisKIFJlZlB0cjxEb2N1bWVudEZyYWdt
ZW50PiBjcmVhdGVGcmFnbWVudEZvclRyYW5zZm9ybVRvRnJhZ21lbnQoRG9jdW1lbnQmIG91dHB1
dERvYywgY29uc3QgU3RyaW5nJiBzb3VyY2VTdHJpbmcsIGNvbnN0IFN0cmluZyYgc291cmNlTUlN
RVR5cGUpCiB7CiAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gb3V0cHV0
RG9jLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKQEAgLTEzMjgsNyArMTMzMiw3IEBAIHN0YXRp
YyB2b2lkIHJlbW92ZUVsZW1lbnRGcm9tRnJhZ21lbnRQcmVzZXJ2aW5nQ2hpbGRyZW4oRG9jdW1l
bnRGcmFnbWVudCYgZnJhZ21lCiAKIEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4g
Y3JlYXRlQ29udGV4dHVhbEZyYWdtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFN0cmluZyYg
bWFya3VwLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCiB7Ci0gICAg
YXV0byByZXN1bHQgPSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKGVsZW1lbnQsIG1h
cmt1cCwgcGFyc2VyQ29udGVudFBvbGljeSk7CisgICAgYXV0byByZXN1bHQgPSBjcmVhdGVGcmFn
bWVudEZvck1hcmt1cChlbGVtZW50LCBtYXJrdXAsIERvY3VtZW50RnJhZ21lbnRNb2RlOjpOZXcs
IHBhcnNlckNvbnRlbnRQb2xpY3kpOwogICAgIGlmIChyZXN1bHQuaGFzRXhjZXB0aW9uKCkpCiAg
ICAgICAgIHJldHVybiByZXN1bHQucmVsZWFzZUV4Y2VwdGlvbigpOwogCkBAIC0xMzQ0LDE1ICsx
MzQ4LDkgQEAgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21lbnQ+PiBjcmVhdGVDb250ZXh0
dWFsRnJhZ21lbnQoRWxlbWVudCYgZWxlbWVudCwgY28KICAgICByZXR1cm4gZnJhZ21lbnQ7CiB9
CiAKLXN0YXRpYyBpbmxpbmUgYm9vbCBoYXNPbmVDaGlsZChDb250YWluZXJOb2RlJiBub2RlKQot
ewotICAgIE5vZGUqIGZpcnN0Q2hpbGQgPSBub2RlLmZpcnN0Q2hpbGQoKTsKLSAgICByZXR1cm4g
Zmlyc3RDaGlsZCAmJiAhZmlyc3RDaGlsZC0+bmV4dFNpYmxpbmcoKTsKLX0KLQogc3RhdGljIGlu
bGluZSBib29sIGhhc09uZVRleHRDaGlsZChDb250YWluZXJOb2RlJiBub2RlKQogewotICAgIHJl
dHVybiBoYXNPbmVDaGlsZChub2RlKSAmJiBub2RlLmZpcnN0Q2hpbGQoKS0+aXNUZXh0Tm9kZSgp
OworICAgIHJldHVybiBub2RlLmhhc09uZUNoaWxkKCkgJiYgbm9kZS5maXJzdENoaWxkKCktPmlz
VGV4dE5vZGUoKTsKIH0KIAogc3RhdGljIGlubGluZSBib29sIGhhc011dGF0aW9uRXZlbnRMaXN0
ZW5lcnMoY29uc3QgRG9jdW1lbnQmIGRvY3VtZW50KQpAQCAtMTM5Myw3ICsxMzkxLDEwIEBAIEV4
Y2VwdGlvbk9yPHZvaWQ+IHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudChDb250YWluZXJOb2Rl
JiBjb250YWluZXIsIFJlZjxEb2N1CiAgICAgfQogCiAgICAgY29udGFpbmVyTm9kZS0+cmVtb3Zl
Q2hpbGRyZW4oKTsKLSAgICByZXR1cm4gY29udGFpbmVyTm9kZS0+YXBwZW5kQ2hpbGQoZnJhZ21l
bnQpOworICAgIGF1dG8gcmVzdWx0ID0gY29udGFpbmVyTm9kZS0+YXBwZW5kQ2hpbGQoZnJhZ21l
bnQpOworICAgIEFTU0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9kZXMoKSk7CisgICAgQVNTRVJU
KCFmcmFnbWVudC0+d3JhcHBlcigpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiB9Cg==
</data>
<flag name="commit-queue"
          id="438146"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>419802</attachid>
            <date>2021-02-09 18:20:05 -0800</date>
            <delta_ts>2021-02-10 01:00:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-221535-20210209182004.patch</filename>
            <type>text/plain</type>
            <size>13610</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcyNTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDg5ZjZmYzEyODkzOTA3Y2RkODY0ZmY2
NzM4ZGM1OTU0MTkwNWMyY2IuLmRlYWRjODczZGZlMTdjZDk2ZjNkMjQzZjQwN2NiNzQ0NmI1OGFm
NGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMjEtMDItMDkgIFJ5b3N1a2UgTml3YSAgPHJuaXdh
QHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSBvdmVyaGVhZCBvZiBEb2N1bWVudEZy
YWdtZW50IGluIGlubmVySFRNTCAmIG91dGVySFRNTAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTM1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83
Mzg2MTAxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBZGRlZCBhIGhlbHBlciBmdW5jdGlvbiBmb3Igd3JpdGluZyBhc3NlcnRpb25zLgorCisgICAg
ICAgICogd3RmL1dlYWtQdHIuaDoKKyAgICAgICAgKFdURjo6V2Vha1B0ckZhY3Rvcnk6Omhhc1dl
YWtSZWZlcmVuY2VzIGNvbnN0KTogQWRkZWQuCisKIDIwMjEtMDItMDYgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBOb24tc3BlY2lhbCBVUkxz
IHNob3VsZCBoYXZlIGFuIG9wYXF1ZSBvcmlnaW4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBlNjEzZGVmZjQyZmE2
MTQ4ZmM3ZWU1YTU2YzM5MWM5ZDkzZjUxMzM1Li4yYmJiYWVmM2YxN2MzYTcwM2M1NjdjMThkMGY3
MmY1MzQyMTE5ODBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNDggQEAKKzIwMjEtMDItMDkgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSBvdmVy
aGVhZCBvZiBEb2N1bWVudEZyYWdtZW50IGluIGlubmVySFRNTCAmIG91dGVySFRNTAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjIxNTM1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS83Mzg2MTAxNT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIHJlZHVjZXMgdGhlIG92ZXJoZWFkIG9mIHVz
aW5nIERvY3VtZW50RnJhZ21lbnQgaW4gaW5uZXJIVE1sIGFuZCBvdXRlckhUTUwgc2V0dGVycyBi
eQorICAgICAgICAxLiBDYWNoZSBEb2N1bWVudEZyYWdtZW50IHVzZWQgZm9yIGlubmVySFRNTCBh
bmQgb3V0ZXJIVE1MLgorICAgICAgICAyLiBBZGRpbmcgYSBmYXN0IHBhdGggdG8gcmVtb3ZlQWxs
Q2hpbGRyZW5XaXRoU2NyaXB0QXNzZXJ0aW9uIHdoZW4gcmVtb3ZpbmcgY2hpbGQgbm9kZXMgZnJv
bSAoMSkKKyAgICAgICAgaW1tZWRpYXRlbHkgYmVmb3JlIGFwcGVuZGluZyBpdCB0byB0aGUgbmV3
IHBhcmVudC4gVGhpcyBpcyBzYWZlIGZvciBub3cgc2luY2Ugbm8gRE9NIG5vZGVzIG9yIEFQSQor
ICAgICAgICBzdG9yZSBpbmZvcm1hdGlvbiBhYm91dCBpdHMgcm9vdCBub2RlIG9yIHBhcmVudCBu
b2RlIHdoZW4gaXQncyBEb2N1bWVudEZyYWdtZW50LCBhbmQgYW5kIHRoZXJlCisgICAgICAgIGFy
ZSBubyBub2RlIGZsYWdzIHRvIGJlIHVwZGF0ZWQgb3IgaW52YWxpZGF0ZWQgc2luY2Ugd2UncmUg
cmVtb3ZpbmcgYWxyZWFkeS1kaXNjb25uZWN0ZWQgbm9kZXMKKyAgICAgICAgdG8gd2hpY2ggbm8g
c2NyaXB0IGV2ZXIgaGFkIGFjY2VzcyB1cCB1bnRpbCB0aGlzIHBvaW50LiBXZSByZWxlYXNlLWFz
c2VydCB0aGVzZSBjb25kaXRpb25zIGJlZm9yZQorICAgICAgICBnb2luZyBpbnRvIHRoZSBmYXN0
IHBhdGguCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIHNpbmNlIHRoZXJlIHNob3VsZCBiZSBubyBv
YnNlcnZhYmxlIGJlaGF2aW9yIGNoYW5nZS4KKworICAgICAgICAqIGRvbS9Db250YWluZXJOb2Rl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbnRhaW5lck5vZGU6OnJlbW92ZUFsbENoaWxkcmVu
V2l0aFNjcmlwdEFzc2VydGlvbik6IEFkZGVkIGEgZmFzdCBwYXRoLiBTZWUgYWJvdmUuCisgICAg
ICAgICogZG9tL0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojpjb21t
b25UZWFyZG93bik6IENsZWFyIG1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MIGFz
IGl0IHdvdWxkIGtlZXAKKyAgICAgICAgdGhlIG93bmV3ciBkb2N1bWVudCAodGhpcyBEb2N1bWVu
dCkgYWxpdmUgb3RoZXJ3aXNlLgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OmRvY3VtZW50
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCk6IEFkZGVkLiBMYXppbHkgY3JlYXRlIGEgRG9jdW1l
bnRGcmFnbWVudAorICAgICAgICB1c2VkIHRvIHBhcnNlIHRoZSBmcmFnbWVudCBmb3IgaW5uZXJI
VE1MIGFuZCBvdXRlckhUTUwgc2V0dGVycy4gUmVtb3ZlIGFueSBjaGlsZCBub2RlcyBsZWZ0IGlu
CisgICAgICAgIHRoZSBkb2N1bWVudCBmcmFnbWVudCBpbiB0aGUgY2FzZSB0aGUgbGFzdCBjYWxs
IHRvIHJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCB0b29rIGEgZmFzdCBwYXRoCisgICAgICAg
IGZvciBhIHNpbmdsZSB0ZXh0IG5vZGUsIHdoaWNoIGNhc2Ugd2UgZG9uJ3QgcmVtb3ZlIGFueSBj
aGlsZCBub2RlcyBmcm9tIERvY3VtZW50RnJhZ21lbnQuCisgICAgICAgICogZG9tL0RvY3VtZW50
Lmg6CisgICAgICAgICogZG9tL0RvY3VtZW50RnJhZ21lbnQuaDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50RnJhZ21lbnQ6OnNldElzRG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1M
KTogQWRkZWQuCisgICAgICAgICogZG9tL05vZGUuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok5vZGU6
OmlzRG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MIGNvbnN0KTogQWRkZWQuCisgICAg
ICAgICogZWRpdGluZy9tYXJrdXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRnJhZ21l
bnRGb3JNYXJrdXApOiBFeHRyYWN0ZWQgZnJvbSBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJI
VE1MIHRvIHNoYXJlIGNvZGUKKyAgICAgICAgYmV0d2VlbiBjcmVhdGVGcmFnbWVudEZvcklubmVy
T3V0ZXJIVE1MIGFuZCBjcmVhdGVDb250ZXh0dWFsRnJhZ21lbnQuCisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKTogUmV1c2UgdGhlIGZyYWdtZW50IGlu
IGNyZWF0ZUZyYWdtZW50Rm9yTWFya3VwLgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlQ29udGV4
dHVhbEZyYWdtZW50KTogRG9uJ3QgcmV1c2UgdGhlIGZyYWdtZW50IGluIGNyZWF0ZUZyYWdtZW50
Rm9yTWFya3VwIGFzIHRoaXMKKyAgICAgICAgZnVuY3Rpb24gaXMgdXNlZCBieSBSYW5nZTo6Y3Jl
YXRlQ29udGV4dHVhbEZyYWdtZW50IHdoaWNoIGV4cG9zZXMgdGhlIGRvY3VtZW50IGZyYWdtZW50
IHRvCisgICAgICAgIGFyYml0cmFyeSBhdXRob3Igc2NyaXB0cy4KKyAgICAgICAgKFdlYkNvcmU6
Omhhc09uZUNoaWxkKTogRGVsZXRlZCBzaW5jZSB3ZSBub3cgaGF2ZSBOb2RlOjpoYXNPbmVDaGls
ZC4KKyAgICAgICAgKFdlYkNvcmU6Omhhc09uZVRleHRDaGlsZCk6IFVzZSBOb2RlOjpoYXNPbmVD
aGlsZC4KKyAgICAgICAgKFdlYkNvcmU6OnJlcGxhY2VDaGlsZHJlbldpdGhGcmFnbWVudCk6IEFk
ZGVkIGFzc2VydGlvbnMgdG8gbWFrZSBzdXJlIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkIG5vZGVz
CisgICAgICAgIGxlZnQgYWZ0ZXIgcmVwbGFjaW5nIHRoZSBjaGlsZHJlbi4KKwogMjAyMS0wMi0w
OCAgRG9uIE9sbXN0ZWFkICA8ZG9uLm9sbXN0ZWFkQHNvbnkuY29tPgogCiAgICAgICAgIFtDTWFr
ZV0gQ2xlYW51cCBFTkFCTEVfRU5DUllQVEVEX01FRElBIGJ1aWxkCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV1RGL3d0Zi9XZWFrUHRyLmggYi9Tb3VyY2UvV1RGL3d0Zi9XZWFrUHRyLmgKaW5kZXggMTQz
MmMyZjI1Yjc0N2I1MmVjNmZmZDU2MWY1NDkwOGEzZjQwNjRlMy4uNmUwMmQxYTViNjdmNWJjMWY1
M2RjYjAwYTAyZDAwODJlYWEyMjBkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYvV2Vha1B0
ci5oCisrKyBiL1NvdXJjZS9XVEYvd3RmL1dlYWtQdHIuaApAQCAtMTc2LDYgKzE3NiwxMCBAQCBw
dWJsaWM6CiAgICAgICAgIG1faW1wbCA9IG51bGxwdHI7CiAgICAgfQogCisjaWYgQVNTRVJUX0VO
QUJMRUQKKyAgICBib29sIGhhc1dlYWtSZWZlcmVuY2VzKCkgY29uc3QgeyByZXR1cm4gbV9pbXBs
OyB9CisjZW5kaWYKKwogcHJpdmF0ZToKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSwgdHlwZW5hbWU+
IGZyaWVuZCBjbGFzcyBXZWFrSGFzaFNldDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL0NvbnRhaW5lck5vZGUuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0NvbnRhaW5lck5vZGUu
Y3BwCmluZGV4IGU4MjBkYTY4MWQ3ZjI2NGFiNjE1YzAwMzM3MzYxNjk2YjQ4ZmU2N2IuLmY2NGFh
ZmJjNTNhOGE2Mjc1ZDlkYWQ0NDY0MmNjNmU0MTk3ZTE4NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Db250YWluZXJOb2RlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vQ29u
dGFpbmVyTm9kZS5jcHAKQEAgLTgyLDYgKzgyLDE2IEBAIEFMV0FZU19JTkxJTkUgTm9kZVZlY3Rv
ciBDb250YWluZXJOb2RlOjpyZW1vdmVBbGxDaGlsZHJlbldpdGhTY3JpcHRBc3NlcnRpb24oQ2hp
CiB7CiAgICAgYXV0byBjaGlsZHJlbiA9IGNvbGxlY3RDaGlsZE5vZGVzKCp0aGlzKTsKIAorICAg
IGlmIChVTkxJS0VMWShpc0RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgpKSkgewor
ICAgICAgICBTY3JpcHREaXNhbGxvd2VkU2NvcGU6OkluTWFpblRocmVhZCBzY3JpcHREaXNhbGxv
d2VkU2NvcGU7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFjb25uZWN0ZWRTdWJmcmFtZUNvdW50
KCkgJiYgIWhhc1JhcmVEYXRhKCkgJiYgIXdyYXBwZXIoKSk7CisgICAgICAgIEFTU0VSVCghd2Vh
a1B0ckZhY3RvcnkoKS5oYXNXZWFrUmVmZXJlbmNlcygpKTsKKyAgICAgICAgd2hpbGUgKFJlZlB0
cjxOb2RlPiBjaGlsZCA9IG1fZmlyc3RDaGlsZCkKKyAgICAgICAgICAgIHJlbW92ZUJldHdlZW4o
bnVsbHB0ciwgY2hpbGQtPm5leHRTaWJsaW5nKCksICpjaGlsZCk7CisgICAgICAgIGRvY3VtZW50
KCkuaW5jRE9NVHJlZVZlcnNpb24oKTsKKyAgICAgICAgcmV0dXJuIGNoaWxkcmVuOworICAgIH0K
KwogICAgIGlmIChzb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6QVBJKSB7CiAgICAgICAg
IENoaWxkTGlzdE11dGF0aW9uU2NvcGUgbXV0YXRpb24oKnRoaXMpOwogICAgICAgICBmb3IgKGF1
dG8mIGNoaWxkIDogY2hpbGRyZW4pIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9E
b2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCmluZGV4IGRjZDNh
YTFjN2M1NzJlNjgzOTVjYzA1ZGE4YzgzZmYyMGIyNmIwMzguLjNmYjM3Y2YwOTI1YmQ0MjNiODZi
MDAyMmEyY2ZiNTE5MjY3ZDFjOTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApAQCAtODUyLDcg
Kzg1Miw5IEBAIHZvaWQgRG9jdW1lbnQ6OmNvbW1vblRlYXJkb3duKCkKICAgICAgICAgYWNjZXNz
U1ZHRXh0ZW5zaW9ucygpLnBhdXNlQW5pbWF0aW9ucygpOwogCiAgICAgY2xlYXJTY3JpcHRlZEFu
aW1hdGlvbkNvbnRyb2xsZXIoKTsKLSAgICAKKworICAgIG1fZG9jdW1lbnRGcmFnbWVudEZvcklu
bmVyT3V0ZXJIVE1MID0gbnVsbHB0cjsKKwogICAgIGlmIChtX2hpZ2hsaWdodFJlZ2lzdGVyKQog
ICAgICAgICBtX2hpZ2hsaWdodFJlZ2lzdGVyLT5jbGVhcigpOwogI2lmIEVOQUJMRShBUFBfSElH
SExJR0hUUykKQEAgLTcyNTEsNiArNzI1MywxNiBAQCBEb2N1bWVudCYgRG9jdW1lbnQ6OmVuc3Vy
ZVRlbXBsYXRlRG9jdW1lbnQoKQogICAgIHJldHVybiAqbV90ZW1wbGF0ZURvY3VtZW50OwogfQog
CitSZWY8RG9jdW1lbnRGcmFnbWVudD4gRG9jdW1lbnQ6OmRvY3VtZW50RnJhZ21lbnRGb3JJbm5l
ck91dGVySFRNTCgpCit7CisgICAgaWYgKFVOTElLRUxZKCFtX2RvY3VtZW50RnJhZ21lbnRGb3JJ
bm5lck91dGVySFRNTCkpIHsKKyAgICAgICAgbV9kb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRl
ckhUTUwgPSBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoKnRoaXMpOworICAgICAgICBtX2RvY3Vt
ZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTC0+c2V0SXNEb2N1bWVudEZyYWdtZW50Rm9ySW5u
ZXJPdXRlckhUTUwoKTsKKyAgICB9IGVsc2UgaWYgKFVOTElLRUxZKG1fZG9jdW1lbnRGcmFnbWVu
dEZvcklubmVyT3V0ZXJIVE1MLT5oYXNDaGlsZE5vZGVzKCkpKQorICAgICAgICBtX2RvY3VtZW50
RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTC0+cmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICByZXR1cm4g
Km1fZG9jdW1lbnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MOworfQorCiBSZWY8Rm9udEZhY2VT
ZXQ+IERvY3VtZW50Ojpmb250cygpCiB7CiAgICAgdXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCBlMDFhZDUwMDU1OWU1Mzk3YzBkZDQ5ZGU2M2E1MGM1YTI3MzRm
ZWFhLi5mMTViMDY0OTVhMzAyY2I2ZGJkMmUxOTRlNzA0NjYyNzllZWIwNWFkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTMyNiw2ICsxMzI2LDggQEAgcHVibGljOgogICAgIHZvaWQgc2V0VGVt
cGxhdGVEb2N1bWVudEhvc3QoRG9jdW1lbnQqIHRlbXBsYXRlRG9jdW1lbnRIb3N0KSB7IG1fdGVt
cGxhdGVEb2N1bWVudEhvc3QgPSBtYWtlV2Vha1B0cih0ZW1wbGF0ZURvY3VtZW50SG9zdCk7IH0K
ICAgICBEb2N1bWVudCogdGVtcGxhdGVEb2N1bWVudEhvc3QoKSB7IHJldHVybiBtX3RlbXBsYXRl
RG9jdW1lbnRIb3N0LmdldCgpOyB9CiAKKyAgICBSZWY8RG9jdW1lbnRGcmFnbWVudD4gZG9jdW1l
bnRGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKCk7CisKICAgICB2b2lkIGRpZEFzc29jaWF0ZUZv
cm1Db250cm9sKEVsZW1lbnQmKTsKICAgICBib29sIGhhc0Rpc2FibGVkRmllbGRzZXRFbGVtZW50
KCkgY29uc3QgeyByZXR1cm4gbV9kaXNhYmxlZEZpZWxkc2V0RWxlbWVudHNDb3VudDsgfQogICAg
IHZvaWQgYWRkRGlzYWJsZWRGaWVsZHNldEVsZW1lbnQoKSB7IG1fZGlzYWJsZWRGaWVsZHNldEVs
ZW1lbnRzQ291bnQrKzsgfQpAQCAtMTk2OSw2ICsxOTcxLDggQEAgcHJpdmF0ZToKICAgICBSZWZQ
dHI8RG9jdW1lbnQ+IG1fdGVtcGxhdGVEb2N1bWVudDsKICAgICBXZWFrUHRyPERvY3VtZW50PiBt
X3RlbXBsYXRlRG9jdW1lbnRIb3N0OyAvLyBNYW51YWxseSBtYW5hZ2VkIHdlYWtyZWYgKGJhY2tw
b2ludGVyIGZyb20gbV90ZW1wbGF0ZURvY3VtZW50KS4KIAorICAgIFJlZlB0cjxEb2N1bWVudEZy
YWdtZW50PiBtX2RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTDsKKwogICAgIFJlZjxD
U1NGb250U2VsZWN0b3I+IG1fZm9udFNlbGVjdG9yOwogCiAgICAgV2Vha0hhc2hTZXQ8TWVkaWFQ
cm9kdWNlcj4gbV9hdWRpb1Byb2R1Y2VyczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudEZyYWdtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnRGcmFnbWVu
dC5oCmluZGV4IGY5ZjliYTA4YzFhODZmNTJmN2U1N2RiYTgwZGIzZDFlODQyZGQxNTQuLmFlYTBi
NzNiMTEyNTcwZGU4YmJhMzA0ZWEyYmRhMTBkZmQ1MWJjNjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudEZyYWdtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0Rv
Y3VtZW50RnJhZ21lbnQuaApAQCAtMzUsMTAgKzM1LDEyIEBAIHB1YmxpYzoKIAogICAgIHZvaWQg
cGFyc2VIVE1MKGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJD
b250ZW50UG9saWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKICAgICBib29sIHBhcnNlWE1M
KGNvbnN0IFN0cmluZyYsIEVsZW1lbnQqIGNvbnRleHRFbGVtZW50LCBQYXJzZXJDb250ZW50UG9s
aWN5ID0gQWxsb3dTY3JpcHRpbmdDb250ZW50KTsKLSAgICAKKwogICAgIGJvb2wgY2FuQ29udGFp
blJhbmdlRW5kUG9pbnQoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVh
bCBib29sIGlzVGVtcGxhdGVDb250ZW50KCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAorICAg
IHZvaWQgc2V0SXNEb2N1bWVudEZyYWdtZW50Rm9ySW5uZXJPdXRlckhUTUwoKSB7IHNldE5vZGVG
bGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCk7IH0KKwog
ICAgIC8vIEZyb20gdGhlIE5vbkVsZW1lbnRQYXJlbnROb2RlIGludGVyZmFjZSAtIGh0dHBzOi8v
ZG9tLnNwZWMud2hhdHdnLm9yZy8jaW50ZXJmYWNlLW5vbmVsZW1lbnRwYXJlbnRub2RlCiAgICAg
V0VCQ09SRV9FWFBPUlQgRWxlbWVudCogZ2V0RWxlbWVudEJ5SWQoY29uc3QgQXRvbVN0cmluZyYp
IGNvbnN0OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL05vZGUuaAppbmRleCAxMDY1N2UxM2Q3ZmMyMWI0MWEzM2NlNGU4MzExOTM5
NTFhZmZjNTZmLi4yZWNkMTVkNmQ5NGQ1YTk0YWY3NTlmYmQ1NTc2NTI1N2FmNGQ2NmUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTm9kZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Rv
bS9Ob2RlLmgKQEAgLTI5NSw2ICsyOTUsOCBAQCBwdWJsaWM6CiAgICAgYm9vbCBjaGlsZE5lZWRz
U3R5bGVSZWNhbGMoKSBjb25zdCB7IHJldHVybiBoYXNTdHlsZUZsYWcoTm9kZVN0eWxlRmxhZzo6
RGVzY2VuZGFudE5lZWRzU3R5bGVSZXNvbHV0aW9uKTsgfQogICAgIGJvb2wgaXNFZGl0aW5nVGV4
dCgpIGNvbnN0IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0VkaXRpbmdUZXh0KTsg
fQogCisgICAgYm9vbCBpc0RvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgpIGNvbnN0
IHsgcmV0dXJuIGhhc05vZGVGbGFnKE5vZGVGbGFnOjpJc0RvY3VtZW50RnJhZ21lbnRGb3JJbm5l
ck91dGVySFRNTCk7IH0KKwogICAgIHZvaWQgc2V0Q2hpbGROZWVkc1N0eWxlUmVjYWxjKCkgeyBz
ZXRTdHlsZUZsYWcoTm9kZVN0eWxlRmxhZzo6RGVzY2VuZGFudE5lZWRzU3R5bGVSZXNvbHV0aW9u
KTsgfQogICAgIHZvaWQgY2xlYXJDaGlsZE5lZWRzU3R5bGVSZWNhbGMoKTsKIApAQCAtNTI4LDEw
ICs1MzAsMTAgQEAgcHJvdGVjdGVkOgogICAgICAgICBJc0luU2hhZG93VHJlZSA9IDEgPDwgMTEs
CiAgICAgICAgIEhhc0V2ZW50VGFyZ2V0RGF0YSA9IDEgPDwgMTIsCiAgICAgICAgIC8vIFVudXNl
ZEZsYWcgPSAxIDw8IDEzLAotICAgICAgICAvLyBVbnVzZWRGbGFnID0gMSA8PCAxNCwKIAogICAg
ICAgICAvLyBUaGVzZSBiaXRzIGFyZSB1c2VkIGJ5IGRlcml2ZWQgY2xhc3NlcywgcHVsbGVkIHVw
IGhlcmUgc28gdGhleSBjYW4KICAgICAgICAgLy8gYmUgc3RvcmVkIGluIHRoZSBzYW1lIG1lbW9y
eSB3b3JkIGFzIHRoZSBOb2RlIGJpdHMgYWJvdmUuCisgICAgICAgIElzRG9jdW1lbnRGcmFnbWVu
dEZvcklubmVyT3V0ZXJIVE1MID0gMSA8PCAxNCwgLy8gRG9jdW1lbnRGcmFnbWVudAogICAgICAg
ICBJc0VkaXRpbmdUZXh0ID0gMSA8PCAxNSwgLy8gVGV4dAogICAgICAgICBIYXNGb2N1c1dpdGhp
biA9IDEgPDwgMTYsIC8vIEVsZW1lbnQKICAgICAgICAgSXNMaW5rID0gMSA8PCAxNywKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFya3VwLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvbWFya3VwLmNwcAppbmRleCBkMWJlNjQ1NTI3MWIwYmEwYWI2NzY4ZDZjMmRiMGEz
ZDU3ZDU4NmNhLi4wMzcyMTdmYzAyYzEwNTg4ZmQzMzNmMmM4YTRjZjA3NDU4ODhjMjExIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hcmt1cC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9tYXJrdXAuY3BwCkBAIC0xMjQ0LDEzICsxMjQ0LDEyIEBAIFN0cmluZyB1
cmxUb01hcmt1cChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICByZXR1
cm4gbWFya3VwLnRvU3RyaW5nKCk7CiB9CiAKLUV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdt
ZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChFbGVtZW50JiBjb250ZXh0RWxl
bWVudCwgY29uc3QgU3RyaW5nJiBtYXJrdXAsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29u
dGVudFBvbGljeSkKK2VudW0gY2xhc3MgRG9jdW1lbnRGcmFnbWVudE1vZGUgeyBOZXcsIFJldXNl
Rm9ySW5uZXJPdXRlckhUTUwgfTsKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIEV4Y2VwdGlvbk9yPFJl
ZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlRnJhZ21lbnRGb3JNYXJrdXAoRWxlbWVudCYgY29u
dGV4dEVsZW1lbnQsIGNvbnN0IFN0cmluZyYgbWFya3VwLCBEb2N1bWVudEZyYWdtZW50TW9kZSBt
b2RlLCBQYXJzZXJDb250ZW50UG9saWN5IHBhcnNlckNvbnRlbnRQb2xpY3kpCiB7Ci0gICAgYXV0
byogZG9jdW1lbnQgPSAmY29udGV4dEVsZW1lbnQuZG9jdW1lbnQoKTsKLSAgICBpZiAoY29udGV4
dEVsZW1lbnQuaGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykpCi0gICAgICAgIGRvY3VtZW50ID0gJmRv
Y3VtZW50LT5lbnN1cmVUZW1wbGF0ZURvY3VtZW50KCk7Ci0gICAgYXV0byBmcmFnbWVudCA9IERv
Y3VtZW50RnJhZ21lbnQ6OmNyZWF0ZSgqZG9jdW1lbnQpOwotCisgICAgYXV0byBkb2N1bWVudCA9
IG1ha2VSZWYoY29udGV4dEVsZW1lbnQuaGFzVGFnTmFtZSh0ZW1wbGF0ZVRhZykgPyBjb250ZXh0
RWxlbWVudC5kb2N1bWVudCgpLmVuc3VyZVRlbXBsYXRlRG9jdW1lbnQoKSA6IGNvbnRleHRFbGVt
ZW50LmRvY3VtZW50KCkpOworICAgIGF1dG8gZnJhZ21lbnQgPSBtb2RlID09IERvY3VtZW50RnJh
Z21lbnRNb2RlOjpOZXcgPyBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoZG9jdW1lbnQuZ2V0KCkp
IDogZG9jdW1lbnQtPmRvY3VtZW50RnJhZ21lbnRGb3JJbm5lck91dGVySFRNTCgpOworICAgIEFT
U0VSVCghZnJhZ21lbnQtPmhhc0NoaWxkTm9kZXMoKSk7CiAgICAgaWYgKGRvY3VtZW50LT5pc0hU
TUxEb2N1bWVudCgpKSB7CiAgICAgICAgIGZyYWdtZW50LT5wYXJzZUhUTUwobWFya3VwLCAmY29u
dGV4dEVsZW1lbnQsIHBhcnNlckNvbnRlbnRQb2xpY3kpOwogICAgICAgICByZXR1cm4gZnJhZ21l
bnQ7CkBAIC0xMjYyLDYgKzEyNjEsMTEgQEAgRXhjZXB0aW9uT3I8UmVmPERvY3VtZW50RnJhZ21l
bnQ+PiBjcmVhdGVGcmFnbWVudEZvcklubmVyT3V0ZXJIVE1MKEVsZW1lbnQmIGNvbnQKICAgICBy
ZXR1cm4gZnJhZ21lbnQ7CiB9CiAKK0V4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4g
Y3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChFbGVtZW50JiBjb250ZXh0RWxlbWVudCwg
Y29uc3QgU3RyaW5nJiBtYXJrdXAsIFBhcnNlckNvbnRlbnRQb2xpY3kgcGFyc2VyQ29udGVudFBv
bGljeSkKK3sKKyAgICByZXR1cm4gY3JlYXRlRnJhZ21lbnRGb3JNYXJrdXAoY29udGV4dEVsZW1l
bnQsIG1hcmt1cCwgRG9jdW1lbnRGcmFnbWVudE1vZGU6OlJldXNlRm9ySW5uZXJPdXRlckhUTUws
IHBhcnNlckNvbnRlbnRQb2xpY3kpOworfQorCiBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gY3Jl
YXRlRnJhZ21lbnRGb3JUcmFuc2Zvcm1Ub0ZyYWdtZW50KERvY3VtZW50JiBvdXRwdXREb2MsIGNv
bnN0IFN0cmluZyYgc291cmNlU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNvdXJjZU1JTUVUeXBlKQog
ewogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVudCA9IG91dHB1dERvYy5jcmVh
dGVEb2N1bWVudEZyYWdtZW50KCk7CkBAIC0xMzI4LDcgKzEzMzIsNyBAQCBzdGF0aWMgdm9pZCBy
ZW1vdmVFbGVtZW50RnJvbUZyYWdtZW50UHJlc2VydmluZ0NoaWxkcmVuKERvY3VtZW50RnJhZ21l
bnQmIGZyYWdtZQogCiBFeGNlcHRpb25PcjxSZWY8RG9jdW1lbnRGcmFnbWVudD4+IGNyZWF0ZUNv
bnRleHR1YWxGcmFnbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBTdHJpbmcmIG1hcmt1cCwg
UGFyc2VyQ29udGVudFBvbGljeSBwYXJzZXJDb250ZW50UG9saWN5KQogewotICAgIGF1dG8gcmVz
dWx0ID0gY3JlYXRlRnJhZ21lbnRGb3JJbm5lck91dGVySFRNTChlbGVtZW50LCBtYXJrdXAsIHBh
cnNlckNvbnRlbnRQb2xpY3kpOworICAgIGF1dG8gcmVzdWx0ID0gY3JlYXRlRnJhZ21lbnRGb3JN
YXJrdXAoZWxlbWVudCwgbWFya3VwLCBEb2N1bWVudEZyYWdtZW50TW9kZTo6TmV3LCBwYXJzZXJD
b250ZW50UG9saWN5KTsKICAgICBpZiAocmVzdWx0Lmhhc0V4Y2VwdGlvbigpKQogICAgICAgICBy
ZXR1cm4gcmVzdWx0LnJlbGVhc2VFeGNlcHRpb24oKTsKIApAQCAtMTM0NCwxNSArMTM0OCw5IEBA
IEV4Y2VwdGlvbk9yPFJlZjxEb2N1bWVudEZyYWdtZW50Pj4gY3JlYXRlQ29udGV4dHVhbEZyYWdt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvCiAgICAgcmV0dXJuIGZyYWdtZW50OwogfQogCi1zdGF0
aWMgaW5saW5lIGJvb2wgaGFzT25lQ2hpbGQoQ29udGFpbmVyTm9kZSYgbm9kZSkKLXsKLSAgICBO
b2RlKiBmaXJzdENoaWxkID0gbm9kZS5maXJzdENoaWxkKCk7Ci0gICAgcmV0dXJuIGZpcnN0Q2hp
bGQgJiYgIWZpcnN0Q2hpbGQtPm5leHRTaWJsaW5nKCk7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgYm9v
bCBoYXNPbmVUZXh0Q2hpbGQoQ29udGFpbmVyTm9kZSYgbm9kZSkKIHsKLSAgICByZXR1cm4gaGFz
T25lQ2hpbGQobm9kZSkgJiYgbm9kZS5maXJzdENoaWxkKCktPmlzVGV4dE5vZGUoKTsKKyAgICBy
ZXR1cm4gbm9kZS5oYXNPbmVDaGlsZCgpICYmIG5vZGUuZmlyc3RDaGlsZCgpLT5pc1RleHROb2Rl
KCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCBoYXNNdXRhdGlvbkV2ZW50TGlzdGVuZXJzKGNv
bnN0IERvY3VtZW50JiBkb2N1bWVudCkKQEAgLTEzOTMsNyArMTM5MSwxMCBAQCBFeGNlcHRpb25P
cjx2b2lkPiByZXBsYWNlQ2hpbGRyZW5XaXRoRnJhZ21lbnQoQ29udGFpbmVyTm9kZSYgY29udGFp
bmVyLCBSZWY8RG9jdQogICAgIH0KIAogICAgIGNvbnRhaW5lck5vZGUtPnJlbW92ZUNoaWxkcmVu
KCk7Ci0gICAgcmV0dXJuIGNvbnRhaW5lck5vZGUtPmFwcGVuZENoaWxkKGZyYWdtZW50KTsKKyAg
ICBhdXRvIHJlc3VsdCA9IGNvbnRhaW5lck5vZGUtPmFwcGVuZENoaWxkKGZyYWdtZW50KTsKKyAg
ICBBU1NFUlQoIWZyYWdtZW50LT5oYXNDaGlsZE5vZGVzKCkpOworICAgIEFTU0VSVCghZnJhZ21l
bnQtPndyYXBwZXIoKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogfQo=
</data>
<flag name="review"
          id="438145"
          type_id="1"
          status="+"
          setter="ggaren"
    />
    <flag name="commit-queue"
          id="438173"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>