<?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>144164</bug_id>
          
          <creation_ts>2015-04-24 14:56:32 -0700</creation_ts>
          <short_desc>REGRESSION(r183266): Broke 32-bit build and a test. (Requested by ap on #webkit).</short_desc>
          <delta_ts>2015-04-24 15:01:35 -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>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>142719</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1088342</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 14:56:32 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/183266 broke the build:
Broke 32-bit build and a test. (Requested by ap on #webkit).

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>1088344</commentid>
    <comment_count>1</comment_count>
      <attachid>251577</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 14:57:17 -0700</bug_when>
    <thetext>Created attachment 251577
ROLLOUT of r183266

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 rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout 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>1088348</commentid>
    <comment_count>2</comment_count>
      <attachid>251577</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 15:01:31 -0700</bug_when>
    <thetext>Comment on attachment 251577
ROLLOUT of r183266

Clearing flags on attachment: 251577

Committed r183283: &lt;http://trac.webkit.org/changeset/183283&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1088349</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-24 15:01:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251577</attachid>
            <date>2015-04-24 14:57:17 -0700</date>
            <delta_ts>2015-04-24 15:01:31 -0700</delta_ts>
            <desc>ROLLOUT of r183266</desc>
            <filename>bug-144164-20150424145611.patch</filename>
            <type>text/plain</type>
            <size>209354</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMjgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzBhYzU0MThiNDQ3NmI0
MTMxNWM2ZjNmZTg2YzllMjNmZjg3NjkxNS4uODY3YWRjYjg5MmYwMmRhN2IwYTIwNWY0NDdmMGI4
NjViNDhkZGM1ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTI0ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTgzMjY2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0MTY0CisKKyAgICAgICAgQnJva2UgMzItYml0IGJ1aWxkIGFuZCBh
IHRlc3QuIChSZXF1ZXN0ZWQgYnkgYXAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQg
Y2hhbmdlc2V0OgorCisgICAgICAgICJBWDogcmljaGVyIHRleHQgY2hhbmdlIG5vdGlmaWNhdGlv
bnMgKDE0MjcxOSkiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDI3MTkKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgz
MjY2CisKIDIwMTUtMDQtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIE9yaWdpbiBoZWFkZXIgaXMgcHJlc2VydmVkIG9uIGNyb3NzLW9yaWdpbiByZWRpcmVj
dHMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0L21hYy9DaGFuZ2VMb2cKaW5kZXggYWY5MzAyOThlYjIxZDU2NWVlMDk3MmYyNTIyOWZjYTY1
MDg2MTIyNC4uNzY5Nzg4NjcwN2U5NWZmNWZlZmY0ZGU5MzQ5YjViNzlhYmU2ZjU1MiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTI0ICBDb21taXQgUXVldWUgIDxj
b21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91
dCByMTgzMjY2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTQ0MTY0CisKKyAgICAgICAgQnJva2UgMzItYml0IGJ1aWxkIGFuZCBhIHRlc3QuIChSZXF1
ZXN0ZWQgYnkgYXAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0Ogor
CisgICAgICAgICJBWDogcmljaGVyIHRleHQgY2hhbmdlIG5vdGlmaWNhdGlvbnMgKDE0MjcxOSki
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3MTkK
KyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgzMjY2CisKIDIwMTUt
MDQtMjQgIE15bGVzIEMuIE1heGZpZWxkICA8bW1heGZpZWxkQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ29jb2FdIFN0YXJ0IGNsZWFuaW5nIHVwIEZvbnRQbGF0Zm9ybURhdGEKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRl
eCBlNjhkMTJmNGNmNGE5YzhmY2Q0MDRmMDA4NmMwNTdiZmExYmIxMTFkLi4xZWM3OGNjNjY2YjIz
OTcyNTFkNjU2NjU5Nzg2ZTRhNTYxNzNjYjk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAK
KzIwMTUtMDQtMjQgIENvbW1pdCBRdWV1ZSAgPGNvbW1pdC1xdWV1ZUB3ZWJraXQub3JnPgorCisg
ICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxODMyNjYuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQxNjQKKworICAgICAgICBCcm9rZSAz
Mi1iaXQgYnVpbGQgYW5kIGEgdGVzdC4gKFJlcXVlc3RlZCBieSBhcCBvbiAjd2Via2l0KS4KKwor
ICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXQ6CisKKyAgICAgICAgIkFYOiByaWNoZXIgdGV4dCBj
aGFuZ2Ugbm90aWZpY2F0aW9ucyAoMTQyNzE5KSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTE0MjcxOQorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQu
b3JnL2NoYW5nZXNldC8xODMyNjYKKwogMjAxNS0wNC0yNCAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxn
aGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OOiBXZWJLaXQyLkFjdGlvbk1lbnVz
VGVzdCBBUEkgdGVzdCBmYWlscwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBlN2M5NzkxNjRiZTQx
ZmU0YTg0ZTMwMjJjNGVkYjk2YmRmYzYzNmE4Li5jOGUyMDVhYTRjOTAwN2EwMTc1ODgxNTVhNWE0
N2U1MTE1MDY3M2I3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTUxMyw4ICsxNTEzLDYgQEAg
c2V0KFdlYkNvcmVfU09VUkNFUwogICAgIGVkaXRpbmcvUmVtb3ZlTm9kZUNvbW1hbmQuY3BwCiAg
ICAgZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5jcHAKICAgICBl
ZGl0aW5nL1JlbmRlcmVkUG9zaXRpb24uY3BwCi0gICAgZWRpdGluZy9SZXBsYWNlRGVsZXRlRnJv
bVRleHROb2RlQ29tbWFuZC5jcHAKLSAgICBlZGl0aW5nL1JlcGxhY2VJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmNwcAogICAgIGVkaXRpbmcvUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3Bw
CiAgICAgZWRpdGluZy9SZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5jcHAKICAgICBlZGl0aW5nL1Nl
dE5vZGVBdHRyaWJ1dGVDb21tYW5kLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4
cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggOTZkODk1NDBiM2Y0OGU5NGMwNjI1NWEwYjBiYzcw
MDFhODIyZmZhMi4uMzY5ZjUyYjhkMWFlYTM3ZTJhNjQ5YmZjODYxYjVkMDFmNjJiZThkMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagor
KysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qCkBAIC0x
NDc3NywzNCArMTQ3NzcsNiBAQAogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGVkaXRpbmdcUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwIj4KLSAg
ICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxh
dGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0Rl
YnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGVkaXRpbmdcUmVwbGFjZUluc2Vy
dEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwIj4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25k
aXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z19XaW5DYWlyb3x4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J0RlYnVnU3VmZml4fFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdEZWJ1Z1N1ZmZpeHx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2V8eDY0JyI+dHJ1ZTwvRXhjbHVk
ZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfFdpbjMyJyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSIn
JChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlX1dpbkNhaXJvfHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnxXaW4zMiciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUHJvZHVjdGlvbnx4NjQnIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGVkaXRpbmdcUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIj4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J0RlYnVnfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhj
bHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9
PSdEZWJ1Z3x4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTE5NTczLDcgKzE5NTQ1
LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQWNjZXNzaWJp
bGl0eVRhYmxlSGVhZGVyQ29udGFpbmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxhY2Nlc3NpYmlsaXR5XEFjY2Vzc2liaWxpdHlUYWJsZVJvdy5oIiAvPgogICAgIDxDbEluY2x1
ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBWE9iamVjdENhY2hlLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XHdpblxBY2Nl
c3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5ccGFnZVxBZGp1c3RWaWV3U2l6ZU9yTm90LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxwYWdlXEFsdGVybmF0aXZlVGV4dENsaWVudC5oIiAvPgpAQCAtMjExMTYsOCArMjEwODcs
NiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZWRpdGluZ1xSZW1vdmVOb2RlQ29tbWFu
ZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cZWRpdGluZ1xSZW1vdmVOb2RlUHJl
c2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
ZWRpdGluZ1xSZW5kZXJlZFBvc2l0aW9uLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxlZGl0aW5nXFJlcGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxlZGl0aW5nXFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21t
YW5kLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxlZGl0aW5nXFJlcGxhY2VOb2Rl
V2l0aFNwYW5Db21tYW5kLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxlZGl0aW5n
XFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxlZGl0aW5nXFNldE5vZGVBdHRyaWJ1dGVDb21tYW5kLmgiIC8+CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMgYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKaW5kZXgg
ZmU5ZmI2NDJhZDYxMGE2NWMxMzcyMmQxYTI4M2FiMjE3NjY0MDczYi4uYTAzMTgwODVjNWE4NTUw
NjAzZjdjMGU4MjJiYzQ2MTgwZjllODVhNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMzUyNSwxMiArMzUy
NSw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxlZGl0aW5nXFJlbmRlcmVkUG9zaXRp
b24uY3BwIj4KICAgICAgIDxGaWx0ZXI+ZWRpdGluZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgotICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cZWRpdGluZ1xSZXBsYWNlRGVsZXRlRnJvbVRl
eHROb2RlQ29tbWFuZC5jcHAiPgotICAgICAgPEZpbHRlcj5lZGl0aW5nPC9GaWx0ZXI+Ci0gICAg
PC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxlZGl0aW5nXFJlcGxhY2VJ
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcCI+Ci0gICAgICA8RmlsdGVyPmVkaXRpbmc8L0Zp
bHRlcj4KLSAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGVkaXRp
bmdcUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuY3BwIj4KICAgICAgIDxGaWx0ZXI+ZWRpdGlu
ZzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNzY3NCw5ICs3NjY4LDYgQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGFjY2Vzc2liaWxpdHlcQVhPYmplY3RDYWNoZS5oIj4KICAg
ICAgIDxGaWx0ZXI+YWNjZXNzaWJpbGl0eTwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAg
IDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cYWNjZXNzaWJpbGl0eVxBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudC5oIj4KLSAgICAgICAgPEZpbHRlcj5hY2Nlc3NpYmlsaXR5PC9GaWx0ZXI+Ci0gICAgPC9D
bEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxhY2Nlc3NpYmlsaXR5XHdpblxB
Y2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcldpbi5oIj4KICAgICAgIDxGaWx0ZXI+YWNjZXNzaWJp
bGl0eVx3aW48L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KQEAgLTEwNjg2LDEyICsxMDY3Nyw2
IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxlZGl0aW5nXFJlbmRlcmVkUG9zaXRpb24u
aCI+CiAgICAgICA8RmlsdGVyPmVkaXRpbmc8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAg
ICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGVkaXRpbmdcUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9k
ZUNvbW1hbmQuaCI+Ci0gICAgICA8RmlsdGVyPmVkaXRpbmc8L0ZpbHRlcj4KLSAgICA8L0NsSW5j
bHVkZT4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGVkaXRpbmdcUmVwbGFjZUluc2VydElu
dG9UZXh0Tm9kZUNvbW1hbmQuaCI+Ci0gICAgICA8RmlsdGVyPmVkaXRpbmc8L0ZpbHRlcj4KLSAg
ICA8L0NsSW5jbHVkZT4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGVkaXRpbmdcUmVwbGFj
ZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCI+CiAgICAgICA8RmlsdGVyPmVkaXRpbmc8L0ZpbHRlcj4K
ICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvagppbmRleCA5YjUxMzYxZWVhYWE3NmRmOGYxNDk4MzI2MzE5N2JiOWZj
YWZiN2UxLi44Y2M3YjU0YmYwMGJhMjg4YjgxZTM4NGNlMTRjODMzODNmMTVjMDU0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysr
IGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0z
MjUwLDcgKzMyNTAsNiBAQAogCQk5MDAxNzc0MTEyRTAzNDc4MDA2NDg0NjIgLyogT0VTU3RhbmRh
cmREZXJpdmF0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gOTAwMTc3M0UxMkUwMzQ3ODAwNjQ4NDYyIC8qIE9FU1N0YW5kYXJkRGVyaXZhdGl2ZXMu
aCAqLzsgfTsKIAkJOTAwMTc4ODAxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJp
dmF0aXZlcy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSA5MDAxNzg3RTEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmNw
cCAqLzsgfTsKIAkJOTAwMTc4ODExMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJp
dmF0aXZlcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
OTAwMTc4N0YxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oICov
OyB9OwotCQk5MUM5RjJGOTFBRTNCRUIwMDA5NUI2MUMgLyogQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkxQzlG
MkY4MUFFM0JFMjQwMDk1QjYxQyAvKiBBWFRleHRTdGF0ZUNoYW5nZUludGVudC5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTkzMDJCMEJEMEQ3OUY4
MjkwMEM3RUU4MyAvKiBQYWdlR3JvdXAuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gOTMwMkIwQkMwRDc5RjgyOTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5j
cHAgKi87IH07CiAJCTkzMDJCMEJGMEQ3OUY4MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDJCMEJFMEQ3OUY4
MkMwMEM3RUU4MyAvKiBQYWdlR3JvdXAuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQ
cml2YXRlLCApOyB9OyB9OwogCQk5MzA1QjI0RDA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDkzMDVCMjRDMDk4
RjFCNkIwMEMyODg1NSAvKiBUaW1lci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFBy
aXZhdGUsICk7IH07IH07CkBAIC02Mzk2LDEwICs2Mzk1LDYgQEAKIAkJRjUyQUQ1RTQxNTM0MjQ1
RjAwNTlGQkU2IC8qIEVtcHR5Q2xpZW50cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBGNTJBRDVFMzE1MzQyNDVGMDA1OUZCRTYgLyogRW1wdHlDbGll
bnRzLmNwcCAqLzsgfTsKIAkJRjU0NEY3ODgxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9j
YWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEY1
NDRGNzg2MTVDRkIyQTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5jcHAgKi87IH07CiAJCUY1
NDRGNzg5MTVDRkIyQTgwMEFGMzNBOCAvKiBQbGF0Zm9ybUxvY2FsZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU0NEY3ODcxNUNGQjJBODAwQUYzM0E4
IC8qIFBsYXRmb3JtTG9jYWxlLmggKi87IH07Ci0JCUY1NTI4REE1MUFDMTAzM0UwMDBFRjdBRCAv
KiBSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1MjhEQTMxQUMxMDMzRTAwMEVGN0FEIC8qIFJl
cGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmggKi87IH07Ci0JCUY1NTI4REE2MUFDMTAz
M0UwMDBFRjdBRCAvKiBSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGNTUyOERBNDFBQzEwMzNF
MDAwRUY3QUQgLyogUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwICovOyB9Owot
CQlGNTUyOERBOTFBQzEwOURGMDAwRUY3QUQgLyogUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNv
bW1hbmQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RjU1MjhEQTcxQUMxMDlERjAwMEVGN0FEIC8qIFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21t
YW5kLmNwcCAqLzsgfTsKLQkJRjU1MjhEQUExQUMxMDlERjAwMEVGN0FEIC8qIFJlcGxhY2VJbnNl
cnRJbnRvVGV4dE5vZGVDb21tYW5kLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSBGNTUyOERBODFBQzEwOURGMDAwRUY3QUQgLyogUmVwbGFjZUluc2VydElu
dG9UZXh0Tm9kZUNvbW1hbmQuaCAqLzsgfTsKIAkJRjU1QjNEQUQxMjUxRjEyRDAwM0VGMjY5IC8q
IEJhc2VUZXh0SW5wdXRUeXBlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEY1NUIzRDc5MTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0VHlw
ZS5jcHAgKi87IH07CiAJCUY1NUIzREFFMTI1MUYxMkQwMDNFRjI2OSAvKiBCYXNlVGV4dElucHV0
VHlwZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1
QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmggKi87IH07CiAJCUY1
NUIzREFGMTI1MUYxMkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjU1QjNEN0IxMjUxRjEyRDAwM0VG
MjY5IC8qIEJ1dHRvbklucHV0VHlwZS5jcHAgKi87IH07CkBAIC0xMDUwNSw3ICsxMDUwMCw2IEBA
CiAJCTkwMDE3NzNGMTJFMDM0NzgwMDY0ODQ2MiAvKiBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlk
bCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHRleHQ7IG5hbWUgPSBPRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDsgcGF0
aCA9IGNhbnZhcy9PRVNTdGFuZGFyZERlcml2YXRpdmVzLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJOTAwMTc4N0UxMkUwMzcwNzAwNjQ4NDYyIC8qIEpTT0VTU3RhbmRhcmREZXJp
dmF0aXZlcy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU09FU1N0
YW5kYXJkRGVyaXZhdGl2ZXMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MDAx
Nzg3RjEyRTAzNzA3MDA2NDg0NjIgLyogSlNPRVNTdGFuZGFyZERlcml2YXRpdmVzLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTT0VTU3RhbmRhcmREZXJpdmF0aXZlcy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQk5MUM5RjJGODFBRTNCRTI0MDA5NUI2MUMgLyog
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQVhUZXh0U3RhdGVDaGFu
Z2VJbnRlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJOTMwMkIwQkMwRDc5Rjgy
OTAwQzdFRTgzIC8qIFBhZ2VHcm91cC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBQYWdlR3JvdXAuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5MzAy
QjBCRTBENzlGODJDMDBDN0VFODMgLyogUGFnZUdyb3VwLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFBhZ2VHcm91cC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk5
MzA1QjI0QzA5OEYxQjZCMDBDMjg4NTUgLyogVGltZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gVGltZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTE0MDQ2
LDEwICsxNDA0MCw2IEBACiAJCUY1MkFENUUzMTUzNDI0NUYwMDU5RkJFNiAvKiBFbXB0eUNsaWVu
dHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRW1wdHlDbGllbnRz
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU0NEY3ODYxNUNGQjJBODAwQUYz
M0E4IC8qIFBsYXRmb3JtTG9jYWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFBsYXRmb3JtTG9jYWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
RjU0NEY3ODcxNUNGQjJBODAwQUYzM0E4IC8qIFBsYXRmb3JtTG9jYWxlLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBsYXRmb3JtTG9jYWxlLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCUY1NTI4REEzMUFDMTAzM0UwMDBFRjdBRCAvKiBSZXBsYWNlRGVsZXRlRnJv
bVRleHROb2RlQ29tbWFuZC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBSZXBs
YWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlGNTUyOERBNDFBQzEwMzNFMDAwRUY3QUQgLyogUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9k
ZUNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVwbGFj
ZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlGNTUyOERBNzFBQzEwOURGMDAwRUY3QUQgLyogUmVwbGFjZUluc2VydEludG9UZXh0Tm9k
ZUNvbW1hbmQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmVwbGFj
ZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwotCQlGNTUyOERBODFBQzEwOURGMDAwRUY3QUQgLyogUmVwbGFjZUluc2VydEludG9UZXh0Tm9k
ZUNvbW1hbmQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVwbGFjZUluc2Vy
dEludG9UZXh0Tm9kZUNvbW1hbmQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU1
QjNENzkxMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VUZXh0SW5wdXRUeXBlLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEJhc2VUZXh0SW5wdXRUeXBlLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjU1QjNEN0ExMjUxRjEyRDAwM0VGMjY5IC8qIEJhc2VU
ZXh0SW5wdXRUeXBlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2VUZXh0
SW5wdXRUeXBlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY1NUIzRDdCMTI1MUYx
MkQwMDNFRjI2OSAvKiBCdXR0b25JbnB1dFR5cGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gQnV0dG9uSW5wdXRUeXBlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTE1NjcxLDcgKzE1NjYxLDYgQEAKIAkJCQkyOUE4MTIxMzBGQkI5QzFEMDA1MTAy
OTMgLyogQWNjZXNzaWJpbGl0eVRhYmxlUm93LmggKi8sCiAJCQkJMjk4MUNBQUYxMzE4MjJFQzAw
RDEyRjJBIC8qIEFYT2JqZWN0Q2FjaGUuY3BwICovLAogCQkJCTI5QTgxMjFBMEZCQjlDMUQwMDUx
MDI5MyAvKiBBWE9iamVjdENhY2hlLmggKi8sCi0JCQkJOTFDOUYyRjgxQUUzQkUyNDAwOTVCNjFD
IC8qIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IGFjY2Vz
c2liaWxpdHk7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4iOwpAQCAtMTc4MDUsMTAgKzE3Nzk0
LDYgQEAKIAkJCQk5MzMwOURCODA5OUU2NDkxMDA1NkU1ODEgLyogUmVtb3ZlTm9kZVByZXNlcnZp
bmdDaGlsZHJlbkNvbW1hbmQuaCAqLywKIAkJCQk5QjMyQ0RBODEzREY3RkE5MDBGMzREMTMgLyog
UmVuZGVyZWRQb3NpdGlvbi5jcHAgKi8sCiAJCQkJOUIzMkNEQTcxM0RGN0ZBOTAwRjM0RDEzIC8q
IFJlbmRlcmVkUG9zaXRpb24uaCAqLywKLQkJCQlGNTUyOERBNDFBQzEwMzNFMDAwRUY3QUQgLyog
UmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwICovLAotCQkJCUY1NTI4REEzMUFD
MTAzM0UwMDBFRjdBRCAvKiBSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oICovLAot
CQkJCUY1NTI4REE3MUFDMTA5REYwMDBFRjdBRCAvKiBSZXBsYWNlSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5jcHAgKi8sCi0JCQkJRjU1MjhEQTgxQUMxMDlERjAwMEVGN0FEIC8qIFJlcGxhY2VJ
bnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmggKi8sCiAJCQkJQTg5Q0NDNTAwRjQ0RTk4MTAwQjVE
QTEwIC8qIFJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmNwcCAqLywKIAkJCQlBODlDQ0M1MTBG
NDRFOTgxMDBCNURBMTAgLyogUmVwbGFjZU5vZGVXaXRoU3BhbkNvbW1hbmQuaCAqLywKIAkJCQk5
MzMwOURCQTA5OUU2NDkxMDA1NkU1ODEgLyogUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwICov
LApAQCAtMjM3NDMsNyArMjM3MjgsNiBAQAogCQkJCTZDNTY4Q0IxMTlEQUZFQTAwMDQzMENBMiAv
KiBNYXNrSW1hZ2VPcGVyYXRpb24uaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTgwRkFGMTQ5ODAw
RDQwMEZCNUJEOCAvKiBBbmltYXRpb25VdGlsaXRpZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTRB
NEY2NTcyMUFBOTk3RjEwMEUzOENERCAvKiBSZWFsdGltZU1lZGlhU291cmNlQ2FwYWJpbGl0aWVz
LmggaW4gSGVhZGVycyAqLywKLQkJCQlGNTUyOERBNTFBQzEwMzNFMDAwRUY3QUQgLyogUmVwbGFj
ZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTkzMzA5REQ3
MDk5RTY0OTIwMDU2RTU4MSAvKiBBcHBlbmROb2RlQ29tbWFuZC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE4RjZCQkQwREI1NUNEQzAwMURCNzk0IC8qIEFwcGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTFBOEY2QkJGMERCNTVDREMwMDFEQjc5NCAvKiBBcHBsaWNhdGlvbkNhY2hl
R3JvdXAuaCBpbiBIZWFkZXJzICovLApAQCAtMjU2NjksNyArMjU2NTMsNiBAQAogCQkJCUJDNjBE
QTNBMEQyQTMwMjgwMEI5OTE4RiAvKiBKU1hNTEh0dHBSZXF1ZXN0RXhjZXB0aW9uLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlGOTE2QzQ4RTBEQjUxMEY4MDA3NkNEODMgLyogSlNYTUxIdHRwUmVxdWVz
dFByb2dyZXNzRXZlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDREZENDk2MEUzMDU5MkYwMDlE
MTBBRCAvKiBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmggaW4gSGVhZGVycyAqLywKLQkJCQlGNTUy
OERBQTFBQzEwOURGMDAwRUY3QUQgLyogUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
aCBpbiBIZWFkZXJzICovLAogCQkJCTFBQ0U1M0Y3MEE4RDE5NDcwMDIyOTQ3RCAvKiBKU1hNTFNl
cmlhbGl6ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTFBNzYyQzc0MEEwNzRGMjYwMDk4OUY1QiAv
KiBKU1hQYXRoRXZhbHVhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzYwREI0QTBEMkEzRDFF
MDBCOTkxOEYgLyogSlNYUGF0aEV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8sCkBAIC0yNjcyMyw3
ICsyNjcwNiw2IEBACiAJCQkJN0M0Qzk2REQxQUQ0NDgzNTAwMzY1QTUwIC8qIEpTUmVhZGFibGVT
dHJlYW0uaCBpbiBIZWFkZXJzICovLAogCQkJCTgzQzFENDI4MTc4RDVBQjQwMDE0MUU2OCAvKiBT
VkdQYXRoU2VnQ3VydmV0b0N1YmljUmVsLmggaW4gSGVhZGVycyAqLywKIAkJCQlCMjIyN0E2OTBE
MDBCRjIyMDA3MUI3ODIgLyogU1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aC5oIGluIEhlYWRl
cnMgKi8sCi0JCQkJOTFDOUYyRjkxQUUzQkVCMDAwOTVCNjFDIC8qIEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4M0MxRDQyOTE3OEQ1QUI0MDAxNDFFNjggLyog
U1ZHUGF0aFNlZ0N1cnZldG9DdWJpY1Ntb290aEFicy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODND
MUQ0MkExNzhENUFCNDAwMTQxRTY4IC8qIFNWR1BhdGhTZWdDdXJ2ZXRvQ3ViaWNTbW9vdGhSZWwu
aCBpbiBIZWFkZXJzICovLAogCQkJCUIyMjI3QTZEMEQwMEJGMjIwMDcxQjc4MiAvKiBTVkdQYXRo
U2VnQ3VydmV0b1F1YWRyYXRpYy5oIGluIEhlYWRlcnMgKi8sCkBAIC0yODQ4Miw3ICsyODQ2NCw2
IEBACiAJCQkJNTEwMTkyRDExOEI2QjlBQjAwN0ZDN0ExIC8qIEltYWdlQ29udHJvbHNSb290RWxl
bWVudE1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNzc5NzkxOTBENkI5RDBDMDAzODUxQjkg
LyogSW1hZ2VEYXRhLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3MjA1QUI1MTIzOTI5MTAwMEIx
NzM4MCAvKiBJbWFnZURvY3VtZW50LmNwcCBpbiBTb3VyY2VzICovLAotCQkJCUY1NTI4REE2MUFD
MTAzM0UwMDBFRjdBRCAvKiBSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQlGNTVCM0RDMTEyNTFGMTJEMDAzRUYyNjkgLyogSW1hZ2VJbnB1dFR5
cGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMDg5NTgyNTUwRTg1N0E3RTAwRjgyQzgzIC8qIElt
YWdlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUIyNzUzNTdCMEIwNTM4MTQwMDJDRTY0
RiAvKiBJbWFnZU1hYy5tbSBpbiBTb3VyY2VzICovLApAQCAtMjk5MzAsNyArMjk5MTEsNiBAQAog
CQkJCUZFMzZGRDE2MTZDNzgyNjUwMEY4ODdDMSAvKiBTUUxUcmFuc2FjdGlvblN0YXRlTWFjaGlu
ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTJFNkU1OTBDQzU1MjEzMDA0QTIwNjIgLyogU1FM
VmFsdWUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDQ3NjUzMUIxMzMxNzA5OTAwMDZCNzg5IC8q
IFNTTEtleUdlbmVyYXRvcklPUy5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGNTUyOERBOTFBQzEw
OURGMDAwRUY3QUQgLyogUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJOTNGMTlBRTYwODI0NUU1OTAwMUU5QUJDIC8qIFNTTEtleUdlbmVyYXRv
ck1hYy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzdGQTYyRTBEMUYwRUZGMDBEQjIyQTkgLyog
U3RhdGljTm9kZUxpc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQTVBRkIzNEYxMTUxNTFBNzAw
QjA0NUNCIC8qIFN0ZXBSYW5nZS5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCmluZGV4IDg2NGUxNjBkOTc1NjFiZDgy
NjNiZDU1MzBkODk5YmI1MGMwMmIwZDUuLmEwMGIxNWMwMWE2MDdiNmRkYTkwN2YzNjE1ZWEyNTU3
MjU1NGM1MmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmpl
Y3RDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENh
Y2hlLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA4LCAyMDA5LCAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtOTAsOSArOTAsNiBAQCBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHVzaW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKLS8vIFBvc3QgdmFsdWUg
Y2hhbmdlIG5vdGlmaWNhdGlvbnMgZm9yIHBhc3N3b3JkIGZpZWxkcyBvciBlbGVtZW50cyBjb250
YWluZWQgaW4gcGFzc3dvcmQgZmllbGRzIGF0IGEgNDBoeiBpbnRlcnZhbCB0byB0aHdhcnQgYW5h
bHlzaXMgb2YgdHlwaW5nIGNhZGVuY2UKLXN0YXRpYyBkb3VibGUgQWNjZXNzaWJpbGl0eVBhc3N3
b3JkVmFsdWVDaGFuZ2VOb3RpZmljYXRpb25JbnRlcnZhbCA9IDAuMDI1OwotCiBBY2Nlc3NpYmls
aXR5T2JqZWN0SW5jbHVzaW9uIEFYQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVDYWNoZTo6Z2V0SWdu
b3JlZChBWElEIGlkKSBjb25zdAogewogICAgIEhhc2hNYXA8QVhJRCwgQ2FjaGVkQVhPYmplY3RB
dHRyaWJ1dGVzPjo6Y29uc3RfaXRlcmF0b3IgaXQgPSBtX2lkTWFwcGluZy5maW5kKGlkKTsKQEAg
LTEzMiw3ICsxMjksNiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnNldEVuaGFuY2VkVXNlckludGVy
ZmFjZUFjY2Vzc2liaWxpdHkoYm9vbCBmbGFnKQogQVhPYmplY3RDYWNoZTo6QVhPYmplY3RDYWNo
ZShEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBtX2RvY3VtZW50KGRvY3VtZW50KQogICAgICwg
bV9ub3RpZmljYXRpb25Qb3N0VGltZXIoKnRoaXMsICZBWE9iamVjdENhY2hlOjpub3RpZmljYXRp
b25Qb3N0VGltZXJGaXJlZCkKLSAgICAsIG1fcGFzc3dvcmROb3RpZmljYXRpb25Qb3N0VGltZXIo
KnRoaXMsICZBWE9iamVjdENhY2hlOjpwYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1lckZpcmVk
KQogewogfQogCkBAIC03MDksNyArNzA1LDcgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmlj
YXRpb25Qb3N0VGltZXJGaXJlZCgpCiAgICAgUmVmPERvY3VtZW50PiBwcm90ZWN0b3JGb3JDYWNo
ZU93bmVyKG1fZG9jdW1lbnQpOwogICAgIG1fbm90aWZpY2F0aW9uUG9zdFRpbWVyLnN0b3AoKTsK
ICAgICAKLSAgICAvLyBJbiB0ZXN0cywgcG9zdGluZyBub3RpZmljYXRpb25zIGhhcyBhIHRlbmRl
bmN5IHRvIGltbWVkaWF0ZWx5IHF1ZXVlIHVwIG90aGVyIG5vdGlmaWNhdGlvbnMsIHdoaWNoIGNh
biBsZWFkIHRvIHVuZXhwZWN0ZWQgYmVoYXZpb3IKKyAgICAvLyBJbiBEUlQsIHBvc3Rpbmcgbm90
aWZpY2F0aW9ucyBoYXMgYSB0ZW5kZW5jeSB0byBpbW1lZGlhdGVseSBxdWV1ZSB1cCBvdGhlciBu
b3RpZmljYXRpb25zLCB3aGljaCBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yCiAgICAg
Ly8gd2hlbiB0aGUgbm90aWZpY2F0aW9uIGxpc3QgaXMgY2xlYXJlZCBhdCB0aGUgZW5kLiBJbnN0
ZWFkIGNvcHkgdGhpcyBsaXN0IGF0IHRoZSBzdGFydC4KICAgICBhdXRvIG5vdGlmaWNhdGlvbnMg
PSBXVEY6Om1vdmUobV9ub3RpZmljYXRpb25zVG9Qb3N0KTsKICAgICAKQEAgLTc0NiwyMCArNzQy
LDYgQEAgdm9pZCBBWE9iamVjdENhY2hlOjpub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpCiAg
ICAgICAgICAgICBjaGlsZHJlbkNoYW5nZWQob2JqLT5wYXJlbnRPYmplY3QoKSk7CiAgICAgfQog
fQotCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBhc3N3b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmly
ZWQoKQotewotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIG1fcGFzc3dvcmROb3RpZmljYXRpb25Q
b3N0VGltZXIuc3RvcCgpOwotCi0gICAgLy8gSW4gdGVzdHMsIHBvc3Rpbmcgbm90aWZpY2F0aW9u
cyBoYXMgYSB0ZW5kZW5jeSB0byBpbW1lZGlhdGVseSBxdWV1ZSB1cCBvdGhlciBub3RpZmljYXRp
b25zLCB3aGljaCBjYW4gbGVhZCB0byB1bmV4cGVjdGVkIGJlaGF2aW9yCi0gICAgLy8gd2hlbiB0
aGUgbm90aWZpY2F0aW9uIGxpc3QgaXMgY2xlYXJlZCBhdCB0aGUgZW5kLiBJbnN0ZWFkIGNvcHkg
dGhpcyBsaXN0IGF0IHRoZSBzdGFydC4KLSAgICBhdXRvIG5vdGlmaWNhdGlvbnMgPSBXVEY6Om1v
dmUobV9wYXNzd29yZE5vdGlmaWNhdGlvbnNUb1Bvc3QpOwotCi0gICAgZm9yIChjb25zdCBhdXRv
JiBub3RpZmljYXRpb24gOiBub3RpZmljYXRpb25zKQotICAgICAgICBwb3N0VGV4dFN0YXRlQ2hh
bmdlUGxhdGZvcm1Ob3RpZmljYXRpb24obm90aWZpY2F0aW9uLmdldCgpLCBBWFRleHRFZGl0VHlw
ZUluc2VydCwgIiAiLCBWaXNpYmxlUG9zaXRpb24oKSk7Ci0jZW5kaWYKLX0KICAgICAKIHZvaWQg
QVhPYmplY3RDYWNoZTo6cG9zdE5vdGlmaWNhdGlvbihSZW5kZXJPYmplY3QqIHJlbmRlcmVyLCBB
WE5vdGlmaWNhdGlvbiBub3RpZmljYXRpb24sIFBvc3RUYXJnZXQgcG9zdFRhcmdldCwgUG9zdFR5
cGUgcG9zdFR5cGUpCiB7CkBAIC04NjgsMjIzICs4NTAsMTYgQEAgdm9pZCBBWE9iamVjdENhY2hl
OjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqIHJlbmRlcmVyKQogICAgIHBv
c3ROb3RpZmljYXRpb24ocmVuZGVyZXIsIEFYU2VsZWN0ZWRDaGlsZHJlbkNoYW5nZWQsIFRhcmdl
dE9ic2VydmFibGVQYXJlbnQpOwogfQogCi0jaWZuZGVmIE5ERUJVRwotdm9pZCBBWE9iamVjdENh
Y2hlOjpzaG93SW50ZW50KGNvbnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ICZpbnRlbnQpCi17
Ci0gICAgc3dpdGNoIChpbnRlbnQudHlwZSkgewotICAgIGNhc2UgQVhUZXh0U3RhdGVDaGFuZ2VU
eXBlVW5rbm93bjoKLSAgICAgICAgZGF0YUxvZygiVW5rbm93biIpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQ6Ci0gICAgICAgIGRhdGFMb2coIkVk
aXQ6OiIpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNl
bGVjdGlvbk1vdmU6Ci0gICAgICAgIGRhdGFMb2coIk1vdmU6OiIpOwotICAgICAgICBicmVhazsK
LSAgICBjYXNlIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZDoKLSAgICAgICAg
ZGF0YUxvZygiRXh0ZW5kOjoiKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHN3aXRjaCAo
aW50ZW50LnR5cGUpIHsKLSAgICBjYXNlIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd246Ci0g
ICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlRWRpdDoKLSAgICAg
ICAgc3dpdGNoIChpbnRlbnQuY2hhbmdlKSB7Ci0gICAgICAgIGNhc2UgQVhUZXh0RWRpdFR5cGVV
bmtub3duOgotICAgICAgICAgICAgZGF0YUxvZygiVW5rbm93biIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0gICAgICAgIGNhc2UgQVhUZXh0RWRpdFR5cGVEZWxldGU6Ci0gICAgICAgICAgICBkYXRh
TG9nKCJEZWxldGUiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFYVGV4dEVk
aXRUeXBlSW5zZXJ0OgotICAgICAgICAgICAgZGF0YUxvZygiSW5zZXJ0Iik7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgY2FzZSBBWFRleHRFZGl0VHlwZURpY3RhdGlvbjoKLSAgICAgICAg
ICAgIGRhdGFMb2coIkRpY3RhdGlvbkluc2VydCIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQVhUZXh0RWRpdFR5cGVUeXBpbmc6Ci0gICAgICAgICAgICBkYXRhTG9nKCJUeXBp
bmdJbnNlcnQiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFYVGV4dEVkaXRU
eXBlQ3V0OgotICAgICAgICAgICAgZGF0YUxvZygiQ3V0Iik7Ci0gICAgICAgICAgICBicmVhazsK
LSAgICAgICAgY2FzZSBBWFRleHRFZGl0VHlwZVBhc3RlOgotICAgICAgICAgICAgZGF0YUxvZygi
UGFzdGUiKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwot
ICAgIGNhc2UgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZToKLSAgICBjYXNlIEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZDoKLSAgICAgICAgc3dpdGNoIChpbnRl
bnQuc2VsZWN0aW9uLmRpcmVjdGlvbikgewotICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvblVua25vd246Ci0gICAgICAgICAgICBkYXRhTG9nKCJVbmtub3duOjoiKTsKLSAgICAg
ICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lu
bmluZzoKLSAgICAgICAgICAgIGRhdGFMb2coIkJlZ2lubmluZzo6Iik7Ci0gICAgICAgICAgICBi
cmVhazsKLSAgICAgICAgY2FzZSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQ6Ci0gICAgICAg
ICAgICBkYXRhTG9nKCJFbmQ6OiIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2Ug
QVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXM6Ci0gICAgICAgICAgICBkYXRhTG9nKCJQ
cmV2aW91czo6Iik7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBWFRleHRTZWxl
Y3Rpb25EaXJlY3Rpb25OZXh0OgotICAgICAgICAgICAgZGF0YUxvZygiTmV4dDo6Iik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNj
b250aWd1b3VzOgotICAgICAgICAgICAgZGF0YUxvZygiRGlzY29udGlndW91czo6Iik7Ci0gICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKGludGVudC5zZWxlY3Rp
b24uZGlyZWN0aW9uKSB7Ci0gICAgICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uVW5r
bm93bjoKLSAgICAgICAgY2FzZSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmc6Ci0g
ICAgICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kOgotICAgICAgICBjYXNlIEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzOgotICAgICAgICBjYXNlIEFYVGV4dFNlbGVj
dGlvbkRpcmVjdGlvbk5leHQ6Ci0gICAgICAgICAgICBzd2l0Y2ggKGludGVudC5zZWxlY3Rpb24u
Z3JhbnVsYXJpdHkpIHsKLSAgICAgICAgICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJp
dHlVbmtub3duOgotICAgICAgICAgICAgICAgIGRhdGFMb2coIlVua25vd24iKTsKLSAgICAgICAg
ICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJp
dHlDaGFyYWN0ZXI6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiQ2hhcmFjdGVyIik7Ci0gICAg
ICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5V29yZDoKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCJXb3JkIik7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
TGluZToKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCJMaW5lIik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVu
Y2U6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiU2VudGVuY2UiKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQYXJh
Z3JhcGg6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiUGFyYWdyYXBoIik7Ci0gICAgICAgICAg
ICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
UGFnZToKLSAgICAgICAgICAgICAgICBkYXRhTG9nKCJQYWdlIik7Ci0gICAgICAgICAgICAgICAg
YnJlYWs7Ci0gICAgICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1l
bnQ6Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiRG9jdW1lbnQiKTsKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlBbGw6
Ci0gICAgICAgICAgICAgICAgZGF0YUxvZygiQWxsIik7Ci0gICAgICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzOgotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGlmIChpbnRlbnQuaXNTeW5jaHJvbml6
aW5nKQotICAgICAgICBkYXRhTG9nKCItU3luYyIpOwotICAgIGRhdGFMb2coIlxuIik7Ci19Ci0j
ZW5kaWYKLQotdm9pZCBBWE9iamVjdENhY2hlOjpzZXRUZXh0U2VsZWN0aW9uSW50ZW50KEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50IGludGVudCkKLXsKLSAgICBtX3RleHRTZWxlY3Rpb25JbnRlbnQg
PSBpbnRlbnQ7Ci19Ci0KLXN0YXRpYyBib29sIGlzUGFzc3dvcmRGaWVsZE9yQ29udGFpbmVkQnlQ
YXNzd29yZEZpZWxkKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCkKLXsKLSAgICByZXR1cm4g
b2JqZWN0ICYmIChvYmplY3QtPmlzUGFzc3dvcmRGaWVsZCgpIHx8IG9iamVjdC0+aXNDb250YWlu
ZWRCeVBhc3N3b3JkRmllbGQoKSk7Ci19Ci0KLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRT
dGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihOb2RlKiBub2RlLCBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCBpbnRlbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbikKLXsKLSAgICBpZiAo
IW5vZGUpCi0gICAgICAgIHJldHVybjsKLQotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChp
bnRlbnQudHlwZSA9PSBBWFRleHRTdGF0ZUNoYW5nZVR5cGVVbmtub3duKQotICAgICAgICBpbnRl
bnQgPSBtX3RleHRTZWxlY3Rpb25JbnRlbnQ7Ci0KLSAgICBzdG9wQ2FjaGluZ0NvbXB1dGVkT2Jq
ZWN0QXR0cmlidXRlcygpOwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0ID0gZ2V0
T3JDcmVhdGUobm9kZSk7Ci0gICAgaWYgKG9iamVjdCkgewotICAgICAgICBpZiAoaXNQYXNzd29y
ZEZpZWxkT3JDb250YWluZWRCeVBhc3N3b3JkRmllbGQob2JqZWN0KSkKLSAgICAgICAgICAgIHJl
dHVybjsKLSAgICAgICAgb2JqZWN0ID0gb2JqZWN0LT5vYnNlcnZhYmxlT2JqZWN0KCk7Ci0gICAg
fQotCi0gICAgcG9zdFRleHRTdGF0ZUNoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwg
aW50ZW50LCBzZWxlY3Rpb24pOwotI2Vsc2UKLSAgICBwb3N0Tm90aWZpY2F0aW9uKG5vZGUtPnJl
bmRlcmVyKCksIEFYT2JqZWN0Q2FjaGU6OkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCwgVGFyZ2V0T2Jz
ZXJ2YWJsZVBhcmVudCk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVudCk7Ci0gICAgVU5VU0VEX1BB
UkFNKHNlbGVjdGlvbik7Ci0jZW5kaWYKLQotICAgIHNldFRleHRTZWxlY3Rpb25JbnRlbnQoQVhU
ZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7Ci19Ci0KLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRl
eHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihOb2RlKiBub2RlLCBBWFRleHRFZGl0VHlwZSB0eXBl
LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCit2
b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlTm90aWZpY2F0aW9uKE5vZGUqIG5vZGUs
IEFYVGV4dENoYW5nZSB0ZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYg
dGV4dCkKIHsKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIHJldHVybjsKLSAgICBBU1NFUlQodHlw
ZSAhPSBBWFRleHRFZGl0VHlwZVVua25vd24pOwogCiAgICAgc3RvcENhY2hpbmdDb21wdXRlZE9i
amVjdEF0dHJpYnV0ZXMoKTsKIAotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCA9IGdl
dE9yQ3JlYXRlKG5vZGUpOwotI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIGlmIChvYmplY3QpIHsK
LSAgICAgICAgaWYgKGVucXVldWVQYXNzd29yZFZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uKG9iamVj
dCkpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIG9iamVjdCA9IG9iamVjdC0+b2JzZXJ2
YWJsZU9iamVjdCgpOwotICAgIH0KLQotICAgIHBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5v
dGlmaWNhdGlvbihvYmplY3QsIHR5cGUsIHRleHQsIHBvc2l0aW9uKTsKLSNlbHNlCi0gICAgbm9k
ZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3QsIHRleHRDaGFuZ2VGb3JFZGl0
VHlwZSh0eXBlKSwgcG9zaXRpb24uZGVlcEVxdWl2YWxlbnQoKS5kZXByZWNhdGVkRWRpdGluZ09m
ZnNldCgpLCB0ZXh0KTsKLSNlbmRpZgotfQotCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0
UmVwbGFjZW1lbnROb3RpZmljYXRpb24oTm9kZSogbm9kZSwgQVhUZXh0RWRpdFR5cGUgZGVsZXRp
b25UeXBlLCBjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBBWFRleHRFZGl0VHlwZSBpbnNlcnRp
b25UeXBlLCBjb25zdCBTdHJpbmcmIGluc2VydGVkVGV4dCwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
JiBwb3NpdGlvbikKLXsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybjsKLSAgICBBU1NF
UlQoZGVsZXRpb25UeXBlID09IEFYVGV4dEVkaXRUeXBlRGVsZXRlKTsKLSAgICBBU1NFUlQoaW5z
ZXJ0aW9uVHlwZSA9PSBBWFRleHRFZGl0VHlwZUluc2VydCB8fCBpbnNlcnRpb25UeXBlID09IEFY
VGV4dEVkaXRUeXBlVHlwaW5nIHx8IGluc2VydGlvblR5cGUgPT0gQVhUZXh0RWRpdFR5cGVEaWN0
YXRpb24gfHwgaW5zZXJ0aW9uVHlwZSA9PSBBWFRleHRFZGl0VHlwZVBhc3RlKTsKLQotICAgIHN0
b3BDYWNoaW5nQ29tcHV0ZWRPYmplY3RBdHRyaWJ1dGVzKCk7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYmplY3QgPSBnZXRPckNyZWF0ZShub2RlKTsKLSNpZiBQTEFURk9STShDT0NPQSkK
LSAgICBpZiAob2JqZWN0KSB7Ci0gICAgICAgIGlmIChlbnF1ZXVlUGFzc3dvcmRWYWx1ZUNoYW5n
ZU5vdGlmaWNhdGlvbihvYmplY3QpKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBvYmpl
Y3QgPSBvYmplY3QtPm9ic2VydmFibGVPYmplY3QoKTsKLSAgICB9Ci0KLSAgICBwb3N0VGV4dFJl
cGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBkZWxldGlvblR5cGUsIGRlbGV0
ZWRUZXh0LCBpbnNlcnRpb25UeXBlLCBpbnNlcnRlZFRleHQsIHBvc2l0aW9uKTsKLSNlbHNlCi0g
ICAgbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3QsIHRleHRDaGFuZ2VG
b3JFZGl0VHlwZShkZWxldGlvblR5cGUpLCBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJl
Y2F0ZWRFZGl0aW5nT2Zmc2V0KCksIGRlbGV0ZWRUZXh0KTsKLSAgICBub2RlVGV4dENoYW5nZVBs
YXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgdGV4dENoYW5nZUZvckVkaXRUeXBlKGluc2VydGlv
blR5cGUpLCBwb3NpdGlvbi5kZWVwRXF1aXZhbGVudCgpLmRlcHJlY2F0ZWRFZGl0aW5nT2Zmc2V0
KCksIGluc2VydGVkVGV4dCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBBWE9iamVjdENhY2hlOjplbnF1
ZXVlUGFzc3dvcmRWYWx1ZUNoYW5nZU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmplY3QpCi17Ci0gICAgaWYgKCFpc1Bhc3N3b3JkRmllbGRPckNvbnRhaW5lZEJ5UGFzc3dvcmRG
aWVsZChvYmplY3QpKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBBY2Nlc3NpYmlsaXR5
T2JqZWN0KiBvYnNlcnZhYmxlT2JqZWN0ID0gb2JqZWN0LT5vYnNlcnZhYmxlT2JqZWN0KCk7Ci0g
ICAgaWYgKCFvYnNlcnZhYmxlT2JqZWN0KSB7Ci0gICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgp
OwotICAgICAgICAvLyByZXR1cm4gdHJ1ZSBldmVuIHRob3VnaCB0aGUgZW5xdWV1ZSBkaWRuJ3Qg
aGFwcGVuIGJlY2F1c2UgdGhpcyBpcyBhIHBhc3N3b3JkIGZpZWxkIGFuZCBjYWxsZXIgc2hvdWxk
bid0IHBvc3QgYSBub3RpZmljYXRpb24KLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotCi0g
ICAgaWYgKCFtX3Bhc3N3b3JkTm90aWZpY2F0aW9uc1RvUG9zdC5jb250YWlucyhvYnNlcnZhYmxl
T2JqZWN0KSkgewotICAgICAgICBtX3Bhc3N3b3JkTm90aWZpY2F0aW9uc1RvUG9zdC5hcHBlbmQo
b2JzZXJ2YWJsZU9iamVjdCk7Ci0gICAgICAgIGlmICghbV9wYXNzd29yZE5vdGlmaWNhdGlvblBv
c3RUaW1lci5pc0FjdGl2ZSgpKQotICAgICAgICAgICAgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBv
c3RUaW1lci5zdGFydE9uZVNob3QoQWNjZXNzaWJpbGl0eVBhc3N3b3JkVmFsdWVDaGFuZ2VOb3Rp
ZmljYXRpb25JbnRlcnZhbCk7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7CisgICAgLy8gRGVs
ZWdhdGUgb24gdGhlIHJpZ2h0IHBsYXRmb3JtCisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2Jq
ID0gZ2V0T3JDcmVhdGUobm9kZSk7CisgICAgbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNh
dGlvbihvYmosIHRleHRDaGFuZ2UsIG9mZnNldCwgdGV4dCk7CiB9CiAKIHZvaWQgQVhPYmplY3RD
YWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnROb3RpZmljYXRpb24oRnJhbWUqIGZyYW1lLCBBWExvYWRp
bmdFdmVudCBsb2FkaW5nRXZlbnQpCkBAIC0xMzA5LDE0ICsxMDg0LDYgQEAgYm9vbCBpc05vZGVB
cmlhVmlzaWJsZShOb2RlKiBub2RlKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotQWNjZXNzaWJp
bGl0eU9iamVjdCogQVhPYmplY3RDYWNoZTo6cm9vdFdlYkFyZWEoKQotewotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJvb3RPYmplY3QgPSB0aGlzLT5yb290T2JqZWN0KCk7Ci0gICAgaWYgKCFy
b290T2JqZWN0IHx8ICFyb290T2JqZWN0LT5pc0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3KCkpCi0g
ICAgICAgIHJldHVybiBudWxscHRyOwotICAgIHJldHVybiBkb3duY2FzdDxBY2Nlc3NpYmlsaXR5
U2Nyb2xsVmlldz4oKnJvb3RPYmplY3QpLndlYkFyZWFPYmplY3QoKTsKLX0KLQogQVhBdHRyaWJ1
dGVDYWNoZUVuYWJsZXI6OkFYQXR0cmlidXRlQ2FjaGVFbmFibGVyKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlKQogICAgIDogbV9jYWNoZShjYWNoZSkKIHsKQEAgLTEzMjksMjYgKzEwOTYsNiBAQCBBWEF0
dHJpYnV0ZUNhY2hlRW5hYmxlcjo6fkFYQXR0cmlidXRlQ2FjaGVFbmFibGVyKCkKICAgICBpZiAo
bV9jYWNoZSkKICAgICAgICAgbV9jYWNoZS0+c3RvcENhY2hpbmdDb21wdXRlZE9iamVjdEF0dHJp
YnV0ZXMoKTsKIH0KLQotI2lmICFQTEFURk9STShDT0NPQSkKLUFYVGV4dENoYW5nZSBBWE9iamVj
dENhY2hlOjp0ZXh0Q2hhbmdlRm9yRWRpdFR5cGUoQVhUZXh0RWRpdFR5cGUgdHlwZSkKLXsKLSAg
ICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEFYVGV4dEVkaXRUeXBlQ3V0OgotICAgIGNhc2Ug
QVhUZXh0RWRpdFR5cGVEZWxldGU6Ci0gICAgICAgIHJldHVybiBBWFRleHREZWxldGVkOwotICAg
IGNhc2UgQVhUZXh0RWRpdFR5cGVJbnNlcnQ6Ci0gICAgY2FzZSBBWFRleHRFZGl0VHlwZURpY3Rh
dGlvbjoKLSAgICBjYXNlIEFYVGV4dEVkaXRUeXBlVHlwaW5nOgotICAgIGNhc2UgQVhUZXh0RWRp
dFR5cGVQYXN0ZToKLSAgICAgICAgcmV0dXJuIEFYVGV4dEluc2VydGVkOwotICAgIGNhc2UgQVhU
ZXh0RWRpdFR5cGVVbmtub3duOgotICAgICAgICBicmVhazsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIEFYVGV4dEluc2VydGVkOwotfQotI2VuZGlmCiAgICAg
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQVhPYmplY3RDYWNoZS5oIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9BWE9iamVjdENhY2hlLmgKaW5kZXggMzBhN2E0MmY0Njk2YWViMGQ0YjA4ZDEwOTQ5NjJkM2Qy
ODE0Y2E4MS4uYmZhOTI3NzI2NTQ2MzkwYzVlNGQ5ZmQ3NGMyMGM5MjI1OGUzOThjNiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmgKQEAgLTEsNSArMSw1
IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDAzLCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy
MDEwLCAyMDExLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHly
aWdodCAoQykgMjAwMywgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
QEAgLTI2LDcgKzI2LDYgQEAKICNpZm5kZWYgQVhPYmplY3RDYWNoZV9oCiAjZGVmaW5lIEFYT2Jq
ZWN0Q2FjaGVfaAogCi0jaW5jbHVkZSAiQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCIKICNpbmNs
dWRlICJBY2Nlc3NpYmlsaXR5T2JqZWN0LmgiCiAjaW5jbHVkZSAiVGltZXIuaCIKICNpbmNsdWRl
IDxsaW1pdHMuaD4KQEAgLTY4LDEwICs2Nyw2IEBAIHByaXZhdGU6CiAgICAgSGFzaE1hcDxBWElE
LCBDYWNoZWRBWE9iamVjdEF0dHJpYnV0ZXM+IG1faWRNYXBwaW5nOwogfTsKIAotI2lmICFQTEFU
Rk9STShDT0NPQSkKLWVudW0gQVhUZXh0Q2hhbmdlIHsgQVhUZXh0SW5zZXJ0ZWQsIEFYVGV4dERl
bGV0ZWQgfTsKLSNlbmRpZgotCiBlbnVtIFBvc3RUYXJnZXQgeyBUYXJnZXRFbGVtZW50LCBUYXJn
ZXRPYnNlcnZhYmxlUGFyZW50IH07CiAKIGVudW0gUG9zdFR5cGUgeyBQb3N0U3luY2hyb25vdXNs
eSwgUG9zdEFzeW5jaHJvbm91c2x5IH07CkBAIC0xOTQsMTUgKzE4OSwxMiBAQCBwdWJsaWM6CiAg
ICAgdm9pZCBwb3N0Tm90aWZpY2F0aW9uKE5vZGUqLCBBWE5vdGlmaWNhdGlvbiwgUG9zdFRhcmdl
dCA9IFRhcmdldEVsZW1lbnQsIFBvc3RUeXBlID0gUG9zdEFzeW5jaHJvbm91c2x5KTsKICAgICB2
b2lkIHBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhO
b3RpZmljYXRpb24sIFBvc3RUYXJnZXQgPSBUYXJnZXRFbGVtZW50LCBQb3N0VHlwZSA9IFBvc3RB
c3luY2hyb25vdXNseSk7CiAKLSNpZm5kZWYgTkRFQlVHCi0gICAgdm9pZCBzaG93SW50ZW50KGNv
bnN0IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50Jik7Ci0jZW5kaWYKLQotICAgIHZvaWQgc2V0VGV4
dFNlbGVjdGlvbkludGVudChBWFRleHRTdGF0ZUNoYW5nZUludGVudCk7CisgICAgZW51bSBBWFRl
eHRDaGFuZ2UgeworICAgICAgICBBWFRleHRJbnNlcnRlZCwKKyAgICAgICAgQVhUZXh0RGVsZXRl
ZCwKKyAgICB9OwogCi0gICAgdm9pZCBwb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKE5v
ZGUqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9u
Jik7Ci0gICAgdm9pZCBwb3N0VGV4dFJlcGxhY2VtZW50Tm90aWZpY2F0aW9uKE5vZGUqLCBBWFRl
eHRFZGl0VHlwZSBkZWxldGlvblR5cGUsIGNvbnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIEFYVGV4
dEVkaXRUeXBlIGluc2VydGlvblR5cGUsIGNvbnN0IFN0cmluZyYgaW5zZXJ0ZWRUZXh0LCBjb25z
dCBWaXNpYmxlUG9zaXRpb24mKTsKLSAgICB2b2lkIHBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmlj
YXRpb24oTm9kZSosIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0
aW9uJik7CisgICAgdm9pZCBub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihOb2RlKiwgQVhUZXh0
Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgZW51bSBBWExv
YWRpbmdFdmVudCB7CiAgICAgICAgIEFYTG9hZGluZ1N0YXJ0ZWQsCkBAIC0yMjEsMjQgKzIxMywx
MiBAQCBwdWJsaWM6CiAgICAgQVhDb21wdXRlZE9iamVjdEF0dHJpYnV0ZUNhY2hlKiBjb21wdXRl
ZE9iamVjdEF0dHJpYnV0ZUNhY2hlKCkgeyByZXR1cm4gbV9jb21wdXRlZE9iamVjdEF0dHJpYnV0
ZUNhY2hlLmdldCgpOyB9CiAKICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdCB7IHJldHVy
biBtX2RvY3VtZW50OyB9Ci0KLSNpZiBQTEFURk9STShNQUMpCi0gICAgc3RhdGljIHZvaWQgc2V0
U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9uc0ZvclRlc3RzKGJvb2wgdmFsdWUpOwotI2VuZGlmCi0K
KyAgICAKIHByb3RlY3RlZDoKICAgICB2b2lkIHBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQVhOb3RpZmljYXRpb24pOwogICAgIHZvaWQgcGxhdGZvcm1IYW5k
bGVGb2N1c2VkVUlFbGVtZW50Q2hhbmdlZChOb2RlKiBvbGRGb2N1c2VkTm9kZSwgTm9kZSogbmV3
Rm9jdXNlZE5vZGUpOwogCi0jaWYgUExBVEZPUk0oQ09DT0EpCi0gICAgdm9pZCBwb3N0VGV4dFN0
YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCosIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJik7Ci0gICAgdm9pZCBw
b3N0VGV4dFN0YXRlQ2hhbmdlUGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVj
dCosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
KTsKLSAgICB2b2lkIHBvc3RUZXh0UmVwbGFjZW1lbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIEFYVGV4dEVk
aXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKTsKLSNlbHNlCi0g
ICAgc3RhdGljIEFYVGV4dENoYW5nZSB0ZXh0Q2hhbmdlRm9yRWRpdFR5cGUoQVhUZXh0RWRpdFR5
cGUpOwotICAgIHZvaWQgbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJik7Ci0j
ZW5kaWYKLQorICAgIHZvaWQgbm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nl
c3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0
cmluZyYpOwogICAgIHZvaWQgZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhMb2FkaW5nRXZlbnQpOwogICAgIHZvaWQgdGV4dENoYW5n
ZWQoQWNjZXNzaWJpbGl0eU9iamVjdCopOwogICAgIHZvaWQgbGFiZWxDaGFuZ2VkKEVsZW1lbnQq
KTsKQEAgLTI0OSw4ICsyMjksNiBAQCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBpc05vZGVJblVzZShO
b2RlKiBuKSB7IHJldHVybiBtX3RleHRNYXJrZXJOb2Rlcy5jb250YWlucyhuKTsgfQogCiBwcml2
YXRlOgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RXZWJBcmVhKCk7Ci0gICAgCiAgICAg
RG9jdW1lbnQmIG1fZG9jdW1lbnQ7CiAgICAgSGFzaE1hcDxBWElELCBSZWZQdHI8QWNjZXNzaWJp
bGl0eU9iamVjdD4+IG1fb2JqZWN0czsKICAgICBIYXNoTWFwPFJlbmRlck9iamVjdCosIEFYSUQ+
IG1fcmVuZGVyT2JqZWN0TWFwcGluZzsKQEAgLTI2NiwxMSArMjQ0LDYgQEAgcHJpdmF0ZToKICAg
ICBUaW1lciBtX25vdGlmaWNhdGlvblBvc3RUaW1lcjsKICAgICBWZWN0b3I8c3RkOjpwYWlyPFJl
ZlB0cjxBY2Nlc3NpYmlsaXR5T2JqZWN0PiwgQVhOb3RpZmljYXRpb24+PiBtX25vdGlmaWNhdGlv
bnNUb1Bvc3Q7CiAgICAgdm9pZCBub3RpZmljYXRpb25Qb3N0VGltZXJGaXJlZCgpOwotCi0gICAg
VGltZXIgbV9wYXNzd29yZE5vdGlmaWNhdGlvblBvc3RUaW1lcjsKLSAgICBWZWN0b3I8UmVmUHRy
PEFjY2Vzc2liaWxpdHlPYmplY3Q+PiBtX3Bhc3N3b3JkTm90aWZpY2F0aW9uc1RvUG9zdDsKLSAg
ICB2b2lkIHBhc3N3b3JkTm90aWZpY2F0aW9uUG9zdFRpbWVyRmlyZWQoKTsKLQogICAgIHZvaWQg
aGFuZGxlTWVudU9wZW5lZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVMaXZlUmVnaW9uQ3JlYXRl
ZChOb2RlKik7CiAgICAgdm9pZCBoYW5kbGVNZW51SXRlbVNlbGVjdGVkKE5vZGUqKTsKQEAgLTI3
OCwxMCArMjUxLDYgQEAgcHJpdmF0ZToKICAgICBzdGF0aWMgQWNjZXNzaWJpbGl0eU9iamVjdCog
Zm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KEhUTUxBcmVhRWxlbWVudCopOwogICAgIAogICAgIEFY
SUQgZ2V0QVhJRChBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7Ci0KLSAgICBib29sIGVucXVldWVQYXNz
d29yZFZhbHVlQ2hhbmdlTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqKTsKLQotICAg
IEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IG1fdGV4dFNlbGVjdGlvbkludGVudDsKIH07CiAKIGNs
YXNzIEFYQXR0cmlidXRlQ2FjaGVFbmFibGVyCkBAIC0zMzksOSArMzA4LDggQEAgaW5saW5lIHZv
aWQgQVhPYmplY3RDYWNoZTo6aGFuZGxlU2Nyb2xsYmFyVXBkYXRlKFNjcm9sbFZpZXcqKSB7IH0K
IGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OmhhbmRsZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIEVsZW1lbnQqKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6
OnJlY29tcHV0ZUlzSWdub3JlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2b2lkIEFYT2Jq
ZWN0Q2FjaGU6OmhhbmRsZVNjcm9sbGVkVG9BbmNob3IoY29uc3QgTm9kZSopIHsgfQotaW5saW5l
IHZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihOb2Rl
KiwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0K
LWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VOb3RpZmljYXRp
b24oTm9kZSosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9z
aXRpb24mKSB7IH0KLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0UmVwbGFjZW1l
bnROb3RpZmljYXRpb24oTm9kZSosIEFYVGV4dEVkaXRUeXBlLCBjb25zdCBTdHJpbmcmLCBBWFRl
eHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgY29uc3QgVmlzaWJsZVBvc2l0aW9uJikgeyB9Citp
bmxpbmUgdm9pZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihOb2Rl
KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgeyB9CitpbmxpbmUgdm9p
ZCBBWE9iamVjdENhY2hlOjpub2RlVGV4dENoYW5nZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vz
c2liaWxpdHlPYmplY3QqLCBBWFRleHRDaGFuZ2UsIHVuc2lnbmVkLCBjb25zdCBTdHJpbmcmKSB7
IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oQWNjZXNzaWJp
bGl0eU9iamVjdCosIERvY3VtZW50KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQsIFBvc3RU
eXBlKSB7IH0KIGlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oUmVu
ZGVyT2JqZWN0KiwgQVhOb3RpZmljYXRpb24sIFBvc3RUYXJnZXQsIFBvc3RUeXBlKSB7IH0KIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3ROb3RpZmljYXRpb24oTm9kZSosIEFYTm90aWZp
Y2F0aW9uLCBQb3N0VGFyZ2V0LCBQb3N0VHlwZSkgeyB9CkBAIC0zNTIsMTQgKzMyMCw2IEBAIGlu
bGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnJlbW92ZShOb2RlKikgeyB9CiBpbmxpbmUgdm9pZCBB
WE9iamVjdENhY2hlOjpyZW1vdmUoV2lkZ2V0KikgeyB9CiBpbmxpbmUgdm9pZCBBWE9iamVjdENh
Y2hlOjpzZWxlY3RlZENoaWxkcmVuQ2hhbmdlZChSZW5kZXJPYmplY3QqKSB7IH0KIGlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnNlbGVjdGVkQ2hpbGRyZW5DaGFuZ2VkKE5vZGUqKSB7IH0KLSNp
ZiBQTEFURk9STShDT0NPQSkKLWlubGluZSB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3Rh
dGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0
U3RhdGVDaGFuZ2VJbnRlbnQsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKSB7IH0KLWlubGluZSB2
b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlv
bihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIGNv
bnN0IFZpc2libGVQb3NpdGlvbiYpIHsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6cG9z
dFRleHRSZXBsYWNlbWVudFBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3Qq
LCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0
cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpIHsgfQotI2Vsc2UKLWlubGluZSBBWFRleHRD
aGFuZ2UgQVhPYmplY3RDYWNoZTo6dGV4dENoYW5nZUZvckVkaXRUeXBlKEFYVGV4dEVkaXRUeXBl
KSB7IHJldHVybiBBWFRleHRJbnNlcnRlZDsgfQotaW5saW5lIHZvaWQgQVhPYmplY3RDYWNoZTo6
bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0Kiwg
QVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikgeyB9Ci0jZW5kaWYKICNlbmRp
ZgogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1YzI2NGYx
NDdjZmM1NDU0MjcwYThmZTQzM2M2OWNhYTdlYjg2MTcuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BWFRl
eHRTdGF0ZUNoYW5nZUludGVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIEFYVGV4
dFN0YXRlQ2hhbmdlSW50ZW50X2gKLSNkZWZpbmUgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnRfaAot
Ci1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0gICAgCi1lbnVtIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZSB7
Ci0gICAgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93biwKLSAgICBBWFRleHRTdGF0ZUNoYW5n
ZVR5cGVFZGl0LAotICAgIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsCi0gICAg
QVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kCi19OwotCi1lbnVtIEFYVGV4dEVk
aXRUeXBlIHsKLSAgICBBWFRleHRFZGl0VHlwZVVua25vd24sCi0gICAgQVhUZXh0RWRpdFR5cGVE
ZWxldGUsIC8vIEdlbmVyaWMgdGV4dCBkZWxldGUKLSAgICBBWFRleHRFZGl0VHlwZUluc2VydCwg
Ly8gR2VuZXJpYyB0ZXh0IGluc2VydAotICAgIEFYVGV4dEVkaXRUeXBlVHlwaW5nLCAvLyBJbnNl
cnQgdmlhIHR5cGluZwotICAgIEFYVGV4dEVkaXRUeXBlRGljdGF0aW9uLCAvLyBJbnNlcnQgdmlh
IGRpY3RhdGlvbgotICAgIEFYVGV4dEVkaXRUeXBlQ3V0LCAvLyBEZWxldGUgdmlhIEN1dAotICAg
IEFYVGV4dEVkaXRUeXBlUGFzdGUgLy8gSW5zZXJ0IHZpYSBQYXN0ZQotfTsKLQotZW51bSBBWFRl
eHRTZWxlY3Rpb25EaXJlY3Rpb24gewotICAgIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblVua25v
d24sCi0gICAgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nLAotICAgIEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvbkVuZCwKLSAgICBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91
cywKLSAgICBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0LAotICAgIEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbkRpc2NvbnRpZ3VvdXMKLX07Ci0KLWVudW0gQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHkgewotICAgIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biwKLSAgICBBWFRl
eHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlciwKLSAgICBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eVdvcmQsCi0gICAgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lLAotICAgIEFY
VGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2UsCi0gICAgQVhUZXh0U2VsZWN0aW9uR3Jh
bnVsYXJpdHlQYXJhZ3JhcGgsCi0gICAgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQYWdlLAot
ICAgIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQsCi0gICAgQVhUZXh0U2VsZWN0
aW9uR3JhbnVsYXJpdHlBbGwgLy8gQWxsIGdyYW51bGFyaXR5IHJlcHJlc2VudHMgdGhlIGFjdGlv
biBvZiBzZWxlY3RpbmcgdGhlIHdob2xlIGRvY3VtZW50IGFzIGEgc2luZ2xlIGFjdGlvbi4gRXh0
ZW5kaW5nIHNlbGVjdGlvbiBieSBzb21lIG90aGVyIGdyYW51bGFyaXR5IHVudGlsIGl0IGVuY29t
cGFzc2VzIHRoZSB3aG9sZSBkb2N1bWVudCB3aWxsIG5vdCByZXN1bHQgaW4gYSBhbGwgZ3JhbnVs
YXJpdHkgbm90aWZpY2F0aW9uLgotfTsKLQotc3RydWN0IEFYVGV4dFNlbGVjdGlvbiB7Ci0gICAg
QVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uIGRpcmVjdGlvbjsKLSAgICBBWFRleHRTZWxlY3Rpb25H
cmFudWxhcml0eSBncmFudWxhcml0eTsKLX07Ci0KLXN0cnVjdCBBWFRleHRTdGF0ZUNoYW5nZUlu
dGVudCB7Ci0gICAgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIHR5cGU7Ci0gICAgdW5pb24gewotICAg
ICAgICBBWFRleHRTZWxlY3Rpb24gc2VsZWN0aW9uOwotICAgICAgICBBWFRleHRFZGl0VHlwZSBj
aGFuZ2U7Ci0gICAgfTsKLSAgICBib29sIGlzU3luY2hyb25pemluZyB7IGZhbHNlIH07Ci0KLSAg
ICBBWFRleHRTdGF0ZUNoYW5nZUludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGUgdHlwZSA9IEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24sIEFYVGV4dFNlbGVjdGlvbiBzZWxlY3Rpb24gPSBB
WFRleHRTZWxlY3Rpb24oKSkKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2VsZWN0
aW9uKHNlbGVjdGlvbikKLSAgICB7IH0KLQotICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KEFY
VGV4dEVkaXRUeXBlIGNoYW5nZSkKLSAgICAgICAgOiB0eXBlKEFYVGV4dFN0YXRlQ2hhbmdlVHlw
ZUVkaXQpCi0gICAgICAgICwgY2hhbmdlKGNoYW5nZSkKLSAgICB7IH0KLQotICAgIEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZSB0eXBlLCBib29sIGlzU3luY2hy
b25pemluZykKLSAgICAgICAgOiB0eXBlKHR5cGUpCi0gICAgICAgICwgc2VsZWN0aW9uKCkKLSAg
ICAgICAgLCBpc1N5bmNocm9uaXppbmcoaXNTeW5jaHJvbml6aW5nKQotICAgIHsKLSAgICAgICAg
QVNTRVJUKHR5cGUgPT0gQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSB8fCB0eXBl
ID09IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCk7Ci0gICAgfQotfTsKLQot
fQotCi0jZW5kaWYgLy8gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnRfaApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApp
bmRleCA0MzhlODUxNjkxZDczZGNjMDZkZDc1Mjc0MjgwMTFlMjQwMmYwZmUzLi5kOGQyNmRlYjBj
MDE3OGFiYWYzMGUxMDI2NDQyYmNkNWQyZmE1NDgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmNwcApAQCAtNTUy
LDI3ICs1NTIsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc1Bhc3N3b3JkRmll
bGQoKSBjb25zdAogICAgIHJldHVybiBpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpOwog
fQogCi1BY2Nlc3NpYmlsaXR5T2JqZWN0KiBBY2Nlc3NpYmlsaXR5Tm9kZU9iamVjdDo6cGFzc3dv
cmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKQotewotICAgIE5vZGUqIG5vZGUgPSB0
aGlzLT5ub2RlKCk7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQot
ICAgIGlmIChIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQgPSBub2RlLT50b0lucHV0RWxl
bWVudCgpKSB7Ci0gICAgICAgIGlmIChpbnB1dEVsZW1lbnQtPmlzUGFzc3dvcmRGaWVsZCgpKQot
ICAgICAgICAgICAgcmV0dXJuIHRoaXM7Ci0gICAgfQotCi0gICAgRWxlbWVudCogZWxlbWVudCA9
IG5vZGUtPnNoYWRvd0hvc3QoKTsKLSAgICBpZiAoIWVsZW1lbnQgfHwgIWlzPEhUTUxJbnB1dEVs
ZW1lbnQ+KGVsZW1lbnQpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIGlmIChBWE9i
amVjdENhY2hlKiBjYWNoZSA9IGF4T2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgcmV0dXJuIGNhY2hl
LT5nZXRPckNyZWF0ZShlbGVtZW50KTsKLQotICAgIHJldHVybiBudWxscHRyOwotfQotCiBib29s
IEFjY2Vzc2liaWxpdHlOb2RlT2JqZWN0Ojppc0lucHV0SW1hZ2UoKSBjb25zdAogewogICAgIE5v
ZGUqIG5vZGUgPSB0aGlzLT5ub2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlOb2RlT2JqZWN0LmgKaW5kZXggYTgyYmQ4MWZhMTAxMmZk
ZjE2ZTg4MDRmMWMwZjhkNGQ5ODMxZjUyMS4uM2U3NTcyZjNlMmY3YjM1MDNiYmU0Yzg3NmJhYzhi
ZTAwNTEzMDRlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5Tm9kZU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU5vZGVPYmplY3QuaApAQCAtODgsNyArODgsNiBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzTmF0aXZlSW1hZ2UoKSBjb25zdCBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IGJvb2wgaXNOYXRpdmVUZXh0Q29udHJvbCgpIGNvbnN0IG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
Ym9vbCBpc1Bhc3N3b3JkRmllbGQoKSBjb25zdCBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIEFjY2Vz
c2liaWxpdHlPYmplY3QqIHBhc3N3b3JkRmllbGRPckNvbnRhaW5pbmdQYXNzd29yZEZpZWxkKCkg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCBib29sIGlzUHJvZ3Jlc3NJbmRpY2F0b3IoKSBjb25zdCBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIGJvb2wgaXNTZWFyY2hGaWVsZCgpIGNvbnN0IG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgYm9vbCBpc1NsaWRlcigpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5k
ZXggY2IzMzgwOTE4MDIyNDJjNTI1N2MzMDc0NDI4YWViNDRhZjdiMTAxNS4uNWEyN2VhODBmMDA3
ODBlMDQ0NmI5ZGI5MTVhMTgwZGE1OTUyNDEzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0yNjQ2LDE3ICsyNjQ2
LDQgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZXRQcmV2ZW50S2V5Ym9hcmRET01FdmVu
dERpc3BhdGNoKGJvb2wgb24pCiB9CiAjZW5kaWYKIAotYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0
Ojppc0NvbnRhaW5lZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0Ci17Ci0gICAgTm9kZSogbm9kZSA9
IHRoaXMtPm5vZGUoKTsKLSAgICBpZiAoIW5vZGUpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAg
ICAKLSAgICBpZiAoYXJpYVJvbGVBdHRyaWJ1dGUoKSAhPSBVbmtub3duUm9sZSkKLSAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgRWxlbWVudCogZWxlbWVudCA9IG5vZGUtPnNoYWRvd0hvc3Qo
KTsKLSAgICByZXR1cm4gaXM8SFRNTElucHV0RWxlbWVudD4oZWxlbWVudCkgJiYgZG93bmNhc3Q8
SFRNTElucHV0RWxlbWVudD4oKmVsZW1lbnQpLmlzUGFzc3dvcmRGaWVsZCgpOwotfQotCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IDgxNmMzMTI5YTBiNWMzMDQ1MmJkNTg5M2ZjZWI2
MzA3NTJlNzRhN2IuLjM1ODZmMmFhODYzMTljNTEzNGQwNjFmNDZkNDI3M2I5MjQ2M2UxMGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5oCkBAIC00NjMsOCArNDYzLDYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc05hdGl2
ZUltYWdlKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KICAgICB2aXJ0dWFsIGJvb2wgaXNJbWFn
ZUJ1dHRvbigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9CiAgICAgdmlydHVhbCBib29sIGlzUGFz
c3dvcmRGaWVsZCgpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBpc0NvbnRhaW5l
ZEJ5UGFzc3dvcmRGaWVsZCgpIGNvbnN0OwotICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVj
dCogcGFzc3dvcmRGaWVsZE9yQ29udGFpbmluZ1Bhc3N3b3JkRmllbGQoKSB7IHJldHVybiBudWxs
cHRyOyB9CiAgICAgdmlydHVhbCBib29sIGlzTmF0aXZlVGV4dENvbnRyb2woKSBjb25zdCB7IHJl
dHVybiBmYWxzZTsgfQogICAgIHZpcnR1YWwgYm9vbCBpc1NlYXJjaEZpZWxkKCkgY29uc3QgeyBy
ZXR1cm4gZmFsc2U7IH0KICAgICBib29sIGlzV2ViQXJlYSgpIGNvbnN0IHsgcmV0dXJuIHJvbGVW
YWx1ZSgpID09IFdlYkFyZWFSb2xlOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nl
c3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAppbmRleCA1MGZkYWRm
ZTYzNmFiN2JlNzhjNzJiYTkzNmE4ZTMwNjY1YzNlNTM1Li5lOWQyYTUyYTdkNDc4Y2FhOWJmZmRk
NGI0YzYyNDZlZGJlMDM4MDVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmls
aXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKQEAgLTE0OTEsMTcgKzE0
OTEsMTQgQEAgUGxhaW5UZXh0UmFuZ2UgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c2VsZWN0
ZWRUZXh0UmFuZ2UoKSBjb25zdAogdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRT
ZWxlY3RlZFRleHRSYW5nZShjb25zdCBQbGFpblRleHRSYW5nZSYgcmFuZ2UpCiB7CiAgICAgaWYg
KGlzTmF0aXZlVGV4dENvbnRyb2woKSkgewotICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2Fj
aGUgPSBheE9iamVjdENhY2hlKCkpCi0gICAgICAgICAgICBjYWNoZS0+c2V0VGV4dFNlbGVjdGlv
bkludGVudChBWFRleHRTdGF0ZUNoYW5nZUludGVudChyYW5nZS5sZW5ndGggPyBBWFRleHRTdGF0
ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQgOiBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rp
b25Nb3ZlLCB0cnVlKSk7CiAgICAgICAgIEhUTUxUZXh0Rm9ybUNvbnRyb2xFbGVtZW50JiB0ZXh0
Q29udHJvbCA9IGRvd25jYXN0PFJlbmRlclRleHRDb250cm9sPigqbV9yZW5kZXJlcikudGV4dEZv
cm1Db250cm9sRWxlbWVudCgpOwogICAgICAgICB0ZXh0Q29udHJvbC5zZXRTZWxlY3Rpb25SYW5n
ZShyYW5nZS5zdGFydCwgcmFuZ2Uuc3RhcnQgKyByYW5nZS5sZW5ndGgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgTm9kZSogbm9kZSA9IG1fcmVuZGVyZXItPm5vZGUoKTsKLSAgICBW
aXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihQb3NpdGlvbihub2RlLCByYW5nZS5zdGFydCwg
UG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvciksIFBvc2l0aW9uKG5vZGUsIHJhbmdl
LnN0YXJ0ICsgcmFuZ2UubGVuZ3RoLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9y
KSwgRE9XTlNUUkVBTSk7Ci0gICAgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgbmV3SW50ZW50KHJh
bmdlLmxlbmd0aCA/IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCA6IEFYVGV4
dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUsIHRydWUpOwotICAgIG1fcmVuZGVyZXItPmZy
YW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rp
b246OmRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIG5ld0ludGVudCk7CisgICAgbV9yZW5k
ZXJlci0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihQ
b3NpdGlvbihub2RlLCByYW5nZS5zdGFydCwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFu
Y2hvciksCisgICAgICAgIFBvc2l0aW9uKG5vZGUsIHJhbmdlLnN0YXJ0ICsgcmFuZ2UubGVuZ3Ro
LCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKSwgRE9XTlNUUkVBTSkpOwogfQog
CiBVUkwgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6dXJsKCkgY29uc3QKQEAgLTE5NjYsMTYg
KzE5NjMsMTMgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzZXRTZWxlY3RlZFZp
c2libGVQb3NpdGlvblJhbmdlKGNvbnN0IFZpc2libGVQb3MKIHsKICAgICBpZiAocmFuZ2Uuc3Rh
cnQuaXNOdWxsKCkgfHwgcmFuZ2UuZW5kLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47Ci0KKyAg
ICAKICAgICAvLyBtYWtlIHNlbGVjdGlvbiBhbmQgdGVsbCB0aGUgZG9jdW1lbnQgdG8gdXNlIGl0
LiBpZiBpdCdzIHplcm8gbGVuZ3RoLCB0aGVuIG1vdmUgdG8gdGhhdCBwb3NpdGlvbgotICAgIGlm
IChyYW5nZS5zdGFydCA9PSByYW5nZS5lbmQpIHsKLSAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gYXhPYmplY3RDYWNoZSgpKQotICAgICAgICAgICAgY2FjaGUtPnNldFRleHRTZWxl
Y3Rpb25JbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBl
U2VsZWN0aW9uTW92ZSwgdHJ1ZSkpOworICAgIGlmIChyYW5nZS5zdGFydCA9PSByYW5nZS5lbmQp
CiAgICAgICAgIG1fcmVuZGVyZXItPmZyYW1lKCkuc2VsZWN0aW9uKCkubW92ZVRvKHJhbmdlLnN0
YXJ0LCBVc2VyVHJpZ2dlcmVkKTsKLSAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIFZpc2libGVT
ZWxlY3Rpb24gbmV3U2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5zdGFydCwgcmFu
Z2UuZW5kKTsKLSAgICAgICAgbV9yZW5kZXJlci0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24obmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9w
dGlvbnMoKSwgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2Vs
ZWN0aW9uRXh0ZW5kLCB0cnVlKSk7CisgICAgICAgIG1fcmVuZGVyZXItPmZyYW1lKCkuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbik7CiAgICAgfQogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlTY3JvbGxWaWV3LmgK
aW5kZXggMGM0NjRiYjA5NGMxYjhlMDZmMzI4ZDYwOTA4NzMwNDVjODgzMjk3ZS4uYzYyYzc1Mzky
ODE0M2U2Y2Q4NGY3YjE3ODliNzY1NzE2ODIwYTI2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuaApAQCAtNDMsOCAr
NDMsNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+QWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcoKTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoKEFjY2Vzc2liaWxpdHlEZXRhY2htZW50VHlwZSwgQVhP
YmplY3RDYWNoZSopIG92ZXJyaWRlOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogd2ViQXJl
YU9iamVjdCgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IEFjY2Vzc2liaWxpdHlT
Y3JvbGxWaWV3KFNjcm9sbFZpZXcqKTsKICAgICAKQEAgLTczLDYgKzcxLDcgQEAgcHJpdmF0ZToK
ICAgICB2aXJ0dWFsIEFjY2Vzc2liaWxpdHlPYmplY3QqIHBhcmVudE9iamVjdCgpIGNvbnN0IG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50T2JqZWN0SWZF
eGlzdHMoKSBjb25zdCBvdmVycmlkZTsKICAgICAKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiB3
ZWJBcmVhT2JqZWN0KCkgY29uc3Q7CiAgICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBm
aXJzdENoaWxkKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gd2ViQXJlYU9iamVjdCgpOyB9CiAg
ICAgQWNjZXNzaWJpbGl0eVNjcm9sbGJhciogYWRkQ2hpbGRTY3JvbGxiYXIoU2Nyb2xsYmFyKik7
CiAgICAgdm9pZCByZW1vdmVDaGlsZFNjcm9sbGJhcihBY2Nlc3NpYmlsaXR5T2JqZWN0Kik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2F0ay9BWE9iamVjdENhY2hl
QXRrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVB
dGsuY3BwCmluZGV4IGFlMjU2MGI4MWJlNDljMjk4MzczZjE2ODcwMDZiYjNjYWZmNGY0NGEuLjU4
NTJhMGYyN2QyZmYzZTQ0NzkyMmQ2YzY4MmQ3YzQ2OWM5ZGFmMWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvYXRrL0FYT2JqZWN0Q2FjaGVBdGsuY3BwCkBAIC0y
NjgsMTAgKzI2OCwxMCBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6Om5vZGVUZXh0Q2hhbmdlUGxhdGZv
cm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZQogICAgIC8vIFNlbGVjdCB0
aGUgcmlnaHQgc2lnbmFsIHRvIGJlIGVtaXR0ZWQKICAgICBDU3RyaW5nIGRldGFpbDsKICAgICBz
d2l0Y2ggKHRleHRDaGFuZ2UpIHsKLSAgICBjYXNlIEFYVGV4dEluc2VydGVkOgorICAgIGNhc2Ug
QVhPYmplY3RDYWNoZTo6QVhUZXh0SW5zZXJ0ZWQ6CiAgICAgICAgIGRldGFpbCA9ICJ0ZXh0LWlu
c2VydCI7CiAgICAgICAgIGJyZWFrOwotICAgIGNhc2UgQVhUZXh0RGVsZXRlZDoKKyAgICBjYXNl
IEFYT2JqZWN0Q2FjaGU6OkFYVGV4dERlbGV0ZWQ6CiAgICAgICAgIGRldGFpbCA9ICJ0ZXh0LXJl
bW92ZSI7CiAgICAgICAgIGJyZWFrOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvaW9zL0FYT2JqZWN0Q2FjaGVJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L2lvcy9BWE9iamVjdENhY2hlSU9TLm1tCmluZGV4IGI2MjMzNjk2ZTU5ZmNl
MWQ2YmNiNTMzNDJiOGEyNTcwYjczZWIzZjYuLjExOWUwYjAwM2NjNTU1NzY3N2MwMWY4MzQ5ODBl
YzE3NDM4MTIxMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9z
L0FYT2JqZWN0Q2FjaGVJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9p
b3MvQVhPYmplY3RDYWNoZUlPUy5tbQpAQCAtOTUsMTkgKzk1LDggQEAgdm9pZCBBWE9iamVjdENh
Y2hlOjpwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqLCBB
WE5vdGlmaWMKICAgICBbb2JqLT53cmFwcGVyKCkgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNh
dGlvbjpub3RpZmljYXRpb25TdHJpbmddOwogfQogCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RU
ZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBv
YmplY3QsIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJikK
K3ZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFuZ2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdlLCB1bnNpZ25lZCwgY29uc3QgU3RyaW5n
JikKIHsKLSAgICBwb3N0UGxhdGZvcm1Ob3RpZmljYXRpb24ob2JqZWN0LCBBWFNlbGVjdGVkVGV4
dENoYW5nZWQpOwotfQotCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYVGV4dEVk
aXRUeXBlLCBjb25zdCBTdHJpbmcmLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mKQotewotICAgIHBv
c3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihvYmplY3QsIEFYVmFsdWVDaGFuZ2VkKTsKLX0KLQotdm9p
ZCBBWE9iamVjdENhY2hlOjpwb3N0VGV4dFJlcGxhY2VtZW50UGxhdGZvcm1Ob3RpZmljYXRpb24o
QWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5n
JiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYp
Ci17Ci0gICAgcG9zdFBsYXRmb3JtTm90aWZpY2F0aW9uKG9iamVjdCwgQVhWYWx1ZUNoYW5nZWQp
OwogfQogCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OmZyYW1lTG9hZGluZ0V2ZW50UGxhdGZvcm1Ob3Rp
ZmljYXRpb24oQWNjZXNzaWJpbGl0eU9iamVjdCogYXhGcmFtZU9iamVjdCwgQVhMb2FkaW5nRXZl
bnQgbG9hZGluZ0V2ZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0
eS9tYWMvQVhPYmplY3RDYWNoZU1hYy5tbSBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
bWFjL0FYT2JqZWN0Q2FjaGVNYWMubW0KaW5kZXggYjBhNTU4NjU2ZWZlN2E2YTJiMjMyYzBmZjZj
N2QwYTFhYWViZDVjYS4uYjMwMGU3N2ZlMDlhZDY2OTIwZmY3ZDVlMzMyMDY4ZWNmYWRhMjVmOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvQVhPYmplY3RDYWNo
ZU1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9BWE9iamVjdENh
Y2hlTWFjLm1tCkBAIC00NCw1MyArNDQsNiBAQAogI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlMaXZl
UmVnaW9uQ3JlYXRlZE5vdGlmaWNhdGlvbiBAIkFYTGl2ZVJlZ2lvbkNyZWF0ZWQiCiAjZW5kaWYK
IAotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVDaGFuZ2VUeXBlS2V5Ci0jZGVmaW5l
IE5TQWNjZXNzaWJpbGl0eVRleHRTdGF0ZUNoYW5nZVR5cGVLZXkgQCJBWFRleHRTdGF0ZUNoYW5n
ZVR5cGUiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5
Ci0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRTdGF0ZVN5bmNLZXkgQCJBWFRleHRTdGF0ZVN5
bmMiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRTZWxlY3Rpb25EaXJlY3Rpb24gQCJBWFRl
eHRTZWxlY3Rpb25EaXJlY3Rpb24iCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlU
ZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dFNlbGVj
dGlvbkdyYW51bGFyaXR5IEAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiCi0jZW5kaWYKLQot
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0RWRpdFR5cGUKLSNkZWZpbmUgTlNBY2Nlc3NpYmls
aXR5VGV4dEVkaXRUeXBlIEAiQVhUZXh0RWRpdFR5cGUiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVzCi0jZGVmaW5lIE5TQWNjZXNzaWJpbGl0eVRleHRD
aGFuZ2VWYWx1ZXMgQCJBWFRleHRDaGFuZ2VWYWx1ZXMiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0Fj
Y2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWUKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4dENo
YW5nZVZhbHVlIEAiQVhUZXh0Q2hhbmdlVmFsdWUiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vz
c2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVMZW5ndGgKLSNkZWZpbmUgTlNBY2Nlc3NpYmlsaXR5VGV4
dENoYW5nZVZhbHVlTGVuZ3RoIEAiQVhUZXh0Q2hhbmdlVmFsdWVMZW5ndGgiCi0jZW5kaWYKLQot
I2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVTdGFydE1hcmtlcgotI2RlZmlu
ZSBOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVTdGFydE1hcmtlciBAIkFYVGV4dENoYW5n
ZVZhbHVlU3RhcnRNYXJrZXIiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlUZXh0
Q2hhbmdlRWxlbWVudAotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlRWxlbWVudCBA
IkFYVGV4dENoYW5nZUVsZW1lbnQiCi0jZW5kaWYKLQotI2lmbmRlZiBOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZQotI2RlZmluZSBOU0FjY2Vzc2liaWxpdHlT
ZWxlY3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZSBAIkFYU2VsZWN0ZWRUZXh0TWFya2VyUmFu
Z2UiCi0jZW5kaWYKLQotLy8gVmVyeSBsYXJnZSBzdHJpbmdzIGNhbiBuZWdhdGl2ZWx5IGltcGFj
dCB0aGUgcGVyZm9ybWFuY2Ugb2Ygbm90aWZpY2F0aW9ucywgc28gdGhpcyBsZW5ndGggaXMgY2hv
c2VuIHRvIHRyeSB0byBmaXQgYW4gYXZlcmFnZSBwYXJhZ3JhcGggb3IgbGluZSBvZiB0ZXh0LCBi
dXQgbm90IGFsbG93IHN0cmluZ3MgdG8gYmUgbGFyZ2UgZW5vdWdoIHRvIGh1cnQgcGVyZm9ybWFu
Y2UuCi1zdGF0aWMgY29uc3QgTlNVSW50ZWdlciBBWFZhbHVlQ2hhbmdlVHJ1bmNhdGlvbkxlbmd0
aCA9IDEwMDA7Ci0KIC8vIFRoZSBzaW1wbGUgQ29jb2EgY2FsbHMgaW4gdGhpcyBmaWxlIGRvbid0
IHRocm93IGV4Y2VwdGlvbnMuCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTEwNywyMSArNjAs
NiBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OmF0dGFjaFdyYXBwZXIoQWNjZXNzaWJpbGl0eU9iamVj
dCogb2JqKQogICAgIG9iai0+c2V0V3JhcHBlcih3cmFwcGVyLmdldCgpKTsKIH0KIAotc3RhdGlj
IEJPT0wgYXhTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zRm9yVGVzdHMgPSBmYWxzZTsKLQotdm9p
ZCBBWE9iamVjdENhY2hlOjpzZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zRm9yVGVzdHMoYm9v
bCB2YWx1ZSkKLXsKLSAgICBheFNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnNGb3JUZXN0cyA9IHZh
bHVlOwotfQotCi1zdGF0aWMgdm9pZCBBWFBvc3ROb3RpZmljYXRpb25XaXRoVXNlckluZm8oaWQg
b2JqZWN0LCBOU1N0cmluZyAqbm90aWZpY2F0aW9uLCBpZCB1c2VySW5mbykKLXsKLSAgICBOU0Fj
Y2Vzc2liaWxpdHlQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKG9iamVjdCwgbm90aWZpY2F0
aW9uLCB1c2VySW5mbyk7Ci0gICAgLy8gVG8gc2ltcGxpZnkgbW9uaXRvcmluZyBmb3Igbm90aWZp
Y2F0aW9ucyBpbiB0ZXN0cywgcmVwb3N0IGFzIGEgc2ltcGxlIE5TTm90aWZpY2F0aW9uIGluc3Rl
YWQgb2YgZm9yY2luZyB0ZXN0IGluZnJhc3R1Y3R1cmUgdG8gc2V0dXAgYW4gSVBDIGNsaWVudCBh
bmQgZG8gYWxsIHRoZSB0cmFuc2xhdGlvbiBiZXR3ZWVuIFdlYkNvcmUgdHlwZXMgYW5kIHBsYXRm
b3JtIHNwZWNpZmljIElQQyB0eXBlcyBhbmQgYmFjawotICAgIGlmIChVTkxJS0VMWShheFNob3Vs
ZFJlcG9zdE5vdGlmaWNhdGlvbnNGb3JUZXN0cykpCi0gICAgICAgIFtvYmplY3QgYWNjZXNzaWJp
bGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb24gdXNlckluZm86dXNlckluZm9dOwot
fQotCiB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIHsKICAgICBp
ZiAoIW9iaikKQEAgLTIxMSwxMzEgKzE0OSwxNSBAQCB2b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RQ
bGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmosIEFYTm90aWZpYwog
I3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZGVwcmVjYXRlZC1kZWNsYXJhdGlv
bnMiCiAgICAgQVNTRVJUKFtvYmotPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5SXNJZ25vcmVkXSB8
fCB0cnVlKTsKICNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLQotICAgIEFYUG9zdE5vdGlm
aWNhdGlvbldpdGhVc2VySW5mbyhvYmotPndyYXBwZXIoKSwgbWFjTm90aWZpY2F0aW9uLCBuaWwp
OwotfQotCi12b2lkIEFYT2JqZWN0Q2FjaGU6OnBvc3RUZXh0U3RhdGVDaGFuZ2VQbGF0Zm9ybU5v
dGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50IGludGVudCwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uKQotewotICAg
IGlmICghb2JqZWN0KQotICAgICAgICBvYmplY3QgPSByb290V2ViQXJlYSgpOwotCi0gICAgaWYg
KCFvYmplY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKnVz
ZXJJbmZvID0gW1tOU011dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjVd
OwotICAgIGlmIChpbnRlbnQuaXNTeW5jaHJvbml6aW5nKQotICAgICAgICB1c2VySW5mb1tOU0Fj
Y2Vzc2liaWxpdHlUZXh0U3RhdGVTeW5jS2V5XSA9IEBZRVM7Ci0gICAgaWYgKGludGVudC50eXBl
ICE9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVVua25vd24pIHsKLSAgICAgICAgdXNlckluZm9bTlNB
Y2Nlc3NpYmlsaXR5VGV4dFN0YXRlQ2hhbmdlVHlwZUtleV0gPSBAKGludGVudC50eXBlKTsKLSAg
ICAgICAgc3dpdGNoIChpbnRlbnQudHlwZSkgewotICAgICAgICBjYXNlIEFYVGV4dFN0YXRlQ2hh
bmdlVHlwZVNlbGVjdGlvbk1vdmU6Ci0gICAgICAgIGNhc2UgQVhUZXh0U3RhdGVDaGFuZ2VUeXBl
U2VsZWN0aW9uRXh0ZW5kOgotICAgICAgICAgICAgdXNlckluZm9bTlNBY2Nlc3NpYmlsaXR5VGV4
dFNlbGVjdGlvbkRpcmVjdGlvbl0gPSBAKGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uKTsKLSAg
ICAgICAgICAgIHN3aXRjaCAoaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24pIHsKLSAgICAgICAg
ICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uVW5rbm93bjoKLSAgICAgICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5u
aW5nOgotICAgICAgICAgICAgY2FzZSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQ6Ci0gICAg
ICAgICAgICBjYXNlIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzOgotICAgICAgICAg
ICAgY2FzZSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0OgotICAgICAgICAgICAgICAgIHVz
ZXJJbmZvW05TQWNjZXNzaWJpbGl0eVRleHRTZWxlY3Rpb25HcmFudWxhcml0eV0gPSBAKGludGVu
dC5zZWxlY3Rpb24uZ3JhbnVsYXJpdHkpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzOgotICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAg
ICAgIGNhc2UgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlVW5rbm93bjoKLSAgICAgICAgY2FzZSBBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVFZGl0OgotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAg
ICB9Ci0gICAgaWYgKCFzZWxlY3Rpb24uaXNOb25lKCkpIHsKLSAgICAgICAgaWYgKGlkIHRleHRN
YXJrZXJSYW5nZSA9IFtvYmplY3QtPndyYXBwZXIoKSB0ZXh0TWFya2VyUmFuZ2VGcm9tVmlzaWJs
ZVBvc2l0aW9uczpzZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCkgZW5kUG9zaXRpb246c2VsZWN0aW9u
LnZpc2libGVFbmQoKV0pCi0gICAgICAgICAgICB1c2VySW5mb1tOU0FjY2Vzc2liaWxpdHlTZWxl
Y3RlZFRleHRNYXJrZXJSYW5nZUF0dHJpYnV0ZV0gPSB0ZXh0TWFya2VyUmFuZ2U7Ci0gICAgfQot
Ci0gICAgaWYgKGlkIHdyYXBwZXIgPSBvYmplY3QtPndyYXBwZXIoKSkKLSAgICAgICAgdXNlcklu
Zm9bTlNBY2Nlc3NpYmlsaXR5VGV4dENoYW5nZUVsZW1lbnRdID0gd3JhcHBlcjsKLQotICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIHdlYkFyZWEgPSByb290V2ViQXJlYSgpOwotICAgIEFYUG9zdE5v
dGlmaWNhdGlvbldpdGhVc2VySW5mbyh3ZWJBcmVhLT53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKLSAgICBBWFBvc3RO
b3RpZmljYXRpb25XaXRoVXNlckluZm8ob2JqZWN0LT53cmFwcGVyKCksIE5TQWNjZXNzaWJpbGl0
eVNlbGVjdGVkVGV4dENoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKLSAgICBbdXNlcklu
Zm8gcmVsZWFzZV07Ci19Ci0KLXN0YXRpYyBOU0RpY3Rpb25hcnkgKnRleHRSZXBsYWNlbWVudENo
YW5nZURpY3Rpb25hcnkoQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0LCBBWFRleHRFZGl0VHlw
ZSB0eXBlLCBjb25zdCBTdHJpbmcmIHN0cmluZywgY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBwb3Np
dGlvbikKLXsKLSAgICBOU1N0cmluZyAqdGV4dCA9IChOU1N0cmluZyAqKXN0cmluZzsKLSAgICBO
U1VJbnRlZ2VyIGxlbmd0aCA9IFt0ZXh0IGxlbmd0aF07Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAg
ICAgIHJldHVybiBuaWw7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqY2hhbmdlID0gW1tOU011
dGFibGVEaWN0aW9uYXJ5IGFsbG9jXSBpbml0V2l0aENhcGFjaXR5OjRdOwotICAgIGNoYW5nZVtO
U0FjY2Vzc2liaWxpdHlUZXh0RWRpdFR5cGVdID0gQCh0eXBlKTsKLSAgICBpZiAobGVuZ3RoID4g
QVhWYWx1ZUNoYW5nZVRydW5jYXRpb25MZW5ndGgpIHsKLSAgICAgICAgY2hhbmdlW05TQWNjZXNz
aWJpbGl0eVRleHRDaGFuZ2VWYWx1ZUxlbmd0aF0gPSBAKGxlbmd0aCk7Ci0gICAgICAgIHRleHQg
PSBbdGV4dCBzdWJzdHJpbmdUb0luZGV4OkFYVmFsdWVDaGFuZ2VUcnVuY2F0aW9uTGVuZ3RoXTsK
LSAgICB9Ci0gICAgY2hhbmdlW05TQWNjZXNzaWJpbGl0eVRleHRDaGFuZ2VWYWx1ZV0gPSB0ZXh0
OwotICAgIGlmIChwb3NpdGlvbi5pc05vdE51bGwoKSkgewotICAgICAgICBpZiAoaWQgdGV4dE1h
cmtlciA9IFtvYmplY3QtPndyYXBwZXIoKSB0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0aW9uOnBv
c2l0aW9uXSkKLSAgICAgICAgICAgIGNoYW5nZVtOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFs
dWVTdGFydE1hcmtlcl0gPSB0ZXh0TWFya2VyOwotICAgIH0KLSAgICByZXR1cm4gW2NoYW5nZSBh
dXRvcmVsZWFzZV07Ci19Ci0KLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRTdGF0ZUNoYW5n
ZVBsYXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQVhUZXh0
RWRpdFR5cGUgdHlwZSwgY29uc3QgU3RyaW5nJiB0ZXh0LCBjb25zdCBWaXNpYmxlUG9zaXRpb24m
IHBvc2l0aW9uKQotewotICAgIGlmICghb2JqZWN0KQotICAgICAgICBvYmplY3QgPSByb290V2Vi
QXJlYSgpOwotCi0gICAgaWYgKCFvYmplY3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIGlmICgh
dGV4dC5sZW5ndGgoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgTlNNdXRhYmxlRGljdGlvbmFy
eSAqdXNlckluZm8gPSBbW05TTXV0YWJsZURpY3Rpb25hcnkgYWxsb2NdIGluaXRXaXRoQ2FwYWNp
dHk6M107Ci0gICAgdXNlckluZm9bTlNBY2Nlc3NpYmlsaXR5VGV4dFN0YXRlQ2hhbmdlVHlwZUtl
eV0gPSBAKEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQpOwotCi0gICAgaWYgKE5TRGljdGlvbmFy
eSAqY2hhbmdlID0gdGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeShvYmplY3QsIHR5cGUs
IHRleHQsIHBvc2l0aW9uKSkKLSAgICAgICAgdXNlckluZm9bTlNBY2Nlc3NpYmlsaXR5VGV4dENo
YW5nZVZhbHVlc10gPSBAW2NoYW5nZV07Ci0KLSAgICBpZiAoaWQgd3JhcHBlciA9IG9iamVjdC0+
d3JhcHBlcigpKQotICAgICAgICB1c2VySW5mb1tOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlRWxl
bWVudF0gPSB3cmFwcGVyOwotCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogd2ViQXJlYSA9IHJv
b3RXZWJBcmVhKCk7Ci0gICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKHdlYkFyZWEt
PndyYXBwZXIoKSwgTlNBY2Nlc3NpYmlsaXR5VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2Vy
SW5mbyk7Ci0gICAgQVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKG9iamVjdC0+d3JhcHBl
cigpLCBOU0FjY2Vzc2liaWxpdHlWYWx1ZUNoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsK
LSAgICBbdXNlckluZm8gcmVsZWFzZV07CisgICAgCisgICAgTlNBY2Nlc3NpYmlsaXR5UG9zdE5v
dGlmaWNhdGlvbihvYmotPndyYXBwZXIoKSwgbWFjTm90aWZpY2F0aW9uKTsKKyAgICAKKyAgICAv
LyBVc2VkIGJ5IERSVCB0byBrbm93IHdoZW4gbm90aWZpY2F0aW9ucyBhcmUgcG9zdGVkLgorICAg
IFtvYmotPndyYXBwZXIoKSBhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOm1hY05vdGlm
aWNhdGlvbl07CiB9CiAKLXZvaWQgQVhPYmplY3RDYWNoZTo6cG9zdFRleHRSZXBsYWNlbWVudFBs
YXRmb3JtTm90aWZpY2F0aW9uKEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdCwgQVhUZXh0RWRp
dFR5cGUgZGVsZXRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGRlbGV0ZWRUZXh0LCBBWFRleHRFZGl0
VHlwZSBpbnNlcnRpb25UeXBlLCBjb25zdCBTdHJpbmcmIGluc2VydGVkVGV4dCwgY29uc3QgVmlz
aWJsZVBvc2l0aW9uJiBwb3NpdGlvbikKK3ZvaWQgQVhPYmplY3RDYWNoZTo6bm9kZVRleHRDaGFu
Z2VQbGF0Zm9ybU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiwgQVhUZXh0Q2hhbmdl
LCB1bnNpZ25lZCwgY29uc3QgU3RyaW5nJikKIHsKLSAgICBpZiAoIW9iamVjdCkKLSAgICAgICAg
b2JqZWN0ID0gcm9vdFdlYkFyZWEoKTsKLQotICAgIGlmICghb2JqZWN0KQotICAgICAgICByZXR1
cm47Ci0KLSAgICBOU011dGFibGVEaWN0aW9uYXJ5ICp1c2VySW5mbyA9IFtbTlNNdXRhYmxlRGlj
dGlvbmFyeSBhbGxvY10gaW5pdFdpdGhDYXBhY2l0eTo0XTsKLSAgICB1c2VySW5mb1tOU0FjY2Vz
c2liaWxpdHlUZXh0U3RhdGVDaGFuZ2VUeXBlS2V5XSA9IEAoQVhUZXh0U3RhdGVDaGFuZ2VUeXBl
RWRpdCk7Ci0KLSAgICBOU011dGFibGVBcnJheSAqY2hhbmdlcyA9IFtbTlNNdXRhYmxlQXJyYXkg
YWxsb2NdIGluaXRXaXRoQ2FwYWNpdHk6Ml07Ci0gICAgaWYgKE5TRGljdGlvbmFyeSAqY2hhbmdl
ID0gdGV4dFJlcGxhY2VtZW50Q2hhbmdlRGljdGlvbmFyeShvYmplY3QsIGRlbGV0aW9uVHlwZSwg
ZGVsZXRlZFRleHQsIHBvc2l0aW9uKSkKLSAgICAgICAgW2NoYW5nZXMgYWRkT2JqZWN0OmNoYW5n
ZV07Ci0gICAgaWYgKE5TRGljdGlvbmFyeSAqY2hhbmdlID0gdGV4dFJlcGxhY2VtZW50Q2hhbmdl
RGljdGlvbmFyeShvYmplY3QsIGluc2VydGlvblR5cGUsIGluc2VydGVkVGV4dCwgcG9zaXRpb24p
KQotICAgICAgICBbY2hhbmdlcyBhZGRPYmplY3Q6Y2hhbmdlXTsKLSAgICB1c2VySW5mb1tOU0Fj
Y2Vzc2liaWxpdHlUZXh0Q2hhbmdlVmFsdWVzXSA9IGNoYW5nZXM7Ci0gICAgW2NoYW5nZXMgcmVs
ZWFzZV07Ci0KLSAgICBpZiAoaWQgd3JhcHBlciA9IG9iamVjdC0+d3JhcHBlcigpKQotICAgICAg
ICB1c2VySW5mb1tOU0FjY2Vzc2liaWxpdHlUZXh0Q2hhbmdlRWxlbWVudF0gPSB3cmFwcGVyOwot
Ci0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogd2ViQXJlYSA9IHJvb3RXZWJBcmVhKCk7Ci0gICAg
QVhQb3N0Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKHdlYkFyZWEtPndyYXBwZXIoKSwgTlNBY2Nl
c3NpYmlsaXR5VmFsdWVDaGFuZ2VkTm90aWZpY2F0aW9uLCB1c2VySW5mbyk7Ci0gICAgQVhQb3N0
Tm90aWZpY2F0aW9uV2l0aFVzZXJJbmZvKG9iamVjdC0+d3JhcHBlcigpLCBOU0FjY2Vzc2liaWxp
dHlWYWx1ZUNoYW5nZWROb3RpZmljYXRpb24sIHVzZXJJbmZvKTsKLSAgICBbdXNlckluZm8gcmVs
ZWFzZV07CiB9CiAKIHZvaWQgQVhPYmplY3RDYWNoZTo6ZnJhbWVMb2FkaW5nRXZlbnRQbGF0Zm9y
bU5vdGlmaWNhdGlvbihBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheEZyYW1lT2JqZWN0LCBBWExvYWRp
bmdFdmVudCBsb2FkaW5nRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2UuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5oCmluZGV4IGI5MzQxOGExNmVlZjRkMGU0YmNlMjcyOTE1NGViNTBmMTU5MjIyMGMuLjVlMDZj
MzU4NTc5NzZmMjlhMDBkOWQ2ZWIwYjU0N2Y5YjgwMzE4OTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFz
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQmFzZS5oCkBAIC01Niw5ICs1Niw4IEBAIGNsYXNzIFZpc2libGVQb3Np
dGlvbjsKIC0gKE5TU3RyaW5nICopYXJpYUxhbmRtYXJrUm9sZURlc2NyaXB0aW9uOwogCiAtIChp
ZClhdHRhY2htZW50VmlldzsKLS8vIFVzZWQgdG8gaW5mb3JtIGFuIGVsZW1lbnQgd2hlbiBhIG5v
dGlmaWNhdGlvbiBpcyBwb3N0ZWQgZm9yIGl0LiBVc2VkIGJ5IHRlc3RzLgorLy8gVXNlZCB0byBp
bmZvcm0gYW4gZWxlbWVudCB3aGVuIGEgbm90aWZpY2F0aW9uIGlzIHBvc3RlZCBmb3IgaXQuIFVz
ZWQgYnkgRFJULgogLSAodm9pZClhY2Nlc3NpYmlsaXR5UG9zdGVkTm90aWZpY2F0aW9uOihOU1N0
cmluZyAqKW5vdGlmaWNhdGlvbk5hbWU7Ci0tICh2b2lkKWFjY2Vzc2liaWxpdHlQb3N0ZWROb3Rp
ZmljYXRpb246KE5TU3RyaW5nICopbm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzooTlNEaWN0aW9u
YXJ5ICopdXNlckluZm87CiAKIC0gKENHUGF0aFJlZiljb252ZXJ0UGF0aFRvU2NyZWVuU3BhY2U6
KFdlYkNvcmU6OlBhdGggJilwYXRoOwogLSAoQ0dQb2ludCljb252ZXJ0UG9pbnRUb1NjcmVlblNw
YWNlOihXZWJDb3JlOjpGbG9hdFBvaW50ICYpcG9pbnQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckJhc2Uu
bW0gYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckJhc2UubW0KaW5kZXggNzdlMzk0OTZhZTQzOWM5YTdiMmViZmFkZjZiNGRmNmQ5
YjcwNzhiOS4uNWRkZmMzYWIzNDcwODE5NDA1MzFjM2ZlNWUzZDM4MWIwZjUzYWUzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJCYXNlLm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFj
L1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQmFzZS5tbQpAQCAtMzgzLDY5ICszODMsMTMg
QEAgc3RhdGljIEJPT0wgYWNjZXNzaWJpbGl0eVNob3VsZFJlcG9zdE5vdGlmaWNhdGlvbnM7CiAr
ICh2b2lkKWFjY2Vzc2liaWxpdHlTZXRTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zOihCT09MKXJl
cG9zdAogewogICAgIGFjY2Vzc2liaWxpdHlTaG91bGRSZXBvc3ROb3RpZmljYXRpb25zID0gcmVw
b3N0OwotI2lmIFBMQVRGT1JNKE1BQykKLSAgICBBWE9iamVjdENhY2hlOjpzZXRTaG91bGRSZXBv
c3ROb3RpZmljYXRpb25zRm9yVGVzdHMocmVwb3N0KTsKLSNlbmRpZgogfQogCiAtICh2b2lkKWFj
Y2Vzc2liaWxpdHlQb3N0ZWROb3RpZmljYXRpb246KE5TU3RyaW5nICopbm90aWZpY2F0aW9uTmFt
ZQogewotICAgIGlmIChhY2Nlc3NpYmlsaXR5U2hvdWxkUmVwb3N0Tm90aWZpY2F0aW9ucykKLSAg
ICAgICAgW3NlbGYgYWNjZXNzaWJpbGl0eVBvc3RlZE5vdGlmaWNhdGlvbjpub3RpZmljYXRpb25O
YW1lIHVzZXJJbmZvOm5pbF07Ci19Ci0KLXN0YXRpYyBOU0FycmF5ICphcnJheVJlbW92aW5nTm9u
SlNPTlR5cGVzKE5TQXJyYXkgKmFycmF5KQotewotICAgIEFTU0VSVChbYXJyYXkgaXNLaW5kT2ZD
bGFzczpbTlNBcnJheSBjbGFzc11dKTsKLSAgICBOU011dGFibGVBcnJheSAqbXV0YWJsZUFycmF5
ID0gW2FycmF5IG11dGFibGVDb3B5XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBb
bXV0YWJsZUFycmF5IGNvdW50XTspIHsKLSAgICAgICAgaWQgdmFsdWUgPSBtdXRhYmxlQXJyYXlb
aV07Ci0gICAgICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNz
XV0pCi0gICAgICAgICAgICBbbXV0YWJsZUFycmF5IHJlcGxhY2VPYmplY3RBdEluZGV4Omkgd2l0
aE9iamVjdDpkaWN0aW9uYXJ5UmVtb3ZpbmdOb25KU09OVHlwZXModmFsdWUpXTsKLSAgICAgICAg
ZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAg
ICAgIFttdXRhYmxlQXJyYXkgcmVwbGFjZU9iamVjdEF0SW5kZXg6aSB3aXRoT2JqZWN0OmFycmF5
UmVtb3ZpbmdOb25KU09OVHlwZXModmFsdWUpXTsKLSAgICAgICAgZWxzZSBpZiAoIShbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNOdW1iZXIgY2xhc3NdXSkpIHsKLSAgICAgICAgICAgIFttdXRhYmxlQXJyYXkgcmVtb3ZlT2Jq
ZWN0QXRJbmRleDppXTsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9Ci0gICAgICAg
IGkrKzsKLSAgICB9Ci0gICAgcmV0dXJuIFttdXRhYmxlQXJyYXkgYXV0b3JlbGVhc2VdOwotfQot
Ci1zdGF0aWMgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5UmVtb3ZpbmdOb25KU09OVHlwZXMoTlNE
aWN0aW9uYXJ5ICpkaWN0aW9uYXJ5KQotewotICAgIEFTU0VSVChbZGljdGlvbmFyeSBpc0tpbmRP
ZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSk7Ci0gICAgTlNNdXRhYmxlRGljdGlvbmFyeSAq
bXV0YWJsZURpY3Rpb25hcnkgPSBbZGljdGlvbmFyeSBtdXRhYmxlQ29weV07Ci0gICAgZm9yIChO
U1N0cmluZyAqa2V5IGluIGRpY3Rpb25hcnkpIHsKLSAgICAgICAgaWQgdmFsdWUgPSBkaWN0aW9u
YXJ5W2tleV07Ci0gICAgICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5
IGNsYXNzXV0pCi0gICAgICAgICAgICBtdXRhYmxlRGljdGlvbmFyeVtrZXldID0gZGljdGlvbmFy
eVJlbW92aW5nTm9uSlNPTlR5cGVzKHZhbHVlKTsKLSAgICAgICAgZWxzZSBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgICAgIG11dGFibGVEaWN0aW9u
YXJ5W2tleV0gPSBhcnJheVJlbW92aW5nTm9uSlNPTlR5cGVzKHZhbHVlKTsKLSAgICAgICAgZWxz
ZSBpZiAoIShbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkpCi0gICAgICAgICAgICBbbXV0YWJsZURp
Y3Rpb25hcnkgcmVtb3ZlT2JqZWN0Rm9yS2V5OmtleV07Ci0gICAgfQotICAgIHJldHVybiBbbXV0
YWJsZURpY3Rpb25hcnkgYXV0b3JlbGVhc2VdOwotfQotCi0tICh2b2lkKWFjY2Vzc2liaWxpdHlQ
b3N0ZWROb3RpZmljYXRpb246KE5TU3RyaW5nICopbm90aWZpY2F0aW9uTmFtZSB1c2VySW5mbzoo
TlNEaWN0aW9uYXJ5ICopdXNlckluZm8KLXsKICAgICBpZiAoYWNjZXNzaWJpbGl0eVNob3VsZFJl
cG9zdE5vdGlmaWNhdGlvbnMpIHsKLSAgICAgICAgQVNTRVJUKG5vdGlmaWNhdGlvbk5hbWUpOwot
ICAgICAgICBOU0RpY3Rpb25hcnkgKmluZm8gPSBuaWw7Ci0gICAgICAgIGlmICh1c2VySW5mbykg
ewotICAgICAgICAgICAgTlNEYXRhICp1c2VySW5mb0RhdGEgPSBbTlNKU09OU2VyaWFsaXphdGlv
biBkYXRhV2l0aEpTT05PYmplY3Q6ZGljdGlvbmFyeVJlbW92aW5nTm9uSlNPTlR5cGVzKHVzZXJJ
bmZvKSBvcHRpb25zOihOU0pTT05Xcml0aW5nT3B0aW9ucykwIGVycm9yOm5pbF07Ci0gICAgICAg
ICAgICBpZiAodXNlckluZm9EYXRhKSB7Ci0gICAgICAgICAgICAgICAgTlNTdHJpbmcgKnVzZXJJ
bmZvU3RyaW5nID0gW1tOU1N0cmluZyBhbGxvY10gaW5pdFdpdGhEYXRhOnVzZXJJbmZvRGF0YSBl
bmNvZGluZzpOU1VURjhTdHJpbmdFbmNvZGluZ107Ci0gICAgICAgICAgICAgICAgaWYgKHVzZXJJ
bmZvU3RyaW5nKQotICAgICAgICAgICAgICAgICAgICBpbmZvID0gQHtAIm5vdGlmaWNhdGlvbk5h
bWUiIDogbm90aWZpY2F0aW9uTmFtZSwgQCJ1c2VySW5mbyIgOiB1c2VySW5mb1N0cmluZ307Ci0g
ICAgICAgICAgICAgICAgW3VzZXJJbmZvU3RyaW5nIHJlbGVhc2VdOwotICAgICAgICAgICAgfQot
ICAgICAgICB9Ci0gICAgICAgIGlmICghaW5mbykKLSAgICAgICAgICAgIGluZm8gPSBAe0Aibm90
aWZpY2F0aW9uTmFtZSIgOiBub3RpZmljYXRpb25OYW1lfTsKLSAgICAgICAgW1tOU05vdGlmaWNh
dGlvbkNlbnRlciBkZWZhdWx0Q2VudGVyXSBwb3N0Tm90aWZpY2F0aW9uTmFtZTpAIkFYRFJUTm90
aWZpY2F0aW9uIiBvYmplY3Q6c2VsZiB1c2VySW5mbzppbmZvXTsKKyAgICAgICAgTlNEaWN0aW9u
YXJ5KiB1c2VySW5mbyA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3RzQW5kS2V5
czpub3RpZmljYXRpb25OYW1lLCBAIm5vdGlmaWNhdGlvbk5hbWUiLCBuaWxdOworICAgICAgICBb
W05TTm90aWZpY2F0aW9uQ2VudGVyIGRlZmF1bHRDZW50ZXJdIHBvc3ROb3RpZmljYXRpb25OYW1l
OkAiQVhEUlROb3RpZmljYXRpb24iIG9iamVjdDpzZWxmIHVzZXJJbmZvOnVzZXJJbmZvXTsKICAg
ICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dl
YkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5oCmluZGV4IDFmMGVj
YjFmNTQ5N2U3NWVjZmU1YzU3NjcwMTdlNWZiODU4NmQyZDcuLjM4YzVjZDBjOTljZWVmYTFkNjI4
ZWJkNjEwOWFkYTdjZTViYTZmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJN
YWMuaApAQCAtMzMsOSArMzMsNiBAQAogCiBAaW50ZXJmYWNlIFdlYkFjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyIDogV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJCYXNlCiAKLS0gKGlkKXRl
eHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zOihjb25zdCBXZWJDb3JlOjpWaXNpYmxl
UG9zaXRpb24mKXN0YXJ0UG9zaXRpb24gZW5kUG9zaXRpb246KGNvbnN0IFdlYkNvcmU6OlZpc2li
bGVQb3NpdGlvbiYpZW5kUG9zaXRpb247Ci0tIChpZCl0ZXh0TWFya2VyRm9yVmlzaWJsZVBvc2l0
aW9uOihjb25zdCBXZWJDb3JlOjpWaXNpYmxlUG9zaXRpb24mKXZpc2libGVQb3M7Ci0KIEBlbmQK
IAogI2VuZGlmIC8vIFdlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyX2gKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KaW5kZXggODIxMTAxZGU1OGJjZTJhOWM3YTRkYjRi
M2NjYTQ4NmVjZWRlNzgyMi4uZmFjZDMzYjE0Yjk3MzRjOTJhOWU0YjBkYzJiYmJjZWE1M2FlZDcz
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9tYWMvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9tYWMvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJNYWMubW0KQEAgLTExMzYsMTQg
KzExMzYsMTQgQEAgc3RhdGljIE5TU3RyaW5nKiBuc1N0cmluZ0ZvclJlcGxhY2VkTm9kZShOb2Rl
KiByZXBsYWNlZE5vZGUpCiAgICAgcmV0dXJuIFthdHRyU3RyaW5nIGF1dG9yZWxlYXNlXTsKIH0K
IAotc3RhdGljIGlkIHRleHRNYXJrZXJSYW5nZUZyb21WaXNpYmxlUG9zaXRpb25zKEFYT2JqZWN0
Q2FjaGUgKmNhY2hlLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mIHN0YXJ0UG9zaXRpb24sIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYgZW5kUG9zaXRpb24pCitzdGF0aWMgaWQgdGV4dE1hcmtlclJhbmdl
RnJvbVZpc2libGVQb3NpdGlvbnMoQVhPYmplY3RDYWNoZSAqY2FjaGUsIFZpc2libGVQb3NpdGlv
biBzdGFydFBvc2l0aW9uLCBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRpb24pCiB7CiAgICAgaWQg
c3RhcnRUZXh0TWFya2VyID0gdGV4dE1hcmtlckZvclZpc2libGVQb3NpdGlvbihjYWNoZSwgc3Rh
cnRQb3NpdGlvbik7CiAgICAgaWQgZW5kVGV4dE1hcmtlciA9IHRleHRNYXJrZXJGb3JWaXNpYmxl
UG9zaXRpb24oY2FjaGUsIGVuZFBvc2l0aW9uKTsKICAgICByZXR1cm4gdGV4dE1hcmtlclJhbmdl
RnJvbU1hcmtlcnMoc3RhcnRUZXh0TWFya2VyLCBlbmRUZXh0TWFya2VyKTsKIH0KIAotLSAoaWQp
dGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6KGNvbnN0IFZpc2libGVQb3NpdGlv
biYpc3RhcnRQb3NpdGlvbiBlbmRQb3NpdGlvbjooY29uc3QgVmlzaWJsZVBvc2l0aW9uJillbmRQ
b3NpdGlvbgorLSAoaWQpdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlvbnM6KFZpc2li
bGVQb3NpdGlvbilzdGFydFBvc2l0aW9uIGVuZFBvc2l0aW9uOihWaXNpYmxlUG9zaXRpb24pZW5k
UG9zaXRpb24KIHsKICAgICByZXR1cm4gdGV4dE1hcmtlclJhbmdlRnJvbVZpc2libGVQb3NpdGlv
bnMobV9vYmplY3QtPmF4T2JqZWN0Q2FjaGUoKSwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24p
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAppbmRl
eCBjZTc0ZjBkZjBkNGFmNjU1YThkODM1MDAyYjY1OGM0ODhiYmRiMjQyLi4xZGViNGRiMDI1MTk5
ZGUwZDg4MTdiYTBiMTM3NWVjNmQ0OWJjYWIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0FwcGVuZE5vZGVDb21tYW5kLmNwcApAQCAtMzAsMTMgKzMwLDEyIEBACiAjaW5jbHVkZSAiRG9j
dW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIuaCIKICNpbmNsdWRl
ICJSZW5kZXJFbGVtZW50LmgiCi0jaW5jbHVkZSAiVGV4dC5oIgogI2luY2x1ZGUgImh0bWxlZGl0
aW5nLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQXBwZW5kTm9kZUNvbW1hbmQ6OkFwcGVu
ZE5vZGVDb21tYW5kKFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50LCBQYXNzUmVmUHRy
PE5vZGU+IG5vZGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IFNpbXBsZUVkaXRD
b21tYW5kKHBhcmVudC0+ZG9jdW1lbnQoKSwgZWRpdGluZ0FjdGlvbikKK0FwcGVuZE5vZGVDb21t
YW5kOjpBcHBlbmROb2RlQ29tbWFuZChQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCwg
UGFzc1JlZlB0cjxOb2RlPiBub2RlKQorICAgIDogU2ltcGxlRWRpdENvbW1hbmQocGFyZW50LT5k
b2N1bWVudCgpKQogICAgICwgbV9wYXJlbnQocGFyZW50KQogICAgICwgbV9ub2RlKG5vZGUpCiB7
CkBAIC00NywyMyArNDYsMTUgQEAgQXBwZW5kTm9kZUNvbW1hbmQ6OkFwcGVuZE5vZGVDb21tYW5k
KFBhc3NSZWZQdHI8Q29udGFpbmVyTm9kZT4gcGFyZW50LCBQYXNzUmVmUHQKICAgICBBU1NFUlQo
bV9wYXJlbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSB8fCAhbV9wYXJlbnQtPnJlbmRlcmVyKCkpOwog
fQogCi1zdGF0aWMgdm9pZCBzZW5kQVhUZXh0Q2hhbmdlZElnbm9yaW5nTGluZUJyZWFrcyhOb2Rl
KiBub2RlLCBBWFRleHRFZGl0VHlwZSB0eXBlKQorc3RhdGljIHZvaWQgc2VuZEFYVGV4dENoYW5n
ZWRJZ25vcmluZ0xpbmVCcmVha3MoTm9kZSogbm9kZSwgQVhPYmplY3RDYWNoZTo6QVhUZXh0Q2hh
bmdlIHRleHRDaGFuZ2UpCiB7Ci0gICAgaWYgKCFub2RlKQotICAgICAgICByZXR1cm47Ci0KLSAg
ICBpZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCi0gICAgICAgIHJl
dHVybjsKLQotICAgIFN0cmluZyB0ZXh0ID0gbm9kZS0+bm9kZVZhbHVlKCk7CisgICAgU3RyaW5n
IG5vZGVWYWx1ZSA9IG5vZGUtPm5vZGVWYWx1ZSgpOwogICAgIC8vIERvbid0IGNvbnNpZGVyIGxp
bmVicmVha3MgaW4gdGhpcyBjb21tYW5kCi0gICAgaWYgKHRleHQgPT0gIlxuIikKKyAgICBpZiAo
bm9kZVZhbHVlID09ICJcbiIpCiAgICAgICByZXR1cm47CiAKLSAgICBpZiAoQVhPYmplY3RDYWNo
ZSogY2FjaGUgPSBub2RlLT5kb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKSB7Ci0g
ICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gaXM8VGV4dD4obm9kZSkgPyBQb3NpdGlvbihkb3du
Y2FzdDxUZXh0Pihub2RlKSwgMCkgOiBjcmVhdGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obm9kZSwg
MCk7Ci0gICAgICAgIGNhY2hlLT5wb3N0VGV4dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKG5vZGUs
IHR5cGUsIHRleHQsIFZpc2libGVQb3NpdGlvbihwb3NpdGlvbikpOwotICAgIH0KKyAgICBpZiAo
QVhPYmplY3RDYWNoZSogY2FjaGUgPSBub2RlLT5kb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpKQorICAgICAgICBjYWNoZS0+bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obm9kZSwg
dGV4dENoYW5nZSwgMCwgbm9kZVZhbHVlKTsKIH0KIAogdm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6
ZG9BcHBseSgpCkBAIC03MywxNiArNjQsMTggQEAgdm9pZCBBcHBlbmROb2RlQ29tbWFuZDo6ZG9B
cHBseSgpCiAKICAgICBtX3BhcmVudC0+YXBwZW5kQ2hpbGQobV9ub2RlLmdldCgpLCBJR05PUkVf
RVhDRVBUSU9OKTsKIAotICAgIHNlbmRBWFRleHRDaGFuZ2VkSWdub3JpbmdMaW5lQnJlYWtzKG1f
bm9kZS5nZXQoKSwgYXBwbHlFZGl0VHlwZSgpKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNj
ZXNzaWJpbGl0eUVuYWJsZWQoKSkKKyAgICAgICAgc2VuZEFYVGV4dENoYW5nZWRJZ25vcmluZ0xp
bmVCcmVha3MobV9ub2RlLmdldCgpLCBBWE9iamVjdENhY2hlOjpBWFRleHRJbnNlcnRlZCk7CiB9
CiAKIHZvaWQgQXBwZW5kTm9kZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiB7CiAgICAgaWYgKCFtX3Bh
cmVudC0+aGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICByZXR1cm47Ci0KKyAgICAgICAgCiAg
ICAgLy8gTmVlZCB0byBub3RpZnkgdGhpcyBiZWZvcmUgYWN0dWFsbHkgZGVsZXRpbmcgdGhlIHRl
eHQKLSAgICBzZW5kQVhUZXh0Q2hhbmdlZElnbm9yaW5nTGluZUJyZWFrcyhtX25vZGUuZ2V0KCks
IHVuYXBwbHlFZGl0VHlwZSgpKTsKKyAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0
eUVuYWJsZWQoKSkKKyAgICAgICAgc2VuZEFYVGV4dENoYW5nZWRJZ25vcmluZ0xpbmVCcmVha3Mo
bV9ub2RlLmdldCgpLCBBWE9iamVjdENhY2hlOjpBWFRleHREZWxldGVkKTsKIAogICAgIG1fbm9k
ZS0+cmVtb3ZlKElHTk9SRV9FWENFUFRJT04pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9BcHBlbmROb2RlQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9B
cHBlbmROb2RlQ29tbWFuZC5oCmluZGV4IGY3ODI5NzViODkyMTUwYWUzNmQyOWE2YmJlY2E5ZjFk
YzEzMDdjMzEuLmQ2NGIwNGU4ZTA2YTAxYWM3NzJlNGNjMGFlMjNjMWYzYzhkMjFkMmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwZW5kTm9kZUNvbW1hbmQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGVuZE5vZGVDb21tYW5kLmgKQEAgLTMyLDEzICszMiwx
MyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFwcGVuZE5vZGVDb21tYW5kIDogcHVi
bGljIFNpbXBsZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEFwcGVuZE5v
ZGVDb21tYW5kPiBjcmVhdGUoUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQsIFBhc3NS
ZWZQdHI8Tm9kZT4gbm9kZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQorICAgIHN0YXRpYyBS
ZWY8QXBwZW5kTm9kZUNvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHBh
cmVudCwgUGFzc1JlZlB0cjxOb2RlPiBub2RlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgQXBwZW5kTm9kZUNvbW1hbmQocGFyZW50LCBub2RlLCBlZGl0aW5nQWN0aW9uKSk7
CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IEFwcGVuZE5vZGVDb21tYW5kKHBhcmVudCwg
bm9kZSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBcHBlbmROb2RlQ29tbWFuZChQYXNzUmVm
UHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCwgUGFzc1JlZlB0cjxOb2RlPiwgRWRpdEFjdGlvbik7
CisgICAgQXBwZW5kTm9kZUNvbW1hbmQoUGFzc1JlZlB0cjxDb250YWluZXJOb2RlPiBwYXJlbnQs
IFBhc3NSZWZQdHI8Tm9kZT4pOwogCiAgICAgdmlydHVhbCB2b2lkIGRvQXBwbHkoKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZG9VbmFwcGx5KCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuY3BwCmluZGV4IGNhYjg4Mjg4OWM1ZTk5NDQ4
NzBlMjIxY2ViODQzZDkxY2IyODQ1ZjMuLjdjNDE4YzI3MWMwNTljNDNhODFhYTQwN2ZiNzBjMjI2
MjA3N2Q2OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQu
Y3BwCkBAIC0xMjMsOCArMTIzLDkgQEAgUmVmUHRyPEhUTUxFbGVtZW50PiBjcmVhdGVTdHlsZVNw
YW5FbGVtZW50KERvY3VtZW50JiBkb2N1bWVudCkKIH0KIAogQXBwbHlTdHlsZUNvbW1hbmQ6OkFw
cGx5U3R5bGVDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgRWRpdGluZ1N0eWxlKiBz
dHlsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uLCBFUHJvcGVydHlMZXZlbCBwcm9wZXJ0eUxl
dmVsKQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQsIGVkaXRpbmdBY3Rpb24p
CisgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAsIG1fc3R5bGUoc3R5
bGUtPmNvcHkoKSkKKyAgICAsIG1fZWRpdGluZ0FjdGlvbihlZGl0aW5nQWN0aW9uKQogICAgICwg
bV9wcm9wZXJ0eUxldmVsKHByb3BlcnR5TGV2ZWwpCiAgICAgLCBtX3N0YXJ0KGVuZGluZ1NlbGVj
dGlvbigpLnN0YXJ0KCkuZG93bnN0cmVhbSgpKQogICAgICwgbV9lbmQoZW5kaW5nU2VsZWN0aW9u
KCkuZW5kKCkudXBzdHJlYW0oKSkKQEAgLTEzNSw4ICsxMzYsOSBAQCBBcHBseVN0eWxlQ29tbWFu
ZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5
bGUqIHN0eQogfQogCiBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1l
bnQmIGRvY3VtZW50LCBjb25zdCBFZGl0aW5nU3R5bGUqIHN0eWxlLCBjb25zdCBQb3NpdGlvbiYg
c3RhcnQsIGNvbnN0IFBvc2l0aW9uJiBlbmQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbiwgRVBy
b3BlcnR5TGV2ZWwgcHJvcGVydHlMZXZlbCkKLSAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRv
Y3VtZW50LCBlZGl0aW5nQWN0aW9uKQorICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1l
bnQpCiAgICAgLCBtX3N0eWxlKHN0eWxlLT5jb3B5KCkpCisgICAgLCBtX2VkaXRpbmdBY3Rpb24o
ZWRpdGluZ0FjdGlvbikKICAgICAsIG1fcHJvcGVydHlMZXZlbChwcm9wZXJ0eUxldmVsKQogICAg
ICwgbV9zdGFydChzdGFydCkKICAgICAsIG1fZW5kKGVuZCkKQEAgLTE0Nyw4ICsxNDksOSBAQCBB
cHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBj
b25zdCBFZGl0aW5nU3R5bGUqIHN0eQogfQogCiBBcHBseVN0eWxlQ29tbWFuZDo6QXBwbHlTdHls
ZUNvbW1hbmQoUGFzc1JlZlB0cjxFbGVtZW50PiBlbGVtZW50LCBib29sIHJlbW92ZU9ubHksIEVk
aXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGVsZW1l
bnQtPmRvY3VtZW50KCksIGVkaXRpbmdBY3Rpb24pCisgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFu
ZChlbGVtZW50LT5kb2N1bWVudCgpKQogICAgICwgbV9zdHlsZShFZGl0aW5nU3R5bGU6OmNyZWF0
ZSgpKQorICAgICwgbV9lZGl0aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24pCiAgICAgLCBtX3Byb3Bl
cnR5TGV2ZWwoUHJvcGVydHlEZWZhdWx0KQogICAgICwgbV9zdGFydChlbmRpbmdTZWxlY3Rpb24o
KS5zdGFydCgpLmRvd25zdHJlYW0oKSkKICAgICAsIG1fZW5kKGVuZGluZ1NlbGVjdGlvbigpLmVu
ZCgpLnVwc3RyZWFtKCkpCkBAIC0xNjAsOCArMTYzLDkgQEAgQXBwbHlTdHlsZUNvbW1hbmQ6OkFw
cGx5U3R5bGVDb21tYW5kKFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCwgYm9vbCByZW1vdmVP
bmwKIH0KIAogQXBwbHlTdHlsZUNvbW1hbmQ6OkFwcGx5U3R5bGVDb21tYW5kKERvY3VtZW50JiBk
b2N1bWVudCwgY29uc3QgRWRpdGluZ1N0eWxlKiBzdHlsZSwgSXNJbmxpbmVFbGVtZW50VG9SZW1v
dmVGdW5jdGlvbiBpc0lubGluZUVsZW1lbnRUb1JlbW92ZUZ1bmN0aW9uLCBFZGl0QWN0aW9uIGVk
aXRpbmdBY3Rpb24pCi0gICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCwgZWRpdGlu
Z0FjdGlvbikKKyAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogICAgICwgbV9z
dHlsZShzdHlsZS0+Y29weSgpKQorICAgICwgbV9lZGl0aW5nQWN0aW9uKGVkaXRpbmdBY3Rpb24p
CiAgICAgLCBtX3Byb3BlcnR5TGV2ZWwoUHJvcGVydHlEZWZhdWx0KQogICAgICwgbV9zdGFydChl
bmRpbmdTZWxlY3Rpb24oKS5zdGFydCgpLmRvd25zdHJlYW0oKSkKICAgICAsIG1fZW5kKGVuZGlu
Z1NlbGVjdGlvbigpLmVuZCgpLnVwc3RyZWFtKCkpCkBAIC0yMjIsNiArMjI2LDExIEBAIHZvaWQg
QXBwbHlTdHlsZUNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIH0KIH0KIAorRWRpdEFjdGlvbiBBcHBs
eVN0eWxlQ29tbWFuZDo6ZWRpdGluZ0FjdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fZWRp
dGluZ0FjdGlvbjsKK30KKwogdm9pZCBBcHBseVN0eWxlQ29tbWFuZDo6YXBwbHlCbG9ja1N0eWxl
KEVkaXRpbmdTdHlsZSAqc3R5bGUpCiB7CiAgICAgLy8gdXBkYXRlIGRvY3VtZW50IGxheW91dCBv
bmNlIGJlZm9yZSByZW1vdmluZyBzdHlsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvQXBwbHlTdHlsZUNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQXBwbHlT
dHlsZUNvbW1hbmQuaAppbmRleCA5ZGJlODcxZGE1OTU2ODgzYmJkODllOWNiNjMwODA5OTkxODNi
M2YyLi5lOTllMzZhODdmZGY4YzAwYjRjOWExMjJmZDVhOTk3NjZmNTJmNjJkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FwcGx5U3R5bGVDb21tYW5kLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9BcHBseVN0eWxlQ29tbWFuZC5oCkBAIC03Miw2ICs3Miw3IEBAIHBy
aXZhdGU6CiAgICAgQXBwbHlTdHlsZUNvbW1hbmQoRG9jdW1lbnQmLCBjb25zdCBFZGl0aW5nU3R5
bGUqLCBib29sICgqaXNJbmxpbmVFbGVtZW50VG9SZW1vdmUpKGNvbnN0IEVsZW1lbnQqKSwgRWRp
dEFjdGlvbik7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOworICAgIHZp
cnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGU7CiAKICAgICAv
LyBzdHlsZS1yZW1vdmFsIGhlbHBlcnMKICAgICBib29sIGlzU3R5bGVkSW5saW5lRWxlbWVudFRv
UmVtb3ZlKEVsZW1lbnQqKSBjb25zdDsKQEAgLTEyMSw2ICsxMjIsNyBAQCBwcml2YXRlOgogICAg
IFBvc2l0aW9uIGVuZFBvc2l0aW9uKCk7CiAKICAgICBSZWZQdHI8RWRpdGluZ1N0eWxlPiBtX3N0
eWxlOworICAgIEVkaXRBY3Rpb24gbV9lZGl0aW5nQWN0aW9uOwogICAgIEVQcm9wZXJ0eUxldmVs
IG1fcHJvcGVydHlMZXZlbDsKICAgICBQb3NpdGlvbiBtX3N0YXJ0OwogICAgIFBvc2l0aW9uIG1f
ZW5kOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3NpdGVFZGl0Q29t
bWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNw
cAppbmRleCBiNTQxZWExMjM4MjQ2NjMyYjI2NWM1ODFkZDRiNmRmYzAwNWY4OTAzLi44NDYxZWU3
ZWM0OGQ5NTk5MjlhMmY1ZDdmN2IzODcwZDAzNmYwNmNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmNwcApAQCAtNTgsOCArNTgsNiBAQAogI2lu
Y2x1ZGUgIlJlbmRlckJsb2NrRmxvdy5oIgogI2luY2x1ZGUgIlJlbmRlclRleHQuaCIKICNpbmNs
dWRlICJSZW5kZXJlZERvY3VtZW50TWFya2VyLmgiCi0jaW5jbHVkZSAiUmVwbGFjZURlbGV0ZUZy
b21UZXh0Tm9kZUNvbW1hbmQuaCIKLSNpbmNsdWRlICJSZXBsYWNlSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZC5oIgogI2luY2x1ZGUgIlJlcGxhY2VOb2RlV2l0aFNwYW5Db21tYW5kLmgiCiAjaW5j
bHVkZSAiUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuaCIKICNpbmNsdWRlICJTY29wZWRFdmVudFF1
ZXVlLmgiCkBAIC0xNjQsMzEgKzE2MiwxMyBAQCB2b2lkIEVkaXRDb21tYW5kQ29tcG9zaXRpb246
OmdldE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+JiBub2RlcykKIH0KICNlbmRpZgogCi1B
WFRleHRFZGl0VHlwZSBFZGl0Q29tbWFuZENvbXBvc2l0aW9uOjp1bmFwcGx5RWRpdFR5cGUoKSBj
b25zdAotewotICAgIHN3aXRjaCAoZWRpdGluZ0FjdGlvbigpKSB7Ci0gICAgY2FzZSBFZGl0QWN0
aW9uQ3V0OgotICAgIGNhc2UgRWRpdEFjdGlvbkRlbGV0ZToKLSAgICAgICAgcmV0dXJuIEFYVGV4
dEVkaXRUeXBlSW5zZXJ0OwotICAgIGNhc2UgRWRpdEFjdGlvbkRpY3RhdGlvbjoKLSAgICBjYXNl
IEVkaXRBY3Rpb25JbnNlcnQ6Ci0gICAgY2FzZSBFZGl0QWN0aW9uUGFzdGU6Ci0gICAgY2FzZSBF
ZGl0QWN0aW9uVHlwaW5nOgotICAgICAgICByZXR1cm4gQVhUZXh0RWRpdFR5cGVEZWxldGU7Ci0g
ICAgLy8gSW5jbHVkZSBkZWZhdWx0IGNhc2UgZm9yIHVuaGFuZGxlZCBFZGl0QWN0aW9uIGNhc2Vz
LgotICAgIGRlZmF1bHQ6Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gQVhUZXh0
RWRpdFR5cGVVbmtub3duOwotfQotCiB2b2lkIGFwcGx5Q29tbWFuZChQYXNzUmVmUHRyPENvbXBv
c2l0ZUVkaXRDb21tYW5kPiBjb21tYW5kKQogewogICAgIGNvbW1hbmQtPmFwcGx5KCk7CiB9CiAK
LUNvbXBvc2l0ZUVkaXRDb21tYW5kOjpDb21wb3NpdGVFZGl0Q29tbWFuZChEb2N1bWVudCYgZG9j
dW1lbnQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IEVkaXRDb21tYW5kKGRvY3Vt
ZW50LCBlZGl0aW5nQWN0aW9uKQorQ29tcG9zaXRlRWRpdENvbW1hbmQ6OkNvbXBvc2l0ZUVkaXRD
b21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkKKyAgICA6IEVkaXRDb21tYW5kKGRvY3VtZW50KQog
ewogfQogCkBAIC0yMDcsNyArMTg3LDYgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6YXBw
bHkoKQogICAgICAgICBjYXNlIEVkaXRBY3Rpb25TZXRXcml0aW5nRGlyZWN0aW9uOgogICAgICAg
ICBjYXNlIEVkaXRBY3Rpb25DdXQ6CiAgICAgICAgIGNhc2UgRWRpdEFjdGlvblVuc3BlY2lmaWVk
OgotICAgICAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnQ6CiAgICAgICAgIGNhc2UgRWRpdEFjdGlv
bkRlbGV0ZToKICAgICAgICAgY2FzZSBFZGl0QWN0aW9uRGljdGF0aW9uOgogICAgICAgICAgICAg
YnJlYWs7CkBAIC0zMTcsNyArMjk2LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVt
b3ZlU3R5bGVkRWxlbWVudChQYXNzUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQpCiAKIHZvaWQgQ29t
cG9zaXRlRWRpdENvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvcihib29sIHVzZURlZmF1
bHRQYXJhZ3JhcGhFbGVtZW50LCBib29sIHBhc3RlQmxvY2txdXRvZUludG9VbnF1b3RlZEFyZWEp
CiB7Ci0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9y
Q29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50LCBw
YXN0ZUJsb2NrcXV0b2VJbnRvVW5xdW90ZWRBcmVhLCBlZGl0aW5nQWN0aW9uKCkpKTsKKyAgICBh
cHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpj
cmVhdGUoZG9jdW1lbnQoKSwgdXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQsIHBhc3RlQmxvY2tx
dXRvZUludG9VbnF1b3RlZEFyZWEpKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6
aW5zZXJ0TGluZUJyZWFrKCkKQEAgLTM0Myw3ICszMjIsNyBAQCBib29sIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjppc1JlbW92YWJsZUJsb2NrKGNvbnN0IE5vZGUqIG5vZGUpCiAKIHZvaWQgQ29tcG9z
aXRlRWRpdENvbW1hbmQ6Omluc2VydE5vZGVCZWZvcmUoUGFzc1JlZlB0cjxOb2RlPiBpbnNlcnRD
aGlsZCwgUGFzc1JlZlB0cjxOb2RlPiByZWZDaGlsZCwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3
YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCiB7Ci0gICAg
YXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmNyZWF0ZShp
bnNlcnRDaGlsZCwgcmVmQ2hpbGQsIHNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxl
LCBlZGl0aW5nQWN0aW9uKCkpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRO
b2RlQmVmb3JlQ29tbWFuZDo6Y3JlYXRlKGluc2VydENoaWxkLCByZWZDaGlsZCwgc2hvdWxkQXNz
dW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6aW5zZXJ0Tm9kZUFmdGVyKFBhc3NSZWZQdHI8Tm9kZT4gaW5zZXJ0Q2hpbGQsIFBhc3NS
ZWZQdHI8Tm9kZT4gcmVmQ2hpbGQpCkBAIC0zOTQsNyArMzczLDcgQEAgdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6aW5zZXJ0Tm9kZUF0KFBhc3NSZWZQdHI8Tm9kZT4gaW5zZXJ0Q2hpbGQsIGNv
bnN0IFBvc2kKIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmFwcGVuZE5vZGUoUGFzc1JlZlB0
cjxOb2RlPiBub2RlLCBQYXNzUmVmUHRyPENvbnRhaW5lck5vZGU+IHBhcmVudCkKIHsKICAgICBB
U1NFUlQoY2FuSGF2ZUNoaWxkcmVuRm9yRWRpdGluZyhwYXJlbnQuZ2V0KCkpKTsKLSAgICBhcHBs
eUNvbW1hbmRUb0NvbXBvc2l0ZShBcHBlbmROb2RlQ29tbWFuZDo6Y3JlYXRlKHBhcmVudCwgbm9k
ZSwgZWRpdGluZ0FjdGlvbigpKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoQXBwZW5k
Tm9kZUNvbW1hbmQ6OmNyZWF0ZShwYXJlbnQsIG5vZGUpKTsKIH0KIAogdm9pZCBDb21wb3NpdGVF
ZGl0Q29tbWFuZDo6cmVtb3ZlQ2hpbGRyZW5JblJhbmdlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwg
dW5zaWduZWQgZnJvbSwgdW5zaWduZWQgdG8pCkBAIC00MTgsNyArMzk3LDcgQEAgdm9pZCBDb21w
b3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFNob3Vs
ZEFzc3VtZUNvbnRlbnQKIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFuZDo6cmVtb3ZlTm9kZVBy
ZXNlcnZpbmdDaGlsZHJlbihQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFNob3VsZEFzc3VtZUNvbnRl
bnRJc0Fsd2F5c0VkaXRhYmxlIHNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKQog
ewotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRy
ZW5Db21tYW5kOjpjcmVhdGUobm9kZSwgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFi
bGUsIGVkaXRpbmdBY3Rpb24oKSkpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlbW92
ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kOjpjcmVhdGUobm9kZSwgc2hvdWxkQXNzdW1l
Q29udGVudElzQWx3YXlzRWRpdGFibGUpKTsKIH0KIAogdm9pZCBDb21wb3NpdGVFZGl0Q29tbWFu
ZDo6cmVtb3ZlTm9kZUFuZFBydW5lQW5jZXN0b3JzKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSkKQEAg
LTU0NiwyMSArNTI1LDIwIEBAIHZvaWQgQ29tcG9zaXRlRWRpdENvbW1hbmQ6OmlucHV0VGV4dChj
b25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0CiB2b2lkIENvbXBvc2l0
ZUVkaXRDb21tYW5kOjppbnNlcnRUZXh0SW50b05vZGUoUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1
bnNpZ25lZCBvZmZzZXQsIGNvbnN0IFN0cmluZyYgdGV4dCkKIHsKICAgICBpZiAoIXRleHQuaXNF
bXB0eSgpKQotICAgICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kOjpjcmVhdGUobm9kZSwgb2Zmc2V0LCB0ZXh0LCBlZGl0aW5nQWN0aW9uKCkpKTsK
KyAgICAgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0SW50b1RleHROb2RlQ29tbWFu
ZDo6Y3JlYXRlKG5vZGUsIG9mZnNldCwgdGV4dCkpOwogfQogCiB2b2lkIENvbXBvc2l0ZUVkaXRD
b21tYW5kOjpkZWxldGVUZXh0RnJvbU5vZGUoUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50KQogewotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRl
KERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmNyZWF0ZShub2RlLCBvZmZzZXQsIGNvdW50LCBl
ZGl0aW5nQWN0aW9uKCkpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShEZWxldGVGcm9t
VGV4dE5vZGVDb21tYW5kOjpjcmVhdGUobm9kZSwgb2Zmc2V0LCBjb3VudCkpOwogfQogCiB2b2lk
IENvbXBvc2l0ZUVkaXRDb21tYW5kOjpyZXBsYWNlVGV4dEluTm9kZShQYXNzUmVmUHRyPFRleHQ+
IHBycE5vZGUsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIGNvbnN0IFN0cmluZyYg
cmVwbGFjZW1lbnRUZXh0KQogewogICAgIFJlZlB0cjxUZXh0PiBub2RlKHBycE5vZGUpOwotICAg
IFJlZlB0cjxEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kPiBkZWxldGVDb21tYW5kID0gUmVwbGFj
ZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmNyZWF0ZShXVEY6Om1vdmUobm9kZSksIG9mZnNl
dCwgY291bnQpOwotICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKGRlbGV0ZUNvbW1hbmQpOwor
ICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OmNy
ZWF0ZShub2RlLCBvZmZzZXQsIGNvdW50KSk7CiAgICAgaWYgKCFyZXBsYWNlbWVudFRleHQuaXNF
bXB0eSgpKQotICAgICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZDo6Y3JlYXRlKFdURjo6bW92ZShub2RlKSwgb2Zmc2V0LCByZXBsYWNl
bWVudFRleHQsIGRlbGV0ZUNvbW1hbmQtPmRlbGV0ZWRUZXh0KCksIGVkaXRpbmdBY3Rpb24oKSkp
OworICAgICAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRJbnRvVGV4dE5vZGVDb21t
YW5kOjpjcmVhdGUobm9kZSwgb2Zmc2V0LCByZXBsYWNlbWVudFRleHQpKTsKIH0KIAogUG9zaXRp
b24gQ29tcG9zaXRlRWRpdENvbW1hbmQ6OnJlcGxhY2VTZWxlY3RlZFRleHRJbk5vZGUoY29uc3Qg
U3RyaW5nJiB0ZXh0KQpAQCAtMTMxMSw3ICsxMjg5LDcgQEAgdm9pZCBDb21wb3NpdGVFZGl0Q29t
bWFuZDo6bW92ZVBhcmFncmFwaHMoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydE9mUGFyYWdy
YXAKICAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Q29tbWFuZE9wdGlvbnMgb3B0aW9ucyA9
IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudCB8IFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpNb3ZpbmdQYXJhZ3JhcGg7CiAgICAgaWYgKCFwcmVzZXJ2ZVN0eWxlKQog
ICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpNYXRjaFN0eWxlOwot
ICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVh
dGUoZG9jdW1lbnQoKSwgV1RGOjptb3ZlKGZyYWdtZW50KSwgb3B0aW9ucykpOworICAgIGFwcGx5
Q29tbWFuZFRvQ29tcG9zaXRlKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1l
bnQoKSwgZnJhZ21lbnQsIG9wdGlvbnMpKTsKIAogICAgIGZyYW1lKCkuZWRpdG9yKCkubWFya01p
c3NwZWxsaW5nc0FuZEJhZEdyYW1tYXIoZW5kaW5nU2VsZWN0aW9uKCkpOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0NvbXBvc2l0ZUVkaXRDb21tYW5kLmgKaW5kZXggNzA0NGM0NTUzZWIz
YzBjNjMwOGUwYzMyNzUwZGYxNmQxNWMzMzVmZi4uYzJiNDg5ZGRkNzk3ZDMyMTI2NTE3YzQ5YzEw
MzI1ZDZmNTJmYWNjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9Db21wb3Np
dGVFZGl0Q29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQ29tcG9zaXRlRWRp
dENvbW1hbmQuaApAQCAtNTksOCArNTksNiBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdl
dE5vZGVzSW5Db21tYW5kKEhhc2hTZXQ8Tm9kZSo+Jik7CiAjZW5kaWYKIAotICAgIEFYVGV4dEVk
aXRUeXBlIHVuYXBwbHlFZGl0VHlwZSgpIGNvbnN0OwotCiBwcml2YXRlOgogICAgIEVkaXRDb21t
YW5kQ29tcG9zaXRpb24oRG9jdW1lbnQmLCBjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzdGFydGlu
Z1NlbGVjdGlvbiwgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uLCBFZGl0
QWN0aW9uKTsKIApAQCAtOTEsNyArODksNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIHNo
b3VsZFN0b3BDYXJldEJsaW5raW5nKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KIAogcHJvdGVj
dGVkOgotICAgIGV4cGxpY2l0IENvbXBvc2l0ZUVkaXRDb21tYW5kKERvY3VtZW50JiwgRWRpdEFj
dGlvbiA9IEVkaXRBY3Rpb25VbnNwZWNpZmllZCk7CisgICAgZXhwbGljaXQgQ29tcG9zaXRlRWRp
dENvbW1hbmQoRG9jdW1lbnQmKTsKIAogICAgIC8vCiAgICAgLy8gc3VnYXJ5LXN3ZWV0IGNvbnZl
bmllbmNlIGZ1bmN0aW9ucyB0byBoZWxwIGNyZWF0ZSBhbmQgYXBwbHkgZWRpdCBjb21tYW5kcyBp
biBjb21wb3NpdGUgY29tbWFuZHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Rl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IGY5M2NjMjllN2NlNzEzNTNiNDIwMzRh
YjIwMzk4MTlhYjIwYzA0YWUuLjJlYTk2ZDU1Y2FmZDNkYWMzMzQ4ODBjNTVkMmM5MTAwMWUxNjEy
YWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2Rl
Q29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5v
ZGVDb21tYW5kLmNwcApAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUs
IDIwMDgsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0
IChDKSAyMDA1LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzQsOCArMzQsOCBAQAogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKLURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6OkRlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQoUmVmUHRyPFRleHQ+JiYgbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3Vu
dCwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQotICAgIDogU2ltcGxlRWRpdENvbW1hbmQobm9k
ZS0+ZG9jdW1lbnQoKSwgZWRpdGluZ0FjdGlvbikKK0RlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ6
OkRlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoUGFzc1JlZlB0cjxUZXh0PiBub2RlLCB1bnNpZ25l
ZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50KQorICAgIDogU2ltcGxlRWRpdENvbW1hbmQobm9kZS0+
ZG9jdW1lbnQoKSkKICAgICAsIG1fbm9kZShub2RlKQogICAgICwgbV9vZmZzZXQob2Zmc2V0KQog
ICAgICwgbV9jb3VudChjb3VudCkKQEAgLTU4LDggKzU4LDggQEAgdm9pZCBEZWxldGVGcm9tVGV4
dE5vZGVDb21tYW5kOjpkb0FwcGx5KCkKICAgICAgICAgcmV0dXJuOwogICAgIAogICAgIC8vIE5l
ZWQgdG8gbm90aWZ5IHRoaXMgYmVmb3JlIGFjdHVhbGx5IGRlbGV0aW5nIHRoZSB0ZXh0Ci0gICAg
aWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCi0gICAgICAgIG5vdGlm
eUFjY2Vzc2liaWxpdHlGb3JUZXh0Q2hhbmdlKG1fbm9kZS5nZXQoKSwgYXBwbHlFZGl0VHlwZSgp
LCBtX3RleHQsIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihtX25vZGUsIG1fb2Zmc2V0KSkpOwor
ICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVj
dENhY2hlKCkpCisgICAgICAgIGNhY2hlLT5ub2RlVGV4dENoYW5nZU5vdGlmaWNhdGlvbihtX25v
ZGUuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dERlbGV0ZWQsIG1fb2Zmc2V0LCBtX3RleHQp
OwogCiAgICAgbV9ub2RlLT5kZWxldGVEYXRhKG1fb2Zmc2V0LCBtX2NvdW50LCBlYyk7CiB9CkBA
IC03Myw4ICs3Myw4IEBAIHZvaWQgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5
KCkKIAogICAgIG1fbm9kZS0+aW5zZXJ0RGF0YShtX29mZnNldCwgbV90ZXh0LCBJR05PUkVfRVhD
RVBUSU9OKTsKIAotICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgp
KQotICAgICAgICBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShtX25vZGUuZ2V0KCks
IHVuYXBwbHlFZGl0VHlwZSgpLCBtX3RleHQsIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihtX25v
ZGUsIG1fb2Zmc2V0KSkpOworICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50
KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgIGNhY2hlLT5ub2RlVGV4dENoYW5n
ZU5vdGlmaWNhdGlvbihtX25vZGUuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dEluc2VydGVk
LCBtX29mZnNldCwgbV90ZXh0KTsKIH0KIAogI2lmbmRlZiBOREVCVUcKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9EZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKaW5kZXggNGU2MTk2
OWYwYzNkNWI1MTIyYjgwZWMzZTU0ZDVhZTNlNTUxNmM3OC4uMjQ5MWYwNTIzOTJkMmYzM2M2ZmM4
MThhN2JhNWEzMDMwYmVlMWQ1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9E
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJp
Z2h0IChDKSAyMDA1LCAyMDA2LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwOCBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTM0LDE3
ICszNCwxNCBAQCBjbGFzcyBUZXh0OwogCiBjbGFzcyBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5k
IDogcHVibGljIFNpbXBsZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPERl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQ+IGNyZWF0ZShSZWZQdHI8VGV4dD4mJiBub2RlLCB1bnNp
Z25lZCBvZmZzZXQsIHVuc2lnbmVkIGNvdW50LCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBF
ZGl0QWN0aW9uRGVsZXRlKQorICAgIHN0YXRpYyBSZWY8RGVsZXRlRnJvbVRleHROb2RlQ29tbWFu
ZD4gY3JlYXRlKFBhc3NSZWZQdHI8VGV4dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25l
ZCBjb3VudCkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlbGV0ZUZyb21U
ZXh0Tm9kZUNvbW1hbmQoV1RGOjptb3ZlKG5vZGUpLCBvZmZzZXQsIGNvdW50LCBlZGl0aW5nQWN0
aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQobm9kZSwgb2Zmc2V0LCBjb3VudCkpOwogICAgIH0KIAotICAgIGNvbnN0IFN0cmluZyYg
ZGVsZXRlZFRleHQoKTsKLQotcHJvdGVjdGVkOgotICAgIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1h
bmQoUmVmUHRyPFRleHQ+JiYsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQsIEVkaXRB
Y3Rpb24pOwotCiBwcml2YXRlOgorICAgIERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoUGFzc1Jl
ZlB0cjxUZXh0PiwgdW5zaWduZWQgb2Zmc2V0LCB1bnNpZ25lZCBjb3VudCk7CisKICAgICB2aXJ0
dWFsIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkb1VuYXBwbHko
KSBvdmVycmlkZTsKICAgICAKQEAgLTU4LDExICs1NSw2IEBAIHByaXZhdGU6CiAgICAgU3RyaW5n
IG1fdGV4dDsKIH07CiAKLWlubGluZSBjb25zdCBTdHJpbmcmIERlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQ6OmRlbGV0ZWRUZXh0KCkKLXsKLSAgICByZXR1cm4gbV90ZXh0OwotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFu
ZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQuY3Bw
CmluZGV4IGViM2E1ZjMwYTAzZjI4NGUyMjYwZmY0OGZiYTlmMWI5OTlhZDk5MjcuLjJiYmM2ZWRm
MmVjN2U5OWExOWU0Y2M4NzMzOWM1NjY0OTFhNDgwYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRGVsZXRlU2VsZWN0aW9uQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmNwcApAQCAtNzIsOCArNzIsOCBAQCBz
dGF0aWMgYm9vbCBpc1RhYmxlUm93RW1wdHkoTm9kZSogcm93KQogICAgIHJldHVybiB0cnVlOwog
fQogCi1EZWxldGVTZWxlY3Rpb25Db21tYW5kOjpEZWxldGVTZWxlY3Rpb25Db21tYW5kKERvY3Vt
ZW50JiBkb2N1bWVudCwgYm9vbCBzbWFydERlbGV0ZSwgYm9vbCBtZXJnZUJsb2Nrc0FmdGVyRGVs
ZXRlLCBib29sIHJlcGxhY2UsIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzLCBib29sIHNh
bml0aXplTWFya3VwLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24pCi0gICAgOiBDb21wb3NpdGVF
ZGl0Q29tbWFuZChkb2N1bWVudCwgZWRpdGluZ0FjdGlvbikKK0RlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIHNtYXJ0
RGVsZXRlLCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUsIGJvb2wgcmVwbGFjZSwgYm9vbCBl
eHBhbmRGb3JTcGVjaWFsRWxlbWVudHMsIGJvb2wgc2FuaXRpemVNYXJrdXApCisgICAgOiBDb21w
b3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAsIG1faGFzU2VsZWN0aW9uVG9EZWxldGUo
ZmFsc2UpCiAgICAgLCBtX3NtYXJ0RGVsZXRlKHNtYXJ0RGVsZXRlKQogICAgICwgbV9tZXJnZUJs
b2Nrc0FmdGVyRGVsZXRlKG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUpCkBAIC05MCw4ICs5MCw4IEBA
IERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoRG9jdW1lbnQm
IGRvY3VtZW50LCBib29sIHNtYXJ0RGVsCiB7CiB9CiAKLURlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6
OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9u
LCBib29sIHNtYXJ0RGVsZXRlLCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUsIGJvb2wgcmVw
bGFjZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMsIGJvb2wgc2FuaXRpemVNYXJrdXAs
IEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKHNl
bGVjdGlvbi5zdGFydCgpLmFuY2hvck5vZGUoKS0+ZG9jdW1lbnQoKSwgZWRpdGluZ0FjdGlvbikK
K0RlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ6OkRlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoY29uc3QgVmlz
aWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBib29sIHNtYXJ0RGVsZXRlLCBib29sIG1lcmdlQmxv
Y2tzQWZ0ZXJEZWxldGUsIGJvb2wgcmVwbGFjZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVu
dHMsIGJvb2wgc2FuaXRpemVNYXJrdXApCisgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChzZWxl
Y3Rpb24uc3RhcnQoKS5hbmNob3JOb2RlKCktPmRvY3VtZW50KCkpCiAgICAgLCBtX2hhc1NlbGVj
dGlvblRvRGVsZXRlKHRydWUpCiAgICAgLCBtX3NtYXJ0RGVsZXRlKHNtYXJ0RGVsZXRlKQogICAg
ICwgbV9tZXJnZUJsb2Nrc0FmdGVyRGVsZXRlKG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUpCkBAIC04
ODQsNiArODg0LDE0IEBAIHZvaWQgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZDo6ZG9BcHBseSgpCiAg
ICAgY2xlYXJUcmFuc2llbnRTdGF0ZSgpOwogfQogCitFZGl0QWN0aW9uIERlbGV0ZVNlbGVjdGlv
bkNvbW1hbmQ6OmVkaXRpbmdBY3Rpb24oKSBjb25zdAoreworICAgIC8vIE5vdGUgdGhhdCBEZWxl
dGVTZWxlY3Rpb25Db21tYW5kIGlzIGFsc28gdXNlZCB3aGVuIHRoZSB1c2VyIHByZXNzZXMgdGhl
IERlbGV0ZSBrZXksCisgICAgLy8gYnV0IGluIHRoYXQgY2FzZSB0aGVyZSdzIGEgVHlwaW5nQ29t
bWFuZCB0aGF0IHN1cHBsaWVzIHRoZSBlZGl0aW5nQWN0aW9uKCksIHNvCisgICAgLy8gdGhlIFVu
ZG8gbWVudSBjb3JyZWN0bHkgc2hvd3MgIlVuZG8gVHlwaW5nIgorICAgIHJldHVybiBFZGl0QWN0
aW9uQ3V0OworfQorCiAvLyBOb3JtYWxseSBkZWxldGlvbiBkb2Vzbid0IHByZXNlcnZlIHRoZSB0
eXBpbmcgc3R5bGUgdGhhdCB3YXMgcHJlc2VudCBiZWZvcmUgaXQuICBGb3IgZXhhbXBsZSwKIC8v
IHR5cGUgYSBjaGFyYWN0ZXIsIEJvbGQsIHRoZW4gZGVsZXRlIHRoZSBjaGFyYWN0ZXIgYW5kIHN0
YXJ0IHR5cGluZy4gIFRoZSBCb2xkIHR5cGluZyBzdHlsZSBzaG91bGRuJ3QKIC8vIHN0aWNrIGFy
b3VuZC4gIERlbGV0aW9uIHNob3VsZCBwcmVzZXJ2ZSBhIHR5cGluZyBzdHlsZSB0aGF0ICppdCog
c2V0cywgaG93ZXZlci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGVsZXRl
U2VsZWN0aW9uQ29tbWFuZC5oIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rp
b25Db21tYW5kLmgKaW5kZXggMGE5YjljY2NlNTkzYmY5MjM0YmE1NWRhMjNlZmI3NjFlY2IwZWVm
NS4uZTViZjUxZGFlMzdlMDY3MmJlMjNkNzRhZjBkMGE4OWUyMGI4YWRlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVTZWxlY3Rpb25Db21tYW5kLmgKQEAgLTM0LDIyICsz
NCwyMyBAQCBjbGFzcyBFZGl0aW5nU3R5bGU7CiAKIGNsYXNzIERlbGV0ZVNlbGVjdGlvbkNvbW1h
bmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQgeyAKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGJv
b2wgc21hcnREZWxldGUgPSBmYWxzZSwgYm9vbCBtZXJnZUJsb2Nrc0FmdGVyRGVsZXRlID0gdHJ1
ZSwgYm9vbCByZXBsYWNlID0gZmFsc2UsIGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0g
ZmFsc2UsIGJvb2wgc2FuaXRpemVNYXJrdXAgPSB0cnVlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rp
b24gPSBFZGl0QWN0aW9uRGVsZXRlKQorICAgIHN0YXRpYyBSZWY8RGVsZXRlU2VsZWN0aW9uQ29t
bWFuZD4gY3JlYXRlKERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBzbWFydERlbGV0ZSA9IGZhbHNl
LCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUgPSB0cnVlLCBib29sIHJlcGxhY2UgPSBmYWxz
ZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSBmYWxzZSwgYm9vbCBzYW5pdGl6ZU1h
cmt1cCA9IHRydWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxldGVT
ZWxlY3Rpb25Db21tYW5kKGRvY3VtZW50LCBzbWFydERlbGV0ZSwgbWVyZ2VCbG9ja3NBZnRlckRl
bGV0ZSwgcmVwbGFjZSwgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzLCBzYW5pdGl6ZU1hcmt1cCwg
ZWRpdGluZ0FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxldGVTZWxl
Y3Rpb25Db21tYW5kKGRvY3VtZW50LCBzbWFydERlbGV0ZSwgbWVyZ2VCbG9ja3NBZnRlckRlbGV0
ZSwgcmVwbGFjZSwgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzLCBzYW5pdGl6ZU1hcmt1cCkpOwog
ICAgIH0KLSAgICBzdGF0aWMgUmVmPERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQ+IGNyZWF0ZShjb25z
dCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIGJvb2wgc21hcnREZWxldGUgPSBmYWxzZSwg
Ym9vbCBtZXJnZUJsb2Nrc0FmdGVyRGVsZXRlID0gdHJ1ZSwgYm9vbCByZXBsYWNlID0gZmFsc2Us
IGJvb2wgZXhwYW5kRm9yU3BlY2lhbEVsZW1lbnRzID0gZmFsc2UsIGJvb2wgc2FuaXRpemVNYXJr
dXAgPSB0cnVlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0aW9uRGVsZXRlKQor
ICAgIHN0YXRpYyBSZWY8RGVsZXRlU2VsZWN0aW9uQ29tbWFuZD4gY3JlYXRlKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgYm9vbCBzbWFydERlbGV0ZSA9IGZhbHNlLCBib29sIG1l
cmdlQmxvY2tzQWZ0ZXJEZWxldGUgPSB0cnVlLCBib29sIHJlcGxhY2UgPSBmYWxzZSwgYm9vbCBl
eHBhbmRGb3JTcGVjaWFsRWxlbWVudHMgPSBmYWxzZSwgYm9vbCBzYW5pdGl6ZU1hcmt1cCA9IHRy
dWUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEZWxldGVTZWxlY3Rpb25D
b21tYW5kKHNlbGVjdGlvbiwgc21hcnREZWxldGUsIG1lcmdlQmxvY2tzQWZ0ZXJEZWxldGUsIHJl
cGxhY2UsIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywgc2FuaXRpemVNYXJrdXAsIGVkaXRpbmdB
Y3Rpb24pKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGVsZXRlU2VsZWN0aW9uQ29t
bWFuZChzZWxlY3Rpb24sIHNtYXJ0RGVsZXRlLCBtZXJnZUJsb2Nrc0FmdGVyRGVsZXRlLCByZXBs
YWNlLCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMsIHNhbml0aXplTWFya3VwKSk7CiAgICAgfQog
CiBwcm90ZWN0ZWQ6Ci0gICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYsIGJvb2wg
c21hcnREZWxldGUsIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9vbCByZXBsYWNlLCBi
b29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywgYm9vbCBzYW50aXplTWFya3VwLCBFZGl0QWN0
aW9uID0gRWRpdEFjdGlvbkRlbGV0ZSk7CisgICAgRGVsZXRlU2VsZWN0aW9uQ29tbWFuZChEb2N1
bWVudCYsIGJvb2wgc21hcnREZWxldGUsIGJvb2wgbWVyZ2VCbG9ja3NBZnRlckRlbGV0ZSwgYm9v
bCByZXBsYWNlLCBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywgYm9vbCBzYW50aXplTWFy
a3VwKTsKIAogcHJpdmF0ZToKLSAgICBEZWxldGVTZWxlY3Rpb25Db21tYW5kKGNvbnN0IFZpc2li
bGVTZWxlY3Rpb24mLCBib29sIHNtYXJ0RGVsZXRlLCBib29sIG1lcmdlQmxvY2tzQWZ0ZXJEZWxl
dGUsIGJvb2wgcmVwbGFjZSwgYm9vbCBleHBhbmRGb3JTcGVjaWFsRWxlbWVudHMsIGJvb2wgc2Fu
aXRpemVNYXJrdXAsIEVkaXRBY3Rpb24pOworICAgIERlbGV0ZVNlbGVjdGlvbkNvbW1hbmQoY29u
c3QgVmlzaWJsZVNlbGVjdGlvbiYsIGJvb2wgc21hcnREZWxldGUsIGJvb2wgbWVyZ2VCbG9ja3NB
ZnRlckRlbGV0ZSwgYm9vbCByZXBsYWNlLCBib29sIGV4cGFuZEZvclNwZWNpYWxFbGVtZW50cywg
Ym9vbCBzYW5pdGl6ZU1hcmt1cCk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOworICAg
IHZpcnR1YWwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Q7CiAgICAgCiAgICAgdmly
dHVhbCBib29sIHByZXNlcnZlc1R5cGluZ1N0eWxlKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RpY3RhdGlvbkNvbW1hbmQuY3BwCmluZGV4IDkwOGZkNzdiNjQ4ZGNiM2ZmZmQ5
ZTc1MmFkNTg2ZjFiOWM0OTViZjIuLmMxNzNkZjQ1ZGE3MThhMjM1MzQ4MWQ4NWVkODI0ZTAwMDhl
MGY5NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRGljdGF0aW9uQ29tbWFu
ZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EaWN0YXRpb25Db21tYW5kLmNwcApA
QCAtMTE1LDcgKzExNSw3IEBAIHZvaWQgRGljdGF0aW9uQ29tbWFuZDo6aW5zZXJ0VGV4dFJ1bldp
dGhvdXROZXdsaW5lcyhzaXplX3QgbGluZVN0YXJ0LCBzaXplX3QgbGluCiB7CiAgICAgVmVjdG9y
PERpY3RhdGlvbkFsdGVybmF0aXZlPiBhbHRlcm5hdGl2ZXNJbkxpbmU7CiAgICAgY29sbGVjdERp
Y3RhdGlvbkFsdGVybmF0aXZlc0luUmFuZ2UobGluZVN0YXJ0LCBsaW5lTGVuZ3RoLCBhbHRlcm5h
dGl2ZXNJbkxpbmUpOwotICAgIFJlZlB0cjxJbnNlcnRUZXh0Q29tbWFuZD4gY29tbWFuZCA9IElu
c2VydFRleHRDb21tYW5kOjpjcmVhdGVXaXRoTWFya2VyU3VwcGxpZXIoZG9jdW1lbnQoKSwgbV90
ZXh0VG9JbnNlcnQuc3Vic3RyaW5nKGxpbmVTdGFydCwgbGluZUxlbmd0aCksIERpY3RhdGlvbk1h
cmtlclN1cHBsaWVyOjpjcmVhdGUoYWx0ZXJuYXRpdmVzSW5MaW5lKSwgRWRpdEFjdGlvbkRpY3Rh
dGlvbik7CisgICAgUmVmUHRyPEluc2VydFRleHRDb21tYW5kPiBjb21tYW5kID0gSW5zZXJ0VGV4
dENvbW1hbmQ6OmNyZWF0ZVdpdGhNYXJrZXJTdXBwbGllcihkb2N1bWVudCgpLCBtX3RleHRUb0lu
c2VydC5zdWJzdHJpbmcobGluZVN0YXJ0LCBsaW5lTGVuZ3RoKSwgRGljdGF0aW9uTWFya2VyU3Vw
cGxpZXI6OmNyZWF0ZShhbHRlcm5hdGl2ZXNJbkxpbmUpKTsKICAgICBhcHBseUNvbW1hbmRUb0Nv
bXBvc2l0ZShjb21tYW5kLCBlbmRpbmdTZWxlY3Rpb24oKSk7CiB9CiAKQEAgLTEyNCw3ICsxMjQs
NyBAQCB2b2lkIERpY3RhdGlvbkNvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvcigpCiAg
ICAgaWYgKCFjYW5BcHBlbmROZXdMaW5lRmVlZFRvU2VsZWN0aW9uKGVuZGluZ1NlbGVjdGlvbigp
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0
UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZhbHNlLCBmYWxz
ZSwgRWRpdEFjdGlvbkRpY3RhdGlvbikpOworICAgIGFwcGx5Q29tbWFuZFRvQ29tcG9zaXRlKElu
c2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpKSk7CiB9CiAK
IHZvaWQgRGljdGF0aW9uQ29tbWFuZDo6Y29sbGVjdERpY3RhdGlvbkFsdGVybmF0aXZlc0luUmFu
Z2Uoc2l6ZV90IHJhbmdlU3RhcnQsIHNpemVfdCByYW5nZUxlbmd0aCwgVmVjdG9yPERpY3RhdGlv
bkFsdGVybmF0aXZlPiYgYWx0ZXJuYXRpdmVzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0QWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRBY3Rpb24u
aAppbmRleCA2ZWYzNTA2NDEyOGUwOGQ1ZTc3OGI2YzBiNmY5YTk0NWU4ZDQ1YWNiLi42MzdkMWVi
NTNiMDQzODc2M2YwOWYwZTA0YjcwNDEwN2FhOWNkZTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0VkaXRBY3Rpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRBY3Rpb24uaApAQCAtMjksNyArMjksNiBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHR5
cGVkZWYgZW51bSB7CiAgICAgICAgIEVkaXRBY3Rpb25VbnNwZWNpZmllZCwKLSAgICAgICAgRWRp
dEFjdGlvbkluc2VydCwKICAgICAgICAgRWRpdEFjdGlvblNldENvbG9yLAogICAgICAgICBFZGl0
QWN0aW9uU2V0QmFja2dyb3VuZENvbG9yLAogICAgICAgICBFZGl0QWN0aW9uVHVybk9mZktlcm5p
bmcsCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCmluZGV4IDY0NzhhZTZkYjA3
NjVjY2RkNWEyNTE4Y2E4Yzc5NDIyMTc4ZGE5NWYuLjhmNTY1MzJjY2U5ZDQ2MDQ4M2Y2MWY4NDRi
MDkxMTNjZDUzYjZmMzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENv
bW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuY3BwCkBA
IC0yNiw3ICsyNiw2IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRWRpdENvbW1h
bmQuaCIKIAotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDb21wb3NpdGVF
ZGl0Q29tbWFuZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWRpdG9yLmgi
CkBAIC0zOCwxMCArMzcsOSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUVkaXRDb21tYW5k
OjpFZGl0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlv
bikKK0VkaXRDb21tYW5kOjpFZGl0Q29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQpCiAgICAgOiBt
X2RvY3VtZW50KGRvY3VtZW50KQogICAgICwgbV9wYXJlbnQoMCkKLSAgICAsIG1fZWRpdGluZ0Fj
dGlvbihlZGl0aW5nQWN0aW9uKQogewogICAgIEFTU0VSVChkb2N1bWVudC5mcmFtZSgpKTsKICAg
ICBzZXRTdGFydGluZ1NlbGVjdGlvbihtX2RvY3VtZW50LT5mcmFtZSgpLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKSk7CkBAIC02OSw3ICs2Nyw3IEBAIEZyYW1lJiBFZGl0Q29tbWFuZDo6ZnJhbWUo
KQogCiBFZGl0QWN0aW9uIEVkaXRDb21tYW5kOjplZGl0aW5nQWN0aW9uKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gbV9lZGl0aW5nQWN0aW9uOworICAgIHJldHVybiBFZGl0QWN0aW9uVW5zcGVjaWZp
ZWQ7CiB9CiAKIHN0YXRpYyBpbmxpbmUgRWRpdENvbW1hbmRDb21wb3NpdGlvbiogY29tcG9zaXRp
b25JZlBvc3NpYmxlKEVkaXRDb21tYW5kKiBjb21tYW5kKQpAQCAtMTE0LDUwICsxMTIsNiBAQCB2
b2lkIEVkaXRDb21tYW5kOjpzZXRQYXJlbnQoQ29tcG9zaXRlRWRpdENvbW1hbmQqIHBhcmVudCkK
ICAgICB9CiB9CiAKLUFYVGV4dEVkaXRUeXBlIEVkaXRDb21tYW5kOjphcHBseUVkaXRUeXBlKCkg
Y29uc3QKLXsKLSAgICBzd2l0Y2ggKGVkaXRpbmdBY3Rpb24oKSkgewotICAgIGNhc2UgRWRpdEFj
dGlvbkN1dDoKLSAgICAgICAgcmV0dXJuIEFYVGV4dEVkaXRUeXBlQ3V0OwotICAgIGNhc2UgRWRp
dEFjdGlvbkRlbGV0ZToKLSAgICAgICAgcmV0dXJuIEFYVGV4dEVkaXRUeXBlRGVsZXRlOwotICAg
IGNhc2UgRWRpdEFjdGlvbkRpY3RhdGlvbjoKLSAgICAgICAgcmV0dXJuIEFYVGV4dEVkaXRUeXBl
RGljdGF0aW9uOwotICAgIGNhc2UgRWRpdEFjdGlvbkluc2VydDoKLSAgICAgICAgcmV0dXJuIEFY
VGV4dEVkaXRUeXBlSW5zZXJ0OwotICAgIGNhc2UgRWRpdEFjdGlvblBhc3RlOgotICAgICAgICBy
ZXR1cm4gQVhUZXh0RWRpdFR5cGVQYXN0ZTsKLSAgICBjYXNlIEVkaXRBY3Rpb25UeXBpbmc6Ci0g
ICAgICAgIHJldHVybiBBWFRleHRFZGl0VHlwZVR5cGluZzsKLSAgICAvLyBJbmNsdWRlIGRlZmF1
bHQgY2FzZSBmb3IgdW5oYW5kbGVkIEVkaXRBY3Rpb24gY2FzZXMuCi0gICAgZGVmYXVsdDoKLSAg
ICAgICAgYnJlYWs7Ci0gICAgfQotICAgIHJldHVybiBBWFRleHRFZGl0VHlwZVVua25vd247Ci19
Ci0KLUFYVGV4dEVkaXRUeXBlIEVkaXRDb21tYW5kOjp1bmFwcGx5RWRpdFR5cGUoKSBjb25zdAot
ewotICAgIHN3aXRjaCAoYXBwbHlFZGl0VHlwZSgpKSB7Ci0gICAgY2FzZSBBWFRleHRFZGl0VHlw
ZVVua25vd246Ci0gICAgICAgIHJldHVybiBBWFRleHRFZGl0VHlwZVVua25vd247Ci0gICAgY2Fz
ZSBBWFRleHRFZGl0VHlwZURlbGV0ZToKLSAgICBjYXNlIEFYVGV4dEVkaXRUeXBlQ3V0OgotICAg
ICAgICByZXR1cm4gQVhUZXh0RWRpdFR5cGVJbnNlcnQ7Ci0gICAgY2FzZSBBWFRleHRFZGl0VHlw
ZUluc2VydDoKLSAgICBjYXNlIEFYVGV4dEVkaXRUeXBlVHlwaW5nOgotICAgIGNhc2UgQVhUZXh0
RWRpdFR5cGVEaWN0YXRpb246Ci0gICAgY2FzZSBBWFRleHRFZGl0VHlwZVBhc3RlOgotICAgICAg
ICByZXR1cm4gQVhUZXh0RWRpdFR5cGVEZWxldGU7Ci0gICAgfQotICAgIHJldHVybiBBWFRleHRF
ZGl0VHlwZVVua25vd247Ci19Ci0KLVNpbXBsZUVkaXRDb21tYW5kOjpTaW1wbGVFZGl0Q29tbWFu
ZChEb2N1bWVudCYgZG9jdW1lbnQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IEVk
aXRDb21tYW5kKGRvY3VtZW50LCBlZGl0aW5nQWN0aW9uKQotewotfQotCiB2b2lkIFNpbXBsZUVk
aXRDb21tYW5kOjpkb1JlYXBwbHkoKQogewogICAgIGRvQXBwbHkoKTsKQEAgLTE3MSwxNCArMTI1
LDQgQEAgdm9pZCBTaW1wbGVFZGl0Q29tbWFuZDo6YWRkTm9kZUFuZERlc2NlbmRhbnRzKE5vZGUq
IHN0YXJ0Tm9kZSwgSGFzaFNldDxOb2RlKj4mIG4KIH0KICNlbmRpZgogCi12b2lkIFNpbXBsZUVk
aXRDb21tYW5kOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShOb2RlKiBub2RlLCBB
WFRleHRFZGl0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFZpc2libGVQb3Np
dGlvbiYgcG9zaXRpb24pCi17Ci0gICAgaWYgKCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5
RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBk
b2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAg
ICAgIHJldHVybjsKLSAgICBjYWNoZS0+cG9zdFRleHRTdGF0ZUNoYW5nZU5vdGlmaWNhdGlvbihu
b2RlLCB0eXBlLCB0ZXh0LCBwb3NpdGlvbik7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdENvbW1hbmQuaAppbmRleCAxYTk5N2M5MjFmYmMwODc3MGVl
MThkN2VkNmY3MDA4NTJmZDBkODM0Li4wM2U2YzM3YmRlNWFkNTg5MjUxMWQ3OGE0MGE1ZTQyYmI5
NzRjMDgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRDb21tYW5kLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0Q29tbWFuZC5oCkBAIC0yNiw3ICsyNiw2
IEBACiAjaWZuZGVmIEVkaXRDb21tYW5kX2gKICNkZWZpbmUgRWRpdENvbW1hbmRfaAogCi0jaW5j
bHVkZSAiQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQuaCIKICNpbmNsdWRlICJFZGl0QWN0aW9uLmgi
CiAjaW5jbHVkZSAiVmlzaWJsZVNlbGVjdGlvbi5oIgogCkBAIC00Nyw3ICs0Niw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgc2V0UGFyZW50KENvbXBvc2l0ZUVkaXRDb21tYW5kKik7CiAKLSAgICBF
ZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24oKSBjb25zdDsKKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24g
ZWRpdGluZ0FjdGlvbigpIGNvbnN0OwogCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc3Rh
cnRpbmdTZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3N0YXJ0aW5nU2VsZWN0aW9uOyB9CiAg
ICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgZW5kaW5nU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1
cm4gbV9lbmRpbmdTZWxlY3Rpb247IH0KQEAgLTYwLDExICs1OSw4IEBAIHB1YmxpYzoKIAogICAg
IHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgPSAwOwogCi0gICAgQVhUZXh0RWRpdFR5cGUgYXBwbHlF
ZGl0VHlwZSgpIGNvbnN0OwotICAgIEFYVGV4dEVkaXRUeXBlIHVuYXBwbHlFZGl0VHlwZSgpIGNv
bnN0OwotCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgRWRpdENvbW1hbmQoRG9jdW1lbnQmLCBF
ZGl0QWN0aW9uID0gRWRpdEFjdGlvblVuc3BlY2lmaWVkKTsKKyAgICBleHBsaWNpdCBFZGl0Q29t
bWFuZChEb2N1bWVudCYpOwogICAgIEVkaXRDb21tYW5kKERvY3VtZW50JiwgY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYsIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mKTsKIAogICAgIEZyYW1lJiBmcmFt
ZSgpOwpAQCAtNzgsNyArNzQsNiBAQCBwcml2YXRlOgogICAgIFZpc2libGVTZWxlY3Rpb24gbV9z
dGFydGluZ1NlbGVjdGlvbjsKICAgICBWaXNpYmxlU2VsZWN0aW9uIG1fZW5kaW5nU2VsZWN0aW9u
OwogICAgIENvbXBvc2l0ZUVkaXRDb21tYW5kKiBtX3BhcmVudDsKLSAgICBFZGl0QWN0aW9uIG1f
ZWRpdGluZ0FjdGlvbiB7IEVkaXRBY3Rpb25VbnNwZWNpZmllZCB9OwogfTsKIAogZW51bSBTaG91
bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSB7CkBAIC05NiwxNCArOTEsMTIgQEAgcHVi
bGljOgogI2VuZGlmCiAKIHByb3RlY3RlZDoKLSAgICBleHBsaWNpdCBTaW1wbGVFZGl0Q29tbWFu
ZChEb2N1bWVudCYsIEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uVW5zcGVjaWZpZWQpOworICAgIGV4
cGxpY2l0IFNpbXBsZUVkaXRDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCkgOiBFZGl0Q29tbWFu
ZChkb2N1bWVudCkgeyB9CiAKICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBhZGROb2RlQW5kRGVz
Y2VuZGFudHMoTm9kZSosIEhhc2hTZXQ8Tm9kZSo+Jik7CiAjZW5kaWYKIAotICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShOb2RlKiwgQVhUZXh0RWRpdFR5
cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYpOwotCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgYm9vbCBpc1NpbXBsZUVkaXRDb21tYW5kKCkgY29uc3Qgb3ZlcnJpZGUgeyBy
ZXR1cm4gdHJ1ZTsgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRp
dGluZ0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdGluZ0FsbEluT25l
LmNwcAppbmRleCAyM2JjNmIxY2RlNGJmNjIzMDk1OWUwNzJlY2U1ZTBkNTdmOWUyYjk0Li5kYzNh
ZTMzNDQ3NjZmYTk3MjEyMjE1NTE5MzA4M2FkMDMxZjhmYzE5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRpbmdBbGxJbk9uZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0aW5nQWxsSW5PbmUuY3BwCkBAIC01OSw4ICs1OSw2IEBACiAjaW5jbHVkZSA8
UmVtb3ZlTm9kZUNvbW1hbmQuY3BwPgogI2luY2x1ZGUgPFJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hp
bGRyZW5Db21tYW5kLmNwcD4KICNpbmNsdWRlIDxSZW5kZXJlZFBvc2l0aW9uLmNwcD4KLSNpbmNs
dWRlIDxSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHA+Ci0jaW5jbHVkZSA8UmVw
bGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwPgogI2luY2x1ZGUgPFJlcGxhY2VOb2Rl
V2l0aFNwYW5Db21tYW5kLmNwcD4KICNpbmNsdWRlIDxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZC5j
cHA+CiAjaW5jbHVkZSA8U2V0Tm9kZUF0dHJpYnV0ZUNvbW1hbmQuY3BwPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGlu
Zy9FZGl0b3IuY3BwCmluZGV4IGE3NzI4NmFmYjYwMjgwMjdjODZlNTM4Yjg0ZDVmYjBlMGM0N2Iy
NDEuLjBmZDJmOTEyNjY3ZjI0MzcyZDNlNWZmMTRjMmRlYzI0NzEyOGNmNTggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0VkaXRvci5jcHAKQEAgLTIwOCwxMiArMjA4LDEyIEBAIGJvb2wgRWRpdG9yOjpoYW5k
bGVUZXh0RXZlbnQoVGV4dEV2ZW50KiBldmVudCkKICAgICAgICAgICAgIGlmIChjbGllbnQoKS0+
cGVyZm9ybXNUd29TdGVwUGFzdGUoZXZlbnQtPnBhc3RpbmdGcmFnbWVudCgpKSkKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICNlbmRpZgotICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlv
bldpdGhGcmFnbWVudChldmVudC0+cGFzdGluZ0ZyYWdtZW50KCksIGZhbHNlLCBldmVudC0+c2hv
dWxkU21hcnRSZXBsYWNlKCksIGV2ZW50LT5zaG91bGRNYXRjaFN0eWxlKCksIEVkaXRBY3Rpb25Q
YXN0ZSwgZXZlbnQtPm1haWxCbG9ja3F1b3RlSGFuZGxpbmcoKSk7CisgICAgICAgICAgICByZXBs
YWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KGV2ZW50LT5wYXN0aW5nRnJhZ21lbnQoKSwgZmFsc2Us
IGV2ZW50LT5zaG91bGRTbWFydFJlcGxhY2UoKSwgZXZlbnQtPnNob3VsZE1hdGNoU3R5bGUoKSwg
ZXZlbnQtPm1haWxCbG9ja3F1b3RlSGFuZGxpbmcoKSk7CiAjaWYgUExBVEZPUk0oSU9TKQogICAg
ICAgICB9CiAjZW5kaWYKICAgICAgICAgZWxzZSAKLSAgICAgICAgICAgIHJlcGxhY2VTZWxlY3Rp
b25XaXRoVGV4dChldmVudC0+ZGF0YSgpLCBmYWxzZSwgZXZlbnQtPnNob3VsZFNtYXJ0UmVwbGFj
ZSgpLCBFZGl0QWN0aW9uUGFzdGUpOworICAgICAgICAgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhU
ZXh0KGV2ZW50LT5kYXRhKCksIGZhbHNlLCBldmVudC0+c2hvdWxkU21hcnRSZXBsYWNlKCkpOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTM3NCwxMiArMzc0LDEyIEBAIGJvb2wg
RWRpdG9yOjpkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVjdGlvbkRpcmVjdGlvbiBkaXJlY3Rpb24s
IFRleHRHcmFudWxhcml0eSBnCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRWRpdG9yOjpk
ZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxldGUoYm9vbCBzbWFydERlbGV0ZSwgRWRpdEFjdGlv
biBlZGl0aW5nQWN0aW9uKQordm9pZCBFZGl0b3I6OmRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERl
bGV0ZShib29sIHNtYXJ0RGVsZXRlKQogewogICAgIGlmIChtX2ZyYW1lLnNlbGVjdGlvbigpLmlz
Tm9uZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhcHBseUNvbW1hbmQoRGVsZXRlU2VsZWN0
aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHNtYXJ0RGVsZXRlLCB0cnVlLCBmYWxzZSwg
ZmFsc2UsIHRydWUsIGVkaXRpbmdBY3Rpb24pKTsKKyAgICBhcHBseUNvbW1hbmQoRGVsZXRlU2Vs
ZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIHNtYXJ0RGVsZXRlKSk7CiB9CiAKIHZv
aWQgRWRpdG9yOjpjbGVhclRleHQoKQpAQCAtNTIwLDcgKzUyMCw3IEBAIGJvb2wgRWRpdG9yOjpz
aG91bGRJbnNlcnRGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50
LCBQYXNzUmVmCiAgICAgcmV0dXJuIGNsaWVudCgpLT5zaG91bGRJbnNlcnROb2RlKGZyYWdtZW50
LmdldCgpLCByZXBsYWNpbmdET01SYW5nZS5nZXQoKSwgZ2l2ZW5BY3Rpb24pOwogfQogCi12b2lk
IEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50
RnJhZ21lbnQ+IGZyYWdtZW50LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNtYXJ0UmVw
bGFjZSwgYm9vbCBtYXRjaFN0eWxlLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24sIE1haWxCbG9j
a3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykKK3ZvaWQgRWRpdG9yOjpyZXBs
YWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJh
Z21lbnQsIGJvb2wgc2VsZWN0UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlLCBib29sIG1h
dGNoU3R5bGUsIE1haWxCbG9ja3F1b3RlSGFuZGxpbmcgbWFpbEJsb2NrcXVvdGVIYW5kbGluZykK
IHsKICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCku
c2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5pc05vbmUoKSB8fCAhc2VsZWN0aW9uLmlz
Q29udGVudEVkaXRhYmxlKCkgfHwgIWZyYWdtZW50KQpAQCAtNTM2LDcgKzUzNiw3IEBAIHZvaWQg
RWRpdG9yOjpyZXBsYWNlU2VsZWN0aW9uV2l0aEZyYWdtZW50KFBhc3NSZWZQdHI8RG9jdW1lbnRG
cmFnbWVudD4gZnJhZ21lbnQsCiAgICAgaWYgKG1haWxCbG9ja3F1b3RlSGFuZGxpbmcgPT0gTWFp
bEJsb2NrcXVvdGVIYW5kbGluZzo6SWdub3JlQmxvY2txdW90ZSkKICAgICAgICAgb3B0aW9ucyB8
PSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6SWdub3JlTWFpbEJsb2NrcXVvdGU7CiAKLSAgICBh
cHBseUNvbW1hbmQoUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBm
cmFnbWVudCwgb3B0aW9ucywgZWRpdGluZ0FjdGlvbikpOworICAgIGFwcGx5Q29tbWFuZChSZXBs
YWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIGZyYWdtZW50LCBvcHRpb25z
LCBFZGl0QWN0aW9uUGFzdGUpKTsKICAgICByZXZlYWxTZWxlY3Rpb25BZnRlckVkaXRpbmdPcGVy
YXRpb24oKTsKIAogICAgIHNlbGVjdGlvbiA9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9u
KCk7CkBAIC01NTAsMTMgKzU1MCwxMyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZVNlbGVjdGlvbldp
dGhGcmFnbWVudChQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50LAogICAgIG1f
c3BlbGxDaGVja2VyLT5yZXF1ZXN0Q2hlY2tpbmdGb3IoU3BlbGxDaGVja1JlcXVlc3Q6OmNyZWF0
ZShyZXNvbHZlVGV4dENoZWNraW5nVHlwZU1hc2soVGV4dENoZWNraW5nVHlwZVNwZWxsaW5nIHwg
VGV4dENoZWNraW5nVHlwZUdyYW1tYXIpLCBUZXh0Q2hlY2tpbmdQcm9jZXNzQmF0Y2gsIHJhbmdl
VG9DaGVjaywgcmFuZ2VUb0NoZWNrKSk7CiB9CiAKLXZvaWQgRWRpdG9yOjpyZXBsYWNlU2VsZWN0
aW9uV2l0aFRleHQoY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBi
b29sIHNtYXJ0UmVwbGFjZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQordm9pZCBFZGl0b3I6
OnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0
UmVwbGFjZW1lbnQsIGJvb2wgc21hcnRSZXBsYWNlKQogewogICAgIFJlZlB0cjxSYW5nZT4gcmFu
Z2UgPSBzZWxlY3RlZFJhbmdlKCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudChjcmVhdGVGcmFnbWVudEZyb21UZXh0
KCpyYW5nZSwgdGV4dCksIHNlbGVjdFJlcGxhY2VtZW50LCBzbWFydFJlcGxhY2UsIHRydWUsIGVk
aXRpbmdBY3Rpb24pOworICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoY3JlYXRlRnJh
Z21lbnRGcm9tVGV4dCgqcmFuZ2UsIHRleHQpLCBzZWxlY3RSZXBsYWNlbWVudCwgc21hcnRSZXBs
YWNlLCB0cnVlKTsKIH0KIAogUGFzc1JlZlB0cjxSYW5nZT4gRWRpdG9yOjpzZWxlY3RlZFJhbmdl
KCkKQEAgLTk5OCw4ICs5OTgsNyBAQCB2b2lkIEVkaXRvcjo6YXBwbGllZEVkaXRpbmcoUGFzc1Jl
ZlB0cjxDb21wb3NpdGVFZGl0Q29tbWFuZD4gY21kKQogCiAgICAgLy8gRG9uJ3QgY2xlYXIgdGhl
IHR5cGluZyBzdHlsZSB3aXRoIHRoaXMgc2VsZWN0aW9uIGNoYW5nZS4gIFdlIGRvIHRob3NlIHRo
aW5ncyBlbHNld2hlcmUgaWYgbmVjZXNzYXJ5LgogICAgIEZyYW1lU2VsZWN0aW9uOjpTZXRTZWxl
Y3Rpb25PcHRpb25zIG9wdGlvbnMgPSBjbWQtPmlzRGljdGF0aW9uQ29tbWFuZCgpID8gRnJhbWVT
ZWxlY3Rpb246OkRpY3RhdGlvblRyaWdnZXJlZCA6IDA7Ci0gICAgCi0gICAgY2hhbmdlU2VsZWN0
aW9uQWZ0ZXJDb21tYW5kKG5ld1NlbGVjdGlvbiwgb3B0aW9ucywgY21kLT5hcHBseUVkaXRUeXBl
KCkpOworICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChuZXdTZWxlY3Rpb24sIG9wdGlv
bnMpOwogICAgIGRpc3BhdGNoRWRpdGFibGVDb250ZW50Q2hhbmdlZEV2ZW50cyhjb21wb3NpdGlv
bi0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNvbXBvc2l0aW9uLT5lbmRpbmdSb290
RWRpdGFibGVFbGVtZW50KCkpOwogCiAgICAgdXBkYXRlRWRpdG9yVUlOb3dJZlNjaGVkdWxlZCgp
OwpAQCAtMTAzMCw3ICsxMDI5LDcgQEAgdm9pZCBFZGl0b3I6OnVuYXBwbGllZEVkaXRpbmcoUGFz
c1JlZlB0cjxFZGl0Q29tbWFuZENvbXBvc2l0aW9uPiBjbWQpCiAgICAgbm90aWZ5VGV4dEZyb21D
b250cm9scyhjbWQtPnN0YXJ0aW5nUm9vdEVkaXRhYmxlRWxlbWVudCgpLCBjbWQtPmVuZGluZ1Jv
b3RFZGl0YWJsZUVsZW1lbnQoKSk7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlv
bihjbWQtPnN0YXJ0aW5nU2VsZWN0aW9uKCkpOwotICAgIGNoYW5nZVNlbGVjdGlvbkFmdGVyQ29t
bWFuZChuZXdTZWxlY3Rpb24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0
aW9ucygpLCBjbWQtPnVuYXBwbHlFZGl0VHlwZSgpKTsKKyAgICBjaGFuZ2VTZWxlY3Rpb25BZnRl
ckNvbW1hbmQobmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlv
bk9wdGlvbnMoKSk7CiAgICAgZGlzcGF0Y2hFZGl0YWJsZUNvbnRlbnRDaGFuZ2VkRXZlbnRzKGNt
ZC0+c3RhcnRpbmdSb290RWRpdGFibGVFbGVtZW50KCksIGNtZC0+ZW5kaW5nUm9vdEVkaXRhYmxl
RWxlbWVudCgpKTsKIAogICAgIHVwZGF0ZUVkaXRvclVJTm93SWZTY2hlZHVsZWQoKTsKQEAgLTEy
NjQsNyArMTI2Myw3IEBAIHZvaWQgRWRpdG9yOjpwZXJmb3JtQ3V0T3JDb3B5KEVkaXRvckFjdGlv
blNwZWNpZmllciBhY3Rpb24pCiAKICAgICBkaWRXcml0ZVNlbGVjdGlvblRvUGFzdGVib2FyZCgp
OwogICAgIGlmIChhY3Rpb24gPT0gQ3V0QWN0aW9uKQotICAgICAgICBkZWxldGVTZWxlY3Rpb25X
aXRoU21hcnREZWxldGUoY2FuU21hcnRDb3B5T3JEZWxldGUoKSwgRWRpdEFjdGlvbkN1dCk7Cisg
ICAgICAgIGRlbGV0ZVNlbGVjdGlvbldpdGhTbWFydERlbGV0ZShjYW5TbWFydENvcHlPckRlbGV0
ZSgpKTsKIH0KIAogdm9pZCBFZGl0b3I6OnBhc3RlKCkKQEAgLTIyMzYsNyArMjIzNSw3IEBAIHZv
aWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdzQWZ0ZXJUeXBpbmdUb1dvcmQoY29uc3QgVmlzaWJs
ZVBvc2l0aW9uICZ3b3JkU3RhcnQsCiAKICAgICAgICAgaWYgKCFtX2ZyYW1lLmVkaXRvcigpLnNo
b3VsZEluc2VydFRleHQoYXV0b2NvcnJlY3RlZFN0cmluZywgbWlzc3BlbGxpbmdSYW5nZS5nZXQo
KSwgRWRpdG9ySW5zZXJ0QWN0aW9uVHlwZWQpKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAg
ICBtX2ZyYW1lLmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChhdXRvY29ycmVjdGVk
U3RyaW5nLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb25JbnNlcnQpOworICAgICAgICBtX2ZyYW1l
LmVkaXRvcigpLnJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dChhdXRvY29ycmVjdGVkU3RyaW5nLCBm
YWxzZSwgZmFsc2UpOwogCiAgICAgICAgIC8vIFJlc2V0IHRoZSBjaGFyZXQgb25lIGNoYXJhY3Rl
ciBmdXJ0aGVyLgogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLm1vdmVUbyhtX2ZyYW1lLnNl
bGVjdGlvbigpLnNlbGVjdGlvbigpLmVuZCgpKTsKQEAgLTI1ODIsNyArMjU4MSw3IEBAIHZvaWQg
RWRpdG9yOjpjaGFuZ2VCYWNrVG9SZXBsYWNlZFN0cmluZyhjb25zdCBTdHJpbmcmIHJlcGxhY2Vk
U3RyaW5nKQogICAgIAogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+cmVjb3JkQXV0
b2NvcnJlY3Rpb25SZXNwb25zZVJldmVyc2VkKHJlcGxhY2VkU3RyaW5nLCBzZWxlY3Rpb24pOwog
ICAgIFRleHRDaGVja2luZ1BhcmFncmFwaCBwYXJhZ3JhcGgoc2VsZWN0aW9uKTsKLSAgICByZXBs
YWNlU2VsZWN0aW9uV2l0aFRleHQocmVwbGFjZWRTdHJpbmcsIGZhbHNlLCBmYWxzZSwgRWRpdEFj
dGlvbkluc2VydCk7CisgICAgcmVwbGFjZVNlbGVjdGlvbldpdGhUZXh0KHJlcGxhY2VkU3RyaW5n
LCBmYWxzZSwgZmFsc2UpOwogICAgIFJlZlB0cjxSYW5nZT4gY2hhbmdlZFJhbmdlID0gcGFyYWdy
YXBoLnN1YnJhbmdlKHBhcmFncmFwaC5jaGVja2luZ1N0YXJ0KCksIHJlcGxhY2VkU3RyaW5nLmxl
bmd0aCgpKTsKICAgICBjaGFuZ2VkUmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCku
bWFya2VycygpLmFkZE1hcmtlcihjaGFuZ2VkUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpS
ZXBsYWNlbWVudCwgU3RyaW5nKCkpOwogICAgIG1fYWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci0+
bWFya1JldmVyc2VkKGNoYW5nZWRSYW5nZS5nZXQoKSk7CkBAIC0yODE2LDcgKzI4MTUsNyBAQCB2
b2lkIEVkaXRvcjo6dHJhbnNwb3NlKCkKICAgICAvLyBJbnNlcnQgdGhlIHRyYW5zcG9zZWQgY2hh
cmFjdGVycy4KICAgICBpZiAoIXNob3VsZEluc2VydFRleHQodHJhbnNwb3NlZCwgcmFuZ2UuZ2V0
KCksIEVkaXRvckluc2VydEFjdGlvblR5cGVkKSkKICAgICAgICAgcmV0dXJuOwotICAgIHJlcGxh
Y2VTZWxlY3Rpb25XaXRoVGV4dCh0cmFuc3Bvc2VkLCBmYWxzZSwgZmFsc2UsIEVkaXRBY3Rpb25J
bnNlcnQpOworICAgIHJlcGxhY2VTZWxlY3Rpb25XaXRoVGV4dCh0cmFuc3Bvc2VkLCBmYWxzZSwg
ZmFsc2UpOwogfQogCiB2b2lkIEVkaXRvcjo6YWRkVG9LaWxsUmluZyhSYW5nZSogcmFuZ2UsIGJv
b2wgcHJlcGVuZCkKQEAgLTI4NDgsNyArMjg0Nyw3IEBAIHZvaWQgRWRpdG9yOjpkaXNtaXNzQ29y
cmVjdGlvblBhbmVsQXNJZ25vcmVkKCkKICAgICBtX2FsdGVybmF0aXZlVGV4dENvbnRyb2xsZXIt
PmRpc21pc3MoUmVhc29uRm9yRGlzbWlzc2luZ0FsdGVybmF0aXZlVGV4dElnbm9yZWQpOwogfQog
Ci12b2lkIEVkaXRvcjo6Y2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZpc2libGVT
ZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlvbk9wdGlv
bnMgb3B0aW9ucywgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KQordm9pZCBFZGl0b3I6
OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBuZXdT
ZWxlY3Rpb24sICBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0aW9ucyBvcHRpb25zKQog
ewogICAgIC8vIElmIHRoZSBuZXcgc2VsZWN0aW9uIGlzIG9ycGhhbmVkLCB0aGVuIGRvbid0IHVw
ZGF0ZSB0aGUgc2VsZWN0aW9uLgogICAgIGlmIChuZXdTZWxlY3Rpb24uc3RhcnQoKS5pc09ycGhh
bigpIHx8IG5ld1NlbGVjdGlvbi5lbmQoKS5pc09ycGhhbigpKQpAQCAtMjg2MCw3ICsyODU5LDcg
QEAgdm9pZCBFZGl0b3I6OmNoYW5nZVNlbGVjdGlvbkFmdGVyQ29tbWFuZChjb25zdCBWaXNpYmxl
U2VsZWN0aW9uJiBuZXdTZWxlY3Rpb24sIEYKICAgICAvLyBTZWUgPHJkYXI6Ly9wcm9ibGVtLzU3
MjkzMTU+IFNvbWUgc2hvdWxkQ2hhbmdlU2VsZWN0ZWRET01SYW5nZSBjb250YWluIFJhbmdlcyBm
b3Igc2VsZWN0aW9ucyB0aGF0IGFyZSBubyBsb25nZXIgdmFsaWQKICAgICBib29sIHNlbGVjdGlv
bkRpZE5vdENoYW5nZURPTVBvc2l0aW9uID0gbmV3U2VsZWN0aW9uID09IG1fZnJhbWUuc2VsZWN0
aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbkRpZE5vdENoYW5nZURPTVBvc2l0
aW9uIHx8IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVj
dGlvbikpCi0gICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1NlbGVj
dGlvbiwgb3B0aW9ucywgaW50ZW50KTsKKyAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBvcHRpb25zKTsKIAogICAgIC8vIFNvbWUgZWRpdGluZyBv
cGVyYXRpb25zIGNoYW5nZSB0aGUgc2VsZWN0aW9uIHZpc3VhbGx5IHdpdGhvdXQgYWZmZWN0aW5n
IGl0cyBwb3NpdGlvbiB3aXRoaW4gdGhlIERPTS4KICAgICAvLyBGb3IgZXhhbXBsZSB3aGVuIHlv
dSBwcmVzcyByZXR1cm4gaW4gdGhlIGZvbGxvd2luZyAodGhlIGNhcmV0IGlzIG1hcmtlZCBieSBe
KToKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0VkaXRvci5oCmluZGV4IDEzMTNkYjNkZDAxZDk1MWJkZTk4ZmZhZGFj
ODAwNWZmZDk0ZmQwNzguLmE1N2Q0MmEwNGFiMGMwMDc2OGEzZjJmNDYzYjdjNzkwZDEyYTZlNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuaApAQCAtMTc0LDcgKzE3NCw3IEBAIHB1YmxpYzoKICNl
bmRpZgogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkZWxldGVXaXRoRGlyZWN0aW9uKFNlbGVj
dGlvbkRpcmVjdGlvbiwgVGV4dEdyYW51bGFyaXR5LCBib29sIGtpbGxSaW5nLCBib29sIGlzVHlw
aW5nQWN0aW9uKTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRlbGV0ZVNlbGVjdGlvbldpdGhT
bWFydERlbGV0ZShib29sIHNtYXJ0RGVsZXRlLCBFZGl0QWN0aW9uID0gRWRpdEFjdGlvbkRlbGV0
ZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBkZWxldGVTZWxlY3Rpb25XaXRoU21hcnREZWxl
dGUoYm9vbCBzbWFydERlbGV0ZSk7CiAgICAgdm9pZCBjbGVhclRleHQoKTsKICNpZiBQTEFURk9S
TShJT1MpCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMo
KTsKQEAgLTM4Miw4ICszODIsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCB0ZXh0RGlkQ2hhbmdlSW5U
ZXh0QXJlYShFbGVtZW50Kik7CiAgICAgV0VCQ09SRV9FWFBPUlQgV3JpdGluZ0RpcmVjdGlvbiBi
YXNlV3JpdGluZ0RpcmVjdGlvbkZvclNlbGVjdGlvblN0YXJ0KCkgY29uc3Q7CiAKLSAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxE
b2N1bWVudEZyYWdtZW50PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxh
Y2UsIGJvb2wgbWF0Y2hTdHlsZSwgRWRpdEFjdGlvbiA9IEVkaXRBY3Rpb25JbnNlcnQsIE1haWxC
bG9ja3F1b3RlSGFuZGxpbmcgPSBNYWlsQmxvY2txdW90ZUhhbmRsaW5nOjpSZXNwZWN0QmxvY2tx
dW90ZSk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXBsYWNlU2VsZWN0aW9uV2l0aFRleHQo
Y29uc3QgU3RyaW5nJiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2Us
IEVkaXRBY3Rpb24gPSBFZGl0QWN0aW9uSW5zZXJ0KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHJlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQoUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50
PiwgYm9vbCBzZWxlY3RSZXBsYWNlbWVudCwgYm9vbCBzbWFydFJlcGxhY2UsIGJvb2wgbWF0Y2hT
dHlsZSwgTWFpbEJsb2NrcXVvdGVIYW5kbGluZyA9IE1haWxCbG9ja3F1b3RlSGFuZGxpbmc6OlJl
c3BlY3RCbG9ja3F1b3RlKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcGxhY2VTZWxlY3Rp
b25XaXRoVGV4dChjb25zdCBTdHJpbmcmLCBib29sIHNlbGVjdFJlcGxhY2VtZW50LCBib29sIHNt
YXJ0UmVwbGFjZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBzZWxlY3Rpb25TdGFydEhhc01h
cmtlckZvcihEb2N1bWVudE1hcmtlcjo6TWFya2VyVHlwZSwgaW50IGZyb20sIGludCBsZW5ndGgp
IGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTWFya2Vyc0ZvcldvcmRzQWZmZWN0ZWRCeUVkaXRpbmco
Ym9vbCBvbmx5SGFuZGxlV29yZHNDb250YWluaW5nU2VsZWN0aW9uKTsKICAgICB2b2lkIGRlbGV0
ZWRBdXRvY29ycmVjdGlvbkF0UG9zaXRpb24oY29uc3QgUG9zaXRpb24mLCBjb25zdCBTdHJpbmcm
IG9yaWdpbmFsU3RyaW5nKTsKQEAgLTQ2OCw3ICs0NjgsNyBAQCBwcml2YXRlOgogICAgIGVudW0g
U2V0Q29tcG9zaXRpb25Nb2RlIHsgQ29uZmlybUNvbXBvc2l0aW9uLCBDYW5jZWxDb21wb3NpdGlv
biB9OwogICAgIHZvaWQgc2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiwgU2V0Q29tcG9zaXRp
b25Nb2RlKTsKIAotICAgIHZvaWQgY2hhbmdlU2VsZWN0aW9uQWZ0ZXJDb21tYW5kKGNvbnN0IFZp
c2libGVTZWxlY3Rpb24mIG5ld1NlbGVjdGlvbiwgRnJhbWVTZWxlY3Rpb246OlNldFNlbGVjdGlv
bk9wdGlvbnMsIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRl
bnQoKSk7CisgICAgdm9pZCBjaGFuZ2VTZWxlY3Rpb25BZnRlckNvbW1hbmQoY29uc3QgVmlzaWJs
ZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uLCBGcmFtZVNlbGVjdGlvbjo6U2V0U2VsZWN0aW9uT3B0
aW9ucyk7CiAKICAgICBlbnVtIEVkaXRvckFjdGlvblNwZWNpZmllciB7IEN1dEFjdGlvbiwgQ29w
eUFjdGlvbiB9OwogICAgIHZvaWQgcGVyZm9ybUN1dE9yQ29weShFZGl0b3JBY3Rpb25TcGVjaWZp
ZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3JDb21tYW5kLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKaW5kZXggN2E4MTY2
ODM1NWI3ZWUzMmIwNTZhNjBlM2RjNzhmNmQ0YjIzNmQ5OS4uNTExY2IwMmFlOGJmMWNkZmIxZTQy
ZDVkYjc4NzkzMGIyOGQyZmM5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9F
ZGl0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1h
bmQuY3BwCkBAIC0xOTIsNyArMTkyLDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUFwcGx5UGFyYWdy
YXBoU3R5bGUoRnJhbWUmIGZyYW1lLCBFZGl0b3JDb21tYW5kU291cmNlIHNvdXJjZSwKIHN0YXRp
YyBib29sIGV4ZWN1dGVJbnNlcnRGcmFnbWVudChGcmFtZSYgZnJhbWUsIFBhc3NSZWZQdHI8RG9j
dW1lbnRGcmFnbWVudD4gZnJhZ21lbnQpCiB7CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkp
OwotICAgIGFwcGx5Q29tbWFuZChSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBmcmFnbWVudCwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnRO
ZXN0aW5nLCBFZGl0QWN0aW9uSW5zZXJ0KSk7CisgICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIGZyYWdtZW50LCBSZXBsYWNl
U2VsZWN0aW9uQ29tbWFuZDo6UHJldmVudE5lc3RpbmcsIEVkaXRBY3Rpb25VbnNwZWNpZmllZCkp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxl
Y3Rpb24uY3BwCmluZGV4IDVkY2IxNDI4NTBmYzRjYWY0M2VkNzk5ZWI0NTg5NDJkNDg2ZjU0ZmQu
LjQ0MGYzNjY3ZTgwY2E1ZDk5NGNkMzhhZTJiNWIzNzllYjM2NmQxNzggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCkBAIC0yNiw3ICsyNiw2IEBACiAjaW5jbHVk
ZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRnJhbWVTZWxlY3Rpb24uaCIKIAotI2luY2x1ZGUgIkFY
T2JqZWN0Q2FjaGUuaCIKICNpbmNsdWRlICJDaGFyYWN0ZXJEYXRhLmgiCiAjaW5jbHVkZSAiRGVs
ZXRlU2VsZWN0aW9uQ29tbWFuZC5oIgogI2luY2x1ZGUgIkRvY3VtZW50LmgiCkBAIC0xNDAsNyAr
MTM5LDcgQEAgRWxlbWVudCogRnJhbWVTZWxlY3Rpb246OnJvb3RFZGl0YWJsZUVsZW1lbnRPckRv
Y3VtZW50RWxlbWVudCgpIGNvbnN0CiB2b2lkIEZyYW1lU2VsZWN0aW9uOjptb3ZlVG8oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uICZwb3MsIEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQsIEN1cnNv
ckFsaWduT25TY3JvbGwgYWxpZ24pCiB7CiAgICAgc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24ocG9zLmRlZXBFcXVpdmFsZW50KCksIHBvcy5kZWVwRXF1aXZhbGVudCgpLCBwb3MuYWZmaW5p
dHkoKSwgbV9zZWxlY3Rpb24uaXNEaXJlY3Rpb25hbCgpKSwKLSAgICAgICAgZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnModXNlclRyaWdnZXJlZCksIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50KCks
IGFsaWduKTsKKyAgICAgICAgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnModXNlclRyaWdnZXJl
ZCksIGFsaWduKTsKIH0KIAogdm9pZCBGcmFtZVNlbGVjdGlvbjo6bW92ZVRvKGNvbnN0IFZpc2li
bGVQb3NpdGlvbiAmYmFzZSwgY29uc3QgVmlzaWJsZVBvc2l0aW9uICZleHRlbnQsIEVVc2VyVHJp
Z2dlcmVkIHVzZXJUcmlnZ2VyZWQpCkBAIC0xNzEsOCArMTcwLDcgQEAgdm9pZCBGcmFtZVNlbGVj
dGlvbjo6bW92ZVdpdGhvdXRWYWxpZGF0aW9uVG8oY29uc3QgUG9zaXRpb24mIGJhc2UsIGNvbnN0
IFBvc2l0aW8KICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbjsKICAgICBuZXdTZWxl
Y3Rpb24uc2V0V2l0aG91dFZhbGlkYXRpb24oYmFzZSwgZXh0ZW50KTsKICAgICBuZXdTZWxlY3Rp
b24uc2V0SXNEaXJlY3Rpb25hbChzZWxlY3Rpb25IYXNEaXJlY3Rpb24pOwotICAgIEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50IGludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3Zl
LCBBWFRleHRTZWxlY3Rpb24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3Vz
LCBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVVua25vd24gfSk7Ci0gICAgc2V0U2VsZWN0aW9u
KG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IChzaG91bGRTZXRG
b2N1cyA/IDAgOiBEb05vdFNldEZvY3VzKSwgaW50ZW50KTsKKyAgICBzZXRTZWxlY3Rpb24obmV3
U2VsZWN0aW9uLCBkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucygpIHwgKHNob3VsZFNldEZvY3Vz
ID8gMCA6IERvTm90U2V0Rm9jdXMpKTsKIH0KIAogdm9pZCBEcmFnQ2FyZXRDb250cm9sbGVyOjpz
ZXRDYXJldFBvc2l0aW9uKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCkBAIC0yNTYs
MTMgKzI1NCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbkJ5TW91c2VJZkRp
ZmZlcmVudChjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBwYXNzCiAgICAgaWYgKG1fc2VsZWN0aW9u
ID09IG5ld1NlbGVjdGlvbiB8fCAhc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbikp
CiAgICAgICAgIHJldHVybjsKIAotICAgIAotICAgIEFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50IGlu
dGVudDsKLSAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNzaWJpbGl0eUVuYWJsZWQoKSAmJiBu
ZXdTZWxlY3Rpb24uaXNDYXJldCgpKQotICAgICAgICBpbnRlbnQgPSBBWFRleHRTdGF0ZUNoYW5n
ZUludGVudChBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlLCBBWFRleHRTZWxlY3Rp
b24geyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25EaXNjb250aWd1b3VzLCBBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eVVua25vd24gfSk7Ci0gICAgZWxzZQotICAgICAgICBpbnRlbnQgPSBBWFRl
eHRTdGF0ZUNoYW5nZUludGVudCgpOwotICAgIHNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGRl
ZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGaXJlU2VsZWN0RXZlbnQsIGludGVudCwgQWxp
Z25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBncmFudWxhcml0eSk7CisgICAgc2V0U2VsZWN0aW9u
KG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZpcmVTZWxlY3RF
dmVudCwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVlZGVkLCBncmFudWxhcml0eSk7CiB9CiAKIGJv
b2wgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2Uo
Y29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9uUG9zc2libHlXaXRob3V0RGlyZWN0
aW9uLCBTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMsIEN1cnNvckFsaWduT25TY3JvbGwgYWxp
Z24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKQEAgLTI4NCw3ICsyNzYsNyBAQCBib29s
IEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNv
bnN0IFZpc2libGVTZWxlY3RpbwogICAgIGlmIChEb2N1bWVudCogbmV3U2VsZWN0aW9uRG9jdW1l
bnQgPSBuZXdTZWxlY3Rpb24uYmFzZSgpLmRvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKFJlZlB0
cjxGcmFtZT4gbmV3U2VsZWN0aW9uRnJhbWUgPSBuZXdTZWxlY3Rpb25Eb2N1bWVudC0+ZnJhbWUo
KSkgewogICAgICAgICAgICAgaWYgKG5ld1NlbGVjdGlvbkZyYW1lICE9IG1fZnJhbWUgJiYgbmV3
U2VsZWN0aW9uRG9jdW1lbnQgIT0gbV9mcmFtZS0+ZG9jdW1lbnQoKSkgewotICAgICAgICAgICAg
ICAgIG5ld1NlbGVjdGlvbkZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24obmV3U2VsZWN0
aW9uLCBvcHRpb25zLCBBWFRleHRTdGF0ZUNoYW5nZUludGVudCgpLCBhbGlnbiwgZ3JhbnVsYXJp
dHkpOworICAgICAgICAgICAgICAgIG5ld1NlbGVjdGlvbkZyYW1lLT5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24obmV3U2VsZWN0aW9uLCBvcHRpb25zLCBhbGlnbiwgZ3JhbnVsYXJpdHkpOwogICAg
ICAgICAgICAgICAgIC8vIEl0J3MgcG9zc2libGUgdGhhdCBkdXJpbmcgdGhlIGFib3ZlIHNldCBz
ZWxlY3Rpb24sIHRoaXMgRnJhbWVTZWxlY3Rpb24gaGFzIGJlZW4gbW9kaWZpZWQgYnkKICAgICAg
ICAgICAgICAgICAvLyBzZWxlY3RGcmFtZUVsZW1lbnRJblBhcmVudElmRnVsbHlTZWxlY3RlZCwg
YnV0IHRoYXQgdGhlIHNlbGVjdGlvbiBpcyBubyBsb25nZXIgdmFsaWQgc2luY2UKICAgICAgICAg
ICAgICAgICAvLyB0aGUgZnJhbWUgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiBJZiB0aGlzIGlz
IHRoZSBjYXNlLCBjbGVhciBvdXIgc2VsZWN0aW9uLgpAQCAtMzI4LDcgKzMyMCw3IEBAIGJvb2wg
RnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29u
c3QgVmlzaWJsZVNlbGVjdGlvCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgRnJhbWVTZWxl
Y3Rpb246OnNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiBzZWxlY3Rpb24sIFNl
dFNlbGVjdGlvbk9wdGlvbnMgb3B0aW9ucywgQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50
LCBDdXJzb3JBbGlnbk9uU2Nyb2xsIGFsaWduLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkp
Cit2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlv
biYgc2VsZWN0aW9uLCBTZXRTZWxlY3Rpb25PcHRpb25zIG9wdGlvbnMsIEN1cnNvckFsaWduT25T
Y3JvbGwgYWxpZ24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKIHsKICAgICBpZiAoIXNl
dFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2Uoc2VsZWN0aW9uLCBvcHRpb25zLCBh
bGlnbiwgZ3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CkBAIC0zNDksNyArMzQxLDcgQEAg
dm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24m
IHNlbGVjdGlvbiwgU2V0U2VsZWN0aW8KICAgICBpZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+
bGF5b3V0UGVuZGluZygpKQogICAgICAgICByZXR1cm47CiAKLSAgICB1cGRhdGVBbmRSZXZlYWxT
ZWxlY3Rpb24oaW50ZW50KTsKKyAgICB1cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24oKTsKIH0KIAog
c3RhdGljIHZvaWQgdXBkYXRlU2VsZWN0aW9uQnlVcGRhdGluZ0xheW91dE9yU3R5bGUoRnJhbWUm
IGZyYW1lKQpAQCAtMzY4LDcgKzM2MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldE5lZWRz
U2VsZWN0aW9uVXBkYXRlKCkKICAgICAgICAgdmlldy0+Y2xlYXJTZWxlY3Rpb24oKTsKIH0KIAot
dm9pZCBGcmFtZVNlbGVjdGlvbjo6dXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKEFYVGV4dFN0YXRl
Q2hhbmdlSW50ZW50IGludGVudCkKK3ZvaWQgRnJhbWVTZWxlY3Rpb246OnVwZGF0ZUFuZFJldmVh
bFNlbGVjdGlvbigpCiB7CiAgICAgaWYgKCFtX3BlbmRpbmdTZWxlY3Rpb25VcGRhdGUpCiAgICAg
ICAgIHJldHVybjsKQEAgLTM4OCw3ICszODAsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjp1cGRh
dGVBbmRSZXZlYWxTZWxlY3Rpb24oQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KQogICAg
ICAgICByZXZlYWxTZWxlY3Rpb24oYWxpZ25tZW50LCBSZXZlYWxFeHRlbnQpOwogICAgIH0KIAot
ICAgIG5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoaW50ZW50KTsKKyAgICBu
b3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCk7CiAKICAgICBpZiAoYXV0byog
Y2xpZW50ID0gbV9mcmFtZS0+ZWRpdG9yKCkuY2xpZW50KCkpCiAgICAgICAgIGNsaWVudC0+ZGlk
Q2hhbmdlU2VsZWN0aW9uQW5kVXBkYXRlTGF5b3V0KCk7CkBAIC0xMDI5LDc1ICsxMDIxLDcgQEAg
VmlzaWJsZVBvc2l0aW9uIEZyYW1lU2VsZWN0aW9uOjptb2RpZnlNb3ZpbmdCYWNrd2FyZChUZXh0
R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHkKIHN0YXRpYyBib29sIGlzQm91bmRhcnkoVGV4dEdyYW51
bGFyaXR5IGdyYW51bGFyaXR5KQogewogICAgIHJldHVybiBncmFudWxhcml0eSA9PSBMaW5lQm91
bmRhcnkgfHwgZ3JhbnVsYXJpdHkgPT0gUGFyYWdyYXBoQm91bmRhcnkgfHwgZ3JhbnVsYXJpdHkg
PT0gRG9jdW1lbnRCb3VuZGFyeTsKLX0KLQotQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgRnJhbWVT
ZWxlY3Rpb246OnRleHRTZWxlY3Rpb25JbnRlbnQoRUFsdGVyYXRpb24gYWx0ZXIsIFNlbGVjdGlv
bkRpcmVjdGlvbiBkaXJlY3Rpb24sIFRleHRHcmFudWxhcml0eSBncmFudWxhcml0eSkKLXsKLSAg
ICBBWFRleHRTdGF0ZUNoYW5nZUludGVudCBpbnRlbnQgPSBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCgpOwotICAgIGJvb2wgZmxpcCA9IGZhbHNlOwotICAgIGlmIChhbHRlciA9PSBGcmFtZVNlbGVj
dGlvbjo6QWx0ZXJhdGlvbk1vdmUpIHsKLSAgICAgICAgaW50ZW50LnR5cGUgPSBBWFRleHRTdGF0
ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlOwotICAgICAgICBmbGlwID0gaXNSYW5nZSgpICYmIGRp
cmVjdGlvbk9mU2VsZWN0aW9uKCkgPT0gUlRMOwotICAgIH0gZWxzZQotICAgICAgICBpbnRlbnQu
dHlwZSA9IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZDsKLSAgICBzd2l0Y2gg
KGdyYW51bGFyaXR5KSB7Ci0gICAgY2FzZSBDaGFyYWN0ZXJHcmFudWxhcml0eToKLSAgICAgICAg
aW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
Q2hhcmFjdGVyOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdvcmRHcmFudWxhcml0eToKLSAg
ICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5V29yZDsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5
OgotICAgIGNhc2UgU2VudGVuY2VCb3VuZGFyeToKLSAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5n
cmFudWxhcml0eSA9IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2U7Ci0gICAgICAg
IGJyZWFrOwotICAgIGNhc2UgTGluZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGluZUJvdW5kYXJ5
OgotICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmdyYW51bGFyaXR5ID0gQVhUZXh0U2VsZWN0aW9u
R3JhbnVsYXJpdHlMaW5lOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFBhcmFncmFwaEdyYW51
bGFyaXR5OgotICAgIGNhc2UgUGFyYWdyYXBoQm91bmRhcnk6Ci0gICAgICAgIGludGVudC5zZWxl
Y3Rpb24uZ3JhbnVsYXJpdHkgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFncmFwaDsK
LSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBEb2N1bWVudEdyYW51bGFyaXR5OgotICAgIGNhc2Ug
RG9jdW1lbnRCb3VuZGFyeToKLSAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5ncmFudWxhcml0eSA9
IEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5RG9jdW1lbnQ7Ci0gICAgICAgIGJyZWFrOwotICAg
IH0KLSAgICBib29sIGJvdW5kYXJ5ID0gZmFsc2U7Ci0gICAgc3dpdGNoIChncmFudWxhcml0eSkg
ewotICAgIGNhc2UgQ2hhcmFjdGVyR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBXb3JkR3JhbnVsYXJp
dHk6Ci0gICAgY2FzZSBTZW50ZW5jZUdyYW51bGFyaXR5OgotICAgIGNhc2UgTGluZUdyYW51bGFy
aXR5OgotICAgIGNhc2UgUGFyYWdyYXBoR3JhbnVsYXJpdHk6Ci0gICAgY2FzZSBEb2N1bWVudEdy
YW51bGFyaXR5OgotICAgICAgICBicmVhazsKLSAgICBjYXNlIFNlbnRlbmNlQm91bmRhcnk6Ci0g
ICAgY2FzZSBMaW5lQm91bmRhcnk6Ci0gICAgY2FzZSBQYXJhZ3JhcGhCb3VuZGFyeToKLSAgICBj
YXNlIERvY3VtZW50Qm91bmRhcnk6Ci0gICAgICAgIGJvdW5kYXJ5ID0gdHJ1ZTsKLSAgICAgICAg
YnJlYWs7Ci0gICAgfQotICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7Ci0gICAgY2FzZSBEaXJlY3Rp
b25SaWdodDoKLSAgICBjYXNlIERpcmVjdGlvbkZvcndhcmQ6Ci0gICAgICAgIGlmIChib3VuZGFy
eSkKLSAgICAgICAgICAgIGludGVudC5zZWxlY3Rpb24uZGlyZWN0aW9uID0gZmxpcCA/IEFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZyA6IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVu
ZDsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24g
PSBmbGlwID8gQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uUHJldmlvdXMgOiBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25OZXh0OwotICAgICAgICBicmVhazsKLSAgICBjYXNlIERpcmVjdGlvbkxlZnQ6
Ci0gICAgY2FzZSBEaXJlY3Rpb25CYWNrd2FyZDoKLSAgICAgICAgaWYgKGJvdW5kYXJ5KQotICAg
ICAgICAgICAgaW50ZW50LnNlbGVjdGlvbi5kaXJlY3Rpb24gPSBmbGlwID8gQVhUZXh0U2VsZWN0
aW9uRGlyZWN0aW9uRW5kIDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nOwotICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBpbnRlbnQuc2VsZWN0aW9uLmRpcmVjdGlvbiA9IGZsaXAg
PyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0IDogQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9u
UHJldmlvdXM7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICByZXR1cm4gaW50ZW50OwotfQor
fSAgICAKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBT
ZWxlY3Rpb25EaXJlY3Rpb24gZGlyZWN0aW9uLCBUZXh0R3JhbnVsYXJpdHkgZ3JhbnVsYXJpdHks
IEVVc2VyVHJpZ2dlcmVkIHVzZXJUcmlnZ2VyZWQpCiB7CkBAIC0xMTUzLDExICsxMDc3LDYgQEAg
Ym9vbCBGcmFtZVNlbGVjdGlvbjo6bW9kaWZ5KEVBbHRlcmF0aW9uIGFsdGVyLCBTZWxlY3Rpb25E
aXJlY3Rpb24gZGlyZWN0aW9uLCBUZXgKICAgICAgICAgaWYgKCF3YXNSYW5nZSAmJiBhbHRlciA9
PSBBbHRlcmF0aW9uTW92ZSAmJiBwb3NpdGlvbiA9PSBvcmlnaW5hbFN0YXJ0UG9zaXRpb24pCiAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAobV9mcmFtZSAmJiBBWE9iamVjdENh
Y2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSB7Ci0gICAgICAgIGlmIChBWE9iamVjdENhY2hl
KiBjYWNoZSA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQot
ICAgICAgICAgICAgY2FjaGUtPnNldFRleHRTZWxlY3Rpb25JbnRlbnQodGV4dFNlbGVjdGlvbklu
dGVudChhbHRlciwgZGlyZWN0aW9uLCBncmFudWxhcml0eSkpOwotICAgIH0KLQogICAgIC8vIFNv
bWUgb2YgdGhlIGFib3ZlIG9wZXJhdGlvbnMgc2V0IGFuIHhQb3NGb3JWZXJ0aWNhbEFycm93TmF2
aWdhdGlvbi4KICAgICAvLyBTZXR0aW5nIGEgc2VsZWN0aW9uIHdpbGwgY2xlYXIgaXQsIHNvIHNh
dmUgaXQgdG8gcG9zc2libHkgcmVzdG9yZSBsYXRlci4KICAgICAvLyBOb3RlOiB0aGUgU1RBUlQg
cG9zaXRpb24gdHlwZSBpcyBhcmJpdHJhcnkgYmVjYXVzZSBpdCBpcyB1bnVzZWQsIGl0IHdvdWxk
IGJlCkBAIC0xNzkxLDEwICsxNzEwLDggQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0QWxs
KCkKIAogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb246
OnNlbGVjdGlvbkZyb21Db250ZW50c09mTm9kZShyb290LmdldCgpKSk7CiAKLSAgICBpZiAoc2hv
dWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpIHsKLSAgICAgICAgQVhUZXh0U3RhdGVD
aGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCwg
QVhUZXh0U2VsZWN0aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywg
QVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlBbGwgfSk7Ci0gICAgICAgIHNldFNlbGVjdGlvbihu
ZXdTZWxlY3Rpb24sIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCkgfCBGaXJlU2VsZWN0RXZl
bnQsIGludGVudCk7Ci0gICAgfQorICAgIGlmIChzaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2Vs
ZWN0aW9uKSkKKyAgICAgICAgc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlvbiwgZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnMoKSB8IEZpcmVTZWxlY3RFdmVudCk7CiB9CiAKIGJvb2wgRnJhbWVTZWxl
Y3Rpb246OnNldFNlbGVjdGVkUmFuZ2UoUmFuZ2UqIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHks
IGJvb2wgY2xvc2VUeXBpbmcpCkBAIC0yNTA2LDcgKzI0MjMsNyBAQCBWaXNpYmxlU2VsZWN0aW9u
IEZyYW1lU2VsZWN0aW9uOjp3b3JkU2VsZWN0aW9uQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKGNv
bnN0IFZpcwogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24gPSBmcmFtZVNlbGVj
dGlvbi5zZWxlY3Rpb24oKTsKICAgICBuZXdTZWxlY3Rpb24uZXhwYW5kVXNpbmdHcmFudWxhcml0
eShXb3JkR3JhbnVsYXJpdHkpOwotICAgIGZyYW1lU2VsZWN0aW9uLnNldFNlbGVjdGlvbihuZXdT
ZWxlY3Rpb24sIGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50KCksIEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgZnJhbWVTZWxlY3Rpb24uZ3Jh
bnVsYXJpdHkoKSk7CisgICAgZnJhbWVTZWxlY3Rpb24uc2V0U2VsZWN0aW9uKG5ld1NlbGVjdGlv
biwgZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSwgQWxpZ25DdXJzb3JPblNjcm9sbElmTmVl
ZGVkLCBmcmFtZVNlbGVjdGlvbi5ncmFudWxhcml0eSgpKTsKIAogICAgIFBvc2l0aW9uIHN0YXJ0
UG9zKGZyYW1lU2VsZWN0aW9uLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgIFBvc2l0aW9uIGVu
ZFBvcyhmcmFtZVNlbGVjdGlvbi5zZWxlY3Rpb24oKS5lbmQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0ZyYW1lU2VsZWN0aW9uLmgKaW5kZXggOTU3YjVkMTAzYWFlY2RlOGU0ZTAwZGNmNjI0YTI4
MTNkNDU4MDIwNy4uMGU0ZTI4ZWUwMGQ1NjRlZTU2YWIyZDM5YzcxODk4OTBhZTEwNzg2NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uaApAQCAtMjYsNyArMjYsNiBAQAog
I2lmbmRlZiBGcmFtZVNlbGVjdGlvbl9oCiAjZGVmaW5lIEZyYW1lU2VsZWN0aW9uX2gKIAotI2lu
Y2x1ZGUgIkFYVGV4dFN0YXRlQ2hhbmdlSW50ZW50LmgiCiAjaW5jbHVkZSAiRWRpdGluZ1N0eWxl
LmgiCiAjaW5jbHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheW91dFJlY3QuaCIKQEAgLTE0
NSw3ICsxNDQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBtb3ZlV2l0aG91dFZhbGlkYXRpb25Ubyhj
b25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwgYm9vbCBzZWxlY3Rpb25IYXNEaXJlY3Rp
b24sIGJvb2wgc2hvdWxkU2V0Rm9jdXMpOwogCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9zZWxlY3Rpb247IH0KLSAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIHNldFNlbGVjdGlvbihjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgU2V0U2VsZWN0
aW9uT3B0aW9ucyA9IGRlZmF1bHRTZXRTZWxlY3Rpb25PcHRpb25zKCksIEFYVGV4dFN0YXRlQ2hh
bmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSwgQ3Vyc29yQWxpZ25PblNjcm9s
bCA9IEFsaWduQ3Vyc29yT25TY3JvbGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFj
dGVyR3JhbnVsYXJpdHkpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0U2VsZWN0aW9uKGNv
bnN0IFZpc2libGVTZWxlY3Rpb24mLCBTZXRTZWxlY3Rpb25PcHRpb25zID0gZGVmYXVsdFNldFNl
bGVjdGlvbk9wdGlvbnMoKSwgQ3Vyc29yQWxpZ25PblNjcm9sbCA9IEFsaWduQ3Vyc29yT25TY3Jv
bGxJZk5lZWRlZCwgVGV4dEdyYW51bGFyaXR5ID0gQ2hhcmFjdGVyR3JhbnVsYXJpdHkpOwogICAg
IFdFQkNPUkVfRVhQT1JUIGJvb2wgc2V0U2VsZWN0ZWRSYW5nZShSYW5nZSosIEVBZmZpbml0eSwg
Ym9vbCBjbG9zZVR5cGluZyk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZWxlY3RBbGwoKTsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGNsZWFyKCk7CkBAIC0yNzMsNyArMjcyLDcgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBlbnVtIEVQb3NpdGlvblR5cGUgeyBTVEFSVCwgRU5ELCBCQVNF
LCBFWFRFTlQgfTsKIAotICAgIHZvaWQgdXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKEFYVGV4dFN0
YXRlQ2hhbmdlSW50ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CisgICAgdm9pZCB1
cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24oKTsKICAgICB2b2lkIHVwZGF0ZURhdGFEZXRlY3RvcnNG
b3JTZWxlY3Rpb24oKTsKIAogICAgIGJvb2wgc2V0U2VsZWN0aW9uV2l0aG91dFVwZGF0aW5nQXBw
ZWFyYW5jZShjb25zdCBWaXNpYmxlU2VsZWN0aW9uJiwgU2V0U2VsZWN0aW9uT3B0aW9ucywgQ3Vy
c29yQWxpZ25PblNjcm9sbCwgVGV4dEdyYW51bGFyaXR5KTsKQEAgLTI5OCwxMSArMjk3LDEwIEBA
IHByaXZhdGU6CiAKICAgICBMYXlvdXRVbml0IGxpbmVEaXJlY3Rpb25Qb2ludEZvckJsb2NrRGly
ZWN0aW9uTmF2aWdhdGlvbihFUG9zaXRpb25UeXBlKTsKIAotICAgIEFYVGV4dFN0YXRlQ2hhbmdl
SW50ZW50IHRleHRTZWxlY3Rpb25JbnRlbnQoRUFsdGVyYXRpb24sIFNlbGVjdGlvbkRpcmVjdGlv
biwgVGV4dEdyYW51bGFyaXR5KTsKICNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpCi0gICAgdm9pZCBu
b3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKEFYVGV4dFN0YXRlQ2hhbmdlSW50
ZW50ID0gQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQoKSk7CisgICAgdm9pZCBub3RpZnlBY2Nlc3Np
YmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCk7CiAjZWxzZQotICAgIHZvaWQgbm90aWZ5QWNjZXNz
aWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZShBWFRleHRTZWxlY3Rpb25JbnRlbnQpIHsgfQorICAg
IHZvaWQgbm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgpIHsgfQogI2VuZGlm
CiAKICAgICB2b2lkIHVwZGF0ZVNlbGVjdGlvbkNhY2hlc0lmU2VsZWN0aW9uSXNJbnNpZGVUZXh0
Rm9ybUNvbnRyb2woRVVzZXJUcmlnZ2VyZWQpOwpAQCAtMzY5LDcgKzM2Nyw3IEBAIGlubGluZSB2
b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRUeXBpbmdTdHlsZShQYXNzUmVmUHRyPEVkaXRpbmdTdHls
ZT4gc3R5bGUpCiAKICNpZiAhKFBMQVRGT1JNKENPQ09BKSB8fCBQTEFURk9STShHVEspIHx8IFBM
QVRGT1JNKEVGTCkpCiAjaWYgSEFWRShBQ0NFU1NJQklMSVRZKQotaW5saW5lIHZvaWQgRnJhbWVT
ZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoQVhUZXh0U3Rh
dGVDaGFuZ2VJbnRlbnQpCitpbmxpbmUgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNz
aWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgpCiB7CiB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCmluZGV4IDk0
YWYwNDQyYmMxNjM0NDhjOTNmYTJiNDc1ZDliNzZiNWEwMzI1Y2QuLjUzOTRlN2UwOWIxODJlMjBj
MzAyNjgwODg3OGRjZjY2NjQ2OTFiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmNwcApAQCAtMzksOCArMzksOCBAQAogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKLUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6Okluc2VydElu
dG9UZXh0Tm9kZUNvbW1hbmQoUmVmUHRyPFRleHQ+JiYgbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBj
b25zdCBTdHJpbmcmIHRleHQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IFNpbXBs
ZUVkaXRDb21tYW5kKG5vZGUtPmRvY3VtZW50KCksIGVkaXRpbmdBY3Rpb24pCitJbnNlcnRJbnRv
VGV4dE5vZGVDb21tYW5kOjpJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKFBhc3NSZWZQdHI8VGV4
dD4gbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQpCisgICAgOiBTaW1w
bGVFZGl0Q29tbWFuZChub2RlLT5kb2N1bWVudCgpKQogICAgICwgbV9ub2RlKG5vZGUpCiAgICAg
LCBtX29mZnNldChvZmZzZXQpCiAgICAgLCBtX3RleHQodGV4dCkKQEAgLTY2LDggKzY2LDggQEAg
dm9pZCBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpkb0FwcGx5KCkKIAogICAgIG1fbm9kZS0+
aW5zZXJ0RGF0YShtX29mZnNldCwgbV90ZXh0LCBJR05PUkVfRVhDRVBUSU9OKTsKIAotICAgIGlm
IChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQotICAgICAgICBub3RpZnlB
Y2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShtX25vZGUuZ2V0KCksIGFwcGx5RWRpdFR5cGUoKSwg
bV90ZXh0LCBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24obV9ub2RlLCBtX29mZnNldCkpKTsKKyAg
ICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpKQorICAgICAgICBjYWNoZS0+bm9kZVRleHRDaGFuZ2VOb3RpZmljYXRpb24obV9ub2Rl
LmdldCgpLCBBWE9iamVjdENhY2hlOjpBWFRleHRJbnNlcnRlZCwgbV9vZmZzZXQsIG1fdGV4dCk7
CiB9CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC04NCw4ICs4NCw4IEBAIHZvaWQgSW5zZXJ0SW50
b1RleHROb2RlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKICAgICAgICAgcmV0dXJuOwogICAgICAgICAK
ICAgICAvLyBOZWVkIHRvIG5vdGlmeSB0aGlzIGJlZm9yZSBhY3R1YWxseSBkZWxldGluZyB0aGUg
dGV4dAotICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQotICAg
ICAgICBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENoYW5nZShtX25vZGUuZ2V0KCksIHVuYXBw
bHlFZGl0VHlwZSgpLCBtX3RleHQsIFZpc2libGVQb3NpdGlvbihQb3NpdGlvbihtX25vZGUsIG1f
b2Zmc2V0KSkpOworICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3VtZW50KCkuZXhp
c3RpbmdBWE9iamVjdENhY2hlKCkpCisgICAgICAgIGNhY2hlLT5ub2RlVGV4dENoYW5nZU5vdGlm
aWNhdGlvbihtX25vZGUuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6OkFYVGV4dERlbGV0ZWQsIG1fb2Zm
c2V0LCBtX3RleHQpOwogCiAgICAgbV9ub2RlLT5kZWxldGVEYXRhKG1fb2Zmc2V0LCBtX3RleHQu
bGVuZ3RoKCksIElHTk9SRV9FWENFUFRJT04pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kLmggYi9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaAppbmRleCAwNzYwOTA5NjBjOGEwNTg2
NWJlMWRiMTA5OWU5MWExYmE4NjkzZjg5Li4zMTBiYmIzNDA2NWNmMmE4NzAxZDJjYzExYzVhOGY5
ZTE2NzEwNjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuaApAQCAtMzQsMTcgKzM0LDE0IEBAIGNsYXNzIFRleHQ7CiAKIGNsYXNz
IEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQgOiBwdWJsaWMgU2ltcGxlRWRpdENvbW1hbmQgewog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZD4gY3JlYXRl
KFJlZlB0cjxUZXh0PiYmIG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0
LCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0aW9uSW5zZXJ0KQorICAgIHN0YXRp
YyBSZWY8SW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8VGV4dD4g
bm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQpCiAgICAgewotICAgICAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKFdURjo6bW92
ZShub2RlKSwgb2Zmc2V0LCB0ZXh0LCBlZGl0aW5nQWN0aW9uKSk7CisgICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQobm9kZSwgb2Zmc2V0LCB0ZXh0
KSk7CiAgICAgfQogCi0gICAgY29uc3QgU3RyaW5nJiBpbnNlcnRlZFRleHQoKTsKLQotcHJvdGVj
dGVkOgotICAgIEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQoUmVmUHRyPFRleHQ+JiYgbm9kZSwg
dW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIEVkaXRBY3Rpb24gZWRpdGluZ0Fj
dGlvbik7Ci0KIHByaXZhdGU6CisgICAgSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZChQYXNzUmVm
UHRyPFRleHQ+IG5vZGUsIHVuc2lnbmVkIG9mZnNldCwgY29uc3QgU3RyaW5nJiB0ZXh0KTsKKwog
ICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRv
VW5hcHBseSgpIG92ZXJyaWRlOwogI2lmIFBMQVRGT1JNKElPUykKQEAgLTYwLDExICs1Nyw2IEBA
IHByaXZhdGU6CiAgICAgU3RyaW5nIG1fdGV4dDsKIH07CiAKLWlubGluZSBjb25zdCBTdHJpbmcm
IEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQ6Omluc2VydGVkVGV4dCgpCi17Ci0gICAgcmV0dXJu
IG1fdGV4dDsKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L0luc2VydE5vZGVCZWZvcmVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuY3BwCmluZGV4IGM2YjIyOWI4MDZjMGRlYzEzNTQyZGU5YzNk
YTJiNmNhZjQyODRkNTQuLmQxNmI1ZDYxZTFkYjRjMjc3Mzk3MjYxMWYyYTI2NTE1YzI4NzU0YTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1h
bmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1h
bmQuY3BwCkBAIC0yOSwxMyArMjksMTMgQEAKICNpbmNsdWRlICJBWE9iamVjdENhY2hlLmgiCiAj
aW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Db2RlUGxhY2Vob2xkZXIu
aCIKLSNpbmNsdWRlICJUZXh0LmgiCiAjaW5jbHVkZSAiaHRtbGVkaXRpbmcuaCIKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCi1JbnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6SW5zZXJ0Tm9kZUJlZm9y
ZUNvbW1hbmQoUmVmUHRyPE5vZGU+JiYgaW5zZXJ0Q2hpbGQsIFJlZlB0cjxOb2RlPiYmIHJlZkNo
aWxkLCBTaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSBzaG91bGRBc3N1bWVDb250
ZW50SXNBbHdheXNFZGl0YWJsZSwgRWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKQotICAgIDogU2lt
cGxlRWRpdENvbW1hbmQocmVmQ2hpbGQtPmRvY3VtZW50KCksIGVkaXRpbmdBY3Rpb24pCitJbnNl
cnROb2RlQmVmb3JlQ29tbWFuZDo6SW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQoUGFzc1JlZlB0cjxO
b2RlPiBpbnNlcnRDaGlsZCwgUGFzc1JlZlB0cjxOb2RlPiByZWZDaGlsZCwKKyAgICBTaG91bGRB
c3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSBzaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNF
ZGl0YWJsZSkKKyAgICA6IFNpbXBsZUVkaXRDb21tYW5kKHJlZkNoaWxkLT5kb2N1bWVudCgpKQog
ICAgICwgbV9pbnNlcnRDaGlsZChpbnNlcnRDaGlsZCkKICAgICAsIG1fcmVmQ2hpbGQocmVmQ2hp
bGQpCiAgICAgLCBtX3Nob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKHNob3VsZEFz
c3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKQpAQCAtNTcsMTAgKzU3LDggQEAgdm9pZCBJbnNl
cnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9BcHBseSgpCiAKICAgICBwYXJlbnQtPmluc2VydEJlZm9y
ZShtX2luc2VydENoaWxkLmdldCgpLCBtX3JlZkNoaWxkLmdldCgpLCBJR05PUkVfRVhDRVBUSU9O
KTsKIAotICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKSB7Ci0g
ICAgICAgIFBvc2l0aW9uIHBvc2l0aW9uID0gaXM8VGV4dD4obV9pbnNlcnRDaGlsZC5nZXQoKSkg
PyBQb3NpdGlvbihkb3duY2FzdDxUZXh0PihtX2luc2VydENoaWxkLmdldCgpKSwgMCkgOiBjcmVh
dGVMZWdhY3lFZGl0aW5nUG9zaXRpb24obV9pbnNlcnRDaGlsZC5nZXQoKSwgMCk7Ci0gICAgICAg
IG5vdGlmeUFjY2Vzc2liaWxpdHlGb3JUZXh0Q2hhbmdlKG1faW5zZXJ0Q2hpbGQuZ2V0KCksIGFw
cGx5RWRpdFR5cGUoKSwgbV9pbnNlcnRDaGlsZC0+bm9kZVZhbHVlKCksIFZpc2libGVQb3NpdGlv
bihwb3NpdGlvbikpOwotICAgIH0KKyAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1
bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgICAgICBjYWNoZS0+bm9kZVRleHRD
aGFuZ2VOb3RpZmljYXRpb24obV9pbnNlcnRDaGlsZC5nZXQoKSwgQVhPYmplY3RDYWNoZTo6QVhU
ZXh0SW5zZXJ0ZWQsIDAsIG1faW5zZXJ0Q2hpbGQtPm5vZGVWYWx1ZSgpKTsKIH0KIAogdm9pZCBJ
bnNlcnROb2RlQmVmb3JlQ29tbWFuZDo6ZG9VbmFwcGx5KCkKQEAgLTY5LDEwICs2Nyw4IEBAIHZv
aWQgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQ6OmRvVW5hcHBseSgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIC8vIE5lZWQgdG8gbm90aWZ5IHRoaXMgYmVmb3JlIGFjdHVhbGx5IGRlbGV0aW5nIHRo
ZSB0ZXh0Ci0gICAgaWYgKEFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpIHsK
LSAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBpczxUZXh0PihtX2luc2VydENoaWxkLmdldCgp
KSA/IFBvc2l0aW9uKGRvd25jYXN0PFRleHQ+KG1faW5zZXJ0Q2hpbGQuZ2V0KCkpLCAwKSA6IGNy
ZWF0ZUxlZ2FjeUVkaXRpbmdQb3NpdGlvbihtX2luc2VydENoaWxkLmdldCgpLCAwKTsKLSAgICAg
ICAgbm90aWZ5QWNjZXNzaWJpbGl0eUZvclRleHRDaGFuZ2UobV9pbnNlcnRDaGlsZC5nZXQoKSwg
dW5hcHBseUVkaXRUeXBlKCksIG1faW5zZXJ0Q2hpbGQtPm5vZGVWYWx1ZSgpLCBWaXNpYmxlUG9z
aXRpb24ocG9zaXRpb24pKTsKLSAgICB9CisgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0g
ZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAgICAgY2FjaGUtPm5vZGVU
ZXh0Q2hhbmdlTm90aWZpY2F0aW9uKG1faW5zZXJ0Q2hpbGQuZ2V0KCksIEFYT2JqZWN0Q2FjaGU6
OkFYVGV4dERlbGV0ZWQsIDAsIG1faW5zZXJ0Q2hpbGQtPm5vZGVWYWx1ZSgpKTsKIAogICAgIG1f
aW5zZXJ0Q2hpbGQtPnJlbW92ZShJR05PUkVfRVhDRVBUSU9OKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQuaAppbmRleCA1Y2VhMjFjZDlm
YjFmNzQyYTkyOGQ4YzdjMTZhNTU2MjIyNzVhMDY2Li5kNGI3NjJkYzhkZDUxMDQ2NmU3YTliNDk5
ZGJkYWQyYjdjYzNlMjg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dE5vZGVCZWZvcmVDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9JbnNlcnRO
b2RlQmVmb3JlQ29tbWFuZC5oCkBAIC0zMiwyMyArMzIsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBJbnNlcnROb2RlQmVmb3JlQ29tbWFuZCA6IHB1YmxpYyBTaW1wbGVFZGl0Q29t
bWFuZCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxJbnNlcnROb2RlQmVmb3JlQ29tbWFuZD4g
Y3JlYXRlKFJlZlB0cjxOb2RlPiYmIGNoaWxkVG9JbnNlcnQsIFJlZlB0cjxOb2RlPiYmIGNoaWxk
VG9JbnNlcnRCZWZvcmUsCi0gICAgICAgIFNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRh
YmxlIHNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlLCBFZGl0QWN0aW9uIGVkaXRp
bmdBY3Rpb24gPSBFZGl0QWN0aW9uSW5zZXJ0KQorICAgIHN0YXRpYyBSZWY8SW5zZXJ0Tm9kZUJl
Zm9yZUNvbW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IGNoaWxkVG9JbnNlcnQsIFBhc3NS
ZWZQdHI8Tm9kZT4gY2hpbGRUb0luc2VydEJlZm9yZSwKKyAgICAgICAgU2hvdWxkQXNzdW1lQ29u
dGVudElzQWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUp
CiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBJbnNlcnROb2RlQmVmb3JlQ29t
bWFuZChXVEY6Om1vdmUoY2hpbGRUb0luc2VydCksIFdURjo6bW92ZShjaGlsZFRvSW5zZXJ0QmVm
b3JlKSwgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUsIGVkaXRpbmdBY3Rpb24p
KTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQo
Y2hpbGRUb0luc2VydCwgY2hpbGRUb0luc2VydEJlZm9yZSwgc2hvdWxkQXNzdW1lQ29udGVudElz
QWx3YXlzRWRpdGFibGUpKTsKICAgICB9CiAKLXByb3RlY3RlZDoKLSAgICBJbnNlcnROb2RlQmVm
b3JlQ29tbWFuZChSZWZQdHI8Tm9kZT4mJiBjaGlsZFRvSW5zZXJ0LCBSZWZQdHI8Tm9kZT4mJiBj
aGlsZFRvSW5zZXJ0QmVmb3JlLCBTaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSwg
RWRpdEFjdGlvbik7Ci0KIHByaXZhdGU6CisgICAgSW5zZXJ0Tm9kZUJlZm9yZUNvbW1hbmQoUGFz
c1JlZlB0cjxOb2RlPiBjaGlsZFRvSW5zZXJ0LCBQYXNzUmVmUHRyPE5vZGU+IGNoaWxkVG9JbnNl
cnRCZWZvcmUsIFNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlKTsKKwogICAgIHZp
cnR1YWwgdm9pZCBkb0FwcGx5KCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRvVW5hcHBs
eSgpIG92ZXJyaWRlOwotCisgICAgCiAjaWZuZGVmIE5ERUJVRwogICAgIHZpcnR1YWwgdm9pZCBn
ZXROb2Rlc0luQ29tbWFuZChIYXNoU2V0PE5vZGUqPiYpIG92ZXJyaWRlOwogI2VuZGlmCi0KKyAg
ICAKICAgICBSZWZQdHI8Tm9kZT4gbV9pbnNlcnRDaGlsZDsKICAgICBSZWZQdHI8Tm9kZT4gbV9y
ZWZDaGlsZDsKICAgICBTaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSBtX3Nob3Vs
ZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5jcHAKaW5kZXgg
N2RkMDE2MGNkMDM0M2RhYWRmMTI0MzQxMmUzZWFhZmYxNjE3ZDY1YS4uMjEyODI5YzQ0OTM5NjQ0
ZDM1MGZhYjA5MDZhOTUzMzgyMjA4YTc4YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9JbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL0luc2VydFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuY3BwCkBAIC01OSw4
ICs1OSw4IEBAIHN0YXRpYyBFbGVtZW50KiBoaWdoZXN0VmlzdWFsbHlFcXVpdmFsZW50RGl2QmVs
b3dSb290KEVsZW1lbnQqIHN0YXJ0QmxvY2spCiAgICAgcmV0dXJuIGN1ckJsb2NrOwogfQogCi1J
bnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JD
b21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBtdXN0VXNlRGVmYXVsdFBhcmFncmFwaEVs
ZW1lbnQsIGJvb2wgcGFzdGVCbG9ja3F1dG9lSW50b1VucXVvdGVkQXJlYSwgRWRpdEFjdGlvbiBl
ZGl0aW5nQWN0aW9uKQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQsIGVkaXRp
bmdBY3Rpb24pCitJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kOjpJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kKERvY3VtZW50JiBkb2N1bWVudCwgYm9vbCBtdXN0VXNlRGVmYXVs
dFBhcmFncmFwaEVsZW1lbnQsIGJvb2wgcGFzdGVCbG9ja3F1dG9lSW50b1VucXVvdGVkQXJlYSkK
KyAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogICAgICwgbV9tdXN0VXNlRGVm
YXVsdFBhcmFncmFwaEVsZW1lbnQobXVzdFVzZURlZmF1bHRQYXJhZ3JhcGhFbGVtZW50KQogICAg
ICwgbV9wYXN0ZUJsb2NrcXV0b2VJbnRvVW5xdW90ZWRBcmVhKHBhc3RlQmxvY2txdXRvZUludG9V
bnF1b3RlZEFyZWEpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0luc2Vy
dFBhcmFncmFwaFNlcGFyYXRvckNvbW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oCmluZGV4IDY3MzQxOWUxOTBmNTE1ZWI1NjMz
ODJkMTNmY2M3OWRmOWE4OTA4ZjIuLjEyODFmMGMxZTlmNzczN2RkYWU1YmI5NzlhZmYzYmY5NDY5
ZmZhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9yQ29tbWFuZC5oCkBAIC0zNCwxMyArMzQsMTMgQEAgY2xhc3MgRWRpdGlu
Z1N0eWxlOwogCiBjbGFzcyBJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21tYW5kIDogcHVibGlj
IENvbXBvc2l0ZUVkaXRDb21tYW5kIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPEluc2VydFBh
cmFncmFwaFNlcGFyYXRvckNvbW1hbmQ+IGNyZWF0ZShEb2N1bWVudCYgZG9jdW1lbnQsIGJvb2wg
dXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQgPSBmYWxzZSwgYm9vbCBwYXN0ZUJsb2NrcXV0b2VJ
bnRvVW5xdW90ZWRBcmVhID0gZmFsc2UsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbiA9IEVkaXRB
Y3Rpb25JbnNlcnQpCisgICAgc3RhdGljIFJlZjxJbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3JDb21t
YW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBib29sIHVzZURlZmF1bHRQYXJhZ3JhcGhF
bGVtZW50ID0gZmFsc2UsIGJvb2wgcGFzdGVCbG9ja3F1dG9lSW50b1VucXVvdGVkQXJlYSA9IGZh
bHNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zZXJ0UGFyYWdyYXBo
U2VwYXJhdG9yQ29tbWFuZChkb2N1bWVudCwgdXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQsIHBh
c3RlQmxvY2txdXRvZUludG9VbnF1b3RlZEFyZWEsIGVkaXRpbmdBY3Rpb24pKTsKKyAgICAgICAg
cmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZChkb2N1
bWVudCwgdXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQsIHBhc3RlQmxvY2txdXRvZUludG9VbnF1
b3RlZEFyZWEpKTsKICAgICB9CiAKIHByaXZhdGU6Ci0gICAgSW5zZXJ0UGFyYWdyYXBoU2VwYXJh
dG9yQ29tbWFuZChEb2N1bWVudCYsIGJvb2wgdXNlRGVmYXVsdFBhcmFncmFwaEVsZW1lbnQsIGJv
b2wgcGFzdGVCbG9ja3F1dG9lSW50b1VucXVvdGVkQXJlYSwgRWRpdEFjdGlvbik7CisgICAgSW5z
ZXJ0UGFyYWdyYXBoU2VwYXJhdG9yQ29tbWFuZChEb2N1bWVudCYsIGJvb2wgdXNlRGVmYXVsdFBh
cmFncmFwaEVsZW1lbnQsIGJvb2wgcGFzdGVCbG9ja3F1dG9lSW50b1VucXVvdGVkQXJlYSk7CiAK
ICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
SW5zZXJ0VGV4dENvbW1hbmQuY3BwCmluZGV4IDU3MmU4ZWNiY2JlZDc5Yzk3ODcyYWYxODA1NGJh
YTM1MzgwNTRhOWMuLmJkZDU5YTM3NGI1OGNiYjBjNGYzYzg1NWIyOTg4YWQ2OGE3NTk0ZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuY3BwCkBAIC0zNywx
NiArMzcsMTYgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1JbnNlcnRUZXh0Q29tbWFuZDo6
SW5zZXJ0VGV4dENvbW1hbmQoRG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQs
IGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0LCBSZWJhbGFuY2VUeXBlIHJlYmFsYW5jZVR5cGUsIEVk
aXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3Vt
ZW50LCBlZGl0aW5nQWN0aW9uKQorSW5zZXJ0VGV4dENvbW1hbmQ6Okluc2VydFRleHRDb21tYW5k
KERvY3VtZW50JiBkb2N1bWVudCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2Vy
dGVkVGV4dCwgUmViYWxhbmNlVHlwZSByZWJhbGFuY2VUeXBlKQorICAgIDogQ29tcG9zaXRlRWRp
dENvbW1hbmQoZG9jdW1lbnQpCiAgICAgLCBtX3RleHQodGV4dCkKICAgICAsIG1fc2VsZWN0SW5z
ZXJ0ZWRUZXh0KHNlbGVjdEluc2VydGVkVGV4dCkKICAgICAsIG1fcmViYWxhbmNlVHlwZShyZWJh
bGFuY2VUeXBlKQogewogfQogCi1JbnNlcnRUZXh0Q29tbWFuZDo6SW5zZXJ0VGV4dENvbW1hbmQo
RG9jdW1lbnQmIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIFBhc3NSZWZQdHI8VGV4dElu
c2VydGlvbk1hcmtlclN1cHBsaWVyPiBtYXJrZXJTdXBwbGllciwgRWRpdEFjdGlvbiBlZGl0aW5n
QWN0aW9uKQotICAgIDogQ29tcG9zaXRlRWRpdENvbW1hbmQoZG9jdW1lbnQsIGVkaXRpbmdBY3Rp
b24pCitJbnNlcnRUZXh0Q29tbWFuZDo6SW5zZXJ0VGV4dENvbW1hbmQoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIFBhc3NSZWZQdHI8VGV4dEluc2VydGlvbk1hcmtlclN1
cHBsaWVyPiBtYXJrZXJTdXBwbGllcikKKyAgICA6IENvbXBvc2l0ZUVkaXRDb21tYW5kKGRvY3Vt
ZW50KQogICAgICwgbV90ZXh0KHRleHQpCiAgICAgLCBtX3NlbGVjdEluc2VydGVkVGV4dChmYWxz
ZSkKICAgICAsIG1fcmViYWxhbmNlVHlwZShSZWJhbGFuY2VMZWFkaW5nQW5kVHJhaWxpbmdXaGl0
ZXNwYWNlcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENv
bW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvSW5zZXJ0VGV4dENvbW1hbmQuaAppbmRl
eCA2NTI4MTYxMTY0ZDEzOGM0NjU0MDY3OWY2NDg5Y2U0MDgwNGI4MjU1Li5mMTBkMmZlN2FkZWY3
NjlkN2Q0Y2VhNWQ5Yjk2NDlmYmFhOTU2NzA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL0luc2VydFRleHRDb21tYW5kLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9J
bnNlcnRUZXh0Q29tbWFuZC5oCkBAIC00OSwyMiArNDksMjEgQEAgcHVibGljOgogICAgIH07CiAK
ICAgICBzdGF0aWMgUmVmPEluc2VydFRleHRDb21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3Vt
ZW50LCBjb25zdCBTdHJpbmcmIHRleHQsIGJvb2wgc2VsZWN0SW5zZXJ0ZWRUZXh0ID0gZmFsc2Us
Ci0gICAgICAgIFJlYmFsYW5jZVR5cGUgcmViYWxhbmNlVHlwZSA9IFJlYmFsYW5jZUxlYWRpbmdB
bmRUcmFpbGluZ1doaXRlc3BhY2VzLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0
aW9uSW5zZXJ0KQorICAgICAgICBSZWJhbGFuY2VUeXBlIHJlYmFsYW5jZVR5cGUgPSBSZWJhbGFu
Y2VMZWFkaW5nQW5kVHJhaWxpbmdXaGl0ZXNwYWNlcykKICAgICB7Ci0gICAgICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IEluc2VydFRleHRDb21tYW5kKGRvY3VtZW50LCB0ZXh0LCBzZWxlY3RJbnNl
cnRlZFRleHQsIHJlYmFsYW5jZVR5cGUsIGVkaXRpbmdBY3Rpb24pKTsKKyAgICAgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgSW5zZXJ0VGV4dENvbW1hbmQoZG9jdW1lbnQsIHRleHQsIHNlbGVjdElu
c2VydGVkVGV4dCwgcmViYWxhbmNlVHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBSZWY8SW5z
ZXJ0VGV4dENvbW1hbmQ+IGNyZWF0ZVdpdGhNYXJrZXJTdXBwbGllcihEb2N1bWVudCYgZG9jdW1l
bnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUGFzc1JlZlB0cjxUZXh0SW5zZXJ0aW9uTWFya2VyU3Vw
cGxpZXI+IG1hcmtlclN1cHBsaWVyLCBFZGl0QWN0aW9uIGVkaXRpbmdBY3Rpb24gPSBFZGl0QWN0
aW9uSW5zZXJ0KQorICAgIHN0YXRpYyBSZWY8SW5zZXJ0VGV4dENvbW1hbmQ+IGNyZWF0ZVdpdGhN
YXJrZXJTdXBwbGllcihEb2N1bWVudCYgZG9jdW1lbnQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUGFz
c1JlZlB0cjxUZXh0SW5zZXJ0aW9uTWFya2VyU3VwcGxpZXI+IG1hcmtlclN1cHBsaWVyKQogICAg
IHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSW5zZXJ0VGV4dENvbW1hbmQoZG9jdW1l
bnQsIHRleHQsIG1hcmtlclN1cHBsaWVyLCBlZGl0aW5nQWN0aW9uKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IEluc2VydFRleHRDb21tYW5kKGRvY3VtZW50LCB0ZXh0LCBtYXJrZXJT
dXBwbGllcikpOwogICAgIH0KIAotcHJvdGVjdGVkOgotICAgIEluc2VydFRleHRDb21tYW5kKERv
Y3VtZW50JiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBQYXNzUmVmUHRyPFRleHRJbnNlcnRpb25NYXJr
ZXJTdXBwbGllcj4sIEVkaXRBY3Rpb24pOwotICAgIEluc2VydFRleHRDb21tYW5kKERvY3VtZW50
JiwgY29uc3QgU3RyaW5nJiB0ZXh0LCBib29sIHNlbGVjdEluc2VydGVkVGV4dCwgUmViYWxhbmNl
VHlwZSwgRWRpdEFjdGlvbik7Ci0KIHByaXZhdGU6CiAKKyAgICBJbnNlcnRUZXh0Q29tbWFuZChE
b2N1bWVudCYsIGNvbnN0IFN0cmluZyYgdGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQsIFJl
YmFsYW5jZVR5cGUpOworICAgIEluc2VydFRleHRDb21tYW5kKERvY3VtZW50JiwgY29uc3QgU3Ry
aW5nJiB0ZXh0LCBQYXNzUmVmUHRyPFRleHRJbnNlcnRpb25NYXJrZXJTdXBwbGllcj4pOworCiAg
ICAgdm9pZCBkZWxldGVDaGFyYWN0ZXIoKTsKIAogICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL01vdmVTZWxlY3Rpb25Db21tYW5k
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCmlu
ZGV4IGQ2ZWNmNmVlNjNkODY4NGIxYTE5MzE1OGVhMDc1MjNlYjY2NWJlNmUuLmNlODg0NzgwY2Ix
OGEyYzUzZDJlZDQ5ZDAzNDA1YTM5OGNmMjc1ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvTW92ZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBAIC03OSw3ICs3OSw3IEBAIHZvaWQgTW92
ZVNlbGVjdGlvbkNvbW1hbmQ6OmRvQXBwbHkoKQogICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
OjpDb21tYW5kT3B0aW9ucyBvcHRpb25zID0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNlbGVj
dFJlcGxhY2VtZW50IHwgUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlByZXZlbnROZXN0aW5nOwog
ICAgIGlmIChtX3NtYXJ0SW5zZXJ0KQogICAgICAgICBvcHRpb25zIHw9IFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kOjpTbWFydFJlcGxhY2U7Ci0gICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoUmVw
bGFjZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZShkb2N1bWVudCgpLCBXVEY6Om1vdmUobV9mcmFn
bWVudCksIG9wdGlvbnMpKTsKKyAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShSZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCksIG1fZnJhZ21lbnQsIG9wdGlvbnMpKTsK
IH0KIAogRWRpdEFjdGlvbiBNb3ZlU2VsZWN0aW9uQ29tbWFuZDo6ZWRpdGluZ0FjdGlvbigpIGNv
bnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2
aW5nQ2hpbGRyZW5Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCmluZGV4IGM2Mjk3MTZmZWViY2UxN2NjZTJk
M2FjZGIwM2M5NjFiZDVjY2UwZGIuLjJjMDYzYzAxNTVkMDYzNTA4OTY0ZmNkMzYxNGUxYTM1Yzdl
Yjc0OTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNl
cnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVt
b3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1h
bmQ6OlJlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kKFBhc3NSZWZQdHI8Tm9kZT4g
bm9kZSwgU2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29u
dGVudElzQWx3YXlzRWRpdGFibGUsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6IENv
bXBvc2l0ZUVkaXRDb21tYW5kKG5vZGUtPmRvY3VtZW50KCksIGVkaXRpbmdBY3Rpb24pCitSZW1v
dmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZDo6UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGls
ZHJlbkNvbW1hbmQoUGFzc1JlZlB0cjxOb2RlPiBub2RlLCBTaG91bGRBc3N1bWVDb250ZW50SXNB
bHdheXNFZGl0YWJsZSBzaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSkKKyAgICA6
IENvbXBvc2l0ZUVkaXRDb21tYW5kKG5vZGUtPmRvY3VtZW50KCkpCiAgICAgLCBtX25vZGUobm9k
ZSkKICAgICAsIG1fc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUoc2hvdWxkQXNz
dW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmggYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlbW92ZU5vZGVQcmVzZXJ2aW5nQ2hpbGRyZW5Db21tYW5kLmgKaW5k
ZXggMWIyYzQyZDIxYWFkZjUyMzBjZmQ3NmUzYWZlYjdmZmMxYTRlZDU4OS4uNGI5MTk3NGE1NWRj
NzNjMjQ5MWI4OGJmNjEzZTQzNmJmNTYyZGY1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9SZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQuaApA
QCAtMzIsMTMgKzMyLDEzIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgUmVtb3ZlTm9k
ZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQgOiBwdWJsaWMgQ29tcG9zaXRlRWRpdENvbW1hbmQg
ewogcHVibGljOgotICAgIHN0YXRpYyBSZWY8UmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNv
bW1hbmQ+IGNyZWF0ZShQYXNzUmVmUHRyPE5vZGU+IG5vZGUsIFNob3VsZEFzc3VtZUNvbnRlbnRJ
c0Fsd2F5c0VkaXRhYmxlIHNob3VsZEFzc3VtZUNvbnRlbnRJc0Fsd2F5c0VkaXRhYmxlLCBFZGl0
QWN0aW9uIGVkaXRpbmdBY3Rpb24pCisgICAgc3RhdGljIFJlZjxSZW1vdmVOb2RlUHJlc2Vydmlu
Z0NoaWxkcmVuQ29tbWFuZD4gY3JlYXRlKFBhc3NSZWZQdHI8Tm9kZT4gbm9kZSwgU2hvdWxkQXNz
dW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUgc2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRp
dGFibGUpCiAgICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZW1vdmVOb2RlUHJl
c2VydmluZ0NoaWxkcmVuQ29tbWFuZChub2RlLCBzaG91bGRBc3N1bWVDb250ZW50SXNBbHdheXNF
ZGl0YWJsZSwgZWRpdGluZ0FjdGlvbikpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBS
ZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZChub2RlLCBzaG91bGRBc3N1bWVDb250
ZW50SXNBbHdheXNFZGl0YWJsZSkpOwogICAgIH0KIAogcHJpdmF0ZToKLSAgICBleHBsaWNpdCBS
ZW1vdmVOb2RlUHJlc2VydmluZ0NoaWxkcmVuQ29tbWFuZChQYXNzUmVmUHRyPE5vZGU+LCBTaG91
bGRBc3N1bWVDb250ZW50SXNBbHdheXNFZGl0YWJsZSwgRWRpdEFjdGlvbik7CisgICAgZXhwbGlj
aXQgUmVtb3ZlTm9kZVByZXNlcnZpbmdDaGlsZHJlbkNvbW1hbmQoUGFzc1JlZlB0cjxOb2RlPiwg
U2hvdWxkQXNzdW1lQ29udGVudElzQWx3YXlzRWRpdGFibGUpOwogCiAgICAgdmlydHVhbCB2b2lk
IGRvQXBwbHkoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNl
RGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Jl
cGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggYTk4YTk5ZGE3Mjg3ZjJmNzRmODk2N2YwNDI4NWVjYTRkNzU2OTc5ZS4uMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1JlcGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmNwcAorKysgL2Rldi9udWxs
CkBAIC0xLDQyICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICog
YXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNsdWRlICJSZXBsYWNlRGVsZXRlRnJv
bVRleHROb2RlQ29tbWFuZC5oIgotCi0jaW5jbHVkZSAiVGV4dC5oIgotCi1uYW1lc3BhY2UgV2Vi
Q29yZSB7Ci0gICAgCi1SZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZDo6UmVwbGFjZURl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoUmVmUHRyPFRleHQ+JiYgdGV4dCwgdW5zaWduZWQgb2Zm
c2V0LCB1bnNpZ25lZCBjb3VudCkKLSAgICA6IERlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoV1RG
Ojptb3ZlKHRleHQpLCBvZmZzZXQsIGNvdW50LCBFZGl0QWN0aW9uRGVsZXRlKQotewotfQotCi12
b2lkIFJlcGxhY2VEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kOjpub3RpZnlBY2Nlc3NpYmlsaXR5
Rm9yVGV4dENoYW5nZShOb2RlKiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IFZpc2libGVQb3NpdGlvbiYpCi17Ci19Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQuaCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9k
ZUNvbW1hbmQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmM3MjEyOTEwYzE1M2Ez
ZGVjMjY5NGMxODZlMjU4YzUzNTQ0NThmNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VEZWxldGVGcm9t
VGV4dE5vZGVDb21tYW5kLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi0vKgotICog
Q29weXJpZ2h0IChDKSAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0g
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJ
UycnIEFORCBBTlkKLSAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCi0gKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKLSAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0g
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgUmVwbGFjZURl
bGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmRfaAotI2RlZmluZSBSZXBsYWNlRGVsZXRlRnJvbVRleHRO
b2RlQ29tbWFuZF9oCi0KLSNpbmNsdWRlICJEZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgiCi0K
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNv
bW1hbmQgZmluYWwgOiBwdWJsaWMgRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZCB7Ci1wdWJsaWM6
Ci0gICAgc3RhdGljIFJlZjxSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZD4gY3JlYXRl
KFJlZlB0cjxUZXh0PiYmIHRleHQsIHVuc2lnbmVkIG9mZnNldCwgdW5zaWduZWQgY291bnQpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBSZXBsYWNlRGVsZXRlRnJvbVRleHRO
b2RlQ29tbWFuZChXVEY6Om1vdmUodGV4dCksIG9mZnNldCwgY291bnQpKTsKLSAgICB9Ci0KLXBy
aXZhdGU6Ci0gICAgUmVwbGFjZURlbGV0ZUZyb21UZXh0Tm9kZUNvbW1hbmQoUmVmUHRyPFRleHQ+
JiYsIHVuc2lnbmVkLCB1bnNpZ25lZCk7Ci0gICAgdmlydHVhbCB2b2lkIG5vdGlmeUFjY2Vzc2li
aWxpdHlGb3JUZXh0Q2hhbmdlKE5vZGUqLCBBWFRleHRFZGl0VHlwZSwgY29uc3QgU3RyaW5nJiwg
Y29uc3QgVmlzaWJsZVBvc2l0aW9uJikgb3ZlcnJpZGU7Ci19OwotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXBsYWNlRGVsZXRlRnJvbVRleHROb2RlQ29tbWFuZF9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VJbnNlcnRJbnRvVGV4dE5v
ZGVDb21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZUluc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuY3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzQ4YzEx
NjM5Y2U2ZGVlYjFmZWFhMWIxMjBlYzg4MGNmNDM5OWZiLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZUlu
c2VydEludG9UZXh0Tm9kZUNvbW1hbmQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywg
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQ
T1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICog
Q09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsCi0gKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9S
IEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkK
LSAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVAotICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKLSAqLwotCi0jaW5jbHVk
ZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
aCIKLQotI2luY2x1ZGUgIkFYT2JqZWN0Q2FjaGUuaCIKLSNpbmNsdWRlICJEb2N1bWVudC5oIgot
I2luY2x1ZGUgIlRleHQuaCIKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1SZXBsYWNlSW5zZXJ0
SW50b1RleHROb2RlQ29tbWFuZDo6UmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQoUmVm
UHRyPFRleHQ+JiYgbm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNv
bnN0IFN0cmluZyYgZGVsZXRlZFRleHQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICA6
IEluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQoV1RGOjptb3ZlKG5vZGUpLCBvZmZzZXQsIHRleHQs
IGVkaXRpbmdBY3Rpb24pCi0gICAgLCBtX2RlbGV0ZWRUZXh0KGRlbGV0ZWRUZXh0KQotewotfQot
Ci12b2lkIFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kOjpub3RpZnlBY2Nlc3NpYmls
aXR5Rm9yVGV4dENoYW5nZShOb2RlKiBub2RlLCBBWFRleHRFZGl0VHlwZSB0eXBlLCBjb25zdCBT
dHJpbmcmIHRleHQsIGNvbnN0IFZpc2libGVQb3NpdGlvbiYgcG9zaXRpb24pCi17Ci0gICAgaWYg
KCFBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgpKQotICAgICAgICByZXR1cm47
Ci0gICAgQVhPYmplY3RDYWNoZSogY2FjaGUgPSBkb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RD
YWNoZSgpOwotICAgIGlmICghY2FjaGUpCi0gICAgICAgIHJldHVybjsKLSAgICBzd2l0Y2ggKHR5
cGUpIHsKLSAgICBjYXNlIEFYVGV4dEVkaXRUeXBlVW5rbm93bjoKLSAgICAgICAgYnJlYWs7Ci0g
ICAgY2FzZSBBWFRleHRFZGl0VHlwZUN1dDoKLSAgICBjYXNlIEFYVGV4dEVkaXRUeXBlRGljdGF0
aW9uOgotICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBBWFRleHRFZGl0VHlwZURlbGV0ZToKLSAgICAgICAgY2FjaGUtPnBvc3RUZXh0UmVwbGFj
ZW1lbnROb3RpZmljYXRpb24obm9kZSwgQVhUZXh0RWRpdFR5cGVEZWxldGUsIHRleHQsIEFYVGV4
dEVkaXRUeXBlSW5zZXJ0LCBtX2RlbGV0ZWRUZXh0LCBwb3NpdGlvbik7Ci0gICAgICAgIGJyZWFr
OwotICAgIGNhc2UgQVhUZXh0RWRpdFR5cGVJbnNlcnQ6Ci0gICAgY2FzZSBBWFRleHRFZGl0VHlw
ZVBhc3RlOgotICAgIGNhc2UgQVhUZXh0RWRpdFR5cGVUeXBpbmc6Ci0gICAgICAgIGNhY2hlLT5w
b3N0VGV4dFJlcGxhY2VtZW50Tm90aWZpY2F0aW9uKG5vZGUsIEFYVGV4dEVkaXRUeXBlRGVsZXRl
LCBtX2RlbGV0ZWRUZXh0LCB0eXBlLCB0ZXh0LCBwb3NpdGlvbik7Ci0gICAgICAgIGJyZWFrOwot
ICAgIH0KLX0KLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9SZXBsYWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZC5oCmRlbGV0
ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjYzYjJiNjE5MDgwZWRiMTA2Yzk5MDk3OWNlYmRi
NGM3NGQzNDQ5Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZUluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQu
aAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZ
LCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIg
SU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVH
TElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQot
ICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4gCi0gKi8KLQotI2lmbmRlZiBSZXBsYWNlSW5zZXJ0SW50b1RleHROb2Rl
Q29tbWFuZF9oCi0jZGVmaW5lIFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kX2gKLQot
I2luY2x1ZGUgIkluc2VydEludG9UZXh0Tm9kZUNvbW1hbmQuaCIKLQotbmFtZXNwYWNlIFdlYkNv
cmUgewotCi1jbGFzcyBSZXBsYWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZCBmaW5hbCA6IHB1
YmxpYyBJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kIHsKLXB1YmxpYzoKLSAgICBzdGF0aWMgUmVm
PFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kPiBjcmVhdGUoUmVmUHRyPFRleHQ+JiYg
bm9kZSwgdW5zaWduZWQgb2Zmc2V0LCBjb25zdCBTdHJpbmcmIHRleHQsIGNvbnN0IFN0cmluZyYg
ZGVsZXRlZFRleHQsIEVkaXRBY3Rpb24gZWRpdGluZ0FjdGlvbikKLSAgICB7Ci0gICAgICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFJlcGxhY2VJbnNlcnRJbnRvVGV4dE5vZGVDb21tYW5kKFdURjo6
bW92ZShub2RlKSwgb2Zmc2V0LCB0ZXh0LCBkZWxldGVkVGV4dCwgZWRpdGluZ0FjdGlvbikpOwot
ICAgIH0KLQotcHJpdmF0ZToKLSAgICBSZXBsYWNlSW5zZXJ0SW50b1RleHROb2RlQ29tbWFuZChS
ZWZQdHI8VGV4dD4mJiwgdW5zaWduZWQsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFN0cmluZyYsIEVk
aXRBY3Rpb24pOwotICAgIHZpcnR1YWwgdm9pZCBub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yVGV4dENo
YW5nZShOb2RlKiwgQVhUZXh0RWRpdFR5cGUsIGNvbnN0IFN0cmluZyYsIGNvbnN0IFZpc2libGVQ
b3NpdGlvbiYpIG92ZXJyaWRlOwotCi0gICAgU3RyaW5nIG1fZGVsZXRlZFRleHQ7Ci19OwotCi19
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZiAvLyBSZXBsYWNlSW5zZXJ0SW50b1RleHRO
b2RlQ29tbWFuZF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VT
ZWxlY3Rpb25Db21tYW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuY3BwCmluZGV4IGZkNTc0NTUyMTIwNjBhY2RmMmVjZjBjM2Y2MzJmNjNmYzdl
MjQ2MzEuLmZiMzg4MGM1MTBjNDRiNzU3MmIzNjE0YTA1ZmE0MTBiNjEzM2ZjNjIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQuY3BwCkBA
IC00Nyw4ICs0Nyw2IEBACiAjaW5jbHVkZSAiUmVuZGVySW5saW5lLmgiCiAjaW5jbHVkZSAiUmVu
ZGVyT2JqZWN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyVGV4dC5oIgotI2luY2x1ZGUgIlJlcGxhY2VE
ZWxldGVGcm9tVGV4dE5vZGVDb21tYW5kLmgiCi0jaW5jbHVkZSAiUmVwbGFjZUluc2VydEludG9U
ZXh0Tm9kZUNvbW1hbmQuaCIKICNpbmNsdWRlICJTaW1wbGlmeU1hcmt1cENvbW1hbmQuaCIKICNp
bmNsdWRlICJTbWFydFJlcGxhY2UuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKQEAg
LTM3MCwxNCArMzY4LDE1IEBAIGlubGluZSB2b2lkIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpJ
bnNlcnRlZE5vZGVzOjpkaWRSZXBsYWNlTm9kZShOb2RlKiBub2RlLCBOCiAgICAgICAgIG1fbGFz
dE5vZGVJbnNlcnRlZCA9IG5ld05vZGU7CiB9CiAKLVJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpS
ZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYgZG9jdW1lbnQsIFJlZlB0cjxEb2N1bWVu
dEZyYWdtZW50PiYmIGZyYWdtZW50LCBDb21tYW5kT3B0aW9ucyBvcHRpb25zLCBFZGl0QWN0aW9u
IGVkaXRBY3Rpb24pCi0gICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCwgZWRpdEFj
dGlvbikKK1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChE
b2N1bWVudCYgZG9jdW1lbnQsIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gZnJhZ21lbnQs
IENvbW1hbmRPcHRpb25zIG9wdGlvbnMsIEVkaXRBY3Rpb24gZWRpdEFjdGlvbikKKyAgICA6IENv
bXBvc2l0ZUVkaXRDb21tYW5kKGRvY3VtZW50KQogICAgICwgbV9zZWxlY3RSZXBsYWNlbWVudChv
cHRpb25zICYgU2VsZWN0UmVwbGFjZW1lbnQpCiAgICAgLCBtX3NtYXJ0UmVwbGFjZShvcHRpb25z
ICYgU21hcnRSZXBsYWNlKQogICAgICwgbV9tYXRjaFN0eWxlKG9wdGlvbnMgJiBNYXRjaFN0eWxl
KQogICAgICwgbV9kb2N1bWVudEZyYWdtZW50KGZyYWdtZW50KQogICAgICwgbV9wcmV2ZW50TmVz
dGluZyhvcHRpb25zICYgUHJldmVudE5lc3RpbmcpCiAgICAgLCBtX21vdmluZ1BhcmFncmFwaChv
cHRpb25zICYgTW92aW5nUGFyYWdyYXBoKQorICAgICwgbV9lZGl0QWN0aW9uKGVkaXRBY3Rpb24p
CiAgICAgLCBtX3Nhbml0aXplRnJhZ21lbnQob3B0aW9ucyAmIFNhbml0aXplRnJhZ21lbnQpCiAg
ICAgLCBtX3Nob3VsZE1lcmdlRW5kKGZhbHNlKQogICAgICwgbV9pZ25vcmVNYWlsQmxvY2txdW90
ZShvcHRpb25zICYgSWdub3JlTWFpbEJsb2NrcXVvdGUpCkBAIC0xNDI4LDYgKzE0MjcsMTEgQEAg
dm9pZCBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6bWVyZ2VUZXh0Tm9kZXNBcm91bmRQb3NpdGlv
bihQb3NpdGlvbiYgcG9zaXRpb24sIFAKICAgICB9CiB9CiAKK0VkaXRBY3Rpb24gUmVwbGFjZVNl
bGVjdGlvbkNvbW1hbmQ6OmVkaXRpbmdBY3Rpb24oKSBjb25zdAoreworICAgIHJldHVybiBtX2Vk
aXRBY3Rpb247Cit9CisKIC8vIElmIHRoZSB1c2VyIGlzIGluc2VydGluZyBhIGxpc3QgaW50byBh
biBleGlzdGluZyBsaXN0LCBpbnN0ZWFkIG9mIG5lc3RpbmcgdGhlIGxpc3QsCiAvLyB3ZSBwdXQg
dGhlIGxpc3QgaXRlbXMgaW50byB0aGUgZXhpc3RpbmcgbGlzdC4KIE5vZGUqIFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kOjppbnNlcnRBc0xpc3RJdGVtcyhQYXNzUmVmUHRyPEhUTUxFbGVtZW50PiBw
cnBMaXN0RWxlbWVudCwgTm9kZSogaW5zZXJ0aW9uQmxvY2ssIGNvbnN0IFBvc2l0aW9uJiBpbnNl
cnRQb3MsIEluc2VydGVkTm9kZXMmIGluc2VydGVkTm9kZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmggYi9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL1JlcGxhY2VTZWxlY3Rpb25Db21tYW5kLmgKaW5kZXggOWNmZGZjNzNmNzdkMjNi
MWY3NzAxNjMwMGQyZDI5ZjljNDFlNTcwMy4uZDg3YzNmZjUzNWQ1MGVmZWYzMGYxNDg1MThlZjU0
MzM3OTZiZGEzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9SZXBsYWNlU2Vs
ZWN0aW9uQ29tbWFuZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvUmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQuaApAQCAtNDgsMTYgKzQ4LDE3IEBAIHB1YmxpYzoKIAogICAgIHR5cGVkZWYg
dW5zaWduZWQgQ29tbWFuZE9wdGlvbnM7CiAKLSAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxlY3Rp
b25Db21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBSZWZQdHI8RG9jdW1lbnRGcmFn
bWVudD4mJiBmcmFnbWVudCwgQ29tbWFuZE9wdGlvbnMgb3B0aW9ucywgRWRpdEFjdGlvbiBlZGl0
aW5nQWN0aW9uID0gRWRpdEFjdGlvbkluc2VydCkKKyAgICBzdGF0aWMgUmVmPFJlcGxhY2VTZWxl
Y3Rpb25Db21tYW5kPiBjcmVhdGUoRG9jdW1lbnQmIGRvY3VtZW50LCBQYXNzUmVmUHRyPERvY3Vt
ZW50RnJhZ21lbnQ+IGZyYWdtZW50LCBDb21tYW5kT3B0aW9ucyBvcHRpb25zLCBFZGl0QWN0aW9u
IGFjdGlvbiA9IEVkaXRBY3Rpb25QYXN0ZSkKICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKGRvY3VtZW50LCBXVEY6Om1vdmUoZnJhZ21l
bnQpLCBvcHRpb25zLCBlZGl0aW5nQWN0aW9uKSk7CisgICAgICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kKGRvY3VtZW50LCBmcmFnbWVudCwgb3B0aW9ucywg
YWN0aW9uKSk7CiAgICAgfQogCiBwcml2YXRlOgotICAgIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5k
KERvY3VtZW50JiwgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+JiYsIENvbW1hbmRPcHRpb25zLCBF
ZGl0QWN0aW9uKTsKKyAgICBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZChEb2N1bWVudCYsIFBhc3NS
ZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4sIENvbW1hbmRPcHRpb25zLCBFZGl0QWN0aW9uKTsKIAog
ICAgIHZpcnR1YWwgdm9pZCBkb0FwcGx5KCk7Ci0KKyAgICB2aXJ0dWFsIEVkaXRBY3Rpb24gZWRp
dGluZ0FjdGlvbigpIGNvbnN0OworICAgIAogICAgIGNsYXNzIEluc2VydGVkTm9kZXMgewogICAg
IHB1YmxpYzoKICAgICAgICAgdm9pZCByZXNwb25kVG9Ob2RlSW5zZXJ0aW9uKE5vZGUqKTsKQEAg
LTExOSw2ICsxMjAsNyBAQCBwcml2YXRlOgogICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBt
X2RvY3VtZW50RnJhZ21lbnQ7CiAgICAgYm9vbCBtX3ByZXZlbnROZXN0aW5nOwogICAgIGJvb2wg
bV9tb3ZpbmdQYXJhZ3JhcGg7CisgICAgRWRpdEFjdGlvbiBtX2VkaXRBY3Rpb247CiAgICAgYm9v
bCBtX3Nhbml0aXplRnJhZ21lbnQ7CiAgICAgYm9vbCBtX3Nob3VsZE1lcmdlRW5kOwogICAgIGJv
b2wgbV9pZ25vcmVNYWlsQmxvY2txdW90ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1R5cGluZ0Nv
bW1hbmQuY3BwCmluZGV4IGYwNzQ0NDhhNjllMmVjMDJmMDNiMWQ5NGVhMjYyMjcwZmI4MzBkODcu
LjkzMjljZGYzOTEzOWJiYmUyOTNjNzk1NjhkYTRiNDM2Njk0ZWE4MDUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvVHlwaW5nQ29tbWFuZC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvZWRpdGluZy9UeXBpbmdDb21tYW5kLmNwcApAQCAtMzc0LDcgKzM3NCw3IEBAIHZvaWQgVHlw
aW5nQ29tbWFuZDo6aW5zZXJ0VGV4dChjb25zdCBTdHJpbmcgJnRleHQsIGJvb2wgc2VsZWN0SW5z
ZXJ0ZWRUZXh0KQogdm9pZCBUeXBpbmdDb21tYW5kOjppbnNlcnRUZXh0UnVuV2l0aG91dE5ld2xp
bmVzKGNvbnN0IFN0cmluZyAmdGV4dCwgYm9vbCBzZWxlY3RJbnNlcnRlZFRleHQpCiB7CiAgICAg
UmVmUHRyPEluc2VydFRleHRDb21tYW5kPiBjb21tYW5kID0gSW5zZXJ0VGV4dENvbW1hbmQ6OmNy
ZWF0ZShkb2N1bWVudCgpLCB0ZXh0LCBzZWxlY3RJbnNlcnRlZFRleHQsCi0gICAgICAgIG1fY29t
cG9zaXRpb25UeXBlID09IFRleHRDb21wb3NpdGlvbk5vbmUgPyBJbnNlcnRUZXh0Q29tbWFuZDo6
UmViYWxhbmNlTGVhZGluZ0FuZFRyYWlsaW5nV2hpdGVzcGFjZXMgOiBJbnNlcnRUZXh0Q29tbWFu
ZDo6UmViYWxhbmNlQWxsV2hpdGVzcGFjZXMsIEVkaXRBY3Rpb25UeXBpbmcpOworICAgICAgICBt
X2NvbXBvc2l0aW9uVHlwZSA9PSBUZXh0Q29tcG9zaXRpb25Ob25lID8gSW5zZXJ0VGV4dENvbW1h
bmQ6OlJlYmFsYW5jZUxlYWRpbmdBbmRUcmFpbGluZ1doaXRlc3BhY2VzIDogSW5zZXJ0VGV4dENv
bW1hbmQ6OlJlYmFsYW5jZUFsbFdoaXRlc3BhY2VzKTsKIAogICAgIGFwcGx5Q29tbWFuZFRvQ29t
cG9zaXRlKGNvbW1hbmQsIGVuZGluZ1NlbGVjdGlvbigpKTsKIApAQCAtMzk1LDcgKzM5NSw3IEBA
IHZvaWQgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKCkKICAgICBpZiAo
IWNhbkFwcGVuZE5ld0xpbmVGZWVkVG9TZWxlY3Rpb24oZW5kaW5nU2VsZWN0aW9uKCkpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhcHBseUNvbW1hbmRUb0NvbXBvc2l0ZShJbnNlcnRQYXJhZ3Jh
cGhTZXBhcmF0b3JDb21tYW5kOjpjcmVhdGUoZG9jdW1lbnQoKSwgZmFsc2UsIGZhbHNlLCBFZGl0
QWN0aW9uVHlwaW5nKSk7CisgICAgYXBwbHlDb21tYW5kVG9Db21wb3NpdGUoSW5zZXJ0UGFyYWdy
YXBoU2VwYXJhdG9yQ29tbWFuZDo6Y3JlYXRlKGRvY3VtZW50KCkpKTsKICAgICB0eXBpbmdBZGRl
ZFRvT3BlbkNvbW1hbmQoSW5zZXJ0UGFyYWdyYXBoU2VwYXJhdG9yKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9hdGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCmluZGV4IDMzMmUw
YWI4MTE2NTQwOTdhNjI4NjgzMDk4MGViNjJhMTk4MmM1YjQuLjdjMjEzNjU2MTYyZThlMzUzYjBi
MDk5YzU4OTcyODc0MzcyYWE1YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
YXRrL0ZyYW1lU2VsZWN0aW9uQXRrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0
ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHAKQEAgLTc4LDcgKzc4LDcgQEAgc3RhdGljIHZvaWQgbWF5
YmVFbWl0VGV4dEZvY3VzQ2hhbmdlKFBhc3NSZWZQdHI8QWNjZXNzaWJpbGl0eU9iamVjdD4gcHJw
T2JqZWN0KQogfQogCiAKLXZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlG
b3JTZWxlY3Rpb25DaGFuZ2UoQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQpCit2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKIHsKICAgICBp
ZiAoIUFYT2JqZWN0Q2FjaGU6OmFjY2Vzc2liaWxpdHlFbmFibGVkKCkpCiAgICAgICAgIHJldHVy
bjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1h
bmRJT1MuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElP
Uy5jcHAKaW5kZXggMTM0YjIzOWQ0OTljZDAyZTE3OGYyZDgxMWJhZWFjNDUxYjE1YTI5Mi4uYzE4
ODMzODI3OGYzMjkwYTljYmVjNmI5NmViZDExNjNiNjZiMThiOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogRGljdGF0aW9uQ29tbWFuZElPUzo6RGljdGF0
aW9uQ29tbWFuZElPUyhEb2N1bWVudCYgZG9jdW1lbnQsIFZlY3RvcjxWZWN0b3I8U3RyaW5nPj4m
JiBkaWN0YXRpb25QaHJhc2VzLCBSZXRhaW5QdHI8aWQ+IG1ldGFkYXRhKQotICAgIDogQ29tcG9z
aXRlRWRpdENvbW1hbmQoZG9jdW1lbnQsIEVkaXRBY3Rpb25EaWN0YXRpb24pCisgICAgOiBDb21w
b3NpdGVFZGl0Q29tbWFuZChkb2N1bWVudCkKICAgICAsIG1fZGljdGF0aW9uUGhyYXNlcyhXVEY6
Om1vdmUoZGljdGF0aW9uUGhyYXNlcykpCiAgICAgLCBtX21ldGFkYXRhKFdURjo6bW92ZShtZXRh
ZGF0YSkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRp
b25Db21tYW5kSU9TLmggYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9EaWN0YXRpb25Db21t
YW5kSU9TLmgKaW5kZXggYWM1Y2IyMTUwZTg0NzE3ZDNjMDg0NDE5ZWMxOGZlMzY1MTQ1NGRmZS4u
YmY5MDc2NGIzZGJkNzcyZDg1ZjQyODg5YmY2MzFmZjMxNzQ1OGZkZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9pb3MvRGljdGF0aW9uQ29tbWFuZElPUy5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0RpY3RhdGlvbkNvbW1hbmRJT1MuaApAQCAtNDQsNiArNDQs
NyBAQCBwcml2YXRlOgogICAgIERpY3RhdGlvbkNvbW1hbmRJT1MoRG9jdW1lbnQmLCBWZWN0b3I8
VmVjdG9yPFN0cmluZz4+JiYgZGljdGF0aW9uUGhyYXNlcywgUmV0YWluUHRyPGlkPiBtZXRhZGF0
YSk7CiAKICAgICB2aXJ0dWFsIHZvaWQgZG9BcHBseSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
RWRpdEFjdGlvbiBlZGl0aW5nQWN0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gRWRpdEFj
dGlvbkRpY3RhdGlvbjsgfQogCiAgICAgVmVjdG9yPFZlY3RvcjxTdHJpbmc+PiBtX2RpY3RhdGlv
blBocmFzZXM7CiAgICAgUmV0YWluUHRyPGlkPiBtX21ldGFkYXRhOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRnJhbWVTZWxlY3Rpb25NYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9GcmFtZVNlbGVjdGlvbk1hYy5tbQppbmRleCBmZDQxOTk4NjA0N2Zk
NDM1ZTcyMzEyNTBjNWYyNjdhZWI3MDliNWZhLi45YmRlZTFjY2ZjYThiNjVlYTc0ZTZjNzFmMTJm
ZmYwZjEwMmQzOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFt
ZVNlbGVjdGlvbk1hYy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9GcmFtZVNl
bGVjdGlvbk1hYy5tbQpAQCAtNDcsMTMgKzQ3LDEzIEBAIHN0YXRpYyBDR1JlY3QgYWNjZXNzaWJp
bGl0eUNvbnZlcnRTY3JlZW5SZWN0KENHUmVjdCBib3VuZHMpCiAjZW5kaWYgLy8gIVBMQVRGT1JN
KElPUykKICAgICAKICAgICAKLXZvaWQgRnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxp
dHlGb3JTZWxlY3Rpb25DaGFuZ2UoQVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KQordm9p
ZCBGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNoYW5nZSgp
CiB7CiAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKIAogICAg
IGlmIChtX3NlbGVjdGlvbi5zdGFydCgpLmlzTm90TnVsbCgpICYmIG1fc2VsZWN0aW9uLmVuZCgp
LmlzTm90TnVsbCgpKSB7CiAgICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGRvY3Vt
ZW50LT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgICAgIGNhY2hlLT5wb3N0VGV4
dFN0YXRlQ2hhbmdlTm90aWZpY2F0aW9uKG1fc2VsZWN0aW9uLnN0YXJ0KCkuZGVwcmVjYXRlZE5v
ZGUoKSwgaW50ZW50LCBtX3NlbGVjdGlvbik7CisgICAgICAgICAgICBjYWNoZS0+cG9zdE5vdGlm
aWNhdGlvbihtX3NlbGVjdGlvbi5zdGFydCgpLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRlcmVyKCks
IEFYT2JqZWN0Q2FjaGU6OkFYU2VsZWN0ZWRUZXh0Q2hhbmdlZCwgVGFyZ2V0T2JzZXJ2YWJsZVBh
cmVudCk7CiAgICAgfQogCiAjaWYgIVBMQVRGT1JNKElPUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFRleHRGb3JtQ29udHJvbEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudC5jcHAKaW5kZXggMzY4NGUyOGNlNzMz
YzhhZGZlZTg4ZWJkMjI4ZTVjYzQwNjI0NTIzYy4uMWU2YzZiMmM5YjcyYTA1OTNkNDk5ZmNiMzI4
ZDYwMGI3NzlkNmI0MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEZv
cm1Db250cm9sRWxlbWVudC5jcHAKQEAgLTU0OCwyNiArNTQ4LDE2IEBAIHZvaWQgSFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ6OnNldElubmVyVGV4dFZhbHVlKGNvbnN0IFN0cmluZyYgdmFsdWUp
CiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVChpc1RleHRGb3JtQ29udHJvbCgpKTsKLSAg
ICBTdHJpbmcgcHJldmlvdXNWYWx1ZSA9IGlubmVyVGV4dFZhbHVlRnJvbSgqaW5uZXJUZXh0KTsK
LSAgICBib29sIHRleHRJc0NoYW5nZWQgPSB2YWx1ZSAhPSBwcmV2aW91c1ZhbHVlOworICAgIGJv
b2wgdGV4dElzQ2hhbmdlZCA9IHZhbHVlICE9IGlubmVyVGV4dFZhbHVlRnJvbSgqaW5uZXJUZXh0
KTsKICAgICBpZiAodGV4dElzQ2hhbmdlZCB8fCAhaW5uZXJUZXh0LT5oYXNDaGlsZE5vZGVzKCkp
IHsKLSNpZiBIQVZFKEFDQ0VTU0lCSUxJVFkpICYmICFQTEFURk9STShDT0NPQSkKICAgICAgICAg
aWYgKHRleHRJc0NoYW5nZWQgJiYgcmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAg
ICAgICAgICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbih0aGlzLCBBWE9iamVjdENhY2hl
OjpBWFZhbHVlQ2hhbmdlZCwgVGFyZ2V0T2JzZXJ2YWJsZVBhcmVudCk7CiAgICAgICAgIH0KLSNl
bmRpZgogICAgICAgICBpbm5lclRleHQtPnNldElubmVyVGV4dCh2YWx1ZSwgQVNTRVJUX05PX0VY
Q0VQVElPTik7CiAKICAgICAgICAgaWYgKHZhbHVlLmVuZHNXaXRoKCdcbicpIHx8IHZhbHVlLmVu
ZHNXaXRoKCdccicpKQogICAgICAgICAgICAgaW5uZXJUZXh0LT5hcHBlbmRDaGlsZChIVE1MQlJF
bGVtZW50OjpjcmVhdGUoZG9jdW1lbnQoKSksIEFTU0VSVF9OT19FWENFUFRJT04pOwotCi0jaWYg
SEFWRShBQ0NFU1NJQklMSVRZKSAmJiBQTEFURk9STShDT0NPQSkKLSAgICAgICAgaWYgKHRleHRJ
c0NoYW5nZWQgJiYgcmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKLSAgICAgICAgICAg
ICAgICBjYWNoZS0+cG9zdFRleHRSZXBsYWNlbWVudE5vdGlmaWNhdGlvbih0aGlzLCBBWFRleHRF
ZGl0VHlwZURlbGV0ZSwgcHJldmlvdXNWYWx1ZSwgQVhUZXh0RWRpdFR5cGVJbnNlcnQsIHZhbHVl
LCBWaXNpYmxlUG9zaXRpb24oUG9zaXRpb24odGhpcywgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZv
cmVBbmNob3IpKSk7Ci0gICAgICAgIH0KLSNlbmRpZgogICAgIH0KIAogICAgIHNldEZvcm1Db250
cm9sVmFsdWVNYXRjaGVzUmVuZGVyZXIodHJ1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwCmluZGV4IDI4M2QyM2E2N2QyMDM2NDM3OGEzMTI1NjA4MDViMTRjYzg2OTEwN2Mu
Ljk5ZTZkNTk4ZDA2MzE5ODgzYjFhZjJhNWY3ZTk5NmJmZjI3ODI3M2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCkBAIC01MjQsNyArNTI0LDcgQEAgYm9vbCBEcmFnQ29u
dHJvbGxlcjo6Y29uY2x1ZGVFZGl0RHJhZyhEcmFnRGF0YSYgZHJhZ0RhdGEpCiAgICAgICAgICAg
ICAgICAgICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6OlNtYXJ0UmVwbGFj
ZTsKICAgICAgICAgICAgICAgICBpZiAoY2hvc2VQbGFpblRleHQpCiAgICAgICAgICAgICAgICAg
ICAgIG9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlvbkNvbW1hbmQ6Ok1hdGNoU3R5bGU7Ci0gICAg
ICAgICAgICAgICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUo
Km1fZG9jdW1lbnRVbmRlck1vdXNlLCBXVEY6Om1vdmUoZnJhZ21lbnQpLCBvcHRpb25zKSk7Cisg
ICAgICAgICAgICAgICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVh
dGUoKm1fZG9jdW1lbnRVbmRlck1vdXNlLCBmcmFnbWVudCwgb3B0aW9ucykpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcAppbmRleCAzZDlmZWYwZGViM2RlMWRmOGNhODU1Y2ZiNDBlNWNmYjYyZmNiYzU2Li44ODZj
NzY1MzFkYzg1MzFkOWYxMTNiYWQwNDdlNzI5MWU3ZTYzOGM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9F
dmVudEhhbmRsZXIuY3BwCkBAIC0zMjM5LDggKzMyMzksNyBAQCBzdGF0aWMgdm9pZCBzZXRJbml0
aWFsS2V5Ym9hcmRTZWxlY3Rpb24oRnJhbWUmIGZyYW1lLCBTZWxlY3Rpb25EaXJlY3Rpb24gZGly
ZWN0aQogICAgICAgICBicmVhazsKICAgICB9CiAKLSAgICBBWFRleHRTdGF0ZUNoYW5nZUludGVu
dCBpbnRlbnQoQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSwgQVhUZXh0U2VsZWN0
aW9uIHsgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRGlzY29udGlndW91cywgQVhUZXh0U2VsZWN0
aW9uR3JhbnVsYXJpdHlVbmtub3duIH0pOwotICAgIHNlbGVjdGlvbi5zZXRTZWxlY3Rpb24odmlz
aWJsZVBvc2l0aW9uLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMo
VXNlclRyaWdnZXJlZCksIGludGVudCk7CisgICAgc2VsZWN0aW9uLnNldFNlbGVjdGlvbih2aXNp
YmxlUG9zaXRpb24sIEZyYW1lU2VsZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhV
c2VyVHJpZ2dlcmVkKSk7CiB9CiAKIHN0YXRpYyB2b2lkIGhhbmRsZUtleWJvYXJkU2VsZWN0aW9u
TW92ZW1lbnQoRnJhbWUmIGZyYW1lLCBLZXlib2FyZEV2ZW50KiBldmVudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcAppbmRleCBkOGQyNWNmZThlYzVjOWYzZTZiMzhhOWE3
NTkxYWI5OWY1ZDBhZTMzLi43N2MwN2ZlYTZiZTY1MTliMmQ5YTUzNGNlMGFkZDI2YTcyZTMwNzU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3BwCkBAIC0zNDAsMTAgKzM0
MCw4IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNJbkRvY3VtZW50T3JkZXIo
Rm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXliCiAgICAgaWYgKGNhcmV0QnJvd3NpbmcpIHsK
ICAgICAgICAgUG9zaXRpb24gcG9zaXRpb24gPSBmaXJzdFBvc2l0aW9uSW5PckJlZm9yZU5vZGUo
ZWxlbWVudC5nZXQoKSk7CiAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKHBv
c2l0aW9uLCBwb3NpdGlvbiwgRE9XTlNUUkVBTSk7Ci0gICAgICAgIGlmIChmcmFtZS5zZWxlY3Rp
b24oKS5zaG91bGRDaGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkgewotICAgICAgICAgICAg
QVhUZXh0U3RhdGVDaGFuZ2VJbnRlbnQgaW50ZW50KEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVj
dGlvbk1vdmUsIEFYVGV4dFNlbGVjdGlvbiB7IEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkRpc2Nv
bnRpZ3VvdXMsIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5VW5rbm93biB9KTsKLSAgICAgICAg
ICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIEZyYW1lU2Vs
ZWN0aW9uOjpkZWZhdWx0U2V0U2VsZWN0aW9uT3B0aW9ucyhVc2VyVHJpZ2dlcmVkKSwgaW50ZW50
KTsKLSAgICAgICAgfQorICAgICAgICBpZiAoZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdl
U2VsZWN0aW9uKG5ld1NlbGVjdGlvbikpCisgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24obmV3U2VsZWN0aW9uKTsKICAgICB9CiAKICAgICBlbGVtZW50LT5mb2N1cyhm
YWxzZSwgZGlyZWN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkVkaXRvckNsaWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBw
b3J0L1dlYkVkaXRvckNsaWVudC5tbQppbmRleCBlNTkwZDk2Njk4ZjQ4NzA5OWFjOWI5NjUzYjQ2
ZDY2NTBlM2UzMTNkLi5kMjFjZGYwYmNmMWVjYmE1ZTM1M2NlYzQ0MjcxN2JhMjE4ZTAxMDA1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJFZGl0b3JDbGll
bnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRWRpdG9yQ2xp
ZW50Lm1tCkBAIC01NDYsNyArNTQ2LDYgQEAgc3RhdGljIE5TU3RyaW5nKiB1bmRvTmFtZUZvckVk
aXRBY3Rpb24oRWRpdEFjdGlvbiBlZGl0QWN0aW9uKQogICAgIC8vIEZJWE1FOiBUaGlzIGlzIGlk
ZW50aWNhbCB0byBjb2RlIGluIFdlYktpdDIncyBXZWJFZGl0Q29tbWFuZFByb3h5IGNsYXNzOyB3
b3VsZCBiZSBuaWNlIHRvIHNoYXJlIHRoZSBzdHJpbmdzIGluc3RlYWQgb2YgaGF2aW5nIHR3byBj
b3BpZXMuCiAgICAgc3dpdGNoIChlZGl0QWN0aW9uKSB7CiAgICAgICAgIGNhc2UgRWRpdEFjdGlv
blVuc3BlY2lmaWVkOiByZXR1cm4gbmlsOwotICAgICAgICBjYXNlIEVkaXRBY3Rpb25JbnNlcnQ6
IHJldHVybiBuaWw7CiAgICAgICAgIGNhc2UgRWRpdEFjdGlvblNldENvbG9yOiByZXR1cm4gVUlf
U1RSSU5HX0tFWV9JTlRFUk5BTCgiU2V0IENvbG9yIiwgIlNldCBDb2xvciAoVW5kbyBhY3Rpb24g
bmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwogICAgICAgICBjYXNlIEVkaXRBY3Rpb25TZXRC
YWNrZ3JvdW5kQ29sb3I6IHJldHVybiBVSV9TVFJJTkdfS0VZX0lOVEVSTkFMKCJTZXQgQmFja2dy
b3VuZCBDb2xvciIsICJTZXQgQmFja2dyb3VuZCBDb2xvciAoVW5kbyBhY3Rpb24gbmFtZSkiLCAi
VW5kbyBhY3Rpb24gbmFtZSIpOwogICAgICAgICBjYXNlIEVkaXRBY3Rpb25UdXJuT2ZmS2Vybmlu
ZzogcmV0dXJuIFVJX1NUUklOR19LRVlfSU5URVJOQUwoIlR1cm4gT2ZmIEtlcm5pbmciLCAiVHVy
biBPZmYgS2VybmluZyAoVW5kbyBhY3Rpb24gbmFtZSkiLCAiVW5kbyBhY3Rpb24gbmFtZSIpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHku
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCmlu
ZGV4IDg3ODU1OTU0NjJmZjhmYmU4YThiY2YzZjZiYWFjNjAxZmYzMGI5YmMuLjU0Y2UwM2M2MjQy
OTA2MDc5NTYwNWU5MTg5MTQ2MzFkNjk3NTYxODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHAKQEAgLTc0LDggKzc0LDYgQEAgU3RyaW5n
IFdlYkVkaXRDb21tYW5kUHJveHk6Om5hbWVGb3JFZGl0QWN0aW9uKEVkaXRBY3Rpb24gZWRpdEFj
dGlvbikKICAgICBzd2l0Y2ggKGVkaXRBY3Rpb24pIHsKICAgICBjYXNlIEVkaXRBY3Rpb25VbnNw
ZWNpZmllZDoKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwotICAgIGNhc2UgRWRpdEFjdGlvbklu
c2VydDoKLSAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIGNhc2UgRWRpdEFjdGlvblNldENv
bG9yOgogICAgICAgICByZXR1cm4gV0VCX1VJX1NUUklOR19LRVkoIlNldCBDb2xvciIsICJTZXQg
Q29sb3IgKFVuZG8gYWN0aW9uIG5hbWUpIiwgIlVuZG8gYWN0aW9uIG5hbWUiKTsKICAgICBjYXNl
IEVkaXRBY3Rpb25TZXRCYWNrZ3JvdW5kQ29sb3I6CmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VM
b2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMDQ5NDdiNmUyMTQzYWU3NGUzZTg3MjhkZGVkMzdm
ZWIxMjkzYzRkZS4uYmYxZTc2MjhmZjc4MWNlYTNkOTIxNjczMDU0YjgyODdhMDFiZDFmNSAxMDA2
NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDE1LTA0LTI0ICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9y
Zz4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTgzMjY2LgorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MTY0CisKKyAgICAgICAg
QnJva2UgMzItYml0IGJ1aWxkIGFuZCBhIHRlc3QuIChSZXF1ZXN0ZWQgYnkgYXAgb24gI3dlYmtp
dCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQgY2hhbmdlc2V0OgorCisgICAgICAgICJBWDogcmljaGVy
IHRleHQgY2hhbmdlIG5vdGlmaWNhdGlvbnMgKDE0MjcxOSkiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDI3MTkKKyAgICAgICAgaHR0cDovL3RyYWMu
d2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgzMjY2CisKIDIwMTUtMDQtMjQgIEJyZW50IEZ1bGdoYW0g
IDxiZnVsZ2hhbUBhcHBsZS5jb20+CiAKICAgICAgICAgUkVHUkVTU0lPTjogV2ViS2l0Mi5BY3Rp
b25NZW51c1Rlc3QgQVBJIHRlc3QgZmFpbHMKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5oIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgKaW5kZXggOTA4
ZGJkYzlmN2IxOTU3N2IzZDRmMDgyZjRkM2FkMjUwNmNjNmVkYy4uMTkzODZjZWIwZDEwZTFkZTBl
MDBjZDU5NWI1ZjFkMDg1NGI4MDRiZCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
bWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5kbGVyLmgKQEAgLTQyLDcg
KzQyLDYgQEAKIC0gKHZvaWQpc2V0UGxhdGZvcm1FbGVtZW50OihpZClwbGF0Zm9ybUVsZW1lbnQ7
CiAtICh2b2lkKXNldENhbGxiYWNrOihKU09iamVjdFJlZiljYWxsYmFjazsKIC0gKHZvaWQpc3Rh
cnRPYnNlcnZpbmc7Ci0tICh2b2lkKXN0b3BPYnNlcnZpbmc7CiAKIEBlbmQKIApkaWZmIC0tZ2l0
IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRpb25IYW5k
bGVyLm1tIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlOb3RpZmljYXRp
b25IYW5kbGVyLm1tCmluZGV4IGYxYzlhZmQ4OTMzYWZhYjQwZmMwYmJiYWM0YWVhNjA5NWRmOGY5
ZjEuLmFkYTY4N2E0MWYxNGIwZWQ1YmFiYjQ4OGEzMjkyNzlhNGQxNmExZDIgMTAwNjQ0Ci0tLSBh
L1Rvb2xzL0R1bXBSZW5kZXJUcmVlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxl
ci5tbQorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNh
dGlvbkhhbmRsZXIubW0KQEAgLTEwNCwxMSArMTA0LDYgQEAKICAgICBbW05TTm90aWZpY2F0aW9u
Q2VudGVyIGRlZmF1bHRDZW50ZXJdIGFkZE9ic2VydmVyOnNlbGYgc2VsZWN0b3I6QHNlbGVjdG9y
KF9ub3RpZmljYXRpb25SZWNlaXZlZDopIG5hbWU6QCJBWERSVE5vdGlmaWNhdGlvbiIgb2JqZWN0
Om5pbF07CiB9CiAKLS0gKHZvaWQpc3RvcE9ic2VydmluZwotewotICAgIFtbTlNOb3RpZmljYXRp
b25DZW50ZXIgZGVmYXVsdENlbnRlcl0gcmVtb3ZlT2JzZXJ2ZXI6c2VsZl07Ci19Ci0KIC0gKHZv
aWQpX25vdGlmaWNhdGlvblJlY2VpdmVkOihOU05vdGlmaWNhdGlvbiAqKW5vdGlmaWNhdGlvbgog
ewogICAgIE5TU3RyaW5nICpub3RpZmljYXRpb25OYW1lID0gW1tub3RpZmljYXRpb24gdXNlcklu
Zm9dIG9iamVjdEZvcktleTpAIm5vdGlmaWNhdGlvbk5hbWUiXTsKQEAgLTExNywyNyArMTEyLDE2
IEBACiAgICAgaWYgKG1fcGxhdGZvcm1FbGVtZW50ICYmIG1fcGxhdGZvcm1FbGVtZW50ICE9IFtu
b3RpZmljYXRpb24gb2JqZWN0XSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNTdHJpbmcgKnVz
ZXJJbmZvSlNPTlZhbHVlID0gbm90aWZpY2F0aW9uLnVzZXJJbmZvW0AidXNlckluZm8iXTsKLQog
ICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc05vdGlmaWNhdGlvbihBZG9wdCwgW25vdGlm
aWNhdGlvbk5hbWUgY3JlYXRlSlNTdHJpbmdSZWZdKTsKICAgICBKU1ZhbHVlUmVmIG5vdGlmaWNh
dGlvbk5hbWVBcmd1bWVudCA9IEpTVmFsdWVNYWtlU3RyaW5nKFttYWluRnJhbWUgZ2xvYmFsQ29u
dGV4dF0sIGpzTm90aWZpY2F0aW9uLmdldCgpKTsKLSAgICBKU1ZhbHVlUmVmIHVzZXJJbmZvSlNP
TlZhbHVlQXJndW1lbnQgPSBuaWw7Ci0gICAgaWYgKFt1c2VySW5mb0pTT05WYWx1ZSBsZW5ndGhd
KSB7Ci0gICAgICAgIEpTUmV0YWluUHRyPEpTU3RyaW5nUmVmPiBqc1VzZXJJbmZvSlNPTlZhbHVl
KEFkb3B0LCBbdXNlckluZm9KU09OVmFsdWUgY3JlYXRlSlNTdHJpbmdSZWZdKTsKLSAgICAgICAg
dXNlckluZm9KU09OVmFsdWVBcmd1bWVudCA9IEpTVmFsdWVNYWtlRnJvbUpTT05TdHJpbmcoW21h
aW5GcmFtZSBnbG9iYWxDb250ZXh0XSwganNVc2VySW5mb0pTT05WYWx1ZS5nZXQoKSk7Ci0gICAg
fQogICAgIGlmIChtX3BsYXRmb3JtRWxlbWVudCkgewotICAgICAgICAvLyBMaXN0ZW5lciBmb3Ig
b25lIGVsZW1lbnQgZ2V0cyB0aGUgbm90aWZpY2F0aW9uIG5hbWUgYW5kIHVzZXJJbmZvLgotICAg
ICAgICBKU1ZhbHVlUmVmIGFyZ3VtZW50c1syXTsKLSAgICAgICAgYXJndW1lbnRzWzBdID0gbm90
aWZpY2F0aW9uTmFtZUFyZ3VtZW50OwotICAgICAgICBhcmd1bWVudHNbMV0gPSB1c2VySW5mb0pT
T05WYWx1ZUFyZ3VtZW50OwotICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKFttYWluRnJh
bWUgZ2xvYmFsQ29udGV4dF0sIG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjaywgMCwgMiwg
YXJndW1lbnRzLCAwKTsKKyAgICAgICAgLy8gTGlzdGVuZXIgZm9yIG9uZSBlbGVtZW50IGp1c3Qg
Z2V0cyBvbmUgYXJndW1lbnQsIHRoZSBub3RpZmljYXRpb24gbmFtZS4KKyAgICAgICAgSlNPYmpl
Y3RDYWxsQXNGdW5jdGlvbihbbWFpbkZyYW1lIGdsb2JhbENvbnRleHRdLCBtX25vdGlmaWNhdGlv
bkZ1bmN0aW9uQ2FsbGJhY2ssIDAsIDEsICZub3RpZmljYXRpb25OYW1lQXJndW1lbnQsIDApOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVyIGdldHMgdGhlIGVsZW1l
bnQsIG5vdGlmaWNhdGlvbiBuYW1lIGFuZCB1c2VySW5mby4KLSAgICAgICAgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbM107CisgICAgICAgIC8vIEEgZ2xvYmFsIGxpc3RlbmVyIGdldHMgdGhlIGVsZW1l
bnQgYW5kIHRoZSBub3RpZmljYXRpb24gbmFtZSBhcyBhcmd1bWVudHMuCisgICAgICAgIEpTVmFs
dWVSZWYgYXJndW1lbnRzWzJdOwogICAgICAgICBhcmd1bWVudHNbMF0gPSBBY2Nlc3NpYmlsaXR5
VUlFbGVtZW50OjptYWtlSlNBY2Nlc3NpYmlsaXR5VUlFbGVtZW50KFttYWluRnJhbWUgZ2xvYmFs
Q29udGV4dF0sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQoW25vdGlmaWNhdGlvbiBvYmplY3RdKSk7
CiAgICAgICAgIGFyZ3VtZW50c1sxXSA9IG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudDsKLSAgICAg
ICAgYXJndW1lbnRzWzJdID0gdXNlckluZm9KU09OVmFsdWVBcmd1bWVudDsKICAgICAgICAgSlNP
YmplY3RDYWxsQXNGdW5jdGlvbihbbWFpbkZyYW1lIGdsb2JhbENvbnRleHRdLCBtX25vdGlmaWNh
dGlvbkZ1bmN0aW9uQ2FsbGJhY2ssIDAsIDIsIGFyZ3VtZW50cywgMCk7CiAgICAgfQogfQpkaWZm
IC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvbWFjL0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRN
YWMubW0gYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1h
Yy5tbQppbmRleCAzOTdjNjM4YWU0NTU3MGM5YzJlOTBkM2I0MjA3MGQxZTdiODFmODhjLi40Njcz
YTFkMmZjYWQ0ZTM0ZWQwOTVkNDg5MDZhM2NhZmQ0MDExZGRkIDEwMDY0NAotLS0gYS9Ub29scy9E
dW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9tYWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQpAQCAtMTQ0
Niw3ICsxNDQ2LDYgQEAgdm9pZCBBY2Nlc3NpYmlsaXR5VUlFbGVtZW50OjpyZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcigpCiAgICAgLy8gTWFjIHByb2dyYW1tZXJzIHNob3VsZCBub3QgYmUgdHJ5
aW5nIHRvIHJlbW92ZSBhIGxpc3RlbmVyIHRoYXQncyBhbHJlYWR5IHJlbW92ZWQuCiAgICAgQVNT
RVJUKG1fbm90aWZpY2F0aW9uSGFuZGxlcik7CiAKLSAgICBbbV9ub3RpZmljYXRpb25IYW5kbGVy
IHN0b3BPYnNlcnZpbmddOwogICAgIFttX25vdGlmaWNhdGlvbkhhbmRsZXIgcmVsZWFzZV07CiAg
ICAgbV9ub3RpZmljYXRpb25IYW5kbGVyID0gbmlsOwogfQpkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eU5vdGlmaWNhdGlv
bkhhbmRsZXIubW0gYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9B
Y2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQppbmRleCAyOGNhMDNmMzIxMmUzZTY1
N2Q5NWE5ZDA1MzQzNWM0ZTA3ODBmZGQxLi42NTFiNTkxMTJlODk3ZmI2NmE4M2IyZTc1ZjZmMGVm
NjZmMDJjNWIyIDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVu
ZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0aW9uSGFuZGxlci5tbQorKysgYi9Ub29scy9X
ZWJLaXRUZXN0UnVubmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5Tm90aWZpY2F0
aW9uSGFuZGxlci5tbQpAQCAtMTI1LDMwICsxMjUsMTkgQEAKICAgICBpZiAobV9wbGF0Zm9ybUVs
ZW1lbnQgJiYgbV9wbGF0Zm9ybUVsZW1lbnQgIT0gW25vdGlmaWNhdGlvbiBvYmplY3RdKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBOU1N0cmluZyAqdXNlckluZm9KU09OVmFsdWUgPSBub3RpZmlj
YXRpb24udXNlckluZm9bQCJ1c2VySW5mbyJdOwotCiAgICAgV0tCdW5kbGVGcmFtZVJlZiBtYWlu
RnJhbWUgPSBXS0J1bmRsZVBhZ2VHZXRNYWluRnJhbWUoV1RSOjpJbmplY3RlZEJ1bmRsZTo6c2lu
Z2xldG9uKCkucGFnZSgpLT5wYWdlKCkpOwogICAgIEpTQ29udGV4dFJlZiBjb250ZXh0ID0gV0tC
dW5kbGVGcmFtZUdldEphdmFTY3JpcHRDb250ZXh0KG1haW5GcmFtZSk7CiAKICAgICBKU1JldGFp
blB0cjxKU1N0cmluZ1JlZj4ganNOb3RpZmljYXRpb24oQWRvcHQsIFtub3RpZmljYXRpb25OYW1l
IGNyZWF0ZUpTU3RyaW5nUmVmXSk7CiAgICAgSlNWYWx1ZVJlZiBub3RpZmljYXRpb25OYW1lQXJn
dW1lbnQgPSBKU1ZhbHVlTWFrZVN0cmluZyhjb250ZXh0LCBqc05vdGlmaWNhdGlvbi5nZXQoKSk7
Ci0gICAgSlNWYWx1ZVJlZiB1c2VySW5mb0pTT05WYWx1ZUFyZ3VtZW50ID0gbmlsOwotICAgIGlm
IChbdXNlckluZm9KU09OVmFsdWUgbGVuZ3RoXSkgewotICAgICAgICBKU1JldGFpblB0cjxKU1N0
cmluZ1JlZj4ganNVc2VySW5mb0pTT05WYWx1ZShBZG9wdCwgW3VzZXJJbmZvSlNPTlZhbHVlIGNy
ZWF0ZUpTU3RyaW5nUmVmXSk7Ci0gICAgICAgIHVzZXJJbmZvSlNPTlZhbHVlQXJndW1lbnQgPSBK
U1ZhbHVlTWFrZUZyb21KU09OU3RyaW5nKGNvbnRleHQsIGpzVXNlckluZm9KU09OVmFsdWUuZ2V0
KCkpOwotICAgIH0KICAgICBpZiAobV9wbGF0Zm9ybUVsZW1lbnQpIHsKLSAgICAgICAgLy8gTGlz
dGVuZXIgZm9yIG9uZSBlbGVtZW50IGdldHMgdGhlIG5vdGlmaWNhdGlvbiBuYW1lIGFuZCB1c2Vy
SW5mby4KLSAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbMl07Ci0gICAgICAgIGFyZ3VtZW50
c1swXSA9IG5vdGlmaWNhdGlvbk5hbWVBcmd1bWVudDsKLSAgICAgICAgYXJndW1lbnRzWzFdID0g
dXNlckluZm9KU09OVmFsdWVBcmd1bWVudDsKLSAgICAgICAgSlNPYmplY3RDYWxsQXNGdW5jdGlv
bihjb250ZXh0LCBjb25zdF9jYXN0PEpTT2JqZWN0UmVmPihtX25vdGlmaWNhdGlvbkZ1bmN0aW9u
Q2FsbGJhY2spLCAwLCAyLCBhcmd1bWVudHMsIDApOworICAgICAgICAvLyBMaXN0ZW5lciBmb3Ig
b25lIGVsZW1lbnQganVzdCBnZXRzIG9uZSBhcmd1bWVudCwgdGhlIG5vdGlmaWNhdGlvbiBuYW1l
LgorICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0aW9uKGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNP
YmplY3RSZWY+KG1fbm90aWZpY2F0aW9uRnVuY3Rpb25DYWxsYmFjayksIDAsIDEsICZub3RpZmlj
YXRpb25OYW1lQXJndW1lbnQsIDApOwogICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIEEgZ2xvYmFs
IGxpc3RlbmVyIGdldHMgdGhlIGVsZW1lbnQsIG5vdGlmaWNhdGlvbiBuYW1lIGFuZCB1c2VySW5m
by4KLSAgICAgICAgSlNWYWx1ZVJlZiBhcmd1bWVudHNbM107CisgICAgICAgIC8vIEEgZ2xvYmFs
IGxpc3RlbmVyIGdldHMgdGhlIGVsZW1lbnQgYW5kIHRoZSBub3RpZmljYXRpb24gbmFtZSBhcyBh
cmd1bWVudHMuCisgICAgICAgIEpTVmFsdWVSZWYgYXJndW1lbnRzWzJdOwogICAgICAgICBhcmd1
bWVudHNbMF0gPSB0b0pTKGNvbnRleHQsIFdURjo6Z2V0UHRyKFdUUjo6QWNjZXNzaWJpbGl0eVVJ
RWxlbWVudDo6Y3JlYXRlKFtub3RpZmljYXRpb24gb2JqZWN0XSkpKTsKICAgICAgICAgYXJndW1l
bnRzWzFdID0gbm90aWZpY2F0aW9uTmFtZUFyZ3VtZW50OwotICAgICAgICBhcmd1bWVudHNbMl0g
PSB1c2VySW5mb0pTT05WYWx1ZUFyZ3VtZW50OwogICAgICAgICBKU09iamVjdENhbGxBc0Z1bmN0
aW9uKGNvbnRleHQsIGNvbnN0X2Nhc3Q8SlNPYmplY3RSZWY+KG1fbm90aWZpY2F0aW9uRnVuY3Rp
b25DYWxsYmFjayksIDAsIDIsIGFyZ3VtZW50cywgMCk7CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEv
VG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9tYWMvQWNjZXNzaWJpbGl0eVVJ
RWxlbWVudE1hYy5tbSBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvbWFj
L0FjY2Vzc2liaWxpdHlVSUVsZW1lbnRNYWMubW0KaW5kZXggZTI2MDdlMTNiYjg0NzMyNDZiZDg3
ODJlODU4Mzk1ZjdjNjVhNTIwMy4uZWQwMmZiNzdlZGNjZjdhNGQ0N2JmMTk4YTExNjdiM2QyZWYw
OTY0NSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9t
YWMvQWNjZXNzaWJpbGl0eVVJRWxlbWVudE1hYy5tbQorKysgYi9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL0luamVjdGVkQnVuZGxlL21hYy9BY2Nlc3NpYmlsaXR5VUlFbGVtZW50TWFjLm1tCkBAIC0x
NDc2LDcgKzE0NzYsNiBAQCBib29sIEFjY2Vzc2liaWxpdHlVSUVsZW1lbnQ6OnJlbW92ZU5vdGlm
aWNhdGlvbkxpc3RlbmVyKCkKICAgICAvLyBNYWMgcHJvZ3JhbW1lcnMgc2hvdWxkIG5vdCBiZSB0
cnlpbmcgdG8gcmVtb3ZlIGEgbGlzdGVuZXIgdGhhdCdzIGFscmVhZHkgcmVtb3ZlZC4KICAgICBB
U1NFUlQobV9ub3RpZmljYXRpb25IYW5kbGVyKTsKIAotICAgIFttX25vdGlmaWNhdGlvbkhhbmRs
ZXIgc3RvcE9ic2VydmluZ107CiAgICAgW21fbm90aWZpY2F0aW9uSGFuZGxlciByZWxlYXNlXTsK
ICAgICBtX25vdGlmaWNhdGlvbkhhbmRsZXIgPSBuaWw7CiAgICAgCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggYzE0Yzc2NmMy
N2U1MDViMzk0NDZkNzViNmE0NTVmZDgxZWNiYzQyOS4uYjgwYjc5NjlkZjFmMzQyMmYwYjNkNTYz
OWU4YzA4YTRkZGU1MWFlOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE1LTA0LTI0ICBDb21t
aXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAgICAgICBVbnJldmlld2Vk
LCByb2xsaW5nIG91dCByMTgzMjY2LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTQ0MTY0CisKKyAgICAgICAgQnJva2UgMzItYml0IGJ1aWxkIGFuZCBh
IHRlc3QuIChSZXF1ZXN0ZWQgYnkgYXAgb24gI3dlYmtpdCkuCisKKyAgICAgICAgUmV2ZXJ0ZWQg
Y2hhbmdlc2V0OgorCisgICAgICAgICJBWDogcmljaGVyIHRleHQgY2hhbmdlIG5vdGlmaWNhdGlv
bnMgKDE0MjcxOSkiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDI3MTkKKyAgICAgICAgaHR0cDovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMTgz
MjY2CisKIDIwMTUtMDQtMjQgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAg
ICAgICAgIE9yaWdpbiBoZWFkZXIgaXMgcHJlc2VydmVkIG9uIGNyb3NzLW9yaWdpbiByZWRpcmVj
dHMuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9p
bnB1dC1yZXBsYWNldmFsdWUtdXNlcmluZm8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5wdXQtcmVwbGFjZXZhbHVlLXVzZXJpbmZvLWV4cGVj
dGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZhNmY4MmYwYTc4MjdiZjY1
N2QxNDVkZmJiZDg1MGQ2MTk3NzQ3NC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbnB1
dC1yZXBsYWNldmFsdWUtdXNlcmluZm8tZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEs
MjAgKzAsMCBAQAotICAKLVRoaXMgdGVzdHMgdmFsdWUgY2hhbmdlIG5vdGlmaWNhdGlvbnMgdXNl
ciBpbmZvIGRhdGEgd2hlbiByZXBsYWNpbmcgdGhlIGNvbnRlbnRzIG9mIGFuIGlucHV0IGZpZWxk
LgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2Vz
LCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBhZGRlZE5vdGlmaWNhdGlv
biBpcyB0cnVlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRFU1QgQ09NUExF
VEUKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlz
IEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFY
VGV4dENoYW5nZVZhbHVlcyJdWzBdWyJBWFRleHRDaGFuZ2VWYWx1ZSJdIGlzICIwIgotUEFTUyBy
ZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0Q2hhbmdlVmFsdWVzIl1bMF1bIkFYVGV4dEVkaXRU
eXBlIl0gaXMgQVhUZXh0RWRpdFR5cGVEZWxldGUKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1b
IkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQKLVBB
U1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dENoYW5nZVZhbHVlcyJdWzFdWyJBWFRleHRD
aGFuZ2VWYWx1ZSJdIGlzICIxIgotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0Q2hh
bmdlVmFsdWVzIl1bMV1bIkFYVGV4dEVkaXRUeXBlIl0gaXMgQVhUZXh0RWRpdFR5cGVJbnNlcnQK
LVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4
dENoYW5nZVZhbHVlcyJdWzBdWyJBWFRleHRDaGFuZ2VWYWx1ZSJdIGlzICIgIgotUEFTUyByZXN1
bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0Q2hhbmdlVmFsdWVzIl1bMF1bIkFYVGV4dEVkaXRUeXBl
Il0gaXMgQVhUZXh0RWRpdFR5cGVJbnNlcnQKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvaW5wdXQtcmVwbGFjZXZhbHVlLXVzZXJpbmZvLmh0bWwg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9pbnB1dC1yZXBsYWNldmFs
dWUtdXNlcmluZm8uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGUwZGUzMThi
YmFhODE5ZjA5N2IyOWU3YjYxNzJiZjM5MjUxMTk2OS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJp
bGl0eS9pbnB1dC1yZXBsYWNldmFsdWUtdXNlcmluZm8uaHRtbAorKysgL2Rldi9udWxsCkBAIC0x
LDgzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VO
Ij4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9q
cy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL2VkaXRp
bmcvZWRpdGluZy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBpZD0iYm9keSI+Ci0KLSAg
ICA8aW5wdXQgdHlwZT0icGFzc3dvcmQiIGlkPSJzZWN1cmV2YWx1ZXRlc3QiPgotCi0gICAgPGlu
cHV0IHR5cGU9InRleHQiIGlkPSJ2YWx1ZXRlc3QiPgotCi0gICAgPHAgaWQ9ImRlc2NyaXB0aW9u
Ij48L3A+Ci0gICAgPGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Ci0gICAgPGRpdiBpZD0ibm90aWZp
Y2F0aW9ucyI+PC9kaXY+Ci0KLSAgICA8c2NyaXB0PgotCi0gICAgICAgIGRlc2NyaXB0aW9uKCJU
aGlzIHRlc3RzIHZhbHVlIGNoYW5nZSBub3RpZmljYXRpb25zIHVzZXIgaW5mbyBkYXRhIHdoZW4g
cmVwbGFjaW5nIHRoZSBjb250ZW50cyBvZiBhbiBpbnB1dCBmaWVsZC4iKTsKLQotICAgICAgICB2
YXIgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlRWRpdCA9IDE7Ci0KLSAgICAgICAgdmFyIEFYVGV4dEVk
aXRUeXBlRGVsZXRlID0gMTsKLSAgICAgICAgdmFyIEFYVGV4dEVkaXRUeXBlSW5zZXJ0ID0gQVhU
ZXh0RWRpdFR5cGVEZWxldGUgKyAxOwotCi0gICAgICAgIHZhciB3ZWJBcmVhID0gMDsKLSAgICAg
ICAgdmFyIGNvdW50ID0gMDsKLSAgICAgICAgdmFyIHJlc3VsdHMgPSBbXTsKLSAgICAgICAgdmFy
IHJlc3VsdEluZGV4ID0gMDsKLSAgICAgICAgZnVuY3Rpb24gbm90aWZpY2F0aW9uQ2FsbGJhY2so
bm90aWZpY2F0aW9uLCB1c2VySW5mbykgewotICAgICAgICAgICAgaWYgKG5vdGlmaWNhdGlvbiA9
PSAiQVhWYWx1ZUNoYW5nZWQiKSB7Ci0gICAgICAgICAgICAgICAgY291bnQrKzsKLSAgICAgICAg
ICAgICAgICByZXN1bHRzLnB1c2godXNlckluZm8pOwotICAgICAgICAgICAgICAgIGlmIChjb3Vu
dCA9PSAyKSB7Ci0KLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0
SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlw
ZUVkaXQiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5k
ZXhdW1wiQVhUZXh0Q2hhbmdlVmFsdWVzXCJdWzBdW1wiQVhUZXh0Q2hhbmdlVmFsdWVcIl0iLCAi
XCIwXCIiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5k
ZXhdW1wiQVhUZXh0Q2hhbmdlVmFsdWVzXCJdWzBdW1wiQVhUZXh0RWRpdFR5cGVcIl0iLCAiQVhU
ZXh0RWRpdFR5cGVEZWxldGUiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRl
Q2hhbmdlVHlwZUVkaXQiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNb
cmVzdWx0SW5kZXhdW1wiQVhUZXh0Q2hhbmdlVmFsdWVzXCJdWzFdW1wiQVhUZXh0Q2hhbmdlVmFs
dWVcIl0iLCAiXCIxXCIiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNb
cmVzdWx0SW5kZXhdW1wiQVhUZXh0Q2hhbmdlVmFsdWVzXCJdWzFdW1wiQVhUZXh0RWRpdFR5cGVc
Il0iLCAiQVhUZXh0RWRpdFR5cGVJbnNlcnQiKTsKLQotICAgICAgICAgICAgICAgICAgICAvLyBQ
YXNzd29yZCBub3RpZmljYXRpb25zIHdpbGwgYmUgaW5zZXJ0IG9ubHkgYW5kIHRoZSB2YWx1ZSBz
dHJpbmcgd2lsbCBiZSB3aGl0ZXNwYWNlCi0gICAgICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4
Kys7Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtc
IkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5cGVFZGl0Iik7
Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFY
VGV4dENoYW5nZVZhbHVlc1wiXVswXVtcIkFYVGV4dENoYW5nZVZhbHVlXCJdIiwgIlwiIFwiIik7
Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFY
VGV4dENoYW5nZVZhbHVlc1wiXVswXVtcIkFYVGV4dEVkaXRUeXBlXCJdIiwgIkFYVGV4dEVkaXRU
eXBlSW5zZXJ0Iik7Ci0KLSAgICAgICAgICAgICAgICAgICAgd2ViQXJlYS5yZW1vdmVOb3RpZmlj
YXRpb25MaXN0ZW5lcigpOwotICAgICAgICAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci5u
b3RpZnlEb25lKCk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICB9
Ci0KLSAgICAgICAgZnVuY3Rpb24gc2V0dmFsdWUoKSB7Ci0gICAgICAgICAgICBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgidmFsdWV0ZXN0IikudmFsdWUgPSAiMSI7Ci0gICAgICAgIH0KLQotICAg
ICAgICBmdW5jdGlvbiBzZXRzZWN1cmV2YWx1ZSgpIHsKLSAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJzZWN1cmV2YWx1ZXRlc3QiKS52YWx1ZSA9ICIxIjsKLSAgICAgICAgfQot
Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ2YWx1ZXRlc3QiKS52YWx1ZSA9ICIw
IjsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInNlY3VyZXZhbHVldGVzdCIpLnZh
bHVlID0gIjAiOwotCi0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLSAg
ICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJp
bGl0eSh0cnVlKTsKLQotICAgICAgICAgICAgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICAgIHZhciBhZGRlZE5v
dGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwotICAgICAgICAgICAgc2hvdWxkQmUoImFkZGVkTm90aWZpY2F0aW9uIiwgInRy
dWUiKTsKLQotICAgICAgICAgICAgc2V0dmFsdWUoKTsKLQotICAgICAgICAgICAgc2V0c2VjdXJl
dmFsdWUoKTsKLSAgICAgICAgfQotICAgIDwvc2NyaXB0PgotCi0gICAgPHNjcmlwdCBzcmM9Ii4u
Ly4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9o
dG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkv
c2VsZWN0aW9uLWNoYW5nZS11c2VyaW5mby1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWxlY3Rpb24tY2hhbmdlLXVzZXJpbmZvLWV4cGVjdGVk
LnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQyMmZmZGNkODU3YTI1NDA0YTFh
ZGJkNzM2NjQwNWQ1NDM5NzFiNy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWxlY3Rp
b24tY2hhbmdlLXVzZXJpbmZvLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDk1ICsw
LDAgQEAKLW9uZSB0d28gdGhyZWUuIGZvdXIgZml2ZSBzaXguCi0KLXNldmVuIGVpZ2h0IG5pbmUu
Ci0KLVRoaXMgdGVzdHMgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIHVzZXIgaW5mbyBk
YXRhLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3Nh
Z2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBhZGRlZE5vdGlmaWNh
dGlvbiBpcyB0cnVlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5n
ZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlCi1QQVNTIHJlc3Vs
dHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNl
bGVjdGlvbkdyYW51bGFyaXR5Q2hhcmFjdGVyCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0
Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBB
WFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5k
ZXhdWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5Q2hhcmFjdGVyCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cwotUEFTUyBy
ZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0gaXMgQVhUZXh0U3Rh
dGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZQotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhU
ZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVdv
cmQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJd
IGlzIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRl
eF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVj
dGlvbk1vdmUKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5Il0gaXMgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlXb3JkCi1QQVNTIHJlc3VsdHNb
cmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25QcmV2aW91cwotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U3Rh
dGVDaGFuZ2VUeXBlIl0gaXMgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZQotUEFT
UyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXSBpcyBB
WFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVNlbnRlbmNlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5k
ZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rp
b25OZXh0Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUi
XSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlCi1QQVNTIHJlc3VsdHNbcmVz
dWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5U2VudGVuY2UKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzCi1Q
QVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhd
WyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5TGluZQotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uIl0gaXMgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dAotUEFTUyByZXN1bHRzW3Jlc3Vs
dEluZGV4XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0gaXMgQVhUZXh0U3RhdGVDaGFuZ2VUeXBl
U2VsZWN0aW9uTW92ZQotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0aW9u
R3JhbnVsYXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUxpbmUKLVBBU1MgcmVz
dWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvblByZXZpb3VzCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRl
eHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3Zl
Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJd
IGlzIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5UGFyYWdyYXBoCi1QQVNTIHJlc3VsdHNbcmVz
dWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25E
aXJlY3Rpb25OZXh0Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5n
ZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlCi1QQVNTIHJlc3Vs
dHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNl
bGVjdGlvbkdyYW51bGFyaXR5UGFyYWdyYXBoCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2
aW91cwotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0g
aXMgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZQotUEFTUyByZXN1bHRzW3Jlc3Vs
dEluZGV4XVsiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25H
cmFudWxhcml0eUxpbmUKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZAotUEFTUyByZXN1bHRz
W3Jlc3VsdEluZGV4XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0gaXMgQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlU2VsZWN0aW9uTW92ZQotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2Vs
ZWN0aW9uR3JhbnVsYXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUxpbmUKLVBB
U1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZwotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4
XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0gaXMgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0
aW9uTW92ZQotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVNlbnRlbmNlCi1QQVNTIHJlc3Vs
dHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxl
Y3Rpb25EaXJlY3Rpb25FbmQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0YXRl
Q2hhbmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUKLVBBU1Mg
cmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Il0gaXMgQVhU
ZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlTZW50ZW5jZQotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4
XVsiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uIl0gaXMgQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9u
QmVnaW5uaW5nCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5nZVR5
cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlCi1QQVNTIHJlc3VsdHNb
cmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNlbGVj
dGlvbkdyYW51bGFyaXR5UGFyYWdyYXBoCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRl
eHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQKLVBB
U1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFYVGV4
dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1b
IkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5Il0gaXMgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJp
dHlQYXJhZ3JhcGgKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbiJdIGlzIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmluZwotUEFTUyByZXN1
bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0gaXMgQVhUZXh0U3RhdGVD
aGFuZ2VUeXBlU2VsZWN0aW9uTW92ZQotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0
U2VsZWN0aW9uR3JhbnVsYXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eURvY3Vt
ZW50Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24i
XSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRl
eF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVj
dGlvbk1vdmUKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5Il0gaXMgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlEb2N1bWVudAotUEFTUyByZXN1
bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uIl0gaXMgQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRl
eHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRl
bmQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
Il0gaXMgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXIKLVBBU1MgcmVzdWx0c1ty
ZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNlbGVjdGlv
bkRpcmVjdGlvbk5leHQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0YXRlQ2hh
bmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZAotUEFTUyBy
ZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXSBpcyBBWFRl
eHRTZWxlY3Rpb25HcmFudWxhcml0eVdvcmQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFY
VGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQK
LVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZAotUEFTUyByZXN1bHRzW3Jlc3VsdElu
ZGV4XVsiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25HcmFu
dWxhcml0eVNlbnRlbmNlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0Ci1QQVNTIHJlc3Vs
dHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNo
YW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4
dFNlbGVjdGlvbkdyYW51bGFyaXR5Il0gaXMgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5l
Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBp
cyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhd
WyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rp
b25FeHRlbmQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5Il0gaXMgQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQYXJhZ3JhcGgKLVBBU1MgcmVz
dWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvbk5leHQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0
YXRlQ2hhbmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZAot
UEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHkiXSBp
cyBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUxpbmUKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRl
eF1bIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlv
bkVuZAotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0g
aXMgQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kCi1QQVNTIHJlc3VsdHNbcmVz
dWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5U2VudGVuY2UKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvbiJdIGlzIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZAotUEFTUyBy
ZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlIl0gaXMgQVhUZXh0U3Rh
dGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJB
WFRleHRTZWxlY3Rpb25HcmFudWxhcml0eSJdIGlzIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
UGFyYWdyYXBoCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJl
Y3Rpb24iXSBpcyBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQKLVBBU1MgcmVzdWx0c1tyZXN1
bHRJbmRleF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hhbmdlVHlw
ZVNlbGVjdGlvbkV4dGVuZAotUEFTUyByZXN1bHRzW3Jlc3VsdEluZGV4XVsiQVhUZXh0U2VsZWN0
aW9uR3JhbnVsYXJpdHkiXSBpcyBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eURvY3VtZW50Ci1Q
QVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb24iXSBpcyBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQKLVBBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRy
dWUKLQotVEVTVCBDT01QTEVURQotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9t
YWMvYWNjZXNzaWJpbGl0eS9zZWxlY3Rpb24tY2hhbmdlLXVzZXJpbmZvLmh0bWwgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS9zZWxlY3Rpb24tY2hhbmdlLXVzZXJpbmZv
Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NzUzN2EwNDI4YmQ4MmZhMzUx
MWQ1MDk2MGE3NzE2M2ZhM2Q3MzguLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vzc2liaWxpdHkvc2VsZWN0
aW9uLWNoYW5nZS11c2VyaW5mby5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjE3ICswLDAgQEAK
LTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgot
PGhlYWQ+Ci08c2NyaXB0IHNyYz0iLi4vLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48
L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGlkPSJib2R5Ij4KLQotPGRpdiByb2xlPSJ0ZXh0Ym94
IiB0YWJpbmRleD0wIGlkPSJ0ZXh0Ym94IiBjb250ZW50ZWRpdGFibGU9dHJ1ZT4KLTxwPm9uZSB0
d28gdGhyZWUuIGZvdXIgZml2ZSBzaXguPC9wPgotPHA+c2V2ZW4gZWlnaHQgbmluZS48L3A+Ci08
L2Rpdj4KLQotPHAgaWQ9ImRlc2NyaXB0aW9uIj48L3A+Ci08ZGl2IGlkPSJjb25zb2xlIj48L2Rp
dj4KLTxkaXYgaWQ9Im5vdGlmaWNhdGlvbnMiPjwvZGl2PgotCi08c2NyaXB0PgotCi0gICAgZGVz
Y3JpcHRpb24oIlRoaXMgdGVzdHMgc2VsZWN0aW9uIGNoYW5nZSBub3RpZmljYXRpb25zIHVzZXIg
aW5mbyBkYXRhLiIpOwotCi0gICAgdmFyIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1v
dmUgPSAyOwotICAgIHZhciBBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25FeHRlbmQgPSBB
WFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlICsgMTsKLQotICAgIHZhciBBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmcgPSAxOwotICAgIHZhciBBWFRleHRTZWxlY3Rpb25E
aXJlY3Rpb25FbmQgPSBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25CZWdpbm5pbmcgKyAxOwotICAg
IHZhciBBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyA9IEFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbkVuZCArIDE7Ci0gICAgdmFyIEFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQgPSBB
WFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyArIDE7Ci0KLSAgICB2YXIgQVhUZXh0U2Vs
ZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXIgPSAxOwotICAgIHZhciBBWFRleHRTZWxlY3Rpb25H
cmFudWxhcml0eVdvcmQgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlciArIDE7
Ci0gICAgdmFyIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5TGluZSA9IEFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5V29yZCArIDE7Ci0gICAgdmFyIEFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
U2VudGVuY2UgPSBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUxpbmUgKyAxOwotICAgIHZhciBB
WFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVBhcmFncmFwaCA9IEFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5U2VudGVuY2UgKyAxOwotICAgIHZhciBBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eURv
Y3VtZW50ID0gQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQYXJhZ3JhcGggKyAyOwotCi0gICAg
dmFyIGdyYW4gPSBbImNoYXJhY3RlciIsICJ3b3JkIiwgInNlbnRlbmNlIiwgImxpbmUiLCAicGFy
YWdyYXBoIiwgImxpbmVib3VuZGFyeSIsICJzZW50ZW5jZWJvdW5kYXJ5IiwgInBhcmFncmFwaGJv
dW5kYXJ5IiwgImRvY3VtZW50Ym91bmRhcnkiXTsKLSAgICB2YXIgd2ViQXJlYSA9IDA7Ci0gICAg
dmFyIGNvdW50ID0gMDsKLSAgICB2YXIgcmVzdWx0cyA9IFtdOwotICAgIHZhciByZXN1bHRJbmRl
eCA9IDA7Ci0gICAgZnVuY3Rpb24gbm90aWZpY2F0aW9uQ2FsbGJhY2sobm90aWZpY2F0aW9uLCB1
c2VySW5mbykgewotICAgICAgICBpZiAobm90aWZpY2F0aW9uID09ICJBWFNlbGVjdGVkVGV4dENo
YW5nZWQiKSB7Ci0gICAgICAgICAgICBjb3VudCsrOwotICAgICAgICAgICAgaWYgKHVzZXJJbmZv
KQotICAgICAgICAgICAgICAgIHJlc3VsdHMucHVzaCh1c2VySW5mbyk7Ci0gICAgICAgICAgICBp
ZiAoY291bnQgPT0gZ3Jhbi5sZW5ndGggKiA0KSB7Ci0gICAgICAgICAgICAgICAgcmVzdWx0SW5k
ZXgrKzsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJB
WFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0iLCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9u
TW92ZSIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtc
IkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5Q2hhcmFjdGVyIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0
SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvbk5leHQiKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4Kys7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUiKTsKLSAgICAg
ICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eVwiXSIsICJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eUNoYXJhY3RlciIp
OwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4
dFNlbGVjdGlvbkRpcmVjdGlvblwiXSIsICJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91
cyIpOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAgICAgICBz
aG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0i
LCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSIpOwotICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5V29yZCIpOwotICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkRpcmVj
dGlvblwiXSIsICJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0Iik7Ci0KLSAgICAgICAgICAg
ICAgICByZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jl
c3VsdEluZGV4XVtcIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5n
ZVR5cGVTZWxlY3Rpb25Nb3ZlIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNb
cmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2Vs
ZWN0aW9uR3JhbnVsYXJpdHlXb3JkIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvblByZXZpb3VzIik7Ci0KLSAgICAgICAgICAgICAgICByZXN1bHRJbmRl
eCsrOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFY
VGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25N
b3ZlIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wi
QVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJp
dHlTZW50ZW5jZSIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdElu
ZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblwiXSIsICJBWFRleHRTZWxlY3Rpb25EaXJl
Y3Rpb25OZXh0Iik7Ci0KLSAgICAgICAgICAgICAgICByZXN1bHRJbmRleCsrOwotICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFN0YXRlQ2hhbmdl
VHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlIik7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9u
R3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlTZW50ZW5jZSIpOwot
ICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNl
bGVjdGlvbkRpcmVjdGlvblwiXSIsICJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25QcmV2aW91cyIp
OwotCi0gICAgICAgICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAgICAgICBzaG91
bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0iLCAi
QVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSIpOwotICAgICAgICAgICAgICAgIHNo
b3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5
XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5TGluZSIpOwotICAgICAgICAgICAgICAg
IHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlv
blwiXSIsICJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25OZXh0Iik7Ci0KLSAgICAgICAgICAgICAg
ICByZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3Vs
dEluZGV4XVtcIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5
cGVTZWxlY3Rpb25Nb3ZlIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVz
dWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0
aW9uR3JhbnVsYXJpdHlMaW5lIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNb
cmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNlbGVj
dGlvbkRpcmVjdGlvblByZXZpb3VzIik7Ci0KLSAgICAgICAgICAgICAgICByZXN1bHRJbmRleCsr
OwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4
dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3Zl
Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhU
ZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQ
YXJhZ3JhcGgiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRl
eF1bXCJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25cIl0iLCAiQVhUZXh0U2VsZWN0aW9uRGlyZWN0
aW9uTmV4dCIpOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAg
ICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5
cGVcIl0iLCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSIpOwotICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdy
YW51bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5UGFyYWdyYXBoIik7Ci0g
ICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2Vs
ZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblByZXZpb3VzIik7
Ci0KLSAgICAgICAgICAgICAgICByZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgIHNob3Vs
ZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJB
WFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlIik7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlc
Il0iLCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlMaW5lIik7Ci0gICAgICAgICAgICAgICAg
c2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9u
XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkVuZCIpOwotCi0gICAgICAgICAgICAgICAg
cmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJ
bmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0iLCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBl
U2VsZWN0aW9uTW92ZSIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3Vs
dEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlv
bkdyYW51bGFyaXR5TGluZSIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jl
c3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblwiXSIsICJBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25CZWdpbm5pbmciKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4Kys7
Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0
U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUi
KTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRl
eHRTZWxlY3Rpb25HcmFudWxhcml0eVwiXSIsICJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVNl
bnRlbmNlIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhd
W1wiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlv
bkVuZCIpOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAgICAg
ICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVc
Il0iLCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uTW92ZSIpOwotICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2UiKTsKLSAgICAg
ICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25cIl0iLCAiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nIik7Ci0K
LSAgICAgICAgICAgICAgICByZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgIHNob3VsZEJl
KCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRl
eHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rpb25Nb3ZlIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0i
LCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlQYXJhZ3JhcGgiKTsKLSAgICAgICAgICAgICAg
ICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rpb25EaXJlY3Rp
b25cIl0iLCAiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kIik7Ci0KLSAgICAgICAgICAgICAg
ICByZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3Vs
dEluZGV4XVtcIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5
cGVTZWxlY3Rpb25Nb3ZlIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVz
dWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0
aW9uR3JhbnVsYXJpdHlQYXJhZ3JhcGgiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVz
dWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25cIl0iLCAiQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uQmVnaW5uaW5nIik7Ci0KLSAgICAgICAgICAgICAgICByZXN1bHRJ
bmRleCsrOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtc
IkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5cGVTZWxlY3Rp
b25Nb3ZlIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhd
W1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHlEb2N1bWVudCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3Vs
dEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblwiXSIsICJBWFRleHRTZWxlY3Rpb25E
aXJlY3Rpb25FbmQiKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4Kys7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbk1vdmUiKTsKLSAgICAg
ICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eVwiXSIsICJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eURvY3VtZW50Iik7
Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbkJlZ2lubmlu
ZyIpOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAgICAgICBz
aG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0i
LCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kIik7Ci0gICAgICAgICAgICAg
ICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlDaGFyYWN0ZXIiKTsKLSAgICAg
ICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rp
b25EaXJlY3Rpb25cIl0iLCAiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCIpOwotCi0gICAg
ICAgICAgICAgICAgcmVzdWx0SW5kZXggKz0gMjsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgi
cmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0iLCAiQVhUZXh0
U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9uRXh0ZW5kIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxk
QmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0i
LCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlXb3JkIik7Ci0gICAgICAgICAgICAgICAgc2hv
dWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uXCJd
IiwgIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQiKTsKLQotICAgICAgICAgICAgICAgIHJl
c3VsdEluZGV4ICs9IDI7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0
SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlw
ZVNlbGVjdGlvbkV4dGVuZCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jl
c3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVj
dGlvbkdyYW51bGFyaXR5U2VudGVuY2UiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVz
dWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25cIl0iLCAiQVhUZXh0
U2VsZWN0aW9uRGlyZWN0aW9uTmV4dCIpOwotCi0gICAgICAgICAgICAgICAgcmVzdWx0SW5kZXgg
Kz0gMjsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJB
WFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0iLCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlU2VsZWN0aW9u
RXh0ZW5kIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhd
W1wiQVhUZXh0U2VsZWN0aW9uR3JhbnVsYXJpdHlcIl0iLCAiQVhUZXh0U2VsZWN0aW9uR3JhbnVs
YXJpdHlMaW5lIik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5k
ZXhdW1wiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNlbGVjdGlvbkRpcmVj
dGlvbk5leHQiKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4ICs9IDI7Ci0gICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFu
Z2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCIpOwotICAg
ICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVj
dGlvbkdyYW51bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5UGFyYWdyYXBo
Iik7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhU
ZXh0U2VsZWN0aW9uRGlyZWN0aW9uXCJdIiwgIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvbk5leHQi
KTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4ICs9IDI7Ci0gICAgICAgICAgICAgICAg
c2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlXCJd
IiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCIpOwotICAgICAgICAgICAg
ICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdyYW51
bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5TGluZSIpOwotICAgICAgICAg
ICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkRp
cmVjdGlvblwiXSIsICJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25FbmQiKTsKLQotICAgICAgICAg
ICAgICAgIHJlc3VsdEluZGV4ICs9IDI7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRl
Q2hhbmdlVHlwZVNlbGVjdGlvbkV4dGVuZCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJy
ZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5XCJdIiwgIkFY
VGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5U2VudGVuY2UiKTsKLSAgICAgICAgICAgICAgICBzaG91
bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25cIl0i
LCAiQVhUZXh0U2VsZWN0aW9uRGlyZWN0aW9uRW5kIik7Ci0KLSAgICAgICAgICAgICAgICByZXN1
bHRJbmRleCArPSAyOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdElu
ZGV4XVtcIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5cGVT
ZWxlY3Rpb25FeHRlbmQiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1
bHRJbmRleF1bXCJBWFRleHRTZWxlY3Rpb25HcmFudWxhcml0eVwiXSIsICJBWFRleHRTZWxlY3Rp
b25HcmFudWxhcml0eVBhcmFncmFwaCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1
bHRzW3Jlc3VsdEluZGV4XVtcIkFYVGV4dFNlbGVjdGlvbkRpcmVjdGlvblwiXSIsICJBWFRleHRT
ZWxlY3Rpb25EaXJlY3Rpb25FbmQiKTsKLQotICAgICAgICAgICAgICAgIHJlc3VsdEluZGV4ICs9
IDI7Ci0gICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhU
ZXh0U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVNlbGVjdGlvbkV4
dGVuZCIpOwotICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtc
IkFYVGV4dFNlbGVjdGlvbkdyYW51bGFyaXR5XCJdIiwgIkFYVGV4dFNlbGVjdGlvbkdyYW51bGFy
aXR5RG9jdW1lbnQiKTsKLSAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJ
bmRleF1bXCJBWFRleHRTZWxlY3Rpb25EaXJlY3Rpb25cIl0iLCAiQVhUZXh0U2VsZWN0aW9uRGly
ZWN0aW9uRW5kIik7Ci0KLSAgICAgICAgICAgICAgICB3ZWJBcmVhLnJlbW92ZU5vdGlmaWNhdGlv
bkxpc3RlbmVyKCk7Ci0gICAgICAgICAgICAgICAgd2luZG93LnRlc3RSdW5uZXIubm90aWZ5RG9u
ZSgpOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotCi0gICAgaWYgKHdpbmRvdy5h
Y2Nlc3NpYmlsaXR5Q29udHJvbGxlcikgewotICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0
VW50aWxEb25lKCk7Ci0KLSAgICAgICAgYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIuZW5hYmxlRW5o
YW5jZWRBY2Nlc3NpYmlsaXR5KHRydWUpOwotCi0gICAgICAgIHdlYkFyZWEgPSBhY2Nlc3NpYmls
aXR5Q29udHJvbGxlci5yb290RWxlbWVudC5jaGlsZEF0SW5kZXgoMCk7Ci0gICAgICAgIHZhciBh
ZGRlZE5vdGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90aWZp
Y2F0aW9uQ2FsbGJhY2spOwotICAgICAgICBzaG91bGRCZSgiYWRkZWROb3RpZmljYXRpb24iLCAi
dHJ1ZSIpOwotCi0gICAgICAgIHRleHRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGV4
dGJveCIpOwotICAgICAgICB0ZXh0Ym94LmZvY3VzKCk7Ci0KLSAgICAgICAgLy8gVHJpZ2dlciBz
ZWxlY3Rpb24gY2hhbmdlcy4KLSAgICAgICAgdmFyIHMgPSB3aW5kb3cuZ2V0U2VsZWN0aW9uKCk7
Ci0gICAgICAgIHMuc2V0UG9zaXRpb24odGV4dGJveCwgMCk7Ci0gICAgICAgIGZvciAodmFyIGkg
aW4gZ3JhbikgewotICAgICAgICAgICAgcy5tb2RpZnkoIm1vdmUiLCAiZm9yd2FyZCIsIGdyYW5b
aV0pOwotICAgICAgICAgICAgcy5tb2RpZnkoIm1vdmUiLCAiYmFja3dhcmQiLCBncmFuW2ldKTsK
LSAgICAgICAgfQotICAgICAgICBmb3IgKHZhciBpIGluIGdyYW4pIHsKLSAgICAgICAgICAgIHMu
c2V0UG9zaXRpb24odGV4dGJveCwgMCk7Ci0gICAgICAgICAgICBzLm1vZGlmeSgiZXh0ZW5kIiwg
ImZvcndhcmQiLCBncmFuW2ldKTsKLSAgICAgICAgfQotICAgIH0KLQotPC9zY3JpcHQ+Ci0KLTxz
Y3JpcHQgc3JjPSIuLi8uLi8uLi9yZXNvdXJjZXMvanMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4K
LTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9h
Y2Nlc3NpYmlsaXR5L3ZhbHVlLWNoYW5nZS11c2VyaW5mby1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS92YWx1ZS1jaGFuZ2UtdXNlcmluZm8tZXhw
ZWN0ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOTNhYWJlNDdkOGZjM2I5
ZmNjYTM2YmNhNGU5OTU1ZTQ0OTkxMjBkLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9hY2Nlc3NpYmlsaXR5L3Zh
bHVlLWNoYW5nZS11c2VyaW5mby1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyOSAr
MCwwIEBACi0wMjM0NTY3ODkwCi1UaGlzIHRlc3RzIHZhbHVlIGNoYW5nZSBub3RpZmljYXRpb25z
IHVzZXIgaW5mbyBkYXRhLgotCi1PbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2Yg
IlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCi0KLQotUEFTUyBh
ZGRlZE5vdGlmaWNhdGlvbiBpcyB0cnVlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRl
eHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVFZGl0Ci1QQVNTIHJl
c3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRDaGFuZ2VWYWx1ZXMiXVswXVsiQVhUZXh0Q2hhbmdl
VmFsdWUiXSBpcyAiMCIKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dENoYW5nZVZh
bHVlcyJdWzBdWyJBWFRleHRFZGl0VHlwZSJdIGlzIEFYVGV4dEVkaXRUeXBlQ3V0Ci1QQVNTIHJl
c3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0
ZUNoYW5nZVR5cGVFZGl0Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRDaGFuZ2VW
YWx1ZXMiXVswXVsiQVhUZXh0Q2hhbmdlVmFsdWUiXSBpcyAiMSIKLVBBU1MgcmVzdWx0c1tyZXN1
bHRJbmRleF1bIkFYVGV4dENoYW5nZVZhbHVlcyJdWzBdWyJBWFRleHRFZGl0VHlwZSJdIGlzIEFY
VGV4dEVkaXRUeXBlRGVsZXRlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0
ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVFZGl0Ci1QQVNTIHJlc3VsdHNb
cmVzdWx0SW5kZXhdWyJBWFRleHRDaGFuZ2VWYWx1ZXMiXVswXVsiQVhUZXh0Q2hhbmdlVmFsdWUi
XSBpcyAiMCIKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dENoYW5nZVZhbHVlcyJd
WzBdWyJBWFRleHRFZGl0VHlwZSJdIGlzIEFYVGV4dEVkaXRUeXBlUGFzdGUKLVBBU1MgcmVzdWx0
c1tyZXN1bHRJbmRleF1bIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZSJdIGlzIEFYVGV4dFN0YXRlQ2hh
bmdlVHlwZUVkaXQKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dENoYW5nZVZhbHVl
cyJdWzBdWyJBWFRleHRDaGFuZ2VWYWx1ZSJdIGlzICIyMzQ1Njc4OTAiCi1QQVNTIHJlc3VsdHNb
cmVzdWx0SW5kZXhdWyJBWFRleHRDaGFuZ2VWYWx1ZXMiXVswXVsiQVhUZXh0RWRpdFR5cGUiXSBp
cyBBWFRleHRFZGl0VHlwZVBhc3RlCi1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRT
dGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0ZUNoYW5nZVR5cGVFZGl0Ci1QQVNTIHJlc3Vs
dHNbcmVzdWx0SW5kZXhdWyJBWFRleHRDaGFuZ2VWYWx1ZXMiXVswXVsiQVhUZXh0Q2hhbmdlVmFs
dWUiXSBpcyAiMSIKLVBBU1MgcmVzdWx0c1tyZXN1bHRJbmRleF1bIkFYVGV4dENoYW5nZVZhbHVl
cyJdWzBdWyJBWFRleHRFZGl0VHlwZSJdIGlzIEFYVGV4dEVkaXRUeXBlVHlwaW5nCi1QQVNTIHJl
c3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRTdGF0ZUNoYW5nZVR5cGUiXSBpcyBBWFRleHRTdGF0
ZUNoYW5nZVR5cGVFZGl0Ci1QQVNTIHJlc3VsdHNbcmVzdWx0SW5kZXhdWyJBWFRleHRDaGFuZ2VW
YWx1ZXMiXVswXVsiQVhUZXh0Q2hhbmdlVmFsdWUiXSBpcyAiMSIKLVBBU1MgcmVzdWx0c1tyZXN1
bHRJbmRleF1bIkFYVGV4dENoYW5nZVZhbHVlcyJdWzBdWyJBWFRleHRFZGl0VHlwZSJdIGlzIEFY
VGV4dEVkaXRUeXBlRGVsZXRlCi1QQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCi0KLVRF
U1QgQ09NUExFVEUKLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2FjY2Vz
c2liaWxpdHkvdmFsdWUtY2hhbmdlLXVzZXJpbmZvLmh0bWwgYi9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9tYWMvYWNjZXNzaWJpbGl0eS92YWx1ZS1jaGFuZ2UtdXNlcmluZm8uaHRtbApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggM2RhZDM0MWRkZTI5MDEwNDUxZTc3YjE3ZmViOTQ0Yzg5NDZj
MWJiYy4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvYWNjZXNzaWJpbGl0eS92YWx1ZS1jaGFuZ2UtdXNlcmluZm8u
aHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJ
QyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci0gICAgPHNjcmlwdCBz
cmM9Ii4uLy4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9Ii4uLy4uLy4uL2VkaXRpbmcvZWRpdGluZy5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+
Ci08Ym9keSBpZD0iYm9keSI+Ci0KLSAgICA8ZGl2IHJvbGU9InRleHRib3giIHRhYmluZGV4PTAg
aWQ9InRleHRib3giIGNvbnRlbnRlZGl0YWJsZT10cnVlPjAxMjM0NTY3ODkwPC9kaXY+Ci0KLSAg
ICA8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KLSAgICA8ZGl2IGlkPSJjb25zb2xlIj48L2Rpdj4K
LSAgICA8ZGl2IGlkPSJub3RpZmljYXRpb25zIj48L2Rpdj4KLQotICAgIDxzY3JpcHQ+Ci0KLSAg
ICAgICAgZGVzY3JpcHRpb24oIlRoaXMgdGVzdHMgdmFsdWUgY2hhbmdlIG5vdGlmaWNhdGlvbnMg
dXNlciBpbmZvIGRhdGEuIik7Ci0KLSAgICAgICAgdmFyIEFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVk
aXQgPSAxOwotCi0gICAgICAgIHZhciBBWFRleHRFZGl0VHlwZURlbGV0ZSA9IDE7Ci0gICAgICAg
IHZhciBBWFRleHRFZGl0VHlwZUluc2VydCA9IEFYVGV4dEVkaXRUeXBlRGVsZXRlICsgMTsKLSAg
ICAgICAgdmFyIEFYVGV4dEVkaXRUeXBlVHlwaW5nID0gQVhUZXh0RWRpdFR5cGVJbnNlcnQgKyAx
OwotICAgICAgICB2YXIgQVhUZXh0RWRpdFR5cGVEaWN0YXRpb24gPSBBWFRleHRFZGl0VHlwZVR5
cGluZyArIDE7Ci0gICAgICAgIHZhciBBWFRleHRFZGl0VHlwZUN1dCA9IEFYVGV4dEVkaXRUeXBl
RGljdGF0aW9uICsgMQotICAgICAgICB2YXIgQVhUZXh0RWRpdFR5cGVQYXN0ZSA9IEFYVGV4dEVk
aXRUeXBlQ3V0ICsgMTsKLQotICAgICAgICB2YXIgd2ViQXJlYSA9IDA7Ci0gICAgICAgIHZhciBj
b3VudCA9IDA7Ci0gICAgICAgIHZhciByZXN1bHRzID0gW107Ci0gICAgICAgIHZhciByZXN1bHRJ
bmRleCA9IDA7Ci0gICAgICAgIGZ1bmN0aW9uIG5vdGlmaWNhdGlvbkNhbGxiYWNrKG5vdGlmaWNh
dGlvbiwgdXNlckluZm8pIHsKLSAgICAgICAgICAgIGlmIChub3RpZmljYXRpb24gPT0gIkFYVmFs
dWVDaGFuZ2VkIikgewotICAgICAgICAgICAgICAgIGNvdW50Kys7Ci0gICAgICAgICAgICAgICAg
cmVzdWx0cy5wdXNoKHVzZXJJbmZvKTsKLSAgICAgICAgICAgICAgICBpZiAoY291bnQgPT0gNikg
ewotCi0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtc
IkFYVGV4dFN0YXRlQ2hhbmdlVHlwZVwiXSIsICJBWFRleHRTdGF0ZUNoYW5nZVR5cGVFZGl0Iik7
Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFY
VGV4dENoYW5nZVZhbHVlc1wiXVswXVtcIkFYVGV4dENoYW5nZVZhbHVlXCJdIiwgIlwiMFwiIik7
Ci0gICAgICAgICAgICAgICAgICAgIHNob3VsZEJlKCJyZXN1bHRzW3Jlc3VsdEluZGV4XVtcIkFY
VGV4dENoYW5nZVZhbHVlc1wiXVswXVtcIkFYVGV4dEVkaXRUeXBlXCJdIiwgIkFYVGV4dEVkaXRU
eXBlQ3V0Iik7Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAg
ICAgICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVD
aGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0YXRlQ2hhbmdlVHlwZUVkaXQiKTsKLSAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0Q2hhbmdlVmFs
dWVzXCJdWzBdW1wiQVhUZXh0Q2hhbmdlVmFsdWVcIl0iLCAiXCIxXCIiKTsKLSAgICAgICAgICAg
ICAgICAgICAgc2hvdWxkQmUoInJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0Q2hhbmdlVmFs
dWVzXCJdWzBdW1wiQVhUZXh0RWRpdFR5cGVcIl0iLCAiQVhUZXh0RWRpdFR5cGVEZWxldGUiKTsK
LQotICAgICAgICAgICAgICAgICAgICByZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgICAg
ICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVc
Il0iLCAiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlRWRpdCIpOwotICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRDaGFuZ2VWYWx1ZXNcIl1bMF1b
XCJBWFRleHRDaGFuZ2VWYWx1ZVwiXSIsICJcIjBcIiIpOwotICAgICAgICAgICAgICAgICAgICBz
aG91bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRDaGFuZ2VWYWx1ZXNcIl1bMF1b
XCJBWFRleHRFZGl0VHlwZVwiXSIsICJBWFRleHRFZGl0VHlwZVBhc3RlIik7Ci0KLSAgICAgICAg
ICAgICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUo
InJlc3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4
dFN0YXRlQ2hhbmdlVHlwZUVkaXQiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0Q2hhbmdlVmFsdWVzXCJdWzBdW1wiQVhUZXh0Q2hh
bmdlVmFsdWVcIl0iLCAiXCIyMzQ1Njc4OTBcIiIpOwotICAgICAgICAgICAgICAgICAgICBzaG91
bGRCZSgicmVzdWx0c1tyZXN1bHRJbmRleF1bXCJBWFRleHRDaGFuZ2VWYWx1ZXNcIl1bMF1bXCJB
WFRleHRFZGl0VHlwZVwiXSIsICJBWFRleHRFZGl0VHlwZVBhc3RlIik7Ci0KLSAgICAgICAgICAg
ICAgICAgICAgcmVzdWx0SW5kZXgrKzsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJl
c3VsdHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0U3RhdGVDaGFuZ2VUeXBlXCJdIiwgIkFYVGV4dFN0
YXRlQ2hhbmdlVHlwZUVkaXQiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0Q2hhbmdlVmFsdWVzXCJdWzBdW1wiQVhUZXh0Q2hhbmdl
VmFsdWVcIl0iLCAiXCIxXCIiKTsKLSAgICAgICAgICAgICAgICAgICAgc2hvdWxkQmUoInJlc3Vs
dHNbcmVzdWx0SW5kZXhdW1wiQVhUZXh0Q2hhbmdlVmFsdWVzXCJdWzBdW1wiQVhUZXh0RWRpdFR5
cGVcIl0iLCAiQVhUZXh0RWRpdFR5cGVUeXBpbmciKTsKLQotICAgICAgICAgICAgICAgICAgICBy
ZXN1bHRJbmRleCsrOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1
bHRJbmRleF1bXCJBWFRleHRTdGF0ZUNoYW5nZVR5cGVcIl0iLCAiQVhUZXh0U3RhdGVDaGFuZ2VU
eXBlRWRpdCIpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJ
bmRleF1bXCJBWFRleHRDaGFuZ2VWYWx1ZXNcIl1bMF1bXCJBWFRleHRDaGFuZ2VWYWx1ZVwiXSIs
ICJcIjFcIiIpOwotICAgICAgICAgICAgICAgICAgICBzaG91bGRCZSgicmVzdWx0c1tyZXN1bHRJ
bmRleF1bXCJBWFRleHRDaGFuZ2VWYWx1ZXNcIl1bMF1bXCJBWFRleHRFZGl0VHlwZVwiXSIsICJB
WFRleHRFZGl0VHlwZURlbGV0ZSIpOwotCi0gICAgICAgICAgICAgICAgICAgIHdlYkFyZWEucmVt
b3ZlTm90aWZpY2F0aW9uTGlzdGVuZXIoKTsKLSAgICAgICAgICAgICAgICAgICAgd2luZG93LnRl
c3RSdW5uZXIubm90aWZ5RG9uZSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0K
LSAgICAgICAgfQotCi0gICAgICAgIGlmICh3aW5kb3cuYWNjZXNzaWJpbGl0eUNvbnRyb2xsZXIp
IHsKLSAgICAgICAgICAgICB3aW5kb3cudGVzdFJ1bm5lci53YWl0VW50aWxEb25lKCk7Ci0KLSAg
ICAgICAgICAgIGFjY2Vzc2liaWxpdHlDb250cm9sbGVyLmVuYWJsZUVuaGFuY2VkQWNjZXNzaWJp
bGl0eSh0cnVlKTsKLQotICAgICAgICAgICAgd2ViQXJlYSA9IGFjY2Vzc2liaWxpdHlDb250cm9s
bGVyLnJvb3RFbGVtZW50LmNoaWxkQXRJbmRleCgwKTsKLSAgICAgICAgICAgIHZhciBhZGRlZE5v
dGlmaWNhdGlvbiA9IHdlYkFyZWEuYWRkTm90aWZpY2F0aW9uTGlzdGVuZXIobm90aWZpY2F0aW9u
Q2FsbGJhY2spOwotICAgICAgICAgICAgc2hvdWxkQmUoImFkZGVkTm90aWZpY2F0aW9uIiwgInRy
dWUiKTsKLQotICAgICAgICAgICAgdmFyIHRleHRib3ggPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJ
ZCgidGV4dGJveCIpOwotICAgICAgICAgICAgdGV4dGJveC5mb2N1cygpOwotCi0gICAgICAgICAg
ICBleGVjU2V0U2VsZWN0aW9uQ29tbWFuZCh0ZXh0Ym94LCAwKTsKLSAgICAgICAgICAgIGV4ZWNF
eHRlbmRTZWxlY3Rpb25SaWdodEJ5Q2hhcmFjdGVyQ29tbWFuZCgpOwotICAgICAgICAgICAgY3V0
Q29tbWFuZCgpOwotICAgICAgICAgICAgZXhlY0V4dGVuZFNlbGVjdGlvblJpZ2h0QnlDaGFyYWN0
ZXJDb21tYW5kKCk7Ci0gICAgICAgICAgICBwYXN0ZUNvbW1hbmQoKTsKLSAgICAgICAgICAgIGV2
ZW50U2VuZGVyLmtleURvd24oIjEiKTsKLSAgICAgICAgICAgIGRlbGV0ZUNvbW1hbmQoKTsKLSAg
ICAgICAgfQotICAgIDwvc2NyaXB0PgotCi0gICAgPHNjcmlwdCBzcmM9Ii4uLy4uLy4uL3Jlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgotPC9ib2R5PgotPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>