<?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>218397</bug_id>
          
          <creation_ts>2020-10-30 10:57:10 -0700</creation_ts>
          <short_desc>[LFC][IFC] Split inline level box alignment process into multiple phases</short_desc>
          <delta_ts>2020-11-01 14:01:54 -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>1703128</commentid>
    <comment_count>0</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 10:57:10 -0700</bug_when>
    <thetext>to be able differentiate normal inline level box and layout bounds geometries.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703135</commentid>
    <comment_count>1</comment_count>
      <attachid>412777</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 11:21:20 -0700</bug_when>
    <thetext>Created attachment 412777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703192</commentid>
    <comment_count>2</comment_count>
      <attachid>412794</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 13:45:28 -0700</bug_when>
    <thetext>Created attachment 412794
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703267</commentid>
    <comment_count>3</comment_count>
      <attachid>412814</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 17:04:47 -0700</bug_when>
    <thetext>Created attachment 412814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703304</commentid>
    <comment_count>4</comment_count>
      <attachid>412829</attachid>
    <who name="alan">zalan</who>
    <bug_when>2020-10-30 20:54:42 -0700</bug_when>
    <thetext>Created attachment 412829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703330</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-10-31 07:30:02 -0700</bug_when>
    <thetext>Committed r269225: &lt;https://trac.webkit.org/changeset/269225&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 412829.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703331</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-31 07:31:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/70915477&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1703424</commentid>
    <comment_count>7</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-11-01 14:01:54 -0800</bug_when>
    <thetext>*** Bug 218312 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412777</attachid>
            <date>2020-10-30 11:21:20 -0700</date>
            <delta_ts>2020-10-30 14:01:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218397-20201030112119.patch</filename>
            <type>text/plain</type>
            <size>29217</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiYzM5NTU5MTg1ODk4
ZDFkODZlOWQ4Yjc0OGEzMTUyYWZkOTA2ZC4uYjg0MjM0NmExZTRhNzcxYjFiYjBmZmNjZWQ5Yjdj
YzIyYjlmYzQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEwLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBTcGxpdCBp
bmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBwcm9jZXNzIGludG8gbXVsdGlwbGUgcGhhc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzOTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmxpbmUgbGV2
ZWwgYm94IGFsaWdubWVudCBpbnNpZGUgdGhlIGxpbmUgYm94IGlzIGRlc2NyaWJlZCBhdCBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWxheW91dC4KKyAgICAgICAgVGhl
IGFsaWdubWVudCBwcm9jZXNzIGludm9sdmVzIDMgZGlzdGluY3Qgc3RlcHM6CisgICAgICAgIDEu
IENvbXB1dGluZyB0aGUgbGluZSBib3gncyBsb2dpY2FsIGhlaWdodC4gVGhpcyBzdGVwIHNvbGVs
eSB1c2VzIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IG9mIHRoZSBpbmxpbmUgbGV2ZWwgYm94
ZXMuCisgICAgICAgIDIuIEZpbmRpbmcgdGhlIHJvb3QgaW5saW5lIGJveCB2ZXJ0aWNhbCBwb3Np
dGlvbi4gVGhpcyBzdGVwIGlzIHNvbWV3aGF0IHNpbWlsYXIgdG8gdGhlIGZpbmFsLCBhbGlnbm1l
bnQgcGhhc2UgYnV0IGluc3RlYWQgb2YKKyAgICAgICAgdGhlIGxvZ2ljYWwgdG9wLCBoZXJlIHdl
IGNvbXB1dGUgdGhlIGJhc2VsaW5lIG9mZnNldHMuIEl0IGhlbHBzIHRvIGZpZ3VyZSBvdXQgdGhl
IHJvb3QgaW5saW5lIGJveCdzIGJhc2VsaW5lIHBvc2l0aW5nIGluc2lkZSB0aGUgbGluZSBib3gu
ICAKKyAgICAgICAgMy4gQWxpZ25pbmcgdGhlIGlubGluZSBsZXZlbCBib3hlcyBieSBjb21wdXRp
bmcgdGhlaXIgbG9naWNhbCB0b3AgcG9zaXRpb24uCisKKyAgICAgICAgVGhlc2UgMyBzdGVwcyBh
cmUgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxvd2luZyAzIGZ1bmN0aW9uczogCisgICAgICAgIDEu
IGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpCisgICAgICAgIDIuIGNvbXB1dGVSb290SW5s
aW5lQm94VmVydGljYWxQb3NpdGlvbigpCisgICAgICAgIDMuIGFsaWduSW5saW5lTGV2ZWxCb3hl
cygpCisgICAgICAgIFdoaWxlIHNvbWUgb2YgdGhlIGNvZGUgaW4gdGhlc2UgZnVuY3Rpb25zIG1h
eSBsb29rIHJlZHVuZGFudCwgdGhleSB3b3JrIHdpdGggZGlmZmVyZW50IHR5cGUgb2YgZ2VvbWV0
cmllcyAobGF5b3V0IGJvdW5kcyB2cy4gbm9ybWFsIGFzY2VudC9kZXNjZW50L2xvZ2ljYWwgaGVp
Z2h0KS4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNW
ZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpm
b250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMTAtMjkgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gSW1wbGVtZW50
IG91dHB1dExpbmVUcmVlQW5kTWFyayBmb3IgSUZDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBiZjkxZGYwMGFjNDY4MmJjYjA3NjZhMjhk
M2RlMzZiZDhmZTk5NjUuLjA0ZmY3NGI1MmM2MjY2Y2ZmNjg2OTg5YmJhMGQxNDliMjhjYzMyY2Yg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEdl
b21ldHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6OklubGluZUxldmVsQm94JikgY29uc3Q7CiAgICAg
dm9pZCBjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmLCBjb25zdCBMaW5lOjpSdW5M
aXN0Jik7Ci0gICAgdm9pZCBhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0
ZUxpbmVCb3hIZWlnaHQoTGluZUJveCYpOworICAgIHZvaWQgY29tcHV0ZUxpbmVCb3hIZWlnaHRB
bmRhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExpbmVCb3gmKTsKIAogICAgIGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3RCb3go
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQpAQCAtMTYyLDE3
ICsxNjIsMjEgQEAgTGluZUJveCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxk
ZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCkKICAgICBpZiAoYXV0byBob3Jpem9udGFsQWxp
Z25tZW50T2Zmc2V0ID0gTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJ1bnMsIHJv
b3RCb3goKS5zdHlsZSgpLnRleHRBbGlnbigpLCBsaW5lTG9naWNhbFdpZHRoLCBjb250ZW50TG9n
aWNhbFdpZHRoLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpKQogICAg
ICAgICBsaW5lQm94LnNldEhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKmhvcml6b250YWxBbGln
bm1lbnRPZmZzZXQpOwogICAgIGNvbnN0cnVjdElubGluZUxldmVsQm94ZXMobGluZUJveCwgcnVu
cyk7Ci0gICAgYWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94
SGVpZ2h0KGxpbmVCb3gpOworICAgIGNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVM
ZXZlbEJveGVzVmVydGljYWxseShsaW5lQm94KTsKICAgICByZXR1cm4gbGluZUJveDsKIH0KIAog
dm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJl
YWtCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5mb250TWV0
cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guc3R5bGUoKS5m
b250TWV0cmljcygpOwogICAgIElubGluZUxheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3Mu
YXNjZW50KCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVz
Y2VudCgpOwogICAgIGF1dG8gbG9naWNhbEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAg
Ly8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9z
aXRpb25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkp
OworICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5s
aW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJ
WE1FOiBBZGp1c3QgbGF5b3V0IGJvdW5kcyB3aXRoIGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNh
YmxlLgogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUo
KTsKQEAgLTE5MiwxNCArMTk2LDggQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxH
ZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAg
YXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAgICAgICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwog
ICAgIH0KLSAgICAvLyBXZSBuZWVkIHRoaXMgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3Jh
bCBwb3NpdGlvbmluZy4KLSAgICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50
ID0gY2VpbChkZXNjZW50KTsKLQotICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhM
aW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0p
OwotICAgIGlubGluZUxldmVsQm94LnNldEJhc2VsaW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2
ZWxCb3guc2V0RGVzY2VudChkZXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2Fs
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRj
aCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94
LnNldExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsg
Zmxvb3JmKGFzY2VudCksIGNlaWwoZGVzY2VudCkgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGlu
ZTo6UnVuTGlzdCYgcnVucykKQEAgLTI5NiwyNyArMjk0LDMyIEBAIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGlu
ZTo6UnVuCiAgICAgfQogfQogCi12b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVs
Qm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZUJveCYgbGluZUJveCkK
K3ZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVM
ZXZlbEJveGVzVmVydGljYWxseShMaW5lQm94JiBsaW5lQm94KQogewogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gKHBhcnRpYWxseSkgaW1wbGVtZW50czoKICAgICAvLyAyLjIuIExheW91dCBXaXRoaW4g
TGluZSBCb3hlcwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xp
bmUtbGF5b3V0CisgICAgLy8gMS4gQ29tcHV0ZSB0aGUgbGluZSBib3ggaGVpZ2h0IHVzaW5nIHRo
ZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5LiBUaGlzIGhlaWdodCBjb21wdXRhdGlvbiBzdHJpY3Rs
eSB1c2VzIGxheW91dCBib3VuZHMgYW5kIG5vdCBub3JtYWwgaW5saW5lIGxldmVsIGJveCBnZW9t
ZXRyaWVzLgorICAgIC8vIDIuIENvbXB1dGUgdGhlIGJhc2VsaW5lL2xvZ2ljYWwgdG9wIHBvc2l0
aW9uIG9mIHRoZSByb290IGlubGluZSBib3guIEFsaWduZWQgYm94ZXMgcHVzaCB0aGUgcm9vdCBp
bmxpbmUgYm94IGFyb3VuZCBpbnNpZGUgdGhlIGxpbmUgYm94LgorICAgIC8vIDMuIEZpbmFsbHkg
YWxpZ24gdGhlIGlubGluZSBsZXZlbCBib3hlcyB1c2luZyAobW9zdGx5KSBub3JtYWwgaW5saW5l
IGxldmVsIGJveCBnZW9tZXRyaWVzLgogICAgIGF1dG8gcXVpcmtzID0gZm9ybWF0dGluZ0NvbnRl
eHQoKS5xdWlya3MoKTsKLSAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqPiBsaW5l
Qm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOwotICAgIHN0cnVjdCBBYnNvbHV0ZUdlb21ldHJ5
IHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07Ci0gICAgICAgIElubGluZUxh
eW91dFVuaXQgYm90dG9tIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5l
T2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSB7IDAgfTsKLSAgICAgICAgY29uc3QgTGlu
ZUJveDo6SW5saW5lTGV2ZWxCb3gqIGlubGluZUxldmVsQm94IHsgbnVsbHB0ciB9OwotICAgIH07
Ci0gICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCosIEFic29sdXRlR2VvbWV0cnk+
IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcDsKICAgICBhdXRvJiByb290SW5saW5l
Qm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7Ci0gICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0
ZUdlb21ldHJ5TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVHZW9tZXRyeSB7IHsgfSwg
cm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSwgeyB9LCAmcm9vdElubGluZUJv
eCB9KTsKLSAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5l
ID0gcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiByb290SW5s
aW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAotICAgIGF1dG8gYWxpZ25JbmxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHBy
b3BlciBzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBpbmxpbmUgYm94IHdpdGggbGluZSBib3gg
cmVsYXRpdmUgYWxpZ25tZW50IGhhcyBhIGNoaWxkIGlubGluZSBib3gKLSAgICAgICAgLy8gd2l0
aCBub24tbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50LgorICAgIGF1dG8gY29tcHV0ZUxpbmVC
b3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKKyAgICAgICAgVmVjdG9yPExpbmVCb3g6OklubGluZUxl
dmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlczsKKyAgICAgICAgLy8gTGlu
ZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBsYXlvdXQgYm91bmRzIG9m
IHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVpciBsb2dpY2FsIChhc2NlbnQvZGVzY2VudCkg
ZGltZW5zaW9ucy4KKyAgICAgICAgc3RydWN0IEFic29sdXRlVG9wQW5kQm90dG9tIHsKKyAgICAg
ICAgICAgIElubGluZUxheW91dFVuaXQgdG9wIHsgMCB9OworICAgICAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBib3R0b20geyAwIH07CisgICAgICAgIH07CisgICAgICAgIEhhc2hNYXA8TGluZUJv
eDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKKworICAgICAgICBhdXRvIHJvb3RBYnNvbHV0ZVRvcEFu
ZEJvdHRvbSA9IEFic29sdXRlVG9wQW5kQm90dG9tIHsgeyB9LCByb290SW5saW5lQm94LmxheW91
dEJvdW5kcygpLmhlaWdodCgpIH07CisgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BB
bmRCb3R0b21NYXAuYWRkKCZyb290SW5saW5lQm94LCByb290QWJzb2x1dGVUb3BBbmRCb3R0b20p
OworCisgICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3AgPSByb290QWJzb2x1dGVUb3BBbmRC
b3R0b20udG9wOworICAgICAgICBhdXRvIG1heGltdW1Mb2dpY2FsQm90dG9tID0gcm9vdEFic29s
dXRlVG9wQW5kQm90dG9tLmJvdHRvbTsKKwogICAgICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVs
Qm94IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CiAgICAgICAgICAgICBh
dXRvJiBsYXlvdXRCb3ggPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm94KCk7CiAgICAgICAgICAg
ICBpZiAoaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7CkBA
IC0zMjQsMTI0ICszMjcsMTkwIEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6OmFsaWduSW5saW5lTGV2
ZWxCb3hlc1ZlcnRpY2FsbHlBbmRDb21wdXRlTGluZUJveEhlaWdodChMaW5lCiAgICAgICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhdXRvJiBwYXJlbnRJ
bmxpbmVCb3ggPSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5w
YXJlbnQoKSk7CisgICAgICAgICAgICAvLyBMb2dpY2FsIHRvcCBpcyByZWxhdGl2ZSB0byB0aGUg
cGFyZW50IGlubGluZSBib3gncyBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgLy8gTm90ZSB0
aGF0IHRoaXMgbG9naWNhbCB0b3AgaXMgbm90IHRoZSBmaW5hbCBsb2dpY2FsIHRvcCBvZiB0aGUg
aW5saW5lIGxldmVsIGJveC4KKyAgICAgICAgICAgIC8vIFRoaXMgaXMgdGhlIGxvZ2ljYWwgdG9w
IGluIHRoZSBjb250ZXh0IG9mIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IHdoaWNoIG1heSBi
ZSB2ZXJ5IGRpZmZlcmVudCBmcm9tIHRoZSBpbmxpbmUgYm94J3Mgbm9ybWFsIGdlb21ldHJ5Lgog
ICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAg
ICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gSW5saW5lTGF5
b3V0VW5pdCB7IH07CiAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNh
bEFsaWduKCkpIHsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6Ci0g
ICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0g
aW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKLSAgICAgICAgICAgICAgICBi
YXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHsgfTsKLSAgICAgICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDogewotICAgICAg
ICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0VG9wIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94
J3MgZm9udCBtZXRyaWNzIHRvcCAoYXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIHRv
cC4KLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudEFzY2VudCA9IHBhcmVudElubGluZUJveC5m
b250TWV0cmljcygpLmFzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5l
Qm94TG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBw
YXJlbnRBc2NlbnQ7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJv
eExvZ2ljYWxUb3A7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFz
ZWxpbmUgPSBwYXJlbnRBc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNj
ZW50OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOiB7Ci0gICAgICAgICAgICAgICAgLy8gTm90
ZSB0aGF0IFRleHRCb3R0b20gYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJp
Y3MgYm90dG9tIChkZXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KLSAg
ICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRGb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC5m
b250TWV0cmljcygpOwotICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TGF5b3V0
Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpOwotICAgICAgICAgICAgICAg
IGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElubGluZUJveExheW91
dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5kcy5kZXNjZW50ICsg
cGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOwotICAgICAgICAgICAgICAgIGF1dG8gbGF5b3V0
Qm91bmRzID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpOwotICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gbGF5b3V0Qm91bmRz
LmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lID0gbGF5b3V0Qm91bmRzLmRlc2NlbnQgLSBwYXJlbnRGb250TWV0cmljcy5kZXNjZW50KCk7
CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOiB7CisgICAgICAgICAg
ICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2
ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
ID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewotICAgICAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guZm9u
dE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFz
ZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
PSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVp
Z2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0
KCkgLyAyOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
VmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKICAgICAgICAgICAgICAgICBhdXRvIGxv
Z2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0
Qm91bmRzKCkuaGVpZ2h0KCkgLyAyOwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJl
bnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBs
b2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5s
aW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmU7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewotICAgICAgICAgICAgICAgIGF1dG8m
IHN0eWxlID0gbGF5b3V0Qm94LnN0eWxlKCk7CisgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUg
PSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZl
cnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpICsgaW5saW5l
TGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwotICAgICAgICAgICAgICAgIGxvZ2lj
YWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2
ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
ID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6IHsKKyAgICAgICAg
ICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC10b3AgYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gn
cyBmb250IG1ldHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgdG9w
LgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91
bmRzKCkuYXNjZW50IC0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCk7CisgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OlRleHRCb3R0b206IHsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGV4dC1ib3R0b20g
YWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1ldHJpY3MgYm90dG9tIChkZXNjZW50
KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIGJvdHRvbS4KKyAgICAgICAgICAgICAgICBhdXRv
IHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3Vu
ZHMoKTsKKyAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20g
PSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVpZ2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hM
YXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudElubGluZUJveC5kZXNjZW50KCkudmFsdWVPcihJ
bmxpbmVMYXlvdXRVbml0KCkpOworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3hMb2dpY2FsQm90dG9tIC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhl
aWdodCgpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgp
OwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgaW5s
aW5lTGV2ZWxCb3gtPnNldExvZ2ljYWxUb3AobG9naWNhbFRvcCk7Ci0gICAgICAgICAgICBhdXRv
IHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkgPSBpbmxpbmVMZXZlbEJveEFic29sdXRl
R2VvbWV0cnlNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpOwotICAgICAgICAgICAgYXV0byBhYnNv
bHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LnRvcCArIGxv
Z2ljYWxUb3A7CisgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveEFic29sdXRlVG9wQW5k
Qm90dG9tID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5nZXQoJnBhcmVu
dElubGluZUJveCk7CisgICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNhbFRvcCA9IHBhcmVu
dElubGluZUJveEFic29sdXRlVG9wQW5kQm90dG9tLnRvcCArIGxvZ2ljYWxUb3A7CiAgICAgICAg
ICAgICBhdXRvIGFic29sdXRlTG9naWNhbEJvdHRvbSA9IGFic29sdXRlTG9naWNhbFRvcCArIGlu
bGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKLSAgICAgICAgICAgIGF1dG8g
YWJzb2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBwYXJlbnRJ
bmxpbmVCb3hBYnNvbHV0ZUdlb21ldHJ5LmJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hC
YXNlbGluZSArIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAgICAgICAgICAg
aW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQo
KSwgQWJzb2x1dGVHZW9tZXRyeSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2Fs
Qm90dG9tLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwg
aW5saW5lTGV2ZWxCb3guZ2V0KCkgfSk7Ci0KLSAgICAgICAgICAgIGF1dG8gYWZmZWN0c1Jvb3RJ
bmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNob3VsZElubGluZUxldmVsQm94U3Ry
ZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94KTsKLSAgICAgICAgICAgIGlmIChh
ZmZlY3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24pCi0gICAgICAgICAgICAgICAgbWF4
aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBzdGQ6Om1heChtYXhpbXVt
VG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwgYWJzb2x1dGVCYXNlbGluZU9mZnNl
dEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuYXNjZW50KTsKLSAgICAgICAgfQotICAgIH07Ci0gICAgYWxpZ25JbmxpbmVCb3hSZWxhdGl2
ZUlubGluZUxldmVsQm94ZXMoKTsKLQotICAgIGF1dG8gbGluZUJveExvZ2ljYWxIZWlnaHQgPSBJ
bmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGlubGluZUJveFJlbGF0aXZlTG9naWNhbEhl
aWdodCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgIGF1dG8gY29tcHV0ZUxpbmVCb3hMb2dp
Y2FsSGVpZ2h0ID0gWyZdIHsKLSAgICAgICAgLy8gRklYTUU6IEFkZCBzdXBwb3J0IGZvciBsYXlv
dXQgYm91bmRzIGJhc2VkIGxpbmUgYm94IGhlaWdodC4KLSAgICAgICAgYXV0byBtaW5pbXVtTG9n
aWNhbFRvcCA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAgICAgICAgYXV0byBt
YXhpbXVtTG9naWNhbEJvdHRvbSA9IE9wdGlvbmFsPElubGluZUxheW91dFVuaXQ+IHsgfTsKLSAg
ICAgICAgZm9yIChhdXRvIGFic29sdXRlR2VvbWV0cnkgOiBpbmxpbmVMZXZlbEJveEFic29sdXRl
R2VvbWV0cnlNYXAudmFsdWVzKCkpIHsKLSAgICAgICAgICAgIGF1dG8mIGlubGluZUxldmVsQm94
ID0gKmFic29sdXRlR2VvbWV0cnkuaW5saW5lTGV2ZWxCb3g7Ci0gICAgICAgICAgICBpZiAoIXF1
aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsIGlubGluZUxl
dmVsQm94KSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIG1pbmltdW1M
b2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxUb3AudmFsdWVPcihhYnNvbHV0ZUdl
b21ldHJ5LnRvcCksIGFic29sdXRlR2VvbWV0cnkudG9wKTsKLSAgICAgICAgICAgIG1heGltdW1M
b2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVPcihhYnNv
bHV0ZUdlb21ldHJ5LmJvdHRvbSksIGFic29sdXRlR2VvbWV0cnkuYm90dG9tKTsKKyAgICAgICAg
ICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuYWRkKGlubGluZUxldmVs
Qm94LmdldCgpLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbSB7IGFic29sdXRlTG9naWNhbFRvcCwgYWJz
b2x1dGVMb2dpY2FsQm90dG9tIH0pOworICAgICAgICAgICAgLy8gU3RyZXRjaCB0aGUgbWluL21h
eCBhYnNvbHV0ZSB2YWx1ZXMgaWYgYXBwbGljYWJsZS4KKyAgICAgICAgICAgIGlmIChxdWlya3Mu
c2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChsaW5lQm94LCAqaW5saW5lTGV2ZWxC
b3gpKSB7CisgICAgICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3AgPSBzdGQ6Om1pbihtaW5p
bXVtTG9naWNhbFRvcCwgYWJzb2x1dGVMb2dpY2FsVG9wKTsKKyAgICAgICAgICAgICAgICBtYXhp
bXVtTG9naWNhbEJvdHRvbSA9IHN0ZDo6bWF4KG1heGltdW1Mb2dpY2FsQm90dG9tLCBhYnNvbHV0
ZUxvZ2ljYWxCb3R0b20pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlubGlu
ZUJveFJlbGF0aXZlTG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlT3Io
SW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3IoSW5saW5lTGF5
b3V0VW5pdCgpKTsKLSAgICAgICAgbGluZUJveExvZ2ljYWxIZWlnaHQgPSBpbmxpbmVCb3hSZWxh
dGl2ZUxvZ2ljYWxIZWlnaHQ7Ci0gICAgICAgIC8vIE5vdyBzdHJldGNoIHRoZSBsaW5lIGJveCB3
aXRoIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCisgICAgICAgIC8v
IFRoZSBsaW5lIGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYXMgZm9sbG93czoKKyAgICAgICAg
Ly8gMS4gU3RyZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUgbm9uLWxpbmUtYm94IHJlbGF0aXZl
IGFsaWduZWQgaW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5kIGJvdHRvbSB2YWx1ZXMuCisgICAg
ICAgIC8vIDIuIENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBhbGlnbmVkIGlubGluZSBi
b3hlcyAodG9wLCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCByb29tIGFuZCBzdHJldGNoIHRoZSBs
aW5lIGJveCBmdXJ0aGVyIGlmIG5lZWRlZC4KKyAgICAgICAgYXV0byBsaW5lQm94TG9naWNhbEhl
aWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tIC0gbWluaW11bUxvZ2ljYWxUb3A7CiAgICAgICAg
IGZvciAoYXV0byogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94UmVsYXRp
dmVJbmxpbmVMZXZlbEJveGVzKSB7CiAgICAgICAgICAgICBpZiAoIXF1aXJrcy5zaG91bGRJbmxp
bmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICpsaW5lQm94UmVsYXRpdmVJbmxpbmVM
ZXZlbEJveCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBsaW5lQm94
TG9naWNhbEhlaWdodCA9IHN0ZDo6bWF4KGxpbmVCb3hMb2dpY2FsSGVpZ2h0LCBsaW5lQm94UmVs
YXRpdmVJbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkpOwogICAgICAgICB9
CisgICAgICAgIGxpbmVCb3guc2V0TG9naWNhbEhlaWdodChsaW5lQm94TG9naWNhbEhlaWdodCk7
CiAgICAgfTsKICAgICBjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQoKTsKIAotICAgIGF1dG8g
YWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0gewotICAgICAgICAvLyBG
SVhNRTogQWRkIHN1cHBvcnQgZm9yIGNhc2VzIHdoZW4gdGhlIHN0cmV0Y2hpbmcgaW5saW5lIGJv
eGVzIGFyZSBub3QgYmFzZWxpbmUgYWxpZ25lZC4KLSAgICAgICAgYXV0byByb290SW5saW5lQm94
TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lIC0g
cm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgYXV0byBjb21wdXRlUm9v
dElubGluZUJveFZlcnRpY2FsUG9zaXRpb24gPSBbJl0geworICAgICAgICBIYXNoTWFwPExpbmVC
b3g6OklubGluZUxldmVsQm94KiwgSW5saW5lTGF5b3V0VW5pdD4gaW5saW5lTGV2ZWxCb3hBYnNv
bHV0ZUJhc2VsaW5lT2Zmc2V0TWFwOworICAgICAgICBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFz
ZWxpbmVPZmZzZXRNYXAuYWRkKCZyb290SW5saW5lQm94LCBJbmxpbmVMYXlvdXRVbml0IHsgfSk7
CisKKyAgICAgICAgYXV0byBtYXhpbXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGlu
ZSA9IHJvb3RJbmxpbmVCb3guaXNFbXB0eSgpID8gSW5saW5lTGF5b3V0VW5pdCgpIDogcm9vdElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisKKyAgICAgICAgZm9yIChhdXRvJiBpbmxp
bmVMZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgeworICAgICAg
ICAgICAgYXV0byBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07
CisgICAgICAgICAgICBpZiAoIWlubGluZUxldmVsQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGln
bm1lbnQoKSkgeworICAgICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVs
Qm94LT5sYXlvdXRCb3goKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3gg
PSBsaW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7
CisgICAgICAgICAgICAgICAgYXV0byBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IElubGluZUxheW91dFVuaXQgeyB9OworCisgICAgICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVM
ZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpCYXNlbGluZToKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0g
aW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IChpbmxp
bmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94
LnN0eWxlKCkuZm9udE1ldHJpY3MoKS54SGVpZ2h0KCkgLyAyKTsKKyAgICAgICAgICAgICAgICAg
ICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJv
bVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNl
IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAgICAgICAgICAgICAgICAgIGF1
dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDI7CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5l
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNl
bGluZSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVM
ZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byB2ZXJ0aWNhbEFsaWdu
T2Zmc2V0ID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52ZXJ0aWNhbEFsaWduTGVuZ3RoKCks
IHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKTsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBs
b2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gdmVydGljYWxBbGlnbk9mZnNldCAr
IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKKyAgICAgICAgICAgICAg
ICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0
RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBj
YXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6CisgICAgICAgICAgICAgICAgICAgIGJhc2VsaW5l
T2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBp
bmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7Cisg
ICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9tOgorICAgICAgICAg
ICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVs
Qm94LT5kZXNjZW50KCkudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkpIC0gKnBhcmVudElubGlu
ZUJveC5kZXNjZW50KCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAg
ICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURf
WUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gaW5saW5lTGV2ZWxCb3hBYnNv
bHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmdldCgmcGFyZW50SW5saW5lQm94KSArIGJhc2VsaW5lT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAg
ICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAg
ICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDogeworICAgICAgICAgICAgICAgICAgICBh
YnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ID0gcm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2Nl
bnQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpCb3R0b206IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVCYXNl
bGluZU9mZnNldCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gcm9v
dElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5kZXNjZW50OworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAg
ICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAgICAgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAg
ICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0TWFwLmFkZChpbmxpbmVM
ZXZlbEJveC5nZXQoKSwgYWJzb2x1dGVCYXNlbGluZU9mZnNldCk7CisgICAgICAgICAgICBhdXRv
IGFmZmVjdHNSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IHF1aXJrcy5zaG91bGRJbmxp
bmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCk7CisgICAg
ICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKQorICAgICAg
ICAgICAgICAgIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3Rk
OjptYXgobWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUsIGFic29sdXRl
QmFzZWxpbmVPZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKSk7CisgICAgICAgIH0K
KyAgICAgICAgYXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRG
cm9tUm9vdElubGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgpOwogICAg
ICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExvZ2ljYWxUb3Ap
OwogICAgIH07Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKKyAg
ICBjb21wdXRlUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKIAotICAgIGF1dG8gYWxp
Z25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKLSAgICAgICAgZm9yIChh
dXRvKiBpbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsK
KyAgICBhdXRvIGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsmXSB7CisgICAgICAgIGZvciAoYXV0
byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsK
ICAgICAgICAgICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3go
KTsKLSAgICAgICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1lbnQgPSBsYXlvdXRCb3guc3R5bGUo
KS52ZXJ0aWNhbEFsaWduKCk7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBs
aW5lQm94LmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CiAg
ICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICAg
ICAgICAgIGF1dG8gcm9vdElubGluZUJveE9mZnNldCA9IElubGluZUxheW91dFVuaXQgeyB9Owot
ICAgICAgICAgICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkgeworICAgICAgICAgICAgc3dp
dGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICBjYXNl
IFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBw
YXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOwor
ICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpN
aWRkbGU6IHsKKyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBwYXJlbnRJ
bmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxl
OiB7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lID0gaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDI7CisgICAgICAgICAgICAg
ICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAg
ICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7CisgICAgICAg
ICAgICAgICAgYXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0
eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpOwor
ICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IHZlcnRpY2FsQWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpOwor
ICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAt
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgKHRleHQpdG9wL2Jv
dHRvbSBhbGlnbiB0aGVpciBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpUZXh0VG9wOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZl
bEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246
OlRleHRCb3R0b206CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJv
eC5sb2dpY2FsSGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuZGVzY2Vu
dCAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dpY2Fs
IHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94LgorICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50
IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICAgICAgICAgICAgICBs
b2dpY2FsVG9wID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0
Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgcm9vdElubGluZUJveE9mZnNldCA9
IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAtIGlubGluZUJveFJlbGF0
aXZlTG9naWNhbEhlaWdodDsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dp
Y2FsIHRvcCBpcyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94LgorICAgICAg
ICAgICAgICAgIGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5l
KCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAg
ICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC0+c2V0TG9n
aWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlmIChyb290SW5saW5lQm94T2Zmc2V0
ID4gMCkKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElu
bGluZUJveC5sb2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94T2Zmc2V0KTsKICAgICAgICAgfQog
ICAgIH07Ci0gICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKCk7Ci0gICAg
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKKyAgICBhbGln
bklubGluZUxldmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4
dDo6R2VvbWV0cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGlu
ZUNvbnRlbnQmIGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0
L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlv
dXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBkMjJhZGI2NjZlZjI2
ZWRlMzA4ZjJmZWI1ZGFiM2Q3NTFiYWJhZWQ5Li5lZGRjZDQwZDdjNzcyMGMwODlmNjFmY2ExMDhl
ZDEwMTJlMDUxOTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5s
aW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcApAQCAtODYsNyArODYsNyBAQCBJbmxpbmVS
ZWN0IExpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lOjpSdW4mIHJ1bikg
Y29uc3QKICAgICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKICAg
ICBhdXRvKiBwYXJlbnRJbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gocnVu
LmxheW91dEJveCgpLnBhcmVudCgpKTsKICAgICBBU1NFUlQocGFyZW50SW5saW5lQm94LT5pc0lu
bGluZUJveCgpKTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+Zm9u
dE1ldHJpY3MoKTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+c3R5
bGUoKS5mb250TWV0cmljcygpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElubGlu
ZUJveC0+bG9naWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9udE1l
dHJpY3MuYXNjZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9IG1fcm9vdElu
bGluZUJveC5nZXQoKSAmJiAhcGFyZW50SW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGln
bm1lbnQoKSkgewpAQCAtMTAzLDExICsxMDMsMTIgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dp
Y2FsUmVjdEZvcklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAg
IGF1dG8qIGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gp
OwogICAgIGF1dG8gaW5saW5lQm94TG9naWNhbFJlY3QgPSBpbmxpbmVCb3gtPmxvZ2ljYWxSZWN0
KCk7CiAgICAgYXV0byBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgPSBpbmxpbmVCb3gtPmxv
Z2ljYWxUb3AoKTsKLQotICAgIHdoaWxlIChpbmxpbmVCb3ggIT0gbV9yb290SW5saW5lQm94Lmdl
dCgpICYmICFpbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7Ci0gICAg
ICAgIGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxh
eW91dEJveCgpLnBhcmVudCgpKTsKLSAgICAgICAgQVNTRVJUKGlubGluZUJveC0+aXNJbmxpbmVC
b3goKSk7Ci0gICAgICAgIGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCArPSBpbmxpbmVCb3gt
PmxvZ2ljYWxUb3AoKTsKKyAgICBpZiAoIWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxp
Z25tZW50KCkpIHsKKyAgICAgICAgd2hpbGUgKGlubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3gu
Z2V0KCkgJiYgIWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKKyAg
ICAgICAgICAgIGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVC
b3gtPmxheW91dEJveCgpLnBhcmVudCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVCb3gt
PmlzSW5saW5lQm94KCkpOworICAgICAgICAgICAgaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9w
ICs9IGlubGluZUJveC0+bG9naWNhbFRvcCgpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVy
biB7IGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCwgaW5saW5lQm94TG9naWNhbFJlY3QubGVm
dCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC5o
ZWlnaHQoKSB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJveC5oCmluZGV4IGVhZWYyMjgwN2JlYjJlM2RkMWViZGZmZTUx
M2ZmOTA4NjkyNmU1MDkuLmJjNjRlN2Y5OTZhNTBiNzRiOTJkMTQwZDAyYWUwMDU0YjBlZWRkMjYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUxpbmVCb3guaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQm94LmgKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgICAgICBib29sIGlz
RW1wdHkoKSBjb25zdCB7IHJldHVybiBtX2lzRW1wdHk7IH0KICAgICAgICAgdm9pZCBzZXRJc05v
bkVtcHR5KCkgeyBtX2lzRW1wdHkgPSBmYWxzZTsgfQogCi0gICAgICAgIGNvbnN0IEZvbnRNZXRy
aWNzJiBmb250TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCkuZm9u
dE1ldHJpY3MoKTsgfQogICAgICAgICBWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25z
dCB7IHJldHVybiBsYXlvdXRCb3goKS5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsgfQogICAgICAg
ICBjb25zdCBCb3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQor
ICAgICAgICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91
dEJveC0+c3R5bGUoKTsgfQogCiAgICAgICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJl
dHVybiBtX3R5cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IG1fdHlwZSA9PSBUeXBlOjpSb290SW5s
aW5lQm94OyB9CiAgICAgICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4g
bV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0K
</data>
<flag name="commit-queue"
          id="429280"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412794</attachid>
            <date>2020-10-30 13:45:28 -0700</date>
            <delta_ts>2020-10-30 17:04:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218397-20201030134527.patch</filename>
            <type>text/plain</type>
            <size>29264</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiYzM5NTU5MTg1ODk4
