<?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>220040</bug_id>
          
          <creation_ts>2020-12-19 14:38:46 -0800</creation_ts>
          <short_desc>[LFC] Move content height logic to the formatting contexts.</short_desc>
          <delta_ts>2020-12-20 07:12:22 -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>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>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>1715918</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-12-19 14:38:46 -0800</bug_when>
    <thetext>Let&apos;s make the FCs compute their content heights.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715922</commentid>
    <comment_count>1</comment_count>
      <attachid>416576</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-12-19 15:50:37 -0800</bug_when>
    <thetext>Created attachment 416576
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715923</commentid>
    <comment_count>2</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-12-19 15:52:01 -0800</bug_when>
    <thetext>So this patch has a const_cast and I am curious of how to avoid that (other than making the contentHeight() functions static).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715929</commentid>
    <comment_count>3</comment_count>
      <attachid>416576</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-12-19 18:12:02 -0800</bug_when>
    <thetext>Comment on attachment 416576
Patch

Very nice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715940</commentid>
    <comment_count>4</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-12-20 07:11:34 -0800</bug_when>
    <thetext>Committed r271012: &lt;https://trac.webkit.org/changeset/271012&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 416576.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715941</commentid>
    <comment_count>5</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-12-20 07:12:22 -0800</bug_when>
    <thetext>&lt;rdar://problem/72518413&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416576</attachid>
            <date>2020-12-19 15:50:37 -0800</date>
            <delta_ts>2020-12-20 07:11:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-220040-20201219155035.patch</filename>
            <type>text/plain</type>
            <size>19971</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcxMDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzU5YzZjZmIyZWJlYmVk
