<?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>190207</bug_id>
          
          <creation_ts>2018-10-02 10:04:46 -0700</creation_ts>
          <short_desc>REGRESSION(r236624): The change in r236624 introduced crashes on the bots (Requested by ryanhaddad on #webkit).</short_desc>
          <delta_ts>2018-10-05 10:07:24 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>188747</blocked>
    
    <blocked>190091</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Commit Bot">commit-queue</reporter>
          <assigned_to name="WebKit Commit Bot">commit-queue</assigned_to>
          <cc>achristensen</cc>
    
    <cc>jer.noble</cc>
    
    <cc>ryanhaddad</cc>
    
    <cc>tsavell</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1465628</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-02 10:04:46 -0700</bug_when>
    <thetext>https://trac.webkit.org/changeset/236624 broke the build:
The change in r236624 introduced crashes on the bots (Requested by ryanhaddad 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>1465630</commentid>
    <comment_count>1</comment_count>
      <attachid>351406</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-02 10:05:09 -0700</bug_when>
    <thetext>Created attachment 351406
ROLLOUT of r236624

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>1465633</commentid>
    <comment_count>2</comment_count>
      <attachid>351406</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-02 10:08:53 -0700</bug_when>
    <thetext>Comment on attachment 351406
ROLLOUT of r236624

Clearing flags on attachment: 351406

Committed r236748: &lt;https://trac.webkit.org/changeset/236748&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465634</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-10-02 10:08:55 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1465635</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-10-02 10:09:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/44942006&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466709</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2018-10-05 10:07:24 -0700</bug_when>
    <thetext>*** Bug 190213 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351406</attachid>
            <date>2018-10-02 10:05:09 -0700</date>
            <delta_ts>2018-10-02 10:08:53 -0700</delta_ts>
            <desc>ROLLOUT of r236624</desc>
            <filename>bug-190207-20181002130509.patch</filename>
            <type>text/plain</type>
            <size>183524</size>
            <attacher name="WebKit Commit Bot">commit-queue</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2NzQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IGQ4NTFhYTRlZTVkODgzZDczY2EzYjcz
MjJmYjAwNjAxMWM0NzFlNDIuLjgwM2QzZTNiYjg1YzQzMzM0MWE4YjVkMjZmZmMyN2EzMGVmNDNj
MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XVEYvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTAtMDIgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MzY2MjQgYW5kIHIyMzY2NzEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTAyMDcKKworICAgICAgICBUaGUgY2hhbmdlIGluIHIyMzY2MjQgaW50cm9k
dWNlZCBjcmFzaGVzIG9uIHRoZSBib3RzCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRh
ZCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAg
ICJSZWZhY3RvcmluZzogZWxpbWluYXRlIHJhdyBwb2ludGVyIHVzYWdlIGluIEZ1bGxzY3JlZW4g
Y29kZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
ODc0NworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM2NjI0CisK
KyAgICAgICAgIlVuaWZ5IGltcGxlbWVudGF0aW9uIGluIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwMDkxCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzY2NzEK
KwogMjAxOC0xMC0wMiAgQ2FpbyBMaW1hICA8dGljYWlvbGltYUBnbWFpbC5jb20+CiAKICAgICAg
ICAgW0JpZ0ludF0gQmlnSW50LnByb3B0b3R5cGUudG9TdHJpbmcgaXMgYnJva2VuIHdoZW4gcmFk
aXggaXMgcG93ZXIgb2YgMgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDNiNmUyNWQ1MDY1YzczNDZkNWM5NTM0OThi
NmU3ZDdjYTg0NTNmNDkuLmZjMzIyZTg5MWUwOGFlYTU1YzJiMTljYzg5NTQ4Y2IwOWIzZmIyYjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0wMiAgQ29tbWl0IFF1ZXVlICA8
Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjIzNjYyNCBhbmQgcjIzNjY3MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTE5MDIwNworCisgICAgICAgIFRoZSBjaGFuZ2UgaW4gcjIzNjYyNCBp
bnRyb2R1Y2VkIGNyYXNoZXMgb24gdGhlIGJvdHMKKyAgICAgICAgKFJlcXVlc3RlZCBieSByeWFu
aGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNldHM6CisKKyAg
ICAgICAgIlJlZmFjdG9yaW5nOiBlbGltaW5hdGUgcmF3IHBvaW50ZXIgdXNhZ2UgaW4gRnVsbHNj
cmVlbiBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTg4NzQ3CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzY2
MjQKKworICAgICAgICAiVW5pZnkgaW1wbGVtZW50YXRpb24gaW4gVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xOTAwOTEKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIz
NjY3MQorCiAyMDE4LTEwLTAyICBTaWh1aSBMaXUgIDxzaWh1aV9saXVAYXBwbGUuY29tPgogCiAg
ICAgICAgIEFkZCByZWxlYXNlIGFzc2VydGlvbiB0byBlbnN1cmUgbV9vd25pbmdQb2ludGVyRm9y
Q2xvc2UgaXMgbnVsbCBpbiBVbmlxdWVJREJEYXRhYmFzZTo6aW52b2tlT3BlcmF0aW9uQW5kVHJh
bnNhY3Rpb25UaW1lcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1Nv
dXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDE0MjVkYzk4YWE5OGIyNDZiOWRhYWM1MTIwYjg0
YWFlMjVlMjFhZTIuLmQ1NzdhNWIxNzk4ZWYwOGIzNGJiZjliNjhkYzg5ZTgwOTE0ZGMxMzUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTgtMTAtMDIgIENvbW1pdCBRdWV1ZSAgPGNvbW1p
dC1xdWV1ZUB3ZWJraXQub3JnPgorCisgICAgICAgIFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIy
MzY2MjQgYW5kIHIyMzY2NzEuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xOTAyMDcKKworICAgICAgICBUaGUgY2hhbmdlIGluIHIyMzY2MjQgaW50cm9k
dWNlZCBjcmFzaGVzIG9uIHRoZSBib3RzCisgICAgICAgIChSZXF1ZXN0ZWQgYnkgcnlhbmhhZGRh
ZCBvbiAjd2Via2l0KS4KKworICAgICAgICBSZXZlcnRlZCBjaGFuZ2VzZXRzOgorCisgICAgICAg
ICJSZWZhY3RvcmluZzogZWxpbWluYXRlIHJhdyBwb2ludGVyIHVzYWdlIGluIEZ1bGxzY3JlZW4g
Y29kZSIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4
ODc0NworICAgICAgICBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM2NjI0CisK
KyAgICAgICAgIlVuaWZ5IGltcGxlbWVudGF0aW9uIGluIFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUFWS2l0IgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTkwMDkxCisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8yMzY2NzEK
KwogMjAxOC0xMC0wMiAgQW50dGkgS29pdmlzdG8gIDxhbnR0aUBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViUGFnZVByb3h5OjpyZWF0dGFjaFRvV2ViUHJvY2VzcyBjbGVhbnVwcwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdExlZ2Fj
eS9tYWMvQ2hhbmdlTG9nCmluZGV4IDBjN2RhYzAzMjc4MDcxMjdjZGRlMmNkYmU3YmRlYjU3YjBj
Mzg1M2QuLjhkZTE3ZjdlMzRhNDk5ZDBhN2MzMDRmN2FlN2IzOGVlZTZhNjEwODEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0
TGVnYWN5L21hYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxOC0xMC0wMiAgQ29tbWl0
IFF1ZXVlICA8Y29tbWl0LXF1ZXVlQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVW5yZXZpZXdlZCwg
cm9sbGluZyBvdXQgcjIzNjYyNCBhbmQgcjIzNjY3MS4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDIwNworCisgICAgICAgIFRoZSBjaGFuZ2UgaW4g
cjIzNjYyNCBpbnRyb2R1Y2VkIGNyYXNoZXMgb24gdGhlIGJvdHMKKyAgICAgICAgKFJlcXVlc3Rl
ZCBieSByeWFuaGFkZGFkIG9uICN3ZWJraXQpLgorCisgICAgICAgIFJldmVydGVkIGNoYW5nZXNl
dHM6CisKKyAgICAgICAgIlJlZmFjdG9yaW5nOiBlbGltaW5hdGUgcmF3IHBvaW50ZXIgdXNhZ2Ug
aW4gRnVsbHNjcmVlbiBjb2RlIgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTg4NzQ3CisgICAgICAgIGh0dHBzOi8vdHJhYy53ZWJraXQub3JnL2NoYW5n
ZXNldC8yMzY2MjQKKworICAgICAgICAiVW5pZnkgaW1wbGVtZW50YXRpb24gaW4gVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlQVZLaXQiCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xOTAwOTEKKyAgICAgICAgaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hh
bmdlc2V0LzIzNjY3MQorCiAyMDE4LTEwLTAxICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVu
c2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgVVJMIHNob3VsZCBub3QgdXNlIFRleHRFbmNvZGlu
ZyBpbnRlcm5hbGx5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qIGIvU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRl
eCBlZmI2OGNmZTdkOTI0OTMzYWE2NmVmYjViNDljZWU4ZTQyOTRjYTFhLi5jY2YyOTQ2YTlkYTVm
Yzg2MGYzNThjZDMwZWM5YjM2OGY1MGQ2ZjY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL1dURi54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9w
cm9qZWN0LnBieHByb2oKQEAgLTYwOSw3ICs2MDksNiBAQAogCQlDNkYwNTA3OTBEOUM0MzJBOTkw
ODVFNzUgLyogQVNDSUlMaXRlcmFsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEFTQ0lJTGl0ZXJhbC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUM4
RjU5N0NBMkE1NzQxN0ZCQUI5MkZENiAvKiBSYW5kb21EZXZpY2UuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUmFuZG9tRGV2aWNlLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQ0QwMDM2MEQyMTUwMUY3ODAwRjRFRDRDIC8qIFN0cmluZ1RvSW50ZWdl
ckNvbnZlcnNpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU3RyaW5nVG9JbnRlZ2VyQ29udmVyc2lvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlDRDJEMEQxMDIxMkM3NkU2MDAxOEM3ODQg
LyogV2Vha1B0ckNvbnRhaW5lci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBX
ZWFrUHRyQ29udGFpbmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUNENTQ5N0FB
MTU4NTdEMDMwMEI1QkMzMCAvKiBNZWRpYVRpbWUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFUaW1lLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQ0Q1NDk3QUIxNTg1N0QwMzAwQjVCQzMwIC8qIE1lZGlhVGltZS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVRpbWUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJQ0Q2RDlGQ0QxRUVGM0FENDAwOEIwNjcxIC8qIEFsZ29yaXRobXMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQWxnb3JpdGhtcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTE0Myw3
ICsxMTQyLDYgQEAKIAkJCQkwRjY2QjI4OTFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuaCAq
LywKIAkJCQk4M0FCQjNDMDIwQjM4MjMyMDBCQTMzMDYgLyogV2Vha09iakNQdHIuaCAqLywKIAkJ
CQk5NzRDRkM4RDE2QTRGMzI3MDA2RDU0MDQgLyogV2Vha1B0ci5oICovLAotCQkJCUNEMkQwRDEw
MjEyQzc2RTYwMDE4Qzc4NCAvKiBXZWFrUHRyQ29udGFpbmVyLmggKi8sCiAJCQkJMEYzNTAxNjMx
QkIyNThDODAwRjBBMkEzIC8qIFdlYWtSYW5kb20uaCAqLywKIAkJCQkwRkU0NDc5QTFCN0FBQTAz
MDA5NDk4RUIgLyogV29yZExvY2suY3BwICovLAogCQkJCTBGRTQ0NzlCMUI3QUFBMDMwMDk0OThF
QiAvKiBXb3JkTG9jay5oICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvV2Vha1B0ckNv
bnRhaW5lci5oIGIvU291cmNlL1dURi93dGYvV2Vha1B0ckNvbnRhaW5lci5oCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCA5ZTUyOWE5OTMxZmZmN2RmNGE0ZWEzZDMzYjlkOTU4MTMwNmQ3
NWNhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJj
ZS9XVEYvd3RmL1dlYWtQdHJDb250YWluZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAg
QEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UKLQotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
LSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgotCi1uYW1lc3BhY2UgV1RGIHsKLQotdGVtcGxhdGUg
PHR5cGVuYW1lIFQ+Ci1jbGFzcyBXZWFrUHRyQ29udGFpbmVyIHsKLXB1YmxpYzoKLSAgICB2b2lk
IGFkZChXZWFrUHRyPFQ+JiYgcHRyKQotICAgIHsKLSAgICAgICAgbV9tZW1iZXJzLmFwcGVuZChX
VEZNb3ZlKHB0cikpOwotICAgIH0KLSAgICAKLSAgICB2b2lkIHJlbW92ZShUJiBwdHIpCi0gICAg
ewotICAgICAgICBtX21lbWJlcnMucmVtb3ZlQWxsKCZwdHIpOwotICAgIH0KLQotICAgIHZvaWQg
Y2xlYXIoKQotICAgIHsKLSAgICAgICAgbV9tZW1iZXJzLmNsZWFyKCk7Ci0gICAgfQotCi0gICAg
Ym9vbCBpc0VtcHR5KCkgY29uc3QKLSAgICB7Ci0gICAgICAgIHJldHVybiBtX21lbWJlcnMuaXNF
bXB0eSgpOwotICAgIH0KLSAgICAKLSAgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRj4KLSAgICB2b2lk
IGZvckVhY2hOb25OdWxsTWVtYmVyKEYmJiBmKQotICAgIHsKLSAgICAgICAgbV9tZW1iZXJzLnJl
bW92ZUFsbE1hdGNoaW5nKFtmID0gV1RGTW92ZShmKV0gKGF1dG8mIG1lbWJlcikgewotICAgICAg
ICAgICAgaWYgKCFtZW1iZXIpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAg
ICAgICBmKCptZW1iZXIpOwotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICB9KTsK
LSAgICB9Ci1wcml2YXRlOgotICAgIFZlY3RvcjxXZWFrUHRyPFQ+PiBtX21lbWJlcnM7Ci19Owot
Ci19Ci0KLXVzaW5nIFdURjo6V2Vha1B0ckNvbnRhaW5lcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKaW5kZXgg
ZGI3YjU4ZmE5ZTA0NWJiMzQ5NTU0NTk1ZjQyYzgyMDI5MTQ3MDk4ZS4uY2RmMmJiZmJkZGQ3ZTJm
OTM1ZGMyYjNjZDQ5ZjU1MDgxODg0NzU0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmgKQEAgLTI3LDExICsy
NywxNiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUo
VklERU9fUFJFU0VOVEFUSU9OX01PREUpKQogCisjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KKyNp
bmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xhc3MgVGlt
ZVJhbmdlczsKKwogY2xhc3MgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlIHsKIHB1YmxpYzoKLSAg
ICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoKSA9IGRlZmF1bHQ7CisgICAgdmly
dHVhbCB+UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKCkgeyB9OwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldE1lZGlhU3RhdGUoKSA9IDA7CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY29jb2EvUGxheWJhY2tTZXNzaW9uTW9kZWwuaAppbmRleCAxNTUzNjM5ZDc0YWJlMDYw
MzlhOGQyODc1NGZhYWNlODkyNjBmNjM3Li5jNDNmNzMyZmQ2NDNkZDlmZGJhZDNjYTU3ZmE5MTdh
OGZhMjVhNDM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5
YmFja1Nlc3Npb25Nb2RlbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1vZGVsLmgKQEAgLTMwLDcgKzMwLDYgQEAKICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0j
aW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBAIC00MCwx
MiArMzksOCBAQCBzdHJ1Y3QgTWVkaWFTZWxlY3Rpb25PcHRpb247CiAKIGNsYXNzIFBsYXliYWNr
U2Vzc2lvbk1vZGVsIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpID0gZGVmYXVsdDsKLQotICAgIHZvaWQgcmVmKCkgeyByZWZQbGF5YmFja1Nlc3Npb25Nb2Rl
bCgpOyB9Ci0gICAgdm9pZCBkZXJlZigpIHsgZGVyZWZQbGF5YmFja1Nlc3Npb25Nb2RlbCgpOyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTW9k
ZWxDbGllbnQ+JiYpID0gMDsKKyAgICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25Nb2RlbCgpIHsg
fTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkQ2xpZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
JikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9k
ZWxDbGllbnQmKSA9IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgcGxheSgpID0gMDsKQEAgLTkxLDEw
ICs4Niw2IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGRvdWJsZSB2b2x1bWUoKSBjb25zdCA9IDA7
CiAgICAgdmlydHVhbCBib29sIGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZCgpIGNvbnN0ID0g
MDsKICAgICB2aXJ0dWFsIGJvb2wgaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlKCkgY29uc3QgPSAw
OwotCi1wcml2YXRlOgotICAgIHZpcnR1YWwgdm9pZCByZWZQbGF5YmFja1Nlc3Npb25Nb2RlbCgp
ID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgZGVyZWZQbGF5YmFja1Nlc3Npb25Nb2RlbCgpID0gMDsK
IH07CiAKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50IHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVt
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nlc3Npb25Nb2Rl
bE1lZGlhRWxlbWVudC5oCmluZGV4IDIwNDYyOWJjODExOTU0ZjEwYTg5ZmYzNTFjYTdhMmRjYTc5
NGEwNDMuLjllZWZkMTBmMmEzZGNlZWFkMTE5NGVjOTQ4NTMxMzk0ODQ3MjM3OTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvUGxheWJhY2tT
ZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQuaApAQCAtMzAsOCArMzAsOSBAQAogI2luY2x1ZGUgIkV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJIVE1MTWVkaWFFbGVtZW50RW51bXMuaCIKICNpbmNs
dWRlICJQbGF5YmFja1Nlc3Npb25Nb2RlbC5oIgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyQ29udGFpbmVyLmg+
CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTQw
LDEwICs0MSw3IEBAIGNsYXNzIEhUTUxNZWRpYUVsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBj
bGFzcyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7CiAKLWNsYXNzIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsTWVkaWFFbGVtZW50IGZpbmFsCi0gICAgOiBwdWJsaWMgUmVmQ291bnRlZDxQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudD4KLSAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudD4KLSAgICAsIHB1YmxpYyBQbGF5YmFja1Nlc3Np
b25Nb2RlbCB7CitjbGFzcyBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCBmaW5hbCA6
IHB1YmxpYyBQbGF5YmFja1Nlc3Npb25Nb2RlbCwgcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVi
bGljOgogICAgIHN0YXRpYyBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IGNy
ZWF0ZSgpCiAgICAgewpAQCAtNTMsOSArNTEsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgc2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqKTsKICAgICBIVE1MTWVk
aWFFbGVtZW50KiBtZWRpYUVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBtX21lZGlhRWxlbWVudC5n
ZXQoKTsgfQogCisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYW5kbGVFdmVudChXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViQ29yZTo6RXZlbnQmKSBmaW5hbDsKICAgICB2b2lk
IHVwZGF0ZUZvckV2ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluZyYpOworICAgIGJvb2wg
b3BlcmF0b3I9PShjb25zdCBFdmVudExpc3RlbmVyJiByaHMpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IHN0YXRpY19jYXN0PGNvbnN0IFdlYkNvcmU6OkV2ZW50TGlzdGVuZXIqPih0aGlzKSA9PSAmcmhz
OyB9CiAKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVudChXZWFrUHRyPFBsYXliYWNr
U2Vzc2lvbk1vZGVsQ2xpZW50PiYmKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGFkZENsaWVu
dChQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCYpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVtb3ZlQ2xpZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50Jik7CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBwbGF5KCkgZmluYWw7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBwYXVzZSgp
IGZpbmFsOwpAQCAtOTgsMjcgKzk4LDE5IEBAIHB1YmxpYzoKICAgICBib29sIGlzUGljdHVyZUlu
UGljdHVyZVN1cHBvcnRlZCgpIGNvbnN0IGZpbmFsOwogICAgIGJvb2wgaXNQaWN0dXJlSW5QaWN0
dXJlQWN0aXZlKCkgY29uc3QgZmluYWw7CiAKLSAgICB1c2luZyBSZWZDb3VudGVkOjpyZWY7Ci0g
ICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7Ci0KIHByb3RlY3RlZDoKICAgICBXRUJDT1JFX0VY
UE9SVCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudCgpOwogCiBwcml2YXRlOgotICAg
IHZvaWQgcmVmUGxheWJhY2tTZXNzaW9uTW9kZWwoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9p
ZCBkZXJlZlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgZmluYWwgeyBkZXJlZigpOyB9Ci0gICAgCiAg
ICAgdm9pZCBwcm9ncmVzc0V2ZW50VGltZXJGaXJlZCgpOwogICAgIHN0YXRpYyBjb25zdCBWZWN0
b3I8V1RGOjpBdG9taWNTdHJpbmc+JiBvYnNlcnZlZEV2ZW50TmFtZXMoKTsKICAgICBjb25zdCBX
VEY6OkF0b21pY1N0cmluZyYgZXZlbnROYW1lQWxsKCk7CiAKLSAgICBjbGFzcyBNZWRpYUVsZW1l
bnRFdmVudExpc3RlbmVyOwotCiAgICAgUmVmUHRyPEhUTUxNZWRpYUVsZW1lbnQ+IG1fbWVkaWFF
bGVtZW50OwotICAgIFdlYWtQdHJDb250YWluZXI8UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ+
IG1fY2xpZW50czsKKyAgICBib29sIG1faXNMaXN0ZW5pbmcgeyBmYWxzZSB9OworICAgIEhhc2hT
ZXQ8UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQqPiBtX2NsaWVudHM7CiAgICAgVmVjdG9yPFJl
ZlB0cjxUZXh0VHJhY2s+PiBtX2xlZ2libGVUcmFja3NGb3JNZW51OwogICAgIFZlY3RvcjxSZWZQ
dHI8QXVkaW9UcmFjaz4+IG1fYXVkaW9UcmFja3NGb3JNZW51OwotICAgIFJlZjxNZWRpYUVsZW1l
bnRFdmVudExpc3RlbmVyPiBtX2V2ZW50TGlzdGVuZXI7CiAKICAgICBkb3VibGUgcGxheWJhY2tT
dGFydGVkVGltZSgpIGNvbnN0OwogICAgIHZvaWQgdXBkYXRlTWVkaWFTZWxlY3Rpb25PcHRpb25z
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9QbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudC5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29h
L1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCmluZGV4IGQ2MGE0NDNiZjdlNjkw
NTkxZDFhMGZiOWM0YjhkYmRjMTYzZGVmY2MuLmMwMTc5MjE3NWRkMzNkMjlmYTM4NGE1ZTk3MjU1
MDUyNDczOWQ1MWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1Bs
YXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50Lm1tCkBAIC00Nywz
MyArNDcsMTMgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6TWVkaWFFbGVtZW50RXZlbnRMaXN0ZW5lciBmaW5hbCA6IHB1
YmxpYyBFdmVudExpc3RlbmVyIHsKLXB1YmxpYzoKLSAgICBNZWRpYUVsZW1lbnRFdmVudExpc3Rl
bmVyKFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+JiYgcGFyZW50KQot
ICAgICAgICA6IEV2ZW50TGlzdGVuZXIoQ1BQRXZlbnRMaXN0ZW5lclR5cGUpCi0gICAgICAgICwg
bV9wYXJlbnQoV1RGTW92ZShwYXJlbnQpKQotICAgIHsKLSAgICB9Ci1wcml2YXRlOgotICAgIHZv
aWQgaGFuZGxlRXZlbnQoV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6
OkV2ZW50JiBldmVudCkgZmluYWwKLSAgICB7Ci0gICAgICAgIGlmIChtX3BhcmVudCkKLSAgICAg
ICAgICAgIG1fcGFyZW50LT51cGRhdGVGb3JFdmVudE5hbWUoZXZlbnQudHlwZSgpKTsKLSAgICB9
Ci0gICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgY29uc3QgZmlu
YWwgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5lcio+KHRo
aXMpID09ICZyaHM7IH0KLQotICAgIFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ+IG1fcGFyZW50OwotfTsKLQogUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6
OlBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCkKLSAgICA6IG1fZXZlbnRMaXN0ZW5l
cihhZG9wdFJlZigqbmV3IE1lZGlhRWxlbWVudEV2ZW50TGlzdGVuZXIobWFrZVdlYWtQdHIoKnRo
aXMpKSkpCisgICAgOiBFdmVudExpc3RlbmVyKEV2ZW50TGlzdGVuZXI6OkNQUEV2ZW50TGlzdGVu
ZXJUeXBlKQogewogfQogCiBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6flBsYXli
YWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50KCkKIHsKLSAgICBtX2NsaWVudHMuY2xlYXIoKTsK
LSAgICBzZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TW9kZWxNZWRpYUVsZW1lbnQ6OnNldE1lZGlhRWxlbWVudChIVE1MTWVkaWFFbGVtZW50KiBtZWRp
YUVsZW1lbnQpCkBAIC04Myw0NSArNjMsNTIgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6c2V0TWVkaWFFbGVtZW50KEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWwKIAog
ICAgIGF1dG8mIGV2ZW50cyA9IGV2ZW50TmFtZXMoKTsKIAotICAgIGlmIChtX21lZGlhRWxlbWVu
dCkgeworICAgIGlmIChtX21lZGlhRWxlbWVudCAmJiBtX2lzTGlzdGVuaW5nKSB7CiAgICAgICAg
IGZvciAoYXV0byYgZXZlbnROYW1lIDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgICAg
ICBtX21lZGlhRWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIG1fZXZlbnRM
aXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKICAgICAgICAgaWYg
KGF1dG8qIGF1ZGlvVHJhY2tzID0gbV9tZWRpYUVsZW1lbnQtPmF1ZGlvVHJhY2tzKCkpIHsKLSAg
ICAgICAgICAgIGF1ZGlvVHJhY2tzLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50cy5hZGR0cmFj
a0V2ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7Ci0gICAgICAgICAgICBh
dWRpb1RyYWNrcy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudHMuY2hhbmdlRXZlbnQsIG1fZXZl
bnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgICAgIGF1ZGlvVHJhY2tzLT5y
ZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50cy5yZW1vdmV0cmFja0V2ZW50LCBtX2V2ZW50TGlzdGVu
ZXIuY29weVJlZigpLCBmYWxzZSk7CisgICAgICAgICAgICBhdWRpb1RyYWNrcy0+cmVtb3ZlRXZl
bnRMaXN0ZW5lcihldmVudHMuYWRkdHJhY2tFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAg
ICAgIGF1ZGlvVHJhY2tzLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50cy5jaGFuZ2VFdmVudCwg
KnRoaXMsIGZhbHNlKTsKKyAgICAgICAgICAgIGF1ZGlvVHJhY2tzLT5yZW1vdmVFdmVudExpc3Rl
bmVyKGV2ZW50cy5yZW1vdmV0cmFja0V2ZW50LCAqdGhpcywgZmFsc2UpOwogICAgICAgICB9CiAK
ICAgICAgICAgaWYgKGF1dG8qIHRleHRUcmFja3MgPSBtX21lZGlhRWxlbWVudC0+YXVkaW9UcmFj
a3MoKSkgewotICAgICAgICAgICAgdGV4dFRyYWNrcy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dHMuYWRkdHJhY2tFdmVudCwgbV9ldmVudExpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOwotICAg
ICAgICAgICAgdGV4dFRyYWNrcy0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudHMuY2hhbmdlRXZl
bnQsIG1fZXZlbnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgICAgIHRleHRU
cmFja3MtPnJlbW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRzLnJlbW92ZXRyYWNrRXZlbnQsIG1fZXZl
bnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHRUcmFja3MtPnJl
bW92ZUV2ZW50TGlzdGVuZXIoZXZlbnRzLmFkZHRyYWNrRXZlbnQsICp0aGlzLCBmYWxzZSk7Cisg
ICAgICAgICAgICB0ZXh0VHJhY2tzLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50cy5jaGFuZ2VF
dmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgICAgIHRleHRUcmFja3MtPnJlbW92ZUV2ZW50
TGlzdGVuZXIoZXZlbnRzLnJlbW92ZXRyYWNrRXZlbnQsICp0aGlzLCBmYWxzZSk7CiAgICAgICAg
IH0KLSAgICAgICAgbV9tZWRpYUVsZW1lbnQtPnJlc2V0UGxheWJhY2tTZXNzaW9uU3RhdGUoKTsK
ICAgICB9CisgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNlOworCisgICAgaWYgKG1fbWVkaWFFbGVt
ZW50KQorICAgICAgICBtX21lZGlhRWxlbWVudC0+cmVzZXRQbGF5YmFja1Nlc3Npb25TdGF0ZSgp
OwogCiAgICAgbV9tZWRpYUVsZW1lbnQgPSBtZWRpYUVsZW1lbnQ7CiAKICAgICBpZiAobV9tZWRp
YUVsZW1lbnQpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50
TmFtZXMoKSkKLSAgICAgICAgICAgIG1fbWVkaWFFbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZSwgbV9ldmVudExpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICAgICAg
bV9tZWRpYUVsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFsc2Up
OwogCiAgICAgICAgIGF1dG8mIGF1ZGlvVHJhY2tzID0gbV9tZWRpYUVsZW1lbnQtPmVuc3VyZUF1
ZGlvVHJhY2tzKCk7Ci0gICAgICAgIGF1ZGlvVHJhY2tzLmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRz
LmFkZHRyYWNrRXZlbnQsIG1fZXZlbnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAg
ICAgYXVkaW9UcmFja3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudHMuY2hhbmdlRXZlbnQsIG1fZXZl
bnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgYXVkaW9UcmFja3MuYWRkRXZl
bnRMaXN0ZW5lcihldmVudHMucmVtb3ZldHJhY2tFdmVudCwgbV9ldmVudExpc3RlbmVyLmNvcHlS
ZWYoKSwgZmFsc2UpOworICAgICAgICBhdWRpb1RyYWNrcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50
cy5hZGR0cmFja0V2ZW50LCAqdGhpcywgZmFsc2UpOworICAgICAgICBhdWRpb1RyYWNrcy5hZGRF
dmVudExpc3RlbmVyKGV2ZW50cy5jaGFuZ2VFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAg
YXVkaW9UcmFja3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudHMucmVtb3ZldHJhY2tFdmVudCwgKnRo
aXMsIGZhbHNlKTsKIAogICAgICAgICBhdXRvJiB0ZXh0VHJhY2tzID0gbV9tZWRpYUVsZW1lbnQt
PmVuc3VyZVRleHRUcmFja3MoKTsKLSAgICAgICAgdGV4dFRyYWNrcy5hZGRFdmVudExpc3RlbmVy
KGV2ZW50cy5hZGR0cmFja0V2ZW50LCBtX2V2ZW50TGlzdGVuZXIuY29weVJlZigpLCBmYWxzZSk7
Ci0gICAgICAgIHRleHRUcmFja3MuYWRkRXZlbnRMaXN0ZW5lcihldmVudHMuY2hhbmdlRXZlbnQs
IG1fZXZlbnRMaXN0ZW5lci5jb3B5UmVmKCksIGZhbHNlKTsKLSAgICAgICAgdGV4dFRyYWNrcy5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50cy5yZW1vdmV0cmFja0V2ZW50LCBtX2V2ZW50TGlzdGVuZXIu
Y29weVJlZigpLCBmYWxzZSk7CisgICAgICAgIHRleHRUcmFja3MuYWRkRXZlbnRMaXN0ZW5lcihl
dmVudHMuYWRkdHJhY2tFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICAgICAgdGV4dFRyYWNrcy5h
ZGRFdmVudExpc3RlbmVyKGV2ZW50cy5jaGFuZ2VFdmVudCwgKnRoaXMsIGZhbHNlKTsKKyAgICAg
ICAgdGV4dFRyYWNrcy5hZGRFdmVudExpc3RlbmVyKGV2ZW50cy5yZW1vdmV0cmFja0V2ZW50LCAq
dGhpcywgZmFsc2UpOwogICAgIH0KIAogICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVudE5hbWVB
bGwoKSk7CiAKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2lzUGljdHVyZUlu
UGljdHVyZVN1cHBvcnRlZCA9IGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZCgpXSAoYXV0byYg
Y2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5pc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFu
Z2VkKGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRv
IGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5pc1BpY3R1cmVJblBpY3R1cmVT
dXBwb3J0ZWRDaGFuZ2VkKGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZCgpKTsKK30KKwordm9p
ZCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6aGFuZGxlRXZlbnQoV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIFdlYkNvcmU6OkV2ZW50JiBldmVudCkKK3sKKyAgICB1
cGRhdGVGb3JFdmVudE5hbWUoZXZlbnQudHlwZSgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Np
b25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWlj
U3RyaW5nJiBldmVudE5hbWUpCkBAIC0xMzMsNDYgKzEyMCw1MSBAQCB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9t
aWNTdHJpbgogCiAgICAgaWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1l
cygpLmR1cmF0aW9uY2hhbmdlRXZlbnQpIHsKLSAgICAgICAgbV9jbGllbnRzLmZvckVhY2hOb25O
dWxsTWVtYmVyKFtkdXJhdGlvbiA9IGR1cmF0aW9uKCldIChhdXRvJiBjbGllbnQpIHsKLSAgICAg
ICAgICAgIGNsaWVudC5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOwotICAgICAgICB9KTsKKyAg
ICAgICAgZG91YmxlIGR1cmF0aW9uID0gdGhpcy0+ZHVyYXRpb24oKTsKKyAgICAgICAgZm9yIChh
dXRvIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgICAgIGNsaWVudC0+ZHVyYXRpb25DaGFu
Z2VkKGR1cmF0aW9uKTsKICAgICAgICAgLy8gVGhlc2UgaXMgbm8gc3RhbmRhcmQgZXZlbnQgZm9y
IG1pbkZhc3RSZXZlcnNlUmF0ZUNoYW5nZTsgZHVyYXRpb24gY2hhbmdlIGlzIGEgcmVhc29uYWJs
ZSBwcm94eSBmb3IgaXQuCiAgICAgICAgIC8vIEl0IGhhcHBlbnMgZXZlcnkgdGltZSBhIG5ldyBp
dGVtIGJlY29tZXMgcmVhZHkgdG8gcGxheS4KLSAgICAgICAgbV9jbGllbnRzLmZvckVhY2hOb25O
dWxsTWVtYmVyKFtjYW5QbGF5RmFzdFJldmVyc2UgPSBjYW5QbGF5RmFzdFJldmVyc2UoKV0gKGF1
dG8mIGNsaWVudCkgewotICAgICAgICAgICAgY2xpZW50LmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsKLSAgICAgICAgfSk7CisgICAgICAgIGJvb2wgY2FuUGxh
eUZhc3RSZXZlcnNlID0gdGhpcy0+Y2FuUGxheUZhc3RSZXZlcnNlKCk7CisgICAgICAgIGZvciAo
YXV0byBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgICAgICBjbGllbnQtPmNhblBsYXlGYXN0
UmV2ZXJzZUNoYW5nZWQoY2FuUGxheUZhc3RSZXZlcnNlKTsKICAgICB9CiAKICAgICBpZiAoYWxs
CiAgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGxheUV2ZW50CiAgICAgICAg
IHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkucGxheWluZ0V2ZW50KSB7Ci0gICAgICAgIG1f
Y2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbcGxheWJhY2tTdGFydGVkVGltZSA9IHBsYXli
YWNrU3RhcnRlZFRpbWUoKV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICAgICAgY2xpZW50LnBs
YXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKHBsYXliYWNrU3RhcnRlZFRpbWUpOwotICAgICAgICB9
KTsKKyAgICAgICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgICAgIGNs
aWVudC0+cGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQocGxheWJhY2tTdGFydGVkVGltZSgpKTsK
ICAgICB9CiAKICAgICBpZiAoYWxsCiAgICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVz
KCkucGF1c2VFdmVudAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnBsYXlF
dmVudAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnJhdGVjaGFuZ2VFdmVu
dCkgewotICAgICAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2lzUGxheWluZyA9
IGlzUGxheWluZygpLCBwbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGUoKV0gKGF1dG8mIGNsaWVu
dCkgewotICAgICAgICAgICAgY2xpZW50LnJhdGVDaGFuZ2VkKGlzUGxheWluZywgcGxheWJhY2tS
YXRlKTsKLSAgICAgICAgfSk7CisgICAgICAgIGJvb2wgaXNQbGF5aW5nID0gdGhpcy0+aXNQbGF5
aW5nKCk7CisgICAgICAgIGZsb2F0IHBsYXliYWNrUmF0ZSA9IHRoaXMtPnBsYXliYWNrUmF0ZSgp
OworICAgICAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAgICAgY2xp
ZW50LT5yYXRlQ2hhbmdlZChpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7CiAgICAgfQogCiAgICAg
aWYgKGFsbAogICAgICAgICB8fCBldmVudE5hbWUgPT0gZXZlbnROYW1lcygpLnRpbWV1cGRhdGVF
dmVudCkgewotICAgICAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2N1cnJlbnRU
aW1lID0gY3VycmVudFRpbWUoKSwgYW5jaG9yVGltZSA9IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNz
SW5mb10gc3lzdGVtVXB0aW1lXV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICAgICAgY2xpZW50
LmN1cnJlbnRUaW1lQ2hhbmdlZChjdXJyZW50VGltZSwgYW5jaG9yVGltZSk7Ci0gICAgICAgIH0p
OworICAgICAgICBhdXRvIGN1cnJlbnRUaW1lID0gdGhpcy0+Y3VycmVudFRpbWUoKTsKKyAgICAg
ICAgYXV0byBhbmNob3JUaW1lID0gW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1V
cHRpbWVdOworICAgICAgICBmb3IgKGF1dG8gY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICAg
ICAgY2xpZW50LT5jdXJyZW50VGltZUNoYW5nZWQoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwog
ICAgIH0KIAogICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2ZW50TmFtZXMo
KS5wcm9ncmVzc0V2ZW50KSB7Ci0gICAgICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJl
cihbYnVmZmVyZWRUaW1lID0gYnVmZmVyZWRUaW1lKCksIHNlZWthYmxlUmFuZ2VzID0gc2Vla2Fi
bGVSYW5nZXMoKSwgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSA9IHNlZWthYmxl
VGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUoKSwgbGl2ZVVwZGF0ZUludGVydmFsID0gbGl2ZVVw
ZGF0ZUludGVydmFsKCldIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgICAgIGNsaWVudC5idWZm
ZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7Ci0gICAgICAgICAgICBjbGllbnQuc2Vla2Fi
bGVSYW5nZXNDaGFuZ2VkKHNlZWthYmxlUmFuZ2VzLCBzZWVrYWJsZVRpbWVSYW5nZXNMYXN0TW9k
aWZpZWRUaW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWwpOwotICAgICAgICB9KTsKKyAgICAgICAgYXV0
byBidWZmZXJlZFRpbWUgPSB0aGlzLT5idWZmZXJlZFRpbWUoKTsKKyAgICAgICAgYXV0byBzZWVr
YWJsZVJhbmdlcyA9IHRoaXMtPnNlZWthYmxlUmFuZ2VzKCk7CisgICAgICAgIGF1dG8gc2Vla2Fi
bGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSA9IHRoaXMtPnNlZWthYmxlVGltZVJhbmdlc0xh
c3RNb2RpZmllZFRpbWUoKTsKKyAgICAgICAgYXV0byBsaXZlVXBkYXRlSW50ZXJ2YWwgPSB0aGlz
LT5saXZlVXBkYXRlSW50ZXJ2YWwoKTsKKyAgICAgICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xp
ZW50cykgeworICAgICAgICAgICAgY2xpZW50LT5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVk
VGltZSk7CisgICAgICAgICAgICBjbGllbnQtPnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChzZWVrYWJs
ZVJhbmdlcywgc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1vZGlmaWVkVGltZSwgbGl2ZVVwZGF0ZUlu
dGVydmFsKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIGlmIChhbGwKQEAgLTE4MiwxNyArMTc0
LDI0IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OnVwZGF0ZUZvckV2
ZW50TmFtZShjb25zdCBXVEY6OkF0b21pY1N0cmluCiAKICAgICBpZiAoYWxsCiAgICAgICAgIHx8
IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkud2Via2l0Y3VycmVudHBsYXliYWNrdGFyZ2V0aXN3
aXJlbGVzc2NoYW5nZWRFdmVudCkgewotICAgICAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxN
ZW1iZXIoW2VuYWJsZWQgPSBleHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpLCB0YXJnZXRUeXBlID0g
ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSwgbG9jYWxpemVkRGV2aWNlTmFtZSA9IGV4dGVy
bmFsUGxheWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCksIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkID0gd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQoKV0gKGF1dG8mIGNsaWVudCkg
ewotICAgICAgICAgICAgY2xpZW50LmV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKGVuYWJsZWQsIHRh
cmdldFR5cGUsIGxvY2FsaXplZERldmljZU5hbWUpOwotICAgICAgICAgICAgY2xpZW50LndpcmVs
ZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNh
YmxlZCk7Ci0gICAgICAgIH0pOworICAgICAgICBib29sIGVuYWJsZWQgPSBleHRlcm5hbFBsYXli
YWNrRW5hYmxlZCgpOworICAgICAgICBFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRU
eXBlID0gZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKTsKKyAgICAgICAgU3RyaW5nIGxvY2Fs
aXplZERldmljZU5hbWUgPSBleHRlcm5hbFBsYXliYWNrTG9jYWxpemVkRGV2aWNlTmFtZSgpOwor
CisgICAgICAgIGJvb2wgd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgPSB0aGlzLT53aXJl
bGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpOworCisgICAgICAgIGZvciAoYXV0byBjbGllbnQg
OiBtX2NsaWVudHMpIHsKKyAgICAgICAgICAgIGNsaWVudC0+ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQoZW5hYmxlZCwgdGFyZ2V0VHlwZSwgbG9jYWxpemVkRGV2aWNlTmFtZSk7CisgICAgICAgICAg
ICBjbGllbnQtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh3aXJlbGVzc1Zp
ZGVvUGxheWJhY2tEaXNhYmxlZCk7CisgICAgICAgIH0KICAgICB9CiAKICAgICBpZiAoYWxsCiAg
ICAgICAgIHx8IGV2ZW50TmFtZSA9PSBldmVudE5hbWVzKCkud2Via2l0cHJlc2VudGF0aW9ubW9k
ZWNoYW5nZWRFdmVudCkgewotICAgICAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIo
W2lzUGljdHVyZUluUGljdHVyZUFjdGl2ZSA9IGlzUGljdHVyZUluUGljdHVyZUFjdGl2ZSgpXSAo
YXV0byYgY2xpZW50KSB7Ci0gICAgICAgICAgICBjbGllbnQucGljdHVyZUluUGljdHVyZUFjdGl2
ZUNoYW5nZWQoaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlKTsKLSAgICAgICAgfSk7CisgICAgICAg
IGJvb2wgaXNQaWN0dXJlSW5QaWN0dXJlQWN0aXZlID0gdGhpcy0+aXNQaWN0dXJlSW5QaWN0dXJl
QWN0aXZlKCk7CisKKyAgICAgICAgZm9yIChhdXRvIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAg
ICAgICAgIGNsaWVudC0+cGljdHVyZUluUGljdHVyZUFjdGl2ZUNoYW5nZWQoaXNQaWN0dXJlSW5Q
aWN0dXJlQWN0aXZlKTsKICAgICB9CiAKIApAQCAtMjAzLDIwICsyMDIsMjIgQEAgdm9pZCBQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6dXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdU
Rjo6QXRvbWljU3RyaW4KIAogICAgIGlmIChhbGwKICAgICAgICAgfHwgZXZlbnROYW1lID09IGV2
ZW50TmFtZXMoKS52b2x1bWVjaGFuZ2VFdmVudCkgewotICAgICAgICBtX2NsaWVudHMuZm9yRWFj
aE5vbk51bGxNZW1iZXIoW2lzTXV0ZWQgPSBpc011dGVkKCksIHZvbHVtZSA9IHZvbHVtZSgpXSAo
YXV0byYgY2xpZW50KSB7Ci0gICAgICAgICAgICBjbGllbnQubXV0ZWRDaGFuZ2VkKGlzTXV0ZWQp
OwotICAgICAgICAgICAgY2xpZW50LnZvbHVtZUNoYW5nZWQodm9sdW1lKTsKLSAgICAgICAgfSk7
CisgICAgICAgIGZvciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpIHsKKyAgICAgICAgICAgIGNs
aWVudC0+bXV0ZWRDaGFuZ2VkKGlzTXV0ZWQoKSk7CisgICAgICAgICAgICBjbGllbnQtPnZvbHVt
ZUNoYW5nZWQodm9sdW1lKCkpOworICAgICAgICB9CiAgICAgfQogfQotdm9pZCBQbGF5YmFja1Nl
c3Npb25Nb2RlbE1lZGlhRWxlbWVudDo6YWRkQ2xpZW50KFdlYWtQdHI8UGxheWJhY2tTZXNzaW9u
TW9kZWxDbGllbnQ+JiYgY2xpZW50KQordm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxl
bWVudDo6YWRkQ2xpZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50JiBjbGllbnQpCiB7Ci0g
ICAgbV9jbGllbnRzLmFkZChXVEZNb3ZlKGNsaWVudCkpOworICAgIEFTU0VSVCghbV9jbGllbnRz
LmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMuYWRkKCZjbGllbnQpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpyZW1vdmVDbGllbnQoUGxheWJh
Y2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKIHsKLSAgICBtX2NsaWVudHMucmVtb3ZlKGNs
aWVudCk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygmY2xpZW50KSk7CisgICAgbV9j
bGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbE1l
ZGlhRWxlbWVudDo6cGxheSgpCkBAIC0zNTQsMTggKzM1NSwyNiBAQCB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1vZGVsTWVkaWFFbGVtZW50Ojp1cGRhdGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKQogICAg
IGVsc2UKICAgICAgICAgbV9hdWRpb1RyYWNrc0Zvck1lbnUuY2xlYXIoKTsKIAotICAgIG1fY2xp
ZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbYXVkaW9PcHRpb25zID0gYXVkaW9NZWRpYVNlbGVj
dGlvbk9wdGlvbnMoKSwgYXVkaW9JbmRleCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCksIGxl
Z2libGVPcHRpb25zID0gbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucygpLCBsZWdpYmxlSW5k
ZXggPSBsZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCldIChhdXRvJiBjbGllbnQpIHsKLSAgICAg
ICAgY2xpZW50LmF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChhdWRpb09wdGlvbnMs
IGF1ZGlvSW5kZXgpOwotICAgICAgICBjbGllbnQubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
c0NoYW5nZWQobGVnaWJsZU9wdGlvbnMsIGxlZ2libGVJbmRleCk7Ci0gICAgfSk7CisgICAgYXV0
byBhdWRpb09wdGlvbnMgPSBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpOworICAgIGF1dG8g
YXVkaW9JbmRleCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KCk7CisgICAgYXV0byBsZWdpYmxl
T3B0aW9ucyA9IGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMoKTsKKyAgICBhdXRvIGxlZ2li
bGVJbmRleCA9IGxlZ2libGVNZWRpYVNlbGVjdGVkSW5kZXgoKTsKKworICAgIGZvciAoYXV0byBj
bGllbnQgOiBtX2NsaWVudHMpIHsKKyAgICAgICAgY2xpZW50LT5hdWRpb01lZGlhU2VsZWN0aW9u
T3B0aW9uc0NoYW5nZWQoYXVkaW9PcHRpb25zLCBhdWRpb0luZGV4KTsKKyAgICAgICAgY2xpZW50
LT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChsZWdpYmxlT3B0aW9ucywgbGVn
aWJsZUluZGV4KTsKKyAgICB9CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OnVwZGF0ZU1lZGlhU2VsZWN0aW9uSW5kaWNlcygpCiB7Ci0gICAgbV9jbGllbnRzLmZv
ckVhY2hOb25OdWxsTWVtYmVyKFthdWRpb0luZGV4ID0gYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgo
KSwgbGVnaWJsZUluZGV4ID0gbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpXSAoYXV0byYgY2xp
ZW50KSB7Ci0gICAgICAgIGNsaWVudC5hdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGF1
ZGlvSW5kZXgpOwotICAgICAgICBjbGllbnQubGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFu
Z2VkKGxlZ2libGVJbmRleCk7Ci0gICAgfSk7CisgICAgYXV0byBhdWRpb0luZGV4ID0gYXVkaW9N
ZWRpYVNlbGVjdGVkSW5kZXgoKTsKKyAgICBhdXRvIGxlZ2libGVJbmRleCA9IGxlZ2libGVNZWRp
YVNlbGVjdGVkSW5kZXgoKTsKKworICAgIGZvciAoYXV0byBjbGllbnQgOiBtX2NsaWVudHMpIHsK
KyAgICAgICAgY2xpZW50LT5hdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGF1ZGlvSW5k
ZXgpOworICAgICAgICBjbGllbnQtPmxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChs
ZWdpYmxlSW5kZXgpOworICAgIH0KIH0KIAogZG91YmxlIFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50OjpwbGF5YmFja1N0YXJ0ZWRUaW1lKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNl
cnZlci5oCmluZGV4IDQ5OTA4MTNhMzkwOWU2MDJjZjU1NjZhODk3Zjg3MDcxOTRkZDZiOWIuLjRl
YjA1ODBjOTYxMzlkZDQ3ZTc1ODEyZTYxOWJjOTA1ZDZiNzZlZDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuQ2hhbmdl
T2JzZXJ2ZXIuaApAQCAtMzIsNyArMzIsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNz
IFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsKIHB1YmxpYzoKLSAgICB2aXJ0dWFsIH5W
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigpID0gZGVmYXVsdDsKKyAgICB2aXJ0dWFsIH5W
aWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcigpIHsgfTsKICAgICB2aXJ0dWFsIHZvaWQgcmVx
dWVzdFVwZGF0ZUlubGluZVJlY3QoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3RWaWRl
b0NvbnRlbnRMYXllcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcmV0dXJuVmlkZW9Db250ZW50
TGF5ZXIoKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9W
aWRlb0Z1bGxzY3JlZW5Nb2RlbC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWwuaAppbmRleCA2ZDFiN2U5OGE5ZTM1YjY3YTJjMzcxY2JhNjBhZmMz
ODhiNmFiNWJlLi5jZTUxMzU0MTY0MmZmYmEzMmY3ZGI2YjgwMzdiNjBiODAwN2QxZWVkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2Rl
bC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLmgKQEAgLTMwLDcgKzMwLDcgQEAKIAogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1
ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+Cisj
aW5jbHVkZSAiUGxheWJhY2tTZXNzaW9uTW9kZWwuaCIKIAogI2lmIFBMQVRGT1JNKElPUykKIE9C
SkNfQ0xBU1MgQVZQbGF5ZXJWaWV3Q29udHJvbGxlcjsKQEAgLTQzLDE1ICs0Myw4IEBAIGNsYXNz
IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50OwogCiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCB7CiBwdWJsaWM6Ci0gICAgdmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuTW9kZWwoKSA9IGRlZmF1
bHQ7Ci0KLSAgICB2b2lkIHJlZigpIHsgcmVmVmlkZW9GdWxsc2NyZWVuTW9kZWwoKTsgfQotICAg
IHZvaWQgZGVyZWYoKSB7IGRlcmVmVmlkZW9GdWxsc2NyZWVuTW9kZWwoKTsgfQotCi0gICAgdmly
dHVhbCB2b2lkIHJlZlZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgPSAwOwotICAgIHZpcnR1YWwgdm9p
ZCBkZXJlZlZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgPSAwOwotCi0gICAgdmlydHVhbCB2b2lkIGFk
ZENsaWVudChXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PiYmKSA9IDA7CisgICAg
dmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuTW9kZWwoKSB7IH07CisgICAgdmlydHVhbCB2b2lkIGFk
ZENsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYpID0gMDsKICAgICB2aXJ0dWFsIHZv
aWQgcmVtb3ZlQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jik9IDA7CiAKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6
VmlkZW9GdWxsc2NyZWVuTW9kZSwgYm9vbCBmaW5pc2hlZFdpdGhNZWRpYSA9IGZhbHNlKSA9IDA7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbFZpZGVvRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQuaAppbmRleCA4MjY4ZGE1YTAyNDM3MWQxZGRm
YmJhMTgyMTk2MDM1YWQ5NWI1M2U0Li4wMzdkZDAyYjYxZDNiMWE4MjRiM2Y5YzBlYzE2MWQ1OTlm
MzEwZGU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50LmgKQEAgLTI4LDE0ICsyOCwx
NiBAQAogCiAjaWYgUExBVEZPUk0oSU9TKSB8fCAoUExBVEZPUk0oTUFDKSAmJiBFTkFCTEUoVklE
RU9fUFJFU0VOVEFUSU9OX01PREUpKQogCisjaW5jbHVkZSAiRXZlbnRMaXN0ZW5lci5oIgogI2lu
Y2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnRFbnVtcy5oIgog
I2luY2x1ZGUgIlBsYXRmb3JtTGF5ZXIuaCIKICNpbmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bC5oIgogI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+
CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZXRhaW5QdHIuaD4KLSNp
bmNsdWRlIDx3dGYvV2Vha1B0ckNvbnRhaW5lci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXVkaW9UcmFjazsKQEAgLTQzLDEwICs0NSw3
IEBAIGNsYXNzIEhUTUxWaWRlb0VsZW1lbnQ7CiBjbGFzcyBUZXh0VHJhY2s7CiBjbGFzcyBQbGF5
YmFja1Nlc3Npb25Nb2RlbE1lZGlhRWxlbWVudDsKIAotY2xhc3MgVmlkZW9GdWxsc2NyZWVuTW9k
ZWxWaWRlb0VsZW1lbnQgCi0gICAgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudD4KLSAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4KLSAgICAsIHB1YmxpYyBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCB7CitjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCA6IHB1YmxpYyBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbCwgcHVibGljIEV2ZW50TGlzdGVuZXIgewogcHVibGljOgogICAgIHN0
YXRpYyBSZWZQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ+IGNyZWF0ZSgpCiAg
ICAgewpAQCAtNTksOSArNTgsMTEgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
d2lsbEV4aXRGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB3YWl0Rm9yUHJl
cGFyZWRGb3JJbmxpbmVUaGVuKFdURjo6RnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5k
bGVyID0gW10geyB9KTsKICAgICAKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGhhbmRsZUV2ZW50
KFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBXZWJDb3JlOjpFdmVudCYpIG92ZXJy
aWRlOwogICAgIHZvaWQgdXBkYXRlRm9yRXZlbnROYW1lKGNvbnN0IFdURjo6QXRvbWljU3RyaW5n
Jik7CisgICAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEV2ZW50TGlzdGVuZXImIHJocykgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgV2ViQ29yZTo6RXZlbnRMaXN0ZW5l
cio+KHRoaXMpID09ICZyaHM7IH0KIAotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50
KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+JiYpIG92ZXJyaWRlOworICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgYWRkQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikg
b3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZW1vdmVDbGllbnQoVmlkZW9GdWxs
c2NyZWVuTW9kZWxDbGllbnQmKSBvdmVycmlkZTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJl
cXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEgPSBmYWxzZSkgb3ZlcnJpZGU7CiAgICAgV0VC
Q09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0xheWVyRnJhbWUoRmxvYXRSZWN0KSBvdmVycmlkZTsK
QEAgLTcxLDggKzcyLDYgQEAgcHVibGljOgogICAgIEZsb2F0U2l6ZSB2aWRlb0RpbWVuc2lvbnMo
KSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX3ZpZGVvRGltZW5zaW9uczsgfQogICAgIGJvb2wg
aGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CiAKLSAgICB1
c2luZyBSZWZDb3VudGVkOjpyZWY7Ci0gICAgdXNpbmcgUmVmQ291bnRlZDo6ZGVyZWY7CiAKIHBy
b3RlY3RlZDoKICAgICBXRUJDT1JFX0VYUE9SVCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudCgpOwpAQCAtODEsOCArODAsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0SGFzVmlkZW8o
Ym9vbCk7CiAgICAgdm9pZCBzZXRWaWRlb0RpbWVuc2lvbnMoY29uc3QgRmxvYXRTaXplJik7CiAK
LSAgICB2b2lkIHJlZlZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgZmluYWwgeyByZWYoKTsgfQotICAg
IHZvaWQgZGVyZWZWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGZpbmFsIHsgZGVyZWYoKTsgfQogICAg
IHZvaWQgd2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlk
RW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBmYWlsZWRUb0VudGVy
UGljdHVyZUluUGljdHVyZSgpIG92ZXJyaWRlOwpAQCAtOTIsMTcgKzg5LDE1IEBAIHByaXZhdGU6
CiAgICAgc3RhdGljIGNvbnN0IFZlY3RvcjxXVEY6OkF0b21pY1N0cmluZz4mIG9ic2VydmVkRXZl
bnROYW1lcygpOwogICAgIGNvbnN0IFdURjo6QXRvbWljU3RyaW5nJiBldmVudE5hbWVBbGwoKTsK
IAotICAgIGNsYXNzIE1lZGlhRWxlbWVudEV2ZW50TGlzdGVuZXI7Ci0KICAgICBSZWZQdHI8SFRN
TFZpZGVvRWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7CiAgICAgUmV0YWluUHRyPFBsYXRmb3JtTGF5
ZXI+IG1fdmlkZW9GdWxsc2NyZWVuTGF5ZXI7Ci0gICAgV2Vha1B0ckNvbnRhaW5lcjxWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENsaWVudD4gbV9jbGllbnRzOworICAgIGJvb2wgbV9pc0xpc3RlbmluZyB7
IGZhbHNlIH07CisgICAgSGFzaFNldDxWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCo+IG1fY2xp
ZW50czsKICAgICBib29sIG1faGFzVmlkZW8geyBmYWxzZSB9OwogICAgIEZsb2F0U2l6ZSBtX3Zp
ZGVvRGltZW5zaW9uczsKICAgICBGbG9hdFJlY3QgbV92aWRlb0ZyYW1lOwogICAgIFZlY3RvcjxS
ZWZQdHI8VGV4dFRyYWNrPj4gbV9sZWdpYmxlVHJhY2tzRm9yTWVudTsKICAgICBWZWN0b3I8UmVm
UHRyPEF1ZGlvVHJhY2s+PiBtX2F1ZGlvVHJhY2tzRm9yTWVudTsKLSAgICBSZWY8TWVkaWFFbGVt
ZW50RXZlbnRMaXN0ZW5lcj4gbV9ldmVudExpc3RlbmVyOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY29jb2EvVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5N
b2RlbFZpZGVvRWxlbWVudC5tbQppbmRleCBjMzE1YjY1YTJmY2RiYWMyN2E2NGQzMmU0YjM0ZGIy
YTJmMzJmNGI1Li40MDlmNjIyMTg3ZmRiNzJkY2ViNmM3NDQ1MWM2NDczMGU3MjFkZjcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jb2NvYS9WaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudC5tbQpAQCAtNDcsMjcgKzQ3LDggQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi0KLWNsYXNzIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVt
ZW50OjpNZWRpYUVsZW1lbnRFdmVudExpc3RlbmVyIGZpbmFsIDogcHVibGljIEV2ZW50TGlzdGVu
ZXIgewotcHVibGljOgotICAgIE1lZGlhRWxlbWVudEV2ZW50TGlzdGVuZXIoV2Vha1B0cjxWaWRl
b0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4mJiBwYXJlbnQpCi0gICAgICAgIDogRXZlbnRM
aXN0ZW5lcihDUFBFdmVudExpc3RlbmVyVHlwZSkKLSAgICAgICAgLCBtX3BhcmVudChXVEZNb3Zl
KHBhcmVudCkpCi0gICAgewotICAgIH0KLXByaXZhdGU6Ci0gICAgdm9pZCBoYW5kbGVFdmVudChX
ZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgV2ViQ29yZTo6RXZlbnQmIGV2ZW50KSBm
aW5hbAotICAgIHsKLSAgICAgICAgaWYgKG1fcGFyZW50KQotICAgICAgICAgICAgbV9wYXJlbnQt
PnVwZGF0ZUZvckV2ZW50TmFtZShldmVudC50eXBlKCkpOwotICAgIH0KLSAgICBib29sIG9wZXJh
dG9yPT0oY29uc3QgRXZlbnRMaXN0ZW5lciYgcmhzKSBjb25zdCBmaW5hbCB7IHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBXZWJDb3JlOjpFdmVudExpc3RlbmVyKj4odGhpcykgPT0gJnJoczsgfQot
Ci0gICAgV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbV9wYXJlbnQ7
Ci19OwotCiBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6VmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQoKQotICAgIDogbV9ldmVudExpc3RlbmVyKGFkb3B0UmVmKCpuZXcg
TWVkaWFFbGVtZW50RXZlbnRMaXN0ZW5lcihtYWtlV2Vha1B0cigqdGhpcykpKSkKKyAgICA6IEV2
ZW50TGlzdGVuZXIoRXZlbnRMaXN0ZW5lcjo6Q1BQRXZlbnRMaXN0ZW5lclR5cGUpCiB7CiAgICAg
TE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudCAlcCBjdG9y
IiwgdGhpcyk7CiB9CkBAIC04NywyMSArNjgsMjggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bFZpZGVvRWxlbWVudDo6c2V0VmlkZW9FbGVtZW50KEhUTUxWaWRlb0VsZW1lbnQqIHZpZGVvRWwK
ICAgICBpZiAobV92aWRlb0VsZW1lbnQgJiYgbV92aWRlb0VsZW1lbnQtPnZpZGVvRnVsbHNjcmVl
bkxheWVyKCkpCiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5zZXRWaWRlb0Z1bGxzY3JlZW5MYXll
cihudWxscHRyKTsKIAotICAgIGlmIChtX3ZpZGVvRWxlbWVudCkgeworICAgIGlmIChtX3ZpZGVv
RWxlbWVudCAmJiBtX2lzTGlzdGVuaW5nKSB7CiAgICAgICAgIGZvciAoYXV0byYgZXZlbnROYW1l
IDogb2JzZXJ2ZWRFdmVudE5hbWVzKCkpCi0gICAgICAgICAgICBtX3ZpZGVvRWxlbWVudC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIG1fZXZlbnRMaXN0ZW5lci5jb3B5UmVmKCksIGZh
bHNlKTsKKyAgICAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5yZW1vdmVFdmVudExpc3RlbmVyKGV2
ZW50TmFtZSwgKnRoaXMsIGZhbHNlKTsKICAgICB9CisgICAgbV9pc0xpc3RlbmluZyA9IGZhbHNl
OwogCiAgICAgbV92aWRlb0VsZW1lbnQgPSB2aWRlb0VsZW1lbnQ7CiAKICAgICBpZiAobV92aWRl
b0VsZW1lbnQpIHsKICAgICAgICAgZm9yIChhdXRvJiBldmVudE5hbWUgOiBvYnNlcnZlZEV2ZW50
TmFtZXMoKSkKLSAgICAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5hZGRFdmVudExpc3RlbmVyKGV2
ZW50TmFtZSwgbV9ldmVudExpc3RlbmVyLmNvcHlSZWYoKSwgZmFsc2UpOworICAgICAgICAgICAg
bV92aWRlb0VsZW1lbnQtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnROYW1lLCAqdGhpcywgZmFsc2Up
OworICAgICAgICBtX2lzTGlzdGVuaW5nID0gdHJ1ZTsKICAgICB9CiAKICAgICB1cGRhdGVGb3JF
dmVudE5hbWUoZXZlbnROYW1lQWxsKCkpOwogfQogCit2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVs
VmlkZW9FbGVtZW50OjpoYW5kbGVFdmVudChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0
JiwgV2ViQ29yZTo6RXZlbnQmIGV2ZW50KQoreworICAgIHVwZGF0ZUZvckV2ZW50TmFtZShldmVu
dC50eXBlKCkpOworfQorCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp1
cGRhdGVGb3JFdmVudE5hbWUoY29uc3QgV1RGOjpBdG9taWNTdHJpbmcmIGV2ZW50TmFtZSkKIHsK
ICAgICBpZiAobV9jbGllbnRzLmlzRW1wdHkoKSkKQEAgLTIxMSwxNCArMTk5LDE2IEBAIHZvaWQg
VmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChI
VE1MTWVkaWFFbGVtZW50RW51CiAgICAgICAgIG1fdmlkZW9FbGVtZW50LT5mdWxsc2NyZWVuTW9k
ZUNoYW5nZWQodmlkZW9GdWxsc2NyZWVuTW9kZSk7CiB9CiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVu
TW9kZWxWaWRlb0VsZW1lbnQ6OmFkZENsaWVudChXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50PiYmIGNsaWVudCkKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6
OmFkZENsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQogewotICAgIG1f
Y2xpZW50cy5hZGQoV1RGTW92ZShjbGllbnQpKTsKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250
YWlucygmY2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKIH0KIAogdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6cmVtb3ZlQ2xpZW50KFZpZGVvRnVsbHNj
cmVlbk1vZGVsQ2xpZW50JiBjbGllbnQpCiB7Ci0gICAgbV9jbGllbnRzLnJlbW92ZShjbGllbnQp
OworICAgIEFTU0VSVChtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50
cy5yZW1vdmUoJmNsaWVudCk7CiB9CiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0Vs
ZW1lbnQ6OmlzVmlzaWJsZSgpIGNvbnN0CkBAIC0yMzksOSArMjI5LDggQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6c2V0SGFzVmlkZW8oYm9vbCBoYXNWaWRlbykKIAog
ICAgIG1faGFzVmlkZW8gPSBoYXNWaWRlbzsKIAotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVs
bE1lbWJlcihbaGFzVmlkZW9dIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xpZW50Lmhhc1Zp
ZGVvQ2hhbmdlZChoYXNWaWRlbyk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBt
X2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+aGFzVmlkZW9DaGFuZ2VkKG1faGFzVmlkZW8pOwog
fQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0RpbWVu
c2lvbnMoY29uc3QgRmxvYXRTaXplJiB2aWRlb0RpbWVuc2lvbnMpCkBAIC0yNTEsNDQgKzI0MCwz
OCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50OjpzZXRWaWRlb0RpbWVu
c2lvbnMoY29uc3QgRmxvYXRTaXplJiB2aWRlbwogCiAgICAgbV92aWRlb0RpbWVuc2lvbnMgPSB2
aWRlb0RpbWVuc2lvbnM7CiAKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW3Zp
ZGVvRGltZW5zaW9uc10gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQudmlkZW9EaW1l
bnNpb25zQ2hhbmdlZCh2aWRlb0RpbWVuc2lvbnMpOwotICAgIH0pOworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPnZpZGVvRGltZW5zaW9uc0NoYW5n
ZWQobV92aWRlb0RpbWVuc2lvbnMpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlk
ZW9FbGVtZW50Ojp3aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBtX2NsaWVudHMu
Zm9yRWFjaE5vbk51bGxNZW1iZXIoW10gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQu
d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgY2xp
ZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPndpbGxFbnRlclBpY3R1cmVJblBpY3R1
cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6ZGlkRW50
ZXJQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1i
ZXIoW10gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQuZGlkRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlKCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2NsaWVudHMpCisg
ICAgICAgIGNsaWVudC0+ZGlkRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTW9kZWxWaWRlb0VsZW1lbnQ6OmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0
dXJlKCkKIHsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW10gKGF1dG8mIGNs
aWVudCkgewotICAgICAgICBjbGllbnQuZmFpbGVkVG9FbnRlclBpY3R1cmVJblBpY3R1cmUoKTsK
LSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LT5mYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVs
bHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50Ojp3aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogewot
ICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbXSAoYXV0byYgY2xpZW50KSB7Ci0g
ICAgICAgIGNsaWVudC53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICB9KTsKKyAgICBm
b3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT53aWxsRXhpdFBp
Y3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIG1fY2xpZW50cy5mb3JFYWNo
Tm9uTnVsbE1lbWJlcihbXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5kaWRFeGl0
UGljdHVyZUluUGljdHVyZSgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9j
bGllbnRzKQorICAgICAgICBjbGllbnQtPmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKaW5kZXggYTU3NGY1
OGRkNWI3ZTYwN2I3M2Q4ZTlkZDQyNTFlNWFjZmMzNDFmZC4uODU4MDE5MTVlMGYwMTk2ODBkZjQ3
YzgxNmMwYmRkYjViNjBiYzM5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0LmgKQEAgLTUxLDE0ICs1
MSwxOCBAQCBjbGFzcyBJbnRSZWN0OwogY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWw7CiBjbGFz
cyBXZWJQbGF5YmFja1Nlc3Npb25DaGFuZ2VPYnNlcnZlcjsKIAotY2xhc3MgUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQKK2NsYXNzIFdFQkNPUkVfRVhQT1JUIFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUFWS2l0CiAgICAgOiBwdWJsaWMgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCiAgICAg
LCBwdWJsaWMgUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKICAgICAsIHB1YmxpYyBSZWZDb3Vu
dGVkPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiB7CisKIHB1YmxpYzoKLSAgICBXRUJD
T1JFX0VYUE9SVCBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiBjcmVh
dGUoUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiYmKTsKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUFWS2l0PiBjcmVhdGUoUGxheWJhY2tTZXNzaW9uTW9kZWwmIG1vZGVs
KQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQobW9kZWwpKTsKKyAgICB9CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlQVZLaXQoKTsKLSAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbCYgcGxheWJhY2tTZXNz
aW9uTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOyB9CisgICAg
UGxheWJhY2tTZXNzaW9uTW9kZWwqIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3QgeyByZXR1
cm4gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbDsgfQogCiAgICAgLy8gUGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCByZXNldE1lZGlhU3RhdGUoKSBvdmVycmlk
ZTsKQEAgLTc3LDE0ICs4MSwxNSBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBt
dXRlZENoYW5nZWQoYm9vbCkgb3ZlcnJpZGU7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB2b2x1
bWVDaGFuZ2VkKGRvdWJsZSkgb3ZlcnJpZGU7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCB2aXJ0dWFs
IHZvaWQgaW52YWxpZGF0ZSgpOworCiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJD
b250cm9sbGVyKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5ZXJDb250cm9sbGVyLmdldCgpOyB9CiAK
IHByb3RlY3RlZDoKLSAgICBXRUJDT1JFX0VYUE9SVCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VB
VktpdChSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWw+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KFBsYXliYWNrU2Vzc2lvbk1vZGVsJik7CiAKICAg
ICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJDb250cm9sbGVyPiBtX3BsYXllckNvbnRyb2xsZXI7Ci0g
ICAgUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsOwotICAg
IFdlYWtQdHJGYWN0b3J5PFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiBtX3dlYWtQdHJGYWN0
b3J5OworICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsIHsg
bnVsbHB0ciB9OwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Lm1tCmluZGV4IGRkYjE2MzEx
N2YwZDcxYTg5NjczYmUwNWY2Njc5MjUxNjI5OTdkZWUuLjBhMjg1NDhiN2Y1OTUxNjE5NTM0NDMy
ZGE5YTAwMDdkZGI5YWU4NjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lv
cy9QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdC5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9pb3MvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQubW0KQEAgLTQ5LDM2ICs0
OSwzMiBAQCBTT0ZUX0xJTktfQ0xBU1NfT1BUSU9OQUwoQVZLaXQsIEFWVmFsdWVUaW1pbmcpCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgUEFMOwogCi1SZWY8UGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ+IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OjpjcmVh
dGUoUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiYmIG1vZGVsKQotewotICAgIGF1dG8gaW50ZXJm
YWNlID0gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdChXVEZNb3Zl
KG1vZGVsKSkpOwotICAgIFtpbnRlcmZhY2UtPnBsYXllckNvbnRyb2xsZXIoKSBzZXRQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2U6aW50ZXJmYWNlLnB0cigpXTsKLSAgICByZXR1cm4gaW50ZXJmYWNl
OwotfQotCi1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdDo6UGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlQVZLaXQoUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiYmIG1vZGVsKQorUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0KFBsYXli
YWNrU2Vzc2lvbk1vZGVsJiBtb2RlbCkKICAgICA6IG1fcGxheWVyQ29udHJvbGxlcihhZG9wdE5T
KFtbV2ViQVZQbGF5ZXJDb250cm9sbGVyIGFsbG9jXSBpbml0XSkpCi0gICAgLCBtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsKFdURk1vdmUobW9kZWwpKQorICAgICwgbV9wbGF5YmFja1Nlc3Npb25Nb2Rl
bCgmbW9kZWwpCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+YWRkQ2xpZW50KG1fd2Vh
a1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcykpOworICAgIG1vZGVsLmFkZENsaWVudCgq
dGhpcyk7CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXRQbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2U6dGhpc107CisgICAgW21fcGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTombW9kZWxdOwog
Ci0gICAgZHVyYXRpb25DaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmR1cmF0aW9uKCkp
OwotICAgIGN1cnJlbnRUaW1lQ2hhbmdlZChtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5jdXJyZW50
VGltZSgpLCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0pOwotICAg
IGJ1ZmZlcmVkVGltZUNoYW5nZWQobV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+YnVmZmVyZWRUaW1l
KCkpOwotICAgIHJhdGVDaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmlzUGxheWluZygp
LCBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5wbGF5YmFja1JhdGUoKSk7Ci0gICAgc2Vla2FibGVS
YW5nZXNDaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlZWthYmxlUmFuZ2VzKCksIG1f
cGxheWJhY2tTZXNzaW9uTW9kZWwtPnNlZWthYmxlVGltZVJhbmdlc0xhc3RNb2RpZmllZFRpbWUo
KSwgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+bGl2ZVVwZGF0ZUludGVydmFsKCkpOwotICAgIGNh
blBsYXlGYXN0UmV2ZXJzZUNoYW5nZWQobV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+Y2FuUGxheUZh
c3RSZXZlcnNlKCkpOwotICAgIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChtX3Bs
YXliYWNrU2Vzc2lvbk1vZGVsLT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9ucygpLCBtX3BsYXli
YWNrU2Vzc2lvbk1vZGVsLT5hdWRpb01lZGlhU2VsZWN0ZWRJbmRleCgpKTsKLSAgICBsZWdpYmxl
TWVkaWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5sZWdp
YmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCksIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmxlZ2li
bGVNZWRpYVNlbGVjdGVkSW5kZXgoKSk7Ci0gICAgZXh0ZXJuYWxQbGF5YmFja0NoYW5nZWQobV9w
bGF5YmFja1Nlc3Npb25Nb2RlbC0+ZXh0ZXJuYWxQbGF5YmFja0VuYWJsZWQoKSwgbV9wbGF5YmFj
a1Nlc3Npb25Nb2RlbC0+ZXh0ZXJuYWxQbGF5YmFja1RhcmdldFR5cGUoKSwgbV9wbGF5YmFja1Nl
c3Npb25Nb2RlbC0+ZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5hbWUoKSk7Ci0gICAg
d2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWRDaGFuZ2VkKG1fcGxheWJhY2tTZXNzaW9uTW9k
ZWwtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkKCkpOworICAgIGR1cmF0aW9uQ2hhbmdl
ZChtb2RlbC5kdXJhdGlvbigpKTsKKyAgICBjdXJyZW50VGltZUNoYW5nZWQobW9kZWwuY3VycmVu
dFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nlc3NJbmZvXSBzeXN0ZW1VcHRpbWVdKTsKKyAg
ICBidWZmZXJlZFRpbWVDaGFuZ2VkKG1vZGVsLmJ1ZmZlcmVkVGltZSgpKTsKKyAgICByYXRlQ2hh
bmdlZChtb2RlbC5pc1BsYXlpbmcoKSwgbW9kZWwucGxheWJhY2tSYXRlKCkpOworICAgIHNlZWth
YmxlUmFuZ2VzQ2hhbmdlZChtb2RlbC5zZWVrYWJsZVJhbmdlcygpLCBtb2RlbC5zZWVrYWJsZVRp
bWVSYW5nZXNMYXN0TW9kaWZpZWRUaW1lKCksIG1vZGVsLmxpdmVVcGRhdGVJbnRlcnZhbCgpKTsK
KyAgICBjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKG1vZGVsLmNhblBsYXlGYXN0UmV2ZXJzZSgp
KTsKKyAgICBhdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQobW9kZWwuYXVkaW9NZWRp
YVNlbGVjdGlvbk9wdGlvbnMoKSwgbW9kZWwuYXVkaW9NZWRpYVNlbGVjdGVkSW5kZXgoKSk7Cisg
ICAgbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQobW9kZWwubGVnaWJsZU1lZGlh
U2VsZWN0aW9uT3B0aW9ucygpLCBtb2RlbC5sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4KCkpOwor
ICAgIGV4dGVybmFsUGxheWJhY2tDaGFuZ2VkKG1vZGVsLmV4dGVybmFsUGxheWJhY2tFbmFibGVk
KCksIG1vZGVsLmV4dGVybmFsUGxheWJhY2tUYXJnZXRUeXBlKCksIG1vZGVsLmV4dGVybmFsUGxh
eWJhY2tMb2NhbGl6ZWREZXZpY2VOYW1lKCkpOworICAgIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkQ2hhbmdlZChtb2RlbC53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCgpKTsKIH0K
IAogUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6On5QbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VBVktpdCgpCiB7Ci0gICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0
aGlzKTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldFBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZTpudWxscHRyXTsKICAgICBbbV9wbGF5ZXJDb250cm9sbGVyIHNldEV4dGVybmFsUGxheWJhY2tB
Y3RpdmU6ZmFsc2VdOworCisgICAgaW52YWxpZGF0ZSgpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZUFWS2l0OjpyZXNldE1lZGlhU3RhdGUoKQpAQCAtMjEwLDYgKzIwNiwxNiBA
QCB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0Ojp2b2x1bWVDaGFuZ2VkKGRvdWJs
ZSB2b2x1bWUpCiAgICAgW21fcGxheWVyQ29udHJvbGxlciB2b2x1bWVDaGFuZ2VkOnZvbHVtZV07
CiB9CiAKK3ZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ6OmludmFsaWRhdGUoKQor
eworICAgIGlmICghbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgW21fcGxheWVyQ29udHJvbGxlciBzZXREZWxlZ2F0ZTpudWxscHRyXTsKKyAgICBtX3BsYXli
YWNrU2Vzc2lvbk1vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOworICAgIG1fcGxheWJhY2tTZXNz
aW9uTW9kZWwgPSBudWxscHRyOworfQorCiB9CiAKICNlbmRpZiAvLyBIQVZFKEFWS0lUKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaAppbmRleCA4MjE2OTc0NDk5OTU1Yzk3Y2MxOTE3OWI4NmYyNzljOTc5
NzViNmQwLi5jNmQyZWFkOTU0MmNmODQzNDIwY2U5NTNjZDNmMjRmOTI3MmJkZWM2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQuaApAQCAtNDAsNyArNDAsNiBAQAogI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmV0YWluUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4K
LSNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgogCiBPQkpDX0NMQVNTIFVJVmlld0NvbnRyb2xsZXI7
CiBPQkpDX0NMQVNTIFVJV2luZG93OwpAQCAtNjUsMTEgKzY0LDEyIEBAIGNsYXNzIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0IGZpbmFsCiAgICAgLCBwdWJsaWMgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IHsKIAogcHVibGljOgotICAgIFdF
QkNPUkVfRVhQT1JUIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IGNy
ZWF0ZShSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+JiYsIFJlZjxWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIFJlZjxWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdD4gY3JlYXRlKFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0
Jik7CiAgICAgdmlydHVhbCB+VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoKTsKLSAgICBX
RUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYWtQ
dHI8VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI+KTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGVsKFZpZGVvRnVsbHNjcmVlbk1vZGVsKik7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihWaWRl
b0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciopOwogICAgIFBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZUFWS2l0JiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UoKSBjb25zdCB7IHJldHVybiBtX3BsYXli
YWNrU2Vzc2lvbkludGVyZmFjZS5nZXQoKTsgfQotICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsJiBw
bGF5YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpOyB9CisgICAgUGxheWJhY2tTZXNzaW9uTW9k
ZWwqIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV9wbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCk7IH0KIAogICAgIC8vIFZpZGVvRnVs
bHNjcmVlbk1vZGVsQ2xpZW50CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBoYXNWaWRlb0NoYW5n
ZWQoYm9vbCkgZmluYWw7CkBAIC04MiwxMSArODIsMTQgQEAgcHVibGljOgogICAgIFdFQkNPUkVf
RVhQT1JUIHZvaWQgZW50ZXJGdWxsc2NyZWVuKCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBl
eGl0RnVsbHNjcmVlbihjb25zdCBJbnRSZWN0JiBmaW5hbFJlY3QpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgY2xlYW51cEZ1bGxzY3JlZW4oKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGlu
dmFsaWRhdGUoKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHJlcXVlc3RIaWRlQW5kRXhpdEZ1
bGxzY3JlZW4oKTsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHByZXBhcmVkVG9SZXR1cm5Ub0lu
bGluZShib29sIHZpc2libGUsIGNvbnN0IEludFJlY3QmIGlubGluZVJlY3QpOwogICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgcHJlcGFyZWRUb0V4aXRGdWxsc2NyZWVuKCk7CisjaWYgRU5BQkxFKEZV
TExTQ1JFRU5fQVBJKQogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgc2V0SGFzVmlkZW9Db250ZW50
TGF5ZXIoYm9vbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRJbmxpbmVSZWN0KGNvbnN0
IEludFJlY3QmLCBib29sIHZpc2libGUpOworI2VuZGlmCiAKICAgICBlbnVtIGNsYXNzIEV4aXRG
dWxsU2NyZWVuUmVhc29uIHsKICAgICAgICAgRG9uZUJ1dHRvblRhcHBlZCwKQEAgLTEyNCw5ICsx
MjcsMTEgQEAgcHVibGljOgogICAgIH07CiAKICAgICBNb2RlIG1fY3VycmVudE1vZGU7CisjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIE1vZGUgbV90YXJnZXRNb2RlOworI2VuZGlmCiAK
LSAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlbCYgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBjb25zdCB7
IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsOyB9CisgICAgVmlkZW9GdWxsc2NyZWVuTW9k
ZWwqIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgY29uc3QgeyByZXR1cm4gbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbDsgfQogICAgIGJvb2wgc2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKEV4aXRG
dWxsU2NyZWVuUmVhc29uKTsKICAgICBIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3VycmVudE1vZGUubW9kZSgpOyB9CiAg
ICAgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2soKSBjb25zdCB7IHJldHVybiBt
X2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjazsgfQpAQCAtMTQxLDggKzE0NiwxMCBAQCBw
dWJsaWM6CiAgICAgdm9pZCB3aWxsU3RvcFBpY3R1cmVJblBpY3R1cmUoKTsKICAgICB2b2lkIGRp
ZFN0b3BQaWN0dXJlSW5QaWN0dXJlKCk7CiAgICAgdm9pZCBwcmVwYXJlRm9yUGljdHVyZUluUGlj
dHVyZVN0b3BXaXRoQ29tcGxldGlvbkhhbmRsZXIodm9pZCAoXikoQk9PTCkpOworI2lmIEVOQUJM
RShGVUxMU0NSRUVOX0FQSSkKICAgICB2b2lkIGV4aXRGdWxsc2NyZWVuSGFuZGxlcihCT09MIHN1
Y2Nlc3MsIE5TRXJyb3IgKik7CiAgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5IYW5kbGVyKEJPT0wg
c3VjY2VzcywgTlNFcnJvciAqKTsKKyNlbmRpZgogICAgIGJvb2wgaXNQbGF5aW5nVmlkZW9JbkVu
aGFuY2VkRnVsbHNjcmVlbigpIGNvbnN0OwogCiAgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBzZXRN
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSk7CkBAIC0xNTcs
MjEgKzE2NCwyNiBAQCBwdWJsaWM6CiAjZW5kaWYKIAogcHJvdGVjdGVkOgotICAgIFdFQkNPUkVf
RVhQT1JUIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KFJlZjxQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdD4mJiwgUmVmPFZpZGVvRnVsbHNjcmVlbk1vZGVsPiYmKTsKKyAgICBXRUJD
T1JFX0VYUE9SVCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdChQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdCYpOwogCisjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIHZvaWQg
ZG9TZXR1cCgpOwogICAgIHZvaWQgZmluYWxpemVTZXR1cCgpOwogICAgIHZvaWQgZG9FeGl0RnVs
bHNjcmVlbigpOwogICAgIHZvaWQgcmV0dXJuVG9TdGFuZGJ5KCk7CisjZWxzZQorICAgIHZvaWQg
ZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAgdm9pZCBlbnRlckZ1bGxzY3JlZW5TdGFuZGFy
ZCgpOworI2VuZGlmCiAgICAgdm9pZCBkb0VudGVyRnVsbHNjcmVlbigpOwogICAgIHZvaWQgd2F0
Y2hkb2dUaW1lckZpcmVkKCk7CiAgICAgV2ViQVZQbGF5ZXJDb250cm9sbGVyICpwbGF5ZXJDb250
cm9sbGVyKCkgY29uc3Q7CiAKICAgICBSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQ+
IG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOwotICAgIFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bD4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbDsKICAgICBSZXRhaW5QdHI8V2ViQVZQbGF5ZXJWaWV3
Q29udHJvbGxlckRlbGVnYXRlPiBtX3BsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGU7CiAgICAg
UmV0YWluUHRyPFdlYkFWUGxheWVyVmlld0NvbnRyb2xsZXI+IG1fcGxheWVyVmlld0NvbnRyb2xs
ZXI7Ci0gICAgV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcj4gbV9mdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXI7CisgICAgVmlkZW9GdWxsc2NyZWVuTW9kZWwqIG1fdmlkZW9GdWxs
c2NyZWVuTW9kZWwgeyBudWxscHRyIH07CisgICAgVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIqIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsgbnVsbHB0ciB9OwogCiAgICAgLy8gVGhl
c2UgYXJlIG9ubHkgdXNlZCB3aGVuIGZ1bGxzY3JlZW4gaXMgcHJlc2VudGVkIGluIGEgc2VwYXJh
dGUgd2luZG93LgogICAgIFJldGFpblB0cjxVSVdpbmRvdz4gbV93aW5kb3c7CkBAIC0xODgsNiAr
MjAwLDcgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5X
aGVuU3RvcHBpbmdQaVAgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9yZXN0b3JpbmdGdWxsc2NyZWVu
Rm9yUGljdHVyZUluUGljdHVyZVN0b3AgeyBmYWxzZSB9OwogCisjaWYgRU5BQkxFKEZVTExTQ1JF
RU5fQVBJKQogICAgIGJvb2wgbV9zZXR1cE5lZWRzSW5saW5lUmVjdCB7IGZhbHNlIH07CiAgICAg
Ym9vbCBtX2V4aXRGdWxsc2NyZWVuTmVlZElubGluZVJlY3QgeyBmYWxzZSB9OwogCkBAIC0yMTIs
OCArMjI1LDEzIEBAIHByb3RlY3RlZDoKICAgICBib29sIG1faW5saW5lSXNWaXNpYmxlIHsgZmFs
c2UgfTsKICAgICBib29sIG1fc3RhbmRieSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX3RhcmdldFN0
YW5kYnkgeyBmYWxzZSB9OwotCisjZWxzZQorICAgIGJvb2wgbV9leGl0UmVxdWVzdGVkIHsgZmFs
c2UgfTsKKyAgICBib29sIG1fZXhpdENvbXBsZXRlZCB7IGZhbHNlIH07CisgICAgYm9vbCBtX2Vu
dGVyUmVxdWVzdGVkIHsgZmFsc2UgfTsKKyAgICBib29sIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2Ny
ZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgeyBmYWxzZSB9OwogICAgIGJvb2wgbV93YWl0aW5n
Rm9yUHJlcGFyZWRUb0V4aXQgeyBmYWxzZSB9OworI2VuZGlmCiB9OwogCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQubW0KaW5kZXggMWY3MTkzODM0ZDM1NjU0MDI5NzM5Mzk1N2I1YTJlZWY2MTg2ZTk4
Ny4uNWNjMzIwZTE5ZGFkMzljMDA5YzczMzY4YTU4NzFjODYwOTNlOGI3ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
Lm1tCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9WaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdC5tbQpAQCAtMTg3LDExICsxODcsMTMgQEAgc3RhdGljIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFNj
cmUKICAgICBzZWxmLmZ1bGxzY3JlZW5JbnRlcmZhY2UtPnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0
dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcihjb21wbGV0aW9uSGFuZGxlcik7CiB9CiAKKyNp
ZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAtIChCT09MKXBsYXllclZpZXdDb250cm9sbGVyU2hv
dWxkU3RhcnRQaWN0dXJlSW5QaWN0dXJlRnJvbUlubGluZVdoZW5FbnRlcmluZ0JhY2tncm91bmQ6
KEFWUGxheWVyVmlld0NvbnRyb2xsZXIgKilwbGF5ZXJWaWV3Q29udHJvbGxlcgogewogICAgIFVO
VVNFRF9QQVJBTShwbGF5ZXJWaWV3Q29udHJvbGxlcik7CiAgICAgcmV0dXJuIFlFUzsKIH0KKyNl
bmRpZgogCiBAZW5kCiAKQEAgLTI4Nyw3ICsyODksOCBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2Ny
ZQogICAgIH0gZWxzZSBpZiAoW2dldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVBc3BlY3RGaWxs
KCkgaXNFcXVhbFRvU3RyaW5nOnNlbGYudmlkZW9HcmF2aXR5XSkgewogICAgICAgICBzb3VyY2VW
aWRlb0ZyYW1lID0gc21hbGxlc3RSZWN0V2l0aEFzcGVjdFJhdGlvQXJvdW5kUmVjdCh2aWRlb0Fz
cGVjdFJhdGlvLCBzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKICAgICAgICAgc2VsZi5tb2Rl
bFZpZGVvTGF5ZXJGcmFtZSA9IENHUmVjdE1ha2UoMCwgMCwgc291cmNlVmlkZW9GcmFtZS53aWR0
aCgpLCBzb3VyY2VWaWRlb0ZyYW1lLmhlaWdodCgpKTsKLSAgICAgICAgX2Z1bGxzY3JlZW5JbnRl
cmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuc2V0VmlkZW9MYXllckZyYW1lKHNlbGYubW9k
ZWxWaWRlb0xheWVyRnJhbWUpOworICAgICAgICBpZiAoYXV0byogbW9kZWwgPSBfZnVsbHNjcmVl
bkludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAgICAgICAgICAgIG1vZGVsLT5z
ZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CiAgICAgICAgIHRh
cmdldFZpZGVvRnJhbWUgPSBzbWFsbGVzdFJlY3RXaXRoQXNwZWN0UmF0aW9Bcm91bmRSZWN0KHZp
ZGVvQXNwZWN0UmF0aW8sIHNlbGYuYm91bmRzKTsKICAgICB9IGVsc2UKICAgICAgICAgQVNTRVJU
X05PVF9SRUFDSEVEKCk7CkBAIC0zMjIsNyArMzI1LDggQEAgc3RhdGljIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiBjb252ZXJ0VG9FeGl0RnVsbFNj
cmUKICAgICAKICAgICBpZiAoIUNHUmVjdEVxdWFsVG9SZWN0KHNlbGYubW9kZWxWaWRlb0xheWVy
RnJhbWUsIFtzZWxmIGJvdW5kc10pKSB7CiAgICAgICAgIHNlbGYubW9kZWxWaWRlb0xheWVyRnJh
bWUgPSBbc2VsZiBib3VuZHNdOwotICAgICAgICBfZnVsbHNjcmVlbkludGVyZmFjZS0+dmlkZW9G
dWxsc2NyZWVuTW9kZWwoKS5zZXRWaWRlb0xheWVyRnJhbWUoc2VsZi5tb2RlbFZpZGVvTGF5ZXJG
cmFtZSk7CisgICAgICAgIGlmIChhdXRvKiBtb2RlbCA9IF9mdWxsc2NyZWVuSW50ZXJmYWNlLT52
aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpKQorICAgICAgICAgICAgbW9kZWwtPnNldFZpZGVvTGF5ZXJG
cmFtZShzZWxmLm1vZGVsVmlkZW9MYXllckZyYW1lKTsKICAgICB9CiAgICAgWyhVSVZpZXcgKilb
X3ZpZGVvU3VibGF5ZXIgZGVsZWdhdGVdIHNldFRyYW5zZm9ybTpDR0FmZmluZVRyYW5zZm9ybUlk
ZW50aXR5XTsKICAgICAKQEAgLTM0Niw3ICszNTAsOCBAQCBzdGF0aWMgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OkV4aXRGdWxsU2NyZWVuUmVhc29uIGNvbnZlcnRUb0V4aXRGdWxsU2Ny
ZQogICAgIGVsc2UKICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgCi0gICAgX2Z1
bGxzY3JlZW5JbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuc2V0VmlkZW9MYXllckdy
YXZpdHkoZ3Jhdml0eSk7CisgICAgaWYgKGF1dG8qIG1vZGVsID0gX2Z1bGxzY3JlZW5JbnRlcmZh
Y2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgIG1vZGVsLT5zZXRWaWRlb0xheWVy
R3Jhdml0eShncmF2aXR5KTsKIH0KIAogLSAoTlNTdHJpbmcgKil2aWRlb0dyYXZpdHkKQEAgLTcy
MCwxNiArNzI1LDE1IEBAIE5TX0FTU1VNRV9OT05OVUxMX0VORAogfQogQGVuZAogCi1SZWY8Vmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ+IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0
OjpjcmVhdGUoUmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0PiYmIHBsYXliYWNrU2Vz
c2lvbkludGVyZmFjZSwgUmVmPFZpZGVvRnVsbHNjcmVlbk1vZGVsPiYmIHZpZGVvRnVsbHNjcmVl
bk1vZGVsKQorUmVmPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0PiBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0JiBw
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCiB7Ci0gICAgUmVmPFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0PiBpbnRlcmZhY2UgPSBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0KFdURk1vdmUocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKSwgV1RGTW92ZSh2aWRl
b0Z1bGxzY3JlZW5Nb2RlbCkpKTsKKyAgICBSZWY8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ+IGludGVyZmFjZSA9IGFkb3B0UmVmKCpuZXcgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKSk7CiAgICAgW2ludGVyZmFjZS0+bV9wbGF5ZXJW
aWV3Q29udHJvbGxlckRlbGVnYXRlIHNldEZ1bGxzY3JlZW5JbnRlcmZhY2U6aW50ZXJmYWNlLnB0
cigpXTsKICAgICByZXR1cm4gaW50ZXJmYWNlOwogfQogCi1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQoUmVmPFBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUFWS2l0PiYmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSwgUmVmPFZpZGVvRnVs
bHNjcmVlbk1vZGVsPiYmIHZpZGVvRnVsbHNjcmVlbk1vZGVsKQotICAgIDogbV9wbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2UoV1RGTW92ZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpKQotICAgICwg
bV92aWRlb0Z1bGxzY3JlZW5Nb2RlbChXVEZNb3ZlKHZpZGVvRnVsbHNjcmVlbk1vZGVsKSkKK1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktp
dChQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
KQorICAgIDogbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UocGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlKQogICAgICwgbV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVnYXRlKGFkb3B0TlMoW1tXZWJB
VlBsYXllclZpZXdDb250cm9sbGVyRGVsZWdhdGUgYWxsb2NdIGluaXRdKSkKICAgICAsIG1fd2F0
Y2hkb2dUaW1lcihSdW5Mb29wOjptYWluKCksIHRoaXMsICZWaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VBVktpdDo6d2F0Y2hkb2dUaW1lckZpcmVkKQogewpAQCAtNzQwLDcgKzc0NCw4IEBAIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp+VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQo
KQogICAgIFdlYkFWUGxheWVyQ29udHJvbGxlciogcGxheWVyQ29udHJvbGxlciA9IHRoaXMtPnBs
YXllckNvbnRyb2xsZXIoKTsKICAgICBpZiAocGxheWVyQ29udHJvbGxlciAmJiBwbGF5ZXJDb250
cm9sbGVyLmV4dGVybmFsUGxheWJhY2tBY3RpdmUpCiAgICAgICAgIGV4dGVybmFsUGxheWJhY2tD
aGFuZ2VkKGZhbHNlLCBQbGF5YmFja1Nlc3Npb25Nb2RlbDo6VGFyZ2V0VHlwZU5vbmUsICIiKTsK
LSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgaWYg
KG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwt
PnJlbW92ZUNsaWVudCgqdGhpcyk7CiB9CiAKIFdlYkFWUGxheWVyQ29udHJvbGxlciAqVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnBsYXllckNvbnRyb2xsZXIoKSBjb25zdApAQCAtNzQ4
LDcgKzc1MywyMSBAQCBXZWJBVlBsYXllckNvbnRyb2xsZXIgKlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjpwbGF5ZXJDb250cm9sbGVyKCkgY29uc3QKICAgICByZXR1cm4gbV9wbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2UtPnBsYXllckNvbnRyb2xsZXIoKTsKIH0KIAotdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIo
V2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcj4gb2JzZXJ2ZXIpCit2b2lkIFZp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRWaWRlb0Z1bGxzY3JlZW5Nb2RlbChWaWRl
b0Z1bGxzY3JlZW5Nb2RlbCogbW9kZWwpCit7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7
CisKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID0gbW9kZWw7CisKKyAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+YWRkQ2xp
ZW50KCp0aGlzKTsKKworICAgIGhhc1ZpZGVvQ2hhbmdlZChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
ID8gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+aGFzVmlkZW8oKSA6IGZhbHNlKTsKKyAgICB2aWRl
b0RpbWVuc2lvbnNDaGFuZ2VkKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPyBtX3ZpZGVvRnVsbHNj
cmVlbk1vZGVsLT52aWRlb0RpbWVuc2lvbnMoKSA6IEZsb2F0U2l6ZSgpKTsKK30KKwordm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6c2V0VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2Jz
ZXJ2ZXIoVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIqIG9ic2VydmVyKQogewogICAgIG1f
ZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyID0gb2JzZXJ2ZXI7CiB9CkBAIC03ODMsNiArODAyLDEz
OCBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwaWN0dXJlSW5QaWN0dXJl
V2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncgogICAgIHJldHVybiBbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciBwaWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmRd
OwogfQogCisjaWYgIUVOQUJMRShGVUxMU0NSRUVOX0FQSSkKKwordm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6YXBwbGljYXRpb25EaWRCZWNvbWVBY3RpdmUoKQoreworICAgIExP
RyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9u
RGlkQmVjb21lQWN0aXZlKCVwKSIsIHRoaXMpOworICAgIGlmIChtX3Nob3VsZFJldHVyblRvRnVs
bHNjcmVlbkFmdGVyRW50ZXJpbmdGb3JlZ3JvdW5kICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwg
JiYgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+aXNWaXNpYmxlKCkpIHsKKyAgICAgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgc3RvcFBpY3R1cmVJblBpY3R1cmVdOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgLy8gSWYgd2UgYXJlIGJvdGggaW4gUGlQIGFuZCBpbiBGdWxsc2NyZWVu
IChpLmUuLCB2aWEgYXV0by1QaVApLCBhbmQgd2UgZGlkIG5vdCBzdG9wIGZ1bGxzY3JlZW4gdXBv
biByZXR1cm5pbmcsIGl0IG11c3QgYmUKKyAgICAvLyBiZWNhdXNlIHRoZSBvcmlnaW5hdGluZyB2
aWV3IGlzIG5vdCB2aXNpYmxlLCBzbyBoaWRlIHRoZSBmdWxsc2NyZWVuIHdpbmRvdy4KKyAgICBp
ZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkgJiYgbV9jdXJyZW50TW9kZS5oYXNQaWN0
dXJlSW5QaWN0dXJlKCkpIHsKKyAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXdd
IGxheW91dElmTmVlZGVkXTsKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1
bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9uSGFuZGxlcjpbcHJvdGVjdGVkVGhpcyA9IG1h
a2VSZWZQdHIodGhpcyksIHRoaXNdIChCT09MIHN1Y2Nlc3MsIE5TRXJyb3IqIGVycm9yKSB7Cisg
ICAgICAgICAgICBpZiAoIXN1Y2Nlc3MpCisgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCIt
W0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9u
SGFuZGxlcjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlw
dGlvbl0gVVRGOFN0cmluZ10pOworCisgICAgICAgICAgICBbbV93aW5kb3cgc2V0SGlkZGVuOllF
U107CisgICAgICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVu
OllFU107CisgICAgICAgIH1dOworICAgIH0KK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VBVktpdDo6c2V0dXBGdWxsc2NyZWVuKFVJVmlldyYgdmlkZW9WaWV3LCBjb25zdCBJbnRS
ZWN0JiBpbml0aWFsUmVjdCwgVUlWaWV3KiBwYXJlbnRWaWV3LCBIVE1MTWVkaWFFbGVtZW50RW51
bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUgbW9kZSwgYm9vbCBhbGxvd3NQaWN0dXJlSW5QaWN0dXJl
UGxheWJhY2ssIGJvb2wgc3RhbmRieSkKK3sKKyAgICBBU1NFUlQobW9kZSAhPSBIVE1MTWVkaWFF
bGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICBMT0coRnVsbHNjcmVl
biwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXR1cEZ1bGxzY3JlZW4oJXApIiwg
dGhpcyk7CisKKyAgICBtX2FsbG93c1BpY3R1cmVJblBpY3R1cmVQbGF5YmFjayA9IGFsbG93c1Bp
Y3R1cmVJblBpY3R1cmVQbGF5YmFjazsKKyAgICBtX3ZpZGVvVmlldyA9ICZ2aWRlb1ZpZXc7Cisg
ICAgbV9wYXJlbnRWaWV3ID0gcGFyZW50VmlldzsKKyAgICBtX3BhcmVudFdpbmRvdyA9IHBhcmVu
dFZpZXcud2luZG93OworCisgICAgQVNTRVJUX1VOVVNFRChzdGFuZGJ5LCAhc3RhbmRieSk7Cisg
ICAgYm9vbCBpc0luUGljdHVyZUluUGljdHVyZU1vZGUgPSBtX2N1cnJlbnRNb2RlLmhhc1BpY3R1
cmVJblBpY3R1cmUoKTsKKyAgICBtX2N1cnJlbnRNb2RlID0gbW9kZTsKKyAgICBtX2lubGluZVJl
Y3QgPSBpbml0aWFsUmVjdDsKKworICAgIFtDQVRyYW5zYWN0aW9uIGJlZ2luXTsKKyAgICBbQ0FU
cmFuc2FjdGlvbiBzZXREaXNhYmxlQWN0aW9uczpZRVNdOworCisjaWYgIVBMQVRGT1JNKFdBVENI
T1MpCisgICAgaWYgKCFbW21fcGFyZW50VmlldyB3aW5kb3ddIF9pc0hvc3RlZEluQW5vdGhlclBy
b2Nlc3NdKSB7CisgICAgICAgIGlmICghbV93aW5kb3cpCisgICAgICAgICAgICBtX3dpbmRvdyA9
IGFkb3B0TlMoW2FsbG9jVUlXaW5kb3dJbnN0YW5jZSgpIGluaXRXaXRoRnJhbWU6W1tnZXRVSVNj
cmVlbkNsYXNzKCkgbWFpblNjcmVlbl0gYm91bmRzXV0pOworICAgICAgICBbbV93aW5kb3cgc2V0
QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKKyAgICAgICAgaWYgKCFtX3ZpZXdDb250
cm9sbGVyKQorICAgICAgICAgICAgbV92aWV3Q29udHJvbGxlciA9IGFkb3B0TlMoW2FsbG9jVUlW
aWV3Q29udHJvbGxlckluc3RhbmNlKCkgaW5pdF0pOworICAgICAgICBbW21fdmlld0NvbnRyb2xs
ZXIgdmlld10gc2V0RnJhbWU6W21fd2luZG93IGJvdW5kc11dOworICAgICAgICBbbV92aWV3Q29u
dHJvbGxlciBfc2V0SWdub3JlQXBwU3VwcG9ydGVkT3JpZW50YXRpb25zOllFU107CisgICAgICAg
IFttX3dpbmRvdyBzZXRSb290Vmlld0NvbnRyb2xsZXI6bV92aWV3Q29udHJvbGxlci5nZXQoKV07
CisgICAgICAgIFttX3dpbmRvdyBzZXRXaW5kb3dMZXZlbDpnZXRVSVRleHRFZmZlY3RzQmVuZWF0
aFN0YXR1c0JhcldpbmRvd0xldmVsKCkgKyAxXTsKKyAgICAgICAgW21fd2luZG93IG1ha2VLZXlB
bmRWaXNpYmxlXTsKKyAgICB9CisjZW5kaWYKKworICAgIGlmICghbV9wbGF5ZXJMYXllclZpZXcp
CisgICAgICAgIG1fcGxheWVyTGF5ZXJWaWV3ID0gYWRvcHROUyhbYWxsb2NXZWJBVlBsYXllckxh
eWVyVmlld0luc3RhbmNlKCkgaW5pdF0pOworICAgIFttX3BsYXllckxheWVyVmlldyBzZXRIaWRk
ZW46W3BsYXllckNvbnRyb2xsZXIoKSBpc0V4dGVybmFsUGxheWJhY2tBY3RpdmVdXTsKKyAgICBb
bV9wbGF5ZXJMYXllclZpZXcgc2V0QmFja2dyb3VuZENvbG9yOmNsZWFyVUlDb2xvcigpXTsKKwor
ICAgIGlmICghaXNJblBpY3R1cmVJblBpY3R1cmVNb2RlKSB7CisgICAgICAgIFttX3BsYXllckxh
eWVyVmlldyBzZXRWaWRlb1ZpZXc6bV92aWRlb1ZpZXcuZ2V0KCldOworICAgICAgICBbbV9wbGF5
ZXJMYXllclZpZXcgYWRkU3VidmlldzptX3ZpZGVvVmlldy5nZXQoKV07CisgICAgfQorCisgICAg
V2ViQVZQbGF5ZXJMYXllciAqcGxheWVyTGF5ZXIgPSAoV2ViQVZQbGF5ZXJMYXllciAqKVttX3Bs
YXllckxheWVyVmlldyBwbGF5ZXJMYXllcl07CisgICAgW3BsYXllckxheWVyIHNldE1vZGVsVmlk
ZW9MYXllckZyYW1lOkNHUmVjdE1ha2UoMCwgMCwgbV9pbmxpbmVSZWN0LndpZHRoKCksIG1faW5s
aW5lUmVjdC5oZWlnaHQoKSldOworICAgIFtwbGF5ZXJMYXllciBzZXRWaWRlb0RpbWVuc2lvbnM6
W3BsYXllckNvbnRyb2xsZXIoKSBjb250ZW50RGltZW5zaW9uc11dOworICAgIHBsYXllckxheWVy
LmZ1bGxzY3JlZW5JbnRlcmZhY2UgPSB0aGlzOworCisgICAgaWYgKCFtX3BsYXllclZpZXdDb250
cm9sbGVyKQorICAgICAgICBtX3BsYXllclZpZXdDb250cm9sbGVyID0gYWRvcHROUyhbW1dlYkFW
UGxheWVyVmlld0NvbnRyb2xsZXIgYWxsb2NdIGluaXRXaXRoRnVsbHNjcmVlbkludGVyZmFjZTp0
aGlzXSk7CisKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29u
dHJvbHM6Tk9dOworICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xs
ZXI6KEFWUGxheWVyQ29udHJvbGxlciAqKXBsYXllckNvbnRyb2xsZXIoKV07CisgICAgW21fcGxh
eWVyVmlld0NvbnRyb2xsZXIgc2V0RGVsZWdhdGU6bV9wbGF5ZXJWaWV3Q29udHJvbGxlckRlbGVn
YXRlLmdldCgpXTsKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRBbGxvd3NQaWN0dXJl
SW5QaWN0dXJlUGxheWJhY2s6bV9hbGxvd3NQaWN0dXJlSW5QaWN0dXJlUGxheWJhY2tdOworICAg
IFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUluUGljdHVyZVBvc3NpYmxlOm1fYWxsb3dz
UGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKKworI2lmIFBMQVRGT1JNKFdBVENIT1MpCisgICAg
bV92aWV3Q29udHJvbGxlciA9IHZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPmNyZWF0ZVZpZGVvRnVs
bHNjcmVlblZpZXdDb250cm9sbGVyKG1fcGxheWVyVmlld0NvbnRyb2xsZXIuZ2V0KCkuYXZQbGF5
ZXJWaWV3Q29udHJvbGxlcik7CisjZW5kaWYKKworICAgIGlmIChtX3ZpZXdDb250cm9sbGVyKSB7
CisgICAgICAgIFttX3ZpZXdDb250cm9sbGVyIGFkZENoaWxkVmlld0NvbnRyb2xsZXI6bV9wbGF5
ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyXTsKKyAgICAgICAg
W1ttX3ZpZXdDb250cm9sbGVyIHZpZXddIGFkZFN1YnZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgdmlld11dOworICAgIH0gZWxzZQorICAgICAgICBbbV9wYXJlbnRWaWV3IGFkZFN1YnZpZXc6
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld11dOworCisgICAgW21fcGxheWVyVmlld0NvbnRy
b2xsZXIgdmlld10uZnJhbWUgPSBbbV9wYXJlbnRWaWV3IGNvbnZlcnRSZWN0Om1faW5saW5lUmVj
dCB0b1ZpZXc6W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10uc3VwZXJ2aWV3XTsKKyAgICBb
W21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QmFja2dyb3VuZENvbG9yOmNsZWFyVUlD
b2xvcigpXTsKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0QXV0b3Jlc2l6
aW5nTWFzazooVUlWaWV3QXV0b3Jlc2l6aW5nRmxleGlibGVCb3R0b21NYXJnaW4gfCBVSVZpZXdB
dXRvcmVzaXppbmdGbGV4aWJsZVJpZ2h0TWFyZ2luKV07CisKKyAgICBbW21fcGxheWVyVmlld0Nv
bnRyb2xsZXIgdmlld10gc2V0TmVlZHNMYXlvdXRdOworICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJv
bGxlciB2aWV3XSBsYXlvdXRJZk5lZWRlZF07CisKKyAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OworCisgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3Rl
Y3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlzXSB7CisgICAgICAgIGlmIChtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyLT5kaWRTZXR1cEZ1bGxzY3JlZW4oKTsKKyAgICB9KTsKK30KKwordm9pZCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuKCkKK3sKKyAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlckZ1bGxzY3JlZW4oJXAp
ICVkIiwgdGhpcywgbW9kZSgpKTsKKworICAgIG1fZXhpdENvbXBsZXRlZCA9IGZhbHNlOworICAg
IG1fZXhpdFJlcXVlc3RlZCA9IGZhbHNlOworICAgIG1fZW50ZXJSZXF1ZXN0ZWQgPSB0cnVlOwor
CisgICAgaWYgKG1fY3VycmVudE1vZGUuaXNQaWN0dXJlSW5QaWN0dXJlKCkpCisgICAgICAgIGVu
dGVyUGljdHVyZUluUGljdHVyZSgpOworICAgIGVsc2UgaWYgKG1fY3VycmVudE1vZGUuaXNGdWxs
c2NyZWVuKCkpCisgICAgICAgIGVudGVyRnVsbHNjcmVlblN0YW5kYXJkKCk7CisgICAgZWxzZQor
ICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VBVktpdDo6ZW50ZXJQaWN0dXJlSW5QaWN0dXJlKCkKK3sKKyAgICBMT0coRnVsbHNj
cmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjplbnRlclBpY3R1cmVJblBpY3R1
cmUoJXApIiwgdGhpcyk7CisgICAgCisgICAgaWYgKFttX3BsYXllclZpZXdDb250cm9sbGVyIGlz
UGljdHVyZUluUGljdHVyZVBvc3NpYmxlXSkKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xs
ZXIgc3RhcnRQaWN0dXJlSW5QaWN0dXJlXTsKKyAgICBlbHNlCisgICAgICAgIGZhaWxlZFRvU3Rh
cnRQaWN0dXJlSW5QaWN0dXJlKCk7Cit9CisKIHN0YXRpYyBVSVZpZXdDb250cm9sbGVyICpmYWxs
YmFja1ZpZXdDb250cm9sbGVyKFVJVmlldyAqdmlldykKIHsKICAgICBmb3IgKFVJVmlldyAqY3Vy
cmVudFZpZXcgPSB2aWV3OyBjdXJyZW50VmlldzsgY3VycmVudFZpZXcgPSBjdXJyZW50Vmlldy5z
dXBlcnZpZXcpIHsKQEAgLTc5OCwxMyArOTQ5LDM1NyBAQCBzdGF0aWMgVUlWaWV3Q29udHJvbGxl
ciAqZmFsbGJhY2tWaWV3Q29udHJvbGxlcihVSVZpZXcgKnZpZXcpCiAKIFVJVmlld0NvbnRyb2xs
ZXIgKlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVzZW50aW5nVmlld0NvbnRyb2xs
ZXIoKQogewotICAgIGF1dG8gKmNvbnRyb2xsZXIgPSB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnBy
ZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpOworICAgIGF1dG8gKmNvbnRyb2xsZXIgPSB2aWRlb0Z1
bGxzY3JlZW5Nb2RlbCgpLT5wcmVzZW50aW5nVmlld0NvbnRyb2xsZXIoKTsKICAgICBpZiAoIWNv
bnRyb2xsZXIpCiAgICAgICAgIGNvbnRyb2xsZXIgPSBmYWxsYmFja1ZpZXdDb250cm9sbGVyKG1f
cGFyZW50Vmlldy5nZXQoKSk7CiAKICAgICByZXR1cm4gY29udHJvbGxlcjsKIH0KIAordm9pZCBW
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQoKQor
eworICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmVu
dGVyRnVsbHNjcmVlblN0YW5kYXJkKCVwKSIsIHRoaXMpOworCisgICAgaWYgKFttX3BsYXllclZp
ZXdDb250cm9sbGVyIGlzUGljdHVyZUluUGljdHVyZUFjdGl2ZV0pIHsKKyAgICAgICAgLy8gTk9U
RTogVGhlIGZ1bGxzY3JlZW4gbW9kZSB3aWxsIGJlIHJlc3RvcmVkIGluIHByZXBhcmVGb3JQaWN0
dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0aW9uSGFuZGxlcigpLgorICAgICAgICBtX3Nob3Vs
ZFJldHVyblRvRnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCA9IHRydWU7CisgICAgICAgIFttX3Bs
YXllclZpZXdDb250cm9sbGVyIHN0b3BQaWN0dXJlSW5QaWN0dXJlXTsKKyAgICAgICAgcmV0dXJu
OworICAgIH0KKworICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBsYXlvdXRJZk5l
ZWRlZF07CisgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxsU2NyZWVuQW5pbWF0
ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOlt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0
cih0aGlzKV0gKEJPT0wgc3VjY2VlZGVkLCBOU0Vycm9yKiBlcnJvcikgeworICAgICAgICBpZiAo
IXN1Y2NlZWRlZCkKKyAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250
cm9sbGVyIGVudGVyRnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5kbGVyOl0gZmFpbGVk
IHdpdGggZXJyb3IgJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4U3RyaW5n
XSk7CisKKyAgICAgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6ZW50ZXJGdWxsc2NyZWVuU3RhbmRhcmQgLSBsYW1iZGEoJXApIC0gc3VjY2VlZGVkKCVz
KSIsIHRoaXMsIGJvb2xTdHJpbmcoc3VjY2VlZGVkKSk7CisgICAgICAgIFttX3BsYXllclZpZXdD
b250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpZRVNdOworCisgICAgICAgIGlmICht
X2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyLT5kaWRFbnRlckZ1bGxzY3JlZW4oKTsKKyAgICB9XTsKK30KKwordm9pZCBWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZXhpdEZ1bGxzY3JlZW4oY29uc3QgSW50UmVjdCYg
ZmluYWxSZWN0KQoreworICAgIG1fd2F0Y2hkb2dUaW1lci5zdG9wKCk7CisKKyAgICBtX2V4aXRS
ZXF1ZXN0ZWQgPSB0cnVlOworICAgIGlmIChtX2V4aXRDb21wbGV0ZWQpIHsKKyAgICAgICAgaWYg
KG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQorICAgICAgICAgICAgbV9mdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9
CisKKyAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpl
eGl0RnVsbHNjcmVlbiglcCkiLCB0aGlzKTsKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBz
ZXRTaG93c1BsYXliYWNrQ29udHJvbHM6Tk9dOworICAgIAorICAgIFttX3BsYXllclZpZXdDb250
cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0UmVjdDpmaW5hbFJlY3Qg
dG9WaWV3OlttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLnN1cGVydmlld107CisKKyAgICBX
ZWJBVlBsYXllckxheWVyICpwbGF5ZXJMYXllciA9IChXZWJBVlBsYXllckxheWVyICopW21fcGxh
eWVyTGF5ZXJWaWV3IHBsYXllckxheWVyXTsKKyAgICBpZiAoW3BsYXllckxheWVyIHZpZGVvR3Jh
dml0eV0gIT0gZ2V0QVZMYXllclZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCgpKQorICAgICAgICBb
cGxheWVyTGF5ZXIgc2V0VmlkZW9HcmF2aXR5OmdldEFWTGF5ZXJWaWRlb0dyYXZpdHlSZXNpemVB
c3BlY3QoKV07CisKKyAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZO
ZWVkZWRdOworICAgIGlmIChtX2N1cnJlbnRNb2RlLmlzUGljdHVyZUluUGljdHVyZSgpKSB7Cisg
ICAgICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hlblN0b3BwaW5nUGlQID0gZmFsc2U7
CisgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46Tk9dOworICAgICAgICBbbV9wbGF5ZXJWaWV3
Q29udHJvbGxlciBzdG9wUGljdHVyZUluUGljdHVyZV07CisgICAgfSBlbHNlIGlmIChtX2N1cnJl
bnRNb2RlLmhhc1BpY3R1cmVJblBpY3R1cmUoKSAmJiBtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3Jl
ZW4oKSkgeworICAgICAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFu
aW1hdGVkOk5PIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0
aGlzKSwgdGhpc10gKEJPT0wgc3VjY2VzcywgTlNFcnJvciogZXJyb3IpIHsKKyAgICAgICAgICAg
IGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICBXVEZMb2dBbHdheXMoIi1bQVZQbGF5ZXJW
aWV3Q29udHJvbGxlciBleGl0RnVsbFNjcmVlbkFuaW1hdGVkOmNvbXBsZXRpb25IYW5kbGVyOl0g
ZmFpbGVkIHdpdGggZXJyb3IgJXMiLCBbW2Vycm9yIGxvY2FsaXplZERlc2NyaXB0aW9uXSBVVEY4
U3RyaW5nXSk7CisKKyAgICAgICAgICAgIGNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6
OlZpZGVvRnVsbHNjcmVlbk1vZGVTdGFuZGFyZCk7CisgICAgICAgICAgICBbbV93aW5kb3cgc2V0
SGlkZGVuOk5PXTsKKyAgICAgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHN0b3BQaWN0
dXJlSW5QaWN0dXJlXTsKKyAgICAgICAgfV07CisgICAgfSBlbHNlIGlmIChtX2N1cnJlbnRNb2Rl
LmlzRnVsbHNjcmVlbigpKSB7CisgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGV4aXRG
dWxsU2NyZWVuQW5pbWF0ZWQ6WUVTIGNvbXBsZXRpb25IYW5kbGVyOltwcm90ZWN0ZWRUaGlzID0g
bWFrZVJlZlB0cih0aGlzKSwgdGhpc10gKEJPT0wgc3VjY2VzcywgTlNFcnJvciogZXJyb3IpIG11
dGFibGUgeworICAgICAgICAgICAgaWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgICAgIFdURkxv
Z0Fsd2F5cygiLVtBVlBsYXllclZpZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6
Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0aCBlcnJvciAlcyIsIFtbZXJyb3IgbG9jYWxp
emVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgICAgICAgICAgbV9leGl0Q29tcGxl
dGVkID0gdHJ1ZTsKKworICAgICAgICAgICAgW0NBVHJhbnNhY3Rpb24gYmVnaW5dOworICAgICAg
ICAgICAgW0NBVHJhbnNhY3Rpb24gc2V0RGlzYWJsZUFjdGlvbnM6WUVTXTsKKyAgICAgICAgICAg
IFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwor
ICAgICAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRD
b2xvcjpjbGVhclVJQ29sb3IoKV07CisgICAgICAgICAgICBbQ0FUcmFuc2FjdGlvbiBjb21taXRd
OworCisgICAgICAgICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFpbl9xdWV1ZSgp
LCBbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIHRoaXNdKCkgeworICAg
ICAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAgICAg
ICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEV4aXRGdWxsc2NyZWVuKCk7
CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfV07CisgICAgfTsKK30KKwordm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y2xlYW51cEZ1bGxzY3JlZW4oKQoreworICAgIExPRyhG
dWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFudXBGdWxsc2Ny
ZWVuKCVwKSIsIHRoaXMpOworCisgICAgaWYgKG1fd2luZG93KSB7CisgICAgICAgIFttX3dpbmRv
dyBzZXRIaWRkZW46WUVTXTsKKyAgICAgICAgW21fd2luZG93IHNldFJvb3RWaWV3Q29udHJvbGxl
cjpuaWxdOworICAgIH0KKyAgICAKKyAgICBbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXREZWxl
Z2F0ZTpuaWxdOworICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFBsYXllckNvbnRyb2xs
ZXI6bmlsXTsKKyAgICAKKyAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNQaWN0dXJlSW5QaWN0dXJl
KCkpCisgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHN0b3BQaWN0dXJlSW5QaWN0dXJl
XTsKKyAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkpIHsKKyAgICAgICAgW1tt
X3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIGxheW91dElmTmVlZGVkXTsKKyAgICAgICAgW21f
cGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpOTyBjb21wbGV0aW9u
SGFuZGxlcjpbXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yKiBlcnJvcikgeworICAgICAgICAgICAg
aWYgKCFzdWNjZXNzKQorICAgICAgICAgICAgICAgIFdURkxvZ0Fsd2F5cygiLVtBVlBsYXllclZp
ZXdDb250cm9sbGVyIGV4aXRGdWxsU2NyZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSBm
YWlsZWQgd2l0aCBlcnJvciAlcyIsIFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhT
dHJpbmddKTsKKyAgICAgICAgfV07CisgICAgfQorICAgIAorICAgIFtbbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciB2aWV3XSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKKyAgICBpZiAobV92aWV3Q29udHJv
bGxlcikKKyAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgcmVtb3ZlRnJvbVBhcmVudFZp
ZXdDb250cm9sbGVyXTsKKyAgICAKKyAgICBbbV9wbGF5ZXJMYXllclZpZXcgcmVtb3ZlRnJvbVN1
cGVydmlld107CisgICAgW1ttX3ZpZXdDb250cm9sbGVyIHZpZXddIHJlbW92ZUZyb21TdXBlcnZp
ZXddOworCisgICAgbV9wbGF5ZXJMYXllclZpZXcgPSBuaWw7CisgICAgbV9wbGF5ZXJWaWV3Q29u
dHJvbGxlciA9IG5pbDsKKyAgICBtX3dpbmRvdyA9IG5pbDsKKyAgICBtX3ZpZGVvVmlldyA9IG5p
bDsKKyAgICBtX3BhcmVudFZpZXcgPSBuaWw7CisgICAgbV9wYXJlbnRXaW5kb3cgPSBuaWw7Cisg
ICAgCisgICAgaWYgKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKQorICAgICAgICBtX2Z1bGxz
Y3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKTsKKworICAgIG1fZW50
ZXJSZXF1ZXN0ZWQgPSBmYWxzZTsKK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6aW52YWxpZGF0ZSgpCit7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCA9IG5pbDsK
KyAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciA9IG5pbDsKKyAgICAKKyAgICBjbGVhbnVw
RnVsbHNjcmVlbigpOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojpy
ZXF1ZXN0SGlkZUFuZEV4aXRGdWxsc2NyZWVuKCkKK3sKKyAgICBpZiAoIW1fZW50ZXJSZXF1ZXN0
ZWQpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAobV9jdXJyZW50TW9kZS5oYXNQaWN0
dXJlSW5QaWN0dXJlKCkpCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBMT0coRnVsbHNjcmVl
biwgIlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpyZXF1ZXN0SGlkZUFuZEV4aXRGdWxs
c2NyZWVuKCVwKSIsIHRoaXMpOworCisgICAgW21fd2luZG93IHNldEhpZGRlbjpZRVNdOworICAg
IFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKKworICAgIGlm
IChwbGF5YmFja1Nlc3Npb25Nb2RlbCgpICYmIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgJiYgIW1f
ZXhpdFJlcXVlc3RlZCkgeworICAgICAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5wYXVzZSgp
OworICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUo
SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSk7CisgICAgfQor
fQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJu
VG9JbmxpbmUoYm9vbCB2aXNpYmxlLCBjb25zdCBJbnRSZWN0JiBpbmxpbmVSZWN0KQoreworICAg
IExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVk
VG9SZXR1cm5Ub0lubGluZSglcCkgLSB2aXNpYmxlKCVzKSIsIHRoaXMsIGJvb2xTdHJpbmcodmlz
aWJsZSkpOworICAgIGlmIChtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrKSB7CisgICAgICAgIFtt
X3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddLmZyYW1lID0gW21fcGFyZW50VmlldyBjb252ZXJ0
UmVjdDppbmxpbmVSZWN0IHRvVmlldzpbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XS5zdXBl
cnZpZXddOworICAgICAgICBXVEY6OkZ1bmN0aW9uPHZvaWQoYm9vbCk+IGNhbGxiYWNrID0gV1RG
TW92ZShtX3ByZXBhcmVUb0lubGluZUNhbGxiYWNrKTsKKyAgICAgICAgY2FsbGJhY2sodmlzaWJs
ZSk7CisgICAgfQorfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVw
YXJlZFRvRXhpdEZ1bGxzY3JlZW4oKQoreworICAgIGlmICghbV93YWl0aW5nRm9yUHJlcGFyZWRU
b0V4aXQpCisgICAgICAgIHJldHVybjsKKworICAgIG1fd2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0
ID0gZmFsc2U7CisgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5N
b2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUsIHRydWUp
OworfQorCitib29sIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjptYXlBdXRvbWF0aWNh
bGx5U2hvd1ZpZGVvUGljdHVyZUluUGljdHVyZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIFtwbGF5
ZXJDb250cm9sbGVyKCkgaXNQbGF5aW5nXSAmJiBtX2N1cnJlbnRNb2RlLmlzRnVsbHNjcmVlbigp
ICYmIHN1cHBvcnRzUGljdHVyZUluUGljdHVyZSgpOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpmdWxsc2NyZWVuTWF5UmV0dXJuVG9JbmxpbmUoV1RGOjpGdW5jdGlv
bjx2b2lkKGJvb2wpPiYmIGNhbGxiYWNrKQoreworICAgIG1fcHJlcGFyZVRvSW5saW5lQ2FsbGJh
Y2sgPSBXVEZNb3ZlKGNhbGxiYWNrKTsKKyAgICBpZiAobV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIpCisgICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyLT5mdWxsc2NyZWVuTWF5UmV0
dXJuVG9JbmxpbmUoKTsKK30KKwordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6
d2lsbFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCit7CisgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6d2lsbFN0YXJ0UGljdHVyZUluUGljdHVyZSglcCki
LCB0aGlzKTsKKyAgICBzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
KQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT53aWxsRW50ZXJQaWN0dXJlSW5QaWN0
dXJlKCk7Cit9CisKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0
UGljdHVyZUluUGljdHVyZSgpCit7CisgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwor
ICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuQWZ0ZXJFbnRlcmluZ0ZvcmVncm91bmQgPSBw
aWN0dXJlSW5QaWN0dXJlV2FzU3RhcnRlZFdoZW5FbnRlcmluZ0JhY2tncm91bmQoKTsKKyAgICBb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsKKwor
ICAgIGlmIChtX2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKSkgeworICAgICAgICBpZiAoIXBp
Y3R1cmVJblBpY3R1cmVXYXNTdGFydGVkV2hlbkVudGVyaW5nQmFja2dyb3VuZCgpKSB7CisgICAg
ICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gbGF5b3V0SWZOZWVkZWRdOwor
ICAgICAgICAgICAgW21fcGxheWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRl
ZDpZRVMgY29tcGxldGlvbkhhbmRsZXI6W3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMp
LCB0aGlzXSAoQk9PTCBzdWNjZXNzLCBOU0Vycm9yKiBlcnJvcikgeworICAgICAgICAgICAgICAg
IGlmICghc3VjY2VzcykKKyAgICAgICAgICAgICAgICAgICAgV1RGTG9nQWx3YXlzKCItW0FWUGxh
eWVyVmlld0NvbnRyb2xsZXIgZXhpdEZ1bGxTY3JlZW5BbmltYXRlZDpjb21wbGV0aW9uSGFuZGxl
cjpdIGZhaWxlZCB3aXRoIGVycm9yICVzIiwgW1tlcnJvciBsb2NhbGl6ZWREZXNjcmlwdGlvbl0g
VVRGOFN0cmluZ10pOworICAgICAgICAgICAgICAgIFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsK
KyAgICAgICAgICAgICAgICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVu
OllFU107CisgICAgICAgICAgICB9XTsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICAg
IFttX3dpbmRvdyBzZXRIaWRkZW46WUVTXTsKKyAgICAgICAgW1ttX3BsYXllclZpZXdDb250cm9s
bGVyIHZpZXddIHNldEhpZGRlbjpZRVNdOworICAgIH0KKworICAgIGlmIChtX2Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlcikKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZEVu
dGVyRnVsbHNjcmVlbigpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAg
ICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKK30K
Kwordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1
cmVJblBpY3R1cmUoKQoreworICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlQVZLaXQ6OmZhaWxlZFRvU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCVwKSIsIHRoaXMpOwor
ICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIHNldFNob3dzUGxheWJhY2tDb250cm9sczpZRVNd
OworCisgICAgaWYgKG1fY3VycmVudE1vZGUuaGFzRnVsbHNjcmVlbigpKQorICAgICAgICByZXR1
cm47CisKKyAgICBtX2V4aXRDb21wbGV0ZWQgPSB0cnVlOworCisgICAgaWYgKG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKQorICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlk
RW50ZXJGdWxsc2NyZWVuKCk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAg
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJl
KCk7CisKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1
bGxzY3JlZW5Nb2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUpOworfQorCit2b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0Ojp3aWxsU3RvcFBpY3R1cmVJblBpY3R1cmUoKQoreworICAgIExPRyhGdWxs
c2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxTdG9wUGljdHVyZUlu
UGljdHVyZSglcCkiLCB0aGlzKTsKKworICAgIG1fc2hvdWxkUmV0dXJuVG9GdWxsc2NyZWVuV2hl
blN0b3BwaW5nUGlQID0gZmFsc2U7CisgICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5BZnRl
ckVudGVyaW5nRm9yZWdyb3VuZCA9IGZhbHNlOworCisgICAgaWYgKG1fY3VycmVudE1vZGUuaGFz
RnVsbHNjcmVlbigpIHx8IG1fcmVzdG9yaW5nRnVsbHNjcmVlbkZvclBpY3R1cmVJblBpY3R1cmVT
dG9wKQorICAgICAgICByZXR1cm47CisKKyAgICBbbV93aW5kb3cgc2V0SGlkZGVuOk5PXTsKKyAg
ICBbW21fcGxheWVyVmlld0NvbnRyb2xsZXIgdmlld10gc2V0SGlkZGVuOk5PXTsKKworICAgIGlm
IChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
LT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlTm9uZSk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAg
IG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpOworfQor
Cit2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGlj
dHVyZSgpCit7CisgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6ZGlkU3RvcFBpY3R1cmVJblBpY3R1cmUoJXApIiwgdGhpcyk7CisKKyAgICBpZiAobV9j
dXJyZW50TW9kZS5oYXNGdWxsc2NyZWVuKCkgfHwgbV9yZXN0b3JpbmdGdWxsc2NyZWVuRm9yUGlj
dHVyZUluUGljdHVyZVN0b3ApIHsKKyAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworICAgICAgICBbbV9w
bGF5ZXJWaWV3Q29udHJvbGxlciBzZXRTaG93c1BsYXliYWNrQ29udHJvbHM6WUVTXTsKKworICAg
ICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9leGl0Q29tcGxldGVkID0gdHJ1ZTsKKworICAg
IFttX3BsYXllckxheWVyVmlldyBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xlYXJVSUNvbG9yKCldOwor
ICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2xl
YXJVSUNvbG9yKCldOworCisgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6Vmlk
ZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOworCisgICAgaWYgKG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKQorICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlk
RXhpdEZ1bGxzY3JlZW4oKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAg
ICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKK30K
Kwordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJ
blBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb25IYW5kbGVyKHZvaWQgKF5jb21wbGV0aW9uSGFuZGxl
cikoQk9PTCByZXN0b3JlZCkpCit7CisgICAgTE9HKEZ1bGxzY3JlZW4sICJWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFyZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBs
ZXRpb25IYW5kbGVyKCVwKSIsIHRoaXMpOworICAgIGlmIChtX3Nob3VsZFJldHVyblRvRnVsbHNj
cmVlbldoZW5TdG9wcGluZ1BpUCB8fCBtX3Nob3VsZFJldHVyblRvRnVsbHNjcmVlbkFmdGVyRW50
ZXJpbmdGb3JlZ3JvdW5kKSB7CisKKyAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5B
ZnRlckVudGVyaW5nRm9yZWdyb3VuZCA9IGZhbHNlOworICAgICAgICBtX3Nob3VsZFJldHVyblRv
RnVsbHNjcmVlbldoZW5TdG9wcGluZ1BpUCA9IGZhbHNlOworICAgICAgICBtX3Jlc3RvcmluZ0Z1
bGxzY3JlZW5Gb3JQaWN0dXJlSW5QaWN0dXJlU3RvcCA9IHRydWU7CisKKyAgICAgICAgW21fd2lu
ZG93IHNldEhpZGRlbjpOT107CisgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3
XSBzZXRIaWRkZW46Tk9dOworCisgICAgICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3
XSBsYXlvdXRJZk5lZWRlZF07CisgICAgICAgIFttX3BsYXllclZpZXdDb250cm9sbGVyIGVudGVy
RnVsbFNjcmVlbkFuaW1hdGVkOllFUyBjb21wbGV0aW9uSGFuZGxlcjpeKEJPT0wgc3VjY2VlZGVk
LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgaWYgKCFzdWNjZWVkZWQpCisgICAgICAg
ICAgICAgICAgV1RGTG9nQWx3YXlzKCItW0FWUGxheWVyVmlld0NvbnRyb2xsZXIgZW50ZXJGdWxs
U2NyZWVuQW5pbWF0ZWQ6Y29tcGxldGlvbkhhbmRsZXI6XSBmYWlsZWQgd2l0aCBlcnJvciAlcyIs
IFtbZXJyb3IgbG9jYWxpemVkRGVzY3JpcHRpb25dIFVURjhTdHJpbmddKTsKKworICAgICAgICAg
ICAgbV9yZXN0b3JpbmdGdWxsc2NyZWVuRm9yUGljdHVyZUluUGljdHVyZVN0b3AgPSBmYWxzZTsK
KyAgICAgICAgICAgIHNldE1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlU3RhbmRhcmQpOworICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoc3VjY2VlZGVk
KTsKKyAgICAgICAgICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikKKyAgICAgICAg
ICAgICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlci0+ZGlkRW50ZXJGdWxsc2NyZWVuKCk7
CisgICAgICAgIH1dOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgZnVsbHNjcmVlbk1h
eVJldHVyblRvSW5saW5lKFtwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZlB0cih0aGlzKSwgc3Ryb25n
Q29tcGxldGlvbkhhbmRsZXIgPSBhZG9wdE5TKFtjb21wbGV0aW9uSGFuZGxlciBjb3B5XSldKGJv
b2wgcmVzdG9yZWQpICB7CisgICAgICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVGb3JQaWN0dXJlSW5QaWN0dXJlU3RvcFdpdGhDb21wbGV0
aW9uSGFuZGxlciBsYW1iZGEoJXApIC0gcmVzdG9yZWQoJXMpIiwgcHJvdGVjdGVkVGhpcy5nZXQo
KSwgYm9vbFN0cmluZyhyZXN0b3JlZCkpOworICAgICAgICAoKHZvaWQgKF4pKEJPT0wpKXN0cm9u
Z0NvbXBsZXRpb25IYW5kbGVyLmdldCgpKShyZXN0b3JlZCk7CisgICAgfSk7Cit9CisKK2Jvb2wg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnNob3VsZEV4aXRGdWxsc2NyZWVuV2l0aFJl
YXNvbihWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6RXhpdEZ1bGxTY3JlZW5SZWFzb24g
cmVhc29uKQoreworICAgIGlmICghbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgcmV0
dXJuIHRydWU7CisKKyAgICBpZiAocmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpQaWN0
dXJlSW5QaWN0dXJlU3RhcnRlZCkgeworICAgICAgICBpZiAocGljdHVyZUluUGljdHVyZVdhc1N0
YXJ0ZWRXaGVuRW50ZXJpbmdCYWNrZ3JvdW5kKCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICAgICAgbV9zaG91bGRSZXR1cm5Ub0Z1bGxzY3JlZW5XaGVuU3RvcHBpbmdQaVAgPSBt
X2N1cnJlbnRNb2RlLmhhc0Z1bGxzY3JlZW4oKTsKKyAgICAgICAgY2xlYXJNb2RlKEhUTUxNZWRp
YUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZVN0YW5kYXJkKTsKKyAgICAgICAgcmV0
dXJuIHRydWU7CisgICAgfQorCisgICAgaWYgKHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgJiYgKHJl
YXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBlZCB8fCByZWFzb24g
PT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlJlbW90ZUNvbnRyb2xTdG9wRXZlbnRSZWNlaXZlZCkp
CisgICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7CisKKyAgICBpZiAoIW1f
d2F0Y2hkb2dUaW1lci5pc0FjdGl2ZSgpICYmICFpZ25vcmVXYXRjaGRvZ0ZvckRlYnVnZ2luZykK
KyAgICAgICAgbV93YXRjaGRvZ1RpbWVyLnN0YXJ0T25lU2hvdChkZWZhdWx0V2F0Y2hkb2dUaW1l
ckludGVydmFsKTsKKworI2lmIFBMQVRGT1JNKFdBVENIT1MpCisgICAgaWYgKG1fZnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKSB7CisgICAgICAgIG1fd2FpdGluZ0ZvclByZXBhcmVkVG9FeGl0ID0g
dHJ1ZTsKKyAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPndpbGxFeGl0RnVsbHNj
cmVlbigpOworICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorI2VuZGlmCisKKyAgICBCT09M
IGZpbmlzaGVkID0gcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpEb25lQnV0dG9uVGFw
cGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6UGluY2hHZXN0dXJlSGFuZGxl
ZDsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRN
TE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmluaXNoZWQpOwor
CisgICAgcmV0dXJuIGZhbHNlOworfQorCisjZWxzZSAvLyBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CisKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmFwcGxpY2F0aW9uRGlkQmVj
b21lQWN0aXZlKCkKIHsKICAgICBMT0coRnVsbHNjcmVlbiwgIlZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0OjphcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSglcCkiLCB0aGlzKTsKQEAgLTg5
MCw2ICsxMzg1LDE0IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmNsZWFu
dXBGdWxsc2NyZWVuKCkKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRpZENs
ZWFudXBGdWxsc2NyZWVuKCk7CiB9CiAKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZL
aXQ6OmludmFsaWRhdGUoKQoreworICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBuaWw7Cisg
ICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgPSBuaWw7CisgICAgCisgICAgY2xlYW51cEZ1
bGxzY3JlZW4oKTsKK30KKwogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cmVx
dWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpCiB7CiAgICAgaWYgKG1fY3VycmVudE1vZGUuaGFz
UGljdHVyZUluUGljdHVyZSgpKQpAQCAtOTAwLDggKzE0MDMsMTAgQEAgdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6cmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVlbigpCiAgICAg
W21fd2luZG93IHNldEhpZGRlbjpZRVNdOwogICAgIFtbbV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2
aWV3XSBzZXRIaWRkZW46WUVTXTsKIAotICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucGF1c2Uo
KTsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1M
TWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICBpZiAocGxh
eWJhY2tTZXNzaW9uTW9kZWwoKSAmJiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKSB7CisgICAgICAg
IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7CisgICAgICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAgICB9CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlQVZLaXQ6OnByZXBhcmVkVG9SZXR1cm5Ub0lubGluZShib29sIHZpc2libGUsIGNv
bnN0IEludFJlY3QmIGlubGluZVJlY3QpCkBAIC05MTYsMTMgKzE0MjEsNiBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVwYXJlZFRvUmV0dXJuVG9JbmxpbmUoYm9vbCB2
aXNpYmxlLCBjb25zdAogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpwcmVw
YXJlZFRvRXhpdEZ1bGxzY3JlZW4oKQogewotI2lmIFBMQVRGT1JNKFdBVENIT1MpCi0gICAgaWYg
KCFtX3dhaXRpbmdGb3JQcmVwYXJlZFRvRXhpdCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgbV93
YWl0aW5nRm9yUHJlcGFyZWRUb0V4aXQgPSBmYWxzZTsKLSAgICBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLT5yZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzY3JlZW5Nb2RlTm9uZSwgdHJ1ZSk7Ci0jZW5kaWYKIH0KIAogYm9vbCBWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VBVktpdDo6bWF5QXV0b21hdGljYWxseVNob3dWaWRlb1BpY3R1cmVJblBpY3R1
cmUoKSBjb25zdApAQCAtOTQ3LDcgKzE0NDUsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUFWS2l0Ojp3aWxsU3RhcnRQaWN0dXJlSW5QaWN0dXJlKCkKIAogICAgIGlmICghbV9oYXNW
aWRlb0NvbnRlbnRMYXllcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPnJl
cXVlc3RWaWRlb0NvbnRlbnRMYXllcigpOwotICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkud2ls
bEVudGVyUGljdHVyZUluUGljdHVyZSgpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVs
KQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT53aWxsRW50ZXJQaWN0dXJlSW5QaWN0
dXJlKCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0
UGljdHVyZUluUGljdHVyZSgpCkBAIC05NjcsNyArMTQ2Niw4IEBAIHZvaWQgVmlkZW9GdWxsc2Ny
ZWVuSW50ZXJmYWNlQVZLaXQ6OmRpZFN0YXJ0UGljdHVyZUluUGljdHVyZSgpCiAgICAgICAgIFtb
bV9wbGF5ZXJWaWV3Q29udHJvbGxlciB2aWV3XSBzZXRIaWRkZW46WUVTXTsKICAgICB9CiAKLSAg
ICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOworICAg
IGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsLT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKIAogICAgIGlmIChtX2VudGVyRnVsbHNj
cmVlbk5lZWRzRW50ZXJQaWN0dXJlSW5QaWN0dXJlKQogICAgICAgICBkb0VudGVyRnVsbHNjcmVl
bigpOwpAQCAtOTg1LDggKzE0ODUsMTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6ZmFpbGVkVG9TdGFydFBpY3R1cmVJblBpY3R1cmUoKQogICAgIGlmIChtX2Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlcikKICAgICAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXItPmRp
ZEVudGVyRnVsbHNjcmVlbigpOwogCi0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5mYWlsZWRU
b0VudGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkucmVx
dWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVu
TW9kZU5vbmUpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsLT5mYWlsZWRUb0VudGVyUGljdHVyZUluUGljdHVyZSgpOworCisg
ICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVu
TW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVv
RnVsbHNjcmVlbk1vZGVOb25lKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VB
VktpdDo6d2lsbFN0b3BQaWN0dXJlSW5QaWN0dXJlKCkKQEAgLTEwMDEsNyArMTUwNCw4IEBAIHZv
aWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OndpbGxTdG9wUGljdHVyZUluUGljdHVy
ZSgpCiAgICAgW21fd2luZG93IHNldEhpZGRlbjpOT107CiAgICAgW1ttX3BsYXllclZpZXdDb250
cm9sbGVyIHZpZXddIHNldEhpZGRlbjpOT107CiAKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgp
LndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVlbk1v
ZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT53aWxsRXhpdFBpY3R1cmVJblBp
Y3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZGlkU3Rv
cFBpY3R1cmVJblBpY3R1cmUoKQpAQCAtMTAyMSwxMSArMTUyNSwxMyBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUFWS2l0OjpkaWRTdG9wUGljdHVyZUluUGljdHVyZSgpCiAgICAgW21f
cGxheWVyTGF5ZXJWaWV3IHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJQ29sb3IoKV07CiAgICAg
W1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEJhY2tncm91bmRDb2xvcjpjbGVhclVJ
Q29sb3IoKV07CiAKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlcXVlc3RGdWxsc2NyZWVu
TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKKyAg
ICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5N
b2RlbC0+cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9G
dWxsc2NyZWVuTW9kZU5vbmUpOwogCiAgICAgY2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVt
czo6VmlkZW9GdWxsc2NyZWVuTW9kZVBpY3R1cmVJblBpY3R1cmUpOwogCi0gICAgdmlkZW9GdWxs
c2NyZWVuTW9kZWwoKS5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOworICAgIGlmIChtX3ZpZGVv
RnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFeGl0
UGljdHVyZUluUGljdHVyZSgpOwogCiAgICAgaWYgKG1fZW50ZXJGdWxsc2NyZWVuTmVlZHNFeGl0
UGljdHVyZUluUGljdHVyZSkKICAgICAgICAgZG9FbnRlckZ1bGxzY3JlZW4oKTsKQEAgLTEwNjEs
MjYgKzE1NjcsMjEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6cHJlcGFy
ZUZvclBpY3R1cmVJblBpY3R1cmVTdG9wV2l0aENvbXBsZXRpb24KIAogYm9vbCBWaWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VBVktpdDo6c2hvdWxkRXhpdEZ1bGxzY3JlZW5XaXRoUmVhc29uKFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpFeGl0RnVsbFNjcmVlblJlYXNvbiByZWFzb24pCiB7
CisgICAgaWYgKCFtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICByZXR1cm4gdHJ1ZTsK
KwogICAgIGlmIChyZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlBpY3R1cmVJblBpY3R1
cmVTdGFydGVkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAocmVhc29uID09IEV4
aXRGdWxsU2NyZWVuUmVhc29uOjpEb25lQnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVs
bFNjcmVlblJlYXNvbjo6UmVtb3RlQ29udHJvbFN0b3BFdmVudFJlY2VpdmVkKQotICAgICAgICBw
bGF5YmFja1Nlc3Npb25Nb2RlbCgpLnBhdXNlKCk7CisgICAgaWYgKHBsYXliYWNrU2Vzc2lvbk1v
ZGVsKCkgJiYgKHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6RG9uZUJ1dHRvblRhcHBl
ZCB8fCByZWFzb24gPT0gRXhpdEZ1bGxTY3JlZW5SZWFzb246OlJlbW90ZUNvbnRyb2xTdG9wRXZl
bnRSZWNlaXZlZCkpCisgICAgICAgIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPnBhdXNlKCk7CisK
KyAgICBCT09MIGZpbmlzaGVkID0gcmVhc29uID09IEV4aXRGdWxsU2NyZWVuUmVhc29uOjpEb25l
QnV0dG9uVGFwcGVkIHx8IHJlYXNvbiA9PSBFeGl0RnVsbFNjcmVlblJlYXNvbjo6UGluY2hHZXN0
dXJlSGFuZGxlZDsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5yZXF1ZXN0RnVsbHNjcmVl
bk1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSwgZmlu
aXNoZWQpOwogCiAgICAgaWYgKCFtX3dhdGNoZG9nVGltZXIuaXNBY3RpdmUoKSAmJiAhaWdub3Jl
V2F0Y2hkb2dGb3JEZWJ1Z2dpbmcpCiAgICAgICAgIG1fd2F0Y2hkb2dUaW1lci5zdGFydE9uZVNo
b3QoZGVmYXVsdFdhdGNoZG9nVGltZXJJbnRlcnZhbCk7CiAKLSNpZiBQTEFURk9STShXQVRDSE9T
KQotICAgIGlmIChtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcikgewotICAgICAgICBtX3dhaXRp
bmdGb3JQcmVwYXJlZFRvRXhpdCA9IHRydWU7Ci0gICAgICAgIG1fZnVsbHNjcmVlbkNoYW5nZU9i
c2VydmVyLT53aWxsRXhpdEZ1bGxzY3JlZW4oKTsKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAg
IH0KLSNlbmRpZgotICAgIAotICAgIEJPT0wgZmluaXNoZWQgPSByZWFzb24gPT0gRXhpdEZ1bGxT
Y3JlZW5SZWFzb246OkRvbmVCdXR0b25UYXBwZWQgfHwgcmVhc29uID09IEV4aXRGdWxsU2NyZWVu
UmVhc29uOjpQaW5jaEdlc3R1cmVIYW5kbGVkOwotICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCku
cmVxdWVzdEZ1bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZWVuTW9kZU5vbmUsIGZpbmlzaGVkKTsKLQogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAtMTE3
MSw3ICsxNjcyLDggQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6ZG9TZXR1
cCgpCiAgICAgW3BsYXllckxheWVyIHNldE1vZGVsVmlkZW9MYXllckZyYW1lOm1vZGVsVmlkZW9M
YXllckZyYW1lXTsKICAgICBbcGxheWVyTGF5ZXIgc2V0VmlkZW9EaW1lbnNpb25zOltwbGF5ZXJD
b250cm9sbGVyKCkgY29udGVudERpbWVuc2lvbnNdXTsKICAgICBwbGF5ZXJMYXllci5mdWxsc2Ny
ZWVuSW50ZXJmYWNlID0gdGhpczsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnNldFZpZGVv
TGF5ZXJGcmFtZShtb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnNldFZpZGVvTGF5ZXJG
cmFtZShtb2RlbFZpZGVvTGF5ZXJGcmFtZSk7CiAKICAgICBpZiAoIW1fcGxheWVyVmlld0NvbnRy
b2xsZXIpCiAgICAgICAgIG1fcGxheWVyVmlld0NvbnRyb2xsZXIgPSBhZG9wdE5TKFtbV2ViQVZQ
bGF5ZXJWaWV3Q29udHJvbGxlciBhbGxvY10gaW5pdFdpdGhGdWxsc2NyZWVuSW50ZXJmYWNlOnRo
aXNdKTsKQEAgLTExODMsNyArMTY4NSw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
QVZLaXQ6OmRvU2V0dXAoKQogICAgIFtwbGF5ZXJDb250cm9sbGVyKCkgc2V0UGljdHVyZUluUGlj
dHVyZVBvc3NpYmxlOm1fYWxsb3dzUGljdHVyZUluUGljdHVyZVBsYXliYWNrXTsKIAogI2lmIFBM
QVRGT1JNKFdBVENIT1MpCi0gICAgbV92aWV3Q29udHJvbGxlciA9IHZpZGVvRnVsbHNjcmVlbk1v
ZGVsKCkuY3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0NvbnRyb2xsZXIobV9wbGF5ZXJWaWV3Q29u
dHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9sbGVyKTsKKyAgICBtX3ZpZXdDb250cm9s
bGVyID0gdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+Y3JlYXRlVmlkZW9GdWxsc2NyZWVuVmlld0Nv
bnRyb2xsZXIobV9wbGF5ZXJWaWV3Q29udHJvbGxlci5nZXQoKS5hdlBsYXllclZpZXdDb250cm9s
bGVyKTsKICNlbmRpZgogCiAgICAgaWYgKG1fdmlld0NvbnRyb2xsZXIpIHsKQEAgLTEzNzQsNiAr
MTg3Niw4IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6OnJldHVyblRvU3Rh
bmRieSgpCiAgICAgW1ttX3BsYXllclZpZXdDb250cm9sbGVyIHZpZXddIHNldEhpZGRlbjpZRVNd
OwogfQogCisjZW5kaWYgLy8gRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQorCiBOT19SRVRVUk5fRFVF
X1RPX0FTU0VSVCB2b2lkIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Ojp3YXRjaGRvZ1Rp
bWVyRmlyZWQoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlQVZLaXQ6OndhdGNoZG9nVGltZXJGaXJlZCglcCkgLSBubyBleGl0IGZ1bGxzY3JlZW4gcmVz
cG9uc2UgaW4gJWdzOyBmb3JjaW5nIGZ1bGxzY3JlZW4gaGlkZGVuLiIsIHRoaXMsIGRlZmF1bHRX
YXRjaGRvZ1RpbWVySW50ZXJ2YWwudmFsdWUoKSk7CkBAIC0xMzg4LDcgKzE4OTIsOCBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0OjpzZXRNb2RlKEhUTUxNZWRpYUVsZW1lbnRF
bnVtczo6VmlkZW9GdWxsc2NyZQogICAgICAgICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRNb2Rl
LnNldE1vZGUobW9kZSk7Ci0gICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5mdWxsc2NyZWVuTW9k
ZUNoYW5nZWQobV9jdXJyZW50TW9kZS5tb2RlKCkpOworICAgIGlmIChtX3ZpZGVvRnVsbHNjcmVl
bk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5mdWxsc2NyZWVuTW9kZUNo
YW5nZWQobV9jdXJyZW50TW9kZS5tb2RlKCkpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZUFWS2l0OjpjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlIG1vZGUpCkBAIC0xMzk3LDcgKzE5MDIsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZUFWS2l0OjpjbGVhck1vZGUoSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1
bGxzYwogICAgICAgICByZXR1cm47CiAKICAgICBtX2N1cnJlbnRNb2RlLmNsZWFyTW9kZShtb2Rl
KTsKLSAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX2N1
cnJlbnRNb2RlLm1vZGUoKSk7CisgICAgaWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAg
ICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX2N1cnJl
bnRNb2RlLm1vZGUoKSk7CiB9CiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmlzUGxheWluZ1ZpZGVvSW5FbmhhbmNlZEZ1bGxzY3JlZW4oKSBjb25zdApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5oCmluZGV4IDFl
NzhhYjA2ZmU0YjQ3YjEzZDYwMzA1MDFhNDUzNDEyZDJjMjY4NjIuLmE0NTM0NmNkZGMwZjQ3NWE5
MWEzODk3YjVhYTI2M2I3ZjgxYzcyMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLmgKQEAgLTI2LDcgKzI2LDYgQEAKICNpZiBQ
TEFURk9STShJT1MpICYmIEhBVkUoQVZLSVQpCiAKICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZL
aXRTUEkuaD4KLSNpbXBvcnQgPHd0Zi9XZWFrUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1vZGVsOwpAQCAtNDAsMTQgKzM5LDEzIEBAIGNsYXNzIFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUFWS2l0OwogQGludGVyZmFjZSBXZWJBVlBsYXllckNvbnRy
b2xsZXIgOiBOU09iamVjdCB7CiAgICAgV2ViQVZNZWRpYVNlbGVjdGlvbk9wdGlvbiAqX2N1cnJl
bnRBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uOwogICAgIFdlYkFWTWVkaWFTZWxlY3Rpb25PcHRp
b24gKl9jdXJyZW50TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uOwotICAgIFJlZlB0cjxXZWJD
b3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gX3BsYXliYWNrU2Vzc2lvbkludGVy
ZmFjZTsKICAgICBCT09MIF9waWN0dXJlSW5QaWN0dXJlSW50ZXJydXB0ZWQ7CiAgICAgQk9PTCBf
bXV0ZWQ7CiB9CiAKIEBwcm9wZXJ0eSAocmV0YWluKSBBVlBsYXllckNvbnRyb2xsZXIqIHBsYXll
ckNvbnRyb2xsZXJQcm94eTsKLUBwcm9wZXJ0eSAocmVhZG9ubHkpIFdlYkNvcmU6OlBsYXliYWNr
U2Vzc2lvbk1vZGVsKiBkZWxlZ2F0ZTsKLUBwcm9wZXJ0eSBXZWJDb3JlOjpQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VBVktpdCogcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlOworQHByb3BlcnR5IChh
c3NpZ24pIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsKiBkZWxlZ2F0ZTsKK0Bwcm9wZXJ0
eSAoYXNzaWduKSBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCogcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlOwogCiBAcHJvcGVydHkgKHJlYWRvbmx5KSBCT09MIGNhblNjYW5G
b3J3YXJkOwogQHByb3BlcnR5IEJPT0wgY2FuU2NhbkJhY2t3YXJkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbSBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2lvcy9XZWJBVlBsYXllckNvbnRyb2xsZXIubW0KaW5kZXggNmYy
NGFiMjFhMGVhNWEwZWNjZjkzMTliMzZjNGQxMTkxNGNjYjlhOC4uMzcyMTgwMGUxMGI5ZmY0YTgx
MDZhZGU1YWMxMDE1MWQwMGZhMmM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vaW9zL1dlYkFWUGxheWVyQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9pb3MvV2ViQVZQbGF5ZXJDb250cm9sbGVyLm1tCkBAIC05NywyMyArOTcsNiBAQCBzdGF0
aWMgZG91YmxlIFdlYkFWUGxheWVyQ29udHJvbGxlckxpdmVTdHJlYW1TZWVrYWJsZVRpbWVSYW5n
ZU1pbmltdW1EdXJhdGlvbiA9CiAgICAgW3N1cGVyIGRlYWxsb2NdOwogfQogCi1AZHluYW1pYyBk
ZWxlZ2F0ZTsKLS0gKFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsKilkZWxlZ2F0ZQotewot
ICAgIHJldHVybiBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlID8gJl9wbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgOiBudWxscHRyOwotfQotCi1AZHluYW1p
YyBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U7Ci0tIChXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VBVktpdCopcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCi17Ci0gICAgcmV0dXJuIF9w
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2UuZ2V0KCk7Ci19Ci0KLS0gKHZvaWQpc2V0UGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlOihXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdCop
cGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlCi17Ci0gICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZSA9IHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTsKLX0KLQogLSAoQVZQbGF5ZXIgKilwbGF5ZXIK
IHsKICAgICByZXR1cm4gbmlsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
aW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2lvcy9XZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQVZLaXQubW0KaW5kZXgg
MzE2MWZjOThiM2ZhYzhmNWI3NjdlYTI4YzhiNjUyMmQ0NjlkYmQ5Mi4uZDQzYjg3YzBkOTUyMjBh
MTdmNGMxMGJmMjQ3ZGRjYmEzMGQwOThmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vaW9zL1dlYlZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJBVktpdC5tbQorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9pb3MvV2ViVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckFWS2l0
Lm1tCkBAIC05OSwxMSArOTksMTEgQEAgY2xhc3MgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNv
bnRleHQ7CiBAZW5kCiAKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0IGZp
bmFsCi0gICAgOiBwdWJsaWMgVmlkZW9GdWxsc2NyZWVuTW9kZWwKLSAgICAsIHB1YmxpYyBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudAotICAgICwgcHVibGljIFZpZGVvRnVsbHNjcmVlbkNoYW5n
ZU9ic2VydmVyCisgICAgOiBwcml2YXRlIFZpZGVvRnVsbHNjcmVlbk1vZGVsCisgICAgLCBwcml2
YXRlIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50CisgICAgLCBwcml2YXRlIFZpZGVvRnVsbHNj
cmVlbkNoYW5nZU9ic2VydmVyCiAgICAgLCBwcml2YXRlIFBsYXliYWNrU2Vzc2lvbk1vZGVsCi0g
ICAgLCBwdWJsaWMgUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKKyAgICAsIHByaXZhdGUgUGxh
eWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKICAgICAsIHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRl
ZDxWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dD4gewogCiBwdWJsaWM6CkBAIC0xMTgs
OSArMTE4LDYgQEAgcHVibGljOgogICAgIHZvaWQgcmVxdWVzdEhpZGVBbmRFeGl0RnVsbHNjcmVl
bigpOwogICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogCi0gICAgdXNpbmcgVGhyZWFkU2FmZVJlZkNv
dW50ZWQ6OnJlZjsKLSAgICB1c2luZyBUaHJlYWRTYWZlUmVmQ291bnRlZDo6ZGVyZWY7Ci0KIHBy
aXZhdGU6CiAgICAgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQoKSB7IH0KIApAQCAt
MTQwLDkgKzEzNyw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCB2aWRlb0RpbWVuc2lvbnNDaGFuZ2Vk
KGNvbnN0IEZsb2F0U2l6ZSYpIG92ZXJyaWRlOwogCiAgICAgLy8gUGxheWJhY2tTZXNzaW9uTW9k
ZWwKLSAgICB2b2lkIHJlZlBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgZmluYWwgeyByZWYoKTsgfQot
ICAgIHZvaWQgZGVyZWZQbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGZpbmFsIHsgZGVyZWYoKTsgfQot
ICAgIHZvaWQgYWRkQ2xpZW50KFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ+JiYp
IG92ZXJyaWRlOworICAgIHZvaWQgYWRkQ2xpZW50KFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50
Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQmKSBvdmVycmlkZTsKICAgICB2b2lkIHBsYXkoKSBvdmVycmlkZTsKICAgICB2b2lkIHBh
dXNlKCkgb3ZlcnJpZGU7CkBAIC0xOTYsOSArMTkxLDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIHZv
bHVtZUNoYW5nZWQoZG91YmxlKSBvdmVycmlkZTsKIAogICAgIC8vIFZpZGVvRnVsbHNjcmVlbk1v
ZGVsCi0gICAgdm9pZCByZWZWaWRlb0Z1bGxzY3JlZW5Nb2RlbCgpIGZpbmFsIHsgcmVmKCk7IH0K
LSAgICB2b2lkIGRlcmVmVmlkZW9GdWxsc2NyZWVuTW9kZWwoKSBmaW5hbCB7IGRlcmVmKCk7IH0K
LSAgICB2b2lkIGFkZENsaWVudChXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PiYm
KSBvdmVycmlkZTsKKyAgICB2b2lkIGFkZENsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVu
dCYpIG92ZXJyaWRlOwogICAgIHZvaWQgcmVtb3ZlQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50Jikgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1l
ZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1l
ZGlhID0gZmFsc2UpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKEZsb2F0
UmVjdCkgb3ZlcnJpZGU7CkBAIC0yMTcsMjQgKzIxMCwyMSBAQCBwcml2YXRlOgogICAgIHZvaWQg
d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkgZmluYWw7CiAgICAgdm9pZCBkaWRFeGl0UGljdHVy
ZUluUGljdHVyZSgpIGZpbmFsOwogCi0gICAgVmVjdG9yPFdlYWtQdHI8UGxheWJhY2tTZXNzaW9u
TW9kZWxDbGllbnQ+PiBtX3BsYXliYWNrQ2xpZW50czsKLSAgICBWZWN0b3I8V2Vha1B0cjxWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4+IG1fZnVsbHNjcmVlbkNsaWVudHM7CisgICAgSGFzaFNl
dDxQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCo+IG1fcGxheWJhY2tDbGllbnRzOworICAgIEhh
c2hTZXQ8VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQqPiBtX2Z1bGxzY3JlZW5DbGllbnRzOwog
ICAgIFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdD4gbV9pbnRlcmZhY2U7CiAg
ICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1vZGVsVmlkZW9FbGVtZW50PiBtX2Z1bGxzY3JlZW5N
b2RlbDsKICAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1fcGxh
eWJhY2tNb2RlbDsKICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gbV92aWRlb0VsZW1lbnQ7
CiAgICAgUmV0YWluUHRyPFVJVmlldz4gbV92aWRlb0Z1bGxzY3JlZW5WaWV3OwogICAgIFJldGFp
blB0cjxXZWJWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyPiBtX2NvbnRyb2xsZXI7Ci0gICAgV2Vh
a1B0ckZhY3Rvcnk8UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ+IG1fcGxheWJhY2tDbGllbnRG
YWN0b3J5OwotICAgIFdlYWtQdHJGYWN0b3J5PFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50PiBt
X2Z1bGxzY3JlZW5Nb2RlbENsaWVudEZhY3Rvcnk7Ci0gICAgV2Vha1B0ckZhY3Rvcnk8VmlkZW9G
dWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI+IG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyRmFjdG9y
eTsKIH07CiAKICNwcmFnbWEgbWFyayBWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcgogCiB2
b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5l
UmVjdCgpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxF
KEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVh
ZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdICgpIG11dGFibGUg
ewogICAgICAgICBJbnRSZWN0IGNsaWVudFJlY3QgPSBlbGVtZW50UmVjdEluV2luZG93KG1fdmlk
ZW9FbGVtZW50LmdldCgpKTsKQEAgLTI0OSw3ICsyMzksNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VXBkYXRlSW5saW5lUmVjdCgpCiAKIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnJlcXVlc3RWaWRlb0NvbnRlbnRMYXllcigp
CiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExT
Q1JFRU5fQVBJKQogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwogICAgIFdlYlRocmVhZFJ1bihb
cHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxh
eWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNjcmVlblZpZXcgbGF5ZXJdKV0gKCkgbXV0YWJs
ZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXllciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2Fj
aGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNwYXJlbnQpXTsKQEAgLTI2Niw3ICsyNTYs
NyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0VmlkZW9D
b250ZW50TGF5ZXIoKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojpy
ZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpCiB7Ci0jaWYgUExBVEZPUk0oSU9TKQorI2lmIFBMQVRG
T1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAgIEFTU0VSVChpc1VJVGhyZWFk
KCkpOwogICAgIFdlYlRocmVhZFJ1bihbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyks
IHRoaXMsIHZpZGVvRnVsbHNjcmVlbkxheWVyID0gcmV0YWluUHRyKFttX3ZpZGVvRnVsbHNjcmVl
blZpZXcgbGF5ZXJdKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIFt2aWRlb0Z1bGxzY3JlZW5MYXll
ciBzZXRCYWNrZ3JvdW5kQ29sb3I6Y2FjaGVkQ0dDb2xvcihXZWJDb3JlOjpDb2xvcjo6dHJhbnNw
YXJlbnQpXTsKQEAgLTI4NCw3ICsyNzQsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xs
ZXJDb250ZXh0OjpyZXR1cm5WaWRlb0NvbnRlbnRMYXllcigpCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpkaWRTZXR1cEZ1bGxzY3JlZW4oKQogewogICAgIEFTU0VSVChp
c1VJVGhyZWFkKCkpOwotI2lmIFBMQVRGT1JNKElPUykKKyNpZiBQTEFURk9STShJT1MpICYmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBkaXNwYXRjaF9hc3luYyhkaXNwYXRjaF9nZXRfbWFp
bl9xdWV1ZSgpLCBbcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWZQdHIodGhpcyksIHRoaXNdIHsKICAg
ICAgICAgbV9pbnRlcmZhY2UtPmVudGVyRnVsbHNjcmVlbigpOwogICAgIH0pOwpAQCAtMzEzLDcg
KzMwMyw3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OndpbGxFeGl0
RnVsbHNjcmVlbigpCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRF
eGl0RnVsbHNjcmVlbigpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0jaWYgUExBVEZP
Uk0oSU9TKQorI2lmIFBMQVRGT1JNKElPUykgJiYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQogICAg
IGRpc3BhdGNoX2FzeW5jKGRpc3BhdGNoX2dldF9tYWluX3F1ZXVlKCksIFtwcm90ZWN0ZWRUaGlz
ID0gbWFrZVJlZlB0cih0aGlzKSwgdGhpc10gewogICAgICAgICBtX2ludGVyZmFjZS0+Y2xlYW51
cEZ1bGxzY3JlZW4oKTsKICAgICB9KTsKQEAgLTMzMSw2ICszMjEsOCBAQCB2b2lkIFZpZGVvRnVs
bHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0RnVsbHNjcmVlbigpCiB2b2lkIFZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0OjpkaWRDbGVhbnVwRnVsbHNjcmVlbigpCiB7CiAg
ICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7CisgICAgbV9pbnRlcmZhY2UtPnNldFZpZGVvRnVsbHNj
cmVlbk1vZGVsKG51bGxwdHIpOworICAgIG1faW50ZXJmYWNlLT5zZXRWaWRlb0Z1bGxzY3JlZW5D
aGFuZ2VPYnNlcnZlcihudWxscHRyKTsKICAgICBtX2ludGVyZmFjZSA9IG51bGxwdHI7CiAgICAg
bV92aWRlb0Z1bGxzY3JlZW5WaWV3ID0gbmlsOwogCkBAIC0zMzksNyArMzMxLDYgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZGlkQ2xlYW51cEZ1bGxzY3JlZW4oKQog
ICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOwogICAg
ICAgICBtX3BsYXliYWNrTW9kZWwtPnNldE1lZGlhRWxlbWVudChudWxscHRyKTsKICAgICAgICAg
bV9wbGF5YmFja01vZGVsLT5yZW1vdmVDbGllbnQoKnRoaXMpOwotICAgICAgICBtX3BsYXliYWNr
TW9kZWwgPSBudWxscHRyOwogICAgICAgICBtX2Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50
KCp0aGlzKTsKICAgICAgICAgbV9mdWxsc2NyZWVuTW9kZWwgPSBudWxscHRyOwogICAgICAgICBt
X3ZpZGVvRWxlbWVudCA9IG51bGxwdHI7CkBAIC01NTQsMTYgKzU0NSwxNiBAQCB2b2lkIFZpZGVv
RnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0Ojp2b2x1bWVDaGFuZ2VkKGRvdWJsZSB2b2x1bWUp
CiB9CiAjcHJhZ21hIG1hcmsgVmlkZW9GdWxsc2NyZWVuTW9kZWwKIAotdm9pZCBWaWRlb0Z1bGxz
Y3JlZW5Db250cm9sbGVyQ29udGV4dDo6YWRkQ2xpZW50KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVu
TW9kZWxDbGllbnQ+JiYgY2xpZW50KQordm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29u
dGV4dDo6YWRkQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGllbnQpCiB7Ci0g
ICAgQVNTRVJUKCFtX2Z1bGxzY3JlZW5DbGllbnRzLmNvbnRhaW5zKGNsaWVudCkpOwotICAgIG1f
ZnVsbHNjcmVlbkNsaWVudHMuYXBwZW5kKFdURk1vdmUoY2xpZW50KSk7CisgICAgQVNTRVJUKCFt
X2Z1bGxzY3JlZW5DbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2Z1bGxzY3JlZW5D
bGllbnRzLmFkZCgmY2xpZW50KTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6cmVtb3ZlQ2xpZW50KFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50JiBjbGllbnQp
CiB7CiAgICAgQVNTRVJUKG1fZnVsbHNjcmVlbkNsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOwot
ICAgIG1fZnVsbHNjcmVlbkNsaWVudHMucmVtb3ZlQWxsKCZjbGllbnQpOworICAgIG1fZnVsbHNj
cmVlbkNsaWVudHMucmVtb3ZlKCZjbGllbnQpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbkNv
bnRyb2xsZXJDb250ZXh0OjpyZXF1ZXN0RnVsbHNjcmVlbk1vZGUoSFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1vZGUsIGJvb2wgZmluaXNoZWRXaXRoTWVkaWEpCkBA
IC02NTMsMzUgKzY0NCwzNSBAQCBib29sIFZpZGVvRnVsbHNjcmVlbkNvbnRyb2xsZXJDb250ZXh0
Ojppc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWQoKSBjb25zdAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Db250cm9sbGVyQ29udGV4dDo6d2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAg
QVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Z1bGxzY3Jl
ZW5DbGllbnRzKQorICAgIGZvciAoYXV0byogY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykK
ICAgICAgICAgY2xpZW50LT53aWxsRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9CiAKIHZvaWQg
VmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmRpZEVudGVyUGljdHVyZUluUGljdHVy
ZSgpCiB7CiAgICAgQVNTRVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQg
OiBtX2Z1bGxzY3JlZW5DbGllbnRzKQorICAgIGZvciAoYXV0byogY2xpZW50IDogbV9mdWxsc2Ny
ZWVuQ2xpZW50cykKICAgICAgICAgY2xpZW50LT5kaWRFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsK
IH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6ZmFpbGVkVG9FbnRl
clBpY3R1cmVJblBpY3R1cmUoKQogewogICAgIEFTU0VSVChpc1VJVGhyZWFkKCkpOwotICAgIGZv
ciAoYXV0byYgY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykKKyAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IG1fZnVsbHNjcmVlbkNsaWVudHMpCiAgICAgICAgIGNsaWVudC0+ZmFpbGVkVG9FbnRl
clBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVy
Q29udGV4dDo6d2lsbEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIHsKICAgICBBU1NFUlQoaXNVSVRo
cmVhZCgpKTsKLSAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fZnVsbHNjcmVlbkNsaWVudHMpCisg
ICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2Z1bGxzY3JlZW5DbGllbnRzKQogICAgICAgICBjbGll
bnQtPndpbGxFeGl0UGljdHVyZUluUGljdHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bkNvbnRyb2xsZXJDb250ZXh0OjpkaWRFeGl0UGljdHVyZUluUGljdHVyZSgpCiB7CiAgICAgQVNT
RVJUKGlzVUlUaHJlYWQoKSk7Ci0gICAgZm9yIChhdXRvJiBjbGllbnQgOiBtX2Z1bGxzY3JlZW5D
bGllbnRzKQorICAgIGZvciAoYXV0byogY2xpZW50IDogbV9mdWxsc2NyZWVuQ2xpZW50cykKICAg
ICAgICAgY2xpZW50LT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgpOwogfQogCkBAIC02OTMsMTYg
KzY4NCwxNiBAQCBGbG9hdFNpemUgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnZp
ZGVvRGltZW5zaW9ucygpIGNvbnN0CiAKICNwcmFnbWEgbWFyayAtIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsCiAKLXZvaWQgVmlkZW9GdWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmFkZENsaWVudChX
ZWFrUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiYmIGNsaWVudCkKK3ZvaWQgVmlkZW9G
dWxsc2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OmFkZENsaWVudChQbGF5YmFja1Nlc3Npb25Nb2Rl
bENsaWVudCYgY2xpZW50KQogewotICAgIEFTU0VSVCghbV9wbGF5YmFja0NsaWVudHMuY29udGFp
bnMoY2xpZW50KSk7Ci0gICAgbV9wbGF5YmFja0NsaWVudHMuYXBwZW5kKFdURk1vdmUoY2xpZW50
KSk7CisgICAgQVNTRVJUKCFtX3BsYXliYWNrQ2xpZW50cy5jb250YWlucygmY2xpZW50KSk7Cisg
ICAgbV9wbGF5YmFja0NsaWVudHMuYWRkKCZjbGllbnQpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNj
cmVlbkNvbnRyb2xsZXJDb250ZXh0OjpyZW1vdmVDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxD
bGllbnQmIGNsaWVudCkKIHsKICAgICBBU1NFUlQobV9wbGF5YmFja0NsaWVudHMuY29udGFpbnMo
JmNsaWVudCkpOwotICAgIG1fcGxheWJhY2tDbGllbnRzLnJlbW92ZUFsbCgmY2xpZW50KTsKKyAg
ICBtX3BsYXliYWNrQ2xpZW50cy5yZW1vdmUoJmNsaWVudCk7CiB9CiAKIHZvaWQgVmlkZW9GdWxs
c2NyZWVuQ29udHJvbGxlckNvbnRleHQ6OnBsYXkoKQpAQCAtOTYzLDExICs5NTQsMTEgQEAgdm9p
ZCBWaWRlb0Z1bGxzY3JlZW5Db250cm9sbGVyQ29udGV4dDo6c2V0VXBGdWxsc2NyZWVuKEhUTUxW
aWRlb0VsZW1lbnQmIHZpZGVvRWwKICAgICBSZXRhaW5QdHI8VUlWaWV3PiB2aWV3UmVmID0gdmll
dzsKICAgICBtX3ZpZGVvRWxlbWVudCA9ICZ2aWRlb0VsZW1lbnQ7CiAgICAgbV9wbGF5YmFja01v
ZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVsZW1lbnQ6OmNyZWF0ZSgpOwotICAgIG1f
cGxheWJhY2tNb2RlbC0+YWRkQ2xpZW50KG1fcGxheWJhY2tDbGllbnRGYWN0b3J5LmNyZWF0ZVdl
YWtQdHIoKnRoaXMpKTsKKyAgICBtX3BsYXliYWNrTW9kZWwtPmFkZENsaWVudCgqdGhpcyk7CiAg
ICAgbV9wbGF5YmFja01vZGVsLT5zZXRNZWRpYUVsZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkp
OwogCiAgICAgbV9mdWxsc2NyZWVuTW9kZWwgPSBWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxl
bWVudDo6Y3JlYXRlKCk7Ci0gICAgbV9mdWxsc2NyZWVuTW9kZWwtPmFkZENsaWVudChtX2Z1bGxz
Y3JlZW5Nb2RlbENsaWVudEZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcykpOworICAgIG1fZnVs
bHNjcmVlbk1vZGVsLT5hZGRDbGllbnQoKnRoaXMpOwogICAgIG1fZnVsbHNjcmVlbk1vZGVsLT5z
ZXRWaWRlb0VsZW1lbnQobV92aWRlb0VsZW1lbnQuZ2V0KCkpOwogCiAgICAgYm9vbCBhbGxvd3NQ
aWN0dXJlSW5QaWN0dXJlID0gbV92aWRlb0VsZW1lbnQtPndlYmtpdFN1cHBvcnRzUHJlc2VudGF0
aW9uTW9kZShIVE1MVmlkZW9FbGVtZW50OjpWaWRlb1ByZXNlbnRhdGlvbk1vZGU6OlBpY3R1cmVJ
blBpY3R1cmUpOwpAQCAtOTgwLDggKzk3MSwxMCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbkNvbnRy
b2xsZXJDb250ZXh0OjpzZXRVcEZ1bGxzY3JlZW4oSFRNTFZpZGVvRWxlbWVudCYgdmlkZW9FbAog
ICAgICAgICBBU1NFUlQoaXNVSVRocmVhZCgpKTsKIAogICAgICAgICBSZWY8UGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQVZLaXQ+IHNlc3Npb25JbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VBVktpdDo6Y3JlYXRlKCp0aGlzKTsKLSAgICAgICAgbV9pbnRlcmZhY2UgPSBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VBVktpdDo6Y3JlYXRlKHNlc3Npb25JbnRlcmZhY2UuZ2V0KCksICp0
aGlzKTsKLSAgICAgICAgbV9pbnRlcmZhY2UtPnNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyKG1fZnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlz
KSk7CisgICAgICAgIG1faW50ZXJmYWNlID0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQVZLaXQ6
OmNyZWF0ZShzZXNzaW9uSW50ZXJmYWNlLmdldCgpKTsKKyAgICAgICAgbV9pbnRlcmZhY2UtPnNl
dFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKHRoaXMpOworICAgICAgICBtX2ludGVyZmFj
ZS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZWwodGhpcyk7CisgICAgICAgIG1faW50ZXJmYWNlLT5z
ZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcih0aGlzKTsKIAogICAgICAgICBtX3ZpZGVv
RnVsbHNjcmVlblZpZXcgPSBhZG9wdE5TKFthbGxvY1VJVmlld0luc3RhbmNlKCkgaW5pdF0pOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjLmgKaW5kZXggNDM5YTE5ZWE2ZWZiOTBlZTU5ODlmZDg5NjdhOGI2MTM3
YTk5OTMwNC4uZTdkYjM5N2NjZTQwZmQ1YmRjYzRmNWFmMjZlN2JmMzI3NDE5ZjYwZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWMuaApAQCAtNDUsOSArNDUsOSBAQCBjbGFzcyBXRUJDT1JFX0VYUE9SVCBQbGF5
YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMgZmluYWwKICAgICAsIHB1YmxpYyBQbGF5YmFja1Nlc3Np
b25Nb2RlbENsaWVudAogICAgICwgcHVibGljIFJlZkNvdW50ZWQ8UGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlTWFjPiB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM+IGNyZWF0ZShSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWw+JiYpOwotICAgIHZpcnR1
YWwgflBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYygpID0gZGVmYXVsdDsKLSAgICBQbGF5YmFj
a1Nlc3Npb25Nb2RlbCYgcGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdDsKKyAgICBzdGF0aWMg
UmVmPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYz4gY3JlYXRlKFBsYXliYWNrU2Vzc2lvbk1v
ZGVsJik7CisgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKCk7CisgICAg
UGxheWJhY2tTZXNzaW9uTW9kZWwqIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3Q7CiAKICAg
ICAvLyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKICAgICB2b2lkIHJlc2V0TWVkaWFTdGF0ZSgp
IGZpbmFsOwpAQCAtNjQsNiArNjQsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBleHRlcm5hbFBsYXli
YWNrQ2hhbmdlZChib29sIC8qIGVuYWJsZWQgKi8sIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRl
cm5hbFBsYXliYWNrVGFyZ2V0VHlwZSwgY29uc3QgU3RyaW5nJiAvKiBsb2NhbGl6ZWREZXZpY2VO
YW1lICovKSBmaW5hbDsKICAgICB2b2lkIGlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5n
ZWQoYm9vbCkgZmluYWw7CiAKKyAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIGVuc3Vy
ZUNvbnRyb2xzTWFuYWdlcigpOwogI2lmIEVOQUJMRShXRUJfUExBWUJBQ0tfQ09OVFJPTFNfTUFO
QUdFUikKICAgICB2b2lkIHNldFBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKFdlYlBsYXliYWNrQ29u
dHJvbHNNYW5hZ2VyICopOwpAQCAtNzUsOSArNzYsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBlbmRT
Y3J1YmJpbmcoKTsKIAogcHJpdmF0ZToKLSAgICBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMo
UmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiYmKTsKLSAgICBSZWY8UGxheWJhY2tTZXNzaW9uTW9k
ZWw+IG1fcGxheWJhY2tTZXNzaW9uTW9kZWw7Ci0gICAgV2Vha1B0ckZhY3Rvcnk8UGxheWJhY2tT
ZXNzaW9uTW9kZWxDbGllbnQ+IG1fd2Vha1B0ckZhY3Rvcnk7CisgICAgUGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjKFBsYXliYWNrU2Vzc2lvbk1vZGVsJik7CisgICAgUGxheWJhY2tTZXNzaW9u
TW9kZWwqIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwgeyBudWxscHRyIH07CiAjaWYgRU5BQkxFKFdF
Ql9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQogICAgIFdlYlBsYXliYWNrQ29udHJvbHNNYW5h
Z2VyICptX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyICB7IG51bGxwdHIgfTsKIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9QbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2VNYWMubW0KaW5kZXggYjhhYTkzYTE4ZWQ0YmYzNzRiYzdkN2M0NjZlNjU2ZTdiZmZlNzdkNC4u
Yjg2MjY2ZDRlMzNkMDA3YmZkNzhhNmZlNTMzYzdmNTM4NmQzOTM5ZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy5tbQor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjLm1tCkBAIC00NCwxOCArNDQsMjQgQEAgU09GVF9MSU5LX0NMQVNTX09QVElPTkFMKEFWS2l0
LCBBVlZhbHVlVGltaW5nKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWM+IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKFJl
ZjxQbGF5YmFja1Nlc3Npb25Nb2RlbD4mJiBtb2RlbCkKK1JlZjxQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM+IFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6Y3JlYXRlKFBsYXliYWNrU2Vz
c2lvbk1vZGVsJiBtb2RlbCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nl
c3Npb25JbnRlcmZhY2VNYWMoV1RGTW92ZShtb2RlbCkpKTsKKyAgICBhdXRvIGludGVyZmFjZSA9
IGFkb3B0UmVmKCpuZXcgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKG1vZGVsKSk7CisgICAg
bW9kZWwuYWRkQ2xpZW50KGludGVyZmFjZSk7CisgICAgcmV0dXJuIGludGVyZmFjZTsKIH0KIAot
UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMo
UmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVsPiYmIG1vZGVsKQotICAgIDogbV9wbGF5YmFja1Nlc3Np
b25Nb2RlbChXVEZNb3ZlKG1vZGVsKSkKK1BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6UGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjKFBsYXliYWNrU2Vzc2lvbk1vZGVsJiBtb2RlbCkKKyAg
ICA6IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwoJm1vZGVsKQogewotICAgIHBsYXliYWNrU2Vzc2lv
bk1vZGVsKCkuYWRkQ2xpZW50KG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcykp
OwogfQogCi1QbGF5YmFja1Nlc3Npb25Nb2RlbCYgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
OjpwbGF5YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0CitQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWM6On5QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMoKQoreworICAgIGludmFsaWRhdGUoKTsK
K30KKworUGxheWJhY2tTZXNzaW9uTW9kZWwqIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6
cGxheWJhY2tTZXNzaW9uTW9kZWwoKSBjb25zdAogewogICAgIHJldHVybiBtX3BsYXliYWNrU2Vz
c2lvbk1vZGVsOwogfQpAQCAtOTYsNyArMTAyLDcgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRl
cmZhY2VNYWM6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1JhdGUK
ICAgICBXZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlciogY29udHJvbHNNYW5hZ2VyID0gcGxheUJh
Y2tDb250cm9sc01hbmFnZXIoKTsKICAgICBbY29udHJvbHNNYW5hZ2VyIHNldFJhdGU6aXNQbGF5
aW5nID8gcGxheWJhY2tSYXRlIDogMC5dOwogICAgIFtjb250cm9sc01hbmFnZXIgc2V0UGxheWlu
Zzppc1BsYXlpbmddOwotICAgIHVwZGF0ZVBsYXliYWNrQ29udHJvbHNNYW5hZ2VyVGltaW5nKHBs
YXliYWNrU2Vzc2lvbk1vZGVsKCkuY3VycmVudFRpbWUoKSwgW1tOU1Byb2Nlc3NJbmZvIHByb2Nl
c3NJbmZvXSBzeXN0ZW1VcHRpbWVdLCBwbGF5YmFja1JhdGUsIGlzUGxheWluZyk7CisgICAgdXBk
YXRlUGxheWJhY2tDb250cm9sc01hbmFnZXJUaW1pbmcobV9wbGF5YmFja1Nlc3Npb25Nb2RlbCA/
IG1fcGxheWJhY2tTZXNzaW9uTW9kZWwtPmN1cnJlbnRUaW1lKCkgOiAwLCBbW05TUHJvY2Vzc0lu
Zm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0sIHBsYXliYWNrUmF0ZSwgaXNQbGF5aW5nKTsK
ICNlbHNlCiAgICAgVU5VU0VEX1BBUkFNKGlzUGxheWluZyk7CiAgICAgVU5VU0VEX1BBUkFNKHBs
YXliYWNrUmF0ZSk7CkBAIC0xMDYsMTQgKzExMiwxNCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYzo6cmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0
ZQogdm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmJlZ2luU2NydWJiaW5nKCkKIHsK
ICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xTX01BTkFHRVIpCi0gICAgdXBkYXRlUGxh
eWJhY2tDb250cm9sc01hbmFnZXJUaW1pbmcocGxheWJhY2tTZXNzaW9uTW9kZWwoKS5jdXJyZW50
VGltZSgpLCBbW05TUHJvY2Vzc0luZm8gcHJvY2Vzc0luZm9dIHN5c3RlbVVwdGltZV0sIDAsIGZh
bHNlKTsKKyAgICB1cGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlclRpbWluZyhtX3BsYXliYWNr
U2Vzc2lvbk1vZGVsID8gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+Y3VycmVudFRpbWUoKSA6IDAs
IFtbTlNQcm9jZXNzSW5mbyBwcm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXSwgMCwgZmFsc2UpOwog
I2VuZGlmCi0gICAgcGxheWJhY2tTZXNzaW9uTW9kZWwoKS5iZWdpblNjcnViYmluZygpOworICAg
IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPmJlZ2luU2NydWJiaW5nKCk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjOjplbmRTY3J1YmJpbmcoKQogewotICAgIHBsYXliYWNr
U2Vzc2lvbk1vZGVsKCkuZW5kU2NydWJiaW5nKCk7CisgICAgcGxheWJhY2tTZXNzaW9uTW9kZWwo
KS0+ZW5kU2NydWJiaW5nKCk7CiB9CiAKICNpZiBFTkFCTEUoV0VCX1BMQVlCQUNLX0NPTlRST0xT
X01BTkFHRVIpCkBAIC0xOTIsNiArMTk4LDE1IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjOjpleHRlcm5hbFBsYXliYWNrQ2hhbmdlZChib29sLCBQbGF5YmFja1Nlc3Npb25NCiAj
ZW5kaWYKIH0KIAordm9pZCBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUo
KQoreworICAgIGlmICghbV9wbGF5YmFja1Nlc3Npb25Nb2RlbCkKKyAgICAgICAgcmV0dXJuOwor
CisgICAgbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBt
X3BsYXliYWNrU2Vzc2lvbk1vZGVsID0gbnVsbHB0cjsKK30KKwogdm9pZCBQbGF5YmFja1Nlc3Np
b25JbnRlcmZhY2VNYWM6OmVuc3VyZUNvbnRyb2xzTWFuYWdlcigpCiB7CiAjaWYgRU5BQkxFKFdF
Ql9QTEFZQkFDS19DT05UUk9MU19NQU5BR0VSKQpAQCAtMjEwLDI3ICsyMjUsMzIgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM6OnNldFBsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKFdl
YlBsYXliYWNrQ29udHJvbHMKIHsKICAgICBtX3BsYXliYWNrQ29udHJvbHNNYW5hZ2VyID0gbWFu
YWdlcjsKIAotICAgIGlmICghbWFuYWdlcikKKyAgICBpZiAoIW1hbmFnZXIgfHwgIW1fcGxheWJh
Y2tTZXNzaW9uTW9kZWwpCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TVGltZUludGVydmFsIGFu
Y2hvclRpbWVTdGFtcCA9ICFbbWFuYWdlciByYXRlXSA/IE5BTiA6IFtbTlNQcm9jZXNzSW5mbyBw
cm9jZXNzSW5mb10gc3lzdGVtVXB0aW1lXTsKLSAgICBtYW5hZ2VyLnRpbWluZyA9IFtnZXRBVlZh
bHVlVGltaW5nQ2xhc3MoKSB2YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTpwbGF5YmFja1Nlc3Np
b25Nb2RlbCgpLmN1cnJlbnRUaW1lKCkgYW5jaG9yVGltZVN0YW1wOmFuY2hvclRpbWVTdGFtcCBy
YXRlOjBdOwotICAgIGRvdWJsZSBkdXJhdGlvbiA9IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkuZHVy
YXRpb24oKTsKKyAgICBtYW5hZ2VyLnRpbWluZyA9IFtnZXRBVlZhbHVlVGltaW5nQ2xhc3MoKSB2
YWx1ZVRpbWluZ1dpdGhBbmNob3JWYWx1ZTptX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5jdXJyZW50
VGltZSgpIGFuY2hvclRpbWVTdGFtcDphbmNob3JUaW1lU3RhbXAgcmF0ZTowXTsKKyAgICBkb3Vi
bGUgZHVyYXRpb24gPSBtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5kdXJhdGlvbigpOwogICAgIG1h
bmFnZXIuY29udGVudER1cmF0aW9uID0gZHVyYXRpb247CiAgICAgbWFuYWdlci5oYXNFbmFibGVk
QXVkaW8gPSBkdXJhdGlvbiA+IDA7CiAgICAgbWFuYWdlci5oYXNFbmFibGVkVmlkZW8gPSBkdXJh
dGlvbiA+IDA7Ci0gICAgbWFuYWdlci5yYXRlID0gcGxheWJhY2tTZXNzaW9uTW9kZWwoKS5pc1Bs
YXlpbmcoKSA/IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucGxheWJhY2tSYXRlKCkgOiAwLjsKLSAg
ICBtYW5hZ2VyLnNlZWthYmxlVGltZVJhbmdlcyA9IHRpbWVSYW5nZXNUb0FycmF5KHBsYXliYWNr
U2Vzc2lvbk1vZGVsKCkuc2Vla2FibGVSYW5nZXMoKSkuZ2V0KCk7CisgICAgbWFuYWdlci5yYXRl
ID0gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+aXNQbGF5aW5nKCkgPyBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsLT5wbGF5YmFja1JhdGUoKSA6IDAuOworICAgIG1hbmFnZXIuc2Vla2FibGVUaW1lUmFu
Z2VzID0gdGltZVJhbmdlc1RvQXJyYXkobV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+c2Vla2FibGVS
YW5nZXMoKSkuZ2V0KCk7CiAgICAgbWFuYWdlci5jYW5Ub2dnbGVQbGF5YmFjayA9IFlFUzsKLSAg
ICBtYW5hZ2VyLnBsYXlpbmcgPSBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmlzUGxheWluZygpOwot
ICAgIFttYW5hZ2VyIHNldEF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25zOnBsYXliYWNrU2Vzc2lv
bk1vZGVsKCkuYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSB3aXRoU2VsZWN0ZWRJbmRleDpz
dGF0aWNfY2FzdDxOU1VJbnRlZ2VyPihwbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmF1ZGlvTWVkaWFT
ZWxlY3RlZEluZGV4KCkpXTsKLSAgICBbbWFuYWdlciBzZXRMZWdpYmxlTWVkaWFTZWxlY3Rpb25P
cHRpb25zOnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkubGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9u
cygpIHdpdGhTZWxlY3RlZEluZGV4OnN0YXRpY19jYXN0PE5TVUludGVnZXI+KHBsYXliYWNrU2Vz
c2lvbk1vZGVsKCkubGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpKV07CisgICAgbWFuYWdlci5w
bGF5aW5nID0gbV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+aXNQbGF5aW5nKCk7CisgICAgW21hbmFn
ZXIgc2V0QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM6bV9wbGF5YmFja1Nlc3Npb25Nb2RlbC0+
YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMoKSB3aXRoU2VsZWN0ZWRJbmRleDpzdGF0aWNfY2Fz
dDxOU1VJbnRlZ2VyPihtX3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5hdWRpb01lZGlhU2VsZWN0ZWRJ
bmRleCgpKV07CisgICAgW21hbmFnZXIgc2V0TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uczpt
X3BsYXliYWNrU2Vzc2lvbk1vZGVsLT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25PcHRpb25zKCkgd2l0
aFNlbGVjdGVkSW5kZXg6c3RhdGljX2Nhc3Q8TlNVSW50ZWdlcj4obV9wbGF5YmFja1Nlc3Npb25N
b2RlbC0+bGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCgpKV07CiB9CiAKIHZvaWQgUGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjOjp1cGRhdGVQbGF5YmFja0NvbnRyb2xzTWFuYWdlckNhblRvZ2ds
ZVBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIGF1dG8mIG1vZGVsID0gcGxheWJhY2tTZXNzaW9u
TW9kZWwoKTsKLSAgICBbcGxheUJhY2tDb250cm9sc01hbmFnZXIoKSBzZXRDYW5Ub2dnbGVQaWN0
dXJlSW5QaWN0dXJlOm1vZGVsLmlzUGljdHVyZUluUGljdHVyZVN1cHBvcnRlZCgpICYmICFtb2Rl
bC5leHRlcm5hbFBsYXliYWNrRW5hYmxlZCgpXTsKKyAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbCog
bW9kZWwgPSBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpOworICAgIGlmICghbW9kZWwpIHsKKyAgICAg
ICAgW3BsYXlCYWNrQ29udHJvbHNNYW5hZ2VyKCkgc2V0Q2FuVG9nZ2xlUGljdHVyZUluUGljdHVy
ZTpOT107CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBbcGxheUJhY2tDb250cm9sc01h
bmFnZXIoKSBzZXRDYW5Ub2dnbGVQaWN0dXJlSW5QaWN0dXJlOm1vZGVsLT5pc1BpY3R1cmVJblBp
Y3R1cmVTdXBwb3J0ZWQoKSAmJiAhbW9kZWwtPmV4dGVybmFsUGxheWJhY2tFbmFibGVkKCldOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6dXBkYXRlUGxheWJhY2tDb250
cm9sc01hbmFnZXJUaW1pbmcoZG91YmxlIGN1cnJlbnRUaW1lLCBkb3VibGUgYW5jaG9yVGltZSwg
ZG91YmxlIHBsYXliYWNrUmF0ZSwgYm9vbCBpc1BsYXlpbmcpCkBAIC0yMzksMTQgKzI1OSwxNiBA
QCB2b2lkIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzo6dXBkYXRlUGxheWJhY2tDb250cm9s
c01hbmFnZXJUaW1pbmcoZG91YmxlIGN1cgogICAgIGlmICghbWFuYWdlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgYXV0byYgbW9kZWwgPSBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpOworICAgIFBs
YXliYWNrU2Vzc2lvbk1vZGVsICptb2RlbCA9IHBsYXliYWNrU2Vzc2lvbk1vZGVsKCk7CisgICAg
aWYgKCFtb2RlbCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgZG91YmxlIGVmZmVjdGl2ZUFuY2hv
clRpbWUgPSBwbGF5YmFja1JhdGUgPyBhbmNob3JUaW1lIDogTkFOOwogICAgIGRvdWJsZSBlZmZl
Y3RpdmVQbGF5YmFja1JhdGUgPSBwbGF5YmFja1JhdGU7CiAgICAgaWYgKCFpc1BsYXlpbmcKLSAg
ICAgICAgfHwgbW9kZWwuaXNTY3J1YmJpbmcoKQotICAgICAgICB8fCAobWFuYWdlci5yYXRlID4g
MCAmJiBtb2RlbC5wbGF5YmFja1N0YXJ0ZWRUaW1lKCkgPj0gY3VycmVudFRpbWUpCi0gICAgICAg
IHx8IChtYW5hZ2VyLnJhdGUgPCAwICYmIG1vZGVsLnBsYXliYWNrU3RhcnRlZFRpbWUoKSA8PSBj
dXJyZW50VGltZSkpCisgICAgICAgIHx8IG1vZGVsLT5pc1NjcnViYmluZygpCisgICAgICAgIHx8
IChtYW5hZ2VyLnJhdGUgPiAwICYmIG1vZGVsLT5wbGF5YmFja1N0YXJ0ZWRUaW1lKCkgPj0gY3Vy
cmVudFRpbWUpCisgICAgICAgIHx8IChtYW5hZ2VyLnJhdGUgPCAwICYmIG1vZGVsLT5wbGF5YmFj
a1N0YXJ0ZWRUaW1lKCkgPD0gY3VycmVudFRpbWUpKQogICAgICAgICBlZmZlY3RpdmVQbGF5YmFj
a1JhdGUgPSAwOwogCiAgICAgbWFuYWdlci50aW1pbmcgPSBbZ2V0QVZWYWx1ZVRpbWluZ0NsYXNz
KCkgdmFsdWVUaW1pbmdXaXRoQW5jaG9yVmFsdWU6Y3VycmVudFRpbWUgYW5jaG9yVGltZVN0YW1w
OmVmZmVjdGl2ZUFuY2hvclRpbWUgcmF0ZTplZmZlY3RpdmVQbGF5YmFja1JhdGVdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYy5oCmluZGV4IGUwMDU3M2E1YWU2YzYyMjU3MzdjNjdlODc4ODdlM2JiOWNmYmEyZjYu
LmFmMmM2NDlmNTdlNWUxNTg1ODMxZGY4YjI0NjI2MmIyZTczZDZjYjUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjLmgKQEAgLTMzLDcgKzMzLDYgQEAKICNpbmNsdWRlICJWaWRlb0Z1bGxzY3JlZW5Nb2RlbC5o
IgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JldGFpblB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9XZWFrUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5n
Lmg+CiAKIE9CSkNfQ0xBU1MgTlNXaW5kb3c7CkBAIC00NywyMSArNDYsMjEgQEAgY2xhc3MgVmlk
ZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI7CiAKIGNsYXNzIFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYwogICAgIDogcHVibGljIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Ci0gICAgLCBw
dWJsaWMgUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQKLSAgICAsIHB1YmxpYyBSZWZDb3VudGVk
PFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYz4KLSAgICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0
cjxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM+IHsKKyAgICAsIHByaXZhdGUgUGxheWJhY2tT
ZXNzaW9uTW9kZWxDbGllbnQKKyAgICAsIHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYz4gewogCiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3Jl
ZW5JbnRlcmZhY2VNYWM+IGNyZWF0ZShSZWY8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjPiYm
IHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSwgUmVmPFZpZGVvRnVsbHNjcmVlbk1vZGVsPiB2aWRl
b0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYz4gY3JlYXRlKFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyYgcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgVmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjKFdURk1vdmUocGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlKSwgV1RG
TW92ZSh2aWRlb0Z1bGxzY3JlZW5Nb2RlbCkpKTsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkp
OwogICAgIH0KICAgICB2aXJ0dWFsIH5WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoKTsKICAg
ICBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMmIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSgp
IGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLmdldCgpOyB9Ci0gICAg
VmlkZW9GdWxsc2NyZWVuTW9kZWwmIHZpZGVvRnVsbHNjcmVlbk1vZGVsKCkgY29uc3QgeyByZXR1
cm4gbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbDsgfQotICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsJiBw
bGF5YmFja1Nlc3Npb25Nb2RlbCgpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWJhY2tTZXNzaW9uSW50
ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpOyB9Ci0gICAgVmlkZW9GdWxsc2NyZWVuQ2hh
bmdlT2JzZXJ2ZXIqIHZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCkgY29uc3QgeyByZXR1
cm4gbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIuZ2V0KCk7IH0KLSAgICBXRUJDT1JFX0VYUE9S
VCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKFdlYWtQdHI8VmlkZW9GdWxs
c2NyZWVuQ2hhbmdlT2JzZXJ2ZXI+KTsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlbCogdmlkZW9G
dWxsc2NyZWVuTW9kZWwoKSBjb25zdCB7IHJldHVybiBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsOyB9
CisgICAgUGxheWJhY2tTZXNzaW9uTW9kZWwqIHBsYXliYWNrU2Vzc2lvbk1vZGVsKCkgY29uc3Qg
eyByZXR1cm4gbV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVs
KCk7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVsbHNjcmVlbk1vZGVsKFZp
ZGVvRnVsbHNjcmVlbk1vZGVsKik7CisgICAgVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIq
IHZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKCkgY29uc3QgeyByZXR1cm4gbV9mdWxsc2Ny
ZWVuQ2hhbmdlT2JzZXJ2ZXI7IH0KKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHNldFZpZGVvRnVs
bHNjcmVlbkNoYW5nZU9ic2VydmVyKFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKik7CiAK
ICAgICAvLyBQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAogICAgIFdFQkNPUkVfRVhQT1JUIHZv
aWQgcmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkgb3ZlcnJp
ZGU7CkBAIC05OCwxMSArOTcsMTAgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQg
cmVxdWVzdEhpZGVBbmRFeGl0UGlQKCk7CiAKIHByaXZhdGU6Ci0gICAgV0VCQ09SRV9FWFBPUlQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VN
YWM+JiYsIFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbD4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQg
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyYp
OwogICAgIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWM+IG1fcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlOwotICAgIFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbD4gbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbDsKLSAgICBXZWFrUHRyRmFjdG9yeTxQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4g
bV93ZWFrUHRyRmFjdG9yeTsKLSAgICBXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2Vy
dmVyPiBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcjsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2Rl
bCogbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbCB7IG51bGxwdHIgfTsKKyAgICBWaWRlb0Z1bGxzY3Jl
ZW5DaGFuZ2VPYnNlcnZlciogbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIgeyBudWxscHRyIH07
CiAgICAgSFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlIG1fbW9kZSB7
IEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZU5vbmUgfTsKICAgICBS
ZXRhaW5QdHI8V2ViVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjT2JqQz4gbV93ZWJWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VPYmpDOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0gYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9tYWMvVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLm1tCmluZGV4IDQ5OWEw
Mzg5Mzg0NWNlZjQwNjY1YzEyOTU0MjRjNDYwYzk3MThiYWIuLjBhZTZhZmVhZGUzMTMxNzVkMmUz
Njg1Y2Q3YTJiNTRlODUwNmIwN2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMubW0KKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbWFjL1ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy5tbQpAQCAtMzksNyArMzks
NiBAQAogI2ltcG9ydCA8cGFsL2F2Zm91bmRhdGlvbi9NZWRpYVRpbWVBVkZvdW5kYXRpb24uaD4K
ICNpbXBvcnQgPHBhbC9zcGkvY29jb2EvQVZLaXRTUEkuaD4KICNpbXBvcnQgPHBhbC9zcGkvbWFj
L1BJUFNQSS5oPgotI2ltcG9ydCA8d3RmL1dlYWtPYmpDUHRyLmg+CiAKICNpbXBvcnQgPHBhbC9j
Zi9Db3JlTWVkaWFTb2Z0TGluay5oPgogCkBAIC02NSw5ICs2NCwxMSBAQCB1c2luZyBXZWJDb3Jl
OjpWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcjsKIHVzaW5nIFdlYkNvcmU6OlBsYXliYWNr
U2Vzc2lvbk1vZGVsOwogCiBAaW50ZXJmYWNlIFdlYlZpZGVvVmlld0NvbnRhaW5lciA6IE5TVmll
dyB7Ci0gICAgX193ZWFrIGlkIDxXZWJWaWRlb1ZpZXdDb250YWluZXJEZWxlZ2F0ZT4gX3ZpZGVv
Vmlld0NvbnRhaW5lckRlbGVnYXRlOworICAgIF9fdW5zYWZlX3VucmV0YWluZWQgaWQgPFdlYlZp
ZGVvVmlld0NvbnRhaW5lckRlbGVnYXRlPiBfdmlkZW9WaWV3Q29udGFpbmVyRGVsZWdhdGU7CiB9
Ci1AcHJvcGVydHkgKG5vbmF0b21pYywgd2VhaywgYXNzaWduKSBpZCA8V2ViVmlkZW9WaWV3Q29u
dGFpbmVyRGVsZWdhdGU+IHZpZGVvVmlld0NvbnRhaW5lckRlbGVnYXRlOworCitAcHJvcGVydHkg
KG5vbmF0b21pYywgYXNzaWduKSBpZCA8V2ViVmlkZW9WaWV3Q29udGFpbmVyRGVsZWdhdGU+IHZp
ZGVvVmlld0NvbnRhaW5lckRlbGVnYXRlOworCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXZWJW
aWRlb1ZpZXdDb250YWluZXIKQEAgLTk3LDcgKzk4LDcgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7
CiB9OwogCiBAaW50ZXJmYWNlIFdlYlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hY09iakMgOiBO
U09iamVjdCA8UElQVmlld0NvbnRyb2xsZXJEZWxlZ2F0ZSwgV2ViVmlkZW9WaWV3Q29udGFpbmVy
RGVsZWdhdGU+IHsKLSAgICBXZWFrUHRyPFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZU1hYz4gX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzsKKyAgICBXZWJDb3JlOjpWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMqIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM7CiAgICAg
TlNTaXplIF92aWRlb0RpbWVuc2lvbnM7CiAgICAgUmV0YWluUHRyPFBJUFZpZXdDb250cm9sbGVy
PiBfcGlwVmlld0NvbnRyb2xsZXI7CiAgICAgUmV0YWluUHRyPE5TVmlld0NvbnRyb2xsZXI+IF92
aWRlb1ZpZXdDb250YWluZXJDb250cm9sbGVyOwpAQCAtMTM5LDcgKzE0MCw3IEBAIGVudW0gY2xh
c3MgUElQU3RhdGUgewogICAgIGlmICghKHNlbGYgPSBbc3VwZXIgaW5pdF0pKQogICAgICAgICBy
ZXR1cm4gbmlsOwogCi0gICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyA9IG1ha2VXZWFr
UHRyKHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyk7CisgICAgX3ZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYyA9IHZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzsKICAgICBfcGlwU3RhdGUg
PSBQSVBTdGF0ZTo6Tm90SW5QSVA7CiAKICAgICByZXR1cm4gc2VsZjsKQEAgLTE5MSw4ICsxOTIs
OCBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHNldFVz
ZXJDYW5SZXNpemU6WUVTXTsKICAgICBbX3BpcFZpZXdDb250cm9sbGVyIHNldFBsYXlpbmc6X3Bs
YXlpbmddOwogICAgIFtzZWxmIHNldFZpZGVvRGltZW5zaW9uczpOU0VxdWFsU2l6ZXMoX3ZpZGVv
RGltZW5zaW9ucywgTlNaZXJvU2l6ZSkgPyBmcmFtZS5zaXplIDogX3ZpZGVvRGltZW5zaW9uc107
Ci0gICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpCi0gICAgICAgIF92aWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuc2V0VmlkZW9MYXll
ckdyYXZpdHkoVmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdEZp
bGwpOworICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjICYmIF92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgIF92aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVv
TGF5ZXJHcmF2aXR5KFZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNpemVBc3Bl
Y3RGaWxsKTsKIAogICAgIF92aWRlb1ZpZXdDb250YWluZXIgPSBhZG9wdE5TKFtbV2ViVmlkZW9W
aWV3Q29udGFpbmVyIGFsbG9jXSBpbml0V2l0aEZyYW1lOmZyYW1lXSk7CiAgICAgW192aWRlb1Zp
ZXdDb250YWluZXIgc2V0VmlkZW9WaWV3Q29udGFpbmVyRGVsZWdhdGU6c2VsZl07CkBAIC0yNDUs
OCArMjQ2LDggQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAKICAgICBBU1NFUlRfVU5VU0VEKHZp
ZGVvVmlld0NvbnRhaW5lciwgdmlkZW9WaWV3Q29udGFpbmVyID09IF92aWRlb1ZpZXdDb250YWlu
ZXIpOwogCi0gICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpCi0gICAgICAgIF92
aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkuc2V0Vmlk
ZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3Q29udGFpbmVyIGJvdW5kc10pOworICAgIGlmIChfdmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjICYmIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMt
PnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2VNYWMtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCktPnNldFZpZGVvTGF5ZXJGcmFtZShbX3ZpZGVv
Vmlld0NvbnRhaW5lciBib3VuZHNdKTsKIH0KIAogLSAodm9pZClzdXBlcnZpZXdEaWRDaGFuZ2VG
b3JWaWRlb1ZpZXdDb250YWluZXI6KFdlYlZpZGVvVmlld0NvbnRhaW5lciAqKXZpZGVvVmlld0Nv
bnRhaW5lcgpAQCAtMjgyLDEyICsyODMsMTIgQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiB7CiAg
ICAgQVNTRVJUX1VOVVNFRChwaXAsIHBpcCA9PSBfcGlwVmlld0NvbnRyb2xsZXIpOwogCi0gICAg
aWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMgJiYgX3ZpZGVvVmlld0NvbnRhaW5lciAm
JiBfcmV0dXJuaW5nV2luZG93ICYmICFOU0VxdWFsUmVjdHMoX3JldHVybmluZ1JlY3QsIE5TWmVy
b1JlY3QpKSB7CisgICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMgJiYgX3ZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSAmJiBfdmlkZW9W
aWV3Q29udGFpbmVyICYmIF9yZXR1cm5pbmdXaW5kb3cgJiYgIU5TRXF1YWxSZWN0cyhfcmV0dXJu
aW5nUmVjdCwgTlNaZXJvUmVjdCkpIHsKICAgICAgICAgW05TQW5pbWF0aW9uQ29udGV4dCBydW5B
bmltYXRpb25Hcm91cDpeKE5TQW5pbWF0aW9uQ29udGV4dCAqY29udGV4dCkgewogICAgICAgICAg
ICAgY29udGV4dC5hbGxvd3NJbXBsaWNpdEFuaW1hdGlvbiA9IE5POwogICAgICAgICAgICAgW192
aWRlb1ZpZXdDb250YWluZXIgc2V0RnJhbWU6X3JldHVybmluZ1JlY3RdOwotICAgICAgICAgICAg
X3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS5zZXRW
aWRlb0xheWVyRnJhbWUoW192aWRlb1ZpZXdDb250YWluZXIgYm91bmRzXSk7Ci0gICAgICAgICAg
ICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnNl
dFZpZGVvTGF5ZXJHcmF2aXR5KFZpZGVvRnVsbHNjcmVlbk1vZGVsOjpWaWRlb0dyYXZpdHlSZXNp
emVBc3BlY3QpOworICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlk
ZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckZyYW1lKFtfdmlkZW9WaWV3Q29udGFp
bmVyIGJvdW5kc10pOworICAgICAgICAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+
dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+c2V0VmlkZW9MYXllckdyYXZpdHkoVmlkZW9GdWxsc2Ny
ZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCk7CiAKICAgICAgICAgICAgIFtbX3Jl
dHVybmluZ1dpbmRvdyBjb250ZW50Vmlld10gYWRkU3VidmlldzpfdmlkZW9WaWV3Q29udGFpbmVy
LmdldCgpIHBvc2l0aW9uZWQ6TlNXaW5kb3dBYm92ZSByZWxhdGl2ZVRvOm5pbF07CiAgICAgICAg
IH0gY29tcGxldGlvbkhhbmRsZXI6bmlsXTsKQEAgLTI5NSw5ICsyOTYsMTAgQEAgZW51bSBjbGFz
cyBQSVBTdGF0ZSB7CiAKICAgICBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYykgewog
ICAgICAgICBpZiAoIXNlbGYuaXNFeGl0aW5nVG9TdGFuZGFyZEZ1bGxzY3JlZW4pIHsKLSAgICAg
ICAgICAgIFJlZjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbD4gdmlkZW9GdWxsc2NyZWVuTW9kZWwgPSBf
dmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpOwotICAg
ICAgICAgICAgdmlkZW9GdWxsc2NyZWVuTW9kZWwtPmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCk7
Ci0gICAgICAgICAgICB2aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+c2V0VmlkZW9MYXllckdyYXZpdHko
VmlkZW9GdWxsc2NyZWVuTW9kZWw6OlZpZGVvR3Jhdml0eVJlc2l6ZUFzcGVjdCk7CisgICAgICAg
ICAgICBpZiAoVmlkZW9GdWxsc2NyZWVuTW9kZWwqIHZpZGVvRnVsbHNjcmVlbk1vZGVsID0gX3Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkgeworICAg
ICAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsLT5kaWRFeGl0UGljdHVyZUluUGljdHVy
ZSgpOworICAgICAgICAgICAgICAgIHZpZGVvRnVsbHNjcmVlbk1vZGVsLT5zZXRWaWRlb0xheWVy
R3Jhdml0eShWaWRlb0Z1bGxzY3JlZW5Nb2RlbDo6VmlkZW9HcmF2aXR5UmVzaXplQXNwZWN0KTsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAgIF92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMtPmNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bk1vZGVQaWN0dXJlSW5QaWN0dXJlKTsKQEAgLTMxMSwxNiArMzEzLDE2IEBAIGVudW0gY2xhc3Mg
UElQU3RhdGUgewogewogICAgIEFTU0VSVF9VTlVTRUQocGlwLCBwaXAgPT0gX3BpcFZpZXdDb250
cm9sbGVyKTsKIAotICAgIGlmIChfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKQotICAgICAg
ICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnBs
YXkoKTsKKyAgICBpZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyAmJiBfdmlkZW9GdWxs
c2NyZWVuSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpKQorICAgICAgICBfdmlk
ZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5wbGF5KCk7
CiB9CiAKIC0gKHZvaWQpcGlwQWN0aW9uUGF1c2U6KFBJUFZpZXdDb250cm9sbGVyICopcGlwCiB7
CiAgICAgQVNTRVJUX1VOVVNFRChwaXAsIHBpcCA9PSBfcGlwVmlld0NvbnRyb2xsZXIpOwogCi0g
ICAgaWYgKF92aWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMpCi0gICAgICAgIF92aWRlb0Z1bGxz
Y3JlZW5JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucGF1c2UoKTsKKyAgICBp
ZiAoX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYyAmJiBfdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpKQorICAgICAgICBfdmlkZW9GdWxsc2NyZWVu
SW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5wYXVzZSgpOwogfQogCiAtICh2
b2lkKXBpcEFjdGlvblN0b3A6KFBJUFZpZXdDb250cm9sbGVyICopcGlwCkBAIC0zMzAsNyArMzMy
LDggQEAgZW51bSBjbGFzcyBQSVBTdGF0ZSB7CiAgICAgaWYgKCFfdmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjKQogICAgICAgICByZXR1cm47CiAKLSAgICBfdmlkZW9GdWxsc2NyZWVuSW50ZXJm
YWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnBhdXNlKCk7CisgICAgaWYgKFBsYXliYWNr
U2Vzc2lvbk1vZGVsKiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IF92aWRlb0Z1bGxzY3JlZW5JbnRl
cmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkpCisgICAgICAgIHBsYXliYWNrU2Vzc2lv
bk1vZGVsLT5wYXVzZSgpOwogCiAgICAgX3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYy0+cmVx
dWVzdEhpZGVBbmRFeGl0UGlQKCk7CiAgICAgX3BpcFN0YXRlID0gUElQU3RhdGU6OkV4aXRpbmdQ
SVA7CkBAIC0zNDEsMjQgKzM0NCwzMyBAQCBlbnVtIGNsYXNzIFBJUFN0YXRlIHsKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIHVzaW5nIG5hbWVzcGFjZSBQQUw7CiAKLVZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZU1hYzo6VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlTWFjKFJlZjxQbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2VNYWM+JiYgcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLCBSZWY8VmlkZW9GdWxsc2Ny
ZWVuTW9kZWw+JiYgdmlkZW9GdWxsc2NyZWVuTW9kZWwpCi0gICAgOiBtX3BsYXliYWNrU2Vzc2lv
bkludGVyZmFjZShXVEZNb3ZlKHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSkpCi0gICAgLCBtX3Zp
ZGVvRnVsbHNjcmVlbk1vZGVsKFdURk1vdmUodmlkZW9GdWxsc2NyZWVuTW9kZWwpKQorVmlkZW9G
dWxsc2NyZWVuSW50ZXJmYWNlTWFjOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWMoUGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjJiBwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCisgICAgOiBt
X3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCiB7Ci0g
ICAgYXV0byYgbW9kZWwgPSBwbGF5YmFja1Nlc3Npb25Nb2RlbCgpOwotICAgIG1vZGVsLmFkZENs
aWVudChtYWtlV2Vha1B0cih0aGlzKSk7Ci0gICAgW3ZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU9i
akMoKSB1cGRhdGVJc1BsYXlpbmc6bW9kZWwuaXNQbGF5aW5nKCkgbmV3UGxheWJhY2tSYXRlOm1v
ZGVsLnBsYXliYWNrUmF0ZSgpXTsKKyAgICBBU1NFUlQobV9wbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkpOworICAgIGF1dG8gbW9kZWwgPSBtX3BsYXliYWNr
U2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKTsKKyAgICBtb2RlbC0+YWRk
Q2xpZW50KCp0aGlzKTsKKyAgICBbdmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlT2JqQygpIHVwZGF0
ZUlzUGxheWluZzptb2RlbC0+aXNQbGF5aW5nKCkgbmV3UGxheWJhY2tSYXRlOm1vZGVsLT5wbGF5
YmFja1JhdGUoKV07CiB9CiAKIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZU1hYzo6flZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZU1hYygpCiB7Ci0gICAgaW52YWxpZGF0ZSgpOwotICAgIGF1dG8mIG1v
ZGVsID0gcGxheWJhY2tTZXNzaW9uTW9kZWwoKTsKLSAgICBtb2RlbC5yZW1vdmVDbGllbnQoKnRo
aXMpOwotICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwtPnJlbW92ZUNsaWVudCgqdGhpcyk7Cisg
ICAgaWYgKG1fcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgp
KQorICAgICAgICBtX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9k
ZWwoKS0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsKKyAgICBpZiAobV92aWRlb0Z1bGxzY3JlZW5Nb2Rl
bCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3ZlQ2xpZW50KCp0aGlzKTsK
IH0KIAotdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRnVsbHNjcmVl
bkNoYW5nZU9ic2VydmVyKFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI+IG9i
c2VydmVyKQordm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6OnNldFZpZGVvRnVsbHNj
cmVlbk1vZGVsKFZpZGVvRnVsbHNjcmVlbk1vZGVsKiBtb2RlbCkKK3sKKyAgICBpZiAobV92aWRl
b0Z1bGxzY3JlZW5Nb2RlbCkKKyAgICAgICAgbV92aWRlb0Z1bGxzY3JlZW5Nb2RlbC0+cmVtb3Zl
Q2xpZW50KCp0aGlzKTsKKyAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsID0gbW9kZWw7CisgICAg
aWYgKG1fdmlkZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIG1fdmlkZW9GdWxsc2NyZWVuTW9k
ZWwtPmFkZENsaWVudCgqdGhpcyk7Cit9CisKK3ZvaWQgVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNl
TWFjOjpzZXRWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcihWaWRlb0Z1bGxzY3JlZW5DaGFu
Z2VPYnNlcnZlciogb2JzZXJ2ZXIpCiB7CiAgICAgbV9mdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXIg
PSBvYnNlcnZlcjsKIH0KQEAgLTM3MCw3ICszODIsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6c2V0TW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVl
bgogICAgICAgICByZXR1cm47CiAKICAgICBtX21vZGUgPSBuZXdNb2RlOwotICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX21vZGUpOworICAgIGlmICht
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5m
dWxsc2NyZWVuTW9kZUNoYW5nZWQobV9tb2RlKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWM6OmNsZWFyTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNj
cmVlbk1vZGUgbW9kZSkKQEAgLTM4MCw3ICszOTMsOCBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbklu
dGVyZmFjZU1hYzo6Y2xlYXJNb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2Ny
ZQogICAgICAgICByZXR1cm47CiAKICAgICBtX21vZGUgPSBuZXdNb2RlOwotICAgIG1fdmlkZW9G
dWxsc2NyZWVuTW9kZWwtPmZ1bGxzY3JlZW5Nb2RlQ2hhbmdlZChtX21vZGUpOworICAgIGlmICht
X3ZpZGVvRnVsbHNjcmVlbk1vZGVsKQorICAgICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT5m
dWxsc2NyZWVuTW9kZUNoYW5nZWQobV9tb2RlKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5J
bnRlcmZhY2VNYWM6OnJhdGVDaGFuZ2VkKGJvb2wgaXNQbGF5aW5nLCBmbG9hdCBwbGF5YmFja1Jh
dGUpCkBAIC00ODUsNiArNDk5LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VNYWM6
OmludmFsaWRhdGUoKQogewogICAgIExPRyhGdWxsc2NyZWVuLCAiVmlkZW9GdWxsc2NyZWVuSW50
ZXJmYWNlTWFjOjppbnZhbGlkYXRlKCVwKSIsIHRoaXMpOwogCisgICAgbV92aWRlb0Z1bGxzY3Jl
ZW5Nb2RlbCA9IG5pbDsKICAgICBtX2Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciA9IG5pbDsKIAog
ICAgIGNsZWFudXBGdWxsc2NyZWVuKCk7CkBAIC00OTUsNiArNTEwLDkgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5JbnRlcmZhY2VNYWM6OmludmFsaWRhdGUoKQogCiB2b2lkIFZpZGVvRnVsbHNjcmVl
bkludGVyZmFjZU1hYzo6cmVxdWVzdEhpZGVBbmRFeGl0UGlQKCkKIHsKKyAgICBpZiAoIW1fdmlk
ZW9GdWxsc2NyZWVuTW9kZWwpCisgICAgICAgIHJldHVybjsKKwogICAgIG1fdmlkZW9GdWxsc2Ny
ZWVuTW9kZWwtPnJlcXVlc3RGdWxsc2NyZWVuTW9kZShIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZp
ZGVvRnVsbHNjcmVlbk1vZGVOb25lKTsKICAgICBtX3ZpZGVvRnVsbHNjcmVlbk1vZGVsLT53aWxs
RXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL21hYy9XZWJQbGF5YmFja0NvbnRyb2xzTWFuYWdlci5tbQppbmRleCAwZGQxMjUx
YmQ2ZWI5MmM5NjU5ODFhNDI4ZTdiNjZjNDAwMTAyYjE5Li5hYzA4ZDFmYmRmMTEyYzY1ODg1Yjlj
ZDg5NWYyZWZlMTExNzNiYjYzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvV2ViUGxheWJhY2tDb250cm9sc01hbmFnZXIubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1dlYlBsYXliYWNrQ29udHJvbHNNYW5hZ2VyLm1tCkBAIC05Myw3ICs5Myw3IEBA
IHVzaW5nIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsKIHsKICAgICBVTlVT
RURfUEFSQU0odG9sZXJhbmNlQmVmb3JlKTsKICAgICBVTlVTRURfUEFSQU0odG9sZXJhbmNlQWZ0
ZXIpOwotICAgIF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1v
ZGVsKCkuc2Vla1RvVGltZSh0aW1lKTsKKyAgICBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
LT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5zZWVrVG9UaW1lKHRpbWUpOwogfQogCiAtICh2b2lk
KWNhbmNlbFRodW1ibmFpbEFuZEF1ZGlvQW1wbGl0dWRlU2FtcGxlR2VuZXJhdGlvbgpAQCAtMTky
LDcgKzE5Miw3IEBAIHVzaW5nIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYzsK
ICAgICBpZiAoYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbiAmJiBfYXVkaW9Ub3VjaEJhck1lZGlh
U2VsZWN0aW9uT3B0aW9ucykKICAgICAgICAgaW5kZXggPSBbX2F1ZGlvVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDphdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uXTsK
IAotICAgIF9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMtPnBsYXliYWNrU2Vzc2lvbk1vZGVs
KCkuc2VsZWN0QXVkaW9NZWRpYU9wdGlvbihpbmRleCAhPSBOU05vdEZvdW5kID8gaW5kZXggOiBV
SU5UNjRfTUFYKTsKKyAgICBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nl
c3Npb25Nb2RlbCgpLT5zZWxlY3RBdWRpb01lZGlhT3B0aW9uKGluZGV4ICE9IE5TTm90Rm91bmQg
PyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCiAtIChOU0FycmF5PEFWVG91Y2hCYXJNZWRpYVNl
bGVjdGlvbk9wdGlvbiAqPiAqKWxlZ2libGVUb3VjaEJhck1lZGlhU2VsZWN0aW9uT3B0aW9ucwpA
QCAtMjIyLDcgKzIyMiw3IEBAIHVzaW5nIFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYzsKICAgICBpZiAobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uICYmIF9sZWdpYmxlVG91
Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMpCiAgICAgICAgIGluZGV4ID0gW19sZWdpYmxlVG91
Y2hCYXJNZWRpYVNlbGVjdGlvbk9wdGlvbnMgaW5kZXhPZk9iamVjdDpsZWdpYmxlTWVkaWFTZWxl
Y3Rpb25PcHRpb25dOwogCi0gICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJh
Y2tTZXNzaW9uTW9kZWwoKS5zZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oaW5kZXggIT0gTlNOb3RG
b3VuZCA/IGluZGV4IDogVUlOVDY0X01BWCk7CisgICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+c2VsZWN0TGVnaWJsZU1lZGlhT3B0aW9uKGlu
ZGV4ICE9IE5TTm90Rm91bmQgPyBpbmRleCA6IFVJTlQ2NF9NQVgpOwogfQogCiAjaWYgX19NQUNf
T1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDEzMDAKQEAgLTMxMywzNCArMzEzLDM0IEBA
IHN0YXRpYyBSZXRhaW5QdHI8TlNNdXRhYmxlQXJyYXk+IG1lZGlhU2VsZWN0aW9uT3B0aW9ucyhj
b25zdCBWZWN0b3I8TWVkaWFTZWxlY3RpCiAKIC0gKHZvaWQpdG9nZ2xlUGxheWJhY2sKIHsKLSAg
ICBpZiAoX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYykKLSAgICAgICAgX3BsYXliYWNrU2Vz
c2lvbkludGVyZmFjZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS50b2dnbGVQbGF5U3RhdGUo
KTsKKyAgICBpZiAoX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyAmJiBfcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpKQorICAgICAgICBfcGxheWJh
Y2tTZXNzaW9uSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT50b2dnbGVQbGF5
U3RhdGUoKTsKIH0KIAogLSAodm9pZClzZXRQbGF5aW5nOihCT09MKXBsYXlpbmcKIHsKLSAgICBp
ZiAoIV9wbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VNYWMpCisgICAgaWYgKCFfcGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlTWFjIHx8ICFfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLT5wbGF5YmFj
a1Nlc3Npb25Nb2RlbCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBCT09MIGlzQ3VycmVudGx5
UGxheWluZyA9IHNlbGYucGxheWluZzsKICAgICBpZiAoIWlzQ3VycmVudGx5UGxheWluZyAmJiBw
bGF5aW5nKQotICAgICAgICBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nl
c3Npb25Nb2RlbCgpLnBsYXkoKTsKKyAgICAgICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1h
Yy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+cGxheSgpOwogICAgIGVsc2UgaWYgKGlzQ3VycmVu
dGx5UGxheWluZyAmJiAhcGxheWluZykKLSAgICAgICAgX3BsYXliYWNrU2Vzc2lvbkludGVyZmFj
ZU1hYy0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS5wYXVzZSgpOworICAgICAgICBfcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT5wYXVzZSgpOwogfQog
CiAtIChCT09MKWlzUGxheWluZwogewotICAgIGlmIChfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
TWFjKQotICAgICAgICByZXR1cm4gX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+cGxheWJh
Y2tTZXNzaW9uTW9kZWwoKS5pc1BsYXlpbmcoKTsKKyAgICBpZiAoX3BsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZU1hYyAmJiBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Np
b25Nb2RlbCgpKQorICAgICAgICByZXR1cm4gX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYy0+
cGxheWJhY2tTZXNzaW9uTW9kZWwoKS0+aXNQbGF5aW5nKCk7CiAKICAgICByZXR1cm4gTk87CiB9
CiAKIC0gKHZvaWQpdG9nZ2xlUGljdHVyZUluUGljdHVyZQogewotICAgIGlmIChfcGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlTWFjKQotICAgICAgICBfcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlTWFj
LT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLnRvZ2dsZVBpY3R1cmVJblBpY3R1cmUoKTsKKyAgICBp
ZiAoX3BsYXliYWNrU2Vzc2lvbkludGVyZmFjZU1hYyAmJiBfcGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpKQorICAgICAgICBfcGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlTWFjLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLT50b2dnbGVQaWN0dXJlSW5QaWN0
dXJlKCk7CiB9CiAKIElHTk9SRV9DTEFOR19XQVJOSU5HU19FTkQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5oIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LmgKaW5kZXggMDAxN2EyNmJjNDkzNzAxZDNkY2MwODQwZDVhY2ZjNDNhN2I0M2IwYi4uYTI3NzNl
NmY5ZjIzYmEyNjY0ODc1YjVlODE5YTI3MmNlNzU0MzU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5LmgKKysrIGIv
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LmgKQEAgLTM1LDEwICszNSw5IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9UaW1lUmFuZ2VzLmg+CiAj
aW5jbHVkZSA8d3RmL0hhc2hDb3VudGVkU2V0Lmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
KyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CiAj
aW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KLSNpbmNsdWRl
IDx3dGYvV2Vha1B0ckNvbnRhaW5lci5oPgogCiAjaWYgUExBVEZPUk0oSU9TKQogI2luY2x1ZGUg
PFdlYkNvcmUvUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQVZLaXQuaD4KQEAgLTU3LDIwICs1Niwx
OCBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIGNsYXNzIFdlYlBhZ2VQcm94eTsKIGNsYXNzIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTsKIAotY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250
ZXh0IGZpbmFsCi0gICAgOiBwdWJsaWMgV2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWwKLSAg
ICAsIHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dD4geworY2xh
c3MgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0IGZpbmFsOiBwdWJsaWMgUmVmQ291bnRlZDxQ
bGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+LCBwdWJsaWMgV2ViQ29yZTo6UGxheWJhY2tTZXNz
aW9uTW9kZWwgIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dD4gY3JlYXRlKFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5PiYmIG1h
bmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dD4gY3JlYXRlKFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYgbWFuYWdl
ciwgdWludDY0X3QgY29udGV4dElkKQogICAgIHsKLSAgICAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0KFdURk1vdmUobWFuYWdlciksIGNvbnRleHRJ
ZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25Nb2RlbENv
bnRleHQobWFuYWdlciwgY29udGV4dElkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflBsYXliYWNr
U2Vzc2lvbk1vZGVsQ29udGV4dCgpIHsgfQogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21h
bmFnZXIgPSBudWxscHRyOyB9CiAKICAgICAvLyBQbGF5YmFja1Nlc3Npb25Nb2RlbAotICAgIHZv
aWQgYWRkQ2xpZW50KFdlYWtQdHI8V2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQ+
JiYpIGZpbmFsOworICAgIHZvaWQgYWRkQ2xpZW50KFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ2xpZW50JikgZmluYWw7CiAgICAgdm9pZCByZW1vdmVDbGllbnQoV2ViQ29yZTo6UGxheWJh
Y2tTZXNzaW9uTW9kZWxDbGllbnQmKWZpbmFsOwogCiAgICAgdm9pZCBkdXJhdGlvbkNoYW5nZWQo
ZG91YmxlKTsKQEAgLTkxLDIxICs4OCwxNiBAQCBwdWJsaWM6CiAgICAgdm9pZCBwaWN0dXJlSW5Q
aWN0dXJlU3VwcG9ydGVkQ2hhbmdlZChib29sKTsKICAgICB2b2lkIHBpY3R1cmVJblBpY3R1cmVB
Y3RpdmVDaGFuZ2VkKGJvb2wpOwogCi0gICAgdXNpbmcgUmVmQ291bnRlZDo6cmVmOwotICAgIHVz
aW5nIFJlZkNvdW50ZWQ6OmRlcmVmOwotCiBwcml2YXRlOgogICAgIGZyaWVuZCBjbGFzcyBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ7CiAKLSAgICBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQoV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+JiYgbWFuYWdlciwgdWludDY0
X3QgY29udGV4dElkKQotICAgICAgICA6IG1fbWFuYWdlcihXVEZNb3ZlKG1hbmFnZXIpKQorICAg
IFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dChQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkm
IG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICAgICAgOiBtX21hbmFnZXIoJm1hbmFn
ZXIpCiAgICAgICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQogICAgIHsKICAgICB9CiAKICAg
ICAvLyBQbGF5YmFja1Nlc3Npb25Nb2RlbAotICAgIHZvaWQgcmVmUGxheWJhY2tTZXNzaW9uTW9k
ZWwoKSBmaW5hbCB7IHJlZigpOyB9Ci0gICAgdm9pZCBkZXJlZlBsYXliYWNrU2Vzc2lvbk1vZGVs
KCkgZmluYWwgeyBkZXJlZigpOyB9CiAgICAgdm9pZCBwbGF5KCkgZmluYWw7CiAgICAgdm9pZCBw
YXVzZSgpIGZpbmFsOwogICAgIHZvaWQgdG9nZ2xlUGxheVN0YXRlKCkgZmluYWw7CkBAIC0xNDcs
MTAgKzEzOSwxMCBAQCBwcml2YXRlOgogICAgIGRvdWJsZSB2b2x1bWUoKSBjb25zdCBmaW5hbCB7
IHJldHVybiBtX3ZvbHVtZTsgfQogICAgIGJvb2wgaXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVk
KCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9waWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkOyB9CiAg
ICAgYm9vbCBpc1BpY3R1cmVJblBpY3R1cmVBY3RpdmUoKSBjb25zdCBmaW5hbCB7IHJldHVybiBt
X3BpY3R1cmVJblBpY3R1cmVBY3RpdmU7IH0KLSAgICAKLSAgICBXZWFrUHRyPFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eT4gbV9tYW5hZ2VyOworCisgICAgUGxheWJhY2tTZXNzaW9uTWFuYWdl
clByb3h5KiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7Ci0gICAgV2Vha1B0
ckNvbnRhaW5lcjxXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4gbV9jbGllbnRz
OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6UGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQqPiBtX2Ns
aWVudHM7CiAgICAgZG91YmxlIG1fcGxheWJhY2tTdGFydGVkVGltZSB7IDAgfTsKICAgICBib29s
IG1fcGxheWJhY2tTdGFydGVkVGltZU5lZWRzVXBkYXRlIHsgZmFsc2UgfTsKICAgICBkb3VibGUg
bV9kdXJhdGlvbiB7IDAgfTsKQEAgLTE3NywxMCArMTY5LDcgQEAgcHJpdmF0ZToKICAgICBib29s
IG1fcGljdHVyZUluUGljdHVyZUFjdGl2ZSB7IGZhbHNlIH07CiB9OwogCi1jbGFzcyBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHkKLSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eT4KLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIKLSAg
ICAsIHB1YmxpYyBDYW5NYWtlV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk+IHsK
K2NsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSA6IHB1YmxpYyBSZWZDb3VudGVkPFBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eT4sIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIg
ewogcHVibGljOgogICAgIHN0YXRpYyBSZWZQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
PiBjcmVhdGUoV2ViUGFnZVByb3h5Jik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9uTWFu
YWdlclByb3h5KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9Q
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9D
b2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHkubW0KaW5kZXggNjk5YmRmZDdlMzFhYjA2
OGQxYTVmNWRiNzgxNzhjNjVhNzgxMjI3Ny4uZGMzNjE3MWI3YjQxZjYyZWFlNGJlM2RmZDNlZTNj
ZGY5ZTNjMDZkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0NvY29hL1BsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eS5tbQpAQCAtMzgsMTQgKzM4LDE2IEBA
IHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiAjcHJhZ21hIG1hcmsgLSBQbGF5YmFja1Nlc3Np
b25Nb2RlbENvbnRleHQKIAotdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmFkZENs
aWVudChXZWFrUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiYmIGNsaWVudCkKK3ZvaWQg
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjphZGRDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9k
ZWxDbGllbnQmIGNsaWVudCkKIHsKLSAgICBtX2NsaWVudHMuYWRkKFdURk1vdmUoY2xpZW50KSk7
CisgICAgQVNTRVJUKCFtX2NsaWVudHMuY29udGFpbnMoJmNsaWVudCkpOworICAgIG1fY2xpZW50
cy5hZGQoJmNsaWVudCk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0Ojpy
ZW1vdmVDbGllbnQoUGxheWJhY2tTZXNzaW9uTW9kZWxDbGllbnQmIGNsaWVudCkKIHsKLSAgICBt
X2NsaWVudHMucmVtb3ZlKGNsaWVudCk7CisgICAgQVNTRVJUKG1fY2xpZW50cy5jb250YWlucygm
Y2xpZW50KSk7CisgICAgbV9jbGllbnRzLnJlbW92ZSgmY2xpZW50KTsKIH0KIAogdm9pZCBQbGF5
YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OnBsYXkoKQpAQCAtMTY0LDkgKzE2Niw4IEBAIHZvaWQg
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpwbGF5YmFja1N0YXJ0ZWRUaW1lQ2hhbmdlZChk
b3VibGUgcGxheWJhY2tTdGFyCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6ZHVy
YXRpb25DaGFuZ2VkKGRvdWJsZSBkdXJhdGlvbikKIHsKICAgICBtX2R1cmF0aW9uID0gZHVyYXRp
b247Ci0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtkdXJhdGlvbl0gKGF1dG8m
IGNsaWVudCkgewotICAgICAgICBjbGllbnQuZHVyYXRpb25DaGFuZ2VkKGR1cmF0aW9uKTsKLSAg
ICB9KTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50
LT5kdXJhdGlvbkNoYW5nZWQoZHVyYXRpb24pOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dDo6Y3VycmVudFRpbWVDaGFuZ2VkKGRvdWJsZSBjdXJyZW50VGltZSkKQEAgLTE3
NiwyNiArMTc3LDIzIEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpjdXJyZW50
VGltZUNoYW5nZWQoZG91YmxlIGN1cnJlbnRUaW1lKQogICAgIGlmIChtX3BsYXliYWNrU3RhcnRl
ZFRpbWVOZWVkc1VwZGF0ZSkKICAgICAgICAgcGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY3Vy
cmVudFRpbWUpOwogCi0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtjdXJyZW50
VGltZSwgYW5jaG9yVGltZV0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQuY3VycmVu
dFRpbWVDaGFuZ2VkKGN1cnJlbnRUaW1lLCBhbmNob3JUaW1lKTsKLSAgICB9KTsKKyAgICBmb3Ig
KGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5jdXJyZW50VGltZUNo
YW5nZWQoY3VycmVudFRpbWUsIGFuY2hvclRpbWUpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6YnVmZmVyZWRUaW1lQ2hhbmdlZChkb3VibGUgYnVmZmVyZWRUaW1lKQog
ewogICAgIG1fYnVmZmVyZWRUaW1lID0gYnVmZmVyZWRUaW1lOwotICAgIG1fY2xpZW50cy5mb3JF
YWNoTm9uTnVsbE1lbWJlcihbYnVmZmVyZWRUaW1lXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAg
IGNsaWVudC5idWZmZXJlZFRpbWVDaGFuZ2VkKGJ1ZmZlcmVkVGltZSk7Ci0gICAgfSk7CisgICAg
Zm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+YnVmZmVyZWRU
aW1lQ2hhbmdlZChidWZmZXJlZFRpbWUpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6cmF0ZUNoYW5nZWQoYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkK
IHsKICAgICBtX2lzUGxheWluZyA9IGlzUGxheWluZzsKICAgICBtX3BsYXliYWNrUmF0ZSA9IHBs
YXliYWNrUmF0ZTsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW2lzUGxheWlu
ZywgcGxheWJhY2tSYXRlXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5yYXRlQ2hh
bmdlZChpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBj
bGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+cmF0ZUNoYW5nZWQoaXNQbGF5aW5n
LCBwbGF5YmFja1JhdGUpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6
c2Vla2FibGVSYW5nZXNDaGFuZ2VkKFdlYkNvcmU6OlRpbWVSYW5nZXMmIHNlZWthYmxlUmFuZ2Vz
LCBkb3VibGUgbGFzdE1vZGlmaWVkVGltZSwgZG91YmxlIGxpdmVVcGRhdGVJbnRlcnZhbCkKQEAg
LTIwMywyNiArMjAxLDIzIEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpzZWVr
YWJsZVJhbmdlc0NoYW5nZWQoV2ViQ29yZTo6VGltZVJhbmdlcyYgc2VlCiAgICAgbV9zZWVrYWJs
ZVJhbmdlcyA9IHNlZWthYmxlUmFuZ2VzOwogICAgIG1fc2Vla2FibGVUaW1lUmFuZ2VzTGFzdE1v
ZGlmaWVkVGltZSA9IGxhc3RNb2RpZmllZFRpbWU7CiAgICAgbV9saXZlVXBkYXRlSW50ZXJ2YWwg
PSBsaXZlVXBkYXRlSW50ZXJ2YWw7Ci0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVy
KFtzZWVrYWJsZVJhbmdlcyA9IG1ha2VSZWYoc2Vla2FibGVSYW5nZXMpLCBsYXN0TW9kaWZpZWRU
aW1lLCBsaXZlVXBkYXRlSW50ZXJ2YWxdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xpZW50
LnNlZWthYmxlUmFuZ2VzQ2hhbmdlZChzZWVrYWJsZVJhbmdlcywgbGFzdE1vZGlmaWVkVGltZSwg
bGl2ZVVwZGF0ZUludGVydmFsKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1f
Y2xpZW50cykKKyAgICAgICAgY2xpZW50LT5zZWVrYWJsZVJhbmdlc0NoYW5nZWQoc2Vla2FibGVS
YW5nZXMsIGxhc3RNb2RpZmllZFRpbWUsIGxpdmVVcGRhdGVJbnRlcnZhbCk7CiB9CiAKIHZvaWQg
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpjYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGJv
b2wgY2FuUGxheUZhc3RSZXZlcnNlKQogewogICAgIG1fY2FuUGxheUZhc3RSZXZlcnNlID0gY2Fu
UGxheUZhc3RSZXZlcnNlOwotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbY2Fu
UGxheUZhc3RSZXZlcnNlXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5jYW5QbGF5
RmFzdFJldmVyc2VDaGFuZ2VkKGNhblBsYXlGYXN0UmV2ZXJzZSk7Ci0gICAgfSk7CisgICAgZm9y
IChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+Y2FuUGxheUZhc3RS
ZXZlcnNlQ2hhbmdlZChjYW5QbGF5RmFzdFJldmVyc2UpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1vZGVsQ29udGV4dDo6YXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0
IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9wdGlvbj4mIGF1ZGlvTWVkaWFTZWxlY3Rpb25PcHRpb25z
LCB1aW50NjRfdCBhdWRpb01lZGlhU2VsZWN0ZWRJbmRleCkKIHsKICAgICBtX2F1ZGlvTWVkaWFT
ZWxlY3Rpb25PcHRpb25zID0gYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnM7CiAgICAgbV9hdWRp
b01lZGlhU2VsZWN0ZWRJbmRleCA9IGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4OwotICAgIG1fY2xp
ZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGF1
ZGlvTWVkaWFTZWxlY3RlZEluZGV4XSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5h
dWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlv
bnMsIGF1ZGlvTWVkaWFTZWxlY3RlZEluZGV4KTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8qIGNs
aWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5hdWRpb01lZGlhU2VsZWN0aW9uT3B0
aW9uc0NoYW5nZWQoYXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnMsIGF1ZGlvTWVkaWFTZWxlY3Rl
ZEluZGV4KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmxlZ2libGVN
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKGNvbnN0IFZlY3RvcjxNZWRpYVNlbGVjdGlvbk9w
dGlvbj4mIGxlZ2libGVNZWRpYVNlbGVjdGlvbk9wdGlvbnMsIHVpbnQ2NF90IGxlZ2libGVNZWRp
YVNlbGVjdGVkSW5kZXgpCkBAIC0yMzAsMjcgKzIyNSwyNCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lv
bk1vZGVsQ29udGV4dDo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29uc3Qg
VmVjdAogICAgIG1fbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucyA9IGxlZ2libGVNZWRpYVNl
bGVjdGlvbk9wdGlvbnM7CiAgICAgbV9sZWdpYmxlTWVkaWFTZWxlY3RlZEluZGV4ID0gbGVnaWJs
ZU1lZGlhU2VsZWN0ZWRJbmRleDsKIAotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJl
cihbbGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucywgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRl
eF0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQubGVnaWJsZU1lZGlhU2VsZWN0aW9u
T3B0aW9uc0NoYW5nZWQobGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucywgbGVnaWJsZU1lZGlh
U2VsZWN0ZWRJbmRleCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVu
dHMpCisgICAgICAgIGNsaWVudC0+bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQo
bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9ucywgbGVnaWJsZU1lZGlhU2VsZWN0ZWRJbmRleCk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjphdWRpb01lZGlhU2VsZWN0
aW9uSW5kZXhDaGFuZ2VkKHVpbnQ2NF90IHNlbGVjdGVkSW5kZXgpCiB7CiAgICAgbV9hdWRpb01l
ZGlhU2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7CiAKLSAgICBtX2NsaWVudHMuZm9yRWFj
aE5vbk51bGxNZW1iZXIoW3NlbGVjdGVkSW5kZXhdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAg
Y2xpZW50LmF1ZGlvTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoc2VsZWN0ZWRJbmRleCk7Ci0g
ICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVu
dC0+YXVkaW9NZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChzZWxlY3RlZEluZGV4KTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OmxlZ2libGVNZWRpYVNlbGVjdGlvbklu
ZGV4Q2hhbmdlZCh1aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewogICAgIG1fbGVnaWJsZU1lZGlh
U2VsZWN0ZWRJbmRleCA9IHNlbGVjdGVkSW5kZXg7CiAKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5v
bk51bGxNZW1iZXIoW3NlbGVjdGVkSW5kZXhdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xp
ZW50LmxlZ2libGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZChzZWxlY3RlZEluZGV4KTsKLSAg
ICB9KTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50
LT5sZWdpYmxlTWVkaWFTZWxlY3Rpb25JbmRleENoYW5nZWQoc2VsZWN0ZWRJbmRleCk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpleHRlcm5hbFBsYXliYWNrQ2hhbmdl
ZChib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vzc2lvbk1vZGVsOjpFeHRlcm5hbFBsYXliYWNrVGFy
Z2V0VHlwZSB0eXBlLCBjb25zdCBTdHJpbmcmIGxvY2FsaXplZE5hbWUpCkBAIC0yNTksNDkgKzI1
MSw0MyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6ZXh0ZXJuYWxQbGF5YmFj
a0NoYW5nZWQoYm9vbCBlbmFibGVkLCBQbGF5YmFjawogICAgIG1fZXh0ZXJuYWxQbGF5YmFja1Rh
cmdldFR5cGUgPSB0eXBlOwogICAgIG1fZXh0ZXJuYWxQbGF5YmFja0xvY2FsaXplZERldmljZU5h
bWUgPSBsb2NhbGl6ZWROYW1lOwogCi0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVy
KFtlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWROYW1lXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAg
IGNsaWVudC5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChlbmFibGVkLCB0eXBlLCBsb2NhbGl6ZWRO
YW1lKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAg
ICAgY2xpZW50LT5leHRlcm5hbFBsYXliYWNrQ2hhbmdlZChlbmFibGVkLCB0eXBlLCBsb2NhbGl6
ZWROYW1lKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ6OndpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChib29sIHdpcmVsZXNzVmlkZW9QbGF5YmFja0Rp
c2FibGVkKQogewogICAgIG1fd2lyZWxlc3NWaWRlb1BsYXliYWNrRGlzYWJsZWQgPSB3aXJlbGVz
c1ZpZGVvUGxheWJhY2tEaXNhYmxlZDsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1i
ZXIoW3dpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkXSAoYXV0byYgY2xpZW50KSB7Ci0gICAg
ICAgIGNsaWVudC53aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZENoYW5nZWQod2lyZWxlc3NW
aWRlb1BsYXliYWNrRGlzYWJsZWQpOwotICAgIH0pOworICAgIGZvciAoYXV0byogY2xpZW50IDog
bV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVk
Q2hhbmdlZCh3aXJlbGVzc1ZpZGVvUGxheWJhY2tEaXNhYmxlZCk7CiB9CiAKIHZvaWQgUGxheWJh
Y2tTZXNzaW9uTW9kZWxDb250ZXh0OjptdXRlZENoYW5nZWQoYm9vbCBtdXRlZCkKIHsKICAgICBt
X211dGVkID0gbXV0ZWQ7Ci0gICAgbV9jbGllbnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFttdXRl
ZF0gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQubXV0ZWRDaGFuZ2VkKG11dGVkKTsK
LSAgICB9KTsKKyAgICBmb3IgKGF1dG8qIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xp
ZW50LT5tdXRlZENoYW5nZWQobXV0ZWQpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVs
Q29udGV4dDo6dm9sdW1lQ2hhbmdlZChkb3VibGUgdm9sdW1lKQogewogICAgIG1fdm9sdW1lID0g
dm9sdW1lOwotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbdm9sdW1lXSAoYXV0
byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC52b2x1bWVDaGFuZ2VkKHZvbHVtZSk7Ci0gICAg
fSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAgIGNsaWVudC0+
dm9sdW1lQ2hhbmdlZCh2b2x1bWUpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29u
dGV4dDo6cGljdHVyZUluUGljdHVyZVN1cHBvcnRlZENoYW5nZWQoYm9vbCBzdXBwb3J0ZWQpCiB7
CiAgICAgbV9waWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkID0gc3VwcG9ydGVkOwotICAgIG1fY2xp
ZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbc3VwcG9ydGVkXSAoYXV0byYgY2xpZW50KSB7Ci0g
ICAgICAgIGNsaWVudC5pc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2VkKHN1cHBvcnRl
ZCk7Ci0gICAgfSk7CisgICAgZm9yIChhdXRvKiBjbGllbnQgOiBtX2NsaWVudHMpCisgICAgICAg
IGNsaWVudC0+aXNQaWN0dXJlSW5QaWN0dXJlU3VwcG9ydGVkQ2hhbmdlZChzdXBwb3J0ZWQpOwog
fQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6cGljdHVyZUluUGljdHVyZUFj
dGl2ZUNoYW5nZWQoYm9vbCBhY3RpdmUpCiB7CiAgICAgbV9waWN0dXJlSW5QaWN0dXJlQWN0aXZl
ID0gYWN0aXZlOwotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbYWN0aXZlXSAo
YXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5waWN0dXJlSW5QaWN0dXJlQWN0aXZlQ2hh
bmdlZChhY3RpdmUpOwotICAgIH0pOworICAgIGZvciAoYXV0byogY2xpZW50IDogbV9jbGllbnRz
KQorICAgICAgICBjbGllbnQtPnBpY3R1cmVJblBpY3R1cmVBY3RpdmVDaGFuZ2VkKGFjdGl2ZSk7
CiB9CiAKICNwcmFnbWEgbWFyayAtIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eQpAQCAtMzI5
LDE0ICszMTUsMjIgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmludmFsaWRh
dGUoKQogICAgIG1fcGFnZS0+cHJvY2VzcygpLnJlbW92ZU1lc3NhZ2VSZWNlaXZlcihNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjptZXNzYWdlUmVjZWl2ZXJOYW1lKCksIG1f
cGFnZS0+cGFnZUlEKCkpOwogICAgIG1fcGFnZSA9IG51bGxwdHI7CiAKLSAgICBtX2NvbnRleHRN
YXAuY2xlYXIoKTsKKyAgICBhdXRvIGNvbnRleHRNYXAgPSBXVEZNb3ZlKG1fY29udGV4dE1hcCk7
CiAgICAgbV9jbGllbnRDb3VudHMuY2xlYXIoKTsKKworICAgIGZvciAoYXV0byYgdHVwbGUgOiBj
b250ZXh0TWFwLnZhbHVlcygpKSB7CisgICAgICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25Nb2Rl
bENvbnRleHQ+IG1vZGVsOworICAgICAgICBSZWZQdHI8UGxhdGZvcm1QbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2U+IGludGVyZmFjZTsKKyAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkg
PSB0dXBsZTsKKworICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKKyAgICB9CiB9CiAK
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKLSAgICBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiBtb2RlbCA9
IFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dDo6Y3JlYXRlKG1ha2VXZWFrUHRyKHRoaXMpLCBj
b250ZXh0SWQpOwotICAgIFJlZjxQbGF0Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZT4gaW50
ZXJmYWNlID0gUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2U6OmNyZWF0ZShtb2RlbC5j
b3B5UmVmKCkpOworICAgIFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1vZGVsID0g
UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0OjpjcmVhdGUoKnRoaXMsIGNvbnRleHRJZCk7Cisg
ICAgUmVmPFBsYXRmb3JtUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlPiBpbnRlcmZhY2UgPSBQbGF0
Zm9ybVBsYXliYWNrU2Vzc2lvbkludGVyZmFjZTo6Y3JlYXRlKG1vZGVsKTsKIAogICAgIHJldHVy
biBzdGQ6Om1ha2VfdHVwbGUoV1RGTW92ZShtb2RlbCksIFdURk1vdmUoaW50ZXJmYWNlKSk7CiB9
CkBAIC0zNjYsOCArMzYwLDExIEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5Ojph
ZGRDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90IGNvbnRleHRJZCkKIAogdm9pZCBQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OnJlbW92ZUNsaWVudEZvckNvbnRleHQodWludDY0X3QgY29udGV4
dElkKQogewotICAgIGlmIChtX2NsaWVudENvdW50cy5yZW1vdmUoY29udGV4dElkKSkKLSAgICAg
ICAgbV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOworICAgIGlmICghbV9jbGllbnRDb3Vu
dHMucmVtb3ZlKGNvbnRleHRJZCkpCisgICAgICAgIHJldHVybjsKKworICAgIGVuc3VyZUludGVy
ZmFjZShjb250ZXh0SWQpLmludmFsaWRhdGUoKTsKKyAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNv
bnRleHRJZCk7CiB9CiAKICNwcmFnbWEgbWFyayBNZXNzYWdlcyBmcm9tIFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXIKQEAgLTM4NCw4ICszODEsNyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6c2V0VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcldpdGhJRCh1aW50NjRfdCBjbwogICAg
IGVuc3VyZUludGVyZmFjZShtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkuZW5zdXJlQ29udHJv
bHNNYW5hZ2VyKCk7CiAgICAgYWRkQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNv
bnRleHRJZCk7CiAKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnZpZGVvQ29udHJv
bHNNYW5hZ2VyRGlkQ2hhbmdlKCk7CisgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFuYWdlckRp
ZENoYW5nZSgpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Y2xlYXJQ
bGF5YmFja0NvbnRyb2xzTWFuYWdlcigpCkBAIC0zOTUsOCArMzkxLDcgQEAgdm9pZCBQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyUHJveHk6OmNsZWFyUGxheWJhY2tDb250cm9sc01hbmFnZXIoKQogCiAg
ICAgcmVtb3ZlQ2xpZW50Rm9yQ29udGV4dChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCk7CiAg
ICAgbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQgPSAwOwotICAgIGlmIChtX3BhZ2UpCi0gICAg
ICAgIG1fcGFnZS0+dmlkZW9Db250cm9sc01hbmFnZXJEaWRDaGFuZ2UoKTsKKyAgICBtX3BhZ2Ut
PnZpZGVvQ29udHJvbHNNYW5hZ2VyRGlkQ2hhbmdlKCk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpyZXNldE1lZGlhU3RhdGUodWludDY0X3QgY29udGV4dElkKQpAQCAt
NTAzLDcgKzQ5OCw3IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpwaWN0dXJl
SW5QaWN0dXJlQWN0aXZlQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0CiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKHVpbnQ2
NF90IGNvbnRleHRJZCwgU3RyaW5nIGlkZW50aWZpZXIpIGNvbnN0CiB7CiAjaWYgUExBVEZPUk0o
TUFDKQotICAgIGlmIChtX3BhZ2UgJiYgY29udGV4dElkID09IG1fY29udHJvbHNNYW5hZ2VyQ29u
dGV4dElkKQorICAgIGlmIChjb250ZXh0SWQgPT0gbV9jb250cm9sc01hbmFnZXJDb250ZXh0SWQp
CiAgICAgICAgIG1fcGFnZS0+aGFuZGxlQ29udHJvbGxlZEVsZW1lbnRJRFJlc3BvbnNlKGlkZW50
aWZpZXIpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29udGV4dElkKTsKQEAgLTUxNiw5OCAr
NTExLDgyIEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpoYW5kbGVDb250cm9s
bGVkRWxlbWVudElEUmVzcG9uc2UodWludDY0X3QgY29uCiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpwbGF5KHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAobV9wYWdl
KQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6
OlBsYXkoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpQbGF5KGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6cGF1c2Uo
dWludDY0X3QgY29udGV4dElkKQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6UGF1c2UoY29udGV4dElkKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpQYXVzZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZVBsYXlTdGF0ZSh1aW50NjRf
dCBjb250ZXh0SWQpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFj
a1Nlc3Npb25NYW5hZ2VyOjpUb2dnbGVQbGF5U3RhdGUoY29udGV4dElkKSwgbV9wYWdlLT5wYWdl
SUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpiZWdpblNjcnVi
YmluZyh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpCZWdpblNjcnViYmlu
Zyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2NydWJiaW5nKGNvbnRleHRJZCksIG1f
cGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6
ZW5kU2NydWJiaW5nKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAg
ICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNj
cnViYmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQo
TWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkVuZFNjcnViYmluZyhjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJv
eHk6OnNlZWtUb1RpbWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdGltZSwgZG91YmxlIHRv
bGVyYW5jZUJlZm9yZSwgZG91YmxlIHRvbGVyYW5jZUFmdGVyKQogewotICAgIGlmIChtX3BhZ2Up
Ci0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6
U2Vla1RvVGltZShjb250ZXh0SWQsIHRpbWUsIHRvbGVyYW5jZUJlZm9yZSwgdG9sZXJhbmNlQWZ0
ZXIpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlNlZWtUb1RpbWUoY29udGV4dElkLCB0aW1lLCB0b2xlcmFuY2VC
ZWZvcmUsIHRvbGVyYW5jZUFmdGVyKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpmYXN0U2Vlayh1aW50NjRfdCBjb250ZXh0SWQsIGRv
dWJsZSB0aW1lKQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RmFzdFNlZWsoY29udGV4dElkLCB0aW1lKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpGYXN0U2Vlayhjb250ZXh0SWQsIHRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OmJlZ2luU2Nhbm5pbmdG
b3J3YXJkKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBt
X3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OkJlZ2luU2Nhbm5p
bmdGb3J3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0ZvcndhcmQo
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5OjpiZWdpblNjYW5uaW5nQmFja3dhcmQodWludDY0X3QgY29udGV4dElkKQog
ewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6QmVnaW5TY2FubmluZ0JhY2t3YXJkKGNvbnRleHRJZCksIG1fcGFnZS0+cGFnZUlE
KCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6ZW5kU2Nhbm5pbmco
dWludDY0X3QgY29udGV4dElkKQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+
c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6RW5kU2Nhbm5pbmcoY29udGV4
dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpFbmRTY2FubmluZyhjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNlbGVjdEF1ZGlv
TWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkKIHsKLSAgICBp
ZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI6OlNlbGVjdEF1ZGlvTWVkaWFPcHRpb24oY29udGV4dElkLCBpbmRleCksIG1fcGFn
ZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9u
TWFuYWdlcjo6U2VsZWN0QXVkaW9NZWRpYU9wdGlvbihjb250ZXh0SWQsIGluZGV4KSwgbV9wYWdl
LT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZWxl
Y3RMZWdpYmxlTWVkaWFPcHRpb24odWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBpbmRleCkK
IHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OlNlbGVjdExlZ2libGVNZWRpYU9wdGlvbihjb250ZXh0SWQsIGlu
ZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5
YmFja1Nlc3Npb25NYW5hZ2VyOjpTZWxlY3RMZWdpYmxlTWVkaWFPcHRpb24oY29udGV4dElkLCBp
bmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6dG9nZ2xlUGljdHVyZUluUGljdHVyZSh1aW50NjRfdCBjb250ZXh0SWQpCiB7Ci0g
ICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyOjpUb2dnbGVQaWN0dXJlSW5QaWN0dXJlKGNvbnRleHRJZCksIG1fcGFnZS0+
cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6VG9nZ2xlUGljdHVyZUluUGljdHVyZShjb250ZXh0SWQpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnRvZ2dsZU11dGVkKHVp
bnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OlRvZ2dsZU11dGVkKGNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlcjo6VG9nZ2xlTXV0ZWQoY29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpzZXRNdXRlZCh1aW50
NjRfdCBjb250ZXh0SWQsIGJvb2wgbXV0ZWQpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChj
b250ZXh0SWQsIG11dGVkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1l
c3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpTZXRNdXRlZChjb250ZXh0SWQsIG11dGVk
KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlclBy
b3h5OjpzZXRWb2x1bWUodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgdm9sdW1lKQogewotICAg
IGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6U2V0Vm9sdW1lKGNvbnRleHRJZCwgdm9sdW1lKSwgbV9wYWdlLT5wYWdlSUQo
KSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpT
ZXRWb2x1bWUoY29udGV4dElkLCB2b2x1bWUpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9p
ZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbih1
aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgdmFsdWUpCkBAIC02MTgsNyArNTk3LDcgQEAgdm9pZCBQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnNldFBsYXlpbmdPblNlY29uZFNjcmVlbih1aW50
NjRfdCBjb250ZXh0SWQsIGIKIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OnJl
cXVlc3RDb250cm9sbGVkRWxlbWVudElEKCkKIHsKLSAgICBpZiAobV9wYWdlICYmIG1fY29udHJv
bHNNYW5hZ2VyQ29udGV4dElkKQorICAgIGlmIChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCkK
ICAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpI
YW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVxdWVzdChtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJ
ZCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCmluZGV4IGI2
Zjc0ZjVkNDFiNzQ2MjI3Yzk2ZDc4M2MyMzBlZDUxNTg2MmMwYWIuLjQ4NjYzYzI1MmJhODc4YmJh
MWExOTE0MDNjMmNjYWVlMzE2MTA5MTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5oCkBAIC0zMywx
MSArMzMsOSBAQAogI2luY2x1ZGUgPFdlYkNvcmUvVmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2
ZXIuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ZpZGVvRnVsbHNjcmVlbk1vZGVsLmg+CiAjaW5jbHVk
ZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgogI2luY2x1ZGUgPHd0
Zi9SZWZDb3VudGVkLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgotI2luY2x1ZGUgPHd0Zi9V
bmlxdWVSZWYuaD4KLSNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+Ci0jaW5jbHVkZSA8d3RmL1dlYWtQ
dHJDb250YWluZXIuaD4KIAogI2lmIFBMQVRGT1JNKElPUykKICNpbmNsdWRlIDxXZWJDb3JlL1Zp
ZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0Lmg+CkBAIC02MSw5ICs1OSwxMiBAQCBjbGFzcyBW
aWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk7CiBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENv
bnRleHQgZmluYWwKICAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvRnVsbHNjcmVlbk1vZGVs
Q29udGV4dD4KICAgICAsIHB1YmxpYyBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbAotICAg
ICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyIHsKKyAgICAs
IHB1YmxpYyBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlciAgewogcHVibGlj
OgotICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBjcmVhdGUoV2Vh
a1B0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+JiYsIFJlZjxQbGF5YmFja1Nlc3Npb25N
b2RlbENvbnRleHQ+JiYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgc3RhdGljIFJlZjxWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ+IGNyZWF0ZShWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHkmIG1hbmFnZXIsIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxheWJhY2tTZXNzaW9u
TW9kZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChtYW5hZ2VyLCBwbGF5YmFja1Nlc3Np
b25Nb2RlbCwgY29udGV4dElkKSk7CisgICAgfQogICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVl
bk1vZGVsQ29udGV4dCgpOwogCiAgICAgdm9pZCBpbnZhbGlkYXRlKCkgeyBtX21hbmFnZXIgPSBu
dWxscHRyOyB9CkBAIC03MSwyNiArNzIsMTkgQEAgcHVibGljOgogICAgIFBsYXRmb3JtVmlldyAq
bGF5ZXJIb3N0VmlldygpIGNvbnN0IHsgcmV0dXJuIG1fbGF5ZXJIb3N0Vmlldy5nZXQoKTsgfQog
ICAgIHZvaWQgc2V0TGF5ZXJIb3N0VmlldyhSZXRhaW5QdHI8UGxhdGZvcm1WaWV3PiYmIGxheWVy
SG9zdFZpZXcpIHsgbV9sYXllckhvc3RWaWV3ID0gV1RGTW92ZShsYXllckhvc3RWaWV3KTsgfQog
Ci0gICAgV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5DaGFuZ2VPYnNlcnZlcj4gY3JlYXRlV2Vha1B0
cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyk7IH0KLQot
ICAgIHVzaW5nIFJlZkNvdW50ZWQ6OnJlZjsKLSAgICB1c2luZyBSZWZDb3VudGVkOjpkZXJlZjsK
LQogcHJpdmF0ZToKLSAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2Vha1B0cjxWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+JiYsIFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRl
eHQ+JiYsIHVpbnQ2NF90KTsKKyAgICBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoVmlkZW9G
dWxsc2NyZWVuTWFuYWdlclByb3h5JiwgUGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0JiwgdWlu
dDY0X3QpOwogCiAgICAgLy8gVmlkZW9GdWxsc2NyZWVuTW9kZWwKLSAgICB2b2lkIHJlZlZpZGVv
RnVsbHNjcmVlbk1vZGVsKCkgZmluYWwgeyByZWYoKTsgfQotICAgIHZvaWQgZGVyZWZWaWRlb0Z1
bGxzY3JlZW5Nb2RlbCgpIGZpbmFsIHsgZGVyZWYoKTsgfQotICAgIHZvaWQgYWRkQ2xpZW50KFdl
YWtQdHI8V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+JiYpIGZpbmFsOwotICAg
IHZvaWQgcmVtb3ZlQ2xpZW50KFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikg
ZmluYWw7Ci0gICAgdm9pZCByZXF1ZXN0RnVsbHNjcmVlbk1vZGUoV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlh
ID0gZmFsc2UpIGZpbmFsOwotICAgIHZvaWQgc2V0VmlkZW9MYXllckZyYW1lKFdlYkNvcmU6OkZs
b2F0UmVjdCkgZmluYWw7Ci0gICAgdm9pZCBzZXRWaWRlb0xheWVyR3Jhdml0eShWaWRlb0dyYXZp
dHkpIGZpbmFsOwotICAgIHZvaWQgZnVsbHNjcmVlbk1vZGVDaGFuZ2VkKFdlYkNvcmU6OkhUTUxN
ZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSkgZmluYWw7Ci0gICAgYm9vbCBp
c1Zpc2libGUoKSBjb25zdCBmaW5hbDsKLSAgICBib29sIGhhc1ZpZGVvKCkgY29uc3QgZmluYWwg
eyByZXR1cm4gbV9oYXNWaWRlbzsgfQotICAgIFdlYkNvcmU6OkZsb2F0U2l6ZSB2aWRlb0RpbWVu
c2lvbnMoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3ZpZGVvRGltZW5zaW9uczsgfQorICAgIHZv
aWQgYWRkQ2xpZW50KFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50Jikgb3ZlcnJp
ZGU7CisgICAgdm9pZCByZW1vdmVDbGllbnQoV2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQmKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlcXVlc3RGdWxsc2NyZWVuTW9kZShXZWJDb3Jl
OjpIVE1MTWVkaWFFbGVtZW50RW51bXM6OlZpZGVvRnVsbHNjcmVlbk1vZGUsIGJvb2wgZmluaXNo
ZWRXaXRoTWVkaWEgPSBmYWxzZSkgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRWaWRlb0xheWVyRnJh
bWUoV2ViQ29yZTo6RmxvYXRSZWN0KSBvdmVycmlkZTsKKyAgICB2b2lkIHNldFZpZGVvTGF5ZXJH
cmF2aXR5KFZpZGVvR3Jhdml0eSkgb3ZlcnJpZGU7CisgICAgdm9pZCBmdWxsc2NyZWVuTW9kZUNo
YW5nZWQoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVudW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2Rl
KSBvdmVycmlkZTsKKyAgICBib29sIGlzVmlzaWJsZSgpIGNvbnN0IG92ZXJyaWRlOworICAgIGJv
b2wgaGFzVmlkZW8oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBtX2hhc1ZpZGVvOyB9CisgICAg
V2ViQ29yZTo6RmxvYXRTaXplIHZpZGVvRGltZW5zaW9ucygpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIG1fdmlkZW9EaW1lbnNpb25zOyB9CiAjaWYgUExBVEZPUk0oSU9TKQogICAgIFVJVmlld0Nv
bnRyb2xsZXIgKnByZXNlbnRpbmdWaWV3Q29udHJvbGxlcigpIGZpbmFsOwogICAgIFVJVmlld0Nv
bnRyb2xsZXIgKmNyZWF0ZVZpZGVvRnVsbHNjcmVlblZpZXdDb250cm9sbGVyKEFWUGxheWVyVmll
d0NvbnRyb2xsZXIqKSBmaW5hbDsKQEAgLTExMiwyMCArMTA2LDE2IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBkaWRDbGVhbnVwRnVsbHNjcmVlbigpIGZpbmFsOwogICAgIHZvaWQgZnVsbHNjcmVlbk1h
eVJldHVyblRvSW5saW5lKCkgZmluYWw7CiAKLSAgICBXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eT4gbV9tYW5hZ2VyOworICAgIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSog
bV9tYW5hZ2VyOwogICAgIFJlZjxQbGF5YmFja1Nlc3Npb25Nb2RlbENvbnRleHQ+IG1fcGxheWJh
Y2tTZXNzaW9uTW9kZWw7CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7Ci0gICAgV2Vha1B0ckZh
Y3Rvcnk8VmlkZW9GdWxsc2NyZWVuQ2hhbmdlT2JzZXJ2ZXI+IG1fd2Vha1B0ckZhY3Rvcnk7CiAg
ICAgUmV0YWluUHRyPFBsYXRmb3JtVmlldyAqPiBtX2xheWVySG9zdFZpZXc7Ci0gICAgV2Vha1B0
ckNvbnRhaW5lcjxXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4gbV9jbGllbnRz
OworICAgIEhhc2hTZXQ8V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQqPiBtX2Ns
aWVudHM7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIG1fdmlkZW9EaW1lbnNpb25zOwogICAgIGJv
b2wgbV9oYXNWaWRlbyB7IGZhbHNlIH07CiB9OwogCi1jbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5h
Z2VyUHJveHkKLSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQ
cm94eT4KLSAgICAsIHByaXZhdGUgSVBDOjpNZXNzYWdlUmVjZWl2ZXIgCi0gICAgLCBwdWJsaWMg
Q2FuTWFrZVdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5PiB7CitjbGFzcyBWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkgOiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk+LCBwcml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoK
ICAgICBzdGF0aWMgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eT4gY3JlYXRlKFdl
YlBhZ2VQcm94eSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eSYpOwogICAgIHZpcnR1YWwg
flZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Lm1tCmlu
ZGV4IGNmMDM2NzM0OWI3MDQ1MzVmMTE2ZGI0NGU0MmQ5MjY2NWU5Yjg2NDMuLmJkZmJjODA3YTFj
OTk1YjZlMWM0MWI4NzJiYzQ4YjU0NzBkMjM2MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkubW0K
QEAgLTE1OCwyOCArMTU4LDI3IEBAIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5Ojph
cHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZSgpCiAKICNwcmFnbWEgbWFyayAtIFZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dAogCi1SZWY8VmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0PiBWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmNyZWF0ZShXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1h
bmFnZXJQcm94eT4mJiBtYW5hZ2VyLCBSZWY8UGxheWJhY2tTZXNzaW9uTW9kZWxDb250ZXh0PiYm
IHBsYXliYWNrU2Vzc2lvbk1vZGVsLCB1aW50NjRfdCBjb250ZXh0SWQpCitWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dChWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHkmIG1hbmFnZXIsIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ29udGV4dCYgcGxh
eWJhY2tTZXNzaW9uTW9kZWwsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICA6IG1fbWFuYWdlcigm
bWFuYWdlcikKKyAgICAsIG1fcGxheWJhY2tTZXNzaW9uTW9kZWwocGxheWJhY2tTZXNzaW9uTW9k
ZWwpCisgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KFdURk1vdmUobWFuYWdlciksIFdURk1v
dmUocGxheWJhY2tTZXNzaW9uTW9kZWwpLCBjb250ZXh0SWQpKTsKIH0KIAotVmlkZW9GdWxsc2Ny
ZWVuTW9kZWxDb250ZXh0OjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQoV2Vha1B0cjxWaWRl
b0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk+JiYgbWFuYWdlciwgUmVmPFBsYXliYWNrU2Vzc2lvbk1v
ZGVsQ29udGV4dD4mJiBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgdWludDY0X3QgY29udGV4dElkKQot
ICAgIDogbV9tYW5hZ2VyKFdURk1vdmUobWFuYWdlcikpCi0gICAgLCBtX3BsYXliYWNrU2Vzc2lv
bk1vZGVsKFdURk1vdmUocGxheWJhY2tTZXNzaW9uTW9kZWwpKQotICAgICwgbV9jb250ZXh0SWQo
Y29udGV4dElkKQorVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp+VmlkZW9GdWxsc2NyZWVu
TW9kZWxDb250ZXh0KCkKIHsKIH0KIAotVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp+Vmlk
ZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0KCkgPSBkZWZhdWx0OwotCi12b2lkIFZpZGVvRnVsbHNj
cmVlbk1vZGVsQ29udGV4dDo6YWRkQ2xpZW50KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTW9kZWxD
bGllbnQ+JiYgY2xpZW50KQordm9pZCBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmFkZENs
aWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudCYgY2xpZW50KQogewotICAgIG1fY2xpZW50
cy5hZGQoV1RGTW92ZShjbGllbnQpKTsKKyAgICBBU1NFUlQoIW1fY2xpZW50cy5jb250YWlucygm
Y2xpZW50KSk7CisgICAgbV9jbGllbnRzLmFkZCgmY2xpZW50KTsKIH0KIAogdm9pZCBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbENvbnRleHQ6OnJlbW92ZUNsaWVudChWaWRlb0Z1bGxzY3JlZW5Nb2RlbENs
aWVudCYgY2xpZW50KQogewotICAgIG1fY2xpZW50cy5yZW1vdmUoY2xpZW50KTsKKyAgICBBU1NF
UlQobV9jbGllbnRzLmNvbnRhaW5zKCZjbGllbnQpKTsKKyAgICBtX2NsaWVudHMucmVtb3ZlKCZj
bGllbnQpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6cmVxdWVzdEZ1
bGxzY3JlZW5Nb2RlKEhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxsc2NyZWVuTW9kZSBt
b2RlLCBib29sIGZpbmlzaGVkV2l0aE1lZGlhKQpAQCAtMjgyLDM3ICsyODEsMzIgQEAgdm9pZCBW
aWRlb0Z1bGxzY3JlZW5Nb2RlbENvbnRleHQ6OmZ1bGxzY3JlZW5NYXlSZXR1cm5Ub0lubGluZSgp
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp3aWxsRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlKCkKIHsKLSAgICBtX2NsaWVudHMuZm9yRWFjaE5vbk51bGxNZW1iZXIoW10gKGF1dG8m
IGNsaWVudCkgewotICAgICAgICBjbGllbnQud2lsbEVudGVyUGljdHVyZUluUGljdHVyZSgpOwot
ICAgIH0pOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGll
bnQtPndpbGxFbnRlclBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3Jl
ZW5Nb2RlbENvbnRleHQ6OmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpCiB7Ci0gICAgbV9jbGll
bnRzLmZvckVhY2hOb25OdWxsTWVtYmVyKFtdIChhdXRvJiBjbGllbnQpIHsKLSAgICAgICAgY2xp
ZW50LmRpZEVudGVyUGljdHVyZUluUGljdHVyZSgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYg
Y2xpZW50IDogbV9jbGllbnRzKQorICAgICAgICBjbGllbnQtPmRpZEVudGVyUGljdHVyZUluUGlj
dHVyZSgpOwogfQogCiB2b2lkIFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6ZmFpbGVkVG9F
bnRlclBpY3R1cmVJblBpY3R1cmUoKQogewotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1l
bWJlcihbXSAoYXV0byYgY2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC5mYWlsZWRUb0VudGVyUGlj
dHVyZUluUGljdHVyZSgpOwotICAgIH0pOworICAgIGZvciAoYXV0byYgY2xpZW50IDogbV9jbGll
bnRzKQorICAgICAgICBjbGllbnQtPmZhaWxlZFRvRW50ZXJQaWN0dXJlSW5QaWN0dXJlKCk7CiB9
CiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojp3aWxsRXhpdFBpY3R1cmVJblBp
Y3R1cmUoKQogewotICAgIG1fY2xpZW50cy5mb3JFYWNoTm9uTnVsbE1lbWJlcihbXSAoYXV0byYg
Y2xpZW50KSB7Ci0gICAgICAgIGNsaWVudC53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKLSAg
ICB9KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVudCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50
LT53aWxsRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKIH0KIAogdm9pZCBWaWRlb0Z1bGxzY3JlZW5N
b2RlbENvbnRleHQ6OmRpZEV4aXRQaWN0dXJlSW5QaWN0dXJlKCkKIHsKLSAgICBtX2NsaWVudHMu
Zm9yRWFjaE5vbk51bGxNZW1iZXIoW10gKGF1dG8mIGNsaWVudCkgewotICAgICAgICBjbGllbnQu
ZGlkRXhpdFBpY3R1cmVJblBpY3R1cmUoKTsKLSAgICB9KTsKKyAgICBmb3IgKGF1dG8mIGNsaWVu
dCA6IG1fY2xpZW50cykKKyAgICAgICAgY2xpZW50LT5kaWRFeGl0UGljdHVyZUluUGljdHVyZSgp
OwogfQogCiAjcHJhZ21hIG1hcmsgLSBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHkKQEAgLTM0
OSw2ICszNDMsNyBAQCB2b2lkIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6aW52YWxpZGF0
ZSgpCiAgICAgICAgIFJlZlB0cjxQbGF0Zm9ybVZpZGVvRnVsbHNjcmVlbkludGVyZmFjZT4gaW50
ZXJmYWNlOwogICAgICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IHR1cGxlOwogCisg
ICAgICAgIGludGVyZmFjZS0+aW52YWxpZGF0ZSgpOwogICAgICAgICBbbW9kZWwtPmxheWVySG9z
dFZpZXcoKSByZW1vdmVGcm9tU3VwZXJ2aWV3XTsKICAgICAgICAgbW9kZWwtPnNldExheWVySG9z
dFZpZXcobnVsbHB0cik7CiAgICAgfQpAQCAtNDA2LDEyICs0MDEsMTMgQEAgdm9pZCBWaWRlb0Z1
bGxzY3JlZW5NYW5hZ2VyUHJveHk6OmFwcGxpY2F0aW9uRGlkQmVjb21lQWN0aXZlKCkKIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXJQcm94eTo6TW9kZWxJbnRlcmZhY2VUdXBsZSBWaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyUHJveHk6OmNyZWF0ZU1vZGVsQW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJ
ZCkKIHsKICAgICBhdXRvJiBwbGF5YmFja1Nlc3Npb25Nb2RlbCA9IG1fcGxheWJhY2tTZXNzaW9u
TWFuYWdlclByb3h5LT5lbnN1cmVNb2RlbChjb250ZXh0SWQpOworICAgIFJlZjxWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENvbnRleHQ+IG1vZGVsID0gVmlkZW9GdWxsc2NyZWVuTW9kZWxDb250ZXh0Ojpj
cmVhdGUoKnRoaXMsIHBsYXliYWNrU2Vzc2lvbk1vZGVsLCBjb250ZXh0SWQpOwogICAgIGF1dG8m
IHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZSA9IG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LT5lbnN1cmVJbnRlcmZhY2UoY29udGV4dElkKTsKLSAgICBSZWY8VmlkZW9GdWxsc2NyZWVuTW9k
ZWxDb250ZXh0PiBtb2RlbCA9IFZpZGVvRnVsbHNjcmVlbk1vZGVsQ29udGV4dDo6Y3JlYXRlKG1h
a2VXZWFrUHRyKHRoaXMpLCBwbGF5YmFja1Nlc3Npb25Nb2RlbCwgY29udGV4dElkKTsKLSAgICBS
ZWY8UGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2U+IGludGVyZmFjZSA9IFBsYXRmb3Jt
VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlOjpjcmVhdGUobWFrZVJlZihwbGF5YmFja1Nlc3Npb25J
bnRlcmZhY2UpLCBtb2RlbC5jb3B5UmVmKCkpOworICAgIFJlZjxQbGF0Zm9ybVZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZT4gaW50ZXJmYWNlID0gUGxhdGZvcm1WaWRlb0Z1bGxzY3JlZW5JbnRlcmZh
Y2U6OmNyZWF0ZShwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpOwogICAgIG1fcGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5LT5hZGRDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAKLSAgICBp
bnRlcmZhY2UtPnNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVyKG1vZGVsLT5jcmVhdGVX
ZWFrUHRyKCkpOworICAgIGludGVyZmFjZS0+c2V0VmlkZW9GdWxsc2NyZWVuTW9kZWwoJm1vZGVs
LmdldCgpKTsKKyAgICBpbnRlcmZhY2UtPnNldFZpZGVvRnVsbHNjcmVlbkNoYW5nZU9ic2VydmVy
KCZtb2RlbC5nZXQoKSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9k
ZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpAQCAtNDUwLDYgKzQ0Niw3IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpyZW1vdmVDbGllbnRGb3JDb250ZXh0KHVpbnQ2NF90
IGNvbnRleHRJZCkKICAgICBjbGllbnRDb3VudC0tOwogCiAgICAgaWYgKGNsaWVudENvdW50IDw9
IDApIHsKKyAgICAgICAgZW5zdXJlSW50ZXJmYWNlKGNvbnRleHRJZCkuc2V0VmlkZW9GdWxsc2Ny
ZWVuTW9kZWwobnVsbHB0cik7CiAgICAgICAgIG1fcGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
LT5yZW1vdmVDbGllbnRGb3JDb250ZXh0KGNvbnRleHRJZCk7CiAgICAgICAgIG1fY2xpZW50Q291
bnRzLnJlbW92ZShjb250ZXh0SWQpOwogICAgICAgICBtX2NvbnRleHRNYXAucmVtb3ZlKGNvbnRl
eHRJZCk7CkBAIC01NDEsNyArNTM4LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJv
eHk6OmV4aXRGdWxsc2NyZWVuV2l0aG91dEFuaW1hdGlvblRvTW9kZSh1aW50NjRfdAogfQogI2Vu
ZGlmCiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRlVM
TFNDUkVFTl9BUEkpCiAKIHZvaWQgVmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5OjpzZXRJbmxp
bmVSZWN0KHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgaW5saW5l
UmVjdCwgYm9vbCB2aXNpYmxlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvaW9zL2Z1bGxzY3JlZW4vV0tGdWxsU2NyZWVuVmlld0NvbnRyb2xsZXIubW0gYi9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5tbQppbmRleCBmMTc0NzVlYzgxOGJhYTczMTVmZDliZjQ5NjJkZmY0NWZmZmVlOTQ5Li5hOWFj
NTQ1ODYyMTQwY2NhMjE2NDdhMGMzMGFhYTcyZTRhMTMxOTM2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxl
ci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvZnVsbHNjcmVlbi9XS0Z1bGxT
Y3JlZW5WaWV3Q29udHJvbGxlci5tbQpAQCAtNTYsOSArNTYsNyBAQCBzdGF0aWMgY29uc3QgZG91
YmxlIHJlcXVpcmVkU2NvcmUgPSAwLjE7CiAtICh2b2lkKWZhaWxlZFRvRW50ZXJQaWN0dXJlSW5Q
aWN0dXJlOwogQGVuZAogCi1jbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclBsYXliYWNr
U2Vzc2lvbk1vZGVsQ2xpZW50IAotICAgIDogcHVibGljIFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xp
ZW50Ci0gICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8V0tGdWxsU2NyZWVuVmlld0NvbnRyb2xs
ZXJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudD4geworY2xhc3MgV0tGdWxsU2NyZWVuVmlld0Nv
bnRyb2xsZXJQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudCA6IFBsYXliYWNrU2Vzc2lvbk1vZGVs
Q2xpZW50IHsKIHB1YmxpYzoKICAgICB2b2lkIHNldFBhcmVudChXS0Z1bGxTY3JlZW5WaWV3Q29u
dHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAgLTgxLDExICs3OSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSA9PSBpbnRlcmZhY2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsK
KyAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25N
b2RlbCgpKQorICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCkt
PnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIG1faW50ZXJmYWNlID0gaW50ZXJmYWNlOwot
ICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+cGxheWJh
Y2tTZXNzaW9uTW9kZWwoKS5hZGRDbGllbnQobWFrZVdlYWtQdHIoKnRoaXMpKTsKKyAgICAgICAg
aWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpKQor
ICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnBsYXliYWNrU2Vzc2lvbk1vZGVsKCktPmFkZENsaWVu
dCgqdGhpcyk7CiAgICAgfQogCiBwcml2YXRlOgpAQCAtOTMsOSArOTEsNyBAQCBwcml2YXRlOgog
ICAgIFJlZlB0cjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VBVktpdD4gbV9pbnRlcmZhY2U7CiB9
OwogCi1jbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVs
Q2xpZW50Ci0gICAgOiBwdWJsaWMgVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQKLSAgICAsIHB1
YmxpYyBDYW5NYWtlV2Vha1B0cjxXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVvRnVsbHNj
cmVlbk1vZGVsQ2xpZW50PiB7CitjbGFzcyBXS0Z1bGxTY3JlZW5WaWV3Q29udHJvbGxlclZpZGVv
RnVsbHNjcmVlbk1vZGVsQ2xpZW50IDogVmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgewogcHVi
bGljOgogICAgIHZvaWQgc2V0UGFyZW50KFdLRnVsbFNjcmVlblZpZXdDb250cm9sbGVyICpwYXJl
bnQpIHsgbV9wYXJlbnQgPSBwYXJlbnQ7IH0KIApAQCAtMTA0LDExICsxMDAsMTEgQEAgcHVibGlj
OgogICAgICAgICBpZiAobV9pbnRlcmZhY2UgPT0gaW50ZXJmYWNlKQogICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgIGlmIChtX2ludGVyZmFjZSkKLSAgICAgICAgICAgIG1faW50ZXJmYWNl
LT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLnJlbW92ZUNsaWVudCgqdGhpcyk7CisgICAgICAgIGlm
IChtX2ludGVyZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAg
ICAgICAgICAgIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5yZW1vdmVDbGll
bnQoKnRoaXMpOwogICAgICAgICBtX2ludGVyZmFjZSA9IGludGVyZmFjZTsKLSAgICAgICAgaWYg
KG1faW50ZXJmYWNlKQotICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1v
ZGVsKCkuYWRkQ2xpZW50KG1ha2VXZWFrUHRyKCp0aGlzKSk7CisgICAgICAgIGlmIChtX2ludGVy
ZmFjZSAmJiBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKSkKKyAgICAgICAgICAg
IG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5Nb2RlbCgpLT5hZGRDbGllbnQoKnRoaXMpOwog
ICAgIH0KIAogICAgIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUFWS2l0KiBpbnRlcmZhY2UoKSBj
b25zdCB7IHJldHVybiBtX2ludGVyZmFjZS5nZXQoKTsgfQpAQCAtMjcyLDE0ICsyNjgsOSBAQCBw
cml2YXRlOgogICAgIF9wbGF5YmFja0NsaWVudC5zZXRJbnRlcmZhY2UocGxheWJhY2tTZXNzaW9u
SW50ZXJmYWNlKTsKICAgICBfdmlkZW9GdWxsc2NyZWVuQ2xpZW50LnNldEludGVyZmFjZSh2aWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2UpOwogCi0gICAgaWYgKCFwbGF5YmFja1Nlc3Npb25JbnRlcmZh
Y2UpIHsKLSAgICAgICAgc2VsZi5wbGF5aW5nID0gTk87Ci0gICAgICAgIFtfcGlwQnV0dG9uIHNl
dEhpZGRlbjpZRVNdOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgc2VsZi5wbGF5aW5n
ID0gcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpLmlzUGxh
eWluZygpOwotICAgIFtfcGlwQnV0dG9uIHNldEhpZGRlbjpOT107CisgICAgUGxheWJhY2tTZXNz
aW9uTW9kZWwqIHBsYXliYWNrU2Vzc2lvbk1vZGVsID0gcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNl
ID8gcGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlLT5wbGF5YmFja1Nlc3Npb25Nb2RlbCgpIDogbnVs
bHB0cjsKKyAgICBzZWxmLnBsYXlpbmcgPSBwbGF5YmFja1Nlc3Npb25Nb2RlbCA/IHBsYXliYWNr
U2Vzc2lvbk1vZGVsLT5pc1BsYXlpbmcoKSA6IE5POworICAgIFtfcGlwQnV0dG9uIHNldEhpZGRl
bjohcGxheWJhY2tTZXNzaW9uTW9kZWxdOwogfQogCiAtICh2b2lkKXNldFByZWZlcnNTdGF0dXNC
YXJIaWRkZW46KEJPT0wpdmFsdWUKQEAgLTUyNSw4ICs1MTYsMTQgQEAgcHJpdmF0ZToKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgUGxhdGZvcm1QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UqIHBsYXli
YWNrU2Vzc2lvbkludGVyZmFjZSA9IHBsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmNvbnRyb2xzTWFu
YWdlckludGVyZmFjZSgpOwotICAgIGlmIChwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UpCi0gICAg
ICAgIHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9kZWwoKS50b2dn
bGVQaWN0dXJlSW5QaWN0dXJlKCk7CisgICAgaWYgKCFwbGF5YmFja1Nlc3Npb25JbnRlcmZhY2Up
CisgICAgICAgIHJldHVybjsKKworICAgIFBsYXliYWNrU2Vzc2lvbk1vZGVsKiBwbGF5YmFja1Nl
c3Npb25Nb2RlbCA9IHBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+cGxheWJhY2tTZXNzaW9uTW9k
ZWwoKTsKKyAgICBpZiAoIXBsYXliYWNrU2Vzc2lvbk1vZGVsKQorICAgICAgICByZXR1cm47CisK
KyAgICBwbGF5YmFja1Nlc3Npb25Nb2RlbC0+dG9nZ2xlUGljdHVyZUluUGljdHVyZSgpOwogfQog
CiAtICh2b2lkKV90b3VjaERldGVjdGVkOihpZClzZW5kZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL21hYy9XS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyLm1tIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0K
aW5kZXggNjBhN2Q4YWE1NDNiNzU3ZjkxOTM2ZmZmMjlmOGEzOWM5ZjM2MjU0MS4uYjYwYTU1Yzk1
YWViMmVjZmE5MDM4Y2ZkNjE3Yzc3ZjIxOWIxOTc2MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvbWFjL1dLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXIubW0K
QEAgLTUyLDkgKzUyLDcgQEAgc3RhdGljIGNvbnN0IE5TVGltZUludGVydmFsIERlZmF1bHRXYXRj
aGRvZ1RpbWVySW50ZXJ2YWwgPSAxOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotY2xhc3MgV0tG
dWxsU2NyZWVuV2luZG93Q29udHJvbGxlclZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IAotICAg
IDogcHVibGljIENhbk1ha2VXZWFrUHRyPFdLRnVsbFNjcmVlbldpbmRvd0NvbnRyb2xsZXJWaWRl
b0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4KLSAgICAsIHB1YmxpYyBXZWJDb3JlOjpWaWRlb0Z1bGxz
Y3JlZW5Nb2RlbENsaWVudCB7CitjbGFzcyBXS0Z1bGxTY3JlZW5XaW5kb3dDb250cm9sbGVyVmlk
ZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQgOiBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENs
aWVudCB7CiBwdWJsaWM6CiAgICAgdm9pZCBzZXRQYXJlbnQoV0tGdWxsU2NyZWVuV2luZG93Q29u
dHJvbGxlciAqcGFyZW50KSB7IG1fcGFyZW50ID0gcGFyZW50OyB9CiAKQEAgLTYzLDExICs2MSwx
MSBAQCBwdWJsaWM6CiAgICAgICAgIGlmIChtX2ludGVyZmFjZSA9PSBpbnRlcmZhY2UpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKG1faW50ZXJmYWNlKQotICAgICAgICAgICAg
bV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkucmVtb3ZlQ2xpZW50KCp0aGlzKTsK
KyAgICAgICAgaWYgKG1faW50ZXJmYWNlICYmIG1faW50ZXJmYWNlLT52aWRlb0Z1bGxzY3JlZW5N
b2RlbCgpKQorICAgICAgICAgICAgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkt
PnJlbW92ZUNsaWVudCgqdGhpcyk7CiAgICAgICAgIG1faW50ZXJmYWNlID0gaW50ZXJmYWNlOwot
ICAgICAgICBpZiAobV9pbnRlcmZhY2UpCi0gICAgICAgICAgICBtX2ludGVyZmFjZS0+dmlkZW9G
dWxsc2NyZWVuTW9kZWwoKS5hZGRDbGllbnQobWFrZVdlYWtQdHIodGhpcykpOworICAgICAgICBp
ZiAobV9pbnRlcmZhY2UgJiYgbV9pbnRlcmZhY2UtPnZpZGVvRnVsbHNjcmVlbk1vZGVsKCkpCisg
ICAgICAgICAgICBtX2ludGVyZmFjZS0+dmlkZW9GdWxsc2NyZWVuTW9kZWwoKS0+YWRkQ2xpZW50
KCp0aGlzKTsKICAgICB9CiAKICAgICBXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VN
YWMqIGludGVyZmFjZSgpIGNvbnN0IHsgcmV0dXJuIG1faW50ZXJmYWNlLmdldCgpOyB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFu
YWdlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1BsYXliYWNrU2Vzc2lvbk1h
bmFnZXIuaAppbmRleCA5MWNlZmZhOTYzZjI2MGQ1Y2UyNDFjNzY5MjMwZjg0NTViZGUyNThkLi5m
MGRlNjJiOGRiMDVhMzdlYWU3ZDk3MmJhNjZmYmM1ODdlMzI0MGY5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLmgK
QEAgLTQ3LDggKzQ3LDYgQEAgY2xhc3MgTWVzc2FnZVJlY2VpdmVyOwogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBjbGFzcyBOb2RlOwotY2xhc3MgUGxheWJhY2tTZXNzaW9uTW9kZWw7Ci1jbGFzcyBQ
bGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudDsKIH0KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01
NywxNyArNTUsMTcgQEAgY2xhc3MgV2ViUGFnZTsKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXI7CiAKIGNsYXNzIFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQgZmluYWwKLSAgICA6
IHB1YmxpYyBXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKLSAgICAsIHB1YmxpYyBX
ZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbENsaWVudAotICAgICwgcHVibGljIFJlZkNvdW50
ZWQ8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4geworICAgIDogcHVibGljIFJlZkNv
dW50ZWQ8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4KKyAgICAsIHB1YmxpYyBXZWJD
b3JlOjpQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2UKKyAgICAsIHB1YmxpYyBXZWJDb3JlOjpQbGF5
YmFja1Nlc3Npb25Nb2RlbENsaWVudCB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0PiBjcmVhdGUoV2Vha1B0cjxQbGF5YmFja1Nlc3Npb25N
YW5hZ2VyPiYmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkKKyAgICBzdGF0aWMgUmVmPFBs
YXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShQbGF5YmFja1Nlc3Npb25NYW5h
Z2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgewotICAgICAgICByZXR1cm4g
YWRvcHRSZWYoKm5ldyBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KFdURk1vdmUobWFu
YWdlciksIGNvbnRleHRJZCkpOworICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBQbGF5YmFj
a1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KG1hbmFnZXIsIGNvbnRleHRJZCkpOwogICAgIH0KICAg
ICB2aXJ0dWFsIH5QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0KCk7CiAKLSAgICBXZWFr
UHRyPFdlYkNvcmU6OlBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiBjcmVhdGVXZWFrUHRyKCkg
eyByZXR1cm4gbV93ZWFrUHRyRmFjdG9yeS5jcmVhdGVXZWFrUHRyKCp0aGlzKTsgfQorICAgIHZv
aWQgaW52YWxpZGF0ZSgpIHsgbV9tYW5hZ2VyID0gbnVsbHB0cjsgfQogCiBwcml2YXRlOgogICAg
IGZyaWVuZCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OwpAQCAtOTMsMTcg
KzkxLDEzIEBAIHByaXZhdGU6CiAgICAgdm9pZCB2b2x1bWVDaGFuZ2VkKGRvdWJsZSkgZmluYWw7
CiAgICAgdm9pZCBpc1BpY3R1cmVJblBpY3R1cmVTdXBwb3J0ZWRDaGFuZ2VkKGJvb2wpIGZpbmFs
OwogCi0gICAgUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChXZWFrUHRyPFBsYXliYWNr
U2Vzc2lvbk1hbmFnZXI+JiYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CisgICAgUGxheWJhY2tTZXNz
aW9uSW50ZXJmYWNlQ29udGV4dChQbGF5YmFja1Nlc3Npb25NYW5hZ2VyJiwgdWludDY0X3QgY29u
dGV4dElkKTsKIAotICAgIFdlYWtQdHI8UGxheWJhY2tTZXNzaW9uTWFuYWdlcj4gbV9tYW5hZ2Vy
OwotICAgIFdlYWtQdHJGYWN0b3J5PFBsYXliYWNrU2Vzc2lvbk1vZGVsQ2xpZW50PiBtX3dlYWtQ
dHJGYWN0b3J5OworICAgIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIqIG1fbWFuYWdlcjsKICAgICB1
aW50NjRfdCBtX2NvbnRleHRJZDsKIH07CiAKLWNsYXNzIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXIK
LSAgICA6IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+Ci0gICAgLCBw
cml2YXRlIElQQzo6TWVzc2FnZVJlY2VpdmVyCi0gICAgLCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8
UGxheWJhY2tTZXNzaW9uTWFuYWdlcj4geworY2xhc3MgUGxheWJhY2tTZXNzaW9uTWFuYWdlciA6
IHB1YmxpYyBSZWZDb3VudGVkPFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI+LCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPFBsYXliYWNrU2Vzc2lv
bk1hbmFnZXI+IGNyZWF0ZShXZWJQYWdlJik7CiAgICAgdmlydHVhbCB+UGxheWJhY2tTZXNzaW9u
TWFuYWdlcigpOwpAQCAtMTcyLDcgKzE2Niw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHNldFZv
bHVtZSh1aW50NjRfdCBjb250ZXh0SWQsIGRvdWJsZSB2b2x1bWUpOwogICAgIHZvaWQgc2V0UGxh
eWluZ09uU2Vjb25kU2NyZWVuKHVpbnQ2NF90IGNvbnRleHRJZCwgYm9vbCB2YWx1ZSk7CiAKLSAg
ICBXZWFrUHRyRmFjdG9yeTxXZWJDb3JlOjpQbGF5YmFja1Nlc3Npb25Nb2RlbD4gbV93ZWFrUHRy
RmFjdG9yeTsKICAgICBXZWJQYWdlKiBtX3BhZ2U7CiAgICAgSGFzaE1hcDxXZWJDb3JlOjpIVE1M
TWVkaWFFbGVtZW50KiwgdWludDY0X3Q+IG1fbWVkaWFFbGVtZW50czsKICAgICBIYXNoTWFwPHVp
bnQ2NF90LCBNb2RlbEludGVyZmFjZVR1cGxlPiBtX2NvbnRleHRNYXA7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvUGxheWJhY2tTZXNzaW9uTWFuYWdlci5tbSBi
L1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1t
CmluZGV4IDM3MmFjMjAyMWUzNWFiZjdlZTlmYzc0MzY0YzYwZGZiYmQ4NzYyMDguLmQwYWVjMjVl
OTJlOTdjMjg1MmI5NmRkMzVmYzQxNjcxNjYyZDhkODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9QbGF5YmFja1Nlc3Npb25NYW5hZ2VyLm1tCkBAIC01
NCwxMyArNTQsMTUgQEAgc3RhdGljIHVpbnQ2NF90IG5leHRDb250ZXh0SWQoKQogCiAjcHJhZ21h
IG1hcmsgLSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0CiAKLVBsYXliYWNrU2Vzc2lv
bkludGVyZmFjZUNvbnRleHQ6OlBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQoV2Vha1B0
cjxQbGF5YmFja1Nlc3Npb25NYW5hZ2VyPiYmIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkK
LSAgICA6IG1fbWFuYWdlcihXVEZNb3ZlKG1hbmFnZXIpKQorUGxheWJhY2tTZXNzaW9uSW50ZXJm
YWNlQ29udGV4dDo6UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dChQbGF5YmFja1Nlc3Np
b25NYW5hZ2VyJiBtYW5hZ2VyLCB1aW50NjRfdCBjb250ZXh0SWQpCisgICAgOiBtX21hbmFnZXIo
Jm1hbmFnZXIpCiAgICAgLCBtX2NvbnRleHRJZChjb250ZXh0SWQpCiB7CiB9CiAKLVBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQ6On5QbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
KCkgPSBkZWZhdWx0OworUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6flBsYXliYWNr
U2Vzc2lvbkludGVyZmFjZUNvbnRleHQoKQoreworfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbklu
dGVyZmFjZUNvbnRleHQ6OnJlc2V0TWVkaWFTdGF0ZSgpCiB7CkBAIC0xODMsNyArMTg1LDEwIEBA
IFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6On5QbGF5YmFja1Nlc3Npb25NYW5hZ2VyKCkKICAgICAg
ICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50PiBtb2RlbDsKICAgICAg
ICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAg
ICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsKKyAgICAgICAgbW9kZWwt
PnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKICAgICAgICAgbW9kZWwtPnNldE1lZGlhRWxlbWVu
dChudWxscHRyKTsKKworICAgICAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAgICB9CiAK
ICAgICBtX2NvbnRleHRNYXAuY2xlYXIoKTsKQEAgLTIwMyw5ICsyMDgsOSBAQCB2b2lkIFBsYXli
YWNrU2Vzc2lvbk1hbmFnZXI6OmludmFsaWRhdGUoKQogCiBQbGF5YmFja1Nlc3Npb25NYW5hZ2Vy
OjpNb2RlbEludGVyZmFjZVR1cGxlIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNyZWF0ZU1vZGVs
QW5kSW50ZXJmYWNlKHVpbnQ2NF90IGNvbnRleHRJZCkKIHsKLSAgICBSZWY8UGxheWJhY2tTZXNz
aW9uTW9kZWxNZWRpYUVsZW1lbnQ+IG1vZGVsID0gUGxheWJhY2tTZXNzaW9uTW9kZWxNZWRpYUVs
ZW1lbnQ6OmNyZWF0ZSgpOwotICAgIFJlZjxQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0
PiBpbnRlcmZhY2UgPSBQbGF5YmFja1Nlc3Npb25JbnRlcmZhY2VDb250ZXh0OjpjcmVhdGUobWFr
ZVdlYWtQdHIodGhpcyksIGNvbnRleHRJZCk7Ci0gICAgbW9kZWwtPmFkZENsaWVudChpbnRlcmZh
Y2UtPmNyZWF0ZVdlYWtQdHIoKSk7CisgICAgUmVmUHRyPFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVk
aWFFbGVtZW50PiBtb2RlbCA9IFBsYXliYWNrU2Vzc2lvbk1vZGVsTWVkaWFFbGVtZW50OjpjcmVh
dGUoKTsKKyAgICBSZWZQdHI8UGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dD4gaW50ZXJm
YWNlID0gUGxheWJhY2tTZXNzaW9uSW50ZXJmYWNlQ29udGV4dDo6Y3JlYXRlKCp0aGlzLCBjb250
ZXh0SWQpOworICAgIG1vZGVsLT5hZGRDbGllbnQoKmludGVyZmFjZSk7CiAKICAgICByZXR1cm4g
c3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9kZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpA
QCAtMjM2LDYgKzI0MSw4IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6cmVtb3ZlQ29u
dGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAKICAgICBSZWZQdHI8SFRNTE1lZGlhRWxlbWVudD4g
bWVkaWFFbGVtZW50ID0gbW9kZWwtPm1lZGlhRWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRNZWRp
YUVsZW1lbnQobnVsbHB0cik7CisgICAgbW9kZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsK
KyAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUoKTsKICAgICBtX21lZGlhRWxlbWVudHMucmVtb3Zl
KG1lZGlhRWxlbWVudC5nZXQoKSk7CiAgICAgbV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQp
OwogfQpAQCAtMjc3LDggKzI4NCw2IEBAIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6c2V0
VXBQbGF5YmFja0NvbnRyb2xzTWFuYWdlcihXZWJDb3JlOjpIVE1MTWVkaWFFbGVtCiAKICAgICBh
ZGRDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2VyQ29udGV4dElkKTsKIAotICAgIGlm
ICghbV9wYWdlKQotICAgICAgICByZXR1cm47CiAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xzTWFu
YWdlckRpZENoYW5nZSgpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpTZXRVcFBsYXliYWNrQ29udHJvbHNNYW5hZ2VyV2l0aElEKG1fY29u
dHJvbHNNYW5hZ2VyQ29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CkBAIC0yOTEsOSAr
Mjk2LDYgQEAgdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpjbGVhclBsYXliYWNrQ29udHJv
bHNNYW5hZ2VyKCkKICAgICByZW1vdmVDbGllbnRGb3JDb250ZXh0KG1fY29udHJvbHNNYW5hZ2Vy
Q29udGV4dElkKTsKICAgICBtX2NvbnRyb2xzTWFuYWdlckNvbnRleHRJZCA9IDA7CiAKLSAgICBp
ZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgbV9wYWdlLT52aWRlb0NvbnRyb2xz
TWFuYWdlckRpZENoYW5nZSgpOwogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tT
ZXNzaW9uTWFuYWdlclByb3h5OjpDbGVhclBsYXliYWNrQ29udHJvbHNNYW5hZ2VyKCksIG1fcGFn
ZS0+cGFnZUlEKCkpOwogfQpAQCAtMzIyLDQ1ICszMjQsMzYgQEAgV2ViQ29yZTo6SFRNTE1lZGlh
RWxlbWVudCogUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3VycmVudFBsYXliYWNrQ29udHJvbHNF
bGVtZW4KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpyZXNldE1lZGlhU3RhdGUodWlu
dDY0X3QgY29udGV4dElkKQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2Vu
ZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpSZXNldE1lZGlhU3RhdGUo
Y29udGV4dElkKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2Vz
OjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlJlc2V0TWVkaWFTdGF0ZShjb250ZXh0SWQp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpk
dXJhdGlvbkNoYW5nZWQodWludDY0X3QgY29udGV4dElkLCBkb3VibGUgZHVyYXRpb24pCiB7Ci0g
ICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0aW9uKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nl
c3Npb25NYW5hZ2VyUHJveHk6OkR1cmF0aW9uQ2hhbmdlZChjb250ZXh0SWQsIGR1cmF0aW9uKSwg
bV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6Y3Vy
cmVudFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGN1cnJlbnRUaW1lLCBk
b3VibGUgYW5jaG9yVGltZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Q3VycmVudFRpbWVDaGFu
Z2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUpLCBtX3BhZ2UtPnBhZ2VJRCgp
KTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94
eTo6Q3VycmVudFRpbWVDaGFuZ2VkKGNvbnRleHRJZCwgY3VycmVudFRpbWUsIGFuY2hvclRpbWUp
LCBtX3BhZ2UtPnBhZ2VJRCgpKTsKIH0KIAogdm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjpi
dWZmZXJlZFRpbWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgZG91YmxlIGJ1ZmZlcmVkVGlt
ZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QnVmZmVyZWRUaW1lQ2hhbmdlZChjb250ZXh0SWQs
IGJ1ZmZlcmVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNz
YWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpCdWZmZXJlZFRpbWVDaGFuZ2VkKGNv
bnRleHRJZCwgYnVmZmVyZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxh
eWJhY2tTZXNzaW9uTWFuYWdlcjo6cGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBkb3VibGUgcGxheWJhY2tTdGFydGVkVGltZSkKIHsKLSAgICBpZiAobV9wYWdl
KQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6UGxheWJhY2tTdGFydGVkVGltZUNoYW5nZWQoY29udGV4dElkLCBwbGF5YmFja1N0YXJ0
ZWRUaW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAgbV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQ
bGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OlBsYXliYWNrU3RhcnRlZFRpbWVDaGFuZ2VkKGNv
bnRleHRJZCwgcGxheWJhY2tTdGFydGVkVGltZSksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2
b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnJhdGVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJ
ZCwgYm9vbCBpc1BsYXlpbmcsIGZsb2F0IHBsYXliYWNrUmF0ZSkKIHsKLSAgICBpZiAobV9wYWdl
KQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6UmF0ZUNoYW5nZWQoY29udGV4dElkLCBpc1BsYXlpbmcsIHBsYXliYWNrUmF0ZSksIG1f
cGFnZS0+cGFnZUlEKCkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNz
aW9uTWFuYWdlclByb3h5OjpSYXRlQ2hhbmdlZChjb250ZXh0SWQsIGlzUGxheWluZywgcGxheWJh
Y2tSYXRlKSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFu
YWdlcjo6c2Vla2FibGVSYW5nZXNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgV2Vi
Q29yZTo6VGltZVJhbmdlcyYgdGltZVJhbmdlcywgZG91YmxlIGxhc3RNb2RpZmllZFRpbWUsIGRv
dWJsZSBsaXZlVXBkYXRlSW50ZXJ2YWwpCiB7Ci0gICAgaWYgKCFtX3BhZ2UpCi0gICAgICAgIHJl
dHVybjsKLQogICAgIFZlY3RvcjxzdGQ6OnBhaXI8ZG91YmxlLCBkb3VibGU+PiByYW5nZXNWZWN0
b3I7CiAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRpbWVSYW5nZXMubGVuZ3RoKCk7IGkr
KykgewogICAgICAgICBkb3VibGUgc3RhcnQgPSB0aW1lUmFuZ2VzLnJhbmdlcygpLnN0YXJ0KGkp
LnRvRG91YmxlKCk7CkBAIC0zNzIsNTYgKzM2NSw0NyBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OnNlZWthYmxlUmFuZ2VzQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGNvbnN0IFdl
YgogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmNhblBsYXlGYXN0UmV2ZXJzZUNoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIHZhbHVlKQogewotICAgIGlmIChtX3BhZ2UpCi0g
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpDYW5QbGF5RmFzdFJldmVyc2VDaGFuZ2VkKGNvbnRleHRJZCwgdmFsdWUpLCBtX3BhZ2UtPnBh
Z2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFn
ZXJQcm94eTo6Q2FuUGxheUZhc3RSZXZlcnNlQ2hhbmdlZChjb250ZXh0SWQsIHZhbHVlKSwgbV9w
YWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6YXVkaW9N
ZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFuZ2VkKHVpbnQ2NF90IGNvbnRleHRJZCwgY29uc3QgVmVj
dG9yPE1lZGlhU2VsZWN0aW9uT3B0aW9uPiYgb3B0aW9ucywgdWludDY0X3Qgc2VsZWN0ZWRJbmRl
eCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBs
YXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6QXVkaW9NZWRpYVNlbGVjdGlvbk9wdGlvbnNDaGFu
Z2VkKGNvbnRleHRJZCwgb3B0aW9ucywgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkp
OworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5
OjpBdWRpb01lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQoY29udGV4dElkLCBvcHRpb25zLCBz
ZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNz
aW9uTWFuYWdlcjo6bGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5nZWQodWludDY0X3Qg
Y29udGV4dElkLCBjb25zdCBWZWN0b3I8TWVkaWFTZWxlY3Rpb25PcHRpb24+JiBvcHRpb25zLCB1
aW50NjRfdCBzZWxlY3RlZEluZGV4KQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFn
ZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpMZWdpYmxlTWVk
aWFTZWxlY3Rpb25PcHRpb25zQ2hhbmdlZChjb250ZXh0SWQsIG9wdGlvbnMsIHNlbGVjdGVkSW5k
ZXgpLCBtX3BhZ2UtPnBhZ2VJRCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXli
YWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uT3B0aW9uc0NoYW5n
ZWQoY29udGV4dElkLCBvcHRpb25zLCBzZWxlY3RlZEluZGV4KSwgbV9wYWdlLT5wYWdlSUQoKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6ZXh0ZXJuYWxQbGF5YmFja0NoYW5n
ZWQodWludDY0X3QgY29udGV4dElkLCBib29sIGVuYWJsZWQsIFBsYXliYWNrU2Vzc2lvbk1vZGVs
OjpFeHRlcm5hbFBsYXliYWNrVGFyZ2V0VHlwZSB0YXJnZXRUeXBlLCBTdHJpbmcgbG9jYWxpemVk
RGV2aWNlTmFtZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNlbmQoTWVz
c2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6RXh0ZXJuYWxQbGF5YmFja1Byb3Bl
cnRpZXNDaGFuZ2VkKGNvbnRleHRJZCwgZW5hYmxlZCwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KHRh
cmdldFR5cGUpLCBsb2NhbGl6ZWREZXZpY2VOYW1lKSwgbV9wYWdlLT5wYWdlSUQoKSk7CisgICAg
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkV4dGVy
bmFsUGxheWJhY2tQcm9wZXJ0aWVzQ2hhbmdlZChjb250ZXh0SWQsIGVuYWJsZWQsIHN0YXRpY19j
YXN0PHVpbnQzMl90Pih0YXJnZXRUeXBlKSwgbG9jYWxpemVkRGV2aWNlTmFtZSksIG1fcGFnZS0+
cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmF1ZGlvTWVkaWFT
ZWxlY3Rpb25JbmRleENoYW5nZWQodWludDY0X3QgY29udGV4dElkLCB1aW50NjRfdCBzZWxlY3Rl
ZEluZGV4KQogewotICAgIGlmIChtX3BhZ2UpCi0gICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdl
czo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRpb01lZGlhU2VsZWN0aW9uSW5kZXhD
aGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOworICAg
IG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpBdWRp
b01lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0ZWRJbmRleCksIG1f
cGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OmxlZ2li
bGVNZWRpYVNlbGVjdGlvbkluZGV4Q2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NF90
IHNlbGVjdGVkSW5kZXgpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdlLT5zZW5k
KE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OkxlZ2libGVNZWRpYVNlbGVj
dGlvbkluZGV4Q2hhbmdlZChjb250ZXh0SWQsIHNlbGVjdGVkSW5kZXgpLCBtX3BhZ2UtPnBhZ2VJ
RCgpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQ
cm94eTo6TGVnaWJsZU1lZGlhU2VsZWN0aW9uSW5kZXhDaGFuZ2VkKGNvbnRleHRJZCwgc2VsZWN0
ZWRJbmRleCksIG1fcGFnZS0+cGFnZUlEKCkpOwogfQogCiB2b2lkIFBsYXliYWNrU2Vzc2lvbk1h
bmFnZXI6OndpcmVsZXNzVmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZCh1aW50NjRfdCBjb250
ZXh0SWQsIGJvb2wgZGlzYWJsZWQpCiB7Ci0gICAgaWYgKG1fcGFnZSkKLSAgICAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OldpcmVsZXNzVmlk
ZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChjb250ZXh0SWQsIGRpc2FibGVkKSk7CisgICAgbV9w
YWdlLT5zZW5kKE1lc3NhZ2VzOjpQbGF5YmFja1Nlc3Npb25NYW5hZ2VyUHJveHk6OldpcmVsZXNz
VmlkZW9QbGF5YmFja0Rpc2FibGVkQ2hhbmdlZChjb250ZXh0SWQsIGRpc2FibGVkKSk7CiB9CiAK
IHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6bXV0ZWRDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgYm9vbCBtdXRlZCkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2UtPnNl
bmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6TXV0ZWRDaGFuZ2VkKGNv
bnRleHRJZCwgbXV0ZWQpKTsKKyAgICBtX3BhZ2UtPnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vz
c2lvbk1hbmFnZXJQcm94eTo6TXV0ZWRDaGFuZ2VkKGNvbnRleHRJZCwgbXV0ZWQpKTsKIH0KIAog
dm9pZCBQbGF5YmFja1Nlc3Npb25NYW5hZ2VyOjp2b2x1bWVDaGFuZ2VkKHVpbnQ2NF90IGNvbnRl
eHRJZCwgZG91YmxlIHZvbHVtZSkKIHsKLSAgICBpZiAobV9wYWdlKQotICAgICAgICBtX3BhZ2Ut
PnNlbmQoTWVzc2FnZXM6OlBsYXliYWNrU2Vzc2lvbk1hbmFnZXJQcm94eTo6Vm9sdW1lQ2hhbmdl
ZChjb250ZXh0SWQsIHZvbHVtZSkpOworICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxheWJh
Y2tTZXNzaW9uTWFuYWdlclByb3h5OjpWb2x1bWVDaGFuZ2VkKGNvbnRleHRJZCwgdm9sdW1lKSk7
CiB9CiAKIHZvaWQgUGxheWJhY2tTZXNzaW9uTWFuYWdlcjo6aXNQaWN0dXJlSW5QaWN0dXJlU3Vw
cG9ydGVkQ2hhbmdlZCh1aW50NjRfdCBjb250ZXh0SWQsIGJvb2wgc3VwcG9ydGVkKQpAQCAtNTA1
LDEwICs0ODksOCBAQCB2b2lkIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXI6OnNlbGVjdExlZ2libGVN
ZWRpYU9wdGlvbih1aW50NjRfdCBjb250ZXh0SWQsIHVpbnQ2NAogCiB2b2lkIFBsYXliYWNrU2Vz
c2lvbk1hbmFnZXI6OmhhbmRsZUNvbnRyb2xsZWRFbGVtZW50SURSZXF1ZXN0KHVpbnQ2NF90IGNv
bnRleHRJZCkKIHsKLSAgICBpZiAoIW1fcGFnZSkKLSAgICAgICAgcmV0dXJuOwotICAgIAotICAg
IGlmIChhdXRvIGVsZW1lbnQgPSBlbnN1cmVNb2RlbChjb250ZXh0SWQpLm1lZGlhRWxlbWVudCgp
KQorICAgIGF1dG8gZWxlbWVudCA9IGVuc3VyZU1vZGVsKGNvbnRleHRJZCkubWVkaWFFbGVtZW50
KCk7CisgICAgaWYgKGVsZW1lbnQpCiAgICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6UGxh
eWJhY2tTZXNzaW9uTWFuYWdlclByb3h5OjpIYW5kbGVDb250cm9sbGVkRWxlbWVudElEUmVzcG9u
c2UoY29udGV4dElkLCBlbGVtZW50LT5nZXRJZEF0dHJpYnV0ZSgpKSk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
LmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdl
ci5oCmluZGV4IGQ1ZTNhOGYxNzMyODRiNGIwZWIxYTNjZjYxOWJiNTFkYmQxNzJmNGIuLmZmOGM0
YmFmNDYzYmUzNTM5ODMwMjkwZWNkMjQ2ZWY5ZmNmYjFkZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL2NvY29hL1ZpZGVvRnVsbHNjcmVlbk1hbmFnZXIuaApAQCAt
NjAsOSArNjAsOSBAQCBjbGFzcyBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0CiAgICAg
OiBwdWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0PgogICAg
ICwgcHVibGljIFdlYkNvcmU6OlZpZGVvRnVsbHNjcmVlbk1vZGVsQ2xpZW50IHsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGNyZWF0ZShX
ZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+JiYgbWFuYWdlciwgdWludDY0X3QgY29udGV4
dElkKQorICAgIHN0YXRpYyBSZWY8VmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dD4gY3Jl
YXRlKFZpZGVvRnVsbHNjcmVlbk1hbmFnZXImIG1hbmFnZXIsIHVpbnQ2NF90IGNvbnRleHRJZCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQoV1RGTW92ZShtYW5hZ2VyKSwgY29udGV4dElkKSk7CisgICAgICAgIHJldHVy
biBhZG9wdFJlZigqbmV3IFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQobWFuYWdlciwg
Y29udGV4dElkKSk7CiAgICAgfQogICAgIHZpcnR1YWwgflZpZGVvRnVsbHNjcmVlbkludGVyZmFj
ZUNvbnRleHQoKTsKIApAQCAtODYsMTYgKzg2LDE0IEBAIHB1YmxpYzoKICAgICBib29sIGlzRnVs
bHNjcmVlbigpIGNvbnN0IHsgcmV0dXJuIG1faXNGdWxsc2NyZWVuOyB9CiAgICAgdm9pZCBzZXRJ
c0Z1bGxzY3JlZW4oYm9vbCBmbGFnKSB7IG1faXNGdWxsc2NyZWVuID0gZmxhZzsgfQogCi0gICAg
V2Vha1B0cjxXZWJDb3JlOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudD4gY3JlYXRlV2Vha1B0
cigpIHsgcmV0dXJuIG1fd2Vha1B0ckZhY3RvcnkuY3JlYXRlV2Vha1B0cigqdGhpcyk7IH0KLQog
cHJpdmF0ZToKICAgICAvLyBWaWRlb0Z1bGxzY3JlZW5Nb2RlbENsaWVudAogICAgIHZvaWQgaGFz
VmlkZW9DaGFuZ2VkKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgdmlkZW9EaW1lbnNpb25zQ2hh
bmdlZChjb25zdCBXZWJDb3JlOjpGbG9hdFNpemUmKSBvdmVycmlkZTsKIAotICAgIFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQoV2Vha1B0cjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiYm
LCB1aW50NjRfdCBjb250ZXh0SWQpOworICAgIFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRl
eHQoVmlkZW9GdWxsc2NyZWVuTWFuYWdlciYsIHVpbnQ2NF90IGNvbnRleHRJZCk7CiAKLSAgICBX
ZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+IG1fbWFuYWdlcjsKKyAgICBWaWRlb0Z1bGxz
Y3JlZW5NYW5hZ2VyKiBtX21hbmFnZXI7CiAgICAgdWludDY0X3QgbV9jb250ZXh0SWQ7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPExheWVySG9zdGluZ0NvbnRleHQ+IG1fbGF5ZXJIb3N0aW5nQ29udGV4
dDsKICAgICBib29sIG1faXNBbmltYXRpbmcgeyBmYWxzZSB9OwpAQCAtMTAzLDEzICsxMDEsOSBA
QCBwcml2YXRlOgogICAgIFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnRFbnVtczo6VmlkZW9GdWxs
c2NyZWVuTW9kZSBtX2Z1bGxzY3JlZW5Nb2RlIHsgV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudEVu
dW1zOjpWaWRlb0Z1bGxzY3JlZW5Nb2RlTm9uZSB9OwogICAgIGJvb2wgbV9mdWxsc2NyZWVuU3Rh
bmRieSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzRnVsbHNjcmVlbiB7IGZhbHNlIH07Ci0gICAg
V2Vha1B0ckZhY3Rvcnk8V2ViQ29yZTo6VmlkZW9GdWxsc2NyZWVuTW9kZWxDbGllbnQ+IG1fd2Vh
a1B0ckZhY3Rvcnk7CiB9OwogCi1jbGFzcyBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyCi0gICAgOiBw
dWJsaWMgUmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPgotICAgICwgcHVibGljIENh
bk1ha2VXZWFrUHRyPFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI+Ci0gICAgLCBwcml2YXRlIElQQzo6
TWVzc2FnZVJlY2VpdmVyIHsKK2NsYXNzIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXIgOiBwdWJsaWMg
UmVmQ291bnRlZDxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyPiwgcHJpdmF0ZSBJUEM6Ok1lc3NhZ2VS
ZWNlaXZlciB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFJlZjxWaWRlb0Z1bGxzY3JlZW5NYW5hZ2Vy
PiBjcmVhdGUoV2ViUGFnZSYsIFBsYXliYWNrU2Vzc2lvbk1hbmFnZXImKTsKICAgICB2aXJ0dWFs
IH5WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvY29jb2EvVmlkZW9GdWxsc2NyZWVuTWFuYWdlci5tbSBiL1NvdXJjZS9XZWJLaXQv
V2ViUHJvY2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCmluZGV4IGY4N2JlNmMy
NjEwN2RkZjA3MzdjZGU3MDc3YTFmZmYwYTBlOGE1MWIuLjcxOWNjMmJiNDhjN2U5NjU4ZDZjM2Iw
N2E4MGRjMjQzYzYxMDgxYTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9j
b2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9jb2NvYS9WaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyLm1tCkBAIC04MCw4ICs4MCw4IEBAIHN0
YXRpYyBJbnRSZWN0IGlubGluZVZpZGVvRnJhbWUoSFRNTFZpZGVvRWxlbWVudCYgZWxlbWVudCkK
IAogI3ByYWdtYSBtYXJrIC0gVmlkZW9GdWxsc2NyZWVuSW50ZXJmYWNlQ29udGV4dAogCi1WaWRl
b0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250ZXh0OjpWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VDb250
ZXh0KFdlYWtQdHI8VmlkZW9GdWxsc2NyZWVuTWFuYWdlcj4mJiBtYW5hZ2VyLCB1aW50NjRfdCBj
b250ZXh0SWQpCi0gICAgOiBtX21hbmFnZXIoV1RGTW92ZShtYW5hZ2VyKSkKK1ZpZGVvRnVsbHNj
cmVlbkludGVyZmFjZUNvbnRleHQ6OlZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQoVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlciYgbWFuYWdlciwgdWludDY0X3QgY29udGV4dElkKQorICAgIDog
bV9tYW5hZ2VyKCZtYW5hZ2VyKQogICAgICwgbV9jb250ZXh0SWQoY29udGV4dElkKQogewogfQpA
QCAtMTI5LDYgKzEyOSw5IEBAIFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6On5WaWRlb0Z1bGxzY3Jl
ZW5NYW5hZ2VyKCkKICAgICAgICAgc3RkOjp0aWUobW9kZWwsIGludGVyZmFjZSkgPSB0dXBsZTsK
IAogICAgICAgICBtb2RlbC0+c2V0VmlkZW9FbGVtZW50KG51bGxwdHIpOworICAgICAgICBtb2Rl
bC0+cmVtb3ZlQ2xpZW50KCppbnRlcmZhY2UpOworCisgICAgICAgIGludGVyZmFjZS0+aW52YWxp
ZGF0ZSgpOwogICAgIH0KIAogICAgIG1fY29udGV4dE1hcC5jbGVhcigpOwpAQCAtMTQ5LDExICsx
NTIsMTEgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjppbnZhbGlkYXRlKCkKIFZpZGVv
RnVsbHNjcmVlbk1hbmFnZXI6Ok1vZGVsSW50ZXJmYWNlVHVwbGUgVmlkZW9GdWxsc2NyZWVuTWFu
YWdlcjo6Y3JlYXRlTW9kZWxBbmRJbnRlcmZhY2UodWludDY0X3QgY29udGV4dElkKQogewogICAg
IFJlZlB0cjxWaWRlb0Z1bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudD4gbW9kZWwgPSBWaWRlb0Z1
bGxzY3JlZW5Nb2RlbFZpZGVvRWxlbWVudDo6Y3JlYXRlKCk7Ci0gICAgUmVmUHRyPFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVvRnVsbHNjcmVlbkludGVy
ZmFjZUNvbnRleHQ6OmNyZWF0ZShtYWtlV2Vha1B0cigqdGhpcyksIGNvbnRleHRJZCk7CisgICAg
UmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZSA9IFZpZGVv
RnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ6OmNyZWF0ZSgqdGhpcywgY29udGV4dElkKTsKICAg
ICBtX3BsYXliYWNrU2Vzc2lvbk1hbmFnZXItPmFkZENsaWVudEZvckNvbnRleHQoY29udGV4dElk
KTsKIAogICAgIGludGVyZmFjZS0+c2V0TGF5ZXJIb3N0aW5nQ29udGV4dChMYXllckhvc3RpbmdD
b250ZXh0OjpjcmVhdGVGb3JFeHRlcm5hbEhvc3RpbmdQcm9jZXNzKCkpOwotICAgIG1vZGVsLT5h
ZGRDbGllbnQoaW50ZXJmYWNlLT5jcmVhdGVXZWFrUHRyKCkpOworICAgIG1vZGVsLT5hZGRDbGll
bnQoKmludGVyZmFjZSk7CiAKICAgICByZXR1cm4gc3RkOjptYWtlX3R1cGxlKFdURk1vdmUobW9k
ZWwpLCBXVEZNb3ZlKGludGVyZmFjZSkpOwogfQpAQCAtMTg2LDYgKzE4OSw4IEBAIHZvaWQgVmlk
ZW9GdWxsc2NyZWVuTWFuYWdlcjo6cmVtb3ZlQ29udGV4dCh1aW50NjRfdCBjb250ZXh0SWQpCiAK
ICAgICBSZWZQdHI8SFRNTFZpZGVvRWxlbWVudD4gdmlkZW9FbGVtZW50ID0gbW9kZWwtPnZpZGVv
RWxlbWVudCgpOwogICAgIG1vZGVsLT5zZXRWaWRlb0VsZW1lbnQobnVsbHB0cik7CisgICAgbW9k
ZWwtPnJlbW92ZUNsaWVudCgqaW50ZXJmYWNlKTsKKyAgICBpbnRlcmZhY2UtPmludmFsaWRhdGUo
KTsKICAgICBtX3ZpZGVvRWxlbWVudHMucmVtb3ZlKHZpZGVvRWxlbWVudC5nZXQoKSk7CiAgICAg
bV9jb250ZXh0TWFwLnJlbW92ZShjb250ZXh0SWQpOwogfQpAQCAtMjI4LDcgKzIzMyw3IEBAIGJv
b2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3VwcG9ydHNWaWRlb0Z1bGxzY3JlZW4oV2ViQ29y
ZTo6SFRNTE1lZGlhRWxlbWVudEVuCiAKIGJvb2wgVmlkZW9GdWxsc2NyZWVuTWFuYWdlcjo6c3Vw
cG9ydHNWaWRlb0Z1bGxzY3JlZW5TdGFuZGJ5KCkgY29uc3QKIHsKLSNpZiBQTEFURk9STShJT1Mp
CisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgcmV0dXJu
IHRydWU7CiAjZWxzZQogICAgIHJldHVybiBmYWxzZTsKQEAgLTQwNiw3ICs0MTEsNyBAQCB2b2lk
IFZpZGVvRnVsbHNjcmVlbk1hbmFnZXI6OmRpZFNldHVwRnVsbHNjcmVlbih1aW50NjRfdCBjb250
ZXh0SWQpCiAgICAgUmVmUHRyPFZpZGVvRnVsbHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVy
ZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwgaW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50
ZXJmYWNlKGNvbnRleHRJZCk7CiAKLSNpZiBQTEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9T
KSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hf
Z2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3RlZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCB0aGlz
LCBjb250ZXh0SWRdIHsKICAgICAgICAgaWYgKHByb3RlY3RlZFRoaXMtPm1fcGFnZSkKICAgICAg
ICAgICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6VmlkZW9GdWxsc2NyZWVuTWFuYWdlclByb3h5
OjpFbnRlckZ1bGxzY3JlZW4oY29udGV4dElkKSwgcHJvdGVjdGVkVGhpcy0+bV9wYWdlLT5wYWdl
SUQoKSk7CkBAIC00NzksNyArNDg0LDcgQEAgdm9pZCBWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyOjpk
aWRFeGl0RnVsbHNjcmVlbih1aW50NjRfdCBjb250ZXh0SWQpCiAgICAgUmVmUHRyPFZpZGVvRnVs
bHNjcmVlbkludGVyZmFjZUNvbnRleHQ+IGludGVyZmFjZTsKICAgICBzdGQ6OnRpZShtb2RlbCwg
aW50ZXJmYWNlKSA9IGVuc3VyZU1vZGVsQW5kSW50ZXJmYWNlKGNvbnRleHRJZCk7CiAKLSNpZiBQ
TEFURk9STShJT1MpCisjaWYgUExBVEZPUk0oSU9TKSAmJiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkp
CiAgICAgZGlzcGF0Y2hfYXN5bmMoZGlzcGF0Y2hfZ2V0X21haW5fcXVldWUoKSwgW3Byb3RlY3Rl
ZFRoaXMgPSBtYWtlUmVmUHRyKHRoaXMpLCBjb250ZXh0SWQsIGludGVyZmFjZV0gewogICAgICAg
ICBpZiAocHJvdGVjdGVkVGhpcy0+bV9wYWdlKQogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+
bV9wYWdlLT5zZW5kKE1lc3NhZ2VzOjpWaWRlb0Z1bGxzY3JlZW5NYW5hZ2VyUHJveHk6OkNsZWFu
dXBGdWxsc2NyZWVuKGNvbnRleHRJZCksIHByb3RlY3RlZFRoaXMtPm1fcGFnZS0+cGFnZUlEKCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IDZiNGE4
ZmQ4MDAwYTcwNWUyNjIwOTIwZGUzNzhlZDMzZThkYWRhYzEuLjE0ZmIwZDk2OTEzMDhlNjUyNjNm
MGU2Y2JiZmQxMmQxMmZmYzhjMmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3
L1dlYlZpZXcubW0KQEAgLTk0MTksNiArOTQxOSw4IEBAIGJvb2wgTGF5ZXJGbHVzaENvbnRyb2xs
ZXI6OmZsdXNoTGF5ZXJzKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgX3ByaXZhdGUtPnBsYXli
YWNrU2Vzc2lvbk1vZGVsLT5zZXRNZWRpYUVsZW1lbnQobnVsbHB0cik7CisgICAgX3ByaXZhdGUt
PnBsYXliYWNrU2Vzc2lvbkludGVyZmFjZS0+aW52YWxpZGF0ZSgpOworCiAgICAgX3ByaXZhdGUt
PnBsYXliYWNrU2Vzc2lvbk1vZGVsID0gbnVsbHB0cjsKICAgICBfcHJpdmF0ZS0+cGxheWJhY2tT
ZXNzaW9uSW50ZXJmYWNlID0gbnVsbHB0cjsKICAgICBbc2VsZiB1cGRhdGVUb3VjaEJhcl07CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggZDQxODhkYzhkNTI4NzdjYTI0Yzg5YzVhNzVlZDhmZTFiNTM0Y2Y3Zi4uMDRlYThlNTJl
MjIzMDQ1NDc3NDYwMjIzN2IyNjE5N2MxYmI1OTdkMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIxIEBACisy
MDE4LTEwLTAyICBDb21taXQgUXVldWUgIDxjb21taXQtcXVldWVAd2Via2l0Lm9yZz4KKworICAg
ICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMjM2NjI0IGFuZCByMjM2NjcxLgorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkwMjA3CisKKyAgICAg
ICAgVGhlIGNoYW5nZSBpbiByMjM2NjI0IGludHJvZHVjZWQgY3Jhc2hlcyBvbiB0aGUgYm90cwor
ICAgICAgICAoUmVxdWVzdGVkIGJ5IHJ5YW5oYWRkYWQgb24gI3dlYmtpdCkuCisKKyAgICAgICAg
UmV2ZXJ0ZWQgY2hhbmdlc2V0czoKKworICAgICAgICAiUmVmYWN0b3Jpbmc6IGVsaW1pbmF0ZSBy
YXcgcG9pbnRlciB1c2FnZSBpbiBGdWxsc2NyZWVuIGNvZGUiCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xODg3NDcKKyAgICAgICAgaHR0cHM6Ly90cmFj
LndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzNjYyNAorCisgICAgICAgICJVbmlmeSBpbXBsZW1lbnRh
dGlvbiBpbiBWaWRlb0Z1bGxzY3JlZW5JbnRlcmZhY2VBVktpdCIKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MDA5MQorICAgICAgICBodHRwczovL3Ry
YWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjM2NjcxCisKIDIwMTgtMTAtMDIgIEZyZWRlcmljIFdh
bmcgIDxmd2FuZ0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtXUEVdIEVuYWJsZSBtb3JlIENhY2hl
IFN0b3JhZ2UgYW5kIFNlcnZpY2UgV29ya2VycyB0ZXN0cwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvbWVkaWEvY29udHJvbHMvaXBhZC9jbG9zZS1wYWdlLXdpdGgtcGljdHVyZS1pbi1waWN0dXJl
LXZpZGVvLWFzc2VydGlvbi1mYWlsdXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9jb250cm9s
cy9pcGFkL2Nsb3NlLXBhZ2Utd2l0aC1waWN0dXJlLWluLXBpY3R1cmUtdmlkZW8tYXNzZXJ0aW9u
LWZhaWx1cmUuaHRtbAppbmRleCA3ZTA4YWRkNjA0NDZmZDM0NmY2ZWYyNTcxMDljNDFhOGQ3NmFl
ODM2Li43MTk0MGM5Mzc2NDg3MTJjZjU5NTA3ODlkODEyN2YyYTExNDg3M2FjIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9tZWRpYS9jb250cm9scy9pcGFkL2Nsb3NlLXBhZ2Utd2l0aC1waWN0dXJl
LWluLXBpY3R1cmUtdmlkZW8tYXNzZXJ0aW9uLWZhaWx1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9tZWRpYS9jb250cm9scy9pcGFkL2Nsb3NlLXBhZ2Utd2l0aC1waWN0dXJlLWluLXBpY3R1cmUt
dmlkZW8tYXNzZXJ0aW9uLWZhaWx1cmUuaHRtbApAQCAtMTMsMTEgKzEzLDggQEAgaWYgKHdpbmRv
dy50ZXN0UnVubmVyKSB7CiB9CiAKIC8vIENhbGxlZCBieSByZXNvdXJjZXMvcGljdHVyZS1pbi1w
aWN0dXJlLmh0bWwKLWZ1bmN0aW9uIG5vdGlmeURpZENoYW5nZVByZXNlbnRhdGlvbk1vZGUobW9k
ZSkKK2Z1bmN0aW9uIG5vdGlmeURpZENoYW5nZVByZXNlbnRhdGlvbk1vZGUoKQogewotICAgIGlm
IChtb2RlICE9PSAncGljdHVyZS1pbi1waWN0dXJlJykKLSAgICAgICAgcmV0dXJuOwotCiAgICAg
Ly8gRm9yIHNvbWUgcmVhc29uIHdhaXRpbmcgfjIwMG1zIHRvIGFsbG93IHRoZSB2aWRlbyB0byB0
cmFuc2l0aW9uIGZyb20gdGhlIHBhZ2UgdG8gaXRzCiAgICAgLy8gcGljdHVyZS1pbi1waWN0dXJl
IHdpbmRvdyBzZWVtcyB0byBtYWtlIHRyaWdnZXJpbmcgdGhlIGFzc2VydGlvbiBtb3JlIHJlbGlh
YmxlICh3aHk/KS4KICAgICBmdW5jdGlvbiBjbG9zZVdpbmRvd0FuZERvbmUoKQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvbWVkaWEvY29udHJvbHMvaXBhZC9yZXNvdXJjZXMvcGljdHVyZS1pbi1w
aWN0dXJlLmh0bWwgYi9MYXlvdXRUZXN0cy9tZWRpYS9jb250cm9scy9pcGFkL3Jlc291cmNlcy9w
aWN0dXJlLWluLXBpY3R1cmUuaHRtbAppbmRleCA3YTM3NmQwYzVmMzU4MzY0ZDhkNWFjMTUwYmU1
NzRjNzNjN2E4ODJkLi5iMWQwMmI5YjA5YWRiYTRlM2NiMjBkZDJlZjA1MjRjMzVkNWIwMTNlIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9tZWRpYS9jb250cm9scy9pcGFkL3Jlc291cmNlcy9waWN0
dXJlLWluLXBpY3R1cmUuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9tZWRpYS9jb250cm9scy9pcGFk
L3Jlc291cmNlcy9waWN0dXJlLWluLXBpY3R1cmUuaHRtbApAQCAtOSw5ICs5LDkgQEAKIGlmICh3
aW5kb3cuaW50ZXJuYWxzKQogICAgIGludGVybmFscy5zZXR0aW5ncy5zZXRBbGxvd3NQaWN0dXJl
SW5QaWN0dXJlTWVkaWFQbGF5YmFjayh0cnVlKTsKIAotZnVuY3Rpb24gZGlzcGF0Y2hEaWRDaGFu
Z2VQcmVzZW50YXRpb25Nb2RlKGV2ZW50KQorZnVuY3Rpb24gZGlzcGF0Y2hEaWRDaGFuZ2VQcmVz
ZW50YXRpb25Nb2RlKCkKIHsKLSAgICB3aW5kb3cub3BlbmVyLm5vdGlmeURpZENoYW5nZVByZXNl
bnRhdGlvbk1vZGUoZXZlbnQudGFyZ2V0LndlYmtpdFByZXNlbnRhdGlvbk1vZGUpOworICAgIHdp
bmRvdy5vcGVuZXIubm90aWZ5RGlkQ2hhbmdlUHJlc2VudGF0aW9uTW9kZSgpOwogfQogCiB2YXIg
dmlkZW8gPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCJ2aWRlbyIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>