<?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>216798</bug_id>
          
          <creation_ts>2020-09-21 13:26:47 -0700</creation_ts>
          <short_desc>[LFC][IFC] TextUtil::split needs logical left</short_desc>
          <delta_ts>2020-09-22 06:35:18 -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>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>1690481</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-09-21 13:26:47 -0700</bug_when>
    <thetext>measuring of the &quot;left&quot; substring requires logical left position</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690493</commentid>
    <comment_count>1</comment_count>
      <attachid>409314</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-09-21 13:42:20 -0700</bug_when>
    <thetext>Created attachment 409314
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690671</commentid>
    <comment_count>2</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-22 06:34:12 -0700</bug_when>
    <thetext>Committed r267404: &lt;https://trac.webkit.org/changeset/267404&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 409314.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1690672</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-22 06:35:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/69367249&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409314</attachid>
            <date>2020-09-21 13:42:20 -0700</date>
            <delta_ts>2020-09-22 06:34:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216798-20200921134220.patch</filename>
            <type>text/plain</type>
            <size>28478</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3MzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMThjMDYyN2UwZTA5NThh
ZDJmNTlkN2E0MzQ1ODBhYTcxMDMzNTczOC4uN2IwZjk3MjJhYWMxNTNjODZiMWFiNTg5ZmIyNzI5
NjZlOTg4MTZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM4IEBACisyMDIwLTA5LTIxICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBUZXh0VXRp
bDo6c3BsaXQgbmVlZHMgbG9naWNhbCBsZWZ0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY3OTgKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBNZWFzdXJpbmcgdGV4dCBjb250ZW50IHJlcXVpcmVzIGxvZ2lj
YWwgbGVmdCBvZmZzZXQgKGUuZy4gdGFiIHNpemUgZGVwZW5kcyBvbiB0aGUgbG9naWNhbCBwb3Np
dGlvbikuCisgICAgICAgIExldCdzIHBhc3MgaW4gdGhlIGN1cnJlbnQgbG9naWNhbCBsZWZ0IHBv
c2l0aW9uIHRvIFRleHRVdGlsOjpzcGxpdC4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3Jt
YXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6
Q29udGludW91c0NvbnRlbnQ6OnJ1bnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpDb250aW51b3VzQ29udGVudDo6aXNFbXB0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpM
YXlvdXQ6OkNvbnRpbnVvdXNDb250ZW50Ojpsb2dpY2FsV2lkdGggY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpDb250aW51b3VzQ29udGVudDo6bG9naWNhbExlZnQgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW51b3VzQ29udGVudDo6bm9uQ29sbGFwc2li
bGVMb2dpY2FsV2lkdGggY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQnJl
YWtlcjo6aXNDb250ZW50V3JhcHBpbmdBbGxvd2VkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkxheW91dDo6TGluZUJyZWFrZXI6OnNob3VsZEtlZXBFbmRPZkxpbmVXaGl0ZXNwYWNlIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJyZWFrZXI6OnNob3VsZFdyYXBJbmxp
bmVDb250ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkxheW91dDo6TGluZUJyZWFrZXI6OnRyeVdy
YXBwaW5nSW5saW5lQ29udGVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6Okxp
bmVCcmVha2VyOjp3cmFwVGV4dENvbnRlbnQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5
b3V0OjpMaW5lQnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuIGNvbnN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkxheW91dDo6Q29udGludW91c0NvbnRlbnQ6OkNvbnRpbnVvdXNDb250ZW50KToKKyAg
ICAgICAgKFdlYkNvcmU6OkxheW91dDo6Q29udGludW91c0NvbnRlbnQ6Omhhc1RleHRDb250ZW50
T25seSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbnVvdXNDb250ZW50
Ojppc1Zpc3VhbGx5RW1wdHlXaGl0ZXNwYWNlQ29udGVudE9ubHkgY29uc3QpOgorICAgICAgICAo
V2ViQ29yZTo6TGF5b3V0OjpDb250aW51b3VzQ29udGVudDo6Zmlyc3RUZXh0UnVuSW5kZXggY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpDb250aW51b3VzQ29udGVudDo6bGFzdENv
bnRlbnRSdW5JbmRleCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbnVv
dXNDb250ZW50OjpoYXNOb25Db250ZW50UnVuc09ubHkgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpDb250aW51b3VzQ29udGVudDo6c2l6ZSBjb25zdCk6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbnVvdXNDb250ZW50Ojp3aWR0aCBjb25zdCk6IERl
bGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkNvbnRpbnVvdXNDb250ZW50Ojpub25D
b2xsYXBzaWJsZVdpZHRoIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBsYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5oOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxheW91
dDo6TGluZUJ1aWxkZXI6OmhhbmRsZUZsb2F0c0FuZElubGluZUNvbnRlbnQpOgorCiAyMDIwLTA5
LTIxICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIFJF
R1JFU1NJT04gKHIyNTc4MzkpOiBDYW4ndCBhZGQgYSBtZW1vIHdoZW4gdHJhbnNmZXJyaW5nIGZ1
bmRzIGluIEZpcnN0IFRlY2ggQ3JlZGl0IFVuaW9uIEFwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuY3Bw
CmluZGV4IGE1MDBmYmE4N2FiNWMzMTAyODk3Njk5MjMwMDYyM2YzNDAyODVlYWIuLmQzMTIxZjlm
ZTVkYTEyZDdhNjZmODMzMTQzNmNiOWQ1Y2E3MDY0MzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCcmVha2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJlYWtlci5j
cHAKQEAgLTYzLDE2ICs2MywxNiBAQCBzdGF0aWMgaW5saW5lIE9wdGlvbmFsPHNpemVfdD4gbGFz
dFdyYXBPcHBvcnR1bml0eUluZGV4KGNvbnN0IExpbmVCcmVha2VyOjpSdW5MaQogfQogCiBzdHJ1
Y3QgQ29udGludW91c0NvbnRlbnQgewotICAgIENvbnRpbnVvdXNDb250ZW50KGNvbnN0IExpbmVC
cmVha2VyOjpSdW5MaXN0JiwgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdpZHRoKTsK
KyAgICBDb250aW51b3VzQ29udGVudChjb25zdCBMaW5lQnJlYWtlcjo6Q2FuZGlkYXRlQ29udGVu
dCYpOwogCi0gICAgY29uc3QgTGluZUJyZWFrZXI6OlJ1bkxpc3QmIHJ1bnMoKSBjb25zdCB7IHJl
dHVybiBtX3J1bnM7IH0KLSAgICBib29sIGlzRW1wdHkoKSBjb25zdCB7IHJldHVybiBtX3J1bnMu
aXNFbXB0eSgpOyB9CisgICAgY29uc3QgTGluZUJyZWFrZXI6OlJ1bkxpc3QmIHJ1bnMoKSBjb25z
dCB7IHJldHVybiBtX2NhbmRpZGF0ZUNvbnRlbnQucnVuczsgfQorICAgIGJvb2wgaXNFbXB0eSgp
IGNvbnN0IHsgcmV0dXJuIHJ1bnMoKS5pc0VtcHR5KCk7IH0KICAgICBib29sIGhhc1RleHRDb250
ZW50T25seSgpIGNvbnN0OwogICAgIGJvb2wgaXNWaXN1YWxseUVtcHR5V2hpdGVzcGFjZUNvbnRl
bnRPbmx5KCkgY29uc3Q7CiAgICAgYm9vbCBoYXNOb25Db250ZW50UnVuc09ubHkoKSBjb25zdDsK
LSAgICBzaXplX3Qgc2l6ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcnVucy5zaXplKCk7IH0KLSAgICBJ
bmxpbmVMYXlvdXRVbml0IHdpZHRoKCkgY29uc3QgeyByZXR1cm4gbV93aWR0aDsgfQotICAgIElu
bGluZUxheW91dFVuaXQgbm9uQ29sbGFwc2libGVXaWR0aCgpIGNvbnN0IHsgcmV0dXJuIG1fd2lk
dGggLSBtX3RyYWlsaW5nQ29sbGFwc2libGVDb250ZW50LndpZHRoOyB9CisgICAgSW5saW5lTGF5
b3V0VW5pdCBsb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBtX2NhbmRpZGF0ZUNvbnRlbnQu
bG9naWNhbFdpZHRoOyB9CisgICAgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCgpIGNvbnN0
IHsgcmV0dXJuIG1fY2FuZGlkYXRlQ29udGVudC5sb2dpY2FsTGVmdDsgfQorICAgIElubGluZUxh
eW91dFVuaXQgbm9uQ29sbGFwc2libGVMb2dpY2FsV2lkdGgoKSBjb25zdCB7IHJldHVybiBsb2dp
Y2FsV2lkdGgoKSAtIG1fdHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRlbnQud2lkdGg7IH0KIAogICAg
IGJvb2wgaGFzVHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRlbnQoKSBjb25zdCB7IHJldHVybiAhIW1f
dHJhaWxpbmdDb2xsYXBzaWJsZUNvbnRlbnQud2lkdGg7IH0KICAgICBib29sIGlzVHJhaWxpbmdD
b250ZW50RnVsbHlDb2xsYXBzaWJsZSgpIGNvbnN0IHsgcmV0dXJuIG1fdHJhaWxpbmdDb2xsYXBz
aWJsZUNvbnRlbnQuaXNGdWxseUNvbGxhcHNpYmxlOyB9CkBAIC04MSw3ICs4MSw3IEBAIHN0cnVj
dCBDb250aW51b3VzQ29udGVudCB7CiAgICAgT3B0aW9uYWw8c2l6ZV90PiBsYXN0Q29udGVudFJ1
bkluZGV4KCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgY29uc3QgTGluZUJyZWFrZXI6OlJ1bkxp
c3QmIG1fcnVuczsKKyAgICBjb25zdCBMaW5lQnJlYWtlcjo6Q2FuZGlkYXRlQ29udGVudCYgbV9j
YW5kaWRhdGVDb250ZW50OwogICAgIHN0cnVjdCBUcmFpbGluZ0NvbGxhcHNpYmxlQ29udGVudCB7
CiAgICAgICAgIHZvaWQgcmVzZXQoKTsKIApAQCAtODksNTcgKzg5LDU3IEBAIHByaXZhdGU6CiAg
ICAgICAgIElubGluZUxheW91dFVuaXQgd2lkdGggeyAwIH07CiAgICAgfTsKICAgICBUcmFpbGlu
Z0NvbGxhcHNpYmxlQ29udGVudCBtX3RyYWlsaW5nQ29sbGFwc2libGVDb250ZW50OwotICAgIElu
bGluZUxheW91dFVuaXQgbV93aWR0aCB7IDAgfTsKIH07CiAKIHN0cnVjdCBXcmFwcGVkVGV4dENv
bnRlbnQgewotICAgIHVuc2lnbmVkIHRyYWlsaW5nUnVuSW5kZXggeyAwIH07CisgICAgc2l6ZV90
IHRyYWlsaW5nUnVuSW5kZXggeyAwIH07CiAgICAgYm9vbCBjb250ZW50T3ZlcmZsb3dzIHsgZmFs
c2UgfTsKICAgICBPcHRpb25hbDxMaW5lQnJlYWtlcjo6UGFydGlhbFJ1bj4gcGFydGlhbFRyYWls
aW5nUnVuOwogfTsKIAotYm9vbCBMaW5lQnJlYWtlcjo6aXNDb250ZW50V3JhcHBpbmdBbGxvd2Vk
KGNvbnN0IENvbnRpbnVvdXNDb250ZW50JiBjYW5kaWRhdGVSdW5zKSBjb25zdAorYm9vbCBMaW5l
QnJlYWtlcjo6aXNDb250ZW50V3JhcHBpbmdBbGxvd2VkKGNvbnN0IENvbnRpbnVvdXNDb250ZW50
JiBjb250aW51b3VzQ29udGVudCkgY29uc3QKIHsKICAgICAvLyBVc2UgdGhlIGxhc3QgaW5saW5l
IGl0ZW0gd2l0aCBjb250ZW50ICh3aGVyZSB3ZSB3b3VsZCBiZSB3cmFwcGluZykgdG8gZGVjaWRl
IGlmIGNvbnRlbnQgd3JhcHBpbmcgaXMgYWxsb3dlZC4KLSAgICBhdXRvIHJ1bkluZGV4ID0gY2Fu
ZGlkYXRlUnVucy5sYXN0Q29udGVudFJ1bkluZGV4KCkudmFsdWVPcihjYW5kaWRhdGVSdW5zLnNp
emUoKSAtIDEpOwotICAgIHJldHVybiBpc1dyYXBwaW5nQWxsb3dlZChjYW5kaWRhdGVSdW5zLnJ1
bnMoKVtydW5JbmRleF0uaW5saW5lSXRlbS5zdHlsZSgpKTsKKyAgICBhdXRvJiBjb250aW51b3Vz
UnVucyA9IGNvbnRpbnVvdXNDb250ZW50LnJ1bnMoKTsKKyAgICBhdXRvIHJ1bkluZGV4ID0gY29u
dGludW91c0NvbnRlbnQubGFzdENvbnRlbnRSdW5JbmRleCgpLnZhbHVlT3IoY29udGludW91c1J1
bnMuc2l6ZSgpIC0gMSk7CisgICAgcmV0dXJuIGlzV3JhcHBpbmdBbGxvd2VkKGNvbnRpbnVvdXNS
dW5zW3J1bkluZGV4XS5pbmxpbmVJdGVtLnN0eWxlKCkpOwogfQogCi1ib29sIExpbmVCcmVha2Vy
OjpzaG91bGRLZWVwRW5kT2ZMaW5lV2hpdGVzcGFjZShjb25zdCBDb250aW51b3VzQ29udGVudCYg
Y2FuZGlkYXRlUnVucykgY29uc3QKK2Jvb2wgTGluZUJyZWFrZXI6OnNob3VsZEtlZXBFbmRPZkxp
bmVXaGl0ZXNwYWNlKGNvbnN0IENvbnRpbnVvdXNDb250ZW50JiBjb250aW51b3VzQ29udGVudCkg
Y29uc3QKIHsKICAgICAvLyBHcmFiIHRoZSBzdHlsZSBhbmQgY2hlY2sgZm9yIHdoaXRlLXNwYWNl
IHByb3BlcnR5IHRvIGRlY2lkZWQgd2hldGhlciB3ZSBzaG91bGQgbGV0IHRoaXMgd2hpdGVzcGFj
ZSBjb250ZW50IG92ZXJmbG93IHRoZSBjdXJyZW50IGxpbmUuCiAgICAgLy8gTm90ZSB0aGF0IHRo
ZSAia2VlcCIgaW4gdGhlIGNvbnRleHQgbWVhbnMgd2UgbGV0IHRoZSB3aGl0ZXNwYWNlIGNvbnRl
bnQgc2l0IG9uIHRoZSBjdXJyZW50IGxpbmUuCiAgICAgLy8gSXQgbWlnaHQgdmVyeSB3ZWxsIGdl
dCBjb2xsYXBzZWQgd2hlbiB3ZSBjbG9zZSB0aGUgbGluZSAobm9ybWFsL25vd3JhcC9wcmUtbGlu
ZSkuCiAgICAgLy8gU2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtdGV4dC0zLyN3aGl0ZS1z
cGFjZS1wcm9wZXJ0eQotICAgIGF1dG8gd2hpdGVzcGFjZSA9IGNhbmRpZGF0ZVJ1bnMucnVucygp
WypjYW5kaWRhdGVSdW5zLmZpcnN0VGV4dFJ1bkluZGV4KCldLmlubGluZUl0ZW0uc3R5bGUoKS53
aGl0ZVNwYWNlKCk7CisgICAgYXV0byB3aGl0ZXNwYWNlID0gY29udGludW91c0NvbnRlbnQucnVu
cygpWypjb250aW51b3VzQ29udGVudC5maXJzdFRleHRSdW5JbmRleCgpXS5pbmxpbmVJdGVtLnN0
eWxlKCkud2hpdGVTcGFjZSgpOwogICAgIHJldHVybiB3aGl0ZXNwYWNlID09IFdoaXRlU3BhY2U6
Ok5vcm1hbCB8fCB3aGl0ZXNwYWNlID09IFdoaXRlU3BhY2U6Ok5vV3JhcCB8fCB3aGl0ZXNwYWNl
ID09IFdoaXRlU3BhY2U6OlByZVdyYXAgfHwgd2hpdGVzcGFjZSA9PSBXaGl0ZVNwYWNlOjpQcmVM
aW5lOwogfQogCi1MaW5lQnJlYWtlcjo6UmVzdWx0IExpbmVCcmVha2VyOjpzaG91bGRXcmFwSW5s
aW5lQ29udGVudChjb25zdCBSdW5MaXN0JiBjYW5kaWRhdGVSdW5zLCBJbmxpbmVMYXlvdXRVbml0
IGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGgsIGNvbnN0IExpbmVTdGF0dXMmIGxpbmVTdGF0
dXMpCitMaW5lQnJlYWtlcjo6UmVzdWx0IExpbmVCcmVha2VyOjpzaG91bGRXcmFwSW5saW5lQ29u
dGVudChjb25zdCBDYW5kaWRhdGVDb250ZW50JiBjYW5kaWRhdGVDb250ZW50LCBjb25zdCBMaW5l
U3RhdHVzJiBsaW5lU3RhdHVzKQogewogICAgIGF1dG8gaW5saW5lQ29udGVudFdyYXBwaW5nID0g
WyZdIHsKLSAgICAgICAgaWYgKGNhbmRpZGF0ZUNvbnRlbnRMb2dpY2FsV2lkdGggPD0gbGluZVN0
YXR1cy5hdmFpbGFibGVXaWR0aCkKKyAgICAgICAgaWYgKGNhbmRpZGF0ZUNvbnRlbnQubG9naWNh
bFdpZHRoIDw9IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpCiAgICAgICAgICAgICByZXR1cm4g
UmVzdWx0IHsgUmVzdWx0OjpBY3Rpb246OktlZXAgfTsKICNpZiBVU0VfRkxPQVRfQVNfSU5MSU5F
X0xBWU9VVF9VTklUCiAgICAgICAgIC8vIFByZWZlcnJlZCB3aWR0aCBjb21wdXRhdGlvbiBzdW1z
IHVwIGZsb2F0cyB3aGlsZSBsaW5lIGJyZWFrZXIgc3Vic3RyYWN0cyB0aGVtLiBUaGlzIGNhbiBs
ZWFkIHRvIGVwc2lsb24tc2NhbGUgZGlmZmVyZW5jZXMuCi0gICAgICAgIGlmIChXVEY6OmFyZUVz
c2VudGlhbGx5RXF1YWwoY2FuZGlkYXRlQ29udGVudExvZ2ljYWxXaWR0aCwgbGluZVN0YXR1cy5h
dmFpbGFibGVXaWR0aCkpCisgICAgICAgIGlmIChXVEY6OmFyZUVzc2VudGlhbGx5RXF1YWwoY2Fu
ZGlkYXRlQ29udGVudC5sb2dpY2FsV2lkdGgsIGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGgpKQog
ICAgICAgICAgICAgcmV0dXJuIFJlc3VsdCB7IFJlc3VsdDo6QWN0aW9uOjpLZWVwIH07CiAjZW5k
aWYKLSAgICAgICAgcmV0dXJuIHRyeVdyYXBwaW5nSW5saW5lQ29udGVudChjYW5kaWRhdGVSdW5z
LCBjYW5kaWRhdGVDb250ZW50TG9naWNhbFdpZHRoLCBsaW5lU3RhdHVzKTsKKyAgICAgICAgcmV0
dXJuIHRyeVdyYXBwaW5nSW5saW5lQ29udGVudChjYW5kaWRhdGVDb250ZW50LCBsaW5lU3RhdHVz
KTsKICAgICB9OwogCiAgICAgYXV0byByZXN1bHQgPSBpbmxpbmVDb250ZW50V3JhcHBpbmcoKTsK
ICAgICBpZiAocmVzdWx0LmFjdGlvbiA9PSBSZXN1bHQ6OkFjdGlvbjo6S2VlcCkgewogICAgICAg
ICAvLyBJZiB0aGlzIGlzIG5vdCB0aGUgZW5kIG9mIHRoZSBsaW5lLCBob2xkIG9uIHRvIHRoZSBs
YXN0IGVsaWdpYmxlIGxpbmUgd3JhcCBvcHBvcnR1bml0eSBzbyB0aGF0IHdlIGNvdWxkIHJldmVy
dCBiYWNrCiAgICAgICAgIC8vIHRvIHRoaXMgcG9zaXRpb24gaWYgbm8gb3RoZXIgbGluZSBicmVh
a2luZyBvcHBvcnR1bml0eSBleGlzdHMgaW4gdGhpcyBjb250ZW50LgotICAgICAgICBpZiAoYXV0
byBsYXN0TGluZVdyYXBPcHBvcnR1bml0eUluZGV4ID0gbGFzdFdyYXBPcHBvcnR1bml0eUluZGV4
KGNhbmRpZGF0ZVJ1bnMpKSB7CisgICAgICAgIGlmIChhdXRvIGxhc3RMaW5lV3JhcE9wcG9ydHVu
aXR5SW5kZXggPSBsYXN0V3JhcE9wcG9ydHVuaXR5SW5kZXgoY2FuZGlkYXRlQ29udGVudC5ydW5z
KSkgewogICAgICAgICAgICAgYXV0byBpc0VsaWdpYmxlTGluZVdyYXBPcHBvcnR1bml0eSA9IFsm
XSAoYXV0byYgY2FuZGlkYXRlSXRlbSkgewogICAgICAgICAgICAgICAgIC8vIEp1c3QgY2hlY2sg
Zm9yIGxlYWRpbmcgY29sbGFwc2libGUgd2hpdGVzcGFjZSBmb3Igbm93LgogICAgICAgICAgICAg
ICAgIGlmICghbGluZVN0YXR1cy5saW5lSXNFbXB0eSB8fCAhY2FuZGlkYXRlSXRlbS5pc1RleHQo
KSB8fCAhZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KGNhbmRpZGF0ZUl0ZW0pLmlzV2hpdGVzcGFj
ZSgpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgICAgICBy
ZXR1cm4gc2hvdWxkS2VlcEJlZ2lubmluZ09mTGluZVdoaXRlc3BhY2UoY2FuZGlkYXRlSXRlbS5z
dHlsZSgpKTsKICAgICAgICAgICAgIH07Ci0gICAgICAgICAgICBhdXRvJiBsYXN0V3JhcE9wcG9y
dHVuaXR5Q2FuZGlkYXRlSXRlbSA9IGNhbmRpZGF0ZVJ1bnNbKmxhc3RMaW5lV3JhcE9wcG9ydHVu
aXR5SW5kZXhdLmlubGluZUl0ZW07CisgICAgICAgICAgICBhdXRvJiBsYXN0V3JhcE9wcG9ydHVu
aXR5Q2FuZGlkYXRlSXRlbSA9IGNhbmRpZGF0ZUNvbnRlbnQucnVuc1sqbGFzdExpbmVXcmFwT3Bw
b3J0dW5pdHlJbmRleF0uaW5saW5lSXRlbTsKICAgICAgICAgICAgIGlmIChpc0VsaWdpYmxlTGlu
ZVdyYXBPcHBvcnR1bml0eShsYXN0V3JhcE9wcG9ydHVuaXR5Q2FuZGlkYXRlSXRlbSkpIHsKICAg
ICAgICAgICAgICAgICByZXN1bHQubGFzdFdyYXBPcHBvcnR1bml0eUl0ZW0gPSAmbGFzdFdyYXBP
cHBvcnR1bml0eUNhbmRpZGF0ZUl0ZW07CiAgICAgICAgICAgICAgICAgbV9oYXNXcmFwT3Bwb3J0
dW5pdHlBdFByZXZpb3VzUG9zaXRpb24gPSB0cnVlOwpAQCAtMTQ5LDQ2ICsxNDksNDUgQEAgTGlu
ZUJyZWFrZXI6OlJlc3VsdCBMaW5lQnJlYWtlcjo6c2hvdWxkV3JhcElubGluZUNvbnRlbnQoY29u
c3QgUnVuTGlzdCYgY2FuZGlkYXQKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1MaW5lQnJlYWtl
cjo6UmVzdWx0IExpbmVCcmVha2VyOjp0cnlXcmFwcGluZ0lubGluZUNvbnRlbnQoY29uc3QgUnVu
TGlzdCYgY2FuZGlkYXRlUnVucywgSW5saW5lTGF5b3V0VW5pdCBjYW5kaWRhdGVDb250ZW50TG9n
aWNhbFdpZHRoLCBjb25zdCBMaW5lU3RhdHVzJiBsaW5lU3RhdHVzKSBjb25zdAorTGluZUJyZWFr
ZXI6OlJlc3VsdCBMaW5lQnJlYWtlcjo6dHJ5V3JhcHBpbmdJbmxpbmVDb250ZW50KGNvbnN0IENh
bmRpZGF0ZUNvbnRlbnQmIGNhbmRpZGF0ZUNvbnRlbnQsIGNvbnN0IExpbmVTdGF0dXMmIGxpbmVT
dGF0dXMpIGNvbnN0CiB7Ci0gICAgYXV0byBjYW5kaWRhdGVDb250ZW50ID0gQ29udGludW91c0Nv
bnRlbnQgeyBjYW5kaWRhdGVSdW5zLCBjYW5kaWRhdGVDb250ZW50TG9naWNhbFdpZHRoIH07Ci0g
ICAgQVNTRVJUKCFjYW5kaWRhdGVDb250ZW50LmlzRW1wdHkoKSk7CisgICAgYXV0byBjb250aW51
b3VzQ29udGVudCA9IENvbnRpbnVvdXNDb250ZW50IHsgY2FuZGlkYXRlQ29udGVudCB9OworICAg
IEFTU0VSVCghY29udGludW91c0NvbnRlbnQuaXNFbXB0eSgpKTsKIAotICAgIEFTU0VSVChjYW5k
aWRhdGVDb250ZW50LndpZHRoKCkgPiBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoKTsKLSAgICBp
ZiAoY2FuZGlkYXRlQ29udGVudC5oYXNUcmFpbGluZ0NvbGxhcHNpYmxlQ29udGVudCgpKSB7Ci0g
ICAgICAgIEFTU0VSVChjYW5kaWRhdGVDb250ZW50Lmhhc1RleHRDb250ZW50T25seSgpKTsKLSAg
ICAgICAgYXV0byBJc0VuZE9mTGluZSA9IGlzQ29udGVudFdyYXBwaW5nQWxsb3dlZChjYW5kaWRh
dGVDb250ZW50KSA/IElzRW5kT2ZMaW5lOjpZZXMgOiBJc0VuZE9mTGluZTo6Tm87CisgICAgQVNT
RVJUKGNvbnRpbnVvdXNDb250ZW50LmxvZ2ljYWxXaWR0aCgpID4gbGluZVN0YXR1cy5hdmFpbGFi
bGVXaWR0aCk7CisgICAgaWYgKGNvbnRpbnVvdXNDb250ZW50Lmhhc1RyYWlsaW5nQ29sbGFwc2li
bGVDb250ZW50KCkpIHsKKyAgICAgICAgQVNTRVJUKGNvbnRpbnVvdXNDb250ZW50Lmhhc1RleHRD
b250ZW50T25seSgpKTsKKyAgICAgICAgYXV0byBJc0VuZE9mTGluZSA9IGlzQ29udGVudFdyYXBw
aW5nQWxsb3dlZChjb250aW51b3VzQ29udGVudCkgPyBJc0VuZE9mTGluZTo6WWVzIDogSXNFbmRP
ZkxpbmU6Ok5vOwogICAgICAgICAvLyBGaXJzdCBjaGVjayBpZiB0aGUgY29udGVudCBmaXRzIHdp
dGhvdXQgdGhlIHRyYWlsaW5nIGNvbGxhcHNpYmxlIHBhcnQuCi0gICAgICAgIGlmIChjYW5kaWRh
dGVDb250ZW50Lm5vbkNvbGxhcHNpYmxlV2lkdGgoKSA8PSBsaW5lU3RhdHVzLmF2YWlsYWJsZVdp
ZHRoKQorICAgICAgICBpZiAoY29udGludW91c0NvbnRlbnQubm9uQ29sbGFwc2libGVMb2dpY2Fs
V2lkdGgoKSA8PSBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoKQogICAgICAgICAgICAgcmV0dXJu
IHsgUmVzdWx0OjpBY3Rpb246OktlZXAsIElzRW5kT2ZMaW5lIH07CiAgICAgICAgIC8vIE5vdyBj
aGVjayBpZiB3ZSBjYW4gdHJpbSB0aGUgbGluZSB0b28uCi0gICAgICAgIGlmIChsaW5lU3RhdHVz
LmxpbmVIYXNGdWxseUNvbGxhcHNpYmxlVHJhaWxpbmdSdW4gJiYgY2FuZGlkYXRlQ29udGVudC5p
c1RyYWlsaW5nQ29udGVudEZ1bGx5Q29sbGFwc2libGUoKSkgeworICAgICAgICBpZiAobGluZVN0
YXR1cy5saW5lSGFzRnVsbHlDb2xsYXBzaWJsZVRyYWlsaW5nUnVuICYmIGNvbnRpbnVvdXNDb250
ZW50LmlzVHJhaWxpbmdDb250ZW50RnVsbHlDb2xsYXBzaWJsZSgpKSB7CiAgICAgICAgICAgICAv
LyBJZiB0aGlzIG5ldyBjb250ZW50IGlzIGZ1bGx5IGNvbGxhcHNpYmxlLCBpdCBzaG91bGQgc3Vy
ZWx5IGZpdC4KICAgICAgICAgICAgIHJldHVybiB7IFJlc3VsdDo6QWN0aW9uOjpLZWVwLCBJc0Vu
ZE9mTGluZSB9OwogICAgICAgICB9Ci0gICAgfSBlbHNlIGlmIChsaW5lU3RhdHVzLmNvbGxhcHNp
YmxlV2lkdGggJiYgY2FuZGlkYXRlQ29udGVudC5oYXNOb25Db250ZW50UnVuc09ubHkoKSkgewor
ICAgIH0gZWxzZSBpZiAobGluZVN0YXR1cy5jb2xsYXBzaWJsZVdpZHRoICYmIGNvbnRpbnVvdXND
b250ZW50Lmhhc05vbkNvbnRlbnRSdW5zT25seSgpKSB7CiAgICAgICAgIC8vIExldCdzIHNlZSBp
ZiB0aGUgbm9uLWNvbnRlbnQgcnVucyBmaXQgd2hlbiB0aGUgbGluZSBoYXMgdHJhaWxpbmcgY29s
bGFwc2libGUgY29udGVudC4KICAgICAgICAgLy8gInRleHQgY29udGVudCA8c3BhbiBzdHlsZT0i
cGFkZGluZzogMXB4Ij48L3NwYW4+IiA8LSB0aGUgPHNwYW4+PC9zcGFuPiBydW5zIGNvdWxkIGZp
dCBhZnRlciBjb2xsYXBzaW5nIHRoZSB0cmFpbGluZyB3aGl0ZXNwYWNlLgotICAgICAgICBpZiAo
Y2FuZGlkYXRlQ29udGVudC53aWR0aCgpIDw9IGxpbmVTdGF0dXMuYXZhaWxhYmxlV2lkdGggKyBs
aW5lU3RhdHVzLmNvbGxhcHNpYmxlV2lkdGgpCisgICAgICAgIGlmIChjb250aW51b3VzQ29udGVu
dC5sb2dpY2FsV2lkdGgoKSA8PSBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoICsgbGluZVN0YXR1
cy5jb2xsYXBzaWJsZVdpZHRoKQogICAgICAgICAgICAgcmV0dXJuIHsgUmVzdWx0OjpBY3Rpb246
OktlZXAgfTsKICAgICB9Ci0gICAgaWYgKGNhbmRpZGF0ZUNvbnRlbnQuaXNWaXN1YWxseUVtcHR5
V2hpdGVzcGFjZUNvbnRlbnRPbmx5KCkgJiYgc2hvdWxkS2VlcEVuZE9mTGluZVdoaXRlc3BhY2Uo
Y2FuZGlkYXRlQ29udGVudCkpIHsKKyAgICBpZiAoY29udGludW91c0NvbnRlbnQuaXNWaXN1YWxs
eUVtcHR5V2hpdGVzcGFjZUNvbnRlbnRPbmx5KCkgJiYgc2hvdWxkS2VlcEVuZE9mTGluZVdoaXRl
c3BhY2UoY29udGludW91c0NvbnRlbnQpKSB7CiAgICAgICAgIC8vIFRoaXMgb3ZlcmZsb3dpbmcg
Y29udGVudCBhcHBhcmVudGx5IGZhbGxzIGludG8gdGhlIHJlbW92ZS9oYW5nIGVuZC1vZi1saW5l
LXNwYWNlcyBjYXRlZ29yeS4KICAgICAgICAgLy8gc2VlIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9j
c3MtdGV4dC0zLyN3aGl0ZS1zcGFjZS1wcm9wZXJ0eSBtYXRyaXgKICAgICAgICAgcmV0dXJuIHsg
UmVzdWx0OjpBY3Rpb246OktlZXAgfTsKICAgICB9CiAKLSAgICBpZiAoY2FuZGlkYXRlQ29udGVu
dC5oYXNUZXh0Q29udGVudE9ubHkoKSkgewotICAgICAgICBhdXRvJiBydW5zID0gY2FuZGlkYXRl
Q29udGVudC5ydW5zKCk7Ci0gICAgICAgIGlmIChhdXRvIHdyYXBwZWRUZXh0Q29udGVudCA9IHdy
YXBUZXh0Q29udGVudChydW5zLCBsaW5lU3RhdHVzKSkgeworICAgIGlmIChjb250aW51b3VzQ29u
dGVudC5oYXNUZXh0Q29udGVudE9ubHkoKSkgeworICAgICAgICBpZiAoYXV0byB3cmFwcGVkVGV4
dENvbnRlbnQgPSB3cmFwVGV4dENvbnRlbnQoY29udGludW91c0NvbnRlbnQsIGxpbmVTdGF0dXMp
KSB7CiAgICAgICAgICAgICBpZiAoIXdyYXBwZWRUZXh0Q29udGVudC0+dHJhaWxpbmdSdW5JbmRl
eCAmJiB3cmFwcGVkVGV4dENvbnRlbnQtPmNvbnRlbnRPdmVyZmxvd3MpIHsKICAgICAgICAgICAg
ICAgICAvLyBXZSB0cmllZCB0byBzcGxpdCB0aGUgY29udGVudCBidXQgdGhlIGF2YWlsYWJsZSBz
cGFjZSBjYW4ndCBldmVuIGFjY29tbW9kYXRlIHRoZSBmaXJzdCBjaGFyYWN0ZXIuCiAgICAgICAg
ICAgICAgICAgLy8gMS4gUHVzaCB0aGUgY29udGVudCBvdmVyIHRvIHRoZSBuZXh0IGxpbmUgd2hl
biB3ZSd2ZSBnb3QgY29udGVudCBvbiB0aGUgbGluZSBhbHJlYWR5LgogICAgICAgICAgICAgICAg
IC8vIDIuIEtlZXAgdGhlIGZpcnN0IGNoYXJhY3RlciBvbiB0aGUgZW1wdHkgbGluZSAob3Iga2Vl
cCB0aGUgd2hvbGUgcnVuIGlmIGl0IGhhcyBvbmx5IG9uZSBjaGFyYWN0ZXIpLgogICAgICAgICAg
ICAgICAgIGlmICghbGluZVN0YXR1cy5saW5lSXNFbXB0eSkKICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIHsgUmVzdWx0OjpBY3Rpb246OlB1c2gsIElzRW5kT2ZMaW5lOjpZZXMsIHsgfSB9Owot
ICAgICAgICAgICAgICAgIGF1dG8gZmlyc3RUZXh0UnVuSW5kZXggPSAqY2FuZGlkYXRlQ29udGVu
dC5maXJzdFRleHRSdW5JbmRleCgpOwotICAgICAgICAgICAgICAgIGF1dG8mIGlubGluZVRleHRJ
dGVtID0gZG93bmNhc3Q8SW5saW5lVGV4dEl0ZW0+KHJ1bnNbZmlyc3RUZXh0UnVuSW5kZXhdLmlu
bGluZUl0ZW0pOworICAgICAgICAgICAgICAgIGF1dG8gZmlyc3RUZXh0UnVuSW5kZXggPSAqY29u
dGludW91c0NvbnRlbnQuZmlyc3RUZXh0UnVuSW5kZXgoKTsKKyAgICAgICAgICAgICAgICBhdXRv
JiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGluZVRleHRJdGVtPihjb250aW51b3VzQ29u
dGVudC5ydW5zKClbZmlyc3RUZXh0UnVuSW5kZXhdLmlubGluZUl0ZW0pOwogICAgICAgICAgICAg
ICAgIEFTU0VSVChpbmxpbmVUZXh0SXRlbS5sZW5ndGgoKSk7CiAgICAgICAgICAgICAgICAgaWYg
KGlubGluZVRleHRJdGVtLmxlbmd0aCgpID09IDEpCiAgICAgICAgICAgICAgICAgICAgIHJldHVy
biBSZXN1bHQgeyBSZXN1bHQ6OkFjdGlvbjo6S2VlcCwgSXNFbmRPZkxpbmU6OlllcyB9OwpAQCAt
MjA2LDM4ICsyMDUsNDAgQEAgTGluZUJyZWFrZXI6OlJlc3VsdCBMaW5lQnJlYWtlcjo6dHJ5V3Jh
cHBpbmdJbmxpbmVDb250ZW50KGNvbnN0IFJ1bkxpc3QmIGNhbmRpZGEKICAgICAgICAgcmV0dXJu
IHsgUmVzdWx0OjpBY3Rpb246OktlZXAsIElzRW5kT2ZMaW5lOjpObyB9OwogICAgIH0KICAgICAv
LyBOb3cgZWl0aGVyIHdyYXAgaGVyZSBvciBhdCBhbiBlYXJsaWVyIHBvc2l0aW9uLCBvciBub3Qg
d3JhcCBhdCBhbGwuCi0gICAgaWYgKGlzQ29udGVudFdyYXBwaW5nQWxsb3dlZChjYW5kaWRhdGVD
b250ZW50KSkKKyAgICBpZiAoaXNDb250ZW50V3JhcHBpbmdBbGxvd2VkKGNvbnRpbnVvdXNDb250
ZW50KSkKICAgICAgICAgcmV0dXJuIHsgUmVzdWx0OjpBY3Rpb246OlB1c2gsIElzRW5kT2ZMaW5l
OjpZZXMgfTsKICAgICBpZiAobV9oYXNXcmFwT3Bwb3J0dW5pdHlBdFByZXZpb3VzUG9zaXRpb24p
CiAgICAgICAgIHJldHVybiB7IFJlc3VsdDo6QWN0aW9uOjpSZXZlcnRUb0xhc3RXcmFwT3Bwb3J0
dW5pdHksIElzRW5kT2ZMaW5lOjpZZXMgfTsKICAgICByZXR1cm4geyBSZXN1bHQ6OkFjdGlvbjo6
S2VlcCwgSXNFbmRPZkxpbmU6Ok5vIH07CiB9CiAKLU9wdGlvbmFsPFdyYXBwZWRUZXh0Q29udGVu
dD4gTGluZUJyZWFrZXI6OndyYXBUZXh0Q29udGVudChjb25zdCBSdW5MaXN0JiBydW5zLCBjb25z
dCBMaW5lU3RhdHVzJiBsaW5lU3RhdHVzKSBjb25zdAorT3B0aW9uYWw8V3JhcHBlZFRleHRDb250
ZW50PiBMaW5lQnJlYWtlcjo6d3JhcFRleHRDb250ZW50KGNvbnN0IENvbnRpbnVvdXNDb250ZW50
JiBjb250aW51b3VzQ29udGVudCwgY29uc3QgTGluZVN0YXR1cyYgbGluZVN0YXR1cykgY29uc3QK
IHsKLSAgICBhdXRvIGlzQ29udGVudFNwbGl0QWxsb3dlZCA9IFtdIChhdXRvJiBydW4pIHsKKyAg
ICBhdXRvIGlzQnJlYWthYmxlUnVuID0gW10gKGF1dG8mIHJ1bikgewogICAgICAgICBBU1NFUlQo
cnVuLmlubGluZUl0ZW0uaXNUZXh0KCkgfHwgcnVuLmlubGluZUl0ZW0uaXNDb250YWluZXJTdGFy
dCgpIHx8IHJ1bi5pbmxpbmVJdGVtLmlzQ29udGFpbmVyRW5kKCkpOwogICAgICAgICBpZiAoIXJ1
bi5pbmxpbmVJdGVtLmlzVGV4dCgpKSB7Ci0gICAgICAgICAgICAvLyBDYW4ndCBzcGxpdCBob3Jp
em9udGFsIHNwYWNpbmcgLT4gZS5nLiA8c3BhbiBzdHlsZT0icGFkZGluZy1yaWdodDogMTAwcHg7
Ij50ZXh0Y29udGVudDwvc3Bhbj4sIGlmIHRoZSBbY29udGFpbmVyIGVuZF0gaXMgdGhlIG92ZXJm
bG93biBpbmxpbmUgaXRlbQorICAgICAgICAgICAgLy8gQ2FuJ3QgYnJlYWsgaG9yaXpvbnRhbCBz
cGFjaW5nIC0+IGUuZy4gPHNwYW4gc3R5bGU9InBhZGRpbmctcmlnaHQ6IDEwMHB4OyI+dGV4dGNv
bnRlbnQ8L3NwYW4+LCBpZiB0aGUgW2NvbnRhaW5lciBlbmRdIGlzIHRoZSBvdmVyZmxvd24gaW5s
aW5lIGl0ZW0KICAgICAgICAgICAgIC8vIHdlIG5lZWQgdG8gY2hlY2sgaWYgdGhlcmUncyBhbm90
aGVyIGlubGluZSBpdGVtIGJleW9uZCB0aGUgW2NvbnRhaW5lciBlbmRdIHRvIHNwbGl0LgogICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICB9CisgICAgICAgIC8vIENoZWNrIGlmIHRo
aXMgdGV4dCBydW4gbmVlZHMgdG8gc3RheSBvbiB0aGUgY3VycmVudCBsaW5lLiAgCiAgICAgICAg
IHJldHVybiBpc1dyYXBwaW5nQWxsb3dlZChydW4uaW5saW5lSXRlbS5zdHlsZSgpKTsKICAgICB9
OwogCiAgICAgLy8gQ2hlY2sgd2hlcmUgdGhlIG92ZXJmbG93IG9jY3VycyBhbmQgdXNlIHRoZSBj
b3JyZXNwb25kaW5nIHN0eWxlIHRvIGZpZ3VyZSBvdXQgdGhlIGJyZWFraW5nIGJlaGF2aW91ci4K
ICAgICAvLyA8c3BhbiBzdHlsZT0id29yZC1icmVhazogbm9ybWFsIj5maXJzdDwvc3Bhbj48c3Bh
biBzdHlsZT0id29yZC1icmVhazogYnJlYWstYWxsIj5zZWNvbmQ8L3NwYW4+PHNwYW4gc3R5bGU9
IndvcmQtYnJlYWs6IG5vcm1hbCI+dGhpcmQ8L3NwYW4+Ci0gICAgSW5saW5lTGF5b3V0VW5pdCBh
Y2N1bXVsYXRlZFJ1bldpZHRoID0gMDsKLSAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgYXV0
byYgcnVucyA9IGNvbnRpbnVvdXNDb250ZW50LnJ1bnMoKTsKKyAgICBhdXRvIGFjY3VtdWxhdGVk
UnVuV2lkdGggPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsgCisgICAgc2l6ZV90IGluZGV4ID0gMDsK
ICAgICB3aGlsZSAoaW5kZXggPCBydW5zLnNpemUoKSkgewogICAgICAgICBhdXRvJiBydW4gPSBy
dW5zW2luZGV4XTsKICAgICAgICAgQVNTRVJUKHJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpIHx8IHJ1
bi5pbmxpbmVJdGVtLmlzQ29udGFpbmVyU3RhcnQoKSB8fCBydW4uaW5saW5lSXRlbS5pc0NvbnRh
aW5lckVuZCgpKTsKLSAgICAgICAgaWYgKGFjY3VtdWxhdGVkUnVuV2lkdGggKyBydW4ubG9naWNh
bFdpZHRoID4gbGluZVN0YXR1cy5hdmFpbGFibGVXaWR0aCAmJiBpc0NvbnRlbnRTcGxpdEFsbG93
ZWQocnVuKSkgeworICAgICAgICBpZiAoYWNjdW11bGF0ZWRSdW5XaWR0aCArIHJ1bi5sb2dpY2Fs
V2lkdGggPiBsaW5lU3RhdHVzLmF2YWlsYWJsZVdpZHRoICYmIGlzQnJlYWthYmxlUnVuKHJ1bikp
IHsKICAgICAgICAgICAgIC8vIEF0IHRoaXMgcG9pbnQgdGhlIGF2YWlsYWJsZSB3aWR0aCBjYW4g
dmVyeSB3ZWxsIGJlIG5lZ2F0aXZlIGUuZy4gd2hlbiBzb21lIHBhcnQgb2YgdGhlIGNvbnRpbnVv
dXMgdGV4dCBjb250ZW50IGNhbiBub3QgYmUgYnJva2VuIGludG8gcGFydHMgLT4KICAgICAgICAg
ICAgIC8vIDxzcGFuIHN0eWxlPSJ3b3JkLWJyZWFrOiBrZWVwLWFsbCI+dGV4dGNvbnRlbnR3aXRo
bm9icmVhazwvc3Bhbj48c3Bhbj50ZXh0Y29udGVudHdpdGh5ZXNicmVhazwvc3Bhbj4KICAgICAg
ICAgICAgIC8vIFdoZW4gdGhlIGZpcnN0IHNwYW4gY29tcHV0ZXMgbG9uZ2VyIHRoYW4gdGhlIGF2
YWlsYWJsZSBzcGFjZSwgYnkgdGhlIHRpbWUgd2UgZ2V0IHRvIHRoZSBzZWNvbmQgc3BhbiwgdGhl
IGFkanVzdGVkIGF2YWlsYWJsZSBzcGFjZSBiZWNvbWVzIG5lZ2F0aXZlLgogICAgICAgICAgICAg
YXV0byBhZGp1c3RlZEF2YWlsYWJsZVdpZHRoID0gc3RkOjptYXg8SW5saW5lTGF5b3V0VW5pdD4o
MCwgbGluZVN0YXR1cy5hdmFpbGFibGVXaWR0aCAtIGFjY3VtdWxhdGVkUnVuV2lkdGgpOwotICAg
ICAgICAgICAgaWYgKGF1dG8gcGFydGlhbFJ1biA9IHRyeUJyZWFraW5nVGV4dFJ1bihydW4sIGFk
anVzdGVkQXZhaWxhYmxlV2lkdGgpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVu
ID0gdHJ5QnJlYWtpbmdUZXh0UnVuKHJ1biwgY29udGludW91c0NvbnRlbnQubG9naWNhbExlZnQo
KSArIGFjY3VtdWxhdGVkUnVuV2lkdGgsIGFkanVzdGVkQXZhaWxhYmxlV2lkdGgpKSB7CiAgICAg
ICAgICAgICAgICAgIGlmIChwYXJ0aWFsUnVuLT5sZW5ndGgpCiAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gV3JhcHBlZFRleHRDb250ZW50IHsgaW5kZXgsIGZhbHNlLCBwYXJ0aWFsUnVuIH07
CiAgICAgICAgICAgICAgICAgIC8vIFdoZW4gdGhlIGNvbnRlbnQgaXMgd3JhcHBlZCBhdCB0aGUg
cnVuIGJvdW5kYXJ5LCB0aGUgdHJhaWxpbmcgcnVuIGlzIHRoZSBwcmV2aW91cyBydW4uCkBAIC0y
NDYsMTkgKzI0NywyMCBAQCBPcHRpb25hbDxXcmFwcGVkVGV4dENvbnRlbnQ+IExpbmVCcmVha2Vy
Ojp3cmFwVGV4dENvbnRlbnQoY29uc3QgUnVuTGlzdCYgcnVucywgYwogICAgICAgICAgICAgICAg
ICAvLyBTb21ldGltZXMgd2UgY2FuJ3QgYWNjb21tb2RhdGUgZXZlbiB0aGUgdmVyeSBmaXJzdCBj
aGFyYWN0ZXIuCiAgICAgICAgICAgICAgICAgIHJldHVybiBXcmFwcGVkVGV4dENvbnRlbnQgeyAw
LCB0cnVlLCB7IH0gfTsKICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAvLyBJZiB0aGlzIHJ1
biBpcyBub3QgYnJlYWthYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIGFueSBwcmV2aW91cyBydW4g
aXMgYnJlYWthYmxlCisgICAgICAgICAgICAvLyBJZiB0aGlzIHJ1biBpcyBub3QgYnJlYWthYmxl
LCB3ZSBuZWVkIHRvIGNoZWNrIGlmIGFueSBwcmV2aW91cyBydW4gaXMgYnJlYWthYmxlLgogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgYWNjdW11bGF0ZWRSdW5XaWR0aCAr
PSBydW4ubG9naWNhbFdpZHRoOwogICAgICAgICArK2luZGV4OwogICAgIH0KICAgICAvLyBXZSBk
aWQgbm90IG1hbmFnZSB0byBicmVhayB0aGUgcnVuIHRoYXQgYWN0dWFsbHkgb3ZlcmZsb3dzIHRo
ZSBsaW5lLgotICAgIC8vIExldCdzIHRyeSB0byBmaW5kIHRoZSBmaXJzdCBicmVha2FibGUgcnVu
IGFuZCB3cmFwIGl0IGF0IHRoZSBjb250ZW50IGJvdW5kYXJ5IChhcyBpdCBzdXJlbHkgZml0cyku
CisgICAgLy8gTGV0J3MgdHJ5IHRvIGZpbmQgdGhlIGxhc3QgYnJlYWthYmxlIHBvc2l0aW9uIHN0
YXJ0aW5nIGZyb20gdGhlIG92ZXJmbG93aW5nIHJ1biBhbmQgd3JhcCBpdCBhdCB0aGUgY29udGVu
dCBib3VuZGFyeSAoYXMgaXQgc3VyZWx5IGZpdHMpLgogICAgIHdoaWxlIChpbmRleC0tKSB7CiAg
ICAgICAgIGF1dG8mIHJ1biA9IHJ1bnNbaW5kZXhdOwotICAgICAgICBpZiAoaXNDb250ZW50U3Bs
aXRBbGxvd2VkKHJ1bikpIHsKKyAgICAgICAgYWNjdW11bGF0ZWRSdW5XaWR0aCAtPSBydW4ubG9n
aWNhbFdpZHRoOworICAgICAgICBpZiAoaXNCcmVha2FibGVSdW4ocnVuKSkgewogICAgICAgICAg
ICAgQVNTRVJUKHJ1bi5pbmxpbmVJdGVtLmlzVGV4dCgpKTsKLSAgICAgICAgICAgIGlmIChhdXRv
IHBhcnRpYWxSdW4gPSB0cnlCcmVha2luZ1RleHRSdW4ocnVuLCBtYXhJbmxpbmVMYXlvdXRVbml0
KCkpKSB7CisgICAgICAgICAgICBpZiAoYXV0byBwYXJ0aWFsUnVuID0gdHJ5QnJlYWtpbmdUZXh0
UnVuKHJ1biwgY29udGludW91c0NvbnRlbnQubG9naWNhbExlZnQoKSArIGFjY3VtdWxhdGVkUnVu
V2lkdGgsIG1heElubGluZUxheW91dFVuaXQoKSkpIHsKICAgICAgICAgICAgICAgICAgLy8gV2Ug
a25vdyB0aGlzIHJ1biBmaXRzLCBzbyBpZiB3cmFwcGluZyBpcyBhbGxvd2VkIG9uIHRoZSBydW4s
IGl0IHNob3VsZCByZXR1cm4gYSBub24tZW1wdHkgbGVmdC1zaWRlLgogICAgICAgICAgICAgICAg
ICBBU1NFUlQocGFydGlhbFJ1bi0+bGVuZ3RoKTsKICAgICAgICAgICAgICAgICAgcmV0dXJuIFdy
YXBwZWRUZXh0Q29udGVudCB7IGluZGV4LCBmYWxzZSwgcGFydGlhbFJ1biB9OwpAQCAtMjk1LDcg
KzI5Nyw3IEBAIExpbmVCcmVha2VyOjpXb3JkQnJlYWtSdWxlIExpbmVCcmVha2VyOjp3b3JkQnJl
YWtCZWhhdmlvcihjb25zdCBSZW5kZXJTdHlsZSYgc3R5CiAgICAgcmV0dXJuIFdvcmRCcmVha1J1
bGU6Ok5vQnJlYWs7CiB9CiAKLU9wdGlvbmFsPExpbmVCcmVha2VyOjpQYXJ0aWFsUnVuPiBMaW5l
QnJlYWtlcjo6dHJ5QnJlYWtpbmdUZXh0UnVuKGNvbnN0IFJ1biYgb3ZlcmZsb3dSdW4sIElubGlu
ZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0CitPcHRpb25hbDxMaW5lQnJlYWtlcjo6
UGFydGlhbFJ1bj4gTGluZUJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBSdW4mIG92
ZXJmbG93UnVuLCBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0LCBJbmxpbmVMYXlvdXRVbml0
IGF2YWlsYWJsZVdpZHRoKSBjb25zdAogewogICAgIEFTU0VSVChvdmVyZmxvd1J1bi5pbmxpbmVJ
dGVtLmlzVGV4dCgpKTsKICAgICBhdXRvJiBpbmxpbmVUZXh0SXRlbSA9IGRvd25jYXN0PElubGlu
ZVRleHRJdGVtPihvdmVyZmxvd1J1bi5pbmxpbmVJdGVtKTsKQEAgLTMwOSw4ICszMTEsNyBAQCBP
cHRpb25hbDxMaW5lQnJlYWtlcjo6UGFydGlhbFJ1bj4gTGluZUJyZWFrZXI6OnRyeUJyZWFraW5n
VGV4dFJ1bihjb25zdCBSdW4mIG92ZQogICAgICAgICAgICAgLy8gbGV0J3MganVzdCByZXR1cm4g
dGhlIGVudGlyZSBydW4gd2hlbiBpdCBpcyBpbnRlbmRlZCB0byBmaXQgb24gdGhlIGxpbmUuCiAg
ICAgICAgICAgICByZXR1cm4gUGFydGlhbFJ1biB7IGlubGluZVRleHRJdGVtLmxlbmd0aCgpLCBv
dmVyZmxvd1J1bi5sb2dpY2FsV2lkdGgsIGZhbHNlIH07CiAgICAgICAgIH0KLSAgICAgICAgLy8g
RklYTUU6IFBhc3MgaW4gdGhlIGNvbnRlbnQgbG9naWNhbCBsZWZ0IHRvIGJlIGFibGUgdG8gbWVh
c3VyZSB0YWJzLgotICAgICAgICBhdXRvIHNwbGl0RGF0YSA9IFRleHRVdGlsOjpzcGxpdChpbmxp
bmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCksIGlubGlu
ZVRleHRJdGVtLmxlbmd0aCgpLCBvdmVyZmxvd1J1bi5sb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdp
ZHRoLCB7IH0pOworICAgICAgICBhdXRvIHNwbGl0RGF0YSA9IFRleHRVdGlsOjpzcGxpdChpbmxp
bmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCksIGlubGlu
ZVRleHRJdGVtLmxlbmd0aCgpLCBvdmVyZmxvd1J1bi5sb2dpY2FsV2lkdGgsIGF2YWlsYWJsZVdp
ZHRoLCBsb2dpY2FsTGVmdCk7CiAgICAgICAgIHJldHVybiBQYXJ0aWFsUnVuIHsgc3BsaXREYXRh
Lmxlbmd0aCwgc3BsaXREYXRhLmxvZ2ljYWxXaWR0aCwgZmFsc2UgfTsKICAgICB9CiAKQEAgLTMz
Myw3ICszMzQsNyBAQCBPcHRpb25hbDxMaW5lQnJlYWtlcjo6UGFydGlhbFJ1bj4gTGluZUJyZWFr
ZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBSdW4mIG92ZQogICAgICAgICAgICAgYXV0byBh
dmFpbGFibGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiA9IGF2YWlsYWJsZVdpZHRoIC0gaHlwaGVuV2lk
dGg7CiAgICAgICAgICAgICBpZiAoYXZhaWxhYmxlV2lkdGhFeGNsdWRpbmdIeXBoZW4gPD0gMCB8
fCAhZW5vdWdoV2lkdGhGb3JIeXBoZW5hdGlvbihhdmFpbGFibGVXaWR0aEV4Y2x1ZGluZ0h5cGhl
biwgZm9udENhc2NhZGUucGl4ZWxTaXplKCkpKQogICAgICAgICAgICAgICAgIHJldHVybiB7IH07
Ci0gICAgICAgICAgICBsZWZ0U2lkZUxlbmd0aCA9IFRleHRVdGlsOjpzcGxpdChpbmxpbmVUZXh0
SXRlbS5pbmxpbmVUZXh0Qm94KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCksIHJ1bkxlbmd0aCwg
b3ZlcmZsb3dSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aEV4Y2x1ZGluZ0h5cGhlbiwg
eyB9KS5sZW5ndGg7CisgICAgICAgICAgICBsZWZ0U2lkZUxlbmd0aCA9IFRleHRVdGlsOjpzcGxp
dChpbmxpbmVUZXh0SXRlbS5pbmxpbmVUZXh0Qm94KCksIGlubGluZVRleHRJdGVtLnN0YXJ0KCks
IHJ1bkxlbmd0aCwgb3ZlcmZsb3dSdW4ubG9naWNhbFdpZHRoLCBhdmFpbGFibGVXaWR0aEV4Y2x1
ZGluZ0h5cGhlbiwgbG9naWNhbExlZnQpLmxlbmd0aDsKICAgICAgICAgfQogICAgICAgICBpZiAo
bGVmdFNpZGVMZW5ndGggPCBsaW1pdEJlZm9yZSkKICAgICAgICAgICAgIHJldHVybiB7IH07CkBA
IC0zNTEsMTIgKzM1MiwxMSBAQCBPcHRpb25hbDxMaW5lQnJlYWtlcjo6UGFydGlhbFJ1bj4gTGlu
ZUJyZWFrZXI6OnRyeUJyZWFraW5nVGV4dFJ1bihjb25zdCBSdW4mIG92ZQogICAgIHJldHVybiB7
IH07CiB9CiAKLUNvbnRpbnVvdXNDb250ZW50OjpDb250aW51b3VzQ29udGVudChjb25zdCBMaW5l
QnJlYWtlcjo6UnVuTGlzdCYgcnVucywgSW5saW5lTGF5b3V0VW5pdCBjb250ZW50TG9naWNhbFdp
ZHRoKQotICAgIDogbV9ydW5zKHJ1bnMpCi0gICAgLCBtX3dpZHRoKGNvbnRlbnRMb2dpY2FsV2lk
dGgpCitDb250aW51b3VzQ29udGVudDo6Q29udGludW91c0NvbnRlbnQoY29uc3QgTGluZUJyZWFr
ZXI6OkNhbmRpZGF0ZUNvbnRlbnQmIGNhbmRpZGF0ZUNvbnRlbnQpCisgICAgOiBtX2NhbmRpZGF0
ZUNvbnRlbnQoY2FuZGlkYXRlQ29udGVudCkKIHsKICAgICAvLyBGaWd1cmUgb3V0IHRoZSB0cmFp
bGluZyBjb2xsYXBzaWJsZSBzdGF0ZS4KLSAgICBmb3IgKGF1dG8mIHJ1biA6IFdURjo6bWFrZVJl
dmVyc2VkUmFuZ2UobV9ydW5zKSkgeworICAgIGZvciAoYXV0byYgcnVuIDogV1RGOjptYWtlUmV2
ZXJzZWRSYW5nZShydW5zKCkpKSB7CiAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBydW4uaW5s
aW5lSXRlbTsKICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNCb3goKSkgewogICAgICAgICAgICAg
Ly8gV2UgZGlkIHJlYWNoIGEgbm9uLWNvbGxhcHNpYmxlIGNvbnRlbnQuIFdlIGhhdmUgYWxsIHRo
ZSB0cmFpbGluZyB3aGl0ZXNwYWNlIG5vdy4KQEAgLTM5MCw3ICszOTAsNyBAQCBib29sIENvbnRp
bnVvdXNDb250ZW50OjpoYXNUZXh0Q29udGVudE9ubHkoKSBjb25zdAogewogICAgIC8vIDxzcGFu
PnRleHQ8L3NwYW4+IGlzIGNvbnNpZGVyZWQgYSB0ZXh0IHJ1biBldmVuIHdpdGggdGhlIFtjb250
YWluZXIgc3RhcnRdW2NvbnRhaW5lciBlbmRdIGlubGluZSBpdGVtcy4KICAgICAvLyBEdWUgdG8g
Y29tbWl0IGJvdW5kYXJ5IHJ1bGVzLCB3ZSBqdXN0IG5lZWQgdG8gY2hlY2sgdGhlIGZpcnN0IG5v
bi10eXBlbGVzcyBpbmxpbmUgaXRlbSAoY2FuJ3QgaGF2ZSBib3RoIFtpbWddIGFuZCBbdGV4dF0p
Ci0gICAgZm9yIChhdXRvJiBydW4gOiBtX3J1bnMpIHsKKyAgICBmb3IgKGF1dG8mIHJ1biA6IHJ1
bnMoKSkgewogICAgICAgICBhdXRvJiBpbmxpbmVJdGVtID0gcnVuLmlubGluZUl0ZW07CiAgICAg
ICAgIGlmIChpbmxpbmVJdGVtLmlzQ29udGFpbmVyU3RhcnQoKSB8fCBpbmxpbmVJdGVtLmlzQ29u
dGFpbmVyRW5kKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTQwNCw3ICs0MDQsNyBAQCBi
b29sIENvbnRpbnVvdXNDb250ZW50Ojppc1Zpc3VhbGx5RW1wdHlXaGl0ZXNwYWNlQ29udGVudE9u
bHkoKSBjb25zdAogICAgIC8vIFs8c3Bhbj48L3NwYW4+IF0gWzxzcGFuPiA8L3NwYW4+XSBbIDxz
cGFuIHN0eWxlPSJwYWRkaW5nOiAwcHg7Ij48L3NwYW4+XSBhcmUgYWxsIGNvbnNpZGVyZWQgdmlz
dWFsbHkgZW1wdHkgd2hpdGVzcGFjZSBjb250ZW50LgogICAgIC8vIFs8c3BhbiBzdHlsZT0iYm9y
ZGVyOiAxcHggc29saWQgcmVkIj48L3NwYW4+IF0gd2hpbGUgdGhpcyBpcyB3aGl0ZXNwYWNlIGNv
bnRlbnQgb25seSwgaXQgaXMgbm90IGNvbnNpZGVyZWQgdmlzdWFsbHkgZW1wdHkuCiAgICAgLy8g
RHVlIHRvIGNvbW1pdCBib3VuZGFyeSBydWxlcywgd2UganVzdCBuZWVkIHRvIGNoZWNrIHRoZSBm
aXJzdCBub24tdHlwZWxlc3MgaW5saW5lIGl0ZW0gKGNhbid0IGhhdmUgYm90aCBbaW1nXSBhbmQg
W3RleHRdKQotICAgIGZvciAoYXV0byYgcnVuIDogbV9ydW5zKSB7CisgICAgZm9yIChhdXRvJiBy
dW4gOiBydW5zKCkpIHsKICAgICAgICAgYXV0byYgaW5saW5lSXRlbSA9IHJ1bi5pbmxpbmVJdGVt
OwogICAgICAgICAvLyBGSVhNRTogY2hlY2sgZm9yIHBhZGRpbmcgYm9yZGVyIGV0Yy4KICAgICAg
ICAgaWYgKGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpIHx8IGlubGluZUl0ZW0uaXNDb250
YWluZXJFbmQoKSkKQEAgLTQxNiw4ICs0MTYsOSBAQCBib29sIENvbnRpbnVvdXNDb250ZW50Ojpp
c1Zpc3VhbGx5RW1wdHlXaGl0ZXNwYWNlQ29udGVudE9ubHkoKSBjb25zdAogCiBPcHRpb25hbDxz
aXplX3Q+IENvbnRpbnVvdXNDb250ZW50OjpmaXJzdFRleHRSdW5JbmRleCgpIGNvbnN0CiB7Ci0g
ICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG1fcnVucy5zaXplKCk7ICsraW5kZXgp
IHsKLSAgICAgICAgaWYgKG1fcnVuc1tpbmRleF0uaW5saW5lSXRlbS5pc1RleHQoKSkKKyAgICBh
dXRvJiBydW5zID0gdGhpcy0+cnVucygpOworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5k
ZXggPCBydW5zLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAocnVuc1tpbmRleF0uaW5s
aW5lSXRlbS5pc1RleHQoKSkKICAgICAgICAgICAgIHJldHVybiBpbmRleDsKICAgICB9CiAgICAg
cmV0dXJuIHsgfTsKQEAgLTQyNSw4ICs0MjYsOSBAQCBPcHRpb25hbDxzaXplX3Q+IENvbnRpbnVv
dXNDb250ZW50OjpmaXJzdFRleHRSdW5JbmRleCgpIGNvbnN0CiAKIE9wdGlvbmFsPHNpemVfdD4g
Q29udGludW91c0NvbnRlbnQ6Omxhc3RDb250ZW50UnVuSW5kZXgoKSBjb25zdAogewotICAgIGZv
ciAoc2l6ZV90IGluZGV4ID0gbV9ydW5zLnNpemUoKTsgaW5kZXgtLTspIHsKLSAgICAgICAgaWYg
KG1fcnVuc1tpbmRleF0uaW5saW5lSXRlbS5pc1RleHQoKSB8fCBtX3J1bnNbaW5kZXhdLmlubGlu
ZUl0ZW0uaXNCb3goKSkKKyAgICBhdXRvJiBydW5zID0gdGhpcy0+cnVucygpOworICAgIGZvciAo
YXV0byBpbmRleCA9IHJ1bnMuc2l6ZSgpOyBpbmRleC0tOykgeworICAgICAgICBpZiAocnVuc1tp
bmRleF0uaW5saW5lSXRlbS5pc1RleHQoKSB8fCBydW5zW2luZGV4XS5pbmxpbmVJdGVtLmlzQm94
KCkpCiAgICAgICAgICAgICByZXR1cm4gaW5kZXg7CiAgICAgfQogICAgIHJldHVybiB7IH07CkBA
IC00MzUsNyArNDM3LDcgQEAgT3B0aW9uYWw8c2l6ZV90PiBDb250aW51b3VzQ29udGVudDo6bGFz
dENvbnRlbnRSdW5JbmRleCgpIGNvbnN0CiBib29sIENvbnRpbnVvdXNDb250ZW50OjpoYXNOb25D
b250ZW50UnVuc09ubHkoKSBjb25zdAogewogICAgIC8vIDxzcGFuPjwvc3Bhbj4gPC0gbm9uIGNv
bnRlbnQgcnVucy4KLSAgICBmb3IgKGF1dG8mIHJ1biA6IG1fcnVucykgeworICAgIGZvciAoYXV0
byYgcnVuIDogcnVucygpKSB7CiAgICAgICAgIGF1dG8mIGlubGluZUl0ZW0gPSBydW4uaW5saW5l
SXRlbTsKICAgICAgICAgaWYgKGlubGluZUl0ZW0uaXNDb250YWluZXJTdGFydCgpIHx8IGlubGlu
ZUl0ZW0uaXNDb250YWluZXJFbmQoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFr
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
cmVha2VyLmgKaW5kZXggYzhmMzI2NWU4ODU2NmU5M2ViOGE4ZGU5MGNiYWZiNDcwNTRlODcxZS4u
MGE2MjkwZWQwOTkzZDY3YTQxNWQyYzA0MzZhZTg3MjlmZjU3ZWViMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJyZWFrZXIuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnJl
YWtlci5oCkBAIC03NiwxMyArNzYsMTggQEAgcHVibGljOgogICAgIH07CiAgICAgdXNpbmcgUnVu
TGlzdCA9IFZlY3RvcjxSdW4sIDM+OwogCisgICAgc3RydWN0IENhbmRpZGF0ZUNvbnRlbnQgewor
ICAgICAgICBjb25zdCBSdW5MaXN0JiBydW5zOworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxv
Z2ljYWxMZWZ0IHsgMCB9OworICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGxvZ2ljYWxXaWR0aCB7
IDAgfTsKKyAgICB9OwogICAgIHN0cnVjdCBMaW5lU3RhdHVzIHsKICAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBhdmFpbGFibGVXaWR0aCB7IDAgfTsKICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBj
b2xsYXBzaWJsZVdpZHRoIHsgMCB9OwogICAgICAgICBib29sIGxpbmVIYXNGdWxseUNvbGxhcHNp
YmxlVHJhaWxpbmdSdW4geyBmYWxzZSB9OwogICAgICAgICBib29sIGxpbmVJc0VtcHR5IHsgdHJ1
ZSB9OwogICAgIH07Ci0gICAgUmVzdWx0IHNob3VsZFdyYXBJbmxpbmVDb250ZW50KGNvbnN0IFJ1
bkxpc3QmIGNhbmRpZGF0ZVJ1bnMsIElubGluZUxheW91dFVuaXQgY2FuZGlkYXRlQ29udGVudExv
Z2ljYWxXaWR0aCwgY29uc3QgTGluZVN0YXR1cyYpOworICAgIFJlc3VsdCBzaG91bGRXcmFwSW5s
aW5lQ29udGVudChjb25zdCBDYW5kaWRhdGVDb250ZW50JiwgY29uc3QgTGluZVN0YXR1cyYpOwog
CiAgICAgdm9pZCBzZXRIeXBoZW5hdGlvbkRpc2FibGVkKCkgeyBuX2h5cGhlbmF0aW9uSXNEaXNh
YmxlZCA9IHRydWU7IH0KIApAQCAtOTYsOSArMTAxLDkgQEAgcHJpdmF0ZToKICAgICAvLyBbY29u
dGVudF0KICAgICAvLyBbY29udGFpbmVyIHN0YXJ0XVtzcGFuMV1bY29udGFpbmVyIGVuZF1bYmV0
d2Vlbl1bY29udGFpbmVyIHN0YXJ0XVtzcGFuMl1bY29udGFpbmVyIGVuZF0KICAgICAvLyBzZWUg
aHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy10ZXh0LTMvI2xpbmUtYnJlYWstZGV0YWlscwot
ICAgIE9wdGlvbmFsPFdyYXBwZWRUZXh0Q29udGVudD4gd3JhcFRleHRDb250ZW50KGNvbnN0IFJ1
bkxpc3QmLCBjb25zdCBMaW5lU3RhdHVzJikgY29uc3Q7Ci0gICAgUmVzdWx0IHRyeVdyYXBwaW5n
SW5saW5lQ29udGVudChjb25zdCBSdW5MaXN0JiwgSW5saW5lTGF5b3V0VW5pdCBjYW5kaWRhdGVD
b250ZW50TG9naWNhbFdpZHRoLCBjb25zdCBMaW5lU3RhdHVzJikgY29uc3Q7Ci0gICAgT3B0aW9u
YWw8UGFydGlhbFJ1bj4gdHJ5QnJlYWtpbmdUZXh0UnVuKGNvbnN0IFJ1biYgb3ZlcmZsb3dSdW4s
IElubGluZUxheW91dFVuaXQgYXZhaWxhYmxlV2lkdGgpIGNvbnN0OworICAgIE9wdGlvbmFsPFdy
YXBwZWRUZXh0Q29udGVudD4gd3JhcFRleHRDb250ZW50KGNvbnN0IENvbnRpbnVvdXNDb250ZW50
JiwgY29uc3QgTGluZVN0YXR1cyYpIGNvbnN0OworICAgIFJlc3VsdCB0cnlXcmFwcGluZ0lubGlu
ZUNvbnRlbnQoY29uc3QgQ2FuZGlkYXRlQ29udGVudCYsIGNvbnN0IExpbmVTdGF0dXMmKSBjb25z
dDsKKyAgICBPcHRpb25hbDxQYXJ0aWFsUnVuPiB0cnlCcmVha2luZ1RleHRSdW4oY29uc3QgUnVu
JiBvdmVyZmxvd1J1biwgSW5saW5lTGF5b3V0VW5pdCBsb2dpY2FsTGVmdCwgSW5saW5lTGF5b3V0
VW5pdCBhdmFpbGFibGVXaWR0aCkgY29uc3Q7CiAKICAgICBlbnVtIGNsYXNzIFdvcmRCcmVha1J1
bGUgewogICAgICAgICBOb0JyZWFrLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJ1aWxkZXIuY3BwCmluZGV4IGJlYTVi
YTNhZTI4ZmQ4YTU5N2E4ODljYzJkNDZiNTU1NmY1YmUyOTEuLmI3MmJlNzhiNDcwZDIxMDY0Nzk1
OTEyNDU5YzZhNTc1NTJhM2JjZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQnVpbGRlci5jcHAKQEAgLTUzMSw4
ICs1MzEsOCBAQCB2b2lkIExpbmVCdWlsZGVyOjpjb21taXRGbG9hdHMoY29uc3QgTGluZUNhbmRp
ZGF0ZSYgbGluZUNhbmRpZGF0ZSwgQ29tbWl0SW50cnVzaQogCiBMaW5lQnVpbGRlcjo6UmVzdWx0
IExpbmVCdWlsZGVyOjpoYW5kbGVGbG9hdHNBbmRJbmxpbmVDb250ZW50KExpbmVCcmVha2VyJiBs
aW5lQnJlYWtlciwgY29uc3QgSW5saW5lSXRlbVJhbmdlJiBsYXlvdXRSYW5nZSwgY29uc3QgTGlu
ZUNhbmRpZGF0ZSYgbGluZUNhbmRpZGF0ZSkKIHsKLSAgICBhdXRvJiBpbmxpbmVDb250ZW50ID0g
bGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50OwotICAgIGF1dG8mIGNhbmRpZGF0ZVJ1bnMgPSBp
bmxpbmVDb250ZW50LnJ1bnMoKTsKKyAgICBhdXRvJiBjYW5kaWRhdGVJbmxpbmVDb250ZW50ID0g
bGluZUNhbmRpZGF0ZS5pbmxpbmVDb250ZW50OworICAgIGF1dG8mIGNhbmRpZGF0ZVJ1bnMgPSBj
YW5kaWRhdGVJbmxpbmVDb250ZW50LnJ1bnMoKTsKICAgICBpZiAoY2FuZGlkYXRlUnVucy5pc0Vt
cHR5KCkpIHsKICAgICAgICAgY29tbWl0RmxvYXRzKGxpbmVDYW5kaWRhdGUpOwogICAgICAgICBy
ZXR1cm4geyBMaW5lQnJlYWtlcjo6SXNFbmRPZkxpbmU6Ok5vIH07CkBAIC01NTEsNyArNTUxLDgg
QEAgTGluZUJ1aWxkZXI6OlJlc3VsdCBMaW5lQnVpbGRlcjo6aGFuZGxlRmxvYXRzQW5kSW5saW5l
Q29udGVudChMaW5lQnJlYWtlciYgbGluZUIKICAgICBhdXRvIGF2YWlsYWJsZVdpZHRoID0gbV9s
aW5lLmF2YWlsYWJsZVdpZHRoKCkgLSBmbG9hdENvbnRlbnQuaW50cnVzaXZlV2lkdGgoKTsKICAg
ICBhdXRvIGlzTGluZUNvbnNpZGVyZWRFbXB0eSA9IG1fbGluZS5pc1Zpc3VhbGx5RW1wdHkoKSAm
JiAhbV9jb250ZW50SXNDb25zdHJhaW5lZEJ5RmxvYXQ7CiAgICAgYXV0byBsaW5lU3RhdHVzID0g
TGluZUJyZWFrZXI6OkxpbmVTdGF0dXMgeyBhdmFpbGFibGVXaWR0aCwgbV9saW5lLnRyaW1tYWJs
ZVRyYWlsaW5nV2lkdGgoKSwgbV9saW5lLmlzVHJhaWxpbmdSdW5GdWxseVRyaW1tYWJsZSgpLCBp
c0xpbmVDb25zaWRlcmVkRW1wdHkgfTsKLSAgICBhdXRvIHJlc3VsdCA9IGxpbmVCcmVha2VyLnNo
b3VsZFdyYXBJbmxpbmVDb250ZW50KGNhbmRpZGF0ZVJ1bnMsIGlubGluZUNvbnRlbnQubG9naWNh
bFdpZHRoKCksIGxpbmVTdGF0dXMpOworICAgIGF1dG8gY2FuZGlkYXRlSW5saW5lQ29udGVudExv
Z2ljYWxMZWZ0ID0gbV9saW5lLmNvbnRlbnRMb2dpY2FsV2lkdGgoKTsgCisgICAgYXV0byByZXN1
bHQgPSBsaW5lQnJlYWtlci5zaG91bGRXcmFwSW5saW5lQ29udGVudCh7IGNhbmRpZGF0ZVJ1bnMs
IGNhbmRpZGF0ZUlubGluZUNvbnRlbnRMb2dpY2FsTGVmdCwgY2FuZGlkYXRlSW5saW5lQ29udGVu
dC5sb2dpY2FsV2lkdGgoKSB9LCBsaW5lU3RhdHVzKTsKICAgICBpZiAocmVzdWx0Lmxhc3RXcmFw
T3Bwb3J0dW5pdHlJdGVtKQogICAgICAgICBtX2xhc3RXcmFwT3Bwb3J0dW5pdHlJdGVtID0gcmVz
dWx0Lmxhc3RXcmFwT3Bwb3J0dW5pdHlJdGVtOwogICAgIGlmIChyZXN1bHQuYWN0aW9uID09IExp
bmVCcmVha2VyOjpSZXN1bHQ6OkFjdGlvbjo6S2VlcCkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>