<?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>237908</bug_id>
          
          <creation_ts>2022-03-15 10:49:10 -0700</creation_ts>
          <short_desc>[fast-cq] REGRESSION(r291270): Changes need better build-time guards</short_desc>
          <delta_ts>2022-03-16 02:00:38 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</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>
          
          <blocked>237897</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>basuke</cc>
    
    <cc>dpino</cc>
    
    <cc>jmason</cc>
    
    <cc>lmoura</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zan</cc>
    
    <cc>zdobersek</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1851379</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-03-15 10:49:10 -0700</bug_when>
    <thetext>https://commits.webkit.org/r291294 introduced a regression:
291270 Changes need better build-time guards

This is an automatic bug report generated by webkitbot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851381</commentid>
    <comment_count>1</comment_count>
      <attachid>454728</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2022-03-15 10:49:16 -0700</bug_when>
    <thetext>Created attachment 454728
REVERT of r291294

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the revert will be successful.  This process takes approximately 15 minutes.

If you would like to land the revert faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851391</commentid>
    <comment_count>2</comment_count>
      <attachid>454732</attachid>
    <who name="Zan Dobersek">zan</who>
    <bug_when>2022-03-15 11:02:58 -0700</bug_when>
    <thetext>Created attachment 454732
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851394</commentid>
    <comment_count>3</comment_count>
    <who name="Basuke Suzuki">basuke</who>
    <bug_when>2022-03-15 11:07:04 -0700</bug_when>
    <thetext>*** Bug 237904 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851406</commentid>
    <comment_count>4</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2022-03-15 11:41:24 -0700</bug_when>
    <thetext>*** Bug 237887 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851458</commentid>
    <comment_count>5</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-15 13:10:44 -0700</bug_when>
    <thetext>Committed r291309 (248448@main): &lt;https://commits.webkit.org/248448@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 454732.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851459</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-03-15 13:11:34 -0700</bug_when>
    <thetext>&lt;rdar://problem/90326149&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851694</commentid>
    <comment_count>7</comment_count>
    <who name="Alejandro G. Castro">alex</who>
    <bug_when>2022-03-16 02:00:38 -0700</bug_when>
    <thetext>*** Bug 237886 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454728</attachid>
            <date>2022-03-15 10:49:16 -0700</date>
            <delta_ts>2022-03-15 11:02:53 -0700</delta_ts>
            <desc>REVERT of r291294</desc>
            <filename>bug-237908-20220315104916.patch</filename>
            <type>text/plain</type>
            <size>1799</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM3YzhhN2Y0MDFkODMy
NDc1ODYwMWQzOTAwOGFiNmZmZmYzMmNkNC4uZTY3NjExNGYwMDBjMTA4MTZiNGVmNzBlN2E1NjU4
Njc0ZDA4YzBiOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIyLTAzLTE1ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByZXZlcnRpbmcgcjI5MTI5NC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzNzkwOAorCisgICAgICAgIDI5MTI3MCBDaGFuZ2VzIG5lZWQgYmV0dGVy
IGJ1aWxkLXRpbWUgZ3VhcmRzCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAg
ICAgICJbR1N0cmVhbWVyXSBVbnJldmlld2VkLCB0ZW50YXRpdmUgY2xhbmcgYnVpbGQgZml4IGFm
dGVyCisgICAgICAgIDI0ODQxOUBtYWluIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MjM3ODk3CisgICAgICAgIGh0dHBzOi8vY29tbWl0cy53ZWJraXQu
b3JnL3IyOTEyOTQKKwogMjAyMi0wMy0xNSAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5j
b20+CiAKICAgICAgICAgYmFja2dyb3VuZC1jbGlwOnRleHQgZG9lc24ndCB3b3JrIHdpdGggZGlz
cGxheTpmbGV4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9n
c3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIu
Y3BwCmluZGV4IGViMDkwYzc4OGQxOTg0N2QxMTcyODFiYzUxYzI4MjQ0ODRhNTdkZWEuLmI0OWI5
ZmQxZGRjNDNhZDA0ZjkxNjA0MjRiMjllODA1Mzc1NjViZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwCkBAIC0zMTE3LDcgKzMxMTcsNyBAQCB2
b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6cHVzaERNQUJ1ZlRvQ29tcG9zaXRvcigp
CiAgICAgLy8gYW5kIGNvcHkgb3ZlciB0aGUgZGF0YSBmb3IgZWFjaCBwbGFuZS4KICAgICBHQk1C
dWZmZXJTd2FwY2hhaW46OkJ1ZmZlckRlc2NyaXB0aW9uIGJ1ZmZlckRlc2NyaXB0aW9uIHsKICAg
ICAgICAgRE1BQnVmRm9ybWF0OjpjcmVhdGUoZm91cmNjVmFsdWUoR1NUX1ZJREVPX0lORk9fRk9S
TUFUKCZ2aWRlb0luZm8pKSksCi0gICAgICAgIHN0YXRpY19jYXN0PHVpbnQzMl90PkdTVF9WSURF
T19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBzdGF0aWNfY2FzdDx1aW50MzJfdD5HU1RfVklERU9f
SU5GT19IRUlHSFQoJnZpZGVvSW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIKCZ2
aWRlb0luZm8pLCBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbyksCiAgICAgfTsKICAg
ICBpZiAoYnVmZmVyRGVzY3JpcHRpb24uZm9ybWF0LmZvdXJjYyA9PSBETUFCdWZGb3JtYXQ6OkZv
dXJDQzo6SW52YWxpZCkKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454732</attachid>
            <date>2022-03-15 11:02:58 -0700</date>
            <delta_ts>2022-03-15 13:57:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-237908-20220315190256.patch</filename>
            <type>text/plain</type>
            <size>74733</size>
            <attacher name="Zan Dobersek">zan</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMmM3YzhhN2Y0MDFkODMy
