<?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>203041</bug_id>
          
          <creation_ts>2019-10-16 10:17:03 -0700</creation_ts>
          <short_desc>[LFC][IFC] Fix various vertical alignment issues.</short_desc>
          <delta_ts>2019-10-16 13:33:04 -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>Layout and Rendering</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="alan">zalan</reporter>
          <assigned_to name="alan">zalan</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>commit-queue</cc>
    
    <cc>koivisto</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1580563</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-10-16 10:17:03 -0700</bug_when>
    <thetext>ssia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580565</commentid>
    <comment_count>1</comment_count>
      <attachid>381081</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-10-16 10:20:41 -0700</bug_when>
    <thetext>Created attachment 381081
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580568</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-10-16 10:33:27 -0700</bug_when>
    <thetext>&lt;rdar://problem/56337146&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580570</commentid>
    <comment_count>3</comment_count>
      <attachid>381083</attachid>
    <who name="alan">zalan</who>
    <bug_when>2019-10-16 10:36:55 -0700</bug_when>
    <thetext>Created attachment 381083
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580636</commentid>
    <comment_count>4</comment_count>
      <attachid>381083</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2019-10-16 12:48:43 -0700</bug_when>
    <thetext>Comment on attachment 381083
Patch

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

&gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:190
&gt; +                // The inline-block&apos;s baseline offset is relative to its content box. Let&apos;s convert it relative to the margin box.
&gt; +                //   inline-block
&gt; +                //              \
&gt; +                //           _______________ &lt;- margin box
&gt; +                //          |
&gt; +                //          |  ____________  &lt;- border box
&gt; +                //          | |
&gt; +                //          | |  _________  &lt;- content box
&gt; +                //          | | |   ^
&gt; +                //          | | |   |  &lt;- baseline offset
&gt; +                //          | | |   |
&gt; +                //     text | | |   v text
&gt; +                //     -----|-|-|---------- &lt;- baseline
&gt; +                //