ZDFkODZlOWQ4Yjc0OGEzMTUyYWZkOTA2ZC4uYjg0MjM0NmExZTRhNzcxYjFiYjBmZmNjZWQ5Yjdj
YzIyYjlmYzQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEwLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBTcGxpdCBp
bmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBwcm9jZXNzIGludG8gbXVsdGlwbGUgcGhhc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzOTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmxpbmUgbGV2
ZWwgYm94IGFsaWdubWVudCBpbnNpZGUgdGhlIGxpbmUgYm94IGlzIGRlc2NyaWJlZCBhdCBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWxheW91dC4KKyAgICAgICAgVGhl
IGFsaWdubWVudCBwcm9jZXNzIGludm9sdmVzIDMgZGlzdGluY3Qgc3RlcHM6CisgICAgICAgIDEu
IENvbXB1dGluZyB0aGUgbGluZSBib3gncyBsb2dpY2FsIGhlaWdodC4gVGhpcyBzdGVwIHNvbGVs
eSB1c2VzIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IG9mIHRoZSBpbmxpbmUgbGV2ZWwgYm94
ZXMuCisgICAgICAgIDIuIEZpbmRpbmcgdGhlIHJvb3QgaW5saW5lIGJveCB2ZXJ0aWNhbCBwb3Np
dGlvbi4gVGhpcyBzdGVwIGlzIHNvbWV3aGF0IHNpbWlsYXIgdG8gdGhlIGZpbmFsLCBhbGlnbm1l
bnQgcGhhc2UgYnV0IGluc3RlYWQgb2YKKyAgICAgICAgdGhlIGxvZ2ljYWwgdG9wLCBoZXJlIHdl
IGNvbXB1dGUgdGhlIGJhc2VsaW5lIG9mZnNldHMuIEl0IGhlbHBzIHRvIGZpZ3VyZSBvdXQgdGhl
IHJvb3QgaW5saW5lIGJveCdzIGJhc2VsaW5lIHBvc2l0aW5nIGluc2lkZSB0aGUgbGluZSBib3gu
ICAKKyAgICAgICAgMy4gQWxpZ25pbmcgdGhlIGlubGluZSBsZXZlbCBib3hlcyBieSBjb21wdXRp
bmcgdGhlaXIgbG9naWNhbCB0b3AgcG9zaXRpb24uCisKKyAgICAgICAgVGhlc2UgMyBzdGVwcyBh
cmUgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxvd2luZyAzIGZ1bmN0aW9uczogCisgICAgICAgIDEu
IGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpCisgICAgICAgIDIuIGNvbXB1dGVSb290SW5s
aW5lQm94VmVydGljYWxQb3NpdGlvbigpCisgICAgICAgIDMuIGFsaWduSW5saW5lTGV2ZWxCb3hl
cygpCisgICAgICAgIFdoaWxlIHNvbWUgb2YgdGhlIGNvZGUgaW4gdGhlc2UgZnVuY3Rpb25zIG1h
eSBsb29rIHJlZHVuZGFudCwgdGhleSB3b3JrIHdpdGggZGlmZmVyZW50IHR5cGUgb2YgZ2VvbWV0
cmllcyAobGF5b3V0IGJvdW5kcyB2cy4gbm9ybWFsIGFzY2VudC9kZXNjZW50L2xvZ2ljYWwgaGVp
Z2h0KS4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNW
ZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpm
b250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMTAtMjkgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gSW1wbGVtZW50
IG91dHB1dExpbmVUcmVlQW5kTWFyayBmb3IgSUZDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBiZjkxZGYwMGFjNDY4MmJjYjA3NjZhMjhk
M2RlMzZiZDhmZTk5NjUuLjcxNjQ1MmM0MDY4ZTMwMWJkYjQzY2EwNzY3MzJjMjljNzlhMDJlNzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEdl
b21ldHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6OklubGluZUxldmVsQm94JikgY29uc3Q7CiAgICAg
dm9pZCBjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmLCBjb25zdCBMaW5lOjpSdW5M
aXN0Jik7Ci0gICAgdm9pZCBhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0
ZUxpbmVCb3hIZWlnaHQoTGluZUJveCYpOworICAgIHZvaWQgY29tcHV0ZUxpbmVCb3hIZWlnaHRB
bmRhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExpbmVCb3gmKTsKIAogICAgIGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3RCb3go
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQpAQCAtMTYyLDE3
ICsxNjIsMjEgQEAgTGluZUJveCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxk
ZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCkKICAgICBpZiAoYXV0byBob3Jpem9udGFsQWxp
Z25tZW50T2Zmc2V0ID0gTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJ1bnMsIHJv
b3RCb3goKS5zdHlsZSgpLnRleHRBbGlnbigpLCBsaW5lTG9naWNhbFdpZHRoLCBjb250ZW50TG9n
aWNhbFdpZHRoLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpKQogICAg
ICAgICBsaW5lQm94LnNldEhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKmhvcml6b250YWxBbGln
bm1lbnRPZmZzZXQpOwogICAgIGNvbnN0cnVjdElubGluZUxldmVsQm94ZXMobGluZUJveCwgcnVu
cyk7Ci0gICAgYWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94
SGVpZ2h0KGxpbmVCb3gpOworICAgIGNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVM
ZXZlbEJveGVzVmVydGljYWxseShsaW5lQm94KTsKICAgICByZXR1cm4gbGluZUJveDsKIH0KIAog
dm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJl
YWtCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5mb250TWV0
cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guc3R5bGUoKS5m
b250TWV0cmljcygpOwogICAgIElubGluZUxheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3Mu
YXNjZW50KCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVz
Y2VudCgpOwogICAgIGF1dG8gbG9naWNhbEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAg
Ly8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9z
aXRpb25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkp
OworICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5s
aW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJ
WE1FOiBBZGp1c3QgbGF5b3V0IGJvdW5kcyB3aXRoIGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNh
YmxlLgogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUo
KTsKQEAgLTE5MiwxNCArMTk2LDggQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxH
ZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAg
YXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAgICAgICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwog
ICAgIH0KLSAgICAvLyBXZSBuZWVkIHRoaXMgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3Jh
bCBwb3NpdGlvbmluZy4KLSAgICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50
ID0gY2VpbChkZXNjZW50KTsKLQotICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhM
aW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0p
OwotICAgIGlubGluZUxldmVsQm94LnNldEJhc2VsaW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2
ZWxCb3guc2V0RGVzY2VudChkZXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2Fs
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRj
aCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94
LnNldExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsg
Zmxvb3JmKGFzY2VudCksIGNlaWwoZGVzY2VudCkgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGlu
ZTo6UnVuTGlzdCYgcnVucykKQEAgLTI5NiwyNyArMjk0LDMyIEBAIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGlu
ZTo6UnVuCiAgICAgfQogfQogCi12b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVs
Qm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZUJveCYgbGluZUJveCkK
K3ZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVM
ZXZlbEJveGVzVmVydGljYWxseShMaW5lQm94JiBsaW5lQm94KQogewogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gKHBhcnRpYWxseSkgaW1wbGVtZW50czoKICAgICAvLyAyLjIuIExheW91dCBXaXRoaW4g
TGluZSBCb3hlcwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xp
bmUtbGF5b3V0CisgICAgLy8gMS4gQ29tcHV0ZSB0aGUgbGluZSBib3ggaGVpZ2h0IHVzaW5nIHRo
ZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5LiBUaGlzIGhlaWdodCBjb21wdXRhdGlvbiBzdHJpY3Rs
eSB1c2VzIGxheW91dCBib3VuZHMgYW5kIG5vdCBub3JtYWwgaW5saW5lIGxldmVsIGJveCBnZW9t
ZXRyaWVzLgorICAgIC8vIDIuIENvbXB1dGUgdGhlIGJhc2VsaW5lL2xvZ2ljYWwgdG9wIHBvc2l0
aW9uIG9mIHRoZSByb290IGlubGluZSBib3guIEFsaWduZWQgYm94ZXMgcHVzaCB0aGUgcm9vdCBp
bmxpbmUgYm94IGFyb3VuZCBpbnNpZGUgdGhlIGxpbmUgYm94LgorICAgIC8vIDMuIEZpbmFsbHkg
YWxpZ24gdGhlIGlubGluZSBsZXZlbCBib3hlcyB1c2luZyAobW9zdGx5KSBub3JtYWwgaW5saW5l
IGxldmVsIGJveCBnZW9tZXRyaWVzLgogICAgIGF1dG8gcXVpcmtzID0gZm9ybWF0dGluZ0NvbnRl
eHQoKS5xdWlya3MoKTsKLSAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqPiBsaW5l
Qm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOwotICAgIHN0cnVjdCBBYnNvbHV0ZUdlb21ldHJ5
IHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07Ci0gICAgICAgIElubGluZUxh
eW91dFVuaXQgYm90dG9tIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5l
T2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSB7IDAgfTsKLSAgICAgICAgY29uc3QgTGlu
ZUJveDo6SW5saW5lTGV2ZWxCb3gqIGlubGluZUxldmVsQm94IHsgbnVsbHB0ciB9OwotICAgIH07
Ci0gICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCosIEFic29sdXRlR2VvbWV0cnk+
IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcDsKICAgICBhdXRvJiByb290SW5saW5l
Qm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7Ci0gICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0
ZUdlb21ldHJ5TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVHZW9tZXRyeSB7IHsgfSwg
cm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSwgeyB9LCAmcm9vdElubGluZUJv
eCB9KTsKLSAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5l
ID0gcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiByb290SW5s
aW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAotICAgIGF1dG8gYWxpZ25JbmxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHBy
b3BlciBzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBpbmxpbmUgYm94IHdpdGggbGluZSBib3gg
cmVsYXRpdmUgYWxpZ25tZW50IGhhcyBhIGNoaWxkIGlubGluZSBib3gKLSAgICAgICAgLy8gd2l0
aCBub24tbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50LgorICAgIGF1dG8gY29tcHV0ZUxpbmVC
b3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKKyAgICAgICAgVmVjdG9yPExpbmVCb3g6OklubGluZUxl
dmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlczsKKyAgICAgICAgLy8gTGlu
ZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBsYXlvdXQgYm91bmRzIG9m
IHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVpciBsb2dpY2FsIChhc2NlbnQvZGVzY2VudCkg
ZGltZW5zaW9ucy4KKyAgICAgICAgc3RydWN0IEFic29sdXRlVG9wQW5kQm90dG9tIHsKKyAgICAg
ICAgICAgIElubGluZUxheW91dFVuaXQgdG9wIHsgMCB9OworICAgICAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBib3R0b20geyAwIH07CisgICAgICAgIH07CisgICAgICAgIEhhc2hNYXA8TGluZUJv
eDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKKworICAgICAgICBhdXRvIHJvb3RBYnNvbHV0ZVRvcEFu
ZEJvdHRvbSA9IEFic29sdXRlVG9wQW5kQm90dG9tIHsgeyB9LCByb290SW5saW5lQm94LmlzRW1w
dHkoKSA/IElubGluZUxheW91dFVuaXQoKSA6IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCkgfTsKKyAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1h
cC5hZGQoJnJvb3RJbmxpbmVCb3gsIHJvb3RBYnNvbHV0ZVRvcEFuZEJvdHRvbSk7CisKKyAgICAg
ICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IHJvb3RBYnNvbHV0ZVRvcEFuZEJvdHRvbS50b3A7
CisgICAgICAgIGF1dG8gbWF4aW11bUxvZ2ljYWxCb3R0b20gPSByb290QWJzb2x1dGVUb3BBbmRC
b3R0b20uYm90dG9tOworCiAgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5l
Qm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChpbmxp
bmVMZXZlbEJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKQEAgLTMyNCwxMjQg
KzMyNywxOTAgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6YWxpZ25JbmxpbmVMZXZlbEJveGVzVmVy
dGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KExpbmUKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9
IGxpbmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsK
KyAgICAgICAgICAgIC8vIExvZ2ljYWwgdG9wIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgaW5s
aW5lIGJveCdzIGxheW91dCBib3VuZHMuCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBs
b2dpY2FsIHRvcCBpcyBub3QgdGhlIGZpbmFsIGxvZ2ljYWwgdG9wIG9mIHRoZSBpbmxpbmUgbGV2
ZWwgYm94LgorICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbG9naWNhbCB0b3AgaW4gdGhlIGNv
bnRleHQgb2YgdGhlIGxheW91dCBib3VuZHMgZ2VvbWV0cnkgd2hpY2ggbWF5IGJlIHZlcnkgZGlm
ZmVyZW50IGZyb20gdGhlIGlubGluZSBib3gncyBub3JtYWwgZ2VvbWV0cnkuCiAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAgIGF1
dG8gYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBJbmxpbmVMYXlvdXRVbml0IHsg
fTsKICAgICAgICAgICAgIHN3aXRjaCAoaW5saW5lTGV2ZWxCb3gtPnZlcnRpY2FsQWxpZ24oKSkg
ewotICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKLSAgICAgICAgICAg
ICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBpbmxpbmVMZXZl
bEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0geyB9OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOiB7Ci0gICAgICAgICAgICAgICAg
Ly8gTm90ZSB0aGF0IFRleHRUb3AgYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1l
dHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgdG9wLgotICAgICAg
ICAgICAgICAgIGF1dG8gcGFyZW50QXNjZW50ID0gcGFyZW50SW5saW5lQm94LmZvbnRNZXRyaWNz
KCkuYXNjZW50KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2Fs
VG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIHBhcmVudEFzY2Vu
dDsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94TG9naWNhbFRv
cDsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHBh
cmVudEFzY2VudCAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlRleHRCb3R0b206IHsKLSAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgVGV4
dEJvdHRvbSBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0cmljcyBib3R0b20g
KGRlc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgYm90dG9tLgotICAgICAgICAgICAg
ICAgIGF1dG8mIHBhcmVudEZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LmZvbnRNZXRyaWNz
KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMgPSBw
YXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJl
bnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmhl
aWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmRlc2NlbnQgKyBwYXJlbnRGb250
TWV0cmljcy5kZXNjZW50KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBsYXlvdXRCb3VuZHMgPSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRv
cCA9IHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gLSBsYXlvdXRCb3VuZHMuaGVpZ2h0KCk7
Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsYXlv
dXRCb3VuZHMuZGVzY2VudCAtIHBhcmVudEZvbnRNZXRyaWNzLmRlc2NlbnQoKTsKKyAgICAgICAg
ICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKKyAgICAgICAgICAgICAgICBhdXRv
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7Ci0gICAgICAgICAgICAgICAgYXV0
byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5mb250TWV0cmljcygp
LnhIZWlnaHQoKSAvIDI7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGlu
ZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKLSAg
ICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuYXNjZW50OworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIg
KyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDI7Cisg
ICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMo
KS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpCYXNlbGluZU1pZGRsZTogewogICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5o
ZWlnaHQoKSAvIDI7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJv
eC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKLSAgICAg
ICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
YXNjZW50OworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
VmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7Ci0gICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBs
YXlvdXRCb3guc3R5bGUoKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUxl
dmVsQm94LT5zdHlsZSgpOwogICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUudmVydGljYWxBbGln
bkxlbmd0aCgpLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSkgKyBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBh
cmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNl
bGluZTsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDogeworICAgICAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCB0ZXh0LXRvcCBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0
cmljcyB0b3AgKGFzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyB0b3AuCisgICAgICAg
ICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2Nl
bnQgLSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRv
bTogeworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0ZXh0LWJvdHRvbSBhbGlnbnMgd2l0
aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0cmljcyBib3R0b20gKGRlc2NlbnQpIGFuZCBub3Qg
dGhlIGxheW91dCBib3VuZHMgYm90dG9tLgorICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5s
aW5lQm94TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpOworICAg
ICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElu
bGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5k
cy5kZXNjZW50ICsgcGFyZW50SW5saW5lQm94LmRlc2NlbnQoKS52YWx1ZU9yKElubGluZUxheW91
dFVuaXQoKSk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveExv
Z2ljYWxCb3R0b20gLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmxpbmVMZXZlbEJv
eC0+c2V0TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGF1dG8gcGFyZW50SW5s
aW5lQm94QWJzb2x1dGVHZW9tZXRyeSA9IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1h
cC5nZXQoJnBhcmVudElubGluZUJveCk7Ci0gICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkudG9wICsgbG9naWNhbFRvcDsK
KyAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94QWJzb2x1dGVUb3BBbmRCb3R0b20gPSBp
bmxpbmVMZXZlbEJveEFic29sdXRlVG9wQW5kQm90dG9tTWFwLmdldCgmcGFyZW50SW5saW5lQm94
KTsKKyAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVMb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94
QWJzb2x1dGVUb3BBbmRCb3R0b20udG9wICsgbG9naWNhbFRvcDsKICAgICAgICAgICAgIGF1dG8g
YWJzb2x1dGVMb2dpY2FsQm90dG9tID0gYWJzb2x1dGVMb2dpY2FsVG9wICsgaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwotICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUJh
c2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHBhcmVudElubGluZUJveEFi
c29sdXRlR2VvbWV0cnkuYmFzZWxpbmVPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lICsg
YmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICBpbmxpbmVMZXZl
bEJveEFic29sdXRlR2VvbWV0cnlNYXAuYWRkKGlubGluZUxldmVsQm94LmdldCgpLCBBYnNvbHV0
ZUdlb21ldHJ5IHsgYWJzb2x1dGVMb2dpY2FsVG9wLCBhYnNvbHV0ZUxvZ2ljYWxCb3R0b20sIGFi
c29sdXRlQmFzZWxpbmVPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lLCBpbmxpbmVMZXZl
bEJveC5nZXQoKSB9KTsKLQotICAgICAgICAgICAgYXV0byBhZmZlY3RzUm9vdElubGluZUJveFZl
cnRpY2FsUG9zaXRpb24gPSBxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJv
eChsaW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpOwotICAgICAgICAgICAgaWYgKGFmZmVjdHNSb290
SW5saW5lQm94VmVydGljYWxQb3NpdGlvbikKLSAgICAgICAgICAgICAgICBtYXhpbXVtVG9wT2Zm
c2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHN0ZDo6bWF4KG1heGltdW1Ub3BPZmZzZXRG
cm9tUm9vdElubGluZUJveEJhc2VsaW5lLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJ
bmxpbmVCb3hCYXNlbGluZSArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQp
OwotICAgICAgICB9Ci0gICAgfTsKLSAgICBhbGlnbklubGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3hlcygpOwotCi0gICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IElubGluZUxheW91
dFVuaXQgeyB9OwotICAgIGF1dG8gaW5saW5lQm94UmVsYXRpdmVMb2dpY2FsSGVpZ2h0ID0gSW5s
aW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgYXV0byBjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQg
PSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGxheW91dCBib3VuZHMg
YmFzZWQgbGluZSBib3ggaGVpZ2h0LgotICAgICAgICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9wID0g
T3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwotICAgICAgICBhdXRvIG1heGltdW1Mb2dp
Y2FsQm90dG9tID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwotICAgICAgICBmb3Ig
KGF1dG8gYWJzb2x1dGVHZW9tZXRyeSA6IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1h
cC52YWx1ZXMoKSkgewotICAgICAgICAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3ggPSAqYWJzb2x1
dGVHZW9tZXRyeS5pbmxpbmVMZXZlbEJveDsKLSAgICAgICAgICAgIGlmICghcXVpcmtzLnNob3Vs
ZElubGluZUxldmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgaW5saW5lTGV2ZWxCb3gpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3Ag
PSBzdGQ6Om1pbihtaW5pbXVtTG9naWNhbFRvcC52YWx1ZU9yKGFic29sdXRlR2VvbWV0cnkudG9w
KSwgYWJzb2x1dGVHZW9tZXRyeS50b3ApOwotICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0
b20gPSBzdGQ6Om1heChtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZU9yKGFic29sdXRlR2VvbWV0
cnkuYm90dG9tKSwgYWJzb2x1dGVHZW9tZXRyeS5ib3R0b20pOworICAgICAgICAgICAgaW5saW5l
TGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5hZGQoaW5saW5lTGV2ZWxCb3guZ2V0KCks
IEFic29sdXRlVG9wQW5kQm90dG9tIHsgYWJzb2x1dGVMb2dpY2FsVG9wLCBhYnNvbHV0ZUxvZ2lj
YWxCb3R0b20gfSk7CisgICAgICAgICAgICAvLyBTdHJldGNoIHRoZSBtaW4vbWF4IGFic29sdXRl
IHZhbHVlcyBpZiBhcHBsaWNhYmxlLgorICAgICAgICAgICAgaWYgKHF1aXJrcy5zaG91bGRJbmxp
bmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCkpIHsKKyAg
ICAgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IHN0ZDo6bWluKG1pbmltdW1Mb2dpY2Fs
VG9wLCBhYnNvbHV0ZUxvZ2ljYWxUb3ApOworICAgICAgICAgICAgICAgIG1heGltdW1Mb2dpY2Fs
Qm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20sIGFic29sdXRlTG9naWNhbEJv
dHRvbSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaW5saW5lQm94UmVsYXRp
dmVMb2dpY2FsSGVpZ2h0ID0gbWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVPcihJbmxpbmVMYXlv
dXRVbml0KCkpIC0gbWluaW11bUxvZ2ljYWxUb3AudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkp
OwotICAgICAgICBsaW5lQm94TG9naWNhbEhlaWdodCA9IGlubGluZUJveFJlbGF0aXZlTG9naWNh
bEhlaWdodDsKLSAgICAgICAgLy8gTm93IHN0cmV0Y2ggdGhlIGxpbmUgYm94IHdpdGggdGhlIGxp
bmUgYm94IHJlbGF0aXZlIGlubGluZSBsZXZlbCBib3hlcy4KKyAgICAgICAgLy8gVGhlIGxpbmUg
Ym94IGhlaWdodCBjb21wdXRhdGlvbiBpcyBhcyBmb2xsb3dzOgorICAgICAgICAvLyAxLiBTdHJl
dGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBub24tbGluZS1ib3ggcmVsYXRpdmUgYWxpZ25lZCBp
bmxpbmUgYm94IGFic29sdXRlIHRvcCBhbmQgYm90dG9tIHZhbHVlcy4KKyAgICAgICAgLy8gMi4g
Q2hlY2sgaWYgdGhlIGxpbmUgYm94IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveGVzICh0b3As
IGJvdHRvbSBldGMpIGhhdmUgZW5vdWdoIHJvb20gYW5kIHN0cmV0Y2ggdGhlIGxpbmUgYm94IGZ1
cnRoZXIgaWYgbmVlZGVkLgorICAgICAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gbWF4
aW11bUxvZ2ljYWxCb3R0b20gLSBtaW5pbXVtTG9naWNhbFRvcDsKICAgICAgICAgZm9yIChhdXRv
KiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxl
dmVsQm94ZXMpIHsKICAgICAgICAgICAgIGlmICghcXVpcmtzLnNob3VsZElubGluZUxldmVsQm94
U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94KSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxpbmVCb3hMb2dpY2FsSGVp
Z2h0ID0gc3RkOjptYXgobGluZUJveExvZ2ljYWxIZWlnaHQsIGxpbmVCb3hSZWxhdGl2ZUlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSk7CiAgICAgICAgIH0KKyAgICAgICAg
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKICAgICB9Owog
ICAgIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpOwogCi0gICAgYXV0byBhZGp1c3RSb290
SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgY2FzZXMgd2hlbiB0aGUgc3RyZXRjaGluZyBpbmxpbmUgYm94ZXMgYXJlIG5v
dCBiYXNlbGluZSBhbGlnbmVkLgotICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9w
ID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgLSByb290SW5saW5l
Qm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICBhdXRvIGNvbXB1dGVSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7CisgICAgICAgIEhhc2hNYXA8TGluZUJveDo6SW5saW5l
TGV2ZWxCb3gqLCBJbmxpbmVMYXlvdXRVbml0PiBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxp
bmVPZmZzZXRNYXA7CisgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNl
dE1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIElubGluZUxheW91dFVuaXQgeyB9KTsKKworICAgICAg
ICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gcm9vdElu
bGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiByb290SW5saW5lQm94Lmxh
eW91dEJvdW5kcygpLmFzY2VudDsKKworICAgICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94
IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CisgICAgICAgICAgICBhdXRv
IGFic29sdXRlQmFzZWxpbmVPZmZzZXQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAgICAg
ICAgIGlmICghaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7
CisgICAgICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJveCgpOworICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxpbmVCb3gu
aW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gSW5saW5lTGF5
b3V0VW5pdCB7IH07CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52
ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJh
c2VsaW5lOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNl
bGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZl
bEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICAgICAg
YXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94
LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5m
b250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgICAgICAgICBiYXNlbGlu
ZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFz
ZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2Fs
VG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5k
cygpLmhlaWdodCgpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5s
aW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0
aDogeworICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUxldmVsQm94LT5z
dHlsZSgpOworICAgICAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBm
bG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29t
cHV0ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSB2ZXJ0aWNhbEFsaWduT2Zmc2V0ICsgaW5saW5lTGV2
ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOworICAgICAgICAgICAgICAgICAgICBiYXNl
bGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6VGV4dFRvcDoKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9t
UGFyZW50QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVs
Qm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0b206CisgICAgICAgICAgICAgICAgICAg
IGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmRlc2Nl
bnQoKS52YWx1ZU9yKElubGluZUxheW91dFVuaXQoKSkgLSAqcGFyZW50SW5saW5lQm94LmRlc2Nl
bnQoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgZGVmYXVs
dDoKKyAgICAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKKyAg
ICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgPSBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxp
bmVPZmZzZXRNYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gpICsgYmFzZWxpbmVPZmZzZXRGcm9tUGFy
ZW50QmFzZWxpbmU7CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIHN3aXRj
aCAoaW5saW5lTGV2ZWxCb3gtPnZlcnRpY2FsQWxpZ24oKSkgeworICAgICAgICAgICAgICAgIGNh
c2UgVmVydGljYWxBbGlnbjo6VG9wOiB7CisgICAgICAgICAgICAgICAgICAgIGFic29sdXRlQmFz
ZWxpbmVPZmZzZXQgPSByb290SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIGlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxp
Z246OkJvdHRvbTogeworICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0
ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmRlc2NlbnQgLSByb290SW5saW5lQm94
LmxheW91dEJvdW5kcygpLmRlc2NlbnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAg
ICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgICAgICAgICAgICAgICAgICBi
cmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpbmxp
bmVMZXZlbEJveEFic29sdXRlQmFzZWxpbmVPZmZzZXRNYXAuYWRkKGlubGluZUxldmVsQm94Lmdl
dCgpLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0KTsKKyAgICAgICAgICAgIGF1dG8gYWZmZWN0c1Jv
b3RJbmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uID0gcXVpcmtzLnNob3VsZElubGluZUxldmVsQm94
U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94KTsKKyAgICAgICAgICAgIGlm
IChhZmZlY3RzUm9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24pCisgICAgICAgICAgICAgICAg
bWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgPSBzdGQ6Om1heChtYXhp
bXVtVG9wT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSwgYWJzb2x1dGVCYXNlbGluZU9m
ZnNldCArIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpKTsKKyAgICAgICAgfQorICAgICAgICBh
dXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9wID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5s
aW5lQm94QmFzZWxpbmUgLSByb290SW5saW5lQm94LmJhc2VsaW5lKCk7CiAgICAgICAgIHJvb3RJ
bmxpbmVCb3guc2V0TG9naWNhbFRvcChyb290SW5saW5lQm94TG9naWNhbFRvcCk7CiAgICAgfTsK
LSAgICBhZGp1c3RSb290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpOworICAgIGNvbXB1dGVS
b290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbigpOwogCi0gICAgYXV0byBhbGlnbkxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICBmb3IgKGF1dG8qIGlubGlu
ZUxldmVsQm94IDogbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlcykgeworICAgIGF1dG8g
YWxpZ25JbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKKyAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVM
ZXZlbEJveCA6IGxpbmVCb3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewogICAgICAgICAg
ICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJveCgpOwotICAgICAg
ICAgICAgYXV0byB2ZXJ0aWNhbEFsaWdubWVudCA9IGxheW91dEJveC5zdHlsZSgpLnZlcnRpY2Fs
QWxpZ24oKTsKKyAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxpbmVCb3guaW5s
aW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsKICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgYXV0
byByb290SW5saW5lQm94T2Zmc2V0ID0gSW5saW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgICAgICAg
ICBzd2l0Y2ggKHZlcnRpY2FsQWxpZ25tZW50KSB7CisgICAgICAgICAgICBzd2l0Y2ggKGlubGlu
ZUxldmVsQm94LT52ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxB
bGlnbjo6QmFzZWxpbmU6CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGlu
ZUJveC5iYXNlbGluZSgpIC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Ok1pZGRsZTogewor
ICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IChpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5z
dHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMik7CisgICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmVNaWRkbGU6IHsKKyAgICAg
ICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxp
bmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpIC8gMjsKKyAgICAgICAgICAgICAgICBsb2dpY2Fs
VG9wID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBh
cmVudEJhc2VsaW5lOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKKyAgICAgICAgICAgICAgICBh
dXRvJiBzdHlsZSA9IGlubGluZUxldmVsQm94LT5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1
dG8gdmVydGljYWxBbGlnbk9mZnNldCA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUudmVydGlj
YWxBbGlnbkxlbmd0aCgpLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSk7CisgICAgICAgICAg
ICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gdmVydGljYWxB
bGlnbk9mZnNldCArIGlubGluZUxldmVsQm94LT5sb2dpY2FsSGVpZ2h0KCk7CisgICAgICAgICAg
ICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCAodGV4dCl0b3AvYm90dG9tIGFsaWdu
IHRoZWlyIGxheW91dCBib3VuZHMuCisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRl
eHRUb3A6CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRv
bToKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxvZ2ljYWxI
ZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OlRvcDoKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0g
eyB9OworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljYWwgdG9wIGlzIG5v
dCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3guCisgICAgICAgICAgICAgICAgbG9n
aWNhbFRvcCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBpbmxpbmVM
ZXZlbEJveC0+YmFzZWxpbmUoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9tOgotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3Ag
PSBsaW5lQm94TG9naWNhbEhlaWdodCAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5o
ZWlnaHQoKTsKLSAgICAgICAgICAgICAgICByb290SW5saW5lQm94T2Zmc2V0ID0gaW5saW5lTGV2
ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpIC0gaW5saW5lQm94UmVsYXRpdmVMb2dpY2Fs
SGVpZ2h0OworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxvZ2ljYWwgdG9wIGlz
IG5vdCByZWxhdGl2ZSB0byB0aGUgcGFyZW50IGlubGluZSBib3guCisgICAgICAgICAgICAgICAg
bG9naWNhbFRvcCA9IGxpbmVCb3gubG9naWNhbEhlaWdodCgpIC0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmRlc2NlbnQgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAg
QVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgICAgIH0KICAgICAgICAgICAgIGlubGluZUxldmVsQm94LT5zZXRMb2dpY2FsVG9wKGxv
Z2ljYWxUb3ApOwotICAgICAgICAgICAgaWYgKHJvb3RJbmxpbmVCb3hPZmZzZXQgPiAwKQotICAg
ICAgICAgICAgICAgIHJvb3RJbmxpbmVCb3guc2V0TG9naWNhbFRvcChyb290SW5saW5lQm94Lmxv
Z2ljYWxUb3AoKSArIHJvb3RJbmxpbmVCb3hPZmZzZXQpOwogICAgICAgICB9CiAgICAgfTsKLSAg
ICBhbGlnbkxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMoKTsKLSAgICBsaW5lQm94LnNl
dExvZ2ljYWxIZWlnaHQobGluZUJveExvZ2ljYWxIZWlnaHQpOworICAgIGFsaWduSW5saW5lTGV2
ZWxCb3hlcygpOwogfQogCiBMaW5lQm94IElubGluZUZvcm1hdHRpbmdDb250ZXh0OjpHZW9tZXRy
eTo6bGluZUJveEZvckxpbmVDb250ZW50KGNvbnN0IExpbmVCdWlsZGVyOjpMaW5lQ29udGVudCYg
bGluZUNvbnRlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9y
bWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwCmluZGV4IGQyMmFkYjY2NmVmMjZlZGUzMDhmMmZl
YjVkYWIzZDc1MWJhYmFlZDkuLmVkZGNkNDBkN2M3NzIwYzA4OWY2MWZjYTEwOGVkMTAxMmUwNTE5
NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lu
bGluZUxpbmVCb3guY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0
aW5nL0lubGluZUxpbmVCb3guY3BwCkBAIC04Niw3ICs4Niw3IEBAIElubGluZVJlY3QgTGluZUJv
eDo6bG9naWNhbFJlY3RGb3JUZXh0UnVuKGNvbnN0IExpbmU6OlJ1biYgcnVuKSBjb25zdAogICAg
IEFTU0VSVChydW4uaXNUZXh0KCkgfHwgcnVuLmlzTGluZUJyZWFrKCkpOwogICAgIGF1dG8qIHBh
cmVudElubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChydW4ubGF5b3V0Qm94
KCkucGFyZW50KCkpOwogICAgIEFTU0VSVChwYXJlbnRJbmxpbmVCb3gtPmlzSW5saW5lQm94KCkp
OwotICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LT5mb250TWV0cmljcygp
OworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LT5zdHlsZSgpLmZvbnRN
ZXRyaWNzKCk7CiAgICAgYXV0byBydW5sb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LT5sb2dp
Y2FsVG9wKCkgKyBwYXJlbnRJbmxpbmVCb3gtPmJhc2VsaW5lKCkgLSBmb250TWV0cmljcy5hc2Nl
bnQoKTsKIAogICAgIHdoaWxlIChwYXJlbnRJbmxpbmVCb3ggIT0gbV9yb290SW5saW5lQm94Lmdl
dCgpICYmICFwYXJlbnRJbmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7
CkBAIC0xMDMsMTEgKzEwMywxMiBAQCBJbmxpbmVSZWN0IExpbmVCb3g6OmxvZ2ljYWxSZWN0Rm9y
SW5saW5lTGV2ZWxCb3goY29uc3QgQm94JiBsYXlvdXRCb3gpIGNvbnN0CiAgICAgYXV0byogaW5s
aW5lQm94ID0gJmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveCk7CiAgICAgYXV0
byBpbmxpbmVCb3hMb2dpY2FsUmVjdCA9IGlubGluZUJveC0+bG9naWNhbFJlY3QoKTsKICAgICBh
dXRvIGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCA9IGlubGluZUJveC0+bG9naWNhbFRvcCgp
OwotCi0gICAgd2hpbGUgKGlubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYgIWlu
bGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKLSAgICAgICAgaW5saW5l
Qm94ID0gJmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGlubGluZUJveC0+bGF5b3V0Qm94KCku
cGFyZW50KCkpOwotICAgICAgICBBU1NFUlQoaW5saW5lQm94LT5pc0lubGluZUJveCgpKTsKLSAg
ICAgICAgaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9wICs9IGlubGluZUJveC0+bG9naWNhbFRv
cCgpOworICAgIGlmICghaW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkg
eworICAgICAgICB3aGlsZSAoaW5saW5lQm94ICE9IG1fcm9vdElubGluZUJveC5nZXQoKSAmJiAh
aW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgeworICAgICAgICAgICAg
aW5saW5lQm94ID0gJmlubGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGlubGluZUJveC0+bGF5b3V0
Qm94KCkucGFyZW50KCkpOworICAgICAgICAgICAgQVNTRVJUKGlubGluZUJveC0+aXNJbmxpbmVC
b3goKSk7CisgICAgICAgICAgICBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgKz0gaW5saW5l
Qm94LT5sb2dpY2FsVG9wKCk7CisgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIHsgaW5saW5l
Qm94QWJzb2x1dGVsb2dpY2FsVG9wLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC5sZWZ0KCksIGlubGlu
ZUJveExvZ2ljYWxSZWN0LndpZHRoKCksIGlubGluZUJveExvZ2ljYWxSZWN0LmhlaWdodCgpIH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQm94LmggYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQm94LmgKaW5kZXggZWFlZjIyODA3YmViMmUzZGQxZWJkZmZlNTEzZmY5MDg2OTI2
ZTUwOS4uYmM2NGU3Zjk5NmE1MGI3NGI5MmQxNDBkMDJhZTAwNTRiMGVlZGQyNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcvSW5saW5lTGluZUJveC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVC
b3guaApAQCAtODcsOSArODcsOSBAQCBwdWJsaWM6CiAgICAgICAgIGJvb2wgaXNFbXB0eSgpIGNv
bnN0IHsgcmV0dXJuIG1faXNFbXB0eTsgfQogICAgICAgICB2b2lkIHNldElzTm9uRW1wdHkoKSB7
IG1faXNFbXB0eSA9IGZhbHNlOyB9CiAKLSAgICAgICAgY29uc3QgRm9udE1ldHJpY3MmIGZvbnRN
ZXRyaWNzKCkgY29uc3QgeyByZXR1cm4gbGF5b3V0Qm94KCkuc3R5bGUoKS5mb250TWV0cmljcygp
OyB9CiAgICAgICAgIFZlcnRpY2FsQWxpZ24gdmVydGljYWxBbGlnbigpIGNvbnN0IHsgcmV0dXJu
IGxheW91dEJveCgpLnN0eWxlKCkudmVydGljYWxBbGlnbigpOyB9CiAgICAgICAgIGNvbnN0IEJv
eCYgbGF5b3V0Qm94KCkgY29uc3QgeyByZXR1cm4gKm1fbGF5b3V0Qm94OyB9CisgICAgICAgIGNv
bnN0IFJlbmRlclN0eWxlJiBzdHlsZSgpIGNvbnN0IHsgcmV0dXJuIG1fbGF5b3V0Qm94LT5zdHls
ZSgpOyB9CiAKICAgICAgICAgYm9vbCBpc0lubGluZUJveCgpIGNvbnN0IHsgcmV0dXJuIG1fdHlw
ZSA9PSBUeXBlOjpJbmxpbmVCb3ggfHwgbV90eXBlID09IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0K
ICAgICAgICAgYm9vbCBpc1Jvb3RJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5cGUgPT0g
VHlwZTo6Um9vdElubGluZUJveDsgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412814</attachid>
            <date>2020-10-30 17:04:47 -0700</date>
            <delta_ts>2020-10-30 20:54:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218397-20201030170446.patch</filename>
            <type>text/plain</type>
            <size>29208</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiYzM5NTU5MTg1ODk4