MjllN2I2Y2FjODg2MjRiNjZjZjc1YzdhZS4uZmY0MDIzMWQxMmQ5ZWQ3NzBiYmU2NmIxODc3MTRh
MWQyMTBjMmI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDIwLTEyLTE5ICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ10gTW92ZSBjb250ZW50
IGhlaWdodCBsb2dpYyB0byB0aGUgZm9ybWF0dGluZyBjb250ZXh0cy4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMDA0MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZvcm1hdHRpbmcgY29udGV4dHMga25v
dyBhYm91dCB0aGVpciBjb250ZW50IGhlaWdodC4gCisKKyAgICAgICAgKiBsYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpGb3JtYXR0aW5nQ29u
dGV4dDo6Z2VvbWV0cnlGb3JCb3ggY29uc3QpOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5n
Q29udGV4dC5oOgorICAgICAgICAqIGxheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5
Ojpjb250ZW50SGVpZ2h0Rm9yRm9ybWF0dGluZ0NvbnRleHRSb290IGNvbnN0KToKKyAgICAgICAg
KiBsYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5b3V0OjpCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVu
dEhlaWdodCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zv
cm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICogbGF5b3V0L2ZsZXhmb3JtYXR0aW5nL0ZsZXhG
b3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkZsZXhGb3Jt
YXR0aW5nQ29udGV4dDo6dXNlZENvbnRlbnRIZWlnaHQgY29uc3QpOgorICAgICAgICAqIGxheW91
dC9mbGV4Zm9ybWF0dGluZy9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OklubGluZUZvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhl
aWdodCBjb25zdCk6CisgICAgICAgICogbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9y
bWF0dGluZ0NvbnRleHQuaDoKKyAgICAgICAgKiBsYXlvdXQvdGFibGVmb3JtYXR0aW5nL1RhYmxl
Rm9ybWF0dGluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZv
cm1hdHRpbmdDb250ZXh0Ojp1c2VkQ29udGVudEhlaWdodCBjb25zdCk6CisgICAgICAgICogbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0Lmg6CisgICAgICAgICog
bGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpUYWJsZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9t
ZXRyeTo6Y2VsbEhlaWdoIGNvbnN0KToKKwogMjAyMC0xMi0xOSAgWmFsYW4gQnVqdGFzICA8emFs
YW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtMRkNdW0lGQ10gQWRkIGZhc3QgcGF0aCB2ZXJ0aWNh
bCBhbGlnbm1lbnQgZm9yIG5vbi1zdHJldGNoeSwgYmFzZWxpbmUgYWxpZ25lZCBhdG9taWMgaW5s
aW5lIGxldmVsIGJveGVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0
dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0
LmNwcAppbmRleCBkZDgxZjEwOTdkM2I2MjYwZTljZDJjYWNlZDdiMWJiMjg4YTcxNDVmLi45ODU3
ZGJhMmM3ZDY1Mjk2MGM0MTFmYWJjYTM1NzU4Njk1YmExMTI4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAgLTE5NCwxMSArMTk0LDEwIEBAIGNvbnN0
IEJveEdlb21ldHJ5JiBGb3JtYXR0aW5nQ29udGV4dDo6Z2VvbWV0cnlGb3JCb3goY29uc3QgQm94
JiBsYXlvdXRCb3gsIE9wdGlvCiAKICAgICAgICAgfQogCi0gICAgICAgIGlmICgqZXNjYXBlUmVh
c29uID09IEVzY2FwZVJlYXNvbjo6TmVlZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRp
bmdDb250ZXh0KSB7Ci0gICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBjYXNlIHdoZW4gYSBmb3Jt
YXR0aW5nIHJvb3QgY29sbGVjdHMgZ2VvbWV0cnkgaW5mb3JtYXRpb24gZnJvbSB0aGUgZXN0YWJs
aXNoZWQKLSAgICAgICAgICAgIC8vIGZvcm1hdHRpbmcgY29udGV4dCB0byBiZSBhYmxlIHRvIGRl
dGVybWluZSB3aWR0aC9oZWlnaHQuCi0gICAgICAgICAgICAvLyBlLmcgPGRpdj50ZXh0IGNvbnRl
bnQ8L2Rpdj4uIFRoZSA8ZGl2PiBpcyBhIGZvcm1hdHRpbmcgcm9vdCBvZiB0aGUgSUZDLgotICAg
ICAgICAgICAgLy8gSW4gb3JkZXIgdG8gY29tcHV0ZSB0aGUgaGVpZ2h0IG9mIHRoZSA8ZGl2Piwg
d2UgbmVlZCB0byBsb29rIGluc2lkZSB0aGUgSUZDIGFuZCBnYXRoZXIgZ2VvbWV0cnkgaW5mb3Jt
YXRpb24uCisgICAgICAgIGlmICgqZXNjYXBlUmVhc29uID09IEVzY2FwZVJlYXNvbjo6VGFibGVR
dWlya05lZWRzR2VvbWV0cnlGcm9tRXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4dCkgeworICAg
ICAgICAgICAgLy8gVGhpcyBpcyB0aGUgY2FzZSB3aGVuIHRoZSB0YWJsZSBmb3JtYXR0aW5nIHJv
b3QgY29sbGVjdHMgZ2VvbWV0cnkgaW5mb3JtYXRpb24gZnJvbSB0aGUgY2VsbCdzCisgICAgICAg
ICAgICAvLyBmb3JtYXR0aW5nIGNvbnRleHQgdG8gYmUgYWJsZSB0byBkZXRlcm1pbmUgd2lkdGgv
aGVpZ2h0LiBzZWUgc2hvdWxkSWdub3JlQ2hpbGRDb250ZW50VmVydGljYWxNYXJnaW4KKyAgICAg
ICAgICAgIEFTU0VSVChyb290KCkuZXN0YWJsaXNoZXNUYWJsZUZvcm1hdHRpbmdDb250ZXh0KCkp
OwogICAgICAgICAgICAgcmV0dXJuICZsYXlvdXRCb3guZm9ybWF0dGluZ0NvbnRleHRSb290KCku
Zm9ybWF0dGluZ0NvbnRleHRSb290KCkgPT0gJnJvb3QoKTsKICAgICAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDY3OTUxZDBlYzcwNDMzNTBl
ZjE5M2M4NjRmNWRjOWZiY2FlNTBmMmYuLjcxMTAyNTU4OGVjNGEwM2Q5ZTM1YTBhYzkzMGE3NzZj
NjIzZjg0NDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29u
dGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dC5oCkBA
IC04Nyw2ICs4Nyw3IEBAIHB1YmxpYzoKICAgICAgICAgTGF5b3V0VW5pdCBtYXhpbXVtOwogICAg
IH07CiAgICAgdmlydHVhbCBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50cmlu
c2ljV2lkdGhDb25zdHJhaW50cygpID0gMDsKKyAgICB2aXJ0dWFsIExheW91dFVuaXQgdXNlZENv
bnRlbnRIZWlnaHQoKSBjb25zdCA9IDA7CiAKICAgICBib29sIGlzQmxvY2tGb3JtYXR0aW5nQ29u
dGV4dCgpIGNvbnN0IHsgcmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0Jsb2NrRm9ybWF0dGluZ0Nv
bnRleHQoKTsgfQogICAgIGJvb2wgaXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsg
cmV0dXJuIHJvb3QoKS5lc3RhYmxpc2hlc0lubGluZUZvcm1hdHRpbmdDb250ZXh0KCk7IH0KQEAg
LTk1LDcgKzk2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQo
KSBjb25zdCB7IHJldHVybiByb290KCkuZXN0YWJsaXNoZXNGbGV4Rm9ybWF0dGluZ0NvbnRleHQo
KTsgfQogCiAgICAgZW51bSBjbGFzcyBFc2NhcGVSZWFzb24gewotICAgICAgICBOZWVkc0dlb21l
dHJ5RnJvbUVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQsCisgICAgICAgIFRhYmxlUXVpcmtO
ZWVkc0dlb21ldHJ5RnJvbUVzdGFibGlzaGVkRm9ybWF0dGluZ0NvbnRleHQsCiAgICAgICAgIE91
dE9mRmxvd0JveE5lZWRzSW5GbG93R2VvbWV0cnksCiAgICAgICAgIEZsb2F0Qm94SXNBbHdheXNS
ZWxhdGl2ZVRvRmxvYXRTdGF0ZVJvb3QsCiAgICAgICAgIEZpbmRGaXhlZEhlaWdodEFuY2VzdG9y
UXVpcmssCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRl
eHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvRm9ybWF0dGluZ0NvbnRleHRH
ZW9tZXRyeS5jcHAKaW5kZXggNDc0M2U0Mzc3ZmRlYzRhMzRkODc4MjA4ZTZkZmRjNjUzMTIzN2Y0
NC4uM2NmMDU0N2ZjY2IwYzkxMGUxOGFhODY5NWQ1YjM2YWZlZTY1YTUxZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvbGF5b3V0L0Zvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2xheW91dC9Gb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAt
MTc1LDYwICsxNzUsOSBAQCBMYXlvdXRVbml0IEZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRyeTo6
Y29udGVudEhlaWdodEZvckZvcm1hdHRpbmdDb250ZXh0Um9vdChjbwogewogICAgIEFTU0VSVChm
b3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGb3JtYXR0aW5nQ29udGV4dCgpKTsKICAg
ICBBU1NFUlQoaXNIZWlnaHRBdXRvKGZvcm1hdHRpbmdDb250ZXh0Um9vdCkgfHwgZm9ybWF0dGlu
Z0NvbnRleHRSb290LmVzdGFibGlzaGVzVGFibGVGb3JtYXR0aW5nQ29udGV4dCgpIHx8IGZvcm1h
dHRpbmdDb250ZXh0Um9vdC5pc1RhYmxlQ2VsbCgpKTsKLQotICAgIC8vIDEwLjYuNyAnQXV0bycg
aGVpZ2h0cyBmb3IgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IHJvb3RzCi0KLSAgICAvLyBJZiBp
dCBvbmx5IGhhcyBpbmxpbmUtbGV2ZWwgY2hpbGRyZW4sIHRoZSBoZWlnaHQgaXMgdGhlIGRpc3Rh
bmNlIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUgdG9wbW9zdCBsaW5lIGJveCBhbmQgdGhlIGJvdHRv
bSBvZiB0aGUgYm90dG9tbW9zdCBsaW5lIGJveC4KLSAgICAvLyBJZiBpdCBoYXMgYmxvY2stbGV2
ZWwgY2hpbGRyZW4sIHRoZSBoZWlnaHQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHRvcCBt
YXJnaW4tZWRnZSBvZiB0aGUgdG9wbW9zdCBibG9jay1sZXZlbAotICAgIC8vIGNoaWxkIGJveCBh
bmQgdGhlIGJvdHRvbSBtYXJnaW4tZWRnZSBvZiB0aGUgYm90dG9tbW9zdCBibG9jay1sZXZlbCBj
aGlsZCBib3guCi0KLSAgICAvLyBJbiBhZGRpdGlvbiwgaWYgdGhlIGVsZW1lbnQgaGFzIGFueSBm
bG9hdGluZyBkZXNjZW5kYW50cyB3aG9zZSBib3R0b20gbWFyZ2luIGVkZ2UgaXMgYmVsb3cgdGhl
IGVsZW1lbnQncyBib3R0b20gY29udGVudCBlZGdlLAotICAgIC8vIHRoZW4gdGhlIGhlaWdodCBp
cyBpbmNyZWFzZWQgdG8gaW5jbHVkZSB0aG9zZSBlZGdlcy4gT25seSBmbG9hdHMgdGhhdCBwYXJ0
aWNpcGF0ZSBpbiB0aGlzIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCBhcmUgdGFrZW4KLSAgICAv
LyBpbnRvIGFjY291bnQsIGUuZy4sIGZsb2F0cyBpbnNpZGUgYWJzb2x1dGVseSBwb3NpdGlvbmVk
IGRlc2NlbmRhbnRzIG9yIG90aGVyIGZsb2F0cyBhcmUgbm90LgogICAgIGlmICghZm9ybWF0dGlu
Z0NvbnRleHRSb290Lmhhc0luRmxvd09yRmxvYXRpbmdDaGlsZCgpKQogICAgICAgICByZXR1cm4g
eyB9OwotCi0gICAgYXV0byYgbGF5b3V0U3RhdGUgPSB0aGlzLT5sYXlvdXRTdGF0ZSgpOwotICAg
IGF1dG8mIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGluZ0NvbnRleHQoKTsKLSAg
ICBhdXRvJiBib3hHZW9tZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGZv
cm1hdHRpbmdDb250ZXh0Um9vdCk7Ci0gICAgYXV0byBib3JkZXJBbmRQYWRkaW5nVG9wID0gYm94
R2VvbWV0cnkuYm9yZGVyVG9wKCkgKyBib3hHZW9tZXRyeS5wYWRkaW5nVG9wKCkudmFsdWVPcigw
KTsKLSAgICBhdXRvIHRvcCA9IGJvcmRlckFuZFBhZGRpbmdUb3A7Ci0gICAgYXV0byBib3R0b20g
PSBib3JkZXJBbmRQYWRkaW5nVG9wOwotICAgIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0
YWJsaXNoZXNJbmxpbmVGb3JtYXR0aW5nQ29udGV4dCgpKSB7Ci0gICAgICAgIGF1dG8mIGlubGlu
ZUZvcm1hdHRpbmdTdGF0ZSA9IGxheW91dFN0YXRlLmVzdGFibGlzaGVkSW5saW5lRm9ybWF0dGlu
Z1N0YXRlKGZvcm1hdHRpbmdDb250ZXh0Um9vdCk7Ci0gICAgICAgIGF1dG8mIGxpbmVzID0gaW5s
aW5lRm9ybWF0dGluZ1N0YXRlLmxpbmVzKCk7Ci0gICAgICAgIC8vIEV2ZW4gZW1wdHkgY29udGFp
bmVycyBnZW5lcmF0ZSBvbmUgbGluZS4KLSAgICAgICAgQVNTRVJUKCFsaW5lcy5pc0VtcHR5KCkp
OwotICAgICAgICB0b3AgPSBsaW5lcy5maXJzdCgpLmxpbmVCb3hMb2dpY2FsUmVjdCgpLnRvcCgp
OwotICAgICAgICBib3R0b20gPSBsaW5lcy5sYXN0KCkubGluZUJveExvZ2ljYWxSZWN0KCkuYm90
dG9tKCkgKyBpbmxpbmVGb3JtYXR0aW5nU3RhdGUuY2xlYXJHYXBBZnRlckxhc3RMaW5lKCk7Ci0g
ICAgfSBlbHNlIGlmIChmb3JtYXR0aW5nQ29udGV4dFJvb3QuZXN0YWJsaXNoZXNGbGV4Rm9ybWF0
dGluZ0NvbnRleHQoKSkgewotICAgICAgICBhdXRvJiBsaW5lcyA9IGxheW91dFN0YXRlLmVzdGFi
bGlzaGVkRmxleEZvcm1hdHRpbmdTdGF0ZShmb3JtYXR0aW5nQ29udGV4dFJvb3QpLmxpbmVzKCk7
Ci0gICAgICAgIEFTU0VSVCghbGluZXMuaXNFbXB0eSgpKTsKLSAgICAgICAgLy8gRklYTUU6IE1v
dmUgZmxleCBvdmVyIHRvIGxheW91dCBnZW9tZXRyeS4KLSAgICAgICAgdG9wID0gbGluZXMuZmly
c3QoKS50b3AoKTsKLSAgICAgICAgYm90dG9tID0gbGluZXMubGFzdCgpLmJvdHRvbSgpOwotICAg
IH0gZWxzZSBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290LmVzdGFibGlzaGVzQmxvY2tGb3JtYXR0
aW5nQ29udGV4dCgpIHx8IGZvcm1hdHRpbmdDb250ZXh0Um9vdC5lc3RhYmxpc2hlc1RhYmxlRm9y
bWF0dGluZ0NvbnRleHQoKSkgewotICAgICAgICBpZiAoZm9ybWF0dGluZ0NvbnRleHRSb290Lmhh
c0luRmxvd0NoaWxkKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGZpcnN0Qm94R2VvbWV0cnkgPSBm
b3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveCgqZm9ybWF0dGluZ0NvbnRleHRSb290LmZp
cnN0SW5GbG93Q2hpbGQoKSwgRXNjYXBlUmVhc29uOjpOZWVkc0dlb21ldHJ5RnJvbUVzdGFibGlz
aGVkRm9ybWF0dGluZ0NvbnRleHQpOwotICAgICAgICAgICAgYXV0byYgbGFzdEJveEdlb21ldHJ5
ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlGb3JCb3goKmZvcm1hdHRpbmdDb250ZXh0Um9v
dC5sYXN0SW5GbG93Q2hpbGQoKSwgRXNjYXBlUmVhc29uOjpOZWVkc0dlb21ldHJ5RnJvbUVzdGFi
bGlzaGVkRm9ybWF0dGluZ0NvbnRleHQpOwotICAgICAgICAgICAgdG9wID0gQm94R2VvbWV0cnk6
Om1hcmdpbkJveFJlY3QoZmlyc3RCb3hHZW9tZXRyeSkudG9wKCk7Ci0gICAgICAgICAgICBib3R0
b20gPSBCb3hHZW9tZXRyeTo6bWFyZ2luQm94UmVjdChsYXN0Qm94R2VvbWV0cnkpLmJvdHRvbSgp
OwotICAgICAgICB9Ci0gICAgfSBlbHNlCi0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
Ci0gICAgYXV0byBmbG9hdGluZ0NvbnRleHQgPSBGbG9hdGluZ0NvbnRleHQgeyBmb3JtYXR0aW5n
Q29udGV4dCwgbGF5b3V0U3RhdGUuZXN0YWJsaXNoZWRGb3JtYXR0aW5nU3RhdGUoZm9ybWF0dGlu
Z0NvbnRleHRSb290KS5mbG9hdGluZ1N0YXRlKCkgfTsKLSAgICBhdXRvIGZsb2F0Qm90dG9tID0g
ZmxvYXRpbmdDb250ZXh0LmJvdHRvbSgpOwotICAgIGlmIChmbG9hdEJvdHRvbSkgewotICAgICAg
ICBib3R0b20gPSBzdGQ6Om1heCgqZmxvYXRCb3R0b20sIGJvdHRvbSk7Ci0gICAgICAgIGF1dG8g
ZmxvYXRUb3AgPSBmbG9hdGluZ0NvbnRleHQudG9wKCk7Ci0gICAgICAgIEFTU0VSVChmbG9hdFRv
cCk7Ci0gICAgICAgIHRvcCA9IHN0ZDo6bWluKCpmbG9hdFRvcCwgdG9wKTsKLSAgICB9Ci0gICAg
YXV0byBjb21wdXRlZEhlaWdodCA9IGJvdHRvbSAtIHRvcDsKLQotICAgIExPR19XSVRIX1NUUkVB
TShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJbSGVpZ2h0XSAtPiBjb250ZW50
IGhlaWdodCBmb3IgZm9ybWF0dGluZyBjb250ZXh0IHJvb3QgLT4gaGVpZ2h0KCIgPDwgY29tcHV0
ZWRIZWlnaHQgPDwgInB4KSBsYXlvdXRCb3goIjw8ICZmb3JtYXR0aW5nQ29udGV4dFJvb3QgPDwg
IikiKTsKLSAgICByZXR1cm4gY29tcHV0ZWRIZWlnaHQ7CisgICAgcmV0dXJuIExheW91dENvbnRl
eHQ6OmNyZWF0ZUZvcm1hdHRpbmdDb250ZXh0KGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgY29uc3Rf
Y2FzdDxMYXlvdXRTdGF0ZSY+KGxheW91dFN0YXRlKCkpKS0+dXNlZENvbnRlbnRIZWlnaHQoKTsK
IH0KIAogT3B0aW9uYWw8TGF5b3V0VW5pdD4gRm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5Ojpj
b21wdXRlZFZhbHVlKGNvbnN0IExlbmd0aCYgZ2VvbWV0cnlQcm9wZXJ0eSwgTGF5b3V0VW5pdCBj
b250YWluaW5nQmxvY2tXaWR0aCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xh
eW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvYmxvY2tmb3JtYXR0aW5nL0Jsb2NrRm9ybWF0dGluZ0NvbnRleHQuY3Bw
CmluZGV4IDM1OTM2NGFkM2Y1MjQyMDY0YmJlYzgzNDE5NzE5NTVjY2JkNTU3ZjIuLjBmNTU1Zjgx
OTM4MWU3M2FmM2UxOWMwMmYzOGIwZmNmM2JkMTIwNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9ibG9ja2Zvcm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdD
b250ZXh0LmNwcApAQCAtMTc0LDYgKzE3NCwzMiBAQCB2b2lkIEJsb2NrRm9ybWF0dGluZ0NvbnRl
eHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmIGludmFsaWRhdGlvbgog
ICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExheW91dCwgc3RyZWFtIDw8ICJb
RW5kXSAtPiBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgLT4gZm9ybWF0dGluZyByb290KCIgPDwg
JnJvb3QoKSA8PCAiKSIpOwogfQogCitMYXlvdXRVbml0IEJsb2NrRm9ybWF0dGluZ0NvbnRleHQ6
OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QKK3sKKyAgICAvLyAxMC42LjcgJ0F1dG8nIGhlaWdo
dHMgZm9yIGJsb2NrIGZvcm1hdHRpbmcgY29udGV4dCByb290cworCisgICAgLy8gSWYgaXQgaGFz
IGJsb2NrLWxldmVsIGNoaWxkcmVuLCB0aGUgaGVpZ2h0IGlzIHRoZSBkaXN0YW5jZSBiZXR3ZWVu
IHRoZSB0b3AgbWFyZ2luLWVkZ2Ugb2YgdGhlIHRvcG1vc3QgYmxvY2stbGV2ZWwKKyAgICAvLyBj
aGlsZCBib3ggYW5kIHRoZSBib3R0b20gbWFyZ2luLWVkZ2Ugb2YgdGhlIGJvdHRvbW1vc3QgYmxv
Y2stbGV2ZWwgY2hpbGQgYm94LgorCisgICAgLy8gSW4gYWRkaXRpb24sIGlmIHRoZSBlbGVtZW50
IGhhcyBhbnkgZmxvYXRpbmcgZGVzY2VuZGFudHMgd2hvc2UgYm90dG9tIG1hcmdpbiBlZGdlIGlz
IGJlbG93IHRoZSBlbGVtZW50J3MgYm90dG9tIGNvbnRlbnQgZWRnZSwKKyAgICAvLyB0aGVuIHRo
ZSBoZWlnaHQgaXMgaW5jcmVhc2VkIHRvIGluY2x1ZGUgdGhvc2UgZWRnZXMuIE9ubHkgZmxvYXRz
IHRoYXQgcGFydGljaXBhdGUgaW4gdGhpcyBibG9jayBmb3JtYXR0aW5nIGNvbnRleHQgYXJlIHRh
a2VuCisgICAgLy8gaW50byBhY2NvdW50LCBlLmcuLCBmbG9hdHMgaW5zaWRlIGFic29sdXRlbHkg
cG9zaXRpb25lZCBkZXNjZW5kYW50cyBvciBvdGhlciBmbG9hdHMgYXJlIG5vdC4KKyAgICBhdXRv
IHRvcCA9IE9wdGlvbmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBhdXRvIGJvdHRvbSA9IE9wdGlv
bmFsPExheW91dFVuaXQ+IHsgfTsKKyAgICBpZiAocm9vdCgpLmhhc0luRmxvd0NoaWxkKCkpIHsK
KyAgICAgICAgdG9wID0gQm94R2VvbWV0cnk6Om1hcmdpbkJveFJlY3QoZ2VvbWV0cnlGb3JCb3go
KnJvb3QoKS5maXJzdEluRmxvd0NoaWxkKCkpKS50b3AoKTsKKyAgICAgICAgYm90dG9tID0gQm94
R2VvbWV0cnk6Om1hcmdpbkJveFJlY3QoZ2VvbWV0cnlGb3JCb3goKnJvb3QoKS5sYXN0SW5GbG93
Q2hpbGQoKSkpLmJvdHRvbSgpOworICAgIH0KKworICAgIGF1dG8gZmxvYXRpbmdDb250ZXh0ID0g
RmxvYXRpbmdDb250ZXh0IHsgKnRoaXMsIGZvcm1hdHRpbmdTdGF0ZSgpLmZsb2F0aW5nU3RhdGUo
KSB9OworICAgIGlmIChhdXRvIGZsb2F0VG9wID0gZmxvYXRpbmdDb250ZXh0LnRvcCgpKSB7Cisg
ICAgICAgIHRvcCA9IHN0ZDo6bWluKCpmbG9hdFRvcCwgdG9wLnZhbHVlT3IoKmZsb2F0VG9wKSk7
CisgICAgICAgIGF1dG8gZmxvYXRCb3R0b20gPSAqZmxvYXRpbmdDb250ZXh0LmJvdHRvbSgpOwor
ICAgICAgICBib3R0b20gPSBzdGQ6Om1heChmbG9hdEJvdHRvbSwgYm90dG9tLnZhbHVlT3IoZmxv
YXRCb3R0b20pKTsKKyAgICB9CisgICAgcmV0dXJuICpib3R0b20gLSAqdG9wOworfQorCiBPcHRp
b25hbDxMYXlvdXRVbml0PiBCbG9ja0Zvcm1hdHRpbmdDb250ZXh0Ojp1c2VkQXZhaWxhYmxlV2lk
dGhGb3JGbG9hdEF2b2lkZXIoY29uc3QgRmxvYXRpbmdDb250ZXh0JiBmbG9hdGluZ0NvbnRleHQs
IGNvbnN0IEJveCYgbGF5b3V0Qm94LCBjb25zdCBDb25zdHJhaW50c1BhaXImIGNvbnN0cmFpbnRz
UGFpcikKIHsKICAgICAvLyBOb3JtYWxseSB0aGUgYXZhaWxhYmxlIHdpZHRoIGZvciBhbiBpbi1m
bG93IGJsb2NrIGxldmVsIGJveCBpcyB0aGUgd2lkdGggb2YgdGhlIGNvbnRhaW5pbmcgYmxvY2sn
cyBjb250ZW50IGJveC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9ibG9ja2Zv
cm1hdHRpbmcvQmxvY2tGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggZDc5M2IzZmJl
MjMzZGMwNzQ1MzNlNTQzMzc4OTJjMzJmYjE1YTExOS4uNjNkOTk2OTNlODdjZDBiMGYxMzJlYWM3
MTM2OTBlMGI3MDUyZTEyOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2Jsb2Nr
Zm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2Jsb2NrZm9ybWF0dGluZy9CbG9ja0Zvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ5LDYg
KzQ5LDcgQEAgcHVibGljOgogICAgIEJsb2NrRm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFp
bmVyQm94JiBmb3JtYXR0aW5nQ29udGV4dFJvb3QsIEJsb2NrRm9ybWF0dGluZ1N0YXRlJik7CiAK
ICAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBD
b25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IHVz
ZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKIHByb3RlY3RlZDoKICAgICBzdHJ1
Y3QgQ29uc3RyYWludHNQYWlyIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9m
bGV4Zm9ybWF0dGluZy9GbGV4Rm9ybWF0dGluZ0NvbnRleHQuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggYTlh
YmQ2NmMxOWRlOTEwOTNhOGM3MzBjOTU1NDU0NTZkYWViMTI5OS4uMzE1N2ZkNjk5MDQyODY5N2U4
NWQxNzFmNmQzYWM4ZDU4N2FjYWNmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3JtYXR0aW5nQ29udGV4dC5jcHAKQEAg
LTUyLDYgKzUyLDEyIEBAIHZvaWQgRmxleEZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dD
b250ZW50KEludmFsaWRhdGlvblN0YXRlJiwgY29uc3QgQ29uc3RyCiAgICAgc2l6ZUFuZFBsYWNl
RmxleEl0ZW1zKGNvbnN0cmFpbnRzKTsKIH0KIAorTGF5b3V0VW5pdCBGbGV4Rm9ybWF0dGluZ0Nv
bnRleHQ6OnVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3QKK3sKKyAgICBhdXRvJiBsaW5lcyA9IGZv
cm1hdHRpbmdTdGF0ZSgpLmxpbmVzKCk7CisgICAgcmV0dXJuIExheW91dFVuaXQgeyBsaW5lcy5s
YXN0KCkuYm90dG9tKCkgLSBsaW5lcy5maXJzdCgpLnRvcCgpIH07Cit9CisKIEZvcm1hdHRpbmdD
b250ZXh0OjpJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIEZsZXhGb3JtYXR0aW5nQ29udGV4dDo6
Y29tcHV0ZWRJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzKCkKIHsKICAgICByZXR1cm4geyB9Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ZsZXhmb3JtYXR0aW5nL0ZsZXhGb3Jt
YXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2ZsZXhmb3JtYXR0aW5nL0Zs
ZXhGb3JtYXR0aW5nQ29udGV4dC5oCmluZGV4IDU2ZTlhZGRmZmUzNWMwNTJjMmYzYTQwNmY2MWI1
ZDMwMTc4MTE2MTYuLjgxYTBlNDA2OWZmZDEwMjk2ODhjYzUxNmNmZDk1OTBjY2M5MzY1MmIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9mbGV4Zm9ybWF0dGluZy9GbGV4Rm9ybWF0
dGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvZmxleGZvcm1hdHRpbmcv
RmxleEZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQyLDYgKzQyLDcgQEAgY2xhc3MgRmxleEZvcm1h
dHRpbmdDb250ZXh0IGZpbmFsIDogcHVibGljIEZvcm1hdHRpbmdDb250ZXh0IHsKIHB1YmxpYzoK
ICAgICBGbGV4Rm9ybWF0dGluZ0NvbnRleHQoY29uc3QgQ29udGFpbmVyQm94JiBmb3JtYXR0aW5n
Q29udGV4dFJvb3QsIEZsZXhGb3JtYXR0aW5nU3RhdGUmKTsKICAgICB2b2lkIGxheW91dEluRmxv
d0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0Nv
bnRlbnQmKSBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0IHVzZWRDb250ZW50SGVpZ2h0KCkgY29u
c3Qgb3ZlcnJpZGU7CiAKICAgICBJbnRyaW5zaWNXaWR0aENvbnN0cmFpbnRzIGNvbXB1dGVkSW50
cmluc2ljV2lkdGhDb25zdHJhaW50cygpIG92ZXJyaWRlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0
aW5nQ29udGV4dC5jcHAKaW5kZXggOTA1Zjk2YzMwOTE5MjNiMmIzYzJiNTU2NjRhZTZhMjQ3NTRj
ZDU3Mi4uYmExNzEyYTU0NTJhZDYwYjk1ZTRlNTI5NjY1M2RhNmQ2ZTk4OTJlMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGlu
Z0NvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5n
L0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmNwcApAQCAtMTQxLDYgKzE0MSwyOSBAQCB2b2lkIElu
bGluZUZvcm1hdHRpbmdDb250ZXh0OjpsYXlvdXRJbkZsb3dDb250ZW50KEludmFsaWRhdGlvblN0
YXRlJiBpbnZhbGlkYXRpbwogICAgIExPR19XSVRIX1NUUkVBTShGb3JtYXR0aW5nQ29udGV4dExh
eW91dCwgc3RyZWFtIDw8ICJbRW5kXSAtPiBpbmxpbmUgZm9ybWF0dGluZyBjb250ZXh0IC0+IGZv
cm1hdHRpbmcgcm9vdCgiIDw8ICZyb290KCkgPDwgIikiKTsKIH0KIAorTGF5b3V0VW5pdCBJbmxp
bmVGb3JtYXR0aW5nQ29udGV4dDo6dXNlZENvbnRlbnRIZWlnaHQoKSBjb25zdAoreworICAgIC8v
IDEwLjYuNyAnQXV0bycgaGVpZ2h0cyBmb3IgYmxvY2sgZm9ybWF0dGluZyBjb250ZXh0IHJvb3Rz
CisKKyAgICAvLyBJZiBpdCBvbmx5IGhhcyBpbmxpbmUtbGV2ZWwgY2hpbGRyZW4sIHRoZSBoZWln
aHQgaXMgdGhlIGRpc3RhbmNlIGJldHdlZW4gdGhlIHRvcCBvZiB0aGUgdG9wbW9zdCBsaW5lIGJv
eCBhbmQgdGhlIGJvdHRvbSBvZiB0aGUgYm90dG9tbW9zdCBsaW5lIGJveC4KKworICAgIC8vIElu
IGFkZGl0aW9uLCBpZiB0aGUgZWxlbWVudCBoYXMgYW55IGZsb2F0aW5nIGRlc2NlbmRhbnRzIHdo
b3NlIGJvdHRvbSBtYXJnaW4gZWRnZSBpcyBiZWxvdyB0aGUgZWxlbWVudCdzIGJvdHRvbSBjb250
ZW50IGVkZ2UsCisgICAgLy8gdGhlbiB0aGUgaGVpZ2h0IGlzIGluY3JlYXNlZCB0byBpbmNsdWRl
IHRob3NlIGVkZ2VzLiBPbmx5IGZsb2F0cyB0aGF0IHBhcnRpY2lwYXRlIGluIHRoaXMgYmxvY2sg
Zm9ybWF0dGluZyBjb250ZXh0IGFyZSB0YWtlbgorICAgIC8vIGludG8gYWNjb3VudCwgZS5nLiwg
ZmxvYXRzIGluc2lkZSBhYnNvbHV0ZWx5IHBvc2l0aW9uZWQgZGVzY2VuZGFudHMgb3Igb3RoZXIg
ZmxvYXRzIGFyZSBub3QuCisgICAgYXV0byYgbGluZXMgPSBmb3JtYXR0aW5nU3RhdGUoKS5saW5l
cygpOworICAgIC8vIEV2ZW4gZW1wdHkgY29udGFpbmVycyBnZW5lcmF0ZSBvbmUgbGluZS4KKyAg
ICBBU1NFUlQoIWxpbmVzLmlzRW1wdHkoKSk7CisgICAgYXV0byB0b3AgPSBMYXlvdXRVbml0IHsg
bGluZXMuZmlyc3QoKS5saW5lQm94TG9naWNhbFJlY3QoKS50b3AoKSB9OworICAgIGF1dG8gYm90
dG9tID0gTGF5b3V0VW5pdCB7IGxpbmVzLmxhc3QoKS5saW5lQm94TG9naWNhbFJlY3QoKS5ib3R0
b20oKSArIGZvcm1hdHRpbmdTdGF0ZSgpLmNsZWFyR2FwQWZ0ZXJMYXN0TGluZSgpIH07CisKKyAg
ICBhdXRvIGZsb2F0aW5nQ29udGV4dCA9IEZsb2F0aW5nQ29udGV4dCB7ICp0aGlzLCBmb3JtYXR0
aW5nU3RhdGUoKS5mbG9hdGluZ1N0YXRlKCkgfTsKKyAgICBpZiAoYXV0byBmbG9hdEJvdHRvbSA9
IGZsb2F0aW5nQ29udGV4dC5ib3R0b20oKSkgeworICAgICAgICBib3R0b20gPSBzdGQ6Om1heCgq
ZmxvYXRCb3R0b20sIGJvdHRvbSk7CisgICAgICAgIHRvcCA9IHN0ZDo6bWluKCpmbG9hdGluZ0Nv
bnRleHQudG9wKCksIHRvcCk7CisgICAgfQorICAgIHJldHVybiBib3R0b20gLSB0b3A7Cit9CisK
IHZvaWQgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQ6OmxpbmVMYXlvdXQoSW5saW5lSXRlbXMmIGlu
bGluZUl0ZW1zLCBMaW5lQnVpbGRlcjo6SW5saW5lSXRlbVJhbmdlIG5lZWRzTGF5b3V0UmFuZ2Us
IGNvbnN0IENvbnN0cmFpbnRzRm9ySW5GbG93Q29udGVudCYgY29uc3RyYWludHMpCiB7CiAgICAg
SW5saW5lTGF5b3V0VW5pdCBsaW5lTG9naWNhbFRvcCA9IGNvbnN0cmFpbnRzLnZlcnRpY2FsLmxv
Z2ljYWxUb3A7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lu
bGluZWZvcm1hdHRpbmcvSW5saW5lRm9ybWF0dGluZ0NvbnRleHQuaAppbmRleCBhMmQ0MGFkOTE0
MTZhNGNmYTdhZTIwZWJmZDM5MjAxOGM3MDgxZDEzLi4zMTgxZjRjYzQ1ZjU4Y2FhNTBlYThiN2I1
NTNiNzg4OGNhMzliMGJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ1
LDYgKzQ1LDcgQEAgY2xhc3MgSW5saW5lRm9ybWF0dGluZ0NvbnRleHQgZmluYWwgOiBwdWJsaWMg
Rm9ybWF0dGluZ0NvbnRleHQgewogcHVibGljOgogICAgIElubGluZUZvcm1hdHRpbmdDb250ZXh0
KGNvbnN0IENvbnRhaW5lckJveCYgZm9ybWF0dGluZ0NvbnRleHRSb290LCBJbmxpbmVGb3JtYXR0
aW5nU3RhdGUmKTsKICAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3Rh
dGUmLCBjb25zdCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKKyAgICBM
YXlvdXRVbml0IHVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBjbGFz
cyBRdWlya3MgOiBwdWJsaWMgRm9ybWF0dGluZ0NvbnRleHQ6OlF1aXJrcyB7CiAgICAgcHVibGlj
OgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJs
ZUZvcm1hdHRpbmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5jcHAKaW5kZXggNWRiOWVlYzVjNjMxNTc1ODE5
NzVkZWY2YjNiMWQ1ZjhmMTEzYzBiZi4uM2UwNTAxNWE1ZjE0ODM5NmYwYmE4OGE3NWQ0ZmU5NjUw
YjU0MTNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9ybWF0dGlu
Zy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQv
dGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHQuY3BwCkBAIC02NSw2ICs2NSwx
NCBAQCB2b2lkIFRhYmxlRm9ybWF0dGluZ0NvbnRleHQ6OmxheW91dEluRmxvd0NvbnRlbnQoSW52
YWxpZGF0aW9uU3RhdGUmLCBjb25zdCBDb25zdAogICAgIHNldFVzZWRHZW9tZXRyeUZvclNlY3Rp
b25zKGNvbnN0cmFpbnRzKTsKIH0KIAorTGF5b3V0VW5pdCBUYWJsZUZvcm1hdHRpbmdDb250ZXh0
Ojp1c2VkQ29udGVudEhlaWdodCgpIGNvbnN0Cit7CisgICAgLy8gVGFibGUgaGFzIHRvIGhhdmUg
c29tZSBzZWN0aW9uIGNvbnRlbnQsIGF0IGxlYXN0IG9uZSA8dGJvZHk+LgorICAgIGF1dG8gdG9w
ID0gQm94R2VvbWV0cnk6Om1hcmdpbkJveFJlY3QoZ2VvbWV0cnlGb3JCb3goKnJvb3QoKS5maXJz
dEluRmxvd0NoaWxkKCkpKS50b3AoKTsKKyAgICBhdXRvIGJvdHRvbSA9IEJveEdlb21ldHJ5Ojpt
YXJnaW5Cb3hSZWN0KGdlb21ldHJ5Rm9yQm94KCpyb290KCkubGFzdEluRmxvd0NoaWxkKCkpKS5i
b3R0b20oKTsKKyAgICByZXR1cm4gYm90dG9tIC0gdG9wOworfQorCiB2b2lkIFRhYmxlRm9ybWF0
dGluZ0NvbnRleHQ6OnNldFVzZWRHZW9tZXRyeUZvckNlbGxzKExheW91dFVuaXQgYXZhaWxhYmxl
SG9yaXpvbnRhbFNwYWNlKQogewogICAgIGF1dG8mIGdyaWQgPSBmb3JtYXR0aW5nU3RhdGUoKS50
YWJsZUdyaWQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1h
dHRpbmcvVGFibGVGb3JtYXR0aW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L3Rh
YmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKaW5kZXggMzQ3MjZhOGFmYmU0
ZDA4OGQ1YzA2MjE0MWU2MWU3NjczYmE5Y2ZmMy4uMWYzMGRlMTM1NDU2NjU1ODFlYjk0OWEyN2I4
MGRmNGUxMjIyNWU2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L3RhYmxlZm9y
bWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvbGF5
b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0LmgKQEAgLTQ0LDYgKzQ0
LDcgQEAgY2xhc3MgVGFibGVGb3JtYXR0aW5nQ29udGV4dCBmaW5hbCA6IHB1YmxpYyBGb3JtYXR0
aW5nQ29udGV4dCB7CiBwdWJsaWM6CiAgICAgVGFibGVGb3JtYXR0aW5nQ29udGV4dChjb25zdCBD
b250YWluZXJCb3gmIGZvcm1hdHRpbmdDb250ZXh0Um9vdCwgVGFibGVGb3JtYXR0aW5nU3RhdGUm
KTsKICAgICB2b2lkIGxheW91dEluRmxvd0NvbnRlbnQoSW52YWxpZGF0aW9uU3RhdGUmLCBjb25z
dCBDb25zdHJhaW50c0ZvckluRmxvd0NvbnRlbnQmKSBvdmVycmlkZTsKKyAgICBMYXlvdXRVbml0
IHVzZWRDb250ZW50SGVpZ2h0KCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICBzdGF0aWMgVW5pcXVl
UmVmPFRhYmxlR3JpZD4gZW5zdXJlVGFibGVHcmlkKGNvbnN0IENvbnRhaW5lckJveCYgdGFibGVC
b3gpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvdGFibGVmb3JtYXR0aW5n
L1RhYmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvdGFibGVmb3JtYXR0aW5nL1RhYmxlRm9ybWF0dGluZ0NvbnRleHRHZW9tZXRyeS5jcHAKaW5k
ZXggMDU5ZDg4OWJkOGMzNmE4NmZiMWUwYWZjNjUzZTZhZTBkNDk0Y2QwNy4uZDczMjM5MjY5NGY2
ZTdhODI0MjljMjBhNWU2MTA5ODQwZTJhZWRjOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bGF5b3V0L3RhYmxlZm9ybWF0dGluZy9UYWJsZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC90YWJsZWZvcm1hdHRpbmcvVGFibGVGb3JtYXR0
aW5nQ29udGV4dEdlb21ldHJ5LmNwcApAQCAtNDcsOCArNDcsOCBAQCBMYXlvdXRVbml0IFRhYmxl
Rm9ybWF0dGluZ0NvbnRleHQ6Okdlb21ldHJ5OjpjZWxsSGVpZ2goY29uc3QgQ29udGFpbmVyQm94
JiBjZWxsQgogICAgICAgICBhdXRvIGZvcm1hdHRpbmdDb250ZXh0ID0gdGhpcy0+Zm9ybWF0dGlu
Z0NvbnRleHQoKTsKICAgICAgICAgYXV0byYgZmlyc3RJbkZsb3dDaGlsZCA9ICpjZWxsQm94LmZp
cnN0SW5GbG93Q2hpbGQoKTsKICAgICAgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkID0gKmNlbGxC
b3gubGFzdEluRmxvd0NoaWxkKCk7Ci0gICAgICAgIGF1dG8mIGZpcnN0SW5GbG93Q2hpbGRHZW9t
ZXRyeSA9IGZvcm1hdHRpbmdDb250ZXh0Lmdlb21ldHJ5Rm9yQm94KGZpcnN0SW5GbG93Q2hpbGQs
IEVzY2FwZVJlYXNvbjo6TmVlZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250
ZXh0KTsKLSAgICAgICAgYXV0byYgbGFzdEluRmxvd0NoaWxkR2VvbWV0cnkgPSBmb3JtYXR0aW5n
Q29udGV4dC5nZW9tZXRyeUZvckJveChsYXN0SW5GbG93Q2hpbGQsIEVzY2FwZVJlYXNvbjo6TmVl
ZHNHZW9tZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KTsKKyAgICAgICAgYXV0
byYgZmlyc3RJbkZsb3dDaGlsZEdlb21ldHJ5ID0gZm9ybWF0dGluZ0NvbnRleHQuZ2VvbWV0cnlG
b3JCb3goZmlyc3RJbkZsb3dDaGlsZCwgRXNjYXBlUmVhc29uOjpUYWJsZVF1aXJrTmVlZHNHZW9t
ZXRyeUZyb21Fc3RhYmxpc2hlZEZvcm1hdHRpbmdDb250ZXh0KTsKKyAgICAgICAgYXV0byYgbGFz
dEluRmxvd0NoaWxkR2VvbWV0cnkgPSBmb3JtYXR0aW5nQ29udGV4dC5nZW9tZXRyeUZvckJveChs
YXN0SW5GbG93Q2hpbGQsIEVzY2FwZVJlYXNvbjo6VGFibGVRdWlya05lZWRzR2VvbWV0cnlGcm9t
RXN0YWJsaXNoZWRGb3JtYXR0aW5nQ29udGV4dCk7CiAKICAgICAgICAgYXV0byB0b3AgPSBmaXJz
dEluRmxvd0NoaWxkLnN0eWxlKCkuaGFzTWFyZ2luQmVmb3JlUXVpcmsoKSA/IEJveEdlb21ldHJ5
Ojpib3JkZXJCb3hSZWN0KGZpcnN0SW5GbG93Q2hpbGRHZW9tZXRyeSkudG9wKCkgOiBCb3hHZW9t
ZXRyeTo6bWFyZ2luQm94UmVjdChmaXJzdEluRmxvd0NoaWxkR2VvbWV0cnkpLnRvcCgpOwogICAg
ICAgICBhdXRvIGJvdHRvbSA9IGxhc3RJbkZsb3dDaGlsZC5zdHlsZSgpLmhhc01hcmdpbkFmdGVy
UXVpcmsoKSA/IEJveEdlb21ldHJ5Ojpib3JkZXJCb3hSZWN0KGxhc3RJbkZsb3dDaGlsZEdlb21l
dHJ5KS5ib3R0b20oKSA6IEJveEdlb21ldHJ5OjptYXJnaW5Cb3hSZWN0KGxhc3RJbkZsb3dDaGls
ZEdlb21ldHJ5KS5ib3R0b20oKTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>