Nice art.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580637</commentid>
    <comment_count>5</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2019-10-16 12:50:17 -0700</bug_when>
    <thetext>(In reply to Antti Koivisto from comment #4)
&gt; Comment on attachment 381083 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=381083&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/layout/inlineformatting/InlineLine.cpp:190
&gt; &gt; +                // The inline-block&apos;s baseline offset is relative to its content box. Let&apos;s convert it relative to the margin box.
&gt; &gt; +                //   inline-block
&gt; &gt; +                //              \
&gt; &gt; +                //           _______________ &lt;- margin box
&gt; &gt; +                //          |
&gt; &gt; +                //          |  ____________  &lt;- border box
&gt; &gt; +                //          | |
&gt; &gt; +                //          | |  _________  &lt;- content box
&gt; &gt; +                //          | | |   ^
&gt; &gt; +                //          | | |   |  &lt;- baseline offset
&gt; &gt; +                //          | | |   |
&gt; &gt; +                //     text | | |   v text
&gt; &gt; +                //     -----|-|-|---------- &lt;- baseline
&gt; &gt; +                //
&gt; 
&gt; Nice art.
I should have used emojis.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580654</commentid>
    <comment_count>6</comment_count>
      <attachid>381083</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-16 13:33:02 -0700</bug_when>
    <thetext>Comment on attachment 381083
Patch

Clearing flags on attachment: 381083

Committed r251200: &lt;https://trac.webkit.org/changeset/251200&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1580655</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-10-16 13:33:04 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381081</attachid>
            <date>2019-10-16 10:20:41 -0700</date>
            <delta_ts>2019-10-16 10:36:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203041-20191016102040.patch</filename>
            <type>text/plain</type>
            <size>19997</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFjOTgyMDY3NTFhYjY0
NDU0ZjllN2YzMDZmMWEwZWRlZTYxMDM0Mi4uOWEyMGU4YTYxODAxZTk5YmNlNmYwMjVlOTZkZjVh
MjNiYzkyMjExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTEwLTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBGaXggdmFy
aW91cyB2ZXJ0aWNhbCBhbGlnbm1lbnQgaXNzdWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBib3RoIHJlZ3VsYXIgaW5s
aW5lIGJveCBhbmQgaW5saW5lLWJsb2NrIGJhc2VsaW5lIGFsaWdtZW50LiBJdCBhbHNvIGFkZHJl
c3NlcyBhIGZldyByZWxhdGVkIHZlcnRpY2FsIHBvc2l0aW9uaW5nIGlzc3Vlcy4gCisKKyAgICAg
ICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6YWxpZ25Db250ZW50VmVydGljYWxseSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kSW5saW5lQ29udGFpbmVyRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppbmxpbmVJdGVtQ29udGVudEhlaWdo
dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5o
OgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6cmVzZXREZXNjZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVh
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QXNjZW50SWZHcmVh
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0RGVzY2VudElmR3Jl
YXRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnJlc2V0QmFzZWxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRCYXNlbGluZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJhc2VsaW5lKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6
c2V0QXNjZW50SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnRJZkdyZWF0ZXIpOiBEZWxldGVkLgorCiAyMDE5
LTEwLTE2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
VEZDXSBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpkaXN0cmlidXRlRXh0cmFIb3Jpem9udGFsU3Bh
Y2Ugc2hvdWxkIG5vdCBpZ25vcmUgZml4ZWQgd2lkdGggY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAppbmRleCBj
ZmQ5ZmU0MmE5OTk1OTRjZmFmOWFlZDMwZWNkOTJjZjBlZDJmZDM4Li5mNzU1ZDIwYzE1MWFlMWQy
YzdjNzEzZDVmZTllMGQ4NmFmMzkyNDdkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcApAQCAtMTQ0LDE1ICsxNDQsMTQg
QEAgdm9pZCBMaW5lOjphbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCkKICAgICBBU1NFUlQoIW1fc2tp
cEFsaWdubWVudCk7CiAKICAgICBpZiAoaXNWaXN1YWxseUVtcHR5KCkpIHsKLSAgICAgICAgbV9s
aW5lQm94LmJhc2VsaW5lKCkucmVzZXQoKTsKLSAgICAgICAgbV9saW5lQm94LnNldEJhc2VsaW5l
T2Zmc2V0KHsgfSk7CisgICAgICAgIG1fbGluZUJveC5yZXNldEJhc2VsaW5lKCk7CiAgICAgICAg
IG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KHsgfSk7CiAgICAgfQogCiAgICAgLy8gUmVtb3Zl
IGRlc2NlbnQgd2hlbiBhbGwgY29udGVudCBpcyBiYXNlbGluZSBhbGlnbmVkIGJ1dCBub25lIG9m
IHRoZW0gaGF2ZSBkZXNjZW50LgogICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dCgpLnF1aXJrcygp
LmxpbmVEZXNjZW50TmVlZHNDb2xsYXBzaW5nKG1fcnVuTGlzdCkpIHsKICAgICAgICAgbV9saW5l
Qm94LnNocmlua1ZlcnRpY2FsbHkobV9saW5lQm94LmJhc2VsaW5lKCkuZGVzY2VudCgpKTsKLSAg
ICAgICAgbV9saW5lQm94LmJhc2VsaW5lKCkuc2V0RGVzY2VudCh7IH0pOworICAgICAgICBtX2xp
bmVCb3gucmVzZXREZXNjZW50KCk7CiAgICAgfQogCiAgICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0
aGlzLT5sYXlvdXRTdGF0ZSgpOwpAQCAtMTc0LDggKzE3MywyNCBAQCB2b2lkIExpbmU6OmFsaWdu
Q29udGVudFZlcnRpY2FsbHkoKQogICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0
ZSA9IGRvd25jYXN0PElubGluZUZvcm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUuZXN0YWJsaXNo
ZWRGb3JtYXR0aW5nU3RhdGUoZG93bmNhc3Q8Q29udGFpbmVyPihsYXlvdXRCb3gpKSk7CiAgICAg
ICAgICAgICAgICAgLy8gU3BlYyBtYWtlcyB1cyBnZW5lcmF0ZSBhdCBsZWFzdCBvbmUgbGluZSAt
ZXZlbiBpZiBpdCBpcyBlbXB0eS4KICAgICAgICAgICAgICAgICBBU1NFUlQoIWZvcm1hdHRpbmdT
dGF0ZS5saW5lQm94ZXMoKS5pc0VtcHR5KCkpOwotICAgICAgICAgICAgICAgIGF1dG8gaW5saW5l
QmxvY2tCYXNlbGluZSA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCkuYmFzZWxp
bmUoKTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQoKSAtIGlu
bGluZUJsb2NrQmFzZWxpbmUuYXNjZW50KCk7CisgICAgICAgICAgICAgICAgYXV0byBpbmxpbmVC
bG9ja0Jhc2VsaW5lT2Zmc2V0ID0gZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmxhc3QoKS5i
YXNlbGluZU9mZnNldCgpOworICAgICAgICAgICAgICAgIC8vIFRoZSBpbmxpbmUtYmxvY2sncyBi
YXNlbGluZSBvZmZzZXQgaXMgcmVsYXRpdmUgdG8gaXRzIGNvbnRlbnQgYm94LiBMZXQncyBjb252
ZXJ0IGl0IHJlbGF0aXZlIHRvIHRoZSBtYXJnaW4gYm94LgorICAgICAgICAgICAgICAgIC8vICAg
aW5saW5lLWJsb2NrCisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgICAgIFwKKyAgICAgICAg
ICAgICAgICAvLyAgICAgICAgICAgX19fX19fX19fX19fX19fIDwtIG1hcmdpbiBib3gKKyAgICAg
ICAgICAgICAgICAvLyAgICAgICAgICB8CisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgfCAg
X19fX19fX19fX19fICA8LSBib3JkZXIgYm94CisgICAgICAgICAgICAgICAgLy8gICAgICAgICAg
fCB8CisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgfCB8ICBfX19fX19fX18gIDwtIGNvbnRl
bnQgYm94CisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgfCB8IHwgICBeCisgICAgICAgICAg
ICAgICAgLy8gICAgICAgICAgfCB8IHwgICB8ICA8LSBiYXNlbGluZSBvZmZzZXQKKyAgICAgICAg
ICAgICAgICAvLyAgICAgICAgICB8IHwgfCAgIHwKKyAgICAgICAgICAgICAgICAvLyAgICAgdGV4
dCB8IHwgfCAgIHYgdGV4dAorICAgICAgICAgICAgICAgIC8vICAgICAtLS0tLXwtfC18LS0tLS0t
LS0tLSA8LSBiYXNlbGluZQorICAgICAgICAgICAgICAgIC8vCisgICAgICAgICAgICAgICAgYXV0
byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChsYXlvdXRC
b3gpOworICAgICAgICAgICAgICAgIGF1dG8gYmFzZWxpbmVPZmZzZXRGcm9tTWFyZ2luQm94ID0g
Ym94R2VvbWV0cnkubWFyZ2luQmVmb3JlKCkgKyBib3hHZW9tZXRyeS5ib3JkZXJUb3AoKSArIGJv
eEdlb21ldHJ5LnBhZGRpbmdUb3AoKS52YWx1ZU9yKDApICsgaW5saW5lQmxvY2tCYXNlbGluZU9m
ZnNldDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQoKSAtIGJh
c2VsaW5lT2Zmc2V0RnJvbU1hcmdpbkJveDsKICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBiYXNlbGluZU9mZnNldCgpIC0gcnVuLT5sb2dpY2FsUmVjdCgp
LmhlaWdodCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0yOTQsOSArMzA5LDggQEAgdm9pZCBM
aW5lOjphcHBlbmRJbmxpbmVDb250YWluZXJTdGFydChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJ
dGVtLCBMYXlvdXRVbml0IGwKICAgICBhdXRvIGxvZ2ljYWxSZWN0ID0gRGlzcGxheTo6UmVjdCB7
IDAsIGNvbnRlbnRMb2dpY2FsV2lkdGgoKSwgbG9naWNhbFdpZHRoLCAwIH07CiAKICAgICBpZiAo
IW1fc2tpcEFsaWdubWVudCkgewotICAgICAgICBhdXRvIGxvZ2ljYWxIZWlnaHQgPSBpbmxpbmVJ
dGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKTsKLSAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRM
aW5lSGVpZ2h0KGlubGluZUl0ZW0sIGxvZ2ljYWxIZWlnaHQpOwotICAgICAgICBsb2dpY2FsUmVj
dC5zZXRIZWlnaHQobG9naWNhbEhlaWdodCk7CisgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGlu
ZUhlaWdodChpbmxpbmVJdGVtKTsKKyAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGlubGlu
ZUl0ZW1Db250ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKICAgICB9CiAgICAgYXBwZW5kTm9uQnJl
YWthYmxlU3BhY2UoaW5saW5lSXRlbSwgbG9naWNhbFJlY3QpOwogfQpAQCAtMzA0LDcgKzMxOCw3
IEBAIHZvaWQgTGluZTo6YXBwZW5kSW5saW5lQ29udGFpbmVyU3RhcnQoY29uc3QgSW5saW5lSXRl
bSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsCiB2b2lkIExpbmU6OmFwcGVuZElubGluZUNvbnRh
aW5lckVuZChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYWxX
aWR0aCkKIHsKICAgICAvLyBUaGlzIGlzIHJlYWxseSBqdXN0IGEgcGxhY2Vob2xkZXIgdG8gbWFy
ayB0aGUgZW5kIG9mIHRoZSBpbmxpbmUgbGV2ZWwgY29udGFpbmVyIDwvc3Bhbj4uCi0gICAgYXV0
byBsb2dpY2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9naWNhbFJpZ2h0KCks
IGxvZ2ljYWxXaWR0aCwgaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSkgfTsKKyAg
ICBhdXRvIGxvZ2ljYWxSZWN0ID0gRGlzcGxheTo6UmVjdCB7IDAsIGNvbnRlbnRMb2dpY2FsUmln
aHQoKSwgbG9naWNhbFdpZHRoLCBtX3NraXBBbGlnbm1lbnQgPyBMYXlvdXRVbml0KCkgOiBpbmxp
bmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSB9OwogICAgIGFwcGVuZE5vbkJyZWFrYWJs
ZVNwYWNlKGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KTsKIH0KIApAQCAtMzQxLDkgKzM1NSw4IEBA
IHZvaWQgTGluZTo6YXBwZW5kVGV4dENvbnRlbnQoY29uc3QgSW5saW5lVGV4dEl0ZW0mIGlubGlu
ZUl0ZW0sIExheW91dFVuaXQgbG9naWNhCiAgICAgbG9naWNhbFJlY3Quc2V0TGVmdChjb250ZW50
TG9naWNhbFdpZHRoKCkpOwogICAgIGxvZ2ljYWxSZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7
CiAgICAgaWYgKCFtX3NraXBBbGlnbm1lbnQpIHsKLSAgICAgICAgYXV0byBydW5IZWlnaHQgPSBp
bmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKTsKLSAgICAgICAgbG9naWNhbFJlY3Qu
c2V0SGVpZ2h0KHJ1bkhlaWdodCk7Ci0gICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdo
dChpbmxpbmVJdGVtLCBydW5IZWlnaHQpOworICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVI
ZWlnaHQoaW5saW5lSXRlbSk7CisgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChpbmxpbmVJ
dGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSk7CiAgICAgfQogCiAgICAgYXV0byBsaW5lSXRl
bSA9IG1ha2VVbmlxdWU8UnVuPihpbmxpbmVJdGVtLCBEaXNwbGF5OjpSdW4geyBsb2dpY2FsUmVj
dCwgRGlzcGxheTo6UnVuOjpUZXh0Q29udGV4dCB7IGlubGluZUl0ZW0uc3RhcnQoKSwgaW5saW5l
SXRlbS5pc0NvbGxhcHNlZCgpID8gMSA6IGlubGluZUl0ZW0ubGVuZ3RoKCkgfSB9KTsKQEAgLTM2
OCw4ICszODEsOSBAQCB2b2lkIExpbmU6OmFwcGVuZE5vblJlcGxhY2VkSW5saW5lQm94KGNvbnN0
IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbAogICAgIGxvZ2ljYWxSZWN0LnNl
dExlZnQoY29udGVudExvZ2ljYWxXaWR0aCgpICsgaG9yaXpvbnRhbE1hcmdpbi5zdGFydCk7CiAg
ICAgbG9naWNhbFJlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsKICAgICBpZiAoIW1fc2tpcEFs
aWdubWVudCkgewotICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRl
bSwgYm94R2VvbWV0cnkubWFyZ2luQm94SGVpZ2h0KCkpOwotICAgICAgICBsb2dpY2FsUmVjdC5z
ZXRIZWlnaHQoaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSkpOworICAgICAgICBh
ZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSk7CisgICAgICAgIGF1dG8gcnVu
SGVpZ2h0ID0gZm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChpbmxpbmVJdGVtLmxh
eW91dEJveCgpKS5tYXJnaW5Cb3hIZWlnaHQoKTsKKyAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVp
Z2h0KHJ1bkhlaWdodCk7CiAgICAgfQogCiAgICAgbV9ydW5MaXN0LmFwcGVuZChtYWtlVW5pcXVl
PFJ1bj4oaW5saW5lSXRlbSwgRGlzcGxheTo6UnVuIHsgbG9naWNhbFJlY3QgfSkpOwpAQCAtMzg5
LDEzICs0MDMsMTMgQEAgdm9pZCBMaW5lOjphcHBlbmRIYXJkTGluZUJyZWFrKGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0pCiAgICAgbG9naWNhbFJlY3Quc2V0TGVmdChjb250ZW50TG9naWNh
bFdpZHRoKCkpOwogICAgIGxvZ2ljYWxSZWN0LnNldFdpZHRoKHsgfSk7CiAgICAgaWYgKCFtX3Nr
aXBBbGlnbm1lbnQpIHsKLSAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGlu
ZUl0ZW0sIHsgfSk7CisgICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChpbmxpbmVJ
dGVtKTsKICAgICAgICAgbG9naWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQoKSk7CiAg
ICAgfQogICAgIG1fcnVuTGlzdC5hcHBlbmQobWFrZVVuaXF1ZTxSdW4+KGlubGluZUl0ZW0sIERp
c3BsYXk6OlJ1biB7IGxvZ2ljYWxSZWN0IH0pKTsKIH0KIAotdm9pZCBMaW5lOjphZGp1c3RCYXNl
bGluZUFuZExpbmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5p
dCBydW5IZWlnaHQpCit2b2lkIExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogewogICAgIEFTU0VSVCghaW5saW5lSXRlbS5pc0Nv
bnRhaW5lckVuZCgpKTsKICAgICBhdXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVJdGVtLmxheW91dEJv
eCgpOwpAQCAtNDA2LDE4ICs0MjAsMTYgQEAgdm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExp
bmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdAogICAgICAg
ICAvLyBJbmxpbmUgY29udGFpbmVycyBzdHJldGNoIHRoZSBsaW5lIGJ5IHRoZWlyIGZvbnQgc2l6
ZS4KICAgICAgICAgLy8gVmVydGljYWwgbWFyZ2lucywgcGFkZGluZ3MgYW5kIGJvcmRlcnMgZG9u
J3QgY29udHJpYnV0ZSB0byB0aGUgbGluZSBoZWlnaHQuCiAgICAgICAgIGF1dG8mIGZvbnRNZXRy
aWNzID0gc3R5bGUuZm9udE1ldHJpY3MoKTsKLSAgICAgICAgTGF5b3V0VW5pdCBjb250ZW50SGVp
Z2h0OwogICAgICAgICBpZiAoc3R5bGUudmVydGljYWxBbGlnbigpID09IFZlcnRpY2FsQWxpZ246
OkJhc2VsaW5lKSB7CiAgICAgICAgICAgICBhdXRvIGhhbGZMZWFkaW5nID0gaGFsZkxlYWRpbmdN
ZXRyaWNzKGZvbnRNZXRyaWNzLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7CiAgICAgICAg
ICAgICAvLyBCb3RoIGhhbGZsZWFkaW5nIGFzY2VudCBhbmQgZGVzY2VudCBjb3VsZCBiZSBuZWdh
dGl2ZSAodGFsbCBmb250IHZzLiBzbWFsbCBsaW5lLWhlaWdodCB2YWx1ZSkKICAgICAgICAgICAg
IGlmIChoYWxmTGVhZGluZy5kZXNjZW50KCkgPiAwKQotICAgICAgICAgICAgICAgIGJhc2VsaW5l
LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuZGVzY2VudCgpKTsKKyAgICAgICAgICAg
ICAgICBtX2xpbmVCb3guc2V0RGVzY2VudElmR3JlYXRlcihoYWxmTGVhZGluZy5kZXNjZW50KCkp
OwogICAgICAgICAgICAgaWYgKGhhbGZMZWFkaW5nLmFzY2VudCgpID4gMCkKLSAgICAgICAgICAg
ICAgICBiYXNlbGluZS5zZXRBc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuYXNjZW50KCkpOwot
ICAgICAgICAgICAgY29udGVudEhlaWdodCA9IGJhc2VsaW5lLmhlaWdodCgpOworICAgICAgICAg
ICAgICAgIG1fbGluZUJveC5zZXRBc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuYXNjZW50KCkp
OworICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoYmFzZWxp
bmUuaGVpZ2h0KCkpOwogICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIGNvbnRlbnRIZWlnaHQg
PSBmb250TWV0cmljcy5oZWlnaHQoKTsKLSAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWln
aHRJZkdyZWF0ZXIoY29udGVudEhlaWdodCwgTGluZUJveDo6QWRqdXN0QmFzZWxpbmU6Olllcyk7
CisgICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihmb250TWV0
cmljcy5oZWlnaHQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTQyNiwzNyArNDM4
LDUzIEBAIHZvaWQgTGluZTo6YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGlu
ZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQKICAgICAgICAgLy8gdGhyb3VnaCB0aGUgaW5s
aW5lIGNvbnRhaW5lciAoc3RhcnQpIC1zZWUgYWJvdmUuIE5vcm1hbGx5IHRoZSB0ZXh0IGNvbnRl
bnQgaXRzZWxmIGRvZXMgbm90IHN0cmV0Y2ggdGhlIGxpbmUuCiAgICAgICAgIGlmICghbV9pbml0
aWFsU3RydXQpCiAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGJhc2VsaW5lLnNldEFzY2Vu
dElmR3JlYXRlcihtX2luaXRpYWxTdHJ1dC0+YXNjZW50KCkpOwotICAgICAgICBiYXNlbGluZS5z
ZXREZXNjZW50SWZHcmVhdGVyKG1faW5pdGlhbFN0cnV0LT5kZXNjZW50KCkpOwotICAgICAgICBt
X2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihiYXNlbGluZS5oZWlnaHQoKSwgTGlu
ZUJveDo6QWRqdXN0QmFzZWxpbmU6Olllcyk7CisgICAgICAgIG1fbGluZUJveC5zZXRBc2NlbnRJ
ZkdyZWF0ZXIobV9pbml0aWFsU3RydXQtPmFzY2VudCgpKTsKKyAgICAgICAgbV9saW5lQm94LnNl
dERlc2NlbnRJZkdyZWF0ZXIobV9pbml0aWFsU3RydXQtPmRlc2NlbnQoKSk7CisgICAgICAgIG1f
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKGJhc2VsaW5lLmhlaWdodCgpKTsKICAg
ICAgICAgbV9pbml0aWFsU3RydXQgPSB7IH07CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICBpZiAoaW5saW5lSXRlbS5pc0JveCgpKSB7CisgICAgICAgIGF1dG8mIGJveEdlb21ldHJ5ID0g
Zm9ybWF0dGluZ0NvbnRleHQoKS5nZW9tZXRyeUZvckJveChsYXlvdXRCb3gpOworICAgICAgICBh
dXRvIG1hcmdpbkJveEhlaWdodCA9IGJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdodCgpOworCiAg
ICAgICAgIHN3aXRjaCAoc3R5bGUudmVydGljYWxBbGlnbigpKSB7CiAgICAgICAgIGNhc2UgVmVy
dGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKLSAgICAgICAgICAgIGF1dG8gbmV3QmFzZWxpbmVDYW5k
aWRhdGUgPSBMaW5lQm94OjpCYXNlbGluZSB7IHJ1bkhlaWdodCwgMCB9OwogICAgICAgICAgICAg
aWYgKGxheW91dEJveC5pc0lubGluZUJsb2NrQm94KCkgJiYgbGF5b3V0Qm94LmVzdGFibGlzaGVz
SW5saW5lRm9ybWF0dGluZ0NvbnRleHQoKSkgewogICAgICAgICAgICAgICAgIC8vIElubGluZS1i
bG9ja3Mgd2l0aCBpbmxpbmUgY29udGVudCBhbHdheXMgaGF2ZSBiYXNlbGluZXMuCiAgICAgICAg
ICAgICAgICAgYXV0byYgZm9ybWF0dGluZ1N0YXRlID0gZG93bmNhc3Q8SW5saW5lRm9ybWF0dGlu
Z1N0YXRlPihsYXlvdXRTdGF0ZSgpLmVzdGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0
PENvbnRhaW5lcj4obGF5b3V0Qm94KSkpOwogICAgICAgICAgICAgICAgIC8vIFNwZWMgbWFrZXMg
dXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25lIGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1wdHkuCiAgICAg
ICAgICAgICAgICAgQVNTRVJUKCFmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgp
KTsKLSAgICAgICAgICAgICAgICBuZXdCYXNlbGluZUNhbmRpZGF0ZSA9IGZvcm1hdHRpbmdTdGF0
ZS5saW5lQm94ZXMoKS5sYXN0KCkuYmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBs
YXN0TGluZUJveCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5sYXN0KCk7CisgICAgICAg
ICAgICAgICAgYXV0byBpbmxpbmVCbG9ja0Jhc2VsaW5lID0gbGFzdExpbmVCb3guYmFzZWxpbmUo
KTsKKyAgICAgICAgICAgICAgICBhdXRvIGJlZm9yZUhlaWdodCA9IGJveEdlb21ldHJ5Lm1hcmdp
bkJlZm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5n
VG9wKCkudmFsdWVPcigwKTsKKworICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRBc2NlbnRJ
ZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNlbGluZS5hc2NlbnQoKSk7CisgICAgICAgICAgICAgICAg
bV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaW5saW5lQmxvY2tCYXNlbGluZS5kZXNjZW50
KCkpOworICAgICAgICAgICAgICAgIG1fbGluZUJveC5zZXRCYXNlbGluZU9mZnNldElmR3JlYXRl
cihiZWZvcmVIZWlnaHQgKyBsYXN0TGluZUJveC5iYXNlbGluZU9mZnNldCgpKTsKKyAgICAgICAg
ICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWln
aHQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBOb24gaW5saW5l
LWJsb2NrIGJveGVzIHNpdCBvbiB0aGUgYmFzZWxpbmUgKGluY2x1ZGluZyB0aGVpciBib3R0b20g
bWFyZ2luKS4KKyAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKG1h
cmdpbkJveEhlaWdodCk7CisgICAgICAgICAgICAgICAgLy8gSWdub3JlIG5lZ2F0aXZlIGRlc2Nl
bnQgKHllcywgbmVnYXRpdmUgZGVzY2VudCBpcyBhIHRoaW5nKS4KKyAgICAgICAgICAgICAgICBt
X2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQgKyBzdGQ6
Om1heChMYXlvdXRVbml0KCksIGJhc2VsaW5lLmRlc2NlbnQoKSkpOwogICAgICAgICAgICAgfQot
ICAgICAgICAgICAgYmFzZWxpbmUuc2V0QXNjZW50SWZHcmVhdGVyKG5ld0Jhc2VsaW5lQ2FuZGlk
YXRlLmFzY2VudCgpKTsKLSAgICAgICAgICAgIGJhc2VsaW5lLnNldERlc2NlbnRJZkdyZWF0ZXIo
bmV3QmFzZWxpbmVDYW5kaWRhdGUuZGVzY2VudCgpKTsKLSAgICAgICAgICAgIG1fbGluZUJveC5z
ZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKHN0ZDo6bWF4KHJ1bkhlaWdodCwgYmFzZWxpbmUuaGVp
Z2h0KCkpLCBMaW5lQm94OjpBZGp1c3RCYXNlbGluZTo6WWVzKTsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICB9CiAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VG9wOgotICAgICAgICAg
ICAgLy8gVG9wIGFsaWduIGNvbnRlbnQgbmV2ZXIgY2hhbmdlcyB0aGUgYmFzZWxpbmUgb2Zmc2V0
LCBpdCBvbmx5IHB1c2hlcyB0aGUgYm90dG9tIG9mIHRoZSBsaW5lIGZ1cnRoZXIgZG93bi4KLSAg
ICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKHJ1bkhlaWdodCwg
TGluZUJveDo6QWRqdXN0QmFzZWxpbmU6Ok5vKTsKKyAgICAgICAgICAgIC8vIFRvcCBhbGlnbiBj
b250ZW50IG5ldmVyIGNoYW5nZXMgdGhlIGJhc2VsaW5lLCBpdCBvbmx5IHB1c2hlcyB0aGUgYm90
dG9tIG9mIHRoZSBsaW5lIGZ1cnRoZXIgZG93bi4KKyAgICAgICAgICAgIG1fbGluZUJveC5zZXRM
b2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJveEhlaWdodCk7CiAgICAgICAgICAgICBicmVh
azsKLSAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCb3R0b206CisgICAgICAgIGNhc2UgVmVy
dGljYWxBbGlnbjo6Qm90dG9tOiB7CiAgICAgICAgICAgICAvLyBCb3R0b20gYWxpZ25lZCwgdGFs
bCBjb250ZW50IHB1c2hlcyB0aGUgYmFzZWxpbmUgZnVydGhlciBkb3duIGZyb20gdGhlIGxpbmUg
dG9wLgotICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIocnVu
SGVpZ2h0LCBMaW5lQm94OjpBZGp1c3RCYXNlbGluZTo6WWVzKTsKKyAgICAgICAgICAgIGF1dG8g
bGluZUxvZ2ljYWxIZWlnaHQgPSBtX2xpbmVCb3gubG9naWNhbEhlaWdodCgpOworICAgICAgICAg
ICAgaWYgKG1hcmdpbkJveEhlaWdodCA+IGxpbmVMb2dpY2FsSGVpZ2h0KSB7CisgICAgICAgICAg
ICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0
KTsKKyAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJZkdyZWF0ZXIo
bV9saW5lQm94LmJhc2VsaW5lT2Zmc2V0KCkgKyAobWFyZ2luQm94SGVpZ2h0IC0gbGluZUxvZ2lj
YWxIZWlnaHQpKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lF
VCgpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC00NzYsMTcgKzUwNCwxNCBAQCBMYXlvdXRVbml0
IExpbmU6OmlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0
ZW0pIGNvbnN0CiAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lSXRlbS5sYXlvdXRCb3goKTsK
ICAgICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JC
b3gobGF5b3V0Qm94KTsKIAotICAgIGlmIChsYXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQo
KSkKLSAgICAgICAgcmV0dXJuIGJveEdlb21ldHJ5LmJvcmRlckJveEhlaWdodCgpOwotCi0gICAg
aWYgKGxheW91dEJveC5yZXBsYWNlZCgpKQotICAgICAgICByZXR1cm4gYm94R2VvbWV0cnkuYm9y
ZGVyQm94SGVpZ2h0KCk7CisgICAgaWYgKGxheW91dEJveC5yZXBsYWNlZCgpIHx8IGxheW91dEJv
eC5pc0Zsb2F0aW5nUG9zaXRpb25lZCgpKQorICAgICAgICByZXR1cm4gYm94R2VvbWV0cnkuY29u
dGVudEJveEhlaWdodCgpOwogCiAgICAgaWYgKGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgp
IHx8IGlubGluZUl0ZW0uaXNDb250YWluZXJFbmQoKSkKLSAgICAgICAgcmV0dXJuIGZvbnRNZXRy
aWNzLmhlaWdodCgpICsgYm94R2VvbWV0cnkudmVydGljYWxCb3JkZXIoKSArIGJveEdlb21ldHJ5
LnZlcnRpY2FsUGFkZGluZygpLnZhbHVlT3IoMCk7CisgICAgICAgIHJldHVybiBmb250TWV0cmlj
cy5oZWlnaHQoKTsKIAotICAgIC8vIE5vbi1yZXBsYWNlZCBpbmxpbmUgYm94IChlLmcuIGlubGlu
ZS1ibG9jaykKLSAgICByZXR1cm4gYm94R2VvbWV0cnkuYm9yZGVyQm94SGVpZ2h0KCk7CisgICAg
Ly8gTm9uLXJlcGxhY2VkIGlubGluZSBib3ggKGUuZy4gaW5saW5lLWJsb2NrKS4gSXQgbG9va3Mg
YSBiaXQgbWlzbGVhZGluZyBidXQgdGhlaXIgbWFyZ2luIGJveCBpcyBjb25zaWRlcmVkIHRoZSBj
b250ZW50IGhlaWdodCBoZXJlLgorICAgIHJldHVybiBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWln
aHQoKTsKIH0KIAogTGluZUJveDo6QmFzZWxpbmUgTGluZTo6aGFsZkxlYWRpbmdNZXRyaWNzKGNv
bnN0IEZvbnRNZXRyaWNzJiBmb250TWV0cmljcywgTGF5b3V0VW5pdCBsaW5lTG9naWNhbEhlaWdo
dCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmUuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmUuaAppbmRleCBmNmYzM2YyNjMzMzIxYTU3M2RhMzE4MzM2MjQwYjAzZmViNjE5ZDI3Li4w
M2I4OGEzMzgyNGQ3ODFjOWY1YTQ5ZDllNmQxYjQ4MTJlNWQ0NTBmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCkBAIC0xMjks
NyArMTI5LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFsaWduQ29udGVudEhvcml6b250YWxseSgp
OwogICAgIHZvaWQgYWxpZ25Db250ZW50VmVydGljYWxseSgpOwogCi0gICAgdm9pZCBhZGp1c3RC
YXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3QgSW5saW5lSXRlbSYsIExheW91dFVuaXQgcnVuSGVp
Z2h0KTsKKyAgICB2b2lkIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25zdCBJbmxpbmVJ
dGVtJik7CiAgICAgTGF5b3V0VW5pdCBpbmxpbmVJdGVtQ29udGVudEhlaWdodChjb25zdCBJbmxp
bmVJdGVtJikgY29uc3Q7CiAgICAgYm9vbCBpc1Zpc3VhbGx5RW1wdHkoKSBjb25zdDsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGlu
ZUJveC5oCmluZGV4IDUzZTU5ZjNiYzc1ZjM4ZTE5YTRiMTU2NzQyZDhlOTBkNDlhM2Q1YzQuLmQx
YmQwNTEyMWZmY2M3NjRkYjE5NzY2NDY1MzA5NTA4YzIyY2RhOGEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgKQEAg
LTQwLDggKzQwLDYgQEAgcHVibGljOgogCiAgICAgICAgIHZvaWQgc2V0QXNjZW50KExheW91dFVu
aXQpOwogICAgICAgICB2b2lkIHNldERlc2NlbnQoTGF5b3V0VW5pdCk7Ci0gICAgICAgIHZvaWQg
c2V0QXNjZW50SWZHcmVhdGVyKExheW91dFVuaXQpOwotICAgICAgICB2b2lkIHNldERlc2NlbnRJ
ZkdyZWF0ZXIoTGF5b3V0VW5pdCk7CiAKICAgICAgICAgdm9pZCByZXNldCgpOwogCkBAIC03MSw5
ICs2OSw3IEBAIHB1YmxpYzoKICAgICBMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCgpIGNvbnN0IHsg
cmV0dXJuIG1fcmVjdC53aWR0aCgpOyB9CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KCkg
Y29uc3QgeyByZXR1cm4gbV9yZWN0LmhlaWdodCgpOyB9CiAKLSAgICB2b2lkIHNldEJhc2VsaW5l
KEJhc2VsaW5lKTsKICAgICBjb25zdCBCYXNlbGluZSYgYmFzZWxpbmUoKSBjb25zdDsKLSAgICBC
YXNlbGluZSYgYmFzZWxpbmUoKTsKICAgICAvLyBCYXNlbGluZSBvZmZzZXQgZnJvbSBsaW5lIGxv
Z2ljYWwgdG9wLiBOb3RlIHRoYXQgb2Zmc2V0IGRvZXMgbm90IG5lY2Vzc2FyaWx5IGVxdWFsIHRv
IGFzY2VudC4KICAgICAvLwogICAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0gICAgbGluZSBsb2dp
Y2FsIHRvcCAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLSAodG9wIGFsaWduKQpAQCAtOTAsMTMgKzg2
LDE3IEBAIHB1YmxpYzoKICAgICAvLyAgIHYKICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAg
IGxpbmUgbG9naWNhbCBib3R0b20gIC0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBMYXlvdXRVbml0
IGJhc2VsaW5lT2Zmc2V0KCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldChMYXlv
dXRVbml0KTsKKyAgICB2b2lkIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKExheW91dFVuaXQp
OworICAgIHZvaWQgc2V0QXNjZW50SWZHcmVhdGVyKExheW91dFVuaXQpOworICAgIHZvaWQgc2V0
RGVzY2VudElmR3JlYXRlcihMYXlvdXRVbml0KTsKKworICAgIHZvaWQgcmVzZXRCYXNlbGluZSgp
OworICAgIHZvaWQgcmVzZXREZXNjZW50KCkgeyBtX2Jhc2VsaW5lLnNldERlc2NlbnQoeyB9KTsg
fQogCiAgICAgdm9pZCBzZXRMb2dpY2FsVG9wTGVmdChMYXlvdXRQb2ludCBsb2dpY2FsVG9wTGVm
dCkgeyBtX3JlY3Quc2V0VG9wTGVmdChsb2dpY2FsVG9wTGVmdCk7IH0KICAgICB2b2lkIHNldExv
Z2ljYWxIZWlnaHQoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KSB7IG1fcmVjdC5zZXRIZWlnaHQo
bG9naWNhbEhlaWdodCk7IH0KIAotICAgIGVudW0gY2xhc3MgQWRqdXN0QmFzZWxpbmUgeyBObywg
WWVzIH07Ci0gICAgdm9pZCBzZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKExheW91dFVuaXQgbG9n
aWNhbEhlaWdodCwgQWRqdXN0QmFzZWxpbmUpOworICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodElm
R3JlYXRlcihMYXlvdXRVbml0KTsKICAgICB2b2lkIHNldExvZ2ljYWxXaWR0aChMYXlvdXRVbml0
IGxvZ2ljYWxXaWR0aCkgeyBtX3JlY3Quc2V0V2lkdGgobG9naWNhbFdpZHRoKTsgfQogCiAgICAg
dm9pZCBtb3ZlSG9yaXpvbnRhbGx5KExheW91dFVuaXQgZGVsdGEpIHsgbV9yZWN0Lm1vdmVIb3Jp
em9udGFsbHkoZGVsdGEpOyB9CkBAIC0xMjgsNDIgKzEyOCw0MCBAQCBpbmxpbmUgTGluZUJveDo6
TGluZUJveChEaXNwbGF5OjpSZWN0IHJlY3QsIGNvbnN0IEJhc2VsaW5lJiBiYXNlbGluZSwgTGF5
b3V0VW5pdAogI2VuZGlmCiB9CiAKLWlubGluZSB2b2lkIExpbmVCb3g6OnNldExvZ2ljYWxIZWln
aHRJZkdyZWF0ZXIoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0LCBBZGp1c3RCYXNlbGluZSBhZGp1
c3RCYXNlbGluZSkKK2lubGluZSB2b2lkIExpbmVCb3g6OnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0
ZXIoTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0KQogewotICAgIGF1dG8gZGlmZiA9IGxvZ2ljYWxI
ZWlnaHQgLSBtX3JlY3QuaGVpZ2h0KCk7Ci0gICAgaWYgKGRpZmYgPD0gMCkKKyAgICBpZiAobG9n
aWNhbEhlaWdodCA8PSBtX3JlY3QuaGVpZ2h0KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBpZiAo
YWRqdXN0QmFzZWxpbmUgPT0gQWRqdXN0QmFzZWxpbmU6OlllcykKLSAgICAgICAgc2V0QmFzZWxp
bmVPZmZzZXQoYmFzZWxpbmVPZmZzZXQoKSArIGRpZmYpOwogICAgIG1fcmVjdC5zZXRIZWlnaHQo
bG9naWNhbEhlaWdodCk7CiB9CiAKLWlubGluZSB2b2lkIExpbmVCb3g6OnNldEJhc2VsaW5lKEJh
c2VsaW5lIGJhc2VsaW5lKQotewotI2lmICFBU1NFUlRfRElTQUJMRUQKLSAgICBtX2hhc1ZhbGlk
QmFzZWxpbmUgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9iYXNlbGluZSA9IGJhc2VsaW5lOwotfQot
CiBpbmxpbmUgY29uc3QgTGluZUJveDo6QmFzZWxpbmUmIExpbmVCb3g6OmJhc2VsaW5lKCkgY29u
c3QKIHsKICAgICBBU1NFUlQobV9oYXNWYWxpZEJhc2VsaW5lKTsKICAgICByZXR1cm4gbV9iYXNl
bGluZTsKIH0KIAotaW5saW5lIExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OjpiYXNlbGluZSgp
Ci17Ci0gICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7Ci0gICAgcmV0dXJuIG1fYmFzZWxp
bmU7Ci19Ci0KLWlubGluZSB2b2lkIExpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0KExheW91dFVu
aXQgYmFzZWxpbmVPZmZzZXQpCitpbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNl
dElmR3JlYXRlcihMYXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQogewogI2lmICFBU1NFUlRfRElT
QUJMRUQKICAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOwogI2VuZGlmCi0gICAg
bV9iYXNlbGluZU9mZnNldCA9IGJhc2VsaW5lT2Zmc2V0OworICAgIG1fYmFzZWxpbmVPZmZzZXQg
PSBzdGQ6Om1heChiYXNlbGluZU9mZnNldCwgbV9iYXNlbGluZU9mZnNldCk7Cit9CisKK2lubGlu
ZSB2b2lkIExpbmVCb3g6OnNldEFzY2VudElmR3JlYXRlcihMYXlvdXRVbml0IGFzY2VudCkKK3sK
KyAgICBpZiAoYXNjZW50IDwgbV9iYXNlbGluZS5hc2NlbnQoKSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIHNldEJhc2VsaW5lT2Zmc2V0SWZHcmVhdGVyKGFzY2VudCk7CisgICAgbV9iYXNlbGluZS5z
ZXRBc2NlbnQoYXNjZW50KTsKK30KKworaW5saW5lIHZvaWQgTGluZUJveDo6c2V0RGVzY2VudElm
R3JlYXRlcihMYXlvdXRVbml0IGRlc2NlbnQpCit7CisgICAgaWYgKGRlc2NlbnQgPCBtX2Jhc2Vs
aW5lLmRlc2NlbnQoKSkKKyAgICAgICAgcmV0dXJuOworICAgIG1fYmFzZWxpbmUuc2V0RGVzY2Vu
dChkZXNjZW50KTsKIH0KIAogaW5saW5lIExheW91dFVuaXQgTGluZUJveDo6YmFzZWxpbmVPZmZz
ZXQoKSBjb25zdApAQCAtMTcyLDYgKzE3MCwxNSBAQCBpbmxpbmUgTGF5b3V0VW5pdCBMaW5lQm94
OjpiYXNlbGluZU9mZnNldCgpIGNvbnN0CiAgICAgcmV0dXJuIG1fYmFzZWxpbmVPZmZzZXQ7CiB9
CiAKK2lubGluZSB2b2lkIExpbmVCb3g6OnJlc2V0QmFzZWxpbmUoKQoreworI2lmICFBU1NFUlRf
RElTQUJMRUQKKyAgICBtX2hhc1ZhbGlkQmFzZWxpbmVPZmZzZXQgPSB0cnVlOworI2VuZGlmCisg
ICAgbV9iYXNlbGluZU9mZnNldCA9IHsgfTsKKyAgICBtX2Jhc2VsaW5lLnJlc2V0KCk7Cit9CisK
IGlubGluZSBMaW5lQm94OjpCYXNlbGluZTo6QmFzZWxpbmUoTGF5b3V0VW5pdCBhc2NlbnQsIExh
eW91dFVuaXQgZGVzY2VudCkKICAgICA6IG1fYXNjZW50KGFzY2VudCkKICAgICAsIG1fZGVzY2Vu
dChkZXNjZW50KQpAQCAtMTk4LDIyICsyMDUsNiBAQCBpbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNl
bGluZTo6c2V0RGVzY2VudChMYXlvdXRVbml0IGRlc2NlbnQpCiAgICAgbV9kZXNjZW50ID0gZGVz
Y2VudDsKIH0KIAotaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxpbmU6OnNldEFzY2VudElmR3Jl
YXRlcihMYXlvdXRVbml0IGFzY2VudCkKLXsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgbV9o
YXNWYWxpZEFzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBtX2FzY2VudCA9IHN0ZDo6bWF4KGFz
Y2VudCwgbV9hc2NlbnQpOwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpCYXNlbGluZTo6c2V0
RGVzY2VudElmR3JlYXRlcihMYXlvdXRVbml0IGRlc2NlbnQpCi17Ci0jaWYgIUFTU0VSVF9ESVNB
QkxFRAotICAgIG1faGFzVmFsaWREZXNjZW50ID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fZGVzY2Vu
dCA9IHN0ZDo6bWF4KGRlc2NlbnQsIG1fZGVzY2VudCk7Ci19Ci0KIGlubGluZSB2b2lkIExpbmVC
b3g6OkJhc2VsaW5lOjpyZXNldCgpCiB7CiAjaWYgIUFTU0VSVF9ESVNBQkxFRAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>381083</attachid>
            <date>2019-10-16 10:36:55 -0700</date>
            <delta_ts>2019-10-16 13:33:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-203041-20191016103654.patch</filename>
            <type>text/plain</type>
            <size>20688</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjUxMTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWFjOTgyMDY3NTFhYjY0
NDU0ZjllN2YzMDZmMWEwZWRlZTYxMDM0Mi4uOWEyMGU4YTYxODAxZTk5YmNlNmYwMjVlOTZkZjVh
MjNiYzkyMjExNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM1IEBACisyMDE5LTEwLTE2ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBGaXggdmFy
aW91cyB2ZXJ0aWNhbCBhbGlnbm1lbnQgaXNzdWVzLgorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAzMDQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBwYXRjaCBmaXhlcyBib3RoIHJlZ3VsYXIgaW5s
aW5lIGJveCBhbmQgaW5saW5lLWJsb2NrIGJhc2VsaW5lIGFsaWdtZW50LiBJdCBhbHNvIGFkZHJl
c3NlcyBhIGZldyByZWxhdGVkIHZlcnRpY2FsIHBvc2l0aW9uaW5nIGlzc3Vlcy4gCisKKyAgICAg
ICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6TGluZTo6YWxpZ25Db250ZW50VmVydGljYWxseSk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kSW5saW5lQ29udGFpbmVyRW5kKToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZTo6YXBwZW5kVGV4dENvbnRlbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJveCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmU6OmFwcGVuZEhhcmRMaW5lQnJlYWspOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lOjppbmxpbmVJdGVtQ29udGVudEhlaWdo
dCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5o
OgorICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guaDoKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6cmVzZXREZXNjZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0TG9naWNhbEhlaWdodElmR3JlYXRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnNldEJhc2VsaW5lT2Zmc2V0SWZHcmVh
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QXNjZW50SWZHcmVh
dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0RGVzY2VudElmR3Jl
YXRlcik6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OnJlc2V0QmFzZWxpbmUp
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpzZXRCYXNlbGluZSk6IERlbGV0
ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OmJhc2VsaW5lKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJveDo6c2V0QmFzZWxpbmVPZmZzZXQp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94OjpCYXNlbGluZTo6
c2V0QXNjZW50SWZHcmVhdGVyKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
TGluZUJveDo6QmFzZWxpbmU6OnNldERlc2NlbnRJZkdyZWF0ZXIpOiBEZWxldGVkLgorCiAyMDE5
LTEwLTE2ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11b
VEZDXSBUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpkaXN0cmlidXRlRXh0cmFIb3Jpem9udGFsU3Bh
Y2Ugc2hvdWxkIG5vdCBpZ25vcmUgZml4ZWQgd2lkdGggY29sdW1ucwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAppbmRleCBj
ZmQ5ZmU0MmE5OTk1OTRjZmFmOWFlZDMwZWNkOTJjZjBlZDJmZDM4Li5iODE5ZmY3Mzg2NjM3NTAy
Y2MzYWUxNzY5ZTJlMGQwZmIzNDQxMWFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lLmNwcApAQCAtNjksNyArNjksNyBAQCBM
aW5lOjpMaW5lKGNvbnN0IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBpbmxpbmVGb3JtYXR0aW5n
Q29udGV4dCwgY29uc3QgSW5pdGlhbAogICAgIGF1dG8gaW5pdGlhbEJhc2VsaW5lT2Zmc2V0ID0g
aW5pdGlhbENvbnN0cmFpbnRzLmhlaWdodEFuZEJhc2VsaW5lID8gaW5pdGlhbENvbnN0cmFpbnRz
LmhlaWdodEFuZEJhc2VsaW5lLT5iYXNlbGluZU9mZnNldCA6IExheW91dFVuaXQoKTsKICAgICBh
dXRvIGxpbmVSZWN0ID0gRGlzcGxheTo6UmVjdCB7IGluaXRpYWxDb25zdHJhaW50cy5sb2dpY2Fs
VG9wTGVmdCwgeyB9LCBpbml0aWFsTGluZUhlaWdodCB9OwogICAgIGF1dG8gYmFzZWxpbmUgPSBM
aW5lQm94OjpCYXNlbGluZSB7IGluaXRpYWxCYXNlbGluZU9mZnNldCwgaW5pdGlhbExpbmVIZWln
aHQgLSBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKLSAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsg
bGluZVJlY3QsIGJhc2VsaW5lLCB7IH0gfTsKKyAgICBtX2xpbmVCb3ggPSBMaW5lQm94IHsgbGlu
ZVJlY3QsIGJhc2VsaW5lLCBpbml0aWFsQmFzZWxpbmVPZmZzZXQgfTsKIH0KIAogc3RhdGljIGJv
b2wgaXNJbmxpbmVDb250YWluZXJDb25zaWRlcmVkRW1wdHkoY29uc3QgRm9ybWF0dGluZ0NvbnRl
eHQmIGZvcm1hdHRpbmdDb250ZXh0LCBjb25zdCBCb3gmIGxheW91dEJveCkKQEAgLTE0NCwxNSAr
MTQ0LDE0IEBAIHZvaWQgTGluZTo6YWxpZ25Db250ZW50VmVydGljYWxseSgpCiAgICAgQVNTRVJU
KCFtX3NraXBBbGlnbm1lbnQpOwogCiAgICAgaWYgKGlzVmlzdWFsbHlFbXB0eSgpKSB7Ci0gICAg
ICAgIG1fbGluZUJveC5iYXNlbGluZSgpLnJlc2V0KCk7Ci0gICAgICAgIG1fbGluZUJveC5zZXRC
YXNlbGluZU9mZnNldCh7IH0pOworICAgICAgICBtX2xpbmVCb3gucmVzZXRCYXNlbGluZSgpOwog
ICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodCh7IH0pOwogICAgIH0KIAogICAgIC8v
IFJlbW92ZSBkZXNjZW50IHdoZW4gYWxsIGNvbnRlbnQgaXMgYmFzZWxpbmUgYWxpZ25lZCBidXQg
bm9uZSBvZiB0aGVtIGhhdmUgZGVzY2VudC4KICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHQoKS5x
dWlya3MoKS5saW5lRGVzY2VudE5lZWRzQ29sbGFwc2luZyhtX3J1bkxpc3QpKSB7CiAgICAgICAg
IG1fbGluZUJveC5zaHJpbmtWZXJ0aWNhbGx5KG1fbGluZUJveC5iYXNlbGluZSgpLmRlc2NlbnQo
KSk7Ci0gICAgICAgIG1fbGluZUJveC5iYXNlbGluZSgpLnNldERlc2NlbnQoeyB9KTsKKyAgICAg
ICAgbV9saW5lQm94LnJlc2V0RGVzY2VudCgpOwogICAgIH0KIAogICAgIGF1dG8mIGxheW91dFN0
YXRlID0gdGhpcy0+bGF5b3V0U3RhdGUoKTsKQEAgLTE3NCw4ICsxNzMsMjQgQEAgdm9pZCBMaW5l
OjphbGlnbkNvbnRlbnRWZXJ0aWNhbGx5KCkKICAgICAgICAgICAgICAgICBhdXRvJiBmb3JtYXR0
aW5nU3RhdGUgPSBkb3duY2FzdDxJbmxpbmVGb3JtYXR0aW5nU3RhdGU+KGxheW91dFN0YXRlLmVz
dGFibGlzaGVkRm9ybWF0dGluZ1N0YXRlKGRvd25jYXN0PENvbnRhaW5lcj4obGF5b3V0Qm94KSkp
OwogICAgICAgICAgICAgICAgIC8vIFNwZWMgbWFrZXMgdXMgZ2VuZXJhdGUgYXQgbGVhc3Qgb25l
IGxpbmUgLWV2ZW4gaWYgaXQgaXMgZW1wdHkuCiAgICAgICAgICAgICAgICAgQVNTRVJUKCFmb3Jt
YXR0aW5nU3RhdGUubGluZUJveGVzKCkuaXNFbXB0eSgpKTsKLSAgICAgICAgICAgICAgICBhdXRv
IGlubGluZUJsb2NrQmFzZWxpbmUgPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgp
LmJhc2VsaW5lKCk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0
KCkgLSBpbmxpbmVCbG9ja0Jhc2VsaW5lLmFzY2VudCgpOworICAgICAgICAgICAgICAgIGF1dG8g
aW5saW5lQmxvY2tCYXNlbGluZU9mZnNldCA9IGZvcm1hdHRpbmdTdGF0ZS5saW5lQm94ZXMoKS5s
YXN0KCkuYmFzZWxpbmVPZmZzZXQoKTsKKyAgICAgICAgICAgICAgICAvLyBUaGUgaW5saW5lLWJs
b2NrJ3MgYmFzZWxpbmUgb2Zmc2V0IGlzIHJlbGF0aXZlIHRvIGl0cyBjb250ZW50IGJveC4gTGV0
J3MgY29udmVydCBpdCByZWxhdGl2ZSB0byB0aGUgbWFyZ2luIGJveC4KKyAgICAgICAgICAgICAg
ICAvLyAgIGlubGluZS1ibG9jaworICAgICAgICAgICAgICAgIC8vICAgICAgICAgICAgICBcCisg
ICAgICAgICAgICAgICAgLy8gICAgICAgICAgIF9fX19fX19fX19fX19fXyA8LSBtYXJnaW4gYm94
CisgICAgICAgICAgICAgICAgLy8gICAgICAgICAgfAorICAgICAgICAgICAgICAgIC8vICAgICAg
ICAgIHwgIF9fX19fX19fX19fXyAgPC0gYm9yZGVyIGJveAorICAgICAgICAgICAgICAgIC8vICAg
ICAgICAgIHwgfAorICAgICAgICAgICAgICAgIC8vICAgICAgICAgIHwgfCAgX19fX19fX19fICA8
LSBjb250ZW50IGJveAorICAgICAgICAgICAgICAgIC8vICAgICAgICAgIHwgfCB8ICAgXgorICAg
ICAgICAgICAgICAgIC8vICAgICAgICAgIHwgfCB8ICAgfCAgPC0gYmFzZWxpbmUgb2Zmc2V0Cisg
ICAgICAgICAgICAgICAgLy8gICAgICAgICAgfCB8IHwgICB8CisgICAgICAgICAgICAgICAgLy8g
ICAgIHRleHQgfCB8IHwgICB2IHRleHQKKyAgICAgICAgICAgICAgICAvLyAgICAgLS0tLS18LXwt
fC0tLS0tLS0tLS0gPC0gYmFzZWxpbmUKKyAgICAgICAgICAgICAgICAvLworICAgICAgICAgICAg
ICAgIGF1dG8mIGJveEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3go
bGF5b3V0Qm94KTsKKyAgICAgICAgICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbU1hcmdp
bkJveCA9IGJveEdlb21ldHJ5Lm1hcmdpbkJlZm9yZSgpICsgYm94R2VvbWV0cnkuYm9yZGVyVG9w
KCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigwKSArIGlubGluZUJsb2NrQmFz
ZWxpbmVPZmZzZXQ7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGJhc2VsaW5lT2Zmc2V0
KCkgLSBiYXNlbGluZU9mZnNldEZyb21NYXJnaW5Cb3g7CiAgICAgICAgICAgICB9IGVsc2UKICAg
ICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gYmFzZWxpbmVPZmZzZXQoKSAtIHJ1bi0+bG9naWNh
bFJlY3QoKS5oZWlnaHQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjk0LDkgKzMwOSw4IEBA
IHZvaWQgTGluZTo6YXBwZW5kSW5saW5lQ29udGFpbmVyU3RhcnQoY29uc3QgSW5saW5lSXRlbSYg
aW5saW5lSXRlbSwgTGF5b3V0VW5pdCBsCiAgICAgYXV0byBsb2dpY2FsUmVjdCA9IERpc3BsYXk6
OlJlY3QgeyAwLCBjb250ZW50TG9naWNhbFdpZHRoKCksIGxvZ2ljYWxXaWR0aCwgMCB9OwogCiAg
ICAgaWYgKCFtX3NraXBBbGlnbm1lbnQpIHsKLSAgICAgICAgYXV0byBsb2dpY2FsSGVpZ2h0ID0g
aW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSk7Ci0gICAgICAgIGFkanVzdEJhc2Vs
aW5lQW5kTGluZUhlaWdodChpbmxpbmVJdGVtLCBsb2dpY2FsSGVpZ2h0KTsKLSAgICAgICAgbG9n
aWNhbFJlY3Quc2V0SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOworICAgICAgICBhZGp1c3RCYXNlbGlu
ZUFuZExpbmVIZWlnaHQoaW5saW5lSXRlbSk7CisgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdo
dChpbmxpbmVJdGVtQ29udGVudEhlaWdodChpbmxpbmVJdGVtKSk7CiAgICAgfQogICAgIGFwcGVu
ZE5vbkJyZWFrYWJsZVNwYWNlKGlubGluZUl0ZW0sIGxvZ2ljYWxSZWN0KTsKIH0KQEAgLTMwNCw3
ICszMTgsNyBAQCB2b2lkIExpbmU6OmFwcGVuZElubGluZUNvbnRhaW5lclN0YXJ0KGNvbnN0IElu
bGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQgbAogdm9pZCBMaW5lOjphcHBlbmRJbmxp
bmVDb250YWluZXJFbmQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSwgTGF5b3V0VW5pdCBs
b2dpY2FsV2lkdGgpCiB7CiAgICAgLy8gVGhpcyBpcyByZWFsbHkganVzdCBhIHBsYWNlaG9sZGVy
IHRvIG1hcmsgdGhlIGVuZCBvZiB0aGUgaW5saW5lIGxldmVsIGNvbnRhaW5lciA8L3NwYW4+Lgot
ICAgIGF1dG8gbG9naWNhbFJlY3QgPSBEaXNwbGF5OjpSZWN0IHsgMCwgY29udGVudExvZ2ljYWxS
aWdodCgpLCBsb2dpY2FsV2lkdGgsIGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlubGluZUl0ZW0p
IH07CisgICAgYXV0byBsb2dpY2FsUmVjdCA9IERpc3BsYXk6OlJlY3QgeyAwLCBjb250ZW50TG9n
aWNhbFJpZ2h0KCksIGxvZ2ljYWxXaWR0aCwgbV9za2lwQWxpZ25tZW50ID8gTGF5b3V0VW5pdCgp
IDogaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSkgfTsKICAgICBhcHBlbmROb25C
cmVha2FibGVTcGFjZShpbmxpbmVJdGVtLCBsb2dpY2FsUmVjdCk7CiB9CiAKQEAgLTM0MSw5ICsz
NTUsOCBAQCB2b2lkIExpbmU6OmFwcGVuZFRleHRDb250ZW50KGNvbnN0IElubGluZVRleHRJdGVt
JiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGxvZ2ljYQogICAgIGxvZ2ljYWxSZWN0LnNldExlZnQo
Y29udGVudExvZ2ljYWxXaWR0aCgpKTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aChsb2dpY2Fs
V2lkdGgpOwogICAgIGlmICghbV9za2lwQWxpZ25tZW50KSB7Ci0gICAgICAgIGF1dG8gcnVuSGVp
Z2h0ID0gaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSk7Ci0gICAgICAgIGxvZ2lj
YWxSZWN0LnNldEhlaWdodChydW5IZWlnaHQpOwotICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExp
bmVIZWlnaHQoaW5saW5lSXRlbSwgcnVuSGVpZ2h0KTsKKyAgICAgICAgYWRqdXN0QmFzZWxpbmVB
bmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0pOworICAgICAgICBsb2dpY2FsUmVjdC5zZXRIZWlnaHQo
aW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoaW5saW5lSXRlbSkpOwogICAgIH0KIAogICAgIGF1dG8g
bGluZUl0ZW0gPSBtYWtlVW5pcXVlPFJ1bj4oaW5saW5lSXRlbSwgRGlzcGxheTo6UnVuIHsgbG9n
aWNhbFJlY3QsIERpc3BsYXk6OlJ1bjo6VGV4dENvbnRleHQgeyBpbmxpbmVJdGVtLnN0YXJ0KCks
IGlubGluZUl0ZW0uaXNDb2xsYXBzZWQoKSA/IDEgOiBpbmxpbmVJdGVtLmxlbmd0aCgpIH0gfSk7
CkBAIC0zNjgsOCArMzgxLDkgQEAgdm9pZCBMaW5lOjphcHBlbmROb25SZXBsYWNlZElubGluZUJv
eChjb25zdCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0IGwKICAgICBsb2dpY2Fs
UmVjdC5zZXRMZWZ0KGNvbnRlbnRMb2dpY2FsV2lkdGgoKSArIGhvcml6b250YWxNYXJnaW4uc3Rh
cnQpOwogICAgIGxvZ2ljYWxSZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7CiAgICAgaWYgKCFt
X3NraXBBbGlnbm1lbnQpIHsKLSAgICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlu
bGluZUl0ZW0sIGJveEdlb21ldHJ5Lm1hcmdpbkJveEhlaWdodCgpKTsKLSAgICAgICAgbG9naWNh
bFJlY3Quc2V0SGVpZ2h0KGlubGluZUl0ZW1Db250ZW50SGVpZ2h0KGlubGluZUl0ZW0pKTsKKyAg
ICAgICAgYWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGlubGluZUl0ZW0pOworICAgICAgICBh
dXRvIHJ1bkhlaWdodCA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3goaW5saW5l
SXRlbS5sYXlvdXRCb3goKSkubWFyZ2luQm94SGVpZ2h0KCk7CisgICAgICAgIGxvZ2ljYWxSZWN0
LnNldEhlaWdodChydW5IZWlnaHQpOwogICAgIH0KIAogICAgIG1fcnVuTGlzdC5hcHBlbmQobWFr
ZVVuaXF1ZTxSdW4+KGlubGluZUl0ZW0sIERpc3BsYXk6OlJ1biB7IGxvZ2ljYWxSZWN0IH0pKTsK
QEAgLTM4OSwxMyArNDAzLDEzIEBAIHZvaWQgTGluZTo6YXBwZW5kSGFyZExpbmVCcmVhayhjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtKQogICAgIGxvZ2ljYWxSZWN0LnNldExlZnQoY29udGVu
dExvZ2ljYWxXaWR0aCgpKTsKICAgICBsb2dpY2FsUmVjdC5zZXRXaWR0aCh7IH0pOwogICAgIGlm
ICghbV9za2lwQWxpZ25tZW50KSB7Ci0gICAgICAgIGFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdo
dChpbmxpbmVJdGVtLCB7IH0pOworICAgICAgICBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQo
aW5saW5lSXRlbSk7CiAgICAgICAgIGxvZ2ljYWxSZWN0LnNldEhlaWdodChsb2dpY2FsSGVpZ2h0
KCkpOwogICAgIH0KICAgICBtX3J1bkxpc3QuYXBwZW5kKG1ha2VVbmlxdWU8UnVuPihpbmxpbmVJ
dGVtLCBEaXNwbGF5OjpSdW4geyBsb2dpY2FsUmVjdCB9KSk7CiB9CiAKLXZvaWQgTGluZTo6YWRq
dXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExh
eW91dFVuaXQgcnVuSGVpZ2h0KQordm9pZCBMaW5lOjphZGp1c3RCYXNlbGluZUFuZExpbmVIZWln
aHQoY29uc3QgSW5saW5lSXRlbSYgaW5saW5lSXRlbSkKIHsKICAgICBBU1NFUlQoIWlubGluZUl0
ZW0uaXNDb250YWluZXJFbmQoKSk7CiAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lSXRlbS5s
YXlvdXRCb3goKTsKQEAgLTQwNiwxOCArNDIwLDE2IEBAIHZvaWQgTGluZTo6YWRqdXN0QmFzZWxp
bmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mIGlubGluZUl0ZW0sIExheW91dFVuaXQK
ICAgICAgICAgLy8gSW5saW5lIGNvbnRhaW5lcnMgc3RyZXRjaCB0aGUgbGluZSBieSB0aGVpciBm
b250IHNpemUuCiAgICAgICAgIC8vIFZlcnRpY2FsIG1hcmdpbnMsIHBhZGRpbmdzIGFuZCBib3Jk
ZXJzIGRvbid0IGNvbnRyaWJ1dGUgdG8gdGhlIGxpbmUgaGVpZ2h0LgogICAgICAgICBhdXRvJiBm
b250TWV0cmljcyA9IHN0eWxlLmZvbnRNZXRyaWNzKCk7Ci0gICAgICAgIExheW91dFVuaXQgY29u
dGVudEhlaWdodDsKICAgICAgICAgaWYgKHN0eWxlLnZlcnRpY2FsQWxpZ24oKSA9PSBWZXJ0aWNh
bEFsaWduOjpCYXNlbGluZSkgewogICAgICAgICAgICAgYXV0byBoYWxmTGVhZGluZyA9IGhhbGZM
ZWFkaW5nTWV0cmljcyhmb250TWV0cmljcywgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpOwog
ICAgICAgICAgICAgLy8gQm90aCBoYWxmbGVhZGluZyBhc2NlbnQgYW5kIGRlc2NlbnQgY291bGQg
YmUgbmVnYXRpdmUgKHRhbGwgZm9udCB2cy4gc21hbGwgbGluZS1oZWlnaHQgdmFsdWUpCiAgICAg
ICAgICAgICBpZiAoaGFsZkxlYWRpbmcuZGVzY2VudCgpID4gMCkKLSAgICAgICAgICAgICAgICBi
YXNlbGluZS5zZXREZXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmRlc2NlbnQoKSk7CisgICAg
ICAgICAgICAgICAgbV9saW5lQm94LnNldERlc2NlbnRJZkdyZWF0ZXIoaGFsZkxlYWRpbmcuZGVz
Y2VudCgpKTsKICAgICAgICAgICAgIGlmIChoYWxmTGVhZGluZy5hc2NlbnQoKSA+IDApCi0gICAg
ICAgICAgICAgICAgYmFzZWxpbmUuc2V0QXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmFzY2Vu
dCgpKTsKLSAgICAgICAgICAgIGNvbnRlbnRIZWlnaHQgPSBiYXNlbGluZS5oZWlnaHQoKTsKKyAg
ICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QXNjZW50SWZHcmVhdGVyKGhhbGZMZWFkaW5nLmFz
Y2VudCgpKTsKKyAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVy
KGJhc2VsaW5lLmhlaWdodCgpKTsKICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBjb250ZW50
SGVpZ2h0ID0gZm9udE1ldHJpY3MuaGVpZ2h0KCk7Ci0gICAgICAgIG1fbGluZUJveC5zZXRMb2dp
Y2FsSGVpZ2h0SWZHcmVhdGVyKGNvbnRlbnRIZWlnaHQsIExpbmVCb3g6OkFkanVzdEJhc2VsaW5l
OjpZZXMpOworICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIo
Zm9udE1ldHJpY3MuaGVpZ2h0KCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC00MjYs
MzcgKzQzOCw1MyBAQCB2b2lkIExpbmU6OmFkanVzdEJhc2VsaW5lQW5kTGluZUhlaWdodChjb25z
dCBJbmxpbmVJdGVtJiBpbmxpbmVJdGVtLCBMYXlvdXRVbml0CiAgICAgICAgIC8vIHRocm91Z2gg
dGhlIGlubGluZSBjb250YWluZXIgKHN0YXJ0KSAtc2VlIGFib3ZlLiBOb3JtYWxseSB0aGUgdGV4
dCBjb250ZW50IGl0c2VsZiBkb2VzIG5vdCBzdHJldGNoIHRoZSBsaW5lLgogICAgICAgICBpZiAo
IW1faW5pdGlhbFN0cnV0KQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBiYXNlbGluZS5z
ZXRBc2NlbnRJZkdyZWF0ZXIobV9pbml0aWFsU3RydXQtPmFzY2VudCgpKTsKLSAgICAgICAgYmFz
ZWxpbmUuc2V0RGVzY2VudElmR3JlYXRlcihtX2luaXRpYWxTdHJ1dC0+ZGVzY2VudCgpKTsKLSAg
ICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIoYmFzZWxpbmUuaGVpZ2h0
KCksIExpbmVCb3g6OkFkanVzdEJhc2VsaW5lOjpZZXMpOworICAgICAgICBtX2xpbmVCb3guc2V0
QXNjZW50SWZHcmVhdGVyKG1faW5pdGlhbFN0cnV0LT5hc2NlbnQoKSk7CisgICAgICAgIG1fbGlu
ZUJveC5zZXREZXNjZW50SWZHcmVhdGVyKG1faW5pdGlhbFN0cnV0LT5kZXNjZW50KCkpOworICAg
ICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihiYXNlbGluZS5oZWlnaHQo
KSk7CiAgICAgICAgIG1faW5pdGlhbFN0cnV0ID0geyB9OwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSkgeworICAgICAgICBhdXRvJiBib3hHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0KCkuZ2VvbWV0cnlGb3JCb3gobGF5b3V0Qm94KTsKKyAg
ICAgICAgYXV0byBtYXJnaW5Cb3hIZWlnaHQgPSBib3hHZW9tZXRyeS5tYXJnaW5Cb3hIZWlnaHQo
KTsKKwogICAgICAgICBzd2l0Y2ggKHN0eWxlLnZlcnRpY2FsQWxpZ24oKSkgewogICAgICAgICBj
YXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOiB7Ci0gICAgICAgICAgICBhdXRvIG5ld0Jhc2Vs
aW5lQ2FuZGlkYXRlID0gTGluZUJveDo6QmFzZWxpbmUgeyBydW5IZWlnaHQsIDAgfTsKICAgICAg
ICAgICAgIGlmIChsYXlvdXRCb3guaXNJbmxpbmVCbG9ja0JveCgpICYmIGxheW91dEJveC5lc3Rh
Ymxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCkpIHsKICAgICAgICAgICAgICAgICAvLyBJ
bmxpbmUtYmxvY2tzIHdpdGggaW5saW5lIGNvbnRlbnQgYWx3YXlzIGhhdmUgYmFzZWxpbmVzLgog
ICAgICAgICAgICAgICAgIGF1dG8mIGZvcm1hdHRpbmdTdGF0ZSA9IGRvd25jYXN0PElubGluZUZv
cm1hdHRpbmdTdGF0ZT4obGF5b3V0U3RhdGUoKS5lc3RhYmxpc2hlZEZvcm1hdHRpbmdTdGF0ZShk
b3duY2FzdDxDb250YWluZXI+KGxheW91dEJveCkpKTsKICAgICAgICAgICAgICAgICAvLyBTcGVj
IG1ha2VzIHVzIGdlbmVyYXRlIGF0IGxlYXN0IG9uZSBsaW5lIC1ldmVuIGlmIGl0IGlzIGVtcHR5
LgogICAgICAgICAgICAgICAgIEFTU0VSVCghZm9ybWF0dGluZ1N0YXRlLmxpbmVCb3hlcygpLmlz
RW1wdHkoKSk7Ci0gICAgICAgICAgICAgICAgbmV3QmFzZWxpbmVDYW5kaWRhdGUgPSBmb3JtYXR0
aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpLmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAg
YXV0byYgbGFzdExpbmVCb3ggPSBmb3JtYXR0aW5nU3RhdGUubGluZUJveGVzKCkubGFzdCgpOwor
ICAgICAgICAgICAgICAgIGF1dG8gaW5saW5lQmxvY2tCYXNlbGluZSA9IGxhc3RMaW5lQm94LmJh
c2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYXV0byBiZWZvcmVIZWlnaHQgPSBib3hHZW9tZXRy
eS5tYXJnaW5CZWZvcmUoKSArIGJveEdlb21ldHJ5LmJvcmRlclRvcCgpICsgYm94R2VvbWV0cnku
cGFkZGluZ1RvcCgpLnZhbHVlT3IoMCk7CisKKyAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0
QXNjZW50SWZHcmVhdGVyKGlubGluZUJsb2NrQmFzZWxpbmUuYXNjZW50KCkpOworICAgICAgICAg
ICAgICAgIG1fbGluZUJveC5zZXREZXNjZW50SWZHcmVhdGVyKGlubGluZUJsb2NrQmFzZWxpbmUu
ZGVzY2VudCgpKTsKKyAgICAgICAgICAgICAgICBtX2xpbmVCb3guc2V0QmFzZWxpbmVPZmZzZXRJ
ZkdyZWF0ZXIoYmVmb3JlSGVpZ2h0ICsgbGFzdExpbmVCb3guYmFzZWxpbmVPZmZzZXQoKSk7Cisg
ICAgICAgICAgICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2lu
Qm94SGVpZ2h0KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLy8gTm9u
IGlubGluZS1ibG9jayBib3hlcyBzaXQgb24gdGhlIGJhc2VsaW5lIChpbmNsdWRpbmcgdGhlaXIg
Ym90dG9tIG1hcmdpbikuCisgICAgICAgICAgICAgICAgbV9saW5lQm94LnNldEFzY2VudElmR3Jl
YXRlcihtYXJnaW5Cb3hIZWlnaHQpOworICAgICAgICAgICAgICAgIC8vIElnbm9yZSBuZWdhdGl2
ZSBkZXNjZW50ICh5ZXMsIG5lZ2F0aXZlIGRlc2NlbnQgaXMgYSB0aGluZykuCisgICAgICAgICAg
ICAgICAgbV9saW5lQm94LnNldExvZ2ljYWxIZWlnaHRJZkdyZWF0ZXIobWFyZ2luQm94SGVpZ2h0
ICsgc3RkOjptYXgoTGF5b3V0VW5pdCgpLCBiYXNlbGluZS5kZXNjZW50KCkpKTsKICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIGJhc2VsaW5lLnNldEFzY2VudElmR3JlYXRlcihuZXdCYXNlbGlu
ZUNhbmRpZGF0ZS5hc2NlbnQoKSk7Ci0gICAgICAgICAgICBiYXNlbGluZS5zZXREZXNjZW50SWZH
cmVhdGVyKG5ld0Jhc2VsaW5lQ2FuZGlkYXRlLmRlc2NlbnQoKSk7Ci0gICAgICAgICAgICBtX2xp
bmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihzdGQ6Om1heChydW5IZWlnaHQsIGJhc2Vs
aW5lLmhlaWdodCgpKSwgTGluZUJveDo6QWRqdXN0QmFzZWxpbmU6Olllcyk7CiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAg
ICAgICAgICAgIC8vIFRvcCBhbGlnbiBjb250ZW50IG5ldmVyIGNoYW5nZXMgdGhlIGJhc2VsaW5l
IG9mZnNldCwgaXQgb25seSBwdXNoZXMgdGhlIGJvdHRvbSBvZiB0aGUgbGluZSBmdXJ0aGVyIGRv
d24uCi0gICAgICAgICAgICBtX2xpbmVCb3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihydW5I
ZWlnaHQsIExpbmVCb3g6OkFkanVzdEJhc2VsaW5lOjpObyk7CisgICAgICAgICAgICAvLyBUb3Ag
YWxpZ24gY29udGVudCBuZXZlciBjaGFuZ2VzIHRoZSBiYXNlbGluZSwgaXQgb25seSBwdXNoZXMg
dGhlIGJvdHRvbSBvZiB0aGUgbGluZSBmdXJ0aGVyIGRvd24uCisgICAgICAgICAgICBtX2xpbmVC
b3guc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihtYXJnaW5Cb3hIZWlnaHQpOwogICAgICAgICAg
ICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgorICAgICAgICBj
YXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbTogewogICAgICAgICAgICAgLy8gQm90dG9tIGFsaWdu
ZWQsIHRhbGwgY29udGVudCBwdXNoZXMgdGhlIGJhc2VsaW5lIGZ1cnRoZXIgZG93biBmcm9tIHRo
ZSBsaW5lIHRvcC4KLSAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVh
dGVyKHJ1bkhlaWdodCwgTGluZUJveDo6QWRqdXN0QmFzZWxpbmU6Olllcyk7CisgICAgICAgICAg
ICBhdXRvIGxpbmVMb2dpY2FsSGVpZ2h0ID0gbV9saW5lQm94LmxvZ2ljYWxIZWlnaHQoKTsKKyAg
ICAgICAgICAgIGlmIChtYXJnaW5Cb3hIZWlnaHQgPiBsaW5lTG9naWNhbEhlaWdodCkgeworICAg
ICAgICAgICAgICAgIG1fbGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0SWZHcmVhdGVyKG1hcmdpbkJv
eEhlaWdodCk7CisgICAgICAgICAgICAgICAgbV9saW5lQm94LnNldEJhc2VsaW5lT2Zmc2V0SWZH
cmVhdGVyKG1fbGluZUJveC5iYXNlbGluZU9mZnNldCgpICsgKG1hcmdpbkJveEhlaWdodCAtIGxp
bmVMb2dpY2FsSGVpZ2h0KSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgfQogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1F
TlRFRF9ZRVQoKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNDc2LDE3ICs1MDQsMTQgQEAgTGF5
b3V0VW5pdCBMaW5lOjppbmxpbmVJdGVtQ29udGVudEhlaWdodChjb25zdCBJbmxpbmVJdGVtJiBp
bmxpbmVJdGVtKSBjb25zdAogICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUl0ZW0ubGF5b3V0
Qm94KCk7CiAgICAgYXV0byYgYm94R2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dCgpLmdlb21l
dHJ5Rm9yQm94KGxheW91dEJveCk7CiAKLSAgICBpZiAobGF5b3V0Qm94LmlzRmxvYXRpbmdQb3Np
dGlvbmVkKCkpCi0gICAgICAgIHJldHVybiBib3hHZW9tZXRyeS5ib3JkZXJCb3hIZWlnaHQoKTsK
LQotICAgIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSkKLSAgICAgICAgcmV0dXJuIGJveEdlb21l
dHJ5LmJvcmRlckJveEhlaWdodCgpOworICAgIGlmIChsYXlvdXRCb3gucmVwbGFjZWQoKSB8fCBs
YXlvdXRCb3guaXNGbG9hdGluZ1Bvc2l0aW9uZWQoKSkKKyAgICAgICAgcmV0dXJuIGJveEdlb21l
dHJ5LmNvbnRlbnRCb3hIZWlnaHQoKTsKIAogICAgIGlmIChpbmxpbmVJdGVtLmlzQ29udGFpbmVy
U3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzQ29udGFpbmVyRW5kKCkpCi0gICAgICAgIHJldHVybiBm
b250TWV0cmljcy5oZWlnaHQoKSArIGJveEdlb21ldHJ5LnZlcnRpY2FsQm9yZGVyKCkgKyBib3hH
ZW9tZXRyeS52ZXJ0aWNhbFBhZGRpbmcoKS52YWx1ZU9yKDApOworICAgICAgICByZXR1cm4gZm9u
dE1ldHJpY3MuaGVpZ2h0KCk7CiAKLSAgICAvLyBOb24tcmVwbGFjZWQgaW5saW5lIGJveCAoZS5n
LiBpbmxpbmUtYmxvY2spCi0gICAgcmV0dXJuIGJveEdlb21ldHJ5LmJvcmRlckJveEhlaWdodCgp
OworICAgIC8vIE5vbi1yZXBsYWNlZCBpbmxpbmUgYm94IChlLmcuIGlubGluZS1ibG9jaykuIEl0
IGxvb2tzIGEgYml0IG1pc2xlYWRpbmcgYnV0IHRoZWlyIG1hcmdpbiBib3ggaXMgY29uc2lkZXJl
ZCB0aGUgY29udGVudCBoZWlnaHQgaGVyZS4KKyAgICByZXR1cm4gYm94R2VvbWV0cnkubWFyZ2lu
Qm94SGVpZ2h0KCk7CiB9CiAKIExpbmVCb3g6OkJhc2VsaW5lIExpbmU6OmhhbGZMZWFkaW5nTWV0
cmljcyhjb25zdCBGb250TWV0cmljcyYgZm9udE1ldHJpY3MsIExheW91dFVuaXQgbGluZUxvZ2lj
YWxIZWlnaHQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGlu
Zy9JbmxpbmVMaW5lLmgKaW5kZXggZjZmMzNmMjYzMzMyMWE1NzNkYTMxODMzNjI0MGIwM2ZlYjYx
OWQyNy4uMDNiODhhMzM4MjRkNzgxYzlmNWE0OWQ5ZTZkMWI0ODEyZTVkNDUwZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZS5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmUuaApA
QCAtMTI5LDcgKzEyOSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBhbGlnbkNvbnRlbnRIb3Jpem9u
dGFsbHkoKTsKICAgICB2b2lkIGFsaWduQ29udGVudFZlcnRpY2FsbHkoKTsKIAotICAgIHZvaWQg
YWRqdXN0QmFzZWxpbmVBbmRMaW5lSGVpZ2h0KGNvbnN0IElubGluZUl0ZW0mLCBMYXlvdXRVbml0
IHJ1bkhlaWdodCk7CisgICAgdm9pZCBhZGp1c3RCYXNlbGluZUFuZExpbmVIZWlnaHQoY29uc3Qg
SW5saW5lSXRlbSYpOwogICAgIExheW91dFVuaXQgaW5saW5lSXRlbUNvbnRlbnRIZWlnaHQoY29u
c3QgSW5saW5lSXRlbSYpIGNvbnN0OwogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5KCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCb3guaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCb3guaAppbmRleCA1M2U1OWYzYmM3NWYzOGUxOWE0YjE1Njc0MmQ4ZTkwZDQ5YTNk
NWM0Li5kMWJkMDUxMjFmZmNjNzY0ZGIxOTc2NjQ2NTMwOTUwOGMyMmNkYThhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJv
eC5oCkBAIC00MCw4ICs0MCw2IEBAIHB1YmxpYzoKIAogICAgICAgICB2b2lkIHNldEFzY2VudChM
YXlvdXRVbml0KTsKICAgICAgICAgdm9pZCBzZXREZXNjZW50KExheW91dFVuaXQpOwotICAgICAg
ICB2b2lkIHNldEFzY2VudElmR3JlYXRlcihMYXlvdXRVbml0KTsKLSAgICAgICAgdm9pZCBzZXRE
ZXNjZW50SWZHcmVhdGVyKExheW91dFVuaXQpOwogCiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIApA
QCAtNzEsOSArNjksNyBAQCBwdWJsaWM6CiAgICAgTGF5b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBj
b25zdCB7IHJldHVybiBtX3JlY3Qud2lkdGgoKTsgfQogICAgIExheW91dFVuaXQgbG9naWNhbEhl
aWdodCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVjdC5oZWlnaHQoKTsgfQogCi0gICAgdm9pZCBzZXRC
YXNlbGluZShCYXNlbGluZSk7CiAgICAgY29uc3QgQmFzZWxpbmUmIGJhc2VsaW5lKCkgY29uc3Q7
Ci0gICAgQmFzZWxpbmUmIGJhc2VsaW5lKCk7CiAgICAgLy8gQmFzZWxpbmUgb2Zmc2V0IGZyb20g
bGluZSBsb2dpY2FsIHRvcC4gTm90ZSB0aGF0IG9mZnNldCBkb2VzIG5vdCBuZWNlc3NhcmlseSBl
cXVhbCB0byBhc2NlbnQuCiAgICAgLy8KICAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tICAgIGxp
bmUgbG9naWNhbCB0b3AgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0gKHRvcCBhbGlnbikKQEAgLTkw
LDEzICs4NiwxNyBAQCBwdWJsaWM6CiAgICAgLy8gICB2CiAgICAgLy8gLS0tLS0tLS0tLS0tLS0t
LS0tLSAgICBsaW5lIGxvZ2ljYWwgYm90dG9tICAtLS0tLS0tLS0tLS0tLS0tLS0tCiAgICAgTGF5
b3V0VW5pdCBiYXNlbGluZU9mZnNldCgpIGNvbnN0OwotICAgIHZvaWQgc2V0QmFzZWxpbmVPZmZz
ZXQoTGF5b3V0VW5pdCk7CisgICAgdm9pZCBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihMYXlv
dXRVbml0KTsKKyAgICB2b2lkIHNldEFzY2VudElmR3JlYXRlcihMYXlvdXRVbml0KTsKKyAgICB2
b2lkIHNldERlc2NlbnRJZkdyZWF0ZXIoTGF5b3V0VW5pdCk7CisKKyAgICB2b2lkIHJlc2V0QmFz
ZWxpbmUoKTsKKyAgICB2b2lkIHJlc2V0RGVzY2VudCgpIHsgbV9iYXNlbGluZS5zZXREZXNjZW50
KHsgfSk7IH0KIAogICAgIHZvaWQgc2V0TG9naWNhbFRvcExlZnQoTGF5b3V0UG9pbnQgbG9naWNh
bFRvcExlZnQpIHsgbV9yZWN0LnNldFRvcExlZnQobG9naWNhbFRvcExlZnQpOyB9CiAgICAgdm9p
ZCBzZXRMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQgbG9naWNhbEhlaWdodCkgeyBtX3JlY3Quc2V0
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOyB9CiAKLSAgICBlbnVtIGNsYXNzIEFkanVzdEJhc2VsaW5l
IHsgTm8sIFllcyB9OwotICAgIHZvaWQgc2V0TG9naWNhbEhlaWdodElmR3JlYXRlcihMYXlvdXRV
bml0IGxvZ2ljYWxIZWlnaHQsIEFkanVzdEJhc2VsaW5lKTsKKyAgICB2b2lkIHNldExvZ2ljYWxI
ZWlnaHRJZkdyZWF0ZXIoTGF5b3V0VW5pdCk7CiAgICAgdm9pZCBzZXRMb2dpY2FsV2lkdGgoTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGgpIHsgbV9yZWN0LnNldFdpZHRoKGxvZ2ljYWxXaWR0aCk7IH0K
IAogICAgIHZvaWQgbW92ZUhvcml6b250YWxseShMYXlvdXRVbml0IGRlbHRhKSB7IG1fcmVjdC5t
b3ZlSG9yaXpvbnRhbGx5KGRlbHRhKTsgfQpAQCAtMTI4LDQyICsxMjgsNDAgQEAgaW5saW5lIExp
bmVCb3g6OkxpbmVCb3goRGlzcGxheTo6UmVjdCByZWN0LCBjb25zdCBCYXNlbGluZSYgYmFzZWxp
bmUsIExheW91dFVuaXQKICNlbmRpZgogfQogCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRMb2dp
Y2FsSGVpZ2h0SWZHcmVhdGVyKExheW91dFVuaXQgbG9naWNhbEhlaWdodCwgQWRqdXN0QmFzZWxp
bmUgYWRqdXN0QmFzZWxpbmUpCitpbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRMb2dpY2FsSGVpZ2h0
SWZHcmVhdGVyKExheW91dFVuaXQgbG9naWNhbEhlaWdodCkKIHsKLSAgICBhdXRvIGRpZmYgPSBs
b2dpY2FsSGVpZ2h0IC0gbV9yZWN0LmhlaWdodCgpOwotICAgIGlmIChkaWZmIDw9IDApCisgICAg
aWYgKGxvZ2ljYWxIZWlnaHQgPD0gbV9yZWN0LmhlaWdodCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKGFkanVzdEJhc2VsaW5lID09IEFkanVzdEJhc2VsaW5lOjpZZXMpCi0gICAgICAgIHNl
dEJhc2VsaW5lT2Zmc2V0KGJhc2VsaW5lT2Zmc2V0KCkgKyBkaWZmKTsKICAgICBtX3JlY3Quc2V0
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOwogfQogCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNl
bGluZShCYXNlbGluZSBiYXNlbGluZSkKLXsKLSNpZiAhQVNTRVJUX0RJU0FCTEVECi0gICAgbV9o
YXNWYWxpZEJhc2VsaW5lID0gdHJ1ZTsKLSNlbmRpZgotICAgIG1fYmFzZWxpbmUgPSBiYXNlbGlu
ZTsKLX0KLQogaW5saW5lIGNvbnN0IExpbmVCb3g6OkJhc2VsaW5lJiBMaW5lQm94OjpiYXNlbGlu
ZSgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1faGFzVmFsaWRCYXNlbGluZSk7CiAgICAgcmV0dXJu
IG1fYmFzZWxpbmU7CiB9CiAKLWlubGluZSBMaW5lQm94OjpCYXNlbGluZSYgTGluZUJveDo6YmFz
ZWxpbmUoKQotewotICAgIEFTU0VSVChtX2hhc1ZhbGlkQmFzZWxpbmUpOwotICAgIHJldHVybiBt
X2Jhc2VsaW5lOwotfQotCi1pbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRCYXNlbGluZU9mZnNldChM
YXlvdXRVbml0IGJhc2VsaW5lT2Zmc2V0KQoraW5saW5lIHZvaWQgTGluZUJveDo6c2V0QmFzZWxp
bmVPZmZzZXRJZkdyZWF0ZXIoTGF5b3V0VW5pdCBiYXNlbGluZU9mZnNldCkKIHsKICNpZiAhQVNT
RVJUX0RJU0FCTEVECiAgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKICNlbmRp
ZgotICAgIG1fYmFzZWxpbmVPZmZzZXQgPSBiYXNlbGluZU9mZnNldDsKKyAgICBtX2Jhc2VsaW5l
T2Zmc2V0ID0gc3RkOjptYXgoYmFzZWxpbmVPZmZzZXQsIG1fYmFzZWxpbmVPZmZzZXQpOworfQor
CitpbmxpbmUgdm9pZCBMaW5lQm94OjpzZXRBc2NlbnRJZkdyZWF0ZXIoTGF5b3V0VW5pdCBhc2Nl
bnQpCit7CisgICAgaWYgKGFzY2VudCA8IG1fYmFzZWxpbmUuYXNjZW50KCkpCisgICAgICAgIHJl
dHVybjsKKyAgICBzZXRCYXNlbGluZU9mZnNldElmR3JlYXRlcihhc2NlbnQpOworICAgIG1fYmFz
ZWxpbmUuc2V0QXNjZW50KGFzY2VudCk7Cit9CisKK2lubGluZSB2b2lkIExpbmVCb3g6OnNldERl
c2NlbnRJZkdyZWF0ZXIoTGF5b3V0VW5pdCBkZXNjZW50KQoreworICAgIGlmIChkZXNjZW50IDwg
bV9iYXNlbGluZS5kZXNjZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICBtX2Jhc2VsaW5lLnNl
dERlc2NlbnQoZGVzY2VudCk7CiB9CiAKIGlubGluZSBMYXlvdXRVbml0IExpbmVCb3g6OmJhc2Vs
aW5lT2Zmc2V0KCkgY29uc3QKQEAgLTE3Miw2ICsxNzAsMTUgQEAgaW5saW5lIExheW91dFVuaXQg
TGluZUJveDo6YmFzZWxpbmVPZmZzZXQoKSBjb25zdAogICAgIHJldHVybiBtX2Jhc2VsaW5lT2Zm
c2V0OwogfQogCitpbmxpbmUgdm9pZCBMaW5lQm94OjpyZXNldEJhc2VsaW5lKCkKK3sKKyNpZiAh
QVNTRVJUX0RJU0FCTEVECisgICAgbV9oYXNWYWxpZEJhc2VsaW5lT2Zmc2V0ID0gdHJ1ZTsKKyNl
bmRpZgorICAgIG1fYmFzZWxpbmVPZmZzZXQgPSB7IH07CisgICAgbV9iYXNlbGluZS5yZXNldCgp
OworfQorCiBpbmxpbmUgTGluZUJveDo6QmFzZWxpbmU6OkJhc2VsaW5lKExheW91dFVuaXQgYXNj
ZW50LCBMYXlvdXRVbml0IGRlc2NlbnQpCiAgICAgOiBtX2FzY2VudChhc2NlbnQpCiAgICAgLCBt
X2Rlc2NlbnQoZGVzY2VudCkKQEAgLTE5OCwyMiArMjA1LDYgQEAgaW5saW5lIHZvaWQgTGluZUJv
eDo6QmFzZWxpbmU6OnNldERlc2NlbnQoTGF5b3V0VW5pdCBkZXNjZW50KQogICAgIG1fZGVzY2Vu
dCA9IGRlc2NlbnQ7CiB9CiAKLWlubGluZSB2b2lkIExpbmVCb3g6OkJhc2VsaW5lOjpzZXRBc2Nl
bnRJZkdyZWF0ZXIoTGF5b3V0VW5pdCBhc2NlbnQpCi17Ci0jaWYgIUFTU0VSVF9ESVNBQkxFRAot
ICAgIG1faGFzVmFsaWRBc2NlbnQgPSB0cnVlOwotI2VuZGlmCi0gICAgbV9hc2NlbnQgPSBzdGQ6
Om1heChhc2NlbnQsIG1fYXNjZW50KTsKLX0KLQotaW5saW5lIHZvaWQgTGluZUJveDo6QmFzZWxp
bmU6OnNldERlc2NlbnRJZkdyZWF0ZXIoTGF5b3V0VW5pdCBkZXNjZW50KQotewotI2lmICFBU1NF
UlRfRElTQUJMRUQKLSAgICBtX2hhc1ZhbGlkRGVzY2VudCA9IHRydWU7Ci0jZW5kaWYKLSAgICBt
X2Rlc2NlbnQgPSBzdGQ6Om1heChkZXNjZW50LCBtX2Rlc2NlbnQpOwotfQotCiBpbmxpbmUgdm9p
ZCBMaW5lQm94OjpCYXNlbGluZTo6cmVzZXQoKQogewogI2lmICFBU1NFUlRfRElTQUJMRUQK
</data>

          </attachment>
      

    </bug>

</bugzilla>