ZDFkODZlOWQ4Yjc0OGEzMTUyYWZkOTA2ZC4uYjg0MjM0NmExZTRhNzcxYjFiYjBmZmNjZWQ5Yjdj
YzIyYjlmYzQyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEwLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBTcGxpdCBp
bmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBwcm9jZXNzIGludG8gbXVsdGlwbGUgcGhhc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzOTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmxpbmUgbGV2
ZWwgYm94IGFsaWdubWVudCBpbnNpZGUgdGhlIGxpbmUgYm94IGlzIGRlc2NyaWJlZCBhdCBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWxheW91dC4KKyAgICAgICAgVGhl
IGFsaWdubWVudCBwcm9jZXNzIGludm9sdmVzIDMgZGlzdGluY3Qgc3RlcHM6CisgICAgICAgIDEu
IENvbXB1dGluZyB0aGUgbGluZSBib3gncyBsb2dpY2FsIGhlaWdodC4gVGhpcyBzdGVwIHNvbGVs
eSB1c2VzIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IG9mIHRoZSBpbmxpbmUgbGV2ZWwgYm94
ZXMuCisgICAgICAgIDIuIEZpbmRpbmcgdGhlIHJvb3QgaW5saW5lIGJveCB2ZXJ0aWNhbCBwb3Np
dGlvbi4gVGhpcyBzdGVwIGlzIHNvbWV3aGF0IHNpbWlsYXIgdG8gdGhlIGZpbmFsLCBhbGlnbm1l
bnQgcGhhc2UgYnV0IGluc3RlYWQgb2YKKyAgICAgICAgdGhlIGxvZ2ljYWwgdG9wLCBoZXJlIHdl
IGNvbXB1dGUgdGhlIGJhc2VsaW5lIG9mZnNldHMuIEl0IGhlbHBzIHRvIGZpZ3VyZSBvdXQgdGhl
IHJvb3QgaW5saW5lIGJveCdzIGJhc2VsaW5lIHBvc2l0aW5nIGluc2lkZSB0aGUgbGluZSBib3gu
ICAKKyAgICAgICAgMy4gQWxpZ25pbmcgdGhlIGlubGluZSBsZXZlbCBib3hlcyBieSBjb21wdXRp
bmcgdGhlaXIgbG9naWNhbCB0b3AgcG9zaXRpb24uCisKKyAgICAgICAgVGhlc2UgMyBzdGVwcyBh
cmUgaW1wbGVtZW50ZWQgYnkgdGhlIGZvbGxvd2luZyAzIGZ1bmN0aW9uczogCisgICAgICAgIDEu
IGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpCisgICAgICAgIDIuIGNvbXB1dGVSb290SW5s
aW5lQm94VmVydGljYWxQb3NpdGlvbigpCisgICAgICAgIDMuIGFsaWduSW5saW5lTGV2ZWxCb3hl
cygpCisgICAgICAgIFdoaWxlIHNvbWUgb2YgdGhlIGNvZGUgaW4gdGhlc2UgZnVuY3Rpb25zIG1h
eSBsb29rIHJlZHVuZGFudCwgdGhleSB3b3JrIHdpdGggZGlmZmVyZW50IHR5cGUgb2YgZ2VvbWV0
cmllcyAobGF5b3V0IGJvdW5kcyB2cy4gbm9ybWFsIGFzY2VudC9kZXNjZW50L2xvZ2ljYWwgaGVp
Z2h0KS4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94
QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNW
ZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxp
bmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0
OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToK
KyAgICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAg
ICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25z
dCk6CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpm
b250TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMTAtMjkgIFphbGFuIEJ1anRhcyAg
PHphbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gSW1wbGVtZW50
IG91dHB1dExpbmVUcmVlQW5kTWFyayBmb3IgSUZDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1h
dHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBiZjkxZGYwMGFjNDY4MmJjYjA3NjZhMjhk
M2RlMzZiZDhmZTk5NjUuLjJmZDBjZjBkZTVhMDJlYTc1YTRhNDllZGIxMTYzYmE5Y2EyYzY5ZmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGlu
ZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91
dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBA
IC00Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEdl
b21ldHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6OklubGluZUxldmVsQm94JikgY29uc3Q7CiAgICAg
dm9pZCBjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmLCBjb25zdCBMaW5lOjpSdW5M
aXN0Jik7Ci0gICAgdm9pZCBhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0
ZUxpbmVCb3hIZWlnaHQoTGluZUJveCYpOworICAgIHZvaWQgY29tcHV0ZUxpbmVCb3hIZWlnaHRB
bmRhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExpbmVCb3gmKTsKIAogICAgIGNvbnN0
IElubGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3RCb3go
KSBjb25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQpAQCAtMTYyLDE3
ICsxNjIsMjEgQEAgTGluZUJveCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxk
ZXI6OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCkKICAgICBpZiAoYXV0byBob3Jpem9udGFsQWxp
Z25tZW50T2Zmc2V0ID0gTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJ1bnMsIHJv
b3RCb3goKS5zdHlsZSgpLnRleHRBbGlnbigpLCBsaW5lTG9naWNhbFdpZHRoLCBjb250ZW50TG9n
aWNhbFdpZHRoLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpKQogICAg
ICAgICBsaW5lQm94LnNldEhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKmhvcml6b250YWxBbGln
bm1lbnRPZmZzZXQpOwogICAgIGNvbnN0cnVjdElubGluZUxldmVsQm94ZXMobGluZUJveCwgcnVu
cyk7Ci0gICAgYWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94
SGVpZ2h0KGxpbmVCb3gpOworICAgIGNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVM
ZXZlbEJveGVzVmVydGljYWxseShsaW5lQm94KTsKICAgICByZXR1cm4gbGluZUJveDsKIH0KIAog
dm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KGlubGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJl
YWtCb3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5mb250TWV0
cmljcygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guc3R5bGUoKS5m
b250TWV0cmljcygpOwogICAgIElubGluZUxheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3Mu
YXNjZW50KCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVz
Y2VudCgpOwogICAgIGF1dG8gbG9naWNhbEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAg
Ly8gV2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9z
aXRpb25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkp
OworICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5s
aW5lTGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJ
WE1FOiBBZGp1c3QgbGF5b3V0IGJvdW5kcyB3aXRoIGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNh
YmxlLgogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUo
KTsKQEAgLTE5MiwxNCArMTk2LDggQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxH
ZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAg
YXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAgICAgICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwog
ICAgIH0KLSAgICAvLyBXZSBuZWVkIHRoaXMgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3Jh
bCBwb3NpdGlvbmluZy4KLSAgICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50
ID0gY2VpbChkZXNjZW50KTsKLQotICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhM
aW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0p
OwotICAgIGlubGluZUxldmVsQm94LnNldEJhc2VsaW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2
ZWxCb3guc2V0RGVzY2VudChkZXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2Fs
SGVpZ2h0KGxvZ2ljYWxIZWlnaHQpOworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRj
aCBsZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94
LnNldExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsg
Zmxvb3JmKGFzY2VudCksIGNlaWwoZGVzY2VudCkgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGlu
ZTo6UnVuTGlzdCYgcnVucykKQEAgLTI5NiwyNyArMjk0LDMyIEBAIHZvaWQgTGluZUJveEJ1aWxk
ZXI6OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGlu
ZTo6UnVuCiAgICAgfQogfQogCi12b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVs
Qm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZUJveCYgbGluZUJveCkK
K3ZvaWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVM
ZXZlbEJveGVzVmVydGljYWxseShMaW5lQm94JiBsaW5lQm94KQogewogICAgIC8vIFRoaXMgZnVu
Y3Rpb24gKHBhcnRpYWxseSkgaW1wbGVtZW50czoKICAgICAvLyAyLjIuIExheW91dCBXaXRoaW4g
TGluZSBCb3hlcwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xp
bmUtbGF5b3V0CisgICAgLy8gMS4gQ29tcHV0ZSB0aGUgbGluZSBib3ggaGVpZ2h0IHVzaW5nIHRo
ZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5LiBUaGlzIGhlaWdodCBjb21wdXRhdGlvbiBzdHJpY3Rs
eSB1c2VzIGxheW91dCBib3VuZHMgYW5kIG5vdCBub3JtYWwgaW5saW5lIGxldmVsIGJveCBnZW9t
ZXRyaWVzLgorICAgIC8vIDIuIENvbXB1dGUgdGhlIGJhc2VsaW5lL2xvZ2ljYWwgdG9wIHBvc2l0
aW9uIG9mIHRoZSByb290IGlubGluZSBib3guIEFsaWduZWQgYm94ZXMgcHVzaCB0aGUgcm9vdCBp
bmxpbmUgYm94IGFyb3VuZCBpbnNpZGUgdGhlIGxpbmUgYm94LgorICAgIC8vIDMuIEZpbmFsbHkg
YWxpZ24gdGhlIGlubGluZSBsZXZlbCBib3hlcyB1c2luZyAobW9zdGx5KSBub3JtYWwgaW5saW5l
IGxldmVsIGJveCBnZW9tZXRyaWVzLgogICAgIGF1dG8gcXVpcmtzID0gZm9ybWF0dGluZ0NvbnRl
eHQoKS5xdWlya3MoKTsKLSAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqPiBsaW5l
Qm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOwotICAgIHN0cnVjdCBBYnNvbHV0ZUdlb21ldHJ5
IHsKLSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07Ci0gICAgICAgIElubGluZUxh
eW91dFVuaXQgYm90dG9tIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5l
T2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSB7IDAgfTsKLSAgICAgICAgY29uc3QgTGlu
ZUJveDo6SW5saW5lTGV2ZWxCb3gqIGlubGluZUxldmVsQm94IHsgbnVsbHB0ciB9OwotICAgIH07
Ci0gICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCosIEFic29sdXRlR2VvbWV0cnk+
IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcDsKICAgICBhdXRvJiByb290SW5saW5l
Qm94ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7Ci0gICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0
ZUdlb21ldHJ5TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVHZW9tZXRyeSB7IHsgfSwg
cm9vdElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSwgeyB9LCAmcm9vdElubGluZUJv
eCB9KTsKLSAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5l
ID0gcm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiByb290SW5s
aW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAotICAgIGF1dG8gYWxpZ25JbmxpbmVCb3hS
ZWxhdGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHBy
b3BlciBzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBpbmxpbmUgYm94IHdpdGggbGluZSBib3gg
cmVsYXRpdmUgYWxpZ25tZW50IGhhcyBhIGNoaWxkIGlubGluZSBib3gKLSAgICAgICAgLy8gd2l0
aCBub24tbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50LgorICAgIGF1dG8gY29tcHV0ZUxpbmVC
b3hMb2dpY2FsSGVpZ2h0ID0gWyZdIHsKKyAgICAgICAgVmVjdG9yPExpbmVCb3g6OklubGluZUxl
dmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5saW5lTGV2ZWxCb3hlczsKKyAgICAgICAgLy8gTGlu
ZSBib3ggaGVpZ2h0IGNvbXB1dGF0aW9uIGlzIGJhc2VkIG9uIHRoZSBsYXlvdXQgYm91bmRzIG9m
IHRoZSBpbmxpbmUgYm94ZXMgYW5kIG5vdCB0aGVpciBsb2dpY2FsIChhc2NlbnQvZGVzY2VudCkg
ZGltZW5zaW9ucy4KKyAgICAgICAgc3RydWN0IEFic29sdXRlVG9wQW5kQm90dG9tIHsKKyAgICAg
ICAgICAgIElubGluZUxheW91dFVuaXQgdG9wIHsgMCB9OworICAgICAgICAgICAgSW5saW5lTGF5
b3V0VW5pdCBib3R0b20geyAwIH07CisgICAgICAgIH07CisgICAgICAgIEhhc2hNYXA8TGluZUJv
eDo6SW5saW5lTGV2ZWxCb3gqLCBBYnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5lTGV2ZWxCb3hB
YnNvbHV0ZVRvcEFuZEJvdHRvbU1hcDsKKworICAgICAgICBhdXRvIHJvb3RBYnNvbHV0ZVRvcEFu
ZEJvdHRvbSA9IEFic29sdXRlVG9wQW5kQm90dG9tIHsgeyB9LCByb290SW5saW5lQm94LmlzRW1w
dHkoKSA/IElubGluZUxheW91dFVuaXQoKSA6IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCkgfTsKKyAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1h
cC5hZGQoJnJvb3RJbmxpbmVCb3gsIHJvb3RBYnNvbHV0ZVRvcEFuZEJvdHRvbSk7CisKKyAgICAg
ICAgYXV0byBtaW5pbXVtTG9naWNhbFRvcCA9IHJvb3RBYnNvbHV0ZVRvcEFuZEJvdHRvbS50b3A7
CisgICAgICAgIGF1dG8gbWF4aW11bUxvZ2ljYWxCb3R0b20gPSByb290QWJzb2x1dGVUb3BBbmRC
b3R0b20uYm90dG9tOworCiAgICAgICAgIGZvciAoYXV0byYgaW5saW5lTGV2ZWxCb3ggOiBsaW5l
Qm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAgICAgIGF1dG8mIGxheW91
dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKICAgICAgICAgICAgIGlmIChpbmxp
bmVMZXZlbEJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKQEAgLTMyNCwxMjQg
KzMyNywxOTAgQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6YWxpZ25JbmxpbmVMZXZlbEJveGVzVmVy
dGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVpZ2h0KExpbmUKICAgICAgICAgICAgICAgICBjb250
aW51ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9
IGxpbmVCb3guaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsK
KyAgICAgICAgICAgIC8vIExvZ2ljYWwgdG9wIGlzIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQgaW5s
aW5lIGJveCdzIGxheW91dCBib3VuZHMuCisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBs
b2dpY2FsIHRvcCBpcyBub3QgdGhlIGZpbmFsIGxvZ2ljYWwgdG9wIG9mIHRoZSBpbmxpbmUgbGV2
ZWwgYm94LgorICAgICAgICAgICAgLy8gVGhpcyBpcyB0aGUgbG9naWNhbCB0b3AgaW4gdGhlIGNv
bnRleHQgb2YgdGhlIGxheW91dCBib3VuZHMgZ2VvbWV0cnkgd2hpY2ggbWF5IGJlIHZlcnkgZGlm
ZmVyZW50IGZyb20gdGhlIGlubGluZSBib3gncyBub3JtYWwgZ2VvbWV0cnkuCiAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAgIGF1
dG8gYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBJbmxpbmVMYXlvdXRVbml0IHsg
fTsKICAgICAgICAgICAgIHN3aXRjaCAoaW5saW5lTGV2ZWxCb3gtPnZlcnRpY2FsQWxpZ24oKSkg
ewotICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZToKLSAgICAgICAgICAg
ICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBpbmxpbmVMZXZl
bEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50OwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0geyB9OwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAg
ICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOiB7Ci0gICAgICAgICAgICAgICAg
Ly8gTm90ZSB0aGF0IFRleHRUb3AgYWxpZ25zIHdpdGggdGhlIGlubGluZSBib3gncyBmb250IG1l
dHJpY3MgdG9wIChhc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgdG9wLgotICAgICAg
ICAgICAgICAgIGF1dG8gcGFyZW50QXNjZW50ID0gcGFyZW50SW5saW5lQm94LmZvbnRNZXRyaWNz
KCkuYXNjZW50KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2Fs
VG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2VudCAtIHBhcmVudEFzY2Vu
dDsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94TG9naWNhbFRv
cDsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHBh
cmVudEFzY2VudCAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIFZlcnRp
Y2FsQWxpZ246OlRleHRCb3R0b206IHsKLSAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgVGV4
dEJvdHRvbSBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0cmljcyBib3R0b20g
KGRlc2NlbnQpIGFuZCBub3QgdGhlIGxheW91dCBib3VuZHMgYm90dG9tLgotICAgICAgICAgICAg
ICAgIGF1dG8mIHBhcmVudEZvbnRNZXRyaWNzID0gcGFyZW50SW5saW5lQm94LmZvbnRNZXRyaWNz
KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMgPSBw
YXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7Ci0gICAgICAgICAgICAgICAgYXV0byBwYXJl
bnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmhl
aWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRzLmRlc2NlbnQgKyBwYXJlbnRGb250
TWV0cmljcy5kZXNjZW50KCk7Ci0gICAgICAgICAgICAgICAgYXV0byBsYXlvdXRCb3VuZHMgPSBp
bmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRv
cCA9IHBhcmVudElubGluZUJveExvZ2ljYWxCb3R0b20gLSBsYXlvdXRCb3VuZHMuaGVpZ2h0KCk7
Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBsYXlv
dXRCb3VuZHMuZGVzY2VudCAtIHBhcmVudEZvbnRNZXRyaWNzLmRlc2NlbnQoKTsKKyAgICAgICAg
ICAgIGNhc2UgVmVydGljYWxBbGlnbjo6QmFzZWxpbmU6IHsKKyAgICAgICAgICAgICAgICBhdXRv
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TWlkZGxlOiB7Ci0gICAgICAgICAgICAgICAgYXV0
byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxh
eW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiArIHBhcmVudElubGluZUJveC5mb250TWV0cmljcygp
LnhIZWlnaHQoKSAvIDI7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGlu
ZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKLSAg
ICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRz
KCkuYXNjZW50OworICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIg
KyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDI7Cisg
ICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMo
KS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFs
aWduOjpCYXNlbGluZU1pZGRsZTogewogICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5o
ZWlnaHQoKSAvIDI7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJv
eC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKLSAgICAg
ICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BP
ZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
YXNjZW50OworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsK
ICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGNhc2Ug
VmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7Ci0gICAgICAgICAgICAgICAgYXV0byYgc3R5bGUgPSBs
YXlvdXRCb3guc3R5bGUoKTsKKyAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUxl
dmVsQm94LT5zdHlsZSgpOwogICAgICAgICAgICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZy
b21QYXJlbnRCYXNlbGluZSA9IGZsb2F0VmFsdWVGb3JMZW5ndGgoc3R5bGUudmVydGljYWxBbGln
bkxlbmd0aCgpLCBzdHlsZS5jb21wdXRlZExpbmVIZWlnaHQoKSkgKyBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBh
cmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNl
bGluZTsKLSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgLSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50OworICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJ
bmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gbG9naWNhbFRvcE9mZnNldEZyb21QYXJl
bnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dFRvcDogeworICAgICAgICAgICAgICAgIC8v
IE5vdGUgdGhhdCB0ZXh0LXRvcCBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0
cmljcyB0b3AgKGFzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyB0b3AuCisgICAgICAg
ICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2Nl
bnQgLSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRv
bTogeworICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0ZXh0LWJvdHRvbSBhbGlnbnMgd2l0
aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0cmljcyBib3R0b20gKGRlc2NlbnQpIGFuZCBub3Qg
dGhlIGxheW91dCBib3VuZHMgYm90dG9tLgorICAgICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5s
aW5lQm94TGF5b3V0Qm91bmRzID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpOworICAg
ICAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSA9IHBhcmVudElu
bGluZUJveExheW91dEJvdW5kcy5oZWlnaHQoKSAtIHBhcmVudElubGluZUJveExheW91dEJvdW5k
cy5kZXNjZW50ICsgcGFyZW50SW5saW5lQm94LmRlc2NlbnQoKS52YWx1ZU9yKElubGluZUxheW91
dFVuaXQoKSk7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveExv
Z2ljYWxCb3R0b20gLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0
OgogICAgICAgICAgICAgICAgIEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBpbmxpbmVMZXZlbEJv
eC0+c2V0TG9naWNhbFRvcChsb2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGF1dG8gcGFyZW50SW5s
aW5lQm94QWJzb2x1dGVHZW9tZXRyeSA9IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1h
cC5nZXQoJnBhcmVudElubGluZUJveCk7Ci0gICAgICAgICAgICBhdXRvIGFic29sdXRlTG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveEFic29sdXRlR2VvbWV0cnkudG9wICsgbG9naWNhbFRvcDsK
KyAgICAgICAgICAgIGF1dG8gcGFyZW50SW5saW5lQm94QWJzb2x1dGVUb3BBbmRCb3R0b20gPSBp
bmxpbmVMZXZlbEJveEFic29sdXRlVG9wQW5kQm90dG9tTWFwLmdldCgmcGFyZW50SW5saW5lQm94
KTsKKyAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVMb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94
QWJzb2x1dGVUb3BBbmRCb3R0b20udG9wICsgbG9naWNhbFRvcDsKICAgICAgICAgICAgIGF1dG8g
YWJzb2x1dGVMb2dpY2FsQm90dG9tID0gYWJzb2x1dGVMb2dpY2FsVG9wICsgaW5saW5lTGV2ZWxC
b3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpOwotICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUJh
c2VsaW5lT2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHBhcmVudElubGluZUJveEFi
c29sdXRlR2VvbWV0cnkuYmFzZWxpbmVPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lICsg
YmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7Ci0gICAgICAgICAgICBpbmxpbmVMZXZl
bEJveEFic29sdXRlR2VvbWV0cnlNYXAuYWRkKGlubGluZUxldmVsQm94LmdldCgpLCBBYnNvbHV0
ZUdlb21ldHJ5IHsgYWJzb2x1dGVMb2dpY2FsVG9wLCBhYnNvbHV0ZUxvZ2ljYWxCb3R0b20sIGFi
c29sdXRlQmFzZWxpbmVPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lLCBpbmxpbmVMZXZl
bEJveC5nZXQoKSB9KTsKLQotICAgICAgICAgICAgYXV0byBhZmZlY3RzUm9vdElubGluZUJveFZl
cnRpY2FsUG9zaXRpb24gPSBxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJv
eChsaW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpOwotICAgICAgICAgICAgaWYgKGFmZmVjdHNSb290
SW5saW5lQm94VmVydGljYWxQb3NpdGlvbikKLSAgICAgICAgICAgICAgICBtYXhpbXVtVG9wT2Zm
c2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHN0ZDo6bWF4KG1heGltdW1Ub3BPZmZzZXRG
cm9tUm9vdElubGluZUJveEJhc2VsaW5lLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0RnJvbVJvb3RJ
bmxpbmVCb3hCYXNlbGluZSArIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQp
OwotICAgICAgICB9Ci0gICAgfTsKLSAgICBhbGlnbklubGluZUJveFJlbGF0aXZlSW5saW5lTGV2
ZWxCb3hlcygpOwotCi0gICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IElubGluZUxheW91
dFVuaXQgeyB9OwotICAgIGF1dG8gaW5saW5lQm94UmVsYXRpdmVMb2dpY2FsSGVpZ2h0ID0gSW5s
aW5lTGF5b3V0VW5pdCB7IH07Ci0gICAgYXV0byBjb21wdXRlTGluZUJveExvZ2ljYWxIZWlnaHQg
PSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIGxheW91dCBib3VuZHMg
YmFzZWQgbGluZSBib3ggaGVpZ2h0LgotICAgICAgICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9wID0g
T3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwotICAgICAgICBhdXRvIG1heGltdW1Mb2dp
Y2FsQm90dG9tID0gT3B0aW9uYWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OwotICAgICAgICBmb3Ig
KGF1dG8gYWJzb2x1dGVHZW9tZXRyeSA6IGlubGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1h
cC52YWx1ZXMoKSkgewotICAgICAgICAgICAgYXV0byYgaW5saW5lTGV2ZWxCb3ggPSAqYWJzb2x1
dGVHZW9tZXRyeS5pbmxpbmVMZXZlbEJveDsKLSAgICAgICAgICAgIGlmICghcXVpcmtzLnNob3Vs
ZElubGluZUxldmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgaW5saW5lTGV2ZWxCb3gpKQot
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgbWluaW11bUxvZ2ljYWxUb3Ag
PSBzdGQ6Om1pbihtaW5pbXVtTG9naWNhbFRvcC52YWx1ZU9yKGFic29sdXRlR2VvbWV0cnkudG9w
KSwgYWJzb2x1dGVHZW9tZXRyeS50b3ApOwotICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0
b20gPSBzdGQ6Om1heChtYXhpbXVtTG9naWNhbEJvdHRvbS52YWx1ZU9yKGFic29sdXRlR2VvbWV0
cnkuYm90dG9tKSwgYWJzb2x1dGVHZW9tZXRyeS5ib3R0b20pOworICAgICAgICAgICAgaW5saW5l
TGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1hcC5hZGQoaW5saW5lTGV2ZWxCb3guZ2V0KCks
IEFic29sdXRlVG9wQW5kQm90dG9tIHsgYWJzb2x1dGVMb2dpY2FsVG9wLCBhYnNvbHV0ZUxvZ2lj
YWxCb3R0b20gfSk7CisgICAgICAgICAgICAvLyBTdHJldGNoIHRoZSBtaW4vbWF4IGFic29sdXRl
IHZhbHVlcyBpZiBhcHBsaWNhYmxlLgorICAgICAgICAgICAgaWYgKHF1aXJrcy5zaG91bGRJbmxp
bmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCkpIHsKKyAg
ICAgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IHN0ZDo6bWluKG1pbmltdW1Mb2dpY2Fs
VG9wLCBhYnNvbHV0ZUxvZ2ljYWxUb3ApOworICAgICAgICAgICAgICAgIG1heGltdW1Mb2dpY2Fs
Qm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2ljYWxCb3R0b20sIGFic29sdXRlTG9naWNhbEJv
dHRvbSk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgaW5saW5lQm94UmVsYXRp
dmVMb2dpY2FsSGVpZ2h0ID0gbWF4aW11bUxvZ2ljYWxCb3R0b20udmFsdWVPcihJbmxpbmVMYXlv
dXRVbml0KCkpIC0gbWluaW11bUxvZ2ljYWxUb3AudmFsdWVPcihJbmxpbmVMYXlvdXRVbml0KCkp
OwotICAgICAgICBsaW5lQm94TG9naWNhbEhlaWdodCA9IGlubGluZUJveFJlbGF0aXZlTG9naWNh
bEhlaWdodDsKLSAgICAgICAgLy8gTm93IHN0cmV0Y2ggdGhlIGxpbmUgYm94IHdpdGggdGhlIGxp
bmUgYm94IHJlbGF0aXZlIGlubGluZSBsZXZlbCBib3hlcy4KKyAgICAgICAgLy8gVGhlIGxpbmUg
Ym94IGhlaWdodCBjb21wdXRhdGlvbiBpcyBhcyBmb2xsb3dzOgorICAgICAgICAvLyAxLiBTdHJl
dGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBub24tbGluZS1ib3ggcmVsYXRpdmUgYWxpZ25lZCBp
bmxpbmUgYm94IGFic29sdXRlIHRvcCBhbmQgYm90dG9tIHZhbHVlcy4KKyAgICAgICAgLy8gMi4g
Q2hlY2sgaWYgdGhlIGxpbmUgYm94IHJlbGF0aXZlIGFsaWduZWQgaW5saW5lIGJveGVzICh0b3As
IGJvdHRvbSBldGMpIGhhdmUgZW5vdWdoIHJvb20gYW5kIHN0cmV0Y2ggdGhlIGxpbmUgYm94IGZ1
cnRoZXIgaWYgbmVlZGVkLgorICAgICAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gbWF4
aW11bUxvZ2ljYWxCb3R0b20gLSBtaW5pbXVtTG9naWNhbFRvcDsKICAgICAgICAgZm9yIChhdXRv
KiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxl
dmVsQm94ZXMpIHsKICAgICAgICAgICAgIGlmICghcXVpcmtzLnNob3VsZElubGluZUxldmVsQm94
U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94KSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxpbmVCb3hMb2dpY2FsSGVp
Z2h0ID0gc3RkOjptYXgobGluZUJveExvZ2ljYWxIZWlnaHQsIGxpbmVCb3hSZWxhdGl2ZUlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSk7CiAgICAgICAgIH0KKyAgICAgICAg
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKICAgICB9Owog
ICAgIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpOwogCi0gICAgYXV0byBhZGp1c3RSb290
SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgY2FzZXMgd2hlbiB0aGUgc3RyZXRjaGluZyBpbmxpbmUgYm94ZXMgYXJlIG5v
dCBiYXNlbGluZSBhbGlnbmVkLgotICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9w
ID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgLSByb290SW5saW5l
Qm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICBhdXRvIGNvbXB1dGVSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7CisgICAgICAgIEhhc2hNYXA8TGluZUJveDo6SW5saW5l
TGV2ZWxCb3gqLCBJbmxpbmVMYXlvdXRVbml0PiBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxp
bmVPZmZzZXRNYXA7CisgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNl
dE1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIElubGluZUxheW91dFVuaXQgeyB9KTsKKworICAgICAg
ICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gcm9vdElu
bGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiByb290SW5saW5lQm94Lmxh
eW91dEJvdW5kcygpLmFzY2VudDsKKworICAgICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94
IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CisgICAgICAgICAgICBhdXRv
IGFic29sdXRlQmFzZWxpbmVPZmZzZXQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAgICAg
ICAgIGlmICghaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7
CisgICAgICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJveCgpOworICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxpbmVCb3gu
aW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gSW5saW5lTGF5
b3V0VW5pdCB7IH07CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52
ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJh
c2VsaW5lOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNl
bGluZSA9IHsgfTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBs
b2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0
cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
LSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
QmFzZWxpbmVNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhl
aWdodCgpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2
ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewor
ICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUxldmVsQm94LT5zdHlsZSgp
OworICAgICAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRM
aW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmUgPSB2ZXJ0aWNhbEFsaWduT2Zmc2V0ICsgaW5saW5lTGV2ZWxCb3gt
PmxheW91dEJvdW5kcygpLmhlaWdodCgpOworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dFRvcDoKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRvbToKKyAgICAgICAgICAgICAg
ICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtICpwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYWJzb2x1
dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNldE1h
cC5nZXQoJnBhcmVudElubGluZUJveCkgKyBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVM
ZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpUb3A6IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVCYXNlbGluZU9mZnNl
dCA9IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gt
PmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9t
OiB7CisgICAgICAgICAgICAgICAgICAgIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgPSBpbmxpbmVM
ZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91
bmRzKCkuZGVzY2VudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlubGluZUxldmVsQm94
QWJzb2x1dGVCYXNlbGluZU9mZnNldE1hcC5hZGQoaW5saW5lTGV2ZWxCb3guZ2V0KCksIGFic29s
dXRlQmFzZWxpbmVPZmZzZXQpOworICAgICAgICAgICAgYXV0byBhZmZlY3RzUm9vdElubGluZUJv
eFZlcnRpY2FsUG9zaXRpb24gPSBxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGlu
ZUJveChsaW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpOworICAgICAgICAgICAgaWYgKGFmZmVjdHNS
b290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbikKKyAgICAgICAgICAgICAgICBtYXhpbXVtVG9w
T2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHN0ZDo6bWF4KG1heGltdW1Ub3BPZmZz
ZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ICsgaW5s
aW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudCk7CisgICAgICAgIH0KKyAgICAgICAg
YXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgpOwogICAgICAgICByb290
SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH07
Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKKyAgICBjb21wdXRl
Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKIAotICAgIGF1dG8gYWxpZ25MaW5lQm94
UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKLSAgICAgICAgZm9yIChhdXRvKiBpbmxp
bmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsKKyAgICBhdXRv
IGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsmXSB7CisgICAgICAgIGZvciAoYXV0byYgaW5saW5l
TGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAg
ICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKLSAgICAg
ICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1lbnQgPSBsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNh
bEFsaWduKCk7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94Lmlu
bGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CiAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAgIGF1
dG8gcm9vdElubGluZUJveE9mZnNldCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAg
ICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkgeworICAgICAgICAgICAgc3dpdGNoIChpbmxp
bmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxp
bmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsK
KyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
PSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3gu
c3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAg
ICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5s
aW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDI7CisgICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7CisgICAgICAgICAgICAgICAg
YXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICBh
dXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRp
Y2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHZlcnRpY2Fs
QWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgKHRleHQpdG9wL2JvdHRvbSBhbGln
biB0aGVpciBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0VG9wOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0
b206CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sb2dpY2Fs
SGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIGlubGlu
ZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9
IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBu
b3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
ID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgcm9vdElubGluZUJveE9mZnNldCA9IGlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAtIGlubGluZUJveFJlbGF0aXZlTG9naWNh
bEhlaWdodDsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBp
cyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94LgorICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC0+c2V0TG9naWNhbFRvcChs
b2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlmIChyb290SW5saW5lQm94T2Zmc2V0ID4gMCkKLSAg
ICAgICAgICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveC5s
b2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94T2Zmc2V0KTsKICAgICAgICAgfQogICAgIH07Ci0g
ICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKCk7Ci0gICAgbGluZUJveC5z
ZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKKyAgICBhbGlnbklubGluZUxl
dmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQm
IGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBkMjJhZGI2NjZlZjI2ZWRlMzA4ZjJm
ZWI1ZGFiM2Q3NTFiYWJhZWQ5Li5lZGRjZDQwZDdjNzcyMGMwODlmNjFmY2ExMDhlZDEwMTJlMDUx
OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmNwcApAQCAtODYsNyArODYsNyBAQCBJbmxpbmVSZWN0IExpbmVC
b3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lOjpSdW4mIHJ1bikgY29uc3QKICAg
ICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKICAgICBhdXRvKiBw
YXJlbnRJbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJv
eCgpLnBhcmVudCgpKTsKICAgICBBU1NFUlQocGFyZW50SW5saW5lQm94LT5pc0lubGluZUJveCgp
KTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+Zm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+c3R5bGUoKS5mb250
TWV0cmljcygpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC0+bG9n
aWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9udE1ldHJpY3MuYXNj
ZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9IG1fcm9vdElubGluZUJveC5n
ZXQoKSAmJiAhcGFyZW50SW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkg
ewpAQCAtMTAzLDExICsxMDMsMTIgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZv
cklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIGF1dG8qIGlu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGF1
dG8gaW5saW5lQm94TG9naWNhbFJlY3QgPSBpbmxpbmVCb3gtPmxvZ2ljYWxSZWN0KCk7CiAgICAg
YXV0byBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3Ao
KTsKLQotICAgIHdoaWxlIChpbmxpbmVCb3ggIT0gbV9yb290SW5saW5lQm94LmdldCgpICYmICFp
bmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7Ci0gICAgICAgIGlubGlu
ZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91dEJveCgp
LnBhcmVudCgpKTsKLSAgICAgICAgQVNTRVJUKGlubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0g
ICAgICAgIGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxU
b3AoKTsKKyAgICBpZiAoIWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkp
IHsKKyAgICAgICAgd2hpbGUgKGlubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYg
IWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKKyAgICAgICAgICAg
IGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91
dEJveCgpLnBhcmVudCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVCb3gtPmlzSW5saW5l
Qm94KCkpOworICAgICAgICAgICAgaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9wICs9IGlubGlu
ZUJveC0+bG9naWNhbFRvcCgpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB7IGlubGlu
ZUJveEFic29sdXRlbG9naWNhbFRvcCwgaW5saW5lQm94TG9naWNhbFJlY3QubGVmdCgpLCBpbmxp
bmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC5oZWlnaHQoKSB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oCmluZGV4IGVhZWYyMjgwN2JlYjJlM2RkMWViZGZmZTUxM2ZmOTA4Njky
NmU1MDkuLmJjNjRlN2Y5OTZhNTBiNzRiOTJkMTQwZDAyYWUwMDU0YjBlZWRkMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
Qm94LmgKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2lzRW1wdHk7IH0KICAgICAgICAgdm9pZCBzZXRJc05vbkVtcHR5KCkg
eyBtX2lzRW1wdHkgPSBmYWxzZTsgfQogCi0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCkuZm9udE1ldHJpY3Mo
KTsgfQogICAgICAgICBWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVy
biBsYXlvdXRCb3goKS5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsgfQogICAgICAgICBjb25zdCBC
b3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQorICAgICAgICBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dEJveC0+c3R5
bGUoKTsgfQogCiAgICAgICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IG1fdHlwZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9
CiAgICAgICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>412829</attachid>
            <date>2020-10-30 20:54:42 -0700</date>
            <delta_ts>2020-10-31 07:30:02 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-218397-20201030205439.patch</filename>
            <type>text/plain</type>
            <size>29493</size>
            <attacher name="alan">zalan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY5MTQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTFiYzM5NTU5MTg1ODk4