NDc1ODYwMWQzOTAwOGFiNmZmZmYzMmNkNC4uYmE3NGU2YjYwYWViZWQ4N2M0MzMxNzQwYTlmMmZm
ZjIyYTAxNGE0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM5IEBACisyMDIyLTAzLTE1ICBaYW4g
RG9iZXJzZWsgIDx6ZG9iZXJzZWtAaWdhbGlhLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9OKHIy
OTEyNzApOiBDaGFuZ2VzIG5lZWQgYmV0dGVyIGJ1aWxkLXRpbWUgZ3VhcmRzCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzc5MDgKKworICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMjkxMjcwIGFuZCByMjkxMjk0IHVudGlsIHByb3BlciBi
dWlsZCBndWFyZHMKKyAgICAgICAgYW5kIHJlbGV2YW50IGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBh
cmUgaW50cm9kdWNlZC4KKworICAgICAgICAqIFNvdXJjZXNHVEsudHh0OgorICAgICAgICAqIFNv
dXJjZXNXUEUudHh0OgorICAgICAgICAqIHBsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21ha2U6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0RNQUJ1ZkZvcm1hdC5oOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2dibS9ETUFCdWZPYmplY3QuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nYm0vRE1BQnVmUmVsZWFzZUZsYWcuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVmZmVyU3dhcGNoYWlu
LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVmZmVy
U3dhcGNoYWluLmg6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5jcHA6CisgICAgICAgICh3ZWJLaXRETUFCdWZW
aWRlb1NpbmtQcm9iZVBsYXRmb3JtKToKKyAgICAgICAgKHdlYktpdERNQUJ1ZlZpZGVvU2lua0lz
RW5hYmxlZCk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpNZWRpYVBsYXllclByaXZhdGVHU3Ry
ZWFtZXIpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpw
bGF0Zm9ybUxheWVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0
ZUdTdHJlYW1lcjo6cHVzaFRleHR1cmVUb0NvbXBvc2l0b3IpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWludCk6CisgICAgICAgIChX
ZWJDb3JlOjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OmNyZWF0ZVZpZGVvU2luayk6Cisg
ICAgICAgIChXZWJDb3JlOjpmb3VyY2NWYWx1ZSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3Jl
OjpNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnB1c2hETUFCdWZUb0NvbXBvc2l0b3IpOiBE
ZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpj
cmVhdGVWaWRlb1NpbmtETUFCdWYpOiBEZWxldGVkLgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVy
ZU1hcHBlckltcGwuY3BwOgorICAgICAgICAoTmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGw6OmNyZWF0ZUZhY3RvcnkpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL25p
Y29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXll
clByb3h5RE1BQnVmLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy90
ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zi5oOiBSZW1vdmVkLgor
CiAyMDIyLTAzLTE1ICBBbnR0aSBLb2l2aXN0byAgPGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAg
ICBiYWNrZ3JvdW5kLWNsaXA6dGV4dCBkb2Vzbid0IHdvcmsgd2l0aCBkaXNwbGF5OmZsZXgKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNHVEsudHh0IGIvU291cmNlL1dlYkNvcmUv
U291cmNlc0dUSy50eHQKaW5kZXggYjVlNThjY2Q3NjE5ZTQ3Yzc3Y2I3YjJjNmQ3YmE1ODFjYWIw
MjU2My4uNGUzMDMzNWNmYWQ5ZWQ3OWIwNTczNzMxZjUyNDEyY2JiOWQyNmIzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291
cmNlc0dUSy50eHQKQEAgLTEwMSw3ICsxMDEsNiBAQCBwbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xD
b250ZXh0RUdMTGliV1BFLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0xXYXlsYW5kLmNwcCBAbm8tdW5pZnkKIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENv
bnRleHRFR0xYMTEuY3BwIEBuby11bmlmeQogCi1wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVm
ZmVyU3dhcGNoYWluLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dCTURldmljZS5jcHAKIAog
cGxhdGZvcm0vZ3JhcGhpY3MvZ2x4L0dMQ29udGV4dEdMWC5jcHAgQG5vLXVuaWZ5CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJj
ZXNXUEUudHh0CmluZGV4IGY4YzhjNzA0OTJmYjA5ZDEwOWFlZDExODRiN2M2OWNhMjVlYjJmMjcu
LjU3ZmE3Y2E2N2M0ZGVhNGE5ZTViOTg0NWU3MmFlMjU4NzNkOGNmNTUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNX
UEUudHh0CkBAIC04OSw3ICs4OSw2IEBAIHBsYXRmb3JtL2dyYXBoaWNzL1BsYXRmb3JtRGlzcGxh
eS5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCiBwbGF0Zm9ybS9n
cmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMTGliV1BFLmNwcAogCi1wbGF0Zm9ybS9ncmFwaGljcy9n
Ym0vR0JNQnVmZmVyU3dhcGNoYWluLmNwcAogcGxhdGZvcm0vZ3JhcGhpY3MvZ2JtL0dCTURldmlj
ZS5jcHAKIAogcGxhdGZvcm0vZ3JhcGhpY3MvbGlid3BlL1BsYXRmb3JtRGlzcGxheUxpYldQRS5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1RleHR1cmVNYXBwZXIuY21h
a2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9UZXh0dXJlTWFwcGVyLmNtYWtlCmluZGV4IDcz
ZjY5YzUwOTQ3MGVmOGFlOTc5Y2NkOTdkNjFhMGY3ODhhNTQ3ZjUuLjRlMGFlYmUxOTc0Nzc4OGQ2
NDBkYzk5NWE2NmM0M2JiYTJjOTE4MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1RleHR1cmVNYXBwZXIuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vVGV4
dHVyZU1hcHBlci5jbWFrZQpAQCAtMzQsNyArMzQsNiBAQCBsaXN0KEFQUEVORCBXZWJDb3JlX1BS
SVZBVEVfRlJBTUVXT1JLX0hFQURFUlMKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4
dHVyZU1hcHBlckxheWVyLmgKICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1h
cHBlclBsYXRmb3JtTGF5ZXIuaAogICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5LmgKLSAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAv
VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zi5oCiAgICAgcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oCiAgICAgcGxh
dGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlQcm92
aWRlci5oCiAgICAgcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJTb2xpZENv
bG9yTGF5ZXIuaApAQCAtNjEsNyArNjAsNiBAQCBpZiAoVVNFX0NPT1JESU5BVEVEX0dSQVBISUNT
KQogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3Jt
TGF5ZXJCdWZmZXIuY3BwCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllckRtYWJ1Zi5jcHAKICAgICAgICAgcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHkuY3BwCi0gICAgICAgIHBsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVm
LmNwcAogICAgICAgICBwbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRm
b3JtTGF5ZXJQcm94eUdMLmNwcAogCiAgICAgICAgIHBsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9j
b29yZGluYXRlZC9Db29yZGluYXRlZEJhY2tpbmdTdG9yZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9ETUFCdWZGb3JtYXQuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9ETUFCdWZGb3JtYXQuaApkZWxldGVkIGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggZGNkNzI1YTk3MDE1M2M0ZmY3OGE3YmI0OGUwN2I4YzBlN2Y3YzQz
MC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vRE1BQnVmRm9ybWF0LmgKKysrIC9kZXYvbnVs
bApAQCAtMSwzNzIgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBNZXRyb2xvZ2lj
YWwgR3JvdXAgQi5WLgotICogQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBTLkwuCi0gKgotICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
Ci0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
Ci0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0g
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQot
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICov
Ci0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSA8Y3N0ZGRlZj4KLSNpbmNsdWRlIDxjc3RkaW50
PgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLW5hbWVzcGFjZSBETUFCdWZGb3JtYXRJbXBsIHsK
LQotc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBjcmVhdGVGb3VyQ0MoY2hhciBhLCBjaGFyIGIs
IGNoYXIgYywgY2hhciBkKQotewotICAgIHJldHVybiB1aW50MzJfdChhKSB8ICh1aW50MzJfdChi
KSA8PCA4KSB8ICh1aW50MzJfdChjKSA8PCAxNikgfCAodWludDMyX3QoZCkgPDwgMjQpOwotfQot
Ci19Ci0KLXN0cnVjdCBETUFCdWZGb3JtYXQgewotICAgIGVudW0gY2xhc3MgRm91ckNDIDogdWlu
dDMyX3QgewotICAgICAgICBJbnZhbGlkID0gMCwKLQotICAgICAgICBSOCA9IERNQUJ1ZkZvcm1h
dEltcGw6OmNyZWF0ZUZvdXJDQygnUicsICc4JywgJyAnLCAnICcpLAotICAgICAgICBHUjg4ID0g
RE1BQnVmRm9ybWF0SW1wbDo6Y3JlYXRlRm91ckNDKCdHJywgJ1InLCAnOCcsICc4JyksCi0KLSAg
ICAgICAgWFJHQjg4ODggPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ1gnLCAnUics
ICcyJywgJzQnKSwKLSAgICAgICAgWEJHUjg4ODggPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVG
b3VyQ0MoJ1gnLCAnQicsICcyJywgJzQnKSwKLSAgICAgICAgUkdCWDg4ODggPSBETUFCdWZGb3Jt
YXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ1InLCAnWCcsICcyJywgJzQnKSwKLSAgICAgICAgQkdSWDg4
ODggPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ0InLCAnWCcsICcyJywgJzQnKSwK
LSAgICAgICAgQVJHQjg4ODggPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ0EnLCAn
UicsICcyJywgJzQnKSwKLSAgICAgICAgQUJHUjg4ODggPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVh
dGVGb3VyQ0MoJ0EnLCAnQicsICcyJywgJzQnKSwKLSAgICAgICAgUkdCQTg4ODggPSBETUFCdWZG
b3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ1InLCAnQScsICcyJywgJzQnKSwKLSAgICAgICAgQkdS
QTg4ODggPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ0InLCAnQScsICcyJywgJzQn
KSwKLSAgICAgICAgUkdCODg4ID0gRE1BQnVmRm9ybWF0SW1wbDo6Y3JlYXRlRm91ckNDKCdSJywg
J0cnLCAnMicsICc0JyksCi0gICAgICAgIEJHUjg4OCA9IERNQUJ1ZkZvcm1hdEltcGw6OmNyZWF0
ZUZvdXJDQygnQicsICdHJywgJzInLCAnNCcpLAotCi0gICAgICAgIEk0MjAgPSBETUFCdWZGb3Jt
YXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ0knLCAnNCcsICcyJywgJzAnKSwKLSAgICAgICAgWVYxMiA9
IERNQUJ1ZkZvcm1hdEltcGw6OmNyZWF0ZUZvdXJDQygnWScsICdWJywgJzEnLCAnMicpLAotICAg
ICAgICBBNDIwID0gRE1BQnVmRm9ybWF0SW1wbDo6Y3JlYXRlRm91ckNDKCdBJywgJzQnLCAnMics
ICcwJyksCi0gICAgICAgIE5WMTIgPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ04n
LCAnVicsICcxJywgJzInKSwKLSAgICAgICAgTlYyMSA9IERNQUJ1ZkZvcm1hdEltcGw6OmNyZWF0
ZUZvdXJDQygnTicsICdWJywgJzInLCAnMScpLAotCi0gICAgICAgIFlVWTIgPSBETUFCdWZGb3Jt
YXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ1knLCAnVScsICdZJywgJzInKSwKLSAgICAgICAgWVZZVSA9
IERNQUJ1ZkZvcm1hdEltcGw6OmNyZWF0ZUZvdXJDQygnWScsICdWJywgJ1knLCAnVScpLAotICAg
ICAgICBVWVZZID0gRE1BQnVmRm9ybWF0SW1wbDo6Y3JlYXRlRm91ckNDKCdVJywgJ1knLCAnVics
ICdZJyksCi0gICAgICAgIFZZVVkgPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ1Yn
LCAnWScsICdVJywgJ1knKSwKLSAgICAgICAgVlVZQSA9IERNQUJ1ZkZvcm1hdEltcGw6OmNyZWF0
ZUZvdXJDQygnVicsICdVJywgJ1knLCAnQScpLAotICAgICAgICBBWVVWID0gRE1BQnVmRm9ybWF0
SW1wbDo6Y3JlYXRlRm91ckNDKCdBJywgJ1knLCAnVScsICdWJyksCi0KLSAgICAgICAgWTQ0NCA9
IERNQUJ1ZkZvcm1hdEltcGw6OmNyZWF0ZUZvdXJDQygnWScsICc0JywgJzQnLCAnNCcpLAotICAg
ICAgICBZNDFCID0gRE1BQnVmRm9ybWF0SW1wbDo6Y3JlYXRlRm91ckNDKCdZJywgJzQnLCAnMScs
ICdCJyksCi0gICAgICAgIFk0MkIgPSBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVGb3VyQ0MoJ1kn
LCAnNCcsICcyJywgJ0InKSwKLSAgICB9OwotCi0gICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25l
ZCBjX21heFBsYW5lcyA9IDQ7Ci0KLSAgICB0ZW1wbGF0ZTxGb3VyQ0M+IHN0YXRpYyBETUFCdWZG
b3JtYXQgY3JlYXRlKCkgPSBkZWxldGU7Ci0gICAgc3RhdGljIERNQUJ1ZkZvcm1hdCBjcmVhdGUo
dWludDMyX3QpOwotCi0gICAgdGVtcGxhdGU8Rm91ckNDIGZvdXJjY1ZhbHVlLCB0eXBlbmFtZS4u
LiBQbGFuZURlZmluaXRpb25UeXBlcz4KLSAgICBzdGF0aWMgRE1BQnVmRm9ybWF0IGluc3RhbnRp
YXRlKCk7Ci0KLSAgICBGb3VyQ0MgZm91cmNjIHsgRm91ckNDOjpJbnZhbGlkIH07Ci0gICAgdW5z
aWduZWQgbnVtUGxhbmVzIHsgMCB9OwotCi0gICAgdWludDMyX3QgcGxhbmVXaWR0aCh1bnNpZ25l
ZCBwbGFuZUluZGV4LCB1aW50MzJfdCB3aWR0aCkgY29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VS
VChwbGFuZUluZGV4IDwgY19tYXhQbGFuZXMpOwotICAgICAgICByZXR1cm4gKHdpZHRoID4+IHBs
YW5lc1twbGFuZUluZGV4XS5ob3Jpem9udGFsU3Vic2FtcGxpbmcpOwotICAgIH0KLQotICAgIHVp
bnQzMl90IHBsYW5lSGVpZ2h0KHVuc2lnbmVkIHBsYW5lSW5kZXgsIHVpbnQzMl90IGhlaWdodCkg
Y29uc3QKLSAgICB7Ci0gICAgICAgIEFTU0VSVChwbGFuZUluZGV4IDwgY19tYXhQbGFuZXMpOwot
ICAgICAgICByZXR1cm4gKGhlaWdodCA+PiBwbGFuZXNbcGxhbmVJbmRleF0udmVydGljYWxTdWJz
YW1wbGluZyk7Ci0gICAgfQotCi0gICAgdGVtcGxhdGU8Rm91ckNDIGZvdXJjY1ZhbHVlLCB1bnNp
Z25lZCBoc1ZhbHVlLCB1bnNpZ25lZCB2c1ZhbHVlPgotICAgIHN0cnVjdCBQbGFuZURlZmluaXRp
b24gewotICAgICAgICBzdGF0aWMgY29uc3RleHByIEZvdXJDQyBmb3VyY2MgPSBmb3VyY2NWYWx1
ZTsKLSAgICAgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBob3Jpem9udGFsU3Vic2FtcGxp
bmcgPSBoc1ZhbHVlOwotICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIHZlcnRpY2Fs
U3Vic2FtcGxpbmcgPSB2c1ZhbHVlOwotICAgIH07Ci0KLSAgICBzdHJ1Y3QgUGxhbmUgewotICAg
ICAgICBQbGFuZSgpID0gZGVmYXVsdDsKLQotICAgICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBQbGFu
ZURlZml0aW9uVHlwZT4KLSAgICAgICAgUGxhbmUoY29uc3QgUGxhbmVEZWZpdGlvblR5cGUmKQot
ICAgICAgICAgICAgOiBmb3VyY2MoUGxhbmVEZWZpdGlvblR5cGU6OmZvdXJjYykKLSAgICAgICAg
ICAgICwgaG9yaXpvbnRhbFN1YnNhbXBsaW5nKFBsYW5lRGVmaXRpb25UeXBlOjpob3Jpem9udGFs
U3Vic2FtcGxpbmcpCi0gICAgICAgICAgICAsIHZlcnRpY2FsU3Vic2FtcGxpbmcoUGxhbmVEZWZp
dGlvblR5cGU6OnZlcnRpY2FsU3Vic2FtcGxpbmcpCi0gICAgICAgIHsgfQotCi0gICAgICAgIEZv
dXJDQyBmb3VyY2MgeyBGb3VyQ0M6OkludmFsaWQgfTsKLSAgICAgICAgdW5zaWduZWQgaG9yaXpv
bnRhbFN1YnNhbXBsaW5nIHsgMCB9OwotICAgICAgICB1bnNpZ25lZCB2ZXJ0aWNhbFN1YnNhbXBs
aW5nIHsgMCB9OwotICAgIH07Ci0gICAgc3RkOjphcnJheTxQbGFuZSwgY19tYXhQbGFuZXM+IHBs
YW5lczsKLX07Ci0KLW5hbWVzcGFjZSBETUFCdWZGb3JtYXRJbXBsIHsKLQotdGVtcGxhdGU8RE1B
QnVmRm9ybWF0OjpGb3VyQ0MgZm91cmNjVmFsdWU+Ci1pbmxpbmUgRE1BQnVmRm9ybWF0IGNyZWF0
ZVNpbmdsZVBsYW5lUkdCQSgpCi17Ci0gICAgcmV0dXJuIERNQUJ1ZkZvcm1hdDo6aW5zdGFudGlh
dGU8Zm91cmNjVmFsdWUsCi0gICAgICAgIERNQUJ1ZkZvcm1hdDo6UGxhbmVEZWZpbml0aW9uPGZv
dXJjY1ZhbHVlLCAwLCAwPj4oKTsKLX0KLQotdGVtcGxhdGU8c2l6ZV90IEluZGV4LCBzaXplX3Qg
U2l6ZSwgdHlwZW5hbWUgUGxhbmVEZWZpbml0aW9uVHlwZSwgdHlwZW5hbWUuLi4gUGxhbmVEZWZp
bml0aW9uVHlwZXM+Ci12b2lkIGRlZmluZVBsYW5lKHN0ZDo6YXJyYXk8RE1BQnVmRm9ybWF0OjpQ
bGFuZSwgRE1BQnVmRm9ybWF0OjpjX21heFBsYW5lcz4mIHBsYW5lcykKLXsKLSAgICBuZXcgKCZw
bGFuZXNbSW5kZXhdKSBETUFCdWZGb3JtYXQ6OlBsYW5lKFBsYW5lRGVmaW5pdGlvblR5cGUgeyB9
KTsKLSAgICBpZiBjb25zdGV4cHIgKChJbmRleCArIDEpIDwgU2l6ZSkKLSAgICAgICAgZGVmaW5l
UGxhbmU8SW5kZXggKyAxLCBTaXplLCBQbGFuZURlZmluaXRpb25UeXBlcy4uLj4ocGxhbmVzKTsK
LX0KLQotfQotCi10ZW1wbGF0ZTxETUFCdWZGb3JtYXQ6OkZvdXJDQyBmb3VyY2NWYWx1ZSwgdHlw
ZW5hbWUuLi4gUGxhbmVEZWZpbml0aW9uVHlwZXM+Ci1pbmxpbmUgRE1BQnVmRm9ybWF0IERNQUJ1
ZkZvcm1hdDo6aW5zdGFudGlhdGUoKQotewotICAgIHN0YXRpY19hc3NlcnQoc2l6ZW9mLi4uKFBs
YW5lRGVmaW5pdGlvblR5cGVzKSA8PSA0KTsKLQotICAgIERNQUJ1ZkZvcm1hdCBmb3JtYXQ7Ci0g
ICAgZm9ybWF0LmZvdXJjYyA9IGZvdXJjY1ZhbHVlOwotICAgIGZvcm1hdC5udW1QbGFuZXMgPSBz
aXplb2YuLi4oUGxhbmVEZWZpbml0aW9uVHlwZXMpOwotICAgIERNQUJ1ZkZvcm1hdEltcGw6OmRl
ZmluZVBsYW5lPDAsIHNpemVvZi4uLihQbGFuZURlZmluaXRpb25UeXBlcyksIFBsYW5lRGVmaW5p
dGlvblR5cGVzLi4uPihmb3JtYXQucGxhbmVzKTsKLSAgICByZXR1cm4gZm9ybWF0OwotfQotCi10
ZW1wbGF0ZTw+Ci1pbmxpbmUgRE1BQnVmRm9ybWF0IERNQUJ1ZkZvcm1hdDo6Y3JlYXRlPERNQUJ1
ZkZvcm1hdDo6Rm91ckNDOjpYUkdCODg4OD4oKQotewotICAgIHJldHVybiBETUFCdWZGb3JtYXRJ
bXBsOjpjcmVhdGVTaW5nbGVQbGFuZVJHQkE8Rm91ckNDOjpYUkdCODg4OD4oKTsKLX0KLQotdGVt
cGxhdGU8PgotaW5saW5lIERNQUJ1ZkZvcm1hdCBETUFCdWZGb3JtYXQ6OmNyZWF0ZTxETUFCdWZG
b3JtYXQ6OkZvdXJDQzo6WEJHUjg4ODg+KCkKLXsKLSAgICByZXR1cm4gRE1BQnVmRm9ybWF0SW1w
bDo6Y3JlYXRlU2luZ2xlUGxhbmVSR0JBPEZvdXJDQzo6WEJHUjg4ODg+KCk7Ci19Ci0KLXRlbXBs
YXRlPD4KLWlubGluZSBETUFCdWZGb3JtYXQgRE1BQnVmRm9ybWF0OjpjcmVhdGU8RE1BQnVmRm9y
bWF0OjpGb3VyQ0M6OlJHQlg4ODg4PigpCi17Ci0gICAgcmV0dXJuIERNQUJ1ZkZvcm1hdEltcGw6
OmNyZWF0ZVNpbmdsZVBsYW5lUkdCQTxGb3VyQ0M6OlJHQlg4ODg4PigpOwotfQotCi10ZW1wbGF0
ZTw+Ci1pbmxpbmUgRE1BQnVmRm9ybWF0IERNQUJ1ZkZvcm1hdDo6Y3JlYXRlPERNQUJ1ZkZvcm1h
dDo6Rm91ckNDOjpCR1JYODg4OD4oKQotewotICAgIHJldHVybiBETUFCdWZGb3JtYXRJbXBsOjpj
cmVhdGVTaW5nbGVQbGFuZVJHQkE8Rm91ckNDOjpCR1JYODg4OD4oKTsKLX0KLQotdGVtcGxhdGU8
PgotaW5saW5lIERNQUJ1ZkZvcm1hdCBETUFCdWZGb3JtYXQ6OmNyZWF0ZTxETUFCdWZGb3JtYXQ6
OkZvdXJDQzo6QVJHQjg4ODg+KCkKLXsKLSAgICByZXR1cm4gRE1BQnVmRm9ybWF0SW1wbDo6Y3Jl
YXRlU2luZ2xlUGxhbmVSR0JBPEZvdXJDQzo6QVJHQjg4ODg+KCk7Ci19Ci0KLXRlbXBsYXRlPD4K
LWlubGluZSBETUFCdWZGb3JtYXQgRE1BQnVmRm9ybWF0OjpjcmVhdGU8RE1BQnVmRm9ybWF0OjpG
b3VyQ0M6OkFCR1I4ODg4PigpCi17Ci0gICAgcmV0dXJuIERNQUJ1ZkZvcm1hdEltcGw6OmNyZWF0
ZVNpbmdsZVBsYW5lUkdCQTxGb3VyQ0M6OkFCR1I4ODg4PigpOwotfQotCi10ZW1wbGF0ZTw+Ci1p
bmxpbmUgRE1BQnVmRm9ybWF0IERNQUJ1ZkZvcm1hdDo6Y3JlYXRlPERNQUJ1ZkZvcm1hdDo6Rm91
ckNDOjpSR0JBODg4OD4oKQotewotICAgIHJldHVybiBETUFCdWZGb3JtYXRJbXBsOjpjcmVhdGVT
aW5nbGVQbGFuZVJHQkE8Rm91ckNDOjpSR0JBODg4OD4oKTsKLX0KLQotdGVtcGxhdGU8PgotaW5s
aW5lIERNQUJ1ZkZvcm1hdCBETUFCdWZGb3JtYXQ6OmNyZWF0ZTxETUFCdWZGb3JtYXQ6OkZvdXJD
Qzo6QkdSQTg4ODg+KCkKLXsKLSAgICByZXR1cm4gRE1BQnVmRm9ybWF0SW1wbDo6Y3JlYXRlU2lu
Z2xlUGxhbmVSR0JBPEZvdXJDQzo6QkdSQTg4ODg+KCk7Ci19Ci0KLXRlbXBsYXRlPD4KLWlubGlu
ZSBETUFCdWZGb3JtYXQgRE1BQnVmRm9ybWF0OjpjcmVhdGU8RE1BQnVmRm9ybWF0OjpGb3VyQ0M6
Okk0MjA+KCkKLXsKLSAgICByZXR1cm4gRE1BQnVmRm9ybWF0OjppbnN0YW50aWF0ZTxGb3VyQ0M6
Okk0MjAsCi0gICAgICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OlI4LCAwLCAwPiwKLSAgICAg
ICAgUGxhbmVEZWZpbml0aW9uPEZvdXJDQzo6UjgsIDEsIDE+LAotICAgICAgICBQbGFuZURlZmlu
aXRpb248Rm91ckNDOjpSOCwgMSwgMT4+KCk7Ci19Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBETUFC
dWZGb3JtYXQgRE1BQnVmRm9ybWF0OjpjcmVhdGU8RE1BQnVmRm9ybWF0OjpGb3VyQ0M6OllWMTI+
KCkKLXsKLSAgICByZXR1cm4gRE1BQnVmRm9ybWF0OjppbnN0YW50aWF0ZTxGb3VyQ0M6OllWMTIs
Ci0gICAgICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OlI4LCAwLCAwPiwKLSAgICAgICAgUGxh
bmVEZWZpbml0aW9uPEZvdXJDQzo6UjgsIDEsIDE+LAotICAgICAgICBQbGFuZURlZmluaXRpb248
Rm91ckNDOjpSOCwgMSwgMT4+KCk7Ci19Ci0KLXRlbXBsYXRlPD4KLWlubGluZSBETUFCdWZGb3Jt
YXQgRE1BQnVmRm9ybWF0OjpjcmVhdGU8RE1BQnVmRm9ybWF0OjpGb3VyQ0M6OkE0MjA+KCkKLXsK
LSAgICByZXR1cm4gRE1BQnVmRm9ybWF0OjppbnN0YW50aWF0ZTxGb3VyQ0M6OkE0MjAsCi0gICAg
ICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OlI4LCAwLCAwPiwKLSAgICAgICAgUGxhbmVEZWZp
bml0aW9uPEZvdXJDQzo6UjgsIDEsIDE+LAotICAgICAgICBQbGFuZURlZmluaXRpb248Rm91ckND
OjpSOCwgMSwgMT4sCi0gICAgICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OlI4LCAwLCAwPj4o
KTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIERNQUJ1ZkZvcm1hdCBETUFCdWZGb3JtYXQ6OmNy
ZWF0ZTxETUFCdWZGb3JtYXQ6OkZvdXJDQzo6TlYxMj4oKQotewotICAgIHJldHVybiBETUFCdWZG
b3JtYXQ6Omluc3RhbnRpYXRlPEZvdXJDQzo6TlYxMiwKLSAgICAgICAgUGxhbmVEZWZpbml0aW9u
PEZvdXJDQzo6UjgsIDAsIDA+LAotICAgICAgICBQbGFuZURlZmluaXRpb248Rm91ckNDOjpHUjg4
LCAxLCAxPj4oKTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIERNQUJ1ZkZvcm1hdCBETUFCdWZG
b3JtYXQ6OmNyZWF0ZTxETUFCdWZGb3JtYXQ6OkZvdXJDQzo6TlYyMT4oKQotewotICAgIHJldHVy
biBETUFCdWZGb3JtYXQ6Omluc3RhbnRpYXRlPEZvdXJDQzo6TlYyMSwKLSAgICAgICAgUGxhbmVE
ZWZpbml0aW9uPEZvdXJDQzo6UjgsIDAsIDA+LAotICAgICAgICBQbGFuZURlZmluaXRpb248Rm91
ckNDOjpHUjg4LCAxLCAxPj4oKTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIERNQUJ1ZkZvcm1h
dCBETUFCdWZGb3JtYXQ6OmNyZWF0ZTxETUFCdWZGb3JtYXQ6OkZvdXJDQzo6WVVZMj4oKQotewot
ICAgIHJldHVybiBETUFCdWZGb3JtYXQ6Omluc3RhbnRpYXRlPEZvdXJDQzo6WVVZMiwKLSAgICAg
ICAgUGxhbmVEZWZpbml0aW9uPEZvdXJDQzo6R1I4OCwgMCwgMD4+KCk7Ci19Ci0KLXRlbXBsYXRl
PD4KLWlubGluZSBETUFCdWZGb3JtYXQgRE1BQnVmRm9ybWF0OjpjcmVhdGU8RE1BQnVmRm9ybWF0
OjpGb3VyQ0M6OllWWVU+KCkKLXsKLSAgICByZXR1cm4gRE1BQnVmRm9ybWF0OjppbnN0YW50aWF0
ZTxGb3VyQ0M6OllWWVUsCi0gICAgICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OkdSODgsIDAs
IDA+PigpOwotfQotCi10ZW1wbGF0ZTw+Ci1pbmxpbmUgRE1BQnVmRm9ybWF0IERNQUJ1ZkZvcm1h
dDo6Y3JlYXRlPERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpVWVZZPigpCi17Ci0gICAgcmV0dXJuIERN
QUJ1ZkZvcm1hdDo6aW5zdGFudGlhdGU8Rm91ckNDOjpVWVZZLAotICAgICAgICBQbGFuZURlZmlu
aXRpb248Rm91ckNDOjpHUjg4LCAwLCAwPj4oKTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIERN
QUJ1ZkZvcm1hdCBETUFCdWZGb3JtYXQ6OmNyZWF0ZTxETUFCdWZGb3JtYXQ6OkZvdXJDQzo6VllV
WT4oKQotewotICAgIHJldHVybiBETUFCdWZGb3JtYXQ6Omluc3RhbnRpYXRlPEZvdXJDQzo6WVZZ
VSwKLSAgICAgICAgUGxhbmVEZWZpbml0aW9uPEZvdXJDQzo6R1I4OCwgMCwgMD4+KCk7Ci19Ci0K
LXRlbXBsYXRlPD4KLWlubGluZSBETUFCdWZGb3JtYXQgRE1BQnVmRm9ybWF0OjpjcmVhdGU8RE1B
QnVmRm9ybWF0OjpGb3VyQ0M6OlZVWUE+KCkKLXsKLSAgICByZXR1cm4gRE1BQnVmRm9ybWF0Ojpp
bnN0YW50aWF0ZTxGb3VyQ0M6OlZVWUEsCi0gICAgICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6
OkFCR1I4ODg4LCAwLCAwPj4oKTsKLX0KLQotdGVtcGxhdGU8PgotaW5saW5lIERNQUJ1ZkZvcm1h
dCBETUFCdWZGb3JtYXQ6OmNyZWF0ZTxETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QVlVVj4oKQotewot
ICAgIHJldHVybiBETUFCdWZGb3JtYXQ6Omluc3RhbnRpYXRlPEZvdXJDQzo6VlVZQSwKLSAgICAg
ICAgUGxhbmVEZWZpbml0aW9uPEZvdXJDQzo6QUJHUjg4ODgsIDAsIDA+PigpOwotfQotCi10ZW1w
bGF0ZTw+Ci1pbmxpbmUgRE1BQnVmRm9ybWF0IERNQUJ1ZkZvcm1hdDo6Y3JlYXRlPERNQUJ1ZkZv
cm1hdDo6Rm91ckNDOjpZNDQ0PigpCi17Ci0gICAgcmV0dXJuIERNQUJ1ZkZvcm1hdDo6aW5zdGFu
dGlhdGU8Rm91ckNDOjpZNDQ0LAotICAgICAgICBQbGFuZURlZmluaXRpb248Rm91ckNDOjpSOCwg
MCwgMD4sCi0gICAgICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OlI4LCAwLCAwPiwKLSAgICAg
ICAgUGxhbmVEZWZpbml0aW9uPEZvdXJDQzo6UjgsIDAsIDA+PigpOwotfQotCi10ZW1wbGF0ZTw+
Ci1pbmxpbmUgRE1BQnVmRm9ybWF0IERNQUJ1ZkZvcm1hdDo6Y3JlYXRlPERNQUJ1ZkZvcm1hdDo6
Rm91ckNDOjpZNDFCPigpCi17Ci0gICAgcmV0dXJuIERNQUJ1ZkZvcm1hdDo6aW5zdGFudGlhdGU8
Rm91ckNDOjpZNDFCLAotICAgICAgICBQbGFuZURlZmluaXRpb248Rm91ckNDOjpSOCwgMCwgMD4s
Ci0gICAgICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OlI4LCAyLCAwPiwKLSAgICAgICAgUGxh
bmVEZWZpbml0aW9uPEZvdXJDQzo6UjgsIDIsIDA+PigpOwotfQotCi10ZW1wbGF0ZTw+Ci1pbmxp
bmUgRE1BQnVmRm9ybWF0IERNQUJ1ZkZvcm1hdDo6Y3JlYXRlPERNQUJ1ZkZvcm1hdDo6Rm91ckND
OjpZNDJCPigpCi17Ci0gICAgcmV0dXJuIERNQUJ1ZkZvcm1hdDo6aW5zdGFudGlhdGU8Rm91ckND
OjpZNDJCLAotICAgICAgICBQbGFuZURlZmluaXRpb248Rm91ckNDOjpSOCwgMCwgMD4sCi0gICAg
ICAgIFBsYW5lRGVmaW5pdGlvbjxGb3VyQ0M6OlI4LCAxLCAwPiwKLSAgICAgICAgUGxhbmVEZWZp
bml0aW9uPEZvdXJDQzo6UjgsIDEsIDA+PigpOwotfQotCi1pbmxpbmUgRE1BQnVmRm9ybWF0IERN
QUJ1ZkZvcm1hdDo6Y3JlYXRlKHVpbnQzMl90IGZvdXJjY1ZhbHVlKQotewotICAgIHN3aXRjaCAo
Zm91cmNjVmFsdWUpIHsKLSAgICBjYXNlIHVpbnQzMl90KEZvdXJDQzo6WFJHQjg4ODgpOgotICAg
ICAgICByZXR1cm4gY3JlYXRlPEZvdXJDQzo6WFJHQjg4ODg+KCk7Ci0gICAgY2FzZSB1aW50MzJf
dChGb3VyQ0M6OlhCR1I4ODg4KToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxGb3VyQ0M6OlhCR1I4
ODg4PigpOwotICAgIGNhc2UgdWludDMyX3QoRm91ckNDOjpSR0JYODg4OCk6Ci0gICAgICAgIHJl
dHVybiBjcmVhdGU8Rm91ckNDOjpSR0JYODg4OD4oKTsKLSAgICBjYXNlIHVpbnQzMl90KEZvdXJD
Qzo6QkdSWDg4ODgpOgotICAgICAgICByZXR1cm4gY3JlYXRlPEZvdXJDQzo6QkdSWDg4ODg+KCk7
Ci0gICAgY2FzZSB1aW50MzJfdChGb3VyQ0M6OkFSR0I4ODg4KToKLSAgICAgICAgcmV0dXJuIGNy
ZWF0ZTxGb3VyQ0M6OkFSR0I4ODg4PigpOwotICAgIGNhc2UgdWludDMyX3QoRm91ckNDOjpBQkdS
ODg4OCk6Ci0gICAgICAgIHJldHVybiBjcmVhdGU8Rm91ckNDOjpBQkdSODg4OD4oKTsKLSAgICBj
YXNlIHVpbnQzMl90KEZvdXJDQzo6UkdCQTg4ODgpOgotICAgICAgICByZXR1cm4gY3JlYXRlPEZv
dXJDQzo6UkdCQTg4ODg+KCk7Ci0gICAgY2FzZSB1aW50MzJfdChGb3VyQ0M6OkJHUkE4ODg4KToK
LSAgICAgICAgcmV0dXJuIGNyZWF0ZTxGb3VyQ0M6OkJHUkE4ODg4PigpOwotICAgIGNhc2UgdWlu
dDMyX3QoRm91ckNDOjpJNDIwKToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxGb3VyQ0M6Okk0MjA+
KCk7Ci0gICAgY2FzZSB1aW50MzJfdChGb3VyQ0M6OllWMTIpOgotICAgICAgICByZXR1cm4gY3Jl
YXRlPEZvdXJDQzo6WVYxMj4oKTsKLSAgICBjYXNlIHVpbnQzMl90KEZvdXJDQzo6QTQyMCk6Ci0g
ICAgICAgIHJldHVybiBjcmVhdGU8Rm91ckNDOjpBNDIwPigpOwotICAgIGNhc2UgdWludDMyX3Qo
Rm91ckNDOjpOVjEyKToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxGb3VyQ0M6Ok5WMTI+KCk7Ci0g
ICAgY2FzZSB1aW50MzJfdChGb3VyQ0M6Ok5WMjEpOgotICAgICAgICByZXR1cm4gY3JlYXRlPEZv
dXJDQzo6TlYyMT4oKTsKLSAgICBjYXNlIHVpbnQzMl90KEZvdXJDQzo6WVVZMik6Ci0gICAgICAg
IHJldHVybiBjcmVhdGU8Rm91ckNDOjpZVVkyPigpOwotICAgIGNhc2UgdWludDMyX3QoRm91ckND
OjpZVllVKToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxGb3VyQ0M6OllWWVU+KCk7Ci0gICAgY2Fz
ZSB1aW50MzJfdChGb3VyQ0M6OlVZVlkpOgotICAgICAgICByZXR1cm4gY3JlYXRlPEZvdXJDQzo6
VVlWWT4oKTsKLSAgICBjYXNlIHVpbnQzMl90KEZvdXJDQzo6VllVWSk6Ci0gICAgICAgIHJldHVy
biBjcmVhdGU8Rm91ckNDOjpVWVZZPigpOwotICAgIGNhc2UgdWludDMyX3QoRm91ckNDOjpWVVlB
KToKLSAgICAgICAgcmV0dXJuIGNyZWF0ZTxGb3VyQ0M6OlZVWUE+KCk7Ci0gICAgY2FzZSB1aW50
MzJfdChGb3VyQ0M6OkFZVVYpOgotICAgICAgICByZXR1cm4gY3JlYXRlPEZvdXJDQzo6QVlVVj4o
KTsKLSAgICBjYXNlIHVpbnQzMl90KEZvdXJDQzo6WTQ0NCk6Ci0gICAgICAgIHJldHVybiBjcmVh
dGU8Rm91ckNDOjpZNDQ0PigpOwotICAgIGNhc2UgdWludDMyX3QoRm91ckNDOjpZNDFCKToKLSAg
ICAgICAgcmV0dXJuIGNyZWF0ZTxGb3VyQ0M6Olk0MUI+KCk7Ci0gICAgY2FzZSB1aW50MzJfdChG
b3VyQ0M6Olk0MkIpOgotICAgICAgICByZXR1cm4gY3JlYXRlPEZvdXJDQzo6WTQyQj4oKTsKLSAg
ICBkZWZhdWx0OgotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICByZXR1cm4geyB9OwotfQot
Ci19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9nYm0vRE1BQnVmT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nYm0vRE1BQnVmT2JqZWN0LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDA4NjQ0NDQ0Mzk0ZjdiOWQ5ZmY0M2RjYmRjMzkyYWJhYTc3Y2M1YTcuLjAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ2JtL0RNQUJ1Zk9iamVjdC5oCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAyMiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgot
ICogQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBTLkwuCi0gKgotICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNwcmFnbWEgb25j
ZQotCi0jaW5jbHVkZSAiRE1BQnVmRm9ybWF0LmgiCi0jaW5jbHVkZSAiRE1BQnVmUmVsZWFzZUZs
YWcuaCIKLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxjc3RkZGVmPgotI2luY2x1ZGUgPGNz
dGRpbnQ+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotc3Ry
dWN0IERNQUJ1Zk9iamVjdCB7Ci0gICAgRE1BQnVmT2JqZWN0KHVpbnRwdHJfdCBoYW5kbGUpCi0g
ICAgICAgIDogaGFuZGxlKGhhbmRsZSkKLSAgICB7IH0KLQotICAgIH5ETUFCdWZPYmplY3QoKQot
ICAgIHsKLSAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGZvcm1hdC5udW1QbGFuZXM7
ICsraSkgewotICAgICAgICAgICAgaWYgKGZkW2ldICE9IC0xKQotICAgICAgICAgICAgICAgIGNs
b3NlKGZkW2ldKTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIERNQUJ1Zk9iamVjdChjb25zdCBE
TUFCdWZPYmplY3QmKSA9IGRlbGV0ZTsKLSAgICBETUFCdWZPYmplY3QmIG9wZXJhdG9yPShjb25z
dCBETUFCdWZPYmplY3QmKSA9IGRlbGV0ZTsKLQotICAgIERNQUJ1Zk9iamVjdChETUFCdWZPYmpl
Y3QmJiBvKQotICAgICAgICA6IGhhbmRsZShvLmhhbmRsZSkKLSAgICAgICAgLCBmb3JtYXQoby5m
b3JtYXQpCi0gICAgICAgICwgd2lkdGgoby53aWR0aCkKLSAgICAgICAgLCBoZWlnaHQoby5oZWln
aHQpCi0gICAgICAgICwgcmVsZWFzZUZsYWcoV1RGTW92ZShvLnJlbGVhc2VGbGFnKSkKLSAgICB7
Ci0gICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBmb3JtYXQubnVtUGxhbmVzOyArK2kp
IHsKLSAgICAgICAgICAgIGZkW2ldID0gby5mZFtpXTsKLSAgICAgICAgICAgIG8uZmRbaV0gPSAt
MTsKLQotICAgICAgICAgICAgb2Zmc2V0W2ldID0gby5vZmZzZXRbaV07Ci0gICAgICAgICAgICBz
dHJpZGVbaV0gPSBvLnN0cmlkZVtpXTsKLSAgICAgICAgICAgIG1vZGlmaWVyW2ldID0gby5tb2Rp
ZmllcltpXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIERNQUJ1Zk9iamVjdCYgb3BlcmF0b3I9
KERNQUJ1Zk9iamVjdCYmIG8pCi0gICAgewotICAgICAgICBpZiAodGhpcyA9PSAmbykKLSAgICAg
ICAgICAgIHJldHVybiAqdGhpczsKLQotICAgICAgICB0aGlzLT5+RE1BQnVmT2JqZWN0KCk7Ci0g
ICAgICAgIG5ldyAodGhpcykgRE1BQnVmT2JqZWN0KFdURk1vdmUobykpOwotICAgICAgICByZXR1
cm4gKnRoaXM7Ci0gICAgfQotCi0gICAgdWludHB0cl90IGhhbmRsZSB7IDAgfTsKLSAgICBETUFC
dWZGb3JtYXQgZm9ybWF0IHsgfTsKLSAgICB1aW50MzJfdCB3aWR0aCB7IDAgfTsKLSAgICB1aW50
MzJfdCBoZWlnaHQgeyAwIH07Ci0gICAgRE1BQnVmUmVsZWFzZUZsYWcgcmVsZWFzZUZsYWcgeyB9
OwotICAgIHN0ZDo6YXJyYXk8aW50LCBETUFCdWZGb3JtYXQ6OmNfbWF4UGxhbmVzPiBmZCB7IC0x
LCAtMSwgLTEsIC0xIH07Ci0gICAgc3RkOjphcnJheTxzaXplX3QsIERNQUJ1ZkZvcm1hdDo6Y19t
YXhQbGFuZXM+IG9mZnNldCB7IDAsIDAsIDAsIDAgfTsKLSAgICBzdGQ6OmFycmF5PHVpbnQzMl90
LCBETUFCdWZGb3JtYXQ6OmNfbWF4UGxhbmVzPiBzdHJpZGUgeyAwLCAwLCAwLCAwIH07Ci0gICAg
c3RkOjphcnJheTx1aW50NjRfdCwgRE1BQnVmRm9ybWF0OjpjX21heFBsYW5lcz4gbW9kaWZpZXIg
eyAwLCAwLCAwLCAwIH07Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vRE1BQnVmUmVsZWFzZUZsYWcu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9ETUFCdWZSZWxlYXNlRmxh
Zy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjRkNzc2MDA1M2Y5OWM1NTg3NjUw
YTA4NmFhYjk3MTA0ODc1ZjdlLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9ETUFCdWZSZWxl
YXNlRmxhZy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLS8qCi0gKiBDb3B5cmln
aHQgKEMpIDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KLSAqIENvcHlyaWdodCAoQykgMjAy
MiBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHN5cy9l
dmVudGZkLmg+Ci0jaW5jbHVkZSA8d3RmL1VuaVN0ZEV4dHJhcy5oPgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0KLXN0cnVjdCBETUFCdWZSZWxlYXNlRmxhZyB7Ci0gICAgRE1BQnVmUmVsZWFzZUZs
YWcoKSA9IGRlZmF1bHQ7Ci0KLSAgICBlbnVtIEluaXRpYWxpemVUYWcgeyBJbml0aWFsaXplIH07
Ci0gICAgRE1BQnVmUmVsZWFzZUZsYWcoSW5pdGlhbGl6ZVRhZykKLSAgICB7Ci0gICAgICAgIGZk
ID0gZXZlbnRmZCgwLCBFRkRfQ0xPRVhFQyB8IEVGRF9OT05CTE9DSyk7Ci0gICAgfQotCi0gICAg
fkRNQUJ1ZlJlbGVhc2VGbGFnKCkKLSAgICB7Ci0gICAgICAgIGlmIChmZCAhPSAtMSkKLSAgICAg
ICAgICAgIGNsb3NlKGZkKTsKLSAgICAgICAgZmQgPSAtMTsKLSAgICB9Ci0KLSAgICBETUFCdWZS
ZWxlYXNlRmxhZyhjb25zdCBETUFCdWZSZWxlYXNlRmxhZyYpID0gZGVsZXRlOwotICAgIERNQUJ1
ZlJlbGVhc2VGbGFnJiBvcGVyYXRvcj0oY29uc3QgRE1BQnVmUmVsZWFzZUZsYWcmKSA9IGRlbGV0
ZTsKLQotICAgIERNQUJ1ZlJlbGVhc2VGbGFnKERNQUJ1ZlJlbGVhc2VGbGFnJiYgbykKLSAgICB7
Ci0gICAgICAgIGZkID0gby5mZDsKLSAgICAgICAgby5mZCA9IC0xOwotICAgIH0KLQotICAgIERN
QUJ1ZlJlbGVhc2VGbGFnJiBvcGVyYXRvcj0oRE1BQnVmUmVsZWFzZUZsYWcmJiBvKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMgPT0gJm8pCi0gICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0KLSAg
ICAgICAgdGhpcy0+fkRNQUJ1ZlJlbGVhc2VGbGFnKCk7Ci0gICAgICAgIG5ldyAodGhpcykgRE1B
QnVmUmVsZWFzZUZsYWcoV1RGTW92ZShvKSk7Ci0gICAgICAgIHJldHVybiAqdGhpczsKLSAgICB9
Ci0KLSAgICBETUFCdWZSZWxlYXNlRmxhZyBkdXAoKSBjb25zdAotICAgIHsKLSAgICAgICAgaWYg
KGZkID09IC0xKQotICAgICAgICAgICAgcmV0dXJuIHsgfTsKLQotICAgICAgICBETUFCdWZSZWxl
YXNlRmxhZyBmbGFnOwotICAgICAgICBmbGFnLmZkID0gZHVwQ2xvc2VPbkV4ZWMoZmQpOwotICAg
ICAgICByZXR1cm4gZmxhZzsKLSAgICB9Ci0KLSAgICBib29sIHJlbGVhc2VkKCkgY29uc3QKLSAg
ICB7Ci0gICAgICAgIGlmIChmZCA9PSAtMSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotCi0g
ICAgICAgIHVpbnQ2NF90IHZhbHVlIHsgMCB9OwotICAgICAgICBpZiAocmVhZChmZCwgJnZhbHVl
LCBzaXplb2YodWludDY0X3QpKSA9PSBzaXplb2YodWludDY0X3QpKQotICAgICAgICAgICAgcmV0
dXJuICEhdmFsdWU7Ci0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB2b2lkIHJl
bGVhc2UoKQotICAgIHsKLSAgICAgICAgaWYgKGZkID09IC0xKQotICAgICAgICAgICAgcmV0dXJu
OwotCi0gICAgICAgIHVpbnQ2NF90IHZhbHVlIHsgMSB9OwotICAgICAgICB3cml0ZShmZCwgJnZh
bHVlLCBzaXplb2YodWludDY0X3QpKTsKLSAgICB9Ci0KLSAgICBpbnQgZmQgeyAtMSB9OwotfTsK
LQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZ2JtL0dCTUJ1ZmZlclN3YXBjaGFpbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVmZmVyU3dhcGNoYWluLmNwcApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhNzA2MDg0ZTk4NGMyMjA5Y2VjYWJkMDlhYTc2YTU1Yzg1
M2ZlMC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVmZmVyU3dhcGNoYWluLmNwcAor
KysgL2Rldi9udWxsCkBAIC0xLDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIy
IE1ldHJvbG9naWNhbCBHcm91cCBCLlYuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMu
TC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIkdCTUJ1ZmZlclN3
YXBjaGFpbi5oIgotCi0jaW5jbHVkZSAiR0JNRGV2aWNlLmgiCi0jaW5jbHVkZSA8Z2JtLmg+Ci0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotR0JNQnVmZmVyU3dhcGNoYWluOjpHQk1CdWZmZXJTd2Fw
Y2hhaW4oQnVmZmVyU3dhcGNoYWluU2l6ZSBzaXplKQotewotICAgIEFTU0VSVCh1bnNpZ25lZChz
aXplKSA8IGNfbWF4QnVmZmVycyk7Ci0gICAgbV9hcnJheS5zaXplID0gdW5zaWduZWQoc2l6ZSk7
Ci19Ci0KLUdCTUJ1ZmZlclN3YXBjaGFpbjo6fkdCTUJ1ZmZlclN3YXBjaGFpbigpID0gZGVmYXVs
dDsKLQotUmVmUHRyPEdCTUJ1ZmZlclN3YXBjaGFpbjo6QnVmZmVyPiBHQk1CdWZmZXJTd2FwY2hh
aW46OmdldEJ1ZmZlcihjb25zdCBCdWZmZXJEZXNjcmlwdGlvbiYgZGVzY3JpcHRpb24pCi17Ci0g
ICAgYXV0byYgZGV2aWNlID0gR0JNRGV2aWNlOjpnZXQoKTsKLQotICAgIC8vIElmIHRoZSBkZXNj
cmlwdGlvbiBvZiB0aGUgcmVxdWVzdGVkIGJ1ZmZlcnMgaGFzIGNoYW5nZWQsIHVwZGF0ZSB0aGUg
ZGVzY3JpcHRpb24gdG8gdGhlIG5ldyBvbmUgYW5kIHdyZWNrIHRoZSBleGlzdGluZyBidWZmZXJz
LgotICAgIC8vIFRoaXMgc2hvdWxkIGhhbmRsZSBjaGFuZ2VzIGluIGZvcm1hdCBvciBkaW1lbnNp
b24gb2YgdGhlIGJ1ZmZlcnMuCi0gICAgaWYgKGRlc2NyaXB0aW9uLmZvcm1hdC5mb3VyY2MgIT0g
bV9hcnJheS5kZXNjcmlwdGlvbi5mb3JtYXQuZm91cmNjIHx8IGRlc2NyaXB0aW9uLndpZHRoICE9
IG1fYXJyYXkuZGVzY3JpcHRpb24ud2lkdGggfHwgZGVzY3JpcHRpb24uaGVpZ2h0ICE9IG1fYXJy
YXkuZGVzY3JpcHRpb24uaGVpZ2h0KSB7Ci0gICAgICAgIG1fYXJyYXkuZGVzY3JpcHRpb24gPSBk
ZXNjcmlwdGlvbjsKLSAgICAgICAgbV9hcnJheS5vYmplY3QgPSB7IH07Ci0gICAgfQotCi0gICAg
Ly8gU3dhcGNoYWluIHdhcyBhc2tlZCB0byBwcm92aWRlIGEgYnVmZmVyLiBUaGUgYnVmZmVyIGFy
cmF5IGlzIHRyYXZlcnNlZCB0byBmaW5kIG9uZS4KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgbV9hcnJheS5zaXplOyArK2kpIHsKLSAgICAgICAgaWYgKCFtX2FycmF5Lm9iamVjdFtpXSkg
ewotICAgICAgICAgICAgLy8gSWYgbm8gYnVmZmVyIHdhcyBzcGF3bmVkIHlldCBhdCB0aGlzIGxv
Y2F0aW9uLCB3ZSBkbyB0aGF0LCBhbmQgcmV0dXJuIGl0LgotICAgICAgICAgICAgYXV0byBidWZm
ZXIgPSBhZG9wdFJlZigqbmV3IEJ1ZmZlcihtX2hhbmRsZUdlbmVyYXRvcisrLCBkZXNjcmlwdGlv
bikpOwotICAgICAgICAgICAgbV9hcnJheS5vYmplY3RbaV0gPSBidWZmZXIuY29weVJlZigpOwot
Ci0gICAgICAgICAgICAvLyBGaWxsIG91dCB0aGUgYnVmZmVyJ3MgZGVzY3JpcHRpb24gYW5kIHBs
YW5lIGluZm9ybWF0aW9uIGZvciBrbm93biBhbmQgc3VwcG9ydGVkIGZvcm1hdHMuCi0gICAgICAg
ICAgICBzd2l0Y2ggKGRlc2NyaXB0aW9uLmZvcm1hdC5mb3VyY2MpIHsKLSAgICAgICAgICAgIGNh
c2UgRE1BQnVmRm9ybWF0OjpGb3VyQ0M6OlhSR0I4ODg4OgotICAgICAgICAgICAgY2FzZSBETUFC
dWZGb3JtYXQ6OkZvdXJDQzo6WEJHUjg4ODg6Ci0gICAgICAgICAgICBjYXNlIERNQUJ1ZkZvcm1h
dDo6Rm91ckNDOjpSR0JYODg4ODoKLSAgICAgICAgICAgIGNhc2UgRE1BQnVmRm9ybWF0OjpGb3Vy
Q0M6OkJHUlg4ODg4OgotICAgICAgICAgICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QVJH
Qjg4ODg6Ci0gICAgICAgICAgICBjYXNlIERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpBQkdSODg4ODoK
LSAgICAgICAgICAgIGNhc2UgRE1BQnVmRm9ybWF0OjpGb3VyQ0M6OlJHQkE4ODg4OgotICAgICAg
ICAgICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QkdSQTg4ODg6Ci0gICAgICAgICAgICBj
YXNlIERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpJNDIwOgotICAgICAgICAgICAgY2FzZSBETUFCdWZG
b3JtYXQ6OkZvdXJDQzo6WVYxMjoKLSAgICAgICAgICAgIGNhc2UgRE1BQnVmRm9ybWF0OjpGb3Vy
Q0M6OkE0MjA6Ci0gICAgICAgICAgICBjYXNlIERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpOVjEyOgot
ICAgICAgICAgICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6TlYyMToKLSAgICAgICAgICAg
IGNhc2UgRE1BQnVmRm9ybWF0OjpGb3VyQ0M6OllVWTI6Ci0gICAgICAgICAgICBjYXNlIERNQUJ1
ZkZvcm1hdDo6Rm91ckNDOjpZVllVOgotICAgICAgICAgICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZv
dXJDQzo6VVlWWToKLSAgICAgICAgICAgIGNhc2UgRE1BQnVmRm9ybWF0OjpGb3VyQ0M6OlZZVVk6
Ci0gICAgICAgICAgICBjYXNlIERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpWVVlBOgotICAgICAgICAg
ICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QVlVVjoKLSAgICAgICAgICAgIGNhc2UgRE1B
QnVmRm9ybWF0OjpGb3VyQ0M6Olk0NDQ6Ci0gICAgICAgICAgICBjYXNlIERNQUJ1ZkZvcm1hdDo6
Rm91ckNDOjpZNDFCOgotICAgICAgICAgICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6WTQy
QjoKLSAgICAgICAgICAgICAgICBidWZmZXItPm1fZGVzY3JpcHRpb24uZm9ybWF0Lm51bVBsYW5l
cyA9IGRlc2NyaXB0aW9uLmZvcm1hdC5udW1QbGFuZXM7Ci0gICAgICAgICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGJ1ZmZlci0+bV9kZXNjcmlwdGlvbi5mb3JtYXQubnVtUGxhbmVz
OyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5tX3BsYW5lc1tpXS5mb3VyY2Mg
PSBkZXNjcmlwdGlvbi5mb3JtYXQucGxhbmVzW2ldLmZvdXJjYzsKLSAgICAgICAgICAgICAgICAg
ICAgYnVmZmVyLT5tX3BsYW5lc1tpXS53aWR0aCA9IGRlc2NyaXB0aW9uLmZvcm1hdC5wbGFuZVdp
ZHRoKGksIGRlc2NyaXB0aW9uLndpZHRoKTsKLSAgICAgICAgICAgICAgICAgICAgYnVmZmVyLT5t
X3BsYW5lc1tpXS5oZWlnaHQgPSBkZXNjcmlwdGlvbi5mb3JtYXQucGxhbmVIZWlnaHQoaSwgZGVz
Y3JpcHRpb24uaGVpZ2h0KTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJldHVybiBudWxscHRy
OwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAvLyBGb3IgZWFjaCBwbGFuZSwgd2Ugc3Bh
d24gYSBnYm1fYm8gb2JqZWN0IG9mIHRoZSBhcHByb3ByaWF0ZSBzaXplIGFuZCBmb3JtYXQuCi0g
ICAgICAgICAgICAvLyBUT0RPOiBHQk1fQk9fVVNFX0xJTkVBUiB3aWxsIGJlIG5lZWRlZCB3aGVu
IHRyYW5zZmVycmluZyBtZW1vcnkgaW50byB0aGUgYm8gKGUuZy4gY29weWluZwotICAgICAgICAg
ICAgLy8gb3ZlciB0aGUgc29mdHdhcmUtZGVjb2RlZCB2aWRlbyBkYXRhKSwgYnV0IG1pZ2h0IG5v
dCBiZSByZXF1aXJlZCBmb3IgYmFja2luZyBlLmcuIEFOR0xFIHJlbmRlcmluZy4KLSAgICAgICAg
ICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBidWZmZXItPm1fZGVzY3JpcHRpb24uZm9ybWF0
Lm51bVBsYW5lczsgKytpKSB7Ci0gICAgICAgICAgICAgICAgYXV0byYgcGxhbmUgPSBidWZmZXIt
Pm1fcGxhbmVzW2ldOwotICAgICAgICAgICAgICAgIHBsYW5lLmJvID0gZ2JtX2JvX2NyZWF0ZShk
ZXZpY2UuZGV2aWNlKCksIHBsYW5lLndpZHRoLCBwbGFuZS5oZWlnaHQsIHVpbnQzMl90KHBsYW5l
LmZvdXJjYyksIEdCTV9CT19VU0VfTElORUFSKTsKLSAgICAgICAgICAgICAgICBwbGFuZS5zdHJp
ZGUgPSBnYm1fYm9fZ2V0X3N0cmlkZShwbGFuZS5ibyk7Ci0gICAgICAgICAgICB9Ci0KLSAgICAg
ICAgICAgIC8vIExvY2sgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuIGl0LgotICAgICAgICAgICAgYnVm
ZmVyLT5tX3N0YXRlLmxvY2tlZCA9IHRydWU7Ci0gICAgICAgICAgICByZXR1cm4gYnVmZmVyOwot
ICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhlcmUgaXMgYWxyZWFkeSBhbiBleGlzdGluZyBidWZm
ZXIgYXQgdGhpcyBsb2NhdGlvbi4gSWYgbWFya2VkIGFzIGxvY2tlZCwgdXBkYXRlIGl0cyBzdGF0
ZSBieSByZWFkaW5nCi0gICAgICAgIC8vIHRoZSByZWxlYXNlIGZsYWcuIElmIHN0aWxsIGxvY2tl
ZCBhZnRlciB0aGF0LCB3ZSBoYXZlIHRvIGNvbnRpbnVlIG92ZXIgdG8gdGhlIG5leHQgY2FuZGlk
YXRlLgotICAgICAgICB7Ci0gICAgICAgICAgICBhdXRvJiBidWZmZXIgPSBtX2FycmF5Lm9iamVj
dFtpXTsKLSAgICAgICAgICAgIGlmIChidWZmZXItPm1fc3RhdGUubG9ja2VkKQotICAgICAgICAg
ICAgICAgIGJ1ZmZlci0+bV9zdGF0ZS5sb2NrZWQgPSAhYnVmZmVyLT5tX3N0YXRlLnJlbGVhc2VG
bGFnLnJlbGVhc2VkKCk7Ci0KLSAgICAgICAgICAgIGlmIChidWZmZXItPm1fc3RhdGUubG9ja2Vk
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gVGhp
cyBidWZmZXIgd2FzIHVubG9ja2VkLCBzbyBpdCBjYW4gYmUgdXNlZC4gTG9jayBhbmQgcmV0dXJu
IGl0LgotICAgICAgICBhdXRvIGJ1ZmZlciA9IG1fYXJyYXkub2JqZWN0W2ldLmNvcHlSZWYoKTsK
LSAgICAgICAgYnVmZmVyLT5tX3N0YXRlLmxvY2tlZCA9IHRydWU7Ci0KLSAgICAgICAgLy8gU3dh
cCBvdXQgdGhlIGxvY2F0ZWQgYnVmZmVyIHRvIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciBxdWV1ZS4g
V2hlbiB0aGUgbmV4dCBidWZmZXIgaXMgcmVxdWVzdGVkIGZyb20gdGhpcwotICAgICAgICAvLyBz
d2FwY2hhaW4sIHRoZSBwcmV2aW91c2x5LXVzZWQgYnVmZmVycyB3aWxsIGJlIHRyYXZlcnNlZCBh
bmQgdGVzdGVkIGZvciByZWxlYXNlIGZpcnN0LCBtZWFuaW5nIHRoZXJlJ3MgYQotICAgICAgICAv
LyBoaWdoZXIgY2hhbmNlIHdlIHdpbGwgYmUgYWJsZSB0byByZXVzZSB0aGVtLCB3aXRob3V0IHRo
ZSBwZW5hbHR5IG9mIGhhdmluZyB0byB0cmF2ZXJzZSB0byBkZWVwIGludG8gdGhlCi0gICAgICAg
IC8vIHN3YXBjaGFpbiBhcnJheS4KLSAgICAgICAgZm9yICgrK2k7IGkgPCBtX2FycmF5LnNpemUg
JiYgISFtX2FycmF5Lm9iamVjdFtpXTsgKytpKQotICAgICAgICAgICAgc3RkOjpzd2FwKG1fYXJy
YXkub2JqZWN0W2kgLSAxXSwgbV9hcnJheS5vYmplY3RbaV0pOwotCi0gICAgICAgIHJldHVybiBi
dWZmZXI7Ci0gICAgfQotCi0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0KLUdCTUJ1ZmZlclN3YXBj
aGFpbjo6QnVmZmVyOjpCdWZmZXIodWludDMyX3QgaGFuZGxlLCBjb25zdCBCdWZmZXJEZXNjcmlw
dGlvbiYgZGVzY3JpcHRpb24pCi0gICAgOiBtX2hhbmRsZShoYW5kbGUpCi0gICAgLCBtX2Rlc2Ny
aXB0aW9uKGRlc2NyaXB0aW9uKQotewotICAgIG1fc3RhdGUucmVsZWFzZUZsYWcgPSBETUFCdWZS
ZWxlYXNlRmxhZyhETUFCdWZSZWxlYXNlRmxhZzo6SW5pdGlhbGl6ZSk7Ci19Ci0KLUdCTUJ1ZmZl
clN3YXBjaGFpbjo6QnVmZmVyOjp+QnVmZmVyKCkgPSBkZWZhdWx0OwotCi1ETUFCdWZPYmplY3Qg
R0JNQnVmZmVyU3dhcGNoYWluOjpCdWZmZXI6OmNyZWF0ZURNQUJ1Zk9iamVjdCh1aW50cHRyX3Qg
aGFuZGxlKSBjb25zdAotewotICAgIERNQUJ1Zk9iamVjdCBvYmplY3QoaGFuZGxlKTsKLSAgICBv
YmplY3QuZm9ybWF0ID0gbV9kZXNjcmlwdGlvbi5mb3JtYXQ7Ci0gICAgb2JqZWN0LndpZHRoID0g
bV9kZXNjcmlwdGlvbi53aWR0aDsKLSAgICBvYmplY3QuaGVpZ2h0ID0gbV9kZXNjcmlwdGlvbi5o
ZWlnaHQ7Ci0gICAgb2JqZWN0LnJlbGVhc2VGbGFnID0gbV9zdGF0ZS5yZWxlYXNlRmxhZy5kdXAo
KTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBtX2Rlc2NyaXB0aW9uLmZvcm1hdC5u
dW1QbGFuZXM7ICsraSkgewotICAgICAgICBvYmplY3QuZmRbaV0gPSBnYm1fYm9fZ2V0X2ZkKG1f
cGxhbmVzW2ldLmJvKTsKLSAgICAgICAgb2JqZWN0Lm9mZnNldFtpXSA9IDA7Ci0gICAgICAgIG9i
amVjdC5zdHJpZGVbaV0gPSBtX3BsYW5lc1tpXS5zdHJpZGU7Ci0gICAgICAgIC8vIFRPRE86IHRo
ZXNlIHNob3VsZCBiZSB0aGUgcGxhbmUtc3BlY2lmaWMgbW9kaWZpZXJzLiBXZSBkb24ndCB1c2Ug
dGhlbSB5ZXQuCi0gICAgICAgIG9iamVjdC5tb2RpZmllcltpXSA9IDA7Ci0gICAgfQotCi0gICAg
cmV0dXJuIG9iamVjdDsKLX0KLQotR0JNQnVmZmVyU3dhcGNoYWluOjpCdWZmZXI6OlBsYW5lRGF0
YTo6flBsYW5lRGF0YSgpCi17Ci0gICAgaWYgKGJvKQotICAgICAgICBnYm1fYm9fZGVzdHJveShi
byk7Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1CdWZmZXJTd2FwY2hhaW4uaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dibS9HQk1CdWZmZXJTd2FwY2hhaW4uaApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzg0MjQxMDZmM2I1YzdmNWRkMDUzMDc3NTIxZWI3YWRk
YTMwMDg0NS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nYm0vR0JNQnVmZmVyU3dhcGNoYWluLmgK
KysrIC9kZXYvbnVsbApAQCAtMSwxMjcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAy
MiBNZXRyb2xvZ2ljYWwgR3JvdXAgQi5WLgotICogQ29weXJpZ2h0IChDKSAyMDIyIElnYWxpYSBT
LkwuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgotICovCi0KLSNwcmFnbWEgb25jZQotCi0jaW5jbHVkZSAiRE1BQnVmRm9ybWF0Lmgi
Ci0jaW5jbHVkZSAiRE1BQnVmT2JqZWN0LmgiCi0jaW5jbHVkZSAiRE1BQnVmUmVsZWFzZUZsYWcu
aCIKLSNpbmNsdWRlIDxhcnJheT4KLSNpbmNsdWRlIDxjc3RkaW50PgotI2luY2x1ZGUgPHd0Zi9O
b25jb3B5YWJsZS5oPgotI2luY2x1ZGUgPHd0Zi9Ob25tb3ZhYmxlLmg+Ci0jaW5jbHVkZSA8d3Rm
L1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5oPgotCi1zdHJ1
Y3QgZ2JtX2JvOwotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEdCTUJ1ZmZlclN3YXBj
aGFpbiA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxHQk1CdWZmZXJTd2FwY2hhaW4+IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICAvLyBUaGUgc2l6ZSBz
aG91bGQgYmUgYWRqdXN0ZWQgdG8gdGhlIHVzZS1jYXNlLgotICAgIC8vIEZvciBjeWNsaWNhbCBy
ZW5kZXJpbmcgKGUuZy4gV2ViR0wpLCBGb3VyIHNob3VsZCBiZSBpZGVhbCBzaW5jZSB3ZSdsbCBy
ZWx5IG9uCi0gICAgLy8gc29tZXRoaW5nIGxpa2UgdnN5bmMgdG8gbWFpbnRhaW4gYSBjb25zdGFu
dCBmcmFtZXJhdGUgYW5kIHN1YnNlcXVlbnQgYnVmZmVyIGNodXJuLgotICAgIC8vIFRoZXJlIGFy
ZSBvdGhlciBzcG9yYWRpYyBwcm9kdWNlcnMgbGlrZSBzb2Z0d2FyZS1iYXNlZCBtZWRpYSBkZWNv
ZGVycyB0aGF0IHdpbGwKLSAgICAvLyBiZSByZXF1ZXN0aW5nIGFuZCBmaWxsaW5nIGluIGJ1ZmZl
cnMgaW4gYnVyc3RzIGJ1dCBzdGlsbCBoYXZlIHRoZW0gZGlzcGxheWVkIG9uCi0gICAgLy8gYSBj
eWNsaWNhbCBiYXNpcy4gRWlnaHQgc2hvdWxkIGJlIGVub3VnaCB0byBjb3ZlciB0aGF0LgotICAg
IC8vIEluIGFueSBjYXNlLCB0aGUgc3dhcGNoYWluIHdpbGwgZG8gd2hhdGV2ZXIgaXQgY2FuIHRv
IHJldXNlIHJlbGVhc2VkIGJ1ZmZlcnMKLSAgICAvLyBhbmQgbm90IHVubmVjZXNzYXJpbHkgc3Bh
d24gbmV3IG9uZXMsIG1lYW5pbmcgdGhlIGxpbWl0IHNob3VsZG4ndCBiZSByZWFjaGVkLgotICAg
IC8vIElmIGl0IGlzLCBnZXRCdWZmZXIoKSB3aWxsIHJldHVybiBhIG51bGwgb2JqZWN0IGFuZCB0
aGUgcHJvZHVjZXIgaGFzIHRvCi0gICAgLy8gaGFuZGxlIHRoYXQgc29tZWhvdy4KLSAgICBlbnVt
IGNsYXNzIEJ1ZmZlclN3YXBjaGFpblNpemUgOiB1bnNpZ25lZCB7Ci0gICAgICAgIEZvdXIgPSA0
LAotICAgICAgICBFaWdodCA9IDgKLSAgICB9OwotCi0gICAgR0JNQnVmZmVyU3dhcGNoYWluKEJ1
ZmZlclN3YXBjaGFpblNpemUpOwotICAgIH5HQk1CdWZmZXJTd2FwY2hhaW4oKTsKLQotICAgIHN0
cnVjdCBCdWZmZXJEZXNjcmlwdGlvbiB7Ci0gICAgICAgIERNQUJ1ZkZvcm1hdCBmb3JtYXQgeyB9
OwotICAgICAgICB1aW50MzJfdCB3aWR0aCB7IDAgfTsKLSAgICAgICAgdWludDMyX3QgaGVpZ2h0
ICB7IDAgfTsKLSAgICB9OwotCi0gICAgY2xhc3MgQnVmZmVyIDogcHVibGljIFRocmVhZFNhZmVS
ZWZDb3VudGVkPEJ1ZmZlcj4gewotICAgICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAg
ICBwdWJsaWM6Ci0gICAgICAgIEJ1ZmZlcih1aW50MzJfdCwgY29uc3QgQnVmZmVyRGVzY3JpcHRp
b24mKTsKLSAgICAgICAgfkJ1ZmZlcigpOwotCi0gICAgICAgIERNQUJ1Zk9iamVjdCBjcmVhdGVE
TUFCdWZPYmplY3QodWludHB0cl90KSBjb25zdDsKLQotICAgICAgICBzdHJ1Y3QgUGxhbmVEYXRh
IHsKLSAgICAgICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFBsYW5lRGF0YSk7Ci0gICAgICAg
ICAgICBXVEZfTUFLRV9OT05NT1ZBQkxFKFBsYW5lRGF0YSk7Ci0KLSAgICAgICAgICAgIFBsYW5l
RGF0YSgpID0gZGVmYXVsdDsKLSAgICAgICAgICAgIH5QbGFuZURhdGEoKTsKLQotICAgICAgICAg
ICAgRE1BQnVmRm9ybWF0OjpGb3VyQ0MgZm91cmNjIHsgRE1BQnVmRm9ybWF0OjpGb3VyQ0M6Oklu
dmFsaWQgfTsKLSAgICAgICAgICAgIHVpbnQzMl90IHdpZHRoIHsgMCB9OwotICAgICAgICAgICAg
dWludDMyX3QgaGVpZ2h0IHsgMCB9OwotICAgICAgICAgICAgdWludDMyX3Qgc3RyaWRlIHsgMCB9
OwotICAgICAgICAgICAgc3RydWN0IGdibV9ibyogYm8geyBudWxscHRyIH07Ci0gICAgICAgIH07
Ci0KLSAgICAgICAgdWludDMyX3QgaGFuZGxlKCkgY29uc3QgeyByZXR1cm4gbV9oYW5kbGU7IH0K
LQotICAgICAgICB1bnNpZ25lZCBudW1QbGFuZXMoKSBjb25zdCB7IHJldHVybiBtX2Rlc2NyaXB0
aW9uLmZvcm1hdC5udW1QbGFuZXM7IH0KLSAgICAgICAgY29uc3QgUGxhbmVEYXRhJiBwbGFuZURh
dGEodW5zaWduZWQgaW5kZXgpIGNvbnN0Ci0gICAgICAgIHsKLSAgICAgICAgICAgIEFTU0VSVChp
bmRleCA8IERNQUJ1ZkZvcm1hdDo6Y19tYXhQbGFuZXMpOwotICAgICAgICAgICAgcmV0dXJuIG1f
cGxhbmVzW2luZGV4XTsKLSAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgZnJpZW5k
IGNsYXNzIEdCTUJ1ZmZlclN3YXBjaGFpbjsKLQotICAgICAgICB1aW50MzJfdCBtX2hhbmRsZSB7
IDAgfTsKLSAgICAgICAgc3RydWN0IHsKLSAgICAgICAgICAgIGJvb2wgbG9ja2VkIHsgZmFsc2Ug
fTsKLSAgICAgICAgICAgIERNQUJ1ZlJlbGVhc2VGbGFnIHJlbGVhc2VGbGFnOwotICAgICAgICB9
IG1fc3RhdGU7Ci0KLSAgICAgICAgQnVmZmVyRGVzY3JpcHRpb24gbV9kZXNjcmlwdGlvbjsKLSAg
ICAgICAgc3RkOjphcnJheTxQbGFuZURhdGEsIERNQUJ1ZkZvcm1hdDo6Y19tYXhQbGFuZXM+IG1f
cGxhbmVzOwotICAgIH07Ci0KLSAgICBSZWZQdHI8QnVmZmVyPiBnZXRCdWZmZXIoY29uc3QgQnVm
ZmVyRGVzY3JpcHRpb24mKTsKLQotcHJpdmF0ZToKLSAgICBzdGF0aWMgY29uc3RleHByIHVuc2ln
bmVkIGNfbWF4QnVmZmVycyA9IDg7Ci0KLSAgICB1aW50MzJfdCBtX2hhbmRsZUdlbmVyYXRvciB7
IDAgfTsKLSAgICBzdHJ1Y3QgewotICAgICAgICBCdWZmZXJEZXNjcmlwdGlvbiBkZXNjcmlwdGlv
bjsKLSAgICAgICAgdW5zaWduZWQgc2l6ZSB7IDAgfTsKLSAgICAgICAgc3RkOjphcnJheTxSZWZQ
dHI8QnVmZmVyPiwgY19tYXhCdWZmZXJzPiBvYmplY3QgeyB9OwotICAgIH0gbV9hcnJheTsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9ETUFCdWZWaWRlb1NpbmtHU3RyZWFtZXIuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZpZGVvU2lu
a0dTdHJlYW1lci5jcHAKaW5kZXggYzEzODZjYThlOWUwZGE2NjZkN2VjNTdlMTQxN2E4YmQ0ZGE5
MDhiZC4uNzBmMjA0NzQzMTU5OGEwY2IzOGU0YzZkMzVjODhhNDE1NTU5YmU0YSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZpZGVv
U2lua0dTdHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5jcHAKQEAgLTE2MCwyMyArMTYwLDYg
QEAgc3RhdGljIHZvaWQgd2Via2l0X2RtYWJ1Zl92aWRlb19zaW5rX2NsYXNzX2luaXQoV2ViS2l0
RE1BQnVmVmlkZW9TaW5rQ2xhc3MqIGtsYXMKICAgICAgICAgIlNpbmsgU3RhdGlzdGljcyIsIEdT
VF9UWVBFX1NUUlVDVFVSRSwgc3RhdGljX2Nhc3Q8R1BhcmFtRmxhZ3M+KEdfUEFSQU1fUkVBREFC
TEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogfQogCi1ib29sIHdlYktpdERNQUJ1ZlZp
ZGVvU2lua0lzRW5hYmxlZCgpCi17Ci0gICAgc3RhdGljIGJvb2wgc19lbmFibGVkID0gZmFsc2U7
Ci0gICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIHNfZmxhZzsKLSAgICBzdGQ6OmNhbGxfb25jZShz
X2ZsYWcsCi0gICAgICAgIFsmXSB7Ci0gICAgICAgICAgICBjb25zdCBjaGFyKiB2YWx1ZSA9IGdf
Z2V0ZW52KCJXRUJLSVRfR1NUX0RNQUJVRl9TSU5LX0VOQUJMRUQiKTsKLSAgICAgICAgICAgIHNf
ZW5hYmxlZCA9IHZhbHVlICYmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHZhbHVlLCAidHJ1ZSIp
IHx8IGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodmFsdWUsICIxIikpOwotICAgICAgICB9KTsKLSAg
ICByZXR1cm4gc19lbmFibGVkOwotfQotCi1ib29sIHdlYktpdERNQUJ1ZlZpZGVvU2lua1Byb2Jl
UGxhdGZvcm0oKQotewotICAgIHJldHVybiBpc0dTdHJlYW1lclBsdWdpbkF2YWlsYWJsZSgiYXBw
Iik7Ci19Ci0KIHZvaWQgd2ViS2l0RE1BQnVmVmlkZW9TaW5rU2V0TWVkaWFQbGF5ZXJQcml2YXRl
KFdlYktpdERNQUJ1ZlZpZGVvU2luayogc2luaywgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVy
KiBwbGF5ZXIpCiB7CiAgICAgV2ViS2l0RE1BQnVmVmlkZW9TaW5rUHJpdmF0ZSogcHJpdiA9IHNp
bmstPnByaXY7CkBAIC0xODUsNCArMTY4LDkgQEAgdm9pZCB3ZWJLaXRETUFCdWZWaWRlb1NpbmtT
ZXRNZWRpYVBsYXllclByaXZhdGUoV2ViS2l0RE1BQnVmVmlkZW9TaW5rKiBzaW5rLCBNZWQKICAg
ICB3ZWJLaXRWaWRlb1NpbmtTZXRNZWRpYVBsYXllclByaXZhdGUocHJpdi0+YXBwU2luay5nZXQo
KSwgcHJpdi0+bWVkaWFQbGF5ZXJQcml2YXRlKTsKIH0KIAorYm9vbCB3ZWJLaXRETUFCdWZWaWRl
b1NpbmtQcm9iZVBsYXRmb3JtKCkKK3sKKyAgICByZXR1cm4gaXNHU3RyZWFtZXJQbHVnaW5BdmFp
bGFibGUoImFwcCIpOworfQorCiAjZW5kaWYgLy8gRU5BQkxFKFZJREVPKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL0RNQUJ1ZlZpZGVvU2lu
a0dTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVy
L0RNQUJ1ZlZpZGVvU2lua0dTdHJlYW1lci5oCmluZGV4IDMyOGU4YjdlYjljMTc3MWM5MGNmODM5
ODc2NjE2NDY1ODhiN2I3YzYuLmRmMjRhNmYwZmEzN2QyMzc1NTFlNjgxNjlhY2FhNzlkN2M5OTBm
ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9ETUFCdWZWaWRlb1NpbmtHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9nc3RyZWFtZXIvRE1BQnVmVmlkZW9TaW5rR1N0cmVhbWVyLmgKQEAgLTUwLDcg
KzUwLDYgQEAgc3RydWN0IF9XZWJLaXRETUFCdWZWaWRlb1NpbmtDbGFzcyB7CiAKIEdUeXBlIHdl
YmtpdF9kbWFidWZfdmlkZW9fc2lua19nZXRfdHlwZSh2b2lkKTsKIAotYm9vbCB3ZWJLaXRETUFC
dWZWaWRlb1NpbmtJc0VuYWJsZWQoKTsKIGJvb2wgd2ViS2l0RE1BQnVmVmlkZW9TaW5rUHJvYmVQ
bGF0Zm9ybSgpOwogdm9pZCB3ZWJLaXRETUFCdWZWaWRlb1NpbmtTZXRNZWRpYVBsYXllclByaXZh
dGUoV2ViS2l0RE1BQnVmVmlkZW9TaW5rKiwgV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyKik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1l
ci5jcHAKaW5kZXggZWIwOTBjNzg4ZDE5ODQ3ZDExNzI4MWJjNTFjMjgyNDQ4NGE1N2RlYS4uYmQy
ZDk1ZjU0ZDQzODA2NGU5MWIzM2YzMTUwMmIyMTEwOTMxYzYxZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdT
dHJlYW1lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVh
bWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5jcHAKQEAgLTI4LDExICsyOCw2IEBACiAK
ICNpZiBFTkFCTEUoVklERU8pICYmIFVTRShHU1RSRUFNRVIpCiAKLSNpbmNsdWRlICJETUFCdWZG
b3JtYXQuaCIKLSNpbmNsdWRlICJETUFCdWZPYmplY3QuaCIKLSNpbmNsdWRlICJETUFCdWZWaWRl
b1NpbmtHU3RyZWFtZXIuaCIKLSNpbmNsdWRlICJHQk1CdWZmZXJTd2FwY2hhaW4uaCIKLSNpbmNs
dWRlICJHQk1EZXZpY2UuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQuaCIKICNpbmNsdWRl
ICJHU3RyZWFtZXJBdWRpb01peGVyLmgiCiAjaW5jbHVkZSAiR1N0cmVhbWVyQ29tbW9uLmgiCkBA
IC04MCw5ICs3NSw3IEBACiAjaW5jbHVkZSAiQXVkaW9Tb3VyY2VQcm92aWRlckdTdHJlYW1lci5o
IgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnYm0uaD4KICNpbmNsdWRlIDxnbGliLmg+Ci0jaW5jbHVk
ZSA8Z3N0L2FsbG9jYXRvcnMvZ3N0ZG1hYnVmLmg+CiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL3N0cmVh
bXZvbHVtZS5oPgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvcGJ1dGlscy9t
aXNzaW5nLXBsdWdpbnMuaD4KQEAgLTk5LDcgKzkyLDYgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9B
dG9tU3RyaW5nLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1N0cmluZ0NvbmNhdGVuYXRlTnVtYmVycy5oPgotI2luY2x1ZGUgPHd0Zi9VbmlTdGRF
eHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSA8d3RmL1dhbGxUaW1lLmg+
CiAKQEAgLTEyMiw3ICsxMTQsNiBAQAogI2luY2x1ZGUgIkdTdHJlYW1lclZpZGVvRnJhbWVIb2xk
ZXIuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFwcGVyQ29udGV4dEF0dHJpYnV0ZXMuaCIKICNpbmNs
dWRlICJUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllckJ1ZmZlci5oIgotI2luY2x1ZGUgIlRleHR1
cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWYuaCIKICNpbmNsdWRlICJUZXh0dXJlTWFw
cGVyUGxhdGZvcm1MYXllclByb3h5R0wuaCIKICNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJf
R0wpCiAKQEAgLTE2NCwyOSArMTU1LDIzIEBAIE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6
TWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyKE1lZGlhUGxheWVyKiBwbGF5ZXIpCiAgICAgLCBt
X21heFRpbWVMb2FkZWRBdExhc3REaWRMb2FkaW5nUHJvZ3Jlc3MoTWVkaWFUaW1lOjp6ZXJvVGlt
ZSgpKQogICAgICwgbV9kcmF3VGltZXIoUnVuTG9vcDo6bWFpbigpLCB0aGlzLCAmTWVkaWFQbGF5
ZXJQcml2YXRlR1N0cmVhbWVyOjpyZXBhaW50KQogICAgICwgbV9yZWFkeVRpbWVySGFuZGxlcihS
dW5Mb29wOjptYWluKCksIHRoaXMsICZNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlYWR5
VGltZXJGaXJlZCkKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmICFVU0UoTklDT1NJQSkK
KyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKE5JQ09TSUEpCisgICAgLCBtX25p
Y29zaWFMYXllcihOaWNvc2lhOjpDb250ZW50TGF5ZXI6OmNyZWF0ZShOaWNvc2lhOjpDb250ZW50
TGF5ZXJUZXh0dXJlTWFwcGVySW1wbDo6Y3JlYXRlRmFjdG9yeSgqdGhpcykpKQorI2Vsc2UKICAg
ICAsIG1fcGxhdGZvcm1MYXllclByb3h5KGFkb3B0UmVmKG5ldyBUZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5R0wpKQogI2VuZGlmCisjZW5kaWYKICNpZiAhUkVMRUFTRV9MT0dfRElTQUJM
RUQKICAgICAsIG1fbG9nZ2VyKHBsYXllci0+bWVkaWFQbGF5ZXJMb2dnZXIoKSkKICAgICAsIG1f
bG9nSWRlbnRpZmllcihwbGF5ZXItPm1lZGlhUGxheWVyTG9nSWRlbnRpZmllcigpKQogI2VuZGlm
Ci0gICAgLCBtX3N3YXBjaGFpbihhZG9wdFJlZihuZXcgR0JNQnVmZmVyU3dhcGNoYWluKEdCTUJ1
ZmZlclN3YXBjaGFpbjo6QnVmZmVyU3dhcGNoYWluU2l6ZTo6RWlnaHQpKSkKIHsKICNpZiBVU0Uo
R0xJQikKICAgICBtX3JlYWR5VGltZXJIYW5kbGVyLnNldFByaW9yaXR5KEdfUFJJT1JJVFlfREVG
QVVMVF9JRExFKTsKICNlbmRpZgogICAgIG1faXNQbGF5ZXJTaHV0dGluZ0Rvd24uc3RvcmUoZmFs
c2UpOwogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBVU0UoTklDT1NJQSkKLSAgICBt
X25pY29zaWFMYXllciA9IE5pY29zaWE6OkNvbnRlbnRMYXllcjo6Y3JlYXRlKE5pY29zaWE6OkNv
bnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsOjpjcmVhdGVGYWN0b3J5KCp0aGlzLAotICAgICAg
ICBbJl0oKSAtPiBSZWY8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eT4gewotICAgICAg
ICAgICAgaWYgKHdlYktpdERNQUJ1ZlZpZGVvU2lua0lzRW5hYmxlZCgpICYmIHdlYktpdERNQUJ1
ZlZpZGVvU2lua1Byb2JlUGxhdGZvcm0oKSkKLSAgICAgICAgICAgICAgICByZXR1cm4gYWRvcHRS
ZWYoKm5ldyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVmKTsKLSAgICAgICAg
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlH
TCk7Ci0gICAgICAgIH0oKSkpOwotI2VuZGlmCi0KICAgICBlbnN1cmVHU3RyZWFtZXJJbml0aWFs
aXplZCgpOwogICAgIG1fYXVkaW9TaW5rID0gY3JlYXRlQXVkaW9TaW5rKCk7CiAKQEAgLTI4ODYs
NyArMjg3MSw3IEBAIGJvb2wgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwZXJmb3JtVGFz
a0F0TWVkaWFUaW1lKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrCiBQbGF0Zm9ybUxheWVyKiBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnBsYXRmb3JtTGF5ZXIoKSBjb25zdAogewogI2lmIFVT
RShOSUNPU0lBKQotICAgIHJldHVybiBtX25pY29zaWFMYXllci5nZXQoKTsKKyAgICByZXR1cm4g
bV9uaWNvc2lhTGF5ZXIucHRyKCk7CiAjZWxzZQogICAgIHJldHVybiBjb25zdF9jYXN0PE1lZGlh
UGxheWVyUHJpdmF0ZUdTdHJlYW1lcio+KHRoaXMpOwogI2VuZGlmCkBAIC0yOTk4LDIzMSArMjk4
Myw2IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpwdXNoVGV4dHVyZVRvQ29t
cG9zaXRvcigpCiAgICAgcHJveHlPcGVyYXRpb24oKm1fcGxhdGZvcm1MYXllclByb3h5KTsKICNl
bmRpZgogfQotCi0vLyBHU3RyZWFtZXIncyBnc3RfdmlkZW9fZm9ybWF0X3RvX2ZvdXJjYygpIGRv
ZXNuJ3QgY292ZXIgUkdCLWxpa2UgZm9ybWF0cywgc28gd2UKLS8vIHByb3ZpZGUgdGhlIGFwcHJv
cHJpYXRlIEZvdXJDQyB2YWx1ZXMgZm9yIHRob3NlIHRocm91Z2ggdGhpcyBmdW5jaW9uLgotc3Rh
dGljIHVpbnQzMl90IGZvdXJjY1ZhbHVlKEdzdFZpZGVvRm9ybWF0IGZvcm1hdCkKLXsKLSAgICBz
d2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0J4OgotICAgICAg
ICByZXR1cm4gdWludDMyX3QoRE1BQnVmRm9ybWF0OjpGb3VyQ0M6OlhCR1I4ODg4KTsKLSAgICBj
YXNlIEdTVF9WSURFT19GT1JNQVRfQkdSeDoKLSAgICAgICAgcmV0dXJuIHVpbnQzMl90KERNQUJ1
ZkZvcm1hdDo6Rm91ckNDOjpYUkdCODg4OCk7Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX3hS
R0I6Ci0gICAgICAgIHJldHVybiB1aW50MzJfdChETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QkdSWDg4
ODgpOwotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94QkdSOgotICAgICAgICByZXR1cm4gdWlu
dDMyX3QoRE1BQnVmRm9ybWF0OjpGb3VyQ0M6OlJHQlg4ODg4KTsKLSAgICBjYXNlIEdTVF9WSURF
T19GT1JNQVRfUkdCQToKLSAgICAgICAgcmV0dXJuIHVpbnQzMl90KERNQUJ1ZkZvcm1hdDo6Rm91
ckNDOjpBQkdSODg4OCk7Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUkE6Ci0gICAgICAg
IHJldHVybiB1aW50MzJfdChETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QVJHQjg4ODgpOwotICAgIGNh
c2UgR1NUX1ZJREVPX0ZPUk1BVF9BUkdCOgotICAgICAgICByZXR1cm4gdWludDMyX3QoRE1BQnVm
Rm9ybWF0OjpGb3VyQ0M6OkJHUkE4ODg4KTsKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQUJH
UjoKLSAgICAgICAgcmV0dXJuIHVpbnQzMl90KERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpSR0JBODg4
OCk7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgcmV0dXJuIGdz
dF92aWRlb19mb3JtYXRfdG9fZm91cmNjKGZvcm1hdCk7Ci19Ci0KLXZvaWQgTWVkaWFQbGF5ZXJQ
cml2YXRlR1N0cmVhbWVyOjpwdXNoRE1BQnVmVG9Db21wb3NpdG9yKCkKLXsKLSAgICBMb2NrZXIg
c2FtcGxlTG9ja2VyIHsgbV9zYW1wbGVNdXRleCB9OwotICAgIGlmICghR1NUX0lTX1NBTVBMRSht
X3NhbXBsZS5nZXQoKSkpCi0gICAgICAgIHJldHVybjsKLQotICAgIGF1dG8qIGNhcHMgPSBnc3Rf
c2FtcGxlX2dldF9jYXBzKG1fc2FtcGxlLmdldCgpKTsKLSAgICBpZiAoIWNhcHMpCi0gICAgICAg
IHJldHVybjsKLQotICAgIEdzdFZpZGVvSW5mbyB2aWRlb0luZm87Ci0gICAgZ3N0X3ZpZGVvX2lu
Zm9faW5pdCgmdmlkZW9JbmZvKTsKLSAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2Fwcygm
dmlkZW9JbmZvLCBjYXBzKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogYnVmZmVyID0g
Z3N0X3NhbXBsZV9nZXRfYnVmZmVyKG1fc2FtcGxlLmdldCgpKTsKLSAgICBpZiAoIWJ1ZmZlcikK
LSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byogbWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVv
X21ldGEoYnVmZmVyKTsKLSAgICBpZiAobWV0YSkgewotICAgICAgICBHU1RfVklERU9fSU5GT19X
SURUSCgmdmlkZW9JbmZvKSA9IG1ldGEtPndpZHRoOwotICAgICAgICBHU1RfVklERU9fSU5GT19I
RUlHSFQoJnZpZGVvSW5mbykgPSBtZXRhLT5oZWlnaHQ7Ci0KLSAgICAgICAgZm9yICh1bnNpZ25l
ZCBpID0gMDsgaSA8IG1ldGEtPm5fcGxhbmVzOyArK2kpIHsKLSAgICAgICAgICAgIEdTVF9WSURF
T19JTkZPX1BMQU5FX09GRlNFVCgmdmlkZW9JbmZvLCBpKSA9IG1ldGEtPm9mZnNldFtpXTsKLSAg
ICAgICAgICAgIEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSgmdmlkZW9JbmZvLCBpKSA9IG1l
dGEtPnN0cmlkZVtpXTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIGF1dG8mIHByb3h5ID0gZG93
bmNhc3Q8Tmljb3NpYTo6Q29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw+KG1fbmljb3NpYUxh
eWVyLT5pbXBsKCkpLnByb3h5KCk7Ci0gICAgQVNTRVJUKGlzPFRleHR1cmVNYXBwZXJQbGF0Zm9y
bUxheWVyUHJveHlETUFCdWY+KHByb3h5KSk7Ci0KLSAgICBhdXRvKiBmZWF0dXJlcyA9IGdzdF9j
YXBzX2dldF9mZWF0dXJlcyhjYXBzLCAwKTsKLSAgICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29u
dGFpbnMoZmVhdHVyZXMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0RNQUJVRikpIHsKLSAgICAg
ICAgLy8gSW4gY2FzZSBvZiBhIGhhcmR3YXJlIGRlY29kZXIgdGhhdCdzIHlpZWxkaW5nIGRtYWJ1
ZiBtZW1vcnksIHdlIGNhbiB0YWtlIHRoZSByZWxldmFudCBkYXRhIGFuZAotICAgICAgICAvLyBw
dXNoIGl0IGludG8gdGhlIGNvbXBvc2l0aW9uIHByb2Nlc3MuCi0KLSAgICAgICAgKyttX3NhbXBs
ZUNvdW50OwotICAgICAgICBMb2NrZXIgbG9ja2VyIHsgcHJveHkubG9jaygpIH07Ci0gICAgICAg
IGlmICghcHJveHkuaXNBY3RpdmUoKSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAv
LyBQcm92aWRlIHRoZSBETUFCdWZPYmplY3Qgd2l0aCBhIHJlbGV2YW50IGhhbmRsZSAobWVtb3J5
IGFkZHJlc3MpLiBXaGVuIHByb3ZpZGVkIGZvciB0aGUgZmlyc3QgdGltZSwKLSAgICAgICAgLy8g
dGhlIGxhbWJkYSB3aWxsIGJlIGludm9rZWQgYW5kIGFsbCBkbWFidWYgZGF0YSBpcyBmaWxsZWQg
aW4uCi0gICAgICAgIGRvd25jYXN0PFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFC
dWY+KHByb3h5KS5wdXNoRE1BQnVmKAotICAgICAgICAgICAgRE1BQnVmT2JqZWN0KHJlaW50ZXJw
cmV0X2Nhc3Q8dWludHB0cl90Pihnc3RfYnVmZmVyX3BlZWtfbWVtb3J5KGJ1ZmZlciwgMCkpKSwK
LSAgICAgICAgICAgIFsmXShhdXRvJiYgb2JqZWN0KSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0
LmZvcm1hdCA9IERNQUJ1ZkZvcm1hdDo6Y3JlYXRlKGZvdXJjY1ZhbHVlKEdTVF9WSURFT19JTkZP
X0ZPUk1BVCgmdmlkZW9JbmZvKSkpOwotICAgICAgICAgICAgICAgIG9iamVjdC53aWR0aCA9IEdT
VF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pOwotICAgICAgICAgICAgICAgIG9iamVjdC5o
ZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbyk7Ci0KLSAgICAgICAgICAg
ICAgICAvLyBUT0RPOiByZWxlYXNlIG1lY2hhbmlzbSBmb3IgYSBkZWNvZGVyLXByb3ZpZGVkIGRt
YWJ1ZiBpcyBhIGJpdCB0cmlja3kuIFRoZSBkbWFidWYgb2JqZWN0Ci0gICAgICAgICAgICAgICAg
Ly8gaXRzZWxmIGRvZXNuJ3QgcHJvdmlkZSBhbnl0aGluZyB1c2VmdWwsIGJ1dCB0aGUgZGVjb2Rl
ciB3b24ndCByZXVzZSB0aGUgZG1hYnVmIHVudGlsIHRoZQotICAgICAgICAgICAgICAgIC8vIHJl
bGV2YW50IEdzdFNhbXBsZSByZWZlcmVuY2UgaXMgZHJvcHBlZCBieSB0aGUgZG93bnN0cmVhbSBw
aXBlbGluZS4gU28gZm9yIHRoaXMgdG8gd29yaywKLSAgICAgICAgICAgICAgICAvLyB0aGVyZSdz
IGEgbmVlZCB0byBzb21laG93IGFzc29jaWF0ZSB0aGUgR3N0U2FtcGxlIHJlZmVyZW5jZSB3aXRo
IHRoaXMgcmVsZWFzZSBmbGFnIHNvIHRoYXQKLSAgICAgICAgICAgICAgICAvLyB0aGUgcmVmZXJl
bmNlIGlzIGRyb3BwZWQgb25jZSB0aGUgcmVsZWFzZSBmbGFnIGlzIHNpZ25hbGxlZC4gVGhlcmUn
cyB3YXlzIHRvIGFjaGlldmUgdGhhdCwKLSAgICAgICAgICAgICAgICAvLyBidXQgbGVmdCBmb3Ig
bGF0ZXIuCi0gICAgICAgICAgICAgICAgb2JqZWN0LnJlbGVhc2VGbGFnID0gRE1BQnVmUmVsZWFz
ZUZsYWcgeyB9OwotCi0gICAgICAgICAgICAgICAgLy8gRm9yIGVhY2ggcGxhbmUsIHRoZSByZWxl
dmFudCBkYXRhIChzdHJpZGUsIG9mZnNldCwgc2tpcCwgZG1hYnVmIGZkKSBpcyByZXRyaWV2ZWQg
YW5kIGFzc2lnbmVkCi0gICAgICAgICAgICAgICAgLy8gYXMgYXBwcm9wcmlhdGUuIE1vZGlmaWVy
IHZhbHVlcyBhcmUgemVyb2VkIG91dCBmb3Igbm93LCBzaW5jZSBHU3RyZWFtZXIgZG9lc24ndCB5
ZXQgcHJvdmlkZQotICAgICAgICAgICAgICAgIC8vIHRoZSBpbmZvcm1hdGlvbi4KLSAgICAgICAg
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgb2JqZWN0LmZvcm1hdC5udW1QbGFuZXM7
ICsraSkgewotICAgICAgICAgICAgICAgICAgICBnc2l6ZSBvZmZzZXQgPSBHU1RfVklERU9fSU5G
T19QTEFORV9PRkZTRVQoJnZpZGVvSW5mbywgaSk7Ci0gICAgICAgICAgICAgICAgICAgIGd1aW50
IG1lbWlkID0gMDsKLSAgICAgICAgICAgICAgICAgICAgZ3VpbnQgbGVuZ3RoID0gMDsKLSAgICAg
ICAgICAgICAgICAgICAgZ3NpemUgc2tpcCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChn
c3RfYnVmZmVyX2ZpbmRfbWVtb3J5KGJ1ZmZlciwgb2Zmc2V0LCAxLCAmbWVtaWQsICZsZW5ndGgs
ICZza2lwKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgYXV0byogbWVtID0gZ3N0X2J1ZmZl
cl9wZWVrX21lbW9yeShidWZmZXIsIG1lbWlkKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9i
amVjdC5mZFtpXSA9IGR1cENsb3NlT25FeGVjKGdzdF9kbWFidWZfbWVtb3J5X2dldF9mZChtZW0p
KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIG9mZnNldCA9IG1lbS0+b2Zmc2V0ICsgc2tpcDsK
LSAgICAgICAgICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgICAgICAgICAgICBvYmpl
Y3QuZmRbaV0gPSAtMTsKLQotICAgICAgICAgICAgICAgICAgICBnaW50IGNvbXBbR1NUX1ZJREVP
X01BWF9DT01QT05FTlRTXTsKLSAgICAgICAgICAgICAgICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF9p
bmZvX2NvbXBvbmVudCh2aWRlb0luZm8uZmluZm8sIGksIGNvbXApOwotICAgICAgICAgICAgICAg
ICAgICBvYmplY3Qub2Zmc2V0W2ldID0gb2Zmc2V0OwotICAgICAgICAgICAgICAgICAgICBvYmpl
Y3Quc3RyaWRlW2ldID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFKCZ2aWRlb0luZm8sIGkp
OwotICAgICAgICAgICAgICAgICAgICBvYmplY3QubW9kaWZpZXJbaV0gPSAwOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICByZXR1cm4gb2JqZWN0OwotICAgICAgICAgICAgfSk7
Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICAvLyBJZiB0aGUgZGVjb2RlciBpcyBleHBv
cnRpbmcgcmF3IG1lbW9yeSwgd2UgaGF2ZSB0byB1c2UgdGhlIHN3YXBjaGFpbiB0byBhbGxvY2F0
ZSBhcHByb3ByaWF0ZSBidWZmZXJzCi0gICAgLy8gYW5kIGNvcHkgb3ZlciB0aGUgZGF0YSBmb3Ig
ZWFjaCBwbGFuZS4KLSAgICBHQk1CdWZmZXJTd2FwY2hhaW46OkJ1ZmZlckRlc2NyaXB0aW9uIGJ1
ZmZlckRlc2NyaXB0aW9uIHsKLSAgICAgICAgRE1BQnVmRm9ybWF0OjpjcmVhdGUoZm91cmNjVmFs
dWUoR1NUX1ZJREVPX0lORk9fRk9STUFUKCZ2aWRlb0luZm8pKSksCi0gICAgICAgIHN0YXRpY19j
YXN0PHVpbnQzMl90PkdTVF9WSURFT19JTkZPX1dJRFRIKCZ2aWRlb0luZm8pLCBzdGF0aWNfY2Fz
dDx1aW50MzJfdD5HU1RfVklERU9fSU5GT19IRUlHSFQoJnZpZGVvSW5mbyksCi0gICAgfTsKLSAg
ICBpZiAoYnVmZmVyRGVzY3JpcHRpb24uZm9ybWF0LmZvdXJjYyA9PSBETUFCdWZGb3JtYXQ6OkZv
dXJDQzo6SW52YWxpZCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBzd2FwY2hhaW5CdWZm
ZXIgPSBtX3N3YXBjaGFpbi0+Z2V0QnVmZmVyKGJ1ZmZlckRlc2NyaXB0aW9uKTsKLQotICAgIC8v
IFNvdXJjZSBoZWxwZXIgc3RydWN0LCBtYXBzIHRoZSByYXcgbWVtb3J5IGFuZCBleHBvc2VzIHRo
ZSBtYXBwZWQgZGF0YSBmb3IgY29weWluZy4KLSAgICBzdHJ1Y3QgU291cmNlIHsKLSAgICAgICAg
U291cmNlKEdzdE1lbW9yeSogbWVtb3J5LCBnc2l6ZSBvZmZzZXQsIHVpbnQzMl90IHN0cmlkZSwg
dWludDMyX3QgaGVpZ2h0KQotICAgICAgICAgICAgOiBtZW1vcnkobWVtb3J5KQotICAgICAgICAg
ICAgLCBzdHJpZGUoc3RyaWRlKQotICAgICAgICAgICAgLCBoZWlnaHQoaGVpZ2h0KQotICAgICAg
ICB7Ci0gICAgICAgICAgICBpZiAoIWdzdF9tZW1vcnlfbWFwKG1lbW9yeSwgJm1hcEluZm8sIEdT
VF9NQVBfUkVBRCkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICB2YWxp
ZCA9IHRydWU7Ci0gICAgICAgICAgICBkYXRhID0gJm1hcEluZm8uZGF0YVtvZmZzZXRdOwotICAg
ICAgICB9Ci0KLSAgICAgICAgflNvdXJjZSgpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmICh2
YWxpZCkKLSAgICAgICAgICAgICAgICBnc3RfbWVtb3J5X3VubWFwKG1lbW9yeSwgJm1hcEluZm8p
OwotICAgICAgICB9Ci0KLSAgICAgICAgYm9vbCB2YWxpZCB7IGZhbHNlIH07Ci0gICAgICAgIEdz
dE1lbW9yeSogbWVtb3J5IHsgbnVsbHB0ciB9OwotICAgICAgICBHc3RNYXBJbmZvIG1hcEluZm87
Ci0gICAgICAgIHVpbnQ4X3QqIGRhdGEgeyBudWxscHRyIH07Ci0gICAgICAgIHVpbnQzMl90IHN0
cmlkZSB7IDAgfTsKLSAgICAgICAgdWludDMyX3QgaGVpZ2h0IHsgMCB9OwotICAgIH07Ci0KLSAg
ICAvLyBEZXN0aW5hdGlvbiBoZWxwZXIgc3RydWN0LCBtYXBzIHRoZSBnYm1fYm8gb2JqZWN0IGlu
dG8gQ1BVLW1lbW9yeSBzcGFjZSBhbmQgY29waWVzIGZyb20gdGhlIGFjY29tcGFueWluZyBTb3Vy
Y2UgaW4gZmlsbCgpLgotICAgIHN0cnVjdCBEZXN0aW5hdGlvbiB7Ci0gICAgICAgIERlc3RpbmF0
aW9uKHN0cnVjdCBnYm1fYm8qIGJvLCB1aW50MzJfdCB3aWR0aCwgdWludDMyX3QgaGVpZ2h0KQot
ICAgICAgICAgICAgOiBibyhibykKLSAgICAgICAgewotICAgICAgICAgICAgbWFwID0gZ2JtX2Jv
X21hcChibywgMCwgMCwgd2lkdGgsIGhlaWdodCwgR0JNX0JPX1RSQU5TRkVSX1dSSVRFLCAmc3Ry
aWRlLCAmbWFwRGF0YSk7Ci0gICAgICAgICAgICBpZiAoIW1hcCkKLSAgICAgICAgICAgICAgICBy
ZXR1cm47Ci0KLSAgICAgICAgICAgIHZhbGlkID0gdHJ1ZTsKLSAgICAgICAgICAgIGRhdGEgPSBy
ZWludGVycHJldF9jYXN0PHVpbnQ4X3QqPihtYXApOwotICAgICAgICB9Ci0KLSAgICAgICAgfkRl
c3RpbmF0aW9uKCkKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKHZhbGlkKQotICAgICAgICAg
ICAgICAgIGdibV9ib191bm1hcChibywgbWFwRGF0YSk7Ci0gICAgICAgIH0KLQotICAgICAgICB2
b2lkIGZpbGwoY29uc3QgU291cmNlJiBzb3VyY2UpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGZv
ciAodWludDMyX3QgeSA9IDA7IHkgPCBzb3VyY2UuaGVpZ2h0OyArK3kpIHsKLSAgICAgICAgICAg
ICAgICBhdXRvKiBzb3VyY2VEYXRhID0gJnNvdXJjZS5kYXRhW3kgKiBzb3VyY2Uuc3RyaWRlXTsK
LSAgICAgICAgICAgICAgICBhdXRvKiBkZXN0aW5hdGlvbkRhdGEgPSAmZGF0YVt5ICogc3RyaWRl
XTsKLSAgICAgICAgICAgICAgICBtZW1jcHkoZGVzdGluYXRpb25EYXRhLCBzb3VyY2VEYXRhLCBz
dGQ6Om1pbihzb3VyY2Uuc3RyaWRlLCBzdHJpZGUpKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAg
fQotCi0gICAgICAgIGJvb2wgdmFsaWQgeyBmYWxzZSB9OwotICAgICAgICBzdHJ1Y3QgZ2JtX2Jv
KiBibyB7IG51bGxwdHIgfTsKLSAgICAgICAgdm9pZCogbWFwIHsgbnVsbHB0ciB9OwotICAgICAg
ICB2b2lkKiBtYXBEYXRhIHsgbnVsbHB0ciB9OwotICAgICAgICB1aW50OF90KiBkYXRhIHsgbnVs
bHB0ciB9OwotICAgICAgICB1aW50MzJfdCBzdHJpZGUgeyAwIH07Ci0gICAgfTsKLQotICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUygmdmlkZW9JbmZv
KTsgKytpKSB7Ci0gICAgICAgIGdpbnQgY29tcFtHU1RfVklERU9fTUFYX0NPTVBPTkVOVFNdOwot
ICAgICAgICBnc3RfdmlkZW9fZm9ybWF0X2luZm9fY29tcG9uZW50KHZpZGVvSW5mby5maW5mbywg
aSwgY29tcCk7Ci0KLSAgICAgICAgYXV0byYgcGxhbmVEYXRhID0gc3dhcGNoYWluQnVmZmVyLT5w
bGFuZURhdGEoaSk7Ci0gICAgICAgIGdzaXplIG9mZnNldCA9IEdTVF9WSURFT19JTkZPX1BMQU5F
X09GRlNFVCgmdmlkZW9JbmZvLCBpKTsKLSAgICAgICAgZ3VpbnQgc3RyaWRlID0gR1NUX1ZJREVP
X0lORk9fUExBTkVfU1RSSURFKCZ2aWRlb0luZm8sIGkpOwotCi0gICAgICAgIGd1aW50IG1lbWlk
LCBsZW5ndGg7Ci0gICAgICAgIGdzaXplIHNraXA7Ci0gICAgICAgIGlmIChnc3RfYnVmZmVyX2Zp
bmRfbWVtb3J5KGJ1ZmZlciwgb2Zmc2V0LCAxLCAmbWVtaWQsICZsZW5ndGgsICZza2lwKSkgewot
ICAgICAgICAgICAgYXV0byogbWVtID0gZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeShidWZmZXIsIG1l
bWlkKTsKLQotICAgICAgICAgICAgU291cmNlIHNvdXJjZShtZW0sIG9mZnNldCwgc3RyaWRlLCBw
bGFuZURhdGEuaGVpZ2h0KTsKLSAgICAgICAgICAgIERlc3RpbmF0aW9uIGRlc3RpbmF0aW9uKHBs
YW5lRGF0YS5ibywgcGxhbmVEYXRhLndpZHRoLCBwbGFuZURhdGEuaGVpZ2h0KTsKLQotICAgICAg
ICAgICAgaWYgKHNvdXJjZS52YWxpZCAmJiBkZXN0aW5hdGlvbi52YWxpZCkKLSAgICAgICAgICAg
ICAgICBkZXN0aW5hdGlvbi5maWxsKHNvdXJjZSk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAr
K21fc2FtcGxlQ291bnQ7Ci0gICAgTG9ja2VyIGxvY2tlciB7IHByb3h5LmxvY2soKSB9OwotICAg
IGlmICghcHJveHkuaXNBY3RpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgLy8gVGhlIHVw
ZGF0ZWQgYnVmZmVyIGlzIHB1c2hlZCBpbnRvIHRoZSBjb21wb3NpdGlvbiBzdGFnZS4gVGhlIERN
QUJ1Zk9iamVjdCBoYW5kbGUgdXNlcyB0aGUgc3dhcGNoYWluIGFkZHJlc3MgYXMgdGhlIGhhbmRs
ZSBiYXNlLgotICAgIC8vIFdoZW4gdGhlIGJ1ZmZlciBpcyBwdXNoZWQgZm9yIHRoZSBmaXJzdCB0
aW1lLCB0aGUgbGFtYmRhIHdpbGwgYmUgaW52b2tlZCB0byByZXRyaWV2ZSBhIG1vcmUgY29tcGxl
dGUgRE1BQnVmT2JqZWN0IGZvciB0aGUKLSAgICAvLyBnaXZlbiBHQk1CdWZmZXJTd2FwY2hhaW46
OkJ1ZmZlciBvYmplY3QuCi0gICAgZG93bmNhc3Q8VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eURNQUJ1Zj4ocHJveHkpLnB1c2hETUFCdWYoCi0gICAgICAgIERNQUJ1Zk9iamVjdChyZWlu
dGVycHJldF9jYXN0PHVpbnRwdHJfdD4obV9zd2FwY2hhaW4uZ2V0KCkpICsgc3dhcGNoYWluQnVm
ZmVyLT5oYW5kbGUoKSksCi0gICAgICAgIFsmXShhdXRvJiYgb2JqZWN0KSB7Ci0gICAgICAgICAg
ICByZXR1cm4gc3dhcGNoYWluQnVmZmVyLT5jcmVhdGVETUFCdWZPYmplY3Qob2JqZWN0LmhhbmRs
ZSk7Ci0gICAgICAgIH0pOwotfQogI2VuZGlmIC8vIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIAog
dm9pZCBNZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXI6OnJlcGFpbnQoKQpAQCAtMzQyOSwxNiAr
MzE4OSw4IEBAIHZvaWQgTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjp0cmlnZ2VyUmVwYWlu
dChHc3RTYW1wbGUqIHNhbXBsZSkKICNlbmRpZgogICAgICAgICBtX2RyYXdUaW1lci5zdGFydE9u
ZVNob3QoMF9zKTsKICAgICAgICAgbV9kcmF3Q29uZGl0aW9uLndhaXQobV9kcmF3TG9jayk7Ci0g
ICAgfSBlbHNlIHsKLSNpZiBVU0UoTklDT1NJQSkKLSAgICAgICAgaWYgKGlzPFRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY+KGRvd25jYXN0PE5pY29zaWE6OkNvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsPihtX25pY29zaWFMYXllci0+aW1wbCgpKS5wcm94eSgpKSkgewot
ICAgICAgICAgICAgcHVzaERNQUJ1ZlRvQ29tcG9zaXRvcigpOwotICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICB9Ci0jZW5kaWYKLQorICAgIH0gZWxzZQogICAgICAgICBwdXNoVGV4dHVyZVRv
Q29tcG9zaXRvcigpOwotICAgIH0KICNlbmRpZiAvLyBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiB9
CiAKQEAgLTM2NzgsMjEgKzM0MzAsNiBAQCBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZSBNZWRp
YVBsYXllclByaXZhdGVHU3RyZWFtZXI6Om1vdmllTG9hZFR5cGUoKSBjb25zdAogICAgIHJldHVy
biBNZWRpYVBsYXllcjo6TW92aWVMb2FkVHlwZTo6RG93bmxvYWQ7CiB9CiAKLUdzdEVsZW1lbnQq
IE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcjo6Y3JlYXRlVmlkZW9TaW5rRE1BQnVmKCkKLXsK
LSAgICBpZiAoIXdlYktpdERNQUJ1ZlZpZGVvU2lua0lzRW5hYmxlZCgpKQotICAgICAgICByZXR1
cm4gbnVsbHB0cjsKLSAgICBpZiAoIXdlYktpdERNQUJ1ZlZpZGVvU2lua1Byb2JlUGxhdGZvcm0o
KSkgewotICAgICAgICBnX3dhcm5pbmcoIldlYktpdCB3YXNuJ3QgYWJsZSB0byBmaW5kIHRoZSBE
TUFCdWYgdmlkZW8gc2luayBkZXBlbmRlbmNpZXMuIEhhcmR3YXJlLWFjY2VsZXJhdGVkIHplcm8t
Y29weSB2aWRlbyByZW5kZXJpbmcgd29uJ3QgYmUgYWNoaWV2YWJsZSB3aXRoIHRoaXMgcGx1Z2lu
LiIpOwotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLSAgICB9Ci0KLSAgICBHc3RFbGVtZW50KiBz
aW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlKCJ3ZWJraXRkbWFidWZ2aWRlb3NpbmsiLCBu
dWxscHRyKTsKLSAgICBBU1NFUlQoc2luayk7Ci0gICAgd2ViS2l0RE1BQnVmVmlkZW9TaW5rU2V0
TWVkaWFQbGF5ZXJQcml2YXRlKFdFQktJVF9ETUFCVUZfVklERU9fU0lOSyhzaW5rKSwgdGhpcyk7
Ci0gICAgcmV0dXJuIHNpbms7Ci19Ci0KICNpZiBVU0UoR1NUUkVBTUVSX0dMKQogR3N0RWxlbWVu
dCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVhbWVyOjpjcmVhdGVWaWRlb1NpbmtHTCgpCiB7CkBA
IC0zNzg0LDEwICszNTIxLDggQEAgR3N0RWxlbWVudCogTWVkaWFQbGF5ZXJQcml2YXRlR1N0cmVh
bWVyOjpjcmVhdGVWaWRlb1NpbmsoKQogICAgIHJldHVybiBtX3ZpZGVvU2luay5nZXQoKTsKICNl
bmRpZgogCi0gICAgaWYgKCFtX3ZpZGVvU2luayAmJiBtX2NhblJlbmRlcmluZ0JlQWNjZWxlcmF0
ZWQpCi0gICAgICAgIG1fdmlkZW9TaW5rID0gY3JlYXRlVmlkZW9TaW5rRE1BQnVmKCk7CiAjaWYg
VVNFKEdTVFJFQU1FUl9HTCkKLSAgICBpZiAoIW1fdmlkZW9TaW5rICYmIG1fY2FuUmVuZGVyaW5n
QmVBY2NlbGVyYXRlZCkKKyAgICBpZiAobV9jYW5SZW5kZXJpbmdCZUFjY2VsZXJhdGVkKQogICAg
ICAgICBtX3ZpZGVvU2luayA9IGNyZWF0ZVZpZGVvU2lua0dMKCk7CiAjZW5kaWYKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL01lZGlhUGxh
eWVyUHJpdmF0ZUdTdHJlYW1lci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Z3N0cmVhbWVyL01lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lci5oCmluZGV4IDU2MGZjOTc3YzRi
ZDczMGQwZWVmNTFlY2Y4MmQ0MzQwMzUxYzVhNTEuLjU1ZjQxOTVlODZmM2Y1ZGM2NjViMWZlZTUw
ZDc1MzRiMDdlNmYyOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9NZWRpYVBsYXllclByaXZhdGVHU3RyZWFtZXIuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFtZXIvTWVkaWFQbGF5ZXJQcml2YXRlR1N0
cmVhbWVyLmgKQEAgLTEwNSw4ICsxMDUsNiBAQCBjbGFzcyBJbmJhbmRUZXh0VHJhY2tQcml2YXRl
R1N0cmVhbWVyOwogY2xhc3MgTWVkaWFQbGF5ZXJSZXF1ZXN0SW5zdGFsbE1pc3NpbmdQbHVnaW5z
Q2FsbGJhY2s7CiBjbGFzcyBWaWRlb1RyYWNrUHJpdmF0ZUdTdHJlYW1lcjsKIAotY2xhc3MgR0JN
QnVmZmVyU3dhcGNoYWluOwotCiB2b2lkIHJlZ2lzdGVyV2ViS2l0R1N0cmVhbWVyRWxlbWVudHMo
KTsKIAogLy8gVXNlIGVhZ2VyIGluaXRpYWxpemF0aW9uIGZvciB0aGUgV2Vha1B0ckZhY3Rvcnkg
c2luY2Ugd2UgY29uc3RydWN0IFdlYWtQdHJzIG9uIGFub3RoZXIgdGhyZWFkLgpAQCAtMjY5LDE0
ICsyNjcsMTIgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgc2hvdWxkSWdub3JlSW50cmluc2ljU2l6
ZSgpIGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KICNlbmRpZgogCi0gICAgR3N0RWxlbWVudCogY3Jl
YXRlVmlkZW9TaW5rRE1BQnVmKCk7CiAjaWYgVVNFKEdTVFJFQU1FUl9HTCkKICAgICBHc3RFbGVt
ZW50KiBjcmVhdGVWaWRlb1NpbmtHTCgpOwogI2VuZGlmCiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQ
RVJfR0wpCiAgICAgdm9pZCBwdXNoVGV4dHVyZVRvQ29tcG9zaXRvcigpOwotICAgIHZvaWQgcHVz
aERNQUJ1ZlRvQ29tcG9zaXRvcigpOwogI2lmIFVTRShOSUNPU0lBKQogICAgIHZvaWQgc3dhcEJ1
ZmZlcnNJZk5lZWRlZCgpIGZpbmFsOwogI2Vsc2UKQEAgLTUxNCw3ICs1MTAsNyBAQCBwcml2YXRl
OgogICAgIFJ1bkxvb3A6OlRpbWVyPE1lZGlhUGxheWVyUHJpdmF0ZUdTdHJlYW1lcj4gbV9yZWFk
eVRpbWVySGFuZGxlcjsKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAjaWYgVVNFKE5JQ09T
SUEpCi0gICAgUmVmUHRyPE5pY29zaWE6OkNvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7Cisg
ICAgUmVmPE5pY29zaWE6OkNvbnRlbnRMYXllcj4gbV9uaWNvc2lhTGF5ZXI7CiAjZWxzZQogICAg
IFJlZlB0cjxUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiBtX3BsYXRmb3JtTGF5ZXJQ
cm94eTsKICNlbmRpZgpAQCAtNTgwLDcgKzU3Niw2IEBAIHByaXZhdGU6CiAgICAgY29uc3Qgdm9p
ZCogbV9sb2dJZGVudGlmaWVyOwogI2VuZGlmCiAKLSAgICBSZWZQdHI8R0JNQnVmZmVyU3dhcGNo
YWluPiBtX3N3YXBjaGFpbjsKICAgICBTdHJpbmcgbV9lcnJvck1lc3NhZ2U7CiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9O
aWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvbmljb3NpYS90ZXhtYXAvTmljb3NpYUNvbnRlbnRMYXllclRleHR1
cmVNYXBwZXJJbXBsLmNwcAppbmRleCA5MjM3NWU5MjAxMjIxNzlkODM1ZWE1MWUxZjA2NjBhZTBi
MTBmYmE4Li4wMjI4NDRiMzI2NzA0NTNjNmNjNzc1NTQ0YzI5NmI1ZDYwODNjNGU5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9uaWNvc2lhL3RleG1hcC9OaWNv
c2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0
dXJlTWFwcGVySW1wbC5jcHAKQEAgLTMxLDIxICszMSwxNSBAQAogCiAjaWYgVVNFKFRFWFRVUkVf
TUFQUEVSKQogCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1
Zi5oIgogI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlHTC5oIgogCiBu
YW1lc3BhY2UgTmljb3NpYSB7CiAKIGF1dG8gQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGw6
OmNyZWF0ZUZhY3RvcnkoQ2xpZW50JiBjbGllbnQpIC0+IEZhY3RvcnkKLXsKLSAgICByZXR1cm4g
Y3JlYXRlRmFjdG9yeShjbGllbnQsIGFkb3B0UmVmKCpuZXcgV2ViQ29yZTo6VGV4dHVyZU1hcHBl
clBsYXRmb3JtTGF5ZXJQcm94eUdMKSk7Ci19Ci0KLWF1dG8gQ29udGVudExheWVyVGV4dHVyZU1h
cHBlckltcGw6OmNyZWF0ZUZhY3RvcnkoQ2xpZW50JiBjbGllbnQsIFJlZjxXZWJDb3JlOjpUZXh0
dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiYmIHByb3h5KSAtPiBGYWN0b3J5CiB7CiAgICAg
cmV0dXJuIEZhY3RvcnkoCi0gICAgICAgIFsmY2xpZW50LCBwcm94eSA9IFdURk1vdmUocHJveHkp
XShDb250ZW50TGF5ZXImKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJldHVybiBtYWtlVW5pcXVl
PENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQsIFdURk1vdmUocHJveHkpKTsK
KyAgICAgICAgWyZjbGllbnRdKENvbnRlbnRMYXllciYpIHsKKyAgICAgICAgICAgIHJldHVybiBt
YWtlVW5pcXVlPENvbnRlbnRMYXllclRleHR1cmVNYXBwZXJJbXBsPihjbGllbnQsIGFkb3B0UmVm
KCpuZXcgV2ViQ29yZTo6VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eUdMKSk7CiAgICAg
ICAgIH0pOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9uaWNvc2lhL3RleG1hcC9OaWNvc2lhQ29udGVudExheWVyVGV4dHVyZU1hcHBlckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFD
b250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCmluZGV4IDU5MzY5NzUwMjViZGI4NDJjNDli
ZDM3N2QzMzBiOTYxMGI0MmEyOTQuLjk3ZTMwNTkxM2NjODQyNmIzN2I4MzdjNGQzZTY5ZGE3ZTNi
MzA3NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29z
aWEvdGV4bWFwL05pY29zaWFDb250ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL25pY29zaWEvdGV4bWFwL05pY29zaWFDb250
ZW50TGF5ZXJUZXh0dXJlTWFwcGVySW1wbC5oCkBAIC01MCw3ICs1MCw2IEBAIHB1YmxpYzoKICAg
ICB9OwogCiAgICAgc3RhdGljIEZhY3RvcnkgY3JlYXRlRmFjdG9yeShDbGllbnQmKTsKLSAgICBz
dGF0aWMgRmFjdG9yeSBjcmVhdGVGYWN0b3J5KENsaWVudCYsIFJlZjxXZWJDb3JlOjpUZXh0dXJl
TWFwcGVyUGxhdGZvcm1MYXllclByb3h5PiYmKTsKIAogICAgIGV4cGxpY2l0IENvbnRlbnRMYXll
clRleHR1cmVNYXBwZXJJbXBsKENsaWVudCYsIFJlZjxXZWJDb3JlOjpUZXh0dXJlTWFwcGVyUGxh
dGZvcm1MYXllclByb3h5PiYmKTsKICAgICB2aXJ0dWFsIH5Db250ZW50TGF5ZXJUZXh0dXJlTWFw
cGVySW1wbCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
dGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWYuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlETUFCdWYuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNWJmMWNh
OTVkY2FjYTc1Nzc5NGYyZGQ2OTZjN2Y3YjUyOGYzYzc3Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3RleG1hcC9UZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVmLmNwcAorKysgL2Rl
di9udWxsCkBAIC0xLDI4OSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDIyIE1ldHJv
bG9naWNhbCBHcm91cCBCLlYuCi0gKiBDb3B5cmlnaHQgKEMpIDIwMjIgSWdhbGlhIFMuTC4KLSAq
Ci0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0g
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
Ci0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHlETUFCdWYuaCIKLQotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
LQotI2luY2x1ZGUgIlBsYXRmb3JtRGlzcGxheS5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJH
TC5oIgotI2luY2x1ZGUgIlRleHR1cmVNYXBwZXJHTEhlYWRlcnMuaCIKLSNpbmNsdWRlICJUZXh0
dXJlTWFwcGVyTGF5ZXIuaCIKLSNpbmNsdWRlIDxmY250bC5oPgotI2luY2x1ZGUgPGluaXRpYWxp
emVyX2xpc3Q+Ci0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0KLSNpZiBVU0UoTElCRVBPWFkpCi0jaW5j
bHVkZSAiRXBveHlFR0wuaCIKLSNlbHNlCi0jaW5jbHVkZSA8RUdML2VnbC5oPgotI2luY2x1ZGUg
PEVHTC9lZ2xleHQuaD4KLSNlbmRpZgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLXN0YXRpYyBQ
Rk5FR0xDUkVBVEVJTUFHRUtIUlBST0MgY3JlYXRlSW1hZ2VLSFIoKQotewotICAgIHN0YXRpYyBQ
Rk5FR0xDUkVBVEVJTUFHRUtIUlBST0Mgc19jcmVhdGVJbWFnZUtIUjsKLSAgICBzdGF0aWMgc3Rk
OjpvbmNlX2ZsYWcgc19mbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKHNfZmxhZywKLSAgICAgICAg
WyZdIHsKLSAgICAgICAgICAgIHNfY3JlYXRlSW1hZ2VLSFIgPSByZWludGVycHJldF9jYXN0PFBG
TkVHTENSRUFURUlNQUdFS0hSUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImVnbENyZWF0ZUltYWdl
S0hSIikpOwotICAgICAgICB9KTsKLSAgICByZXR1cm4gc19jcmVhdGVJbWFnZUtIUjsKLX0KLQot
c3RhdGljIFBGTkVHTERFU1RST1lJTUFHRUtIUlBST0MgZGVzdHJveUltYWdlS0hSKCkKLXsKLSAg
ICBzdGF0aWMgUEZORUdMREVTVFJPWUlNQUdFS0hSUFJPQyBzX2Rlc3Ryb3lJbWFnZUtIUjsKLSAg
ICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgc19mbGFnOwotICAgIHN0ZDo6Y2FsbF9vbmNlKHNfZmxh
ZywKLSAgICAgICAgWyZdIHsKLSAgICAgICAgICAgIHNfZGVzdHJveUltYWdlS0hSID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5FR0xERVNUUk9ZSU1BR0VLSFJQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygi
ZWdsRGVzdHJveUltYWdlS0hSIikpOwotICAgICAgICB9KTsKLSAgICByZXR1cm4gc19kZXN0cm95
SW1hZ2VLSFI7Ci19Ci0KLXN0cnVjdCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1B
QnVmOjpETUFCdWZMYXllcjo6RUdMSW1hZ2VEYXRhIHsKLSAgICBXVEZfTUFLRV9TVFJVQ1RfRkFT
VF9BTExPQ0FURUQ7Ci0KLSAgICB+RUdMSW1hZ2VEYXRhKCkKLSAgICB7Ci0gICAgICAgIGlmIChu
dW1JbWFnZXMpIHsKLSAgICAgICAgICAgIGdsRGVsZXRlVGV4dHVyZXMobnVtSW1hZ2VzLCB0ZXh0
dXJlLmRhdGEoKSk7Ci0KLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBudW1J
bWFnZXM7ICsraSkgewotICAgICAgICAgICAgICAgIGlmIChpbWFnZVtpXSAhPSBFR0xfTk9fSU1B
R0VfS0hSKQotICAgICAgICAgICAgICAgICAgICBkZXN0cm95SW1hZ2VLSFIoKShQbGF0Zm9ybURp
c3BsYXk6OnNoYXJlZERpc3BsYXlGb3JDb21wb3NpdGluZygpLmVnbERpc3BsYXkoKSwgaW1hZ2Vb
aV0pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgdWludDMyX3Qgd2lk
dGggeyAwIH07Ci0gICAgdWludDMyX3QgaGVpZ2h0IHsgMCB9OwotICAgIHVuc2lnbmVkIG51bUlt
YWdlcyB7IDAgfTsKLSAgICBzdGQ6OmFycmF5PEdMdWludCwgRE1BQnVmRm9ybWF0OjpjX21heFBs
YW5lcz4gdGV4dHVyZSB7IDAsIDAsIDAsIDAgfTsKLSAgICBzdGQ6OmFycmF5PEVHTEltYWdlS0hS
LCBETUFCdWZGb3JtYXQ6OmNfbWF4UGxhbmVzPiBpbWFnZSB7IEVHTF9OT19JTUFHRV9LSFIsIEVH
TF9OT19JTUFHRV9LSFIsIEVHTF9OT19JTUFHRV9LSFIsIEVHTF9OT19JTUFHRV9LSFIgfTsKLX07
Ci0KLVRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY6OlRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlETUFCdWYoKSA9IGRlZmF1bHQ7Ci1UZXh0dXJlTWFwcGVyUGxhdGZv
cm1MYXllclByb3h5RE1BQnVmOjp+VGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1
ZigpID0gZGVmYXVsdDsKLQotdm9pZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1B
QnVmOjphY3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciogY29tcG9zaXRvciwg
VGV4dHVyZU1hcHBlckxheWVyKiB0YXJnZXRMYXllcikKLXsKLSNpZm5kZWYgTkRFQlVHCi0gICAg
aWYgKCFtX2NvbXBvc2l0b3JUaHJlYWQpCi0gICAgICAgIG1fY29tcG9zaXRvclRocmVhZCA9ICZU
aHJlYWQ6OmN1cnJlbnQoKTsKLSNlbmRpZgotICAgIEFTU0VSVChtX2NvbXBvc2l0b3JUaHJlYWQg
PT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSAgICBBU1NFUlQoY29tcG9zaXRvcik7Ci0gICAgQVNT
RVJUKHRhcmdldExheWVyKTsKLQotICAgIHsKLSAgICAgICAgTG9ja2VyIGxvY2tlciB7IG1fbG9j
ayB9OwotICAgICAgICBtX2NvbXBvc2l0b3IgPSBjb21wb3NpdG9yOwotICAgICAgICBtX3Rhcmdl
dExheWVyID0gdGFyZ2V0TGF5ZXI7Ci0gICAgfQotfQotCi12b2lkIFRleHR1cmVNYXBwZXJQbGF0
Zm9ybUxheWVyUHJveHlETUFCdWY6OmludmFsaWRhdGUoKQotewotICAgIEFTU0VSVChtX2NvbXBv
c2l0b3JUaHJlYWQgPT0gJlRocmVhZDo6Y3VycmVudCgpKTsKLSNpZm5kZWYgTkRFQlVHCi0gICAg
bV9jb21wb3NpdG9yVGhyZWFkID0gbnVsbHB0cjsKLSNlbmRpZgotCi0gICAgTG9ja2VyIGxvY2tl
ciB7IG1fbG9jayB9OwotCi0gICAgbV9wZW5kaW5nTGF5ZXIgPSBudWxscHRyOwotICAgIG1fY29t
bWl0dGVkTGF5ZXIgPSBudWxscHRyOwotICAgIG1fbGF5ZXJzID0geyB9OwotCi0gICAgbV9jb21w
b3NpdG9yID0gbnVsbHB0cjsKLSAgICBtX3RhcmdldExheWVyID0gbnVsbHB0cjsKLX0KLQotdm9p
ZCBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5RE1BQnVmOjpzd2FwQnVmZmVyKCkKLXsK
LSAgICBMb2NrZXIgbG9ja2VyIHsgbV9sb2NrIH07Ci0gICAgaWYgKCFtX3RhcmdldExheWVyIHx8
ICFtX3BlbmRpbmdMYXllcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBwcmV2aW91c0xh
eWVyID0gV1RGTW92ZShtX2NvbW1pdHRlZExheWVyKTsKLSAgICBtX2NvbW1pdHRlZExheWVyID0g
V1RGTW92ZShtX3BlbmRpbmdMYXllcik7Ci0gICAgbV90YXJnZXRMYXllci0+c2V0Q29udGVudHNM
YXllcihtX2NvbW1pdHRlZExheWVyLmdldCgpKTsKLQotICAgIC8vIFRoZSBwcmV2aW91cyBhbmQg
anVzdC1jb21taXR0ZWQgbGF5ZXJzIHNob3VsZG4ndCBiZSB0aGUgc2FtZS4gQnV0IGlmIHRoZXkg
YXJlLCBkb24ndCBwZXJmb3JtIGEgcmVsZWFzZS4KLSAgICBBU1NFUlQoIXByZXZpb3VzTGF5ZXIg
fHwgcHJldmlvdXNMYXllciAhPSBtX2NvbW1pdHRlZExheWVyKTsKLSAgICBpZiAocHJldmlvdXNM
YXllciAmJiBwcmV2aW91c0xheWVyICE9IG1fY29tbWl0dGVkTGF5ZXIpCi0gICAgICAgIHByZXZp
b3VzTGF5ZXItPnJlbGVhc2UoKTsKLQotICAgIGlmICghbV9jb21taXR0ZWRMYXllci0+bV9pbWFn
ZURhdGEpCi0gICAgICAgIG1fY29tbWl0dGVkTGF5ZXItPm1faW1hZ2VEYXRhID0gRE1BQnVmTGF5
ZXI6OmNyZWF0ZUVHTEltYWdlRGF0YShtX2NvbW1pdHRlZExheWVyLT5tX29iamVjdCk7Ci0gICAg
bV9jb21taXR0ZWRMYXllci0+bV9hZ2UgPSAwOwotCi0gICAgLy8gUmVtb3ZlIGFueSBzdGFsZSBs
YXllcnMsIGUuZy4gaWYgYSBsYXllciBoYXMgZ29uZSB1bnVzZWQgZm9yID5jX21heGltdW1BZ2Ug
c3dhcHMgb3IgZG9lc24ndCBtYXRjaCB0aGUgbGF0ZXN0IHNpemUuCi0gICAgYXV0byYgY29tbWl0
dGVkT2JqZWN0ID0gbV9jb21taXR0ZWRMYXllci0+bV9vYmplY3Q7Ci0gICAgYXV0byBpc1N0YWxl
TGF5ZXIgPQotICAgICAgICBbJl0oYXV0byYgaXQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGF1
dG8mIGxheWVyID0gaXQudmFsdWUuZ2V0KCk7Ci0gICAgICAgICAgICByZXR1cm4gbGF5ZXIubV9h
Z2UgPiBETUFCdWZMYXllcjo6Y19tYXhpbXVtQWdlCi0gICAgICAgICAgICAgICAgfHwgIShsYXll
ci5tX29iamVjdC53aWR0aCA9PSBjb21taXR0ZWRPYmplY3Qud2lkdGggJiYgbGF5ZXIubV9vYmpl
Y3QuaGVpZ2h0ID09IGNvbW1pdHRlZE9iamVjdC5oZWlnaHQpOwotICAgICAgICB9OwotCi0gICAg
Ym9vbCBoYXNTdGFsZUxheWVycyA9IGZhbHNlOwotICAgIGZvciAoYXV0byBpdCA9IG1fbGF5ZXJz
LmJlZ2luKCk7IGl0ICE9IG1fbGF5ZXJzLmVuZCgpOyArK2l0KSB7Ci0gICAgICAgICsraXQtPnZh
bHVlLT5tX2FnZTsKLSAgICAgICAgaGFzU3RhbGVMYXllcnMgfD0gaXNTdGFsZUxheWVyKCppdCk7
Ci0gICAgfQotCi0gICAgaWYgKGhhc1N0YWxlTGF5ZXJzKQotICAgICAgICBtX2xheWVycy5yZW1v
dmVJZihpc1N0YWxlTGF5ZXIpOwotfQotCi12b2lkIFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVy
UHJveHlETUFCdWY6OnB1c2hETUFCdWYoUmVmPERNQUJ1ZkxheWVyPiYmIGRtYWJ1ZkxheWVyKQot
ewotICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwotCi0gICAgLy8gVGhlIHBlbmRpbmcgYW5k
IGp1c3QtcHVzaGVkIGxheWVycyBzaG91bGRuJ3QgYmUgdGhlIHNhbWUuIEJ1dCBpZiB0aGV5IGFy
ZSwgZG9uJ3QgcGVyZm9ybSBhIHJlbGVhc2UuCi0gICAgQVNTRVJUKCFtX3BlbmRpbmdMYXllciB8
fCBtX3BlbmRpbmdMYXllciAhPSBkbWFidWZMYXllci5wdHIoKSk7Ci0gICAgaWYgKG1fcGVuZGlu
Z0xheWVyICYmIG1fcGVuZGluZ0xheWVyICE9IGRtYWJ1ZkxheWVyLnB0cigpKQotICAgICAgICBt
X3BlbmRpbmdMYXllci0+cmVsZWFzZSgpOwotCi0gICAgbV9wZW5kaW5nTGF5ZXIgPSBXVEZNb3Zl
KGRtYWJ1ZkxheWVyKTsKLSAgICBpZiAobV9jb21wb3NpdG9yKQotICAgICAgICBtX2NvbXBvc2l0
b3ItPm9uTmV3QnVmZmVyQXZhaWxhYmxlKCk7Ci19Ci0KLVRleHR1cmVNYXBwZXJQbGF0Zm9ybUxh
eWVyUHJveHlETUFCdWY6OkRNQUJ1ZkxheWVyOjpETUFCdWZMYXllcihETUFCdWZPYmplY3QmJiBv
YmplY3QsIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3MgZmxhZ3MpCi0gICAgOiBtX29iamVjdChXVEZN
b3ZlKG9iamVjdCkpCi0gICAgLCBtX2ZsYWdzKGZsYWdzKQoteyB9Ci0KLVRleHR1cmVNYXBwZXJQ
bGF0Zm9ybUxheWVyUHJveHlETUFCdWY6OkRNQUJ1ZkxheWVyOjp+RE1BQnVmTGF5ZXIoKSA9IGRl
ZmF1bHQ7Ci0KLXZvaWQgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1Zjo6RE1B
QnVmTGF5ZXI6OnBhaW50VG9UZXh0dXJlTWFwcGVyKFRleHR1cmVNYXBwZXImIHRleHR1cmVNYXBw
ZXIsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0UmVjdCwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCwgZmxvYXQgb3BhY2l0eSkKLXsKLSAgICBpZiAoIW1faW1hZ2VE
YXRhKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBUT0RPOiB0aGlzIGlzIHRoZSBCVC42MDEg
Y29sb3JzcGFjZSBjb252ZXJzaW9uIG1hdHJpeC4gVGhlIGV4YWN0IGRlc2lyZWQgY29sb3JzcGFj
ZSBzaG91bGQgYmUgaW5jbHVkZWQKLSAgICAvLyBpbiB0aGUgRE1BQnVmT2JqZWN0LCBhbmQgdGhl
IHJlbGV2YW50IG1hdHJpeCBkZWNpZGVkIGJhc2VkIG9uIGl0LiBCVC42MDEgc2hvdWxkIHJlbWFp
biB0aGUgZGVmYXVsdC4KLSAgICBzdGF0aWMgY29uc3RleHByIHN0ZDo6YXJyYXk8R0xmbG9hdCwg
OT4gc195dXZUb1JHQiB7Ci0gICAgICAgIDEuMTY0ZiwgIDAuMGYsICAgIDEuNTk2ZiwKLSAgICAg
ICAgMS4xNjRmLCAtMC4zOTFmLCAtMC44MTNmLAotICAgICAgICAxLjE2NGYsICAyLjAxOGYsICAw
LjBmCi0gICAgfTsKLQotICAgIFRleHR1cmVNYXBwZXJHTCYgdGV4bWFwR0wgPSBzdGF0aWNfY2Fz
dDxUZXh0dXJlTWFwcGVyR0wmPih0ZXh0dXJlTWFwcGVyKTsKLSAgICBhdXRvJiBkYXRhID0gKm1f
aW1hZ2VEYXRhOwotCi0gICAgc3dpdGNoIChtX29iamVjdC5mb3JtYXQuZm91cmNjKSB7Ci0gICAg
Y2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6WFJHQjg4ODg6Ci0gICAgY2FzZSBETUFCdWZGb3Jt
YXQ6OkZvdXJDQzo6WEJHUjg4ODg6Ci0gICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QVJH
Qjg4ODg6Ci0gICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6QUJHUjg4ODg6Ci0gICAgICAg
IHRleG1hcEdMLmRyYXdUZXh0dXJlKGRhdGEudGV4dHVyZVswXSwgbV9mbGFncywgSW50U2l6ZShk
YXRhLndpZHRoLCBkYXRhLmhlaWdodCksIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3Bh
Y2l0eSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRE1BQnVmRm9ybWF0OjpGb3VyQ0M6Okk0
MjA6Ci0gICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6WTQ0NDoKLSAgICBjYXNlIERNQUJ1
ZkZvcm1hdDo6Rm91ckNDOjpZNDFCOgotICAgIGNhc2UgRE1BQnVmRm9ybWF0OjpGb3VyQ0M6Olk0
MkI6Ci0gICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlUGxhbmFyWVVWKHN0ZDo6YXJyYXk8R0x1
aW50LCAzPiB7IGRhdGEudGV4dHVyZVswXSwgZGF0YS50ZXh0dXJlWzFdLCBkYXRhLnRleHR1cmVb
Ml0gfSwKLSAgICAgICAgICAgIHNfeXV2VG9SR0IsIG1fZmxhZ3MsIEludFNpemUoZGF0YS53aWR0
aCwgZGF0YS5oZWlnaHQpLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNpdHksIHN0
ZDo6bnVsbG9wdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRE1BQnVmRm9ybWF0OjpGb3Vy
Q0M6OllWMTI6Ci0gICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlUGxhbmFyWVVWKHN0ZDo6YXJy
YXk8R0x1aW50LCAzPiB7IGRhdGEudGV4dHVyZVswXSwgZGF0YS50ZXh0dXJlWzJdLCBkYXRhLnRl
eHR1cmVbMV0gfSwKLSAgICAgICAgICAgIHNfeXV2VG9SR0IsIG1fZmxhZ3MsIEludFNpemUoZGF0
YS53aWR0aCwgZGF0YS5oZWlnaHQpLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgsIG9wYWNp
dHksIHN0ZDo6bnVsbG9wdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRE1BQnVmRm9ybWF0
OjpGb3VyQ0M6OkE0MjA6Ci0gICAgICAgIHRleG1hcEdMLmRyYXdUZXh0dXJlUGxhbmFyWVVWKHN0
ZDo6YXJyYXk8R0x1aW50LCAzPiB7IGRhdGEudGV4dHVyZVswXSwgZGF0YS50ZXh0dXJlWzFdLCBk
YXRhLnRleHR1cmVbMl0gfSwKLSAgICAgICAgICAgIHNfeXV2VG9SR0IsIG1fZmxhZ3MsIEludFNp
emUoZGF0YS53aWR0aCwgZGF0YS5oZWlnaHQpLCB0YXJnZXRSZWN0LCBtb2RlbFZpZXdNYXRyaXgs
IG9wYWNpdHksIGRhdGEudGV4dHVyZVszXSk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgRE1B
QnVmRm9ybWF0OjpGb3VyQ0M6Ok5WMTI6Ci0gICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6
TlYyMToKLSAgICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmVTZW1pUGxhbmFyWVVWKHN0ZDo6YXJy
YXk8R0x1aW50LCAyPiB7IGRhdGEudGV4dHVyZVswXSwgZGF0YS50ZXh0dXJlWzFdIH0sCi0gICAg
ICAgICAgICAobV9vYmplY3QuZm9ybWF0LmZvdXJjYyA9PSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6
TlYyMSksCi0gICAgICAgICAgICBzX3l1dlRvUkdCLCBtX2ZsYWdzLCBJbnRTaXplKGRhdGEud2lk
dGgsIGRhdGEuaGVpZ2h0KSwgdGFyZ2V0UmVjdCwgbW9kZWxWaWV3TWF0cml4LCBvcGFjaXR5KTsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6WVVZMjoKLSAg
ICBjYXNlIERNQUJ1ZkZvcm1hdDo6Rm91ckNDOjpVWVZZOgotICAgIGNhc2UgRE1BQnVmRm9ybWF0
OjpGb3VyQ0M6OlZVWUE6Ci0gICAgY2FzZSBETUFCdWZGb3JtYXQ6OkZvdXJDQzo6WVZZVToKLSAg
ICAgICAgdGV4bWFwR0wuZHJhd1RleHR1cmVQYWNrZWRZVVYoZGF0YS50ZXh0dXJlWzBdLAotICAg
ICAgICAgICAgc195dXZUb1JHQiwgbV9mbGFncywgSW50U2l6ZShkYXRhLndpZHRoLCBkYXRhLmhl
aWdodCksIHRhcmdldFJlY3QsIG1vZGVsVmlld01hdHJpeCwgb3BhY2l0eSk7Ci0gICAgICAgIGJy
ZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLX0KLQotc3RkOjp1bmlx
dWVfcHRyPFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY6OkRNQUJ1ZkxheWVy
OjpFR0xJbWFnZURhdGE+IFRleHR1cmVNYXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWY6OkRN
QUJ1ZkxheWVyOjpjcmVhdGVFR0xJbWFnZURhdGEoRE1BQnVmT2JqZWN0JiBvYmplY3QpCi17Ci0g
ICAgdXNpbmcgRUdMSW1hZ2VEYXRhID0gVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURN
QUJ1Zjo6RE1BQnVmTGF5ZXI6OkVHTEltYWdlRGF0YTsKLQotICAgIEVHTERpc3BsYXkgZWdsRGlz
cGxheSA9IFBsYXRmb3JtRGlzcGxheTo6c2hhcmVkRGlzcGxheUZvckNvbXBvc2l0aW5nKCkuZWds
RGlzcGxheSgpOwotCi0gICAgRUdMSW1hZ2VLSFIgaW1hZ2VbRE1BQnVmRm9ybWF0OjpjX21heFBs
YW5lc107Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG9iamVjdC5mb3JtYXQubnVtUGxh
bmVzOyArK2kpIHsKLSAgICAgICAgc3RkOjppbml0aWFsaXplcl9saXN0PEVHTGludD4gYXR0cmli
dXRlcyB7Ci0gICAgICAgICAgICBFR0xfV0lEVEgsIEVHTGludChvYmplY3QuZm9ybWF0LnBsYW5l
V2lkdGgoaSwgb2JqZWN0LndpZHRoKSksCi0gICAgICAgICAgICBFR0xfSEVJR0hULCBFR0xpbnQo
b2JqZWN0LmZvcm1hdC5wbGFuZUhlaWdodChpLCBvYmplY3QuaGVpZ2h0KSksCi0gICAgICAgICAg
ICBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQsIEVHTGludChvYmplY3QuZm9ybWF0LnBsYW5lc1tp
XS5mb3VyY2MpLAotICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVCwgb2JqZWN0
LmZkW2ldLAotICAgICAgICAgICAgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQsIEVHTGlu
dChvYmplY3Qub2Zmc2V0W2ldKSwKLSAgICAgICAgICAgIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRD
SF9FWFQsIEVHTGludChvYmplY3Quc3RyaWRlW2ldKSwKLSAgICAgICAgICAgIEVHTF9OT05FLAot
ICAgICAgICB9OwotICAgICAgICBpbWFnZVtpXSA9IGNyZWF0ZUltYWdlS0hSKCkoZWdsRGlzcGxh
eSwgRUdMX05PX0NPTlRFWFQsIEVHTF9MSU5VWF9ETUFfQlVGX0VYVCwgbnVsbHB0ciwgc3RkOjpk
YXRhKGF0dHJpYnV0ZXMpKTsKLSAgICB9Ci0KLSAgICBhdXRvIGltYWdlRGF0YSA9IG1ha2VVbmlx
dWU8RUdMSW1hZ2VEYXRhPigpOwotICAgIGF1dG8mIGRhdGEgPSAqaW1hZ2VEYXRhOwotICAgIGRh
dGEud2lkdGggPSBvYmplY3Qud2lkdGg7Ci0gICAgZGF0YS5oZWlnaHQgPSBvYmplY3QuaGVpZ2h0
OwotICAgIGRhdGEubnVtSW1hZ2VzID0gb2JqZWN0LmZvcm1hdC5udW1QbGFuZXM7Ci0gICAgZ2xH
ZW5UZXh0dXJlcyhkYXRhLm51bUltYWdlcywgZGF0YS50ZXh0dXJlLmRhdGEoKSk7Ci0gICAgZm9y
ICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEubnVtSW1hZ2VzOyArK2kpIHsKLSAgICAgICAgZGF0
YS5pbWFnZVtpXSA9IGltYWdlW2ldOwotCi0gICAgICAgIGdsQmluZFRleHR1cmUoR0xfVEVYVFVS
RV8yRCwgZGF0YS50ZXh0dXJlW2ldKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRV
UkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgICAgICAgZ2xU
ZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9U
T19FREdFKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRV
UkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2xUZXhQYXJhbWV0ZXJpKEdMX1RF
WFRVUkVfMkQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICAgICAgZ2xF
R0xJbWFnZVRhcmdldFRleHR1cmUyRE9FUyhHTF9URVhUVVJFXzJELCBkYXRhLmltYWdlW2ldKTsK
LSAgICAgICAgZ2xCaW5kVGV4dHVyZShHTF9URVhUVVJFXzJELCAwKTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gaW1hZ2VEYXRhOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAv
LyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURN
QUJ1Zi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVN
YXBwZXJQbGF0Zm9ybUxheWVyUHJveHlETUFCdWYuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDhjMGJkYWNhNmQyZGJlMTA5NTFlY2U4M2RlNzY1YzBhNzMyYTlmMC4uMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1
Zi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMjIgTWV0cm9sb2dpY2FsIEdyb3VwIEIuVi4KLSAqIENvcHlyaWdodCAoQykgMjAyMiBJZ2Fs
aWEgUy5MLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0g
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAot
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0g
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgIlRleHR1cmVNYXBw
ZXJQbGF0Zm9ybUxheWVyLmgiCi0jaW5jbHVkZSAiVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQ
cm94eS5oIgotCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQotCi0jaW5jbHVkZSAiRE1B
QnVmRm9ybWF0LmgiCi0jaW5jbHVkZSAiRE1BQnVmT2JqZWN0LmgiCi0jaW5jbHVkZSAiVGV4dHVy
ZU1hcHBlckdMLmgiCi0jaW5jbHVkZSA8Y3N0ZGludD4KLSNpbmNsdWRlIDxtZW1vcnk+Ci0KLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94
eURNQUJ1ZiBmaW5hbCA6IHB1YmxpYyBUZXh0dXJlTWFwcGVyUGxhdGZvcm1MYXllclByb3h5IHsK
LSAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKLXB1YmxpYzoKLSAgICBUZXh0dXJlTWFwcGVy
UGxhdGZvcm1MYXllclByb3h5RE1BQnVmKCk7Ci0gICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlclBs
YXRmb3JtTGF5ZXJQcm94eURNQUJ1ZigpOwotCi0gICAgYm9vbCBpc0RNQUJ1ZkJhc2VkKCkgY29u
c3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBh
Y3RpdmF0ZU9uQ29tcG9zaXRpbmdUaHJlYWQoQ29tcG9zaXRvciosIFRleHR1cmVNYXBwZXJMYXll
ciopIG92ZXJyaWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgaW52YWxpZGF0ZSgpIG92ZXJy
aWRlOwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc3dhcEJ1ZmZlcigpIG92ZXJyaWRlOwotCi0g
ICAgY2xhc3MgRE1BQnVmTGF5ZXIgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8RE1BQnVm
TGF5ZXI+LCBwdWJsaWMgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXIgewotICAgICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKLSAgICBwdWJsaWM6Ci0gICAgICAgIERNQUJ1ZkxheWVyKERN
QUJ1Zk9iamVjdCYmLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdzID0gMCk7Ci0gICAgICAgIHZpcnR1
YWwgfkRNQUJ1ZkxheWVyKCk7Ci0KLSAgICAgICAgdm9pZCBwYWludFRvVGV4dHVyZU1hcHBlcihU
ZXh0dXJlTWFwcGVyJiwgY29uc3QgRmxvYXRSZWN0JiwgY29uc3QgVHJhbnNmb3JtYXRpb25NYXRy
aXgmIG1vZGVsVmlld01hdHJpeCA9IHsgfSwgZmxvYXQgb3BhY2l0eSA9IDEuMCkgZmluYWw7Ci0K
LSAgICAgICAgdm9pZCByZWxlYXNlKCkKLSAgICAgICAgewotICAgICAgICAgICAgbV9vYmplY3Qu
cmVsZWFzZUZsYWcucmVsZWFzZSgpOwotICAgICAgICB9Ci0KLSAgICBwcml2YXRlOgotICAgICAg
ICBmcmllbmQgY2xhc3MgVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURNQUJ1ZjsKLQot
ICAgICAgICBzdHJ1Y3QgRUdMSW1hZ2VEYXRhOwotICAgICAgICBzdGF0aWMgc3RkOjp1bmlxdWVf
cHRyPEVHTEltYWdlRGF0YT4gY3JlYXRlRUdMSW1hZ2VEYXRhKERNQUJ1Zk9iamVjdCYpOwotCi0g
ICAgICAgIERNQUJ1Zk9iamVjdCBtX29iamVjdDsKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVH
TEltYWdlRGF0YT4gbV9pbWFnZURhdGE7Ci0gICAgICAgIFRleHR1cmVNYXBwZXJHTDo6RmxhZ3Mg
bV9mbGFnczsKLQotICAgICAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIGNfbWF4aW11bUFn
ZSB7IDE2IH07Ci0gICAgICAgIHVuc2lnbmVkIG1fYWdlIHsgMCB9OwotICAgIH07Ci0KLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBGPgotICAgIHZvaWQgcHVzaERNQUJ1ZihETUFCdWZPYmplY3QmJiBk
bWFidWZPYmplY3QsIGNvbnN0IEYmIGNvbnN0cnVjdG9yLCBUZXh0dXJlTWFwcGVyR0w6OkZsYWdz
IGZsYWdzID0gMCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChtX2xvY2suaXNIZWxkKCkpOwotCi0g
ICAgICAgIGF1dG8gcmVzdWx0ID0gbV9sYXllcnMuZW5zdXJlKGRtYWJ1Zk9iamVjdC5oYW5kbGUs
Ci0gICAgICAgICAgICBbJl0gewotICAgICAgICAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IERNQUJ1ZkxheWVyKGNvbnN0cnVjdG9yKFdURk1vdmUoZG1hYnVmT2JqZWN0KSksIGZsYWdzKSk7
Ci0gICAgICAgICAgICB9KTsKLSAgICAgICAgcHVzaERNQUJ1ZihyZXN1bHQuaXRlcmF0b3ItPnZh
bHVlLmNvcHlSZWYoKSk7Ci0gICAgfQotCi1wcml2YXRlOgotICAgIHZvaWQgcHVzaERNQUJ1ZihS
ZWY8RE1BQnVmTGF5ZXI+JiYpOwotCi0jaWZuZGVmIE5ERUJVRwotICAgIFJlZlB0cjxUaHJlYWQ+
IG1fY29tcG9zaXRvclRocmVhZDsKLSNlbmRpZgotCi0gICAgdXNpbmcgTGF5ZXJNYXAgPSBIYXNo
TWFwPHVpbnRwdHJfdCwgUmVmPERNQUJ1ZkxheWVyPiwgV1RGOjpEZWZhdWx0SGFzaDx1aW50cHRy
X3Q+LCBXVEY6OlVuc2lnbmVkV2l0aFplcm9LZXlIYXNoVHJhaXRzPHVpbnRwdHJfdD4+OwotICAg
IExheWVyTWFwIG1fbGF5ZXJzOwotCi0gICAgUmVmUHRyPERNQUJ1ZkxheWVyPiBtX3BlbmRpbmdM
YXllcjsKLSAgICBSZWZQdHI8RE1BQnVmTGF5ZXI+IG1fY29tbWl0dGVkTGF5ZXI7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfVEVYVFVSRU1B
UFBFUl9QTEFURk9STUxBWUVSUFJPWFkoVGV4dHVyZU1hcHBlclBsYXRmb3JtTGF5ZXJQcm94eURN
QUJ1ZiwgaXNETUFCdWZCYXNlZCgpKTsKLQotI2VuZGlmIC8vIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykK
</data>
<flag name="commit-queue"
          id="482495"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>