ZDFkODZlOWQ4Yjc0OGEzMTUyYWZkOTA2ZC4uM2YyYmMzMmM1N2FmYWI2NDI5ODkxMmM1M2E4N2Uw
Y2FlYTM3YWRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMzIEBACisyMDIwLTEwLTMwICBaYWxh
biBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CisKKyAgICAgICAgW0xGQ11bSUZDXSBTcGxpdCBp
bmxpbmUgbGV2ZWwgYm94IGFsaWdubWVudCBwcm9jZXNzIGludG8gbXVsdGlwbGUgcGhhc2VzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTgzOTcKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBJbmxpbmUgbGV2
ZWwgYm94IGFsaWdubWVudCBpbnNpZGUgdGhlIGxpbmUgYm94IGlzIGRlc2NyaWJlZCBhdCBodHRw
czovL3d3dy53My5vcmcvVFIvY3NzLWlubGluZS0zLyNsaW5lLWxheW91dC4KKyAgICAgICAgVGhl
IGFsaWdubWVudCBwcm9jZXNzIGludm9sdmVzIDMgZGlzdGluY3Qgc3RlcHM6CisgICAgICAgIDEu
IENvbXB1dGluZyB0aGUgbGluZSBib3gncyBsb2dpY2FsIGhlaWdodC4gVGhpcyBzdGVwIHNvbGVs
eSB1c2VzIHRoZSBsYXlvdXQgYm91bmRzIGdlb21ldHJ5IG9mIHRoZSBpbmxpbmUgbGV2ZWwgYm94
ZXMuCisgICAgICAgIDIuIEZpbmRpbmcgdGhlIHJvb3QgaW5saW5lIGJveCB2ZXJ0aWNhbCBwb3Np
dGlvbi4gVGhpcyBzdGVwIGlzIHNvbWV3aGF0IHNpbWlsYXIgdG8gdGhlIGZpbmFsLCBhbGlnbm1l
bnQgcGhhc2UgYnV0IGluc3RlYWQgb2YKKyAgICAgICAgdGhlIGxvZ2ljYWwgdG9wLCBoZXJlIHdl
IGNvbXB1dGUgdGhlIGJhc2VsaW5lIG9mZnNldHMuIEl0IGhlbHBzIHRvIGZpZ3VyZSBvdXQgdGhl
IHJvb3QgaW5saW5lIGJveCdzIGJhc2VsaW5lIHBvc2l0aW5nIGluc2lkZSB0aGUgbGluZSBib3gu
CisgICAgICAgIDMuIEFsaWduaW5nIHRoZSBpbmxpbmUgbGV2ZWwgYm94ZXMgYnkgY29tcHV0aW5n
IHRoZWlyIGxvZ2ljYWwgdG9wIHBvc2l0aW9uLgorCisgICAgICAgIFRoZXNlIDMgc3RlcHMgYXJl
IGltcGxlbWVudGVkIGJ5IHRoZSBmb2xsb3dpbmcgMyBmdW5jdGlvbnM6CisgICAgICAgIDEuIGNv
bXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpCisgICAgICAgIDIuIGNvbXB1dGVSb290SW5saW5l
Qm94VmVydGljYWxQb3NpdGlvbigpCisgICAgICAgIDMuIGFsaWduSW5saW5lTGV2ZWxCb3hlcygp
CisgICAgICAgIFdoaWxlIHNvbWUgb2YgdGhlIGNvZGUgaW4gdGhlc2UgZnVuY3Rpb25zIG1heSBs
b29rIHJlZHVuZGFudCwgdGhleSB3b3JrIHdpdGggZGlmZmVyZW50IHR5cGUgb2YgZ2VvbWV0cmll
cyAobGF5b3V0IGJvdW5kcyB2cy4gbm9ybWFsIGFzY2VudC9kZXNjZW50L2xvZ2ljYWwgaGVpZ2h0
KS4KKworICAgICAgICAqIGxheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdD
b250ZXh0R2VvbWV0cnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpMaW5lQm94QnVp
bGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveCBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0
aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQpOgorICAgICAgICAqIGxheW91dC9pbmxpbmVm
b3JtYXR0aW5nL0lubGluZUxpbmVCb3guY3BwOgorICAgICAgICAoV2ViQ29yZTo6TGF5b3V0OjpM
aW5lQm94Ojpsb2dpY2FsUmVjdEZvclRleHRSdW4gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
TGF5b3V0OjpMaW5lQm94Ojpsb2dpY2FsUmVjdEZvcklubGluZUxldmVsQm94IGNvbnN0KToKKyAg
ICAgICAgKiBsYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5lQm94Lmg6CisgICAgICAg
IChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94OjpzdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpMYXlvdXQ6OkxpbmVCb3g6OklubGluZUxldmVsQm94Ojpmb250
TWV0cmljcyBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMTAtMjkgIFphbGFuIEJ1anRhcyAgPHph
bGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBbTEZDXVtJbnRlZ3JhdGlvbl0gSW1wbGVtZW50IG91
dHB1dExpbmVUcmVlQW5kTWFyayBmb3IgSUZDCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
YXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVGb3JtYXR0aW5nQ29udGV4dEdlb21ldHJ5LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRp
bmdDb250ZXh0R2VvbWV0cnkuY3BwCmluZGV4IDBiZjkxZGYwMGFjNDY4MmJjYjA3NjZhMjhkM2Rl
MzZiZDhmZTk5NjUuLjI0ZjRhZTEyMWJjODk0YmMyM2Y3NTk0MzlkZGY2YzQyNGM5ZjM2MGYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUZv
cm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xheW91dC9p
bmxpbmVmb3JtYXR0aW5nL0lubGluZUZvcm1hdHRpbmdDb250ZXh0R2VvbWV0cnkuY3BwCkBAIC00
Nyw3ICs0Nyw3IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdm9pZCBzZXRWZXJ0aWNhbEdlb21l
dHJ5Rm9ySW5saW5lQm94KExpbmVCb3g6OklubGluZUxldmVsQm94JikgY29uc3Q7CiAgICAgdm9p
ZCBjb25zdHJ1Y3RJbmxpbmVMZXZlbEJveGVzKExpbmVCb3gmLCBjb25zdCBMaW5lOjpSdW5MaXN0
Jik7Ci0gICAgdm9pZCBhbGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxp
bmVCb3hIZWlnaHQoTGluZUJveCYpOworICAgIHZvaWQgY29tcHV0ZUxpbmVCb3hIZWlnaHRBbmRh
bGlnbklubGluZUxldmVsQm94ZXNWZXJ0aWNhbGx5KExpbmVCb3gmKTsKIAogICAgIGNvbnN0IElu
bGluZUZvcm1hdHRpbmdDb250ZXh0JiBmb3JtYXR0aW5nQ29udGV4dCgpIGNvbnN0IHsgcmV0dXJu
IG1faW5saW5lRm9ybWF0dGluZ0NvbnRleHQ7IH0KICAgICBjb25zdCBCb3gmIHJvb3RCb3goKSBj
b25zdCB7IHJldHVybiBmb3JtYXR0aW5nQ29udGV4dCgpLnJvb3QoKTsgfQpAQCAtMTYyLDE3ICsx
NjIsMjEgQEAgTGluZUJveCBMaW5lQm94QnVpbGRlcjo6YnVpbGQoY29uc3QgTGluZUJ1aWxkZXI6
OkxpbmVDb250ZW50JiBsaW5lQ29udGVudCkKICAgICBpZiAoYXV0byBob3Jpem9udGFsQWxpZ25t
ZW50T2Zmc2V0ID0gTGF5b3V0Ojpob3Jpem9udGFsQWxpZ25tZW50T2Zmc2V0KHJ1bnMsIHJvb3RC
b3goKS5zdHlsZSgpLnRleHRBbGlnbigpLCBsaW5lTG9naWNhbFdpZHRoLCBjb250ZW50TG9naWNh
bFdpZHRoLCBsaW5lQ29udGVudC5pc0xhc3RMaW5lV2l0aElubGluZUNvbnRlbnQpKQogICAgICAg
ICBsaW5lQm94LnNldEhvcml6b250YWxBbGlnbm1lbnRPZmZzZXQoKmhvcml6b250YWxBbGlnbm1l
bnRPZmZzZXQpOwogICAgIGNvbnN0cnVjdElubGluZUxldmVsQm94ZXMobGluZUJveCwgcnVucyk7
Ci0gICAgYWxpZ25JbmxpbmVMZXZlbEJveGVzVmVydGljYWxseUFuZENvbXB1dGVMaW5lQm94SGVp
Z2h0KGxpbmVCb3gpOworICAgIGNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVMZXZl
bEJveGVzVmVydGljYWxseShsaW5lQm94KTsKICAgICByZXR1cm4gbGluZUJveDsKIH0KIAogdm9p
ZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9tZXRyeUZvcklubGluZUJveChMaW5lQm94
OjpJbmxpbmVMZXZlbEJveCYgaW5saW5lTGV2ZWxCb3gpIGNvbnN0CiB7CiAgICAgQVNTRVJUKGlu
bGluZUxldmVsQm94LmlzSW5saW5lQm94KCkgfHwgaW5saW5lTGV2ZWxCb3guaXNMaW5lQnJlYWtC
b3goKSk7Ci0gICAgYXV0byYgZm9udE1ldHJpY3MgPSBpbmxpbmVMZXZlbEJveC5mb250TWV0cmlj
cygpOworICAgIGF1dG8mIGZvbnRNZXRyaWNzID0gaW5saW5lTGV2ZWxCb3guc3R5bGUoKS5mb250
TWV0cmljcygpOwogICAgIElubGluZUxheW91dFVuaXQgYXNjZW50ID0gZm9udE1ldHJpY3MuYXNj
ZW50KCk7CiAgICAgSW5saW5lTGF5b3V0VW5pdCBkZXNjZW50ID0gZm9udE1ldHJpY3MuZGVzY2Vu
dCgpOwogICAgIGF1dG8gbG9naWNhbEhlaWdodCA9IGFzY2VudCArIGRlc2NlbnQ7CisgICAgLy8g
V2UgbmVlZCBmbG9vci9jZWlsIHRvIG1hdGNoIGxlZ2FjeSBsYXlvdXQgaW50ZWdyYWwgcG9zaXRp
b25pbmcuCisgICAgaW5saW5lTGV2ZWxCb3guc2V0QmFzZWxpbmUoZmxvb3JmKGFzY2VudCkpOwor
ICAgIGlubGluZUxldmVsQm94LnNldERlc2NlbnQoY2VpbChkZXNjZW50KSk7CisgICAgaW5saW5l
TGV2ZWxCb3guc2V0TG9naWNhbEhlaWdodChsb2dpY2FsSGVpZ2h0KTsKIAogICAgIC8vIEZJWE1F
OiBBZGp1c3QgbGF5b3V0IGJvdW5kcyB3aXRoIGZhbGxiYWNrIGZvbnQgd2hlbiBhcHBsaWNhYmxl
LgogICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2ZWxCb3gubGF5b3V0Qm94KCkuc3R5bGUoKTsK
QEAgLTE5MiwxNCArMTk2LDggQEAgdm9pZCBMaW5lQm94QnVpbGRlcjo6c2V0VmVydGljYWxHZW9t
ZXRyeUZvcklubGluZUJveChMaW5lQm94OjpJbmxpbmVMZXZlbEJveCYgaW4KICAgICAgICAgYXNj
ZW50ICs9IGhhbGZMZWFkaW5nOwogICAgICAgICBkZXNjZW50ICs9IGhhbGZMZWFkaW5nOwogICAg
IH0KLSAgICAvLyBXZSBuZWVkIHRoaXMgdG8gbWF0Y2ggbGVnYWN5IGxheW91dCBpbnRlZ3JhbCBw
b3NpdGlvbmluZy4KLSAgICBhc2NlbnQgPSBmbG9vcmYoYXNjZW50KTsKLSAgICBkZXNjZW50ID0g
Y2VpbChkZXNjZW50KTsKLQotICAgIGlubGluZUxldmVsQm94LnNldExheW91dEJvdW5kcyhMaW5l
Qm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgYXNjZW50LCBkZXNjZW50IH0pOwot
ICAgIGlubGluZUxldmVsQm94LnNldEJhc2VsaW5lKGFzY2VudCk7Ci0gICAgaW5saW5lTGV2ZWxC
b3guc2V0RGVzY2VudChkZXNjZW50KTsKLSAgICBpbmxpbmVMZXZlbEJveC5zZXRMb2dpY2FsSGVp
Z2h0KGxvZ2ljYWxIZWlnaHQpOworICAgIC8vIFdlIG5lZWQgZmxvb3IvY2VpbCB0byBtYXRjaCBs
ZWdhY3kgbGF5b3V0IGludGVncmFsIHBvc2l0aW9uaW5nLgorICAgIGlubGluZUxldmVsQm94LnNl
dExheW91dEJvdW5kcyhMaW5lQm94OjpJbmxpbmVMZXZlbEJveDo6TGF5b3V0Qm91bmRzIHsgZmxv
b3JmKGFzY2VudCksIGNlaWwoZGVzY2VudCkgfSk7CiB9CiAKIHZvaWQgTGluZUJveEJ1aWxkZXI6
OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZTo6
UnVuTGlzdCYgcnVucykKQEAgLTI5NiwyNyArMjk0LDM1IEBAIHZvaWQgTGluZUJveEJ1aWxkZXI6
OmNvbnN0cnVjdElubGluZUxldmVsQm94ZXMoTGluZUJveCYgbGluZUJveCwgY29uc3QgTGluZTo6
UnVuCiAgICAgfQogfQogCi12b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94
ZXNWZXJ0aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZUJveCYgbGluZUJveCkKK3Zv
aWQgTGluZUJveEJ1aWxkZXI6OmNvbXB1dGVMaW5lQm94SGVpZ2h0QW5kYWxpZ25JbmxpbmVMZXZl
bEJveGVzVmVydGljYWxseShMaW5lQm94JiBsaW5lQm94KQogewogICAgIC8vIFRoaXMgZnVuY3Rp
b24gKHBhcnRpYWxseSkgaW1wbGVtZW50czoKICAgICAvLyAyLjIuIExheW91dCBXaXRoaW4gTGlu
ZSBCb3hlcwogICAgIC8vIGh0dHBzOi8vd3d3LnczLm9yZy9UUi9jc3MtaW5saW5lLTMvI2xpbmUt
bGF5b3V0CisgICAgLy8gMS4gQ29tcHV0ZSB0aGUgbGluZSBib3ggaGVpZ2h0IHVzaW5nIHRoZSBs
YXlvdXQgYm91bmRzIGdlb21ldHJ5LiBUaGlzIGhlaWdodCBjb21wdXRhdGlvbiBzdHJpY3RseSB1
c2VzIGxheW91dCBib3VuZHMgYW5kIG5vdCBub3JtYWwgaW5saW5lIGxldmVsIGJveCBnZW9tZXRy
aWVzLgorICAgIC8vIDIuIENvbXB1dGUgdGhlIGJhc2VsaW5lL2xvZ2ljYWwgdG9wIHBvc2l0aW9u
IG9mIHRoZSByb290IGlubGluZSBib3guIEFsaWduZWQgYm94ZXMgcHVzaCB0aGUgcm9vdCBpbmxp
bmUgYm94IGFyb3VuZCBpbnNpZGUgdGhlIGxpbmUgYm94LgorICAgIC8vIDMuIEZpbmFsbHkgYWxp
Z24gdGhlIGlubGluZSBsZXZlbCBib3hlcyB1c2luZyAobW9zdGx5KSBub3JtYWwgaW5saW5lIGxl
dmVsIGJveCBnZW9tZXRyaWVzLgogICAgIGF1dG8gcXVpcmtzID0gZm9ybWF0dGluZ0NvbnRleHQo
KS5xdWlya3MoKTsKLSAgICBWZWN0b3I8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqPiBsaW5lQm94
UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzOwotICAgIHN0cnVjdCBBYnNvbHV0ZUdlb21ldHJ5IHsK
LSAgICAgICAgSW5saW5lTGF5b3V0VW5pdCB0b3AgeyAwIH07Ci0gICAgICAgIElubGluZUxheW91
dFVuaXQgYm90dG9tIHsgMCB9OwotICAgICAgICBJbmxpbmVMYXlvdXRVbml0IGJhc2VsaW5lT2Zm
c2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSB7IDAgfTsKLSAgICAgICAgY29uc3QgTGluZUJv
eDo6SW5saW5lTGV2ZWxCb3gqIGlubGluZUxldmVsQm94IHsgbnVsbHB0ciB9OwotICAgIH07Ci0g
ICAgSGFzaE1hcDxMaW5lQm94OjpJbmxpbmVMZXZlbEJveCosIEFic29sdXRlR2VvbWV0cnk+IGlu
bGluZUxldmVsQm94QWJzb2x1dGVHZW9tZXRyeU1hcDsKICAgICBhdXRvJiByb290SW5saW5lQm94
ID0gbGluZUJveC5yb290SW5saW5lQm94KCk7Ci0gICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdl
b21ldHJ5TWFwLmFkZCgmcm9vdElubGluZUJveCwgQWJzb2x1dGVHZW9tZXRyeSB7IHsgfSwgcm9v
dElubGluZUJveC5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSwgeyB9LCAmcm9vdElubGluZUJveCB9
KTsKLSAgICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0g
cm9vdElubGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiByb290SW5saW5l
Qm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKIAotICAgIGF1dG8gYWxpZ25JbmxpbmVCb3hSZWxh
dGl2ZUlubGluZUxldmVsQm94ZXMgPSBbJl0gewotICAgICAgICAvLyBGSVhNRTogQWRkIHByb3Bl
ciBzdXBwb3J0IGZvciBjYXNlcyB3aGVuIHRoZSBpbmxpbmUgYm94IHdpdGggbGluZSBib3ggcmVs
YXRpdmUgYWxpZ25tZW50IGhhcyBhIGNoaWxkIGlubGluZSBib3gKLSAgICAgICAgLy8gd2l0aCBu
b24tbGluZSBib3ggcmVsYXRpdmUgYWxpZ25tZW50LgorICAgIGF1dG8gY29tcHV0ZUxpbmVCb3hM
b2dpY2FsSGVpZ2h0ID0gWyZdIHsKKyAgICAgICAgLy8gTGluZSBib3ggaGVpZ2h0IGNvbXB1dGF0
aW9uIGlzIGJhc2VkIG9uIHRoZSBsYXlvdXQgYm91bmRzIG9mIHRoZSBpbmxpbmUgYm94ZXMgYW5k
IG5vdCB0aGVpciBsb2dpY2FsIChhc2NlbnQvZGVzY2VudCkgZGltZW5zaW9ucy4KKyAgICAgICAg
c3RydWN0IEFic29sdXRlVG9wQW5kQm90dG9tIHsKKyAgICAgICAgICAgIElubGluZUxheW91dFVu
aXQgdG9wIHsgMCB9OworICAgICAgICAgICAgSW5saW5lTGF5b3V0VW5pdCBib3R0b20geyAwIH07
CisgICAgICAgIH07CisgICAgICAgIEhhc2hNYXA8TGluZUJveDo6SW5saW5lTGV2ZWxCb3gqLCBB
YnNvbHV0ZVRvcEFuZEJvdHRvbT4gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbU1h
cDsKKworICAgICAgICBhdXRvIG1pbmltdW1Mb2dpY2FsVG9wID0gT3B0aW9uYWw8SW5saW5lTGF5
b3V0VW5pdD4geyB9OworICAgICAgICBhdXRvIG1heGltdW1Mb2dpY2FsQm90dG9tID0gT3B0aW9u
YWw8SW5saW5lTGF5b3V0VW5pdD4geyB9OworICAgICAgICBpZiAoIXJvb3RJbmxpbmVCb3guaXNF
bXB0eSgpKSB7CisgICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9IElubGluZUxheW91dFVu
aXQgeyB9OworICAgICAgICAgICAgbWF4aW11bUxvZ2ljYWxCb3R0b20gPSByb290SW5saW5lQm94
LmxheW91dEJvdW5kcygpLmhlaWdodCgpOworICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNv
bHV0ZVRvcEFuZEJvdHRvbU1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIEFic29sdXRlVG9wQW5kQm90
dG9tIHsgKm1pbmltdW1Mb2dpY2FsVG9wLCAqbWF4aW11bUxvZ2ljYWxCb3R0b20gfSk7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZVRvcEFuZEJvdHRv
bU1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIEFic29sdXRlVG9wQW5kQm90dG9tIHsgfSk7CisKKyAg
ICAgICAgVmVjdG9yPExpbmVCb3g6OklubGluZUxldmVsQm94Kj4gbGluZUJveFJlbGF0aXZlSW5s
aW5lTGV2ZWxCb3hlczsKICAgICAgICAgZm9yIChhdXRvJiBpbmxpbmVMZXZlbEJveCA6IGxpbmVC
b3gubm9uUm9vdElubGluZUxldmVsQm94ZXMoKSkgewogICAgICAgICAgICAgYXV0byYgbGF5b3V0
Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJveCgpOwogICAgICAgICAgICAgaWYgKGlubGlu
ZUxldmVsQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkgewpAQCAtMzI0LDEyNCAr
MzMwLDE5MCBAQCB2b2lkIExpbmVCb3hCdWlsZGVyOjphbGlnbklubGluZUxldmVsQm94ZXNWZXJ0
aWNhbGx5QW5kQ29tcHV0ZUxpbmVCb3hIZWlnaHQoTGluZQogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgYXV0byYgcGFyZW50SW5saW5lQm94ID0g
bGluZUJveC5pbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gucGFyZW50KCkpOwor
ICAgICAgICAgICAgLy8gTG9naWNhbCB0b3AgaXMgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxp
bmUgYm94J3MgbGF5b3V0IGJvdW5kcy4KKyAgICAgICAgICAgIC8vIE5vdGUgdGhhdCB0aGlzIGxv
Z2ljYWwgdG9wIGlzIG5vdCB0aGUgZmluYWwgbG9naWNhbCB0b3Agb2YgdGhlIGlubGluZSBsZXZl
bCBib3guCisgICAgICAgICAgICAvLyBUaGlzIGlzIHRoZSBsb2dpY2FsIHRvcCBpbiB0aGUgY29u
dGV4dCBvZiB0aGUgbGF5b3V0IGJvdW5kcyBnZW9tZXRyeSB3aGljaCBtYXkgYmUgdmVyeSBkaWZm
ZXJlbnQgZnJvbSB0aGUgaW5saW5lIGJveCdzIG5vcm1hbCBnZW9tZXRyeS4KICAgICAgICAgICAg
IGF1dG8gbG9naWNhbFRvcCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAgICAgYXV0
byBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IElubGluZUxheW91dFVuaXQgeyB9
OwogICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7
Ci0gICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lOgotICAgICAgICAgICAg
ICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVs
Qm94LT5sYXlvdXRCb3VuZHMoKS5hc2NlbnQ7Ci0gICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZz
ZXRGcm9tUGFyZW50QmFzZWxpbmUgPSB7IH07Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRUb3A6IHsKLSAgICAgICAgICAgICAgICAv
LyBOb3RlIHRoYXQgVGV4dFRvcCBhbGlnbnMgd2l0aCB0aGUgaW5saW5lIGJveCdzIGZvbnQgbWV0
cmljcyB0b3AgKGFzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyB0b3AuCi0gICAgICAg
ICAgICAgICAgYXV0byBwYXJlbnRBc2NlbnQgPSBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3Mo
KS5hc2NlbnQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExvZ2ljYWxU
b3AgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gcGFyZW50QXNjZW50
OwotICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsVG9w
OwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gcGFy
ZW50QXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudDsKLSAgICAg
ICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgVmVydGlj
YWxBbGlnbjo6VGV4dEJvdHRvbTogewotICAgICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBUZXh0
Qm90dG9tIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAo
ZGVzY2VudCkgYW5kIG5vdCB0aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCi0gICAgICAgICAgICAg
ICAgYXV0byYgcGFyZW50Rm9udE1ldHJpY3MgPSBwYXJlbnRJbmxpbmVCb3guZm9udE1ldHJpY3Mo
KTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVudElubGluZUJveExheW91dEJvdW5kcyA9IHBh
cmVudElubGluZUJveC5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgICAgICAgICBhdXRvIHBhcmVu
dElubGluZUJveExvZ2ljYWxCb3R0b20gPSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuaGVp
Z2h0KCkgLSBwYXJlbnRJbmxpbmVCb3hMYXlvdXRCb3VuZHMuZGVzY2VudCArIHBhcmVudEZvbnRN
ZXRyaWNzLmRlc2NlbnQoKTsKLSAgICAgICAgICAgICAgICBhdXRvIGxheW91dEJvdW5kcyA9IGlu
bGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
ID0gcGFyZW50SW5saW5lQm94TG9naWNhbEJvdHRvbSAtIGxheW91dEJvdW5kcy5oZWlnaHQoKTsK
LSAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxheW91
dEJvdW5kcy5kZXNjZW50IC0gcGFyZW50Rm9udE1ldHJpY3MuZGVzY2VudCgpOworICAgICAgICAg
ICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpCYXNlbGluZTogeworICAgICAgICAgICAgICAgIGF1dG8g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKLSAgICAgICAgICAgICAgICBhdXRv
IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuaGVpZ2h0KCkgLyAyICsgcGFyZW50SW5saW5lQm94LmZvbnRNZXRyaWNzKCku
eEhlaWdodCgpIC8gMjsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5l
Qm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAg
ICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRv
cE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMo
KS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhlaWdodCgpIC8gMiAr
IHBhcmVudElubGluZUJveC5zdHlsZSgpLmZvbnRNZXRyaWNzKCkueEhlaWdodCgpIC8gMjsKKyAg
ICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygp
LmFzY2VudCAtIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxp
Z246OkJhc2VsaW5lTWlkZGxlOiB7CiAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhl
aWdodCgpIC8gMjsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94
LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwotICAgICAg
ICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gbG9naWNhbFRvcE9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5h
c2NlbnQ7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lOwog
ICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgY2FzZSBW
ZXJ0aWNhbEFsaWduOjpMZW5ndGg6IHsKLSAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGxh
eW91dEJveC5zdHlsZSgpOworICAgICAgICAgICAgICAgIGF1dG8mIHN0eWxlID0gaW5saW5lTGV2
ZWxCb3gtPnN0eWxlKCk7CiAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJv
bVBhcmVudEJhc2VsaW5lID0gZmxvYXRWYWx1ZUZvckxlbmd0aChzdHlsZS52ZXJ0aWNhbEFsaWdu
TGVuZ3RoKCksIHN0eWxlLmNvbXB1dGVkTGluZUhlaWdodCgpKSArIGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFy
ZW50SW5saW5lQm94LmJhc2VsaW5lKCkgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2Vs
aW5lOwotICAgICAgICAgICAgICAgIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0g
bG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSAtIGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElu
bGluZUJveC5sYXlvdXRCb3VuZHMoKS5hc2NlbnQgLSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVu
dEJhc2VsaW5lOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAg
ICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0VG9wOiB7CisgICAgICAgICAgICAgICAgLy8g
Tm90ZSB0aGF0IHRleHQtdG9wIGFsaWducyB3aXRoIHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRy
aWNzIHRvcCAoYXNjZW50KSBhbmQgbm90IHRoZSBsYXlvdXQgYm91bmRzIHRvcC4KKyAgICAgICAg
ICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94LmxheW91dEJvdW5kcygpLmFzY2Vu
dCAtIHBhcmVudElubGluZUJveC5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUZXh0Qm90dG9t
OiB7CisgICAgICAgICAgICAgICAgLy8gTm90ZSB0aGF0IHRleHQtYm90dG9tIGFsaWducyB3aXRo
IHRoZSBpbmxpbmUgYm94J3MgZm9udCBtZXRyaWNzIGJvdHRvbSAoZGVzY2VudCkgYW5kIG5vdCB0
aGUgbGF5b3V0IGJvdW5kcyBib3R0b20uCisgICAgICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxp
bmVCb3hMYXlvdXRCb3VuZHMgPSBwYXJlbnRJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCk7CisgICAg
ICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hMb2dpY2FsQm90dG9tID0gcGFyZW50SW5s
aW5lQm94TGF5b3V0Qm91bmRzLmhlaWdodCgpIC0gcGFyZW50SW5saW5lQm94TGF5b3V0Qm91bmRz
LmRlc2NlbnQgKyBwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpLnZhbHVlT3IoSW5saW5lTGF5b3V0
VW5pdCgpKTsKKyAgICAgICAgICAgICAgICBsb2dpY2FsVG9wID0gcGFyZW50SW5saW5lQm94TG9n
aWNhbEJvdHRvbSAtIGlubGluZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKTsKICAg
ICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGRlZmF1bHQ6
CiAgICAgICAgICAgICAgICAgQVNTRVJUX05PVF9JTVBMRU1FTlRFRF9ZRVQoKTsKICAgICAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlubGluZUxldmVsQm94
LT5zZXRMb2dpY2FsVG9wKGxvZ2ljYWxUb3ApOwotICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxp
bmVCb3hBYnNvbHV0ZUdlb21ldHJ5ID0gaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFw
LmdldCgmcGFyZW50SW5saW5lQm94KTsKLSAgICAgICAgICAgIGF1dG8gYWJzb2x1dGVMb2dpY2Fs
VG9wID0gcGFyZW50SW5saW5lQm94QWJzb2x1dGVHZW9tZXRyeS50b3AgKyBsb2dpY2FsVG9wOwor
ICAgICAgICAgICAgYXV0byBwYXJlbnRJbmxpbmVCb3hBYnNvbHV0ZVRvcEFuZEJvdHRvbSA9IGlu
bGluZUxldmVsQm94QWJzb2x1dGVUb3BBbmRCb3R0b21NYXAuZ2V0KCZwYXJlbnRJbmxpbmVCb3gp
OworICAgICAgICAgICAgYXV0byBhYnNvbHV0ZUxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3hB
YnNvbHV0ZVRvcEFuZEJvdHRvbS50b3AgKyBsb2dpY2FsVG9wOwogICAgICAgICAgICAgYXV0byBh
YnNvbHV0ZUxvZ2ljYWxCb3R0b20gPSBhYnNvbHV0ZUxvZ2ljYWxUb3AgKyBpbmxpbmVMZXZlbEJv
eC0+bGF5b3V0Qm91bmRzKCkuaGVpZ2h0KCk7Ci0gICAgICAgICAgICBhdXRvIGFic29sdXRlQmFz
ZWxpbmVPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gcGFyZW50SW5saW5lQm94QWJz
b2x1dGVHZW9tZXRyeS5iYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgKyBi
YXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGluZTsKLSAgICAgICAgICAgIGlubGluZUxldmVs
Qm94QWJzb2x1dGVHZW9tZXRyeU1hcC5hZGQoaW5saW5lTGV2ZWxCb3guZ2V0KCksIEFic29sdXRl
R2VvbWV0cnkgeyBhYnNvbHV0ZUxvZ2ljYWxUb3AsIGFic29sdXRlTG9naWNhbEJvdHRvbSwgYWJz
b2x1dGVCYXNlbGluZU9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUsIGlubGluZUxldmVs
Qm94LmdldCgpIH0pOwotCi0gICAgICAgICAgICBhdXRvIGFmZmVjdHNSb290SW5saW5lQm94VmVy
dGljYWxQb3NpdGlvbiA9IHF1aXJrcy5zaG91bGRJbmxpbmVMZXZlbEJveFN0cmV0Y2hMaW5lQm94
KGxpbmVCb3gsICppbmxpbmVMZXZlbEJveCk7Ci0gICAgICAgICAgICBpZiAoYWZmZWN0c1Jvb3RJ
bmxpbmVCb3hWZXJ0aWNhbFBvc2l0aW9uKQotICAgICAgICAgICAgICAgIG1heGltdW1Ub3BPZmZz
ZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gc3RkOjptYXgobWF4aW11bVRvcE9mZnNldEZy
b21Sb290SW5saW5lQm94QmFzZWxpbmUsIGFic29sdXRlQmFzZWxpbmVPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lICsgaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudCk7
Ci0gICAgICAgIH0KLSAgICB9OwotICAgIGFsaWduSW5saW5lQm94UmVsYXRpdmVJbmxpbmVMZXZl
bEJveGVzKCk7Ci0KLSAgICBhdXRvIGxpbmVCb3hMb2dpY2FsSGVpZ2h0ID0gSW5saW5lTGF5b3V0
VW5pdCB7IH07Ci0gICAgYXV0byBpbmxpbmVCb3hSZWxhdGl2ZUxvZ2ljYWxIZWlnaHQgPSBJbmxp
bmVMYXlvdXRVbml0IHsgfTsKLSAgICBhdXRvIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCA9
IFsmXSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQgc3VwcG9ydCBmb3IgbGF5b3V0IGJvdW5kcyBi
YXNlZCBsaW5lIGJveCBoZWlnaHQuCi0gICAgICAgIGF1dG8gbWluaW11bUxvZ2ljYWxUb3AgPSBP
cHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgICAgIGF1dG8gbWF4aW11bUxvZ2lj
YWxCb3R0b20gPSBPcHRpb25hbDxJbmxpbmVMYXlvdXRVbml0PiB7IH07Ci0gICAgICAgIGZvciAo
YXV0byBhYnNvbHV0ZUdlb21ldHJ5IDogaW5saW5lTGV2ZWxCb3hBYnNvbHV0ZUdlb21ldHJ5TWFw
LnZhbHVlcygpKSB7Ci0gICAgICAgICAgICBhdXRvJiBpbmxpbmVMZXZlbEJveCA9ICphYnNvbHV0
ZUdlb21ldHJ5LmlubGluZUxldmVsQm94OwotICAgICAgICAgICAgaWYgKCFxdWlya3Muc2hvdWxk
SW5saW5lTGV2ZWxCb3hTdHJldGNoTGluZUJveChsaW5lQm94LCBpbmxpbmVMZXZlbEJveCkpCi0g
ICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBtaW5pbXVtTG9naWNhbFRvcCA9
IHN0ZDo6bWluKG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3IoYWJzb2x1dGVHZW9tZXRyeS50b3Ap
LCBhYnNvbHV0ZUdlb21ldHJ5LnRvcCk7Ci0gICAgICAgICAgICBtYXhpbXVtTG9naWNhbEJvdHRv
bSA9IHN0ZDo6bWF4KG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlT3IoYWJzb2x1dGVHZW9tZXRy
eS5ib3R0b20pLCBhYnNvbHV0ZUdlb21ldHJ5LmJvdHRvbSk7CisgICAgICAgICAgICBpbmxpbmVM
ZXZlbEJveEFic29sdXRlVG9wQW5kQm90dG9tTWFwLmFkZChpbmxpbmVMZXZlbEJveC5nZXQoKSwg
QWJzb2x1dGVUb3BBbmRCb3R0b20geyBhYnNvbHV0ZUxvZ2ljYWxUb3AsIGFic29sdXRlTG9naWNh
bEJvdHRvbSB9KTsKKyAgICAgICAgICAgIC8vIFN0cmV0Y2ggdGhlIG1pbi9tYXggYWJzb2x1dGUg
dmFsdWVzIGlmIGFwcGxpY2FibGUuCisgICAgICAgICAgICBpZiAocXVpcmtzLnNob3VsZElubGlu
ZUxldmVsQm94U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmlubGluZUxldmVsQm94KSkgeworICAg
ICAgICAgICAgICAgIG1pbmltdW1Mb2dpY2FsVG9wID0gc3RkOjptaW4obWluaW11bUxvZ2ljYWxU
b3AudmFsdWVPcihhYnNvbHV0ZUxvZ2ljYWxUb3ApLCBhYnNvbHV0ZUxvZ2ljYWxUb3ApOworICAg
ICAgICAgICAgICAgIG1heGltdW1Mb2dpY2FsQm90dG9tID0gc3RkOjptYXgobWF4aW11bUxvZ2lj
YWxCb3R0b20udmFsdWVPcihhYnNvbHV0ZUxvZ2ljYWxCb3R0b20pLCBhYnNvbHV0ZUxvZ2ljYWxC
b3R0b20pOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGlubGluZUJveFJlbGF0
aXZlTG9naWNhbEhlaWdodCA9IG1heGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlT3IoSW5saW5lTGF5
b3V0VW5pdCgpKSAtIG1pbmltdW1Mb2dpY2FsVG9wLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgp
KTsKLSAgICAgICAgbGluZUJveExvZ2ljYWxIZWlnaHQgPSBpbmxpbmVCb3hSZWxhdGl2ZUxvZ2lj
YWxIZWlnaHQ7Ci0gICAgICAgIC8vIE5vdyBzdHJldGNoIHRoZSBsaW5lIGJveCB3aXRoIHRoZSBs
aW5lIGJveCByZWxhdGl2ZSBpbmxpbmUgbGV2ZWwgYm94ZXMuCisgICAgICAgIC8vIFRoZSBsaW5l
IGJveCBoZWlnaHQgY29tcHV0YXRpb24gaXMgYXMgZm9sbG93czoKKyAgICAgICAgLy8gMS4gU3Ry
ZXRjaCB0aGUgbGluZSBib3ggd2l0aCB0aGUgbm9uLWxpbmUtYm94IHJlbGF0aXZlIGFsaWduZWQg
aW5saW5lIGJveCBhYnNvbHV0ZSB0b3AgYW5kIGJvdHRvbSB2YWx1ZXMuCisgICAgICAgIC8vIDIu
IENoZWNrIGlmIHRoZSBsaW5lIGJveCByZWxhdGl2ZSBhbGlnbmVkIGlubGluZSBib3hlcyAodG9w
LCBib3R0b20gZXRjKSBoYXZlIGVub3VnaCByb29tIGFuZCBzdHJldGNoIHRoZSBsaW5lIGJveCBm
dXJ0aGVyIGlmIG5lZWRlZC4KKyAgICAgICAgYXV0byBsaW5lQm94TG9naWNhbEhlaWdodCA9IG1h
eGltdW1Mb2dpY2FsQm90dG9tLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKSAtIG1pbmltdW1M
b2dpY2FsVG9wLnZhbHVlT3IoSW5saW5lTGF5b3V0VW5pdCgpKTsKICAgICAgICAgZm9yIChhdXRv
KiBsaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxl
dmVsQm94ZXMpIHsKICAgICAgICAgICAgIGlmICghcXVpcmtzLnNob3VsZElubGluZUxldmVsQm94
U3RyZXRjaExpbmVCb3gobGluZUJveCwgKmxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94KSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGxpbmVCb3hMb2dpY2FsSGVp
Z2h0ID0gc3RkOjptYXgobGluZUJveExvZ2ljYWxIZWlnaHQsIGxpbmVCb3hSZWxhdGl2ZUlubGlu
ZUxldmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSk7CiAgICAgICAgIH0KKyAgICAgICAg
bGluZUJveC5zZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKICAgICB9Owog
ICAgIGNvbXB1dGVMaW5lQm94TG9naWNhbEhlaWdodCgpOwogCi0gICAgYXV0byBhZGp1c3RSb290
SW5saW5lQm94VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7Ci0gICAgICAgIC8vIEZJWE1FOiBBZGQg
c3VwcG9ydCBmb3IgY2FzZXMgd2hlbiB0aGUgc3RyZXRjaGluZyBpbmxpbmUgYm94ZXMgYXJlIG5v
dCBiYXNlbGluZSBhbGlnbmVkLgotICAgICAgICBhdXRvIHJvb3RJbmxpbmVCb3hMb2dpY2FsVG9w
ID0gbWF4aW11bVRvcE9mZnNldEZyb21Sb290SW5saW5lQm94QmFzZWxpbmUgLSByb290SW5saW5l
Qm94LmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICBhdXRvIGNvbXB1dGVSb290SW5saW5lQm94
VmVydGljYWxQb3NpdGlvbiA9IFsmXSB7CisgICAgICAgIEhhc2hNYXA8TGluZUJveDo6SW5saW5l
TGV2ZWxCb3gqLCBJbmxpbmVMYXlvdXRVbml0PiBpbmxpbmVMZXZlbEJveEFic29sdXRlQmFzZWxp
bmVPZmZzZXRNYXA7CisgICAgICAgIGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNl
dE1hcC5hZGQoJnJvb3RJbmxpbmVCb3gsIElubGluZUxheW91dFVuaXQgeyB9KTsKKworICAgICAg
ICBhdXRvIG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lID0gcm9vdElu
bGluZUJveC5pc0VtcHR5KCkgPyBJbmxpbmVMYXlvdXRVbml0KCkgOiByb290SW5saW5lQm94Lmxh
eW91dEJvdW5kcygpLmFzY2VudDsKKworICAgICAgICBmb3IgKGF1dG8mIGlubGluZUxldmVsQm94
IDogbGluZUJveC5ub25Sb290SW5saW5lTGV2ZWxCb3hlcygpKSB7CisgICAgICAgICAgICBhdXRv
IGFic29sdXRlQmFzZWxpbmVPZmZzZXQgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKKyAgICAgICAg
ICAgIGlmICghaW5saW5lTGV2ZWxCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7
CisgICAgICAgICAgICAgICAgYXV0byYgbGF5b3V0Qm94ID0gaW5saW5lTGV2ZWxCb3gtPmxheW91
dEJveCgpOworICAgICAgICAgICAgICAgIGF1dG8mIHBhcmVudElubGluZUJveCA9IGxpbmVCb3gu
aW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gobGF5b3V0Qm94LnBhcmVudCgpKTsKKyAgICAgICAg
ICAgICAgICBhdXRvIGJhc2VsaW5lT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gSW5saW5lTGF5
b3V0VW5pdCB7IH07CisKKyAgICAgICAgICAgICAgICBzd2l0Y2ggKGlubGluZUxldmVsQm94LT52
ZXJ0aWNhbEFsaWduKCkpIHsKKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJh
c2VsaW5lOgorICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNl
bGluZSA9IHsgfTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
Y2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBs
b2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gKGlubGluZUxldmVsQm94LT5sYXlv
dXRCb3VuZHMoKS5oZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3guc3R5bGUoKS5mb250TWV0
cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9mZnNl
dEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
LSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6
QmFzZWxpbmVNaWRkbGU6IHsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zm
c2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5saW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmhl
aWdodCgpIC8gMjsKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lIC0gaW5saW5lTGV2
ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246Okxlbmd0aDogewor
ICAgICAgICAgICAgICAgICAgICBhdXRvJiBzdHlsZSA9IGlubGluZUxldmVsQm94LT5zdHlsZSgp
OworICAgICAgICAgICAgICAgICAgICBhdXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBmbG9hdFZh
bHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRpY2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRM
aW5lSGVpZ2h0KCkpOworICAgICAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmUgPSB2ZXJ0aWNhbEFsaWduT2Zmc2V0ICsgaW5saW5lTGV2ZWxCb3gt
PmxheW91dEJvdW5kcygpLmhlaWdodCgpOworICAgICAgICAgICAgICAgICAgICBiYXNlbGluZU9m
ZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxp
bmUgLSBpbmxpbmVMZXZlbEJveC0+YmFzZWxpbmUoKTsKKyAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGln
bjo6VGV4dFRvcDoKKyAgICAgICAgICAgICAgICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50
QmFzZWxpbmUgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5hc2NlbnQ7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6VGV4dEJvdHRvbToKKyAgICAgICAgICAgICAg
ICAgICAgYmFzZWxpbmVPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUgPSBpbmxpbmVMZXZlbEJveC0+
bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtICpwYXJlbnRJbmxpbmVCb3guZGVzY2VudCgpOworICAg
ICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBkZWZhdWx0OgorICAgICAg
ICAgICAgICAgICAgICBBU1NFUlRfTk9UX0lNUExFTUVOVEVEX1lFVCgpOworICAgICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYWJzb2x1
dGVCYXNlbGluZU9mZnNldCA9IGlubGluZUxldmVsQm94QWJzb2x1dGVCYXNlbGluZU9mZnNldE1h
cC5nZXQoJnBhcmVudElubGluZUJveCkgKyBiYXNlbGluZU9mZnNldEZyb21QYXJlbnRCYXNlbGlu
ZTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc3dpdGNoIChpbmxpbmVM
ZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICAgICAgY2FzZSBWZXJ0aWNh
bEFsaWduOjpUb3A6IHsKKyAgICAgICAgICAgICAgICAgICAgYWJzb2x1dGVCYXNlbGluZU9mZnNl
dCA9IHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gt
PmxheW91dEJvdW5kcygpLmFzY2VudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6Qm90dG9t
OiB7CisgICAgICAgICAgICAgICAgICAgIGFic29sdXRlQmFzZWxpbmVPZmZzZXQgPSBpbmxpbmVM
ZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIHJvb3RJbmxpbmVCb3gubGF5b3V0Qm91
bmRzKCkuZGVzY2VudDsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAg
ICAgfQorICAgICAgICAgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICAgICAgICAgIEFTU0VS
VF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlubGluZUxldmVsQm94
QWJzb2x1dGVCYXNlbGluZU9mZnNldE1hcC5hZGQoaW5saW5lTGV2ZWxCb3guZ2V0KCksIGFic29s
dXRlQmFzZWxpbmVPZmZzZXQpOworICAgICAgICAgICAgYXV0byBhZmZlY3RzUm9vdElubGluZUJv
eFZlcnRpY2FsUG9zaXRpb24gPSBxdWlya3Muc2hvdWxkSW5saW5lTGV2ZWxCb3hTdHJldGNoTGlu
ZUJveChsaW5lQm94LCAqaW5saW5lTGV2ZWxCb3gpOworICAgICAgICAgICAgaWYgKGFmZmVjdHNS
b290SW5saW5lQm94VmVydGljYWxQb3NpdGlvbikKKyAgICAgICAgICAgICAgICBtYXhpbXVtVG9w
T2Zmc2V0RnJvbVJvb3RJbmxpbmVCb3hCYXNlbGluZSA9IHN0ZDo6bWF4KG1heGltdW1Ub3BPZmZz
ZXRGcm9tUm9vdElubGluZUJveEJhc2VsaW5lLCBhYnNvbHV0ZUJhc2VsaW5lT2Zmc2V0ICsgaW5s
aW5lTGV2ZWxCb3gtPmxheW91dEJvdW5kcygpLmFzY2VudCk7CisgICAgICAgIH0KKyAgICAgICAg
YXV0byByb290SW5saW5lQm94TG9naWNhbFRvcCA9IG1heGltdW1Ub3BPZmZzZXRGcm9tUm9vdElu
bGluZUJveEJhc2VsaW5lIC0gcm9vdElubGluZUJveC5iYXNlbGluZSgpOwogICAgICAgICByb290
SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveExvZ2ljYWxUb3ApOwogICAgIH07
Ci0gICAgYWRqdXN0Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKKyAgICBjb21wdXRl
Um9vdElubGluZUJveFZlcnRpY2FsUG9zaXRpb24oKTsKIAotICAgIGF1dG8gYWxpZ25MaW5lQm94
UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzID0gWyZdIHsKLSAgICAgICAgZm9yIChhdXRvKiBpbmxp
bmVMZXZlbEJveCA6IGxpbmVCb3hSZWxhdGl2ZUlubGluZUxldmVsQm94ZXMpIHsKKyAgICBhdXRv
IGFsaWduSW5saW5lTGV2ZWxCb3hlcyA9IFsmXSB7CisgICAgICAgIGZvciAoYXV0byYgaW5saW5l
TGV2ZWxCb3ggOiBsaW5lQm94Lm5vblJvb3RJbmxpbmVMZXZlbEJveGVzKCkpIHsKICAgICAgICAg
ICAgIGF1dG8mIGxheW91dEJveCA9IGlubGluZUxldmVsQm94LT5sYXlvdXRCb3goKTsKLSAgICAg
ICAgICAgIGF1dG8gdmVydGljYWxBbGlnbm1lbnQgPSBsYXlvdXRCb3guc3R5bGUoKS52ZXJ0aWNh
bEFsaWduKCk7CisgICAgICAgICAgICBhdXRvJiBwYXJlbnRJbmxpbmVCb3ggPSBsaW5lQm94Lmlu
bGluZUxldmVsQm94Rm9yTGF5b3V0Qm94KGxheW91dEJveC5wYXJlbnQoKSk7CiAgICAgICAgICAg
ICBhdXRvIGxvZ2ljYWxUb3AgPSBJbmxpbmVMYXlvdXRVbml0IHsgfTsKLSAgICAgICAgICAgIGF1
dG8gcm9vdElubGluZUJveE9mZnNldCA9IElubGluZUxheW91dFVuaXQgeyB9OwotICAgICAgICAg
ICAgc3dpdGNoICh2ZXJ0aWNhbEFsaWdubWVudCkgeworICAgICAgICAgICAgc3dpdGNoIChpbmxp
bmVMZXZlbEJveC0+dmVydGljYWxBbGlnbigpKSB7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2Fs
QWxpZ246OkJhc2VsaW5lOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxp
bmVCb3guYmFzZWxpbmUoKSAtIGlubGluZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpNaWRkbGU6IHsK
KyAgICAgICAgICAgICAgICBhdXRvIGxvZ2ljYWxUb3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmUg
PSAoaW5saW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDIgKyBwYXJlbnRJbmxpbmVCb3gu
c3R5bGUoKS5mb250TWV0cmljcygpLnhIZWlnaHQoKSAvIDIpOworICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxUb3BPZmZzZXRG
cm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OkJhc2VsaW5lTWlkZGxlOiB7CisgICAg
ICAgICAgICAgICAgYXV0byBsb2dpY2FsVG9wT2Zmc2V0RnJvbVBhcmVudEJhc2VsaW5lID0gaW5s
aW5lTGV2ZWxCb3gtPmxvZ2ljYWxIZWlnaHQoKSAvIDI7CisgICAgICAgICAgICAgICAgbG9naWNh
bFRvcCA9IHBhcmVudElubGluZUJveC5iYXNlbGluZSgpIC0gbG9naWNhbFRvcE9mZnNldEZyb21Q
YXJlbnRCYXNlbGluZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgIGNhc2UgVmVydGljYWxBbGlnbjo6TGVuZ3RoOiB7CisgICAgICAgICAgICAgICAg
YXV0byYgc3R5bGUgPSBpbmxpbmVMZXZlbEJveC0+c3R5bGUoKTsKKyAgICAgICAgICAgICAgICBh
dXRvIHZlcnRpY2FsQWxpZ25PZmZzZXQgPSBmbG9hdFZhbHVlRm9yTGVuZ3RoKHN0eWxlLnZlcnRp
Y2FsQWxpZ25MZW5ndGgoKSwgc3R5bGUuY29tcHV0ZWRMaW5lSGVpZ2h0KCkpOworICAgICAgICAg
ICAgICAgIGF1dG8gbG9naWNhbFRvcE9mZnNldEZyb21QYXJlbnRCYXNlbGluZSA9IHZlcnRpY2Fs
QWxpZ25PZmZzZXQgKyBpbmxpbmVMZXZlbEJveC0+bG9naWNhbEhlaWdodCgpOworICAgICAgICAg
ICAgICAgIGxvZ2ljYWxUb3AgPSBwYXJlbnRJbmxpbmVCb3guYmFzZWxpbmUoKSAtIGxvZ2ljYWxU
b3BPZmZzZXRGcm9tUGFyZW50QmFzZWxpbmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgICAgICB9CisgICAgICAgICAgICAvLyBOb3RlIHRoYXQgKHRleHQpdG9wL2JvdHRvbSBhbGln
biB0aGVpciBsYXlvdXQgYm91bmRzLgorICAgICAgICAgICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpU
ZXh0VG9wOgorICAgICAgICAgICAgICAgIGxvZ2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5
b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFZlcnRpY2FsQWxpZ246OlRleHRCb3R0
b206CisgICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC5sb2dpY2Fs
SGVpZ2h0KCkgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuZGVzY2VudCAtIGlubGlu
ZUxldmVsQm94LT5iYXNlbGluZSgpOworICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAg
ICAgY2FzZSBWZXJ0aWNhbEFsaWduOjpUb3A6Ci0gICAgICAgICAgICAgICAgbG9naWNhbFRvcCA9
IHsgfTsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBpcyBu
b3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94LgorICAgICAgICAgICAgICAgIGxv
Z2ljYWxUb3AgPSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCkuYXNjZW50IC0gaW5saW5l
TGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICBjYXNlIFZlcnRpY2FsQWxpZ246OkJvdHRvbToKLSAgICAgICAgICAgICAgICBsb2dpY2FsVG9w
ID0gbGluZUJveExvZ2ljYWxIZWlnaHQgLSBpbmxpbmVMZXZlbEJveC0+bGF5b3V0Qm91bmRzKCku
aGVpZ2h0KCk7Ci0gICAgICAgICAgICAgICAgcm9vdElubGluZUJveE9mZnNldCA9IGlubGluZUxl
dmVsQm94LT5sYXlvdXRCb3VuZHMoKS5oZWlnaHQoKSAtIGlubGluZUJveFJlbGF0aXZlTG9naWNh
bEhlaWdodDsKKyAgICAgICAgICAgICAgICAvLyBOb3RlIHRoYXQgdGhpcyBsb2dpY2FsIHRvcCBp
cyBub3QgcmVsYXRpdmUgdG8gdGhlIHBhcmVudCBpbmxpbmUgYm94LgorICAgICAgICAgICAgICAg
IGxvZ2ljYWxUb3AgPSBsaW5lQm94LmxvZ2ljYWxIZWlnaHQoKSAtIGlubGluZUxldmVsQm94LT5s
YXlvdXRCb3VuZHMoKS5kZXNjZW50IC0gaW5saW5lTGV2ZWxCb3gtPmJhc2VsaW5lKCk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAg
IEFTU0VSVF9OT1RfSU1QTEVNRU5URURfWUVUKCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgICAgICB9CiAgICAgICAgICAgICBpbmxpbmVMZXZlbEJveC0+c2V0TG9naWNhbFRvcChs
b2dpY2FsVG9wKTsKLSAgICAgICAgICAgIGlmIChyb290SW5saW5lQm94T2Zmc2V0ID4gMCkKLSAg
ICAgICAgICAgICAgICByb290SW5saW5lQm94LnNldExvZ2ljYWxUb3Aocm9vdElubGluZUJveC5s
b2dpY2FsVG9wKCkgKyByb290SW5saW5lQm94T2Zmc2V0KTsKICAgICAgICAgfQogICAgIH07Ci0g
ICAgYWxpZ25MaW5lQm94UmVsYXRpdmVJbmxpbmVMZXZlbEJveGVzKCk7Ci0gICAgbGluZUJveC5z
ZXRMb2dpY2FsSGVpZ2h0KGxpbmVCb3hMb2dpY2FsSGVpZ2h0KTsKKyAgICBhbGlnbklubGluZUxl
dmVsQm94ZXMoKTsKIH0KIAogTGluZUJveCBJbmxpbmVGb3JtYXR0aW5nQ29udGV4dDo6R2VvbWV0
cnk6OmxpbmVCb3hGb3JMaW5lQ29udGVudChjb25zdCBMaW5lQnVpbGRlcjo6TGluZUNvbnRlbnQm
IGxpbmVDb250ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZv
cm1hdHRpbmcvSW5saW5lTGluZUJveC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5l
Zm9ybWF0dGluZy9JbmxpbmVMaW5lQm94LmNwcAppbmRleCBkMjJhZGI2NjZlZjI2ZWRlMzA4ZjJm
ZWI1ZGFiM2Q3NTFiYWJhZWQ5Li5lZGRjZDQwZDdjNzcyMGMwODlmNjFmY2ExMDhlZDEwMTJlMDUx
OTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9J
bmxpbmVMaW5lQm94LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0
dGluZy9JbmxpbmVMaW5lQm94LmNwcApAQCAtODYsNyArODYsNyBAQCBJbmxpbmVSZWN0IExpbmVC
b3g6OmxvZ2ljYWxSZWN0Rm9yVGV4dFJ1bihjb25zdCBMaW5lOjpSdW4mIHJ1bikgY29uc3QKICAg
ICBBU1NFUlQocnVuLmlzVGV4dCgpIHx8IHJ1bi5pc0xpbmVCcmVhaygpKTsKICAgICBhdXRvKiBw
YXJlbnRJbmxpbmVCb3ggPSAmaW5saW5lTGV2ZWxCb3hGb3JMYXlvdXRCb3gocnVuLmxheW91dEJv
eCgpLnBhcmVudCgpKTsKICAgICBBU1NFUlQocGFyZW50SW5saW5lQm94LT5pc0lubGluZUJveCgp
KTsKLSAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+Zm9udE1ldHJpY3Mo
KTsKKyAgICBhdXRvJiBmb250TWV0cmljcyA9IHBhcmVudElubGluZUJveC0+c3R5bGUoKS5mb250
TWV0cmljcygpOwogICAgIGF1dG8gcnVubG9naWNhbFRvcCA9IHBhcmVudElubGluZUJveC0+bG9n
aWNhbFRvcCgpICsgcGFyZW50SW5saW5lQm94LT5iYXNlbGluZSgpIC0gZm9udE1ldHJpY3MuYXNj
ZW50KCk7CiAKICAgICB3aGlsZSAocGFyZW50SW5saW5lQm94ICE9IG1fcm9vdElubGluZUJveC5n
ZXQoKSAmJiAhcGFyZW50SW5saW5lQm94LT5oYXNMaW5lQm94UmVsYXRpdmVBbGlnbm1lbnQoKSkg
ewpAQCAtMTAzLDExICsxMDMsMTIgQEAgSW5saW5lUmVjdCBMaW5lQm94Ojpsb2dpY2FsUmVjdEZv
cklubGluZUxldmVsQm94KGNvbnN0IEJveCYgbGF5b3V0Qm94KSBjb25zdAogICAgIGF1dG8qIGlu
bGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChsYXlvdXRCb3gpOwogICAgIGF1
dG8gaW5saW5lQm94TG9naWNhbFJlY3QgPSBpbmxpbmVCb3gtPmxvZ2ljYWxSZWN0KCk7CiAgICAg
YXV0byBpbmxpbmVCb3hBYnNvbHV0ZWxvZ2ljYWxUb3AgPSBpbmxpbmVCb3gtPmxvZ2ljYWxUb3Ao
KTsKLQotICAgIHdoaWxlIChpbmxpbmVCb3ggIT0gbV9yb290SW5saW5lQm94LmdldCgpICYmICFp
bmxpbmVCb3gtPmhhc0xpbmVCb3hSZWxhdGl2ZUFsaWdubWVudCgpKSB7Ci0gICAgICAgIGlubGlu
ZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91dEJveCgp
LnBhcmVudCgpKTsKLSAgICAgICAgQVNTRVJUKGlubGluZUJveC0+aXNJbmxpbmVCb3goKSk7Ci0g
ICAgICAgIGlubGluZUJveEFic29sdXRlbG9naWNhbFRvcCArPSBpbmxpbmVCb3gtPmxvZ2ljYWxU
b3AoKTsKKyAgICBpZiAoIWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkp
IHsKKyAgICAgICAgd2hpbGUgKGlubGluZUJveCAhPSBtX3Jvb3RJbmxpbmVCb3guZ2V0KCkgJiYg
IWlubGluZUJveC0+aGFzTGluZUJveFJlbGF0aXZlQWxpZ25tZW50KCkpIHsKKyAgICAgICAgICAg
IGlubGluZUJveCA9ICZpbmxpbmVMZXZlbEJveEZvckxheW91dEJveChpbmxpbmVCb3gtPmxheW91
dEJveCgpLnBhcmVudCgpKTsKKyAgICAgICAgICAgIEFTU0VSVChpbmxpbmVCb3gtPmlzSW5saW5l
Qm94KCkpOworICAgICAgICAgICAgaW5saW5lQm94QWJzb2x1dGVsb2dpY2FsVG9wICs9IGlubGlu
ZUJveC0+bG9naWNhbFRvcCgpOworICAgICAgICB9CiAgICAgfQogICAgIHJldHVybiB7IGlubGlu
ZUJveEFic29sdXRlbG9naWNhbFRvcCwgaW5saW5lQm94TG9naWNhbFJlY3QubGVmdCgpLCBpbmxp
bmVCb3hMb2dpY2FsUmVjdC53aWR0aCgpLCBpbmxpbmVCb3hMb2dpY2FsUmVjdC5oZWlnaHQoKSB9
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oIGIvU291cmNlL1dlYkNvcmUvbGF5b3V0L2lubGluZWZvcm1hdHRpbmcv
SW5saW5lTGluZUJveC5oCmluZGV4IGVhZWYyMjgwN2JlYjJlM2RkMWViZGZmZTUxM2ZmOTA4Njky
NmU1MDkuLmJjNjRlN2Y5OTZhNTBiNzRiOTJkMTQwZDAyYWUwMDU0YjBlZWRkMjYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xheW91dC9pbmxpbmVmb3JtYXR0aW5nL0lubGluZUxpbmVCb3gu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sYXlvdXQvaW5saW5lZm9ybWF0dGluZy9JbmxpbmVMaW5l
Qm94LmgKQEAgLTg3LDkgKzg3LDkgQEAgcHVibGljOgogICAgICAgICBib29sIGlzRW1wdHkoKSBj
b25zdCB7IHJldHVybiBtX2lzRW1wdHk7IH0KICAgICAgICAgdm9pZCBzZXRJc05vbkVtcHR5KCkg
eyBtX2lzRW1wdHkgPSBmYWxzZTsgfQogCi0gICAgICAgIGNvbnN0IEZvbnRNZXRyaWNzJiBmb250
TWV0cmljcygpIGNvbnN0IHsgcmV0dXJuIGxheW91dEJveCgpLnN0eWxlKCkuZm9udE1ldHJpY3Mo
KTsgfQogICAgICAgICBWZXJ0aWNhbEFsaWduIHZlcnRpY2FsQWxpZ24oKSBjb25zdCB7IHJldHVy
biBsYXlvdXRCb3goKS5zdHlsZSgpLnZlcnRpY2FsQWxpZ24oKTsgfQogICAgICAgICBjb25zdCBC
b3gmIGxheW91dEJveCgpIGNvbnN0IHsgcmV0dXJuICptX2xheW91dEJveDsgfQorICAgICAgICBj
b25zdCBSZW5kZXJTdHlsZSYgc3R5bGUoKSBjb25zdCB7IHJldHVybiBtX2xheW91dEJveC0+c3R5
bGUoKTsgfQogCiAgICAgICAgIGJvb2wgaXNJbmxpbmVCb3goKSBjb25zdCB7IHJldHVybiBtX3R5
cGUgPT0gVHlwZTo6SW5saW5lQm94IHx8IG1fdHlwZSA9PSBUeXBlOjpSb290SW5saW5lQm94OyB9
CiAgICAgICAgIGJvb2wgaXNSb290SW5saW5lQm94KCkgY29uc3QgeyByZXR1cm4gbV90eXBlID09
IFR5cGU6OlJvb3RJbmxpbmVCb3g7IH0K
</data>

          </attachment>
      

    </bug>

</bugzilla>